diff --git a/src/love.cpp b/src/love.cpp index 1b0618faf..6e7e05804 100644 --- a/src/love.cpp +++ b/src/love.cpp @@ -67,18 +67,18 @@ static const luaL_Reg modules[] = { { "love.audio", love::audio::luaopen_love_audio }, - { "love.event", love::event::sdl::luaopen_love_event }, - { "love.filesystem", love::filesystem::physfs::luaopen_love_filesystem }, - { "love.font", love::font::freetype::luaopen_love_font }, - { "love.graphics", love::graphics::opengl::luaopen_love_graphics }, + { "love.event.sdl", love::event::sdl::luaopen_love_event }, + { "love.filesystem.physfs", love::filesystem::physfs::luaopen_love_filesystem }, + { "love.font.freetype", love::font::freetype::luaopen_love_font }, + { "love.graphics.opengl", love::graphics::opengl::luaopen_love_graphics }, { "love.image", love::image::luaopen_love_image }, - { "love.joystick", love::joystick::sdl::luaopen_love_joystick }, - { "love.keyboard", love::keyboard::sdl::luaopen_love_keyboard }, - { "love.mouse", love::mouse::sdl::luaopen_love_mouse }, - { "love.physics", love::physics::box2d::luaopen_love_physics }, + { "love.joystick.sdl", love::joystick::sdl::luaopen_love_joystick }, + { "love.keyboard.sdl", love::keyboard::sdl::luaopen_love_keyboard }, + { "love.mouse.sdl", love::mouse::sdl::luaopen_love_mouse }, + { "love.physics.box2d", love::physics::box2d::luaopen_love_physics }, { "love.sound", love::sound::luaopen_love_sound }, - { "love.timer", love::timer::sdl::luaopen_love_timer }, - { "love.thread", love::thread::sdl::luaopen_love_thread }, + { "love.timer.sdl", love::timer::sdl::luaopen_love_timer }, + { "love.thread.sdl", love::thread::sdl::luaopen_love_thread }, { 0, 0 } }; diff --git a/src/scripts/boot.lua b/src/scripts/boot.lua index fe129622a..e5d8f2e5b 100644 --- a/src/scripts/boot.lua +++ b/src/scripts/boot.lua @@ -187,7 +187,7 @@ function love.boot() -- This is absolutely needed. require("love") - require("love.filesystem") + require("love.filesystem.physfs") love.arg.parse_options() @@ -275,10 +275,29 @@ function love.init() c.console = true end + local defaultmodules = { + audio = false, + event = "sdl", + filesystem = "physfs", + font = "freetype", + graphics = "opengl", + image = false, + joystick = "sdl", + keyboard = "sdl", + mouse = "sdl", + physics = "box2d", + sound = false, + timer = "sdl", + thread = "sdl" + } + -- Gets desired modules. for k,v in pairs(c.modules) do if v then - require("love." .. k) + if type(v) ~= "string" then + v = defaultmodules[k] + end + require((v and "love.%s.%s" or "love.%s"):format(k, v)) end end diff --git a/src/scripts/boot.lua.h b/src/scripts/boot.lua.h index c5042cd1b..429c0c24f 100644 --- a/src/scripts/boot.lua.h +++ b/src/scripts/boot.lua.h @@ -174,106 +174,129 @@ const unsigned char boot_lua[] = 0x74,0x69,0x6F,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x62,0x6F,0x6F,0x74,0x28, 0x29,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x6C,0x6F,0x76,0x65, 0x22,0x29,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x6C,0x6F,0x76, - 0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x22,0x29,0x20, - 0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x70,0x61,0x72,0x73,0x65,0x5F, - 0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x28,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C, - 0x20,0x6F,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x6F, - 0x70,0x74,0x69,0x6F,0x6E,0x73,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x61,0x72, - 0x67,0x30,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x67, - 0x65,0x74,0x4C,0x6F,0x77,0x28,0x61,0x72,0x67,0x29,0x20,0x6C,0x6F,0x76,0x65, - 0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x69,0x6E,0x69, - 0x74,0x28,0x61,0x72,0x67,0x30,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x63, - 0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x3D,0x20,0x70, - 0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73, - 0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,0x74,0x53,0x6F,0x75,0x72,0x63,0x65, - 0x2C,0x20,0x61,0x72,0x67,0x30,0x29,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20, - 0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x61,0x6E, - 0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65,0x2E,0x73,0x65,0x74,0x20,0x61,0x6E, - 0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65,0x2E,0x61,0x72,0x67,0x5B,0x31,0x5D, - 0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x66,0x75,0x6C, - 0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65, - 0x2E,0x70,0x61,0x74,0x68,0x2E,0x67,0x65,0x74,0x66,0x75,0x6C,0x6C,0x28,0x6F, - 0x2E,0x67,0x61,0x6D,0x65,0x2E,0x61,0x72,0x67,0x5B,0x31,0x5D,0x29,0x20,0x6C, - 0x6F,0x63,0x61,0x6C,0x20,0x6C,0x65,0x61,0x66,0x20,0x3D,0x20,0x6C,0x6F,0x76, - 0x65,0x2E,0x70,0x61,0x74,0x68,0x2E,0x6C,0x65,0x61,0x66,0x28,0x66,0x75,0x6C, - 0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E, - 0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,0x74,0x49, - 0x64,0x65,0x6E,0x74,0x69,0x74,0x79,0x28,0x6C,0x65,0x61,0x66,0x29,0x20,0x63, - 0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x3D,0x20,0x70, - 0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73, - 0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,0x74,0x53,0x6F,0x75,0x72,0x63,0x65, - 0x2C,0x20,0x66,0x75,0x6C,0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,0x29,0x20, - 0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F, - 0x67,0x61,0x6D,0x65,0x20,0x61,0x6E,0x64,0x20,0x6E,0x6F,0x74,0x20,0x28,0x6C, + 0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x70,0x68, + 0x79,0x73,0x66,0x73,0x22,0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67, + 0x2E,0x70,0x61,0x72,0x73,0x65,0x5F,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x28, + 0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6F,0x20,0x3D,0x20,0x6C,0x6F,0x76, + 0x65,0x2E,0x61,0x72,0x67,0x2E,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x20,0x6C, + 0x6F,0x63,0x61,0x6C,0x20,0x61,0x72,0x67,0x30,0x20,0x3D,0x20,0x6C,0x6F,0x76, + 0x65,0x2E,0x61,0x72,0x67,0x2E,0x67,0x65,0x74,0x4C,0x6F,0x77,0x28,0x61,0x72, + 0x67,0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73, + 0x74,0x65,0x6D,0x2E,0x69,0x6E,0x69,0x74,0x28,0x61,0x72,0x67,0x30,0x29,0x20, + 0x6C,0x6F,0x63,0x61,0x6C,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67, + 0x61,0x6D,0x65,0x20,0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76, + 0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65, + 0x74,0x53,0x6F,0x75,0x72,0x63,0x65,0x2C,0x20,0x61,0x72,0x67,0x30,0x29,0x20, + 0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F, + 0x67,0x61,0x6D,0x65,0x20,0x61,0x6E,0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65, + 0x2E,0x73,0x65,0x74,0x20,0x61,0x6E,0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65, + 0x2E,0x61,0x72,0x67,0x5B,0x31,0x5D,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F, + 0x63,0x61,0x6C,0x20,0x66,0x75,0x6C,0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65, + 0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x70,0x61,0x74,0x68,0x2E,0x67,0x65, + 0x74,0x66,0x75,0x6C,0x6C,0x28,0x6F,0x2E,0x67,0x61,0x6D,0x65,0x2E,0x61,0x72, + 0x67,0x5B,0x31,0x5D,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6C,0x65,0x61, + 0x66,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x70,0x61,0x74,0x68,0x2E,0x6C, + 0x65,0x61,0x66,0x28,0x66,0x75,0x6C,0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65, + 0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74, + 0x65,0x6D,0x2E,0x73,0x65,0x74,0x49,0x64,0x65,0x6E,0x74,0x69,0x74,0x79,0x28, + 0x6C,0x65,0x61,0x66,0x29,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67, + 0x61,0x6D,0x65,0x20,0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76, + 0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65, + 0x74,0x53,0x6F,0x75,0x72,0x63,0x65,0x2C,0x20,0x66,0x75,0x6C,0x6C,0x5F,0x73, + 0x6F,0x75,0x72,0x63,0x65,0x29,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x63, + 0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x61,0x6E,0x64, + 0x20,0x6E,0x6F,0x74,0x20,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65, + 0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22, + 0x6D,0x61,0x69,0x6E,0x2E,0x6C,0x75,0x61,0x22,0x29,0x20,0x6F,0x72,0x20,0x6C, 0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E, - 0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22,0x6D,0x61,0x69,0x6E,0x2E,0x6C,0x75, - 0x61,0x22,0x29,0x20,0x6F,0x72,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C, - 0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x65,0x78,0x69,0x73,0x74,0x73,0x28, - 0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29,0x29,0x20,0x74,0x68, - 0x65,0x6E,0x20,0x6E,0x6F,0x5F,0x67,0x61,0x6D,0x65,0x5F,0x63,0x6F,0x64,0x65, - 0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20, - 0x6E,0x6F,0x74,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D, - 0x65,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x6E,0x6F,0x67, - 0x61,0x6D,0x65,0x28,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x66, - 0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x69,0x6E, - 0x69,0x74,0x28,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x63,0x20,0x3D,0x20, - 0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20,0x3D,0x20,0x22,0x55,0x6E,0x74,0x69, - 0x74,0x6C,0x65,0x64,0x22,0x2C,0x20,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x3D, - 0x20,0x22,0x55,0x6E,0x6E,0x61,0x6D,0x65,0x64,0x22,0x2C,0x20,0x76,0x65,0x72, - 0x73,0x69,0x6F,0x6E,0x20,0x3D,0x20,0x30,0x2C,0x20,0x73,0x63,0x72,0x65,0x65, - 0x6E,0x20,0x3D,0x20,0x7B,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3D,0x20,0x38, - 0x30,0x30,0x2C,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3D,0x20,0x36,0x30, - 0x30,0x2C,0x20,0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x3D, - 0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x76,0x73,0x79,0x6E,0x63,0x20,0x3D, - 0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x66,0x73,0x61,0x61,0x20,0x3D,0x20,0x30, - 0x2C,0x20,0x7D,0x2C,0x20,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73,0x20,0x3D,0x20, - 0x7B,0x20,0x65,0x76,0x65,0x6E,0x74,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C, - 0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x20,0x3D,0x20,0x74,0x72,0x75, - 0x65,0x2C,0x20,0x6D,0x6F,0x75,0x73,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65, - 0x2C,0x20,0x74,0x69,0x6D,0x65,0x72,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C, - 0x20,0x6A,0x6F,0x79,0x73,0x74,0x69,0x63,0x6B,0x20,0x3D,0x20,0x74,0x72,0x75, - 0x65,0x2C,0x20,0x69,0x6D,0x61,0x67,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65, - 0x2C,0x20,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x20,0x3D,0x20,0x74,0x72, - 0x75,0x65,0x2C,0x20,0x61,0x75,0x64,0x69,0x6F,0x20,0x3D,0x20,0x74,0x72,0x75, - 0x65,0x2C,0x20,0x70,0x68,0x79,0x73,0x69,0x63,0x73,0x20,0x3D,0x20,0x74,0x72, - 0x75,0x65,0x2C,0x20,0x73,0x6F,0x75,0x6E,0x64,0x20,0x3D,0x20,0x74,0x72,0x75, - 0x65,0x2C,0x20,0x66,0x6F,0x6E,0x74,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C, - 0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C, - 0x20,0x7D,0x2C,0x20,0x63,0x6F,0x6E,0x73,0x6F,0x6C,0x65,0x20,0x3D,0x20,0x66, - 0x61,0x6C,0x73,0x65,0x2C,0x20,0x69,0x64,0x65,0x6E,0x74,0x69,0x74,0x79,0x20, - 0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x72,0x65,0x6C,0x65,0x61,0x73, - 0x65,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x7D,0x20,0x69,0x66, - 0x20,0x6E,0x6F,0x74,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,0x6E,0x66,0x20, - 0x61,0x6E,0x64,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79, - 0x73,0x74,0x65,0x6D,0x20,0x61,0x6E,0x64,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66, - 0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x65,0x78,0x69,0x73,0x74, - 0x73,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29,0x20,0x74, - 0x68,0x65,0x6E,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x63,0x6F, - 0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29,0x20,0x65,0x6E,0x64,0x20,0x69,0x66, - 0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,0x6E,0x66,0x20,0x74,0x68,0x65,0x6E, - 0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6F,0x6B,0x2C,0x20,0x65,0x72,0x72,0x20, - 0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F, - 0x6E,0x66,0x2C,0x20,0x63,0x29,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x6F, - 0x6B,0x20,0x74,0x68,0x65,0x6E,0x20,0x70,0x72,0x69,0x6E,0x74,0x28,0x65,0x72, - 0x72,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x63, - 0x2E,0x72,0x65,0x6C,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C, - 0x6F,0x76,0x65,0x2E,0x5F,0x72,0x65,0x6C,0x65,0x61,0x73,0x65,0x20,0x3D,0x20, - 0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20,0x3D,0x20,0x63,0x2E,0x74,0x69,0x74, - 0x6C,0x65,0x20,0x7E,0x3D,0x20,0x22,0x55,0x6E,0x74,0x69,0x74,0x6C,0x65,0x64, - 0x22,0x20,0x61,0x6E,0x64,0x20,0x63,0x2E,0x74,0x69,0x74,0x6C,0x65,0x20,0x6F, - 0x72,0x20,0x6E,0x69,0x6C,0x2C,0x20,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x3D, - 0x20,0x63,0x2E,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x7E,0x3D,0x20,0x22,0x55, - 0x6E,0x6E,0x61,0x6D,0x65,0x64,0x22,0x20,0x61,0x6E,0x64,0x20,0x63,0x2E,0x61, - 0x75,0x74,0x68,0x6F,0x72,0x20,0x6F,0x72,0x20,0x6E,0x69,0x6C,0x20,0x7D,0x20, - 0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67, - 0x2E,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x2E,0x63,0x6F,0x6E,0x73,0x6F,0x6C, - 0x65,0x2E,0x73,0x65,0x74,0x20,0x74,0x68,0x65,0x6E,0x20,0x63,0x2E,0x63,0x6F, - 0x6E,0x73,0x6F,0x6C,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x20,0x65,0x6E, - 0x64,0x20,0x66,0x6F,0x72,0x20,0x6B,0x2C,0x76,0x20,0x69,0x6E,0x20,0x70,0x61, - 0x69,0x72,0x73,0x28,0x63,0x2E,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73,0x29,0x20, - 0x64,0x6F,0x20,0x69,0x66,0x20,0x76,0x20,0x74,0x68,0x65,0x6E,0x20,0x72,0x65, - 0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x6C,0x6F,0x76,0x65,0x2E,0x22,0x20,0x2E, - 0x2E,0x20,0x6B,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x69,0x66, + 0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75, + 0x61,0x22,0x29,0x29,0x20,0x74,0x68,0x65,0x6E,0x20,0x6E,0x6F,0x5F,0x67,0x61, + 0x6D,0x65,0x5F,0x63,0x6F,0x64,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x20, + 0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x63,0x61,0x6E,0x5F, + 0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C, + 0x6F,0x76,0x65,0x2E,0x6E,0x6F,0x67,0x61,0x6D,0x65,0x28,0x29,0x20,0x65,0x6E, + 0x64,0x20,0x65,0x6E,0x64,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20, + 0x6C,0x6F,0x76,0x65,0x2E,0x69,0x6E,0x69,0x74,0x28,0x29,0x20,0x6C,0x6F,0x63, + 0x61,0x6C,0x20,0x63,0x20,0x3D,0x20,0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20, + 0x3D,0x20,0x22,0x55,0x6E,0x74,0x69,0x74,0x6C,0x65,0x64,0x22,0x2C,0x20,0x61, + 0x75,0x74,0x68,0x6F,0x72,0x20,0x3D,0x20,0x22,0x55,0x6E,0x6E,0x61,0x6D,0x65, + 0x64,0x22,0x2C,0x20,0x76,0x65,0x72,0x73,0x69,0x6F,0x6E,0x20,0x3D,0x20,0x30, + 0x2C,0x20,0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x3D,0x20,0x7B,0x20,0x77,0x69, + 0x64,0x74,0x68,0x20,0x3D,0x20,0x38,0x30,0x30,0x2C,0x20,0x68,0x65,0x69,0x67, + 0x68,0x74,0x20,0x3D,0x20,0x36,0x30,0x30,0x2C,0x20,0x66,0x75,0x6C,0x6C,0x73, + 0x63,0x72,0x65,0x65,0x6E,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20, + 0x76,0x73,0x79,0x6E,0x63,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x66, + 0x73,0x61,0x61,0x20,0x3D,0x20,0x30,0x2C,0x20,0x7D,0x2C,0x20,0x6D,0x6F,0x64, + 0x75,0x6C,0x65,0x73,0x20,0x3D,0x20,0x7B,0x20,0x65,0x76,0x65,0x6E,0x74,0x20, + 0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72, + 0x64,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x6D,0x6F,0x75,0x73,0x65, + 0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x74,0x69,0x6D,0x65,0x72,0x20, + 0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x6A,0x6F,0x79,0x73,0x74,0x69,0x63, + 0x6B,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x69,0x6D,0x61,0x67,0x65, + 0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x67,0x72,0x61,0x70,0x68,0x69, + 0x63,0x73,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x61,0x75,0x64,0x69, + 0x6F,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x70,0x68,0x79,0x73,0x69, + 0x63,0x73,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x73,0x6F,0x75,0x6E, + 0x64,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x66,0x6F,0x6E,0x74,0x20, + 0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20, + 0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x7D,0x2C,0x20,0x63,0x6F,0x6E,0x73, + 0x6F,0x6C,0x65,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x69,0x64, + 0x65,0x6E,0x74,0x69,0x74,0x79,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C, + 0x20,0x72,0x65,0x6C,0x65,0x61,0x73,0x65,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73, + 0x65,0x2C,0x20,0x7D,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x6C,0x6F,0x76, + 0x65,0x2E,0x63,0x6F,0x6E,0x66,0x20,0x61,0x6E,0x64,0x20,0x6C,0x6F,0x76,0x65, + 0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x20,0x61,0x6E,0x64, + 0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65, + 0x6D,0x2E,0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E, + 0x6C,0x75,0x61,0x22,0x29,0x20,0x74,0x68,0x65,0x6E,0x20,0x72,0x65,0x71,0x75, + 0x69,0x72,0x65,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29, + 0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F, + 0x6E,0x66,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6F, + 0x6B,0x2C,0x20,0x65,0x72,0x72,0x20,0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28, + 0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,0x6E,0x66,0x2C,0x20,0x63,0x29,0x20,0x69, + 0x66,0x20,0x6E,0x6F,0x74,0x20,0x6F,0x6B,0x20,0x74,0x68,0x65,0x6E,0x20,0x70, + 0x72,0x69,0x6E,0x74,0x28,0x65,0x72,0x72,0x29,0x20,0x65,0x6E,0x64,0x20,0x65, + 0x6E,0x64,0x20,0x69,0x66,0x20,0x63,0x2E,0x72,0x65,0x6C,0x65,0x61,0x73,0x65, + 0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x5F,0x72,0x65,0x6C, + 0x65,0x61,0x73,0x65,0x20,0x3D,0x20,0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20, + 0x3D,0x20,0x63,0x2E,0x74,0x69,0x74,0x6C,0x65,0x20,0x7E,0x3D,0x20,0x22,0x55, + 0x6E,0x74,0x69,0x74,0x6C,0x65,0x64,0x22,0x20,0x61,0x6E,0x64,0x20,0x63,0x2E, + 0x74,0x69,0x74,0x6C,0x65,0x20,0x6F,0x72,0x20,0x6E,0x69,0x6C,0x2C,0x20,0x61, + 0x75,0x74,0x68,0x6F,0x72,0x20,0x3D,0x20,0x63,0x2E,0x61,0x75,0x74,0x68,0x6F, + 0x72,0x20,0x7E,0x3D,0x20,0x22,0x55,0x6E,0x6E,0x61,0x6D,0x65,0x64,0x22,0x20, + 0x61,0x6E,0x64,0x20,0x63,0x2E,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x6F,0x72, + 0x20,0x6E,0x69,0x6C,0x20,0x7D,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6C, + 0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73, + 0x2E,0x63,0x6F,0x6E,0x73,0x6F,0x6C,0x65,0x2E,0x73,0x65,0x74,0x20,0x74,0x68, + 0x65,0x6E,0x20,0x63,0x2E,0x63,0x6F,0x6E,0x73,0x6F,0x6C,0x65,0x20,0x3D,0x20, + 0x74,0x72,0x75,0x65,0x20,0x65,0x6E,0x64,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20, + 0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73,0x20, + 0x3D,0x20,0x7B,0x20,0x61,0x75,0x64,0x69,0x6F,0x20,0x3D,0x20,0x66,0x61,0x6C, + 0x73,0x65,0x2C,0x20,0x65,0x76,0x65,0x6E,0x74,0x20,0x3D,0x20,0x22,0x73,0x64, + 0x6C,0x22,0x2C,0x20,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x20, + 0x3D,0x20,0x22,0x70,0x68,0x79,0x73,0x66,0x73,0x22,0x2C,0x20,0x66,0x6F,0x6E, + 0x74,0x20,0x3D,0x20,0x22,0x66,0x72,0x65,0x65,0x74,0x79,0x70,0x65,0x22,0x2C, + 0x20,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x20,0x3D,0x20,0x22,0x6F,0x70, + 0x65,0x6E,0x67,0x6C,0x22,0x2C,0x20,0x69,0x6D,0x61,0x67,0x65,0x20,0x3D,0x20, + 0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x6A,0x6F,0x79,0x73,0x74,0x69,0x63,0x6B, + 0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22,0x2C,0x20,0x6B,0x65,0x79,0x62,0x6F, + 0x61,0x72,0x64,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22,0x2C,0x20,0x6D,0x6F, + 0x75,0x73,0x65,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22,0x2C,0x20,0x70,0x68, + 0x79,0x73,0x69,0x63,0x73,0x20,0x3D,0x20,0x22,0x62,0x6F,0x78,0x32,0x64,0x22, + 0x2C,0x20,0x73,0x6F,0x75,0x6E,0x64,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65, + 0x2C,0x20,0x74,0x69,0x6D,0x65,0x72,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22, + 0x2C,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C, + 0x22,0x20,0x7D,0x20,0x66,0x6F,0x72,0x20,0x6B,0x2C,0x76,0x20,0x69,0x6E,0x20, + 0x70,0x61,0x69,0x72,0x73,0x28,0x63,0x2E,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73, + 0x29,0x20,0x64,0x6F,0x20,0x69,0x66,0x20,0x76,0x20,0x74,0x68,0x65,0x6E,0x20, + 0x69,0x66,0x20,0x74,0x79,0x70,0x65,0x28,0x76,0x29,0x20,0x7E,0x3D,0x20,0x22, + 0x73,0x74,0x72,0x69,0x6E,0x67,0x22,0x20,0x74,0x68,0x65,0x6E,0x20,0x76,0x20, + 0x3D,0x20,0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x6D,0x6F,0x64,0x75,0x6C,0x65, + 0x73,0x5B,0x6B,0x5D,0x20,0x65,0x6E,0x64,0x20,0x72,0x65,0x71,0x75,0x69,0x72, + 0x65,0x28,0x28,0x76,0x20,0x61,0x6E,0x64,0x20,0x22,0x6C,0x6F,0x76,0x65,0x2E, + 0x25,0x73,0x2E,0x25,0x73,0x22,0x20,0x6F,0x72,0x20,0x22,0x6C,0x6F,0x76,0x65, + 0x2E,0x25,0x73,0x22,0x29,0x3A,0x66,0x6F,0x72,0x6D,0x61,0x74,0x28,0x6B,0x2C, + 0x20,0x76,0x29,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x69,0x66, 0x20,0x6C,0x6F,0x76,0x65,0x2E,0x65,0x76,0x65,0x6E,0x74,0x20,0x74,0x68,0x65, 0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x72,0x65,0x61,0x74,0x65,0x68,0x61, 0x6E,0x64,0x6C,0x65,0x72,0x73,0x28,0x29,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,