diff options
Diffstat (limited to 'src')
24 files changed, 3095 insertions, 3260 deletions
diff --git a/src/libjin-lua/scripts/ai/ai.lua b/src/libjin-lua/scripts/ai/ai.lua index 7afe7d8..3ce7a12 100644 --- a/src/libjin-lua/scripts/ai/ai.lua +++ b/src/libjin-lua/scripts/ai/ai.lua @@ -3,6 +3,6 @@ jin.ai = jin.ai or {} local ja = jin.ai --ja.StateMachineType = { --- STEPWISE = 1, --- ITERATIVE = 2, +-- STEPWISE = 1, +-- ITERATIVE = 2, --} diff --git a/src/libjin-lua/scripts/ai/ai.lua.h b/src/libjin-lua/scripts/ai/ai.lua.h index 90aa889..6ef9b73 100644 --- a/src/libjin-lua/scripts/ai/ai.lua.h +++ b/src/libjin-lua/scripts/ai/ai.lua.h @@ -3,9 +3,8 @@ static char ai_lua[] = { 106,105,110,46,97,105,32,61,32,106,105,110,46,97,105,32,111,114,32,123, 125,32,13,10,13,10,108,111,99,97,108,32,106,97,32,61,32,106,105,110, 46,97,105,13,10,13,10,45,45,106,97,46,83,116,97,116,101,77,97,99, -104,105,110,101,84,121,112,101,32,61,32,123,13,10,45,45,32,32,32,32, -83,84,69,80,87,73,83,69,32,61,32,49,44,32,13,10,45,45,32,32, -32,32,73,84,69,82,65,84,73,86,69,32,61,32,50,44,13,10,45,45, -125,13,10,0 +104,105,110,101,84,121,112,101,32,61,32,123,13,10,45,45,32,32,83,84, +69,80,87,73,83,69,32,61,32,49,44,32,13,10,45,45,32,32,73,84, +69,82,65,84,73,86,69,32,61,32,50,44,13,10,45,45,125,13,10,0 }; diff --git a/src/libjin-lua/scripts/ai/state_machine.lua b/src/libjin-lua/scripts/ai/state_machine.lua index 423576a..82d7297 100644 --- a/src/libjin-lua/scripts/ai/state_machine.lua +++ b/src/libjin-lua/scripts/ai/state_machine.lua @@ -11,149 +11,149 @@ local NONE = "none" local ASYNC = "async" local function call_handler(handler, params) - if handler then - return handler(unpack(params)) - end + if handler then + return handler(unpack(params)) + end end local function create_transition(name) - local can, to, from, params - - local function transition(self, ...) - if self.asyncState == NONE then - can, to = self:can(name) - from = self.current - params = { self, name, from, to, ...} - - if not can then return false end - self.currentTransitioningEvent = name - - local beforeReturn = call_handler(self["onbefore" .. name], params) - local leaveReturn = call_handler(self["onleave" .. from], params) - - if beforeReturn == false or leaveReturn == false then - return false - end - - self.asyncState = name .. "WaitingOnLeave" - - if leaveReturn ~= ASYNC then - transition(self, ...) - end - - return true - elseif self.asyncState == name .. "WaitingOnLeave" then - self.current = to - - local enterReturn = call_handler(self["onenter" .. to] or self["on" .. to], params) - - self.asyncState = name .. "WaitingOnEnter" - - if enterReturn ~= ASYNC then - transition(self, ...) - end - - return true - elseif self.asyncState == name .. "WaitingOnEnter" then - call_handler(self["onafter" .. name] or self["on" .. name], params) - call_handler(self["onstatechange"], params) - self.asyncState = NONE - self.currentTransitioningEvent = nil - return true - else - if string.find(self.asyncState, "WaitingOnLeave") or string.find(self.asyncState, "WaitingOnEnter") then - self.asyncState = NONE - transition(self, ...) - return true - end - end - - self.currentTransitioningEvent = nil + local can, to, from, params + + local function transition(self, ...) + if self.asyncState == NONE then + can, to = self:can(name) + from = self.current + params = { self, name, from, to, ...} + + if not can then return false end + self.currentTransitioningEvent = name + + local beforeReturn = call_handler(self["onbefore" .. name], params) + local leaveReturn = call_handler(self["onleave" .. from], params) + + if beforeReturn == false or leaveReturn == false then return false + end + + self.asyncState = name .. "WaitingOnLeave" + + if leaveReturn ~= ASYNC then + transition(self, ...) + end + + return true + elseif self.asyncState == name .. "WaitingOnLeave" then + self.current = to + + local enterReturn = call_handler(self["onenter" .. to] or self["on" .. to], params) + + self.asyncState = name .. "WaitingOnEnter" + + if enterReturn ~= ASYNC then + transition(self, ...) + end + + return true + elseif self.asyncState == name .. "WaitingOnEnter" then + call_handler(self["onafter" .. name] or self["on" .. name], params) + call_handler(self["onstatechange"], params) + self.asyncState = NONE + self.currentTransitioningEvent = nil + return true + else + if string.find(self.asyncState, "WaitingOnLeave") or string.find(self.asyncState, "WaitingOnEnter") then + self.asyncState = NONE + transition(self, ...) + return true + end end - return transition + self.currentTransitioningEvent = nil + return false + end + + return transition end local function add_to_map(map, event) - if type(event.from) == 'string' then - map[event.from] = event.to - else - for _, from in ipairs(event.from) do - map[from] = event.to - end + if type(event.from) == 'string' then + map[event.from] = event.to + else + for _, from in ipairs(event.from) do + map[from] = event.to end + end end function machine.create(options) - assert(options.events) - - local fsm = {} - setmetatable(fsm, machine) - - fsm.options = options - fsm.current = options.initial or 'none' - fsm.asyncState = NONE - fsm.events = {} - - for _, event in ipairs(options.events or {}) do - local name = event.name - fsm[name] = fsm[name] or create_transition(name) - fsm.events[name] = fsm.events[name] or { map = {} } - add_to_map(fsm.events[name].map, event) - end - - for name, callback in pairs(options.callbacks or {}) do - fsm[name] = callback - end - - return fsm + assert(options.events) + + local fsm = {} + setmetatable(fsm, machine) + + fsm.options = options + fsm.current = options.initial or 'none' + fsm.asyncState = NONE + fsm.events = {} + + for _, event in ipairs(options.events or {}) do + local name = event.name + fsm[name] = fsm[name] or create_transition(name) + fsm.events[name] = fsm.events[name] or { map = {} } + add_to_map(fsm.events[name].map, event) + end + + for name, callback in pairs(options.callbacks or {}) do + fsm[name] = callback + end + + return fsm end function machine:is(state) - return self.current == state + return self.current == state end function machine:can(e) - local event = self.events[e] - local to = event and event.map[self.current] or event.map['*'] - return to ~= nil, to + local event = self.events[e] + local to = event and event.map[self.current] or event.map['*'] + return to ~= nil, to end function machine:cannot(e) - return not self:can(e) + return not self:can(e) end function machine:todot(filename) - local dotfile = io.open(filename,'w') - dotfile:write('digraph {\n') - local transition = function(event,from,to) - dotfile:write(string.format('%s -> %s [label=%s];\n',from,to,event)) - end - for _, event in pairs(self.options.events) do - if type(event.from) == 'table' then - for _, from in ipairs(event.from) do - transition(event.name,from,event.to) - end - else - transition(event.name,event.from,event.to) - end + local dotfile = io.open(filename,'w') + dotfile:write('digraph {\n') + local transition = function(event,from,to) + dotfile:write(string.format('%s -> %s [label=%s];\n',from,to,event)) + end + for _, event in pairs(self.options.events) do + if type(event.from) == 'table' then + for _, from in ipairs(event.from) do + transition(event.name,from,event.to) + end + else + transition(event.name,event.from,event.to) end - dotfile:write('}\n') - dotfile:close() + end + dotfile:write('}\n') + dotfile:close() end function machine:transition(event) - if self.currentTransitioningEvent == event then - return self[self.currentTransitioningEvent](self) - end + if self.currentTransitioningEvent == event then + return self[self.currentTransitioningEvent](self) + end end function machine:cancelTransition(event) - if self.currentTransitioningEvent == event then - self.asyncState = NONE - self.currentTransitioningEvent = nil - end + if self.currentTransitioningEvent == event then + self.asyncState = NONE + self.currentTransitioningEvent = nil + end end machine.NONE = NONE diff --git a/src/libjin-lua/scripts/ai/state_machine.lua.h b/src/libjin-lua/scripts/ai/state_machine.lua.h index 93a1a9a..4d70378 100644 --- a/src/libjin-lua/scripts/ai/state_machine.lua.h +++ b/src/libjin-lua/scripts/ai/state_machine.lua.h @@ -22,229 +22,209 @@ static char state_machine_lua[] = { 13,10,108,111,99,97,108,32,65,83,89,78,67,32,61,32,34,97,115,121, 110,99,34,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111, 110,32,99,97,108,108,95,104,97,110,100,108,101,114,40,104,97,110,100,108, -101,114,44,32,112,97,114,97,109,115,41,13,10,32,32,32,32,105,102,32, -104,97,110,100,108,101,114,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,114,101,116,117,114,110,32,104,97,110,100,108,101,114,40,117,110,112, -97,99,107,40,112,97,114,97,109,115,41,41,13,10,32,32,32,32,101,110, -100,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110,99, -116,105,111,110,32,99,114,101,97,116,101,95,116,114,97,110,115,105,116,105, -111,110,40,110,97,109,101,41,13,10,32,32,32,32,108,111,99,97,108,32, -99,97,110,44,32,116,111,44,32,102,114,111,109,44,32,112,97,114,97,109, -115,13,10,13,10,32,32,32,32,108,111,99,97,108,32,102,117,110,99,116, -105,111,110,32,116,114,97,110,115,105,116,105,111,110,40,115,101,108,102,44, -32,46,46,46,41,13,10,32,32,32,32,32,32,32,32,105,102,32,115,101, -108,102,46,97,115,121,110,99,83,116,97,116,101,32,61,61,32,78,79,78, -69,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -99,97,110,44,32,116,111,32,61,32,115,101,108,102,58,99,97,110,40,110, -97,109,101,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,114, -111,109,32,61,32,115,101,108,102,46,99,117,114,114,101,110,116,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,112,97,114,97,109,115,32,61,32, -123,32,115,101,108,102,44,32,110,97,109,101,44,32,102,114,111,109,44,32, -116,111,44,32,46,46,46,125,13,10,13,10,32,32,32,32,32,32,32,32, +101,114,44,32,112,97,114,97,109,115,41,13,10,32,32,105,102,32,104,97, +110,100,108,101,114,32,116,104,101,110,13,10,32,32,32,32,114,101,116,117, +114,110,32,104,97,110,100,108,101,114,40,117,110,112,97,99,107,40,112,97, +114,97,109,115,41,41,13,10,32,32,101,110,100,13,10,101,110,100,13,10, +13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,99,114,101, +97,116,101,95,116,114,97,110,115,105,116,105,111,110,40,110,97,109,101,41, +13,10,32,32,108,111,99,97,108,32,99,97,110,44,32,116,111,44,32,102, +114,111,109,44,32,112,97,114,97,109,115,13,10,13,10,32,32,108,111,99, +97,108,32,102,117,110,99,116,105,111,110,32,116,114,97,110,115,105,116,105, +111,110,40,115,101,108,102,44,32,46,46,46,41,13,10,32,32,32,32,105, +102,32,115,101,108,102,46,97,115,121,110,99,83,116,97,116,101,32,61,61, +32,78,79,78,69,32,116,104,101,110,13,10,32,32,32,32,32,32,99,97, +110,44,32,116,111,32,61,32,115,101,108,102,58,99,97,110,40,110,97,109, +101,41,13,10,32,32,32,32,32,32,102,114,111,109,32,61,32,115,101,108, +102,46,99,117,114,114,101,110,116,13,10,32,32,32,32,32,32,112,97,114, +97,109,115,32,61,32,123,32,115,101,108,102,44,32,110,97,109,101,44,32, +102,114,111,109,44,32,116,111,44,32,46,46,46,125,13,10,13,10,32,32, 32,32,32,32,105,102,32,110,111,116,32,99,97,110,32,116,104,101,110,32, 114,101,116,117,114,110,32,102,97,108,115,101,32,101,110,100,13,10,32,32, -32,32,32,32,32,32,32,32,32,32,115,101,108,102,46,99,117,114,114,101, -110,116,84,114,97,110,115,105,116,105,111,110,105,110,103,69,118,101,110,116, -32,61,32,110,97,109,101,13,10,13,10,32,32,32,32,32,32,32,32,32, -32,32,32,108,111,99,97,108,32,98,101,102,111,114,101,82,101,116,117,114, -110,32,61,32,99,97,108,108,95,104,97,110,100,108,101,114,40,115,101,108, -102,91,34,111,110,98,101,102,111,114,101,34,32,46,46,32,110,97,109,101, -93,44,32,112,97,114,97,109,115,41,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,108,111,99,97,108,32,108,101,97,118,101,82,101,116,117,114, -110,32,61,32,99,97,108,108,95,104,97,110,100,108,101,114,40,115,101,108, -102,91,34,111,110,108,101,97,118,101,34,32,46,46,32,102,114,111,109,93, -44,32,112,97,114,97,109,115,41,13,10,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,105,102,32,98,101,102,111,114,101,82,101,116,117,114,110, -32,61,61,32,102,97,108,115,101,32,111,114,32,108,101,97,118,101,82,101, -116,117,114,110,32,61,61,32,102,97,108,115,101,32,116,104,101,110,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117, -114,110,32,102,97,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32, -32,32,101,110,100,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,115,101,108,102,46,97,115,121,110,99,83,116,97,116,101,32,61,32,110, -97,109,101,32,46,46,32,34,87,97,105,116,105,110,103,79,110,76,101,97, -118,101,34,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105, -102,32,108,101,97,118,101,82,101,116,117,114,110,32,126,61,32,65,83,89, -78,67,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,116,114,97,110,115,105,116,105,111,110,40,115,101,108,102, -44,32,46,46,46,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -101,110,100,13,10,32,32,32,32,32,32,32,32,32,32,32,32,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,114, -117,101,13,10,32,32,32,32,32,32,32,32,101,108,115,101,105,102,32,115, +32,32,32,32,115,101,108,102,46,99,117,114,114,101,110,116,84,114,97,110, +115,105,116,105,111,110,105,110,103,69,118,101,110,116,32,61,32,110,97,109, +101,13,10,13,10,32,32,32,32,32,32,108,111,99,97,108,32,98,101,102, +111,114,101,82,101,116,117,114,110,32,61,32,99,97,108,108,95,104,97,110, +100,108,101,114,40,115,101,108,102,91,34,111,110,98,101,102,111,114,101,34, +32,46,46,32,110,97,109,101,93,44,32,112,97,114,97,109,115,41,13,10, +32,32,32,32,32,32,108,111,99,97,108,32,108,101,97,118,101,82,101,116, +117,114,110,32,61,32,99,97,108,108,95,104,97,110,100,108,101,114,40,115, +101,108,102,91,34,111,110,108,101,97,118,101,34,32,46,46,32,102,114,111, +109,93,44,32,112,97,114,97,109,115,41,13,10,13,10,32,32,32,32,32, +32,105,102,32,98,101,102,111,114,101,82,101,116,117,114,110,32,61,61,32, +102,97,108,115,101,32,111,114,32,108,101,97,118,101,82,101,116,117,114,110, +32,61,61,32,102,97,108,115,101,32,116,104,101,110,13,10,32,32,32,32, +32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,13,10,32,32, +32,32,32,32,101,110,100,13,10,13,10,32,32,32,32,32,32,115,101,108, +102,46,97,115,121,110,99,83,116,97,116,101,32,61,32,110,97,109,101,32, +46,46,32,34,87,97,105,116,105,110,103,79,110,76,101,97,118,101,34,13, +10,13,10,32,32,32,32,32,32,105,102,32,108,101,97,118,101,82,101,116, +117,114,110,32,126,61,32,65,83,89,78,67,32,116,104,101,110,13,10,32, +32,32,32,32,32,32,32,116,114,97,110,115,105,116,105,111,110,40,115,101, +108,102,44,32,46,46,46,41,13,10,32,32,32,32,32,32,101,110,100,13, +10,32,32,32,32,32,32,13,10,32,32,32,32,32,32,114,101,116,117,114, +110,32,116,114,117,101,13,10,32,32,32,32,101,108,115,101,105,102,32,115, 101,108,102,46,97,115,121,110,99,83,116,97,116,101,32,61,61,32,110,97, 109,101,32,46,46,32,34,87,97,105,116,105,110,103,79,110,76,101,97,118, -101,34,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,115,101,108,102,46,99,117,114,114,101,110,116,32,61,32,116,111,13,10, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,108,111,99,97,108,32, -101,110,116,101,114,82,101,116,117,114,110,32,61,32,99,97,108,108,95,104, -97,110,100,108,101,114,40,115,101,108,102,91,34,111,110,101,110,116,101,114, -34,32,46,46,32,116,111,93,32,111,114,32,115,101,108,102,91,34,111,110, -34,32,46,46,32,116,111,93,44,32,112,97,114,97,109,115,41,13,10,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,115,101,108,102,46,97,115, -121,110,99,83,116,97,116,101,32,61,32,110,97,109,101,32,46,46,32,34, -87,97,105,116,105,110,103,79,110,69,110,116,101,114,34,13,10,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,105,102,32,101,110,116,101,114,82, -101,116,117,114,110,32,126,61,32,65,83,89,78,67,32,116,104,101,110,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,97, -110,115,105,116,105,111,110,40,115,101,108,102,44,32,46,46,46,41,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,13,10,32,32,32,32,32,32,32,32,32, -32,32,32,114,101,116,117,114,110,32,116,114,117,101,13,10,32,32,32,32, -32,32,32,32,101,108,115,101,105,102,32,115,101,108,102,46,97,115,121,110, -99,83,116,97,116,101,32,61,61,32,110,97,109,101,32,46,46,32,34,87, -97,105,116,105,110,103,79,110,69,110,116,101,114,34,32,116,104,101,110,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,108,108,95,104,97, +101,34,32,116,104,101,110,13,10,32,32,32,32,32,32,115,101,108,102,46, +99,117,114,114,101,110,116,32,61,32,116,111,13,10,13,10,32,32,32,32, +32,32,108,111,99,97,108,32,101,110,116,101,114,82,101,116,117,114,110,32, +61,32,99,97,108,108,95,104,97,110,100,108,101,114,40,115,101,108,102,91, +34,111,110,101,110,116,101,114,34,32,46,46,32,116,111,93,32,111,114,32, +115,101,108,102,91,34,111,110,34,32,46,46,32,116,111,93,44,32,112,97, +114,97,109,115,41,13,10,13,10,32,32,32,32,32,32,115,101,108,102,46, +97,115,121,110,99,83,116,97,116,101,32,61,32,110,97,109,101,32,46,46, +32,34,87,97,105,116,105,110,103,79,110,69,110,116,101,114,34,13,10,13, +10,32,32,32,32,32,32,105,102,32,101,110,116,101,114,82,101,116,117,114, +110,32,126,61,32,65,83,89,78,67,32,116,104,101,110,13,10,32,32,32, +32,32,32,32,32,116,114,97,110,115,105,116,105,111,110,40,115,101,108,102, +44,32,46,46,46,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32, +32,32,32,32,32,13,10,32,32,32,32,32,32,114,101,116,117,114,110,32, +116,114,117,101,13,10,32,32,32,32,101,108,115,101,105,102,32,115,101,108, +102,46,97,115,121,110,99,83,116,97,116,101,32,61,61,32,110,97,109,101, +32,46,46,32,34,87,97,105,116,105,110,103,79,110,69,110,116,101,114,34, +32,116,104,101,110,13,10,32,32,32,32,32,32,99,97,108,108,95,104,97, 110,100,108,101,114,40,115,101,108,102,91,34,111,110,97,102,116,101,114,34, 32,46,46,32,110,97,109,101,93,32,111,114,32,115,101,108,102,91,34,111, 110,34,32,46,46,32,110,97,109,101,93,44,32,112,97,114,97,109,115,41, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,108,108,95,104, -97,110,100,108,101,114,40,115,101,108,102,91,34,111,110,115,116,97,116,101, -99,104,97,110,103,101,34,93,44,32,112,97,114,97,109,115,41,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,115,101,108,102,46,97,115,121,110, -99,83,116,97,116,101,32,61,32,78,79,78,69,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,115,101,108,102,46,99,117,114,114,101,110,116,84, -114,97,110,115,105,116,105,111,110,105,110,103,69,118,101,110,116,32,61,32, -110,105,108,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116, -117,114,110,32,116,114,117,101,13,10,32,32,32,32,32,32,32,32,101,108, -115,101,13,10,32,32,32,32,32,32,32,32,9,105,102,32,115,116,114,105, -110,103,46,102,105,110,100,40,115,101,108,102,46,97,115,121,110,99,83,116, -97,116,101,44,32,34,87,97,105,116,105,110,103,79,110,76,101,97,118,101, -34,41,32,111,114,32,115,116,114,105,110,103,46,102,105,110,100,40,115,101, -108,102,46,97,115,121,110,99,83,116,97,116,101,44,32,34,87,97,105,116, -105,110,103,79,110,69,110,116,101,114,34,41,32,116,104,101,110,13,10,32, -32,32,32,32,32,32,32,9,9,115,101,108,102,46,97,115,121,110,99,83, -116,97,116,101,32,61,32,78,79,78,69,13,10,32,32,32,32,32,32,32, +13,10,32,32,32,32,32,32,99,97,108,108,95,104,97,110,100,108,101,114, +40,115,101,108,102,91,34,111,110,115,116,97,116,101,99,104,97,110,103,101, +34,93,44,32,112,97,114,97,109,115,41,13,10,32,32,32,32,32,32,115, +101,108,102,46,97,115,121,110,99,83,116,97,116,101,32,61,32,78,79,78, +69,13,10,32,32,32,32,32,32,115,101,108,102,46,99,117,114,114,101,110, +116,84,114,97,110,115,105,116,105,111,110,105,110,103,69,118,101,110,116,32, +61,32,110,105,108,13,10,32,32,32,32,32,32,114,101,116,117,114,110,32, +116,114,117,101,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32, +9,105,102,32,115,116,114,105,110,103,46,102,105,110,100,40,115,101,108,102, +46,97,115,121,110,99,83,116,97,116,101,44,32,34,87,97,105,116,105,110, +103,79,110,76,101,97,118,101,34,41,32,111,114,32,115,116,114,105,110,103, +46,102,105,110,100,40,115,101,108,102,46,97,115,121,110,99,83,116,97,116, +101,44,32,34,87,97,105,116,105,110,103,79,110,69,110,116,101,114,34,41, +32,116,104,101,110,13,10,32,32,32,32,9,9,115,101,108,102,46,97,115, +121,110,99,83,116,97,116,101,32,61,32,78,79,78,69,13,10,32,32,32, 32,9,9,116,114,97,110,115,105,116,105,111,110,40,115,101,108,102,44,32, -46,46,46,41,13,10,32,32,32,32,32,32,32,32,9,9,114,101,116,117, -114,110,32,116,114,117,101,13,10,32,32,32,32,32,32,32,32,9,101,110, -100,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,13,10,32,32, -32,32,32,32,32,32,115,101,108,102,46,99,117,114,114,101,110,116,84,114, -97,110,115,105,116,105,111,110,105,110,103,69,118,101,110,116,32,61,32,110, -105,108,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102, -97,108,115,101,13,10,32,32,32,32,101,110,100,13,10,13,10,32,32,32, -32,114,101,116,117,114,110,32,116,114,97,110,115,105,116,105,111,110,13,10, -101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111, -110,32,97,100,100,95,116,111,95,109,97,112,40,109,97,112,44,32,101,118, -101,110,116,41,13,10,32,32,32,32,105,102,32,116,121,112,101,40,101,118, -101,110,116,46,102,114,111,109,41,32,61,61,32,39,115,116,114,105,110,103, -39,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,109,97,112,91, -101,118,101,110,116,46,102,114,111,109,93,32,61,32,101,118,101,110,116,46, -116,111,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32, -32,32,102,111,114,32,95,44,32,102,114,111,109,32,105,110,32,105,112,97, -105,114,115,40,101,118,101,110,116,46,102,114,111,109,41,32,100,111,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,109,97,112,91,102,114,111,109, -93,32,61,32,101,118,101,110,116,46,116,111,13,10,32,32,32,32,32,32, -32,32,101,110,100,13,10,32,32,32,32,101,110,100,13,10,101,110,100,13, -10,13,10,102,117,110,99,116,105,111,110,32,109,97,99,104,105,110,101,46, -99,114,101,97,116,101,40,111,112,116,105,111,110,115,41,13,10,32,32,32, -32,97,115,115,101,114,116,40,111,112,116,105,111,110,115,46,101,118,101,110, -116,115,41,13,10,13,10,32,32,32,32,108,111,99,97,108,32,102,115,109, -32,61,32,123,125,13,10,32,32,32,32,115,101,116,109,101,116,97,116,97, -98,108,101,40,102,115,109,44,32,109,97,99,104,105,110,101,41,13,10,13, -10,32,32,32,32,102,115,109,46,111,112,116,105,111,110,115,32,61,32,111, -112,116,105,111,110,115,13,10,32,32,32,32,102,115,109,46,99,117,114,114, -101,110,116,32,61,32,111,112,116,105,111,110,115,46,105,110,105,116,105,97, -108,32,111,114,32,39,110,111,110,101,39,13,10,32,32,32,32,102,115,109, +46,46,46,41,13,10,32,32,32,32,9,9,114,101,116,117,114,110,32,116, +114,117,101,13,10,32,32,32,32,9,101,110,100,13,10,32,32,32,32,101, +110,100,13,10,13,10,32,32,32,32,115,101,108,102,46,99,117,114,114,101, +110,116,84,114,97,110,115,105,116,105,111,110,105,110,103,69,118,101,110,116, +32,61,32,110,105,108,13,10,32,32,32,32,114,101,116,117,114,110,32,102, +97,108,115,101,13,10,32,32,101,110,100,13,10,13,10,32,32,114,101,116, +117,114,110,32,116,114,97,110,115,105,116,105,111,110,13,10,101,110,100,13, +10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,97,100, +100,95,116,111,95,109,97,112,40,109,97,112,44,32,101,118,101,110,116,41, +13,10,32,32,105,102,32,116,121,112,101,40,101,118,101,110,116,46,102,114, +111,109,41,32,61,61,32,39,115,116,114,105,110,103,39,32,116,104,101,110, +13,10,32,32,32,32,109,97,112,91,101,118,101,110,116,46,102,114,111,109, +93,32,61,32,101,118,101,110,116,46,116,111,13,10,32,32,101,108,115,101, +13,10,32,32,32,32,102,111,114,32,95,44,32,102,114,111,109,32,105,110, +32,105,112,97,105,114,115,40,101,118,101,110,116,46,102,114,111,109,41,32, +100,111,13,10,32,32,32,32,32,32,109,97,112,91,102,114,111,109,93,32, +61,32,101,118,101,110,116,46,116,111,13,10,32,32,32,32,101,110,100,13, +10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,102,117,110,99,116, +105,111,110,32,109,97,99,104,105,110,101,46,99,114,101,97,116,101,40,111, +112,116,105,111,110,115,41,13,10,32,32,97,115,115,101,114,116,40,111,112, +116,105,111,110,115,46,101,118,101,110,116,115,41,13,10,13,10,32,32,108, +111,99,97,108,32,102,115,109,32,61,32,123,125,13,10,32,32,115,101,116, +109,101,116,97,116,97,98,108,101,40,102,115,109,44,32,109,97,99,104,105, +110,101,41,13,10,13,10,32,32,102,115,109,46,111,112,116,105,111,110,115, +32,61,32,111,112,116,105,111,110,115,13,10,32,32,102,115,109,46,99,117, +114,114,101,110,116,32,61,32,111,112,116,105,111,110,115,46,105,110,105,116, +105,97,108,32,111,114,32,39,110,111,110,101,39,13,10,32,32,102,115,109, 46,97,115,121,110,99,83,116,97,116,101,32,61,32,78,79,78,69,13,10, -32,32,32,32,102,115,109,46,101,118,101,110,116,115,32,61,32,123,125,13, -10,13,10,32,32,32,32,102,111,114,32,95,44,32,101,118,101,110,116,32, -105,110,32,105,112,97,105,114,115,40,111,112,116,105,111,110,115,46,101,118, -101,110,116,115,32,111,114,32,123,125,41,32,100,111,13,10,32,32,32,32, -32,32,32,32,108,111,99,97,108,32,110,97,109,101,32,61,32,101,118,101, -110,116,46,110,97,109,101,13,10,32,32,32,32,32,32,32,32,102,115,109, -91,110,97,109,101,93,32,61,32,102,115,109,91,110,97,109,101,93,32,111, -114,32,99,114,101,97,116,101,95,116,114,97,110,115,105,116,105,111,110,40, -110,97,109,101,41,13,10,32,32,32,32,32,32,32,32,102,115,109,46,101, -118,101,110,116,115,91,110,97,109,101,93,32,61,32,102,115,109,46,101,118, -101,110,116,115,91,110,97,109,101,93,32,111,114,32,123,32,109,97,112,32, -61,32,123,125,32,125,13,10,32,32,32,32,32,32,32,32,97,100,100,95, +32,32,102,115,109,46,101,118,101,110,116,115,32,61,32,123,125,13,10,13, +10,32,32,102,111,114,32,95,44,32,101,118,101,110,116,32,105,110,32,105, +112,97,105,114,115,40,111,112,116,105,111,110,115,46,101,118,101,110,116,115, +32,111,114,32,123,125,41,32,100,111,13,10,32,32,32,32,108,111,99,97, +108,32,110,97,109,101,32,61,32,101,118,101,110,116,46,110,97,109,101,13, +10,32,32,32,32,102,115,109,91,110,97,109,101,93,32,61,32,102,115,109, +91,110,97,109,101,93,32,111,114,32,99,114,101,97,116,101,95,116,114,97, +110,115,105,116,105,111,110,40,110,97,109,101,41,13,10,32,32,32,32,102, +115,109,46,101,118,101,110,116,115,91,110,97,109,101,93,32,61,32,102,115, +109,46,101,118,101,110,116,115,91,110,97,109,101,93,32,111,114,32,123,32, +109,97,112,32,61,32,123,125,32,125,13,10,32,32,32,32,97,100,100,95, 116,111,95,109,97,112,40,102,115,109,46,101,118,101,110,116,115,91,110,97, -109,101,93,46,109,97,112,44,32,101,118,101,110,116,41,13,10,32,32,32, -32,101,110,100,13,10,32,32,32,32,13,10,32,32,32,32,102,111,114,32, -110,97,109,101,44,32,99,97,108,108,98,97,99,107,32,105,110,32,112,97, -105,114,115,40,111,112,116,105,111,110,115,46,99,97,108,108,98,97,99,107, -115,32,111,114,32,123,125,41,32,100,111,13,10,32,32,32,32,32,32,32, -32,102,115,109,91,110,97,109,101,93,32,61,32,99,97,108,108,98,97,99, -107,13,10,32,32,32,32,101,110,100,13,10,13,10,32,32,32,32,114,101, -116,117,114,110,32,102,115,109,13,10,101,110,100,13,10,13,10,102,117,110, -99,116,105,111,110,32,109,97,99,104,105,110,101,58,105,115,40,115,116,97, -116,101,41,13,10,32,32,32,32,114,101,116,117,114,110,32,115,101,108,102, -46,99,117,114,114,101,110,116,32,61,61,32,115,116,97,116,101,13,10,101, -110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,109,97,99,104,105, -110,101,58,99,97,110,40,101,41,13,10,32,32,32,32,108,111,99,97,108, -32,101,118,101,110,116,32,61,32,115,101,108,102,46,101,118,101,110,116,115, -91,101,93,13,10,32,32,32,32,108,111,99,97,108,32,116,111,32,61,32, +109,101,93,46,109,97,112,44,32,101,118,101,110,116,41,13,10,32,32,101, +110,100,13,10,32,32,13,10,32,32,102,111,114,32,110,97,109,101,44,32, +99,97,108,108,98,97,99,107,32,105,110,32,112,97,105,114,115,40,111,112, +116,105,111,110,115,46,99,97,108,108,98,97,99,107,115,32,111,114,32,123, +125,41,32,100,111,13,10,32,32,32,32,102,115,109,91,110,97,109,101,93, +32,61,32,99,97,108,108,98,97,99,107,13,10,32,32,101,110,100,13,10, +13,10,32,32,114,101,116,117,114,110,32,102,115,109,13,10,101,110,100,13, +10,13,10,102,117,110,99,116,105,111,110,32,109,97,99,104,105,110,101,58, +105,115,40,115,116,97,116,101,41,13,10,32,32,114,101,116,117,114,110,32, +115,101,108,102,46,99,117,114,114,101,110,116,32,61,61,32,115,116,97,116, +101,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,109, +97,99,104,105,110,101,58,99,97,110,40,101,41,13,10,32,32,108,111,99, +97,108,32,101,118,101,110,116,32,61,32,115,101,108,102,46,101,118,101,110, +116,115,91,101,93,13,10,32,32,108,111,99,97,108,32,116,111,32,61,32, 101,118,101,110,116,32,97,110,100,32,101,118,101,110,116,46,109,97,112,91, 115,101,108,102,46,99,117,114,114,101,110,116,93,32,111,114,32,101,118,101, -110,116,46,109,97,112,91,39,42,39,93,13,10,32,32,32,32,114,101,116, -117,114,110,32,116,111,32,126,61,32,110,105,108,44,32,116,111,13,10,101, -110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,109,97,99,104,105, -110,101,58,99,97,110,110,111,116,40,101,41,13,10,32,32,32,32,114,101, -116,117,114,110,32,110,111,116,32,115,101,108,102,58,99,97,110,40,101,41, -13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,109,97, -99,104,105,110,101,58,116,111,100,111,116,40,102,105,108,101,110,97,109,101, -41,13,10,32,32,32,32,108,111,99,97,108,32,100,111,116,102,105,108,101, -32,61,32,105,111,46,111,112,101,110,40,102,105,108,101,110,97,109,101,44, -39,119,39,41,13,10,32,32,32,32,100,111,116,102,105,108,101,58,119,114, -105,116,101,40,39,100,105,103,114,97,112,104,32,123,92,110,39,41,13,10, -32,32,32,32,108,111,99,97,108,32,116,114,97,110,115,105,116,105,111,110, -32,61,32,102,117,110,99,116,105,111,110,40,101,118,101,110,116,44,102,114, -111,109,44,116,111,41,13,10,32,32,32,32,32,32,32,32,100,111,116,102, -105,108,101,58,119,114,105,116,101,40,115,116,114,105,110,103,46,102,111,114, -109,97,116,40,39,37,115,32,45,62,32,37,115,32,91,108,97,98,101,108, -61,37,115,93,59,92,110,39,44,102,114,111,109,44,116,111,44,101,118,101, -110,116,41,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,102, -111,114,32,95,44,32,101,118,101,110,116,32,105,110,32,112,97,105,114,115, -40,115,101,108,102,46,111,112,116,105,111,110,115,46,101,118,101,110,116,115, -41,32,100,111,13,10,32,32,32,32,32,32,32,32,105,102,32,116,121,112, -101,40,101,118,101,110,116,46,102,114,111,109,41,32,61,61,32,39,116,97, -98,108,101,39,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32, -32,32,32,102,111,114,32,95,44,32,102,114,111,109,32,105,110,32,105,112, -97,105,114,115,40,101,118,101,110,116,46,102,114,111,109,41,32,100,111,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,97, -110,115,105,116,105,111,110,40,101,118,101,110,116,46,110,97,109,101,44,102, -114,111,109,44,101,118,101,110,116,46,116,111,41,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32, -101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,114, -97,110,115,105,116,105,111,110,40,101,118,101,110,116,46,110,97,109,101,44, -101,118,101,110,116,46,102,114,111,109,44,101,118,101,110,116,46,116,111,41, -13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,101, -110,100,13,10,32,32,32,32,100,111,116,102,105,108,101,58,119,114,105,116, -101,40,39,125,92,110,39,41,13,10,32,32,32,32,100,111,116,102,105,108, -101,58,99,108,111,115,101,40,41,13,10,101,110,100,13,10,13,10,102,117, -110,99,116,105,111,110,32,109,97,99,104,105,110,101,58,116,114,97,110,115, -105,116,105,111,110,40,101,118,101,110,116,41,13,10,32,32,32,32,105,102, -32,115,101,108,102,46,99,117,114,114,101,110,116,84,114,97,110,115,105,116, -105,111,110,105,110,103,69,118,101,110,116,32,61,61,32,101,118,101,110,116, -32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114, -110,32,115,101,108,102,91,115,101,108,102,46,99,117,114,114,101,110,116,84, -114,97,110,115,105,116,105,111,110,105,110,103,69,118,101,110,116,93,40,115, -101,108,102,41,13,10,32,32,32,32,101,110,100,13,10,101,110,100,13,10, -13,10,102,117,110,99,116,105,111,110,32,109,97,99,104,105,110,101,58,99, -97,110,99,101,108,84,114,97,110,115,105,116,105,111,110,40,101,118,101,110, -116,41,13,10,32,32,32,32,105,102,32,115,101,108,102,46,99,117,114,114, -101,110,116,84,114,97,110,115,105,116,105,111,110,105,110,103,69,118,101,110, -116,32,61,61,32,101,118,101,110,116,32,116,104,101,110,13,10,32,32,32, -32,32,32,32,32,115,101,108,102,46,97,115,121,110,99,83,116,97,116,101, -32,61,32,78,79,78,69,13,10,32,32,32,32,32,32,32,32,115,101,108, +110,116,46,109,97,112,91,39,42,39,93,13,10,32,32,114,101,116,117,114, +110,32,116,111,32,126,61,32,110,105,108,44,32,116,111,13,10,101,110,100, +13,10,13,10,102,117,110,99,116,105,111,110,32,109,97,99,104,105,110,101, +58,99,97,110,110,111,116,40,101,41,13,10,32,32,114,101,116,117,114,110, +32,110,111,116,32,115,101,108,102,58,99,97,110,40,101,41,13,10,101,110, +100,13,10,13,10,102,117,110,99,116,105,111,110,32,109,97,99,104,105,110, +101,58,116,111,100,111,116,40,102,105,108,101,110,97,109,101,41,13,10,32, +32,108,111,99,97,108,32,100,111,116,102,105,108,101,32,61,32,105,111,46, +111,112,101,110,40,102,105,108,101,110,97,109,101,44,39,119,39,41,13,10, +32,32,100,111,116,102,105,108,101,58,119,114,105,116,101,40,39,100,105,103, +114,97,112,104,32,123,92,110,39,41,13,10,32,32,108,111,99,97,108,32, +116,114,97,110,115,105,116,105,111,110,32,61,32,102,117,110,99,116,105,111, +110,40,101,118,101,110,116,44,102,114,111,109,44,116,111,41,13,10,32,32, +32,32,100,111,116,102,105,108,101,58,119,114,105,116,101,40,115,116,114,105, +110,103,46,102,111,114,109,97,116,40,39,37,115,32,45,62,32,37,115,32, +91,108,97,98,101,108,61,37,115,93,59,92,110,39,44,102,114,111,109,44, +116,111,44,101,118,101,110,116,41,41,13,10,32,32,101,110,100,13,10,32, +32,102,111,114,32,95,44,32,101,118,101,110,116,32,105,110,32,112,97,105, +114,115,40,115,101,108,102,46,111,112,116,105,111,110,115,46,101,118,101,110, +116,115,41,32,100,111,13,10,32,32,32,32,105,102,32,116,121,112,101,40, +101,118,101,110,116,46,102,114,111,109,41,32,61,61,32,39,116,97,98,108, +101,39,32,116,104,101,110,13,10,32,32,32,32,32,32,102,111,114,32,95, +44,32,102,114,111,109,32,105,110,32,105,112,97,105,114,115,40,101,118,101, +110,116,46,102,114,111,109,41,32,100,111,13,10,32,32,32,32,32,32,32, +32,116,114,97,110,115,105,116,105,111,110,40,101,118,101,110,116,46,110,97, +109,101,44,102,114,111,109,44,101,118,101,110,116,46,116,111,41,13,10,32, +32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,108,115,101,13,10, +32,32,32,32,32,32,116,114,97,110,115,105,116,105,111,110,40,101,118,101, +110,116,46,110,97,109,101,44,101,118,101,110,116,46,102,114,111,109,44,101, +118,101,110,116,46,116,111,41,13,10,32,32,32,32,101,110,100,13,10,32, +32,101,110,100,13,10,32,32,100,111,116,102,105,108,101,58,119,114,105,116, +101,40,39,125,92,110,39,41,13,10,32,32,100,111,116,102,105,108,101,58, +99,108,111,115,101,40,41,13,10,101,110,100,13,10,13,10,102,117,110,99, +116,105,111,110,32,109,97,99,104,105,110,101,58,116,114,97,110,115,105,116, +105,111,110,40,101,118,101,110,116,41,13,10,32,32,105,102,32,115,101,108, +102,46,99,117,114,114,101,110,116,84,114,97,110,115,105,116,105,111,110,105, +110,103,69,118,101,110,116,32,61,61,32,101,118,101,110,116,32,116,104,101, +110,13,10,32,32,32,32,114,101,116,117,114,110,32,115,101,108,102,91,115, +101,108,102,46,99,117,114,114,101,110,116,84,114,97,110,115,105,116,105,111, +110,105,110,103,69,118,101,110,116,93,40,115,101,108,102,41,13,10,32,32, +101,110,100,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110, +32,109,97,99,104,105,110,101,58,99,97,110,99,101,108,84,114,97,110,115, +105,116,105,111,110,40,101,118,101,110,116,41,13,10,32,32,105,102,32,115, +101,108,102,46,99,117,114,114,101,110,116,84,114,97,110,115,105,116,105,111, +110,105,110,103,69,118,101,110,116,32,61,61,32,101,118,101,110,116,32,116, +104,101,110,13,10,32,32,32,32,115,101,108,102,46,97,115,121,110,99,83, +116,97,116,101,32,61,32,78,79,78,69,13,10,32,32,32,32,115,101,108, 102,46,99,117,114,114,101,110,116,84,114,97,110,115,105,116,105,111,110,105, -110,103,69,118,101,110,116,32,61,32,110,105,108,13,10,32,32,32,32,101, -110,100,13,10,101,110,100,13,10,13,10,109,97,99,104,105,110,101,46,78, -79,78,69,32,61,32,78,79,78,69,13,10,109,97,99,104,105,110,101,46, -65,83,89,78,67,32,61,32,65,83,89,78,67,13,10,13,10,45,45,45, +110,103,69,118,101,110,116,32,61,32,110,105,108,13,10,32,32,101,110,100, +13,10,101,110,100,13,10,13,10,109,97,99,104,105,110,101,46,78,79,78, +69,32,61,32,78,79,78,69,13,10,109,97,99,104,105,110,101,46,65,83, +89,78,67,32,61,32,65,83,89,78,67,13,10,13,10,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,69,120,112,111, -114,116,32,116,111,32,74,105,110,46,32,13,10,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,13,10,45,45,32,69,120,112,111,114,116, +32,116,111,32,74,105,110,46,32,13,10,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,13,10,13,10,106,105,110,46,97,105,46,110,101, -119,83,116,97,116,101,77,97,99,104,105,110,101,32,61,32,109,97,99,104, -105,110,101,46,99,114,101,97,116,101,13,10,0 +45,45,45,45,45,13,10,13,10,106,105,110,46,97,105,46,110,101,119,83, +116,97,116,101,77,97,99,104,105,110,101,32,61,32,109,97,99,104,105,110, +101,46,99,114,101,97,116,101,13,10,0 }; diff --git a/src/libjin-lua/scripts/app.lua b/src/libjin-lua/scripts/app.lua index 6ea9ee1..bd82d72 100644 --- a/src/libjin-lua/scripts/app.lua +++ b/src/libjin-lua/scripts/app.lua @@ -8,51 +8,51 @@ jin.filesystem.mount(jin.cwd) jin.config = {} if jin.filesystem.exist("config.lua") then - xpcall(function()jin.config = require "config" end, function()end) + xpcall(function()jin.config = require "config" end, function()end) end -jin.config.width = jin.config.width or 580 -jin.config.height = jin.config.height or 450 -jin.config.vsync = jin.config.vsync or true -jin.config.title = jin.config.title or ("jin v" .. jin.version) +jin.config.width = jin.config.width or 580 +jin.config.height = jin.config.height or 450 +jin.config.vsync = jin.config.vsync or true +jin.config.title = jin.config.title or ("jin v" .. jin.version) jin.config.resizable = jin.config.resizable or false jin.config.fullscreen = jin.config.fullscreen or false -jin.config.fps = jin.config.fps or 60 -jin.config.icon = jin.config.icon or "" +jin.config.fps = jin.config.fps or 60 +jin.config.icon = jin.config.icon or "" ------------------------------------------------------------------------- -- Default game loop ------------------------------------------------------------------------- local function call(func, ...) - if func then - return func(...) - end + if func then + return func(...) + end end function jin.core.run() - jin.graphics.reset() - call(jin.core.onLoad) - local dt = 0 - while jin.core.running() do - for _, e in pairs(jin.event.poll()) do - if e.type == "KeyDown" then - jin.keyboard.set(e.key, true) - elseif e.type == "KeyUp" then - jin.keyboard.set(e.key, false) - end - call(jin.core.onEvent, e) - end - jin.time.step() - dt = jin.time.getDelta() - call(jin.core.onUpdate, dt) - -- Screen is always cleared with full black - jin.graphics.setClearColor(0, 0, 0, 0xff) - jin.graphics.clear() - call(jin.core.onDraw) - jin.graphics.present() - jin.time.sleep(0.001) + jin.graphics.reset() + call(jin.core.onLoad) + local dt = 0 + while jin.core.running() do + for _, e in pairs(jin.event.poll()) do + if e.type == "KeyDown" then + jin.keyboard.set(e.key, true) + elseif e.type == "KeyUp" then + jin.keyboard.set(e.key, false) + end + call(jin.core.onEvent, e) end - call(jin.core.onQuit) + jin.time.step() + dt = jin.time.getDelta() + call(jin.core.onUpdate, dt) + -- Screen is always cleared with full black + jin.graphics.setClearColor(0, 0, 0, 0xff) + jin.graphics.clear() + call(jin.core.onDraw) + jin.graphics.present() + jin.time.sleep(0.001) + end + call(jin.core.onQuit) end ------------------------------------------------------------------------- @@ -61,51 +61,51 @@ end -- Display error message. local function onError(msg) - local err = "Error occurred:\n" .. msg .. "\n" .. debug.traceback() - jin.log.error(err) - jin.graphics.showWindow() - jin.graphics.reset() - jin.graphics.setClearColor(100, 100, 100, 255) - jin.graphics.clear() - jin.graphics.print(err, 5, 5) - jin.graphics.present() - while jin.core.running() do - for _, e in pairs(jin.event.poll()) do - if e.type == "Quit" then - jin.core.stop() - end - end - jin.time.sleep(0.001) + local err = "Error occurred:\n" .. msg .. "\n" .. debug.traceback() + jin.log.error(err) + jin.graphics.showWindow() + jin.graphics.reset() + jin.graphics.setClearColor(100, 100, 100, 255) + jin.graphics.clear() + jin.graphics.print(err, 5, 5) + jin.graphics.present() + while jin.core.running() do + for _, e in pairs(jin.event.poll()) do + if e.type == "Quit" then + jin.core.stop() + end end + jin.time.sleep(0.001) + end end -- No game screen. local function noGame() - jin.graphics.showWindow() - jin.graphics.reset() - jin.graphics.setClearColor(100, 100, 100, 255) - jin.graphics.clear() - jin.graphics.print("No Game", 5, 5) - jin.graphics.present() - while jin.core.running() do - for _, e in pairs(jin.event.poll()) do - if e.type == "Quit" then - jin.core.stop() - end - end - jin.time.sleep(0.001) + jin.graphics.showWindow() + jin.graphics.reset() + jin.graphics.setClearColor(100, 100, 100, 255) + jin.graphics.clear() + jin.graphics.print("No Game", 5, 5) + jin.graphics.present() + while jin.core.running() do + for _, e in pairs(jin.event.poll()) do + if e.type == "Quit" then + jin.core.stop() + end end + jin.time.sleep(0.001) + end end local function boot() - if jin.filesystem.exist("main.lua") then - call(function() - require"main" - jin.core.run() - end) - else - noGame() - end + if jin.filesystem.exist("main.lua") then + call(function() + require"main" + jin.core.run() + end) + else + noGame() + end end ------------------------------------------------------------------------- diff --git a/src/libjin-lua/scripts/app.lua.h b/src/libjin-lua/scripts/app.lua.h index e8aca28..8401416 100644 --- a/src/libjin-lua/scripts/app.lua.h +++ b/src/libjin-lua/scripts/app.lua.h @@ -14,21 +14,20 @@ static char app_lua[] = { 45,45,13,10,13,10,106,105,110,46,99,111,110,102,105,103,32,32,61,32, 123,125,32,13,10,105,102,32,106,105,110,46,102,105,108,101,115,121,115,116, 101,109,46,101,120,105,115,116,40,34,99,111,110,102,105,103,46,108,117,97, -34,41,32,116,104,101,110,32,13,10,32,32,32,32,120,112,99,97,108,108, -40,102,117,110,99,116,105,111,110,40,41,106,105,110,46,99,111,110,102,105, -103,32,61,32,114,101,113,117,105,114,101,32,34,99,111,110,102,105,103,34, -32,101,110,100,44,32,102,117,110,99,116,105,111,110,40,41,101,110,100,41, -32,32,32,32,13,10,101,110,100,13,10,106,105,110,46,99,111,110,102,105, -103,46,119,105,100,116,104,32,32,32,32,32,32,61,32,106,105,110,46,99, -111,110,102,105,103,46,119,105,100,116,104,32,32,32,32,32,32,111,114,32, -53,56,48,32,13,10,106,105,110,46,99,111,110,102,105,103,46,104,101,105, -103,104,116,32,32,32,32,32,61,32,106,105,110,46,99,111,110,102,105,103, -46,104,101,105,103,104,116,32,32,32,32,32,111,114,32,52,53,48,32,13, -10,106,105,110,46,99,111,110,102,105,103,46,118,115,121,110,99,32,32,32, -32,32,32,61,32,106,105,110,46,99,111,110,102,105,103,46,118,115,121,110, -99,32,32,32,32,32,32,111,114,32,116,114,117,101,13,10,106,105,110,46, -99,111,110,102,105,103,46,116,105,116,108,101,32,32,32,32,32,32,61,32, +34,41,32,116,104,101,110,32,13,10,32,32,120,112,99,97,108,108,40,102, +117,110,99,116,105,111,110,40,41,106,105,110,46,99,111,110,102,105,103,32, +61,32,114,101,113,117,105,114,101,32,34,99,111,110,102,105,103,34,32,101, +110,100,44,32,102,117,110,99,116,105,111,110,40,41,101,110,100,41,32,32, +13,10,101,110,100,13,10,106,105,110,46,99,111,110,102,105,103,46,119,105, +100,116,104,32,32,32,32,61,32,106,105,110,46,99,111,110,102,105,103,46, +119,105,100,116,104,32,32,32,32,111,114,32,53,56,48,32,13,10,106,105, +110,46,99,111,110,102,105,103,46,104,101,105,103,104,116,32,32,32,61,32, +106,105,110,46,99,111,110,102,105,103,46,104,101,105,103,104,116,32,32,32, +111,114,32,52,53,48,32,13,10,106,105,110,46,99,111,110,102,105,103,46, +118,115,121,110,99,32,32,32,32,61,32,106,105,110,46,99,111,110,102,105, +103,46,118,115,121,110,99,32,32,32,32,111,114,32,116,114,117,101,13,10, 106,105,110,46,99,111,110,102,105,103,46,116,105,116,108,101,32,32,32,32, +61,32,106,105,110,46,99,111,110,102,105,103,46,116,105,116,108,101,32,32, 32,32,111,114,32,40,34,106,105,110,32,118,34,32,46,46,32,106,105,110, 46,118,101,114,115,105,111,110,41,13,10,106,105,110,46,99,111,110,102,105, 103,46,114,101,115,105,122,97,98,108,101,32,32,61,32,106,105,110,46,99, @@ -37,63 +36,57 @@ static char app_lua[] = { 117,108,108,115,99,114,101,101,110,32,61,32,106,105,110,46,99,111,110,102, 105,103,46,102,117,108,108,115,99,114,101,101,110,32,111,114,32,102,97,108, 115,101,13,10,106,105,110,46,99,111,110,102,105,103,46,102,112,115,32,32, -32,32,32,32,32,32,61,32,106,105,110,46,99,111,110,102,105,103,46,102, -112,115,32,32,32,32,32,32,32,32,111,114,32,54,48,13,10,106,105,110, -46,99,111,110,102,105,103,46,105,99,111,110,32,32,32,32,32,32,32,61, -32,106,105,110,46,99,111,110,102,105,103,46,105,99,111,110,32,32,32,32, -32,32,32,111,114,32,34,34,13,10,13,10,45,45,45,45,45,45,45,45, +32,32,61,32,106,105,110,46,99,111,110,102,105,103,46,102,112,115,32,32, +32,32,111,114,32,54,48,13,10,106,105,110,46,99,111,110,102,105,103,46, +105,99,111,110,32,32,32,32,32,61,32,106,105,110,46,99,111,110,102,105, +103,46,105,99,111,110,32,32,32,32,32,111,114,32,34,34,13,10,13,10, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,13,10,45,45,32,68,101,102,97,117,108,116,32,103,97, -109,101,32,108,111,111,112,13,10,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,68,101, +102,97,117,108,116,32,103,97,109,101,32,108,111,111,112,13,10,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, -32,99,97,108,108,40,102,117,110,99,44,32,46,46,46,41,13,10,32,32, -32,32,105,102,32,102,117,110,99,32,116,104,101,110,32,13,10,32,32,32, -32,32,32,32,32,114,101,116,117,114,110,32,102,117,110,99,40,46,46,46, -41,13,10,32,32,32,32,101,110,100,13,10,101,110,100,13,10,13,10,102, +45,45,45,45,45,45,45,45,45,45,13,10,13,10,108,111,99,97,108,32, +102,117,110,99,116,105,111,110,32,99,97,108,108,40,102,117,110,99,44,32, +46,46,46,41,13,10,32,32,105,102,32,102,117,110,99,32,116,104,101,110, +32,13,10,32,32,32,32,114,101,116,117,114,110,32,102,117,110,99,40,46, +46,46,41,13,10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,102, 117,110,99,116,105,111,110,32,106,105,110,46,99,111,114,101,46,114,117,110, -40,41,13,10,32,32,32,32,106,105,110,46,103,114,97,112,104,105,99,115, -46,114,101,115,101,116,40,41,13,10,32,32,32,32,99,97,108,108,40,106, -105,110,46,99,111,114,101,46,111,110,76,111,97,100,41,13,10,32,32,32, -32,108,111,99,97,108,32,100,116,32,61,32,48,13,10,32,32,32,32,119, -104,105,108,101,32,106,105,110,46,99,111,114,101,46,114,117,110,110,105,110, -103,40,41,32,100,111,13,10,32,32,32,32,32,32,32,32,102,111,114,32, -95,44,32,101,32,105,110,32,112,97,105,114,115,40,106,105,110,46,101,118, -101,110,116,46,112,111,108,108,40,41,41,32,100,111,32,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,105,102,32,101,46,116,121,112,101,32,61, -61,32,34,75,101,121,68,111,119,110,34,32,116,104,101,110,32,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,106,105,110,46,107, -101,121,98,111,97,114,100,46,115,101,116,40,101,46,107,101,121,44,32,116, -114,117,101,41,32,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101, -108,115,101,105,102,32,101,46,116,121,112,101,32,61,61,32,34,75,101,121, -85,112,34,32,116,104,101,110,32,13,10,32,32,32,32,32,32,32,32,32, +40,41,13,10,32,32,106,105,110,46,103,114,97,112,104,105,99,115,46,114, +101,115,101,116,40,41,13,10,32,32,99,97,108,108,40,106,105,110,46,99, +111,114,101,46,111,110,76,111,97,100,41,13,10,32,32,108,111,99,97,108, +32,100,116,32,61,32,48,13,10,32,32,119,104,105,108,101,32,106,105,110, +46,99,111,114,101,46,114,117,110,110,105,110,103,40,41,32,100,111,13,10, +32,32,32,32,102,111,114,32,95,44,32,101,32,105,110,32,112,97,105,114, +115,40,106,105,110,46,101,118,101,110,116,46,112,111,108,108,40,41,41,32, +100,111,32,13,10,32,32,32,32,32,32,105,102,32,101,46,116,121,112,101, +32,61,61,32,34,75,101,121,68,111,119,110,34,32,116,104,101,110,32,13, +10,32,32,32,32,32,32,32,32,106,105,110,46,107,101,121,98,111,97,114, +100,46,115,101,116,40,101,46,107,101,121,44,32,116,114,117,101,41,32,13, +10,32,32,32,32,32,32,101,108,115,101,105,102,32,101,46,116,121,112,101, +32,61,61,32,34,75,101,121,85,112,34,32,116,104,101,110,32,13,10,32, 32,32,32,32,32,32,32,106,105,110,46,107,101,121,98,111,97,114,100,46, 115,101,116,40,101,46,107,101,121,44,32,102,97,108,115,101,41,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,99,97,108,108,40,106,105,110,46,99,111,114, -101,46,111,110,69,118,101,110,116,44,32,101,41,13,10,32,32,32,32,32, -32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,106,105,110,46, -116,105,109,101,46,115,116,101,112,40,41,13,10,32,32,32,32,32,32,32, -32,100,116,32,61,32,106,105,110,46,116,105,109,101,46,103,101,116,68,101, -108,116,97,40,41,13,10,32,32,32,32,32,32,32,32,99,97,108,108,40, -106,105,110,46,99,111,114,101,46,111,110,85,112,100,97,116,101,44,32,100, -116,41,13,10,32,32,32,32,32,32,32,32,45,45,32,83,99,114,101,101, -110,32,105,115,32,97,108,119,97,121,115,32,99,108,101,97,114,101,100,32, -119,105,116,104,32,102,117,108,108,32,98,108,97,99,107,13,10,32,32,32, -32,32,32,32,32,106,105,110,46,103,114,97,112,104,105,99,115,46,115,101, -116,67,108,101,97,114,67,111,108,111,114,40,48,44,32,48,44,32,48,44, -32,48,120,102,102,41,13,10,32,32,32,32,32,32,32,32,106,105,110,46, +32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,99,97,108,108, +40,106,105,110,46,99,111,114,101,46,111,110,69,118,101,110,116,44,32,101, +41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,106,105,110,46, +116,105,109,101,46,115,116,101,112,40,41,13,10,32,32,32,32,100,116,32, +61,32,106,105,110,46,116,105,109,101,46,103,101,116,68,101,108,116,97,40, +41,13,10,32,32,32,32,99,97,108,108,40,106,105,110,46,99,111,114,101, +46,111,110,85,112,100,97,116,101,44,32,100,116,41,13,10,32,32,32,32, +45,45,32,83,99,114,101,101,110,32,105,115,32,97,108,119,97,121,115,32, +99,108,101,97,114,101,100,32,119,105,116,104,32,102,117,108,108,32,98,108, +97,99,107,13,10,32,32,32,32,106,105,110,46,103,114,97,112,104,105,99, +115,46,115,101,116,67,108,101,97,114,67,111,108,111,114,40,48,44,32,48, +44,32,48,44,32,48,120,102,102,41,13,10,32,32,32,32,106,105,110,46, 103,114,97,112,104,105,99,115,46,99,108,101,97,114,40,41,32,32,32,32, -32,32,32,32,13,10,32,32,32,32,32,32,32,32,99,97,108,108,40,106, -105,110,46,99,111,114,101,46,111,110,68,114,97,119,41,13,10,32,32,32, -32,32,32,32,32,106,105,110,46,103,114,97,112,104,105,99,115,46,112,114, -101,115,101,110,116,40,41,13,10,32,32,32,32,32,32,32,32,106,105,110, -46,116,105,109,101,46,115,108,101,101,112,40,48,46,48,48,49,41,13,10, -32,32,32,32,101,110,100,13,10,32,32,32,32,99,97,108,108,40,106,105, +13,10,32,32,32,32,99,97,108,108,40,106,105,110,46,99,111,114,101,46, +111,110,68,114,97,119,41,13,10,32,32,32,32,106,105,110,46,103,114,97, +112,104,105,99,115,46,112,114,101,115,101,110,116,40,41,13,10,32,32,32, +32,106,105,110,46,116,105,109,101,46,115,108,101,101,112,40,48,46,48,48, +49,41,13,10,32,32,101,110,100,13,10,32,32,99,97,108,108,40,106,105, 110,46,99,111,114,101,46,111,110,81,117,105,116,41,13,10,101,110,100,13, 10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, @@ -106,108 +99,102 @@ static char app_lua[] = { 45,45,45,45,45,13,10,13,10,45,45,32,68,105,115,112,108,97,121,32, 101,114,114,111,114,32,109,101,115,115,97,103,101,46,13,10,108,111,99,97, 108,32,102,117,110,99,116,105,111,110,32,111,110,69,114,114,111,114,40,109, -115,103,41,32,13,10,32,32,32,32,108,111,99,97,108,32,101,114,114,32, -61,32,34,69,114,114,111,114,32,111,99,99,117,114,114,101,100,58,92,110, -34,32,46,46,32,109,115,103,32,46,46,32,34,92,110,34,32,46,46,32, -100,101,98,117,103,46,116,114,97,99,101,98,97,99,107,40,41,13,10,32, -32,32,32,106,105,110,46,108,111,103,46,101,114,114,111,114,40,101,114,114, -41,13,10,32,32,32,32,106,105,110,46,103,114,97,112,104,105,99,115,46, -115,104,111,119,87,105,110,100,111,119,40,41,13,10,32,32,32,32,106,105, -110,46,103,114,97,112,104,105,99,115,46,114,101,115,101,116,40,41,13,10, -32,32,32,32,106,105,110,46,103,114,97,112,104,105,99,115,46,115,101,116, -67,108,101,97,114,67,111,108,111,114,40,49,48,48,44,32,49,48,48,44, -32,49,48,48,44,32,50,53,53,41,13,10,32,32,32,32,106,105,110,46, -103,114,97,112,104,105,99,115,46,99,108,101,97,114,40,41,13,10,32,32, -32,32,106,105,110,46,103,114,97,112,104,105,99,115,46,112,114,105,110,116, -40,101,114,114,44,32,53,44,32,53,41,13,10,32,32,32,32,106,105,110, -46,103,114,97,112,104,105,99,115,46,112,114,101,115,101,110,116,40,41,13, -10,32,32,32,32,119,104,105,108,101,32,106,105,110,46,99,111,114,101,46, -114,117,110,110,105,110,103,40,41,32,100,111,32,13,10,32,32,32,32,32, -32,32,32,102,111,114,32,95,44,32,101,32,105,110,32,112,97,105,114,115, -40,106,105,110,46,101,118,101,110,116,46,112,111,108,108,40,41,41,32,100, -111,32,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,101, -46,116,121,112,101,32,61,61,32,34,81,117,105,116,34,32,116,104,101,110, -32,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,106, -105,110,46,99,111,114,101,46,115,116,111,112,40,41,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32, -32,101,110,100,13,10,32,32,32,32,32,32,32,32,106,105,110,46,116,105, -109,101,46,115,108,101,101,112,40,48,46,48,48,49,41,13,10,32,32,32, -32,101,110,100,13,10,101,110,100,13,10,13,10,45,45,32,78,111,32,103, -97,109,101,32,115,99,114,101,101,110,46,13,10,108,111,99,97,108,32,102, -117,110,99,116,105,111,110,32,110,111,71,97,109,101,40,41,13,10,32,32, -32,32,106,105,110,46,103,114,97,112,104,105,99,115,46,115,104,111,119,87, -105,110,100,111,119,40,41,13,10,32,32,32,32,106,105,110,46,103,114,97, -112,104,105,99,115,46,114,101,115,101,116,40,41,13,10,32,32,32,32,106, -105,110,46,103,114,97,112,104,105,99,115,46,115,101,116,67,108,101,97,114, -67,111,108,111,114,40,49,48,48,44,32,49,48,48,44,32,49,48,48,44, -32,50,53,53,41,13,10,32,32,32,32,106,105,110,46,103,114,97,112,104, -105,99,115,46,99,108,101,97,114,40,41,13,10,32,32,32,32,106,105,110, -46,103,114,97,112,104,105,99,115,46,112,114,105,110,116,40,34,78,111,32, -71,97,109,101,34,44,32,53,44,32,53,41,32,13,10,32,32,32,32,106, -105,110,46,103,114,97,112,104,105,99,115,46,112,114,101,115,101,110,116,40, -41,13,10,32,32,32,32,119,104,105,108,101,32,106,105,110,46,99,111,114, +115,103,41,32,13,10,32,32,108,111,99,97,108,32,101,114,114,32,61,32, +34,69,114,114,111,114,32,111,99,99,117,114,114,101,100,58,92,110,34,32, +46,46,32,109,115,103,32,46,46,32,34,92,110,34,32,46,46,32,100,101, +98,117,103,46,116,114,97,99,101,98,97,99,107,40,41,13,10,32,32,106, +105,110,46,108,111,103,46,101,114,114,111,114,40,101,114,114,41,13,10,32, +32,106,105,110,46,103,114,97,112,104,105,99,115,46,115,104,111,119,87,105, +110,100,111,119,40,41,13,10,32,32,106,105,110,46,103,114,97,112,104,105, +99,115,46,114,101,115,101,116,40,41,13,10,32,32,106,105,110,46,103,114, +97,112,104,105,99,115,46,115,101,116,67,108,101,97,114,67,111,108,111,114, +40,49,48,48,44,32,49,48,48,44,32,49,48,48,44,32,50,53,53,41, +13,10,32,32,106,105,110,46,103,114,97,112,104,105,99,115,46,99,108,101, +97,114,40,41,13,10,32,32,106,105,110,46,103,114,97,112,104,105,99,115, +46,112,114,105,110,116,40,101,114,114,44,32,53,44,32,53,41,13,10,32, +32,106,105,110,46,103,114,97,112,104,105,99,115,46,112,114,101,115,101,110, +116,40,41,13,10,32,32,119,104,105,108,101,32,106,105,110,46,99,111,114, 101,46,114,117,110,110,105,110,103,40,41,32,100,111,32,13,10,32,32,32, -32,32,32,32,32,102,111,114,32,95,44,32,101,32,105,110,32,112,97,105, -114,115,40,106,105,110,46,101,118,101,110,116,46,112,111,108,108,40,41,41, -32,100,111,32,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102, -32,101,46,116,121,112,101,32,61,61,32,34,81,117,105,116,34,32,116,104, -101,110,32,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,106,105,110,46,99,111,114,101,46,115,116,111,112,40,41,13,10,32,32, -32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32, -32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,106,105,110,46, -116,105,109,101,46,115,108,101,101,112,40,48,46,48,48,49,41,13,10,32, -32,32,32,101,110,100,13,10,101,110,100,13,10,13,10,108,111,99,97,108, +32,102,111,114,32,95,44,32,101,32,105,110,32,112,97,105,114,115,40,106, +105,110,46,101,118,101,110,116,46,112,111,108,108,40,41,41,32,100,111,32, +13,10,32,32,32,32,32,32,105,102,32,101,46,116,121,112,101,32,61,61, +32,34,81,117,105,116,34,32,116,104,101,110,32,13,10,32,32,32,32,32, +32,32,32,106,105,110,46,99,111,114,101,46,115,116,111,112,40,41,13,10, +32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100,13,10, +32,32,32,32,106,105,110,46,116,105,109,101,46,115,108,101,101,112,40,48, +46,48,48,49,41,13,10,32,32,101,110,100,13,10,101,110,100,13,10,13, +10,45,45,32,78,111,32,103,97,109,101,32,115,99,114,101,101,110,46,13, +10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,110,111,71,97, +109,101,40,41,13,10,32,32,106,105,110,46,103,114,97,112,104,105,99,115, +46,115,104,111,119,87,105,110,100,111,119,40,41,13,10,32,32,106,105,110, +46,103,114,97,112,104,105,99,115,46,114,101,115,101,116,40,41,13,10,32, +32,106,105,110,46,103,114,97,112,104,105,99,115,46,115,101,116,67,108,101, +97,114,67,111,108,111,114,40,49,48,48,44,32,49,48,48,44,32,49,48, +48,44,32,50,53,53,41,13,10,32,32,106,105,110,46,103,114,97,112,104, +105,99,115,46,99,108,101,97,114,40,41,13,10,32,32,106,105,110,46,103, +114,97,112,104,105,99,115,46,112,114,105,110,116,40,34,78,111,32,71,97, +109,101,34,44,32,53,44,32,53,41,32,13,10,32,32,106,105,110,46,103, +114,97,112,104,105,99,115,46,112,114,101,115,101,110,116,40,41,13,10,32, +32,119,104,105,108,101,32,106,105,110,46,99,111,114,101,46,114,117,110,110, +105,110,103,40,41,32,100,111,32,13,10,32,32,32,32,102,111,114,32,95, +44,32,101,32,105,110,32,112,97,105,114,115,40,106,105,110,46,101,118,101, +110,116,46,112,111,108,108,40,41,41,32,100,111,32,13,10,32,32,32,32, +32,32,105,102,32,101,46,116,121,112,101,32,61,61,32,34,81,117,105,116, +34,32,116,104,101,110,32,13,10,32,32,32,32,32,32,32,32,106,105,110, +46,99,111,114,101,46,115,116,111,112,40,41,13,10,32,32,32,32,32,32, +101,110,100,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,106,105, +110,46,116,105,109,101,46,115,108,101,101,112,40,48,46,48,48,49,41,13, +10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,108,111,99,97,108, 32,102,117,110,99,116,105,111,110,32,98,111,111,116,40,41,32,13,10,32, -32,32,32,105,102,32,106,105,110,46,102,105,108,101,115,121,115,116,101,109, -46,101,120,105,115,116,40,34,109,97,105,110,46,108,117,97,34,41,32,116, -104,101,110,32,13,10,32,32,32,32,32,32,32,32,99,97,108,108,40,102, -117,110,99,116,105,111,110,40,41,32,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,114,101,113,117,105,114,101,34,109,97,105,110,34,32,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,106,105,110,46,99,111,114,101, -46,114,117,110,40,41,13,10,32,32,32,32,32,32,32,32,101,110,100,41, -13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32, -110,111,71,97,109,101,40,41,13,10,32,32,32,32,101,110,100,13,10,101, -110,100,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +32,105,102,32,106,105,110,46,102,105,108,101,115,121,115,116,101,109,46,101, +120,105,115,116,40,34,109,97,105,110,46,108,117,97,34,41,32,116,104,101, +110,32,13,10,32,32,32,32,99,97,108,108,40,102,117,110,99,116,105,111, +110,40,41,32,13,10,32,32,32,32,32,32,114,101,113,117,105,114,101,34, +109,97,105,110,34,32,13,10,32,32,32,32,32,32,106,105,110,46,99,111, +114,101,46,114,117,110,40,41,13,10,32,32,32,32,101,110,100,41,13,10, +32,32,101,108,115,101,13,10,32,32,32,32,110,111,71,97,109,101,40,41, +13,10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13, -10,45,45,32,73,110,105,116,105,97,108,105,122,101,32,115,117,98,32,115, -121,115,116,101,109,115,13,10,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,13,10,45,45,32,73,110,105,116,105,97, +108,105,122,101,32,115,117,98,32,115,121,115,116,101,109,115,13,10,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,13,10,13,10,106,105,110,46,97,117,100,105,111,46,105,110,105,116,40, -41,13,10,13,10,106,105,110,46,103,114,97,112,104,105,99,115,46,105,110, -105,116,40,106,105,110,46,99,111,110,102,105,103,41,13,10,13,10,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,106,105,110,46,97, +117,100,105,111,46,105,110,105,116,40,41,13,10,13,10,106,105,110,46,103, +114,97,112,104,105,99,115,46,105,110,105,116,40,106,105,110,46,99,111,110, +102,105,103,41,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,83,116,97,114, -116,32,103,97,109,101,13,10,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,13,10,45,45,32,83,116,97,114,116,32,103,97,109,101,13,10,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,13,10,13,10,120,112,99,97,108,108,40,98,111,111,116,44,32,111,110, -69,114,114,111,114,41,13,10,13,10,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,120,112,99,97,108, +108,40,98,111,111,116,44,32,111,110,69,114,114,111,114,41,13,10,13,10, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,13,10,45,45,32,68,101,115,116,114,111,121,32,115,117,98,45, -115,121,115,116,101,109,115,13,10,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,68,101, +115,116,114,111,121,32,115,117,98,45,115,121,115,116,101,109,115,13,10,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,13,10,13,10,106,105,110,46,103,114,97,112,104,105,99,115,46,100, -101,115,116,114,111,121,40,41,13,10,13,10,106,105,110,46,97,117,100,105, -111,46,100,101,115,116,114,111,121,40,41,13,10,13,10,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,106,105,110,46, +103,114,97,112,104,105,99,115,46,100,101,115,116,114,111,121,40,41,13,10, +13,10,106,105,110,46,97,117,100,105,111,46,100,101,115,116,114,111,121,40, +41,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,13,10,45,45,32,81,117,105,116,32,103,97, -109,101,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10, +45,45,32,81,117,105,116,32,103,97,109,101,13,10,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13, -10,106,105,110,46,99,111,114,101,46,113,117,105,116,40,41,13,10,0 +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,13,10,13,10,106,105,110,46,99,111,114,101,46, +113,117,105,116,40,41,13,10,0 }; diff --git a/src/libjin-lua/scripts/graphics/graphics.lua b/src/libjin-lua/scripts/graphics/graphics.lua index 3abb64d..9307083 100644 --- a/src/libjin-lua/scripts/graphics/graphics.lua +++ b/src/libjin-lua/scripts/graphics/graphics.lua @@ -4,42 +4,42 @@ jin.graphics = jin.graphics or {} local jg = jin.graphics jg.RenderMode = { - FILL = 1, - LINE = 2, + FILL = 1, + LINE = 2, } jg.SpriteOrigin = { - TOPLEFT = 0, - TOPCENTER = 1, - TOPRIGHT = 2, - MIDDLELEFT = 3, - MIDDLECENTER = 4, - MIDDLERIGHT = 5, - BOTTOMLEFT = 6, - BOTTOMCENTER = 7, - BOTTOMRIGHT = 8 + TOPLEFT = 0, + TOPCENTER = 1, + TOPRIGHT = 2, + MIDDLELEFT = 3, + MIDDLECENTER = 4, + MIDDLERIGHT = 5, + BOTTOMLEFT = 6, + BOTTOMCENTER = 7, + BOTTOMRIGHT = 8 } jg.SpriteMode = { - SINGLE = 1, - RANDOM = 2, - ANIMATED = 3 + SINGLE = 1, + RANDOM = 2, + ANIMATED = 3 } jg.BlendMode = { - DEFAULT = 1, - ALPHA = 1, - ADDITIVE = 2, - PREMULTIPLIEDALPHA = 3 + DEFAULT = 1, + ALPHA = 1, + ADDITIVE = 2, + PREMULTIPLIEDALPHA = 3 } -- Built in shaders. jg.Shaders = nil local function compileBuiltInShaders() - if jg.Shaders ~= nil then - return - end - jg.Shaders = {} + if jg.Shaders ~= nil then + return + end + jg.Shaders = {} jg.Shaders.Font = jg.newShader[[ #VERTEX_SHADER Vertex vert(Vertex v) @@ -96,23 +96,23 @@ local function compileBuiltInShaders() } #END_FRAGMENT_SHADER ]] - jg.Shaders.Shape = jg.newShader[[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col; - } - #END_FRAGMENT_SHADER - ]] - jg.Shaders.Mesh = jg.newShader[[ - #VERTEX_SHADER - in Vec4 color; + jg.Shaders.Shape = jg.newShader[[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col; + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Mesh = jg.newShader[[ + #VERTEX_SHADER + in Vec4 color; Vertex vert(Vertex v) { return v; @@ -124,7 +124,7 @@ local function compileBuiltInShaders() return col * texel(tex, v.uv) * v.color; } #END_FRAGMENT_SHADER - ]] + ]] jg.Shaders.Default = jg.newShader[[ #VERTEX_SHADER Vertex vert(Vertex v) @@ -139,8 +139,8 @@ local function compileBuiltInShaders() } #END_FRAGMENT_SHADER ]] - jg.Shaders.Error = jg.newShader[[ - #VERTEX_SHADER + jg.Shaders.Error = jg.newShader[[ + #VERTEX_SHADER Vertex vert(Vertex v) { return v; @@ -152,56 +152,56 @@ local function compileBuiltInShaders() return Color(1, 0, 1, 1); } #END_FRAGMENT_SHADER - ]] + ]] end local _init = jg.init local initialized = false jg.init = function(setting) - if initialized then - return initialized - end - initialized = _init(setting) - if initialized then - compileBuiltInShaders() - jg.useShader(jg.Shaders.Default) - end - return initialized + if initialized then + return initialized + end + initialized = _init(setting) + if initialized then + compileBuiltInShaders() + jg.useShader(jg.Shaders.Default) + end + return initialized end -- Reset all attributes to default value. jg.reset = function() - jg.setColor(255, 255, 255, 255) - jg.setClearColor(0, 0, 0, 0) - jg.clear() - jg.unsetFont() - jg.unuseShader() + jg.setColor(255, 255, 255, 255) + jg.setClearColor(0, 0, 0, 0) + jg.clear() + jg.unsetFont() + jg.unuseShader() end jg.unuseShader = function() - jg.useShader(jg.Shaders.Default) + jg.useShader(jg.Shaders.Default) end local _newShader = jg.newShader jg.newShader = function(program) - local shader = _newShader(program) - if shader == nil then - jin.log.error("Compile shader failed:\n" .. debug.traceback()) - return jg.Shaders.Error - else - return shader - end + local shader = _newShader(program) + if shader == nil then + jin.log.error("Compile shader failed:\n" .. debug.traceback()) + return jg.Shaders.Error + else + return shader + end end local _newShaderf = jg.newShaderf jg.newShaderf = function(file) - local shader = _newShaderf(file) - if shader == nil then - jin.log.error("Compile shader failed:\n" .. debug.traceback()) - return jg.Shaders.Error - else - return shader - end + local shader = _newShaderf(file) + if shader == nil then + jin.log.error("Compile shader failed:\n" .. debug.traceback()) + return jg.Shaders.Error + else + return shader + end end diff --git a/src/libjin-lua/scripts/graphics/graphics.lua.h b/src/libjin-lua/scripts/graphics/graphics.lua.h index cb6cf56..c33f2a5 100644 --- a/src/libjin-lua/scripts/graphics/graphics.lua.h +++ b/src/libjin-lua/scripts/graphics/graphics.lua.h @@ -4,110 +4,51 @@ static char graphics_lua[] = { 46,103,114,97,112,104,105,99,115,32,111,114,32,123,125,32,13,10,13,10, 108,111,99,97,108,32,106,103,32,61,32,106,105,110,46,103,114,97,112,104, 105,99,115,13,10,13,10,106,103,46,82,101,110,100,101,114,77,111,100,101, -32,61,32,123,13,10,32,32,32,32,70,73,76,76,32,61,32,49,44,32, -13,10,32,32,32,32,76,73,78,69,32,61,32,50,44,13,10,125,13,10, -13,10,106,103,46,83,112,114,105,116,101,79,114,105,103,105,110,32,61,32, -123,13,10,32,32,32,32,84,79,80,76,69,70,84,32,61,32,48,44,13, -10,32,32,32,32,84,79,80,67,69,78,84,69,82,32,61,32,49,44,13, -10,32,32,32,32,84,79,80,82,73,71,72,84,32,61,32,50,44,13,10, -32,32,32,32,77,73,68,68,76,69,76,69,70,84,32,61,32,51,44,13, -10,32,32,32,32,77,73,68,68,76,69,67,69,78,84,69,82,32,61,32, -52,44,13,10,32,32,32,32,77,73,68,68,76,69,82,73,71,72,84,32, -61,32,53,44,13,10,32,32,32,32,66,79,84,84,79,77,76,69,70,84, -32,61,32,54,44,13,10,32,32,32,32,66,79,84,84,79,77,67,69,78, -84,69,82,32,61,32,55,44,13,10,32,32,32,32,66,79,84,84,79,77, -82,73,71,72,84,32,61,32,56,13,10,125,13,10,13,10,106,103,46,83, -112,114,105,116,101,77,111,100,101,32,61,32,123,13,10,32,32,32,32,83, -73,78,71,76,69,32,61,32,49,44,13,10,32,32,32,32,82,65,78,68, -79,77,32,61,32,50,44,13,10,32,32,32,32,65,78,73,77,65,84,69, -68,32,61,32,51,13,10,125,13,10,13,10,106,103,46,66,108,101,110,100, -77,111,100,101,32,61,32,123,13,10,32,32,32,32,68,69,70,65,85,76, -84,32,61,32,49,44,13,10,32,32,32,32,65,76,80,72,65,32,61,32, -49,44,32,13,10,32,32,32,32,65,68,68,73,84,73,86,69,32,61,32, -50,44,13,10,32,32,32,32,80,82,69,77,85,76,84,73,80,76,73,69, -68,65,76,80,72,65,32,61,32,51,13,10,125,13,10,13,10,45,45,32, -66,117,105,108,116,32,105,110,32,115,104,97,100,101,114,115,46,13,10,106, -103,46,83,104,97,100,101,114,115,32,61,32,110,105,108,13,10,108,111,99, -97,108,32,102,117,110,99,116,105,111,110,32,99,111,109,112,105,108,101,66, -117,105,108,116,73,110,83,104,97,100,101,114,115,40,41,32,13,10,32,32, -32,32,105,102,32,106,103,46,83,104,97,100,101,114,115,32,126,61,32,110, -105,108,32,116,104,101,110,32,13,10,32,32,32,32,32,32,32,32,114,101, -116,117,114,110,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,106, -103,46,83,104,97,100,101,114,115,32,61,32,123,125,13,10,9,106,103,46, -83,104,97,100,101,114,115,46,70,111,110,116,32,61,32,106,103,46,110,101, -119,83,104,97,100,101,114,91,91,13,10,9,9,35,86,69,82,84,69,88, -95,83,72,65,68,69,82,13,10,9,9,86,101,114,116,101,120,32,118,101, -114,116,40,86,101,114,116,101,120,32,118,41,13,10,9,9,123,13,10,9, -9,9,114,101,116,117,114,110,32,118,59,13,10,9,9,125,13,10,9,9, -35,69,78,68,95,86,69,82,84,69,88,95,83,72,65,68,69,82,13,10, -9,9,35,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,13,10, -9,9,67,111,108,111,114,32,102,114,97,103,40,67,111,108,111,114,32,99, -111,108,44,32,84,101,120,116,117,114,101,32,116,101,120,44,32,86,101,114, +32,61,32,123,13,10,32,32,70,73,76,76,32,61,32,49,44,32,13,10, +32,32,76,73,78,69,32,61,32,50,44,13,10,125,13,10,13,10,106,103, +46,83,112,114,105,116,101,79,114,105,103,105,110,32,61,32,123,13,10,32, +32,84,79,80,76,69,70,84,32,61,32,48,44,13,10,32,32,84,79,80, +67,69,78,84,69,82,32,61,32,49,44,13,10,32,32,84,79,80,82,73, +71,72,84,32,61,32,50,44,13,10,32,32,77,73,68,68,76,69,76,69, +70,84,32,61,32,51,44,13,10,32,32,77,73,68,68,76,69,67,69,78, +84,69,82,32,61,32,52,44,13,10,32,32,77,73,68,68,76,69,82,73, +71,72,84,32,61,32,53,44,13,10,32,32,66,79,84,84,79,77,76,69, +70,84,32,61,32,54,44,13,10,32,32,66,79,84,84,79,77,67,69,78, +84,69,82,32,61,32,55,44,13,10,32,32,66,79,84,84,79,77,82,73, +71,72,84,32,61,32,56,13,10,125,13,10,13,10,106,103,46,83,112,114, +105,116,101,77,111,100,101,32,61,32,123,13,10,32,32,83,73,78,71,76, +69,32,61,32,49,44,13,10,32,32,82,65,78,68,79,77,32,61,32,50, +44,13,10,32,32,65,78,73,77,65,84,69,68,32,61,32,51,13,10,125, +13,10,13,10,106,103,46,66,108,101,110,100,77,111,100,101,32,61,32,123, +13,10,32,32,68,69,70,65,85,76,84,32,61,32,49,44,13,10,32,32, +65,76,80,72,65,32,61,32,49,44,32,13,10,32,32,65,68,68,73,84, +73,86,69,32,61,32,50,44,13,10,32,32,80,82,69,77,85,76,84,73, +80,76,73,69,68,65,76,80,72,65,32,61,32,51,13,10,125,13,10,13, +10,45,45,32,66,117,105,108,116,32,105,110,32,115,104,97,100,101,114,115, +46,13,10,106,103,46,83,104,97,100,101,114,115,32,61,32,110,105,108,13, +10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,99,111,109,112, +105,108,101,66,117,105,108,116,73,110,83,104,97,100,101,114,115,40,41,32, +13,10,32,32,105,102,32,106,103,46,83,104,97,100,101,114,115,32,126,61, +32,110,105,108,32,116,104,101,110,32,13,10,32,32,32,32,114,101,116,117, +114,110,13,10,32,32,101,110,100,13,10,32,32,106,103,46,83,104,97,100, +101,114,115,32,61,32,123,125,13,10,9,106,103,46,83,104,97,100,101,114, +115,46,70,111,110,116,32,61,32,106,103,46,110,101,119,83,104,97,100,101, +114,91,91,13,10,9,9,35,86,69,82,84,69,88,95,83,72,65,68,69, +82,13,10,9,9,86,101,114,116,101,120,32,118,101,114,116,40,86,101,114, 116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101,116,117, -114,110,32,67,111,108,111,114,40,99,111,108,46,114,103,98,44,32,116,101, -120,101,108,40,116,101,120,44,32,118,46,117,118,41,46,97,41,59,13,10, -9,9,125,13,10,9,9,35,69,78,68,95,70,82,65,71,77,69,78,84, -95,83,72,65,68,69,82,13,10,9,93,93,13,10,9,106,103,46,83,104, -97,100,101,114,115,46,84,101,120,116,117,114,101,32,61,32,106,103,46,110, -101,119,83,104,97,100,101,114,91,91,13,10,9,9,35,86,69,82,84,69, -88,95,83,72,65,68,69,82,13,10,9,9,86,101,114,116,101,120,32,118, -101,114,116,40,86,101,114,116,101,120,32,118,41,13,10,9,9,123,13,10, -9,9,9,114,101,116,117,114,110,32,118,59,13,10,9,9,125,13,10,9, -9,35,69,78,68,95,86,69,82,84,69,88,95,83,72,65,68,69,82,13, -10,9,9,35,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,13, -10,9,9,67,111,108,111,114,32,102,114,97,103,40,67,111,108,111,114,32, -99,111,108,44,32,84,101,120,116,117,114,101,32,116,101,120,44,32,86,101, -114,116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101,116, -117,114,110,32,99,111,108,32,42,32,116,101,120,101,108,40,116,101,120,44, -32,118,46,117,118,41,59,13,10,9,9,125,13,10,9,9,35,69,78,68, -95,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,13,10,9,93, -93,13,10,9,106,103,46,83,104,97,100,101,114,115,46,83,112,114,105,116, -101,32,61,32,106,103,46,110,101,119,83,104,97,100,101,114,91,91,13,10, -9,9,35,86,69,82,84,69,88,95,83,72,65,68,69,82,13,10,9,9, -86,101,114,116,101,120,32,118,101,114,116,40,86,101,114,116,101,120,32,118, -41,13,10,9,9,123,13,10,9,9,9,114,101,116,117,114,110,32,118,59, -13,10,9,9,125,13,10,9,9,35,69,78,68,95,86,69,82,84,69,88, -95,83,72,65,68,69,82,13,10,9,9,35,70,82,65,71,77,69,78,84, -95,83,72,65,68,69,82,13,10,9,9,67,111,108,111,114,32,102,114,97, -103,40,67,111,108,111,114,32,99,111,108,44,32,84,101,120,116,117,114,101, -32,116,101,120,44,32,86,101,114,116,101,120,32,118,41,13,10,9,9,123, -13,10,9,9,9,114,101,116,117,114,110,32,99,111,108,32,42,32,116,101, -120,101,108,40,116,101,120,44,32,118,46,117,118,41,59,13,10,9,9,125, -13,10,9,9,35,69,78,68,95,70,82,65,71,77,69,78,84,95,83,72, -65,68,69,82,13,10,9,93,93,13,10,9,106,103,46,83,104,97,100,101, -114,115,46,83,112,114,105,116,101,66,97,116,99,104,32,61,32,106,103,46, -110,101,119,83,104,97,100,101,114,91,91,13,10,9,9,35,86,69,82,84, -69,88,95,83,72,65,68,69,82,13,10,9,9,86,101,114,116,101,120,32, -118,101,114,116,40,86,101,114,116,101,120,32,118,41,13,10,9,9,123,13, -10,9,9,9,114,101,116,117,114,110,32,118,59,13,10,9,9,125,13,10, -9,9,35,69,78,68,95,86,69,82,84,69,88,95,83,72,65,68,69,82, -13,10,9,9,35,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82, -13,10,9,9,67,111,108,111,114,32,102,114,97,103,40,67,111,108,111,114, -32,99,111,108,44,32,84,101,120,116,117,114,101,32,116,101,120,44,32,86, -101,114,116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101, -116,117,114,110,32,99,111,108,32,42,32,116,101,120,101,108,40,116,101,120, -44,32,118,46,117,118,41,59,13,10,9,9,125,13,10,9,9,35,69,78, -68,95,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,13,10,9, -93,93,13,10,32,32,32,32,106,103,46,83,104,97,100,101,114,115,46,83, -104,97,112,101,32,61,32,106,103,46,110,101,119,83,104,97,100,101,114,91, -91,13,10,32,32,32,32,32,32,32,32,35,86,69,82,84,69,88,95,83, -72,65,68,69,82,13,10,9,32,32,32,32,86,101,114,116,101,120,32,118, -101,114,116,40,86,101,114,116,101,120,32,118,41,13,10,9,32,32,32,32, -123,13,10,9,9,32,32,32,32,114,101,116,117,114,110,32,118,59,13,10, -9,32,32,32,32,125,13,10,9,32,32,32,32,35,69,78,68,95,86,69, -82,84,69,88,95,83,72,65,68,69,82,13,10,9,32,32,32,32,35,70, -82,65,71,77,69,78,84,95,83,72,65,68,69,82,13,10,9,32,32,32, -32,67,111,108,111,114,32,102,114,97,103,40,67,111,108,111,114,32,99,111, -108,44,32,84,101,120,116,117,114,101,32,116,101,120,44,32,86,101,114,116, -101,120,32,118,41,13,10,9,32,32,32,32,123,13,10,9,9,32,32,32, -32,114,101,116,117,114,110,32,99,111,108,59,13,10,9,32,32,32,32,125, -13,10,9,32,32,32,32,35,69,78,68,95,70,82,65,71,77,69,78,84, -95,83,72,65,68,69,82,13,10,32,32,32,32,93,93,13,10,32,32,32, -32,106,103,46,83,104,97,100,101,114,115,46,77,101,115,104,32,61,32,106, -103,46,110,101,119,83,104,97,100,101,114,91,91,32,13,10,32,32,32,32, -32,32,32,9,35,86,69,82,84,69,88,95,83,72,65,68,69,82,13,10, -32,32,32,32,32,32,32,32,105,110,32,86,101,99,52,32,99,111,108,111, -114,59,13,10,9,9,86,101,114,116,101,120,32,118,101,114,116,40,86,101, +114,110,32,118,59,13,10,9,9,125,13,10,9,9,35,69,78,68,95,86, +69,82,84,69,88,95,83,72,65,68,69,82,13,10,9,9,35,70,82,65, +71,77,69,78,84,95,83,72,65,68,69,82,13,10,9,9,67,111,108,111, +114,32,102,114,97,103,40,67,111,108,111,114,32,99,111,108,44,32,84,101, +120,116,117,114,101,32,116,101,120,44,32,86,101,114,116,101,120,32,118,41, +13,10,9,9,123,13,10,9,9,9,114,101,116,117,114,110,32,67,111,108, +111,114,40,99,111,108,46,114,103,98,44,32,116,101,120,101,108,40,116,101, +120,44,32,118,46,117,118,41,46,97,41,59,13,10,9,9,125,13,10,9, +9,35,69,78,68,95,70,82,65,71,77,69,78,84,95,83,72,65,68,69, +82,13,10,9,93,93,13,10,9,106,103,46,83,104,97,100,101,114,115,46, +84,101,120,116,117,114,101,32,61,32,106,103,46,110,101,119,83,104,97,100, +101,114,91,91,13,10,9,9,35,86,69,82,84,69,88,95,83,72,65,68, +69,82,13,10,9,9,86,101,114,116,101,120,32,118,101,114,116,40,86,101, 114,116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101,116, 117,114,110,32,118,59,13,10,9,9,125,13,10,9,9,35,69,78,68,95, 86,69,82,84,69,88,95,83,72,65,68,69,82,13,10,9,9,35,70,82, @@ -116,25 +57,52 @@ static char graphics_lua[] = { 101,120,116,117,114,101,32,116,101,120,44,32,86,101,114,116,101,120,32,118, 41,13,10,9,9,123,13,10,9,9,9,114,101,116,117,114,110,32,99,111, 108,32,42,32,116,101,120,101,108,40,116,101,120,44,32,118,46,117,118,41, -32,42,32,118,46,99,111,108,111,114,59,13,10,9,9,125,13,10,9,9, -35,69,78,68,95,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82, -32,13,10,32,32,32,32,93,93,13,10,9,106,103,46,83,104,97,100,101, -114,115,46,68,101,102,97,117,108,116,32,61,32,106,103,46,110,101,119,83, -104,97,100,101,114,91,91,13,10,9,9,35,86,69,82,84,69,88,95,83, -72,65,68,69,82,13,10,9,9,86,101,114,116,101,120,32,118,101,114,116, -40,86,101,114,116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9, -114,101,116,117,114,110,32,118,59,13,10,9,9,125,13,10,9,9,35,69, -78,68,95,86,69,82,84,69,88,95,83,72,65,68,69,82,13,10,9,9, -35,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,13,10,9,9, -67,111,108,111,114,32,102,114,97,103,40,67,111,108,111,114,32,99,111,108, -44,32,84,101,120,116,117,114,101,32,116,101,120,44,32,86,101,114,116,101, -120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101,116,117,114,110, -32,99,111,108,32,42,32,116,101,120,101,108,40,116,101,120,44,32,118,46, -117,118,41,59,13,10,9,9,125,13,10,9,9,35,69,78,68,95,70,82, -65,71,77,69,78,84,95,83,72,65,68,69,82,13,10,9,93,93,13,10, -32,32,32,32,106,103,46,83,104,97,100,101,114,115,46,69,114,114,111,114, -32,61,32,106,103,46,110,101,119,83,104,97,100,101,114,91,91,13,10,32, +59,13,10,9,9,125,13,10,9,9,35,69,78,68,95,70,82,65,71,77, +69,78,84,95,83,72,65,68,69,82,13,10,9,93,93,13,10,9,106,103, +46,83,104,97,100,101,114,115,46,83,112,114,105,116,101,32,61,32,106,103, +46,110,101,119,83,104,97,100,101,114,91,91,13,10,9,9,35,86,69,82, +84,69,88,95,83,72,65,68,69,82,13,10,9,9,86,101,114,116,101,120, +32,118,101,114,116,40,86,101,114,116,101,120,32,118,41,13,10,9,9,123, +13,10,9,9,9,114,101,116,117,114,110,32,118,59,13,10,9,9,125,13, +10,9,9,35,69,78,68,95,86,69,82,84,69,88,95,83,72,65,68,69, +82,13,10,9,9,35,70,82,65,71,77,69,78,84,95,83,72,65,68,69, +82,13,10,9,9,67,111,108,111,114,32,102,114,97,103,40,67,111,108,111, +114,32,99,111,108,44,32,84,101,120,116,117,114,101,32,116,101,120,44,32, +86,101,114,116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9,114, +101,116,117,114,110,32,99,111,108,32,42,32,116,101,120,101,108,40,116,101, +120,44,32,118,46,117,118,41,59,13,10,9,9,125,13,10,9,9,35,69, +78,68,95,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,13,10, +9,93,93,13,10,9,106,103,46,83,104,97,100,101,114,115,46,83,112,114, +105,116,101,66,97,116,99,104,32,61,32,106,103,46,110,101,119,83,104,97, +100,101,114,91,91,13,10,9,9,35,86,69,82,84,69,88,95,83,72,65, +68,69,82,13,10,9,9,86,101,114,116,101,120,32,118,101,114,116,40,86, +101,114,116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101, +116,117,114,110,32,118,59,13,10,9,9,125,13,10,9,9,35,69,78,68, +95,86,69,82,84,69,88,95,83,72,65,68,69,82,13,10,9,9,35,70, +82,65,71,77,69,78,84,95,83,72,65,68,69,82,13,10,9,9,67,111, +108,111,114,32,102,114,97,103,40,67,111,108,111,114,32,99,111,108,44,32, +84,101,120,116,117,114,101,32,116,101,120,44,32,86,101,114,116,101,120,32, +118,41,13,10,9,9,123,13,10,9,9,9,114,101,116,117,114,110,32,99, +111,108,32,42,32,116,101,120,101,108,40,116,101,120,44,32,118,46,117,118, +41,59,13,10,9,9,125,13,10,9,9,35,69,78,68,95,70,82,65,71, +77,69,78,84,95,83,72,65,68,69,82,13,10,9,93,93,13,10,32,32, +106,103,46,83,104,97,100,101,114,115,46,83,104,97,112,101,32,61,32,106, +103,46,110,101,119,83,104,97,100,101,114,91,91,13,10,32,32,32,32,35, +86,69,82,84,69,88,95,83,72,65,68,69,82,13,10,9,32,32,86,101, +114,116,101,120,32,118,101,114,116,40,86,101,114,116,101,120,32,118,41,13, +10,9,32,32,123,13,10,9,9,32,32,114,101,116,117,114,110,32,118,59, +13,10,9,32,32,125,13,10,9,32,32,35,69,78,68,95,86,69,82,84, +69,88,95,83,72,65,68,69,82,13,10,9,32,32,35,70,82,65,71,77, +69,78,84,95,83,72,65,68,69,82,13,10,9,32,32,67,111,108,111,114, +32,102,114,97,103,40,67,111,108,111,114,32,99,111,108,44,32,84,101,120, +116,117,114,101,32,116,101,120,44,32,86,101,114,116,101,120,32,118,41,13, +10,9,32,32,123,13,10,9,9,32,32,114,101,116,117,114,110,32,99,111, +108,59,13,10,9,32,32,125,13,10,9,32,32,35,69,78,68,95,70,82, +65,71,77,69,78,84,95,83,72,65,68,69,82,13,10,32,32,93,93,13, +10,32,32,106,103,46,83,104,97,100,101,114,115,46,77,101,115,104,32,61, +32,106,103,46,110,101,119,83,104,97,100,101,114,91,91,32,13,10,32,32, 32,32,32,9,35,86,69,82,84,69,88,95,83,72,65,68,69,82,13,10, +32,32,32,32,105,110,32,86,101,99,52,32,99,111,108,111,114,59,13,10, 9,9,86,101,114,116,101,120,32,118,101,114,116,40,86,101,114,116,101,120, 32,118,41,13,10,9,9,123,13,10,9,9,9,114,101,116,117,114,110,32, 118,59,13,10,9,9,125,13,10,9,9,35,69,78,68,95,86,69,82,84, @@ -142,68 +110,92 @@ static char graphics_lua[] = { 78,84,95,83,72,65,68,69,82,13,10,9,9,67,111,108,111,114,32,102, 114,97,103,40,67,111,108,111,114,32,99,111,108,44,32,84,101,120,116,117, 114,101,32,116,101,120,44,32,86,101,114,116,101,120,32,118,41,13,10,9, -9,123,13,10,9,9,9,114,101,116,117,114,110,32,67,111,108,111,114,40, -49,44,32,48,44,32,49,44,32,49,41,59,13,10,9,9,125,13,10,9, -9,35,69,78,68,95,70,82,65,71,77,69,78,84,95,83,72,65,68,69, -82,13,10,32,32,32,32,93,93,13,10,101,110,100,13,10,13,10,108,111, -99,97,108,32,95,105,110,105,116,32,61,32,106,103,46,105,110,105,116,13, -10,108,111,99,97,108,32,105,110,105,116,105,97,108,105,122,101,100,32,61, -32,102,97,108,115,101,13,10,106,103,46,105,110,105,116,32,61,32,102,117, -110,99,116,105,111,110,40,115,101,116,116,105,110,103,41,32,13,10,32,32, -32,32,105,102,32,105,110,105,116,105,97,108,105,122,101,100,32,116,104,101, -110,32,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,105, -110,105,116,105,97,108,105,122,101,100,13,10,32,32,32,32,101,110,100,13, -10,32,32,32,32,105,110,105,116,105,97,108,105,122,101,100,32,61,32,95, -105,110,105,116,40,115,101,116,116,105,110,103,41,13,10,32,32,32,32,105, -102,32,105,110,105,116,105,97,108,105,122,101,100,32,116,104,101,110,32,13, -10,32,32,32,32,32,32,32,32,99,111,109,112,105,108,101,66,117,105,108, -116,73,110,83,104,97,100,101,114,115,40,41,13,10,32,32,32,32,32,32, -32,32,106,103,46,117,115,101,83,104,97,100,101,114,40,106,103,46,83,104, -97,100,101,114,115,46,68,101,102,97,117,108,116,41,13,10,32,32,32,32, -101,110,100,13,10,32,32,32,32,114,101,116,117,114,110,32,105,110,105,116, -105,97,108,105,122,101,100,32,13,10,101,110,100,13,10,13,10,45,45,32, -82,101,115,101,116,32,97,108,108,32,97,116,116,114,105,98,117,116,101,115, -32,116,111,32,100,101,102,97,117,108,116,32,118,97,108,117,101,46,13,10, -106,103,46,114,101,115,101,116,32,61,32,102,117,110,99,116,105,111,110,40, -41,13,10,32,32,32,32,106,103,46,115,101,116,67,111,108,111,114,40,50, -53,53,44,32,50,53,53,44,32,50,53,53,44,32,50,53,53,41,13,10, -32,32,32,32,106,103,46,115,101,116,67,108,101,97,114,67,111,108,111,114, -40,48,44,32,48,44,32,48,44,32,48,41,13,10,32,32,32,32,106,103, -46,99,108,101,97,114,40,41,13,10,32,32,32,32,106,103,46,117,110,115, -101,116,70,111,110,116,40,41,13,10,32,32,32,32,106,103,46,117,110,117, -115,101,83,104,97,100,101,114,40,41,13,10,101,110,100,13,10,13,10,106, -103,46,117,110,117,115,101,83,104,97,100,101,114,32,61,32,102,117,110,99, -116,105,111,110,40,41,13,10,32,32,32,32,106,103,46,117,115,101,83,104, -97,100,101,114,40,106,103,46,83,104,97,100,101,114,115,46,68,101,102,97, -117,108,116,41,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,95, -110,101,119,83,104,97,100,101,114,32,61,32,106,103,46,110,101,119,83,104, -97,100,101,114,13,10,13,10,106,103,46,110,101,119,83,104,97,100,101,114, -32,61,32,102,117,110,99,116,105,111,110,40,112,114,111,103,114,97,109,41, -32,13,10,32,32,32,32,108,111,99,97,108,32,115,104,97,100,101,114,32, -61,32,95,110,101,119,83,104,97,100,101,114,40,112,114,111,103,114,97,109, -41,13,10,32,32,32,32,105,102,32,115,104,97,100,101,114,32,61,61,32, -110,105,108,32,116,104,101,110,32,13,10,32,32,32,32,32,32,32,32,106, -105,110,46,108,111,103,46,101,114,114,111,114,40,34,67,111,109,112,105,108, -101,32,115,104,97,100,101,114,32,102,97,105,108,101,100,58,92,110,34,32, -46,46,32,100,101,98,117,103,46,116,114,97,99,101,98,97,99,107,40,41, -41,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,106,103, -46,83,104,97,100,101,114,115,46,69,114,114,111,114,13,10,32,32,32,32, -101,108,115,101,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110, -32,115,104,97,100,101,114,13,10,32,32,32,32,101,110,100,13,10,101,110, +9,123,13,10,9,9,9,114,101,116,117,114,110,32,99,111,108,32,42,32, +116,101,120,101,108,40,116,101,120,44,32,118,46,117,118,41,32,42,32,118, +46,99,111,108,111,114,59,13,10,9,9,125,13,10,9,9,35,69,78,68, +95,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,32,13,10,32, +32,93,93,13,10,9,106,103,46,83,104,97,100,101,114,115,46,68,101,102, +97,117,108,116,32,61,32,106,103,46,110,101,119,83,104,97,100,101,114,91, +91,13,10,9,9,35,86,69,82,84,69,88,95,83,72,65,68,69,82,13, +10,9,9,86,101,114,116,101,120,32,118,101,114,116,40,86,101,114,116,101, +120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101,116,117,114,110, +32,118,59,13,10,9,9,125,13,10,9,9,35,69,78,68,95,86,69,82, +84,69,88,95,83,72,65,68,69,82,13,10,9,9,35,70,82,65,71,77, +69,78,84,95,83,72,65,68,69,82,13,10,9,9,67,111,108,111,114,32, +102,114,97,103,40,67,111,108,111,114,32,99,111,108,44,32,84,101,120,116, +117,114,101,32,116,101,120,44,32,86,101,114,116,101,120,32,118,41,13,10, +9,9,123,13,10,9,9,9,114,101,116,117,114,110,32,99,111,108,32,42, +32,116,101,120,101,108,40,116,101,120,44,32,118,46,117,118,41,59,13,10, +9,9,125,13,10,9,9,35,69,78,68,95,70,82,65,71,77,69,78,84, +95,83,72,65,68,69,82,13,10,9,93,93,13,10,32,32,106,103,46,83, +104,97,100,101,114,115,46,69,114,114,111,114,32,61,32,106,103,46,110,101, +119,83,104,97,100,101,114,91,91,13,10,32,32,9,35,86,69,82,84,69, +88,95,83,72,65,68,69,82,13,10,9,9,86,101,114,116,101,120,32,118, +101,114,116,40,86,101,114,116,101,120,32,118,41,13,10,9,9,123,13,10, +9,9,9,114,101,116,117,114,110,32,118,59,13,10,9,9,125,13,10,9, +9,35,69,78,68,95,86,69,82,84,69,88,95,83,72,65,68,69,82,13, +10,9,9,35,70,82,65,71,77,69,78,84,95,83,72,65,68,69,82,13, +10,9,9,67,111,108,111,114,32,102,114,97,103,40,67,111,108,111,114,32, +99,111,108,44,32,84,101,120,116,117,114,101,32,116,101,120,44,32,86,101, +114,116,101,120,32,118,41,13,10,9,9,123,13,10,9,9,9,114,101,116, +117,114,110,32,67,111,108,111,114,40,49,44,32,48,44,32,49,44,32,49, +41,59,13,10,9,9,125,13,10,9,9,35,69,78,68,95,70,82,65,71, +77,69,78,84,95,83,72,65,68,69,82,13,10,32,32,93,93,13,10,101, +110,100,13,10,13,10,108,111,99,97,108,32,95,105,110,105,116,32,61,32, +106,103,46,105,110,105,116,13,10,108,111,99,97,108,32,105,110,105,116,105, +97,108,105,122,101,100,32,61,32,102,97,108,115,101,13,10,106,103,46,105, +110,105,116,32,61,32,102,117,110,99,116,105,111,110,40,115,101,116,116,105, +110,103,41,32,13,10,32,32,105,102,32,105,110,105,116,105,97,108,105,122, +101,100,32,116,104,101,110,32,13,10,32,32,32,32,114,101,116,117,114,110, +32,105,110,105,116,105,97,108,105,122,101,100,13,10,32,32,101,110,100,13, +10,32,32,105,110,105,116,105,97,108,105,122,101,100,32,61,32,95,105,110, +105,116,40,115,101,116,116,105,110,103,41,13,10,32,32,105,102,32,105,110, +105,116,105,97,108,105,122,101,100,32,116,104,101,110,32,13,10,32,32,32, +32,99,111,109,112,105,108,101,66,117,105,108,116,73,110,83,104,97,100,101, +114,115,40,41,13,10,32,32,32,32,106,103,46,117,115,101,83,104,97,100, +101,114,40,106,103,46,83,104,97,100,101,114,115,46,68,101,102,97,117,108, +116,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32, +105,110,105,116,105,97,108,105,122,101,100,32,13,10,101,110,100,13,10,13, +10,45,45,32,82,101,115,101,116,32,97,108,108,32,97,116,116,114,105,98, +117,116,101,115,32,116,111,32,100,101,102,97,117,108,116,32,118,97,108,117, +101,46,13,10,106,103,46,114,101,115,101,116,32,61,32,102,117,110,99,116, +105,111,110,40,41,13,10,32,32,106,103,46,115,101,116,67,111,108,111,114, +40,50,53,53,44,32,50,53,53,44,32,50,53,53,44,32,50,53,53,41, +13,10,32,32,106,103,46,115,101,116,67,108,101,97,114,67,111,108,111,114, +40,48,44,32,48,44,32,48,44,32,48,41,13,10,32,32,106,103,46,99, +108,101,97,114,40,41,13,10,32,32,106,103,46,117,110,115,101,116,70,111, +110,116,40,41,13,10,32,32,106,103,46,117,110,117,115,101,83,104,97,100, +101,114,40,41,13,10,101,110,100,13,10,13,10,106,103,46,117,110,117,115, +101,83,104,97,100,101,114,32,61,32,102,117,110,99,116,105,111,110,40,41, +13,10,32,32,106,103,46,117,115,101,83,104,97,100,101,114,40,106,103,46, +83,104,97,100,101,114,115,46,68,101,102,97,117,108,116,41,13,10,101,110, 100,13,10,13,10,108,111,99,97,108,32,95,110,101,119,83,104,97,100,101, -114,102,32,61,32,106,103,46,110,101,119,83,104,97,100,101,114,102,13,10, -13,10,106,103,46,110,101,119,83,104,97,100,101,114,102,32,61,32,102,117, -110,99,116,105,111,110,40,102,105,108,101,41,13,10,32,32,32,32,108,111, -99,97,108,32,115,104,97,100,101,114,32,61,32,95,110,101,119,83,104,97, -100,101,114,102,40,102,105,108,101,41,13,10,32,32,32,32,105,102,32,115, -104,97,100,101,114,32,61,61,32,110,105,108,32,116,104,101,110,32,13,10, -32,32,32,32,32,32,32,32,106,105,110,46,108,111,103,46,101,114,114,111, -114,40,34,67,111,109,112,105,108,101,32,115,104,97,100,101,114,32,102,97, -105,108,101,100,58,92,110,34,32,46,46,32,100,101,98,117,103,46,116,114, -97,99,101,98,97,99,107,40,41,41,13,10,32,32,32,32,32,32,32,32, +114,32,61,32,106,103,46,110,101,119,83,104,97,100,101,114,13,10,13,10, +106,103,46,110,101,119,83,104,97,100,101,114,32,61,32,102,117,110,99,116, +105,111,110,40,112,114,111,103,114,97,109,41,32,13,10,32,32,108,111,99, +97,108,32,115,104,97,100,101,114,32,61,32,95,110,101,119,83,104,97,100, +101,114,40,112,114,111,103,114,97,109,41,13,10,32,32,105,102,32,115,104, +97,100,101,114,32,61,61,32,110,105,108,32,116,104,101,110,32,13,10,32, +32,32,32,106,105,110,46,108,111,103,46,101,114,114,111,114,40,34,67,111, +109,112,105,108,101,32,115,104,97,100,101,114,32,102,97,105,108,101,100,58, +92,110,34,32,46,46,32,100,101,98,117,103,46,116,114,97,99,101,98,97, +99,107,40,41,41,13,10,32,32,32,32,114,101,116,117,114,110,32,106,103, +46,83,104,97,100,101,114,115,46,69,114,114,111,114,13,10,32,32,101,108, +115,101,13,10,32,32,32,32,114,101,116,117,114,110,32,115,104,97,100,101, +114,13,10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,108,111,99, +97,108,32,95,110,101,119,83,104,97,100,101,114,102,32,61,32,106,103,46, +110,101,119,83,104,97,100,101,114,102,13,10,13,10,106,103,46,110,101,119, +83,104,97,100,101,114,102,32,61,32,102,117,110,99,116,105,111,110,40,102, +105,108,101,41,13,10,32,32,108,111,99,97,108,32,115,104,97,100,101,114, +32,61,32,95,110,101,119,83,104,97,100,101,114,102,40,102,105,108,101,41, +13,10,32,32,105,102,32,115,104,97,100,101,114,32,61,61,32,110,105,108, +32,116,104,101,110,32,13,10,32,32,32,32,106,105,110,46,108,111,103,46, +101,114,114,111,114,40,34,67,111,109,112,105,108,101,32,115,104,97,100,101, +114,32,102,97,105,108,101,100,58,92,110,34,32,46,46,32,100,101,98,117, +103,46,116,114,97,99,101,98,97,99,107,40,41,41,13,10,32,32,32,32, 114,101,116,117,114,110,32,106,103,46,83,104,97,100,101,114,115,46,69,114, -114,111,114,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32, -32,32,32,114,101,116,117,114,110,32,115,104,97,100,101,114,13,10,32,32, -32,32,101,110,100,13,10,101,110,100,13,10,0 +114,111,114,13,10,32,32,101,108,115,101,13,10,32,32,32,32,114,101,116, +117,114,110,32,115,104,97,100,101,114,13,10,32,32,101,110,100,13,10,101, +110,100,13,10,0 }; diff --git a/src/libjin-lua/scripts/keyboard/keyboard.lua b/src/libjin-lua/scripts/keyboard/keyboard.lua index fa42b3a..9b12148 100644 --- a/src/libjin-lua/scripts/keyboard/keyboard.lua +++ b/src/libjin-lua/scripts/keyboard/keyboard.lua @@ -4,9 +4,9 @@ jin.keyboard = jin.keyboard or {} local keys = {} function jin.keyboard.isPressed(k) - return keys[k] + return keys[k] end function jin.keyboard.set(k, status) - keys[k] = status + keys[k] = status end diff --git a/src/libjin-lua/scripts/keyboard/keyboard.lua.h b/src/libjin-lua/scripts/keyboard/keyboard.lua.h index a202c41..24db79b 100644 --- a/src/libjin-lua/scripts/keyboard/keyboard.lua.h +++ b/src/libjin-lua/scripts/keyboard/keyboard.lua.h @@ -4,11 +4,11 @@ static char keyboard_lua[] = { 46,107,101,121,98,111,97,114,100,32,111,114,32,123,125,32,13,10,13,10, 108,111,99,97,108,32,107,101,121,115,32,61,32,123,125,32,13,10,13,10, 102,117,110,99,116,105,111,110,32,106,105,110,46,107,101,121,98,111,97,114, -100,46,105,115,80,114,101,115,115,101,100,40,107,41,32,13,10,32,32,32, -32,114,101,116,117,114,110,32,107,101,121,115,91,107,93,13,10,101,110,100, -32,32,13,10,13,10,102,117,110,99,116,105,111,110,32,106,105,110,46,107, -101,121,98,111,97,114,100,46,115,101,116,40,107,44,32,115,116,97,116,117, -115,41,32,13,10,32,32,32,32,107,101,121,115,91,107,93,32,61,32,115, -116,97,116,117,115,32,13,10,101,110,100,32,13,10,0 +100,46,105,115,80,114,101,115,115,101,100,40,107,41,32,13,10,32,32,114, +101,116,117,114,110,32,107,101,121,115,91,107,93,13,10,101,110,100,32,32, +13,10,13,10,102,117,110,99,116,105,111,110,32,106,105,110,46,107,101,121, +98,111,97,114,100,46,115,101,116,40,107,44,32,115,116,97,116,117,115,41, +32,13,10,32,32,107,101,121,115,91,107,93,32,61,32,115,116,97,116,117, +115,32,13,10,101,110,100,32,13,10,0 }; diff --git a/src/libjin-lua/scripts/log.lua b/src/libjin-lua/scripts/log.lua index 02ba234..a0e2310 100644 --- a/src/libjin-lua/scripts/log.lua +++ b/src/libjin-lua/scripts/log.lua @@ -10,75 +10,75 @@ log.level = "trace" local modes = { - { name = "trace", color = "\27[34m", }, - { name = "debug", color = "\27[36m", }, - { name = "info", color = "\27[32m", }, - { name = "warn", color = "\27[33m", }, - { name = "error", color = "\27[31m", }, - { name = "fatal", color = "\27[35m", }, + { name = "trace", color = "\27[34m", }, + { name = "debug", color = "\27[36m", }, + { name = "info", color = "\27[32m", }, + { name = "warn", color = "\27[33m", }, + { name = "error", color = "\27[31m", }, + { name = "fatal", color = "\27[35m", }, } local levels = {} for i, v in ipairs(modes) do - levels[v.name] = i + levels[v.name] = i end local round = function(x, increment) - increment = increment or 1 - x = x / increment - return (x > 0 and math.floor(x + .5) or math.ceil(x - .5)) * increment + increment = increment or 1 + x = x / increment + return (x > 0 and math.floor(x + .5) or math.ceil(x - .5)) * increment end local _tostring = tostring local tostring = function(...) - local t = {} - for i = 1, select('#', ...) do - local x = select(i, ...) - if type(x) == "number" then - x = round(x, .01) - end - t[#t + 1] = _tostring(x) + local t = {} + for i = 1, select('#', ...) do + local x = select(i, ...) + if type(x) == "number" then + x = round(x, .01) end - return table.concat(t, " ") + t[#t + 1] = _tostring(x) + end + return table.concat(t, " ") end for i, x in ipairs(modes) do - local nameupper = x.name:upper() - log[x.name] = function(...) - - -- Return early if we're below the log level - if i < levels[log.level] then - return - end - - local msg = tostring(...) - local info = debug.getinfo(2, "Sl") - local lineinfo = info.short_src .. ":" .. info.currentline - - -- Output to console - print(string.format("%s[%-6s%s]%s %s: %s", - log.usecolor and x.color or "", - nameupper, - os.date("%H:%M:%S"), - log.usecolor and "\27[0m" or "", - lineinfo, - msg)) - - -- Output to log file - if log.outfile then - local fp = io.open(log.outfile, "a") - local str = string.format("[%-6s%s] %s: %s\n", - nameupper, os.date(), lineinfo, msg) - fp:write(str) - fp:close() - end + local nameupper = x.name:upper() + log[x.name] = function(...) + + -- Return early if we're below the log level + if i < levels[log.level] then + return + end + local msg = tostring(...) + local info = debug.getinfo(2, "Sl") + local lineinfo = info.short_src .. ":" .. info.currentline + + -- Output to console + print(string.format("%s[%-6s%s]%s %s: %s", + log.usecolor and x.color or "", + nameupper, + os.date("%H:%M:%S"), + log.usecolor and "\27[0m" or "", + lineinfo, + msg)) + + -- Output to log file + if log.outfile then + local fp = io.open(log.outfile, "a") + local str = string.format("[%-6s%s] %s: %s\n", + nameupper, os.date(), lineinfo, msg) + fp:write(str) + fp:close() end + + end end ------------------------------------------------------------------------------------------------------------------ diff --git a/src/libjin-lua/scripts/log.lua.h b/src/libjin-lua/scripts/log.lua.h index cfedd95..bfa872c 100644 --- a/src/libjin-lua/scripts/log.lua.h +++ b/src/libjin-lua/scripts/log.lua.h @@ -19,124 +19,108 @@ static char log_lua[] = { 61,32,102,97,108,115,101,13,10,108,111,103,46,111,117,116,102,105,108,101, 32,61,32,110,105,108,13,10,108,111,103,46,108,101,118,101,108,32,61,32, 34,116,114,97,99,101,34,13,10,13,10,13,10,108,111,99,97,108,32,109, -111,100,101,115,32,61,32,123,13,10,32,32,32,32,123,32,110,97,109,101, -32,61,32,34,116,114,97,99,101,34,44,32,99,111,108,111,114,32,61,32, -34,92,50,55,91,51,52,109,34,44,32,125,44,13,10,32,32,32,32,123, -32,110,97,109,101,32,61,32,34,100,101,98,117,103,34,44,32,99,111,108, -111,114,32,61,32,34,92,50,55,91,51,54,109,34,44,32,125,44,13,10, -32,32,32,32,123,32,110,97,109,101,32,61,32,34,105,110,102,111,34,44, -32,32,32,32,99,111,108,111,114,32,61,32,34,92,50,55,91,51,50,109, -34,44,32,125,44,13,10,32,32,32,32,123,32,110,97,109,101,32,61,32, -34,119,97,114,110,34,44,32,32,32,32,99,111,108,111,114,32,61,32,34, -92,50,55,91,51,51,109,34,44,32,125,44,13,10,32,32,32,32,123,32, -110,97,109,101,32,61,32,34,101,114,114,111,114,34,44,32,99,111,108,111, -114,32,61,32,34,92,50,55,91,51,49,109,34,44,32,125,44,13,10,32, -32,32,32,123,32,110,97,109,101,32,61,32,34,102,97,116,97,108,34,44, -32,99,111,108,111,114,32,61,32,34,92,50,55,91,51,53,109,34,44,32, -125,44,13,10,125,13,10,13,10,13,10,108,111,99,97,108,32,108,101,118, -101,108,115,32,61,32,123,125,13,10,102,111,114,32,105,44,32,118,32,105, -110,32,105,112,97,105,114,115,40,109,111,100,101,115,41,32,100,111,13,10, -32,32,32,32,108,101,118,101,108,115,91,118,46,110,97,109,101,93,32,61, -32,105,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,114, -111,117,110,100,32,61,32,102,117,110,99,116,105,111,110,40,120,44,32,105, -110,99,114,101,109,101,110,116,41,13,10,32,32,32,32,105,110,99,114,101, +111,100,101,115,32,61,32,123,13,10,32,32,123,32,110,97,109,101,32,61, +32,34,116,114,97,99,101,34,44,32,99,111,108,111,114,32,61,32,34,92, +50,55,91,51,52,109,34,44,32,125,44,13,10,32,32,123,32,110,97,109, +101,32,61,32,34,100,101,98,117,103,34,44,32,99,111,108,111,114,32,61, +32,34,92,50,55,91,51,54,109,34,44,32,125,44,13,10,32,32,123,32, +110,97,109,101,32,61,32,34,105,110,102,111,34,44,32,32,99,111,108,111, +114,32,61,32,34,92,50,55,91,51,50,109,34,44,32,125,44,13,10,32, +32,123,32,110,97,109,101,32,61,32,34,119,97,114,110,34,44,32,32,99, +111,108,111,114,32,61,32,34,92,50,55,91,51,51,109,34,44,32,125,44, +13,10,32,32,123,32,110,97,109,101,32,61,32,34,101,114,114,111,114,34, +44,32,99,111,108,111,114,32,61,32,34,92,50,55,91,51,49,109,34,44, +32,125,44,13,10,32,32,123,32,110,97,109,101,32,61,32,34,102,97,116, +97,108,34,44,32,99,111,108,111,114,32,61,32,34,92,50,55,91,51,53, +109,34,44,32,125,44,13,10,125,13,10,13,10,13,10,108,111,99,97,108, +32,108,101,118,101,108,115,32,61,32,123,125,13,10,102,111,114,32,105,44, +32,118,32,105,110,32,105,112,97,105,114,115,40,109,111,100,101,115,41,32, +100,111,13,10,32,32,108,101,118,101,108,115,91,118,46,110,97,109,101,93, +32,61,32,105,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108, +32,114,111,117,110,100,32,61,32,102,117,110,99,116,105,111,110,40,120,44, +32,105,110,99,114,101,109,101,110,116,41,13,10,32,32,105,110,99,114,101, 109,101,110,116,32,61,32,105,110,99,114,101,109,101,110,116,32,111,114,32, -49,13,10,32,32,32,32,120,32,61,32,120,32,47,32,105,110,99,114,101, -109,101,110,116,13,10,32,32,32,32,114,101,116,117,114,110,32,40,120,32, -62,32,48,32,97,110,100,32,109,97,116,104,46,102,108,111,111,114,40,120, -32,43,32,46,53,41,32,111,114,32,109,97,116,104,46,99,101,105,108,40, -120,32,45,32,46,53,41,41,32,42,32,105,110,99,114,101,109,101,110,116, -13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,95,116,111, -115,116,114,105,110,103,32,61,32,116,111,115,116,114,105,110,103,13,10,13, -10,108,111,99,97,108,32,116,111,115,116,114,105,110,103,32,61,32,102,117, -110,99,116,105,111,110,40,46,46,46,41,13,10,32,32,32,32,108,111,99, -97,108,32,116,32,61,32,123,125,13,10,32,32,32,32,102,111,114,32,105, -32,61,32,49,44,32,115,101,108,101,99,116,40,39,35,39,44,32,46,46, -46,41,32,100,111,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108, -32,120,32,61,32,115,101,108,101,99,116,40,105,44,32,46,46,46,41,13, -10,32,32,32,32,32,32,32,32,105,102,32,116,121,112,101,40,120,41,32, -61,61,32,34,110,117,109,98,101,114,34,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,32,32,32,32,120,32,61,32,114,111,117,110,100,40, -120,44,32,46,48,49,41,13,10,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,116,91,35,116,32,43,32,49,93,32, -61,32,95,116,111,115,116,114,105,110,103,40,120,41,13,10,32,32,32,32, -101,110,100,13,10,32,32,32,32,114,101,116,117,114,110,32,116,97,98,108, -101,46,99,111,110,99,97,116,40,116,44,32,34,32,34,41,13,10,101,110, -100,13,10,13,10,13,10,102,111,114,32,105,44,32,120,32,105,110,32,105, -112,97,105,114,115,40,109,111,100,101,115,41,32,100,111,13,10,32,32,32, -32,108,111,99,97,108,32,110,97,109,101,117,112,112,101,114,32,61,32,120, -46,110,97,109,101,58,117,112,112,101,114,40,41,13,10,32,32,32,32,108, -111,103,91,120,46,110,97,109,101,93,32,61,32,102,117,110,99,116,105,111, -110,40,46,46,46,41,13,10,32,32,32,32,32,32,32,32,13,10,32,32, -32,32,32,32,32,32,45,45,32,82,101,116,117,114,110,32,101,97,114,108, -121,32,105,102,32,119,101,39,114,101,32,98,101,108,111,119,32,116,104,101, -32,108,111,103,32,108,101,118,101,108,13,10,32,32,32,32,32,32,32,32, -105,102,32,105,32,60,32,108,101,118,101,108,115,91,108,111,103,46,108,101, -118,101,108,93,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32, -32,32,32,114,101,116,117,114,110,13,10,32,32,32,32,32,32,32,32,101, -110,100,13,10,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32, -109,115,103,32,61,32,116,111,115,116,114,105,110,103,40,46,46,46,41,13, -10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,105,110,102,111,32, -61,32,100,101,98,117,103,46,103,101,116,105,110,102,111,40,50,44,32,34, -83,108,34,41,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32, -108,105,110,101,105,110,102,111,32,61,32,105,110,102,111,46,115,104,111,114, -116,95,115,114,99,32,46,46,32,34,58,34,32,46,46,32,105,110,102,111, -46,99,117,114,114,101,110,116,108,105,110,101,13,10,13,10,32,32,32,32, -32,32,32,32,45,45,32,79,117,116,112,117,116,32,116,111,32,99,111,110, -115,111,108,101,13,10,32,32,32,32,32,32,32,32,112,114,105,110,116,40, +49,13,10,32,32,120,32,61,32,120,32,47,32,105,110,99,114,101,109,101, +110,116,13,10,32,32,114,101,116,117,114,110,32,40,120,32,62,32,48,32, +97,110,100,32,109,97,116,104,46,102,108,111,111,114,40,120,32,43,32,46, +53,41,32,111,114,32,109,97,116,104,46,99,101,105,108,40,120,32,45,32, +46,53,41,41,32,42,32,105,110,99,114,101,109,101,110,116,13,10,101,110, +100,13,10,13,10,13,10,108,111,99,97,108,32,95,116,111,115,116,114,105, +110,103,32,61,32,116,111,115,116,114,105,110,103,13,10,13,10,108,111,99, +97,108,32,116,111,115,116,114,105,110,103,32,61,32,102,117,110,99,116,105, +111,110,40,46,46,46,41,13,10,32,32,108,111,99,97,108,32,116,32,61, +32,123,125,13,10,32,32,102,111,114,32,105,32,61,32,49,44,32,115,101, +108,101,99,116,40,39,35,39,44,32,46,46,46,41,32,100,111,13,10,32, +32,32,32,108,111,99,97,108,32,120,32,61,32,115,101,108,101,99,116,40, +105,44,32,46,46,46,41,13,10,32,32,32,32,105,102,32,116,121,112,101, +40,120,41,32,61,61,32,34,110,117,109,98,101,114,34,32,116,104,101,110, +13,10,32,32,32,32,32,32,120,32,61,32,114,111,117,110,100,40,120,44, +32,46,48,49,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32, +116,91,35,116,32,43,32,49,93,32,61,32,95,116,111,115,116,114,105,110, +103,40,120,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114, +110,32,116,97,98,108,101,46,99,111,110,99,97,116,40,116,44,32,34,32, +34,41,13,10,101,110,100,13,10,13,10,13,10,102,111,114,32,105,44,32, +120,32,105,110,32,105,112,97,105,114,115,40,109,111,100,101,115,41,32,100, +111,13,10,32,32,108,111,99,97,108,32,110,97,109,101,117,112,112,101,114, +32,61,32,120,46,110,97,109,101,58,117,112,112,101,114,40,41,13,10,32, +32,108,111,103,91,120,46,110,97,109,101,93,32,61,32,102,117,110,99,116, +105,111,110,40,46,46,46,41,13,10,32,32,32,32,13,10,32,32,32,32, +45,45,32,82,101,116,117,114,110,32,101,97,114,108,121,32,105,102,32,119, +101,39,114,101,32,98,101,108,111,119,32,116,104,101,32,108,111,103,32,108, +101,118,101,108,13,10,32,32,32,32,105,102,32,105,32,60,32,108,101,118, +101,108,115,91,108,111,103,46,108,101,118,101,108,93,32,116,104,101,110,13, +10,32,32,32,32,32,32,114,101,116,117,114,110,13,10,32,32,32,32,101, +110,100,13,10,13,10,32,32,32,32,108,111,99,97,108,32,109,115,103,32, +61,32,116,111,115,116,114,105,110,103,40,46,46,46,41,13,10,32,32,32, +32,108,111,99,97,108,32,105,110,102,111,32,61,32,100,101,98,117,103,46, +103,101,116,105,110,102,111,40,50,44,32,34,83,108,34,41,13,10,32,32, +32,32,108,111,99,97,108,32,108,105,110,101,105,110,102,111,32,61,32,105, +110,102,111,46,115,104,111,114,116,95,115,114,99,32,46,46,32,34,58,34, +32,46,46,32,105,110,102,111,46,99,117,114,114,101,110,116,108,105,110,101, +13,10,13,10,32,32,32,32,45,45,32,79,117,116,112,117,116,32,116,111, +32,99,111,110,115,111,108,101,13,10,32,32,32,32,112,114,105,110,116,40, 115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,37,115,91,37,45, 54,115,37,115,93,37,115,32,37,115,58,32,37,115,34,44,13,10,32,32, 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,108,111,103,46,117,115,101,99,111,108,111,114,32,97,110,100,32,120, +46,99,111,108,111,114,32,111,114,32,34,34,44,13,10,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,110, +97,109,101,117,112,112,101,114,44,13,10,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,111,115,46,100,97, +116,101,40,34,37,72,58,37,77,58,37,83,34,41,44,13,10,32,32,32, 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,108,111,103,46,117,115,101,99,111,108,111,114,32,97, -110,100,32,120,46,99,111,108,111,114,32,111,114,32,34,34,44,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,110,97,109,101,117,112,112,101,114,44,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,111,115,46,100,97,116,101,40,34,37,72,58,37, -77,58,37,83,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,111,103, -46,117,115,101,99,111,108,111,114,32,97,110,100,32,34,92,50,55,91,48, -109,34,32,111,114,32,34,34,44,13,10,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,108,111,103,46,117,115,101,99,111,108,111,114,32,97,110,100,32,34,92, +50,55,91,48,109,34,32,111,114,32,34,34,44,13,10,32,32,32,32,32, 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108, 105,110,101,105,110,102,111,44,13,10,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,109,115,103,41,41,13, +10,13,10,32,32,32,32,45,45,32,79,117,116,112,117,116,32,116,111,32, +108,111,103,32,102,105,108,101,13,10,32,32,32,32,105,102,32,108,111,103, +46,111,117,116,102,105,108,101,32,116,104,101,110,13,10,32,32,32,32,32, +32,108,111,99,97,108,32,102,112,32,61,32,105,111,46,111,112,101,110,40, +108,111,103,46,111,117,116,102,105,108,101,44,32,34,97,34,41,13,10,32, +32,32,32,32,32,108,111,99,97,108,32,115,116,114,32,61,32,115,116,114, +105,110,103,46,102,111,114,109,97,116,40,34,91,37,45,54,115,37,115,93, +32,37,115,58,32,37,115,92,110,34,44,13,10,32,32,32,32,32,32,32, 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,109,115, -103,41,41,13,10,13,10,32,32,32,32,32,32,32,32,45,45,32,79,117, -116,112,117,116,32,116,111,32,108,111,103,32,102,105,108,101,13,10,32,32, -32,32,32,32,32,32,105,102,32,108,111,103,46,111,117,116,102,105,108,101, -32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,108, -111,99,97,108,32,102,112,32,61,32,105,111,46,111,112,101,110,40,108,111, -103,46,111,117,116,102,105,108,101,44,32,34,97,34,41,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,108,111,99,97,108,32,115,116,114,32,61, -32,115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,91,37,45,54, -115,37,115,93,32,37,115,58,32,37,115,92,110,34,44,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,110,97,109,101,117,112,112,101,114,44,32,111,115,46,100,97,116,101,40, -41,44,32,108,105,110,101,105,110,102,111,44,32,109,115,103,41,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,102,112,58,119,114,105,116,101,40, -115,116,114,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,112, -58,99,108,111,115,101,40,41,13,10,32,32,32,32,32,32,32,32,101,110, -100,13,10,13,10,32,32,32,32,101,110,100,13,10,101,110,100,13,10,13, -10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +32,32,32,32,32,110,97,109,101,117,112,112,101,114,44,32,111,115,46,100, +97,116,101,40,41,44,32,108,105,110,101,105,110,102,111,44,32,109,115,103, +41,13,10,32,32,32,32,32,32,102,112,58,119,114,105,116,101,40,115,116, +114,41,13,10,32,32,32,32,32,32,102,112,58,99,108,111,115,101,40,41, +13,10,32,32,32,32,101,110,100,13,10,13,10,32,32,101,110,100,13,10, +101,110,100,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32, -69,120,112,111,114,116,32,116,111,32,74,105,110,46,32,13,10,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,13,10,45,45,32,69,120,112,111,114,116,32,116,111,32,74,105,110,46, +32,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,106,105,110,46,108, -111,103,32,61,32,108,111,103,13,10,0 +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13, +10,106,105,110,46,108,111,103,32,61,32,108,111,103,13,10,0 }; diff --git a/src/libjin-lua/scripts/mouse/mouse.lua b/src/libjin-lua/scripts/mouse/mouse.lua index 1d3d8df..d8e5423 100644 --- a/src/libjin-lua/scripts/mouse/mouse.lua +++ b/src/libjin-lua/scripts/mouse/mouse.lua @@ -4,9 +4,9 @@ jin.mouse = jin.mouse or {} local button = {} function jin.mouse.isDown(btn) - return button[btn] + return button[btn] end function jin.mouse.set(btn, status) - button[btn] = status + button[btn] = status end diff --git a/src/libjin-lua/scripts/mouse/mouse.lua.h b/src/libjin-lua/scripts/mouse/mouse.lua.h index 455813f..b5f15ee 100644 --- a/src/libjin-lua/scripts/mouse/mouse.lua.h +++ b/src/libjin-lua/scripts/mouse/mouse.lua.h @@ -4,11 +4,11 @@ static char mouse_lua[] = { 117,115,101,32,111,114,32,123,125,32,13,10,13,10,108,111,99,97,108,32, 98,117,116,116,111,110,32,61,32,123,125,32,13,10,13,10,102,117,110,99, 116,105,111,110,32,106,105,110,46,109,111,117,115,101,46,105,115,68,111,119, -110,40,98,116,110,41,32,13,10,32,32,32,32,114,101,116,117,114,110,32, -98,117,116,116,111,110,91,98,116,110,93,13,10,101,110,100,32,13,10,13, -10,102,117,110,99,116,105,111,110,32,106,105,110,46,109,111,117,115,101,46, -115,101,116,40,98,116,110,44,32,115,116,97,116,117,115,41,32,13,10,32, -32,32,32,98,117,116,116,111,110,91,98,116,110,93,32,61,32,115,116,97, -116,117,115,13,10,101,110,100,32,13,10,0 +110,40,98,116,110,41,32,13,10,32,32,114,101,116,117,114,110,32,98,117, +116,116,111,110,91,98,116,110,93,13,10,101,110,100,32,13,10,13,10,102, +117,110,99,116,105,111,110,32,106,105,110,46,109,111,117,115,101,46,115,101, +116,40,98,116,110,44,32,115,116,97,116,117,115,41,32,13,10,32,32,98, +117,116,116,111,110,91,98,116,110,93,32,61,32,115,116,97,116,117,115,13, +10,101,110,100,32,13,10,0 }; diff --git a/src/libjin-lua/scripts/path/path.lua b/src/libjin-lua/scripts/path/path.lua index c6bcf41..e979114 100644 --- a/src/libjin-lua/scripts/path/path.lua +++ b/src/libjin-lua/scripts/path/path.lua @@ -6,5 +6,5 @@ jin.cwd = jin.args['cwd'] or '.' -- Get full path of a given path. function jin.path.full(path) - return jin.cwd .. '/' .. path + return jin.cwd .. '/' .. path end diff --git a/src/libjin-lua/scripts/path/path.lua.h b/src/libjin-lua/scripts/path/path.lua.h index f203ce6..f54f8a9 100644 --- a/src/libjin-lua/scripts/path/path.lua.h +++ b/src/libjin-lua/scripts/path/path.lua.h @@ -8,7 +8,7 @@ static char path_lua[] = { 32,102,117,108,108,32,112,97,116,104,32,111,102,32,97,32,103,105,118,101, 110,32,112,97,116,104,46,13,10,102,117,110,99,116,105,111,110,32,106,105, 110,46,112,97,116,104,46,102,117,108,108,40,112,97,116,104,41,13,10,32, -32,32,32,114,101,116,117,114,110,32,106,105,110,46,99,119,100,32,46,46, -32,39,47,39,32,46,46,32,112,97,116,104,13,10,101,110,100,13,10,0 +32,114,101,116,117,114,110,32,106,105,110,46,99,119,100,32,46,46,32,39, +47,39,32,46,46,32,112,97,116,104,13,10,101,110,100,13,10,0 }; diff --git a/src/libjin-lua/scripts/physics/physics.lua b/src/libjin-lua/scripts/physics/physics.lua index 05848aa..9b24a55 100644 --- a/src/libjin-lua/scripts/physics/physics.lua +++ b/src/libjin-lua/scripts/physics/physics.lua @@ -25,13 +25,13 @@ end local function assertType(desiredType, value, name) if type(value) ~= desiredType then - error(name .. ' must be a ' .. desiredType .. ', but was ' .. tostring(value) .. '(a ' .. type(value) .. ')') + error(name .. ' must be a ' .. desiredType .. ', but was ' .. tostring(value) .. '(a ' .. type(value) .. ')') end end local function assertIsPositiveNumber(value, name) if type(value) ~= 'number' or value <= 0 then - error(name .. ' must be a positive integer, but was ' .. tostring(value) .. '(' .. type(value) .. ')') + error(name .. ' must be a positive integer, but was ' .. tostring(value) .. '(' .. type(value) .. ')') end end @@ -66,27 +66,27 @@ local function rect_getSegmentIntersectionIndices(x,y,w,h, x1,y1,x2,y2, ti1,ti2) local p, q, r for side = 1,4 do - if side == 1 then nx,ny,p,q = -1, 0, -dx, x1 - x -- left - elseif side == 2 then nx,ny,p,q = 1, 0, dx, x + w - x1 -- right - elseif side == 3 then nx,ny,p,q = 0, -1, -dy, y1 - y -- top - else nx,ny,p,q = 0, 1, dy, y + h - y1 -- bottom - end + if side == 1 then nx,ny,p,q = -1, 0, -dx, x1 - x -- left + elseif side == 2 then nx,ny,p,q = 1, 0, dx, x + w - x1 -- right + elseif side == 3 then nx,ny,p,q = 0, -1, -dy, y1 - y -- top + else nx,ny,p,q = 0, 1, dy, y + h - y1 -- bottom + end - if p == 0 then - if q <= 0 then return nil end - else - r = q / p - if p < 0 then - if r > ti2 then return nil - elseif r > ti1 then ti1,nx1,ny1 = r,nx,ny - end - else -- p > 0 - if r < ti1 then return nil - elseif r < ti2 then ti2,nx2,ny2 = r,nx,ny - end - end + if p == 0 then + if q <= 0 then return nil end + else + r = q / p + if p < 0 then + if r > ti2 then return nil + elseif r > ti1 then ti1,nx1,ny1 = r,nx,ny + end + else -- p > 0 + if r < ti1 then return nil + elseif r < ti2 then ti2,nx2,ny2 = r,nx,ny + end end end + end return ti1,ti2, nx1,ny1, nx2,ny2 end @@ -94,19 +94,19 @@ end -- Calculates the minkowsky difference between 2 rects, which is another rect local function rect_getDiff(x1,y1,w1,h1, x2,y2,w2,h2) return x2 - x1 - w1, - y2 - y1 - h1, - w1 + w2, - h1 + h2 + y2 - y1 - h1, + w1 + w2, + h1 + h2 end local function rect_containsPoint(x,y,w,h, px,py) - return px - x > DELTA and py - y > DELTA and - x + w - px > DELTA and y + h - py > DELTA + return px - x > DELTA and py - y > DELTA and + x + w - px > DELTA and y + h - py > DELTA end local function rect_isIntersecting(x1,y1,w1,h1, x2,y2,w2,h2) return x1 < x2+w2 and x2 < x1+w1 and - y1 < y2+h2 and y2 < y1+h1 + y1 < y2+h2 and y2 < y1+h1 end local function rect_getSquareDistance(x1,y1,w1,h1, x2,y2,w2,h2) @@ -119,29 +119,29 @@ local function rect_detectCollision(x1,y1,w1,h1, x2,y2,w2,h2, goalX, goalY) goalX = goalX or x1 goalY = goalY or y1 - local dx, dy = goalX - x1, goalY - y1 - local x,y,w,h = rect_getDiff(x1,y1,w1,h1, x2,y2,w2,h2) + local dx, dy = goalX - x1, goalY - y1 + local x,y,w,h = rect_getDiff(x1,y1,w1,h1, x2,y2,w2,h2) local overlaps, ti, nx, ny if rect_containsPoint(x,y,w,h, 0,0) then -- item was intersecting other - local px, py = rect_getNearestCorner(x,y,w,h, 0, 0) - local wi, hi = min(w1, abs(px)), min(h1, abs(py)) -- area of intersection - ti = -wi * hi -- ti is the negative area of intersection - overlaps = true + local px, py = rect_getNearestCorner(x,y,w,h, 0, 0) + local wi, hi = min(w1, abs(px)), min(h1, abs(py)) -- area of intersection + ti = -wi * hi -- ti is the negative area of intersection + overlaps = true else - local ti1,ti2,nx1,ny1 = rect_getSegmentIntersectionIndices(x,y,w,h, 0,0,dx,dy, -math.huge, math.huge) - - -- item tunnels into other - if ti1 - and ti1 < 1 - and (abs(ti1 - ti2) >= DELTA) -- special case for rect going through another rect's corner - and (0 < ti1 + DELTA - or 0 == ti1 and ti2 > 0) - then - ti, nx, ny = ti1, nx1, ny1 - overlaps = false - end + local ti1,ti2,nx1,ny1 = rect_getSegmentIntersectionIndices(x,y,w,h, 0,0,dx,dy, -math.huge, math.huge) + + -- item tunnels into other + if ti1 + and ti1 < 1 + and (abs(ti1 - ti2) >= DELTA) -- special case for rect going through another rect's corner + and (0 < ti1 + DELTA + or 0 == ti1 and ti2 > 0) + then + ti, nx, ny = ti1, nx1, ny1 + overlaps = false + end end if not ti then return end @@ -149,31 +149,31 @@ local function rect_detectCollision(x1,y1,w1,h1, x2,y2,w2,h2, goalX, goalY) local tx, ty if overlaps then - if dx == 0 and dy == 0 then - -- intersecting and not moving - use minimum displacement vector - local px, py = rect_getNearestCorner(x,y,w,h, 0,0) - if abs(px) < abs(py) then py = 0 else px = 0 end - nx, ny = sign(px), sign(py) - tx, ty = x1 + px, y1 + py - else - -- intersecting and moving - move in the opposite direction - local ti1, _ - ti1,_,nx,ny = rect_getSegmentIntersectionIndices(x,y,w,h, 0,0,dx,dy, -math.huge, 1) - if not ti1 then return end - tx, ty = x1 + dx * ti1, y1 + dy * ti1 - end + if dx == 0 and dy == 0 then + -- intersecting and not moving - use minimum displacement vector + local px, py = rect_getNearestCorner(x,y,w,h, 0,0) + if abs(px) < abs(py) then py = 0 else px = 0 end + nx, ny = sign(px), sign(py) + tx, ty = x1 + px, y1 + py + else + -- intersecting and moving - move in the opposite direction + local ti1, _ + ti1,_,nx,ny = rect_getSegmentIntersectionIndices(x,y,w,h, 0,0,dx,dy, -math.huge, 1) + if not ti1 then return end + tx, ty = x1 + dx * ti1, y1 + dy * ti1 + end else -- tunnel - tx, ty = x1 + dx * ti, y1 + dy * ti + tx, ty = x1 + dx * ti, y1 + dy * ti end return { - overlaps = overlaps, - ti = ti, - move = {x = dx, y = dy}, - normal = {x = nx, y = ny}, - touch = {x = tx, y = ty}, - itemRect = {x = x1, y = y1, w = w1, h = h1}, - otherRect = {x = x2, y = y2, w = w2, h = h2} + overlaps = overlaps, + ti = ti, + move = {x = dx, y = dy}, + normal = {x = nx, y = ny}, + touch = {x = tx, y = ty}, + itemRect = {x = x1, y = y1, w = w1, h = h1}, + otherRect = {x = x2, y = y2, w = w2, h = h2} } end @@ -196,21 +196,21 @@ end local function grid_traverse_initStep(cellSize, ct, t1, t2) local v = t2 - t1 - if v > 0 then - return 1, cellSize / v, ((ct + v) * cellSize - t1) / v + if v > 0 then + return 1, cellSize / v, ((ct + v) * cellSize - t1) / v elseif v < 0 then - return -1, -cellSize / v, ((ct + v - 1) * cellSize - t1) / v + return -1, -cellSize / v, ((ct + v - 1) * cellSize - t1) / v else - return 0, math.huge, math.huge + return 0, math.huge, math.huge end end local function grid_traverse(cellSize, x1,y1,x2,y2, f) - local cx1,cy1 = grid_toCell(cellSize, x1,y1) - local cx2,cy2 = grid_toCell(cellSize, x2,y2) + local cx1,cy1 = grid_toCell(cellSize, x1,y1) + local cx2,cy2 = grid_toCell(cellSize, x2,y2) local stepX, dx, tx = grid_traverse_initStep(cellSize, cx1, x1, x2) local stepY, dy, ty = grid_traverse_initStep(cellSize, cy1, y1, y2) - local cx,cy = cx1,cy1 + local cx,cy = cx1,cy1 f(cx, cy) @@ -218,15 +218,15 @@ local function grid_traverse(cellSize, x1,y1,x2,y2, f) -- approaching the last cell in some occassions. We finish iterating -- when we are *next* to the last cell while abs(cx - cx2) + abs(cy - cy2) > 1 do - if tx < ty then - tx, cx = tx + dx, cx + stepX - f(cx, cy) - else - -- Addition: include both cells when going through corners - if tx == ty then f(cx + stepX, cy) end - ty, cy = ty + dy, cy + stepY - f(cx, cy) - end + if tx < ty then + tx, cx = tx + dx, cx + stepX + f(cx, cy) + else + -- Addition: include both cells when going through corners + if tx == ty then f(cx + stepX, cy) end + ty, cy = ty + dy, cy + stepY + f(cx, cy) + end end -- If we have not arrived to the last cell, use it @@ -259,11 +259,11 @@ local slide = function(world, col, x,y,w,h, goalX, goalY, filter) local tch, move = col.touch, col.move if move.x ~= 0 or move.y ~= 0 then - if col.normal.x ~= 0 then - goalX = tch.x - else - goalY = tch.y - end + if col.normal.x ~= 0 then + goalX = tch.x + else + goalY = tch.y + end end col.slide = {x = goalX, y = goalY} @@ -283,16 +283,16 @@ local bounce = function(world, col, x,y,w,h, goalX, goalY, filter) local bx, by = tx, ty if move.x ~= 0 or move.y ~= 0 then - local bnx, bny = goalX - tx, goalY - ty - if col.normal.x == 0 then bny = -bny else bnx = -bnx end - bx, by = tx + bnx, ty + bny + local bnx, bny = goalX - tx, goalY - ty + if col.normal.x == 0 then bny = -bny else bnx = -bnx end + bx, by = tx + bnx, ty + bny end col.bounce = {x = bx, y = by} - x,y = tch.x, tch.y + x,y = tch.x, tch.y goalX, goalY = bx, by - local cols, len = world:project(col.item, x,y,w,h, goalX, goalY, filter) + local cols, len = world:project(col.item, x,y,w,h, goalX, goalY, filter) return goalX, goalY, cols, len end @@ -309,10 +309,10 @@ local function sortByWeight(a,b) return a.weight < b.weight end local function sortByTiAndDistance(a,b) if a.ti == b.ti then - local ir, ar, br = a.itemRect, a.otherRect, b.otherRect - local ad = rect_getSquareDistance(ir.x,ir.y,ir.w,ir.h, ar.x,ar.y,ar.w,ar.h) - local bd = rect_getSquareDistance(ir.x,ir.y,ir.w,ir.h, br.x,br.y,br.w,br.h) - return ad < bd + local ir, ar, br = a.itemRect, a.otherRect, b.otherRect + local ad = rect_getSquareDistance(ir.x,ir.y,ir.w,ir.h, ar.x,ar.y,ar.w,ar.h) + local bd = rect_getSquareDistance(ir.x,ir.y,ir.w,ir.h, br.x,br.y,br.w,br.h) + return ad < bd end return a.ti < b.ti end @@ -324,8 +324,8 @@ local function addItemToCell(self, item, cx, cy) local cell = row[cx] self.nonEmptyCells[cell] = true if not cell.items[item] then - cell.items[item] = true - cell.itemCount = cell.itemCount + 1 + cell.items[item] = true + cell.itemCount = cell.itemCount + 1 end end @@ -337,7 +337,7 @@ local function removeItemFromCell(self, item, cx, cy) cell.items[item] = nil cell.itemCount = cell.itemCount - 1 if cell.itemCount == 0 then - self.nonEmptyCells[cell] = nil + self.nonEmptyCells[cell] = nil end return true end @@ -345,17 +345,17 @@ end local function getDictItemsInCellRect(self, cl,ct,cw,ch) local items_dict = {} for cy=ct,ct+ch-1 do - local row = self.rows[cy] - if row then - for cx=cl,cl+cw-1 do - local cell = row[cx] - if cell and cell.itemCount > 0 then -- no cell.itemCount > 1 because tunneling - for item,_ in pairs(cell.items) do - items_dict[item] = true - end - end + local row = self.rows[cy] + if row then + for cx=cl,cl+cw-1 do + local cell = row[cx] + if cell and cell.itemCount > 0 then -- no cell.itemCount > 1 because tunneling + for item,_ in pairs(cell.items) do + items_dict[item] = true end end + end + end end return items_dict @@ -366,14 +366,14 @@ local function getCellsTouchedBySegment(self, x1,y1,x2,y2) local cells, cellsLen, visited = {}, 0, {} grid_traverse(self.cellSize, x1,y1,x2,y2, function(cx, cy) - local row = self.rows[cy] - if not row then return end - local cell = row[cx] - if not cell or visited[cell] then return end + local row = self.rows[cy] + if not row then return end + local cell = row[cx] + if not cell or visited[cell] then return end - visited[cell] = true - cellsLen = cellsLen + 1 - cells[cellsLen] = cell + visited[cell] = true + cellsLen = cellsLen + 1 + cells[cellsLen] = cell end) return cells, cellsLen @@ -384,24 +384,24 @@ local function getInfoAboutItemsTouchedBySegment(self, x1,y1, x2,y2, filter) local cell, rect, l,t,w,h, ti1,ti2, tii0,tii1 local visited, itemInfo, itemInfoLen = {},{},0 for i=1,len do - cell = cells[i] - for item in pairs(cell.items) do - if not visited[item] then - visited[item] = true - if (not filter or filter(item)) then - rect = self.rects[item] - l,t,w,h = rect.x,rect.y,rect.w,rect.h - - ti1,ti2 = rect_getSegmentIntersectionIndices(l,t,w,h, x1,y1, x2,y2, 0, 1) - if ti1 and ((0 < ti1 and ti1 < 1) or (0 < ti2 and ti2 < 1)) then - -- the sorting is according to the t of an infinite line, not the segment - tii0,tii1 = rect_getSegmentIntersectionIndices(l,t,w,h, x1,y1, x2,y2, -math.huge, math.huge) - itemInfoLen = itemInfoLen + 1 - itemInfo[itemInfoLen] = {item = item, ti1 = ti1, ti2 = ti2, weight = min(tii0,tii1)} - end - end + cell = cells[i] + for item in pairs(cell.items) do + if not visited[item] then + visited[item] = true + if (not filter or filter(item)) then + rect = self.rects[item] + l,t,w,h = rect.x,rect.y,rect.w,rect.h + + ti1,ti2 = rect_getSegmentIntersectionIndices(l,t,w,h, x1,y1, x2,y2, 0, 1) + if ti1 and ((0 < ti1 and ti1 < 1) or (0 < ti2 and ti2 < 1)) then + -- the sorting is according to the t of an infinite line, not the segment + tii0,tii1 = rect_getSegmentIntersectionIndices(l,t,w,h, x1,y1, x2,y2, -math.huge, math.huge) + itemInfoLen = itemInfoLen + 1 + itemInfo[itemInfoLen] = {item = item, ti1 = ti1, ti2 = ti2, weight = min(tii0,tii1)} end end + end + end end table.sort(itemInfo, sortByWeight) return itemInfo, itemInfoLen @@ -410,7 +410,7 @@ end local function getResponseByName(self, name) local response = self.responses[name] if not response then - error(('Unknown collision type: %s (%s)'):format(name, type(name))) + error(('Unknown collision type: %s (%s)'):format(name, type(name))) end return response end @@ -436,7 +436,7 @@ function World:project(item, x,y,w,h, goalX, goalY, filter) -- This could probably be done with less cells using a polygon raster over the cells instead of a -- bounding rect of the whole movement. Conditional to building a queryPolygon method - local tl, tt = min(goalX, x), min(goalY, y) + local tl, tt = min(goalX, x), min(goalY, y) local tr, tb = max(goalX + w, x+w), max(goalY + h, y+h) local tw, th = tr-tl, tb-tt @@ -445,24 +445,24 @@ function World:project(item, x,y,w,h, goalX, goalY, filter) local dictItemsInCellRect = getDictItemsInCellRect(self, cl,ct,cw,ch) for other,_ in pairs(dictItemsInCellRect) do - if not visited[other] then - visited[other] = true - - local responseName = filter(item, other) - if responseName then - local ox,oy,ow,oh = self:getRect(other) - local col = rect_detectCollision(x,y,w,h, ox,oy,ow,oh, goalX, goalY) - - if col then - col.other = other - col.item = item - col.type = responseName - - len = len + 1 - collisions[len] = col - end - end + if not visited[other] then + visited[other] = true + + local responseName = filter(item, other) + if responseName then + local ox,oy,ow,oh = self:getRect(other) + local col = rect_detectCollision(x,y,w,h, ox,oy,ow,oh, goalX, goalY) + + if col then + col.other = other + col.item = item + col.type = responseName + + len = len + 1 + collisions[len] = col end + end + end end table.sort(collisions, sortByTiAndDistance) @@ -473,9 +473,9 @@ end function World:countCells() local count = 0 for _,row in pairs(self.rows) do - for _,_ in pairs(row) do - count = count + 1 - end + for _,_ in pairs(row) do + count = count + 1 + end end return count end @@ -487,8 +487,8 @@ end function World:getItems() local items, len = {}, 0 for item,_ in pairs(self.rects) do - len = len + 1 - items[len] = item + len = len + 1 + items[len] = item end return items, len end @@ -502,7 +502,7 @@ end function World:getRect(item) local rect = self.rects[item] if not rect then - error('Item ' .. tostring(item) .. ' must be added to the world before getting its rect. Use world:add(item, x,y,w,h) to add it first.') + error('Item ' .. tostring(item) .. ' must be added to the world before getting its rect. Use world:add(item, x,y,w,h) to add it first.') end return rect.x, rect.y, rect.w, rect.h end @@ -529,13 +529,13 @@ function World:queryRect(x,y,w,h, filter) local rect for item,_ in pairs(dictItemsInCellRect) do - rect = self.rects[item] - if (not filter or filter(item)) - and rect_isIntersecting(x,y,w,h, rect.x, rect.y, rect.w, rect.h) - then - len = len + 1 - items[len] = item - end + rect = self.rects[item] + if (not filter or filter(item)) + and rect_isIntersecting(x,y,w,h, rect.x, rect.y, rect.w, rect.h) + then + len = len + 1 + items[len] = item + end end return items, len @@ -549,13 +549,13 @@ function World:queryPoint(x,y, filter) local rect for item,_ in pairs(dictItemsInCellRect) do - rect = self.rects[item] - if (not filter or filter(item)) - and rect_containsPoint(rect.x, rect.y, rect.w, rect.h, x, y) - then - len = len + 1 - items[len] = item - end + rect = self.rects[item] + if (not filter or filter(item)) + and rect_containsPoint(rect.x, rect.y, rect.w, rect.h, x, y) + then + len = len + 1 + items[len] = item + end end return items, len @@ -565,25 +565,25 @@ function World:querySegment(x1, y1, x2, y2, filter) local itemInfo, len = getInfoAboutItemsTouchedBySegment(self, x1, y1, x2, y2, filter) local items = {} for i=1, len do - items[i] = itemInfo[i].item + items[i] = itemInfo[i].item end return items, len end function World:querySegmentWithCoords(x1, y1, x2, y2, filter) local itemInfo, len = getInfoAboutItemsTouchedBySegment(self, x1, y1, x2, y2, filter) - local dx, dy = x2-x1, y2-y1 + local dx, dy = x2-x1, y2-y1 local info, ti1, ti2 for i=1, len do - info = itemInfo[i] - ti1 = info.ti1 - ti2 = info.ti2 - - info.weight = nil - info.x1 = x1 + dx * ti1 - info.y1 = y1 + dy * ti1 - info.x2 = x1 + dx * ti2 - info.y2 = y1 + dy * ti2 + info = itemInfo[i] + ti1 = info.ti1 + ti2 = info.ti2 + + info.weight = nil + info.x1 = x1 + dx * ti1 + info.y1 = y1 + dy * ti1 + info.x2 = x1 + dx * ti2 + info.y2 = y1 + dy * ti2 end return itemInfo, len end @@ -594,7 +594,7 @@ end function World:add(item, x,y,w,h) local rect = self.rects[item] if rect then - error('Item ' .. tostring(item) .. ' added to the world twice.') + error('Item ' .. tostring(item) .. ' added to the world twice.') end assertIsRect(x,y,w,h) @@ -602,9 +602,9 @@ function World:add(item, x,y,w,h) local cl,ct,cw,ch = grid_toCellRect(self.cellSize, x,y,w,h) for cy = ct, ct+ch-1 do - for cx = cl, cl+cw-1 do - addItemToCell(self, item, cx, cy) - end + for cx = cl, cl+cw-1 do + addItemToCell(self, item, cx, cy) + end end return item @@ -616,9 +616,9 @@ function World:remove(item) self.rects[item] = nil local cl,ct,cw,ch = grid_toCellRect(self.cellSize, x,y,w,h) for cy = ct, ct+ch-1 do - for cx = cl, cl+cw-1 do - removeItemFromCell(self, item, cx, cy) - end + for cx = cl, cl+cw-1 do + removeItemFromCell(self, item, cx, cy) + end end end @@ -629,38 +629,38 @@ function World:update(item, x2,y2,w2,h2) if x1 ~= x2 or y1 ~= y2 or w1 ~= w2 or h1 ~= h2 then - local cellSize = self.cellSize - local cl1,ct1,cw1,ch1 = grid_toCellRect(cellSize, x1,y1,w1,h1) - local cl2,ct2,cw2,ch2 = grid_toCellRect(cellSize, x2,y2,w2,h2) + local cellSize = self.cellSize + local cl1,ct1,cw1,ch1 = grid_toCellRect(cellSize, x1,y1,w1,h1) + local cl2,ct2,cw2,ch2 = grid_toCellRect(cellSize, x2,y2,w2,h2) - if cl1 ~= cl2 or ct1 ~= ct2 or cw1 ~= cw2 or ch1 ~= ch2 then + if cl1 ~= cl2 or ct1 ~= ct2 or cw1 ~= cw2 or ch1 ~= ch2 then - local cr1, cb1 = cl1+cw1-1, ct1+ch1-1 - local cr2, cb2 = cl2+cw2-1, ct2+ch2-1 - local cyOut + local cr1, cb1 = cl1+cw1-1, ct1+ch1-1 + local cr2, cb2 = cl2+cw2-1, ct2+ch2-1 + local cyOut - for cy = ct1, cb1 do - cyOut = cy < ct2 or cy > cb2 - for cx = cl1, cr1 do - if cyOut or cx < cl2 or cx > cr2 then - removeItemFromCell(self, item, cx, cy) - end - end + for cy = ct1, cb1 do + cyOut = cy < ct2 or cy > cb2 + for cx = cl1, cr1 do + if cyOut or cx < cl2 or cx > cr2 then + removeItemFromCell(self, item, cx, cy) end + end + end - for cy = ct2, cb2 do - cyOut = cy < ct1 or cy > cb1 - for cx = cl2, cr2 do - if cyOut or cx < cl1 or cx > cr1 then - addItemToCell(self, item, cx, cy) - end - end + for cy = ct2, cb2 do + cyOut = cy < ct1 or cy > cb1 + for cx = cl2, cr2 do + if cyOut or cx < cl1 or cx > cr1 then + addItemToCell(self, item, cx, cy) end - end + end + + end - local rect = self.rects[item] - rect.x, rect.y, rect.w, rect.h = x2,y2,w2,h2 + local rect = self.rects[item] + rect.x, rect.y, rect.w, rect.h = x2,y2,w2,h2 end end @@ -678,8 +678,8 @@ function World:check(item, goalX, goalY, filter) local visited = {[item] = true} local visitedFilter = function(itm, other) - if visited[other] then return false end - return filter(itm, other) + if visited[other] then return false end + return filter(itm, other) end local cols, len = {}, 0 @@ -689,21 +689,21 @@ function World:check(item, goalX, goalY, filter) local projected_cols, projected_len = self:project(item, x,y,w,h, goalX,goalY, visitedFilter) while projected_len > 0 do - local col = projected_cols[1] - len = len + 1 - cols[len] = col + local col = projected_cols[1] + len = len + 1 + cols[len] = col - visited[col.other] = true + visited[col.other] = true - local response = getResponseByName(self, col.type) + local response = getResponseByName(self, col.type) - goalX, goalY, projected_cols, projected_len = response( - self, - col, - x, y, w, h, - goalX, goalY, - visitedFilter - ) + goalX, goalY, projected_cols, projected_len = response( + self, + col, + x, y, w, h, + goalX, goalY, + visitedFilter + ) end return goalX, goalY, cols, len @@ -716,11 +716,11 @@ bump.newWorld = function(cellSize) cellSize = cellSize or 64 assertIsPositiveNumber(cellSize, 'cellSize') local world = setmetatable({ - cellSize = cellSize, - rects = {}, - rows = {}, - nonEmptyCells = {}, - responses = {} + cellSize = cellSize, + rects = {}, + rows = {}, + nonEmptyCells = {}, + responses = {} }, World_mt) world:addResponse('touch', touch) @@ -732,13 +732,13 @@ bump.newWorld = function(cellSize) end bump.rect = { - getNearestCorner = rect_getNearestCorner, + getNearestCorner = rect_getNearestCorner, getSegmentIntersectionIndices = rect_getSegmentIntersectionIndices, - getDiff = rect_getDiff, - containsPoint = rect_containsPoint, - isIntersecting = rect_isIntersecting, - getSquareDistance = rect_getSquareDistance, - detectCollision = rect_detectCollision + getDiff = rect_getDiff, + containsPoint = rect_containsPoint, + isIntersecting = rect_isIntersecting, + getSquareDistance = rect_getSquareDistance, + detectCollision = rect_detectCollision } bump.responses = { diff --git a/src/libjin-lua/scripts/physics/physics.lua.h b/src/libjin-lua/scripts/physics/physics.lua.h index 08e21ce..01a0cff 100644 --- a/src/libjin-lua/scripts/physics/physics.lua.h +++ b/src/libjin-lua/scripts/physics/physics.lua.h @@ -44,515 +44,500 @@ static char physics_lua[] = { 101,115,105,114,101,100,84,121,112,101,44,32,118,97,108,117,101,44,32,110, 97,109,101,41,13,10,32,32,105,102,32,116,121,112,101,40,118,97,108,117, 101,41,32,126,61,32,100,101,115,105,114,101,100,84,121,112,101,32,116,104, -101,110,13,10,32,32,32,32,101,114,114,111,114,40,110,97,109,101,32,46, -46,32,39,32,109,117,115,116,32,98,101,32,97,32,39,32,46,46,32,100, -101,115,105,114,101,100,84,121,112,101,32,46,46,32,39,44,32,98,117,116, -32,119,97,115,32,39,32,46,46,32,116,111,115,116,114,105,110,103,40,118, -97,108,117,101,41,32,46,46,32,39,40,97,32,39,32,46,46,32,116,121, -112,101,40,118,97,108,117,101,41,32,46,46,32,39,41,39,41,13,10,32, -32,101,110,100,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102, -117,110,99,116,105,111,110,32,97,115,115,101,114,116,73,115,80,111,115,105, -116,105,118,101,78,117,109,98,101,114,40,118,97,108,117,101,44,32,110,97, -109,101,41,13,10,32,32,105,102,32,116,121,112,101,40,118,97,108,117,101, -41,32,126,61,32,39,110,117,109,98,101,114,39,32,111,114,32,118,97,108, -117,101,32,60,61,32,48,32,116,104,101,110,13,10,32,32,32,32,101,114, -114,111,114,40,110,97,109,101,32,46,46,32,39,32,109,117,115,116,32,98, -101,32,97,32,112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114, -44,32,98,117,116,32,119,97,115,32,39,32,46,46,32,116,111,115,116,114, -105,110,103,40,118,97,108,117,101,41,32,46,46,32,39,40,39,32,46,46, -32,116,121,112,101,40,118,97,108,117,101,41,32,46,46,32,39,41,39,41, -13,10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,108,111,99,97, -108,32,102,117,110,99,116,105,111,110,32,97,115,115,101,114,116,73,115,82, -101,99,116,40,120,44,121,44,119,44,104,41,13,10,32,32,97,115,115,101, -114,116,84,121,112,101,40,39,110,117,109,98,101,114,39,44,32,120,44,32, -39,120,39,41,13,10,32,32,97,115,115,101,114,116,84,121,112,101,40,39, -110,117,109,98,101,114,39,44,32,121,44,32,39,121,39,41,13,10,32,32, -97,115,115,101,114,116,73,115,80,111,115,105,116,105,118,101,78,117,109,98, -101,114,40,119,44,32,39,119,39,41,13,10,32,32,97,115,115,101,114,116, -73,115,80,111,115,105,116,105,118,101,78,117,109,98,101,114,40,104,44,32, -39,104,39,41,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,100, -101,102,97,117,108,116,70,105,108,116,101,114,32,61,32,102,117,110,99,116, -105,111,110,40,41,13,10,32,32,114,101,116,117,114,110,32,39,115,108,105, -100,101,39,13,10,101,110,100,13,10,13,10,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,82, -101,99,116,97,110,103,108,101,32,102,117,110,99,116,105,111,110,115,13,10, +101,110,13,10,32,32,101,114,114,111,114,40,110,97,109,101,32,46,46,32, +39,32,109,117,115,116,32,98,101,32,97,32,39,32,46,46,32,100,101,115, +105,114,101,100,84,121,112,101,32,46,46,32,39,44,32,98,117,116,32,119, +97,115,32,39,32,46,46,32,116,111,115,116,114,105,110,103,40,118,97,108, +117,101,41,32,46,46,32,39,40,97,32,39,32,46,46,32,116,121,112,101, +40,118,97,108,117,101,41,32,46,46,32,39,41,39,41,13,10,32,32,101, +110,100,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110, +99,116,105,111,110,32,97,115,115,101,114,116,73,115,80,111,115,105,116,105, +118,101,78,117,109,98,101,114,40,118,97,108,117,101,44,32,110,97,109,101, +41,13,10,32,32,105,102,32,116,121,112,101,40,118,97,108,117,101,41,32, +126,61,32,39,110,117,109,98,101,114,39,32,111,114,32,118,97,108,117,101, +32,60,61,32,48,32,116,104,101,110,13,10,32,32,101,114,114,111,114,40, +110,97,109,101,32,46,46,32,39,32,109,117,115,116,32,98,101,32,97,32, +112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114,44,32,98,117, +116,32,119,97,115,32,39,32,46,46,32,116,111,115,116,114,105,110,103,40, +118,97,108,117,101,41,32,46,46,32,39,40,39,32,46,46,32,116,121,112, +101,40,118,97,108,117,101,41,32,46,46,32,39,41,39,41,13,10,32,32, +101,110,100,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117, +110,99,116,105,111,110,32,97,115,115,101,114,116,73,115,82,101,99,116,40, +120,44,121,44,119,44,104,41,13,10,32,32,97,115,115,101,114,116,84,121, +112,101,40,39,110,117,109,98,101,114,39,44,32,120,44,32,39,120,39,41, +13,10,32,32,97,115,115,101,114,116,84,121,112,101,40,39,110,117,109,98, +101,114,39,44,32,121,44,32,39,121,39,41,13,10,32,32,97,115,115,101, +114,116,73,115,80,111,115,105,116,105,118,101,78,117,109,98,101,114,40,119, +44,32,39,119,39,41,13,10,32,32,97,115,115,101,114,116,73,115,80,111, +115,105,116,105,118,101,78,117,109,98,101,114,40,104,44,32,39,104,39,41, +13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,100,101,102,97,117, +108,116,70,105,108,116,101,114,32,61,32,102,117,110,99,116,105,111,110,40, +41,13,10,32,32,114,101,116,117,114,110,32,39,115,108,105,100,101,39,13, +10,101,110,100,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,82,101,99,116,97, +110,103,108,101,32,102,117,110,99,116,105,111,110,115,13,10,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, -32,114,101,99,116,95,103,101,116,78,101,97,114,101,115,116,67,111,114,110, -101,114,40,120,44,121,44,119,44,104,44,32,112,120,44,32,112,121,41,13, -10,32,32,114,101,116,117,114,110,32,110,101,97,114,101,115,116,40,112,120, -44,32,120,44,32,120,43,119,41,44,32,110,101,97,114,101,115,116,40,112, -121,44,32,121,44,32,121,43,104,41,13,10,101,110,100,13,10,13,10,45, -45,32,84,104,105,115,32,105,115,32,97,32,103,101,110,101,114,97,108,105, -122,101,100,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, -102,32,116,104,101,32,108,105,97,110,103,45,98,97,114,115,107,121,32,97, -108,103,111,114,105,116,104,109,44,32,119,104,105,99,104,32,97,108,115,111, -32,114,101,116,117,114,110,115,13,10,45,45,32,116,104,101,32,110,111,114, -109,97,108,115,32,111,102,32,116,104,101,32,115,105,100,101,115,32,119,104, -101,114,101,32,116,104,101,32,115,101,103,109,101,110,116,32,105,110,116,101, -114,115,101,99,116,115,46,13,10,45,45,32,82,101,116,117,114,110,115,32, -110,105,108,32,105,102,32,116,104,101,32,115,101,103,109,101,110,116,32,110, -101,118,101,114,32,116,111,117,99,104,101,115,32,116,104,101,32,114,101,99, -116,13,10,45,45,32,78,111,116,105,99,101,32,116,104,97,116,32,110,111, -114,109,97,108,115,32,97,114,101,32,111,110,108,121,32,103,117,97,114,97, -110,116,101,101,100,32,116,111,32,98,101,32,97,99,99,117,114,97,116,101, -32,119,104,101,110,32,105,110,105,116,105,97,108,108,121,32,116,105,49,44, -32,116,105,50,32,61,61,32,45,109,97,116,104,46,104,117,103,101,44,32, -109,97,116,104,46,104,117,103,101,13,10,108,111,99,97,108,32,102,117,110, -99,116,105,111,110,32,114,101,99,116,95,103,101,116,83,101,103,109,101,110, -116,73,110,116,101,114,115,101,99,116,105,111,110,73,110,100,105,99,101,115, -40,120,44,121,44,119,44,104,44,32,120,49,44,121,49,44,120,50,44,121, -50,44,32,116,105,49,44,116,105,50,41,13,10,32,32,116,105,49,44,32, -116,105,50,32,61,32,116,105,49,32,111,114,32,48,44,32,116,105,50,32, -111,114,32,49,13,10,32,32,108,111,99,97,108,32,100,120,44,32,100,121, -32,61,32,120,50,45,120,49,44,32,121,50,45,121,49,13,10,32,32,108, -111,99,97,108,32,110,120,44,32,110,121,13,10,32,32,108,111,99,97,108, -32,110,120,49,44,32,110,121,49,44,32,110,120,50,44,32,110,121,50,32, -61,32,48,44,48,44,48,44,48,13,10,32,32,108,111,99,97,108,32,112, -44,32,113,44,32,114,13,10,13,10,32,32,102,111,114,32,115,105,100,101, -32,61,32,49,44,52,32,100,111,13,10,32,32,32,32,105,102,32,32,32, -32,32,115,105,100,101,32,61,61,32,49,32,116,104,101,110,32,110,120,44, -110,121,44,112,44,113,32,61,32,45,49,44,32,32,48,44,32,45,100,120, -44,32,120,49,32,45,32,120,32,32,32,32,32,45,45,32,108,101,102,116, -13,10,32,32,32,32,101,108,115,101,105,102,32,115,105,100,101,32,61,61, -32,50,32,116,104,101,110,32,110,120,44,110,121,44,112,44,113,32,61,32, -32,49,44,32,32,48,44,32,32,100,120,44,32,120,32,43,32,119,32,45, -32,120,49,32,45,45,32,114,105,103,104,116,13,10,32,32,32,32,101,108, -115,101,105,102,32,115,105,100,101,32,61,61,32,51,32,116,104,101,110,32, -110,120,44,110,121,44,112,44,113,32,61,32,32,48,44,32,45,49,44,32, -45,100,121,44,32,121,49,32,45,32,121,32,32,32,32,32,45,45,32,116, -111,112,13,10,32,32,32,32,101,108,115,101,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,110,120,44,110,121,44,112,44,113,32, -61,32,32,48,44,32,32,49,44,32,32,100,121,44,32,121,32,43,32,104, -32,45,32,121,49,32,45,45,32,98,111,116,116,111,109,13,10,32,32,32, -32,101,110,100,13,10,13,10,32,32,32,32,105,102,32,112,32,61,61,32, -48,32,116,104,101,110,13,10,32,32,32,32,32,32,105,102,32,113,32,60, -61,32,48,32,116,104,101,110,32,114,101,116,117,114,110,32,110,105,108,32, -101,110,100,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32, -32,114,32,61,32,113,32,47,32,112,13,10,32,32,32,32,32,32,105,102, -32,112,32,60,32,48,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,105,102,32,32,32,32,32,114,32,62,32,116,105,50,32,116,104,101,110, -32,114,101,116,117,114,110,32,110,105,108,13,10,32,32,32,32,32,32,32, -32,101,108,115,101,105,102,32,114,32,62,32,116,105,49,32,116,104,101,110, -32,116,105,49,44,110,120,49,44,110,121,49,32,61,32,114,44,110,120,44, -110,121,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32, -32,32,32,101,108,115,101,32,45,45,32,112,32,62,32,48,13,10,32,32, -32,32,32,32,32,32,105,102,32,32,32,32,32,114,32,60,32,116,105,49, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10, +13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,114,101,99, +116,95,103,101,116,78,101,97,114,101,115,116,67,111,114,110,101,114,40,120, +44,121,44,119,44,104,44,32,112,120,44,32,112,121,41,13,10,32,32,114, +101,116,117,114,110,32,110,101,97,114,101,115,116,40,112,120,44,32,120,44, +32,120,43,119,41,44,32,110,101,97,114,101,115,116,40,112,121,44,32,121, +44,32,121,43,104,41,13,10,101,110,100,13,10,13,10,45,45,32,84,104, +105,115,32,105,115,32,97,32,103,101,110,101,114,97,108,105,122,101,100,32, +105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,116,104, +101,32,108,105,97,110,103,45,98,97,114,115,107,121,32,97,108,103,111,114, +105,116,104,109,44,32,119,104,105,99,104,32,97,108,115,111,32,114,101,116, +117,114,110,115,13,10,45,45,32,116,104,101,32,110,111,114,109,97,108,115, +32,111,102,32,116,104,101,32,115,105,100,101,115,32,119,104,101,114,101,32, +116,104,101,32,115,101,103,109,101,110,116,32,105,110,116,101,114,115,101,99, +116,115,46,13,10,45,45,32,82,101,116,117,114,110,115,32,110,105,108,32, +105,102,32,116,104,101,32,115,101,103,109,101,110,116,32,110,101,118,101,114, +32,116,111,117,99,104,101,115,32,116,104,101,32,114,101,99,116,13,10,45, +45,32,78,111,116,105,99,101,32,116,104,97,116,32,110,111,114,109,97,108, +115,32,97,114,101,32,111,110,108,121,32,103,117,97,114,97,110,116,101,101, +100,32,116,111,32,98,101,32,97,99,99,117,114,97,116,101,32,119,104,101, +110,32,105,110,105,116,105,97,108,108,121,32,116,105,49,44,32,116,105,50, +32,61,61,32,45,109,97,116,104,46,104,117,103,101,44,32,109,97,116,104, +46,104,117,103,101,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111, +110,32,114,101,99,116,95,103,101,116,83,101,103,109,101,110,116,73,110,116, +101,114,115,101,99,116,105,111,110,73,110,100,105,99,101,115,40,120,44,121, +44,119,44,104,44,32,120,49,44,121,49,44,120,50,44,121,50,44,32,116, +105,49,44,116,105,50,41,13,10,32,32,116,105,49,44,32,116,105,50,32, +61,32,116,105,49,32,111,114,32,48,44,32,116,105,50,32,111,114,32,49, +13,10,32,32,108,111,99,97,108,32,100,120,44,32,100,121,32,61,32,120, +50,45,120,49,44,32,121,50,45,121,49,13,10,32,32,108,111,99,97,108, +32,110,120,44,32,110,121,13,10,32,32,108,111,99,97,108,32,110,120,49, +44,32,110,121,49,44,32,110,120,50,44,32,110,121,50,32,61,32,48,44, +48,44,48,44,48,13,10,32,32,108,111,99,97,108,32,112,44,32,113,44, +32,114,13,10,13,10,32,32,102,111,114,32,115,105,100,101,32,61,32,49, +44,52,32,100,111,13,10,32,32,105,102,32,32,32,115,105,100,101,32,61, +61,32,49,32,116,104,101,110,32,110,120,44,110,121,44,112,44,113,32,61, +32,45,49,44,32,32,48,44,32,45,100,120,44,32,120,49,32,45,32,120, +32,32,32,45,45,32,108,101,102,116,13,10,32,32,101,108,115,101,105,102, +32,115,105,100,101,32,61,61,32,50,32,116,104,101,110,32,110,120,44,110, +121,44,112,44,113,32,61,32,32,49,44,32,32,48,44,32,32,100,120,44, +32,120,32,43,32,119,32,45,32,120,49,32,45,45,32,114,105,103,104,116, +13,10,32,32,101,108,115,101,105,102,32,115,105,100,101,32,61,61,32,51, +32,116,104,101,110,32,110,120,44,110,121,44,112,44,113,32,61,32,32,48, +44,32,45,49,44,32,45,100,121,44,32,121,49,32,45,32,121,32,32,32, +45,45,32,116,111,112,13,10,32,32,101,108,115,101,32,32,32,32,32,32, +32,32,32,32,110,120,44,110,121,44,112,44,113,32,61,32,32,48,44,32, +32,49,44,32,32,100,121,44,32,121,32,43,32,104,32,45,32,121,49,32, +45,45,32,98,111,116,116,111,109,13,10,32,32,101,110,100,13,10,13,10, +32,32,105,102,32,112,32,61,61,32,48,32,116,104,101,110,13,10,32,32, +32,32,105,102,32,113,32,60,61,32,48,32,116,104,101,110,32,114,101,116, +117,114,110,32,110,105,108,32,101,110,100,13,10,32,32,101,108,115,101,13, +10,32,32,32,32,114,32,61,32,113,32,47,32,112,13,10,32,32,32,32, +105,102,32,112,32,60,32,48,32,116,104,101,110,13,10,32,32,32,32,105, +102,32,32,32,114,32,62,32,116,105,50,32,116,104,101,110,32,114,101,116, +117,114,110,32,110,105,108,13,10,32,32,32,32,101,108,115,101,105,102,32, +114,32,62,32,116,105,49,32,116,104,101,110,32,116,105,49,44,110,120,49, +44,110,121,49,32,61,32,114,44,110,120,44,110,121,13,10,32,32,32,32, +101,110,100,13,10,32,32,32,32,101,108,115,101,32,45,45,32,112,32,62, +32,48,13,10,32,32,32,32,105,102,32,32,32,114,32,60,32,116,105,49, 32,116,104,101,110,32,114,101,116,117,114,110,32,110,105,108,13,10,32,32, -32,32,32,32,32,32,101,108,115,101,105,102,32,114,32,60,32,116,105,50, -32,116,104,101,110,32,116,105,50,44,110,120,50,44,110,121,50,32,61,32, -114,44,110,120,44,110,121,13,10,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100, -13,10,32,32,101,110,100,13,10,13,10,32,32,114,101,116,117,114,110,32, -116,105,49,44,116,105,50,44,32,110,120,49,44,110,121,49,44,32,110,120, -50,44,110,121,50,13,10,101,110,100,13,10,13,10,45,45,32,67,97,108, -99,117,108,97,116,101,115,32,116,104,101,32,109,105,110,107,111,119,115,107, -121,32,100,105,102,102,101,114,101,110,99,101,32,98,101,116,119,101,101,110, -32,50,32,114,101,99,116,115,44,32,119,104,105,99,104,32,105,115,32,97, -110,111,116,104,101,114,32,114,101,99,116,13,10,108,111,99,97,108,32,102, -117,110,99,116,105,111,110,32,114,101,99,116,95,103,101,116,68,105,102,102, -40,120,49,44,121,49,44,119,49,44,104,49,44,32,120,50,44,121,50,44, -119,50,44,104,50,41,13,10,32,32,114,101,116,117,114,110,32,120,50,32, -45,32,120,49,32,45,32,119,49,44,13,10,32,32,32,32,32,32,32,32, -32,121,50,32,45,32,121,49,32,45,32,104,49,44,13,10,32,32,32,32, +32,32,101,108,115,101,105,102,32,114,32,60,32,116,105,50,32,116,104,101, +110,32,116,105,50,44,110,120,50,44,110,121,50,32,61,32,114,44,110,120, +44,110,121,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110, +100,13,10,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32, +32,114,101,116,117,114,110,32,116,105,49,44,116,105,50,44,32,110,120,49, +44,110,121,49,44,32,110,120,50,44,110,121,50,13,10,101,110,100,13,10, +13,10,45,45,32,67,97,108,99,117,108,97,116,101,115,32,116,104,101,32, +109,105,110,107,111,119,115,107,121,32,100,105,102,102,101,114,101,110,99,101, +32,98,101,116,119,101,101,110,32,50,32,114,101,99,116,115,44,32,119,104, +105,99,104,32,105,115,32,97,110,111,116,104,101,114,32,114,101,99,116,13, +10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,114,101,99,116, +95,103,101,116,68,105,102,102,40,120,49,44,121,49,44,119,49,44,104,49, +44,32,120,50,44,121,50,44,119,50,44,104,50,41,13,10,32,32,114,101, +116,117,114,110,32,120,50,32,45,32,120,49,32,45,32,119,49,44,13,10, +32,32,32,32,32,121,50,32,45,32,121,49,32,45,32,104,49,44,13,10, 32,32,32,32,32,119,49,32,43,32,119,50,44,13,10,32,32,32,32,32, -32,32,32,32,104,49,32,43,32,104,50,13,10,101,110,100,13,10,13,10, -108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,114,101,99,116,95, -99,111,110,116,97,105,110,115,80,111,105,110,116,40,120,44,121,44,119,44, -104,44,32,112,120,44,112,121,41,13,10,32,32,114,101,116,117,114,110,32, -112,120,32,45,32,120,32,62,32,68,69,76,84,65,32,32,32,32,32,32, -97,110,100,32,112,121,32,45,32,121,32,62,32,68,69,76,84,65,32,97, -110,100,13,10,32,32,32,32,32,32,32,32,32,120,32,43,32,119,32,45, -32,112,120,32,62,32,68,69,76,84,65,32,32,97,110,100,32,121,32,43, -32,104,32,45,32,112,121,32,62,32,68,69,76,84,65,13,10,101,110,100, -13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,114, -101,99,116,95,105,115,73,110,116,101,114,115,101,99,116,105,110,103,40,120, +104,49,32,43,32,104,50,13,10,101,110,100,13,10,13,10,108,111,99,97, +108,32,102,117,110,99,116,105,111,110,32,114,101,99,116,95,99,111,110,116, +97,105,110,115,80,111,105,110,116,40,120,44,121,44,119,44,104,44,32,112, +120,44,112,121,41,13,10,32,32,114,101,116,117,114,110,32,112,120,32,45, +32,120,32,62,32,68,69,76,84,65,32,32,32,32,97,110,100,32,112,121, +32,45,32,121,32,62,32,68,69,76,84,65,32,97,110,100,13,10,32,32, +32,32,32,120,32,43,32,119,32,45,32,112,120,32,62,32,68,69,76,84, +65,32,32,97,110,100,32,121,32,43,32,104,32,45,32,112,121,32,62,32, +68,69,76,84,65,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32, +102,117,110,99,116,105,111,110,32,114,101,99,116,95,105,115,73,110,116,101, +114,115,101,99,116,105,110,103,40,120,49,44,121,49,44,119,49,44,104,49, +44,32,120,50,44,121,50,44,119,50,44,104,50,41,13,10,32,32,114,101, +116,117,114,110,32,120,49,32,60,32,120,50,43,119,50,32,97,110,100,32, +120,50,32,60,32,120,49,43,119,49,32,97,110,100,13,10,32,32,32,32, +32,121,49,32,60,32,121,50,43,104,50,32,97,110,100,32,121,50,32,60, +32,121,49,43,104,49,13,10,101,110,100,13,10,13,10,108,111,99,97,108, +32,102,117,110,99,116,105,111,110,32,114,101,99,116,95,103,101,116,83,113, +117,97,114,101,68,105,115,116,97,110,99,101,40,120,49,44,121,49,44,119, +49,44,104,49,44,32,120,50,44,121,50,44,119,50,44,104,50,41,13,10, +32,32,108,111,99,97,108,32,100,120,32,61,32,120,49,32,45,32,120,50, +32,43,32,40,119,49,32,45,32,119,50,41,47,50,13,10,32,32,108,111, +99,97,108,32,100,121,32,61,32,121,49,32,45,32,121,50,32,43,32,40, +104,49,32,45,32,104,50,41,47,50,13,10,32,32,114,101,116,117,114,110, +32,100,120,42,100,120,32,43,32,100,121,42,100,121,13,10,101,110,100,13, +10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,114,101, +99,116,95,100,101,116,101,99,116,67,111,108,108,105,115,105,111,110,40,120, 49,44,121,49,44,119,49,44,104,49,44,32,120,50,44,121,50,44,119,50, -44,104,50,41,13,10,32,32,114,101,116,117,114,110,32,120,49,32,60,32, -120,50,43,119,50,32,97,110,100,32,120,50,32,60,32,120,49,43,119,49, -32,97,110,100,13,10,32,32,32,32,32,32,32,32,32,121,49,32,60,32, -121,50,43,104,50,32,97,110,100,32,121,50,32,60,32,121,49,43,104,49, -13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116, -105,111,110,32,114,101,99,116,95,103,101,116,83,113,117,97,114,101,68,105, -115,116,97,110,99,101,40,120,49,44,121,49,44,119,49,44,104,49,44,32, -120,50,44,121,50,44,119,50,44,104,50,41,13,10,32,32,108,111,99,97, -108,32,100,120,32,61,32,120,49,32,45,32,120,50,32,43,32,40,119,49, -32,45,32,119,50,41,47,50,13,10,32,32,108,111,99,97,108,32,100,121, -32,61,32,121,49,32,45,32,121,50,32,43,32,40,104,49,32,45,32,104, -50,41,47,50,13,10,32,32,114,101,116,117,114,110,32,100,120,42,100,120, -32,43,32,100,121,42,100,121,13,10,101,110,100,13,10,13,10,108,111,99, -97,108,32,102,117,110,99,116,105,111,110,32,114,101,99,116,95,100,101,116, -101,99,116,67,111,108,108,105,115,105,111,110,40,120,49,44,121,49,44,119, -49,44,104,49,44,32,120,50,44,121,50,44,119,50,44,104,50,44,32,103, -111,97,108,88,44,32,103,111,97,108,89,41,13,10,32,32,103,111,97,108, -88,32,61,32,103,111,97,108,88,32,111,114,32,120,49,13,10,32,32,103, -111,97,108,89,32,61,32,103,111,97,108,89,32,111,114,32,121,49,13,10, -13,10,32,32,108,111,99,97,108,32,100,120,44,32,100,121,32,32,32,32, -32,32,61,32,103,111,97,108,88,32,45,32,120,49,44,32,103,111,97,108, -89,32,45,32,121,49,13,10,32,32,108,111,99,97,108,32,120,44,121,44, -119,44,104,32,32,32,32,32,61,32,114,101,99,116,95,103,101,116,68,105, -102,102,40,120,49,44,121,49,44,119,49,44,104,49,44,32,120,50,44,121, -50,44,119,50,44,104,50,41,13,10,13,10,32,32,108,111,99,97,108,32, -111,118,101,114,108,97,112,115,44,32,116,105,44,32,110,120,44,32,110,121, -13,10,13,10,32,32,105,102,32,114,101,99,116,95,99,111,110,116,97,105, -110,115,80,111,105,110,116,40,120,44,121,44,119,44,104,44,32,48,44,48, -41,32,116,104,101,110,32,45,45,32,105,116,101,109,32,119,97,115,32,105, -110,116,101,114,115,101,99,116,105,110,103,32,111,116,104,101,114,13,10,32, -32,32,32,108,111,99,97,108,32,112,120,44,32,112,121,32,32,32,32,61, -32,114,101,99,116,95,103,101,116,78,101,97,114,101,115,116,67,111,114,110, -101,114,40,120,44,121,44,119,44,104,44,32,48,44,32,48,41,13,10,32, -32,32,32,108,111,99,97,108,32,119,105,44,32,104,105,32,32,32,32,61, -32,109,105,110,40,119,49,44,32,97,98,115,40,112,120,41,41,44,32,109, -105,110,40,104,49,44,32,97,98,115,40,112,121,41,41,32,45,45,32,97, -114,101,97,32,111,102,32,105,110,116,101,114,115,101,99,116,105,111,110,13, -10,32,32,32,32,116,105,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,61,32,45,119,105,32,42,32,104,105,32,45,45,32,116,105,32,105,115, -32,116,104,101,32,110,101,103,97,116,105,118,101,32,97,114,101,97,32,111, -102,32,105,110,116,101,114,115,101,99,116,105,111,110,13,10,32,32,32,32, -111,118,101,114,108,97,112,115,32,61,32,116,114,117,101,13,10,32,32,101, -108,115,101,13,10,32,32,32,32,108,111,99,97,108,32,116,105,49,44,116, -105,50,44,110,120,49,44,110,121,49,32,61,32,114,101,99,116,95,103,101, -116,83,101,103,109,101,110,116,73,110,116,101,114,115,101,99,116,105,111,110, -73,110,100,105,99,101,115,40,120,44,121,44,119,44,104,44,32,48,44,48, -44,100,120,44,100,121,44,32,45,109,97,116,104,46,104,117,103,101,44,32, -109,97,116,104,46,104,117,103,101,41,13,10,13,10,32,32,32,32,45,45, +44,104,50,44,32,103,111,97,108,88,44,32,103,111,97,108,89,41,13,10, +32,32,103,111,97,108,88,32,61,32,103,111,97,108,88,32,111,114,32,120, +49,13,10,32,32,103,111,97,108,89,32,61,32,103,111,97,108,89,32,111, +114,32,121,49,13,10,13,10,32,32,108,111,99,97,108,32,100,120,44,32, +100,121,32,32,32,32,61,32,103,111,97,108,88,32,45,32,120,49,44,32, +103,111,97,108,89,32,45,32,121,49,13,10,32,32,108,111,99,97,108,32, +120,44,121,44,119,44,104,32,32,32,61,32,114,101,99,116,95,103,101,116, +68,105,102,102,40,120,49,44,121,49,44,119,49,44,104,49,44,32,120,50, +44,121,50,44,119,50,44,104,50,41,13,10,13,10,32,32,108,111,99,97, +108,32,111,118,101,114,108,97,112,115,44,32,116,105,44,32,110,120,44,32, +110,121,13,10,13,10,32,32,105,102,32,114,101,99,116,95,99,111,110,116, +97,105,110,115,80,111,105,110,116,40,120,44,121,44,119,44,104,44,32,48, +44,48,41,32,116,104,101,110,32,45,45,32,105,116,101,109,32,119,97,115, +32,105,110,116,101,114,115,101,99,116,105,110,103,32,111,116,104,101,114,13, +10,32,32,108,111,99,97,108,32,112,120,44,32,112,121,32,32,61,32,114, +101,99,116,95,103,101,116,78,101,97,114,101,115,116,67,111,114,110,101,114, +40,120,44,121,44,119,44,104,44,32,48,44,32,48,41,13,10,32,32,108, +111,99,97,108,32,119,105,44,32,104,105,32,32,61,32,109,105,110,40,119, +49,44,32,97,98,115,40,112,120,41,41,44,32,109,105,110,40,104,49,44, +32,97,98,115,40,112,121,41,41,32,45,45,32,97,114,101,97,32,111,102, +32,105,110,116,101,114,115,101,99,116,105,111,110,13,10,32,32,116,105,32, +32,32,32,32,32,32,32,61,32,45,119,105,32,42,32,104,105,32,45,45, +32,116,105,32,105,115,32,116,104,101,32,110,101,103,97,116,105,118,101,32, +97,114,101,97,32,111,102,32,105,110,116,101,114,115,101,99,116,105,111,110, +13,10,32,32,111,118,101,114,108,97,112,115,32,61,32,116,114,117,101,13, +10,32,32,101,108,115,101,13,10,32,32,108,111,99,97,108,32,116,105,49, +44,116,105,50,44,110,120,49,44,110,121,49,32,61,32,114,101,99,116,95, +103,101,116,83,101,103,109,101,110,116,73,110,116,101,114,115,101,99,116,105, +111,110,73,110,100,105,99,101,115,40,120,44,121,44,119,44,104,44,32,48, +44,48,44,100,120,44,100,121,44,32,45,109,97,116,104,46,104,117,103,101, +44,32,109,97,116,104,46,104,117,103,101,41,13,10,13,10,32,32,45,45, 32,105,116,101,109,32,116,117,110,110,101,108,115,32,105,110,116,111,32,111, -116,104,101,114,13,10,32,32,32,32,105,102,32,116,105,49,13,10,32,32, -32,32,97,110,100,32,116,105,49,32,60,32,49,13,10,32,32,32,32,97, -110,100,32,40,97,98,115,40,116,105,49,32,45,32,116,105,50,41,32,62, -61,32,68,69,76,84,65,41,32,45,45,32,115,112,101,99,105,97,108,32, -99,97,115,101,32,102,111,114,32,114,101,99,116,32,103,111,105,110,103,32, -116,104,114,111,117,103,104,32,97,110,111,116,104,101,114,32,114,101,99,116, -39,115,32,99,111,114,110,101,114,13,10,32,32,32,32,97,110,100,32,40, -48,32,60,32,116,105,49,32,43,32,68,69,76,84,65,13,10,32,32,32, -32,32,32,111,114,32,48,32,61,61,32,116,105,49,32,97,110,100,32,116, -105,50,32,62,32,48,41,13,10,32,32,32,32,116,104,101,110,13,10,32, -32,32,32,32,32,116,105,44,32,110,120,44,32,110,121,32,61,32,116,105, -49,44,32,110,120,49,44,32,110,121,49,13,10,32,32,32,32,32,32,111, -118,101,114,108,97,112,115,32,32,32,61,32,102,97,108,115,101,13,10,32, -32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32,32,105, -102,32,110,111,116,32,116,105,32,116,104,101,110,32,114,101,116,117,114,110, -32,101,110,100,13,10,13,10,32,32,108,111,99,97,108,32,116,120,44,32, -116,121,13,10,13,10,32,32,105,102,32,111,118,101,114,108,97,112,115,32, -116,104,101,110,13,10,32,32,32,32,105,102,32,100,120,32,61,61,32,48, +116,104,101,114,13,10,32,32,105,102,32,116,105,49,13,10,32,32,97,110, +100,32,116,105,49,32,60,32,49,13,10,32,32,97,110,100,32,40,97,98, +115,40,116,105,49,32,45,32,116,105,50,41,32,62,61,32,68,69,76,84, +65,41,32,45,45,32,115,112,101,99,105,97,108,32,99,97,115,101,32,102, +111,114,32,114,101,99,116,32,103,111,105,110,103,32,116,104,114,111,117,103, +104,32,97,110,111,116,104,101,114,32,114,101,99,116,39,115,32,99,111,114, +110,101,114,13,10,32,32,97,110,100,32,40,48,32,60,32,116,105,49,32, +43,32,68,69,76,84,65,13,10,32,32,32,32,111,114,32,48,32,61,61, +32,116,105,49,32,97,110,100,32,116,105,50,32,62,32,48,41,13,10,32, +32,116,104,101,110,13,10,32,32,32,32,116,105,44,32,110,120,44,32,110, +121,32,61,32,116,105,49,44,32,110,120,49,44,32,110,121,49,13,10,32, +32,32,32,111,118,101,114,108,97,112,115,32,32,32,61,32,102,97,108,115, +101,13,10,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32, +32,105,102,32,110,111,116,32,116,105,32,116,104,101,110,32,114,101,116,117, +114,110,32,101,110,100,13,10,13,10,32,32,108,111,99,97,108,32,116,120, +44,32,116,121,13,10,13,10,32,32,105,102,32,111,118,101,114,108,97,112, +115,32,116,104,101,110,13,10,32,32,105,102,32,100,120,32,61,61,32,48, 32,97,110,100,32,100,121,32,61,61,32,48,32,116,104,101,110,13,10,32, -32,32,32,32,32,45,45,32,105,110,116,101,114,115,101,99,116,105,110,103, -32,97,110,100,32,110,111,116,32,109,111,118,105,110,103,32,45,32,117,115, -101,32,109,105,110,105,109,117,109,32,100,105,115,112,108,97,99,101,109,101, -110,116,32,118,101,99,116,111,114,13,10,32,32,32,32,32,32,108,111,99, -97,108,32,112,120,44,32,112,121,32,61,32,114,101,99,116,95,103,101,116, -78,101,97,114,101,115,116,67,111,114,110,101,114,40,120,44,121,44,119,44, -104,44,32,48,44,48,41,13,10,32,32,32,32,32,32,105,102,32,97,98, -115,40,112,120,41,32,60,32,97,98,115,40,112,121,41,32,116,104,101,110, -32,112,121,32,61,32,48,32,101,108,115,101,32,112,120,32,61,32,48,32, -101,110,100,13,10,32,32,32,32,32,32,110,120,44,32,110,121,32,61,32, -115,105,103,110,40,112,120,41,44,32,115,105,103,110,40,112,121,41,13,10, -32,32,32,32,32,32,116,120,44,32,116,121,32,61,32,120,49,32,43,32, -112,120,44,32,121,49,32,43,32,112,121,13,10,32,32,32,32,101,108,115, -101,13,10,32,32,32,32,32,32,45,45,32,105,110,116,101,114,115,101,99, -116,105,110,103,32,97,110,100,32,109,111,118,105,110,103,32,45,32,109,111, -118,101,32,105,110,32,116,104,101,32,111,112,112,111,115,105,116,101,32,100, -105,114,101,99,116,105,111,110,13,10,32,32,32,32,32,32,108,111,99,97, -108,32,116,105,49,44,32,95,13,10,32,32,32,32,32,32,116,105,49,44, -95,44,110,120,44,110,121,32,61,32,114,101,99,116,95,103,101,116,83,101, -103,109,101,110,116,73,110,116,101,114,115,101,99,116,105,111,110,73,110,100, -105,99,101,115,40,120,44,121,44,119,44,104,44,32,48,44,48,44,100,120, -44,100,121,44,32,45,109,97,116,104,46,104,117,103,101,44,32,49,41,13, -10,32,32,32,32,32,32,105,102,32,110,111,116,32,116,105,49,32,116,104, -101,110,32,114,101,116,117,114,110,32,101,110,100,13,10,32,32,32,32,32, -32,116,120,44,32,116,121,32,61,32,120,49,32,43,32,100,120,32,42,32, -116,105,49,44,32,121,49,32,43,32,100,121,32,42,32,116,105,49,13,10, -32,32,32,32,101,110,100,13,10,32,32,101,108,115,101,32,45,45,32,116, -117,110,110,101,108,13,10,32,32,32,32,116,120,44,32,116,121,32,61,32, -120,49,32,43,32,100,120,32,42,32,116,105,44,32,121,49,32,43,32,100, -121,32,42,32,116,105,13,10,32,32,101,110,100,13,10,13,10,32,32,114, -101,116,117,114,110,32,123,13,10,32,32,32,32,111,118,101,114,108,97,112, -115,32,32,61,32,111,118,101,114,108,97,112,115,44,13,10,32,32,32,32, -116,105,32,32,32,32,32,32,32,32,61,32,116,105,44,13,10,32,32,32, -32,109,111,118,101,32,32,32,32,32,32,61,32,123,120,32,61,32,100,120, -44,32,121,32,61,32,100,121,125,44,13,10,32,32,32,32,110,111,114,109, -97,108,32,32,32,32,61,32,123,120,32,61,32,110,120,44,32,121,32,61, -32,110,121,125,44,13,10,32,32,32,32,116,111,117,99,104,32,32,32,32, -32,61,32,123,120,32,61,32,116,120,44,32,121,32,61,32,116,121,125,44, -13,10,32,32,32,32,105,116,101,109,82,101,99,116,32,32,61,32,123,120, -32,61,32,120,49,44,32,121,32,61,32,121,49,44,32,119,32,61,32,119, -49,44,32,104,32,61,32,104,49,125,44,13,10,32,32,32,32,111,116,104, -101,114,82,101,99,116,32,61,32,123,120,32,61,32,120,50,44,32,121,32, -61,32,121,50,44,32,119,32,61,32,119,50,44,32,104,32,61,32,104,50, -125,13,10,32,32,125,13,10,101,110,100,13,10,13,10,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45, -45,32,71,114,105,100,32,102,117,110,99,116,105,111,110,115,13,10,45,45, +32,32,32,45,45,32,105,110,116,101,114,115,101,99,116,105,110,103,32,97, +110,100,32,110,111,116,32,109,111,118,105,110,103,32,45,32,117,115,101,32, +109,105,110,105,109,117,109,32,100,105,115,112,108,97,99,101,109,101,110,116, +32,118,101,99,116,111,114,13,10,32,32,32,32,108,111,99,97,108,32,112, +120,44,32,112,121,32,61,32,114,101,99,116,95,103,101,116,78,101,97,114, +101,115,116,67,111,114,110,101,114,40,120,44,121,44,119,44,104,44,32,48, +44,48,41,13,10,32,32,32,32,105,102,32,97,98,115,40,112,120,41,32, +60,32,97,98,115,40,112,121,41,32,116,104,101,110,32,112,121,32,61,32, +48,32,101,108,115,101,32,112,120,32,61,32,48,32,101,110,100,13,10,32, +32,32,32,110,120,44,32,110,121,32,61,32,115,105,103,110,40,112,120,41, +44,32,115,105,103,110,40,112,121,41,13,10,32,32,32,32,116,120,44,32, +116,121,32,61,32,120,49,32,43,32,112,120,44,32,121,49,32,43,32,112, +121,13,10,32,32,101,108,115,101,13,10,32,32,32,32,45,45,32,105,110, +116,101,114,115,101,99,116,105,110,103,32,97,110,100,32,109,111,118,105,110, +103,32,45,32,109,111,118,101,32,105,110,32,116,104,101,32,111,112,112,111, +115,105,116,101,32,100,105,114,101,99,116,105,111,110,13,10,32,32,32,32, +108,111,99,97,108,32,116,105,49,44,32,95,13,10,32,32,32,32,116,105, +49,44,95,44,110,120,44,110,121,32,61,32,114,101,99,116,95,103,101,116, +83,101,103,109,101,110,116,73,110,116,101,114,115,101,99,116,105,111,110,73, +110,100,105,99,101,115,40,120,44,121,44,119,44,104,44,32,48,44,48,44, +100,120,44,100,121,44,32,45,109,97,116,104,46,104,117,103,101,44,32,49, +41,13,10,32,32,32,32,105,102,32,110,111,116,32,116,105,49,32,116,104, +101,110,32,114,101,116,117,114,110,32,101,110,100,13,10,32,32,32,32,116, +120,44,32,116,121,32,61,32,120,49,32,43,32,100,120,32,42,32,116,105, +49,44,32,121,49,32,43,32,100,121,32,42,32,116,105,49,13,10,32,32, +101,110,100,13,10,32,32,101,108,115,101,32,45,45,32,116,117,110,110,101, +108,13,10,32,32,116,120,44,32,116,121,32,61,32,120,49,32,43,32,100, +120,32,42,32,116,105,44,32,121,49,32,43,32,100,121,32,42,32,116,105, +13,10,32,32,101,110,100,13,10,13,10,32,32,114,101,116,117,114,110,32, +123,13,10,32,32,111,118,101,114,108,97,112,115,32,32,61,32,111,118,101, +114,108,97,112,115,44,13,10,32,32,116,105,32,32,32,32,61,32,116,105, +44,13,10,32,32,109,111,118,101,32,32,32,32,61,32,123,120,32,61,32, +100,120,44,32,121,32,61,32,100,121,125,44,13,10,32,32,110,111,114,109, +97,108,32,32,61,32,123,120,32,61,32,110,120,44,32,121,32,61,32,110, +121,125,44,13,10,32,32,116,111,117,99,104,32,32,32,61,32,123,120,32, +61,32,116,120,44,32,121,32,61,32,116,121,125,44,13,10,32,32,105,116, +101,109,82,101,99,116,32,32,61,32,123,120,32,61,32,120,49,44,32,121, +32,61,32,121,49,44,32,119,32,61,32,119,49,44,32,104,32,61,32,104, +49,125,44,13,10,32,32,111,116,104,101,114,82,101,99,116,32,61,32,123, +120,32,61,32,120,50,44,32,121,32,61,32,121,50,44,32,119,32,61,32, +119,50,44,32,104,32,61,32,104,50,125,13,10,32,32,125,13,10,101,110, +100,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,13,10,45,45,32,71,114,105,100,32,102,117,110, +99,116,105,111,110,115,13,10,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,103, -114,105,100,95,116,111,87,111,114,108,100,40,99,101,108,108,83,105,122,101, -44,32,99,120,44,32,99,121,41,13,10,32,32,114,101,116,117,114,110,32, -40,99,120,32,45,32,49,41,42,99,101,108,108,83,105,122,101,44,32,40, -99,121,45,49,41,42,99,101,108,108,83,105,122,101,13,10,101,110,100,13, -10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,103,114, -105,100,95,116,111,67,101,108,108,40,99,101,108,108,83,105,122,101,44,32, -120,44,32,121,41,13,10,32,32,114,101,116,117,114,110,32,102,108,111,111, -114,40,120,32,47,32,99,101,108,108,83,105,122,101,41,32,43,32,49,44, -32,102,108,111,111,114,40,121,32,47,32,99,101,108,108,83,105,122,101,41, -32,43,32,49,13,10,101,110,100,13,10,13,10,45,45,32,103,114,105,100, -95,116,114,97,118,101,114,115,101,42,32,102,117,110,99,116,105,111,110,115, -32,97,114,101,32,98,97,115,101,100,32,111,110,32,34,65,32,70,97,115, -116,32,86,111,120,101,108,32,84,114,97,118,101,114,115,97,108,32,65,108, -103,111,114,105,116,104,109,32,102,111,114,32,82,97,121,32,84,114,97,99, -105,110,103,34,44,13,10,45,45,32,98,121,32,74,111,104,110,32,65,109, -97,110,105,100,101,115,32,97,110,100,32,65,110,100,114,101,119,32,87,111, -111,32,45,32,104,116,116,112,58,47,47,119,119,119,46,99,115,101,46,121, -111,114,107,117,46,99,97,47,126,97,109,97,110,97,47,114,101,115,101,97, -114,99,104,47,103,114,105,100,46,112,100,102,13,10,45,45,32,73,116,32, -104,97,115,32,98,101,101,110,32,109,111,100,105,102,105,101,100,32,116,111, -32,105,110,99,108,117,100,101,32,98,111,116,104,32,99,101,108,108,115,32, -119,104,101,110,32,116,104,101,32,114,97,121,32,34,116,111,117,99,104,101, -115,32,97,32,103,114,105,100,32,99,111,114,110,101,114,34,44,13,10,45, -45,32,97,110,100,32,119,105,116,104,32,97,32,100,105,102,102,101,114,101, -110,116,32,101,120,105,116,32,99,111,110,100,105,116,105,111,110,13,10,13, -10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,103,114,105,100, +45,45,45,45,45,45,45,45,45,45,13,10,13,10,108,111,99,97,108,32, +102,117,110,99,116,105,111,110,32,103,114,105,100,95,116,111,87,111,114,108, +100,40,99,101,108,108,83,105,122,101,44,32,99,120,44,32,99,121,41,13, +10,32,32,114,101,116,117,114,110,32,40,99,120,32,45,32,49,41,42,99, +101,108,108,83,105,122,101,44,32,40,99,121,45,49,41,42,99,101,108,108, +83,105,122,101,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102, +117,110,99,116,105,111,110,32,103,114,105,100,95,116,111,67,101,108,108,40, +99,101,108,108,83,105,122,101,44,32,120,44,32,121,41,13,10,32,32,114, +101,116,117,114,110,32,102,108,111,111,114,40,120,32,47,32,99,101,108,108, +83,105,122,101,41,32,43,32,49,44,32,102,108,111,111,114,40,121,32,47, +32,99,101,108,108,83,105,122,101,41,32,43,32,49,13,10,101,110,100,13, +10,13,10,45,45,32,103,114,105,100,95,116,114,97,118,101,114,115,101,42, +32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,98,97,115,101,100, +32,111,110,32,34,65,32,70,97,115,116,32,86,111,120,101,108,32,84,114, +97,118,101,114,115,97,108,32,65,108,103,111,114,105,116,104,109,32,102,111, +114,32,82,97,121,32,84,114,97,99,105,110,103,34,44,13,10,45,45,32, +98,121,32,74,111,104,110,32,65,109,97,110,105,100,101,115,32,97,110,100, +32,65,110,100,114,101,119,32,87,111,111,32,45,32,104,116,116,112,58,47, +47,119,119,119,46,99,115,101,46,121,111,114,107,117,46,99,97,47,126,97, +109,97,110,97,47,114,101,115,101,97,114,99,104,47,103,114,105,100,46,112, +100,102,13,10,45,45,32,73,116,32,104,97,115,32,98,101,101,110,32,109, +111,100,105,102,105,101,100,32,116,111,32,105,110,99,108,117,100,101,32,98, +111,116,104,32,99,101,108,108,115,32,119,104,101,110,32,116,104,101,32,114, +97,121,32,34,116,111,117,99,104,101,115,32,97,32,103,114,105,100,32,99, +111,114,110,101,114,34,44,13,10,45,45,32,97,110,100,32,119,105,116,104, +32,97,32,100,105,102,102,101,114,101,110,116,32,101,120,105,116,32,99,111, +110,100,105,116,105,111,110,13,10,13,10,108,111,99,97,108,32,102,117,110, +99,116,105,111,110,32,103,114,105,100,95,116,114,97,118,101,114,115,101,95, +105,110,105,116,83,116,101,112,40,99,101,108,108,83,105,122,101,44,32,99, +116,44,32,116,49,44,32,116,50,41,13,10,32,32,108,111,99,97,108,32, +118,32,61,32,116,50,32,45,32,116,49,13,10,32,32,105,102,32,32,32, +118,32,62,32,48,32,116,104,101,110,13,10,32,32,114,101,116,117,114,110, +32,32,49,44,32,32,99,101,108,108,83,105,122,101,32,47,32,118,44,32, +40,40,99,116,32,43,32,118,41,32,42,32,99,101,108,108,83,105,122,101, +32,45,32,116,49,41,32,47,32,118,13,10,32,32,101,108,115,101,105,102, +32,118,32,60,32,48,32,116,104,101,110,13,10,32,32,114,101,116,117,114, +110,32,45,49,44,32,45,99,101,108,108,83,105,122,101,32,47,32,118,44, +32,40,40,99,116,32,43,32,118,32,45,32,49,41,32,42,32,99,101,108, +108,83,105,122,101,32,45,32,116,49,41,32,47,32,118,13,10,32,32,101, +108,115,101,13,10,32,32,114,101,116,117,114,110,32,48,44,32,109,97,116, +104,46,104,117,103,101,44,32,109,97,116,104,46,104,117,103,101,13,10,32, +32,101,110,100,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102, +117,110,99,116,105,111,110,32,103,114,105,100,95,116,114,97,118,101,114,115, +101,40,99,101,108,108,83,105,122,101,44,32,120,49,44,121,49,44,120,50, +44,121,50,44,32,102,41,13,10,32,32,108,111,99,97,108,32,99,120,49, +44,99,121,49,32,32,32,32,61,32,103,114,105,100,95,116,111,67,101,108, +108,40,99,101,108,108,83,105,122,101,44,32,120,49,44,121,49,41,13,10, +32,32,108,111,99,97,108,32,99,120,50,44,99,121,50,32,32,32,32,61, +32,103,114,105,100,95,116,111,67,101,108,108,40,99,101,108,108,83,105,122, +101,44,32,120,50,44,121,50,41,13,10,32,32,108,111,99,97,108,32,115, +116,101,112,88,44,32,100,120,44,32,116,120,32,32,61,32,103,114,105,100, 95,116,114,97,118,101,114,115,101,95,105,110,105,116,83,116,101,112,40,99, -101,108,108,83,105,122,101,44,32,99,116,44,32,116,49,44,32,116,50,41, -13,10,32,32,108,111,99,97,108,32,118,32,61,32,116,50,32,45,32,116, -49,13,10,32,32,105,102,32,32,32,32,32,118,32,62,32,48,32,116,104, -101,110,13,10,32,32,32,32,114,101,116,117,114,110,32,32,49,44,32,32, -99,101,108,108,83,105,122,101,32,47,32,118,44,32,40,40,99,116,32,43, -32,118,41,32,42,32,99,101,108,108,83,105,122,101,32,45,32,116,49,41, -32,47,32,118,13,10,32,32,101,108,115,101,105,102,32,118,32,60,32,48, -32,116,104,101,110,13,10,32,32,32,32,114,101,116,117,114,110,32,45,49, -44,32,45,99,101,108,108,83,105,122,101,32,47,32,118,44,32,40,40,99, -116,32,43,32,118,32,45,32,49,41,32,42,32,99,101,108,108,83,105,122, -101,32,45,32,116,49,41,32,47,32,118,13,10,32,32,101,108,115,101,13, -10,32,32,32,32,114,101,116,117,114,110,32,48,44,32,109,97,116,104,46, -104,117,103,101,44,32,109,97,116,104,46,104,117,103,101,13,10,32,32,101, -110,100,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110, -99,116,105,111,110,32,103,114,105,100,95,116,114,97,118,101,114,115,101,40, -99,101,108,108,83,105,122,101,44,32,120,49,44,121,49,44,120,50,44,121, -50,44,32,102,41,13,10,32,32,108,111,99,97,108,32,99,120,49,44,99, -121,49,32,32,32,32,32,32,32,32,61,32,103,114,105,100,95,116,111,67, -101,108,108,40,99,101,108,108,83,105,122,101,44,32,120,49,44,121,49,41, -13,10,32,32,108,111,99,97,108,32,99,120,50,44,99,121,50,32,32,32, -32,32,32,32,32,61,32,103,114,105,100,95,116,111,67,101,108,108,40,99, -101,108,108,83,105,122,101,44,32,120,50,44,121,50,41,13,10,32,32,108, -111,99,97,108,32,115,116,101,112,88,44,32,100,120,44,32,116,120,32,32, -61,32,103,114,105,100,95,116,114,97,118,101,114,115,101,95,105,110,105,116, -83,116,101,112,40,99,101,108,108,83,105,122,101,44,32,99,120,49,44,32, -120,49,44,32,120,50,41,13,10,32,32,108,111,99,97,108,32,115,116,101, -112,89,44,32,100,121,44,32,116,121,32,32,61,32,103,114,105,100,95,116, -114,97,118,101,114,115,101,95,105,110,105,116,83,116,101,112,40,99,101,108, -108,83,105,122,101,44,32,99,121,49,44,32,121,49,44,32,121,50,41,13, -10,32,32,108,111,99,97,108,32,99,120,44,99,121,32,32,32,32,32,32, -32,32,32,32,61,32,99,120,49,44,99,121,49,13,10,13,10,32,32,102, -40,99,120,44,32,99,121,41,13,10,13,10,32,32,45,45,32,84,104,101, -32,100,101,102,97,117,108,116,32,105,109,112,108,101,109,101,110,116,97,116, -105,111,110,32,104,97,100,32,97,110,32,105,110,102,105,110,105,116,101,32, -108,111,111,112,32,112,114,111,98,108,101,109,32,119,104,101,110,13,10,32, -32,45,45,32,97,112,112,114,111,97,99,104,105,110,103,32,116,104,101,32, -108,97,115,116,32,99,101,108,108,32,105,110,32,115,111,109,101,32,111,99, -99,97,115,115,105,111,110,115,46,32,87,101,32,102,105,110,105,115,104,32, -105,116,101,114,97,116,105,110,103,13,10,32,32,45,45,32,119,104,101,110, -32,119,101,32,97,114,101,32,42,110,101,120,116,42,32,116,111,32,116,104, -101,32,108,97,115,116,32,99,101,108,108,13,10,32,32,119,104,105,108,101, -32,97,98,115,40,99,120,32,45,32,99,120,50,41,32,43,32,97,98,115, -40,99,121,32,45,32,99,121,50,41,32,62,32,49,32,100,111,13,10,32, -32,32,32,105,102,32,116,120,32,60,32,116,121,32,116,104,101,110,13,10, -32,32,32,32,32,32,116,120,44,32,99,120,32,61,32,116,120,32,43,32, -100,120,44,32,99,120,32,43,32,115,116,101,112,88,13,10,32,32,32,32, -32,32,102,40,99,120,44,32,99,121,41,13,10,32,32,32,32,101,108,115, -101,13,10,32,32,32,32,32,32,45,45,32,65,100,100,105,116,105,111,110, +101,108,108,83,105,122,101,44,32,99,120,49,44,32,120,49,44,32,120,50, +41,13,10,32,32,108,111,99,97,108,32,115,116,101,112,89,44,32,100,121, +44,32,116,121,32,32,61,32,103,114,105,100,95,116,114,97,118,101,114,115, +101,95,105,110,105,116,83,116,101,112,40,99,101,108,108,83,105,122,101,44, +32,99,121,49,44,32,121,49,44,32,121,50,41,13,10,32,32,108,111,99, +97,108,32,99,120,44,99,121,32,32,32,32,32,32,61,32,99,120,49,44, +99,121,49,13,10,13,10,32,32,102,40,99,120,44,32,99,121,41,13,10, +13,10,32,32,45,45,32,84,104,101,32,100,101,102,97,117,108,116,32,105, +109,112,108,101,109,101,110,116,97,116,105,111,110,32,104,97,100,32,97,110, +32,105,110,102,105,110,105,116,101,32,108,111,111,112,32,112,114,111,98,108, +101,109,32,119,104,101,110,13,10,32,32,45,45,32,97,112,112,114,111,97, +99,104,105,110,103,32,116,104,101,32,108,97,115,116,32,99,101,108,108,32, +105,110,32,115,111,109,101,32,111,99,99,97,115,115,105,111,110,115,46,32, +87,101,32,102,105,110,105,115,104,32,105,116,101,114,97,116,105,110,103,13, +10,32,32,45,45,32,119,104,101,110,32,119,101,32,97,114,101,32,42,110, +101,120,116,42,32,116,111,32,116,104,101,32,108,97,115,116,32,99,101,108, +108,13,10,32,32,119,104,105,108,101,32,97,98,115,40,99,120,32,45,32, +99,120,50,41,32,43,32,97,98,115,40,99,121,32,45,32,99,121,50,41, +32,62,32,49,32,100,111,13,10,32,32,105,102,32,116,120,32,60,32,116, +121,32,116,104,101,110,13,10,32,32,32,32,116,120,44,32,99,120,32,61, +32,116,120,32,43,32,100,120,44,32,99,120,32,43,32,115,116,101,112,88, +13,10,32,32,32,32,102,40,99,120,44,32,99,121,41,13,10,32,32,101, +108,115,101,13,10,32,32,32,32,45,45,32,65,100,100,105,116,105,111,110, 58,32,105,110,99,108,117,100,101,32,98,111,116,104,32,99,101,108,108,115, 32,119,104,101,110,32,103,111,105,110,103,32,116,104,114,111,117,103,104,32, -99,111,114,110,101,114,115,13,10,32,32,32,32,32,32,105,102,32,116,120, -32,61,61,32,116,121,32,116,104,101,110,32,102,40,99,120,32,43,32,115, -116,101,112,88,44,32,99,121,41,32,101,110,100,13,10,32,32,32,32,32, -32,116,121,44,32,99,121,32,61,32,116,121,32,43,32,100,121,44,32,99, -121,32,43,32,115,116,101,112,89,13,10,32,32,32,32,32,32,102,40,99, -120,44,32,99,121,41,13,10,32,32,32,32,101,110,100,13,10,32,32,101, -110,100,13,10,13,10,32,32,45,45,32,73,102,32,119,101,32,104,97,118, -101,32,110,111,116,32,97,114,114,105,118,101,100,32,116,111,32,116,104,101, -32,108,97,115,116,32,99,101,108,108,44,32,117,115,101,32,105,116,13,10, -32,32,105,102,32,99,120,32,126,61,32,99,120,50,32,111,114,32,99,121, -32,126,61,32,99,121,50,32,116,104,101,110,32,102,40,99,120,50,44,32, -99,121,50,41,32,101,110,100,13,10,13,10,101,110,100,13,10,13,10,108, -111,99,97,108,32,102,117,110,99,116,105,111,110,32,103,114,105,100,95,116, -111,67,101,108,108,82,101,99,116,40,99,101,108,108,83,105,122,101,44,32, -120,44,121,44,119,44,104,41,13,10,32,32,108,111,99,97,108,32,99,120, -44,99,121,32,61,32,103,114,105,100,95,116,111,67,101,108,108,40,99,101, -108,108,83,105,122,101,44,32,120,44,32,121,41,13,10,32,32,108,111,99, -97,108,32,99,114,44,99,98,32,61,32,99,101,105,108,40,40,120,43,119, -41,32,47,32,99,101,108,108,83,105,122,101,41,44,32,99,101,105,108,40, -40,121,43,104,41,32,47,32,99,101,108,108,83,105,122,101,41,13,10,32, -32,114,101,116,117,114,110,32,99,120,44,32,99,121,44,32,99,114,32,45, -32,99,120,32,43,32,49,44,32,99,98,32,45,32,99,121,32,43,32,49, -13,10,101,110,100,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45, +99,111,114,110,101,114,115,13,10,32,32,32,32,105,102,32,116,120,32,61, +61,32,116,121,32,116,104,101,110,32,102,40,99,120,32,43,32,115,116,101, +112,88,44,32,99,121,41,32,101,110,100,13,10,32,32,32,32,116,121,44, +32,99,121,32,61,32,116,121,32,43,32,100,121,44,32,99,121,32,43,32, +115,116,101,112,89,13,10,32,32,32,32,102,40,99,120,44,32,99,121,41, +13,10,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32,32, +45,45,32,73,102,32,119,101,32,104,97,118,101,32,110,111,116,32,97,114, +114,105,118,101,100,32,116,111,32,116,104,101,32,108,97,115,116,32,99,101, +108,108,44,32,117,115,101,32,105,116,13,10,32,32,105,102,32,99,120,32, +126,61,32,99,120,50,32,111,114,32,99,121,32,126,61,32,99,121,50,32, +116,104,101,110,32,102,40,99,120,50,44,32,99,121,50,41,32,101,110,100, +13,10,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110, +99,116,105,111,110,32,103,114,105,100,95,116,111,67,101,108,108,82,101,99, +116,40,99,101,108,108,83,105,122,101,44,32,120,44,121,44,119,44,104,41, +13,10,32,32,108,111,99,97,108,32,99,120,44,99,121,32,61,32,103,114, +105,100,95,116,111,67,101,108,108,40,99,101,108,108,83,105,122,101,44,32, +120,44,32,121,41,13,10,32,32,108,111,99,97,108,32,99,114,44,99,98, +32,61,32,99,101,105,108,40,40,120,43,119,41,32,47,32,99,101,108,108, +83,105,122,101,41,44,32,99,101,105,108,40,40,121,43,104,41,32,47,32, +99,101,108,108,83,105,122,101,41,13,10,32,32,114,101,116,117,114,110,32, +99,120,44,32,99,121,44,32,99,114,32,45,32,99,120,32,43,32,49,44, +32,99,98,32,45,32,99,121,32,43,32,49,13,10,101,110,100,13,10,13, +10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,13,10,45,45,32,82,101,115,112,111,110,115,101,115,13,10,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,82,101,115,112, -111,110,115,101,115,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,13,10,13,10,108,111,99,97,108,32,116, -111,117,99,104,32,61,32,102,117,110,99,116,105,111,110,40,119,111,114,108, -100,44,32,99,111,108,44,32,120,44,121,44,119,44,104,44,32,103,111,97, -108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101,114,41,13,10, -32,32,114,101,116,117,114,110,32,99,111,108,46,116,111,117,99,104,46,120, -44,32,99,111,108,46,116,111,117,99,104,46,121,44,32,123,125,44,32,48, -13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,99,114,111,115,115, -32,61,32,102,117,110,99,116,105,111,110,40,119,111,114,108,100,44,32,99, -111,108,44,32,120,44,121,44,119,44,104,44,32,103,111,97,108,88,44,32, -103,111,97,108,89,44,32,102,105,108,116,101,114,41,13,10,32,32,108,111, -99,97,108,32,99,111,108,115,44,32,108,101,110,32,61,32,119,111,114,108, +45,13,10,13,10,108,111,99,97,108,32,116,111,117,99,104,32,61,32,102, +117,110,99,116,105,111,110,40,119,111,114,108,100,44,32,99,111,108,44,32, +120,44,121,44,119,44,104,44,32,103,111,97,108,88,44,32,103,111,97,108, +89,44,32,102,105,108,116,101,114,41,13,10,32,32,114,101,116,117,114,110, +32,99,111,108,46,116,111,117,99,104,46,120,44,32,99,111,108,46,116,111, +117,99,104,46,121,44,32,123,125,44,32,48,13,10,101,110,100,13,10,13, +10,108,111,99,97,108,32,99,114,111,115,115,32,61,32,102,117,110,99,116, +105,111,110,40,119,111,114,108,100,44,32,99,111,108,44,32,120,44,121,44, +119,44,104,44,32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,102, +105,108,116,101,114,41,13,10,32,32,108,111,99,97,108,32,99,111,108,115, +44,32,108,101,110,32,61,32,119,111,114,108,100,58,112,114,111,106,101,99, +116,40,99,111,108,46,105,116,101,109,44,32,120,44,121,44,119,44,104,44, +32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101, +114,41,13,10,32,32,114,101,116,117,114,110,32,103,111,97,108,88,44,32, +103,111,97,108,89,44,32,99,111,108,115,44,32,108,101,110,13,10,101,110, +100,13,10,13,10,108,111,99,97,108,32,115,108,105,100,101,32,61,32,102, +117,110,99,116,105,111,110,40,119,111,114,108,100,44,32,99,111,108,44,32, +120,44,121,44,119,44,104,44,32,103,111,97,108,88,44,32,103,111,97,108, +89,44,32,102,105,108,116,101,114,41,13,10,32,32,103,111,97,108,88,32, +61,32,103,111,97,108,88,32,111,114,32,120,13,10,32,32,103,111,97,108, +89,32,61,32,103,111,97,108,89,32,111,114,32,121,13,10,13,10,32,32, +108,111,99,97,108,32,116,99,104,44,32,109,111,118,101,32,32,61,32,99, +111,108,46,116,111,117,99,104,44,32,99,111,108,46,109,111,118,101,13,10, +32,32,105,102,32,109,111,118,101,46,120,32,126,61,32,48,32,111,114,32, +109,111,118,101,46,121,32,126,61,32,48,32,116,104,101,110,13,10,32,32, +105,102,32,99,111,108,46,110,111,114,109,97,108,46,120,32,126,61,32,48, +32,116,104,101,110,13,10,32,32,32,32,103,111,97,108,88,32,61,32,116, +99,104,46,120,13,10,32,32,101,108,115,101,13,10,32,32,32,32,103,111, +97,108,89,32,61,32,116,99,104,46,121,13,10,32,32,101,110,100,13,10, +32,32,101,110,100,13,10,13,10,32,32,99,111,108,46,115,108,105,100,101, +32,61,32,123,120,32,61,32,103,111,97,108,88,44,32,121,32,61,32,103, +111,97,108,89,125,13,10,13,10,32,32,120,44,121,32,61,32,116,99,104, +46,120,44,32,116,99,104,46,121,13,10,32,32,108,111,99,97,108,32,99, +111,108,115,44,32,108,101,110,32,32,61,32,119,111,114,108,100,58,112,114, +111,106,101,99,116,40,99,111,108,46,105,116,101,109,44,32,120,44,121,44, +119,44,104,44,32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,102, +105,108,116,101,114,41,13,10,32,32,114,101,116,117,114,110,32,103,111,97, +108,88,44,32,103,111,97,108,89,44,32,99,111,108,115,44,32,108,101,110, +13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,98,111,117,110,99, +101,32,61,32,102,117,110,99,116,105,111,110,40,119,111,114,108,100,44,32, +99,111,108,44,32,120,44,121,44,119,44,104,44,32,103,111,97,108,88,44, +32,103,111,97,108,89,44,32,102,105,108,116,101,114,41,13,10,32,32,103, +111,97,108,88,32,61,32,103,111,97,108,88,32,111,114,32,120,13,10,32, +32,103,111,97,108,89,32,61,32,103,111,97,108,89,32,111,114,32,121,13, +10,13,10,32,32,108,111,99,97,108,32,116,99,104,44,32,109,111,118,101, +32,61,32,99,111,108,46,116,111,117,99,104,44,32,99,111,108,46,109,111, +118,101,13,10,32,32,108,111,99,97,108,32,116,120,44,32,116,121,32,61, +32,116,99,104,46,120,44,32,116,99,104,46,121,13,10,13,10,32,32,108, +111,99,97,108,32,98,120,44,32,98,121,32,61,32,116,120,44,32,116,121, +13,10,13,10,32,32,105,102,32,109,111,118,101,46,120,32,126,61,32,48, +32,111,114,32,109,111,118,101,46,121,32,126,61,32,48,32,116,104,101,110, +13,10,32,32,108,111,99,97,108,32,98,110,120,44,32,98,110,121,32,61, +32,103,111,97,108,88,32,45,32,116,120,44,32,103,111,97,108,89,32,45, +32,116,121,13,10,32,32,105,102,32,99,111,108,46,110,111,114,109,97,108, +46,120,32,61,61,32,48,32,116,104,101,110,32,98,110,121,32,61,32,45, +98,110,121,32,101,108,115,101,32,98,110,120,32,61,32,45,98,110,120,32, +101,110,100,13,10,32,32,98,120,44,32,98,121,32,61,32,116,120,32,43, +32,98,110,120,44,32,116,121,32,43,32,98,110,121,13,10,32,32,101,110, +100,13,10,13,10,32,32,99,111,108,46,98,111,117,110,99,101,32,32,32, +61,32,123,120,32,61,32,98,120,44,32,32,121,32,61,32,98,121,125,13, +10,32,32,120,44,121,32,32,32,32,32,32,61,32,116,99,104,46,120,44, +32,116,99,104,46,121,13,10,32,32,103,111,97,108,88,44,32,103,111,97, +108,89,32,61,32,98,120,44,32,98,121,13,10,13,10,32,32,108,111,99, +97,108,32,99,111,108,115,44,32,108,101,110,32,32,61,32,119,111,114,108, 100,58,112,114,111,106,101,99,116,40,99,111,108,46,105,116,101,109,44,32, 120,44,121,44,119,44,104,44,32,103,111,97,108,88,44,32,103,111,97,108, 89,44,32,102,105,108,116,101,114,41,13,10,32,32,114,101,116,117,114,110, 32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,99,111,108,115,44, -32,108,101,110,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,115, -108,105,100,101,32,61,32,102,117,110,99,116,105,111,110,40,119,111,114,108, -100,44,32,99,111,108,44,32,120,44,121,44,119,44,104,44,32,103,111,97, -108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101,114,41,13,10, -32,32,103,111,97,108,88,32,61,32,103,111,97,108,88,32,111,114,32,120, -13,10,32,32,103,111,97,108,89,32,61,32,103,111,97,108,89,32,111,114, -32,121,13,10,13,10,32,32,108,111,99,97,108,32,116,99,104,44,32,109, -111,118,101,32,32,61,32,99,111,108,46,116,111,117,99,104,44,32,99,111, -108,46,109,111,118,101,13,10,32,32,105,102,32,109,111,118,101,46,120,32, -126,61,32,48,32,111,114,32,109,111,118,101,46,121,32,126,61,32,48,32, -116,104,101,110,13,10,32,32,32,32,105,102,32,99,111,108,46,110,111,114, -109,97,108,46,120,32,126,61,32,48,32,116,104,101,110,13,10,32,32,32, -32,32,32,103,111,97,108,88,32,61,32,116,99,104,46,120,13,10,32,32, -32,32,101,108,115,101,13,10,32,32,32,32,32,32,103,111,97,108,89,32, -61,32,116,99,104,46,121,13,10,32,32,32,32,101,110,100,13,10,32,32, -101,110,100,13,10,13,10,32,32,99,111,108,46,115,108,105,100,101,32,61, -32,123,120,32,61,32,103,111,97,108,88,44,32,121,32,61,32,103,111,97, -108,89,125,13,10,13,10,32,32,120,44,121,32,61,32,116,99,104,46,120, -44,32,116,99,104,46,121,13,10,32,32,108,111,99,97,108,32,99,111,108, -115,44,32,108,101,110,32,32,61,32,119,111,114,108,100,58,112,114,111,106, -101,99,116,40,99,111,108,46,105,116,101,109,44,32,120,44,121,44,119,44, -104,44,32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,102,105,108, -116,101,114,41,13,10,32,32,114,101,116,117,114,110,32,103,111,97,108,88, -44,32,103,111,97,108,89,44,32,99,111,108,115,44,32,108,101,110,13,10, -101,110,100,13,10,13,10,108,111,99,97,108,32,98,111,117,110,99,101,32, -61,32,102,117,110,99,116,105,111,110,40,119,111,114,108,100,44,32,99,111, -108,44,32,120,44,121,44,119,44,104,44,32,103,111,97,108,88,44,32,103, -111,97,108,89,44,32,102,105,108,116,101,114,41,13,10,32,32,103,111,97, -108,88,32,61,32,103,111,97,108,88,32,111,114,32,120,13,10,32,32,103, -111,97,108,89,32,61,32,103,111,97,108,89,32,111,114,32,121,13,10,13, -10,32,32,108,111,99,97,108,32,116,99,104,44,32,109,111,118,101,32,61, -32,99,111,108,46,116,111,117,99,104,44,32,99,111,108,46,109,111,118,101, -13,10,32,32,108,111,99,97,108,32,116,120,44,32,116,121,32,61,32,116, -99,104,46,120,44,32,116,99,104,46,121,13,10,13,10,32,32,108,111,99, -97,108,32,98,120,44,32,98,121,32,61,32,116,120,44,32,116,121,13,10, -13,10,32,32,105,102,32,109,111,118,101,46,120,32,126,61,32,48,32,111, -114,32,109,111,118,101,46,121,32,126,61,32,48,32,116,104,101,110,13,10, -32,32,32,32,108,111,99,97,108,32,98,110,120,44,32,98,110,121,32,61, -32,103,111,97,108,88,32,45,32,116,120,44,32,103,111,97,108,89,32,45, -32,116,121,13,10,32,32,32,32,105,102,32,99,111,108,46,110,111,114,109, -97,108,46,120,32,61,61,32,48,32,116,104,101,110,32,98,110,121,32,61, -32,45,98,110,121,32,101,108,115,101,32,98,110,120,32,61,32,45,98,110, -120,32,101,110,100,13,10,32,32,32,32,98,120,44,32,98,121,32,61,32, -116,120,32,43,32,98,110,120,44,32,116,121,32,43,32,98,110,121,13,10, -32,32,101,110,100,13,10,13,10,32,32,99,111,108,46,98,111,117,110,99, -101,32,32,32,61,32,123,120,32,61,32,98,120,44,32,32,121,32,61,32, -98,121,125,13,10,32,32,120,44,121,32,32,32,32,32,32,32,32,32,32, -61,32,116,99,104,46,120,44,32,116,99,104,46,121,13,10,32,32,103,111, -97,108,88,44,32,103,111,97,108,89,32,61,32,98,120,44,32,98,121,13, -10,13,10,32,32,108,111,99,97,108,32,99,111,108,115,44,32,108,101,110, -32,32,32,32,61,32,119,111,114,108,100,58,112,114,111,106,101,99,116,40, -99,111,108,46,105,116,101,109,44,32,120,44,121,44,119,44,104,44,32,103, -111,97,108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101,114,41, -13,10,32,32,114,101,116,117,114,110,32,103,111,97,108,88,44,32,103,111, -97,108,89,44,32,99,111,108,115,44,32,108,101,110,13,10,101,110,100,13, -10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +32,108,101,110,13,10,101,110,100,13,10,13,10,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,13,10,45,45,32,87,111,114,108,100,13,10,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32, +87,111,114,108,100,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13, -10,13,10,108,111,99,97,108,32,87,111,114,108,100,32,61,32,123,125,13, -10,108,111,99,97,108,32,87,111,114,108,100,95,109,116,32,61,32,123,95, -95,105,110,100,101,120,32,61,32,87,111,114,108,100,125,13,10,13,10,45, -45,32,80,114,105,118,97,116,101,32,102,117,110,99,116,105,111,110,115,32, -97,110,100,32,109,101,116,104,111,100,115,13,10,13,10,108,111,99,97,108, -32,102,117,110,99,116,105,111,110,32,115,111,114,116,66,121,87,101,105,103, -104,116,40,97,44,98,41,32,114,101,116,117,114,110,32,97,46,119,101,105, -103,104,116,32,60,32,98,46,119,101,105,103,104,116,32,101,110,100,13,10, -13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,115,111,114, -116,66,121,84,105,65,110,100,68,105,115,116,97,110,99,101,40,97,44,98, -41,13,10,32,32,105,102,32,97,46,116,105,32,61,61,32,98,46,116,105, -32,116,104,101,110,13,10,32,32,32,32,108,111,99,97,108,32,105,114,44, -32,97,114,44,32,98,114,32,61,32,97,46,105,116,101,109,82,101,99,116, -44,32,97,46,111,116,104,101,114,82,101,99,116,44,32,98,46,111,116,104, -101,114,82,101,99,116,13,10,32,32,32,32,108,111,99,97,108,32,97,100, -32,61,32,114,101,99,116,95,103,101,116,83,113,117,97,114,101,68,105,115, -116,97,110,99,101,40,105,114,46,120,44,105,114,46,121,44,105,114,46,119, -44,105,114,46,104,44,32,97,114,46,120,44,97,114,46,121,44,97,114,46, -119,44,97,114,46,104,41,13,10,32,32,32,32,108,111,99,97,108,32,98, -100,32,61,32,114,101,99,116,95,103,101,116,83,113,117,97,114,101,68,105, -115,116,97,110,99,101,40,105,114,46,120,44,105,114,46,121,44,105,114,46, -119,44,105,114,46,104,44,32,98,114,46,120,44,98,114,46,121,44,98,114, -46,119,44,98,114,46,104,41,13,10,32,32,32,32,114,101,116,117,114,110, -32,97,100,32,60,32,98,100,13,10,32,32,101,110,100,13,10,32,32,114, -101,116,117,114,110,32,97,46,116,105,32,60,32,98,46,116,105,13,10,101, -110,100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, -32,97,100,100,73,116,101,109,84,111,67,101,108,108,40,115,101,108,102,44, -32,105,116,101,109,44,32,99,120,44,32,99,121,41,13,10,32,32,115,101, -108,102,46,114,111,119,115,91,99,121,93,32,61,32,115,101,108,102,46,114, -111,119,115,91,99,121,93,32,111,114,32,115,101,116,109,101,116,97,116,97, -98,108,101,40,123,125,44,32,123,95,95,109,111,100,101,32,61,32,39,118, -39,125,41,13,10,32,32,108,111,99,97,108,32,114,111,119,32,61,32,115, -101,108,102,46,114,111,119,115,91,99,121,93,13,10,32,32,114,111,119,91, -99,120,93,32,61,32,114,111,119,91,99,120,93,32,111,114,32,123,105,116, -101,109,67,111,117,110,116,32,61,32,48,44,32,120,32,61,32,99,120,44, -32,121,32,61,32,99,121,44,32,105,116,101,109,115,32,61,32,115,101,116, -109,101,116,97,116,97,98,108,101,40,123,125,44,32,123,95,95,109,111,100, -101,32,61,32,39,107,39,125,41,125,13,10,32,32,108,111,99,97,108,32, -99,101,108,108,32,61,32,114,111,119,91,99,120,93,13,10,32,32,115,101, -108,102,46,110,111,110,69,109,112,116,121,67,101,108,108,115,91,99,101,108, -108,93,32,61,32,116,114,117,101,13,10,32,32,105,102,32,110,111,116,32, -99,101,108,108,46,105,116,101,109,115,91,105,116,101,109,93,32,116,104,101, -110,13,10,32,32,32,32,99,101,108,108,46,105,116,101,109,115,91,105,116, -101,109,93,32,61,32,116,114,117,101,13,10,32,32,32,32,99,101,108,108, -46,105,116,101,109,67,111,117,110,116,32,61,32,99,101,108,108,46,105,116, -101,109,67,111,117,110,116,32,43,32,49,13,10,32,32,101,110,100,13,10, -101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111, -110,32,114,101,109,111,118,101,73,116,101,109,70,114,111,109,67,101,108,108, -40,115,101,108,102,44,32,105,116,101,109,44,32,99,120,44,32,99,121,41, -13,10,32,32,108,111,99,97,108,32,114,111,119,32,61,32,115,101,108,102, -46,114,111,119,115,91,99,121,93,13,10,32,32,105,102,32,110,111,116,32, -114,111,119,32,111,114,32,110,111,116,32,114,111,119,91,99,120,93,32,111, -114,32,110,111,116,32,114,111,119,91,99,120,93,46,105,116,101,109,115,91, -105,116,101,109,93,32,116,104,101,110,32,114,101,116,117,114,110,32,102,97, -108,115,101,32,101,110,100,13,10,13,10,32,32,108,111,99,97,108,32,99, -101,108,108,32,61,32,114,111,119,91,99,120,93,13,10,32,32,99,101,108, -108,46,105,116,101,109,115,91,105,116,101,109,93,32,61,32,110,105,108,13, -10,32,32,99,101,108,108,46,105,116,101,109,67,111,117,110,116,32,61,32, -99,101,108,108,46,105,116,101,109,67,111,117,110,116,32,45,32,49,13,10, -32,32,105,102,32,99,101,108,108,46,105,116,101,109,67,111,117,110,116,32, -61,61,32,48,32,116,104,101,110,13,10,32,32,32,32,115,101,108,102,46, -110,111,110,69,109,112,116,121,67,101,108,108,115,91,99,101,108,108,93,32, -61,32,110,105,108,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117, -114,110,32,116,114,117,101,13,10,101,110,100,13,10,13,10,108,111,99,97, -108,32,102,117,110,99,116,105,111,110,32,103,101,116,68,105,99,116,73,116, -101,109,115,73,110,67,101,108,108,82,101,99,116,40,115,101,108,102,44,32, -99,108,44,99,116,44,99,119,44,99,104,41,13,10,32,32,108,111,99,97, -108,32,105,116,101,109,115,95,100,105,99,116,32,61,32,123,125,13,10,32, -32,102,111,114,32,99,121,61,99,116,44,99,116,43,99,104,45,49,32,100, -111,13,10,32,32,32,32,108,111,99,97,108,32,114,111,119,32,61,32,115, -101,108,102,46,114,111,119,115,91,99,121,93,13,10,32,32,32,32,105,102, -32,114,111,119,32,116,104,101,110,13,10,32,32,32,32,32,32,102,111,114, -32,99,120,61,99,108,44,99,108,43,99,119,45,49,32,100,111,13,10,32, -32,32,32,32,32,32,32,108,111,99,97,108,32,99,101,108,108,32,61,32, -114,111,119,91,99,120,93,13,10,32,32,32,32,32,32,32,32,105,102,32, -99,101,108,108,32,97,110,100,32,99,101,108,108,46,105,116,101,109,67,111, -117,110,116,32,62,32,48,32,116,104,101,110,32,45,45,32,110,111,32,99, -101,108,108,46,105,116,101,109,67,111,117,110,116,32,62,32,49,32,98,101, -99,97,117,115,101,32,116,117,110,110,101,108,105,110,103,13,10,32,32,32, -32,32,32,32,32,32,32,102,111,114,32,105,116,101,109,44,95,32,105,110, -32,112,97,105,114,115,40,99,101,108,108,46,105,116,101,109,115,41,32,100, -111,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,116,101,109,115, -95,100,105,99,116,91,105,116,101,109,93,32,61,32,116,114,117,101,13,10, -32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32, -32,32,32,101,110,100,13,10,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32,32,114, +45,45,45,45,45,45,45,45,45,13,10,13,10,108,111,99,97,108,32,87, +111,114,108,100,32,61,32,123,125,13,10,108,111,99,97,108,32,87,111,114, +108,100,95,109,116,32,61,32,123,95,95,105,110,100,101,120,32,61,32,87, +111,114,108,100,125,13,10,13,10,45,45,32,80,114,105,118,97,116,101,32, +102,117,110,99,116,105,111,110,115,32,97,110,100,32,109,101,116,104,111,100, +115,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, +115,111,114,116,66,121,87,101,105,103,104,116,40,97,44,98,41,32,114,101, +116,117,114,110,32,97,46,119,101,105,103,104,116,32,60,32,98,46,119,101, +105,103,104,116,32,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117, +110,99,116,105,111,110,32,115,111,114,116,66,121,84,105,65,110,100,68,105, +115,116,97,110,99,101,40,97,44,98,41,13,10,32,32,105,102,32,97,46, +116,105,32,61,61,32,98,46,116,105,32,116,104,101,110,13,10,32,32,108, +111,99,97,108,32,105,114,44,32,97,114,44,32,98,114,32,61,32,97,46, +105,116,101,109,82,101,99,116,44,32,97,46,111,116,104,101,114,82,101,99, +116,44,32,98,46,111,116,104,101,114,82,101,99,116,13,10,32,32,108,111, +99,97,108,32,97,100,32,61,32,114,101,99,116,95,103,101,116,83,113,117, +97,114,101,68,105,115,116,97,110,99,101,40,105,114,46,120,44,105,114,46, +121,44,105,114,46,119,44,105,114,46,104,44,32,97,114,46,120,44,97,114, +46,121,44,97,114,46,119,44,97,114,46,104,41,13,10,32,32,108,111,99, +97,108,32,98,100,32,61,32,114,101,99,116,95,103,101,116,83,113,117,97, +114,101,68,105,115,116,97,110,99,101,40,105,114,46,120,44,105,114,46,121, +44,105,114,46,119,44,105,114,46,104,44,32,98,114,46,120,44,98,114,46, +121,44,98,114,46,119,44,98,114,46,104,41,13,10,32,32,114,101,116,117, +114,110,32,97,100,32,60,32,98,100,13,10,32,32,101,110,100,13,10,32, +32,114,101,116,117,114,110,32,97,46,116,105,32,60,32,98,46,116,105,13, +10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105, +111,110,32,97,100,100,73,116,101,109,84,111,67,101,108,108,40,115,101,108, +102,44,32,105,116,101,109,44,32,99,120,44,32,99,121,41,13,10,32,32, +115,101,108,102,46,114,111,119,115,91,99,121,93,32,61,32,115,101,108,102, +46,114,111,119,115,91,99,121,93,32,111,114,32,115,101,116,109,101,116,97, +116,97,98,108,101,40,123,125,44,32,123,95,95,109,111,100,101,32,61,32, +39,118,39,125,41,13,10,32,32,108,111,99,97,108,32,114,111,119,32,61, +32,115,101,108,102,46,114,111,119,115,91,99,121,93,13,10,32,32,114,111, +119,91,99,120,93,32,61,32,114,111,119,91,99,120,93,32,111,114,32,123, +105,116,101,109,67,111,117,110,116,32,61,32,48,44,32,120,32,61,32,99, +120,44,32,121,32,61,32,99,121,44,32,105,116,101,109,115,32,61,32,115, +101,116,109,101,116,97,116,97,98,108,101,40,123,125,44,32,123,95,95,109, +111,100,101,32,61,32,39,107,39,125,41,125,13,10,32,32,108,111,99,97, +108,32,99,101,108,108,32,61,32,114,111,119,91,99,120,93,13,10,32,32, +115,101,108,102,46,110,111,110,69,109,112,116,121,67,101,108,108,115,91,99, +101,108,108,93,32,61,32,116,114,117,101,13,10,32,32,105,102,32,110,111, +116,32,99,101,108,108,46,105,116,101,109,115,91,105,116,101,109,93,32,116, +104,101,110,13,10,32,32,99,101,108,108,46,105,116,101,109,115,91,105,116, +101,109,93,32,61,32,116,114,117,101,13,10,32,32,99,101,108,108,46,105, +116,101,109,67,111,117,110,116,32,61,32,99,101,108,108,46,105,116,101,109, +67,111,117,110,116,32,43,32,49,13,10,32,32,101,110,100,13,10,101,110, +100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, +114,101,109,111,118,101,73,116,101,109,70,114,111,109,67,101,108,108,40,115, +101,108,102,44,32,105,116,101,109,44,32,99,120,44,32,99,121,41,13,10, +32,32,108,111,99,97,108,32,114,111,119,32,61,32,115,101,108,102,46,114, +111,119,115,91,99,121,93,13,10,32,32,105,102,32,110,111,116,32,114,111, +119,32,111,114,32,110,111,116,32,114,111,119,91,99,120,93,32,111,114,32, +110,111,116,32,114,111,119,91,99,120,93,46,105,116,101,109,115,91,105,116, +101,109,93,32,116,104,101,110,32,114,101,116,117,114,110,32,102,97,108,115, +101,32,101,110,100,13,10,13,10,32,32,108,111,99,97,108,32,99,101,108, +108,32,61,32,114,111,119,91,99,120,93,13,10,32,32,99,101,108,108,46, +105,116,101,109,115,91,105,116,101,109,93,32,61,32,110,105,108,13,10,32, +32,99,101,108,108,46,105,116,101,109,67,111,117,110,116,32,61,32,99,101, +108,108,46,105,116,101,109,67,111,117,110,116,32,45,32,49,13,10,32,32, +105,102,32,99,101,108,108,46,105,116,101,109,67,111,117,110,116,32,61,61, +32,48,32,116,104,101,110,13,10,32,32,115,101,108,102,46,110,111,110,69, +109,112,116,121,67,101,108,108,115,91,99,101,108,108,93,32,61,32,110,105, +108,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,116, +114,117,101,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117, +110,99,116,105,111,110,32,103,101,116,68,105,99,116,73,116,101,109,115,73, +110,67,101,108,108,82,101,99,116,40,115,101,108,102,44,32,99,108,44,99, +116,44,99,119,44,99,104,41,13,10,32,32,108,111,99,97,108,32,105,116, +101,109,115,95,100,105,99,116,32,61,32,123,125,13,10,32,32,102,111,114, +32,99,121,61,99,116,44,99,116,43,99,104,45,49,32,100,111,13,10,32, +32,108,111,99,97,108,32,114,111,119,32,61,32,115,101,108,102,46,114,111, +119,115,91,99,121,93,13,10,32,32,105,102,32,114,111,119,32,116,104,101, +110,13,10,32,32,32,32,102,111,114,32,99,120,61,99,108,44,99,108,43, +99,119,45,49,32,100,111,13,10,32,32,32,32,108,111,99,97,108,32,99, +101,108,108,32,61,32,114,111,119,91,99,120,93,13,10,32,32,32,32,105, +102,32,99,101,108,108,32,97,110,100,32,99,101,108,108,46,105,116,101,109, +67,111,117,110,116,32,62,32,48,32,116,104,101,110,32,45,45,32,110,111, +32,99,101,108,108,46,105,116,101,109,67,111,117,110,116,32,62,32,49,32, +98,101,99,97,117,115,101,32,116,117,110,110,101,108,105,110,103,13,10,32, +32,32,32,32,32,102,111,114,32,105,116,101,109,44,95,32,105,110,32,112, +97,105,114,115,40,99,101,108,108,46,105,116,101,109,115,41,32,100,111,13, +10,32,32,32,32,32,32,105,116,101,109,115,95,100,105,99,116,91,105,116, +101,109,93,32,61,32,116,114,117,101,13,10,32,32,32,32,32,32,101,110, +100,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100,13, +10,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32,32,114, 101,116,117,114,110,32,105,116,101,109,115,95,100,105,99,116,13,10,101,110, 100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, 103,101,116,67,101,108,108,115,84,111,117,99,104,101,100,66,121,83,101,103, @@ -562,419 +547,403 @@ static char physics_lua[] = { 61,32,123,125,44,32,48,44,32,123,125,13,10,13,10,32,32,103,114,105, 100,95,116,114,97,118,101,114,115,101,40,115,101,108,102,46,99,101,108,108, 83,105,122,101,44,32,120,49,44,121,49,44,120,50,44,121,50,44,32,102, -117,110,99,116,105,111,110,40,99,120,44,32,99,121,41,13,10,32,32,32, -32,108,111,99,97,108,32,114,111,119,32,32,61,32,115,101,108,102,46,114, -111,119,115,91,99,121,93,13,10,32,32,32,32,105,102,32,110,111,116,32, -114,111,119,32,116,104,101,110,32,114,101,116,117,114,110,32,101,110,100,13, -10,32,32,32,32,108,111,99,97,108,32,99,101,108,108,32,61,32,114,111, -119,91,99,120,93,13,10,32,32,32,32,105,102,32,110,111,116,32,99,101, -108,108,32,111,114,32,118,105,115,105,116,101,100,91,99,101,108,108,93,32, -116,104,101,110,32,114,101,116,117,114,110,32,101,110,100,13,10,13,10,32, -32,32,32,118,105,115,105,116,101,100,91,99,101,108,108,93,32,61,32,116, -114,117,101,13,10,32,32,32,32,99,101,108,108,115,76,101,110,32,61,32, -99,101,108,108,115,76,101,110,32,43,32,49,13,10,32,32,32,32,99,101, -108,108,115,91,99,101,108,108,115,76,101,110,93,32,61,32,99,101,108,108, -13,10,32,32,101,110,100,41,13,10,13,10,32,32,114,101,116,117,114,110, -32,99,101,108,108,115,44,32,99,101,108,108,115,76,101,110,13,10,101,110, -100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, -103,101,116,73,110,102,111,65,98,111,117,116,73,116,101,109,115,84,111,117, -99,104,101,100,66,121,83,101,103,109,101,110,116,40,115,101,108,102,44,32, -120,49,44,121,49,44,32,120,50,44,121,50,44,32,102,105,108,116,101,114, -41,13,10,32,32,108,111,99,97,108,32,99,101,108,108,115,44,32,108,101, -110,32,61,32,103,101,116,67,101,108,108,115,84,111,117,99,104,101,100,66, -121,83,101,103,109,101,110,116,40,115,101,108,102,44,32,120,49,44,121,49, -44,120,50,44,121,50,41,13,10,32,32,108,111,99,97,108,32,99,101,108, -108,44,32,114,101,99,116,44,32,108,44,116,44,119,44,104,44,32,116,105, -49,44,116,105,50,44,32,116,105,105,48,44,116,105,105,49,13,10,32,32, -108,111,99,97,108,32,118,105,115,105,116,101,100,44,32,105,116,101,109,73, -110,102,111,44,32,105,116,101,109,73,110,102,111,76,101,110,32,61,32,123, -125,44,123,125,44,48,13,10,32,32,102,111,114,32,105,61,49,44,108,101, -110,32,100,111,13,10,32,32,32,32,99,101,108,108,32,61,32,99,101,108, -108,115,91,105,93,13,10,32,32,32,32,102,111,114,32,105,116,101,109,32, -105,110,32,112,97,105,114,115,40,99,101,108,108,46,105,116,101,109,115,41, -32,100,111,13,10,32,32,32,32,32,32,105,102,32,110,111,116,32,118,105, +117,110,99,116,105,111,110,40,99,120,44,32,99,121,41,13,10,32,32,108, +111,99,97,108,32,114,111,119,32,32,61,32,115,101,108,102,46,114,111,119, +115,91,99,121,93,13,10,32,32,105,102,32,110,111,116,32,114,111,119,32, +116,104,101,110,32,114,101,116,117,114,110,32,101,110,100,13,10,32,32,108, +111,99,97,108,32,99,101,108,108,32,61,32,114,111,119,91,99,120,93,13, +10,32,32,105,102,32,110,111,116,32,99,101,108,108,32,111,114,32,118,105, +115,105,116,101,100,91,99,101,108,108,93,32,116,104,101,110,32,114,101,116, +117,114,110,32,101,110,100,13,10,13,10,32,32,118,105,115,105,116,101,100, +91,99,101,108,108,93,32,61,32,116,114,117,101,13,10,32,32,99,101,108, +108,115,76,101,110,32,61,32,99,101,108,108,115,76,101,110,32,43,32,49, +13,10,32,32,99,101,108,108,115,91,99,101,108,108,115,76,101,110,93,32, +61,32,99,101,108,108,13,10,32,32,101,110,100,41,13,10,13,10,32,32, +114,101,116,117,114,110,32,99,101,108,108,115,44,32,99,101,108,108,115,76, +101,110,13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110, +99,116,105,111,110,32,103,101,116,73,110,102,111,65,98,111,117,116,73,116, +101,109,115,84,111,117,99,104,101,100,66,121,83,101,103,109,101,110,116,40, +115,101,108,102,44,32,120,49,44,121,49,44,32,120,50,44,121,50,44,32, +102,105,108,116,101,114,41,13,10,32,32,108,111,99,97,108,32,99,101,108, +108,115,44,32,108,101,110,32,61,32,103,101,116,67,101,108,108,115,84,111, +117,99,104,101,100,66,121,83,101,103,109,101,110,116,40,115,101,108,102,44, +32,120,49,44,121,49,44,120,50,44,121,50,41,13,10,32,32,108,111,99, +97,108,32,99,101,108,108,44,32,114,101,99,116,44,32,108,44,116,44,119, +44,104,44,32,116,105,49,44,116,105,50,44,32,116,105,105,48,44,116,105, +105,49,13,10,32,32,108,111,99,97,108,32,118,105,115,105,116,101,100,44, +32,105,116,101,109,73,110,102,111,44,32,105,116,101,109,73,110,102,111,76, +101,110,32,61,32,123,125,44,123,125,44,48,13,10,32,32,102,111,114,32, +105,61,49,44,108,101,110,32,100,111,13,10,32,32,99,101,108,108,32,61, +32,99,101,108,108,115,91,105,93,13,10,32,32,102,111,114,32,105,116,101, +109,32,105,110,32,112,97,105,114,115,40,99,101,108,108,46,105,116,101,109, +115,41,32,100,111,13,10,32,32,32,32,105,102,32,110,111,116,32,118,105, 115,105,116,101,100,91,105,116,101,109,93,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,118,105,115,105,116,101,100,91,105,116,101,109,93,32, -32,61,32,116,114,117,101,13,10,32,32,32,32,32,32,32,32,105,102,32, -40,110,111,116,32,102,105,108,116,101,114,32,111,114,32,102,105,108,116,101, -114,40,105,116,101,109,41,41,32,116,104,101,110,13,10,32,32,32,32,32, -32,32,32,32,32,114,101,99,116,32,32,32,32,32,32,32,32,32,32,32, -61,32,115,101,108,102,46,114,101,99,116,115,91,105,116,101,109,93,13,10, -32,32,32,32,32,32,32,32,32,32,108,44,116,44,119,44,104,32,32,32, -32,32,32,32,32,61,32,114,101,99,116,46,120,44,114,101,99,116,46,121, -44,114,101,99,116,46,119,44,114,101,99,116,46,104,13,10,13,10,32,32, -32,32,32,32,32,32,32,32,116,105,49,44,116,105,50,32,61,32,114,101, -99,116,95,103,101,116,83,101,103,109,101,110,116,73,110,116,101,114,115,101, -99,116,105,111,110,73,110,100,105,99,101,115,40,108,44,116,44,119,44,104, -44,32,120,49,44,121,49,44,32,120,50,44,121,50,44,32,48,44,32,49, -41,13,10,32,32,32,32,32,32,32,32,32,32,105,102,32,116,105,49,32, -97,110,100,32,40,40,48,32,60,32,116,105,49,32,97,110,100,32,116,105, -49,32,60,32,49,41,32,111,114,32,40,48,32,60,32,116,105,50,32,97, -110,100,32,116,105,50,32,60,32,49,41,41,32,116,104,101,110,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,45,45,32,116,104,101,32,115,111, -114,116,105,110,103,32,105,115,32,97,99,99,111,114,100,105,110,103,32,116, -111,32,116,104,101,32,116,32,111,102,32,97,110,32,105,110,102,105,110,105, -116,101,32,108,105,110,101,44,32,110,111,116,32,116,104,101,32,115,101,103, -109,101,110,116,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,105, -105,48,44,116,105,105,49,32,32,32,32,61,32,114,101,99,116,95,103,101, -116,83,101,103,109,101,110,116,73,110,116,101,114,115,101,99,116,105,111,110, -73,110,100,105,99,101,115,40,108,44,116,44,119,44,104,44,32,120,49,44, -121,49,44,32,120,50,44,121,50,44,32,45,109,97,116,104,46,104,117,103, -101,44,32,109,97,116,104,46,104,117,103,101,41,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,105,116,101,109,73,110,102,111,76,101,110,32,32, -61,32,105,116,101,109,73,110,102,111,76,101,110,32,43,32,49,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,105,116,101,109,73,110,102,111,91, -105,116,101,109,73,110,102,111,76,101,110,93,32,61,32,123,105,116,101,109, -32,61,32,105,116,101,109,44,32,116,105,49,32,61,32,116,105,49,44,32, -116,105,50,32,61,32,116,105,50,44,32,119,101,105,103,104,116,32,61,32, -109,105,110,40,116,105,105,48,44,116,105,105,49,41,125,13,10,32,32,32, -32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32, -101,110,100,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32, -101,110,100,13,10,32,32,101,110,100,13,10,32,32,116,97,98,108,101,46, -115,111,114,116,40,105,116,101,109,73,110,102,111,44,32,115,111,114,116,66, -121,87,101,105,103,104,116,41,13,10,32,32,114,101,116,117,114,110,32,105, -116,101,109,73,110,102,111,44,32,105,116,101,109,73,110,102,111,76,101,110, -13,10,101,110,100,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116, -105,111,110,32,103,101,116,82,101,115,112,111,110,115,101,66,121,78,97,109, -101,40,115,101,108,102,44,32,110,97,109,101,41,13,10,32,32,108,111,99, -97,108,32,114,101,115,112,111,110,115,101,32,61,32,115,101,108,102,46,114, -101,115,112,111,110,115,101,115,91,110,97,109,101,93,13,10,32,32,105,102, -32,110,111,116,32,114,101,115,112,111,110,115,101,32,116,104,101,110,13,10, -32,32,32,32,101,114,114,111,114,40,40,39,85,110,107,110,111,119,110,32, -99,111,108,108,105,115,105,111,110,32,116,121,112,101,58,32,37,115,32,40, -37,115,41,39,41,58,102,111,114,109,97,116,40,110,97,109,101,44,32,116, -121,112,101,40,110,97,109,101,41,41,41,13,10,32,32,101,110,100,13,10, -32,32,114,101,116,117,114,110,32,114,101,115,112,111,110,115,101,13,10,101, -110,100,13,10,13,10,13,10,45,45,32,77,105,115,99,32,80,117,98,108, -105,99,32,77,101,116,104,111,100,115,13,10,13,10,102,117,110,99,116,105, -111,110,32,87,111,114,108,100,58,97,100,100,82,101,115,112,111,110,115,101, -40,110,97,109,101,44,32,114,101,115,112,111,110,115,101,41,13,10,32,32, -115,101,108,102,46,114,101,115,112,111,110,115,101,115,91,110,97,109,101,93, -32,61,32,114,101,115,112,111,110,115,101,13,10,101,110,100,13,10,13,10, -102,117,110,99,116,105,111,110,32,87,111,114,108,100,58,112,114,111,106,101, -99,116,40,105,116,101,109,44,32,120,44,121,44,119,44,104,44,32,103,111, -97,108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101,114,41,13, -10,32,32,97,115,115,101,114,116,73,115,82,101,99,116,40,120,44,121,44, -119,44,104,41,13,10,13,10,32,32,103,111,97,108,88,32,61,32,103,111, -97,108,88,32,111,114,32,120,13,10,32,32,103,111,97,108,89,32,61,32, -103,111,97,108,89,32,111,114,32,121,13,10,32,32,102,105,108,116,101,114, -32,32,61,32,102,105,108,116,101,114,32,32,111,114,32,100,101,102,97,117, -108,116,70,105,108,116,101,114,13,10,13,10,32,32,108,111,99,97,108,32, -99,111,108,108,105,115,105,111,110,115,44,32,108,101,110,32,61,32,123,125, -44,32,48,13,10,13,10,32,32,108,111,99,97,108,32,118,105,115,105,116, -101,100,32,61,32,123,125,13,10,32,32,105,102,32,105,116,101,109,32,126, -61,32,110,105,108,32,116,104,101,110,32,118,105,115,105,116,101,100,91,105, -116,101,109,93,32,61,32,116,114,117,101,32,101,110,100,13,10,13,10,32, -32,45,45,32,84,104,105,115,32,99,111,117,108,100,32,112,114,111,98,97, -98,108,121,32,98,101,32,100,111,110,101,32,119,105,116,104,32,108,101,115, -115,32,99,101,108,108,115,32,117,115,105,110,103,32,97,32,112,111,108,121, -103,111,110,32,114,97,115,116,101,114,32,111,118,101,114,32,116,104,101,32, -99,101,108,108,115,32,105,110,115,116,101,97,100,32,111,102,32,97,13,10, -32,32,45,45,32,98,111,117,110,100,105,110,103,32,114,101,99,116,32,111, -102,32,116,104,101,32,119,104,111,108,101,32,109,111,118,101,109,101,110,116, -46,32,67,111,110,100,105,116,105,111,110,97,108,32,116,111,32,98,117,105, -108,100,105,110,103,32,97,32,113,117,101,114,121,80,111,108,121,103,111,110, -32,109,101,116,104,111,100,13,10,32,32,108,111,99,97,108,32,116,108,44, -32,116,116,32,61,32,109,105,110,40,103,111,97,108,88,44,32,120,41,44, -32,32,32,32,32,32,32,109,105,110,40,103,111,97,108,89,44,32,121,41, -13,10,32,32,108,111,99,97,108,32,116,114,44,32,116,98,32,61,32,109, -97,120,40,103,111,97,108,88,32,43,32,119,44,32,120,43,119,41,44,32, -109,97,120,40,103,111,97,108,89,32,43,32,104,44,32,121,43,104,41,13, -10,32,32,108,111,99,97,108,32,116,119,44,32,116,104,32,61,32,116,114, -45,116,108,44,32,116,98,45,116,116,13,10,13,10,32,32,108,111,99,97, -108,32,99,108,44,99,116,44,99,119,44,99,104,32,61,32,103,114,105,100, -95,116,111,67,101,108,108,82,101,99,116,40,115,101,108,102,46,99,101,108, -108,83,105,122,101,44,32,116,108,44,116,116,44,116,119,44,116,104,41,13, -10,13,10,32,32,108,111,99,97,108,32,100,105,99,116,73,116,101,109,115, -73,110,67,101,108,108,82,101,99,116,32,61,32,103,101,116,68,105,99,116, -73,116,101,109,115,73,110,67,101,108,108,82,101,99,116,40,115,101,108,102, -44,32,99,108,44,99,116,44,99,119,44,99,104,41,13,10,13,10,32,32, -102,111,114,32,111,116,104,101,114,44,95,32,105,110,32,112,97,105,114,115, -40,100,105,99,116,73,116,101,109,115,73,110,67,101,108,108,82,101,99,116, -41,32,100,111,13,10,32,32,32,32,105,102,32,110,111,116,32,118,105,115, -105,116,101,100,91,111,116,104,101,114,93,32,116,104,101,110,13,10,32,32, -32,32,32,32,118,105,115,105,116,101,100,91,111,116,104,101,114,93,32,61, -32,116,114,117,101,13,10,13,10,32,32,32,32,32,32,108,111,99,97,108, +32,32,118,105,115,105,116,101,100,91,105,116,101,109,93,32,32,61,32,116, +114,117,101,13,10,32,32,32,32,105,102,32,40,110,111,116,32,102,105,108, +116,101,114,32,111,114,32,102,105,108,116,101,114,40,105,116,101,109,41,41, +32,116,104,101,110,13,10,32,32,32,32,32,32,114,101,99,116,32,32,32, +32,32,32,32,61,32,115,101,108,102,46,114,101,99,116,115,91,105,116,101, +109,93,13,10,32,32,32,32,32,32,108,44,116,44,119,44,104,32,32,32, +32,61,32,114,101,99,116,46,120,44,114,101,99,116,46,121,44,114,101,99, +116,46,119,44,114,101,99,116,46,104,13,10,13,10,32,32,32,32,32,32, +116,105,49,44,116,105,50,32,61,32,114,101,99,116,95,103,101,116,83,101, +103,109,101,110,116,73,110,116,101,114,115,101,99,116,105,111,110,73,110,100, +105,99,101,115,40,108,44,116,44,119,44,104,44,32,120,49,44,121,49,44, +32,120,50,44,121,50,44,32,48,44,32,49,41,13,10,32,32,32,32,32, +32,105,102,32,116,105,49,32,97,110,100,32,40,40,48,32,60,32,116,105, +49,32,97,110,100,32,116,105,49,32,60,32,49,41,32,111,114,32,40,48, +32,60,32,116,105,50,32,97,110,100,32,116,105,50,32,60,32,49,41,41, +32,116,104,101,110,13,10,32,32,32,32,32,32,45,45,32,116,104,101,32, +115,111,114,116,105,110,103,32,105,115,32,97,99,99,111,114,100,105,110,103, +32,116,111,32,116,104,101,32,116,32,111,102,32,97,110,32,105,110,102,105, +110,105,116,101,32,108,105,110,101,44,32,110,111,116,32,116,104,101,32,115, +101,103,109,101,110,116,13,10,32,32,32,32,32,32,116,105,105,48,44,116, +105,105,49,32,32,61,32,114,101,99,116,95,103,101,116,83,101,103,109,101, +110,116,73,110,116,101,114,115,101,99,116,105,111,110,73,110,100,105,99,101, +115,40,108,44,116,44,119,44,104,44,32,120,49,44,121,49,44,32,120,50, +44,121,50,44,32,45,109,97,116,104,46,104,117,103,101,44,32,109,97,116, +104,46,104,117,103,101,41,13,10,32,32,32,32,32,32,105,116,101,109,73, +110,102,111,76,101,110,32,32,61,32,105,116,101,109,73,110,102,111,76,101, +110,32,43,32,49,13,10,32,32,32,32,32,32,105,116,101,109,73,110,102, +111,91,105,116,101,109,73,110,102,111,76,101,110,93,32,61,32,123,105,116, +101,109,32,61,32,105,116,101,109,44,32,116,105,49,32,61,32,116,105,49, +44,32,116,105,50,32,61,32,116,105,50,44,32,119,101,105,103,104,116,32, +61,32,109,105,110,40,116,105,105,48,44,116,105,105,49,41,125,13,10,32, +32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100,13,10,32, +32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,32,32,101,110,100, +13,10,32,32,116,97,98,108,101,46,115,111,114,116,40,105,116,101,109,73, +110,102,111,44,32,115,111,114,116,66,121,87,101,105,103,104,116,41,13,10, +32,32,114,101,116,117,114,110,32,105,116,101,109,73,110,102,111,44,32,105, +116,101,109,73,110,102,111,76,101,110,13,10,101,110,100,13,10,13,10,108, +111,99,97,108,32,102,117,110,99,116,105,111,110,32,103,101,116,82,101,115, +112,111,110,115,101,66,121,78,97,109,101,40,115,101,108,102,44,32,110,97, +109,101,41,13,10,32,32,108,111,99,97,108,32,114,101,115,112,111,110,115, +101,32,61,32,115,101,108,102,46,114,101,115,112,111,110,115,101,115,91,110, +97,109,101,93,13,10,32,32,105,102,32,110,111,116,32,114,101,115,112,111, +110,115,101,32,116,104,101,110,13,10,32,32,101,114,114,111,114,40,40,39, +85,110,107,110,111,119,110,32,99,111,108,108,105,115,105,111,110,32,116,121, +112,101,58,32,37,115,32,40,37,115,41,39,41,58,102,111,114,109,97,116, +40,110,97,109,101,44,32,116,121,112,101,40,110,97,109,101,41,41,41,13, +10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,114,101,115, +112,111,110,115,101,13,10,101,110,100,13,10,13,10,13,10,45,45,32,77, +105,115,99,32,80,117,98,108,105,99,32,77,101,116,104,111,100,115,13,10, +13,10,102,117,110,99,116,105,111,110,32,87,111,114,108,100,58,97,100,100, +82,101,115,112,111,110,115,101,40,110,97,109,101,44,32,114,101,115,112,111, +110,115,101,41,13,10,32,32,115,101,108,102,46,114,101,115,112,111,110,115, +101,115,91,110,97,109,101,93,32,61,32,114,101,115,112,111,110,115,101,13, +10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,87,111,114, +108,100,58,112,114,111,106,101,99,116,40,105,116,101,109,44,32,120,44,121, +44,119,44,104,44,32,103,111,97,108,88,44,32,103,111,97,108,89,44,32, +102,105,108,116,101,114,41,13,10,32,32,97,115,115,101,114,116,73,115,82, +101,99,116,40,120,44,121,44,119,44,104,41,13,10,13,10,32,32,103,111, +97,108,88,32,61,32,103,111,97,108,88,32,111,114,32,120,13,10,32,32, +103,111,97,108,89,32,61,32,103,111,97,108,89,32,111,114,32,121,13,10, +32,32,102,105,108,116,101,114,32,32,61,32,102,105,108,116,101,114,32,32, +111,114,32,100,101,102,97,117,108,116,70,105,108,116,101,114,13,10,13,10, +32,32,108,111,99,97,108,32,99,111,108,108,105,115,105,111,110,115,44,32, +108,101,110,32,61,32,123,125,44,32,48,13,10,13,10,32,32,108,111,99, +97,108,32,118,105,115,105,116,101,100,32,61,32,123,125,13,10,32,32,105, +102,32,105,116,101,109,32,126,61,32,110,105,108,32,116,104,101,110,32,118, +105,115,105,116,101,100,91,105,116,101,109,93,32,61,32,116,114,117,101,32, +101,110,100,13,10,13,10,32,32,45,45,32,84,104,105,115,32,99,111,117, +108,100,32,112,114,111,98,97,98,108,121,32,98,101,32,100,111,110,101,32, +119,105,116,104,32,108,101,115,115,32,99,101,108,108,115,32,117,115,105,110, +103,32,97,32,112,111,108,121,103,111,110,32,114,97,115,116,101,114,32,111, +118,101,114,32,116,104,101,32,99,101,108,108,115,32,105,110,115,116,101,97, +100,32,111,102,32,97,13,10,32,32,45,45,32,98,111,117,110,100,105,110, +103,32,114,101,99,116,32,111,102,32,116,104,101,32,119,104,111,108,101,32, +109,111,118,101,109,101,110,116,46,32,67,111,110,100,105,116,105,111,110,97, +108,32,116,111,32,98,117,105,108,100,105,110,103,32,97,32,113,117,101,114, +121,80,111,108,121,103,111,110,32,109,101,116,104,111,100,13,10,32,32,108, +111,99,97,108,32,116,108,44,32,116,116,32,61,32,109,105,110,40,103,111, +97,108,88,44,32,120,41,44,32,32,32,32,32,109,105,110,40,103,111,97, +108,89,44,32,121,41,13,10,32,32,108,111,99,97,108,32,116,114,44,32, +116,98,32,61,32,109,97,120,40,103,111,97,108,88,32,43,32,119,44,32, +120,43,119,41,44,32,109,97,120,40,103,111,97,108,89,32,43,32,104,44, +32,121,43,104,41,13,10,32,32,108,111,99,97,108,32,116,119,44,32,116, +104,32,61,32,116,114,45,116,108,44,32,116,98,45,116,116,13,10,13,10, +32,32,108,111,99,97,108,32,99,108,44,99,116,44,99,119,44,99,104,32, +61,32,103,114,105,100,95,116,111,67,101,108,108,82,101,99,116,40,115,101, +108,102,46,99,101,108,108,83,105,122,101,44,32,116,108,44,116,116,44,116, +119,44,116,104,41,13,10,13,10,32,32,108,111,99,97,108,32,100,105,99, +116,73,116,101,109,115,73,110,67,101,108,108,82,101,99,116,32,61,32,103, +101,116,68,105,99,116,73,116,101,109,115,73,110,67,101,108,108,82,101,99, +116,40,115,101,108,102,44,32,99,108,44,99,116,44,99,119,44,99,104,41, +13,10,13,10,32,32,102,111,114,32,111,116,104,101,114,44,95,32,105,110, +32,112,97,105,114,115,40,100,105,99,116,73,116,101,109,115,73,110,67,101, +108,108,82,101,99,116,41,32,100,111,13,10,32,32,105,102,32,110,111,116, +32,118,105,115,105,116,101,100,91,111,116,104,101,114,93,32,116,104,101,110, +13,10,32,32,32,32,118,105,115,105,116,101,100,91,111,116,104,101,114,93, +32,61,32,116,114,117,101,13,10,13,10,32,32,32,32,108,111,99,97,108, 32,114,101,115,112,111,110,115,101,78,97,109,101,32,61,32,102,105,108,116, 101,114,40,105,116,101,109,44,32,111,116,104,101,114,41,13,10,32,32,32, -32,32,32,105,102,32,114,101,115,112,111,110,115,101,78,97,109,101,32,116, -104,101,110,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,111, -120,44,111,121,44,111,119,44,111,104,32,32,32,61,32,115,101,108,102,58, -103,101,116,82,101,99,116,40,111,116,104,101,114,41,13,10,32,32,32,32, -32,32,32,32,108,111,99,97,108,32,99,111,108,32,32,32,32,32,32,32, -32,32,32,32,61,32,114,101,99,116,95,100,101,116,101,99,116,67,111,108, -108,105,115,105,111,110,40,120,44,121,44,119,44,104,44,32,111,120,44,111, -121,44,111,119,44,111,104,44,32,103,111,97,108,88,44,32,103,111,97,108, -89,41,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,99,111,108, -32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,99,111,108, -46,111,116,104,101,114,32,32,32,32,61,32,111,116,104,101,114,13,10,32, -32,32,32,32,32,32,32,32,32,99,111,108,46,105,116,101,109,32,32,32, -32,32,61,32,105,116,101,109,13,10,32,32,32,32,32,32,32,32,32,32, -99,111,108,46,116,121,112,101,32,32,32,32,32,61,32,114,101,115,112,111, -110,115,101,78,97,109,101,13,10,13,10,32,32,32,32,32,32,32,32,32, +32,105,102,32,114,101,115,112,111,110,115,101,78,97,109,101,32,116,104,101, +110,13,10,32,32,32,32,108,111,99,97,108,32,111,120,44,111,121,44,111, +119,44,111,104,32,32,32,61,32,115,101,108,102,58,103,101,116,82,101,99, +116,40,111,116,104,101,114,41,13,10,32,32,32,32,108,111,99,97,108,32, +99,111,108,32,32,32,32,32,32,32,61,32,114,101,99,116,95,100,101,116, +101,99,116,67,111,108,108,105,115,105,111,110,40,120,44,121,44,119,44,104, +44,32,111,120,44,111,121,44,111,119,44,111,104,44,32,103,111,97,108,88, +44,32,103,111,97,108,89,41,13,10,13,10,32,32,32,32,105,102,32,99, +111,108,32,116,104,101,110,13,10,32,32,32,32,32,32,99,111,108,46,111, +116,104,101,114,32,32,61,32,111,116,104,101,114,13,10,32,32,32,32,32, +32,99,111,108,46,105,116,101,109,32,32,32,61,32,105,116,101,109,13,10, +32,32,32,32,32,32,99,111,108,46,116,121,112,101,32,32,32,61,32,114, +101,115,112,111,110,115,101,78,97,109,101,13,10,13,10,32,32,32,32,32, 32,108,101,110,32,61,32,108,101,110,32,43,32,49,13,10,32,32,32,32, -32,32,32,32,32,32,99,111,108,108,105,115,105,111,110,115,91,108,101,110, -93,32,61,32,99,111,108,13,10,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100, -13,10,32,32,101,110,100,13,10,13,10,32,32,116,97,98,108,101,46,115, -111,114,116,40,99,111,108,108,105,115,105,111,110,115,44,32,115,111,114,116, -66,121,84,105,65,110,100,68,105,115,116,97,110,99,101,41,13,10,13,10, -32,32,114,101,116,117,114,110,32,99,111,108,108,105,115,105,111,110,115,44, -32,108,101,110,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111, -110,32,87,111,114,108,100,58,99,111,117,110,116,67,101,108,108,115,40,41, -13,10,32,32,108,111,99,97,108,32,99,111,117,110,116,32,61,32,48,13, -10,32,32,102,111,114,32,95,44,114,111,119,32,105,110,32,112,97,105,114, -115,40,115,101,108,102,46,114,111,119,115,41,32,100,111,13,10,32,32,32, -32,102,111,114,32,95,44,95,32,105,110,32,112,97,105,114,115,40,114,111, -119,41,32,100,111,13,10,32,32,32,32,32,32,99,111,117,110,116,32,61, -32,99,111,117,110,116,32,43,32,49,13,10,32,32,32,32,101,110,100,13, -10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,99,111,117, -110,116,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32, -87,111,114,108,100,58,104,97,115,73,116,101,109,40,105,116,101,109,41,13, -10,32,32,114,101,116,117,114,110,32,110,111,116,32,110,111,116,32,115,101, -108,102,46,114,101,99,116,115,91,105,116,101,109,93,13,10,101,110,100,13, -10,13,10,102,117,110,99,116,105,111,110,32,87,111,114,108,100,58,103,101, -116,73,116,101,109,115,40,41,13,10,32,32,108,111,99,97,108,32,105,116, -101,109,115,44,32,108,101,110,32,61,32,123,125,44,32,48,13,10,32,32, -102,111,114,32,105,116,101,109,44,95,32,105,110,32,112,97,105,114,115,40, -115,101,108,102,46,114,101,99,116,115,41,32,100,111,13,10,32,32,32,32, -108,101,110,32,61,32,108,101,110,32,43,32,49,13,10,32,32,32,32,105, -116,101,109,115,91,108,101,110,93,32,61,32,105,116,101,109,13,10,32,32, -101,110,100,13,10,32,32,114,101,116,117,114,110,32,105,116,101,109,115,44, -32,108,101,110,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111, -110,32,87,111,114,108,100,58,99,111,117,110,116,73,116,101,109,115,40,41, -13,10,32,32,108,111,99,97,108,32,108,101,110,32,61,32,48,13,10,32, -32,102,111,114,32,95,32,105,110,32,112,97,105,114,115,40,115,101,108,102, -46,114,101,99,116,115,41,32,100,111,32,108,101,110,32,61,32,108,101,110, -32,43,32,49,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,108, +32,32,99,111,108,108,105,115,105,111,110,115,91,108,101,110,93,32,61,32, +99,111,108,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110, +100,13,10,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32, +32,116,97,98,108,101,46,115,111,114,116,40,99,111,108,108,105,115,105,111, +110,115,44,32,115,111,114,116,66,121,84,105,65,110,100,68,105,115,116,97, +110,99,101,41,13,10,13,10,32,32,114,101,116,117,114,110,32,99,111,108, +108,105,115,105,111,110,115,44,32,108,101,110,13,10,101,110,100,13,10,13, +10,102,117,110,99,116,105,111,110,32,87,111,114,108,100,58,99,111,117,110, +116,67,101,108,108,115,40,41,13,10,32,32,108,111,99,97,108,32,99,111, +117,110,116,32,61,32,48,13,10,32,32,102,111,114,32,95,44,114,111,119, +32,105,110,32,112,97,105,114,115,40,115,101,108,102,46,114,111,119,115,41, +32,100,111,13,10,32,32,102,111,114,32,95,44,95,32,105,110,32,112,97, +105,114,115,40,114,111,119,41,32,100,111,13,10,32,32,32,32,99,111,117, +110,116,32,61,32,99,111,117,110,116,32,43,32,49,13,10,32,32,101,110, +100,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,99, +111,117,110,116,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111, +110,32,87,111,114,108,100,58,104,97,115,73,116,101,109,40,105,116,101,109, +41,13,10,32,32,114,101,116,117,114,110,32,110,111,116,32,110,111,116,32, +115,101,108,102,46,114,101,99,116,115,91,105,116,101,109,93,13,10,101,110, +100,13,10,13,10,102,117,110,99,116,105,111,110,32,87,111,114,108,100,58, +103,101,116,73,116,101,109,115,40,41,13,10,32,32,108,111,99,97,108,32, +105,116,101,109,115,44,32,108,101,110,32,61,32,123,125,44,32,48,13,10, +32,32,102,111,114,32,105,116,101,109,44,95,32,105,110,32,112,97,105,114, +115,40,115,101,108,102,46,114,101,99,116,115,41,32,100,111,13,10,32,32, +108,101,110,32,61,32,108,101,110,32,43,32,49,13,10,32,32,105,116,101, +109,115,91,108,101,110,93,32,61,32,105,116,101,109,13,10,32,32,101,110, +100,13,10,32,32,114,101,116,117,114,110,32,105,116,101,109,115,44,32,108, 101,110,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32, -87,111,114,108,100,58,103,101,116,82,101,99,116,40,105,116,101,109,41,13, -10,32,32,108,111,99,97,108,32,114,101,99,116,32,61,32,115,101,108,102, -46,114,101,99,116,115,91,105,116,101,109,93,13,10,32,32,105,102,32,110, -111,116,32,114,101,99,116,32,116,104,101,110,13,10,32,32,32,32,101,114, -114,111,114,40,39,73,116,101,109,32,39,32,46,46,32,116,111,115,116,114, -105,110,103,40,105,116,101,109,41,32,46,46,32,39,32,109,117,115,116,32, -98,101,32,97,100,100,101,100,32,116,111,32,116,104,101,32,119,111,114,108, -100,32,98,101,102,111,114,101,32,103,101,116,116,105,110,103,32,105,116,115, -32,114,101,99,116,46,32,85,115,101,32,119,111,114,108,100,58,97,100,100, -40,105,116,101,109,44,32,120,44,121,44,119,44,104,41,32,116,111,32,97, -100,100,32,105,116,32,102,105,114,115,116,46,39,41,13,10,32,32,101,110, -100,13,10,32,32,114,101,116,117,114,110,32,114,101,99,116,46,120,44,32, -114,101,99,116,46,121,44,32,114,101,99,116,46,119,44,32,114,101,99,116, -46,104,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32, -87,111,114,108,100,58,116,111,87,111,114,108,100,40,99,120,44,32,99,121, -41,13,10,32,32,114,101,116,117,114,110,32,103,114,105,100,95,116,111,87, -111,114,108,100,40,115,101,108,102,46,99,101,108,108,83,105,122,101,44,32, -99,120,44,32,99,121,41,13,10,101,110,100,13,10,13,10,102,117,110,99, -116,105,111,110,32,87,111,114,108,100,58,116,111,67,101,108,108,40,120,44, -121,41,13,10,32,32,114,101,116,117,114,110,32,103,114,105,100,95,116,111, -67,101,108,108,40,115,101,108,102,46,99,101,108,108,83,105,122,101,44,32, -120,44,32,121,41,13,10,101,110,100,13,10,13,10,13,10,45,45,45,32, -81,117,101,114,121,32,109,101,116,104,111,100,115,13,10,13,10,102,117,110, -99,116,105,111,110,32,87,111,114,108,100,58,113,117,101,114,121,82,101,99, -116,40,120,44,121,44,119,44,104,44,32,102,105,108,116,101,114,41,13,10, -13,10,32,32,97,115,115,101,114,116,73,115,82,101,99,116,40,120,44,121, -44,119,44,104,41,13,10,13,10,32,32,108,111,99,97,108,32,99,108,44, -99,116,44,99,119,44,99,104,32,61,32,103,114,105,100,95,116,111,67,101, -108,108,82,101,99,116,40,115,101,108,102,46,99,101,108,108,83,105,122,101, -44,32,120,44,121,44,119,44,104,41,13,10,32,32,108,111,99,97,108,32, -100,105,99,116,73,116,101,109,115,73,110,67,101,108,108,82,101,99,116,32, -61,32,103,101,116,68,105,99,116,73,116,101,109,115,73,110,67,101,108,108, -82,101,99,116,40,115,101,108,102,44,32,99,108,44,99,116,44,99,119,44, -99,104,41,13,10,13,10,32,32,108,111,99,97,108,32,105,116,101,109,115, -44,32,108,101,110,32,61,32,123,125,44,32,48,13,10,13,10,32,32,108, -111,99,97,108,32,114,101,99,116,13,10,32,32,102,111,114,32,105,116,101, -109,44,95,32,105,110,32,112,97,105,114,115,40,100,105,99,116,73,116,101, -109,115,73,110,67,101,108,108,82,101,99,116,41,32,100,111,13,10,32,32, -32,32,114,101,99,116,32,61,32,115,101,108,102,46,114,101,99,116,115,91, -105,116,101,109,93,13,10,32,32,32,32,105,102,32,40,110,111,116,32,102, -105,108,116,101,114,32,111,114,32,102,105,108,116,101,114,40,105,116,101,109, -41,41,13,10,32,32,32,32,97,110,100,32,114,101,99,116,95,105,115,73, -110,116,101,114,115,101,99,116,105,110,103,40,120,44,121,44,119,44,104,44, -32,114,101,99,116,46,120,44,32,114,101,99,116,46,121,44,32,114,101,99, -116,46,119,44,32,114,101,99,116,46,104,41,13,10,32,32,32,32,116,104, -101,110,13,10,32,32,32,32,32,32,108,101,110,32,61,32,108,101,110,32, -43,32,49,13,10,32,32,32,32,32,32,105,116,101,109,115,91,108,101,110, -93,32,61,32,105,116,101,109,13,10,32,32,32,32,101,110,100,13,10,32, -32,101,110,100,13,10,13,10,32,32,114,101,116,117,114,110,32,105,116,101, -109,115,44,32,108,101,110,13,10,101,110,100,13,10,13,10,102,117,110,99, -116,105,111,110,32,87,111,114,108,100,58,113,117,101,114,121,80,111,105,110, -116,40,120,44,121,44,32,102,105,108,116,101,114,41,13,10,32,32,108,111, -99,97,108,32,99,120,44,99,121,32,61,32,115,101,108,102,58,116,111,67, -101,108,108,40,120,44,121,41,13,10,32,32,108,111,99,97,108,32,100,105, -99,116,73,116,101,109,115,73,110,67,101,108,108,82,101,99,116,32,61,32, -103,101,116,68,105,99,116,73,116,101,109,115,73,110,67,101,108,108,82,101, -99,116,40,115,101,108,102,44,32,99,120,44,99,121,44,49,44,49,41,13, +87,111,114,108,100,58,99,111,117,110,116,73,116,101,109,115,40,41,13,10, +32,32,108,111,99,97,108,32,108,101,110,32,61,32,48,13,10,32,32,102, +111,114,32,95,32,105,110,32,112,97,105,114,115,40,115,101,108,102,46,114, +101,99,116,115,41,32,100,111,32,108,101,110,32,61,32,108,101,110,32,43, +32,49,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,108,101,110, +13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,87,111, +114,108,100,58,103,101,116,82,101,99,116,40,105,116,101,109,41,13,10,32, +32,108,111,99,97,108,32,114,101,99,116,32,61,32,115,101,108,102,46,114, +101,99,116,115,91,105,116,101,109,93,13,10,32,32,105,102,32,110,111,116, +32,114,101,99,116,32,116,104,101,110,13,10,32,32,101,114,114,111,114,40, +39,73,116,101,109,32,39,32,46,46,32,116,111,115,116,114,105,110,103,40, +105,116,101,109,41,32,46,46,32,39,32,109,117,115,116,32,98,101,32,97, +100,100,101,100,32,116,111,32,116,104,101,32,119,111,114,108,100,32,98,101, +102,111,114,101,32,103,101,116,116,105,110,103,32,105,116,115,32,114,101,99, +116,46,32,85,115,101,32,119,111,114,108,100,58,97,100,100,40,105,116,101, +109,44,32,120,44,121,44,119,44,104,41,32,116,111,32,97,100,100,32,105, +116,32,102,105,114,115,116,46,39,41,13,10,32,32,101,110,100,13,10,32, +32,114,101,116,117,114,110,32,114,101,99,116,46,120,44,32,114,101,99,116, +46,121,44,32,114,101,99,116,46,119,44,32,114,101,99,116,46,104,13,10, +101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,87,111,114,108, +100,58,116,111,87,111,114,108,100,40,99,120,44,32,99,121,41,13,10,32, +32,114,101,116,117,114,110,32,103,114,105,100,95,116,111,87,111,114,108,100, +40,115,101,108,102,46,99,101,108,108,83,105,122,101,44,32,99,120,44,32, +99,121,41,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110, +32,87,111,114,108,100,58,116,111,67,101,108,108,40,120,44,121,41,13,10, +32,32,114,101,116,117,114,110,32,103,114,105,100,95,116,111,67,101,108,108, +40,115,101,108,102,46,99,101,108,108,83,105,122,101,44,32,120,44,32,121, +41,13,10,101,110,100,13,10,13,10,13,10,45,45,45,32,81,117,101,114, +121,32,109,101,116,104,111,100,115,13,10,13,10,102,117,110,99,116,105,111, +110,32,87,111,114,108,100,58,113,117,101,114,121,82,101,99,116,40,120,44, +121,44,119,44,104,44,32,102,105,108,116,101,114,41,13,10,13,10,32,32, +97,115,115,101,114,116,73,115,82,101,99,116,40,120,44,121,44,119,44,104, +41,13,10,13,10,32,32,108,111,99,97,108,32,99,108,44,99,116,44,99, +119,44,99,104,32,61,32,103,114,105,100,95,116,111,67,101,108,108,82,101, +99,116,40,115,101,108,102,46,99,101,108,108,83,105,122,101,44,32,120,44, +121,44,119,44,104,41,13,10,32,32,108,111,99,97,108,32,100,105,99,116, +73,116,101,109,115,73,110,67,101,108,108,82,101,99,116,32,61,32,103,101, +116,68,105,99,116,73,116,101,109,115,73,110,67,101,108,108,82,101,99,116, +40,115,101,108,102,44,32,99,108,44,99,116,44,99,119,44,99,104,41,13, 10,13,10,32,32,108,111,99,97,108,32,105,116,101,109,115,44,32,108,101, 110,32,61,32,123,125,44,32,48,13,10,13,10,32,32,108,111,99,97,108, 32,114,101,99,116,13,10,32,32,102,111,114,32,105,116,101,109,44,95,32, 105,110,32,112,97,105,114,115,40,100,105,99,116,73,116,101,109,115,73,110, -67,101,108,108,82,101,99,116,41,32,100,111,13,10,32,32,32,32,114,101, +67,101,108,108,82,101,99,116,41,32,100,111,13,10,32,32,114,101,99,116, +32,61,32,115,101,108,102,46,114,101,99,116,115,91,105,116,101,109,93,13, +10,32,32,105,102,32,40,110,111,116,32,102,105,108,116,101,114,32,111,114, +32,102,105,108,116,101,114,40,105,116,101,109,41,41,13,10,32,32,97,110, +100,32,114,101,99,116,95,105,115,73,110,116,101,114,115,101,99,116,105,110, +103,40,120,44,121,44,119,44,104,44,32,114,101,99,116,46,120,44,32,114, +101,99,116,46,121,44,32,114,101,99,116,46,119,44,32,114,101,99,116,46, +104,41,13,10,32,32,116,104,101,110,13,10,32,32,32,32,108,101,110,32, +61,32,108,101,110,32,43,32,49,13,10,32,32,32,32,105,116,101,109,115, +91,108,101,110,93,32,61,32,105,116,101,109,13,10,32,32,101,110,100,13, +10,32,32,101,110,100,13,10,13,10,32,32,114,101,116,117,114,110,32,105, +116,101,109,115,44,32,108,101,110,13,10,101,110,100,13,10,13,10,102,117, +110,99,116,105,111,110,32,87,111,114,108,100,58,113,117,101,114,121,80,111, +105,110,116,40,120,44,121,44,32,102,105,108,116,101,114,41,13,10,32,32, +108,111,99,97,108,32,99,120,44,99,121,32,61,32,115,101,108,102,58,116, +111,67,101,108,108,40,120,44,121,41,13,10,32,32,108,111,99,97,108,32, +100,105,99,116,73,116,101,109,115,73,110,67,101,108,108,82,101,99,116,32, +61,32,103,101,116,68,105,99,116,73,116,101,109,115,73,110,67,101,108,108, +82,101,99,116,40,115,101,108,102,44,32,99,120,44,99,121,44,49,44,49, +41,13,10,13,10,32,32,108,111,99,97,108,32,105,116,101,109,115,44,32, +108,101,110,32,61,32,123,125,44,32,48,13,10,13,10,32,32,108,111,99, +97,108,32,114,101,99,116,13,10,32,32,102,111,114,32,105,116,101,109,44, +95,32,105,110,32,112,97,105,114,115,40,100,105,99,116,73,116,101,109,115, +73,110,67,101,108,108,82,101,99,116,41,32,100,111,13,10,32,32,114,101, 99,116,32,61,32,115,101,108,102,46,114,101,99,116,115,91,105,116,101,109, -93,13,10,32,32,32,32,105,102,32,40,110,111,116,32,102,105,108,116,101, -114,32,111,114,32,102,105,108,116,101,114,40,105,116,101,109,41,41,13,10, -32,32,32,32,97,110,100,32,114,101,99,116,95,99,111,110,116,97,105,110, -115,80,111,105,110,116,40,114,101,99,116,46,120,44,32,114,101,99,116,46, -121,44,32,114,101,99,116,46,119,44,32,114,101,99,116,46,104,44,32,120, -44,32,121,41,13,10,32,32,32,32,116,104,101,110,13,10,32,32,32,32, -32,32,108,101,110,32,61,32,108,101,110,32,43,32,49,13,10,32,32,32, -32,32,32,105,116,101,109,115,91,108,101,110,93,32,61,32,105,116,101,109, -13,10,32,32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10, -32,32,114,101,116,117,114,110,32,105,116,101,109,115,44,32,108,101,110,13, -10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,87,111,114, -108,100,58,113,117,101,114,121,83,101,103,109,101,110,116,40,120,49,44,32, -121,49,44,32,120,50,44,32,121,50,44,32,102,105,108,116,101,114,41,13, -10,32,32,108,111,99,97,108,32,105,116,101,109,73,110,102,111,44,32,108, -101,110,32,61,32,103,101,116,73,110,102,111,65,98,111,117,116,73,116,101, -109,115,84,111,117,99,104,101,100,66,121,83,101,103,109,101,110,116,40,115, -101,108,102,44,32,120,49,44,32,121,49,44,32,120,50,44,32,121,50,44, -32,102,105,108,116,101,114,41,13,10,32,32,108,111,99,97,108,32,105,116, -101,109,115,32,61,32,123,125,13,10,32,32,102,111,114,32,105,61,49,44, -32,108,101,110,32,100,111,13,10,32,32,32,32,105,116,101,109,115,91,105, -93,32,61,32,105,116,101,109,73,110,102,111,91,105,93,46,105,116,101,109, -13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,105,116, -101,109,115,44,32,108,101,110,13,10,101,110,100,13,10,13,10,102,117,110, -99,116,105,111,110,32,87,111,114,108,100,58,113,117,101,114,121,83,101,103, -109,101,110,116,87,105,116,104,67,111,111,114,100,115,40,120,49,44,32,121, -49,44,32,120,50,44,32,121,50,44,32,102,105,108,116,101,114,41,13,10, -32,32,108,111,99,97,108,32,105,116,101,109,73,110,102,111,44,32,108,101, -110,32,61,32,103,101,116,73,110,102,111,65,98,111,117,116,73,116,101,109, -115,84,111,117,99,104,101,100,66,121,83,101,103,109,101,110,116,40,115,101, -108,102,44,32,120,49,44,32,121,49,44,32,120,50,44,32,121,50,44,32, -102,105,108,116,101,114,41,13,10,32,32,108,111,99,97,108,32,100,120,44, -32,100,121,32,32,32,32,32,32,32,32,61,32,120,50,45,120,49,44,32, -121,50,45,121,49,13,10,32,32,108,111,99,97,108,32,105,110,102,111,44, -32,116,105,49,44,32,116,105,50,13,10,32,32,102,111,114,32,105,61,49, -44,32,108,101,110,32,100,111,13,10,32,32,32,32,105,110,102,111,32,32, -61,32,105,116,101,109,73,110,102,111,91,105,93,13,10,32,32,32,32,116, -105,49,32,32,32,61,32,105,110,102,111,46,116,105,49,13,10,32,32,32, -32,116,105,50,32,32,32,61,32,105,110,102,111,46,116,105,50,13,10,13, -10,32,32,32,32,105,110,102,111,46,119,101,105,103,104,116,32,32,61,32, -110,105,108,13,10,32,32,32,32,105,110,102,111,46,120,49,32,32,32,32, -32,32,61,32,120,49,32,43,32,100,120,32,42,32,116,105,49,13,10,32, -32,32,32,105,110,102,111,46,121,49,32,32,32,32,32,32,61,32,121,49, -32,43,32,100,121,32,42,32,116,105,49,13,10,32,32,32,32,105,110,102, -111,46,120,50,32,32,32,32,32,32,61,32,120,49,32,43,32,100,120,32, -42,32,116,105,50,13,10,32,32,32,32,105,110,102,111,46,121,50,32,32, -32,32,32,32,61,32,121,49,32,43,32,100,121,32,42,32,116,105,50,13, -10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,105,116,101, -109,73,110,102,111,44,32,108,101,110,13,10,101,110,100,13,10,13,10,13, -10,45,45,45,32,77,97,105,110,32,109,101,116,104,111,100,115,13,10,13, -10,102,117,110,99,116,105,111,110,32,87,111,114,108,100,58,97,100,100,40, -105,116,101,109,44,32,120,44,121,44,119,44,104,41,13,10,32,32,108,111, -99,97,108,32,114,101,99,116,32,61,32,115,101,108,102,46,114,101,99,116, -115,91,105,116,101,109,93,13,10,32,32,105,102,32,114,101,99,116,32,116, -104,101,110,13,10,32,32,32,32,101,114,114,111,114,40,39,73,116,101,109, -32,39,32,46,46,32,116,111,115,116,114,105,110,103,40,105,116,101,109,41, -32,46,46,32,39,32,97,100,100,101,100,32,116,111,32,116,104,101,32,119, -111,114,108,100,32,116,119,105,99,101,46,39,41,13,10,32,32,101,110,100, -13,10,32,32,97,115,115,101,114,116,73,115,82,101,99,116,40,120,44,121, -44,119,44,104,41,13,10,13,10,32,32,115,101,108,102,46,114,101,99,116, -115,91,105,116,101,109,93,32,61,32,123,120,61,120,44,121,61,121,44,119, -61,119,44,104,61,104,125,13,10,13,10,32,32,108,111,99,97,108,32,99, -108,44,99,116,44,99,119,44,99,104,32,61,32,103,114,105,100,95,116,111, -67,101,108,108,82,101,99,116,40,115,101,108,102,46,99,101,108,108,83,105, -122,101,44,32,120,44,121,44,119,44,104,41,13,10,32,32,102,111,114,32, -99,121,32,61,32,99,116,44,32,99,116,43,99,104,45,49,32,100,111,13, -10,32,32,32,32,102,111,114,32,99,120,32,61,32,99,108,44,32,99,108, -43,99,119,45,49,32,100,111,13,10,32,32,32,32,32,32,97,100,100,73, -116,101,109,84,111,67,101,108,108,40,115,101,108,102,44,32,105,116,101,109, -44,32,99,120,44,32,99,121,41,13,10,32,32,32,32,101,110,100,13,10, -32,32,101,110,100,13,10,13,10,32,32,114,101,116,117,114,110,32,105,116, -101,109,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32, -87,111,114,108,100,58,114,101,109,111,118,101,40,105,116,101,109,41,13,10, -32,32,108,111,99,97,108,32,120,44,121,44,119,44,104,32,61,32,115,101, -108,102,58,103,101,116,82,101,99,116,40,105,116,101,109,41,13,10,13,10, -32,32,115,101,108,102,46,114,101,99,116,115,91,105,116,101,109,93,32,61, -32,110,105,108,13,10,32,32,108,111,99,97,108,32,99,108,44,99,116,44, -99,119,44,99,104,32,61,32,103,114,105,100,95,116,111,67,101,108,108,82, -101,99,116,40,115,101,108,102,46,99,101,108,108,83,105,122,101,44,32,120, -44,121,44,119,44,104,41,13,10,32,32,102,111,114,32,99,121,32,61,32, -99,116,44,32,99,116,43,99,104,45,49,32,100,111,13,10,32,32,32,32, -102,111,114,32,99,120,32,61,32,99,108,44,32,99,108,43,99,119,45,49, -32,100,111,13,10,32,32,32,32,32,32,114,101,109,111,118,101,73,116,101, -109,70,114,111,109,67,101,108,108,40,115,101,108,102,44,32,105,116,101,109, -44,32,99,120,44,32,99,121,41,13,10,32,32,32,32,101,110,100,13,10, -32,32,101,110,100,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105, -111,110,32,87,111,114,108,100,58,117,112,100,97,116,101,40,105,116,101,109, -44,32,120,50,44,121,50,44,119,50,44,104,50,41,13,10,32,32,108,111, -99,97,108,32,120,49,44,121,49,44,119,49,44,104,49,32,61,32,115,101, -108,102,58,103,101,116,82,101,99,116,40,105,116,101,109,41,13,10,32,32, -119,50,44,104,50,32,61,32,119,50,32,111,114,32,119,49,44,32,104,50, -32,111,114,32,104,49,13,10,32,32,97,115,115,101,114,116,73,115,82,101, -99,116,40,120,50,44,121,50,44,119,50,44,104,50,41,13,10,13,10,32, -32,105,102,32,120,49,32,126,61,32,120,50,32,111,114,32,121,49,32,126, -61,32,121,50,32,111,114,32,119,49,32,126,61,32,119,50,32,111,114,32, -104,49,32,126,61,32,104,50,32,116,104,101,110,13,10,13,10,32,32,32, -32,108,111,99,97,108,32,99,101,108,108,83,105,122,101,32,61,32,115,101, -108,102,46,99,101,108,108,83,105,122,101,13,10,32,32,32,32,108,111,99, +93,13,10,32,32,105,102,32,40,110,111,116,32,102,105,108,116,101,114,32, +111,114,32,102,105,108,116,101,114,40,105,116,101,109,41,41,13,10,32,32, +97,110,100,32,114,101,99,116,95,99,111,110,116,97,105,110,115,80,111,105, +110,116,40,114,101,99,116,46,120,44,32,114,101,99,116,46,121,44,32,114, +101,99,116,46,119,44,32,114,101,99,116,46,104,44,32,120,44,32,121,41, +13,10,32,32,116,104,101,110,13,10,32,32,32,32,108,101,110,32,61,32, +108,101,110,32,43,32,49,13,10,32,32,32,32,105,116,101,109,115,91,108, +101,110,93,32,61,32,105,116,101,109,13,10,32,32,101,110,100,13,10,32, +32,101,110,100,13,10,13,10,32,32,114,101,116,117,114,110,32,105,116,101, +109,115,44,32,108,101,110,13,10,101,110,100,13,10,13,10,102,117,110,99, +116,105,111,110,32,87,111,114,108,100,58,113,117,101,114,121,83,101,103,109, +101,110,116,40,120,49,44,32,121,49,44,32,120,50,44,32,121,50,44,32, +102,105,108,116,101,114,41,13,10,32,32,108,111,99,97,108,32,105,116,101, +109,73,110,102,111,44,32,108,101,110,32,61,32,103,101,116,73,110,102,111, +65,98,111,117,116,73,116,101,109,115,84,111,117,99,104,101,100,66,121,83, +101,103,109,101,110,116,40,115,101,108,102,44,32,120,49,44,32,121,49,44, +32,120,50,44,32,121,50,44,32,102,105,108,116,101,114,41,13,10,32,32, +108,111,99,97,108,32,105,116,101,109,115,32,61,32,123,125,13,10,32,32, +102,111,114,32,105,61,49,44,32,108,101,110,32,100,111,13,10,32,32,105, +116,101,109,115,91,105,93,32,61,32,105,116,101,109,73,110,102,111,91,105, +93,46,105,116,101,109,13,10,32,32,101,110,100,13,10,32,32,114,101,116, +117,114,110,32,105,116,101,109,115,44,32,108,101,110,13,10,101,110,100,13, +10,13,10,102,117,110,99,116,105,111,110,32,87,111,114,108,100,58,113,117, +101,114,121,83,101,103,109,101,110,116,87,105,116,104,67,111,111,114,100,115, +40,120,49,44,32,121,49,44,32,120,50,44,32,121,50,44,32,102,105,108, +116,101,114,41,13,10,32,32,108,111,99,97,108,32,105,116,101,109,73,110, +102,111,44,32,108,101,110,32,61,32,103,101,116,73,110,102,111,65,98,111, +117,116,73,116,101,109,115,84,111,117,99,104,101,100,66,121,83,101,103,109, +101,110,116,40,115,101,108,102,44,32,120,49,44,32,121,49,44,32,120,50, +44,32,121,50,44,32,102,105,108,116,101,114,41,13,10,32,32,108,111,99, +97,108,32,100,120,44,32,100,121,32,32,32,32,61,32,120,50,45,120,49, +44,32,121,50,45,121,49,13,10,32,32,108,111,99,97,108,32,105,110,102, +111,44,32,116,105,49,44,32,116,105,50,13,10,32,32,102,111,114,32,105, +61,49,44,32,108,101,110,32,100,111,13,10,32,32,105,110,102,111,32,32, +61,32,105,116,101,109,73,110,102,111,91,105,93,13,10,32,32,116,105,49, +32,32,32,61,32,105,110,102,111,46,116,105,49,13,10,32,32,116,105,50, +32,32,32,61,32,105,110,102,111,46,116,105,50,13,10,13,10,32,32,105, +110,102,111,46,119,101,105,103,104,116,32,32,61,32,110,105,108,13,10,32, +32,105,110,102,111,46,120,49,32,32,32,32,61,32,120,49,32,43,32,100, +120,32,42,32,116,105,49,13,10,32,32,105,110,102,111,46,121,49,32,32, +32,32,61,32,121,49,32,43,32,100,121,32,42,32,116,105,49,13,10,32, +32,105,110,102,111,46,120,50,32,32,32,32,61,32,120,49,32,43,32,100, +120,32,42,32,116,105,50,13,10,32,32,105,110,102,111,46,121,50,32,32, +32,32,61,32,121,49,32,43,32,100,121,32,42,32,116,105,50,13,10,32, +32,101,110,100,13,10,32,32,114,101,116,117,114,110,32,105,116,101,109,73, +110,102,111,44,32,108,101,110,13,10,101,110,100,13,10,13,10,13,10,45, +45,45,32,77,97,105,110,32,109,101,116,104,111,100,115,13,10,13,10,102, +117,110,99,116,105,111,110,32,87,111,114,108,100,58,97,100,100,40,105,116, +101,109,44,32,120,44,121,44,119,44,104,41,13,10,32,32,108,111,99,97, +108,32,114,101,99,116,32,61,32,115,101,108,102,46,114,101,99,116,115,91, +105,116,101,109,93,13,10,32,32,105,102,32,114,101,99,116,32,116,104,101, +110,13,10,32,32,101,114,114,111,114,40,39,73,116,101,109,32,39,32,46, +46,32,116,111,115,116,114,105,110,103,40,105,116,101,109,41,32,46,46,32, +39,32,97,100,100,101,100,32,116,111,32,116,104,101,32,119,111,114,108,100, +32,116,119,105,99,101,46,39,41,13,10,32,32,101,110,100,13,10,32,32, +97,115,115,101,114,116,73,115,82,101,99,116,40,120,44,121,44,119,44,104, +41,13,10,13,10,32,32,115,101,108,102,46,114,101,99,116,115,91,105,116, +101,109,93,32,61,32,123,120,61,120,44,121,61,121,44,119,61,119,44,104, +61,104,125,13,10,13,10,32,32,108,111,99,97,108,32,99,108,44,99,116, +44,99,119,44,99,104,32,61,32,103,114,105,100,95,116,111,67,101,108,108, +82,101,99,116,40,115,101,108,102,46,99,101,108,108,83,105,122,101,44,32, +120,44,121,44,119,44,104,41,13,10,32,32,102,111,114,32,99,121,32,61, +32,99,116,44,32,99,116,43,99,104,45,49,32,100,111,13,10,32,32,102, +111,114,32,99,120,32,61,32,99,108,44,32,99,108,43,99,119,45,49,32, +100,111,13,10,32,32,32,32,97,100,100,73,116,101,109,84,111,67,101,108, +108,40,115,101,108,102,44,32,105,116,101,109,44,32,99,120,44,32,99,121, +41,13,10,32,32,101,110,100,13,10,32,32,101,110,100,13,10,13,10,32, +32,114,101,116,117,114,110,32,105,116,101,109,13,10,101,110,100,13,10,13, +10,102,117,110,99,116,105,111,110,32,87,111,114,108,100,58,114,101,109,111, +118,101,40,105,116,101,109,41,13,10,32,32,108,111,99,97,108,32,120,44, +121,44,119,44,104,32,61,32,115,101,108,102,58,103,101,116,82,101,99,116, +40,105,116,101,109,41,13,10,13,10,32,32,115,101,108,102,46,114,101,99, +116,115,91,105,116,101,109,93,32,61,32,110,105,108,13,10,32,32,108,111, +99,97,108,32,99,108,44,99,116,44,99,119,44,99,104,32,61,32,103,114, +105,100,95,116,111,67,101,108,108,82,101,99,116,40,115,101,108,102,46,99, +101,108,108,83,105,122,101,44,32,120,44,121,44,119,44,104,41,13,10,32, +32,102,111,114,32,99,121,32,61,32,99,116,44,32,99,116,43,99,104,45, +49,32,100,111,13,10,32,32,102,111,114,32,99,120,32,61,32,99,108,44, +32,99,108,43,99,119,45,49,32,100,111,13,10,32,32,32,32,114,101,109, +111,118,101,73,116,101,109,70,114,111,109,67,101,108,108,40,115,101,108,102, +44,32,105,116,101,109,44,32,99,120,44,32,99,121,41,13,10,32,32,101, +110,100,13,10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,102,117, +110,99,116,105,111,110,32,87,111,114,108,100,58,117,112,100,97,116,101,40, +105,116,101,109,44,32,120,50,44,121,50,44,119,50,44,104,50,41,13,10, +32,32,108,111,99,97,108,32,120,49,44,121,49,44,119,49,44,104,49,32, +61,32,115,101,108,102,58,103,101,116,82,101,99,116,40,105,116,101,109,41, +13,10,32,32,119,50,44,104,50,32,61,32,119,50,32,111,114,32,119,49, +44,32,104,50,32,111,114,32,104,49,13,10,32,32,97,115,115,101,114,116, +73,115,82,101,99,116,40,120,50,44,121,50,44,119,50,44,104,50,41,13, +10,13,10,32,32,105,102,32,120,49,32,126,61,32,120,50,32,111,114,32, +121,49,32,126,61,32,121,50,32,111,114,32,119,49,32,126,61,32,119,50, +32,111,114,32,104,49,32,126,61,32,104,50,32,116,104,101,110,13,10,13, +10,32,32,108,111,99,97,108,32,99,101,108,108,83,105,122,101,32,61,32, +115,101,108,102,46,99,101,108,108,83,105,122,101,13,10,32,32,108,111,99, 97,108,32,99,108,49,44,99,116,49,44,99,119,49,44,99,104,49,32,61, 32,103,114,105,100,95,116,111,67,101,108,108,82,101,99,116,40,99,101,108, 108,83,105,122,101,44,32,120,49,44,121,49,44,119,49,44,104,49,41,13, -10,32,32,32,32,108,111,99,97,108,32,99,108,50,44,99,116,50,44,99, -119,50,44,99,104,50,32,61,32,103,114,105,100,95,116,111,67,101,108,108, -82,101,99,116,40,99,101,108,108,83,105,122,101,44,32,120,50,44,121,50, -44,119,50,44,104,50,41,13,10,13,10,32,32,32,32,105,102,32,99,108, -49,32,126,61,32,99,108,50,32,111,114,32,99,116,49,32,126,61,32,99, -116,50,32,111,114,32,99,119,49,32,126,61,32,99,119,50,32,111,114,32, -99,104,49,32,126,61,32,99,104,50,32,116,104,101,110,13,10,13,10,32, -32,32,32,32,32,108,111,99,97,108,32,99,114,49,44,32,99,98,49,32, -61,32,99,108,49,43,99,119,49,45,49,44,32,99,116,49,43,99,104,49, -45,49,13,10,32,32,32,32,32,32,108,111,99,97,108,32,99,114,50,44, -32,99,98,50,32,61,32,99,108,50,43,99,119,50,45,49,44,32,99,116, -50,43,99,104,50,45,49,13,10,32,32,32,32,32,32,108,111,99,97,108, -32,99,121,79,117,116,13,10,13,10,32,32,32,32,32,32,102,111,114,32, -99,121,32,61,32,99,116,49,44,32,99,98,49,32,100,111,13,10,32,32, -32,32,32,32,32,32,99,121,79,117,116,32,61,32,99,121,32,60,32,99, -116,50,32,111,114,32,99,121,32,62,32,99,98,50,13,10,32,32,32,32, +10,32,32,108,111,99,97,108,32,99,108,50,44,99,116,50,44,99,119,50, +44,99,104,50,32,61,32,103,114,105,100,95,116,111,67,101,108,108,82,101, +99,116,40,99,101,108,108,83,105,122,101,44,32,120,50,44,121,50,44,119, +50,44,104,50,41,13,10,13,10,32,32,105,102,32,99,108,49,32,126,61, +32,99,108,50,32,111,114,32,99,116,49,32,126,61,32,99,116,50,32,111, +114,32,99,119,49,32,126,61,32,99,119,50,32,111,114,32,99,104,49,32, +126,61,32,99,104,50,32,116,104,101,110,13,10,13,10,32,32,32,32,108, +111,99,97,108,32,99,114,49,44,32,99,98,49,32,61,32,99,108,49,43, +99,119,49,45,49,44,32,99,116,49,43,99,104,49,45,49,13,10,32,32, +32,32,108,111,99,97,108,32,99,114,50,44,32,99,98,50,32,61,32,99, +108,50,43,99,119,50,45,49,44,32,99,116,50,43,99,104,50,45,49,13, +10,32,32,32,32,108,111,99,97,108,32,99,121,79,117,116,13,10,13,10, +32,32,32,32,102,111,114,32,99,121,32,61,32,99,116,49,44,32,99,98, +49,32,100,111,13,10,32,32,32,32,99,121,79,117,116,32,61,32,99,121, +32,60,32,99,116,50,32,111,114,32,99,121,32,62,32,99,98,50,13,10, 32,32,32,32,102,111,114,32,99,120,32,61,32,99,108,49,44,32,99,114, -49,32,100,111,13,10,32,32,32,32,32,32,32,32,32,32,105,102,32,99, -121,79,117,116,32,111,114,32,99,120,32,60,32,99,108,50,32,111,114,32, -99,120,32,62,32,99,114,50,32,116,104,101,110,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,114,101,109,111,118,101,73,116,101,109,70,114,111, -109,67,101,108,108,40,115,101,108,102,44,32,105,116,101,109,44,32,99,120, -44,32,99,121,41,13,10,32,32,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32, -32,101,110,100,13,10,13,10,32,32,32,32,32,32,102,111,114,32,99,121, -32,61,32,99,116,50,44,32,99,98,50,32,100,111,13,10,32,32,32,32, -32,32,32,32,99,121,79,117,116,32,61,32,99,121,32,60,32,99,116,49, -32,111,114,32,99,121,32,62,32,99,98,49,13,10,32,32,32,32,32,32, -32,32,102,111,114,32,99,120,32,61,32,99,108,50,44,32,99,114,50,32, -100,111,13,10,32,32,32,32,32,32,32,32,32,32,105,102,32,99,121,79, -117,116,32,111,114,32,99,120,32,60,32,99,108,49,32,111,114,32,99,120, -32,62,32,99,114,49,32,116,104,101,110,13,10,32,32,32,32,32,32,32, +49,32,100,111,13,10,32,32,32,32,32,32,105,102,32,99,121,79,117,116, +32,111,114,32,99,120,32,60,32,99,108,50,32,111,114,32,99,120,32,62, +32,99,114,50,32,116,104,101,110,13,10,32,32,32,32,32,32,114,101,109, +111,118,101,73,116,101,109,70,114,111,109,67,101,108,108,40,115,101,108,102, +44,32,105,116,101,109,44,32,99,120,44,32,99,121,41,13,10,32,32,32, +32,32,32,101,110,100,13,10,32,32,32,32,101,110,100,13,10,32,32,32, +32,101,110,100,13,10,13,10,32,32,32,32,102,111,114,32,99,121,32,61, +32,99,116,50,44,32,99,98,50,32,100,111,13,10,32,32,32,32,99,121, +79,117,116,32,61,32,99,121,32,60,32,99,116,49,32,111,114,32,99,121, +32,62,32,99,98,49,13,10,32,32,32,32,102,111,114,32,99,120,32,61, +32,99,108,50,44,32,99,114,50,32,100,111,13,10,32,32,32,32,32,32, +105,102,32,99,121,79,117,116,32,111,114,32,99,120,32,60,32,99,108,49, +32,111,114,32,99,120,32,62,32,99,114,49,32,116,104,101,110,13,10,32, 32,32,32,32,32,97,100,100,73,116,101,109,84,111,67,101,108,108,40,115, 101,108,102,44,32,105,116,101,109,44,32,99,120,44,32,99,121,41,13,10, -32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32, -32,32,32,101,110,100,13,10,32,32,32,32,32,32,101,110,100,13,10,13, -10,32,32,32,32,101,110,100,13,10,13,10,32,32,32,32,108,111,99,97, -108,32,114,101,99,116,32,61,32,115,101,108,102,46,114,101,99,116,115,91, -105,116,101,109,93,13,10,32,32,32,32,114,101,99,116,46,120,44,32,114, -101,99,116,46,121,44,32,114,101,99,116,46,119,44,32,114,101,99,116,46, -104,32,61,32,120,50,44,121,50,44,119,50,44,104,50,13,10,13,10,32, -32,101,110,100,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111, -110,32,87,111,114,108,100,58,109,111,118,101,40,105,116,101,109,44,32,103, +32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100,13,10, +32,32,32,32,101,110,100,13,10,13,10,32,32,101,110,100,13,10,13,10, +32,32,108,111,99,97,108,32,114,101,99,116,32,61,32,115,101,108,102,46, +114,101,99,116,115,91,105,116,101,109,93,13,10,32,32,114,101,99,116,46, +120,44,32,114,101,99,116,46,121,44,32,114,101,99,116,46,119,44,32,114, +101,99,116,46,104,32,61,32,120,50,44,121,50,44,119,50,44,104,50,13, +10,13,10,32,32,101,110,100,13,10,101,110,100,13,10,13,10,102,117,110, +99,116,105,111,110,32,87,111,114,108,100,58,109,111,118,101,40,105,116,101, +109,44,32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,102,105,108, +116,101,114,41,13,10,32,32,108,111,99,97,108,32,97,99,116,117,97,108, +88,44,32,97,99,116,117,97,108,89,44,32,99,111,108,115,44,32,108,101, +110,32,61,32,115,101,108,102,58,99,104,101,99,107,40,105,116,101,109,44, +32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101, +114,41,13,10,13,10,32,32,115,101,108,102,58,117,112,100,97,116,101,40, +105,116,101,109,44,32,97,99,116,117,97,108,88,44,32,97,99,116,117,97, +108,89,41,13,10,13,10,32,32,114,101,116,117,114,110,32,97,99,116,117, +97,108,88,44,32,97,99,116,117,97,108,89,44,32,99,111,108,115,44,32, +108,101,110,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110, +32,87,111,114,108,100,58,99,104,101,99,107,40,105,116,101,109,44,32,103, 111,97,108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101,114,41, -13,10,32,32,108,111,99,97,108,32,97,99,116,117,97,108,88,44,32,97, -99,116,117,97,108,89,44,32,99,111,108,115,44,32,108,101,110,32,61,32, -115,101,108,102,58,99,104,101,99,107,40,105,116,101,109,44,32,103,111,97, -108,88,44,32,103,111,97,108,89,44,32,102,105,108,116,101,114,41,13,10, -13,10,32,32,115,101,108,102,58,117,112,100,97,116,101,40,105,116,101,109, -44,32,97,99,116,117,97,108,88,44,32,97,99,116,117,97,108,89,41,13, -10,13,10,32,32,114,101,116,117,114,110,32,97,99,116,117,97,108,88,44, -32,97,99,116,117,97,108,89,44,32,99,111,108,115,44,32,108,101,110,13, -10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,87,111,114, -108,100,58,99,104,101,99,107,40,105,116,101,109,44,32,103,111,97,108,88, -44,32,103,111,97,108,89,44,32,102,105,108,116,101,114,41,13,10,32,32, -102,105,108,116,101,114,32,61,32,102,105,108,116,101,114,32,111,114,32,100, -101,102,97,117,108,116,70,105,108,116,101,114,13,10,13,10,32,32,108,111, -99,97,108,32,118,105,115,105,116,101,100,32,61,32,123,91,105,116,101,109, -93,32,61,32,116,114,117,101,125,13,10,32,32,108,111,99,97,108,32,118, -105,115,105,116,101,100,70,105,108,116,101,114,32,61,32,102,117,110,99,116, -105,111,110,40,105,116,109,44,32,111,116,104,101,114,41,13,10,32,32,32, -32,105,102,32,118,105,115,105,116,101,100,91,111,116,104,101,114,93,32,116, -104,101,110,32,114,101,116,117,114,110,32,102,97,108,115,101,32,101,110,100, -13,10,32,32,32,32,114,101,116,117,114,110,32,102,105,108,116,101,114,40, +13,10,32,32,102,105,108,116,101,114,32,61,32,102,105,108,116,101,114,32, +111,114,32,100,101,102,97,117,108,116,70,105,108,116,101,114,13,10,13,10, +32,32,108,111,99,97,108,32,118,105,115,105,116,101,100,32,61,32,123,91, +105,116,101,109,93,32,61,32,116,114,117,101,125,13,10,32,32,108,111,99, +97,108,32,118,105,115,105,116,101,100,70,105,108,116,101,114,32,61,32,102, +117,110,99,116,105,111,110,40,105,116,109,44,32,111,116,104,101,114,41,13, +10,32,32,105,102,32,118,105,115,105,116,101,100,91,111,116,104,101,114,93, +32,116,104,101,110,32,114,101,116,117,114,110,32,102,97,108,115,101,32,101, +110,100,13,10,32,32,114,101,116,117,114,110,32,102,105,108,116,101,114,40, 105,116,109,44,32,111,116,104,101,114,41,13,10,32,32,101,110,100,13,10, 13,10,32,32,108,111,99,97,108,32,99,111,108,115,44,32,108,101,110,32, 61,32,123,125,44,32,48,13,10,13,10,32,32,108,111,99,97,108,32,120, @@ -986,89 +955,85 @@ static char physics_lua[] = { 111,97,108,88,44,103,111,97,108,89,44,32,118,105,115,105,116,101,100,70, 105,108,116,101,114,41,13,10,13,10,32,32,119,104,105,108,101,32,112,114, 111,106,101,99,116,101,100,95,108,101,110,32,62,32,48,32,100,111,13,10, -32,32,32,32,108,111,99,97,108,32,99,111,108,32,61,32,112,114,111,106, -101,99,116,101,100,95,99,111,108,115,91,49,93,13,10,32,32,32,32,108, -101,110,32,32,32,32,32,32,32,61,32,108,101,110,32,43,32,49,13,10, -32,32,32,32,99,111,108,115,91,108,101,110,93,32,61,32,99,111,108,13, -10,13,10,32,32,32,32,118,105,115,105,116,101,100,91,99,111,108,46,111, -116,104,101,114,93,32,61,32,116,114,117,101,13,10,13,10,32,32,32,32, -108,111,99,97,108,32,114,101,115,112,111,110,115,101,32,61,32,103,101,116, -82,101,115,112,111,110,115,101,66,121,78,97,109,101,40,115,101,108,102,44, -32,99,111,108,46,116,121,112,101,41,13,10,13,10,32,32,32,32,103,111, -97,108,88,44,32,103,111,97,108,89,44,32,112,114,111,106,101,99,116,101, -100,95,99,111,108,115,44,32,112,114,111,106,101,99,116,101,100,95,108,101, -110,32,61,32,114,101,115,112,111,110,115,101,40,13,10,32,32,32,32,32, -32,115,101,108,102,44,13,10,32,32,32,32,32,32,99,111,108,44,13,10, -32,32,32,32,32,32,120,44,32,121,44,32,119,44,32,104,44,13,10,32, -32,32,32,32,32,103,111,97,108,88,44,32,103,111,97,108,89,44,13,10, -32,32,32,32,32,32,118,105,115,105,116,101,100,70,105,108,116,101,114,13, -10,32,32,32,32,41,13,10,32,32,101,110,100,13,10,13,10,32,32,114, -101,116,117,114,110,32,103,111,97,108,88,44,32,103,111,97,108,89,44,32, -99,111,108,115,44,32,108,101,110,13,10,101,110,100,13,10,13,10,13,10, -45,45,32,80,117,98,108,105,99,32,108,105,98,114,97,114,121,32,102,117, -110,99,116,105,111,110,115,13,10,13,10,98,117,109,112,46,110,101,119,87, -111,114,108,100,32,61,32,102,117,110,99,116,105,111,110,40,99,101,108,108, -83,105,122,101,41,13,10,32,32,99,101,108,108,83,105,122,101,32,61,32, -99,101,108,108,83,105,122,101,32,111,114,32,54,52,13,10,32,32,97,115, -115,101,114,116,73,115,80,111,115,105,116,105,118,101,78,117,109,98,101,114, -40,99,101,108,108,83,105,122,101,44,32,39,99,101,108,108,83,105,122,101, -39,41,13,10,32,32,108,111,99,97,108,32,119,111,114,108,100,32,61,32, -115,101,116,109,101,116,97,116,97,98,108,101,40,123,13,10,32,32,32,32, -99,101,108,108,83,105,122,101,32,32,32,32,32,32,32,61,32,99,101,108, -108,83,105,122,101,44,13,10,32,32,32,32,114,101,99,116,115,32,32,32, -32,32,32,32,32,32,32,61,32,123,125,44,13,10,32,32,32,32,114,111, -119,115,32,32,32,32,32,32,32,32,32,32,32,61,32,123,125,44,13,10, -32,32,32,32,110,111,110,69,109,112,116,121,67,101,108,108,115,32,32,61, -32,123,125,44,13,10,32,32,32,32,114,101,115,112,111,110,115,101,115,32, -61,32,123,125,13,10,32,32,125,44,32,87,111,114,108,100,95,109,116,41, -13,10,13,10,32,32,119,111,114,108,100,58,97,100,100,82,101,115,112,111, -110,115,101,40,39,116,111,117,99,104,39,44,32,116,111,117,99,104,41,13, -10,32,32,119,111,114,108,100,58,97,100,100,82,101,115,112,111,110,115,101, -40,39,99,114,111,115,115,39,44,32,99,114,111,115,115,41,13,10,32,32, -119,111,114,108,100,58,97,100,100,82,101,115,112,111,110,115,101,40,39,115, -108,105,100,101,39,44,32,115,108,105,100,101,41,13,10,32,32,119,111,114, -108,100,58,97,100,100,82,101,115,112,111,110,115,101,40,39,98,111,117,110, -99,101,39,44,32,98,111,117,110,99,101,41,13,10,13,10,32,32,114,101, -116,117,114,110,32,119,111,114,108,100,13,10,101,110,100,13,10,13,10,98, -117,109,112,46,114,101,99,116,32,61,32,123,13,10,32,32,103,101,116,78, -101,97,114,101,115,116,67,111,114,110,101,114,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,61,32,114,101,99,116,95,103,101,116,78,101,97,114, -101,115,116,67,111,114,110,101,114,44,13,10,32,32,103,101,116,83,101,103, -109,101,110,116,73,110,116,101,114,115,101,99,116,105,111,110,73,110,100,105, -99,101,115,32,61,32,114,101,99,116,95,103,101,116,83,101,103,109,101,110, -116,73,110,116,101,114,115,101,99,116,105,111,110,73,110,100,105,99,101,115, -44,13,10,32,32,103,101,116,68,105,102,102,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,61,32,114,101,99, -116,95,103,101,116,68,105,102,102,44,13,10,32,32,99,111,110,116,97,105, -110,115,80,111,105,110,116,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,61,32,114,101,99,116,95,99,111,110,116,97,105,110,115,80, -111,105,110,116,44,13,10,32,32,105,115,73,110,116,101,114,115,101,99,116, -105,110,103,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,61, -32,114,101,99,116,95,105,115,73,110,116,101,114,115,101,99,116,105,110,103, -44,13,10,32,32,103,101,116,83,113,117,97,114,101,68,105,115,116,97,110, -99,101,32,32,32,32,32,32,32,32,32,32,32,32,32,61,32,114,101,99, -116,95,103,101,116,83,113,117,97,114,101,68,105,115,116,97,110,99,101,44, -13,10,32,32,100,101,116,101,99,116,67,111,108,108,105,115,105,111,110,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,61,32,114,101,99,116, -95,100,101,116,101,99,116,67,111,108,108,105,115,105,111,110,13,10,125,13, -10,13,10,98,117,109,112,46,114,101,115,112,111,110,115,101,115,32,61,32, -123,13,10,32,32,116,111,117,99,104,32,32,61,32,116,111,117,99,104,44, -13,10,32,32,99,114,111,115,115,32,32,61,32,99,114,111,115,115,44,13, -10,32,32,115,108,105,100,101,32,32,61,32,115,108,105,100,101,44,13,10, -32,32,98,111,117,110,99,101,32,61,32,98,111,117,110,99,101,13,10,125, -13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +32,32,108,111,99,97,108,32,99,111,108,32,61,32,112,114,111,106,101,99, +116,101,100,95,99,111,108,115,91,49,93,13,10,32,32,108,101,110,32,32, +32,32,32,61,32,108,101,110,32,43,32,49,13,10,32,32,99,111,108,115, +91,108,101,110,93,32,61,32,99,111,108,13,10,13,10,32,32,118,105,115, +105,116,101,100,91,99,111,108,46,111,116,104,101,114,93,32,61,32,116,114, +117,101,13,10,13,10,32,32,108,111,99,97,108,32,114,101,115,112,111,110, +115,101,32,61,32,103,101,116,82,101,115,112,111,110,115,101,66,121,78,97, +109,101,40,115,101,108,102,44,32,99,111,108,46,116,121,112,101,41,13,10, +13,10,32,32,103,111,97,108,88,44,32,103,111,97,108,89,44,32,112,114, +111,106,101,99,116,101,100,95,99,111,108,115,44,32,112,114,111,106,101,99, +116,101,100,95,108,101,110,32,61,32,114,101,115,112,111,110,115,101,40,13, +10,32,32,32,32,115,101,108,102,44,13,10,32,32,32,32,99,111,108,44, +13,10,32,32,32,32,120,44,32,121,44,32,119,44,32,104,44,13,10,32, +32,32,32,103,111,97,108,88,44,32,103,111,97,108,89,44,13,10,32,32, +32,32,118,105,115,105,116,101,100,70,105,108,116,101,114,13,10,32,32,41, +13,10,32,32,101,110,100,13,10,13,10,32,32,114,101,116,117,114,110,32, +103,111,97,108,88,44,32,103,111,97,108,89,44,32,99,111,108,115,44,32, +108,101,110,13,10,101,110,100,13,10,13,10,13,10,45,45,32,80,117,98, +108,105,99,32,108,105,98,114,97,114,121,32,102,117,110,99,116,105,111,110, +115,13,10,13,10,98,117,109,112,46,110,101,119,87,111,114,108,100,32,61, +32,102,117,110,99,116,105,111,110,40,99,101,108,108,83,105,122,101,41,13, +10,32,32,99,101,108,108,83,105,122,101,32,61,32,99,101,108,108,83,105, +122,101,32,111,114,32,54,52,13,10,32,32,97,115,115,101,114,116,73,115, +80,111,115,105,116,105,118,101,78,117,109,98,101,114,40,99,101,108,108,83, +105,122,101,44,32,39,99,101,108,108,83,105,122,101,39,41,13,10,32,32, +108,111,99,97,108,32,119,111,114,108,100,32,61,32,115,101,116,109,101,116, +97,116,97,98,108,101,40,123,13,10,32,32,99,101,108,108,83,105,122,101, +32,32,32,32,32,61,32,99,101,108,108,83,105,122,101,44,13,10,32,32, +114,101,99,116,115,32,32,32,32,32,32,61,32,123,125,44,13,10,32,32, +114,111,119,115,32,32,32,32,32,32,32,61,32,123,125,44,13,10,32,32, +110,111,110,69,109,112,116,121,67,101,108,108,115,32,32,61,32,123,125,44, +13,10,32,32,114,101,115,112,111,110,115,101,115,32,61,32,123,125,13,10, +32,32,125,44,32,87,111,114,108,100,95,109,116,41,13,10,13,10,32,32, +119,111,114,108,100,58,97,100,100,82,101,115,112,111,110,115,101,40,39,116, +111,117,99,104,39,44,32,116,111,117,99,104,41,13,10,32,32,119,111,114, +108,100,58,97,100,100,82,101,115,112,111,110,115,101,40,39,99,114,111,115, +115,39,44,32,99,114,111,115,115,41,13,10,32,32,119,111,114,108,100,58, +97,100,100,82,101,115,112,111,110,115,101,40,39,115,108,105,100,101,39,44, +32,115,108,105,100,101,41,13,10,32,32,119,111,114,108,100,58,97,100,100, +82,101,115,112,111,110,115,101,40,39,98,111,117,110,99,101,39,44,32,98, +111,117,110,99,101,41,13,10,13,10,32,32,114,101,116,117,114,110,32,119, +111,114,108,100,13,10,101,110,100,13,10,13,10,98,117,109,112,46,114,101, +99,116,32,61,32,123,13,10,32,32,103,101,116,78,101,97,114,101,115,116, +67,111,114,110,101,114,32,32,32,32,32,32,32,32,61,32,114,101,99,116, +95,103,101,116,78,101,97,114,101,115,116,67,111,114,110,101,114,44,13,10, +32,32,103,101,116,83,101,103,109,101,110,116,73,110,116,101,114,115,101,99, +116,105,111,110,73,110,100,105,99,101,115,32,61,32,114,101,99,116,95,103, +101,116,83,101,103,109,101,110,116,73,110,116,101,114,115,101,99,116,105,111, +110,73,110,100,105,99,101,115,44,13,10,32,32,103,101,116,68,105,102,102, +32,32,32,32,32,32,32,32,32,32,32,32,32,61,32,114,101,99,116,95, +103,101,116,68,105,102,102,44,13,10,32,32,99,111,110,116,97,105,110,115, +80,111,105,110,116,32,32,32,32,32,32,32,32,32,61,32,114,101,99,116, +95,99,111,110,116,97,105,110,115,80,111,105,110,116,44,13,10,32,32,105, +115,73,110,116,101,114,115,101,99,116,105,110,103,32,32,32,32,32,32,32, +32,61,32,114,101,99,116,95,105,115,73,110,116,101,114,115,101,99,116,105, +110,103,44,13,10,32,32,103,101,116,83,113,117,97,114,101,68,105,115,116, +97,110,99,101,32,32,32,32,32,32,32,61,32,114,101,99,116,95,103,101, +116,83,113,117,97,114,101,68,105,115,116,97,110,99,101,44,13,10,32,32, +100,101,116,101,99,116,67,111,108,108,105,115,105,111,110,32,32,32,32,32, +32,32,32,32,61,32,114,101,99,116,95,100,101,116,101,99,116,67,111,108, +108,105,115,105,111,110,13,10,125,13,10,13,10,98,117,109,112,46,114,101, +115,112,111,110,115,101,115,32,61,32,123,13,10,32,32,116,111,117,99,104, +32,32,61,32,116,111,117,99,104,44,13,10,32,32,99,114,111,115,115,32, +32,61,32,99,114,111,115,115,44,13,10,32,32,115,108,105,100,101,32,32, +61,32,115,108,105,100,101,44,13,10,32,32,98,111,117,110,99,101,32,61, +32,98,111,117,110,99,101,13,10,125,13,10,13,10,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10, -45,45,32,69,120,112,111,114,116,32,116,111,32,74,105,110,46,32,13,10, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,13,10,45,45,32,69,120,112,111,114,116,32, +116,111,32,74,105,110,46,32,13,10,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,106,105, -110,46,112,104,121,115,105,99,115,32,61,32,98,117,109,112,13,10,0 +45,45,45,45,13,10,13,10,106,105,110,46,112,104,121,115,105,99,115,32, +61,32,98,117,109,112,13,10,0 }; diff --git a/src/libjin-lua/scripts/time/time.lua b/src/libjin-lua/scripts/time/time.lua index 61c6ab1..4f4a37b 100644 --- a/src/libjin-lua/scripts/time/time.lua +++ b/src/libjin-lua/scripts/time/time.lua @@ -6,20 +6,20 @@ local fps = 0 local t = 0 jin.time.getFPS = function() - return fps + return fps end local step = jin.time.step jin.time.step = function() - step() - -- Update fps - t = t + jin.time.getDelta() - if t > 1 then - t = t - 1 - fps = f + 1 - f = 0 - else - f = f + 1 - end + step() + -- Update fps + t = t + jin.time.getDelta() + if t > 1 then + t = t - 1 + fps = f + 1 + f = 0 + else + f = f + 1 + end end diff --git a/src/libjin-lua/scripts/time/time.lua.h b/src/libjin-lua/scripts/time/time.lua.h index 4bae19e..537648d 100644 --- a/src/libjin-lua/scripts/time/time.lua.h +++ b/src/libjin-lua/scripts/time/time.lua.h @@ -5,19 +5,18 @@ static char time_lua[] = { 32,48,13,10,108,111,99,97,108,32,102,112,115,32,61,32,48,13,10,108, 111,99,97,108,32,116,32,61,32,48,13,10,13,10,106,105,110,46,116,105, 109,101,46,103,101,116,70,80,83,32,61,32,102,117,110,99,116,105,111,110, -40,41,32,13,10,32,32,32,32,114,101,116,117,114,110,32,102,112,115,13, -10,101,110,100,32,13,10,13,10,108,111,99,97,108,32,115,116,101,112,32, -61,32,106,105,110,46,116,105,109,101,46,115,116,101,112,13,10,13,10,106, -105,110,46,116,105,109,101,46,115,116,101,112,32,61,32,102,117,110,99,116, -105,111,110,40,41,32,13,10,32,32,32,32,115,116,101,112,40,41,32,13, -10,32,32,32,32,45,45,32,85,112,100,97,116,101,32,102,112,115,13,10, -32,32,32,32,116,32,61,32,116,32,43,32,106,105,110,46,116,105,109,101, -46,103,101,116,68,101,108,116,97,40,41,32,13,10,32,32,32,32,105,102, -32,116,32,62,32,49,32,116,104,101,110,32,13,10,32,32,32,32,32,32, -32,32,116,32,61,32,116,32,45,32,49,32,13,10,32,32,32,32,32,32, -32,32,102,112,115,32,61,32,102,32,43,32,49,13,10,32,32,32,32,32, -32,32,32,102,32,61,32,48,13,10,32,32,32,32,101,108,115,101,32,13, -10,32,32,32,32,32,32,32,32,102,32,61,32,102,32,43,32,49,13,10, -32,32,32,32,101,110,100,13,10,101,110,100,32,13,10,0 +40,41,32,13,10,32,32,114,101,116,117,114,110,32,102,112,115,13,10,101, +110,100,32,13,10,13,10,108,111,99,97,108,32,115,116,101,112,32,61,32, +106,105,110,46,116,105,109,101,46,115,116,101,112,13,10,13,10,106,105,110, +46,116,105,109,101,46,115,116,101,112,32,61,32,102,117,110,99,116,105,111, +110,40,41,32,13,10,32,32,115,116,101,112,40,41,32,13,10,32,32,45, +45,32,85,112,100,97,116,101,32,102,112,115,13,10,32,32,116,32,61,32, +116,32,43,32,106,105,110,46,116,105,109,101,46,103,101,116,68,101,108,116, +97,40,41,32,13,10,32,32,105,102,32,116,32,62,32,49,32,116,104,101, +110,32,13,10,32,32,32,32,116,32,61,32,116,32,45,32,49,32,13,10, +32,32,32,32,102,112,115,32,61,32,102,32,43,32,49,13,10,32,32,32, +32,102,32,61,32,48,13,10,32,32,101,108,115,101,32,13,10,32,32,32, +32,102,32,61,32,102,32,43,32,49,13,10,32,32,101,110,100,13,10,101, +110,100,32,13,10,0 }; diff --git a/src/libjin-lua/scripts/utils/json.lua b/src/libjin-lua/scripts/utils/json.lua index d2c44b3..4f84400 100644 --- a/src/libjin-lua/scripts/utils/json.lua +++ b/src/libjin-lua/scripts/utils/json.lua @@ -14,108 +14,108 @@ local json = { _version = "0.1.1" } local encode local escape_char_map = { - [ "\\" ] = "\\\\", - [ "\"" ] = "\\\"", - [ "\b" ] = "\\b", - [ "\f" ] = "\\f", - [ "\n" ] = "\\n", - [ "\r" ] = "\\r", - [ "\t" ] = "\\t", + [ "\\" ] = "\\\\", + [ "\"" ] = "\\\"", + [ "\b" ] = "\\b", + [ "\f" ] = "\\f", + [ "\n" ] = "\\n", + [ "\r" ] = "\\r", + [ "\t" ] = "\\t", } local escape_char_map_inv = { [ "\\/" ] = "/" } for k, v in pairs(escape_char_map) do - escape_char_map_inv[v] = k + escape_char_map_inv[v] = k end local function escape_char(c) - return escape_char_map[c] or string.format("\\u%04x", c:byte()) + return escape_char_map[c] or string.format("\\u%04x", c:byte()) end local function encode_nil(val) - return "null" + return "null" end local function encode_table(val, stack) - local res = {} - stack = stack or {} - - -- Circular reference? - if stack[val] then error("circular reference") end - - stack[val] = true - - if val[1] ~= nil or next(val) == nil then - -- Treat as array -- check keys are valid and it is not sparse - local n = 0 - for k in pairs(val) do - if type(k) ~= "number" then - error("invalid table: mixed or invalid key types") - end - n = n + 1 - end - if n ~= #val then - error("invalid table: sparse array") - end - -- Encode - for i, v in ipairs(val) do - table.insert(res, encode(v, stack)) - end - stack[val] = nil - return "[" .. table.concat(res, ",") .. "]" - - else - -- Treat as an object - for k, v in pairs(val) do - if type(k) ~= "string" then - error("invalid table: mixed or invalid key types") - end - table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) - end - stack[val] = nil - return "{" .. table.concat(res, ",") .. "}" + local res = {} + stack = stack or {} + + -- Circular reference? + if stack[val] then error("circular reference") end + + stack[val] = true + + if val[1] ~= nil or next(val) == nil then + -- Treat as array -- check keys are valid and it is not sparse + local n = 0 + for k in pairs(val) do + if type(k) ~= "number" then + error("invalid table: mixed or invalid key types") + end + n = n + 1 + end + if n ~= #val then + error("invalid table: sparse array") + end + -- Encode + for i, v in ipairs(val) do + table.insert(res, encode(v, stack)) end + stack[val] = nil + return "[" .. table.concat(res, ",") .. "]" + + else + -- Treat as an object + for k, v in pairs(val) do + if type(k) ~= "string" then + error("invalid table: mixed or invalid key types") + end + table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) + end + stack[val] = nil + return "{" .. table.concat(res, ",") .. "}" + end end local function encode_string(val) - return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' + return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' end local function encode_number(val) - -- Check for NaN, -inf and inf - if val ~= val or val <= -math.huge or val >= math.huge then - error("unexpected number value '" .. tostring(val) .. "'") - end - return string.format("%.14g", val) + -- Check for NaN, -inf and inf + if val ~= val or val <= -math.huge or val >= math.huge then + error("unexpected number value '" .. tostring(val) .. "'") + end + return string.format("%.14g", val) end local type_func_map = { - [ "nil" ] = encode_nil, - [ "table" ] = encode_table, - [ "string" ] = encode_string, - [ "number" ] = encode_number, - [ "boolean" ] = tostring, + [ "nil" ] = encode_nil, + [ "table" ] = encode_table, + [ "string" ] = encode_string, + [ "number" ] = encode_number, + [ "boolean" ] = tostring, } encode = function(val, stack) - local t = type(val) - local f = type_func_map[t] - if f then - return f(val, stack) - end - error("unexpected type '" .. t .. "'") + local t = type(val) + local f = type_func_map[t] + if f then + return f(val, stack) + end + error("unexpected type '" .. t .. "'") end function json.encode(val) - return ( encode(val) ) + return ( encode(val) ) end @@ -126,257 +126,257 @@ end local parse local function create_set(...) - local res = {} - for i = 1, select("#", ...) do - res[ select(i, ...) ] = true - end - return res + local res = {} + for i = 1, select("#", ...) do + res[ select(i, ...) ] = true + end + return res end -local space_chars = create_set(" ", "\t", "\r", "\n") -local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") -local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") -local literals = create_set("true", "false", "null") +local space_chars = create_set(" ", "\t", "\r", "\n") +local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") +local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") +local literals = create_set("true", "false", "null") local literal_map = { - [ "true" ] = true, - [ "false" ] = false, - [ "null" ] = nil, + [ "true" ] = true, + [ "false" ] = false, + [ "null" ] = nil, } local function next_char(str, idx, set, negate) - for i = idx, #str do - if set[str:sub(i, i)] ~= negate then - return i - end + for i = idx, #str do + if set[str:sub(i, i)] ~= negate then + return i end - return #str + 1 + end + return #str + 1 end local function decode_error(str, idx, msg) - local line_count = 1 - local col_count = 1 - for i = 1, idx - 1 do - col_count = col_count + 1 - if str:sub(i, i) == "\n" then - line_count = line_count + 1 - col_count = 1 - end + local line_count = 1 + local col_count = 1 + for i = 1, idx - 1 do + col_count = col_count + 1 + if str:sub(i, i) == "\n" then + line_count = line_count + 1 + col_count = 1 end - error( string.format("%s at line %d col %d", msg, line_count, col_count) ) + end + error( string.format("%s at line %d col %d", msg, line_count, col_count) ) end local function codepoint_to_utf8(n) - -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa - local f = math.floor - if n <= 0x7f then - return string.char(n) - elseif n <= 0x7ff then - return string.char(f(n / 64) + 192, n % 64 + 128) - elseif n <= 0xffff then - return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) - elseif n <= 0x10ffff then - return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, - f(n % 4096 / 64) + 128, n % 64 + 128) - end - error( string.format("invalid unicode codepoint '%x'", n) ) + -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa + local f = math.floor + if n <= 0x7f then + return string.char(n) + elseif n <= 0x7ff then + return string.char(f(n / 64) + 192, n % 64 + 128) + elseif n <= 0xffff then + return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) + elseif n <= 0x10ffff then + return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, + f(n % 4096 / 64) + 128, n % 64 + 128) + end + error( string.format("invalid unicode codepoint '%x'", n) ) end local function parse_unicode_escape(s) - local n1 = tonumber( s:sub(3, 6), 16 ) - local n2 = tonumber( s:sub(9, 12), 16 ) - -- Surrogate pair? - if n2 then - return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) - else - return codepoint_to_utf8(n1) - end + local n1 = tonumber( s:sub(3, 6), 16 ) + local n2 = tonumber( s:sub(9, 12), 16 ) + -- Surrogate pair? + if n2 then + return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) + else + return codepoint_to_utf8(n1) + end end local function parse_string(str, i) - local has_unicode_escape = false - local has_surrogate_escape = false - local has_escape = false - local last - for j = i + 1, #str do - local x = str:byte(j) - - if x < 32 then - decode_error(str, j, "control character in string") - end - - if last == 92 then -- "\\" (escape char) - if x == 117 then -- "u" (unicode escape sequence) - local hex = str:sub(j + 1, j + 5) - if not hex:find("%x%x%x%x") then - decode_error(str, j, "invalid unicode escape in string") - end - if hex:find("^[dD][89aAbB]") then - has_surrogate_escape = true - else - has_unicode_escape = true - end - else - local c = string.char(x) - if not escape_chars[c] then - decode_error(str, j, "invalid escape char '" .. c .. "' in string") - end - has_escape = true - end - last = nil - - elseif x == 34 then -- '"' (end of string) - local s = str:sub(i + 1, j - 1) - if has_surrogate_escape then - s = s:gsub("\\u[dD][89aAbB]..\\u....", parse_unicode_escape) - end - if has_unicode_escape then - s = s:gsub("\\u....", parse_unicode_escape) - end - if has_escape then - s = s:gsub("\\.", escape_char_map_inv) - end - return s, j + 1 + local has_unicode_escape = false + local has_surrogate_escape = false + local has_escape = false + local last + for j = i + 1, #str do + local x = str:byte(j) + + if x < 32 then + decode_error(str, j, "control character in string") + end + if last == 92 then -- "\\" (escape char) + if x == 117 then -- "u" (unicode escape sequence) + local hex = str:sub(j + 1, j + 5) + if not hex:find("%x%x%x%x") then + decode_error(str, j, "invalid unicode escape in string") + end + if hex:find("^[dD][89aAbB]") then + has_surrogate_escape = true else - last = x + has_unicode_escape = true + end + else + local c = string.char(x) + if not escape_chars[c] then + decode_error(str, j, "invalid escape char '" .. c .. "' in string") end + has_escape = true + end + last = nil + + elseif x == 34 then -- '"' (end of string) + local s = str:sub(i + 1, j - 1) + if has_surrogate_escape then + s = s:gsub("\\u[dD][89aAbB]..\\u....", parse_unicode_escape) + end + if has_unicode_escape then + s = s:gsub("\\u....", parse_unicode_escape) + end + if has_escape then + s = s:gsub("\\.", escape_char_map_inv) + end + return s, j + 1 + + else + last = x end - decode_error(str, i, "expected closing quote for string") + end + decode_error(str, i, "expected closing quote for string") end local function parse_number(str, i) - local x = next_char(str, i, delim_chars) - local s = str:sub(i, x - 1) - local n = tonumber(s) - if not n then - decode_error(str, i, "invalid number '" .. s .. "'") - end - return n, x + local x = next_char(str, i, delim_chars) + local s = str:sub(i, x - 1) + local n = tonumber(s) + if not n then + decode_error(str, i, "invalid number '" .. s .. "'") + end + return n, x end local function parse_literal(str, i) - local x = next_char(str, i, delim_chars) - local word = str:sub(i, x - 1) - if not literals[word] then - decode_error(str, i, "invalid literal '" .. word .. "'") - end - return literal_map[word], x + local x = next_char(str, i, delim_chars) + local word = str:sub(i, x - 1) + if not literals[word] then + decode_error(str, i, "invalid literal '" .. word .. "'") + end + return literal_map[word], x end local function parse_array(str, i) - local res = {} - local n = 1 - i = i + 1 - while 1 do - local x - i = next_char(str, i, space_chars, true) - -- Empty / end of array? - if str:sub(i, i) == "]" then - i = i + 1 - break - end - -- Read token - x, i = parse(str, i) - res[n] = x - n = n + 1 - -- Next token - i = next_char(str, i, space_chars, true) - local chr = str:sub(i, i) - i = i + 1 - if chr == "]" then break end - if chr ~= "," then decode_error(str, i, "expected ']' or ','") end + local res = {} + local n = 1 + i = i + 1 + while 1 do + local x + i = next_char(str, i, space_chars, true) + -- Empty / end of array? + if str:sub(i, i) == "]" then + i = i + 1 + break end - return res, i + -- Read token + x, i = parse(str, i) + res[n] = x + n = n + 1 + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "]" then break end + if chr ~= "," then decode_error(str, i, "expected ']' or ','") end + end + return res, i end local function parse_object(str, i) - local res = {} - i = i + 1 - while 1 do - local key, val - i = next_char(str, i, space_chars, true) - -- Empty / end of object? - if str:sub(i, i) == "}" then - i = i + 1 - break - end - -- Read key - if str:sub(i, i) ~= '"' then - decode_error(str, i, "expected string for key") - end - key, i = parse(str, i) - -- Read ':' delimiter - i = next_char(str, i, space_chars, true) - if str:sub(i, i) ~= ":" then - decode_error(str, i, "expected ':' after key") - end - i = next_char(str, i + 1, space_chars, true) - -- Read value - val, i = parse(str, i) - -- Set - res[key] = val - -- Next token - i = next_char(str, i, space_chars, true) - local chr = str:sub(i, i) - i = i + 1 - if chr == "}" then break end - if chr ~= "," then decode_error(str, i, "expected '}' or ','") end + local res = {} + i = i + 1 + while 1 do + local key, val + i = next_char(str, i, space_chars, true) + -- Empty / end of object? + if str:sub(i, i) == "}" then + i = i + 1 + break + end + -- Read key + if str:sub(i, i) ~= '"' then + decode_error(str, i, "expected string for key") + end + key, i = parse(str, i) + -- Read ':' delimiter + i = next_char(str, i, space_chars, true) + if str:sub(i, i) ~= ":" then + decode_error(str, i, "expected ':' after key") end - return res, i + i = next_char(str, i + 1, space_chars, true) + -- Read value + val, i = parse(str, i) + -- Set + res[key] = val + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "}" then break end + if chr ~= "," then decode_error(str, i, "expected '}' or ','") end + end + return res, i end local char_func_map = { - [ '"' ] = parse_string, - [ "0" ] = parse_number, - [ "1" ] = parse_number, - [ "2" ] = parse_number, - [ "3" ] = parse_number, - [ "4" ] = parse_number, - [ "5" ] = parse_number, - [ "6" ] = parse_number, - [ "7" ] = parse_number, - [ "8" ] = parse_number, - [ "9" ] = parse_number, - [ "-" ] = parse_number, - [ "t" ] = parse_literal, - [ "f" ] = parse_literal, - [ "n" ] = parse_literal, - [ "[" ] = parse_array, - [ "{" ] = parse_object, + [ '"' ] = parse_string, + [ "0" ] = parse_number, + [ "1" ] = parse_number, + [ "2" ] = parse_number, + [ "3" ] = parse_number, + [ "4" ] = parse_number, + [ "5" ] = parse_number, + [ "6" ] = parse_number, + [ "7" ] = parse_number, + [ "8" ] = parse_number, + [ "9" ] = parse_number, + [ "-" ] = parse_number, + [ "t" ] = parse_literal, + [ "f" ] = parse_literal, + [ "n" ] = parse_literal, + [ "[" ] = parse_array, + [ "{" ] = parse_object, } parse = function(str, idx) - local chr = str:sub(idx, idx) - local f = char_func_map[chr] - if f then - return f(str, idx) - end - decode_error(str, idx, "unexpected character '" .. chr .. "'") + local chr = str:sub(idx, idx) + local f = char_func_map[chr] + if f then + return f(str, idx) + end + decode_error(str, idx, "unexpected character '" .. chr .. "'") end function json.decode(str) - if type(str) ~= "string" then - error("expected argument of type string, got " .. type(str)) - end - local res, idx = parse(str, next_char(str, 1, space_chars, true)) - idx = next_char(str, idx, space_chars, true) - if idx <= #str then - decode_error(str, idx, "trailing garbage") - end - return res + if type(str) ~= "string" then + error("expected argument of type string, got " .. type(str)) + end + local res, idx = parse(str, next_char(str, 1, space_chars, true)) + idx = next_char(str, idx, space_chars, true) + if idx <= #str then + decode_error(str, idx, "trailing garbage") + end + return res end ------------------------------------------------------------------------------------------------------------------ diff --git a/src/libjin-lua/scripts/utils/json.lua.h b/src/libjin-lua/scripts/utils/json.lua.h index 128c88d..4b95a44 100644 --- a/src/libjin-lua/scripts/utils/json.lua.h +++ b/src/libjin-lua/scripts/utils/json.lua.h @@ -28,517 +28,469 @@ static char json_lua[] = { 45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,108,111,99, 97,108,32,101,110,99,111,100,101,13,10,13,10,108,111,99,97,108,32,101, 115,99,97,112,101,95,99,104,97,114,95,109,97,112,32,61,32,123,13,10, -32,32,32,32,91,32,34,92,92,34,32,93,32,61,32,34,92,92,92,92, -34,44,13,10,32,32,32,32,91,32,34,92,34,34,32,93,32,61,32,34, -92,92,92,34,34,44,13,10,32,32,32,32,91,32,34,92,98,34,32,93, -32,61,32,34,92,92,98,34,44,13,10,32,32,32,32,91,32,34,92,102, -34,32,93,32,61,32,34,92,92,102,34,44,13,10,32,32,32,32,91,32, -34,92,110,34,32,93,32,61,32,34,92,92,110,34,44,13,10,32,32,32, -32,91,32,34,92,114,34,32,93,32,61,32,34,92,92,114,34,44,13,10, -32,32,32,32,91,32,34,92,116,34,32,93,32,61,32,34,92,92,116,34, -44,13,10,125,13,10,13,10,108,111,99,97,108,32,101,115,99,97,112,101, -95,99,104,97,114,95,109,97,112,95,105,110,118,32,61,32,123,32,91,32, -34,92,92,47,34,32,93,32,61,32,34,47,34,32,125,13,10,102,111,114, -32,107,44,32,118,32,105,110,32,112,97,105,114,115,40,101,115,99,97,112, -101,95,99,104,97,114,95,109,97,112,41,32,100,111,13,10,32,32,32,32, -101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95,105,110,118,91, -118,93,32,61,32,107,13,10,101,110,100,13,10,13,10,13,10,108,111,99, -97,108,32,102,117,110,99,116,105,111,110,32,101,115,99,97,112,101,95,99, -104,97,114,40,99,41,13,10,32,32,32,32,114,101,116,117,114,110,32,101, -115,99,97,112,101,95,99,104,97,114,95,109,97,112,91,99,93,32,111,114, -32,115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,92,92,117,37, -48,52,120,34,44,32,99,58,98,121,116,101,40,41,41,13,10,101,110,100, -13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, -32,101,110,99,111,100,101,95,110,105,108,40,118,97,108,41,13,10,32,32, +32,32,91,32,34,92,92,34,32,93,32,61,32,34,92,92,92,92,34,44, +13,10,32,32,91,32,34,92,34,34,32,93,32,61,32,34,92,92,92,34, +34,44,13,10,32,32,91,32,34,92,98,34,32,93,32,61,32,34,92,92, +98,34,44,13,10,32,32,91,32,34,92,102,34,32,93,32,61,32,34,92, +92,102,34,44,13,10,32,32,91,32,34,92,110,34,32,93,32,61,32,34, +92,92,110,34,44,13,10,32,32,91,32,34,92,114,34,32,93,32,61,32, +34,92,92,114,34,44,13,10,32,32,91,32,34,92,116,34,32,93,32,61, +32,34,92,92,116,34,44,13,10,125,13,10,13,10,108,111,99,97,108,32, +101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95,105,110,118,32, +61,32,123,32,91,32,34,92,92,47,34,32,93,32,61,32,34,47,34,32, +125,13,10,102,111,114,32,107,44,32,118,32,105,110,32,112,97,105,114,115, +40,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,41,32,100,111, +13,10,32,32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95, +105,110,118,91,118,93,32,61,32,107,13,10,101,110,100,13,10,13,10,13, +10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,101,115,99,97, +112,101,95,99,104,97,114,40,99,41,13,10,32,32,114,101,116,117,114,110, +32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,91,99,93,32, +111,114,32,115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,92,92, +117,37,48,52,120,34,44,32,99,58,98,121,116,101,40,41,41,13,10,101, +110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105, +111,110,32,101,110,99,111,100,101,95,110,105,108,40,118,97,108,41,13,10, 32,32,114,101,116,117,114,110,32,34,110,117,108,108,34,13,10,101,110,100, 13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, 32,101,110,99,111,100,101,95,116,97,98,108,101,40,118,97,108,44,32,115, -116,97,99,107,41,13,10,32,32,32,32,108,111,99,97,108,32,114,101,115, -32,61,32,123,125,13,10,32,32,32,32,115,116,97,99,107,32,61,32,115, -116,97,99,107,32,111,114,32,123,125,13,10,13,10,32,32,32,32,45,45, -32,67,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,63, -13,10,32,32,32,32,105,102,32,115,116,97,99,107,91,118,97,108,93,32, -116,104,101,110,32,101,114,114,111,114,40,34,99,105,114,99,117,108,97,114, -32,114,101,102,101,114,101,110,99,101,34,41,32,101,110,100,13,10,13,10, -32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61,32,116,114,117, -101,13,10,13,10,32,32,32,32,105,102,32,118,97,108,91,49,93,32,126, -61,32,110,105,108,32,111,114,32,110,101,120,116,40,118,97,108,41,32,61, -61,32,110,105,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -45,45,32,84,114,101,97,116,32,97,115,32,97,114,114,97,121,32,45,45, -32,99,104,101,99,107,32,107,101,121,115,32,97,114,101,32,118,97,108,105, -100,32,97,110,100,32,105,116,32,105,115,32,110,111,116,32,115,112,97,114, -115,101,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,110,32, -61,32,48,13,10,32,32,32,32,32,32,32,32,102,111,114,32,107,32,105, -110,32,112,97,105,114,115,40,118,97,108,41,32,100,111,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,105,102,32,116,121,112,101,40,107,41,32, -126,61,32,34,110,117,109,98,101,114,34,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,114,114,111,114,40, -34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32,109,105,120,101, -100,32,111,114,32,105,110,118,97,108,105,100,32,107,101,121,32,116,121,112, -101,115,34,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110, -100,13,10,32,32,32,32,32,32,32,32,32,32,32,32,110,32,61,32,110, -32,43,32,49,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,105,102,32,110,32,126,61,32,35,118,97,108,32, -116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,114, -114,111,114,40,34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32, -115,112,97,114,115,101,32,97,114,114,97,121,34,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,45,45,32, -69,110,99,111,100,101,13,10,32,32,32,32,32,32,32,32,102,111,114,32, -105,44,32,118,32,105,110,32,105,112,97,105,114,115,40,118,97,108,41,32, -100,111,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,108, -101,46,105,110,115,101,114,116,40,114,101,115,44,32,101,110,99,111,100,101, -40,118,44,32,115,116,97,99,107,41,41,13,10,32,32,32,32,32,32,32, -32,101,110,100,13,10,32,32,32,32,32,32,32,32,115,116,97,99,107,91, -118,97,108,93,32,61,32,110,105,108,13,10,32,32,32,32,32,32,32,32, -114,101,116,117,114,110,32,34,91,34,32,46,46,32,116,97,98,108,101,46, -99,111,110,99,97,116,40,114,101,115,44,32,34,44,34,41,32,46,46,32, -34,93,34,13,10,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32, -32,32,32,32,32,45,45,32,84,114,101,97,116,32,97,115,32,97,110,32, -111,98,106,101,99,116,13,10,32,32,32,32,32,32,32,32,102,111,114,32, -107,44,32,118,32,105,110,32,112,97,105,114,115,40,118,97,108,41,32,100, -111,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,116,121, -112,101,40,107,41,32,126,61,32,34,115,116,114,105,110,103,34,32,116,104, -101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -101,114,114,111,114,40,34,105,110,118,97,108,105,100,32,116,97,98,108,101, -58,32,109,105,120,101,100,32,111,114,32,105,110,118,97,108,105,100,32,107, -101,121,32,116,121,112,101,115,34,41,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,116,97,98,108,101,46,105,110,115,101,114,116,40,114,101,115,44,32,101, -110,99,111,100,101,40,107,44,32,115,116,97,99,107,41,32,46,46,32,34, -58,34,32,46,46,32,101,110,99,111,100,101,40,118,44,32,115,116,97,99, -107,41,41,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32, -32,32,32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61,32,110, -105,108,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34, -123,34,32,46,46,32,116,97,98,108,101,46,99,111,110,99,97,116,40,114, -101,115,44,32,34,44,34,41,32,46,46,32,34,125,34,13,10,32,32,32, -32,101,110,100,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108, -32,102,117,110,99,116,105,111,110,32,101,110,99,111,100,101,95,115,116,114, -105,110,103,40,118,97,108,41,13,10,32,32,32,32,114,101,116,117,114,110, -32,39,34,39,32,46,46,32,118,97,108,58,103,115,117,98,40,39,91,37, -122,92,49,45,92,51,49,92,92,34,93,39,44,32,101,115,99,97,112,101, -95,99,104,97,114,41,32,46,46,32,39,34,39,13,10,101,110,100,13,10, -13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,101, -110,99,111,100,101,95,110,117,109,98,101,114,40,118,97,108,41,13,10,32, -32,32,32,45,45,32,67,104,101,99,107,32,102,111,114,32,78,97,78,44, -32,45,105,110,102,32,97,110,100,32,105,110,102,13,10,32,32,32,32,105, -102,32,118,97,108,32,126,61,32,118,97,108,32,111,114,32,118,97,108,32, -60,61,32,45,109,97,116,104,46,104,117,103,101,32,111,114,32,118,97,108, -32,62,61,32,109,97,116,104,46,104,117,103,101,32,116,104,101,110,13,10, -32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,117,110,101,120,112, -101,99,116,101,100,32,110,117,109,98,101,114,32,118,97,108,117,101,32,39, -34,32,46,46,32,116,111,115,116,114,105,110,103,40,118,97,108,41,32,46, -46,32,34,39,34,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32, -32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,102,111,114,109,97, -116,40,34,37,46,49,52,103,34,44,32,118,97,108,41,13,10,101,110,100, -13,10,13,10,13,10,108,111,99,97,108,32,116,121,112,101,95,102,117,110, -99,95,109,97,112,32,61,32,123,13,10,32,32,32,32,91,32,34,110,105, -108,34,32,32,32,32,32,32,32,32,32,93,32,61,32,101,110,99,111,100, -101,95,110,105,108,44,13,10,32,32,32,32,91,32,34,116,97,98,108,101, -34,32,32,32,32,32,93,32,61,32,101,110,99,111,100,101,95,116,97,98, -108,101,44,13,10,32,32,32,32,91,32,34,115,116,114,105,110,103,34,32, -32,32,32,93,32,61,32,101,110,99,111,100,101,95,115,116,114,105,110,103, -44,13,10,32,32,32,32,91,32,34,110,117,109,98,101,114,34,32,32,32, -32,93,32,61,32,101,110,99,111,100,101,95,110,117,109,98,101,114,44,13, -10,32,32,32,32,91,32,34,98,111,111,108,101,97,110,34,32,93,32,61, -32,116,111,115,116,114,105,110,103,44,13,10,125,13,10,13,10,13,10,101, -110,99,111,100,101,32,61,32,102,117,110,99,116,105,111,110,40,118,97,108, -44,32,115,116,97,99,107,41,13,10,32,32,32,32,108,111,99,97,108,32, -116,32,61,32,116,121,112,101,40,118,97,108,41,13,10,32,32,32,32,108, -111,99,97,108,32,102,32,61,32,116,121,112,101,95,102,117,110,99,95,109, -97,112,91,116,93,13,10,32,32,32,32,105,102,32,102,32,116,104,101,110, -13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,40,118, -97,108,44,32,115,116,97,99,107,41,13,10,32,32,32,32,101,110,100,13, -10,32,32,32,32,101,114,114,111,114,40,34,117,110,101,120,112,101,99,116, -101,100,32,116,121,112,101,32,39,34,32,46,46,32,116,32,46,46,32,34, -39,34,41,13,10,101,110,100,13,10,13,10,13,10,102,117,110,99,116,105, -111,110,32,106,115,111,110,46,101,110,99,111,100,101,40,118,97,108,41,13, -10,32,32,32,32,114,101,116,117,114,110,32,40,32,101,110,99,111,100,101, -40,118,97,108,41,32,41,13,10,101,110,100,13,10,13,10,13,10,45,45, +116,97,99,107,41,13,10,32,32,108,111,99,97,108,32,114,101,115,32,61, +32,123,125,13,10,32,32,115,116,97,99,107,32,61,32,115,116,97,99,107, +32,111,114,32,123,125,13,10,13,10,32,32,45,45,32,67,105,114,99,117, +108,97,114,32,114,101,102,101,114,101,110,99,101,63,13,10,32,32,105,102, +32,115,116,97,99,107,91,118,97,108,93,32,116,104,101,110,32,101,114,114, +111,114,40,34,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110, +99,101,34,41,32,101,110,100,13,10,13,10,32,32,115,116,97,99,107,91, +118,97,108,93,32,61,32,116,114,117,101,13,10,13,10,32,32,105,102,32, +118,97,108,91,49,93,32,126,61,32,110,105,108,32,111,114,32,110,101,120, +116,40,118,97,108,41,32,61,61,32,110,105,108,32,116,104,101,110,13,10, +32,32,32,32,45,45,32,84,114,101,97,116,32,97,115,32,97,114,114,97, +121,32,45,45,32,99,104,101,99,107,32,107,101,121,115,32,97,114,101,32, +118,97,108,105,100,32,97,110,100,32,105,116,32,105,115,32,110,111,116,32, +115,112,97,114,115,101,13,10,32,32,32,32,108,111,99,97,108,32,110,32, +61,32,48,13,10,32,32,32,32,102,111,114,32,107,32,105,110,32,112,97, +105,114,115,40,118,97,108,41,32,100,111,13,10,32,32,32,32,32,32,105, +102,32,116,121,112,101,40,107,41,32,126,61,32,34,110,117,109,98,101,114, +34,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,101,114,114,111, +114,40,34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32,109,105, +120,101,100,32,111,114,32,105,110,118,97,108,105,100,32,107,101,121,32,116, +121,112,101,115,34,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32, +32,32,32,32,32,110,32,61,32,110,32,43,32,49,13,10,32,32,32,32, +101,110,100,13,10,32,32,32,32,105,102,32,110,32,126,61,32,35,118,97, +108,32,116,104,101,110,13,10,32,32,32,32,32,32,101,114,114,111,114,40, +34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32,115,112,97,114, +115,101,32,97,114,114,97,121,34,41,13,10,32,32,32,32,101,110,100,13, +10,32,32,32,32,45,45,32,69,110,99,111,100,101,13,10,32,32,32,32, +102,111,114,32,105,44,32,118,32,105,110,32,105,112,97,105,114,115,40,118, +97,108,41,32,100,111,13,10,32,32,32,32,32,32,116,97,98,108,101,46, +105,110,115,101,114,116,40,114,101,115,44,32,101,110,99,111,100,101,40,118, +44,32,115,116,97,99,107,41,41,13,10,32,32,32,32,101,110,100,13,10, +32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61,32,110,105,108, +13,10,32,32,32,32,114,101,116,117,114,110,32,34,91,34,32,46,46,32, +116,97,98,108,101,46,99,111,110,99,97,116,40,114,101,115,44,32,34,44, +34,41,32,46,46,32,34,93,34,13,10,13,10,32,32,101,108,115,101,13, +10,32,32,32,32,45,45,32,84,114,101,97,116,32,97,115,32,97,110,32, +111,98,106,101,99,116,13,10,32,32,32,32,102,111,114,32,107,44,32,118, +32,105,110,32,112,97,105,114,115,40,118,97,108,41,32,100,111,13,10,32, +32,32,32,32,32,105,102,32,116,121,112,101,40,107,41,32,126,61,32,34, +115,116,114,105,110,103,34,32,116,104,101,110,13,10,32,32,32,32,32,32, +32,32,101,114,114,111,114,40,34,105,110,118,97,108,105,100,32,116,97,98, +108,101,58,32,109,105,120,101,100,32,111,114,32,105,110,118,97,108,105,100, +32,107,101,121,32,116,121,112,101,115,34,41,13,10,32,32,32,32,32,32, +101,110,100,13,10,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115, +101,114,116,40,114,101,115,44,32,101,110,99,111,100,101,40,107,44,32,115, +116,97,99,107,41,32,46,46,32,34,58,34,32,46,46,32,101,110,99,111, +100,101,40,118,44,32,115,116,97,99,107,41,41,13,10,32,32,32,32,101, +110,100,13,10,32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61, +32,110,105,108,13,10,32,32,32,32,114,101,116,117,114,110,32,34,123,34, +32,46,46,32,116,97,98,108,101,46,99,111,110,99,97,116,40,114,101,115, +44,32,34,44,34,41,32,46,46,32,34,125,34,13,10,32,32,101,110,100, +13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110, +99,116,105,111,110,32,101,110,99,111,100,101,95,115,116,114,105,110,103,40, +118,97,108,41,13,10,32,32,114,101,116,117,114,110,32,39,34,39,32,46, +46,32,118,97,108,58,103,115,117,98,40,39,91,37,122,92,49,45,92,51, +49,92,92,34,93,39,44,32,101,115,99,97,112,101,95,99,104,97,114,41, +32,46,46,32,39,34,39,13,10,101,110,100,13,10,13,10,13,10,108,111, +99,97,108,32,102,117,110,99,116,105,111,110,32,101,110,99,111,100,101,95, +110,117,109,98,101,114,40,118,97,108,41,13,10,32,32,45,45,32,67,104, +101,99,107,32,102,111,114,32,78,97,78,44,32,45,105,110,102,32,97,110, +100,32,105,110,102,13,10,32,32,105,102,32,118,97,108,32,126,61,32,118, +97,108,32,111,114,32,118,97,108,32,60,61,32,45,109,97,116,104,46,104, +117,103,101,32,111,114,32,118,97,108,32,62,61,32,109,97,116,104,46,104, +117,103,101,32,116,104,101,110,13,10,32,32,32,32,101,114,114,111,114,40, +34,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,118, +97,108,117,101,32,39,34,32,46,46,32,116,111,115,116,114,105,110,103,40, +118,97,108,41,32,46,46,32,34,39,34,41,13,10,32,32,101,110,100,13, +10,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,102,111,114, +109,97,116,40,34,37,46,49,52,103,34,44,32,118,97,108,41,13,10,101, +110,100,13,10,13,10,13,10,108,111,99,97,108,32,116,121,112,101,95,102, +117,110,99,95,109,97,112,32,61,32,123,13,10,32,32,91,32,34,110,105, +108,34,32,32,32,32,32,93,32,61,32,101,110,99,111,100,101,95,110,105, +108,44,13,10,32,32,91,32,34,116,97,98,108,101,34,32,32,32,93,32, +61,32,101,110,99,111,100,101,95,116,97,98,108,101,44,13,10,32,32,91, +32,34,115,116,114,105,110,103,34,32,32,93,32,61,32,101,110,99,111,100, +101,95,115,116,114,105,110,103,44,13,10,32,32,91,32,34,110,117,109,98, +101,114,34,32,32,93,32,61,32,101,110,99,111,100,101,95,110,117,109,98, +101,114,44,13,10,32,32,91,32,34,98,111,111,108,101,97,110,34,32,93, +32,61,32,116,111,115,116,114,105,110,103,44,13,10,125,13,10,13,10,13, +10,101,110,99,111,100,101,32,61,32,102,117,110,99,116,105,111,110,40,118, +97,108,44,32,115,116,97,99,107,41,13,10,32,32,108,111,99,97,108,32, +116,32,61,32,116,121,112,101,40,118,97,108,41,13,10,32,32,108,111,99, +97,108,32,102,32,61,32,116,121,112,101,95,102,117,110,99,95,109,97,112, +91,116,93,13,10,32,32,105,102,32,102,32,116,104,101,110,13,10,32,32, +32,32,114,101,116,117,114,110,32,102,40,118,97,108,44,32,115,116,97,99, +107,41,13,10,32,32,101,110,100,13,10,32,32,101,114,114,111,114,40,34, +117,110,101,120,112,101,99,116,101,100,32,116,121,112,101,32,39,34,32,46, +46,32,116,32,46,46,32,34,39,34,41,13,10,101,110,100,13,10,13,10, +13,10,102,117,110,99,116,105,111,110,32,106,115,111,110,46,101,110,99,111, +100,101,40,118,97,108,41,13,10,32,32,114,101,116,117,114,110,32,40,32, +101,110,99,111,100,101,40,118,97,108,41,32,41,13,10,101,110,100,13,10, +13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45, -45,32,68,101,99,111,100,101,13,10,45,45,45,45,45,45,45,45,45,45, +45,45,45,13,10,45,45,32,68,101,99,111,100,101,13,10,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,13,10,13,10,108,111,99,97,108,32,112, -97,114,115,101,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105, -111,110,32,99,114,101,97,116,101,95,115,101,116,40,46,46,46,41,13,10, -32,32,32,32,108,111,99,97,108,32,114,101,115,32,61,32,123,125,13,10, -32,32,32,32,102,111,114,32,105,32,61,32,49,44,32,115,101,108,101,99, -116,40,34,35,34,44,32,46,46,46,41,32,100,111,13,10,32,32,32,32, -32,32,32,32,114,101,115,91,32,115,101,108,101,99,116,40,105,44,32,46, -46,46,41,32,93,32,61,32,116,114,117,101,13,10,32,32,32,32,101,110, -100,13,10,32,32,32,32,114,101,116,117,114,110,32,114,101,115,13,10,101, -110,100,13,10,13,10,108,111,99,97,108,32,115,112,97,99,101,95,99,104, -97,114,115,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101,116, -40,34,32,34,44,32,34,92,116,34,44,32,34,92,114,34,44,32,34,92, -110,34,41,13,10,108,111,99,97,108,32,100,101,108,105,109,95,99,104,97, -114,115,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101,116,40, -34,32,34,44,32,34,92,116,34,44,32,34,92,114,34,44,32,34,92,110, -34,44,32,34,93,34,44,32,34,125,34,44,32,34,44,34,41,13,10,108, -111,99,97,108,32,101,115,99,97,112,101,95,99,104,97,114,115,32,32,32, -32,61,32,99,114,101,97,116,101,95,115,101,116,40,34,92,92,34,44,32, -34,47,34,44,32,39,34,39,44,32,34,98,34,44,32,34,102,34,44,32, -34,110,34,44,32,34,114,34,44,32,34,116,34,44,32,34,117,34,41,13, -10,108,111,99,97,108,32,108,105,116,101,114,97,108,115,32,32,32,32,32, -32,32,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101,116,40, -34,116,114,117,101,34,44,32,34,102,97,108,115,101,34,44,32,34,110,117, -108,108,34,41,13,10,13,10,108,111,99,97,108,32,108,105,116,101,114,97, -108,95,109,97,112,32,61,32,123,13,10,32,32,32,32,91,32,34,116,114, -117,101,34,32,32,32,32,93,32,61,32,116,114,117,101,44,13,10,32,32, -32,32,91,32,34,102,97,108,115,101,34,32,93,32,61,32,102,97,108,115, -101,44,13,10,32,32,32,32,91,32,34,110,117,108,108,34,32,32,32,32, -93,32,61,32,110,105,108,44,13,10,125,13,10,13,10,13,10,108,111,99, -97,108,32,102,117,110,99,116,105,111,110,32,110,101,120,116,95,99,104,97, -114,40,115,116,114,44,32,105,100,120,44,32,115,101,116,44,32,110,101,103, -97,116,101,41,13,10,32,32,32,32,102,111,114,32,105,32,61,32,105,100, -120,44,32,35,115,116,114,32,100,111,13,10,32,32,32,32,32,32,32,32, -105,102,32,115,101,116,91,115,116,114,58,115,117,98,40,105,44,32,105,41, -93,32,126,61,32,110,101,103,97,116,101,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,105,13,10, -32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100, -13,10,32,32,32,32,114,101,116,117,114,110,32,35,115,116,114,32,43,32, -49,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117, -110,99,116,105,111,110,32,100,101,99,111,100,101,95,101,114,114,111,114,40, -115,116,114,44,32,105,100,120,44,32,109,115,103,41,13,10,32,32,32,32, -108,111,99,97,108,32,108,105,110,101,95,99,111,117,110,116,32,61,32,49, -13,10,32,32,32,32,108,111,99,97,108,32,99,111,108,95,99,111,117,110, -116,32,61,32,49,13,10,32,32,32,32,102,111,114,32,105,32,61,32,49, -44,32,105,100,120,32,45,32,49,32,100,111,13,10,32,32,32,32,32,32, -32,32,99,111,108,95,99,111,117,110,116,32,61,32,99,111,108,95,99,111, -117,110,116,32,43,32,49,13,10,32,32,32,32,32,32,32,32,105,102,32, -115,116,114,58,115,117,98,40,105,44,32,105,41,32,61,61,32,34,92,110, -34,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -108,105,110,101,95,99,111,117,110,116,32,61,32,108,105,110,101,95,99,111, -117,110,116,32,43,32,49,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,99,111,108,95,99,111,117,110,116,32,61,32,49,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100,13,10,32,32, -32,32,101,114,114,111,114,40,32,115,116,114,105,110,103,46,102,111,114,109, -97,116,40,34,37,115,32,97,116,32,108,105,110,101,32,37,100,32,99,111, -108,32,37,100,34,44,32,109,115,103,44,32,108,105,110,101,95,99,111,117, -110,116,44,32,99,111,108,95,99,111,117,110,116,41,32,41,13,10,101,110, -100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111, -110,32,99,111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40, -110,41,13,10,32,32,32,32,45,45,32,104,116,116,112,58,47,47,115,99, -114,105,112,116,115,46,115,105,108,46,111,114,103,47,99,109,115,47,115,99, -114,105,112,116,115,47,112,97,103,101,46,112,104,112,63,115,105,116,101,95, -105,100,61,110,114,115,105,38,105,100,61,105,119,115,45,97,112,112,101,110, -100,105,120,97,13,10,32,32,32,32,108,111,99,97,108,32,102,32,61,32, -109,97,116,104,46,102,108,111,111,114,13,10,32,32,32,32,105,102,32,110, -32,60,61,32,48,120,55,102,32,116,104,101,110,13,10,32,32,32,32,32, -32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97, -114,40,110,41,13,10,32,32,32,32,101,108,115,101,105,102,32,110,32,60, -61,32,48,120,55,102,102,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114, -40,102,40,110,32,47,32,54,52,41,32,43,32,49,57,50,44,32,110,32, -37,32,54,52,32,43,32,49,50,56,41,13,10,32,32,32,32,101,108,115, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,108, +111,99,97,108,32,112,97,114,115,101,13,10,13,10,108,111,99,97,108,32, +102,117,110,99,116,105,111,110,32,99,114,101,97,116,101,95,115,101,116,40, +46,46,46,41,13,10,32,32,108,111,99,97,108,32,114,101,115,32,61,32, +123,125,13,10,32,32,102,111,114,32,105,32,61,32,49,44,32,115,101,108, +101,99,116,40,34,35,34,44,32,46,46,46,41,32,100,111,13,10,32,32, +32,32,114,101,115,91,32,115,101,108,101,99,116,40,105,44,32,46,46,46, +41,32,93,32,61,32,116,114,117,101,13,10,32,32,101,110,100,13,10,32, +32,114,101,116,117,114,110,32,114,101,115,13,10,101,110,100,13,10,13,10, +108,111,99,97,108,32,115,112,97,99,101,95,99,104,97,114,115,32,32,32, +61,32,99,114,101,97,116,101,95,115,101,116,40,34,32,34,44,32,34,92, +116,34,44,32,34,92,114,34,44,32,34,92,110,34,41,13,10,108,111,99, +97,108,32,100,101,108,105,109,95,99,104,97,114,115,32,32,32,61,32,99, +114,101,97,116,101,95,115,101,116,40,34,32,34,44,32,34,92,116,34,44, +32,34,92,114,34,44,32,34,92,110,34,44,32,34,93,34,44,32,34,125, +34,44,32,34,44,34,41,13,10,108,111,99,97,108,32,101,115,99,97,112, +101,95,99,104,97,114,115,32,32,61,32,99,114,101,97,116,101,95,115,101, +116,40,34,92,92,34,44,32,34,47,34,44,32,39,34,39,44,32,34,98, +34,44,32,34,102,34,44,32,34,110,34,44,32,34,114,34,44,32,34,116, +34,44,32,34,117,34,41,13,10,108,111,99,97,108,32,108,105,116,101,114, +97,108,115,32,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101, +116,40,34,116,114,117,101,34,44,32,34,102,97,108,115,101,34,44,32,34, +110,117,108,108,34,41,13,10,13,10,108,111,99,97,108,32,108,105,116,101, +114,97,108,95,109,97,112,32,61,32,123,13,10,32,32,91,32,34,116,114, +117,101,34,32,32,93,32,61,32,116,114,117,101,44,13,10,32,32,91,32, +34,102,97,108,115,101,34,32,93,32,61,32,102,97,108,115,101,44,13,10, +32,32,91,32,34,110,117,108,108,34,32,32,93,32,61,32,110,105,108,44, +13,10,125,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116, +105,111,110,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105, +100,120,44,32,115,101,116,44,32,110,101,103,97,116,101,41,13,10,32,32, +102,111,114,32,105,32,61,32,105,100,120,44,32,35,115,116,114,32,100,111, +13,10,32,32,32,32,105,102,32,115,101,116,91,115,116,114,58,115,117,98, +40,105,44,32,105,41,93,32,126,61,32,110,101,103,97,116,101,32,116,104, +101,110,13,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,13,10, +32,32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,32,32,114,101, +116,117,114,110,32,35,115,116,114,32,43,32,49,13,10,101,110,100,13,10, +13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,100, +101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105,100,120, +44,32,109,115,103,41,13,10,32,32,108,111,99,97,108,32,108,105,110,101, +95,99,111,117,110,116,32,61,32,49,13,10,32,32,108,111,99,97,108,32, +99,111,108,95,99,111,117,110,116,32,61,32,49,13,10,32,32,102,111,114, +32,105,32,61,32,49,44,32,105,100,120,32,45,32,49,32,100,111,13,10, +32,32,32,32,99,111,108,95,99,111,117,110,116,32,61,32,99,111,108,95, +99,111,117,110,116,32,43,32,49,13,10,32,32,32,32,105,102,32,115,116, +114,58,115,117,98,40,105,44,32,105,41,32,61,61,32,34,92,110,34,32, +116,104,101,110,13,10,32,32,32,32,32,32,108,105,110,101,95,99,111,117, +110,116,32,61,32,108,105,110,101,95,99,111,117,110,116,32,43,32,49,13, +10,32,32,32,32,32,32,99,111,108,95,99,111,117,110,116,32,61,32,49, +13,10,32,32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,32,32, +101,114,114,111,114,40,32,115,116,114,105,110,103,46,102,111,114,109,97,116, +40,34,37,115,32,97,116,32,108,105,110,101,32,37,100,32,99,111,108,32, +37,100,34,44,32,109,115,103,44,32,108,105,110,101,95,99,111,117,110,116, +44,32,99,111,108,95,99,111,117,110,116,41,32,41,13,10,101,110,100,13, +10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, +99,111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40,110,41, +13,10,32,32,45,45,32,104,116,116,112,58,47,47,115,99,114,105,112,116, +115,46,115,105,108,46,111,114,103,47,99,109,115,47,115,99,114,105,112,116, +115,47,112,97,103,101,46,112,104,112,63,115,105,116,101,95,105,100,61,110, +114,115,105,38,105,100,61,105,119,115,45,97,112,112,101,110,100,105,120,97, +13,10,32,32,108,111,99,97,108,32,102,32,61,32,109,97,116,104,46,102, +108,111,111,114,13,10,32,32,105,102,32,110,32,60,61,32,48,120,55,102, +32,116,104,101,110,13,10,32,32,32,32,114,101,116,117,114,110,32,115,116, +114,105,110,103,46,99,104,97,114,40,110,41,13,10,32,32,101,108,115,101, +105,102,32,110,32,60,61,32,48,120,55,102,102,32,116,104,101,110,13,10, +32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104, +97,114,40,102,40,110,32,47,32,54,52,41,32,43,32,49,57,50,44,32, +110,32,37,32,54,52,32,43,32,49,50,56,41,13,10,32,32,101,108,115, 101,105,102,32,110,32,60,61,32,48,120,102,102,102,102,32,116,104,101,110, -13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114, -105,110,103,46,99,104,97,114,40,102,40,110,32,47,32,52,48,57,54,41, -32,43,32,50,50,52,44,32,102,40,110,32,37,32,52,48,57,54,32,47, +13,10,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46, +99,104,97,114,40,102,40,110,32,47,32,52,48,57,54,41,32,43,32,50, +50,52,44,32,102,40,110,32,37,32,52,48,57,54,32,47,32,54,52,41, +32,43,32,49,50,56,44,32,110,32,37,32,54,52,32,43,32,49,50,56, +41,13,10,32,32,101,108,115,101,105,102,32,110,32,60,61,32,48,120,49, +48,102,102,102,102,32,116,104,101,110,13,10,32,32,32,32,114,101,116,117, +114,110,32,115,116,114,105,110,103,46,99,104,97,114,40,102,40,110,32,47, +32,50,54,50,49,52,52,41,32,43,32,50,52,48,44,32,102,40,110,32, +37,32,50,54,50,49,52,52,32,47,32,52,48,57,54,41,32,43,32,49, +50,56,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,102,40,110,32,37,32,52,48,57,54,32,47, 32,54,52,41,32,43,32,49,50,56,44,32,110,32,37,32,54,52,32,43, -32,49,50,56,41,13,10,32,32,32,32,101,108,115,101,105,102,32,110,32, -60,61,32,48,120,49,48,102,102,102,102,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46, -99,104,97,114,40,102,40,110,32,47,32,50,54,50,49,52,52,41,32,43, -32,50,52,48,44,32,102,40,110,32,37,32,50,54,50,49,52,52,32,47, -32,52,48,57,54,41,32,43,32,49,50,56,44,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -102,40,110,32,37,32,52,48,57,54,32,47,32,54,52,41,32,43,32,49, -50,56,44,32,110,32,37,32,54,52,32,43,32,49,50,56,41,13,10,32, -32,32,32,101,110,100,13,10,32,32,32,32,101,114,114,111,114,40,32,115, -116,114,105,110,103,46,102,111,114,109,97,116,40,34,105,110,118,97,108,105, -100,32,117,110,105,99,111,100,101,32,99,111,100,101,112,111,105,110,116,32, -39,37,120,39,34,44,32,110,41,32,41,13,10,101,110,100,13,10,13,10, -13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114, -115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,40,115,41, -13,10,32,32,32,32,108,111,99,97,108,32,110,49,32,61,32,116,111,110, -117,109,98,101,114,40,32,115,58,115,117,98,40,51,44,32,54,41,44,32, -32,32,32,49,54,32,41,13,10,32,32,32,32,108,111,99,97,108,32,110, -50,32,61,32,116,111,110,117,109,98,101,114,40,32,115,58,115,117,98,40, -57,44,32,49,50,41,44,32,49,54,32,41,13,10,32,32,32,32,45,45, -32,83,117,114,114,111,103,97,116,101,32,112,97,105,114,63,13,10,32,32, -32,32,105,102,32,110,50,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,114,101,116,117,114,110,32,99,111,100,101,112,111,105,110,116,95,116, -111,95,117,116,102,56,40,40,110,49,32,45,32,48,120,100,56,48,48,41, -32,42,32,48,120,52,48,48,32,43,32,40,110,50,32,45,32,48,120,100, -99,48,48,41,32,43,32,48,120,49,48,48,48,48,41,13,10,32,32,32, -32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114, -110,32,99,111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40, -110,49,41,13,10,32,32,32,32,101,110,100,13,10,101,110,100,13,10,13, -10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97, -114,115,101,95,115,116,114,105,110,103,40,115,116,114,44,32,105,41,13,10, -32,32,32,32,108,111,99,97,108,32,104,97,115,95,117,110,105,99,111,100, -101,95,101,115,99,97,112,101,32,61,32,102,97,108,115,101,13,10,32,32, -32,32,108,111,99,97,108,32,104,97,115,95,115,117,114,114,111,103,97,116, +32,49,50,56,41,13,10,32,32,101,110,100,13,10,32,32,101,114,114,111, +114,40,32,115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,105,110, +118,97,108,105,100,32,117,110,105,99,111,100,101,32,99,111,100,101,112,111, +105,110,116,32,39,37,120,39,34,44,32,110,41,32,41,13,10,101,110,100, +13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, +32,112,97,114,115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112, +101,40,115,41,13,10,32,32,108,111,99,97,108,32,110,49,32,61,32,116, +111,110,117,109,98,101,114,40,32,115,58,115,117,98,40,51,44,32,54,41, +44,32,32,49,54,32,41,13,10,32,32,108,111,99,97,108,32,110,50,32, +61,32,116,111,110,117,109,98,101,114,40,32,115,58,115,117,98,40,57,44, +32,49,50,41,44,32,49,54,32,41,13,10,32,32,45,45,32,83,117,114, +114,111,103,97,116,101,32,112,97,105,114,63,13,10,32,32,105,102,32,110, +50,32,116,104,101,110,13,10,32,32,32,32,114,101,116,117,114,110,32,99, +111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40,40,110,49, +32,45,32,48,120,100,56,48,48,41,32,42,32,48,120,52,48,48,32,43, +32,40,110,50,32,45,32,48,120,100,99,48,48,41,32,43,32,48,120,49, +48,48,48,48,41,13,10,32,32,101,108,115,101,13,10,32,32,32,32,114, +101,116,117,114,110,32,99,111,100,101,112,111,105,110,116,95,116,111,95,117, +116,102,56,40,110,49,41,13,10,32,32,101,110,100,13,10,101,110,100,13, +10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, +112,97,114,115,101,95,115,116,114,105,110,103,40,115,116,114,44,32,105,41, +13,10,32,32,108,111,99,97,108,32,104,97,115,95,117,110,105,99,111,100, 101,95,101,115,99,97,112,101,32,61,32,102,97,108,115,101,13,10,32,32, -32,32,108,111,99,97,108,32,104,97,115,95,101,115,99,97,112,101,32,61, -32,102,97,108,115,101,13,10,32,32,32,32,108,111,99,97,108,32,108,97, -115,116,13,10,32,32,32,32,102,111,114,32,106,32,61,32,105,32,43,32, -49,44,32,35,115,116,114,32,100,111,13,10,32,32,32,32,32,32,32,32, -108,111,99,97,108,32,120,32,61,32,115,116,114,58,98,121,116,101,40,106, -41,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,120,32,60,32, -51,50,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32, +108,111,99,97,108,32,104,97,115,95,115,117,114,114,111,103,97,116,101,95, +101,115,99,97,112,101,32,61,32,102,97,108,115,101,13,10,32,32,108,111, +99,97,108,32,104,97,115,95,101,115,99,97,112,101,32,61,32,102,97,108, +115,101,13,10,32,32,108,111,99,97,108,32,108,97,115,116,13,10,32,32, +102,111,114,32,106,32,61,32,105,32,43,32,49,44,32,35,115,116,114,32, +100,111,13,10,32,32,32,32,108,111,99,97,108,32,120,32,61,32,115,116, +114,58,98,121,116,101,40,106,41,13,10,13,10,32,32,32,32,105,102,32, +120,32,60,32,51,50,32,116,104,101,110,13,10,32,32,32,32,32,32,100, +101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,106,44,32, +34,99,111,110,116,114,111,108,32,99,104,97,114,97,99,116,101,114,32,105, +110,32,115,116,114,105,110,103,34,41,13,10,32,32,32,32,101,110,100,13, +10,13,10,32,32,32,32,105,102,32,108,97,115,116,32,61,61,32,57,50, +32,116,104,101,110,32,45,45,32,34,92,92,34,32,40,101,115,99,97,112, +101,32,99,104,97,114,41,13,10,32,32,32,32,32,32,105,102,32,120,32, +61,61,32,49,49,55,32,116,104,101,110,32,45,45,32,34,117,34,32,40, +117,110,105,99,111,100,101,32,101,115,99,97,112,101,32,115,101,113,117,101, +110,99,101,41,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32, +104,101,120,32,61,32,115,116,114,58,115,117,98,40,106,32,43,32,49,44, +32,106,32,43,32,53,41,13,10,32,32,32,32,32,32,32,32,105,102,32, +110,111,116,32,104,101,120,58,102,105,110,100,40,34,37,120,37,120,37,120, +37,120,34,41,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32, 32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,106, -44,32,34,99,111,110,116,114,111,108,32,99,104,97,114,97,99,116,101,114, -32,105,110,32,115,116,114,105,110,103,34,41,13,10,32,32,32,32,32,32, -32,32,101,110,100,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32, -108,97,115,116,32,61,61,32,57,50,32,116,104,101,110,32,45,45,32,34, -92,92,34,32,40,101,115,99,97,112,101,32,99,104,97,114,41,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,105,102,32,120,32,61,61,32,49, -49,55,32,116,104,101,110,32,45,45,32,34,117,34,32,40,117,110,105,99, -111,100,101,32,101,115,99,97,112,101,32,115,101,113,117,101,110,99,101,41, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,111, -99,97,108,32,104,101,120,32,61,32,115,116,114,58,115,117,98,40,106,32, -43,32,49,44,32,106,32,43,32,53,41,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,104,101,120,58, -102,105,110,100,40,34,37,120,37,120,37,120,37,120,34,41,32,116,104,101, -110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44, -32,106,44,32,34,105,110,118,97,108,105,100,32,117,110,105,99,111,100,101, -32,101,115,99,97,112,101,32,105,110,32,115,116,114,105,110,103,34,41,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102, -32,104,101,120,58,102,105,110,100,40,34,94,91,100,68,93,91,56,57,97, -65,98,66,93,34,41,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,104,97,115,95,115,117,114, -114,111,103,97,116,101,95,101,115,99,97,112,101,32,61,32,116,114,117,101, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108, -115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,104,97,115,95,117,110,105,99,111,100,101,95,101,115,99,97, -112,101,32,61,32,116,114,117,101,13,10,32,32,32,32,32,32,32,32,32, +44,32,34,105,110,118,97,108,105,100,32,117,110,105,99,111,100,101,32,101, +115,99,97,112,101,32,105,110,32,115,116,114,105,110,103,34,41,13,10,32, 32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,108,111,99,97,108,32,99,32,61,32,115,116,114,105, -110,103,46,99,104,97,114,40,120,41,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,101,115,99,97,112, -101,95,99,104,97,114,115,91,99,93,32,116,104,101,110,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101,99, -111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,106,44,32,34,105, -110,118,97,108,105,100,32,101,115,99,97,112,101,32,99,104,97,114,32,39, -34,32,46,46,32,99,32,46,46,32,34,39,32,105,110,32,115,116,114,105, -110,103,34,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,104,97,115,95,101,115,99,97,112,101,32,61,32,116,114,117,101, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,108,97,115,116,32,61,32,110,105, -108,13,10,13,10,32,32,32,32,32,32,32,32,101,108,115,101,105,102,32, -120,32,61,61,32,51,52,32,116,104,101,110,32,45,45,32,39,34,39,32, -40,101,110,100,32,111,102,32,115,116,114,105,110,103,41,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,108,111,99,97,108,32,115,32,61,32,115, -116,114,58,115,117,98,40,105,32,43,32,49,44,32,106,32,45,32,49,41, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,104,97,115, -95,115,117,114,114,111,103,97,116,101,95,101,115,99,97,112,101,32,116,104, -101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -115,32,61,32,115,58,103,115,117,98,40,34,92,92,117,91,100,68,93,91, -56,57,97,65,98,66,93,46,46,92,92,117,46,46,46,46,34,44,32,112, +105,102,32,104,101,120,58,102,105,110,100,40,34,94,91,100,68,93,91,56, +57,97,65,98,66,93,34,41,32,116,104,101,110,13,10,32,32,32,32,32, +32,32,32,32,32,104,97,115,95,115,117,114,114,111,103,97,116,101,95,101, +115,99,97,112,101,32,61,32,116,114,117,101,13,10,32,32,32,32,32,32, +32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,104,97, +115,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,32,61,32,116, +114,117,101,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32, +32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,108,111, +99,97,108,32,99,32,61,32,115,116,114,105,110,103,46,99,104,97,114,40, +120,41,13,10,32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,101, +115,99,97,112,101,95,99,104,97,114,115,91,99,93,32,116,104,101,110,13, +10,32,32,32,32,32,32,32,32,32,32,100,101,99,111,100,101,95,101,114, +114,111,114,40,115,116,114,44,32,106,44,32,34,105,110,118,97,108,105,100, +32,101,115,99,97,112,101,32,99,104,97,114,32,39,34,32,46,46,32,99, +32,46,46,32,34,39,32,105,110,32,115,116,114,105,110,103,34,41,13,10, +32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32, +32,104,97,115,95,101,115,99,97,112,101,32,61,32,116,114,117,101,13,10, +32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,108,97,115, +116,32,61,32,110,105,108,13,10,13,10,32,32,32,32,101,108,115,101,105, +102,32,120,32,61,61,32,51,52,32,116,104,101,110,32,45,45,32,39,34, +39,32,40,101,110,100,32,111,102,32,115,116,114,105,110,103,41,13,10,32, +32,32,32,32,32,108,111,99,97,108,32,115,32,61,32,115,116,114,58,115, +117,98,40,105,32,43,32,49,44,32,106,32,45,32,49,41,13,10,32,32, +32,32,32,32,105,102,32,104,97,115,95,115,117,114,114,111,103,97,116,101, +95,101,115,99,97,112,101,32,116,104,101,110,13,10,32,32,32,32,32,32, +32,32,115,32,61,32,115,58,103,115,117,98,40,34,92,92,117,91,100,68, +93,91,56,57,97,65,98,66,93,46,46,92,92,117,46,46,46,46,34,44, +32,112,97,114,115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112, +101,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32, +32,105,102,32,104,97,115,95,117,110,105,99,111,100,101,95,101,115,99,97, +112,101,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,115,32,61, +32,115,58,103,115,117,98,40,34,92,92,117,46,46,46,46,34,44,32,112, 97,114,115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,41, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,105,102,32,104,97,115,95,117,110, -105,99,111,100,101,95,101,115,99,97,112,101,32,116,104,101,110,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,32,61,32,115, -58,103,115,117,98,40,34,92,92,117,46,46,46,46,34,44,32,112,97,114, -115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,41,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,105,102,32,104,97,115,95,101,115,99,97, -112,101,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,115,32,61,32,115,58,103,115,117,98,40,34,92,92,46, -34,44,32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95,105, -110,118,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110, -32,115,44,32,106,32,43,32,49,13,10,13,10,32,32,32,32,32,32,32, -32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,108, -97,115,116,32,61,32,120,13,10,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,100,101,99,111,100, -101,95,101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,101,120,112, -101,99,116,101,100,32,99,108,111,115,105,110,103,32,113,117,111,116,101,32, -102,111,114,32,115,116,114,105,110,103,34,41,13,10,101,110,100,13,10,13, -10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97, -114,115,101,95,110,117,109,98,101,114,40,115,116,114,44,32,105,41,13,10, -32,32,32,32,108,111,99,97,108,32,120,32,61,32,110,101,120,116,95,99, -104,97,114,40,115,116,114,44,32,105,44,32,100,101,108,105,109,95,99,104, -97,114,115,41,13,10,32,32,32,32,108,111,99,97,108,32,115,32,61,32, -115,116,114,58,115,117,98,40,105,44,32,120,32,45,32,49,41,13,10,32, -32,32,32,108,111,99,97,108,32,110,32,61,32,116,111,110,117,109,98,101, -114,40,115,41,13,10,32,32,32,32,105,102,32,110,111,116,32,110,32,116, -104,101,110,13,10,32,32,32,32,32,32,32,32,100,101,99,111,100,101,95, +13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,105, +102,32,104,97,115,95,101,115,99,97,112,101,32,116,104,101,110,13,10,32, +32,32,32,32,32,32,32,115,32,61,32,115,58,103,115,117,98,40,34,92, +92,46,34,44,32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112, +95,105,110,118,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32, +32,32,32,32,114,101,116,117,114,110,32,115,44,32,106,32,43,32,49,13, +10,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,108, +97,115,116,32,61,32,120,13,10,32,32,32,32,101,110,100,13,10,32,32, +101,110,100,13,10,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40, +115,116,114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,99,108, +111,115,105,110,103,32,113,117,111,116,101,32,102,111,114,32,115,116,114,105, +110,103,34,41,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108, +32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95,110,117,109,98, +101,114,40,115,116,114,44,32,105,41,13,10,32,32,108,111,99,97,108,32, +120,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105, +44,32,100,101,108,105,109,95,99,104,97,114,115,41,13,10,32,32,108,111, +99,97,108,32,115,32,61,32,115,116,114,58,115,117,98,40,105,44,32,120, +32,45,32,49,41,13,10,32,32,108,111,99,97,108,32,110,32,61,32,116, +111,110,117,109,98,101,114,40,115,41,13,10,32,32,105,102,32,110,111,116, +32,110,32,116,104,101,110,13,10,32,32,32,32,100,101,99,111,100,101,95, 101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,105,110,118,97,108, 105,100,32,110,117,109,98,101,114,32,39,34,32,46,46,32,115,32,46,46, -32,34,39,34,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32, -114,101,116,117,114,110,32,110,44,32,120,13,10,101,110,100,13,10,13,10, -13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114, -115,101,95,108,105,116,101,114,97,108,40,115,116,114,44,32,105,41,13,10, -32,32,32,32,108,111,99,97,108,32,120,32,61,32,110,101,120,116,95,99, -104,97,114,40,115,116,114,44,32,105,44,32,100,101,108,105,109,95,99,104, -97,114,115,41,13,10,32,32,32,32,108,111,99,97,108,32,119,111,114,100, -32,61,32,115,116,114,58,115,117,98,40,105,44,32,120,32,45,32,49,41, -13,10,32,32,32,32,105,102,32,110,111,116,32,108,105,116,101,114,97,108, -115,91,119,111,114,100,93,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32, -105,44,32,34,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,32, -39,34,32,46,46,32,119,111,114,100,32,46,46,32,34,39,34,41,13,10, -32,32,32,32,101,110,100,13,10,32,32,32,32,114,101,116,117,114,110,32, -108,105,116,101,114,97,108,95,109,97,112,91,119,111,114,100,93,44,32,120, -13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110, -99,116,105,111,110,32,112,97,114,115,101,95,97,114,114,97,121,40,115,116, -114,44,32,105,41,13,10,32,32,32,32,108,111,99,97,108,32,114,101,115, -32,61,32,123,125,13,10,32,32,32,32,108,111,99,97,108,32,110,32,61, -32,49,13,10,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32, -32,32,32,119,104,105,108,101,32,49,32,100,111,13,10,32,32,32,32,32, -32,32,32,108,111,99,97,108,32,120,13,10,32,32,32,32,32,32,32,32, -105,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105, -44,32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114,117,101,41, -13,10,32,32,32,32,32,32,32,32,45,45,32,69,109,112,116,121,32,47, -32,101,110,100,32,111,102,32,97,114,114,97,121,63,13,10,32,32,32,32, -32,32,32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41, -32,61,61,32,34,93,34,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,98,114,101,97,107,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,45,45,32, -82,101,97,100,32,116,111,107,101,110,13,10,32,32,32,32,32,32,32,32, -120,44,32,105,32,61,32,112,97,114,115,101,40,115,116,114,44,32,105,41, -13,10,32,32,32,32,32,32,32,32,114,101,115,91,110,93,32,61,32,120, -13,10,32,32,32,32,32,32,32,32,110,32,61,32,110,32,43,32,49,13, -10,32,32,32,32,32,32,32,32,45,45,32,78,101,120,116,32,116,111,107, -101,110,13,10,32,32,32,32,32,32,32,32,105,32,61,32,110,101,120,116, -95,99,104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99,101,95, -99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,32,32, -32,32,108,111,99,97,108,32,99,104,114,32,61,32,115,116,114,58,115,117, -98,40,105,44,32,105,41,13,10,32,32,32,32,32,32,32,32,105,32,61, -32,105,32,43,32,49,13,10,32,32,32,32,32,32,32,32,105,102,32,99, -104,114,32,61,61,32,34,93,34,32,116,104,101,110,32,98,114,101,97,107, -32,101,110,100,13,10,32,32,32,32,32,32,32,32,105,102,32,99,104,114, -32,126,61,32,34,44,34,32,116,104,101,110,32,100,101,99,111,100,101,95, -101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,101,120,112,101,99, -116,101,100,32,39,93,39,32,111,114,32,39,44,39,34,41,32,101,110,100, -13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,114,101,116,117,114, -110,32,114,101,115,44,32,105,13,10,101,110,100,13,10,13,10,13,10,108, -111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95, -111,98,106,101,99,116,40,115,116,114,44,32,105,41,13,10,32,32,32,32, -108,111,99,97,108,32,114,101,115,32,61,32,123,125,13,10,32,32,32,32, -105,32,61,32,105,32,43,32,49,13,10,32,32,32,32,119,104,105,108,101, -32,49,32,100,111,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108, -32,107,101,121,44,32,118,97,108,13,10,32,32,32,32,32,32,32,32,105, -32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105,44, -32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114,117,101,41,13, -10,32,32,32,32,32,32,32,32,45,45,32,69,109,112,116,121,32,47,32, +32,34,39,34,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117, +114,110,32,110,44,32,120,13,10,101,110,100,13,10,13,10,13,10,108,111, +99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95,108, +105,116,101,114,97,108,40,115,116,114,44,32,105,41,13,10,32,32,108,111, +99,97,108,32,120,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116, +114,44,32,105,44,32,100,101,108,105,109,95,99,104,97,114,115,41,13,10, +32,32,108,111,99,97,108,32,119,111,114,100,32,61,32,115,116,114,58,115, +117,98,40,105,44,32,120,32,45,32,49,41,13,10,32,32,105,102,32,110, +111,116,32,108,105,116,101,114,97,108,115,91,119,111,114,100,93,32,116,104, +101,110,13,10,32,32,32,32,100,101,99,111,100,101,95,101,114,114,111,114, +40,115,116,114,44,32,105,44,32,34,105,110,118,97,108,105,100,32,108,105, +116,101,114,97,108,32,39,34,32,46,46,32,119,111,114,100,32,46,46,32, +34,39,34,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114, +110,32,108,105,116,101,114,97,108,95,109,97,112,91,119,111,114,100,93,44, +32,120,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102, +117,110,99,116,105,111,110,32,112,97,114,115,101,95,97,114,114,97,121,40, +115,116,114,44,32,105,41,13,10,32,32,108,111,99,97,108,32,114,101,115, +32,61,32,123,125,13,10,32,32,108,111,99,97,108,32,110,32,61,32,49, +13,10,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32,119,104,105, +108,101,32,49,32,100,111,13,10,32,32,32,32,108,111,99,97,108,32,120, +13,10,32,32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40, +115,116,114,44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44, +32,116,114,117,101,41,13,10,32,32,32,32,45,45,32,69,109,112,116,121, +32,47,32,101,110,100,32,111,102,32,97,114,114,97,121,63,13,10,32,32, +32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41,32,61, +61,32,34,93,34,32,116,104,101,110,13,10,32,32,32,32,32,32,105,32, +61,32,105,32,43,32,49,13,10,32,32,32,32,32,32,98,114,101,97,107, +13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,45,45,32,82,101, +97,100,32,116,111,107,101,110,13,10,32,32,32,32,120,44,32,105,32,61, +32,112,97,114,115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32, +114,101,115,91,110,93,32,61,32,120,13,10,32,32,32,32,110,32,61,32, +110,32,43,32,49,13,10,32,32,32,32,45,45,32,78,101,120,116,32,116, +111,107,101,110,13,10,32,32,32,32,105,32,61,32,110,101,120,116,95,99, +104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99,101,95,99,104, +97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,108,111,99,97, +108,32,99,104,114,32,61,32,115,116,114,58,115,117,98,40,105,44,32,105, +41,13,10,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32, +32,32,105,102,32,99,104,114,32,61,61,32,34,93,34,32,116,104,101,110, +32,98,114,101,97,107,32,101,110,100,13,10,32,32,32,32,105,102,32,99, +104,114,32,126,61,32,34,44,34,32,116,104,101,110,32,100,101,99,111,100, +101,95,101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,101,120,112, +101,99,116,101,100,32,39,93,39,32,111,114,32,39,44,39,34,41,32,101, +110,100,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32, +114,101,115,44,32,105,13,10,101,110,100,13,10,13,10,13,10,108,111,99, +97,108,32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95,111,98, +106,101,99,116,40,115,116,114,44,32,105,41,13,10,32,32,108,111,99,97, +108,32,114,101,115,32,61,32,123,125,13,10,32,32,105,32,61,32,105,32, +43,32,49,13,10,32,32,119,104,105,108,101,32,49,32,100,111,13,10,32, +32,32,32,108,111,99,97,108,32,107,101,121,44,32,118,97,108,13,10,32, +32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114, +44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114, +117,101,41,13,10,32,32,32,32,45,45,32,69,109,112,116,121,32,47,32, 101,110,100,32,111,102,32,111,98,106,101,99,116,63,13,10,32,32,32,32, -32,32,32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41, -32,61,61,32,34,125,34,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,98,114,101,97,107,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,45,45,32, -82,101,97,100,32,107,101,121,13,10,32,32,32,32,32,32,32,32,105,102, -32,115,116,114,58,115,117,98,40,105,44,32,105,41,32,126,61,32,39,34, -39,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105,44, -32,34,101,120,112,101,99,116,101,100,32,115,116,114,105,110,103,32,102,111, -114,32,107,101,121,34,41,13,10,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,107,101,121,44,32,105,32,61,32,112, -97,114,115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32,32,32, -32,32,45,45,32,82,101,97,100,32,39,58,39,32,100,101,108,105,109,105, -116,101,114,13,10,32,32,32,32,32,32,32,32,105,32,61,32,110,101,120, -116,95,99,104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99,101, -95,99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,32, -32,32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41,32, -126,61,32,34,58,34,32,116,104,101,110,13,10,32,32,32,32,32,32,32, +105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41,32,61,61,32, +34,125,34,32,116,104,101,110,13,10,32,32,32,32,32,32,105,32,61,32, +105,32,43,32,49,13,10,32,32,32,32,32,32,98,114,101,97,107,13,10, +32,32,32,32,101,110,100,13,10,32,32,32,32,45,45,32,82,101,97,100, +32,107,101,121,13,10,32,32,32,32,105,102,32,115,116,114,58,115,117,98, +40,105,44,32,105,41,32,126,61,32,39,34,39,32,116,104,101,110,13,10, +32,32,32,32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115, +116,114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,115,116,114, +105,110,103,32,102,111,114,32,107,101,121,34,41,13,10,32,32,32,32,101, +110,100,13,10,32,32,32,32,107,101,121,44,32,105,32,61,32,112,97,114, +115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32,45,45,32,82, +101,97,100,32,39,58,39,32,100,101,108,105,109,105,116,101,114,13,10,32, +32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114, +44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114, +117,101,41,13,10,32,32,32,32,105,102,32,115,116,114,58,115,117,98,40, +105,44,32,105,41,32,126,61,32,34,58,34,32,116,104,101,110,13,10,32, 32,32,32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116, 114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,39,58,39,32, -97,102,116,101,114,32,107,101,121,34,41,13,10,32,32,32,32,32,32,32, -32,101,110,100,13,10,32,32,32,32,32,32,32,32,105,32,61,32,110,101, -120,116,95,99,104,97,114,40,115,116,114,44,32,105,32,43,32,49,44,32, -115,112,97,99,101,95,99,104,97,114,115,44,32,116,114,117,101,41,13,10, -32,32,32,32,32,32,32,32,45,45,32,82,101,97,100,32,118,97,108,117, -101,13,10,32,32,32,32,32,32,32,32,118,97,108,44,32,105,32,61,32, -112,97,114,115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32,32, -32,32,32,45,45,32,83,101,116,13,10,32,32,32,32,32,32,32,32,114, -101,115,91,107,101,121,93,32,61,32,118,97,108,13,10,32,32,32,32,32, -32,32,32,45,45,32,78,101,120,116,32,116,111,107,101,110,13,10,32,32, -32,32,32,32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40, -115,116,114,44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44, -32,116,114,117,101,41,13,10,32,32,32,32,32,32,32,32,108,111,99,97, -108,32,99,104,114,32,61,32,115,116,114,58,115,117,98,40,105,44,32,105, -41,13,10,32,32,32,32,32,32,32,32,105,32,61,32,105,32,43,32,49, -13,10,32,32,32,32,32,32,32,32,105,102,32,99,104,114,32,61,61,32, -34,125,34,32,116,104,101,110,32,98,114,101,97,107,32,101,110,100,13,10, -32,32,32,32,32,32,32,32,105,102,32,99,104,114,32,126,61,32,34,44, -34,32,116,104,101,110,32,100,101,99,111,100,101,95,101,114,114,111,114,40, -115,116,114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,39,125, -39,32,111,114,32,39,44,39,34,41,32,101,110,100,13,10,32,32,32,32, -101,110,100,13,10,32,32,32,32,114,101,116,117,114,110,32,114,101,115,44, -32,105,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,99, -104,97,114,95,102,117,110,99,95,109,97,112,32,61,32,123,13,10,32,32, -32,32,91,32,39,34,39,32,93,32,61,32,112,97,114,115,101,95,115,116, -114,105,110,103,44,13,10,32,32,32,32,91,32,34,48,34,32,93,32,61, -32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,32,32, -91,32,34,49,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98, -101,114,44,13,10,32,32,32,32,91,32,34,50,34,32,93,32,61,32,112, -97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,32,32,91,32, -34,51,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114, -44,13,10,32,32,32,32,91,32,34,52,34,32,93,32,61,32,112,97,114, -115,101,95,110,117,109,98,101,114,44,13,10,32,32,32,32,91,32,34,53, +97,102,116,101,114,32,107,101,121,34,41,13,10,32,32,32,32,101,110,100, +13,10,32,32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40, +115,116,114,44,32,105,32,43,32,49,44,32,115,112,97,99,101,95,99,104, +97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,45,45,32,82, +101,97,100,32,118,97,108,117,101,13,10,32,32,32,32,118,97,108,44,32, +105,32,61,32,112,97,114,115,101,40,115,116,114,44,32,105,41,13,10,32, +32,32,32,45,45,32,83,101,116,13,10,32,32,32,32,114,101,115,91,107, +101,121,93,32,61,32,118,97,108,13,10,32,32,32,32,45,45,32,78,101, +120,116,32,116,111,107,101,110,13,10,32,32,32,32,105,32,61,32,110,101, +120,116,95,99,104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99, +101,95,99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32, +108,111,99,97,108,32,99,104,114,32,61,32,115,116,114,58,115,117,98,40, +105,44,32,105,41,13,10,32,32,32,32,105,32,61,32,105,32,43,32,49, +13,10,32,32,32,32,105,102,32,99,104,114,32,61,61,32,34,125,34,32, +116,104,101,110,32,98,114,101,97,107,32,101,110,100,13,10,32,32,32,32, +105,102,32,99,104,114,32,126,61,32,34,44,34,32,116,104,101,110,32,100, +101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105,44,32, +34,101,120,112,101,99,116,101,100,32,39,125,39,32,111,114,32,39,44,39, +34,41,32,101,110,100,13,10,32,32,101,110,100,13,10,32,32,114,101,116, +117,114,110,32,114,101,115,44,32,105,13,10,101,110,100,13,10,13,10,13, +10,108,111,99,97,108,32,99,104,97,114,95,102,117,110,99,95,109,97,112, +32,61,32,123,13,10,32,32,91,32,39,34,39,32,93,32,61,32,112,97, +114,115,101,95,115,116,114,105,110,103,44,13,10,32,32,91,32,34,48,34, +32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10, +32,32,91,32,34,49,34,32,93,32,61,32,112,97,114,115,101,95,110,117, +109,98,101,114,44,13,10,32,32,91,32,34,50,34,32,93,32,61,32,112, +97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,91,32,34,51, 34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13, -10,32,32,32,32,91,32,34,54,34,32,93,32,61,32,112,97,114,115,101, -95,110,117,109,98,101,114,44,13,10,32,32,32,32,91,32,34,55,34,32, -93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32, -32,32,32,91,32,34,56,34,32,93,32,61,32,112,97,114,115,101,95,110, -117,109,98,101,114,44,13,10,32,32,32,32,91,32,34,57,34,32,93,32, -61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,32, -32,91,32,34,45,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109, -98,101,114,44,13,10,32,32,32,32,91,32,34,116,34,32,93,32,61,32, -112,97,114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32,32,32, +10,32,32,91,32,34,52,34,32,93,32,61,32,112,97,114,115,101,95,110, +117,109,98,101,114,44,13,10,32,32,91,32,34,53,34,32,93,32,61,32, +112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,91,32,34, +54,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44, +13,10,32,32,91,32,34,55,34,32,93,32,61,32,112,97,114,115,101,95, +110,117,109,98,101,114,44,13,10,32,32,91,32,34,56,34,32,93,32,61, +32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,91,32, +34,57,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114, +44,13,10,32,32,91,32,34,45,34,32,93,32,61,32,112,97,114,115,101, +95,110,117,109,98,101,114,44,13,10,32,32,91,32,34,116,34,32,93,32, +61,32,112,97,114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32, 91,32,34,102,34,32,93,32,61,32,112,97,114,115,101,95,108,105,116,101, -114,97,108,44,13,10,32,32,32,32,91,32,34,110,34,32,93,32,61,32, -112,97,114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32,32,32, -91,32,34,91,34,32,93,32,61,32,112,97,114,115,101,95,97,114,114,97, -121,44,13,10,32,32,32,32,91,32,34,123,34,32,93,32,61,32,112,97, -114,115,101,95,111,98,106,101,99,116,44,13,10,125,13,10,13,10,13,10, -112,97,114,115,101,32,61,32,102,117,110,99,116,105,111,110,40,115,116,114, -44,32,105,100,120,41,13,10,32,32,32,32,108,111,99,97,108,32,99,104, -114,32,61,32,115,116,114,58,115,117,98,40,105,100,120,44,32,105,100,120, -41,13,10,32,32,32,32,108,111,99,97,108,32,102,32,61,32,99,104,97, -114,95,102,117,110,99,95,109,97,112,91,99,104,114,93,13,10,32,32,32, -32,105,102,32,102,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -114,101,116,117,114,110,32,102,40,115,116,114,44,32,105,100,120,41,13,10, -32,32,32,32,101,110,100,13,10,32,32,32,32,100,101,99,111,100,101,95, +114,97,108,44,13,10,32,32,91,32,34,110,34,32,93,32,61,32,112,97, +114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32,91,32,34,91, +34,32,93,32,61,32,112,97,114,115,101,95,97,114,114,97,121,44,13,10, +32,32,91,32,34,123,34,32,93,32,61,32,112,97,114,115,101,95,111,98, +106,101,99,116,44,13,10,125,13,10,13,10,13,10,112,97,114,115,101,32, +61,32,102,117,110,99,116,105,111,110,40,115,116,114,44,32,105,100,120,41, +13,10,32,32,108,111,99,97,108,32,99,104,114,32,61,32,115,116,114,58, +115,117,98,40,105,100,120,44,32,105,100,120,41,13,10,32,32,108,111,99, +97,108,32,102,32,61,32,99,104,97,114,95,102,117,110,99,95,109,97,112, +91,99,104,114,93,13,10,32,32,105,102,32,102,32,116,104,101,110,13,10, +32,32,32,32,114,101,116,117,114,110,32,102,40,115,116,114,44,32,105,100, +120,41,13,10,32,32,101,110,100,13,10,32,32,100,101,99,111,100,101,95, 101,114,114,111,114,40,115,116,114,44,32,105,100,120,44,32,34,117,110,101, 120,112,101,99,116,101,100,32,99,104,97,114,97,99,116,101,114,32,39,34, 32,46,46,32,99,104,114,32,46,46,32,34,39,34,41,13,10,101,110,100, 13,10,13,10,13,10,102,117,110,99,116,105,111,110,32,106,115,111,110,46, -100,101,99,111,100,101,40,115,116,114,41,13,10,32,32,32,32,105,102,32, -116,121,112,101,40,115,116,114,41,32,126,61,32,34,115,116,114,105,110,103, -34,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,101,114,114,111, -114,40,34,101,120,112,101,99,116,101,100,32,97,114,103,117,109,101,110,116, -32,111,102,32,116,121,112,101,32,115,116,114,105,110,103,44,32,103,111,116, -32,34,32,46,46,32,116,121,112,101,40,115,116,114,41,41,13,10,32,32, -32,32,101,110,100,13,10,32,32,32,32,108,111,99,97,108,32,114,101,115, -44,32,105,100,120,32,61,32,112,97,114,115,101,40,115,116,114,44,32,110, -101,120,116,95,99,104,97,114,40,115,116,114,44,32,49,44,32,115,112,97, -99,101,95,99,104,97,114,115,44,32,116,114,117,101,41,41,13,10,32,32, -32,32,105,100,120,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116, -114,44,32,105,100,120,44,32,115,112,97,99,101,95,99,104,97,114,115,44, -32,116,114,117,101,41,13,10,32,32,32,32,105,102,32,105,100,120,32,60, -61,32,35,115,116,114,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105, -100,120,44,32,34,116,114,97,105,108,105,110,103,32,103,97,114,98,97,103, -101,34,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,114,101, -116,117,114,110,32,114,101,115,13,10,101,110,100,13,10,13,10,45,45,45, +100,101,99,111,100,101,40,115,116,114,41,13,10,32,32,105,102,32,116,121, +112,101,40,115,116,114,41,32,126,61,32,34,115,116,114,105,110,103,34,32, +116,104,101,110,13,10,32,32,32,32,101,114,114,111,114,40,34,101,120,112, +101,99,116,101,100,32,97,114,103,117,109,101,110,116,32,111,102,32,116,121, +112,101,32,115,116,114,105,110,103,44,32,103,111,116,32,34,32,46,46,32, +116,121,112,101,40,115,116,114,41,41,13,10,32,32,101,110,100,13,10,32, +32,108,111,99,97,108,32,114,101,115,44,32,105,100,120,32,61,32,112,97, +114,115,101,40,115,116,114,44,32,110,101,120,116,95,99,104,97,114,40,115, +116,114,44,32,49,44,32,115,112,97,99,101,95,99,104,97,114,115,44,32, +116,114,117,101,41,41,13,10,32,32,105,100,120,32,61,32,110,101,120,116, +95,99,104,97,114,40,115,116,114,44,32,105,100,120,44,32,115,112,97,99, +101,95,99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,105,102, +32,105,100,120,32,60,61,32,35,115,116,114,32,116,104,101,110,13,10,32, +32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44, +32,105,100,120,44,32,34,116,114,97,105,108,105,110,103,32,103,97,114,98, +97,103,101,34,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117, +114,110,32,114,101,115,13,10,101,110,100,13,10,13,10,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,69,120,112,111, -114,116,32,116,111,32,74,105,110,46,13,10,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,13,10,45,45,32,69,120,112,111,114,116, +32,116,111,32,74,105,110,46,13,10,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,13,10,13,10,106,105,110,46,117,116,105,108,115,46, -106,115,111,110,32,61,32,106,115,111,110,13,10,0 +45,45,45,45,13,10,13,10,106,105,110,46,117,116,105,108,115,46,106,115, +111,110,32,61,32,106,115,111,110,13,10,0 }; diff --git a/src/libjin-lua/scripts/utils/xml.lua b/src/libjin-lua/scripts/utils/xml.lua index 9f10b17..bdd8d51 100644 --- a/src/libjin-lua/scripts/utils/xml.lua +++ b/src/libjin-lua/scripts/utils/xml.lua @@ -8,147 +8,147 @@ jin.utils = jin.utils or {} local XmlParser = {} function XmlParser.toXmlString(value) - value = string.gsub(value, "&", "&"); -- '&' -> "&" - value = string.gsub(value, "<", "<"); -- '<' -> "<" - value = string.gsub(value, ">", ">"); -- '>' -> ">" - value = string.gsub(value, "\"", """); -- '"' -> """ - value = string.gsub(value, "([^%w%&%;%p%\t% ])", - function(c) - return string.format("&#x%X;", string.byte(c)) - end); - return value; + value = string.gsub(value, "&", "&"); -- '&' -> "&" + value = string.gsub(value, "<", "<"); -- '<' -> "<" + value = string.gsub(value, ">", ">"); -- '>' -> ">" + value = string.gsub(value, "\"", """); -- '"' -> """ + value = string.gsub(value, "([^%w%&%;%p%\t% ])", + function(c) + return string.format("&#x%X;", string.byte(c)) + end); + return value; end function XmlParser.fromXmlString(value) - value = string.gsub(value, "&#x([%x]+)%;", - function(h) - return string.char(tonumber(h, 16)) - end); - value = string.gsub(value, "&#([0-9]+)%;", - function(h) - return string.char(tonumber(h, 10)) - end); - value = string.gsub(value, """, "\""); - value = string.gsub(value, "'", "'"); - value = string.gsub(value, ">", ">"); - value = string.gsub(value, "<", "<"); - value = string.gsub(value, "&", "&"); - return value; + value = string.gsub(value, "&#x([%x]+)%;", + function(h) + return string.char(tonumber(h, 16)) + end); + value = string.gsub(value, "&#([0-9]+)%;", + function(h) + return string.char(tonumber(h, 10)) + end); + value = string.gsub(value, """, "\""); + value = string.gsub(value, "'", "'"); + value = string.gsub(value, ">", ">"); + value = string.gsub(value, "<", "<"); + value = string.gsub(value, "&", "&"); + return value; end function XmlParser.parseArgs(node, s) - string.gsub(s, "(%w+)=([\"'])(.-)%2", function(w, _, a) - node:addProperty(w, XmlParser.fromXmlString(a)) - end) + string.gsub(s, "(%w+)=([\"'])(.-)%2", function(w, _, a) + node:addProperty(w, XmlParser.fromXmlString(a)) + end) end - + local function newNode(name) - local node = {} - node.___value = nil - node.___name = name - node.___children = {} - node.___props = {} - - function node:value() return self.___value end - function node:setValue(val) self.___value = val end - function node:name() return self.___name end - function node:setName(name) self.___name = name end - function node:children() return self.___children end - function node:numChildren() return #self.___children end - function node:addChild(child) - if self[child:name()] ~= nil then - if type(self[child:name()].name) == "function" then - local tempTable = {} - table.insert(tempTable, self[child:name()]) - self[child:name()] = tempTable - end - table.insert(self[child:name()], child) - else - self[child:name()] = child - end - table.insert(self.___children, child) + local node = {} + node.___value = nil + node.___name = name + node.___children = {} + node.___props = {} + + function node:value() return self.___value end + function node:setValue(val) self.___value = val end + function node:name() return self.___name end + function node:setName(name) self.___name = name end + function node:children() return self.___children end + function node:numChildren() return #self.___children end + function node:addChild(child) + if self[child:name()] ~= nil then + if type(self[child:name()].name) == "function" then + local tempTable = {} + table.insert(tempTable, self[child:name()]) + self[child:name()] = tempTable + end + table.insert(self[child:name()], child) + else + self[child:name()] = child end - - function node:properties() return self.___props end - function node:numProperties() return #self.___props end - function node:addProperty(name, value) - local lName = "@" .. name - if self[lName] ~= nil then - if type(self[lName]) == "string" then - local tempTable = {} - table.insert(tempTable, self[lName]) - self[lName] = tempTable - end - table.insert(self[lName], value) - else - self[lName] = value - end - table.insert(self.___props, { name = name, value = self[name] }) + table.insert(self.___children, child) + end + + function node:properties() return self.___props end + function node:numProperties() return #self.___props end + function node:addProperty(name, value) + local lName = "@" .. name + if self[lName] ~= nil then + if type(self[lName]) == "string" then + local tempTable = {} + table.insert(tempTable, self[lName]) + self[lName] = tempTable + end + table.insert(self[lName], value) + else + self[lName] = value end + table.insert(self.___props, { name = name, value = self[name] }) + end - return node + return node end function XmlParser.parseXmlText(xmlText) - local stack = {} - local top = newNode() - table.insert(stack, top) - local ni, c, label, xarg, empty - local i, j = 1, 1 - while true do - ni, j, c, label, xarg, empty = string.find(xmlText, "<(%/?)([%w_:]+)(.-)(%/?)>", i) - if not ni then break end - local text = string.sub(xmlText, i, ni - 1); - if not string.find(text, "^%s*$") then - local lVal = (top:value() or "") .. XmlParser.fromXmlString(text) - stack[#stack]:setValue(lVal) - end - if empty == "/" then -- empty element tag - local lNode = newNode(label) - XmlParser.parseArgs(lNode, xarg) - top:addChild(lNode) - elseif c == "" then -- start tag - local lNode = newNode(label) - XmlParser.parseArgs(lNode, xarg) - table.insert(stack, lNode) - top = lNode - else -- end tag - local toclose = table.remove(stack) -- remove top - - top = stack[#stack] - if #stack < 1 then - error("XmlParser. nothing to close with " .. label) - end - if toclose:name() ~= label then - error("XmlParser. trying to close " .. toclose.name .. " with " .. label) - end - top:addChild(toclose) - end - i = j + 1 + local stack = {} + local top = newNode() + table.insert(stack, top) + local ni, c, label, xarg, empty + local i, j = 1, 1 + while true do + ni, j, c, label, xarg, empty = string.find(xmlText, "<(%/?)([%w_:]+)(.-)(%/?)>", i) + if not ni then break end + local text = string.sub(xmlText, i, ni - 1); + if not string.find(text, "^%s*$") then + local lVal = (top:value() or "") .. XmlParser.fromXmlString(text) + stack[#stack]:setValue(lVal) end - local text = string.sub(xmlText, i); - if #stack > 1 then - error("XmlParser. unclosed " .. stack[#stack]:name()) + if empty == "/" then -- empty element tag + local lNode = newNode(label) + XmlParser.parseArgs(lNode, xarg) + top:addChild(lNode) + elseif c == "" then -- start tag + local lNode = newNode(label) + XmlParser.parseArgs(lNode, xarg) + table.insert(stack, lNode) + top = lNode + else -- end tag + local toclose = table.remove(stack) -- remove top + + top = stack[#stack] + if #stack < 1 then + error("XmlParser. nothing to close with " .. label) + end + if toclose:name() ~= label then + error("XmlParser. trying to close " .. toclose.name .. " with " .. label) + end + top:addChild(toclose) end - return top + i = j + 1 + end + local text = string.sub(xmlText, i); + if #stack > 1 then + error("XmlParser. unclosed " .. stack[#stack]:name()) + end + return top end function XmlParser.loadFile(xmlFilename, base) - if not base then - base = system.ResourceDirectory - end - - local path = system.pathForFile(xmlFilename, base) - local hFile, err = io.open(path, "r"); - - if hFile and not err then - local xmlText = hFile:read("*a"); -- read file content - io.close(hFile); - return XmlParser.parseXmlText(xmlText), nil; - else - print(err) - return nil - end + if not base then + base = system.ResourceDirectory + end + + local path = system.pathForFile(xmlFilename, base) + local hFile, err = io.open(path, "r"); + + if hFile and not err then + local xmlText = hFile:read("*a"); -- read file content + io.close(hFile); + return XmlParser.parseXmlText(xmlText), nil; + else + print(err) + return nil + end end ------------------------------------------------------------------------------------------------------------------ diff --git a/src/libjin-lua/scripts/utils/xml.lua.h b/src/libjin-lua/scripts/utils/xml.lua.h index 2ab4cb4..c32f699 100644 --- a/src/libjin-lua/scripts/utils/xml.lua.h +++ b/src/libjin-lua/scripts/utils/xml.lua.h @@ -19,261 +19,238 @@ static char xml_lua[] = { 111,99,97,108,32,88,109,108,80,97,114,115,101,114,32,61,32,123,125,13, 10,13,10,102,117,110,99,116,105,111,110,32,88,109,108,80,97,114,115,101, 114,46,116,111,88,109,108,83,116,114,105,110,103,40,118,97,108,117,101,41, -13,10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103, -46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,34,44,32,34,38, -97,109,112,59,34,41,59,32,45,45,32,39,38,39,32,45,62,32,34,38, -97,109,112,59,34,13,10,32,32,32,32,118,97,108,117,101,32,61,32,115, -116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,60, -34,44,32,34,38,108,116,59,34,41,59,32,45,45,32,39,60,39,32,45, -62,32,34,38,108,116,59,34,13,10,32,32,32,32,118,97,108,117,101,32, -61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44, -32,34,62,34,44,32,34,38,103,116,59,34,41,59,32,45,45,32,39,62, -39,32,45,62,32,34,38,103,116,59,34,13,10,32,32,32,32,118,97,108, -117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108, -117,101,44,32,34,92,34,34,44,32,34,38,113,117,111,116,59,34,41,59, -32,45,45,32,39,34,39,32,45,62,32,34,38,113,117,111,116,59,34,13, -10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46, -103,115,117,98,40,118,97,108,117,101,44,32,34,40,91,94,37,119,37,38, -37,59,37,112,37,92,116,37,32,93,41,34,44,13,10,32,32,32,32,32, -32,32,32,102,117,110,99,116,105,111,110,40,99,41,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110, +13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46,103, +115,117,98,40,118,97,108,117,101,44,32,34,38,34,44,32,34,38,97,109, +112,59,34,41,59,32,45,45,32,39,38,39,32,45,62,32,34,38,97,109, +112,59,34,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110, +103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,60,34,44,32,34, +38,108,116,59,34,41,59,32,45,45,32,39,60,39,32,45,62,32,34,38, +108,116,59,34,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105, +110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,62,34,44,32, +34,38,103,116,59,34,41,59,32,45,45,32,39,62,39,32,45,62,32,34, +38,103,116,59,34,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114, +105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,92,34,34, +44,32,34,38,113,117,111,116,59,34,41,59,32,45,45,32,39,34,39,32, +45,62,32,34,38,113,117,111,116,59,34,13,10,32,32,118,97,108,117,101, +32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101, +44,32,34,40,91,94,37,119,37,38,37,59,37,112,37,92,116,37,32,93, +41,34,44,13,10,32,32,32,32,102,117,110,99,116,105,111,110,40,99,41, +13,10,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110, 103,46,102,111,114,109,97,116,40,34,38,35,120,37,88,59,34,44,32,115, 116,114,105,110,103,46,98,121,116,101,40,99,41,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,41,59,13,10,32,32,32,32,114,101,116,117,114, -110,32,118,97,108,117,101,59,13,10,101,110,100,13,10,13,10,102,117,110, -99,116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,102,114,111,109, -88,109,108,83,116,114,105,110,103,40,118,97,108,117,101,41,13,10,32,32, -32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46,103,115,117, -98,40,118,97,108,117,101,44,32,34,38,35,120,40,91,37,120,93,43,41, -37,59,34,44,13,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105, -111,110,40,104,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114, -101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114,40,116,111, -110,117,109,98,101,114,40,104,44,32,49,54,41,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,41,59,13,10,32,32,32,32,118,97,108,117,101, -32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101, -44,32,34,38,35,40,91,48,45,57,93,43,41,37,59,34,44,13,10,32, -32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,40,104,41,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,115, -116,114,105,110,103,46,99,104,97,114,40,116,111,110,117,109,98,101,114,40, -104,44,32,49,48,41,41,13,10,32,32,32,32,32,32,32,32,101,110,100, -41,59,13,10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105, -110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,113,117,111, -116,59,34,44,32,34,92,34,34,41,59,13,10,32,32,32,32,118,97,108, -117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108, -117,101,44,32,34,38,97,112,111,115,59,34,44,32,34,39,34,41,59,13, -10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46, -103,115,117,98,40,118,97,108,117,101,44,32,34,38,103,116,59,34,44,32, -34,62,34,41,59,13,10,32,32,32,32,118,97,108,117,101,32,61,32,115, +101,110,100,41,59,13,10,32,32,114,101,116,117,114,110,32,118,97,108,117, +101,59,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32, +88,109,108,80,97,114,115,101,114,46,102,114,111,109,88,109,108,83,116,114, +105,110,103,40,118,97,108,117,101,41,13,10,32,32,118,97,108,117,101,32, +61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44, +32,34,38,35,120,40,91,37,120,93,43,41,37,59,34,44,13,10,32,32, +32,32,102,117,110,99,116,105,111,110,40,104,41,13,10,32,32,32,32,32, +32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114,40, +116,111,110,117,109,98,101,114,40,104,44,32,49,54,41,41,13,10,32,32, +32,32,101,110,100,41,59,13,10,32,32,118,97,108,117,101,32,61,32,115, 116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38, -108,116,59,34,44,32,34,60,34,41,59,13,10,32,32,32,32,118,97,108, -117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108, -117,101,44,32,34,38,97,109,112,59,34,44,32,34,38,34,41,59,13,10, -32,32,32,32,114,101,116,117,114,110,32,118,97,108,117,101,59,13,10,101, -110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,88,109,108,80,97, -114,115,101,114,46,112,97,114,115,101,65,114,103,115,40,110,111,100,101,44, -32,115,41,13,10,32,32,32,32,115,116,114,105,110,103,46,103,115,117,98, -40,115,44,32,34,40,37,119,43,41,61,40,91,92,34,39,93,41,40,46, -45,41,37,50,34,44,32,102,117,110,99,116,105,111,110,40,119,44,32,95, -44,32,97,41,13,10,32,32,32,32,32,32,32,32,110,111,100,101,58,97, -100,100,80,114,111,112,101,114,116,121,40,119,44,32,88,109,108,80,97,114, -115,101,114,46,102,114,111,109,88,109,108,83,116,114,105,110,103,40,97,41, -41,13,10,32,32,32,32,101,110,100,41,13,10,101,110,100,13,10,32,32, +35,40,91,48,45,57,93,43,41,37,59,34,44,13,10,32,32,32,32,102, +117,110,99,116,105,111,110,40,104,41,13,10,32,32,32,32,32,32,114,101, +116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114,40,116,111,110, +117,109,98,101,114,40,104,44,32,49,48,41,41,13,10,32,32,32,32,101, +110,100,41,59,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105, +110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,113,117,111, +116,59,34,44,32,34,92,34,34,41,59,13,10,32,32,118,97,108,117,101, +32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101, +44,32,34,38,97,112,111,115,59,34,44,32,34,39,34,41,59,13,10,32, +32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98, +40,118,97,108,117,101,44,32,34,38,103,116,59,34,44,32,34,62,34,41, +59,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46, +103,115,117,98,40,118,97,108,117,101,44,32,34,38,108,116,59,34,44,32, +34,60,34,41,59,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114, +105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,97,109, +112,59,34,44,32,34,38,34,41,59,13,10,32,32,114,101,116,117,114,110, +32,118,97,108,117,101,59,13,10,101,110,100,13,10,13,10,102,117,110,99, +116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,112,97,114,115,101, +65,114,103,115,40,110,111,100,101,44,32,115,41,13,10,32,32,115,116,114, +105,110,103,46,103,115,117,98,40,115,44,32,34,40,37,119,43,41,61,40, +91,92,34,39,93,41,40,46,45,41,37,50,34,44,32,102,117,110,99,116, +105,111,110,40,119,44,32,95,44,32,97,41,13,10,32,32,32,32,110,111, +100,101,58,97,100,100,80,114,111,112,101,114,116,121,40,119,44,32,88,109, +108,80,97,114,115,101,114,46,102,114,111,109,88,109,108,83,116,114,105,110, +103,40,97,41,41,13,10,32,32,101,110,100,41,13,10,101,110,100,13,10, 32,32,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,110, -101,119,78,111,100,101,40,110,97,109,101,41,13,10,32,32,32,32,108,111, -99,97,108,32,110,111,100,101,32,61,32,123,125,13,10,32,32,32,32,110, -111,100,101,46,95,95,95,118,97,108,117,101,32,61,32,110,105,108,13,10, -32,32,32,32,110,111,100,101,46,95,95,95,110,97,109,101,32,61,32,110, -97,109,101,13,10,32,32,32,32,110,111,100,101,46,95,95,95,99,104,105, -108,100,114,101,110,32,61,32,123,125,13,10,32,32,32,32,110,111,100,101, -46,95,95,95,112,114,111,112,115,32,61,32,123,125,13,10,13,10,32,32, -32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,118,97,108,117, -101,40,41,32,114,101,116,117,114,110,32,115,101,108,102,46,95,95,95,118, -97,108,117,101,32,101,110,100,13,10,32,32,32,32,102,117,110,99,116,105, -111,110,32,110,111,100,101,58,115,101,116,86,97,108,117,101,40,118,97,108, -41,32,115,101,108,102,46,95,95,95,118,97,108,117,101,32,61,32,118,97, -108,32,101,110,100,13,10,32,32,32,32,102,117,110,99,116,105,111,110,32, -110,111,100,101,58,110,97,109,101,40,41,32,114,101,116,117,114,110,32,115, -101,108,102,46,95,95,95,110,97,109,101,32,101,110,100,13,10,32,32,32, -32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,115,101,116,78,97, -109,101,40,110,97,109,101,41,32,115,101,108,102,46,95,95,95,110,97,109, -101,32,61,32,110,97,109,101,32,101,110,100,13,10,32,32,32,32,102,117, +101,119,78,111,100,101,40,110,97,109,101,41,13,10,32,32,108,111,99,97, +108,32,110,111,100,101,32,61,32,123,125,13,10,32,32,110,111,100,101,46, +95,95,95,118,97,108,117,101,32,61,32,110,105,108,13,10,32,32,110,111, +100,101,46,95,95,95,110,97,109,101,32,61,32,110,97,109,101,13,10,32, +32,110,111,100,101,46,95,95,95,99,104,105,108,100,114,101,110,32,61,32, +123,125,13,10,32,32,110,111,100,101,46,95,95,95,112,114,111,112,115,32, +61,32,123,125,13,10,13,10,32,32,102,117,110,99,116,105,111,110,32,110, +111,100,101,58,118,97,108,117,101,40,41,32,114,101,116,117,114,110,32,115, +101,108,102,46,95,95,95,118,97,108,117,101,32,101,110,100,13,10,32,32, +102,117,110,99,116,105,111,110,32,110,111,100,101,58,115,101,116,86,97,108, +117,101,40,118,97,108,41,32,115,101,108,102,46,95,95,95,118,97,108,117, +101,32,61,32,118,97,108,32,101,110,100,13,10,32,32,102,117,110,99,116, +105,111,110,32,110,111,100,101,58,110,97,109,101,40,41,32,114,101,116,117, +114,110,32,115,101,108,102,46,95,95,95,110,97,109,101,32,101,110,100,13, +10,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,115,101,116, +78,97,109,101,40,110,97,109,101,41,32,115,101,108,102,46,95,95,95,110, +97,109,101,32,61,32,110,97,109,101,32,101,110,100,13,10,32,32,102,117, 110,99,116,105,111,110,32,110,111,100,101,58,99,104,105,108,100,114,101,110, 40,41,32,114,101,116,117,114,110,32,115,101,108,102,46,95,95,95,99,104, -105,108,100,114,101,110,32,101,110,100,13,10,32,32,32,32,102,117,110,99, -116,105,111,110,32,110,111,100,101,58,110,117,109,67,104,105,108,100,114,101, -110,40,41,32,114,101,116,117,114,110,32,35,115,101,108,102,46,95,95,95, -99,104,105,108,100,114,101,110,32,101,110,100,13,10,32,32,32,32,102,117, -110,99,116,105,111,110,32,110,111,100,101,58,97,100,100,67,104,105,108,100, -40,99,104,105,108,100,41,13,10,32,32,32,32,32,32,32,32,105,102,32, -115,101,108,102,91,99,104,105,108,100,58,110,97,109,101,40,41,93,32,126, -61,32,110,105,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,105,102,32,116,121,112,101,40,115,101,108,102,91,99,104,105, -108,100,58,110,97,109,101,40,41,93,46,110,97,109,101,41,32,61,61,32, -34,102,117,110,99,116,105,111,110,34,32,116,104,101,110,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,108,111,99,97,108,32,116, -101,109,112,84,97,98,108,101,32,61,32,123,125,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115, -101,114,116,40,116,101,109,112,84,97,98,108,101,44,32,115,101,108,102,91, -99,104,105,108,100,58,110,97,109,101,40,41,93,41,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,115,101,108,102,91,99,104,105, -108,100,58,110,97,109,101,40,41,93,32,61,32,116,101,109,112,84,97,98, -108,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105, -110,115,101,114,116,40,115,101,108,102,91,99,104,105,108,100,58,110,97,109, -101,40,41,93,44,32,99,104,105,108,100,41,13,10,32,32,32,32,32,32, -32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32, +105,108,100,114,101,110,32,101,110,100,13,10,32,32,102,117,110,99,116,105, +111,110,32,110,111,100,101,58,110,117,109,67,104,105,108,100,114,101,110,40, +41,32,114,101,116,117,114,110,32,35,115,101,108,102,46,95,95,95,99,104, +105,108,100,114,101,110,32,101,110,100,13,10,32,32,102,117,110,99,116,105, +111,110,32,110,111,100,101,58,97,100,100,67,104,105,108,100,40,99,104,105, +108,100,41,13,10,32,32,32,32,105,102,32,115,101,108,102,91,99,104,105, +108,100,58,110,97,109,101,40,41,93,32,126,61,32,110,105,108,32,116,104, +101,110,13,10,32,32,32,32,32,32,105,102,32,116,121,112,101,40,115,101, +108,102,91,99,104,105,108,100,58,110,97,109,101,40,41,93,46,110,97,109, +101,41,32,61,61,32,34,102,117,110,99,116,105,111,110,34,32,116,104,101, +110,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,116,101,109, +112,84,97,98,108,101,32,61,32,123,125,13,10,32,32,32,32,32,32,32, +32,116,97,98,108,101,46,105,110,115,101,114,116,40,116,101,109,112,84,97, +98,108,101,44,32,115,101,108,102,91,99,104,105,108,100,58,110,97,109,101, +40,41,93,41,13,10,32,32,32,32,32,32,32,32,115,101,108,102,91,99, +104,105,108,100,58,110,97,109,101,40,41,93,32,61,32,116,101,109,112,84, +97,98,108,101,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32, +32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102, +91,99,104,105,108,100,58,110,97,109,101,40,41,93,44,32,99,104,105,108, +100,41,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32, 115,101,108,102,91,99,104,105,108,100,58,110,97,109,101,40,41,93,32,61, -32,99,104,105,108,100,13,10,32,32,32,32,32,32,32,32,101,110,100,13, -10,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114, -116,40,115,101,108,102,46,95,95,95,99,104,105,108,100,114,101,110,44,32, -99,104,105,108,100,41,13,10,32,32,32,32,101,110,100,13,10,13,10,32, -32,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,112,114,111, -112,101,114,116,105,101,115,40,41,32,114,101,116,117,114,110,32,115,101,108, -102,46,95,95,95,112,114,111,112,115,32,101,110,100,13,10,32,32,32,32, -102,117,110,99,116,105,111,110,32,110,111,100,101,58,110,117,109,80,114,111, -112,101,114,116,105,101,115,40,41,32,114,101,116,117,114,110,32,35,115,101, -108,102,46,95,95,95,112,114,111,112,115,32,101,110,100,13,10,32,32,32, -32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,97,100,100,80,114, -111,112,101,114,116,121,40,110,97,109,101,44,32,118,97,108,117,101,41,13, -10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,108,78,97,109,101, +32,99,104,105,108,100,13,10,32,32,32,32,101,110,100,13,10,32,32,32, +32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102,46,95, +95,95,99,104,105,108,100,114,101,110,44,32,99,104,105,108,100,41,13,10, +32,32,101,110,100,13,10,13,10,32,32,102,117,110,99,116,105,111,110,32, +110,111,100,101,58,112,114,111,112,101,114,116,105,101,115,40,41,32,114,101, +116,117,114,110,32,115,101,108,102,46,95,95,95,112,114,111,112,115,32,101, +110,100,13,10,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58, +110,117,109,80,114,111,112,101,114,116,105,101,115,40,41,32,114,101,116,117, +114,110,32,35,115,101,108,102,46,95,95,95,112,114,111,112,115,32,101,110, +100,13,10,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,97, +100,100,80,114,111,112,101,114,116,121,40,110,97,109,101,44,32,118,97,108, +117,101,41,13,10,32,32,32,32,108,111,99,97,108,32,108,78,97,109,101, 32,61,32,34,64,34,32,46,46,32,110,97,109,101,13,10,32,32,32,32, -32,32,32,32,105,102,32,115,101,108,102,91,108,78,97,109,101,93,32,126, -61,32,110,105,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,105,102,32,116,121,112,101,40,115,101,108,102,91,108,78,97, -109,101,93,41,32,61,61,32,34,115,116,114,105,110,103,34,32,116,104,101, -110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108, -111,99,97,108,32,116,101,109,112,84,97,98,108,101,32,61,32,123,125,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98, -108,101,46,105,110,115,101,114,116,40,116,101,109,112,84,97,98,108,101,44, -32,115,101,108,102,91,108,78,97,109,101,93,41,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,115,101,108,102,91,108,78,97,109, -101,93,32,61,32,116,101,109,112,84,97,98,108,101,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101, -108,102,91,108,78,97,109,101,93,44,32,118,97,108,117,101,41,13,10,32, -32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,115,101,108,102,91,108,78,97,109,101,93,32,61,32,118, -97,108,117,101,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40, -115,101,108,102,46,95,95,95,112,114,111,112,115,44,32,123,32,110,97,109, -101,32,61,32,110,97,109,101,44,32,118,97,108,117,101,32,61,32,115,101, -108,102,91,110,97,109,101,93,32,125,41,13,10,32,32,32,32,101,110,100, -13,10,13,10,32,32,32,32,114,101,116,117,114,110,32,110,111,100,101,13, -10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,88,109,108, -80,97,114,115,101,114,46,112,97,114,115,101,88,109,108,84,101,120,116,40, -120,109,108,84,101,120,116,41,13,10,32,32,32,32,108,111,99,97,108,32, -115,116,97,99,107,32,61,32,123,125,13,10,32,32,32,32,108,111,99,97, -108,32,116,111,112,32,61,32,110,101,119,78,111,100,101,40,41,13,10,32, -32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,116,97,99, -107,44,32,116,111,112,41,13,10,32,32,32,32,108,111,99,97,108,32,110, -105,44,32,99,44,32,108,97,98,101,108,44,32,120,97,114,103,44,32,101, -109,112,116,121,13,10,32,32,32,32,108,111,99,97,108,32,105,44,32,106, -32,61,32,49,44,32,49,13,10,32,32,32,32,119,104,105,108,101,32,116, -114,117,101,32,100,111,13,10,32,32,32,32,32,32,32,32,110,105,44,32, -106,44,32,99,44,32,108,97,98,101,108,44,32,120,97,114,103,44,32,101, -109,112,116,121,32,61,32,115,116,114,105,110,103,46,102,105,110,100,40,120, -109,108,84,101,120,116,44,32,34,60,40,37,47,63,41,40,91,37,119,95, -58,93,43,41,40,46,45,41,40,37,47,63,41,62,34,44,32,105,41,13, -10,32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,110,105,32,116, -104,101,110,32,98,114,101,97,107,32,101,110,100,13,10,32,32,32,32,32, -32,32,32,108,111,99,97,108,32,116,101,120,116,32,61,32,115,116,114,105, -110,103,46,115,117,98,40,120,109,108,84,101,120,116,44,32,105,44,32,110, -105,32,45,32,49,41,59,13,10,32,32,32,32,32,32,32,32,105,102,32, -110,111,116,32,115,116,114,105,110,103,46,102,105,110,100,40,116,101,120,116, -44,32,34,94,37,115,42,36,34,41,32,116,104,101,110,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,108,111,99,97,108,32,108,86,97,108,32, -61,32,40,116,111,112,58,118,97,108,117,101,40,41,32,111,114,32,34,34, -41,32,46,46,32,88,109,108,80,97,114,115,101,114,46,102,114,111,109,88, -109,108,83,116,114,105,110,103,40,116,101,120,116,41,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,115,116,97,99,107,91,35,115,116,97,99,107, -93,58,115,101,116,86,97,108,117,101,40,108,86,97,108,41,13,10,32,32, -32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,105, -102,32,101,109,112,116,121,32,61,61,32,34,47,34,32,116,104,101,110,32, -45,45,32,101,109,112,116,121,32,101,108,101,109,101,110,116,32,116,97,103, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,108,111,99,97,108,32, -108,78,111,100,101,32,61,32,110,101,119,78,111,100,101,40,108,97,98,101, -108,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,88,109,108,80, -97,114,115,101,114,46,112,97,114,115,101,65,114,103,115,40,108,78,111,100, -101,44,32,120,97,114,103,41,13,10,32,32,32,32,32,32,32,32,32,32, -32,32,116,111,112,58,97,100,100,67,104,105,108,100,40,108,78,111,100,101, -41,13,10,32,32,32,32,32,32,32,32,101,108,115,101,105,102,32,99,32, -61,61,32,34,34,32,116,104,101,110,32,45,45,32,115,116,97,114,116,32, -116,97,103,13,10,32,32,32,32,32,32,32,32,32,32,32,32,108,111,99, -97,108,32,108,78,111,100,101,32,61,32,110,101,119,78,111,100,101,40,108, -97,98,101,108,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,88, -109,108,80,97,114,115,101,114,46,112,97,114,115,101,65,114,103,115,40,108, -78,111,100,101,44,32,120,97,114,103,41,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,116, -97,99,107,44,32,108,78,111,100,101,41,13,10,9,116,111,112,32,61,32, -108,78,111,100,101,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32, -45,45,32,101,110,100,32,116,97,103,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,108,111,99,97,108,32,116,111,99,108,111,115,101,32,61,32, -116,97,98,108,101,46,114,101,109,111,118,101,40,115,116,97,99,107,41,32, -45,45,32,114,101,109,111,118,101,32,116,111,112,13,10,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,116,111,112,32,61,32,115,116,97,99,107, -91,35,115,116,97,99,107,93,13,10,32,32,32,32,32,32,32,32,32,32, -32,32,105,102,32,35,115,116,97,99,107,32,60,32,49,32,116,104,101,110, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,114, -114,111,114,40,34,88,109,108,80,97,114,115,101,114,46,32,110,111,116,104, -105,110,103,32,116,111,32,99,108,111,115,101,32,119,105,116,104,32,34,32, -46,46,32,108,97,98,101,108,41,13,10,32,32,32,32,32,32,32,32,32, -32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -105,102,32,116,111,99,108,111,115,101,58,110,97,109,101,40,41,32,126,61, -32,108,97,98,101,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,88,109,108,80, -97,114,115,101,114,46,32,116,114,121,105,110,103,32,116,111,32,99,108,111, -115,101,32,34,32,46,46,32,116,111,99,108,111,115,101,46,110,97,109,101, -32,46,46,32,34,32,119,105,116,104,32,34,32,46,46,32,108,97,98,101, -108,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,112,58,97,100,100, -67,104,105,108,100,40,116,111,99,108,111,115,101,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,105,32,61, -32,106,32,43,32,49,13,10,32,32,32,32,101,110,100,13,10,32,32,32, -32,108,111,99,97,108,32,116,101,120,116,32,61,32,115,116,114,105,110,103, -46,115,117,98,40,120,109,108,84,101,120,116,44,32,105,41,59,13,10,32, -32,32,32,105,102,32,35,115,116,97,99,107,32,62,32,49,32,116,104,101, -110,13,10,32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,88,109, -108,80,97,114,115,101,114,46,32,117,110,99,108,111,115,101,100,32,34,32, -46,46,32,115,116,97,99,107,91,35,115,116,97,99,107,93,58,110,97,109, -101,40,41,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,114, +105,102,32,115,101,108,102,91,108,78,97,109,101,93,32,126,61,32,110,105, +108,32,116,104,101,110,13,10,32,32,32,32,32,32,105,102,32,116,121,112, +101,40,115,101,108,102,91,108,78,97,109,101,93,41,32,61,61,32,34,115, +116,114,105,110,103,34,32,116,104,101,110,13,10,32,32,32,32,32,32,32, +32,108,111,99,97,108,32,116,101,109,112,84,97,98,108,101,32,61,32,123, +125,13,10,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115, +101,114,116,40,116,101,109,112,84,97,98,108,101,44,32,115,101,108,102,91, +108,78,97,109,101,93,41,13,10,32,32,32,32,32,32,32,32,115,101,108, +102,91,108,78,97,109,101,93,32,61,32,116,101,109,112,84,97,98,108,101, +13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,116, +97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102,91,108,78,97, +109,101,93,44,32,118,97,108,117,101,41,13,10,32,32,32,32,101,108,115, +101,13,10,32,32,32,32,32,32,115,101,108,102,91,108,78,97,109,101,93, +32,61,32,118,97,108,117,101,13,10,32,32,32,32,101,110,100,13,10,32, +32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102, +46,95,95,95,112,114,111,112,115,44,32,123,32,110,97,109,101,32,61,32, +110,97,109,101,44,32,118,97,108,117,101,32,61,32,115,101,108,102,91,110, +97,109,101,93,32,125,41,13,10,32,32,101,110,100,13,10,13,10,32,32, +114,101,116,117,114,110,32,110,111,100,101,13,10,101,110,100,13,10,13,10, +102,117,110,99,116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,112, +97,114,115,101,88,109,108,84,101,120,116,40,120,109,108,84,101,120,116,41, +13,10,32,32,108,111,99,97,108,32,115,116,97,99,107,32,61,32,123,125, +13,10,32,32,108,111,99,97,108,32,116,111,112,32,61,32,110,101,119,78, +111,100,101,40,41,13,10,32,32,116,97,98,108,101,46,105,110,115,101,114, +116,40,115,116,97,99,107,44,32,116,111,112,41,13,10,32,32,108,111,99, +97,108,32,110,105,44,32,99,44,32,108,97,98,101,108,44,32,120,97,114, +103,44,32,101,109,112,116,121,13,10,32,32,108,111,99,97,108,32,105,44, +32,106,32,61,32,49,44,32,49,13,10,32,32,119,104,105,108,101,32,116, +114,117,101,32,100,111,13,10,32,32,32,32,110,105,44,32,106,44,32,99, +44,32,108,97,98,101,108,44,32,120,97,114,103,44,32,101,109,112,116,121, +32,61,32,115,116,114,105,110,103,46,102,105,110,100,40,120,109,108,84,101, +120,116,44,32,34,60,40,37,47,63,41,40,91,37,119,95,58,93,43,41, +40,46,45,41,40,37,47,63,41,62,34,44,32,105,41,13,10,32,32,32, +32,105,102,32,110,111,116,32,110,105,32,116,104,101,110,32,98,114,101,97, +107,32,101,110,100,13,10,32,32,32,32,108,111,99,97,108,32,116,101,120, +116,32,61,32,115,116,114,105,110,103,46,115,117,98,40,120,109,108,84,101, +120,116,44,32,105,44,32,110,105,32,45,32,49,41,59,13,10,32,32,32, +32,105,102,32,110,111,116,32,115,116,114,105,110,103,46,102,105,110,100,40, +116,101,120,116,44,32,34,94,37,115,42,36,34,41,32,116,104,101,110,13, +10,32,32,32,32,32,32,108,111,99,97,108,32,108,86,97,108,32,61,32, +40,116,111,112,58,118,97,108,117,101,40,41,32,111,114,32,34,34,41,32, +46,46,32,88,109,108,80,97,114,115,101,114,46,102,114,111,109,88,109,108, +83,116,114,105,110,103,40,116,101,120,116,41,13,10,32,32,32,32,32,32, +115,116,97,99,107,91,35,115,116,97,99,107,93,58,115,101,116,86,97,108, +117,101,40,108,86,97,108,41,13,10,32,32,32,32,101,110,100,13,10,32, +32,32,32,105,102,32,101,109,112,116,121,32,61,61,32,34,47,34,32,116, +104,101,110,32,45,45,32,101,109,112,116,121,32,101,108,101,109,101,110,116, +32,116,97,103,13,10,32,32,32,32,32,32,108,111,99,97,108,32,108,78, +111,100,101,32,61,32,110,101,119,78,111,100,101,40,108,97,98,101,108,41, +13,10,32,32,32,32,32,32,88,109,108,80,97,114,115,101,114,46,112,97, +114,115,101,65,114,103,115,40,108,78,111,100,101,44,32,120,97,114,103,41, +13,10,32,32,32,32,32,32,116,111,112,58,97,100,100,67,104,105,108,100, +40,108,78,111,100,101,41,13,10,32,32,32,32,101,108,115,101,105,102,32, +99,32,61,61,32,34,34,32,116,104,101,110,32,45,45,32,115,116,97,114, +116,32,116,97,103,13,10,32,32,32,32,32,32,108,111,99,97,108,32,108, +78,111,100,101,32,61,32,110,101,119,78,111,100,101,40,108,97,98,101,108, +41,13,10,32,32,32,32,32,32,88,109,108,80,97,114,115,101,114,46,112, +97,114,115,101,65,114,103,115,40,108,78,111,100,101,44,32,120,97,114,103, +41,13,10,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114, +116,40,115,116,97,99,107,44,32,108,78,111,100,101,41,13,10,9,116,111, +112,32,61,32,108,78,111,100,101,13,10,32,32,32,32,101,108,115,101,32, +45,45,32,101,110,100,32,116,97,103,13,10,32,32,32,32,32,32,108,111, +99,97,108,32,116,111,99,108,111,115,101,32,61,32,116,97,98,108,101,46, +114,101,109,111,118,101,40,115,116,97,99,107,41,32,45,45,32,114,101,109, +111,118,101,32,116,111,112,13,10,13,10,32,32,32,32,32,32,116,111,112, +32,61,32,115,116,97,99,107,91,35,115,116,97,99,107,93,13,10,32,32, +32,32,32,32,105,102,32,35,115,116,97,99,107,32,60,32,49,32,116,104, +101,110,13,10,32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,88, +109,108,80,97,114,115,101,114,46,32,110,111,116,104,105,110,103,32,116,111, +32,99,108,111,115,101,32,119,105,116,104,32,34,32,46,46,32,108,97,98, +101,108,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32, +32,32,105,102,32,116,111,99,108,111,115,101,58,110,97,109,101,40,41,32, +126,61,32,108,97,98,101,108,32,116,104,101,110,13,10,32,32,32,32,32, +32,32,32,101,114,114,111,114,40,34,88,109,108,80,97,114,115,101,114,46, +32,116,114,121,105,110,103,32,116,111,32,99,108,111,115,101,32,34,32,46, +46,32,116,111,99,108,111,115,101,46,110,97,109,101,32,46,46,32,34,32, +119,105,116,104,32,34,32,46,46,32,108,97,98,101,108,41,13,10,32,32, +32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,116,111,112,58,97, +100,100,67,104,105,108,100,40,116,111,99,108,111,115,101,41,13,10,32,32, +32,32,101,110,100,13,10,32,32,32,32,105,32,61,32,106,32,43,32,49, +13,10,32,32,101,110,100,13,10,32,32,108,111,99,97,108,32,116,101,120, +116,32,61,32,115,116,114,105,110,103,46,115,117,98,40,120,109,108,84,101, +120,116,44,32,105,41,59,13,10,32,32,105,102,32,35,115,116,97,99,107, +32,62,32,49,32,116,104,101,110,13,10,32,32,32,32,101,114,114,111,114, +40,34,88,109,108,80,97,114,115,101,114,46,32,117,110,99,108,111,115,101, +100,32,34,32,46,46,32,115,116,97,99,107,91,35,115,116,97,99,107,93, +58,110,97,109,101,40,41,41,13,10,32,32,101,110,100,13,10,32,32,114, 101,116,117,114,110,32,116,111,112,13,10,101,110,100,13,10,13,10,102,117, 110,99,116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,108,111,97, 100,70,105,108,101,40,120,109,108,70,105,108,101,110,97,109,101,44,32,98, -97,115,101,41,13,10,32,32,32,32,105,102,32,110,111,116,32,98,97,115, -101,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,98,97,115,101, -32,61,32,115,121,115,116,101,109,46,82,101,115,111,117,114,99,101,68,105, -114,101,99,116,111,114,121,13,10,32,32,32,32,101,110,100,13,10,13,10, -32,32,32,32,108,111,99,97,108,32,112,97,116,104,32,61,32,115,121,115, -116,101,109,46,112,97,116,104,70,111,114,70,105,108,101,40,120,109,108,70, -105,108,101,110,97,109,101,44,32,98,97,115,101,41,13,10,32,32,32,32, -108,111,99,97,108,32,104,70,105,108,101,44,32,101,114,114,32,61,32,105, -111,46,111,112,101,110,40,112,97,116,104,44,32,34,114,34,41,59,13,10, -13,10,32,32,32,32,105,102,32,104,70,105,108,101,32,97,110,100,32,110, -111,116,32,101,114,114,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,108,111,99,97,108,32,120,109,108,84,101,120,116,32,61,32,104,70,105, -108,101,58,114,101,97,100,40,34,42,97,34,41,59,32,45,45,32,114,101, -97,100,32,102,105,108,101,32,99,111,110,116,101,110,116,13,10,32,32,32, -32,32,32,32,32,105,111,46,99,108,111,115,101,40,104,70,105,108,101,41, -59,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,88,109, -108,80,97,114,115,101,114,46,112,97,114,115,101,88,109,108,84,101,120,116, -40,120,109,108,84,101,120,116,41,44,32,110,105,108,59,13,10,32,32,32, -32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,112,114,105,110,116, -40,101,114,114,41,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114, -110,32,110,105,108,13,10,32,32,32,32,101,110,100,13,10,101,110,100,13, -10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +97,115,101,41,13,10,32,32,105,102,32,110,111,116,32,98,97,115,101,32, +116,104,101,110,13,10,32,32,32,32,98,97,115,101,32,61,32,115,121,115, +116,101,109,46,82,101,115,111,117,114,99,101,68,105,114,101,99,116,111,114, +121,13,10,32,32,101,110,100,13,10,13,10,32,32,108,111,99,97,108,32, +112,97,116,104,32,61,32,115,121,115,116,101,109,46,112,97,116,104,70,111, +114,70,105,108,101,40,120,109,108,70,105,108,101,110,97,109,101,44,32,98, +97,115,101,41,13,10,32,32,108,111,99,97,108,32,104,70,105,108,101,44, +32,101,114,114,32,61,32,105,111,46,111,112,101,110,40,112,97,116,104,44, +32,34,114,34,41,59,13,10,13,10,32,32,105,102,32,104,70,105,108,101, +32,97,110,100,32,110,111,116,32,101,114,114,32,116,104,101,110,13,10,32, +32,32,32,108,111,99,97,108,32,120,109,108,84,101,120,116,32,61,32,104, +70,105,108,101,58,114,101,97,100,40,34,42,97,34,41,59,32,45,45,32, +114,101,97,100,32,102,105,108,101,32,99,111,110,116,101,110,116,13,10,32, +32,32,32,105,111,46,99,108,111,115,101,40,104,70,105,108,101,41,59,13, +10,32,32,32,32,114,101,116,117,114,110,32,88,109,108,80,97,114,115,101, +114,46,112,97,114,115,101,88,109,108,84,101,120,116,40,120,109,108,84,101, +120,116,41,44,32,110,105,108,59,13,10,32,32,101,108,115,101,13,10,32, +32,32,32,112,114,105,110,116,40,101,114,114,41,13,10,32,32,32,32,114, +101,116,117,114,110,32,110,105,108,13,10,32,32,101,110,100,13,10,101,110, +100,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45, -45,32,69,120,112,111,114,116,32,116,111,32,74,105,110,46,32,13,10,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13, +10,45,45,32,69,120,112,111,114,116,32,116,111,32,74,105,110,46,32,13, +10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,106,105,110, -46,117,116,105,108,115,46,120,109,108,32,61,32,88,109,108,80,97,114,115, -101,114,0 +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,106, +105,110,46,117,116,105,108,115,46,120,109,108,32,61,32,88,109,108,80,97, +114,115,101,114,0 }; |