pax_global_header00006660000000000000000000000064132166067350014523gustar00rootroot0000000000000052 comment=61f0f7c2e71bc9e39f551769c61d5976b3530bab CorsixTH-0.61/000077500000000000000000000000001321660673500131545ustar00rootroot00000000000000CorsixTH-0.61/.gitattributes000066400000000000000000000101021321660673500160410ustar00rootroot00000000000000* text=auto !eol AnimView/AnimView.ico -text AnimView/Icon.icns -text CorsixTH/Bitmap/aux_ui.dat -text svneol=unset#unset CorsixTH/Bitmap/aux_ui.tab -text CorsixTH/Bitmap/bootstrap_font.bmp -text CorsixTH/Bitmap/bootstrap_font.dat -text svneol=unset#application/octet-stream CorsixTH/Bitmap/bootstrap_font.pal -text CorsixTH/Bitmap/bootstrap_font.tab -text CorsixTH/Bitmap/build_room_dialog_close.bmp -text CorsixTH/Bitmap/flag_buildable.bmp -text CorsixTH/Bitmap/flag_hospital.bmp -text CorsixTH/Bitmap/flag_passable.bmp -text CorsixTH/Bitmap/flag_travel_east.bmp -text CorsixTH/Bitmap/flag_travel_north.bmp -text CorsixTH/Bitmap/flag_travel_south.bmp -text CorsixTH/Bitmap/flag_travel_west.bmp -text CorsixTH/Bitmap/fullscreen_border_bottom.bmp -text CorsixTH/Bitmap/fullscreen_border_bottomleft.bmp -text CorsixTH/Bitmap/fullscreen_border_bottomright.bmp -text CorsixTH/Bitmap/fullscreen_border_left.bmp -text CorsixTH/Bitmap/fullscreen_border_right.bmp -text CorsixTH/Bitmap/fullscreen_border_top.bmp -text CorsixTH/Bitmap/fullscreen_border_topleft.bmp -text CorsixTH/Bitmap/fullscreen_border_topright.bmp -text CorsixTH/Bitmap/mainmenu1080.bmp -text CorsixTH/Bitmap/mainmenu1080.dat -text svneol=unset#application/octet-stream CorsixTH/Bitmap/mainmenu1080.pal -text CorsixTH/Bitmap/map_cell_outline.bmp -text CorsixTH/Bitmap/map_cell_outline_east.bmp -text CorsixTH/Bitmap/map_cell_outline_north.bmp -text CorsixTH/Bitmap/map_cell_outline_south.bmp -text CorsixTH/Bitmap/map_cell_outline_west.bmp -text CorsixTH/Bitmap/tree_collapsed.bmp -text CorsixTH/Bitmap/tree_ctrl.dat -text CorsixTH/Bitmap/tree_ctrl.pal -text CorsixTH/Bitmap/tree_ctrl.tab -text CorsixTH/Bitmap/tree_expanded.bmp -text CorsixTH/Bitmap/tree_leaf.bmp -text CorsixTH/Bitmap/tree_level.bmp -text CorsixTH/CorsixTH.ico -text CorsixTH/Icon.icns -text CorsixTH/Levels/Example.map -text CorsixTH/Levels/avatar.map -text CorsixTH/Levels/confined_v5.map -text CorsixTH/Levels/finisham.map -text CorsixTH/Levels/original08.level -text CorsixTH/Lua/dialogs/resizables/customise.lua -text CorsixTH/Lua/dialogs/resizables/folder_settings.lua -text CorsixTH/Lua/dialogs/resizables/update.lua -text CorsixTH/Lua/languages/hungarian.lua -text CorsixTH/Lua/languages/korean.lua -text CorsixTH/RequiredResources.txt -text CorsixTH/__MACOSX/SDLMain/._SDLMain.m -text LDocGen/output/corner_right.gif -text LDocGen/output/logo.png -text LPEG/lpeg-128.gif -text LevelEdit/.classpath -text LevelEdit/.project -text LevelEdit/.settings/org.eclipse.jdt.core.prefs -text LevelEdit/MiGLayout-License.txt -text LevelEdit/README.txt -text LevelEdit/miglayout-4.0-swing.jar -text LevelEdit/src/com/corsixth/leveledit/Disease.java -text LevelEdit/src/com/corsixth/leveledit/Emergency.java -text LevelEdit/src/com/corsixth/leveledit/FileChooser.java -text LevelEdit/src/com/corsixth/leveledit/Gui.java -text LevelEdit/src/com/corsixth/leveledit/Main.java -text LevelEdit/src/com/corsixth/leveledit/Menu.java -text LevelEdit/src/com/corsixth/leveledit/Population.java -text LevelEdit/src/com/corsixth/leveledit/Quake.java -text LevelEdit/src/com/corsixth/leveledit/ReaderWriter.java -text LevelEdit/src/com/corsixth/leveledit/StaffLevels.java -text LevelEdit/src/com/corsixth/leveledit/StartStaff.java -text LevelEdit/src/com/corsixth/leveledit/TabAwards.java -text LevelEdit/src/com/corsixth/leveledit/TabBar.java -text LevelEdit/src/com/corsixth/leveledit/TabDiseases.java -text LevelEdit/src/com/corsixth/leveledit/TabEarthquakes.java -text LevelEdit/src/com/corsixth/leveledit/TabEmergencies.java -text LevelEdit/src/com/corsixth/leveledit/TabGeneral.java -text LevelEdit/src/com/corsixth/leveledit/TabGoals.java -text LevelEdit/src/com/corsixth/leveledit/TabObjects.java -text LevelEdit/src/com/corsixth/leveledit/TabPopulation.java -text LevelEdit/src/com/corsixth/leveledit/TabStaff.java -text LevelEdit/src/com/corsixth/leveledit/VarManipulator.java -text LevelEdit/src/icon128.png -text LevelEdit/src/icon16.png -text LevelEdit/src/icon24.png -text LevelEdit/src/icon256.png -text LevelEdit/src/icon32.png -text LevelEdit/src/icon48.png -text LevelEdit/src/icon64.png -text WindowsInstaller/welcome.bmp -text CorsixTH-0.61/.github/000077500000000000000000000000001321660673500145145ustar00rootroot00000000000000CorsixTH-0.61/.github/ISSUE_TEMPLATE.md000066400000000000000000000024401321660673500172210ustar00rootroot00000000000000#### Describe the issue #### Steps to Reproduce 1. *Load save game attached to this ticket* 2. 3. #### Save Game *It is often useful for us if you have a save game from shortly before the issue occurs that can be used to recreate the problem. Sometimes a save that shows the issue happening may be useful as well. As GitHub currently only supports uploading of images, you will have to upload your your savegames to an another source such as [Google Drive](https://drive.google.com), [Dropbox](https://dropbox.com), or [SkyDrive/OneDrive](https://onedrive.live.com). Add the link to the file to your issue and make the file(s) public, so we can access your gamelog or savegame. The most important thing is to not remove these files after you uploaded them!* #### Expected Behavior #### System Information **CorsixTH Version:** *e.g. 0.50 or 7d886f35ca* **Operating System:** *e.g. Windows 10* **Theme Hospital Version:** *CD, GOG.com, Origin, or Demo* #### Gamelog.txt *For information about where to find gamelog.txt see: https://github.com/CorsixTH/CorsixTH/wiki/Frequently-Asked-Questions#where-do-i-find-the-configuration-or-the-gamelog-file* ``` Paste gamelog.txt output here ``` ### Additional Info *Paste any screen shots or other additional information that might help illustrate the problem.* CorsixTH-0.61/.gitignore000066400000000000000000000030151321660673500151430ustar00rootroot00000000000000cmake_install.cmake CMakeCache.txt CMakeFiles Makefile CMakeScripts/ CorsixTH/Src/config.h CorsixTH/config.txt /DataRaw /Debug /LuaJIT /Makefile /SDL /SDL_mixer-1.2.8 /PrecompiledDeps /doc # For CorsixTH directory and Windows *.dll *.exe Thumbs.db # This is for the CMake-generated XCode project and output /build/ *.xcodeproj/ Debug/ Release/ MinSizeRel/ RelWithDebInfo/ # Ignore the folder where libraries are pre-compiled vcpkg/ # Build folders /build*/ # OSX metadata .DS_Store !LevelEdit/src/com/corsixth/leveledit/*.xcodeproj !LevelEdit/src/com/corsixth/leveledit/Debug !LevelEdit/src/com/corsixth/leveledit/Release !LevelEdit/src/com/corsixth/leveledit/MinSizeRel !LevelEdit/src/com/corsixth/leveledit/RelWithDebInfo !LevelEdit/src/com/corsixth/leveledit/.DS_Store !LevelEdit/src/com/corsixth/*.xcodeproj !LevelEdit/src/com/corsixth/Debug !LevelEdit/src/com/corsixth/Release !LevelEdit/src/com/corsixth/MinSizeRel !LevelEdit/src/com/corsixth/RelWithDebInfo !LevelEdit/src/com/corsixth/.DS_Store !LevelEdit/src/com/*.xcodeproj !LevelEdit/src/com/Debug !LevelEdit/src/com/Release !LevelEdit/src/com/MinSizeRel !LevelEdit/src/com/RelWithDebInfo !LevelEdit/src/com/.DS_Store # This is for the CMake-generated Visual Studio project *.vcxproj* CorsixTH_Top_Level* CorsixTH/CorsixTH.sln # For files generated by compiling a Visual Studio Express 2013 project *.opensdf *.sdf *.suo *.aps # For the LevelEdit project *.class LevelEdit/bin/ CorsixTH/Lua/debug_script.lua CorsixTH/Lua/debugger.lua # For AnimView output VSPR-0.xml *export.log CorsixTH-0.61/.luacheckrc000066400000000000000000000304241321660673500152640ustar00rootroot00000000000000--[[ Copyright (c) 2016 Albert "AlbertH" Hofkamp Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] globals = { -- Globals "_A", "_S", "action_queue_leave_bench", "class", "compare_tables", "destrict", "flag_clear", "flag_isset", "flag_set", "flag_toggle", "lfs", "list_to_set", "loadfile_envcall", "loadstring_envcall", "permanent", "print_table", "rangeMapLookup", "rnc", "strict_declare_global", "table_length", "unpermanent", "values", -- Game classes "AIHospital", "AnimationManager", "App", "Audio", "CallsDispatcher", "ChildClass", "Command", "Door", "DrawFlags", "DummyRootNode", "Entity", "EntityMap", "Epidemic", "FileSystem", "FileTreeNode", "FilteredFileTreeNode", "GameUI", "Graphics", "GrimReaper", "Hospital", "Humanoid", "HumanoidRawWalk", "Inspector", "LoadGame", "LoadGameFile", "Litter", "Machine", "Map", "MoviePlayer", "NoRealClass", "Object", "ParentClass", "Patient", "Plant", "Queue", "ResearchDepartment", "Room", "SaveGame", "SaveGameFile", "Staff", "StaffProfile", "StaffRoom", "Strings", "SwingDoor", "TheApp", "TreeControl", "Vip", "Window", "World", -- UI "UI", "UIAdviser", "UIAnnualReport", "UIAudio", "UIBankManager", "UIBottomPanel", "UIBuildRoom", "UICallsDispatcher", "UICasebook", "UICheats", "UIChooseFont", "UIConfirmDialog", "UICustomCampaign", "UICustomGame", "UICustomise", "UIDirectoryBrowser", "UIDropdown", "UIEditRoom", "UIFax", "UIFileBrowser", "UIFolder", "UIFullscreen", "UIFurnishCorridor", "UIGraphs", "UIHireStaff" ,"UIInformation", "UIJukebox", "UILoadGame", "UILoadMap", "UILuaConsole", "UIMachine", "UIMakeDebugPatient", "UIMainMenu", "UIMapEditor", "UIMenuBar", "UIMenuList", "UIMessage", "UINewGame", "UIOptions", "UIPatient", "UIPlaceObjects", "UIPlaceStaff", "UIPolicy", "UIProgressReport", "UIQueue", "UIQueuePopup", "UIResizable", "UIResearch", "UIResolution", "UISaveGame", "UISaveMap", "UIStaff", "UIStaffManagement", "UIStaffRise", "UITipOfTheDay", "UITownMap", "UIUpdate", "UIWatch", -- Actions "AnswerCallAction", "CallCheckPointAction", "CheckWatchAction", "DieAction", "FallingAction", "GetUpAction", "HumanoidAction", "IdleAction", "IdleSpawnAction", "KnockDoorAction", "MeanderAction", "MultiUseObjectAction", "OnGroundAction", "PeeAction", "PickupAction", "QueueAction", "SeekReceptionAction", "SeekRoomAction", "SeekStaffRoomAction", "SeekToiletsAction", "ShakeFistAction", "SpawnAction", "StaffReceptionAction", "SweepFloorAction", "TapFootAction", "UseObjectAction", "UseScreenAction", "UseStaffRoomAction", "VaccinateAction", "VipGoToNextRoomAction", "VomitAction", "WalkAction", "YawnAction", -- Math extensions "math.n_random", "math.round", "math.randomdump" } -- Set standard globals std = "lua51+lua52+lua53+luajit" files["CorsixTH/Luatest"] = {std = "+busted"} codes = true -- Show warning codes max_line_length = false -- No maximum line length -- Exclude files and directories exclude_files = {"CorsixTH/Bitmap", "CorsixTH/Lua/api_version.lua", "LDocGen"} --! Helper function to add an ignore for a filename to 'files'. --!param filename (str) Name of the file to add an ignore. --!param value Ignore value to add. local function add_ignore(filename, value) ignores = files[filename] if not ignores then files[filename].ignore = {value} else ignores[#ignores + 1] = value files[filename].ignore = ignores end end -- For languages, ignore -- W111: setting non-standard global variable XYZ -- W112: mutating non-standard global variable XYZ -- W113: accessing undefined variable XYZ -- W314: value assigned to field XYZ is unused for _, lng in ipairs({"brazilian_portuguese", "czech", "danish", "developer", "dutch", "english", "finnish", "french", "german", "hungarian", "iberic_portuguese", "italian", "korean", "norwegian", "original_strings", "polish", "russian", "simplified_chinese", "spanish", "swedish", "traditional_chinese"}) do local filename = "CorsixTH/Lua/languages/" .. lng .. ".lua" add_ignore(filename, "111") add_ignore(filename, "112") add_ignore(filename, "113") add_ignore(filename, "314") end -- Ignore unused functions of save game compatibility add_ignore("CorsixTH/Lua/app.lua", "app_confirm_quit_stub") add_ignore("CorsixTH/Lua/dialogs/bottom_panel.lua", "stub") add_ignore("CorsixTH/Lua/dialogs/fullscreen/research_policy.lua", "adjust") add_ignore("CorsixTH/Lua/dialogs/fullscreen/research_policy.lua", "less_stub") add_ignore("CorsixTH/Lua/dialogs/fullscreen/research_policy.lua", "more_stub") add_ignore("CorsixTH/Lua/dialogs/resizables/options.lua", "language_button") add_ignore("CorsixTH/Lua/dialogs/resizables/options.lua", "width_textbox_reset") add_ignore("CorsixTH/Lua/dialogs/resizables/options.lua", "height_textbox_reset") add_ignore("CorsixTH/Lua/entities/machine.lua", "callbackNewRoom") add_ignore("CorsixTH/Lua/entities/machine.lua", "repair_loop_callback") add_ignore("CorsixTH/Lua/entities/patient.lua", "callbackNewRoom") add_ignore("CorsixTH/Lua/entities/staff.lua", "callbackNewRoom") add_ignore("CorsixTH/Lua/humanoid_actions/vip_go_to_next_room.lua", "action_vip_go_to_next_room_end") add_ignore("CorsixTH/Lua/rooms/operating_theatre.lua", "after_use") add_ignore("CorsixTH/Lua/rooms/operating_theatre.lua", "wait_for_ready") -- W111: setting non-standard global variable XYZ -- W113: accessing undefined variable XYZ -- W121: setting read-only global variable XYZ -- W122: mutating read-only global variable XYZ -- W211: unused variable XYZ -- W212: unused argument XYZ -- W231: variable XYZ is never accessed -- W512: loop is executed at most once -- W542: empty if branch add_ignore("CorsixTH/CorsixTH.lua", "121") add_ignore("CorsixTH/Lua/app.lua", "122") add_ignore("CorsixTH/Lua/app.lua", "212") add_ignore("CorsixTH/Lua/calls_dispatcher.lua", "212") add_ignore("CorsixTH/Lua/dialogs/bottom_panel.lua", "212") add_ignore("CorsixTH/Lua/dialogs/confirm_dialog.lua", "212") add_ignore("CorsixTH/Lua/dialogs/edit_room.lua", "113") -- accessing hasBit and bitOr utility.lua functions add_ignore("CorsixTH/Lua/dialogs/edit_room.lua", "212") add_ignore("CorsixTH/Lua/dialogs/edit_room.lua", "542") add_ignore("CorsixTH/Lua/dialogs/fullscreen.lua", "212") add_ignore("CorsixTH/Lua/dialogs/fullscreen/bank_manager.lua", "212") add_ignore("CorsixTH/Lua/dialogs/fullscreen/graphs.lua", "212") add_ignore("CorsixTH/Lua/dialogs/fullscreen/hospital_policy.lua", "212") add_ignore("CorsixTH/Lua/dialogs/fullscreen/research_policy.lua", "212") add_ignore("CorsixTH/Lua/dialogs/fullscreen/staff_management.lua", "212") add_ignore("CorsixTH/Lua/dialogs/furnish_corridor.lua", "212") add_ignore("CorsixTH/Lua/dialogs/grim_reaper.lua", "212") add_ignore("CorsixTH/Lua/dialogs/hire_staff.lua", "212") add_ignore("CorsixTH/Lua/dialogs/information.lua", "212") add_ignore("CorsixTH/Lua/dialogs/jukebox.lua", "212") add_ignore("CorsixTH/Lua/dialogs/menu.lua", "212") add_ignore("CorsixTH/Lua/dialogs/message.lua", "212") add_ignore("CorsixTH/Lua/dialogs/place_objects.lua", "542") add_ignore("CorsixTH/Lua/dialogs/queue_dialog.lua", "212") add_ignore("CorsixTH/Lua/dialogs/resizables/customise.lua", "212") add_ignore("CorsixTH/Lua/dialogs/resizables/directory_browser.lua", "212") add_ignore("CorsixTH/Lua/dialogs/resizables/dropdown.lua", "212") add_ignore("CorsixTH/Lua/dialogs/resizables/file_browser.lua", "212") add_ignore("CorsixTH/Lua/dialogs/resizables/lua_console.lua", "111") add_ignore("CorsixTH/Lua/dialogs/resizables/main_menu.lua", "212") add_ignore("CorsixTH/Lua/dialogs/resizables/map_editor.lua", "542") add_ignore("CorsixTH/Lua/dialogs/resizables/menu_list_dialog.lua", "212") add_ignore("CorsixTH/Lua/dialogs/resizables/options.lua", "212") add_ignore("CorsixTH/Lua/dialogs/staff_rise.lua", "212") add_ignore("CorsixTH/Lua/dialogs/staff_rise.lua", "542") add_ignore("CorsixTH/Lua/dialogs/tree_ctrl.lua", "212") add_ignore("CorsixTH/Lua/entities/grim_reaper.lua", "212") add_ignore("CorsixTH/Lua/entities/humanoid.lua", "212") add_ignore("CorsixTH/Lua/entities/inspector.lua", "212") add_ignore("CorsixTH/Lua/entities/machine.lua", "212") add_ignore("CorsixTH/Lua/entities/object.lua", "212") add_ignore("CorsixTH/Lua/entities/object.lua", "512") add_ignore("CorsixTH/Lua/entities/patient.lua", "212") add_ignore("CorsixTH/Lua/entities/patient.lua", "542") add_ignore("CorsixTH/Lua/entities/staff.lua", "212") add_ignore("CorsixTH/Lua/entities/vip.lua", "212") add_ignore("CorsixTH/Lua/entity.lua", "212") add_ignore("CorsixTH/Lua/epidemic.lua", "212") add_ignore("CorsixTH/Lua/filesystem.lua", "212") add_ignore("CorsixTH/Lua/game_ui.lua", "212") add_ignore("CorsixTH/Lua/graphics.lua", "542") add_ignore("CorsixTH/Lua/hospital.lua", "212") add_ignore("CorsixTH/Lua/humanoid_action.lua", "212") add_ignore("CorsixTH/Lua/humanoid_actions/idle.lua", "212") add_ignore("CorsixTH/Lua/humanoid_actions/multi_use_object.lua", "212") add_ignore("CorsixTH/Lua/humanoid_actions/pickup.lua", "212") add_ignore("CorsixTH/Lua/humanoid_actions/seek_reception.lua", "212") add_ignore("CorsixTH/Lua/humanoid_actions/seek_reception.lua", "542") add_ignore("CorsixTH/Lua/humanoid_actions/staff_reception.lua", "113") -- ReceptionDesk does exist add_ignore("CorsixTH/Lua/humanoid_actions/use_object.lua", "542") add_ignore("CorsixTH/Lua/humanoid_actions/vaccinate.lua", "212") add_ignore("CorsixTH/Lua/humanoid_actions/vip_go_to_next_room.lua", "212") add_ignore("CorsixTH/Lua/map.lua", "212") add_ignore("CorsixTH/Lua/map.lua", "542") add_ignore("CorsixTH/Lua/movie_player.lua", "542") add_ignore("CorsixTH/Lua/objects/analyser.lua", "212") add_ignore("CorsixTH/Lua/objects/door.lua", "212") add_ignore("CorsixTH/Lua/objects/litter.lua", "212") add_ignore("CorsixTH/Lua/objects/machines/operating_table.lua", "542") add_ignore("CorsixTH/Lua/persistance.lua", "231") -- th_getupvalue assignments in lua5.2/5.3 code add_ignore("CorsixTH/Lua/research_department.lua", "212") add_ignore("CorsixTH/Lua/room.lua", "212") add_ignore("CorsixTH/Lua/room.lua", "512") add_ignore("CorsixTH/Lua/rooms/cardiogram.lua", "212") add_ignore("CorsixTH/Lua/rooms/general_diag.lua", "212") add_ignore("CorsixTH/Lua/rooms/psych.lua", "212") add_ignore("CorsixTH/Lua/rooms/research.lua", "212") add_ignore("CorsixTH/Lua/rooms/scanner_room.lua", "212") add_ignore("CorsixTH/Lua/rooms/staff_room.lua", "212") add_ignore("CorsixTH/Lua/rooms/staff_room.lua", "542") add_ignore("CorsixTH/Lua/rooms/ward.lua", "212") add_ignore("CorsixTH/Lua/sprite_viewer.lua", "212") add_ignore("CorsixTH/Lua/strict.lua", "212") add_ignore("CorsixTH/Lua/strings.lua", "212") add_ignore("CorsixTH/Lua/strings.lua", "122") add_ignore("CorsixTH/Lua/ui.lua", "111") -- _ is set in debug code add_ignore("CorsixTH/Lua/ui.lua", "212") add_ignore("CorsixTH/Lua/utility.lua", "111") -- defining hasBit and bitOr add_ignore("CorsixTH/Lua/utility.lua", "121") add_ignore("CorsixTH/Lua/window.lua", "212") add_ignore("CorsixTH/Lua/window.lua", "542") add_ignore("CorsixTH/Lua/world.lua", "212") add_ignore("CorsixTH/Lua/world.lua", "542") add_ignore("CorsixTH/Luatest/non_strict.lua", "212") CorsixTH-0.61/.travis.yml000066400000000000000000000057121321660673500152720ustar00rootroot00000000000000sudo: false dist: trusty language: cpp compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - libssl-dev - luarocks - doxygen - g++-5 - sshpass before_install: - luarocks --local install --server=http://luarocks.org luasec OPENSSL_DIR=/usr OPENSSL_LIBDIR=/usr/lib/x86_64-linux-gnu/ # Required for LDocGen - luarocks --local install lpeg - luarocks --local install luafilesystem - luarocks --local install luasocket - luarocks --local install luacheck 0.19.1 # Required for lua unit tests - luarocks --local install busted - git clone --depth=1 https://github.com/CorsixTH/deps.git $HOME/deps - mkdir libs - pushd libs - mkdir $TRAVIS_BUILD_DIR/LevelEdit/bin - popd install: - CMAKE_INCLUDE_PATH=$HOME/deps/gnu-linux-x64/include - CMAKE_LIBRARY_PATH=$HOME/deps/gnu-linux-x64/lib - cd $TRAVIS_BUILD_DIR # Create unix makefiles - cp $HOME/deps/travisci/cmake/FindFreetype.cmake CMake/FindFreetype.cmake - cmake -DCMAKE_CXX_COMPILER="g++-5" -DLUA_PROGRAM_PATH=`which lua` -DWITH_AUDIO=ON -DWITH_MOVIES=ON -DWITH_LUAJIT=OFF -DCMAKE_INCLUDE_PATH="$CMAKE_INCLUDE_PATH;$CMAKE_INCLUDE_PATH/SDL2" -DCMAKE_LIBRARY_PATH="$CMAKE_LIBRARY_PATH" -DLUA_LIBRARY="$CMAKE_LIBRARY_PATH/liblua.so" -Bfresh -H. --debug-output before_script: # Don't ask for confirmation when using scp - echo -e "Host armedpineapple.co.uk\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config - echo -e "Host server2.armedpineapple.co.uk\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config - cd fresh script: # Check if there are trailing whitespaces. - ${TRAVIS_BUILD_DIR}/scripts/check_trailing_whitespaces.py $TRAVIS_BUILD_DIR # Check for incorrectly encoded language files. - python ${TRAVIS_BUILD_DIR}/scripts/check_language_files_not_BOM.py $TRAVIS_BUILD_DIR/CorsixTH/Lua/languages # Check if there are lua classes with invalid/improper declarations. - python ${TRAVIS_BUILD_DIR}/scripts/check_lua_classes.py # Build CorsixTH - make VERBOSE=1 # Validate lua files - find $TRAVIS_BUILD_DIR -path $TRAVIS_BUILD_DIR/CorsixTH/Lua/languages -prune -o -name '*.lua' -print0 | xargs -0 luac -p -- - cd $TRAVIS_BUILD_DIR - /home/travis/.luarocks/bin/luacheck -q . # Run lua unit tests - cd $TRAVIS_BUILD_DIR/CorsixTH/Luatest - eval `luarocks --local path` - LUA_PATH="../Lua/?.lua;$LUA_PATH" /home/travis/.luarocks/bin/busted # Build LevelEdit - cd $TRAVIS_BUILD_DIR/LevelEdit && ant dist # Build documentation - cd ${TRAVIS_BUILD_DIR}/fresh && make doc after_success: # Upload new docs - if [ $TRAVIS_REPO_SLUG == "CorsixTH/CorsixTH" -a $TRAVIS_BRANCH == "master" ]; then sshpass -p "$SCP_PASS" scp -r -v -P12349 $TRAVIS_BUILD_DIR/fresh/doc/* cthbuilder@server2.armedpineapple.co.uk:/home/cthbuilder/docs/; fi; env: global: secure: "mPtzSeDJKVeUu6KHJEbmHa91O+QK2XM0advYdr+13yr83w3C7cGFFjWgqzirsFUHVqPgdtSJIkom0DIxX7JtRoBZmt/xon+zfLq+Q4aSkJoYezWBqp2gavS8o1kSjtW7XuIuq995yjWvn7nehyoTYkKNtz/EzX5ZIVZ/iX73iyo=" CorsixTH-0.61/AnimView/000077500000000000000000000000001321660673500146735ustar00rootroot00000000000000CorsixTH-0.61/AnimView/AnimView.ico000066400000000000000000004274771321660673500171330ustar00rootroot00000000000000 9 v€€ (¯ @@ (Bר00 ¨%ÿê  ¨§ ˆ O! h×*‰PNG  IHDR\r¨f IDATxœì½y$Ù]çùygž‘•÷U÷}õ)©µînI !$a¬†k‡…eÙkc¶k,6Ëc† áþX` ÒHhhPKÝRKjõUÕ­î®î®;ï£2«òŽÓýí~=wî‘YU üʲ"üÝîñ~ßßñÞû¹Ròô“û{‡L)æÃéõæDR~\^3é­LÛ­2;½nÉ”aX†!L`ÕâqÃÿçV©2ÕL#âà.Å€JÛaö¸¼‚€.ývÃ]BIEàß–+µÿ§‘:Æ®Žèéî&aO÷O[$!¿‘z”o¶ìvên·Ìn^·š¤”Tªf[¥jþZ6“ÞÌç2«Wg[@¡PøðËÀI!DR^£ 7š4aZ?_W@{sÛü!+5ÓænH‚fÚtË -ªÛï´[¸b`@„! áËŸðó ßM0_&äéÇ›'DÌ,ѵëŽFzy›››X¦©­ÞÛÛǧ>ýÙ;K¦¥¥%ëgòcFµfR­Y”*ULÓŠ”3 ñw¦i½?®t£ …4ðIàc@¶YFÞãïp~£í"ïn!ön€E„ê©e›ºÃm=‰”)-¢ÓӑĆᆆATóðïÈféÍõfBE›úÝ•²–e‚´0 }ý±ñ1["–—n™tŠLÚ–»òTk&›Å [¥Š2&ù>!ÄëÀRÊ­p; @¡Pøß€ßòwšñùqšeÜÝVÍvBqc«7‰š„øFš¯Ò,I)‘ŽÄÔÉMC0 R8@!lÍA† 48÷w¿^¾Fì»  «;G”²Õj²6U,yêOpèðQFFGw4ï._º!™tšž®4m9Ö6Š”«57ó80%„Ø/¥ÜÔª71 …Ÿ?Á‡ÐÕÕU9~üxéᇖ=ôPnÿþýÙpÝÛňÿ¥Ÿ7^{õ•Húïü»?° Ó§O¯ÿáþaçž={Zb·B=ì]oeyéFlÙŽŽÆ÷îc||/cãûØ»ocã{ßËÈè™L&±¯©©I>ôýïih\©TŠ¡‘1†GÇI§£ –eIÊååR‰r¹D¥T¢\.{iµÚlòféï!Ã7Õ¦ù CÑ êM½DÐPÆkY&[ÅbK};ù|žá‘QúB %HK"“êÊåK¬­®&¶ñî÷!hkk§­­]Û†iš8øQòÂŒq05Dÿ3|˜l߃,­yCxæEX{×%¥üÄ@¡PøY!„·„022Rüüç?Ÿëëë‹eþÝbüzågçfwô𥔬®¬°º²Â¥‹ol»\.Ï‘§I¥Ó1Œì3ŽR©í´wthókµ*åR9¨E(ß-Kqµýcøf)„p”¾sÒÅv½ši¶ñ[ÿ|F†Gøä'?Yxä‘G*+++®™þÇÀ~Ð@¡P0„ÿÞ½N¥RÒa~íž;Åø.ÍÎL7ÕnëÉç‘ã§ÉdÜçë/³¹Óß'qNQ·\ò„J§3¤;3ttvjó«ÕJÊå2å’åÒ®oFqéndøfÉuPZ€!vD»ÿ|†GFÈår|ò“Ÿä£ý¨›µOñO¥”Ÿ€âw6÷ú×~í×6â$«=òÛ1 n?DÇØÕ] ­­-¢óû<¯_Ãn bµ‡ðò‚L&K&“¥³³;ÒŽDR­T&FÙñATÊ%*•ò¶â¿†ß]ºýÏgxdÄû~ß}÷e?¾ùÆo¸ªå¿¢ü‚ûåĉýèG#Ì70¾[gvf¦éºMöT·ÄžÞ¾È²R€!â¶µz…£¡‡ðs’ÁÊpBˆ‚l6G6›£‹èʈ”’J¥¬û¯Z©ÚúGJ¢;ÿ|TøßøÌG>ò÷r\Ñ€žžž9—¹þèþ(â©j%ó·Â,˜mµÐüWèéì&KbÆóèö¥{uõ@¢n` ê‚Ð’<&!¹\ž\.-X–ˆJ9Ñ%ÎHtç^¥îîùÞ{ïÍf2«Z­Úk§ðñ°ð‹.“uvvVûúú¼õ±»ñ]Ú¹ °³Î0 2™LDuöƬþ²ÎÚ»0²žiõ&ƒ£=$ChLíÁIÔIxÃ0ÈçÛÈçÛ"y`DX{¨”ýeN³VÓÖûûIwÇɵÿÃôðÃo=õÔS®éG „x³ûýĉE ã¤'v¶ŒßhÙ™éf µ?\6—Çæ¨ÆwÞîÍSïÕ$-jøõ5L¯Wb|€!€ÐŽ!<ö†A[{;mí1Kœµšï˜ D‰r©lo¥½kéîfø0 hÓßýîwO=õ”{9Ö<{ÿᇖwBê7¥R‘›7—ëµØp{Û¡\6”Ô±]ú‰8èù3*}#¦<@Ô»]/nÙäçÕìd•Ré4íéNÚ;ô+µjUÑÊþ§ÒÒ&Ø-úûÅða Ûÿ.©<߀Ø?âC=”KêàN2¾[~nnV—ÓT;;¥l.eG-/%Iõ0+F¼{ø%µ6C´n¨Ÿh=¥¤ˆª±OqQï7Ng2¤3::õÛM*•J`σ«ITJ;[ÁpF·ƒºwÅ™ÃÃÃ*ÏçÂ&€·Ö¯ÛÛ¯”«;€ÛaØ+úú¹|ž\6ÇÚZòvÉR6›óuî†ìt'¥8’íA'Õµ¡í!Ø}ŒR7Ø$€ØEí ›Í’ÍféìÒ,q:+aǤkfT” âï`×èÍoyˆŸúÙŸcl|œ\.ÇÍ›7¹us™›Ë7¹uë&7——¹qc‘é©I&''X]YÙQq&@¡PPo\4|îÆw)Îþïî.ð7_}‚îî¥R‘¹ÙYfgf˜avfZùœeéÆâö%‡€L.ç3¥Êˆ1kÿ^Jƒƒâê‡8TIv®#±™%Ș%Ä]¢=¨+]Ýú%Îনr`'e½“|;¡îî¿ù;¿G.—óî±»»À#ctimmɉëLMN01q©ÉI¦&¯3=5ÕÐXãL€0i@÷°[Åü­tÆ­|äGŒngäóm*Õýç©ä5±J’ìQ ǃC¡g'ÏÜÃÅ×^¥Z­/‘GGgH»Ïxˆ×üÅ8uÔ° ™üV–‰+W,n±rëV$=›óW/·Ãô*mÕ€L6YþlÉÌSîE´f´¾ýaÖLD^zGšô¡ –Ëì&`YƒK„%íï.ã›,i_;u¤%ÁaÚù² T€²„*È P‘PY³Óì¾lÐ0MÓŽQà´'jQP”XçžSiJÒé´Mk2†ÃFPü*I}pˆŒ"V{hkïàà‘£\|íÕh›!Š[’kÔ R¹ìjñs{Û@+˜öviq‡€òùüŽߥb©˜˜ŸÍf Àþˆ³ÉuëðÞ·X‡_T ™µ2/¤E(®{*XÓùÏÅ—IÙÃd§+IRziv¶ ˜iÚ  e3¹°ˆP¤zPzûÛn’ìÿú+Úl{>v2K7ÏQ…â[p]B8å¤Ý‡[G8õ%Háôã™Rv!_€)Avñ+U¤!¡˜’Nü¾¸ç eJ(·¢0¸ˆ$ÚIˆ]Ñ€‘Ñq.½qA›çÒææ¦ÝÆ6í~—ªÕJCg_šÑ òÑc·J3hü À”Ï #XÒòx#}%õùÚ…dõ.“Í ŠÇÀP¼È1„þÜ(4þŸ›-îQR1+‘#„ê…áü¹ íÞ3 a‚WljÕo(õ…]ßåû‹´åß°PúwÊÛ´ D—@¦°û•àu®þî2œ™ôœ¢Ï3X ”lÑû§¯¯&9}‡þåÛôËŠ*ýË_ù?øŸùS&®_£™À²¸Ï١ɉ‰`ħjt XÜ)cß΀©ÉIÞñÖyämïàÑÇÞÇ=÷ÞÏþI¥RÚòIôâùâÇ€p4€mH '9šUùÃ6hµVµ¥oJáì°},”öï¸Âוî£J×Lp ¸<@i×û/I-\Fq˜ZHÛ€°M…v2eúË :M§Ž¤mÔ‘Ôü²»¥=¤Rõ•è©©Iþà÷?Áüþ'èêêfhh˜¡!†††t>t®óùè‘ìFãÆíÔѶ—ï´#0IªT*<ñõÇyâëÐÞÞΉ“§8uú,§OŸåÄÉSì?pl6v·3/ž?ç÷¯™˜™l¦áÉ3ïHšdÑåBIÕ¬Ù¦~Zøú[Ì ‚ðâ¨óÁÀëW8y |Ó@¶k¸ã–N]oÐ6(­d°Ç+¸z:{W¨ÏI“¯4¿­³ÄDpu?T8©Fß®çW^__g}}Ë—/Å–îîîöapˆÁ¡!^-ÙÔhkko* þ¶–ïG ÖC[[[œ{áyνð¼—fcã{í]‚qðàaöíßOgg'íílllpcq1V"¥RéM5ÐÜdNšdj²iÖ d„/…Çã~É,œ†¤+ÙU ï0¾t4Üûˆh~Ea…@Ûv•¦´Í R"¥[Ù €‚öi׈&´]ýh¦·C°qVGkkk¬­­q%$t4<Ò¸¶± x·˜ÍÇ’eYLMN059Á7Ÿüzüä‰!{ °n6ƒV²hÊ53™Ý’5ÓtL'UÄH)|ÆõÁ@¯½óO8Œ ¥cú ß,Pºñtà ï,‚¶rÚ5…óÊ,¥ êi°Á-ÄwB{(—]›~g ß*Š[rŒ£†¶7’׊üFËmnn²ºº³ÓR;i—ÉdB! SÛ)úÙl§ÄvŸ¬=Ôj5ûWó\1 ¢:æá2° Â@à³%¹ am@k¸~w¯˜¼ÚuÏC$ƒš|Ç´;£R.Çõ|Gh¸‰%@hbÀn›Í”›‹q&¶Ýâ)“ÍúÒ.8K4”¡Œ:ÚƒišˆtÌÊ…tu.7+éž;Ï‰ç™ a Pê Õ?§ èü8 àÎ0Ë}—;„iMàH¾SÚƒý¼ü9wíXÓíúÍ„n p¤ì.£r&“õ&GÃ@cç|ãÚC­fÚŽ5Í|Äq ¨¶\í@(„@:M8<í™m@ή¦ËîîôóLáiuM£m–Ò%íD{ÁßÃk!ø{Þ}Ðø Ôñì6ó·ràv‡©Îdì€@¯Ú‰vrsÚC­f"<` !¿¼Ò¤ ¶ à€A8÷ØŒçiÒ ½IàÉ[)mµ?#¼mÂîÁ$=+ÌyVÁ„Û£=È@õð¡,÷²r·@K€`ì„yw{‰pffú¶3|˜\€VP«“9’šÌMjfÕ´WÂŒîù`p<ú+’^j€@¸[ƒ]€bxÚ€³‰ÈrLWƒ€{ø(ë0¬)w¼žI¤H8ÞNZÇcFèwr.ï:h…DwƒI°û/©Oét:h7j¥EŒd 'é jÁÁ¬šˆœP¤·ZÝgDwÒÕT0pÇèªú¸jH#p¸ß]môŠ G'\?CV L°jö«õ|!jïı®:Z§=D žcV7ÈFŽçÞ.Êårôöö5u¶ ¥!Án—?`¦ÀnR:FÁ÷^yå›ö‰D!élš®ö†èï nÑ8“šÕ¤«f‘Ê¥ýÌÀi(•| D¤ XÒ6<ÀjÆ4Ú@D1Ϲ~]=@Ôªµ†¶æÞ.jVý‡&–w[åoÆÐÌ& Ý L&ÃÒòMùÁ–,UQåÖÖ*7ßX!{-уì1½fâ7¤=ªNX*‘ ­xŒtÌyÌŒBÝôø¢ÜùA“À©*\€!–¿W Èã;¶ó¥ª¢Dî]MnÐ4rîKF G™6 ‚eõP®ß¨ô7 ã¶…»ÐÌ Ã†4€»aW [fc}õ5ýñËÑÙÙÉÂü<ËËK»öÐt†KW®ÛûñÆ>úzäM‰Ü+!ÕÉÞ¸ÄìüÇŽ¢£=thD£ØÉŠä ”•~ð‰ðùá Ìa<‰í\8 ¢ë0ô€@« Hßÿ(°¥¼ãTAÀÛàð‰(ŽÁ¢7ö¹)ÏHD340àkzÄm tÚC¹¼ë=òóÿó/±wß>L³ÆÚê««+¬®®²¶ºÊêê ·nÝbzjŠÉ‰ëLN\guuûQ¬›Ý ì¸ÓƒÂe⤿‘JñGüFÇìðKµZÅ…æçg™ŸŸga~Žù¹9æç瘙æÊåKÛ^ÂYY]§T.ÃȽ¿Ôž4µ‰ ÕïT‘/[6_Ý'aVæÖxîÜKìaÿÞ½¤RFˆ·u6)ÞlTS«Õªš9ªú#„ÇàžWÁÀ­,C@ JM×,ÒMPA1 ¼ˆC*Øö ˆ6·üv“`hïÅKÑ«åa µ,‹õ ÖÖÖikÏÓß×(¯{lÍi~ÙzÀûØsðÐ!À×?0@ÿÀ@°ûÐóX]]eâú5&'&8ÿÂó|çÛO%‚‚*@ÔcÀjÛ^¼SK„q{~ø­óƒm§ŽÒÔ¶M³ÆÕ+Wxí«¼váU.¼ú ç^x>ao·M5ÓbéÖ¢C`¼-Mªß~„éÃYRû³Tï)S{¢¯½ÀE˜œžeáÆG` ¿—8;3|ïêOX­Õ)H»ê¹ÚŒ ˆ%.ƒ„Á@*g‡| °Mƒ ÚooèqÛRòœvAÀrʧ”íö#|`°„LlÀ‰’_¦\)s}rŠé™LÓ×üöíçÄÑ£~?±]4ª=øõtŽ4  P(pϽ÷qöž{ùà‡~˲øÂçÿœßûÝßvÆÏ7Í„s)Ö°[Ì¿S“ îà±ã'šj3•JsôØqŽ;Îýð‡¸uë&÷•¿á·þÍo°µ¥)°ºQ´½ß§Ù{à#ƒÈÞ—#}0Cå›%¬gMXyZÂ:T.Uyõõ‹ôöôpôðÚÔ#ŸG–¹«•ª}ÀÝ êû*(’: ¾V ….£Û–~P°AÑHoE@Úi)ÅW ÞP¢M.CÏD÷D$år…‰©I¦gæ°, Q°7ÉM ûajb†ñÑQ::4Ñ~5f˜~Hzí!ÉJ¥ò®“–@“Ò Ã```0‘ñ] iD œeÜ)s&×h¤ýzõ!þ«jm§M—öìéåÇ>ö´ë& P,W)Wj0 ™wæy—ísôÒ™´FOŠüuý™<â €ó@ä÷I8 ·6VyöüK\ŸšÆ´,$ø-âþ€Õµuût]‡M]‡xÞ!lܽÆIs%¸rÈÝÌ£–“H'0ˆ2îz¿‡.øveïñºˆ…ëGÀÞTu5% êŸ”#D Ï£\.óÆ¥Ë|û»Ï05;‹5bÁ[Aþ€Džr:hrpéÊÂ=ºÑýó~¿J`$kƒCC­ÏîsÙ‹É¡é\jv´pðvùfgõ°ÿÀ¡@¹í’BëR²¶Q‚¦Htöã:L!QÆnˆÌÑéñ •gKÔžªÂóÀ)£.ÃõÉin,qìð!zœ`™qx½¹¹ÉåehsL\MMµýݱ(äÚãžv 0²ªxõTG¡pÊ8&ò ¸RÞÒh–Ó¡T°M i«ãw5Qó ¥’­êÏÌÏÙÚÅa '€>l†wû¼Lƒ<$¹qa™[·VééQÏÉGíüpoš§¨^M€fÂrÕÓêE§ûlJ¯çï¨ß¶K-y3Ðí4 ¦§ô>€¾¾¾m3~¸žÎ¹³¾YÆ´,8ÙGrŠ ®¨ª óÛ×Ñn{W;éã5*±^² {ÒŽ@éB™—^¹ÀÐ@?‡ì³w†èÖ꯾~Ñ>Ô)lÀ.Šm-Üá¨?¸kó+ª;èÀ5 <ÂݽçÔ5ðú$€ÀŽ6ì´#Kþ€íž›(•J\ŸœbvaÁfüCqJ F ÈI;J±+š ÎóýÑ!¸tå o~Ày_D]Ó€~J ªÕj"c…¥¿W³ISì·`×£¡¡aÿMЮ.îÆ*@œ §gOݶí;¬ÚÕjÅ2¢RïÈ`ìI;&v˜ù»ÜÊé\§ÆÒ´ýD•{JT/ÛÚÀQo•p®-±|k…Cû÷2<4`†KW®Ù¡·ÁŽ]µýµ\µÿíЗ\ ïd(;ümæµB à<»|Ÿ@Uú¡ÄK`™W'&BÐÞÖÆ@Ÿc‚¨öwŠ¥SÌ-,ÚŒ@"ÎŒqòø!ÏU|Àà20òˆdõ¥uo,18ПÄõNýzQÿ‹‹ {Ⓡ"XZZª[n$AýOÇŽbÞn“`mu•˜H½]ÝÑ7Æ6Û'Àææ†ó£ûeW6>+ÈÜ“2¿Fê{†³7!íÙ)R{ OæH–òSȨk0†Á¼`rñÊ5—8zøímmllmQTI¦¤ÿ«9tí2„2W3ˆ ª6 €XXH xŽA§Kç]”%”í]s×'|íí¾3§éÝÓ£×$‹%&&§™_\Caü})D»ð¤½­uØãòÇt§€'ìç+ ‚KW¯Ñßß«×pƒK‘|¿ ].NýwÛYZ¼A­VÓÆ¢lV xýBýP`îÛ‡š]‰ ¸[þ€¤€·n.k—Aš5 ^:>p½UªP©Ö`2ïÌcdIf86¸Ý‰ÓYPêãDÀ ÄæC`R´}°“ÚÙ*•¯±^¶` ä[$LÂÚ¥ ^xéÆGG"?¦Lᜠߨ[…ù•ÁðÐ@`nÔ;’­‚ƒ[¶V©Æ2¿K•J™—_z‘—_zÑKëëëçôÙ3œ>s–#GÑ?0@_?=uë• IDAT={0 #"Á¿ó­§Ú°6ªyÿ JqšAKcî¶V¤|ñ?Ž/þçÏyשTšÑÑQÆÆÇßÇøÞ½Œíµ?ÇÇíµUá2‚ß÷sÏ|×û¾¾Y²$‡ì÷å6¿–ùQ?©¸Ì)Ò‚ìƒídŽæ(s‹Ú³5hù „+ÀõÐ:¼æ7rV9j¿¿¯ß“œ;±Ú@8ŽA<­@À »¹dbµõîé¡·§ÇÌV±ÈÄÔ ‹7–lUß‘øéciDAxEìcÎÊ‘â°Æã>wº©FýxZ@õ™*SÓÚ¿_y¤J»¬@Pià€:Z^^â›O>É7Ÿ|2žJ¥èí룯¿Ÿþþúûûéëïç¿ýíß4Ô®ºéhGgîVæ‡f"Û¡³¦¦¦˜ššžŽ”ÈårŒŽ36>nk {÷22:Æ÷´®ÖL6‹eè†ô;³ÿ-±’_Å÷¿¸¨ÑN¾ÝŒ„‚AþCÔÎV¨|µ„uÑ6 èñ²@V}›ˆÁùê1†»¯ 1Mp Ø2ZUå ‚¾}mïØUTÀÈ-ió{ʤÓ;| lm™˜šfñÆ’ýîÀ}ã¬AêDÆc|?zP\ÂZ€LÐrØZÀßa;‡`jz†±áa;,¼:õdT¥l vµ-dâàvÈ4Mn,.rcqq[õÙu¨ã³] ØJ`˜œÜŽŽÊå2×®^áÚÕ+ÚüÕ Ûˆ÷2g²É’_¸i!•?vˆîÉ:Õ3osqú`ŽÔÏf©ž/QùZ J ÷KÛ£ ö$µô]¨Ç}Õ“}Â)ulîi¿ðjâð#)ŽAW‹¯})²(aûÏ¡G`š&¯]¼ä1>@Ü+HŸÈúŒïŒÑ]‘°Ü× ¥>§xD bkTGÀ\´¸69Åñ#‡•— ÇÌ!Uð¶A;ç2îÊçóìÙÓHÛÑY€0Ý Ìê9€æ¾²&ŒCö]yDÆÝâF}æWǦ/ñ¥ZÈÓ*œ”´ ÷–62Dz”ž,b~78Ù¤ÊÄŠ Z"Òc^wâª@71fö; 4®J]ß$RÔs$²bÙ'$•nrÙ, 7n°¸´ì3þ}éSi[»²Ü®dÔäiî­¬,ñC v ÅSÀWœ1ÂÜì{ÇFi÷^íøEÔ‡Imä•à·“š êîŒuç@CïLj¬ÕyIù3Ó3ì6ó{Ž¿ ¤J‘w0R(ãJb~å}|êŸýàÕM¯„p­Š¨4“`ô¤hÿáNò?߸ßéaEP=§8…Ü>d°¾;4OcîÆae¬‚h¿* ?.¸’Yà­rûu¤ˆGÊ• 7nÝ„ƒ`üAæ'òdß–Ãè1õŸî3wúV\ ÝO L•~à¶&uØÎ»rí:ºmÆþ{QþÜ_NÞUÒ`4Fýo„·½àvk++·bè´’<ÇßIÈ<œ÷&šgF~!æwIa¨€ÔWM õ‹Òl`â ÈÌÂ%åÙ-ä‚Äüzb~“ÜCmÝF°n˜\áíŽT¸ `W 8Ô\rW ¼1+éž&r:YkÕ¯—³ÊKB\ÿ~ƒÔYÛŸb+%ÊÚ½óhí°dA-À9x]Ÿ#çÍDnµ¼rO)ìÝײíl\º~“•Õu Ý]þãRŸ…FS’Ô?x»iDsâµy‡êj&}·òàöĬ¹Ž¿ȼ;‹Ñm/yÒD•üÁ%ât)A©ï ÝÉeFû#s<‡ñp‘ÈE‰ùÙ*[ŸZ£6YFàOaOh¢ÑÂcp¥nðv”²JžÈu‹ÊwK”>µ‰|RÚ†Aü°Aî§Ûɾ3oK|g,Ú׌û÷ðRœôwÁ6”îÒà8¶pDZpõúur^=°¤ùƒ»ÏmXkÓ¶£ëh7M‚FÞ°SZÝ,Úsç^Aæ¤óâÐÀDRg«Âüáá{*kŒÔ‡ ¤RëE¤¹Ïœ¹GÛÙúÞ\ƒŽl[ç·(ÞÜ û#yr÷·ë‡EfžC _£:8OÚ‡Û¹iR}¡Lí¹*⺰¥+Ò¶óOBúý9ÒÒ…}nŸþ€µZ€PƦ,7ªÊGä™êœ¶pXy@²zyËËô÷†wêý$ò.sBòÁ£–ª—·Ûþ€¾ °•*ÎQß}}gÒŽ¤Òªþ~|<ûZ°ý_"ó'Ýrìó¤úR¤N§±¦MÚÛÛbjfšÊŸ–±fLòïë´#ë&o¼RÂ}Y‡jÕËËq€eQ¹P¡údñ:ˆŠ"<ºâ!AæÑ6Œ.‡#Çœ 6v’ºuÀ7)‚˜ËЖ:&%]ùyd8/ †`: ¼ <bJpmbо=þY’8pçâÝbÛÛ€…É&€®B3é;ÍSów3°Ö6Š…Ô÷¥IÙ'ò<7Äüž4 «aæWU~µ\øÚÓ2T.uþ„ôó… ÿƒðfÁ¥K%öïÛOw­ó/kl}zóF Oý¹æA펀ýÅ;½ |¶ã¨À·Ë°›‘€7·ÊÔL NCö-9eò‡&púE4€óÇMú€z’7šI«^¥ºS´ÿl×™yq†ñ±q†‡h_ocþ©¶fÖȾ?OöÍyDÚuTȨTU» ݵ}µ`@z äjò·K˜ÏÔ`º»º<<¦¦&)gËï2Ƚ½Í÷‰8bY]ž hêÔç¢j jšw?ÂÏwCuº· BfØ…NbŸÈ|3ˆ ÁÄÔ4Cý‰Çx¤eÙ/hM L&ÃÞ}û°L‹••[¬­­í @m<ŸtvuÑÙÕ•X&‰Út7øââœ>s–{î½¹Ùæææ˜››e­‰Èª–%Yß*A/dßCt¦|³"ÒßcÈ0Õ÷å‰vÈkNÃ…>´xEÕO—Œþ4m?ÞI‘ f¾7ÃØÈ(]]ÝäómL]Ÿ¢úé2µW*ä?ØNj4¸$BÂÿð@@}²"©¼T¢úõ2â² -ÓÆÐ¾A²¹µZɩ똩ïO“}s›³UØîÏö7(÷-C}|þª„ÍøÂþê©Cél B¸Z‚j_ˆ˜~ö—€‡%•—«ÌÎÏ3®ÖQ梫ZWë0ÿ÷àƒüËõ¯I§}Ö’R²¶ºÊÊÊ ««+¬ÜºÅÌÌ4“×'˜t^Q¿¸°àôѯ…7b¨eš~3P¸¡fÒw’7óFà_ý¿ÿ<ø¦@ý­­Mæfm0°a–é©)¾÷Ò‹‘k›E{Òßo>®l ¨–àKhÍØqÕ¼ãÚ‚JFPâ»ó4òóiÚIehÿçÝ?¿Îì3³ é)8tðËËËÜüæM¶&7ȼ/Gî¡6DÖYÐxôüaxÒXsMR}­Díé ⢠[Í284H[[©TŠ›7—¹±´„<&Éþp™CÇ[îŠ^÷¦¢Œ,6H:Ým¿a-EúM4„€3P™ô®6 HDÀ6NßÑ%˜šgD ååVRªÕÛüîG 0?Øãë.è.°&(Þé£\.3=5ÉË/½Ä7ž|‚ž{®!_ÃHC@ê> ®ØŠôäݺuSiphˆ|S¤n{{‡áð‘#‘öoݺÉùs/pîùçxâëOðo? !÷Ž<¤D¼ô÷¾)} ¿í@pØ›Tëûå#Œ/4Õ4ª{ª7EûOvSìß`ñ[‹¬Ï®1>2Noo/=…³ s”>SÂ|¥JæÝy2‡³ö®F·AÊ Ô¦kT_,S;WŘ2ÈÈ }½}ttt`år™ÙùYjùâAîƒí¤úO¿ÊèNÞ`†À÷ˆ9d…òCc‹”‚3~€Å^œyTR=Wev~ñ‘á ôWªTkÉL©‹BÝår99Êá#Gù'þ^}…þS?Y·^=û¿m+,øí6 âVŽ=Öð*‚K{öôòžGßË{}/ÿíñ'Ètf€1”ÒKïZ‘þ&ƒ3+v4B)ë|ObüH;áçÚh7èøh7•Ó%Š_.r嫌ô ÓÞÞÁÞÑq667™ÿî<• E*ŠdÉ‘>œÅè0œ ¦`­[˜‹5Ì…æ+U¬+bNÐÙÑAßP?Ùl÷=€ó s¬7à¤Ë’=•SvŠè’¡ªÄùÜgìIuGòꤸΠHÿðuä'ò©;Ëw€·‚èLÏÍ1<4HÊѽž0nI®½BNÛŸFhÆ hê4`=Ú-­ Îþ?rôضÆðÅ/~‘§Ÿ~ñ€ ÿ`‡Ï›aéïHˈôw‹ôø+¡ïÁsRD«€~ÎÆQædžôÞ,¥Ç7™ùÆ,7:¥­­C±¼¼ÄÊùUª¯–© –ìWvå@ärU"n ¸ewº§°‡Þ{ÔjU–n.³¹µ5&I(Cöá<¢Ý1+¤Ë ø ªÓ@„н[žFÉ‹Hq±}3 ÊønT#@"ª…Cã@/0…}\øÙs® þÞ`¼ ½£ÃQóiŠÙw6¬™wÔ= X¯p+ӛɛ™ÑÀ¡C‡›nìh-¿òý ©¡Æ»2í†ïiVż;±ÜQ |Õ¿U̯› õ Ùã—Nƒ¶î¢vªÌÆ—7¹üúú;ûèî.°gO/ýýlnn²±¶Au©B¥Z%•JÑÞÖF[[;ù}yÒ©–”¤R)ŠÅ-nÜ\¢Bk¿Eú¡,ù39Œ^'˜† …óöN &kA).}•]*`‘d„÷¨ÕÃà¢ü|Z3 [ ø66 Âôü¼§xÏÞP-bø¿N½HÀMiuu›FÇZhl÷ÎnûâL€¸0Èõè÷~ï÷XXX€Ç s4ë;­À—, Kzl°ÃcôÊHÄ2¿ÛÓ„.nHr‚7¼°k€ô±¿˜¡ôõ-¾±ÈÒõeúèèè —Ë‘ËåÑgÜ?{€`scƒ¥•%ÌNÎ@æm9²Çrö+ÉÜNÜaIU jÛ±ˆcBxL¨>KÏèX®ÔvÛO0¼g£‚AØï†0íÅ+~8µ§kÌÏ/262êZÍŒý1Ô3ͪüÛÕš59»}w´ °]jz@ ¨g a|!333üÖoÿæ~“ü#Î:±p& Ò†Fâ«ižJ–þÁ#2œ,‚ó2‚/.Ï…€4YÜk÷{»AÛÚFÊ»ÅâùE2+ÆFG‘’Àºt*•¢\.³º¶ÂÆÖ&ÖˆEêÝ)rµ“>µÃ¡Ù)è R*ã jp… SÆ}—Sî-ÌØ6ö(ÀP÷•PåIÔÅöìF`za>à Àyf^tf m7˜‡ŽoÔokOo/yç8óv¤áãÀwÒ$˜žžÔ¦{«QæøÕ_ýU¬¬EúíŒþTH… Qv•¹äqpè‹`±àLz懈r¿xfµ+Õ„¯œ¨›‘NÙà°½öÒû³tü\ôÏ稩09;‰{äÀ¬Õ¸>qé¥iÖFÖ1>–¦ý—»hÿñn{ÕÀÕö±A ôx¼¾¼jL(¡^‡4"}ä'ÁïþÓ÷Çyüj›Þ‹¡}ؾ€«Àa0ÍsÎÚ¼û¯Þ R©ÄK/žO‰F}l—Þx£n™í¼{0L 9[Éäq”¸ æ$àìì 'Nžj¸Ýgžy†/|á ð&Èß×,ç}Q'§ Ìg÷Ó“þ:K-àûtR>,äÀ—ôª/- .‡$¾}þµ 1‚dJ{ Ì,[ÿß3oÌ2>6ÀôÌ Ö>‹Ì÷çÈ=І航$öÜ` Z€—ä:E}‰8]RÌÍtf€ƒŽMÉý.bÒ$‘ß!@ÝØZÀwý ÷ÂÌÌ<þµÿ£ôs?ýSäóyNœ:ÅÙ³÷púì=œ9{–ÁÁÄza•½‘HÀ­ð9ÜV`;€±¼¼LI‹o×àßýÎoóÍ'Ÿ`l|¯Ûol|œ¾¾þH»RJ~ùÿeÄ ýÎŒ}h&"µý¶Ýe*5Ii,X7Ì”ÂoÃMrËi™_(U#™„$^p¨A©g{¾!^ÐÞÞ™wf±.ÖÂ~C²Ä"ýî,ùw´+ŽÍ}{IJŒ€ «$rsÅ™—È}J¾ bIfAd90ؾvÿOÂýÞÀ>-xÌ‹¹…EƆí—|&­¨T*•xñÜ9^hÇø³¥QŒzè]õ%™{íQõjòƒ‰Þ|S˜{øu|SÙ—|q‚_GžŠî´á2ªÚ¤D»ÈÚ­Y–Dä©þŽVNIò‚…©œ%ÕþB¨ :%!g¡$ÈÄ2èÅWMy—”ûPÓñ¨eê<Äöqág ÷Kf&æì'euM€$Z\X`qa'¾öx$OA¡P ·¯ÞÞ>–—— :Òè.À$Ú–p;M‚¸=IT,¹rùW._òÒ–W7°¤ óöi¶ô¾,jŒ»Suòú_ÕïV+ýCª¿F’«Ìïñ­´Ç Å“:Ä2`½¸y0]Þ•ÒžÙð¦šó(÷çÞ¢ö¾Ê­žv›ó¯ÏPmÇ[ÞèExð†ýð>JE6"©ûêÙ8\ÄÖ΀5e±¸´ÌðÀ@C&ÀvHJÉÊÊ +++\½¢R«£zï€úšÁ¶"µŠŒVìlË)/H*Ÿ)QþNѵ-CŒæ¼°ú©ê·:S¡pVœäWÛ ›Æj .¿¸º’a¦ D`ßtBn[–…LƒÈˆ Óèê ECñŒ{õægžŠ©áþCCág-BUIó¾(óÒêÌévÌÀE`ä!Éì€i»Aá·5ïnÙ¦ƒ‚Þn“ UqrÙ }…N CÀ4˜_¬Rúü¦~Þî]QiÕk¼Écg Eb‰ªy ‚S.¢0„㟼ôºò»L@ŸP²4–´ßÜ HË‚4žIàÿ¯³UBãŽÊ‚8Ÿ®$V¯~RxÜp´í­<èË ðÔe7jPÄ«F jÕ¸µ²šèÝ¿ÝdÚWá5ÝN\ÆvÐd7Ò§[ (›I3°§›\6[ ¿%)ÿÉ•—Š¡Ýeª*«ŽÏù¢sNyåôêV85^Ò'µ’D 5©*M¼—nXR"S²!8 ó°šéݳÆDˆ{ðÖ+½&T¿0@7Ôgc‚\‰¨-Ü@šJ=دhÛ”pä^Éôùœéo=õ÷6|^ ‰"°ÝÝ{»EÛñ$QÊ0è+tÒÓÕnO›+Pý³ Å/­c­:'ÝâœJš²žã/œ%¹Y§þ{z¬ãñßGøBÑš—ôÌbM»à SÚf€”H4"cuëi4žˆ 5¶!‘cÍ*}=¼z­ÍMhZvõØö?€¸dÿö›Åb“ì„Dè/HqÀf¶ó Š ¸ÛÒ¿YPX^jl9d»äj…Îv„%àU¨üI‰ÒßlÚï¶ M|Ïs­¤étySÇoþ©ú.À$Êÿþ˜ì ÒÑd] €LPýލÓ&W¯CJzŒDóuÌÀƒ¸ÑN"‘®í5&aJA´ dY‚e¿Ûp÷(™áÃ42:ҞܑÐÊe?ÝŽPàm9÷t“ͤaÌ/רúëvÌ}‡"·”ÄåÎwW&äc‹k.ÊÀø¿> ø%¼–ªÎÆVÅ ÷{é#6¢Ž‡üAÕÜy:g^œ“Äk_£ÞëÊjÓêÌÏö–às@Ñ>92ÐOG[>¹^SÔÇ©{ Á°àwBú !Znÿ'Q*eÐßÓÅf±l‡ {NRZØ$ýX–Ü[Û|59<ÜÀ„Š…•¡²*($kvK®¿ ’¯¦5øóH¼³Ï’R 2"Z.:”Hš”¡Ìs!PÇ’ C ð>JŸ'4}FÓœÄð‚H£õUªóÀiJ ÝÝìac}r¹œP¹µF(º´ÓcÀ.m[§i…ô¯×Æn†£Ž¶¹l†•õM*“5ÌÏU)^ªÙa¯Fý÷zÉ“T1¶€+܆qo¹Þ*€Êüá&]jbbcö€ ¥Æ^°<`s›ˆ£c"—ç= pÓû•j¡ÁÒtí9é±Ãˆ€GtÌÚ¨Âaª7°ÿªý*öŽö6ÆG†élo¨»øÉ?ý4kkkÌLO3;3Ãìô 3³3ÌḬ̂µÙúWÚ5² H¥¸ AÛŽ ØlçÛ¡zK€©tšÎŽÖÖÖvUÅ%×BͤR ôt³Q,±¶YÄú–EqfƒÌûsäÞÒi+eŸðµ õÆ£4ñäÓdPªJ„¡¼!6ŸÄ犪îrR=pP»Kr&™Gj‚ÿbúõ˜Kl×px Äe,Ir¹,cû†èqÞègN€¡áaî½ïþ@š:WWWlP˜±ƒÔÎÎÎ2çüMOM5íçJ§ÓÞá"c×Ûý{ÀÍÜ.µzï@œ ð“?ý3üO¿ð¿008H*•¬ÕX^^fyy‰¥7ìÏ¥%–——Yºqƒ…ù9^}åeVCáÂëE]éjoc w3‹K¯–©ýYóõ*ùì 5”Žg:ƒ{ŒœÑ&¢X-£ÓT%$|0B¦ô&€%-;.`"i H£þ»éqê}=æ€L=Ý= Ç™vø³×A\ÈMI:bdt€¾={"þÓ45 åÒHU™¬Pè¡Pèáä©Ó‘v*• ¯¾ò2/ž;Çß}å+ mT#ïZz ÕeãL€÷ÿÀöʧÒi‡†ŠmKJɵ«WyéÅó<óôwøòùR]ä5 ƒL:ñ–WV¹qsëI‹­©u2È“0ok:r˜Ñ#̤ žÔÓTTUO5WÚuÔ€8ž†J^µªôÍËB´éáGËn âxÒVf\‡V^ã ·x>¹¬úT”‡¹òu‰xä*C0<8À`_o ø‡·*ìØI°zòÔé¥l6Ë}÷?À}÷?À|ôGùÀcÖ57¶yXG-; Ðê²–eiß`§Ïœiº}!‡æÃýQ~ów>Á“ßþ.¼éMuÛq=æ½…nŽÐ–ÍÁe¨ýi™Í?[Ç\R6*ëŒI©a~ðæê-†ËÅ XÀV{Ê–”N`O¥^‚VËèqÆ”IiÊE$-kè¨käªDž³à¯¥}ÚoM0ÐÛËé£GèÃ0ü÷8»èà5f-yà±ãÉÁi¥B¡@OOOÝr; ®Rì>€Ýtò5RöÆâ¢öŦ££s[ãS󆆇9Z'ª°}‚Í·}³é ûG‡ìÝk`}ÍdëÖ(ŸÛò·Ƕ•œ,Ÿ.•¿¸rÚåG·‰šoHi!:CÏ« ‹ö˜\>v=ÔýŒß•„9ªÜÈóò¯%<röº9qøcäR†RÑû vlkñ4êWi„ê¹_[_¯ÛÆð6@×÷m Ø((Äí¸çÞ{wÌü.ÕSµìpPàη…ÞBíyæn,S¼X¡òÇ%Ì·WiûP¢c'¶YP̪W‰¦s#¶¿K5Û÷!„ðâl{˜í¿é6¶U6úœÂåå–D^6‘/I˜¶‹wwv020@[ÞYÏWÌmh8'©VO%aÈfƒ}‹Åºo²ûÛù1`7¿%°Ó•ý! (jIûfÃ^´\gF¨þ¬L&þÑan®®±tkë+›K«´}¤Óy_Âxâ{LKBz‚Í¡ÎR›so)áù'´&{ìˆ,g:4Rv;èR‘˜×Mä9 qM€ ímyFí%=vÁjžSÀq –?O:;;iï°ÃËít%ªÑ ¢aÀihTjh#P½ô–ÕÑÌô´ÖK÷¾´íŒÙ¬s¸CJIµZ%“ÎÄÚ»½ÝÝt¶µ1µ°Híi“­[ëä>ÜNîLü®±Xæl”Tµ É¶]À£T|ÙØN¥$ ›0‘ M¶]sÒÄzÁB\P†l6Ãðp?çí¹RQYÔ¹Q.B9¦?O¶¶¶0M3Òk»4qýzCåFn—°Ú-P˜Ù Ûµ]“`}}­î8ªÕª3q‚þO–’L:ÍØà€ö”ÿjË6Ò4Åy¹‚N¿$Û·î6Ï ƒ‘nµbφGX3&µ¿­"ÿBÂH›)Ƈ‡8vð…ÎNÅi¢Œ!îŸû\/`’©hYÿñ3Ÿf±!Á¯_¿V·L.—£···n¹FiW|­…©˜=•r8@hó$„À¬ÕxîÙgê–•RR.—Ée³„×ðÝ‘×L“åÕUNOBþG:‚Qv1¹¶&¹ IDATp|o‘+AòÊ™wœ>œWÁr|R68®;HqZ„kÞÄ:g"/HX±ßo00ÐKO=¯\ïÙô ~üH®O ‘¿ÿ»¿Ëÿû‰OpòÔiî{à~Ž=Æ‘cÇ8tøpÃgö…¼ñZýHÀÃ#­9äRðv~RÙ¸=ù_¾ÄåË—?Çöîe||o`ƒD=­àü¹sl4àqÛYXr@@_iªY·ÖÖYY߀¼Äx»Aþ#¤ÒžÔÌÝÕ=8H"“>nI0ì$lLp„›À­DgÞŽ –Ù6kƒ…5å¬ ó… ò `‚¾Þ=ô÷îQ^ç%5mhÔþ€iõ 4HJÉ…W_᫯xi†a°oÿŽ=ÂØø8#£cŒŽŽ22:ÊðÈ0ÙlÎ+;59© ¦Vî€ïl–âú²,‹¹ÙYmÞêÊ ßù–>dr:fdtŒñ½0¸¡Â€ñlµo<ùõ¦ÆjYÅR‰T*…a¬o¹µ¶Ž%$„Ì»³äÞÖa{Õu^y‡É„P“Ì^*S{ «^+å"cHš¾ý+„°€qeã›iŒ’hÊÃè“9S£öxÕß-!—Ír`lÔ?ª+CKŠ9¦qú%`í ˜eY\¿v•ë×®Fò„tvu‘ËfÉd³”ŠÅ†À¦Ù3õhG&ÀnÅÂÂü¶0Öj5¦&'˜šœÐæ§ÒiFFFßÛTôU•Ö6¶XÛ*bI F!õPšÜ»ÚIõ¥pÏ»k絪†Šh²¶¼Œ‚€ .‘f“ÚRÉr_¾é4ÞªUË$g_CõCë5ÓŽÒã/W*Ì,,264HZw^_#Õ}ž¯Ô_)Ú.I)Y_[£TuX6£4²:Ðr@+L…Ý:lÖjLOMm/Ôx¹ÂÚæ5Ó‚~0î5È=ÖNz_††X/$®›Q¬ê}=Ï¢XÒÙ°$|¨F1öwxlMQ£`¡3…:$<Ìbà©I6¶¶¸<1ÉÈÀ…®N¥~Œ§ßKL§þštFedD´Ñ¥Àðf¿Û²¨Þî§0ÍÜÆ8õ¨\©²ºY¤Z«!º@œäÞÛFæxNáL_FKÍçæª>ÄàíëÙH ¼MtIŒVŸùQ8Þm¯˜AÄÞ17!Ã…/a»$P7µ%¥læl–êù ² ‘H¸ ÌØ’zzaµÍMFúmSOÃàoA¨_y[6ú*p°—w²î¦Xhd[ðnQ+#o—*µkEÊÕ*"œ„Ì£92gÛ0â"訢XñxFaê`Å(¹+*ÄR’Ýï¶¥0¨ÖPƯé—‘ž=Óa]rëÚ z¯«C¢Ó óHób ó¹ìÆA¼rÖ66Ø*ôÎò¥º:„€pÏKì4ÃðaÚU'àˆú«ëÿNq©fš¬m)–+ö&™£z[–Ü›ó†V‡õùó„@A¥@ÛUû=ECS ^S^žg†8l†æ¥ ºÚØû*…Ë(Dû cš]:cIM#† ÌÇ«È5‰|X°Í‚ZÅdrnŽžî.†ûú‚Gg›Y­€0¼Jtww·¤-—Z¨e±ï€ `IÉúf‘¢³Ï` RoI“{{FŸúŽl{ ïÚù‹cðÍïj_@½µ-å²Îôò9׸^ŠwU3܆_Ã)ÇÐ.˜DìwÇç Vˆ3Âɱ¦D¨‹NAúCYÌ7jXß1¡€m\¦`emÍ­"£ƒ´·µiÑ$/u»Ìß*†S+^¦]÷lnW0P°óÍb‰õÍ¢#¯Ä=¹Gó¤÷eýBª`|B\,íwì9é:3@å+õñ4ªˆÈ•ž«ì¶ü<5Æ€ô4¿°÷~M·Å$}8|W Žgw„î¨Q³A&eú}¤Ž§0F ̧jÈ‹c¶YP½UcbvŽÞBÞ=Î2¬¦ ÍŠ€•°88„Û£9·r °K·ý4 $ƒ‚išÌÏÏß–qËUdzoBÄqAæ±™“9g¼Â¡.ß Å§¥A’P§¸ú½ ë@©­OLi‡Am¾´¿Hw+pR‡1¦‡w€( ’Hß?ÔD¸4ƒ@n•NAú½Ì«5¬ïXy?°â ÁÍÕU6¶¶ ŸË)ãuÇÕâ–oÇ©•q\º#Dóós˜»öFû‡«Tk¬nnR©Öl xÒoÏ}SÑfD9GUó‰)…bD +vnŒ 2z˜é› é˜ßÆ^¢ôL€0¿EÔ·€š/îå{…êðođݠê[F€q8…0°žwŽïuÌ‚kP™¨217K_¡‡¾žBˆ‘E°iá¿ 4Žá[éo„Zí„»\­ µöð‡3-‹Õ-Šî¢a0L‘}[žT_:T\Ø´SÏ PÉÉKÒâÊ6f×'“Žùíû±<5FBÐPêF„¯ ez×û?aƒÅ}Áj¸-ðvñ…Z,&„ÀW:QÑ)0Þ–ÂÚo!Ÿ±`8Œ‚¼K·VXßÚbd ß>ã¡ô"Ü1Z³f&Jû?ÿ‹¿ ££ƒù¹9æççíOçonv–™éiJ¥Ÿ]qé¶ùîäàLÌ`&“᯾òw^èå™™if§§™™™azjйÙ¶¶â_ÝT®T¹¹¾a;vº@œdÞ•'½?í35áO‚\©šj㪠Z€óésù§ÉŸ¤Ô¯ãŽÇïG8_„<´äá„ÄÚÿa —§„ ÷8X"áö¢ƒSÒb$°Æ^¹¬—%¼,¡¸˜ƒÊ¥ ³³ô ôzó\"©ÖÑB³¹Ä0 ;*p`HÒû\ZZbzr’©ÉI¦¦¦˜žœdzzšéÉI6› þ÷Ò Ø,Å-¾õ‘·qøÈQ„<ð`0–Ÿûãݺy“™™if¦§™žvbš ^ãÙsç! …Ì;³dNd!㜄!&ry_€p¹6l¸«u¸/ (×@à}:¿Ä3\žŽù…åÆfz)dÀ èKÿªÏÄÉ÷ZUAÅþšvšÑ–ÀŒèØ×nZ‡Àx“@ŽZÈsžŽ€|+ð:,/®²±¹Åp¿ç°L³îK@:T72¯‚¸ï"ùÓSS|ásŸã?ýÙŸ%¶ãÒ?Àô”^xß| nÝ=½½ìéíåÌÙ{¾ô¥/ñÏ~áŸa½Ç"óPÑ™òZ ‚ŽêÀ)ED+={>¤%x¨ }_¶Kë!†ƒRƒµL¤—f©÷ -o@”?5Ò_íÀuCöDåO’ìN~=¬‘6¼rIc5@Œ (äE ^²Ó8 Cåõ“ósôvØÓÕE¹°\GŽí<èØø8ÿÿ‚—_z‰W^~9±lOOmÎÆ¦VRk‚‹·¦§&•+{*§Ri{ïûšjGUé>ô¡‘9ØÑ‘Ÿ=®ÍéN*wÆøŸÞ¤ î^ˆo]ç& -½ºí3¼ô«Elù8оÕGM2˜æý)>ŸÙÂÏ€ 7 °"«ƒö¿´ÁÖÖ8Ðð€T3ÍG,ÔÐ3Œ¯M"Îx0<¬‚|H"Gayu•‰ùyÊ1Q§TÚà@Ý2R>²G!J»±Û€Ýô ÌLÏ–a§Ïœ¡·¯oÛm¦Ói~îü9¬—-Ì™mì¡ôØINtæE8Ô§ù@Žª0xZ³Pü !æ¡6T8L®Ø2ÒÕp‚<¼WO R¤«Nú«6¿êýWóU° ß¿TòÃŒí©>1À$m!|Sqe~;èÞ ¼ØÄ¾xj™‹·n±º¹™èáïëïo4rò5îÐNé®ÒÌZ……耡áá·ýñ_ú8Æ óù XŠrÌ€ ³k¬ïCJ©ÑÂÞ<÷BújxXuUÀE×Aç)%BrË8/ñ¤~¨?·ý”‘"•2lÕXuF¿DP÷FxŸºïá&#ãoÄÔˆÉÒiê ¼‡ÓfÛx/ö ÁÀgý°^ÜbaåVlDàþþþø6Iµ4ŽÝX„» æææ´Ç/ûúvÜöÈÈï{ÿû°^qµ_y’)<‰Ô|MØÜØs^ªØÑƒ€›«^«@ ®´¹Ì­ª÷tÇq&”ÕáW ôTnáW Ý“+ý…~tóî=øl„ ÚºÊ}…ž“¶ž;æ€vA”êi{€‡÷yl³Àî‡Z›ÉÂÊ-ŠŸÀN4Ò05¤ì‚î:ÐGjÚ~üý8ÌCíÙJ+d”k%˜¢„¥`¸EÙ8D€Àu*Ú«Þ ©0}X*m|nN„ùCcWµ°ô” ûJ|ðôTúùfUƒ:û_…†$»rãRóPµ@‘÷‹ÀËÀÈ!Éòê*¥ôµ¤”,,,Ô-wWi»µû)..z_‹à]ïzCCCX¯Z˜S5eÞ‡¤Ÿ:]Õ‚Z€7¡ü·¨‚0HÁÙèVi2løU7É5’4œ¬ó5€X¸¢]cc¨<'ý㈂dÈÔgÂÖH’$xÒ4S‡­¤úÔÕI¢ðà1l?Áë –ì¬JHJÿ‡O}Šï½øâŽyáÒŋܺy³N)ÁH‹C¹tW-Æ…V~êßàž{îåžûîk¸-)eÄI#„àûz _úË/S}¶BjošÈ>]¡Ì­@ì-Õ¸Ö¹ô43_å+eiP=QèN|/ÞŸ+Í ñL“!`«¶atÛ jž"y…ò°#ÍÞW{òšZ ‹l$ }Üwhˆð‰kG†œ“õ6c`˜Y…”aÐòÔåsŸý,ƒCCœ½çŽ?αãÇ9zìXS>«§¿ýmMjtÞŽŒìܦ£» â4€¯?þU¾þøW9zìïyô1N9éÓg8pð`ÓžØj©D:¢öª‰ù–*©}YeŽ–Â;§|:6Ý™|›ÃØ®(OFЂ(@@P9©ÞSPð), m3ÂÑWTê@1å4Ò]Õ¦<àP}n“–RÅqÎÍ•ÐwïÚÏ”ž„@¿É÷“@e`οìîèˆg‹ |í«_åk_ýª—ÖÕÕÅá#GóþFFG£·¯L&ƒ‚ù¹9>ó'‚Fe P_?oËrké.€d[èÒÅ‹\ºxÑ»nïèàäÉSœ:s†06>ÎØØ8£ããÚ·¬þ×/™óç^ «­[‹TŸ©’Ú›Áål©p_D P˜JhôOéÁ‡ÝŽŽ!ƒ à@†3±â€À]¦kæ¾·€v6yŠˆ‹ ¦vù×PÀÿ©2¥+ýþ¡—ÔÞ§¯þ»íz¾¢eì0(ÏÁÒçÕ¥y`ÂþšI§éÈÇ¿åIGëëë¼xþUƘ1` ÛÙp jT¡2X"}æÿoïÍ£lËîú¾Ï¾SÍó<½Wõæùu·ZR·Z­‰A˜8€´Ä‚– &"+Æ6`L`9+V€+ ÄIì'^$ …ˆƒÁ„KÝ-u·z~¯ß<¿z5O·æºÓÙùã wŸsö™nݪW-ô«uêÞ»çsÎþýöwÿöoÿ6¹gI÷fª#®SšÂA —™móH*/#Ú7à|V…†¬Ê/ü÷•¡y÷;ȧϬ! Ü·.Ì3k‚Þõ0‡†÷Æ€ø§£ÖƒšlpÍ ü°DfÜFUFÖXîQšc¼2Â9ÔFLÒéï6ŸûfŽ„±Ñ€¨ ðw'µëâìøÊR™ÂŸl"^4–éëëg¹y 0O­¢­­•ü +´ÂΛ›d¾7Gîé&«lá_ówîR¹©¨ÑßAþ›ðÁ¨" /ü÷ÆcoV¡ ®ß.e” Ícî°çÎØ£ÿÞ"äz¢ÒcºiE±XduuuŸZ`ŽÌmÍÍä6(¿Z4ýûÛ î…œ2p`»ý©r9V4ïÏÞ-'EÄ®A ¨‚|Â@›Ý"ÁX©°ýoÖI_Jshì0ÇÏœ£¹¹…—þú+”ËeR©£££üGßÿ)ŒJ…ׯòþê¯Xùý ››4~¤Ùasm…Òó#lôWÚ¥m¸ ‚øT­S‘3H¡–ù¸˜ò‘¶ææêiC>ÚŸ)±MÃ#{§ØsC ¸ë¤{;ú ÏeRsc#ét yMR¾_RF)Û°Ç †½fœÓ¿u|"-€j($ƒóøUä¢ ™c_¹#Ùþà 2ïf8sú,§/>IsS3w¯_!ŸÏS.•(‹ÌÎÎ:[VŸÿÈÇø;?þŒ¶ŽbüE…ÒTÉ~Jû¬gc7Ϲã<7ÝèïÖ¸§¼£»û9ye‰«^Áƒ7ihh Äu³¼t*E»kç¾ÿìí• ìBè{7Fõ8^¹Jñ^˜Úššaʯ«sRgð­vXçÞ†W)IÓ?0°gå»0Î~jü½´;P{››XßÞ¢rÝ |¿DæHÖêÀŠGg´“îU ¤lT*Á¾ƒ6ì逳D¨hû] <ߨ+ýñA$A–%¥¯ènéapd”Û×Þåþýû;vœïûOÑÖÖÎÆæ&ss³\{÷2>äwþ÷Á~îÇHgsŒçÔÉ3¼þö«”Þ_${¤ê2KÚ£®‹Ù¼Ð_Y÷‡ðÑß.B(ÿ‚ÂtßC‘BÀ-`ÊüÙÖÒB“rjモç=÷ 8Úîêöz)Ð[f2P¿¶!hkj&¿¸AùÕ™ÃYdš… nU·R0@8«θdê \ B/I%.HXxòUfËdf¦\*óðáC>ðÁòŸþA†ØÜÚf}cÃÁâ>*££ºò^ÂØ'%`2j´·¨ÄFÆuIù^‰Ì±,êr`઀³l(Ã… ŠlA u&ENò` ‰3Ö Ä¶ ·¿ŸW¯ÒÓÓËÅ÷=M&›!›ÍÒÕÕàœ¢[®T8qæmºÃȪ@p§ó1^Ðè¯2½î>íxk?6’Š ÿƒXú¯›ñ§NœŒôºÓÝÓCWWÓSSloû  ¤„]YgTϽ8uµ¢7¨æïîîaìÐ!ÖÖV™™ž®«—U§6!èéèd~q™òKÖœ©E«/X)ì)¤ÂåÒ.k3°Òh¡pBðÝÈ ©J `uu•‹O>ECC“eú+èêì$“É ¥¤X,²½½Íá£Ç¹w÷.ï¼õ&|îyR"M.×@f;ƒ,HÈ*ïÓa(Qe4‹é\Ë€žtÕ¼Þ{ÑŒþNynþuZá]û‚ÿAÏæ;ëhoçÈÄËsþáÏü ûû¿)%ËKKLMM™Nj=bzjŠ©IósnnÎ4öÙåØw`\¡àEö»õœ˜J@wYíííüùº»{\Ž?g,·Ë33Óæ§uMNN2Wã¡"}½=¬mmQ¸V |­Dö‰\un*l+¿ê¦–`!`w{»WzžÅáÕi¼ª§‡=jY½ÊÅ2©tšíím›š)•Ë”Ë^í›üÞÿõ»><Îßÿéÿ‚––š›šéì覽½ù¹Y*å ¥r™\Cl‚±eêPŽFs ½ÂpÒ6„FaF©a@ïè/ƒG¥ló»2ºËª QËÓ1 üσxG +æ{¼pábui7€Òé4ßý=Ÿt~w÷ôÐÝÓÃù ¬ºªyËå2333–P˜djjÊüþè&'ÙØØ¬G¥ÝxŠ#| ˆ©÷Z0;ãgÜû‰ÿ”îîWZÛñ癳g|mZZZäò;—x÷ò%._ºÄëßüf,û‚\®GréÊÊ/Me`;T×ø%Ò°˜]Õrû„U!Pý§Ü4Ê@)­äÂÁÂU&ÕUGQÍôÑž&Ý kù<†ÁN¡ÀN¡ÀK/¾À£GØØØ`vfšæÖvr´´¶N§ÙÚÚ¢X*Q.—‘• år™ôNδô1U8ó~ú; ÓÑ|zGûùxÒyóV¥±«©†ë¸¿ \¹`Æ>|˜®Ž’BÂ1c Êd2Œ1:: ü +®P(ð÷>ÿùHG °·fÀ°G:°ˆ ³g þÈG×ÕÓÓËÇ>ñ >ö‰O „ X,ògú§üÖoþÜ¿w/°œ\.GWWwïßgóÎ¥· ä>ÒdÎùÕ½º³ !h„€Ì*[Yøn *ÖNBK%Iùf*=߀#4eØ_R)Œæ «ùYZ˜gôð8›››<ó¡³´¸Èñã'8<>ÁÊJžt&ƒ4 J¥ÝÝÝ”J% Å«««ÈvIª5¥0šWéGóÛÏAºÚçBR:Ó?‹*LíCåŸ-,þ¥X׳QhÄ5ú744púä)'ªâüÐáñÀ¸$”Ëåøøw|G,°— `·È@JÉÖÖëëë®ð¦æfΟ?«®°6är9¾ÿSŸâë/¾)‚ãGòÖ¥KT^-S9U&ÝŸVྕXDÏšžÙÙ=8ÞÛ1-´ %È¢¤t£h®ÅßÙ*I÷¦Ie´ £Ö–îLSìÙf#¿ÉàЋ ó,ÌÍÒÞÞÎðÐÿè~‰ÞÞn„HaoYZ_˳¾¾Î©Óg)‹ä——Y^Y&u,…h¶ÎNP·+#· lj‚þJœŒ;ú«áÊ?åB)O¥MàmLÝpîô2é´“Ìw€òpGÆF©E)Íåêæ 'ˆöÕ8ˆQ§§¦|agÏž#hŠ™¼¾(åa6—$ý}t´·³6¹Nù•éÿ¸s̳…€Åà!€3šWûi˜ ;’Òõ¥¯L•«f™)RT6 RÛ]}<©dXú¿9uê³33LÞ»C{gMd³æh]ƒÍÍu¾þâ×hkkclü;…Sï!%™ØK€^ØOõ9( Rš›zÊ 2aпªÍžxG÷3S™[*ÿ\ðß;6€Û€uôD_o_u„µÒ‹…ÀyVGGGõ>wIqv í¹]Näv`oxÜ%I;;3ã ÕKÛ¤(ÀßÙ ^²BÍfþrâØQ^{ó-x*狤'LF°ø]+l.ë1°W ¬ÑÞžÈmƒâ•å‹p交««“OãÁä$ó Èm¯;ÝÃ1?rÙyyƒ7ßxƒÓ§Ïðî»—MÿÆ9„8J¥7®]ãßÿñ±¸°ÀsÏ‘J3uÿ7oÞ r¡BîXs8ó+L&¥„ ÿr›Êƒ ™çÈË9†RÕQ^Vmþ}¨@ª·áý=Ž?TÁàA ®0•æA\2Y:æÂùónõŒ””B<ô¶¶¶Æ%%CËcîþ«sVow|uA»ØûôU©™Ùuáa ›ÍâZzìꦧ»›¥ùeJ/Id¹”²@°6ƒ‡¡+Ïf…â»Êß(™Œ¿)éììàÄûŽÑÓÝ ÀüÂس£˜ï^42ß“cã÷6˜œ|ȳÏ>Ë[o½Å ÿá¯yçÍ7hjjbgg‡••r¹Ï=ÿ<£‡0ùàß|唎—hüT "çYêC¹oó›QFÞ òF¦ ò¨Dåb™ì³9R½i…É•r|£?ÕrCF÷Uêèï3Ú„þöšÿÉ“475*RHP*C,ÌF )cšÊÆpž‰;ÿßPØ÷Ý€:&Õ)»zºëZïÖÖV`\6—s˜Ó¦ãG°´¼ W¡|½è(áüBL;»ÓÙƒ²* ëÊï(}£ˆ¸'Û’ÎŽvŽ?y”ÞžT bSc#.PF àÈžh ô#0ûû³,¿´Ì‰“'éíéavnŽõuÒé4Ÿx’£'NR,–xýÕ¯sçö-J‡Kd°‘TO:ó›÷m¬VL»ú£ ïHÄW¡xo‡ô³2çr¦m… Õ•6;£¿*$BF©Gù§C6ÀMàžù³³³“ñC‡Ü÷†¤PŸ&&5Wc̹ÙhßC»Ø%ìøÀ½û9 Ð!€•¥ÁŒ‚ñ IDATåÐ2’„—J%®_»X.›sut´µ3Ð×ÇÜÂå—Jd&²ˆVkƒˆ°§Õõ>i(ÆBÎLßšLY«Pº\ üJ q_À´··qìÔQú,7Ó*@CCƒy€‡ª„ #{j)$Ùã9ÊG°ýåm®Ý¼JÓý&9|xœ†æ&–ùòŸþ KKKˆ.AùÙ ¹6’îϸ߿õL½ ?¯Æ_®¦Gqà.dÓŒG’Êÿ[¡xc›ô‡²dÆ2ž)n†ÕéÍàè¯äu36.èŸJ¥¸xþ‚¹ÙÇó<ÃV^záŽ?Îé3g¬q}Þ~®3š>率¡ú®èx:ì՜ߛvvÚ¯¸téò++tvuíZ¼þÚ7ÙEYe4{=~äó‹‹pJoÉ=׈3Ì Y­ÇR?%‹J—‹”_+!(B[[+ÇO¥ÏÖò*£·s€ã£ÀqáíO§ vÒô¡,M?‘£|·ÀêË«lLopÿö=(€l”Tº*ç$ÙähoÂUxn­óVE:æ·¿%4‚hˆFAkC+ï{â Þ½~™7fÍiÁ“e2OeIu¤ð2½¶«UFþ^!bÓðÈ 3ìè‘#´µ¶hšˆ<ôê•+üüÏþ,Ý–-Šé ö,§Ïž¥««+4¿JqÀ^ú°©¦)@½ƒî@—^xð|ìŸàoß÷qþÂEFÇÆjjã _ýjhÚ\ÖíöɨÍÍÍ 0=;KåÕ2ÆÉ ©¾t £xÿfN¯  <[¢üV‰Ê;eĤ€2´¶¶püÔúûúœÚ”Š-ri¦LÔ­¸ DªÎ ¥&ÉÍ‘9šC–Ì‘Zn¤šSdÚ ­(ú\åYhÆav;ØþbÕe;¼ä@t¥MéT†l.Ç“.2<8Ä»×®RüJ‘ÒÝég2¤eÌèƒþÕÑ_ª&tô÷¤*ô¿oþlkm娑#¸|5(/ ¨´¼¼ÌK/¾ÄK/¾ä„ qê̆††èè§·¯Ÿþþ~ë{Ÿ¥k2Wâ²× †%à~ Ý*˜Ðý+_þ2_ùò—S {òôiN>ÍéÓg8qê###ôõ÷‡"¿ö5W¸÷凹\>61Áìü<ò¡¤ôj†ïm6!¹´<úJ˦߰ô†¤2]¦ôFãJ1%À0ÿèÄ}ýVÛÀú¾¶»á7DÊH^˜'Ý?DDWºªæ½ê¨j—ašö _!n¿n¤ÀŽ„ ˆŒ©ÉdÒèï§§»›k7n0yóÆtã\…ôû3¤ÒnÈoWé0¿wZààÐ\ú !¸pþîv¦0/F 5Í0З…tvuÑ×ßGWWWäq`MMM>ÏÖ{q ÏcÝ (¥deeÅo|@¼ñÚk¼ñšÛ p6›5ý®0<2LÿÀ€i»½ÃÖÖ7®]×H|w~-s hlläðØ÷<€·¡|ÎÚ2ìhõ«J±ÒÃ2•׋× Óµ´4¡þÑñ ú¨ï‡ñî«¶SZ| í>Þ}÷  &Qºq®¶iG}õ·†ùYÒ˜;!%dÒö|ߌÏdÒœ?{†á¡A._¹ÂÖ+Û”'Kˆ'+¤ÏeMê\_Qü© ï<åì4ê迉 ú:DgGgÀ34Óø@í+[¾¤dey9Æ)@&õõ÷Ç.7NXP|Í ^{fcÌ…¢¨T*ñðÁ>xøGø0B˜»ã´ióãèáqææçÙšÛ¦üõ"™á4dRfÿ(””)³·¤c_ÞÙÑÁÑñqg9ϯ h«ô÷;‡w¦ #õP_Æ·Ê­šõº"}Ì_õéïDši 0, VoåéîêæÃÏ~ˆ›wnsÿᘗ”ïI} Mz4 )©ÜžÑ¿Šçþ¶“³;ÐÔÔĉãÇÁa?é”Jeÿ3{L4Pg/@AB!–!P=6Zš„’0¼—²Ùœ~äTÚ*R‚S'Nðæ;ïÀU(Ý4}”ï•©|³dZí­˜…twuqäð8Ý]þƒIt&xœMB)€ÒŠp/y1Ñv`;®^;ô¶··YYYIÒÞºS&®Ï°—=˜Ìí KB;™tÇÛsf/sz+ÓÂl•y=åº5~ÁŒ¯©ÏÙÖl…I䄉 [ J Mó\mö PAKs3O?ñ$sóó\»u“¯ï '%\†0{ðLú§S).ž?OÊcëoÞ®À}zµ¾8 ¯¿Ÿ±Cc¬æWY^^f5ŸOtÊo\jmm¥9Â;q½„BM{’*ƒÒ?šœŒ]Æ^P*•"N[S?±n31zÐ i¸øÔ¯*ú|Í@ÞÑÞ¯/ÜWuBI/%΀û|áBwîE Míïï§§·‡{÷ïsïÁ}ä<ÈS&pAÿ“ÇOÐÚÜR½p¿ U #Ô2ïÌÙ³üêoüºËG…”Ã0ȯ¬°¼´ÌÒòÓ¦¸{ç÷îÞåî;,..–Fµž”Ä(H»p·”T0L? †ÿ?ðéOó~ñÙÜØ`eeű¢Z¶®üÊ ÓSæ¯ÕpƆÿfëµi¤®7*O@„D GXJÀ0÷‡ë:'WÒz_…ûÎW‰0ÜyœleLȲD–¥9 5MÓ>¿pp§N‹Ç&Ž0<8Äõ[7YxkñP —Ítý}}ò:’‰!œÃà¿‚ÿæ—Yë &•J9žqÜÇlëkkܹs‡kW¯òW_ùKÞ½t)ÖÈ­*÷þCŒeÀzB~oø£ÍfùéŸû9ºººèîîfìÐ!m:»¼ÍÍMGêÞ¹}›»wîpóúuÜ¿¯ÍçÔãÕkÊVî@›NjF0wêäÙ‰ñH†=ì×d¤Ò¥«FÑH Ã;p_V˲#|:HØ1S¦ÓÁS'£¢•jHsSO]¸h:5YͳֲNOw7½Ý=ŠòUÿþ|jT®œ8r„‰#ž,ñ˜²­½‹O<ÁÅ'žà‡?ûYfgføüÿÝ@¿vÛÀõ ‰VvK¾%ÀðäSO9R0ΪDKK çΟçœÇ‰è¥wÞáÇ>ûÙ@g Ùl&põÝm ˜ç–auFímyËP—ˆóâ=÷ã]²óJ[Sy^ºpñbè Ìd³HõOÊê²’÷r‘e:ë»”2¢ -ÃJ¡LŠ «ÂðTbá{'Èpªqí«·Û!¤ù­ÆJéYƒ7ªÅR–¦HcšCU§N#ìr¼º÷è4Ô{Ÿöý8 ÁUZÔ“w?—0pôØ1O¶Ú­JÂù "uðÛ ÅÉ{`¯ltôÏA Qå9f·šø|>X&cÙªûæáÞû¯.O +…4S§ #€x#¿™Öo§G>>qª._ú®ßI+MAáç7 XBÅž¤AîX÷© ½òÏÛV×Cö¥­'zP) Œ«‰b¼Â0PoÀžnŽA:€#Çô=J¨èâó!ËŒÙL¶Ú‰ €dÊZ²û›¾3jUz>á`Çé×íÜŠkY•?IÞ½—ó4 ï[Lìƒ*B°?¥Ò ut®(e[ü¤.:yÞŸ+4à>ÃD"áàj‡ UŒóµ«N”t °›úcEo°¶ºÊúÚš/Ü>¡'iÔx0;D¥Rñ8¢R&«Ü¾TF~V¿ê™Mhá –¡ý­0·0àF‚È‹-™ã /Ó[á>… t݆›ñ±À·Ž©UMSÍLÁÊ?bµØÀ) ‚\ !\góíþkÑÐÀàÀžÁ5×Çé:˜ïú­HãÛÒ“YJÓ ¹a ò‚¬ÆXìi’QGô æVªR©¶]€ëkk\}÷ Wß½¢Ïår455±¾¾žhÃP’€zLK­\‹ˆ+LÒ—³³³Ãë×¹qýº/®½£ƒÍÀG šçº¤¤*×BÚVzÐä—RÂ6T®–©Ž¢=Uõ Z°?Ì Ü¨¡âí©Â}5½”&*±§ë’tg$BB»P²VÉÃðÒß;¤´G¾‹ÅbM>úcz¢$ð(ë) | =ѦµÕÕÐøt&8j®7³WŠ©à¹«!¥y–ýWÀÈU0:*ȉ舉©ž4éÁtÈŠƒ7Ð;z{£5ñ*ã;FA&ã;w1…À´KÉj»Ú˜àyúä²GLh4€Þ °Ó€éÀ^êêr÷ Ÿ”2éŒï>…ˆV²%Û#@(sG3„`|ìý=½lmo³±¹ÉâÊ2……ò¶„W ÊäwgHŸ´›øjñÿôMS4£½·íŒ/ lc:¸i>ƒáÁ!¿>2ÉÈï<ob©•€A÷ìùíà'bz®—N ±%`=„ÀôÔƒémJ§ÍSJé2V‰Zj‹ƒ€Â^L´p°g¦öOI*%hmm¡µµ…þ¾^ŽŽ³º¶ÆÜâ‹KK”§+Tþª ó¼Î@àŸë«Lïb\G0˜y*ó9[e‰\•¦Þ-kæÁ¨í­­§½µÕ)«^#¿¦×¹J ~ôÒ.ÂE•reOzÔJ©TŠ>çÈ8“ê1ÏKŸøt`oº8áÞ¸ÇêL(€"Ã&bn ùó»óøw°êæ®’ö¶6ÚÛÛ84:Ê¥+WØ™,Py¡LêÒÐì+$pôwW´.¡àñ/•‘/»ï#—Ë1Ð×Çà‰š›šðQ Ó$ðL·e³ ÊŽoJà)`¯æÿµRWww,Uõ u;8Ng@ã xÏHÓ­‘І’ÀýÄS3î,¨ Í3•ÐÍráÌ.]½Já^‘ÊÃ2é“™jÑÞª\¿5#½óis›2Ç(Jäš=š Féí­­Ú>uÞŸÖ{U}ñ˜;éÈoÓAƒÿ»9  –Ñvq8h-Æ@v\²€„C^¹l‚ŠÙ%Ü7˨î¶ë¤ñ:¹¾€\6ÇùS§yýÒ;—+¤ÇÓ ˜jÜŠ³¦Gª†«úcÞ0=ð 9qô( \µ—ÝÜ£vøÈìt¥ºÔP-BŸv7â  €þè€}Ù è­¤ÞB`ê‘Þ °&ªA•Põ¨S¸_[µŽ`v} ´·µ±6¹Ž±dиyP•|NÑAL¯4JVÊÛr]26<Â@oŸ“z;Æ¿‚âpé˜[£ÁWKrj QÏí  €¾þÚ\ÅÙøD{v0HXÜ®@t‡º)@mº€$£R|áà­3zèêè`m~¹4çWÚÖó H+\nHä¤$“I3:2Œôp¿y4 ¼Z½’T+I‚ËñÑCpôø1Y\\`iq)òXïdänW__@ºú‘”nç+u9,iÜt’ó÷`±@EÉ ~Ç+›ÜiƒjÙzèlïàþä$bSšu¨åJ4+àV›\Ӏ꧔žø ‰X ôö‘qöù»•“‘ˆ¹ãž›˜¬ Ñ£‡R9\tvvò/ÿMKK‹™CJVóyY\Xdqa¥ÅE™››ãέÛLOM…¼»ð¾e´:ºœ ”$nqq‘ÂÎŽ6Ý'¿÷oñ]Ÿü$½½½ì ¬¯­™~Ö×Y__gmu•5ësêÑ#MNÖ´Œ“Q@øƒž{ PVÕi47ÓêÛUŸm{.W¤d×UîA Ò Ó Y°­­.•‚[Q/1wع‰eÄ¡eHGR.…æÿÉþˆÃü`¾Çή.:»º|®ÂlÚÜÜäö­[ܾy‹[7ÍÏ;·o³ÐçUê³À^)ÿï Š«UL{çÿVòL&Ã?þ¥_ò­ƒzI-g{›Û·osëæMóºqƒëׯ³²¼˜?moR‘º1Qø8Pÿ,‚ÐCrQ/ô°mw°´¦o™*Ò×À~÷§4-ê¶A–% ¹œRL0ß|¤O¯K»—è¡R©D2Ï…'Ÿ÷+%ÍÍÍ\¸x‘ /:á•J…úÔg,û—` ›ì•P¨éh°Z…À£G“Z$ô¡˜ÞÞÞÈü*toljòyžŸŸç;?úQŒ'æ6U«,³ ofùºÌ±…:±·èa{{‘:Mȯö{·ÀÃðêw/ÓÛ¿Ÿ€[ÛÛ´·¶íz$–ºyü>¢‡¨ù¿‚' 'ÕħR)VC|SÚõõõõïëè¯À:í-•‡ÅIAõaÇÝРK×ßßÏSO=KNgþ®r¬Kš—®K+e5ë h£yÙÉ<àz¹V[†ûRi»°MÑÒPÒÒÔ v¨2´AÕs°¡xFFMcåkR°¹½UMç< ü—ïîôž€uù«Ï>^ú¤õI)#áÿÐð° þ«ïCGaá…BÍÍÍÐú::;Èæô~/öÒ f;€8qà‡¸A+ÇOœˆ•?Nªçªùó:Ž*bAïj„PGDûëB›Ð 4ŸãOWö‰rì·õ©¸WÃ¥™‘lmmûN ÷÷p4ß-z€hÐÔÔŸ„–—–"Óô÷ïÝèF»²ˆŠÓÅ!€‰#Gj*_m¯.•ΤqUu¦"ž€P…øÑµkçZµ€Ú„^(®®¯±¹½jU¨o·G'KÀ-(4L_ý- ;$›Ë[Ã-ý¹ƒ4ÂAI[o]@ÜúôËyÕL™lÎ[Ëè°´-zt_{mÛ ^B =;?ÄCôrMJ«gÖãí³~†Ç¬ ª&ß zð¤÷¾Ð©ÙYSyT ÓÒψ^˜,Áß ?Ó»tÍ@”çËlnnÑÒÜÌlÄfðãAæ`´®)èw’ð™™™ÀzlJâ ^£?Dè’T<·­Æ†¡}BˆX>Ö¢ê°éîíÛq)ËÀ=/·/ÿä²ú§„&ÖxKUïźÂtjzϵ±¹ÉÚú:ôýŠО߻æÿÕïR‚4¬Ëú®Æ«z)A #æý<˜zänÓ5H½ÿŸÿ!ù¯úëìg å’^IlÓí›·BW“’P˜g*›ú4fÀõ`ô¨2{ÞMüüü¼vîÕÞÞîXçÕùUÚX_54J¥R *#´S¶ýM!5{rüé÷ =`zÎr3=¢°w7Úƒ¤'Ø3-`ȼò3«ä×ÖéhkÓ¬_ Õ±ƒ]ü–¢Ñƒçá!ÍÆIè Ü&Ã0øùŸý9Ξ;LjåttlŒ¡á!gÇ^\Tpû֭к jTF­áQT÷eÀ°ø ù¿”’/}ñ‹Œ:ÄØØÃÃäÒéšÎ=˜Ma @¯>ÌÅÚ1Dá +ÁW™;y•)¬°­MVVW]ÎR]ºó½:#{¨Ê/Ó«Ôœ1'x8ýˆó'OiïDßu„ƒ¦Œš¦Â$5¯IR)GÛ\~ç—ß¹ä K¥R 02:ê\££#ŒŽ1<:B“f;ôí›1@„ýKíF(Ôä<*.(Þ?ÿ7ã×ÖÖùåú'4N322¨ímuìc‡Æ¢·¿î®.Rk>!7CàVÚ>«N3B»U€€ÐŒ­{ŒüL¡–qê¤) Í ×õÃ¥õÒÈQÉÆÃM–VVèîì"¹u÷XG-è!à9ûƒ\¡åà02 ƒ™éf¦gxý›¯ù⻺»á0BOOK1VTPïQ>Œ"÷Ô²Ô?=5M˜âŦJ¥ÂÇyøð!ßМ¥J¥èî¯—Þ¾~:::(‹¦ 渕R}Õ£öh…\PZ»8·€¨ =èíÚõ« ËËlnmÁ¸©üôçþ©¿tp?)µg@L NOÑÕÑá¼_ýýéŸE•’ ý{ò ë¿f)U®$Þ-­,¯°²¼Â»—.'ÊW«3ÐÝ ‹X:€zéêåÀ0 sCÆâ"\ †ü^2Ï«×tš€9»:ߎ•V“> =¤\ÒÁÙ¢ÑC¥RáÑì ¢Q /Jd“Ô¯ý»VG9.Ù¹S`~i‘þ/| @2?ìb3„C~¯ ð9µè£ÿ8¿ú¿N&f}cƒõµu66ÖÙXßp>×7Öɯä¹w÷.wnߎí 8p?¹EöîB2™ ©”@ˆéTŠT*…H¥ìÍcN‰ÊVëÚPwea"@8¬m¬“_[Eôäyiºå:¨Ô œ1#˜]˜£«£Ãå@Tèž] 1Ÿü(¸;k%R ØÚÚʩӧ}a­­­ ŒhóHinuøà¡éøÖmnß¼Å[o¼)†<£ÿ~S¨ Îh ”Ëe´ižÿèGhjjBAOC===‘.‹Ü»{—Û·L—ËW.¿Ë7_}5’áÃÚä"JAÊîK)sM>D@$AjL¥RáÑÜ,"mšûÒ]Ó­í/ ‚<%‘oÁ£™iŽw¢duž…3¢Z'ô _¬f~òé÷9.Ö]MS©ããŒOŒóßý]üø|Ž[;‡«óÿýýa—>ãÄÌLOŽØÏ~èCN9Ž*lÊårœýþ§}aµ0š”’íí賆,`Ò:êµÛ' 3gT| À¡Ã‡NT–.m*•â™=ËŸþñŸDæ©7†:ñ „T:EJØS ¡ÙÖ7×ɯ­!z0-þ2ô÷R'æTà«‚Gs3´µ´Z+.Ur÷.ÿüI+ v…Ì•J8ó<ýþ÷»«©A)n‡ïìl‡Ö00>¨çš¿Ž™×4ÿæÙgCË‚x‚ ›Õ»T~Ü& „>ä ©¹¹÷ôWI‡1÷ Ü.1»8Ïpÿ€'Jq©åÖE­€ˆšÿg2OŒWËÞó±ÀàÐÐcþ6í‰K0p3nÐ Àù‹"W¤D¢}M‚ìå*U@,¯­R®”á4ïèï¥&༩\X^¢«½“ÆÆøu#aký¾´®x€ðØ_(è!Êx`pP;ÿ÷RÜÙÙa{k+2ÝàÞªk?˜"Lƒ(x­V_FÐððH슪s§-m:m lîl›£þÞ[ÐßKý ϘïìÑì4º5yûgœõ{÷zu÷ —¤îÏ´`h 9oܽ»÷b­TEMöšÅ]R&+ÃôdJgõoxt$v]Þ2½éïÜ öü^ C¬¬­™–uOðÞƒþ^²,4OZÎç]LO †GÃðækîK¥ŠOì–ùî„x¦¶©³³“ÆFÿ$û5úÃ.]‚© 7žöA³l6Koooâ²té¥!¹w÷n¬<‹ª÷™__7;è{ú{©s*° ˜Y˜£½¥Õñþ¬»«Z×Ug^¥têWc–]•¬Qž€^üê äWòœ8y‚ñ‰ ‡‡¦³+Üe½.îöÍh .†•¾[ª‹K°°4ÅBA{4R*•â¿ÿµß`tt„áцGF¥¥µ%± ¸ÿÅ¢w'ÚA$ýýì|+A/yLR¾Qafqž‘«Ó»twʲ3ø^7¿—n©Q WÒª¥”K¥HHžÏçyñk/ðâ×^p…765144Äаu 142ÌÐÐ]ÝÝæ4ÃRöV*†QáúÕ«¡u±M€÷’¹ƒhë?ošééimy…B?øýß÷…wtv222ÂÈèÃ#£ Ð?ÐO__?}ý}ôôöúì³ãø]<-À )Y^[5!ó“¼÷¡¿—0QÀ”`y5OWGÍÍN´¶Ë'Òø. ¬ Â.ˆímîݽ[w”9sþ¿—‚!±G ¤ifúXÍçYÍç¹zåŠ6Þ>E¨»§›R©ÄÎökkk‰êBÐÐØHSs™L–R±H¡P X(ìÂYDm˜}uc­ ýÇk.æ`S/ȳ^5÷6›p;D µš„ÀÝ}xƒõö¥R©&;ý½&uà~C›/Úi ˜ªó6`)%+++¬¬¬$ΛJ¥bpx$p¹§\.S,(vÌÏ‚õÛü¬ÂÈÝsj¡Tdc{ë[ú«”ÂTNÂÎté¹Ú›[õæÕ©”eb]«Y5®Ðr¥ÂæfôrÜ~’T¢¬÷cJ8°¯ÝšÛ+›šš›9zò9k=Z"µ{2™ ™L†fÍÙð`Ž&Ž@Ø© û3öj°²þ- ý½Ô†¹yÎÜäÔÒЄmf­#u¿…Љ*‹+8Ay†” &²{sk•‚ö¨  >ö¶Eú”Ýí*ÀAp’Éf9zℹíRyÞAŠ$ó§þ~²Ù,Ùl––ÖVm|±X ¥bÑy^ë[”Êåomèï¥Qà7 V7×éjëLjZP„ïÁ°…‚æ©ÏRJ¤!)–J¹ânJÙ ¸_m¥Øn`æ €#ÇŽ‘k°·¦£b±Èj>Ï+¯½ŠèÈ ò[ú{©8<‚ÍMZ›ZÈjnDSÔŒý¤Zv¡¶wthm`Wb{ŠkäMó¸@cc#-m­>#×AV”ßÂD&…ät‘‚††nß½c.½mýwK½˜¨Èo$SÞò´ÕBÞ%@›öµ$6ŽÓ@›1¶¶¶Èçóµ·®ÔÑÕå³<óÉÛj,:8"L8LN=b~aþà¸öÞoJ'~Ø)î°SäჇL>xÈÔ£©@’ad›(;€zþ¨‚ |ôãçç~á;¿í2K¥s³sÌÎL3==ã†[7orçÖíÄË>¹œ ÿU¦zà‘"!z¸}û7oßr ^¤”°Œ)à㥠¦mÀ5XßÚ¤­©5–CŽ(J ãŸûȇ™Ì¥Ýþ~úú9wá¼+Î0 f¦§-0Éÿó_bv&ú܃`¦Àaw§ž”2Ðà÷|ïßÒ–™ÍfetlÔ—g}}Ko¿Í[o¾Å[o¼Éµ+W#yÊåÜ@ÛbÍÎÇ JŠî޿ǵ×9æ¶XY’0 åÛÓ€.¹#YZ[¡·£;ñT`·óö /Ö¼ò%„`xÄÜÍú̇žå/}=R´µµÑÔÜšf¿¨¦sÔø°—dtñÉ'—ÙÖÖÆsÏ?ÏsÏ?˜» _øê×ø¥Ÿÿ…Àú³¹œ hïHèâkD†apãæ Dƒ@>'aäÛ.XÈ-išÇþM§ó¹î ä·Ö9qì8BRµ¢Ü)¸Ð_½uCš}ù6% q¦A6ƒvu.@XšõõuÖ×ו3ÍàÐ=½á¾ÿÕTCCGŽ„–“„ ˆ¤èaiyÙD(Çc˜Oú°ò‘„M¾-$0i~ŠYØÈopõÆ5¾ããßé8z@ÉÚ¤e›WÛÂÁþ½8=42¬ ¯ÄÛ ˜J‘S€Ú€3èØ¦­­-–`ѵǛgg;Üír.—Õ2®ëÃܬԟǓW—ß° ê¤ú”Ûe`Šo/nÓ ²ù´„>àìÜÜáúõk\8_u›ÍdÈf2´h6i†Áj>ÏÊÒ2«+ùĺ¢ážy¢âÊqÀB±5.I,!x °ÁÞÓ˜HW¾o+Âëj6—s¯ßÛy­Ëo5 ³÷Ñò©[)P¯æ–VS`=–•„=ÀÇ€±D·þ­IELDtQšH©x8“3“hhÅ/ŒS©]ÝÝ9~ŒÓÎ9;>ãP*•òmìÚ%ìVÄ k È0.ÓJ)—«›rÜeÖ" ¶C HR©étÚÏüuë=R@ hijæð¡Ã¦ÂïL¨kë,Û1;ûßtjÞiiw‹&`Š;E*åŠGàV¯ œ9uî Í-ñ”l†a¸œ…ì†ù‹Å"s1VtfÀ‹®¦‰Jä — –ÎIÁâBðQ`Ù\N®cú zkGæßé“§! þBÀ+À"UAð71™_åÕ)— ¤¬…ª×'´"“Í0qüXìiæ»—.›õÔÈüvߘ|ïÐÚƒb A¢(L?„îß»ÇÿÑ¿ã£ÿúýàq”€P}q:ÊYð_¥¸6 AäUZ¡iÍôçNŸ¡»³“›·o±yi qW Ç,ÈÛÃßÜý^*c Ê—r]rêü)T·eû ,ýž•¤ t÷ö°2HØô3?õÓL=žùýôõ÷ÑßßOß@?ÝÝáË’jŸypï~DM¶"üàLB-ã*ëté‚lfgføÕúßòë¿ü«\|ò Ξ?Çé3g8}æ´ïœ@»l›¼u¼óö;mÒV»ÕÑôš@+¯·®jÞ¡Áa†XX\àÞƒû,][BÜÈiÚôcÂa=hùÖ¦ °ÜqÕ´8e#'•4Ï>Ð3°õ90<KÜ»s—{wüN?Óé4½}½ôõ÷;B¡¯¿ÏrTÛG_?ÝÝ]ˆTŠû>àïO-­-´8“yä[ýH—ÔO`ÔF J¥Â›¯¿Á›¯¿á„uttpú쎟<ÁáÇ9<>ÎØáCtvvºêȯ¬ðhr2°üœm`S‚ÃFƒÜÎê‹î¼ý}}ô÷õYû0õpãhÈ^i® c ƒ&M3¾U¨ì`2þm“™—´µ·qòìI†£OÌõõGMÒ†ÊÀÀ¦V*ÌÍÎ17;˜Æ}ìììõÒÒ ÔÙ-¸.ŸÏÇ:ÍK«««¼ò—yå/»ÂÛ;Ú9tè0CÃC´´¶ÒÔÔÈÊJ¸Ÿl6«]îÝ+^ƒ~m™ê¨îM&<ÕÓÚÒÆ¹3ç8qüSÓS,-/±ü`…Ê "'=Ö’X¦ÃÌùò{!”1~˜æ<ˆe,JÚ;Ú9ñÔ Ÿ}|\è­#;o:“6•‰{Bf•Š* T:HðbnR)ÎË™­ó6àµÕ5Þ½|™w/Ïù½”ÍeqÙÓW¤Í˜¢R?ÜW„€ ¹lމÃLž@JÉúÆ:Ë++,­,±|}™ò¥2"+ d»4÷Ñ÷aÚd=×A@ Lf·¯m`X±" ²$)AOwƒÇè Ù2‹¸Ÿìn̲í¼ét¦Ž`÷9îYûE‰Ïˆ“6hþ¿Ÿ”Ífµ°< :&9|¢ZhHvhzÚÛÚhokcüÐ!67·XΛ.ÐWæWØy°ƒaˆœ@4 Œ&ÃDM˜Ó†v벂Pª¬å»a5ÑP.õw ر!›Òå Àˆ‚€uI®!Gg{‡:èì褷Çs¸‹#§õsújPõ´Ÿ¸ ±_$œê/UÒ „Xîf éa õ¦t:C*•VÕÅ%VÆ{‚ ¹¹™ææfÆFFœ°B¡ÀÖö6ÛÛÛlïl³±½ÁÆÚ&;Û;”vLO¸"')QedÛ‹¶rI!Ýñ˜ŸR(÷'AT”­Ok„—‰¬˜¨IA:—&—ËÑËÑk¤©±‰ÆÎFÚ·ÓÑÖnêc|÷±B¦ô‹vù•r9áA/{£ÞSS€š€ûî ØÝ>s@éÂà»Q<ízÈåÈåèìè´Ú¤¦“ìvØÞÞ¦P(bR†4½èJÓ“®4¤óÝÖ¹vR:žv¥•¹l–†¦r 9Ëãq ¹¹lŽ\CŽlÆ¿ÚâoümäAäÊsE Xˆ:lÿçMZ½¨¤‚`ff¯]…·#›ËV;”k³Ôæ–1ôà£ASCM ŠqA—æþ„6ºÔ“ÁæzîEŸÃÑǯ(9ÐâYCíïi@É_šË@·¢á*>B@pôà —Þ"Âî?ŠÁîG›_ê…kX=®2w! ‚ò Å =jjj¢­}o¼ÕJ5ùˆ³»B»a™¬‚<åùš“A zðBa©CeÆ®ªkp&|ùCêñ•[Ê@ô`é þ°‹U;=¸_ÀÒÒR“Xë/¡ÝV€îŽãîGšî‚ç=‚´ ­µÌ á`ǽ·Ñƒ;mqG‚ïxn!ÄÌNm°÷,›ÉXmŠ`ðÐ95¾ü»E¾CD5»ôJ_™ºiC­ˆä`£‡dJÔ(ÐØØÈ™sge{{Ç<š~u•µÕ5Vó«‘ÛÍ“ÒA³„›âÎûí´~?Õ|?õÿ>-­­ÌÏÍ177ÏÜì,óssÌÏÍ×UZg²ömÅ_rsBC:Ônу«D+±p…*B#ñÚïC[¨, „ x—=x…P2%j)¢OýWÿõ/òÑO|,P–K%–—W˜zôˆÉ‡“<š|d^'™™ž‰ôI饤”†0YåÁƒž¾¾F%ˆ33³è˜c|bœÏ~îGóåWòÌÍͱ07oz¾q“›7npïî½Dk¹étÚl£îFŒþ. vƒªùEHõŠ@M™I6&yÄ~£ üÂSWÀè¯Éî•r9rkî¹ çCu éL†¾þ>úúûxâ)·Ër¹Ì¥·/ñ¿Î‹_{…ù…кà`y²É‹ŠRÊF!¯¼òJáé§Ÿö_%‚lž}îC¡ éìꤳ«““§N:aBJÅ"wîÜåÚ•«¼ðÕ¯ñÆk¯‡JÞl6ëVŽÅ-|ië„ü׃*t™å@˜€8ØèÁIˆ’1¸¿z·`-DÀÿ††ºº»㣔¶™L†§ž~Чž~Š‘Ñ~û7+4=Làu² æÍ¿üòË¡b<Èg@ Àø‘‰XÖ…Þ:2Ù,'OäSŸù4¿ù?ÿOüñ—ÿ44O&›Aõãvæ)ì0ïŸ'ër·L{™ùÝÁÕº"Š•Òw¹œ‘¨ù¬$1µ7 ©JyŸ¾°.Áêü å"Þ³s;X©69°~_úËûN£àÿàÐ`à –´Ÿîvb¥;fÀÞ{ó"€[˜n*¸~ýz,WþmÀz011¡M—ì|Q[ÿùÏo ÏÂiiqQë]jå‚éõbÍ%@?j÷ºŒ„üʈ¯c_7” ÷/'­ ˜ÿªí ˜"è›®/¯’$Þô"ì™ø« m“{r˜—]SŒ6©u—Šáî¹766ÜÏvŒ„s”mÀ¯¾úªª@Ûv €¢9¼~Åþ}åÊ•–?üÃ?tŽFzXA^€ZZZbŸù% üöÝn2—½½e®èïŒnáàŠˆÅàQ÷•w7ÂAÍW8HwæÄÂǨ ˜A“ ­pÕvyZ,… ó »f|›Ü`}ž«JEøgögêúžÎ+ðg17~ðOþÉ?i^ZZòô}G9Å?Ò1ÍÜÜ|hžt:£é\“)$ÎUíMÉÚ–T@¼wЃðGªBQýSÛ ôb©nèhððÁ¾òçÁ£‡“»†apýÚuÂEôÁo¾ùf%ŸÏ«Óþë3*•JËÙlöþK!•JE|æ3ŸÙþÒ—¾ÔØÛÛëÑKUœ"p`yy™Õ|žŽÎÎj§­Q øÎ›o¦Éd2ÖŸWO`¸)¥\A$›Í61½Ðf‡9wîÜæïüÎï4wuuùÞÔOÿ½À[o¼™¸q©TŠþ~‡L¡042ÌÐÐCÃæÕÛ×G*•Â0 ¾çãßh£ÝÚÚJ_ŸÓ\‡½wwTfÃ8£Xíè!Œ’"'OîHç¥Õz¢KÓ ‡"ƒÓÆkRL.X˯ո%=þ³M§Ótuw±´¸k ñGöïb£ŠzÓÛo¿]ùÌg>ãaŸ“R~#Pd³Ùð*ð„.„ ­­­têÔ©ígžyF>óÌ3 ãã㹟üñϧæB¼£ÖØw³™,=}}tvvpýÚ5O‘ÕB;ÚÛiïÔ=äpبŸ0hÆ+U골óÆ;Ü´"¸Luçd\áœÖMIÄn„ƒšqq‘Åù8çìîYÇ¥ææfþý_†°í½ýöÛ•Ï}îslmm©à)å¡À¦l6ûÛÀ¸¤HØh5Rí6>iºzå;ˆT«K xæ}ï'.#¼WÐÃìÌ,«ùUm ƒŽ=¿úÝßÙ×:‹Å"_øÂ¶¿øÅ/z ú6Q)ebž\*•þ”²ø L°€^Kï ¢(ùn4êq¨V þã¢Ý¶7(_à*‰F}¯ÓÎëòºëÑkô«+Úe튂võÁÑûW©j‹¼,·Ÿ´ß›€Þ|óMã¹çž+k˜¿|Øf~Hp.@¹\^>™Éd2Bˆþ.p hrRÊ”@„z¶ u£Òxúxà³ DRJâ;a/ÊV*‰•_¤Û®"¢YA,“¡‡hmLðNFÖ@ ØÞÞ¡œÈðÞRKk3=Ú“²¥”,,,333åW_}µüçþç¹ååå þÁ}øN)åÛj`¬)À·é[“F‡F†W–¼\§ÄAiIãêþmà à#RJŸö<žyÞ·éoÅ™^ìv WËÔ±–©æßpº<+¥|ZÇüPÃÑ`ߦo=J¢GØ«ø¤qßfzTc» ü ð/¤”áf³Àÿ5½/öU¹î%IEND®B`‚(€ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþóÙ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ U› Í Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù ÙÜßßßßßßßßßßßßßßßßßßßààààààààààààààààààà ÿ ÿ!ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿüIIIòIIIòIIIòIIIòIIIòIIIòIIIòIIIòIIIòIIIòIIIò:::òùÿÿñRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ?;Aÿ?;Aÿ@DÿB>DÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿB?DÿB?DÿB?DÿB?DÿB?Dÿ627ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3-4ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÑÑÑÿ@@@ôÿÿJÿÿÿÿÿÿÿÿÿÿÿÿKøÿ+++ôƒƒƒô¸¸¸ü†…ˆÿÿÿÿÿÿÿÿ*&-ÿA>DÿZX[ÿrptÿ‡…ˆÿÿÿÿ #ÿ84;ÿ84<ÿ84<ÿ95<ÿ95<ÿ95<ÿ85;ÿ85;ÿ85;ÿ85<ÿ85<ÿ85<ÿ96<ÿ96<ÿ96=ÿ96=ÿ96=ÿ:7=ÿ:7=ÿ:7>ÿ:7>ÿ:7>ÿ;8>ÿ;8>ÿ;8>ÿ;8?ÿ;8>ÿ<9>ÿ<9>ÿ<9>ÿ<8>ÿ<8>ÿ<8>ÿ<9>ÿ=9>ÿ=9>ÿ=9>ÿ=9>ÿA=CÿA=CÿA=CÿA=CÿA=CÿB>DÿB>DÿB>DÿA>DÿA>DÿA>DÿA>DÿA>DÿB?DÿB?DÿB?DÿB?DÿB?DÿC@EÿC@EÿC@EÿC@EÿC@EÿD@FÿD@FÿD@Fÿ;7>ÿÿÿÿÿÿÿÿÿÿÿÿÿ"#ÿÿÿÿÿ ÿÙÙÙÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿŠŠŠ÷ÿóÿÿÿÿÿÿ øþ‰‰‰óßßßÿßßßÿßßßÿ©¨ªÿÿÿÿ„ƒ†ÿ§¥§ÿÀÀÁÿÚÚÚÿáááÿáááÿáááÿáááÿáááÿB?Dÿÿÿ ÿ;8>ÿ;8?ÿ;8?ÿ;8?ÿ<9?ÿ<9?ÿ<9?ÿ<9@ÿ<9@ÿ=:@ÿ=:@ÿ=:@ÿ=:Aÿ=:Aÿ>;Aÿ>;Aÿ>;Aÿ>;Bÿ>;Aÿ>;Aÿ?DÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿB?DÿB?DÿB?DÿB?DÿB?DÿC@EÿC@EÿC@EÿC@EÿC@EÿD@FÿD@FÿD@FÿD@FÿD@FÿEAGÿEAGÿEAFÿDAGÿDAGÿA>Cÿÿÿÿÿÿÿ*$+ÿHDJÿgchÿ…‚†ÿ£¡£ÿÁÀÁÿÚÚÚÿ@:AÿÿÿÿÿÃÂÃÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿAAAôÿ ÿÿÿÿÿÿÃÿŒŒŒòßßßÿßßßÿàààÿàààÿÂÂÃÿÿÿÿÔÓÔÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿâââÿmkoÿÿÿÿ;8>ÿ<9?ÿ<:?ÿ<:?ÿ<:@ÿ<:@ÿ<:@ÿ>;Aÿ>;Aÿ>;Aÿ>;Bÿ>;Aÿ?DÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿB?DÿB?DÿB?DÿB?DÿB?DÿB@EÿC@EÿC@EÿC@EÿC@EÿD@FÿD@FÿD@FÿD@FÿD@FÿD@FÿEAGÿEAGÿDAGÿDAGÿDAGÿEBFÿEBFÿEBFÿEBGÿEBGÿEBGÿFCGÿFCGÿ ÿÿÿÿplqÿÌÌÌÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ}y}ÿÿÿÿÿ«©«ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÑÑÑÿÿÙÿÿÿ ÿ///òßßßÿàààÿàààÿàààÿàààÿÛÚÛÿÿÿÿØØÙÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿwtxÿÿÿÿ74;ÿ=;@ÿ=;Aÿ=;@ÿ=;@ÿ>;Aÿ>;Aÿ>;Aÿ?DÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿB?DÿB?DÿB?DÿB?DÿB?DÿB?DÿB@EÿB@EÿB@EÿB@EÿB@EÿC@FÿC@FÿC@FÿC@FÿC@FÿDAGÿDAGÿEAFÿDAGÿDAGÿDAGÿEBFÿEBFÿEBGÿEBGÿEBGÿFCGÿFCGÿFCHÿFCHÿFCHÿGCHÿGCHÿGCHÿGDHÿGDHÿ$&ÿÿÿÿ|€ÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ¤¢¤ÿÿÿÿÿ““ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿúóÿÿÿWÿŠŠŠòàààÿàààÿàààÿàààÿàààÿáááÿ.+1ÿÿÿ»º»ÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿvtxÿÿÿÿ416ÿ>;Aÿ>;Aÿ?Cÿ@>CÿA>DÿA>DÿA>DÿA>DÿA>DÿA>DÿB?DÿB?DÿB?DÿB?DÿB?DÿB@EÿB@EÿB@EÿB@EÿB@EÿC@FÿC@FÿC@FÿC@FÿC@FÿC@FÿDAGÿDAGÿDAGÿDAGÿDAGÿEBFÿEBFÿEBFÿEBGÿEBGÿFCGÿFCGÿFBGÿFCHÿFCHÿGCHÿGCHÿGCHÿGDHÿGDHÿGDHÿGDIÿGDIÿGDHÿHCIÿHCIÿGDIÿGDIÿ*$,ÿÿÿÿxtyÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ®­¯ÿÿÿÿÿ|y}ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ;;;óþÿÿÿ¡ÿ¿¿¿üàààÿàààÿáááÿáááÿáááÿáááÿGDJÿÿÿ‰‡ŠÿâââÿâââÿâââÿÖÖÖÿ¿¾¿ÿ”“•ÿc`dÿ2.4ÿÿÿÿÿ/,2ÿ@=Bÿ@=Bÿ?=Bÿ?=Bÿ@>Cÿ@>Cÿ@>Cÿ@>Cÿ@>Cÿ@>Cÿ@>Cÿ@>CÿA?DÿA?DÿA?DÿA?DÿA?DÿA?DÿB@EÿB@EÿB@EÿB@EÿB@EÿC@FÿC@FÿC@FÿC@FÿC@FÿDAGÿDAGÿDAFÿDAGÿDAGÿDAGÿEBFÿEBFÿEBGÿEBGÿEBGÿFCGÿFCGÿFCHÿFCHÿFCHÿFCHÿFCHÿFCHÿFDHÿFDHÿFDIÿFDIÿFDIÿGCIÿHCIÿHCIÿGDIÿGDIÿHDIÿHDIÿHDIÿHEIÿHEIÿIEJÿIEJÿ/*1ÿÿÿÿpmqÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÙÙÙÿ¹¸ºÿ|€ÿÿÿÿÿdafÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ¿ÿÙÙÙÿàààÿáááÿáááÿáááÿáááÿáááÿa_cÿÿÿ306ÿQNSÿ:7=ÿ$ 'ÿÿÿÿÿÿÿÿÿÿ+(.ÿ@>Cÿ@>Cÿ@>Cÿ@>Cÿ@>CÿA?DÿA?DÿA?DÿA?DÿA?DÿB@EÿB@EÿB@EÿB@DÿB@DÿC@EÿC@EÿC@EÿC@EÿC@EÿC@EÿCAFÿDAGÿDAGÿDAGÿDAGÿEBFÿEBFÿEBFÿEBGÿEBGÿFCGÿFCGÿFBGÿFCHÿFCHÿFCHÿFCHÿFCHÿFDHÿFDHÿFDHÿFDIÿFDIÿGCIÿGCIÿGCIÿGDIÿGDIÿGDIÿHDIÿHDIÿHEIÿHEIÿHEIÿIEJÿIEJÿIEJÿIFJÿIFJÿJFKÿJFKÿJFKÿJGKÿ618ÿÿÿÿ?:Aÿ›žÿ›ÿŽŒÿ€}ÿjfkÿE@Fÿ"$ÿÿÿÿÿÿÿNIOÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿÚÚÚÿáááÿáááÿáááÿáááÿâââÿâââÿzx|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'#)ÿA?DÿA?DÿA?DÿB@EÿB@EÿB@DÿB@DÿB@DÿC@EÿC@EÿC@EÿC@EÿC@EÿCAFÿCAFÿCAEÿCAFÿCAFÿDBFÿDBFÿDBFÿDBGÿDBGÿDBGÿECGÿECGÿFCHÿFCHÿFCHÿFCHÿFCHÿFCHÿFDHÿFDHÿFDIÿFDIÿFDIÿGCIÿGCIÿGCIÿGDIÿGDIÿHDIÿHDIÿHDIÿHEIÿHEIÿIEJÿIEJÿIEJÿIFJÿIFJÿIFJÿIFKÿIFKÿIGKÿIGKÿIGKÿJGKÿJGKÿJGKÿKHLÿKHLÿLHKÿ=8=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ618ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿÚÚÚÿáááÿáááÿâââÿâââÿâââÿâââÿ”“–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"%ÿC@EÿC@EÿC@EÿC@EÿC@EÿC@EÿCAFÿCAFÿCAFÿCAFÿCAFÿDBFÿDBFÿDBFÿDBGÿDBGÿECGÿECGÿEBGÿECHÿECHÿFCGÿFCGÿFCGÿFDGÿFDGÿFDGÿFDHÿFDHÿGCHÿGCIÿGCIÿGDIÿGDIÿGDIÿHDIÿHDIÿHEIÿHEIÿHEIÿIEJÿIEJÿIFJÿIFJÿIFJÿIFKÿIFKÿIFKÿIGKÿIGKÿIGKÿJGKÿJGKÿJHLÿJHLÿJHLÿKHKÿKHKÿKILÿKILÿKILÿLHLÿLHLÿLHLÿC?Dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!"ÿÛÛÛÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ À ÿÚÚÚÿâââÿâââÿâââÿâââÿâââÿãããÿ®­¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCAEÿCAFÿCAFÿDBFÿDBFÿDBFÿDBGÿDBGÿDBGÿECGÿECGÿECHÿECHÿECHÿFCGÿFCGÿFDGÿFDGÿFDGÿFDHÿFDHÿFDHÿGCHÿGCHÿGCHÿFDHÿFDHÿA?Cÿ96:ÿ/.0ÿ!&"ÿÿÿÿÿ  ÿ  ÿ  ÿ  ÿ ÿÿ  ÿÿÿ ÿ"&#ÿ,,,ÿ425ÿ?ÿ6ÿ-ÿ ÿÿ"'#ÿ<9<ÿKHKÿLIMÿLIMÿLIMÿLJMÿLJMÿMJNÿMJNÿMJNÿMKNÿMKNÿNKNÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³±³ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ À ÿÛÛÛÿâââÿãããÿãããÿãããÿãããÿãããÿßßßÿÿÿÿÿÿÿÿ=;@ÿZX]ÿqosÿ‡†‰ÿŸž ÿYW\ÿÿÿÿ<;?ÿEDGÿEDGÿEDGÿEDHÿEDHÿFDGÿGCHÿGCHÿFDHÿFDHÿFDHÿGDIÿGDIÿGDIÿGEIÿGEIÿHEJÿHEJÿEBGÿ+*,ÿ  ÿÿ-ÿMÿ`ÿfÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿiÿbÿKÿ/ÿÿ"##ÿGEHÿMKNÿNKNÿNKNÿNLNÿNLNÿNLNÿOLOÿOLOÿOLOÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿ'")ÿÿÿÿÿ›™œÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ À ÿÛÛÛÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿ1.4ÿÿÿ<:@ÿxwzÿ©¨ªÿÙÙÙÿåååÿåååÿåååÿæææÿæææÿ˜—šÿÿÿÿ86;ÿFCHÿFDHÿFDHÿFDHÿGDIÿGDIÿGEIÿGEIÿGEIÿHEJÿHEJÿHFJÿHFJÿHFJÿIFJÿIFJÿDAEÿ!ÿÿ'ÿKÿfÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ`ÿ1ÿ  ÿFCFÿOMOÿOMOÿOMOÿPLPÿPLPÿPLPÿPMOÿECFÿÿÿÿÿÿ73:ÿURXÿlimÿ‚€„ÿ˜—™ÿ¯®°ÿÆÅÆÿÙÙÙÿ´³µÿÿÿÿÿ…‚†ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ À ÿÜÜÜÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿJHMÿÿÿš™›ÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿ¿¾¿ÿÿÿÿ205ÿGEIÿHEJÿHEJÿHEJÿHFJÿHFJÿHFJÿHFJÿHFJÿHGJÿHGJÿHGJÿIGJÿJGJÿJGJÿGEHÿ  ÿ0ÿcÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿhÿ]ÿjÿ;ÿ*.)ÿPMOÿPMPÿPMPÿPMPÿPMPÿPMPÿPMOÿ*%,ÿÿÿÿÿrosÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÞÞÞÿÒÒÓÿÿÿÿÿmjnÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ À ÿÜÜÜÿãããÿäääÿäääÿäääÿäääÿäääÿåååÿechÿÿÿ’‘“ÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿÌÌÍÿÿÿÿ.*1ÿHFJÿHFJÿHGJÿHGJÿIGJÿIGJÿIGJÿIHKÿIHKÿIHKÿJHKÿJHKÿJILÿJILÿJILÿ!!!ÿ6ÿiÿKÿYÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿbÿÿWÿ#ÿ766ÿQNPÿQNPÿQNPÿQNPÿPNPÿB@Cÿ($+ÿÿÿÿÿÿ~{ÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÞÞÞÿ'"*ÿÿÿÿVSXÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ À ÿÜÜÜÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿ~}ÿÿÿxvzÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿÌÌÍÿÿÿÿ'%+ÿIHKÿIHKÿJHKÿJHKÿJILÿJILÿJILÿKHLÿKHLÿKHLÿKHLÿKHLÿKHLÿKIMÿKIMÿ(&(ÿ+ÿNÿÿaÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿÿÿÿ?;?ÿ849ÿ1.3ÿ+&,ÿ$%ÿÿÿÿÿÿÿÿÿdafÿàààÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿ-)0ÿÿÿÿ?:AÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ À ÿÝÝÝÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿ™™›ÿÿÿ539ÿæææÿæææÿæææÿÓÓÓÿº¹»ÿœŸÿonrÿ>:@ÿßßßÿàààÿàààÿàààÿßßßÿßßßÿßßßÿÖÖÖÿº¹»ÿ+&.ÿÿÿÿ(#+ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿÝÝÝÿäääÿåååÿåååÿåååÿåååÿåååÿæææÿ³³´ÿÿÿÿECIÿ64:ÿ#ÿÿÿÿÿÿÿÿÿÿÿLILÿLILÿLILÿKJLÿKJLÿKJLÿLJMÿLJMÿLKMÿLKMÿLKMÿMKNÿMKNÿMLNÿMLNÿMLNÿJHKÿ ÿ&ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿbÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkhmÿ›žÿŽ’ÿ|€ÿlinÿPLRÿ2.5ÿÿÿÿÿÿÿÿÓÓÓÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿÞÞÞÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿÎÎÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHFIÿLKMÿLKMÿMKNÿMKNÿMKNÿMLNÿMLNÿNLOÿNLOÿNLOÿNMOÿNMOÿNMOÿOLPÿOLPÿOMOÿ@??ÿÿbÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ-ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼»½ÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿÞÞÞÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿåååÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:9=ÿNLOÿNLOÿNLOÿNMOÿNMOÿOLPÿOLPÿOLPÿOMOÿOMNÿOMNÿPMOÿPMOÿOMOÿOMOÿOMOÿPNPÿ#$#ÿ1ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥£¦ÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿÞÞÞÿåååÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿ428ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#!(ÿMLNÿNMNÿNMNÿOMOÿOMOÿPMOÿOMOÿOMOÿPNPÿPNPÿPNPÿPNPÿPNPÿKILÿEBEÿ=;>ÿ638ÿ-*/ÿ ÿTÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿhÿÿ ÿÿÿÿÿÿÿÿÿ ÿ!ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŒÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿßßßÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿNLRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(%+ÿIGIÿPNPÿPNPÿPNPÿLKLÿEDFÿ=<@ÿ659ÿ0.2ÿ)&,ÿ"%ÿÿÿÿÿÿÿÿÿgÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿFÿÿÿÿ"ÿ!#ÿ"&ÿ$ (ÿ&#*ÿ($,ÿ)%-ÿ)%,ÿ)%,ÿ*&-ÿ'$+ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwtxÿÝÝÝÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿßßßÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿihlÿÿÿÿÿÿ(&,ÿDCHÿXW[ÿdbgÿnmqÿyx|ÿqptÿÿÿÿÿÿÿ$ÿ" &ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ9ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿeÿÿ ÿ)%,ÿ)%-ÿ)%,ÿ)%,ÿ*&-ÿ*&-ÿ*&-ÿ*&.ÿ*&.ÿ*'.ÿ*'.ÿ*'.ÿ*'/ÿ*&-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_]aÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿßßßÿæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿƒ‚…ÿÿÿcbgÿÀÀÁÿÝÝÝÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿâââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿYÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ6ÿ ÿ)&.ÿ)&.ÿ)&.ÿ*'.ÿ*'.ÿ*'.ÿ*'/ÿ*'/ÿ+(/ÿ+(/ÿ+(/ÿ,)0ÿ,(0ÿ+(0ÿ,)0ÿ"%ÿÿÿÿ ÿ@=Cÿ`]bÿywzÿ‘“ÿ«ª¬ÿÄÄÅÿÔÓÔÿÔÔÕÿÔÔÕÿ;8>ÿÿÿÿGDJÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿàààÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿžž ÿÿÿmlpÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿ75;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ]ÿ ÿ#!(ÿ)'/ÿ*(/ÿ*(/ÿ*(/ÿ+)0ÿ+(0ÿ*(0ÿ,)0ÿ,)0ÿ-*0ÿ-*0ÿ-*0ÿ-)1ÿ-)0ÿ-)0ÿ'#+ÿÿÿÿ95;ÿãããÿâââÿâââÿâââÿáááÿáááÿáááÿàààÿàààÿa_cÿÿÿÿ0-3ÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿàààÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿ¸¸ºÿÿÿLKPÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿ328ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ@ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ(ÿÿ+)0ÿ+)0ÿ+)0ÿ,*0ÿ,*0ÿ,)1ÿ,)0ÿ,)0ÿ-*1ÿ-*1ÿ-*1ÿ-*2ÿ.*2ÿ.*2ÿ/+2ÿ/+2ÿ*'.ÿÿÿÿ!$ÿãããÿãããÿâââÿâââÿâââÿáááÿáááÿáááÿàààÿƒÿÿÿÿÿÛÛÛÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿàààÿçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿÔÓÔÿÿÿ"ÿããäÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿèèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ"ÿ$ÿ!&ÿ#!(ÿ%#*ÿ&$,ÿ'%,ÿ'%,ÿ$")ÿÿ_ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿQÿÿ*'-ÿ,)0ÿ-*1ÿ-*1ÿ-*1ÿ-*2ÿ-*2ÿ.+2ÿ.+2ÿ.+2ÿ.+3ÿ.+3ÿ.+3ÿ.,3ÿ.,3ÿ.,3ÿ.,4ÿ/+2ÿÿÿÿÿÇÆÇÿãããÿâââÿâââÿâââÿâââÿáááÿáááÿáááÿŒŠÿÿÿÿÿÇÇÇÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿàààÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿ"ÿÿÿ®®°ÿßÞßÿÇÇÈÿ¯¯±ÿ˜—šÿ€ƒÿjimÿRRVÿ88=ÿÿÿÿÿÿÿÿÿ ÿ"ÿ#ÿ &ÿ" 'ÿ%#*ÿ&$,ÿ'%,ÿ'%,ÿ'%-ÿ'%,ÿ'%,ÿ(&-ÿ(&-ÿ(&-ÿ(&.ÿ(&.ÿ(&.ÿÿ%ÿiÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿgÿÿÿ.+2ÿ.+2ÿ.+2ÿ.+3ÿ.+3ÿ.,3ÿ.,3ÿ.,3ÿ.,4ÿ.,4ÿ.,4ÿ/-4ÿ/-4ÿ/-4ÿ/-4ÿ/-4ÿ0.4ÿ0.4ÿÿÿÿÿ“‘”ÿãããÿãããÿâââÿâââÿâââÿÛÛÛÿÃÃÄÿ«ª¬ÿgeiÿÿÿÿÿ¯®°ÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿáááÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿ66;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿ&$,ÿ'%,ÿ'%,ÿ'%,ÿ'%,ÿ(&-ÿ(&-ÿ(&-ÿ(&.ÿ(&.ÿ(&.ÿ)'.ÿ)'.ÿ)'.ÿ)'/ÿ)'/ÿ)'/ÿ*(/ÿ*(/ÿ*)0ÿ  ÿGÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿCÿ ÿ.,3ÿ.,3ÿ.,4ÿ.,4ÿ.,4ÿ/-4ÿ/-4ÿ/-4ÿ/-4ÿ/-4ÿ0.4ÿ0.4ÿ0.4ÿ0.5ÿ0.5ÿ0.5ÿ1/5ÿ1/5ÿ1.6ÿ"ÿÿÿÿEBHÿЉŒÿuswÿ]Z_ÿDAGÿ,(/ÿÿÿÿÿÿÿÿÿ˜–™ÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿáááÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿRQVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ &ÿ'&,ÿ'&,ÿ'&-ÿ(&.ÿ)'.ÿ)'.ÿ)'.ÿ)'.ÿ)'/ÿ)'/ÿ*(/ÿ*(/ÿ*(/ÿ*)0ÿ*(0ÿ)(0ÿ*)0ÿ*)0ÿ*)0ÿ+*0ÿ+*0ÿ(&-ÿÿbÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿdÿÿ$#(ÿ/-4ÿ/-4ÿ0.4ÿ0.4ÿ0.4ÿ0.5ÿ0.5ÿ0.5ÿ1/5ÿ1/5ÿ1/5ÿ1.6ÿ1.6ÿ1.6ÿ2/6ÿ2/6ÿ2/7ÿ2/7ÿ2/7ÿ!%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€~ÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿáááÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿmlpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ('-ÿ('.ÿ('.ÿ('.ÿ)(.ÿ)(.ÿ*)/ÿ*(/ÿ)(0ÿ*)0ÿ*)0ÿ*)0ÿ+*0ÿ+*0ÿ+*0ÿ+)0ÿ+)0ÿ+)0ÿ,*1ÿ,*1ÿ,*2ÿ,*2ÿ,*2ÿ!ÿ+ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ3ÿÿ0.5ÿ0.5ÿ1/5ÿ1/5ÿ1.6ÿ1.6ÿ1.6ÿ2/6ÿ2/6ÿ2/6ÿ2/7ÿ2/7ÿ2/7ÿ307ÿ307ÿ307ÿ208ÿ208ÿ317ÿ317ÿ$")ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿigkÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿâââÿéééÿéééÿéééÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿˆˆŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ*(/ÿ)(/ÿ))/ÿ))/ÿ))/ÿ**0ÿ**0ÿ*)0ÿ*)/ÿ*)/ÿ+*0ÿ+*0ÿ,*1ÿ,*2ÿ,*2ÿ,*2ÿ-+2ÿ-+2ÿ-+2ÿ-+3ÿ-+3ÿ.,3ÿ.,3ÿ.,3ÿ  ÿMÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ[ÿ ÿ+)0ÿ1/6ÿ1/6ÿ1/7ÿ1/7ÿ2/7ÿ308ÿ307ÿ307ÿ208ÿ208ÿ208ÿ317ÿ317ÿ317ÿ318ÿ318ÿ428ÿ428ÿ428ÿ429ÿ)&-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPNSÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿâââÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿ££¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ*)/ÿ*)/ÿ*)/ÿ+*0ÿ+*0ÿ+*1ÿ+*1ÿ+*1ÿ,+1ÿ,+1ÿ,+1ÿ,+2ÿ,+2ÿ,+2ÿ-,2ÿ-,2ÿ.,4ÿ.,4ÿ.,4ÿ.-4ÿ.-4ÿ.-4ÿ.-4ÿ.-4ÿ%$*ÿÿeÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿiÿ&ÿÿ207ÿ207ÿ208ÿ208ÿ317ÿ317ÿ317ÿ218ÿ218ÿ318ÿ428ÿ428ÿ428ÿ429ÿ429ÿ429ÿ539ÿ539ÿ53:ÿ53:ÿ53:ÿ.*2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ96<ÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿâââÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿ¿¿Àÿÿÿÿÿÿ-,1ÿJINÿffiÿsrvÿ~ÿЉŒÿ••˜ÿ;;@ÿÿÿÿ+*1ÿ,+1ÿ,+1ÿ,+1ÿ,+2ÿ,+2ÿ-,2ÿ-,2ÿ-,2ÿ-,3ÿ-,3ÿ-,3ÿ.-3ÿ.-3ÿ.-3ÿ.-4ÿ.-4ÿ..4ÿ..4ÿ..4ÿ/.5ÿ/.5ÿ/.5ÿ0/5ÿ0/5ÿÿ2ÿmÿmÿmÿmÿlÿlÿkÿjÿjÿjÿjÿjÿjÿOÿ ÿ1/5ÿ218ÿ218ÿ328ÿ328ÿ328ÿ329ÿ329ÿ329ÿ439ÿ439ÿ439ÿ43:ÿ43:ÿ63:ÿ63:ÿ63:ÿ63:ÿ63;ÿ63;ÿ74:ÿ74:ÿ2/6ÿÿÿÿÿÿÿÿÿÿÿÿ)&,ÿDBGÿ64:ÿÿÿÿ"%ÿàààÿàààÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿãããÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿÚÚÚÿÿÿ!ÿÈÈÉÿååæÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿrruÿÿÿÿ-,2ÿ-,3ÿ-,3ÿ-,3ÿ.-3ÿ.-3ÿ.-3ÿ.-4ÿ.-4ÿ.-4ÿ..4ÿ..4ÿ..4ÿ..4ÿ..4ÿ//4ÿ//4ÿ//4ÿ/.5ÿ/.5ÿ/.5ÿ0/5ÿ0/5ÿ0/5ÿ1/7ÿ*)0ÿÿ[ÿpÿpÿpÿoÿoÿnÿmÿmÿlÿkÿjÿgÿÿ""&ÿ329ÿ329ÿ439ÿ439ÿ43:ÿ43:ÿ43:ÿ53:ÿ53:ÿ53:ÿ53;ÿ53;ÿ53;ÿ64:ÿ64:ÿ64;ÿ64;ÿ64;ÿ75;ÿ75;ÿ75;ÿ75<ÿ74:ÿÿÿÿÿ$!(ÿOMRÿjhmÿ†…ˆÿ¡ £ÿ½¼¾ÿØØØÿâââÿâââÿŽ‘ÿÿÿÿÿÑÑÑÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿãããÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿíííÿ$ÿÿÿçççÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿ˜—šÿÿÿÿ,+1ÿ.-4ÿ..4ÿ..4ÿ..4ÿ..4ÿ..4ÿ..4ÿ//4ÿ//4ÿ//4ÿ/.5ÿ/.5ÿ/.5ÿ0/5ÿ0/5ÿ0/6ÿ0/6ÿ0/6ÿ107ÿ106ÿ106ÿ107ÿ107ÿ107ÿ217ÿÿ8ÿtÿsÿsÿrÿrÿqÿqÿpÿoÿnÿmÿSÿ  ÿ53:ÿ53:ÿ53:ÿ53;ÿ53;ÿ53;ÿ64:ÿ64:ÿ64:ÿ64;ÿ64;ÿ64;ÿ75;ÿ75;ÿ75;ÿ75<ÿ75<ÿ76<ÿ76<ÿ76<ÿ76=ÿ76=ÿ76=ÿ96=ÿÿÿÿÿgeiÿåååÿäääÿäääÿäääÿãããÿãããÿãããÿâââÿ³³´ÿÿÿÿÿ¹¸ºÿàààÿàààÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿãããÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿ99>ÿÿÿÌÌÍÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿ’ÿÿÿÿ))/ÿ//4ÿ//4ÿ/.5ÿ/.5ÿ/.5ÿ0/5ÿ0/5ÿ0/5ÿ0/6ÿ0/6ÿ107ÿ106ÿ106ÿ107ÿ107ÿ107ÿ217ÿ217ÿ217ÿ218ÿ218ÿ218ÿ327ÿ327ÿ327ÿ..3ÿ$ÿvÿuÿuÿuÿuÿtÿtÿsÿrÿqÿpÿ?ÿ!ÿ64:ÿ64;ÿ64;ÿ64;ÿ75;ÿ75;ÿ75;ÿ75<ÿ75<ÿ75<ÿ76<ÿ76<ÿ76<ÿ76=ÿ76=ÿ87=ÿ86=ÿ86=ÿ87>ÿ87>ÿ87>ÿ87>ÿ87>ÿ87>ÿ$ÿÿÿÿ|{~ÿåååÿåååÿäääÿäääÿäääÿãããÿãããÿãããÿÎÎÏÿÿÿÿÿ¢¡£ÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿIIIòÿÿÿÿÀÿãããÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿUUYÿÿÿ””—ÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿqqtÿÿÿÿ'&,ÿ0/6ÿ0/6ÿ0/6ÿ107ÿ106ÿ106ÿ107ÿ107ÿ107ÿ217ÿ217ÿ217ÿ218ÿ218ÿ327ÿ327ÿ327ÿ228ÿ228ÿ228ÿ338ÿ338ÿ338ÿ339ÿ339ÿ439ÿ ÿpÿyÿxÿxÿwÿwÿvÿuÿuÿtÿsÿ-ÿ*(.ÿ75<ÿ75<ÿ76<ÿ76<ÿ76<ÿ76=ÿ76=ÿ76=ÿ86=ÿ86=ÿ87>ÿ87>ÿ87>ÿ87>ÿ87>ÿ87>ÿ98=ÿ98=ÿ98=ÿ:8>ÿ:7>ÿ:7>ÿ:8>ÿ:8>ÿ$"(ÿÿÿÿxwzÿåååÿåååÿäääÿäääÿäääÿãããÿãããÿãããÿàààÿÿÿÿÿЉŒÿàààÿàààÿàààÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿIIIòÿÿÿÿÀÿäääÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿqptÿÿÿQQUÿÍÍÎÿÃÃÄÿªª¬ÿ’’•ÿzz}ÿbbfÿIINÿ117ÿÿÿÿÿ##*ÿ007ÿ117ÿ117ÿ217ÿ218ÿ218ÿ218ÿ327ÿ327ÿ228ÿ228ÿ228ÿ338ÿ338ÿ338ÿ339ÿ339ÿ339ÿ439ÿ439ÿ439ÿ43:ÿ43:ÿ43:ÿ54:ÿ54:ÿÿaÿ|ÿ{ÿ{ÿzÿzÿyÿxÿwÿvÿuÿ/ÿ-,2ÿ87=ÿ86=ÿ86=ÿ87>ÿ87>ÿ87>ÿ87>ÿ87>ÿ87>ÿ98=ÿ98=ÿ:8>ÿ:7>ÿ:7>ÿ:8>ÿ:8>ÿ:8>ÿ:8?ÿ:8?ÿ:8?ÿ;9?ÿ;9?ÿ;9?ÿ:9@ÿ('.ÿÿÿÿ97=ÿåååÿåååÿåååÿäääÿäääÿØØØÿ»º»ÿŸž ÿ‚„ÿ#ÿÿÿÿrquÿàààÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿIIIòÿÿÿÿÀÿäääÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!!&ÿ227ÿ227ÿ228ÿ228ÿ228ÿ338ÿ338ÿ338ÿ339ÿ339ÿ439ÿ439ÿ439ÿ43:ÿ43:ÿ43:ÿ54:ÿ54:ÿ54:ÿ54;ÿ54;ÿ54;ÿ65;ÿ65;ÿ65;ÿ65;ÿ  ÿlÿ~ÿ}ÿ}ÿ|ÿ|ÿ|ÿ{ÿzÿyÿxÿHÿÿ77=ÿ88=ÿ88=ÿ98=ÿ:8>ÿ:7>ÿ:7>ÿ:8>ÿ:8>ÿ:8>ÿ:8?ÿ:8?ÿ;9?ÿ;9?ÿ;9?ÿ:9@ÿ:9@ÿ:9@ÿ;:@ÿ;:@ÿ;:@ÿ;:Aÿ;:Aÿ;:Aÿ-,2ÿÿÿÿÿŒ‹ÿ~}ÿa`dÿECIÿ(&-ÿÿÿÿÿÿÿÿÿZX]ÿáááÿàààÿàààÿàààÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿJJJòÿÿÿÿÀÿäääÿëëëÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿ¨§ªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿ339ÿ339ÿ339ÿ339ÿ339ÿ339ÿ33:ÿ33:ÿ44:ÿ44:ÿ44:ÿ54;ÿ54;ÿ54;ÿ65;ÿ65;ÿ65;ÿ65;ÿ65;ÿ65;ÿ76;ÿ76;ÿ76;ÿ76<ÿ76<ÿ65:ÿÿyÿ€ÿÿ€ÿÿÿ~ÿ}ÿ|ÿ|ÿ{ÿgÿ ÿ438ÿ98>ÿ98>ÿ98>ÿ98>ÿ:9>ÿ:9>ÿ;9?ÿ:9@ÿ:9@ÿ;:@ÿ;:@ÿ;:@ÿ;:Aÿ;:Aÿ;:Aÿ<;Aÿ<;Aÿ<;Aÿ<;@ÿ<;@ÿ<;@ÿ=;Aÿ=;Aÿ328ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿB@FÿáááÿàààÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿJJJòÿÿÿÿÀÿäääÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿÄÄÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ33:ÿ44:ÿ44:ÿ44:ÿ44;ÿ44;ÿ44;ÿ55;ÿ55;ÿ55;ÿ55;ÿ55;ÿ66;ÿ66;ÿ66;ÿ76<ÿ76<ÿ76<ÿ86<ÿ86<ÿ77=ÿ77=ÿ77=ÿ77=ÿ66<ÿÿ;ÿ„ÿƒÿƒÿ‚ÿÿÿ€ÿ€ÿÿ~ÿ|ÿvÿÿÿÿ0/4ÿ;:?ÿ;:?ÿ;:?ÿ;:@ÿ;:@ÿ;:@ÿ<;@ÿ<;@ÿ<;@ÿ<;@ÿ<;@ÿ=;Aÿ=;Aÿ=;Aÿ==Dÿ>ÿ87>ÿ87>ÿ88>ÿ88>ÿ98>ÿ88>ÿ  ÿ(ÿ@ÿfÿ‚ÿ ˆÿ ˆÿ ‡ÿ ‡ÿ ‡ÿ ‡ÿ†ÿ…ÿ„ÿ„ÿƒÿÿ€ÿÿ~ÿ|ÿÿÿ))-ÿ<;Aÿ<;Aÿ<;Aÿ==Bÿ>=Bÿ>=Bÿ>=Cÿ>=Cÿ>=Cÿ?>Dÿ?>Dÿ?>Cÿ?>Cÿ?>Cÿ@>Dÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÆÇÿáááÿáááÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿKKKòÿÿÿÿÀÿæææÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿ==Bÿÿÿÿÿ%ÿ>>Dÿ``dÿ€„ÿ¢¡¤ÿÃÃÅÿååæÿ¨¨ªÿÿÿÿ.-5ÿ76=ÿ76=ÿ87=ÿ87=ÿ87=ÿ88>ÿ87>ÿ87>ÿ88>ÿ88>ÿ88>ÿ88>ÿ88>ÿ88>ÿ99>ÿ99>ÿ99>ÿ99?ÿ99?ÿ::?ÿ  ÿwÿ Šÿ Šÿ Šÿ Šÿ Šÿ Šÿ ‰ÿ ‰ÿ ‰ÿ ˆÿ ‡ÿ ‡ÿ†ÿ…ÿ„ÿƒÿÿÿÿ$ÿ1ÿ%%(ÿ>=Bÿ>=Bÿ>=Bÿ>=Cÿ>=Cÿ>=Cÿ?>Cÿ?>Cÿ?>Cÿ?>Cÿ?>Cÿ?>Cÿ@>Dÿ@>Dÿ??Dÿ??Dÿ??Dÿ??Cÿ@?Dÿ@?Dÿ" &ÿÿÿÿÿÿÿ&%+ÿDCHÿcafÿtswÿlkoÿbafÿ" &ÿÿÿÿÿ¯®°ÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿKKKòÿÿÿÿÀÿæææÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿYY^ÿÿÿ__dÿÙÙÚÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿÍÍÎÿÿÿÿ+*1ÿ87>ÿ88>ÿ88>ÿ98>ÿ88>ÿ88>ÿ98>ÿ98>ÿ98>ÿ98?ÿ98?ÿ98?ÿ:9?ÿ::?ÿ::?ÿ::@ÿ::@ÿ;;@ÿ;;@ÿ;;@ÿ  ÿzÿ Œÿ Œÿ Œÿ Œÿ Œÿ Œÿ Œÿ Œÿ ‹ÿ Šÿ ‰ÿ ‰ÿ ˆÿ ‡ÿ†ÿ…ÿ„ÿ‚ÿÿ)ÿ=ÿ $#ÿ?>Cÿ?>Cÿ?>Cÿ?>Cÿ@>Dÿ@>Dÿ@>Dÿ??Dÿ??Dÿ??Dÿ??Cÿ??Cÿ??Cÿ@@Dÿ@?Dÿ@@Dÿ@@Dÿ@@DÿA?EÿA?Eÿ'%+ÿÿÿ'%+ÿ¤£¥ÿ½¼¾ÿ×רÿæææÿåååÿåååÿåååÿäääÿäääÿ—–˜ÿÿÿÿÿ˜˜šÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿKKKòÿÿÿÿÀÿæææÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿttxÿÿÿqquÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿîîîÿÿÿÿ('.ÿ98>ÿ98?ÿ98?ÿ98?ÿ:9?ÿ:9?ÿ:9?ÿ:9@ÿ:9@ÿ:9@ÿ;:@ÿ;:@ÿ;:@ÿ;:@ÿ;:@ÿ;:@ÿ<:Aÿ<;Aÿ<ÿ!ÿÿÿÿ ÿ;;Aÿ<=Cÿ>=Cÿ>=Cÿ>=Cÿ>=Cÿ>=Cÿ?=Dÿ?=Dÿ ! ÿ …ÿ ” ÿ ” ÿ ” ÿ ” ÿ ” ÿ ” ÿ ” ÿ “ ÿ ’ ÿ ’ ÿ ‘ ÿ ‘ ÿ ÿ ÿ Žÿ ÿ Œÿ Šÿ ‰ÿ=ÿTÿÿBAFÿBAFÿBBFÿCBFÿCBFÿCBFÿCBFÿCBFÿCBFÿCBFÿAAEÿ!%"ÿ ÿ"!#ÿDCGÿCCGÿDDHÿDDHÿDDHÿDDHÿ?>Bÿÿÿÿ{{~ÿçççÿçççÿæææÿæææÿåååÿåååÿÒÒÓÿ¤¤¦ÿxx{ÿ"ÿÿÿÿ;:?ÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿLLLòÿÿÿÿÀÿçççÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿåååÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<=Dÿ>=Dÿ>>Dÿ>>Dÿ?>Dÿ?>Cÿ?>Cÿ?>Cÿ@?Dÿ # ÿ ˆÿ – ÿ – ÿ – ÿ – ÿ – ÿ • ÿ • ÿ • ÿ ” ÿ ” ÿ “ ÿ “ ÿ ‘ ÿ ‘ ÿ ÿ Žÿ Žÿ Œÿ ‹ÿCÿQÿÿCBFÿCBFÿCBFÿCCGÿCCGÿCCGÿDCGÿCCGÿDDHÿ//2ÿÿ9ÿHÿÿ,+.ÿECHÿECHÿEDIÿEDIÿEDIÿEDHÿÿÿÿ!ÿ€€ƒÿ˜—šÿ…„‡ÿqqtÿ[[_ÿ105ÿÿÿÿÿÿÿÿ$#(ÿâââÿáááÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿÞÞÞÿÞÞÞÿLLLòÿÿÿÿÀÿèèèÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿ%%+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ88>ÿ==Cÿ==Cÿ>=Dÿ>=Dÿ>=Dÿ>>Dÿ>>Dÿ>>Cÿ>>Cÿ>>Cÿ??Dÿ??Dÿ?>Dÿ??Dÿ??Dÿ??Dÿ@?Eÿ@?Eÿ??Eÿ $ ÿ Šÿ— ÿ˜ ÿ˜ ÿ— ÿ— ÿ— ÿ — ÿ – ÿ – ÿ • ÿ • ÿ ” ÿ “ ÿ “ ÿ ‘ ÿ ÿ ÿ Žÿ ŒÿKÿIÿÿCCGÿDDHÿDDHÿDDHÿDDHÿDDHÿDDHÿ;:>ÿÿ#ÿ^ÿmÿiÿ+ÿÿ?>AÿFDHÿFDHÿFEIÿFEIÿGEIÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØØÙÿâââÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿLLLòÿÿÿÿÀÿèèèÿîîîÿîîîÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿ@@Eÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ339ÿ>>Cÿ>>Cÿ>>Cÿ??Dÿ?>Cÿÿ! ÿ::?ÿ@?Eÿ@?Eÿ@?Eÿ@@Eÿ@@Eÿ@@Eÿ@@Eÿ@@Eÿ@@EÿAAFÿAAFÿ ! ÿ ‹ÿš ÿ™ ÿš ÿ™ ÿ™ ÿ ™ ÿ ˜ ÿ˜ ÿ— ÿ — ÿ — ÿ • ÿ • ÿ ” ÿ “ ÿ ’ ÿ ‘ ÿ ÿ ŽÿSÿBÿÿDCHÿDCHÿDDIÿDDIÿEDIÿBBFÿ !"ÿÿIÿsÿrÿoÿlÿcÿÿÿFFIÿFFIÿFFIÿFFJÿFFJÿ#"(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁÀÁÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿLLLòÿÿÿÿÀÿèèèÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿXY]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ//4ÿ??Dÿ@?Eÿ@?Eÿ??Eÿ((+ÿ$ÿBÿÿÿ88<ÿAAFÿAAFÿBAFÿBAFÿBAFÿAAFÿAAFÿAAFÿAAFÿ  ÿ ‹ ÿ› ÿ› ÿ› ÿ› ÿš ÿš ÿš ÿ™ ÿ™ ÿ ˜ ÿ˜ ÿ — ÿ — ÿ • ÿ ” ÿ ” ÿ “ ÿ ‘ ÿ ÿ[ÿ9ÿ ÿEEHÿEDHÿEDHÿEEIÿ336ÿÿ/ÿpÿxÿvÿtÿqÿnÿkÿLÿÿ-,/ÿGGJÿGGJÿHGKÿHGKÿ*).ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©©«ÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿLLLòÿÿÿÿÀÿèèèÿîîîÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿqquÿÿÿÿÿÿÿÿÿÿ !'ÿ007ÿ((.ÿÿÿÿ**0ÿ@@Eÿ@@EÿAAFÿ>>Cÿ ÿiÿ “ ÿ ‰ÿKÿÿÿ226ÿAAFÿBAFÿBAFÿBAFÿBBGÿBBGÿBBGÿ  ÿ ‹ ÿœ ÿœ ÿœ ÿœ ÿœ ÿœ ÿ› ÿ› ÿš ÿš ÿš ÿ ˜ ÿ˜ ÿ — ÿ – ÿ • ÿ ” ÿ ’ ÿ ‘ ÿeÿ2ÿ  ÿFDIÿFEIÿBAEÿÿÿ\ÿÿ|ÿzÿwÿtÿrÿoÿlÿjÿ.ÿÿ@?DÿGGJÿGGJÿHGKÿ//4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’’”ÿâââÿâââÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿÞÞÞÿLLLòÿÿÿÿÀ ÿèèèÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿˆ‰Œÿÿÿÿ*+0ÿ`aeÿ––™ÿËËÌÿååæÿóóóÿöööÿöööÿª«­ÿÿÿÿ%%+ÿAAFÿAAFÿAAFÿ !#ÿ*ÿ ’ ÿ ” ÿ • ÿ – ÿ ÿUÿÿ  ÿ004ÿCCHÿCCHÿCCHÿCCHÿCCHÿ  ÿ ‹ ÿž ÿž ÿž ÿž ÿ ÿ ÿ ÿœ ÿœ ÿ› ÿ› ÿš ÿ™ ÿ ˜ ÿ— ÿ — ÿ • ÿ ” ÿ ’ ÿnÿ+ÿ ÿGEJÿ//1ÿÿAÿÿƒÿ€ÿ~ÿ|ÿyÿvÿtÿqÿnÿkÿdÿÿÿIHKÿHHKÿHHKÿ76;ÿÿÿÿÿÿÿÿÿÿ438ÿTTXÿutwÿ”“–ÿÿÿÿÿ{z}ÿâââÿâââÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿÞÞÞÿLLLòÿÿÿÿÀ ÿèèèÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿ  £ÿÿÿœŸÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿèèèÿÿÿÿ$ÿBAFÿBBGÿ<<@ÿ ÿtÿ ” ÿ • ÿ – ÿ— ÿ ˜ ÿ™ ÿ • ÿaÿ!ÿ  ÿ226ÿDDIÿEDIÿDDIÿ  ÿ ‹ ÿž ÿž ÿž ÿŸ ÿŸ ÿž ÿ ‘ ÿ 9 ÿ"1!ÿ+:*ÿ)ÿOÿ” ÿ™ ÿ ˜ ÿ— ÿ – ÿ • ÿ ” ÿyÿ#ÿÿÿ)ÿtÿ ˆÿ †ÿ„ÿ‚ÿ€ÿ}ÿ{ÿxÿuÿrÿoÿlÿjÿMÿÿ..0ÿJILÿJILÿ==Aÿÿÿÿ$ÿ``dÿƒÿ¢¢¤ÿÂÂÃÿàààÿæææÿåååÿåååÿäääÿ+*0ÿÿÿÿa`dÿâââÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿßßßÿLLLòÿÿÿÿÀ ÿéééÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿ¸¸¹ÿÿÿ¨¨ªÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ228ÿÿÿÿBCGÿBCGÿÿ2ÿ ” ÿ • ÿ – ÿ˜ ÿ™ ÿš ÿ› ÿœ ÿœ ÿš ÿ gÿ$ÿ ÿ336ÿEDIÿ  ÿ Š ÿ  ÿ  ÿ  ÿ  ÿ  ÿ jÿ-6-ÿ&&&ÿ***ÿ)((ÿIHFÿ642ÿ0ÿ– ÿš ÿ™ ÿ˜ ÿ – ÿ • ÿ ÿÿÿYÿ Œÿ Œÿ ‰ÿ ‡ÿ†ÿ„ÿÿÿ|ÿyÿvÿtÿqÿnÿjÿjÿ/ÿÿCCEÿKJMÿEEHÿÿÿÿ::?ÿçççÿçççÿçççÿæææÿæææÿæææÿåååÿåååÿäääÿBAFÿÿÿÿGFKÿâââÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿßßßÿLLLòÿÿÿÿ À ÿéééÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿÐÐÑÿÿÿ¢¢¥ÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿ89>ÿÿÿÿBBFÿ78;ÿ ÿ ~ÿ • ÿ – ÿ˜ ÿ™ ÿš ÿ› ÿœ ÿ ÿž ÿž ÿŸ ÿž ÿ mÿ'ÿ ÿÿ ‘ ÿ¡ ÿ¡ ÿ¡ ÿ¡ ÿ ÿ&ÿ###ÿDC@ÿŠÿ—•“ÿ+*)ÿVSQÿ21.ÿ Lÿ› ÿš ÿ™ ÿ˜ ÿ – ÿ • ÿjÿ ˆÿ ‘ ÿ ÿ ÿ ‹ÿ ‰ÿ ‡ÿ„ÿ‚ÿ€ÿ}ÿ{ÿxÿtÿrÿoÿlÿjÿdÿÿÿKJMÿJJMÿÿÿÿ@@EÿèèèÿçççÿçççÿæææÿæææÿæææÿåååÿåååÿäääÿKKPÿÿÿÿ-,1ÿâââÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿßßßÿLLLòÿÿÿÿ À!!!ÿéééÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿéééÿÿÿlmpÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿÒÓÔÿ016ÿÿÿÿ==Bÿÿ;ÿ • ÿ – ÿ˜ ÿ™ ÿš ÿ› ÿœ ÿ ÿž ÿŸ ÿ  ÿ  ÿ¡ ÿ¡ ÿ  ÿ sÿBÿ¡ ÿ¢ ÿ¢ ÿ¢ ÿ¢ ÿ Gÿÿ/-+ÿ€}xÿtsrÿ¬«¨ÿyurÿ444ÿc`Zÿ&ÿ› ÿ› ÿš ÿ™ ÿ— ÿ — ÿ • ÿ “ ÿ ’ ÿ ÿ Žÿ Œÿ Šÿ ˆÿ†ÿ„ÿÿÿ|ÿyÿvÿtÿpÿmÿjÿjÿKÿÿ445ÿLKMÿ$ÿÿÿ66;ÿèèèÿçççÿçççÿçççÿæææÿæææÿåååÿåååÿåååÿMMQÿÿÿÿÿÝÝÝÿâââÿáááÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿLLLòÿÿÿÿ À!!!ÿéééÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿ &ÿÿ !'ÿíííÿöööÿçççÿÍÍÎÿ³´µÿ˜˜›ÿefjÿ*+1ÿÿÿÿÿÿ'(+ÿÿ †ÿ — ÿ— ÿ™ ÿš ÿ› ÿœ ÿž ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ¢ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ£ ÿ£ ÿ£ ÿ£ ÿ 1 ÿÿTRMÿyxtÿ%%%ÿžœ™ÿrpkÿ.-,ÿqojÿ%ÿ “ ÿœ ÿ› ÿš ÿ ˜ ÿ— ÿ – ÿ ” ÿ ’ ÿ ‘ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿ€ÿ}ÿzÿwÿuÿrÿnÿkÿjÿiÿ(ÿ ÿIHKÿ&%*ÿÿÿÿØ×ØÿçççÿçççÿçççÿæææÿÞÞÞÿÂÂÃÿ§§©ÿ……ˆÿÿÿÿÿÿÄÄÅÿâââÿâââÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿLLLòÿÿÿÿ À!!!ÿéééÿïïïÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿ68=ÿÿÿ&',ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿ ÿDÿ – ÿ— ÿ ˜ ÿš ÿ› ÿœ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ 9 ÿ//.ÿ;:7ÿ¢¡œÿ°¯¬ÿ’‹ÿCA@ÿ444ÿxtpÿ)ÿœ ÿ ÿœ ÿ› ÿš ÿ ˜ ÿ — ÿ • ÿ ” ÿ ’ ÿ ÿ Žÿ Œÿ Šÿ ˆÿ†ÿ„ÿ€ÿ~ÿ|ÿxÿuÿsÿoÿlÿjÿjÿ_ÿ ÿ&%&ÿ'&,ÿÿÿÿrrvÿ||€ÿa`dÿEDIÿ*)/ÿÿÿÿÿÿÿÿÿÿªª¬ÿâââÿâââÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿLLLòÿÿÿÿ À!!!ÿéééÿïïïÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿNPTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ‹ÿ — ÿ ˜ ÿš ÿ› ÿœ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ¤ ÿ£ ÿ¤ ÿ¥ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ i ÿ()'ÿÿNMLÿzyvÿHGEÿ%$#ÿ„‚ÿa`]ÿ2ÿŸ ÿž ÿ ÿœ ÿ› ÿ™ ÿ˜ ÿ – ÿ • ÿ “ ÿ ‘ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿzÿvÿtÿqÿmÿjÿjÿjÿ>ÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“ÿâââÿâââÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿLLLòÿÿÿÿ À!!!ÿéééÿïïïÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿghlÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNÿ — ÿ˜ ÿ™ ÿ› ÿœ ÿ ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ˜ ÿ#ÿ@?;ÿ$$#ÿ ÿÿeecÿމÿ$)#ÿ ‚ ÿ  ÿŸ ÿž ÿœ ÿœ ÿš ÿ™ ÿ— ÿ – ÿ ” ÿ ’ ÿ ÿ Žÿ Œÿ Šÿ ˆÿ…ÿƒÿÿ}ÿ{ÿwÿuÿrÿnÿkÿjÿjÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvuyÿâââÿâââÿáááÿáááÿàààÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿ€ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ˜ ÿ™ ÿš ÿœ ÿ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ¦ ÿ¦ÿ¦ÿ¦ÿ¦ ÿ¦ ÿŽ ÿ ÿ++(ÿÿ(('ÿ@?=ÿ#ÿ \ ÿ¢ ÿ¡ ÿ  ÿŸ ÿž ÿœ ÿ› ÿš ÿ˜ ÿ – ÿ • ÿ “ ÿ ‘ ÿ ÿ ÿ ‹ÿ ‰ÿ †ÿ„ÿÿ~ÿ|ÿxÿuÿsÿoÿlÿjÿjÿjÿTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\[`ÿâââÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿ—˜šÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿ ÿYÿ – ÿ˜ ÿš ÿ› ÿ ÿž ÿž ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ¦ ÿ¦ÿ¦ ÿ¦ ÿ¦ ÿ§ ÿ§ ÿ§ ÿ¦ ÿ¦ ÿ¦ÿ˜ ÿLÿ  ÿ  ÿCÿ ÿ£ ÿ¢ ÿ¢ ÿ¡ ÿ  ÿž ÿ ÿœ ÿš ÿ™ ÿ— ÿ – ÿ ” ÿ ’ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿzÿvÿtÿpÿmÿjÿjÿjÿjÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿAAFÿâââÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿ¯°±ÿÿÿÿÿ/06ÿijnÿ£¤¦ÿÄÄÆÿÖÖ×ÿéééÿøøøÿÏÏÐÿÿÿ “ ÿ— ÿ™ ÿš ÿœ ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ¤ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ ÿ§ÿ§ÿ§ÿ§ÿ§ÿ§ÿ¦ÿ§ ÿ¦ ÿž ÿ  ÿ  ÿŸ ÿ¥ ÿ£ ÿ£ ÿ¢ ÿ¡ ÿ  ÿŸ ÿž ÿ ÿ› ÿš ÿ˜ ÿ – ÿ • ÿ ’ ÿ ‘ ÿ ÿ Œÿ Šÿ ˆÿ…ÿƒÿ€ÿ}ÿzÿwÿtÿqÿmÿjÿjÿjÿjÿZÿÿ ÿÿÿÿÿÿÿ..5ÿBBHÿVV[ÿjjnÿqquÿÿÿÿÿ('-ÿâââÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿÇÇÉÿÿÿDFJÿÙÙÚÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿùùùÿùùùÿùùùÿ ÿeÿ – ÿ˜ ÿš ÿ› ÿ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ÿ¦ ÿ§ ÿ§ÿ§ ÿ§ ÿ§ÿ§ÿ§ÿ§ÿ§ ÿ§ ÿ§ÿ§ÿŸ ÿ  ÿ  ÿž ÿ¥ ÿ¤ ÿ£ ÿ£ ÿ¢ ÿ¡ ÿ  ÿž ÿ ÿœ ÿš ÿ ™ ÿ — ÿ • ÿ ” ÿ ‘ ÿ ÿ ÿ ‹ÿ ‰ÿ†ÿ„ÿ€ÿ~ÿ{ÿxÿtÿrÿnÿkÿjÿjÿjÿ_ÿÿÿÿÿKKPÿ{{ÿ««­ÿØØÙÿæææÿæææÿåååÿåååÿäääÿ??EÿÿÿÿÿÚÚÚÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿàààÿÿÿFGLÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿùùùÿùùùÿÙÚÙÿ*ÿ ” ÿ— ÿ™ ÿš ÿœ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¥ ÿ¦ ÿ¦ÿ§ ÿ§ÿ§ ÿ§ ÿ§ÿ¨ÿ¨ÿ§ ÿ§ ÿ§ ÿ§ÿ§ÿ§ÿ§ ÿŸ ÿ  ÿÿž ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿŸ ÿž ÿœ ÿ› ÿ™ ÿ— ÿ – ÿ ” ÿ ’ ÿ ÿ ÿ Œÿ ‰ÿ ‡ÿ„ÿÿÿ|ÿxÿuÿrÿoÿkÿjÿhÿDÿÿÿÿÿÿÖÖÖÿçççÿçççÿæææÿæææÿæææÿåååÿåååÿäääÿˆˆ‹ÿÿÿÿÿ¿¿ÁÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿ"ÿÿ./5ÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿùùùÿùùùÿEUEÿpÿ – ÿ˜ ÿ™ ÿ› ÿ ÿž ÿŸ ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¦ÿ§ ÿ§ÿ§ ÿ§ÿ§ÿ¨ ÿ§ÿ§ÿ¨ÿ¨ÿ§ÿ§ÿ§ÿ¨ÿ§ÿ  ÿ  ÿ  ÿœ ÿ¦ ÿ¥ ÿ¤ ÿ£ ÿ£ ÿ¢ ÿ¡ ÿŸ ÿž ÿ ÿ› ÿš ÿ™ ÿ – ÿ • ÿ ’ ÿ ‘ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿyÿvÿsÿoÿlÿ^ÿ$ÿÿÿ ÿÿÿÿÄÄÅÿçççÿçççÿæææÿæææÿæææÿåååÿåååÿäääÿ––™ÿÿÿÿÿ¦¦¨ÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿ57<ÿÿÿØØÙÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿùùùÿäääÿ 2 ÿ ’ ÿ — ÿ ˜ ÿš ÿœ ÿ ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ÿ§ ÿ§ÿ§ ÿ§ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ ÿ¡ ÿ ÿ  ÿš ÿ¦ÿ¥ ÿ¥ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿŸ ÿž ÿœ ÿš ÿ ˜ ÿ — ÿ • ÿ “ ÿ ‘ ÿ ÿ Œÿ Šÿ ˆÿ…ÿ‚ÿ€ÿ|ÿzÿvÿtÿnÿAÿÿ$ÿ ÿÿÿÿÿÿ­­¯ÿçççÿçççÿæææÿæææÿæææÿåååÿåååÿäääÿ••˜ÿÿÿÿÿ‹‹ŽÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿQSXÿÿÿ‡‰ŒÿÒÓÔÿ¶·¹ÿ›œžÿ€„ÿcdhÿGIMÿ)+1ÿ ÿ$ÿ sÿ™ ÿ› ÿœ ÿ ÿŸ ÿ  ÿ¢ ÿ¢ ÿ£ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ ÿ§ÿ§ ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ£ ÿ ÿ  ÿ— ÿ¦ ÿ¦ ÿ¥ ÿ¤ ÿ¤ ÿ¢ ÿ¢ ÿ¡ ÿŸ ÿž ÿœ ÿ› ÿ™ ÿ— ÿ • ÿ ” ÿ ‘ ÿ ÿ ÿ ‹ÿ ˆÿ†ÿƒÿ€ÿ}ÿzÿwÿbÿ)ÿ)ÿÿ ÿ%ÿ 'ÿÿÿÿÿŠŠÿçççÿçççÿæææÿæææÿÒÒÒÿ´´¶ÿ˜˜šÿttxÿ%ÿÿÿÿÿqquÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ!!!À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿõõõÿnosÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ4ÿ ‰ ÿ ÿž ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¦ÿ§ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ£ ÿ  ÿ  ÿ“ ÿ§ ÿ¦ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿŸ ÿž ÿ ÿ› ÿ™ ÿ˜ ÿ – ÿ ” ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ†ÿ„ÿ€ÿ}ÿxÿDÿ+ÿ(ÿ ÿÿ!!(ÿ!!(ÿ!!(ÿ#ÿÿÿÿCCHÿmmqÿSSXÿ88>ÿ$ÿÿÿÿÿÿÿÿÿÿWW\ÿâââÿáááÿáááÿáááÿàààÿàààÿßßßÿßßßÿMMMòÿÿÿÿ À!!!ÿéééÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿõõõÿŠŒŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿIÿ— ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ¦ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¤ ÿ ÿ  ÿ ÿ§ÿ¦ ÿ¦ ÿ¥ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿž ÿ ÿ› ÿš ÿ˜ ÿ — ÿ ” ÿ ’ ÿ ÿ ÿ Œÿ ‰ÿ †ÿ„ÿ€ÿjÿ5ÿ-ÿ ÿ ÿ 'ÿ!")ÿ!"(ÿ!"(ÿ!"(ÿ !'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<ÿ§ ÿ¦ ÿ¥ ÿ¥ ÿ£ ÿ£ ÿ¡ ÿ¡ ÿŸ ÿž ÿœ ÿ› ÿ™ ÿ˜ ÿ • ÿ ” ÿ ‘ ÿ ÿ ÿ Šÿ ˆÿ…ÿ‚ÿ€ÿ|ÿzÿvÿsÿpÿlÿjÿjÿjÿjÿ7ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœœžÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿLLLòÿÿÿÿÀÿèèèÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿ6:>ÿÿÿÿÿÿÿÿÿÿÿÿ_ÿ› ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ ÿ§ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ§ ÿ / ÿÿ:ÿ¦ ÿ¦ ÿ¥ ÿ¤ ÿ£ ÿ£ ÿ¡ ÿ  ÿž ÿž ÿœ ÿš ÿ ˜ ÿ — ÿ • ÿ “ ÿ ‘ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿyÿuÿsÿoÿlÿjÿjÿjÿdÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€„ÿàààÿàààÿßßßÿßßßÿßßßÿÞÞÞÿLLLòÿÿÿÿÀÿçççÿîîîÿîîîÿîîîÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿSUYÿÿÿÿÿÿÿÿÿ ÿ*ÿ ‡ÿš ÿ› ÿ ÿž ÿŸ ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ÿ§ ÿ¨ÿ§ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ§ÿ¨ÿ 2 ÿ ÿ6ÿ¦ ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿž ÿ ÿ› ÿš ÿ˜ ÿ — ÿ ” ÿ “ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿÿ~ÿ|ÿxÿuÿrÿnÿkÿjÿjÿjÿ5ÿ#ÿ ÿ%'-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfgkÿàààÿàààÿßßßÿßßßÿÞÞÞÿÞÞÞÿLLLòÿÿÿÿÀÿçççÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿnqtÿÿÿ$ÿJMQÿfilÿ‚„‡ÿŸ¡£ÿ»¼½ÿMUNÿ T ÿ— ÿ™ ÿ› ÿ ÿž ÿŸ ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ ÿ¨ÿ§ ÿ'ÿ"""ÿ.ÿ¦ ÿ¥ ÿ¤ ÿ£ ÿ¢ ÿ¢ ÿ  ÿŸ ÿž ÿœ ÿ› ÿš ÿ— ÿ – ÿ ” ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ†ÿ„ÿ€ÿ~ÿ{ÿwÿuÿqÿnÿjÿjÿjÿbÿÿ)ÿ$(*ÿ+,2ÿÿÿÿÿÿÿÿ-/4ÿRTXÿdeiÿvwzÿ‡ˆŠÿ{|ÿÿÿÿÿKMQÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿLLLòÿÿÿÿÀÿçççÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿŠÿÿÿRUYÿôôôÿôôôÿôôôÿôôôÿôôôÿæææÿ&ÿ ‡ÿ™ ÿš ÿœ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ ÿ§ÿ¨ÿ§ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ ÿ¨ÿ§ÿ§ ÿ lÿ ÿ!!!ÿÿ=ÿ‹ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿŸ ÿ ÿœ ÿš ÿ ˜ ÿ — ÿ • ÿ “ ÿ ‘ ÿ ÿ ÿ Šÿ ˆÿ…ÿƒÿ€ÿ}ÿzÿwÿtÿpÿmÿjÿjÿjÿ2ÿ&ÿ ÿ349ÿ006ÿÿÿÿÿtuxÿ¥¥§ÿÑÑÒÿäääÿãããÿãããÿãããÿâââÿàààÿ#%+ÿÿÿÿ238ÿàààÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿKKKòÿÿÿÿÀÿçççÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿ§¨ªÿÿÿUX\ÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿŠŒŠÿ ; ÿ ˜ ÿš ÿ› ÿ ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ§ÿ’ ÿ.ÿÿ##$ÿ"""ÿ"""ÿÿÿ-ÿ vÿ  ÿ¡ ÿŸ ÿž ÿ ÿ› ÿ™ ÿ˜ ÿ — ÿ ” ÿ “ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿyÿvÿsÿpÿlÿjÿjÿ`ÿÿ&ÿ#'(ÿ45;ÿ45;ÿÿÿÿÿÖÖ×ÿäääÿäääÿäääÿãããÿãããÿãããÿâââÿâââÿ^_cÿÿÿÿ ÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿKKKòÿÿÿÿÀÿæææÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿÄÅÆÿÿÿGKOÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿòòòÿ#,#ÿ nÿ™ ÿ› ÿœ ÿž ÿž ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ÿ§ ÿ§ ÿ§ ÿ§ ÿ§ ÿ§ ÿ¤ ÿXÿÿ""#ÿÿÿ  ÿ  ÿÿÿ"""ÿÿ # ÿcÿž ÿž ÿœ ÿš ÿ™ ÿ˜ ÿ • ÿ ” ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ ‡ÿ„ÿÿ~ÿ|ÿxÿuÿrÿoÿkÿjÿjÿ0ÿ(ÿÿ46<ÿ57<ÿ57<ÿ ÿÿÿÿÌÍÍÿäääÿäääÿäääÿãããÿãããÿâââÿâââÿâââÿfgkÿÿÿÿÿÉÊÊÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿKKKòÿÿÿÿÀÿæææÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿàááÿÿÿ ÿìììÿóóóÿóóóÿóóóÿóóóÿôôôÿßààÿ‚ƒÿ"ÿ ’ ÿš ÿœ ÿ ÿž ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ÿ¦ ÿ§ ÿ§ ÿ§ÿ¦ÿ¦ÿ§ÿŽ ÿ*ÿÿ ÿ  ÿJÿ‘ ÿ£ ÿž ÿ tÿ6ÿÿÿ###ÿÿ2ÿ ‘ ÿ› ÿš ÿ˜ ÿ – ÿ • ÿ “ ÿ ‘ ÿ ÿ Œÿ Šÿ ˆÿ…ÿƒÿÿ}ÿ{ÿwÿuÿqÿnÿjÿjÿ_ÿÿ#ÿ$&)ÿ68=ÿ68=ÿ68<ÿ#ÿÿÿÿÂÃÄÿäääÿäääÿãããÿãããÿãããÿâââÿâââÿâââÿefiÿÿÿÿÿ°°²ÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿKKKòÿÿÿÿÀÿæææÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿ#ÿÿÿ‰ŒŽÿ™›ÿ„†ÿgjmÿNRVÿ-26ÿÿÿ ÿKÿ™ ÿ› ÿœ ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ¦ÿ¦ ÿ¦ ÿ¦ ÿ¦ ÿ‰ ÿ  ÿ !!ÿÿ)ÿ ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ£ ÿ¢ ÿ™ ÿ lÿ$ ÿÿÿ  ÿiÿ™ ÿ˜ ÿ • ÿ ” ÿ ’ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿzÿvÿtÿpÿmÿjÿjÿ-ÿ)ÿÿ68=ÿ78=ÿ78=ÿ68>ÿ #(ÿÿÿÿª«­ÿäääÿãããÿ×××ÿÇÈÈÿ¦§©ÿ|~€ÿTUYÿ*,2ÿÿÿÿÿÿ•–˜ÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿKKKòÿÿÿÿÀÿåååÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿ6:>ÿÿÿÿÿÿÿÿÿÿÿÿÿ „ÿš ÿ› ÿ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ¦ ÿ † ÿ  ÿÿ  ÿPÿ¡ ÿ¥ ÿ¤ ÿ¤ ÿ¤ ÿ£ ÿ¢ ÿ¢ ÿ¡ ÿŸ ÿ› ÿYÿÿÿÿIÿ • ÿ • ÿ “ ÿ ‘ ÿ ÿ ÿ ‹ÿ ˆÿ†ÿ„ÿ€ÿ~ÿ|ÿxÿuÿrÿoÿlÿjÿ]ÿÿÿ$%)ÿ79>ÿ79?ÿ79?ÿ79?ÿ%(.ÿÿÿÿÿ #(ÿÿÿÿÿÿÿÿÿÿÿÿÿ{|ÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿKKKòÿÿÿÿÀÿåååÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿRVYÿÿÿÿÿÿÿÿÿÿÿÿ ÿ/ÿ™ ÿ› ÿœ ÿ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ  ÿÿÿ ÿ € ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿ  ÿŸ ÿ ÿ ÿ ÿ<ÿ ÿÿ6ÿ ‹ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ ‡ÿ…ÿ‚ÿ€ÿ}ÿzÿwÿuÿqÿnÿjÿjÿ,ÿ*ÿ  ÿ8:@ÿ8:?ÿ9;@ÿ9;@ÿ9;@ÿ+.2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿacfÿßßßÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿJJJòÿÿÿÿÀÿäääÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿoruÿÿÿÿÿÿÿÿÿÿÿÿÿÿfÿš ÿ› ÿœ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿVÿÿBÿ› ÿ¤ ÿ¤ ÿ£ ÿ£ ÿ£ ÿ£ ÿ¢ ÿ¡ ÿ¡ ÿ  ÿž ÿž ÿ ÿ› ÿš ÿ™ ÿ ‚ÿ(ÿÿÿWÿ ‹ÿ ÿ ‹ÿ ‰ÿ †ÿ„ÿÿÿ|ÿyÿvÿsÿpÿlÿjÿ]ÿÿÿ+,0ÿ:<@ÿ:<@ÿ:<@ÿ:<@ÿ:<@ÿ139ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFHMÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿJJJòÿÿÿÿÀÿäääÿëëëÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿ‹ÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ ‘ ÿš ÿ› ÿœ ÿž ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ£ ÿ£ ÿ  ÿYÿ ÿ3ÿ£ ÿ£ ÿ£ ÿ£ ÿ£ ÿ¢ ÿ¢ ÿ¢ ÿ¡ ÿ  ÿŸ ÿŸ ÿž ÿœ ÿœ ÿš ÿš ÿ˜ ÿ – ÿ ŽÿÿÿÿÿUÿ…ÿ ‡ÿ…ÿƒÿ€ÿ}ÿ{ÿwÿtÿrÿoÿkÿjÿ*ÿ+ÿÿ;=Aÿ;=Aÿ;=Aÿ;=Aÿ<=Bÿ<=Bÿ79>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,.4ÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿJJJòÿÿÿÿÀÿäääÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿ§©ªÿÿÿÿÿÿÿÿÿÿ"ÿ49=ÿPSWÿÿÿFÿ™ ÿš ÿ› ÿœ ÿž ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ¢ ÿ¢ ÿ | ÿ7ÿÿÿ>ÿ£ ÿ£ ÿ¢ ÿ¢ ÿ¢ ÿ¡ ÿ¡ ÿ  ÿ  ÿ  ÿŸ ÿ ÿ ÿœ ÿš ÿ™ ÿ˜ ÿ — ÿ • ÿ ” ÿÿÿÿ+.1ÿÿÿRÿ€ÿÿÿ|ÿyÿvÿtÿpÿmÿjÿ[ÿÿÿ136ÿ;=Aÿ<=Bÿ<=Bÿ<=Bÿ<=Bÿ<>Cÿ<>CÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿJJJòÿÿÿÿÀÿäääÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿÃÄÅÿÿÿÿHMQÿmpsÿ‰ŒŽÿ¦¨©ÿÂÃÄÿÞÞÞÿñññÿñññÿòòòÿ6:>ÿ ÿ ÿ €ÿš ÿš ÿ› ÿœ ÿ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ” ÿAÿ,ÿÿÿÿ?ÿ¢ ÿ¢ ÿ¢ ÿ¡ ÿ¡ ÿ  ÿ  ÿŸ ÿŸ ÿž ÿž ÿ ÿœ ÿš ÿ™ ÿ™ ÿ — ÿ • ÿ ” ÿ ’ ÿ)ÿÿÿ!ÿ9<@ÿ/14ÿÿÿPÿyÿ{ÿxÿtÿrÿoÿlÿjÿ(ÿ*ÿÿ<>Bÿ<>Bÿ<>Bÿ=?Cÿ=?Cÿ=?Cÿ=?Cÿ=?Cÿ!ÿÿÿÿÿÿÿÿ"%+ÿCEJÿbdhÿƒ†ÿ¡¢¤ÿ/27ÿÿÿÿÿÄÅÆÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿIIIòÿÿÿÿÀÿãããÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿÞßßÿÿÿÿÑÒÓÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿknqÿÿ ÿ+ÿ— ÿš ÿš ÿ› ÿœ ÿ ÿ ÿž ÿ› ÿZÿ+ÿ)ÿ ÿ!#ÿÿÿ=ÿ¡ ÿ¡ ÿ¡ ÿ  ÿ  ÿ  ÿŸ ÿž ÿž ÿ ÿœ ÿ› ÿš ÿ™ ÿ™ ÿ — ÿ – ÿ ” ÿ “ ÿ ‘ ÿ1ÿ+ÿÿÿ9;>ÿ;=Aÿ;=Aÿ/14ÿÿÿIÿrÿtÿqÿmÿjÿZÿÿÿ79<ÿ=?Cÿ>@Dÿ>@Dÿ>@Dÿ>@Dÿ>@Dÿ>ADÿ>ADÿ!&ÿÿÿÿFHLÿ”•—ÿ´´¶ÿÓÔÔÿáááÿáááÿáááÿàààÿàààÿrtwÿÿÿÿÿª«¬ÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿIIIòÿÿÿÿÀÿãããÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿ %ÿÿÿרÙÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿ€ƒ…ÿÿÿÿaÿ˜ ÿ™ ÿš ÿ› ÿœ ÿ ÿ {ÿ,ÿ,ÿÿÿ148ÿ7:>ÿ-04ÿÿ8ÿ  ÿŸ ÿ  ÿŸ ÿŸ ÿž ÿž ÿ ÿ ÿœ ÿ› ÿš ÿ™ ÿ˜ ÿ — ÿ – ÿ ” ÿ “ ÿ ‘ ÿ ÿ9ÿ<ÿÿ469ÿ<>Bÿ<>Bÿ<>Bÿ<>Bÿ=?Cÿ136ÿÿÿAÿjÿlÿjÿ&ÿ!ÿÿ>ADÿ>ADÿ>ADÿ>ADÿ>ADÿ?BDÿ?BDÿ?BDÿ?AEÿ$'+ÿÿÿÿrtwÿâââÿâââÿâââÿáááÿáááÿàààÿàààÿàààÿ¨©«ÿÿÿÿÿ’”ÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿIIIòÿÿÿÿÀÿãããÿêêêÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿ7;@ÿÿÿÈÉÊÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿˆ‹ÿÿÿ ÿÿ Ž ÿ˜ ÿ ™ ÿš ÿ ‘ ÿ?ÿ%ÿ)ÿÿ(*-ÿ8;?ÿ8;?ÿ8;?ÿ9<@ÿÿ3ÿŸ ÿž ÿž ÿž ÿž ÿ ÿ ÿœ ÿ› ÿš ÿš ÿ ™ ÿ˜ ÿ — ÿ • ÿ ” ÿ “ ÿ ‘ ÿ ÿ Žÿ=ÿNÿ"ÿ=?Cÿ=?Cÿ=?Cÿ>@Dÿ>@Dÿ>@Dÿ>@Dÿ>@Dÿ358ÿÿÿ;ÿRÿÿÿÿ9<@ÿ9<@ÿ:=Aÿ:=Aÿ:=@ÿ035ÿ/ÿ ÿ ÿœ ÿ ÿœ ÿœ ÿ› ÿš ÿš ÿ™ ÿ ˜ ÿ— ÿ – ÿ • ÿ ” ÿ “ ÿ ‘ ÿ ÿ Žÿ ÿ=ÿRÿ!ÿ=@Dÿ>ADÿ>ADÿ>ADÿ>ADÿ>ADÿ?BDÿ?BDÿ?BDÿ?AEÿ56:ÿÿÿÿ#'&ÿ@BFÿABFÿABFÿABFÿACFÿACFÿACFÿACGÿACGÿACFÿ238ÿÿÿÿadgÿâââÿáááÿáááÿáááÿàààÿàààÿàààÿßßßÿ¯°±ÿÿÿÿÿ]_cÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿâââÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿnruÿÿÿDIMÿ“•—ÿx|~ÿ^beÿDHLÿ(.2ÿÿÿÿÿÿÿÿÿ ÿLÿ$ÿ ÿÿÿ147ÿ9=@ÿ:=Aÿ:=Aÿ:=Aÿ:=Aÿ:=Aÿ:=Aÿ57;ÿ*ÿœ ÿœ ÿ› ÿ› ÿ› ÿš ÿš ÿ™ ÿ ˜ ÿ˜ ÿ — ÿ – ÿ • ÿ ” ÿ ’ ÿ ‘ ÿ ÿ Žÿ ÿ Œÿ<ÿUÿ ÿ?BDÿ?AEÿ?AEÿ?AEÿ@BEÿ@BEÿ@BFÿ@BFÿ@BFÿABFÿABFÿABFÿ=?Bÿ78;ÿACGÿACGÿACGÿBCGÿBCGÿBCGÿBDFÿBDFÿCDGÿCDGÿCDGÿ8;>ÿÿÿÿEHLÿØØÙÿÜÜÜÿËËÌÿº»¼ÿ¡£¤ÿy{}ÿPSWÿ'*/ÿÿÿÿÿÿCFJÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿâââÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'),ÿ:=Aÿ:=Aÿ:=Aÿ:=Aÿ;>Bÿ;>Bÿ;>Bÿ;>Bÿ;>Bÿ;>Bÿ'ÿš ÿš ÿš ÿš ÿ™ ÿ™ ÿ ˜ ÿ— ÿ — ÿ — ÿ • ÿ ” ÿ ” ÿ “ ÿ ‘ ÿ ÿ Žÿ ÿ Œÿ ‰ÿ?ÿSÿÿ@BFÿABFÿABFÿABFÿ@CFÿ@CFÿ@CFÿ@CGÿ@CGÿACGÿACGÿACGÿBDFÿBDFÿBDFÿCDGÿCDGÿCDGÿCEGÿCEGÿDEHÿDEHÿDEHÿDFHÿDFHÿ@AEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*-2ÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿâââÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿ¦¨©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8<@ÿ;>Bÿ;>Bÿ;>Bÿ;>Bÿ;>Bÿ;>BÿBDÿ>BDÿ>BDÿ>AEÿ>AEÿ>AEÿ?BEÿ?BEÿ*ÿ • ÿ • ÿ • ÿ • ÿ ” ÿ ” ÿ ” ÿ ’ ÿ ’ ÿ ‘ ÿ ÿ ÿ Žÿ ÿ ‹ÿ Šÿ ‰ÿ ‡ÿ†ÿ„ÿJÿCÿ%ÿCFHÿCFHÿCFHÿDEIÿDEIÿDFIÿDFIÿDFIÿEFIÿEFIÿEFIÿEGJÿEGJÿFGJÿFGJÿFGJÿFHJÿFHJÿGHJÿGHJÿGHJÿGHJÿGHJÿGHJÿGIKÿGIKÿ!%)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©ª«ÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿáááÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿ!%ÿÿÿÿÿÿÿÿÿ&-0ÿ@EHÿY]aÿ9>Bÿÿÿÿ).1ÿ>BDÿ>BDÿ>AEÿ>AEÿ?BEÿ?BEÿ?AEÿ?BFÿ?BFÿ@BFÿ@BFÿ@BFÿ@CFÿ@CFÿ*ÿ “ ÿ ” ÿ ” ÿ “ ÿ ’ ÿ ’ ÿ ’ ÿ ‘ ÿ ÿ ÿ Žÿ Žÿ Œÿ ‹ÿ Šÿ ‰ÿ ‡ÿ†ÿ„ÿ‚ÿNÿ=ÿ (ÿEFIÿEFIÿEFIÿEGJÿEGJÿEGJÿFGJÿFGJÿFHJÿFHJÿFHJÿGHJÿGHJÿGHJÿGHJÿGHJÿFIKÿFIKÿFIKÿGIKÿGIKÿGIKÿGJKÿGJKÿHJLÿHJLÿ'+/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’”ÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿàààÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿ6@ÿIJMÿIJMÿIKMÿIKMÿIKMÿJKMÿJKMÿJLMÿJLMÿJLMÿKLNÿKLNÿKLNÿKMMÿKMMÿLMNÿLMNÿLMNÿLMNÿLMNÿMNOÿMNOÿMNOÿMNOÿHKKÿ"'ÿÿÿÿÿ[_bÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿ.37ÿÿÿÿ+/3ÿÜÜÜÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿÀÿßßßÿæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿ¥§¨ÿÿÿ8=Aÿëëëÿëëëÿëëëÿëëëÿëëëÿáââÿ°²³ÿz}€ÿEIMÿÿÿÿÿ>BDÿDFHÿDFHÿDGIÿDGIÿDGIÿEGIÿEGIÿEGIÿEHJÿEHJÿFHJÿFHJÿFHJÿFHJÿFHJÿFHJÿFIKÿFIKÿGIKÿGIKÿGIKÿGJKÿGJKÿGJKÿHJLÿHJLÿHJLÿHJLÿHJLÿIJMÿIJMÿIKMÿIKMÿIKMÿJKMÿJKMÿJKMÿJLMÿJLMÿJLNÿJLNÿJLNÿJMNÿJMMÿJMMÿKMNÿKMNÿKMNÿKMNÿLMNÿMNOÿMNOÿMNOÿMNOÿMNOÿMNOÿHJLÿ@CEÿ9<>ÿ147ÿ%)-ÿÿÿÿÿÿÿ@DHÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿ37;ÿÿÿÿÿÚÚÚÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ¿ÿßßßÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿÁÂÃÿÿÿÿ{~€ÿux{ÿY]aÿ?CGÿ#(-ÿÿÿÿÿÿÿÿÿ9=@ÿEHJÿEHJÿEHJÿFHJÿFHJÿFHJÿFHJÿFHJÿFIKÿFIKÿFIKÿFIKÿFIKÿFJKÿFJJÿFJJÿGJKÿHJLÿHJLÿHJLÿHJLÿIJMÿIJMÿIJMÿIKMÿIKMÿJKMÿJKMÿJKMÿJLMÿJLMÿJLMÿJLNÿJLNÿJLNÿJMMÿJMMÿKMNÿKMNÿKMNÿKMNÿKMNÿLNOÿLNOÿLNOÿLNOÿLNOÿLNOÿJKLÿBDEÿ:=?ÿ268ÿ*/1ÿ#'*ÿ $ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›œžÿØØÙÿÌÍÍÿº»»ÿ¦¨©ÿŠŒŽÿknpÿJNRÿ+04ÿÿÿÿÿÿÄÅÅÿÜÜÜÿÜÜÜÿIIIòÿÿÿÿ ÿÆÆÆûæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿÛÜÜÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ37:ÿFHKÿFHKÿFHKÿFIKÿFIKÿFIKÿFJJÿFJJÿFJJÿGJKÿGJKÿGJKÿGJKÿGJKÿHJLÿHJLÿHKLÿHKLÿHKLÿIKMÿIKMÿJKMÿJLMÿJLMÿJLNÿJLNÿJLNÿJMNÿJMMÿJMMÿKMNÿKMNÿKMNÿKMNÿKMNÿLNOÿLNOÿLNOÿLNOÿLNOÿJMMÿCEGÿ<>@ÿ47:ÿ,/3ÿ$(,ÿ %ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«¬®ÿÜÜÜÿÜÜÜÿ,,,ôûÿÿÿWÿ‘‘‘òåååÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿ!%ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿ-04ÿFIJÿGIKÿGIKÿGIKÿGJKÿGJKÿHJLÿHJLÿHJLÿHKLÿHKLÿIKMÿIKMÿIKMÿILMÿILMÿILMÿJLNÿJLNÿJMNÿJMMÿJMMÿKMNÿKMNÿKMNÿKMNÿKMNÿLNOÿLNOÿLNOÿLNOÿLNOÿKMNÿDGIÿ<@Bÿ58;ÿ-13ÿ%*-ÿ"&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’“•ÿÜÜÜÿÜÜÜÿ üæÿÿÿÿ999òåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿ6<@ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ#(+ÿHJLÿHKLÿHKLÿHKLÿIKMÿIKMÿIKMÿILMÿILMÿJLNÿJLNÿJLNÿJMNÿJMMÿJMMÿKMNÿKMNÿKMMÿKMMÿKMMÿLNNÿLNNÿLNNÿLNNÿLNNÿFHIÿ>ABÿ69<ÿ.34ÿ'+.ÿ$'ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxz}ÿÜÜÜÿÍÍÍþÿ¼ÿÿÿÿÿÿ²ÿ”””òåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿRWZÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿGIKÿILMÿJLNÿJLNÿJMNÿJMMÿJMMÿKLNÿKLNÿKLNÿKLMÿKLMÿLMNÿLMNÿLMNÿLNNÿLNNÿGJJÿ>BCÿ7;<ÿ/35ÿ(,/ÿ%(ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^aeÿÜÜÜÿFFFñÿ]ÿÿÿÿÿÿôþòåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿmqtÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ$ÿ%+0ÿ28<ÿ7=Aÿ ÿ ÿ ÿ ÿ!%)ÿILMÿKLMÿKLMÿKLMÿLMNÿLMNÿLMNÿLMNÿHJKÿ@CEÿ8<>ÿ047ÿ(-0ÿ!%*ÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ!ÿ#ÿ#ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFIMÿ©©©÷ÿÎÿÿÿÿÿÿÿÿÿÿÿÿ7ñÿ222ô‰‰‰ñ¿¿¿úØØØþØØØþÙÙÙþÙÙÙþÙÙÙþÙÙÙþÙÙÙþÙÙÙþÚÚÚþÚÚÚþÚÚÚþÚÚÚþÚÚÚþÚÚÚþÚÚÚþ…†þÿÿ5:>ÿvx{þ’”þª¬­þÆÆÇþÙÙÙþÜÜÜþÜÜÜþÜÜÜþÔÔÕþÿÿÿÿÿÿ-14ÿ279ÿ036ÿ)-/ÿ!&)ÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ"ÿ$ÿ %ÿ %ÿ %ÿ!&ÿ!&ÿ!&ÿ!&ÿ!'ÿ!'ÿ!'ÿÿÿÿÿÿÿ!%ÿ5:>ÿOSVÿiloÿƒ…ˆÿ”—˜ÿ“•—ÿ‘“”ÿ+04ÿÿÿÿ!$'þüúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ#ÿ$ÿ$ÿ %ÿ %ÿ %ÿ %ÿ!&ÿ!&ÿ!&ÿ!'ÿ!'ÿ!'ÿ!'ÿ"(ÿ"(ÿ"(ÿ"(ÿ"(ÿ!&ÿÿÿÿ%*/ÿÇÈÈÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿZ^aÿÿÿ ÿÿùTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH–¶¸¸¸¸¸¸¸¸¸¸¸¸¸¸¿ÙÙи¸¸¸¸¸¸¸¸ÐÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿIIIòIIIòIIIòIIIòIIIòIIIòIIIòIIIòIIIòùÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýù Þ {ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøðàÀÀÀ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÀÀÀàðøÿÿÿÿÿÿÿÿÿ?(@€ ÿÿÿÿÿÿÿÿÿp ” ” ” ” ” ” ”•œœžžžžžžžžÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿûøøøøøûðjÿÿÿÿÿÿÔý878ó ÿ ÿÿÿý"#ûÿÿ "ÿ "ÿ!"ÿ!"ÿ!"ÿ!#ÿ! #ÿ! #ÿ! #ÿ" #ÿ" #ÿ" #ÿ" $ÿ"!$ÿ"!$ÿ"!$ÿ" #ÿ"!$ÿ#!$ÿ@DÿA>DÿA>DÿB>DÿB?DÿB?DÿC?EÿC?EÿC@Eÿ*%,ÿÿÿÿÿÿÿÿÿƒ€ƒÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ×××ÿ‡‡‡õ ûgÿÿÿÕ\\\ïØØØÿÎÎÎÿÿ^\`ÿÍÌÍÿàààÿáááÿáááÿ96<ÿÿ;8>ÿ<9?ÿ<9?ÿ=:@ÿ=:Aÿ>;Aÿ>;Aÿ>;Aÿ>;Aÿ?DÿA>DÿA>CÿA>DÿB?DÿC?EÿC?EÿC?EÿC@EÿD@FÿDAFÿDAFÿDAFÿEAFÿEBGÿEBGÿ0+2ÿÿ0+2ÿ{x|ÿ˜–™ÿ¶µ·ÿÓÓÓÿ=7>ÿÿlhlÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ‡‡‡õïþÙÙÙÿàààÿàààÿ"%ÿZW\ÿáááÿâââÿâââÿâââÿGDJÿÿ97<ÿ>;Aÿ>DÿA>DÿA>DÿA>DÿB?DÿB?DÿB?EÿB?EÿC@EÿC@EÿC@FÿCAFÿDAFÿDAFÿDAFÿDBGÿEBGÿEBGÿFCGÿFBHÿFCHÿGCHÿGCHÿGDIÿ628ÿÿJFLÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿb^cÿÿTOUÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ×××ÿûeEEEðàààÿáááÿáááÿ97=ÿ74:ÿŠˆ‹ÿigkÿHEJÿ'#)ÿÿÿ639ÿ@>Cÿ@>CÿA>CÿA>CÿA?DÿA?DÿA?DÿB?DÿB@EÿB@EÿCAFÿCAFÿDAFÿDAFÿDBGÿDBGÿEBGÿECGÿFBHÿFBHÿFCHÿFCHÿGDIÿGDHÿGDIÿGDIÿHEIÿHEIÿIEJÿIEJÿIFJÿ=9?ÿÿ83:ÿº¹»ÿ°®°ÿ—•˜ÿsotÿ4/6ÿÿ<7>ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿø pUUUðáááÿâââÿâââÿSQVÿÿÿÿÿÿÿÿ305ÿB@EÿB@EÿB@EÿCAEÿCAFÿCAEÿDAFÿDBFÿDBFÿDBFÿECGÿEBGÿECGÿFCHÿFCHÿGDIÿGDIÿGDIÿGDIÿHEIÿHEJÿHEJÿHEJÿIFJÿIFKÿJGKÿJGKÿJGKÿJGKÿKHLÿKHLÿEAFÿÿÿÿÿÿÿÿÿ%'ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿø pWWWðâââÿâââÿãããÿmkoÿÿÿÿÿÿÿÿ.,1ÿDBFÿDBFÿECGÿEBGÿEBGÿECGÿFCHÿFDHÿFDHÿFDHÿGDHÿ;==ÿ$9%ÿ<ÿ ? ÿ>ÿ < ÿ ; ÿ ; ÿ : ÿ 8 ÿ8ÿ7ÿ7ÿ$1$ÿ?ÿ+ÿ4ÿTÿgÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿbÿ>ÿ + ÿ:>:ÿNKNÿOLOÿOLOÿHEHÿÿÿ!$ÿ>9@ÿTPVÿkhlÿtqvÿÿÿ·¶·ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿø pXXXðãããÿäääÿäääÿ¡ ¢ÿÿ¬«­ÿæææÿæææÿæææÿÖÖÖÿÿ$!(ÿHFJÿHFJÿHFJÿIGKÿIGJÿIGKÿIGKÿ>>?ÿ8ÿ^ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿMÿ3ÿPNPÿQNPÿKHJÿ+'-ÿÿÿ¨¦¨ÿßßßÿßßßÿÞÞÞÿÜÜÜÿ!ÿÿ Ÿ¡ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿøpYYYðäääÿäääÿåååÿ¼¼½ÿÿŒ‹ŽÿãããÿÆÅÇÿ¢¡£ÿzx|ÿÿ"ÿJHKÿJHKÿJHLÿKILÿKILÿKILÿLJMÿB@Cÿ#ÿ8ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿÿ&$'ÿ'#)ÿ "ÿÿÿÿÿ|€ÿàààÿßßßÿßßßÿÒÑÒÿ#&ÿÿ‰‡ŠÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿøp[[[ðåååÿåååÿæææÿ×××ÿÿ#!'ÿ#ÿÿÿÿÿÿKILÿLJMÿMKMÿMKNÿMKNÿMKNÿNLNÿNLOÿ979ÿ3ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿXÿ ÿÿÿÿÿÿÿÿ,(/ÿYU[ÿJFLÿ/*2ÿÿÿÿrosÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿøp\\\ðåååÿæææÿæææÿçççÿ#!'ÿÿÿÿÿÿÿÿ:8<ÿNMOÿNMOÿOMOÿOMOÿPNOÿPNPÿLJLÿECFÿ'ÿeÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZW\ÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿøp\\\ðæææÿçççÿçççÿçççÿ=;Aÿÿÿ%#*ÿ97=ÿFEJÿ0.4ÿÿ ÿ/-2ÿ759ÿ0/3ÿ)'-ÿ" &ÿ ÿÿÿÿ/ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿHÿÿ#'ÿ%!)ÿ'$+ÿ)&-ÿ*&-ÿ)%,ÿ!ÿÿÿÿÿÿÿÿÿB?DÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿøp^^^ðçççÿçççÿèèèÿèèèÿXW[ÿB@FÿÝÝÝÿêêêÿêêêÿêêêÿ‡†‰ÿÿÿÿÿÿÿÿÿÿÿÿÿPÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿhÿ! ÿ)'.ÿ*'/ÿ*(/ÿ+(/ÿ,(/ÿ,)0ÿ,)0ÿ($+ÿÿ$ 'ÿ›™œÿ­¬­ÿ¼»¼ÿÊÊËÿŽÿÿ*'-ÿÞÞÞÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿøp___ðçççÿèèèÿèèèÿéééÿrqtÿ(',ÿéééÿêêêÿëëëÿëëëÿ„ƒ‡ÿÿÿÿÿÿÿÿÿ ÿ"ÿ$ÿ &ÿÿhÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ8ÿ%#(ÿ,*1ÿ,*1ÿ-*1ÿ-*2ÿ-+2ÿ-+2ÿ.+3ÿ.*2ÿÿ ÿÝÝÞÿâââÿâââÿáááÿ±°²ÿÿÿ×××ÿÞÞÞÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿøp```ðèèèÿèèèÿéééÿéééÿÿÿnnqÿhhlÿQQUÿ:9>ÿ#ÿÿÿÿ$ÿ" 'ÿ$"*ÿ&%,ÿ'&-ÿ(&-ÿ(&.ÿ)'.ÿ)'.ÿ"!'ÿ3ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ_ÿÿ.+3ÿ.,3ÿ/,3ÿ/,3ÿ/-4ÿ/-4ÿ0.5ÿ0.5ÿ0.5ÿÿÿŽ‘ÿ£¢¤ÿŠˆ‹ÿqosÿOLQÿÿÿÀ¿ÁÿÞÞÞÿÞÞÞÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿøpaaaðéééÿéééÿêêêÿêêêÿ¨¨ªÿÿÿÿÿÿÿÿÿ%$*ÿ('-ÿ('.ÿ)'/ÿ*(/ÿ*(/ÿ*(/ÿ*)0ÿ+)0ÿ+*1ÿ+*1ÿÿVÿjÿjÿjÿjÿjÿjÿjÿjÿ,ÿ-+2ÿ0.5ÿ0.5ÿ1.5ÿ1/6ÿ1/6ÿ2/6ÿ2/7ÿ207ÿ207ÿ"ÿÿÿÿÿÿÿÿÿ¨§©ÿßßßÿÞÞÞÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿøpbbbðéééÿêêêÿêêêÿëëëÿÄÄÅÿÿÿÿÿÿÿÿÿ*)0ÿ*)0ÿ**0ÿ+*0ÿ+*0ÿ+*1ÿ,+1ÿ-+3ÿ-+3ÿ-,3ÿ.,3ÿ,*1ÿ ÿiÿjÿjÿjÿjÿjÿjÿRÿ ÿ1/7ÿ107ÿ207ÿ307ÿ318ÿ418ÿ429ÿ429ÿ429ÿ529ÿ"&ÿÿÿÿÿÿÿÿÿ‘“ÿßßßÿÞÞÞÿÞÞÞÿÝÝÝÿÜÜÜÿÜÜÜÿøpcccðêêêÿêêêÿëëëÿëëëÿßßàÿÿDDHÿ†…ˆÿ¤£¦ÿ´´µÿÀ¿Áÿ:9>ÿÿ,+2ÿ-,2ÿ-,2ÿ-,2ÿ--3ÿ.-3ÿ.-3ÿ..4ÿ/.4ÿ/.4ÿ/.5ÿ0/6ÿ"!%ÿ<ÿoÿnÿmÿlÿjÿiÿ$ ÿ329ÿ429ÿ429ÿ429ÿ43:ÿ53:ÿ53:ÿ54:ÿ64;ÿ64;ÿ74;ÿ'$+ÿÿÿ75;ÿSQVÿomqÿŠˆ‹ÿ=;Aÿÿyw{ÿßßßÿßßßÿÞÞÞÿÝÝÝÿÝÝÝÿÜÜÜÿøpcccðêêêÿëëëÿìììÿìììÿíííÿ##)ÿuuxÿîîîÿîîîÿïïïÿïïïÿXW[ÿÿ,,2ÿ/.4ÿ/.5ÿ0/5ÿ0/5ÿ0/5ÿ006ÿ0/6ÿ106ÿ107ÿ217ÿ217ÿ217ÿ + ÿuÿtÿsÿrÿpÿYÿ"%%ÿ54:ÿ64;ÿ64;ÿ64;ÿ65;ÿ75<ÿ76<ÿ76<ÿ76<ÿ86=ÿ87=ÿ+)0ÿÿECHÿåååÿäääÿãããÿãããÿomqÿÿa_dÿàààÿßßßÿÞÞÞÿÞÞÞÿÝÝÝÿÜÜÜÿøpdddðëëëÿìììÿìììÿíííÿíííÿ@@DÿCCHÿÜÜÝÿÈÈÉÿ±±²ÿššœÿ--2ÿÿ**1ÿ106ÿ107ÿ217ÿ217ÿ217ÿ328ÿ328ÿ328ÿ328ÿ439ÿ439ÿ439ÿ!ÿrÿzÿxÿwÿuÿKÿ0/5ÿ76<ÿ76<ÿ86=ÿ87=ÿ97>ÿ97>ÿ98>ÿ98>ÿ98>ÿ:8?ÿ:9?ÿ0/5ÿÿ87=ÿåååÿäääÿáááÿÇÇÈÿedhÿÿIGLÿàààÿßßßÿßßßÿÞÞÞÿÝÝÝÿÝÝÝÿøpeeeðëëëÿìììÿíííÿíííÿîîîÿ[Z_ÿÿÿÿÿÿÿÿ))/ÿ228ÿ339ÿ339ÿ339ÿ44:ÿ44:ÿ54:ÿ54:ÿ65;ÿ65;ÿ65;ÿ66<ÿ-ÿ~ÿÿ~ÿ|ÿ{ÿgÿ" ÿ98>ÿ98>ÿ:9?ÿ:9?ÿ:9?ÿ;9@ÿ;9@ÿ;:@ÿ<:@ÿ<:@ÿ<:@ÿ65;ÿÿÿKJOÿ328ÿÿÿÿÿ1.4ÿáááÿàààÿßßßÿÞÞÞÿÞÞÞÿÝÝÝÿøpeeeðìììÿíííÿíííÿîîîÿîîîÿwvzÿÿÿÿÿÿÿÿ&&,ÿ44:ÿ55;ÿ55;ÿ55;ÿ66<ÿ66<ÿ66<ÿ66<ÿ87=ÿ87=ÿ438ÿ!ÿAÿ„ÿ„ÿƒÿÿ€ÿ|ÿ0ÿ*ÿ105ÿ;:@ÿ<;@ÿ<;@ÿ<;Aÿ=;Aÿ=ÿ88>ÿ88>ÿ99>ÿ99>ÿ99?ÿ+ÿoÿ ‰ÿ ‰ÿ ˆÿ ‡ÿ†ÿ„ÿ‚ÿ€ÿEÿÿ==Bÿ>=Bÿ>=Cÿ>>Cÿ?>Cÿ?>Cÿ@>Dÿ@?Dÿ!ÿÿÿÿ$ÿ+)0ÿ'%,ÿÿÿÌÌÌÿàààÿàààÿßßßÿÞÞÞÿÞÞÞÿøpgggðíííÿîîîÿîîîÿïïïÿðððÿ¯¯±ÿÿ˜˜›ÿòòòÿòòòÿóóóÿååæÿÿ %ÿ98>ÿ98?ÿ98?ÿ98?ÿ:9?ÿ:9@ÿ:9@ÿ::@ÿ;;@ÿ;;@ÿ C ÿ Žÿ Žÿ ÿ Œÿ Œÿ Šÿ ‰ÿ ‡ÿ„ÿKÿ & ÿ?>Cÿ?>Cÿ??Cÿ@?Dÿ@?Dÿ@?DÿA@DÿA@EÿA@EÿA@Eÿ %ÿÿÉÉÊÿáááÿåååÿäääÿÂÁÂÿÿÿµ´¶ÿáááÿàààÿßßßÿÞÞÞÿÞÞÞÿøphhhðíííÿîîîÿïïïÿïïïÿðððÿËËÌÿÿ{{ÿòòòÿóóóÿóóóÿíííÿ ÿ!ÿ::@ÿ::@ÿ;:Aÿ<;Aÿ<;Aÿ<;Aÿ<ÿsswÿWW\ÿ;;Aÿ%ÿÿÿ<Cÿ?>Cÿ?>Cÿ M ÿ • ÿ • ÿ • ÿ ” ÿ “ ÿ ’ ÿ ÿ Žÿ Œÿdÿ8ÿBBFÿBBFÿCBGÿCBGÿ>=Bÿ1ÿ*ÿ??CÿDCHÿEDHÿ-,1ÿÿnnqÿ··¸ÿ££¥ÿ|{ÿNNRÿÿÿ‡‡‰ÿáááÿàààÿàààÿßßßÿÞÞÞÿø piiiðîîîÿïïïÿðððÿðððÿñññÿòòòÿ%&,ÿÿÿÿÿÿÿÿ::@ÿ>>Cÿ>>Dÿ*,.ÿ>=Cÿ??Dÿ??Dÿ@?Eÿ@@Eÿ@@Eÿ O ÿ ˜ ÿ ˜ ÿ˜ ÿ— ÿ – ÿ • ÿ ” ÿ ’ ÿ ÿ{ÿ*ÿDCHÿDDHÿCCGÿ#/$ÿ<ÿkÿWÿ ÿFEIÿFEIÿ438ÿÿÿÿÿÿÿÿÿqptÿáááÿáááÿàààÿßßßÿÞÞÞÿø piiiðïïïÿïïïÿðððÿñññÿñññÿòòòÿ?@Eÿÿÿÿÿÿÿÿ66<ÿ@@Eÿ+0-ÿQÿ : ÿ+ÿ==BÿAAFÿAAFÿBAGÿ Q ÿ› ÿ› ÿ› ÿš ÿ™ ÿ™ ÿ – ÿ • ÿ “ ÿ Šÿ ÿEDIÿ9:<ÿ 0 ÿcÿxÿsÿmÿ8ÿ457ÿGGJÿ;:>ÿÿÿÿÿÿÿÿÿZY]ÿâââÿáááÿàààÿßßßÿßßßÿø piiiðïïïÿðððÿðððÿñññÿòòòÿòòòÿVV[ÿ238ÿŒŒÿ®¯±ÿÑÑÒÿñññÿnorÿÿ127ÿBAGÿ 8 ÿ ” ÿ — ÿ ‚ ÿ = ÿ,ÿ?>CÿDCHÿ S ÿž ÿž ÿž ÿv ÿ Nÿb ÿ™ ÿ— ÿ • ÿ ‘ ÿÿ4ÿNÿƒÿ€ÿ{ÿuÿpÿiÿ $ ÿGFJÿBBEÿÿÿCCHÿedhÿ……ˆÿ¥¥§ÿmlpÿÿBAFÿâââÿáááÿàààÿßßßÿßßßÿø pjjjðïïïÿðððÿñññÿñññÿòòòÿóóóÿmmqÿ<=Bÿõõõÿöööÿöööÿ÷÷÷ÿ——šÿÿ,-2ÿ)4+ÿ pÿ – ÿ™ ÿ› ÿ ÿ ÿ E ÿ1ÿ R ÿ  ÿ¡ ÿeÿ474ÿPNMÿ552ÿMÿš ÿ˜ ÿ • ÿBÿ ÿ Œÿ ‡ÿƒÿ~ÿyÿsÿmÿYÿ*ÿJILÿÿ"ÿçççÿçççÿæææÿåååÿŽŽ‘ÿÿ)(-ÿâââÿáááÿàààÿàààÿßßßÿø pjjjðïïïÿðððÿñññÿòòòÿòòòÿóóóÿ„„‡ÿÿðððÿØØÙÿ°°²ÿˆˆ‹ÿEFKÿÿ'(-ÿ ? ÿ – ÿ™ ÿ› ÿž ÿŸ ÿ  ÿ¡ ÿ• ÿ † ÿ£ ÿ¢ ÿ&4$ÿUTQÿyxwÿECBÿ8D5ÿœ ÿš ÿ— ÿ • ÿ ‘ ÿ ÿ ‰ÿ…ÿ€ÿ{ÿuÿoÿjÿ3ÿ@?Aÿ"ÿÿØØÙÿçççÿåååÿÏÏÐÿ``cÿÿÿÙÙÙÿáááÿáááÿàààÿßßßÿø pjjjððððÿðððÿñññÿòòòÿóóóÿóóóÿ›œžÿÿ ÿÿÿÿÿÿ%ÿ {ÿ ˜ ÿ› ÿž ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ$7"ÿGFEÿxvrÿUUSÿÿÿ25:ÿORUÿIOMÿ b ÿš ÿž ÿ  ÿ¢ ÿ¤ ÿ¥ ÿ§ ÿ§ ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ¨ÿ$ÿ Z ÿ¥ ÿ£ ÿ¡ ÿŸ ÿœ ÿ ˜ ÿ • ÿ ‘ ÿ Œÿ ‡ÿ‚ÿ|ÿvÿpÿjÿiÿ#ÿ,#ÿÿÿÿÿ "(ÿ@AFÿ-/4ÿÿ67<ÿàààÿßßßÿÞÞÞÿøphhhðíííÿîîîÿïïïÿïïïÿðððÿñññÿñññÿòòòÿRUYÿ#',ÿôôôÿôôôÿñññÿ%S$ÿ™ ÿœ ÿŸ ÿ¡ ÿ¤ ÿ¤ ÿ¦ ÿ§ ÿ§ ÿ¨ÿ¨ ÿ§ÿ§ ÿ¡ ÿDÿÿ"ÿ L ÿ– ÿ  ÿž ÿ› ÿ— ÿ ” ÿ ÿ ‹ÿ †ÿÿ{ÿtÿnÿjÿ>ÿ*ÿ249ÿÿÿ¬­®ÿÒÒÓÿãããÿãããÿŽ’ÿÿ#ÿßßßÿßßßÿÞÞÞÿøpgggðíííÿîîîÿîîîÿïïïÿðððÿðððÿñññÿñññÿnqtÿÿèééÿóóóÿðððÿ‰‘Šÿ d ÿ› ÿž ÿ  ÿ¢ ÿ£ ÿ¥ ÿ¦ ÿ¦ ÿ§ÿ§ ÿ§ ÿ w ÿ)ÿ ÿ4ÿ>ÿ'ÿ ÿ H ÿ™ ÿ™ ÿ – ÿ “ ÿ Žÿ ‰ÿ„ÿÿyÿsÿlÿhÿÿ&0,ÿ57<ÿÿÿÖÖ×ÿäääÿãããÿâââÿ¤¥§ÿÿÿÎÎÏÿÞÞÞÿÞÞÞÿøpfffðíííÿíííÿîîîÿîîîÿïïïÿðððÿðððÿñññÿ‹ÿÿNRUÿ5:>ÿÿÿ#ÿ ” ÿ ÿž ÿ¡ ÿ¢ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ÿ c ÿÿ9ÿŸ ÿ¤ ÿ£ ÿŸ ÿ g ÿ%ÿ!ÿ €ÿ ” ÿ ‘ ÿ Œÿ ˆÿƒÿ}ÿwÿqÿjÿ<ÿ % ÿ79>ÿ79>ÿ#ÿÿrtwÿ{|ÿgimÿ?AFÿ!ÿÿÿ´´µÿÞÞÞÿÞÞÞÿøpeeeðìììÿíííÿíííÿîîîÿîîîÿïïïÿðððÿðððÿ§©ªÿÿÿÿÿÿÿ@ÿ› ÿ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ ÿ ÿ h ÿ¥ ÿ¤ ÿ¢ ÿ¡ ÿ  ÿž ÿ™ ÿMÿÿZÿ ÿ Šÿ†ÿ€ÿ{ÿuÿoÿgÿÿ.33ÿ9;@ÿ9;@ÿ #(ÿÿÿÿÿÿÿÿÿ™šœÿÞÞÞÿÝÝÝÿøpeeeðìììÿìììÿíííÿíííÿîîîÿîîîÿïïïÿïïïÿÂÃÄÿÿÿÿÿÿ+04ÿ ÿ }ÿ› ÿž ÿŸ ÿ  ÿ¢ ÿ¢ ÿ v ÿÿ fÿ£ ÿ¢ ÿ¢ ÿ¡ ÿ  ÿž ÿœ ÿ™ ÿ – ÿFÿÿ / ÿVÿ‚ÿ~ÿxÿsÿlÿ:ÿ!ÿ;=Bÿ;=Bÿ<=Bÿ&).ÿÿÿÿÿÿÿÿÿ€ƒÿÞÞÞÿÝÝÝÿøpeeeðëëëÿìììÿìììÿíííÿíííÿîîîÿîîîÿïïïÿÞßßÿÿJORÿ·¸¹ÿÔÕÕÿíîîÿñññÿ16:ÿ+ÿš ÿ› ÿ ÿŸ ÿ Š ÿ=ÿ ÿÿ hÿ¡ ÿ  ÿ  ÿŸ ÿž ÿ› ÿ™ ÿ — ÿ ” ÿNÿ ÿ$&)ÿ,01ÿ /ÿOÿtÿpÿfÿÿ368ÿ=?Cÿ=?Cÿ=@Cÿ-/4ÿÿ &ÿWY]ÿwy|ÿ–—šÿ¶·¸ÿ138ÿÿdfjÿÝÝÝÿÝÝÝÿøpdddðêêêÿëëëÿìììÿìììÿíííÿíííÿîîîÿîîîÿïïïÿ$ÿTX[ÿðððÿðððÿðððÿðððÿKPSÿ ÿ[ÿ™ ÿ” ÿFÿÿ$ÿ7:>ÿ!ÿ `ÿž ÿž ÿž ÿœ ÿ› ÿ™ ÿ — ÿ ” ÿ ‘ ÿZÿ 7 ÿ:=@ÿ=?Cÿ=?Cÿ/33ÿ ,ÿEÿ7ÿÿ?ADÿ?ADÿ?BEÿ@BEÿ46:ÿÿ>AEÿâââÿáááÿáááÿàààÿacfÿÿKMQÿÝÝÝÿÜÜÜÿøpcccðêêêÿêêêÿëëëÿëëëÿìììÿìììÿíííÿíííÿîîîÿ5:?ÿ49=ÿ²³µÿŒŽ‘ÿgjnÿAFJÿ!ÿÿ $ ÿPÿÿ'ÿ359ÿ:=Aÿ:=Aÿ+.1ÿ Yÿœ ÿœ ÿ› ÿ™ ÿ˜ ÿ — ÿ ” ÿ ‘ ÿ Žÿ^ÿ 8 ÿ>ADÿ>ADÿ>ADÿ?BEÿ@BEÿ155ÿ%ÿ9;>ÿACFÿACGÿBCFÿBCFÿ;=Aÿÿ048ÿÝÝÝÿÑÑÑÿ·¸¹ÿ‘“ÿ;>Bÿÿ149ÿÝÝÝÿÜÜÜÿøpbbbðéééÿêêêÿêêêÿëëëÿëëëÿìììÿìììÿíííÿíííÿRVZÿÿÿÿÿÿÿÿ!%(ÿ! ÿ288ÿ;>Bÿ;?Bÿ;?Bÿ;?Cÿ69=ÿ Qÿ™ ÿ ™ ÿ˜ ÿ – ÿ • ÿ “ ÿ ‘ ÿ Žÿ Œÿaÿ+ÿ@CFÿ@CFÿACGÿACFÿBDGÿBDGÿBDGÿCEHÿCEHÿDEHÿDEHÿDFIÿDEHÿÿÿÿÿÿÿÿÿ!ÿÜÜÜÿÜÜÜÿøpaaaðéééÿéééÿêêêÿêêêÿëëëÿëëëÿìììÿìììÿìììÿmqtÿÿÿÿÿÿÿÿ %*ÿ<@Cÿ=@Dÿ=@Dÿ=@Dÿ=ADÿ>ADÿ>BEÿ O ÿ — ÿ • ÿ • ÿ “ ÿ ’ ÿ ÿ Žÿ ‹ÿ ‡ÿeÿ!ÿBEHÿCEHÿCEHÿDFIÿDFIÿDFIÿEFIÿEGIÿEGIÿEGJÿFHJÿGHJÿGHKÿ ÿÿÿÿÿÿÿÿÿÊËËÿÜÜÜÿøp```ðèèèÿéééÿéééÿéééÿêêêÿêêêÿëëëÿëëëÿìììÿ‰ŒŽÿÿÿ39<ÿY^`ÿ„†ÿ„†ÿÿ %ÿ?BEÿ?BEÿ?BEÿ@BFÿ@CFÿ@CGÿ@CGÿ P ÿ ’ ÿ ’ ÿ ‘ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿhÿÿEGIÿEGJÿFHJÿFHJÿFHJÿGHKÿGIKÿGIKÿGIKÿHIKÿHJLÿHJLÿIJLÿ $ÿÿÿÿ,/3ÿDGJÿTVZÿÿÿ±²³ÿÜÜÜÿøp___ðçççÿèèèÿèèèÿéééÿéééÿêêêÿêêêÿêêêÿëëëÿ¥§¨ÿÿ¯±²ÿìììÿìììÿìììÿßßàÿÿÿ@CFÿADFÿBDGÿBEHÿBEHÿBEHÿCEHÿ L ÿ ÿ Šÿ ‡ÿ „ÿ€ÿxÿoÿfÿ^ÿIÿ ÿGIKÿHILÿHIKÿHJLÿIJLÿIKLÿIKLÿIKMÿJKMÿJLMÿJLMÿKLNÿIKLÿÿÿ‘“ÿÞÞÞÿÞÞÞÿÞÞÞÿÛÛÛÿÿÿ˜š›ÿÜÜÜÿøp^^^ðçççÿçççÿèèèÿèèèÿéééÿéééÿéééÿêêêÿêêêÿÀÁÂÿÿ‹ÿëëëÿæææÿÅÆÇÿŸ¡ÿÿÿBEGÿCFIÿDFHÿDFHÿDGIÿDGIÿEHJÿ'<)ÿ< ÿ!:#ÿ"7%ÿ$4'ÿ(1*ÿ+2.ÿ052ÿ376ÿ79:ÿ;<=ÿABDÿIKMÿIKMÿJLMÿJLNÿKMNÿKMNÿKMNÿLMNÿLNOÿLMNÿFHIÿ;>@ÿ!%ÿÿÿ|~ÿßßßÿÞÞÞÿÝÝÝÿÝÝÝÿ %)ÿÿ„ÿÜÜÜÿødNNNðæææÿçççÿçççÿçççÿèèèÿèèèÿéééÿéééÿéééÿÛÜÜÿÿ).2ÿ27;ÿÿÿÿÿÿ>ADÿFHJÿFHJÿFIKÿFIKÿGIKÿGIKÿGJKÿHJLÿHKLÿIKLÿIKMÿIKMÿJLMÿJLMÿJLNÿKMNÿKMNÿKMNÿKMNÿLNOÿGIJÿ?BDÿ7:=ÿ/36ÿ',/ÿ $(ÿ!ÿÿÿÿÿÿÿ+/3ÿpsuÿ]`cÿBFIÿ"'+ÿÿÿfikÿÜÜÜÿøýÞÞÞÿæææÿæææÿçççÿçççÿçççÿèèèÿèèèÿéééÿéééÿ!%ÿ ÿ ÿ ÿÿÿÿÿ7:=ÿHJLÿHJLÿHKLÿIKMÿIKMÿILMÿJLMÿJMNÿJMMÿKMMÿKMNÿKNNÿGJKÿ@CEÿ9<>ÿ147ÿ)-0ÿ!&*ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMPTÿØØØÿòÿÿÿÐdddïÞÞÞÿæææÿæææÿæææÿçççÿçççÿçççÿèèèÿèèèÿ5;?ÿ ÿ ÿ ÿÿ$(ÿ#ÿ ÿ"&ÿJLMÿKLMÿKMNÿKMNÿIKLÿADEÿ9:?þ #ÿ416ÿ417ÿ527ÿ528ÿ528ÿ538ÿ539ÿ649ÿ649ÿ649ÿ75:ÿ749ÿ85:ÿ95:ÿA>DÿA>DÿB>DÿB?DÿB?DÿC?EÿC@EÿD@FÿDAFÿDAFÿ!ÿÿ729ÿVQWÿtptÿ%&ÿ0)1ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ§§§÷¸,]]]íàààÿ®­¯ÿÿÞÞÞÿâââÿâââÿnlpÿ!$ÿ=;Aÿ>;Aÿ>DÿA>DÿA>DÿB?DÿB?EÿB?EÿC@EÿC@FÿCAFÿDAFÿEAFÿEBGÿEBGÿFCGÿFBHÿFCHÿGCHÿ$&ÿB=CÿÜÜÜÿÜÜÜÿÜÜÜÿMHNÿÿ×××ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ---ꤻ»»ûáááÿÉÈÉÿÿjhlÿTQVÿ2/5ÿÿÿ@>CÿA>CÿA?DÿA?DÿB?DÿB@EÿB@EÿCAEÿDAFÿDAFÿDBGÿEBGÿECGÿFBHÿFCHÿFCHÿGDIÿGDIÿGDIÿHEIÿHEJÿIEJÿIFJÿJFKÿ+&,ÿ-(/ÿ–”—ÿ‡…ˆÿdafÿ*%,ÿÿÁÀÁÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò ¯ÅÅÅüâââÿàààÿ ÿÿÿÿÿÿ@>CÿCAFÿDAFÿDBFÿDBFÿECGÿEBGÿECGÿFCHÿFDHÿ@>Bÿ.6.ÿ!8"ÿ#7%ÿ&6(ÿ+6+ÿ.5/ÿ262ÿ==>ÿJGKÿKHLÿKHLÿKHLÿLIMÿ1-3ÿÿÿÿÿÿÿª©«ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò ¯ÆÆÆüãããÿãããÿ317ÿ'%+ÿNLQÿrptÿ~|€ÿÿ=;@ÿFDHÿFDHÿGDHÿGEIÿHEIÿHEIÿ+9+ÿ.ÿ8ÿIÿdÿjÿjÿiÿgÿfÿdÿVÿ=ÿ7ÿLILÿNKNÿOLOÿ1-3ÿÿ#&ÿ;7>ÿQNSÿLGMÿÿ“‘”ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò ¯ÈÈÈüäääÿäääÿNLQÿ…„‡ÿæææÿæææÿÜÜÝÿÿ97<ÿHFJÿIGKÿIGJÿIGKÿJHKÿ?ÿRÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ<ÿ?H?ÿIFIÿ<8=ÿ!ÿÿ£¡¤ÿßßßÿÞÞÞÿ±°²ÿÿ|y}ÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò ¯ÉÉÉüåååÿåååÿgfjÿHFLÿ}|ÿYX\ÿ64:ÿÿ527ÿKILÿLJMÿLJMÿLJMÿMKMÿ;;;ÿ,ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿYÿ ÿÿÿÿÿÿifjÿ¦¥§ÿŽ‘ÿdafÿÿebgÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò¯ÊÊÊüæææÿæææÿ‚…ÿÿÿÿÿÿ'%+ÿNLOÿNMOÿOMOÿOMOÿOMOÿJHJÿ/ÿgÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ.ÿÿÿÿÿÿÿÿÿÿÿÿNKPÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò¯ËËËüçççÿçççÿž ÿ#ÿEDIÿ^\aÿkjnÿ539ÿÿ'%+ÿ.-1ÿ'%+ÿ $ÿÿÿÿ8ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ_ÿÿ%")ÿ($+ÿ)&-ÿ*&.ÿ%")ÿÿÿ"ÿ.*0ÿ;8>ÿ!$ÿ628ÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò¯ÌÌÌüçççÿèèèÿ¸¸ºÿ.-3ÿêêêÿêêêÿëëëÿmlpÿÿÿÿÿÿÿÿÿÿUÿjÿjÿjÿjÿjÿjÿjÿjÿ4ÿ+(/ÿ+)0ÿ,)0ÿ,*1ÿ-*1ÿ.*2ÿ ÿQNSÿâââÿáááÿáááÿPMSÿ"ÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿ@@@ò¯ÍÍÍüèèèÿéééÿÔÔÕÿÿ‹Šÿ€‚ÿggjÿ.-2ÿÿÿ#ÿ &ÿ"!(ÿ%#*ÿ'%-ÿ(&.ÿ)'.ÿ ) ÿiÿjÿjÿjÿjÿjÿjÿSÿ &$ÿ.+3ÿ.,3ÿ/,3ÿ/-4ÿ/-4ÿ0.5ÿ $ÿ+)/ÿ¼¼½ÿ¥¤¦ÿŒŠÿ;7=ÿÿÌÌÍÿÞÞÞÿÝÝÝÿÜÜÜÿÜÜÜÿ@@@ò¯ÍÍÍüéééÿêêêÿéééÿ"ÿÿÿÿÿÿ"!(ÿ('.ÿ)(.ÿ*(/ÿ*)0ÿ+)0ÿ+*1ÿ,*1ÿ'&-ÿ:ÿjÿjÿjÿjÿjÿiÿ 0 ÿ0.5ÿ1.5ÿ1/6ÿ2/6ÿ2/7ÿ207ÿ307ÿ$!(ÿÿÿÿÿÿÿµ´¶ÿÞÞÞÿÝÝÝÿÝÝÝÿÜÜÜÿ@@@ò¯ÎÎÎüêêêÿëëëÿëëëÿ76;ÿ! &ÿ>=BÿTSWÿXW[ÿÿ('-ÿ+*1ÿ,+1ÿ,+2ÿ-,2ÿ-,2ÿ--3ÿ/-4ÿ/.5ÿ#ÿ[ÿkÿjÿjÿjÿFÿ,+0ÿ218ÿ318ÿ329ÿ429ÿ529ÿ53:ÿ63:ÿ)&-ÿÿÿÿ,)0ÿ539ÿÿžŸÿßßßÿÞÞÞÿÝÝÝÿÜÜÜÿ@@@ò¯ÏÏÏüëëëÿìììÿìììÿRRVÿ˜˜›ÿîîîÿïïïÿçæçÿÿ'&-ÿ..4ÿ/.4ÿ/.5ÿ0/5ÿ0/5ÿ0/6ÿ106ÿ107ÿ106ÿ: ÿtÿrÿpÿnÿ9ÿ54:ÿ64;ÿ64;ÿ64;ÿ65;ÿ75<ÿ76<ÿ76<ÿ.,3ÿÿ}ÿÜÜÜÿãããÿ··¸ÿÿ†…ˆÿßßßÿÞÞÞÿÞÞÞÿÝÝÝÿ@@@ò¯ÐÐÐüìììÿìììÿíííÿnnrÿUUYÿ¦¦¨ÿŒŒÿjjmÿÿ%%+ÿ117ÿ217ÿ217ÿ228ÿ328ÿ328ÿ439ÿ439ÿ44:ÿ7ÿ{ÿzÿwÿuÿ=ÿ86=ÿ87=ÿ97>ÿ98>ÿ98>ÿ:8?ÿ:9?ÿ:9?ÿ429ÿÿzy}ÿÌÌÍÿ®­¯ÿƒ‚…ÿÿnmqÿàààÿßßßÿÞÞÞÿÝÝÝÿ@@@ò¯ÐÐÐüìììÿíííÿîîîÿЉÿÿÿÿÿÿ##)ÿ44:ÿ44:ÿ44:ÿ44:ÿ55;ÿ65;ÿ66<ÿ76<ÿ216ÿ A ÿÿ€ÿÿ|ÿ . ÿ+./ÿ:9?ÿ;:?ÿ<:@ÿ<:@ÿ<;Aÿ=;Aÿ=;Aÿ;9?ÿÿÿÿÿÿÿVUZÿàààÿßßßÿÞÞÞÿÝÝÝÿAAAò¯ÑÑÑüíííÿîîîÿïïïÿ¥¥¨ÿÿÿ328ÿSSXÿ65;ÿ &ÿ65<ÿ76=ÿ77=ÿ88=ÿ88>ÿ88>ÿ99>ÿ 3#ÿOÿ †ÿ ˆÿ ‡ÿ…ÿ‚ÿÿ1ÿ77:ÿ==Bÿ>=Cÿ>>Cÿ?>Dÿ@>Dÿÿÿÿ$ÿ*(.ÿÿ?=CÿáááÿàààÿßßßÿÞÞÞÿAAAò¯ÒÒÒüîîîÿîîîÿïïïÿÂÂÄÿÿâââÿòòòÿóóóÿ„ÿ#ÿ98?ÿ99?ÿ:9?ÿ:9@ÿ::@ÿ;:@ÿ;;Aÿ;ÿ Žÿ Žÿ Žÿ Œÿ ‹ÿ ˆÿ…ÿEÿ(-+ÿ??Cÿ@?Dÿ@?DÿA@DÿA@EÿA@EÿAAEÿ$ÿutxÿßßßÿåååÿäääÿ;9?ÿ(&,ÿáááÿàààÿßßßÿÞÞÞÿBBBò¯ÓÓÓüîîîÿïïïÿðððÿàààÿÿ©©¬ÿºº¼ÿŸŸ¢ÿLLRÿÿ;;Aÿ;;Aÿ<=Cÿ>ÿ ” ÿ ” ÿ ’ ÿ ‘ ÿ ÿ Žÿ ŠÿXÿ!5$ÿBAFÿBAFÿBBFÿ6:9ÿ.:1ÿCBGÿDCGÿ%$)ÿMLQÿæææÿáááÿºº»ÿ=>Cÿ136ÿ>>Cÿ?>Dÿ??Dÿ@?EÿAÿ˜ ÿ˜ ÿ˜ ÿ – ÿ ” ÿ ’ ÿ ÿ\ÿ8!ÿDDHÿA@Eÿ6ÿRÿ>ÿ::=ÿFEIÿ+*/ÿÿ)(.ÿÿÿÿÿÄÄÄÿáááÿàààÿßßßÿCCCò¯ÕÕÕüïïïÿðððÿñññÿòòòÿ78=ÿÿÿ349ÿ@@Fÿÿ88=ÿ;;?ÿKÿ J ÿ5!ÿ??DÿBAGÿDÿœ ÿœ ÿ› ÿš ÿ ˜ ÿ — ÿ “ ÿcÿ4 ÿ,9-ÿ E ÿvÿuÿkÿ.ÿGGJÿ226ÿÿÿÿÿ! %ÿÿ¬¬­ÿáááÿàààÿßßßÿCCCò¯ÕÕÕüðððÿñññÿòòòÿóóóÿOOTÿššœÿñññÿöööÿÛÛÛÿÿ449ÿ;ÿ “ ÿ˜ ÿ ÿ Q ÿ9!ÿEÿ  ÿ  ÿ#c ÿ-7,ÿ#9 ÿ ’ ÿ — ÿ vÿ - ÿpÿ…ÿÿxÿqÿ[ÿ&3'ÿ::=ÿÿ„ÿ¼¼½ÿÚÚÛÿ££¤ÿÿ““•ÿáááÿàààÿßßßÿCCCò ¯ÕÕÕüðððÿñññÿòòòÿóóóÿggkÿ‹ŒŽÿããäÿ½½¿ÿ“ÿÿ*,-ÿ aÿ™ ÿ› ÿž ÿ  ÿ™ ÿ b ÿ¢ ÿ› ÿ13/ÿŠˆ‡ÿNMJÿYÿš ÿ — ÿ ‘ ÿ Žÿ ‰ÿ‚ÿ|ÿtÿlÿ=ÿ<;>ÿÿ©©«ÿçççÿÝÝÝÿ€€ƒÿÿxx|ÿáááÿàààÿßßßÿCCCò ¯ÕÕÕüðððÿñññÿòòòÿóóóÿ~‚ÿÿÿÿÿÿ <ÿ– ÿ› ÿž ÿ¡ ÿ¢ ÿ¤ ÿ¥ ÿ¤ ÿ ÿ,0*ÿONMÿ[[Xÿdÿ ÿ™ ÿ • ÿ ‘ ÿ Œÿ…ÿÿwÿoÿgÿ&ÿÿ217ÿ*)/ÿÿÿÿ^^bÿâââÿáááÿßßßÿCCCò ¯ÕÕÕüðððÿñññÿòòòÿôôôÿ–—šÿÿÿÿ!#)ÿÿ kÿš ÿž ÿ¡ ÿ£ ÿ¥ ÿ¥ ÿ¦ÿ¦ ÿ¦ ÿfÿ!ÿ*Y(ÿ¢ ÿŸ ÿœ ÿ˜ ÿ “ ÿ Žÿ ˆÿÿzÿqÿjÿCÿÿÿÿÿÿÿDCHÿâââÿáááÿàààÿCCCò ¯ÕÕÕüðððÿòòòÿóóóÿôôôÿ®¯±ÿ/06ÿ½½¿ÿâããÿùùùÿQÿ˜ ÿœ ÿŸ ÿ¢ ÿ¤ ÿ¦ ÿ§ ÿ§ ÿ§ÿ§ÿ§ÿ*ÿ¢ ÿ£ ÿ  ÿž ÿ™ ÿ • ÿ ÿ Šÿƒÿ|ÿtÿjÿYÿÿ88>ÿÿ­­¯ÿÉÉÊÿ**0ÿ((/ÿâââÿáááÿàààÿCCCò ¯ÕÕÕüðððÿòòòÿóóóÿôôôÿÉÊËÿ#ÿôôôÿêêêÿ½À¿ÿ `ÿš ÿž ÿ¡ ÿ£ ÿ¥ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ ÿ§ ÿ ' ÿ¢ ÿ¤ ÿ¢ ÿž ÿ› ÿ – ÿ ‘ ÿ Œÿ„ÿ}ÿsÿAÿ ÿÿOOTÿçççÿæææÿÇÇÈÿ88>ÿÿÛÛÛÿáááÿàààÿCCCò ¯ÕÕÕüðððÿñññÿòòòÿôôôÿæææÿÿ$ÿÿÿ ÿCÿ’ ÿ¢ ÿ¤ ÿ¦ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ % ÿŸ ÿ¥ ÿ£ ÿ  ÿœ ÿ— ÿ “ ÿ Œÿ†ÿmÿ/ÿ&ÿ!"(ÿ ÿ!!'ÿFFKÿ%%,ÿÿÿÿÁÁÂÿáááÿàààÿCCCò ¯ÕÕÕüðððÿñññÿòòòÿóóóÿôôôÿ!'ÿÿÿÿÿÿ # ÿ [ÿ¤ ÿ¦ÿ¨ÿ¨ÿ¨ ÿ§ ÿ§ÿ¨ÿ %ÿœ ÿ¦ ÿ£ ÿ¡ ÿ ÿ™ ÿ “ ÿ ÿ\ÿ ÿ$ÿ#$+ÿ$%+ÿ$ÿÿÿÿÿÿÿ§§©ÿáááÿßßßÿCCCò ¯ÕÕÕüðððÿñññÿòòòÿóóóÿôôôÿ;=BÿpruÿÈÉÊÿææçÿÌÌÍÿÿÿ!ÿ,ÿ¤ ÿ¨ ÿ¨ÿ§ÿ¦ ÿ§ÿ¨ÿ'ÿ” ÿ¦ ÿ£ ÿ  ÿ ÿ ˜ ÿ “ ÿ ÿ~ÿGÿ&"ÿ&'.ÿ'(.ÿ!"(ÿÿVW[ÿ††‰ÿ¥¥§ÿyy|ÿÿŒŒÿàààÿßßßÿCCCò¯ÕÕÕüðððÿñññÿòòòÿóóóÿôôôÿVY]ÿ†ˆ‹ÿóóóÿÒÓÔÿ™›ÿÿÿ ' ÿ | ÿ§ ÿ¨ ÿ¨ÿ§ÿ¦ ÿ§ÿ¨ÿ,ÿ‰ ÿ¦ ÿ¤ ÿ¡ ÿ ÿ™ ÿ “ ÿ ÿ †ÿÿYÿ / ÿ$'+ÿ&&-ÿÿ°°±ÿåååÿäääÿ ¡£ÿÿqruÿàààÿßßßÿCCCò¯ÕÕÕüïïïÿðððÿñññÿòòòÿóóóÿtvyÿÿ ÿÿÿ ÿBÿ ÿ¥ ÿ§ÿ¨ÿ¨ÿ¨ÿ§ÿ¨ÿ¨ÿ0ÿ  ÿ¥ ÿ£ ÿ  ÿœ ÿ— ÿ “ ÿ Œÿ…ÿ~ÿuÿlÿLÿ0ÿÿEFKÿMNRÿ-.3ÿÿÿWW[ÿàààÿßßßÿCCCò¯ÕÕÕüïïïÿðððÿñññÿñññÿòòòÿ‘”ÿÿÿÿ* ÿhÿ  ÿ¢ ÿ¥ ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ6ÿ w ÿ¤ ÿ¢ ÿŸ ÿ› ÿ – ÿ ‘ ÿ ‹ÿ„ÿ|ÿuÿkÿiÿ!ÿÿÿÿÿÿÿ;=BÿàààÿßßßÿCCCò¯ÓÓÓüîîîÿïïïÿðððÿñññÿòòòÿ«­®ÿ!ÿ¡£¤ÿ½¾¿ÿ"b ÿš ÿž ÿ¢ ÿ¤ ÿ¦ ÿ¦ÿ§ÿ§ÿ¨ÿ¨ÿ¢ ÿ,ÿ B ÿŸ ÿ¡ ÿž ÿš ÿ • ÿ ÿ ‰ÿƒÿ{ÿsÿjÿDÿ3ÿ!ÿ &ÿ^`dÿ€ƒÿŸ ¢ÿ&(.ÿ!#(ÿßßßÿÞÞÞÿBBBò¯ÒÒÒüîîîÿïïïÿïïïÿðððÿñññÿÇÈÉÿÿëëëÿôôôÿŽŽÿ { ÿœ ÿ  ÿ£ ÿ¥ ÿ¦ ÿ§ ÿ§ ÿ§ ÿq ÿ'ÿ/ÿ1ÿ%ÿQÿš ÿ˜ ÿ “ ÿ Žÿ ‡ÿ€ÿyÿpÿiÿ$ÿ149ÿ &ÿ9;@ÿäääÿãããÿâââÿLNRÿÿÓÓÓÿÞÞÞÿBBBò¯ÑÑÑüíííÿîîîÿïïïÿïïïÿðððÿããäÿÿ;?Dÿ#(ÿÿ3ÿ› ÿž ÿ¡ ÿ£ ÿ¤ ÿ¥ ÿ¦ ÿZÿ'ÿ} ÿ¤ ÿ£ ÿ’ ÿ;ÿ % ÿ ‡ ÿ ‘ ÿ Œÿ…ÿ~ÿvÿmÿ@ÿ/ÿ79>ÿ#%+ÿ%ÿbdgÿQSWÿ,/4ÿÿÿ¹¹ºÿÞÞÞÿBBBò¯ÐÐÐüìììÿíííÿîîîÿïïïÿïïïÿðððÿ#'ÿÿÿÿÿYÿœ ÿŸ ÿ¡ ÿ£ ÿ£ ÿ | ÿ4ÿ ÿ£ ÿ¢ ÿ  ÿž ÿ› ÿ zÿÿNÿ „ÿ‚ÿ{ÿsÿhÿÿ9;?ÿ:BÿLPTÿ—™›ÿ²´µÿ±²³ÿ# ÿ ÿœ ÿž ÿ” ÿEÿÿ H ÿ¢ ÿ  ÿŸ ÿž ÿ› ÿ˜ ÿ ” ÿ ÿÿ5ÿKÿsÿoÿ<ÿ,ÿ=?Cÿ=?Cÿ137ÿÿ027ÿY[_ÿxz}ÿcehÿÿƒ„‡ÿÝÝÝÿ@@@ò¯ÏÏÏüëëëÿìììÿìììÿíííÿîîîÿîîîÿUY]ÿwz}ÿðððÿðððÿÐÑÒÿÿAÿ— ÿPÿ$ÿ%-)ÿ46:ÿ C ÿž ÿž ÿœ ÿš ÿ— ÿ ” ÿ ‘ ÿ;ÿ8:=ÿ=?Cÿ:=@ÿ3ÿAÿÿ>@Cÿ?BEÿ@BEÿ8:>ÿÿ›œžÿáááÿàààÿ´µ¶ÿÿiknÿÝÝÝÿ@@@ò¯ÎÎÎüêêêÿëëëÿëëëÿìììÿíííÿíííÿqtwÿ.37ÿEIMÿ$(ÿÿÿ"ÿ # ÿ.ÿ9Aÿ;>Bÿ H ÿ› ÿš ÿ ˜ ÿ — ÿ ” ÿ ÿ Œÿ8ÿ;>@ÿ@BEÿ@BFÿ@CFÿ?AEÿ?@BÿBDGÿCDGÿCEHÿABFÿÿNPTÿoqtÿTWZÿ(,0ÿÿORVÿÜÜÜÿ@@@ò¯ÍÍÍüéééÿêêêÿëëëÿëëëÿìììÿìììÿŒ‘ÿÿÿÿÿÿ!&ÿAÿFHJÿFHJÿGHKÿGIKÿGIKÿHIKÿHJLÿIJLÿIKLÿ!ÿÿGJMÿ_adÿuxzÿ(,0ÿ!%ÿÜÜÜÿ@@@ò¯ÌÌÌüçççÿèèèÿéééÿéééÿêêêÿêêêÿÃÄÅÿÿããäÿìììÿìììÿw{}ÿÿAEGÿBEGÿBEHÿCFIÿDFIÿDÿ Y ÿ U ÿ R ÿMÿIÿEÿAÿ+ÿBDFÿIKLÿIKMÿJKMÿJLMÿKLNÿKMNÿKMNÿLMNÿ;>@ÿÿ:>BÿßßßÿÞÞÞÿÝÝÝÿNQUÿÿÐÐÑÿ@@@ò¤ÂÂÂûçççÿçççÿèèèÿèèèÿéééÿéééÿÞÞßÿÿ^beÿLPSÿ%+/ÿÿÿ@CEÿEHJÿFHJÿFIKÿFIKÿGIKÿGJKÿHJLÿIKLÿIKMÿIKMÿJLMÿJLNÿKMNÿKMNÿKMNÿEGHÿ=@Bÿ59;ÿ.25ÿ'*.ÿ#'ÿ ÿÿÿÿŠŒŽÿ}€‚ÿ_beÿ"&+ÿÿ·¸¹ÿ:::ñ *fffíæææÿæææÿçççÿçççÿèèèÿèèèÿéééÿ"'ÿ ÿ ÿ ÿÿÿ8;>ÿHKLÿIKMÿIKMÿJLMÿJMNÿKMMÿKMNÿEHIÿ>ACÿ6:<ÿ/36ÿ'+/ÿ$(ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›žþ ñÿÿÿ¹bbbíºººùÄÄÄûÄÄÄûÅÅÅûÅÅÅûÆÆÆû169þ37:þ\`býortüimnýÿ!ÿ156ÿ257ÿ+/1ÿ%)+ÿ"%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ"ÿ#ÿÿÿ!&+ÿ6:?ÿEILÿ>BFÿÿ789öŒÿÿÿÿÿÿ (¦¯¯¯¯¯È¼¯¯°ÒÒÒÒÒÒÒÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ122õ@@@ò@@@ò111ôü¦ÿÿÿà€€€€à( @ &&&6MMMÉFCHö0)1ü3-4û506û;6<üC>EýC>EýD?EýD?FýE?FýEAFýEAFýFAGýGBGýGBGþGBGþGCHþHCHþHCIþHDIþB;Bý2*1ý2*1ý3+2ý3+2ýgegøuuu÷sss÷bbbårLLLÌÜÜÜÿxtxÿ”‘”ÿÛÛÛÿŠÿ,'.ÿ@;Bÿ@;BÿADÿC?DÿD?DÿD@EÿE@FÿEAFÿFAGÿGBGÿGBGÿHCHÿ@:@ÿ/&.ÿ´²´ÿÒÒÒÿ;2:ÿšÿÜÜÜÿÜÜÜÿÜÜÜÿ___ætttðÜÜÜÿŽ‘ÿ?:Aÿ<7=ÿ !ÿ*$+ÿC?DÿC?EÿD@EÿEAGÿEAFÿFBGÿFCGÿGCHÿFAGÿ>>>ÿ6:6ÿ464ÿC@CÿKFKÿKGKÿICHÿ&%ÿmglÿTNTÿ$#ÿ†‚†ÿÜÜÜÿÜÜÜÿÜÜÜÿuuuøwwwòÜÜÜÿ©§©ÿ!#ÿAÿÿÿÿÿ) ÿ'!(ÿÿB;BÿÜÜÜÿÜÜÜÿÜÜÜÿvvvøxxxòßßßÿàààÿ96<ÿ}{~ÿ‘ÿ/.1ÿ #ÿ(#*ÿ!#ÿÿ 9 ÿ˜ ÿ˜ ÿ— ÿ – ÿ ” ÿ ‘ ÿ ŽÿFÿ# %ÿ-'/ÿ'#)ÿ2ÿ]ÿ-ÿa\aÿ*"+ÿÜÜÜÿÜÜÜÿÜÜÜÿvvvøyyyòàààÿâââÿLJOÿ§¦¨ÿ‰ˆŠÿLÿFÿ#ÿ"ÿ"&ÿAÿœ ÿœ ÿ› ÿš ÿ˜ ÿ – ÿ ’ ÿGÿ'#)ÿ.ÿSÿyÿrÿ\ÿDPDÿÿÒÒÒÿÜÜÜÿÜÜÜÿvvvøyyyòâââÿãããÿdchÿÿ . ÿ ” ÿ˜ ÿ‘ ÿ N ÿ.ÿEÿŸ ÿ  ÿ'T&ÿ/9.ÿ@ÿ— ÿ – ÿQÿ > ÿ€ÿ„ÿ}ÿvÿnÿ=ÿÿ¼»¼ÿÜÜÜÿÜÜÜÿvvvøzzzòãããÿåååÿ~ÿxy{ÿkÿ ˜ ÿ› ÿž ÿ  ÿ› ÿ n ÿ£ ÿ„ ÿ<;:ÿŽŒ‹ÿBA?ÿ z ÿ™ ÿ – ÿ ’ ÿ ÿ ‡ÿ€ÿzÿrÿiÿ ( ÿ¤£¥ÿÜÜÜÿÜÜÜÿvvvø{{{òåååÿæææÿššœÿHÿ— ÿ› ÿž ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ‰ ÿ/0.ÿ@>>ÿTUQÿ ~ ÿœ ÿ ™ ÿ • ÿ ÿ Šÿ„ÿ|ÿuÿlÿPÿUXUÿÜÜÜÿÜÜÜÿvvvø{{{òæææÿèèèÿ—œ˜ÿkÿš ÿž ÿ  ÿ£ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ¦ ÿ`ÿ!ÿ kÿ¡ ÿž ÿ› ÿ — ÿ ’ ÿ Œÿ †ÿÿwÿoÿjÿ1ÿÌÌÌÿÜÜÜÿvvvø|||òçççÿéééÿ4m3ÿ˜ ÿœ ÿ  ÿ¢ ÿ¥ ÿ¦ ÿ§ÿ§ÿ§ÿ§ÿ§ÿ* ÿ¥ ÿ£ ÿ  ÿœ ÿ ™ ÿ ” ÿ Žÿ ˆÿÿyÿqÿiÿ3ÿ€ƒ€ÿÜÜÜÿvvvø|||òèèèÿÞßÞÿ`ÿš ÿž ÿ¡ ÿ¤ ÿ¦ ÿ§ÿ¨ ÿ¨ ÿ¨ÿ¨ ÿ§ ÿ+ÿ¦ ÿ¤ ÿ¢ ÿž ÿš ÿ • ÿ ÿ ‰ÿƒÿ{ÿaÿ*ÿ(5)ÿÜÜÜÿÜÜÜÿvvvø}}}òéééÿëëëÿÈÍÈÿBÿ‚ ÿ¢ ÿ¥ ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ*ÿ§ ÿ¥ ÿ£ ÿŸ ÿ› ÿ – ÿ ‘ ÿ ‹ÿƒÿMÿ * ÿCCEÿ306ÿÜÜÜÿÜÜÜÿvvvø~~~òêêêÿìììÿîîîÿPQUÿ”¡“ÿ$i#ÿž ÿ§ÿ¨ÿ¨ÿ§ÿ§ÿ§ÿ¨ÿ(ÿ§ÿ¥ ÿ£ ÿ  ÿœ ÿ — ÿ ‘ ÿ Œÿ<ÿ:D:ÿÛÛÛÿ¢¡£ÿ!ÿÚÚÛÿÜÜÜÿvvvø~~~òêêêÿìììÿîîîÿ\]aÿÿÿ'ÿ¥ ÿ¨ÿ¨ÿ§ ÿ¦ ÿ§ÿ¨ÿ(ÿ§ ÿ¥ ÿ£ ÿ  ÿœ ÿ— ÿ ’ ÿ ŒÿyÿCÿÿÿÿÅÅÆÿÜÜÜÿvvvø~~~òêêêÿìììÿïïïÿstwÿWZ[ÿ L ÿ– ÿ§ ÿ¨ ÿ¨ÿ§ÿ¦ÿ§ ÿ¨ÿ)ÿ¤ÿ¥ ÿ£ ÿ  ÿœ ÿ — ÿ ‘ ÿ ‹ÿ„ÿ|ÿVÿ"F"ÿ!ÿ¬¬­ÿÜÜÜÿvvvø~~~òêêêÿìììÿïïïÿNbPÿbÿ£ ÿ¥ ÿ§ÿ¨ÿ¨ÿ¨ÿ§ÿ¨ÿ¨ÿ&ÿ  ÿ¥ ÿ£ ÿŸ ÿ› ÿ — ÿ ‘ ÿ Šÿƒÿ{ÿsÿjÿLÿMXMÿÜÜÜÿvvvø~~~òêêêÿëëëÿHoGÿ ÿŸ ÿ¢ ÿ¥ ÿ¦ ÿ§ÿ¨ ÿ¨ ÿ¨ÿ¨ÿ§ÿ&ÿœ ÿ¤ ÿ¢ ÿž ÿš ÿ • ÿ ÿ ‰ÿÿzÿqÿjÿFÿ$A&ÿÜÜÜÿvvvø}}}òêêêÿìììÿ6h6ÿš ÿž ÿ¡ ÿ£ ÿ¥ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ ÿv ÿ ÿ>ÿ ÿ  ÿ ÿ ˜ ÿ ” ÿ ÿ ‡ÿ€ÿxÿoÿiÿ(ÿWY\ÿÜÜÜÿvvvø}}}òéééÿëëëÿÄÇÄÿkÿœ ÿ  ÿ¢ ÿ¥ ÿ¦ ÿ¦ ÿ¦ÿ¥ÿCÿ'ÿHÿEÿ(ÿBÿ • ÿ – ÿ ‘ ÿ Œÿ…ÿ}ÿuÿmÿFÿ,ÿEEKÿÜÜÜÿvvvø|||òèèèÿêêêÿìììÿUtUÿ “ ÿž ÿ¡ ÿ¢ ÿ¤ ÿ¥ ÿ¥ ÿ 3 ÿAÿ¡ ÿ£ ÿ¢ ÿ ÿOÿ$ ÿ {ÿ ÿ ‰ÿ‚ÿ{ÿsÿiÿÿ"#(ÿ,,2ÿÜÜÜÿvvvø|||òçççÿéééÿëëëÿàààÿ I ÿ› ÿž ÿ  ÿ¢ ÿ ÿ@ÿ Lÿ¤ ÿ£ ÿ¡ ÿŸ ÿ ÿ™ ÿ ~ÿÿ D ÿvÿÿwÿoÿBÿViVÿ¹¹ºÿÿØØØÿvvvø{{{òæææÿèèèÿéééÿëëëÿ.>3ÿ zÿ› ÿž ÿ hÿ*ÿÿ [ ÿ¡ ÿ  ÿž ÿœ ÿ™ ÿ — ÿ ÿÿ*+/ÿ1$ÿ A ÿfÿjÿÿ?@Eÿ "(ÿÿÀÁÂÿvvvø{{{òäääÿæææÿèèèÿéééÿlpsÿ=ÿ s ÿ,ÿ ÿ038ÿ.16ÿ T ÿž ÿœ ÿ› ÿ ˜ ÿ – ÿ ’ ÿ Žÿ6ÿ:<@ÿ;=Aÿ;=Aÿ#0'ÿ , ÿ ÿ>@Eÿ\^aÿ!ÿ§¨©ÿvvvøzzzòãããÿåååÿæææÿçççÿ‡ŠŒÿnssÿJUKÿX]^ÿ"&ÿ6:>ÿ7;?ÿ V ÿ™ ÿ ˜ ÿ — ÿ • ÿ ’ ÿ Žÿ Šÿ-ÿ>ADÿ>ADÿ@BEÿ@BEÿ<>Bÿ%)-ÿ×××ÿ¿¿Àÿ/27ÿŽ‘ÿvvvøyyyòâââÿãããÿäääÿæææÿ¡£¥ÿ ÿ ÿ ÿ"ÿ;>Bÿ;?Bÿ ] ÿ • ÿ ” ÿ ’ ÿ ÿ ÿ ‰ÿ…ÿ%ÿBEHÿCEHÿDFIÿEFIÿEGIÿÿÿÿÿsuxÿvvvøxxxòàààÿáááÿãããÿäääÿº¼½ÿ4;?ÿ–™›ÿ±³´ÿÿ?BFÿ?CFÿYÿ ÿ ÿ ÿ ‹ÿ ‡ÿÿzÿÿGIKÿGIKÿHJLÿIKLÿJKMÿÿ\_bÿˆŠŒÿSWZÿY\_ÿvvvøvvvðÞÞÞÿàààÿáááÿâââÿÔÔÕÿ07;ÿƒ…ÿZ_cÿ ÿAEGÿDGJÿ'C*ÿJ ÿG ÿ E!ÿ!B#ÿ$?%ÿ(;*ÿ-8/ÿ7::ÿBEFÿ@ÿ37:ÿ+03ÿ#),ÿ!%ÿÿÿÿÿÿÿÿÿÿÿÿ%*/ÿWWWÞ&&&6MMMËuuuðyyyñyyyñzzzñ3:<ústtò{{{ñ8=Aù'+ü$,/ü'+ü&+ü&+ü&+ü &*þ &*þ!'+þ"(,þ#)-þ$*.þ&,0þ(-2þ*/3þ+/4þ%*.þ?CEübdeù^_`ù,13ñS€€(0 NNN}vuví:5;üQKQú929ýD?FþD@FþE@FþFAGþFAGþGBHþGBHþHBHþHCHþICIþIDIþJDJþ1*0þ<5;þ=6<þd`cüŠŠŠú„„„óYYY«‰‰‰êÌÌÌÿ^Z_ÿŽ‹ÿ2,3ÿADÿC?EÿD@EÿEAFÿFBFÿGBGÿGCHÿHCIÿIDIÿJEIÿ0(/ÿ´²´ÿojoÿwqvÿÜÜÜÿÜÜÜÿ„„„󘘘ôÜÜÜÿ'")ÿ?:@ÿ507ÿB?DÿGCHÿHDIÿ2@2ÿVÿZÿ \ ÿ ] ÿ\ÿ5ÿNJNÿOKNÿ''ÿ)!)ÿ:29ÿ`Z_ÿÜÜÜÿÜÜÜÿù˜˜˜ôÜÜÜÿ_\aÿ§¥¨ÿRNTÿA>BÿLHLÿMIMÿ&I%ÿ ÿ ÿ ÿ ‹ÿ ‡ÿ@ÿ606ÿ.)/ÿÿ¢ ¢ÿšÿIBIÿÜÜÜÿÜÜÜÿù™™™ôÞÞÞÿURWÿ74:ÿ628ÿ*&,ÿ?;@ÿ859ÿ@ÿ – ÿ • ÿ ” ÿ ‘ ÿ ÿRÿ ÿ$%ÿ ÿDÿ$!%ÿ4-4ÿÜÜÜÿÜÜÜÿùšššôáááÿsrvÿµ´¶ÿ3X4ÿGÿ ÿ"ÿ<ÿ› ÿ› ÿ™ ÿ— ÿ ” ÿVÿ%#)ÿ:ÿgÿpÿ#O#ÿ4.5ÿØ×ØÿÜÜÜÿùœœœôãããÿ‡†‰ÿ!%ÿ f ÿ™ ÿ ‹ ÿ S ÿ?ÿ  ÿhÿ5<4ÿ%J!ÿ ˜ ÿ kÿVÿ ‡ÿÿuÿbÿ$ÿÃÂÃÿÜÜÜÿùôåååÿ¢¡£ÿ9j:ÿ˜ ÿ ÿ  ÿ¢ ÿŸ ÿ£ ÿ 5ÿ‰ˆ†ÿAH?ÿ ÿ˜ ÿ ’ ÿ Œÿ„ÿzÿoÿHÿ›šœÿÜÜÜÿùžžžôçççÿ¬¯­ÿ qÿœ ÿ  ÿ£ ÿ¥ ÿ¦ ÿ¦ ÿ€ÿ ÿ-p*ÿŸ ÿ› ÿ – ÿ ÿ ‡ÿ}ÿsÿiÿ(D)ÿÜÜÜÿùžžžôèèèÿI…Iÿ™ ÿž ÿ¢ ÿ¥ ÿ§ ÿ§ÿ¨ÿ§ÿ7ÿ¥ ÿ¢ ÿ ÿ ˜ ÿ ’ ÿ ‰ÿ€ÿuÿaÿ2ÿÐÐÐÿùŸŸŸôêêêÿe‘eÿ vÿ  ÿ¤ ÿ¦ ÿ¨ ÿ¨ÿ¨ÿ¨ÿ7ÿ¦ÿ£ ÿ  ÿš ÿ ” ÿ Œÿ‚ÿSÿ*ÿ`_cÿÜÜÜÿù   ôëëëÿíííÿ]daÿ<};ÿ• ÿ§ ÿ¨ÿ¨ÿ§ ÿ¨ÿ5ÿ§ ÿ¤ ÿ  ÿ› ÿ ” ÿ ŒÿBÿdqeÿ²²´ÿOLQÿÜÜÜÿù   ôëëëÿîîîÿKLQÿÿ1 ÿ¦ÿ¨ÿ§ÿ¦ ÿ§ÿ7ÿ§ÿ¤ ÿ¡ ÿ› ÿ • ÿ Œÿsÿ ? ÿÿ549ÿÜÜÜÿù¡¡¡ôëëëÿîîîÿV_Zÿ)j(ÿ¡ÿ§ ÿ¨ÿ§ÿ§ÿ¨ÿ9ÿ¤ ÿ¤ ÿ  ÿ› ÿ ” ÿ ‹ÿ‚ÿwÿWÿ9ÿØØØÿù   ôëëëÿƒ£ƒÿxÿ¡ ÿ¥ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ7ÿŸ ÿ£ ÿž ÿ™ ÿ ’ ÿ Šÿ€ÿuÿjÿBÿš šÿù   ôëëëÿfŠeÿ— ÿ  ÿ£ ÿ¦ ÿ§ ÿ¨ÿ§ ÿ|ÿ#ÿ7ÿ€ ÿ ÿ— ÿ ÿ ˆÿ~ÿsÿfÿ 5ÿ®®°ÿùŸŸŸôéééÿèèèÿfÿ ÿ¡ ÿ£ ÿ¥ ÿ¦ ÿTÿ9ÿˆ ÿ x ÿ6ÿ C ÿ “ ÿ Žÿ…ÿ{ÿpÿ>ÿÿ••—ÿùžžžôèèèÿëëëÿƒ”„ÿ„ ÿž ÿ¡ ÿ£ ÿ c ÿ O ÿ¤ ÿ¢ ÿŸ ÿ› ÿ nÿ" ÿgÿ€ÿwÿgÿ%A&ÿxy|ÿ{{~ÿùžžžôæææÿéééÿæææÿ @ ÿš ÿ ÿ:ÿÿ g ÿ  ÿž ÿ› ÿ— ÿ ‘ ÿ & ÿ148ÿCÿ^ÿ6ÿ*40ÿ"ÿabfÿùœœœôåååÿçççÿéééÿDJKÿ#O#ÿ%@'ÿ+/3ÿ48<ÿ ` ÿ› ÿ™ ÿ — ÿ ’ ÿ ÿ : ÿ=?Cÿ=@Cÿ=?Bÿ&ÿ‚…ÿž ÿGINÿù›››ôãããÿäääÿæææÿHMQÿ$(ÿ ÿ,05ÿ:>Bÿ f ÿ • ÿ ” ÿ ÿ Œÿ ‡ÿ 2ÿBDGÿCEHÿDFIÿ*.2ÿ7:?ÿ),1ÿ,04ÿù™™™ôàààÿâââÿäääÿ]beÿ¢¥¦ÿ“•ÿ).2ÿ@CFÿ W ÿsÿmÿfÿ]ÿWÿ)ÿHJLÿIKLÿIKMÿ%),ÿX[^ÿ¢£¤ÿ)-2ÿù‰‰‰êÞÞÞÿàààÿáááÿtxzÿ,37ÿÿ#)-ÿFIKÿCGHÿEGHÿDGIÿ@CEÿ:>@ÿ379ÿ+/2ÿ#)+ÿ!%ÿÿÿ.37ÿS¨”ˆRRD§Íí¸U{š —mš€r,UE»ÍíªeF„‰uO‚ws-\HÎÍë–e-<1xŒ`7I fLÝÎåW)&)_‚L',.jRçÑØvV+ 2g*)')Y_íÔËkOJ`=1Wið×´eB$2^X^+@R|óÛ­]G6ADVPM@BGˆî×y^+"+0:(YO®íöÊÕ½¨´ª¼O <ηès5%!%# TEÓÙ÷y`*9 1<7/NbÑÖêiU 5MjÑáäc/   ;K~ÏçÕ\4 @IÎíÄ_A  PD§Íï³^'  XD¼Íî§j,4 aFÏÍë–d/*  'fMÝÎåW(,+21/kSçÑØvV!%'+$-Z`íÔËkP )4Xjð×µfD+@V}òÛ­^I7D %CJ‰í×z`.$&#.6B+\S¯ís8mkNZWYU^J²ÿùÿÿûÿÉMÿøÿþÿÿÿÿÿÿÿÿÿüÿXÿïûö÷÷öûÿÿÿÿÿÿüWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿöÿýþþþþÿÿÿÿÿÿþXÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿöÿýþþþþÿÿÿÿÿÿÿWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿXÿðü÷øø÷üÿÿÿÿÿÿýJÿùÿþÿÿÿÿÿÿÿÿÿýÿil32 ÿîÂÈÆÇË×ÚÕÍÌËÍÆÙK €4  4;ºöyœ±¥»cA0+% 4W"1Ážÿëíÿv ( ,DA€C?;95-'"$? ™É¯çÙÛêX¾ÿX<14!?@>?9A\ôɨƭöãèï:C'(<61 659;8>+"½È°ôÞíÚAoB1/8:..6<_6-ÌȰ÷Ü÷ÆQíß%€T & /9pãs9ÚȲùßø¾    6^ÚȲüÛÿ—nË% &+¾É,máÉ´þÜÿ‚X­€  ^œ%‡àɵþßÿo€ ¨Úɶýâþ`ËÿM  gÿ¼ÖÉ·ýæ÷@6~7  &4A ÏÒɸúìç66LS2ÝÍɺööËbÿÍ Ÿÿ|:ìÇȹ÷óÉ1" `ëÉȺóû«^–<9` /£’uíÇȺñý•†ÿ§" " # *-œÖ3‰îÆÈ¹òù(//;$ '/#5 ©æÊȸòög¢ÚL9344  $=5#@uú¯ºáÊȵóíR_»R5+/4 $5258"7s!ËÜÌȳõâ4 *,--,- 012/5!#1ÖØÍÊ­þÄ]þã0!*'*(-   +/,/,5œÿ‹7äÑÏɬý»>T#&%%&'  -),+,)QäÑÎʧÿ )J ##& "(&(&ebgæÏÏË£ÿƒÿ§  %#(,¼ì>uéÌÏʤÿp!93/, €   ˜áÐÎÉ£ûY|Œ)*C:D# €  P¼†«ÝÑÍÇ¡ôE‹ãV!@3;$  2E>’ ¾ÙÓÏȪâ% 1€6:7/)€%)-9;=( )ÍÔÓǼ–ÜHÛ§&/646469;<;+95@Žñq2ßÏÛÕ÷|m1tƒ%(,++,,++*-001335,k8FÛÀ×oÿîÂÈÆÇË×ÚÕÍÌËÍÅ×I   4;ºöyœ±¥»b@. *#1U 1Ážÿëíÿt%)B@B<952//+%  "< ˜É¯çÚÛêV½ÿV:-1IVPLH3;><>8@ZôȨƭöãèï8@% 69,y’†‚‚>,9796<(½È°ôÞíÙ?lB 3'$/sˆƒ}F12)-3:]4*ÌȰ÷Ü÷ÆNîÜ1†„CЖЇ–2;Q/(8nâq5ÛȲùßù½e˜‘¦cY£›f3dsmQ!1[ÛȲüÛÿ”oÃI•—”¦_FkEMŒ‡ugc4)¼É)káÉ´þÜÿX©zŸŽšž–¬t-†›‹€{n`R\š"…áɵþßÿmp¦œšž_©‹‡{rgW¦Úɶýâÿ^ÊÿKI–ž—¤V ’‘†}o?$ eÿ»ÖÉ·ýæø<3{- O–ž—£…^¦‘…~) " 0>ÏÒɸúìç23 .ƒ¤›™¤€]¢…}g0 IP/ÝÍɺööÊ`ÿÐ„šŒš•¦„`£„zsdDœÿz7ìÇȹ÷óÉ#=“‘“˜› Z=‘އyj`R ^ëÉȺóû©[”:zš•ˆˆ@G^•„ƒqfb#%¤sîÇÈ»ñý“„ÿ¨ G…m;?šfN…x:lqj?#,™Ö0‡ïÆÈ¹òù"./)'FŽŒŒl&,GM'0¨æÉȸñ÷e ÚI4'5*DŒ€f,5-$;rû­¹âÊ(ȵóíO\ºO1'+(5sv|T!10043}pËÜÌȳõâ1%€'*#+mq_$*,+*0,ÖØÍÊ­þÄZþâ-&"%$&'^jL!+'+&0šÿŠ3äÑÏʬý»;Q! $7aWZ&"&%&&%MåÐÎʧÿž%G!WZW^D$# b^ dæÎÏË¢ÿ}ÿ¥ H^W[W], !'¼ì:rêÌÏʤÿm 7// /]VZYX[O –áÐÎÉ£ûVyŠ%'@8A-Q_YZXZWb2L»ƒ©ÞÑÍÇ¡ôA‰ãR<06->OUWXXVS=2B9›¾ÙÓÏȪá! -2134.-02€3036;##ÌÔÓǼ—ÛDÚ¦!*1/0034€323561<Œòn,ßÎÛÕ÷}m.s‚!$('(('())+€- ..0'h4AÜÀ×nÿîÂÈÆÇË×ÛÖÍÌÊÍÆÙJ €4  5;ºöyœ±¥¼a=+ ("  .S1Ážÿëíÿq!'A=€@<860(":—ɯçÚÛëS¼ÿT7,0<=<<6?Xôȧƭöãèï5= "71,  21574;&½È°ôÞíÙ;k= +*   35**19[Ž1(ÌȰ÷Ü÷ÄLíÞ   ^ #+4mãp4ÛȲùßù¼    0YÛȲüÛÿ”jÊ    !%½È'jáÉ´þÛÿT¬‚ Zš …áɵþßÿk \   ¦Úɶýâÿ\ÊÿH    dÿ»ÖÉ·ýæ÷;1{2     />ÏÒɸúìç11  €X  IP/ÝÍɺööÊ^ÿÌ  žÿz7ìÇȺ÷óÇ, !   ^ëÉÈ»óü©Z”8€ ;h  ,¢‘sîÇÈ»ñý“ƒÿ¥ "  ()›Ö0‡ïÆÈ¹òù#,+8 $, !3©æÊȸñ÷e ÚI4//0  !93 =sû®¹áÊȵóíO\ºO1&*/  "1/255~qËÜÌȳõâ1%(()(* ,-.+1 .ÖØÍÊ­þÄZþâ-&#&$)(+)+(1›ÿŠ4äÑÏʬý»#('#ƒ‚…€ƒ€)BVmˆ¡¯©¶V ¡ÿÿüùTD»ëèêéê‚ë%êîæù² )@A @<962,&"‚‡€*Ûfþú3 »æÙåâ€ãƒä ååäèßót‚9;ƒ<ƒ;==?@ ?;850*% ƒ‚Œ‚ AÚÎ ÿÅNëÚåÞßß‚àá âáæÝñX€ <:;::;;…<„;<>?@ >;74/)$ƒ„‚UÛÞTÿÊvéÜâß‚á‚â ãäãæßíD €"<9‡:;;<<…=<<€=>??@A >:74/)$‚ƒ  kÚÛ|ÿȦëÛãà€á‚âã‚ä æÜ09J0"€&;89…:9889‚:ƒ;::€;=>?‚@ =:63.(#$ QŸ’€mV?*„ÚÜÿɦêÜäàááâã‚äæãëÊ ÏöÚͼ­~N*+;8ˆ9;‚>?>ƒ?‚@?>…<=>?‚@)=963-("ÀêÞäáàÜýP ŸÚÜ‘ÿɧëÜäà‚â‚äåäçáð¹ BìàëìðóõðÜ9 0:7ƒ8€98;/ !""#%&(*+,./025<‚=„<=>?€@ A>6+ÆÖ€ÓÒÖÔêb°ØÝ‘ÿɧëÜäá€âãä€åäèàô¨ JñÝåãåäåâî>28677ƒ896<"  7<ƒ;<‚=ƒ<$=@< =àÒÕÓÓÒÕËÜU¼ÔßÿɧëÝåáââäƒåéàôŠ SÿîôéääååÛ2 46„78896< €†  5;ƒ:„;<‚=";@, /ÄàããâáãÚäE -ÌÏáÿɧìÝåâã€ä‚åææåéàôpežÀÙñ÷ñþÏ„6 767785; „„  5:99ˆ:…;"=;>1$DQf|–©µ¶+ >ÞÊãŽÿɨìÝåã€äåæåêáõX ,Fc¤z 73445€674: ‚€ 5ˆ9ˆ:<:=0‚  OäÉäŽÿɨìÝæãääåƒæéâðD !6455€45639€‚6…8‡9‚:9<*‚eãÉäŽÿÉ©íßçã傿ç èÞ0 €%3122„4537ƒ€‚68„98;%‚}ãÉäŽÿÉ©îßçä€åæ€çæéåîÌ )85751243437…€66ƒ78989‡8; ‚™ãÉäŽÿÉ©îßèäååæ‚çêãó½ €$ &5413323426…€‚ 75‚676775687†879€ ¬áÊäŽÿɪîàèäæ‚ç èçëâö¬ZH7'  -5213€23 €…€ 74‚5 6645993866ƒ7"886Œ¨‘…qW@) ¹ÝËãŽÿÊ«ïàè倿ç€è&çëäøŠ [ÿðèÔÈ´‰^* 240122/ „ƒ€ 63€4 553486$8576%7682 >íäçæåæÞÊŸ#-ÈÙÍâŽÿÊ«ïàèåææç‚è#íäøn „÷âððôúôÿ²    %31.3+‡ƒ 62€4 2375# -645$6580OÞÐÚÖ×ÖÖßÔ- >ÙÔÐáŽÿÊ«ïáéåæç€è&éêéíäúV ›÷ãëçèìãø»-3/ ƒƒ‚€ 0231274"  735€4#547,]ôÙÛÖרÕÙ½&PáÒÑáÿÊ«ðáéå€çèéêêéíçôA µÿòùñííä÷¬  "„‚‚ "443!   (624$36& <¼ÌèæåèÞé» fáÒÒáŽÿʬðáéæçç€èéé€êìêìà/V²ÆÔèüôÿ{   ‡‚  22!    423#26"/Mt“ª­Èz  áÒÒáŽÿʬðáêæç€èéêëìèòÎ %7N_†8‚‚†‚"$"   $5132215€ ›âÓÒâÿʬñâêæ€èé€êëëêíç÷¿  €… …‚   €   ƒ23€®ßÔÑâÿʬñâêçèèé€ê€ëêïæú­ €„ „)  403220»ÛÖÑâÿÊ­ñâêçèé€ê‚ëïæú€„ƒ „   .€12-‚/ÌÖØÐâÿÊ­ñâëçè€êëìëïçúq   „ƒ‚  € 3/01* €  AßÑÛÐãÿÊ­òãëçéêêëììëðçüV CmM?+ €ƒ†   €€4 +0.1' V¹¬£yZE( TäÐÛÐâÿÊ­òãëèêêëìïéõB »ÿ÷óÝΰpƒ‡    €€  € )1,0#øãëçèéàÒt  kãÑÛÐãÿÊ®òãëéêê€ëìîìðá0 #Òôêñøôÿƒ‰   €€2 )..  ¨ßÓÜØØÜÓî› …ãÑÛÏã‘ÿË®òãíéê€ë€ìííîëöÎ! 1ßïìïêñÕ‚‹  €€ € &/- ¾öÛÝØØÛÓᎠ ¢ãÑÜÏã‘ÿÊ®òäíé€ë€ìííìðêû¿9úýþÿòÿd‚Ž  €€3 (. w¿Îêèçëàóy²áÒÜÏã‘ÿÊ®óåíé€ë€ìííìòéý¬mް¿Ü° €‚   €€€  € ( - 0OtŠ ¬¸= "ÀÝÔÛÐã‘ÿË®ôåíêëë€ì€íîòéþŒ "‚ €€€ €  $€  2ÒÙÖÚÑã‘ÿ˯ôåíêë€ì€íîîòêþp€‘ €€€  DãÕÙÙÑã‘ÿ˯ôåîêë€ì€íïîòêÿW  €‘ €€  XæÔÙÙÑã‘ÿ˯ôæîê€ì€í€ïòìöC’  ‚‚€€€   qåÔÚÙÑã’ÿ˯õæîê€ìííîïïðïòâ/   ‘ ‚‚€€€4  -+  ŒæÔÚÙÑã’ÿ˯õæîëìì€í€ïòíøÑ=RC5'   ‚‚€€€4   * ®Ù¸±”w^G" §æÔÛÙÑä’ÿ˯õæîëììííî€ïòëþÀ2ðÿùëÝÓ½D  ‚€€€0 ('$%ÌêæëëéëâË: ¶ãÕÚÚÑä’ÿ˰õæîëì€íïóëÿ© Yÿêö÷ûÿûÿØ€! ‚€, &'$%$ :ÛÚÞÜÜÛÜÕðM%ÅÞ×ÙÚÑä’ÿ˱õæîëì€íïïðïóëÿ‰ vþëóïïóïûÑ  ‚8 #&"#$%"MúáãÛÜÛÛØ×:  6ÖÙÚØÛÑä’ÿ˱õæïë€í€ïðïóëÿm {ÿùÿþýüñýÎ"Ž €5!$!!##!$ *¡ÄÞìêìçíÒ'IæÕÜØÛÑä’ÿ˱õçïë€íïïððïôëÿV 1vŒ¯ÄÒéòÿ¢  € $! !"€!$# 9Tp£¹ƒ ]æÕÜ×ÛÑä’ÿ˱õçïë€íïï€ðóíöC   0A^5   € # "‚!" € væÕÜ×ÜÑä’ÿ˱õçïëíí€ïððñðóã/  ‘ € !‚ !“çÔÜ×ÜÒä“ÿ˱öçïëíí€ï ðïòîùЀ€’ €‚€  !€ & «æÕÜ×ÜÒä“ÿ˱öçïìííïïððïóìþ € “ €‚€€€ € %ºâ×Û×ÜÒä“ÿ˱öçïìííïïððïôëÿ«  €’ €‚€€€  ?-3(ÉÞÙÛØÜÒä“ÿ˲öçïìííïïððïôëÿ‰ :¨|hP=* “ €‚€N JîÏÆ¶¡€bL" 9ÛØÛÚØÜÒä“ÿ˲öçïìííïïððïôëÿk ‹ÿùÿÿôáË" ‚’ ‚€€€D iîÞêéìíçò§ MèÕÝÙØÜÒä“ÿ˲öçïìííïïððïôëÿT Ãþíôïøóÿq€‚‘ ‚€€€4  ~êÙâÝÜÞØåº bèÕÝÙØÜÒä“ÿ˲öçïìííïï€ðóîöB %ÑùïõöúôÿÐ €‚‘ ƒ€€€J ¡úàâÜÝÞØå² {èÕÝÙØÜÒä“ÿ˲öçïìííïïððñðóã2 (ÜÿýÿùóõìÿI‚ €‚€€€ € @ \µÉåíëîåø™  ™èÕÝÙØÜÒä“ÿ˲öçïìííïïðïòï÷×#:y©ÌàôÿúÿUƒ ƒ€€  @ &?Zs‘¥²A ¯æÕÜÙØÜÒä“ÿ˱öçïìííïïðïòíûÈ +=Q^R ƒŒ  ‚€€   ‚€,¼â×ÜÙØÜÒä“ÿ˱öçïìííïïðïóëþ¾  €ƒ‹ ( €€ ‚+ÌÞÙÛÙØÜÒä“ÿ˱öçïìííïóëÿª …†  !.Y€€  €  =ߨÜÚÚØÜÒä“ÿ˱öçïëííïóëÿ€…„ $)I1ee €€ €  PèÕÝÙÚØÜÒä“ÿ˱õçïëííî€ïóêÿz   ˆ†³ˆEi€€2 &5P5& gçÕÜÙÚØÜÒä“ÿ˱õçïë€í€ïóêÿc •ή–yaE& €‚‚ 3q2roP' ‚€€ € ( )0ªúØÍºªoY# €èÕÜÙÙØÛÑä’ÿ˱õæïë€íïïîóêýUAôþÿÿþÿúܽ@+‚€ %c4~€H €€ € EA$ÀçÝççëîå÷s  žèÕÜÙÙØÛÑä’ÿ˱õæïëìííîïïñïîEdþêòîííóóÿq//‚ :…¢H#E€5 2A $ÇãÝâßÜß×èy ±æÖÜÙÙØÛÑä’ÿ˱õæîëì€íïðîôÛ2}úéóôùùüðÿc/=€ 2 $.$= €5 ?;)ÛïäßÜÜßÖéq¿áØÛÙÙØÛÑä’ÿ˰õæîëì€íîñìùË#{ÿùþôïìñëþP29/€ .:> €"‚@   ;;9|´Éæíëîåô^ /ÏÝÚÛÙÙØÚÑä’ÿ˯õæîëìì€í*òêüÁ kªÈáùÿüÿà 54:-;;4; € ‚n0# /=;6 $Abz“¥¿AAâ×ÜÚÚÙØÚÑä’ÿ˯õæîëììííìñéý¯-DYmZ7571 ,;9576; €" /?1  >7=2 RèÕÝ€Ù ØÚÑä’ÿ˯ôæîê€ì,íìðéý  7549 ,:945774: ƒ‚ 289;#€  8:9<-€ fçÕÜ€Ù ØÚÑã’ÿ˯ôåîê€ì-íìðèýv"63536,974466574: ‰ 3:76<3€ *;89;(€|èÕÝ€Ù×ÚÑã’ÿ˯ôåíêëì*ðçý]&5243401952355455639 ˆ€0 498969<*   <797:# —èÕÝ€Ù×ÚÑã‘ÿË®ôåíêëë€ìïè÷H €  *52‚3124433€4528 †€ 4€7 876;9  8*7: 7\NA3  ¬æÕÜØÙÙÖÚÑã‘ÿË®óåíêëëìîä1 a²‚nV;%,31‚24…3417 ƒ‚ƒ 46 7756;1 /97€896ßïíçØÄ±‘Z¸ãÖÜ€Ù ÖÚÐã‘ÿÊ®òåíé€ëìíéóÑ ËÿøÿüþðÔÄ< /3‹23417 …„ 55‚67647:24867(5iïÔÝÛßãìäôS&ÆßØÛØÙ×ÖÚÐã‘ÿË®òäíéê€ëîçøÀ5åëìííëóðÿ]ƒ1ˆ2315 †€ 54„5654€6766572…ìÞçäáÞßÕåS 5ÔÚÚ€Ù(×ÖÙÐã‘ÿÊ®òãìéêëëêïæú« NÿçîìííñéùH 2/0…1€2315 ˆƒ 635ƒ455645658/²óØÝÙÚÚÝÔéP!EäÕÜ€Ù*×ÖÙÐã‘ÿÊ®òãëéêêëêîæúŒ Gîôÿûüúöðç71.//†01204 …„ 624‚3€434+5547*œÓÚîëëìæíÎ& VçÔÜØÙ××ÖÙÐãÿÊ­òãëçêîåùr3Je…©ÅÐô×!0-..…/‚01/3 €† 514‰3€4636&&8Mf…¤¬¬N jæÕÜØÙ××ÖÙÐãÿÊ­ñãëçèêêéîåùY€ "=B$/,†.ƒ/0.3 ‡‚ 513ƒ2„374436!   æÕÜØÙ××ÕÙÐãÿÊ­ñâêçèéêéìçòD   &/,…-†.0'ƒƒ !41‰2325 ›çÔÛØ€×ÕÙÐâÿÊ­ñâêçèèéëéìß0€€(-€,‹- ../20*… )2…1‰2 € ®åÔÛØ€× ÕÙÏâÿʬðâêæ€èëçñÌ)€+†,…-€,./ €122/0…1„2 0 €¹áÖÛ€×ÖÕÙÏâÿʬðâêæçèçëäõ½ƒ )‚*ƒ+…,€-.+0€€ 1--.€/„0†12,DV@5& 'ÇÝ×Ú€×ÖÕØÏãÿʬðá鿀çëâ÷¨  ‰“ƒvhV: *(€)†*‚+,-+0ƒ0,0‡/…0D103*"Íñã×Ç»¤{Z%6ÕØÙØ××ÖÖÕØÏâŽÿÊ«ðáéæççæëâö† _ÿòû÷÷ûåØ *(ˆ)…*++,*. 0,.€-ƒ.…/00/2' Gæ×ßßâäêâõP!FãÔÛ€×(ÖÖÕØÏâŽÿÊ«ðáéåççæêâök ‡ôáêççéçþÐ)'(‹)€*+), ƒ 0+.ˆ-‚.€/.1# VèÖÜØÚÙÚÖÛ= VæÔÛÖ×€Ö%ÔØÏâŽÿÊ«ïàéåæçæêá÷S ¨øáêæçëäî¿ ('†(†)(+" ƒ ,Ž-.-/  T÷äëåáÝØÚÌ0iåÓÚÖ×€Ö ÔØÏáÿÊ«ïàè倿éäí?©÷òùööùîÿ³"&%‚&ƒ'…()*(, „  .*†,‡-,."mЍ¸ÇÝãðÀ ~åÒÙÖ&ÕÔØÎáÿʪïàèäææçåéÙ-'@Up©»¿Òp #&…%ƒ&'€('+! ‚ ‚  )*…+†,- &;Jlb —åÑÚÖÕÔ×ÎáÿɪîàèäååèãíÇ € "€$Š%&&‚')  ‡  ,'ƒ*†+,*€€    «ãÒÙ€ÖÕÕÔ×ÎáÿÉ©îßçäåäèáñ¹ "##…$ƒ%&'%) ‰  &†)ƒ*+,'.µßÓÙÕÖÖÕÕÓ×ÎáÿÉ©íßçãåäèßó£‚ "€#‚$‡%$ Š  +'Œ)*)+%$ÁÜÕ×ÕÖ€ÕÓ×ÎáÿɨìÞçãääèßò„€"!""„#‚$%$( Œ  ")'„(…)(*" 3Ð×€Ö€ÕÔÓ×ÎáÿɨìÝæãäãçßòi ƒ ‚!‚"!"!€"‚#$"%Ž   (&ƒ'†()*NI>3(  DàÒØÕÖ€Õ"ÔÓ×ÎáÿɨìÝåâäãçÞóO P¶š’ƒsU;! !‰" '%'ƒ&ƒ'(') JðãàÑȽ¦…R WäÑØÕ%ÔÔÓ×ÎáÿɧëÝåáâãåáè; ¤ÿìõòñôáÕI €€ !#!$ Ž  $…%…&( }çÓÝÜÞãáñ¹ mãÑÙ€Õ€Ô#Ó×ÎáÿɧëÜäáâãáçÔ+ Äçßãââåàüq‡’  '#$$ˆ%&& ¤äÓÚ××ÛÑá§  †âÑØÔÕÕ€ÔÓ×ÎáÿɧëÜäàáäßêÁ 9åå€âáæÜìe †€ ’  $#$##‚$‚%$ÃðãçàÛÛÔå“  ¡âÑØÔÕÔ"Ó×ÎáÿȦêÜäààäÝî²?ÙßòðñðóëüN €ƒ€  ’   #!€"#$##$$%!€Y…Ÿ²¾Ïà×çi °àÑ׃Ô'Ó×ÎáÿɦêÛãààäÜï *;Of—®º¯,„ –  $!ˆ"$  0?=?#"¾ÛÓÖƒÔÓ×ÎáÿɦêÛãßàäÛî~   *7973-(#‚ –  !‚"€ 2ÍÖÕÕƒÔ'Ó×ÎáÿÉ¥éÛãßßãÛîe 1B?@@A @=:62,("! –   ‚€€ CÝÑׄÔÓ×ÎáÿȦéÚâßßãÛîO "@<…= ?@@ABAD5 š  ‚‚ UáÐ×ÓƒÔÓ×ÎáÿȤéÚâÞàáÞà< -?<€=ƒ>=:? ˜  €‡  káÐÖÓƒÔÓ×ÎáÿÈ£çÚâÞàÞãÎ) € 2>;ƒ<=>?><@:Syަ±¾ÊÜÓ/ BÛÐÖ…Ô#Ó×ÎáÿÈ¢å×ßÚß×éK  #>_¥³Í‘ (:7Š8 7:€=>>?=@! #/AG SáÏ×Ó„ÔÓ×ÎáÿÈ¢åÖÝÛÝÛÚ8 € +967‡876:<4*  ‚   (:@;€<€=<@"€   iàÏÖÓ„ÔÓ×ÎáÿÈ¡åÖÝÛÚàÈ'€/856…78$769;<;4,&  )19??<:„<;=€ àÏÖÓ„ÔÓ×ÎáÿÇ¡äÕÝÜ×ã¹€0645665…67887€68;<<;;954322110/136:==€>=:88;;:‚;<<:€ àÏÖÓ„ÔÓ×ÎáÿÇŸäÕÜÜÖçª 144…5665…67€6€7‚9€:;:998778:;;…:;<6 €  ­ÞÐÖÓ„Ô Ó×ÎáÿÇ¢äÕÜÜÔç + €3…4…5665€6€7ƒ8†788„988‚9€:9<3VfTK>+ !ºÚÒÕ…Ô"Ó×ÎáÿÆŒâÔÜÜÕçrMÕ¸³Ÿ‡gH(52†3„4€5ˆ67“898;0 ?ãÝáàØÄ³¢e/ÉÕÓ†Ô"Ó×ÎáŽÿÊXåÕÛÚÔèZíÝèææéàÒ‚ "41ƒ2„3ƒ4…5‡676ƒ7Œ87:+ RÞÍÔÐÒØÚãÌ) AÚÐÖ†Ô"Ó×ÎâÿÂ2ÖÕÛÞÕäE˜âÑÙ××ÛÓîª%40‡2„3‡4„5ˆ6…7„87:& fáÌÓÑÒÓÏÖ·# RáÏ×Ó…Ô%ÓÖÏáqþù2sìÐ×ר5´ðÚÝ××ÛÔâ– *41232Š3ƒ4…565€644‚5‹6‚7:! RàÛáÝØÙÑÚ´ gßÎÕÒ…Ó"ÒÙÎâ?ûÿ´ áÞÞ¾  €ÀÃÛâáåÝïu'-+€-..--.‚/€014€54‚5…6„768<\†«¹ÈÍë  ƒãÒÙÖ„×"ÖÙÊà ÿöÿbY®Í¾#3DWl‰ŸÀH!48€7‚8…9:;:€232€32†3…43€ ,7J( —ÚÉÐÍ„ÎÏÎàÄ$bÿÿûó£ ‹ƒš-645ƒ6776ƒ788794 ¹ëÝãàƒáâàá &Ñÿþÿûÿ×cCC;EDDCDFIJ€KJFŸEFCI5($&ƒ$€%$$%$$%€#% ‚ |“„s=³ÿýøþ²ÿþÿùÿÆ „‚€¡bÕÿüÿÿþÿýøû±ÿþÿøÿà ƒ€ ‚  … €‡üüøýÿþøÿñÄÊÇÈÉÈ…ÉÈÃÄÆÉ‚ÌÆÄÃÅÄćà žΖ €‚€„ #+')((*(+ '¶ÿ÷€ÿüûõk4…‚‚ƒ‚€† €€€! ¬îâèæååÜï’  aóþÿÿúûTLv¤¥‚¦§¦©¤¯Š%m}Ž ³¶¸´½<!'&!‚ƒƒˆ „&?Slˆ ®©¶T ¡ÿÿüùTD»ëèêéê‚ë%êîæú± '9M]qƒ€! *;<<;841-'!  ƒ€€Ž ‚   !ÒøÿgCÚæÚ‚ÛƒÜ ÝÜà×ê‡ ‚ +@:€;<=?@ ?;851+% ƒ‚€'Ûfþú3 »æÙåâ€ãƒä ååäèßóq ‚899€;€:99::;<>??€@ >:63/)#ƒ‚Œ ‚ ?ÚÎ ÿÅNëÚåÞßß‚àá âáæÝñV €   ;8:9::ƒ;ƒ:;=>‚? =:63-'"ƒ„‚SÛÞTÿÊvéÜâß‚á‚â ãäãæßîB € ;7:‚9::99€:;;ƒ<;;<=>?‚@ =952-'"‚ƒƒ iÚÛ|ÿȦëÛãà€á‚âã‚äæÜ. 6G-  $:78„98ƒ7ˆ899:<=>?@ <952,&!$ Nž‘~kS<'‚ÚÜÿɦêÜäàááâã‚äæâëÉÏ÷ÙÍ»¬|L')967„89<€=€>€?‡@?>=;;‚:;<=>@*?<851+%¿ëÞäááݼNžÛÜ‘ÿɧëÜäà‚â‚äåäçàð¹@íàëìðóöïÛ8 -85ƒ6€769.€‚  "%&()+049:†;:;<=>@ =5 (ÅÖ€ÓÒÖÔë` ¯ØÝ‘ÿɧëÜäá€âãä€åäèàô¨ HñÝåãåäåâî</64ƒ56673<=i[]XVSPLID>83.+'$!4:€9::9::‚;<€;€:%;*  ,ÃàããâáãÚäC *ÌÏáÿɧìÝåâã€ä‚åææåéàôoc¿Øñ÷ñÿЈ3529_†|€~~}|{zyxwvtsqrmuX%,.;78Š9%::9::=/!BNdz”§´µ( <ÝÊãŽÿɨìÝåã€äåæåêáõW +Da~£x 52†3417h‚†€„ƒƒ‚€~|zxxrzX(--967…8…9 :8<.NäÉäŽÿɨìÝæãääåƒæéâðB 41‚23417lƒ‡……„ƒ‚‚€}|{yxr|X*-,95ƒ6‚7…8 9:8<(‚cãÉäŽÿÉ©íßçã傿çèÞ/ € €!0-1/ƒ12215q…Š€‡†„„ƒ‚€~}|{u~V+,,84ƒ5…6‚7 887:"‚ |ãÉäŽÿÉ©îßçä€åæ€çæéåîË %7413/0100€103tˆ‹€‰ˆ‡…„ƒƒ€}}w€U-*,62‚4€566€5†69„™ãÉäŽÿÉ©îßèäååæ‚çêãó¼   "!11-/‚01zŠŒ‹€Š‰ˆ‡†„ƒ‚y‚U0&-52ƒ34312544„5657‚  «áÊäŽÿɪîàèäæ‚ç>èçëâ÷ªWE4$ % %2/-/..0,€ŒŽŒŒ‹‹Š‰‰ˆ†…ƒ‚z„T4#/5‚343128704€3‚4"553ЧƒoT=& ¸ÝËãŽÿÊ«ïàè倿ç€è&çëäù‰ YÿðèÔdz‡\' „‰R+2-../(†‘€ŽŒŒ‹ŠŠ‰‡…„‚ƒ|…T5!.2 330284 524ƒ3#4/<íåçæåæÞÉž!  )ÇÙÍâŽÿÊ«ïàèåææç‚èLíäøl ‚÷âðñôûôÿ±Z…”x:00*1#Œ‘‘ŽŽŒ‹ŠŠ‰ˆ†„„~‡T6 /1121.1723 )52‚3 25-LßÏÚÖàÔ* ;ÙÔÐáŽÿÊ«ïáéåæç€è'éêéíäúS šöãëçèìãøº+Œ‰‰‘‘a)'/.’!‘‘ŽŽŒ‹Š‰ˆ†…ˆR5*00-/62"K]d/ƒ2#325) ZôÙÛÖרÕÙ¼" MâÒÒáÿÊ«ðáéå€çèRéêêéíçô? µÿòùñííäøªsŠŽš‡K"&““”““’’‘ŽŒ‹Š‰‡‡€ŠM, 031 !MhfZZO$402€1$04$ 9»ËèæåèÞêºcáÒÒáŽÿʬðáéæçç€èéé€ê)ìêíà, Tœ±ÅÔçüôÿwA”ˆŽ‘’Ž•›u= )˜“•””€“ ’‘ŽŒ‹Š‰‰‚ŒD!2/ PomcaaY^5/‚0#/3 +Jr‘©¬Èx}áÒÒáŽÿʬðáêæç€èé‚ê)ìèòÎ"5L]„7‚ŒŒŽ‘‘’•’œ•d/)””˜”•€”.“’‘Ž‹‰‹…Š8! #Tuujghea\\R"2-0//.2 € ›âÓÒâÿʬñâêæ€èé€êQëëêíçø¾ ^“‰‘‘’“”•–’•Ÿ‰S œ–•˜•–••”“’’Œ‰„’1 #Z{{qnolheb_Y^:+‚./€ ­àÔÑâÿʬñâêçèèé€ê€ëXêïæú« .Š‘‘“””••–˜—”—¤^K•›“˜—–••””’‘’‘Œ‰’d'\‚ƒwtusolifd`\ZU%1,/..,€ »ÛÖÑâÿÊ­ñâêçèé€ê‚ëZïæú‹  vŒ‘““”•––—–˜š˜”œ)/„£“–™—•””••‘Œ’–i- W‡ˆ}z|yuspmkgea^X^>(.--.)‚ +ÌÖØÐâÿÊ­ñâëçè€êëìëïçûo H”‰’’””•––——€˜:›˜Ÿxh¡š“–˜˜•’•›€9vŽ|yvtqolifc^[YW)/+,-& €=ßÑÛÐãÿÊ­òãëçéêêëzììëðçüT@jK=)‡Ž‘’“”•–——˜˜™šš™›˜¢l=Œ£™”“–œ‰R (z„‡„}{wurpmjgd`]X^B$-*-# S¸«¢ŽwWB$ QäÐÛÐâÿÊ­òãëèêêëìïéõ? »ÿ÷óÝͯob“Š’“”•––—˜˜™€šV›šœ˜£{$ \Žž ”zJ!<‡ˆ‹‡„‚€~|yvspnkhdb][XY)-(, ›øãëçèéàÒrhãÑÛÐãÿÊ®òãëéêê€ëìîìðá- Ñôêñùóÿ‰(–‡‘’“”•–—˜™€š›Sš˜¡–K 47( .l˜Ž‹Œ‰ˆ…ƒ}zwtroliec^\W^@#++ §ßÓÜØØÛÓäÑÛÏã‘ÿË®òãíéê€ë€ìííïëöÍ .ßïìïêñÕtŠ’“”•–—˜˜šš…›P™œ¥u* >p–›Ž‹Šˆ†„‚€}{xurpmjfd_\ZYX%*)  ½öÛÝØØÜÓ⌠ãÑÜÏã‘ÿÊ®òäíé€ë€ìííìðêü¾ 6úýþÿñÿ[@›…‘’”•–—˜˜™š‚›œP›œœ—£™XO’“ŽŒ‹‰‡„‚€~|yvspmkgea\[V_= *u¿Îêèçëàów²áÒÜÏã‘ÿÊ®óåíé€ë€ìííìòéý«k¯½Ý«%‰†Ž’“”•–—˜˜šš€›„œQ›œ›˜­P ¦›”’••’‘‹Šˆ…ƒ|zwtqnlhdb]ZYYX'-LqˆŸ«¸9 ÀÝÔÛÐã‘ÿË®ôåíêëë€ì€íîòéþ‹  'ƒ‘‰’’“•–——˜šš€›œ›…œ2›Ÿ˜ ` +”––™˜•”“‘ŽŒŠ‰†ƒ‚€}zwtroliec^ZZV_: € /ÒÙÖÚÑã‘ÿ˯ôåíêë€ì€íîîòêþne•Ž””•–—˜™š€›ˆœ+›ž˜¥\,”œš––•”“’‘ŽŒ‹‰‡„‚€~{xurpljfc_[YYXZ€AãÔÙÙÑã‘ÿ˯ôåîêë€ì€íïîòêÿU  AŒ—•––˜˜™š›‡œ2›ž˜¤Z4š™™——–•”’‘Ž‹‰ˆ…ƒ~|yvspmjgd`\Y[W\;  UæÓÙÙÑã‘ÿ˯ôæîê€ì€í€ïòìö@ uœ’“˜—˜šš€›ˆœ2›ž˜¥V:˜›˜—–•”“‘ŒŠ‰…ƒ}zvtpmkgd`]ZWX_R  næÔÚÙÑã’ÿ˯õæîê€ìííîïïðïòá,  P–š’™šš€›„œ›Pœ›ž˜¤Q@¡—›˜˜–•”“’‘ŽŒŠˆ‡„}zwtqnkhfb[X^X5)'‹æÓÚÙÑã’ÿ˯õæîëìì€í€ïòíøÏ:OA3$'¡–—œ›‚œ„›Qž˜¤ND¢—œ˜˜––•“’ŽŒŠ‰‡ƒ‚}zwtqnlic`b[:$ ­Ø¶°“u\D ¦æÔÛÙÑä’ÿ˯õæîëììííî€ïóëþ¿ /ðÿøëÝÒ¼ŽAW›—€›‚œ…›Mž˜¤KK¢—œ˜——–•”’ŽŒ‹‰‡„‚€}zwtrpjfjdA$# !ËêçìëéëâÊ7 µãÕÚÚÑä’ÿ˰õæîëì€íïóëÿ¨ Wÿêö÷ûÿûÿ×-…¡€›‚œ€›Ršš››šž˜¤HU¢˜œ™˜—–•““‘Ž‹‰‡„‚€}{xvplpmK""7ÛÚÞÜÜÚÜÕñJ !ÄÞ×ÙÚÑä’ÿ˱õæîëì€í ïïðïóëÿ‡ tþëóïïóïûÐoœšƒœT››šš™š›šž™£EZ£—œ™˜—–•”“‘‹Š‡„‚€}{wrvuW$ " JûâãÛÜÛÛØ×73ÖÙÚØÛÑä’ÿ˱õæïë€í€ï ðïóëÿj xÿøÿþýýñýÎ" ˆžšœ,››šš™š›šž™£C[£—œ™˜—–•”“‘‹‰‡…‚}{x|b, !€$ & ÃÞìêìçíÑ# EæÕÜØÛÑä’ÿ˱õçïë€í!ïïððïôëÿS-s‰­ÃÒèòÿ r›šƒœ€›(šš››šž™£A]£—œ™˜—–•”“‘‹‰‡…‚€}|q8  $5Qm‹¢¸ ZçÕÜ×ÛÑä’ÿ˱õçïë€íïï€ðóíö@  ,>[1  H ›‚œ„›"ž™£?`¢—œ™˜—–•““‘ދЇ„‚{B‚€ sçÕÜ×ÜÑä’ÿ˱õçïëíí€ïððòðôâ+   :€¡›—€›ƒœƒ›$œž™¢<c¢—œ˜——–•”’‘Ž‹‰‡„‚€|}d3  ‘çÔÜ×ÜÒä“ÿ˱öçïëíí€ï ðïóîùÏ €  +sœš“—›š››…œ››€œ$ž™¢;e¢—œ˜˜––””’ŽŒ‹‰‡„‚€}z{l@ &«æÕÜ×ÜÒä“ÿ˱öçïìííïïððïóìþÁ €  b–𒔀™š›ˆœ%ž™¡:h¢—›˜˜–•”“’ŽŒŠ‰‡ƒ‚}zuvtR* € €%¸âÖÜ×ÜÒä“ÿ˱öçïìííïïððïôëÿª €  LŠ™‘–—–˜™šš€›ˆœ0ž™¡9j¢—›˜—–•”“’ŽŒŠˆ‡ƒ}zxsptc9 <) < $ÈÞØÛØÜÒä“ÿ˲öçïìííïïððïôëÿ‡7¦zeL9% 6z•ŽŒ“””•–—™™š€›ˆœr™ 8m¢—š——–•”’‘‹Šˆ…ƒ}zvtqlmkK& GîÎÅ´ }_I6ÛØÛÚØÜÒä“ÿ˲öçïìííïïððïôëÿh ˆÿøÿÿôàÉ*^“‹‰‘‘’”•–—˜˜šš€›œ›…œršŸ7o¡–š—––•“’‘ŽŒ‰ˆ…ƒ~|xvspnjejZ2fîÞêéìíçó¥ IèÕÝÙØÜÒä“ÿ˲öçïìííïïððïôëÿQÂþíôïøòÿrQ“‚ŒŽ‘’“”––—˜™š‚›„œQ›™6q –™—–•”“’ŽŒ‹‰‡„‚€~{xuspmjgbaaE" }êÙâÝÜÞØå¹_èÕÝÙØÜÒä“ÿ˲öçïìííïï€ðóîõ?!ÐùïõöûòÿË ‰ˆŠŒŽ‘“”•–——˜™š‚›yœœ›œœ››œ˜Ÿ6u¡”™–•”““‘ŒŠ‰†„‚€}{wurolifd_Y^W3  úàâÛÝÞØæ² yèÕÝÙØÜÒä“ÿ˲öçïìííïïððñðóã.$ÚÿýÿùôôëÿGK–„ŽŽ’“”•–—˜˜€š‡›sœš™2n–˜••”“‘‘‹‰ˆ…ƒ}zwtqolifc^\WY^J Y´Èåíëîåø˜—èÕÝÙØÜÒä“ÿ˲öçïìííïïðïòî÷Ö6v§ËßôÿùÿNŒ†ŒŒŽ‘’“”•–—˜™š„›#šœ•¤7¢˜••”’‘ŽŒŠ‰‡…‚~|yvtqnkhdb^€ZOTa$ !;Wp¥±<  ­çÕÜÙØÜÒä“ÿ˱öçïìííïïðïòíûÇ':N[NY†Œ‘‘“”•––—™˜™š‚›0š›¡wF‹••”“‘‹Šˆ‡„‚€~{xuspmjgea]YZX]F = »â×ÜÙØÜÒä“ÿ˱öçïìííïïðïóëþ½ †ˆŠŒ‘’“”•–€—˜™™…š1˜@%Xš’”’‘ŽŒ‹‰‡…ƒ}zwtroljfc`\YYXY € 'ËÞÙÛÙØÜÒä“ÿ˱öçïìííï"óëÿ©  W†ŒŽ‘’“”••––—˜€™2š–Ÿ@4 ]ƒgœ“Ž‹Šˆ‡„‚€~|yvtqnlifc_[ZW^7  :ߨÜÚÚØÜÒä“ÿ˱öçïëííïóëÿŽ€ …ˆŠŒŽ‘““”•‚–7™š˜˜š•Ÿw')K4 je&‘‘Œ‹‰ˆ…ƒ}{xuspmkgea][X[P   MèÕÝÙÚØÜÒä“ÿ˱õçïëííî€ïóêÿw U†ŒŒŽ‘‘’“”€•V–˜–“–—™“ \"ˆ¶Im s˜‹Œ‹Šˆ…„‚€~|zwtqoljfd`\ZW^!%  1M2"dèÕÜÙÚØÜÒä“ÿ˱õçïë€í€ïyóêÿ`“ά”v^B" €‰‰‹ŒŽ‘’““”—•‘—Ÿ˜•˜“[ 9u2utU'c™‰ŽŠŠ‡††ƒ€}{xvspnlhec^\W\C), ¨ú×̸©‹lV~èÕÜÙÙØÛÑä’ÿ˱õæïë€íïïîóêýR=ôþÿÿþÿúÛ»<  * B„‹ŠŒŽ‘“”“•ž_„™–“h)e5†Ne˜‰Šˆ‹‡€ƒ~|zwtromjgda][XW@ ¿çÝçèëîåøpœèÕÝÙÙØÛÑä’ÿ˱õæïëìíí}îïïñïîBaþêòîííóóÿn ,+ uЇЋŒ‘“R ]‘•–ˆ"A‰¥I)DŠŒ‹‹ˆ‹v|‹}~~zwusqnlifc_]W^-1> ÆãÝâßÜßÖèw °æÖÜÙÙØÛÑä’ÿ˱õæîëì€í|ïðîôÛ.zúéóõùùýðÿ`*; 4ŒƒŠ‰ŒŽ‹‰š‡O .WŽ–›c&1';f“ˆŒŠ†‰(^„€xzwtromjgeb_Z\H<9&ÛðäßÜÜßÖéo¾â×ÛÙÙØÛÑä’ÿ˰õæîëì€í}îñìùÊxÿùÿôïìðêýM.4+f‹†‹‡†–‚K (7>XœŽ”“—e(#'g“‰‹‰‡‰z& 0m‚ustqnkifda]YX :76y³Èæíëîåõ[ +ÏÝÚÛÙÙØÚÑä’ÿ˯õæîëìì€íòêüÀ h©Çàùÿüÿß108$‡€„’zB &98.7Yš“‘—‰neiˆ“ˆ‹ˆ‰…‰r- *Fwxnomjgeb_Y^./993 >_w‘¤¾=>â×ÜÚÚÙØÚÑä’ÿ˯õæîëììííì\ñéý­ )AVk}W 202/V‘‰s9 &96/109Z˜‹‘ŽŽŠŽ”“•‹‡Šˆˆ‡‰l."&@+ Zwmijfca[\G;5;/OèÕÝ€Ù ØÚÑä’ÿ˯ôæîê€ì_íìðéýŽ 20/6f0 '85/034/8\–‰ŒŒŽŒˆˆ†‰Šˆ‡„…€ˆg-%(65: 0gpddc^[W676:* €dèÕÜ€Ù ØÚÑã’ÿ˯ôåîê€ì_íìðèýt 1/0/1'73./2212/7\”ˆŠ‹‹Š‹Œ‹Š‰‡†„ƒ„~ˆc.((923:0 Fje^Z^-*7668$€ zèÕÝ€Ù×ÚÑã’ÿ˯ôåíêëìðçþY "1.0.0+-61-.10 1.6]’†ŒŠŠ€‰8ˆ‡††…„ƒ‚‚|‡^/'(73415:$ "Vb^G84647  •èÕÝ€Ù×ÚÑã‘ÿË®ôåíêëë€ìïè÷D  %0-€./.+.0ƒ/X1.4_„Ї‰ˆˆ‡‡†…„ƒ‚€€z…X0')512430755S 535537 3YK>0«çÕÝØÙÙÖÚÑã‘ÿË®óåíêëëìîã- ^±€kR7 '.,‚-/.-‚./0-4_Žƒˆ††……„„ƒƒ‚€€~xƒS3#*51€2 3019,,435 2ßïíçØÃ°X·ãÖÜ€Ù ÖÚÐã‘ÿÊ®òåíé€ëìíéóÐÊÿøÿüþðÓÂ8 )Œ- ./,2_Œ…„„€ƒ‚‚€~|}w€N2,31232/47-132)31fðÔÜÛßãìäõP !ÅßØÛØÙ×ÖÚÐã‘ÿË®òäíéê€ëîçø¿ 1åëìííëóðÿY+…,…-.+1`‰ƒ€‚€€€~~}|zzt~J/-2‚1€2104‚213.ƒìÞèãâÞßÔæP1ÔÚÚ€Ù)×ÖÙÐã‘ÿÊ®òãìéêëëêïæûª KÿçïëìíñéúE-**‚+…,-.+1bˆ~€€€~ }|{zwxr{F,.10€101201214+ ±óØÜÙÚÚÝÔéMBäÕÜ€Ù(×ÖÙÐã‘ÿÊ®òãëéêêëêîæûŠ Cîôÿûüúöðæ4 +)‚*++*+€,-+1]y€~}}|{zyxwuvq{B(./„0ƒ1)03& šÒÚîììíçîÍ" RçÔÜØÙ××ÖÙÐãÿÊ­òãëçêîåùo/Gaƒ§ÄÐõÖ+(ƒ)**„+ ,*1\‹||{|€{ zzxwvvussmt:!.†/‚06/2!!4Jc‚¢ªªJ gæÕÜØÙ××ÖÙÐãÿÊ­ñãëçèêêéîåùU € 9?*'ƒ)†* ,)/'Wg|zy€xwvvutsrqrny:/,.€-ƒ.ƒ/.1 ( ~çÕÜØÙ××ÕÙÐãÿÊ­ñâêçèéêéìçò@ !('((‰)€*+$ $owuvuutssrqpok`X" .,‰-. -0 ™çÔÛØ€×ÕÙÐâÿÊ­ñâêçèèéëéìÞ,   €#(€'‚(ˆ)*/,',yqtsrrqpopkr9 %-‚,Œ- €  ­æÔÛØ€× ÕÙÏâÿʬðâêæ€èëçñË‚ $€&†'‚(€)(''*+ [uoqpoonmmjj/--*+…,„- * €¸âÕÛ€×ÖÕÙÏâÿʬðâêæçèçëäö¼  ƒ$‚%ƒ&…'(()*%-BwkpmmlklgnN .(()*…+„,-' @R<0! "ÆÝ×Ú€×ÖÕØÏãÿʬðá鿀çëâ÷¦‡’sfS7 &Š%‚&'(%-5thlkjjhidm<-'+*€)…*„+C*-%Ìòã×Ǻ£xW  2ÕÙÙØ××ÖÖÕØÏâŽÿÊ«ðáéæççæëâ÷ƒ \ÿòû÷÷ûåØ $#‚$‹%&&'$+;qfjhggefak7/'*‰)…*-" Cç×ßßâäêâõLBãÔÛ€×'ÖÖÕØÏâŽÿÊ«ðáéåççæêâöh …ôáëççéçþÐ$‚#$##‚$‡%$) Ilcf€ecd_g= ,%ƒ(Œ), RèÖÜØÙÙÚÖÛ9RæÓÛÖ×€Ö%ÔØÏâŽÿÊ«ïàéåæçæêá÷O §ùáêæçêäî½#„"…#ƒ$%$']eddcbb`_\`L &†'ƒ(ƒ)(+ QøåëåáÝØÚÌ, fæÓÚÖ×€Ö ÔØÏáÿÊ«ïàè倿éãí< §÷òùööùîÿ² "ƒ!…"„#$!( +g^b__^]]\\X\*#ƒ&†'('*jˆ§·ÆÝãð¿|æÒÙÖ&ÕÔØÎáÿʪïàèäææçåéØ* #=RnŒ§º¾Ñm!€ ˆ!„"!% T^\]\\[[ZYZW]D$†%ƒ&„'"7Gi^ ”åÑÚÖÕÔ×ÎáÿɪîàèäååèãíÆ ‚ƒ ‡!" %7`W[…YZV] )"Œ%&$€€+©ãÒÚÕÖÖÕÕÔ×ÎáÿÉ©îßçäåäèáò¸ ‚…ƒ !"%[WZ†YZX\I $##ƒ$‡%&"/ ´àÓÙÕÖÖÕÕÓ×ÎáÿÉ©íßçãåäèßô¡   €ˆ… F]XZ‡YZV^% ' ƒ#$##ƒ$%$&  ÀÜÕ×ÕÖ€ÕÓ×ÎáÿɨìÞçãääèß󂃀‡# (^WZˆYZX[M #!„"ƒ#$##%  .Ï×€Ö€ÕÔÓ×ÎáÿɨìÝæãäãçßòf ƒ‚‡  TZ‹YZV_.$"‚!†"#$JE9.$@àÒØÕÖ€Õ ÔÓ×ÎáÿɨìÝåâäãçÞóL Mµ™pR8‚ƒ‚=^WZYX#! ˆ!""# FðãàÑǼ¥ƒNSäÑØÕ%ÔÔÓ×ÎáÿɧëÝåáâãåáè8 ¢ÿìöòòöáÔF€€ #^WZŒYZW^?‚ ƒ!" {çÓÝÜÞäáò¸ kãÐÙ€Õ€Ô#Ó×ÎáÿɧëÜäáâãáçÒ' Ãçßãââåàýn‡  SZYZW] "… £åÓÚ××ÛÑ᥄âÑØÔÕÕ€ÔÓ×ÎáÿɧëÜäàáäßëÀ 6åå€âáæÜìa‡=^WZYX[N …‚ÂñãçàÛÛÓæ‘ âÑØÔÕÔ"Ó×ÎáÿȦêÜäààäÝï± ;ÙÞóñòñôëýJ€ƒ€$]WZYZV_2‚„€U‚±½ÏàÖçe¯àÑ׃Ô'Ó×ÎáÿɦêÛãààäÛï›%7Kb|•­¸­' ‚ SZ”YXY € ,;9;½ÛÓÖƒÔÓ×ÎáÿɦêÛãßàäÛî{‚ '5650*$€>^WZ’Y ZW]C € -ÍÖÕÕƒÔÓ×ÎáÿÉ¥éÛãßßãÛîb€/A>>?@@?@>;740*$#^WZ”YZW^#€‚€  €?ÞÑׄÔÓ×ÎáÿȦéÚâßßãÚîJ >9„; <=>?@A?C2RZ—YX[N ‚€ QâÐ×ÓƒÔÓ×ÎáÿȤéÚâÞàáÞà7€ *<9<;<<ƒ;8?6_WZ–YZV_0‡  gáÏÖÓƒÔÓ×ÎáÿÈ£çÚâÞàÞäÍ$€ /;89‚:;;<9C$ VœYV €€ ,^UG:( áÏ×ÓƒÔ$Ó×ÎáÿÈ£çØáÞáÜ罨Ưž~dA1:7€8†9; SZ™Y ZV_3 €€µîáçÚȶ¢ˆ1 àÏÖÓƒÔ#Ó×ÎáÿÈ£çØàÛàÚì¬ =îæííìîçǧ( 49‡8 96=)=A_WZ—Y&ZW^7 "  -Ð×ÖÕÕÚâÜïX­ÞÐÖÓƒÔ!Ó×ÎáÿÈ£æØàÛà×í’ NæÔßÜÝÝßçë6 …78 95>&n72]W[Z–Y%ZW^)"F=<74+>ÜÒ×ÔÔÒÕÍßN ºÚÒÕ„ÔÓ×ÎáÿÇ£æ×ßÛà×ës ZûáâÜ€ÝÜÎ, 84ƒ6‚7 680 0\^ZWVWY‚ZŒY‚Z"XV8`N?:=>??>?ìßåâàÜÛÐÝC ,ÊÕ†Ô$Ó×ÎáÿÈ¢æ×ßÚß×ê[1¦ÄáìêîæïÈ636„5659/4R^_]YWVVWW„YZ€Y)XWWVVX[_bL!@:=;;:>8OvŒ¤¯½ÊÜÓ) =ÛÐÖ…Ô#Ó×ÎáÿÈ¢å×ßÚßÖéH :\~£²Ì #53…4‚5479* 7JV]`_^\ZYY‚X0WWXXYZ[]^_`\P@$!<9::;;<:>*8€9€:9=  eàÏÖÓ„ÔÓ×ÎáÿÈ¡åÖÝÛÚàÇ"€*41‚23€2‚345216996-& €"+4<>968€98; ~àÏÖÓ„ÔÓ×ÎáÿÇ¡äÕÝÜ×ä· €,3‹2'3223421126898872--,++*)((*-037:;;=;85579…86€ ›àÏÖÓ„ÔÓ×ÎáÿÇŸäÕÜÜÖç©.00ƒ1Š2 34310011245€67‚8 7765443345€76ƒ7893€  ¬ÞÐÖÓ„ÔÓ×ÎáÿÇ¢äÕÜÜÔçŽ& €€/…0‚1‡2‚32€12€123445566ƒ5‚6769/QbPF9%¹ÚÑÕ…Ô"Ó×ÎáÿÆŒâÔÜÜÔço IÔ·²ž„cD$ 0-†/…0‚1‡2332ˆ343ƒ4‚5648+ :äÞâáØÄ² a *ÉÕÓ†Ô"Ó×ÎáŽÿÊXåÕÛÚÔèV }îÝéææéàÒ€ /,€-‚.…/…0‚1Œ2322ƒ3„437& NßÌÔÐÒÙÚãÌ# <ÚÐÖ†Ô"Ó×ÎâÿÂ2ÖÕÛßÕåA –âÑÙ××ÛÓî© !/,‡-ƒ.…/…0‚1Ž2ƒ326! báÌÓÑÒÓÏÖ¶ NáÎ×Ó…Ô ÓÖÏáqþù2sìЀ×0 ³ðÚÝ××ÛÓâ”%/,--.‚/‚010010‚1221122€1ƒ2314 NßÜâÝÙÙÐÚ³cßÎÕÒ…Ó"ÒÙÎâ?ûÿ´ âÞÞ½}ÀÂÚãâæÝñs "(&€(''€()€*‚+,…0‚1…23237Wƒ©¸ÈÌ슀ãÒÚÖ„×!ÖÙÊà ÿöÿbY®Î¼.@Si†¾C.ƒ233223‚4€54‰564€-….…/ƒ01. '2E#•ÚÉÐÍ„ÎÏÎàÄ$bÿÿûó£ ‹ˆ—(1/ƒ0ƒ1„2€34/ ¸ëÜãàƒáâàá &Ñÿþÿûÿ×cBC:EDDCDFIJ€KI‡F™EFCI5$ " ‰!""€!€ !‚   |“„s=³ÿýøþ²ÿþÿùÿÅ ƒƒ¡bÕÿüÿÿþÿýøû±ÿþÿøÿà ƒ€ € € € ‚  €‡ŽüýøýÿþøÿñÄÊÇÈÉÈ…ÉÇÃÄÆÉ‚ÌÅ‚ÃÅÄćà žΖ €   ‚€ … „ #+')((*(+ &µÿ÷€ÿüûõk4…‚ ˆ ‚!  «îâèååæÜñ  aóþÿÿúûTLv¤¥‚¦§¦©¤°‰"l| ³·¸´¾: $$€ ‡  €„ "=Pi†Ÿ­¨µR ¡ÿÿüùTD»ëèêéê‚ë%êîæú° "6IZn€~  &9::962/+$ ‚ ƒ   € ‡ €‚   ÒøÿgCÚæÚ‚ÛƒÜ ÝÜà×ê…  ƒ  (?899:;<=‚> :62.'!  ‚ ‚ ƒ €  %Ûfþú3 »æÙåâ€ãƒäååäèßón  68‚9ƒ89:;<= <841,%  ƒ ‚ Š  ‚   <ÚÎ ÿÅNëÚåÞßß‚àá âáæÝñR  € :7‚8…9ƒ89:;==€> ;740+%  ƒ  ƒƒ  PÛÝTÿÊvéÜâß‚á‚â ãäãæßî? €  9576ƒ7899„:ƒ9:<=‚> ;730*$ ‚  ‚ƒ  gÚÛ|ÿȦëÛãà€á‚âã‚ä æÜ* 2D* €  !8455…676€5667„8‚788:;<=> :63/)# $  L|iQ:%  ÛÜÿɦêÜäàááâã‚äæâëÈ Î÷Ù̺«zI# &734‚5667:ƒ;ƒ<€=€<;99‚89:;<‚>):73/)# ¿ìÞäááÝÁ¼LÛÜ‘ÿɧëÜäà‚â‚äåäçàñ·=íàëìðóöïÛ4+523ƒ47- !#$&()+,-.0389ƒ:€989;<=>>??<3  &ÄÖ€ÓÒÖÔë^ ®ØÝ‘ÿɧëÜäá€âãä€åäèàõ¦DñÝåãääåâî8 -31…3437 49€8ƒ9ƒ:998€9$:=9 8ßÒÕÓÓÒÕËÝQ »ÔßÿɧëÝåáââäƒå éàõ†Mÿîõê€äåÚ,.21€2‚3426 „ ‚ 38€7‚8†9:#;7<' )ÃàããâáãÚä@(ËÐáÿɧìÝåâã€ä‚åææåéàôl`›¾Øñ÷ñÿÎ …1€2306 †  2766…7ƒ8ƒ9!8<.  ?Mbx“§³´&9ÞÊãŽÿɨìÝåã€äåæåêáõS &A]{¢u 1.ƒ0€12/4 € „   2ƒ5‚6…7€8 97;,    KäÈäŽÿɨìÝæãääåƒæ éâð>   0.//.‚/01.3 ƒ ƒ   2‚4…5‚6786:& ‚  aãÉäŽÿÉ©íßçã傿 ççèçèÝ*    /+--/ƒ./-2 ƒ  ‚  2…3‚4„56:  ‚   zãÉäŽÿÉ©îßçä€åæ€çæéåîÊ    "2/0/,-‚./-1 „ € ‚   21†344343€45648 „  —ãÉäŽÿÉ©îßèäååæ‚ç êãó»  €  ".-+-.,0  … € ‚   20€12332242ƒ3€435  ‚  ªáÊäŽÿɪîàèäæ‚ç!èçëâ÷©TC1   '.++-,€-  …  ‚ 2/100101540ˆ31 ‰¦mR;# €·ÝËãŽÿÊ«ïàè倿ç€è&çìäù†VÿðèÓÆ²…Y#   +-*+,,* ‚„ € € 0.0//00//32"513‚2$34/9íåçæåæÞÉ  'ÇÙÍâŽÿÊ«ïàèåææç‚è$íäùi€øâññõûôÿ¯   !-+(,% …ƒ €  2-€/-.20! €)101$214+ JßÏÚÖÖ×ÖàÔ(9ÚÔÐáŽÿÊ«ïáéåæç€èéêéíäûP˜÷ãëççìãø¹  (,) ˆ‚ €   --.--1/ 2/10"/2' XõÙÛÖרÕÙ¼ LâÒÒáÿÊ«ðáéå€çèéêêéíçô;´ÿòúòííäøª     ˆ‚ € 0/. %1-/$.2! 8»Ëèæåèßê¹báÒÒáŽÿʬðáéæçç€èéé€êìêíß( Pš°ÄÔçüôÿw  … ‹  ,-  /-.#-1  *Hp¨¬Çw|âÒÒáŽÿʬðáêæç€èé‚êíèòÍ  2IZƒ2 †  ‡€ $    0,/..-0  €  šâÒÒâÿʬñâêæ€èé€êëëêíçø¾  €  ‡‚‡   €€ -,-/   ¬àÔÑâÿʬñâêçèèé€ê€ëêïæúª   …ƒ„   /+-,,*€  ºÛÖÑâÿÊ­ñâêçèé€ê‚ëïæúŠ  †… ‚   €)€+,'‚  )ÌÖØÐâÿÊ­ñâëçè€êëìëïçûm  „† €     €  ,)*+$€  <ßÑÛÐãÿÊ­òãëçéêêëììëðçüQ =hH:&  „‡     € ('+)," R¸ª¢vV@"  OäÐÛÐâÿÊ­òãëèêêëìïéõ< ºÿ÷óÜÌ®l  ƒ‰       € €  €,,'+ šøãëçèéàÒqgãÑÛÐãÿÊ®òãëéêê€ëìîìðá*Ñôêñøôÿ ƒ‹    € &%') ¦ßÒÜØØÜÓäÑÜÏã‘ÿË®òãíéê€ë€ìíìïë÷Í,ßïìïêðÔ ƒŒ    € €&)' ½÷ÛÝØØÜÓâ‹ äÑÜÏã‘ÿÊ®òäíé€ë€ìííìðêü½ 3ùþþÿòÿe ‚    €  €  $$' t¾Îêèçëáôv ²áÒÜÏã‘ÿÊ®óåíé€ë€ìííìòéþ«h‹®¾Ú° ƒ  ƒ  €  €€'' +Jp‡Ÿª·7 ÀÝÔÛÐã‘ÿË®ôåíêëë€ì€íîòéþ‰   ‚’  €‚ € ‚€€ -ÒÙÖÚÑã‘ÿ˯ôåíêë€ì€íîîòêþl  “ ƒ€ € ƒ  @ãÔÙÙÑã‘ÿ˯ôåîêë€ì€íïîòêÿS   ’ ƒ  €  €   UæÓÙÙÑã‘ÿ˯ôæîê€ì€í€ïòì÷>  ’ ‚ƒ€  € €%  mæÔÚÙÑã’ÿ˯õæîê€ìííîïïðïòá* ‘„‚ €  €* '&ŠæÓÚÙÑã’ÿ˯õæîëìì€í€ïòíøÏ8M>/!   „‚ €  €- # ¬Ø¶¯’t[C  ¦æÔÛÙÑä’ÿ˯õæîëììííî€ïóëþ¾ ,ðÿùêÝÒ»?   „ƒ€ € 3  !  ËêçìëéëâÊ6µãÕÚÚÑä’ÿ˰õæîëì€íïóêÿ§Uÿêö÷ûÿûÿ×  … € 3  6ÛÚÞÜÜÚÜÕñI ÄÞ×ÙÚÑä’ÿ˱õæîëì€íïïðïóëÿ†rþëóîïòïûÏ   „ €  €  €$  IûáãÛÜÛÛ××62ÖÙÚØÛÑä’ÿ˱õæïë€í€ïðïóëÿiwÿøÿþýýðýÍ  „ € € €$ % ÃÞìêìæíÑ" EæÕÜØÛÑä’ÿ˱õçïë€íïïððïôëÿQ+rˆ­ÂÑèòÿŸ   „ €  ‚$ 5Pm‹¡¸ ZçÔÜ×ÛÑä’ÿ˱õçïë€íïï€ðóíö>*_w‘¤¾>?â×ÜÚÚÙØÚÑä’ÿ˯õæîëììííìñéý­ (@Uj|W 313. )651327    € € .;>†=<<=;?š‡  jáÐÖÓƒÔÓ×ÎáÿÈ£çÚâÞàÞäÍ& € 1=:;‚<==>,¡! &"1Ñ×ÖÕÕÚáÜï[®ÞÐÖÓƒÔ!Ó×ÎáÿÈ£æØàÛà×í“ PæÔßÜÝÝßçë8 ‰9:7=# !"G@?:7. AÜÒ×ÔÕÓÕÍßQ  ºÚÒÕ„ÔÓ×ÎáÿÇ£æ×ßÛà×ët \úàâÜ€ÝÜÎ.:6ƒ8ƒ9:3žA=@ABC@! BìßäâßÜÛÐÝF /ÊÕ†Ô$Ó×ÎáÿÈ¢æ×ßÚß×ê] 3¦ÄâìêîæïÉ 858ƒ7€8 998;1–#$C=?>>=@:Qx¥°¾ÊÜÓ- @ÛÐÖ…Ô$Ó×ÎáÿÈ¢å×ßÚß×éI  <]¤³Í&7576‚7€87:;/…‚%>€=>>?<@  !.?ERáÏ×Ó„ÔÓ×ÎáÿÈ¢åÖÝÛÝÛÚ6  €)635…6 78669;4*• (9@;€<€=<@!   hàÏÖÓ„ÔÓ×ÎáÿÈ¡åÖÝÛÚàÈ$€-634…56$5579::3-'   )18>>;9ƒ;<;>€ €àÏÖÓ„ÔÓ×ÎáÿÇ¡äÕÝÜ×ã¸.4‚3…45665€469: 844322110/136:‚=;9889:9‚:;;9€ œàÏÖÓ„ÔÓ×ÎáÿÇŸäÕÜÜÖç©€0Š3„4‚544€5677€89:98ƒ789::…9:;5 €  ­ÞÐÖÓ„ÔÓ×ÎáÿÇ¢äÕÜÜÔç(€†2Š3455‚6€5€65€67‰8ƒ98;2TdSI<) ¹ÚÒÕ…Ô"Ó×ÎáÿÆŒâÔÜÜÔçq LÕ·³Ÿ†eF& 30ƒ1…2‹3‚4€5‡6767898;/ =ãÞâàØÄ³¡d.ÉÕÓ†Ô"Ó×ÎáŽÿÊXåÕÛÚÔèY ~íÝèææéàÒ  1.ƒ0ƒ123443‚4‚5ƒ6‚787:)QÞÍÔÐÒØÚãÌ' ?ÚÐÖ†Ô"Ó×ÎâÿÂ2ÖÕÛßÕåD —ãÑÙ××ÛÓîª#0-…/00ƒ1…23‚4‚5…67769%eáÌÓÑÒÓÏÖ·!RáÏ×Ó…Ô ÓÖÏáqþù2sìЀ×3 ³ðÚÝ××ÛÓâ• '1.‚/00110…1‚2‚3„4…3„4…56648! QàÛáÝÙÙÑÚ´ fßÎÕÒ…Ó"ÒÙÎâ?ûÿ´ áÞÞ½ ÀÂÛâáåÜðt %+)ƒ*+€*…+…,‚-€./‚3€43†4„547;Z…«¹ÉÍë  ‚ãÒÙÖ„×#ÖÙÊà ÿöÿbY®Í½!1CVlˆž¿F15456655†6…78878998†12€ +6I( —ÚÉÐÍ„ÎÏÎàÄ$bÿÿûó£ ‹œ‚,523…45…6572 ¹ëÝãàƒáâàá &Ñÿþÿûÿ×cCC;EDDCEGIKJFŸEFCI5&"$ƒ#€$…#$""#$‚ |“„s=³ÿýøþ²ÿþÿùÿÆ „‚€¡bÕÿüt8mk@Âÿøÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ±2&>>???????????????@@@?????????@@@@@@@@@@@@@@@@@@@@@@@@>D9Õÿúÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþ·(F½ôÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿüúÿóEÿýûñ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøø÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøú÷8ÿñ÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿôÿÖ Cÿóÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿôÿs¸ÿöÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøÿÆ%ôýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþð?ÿñÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüý?ÿöÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ@ÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ>ÿôÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ;ÿóÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÿüÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûþ‘ÿóÿýþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿðêþõÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿùÿÇCøþööó÷øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿðÿi3Ëÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýùòÿ¶FŸ¿¾¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¾À½ñÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿüÿº ÃÿøÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþðÉeic08̉PNG  IHDR\r¨f$iCCPICC Profile8…UßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ‹mÇ6°nÆ¶ÂøØ¯±-ümR;`zŠ–¡Êðv x#=\Ó% ëoàYÐÚRÚ±£¥êùÐ#&Á?È>ÌÒ¹áЪþ¢þ©n¨_¨Ôß;j„;¦$}*}+ý(}'}/ýLŠtYº"ý$]•¾‘.9»ï½Ÿ%Ø{¯_aÝŠ]hÕkŸ5'SNÊ{äå”ü¼ü²<°¹_“§ä½ðì öÍ ý½t ³jMµ{-ñ4%ׯTÅ„«tYÛŸ“¦R6ÈÆØô#§v\œå–Šx:žŠ'H‰ï‹OÄÇâ3·ž¼ø^ø&°¦õþ“0::àm,L%È3â:qVEô t›ÐÍ]~ߢI«vÖ6ÊWÙ¯ª¯) |ʸ2]ÕG‡Í4Ïå(6w¸½Â‹£$¾ƒ"ŽèAÞû¾EvÝ mî[D‡ÿÂ;ëVh[¨}íõ¿Ú†ðN|æ3¢‹õº½âç£Hä‘S:°ßûéKâÝt·Ñx€÷UÏ'D;7ÿ®7;_"ÿÑeó?Yqxl+@IDATxì½”fÉuVÿîžžœsÏlœ Â&ì„Aˆ„h„ ‹e’°D[²y,ò”¤sLË”h““ ‘(…°"â›°ØfvrÎ3=þþ¾[uëÝW½÷ÿv†"«ûýUuëÞ[õêÝ{_å×577çþÆýõ¬ukVožu]§Ò»_ŒLTÑVÁÓ¼Ïáæ`9Ú–£Kai<åÁøììla)éé阶L¹¾ÞÞÙî®®ð¿ÜÕí¾ÔÝÕý®OO~]iÁçCü7¸µk ÊØ»Z¨|äèr0›— WáVÁ-m.œÒ¥qÒä`–× hlñ$Ühô#ðÏ&&¦~£%1èÎÀþô×¥ºÚßhWW—Ó«=v‘£ÉÁ Šr¨ —ð…¸”.Ç?ÅIóéî®W—”¾··7e±ìñÉÉæ ®_èï¿68ÐÿÁv.¨°råÊ÷€ñ/ãÚ‡›^ W.qiE(¼Î_åúœddû7yTË-ÎñÏ"^`»·—-“âò†z¤iSçî¨F`@ø'†Äóîê&a—ëÆ¥.}&éƒË>]%nã3ÿ*'ù¦™U"W%²˜˜˜tsÝ…á•+Ýïü“5L:O:}úôì/|ôg»gfçÜ4òk6§åJ9À}¡ÙœûÁ®ñŽM”ž¸¿‹V¥?}`ʰ ®é©?_|Kß­<–ð,Û¿’áôUÉs7“âæp²°j=Ê¢{àœ“?*™*šéN‹qˆzÄ0´]Œ†á¬ä^{m,†å[ʤ_f^r§Ù9ÞØœ¿‡ŽlÚ´ÑmÛ¶­mW#CÚ:súTwOO·ëÁk·ŸïÞFŸ›™™u“0cã“C?€zz€7B&ÆbBtd ü¿üŠk ªÒ«ài†Ÿ/þ|èÊ[óø/ÁOë Î TÞo!Û•(‹M〷ØcC£ ‚ÀŠñëÂ4Äû.ɦpÁ0&)suùèŠ!3mþ&&&ÜþâóîÖÛîp»vï®7`‘k>ðâ Ï' ]0=nW£¯ÏONº‰É¦â܆ÀQÜÃnÜÛ¨é·í@ùÿ?àý¸ «:000µk×®‰{ï½wjÜ|óÍýı®ºÒ,Vž/¾R~ôg?Ò}èÐ!Fÿ7뛽å–[Ýšuë"¬“@Z ÄûÞýƒÝSÍX¡mÙ`DÖõôöà¡ôº.Xê9Xçfs Všƒ¶Ö½Zf³k U¸ÞE1e+¿ûMBôÏ egX.¼Ò}7£@NŸi‘‚‘ë(ªm• „ßÕÐÖC¶º‚ÕvøN£E73=³¤ÊÏû˜B_þÔ©Ór¥÷Õi|^xÿã?ø_Ö½òÊ+—Ÿ{î¹ÕîƒÁ?€ø2ãYåÿ»@ŠS°BãŸþô§›7o®Tþœræ Ú)žÒ¶Ã?|ä°é *Uç>eãÚµ1¹Ž;Þ9a‚Ù‹½sdôÃTÞ,JÑ’W9ì  :þåÜôÌ4Z4 0ôÙŠ qÀH „ Dʬç¸.?ìµPøùÞE‹HH™eü!¼°ô!âùñ²5'<º…E—þamݲUŠò‰O|bõ;ÞñŽ)´’µ›þ1$ìfb‹€òcqQ×ï %~Ф ÊŸm§ Ê§S¼ùâ9|HI®«¿c×Þü}¡ ^ÁùHUÕ Ï?èB¶”";½è;öõ:¶Zr®9Ý,ŒŒÇ-ØŠ˜–.ÆÒ6Ssù+ìFTx-[§¾(7”ܶ:¥m——ƒötclÛ¾CÝïüÎ︟ù™ŸQâ]ÐÇŸ„ûT‹@Âï+¾~~é—~i´êÍ߉Rw‚£¥š®Ò;zXƒ×Í„24°"ÑÝ-=ë•Ù'Õ5¼ÁRë¡Äo)üõÁñrû@¦!ñv-ØrVDSZ\¾ºÐ7Ú ¿¼”<¬åÍL¸oßá #<ð@ÿÎ;¯=ztEÈúŸÀo5þ\@p ýéŸþé–f'ŠÚ Žæ3\¥ÑUYÇÑlW^‹õW­\Õ¢8%…P-O2Šà’lx(Ašƒµä”<*¯’üÄ@ôõ»>\*…Æ…c ÚÅaÆìúöÒýY&5Pñ^Ãúጂu¿ñ¿Ñ÷‘|DA; w«J-€U«V½ © UHŒö·¼G4M¹äüNpH×)žæ¡J¯qú'N.¼ßnù,&<¼ã+ª­Q2¶(OBKJe(ZÖ]‘eA €´2ôÞÚ•‰Ï£¿¿!—s-v_ £hrÒw/t€²uŠSsþëà§ëúÞóšý+V — qÿý÷÷cÆkvrrR&CøK%ÀGU)ØDÓ_;µ)«Ò–rÍD:ÅSÒœâkÚéS§4x]|Î÷÷öõBaÖ¡$QÉË`)c 7#7YÚÏØsß>³Zã@lS&e›–)–Ápçsh «Ã+ç8CQj=`6ÃOoú)ÎEÍ`ä2¼®0­¹ëZˆÊÌ×oXŸM»í¶ÛÆž~úiµ ?V2PÌ{• óýœdÐNaÛ¥+ÏNñˆ_§ôÊþ™Óglô5÷bôßkTY J •”ª¤\ªŒ†–Þ†kZD«3íd ¨x å†(t'ŠõhIÈÚLqÂ_Ì †¿=[ ö†ÿj†·lÝ–-86#YoØ â\nm¿rl÷ ‰× ñæ£ø)Ï#‡“EÖqa¯±±– PYü…™‡*UDò+^X­ÂUÖ£¨ŠåbDpA¼•hZ DÈ(² Ø%ò4‘e·\-r(ß”å á:ã@„ôù¦ ô™æ¦0tCVN†Öƒ„e¡”7e~ö¦Ê)Ë»cß>÷w>ò÷Üî‘YzöìYwþÜYwîì9wáÂywáüyGØÉÇݩӧdaÚbʱ­Â`µ«½ñ®ÔÔæÙâ-FñIOw´Âp‘Ì_|ña,ï]'Ý ^ÇŽuÇq8qÂ>uÒAå_¹r¹ö­åsªøEUööëp¬Ö””Á&x^uÆ%òcO_ÏT Dì BïÅ•3’Ä‚[.¯”>àЫ3LÏäE°º:ÑN®˜®3Éà·°'o¿ƒKªCë!Ž?43›´´T‹÷9"ÿþ‹ÿ[_‰m%æšFàÅ‹Ýý¯¸Ã‡^u‡ÂÚÿcî$f¼Îœ9ÛQY·™5¥L’HÖä*;Kxu¤üK¡øšïñãÇ4Xòßõ®w‹òÈæäíûî«„"˜q/<ÿœ{ä›ßpO<ñ˜{þ¹ç°·àjÜ æ[Iu¬$ß l%I!ªb ³ oÍ´”P)·0e»Dôh)2bLœr«RØ" Gä@œ‚,rÈË‚"UëMÅ$¬r”B$/ŸENL¯ŸÁà¥_AQìÁà")Ìp,Ô½ñoŠ{?XŽª{±iÜtϽ÷ÉÅ|•æýÚ?t_ýêWÛ%]PEÐbr™ƒY†íÒ‰»”НyŸ@s)çî{àÍ9pÆ€¯ÃåÒûxùÅÜ7¾ñu÷è£ßr_ûZ}e÷÷ryµ×‚B— Á³™F/mrŽˆ©†<-y5¸¨ÔÖz©q(2,‡¢°”ȳTN`²ö€ˆ\0ˆ ‹ò² ‚¡L^6]ÄÔ‹Ï©šTñ(Ÿ=PÒA¹,_ s­ÃåK—ܕ˗÷õÏÇÙy¤£œ•ËÛ9·N¶¤ 4ÜêÕk:bZ2ªJ™ÆnýNp:UþNxiÞÄűH>á÷w`êòºõö}Ž×û?ð·Ý[¼/òN¼/¹7ÊY!KˆD/‘úTBœ’ˆ†±çÙÄHù©3§²ØO>ÜÁF¯GöÄC”ý–Wûm¯LfùT±yïRÂÆÅõ ÜÇ­²Ýê3›a$ pâ1ŽmΡTNÉ¥|çÀO] ’©¦È"·“h‚™R@Ùl),²OÈóáX=¹{÷y]E·ñØÑ#+±®É/•™æŒŸEœ-“vŽ;Z;u%`‰X:×.´Ë¥øZ®3P„Ôõ÷÷»uëZAtRÞ”×µ6SŒ\se+*k­”©b–séÔ_‘"!}|û;yÂõa™·paË”#ášNâ„÷2M[±’ŽG¯0ĹË6e~,úºúä9³~õy{â Iq“TüuhÖ®kPô†LŽ¥*"œåK\uÅP O SBSÖeCðòÂãeŠéV®ZåF°íûÈáƒõÇ1õ––¨6κ¬2\CÑÎmظ±JL¯4#èD™T2äÔ "çð®]u££×"/ PÐÔåè4­¿è‘5A ‚ô–Åˈt­œ½ •)=BA¯B:‹ýç½ý½nàþ×3V r«·¥_•ÚÇ™ý…GxyWa¤cÁé‡0dln ¸Ï2޽éÄ<Ø n“òÐÃÖÌ«—<›xSÓ8ìa:Ž“‚¬Š@oHüO©2šWÔðKÈÜXä²À@Ó*3.³@ÀÀßìG;˜ŠÞ±sWQ@¢|æ(Ui§hç¶lÞÒ%¦ÚAõvJµÜН¥;Œ‘Ñœc  ]st9صñú)D.Šâ…Ìr*€Ù7“¢F& P¿ Wˆ¬·ï›vÝÃÐ*<=?£Ü |Ë׆™È8•_Ãôé ÄÅM…ðò ôâÁˆ± £<1 àÇ4¹©>×uK€Ÿ…þßýÇp Ïõ‹ ’²Ó{ШyÅ=…"¤­óȦÀ("Çä"o‹hð’xB‹›0å)¿4ãõ'ópü€z‘[ ]¥èE©Ë¡ ç/”™ØfÒ©ëØt¢T픿,x'x‡sçàaɼ|§woðry^­9fŒ¤²ÿ? ªg¦òTâ`!ø%‰¢ÌËÎ3Ó_eŠx-€iŒ;vqÃ6YYvOdÕ¦1¬éô…"/a”Ž>/] ¢† àIˆ?GÃÓhÙuÑ:@XÞhs8xÓ‡ðÚn÷ZxgAƒñƒ¢ [gkˆ†B]ŠHZÐ eb°*ÑG€C‚¥ ,h6àä(ŽÔ¹ÑQ?«4_#@²-.‚:wî\]V’Ƴ;uú¸Kø%áEJ/!#Â[ åg>íòÒ¼å >{!Ê «œÆSb’…¼Ô7I1øÌÓßá\€ý[/M^JJE¡à žñ #~q1î/!1¸­¹NÏâ‹§ÖÝ@]Á×<ÓFødyYÃt gXÒÉËó“¸âðHC¥ xŒkЈ˜Æ°ø¸'l èÁ‚ÓiÉ“ ˜ úæBP(l½÷6µRªÀÀ&>‡,gÍ9ø­Y‡ç£ù~»ó$ÉñýµÿÙý«ßûî•—_rãmZ IIJúÀu^vR¬r²gÄÝ~û>w÷ݯsw¿îõî¬Âjg½_xþ’‹Ë fn°âÓ·4‰Ü´D@™µ– 2õA,ÕöRù2.ª“ÁSÐÈ›t!Hp<%gÊ,Hó±Ý¯þ¾K`³G&s4€I † 3”’g<Ø«¨e´´`7€mF.&ÿ¬q¾›ôE>dÈ“zñ)¿„èùu¢±œ!ÀVÀññãîxÅ:¢qõà‰ 0ìfðèð—^ä÷=êWCòTêN]ÉX¢:ÅlwÓu´šG'8Ä­Â;5s&Ñwz饗äúó?ÿŒsÛ6lsØGFFÜÞ½7»={÷:Šâ†1UuåÊUwùòå’kÙé³D 8é*8QtŠ$²ÂœÇ, *{2D…‚`ÝH“‰Ll%%T„Q)™7~D©•  ÄÛPã || E©gšm ÿ9³ |$‹P.àJk0ÒuÃHÞŒÃE½·@ŸTþˆ¼G½Aƒ@¶>Mª”Qã9zåHz {|‹·VJôÐYvÉ–ÁÁHŒÁHÔ½èrÙ®_—y¸¬¨R:ò]¬ò×ñ¶ån‡wk¢ãø§3gÏÈõä“OàÑÇÇÜ[îZ+÷Ç,} Š\ `N--Êž,IÕ·*ÄÕÖ“pìÕ0ˆD—¨xà¢{Œ‡—†Y–<€(¸¶5@:Ž%œ3N W¯Í€D!o ^vFç-b‰1ƒXYŸ¡Pi 3“u}¼'T†}å`¶/—Éq¡Ò|\‹°•2ºQ”Ÿƒ|×pÀb\VæÁ§óie”²È%èâFÊž‘Ûˆï·JÙ`“ºØÆUˆdde‹ÏQ³V–x‚TŒ¢RV²R|2c˜0û“r1®­Hã‘å—?(ƒðžÜ«”‰¼HWª€ó)ò«h呼@,m("ò6ZóQP¥<ð^‚+Óû‹v#¹Íø¦Å|\ÉD¡Ép¨Sþ::²j—®ÙuŠ'3JÔ¡_ù€;¤OÑ|ÿßCŒxeI‘ )‹)e¹µ¼¹4T95‡]€‚Êw7AÊG|%‘Ö“©Ä|S#\2‹S,Ãðå¡ðRþ*#\!e¾*a4vÀ¸\’]üÑ‚ @ S=4‚mÝyœ2yD,3`Ì –•Û òVùA²îdežá¶ìÁªsª2ÖÇS•þš4ù;U|Å;tè`ey5¡õiÊÒø¶E¬Uå%sŒˆ!ÁÐúa€P+~9HÞþL.dA/ík~Ö È›Hø]˜Ô€NX/Ûü$ÖnPÒÒQÙÅy"® JføF"©#J+n>UbÀ•]AžÏ(’ˆe­!/ D (‡’dˆ¯ˆßœ«5uo}f¢ Y•ábÓ•oÊ'·ür¹^Ë¢¾ÿüW"|1ZI¤,Ä/0È%â,–ëvq 2ãß2JÃÖ ¨1¨3`,ì•¿ÍKÃÐ"ñ´5 EG •‹y ¨º,Ùo^òIöÓpTÐ4AãuŠ["ÖPBï伃²+ÈÃ}ÅdÅ ìÉv4œì”Pø‰BDGÝÇL<$Gˆ¢ aúl FC. S°*â1kâSÉé„>…3¤ Ø´äÂZ™Bb)„T (™•…TÏÁâê ûaÍ2OÆL5‡znÅIñ´ÛÏuÏ=÷¸ÿáÿ¾Û{ÓM˜½iº‹.É À<ðóò¥‹rð'ÃÇŽò°Úc¶ˆS¬7mžßÞWɨ¨„LSëÒˆ³ØtòPÅg˜îNIÍ9Î1üÿØìÙ#Éü$+õر#îøñãþ¸etxä2?'Æ4¯µwíÚ„ÇÉ<½;œ[ñ·†\Ϻ7uhÚM|»é&â H`ßMغ{Þ¹+çFaŒö»Í78.Òèá6ÚR¦*öehN£ R%è*”šJ,é Y”ŒæÏ¬•ƒi„i·ÊÌç(J'øH üÄ0±UO# ¼èËš‰‡=-³—dªx —eÅã QøiUà2ŽÖ*Iyüµkc®1ÐÊ`™2 pEŠ”WÑsÅžns8Ç?ôSî¶Ûoœ5Ú²u×Ve)~Z.\pû±kðàÁWÝ“?á¾ó'j‚Þ7™m5GË3˺”{b4M†ú ·~]ñ›ž*¾æ]µàî»îrªüÄ幌[˜ò`Ù¦a‘_xîy÷ôw¿ãž{öY÷â /¸_z1{hƒÒÑŸB\¼ŒýÝ+°Óõž†ëÙÄU9ØôvK¯ëéuýÏ4Ýø#®y•‹Ö@×°cÎÆŽ°ËXÁÈnÇB2ã ¶Õ  ÌhK£ÕÑÕ Z’“$²A@Y,DZŒÔ#_Eg v ,_1³Ô%J©ã9#À.œ”uðU3”$Sv$µ«§˜’—† ¿Àႜ“øL¨‰qu›Qß»ÍÈxZÅÓ‘[§j÷Ù¹kWÁ¾Ãûñ<Ôöžûîw?öãyüÃÿûØü¾p¨’ &ÎwiJ-¨tU È4Åa8çêÒëÒ”W]ÞGQ´’Ë-·–âi$Í··§»¿G.Å=‹½Ÿù·ê~÷ŸÿséË+Üúã¾=Û¿àõa>.HM7¼ÞÔçúoêqc_rãÏ¡op Æaz‹•Ë''Ý¡#ì¬rÛ¶lr ¨ õΨöh5Iý6'dJgßÂ*½\òŸH*É€i>i«€©#ÚR‰#ÏØ öã=¼Åx*Ѐ#ˈòòX±^,à}iM3-C$jYi±¿túÌwþÂEßEâÇíØÛÂãzñ²=}ò¬ÛˆM_ƒß+$«T±HLˆÎCKeGZÝ exûv4ƒ“zËÜDœôlÍÐß„í¶ŒÊ3õw˜ü˜VÅÛҕĈí\ÓÚ¥×ñçÍòªslºçûY9×®L–f#6Rü½Ÿý(šŽI= Ma nbÒŒ3G‡DóõÅ*£‡b‹˜ ܽ¶Û ¿oÀ­ù±A×!œÚ4ØZì6\¿â^xu¿;É<°¿ |Ê[B’»€s‡I°ÁÁV€Ï¿Á±Úô"ÃD¢“çÊB2ì…Ù‡=B|ìˆ2•÷3Ä œJLÂ%ÎgN8œÄá#®².-tµä4 {k@c^þb0”¸\=ÏÆ;rô¸{þÅ—Üé‹gÝôZÌŽÜÍç‚ê /Þ.>FtAŽË´q‘›ÏµÈËçžÿ-°´¬…Ï™*·fÍšY®Ó*>„Wy¥4ÛMK'M«Š·´ª ¯»º´v´Lo§øÊãäÉã ¶¸›n¾%ÂÚ•%"f¤åøAꨜãõ…ò îÃ)·7…ª Â/â‹pTúoÞÎ^7þí)7ñ8f^ùnÚ: ;v ‰W®Žº­¼Y9Œ>\F N!¸Ê£¥p ¨(•@M~†¸ÄƒÆ Ô:`!²tü ð½®,"=“¡Ï‹ÍzôF@ •ð´%Ð5C!]õQÉOÌÄ‚ 0Å'/üMŸÂÿì%…{ëÅñw{Q,Ì€u‡34úgó¤ƒéC7ìâ¡ËØÞ=êV®Ô¯b3OŸW|^E1BÈ k˜ÆLÍ’ŽÈ·°Í(sR—IuBÆ4®µßøÆ™)žº*ފױ¨Sªº4fT—Þ©âkOž<¥Á’¿ luù”“HJ—[Ý5SnÙçëÝ ð`ò Â…IxÛò4œ¡ïkÀôºkÃèzczƒ–ÄØ‘qwààaœ³Æmƒ!ðKŒË¼‚Ó?!†©oµ.N®SñÔ©Þ°köŠƒ#ú Gc@Ç@ †@h!òägxIœ4ä»5F´shÙˆ£pÃnòü…È ±Œ«õ7kßø4˜g/cd5(>Z{6cMDȸ/Ì“ˆß!vѦž5—Æ£¾O@nnÉÜ–É'ê¯/€AÕ2õuÆ÷›s”µœ²WÁÉcb-¿6Ž_¢.åxבvdR± šFóU~ÒT­X¿¯Õy¸ºrOã;öÖÍ`ýýµ± çð¼ëña 9‘¨(ôÄÇOˆû¦vïÝÕãVÿ7Cnâ;M7öõq7‰Ã]ú¶ÃÜ…E´.œ¸„7ü5™-X¿n Ø(#¶Î­È•møÌå×H厅 ,ÄCÜ‹4àÄ)M!&sqD¹©GîUQ€!€´%@Ri 0ت‘§³ûÃ7٠̾°ÞûX»zµ„c!É78_—>2u§¡øçx.ìn/fºúÐØëÝÅÇ_Ö°l’¿2@: õêµyøè†]Ý?ê.\¼$†¶d‰IÉ3Ȉ9¼ êלÇ?y¯óUÈR9¡Žtrè&œTåêÊÑÖÔ)ÊBÓXÐvÊŸã}#¼UŸeZ ØÎåx¦4W¹~@€”(ïÆ&¡üp|k7^ÏcÇ!xÀ²¢éc‡ÏÈ+ÑQÛƒ÷aðÖ^ Nº±ïBˆ ×]@Ak`öpÓ;qÒ]ÆiD~°!Ó<&:¼ýâÐmQD_ g8Q )"”_‹U .~bk `i}Èk”+Ȥ~ÔàˆpY-˦; ™ºÞ==nŽÕŽ¥!ßà¨tøfãé3ç0¸oò¾›©ØPü!†e»lmá¸â¹îÐ €±nìAWë;H¸‹CV§0æ²v f™¼B–`^ë=jxιV"”ÏåK—}‹ MóÔQs†¡ þÊK/§,Zâzx‚h-Á¬S˜…¦‘ýB”Ÿt‡07ZåÎâ+A¹0Ô•3Çë[ßüf <…ö; ìà[†p¯—»R /EúÖ—;p‹¢=k»ÜÊ÷¸»ûb· _sêÁ ¡Cßõê‰Q÷ÞX›°v ž®Ûö” ª™P)VŸHŒ+ŒA†ÕP¢b#,âú.°#MÄ Œ¬ â9ü¹1¤ÃÉF’±2~½yåJ?æá±ˆèC^ññél,¡¡c¿ïf|]hˆ‡Á›ƒ¦—4’¾¦!؃VïQ´Ðkìƒ{iÌ9wÞmÂ9{©WR^A•Z@!sj,¥vY¾ï{ßâvïqûîðgQ¾ ïÔ ×~9rØpηlC3g®ÒÔ)ÎBÓªøz_‡Ô`‹ÿÏþÉ?ÆÜé}Rá{Fnv;ví\ÐIÀ<òÈ›Ê76IFÓsè.¼¹÷âL;¤v¤üT,âÆŸQEBø­Þ5ä&Ÿlºk_C·ö­¡å9ú³óóå-tÙü#ß`ÆRØà“a g0„ã•Û—~ Öf=¢±F€è4b@É¥¾ìûƒñìUú¸QøèXǵLT¥c1â?(>WTBñûn¾‹UÌ|ðOžÄ—O©Ik ÖuhÈG dÝ1Àè"ôìÅ Í'@ƒV@/Ö±NÙÅêéfS*ã˜Gâ´œ>oæŽì8³!%IM”Ê{àÀ~¹>÷ÙÏJÊJ´zn¹åwÇwÊiÕ|ssðŽßóã—“¨[Öèù‹_±'Ã6´SŽ9„”¯âd ÀB¼Žn±ÊOÞG*Öðf¾ð…/È¥7ÆüÖ¯_/G-óC ü\òλÝÈž\{°jj»T6ñmÙžÀiÂêÆ1ÇŒgèzG ŒoƧ³˜àŸ¿G ",H&¡F8AãO*P„)>çôîï—A±¯`ðt x–þmÀ;áE‹ äÀ¯\ŽyÒ1Êr‰ŸI#qy ‚ð“e§4üè}U ÊýÆÙÒ6×Àá™ ¨@ÌÉ«[CWWËh¼äˆ.šúgÏ£Ž7>êBßø}7÷¸ž54( ”ò€Ü›ç-<ò•d½ p-À ìÍê‘c.“ÏMÊ`â¶Ì×sôqjY[|)ºø£r/Äñ8»'Ÿ|R.KO¤qXéC¾~=.¬_xøá/[´Ê°ý8uÅ‘J"$´W¹…¦YËñ®ãK|Mç99¼ð&ây켞}ö¹2~Ök—çB¶±ç©¿Î^çÉ;cøCßqðþ×½R…ª‰Õ£UV[ªüÌ5ÀZ ÕL†L™Ã[¿Ë ÿÈ€kÜÍÙ‚)7ydÚõApû0¢Ý<”Ò[”t¸ â„B¢ „azÄ °LÏ:²vª<ÀÞŸˆ½o~ [à‰r’‰â¢% +Q޹ (gM#¦Õ™ÜAz¯øç°+¥Tñ¹š³%=«ÁŠO!öÅ[̇.c+€ YîL+  &œ-˜~dl%£õÏq…P0nŸ<‘Äê+5N9[ 5†])ÈARžBÍëÈáÃ¥´N"t-T,¿’È!(òBÓꔿŽ'óMÓObMÞ©däSsPNéqJ‘×Sßá|QÙaŠ®±/äסšl* ªL£Â šÅõà2½`AÚ„> Eí»¹Ï­éu“ùÙN¡õÂL«í£JS]3Ó GÆLgþâó—ŠÑg8¸€/hÀ4& ?,'€Ò˜@¢4L¢‹üñbõa§ôt±[†v+ óŒ;|ìL¡øPJN‘öaÍ„WüÐàf¶¾’·¿µ¡D™æ+¸¡ˆÏ#ÔS7f¸,{ âÓVÀÔy<{Ì,ìÚŽ)3 ¯Ì6΀½@häû íz¹ìß°ŽºÓI+ d,N±Ó´¥T~æy2~ À<[˜% Ç?ÎÐ[‡ 5>? –Hó©R~[†–b °(ud`>HrNó >ˆnÁíh üç)7ö´7FLóοV¡TˆrÌ|ô­)HÔ RàG‰M‹å‰%Ä[\hô~“î@Ì,Z³“³~ñá=Ðh`Åe,ƒÆ–I¾ñ©ø·c\e_/ZW “|ЬÄÞ€§²³ ÷C¾ ‰…Ô0•ž8rmßLçì‹´¾h +çÐíà` Ëå]¼ãOÁÌÄ»éè–ˆ]ÝN]ªËá½U&O‘Ê©E¬o©•Ÿ¹žÅ´òE–:D«)‹!ŒÒsþž®cågRVZ.D‰TÐçEî>h}ÊpϺn·ênÝO­p}· †²Ñ|~¢"x¨NK955ðöùhÄæD«OZ„c”·/AÂRt+=‘ož1à%]dò]¼vó÷4ª}nøƒ˜Ué—®³Œê ³ŒuÄÖa!#ø>H$Kèài«L‚ЮVÀ@`NœÂ"±"¬“ÜEJuEúR7ÿ5‡…ú\—suú©ø--€”(+aœé Uþ:žçÏŸ­Ü £eZ _þúvú?/„䬂GAá !V8E\A I#v)JÖ$õyôc4|ø†ÜÕócnú<†t]h%``’elê–h„Ðÿ®Æ¡\–p’±!`P‹ªAÞ'›ÓòV:Äéx;Ÿá™K;ùË)7éûèøÆÇ[—oüŒª¼ñIƒ‹Ï\Þî̃­òÃE[£­‰æ›´Lô´Š+e#˜8HŠp‰ [\¤ÝªK'/cñÕz7¼­¼àÊõh(üºM@í5 ¦[Œç“q‹°ÄU Y'ír(?ù>xˆÞ²º8ð‡·Á1ð·:h8s¥Ði3˜áÄ 8ƒª Od…(bG…UÅ‚G>ÚÇ'£î¿Íe(Ïô703åýnêÅ ·ò}Ã2¨x,?ΩNù3^”„å`L!!®`-&’Dz ‰¢m ÙËsnòÙ&Z'“nš/Vm¤àÍ;„]“סÎ8p( ý(;ƒš™òfœïGÂxë#Ë9¦ !cŸõ— Ôuaz•†½‰±ŽíL£AÉ}7ïÙÍdq%c©@ã3«­À£ÀÅ…7%®– €Ul®gQ¤.—ò³,‡,2Z¦Ð¸üáMѸËW xÔVJ!ãÁÅ` Ø⪂¤b$‘·ðW†ªüôÕ+Þ1à¦^†8åíØP0yÇý¿£nÅ;Ñœ¾ÃÝ–>å_’ )Ž–‰àÒ×-Ái2ƒL†/Ná‚…ÅF'(>Æ)¦ÏÃ/š„¦yezû ëê?a 7øD†ˆK!`ùs­€N•²²¼¤ðéö8&¬uÓúF`P³×üÀàÕc£26±Ó“e™'ãVÇ[¨ÛÔJ±üÎbU9ÞSÝ``ÉT1±ðr%)Ë©üÌåÈá#EfË⬀lõÅh± üa Ž㥌ž‘4•M²Êj”ßó­¸ ê4ðžMÝ8k­€óM×ßÏÓnVcÅÜwíÏÆÝôñY7üÎlŒI }\ó,&1A÷§F@YhYàÇAm]`šuò™i7öÍq×<U|ÒcæäŽ^7ôvì›XE&A‘B’Ô“©Òhdbž¨Á LóéÂV„€”}*=}^‰‹…^…‘¿Í·Îà¹Õ+Ñì ä§Î²PÙ—ƒYáðul;eÏu^@+ e´ÊŸæuüØÑ4Û%‹ó!q«/”gÖú÷îÄK¥!Q~I²RB@Œ# Ê_…DÐ"^QXé¬ÀZÚð{ÑÏÆ©D/\”ƒ°‚ìòôe¿zÕÍœ™Á9ƒ˜ò JiUy@¯úÎ, GD Þg{z!)ú`Ýıgc_™r3ØÙÈi>îD[±a…;þ¼ïw+0¸7ôT&¥‹JŒü[ò%_å ·¶Àe}˜V€Ô‹àzdšþË)³D<3–ߣqì(H"½w— œÅ„“¥ÇÖ¡ÇÛÎ9}“Þh-€]»wçŠau†AÅ/"WR…T¼×Bù™×r~ `r[}±æ¿£Ã÷û#·)°^(™;"gØcÀÀ=žŠO Dÿ#Ê“XQ‡<å§{¥ß·ŸY|+‚‚e (/(t‡ôÈÇ'ø¦,’¨]ñ­ÎïÁ~õ¯t—ÿõUwö ޼Z³G^ º­8~èV>^þ÷ØWðBÓ­x×½Bÿ»¥¼>-ŸE»¼çFË&°_Í}.Mêr«6¯t½X€Be8{þŒ›[Õt+ߊï"`Y³tTG˜/ï—q†õžLã” yËŸ­:-7餰¾lŠq)«O’ÁAj/]ZÇ{8ˆFå,fU8=Èñ”ó0휺VP•m»æÿC½ÅýÓÿýwJç:𞸓•-¤‹è²]€ôèwäÐaZ{ ë[N¸K\¹·Á–ô±kxñÌ ÈìÈTñªzû/DÁ™G]Õžèô¿éÞòÖ·I•~tôŠ;Œv°’á:q⸽ü ÏËÊ?{?ãád×¶èö£ßŸy@Á@A¢Sô1ó ÁcZ¤+ <LB¿Hª eòìÝÕíÖüô*wåÓcîâ‹gݪ™unÞÄ›ñe®7¿üôe7}jã |­.f¢n0UÎ!…›Åfr¡øXЙœÄ¹†OŒ»ÙãX¢;Ýpk1XÖÀâ>{æsñ*º"ƒ~ç¦+±Y LDYXf2?a™°(82“±5 ’oÀµt®,ÔxHYÕH1QRú¢N%ŠDÁKº áF!¶&Ÿ…˜¹8EJëÑ èÒÝVr#ž%0ÄUmÖôw|ÿ÷—”ŸpÊåZöÉ+uÚ­à6÷WìÇIÀ»¯~õ+î…ç_ÀjÃd1EJŒ8Ï ìı š—ÅokT©,ï­òŸÁWXÑGOÜìí¦ò§e^åî¼ë.¹”Dqxðç#ßüº{ô[ßr_ûÚ×ÝSÏ<'‹SØoåö]U¡£ðˆ{.”µ’SÒ)~ £éTù•¯¥.E²ëÙÐåÖ|ë>7á®<…³.NÈFn*aÓó¾Ipåsh®¿ØtCß‹•…0r]}`Nþ¼‚!`±õ¾™ÍôaŒì?…#αqƇâÏ5ÜêÃn`5Ì#Ó.]¾ä&û&e¶dÅ50Ïï[z ˆ*«Üó"c8ÍËGðàZžRº%Ð2[|Öô`T„OÈW¼ŒáëAÿßDc³²Qè¥Iw‡‹rŸ€¯  ("ÃÓm”²“5ù䓺ì¼K®}ø¿uO>ñ¸û…þ|ŠÖgWc1.kTYÔO3¨RþÏÆ«x§.y|O)ã8øQGK’4¾÷}?*׃>è+®ïÐý­þ”ɆÒãÞ£ðÐ%਒è!Ù_U~òP>)bœxiZˆwaüªŸt“wöbmÀ˜;}¼éÖ¬X#oi1=41ä.=Ó†0ÐÕ ¼ãØtýõ<Ô”·:sŸ?5ƒì‹Écxó`sÞŠ!7¼j¥±Î·³¤âNŠÂ¬Fë‚›—ä;¢ÉÀ°UAÆÅÕpøqF(‚£x4¼¬/Û P¾òlAÅ£ã—Ö‹,TþØ:WzƒëFß¿±‹­øwb@ÝÀ ø`gSgÖµÛ° ;NsŽr˜{Wár–§·53ØI^Ú h1©ÂtRÅ©¢­‚“®.MÂáƒ5‹’ÓM7—âi¤Ž÷Ç?þq÷ÜsÏa# þîÁ¨P#‘/2Ò·€TмT²Ê‘­ –Ñ<›¬È £WØõí^å®}Kn?뮬@s}­LnF3‘Íõ+/]qS‡1>A—p1î–›åv]\Ó˜§Â®Zå†7 ÇgæèÕÑQ7Åwx9¿©!«i|Äñ­+cðqã¢ØLЪa˜¨¬‡ð†Žizï '®Òiâ ê°#¬ßòš!‘yI>Ët6Ét=XšìÃÖ`@° ]™Éç›rĸoD 4=.ŽIêØ5Z+­Üf›B¥¡Œvj”ÆúÛwp0£3—Ó‡ ¬rÈLS¥T<õ«ð«à¤«K³ù9Š'”qU Ž/Ù\Ã)«¿ýÛõ­ïCÿoCÜIYñϘ’CGÁG¡¥cØ$y  Â!0¢)¯òk¾Ý˜s_ù·±¥c£ÿáš;ulÊ­l c”~…v«Ðg_sÛœgñ‘Î|tõt»!¼múpÐhÿ,-F‹kŠÄúŸÂy|TüfWÓumĨÿü)Fìzˆ£^iæôEÑì͆K*—¾ðùèæ ¬x "¬ºŒhP< :Cã&|B\<5@‚ìºq0Qcgh°; w­œu˜ÚìáŽÔ…ÍÖtx¨G“û.ÝX5¶oßT§kÊN|³W2íÇ*¥Í´Š® NÚº´4ŸªolCì¤,ç·~ë·ðm6lL¹ëÓ±Už‰>kúúöDšYà„–ÄßCY ‡ ¿ÂÏhL”Eš®xêW¥+½âÁç`æÚ]h |iÊ]x좻zvԭ¸ßPÜ:Ê‹õÏKß>ÒħÆàš„‘¸2†³M×½]ÐÔ¿}Há”lLž¢ó¼Wi®‡B’·Wq¯£ÄWUBÆõžZÞþ,"߀«©ò3ýŽÄÎ9kqëx*-q¢;ññO|ÜÍmjb½?çh½‰LE‰¸*qxø³a2ö„ µ:+€6UyfÃ)Ž 2á6¬x)LóC:›çÃ?Ò>úèšp—÷ÃàõÊ› ¯ÊÏ:ç´ÐØøšùnzÍ´|ZG÷a"¿ õ@"Öd¢å ¯II+ d\‰§äŠoi5œâ…¸:©zÄí¢ ÒÞÒY#ÂxÆq]@?^¤S `+kÎ_IZ(7™©Sjº.•;‰…¶sÃÃ+Ý{éêÊUÇGE¼„“S¦œb’(‡»8iªòàðØcÊÕÊ£ ·°¼{:Ö¬^ƒíÉáKÇ­ˆ%Hn @ ¡ƒHÉt€/(óUò*üºü”æPÅ€:Z®äò_^O<ù„ ŽŽMº&¾SÝuø¡áçª!d*ìÄÒ¦+ÄS¦èT05L_ˆ‘¤8„Ñh(®…kX}âÒi\SxjÄ£,ì<,æÃKaÁ—&'î“kÄÙòœÒý)½ò²ø ¬¤.E£Ái4$1â²~Y_„+ÆéçUX BËébœ˜A‹|K žÂ/ 7Ù ÀX ™<ׄB^XÓv @ÙÌßǧç05ÍëäIdܡ۹…mãÄÈJåçù*]ÝÛ¹’h UüUùÉŠëù—Â5úaëšx°èZ]Âþù±¯cÇ>[ÕR7”[+ŒÓ©ðkð(Ø£L§°*?å˸²4¹Ä,[~Zv d:“ —«Ó ë Ôƒ(ZäÇ@P8Ëa!%ò&Dâ<ÿŒ[`>/ánUó',E<óCܾ0(Ø<ŒêÁ`àä,D]ë¸mØ-[–:i´+€Šn ^ªˆ-P…[ïTù™ÅñŠ5&ûŽƒ½Xõ¶jÅJ4¬û$>p{Û'žÄF#5î” “³• [Á"ñµ&‡ð×ÔŠÝ’­)ÓÇÿP^¾ýIÁo º†A ±Fõž*½Å‰£Å%̆%Ž ,–Pà/2"q?˜gñY@CNŽâVJPÚÐ BõÌ})Èú]kB+K£'qŒÄ¯ ˜Ëhh _Ã0Ï€èt¿@]±ÚTE™´J¡ËXK;ÕÁ‚ˆùäØåÃC ¬ŒÃN¸iŒø^Á!Wÿ혜h+@ÖŠ•% ¡ç›B£QùI¬¸i˜q:MBã>u‰~5“ ;ä+ÊÂ˨1ZÝñðƒORFø¢¨6 ‰’~Gâ'­?C*AâZ|;†¥„ m¡ÕVG‚Û‚'¥iù‰­Îc›0YÅ‰ÌøLüõsZxïoï+vVš:½—ÈeWż >Ÿ·?µê€\Yæëïê¸Õ¡5pÕ¹ñǧݰ9…­³Ñ©üÈsGDêÞ©ü"x¬A¶ˆ£ø‘A&PÂÆ¤:¢i¾R6ü°Ç3;-F€xèAÀk ®÷2¹_æ¬ìmQ,r’xŒ‘Ê» ¨To¤³|51'©ÀӢؒh–âçèK刌øÙd9D”kf'1½÷Ú9­õË9o SÝe(l5¦ëœÕK†ë± 'KhÀó V®Š÷)œ¤'—Ì+£‘µ5°’çÂCï›1@øoÆåØ+ù¸¥JŸº‹Ê`›ÿг¬>  k—‘-8qÑìGyõÃ6\Ú*clÐYtR[<š¦ÆF>¬GDê °Ž—ÂOaD°–¤Àx„Å9Ô:~G€ëx\˜xŠ®SoåªeØ6Q ª~=ÁV¬¨Ò›zÊr*‡Äìª PŸoF¾:_’ás† ¯w¥»†M0“pôÎÔ›>>å†káñ oq‰ìÄ€ÍÑâ0L=µ0âVÁ™ÖâÙ$¨î§| JTd™.`2 ÀÛ«jhö„J¬:/7ÂiÓ‚Ï„444t:µªxZn‰û (/2"¡8¤cØ'3V8Âªà–ž•x{¿Šh©ãh<úŒŸkç—˜¸yjÕð ÜVšAJ9Ÿ8 ·p·m{y`¡œ² Uà4¾Ìæûögž Y°²‘†­•Cƒ®å¯^“%¡.\s+OXÅã¶ÓçFa¯’‹7'•6È9þ–æSÉ ¦K¥ã:ˆ¸ ŠÎ*´âÄâÅ@Yá”Æ”S  a W<áxÑ3l%‰?YX*?ÅËâ"Ñâ×8~1ˆ§MÀ…õ"l®Â6ê ë×b 5Ž?צ“¡é<È-Û‘L.”sÖt¬Ê(TÁs<«p~+ý^kÇÖ@/Zcl œnº«ØI7õ*–ËþК„”VÈ!že|R ùlsϗ¦pú6Žh½ ’Z#°‘¾-_Í/æ0Ä¡rzod„@ZœxïZ.‹O. ²¬cH$:åüÈß§Vò“؇݄¡O[z{eø™Œ)*œ)<"$UŽœ·’¯aÔDO]¢[Wf™ ÉýF%Ö{±tš¿f'¾ bŽ–É9¸’+OÁ0¤àëÉ3LDq?s0†³ý¿‰&¿Ç‘i8›oíæÕ˜)Æ"WPžºuök°Wà7?X!«l.œÃ!µ‡ÝÑ#G×µðˆ{îq9súŒã•óç¢Üëæ"}Ž6sê[]y-n‹XŒÂχ¶ ×ÂÃ’æÜûßÿ~÷÷õ’uþr¶©< =}×IT,*•G„ófZà3°Äöïw×xü·qªðT ô³ï·Ñ]¼rÕÀ!ŸwS¯4Ýð»ññ­ ¾ý©V8É–:Å᫨…À"·K·¸I˜yäò6hs˜ÊêÅ÷²¥€rt5ZDÀ`~äË{ NÞ¦z?ªˆi±µe¤xªÝ)^dŠ€âªqc@±[|)S‚–ƒ‘¡<ñ¸‰¦>¿è0ßß@?͆UÒäOëpVVj¡4kfæÝM{oÒ`ô)ÇjÖ­Ûàx½;WSÅdëàÉ's?ú˜{øËw´x-Î,´›‡b¦ ´yúyŽVIót>oÿ”/•:ç~ø½?âvìܧývÄy©Kyña¼ðüóîÑoË=ò¯Ë¶àv–—egEo@…_íÇñÛX>ñöϾŠÏ^¡5ÀˆØc£4sú”—BFŠ·ÆÂ-„ƒ ¥ò¦xÊW}…«_×t Æì1 ÐÍ]‘:;~xTu^n¤“ÀÀ¿d8ÚåÉbUÕAJ›ÅU úžß ¾ÔÜÁEÓ¿|¬^»«DWbÃqáolQä7…4Qú½}ߥø|"<¥é7?$×OþÔ‡Ý{ÞùC-F"åWõ9ð¯“x­H•¨ŽáRãÒRò#©c>÷Ü{o .Åse!ìŽ;Âú#?#ß ø»ç§ÜK/¶Ûwí¥på (|£ß]º2êÆŽ¡5ð ½<íV¼c8X¤ÐªP”œ¼ä`¥’wQêw@bQd%`0ZøŽëdÆ85 ©òÍ´„‚eP<õ «RÐàÆ` øê‹, <ò Œe@=u…M%"/2¾^Ü<0íf¡ÉîY‹/êPñ{aä+xø@%†Û·ïöêÄy¤ðgçÎ\ëÜìr]*W2VqªÞܧ]!ªxäèR¾HÉÀ°uë6·r¬âò±yÙ4¶ ØtkkŒQP6¬]í®ŽõKk`ü‰&‰à Å—VBÊXx‚”DSk}’æò3DsWçÜÔ|ãàUù2«VËNúdcŠ ’í†"óÜ„:·s÷H]r)r›v(—Ú]Ç@D·¥Íá"UäVþ§d¸œ~®¹üV¬¸ãŽ}‹V~Í/g`4>ŠÌ 2]8ˆñKWÑ8ŠOtcñ›•Ãïå§ÅËrê4ÜF𫨰fË@7þø(ˆ]ýuV+Ÿ!H}7ÀVNµ:Ÿ[mƒÛrëp!×ô«Snüe#ûpÃXð%_6Ò3÷Ãve¦•nE`ÝA ¤Ý]ñqN«ØÄk縸“nï` @ÎÐäò_ЩRç @XŽþСƒ-è´Ò##{[àí9þ¤i÷`Ř·CHÞë16ÐÀü0ÇƾÕt3XD´òýhR†éÂvåjM9tžDØVª§¼ˆ/oÒö Búš¬[˜äUÊÉÙ‚s—®¸I'=ƒþÛÊw¹Æëu}­-¡¯}ñ¤ûÞQÓø×¹ª3A-™Ÿ7Pæ¬CS|NóR ÄX°eÓ<ÅÇ3àW¹|wl«7â3ixFtÒž yZÙ2Å(?ç` fkvrŸƒÉL\¬ãLU'ngE‹£Úg!"TâQ§`%DDæƒ{¢b @nQEß*8ËÅ´ÑÑúÁâù™ˆGšä. - ĺÕ8O nú>²óc8lD¢óü¡Tgó²I|j |r"˸w:*DéD$.ÿ«qÉŒaóøŒûÒ„»ö0”ÿ¦ôfúäû~[±cnÞÐñÙ™LyïÙ?.¶Žä×NÜõ{ÿRæö û_}õ@[º>¬T}ÍfÚ–¦a>oÿ*%=V±`j¦}‘ŽyÎ`íÀ3Ï>Ó§f°ðª6)ûÒ£ü$9^};Ñ×üa|o ]`c8eãšQG[—ùš&¾ý°+_ 5‰7`÷—«À¦Oθ©§§ÜäaààÐY³¿_@—Ä`GHµŽŒåQP鎃a$ŒÆAüšæ¿ àçãð¸>æFFFÜݯ»ÛÝzëmîö;îpûpuºgŸ2Ùv@y­Ã§ÇªtFË3¿ãvËb3=q«Öü§/|Á½ï‡ßå¶c$TNÞµËíÞ³ÇíÙ³ñqDU~ ÿú׿î&Æ;3&Tpv=dÔeSǾá(x\Á糸kŒÊ\õ£ƒ®g ^Ï”ŸÕ“x™j…+CõI§¸ Ëù)ÿN³­Y9 „]€NòJø,&Ê*4ºXÏ*S¶™Ksnâ;ãqdŸ­ï•˜Ò“ ;¹&M†GÙ: …² vãDEáçÇ­ìØe'TïÙí¶ãpÚmø'gŸØ‡ßOz5h÷êî±G¿­ÑJÓæÍ•i Ih1ª a6_šª¼¨p\Å—sc)}ú»ß•+Mg˃_ Ú²uK0;×L«àׄuÕ¿ð)ymœM=OΜKÁñƒ©É©–éAåcý­[¶Úè¢Ã-`>«x>k°îŸgèGgù`ÙûçMò¿£›Ü+–qJ`´µá;… w„R2Q$UVK³Øþ¿òª:@Ó—Ãç`ÏÄTýɰ# ð ½|ä¤Èê0§lÈ‹BåKÒ“Ò¥Ï^qRxB–.„F´œ™Ç2#(¬n(J‹O‚*…Öæ€ÉBèY'¥…–\`XŠ'È ¸ /)[+Þ‰.ÁKÓnê;øì¦ÿc·ëÿ9=Ë…ck0@Øè÷­]ôJUš”máÊ_âóZl`Ã| `‰Ý‚ @§åÈŠv´§OŸj‡²dé|æ“Püqœüƒá=!ÂÇCWüWý®oO¨"ñ™Š¶#â% 3g”Ž8Ö)\}›6ï0 FFUΤ… = wÖxôZ¶š]ŠoãR4…°89>-°A@ëÆm=˜Šív`¬æÆi8S>‹ðä´ðyùÕX¯Ïu©<œ“2‚E»t-fËý KZê5,ܲ€\ ¤Áâp‡Þ… 8§é5pSMÌ)ËÈ>øØÏÇ ËÐÛÐÏ¿“mÿP• •ƬԠPÜ× ìEZ°R"*®R1µ P&’7¯¤_³V?ð7}¢%ª4- XÞ¹ô ¬­¡·ãl†W±:­ät º J<õç2öhL`l`- A?WºçÖUï(fJ³< ­[—v K©b¾<%^W~î»sË»€ @2#žÆ°¤x}EÖò ÜÛpƒ÷ö»®!<\û|)Œ ‘ü„׿Uâ(>‚âҸ¯‡/eKÁqÚr!ئk\ï÷XRlF?zß–žubãä—º4ñFšV*ˆg* ”£ï&œâ´¡ßM=…%ÂûGK€Ý‚LNž™t§Î¡K€Bž­ ¢<Þ„qˆMÒ¡iÑ ‡%Îg @§™ß0@[_}µÓ²ÏS:ã2À–¯Ç ¾}}nð¡~×»1ÙñGî|ºúì5\Õ °¥Q\ « Ï·ŠGGpÜG´%?޹ÃñÞªv B`Le†ã­‹¢iš4N$†>£é ³t (®ÄÃL€å§øäeœ ”ðHËâå3oîw=;°zó»8 ƒƒýØ£Ñ.ôÔ!|üå ŽvãØ¦ õPPªð¸Á²â_D,XÞ}òSŸÂá4+åt)`#‡}âc6\ÆÎ3)Ïâï.^¼èŽ:äŽà³áÜ1ÈJ?‰ƒ@ÏŸÃñËhâU9Îçsݾ¬àãò”ÿ­Cèç«âSšø°Õœl”aºD&¨b(Ì|£Zâk\ýÆø²:½/Ÿ cr üÑ.@š?ËJ§ Š`|ñ*;Å!ÃgØ@À•VQ<.caKLˆŽñLÍ26 Ù²éÝÙåzÖô¹Éš8Úq>wt fÎa·ðq´ÎNºÕ0«‡9Ça"èŠÖ9ŽÛn¿]Öp}¿u:xHŸ§ÿÄ:~ã‚ÓÛÇŽ…¼žÄ‰À§ý³%lNóiƒÞQrÖtD¹LHUßxý÷|Îó»Û?¨ï}[)w5Rgau|2` PÙÇQÙÇOwû÷p/¼ü ž>š„xVƒ ¸Æ¸õ~Q¯¼–#‚?!Ò¾hŒ #‘éa6€ò'8–žaÁI€>»Hº®OY‚_ÕV°Š2í[s]8€ÊJ§e±aCZÒ³‘Ò…{‹IB«7W2ló£y§4iÜ–WY'àuQéßÐçz7£5ðÜ4Œd]éþ»Ð8Œ± WÑœr«1e¨c|ósaQÛ†yíf½(—ì·ózóCµ°ã ?þä'Ýg?ûÙ–´ êä¡n§°ÎT­ÑÿÁw¾«í=mÜ´Éñº÷þW Ã'>ñ ÷Ëÿà—]Ï=³Pþ~4©Ù@Á%ra‰JÌUkª£ RHš@Ö,½mDy)ŸÀ¦ÅcºuJga Æ6(…C—,4nÞþ1kMÓJѪˆp`’ÎÆeýŠq „±>œ…#Ý+ŒÄChDnè3 ?¤(E¨¤$`b'Èú£Âš&§qŧoùÛ°Åé4,erâGT>¬ŠT´Œ¦ ¤‹Rኧy§Â”¿Y,<·ôZO„+›Nx SúÐÄr)¸¥ ‹®9׿¯× ½Ý5h¼ î‰~ì-à´!g Îáë>Í6Ífµ{d„Þ’¸>nÓÎÍçsàíxÙôôñ۴ʰU®J¤&œFß(u{öìu›q2ŠøÀ>€c¡qb ¶“–\˜¬ ©€ªp’P,! €‹‚)óAÖ„ Ÿ|I“£Ó<+H,8 ¶|,¿ Úä6ŠûÓ{g‘È–|åÂýXD`¼)b Ôz)“I ið…¾bУ ùQf ‰é¡„G˜"Á×ûZ7oÂõ:ÌM¼ˆnŽõë» 3}M|æ ‹‘æeØmظõbò4ió ¶o ¿¥<È–oAÀ2XÊ0Oé¹x©u ÀFí´X÷kÿð×\×e =Ùtr0&…„ž!c|ÖÏZB”UMŠ…Qˆ¯0Vù™”Ò¥ñ‚܇˜®86_ kzŠ£éZ,MWþ¥x@R Pžkù]T0/ø9¾L§3ÍFÕfxzB‚S|F…·&„¸FÓ4µ< 6–—¥Ó°ÐØl ºýoDk÷~4ŸG«|Øh6šîüµËn*3 ȱ¦¥rÓ3í €~ p©òT>úø5~]ý£Ggó_ª5пüK¿,‡IL<޹Yòœ`±`›fñ” ÜûÞ€x¹Œ(AÏb~š@ºvNxIy( ãzYMW?å_×4­Ðò~¢âj" 0'Ҕܗ5ÄÀ ¥N”æÃ8Ñá™!À°â2‘ñ˜NœÛô—”!àˆgùŸJ”7¿´n€Ÿ;„–Ö‰8Ž ¤ƒKÕ`è<¶1·s;ñ[·  óœK] S˜Í9ö·–½ç=ïÁ‘aëÝÄA|îZ”È– -D`:F *¬ÄU”È  ¥ <3(>…$™b·ú)žÆ-­ ·r( /ö½yHˆÒšº().Ó °>9J<øŒS±Kâ.éüAfÊÀ¶´´, ¤œwŽ63 º±¤ÿ Xz€cÇ®z„´Ÿþ{¿û»îÑGÁ-´ajøç‚Ï>ó N§Í%•`;v.¸¡¦Ojd-|õ+_q÷Üs¯{àÁK•RáƒIi¿ûÎ;Ü_~õkn­€¾]\A´Šm” mÆŠ”Út)€Jb!*ñeIÅ ©U””‡² ?f| lm×2/Ë¡c ³œÁ±ìzå‚[@.ábm=)/øBÅC^ð/ÃÇ zN (ÁñP;r_yÂìý™ó ˆ¦å\¡Çå£aúÈKðxOªd¢Œädœ¥fPà™æ€ åËáÊ«]œõPGKú 71œ>ãxYðšÇIŸ/¿òŠ\UtÝa fõŽÃ‚rãu ŽE(kl¿&×”.È—6töœ1»°žÄ޾_zA®ÆaÆõØCÐ+3 shÿžÃ¾pºŽbæqÌ“‡0p­îû·ŠQJ›h/| 6J˜ŒJ4GŠRZ$ªRÅ·>“ˆÂ‹®@õqþjùtÂsÎÒ™t~:kú~4ßÀsj?Ù¼§­àš|O ¾„•™Ø24aÖKÄ÷¸ÊË`•î©”®Ù™a°îŠ%¶_q,Ì„‹{ Ù[£ ´ÆŸC“úU0NL'o\ÒßN_3\ÌåQåg @òrÂihÎÏÓÔ•‡Æ¡îd!~(²yaZZ½ ®„•s†éD˜Ñ7%Hº1M°‚’90¡äÅW?hM…O‰’ižeô˜¾@GÅŸxGœ}'ësÓø‚?bBÇSu¯ýkœ‚´z{#°úAì ÛÄBÑi¦á~¤`Ű÷”¾ý‰«øâãg–†>Ù꤄S\ÄéH'´Á aI’4Si&ÍÒ×ó¨ïÿgú®ðöç\ÅnAár]~¶nÛºlùÞ0€wxñâ¥e»Ñ”q¿i  п7i@(O]ªønã$ÍĽ€€”Øj@4”Ø„r‹‚ •i9+2]›9ƒO–}; ŸÃ@Öìl]møg<Έ°¿ÊÏR~e_ÔÇ¡}nû%¼ …f¹WID _LýE&•Šx$ÈL” %ãb4H~ °2y3]ð0q…güYLÿÉ>`'†–©ßɺ´}ûŽÚôÅ$^ëVðì¶±±k‹¹—yÐú£ ¤pqÚM<>îúvóðH<•òÂ.Z›¨¹„B¥oŠî‰È $‰o^ (-¥ ¹ò#~ÈFPÉf¾ô3çfÝå?ºêæòC™Ýν7CÙ‡Üwÿ6º˜‘{eßòûßùn7‹øËèJ=þè£nìscnvl†€F€Iœ‚´Ü’ `ÝÛ_q,òaš†ƒ¯Q!“t“À Ö¹EdXãLOóÒ4òË8®mbo€ ï á¡¡Šdˆ—´cç_aSö\}å6åðËk·êXÀÀA´ð±Uäø±¤rm@ÀJ³…´FC˜ƒz-Bj ðÁOÊ[ä|ð˜ŸsWÿlÜunÈèó|­¿§Ï}õٱج½€(4z\Ô²ߜ۹s·ûŸÿ¬;÷õs8Yc#œ&µŠÂⱜT2FbëHßÀ¦`’®ñÐü ®ÀÈ fÜÓŠgàþù„ŠQ8QMXpB\~=9]¸Gé=•º¾­•x)ýªU€å¡JÖ¶ÅŠcG¦o„ÅA*7DVö”0•n4y¤åKP(´Ö¤Šàšˆ “t –åMß®ôÇòõ$­¿È ÙÇE_¾[¿i³;‚·>¦Ú‚J¾íí߇q€Uòñ ~?ñÐý’ö©?ú¤ûÀý¸ëéëw;w¸]h ¼‚éÒ©—§qþ~!"±¼¼O)~ƒH¸$iéb$óö'ÓG}…‹o€&i7—ËI¤¼ã=ɨøcÓ¿ nÇïðã¡Ëå*9Û7ür†”gÕçÀó7®™O”o>¶š2€u#˜`­Ø, $”/Õ}I4]*½¤3ã*# ‰Å‹„<È7*SȃNyÑWáÖX8’¦Ïº®3 ·~í:7ƒM,üÊ2Wª½û½?Š/&o…ò¹+XÛ~ ».·¡uðò Ϻý¯¼ìþâ?|8ïÇ”éV²ív‡tã˜9ˆ@‹móK›þÈŸ·$÷¢ø¼_ùGZ¼ý˜N`p$$\ó`8€"A•ǰ:¶e°òTÜàsÁÏÔ!á±-0š—/¿vƒÑIqZ¢Ë¹€™U€–’,*{ŽUý·ÂÃÎ.L[3‡±.àÆpÎ|ì×jÖAK³4T W2ªt’!Ã6ÄÅüˆÐ"I‹ ba!<{…Aë}ͺurvâ0N‘¹ã{^ïúú{]Ÿ[?°VÆ=ˆÎ®Àž[÷a-úUwǧÀñi+†Wº!œŒÓèk¸ñ œ3Ds˜Eµ Š/YjA!ÓÔ1œÒ)â(Ÿà[Ra¡ˆšŽ¸Ø]ò ©‰éʈ×!Äý´TÑ犿&Îpa)þŽmÛ]ƒ«þ0P娂Z…ú9‹3(ùAÒåv\M˜:ûrNÓæ_rÀqö[æëxž_áTëð=N$+aôÚ¨¬h.á)«š[,8¦þÖ­w½xÓñKHSS“ø<õ¸Û†AB.Ã~î™§Ý›î3¶àCÀé™l¸¹ Ðõiá‘+Ë©7 *žÀC©6xQ`Gý€.™NƒA?àˆ±±åQÆE,ÒE>ÌÿL… ‹OWÂPîÀ²ÝË—k´l~îçÞýć~Rê“uv‡ØòZ1 8Íêäñ2¶rK„ç³Ø'_B×qÿ?Öq£OñeȌʳŽýÔBKEÁ\ÂL«Œ ¢<´PR] ŒI[p”ÀçÇX]U‹þ-.î/ïÂ`ßPT~nemâ#(ßþÖ#îßæßÉxÀÏÿÂ/¸»«WGqÞZYpñÂytfŸ`núx eM(?,§„CÙ&†&³¬Ó·À%ŒåGß\ ©eÆäé‘GÈMé%8 xÔRXËá“å—sþ3¯ VüɨàTA ‰Èàû?ð£Ä/õðº÷¾ûfiù¢¢œò”ë£0Ç §zl8_ix;q‹9¤“AùP¥ÔUðNn¢ Çò<‹‘êÔýÄ?(ÊO¸¶,6¢Ây½éÞ{=5@§Nt}ûQ÷ÔwžtÏ`«%·[rê«cÿïÿoïM€5;®ó°ûÖÙ÷}3 @€@‚›R%Ú2i+RÙUV1”KI\¶R,³R%§bYޤ¸Ë4-'U)—³D‹)’Í(rR”,YVÜI€Á2û`ö}{û›|ßé>}O÷í¾÷ÿß¼7ó°ß»ÿí>}Îéåžsnß^w€ïQ<¬ñoLT#VaKiPQØ(oôRèÇEyìl P =-|Î)L„U~W†>,7ÀHK¿ç”ÇqÊþ®ÃVØ£CÕí›7Ðä•zãø˜I@CË9ÜR}Õšu0£ÕÊÕhñ Õ611!ûØsëô»ø<˜›¬æÆ‡eÓ §PÈLPþZ™%›>ë’©à7 å8ŠW<³oÀ4ºö€Z¼‹ßçC+‡0Qxx$¾Ùû/cþPþÿ®` sZš|¨Ó-Íú-8›O>¤í?”§ƒV2›‡Rù?ñ±UGŽmg‚ØÝ‹´€&Ü0q/wUVËÃ*»…«ÿò妸‘X£‹÷”/{»ü'~B. ûo}á Õ?ÿõ&{´— ãû{ÄŸ‡u¾}öN5ã¥Vý9 R¼ú›ü”¹¬àè㙾†äÍ­Æ#Í€ ÉK‡ic6ÞNS/A€ÁoÙS|Tˆd|ê<9S\æÿ2ÌDG…ðúÕ+Õ gû=ýž÷U×Ñ4Ý‹&ÿƒÉFCèa¾‹Ï6*=¹à›‹Ÿb41exˆ;(kµP}Óì†,)n¦ãO£WóŒ»zz —Ãà³ÏÂjfDŸÄpïBÑïì9¼øÑü§[ŽoþýûÆÄÏŸ6°} á–a†áýð÷d¸Àm1Ý=€TûÍ,é¹!BÚ$EÏüû|ÓJyæ ãÚòÀÊþØÏüŒì)ÀCJŽ‚¨©;ñ6x–yêy4ŸÅ^ÂÛ 4Ôb*‘zp"ˆQŒx仞µs8uX|ÊKÁ ˧xb´a°š[;[MÜœ¨Öc‰=Ú—1ä·KJwbú¿ýÉO¡UµßùƒÈ5»Ò`,®ÉÛŸ+)ùÙpF‚ch÷0NÜõ…UåGaXq¸[ª"*SRrwJ JÒ0N.æÌ;õø8 *3ÜP÷wRKœæÅ³›CcpâeðyC·w÷žj­á‹p[ÓÎÝ c˜n/ýdþ[Ì…@ÌÇ=2éÕ••§¦¤î šNCxƒÝ‹³é±yÛæ†i ›6n¨Î]À·ñ¥[ÕÄצªU?Ž3ä¸h¥_#@…¡îPUoÁ&6 ’$~œ»‹ÏÂɰLù+è‡à¼(¿ ޵@çÝÅèD‡Xv·Zö¾áêÖÿs«Ú»oŸô‰œ{ýTµzÝ:YÙæ  6²˜›™ƒ¢ß¬¾ó­oÊ›pçî}Òb:öt57:W­|ë™fYpãêž ûÌH£Ö  { B¼ÁX.ÎÃ/„5~}í…8‰r?­µùϬ̺ïøÛ°~CµU—Úú‚ÍÌ ÙUpëP‡tb´ 8½‚{ù>çZô·Wþ½âe @©€V¡º(½­st<.)u¥MK|KyS8¿ËnÓcÑéå…ˆãå‡_yµš~gØ>L QOôxÁOýLZô‚ªúò† 4êÜ»ÕäóxãcÜ}š KqˆÝì¨Îã›ýúä |‹3QMÞœóÑË¡¸“ßÇdžW¤¹üø±jæùçª Œ¤ˆ@MÝÃ/¾XýÑ~©º‰YoâIª¡êÜéã8ºêL5°º}C!mÊo³„  âßùÃIì°;]-/N_:ñ2ÆO²oh´¾CÓÝçßßêâ ¯h–]‰S~LꊚÃ@£ãç‘|Ÿë£Œ²’ný%Èþ‡¦ å8 Ót&3ˆÜ‚ÎïÔ1 é² ßTÉú¥S|¡¤n†dJ|çcØPrÃÃñ›uÆzií¯_Á°àWÇ«áÝè$…$kŸ“>õãÎg#óg? ­»²›|oüoM8ÅÇ”Ôµè‡Øuh‡¤Ïür8I›«!MF´¸è튩ÆÿÍ$†¤ÎW?þ86By¥úî·¿U½zø%édSWšù-xûOT;ðö?sú&½TÍí@ÀcqNóäNËÍ»õ#8w§.¿ˆ7(tî^B‡â+ØJë}NÜ¢VÀÒ€8¡—´”¯Ü‚K›íé=ŽÀ5c„‰¡…GþaÔð2 ­+;æ¿ Ûl¯@¨––xf [Æ+?¦•¸•«V%:ØFWcÕ¾Ii‘ú2ÕàÈ·Ÿ£½¸~Ó¶<ÄX†]þœRŸÅ”ÔmÄf éÒ>Ë›a"ŒæyìÚ±]Æ„y~;â–=1‚O 䌘iå‡~,5’%ʹNñ'¨øœþ€ïÒµkVW;ÞQ­—f&ðˆÇž|’ O*ÿú$ˆ° 'àæÆ¿½.£!ܖм93uÁoÐV{qÑ|ï¹oVçðæŸÝŠÎϟľ¢´.A'|ž$oÖOêfö:îhh ãSytæ¹˺{jGt#?˵\x›k)TI À%pïñ·¼ýÁ’uåQ˜h.næòã—›°uÅþ–Ohjº}bOi˺:¥Ø×¦˜¶îr;víìB)Æ÷ò‰AâÈXå,1°8ÅÔ}DéMÒå]ñ»÷”Ò+ñÎá³cëø±ãi²!<‚]ƒ¬0P¦Ö¬\]mD'ÚÌ+˜ø:öÄ®Aƒ)ªDÁy‡A5¨ò> È­€ÙësòÆŸøÎ¤Ûto%N@ÙÅß(ŠϨçßÇKö4„Ñ ®c½ýÙô?æPرv`l?ª”ÍÁô·m€8_yöÙê÷¾øÅêɧžÂš‰½JÖ×]õª—©ï»hÔA3(u© @'•ßk'DNñR~NqsÖcø—ðýË-ÁS|åÓ«ø“ÿðÇ2´¥té];k85®ªvAQhxbÌ$VØ­øÀ(d=ç¡% RŤÅç|'|ð{rçÁíÕFtƉSZªÉŸ<ýD0li§º1 õîÃ8“} wª 8ûâëÐöuÞ­æÖ`o€ƒødx7–FÀ°§džo\Ïe T ‹ .ë‚ð»Sø½›á•ÃÕòáeÕ! 7=y¢ºüòel´9Q £_`9Në•ÉE‰åßÿ8–¯ð÷Èš1™4ò% 5&B„æ¿wiÓ;æz¬ZµR£ë;øM¡%ÔæŽ¡³úïÿ½¿'(2}ãüoÃçÕ;ð õä;ßYõ3oÿd»ËíY¤€mº­À"ZI!-ŽúKJªñ¼seZêž{î;Õ3ïŸÌ²ú‰ŸüIœêó^Œ]CR{t6ÿþþ •Šs¬ÓêŠØW=±—ÐlžÄ°àè#òe–ðÁ‡Ôð“€’èõ@ù08}f†c¦šzyÊ)>äk5¾#wîÚ&­ ‡Kzï‚×0S‡!ÑÁ£„þN%Àçv们êãuwJ¦úÝÛX4´j¨‰¹Õ„gÂØ5 ! ðÊ—£$pœ9È6åàzðÄ{:¥˜Fà2'D+dâ›Ø¡è4> Þ9Šý¸ðÊ¥’Wî¬g7ëÌëK’×<~Ç2„8ÛôgÝsº¯<¿ô¿mPšŸ›˜gñç¾+Wõ¯Sb6aý§^óÛ}ë¶­nÝ^mǧäNt*oGŸƒ|Γ:qµ‡«{0Š³Ø®a¬â0ñ4Ü–¡ùâ^¹œ?…;×|‡/ð¢ã¤±±ýÕ¡GU?öxõØ;ÞQí«và¡æÆU5?Ï~ùËI¶!tÆ¥ÀD¡°½º†ùá3±sÐ70,øô°QÉ(]|;ë!•l!|3!O,š"Jä åeýZ£pwa|=ˆRƒÁàÒ  @åXoïã§NVN]Ä,<|Å3}j>9ˆ‡Täâ#«›þ€ù8IÞ¡LÂ,³xHiÞþ¦éϘýP(•5ò„ki9ªÝ5T„Î~.cW¥œcKšÇ{oذ^:x)Ûmnú~8 hÔ·,€¿a€gƒE©ÀqjêtËØ«eƱüÃèÅæõã[L7¹`eqÍÀX\ÎÏfšã2£íäÉS@-?<ÙøQ…J™òN$ÚÞg±aëã§ãYøŽ%;ä_>‘ €, wæá£XUÈóçéØÔßw6zÅwÐø7Èn –È=…š§Y2P.†‹x˜BI† ±I4x-ºú£;b`šÊÏd9IŒ#m PßÀF[îÇ–í0Ç1òsçÏîTSç'«è«}},+|þ˜&h°_”ÄIEÔ7â$ÉHþMt¬N¿¿ÒÓ¼¹’/_‡.™Æ'€©/&{ŽòÁÙ™¼Ná¯ËqW/.g(û½ºy&œë(ÁK:…Å÷êhM¹À‚ןýÙ÷À®÷GL füFð9ò‚Ǿžwçò·Zpת𖻋É4ÓÇ`l ø³hÚêür.ÝÅw½ú”;Ï,)¬tF%°F™”"QʱM€(;ÁI=mÍ@F©&v3q’°W~U8‰ö¼±`˜Ê·»,h¬SÞk×®«Þþèêêäë§«s0¬ã7Po§0ßâ)ôCìFBGZ”˜Y±ÐKB È$Æ‹sop¢p“ôÝЭÄ&{÷쩟ǷuÏmãg°ªQgÂáþÿðÓs!]ÎPÖ¤Èý*u.ã¥VÀI4 ïÝ%‚ÞCžÐT*HÛÝÞ àø¬Ý6z[jɰàa+:³¦Žàÿ‰jÃK²Ý6ðס™ËM%Öa<¿W2 ¤u=ÕÌ‹Ï:O½ðvåòÒî ¨,šS&$WÑ+e¯$r÷ýÞBÃÌÓŠBr ú+“-3—ÇçͧÁσ1¬Iàòäãè$¼}üvu‡µÌĤÇprΟI&/™ã à†; ’“lùßFØtÂÑ÷aºï &9iñS§,§¦»šÿJqî›·n¹/ e @¯)— C ž3¯cUZÿ.÷(ûçB ŽˆÁKYB¢ì‚“ƒ¸ËÎe.®Á°àÄ·0ãC¹¾‰É7=›™üÖ§ž¸[¡?iz 7wPâò)7=x•$(=Ù@Q$Lz$ì Hó% ãG”*iò  ñ/xž•/}±€Ë÷¶ò#uBw·Zƒúzû£V§q0ìëXÖ=ó¬}:‡×Ç0z?j{h:šXƒ!ù/§ÀÒô? &UÑqÏï£Sr 8Hðv Äûäá&­Ö©1†9ÉËf8XO;ÇzîPìûsŸïi@]€Q] (}€’R÷ ·Uxî,W¿Xé°±‹ï—W) A0\šµxÄy`ö\µ¦"¡¢Ó¢yܼ@¤åá%\·ìOctpçÙˆ`Œ ¢’ #B¤÷ˆp)Hþ5^à¸zZÏùlU b°B4+ƒ¤Ð#ñƲ) yØ€)ë—ö4Z‡Üåi[ΜEßF †¶‘¸|fòÚAºÜÚ{šË|}Óúa6D³+™œ56ÁiŒøÈtÛ±€³ƒ,fÊR4mD>}l+à\íïŰ3qûöm²"?ï`y5·Q_hlj»–‡gv‰·û¦¶é””ÚâX ÿ†Õ¤ã7*‡‡Bn2•趉1Þ6D3LR\¼ÕÂïb¢u㩬Ù¬?Šž(ü£?ZýÒ¯þjuÓp/¡’YѼèç™vÜý÷,„áfù]Å!óq½¼ýUŽJü­|•pj‰VŒ âÐ#åˆ61‚Ì *¢t‚–Ä&AåžSvÓ)3#µ à)l•·Þ•eLa  d0˜…6ÐqÉÖ> Ÿ2†TÙÙ{\DÖ„Gò÷@Á7cîÀ)t_}åZu3Ø2ާèpÖeäQ¨ÿæ À‹òüË¿ú?Gʯ±”ÝøqCÝzÊèKØ_á{Ï?_ýñýqu/¼GyÙûf|ö¨ë_qçs K¸ßV@Ž3–ƒŸÀ¶É9Ç¡¹¿û‹¿(««xpåC£8ã4¯\˜qýòáò ÎÑ#G«cGÈ,³ YÉ$  Íì= qL$Ü&_.âXF{vm €"-Lf…—ËyÒ®›Ô9$õ4 $–†‹Ù°xêç]ý¤C@ðF>ú ° ±\7ĵ°»>•g~”Ou>tà`5Éý 1,{gÙ¸Ö±£2,³¸Ä°j>F øÜ6½äv`Ø#o{$ŠiDÐf€Óyß÷þ÷Ëõ7~îçªÓ÷¿ñ‰ÿ §2y‹•hÞ(óm®×ôÛxh\d¡iTž¢ßÛ=åÛ Œ)ð(«Ýè¢Kiè4ŽK3¹7»îÏ®8_Ã"¢O|üã"( ³w™`¥N%Ll„¥R„¬ÀèÎüåƒç«9拵{E™_@Q9w°Š² ÉÆyjƃTQrwDl˜=䀀XÈÓ‰éh•…fD¶ ôùxy:®®ck 뢂Õ>÷òæWhÛÀØØ˜¢µÞ{y6Üâ{9öaP§ ¯a½³UѯË5ÿKð‹&~æ©ôöÐüæâùyPra®zò*¦`ÆŽ¯RqªŸÆ#.ááæo(´L¡€ÉÏCI"f[³¤EPþüc\ÀEm¨qHüذàÇ­Î^ùÙ)פ¶€š¬²Ðú ax´Ì!éóš{¾ŠÒu÷,²hm#`éù‚º¶Œø„¶ã³£äB•ú„g @Ÿ<ŠèÌlî¡)œ‡päwYÉ9¥ËÅ–‹o32KÌ Ël“L$·~jµ/i¯i1Ôc7Œƒ$ŠŸ[2‘ü)s‚×jF5 […W"Æi¼ÂˆZ„[ÅgXèðÃm ìfJG3ûl]$5™Híø|Åi™4 àœœit×½m+ðƒ…þ'Ë3äËïÁ_Ú»Ä2ßÒ(aÇðÈäÈ¢÷Û °´©ÿ*zòsurbŽíMéºò¨ƒAËžKCyÊf €…7¿R#Œ±Üå…ÑAcL}s'P¤¬<ÒÂL†éååÑáëÍßÒ([…é]¹Iµ p½«ÑÐ0ïDòa úN@ɧ7\EÙpyãYQ“ã„€\£êsHJü6á–×¼ÔG{2O”†"î%¥ìåDáݘÄÔOZ¹,”è-œúËÈ"Zx¿F€|r•ϱҜãFœt¥t§yËñe<qø‰‘‘‰ç÷)é)©¼Xá™È-P§¨Â\S 5ŒÕë˜Äèš(îÚSãA.–_âYf–N•Ù’3!h9\……;<î_îBÈV?[pÒ!HÉ%B8ª;o´ºø@ }d‹*Ð@Pã¨ÌDõ‚è¹Ù¹Â·:wjÆ1é˜”Óæß6$wìèÑέÀVa#7¡ÉñÍÁzH¶¥a˜H›bµq+Ñæà'Ž˲º…™ŠßfH¬xYFrüµäÂ÷?‚¼¤†ˆ¦pylP–G>Bg"Ro’‡9rÖ´ n©\NܾÂUéI¤0úÕH(,ÜáqÿÄr4Œ#Ì+¿úG†0º¬r“\TnëÅ8ÔsHx0¦®:Âo@v¶@ÛOYëÕ•Þþô‡ÿ¾“ÅÆ>'•ÒÊ%”+CÃPK Ö¦˜%šΣ“sއRþÃ_þåêO>)ãÿì…¥E,¹”¯Å{ 'ß”\vPæ!‡Ç (¸úÕÍŽòH"=åá‰"T¥×8NþÇÛ•ûíÉArHµö0¡'Â4ïIàð§Joã™'+7þ„ ¦ç{þÅ ¿C˜a A"—f~r@Å•8÷>ÉŒêÎñíÅ@ø$ôu"¶0åÇk>þ_ü4¶™ÛQñ šÝØXdÏØÞjlÿ~Ù‚Ž²×«ãöÿ×oýV':?ûá›cØ ½–;k,Ó’‚µKoý–WÛF ŸûÜçç“sAçì«öc:æC0 s®†ø¯N[.<«ähº_¤G…‡x¨€"ãuÙ蕇Éô“3ìdÃÍ5H-Z dÅësÃQmtðªô Úxõ3¿Þ/7þè%4>RóG ·xÅ'– <âúð±1¼K"2u „Ö½P:¾©2c¤ìq'Î 61iàzœÉ‰ÉêÅ^”ˉwÅÊ·ç+<#`llŸÌää5ëÖºuÀä íÅ^¨þñ?üG˜t=eÓs7áœSÏÅÝ ¬Ó¹U\›XÉ”ð-¯3…9–?ýLƒ£¼¾õíoGÑ£#£²>ŸÆal?Œ¶ øÐ!ìüˆÌ"<úÚ‘ß²-‹àÎ`Ïàñ؆(x#­™Re„œQÃP(ît3( ® B …Ä”Yæ^Rx¢*½æÁ‡åÆŸO¿dÓ•8ô‡|ÍÞAf‘×a.V<ò‡SÑÛ<Óbùˆ\YÓ HÒqiYÆŽ‰eåü< ý»ñ;ãÕ±cÇåÊQ³3›;ûÞÁ)Lý(¯ýìÈñµ0êF¯®”‡ž @["ó5mGu·¥gãx”÷äõìWžµQØr޼`6àZ#'Ÿ¶$nï2‹hF@‰xd „ +Ü öÚ›Âæs·qd׺Ájp-ÞY+#JÖrr3øÆ<úpÓ£ñãG“…WŠ%tr?@:~ `êÅÀZí¹hü#„1ˆ!I*­ ÖÉ:ª,Ð0t™Ô¬Ö†(@B±ØX Ç&¶6³ûáŸnÖ-qKŠnùØ|õlȸŰ µÑpßÅtwî´/3–yê^ŽÒ|„J¬å% 4š‹%J‘å¡‘þžQe+yÁÜú‰¯÷¹)œ¸ƒ;ÖÂa°dx/¶ËÚ8T eÒIR©•™š¦&DÀù§pÞ‰«üa\)`øу;dìùœ½(ÔØ‰‡Sçá4_ ©f§½õ ™tÄͯ%ÈpÂwvž-€„Í‚Ùߺ iDá6úž Ó"£œ(µJ4< € 9¤‹:©4#|û¤¢qþ¾;¸{1µ0+U|¯³0 ; së± œnÌ#Îob”dâ*O×ÁËö0šÛë§«ÕÏà”œZ$.0yz­màtz4îêA\Iñ'1N&¿Nþ™9å’ત®Ëâà÷üˆš»¤­õGJ!û1^ÈÀ¥9ç>{v˜@Ú’î§ù߯§/@F aNæ´et!ãÂ>~4hÑdHLšLŠió4ƒÒf z1d²f’<¢Œ6¯vB¥8TzíÆu¬„»UM_œ®n}eªZƒè‘=É[70r‚hÜ] ‚Ê Þé=P˜ó<ëp¶š»6SÍ¡©Ï•3löû¯-9 «Ùd“T ûB½…4\öæñKî5—È6DÜ$QãÑœÐövŒX܇_®i  Ÿüõƒ«Å‰ €Uî6fOñÞkKà:O¤ €¶r6Z;e ƒÖ‚X*[Ó8Ä4q\œÜFìȃÊÅ.·â;ó8†SÇÏOT_ÂçÀ ô Dè.`ùýu„¾Hků›úÓ/NV“§ÁaZž‡°q熊;ñ6\¡ÞBŠ…ºkÔGƒ1K&6æfc±¾ÿ3é ÄU­ÜiºËõóöo“o¦€4á’¢§x6Ü‹8µ ‡ØTûóK  ’®Ê‹ D*])ÿ¬Sxk!í]”Adk>†¡P³5~;èžÄžy¥O”9ò¥îã]1p­øRœüÃÍ7ÕñÈ4ž—@ƒêÂ׃#¯Ë¦4¼7 ¡îâòÈV›eÖê—\1lgXé>FlÚd7›Å#õÒ‰~p-·†H•> +q Îø.#Ð6@ù/æ]F:*7tKFº*ûÝW”EDÄrHlD‰œ›îÛµ»:|äµj }<·PÓ0\|Þ±3Œšoz!3ìÜ ôð1€kÇœOûN>îãŽ6—hG}æêØa"¥†v‡Ÿ:Œ”‚ •Ô`òÝíYrÀìTÊ}?oÿ oF¦‚]Röœ<ÚŒÀ™ž!—ÅqnòPÌ;¤´,vSp56Öäžy!W>z÷1[ÄÝEŒ`¼y !¿x«š½4çNÛ5Xâ%+“ŽS,–*=q=²Òà>s Ž8 iëæ-ÕÆu8mGãLZá3'“çÈ8HŽA Æ z›˜F¶ˆô™šlŠw©€-[êI@m²“–£„[‚[ú¬°]~&RRˆ’Xˆ9]ùj‹O­$®Ê{Ž.¤ºbU•Ê t –èXóPÚøÕ©•ý ž-›á7o`—Ú À ~].”›#Ò!¼ÀR‘•>ÜÑô¿‰Î?ì¾ËoÔ-›7! tÔ %öÑ 8Ñãªhðކ}“"u¡5¢Ý80lêÙå¸=÷2L8㾓7°Éç,:Ëm¹ç¦r€6ežo\Î\º|y±ê°'¾²°à¦p5Y¨^db)+ y|'Ñ©1©yªà:Hú j<Ⱦeâe5&>U˜Zqßèw£­ªÁ80Ó–…÷K„O°‰OøÖñüöŸÁÛ :û¸g¿¯>OÄ S@I2©¡¨y5AVn ¸?’ñ$&ü•9wõmŸÄ•yÿêó¿Q­E™é(ËW »<Ëâü¹óÕÜ/aH›Õr^ˉã'ªË—/ž¿°hýéšÄô{umòcyD€óUô6:k¸“ï4fðåÜ3ÏR±"Æ'&ªëØ<‘-/7öàÁ7p§ÿü¹sçôS)š¦Û¬Ò…²Â¥ˆe ôtU¶Uؼq.ÂÓê¶´ö—KOӘřzwï–°ÚÄ­N¨_îøñá€N#q–ßòµË5º¡¾R—ž¶å.Ö}Õ__#ýósòÀ­m+p²ÿ+õ¯åg˜ŸŽ›·l‘ëm=FPÃQ69÷ÿð‹/aƒÚW«cØ –;÷röà|¶ËÉB#SÃmâæ•)ãTئ÷¶8UÔ“ÇN(ztgÇÜ/ýʯT;wîŒàiÀ¦}ãá/ ²_ÂõòË/W¯½újuËŒoá!”\Òm1!‰zY´HÁŸÈb€§ž¶ú´å!]6[^å’¬™d*N‹¦ã–\ &i!lXô0 -'•~ÑÀƒ7ÔY6i]ô¯˜Ì¼rv÷,Ÿh/†\Jgyµ9¾ÌF—óX¥¦+¥ÙÄäãc…ôîŠ-eA†ö-¤p޻∓Җæ<òè£DN ’ÒïÉåaÅ  %Θ|‘OV’y³2ªXo>BÐÓºMx”™ 7eå³nÍœ‡¨àÑ:"€k†ip…Í<&§7ËÖóOPCÞBòê Ùp]€C˜`•ºÒ›¸¤Œ ¿pÃ3®´X)Í;M/+Á‰×“ "™¨‚1l][ñl<{ïsn[f¤âiJé§xmßw®°©ÚG.FœÚ Dª¬1Í .~AOqŠ['>ƒŸ²ºìšÞ šaĦ [˜õ3JÉÒÄ Q5ŒÑ°é+ÓØiy¢â ¶jlµi®{3Äö‰›ªWPô<”1ïW³n£­ß  XóÜ5¨2§¼JŠ˜â)¾…Ÿ>}ZÁÅûŒ.ôê,ï^iJxQ@ã¶xÆuų/c;ðÔQ±¹Z©’¿+ Å;UØoñÒ€ÔPè›Å)¾(0îÏÄø²Jy›L4á.()gÏ#pMùjïIã}˜Ûžßb¦‘n1€Tf{ùb…ï–ó`d?âqN yjÿa¤Áàjp¦òÕ.^á<ýòfANä™ùÔšä½á ;eP p dÒ ( ã,[àtMè9}ê4Nýí~s'Éeƒ¯~9 ·À-™­ÀºôÁÒ—üm:IšF €moÚ{‰g}îí¼³Øt… íÞÒ¥"Q åòÉymìi5š‚}KxÖeÁë „.š¿Õ…Ì›œ€bzʃlëD<®\wMŽl†Ž¢s>ûýOe¶.ðƒ'ø þöež~hpÎK˜‹qûNµÏ-vŽARDÏ×Ô$å‹Á]Ô‚Ð|…XõdxÜ"cÉO—rñD¦ÿîoý|õ¶·½ ûþíÂùÜóoµwßÞŠÛ}Ñ©jnôžÂàTà.—nVÊ_Ê[ù–à_º7 €"–2Àx&–S>¥-ÅŸOPgÈÅjwõb¾Ÿ‹K ƒ«1Ð0†¡@ØœKW/Ãä;[mž3þº’â)ñqm„VB v¡$X7xxdÅrwdƒßÿ½(Ì‘×^«xYÇ^7nÉj<Á‡›‚îÝ»Gdvßþ1,Ó†NÜIÌìr]³ÛèKe)Á-¯¬PBÞKŠÞÇrñ'·iÃïžîl°øéòéGEåNÀ<#m*wÏnÅkV¯©ÖoXkìÆk9<űÖR+ƒ‰ ò¼úœ¦‚”Á©å(ο U¿-˜Åΰõ¨N±o6áh90û.•kxósËéaLÞïc¢Àq~Œ¢3Õ׿¹Í?ˆVÿ²hÀö\†Zƒ7ž>ß8=åRCã’h| Íבã¡é(eý,‚šè¹zˆëüçá¹uóf¢ÞªŽöÐì·ìwîhŸkq­_åÁÂè/ÁS¼È(aZÑd–Â,£^ãKs,¯^üs診Žõ¼Nœ8Ù ‰à°ùš–Öy©‹Åȳ„°¼„ÖÊŸàSìÈ׉Ÿçéoq,qÛâyÁ5™ã4ÖËXV¡>òø¯˜)ekÞŠnsúitfÑ!8þú„lM¶~-›M—TE¶´fLñ £ µkÖ‘0‘geñ\j½¬4™Xtïòå+ªUkܧÃý|û³` @`\Ñ„8ؽsçòs\ ‹ÿ+ŸAá‰eè‰h3ÌrCÊC¡@ IëOáQ<5ÔäÂ(ø”ÿTaóýhÕ°g~žoó8ÝÞCœ0ŒVÀÌ¥ªº‚ZëV­ÁÞŠ0gRuþk[iKâÒiT[H¾‰Ë¨&´NGIóé9<›ÞÜ\÷2`åy?îë×ç ¨¦ÓGÆõ W~öž5Áú5ÁT‡ñ¥8âœïaB„òZŒ;E!( —‰ˆè¬8¶»#Ó.¦çKkÒ#$NÓáðSç ÞþÙ|ûËâO~?oÞŽO“ÕelPºy=ö)·Œ2@Ð@áP“K\|@÷…ªÙ5iš[ëD³Æp× Òܯ;û èJoÿ~ò¡:Ú+M_@™¶)z)nç[]ÉÌPž÷ã~MgŠF*0Mqñ¹ñ)¾¨ft| 4VêLCz)7j*¼t ßxjìø\WGßoߦ­ÓÍ\¬ügÀZw3R°Î–Ô…¯ÞŽGI ]¨:!,Tâ&yÖ‹Úà“ìë¶yKyLI¡Kð¾rôj‰»h‹g\êÔ‰±p6ýú%O>ošGÊaz¥|Óx  „Ž'Pp=À”o“«DÑ%<Ò|…gpKðaŒÇíB^ÞM‹ëÄœ€ôðs„­’¤!\çÂ×S `Aê×{Í@|¥tJuϾ÷ÇT±»^ÖñÁÕ×l£¾Žåï×µ¶´¢JãñL°­ÉoãO´ÌÎë7ÓóÅŸÆ °QìŸW7GÁÉWšÕ¥PÉ«FÓ¯eÓa[z‰¯™0hœëñ7ã5\’‡ÉŽ¿KöC/üÈ!X٢{ùù1¼k]._½Z­ÇÁ#ÑzW uQLù$w™ºÈÕ[€ˆ,l˜|¶uzŒ´Ê¿ˆ[zÙ”b’Á8RαL@,)t žãÑ+¶,¡ SWfÏ«mxNy-öù3(!É%ùD([z©‡»çʺ†,Â@cè¬~÷(g­“$ ROŒS<{§òKÇÞüƒ½O¯Åuƒ˜‚<¹p—¤àž·+‡ƒ×¿Í²õ]¡~j®úœ$M&D,î` Þ^uLη3³H¾þ Rþ&—¼‰C¢™”Þè4m-²-Ñ2n¡†Éë^Ü4ƒÂjÁ!9(±Ì¸êÌ:ýmà;••èËpÇŸËaów#C0Lìœää ¹\}4ɤ.¥îˆŸ\Mô¸fXS5«kÖ­»üsJj“‘ü”êr£8Ýhf¢ò¤]£ÓPáíÇö¢ܽgwDÂrå\¿ðµ4²”ãÛZŒWÚØºWÕƒÞ œy 3íP¿““Õ,u ¡5;êÜZs´ –‘Ì¢w6Y¨a›eqÉe‹}¤é?ýzp/ ¸ìP4vJc¥÷ø™‰ê*æl\‡!Š|‘Á'‰ðœ-T娔h,_¡æ"ôZjνÌøôg>]½óé§/nJËÝ€/_¾R]ÃHÖôw\»z­º†ù„ÇwžuÁçÔ¯[…©Ôøç~HVP1ÝmØÊ«—UQ“ØþêðK/aëeT6væ îÜ¥ð¹ô £nòâ_œµãÔMN!fþh èww„Uqƒ|Y1íCȽq`âÊu+} é?ô æÙ,u7ˆáÉ´f§_Á§:·o®‡·¤6´pZl…ʬ+ø54eâ˜Yh///ÍBJýØãáù6¾Œ‹GÓâ§Â¡GÉ¥¼ÿÓ¿úת®Í@¶lçkç”—†õÞ/\éz¹G€Ll!yr`éý¡}ˆ(¡‚mÚ‘ùa“éIì"ü”·ÔTÞ~æƒr~@ýž@ÔM®£Saªa ´Æ†‚R$7Ñš…ôêÊ Óô߇ˆ¯f°t|Ò!ˆ~ŠiL¾yå– ¯’+ä0ÔE€ˆ'€Ó2úˆœöÔz`O{–1G››§ß]7ý^R@ÏÝI#;5ç" lÇvL§„ë7~ñM’‘·iê2™abm òm¥Ÿw8Y˜À·ýÞ±±ˆ¤+-‹¬¸´Øï|WÜl³x‹égج¤âƒ[•8‰m³Æ«ÛXæ|ÛgqÃNn§Í!ÈœF3‹¹è®>!ÌÎÂ8CAÙÆu‡ëü±ÔöÐôOë–³¹Z‚4b,kT8QU_P¯¶‡¿TQÊñ„Çì<0‰P´¹YúÊÊÏ|ü §±Î=' ©ý¥8…OMµïLNÛ¼¨¹Æ>åC.Ôh´±ffÚÞÐ¥O‚S'OeÙ>m:ZR-x[z–¦—sÕ-þýò³³"xÍÞg÷Q·Øç@'»ü¼šþQ]¢Cè¬d‡àäéÉê*>ý6ñ ÑàRÌ çåp©»ÀM¶‚m? »¾ÿÙŒÍxu*ƒ¶÷Rœ…÷Ò؉mì-M¿iXüùøû2L€™mSJm Øï¨×q4RÎ=ùÔ“9pÓÊiK“ƒÉ›ˆÉ È‹ ¯0k náíÏ>“á1(Ñ>d<ì%Z›-ÎRälÅ™«F®ÉgÀ(uΩ¬-–«ÆZ(Ã73Jœ‰–@ãÜÍ~eëZ#q¼ mذ1ûýoqèW™Lá6̽ØWÕåvíÎïPJ£ïJ§Ÿý(!+œ™èʈÒœÁ^€9Ç~ºø(]Wš“ÝÍ-åµTïS³Óød¸SUhF.ñ^ÿ®:”u¤»|– n«#Tk,}î"´¨—7 wqÝ…[{Aþγäb°6·ÕœÎ[’Ëœ|mÜËØÔ†Kéî~€“€˜§¢`æ» ÐO#ÀëNR¥csÌþíÝ?F°¤ÓÅK nŠüØqEyCÞ1K]ú dÂÏÃoŒ^ÿ¶Š–Aö`”‹oC.d¢òZýæ3tÏ1Žpf€0E‡²CrK¡¼+g’½„‰ÿ™Ëî˜Zcló=ò©l)F Îø4®—€¹`}ˆ¦Òä¥1i ¿—{ô ÀÒ¦vfÔL¥tçâ…‹¢øÆï-= Uá½ðR\Þÿ.¾±Ïœ9c£ÞpþÛ˜˜4ã½ÞÈMÿ´Ò×¢Cð!ô`K<ö¬\¶Ml̦3­wÑlõ`éLqƒO°Òoû:Æù,["Ó¨ë: èë_ûzõ·þë¿Y=|èáêÀƒÕÎ=»ª}Ø xÓ–MAÖ”—½«Zçt9.N]ŽqJð”¾ßpd4¡T™™x K*áLbÚíÍ̦ˆ2ûÅÿá¬vïÞå6þÜ·¯Û_­]·6¶+MÍÃ˯În7®ñKý>‘7KÓ?­ëaÌ ˜=‹¡Á“ÓÕUÈÁÆu~BƒW̆’A¢ðj Té‰ÂVBp†‰B‰«~âq#Ð.%ºVÊ·¿ým¹oxF°‚tó¦ÍØìs 6ªÝî6üÄôÝÝØxóæ-h»aŸ ßÚ¥‘álÃWqZu—K—w寋ß|â€LrQX›RæpN`+pk…5“2ûw¿ÿû w6‹¤¢1<²s×n´¶I¥oÛ¾£ÚUS6I{ü9ûêêX7·ÐD–¦?:ÎÞ~ú©kÙ8„‚XÉ|`¶_6R¯e¶Jøz Ñk‰ Jߌø¬ð¸\ >_7!ܳgÏȕۤv¾|·c¼§zÕ n¿8YÐÆ„™i3¤µ8m§ôäÒ¡>vŒ×ñ\4Ò®0spuµ-NãeOëm*PŽƒËv^öÁrÞ¨w¦Ðë¯Mvš¥Â=oÎK‡P:÷¡ðG®W[7-CçS¦  (kX¬6‘ð .ßÊ|¾KÍÙ­ÀKJ^‚/TYú6LX3Õf§4`¾7&&ÉÈqX}2a~7nÚXmƾív˜Ò²cÀI;8›B35‰É;¸ÓÏKËeiæëgÓ_Œ×› ×¿­Äà¢Cp'm_äb¡«ÕŠÑåò"á3á³pw¼Ã–!ÝT“‘BʈÄ8põ_/Ãqmù_è8m©ð({º’L•à ™Ÿ¢`â¼ø@J®+žt<l)8.ñ܃cø=GÇæ¤>›?ûÄkEãØ+‡%†ÀÏꛞ¤Q˜ª¦§pÇ[œ†¢×‡F9•ïþt”½ ›þ¶Né—S…B‡  ݹ5^-[?d‹³(S ŸR04àÕƒàs˜BË®Ÿg’æa¡Â99#ï]»Ë“€*í.>E „]J®_2K¡wž#»÷Bù9ż6Â7% ›Ø¹ÒC#^+«æPdÃé¾üfœ¢Q@ëA „o=ØŽ¨ ´0&—^ÿ7iÓŸõaÝ0æ¼ÌbÁ™“èôħϪeéÙ‚56åÊM¬h \ËÁ­ÚtPž)VŠr•Íšëýñ•d'M}W²€¿_y Í)r žf8G{¡p¸¥]lÿNôÖŽŽBùÅ `ÆÄëbãǯ qÔ£ì[À•9"N’-ˆ›Xö|øÕ—«á7yÓßÖ§Ô_²d‡ ߯á¢Ë‡—6ÜH)›aÊd®åÐÄ\|H¯ osÂqyåÜýR~¦Ý˜TJœðRœ"‡ss¤â¯\µÒ废»$ƒi„É5ÊÑ¥e•{ÂÖPF^HnJúú¹38‚[“¡Iüfëõ œ bbÐÖ ÐÝyƒÎÞ¤ÂÛ?Wšþ~¹ãPÎuéXŽæ^` @fm™h‹ÓŒˆR@aØQÇ^ýéVã AUzÍWªêªÛŠçî^ác kÇ_¦TÊÀßC:+¶ÞÏž?W]ÅŽ2KekoSŠûâÕ%Ã6ŸÄ¦?/ug•þ…p[ú˜´é•xD å&#ðS…ŸÀ>ÚqË%*_ä…Õ·»–K•Uîø!zC“•G3"JJyóÎþ€“'O¸­½ÆÛ¿iÞä!™!ˆ}¸d˜Ë¥—š[ …OËØµ 8Å_¬pd˜ˆÇß–°*L çôÉÓ¥¨û—s |šW¹#õT§£ ©r›{‘>k ²Àê8 "7$åar¦_”è[+0„‚lMNOV0ŒÒÝ…OËÇ…ÖQ¾„‹:5634¥1s‹ŸëåùŽ'ž2˜Æ1¬2Ÿ‹£Lp»pÝ2ü«Ï~¥ÓpvN/W4mŠÀŒk¥´}°Ù”sï}ÿûsàðrж~ýúêÏÿØÉEb6Ëþ¿÷ÿV¿òþ§,/ù Àëxô¦T546ŠPC»êÄæ››O¼P¡§ÙÛñ¦Ã'ÃLA–nâ‚À, Ђ>˜;?¯Qtã˜0ˆ>›];PYx,a%fUÚº¿W…w©Õ¿Ú¯!µO弆Ô>›'…ö²êpÓ> @óÊ{dX +ÄiتŸ”3|csgÜÔmܸ Kz·¥à(l+ÖæÇ"±Yöð!L¢oqœ²+êíu¼VeCd€µ)0ñ¾ aÐLd µù¾†$6û‡±Þcø€{Û¼ r…‹3°‹#œñV7¨ð™³¾:1³‡4U·oÜ®N9]½óÉw…e߬e*§X»iÖnªõ §]£Žåó*ÿð̳*{wïó3“”~•Ÿä3XÒå¶laspi¸È0KVˆm¸¤ˆÄÑŠ²†àä‰SŒj8NìŰ(¡ÍOš‡ñŽeÀ#XÔ«¨ãÉŠäðÛGD4š9oLéïúùëìðÓÿAÌI}Bò\ø:z«÷ÌÁNcZ0?‘dAFGª—Ñ85^?q¬:ôPmàù,yaþ,«;r”?N¯f'òmL>³2!{÷6 €Êtޤ?×{t¹­/À.ú…Œo€ó^”V+†à'¼dœŒË®•˜*u†$€”†Òu- f À|“FÞ“K»¡èmÂh}J·|…Ô)(:wÅÑ)¿ú À£¨g(?Ý:9Obr‡·b#}r7MãàþÌó=O;°¿Z¶œ=¯ÝŽÏÜ~ªÞ‹òsß«8@´ËíØ±£ å¾ÅG€©¦J’ˉ*N.Na#Í9]Ÿ‹ë…¯¥»xÚUpÒ˜‰Ó4r÷=‹Ó«q³±}cî¬CdsâëX* C0‹&¯‚4½·Zx:: åçÁ¢êf!6SÇÐwºˆ9ñl7¸Þ ó¹xÁg¿“ÛmÛf‚&¹ #KtóU~•ÒßåvîFÇÐqÙO-PWµ°¹¦ô¹³g³äÏÿÍÏÿëê/b"ÐÆhgœòeTŽ·’|ïùçÕÛ¸sS÷Ö0Qhîµ9›nÏæ¥ÆÍódRÄ?8v Z‹-Ì^Ç\€;GîTÓü$ÀB°‘}ˆGñߪëÒú¥Qäæ¡3ßC æIì:%¡n‹RfªYULG4lQ—aH™'ú²_ ËýÝÿþd¿Éw=ý®j+öéã‘ul¦oÇ”[·nm•ÁZªêÈ«¯u%%ñœ°T\ÖhæX8+ô Oï9¼ó0ØqW®\®>óO>]ýú?ýLu½øo{ü±êñ·¿½zòÉ'ç’ÜVpš—_|)“‚ eŠÖe‹ÂI_žÜ‰_JZã`çØ­Õ¦M[ª«×®Tç.œ¯®¿.½ßÃ0œ?ƒ0€.m õ&Œ âsXtú(®“( úöâÀ˜Û멲Rì åu%ã@PÆ@lBo{/€ägÏœ­~ÿÌïÓ9é_@Á¼¬6cøn˶­ÕîŒÍi9šÅ}ý¶"´VŽ9ÑæËði¸.ésÈáÝ/XFKâ¤US勱jEU¼K—0ÖÕâØÜ:|ø°\ÿæw~W0Wá4Ù¬zø¡jll ‚Jx³_;­y!ò%LÁ¼ˆéÃ%çvÿ1R“jhŽ0h­‘&Áó|R°Ä9` mðu´L~#ŽžâÅuç°,øÊÅ«ÕäÙ™ªBŸÀðZ÷íË‘~KË ›^#7@”ãÿTü™¸ãi/êÕ˜³ûÐîj ¶Ú¦³Ï;-¤ÊY€›G­0ípÖð|î”S.ßæuôÈ‘, 5<¶Ë-¥9Ìk§ÐéÃhT¼"ø;ñ._¾ŒÍ49ã?GÅ`³>mÚsèp;¶ßëËT+ð}xõ*6—kqüˆdÂhhS¯‰€eJ[d´ @QMòÕJÌv;0v°Ú³{ZŒØÍ[7«[nWS¯c ™}W0#è˜æˆÁ ÎÕä·²\¾£,°ƒxDá1êÁÉO³x/Ì¡ŸlÍ|6õ93rÍš5Õ®‡w¡¥„¦\/²¦8BùQ9e?ÂNo^L§F¢—4–Òæ·g …ÓŠ× V¸½Ÿ.œlqúñóh©£GÈÕ+ëôÊ×Qs;PqA?ô8ã¤"p˜d010Ž5§*ïÜá;„`!hoܼ‰£ÁoT·Nߪ&8ƒ0ÌN2~"°e@£€ÖÂÀ`¸ðÅo“uìïû/CxwѨÁ†GNáñvŸ£­†²Ïp÷v¾çõ«×W¶¯G?ЦŠ#&t,‚©±`$2ùi“?¢ªœò$¢Å6IÖZƒì_XJ®o ™g—©SùI@J{?îÒ°Òämä9Á ß•©By<íxŠÊá& 1€-r`*ÒÏCQxí¨0|Çá)ÙYéZ¦ªÉW¡Yh W3£3¸‘-è'qˆQÌ:’ _=LR“íÇÏ'³È»^Ëš,†‘•9ÎgÀhìÞîwÙ†Íâd¸aÞc˜Cr+1/bÕ¦•Õjtˆ®_¿!^¦í«!Ô=ÈB~é÷ŽuïQƒ‚k\z×ç<—ÙP4ŽŸá®Y°÷3/L«hÔ‚¶eHq´²·4@ãûN«ÏﲜÓ<çâKË$Î!U…"ÜKeÖ80Þâ*2áêTªcD¼Wȵ =Ñê¸b’“]&1ožßœØ]wâŽ;Ã`wq4ƒlx*­ ¦aÀ¾¹.ž0ƒ¨s„!_ÃTt¾Ù÷Ïà<*¶º‘åØ)­v¼ò> «4º£î\%Gƒs_ÆÔ…zôº uRSÍo…"ÔÆ`>g.kÚ3ä÷ÍËÓ­–’+fR•¥¡I R<.㽿.–ˆ!&ŠFyjY&“Z–LÔüŒyaΦe=#õ†ž%Ð]‡+îuHgé!ô“Ün‚Û’Ï!Ì×5ïw±U¶;Ã~†qqÁ’ ø»„çâ©íØPô©Àü¤%ÇìÊQ(9ý—º–œȯS†´’ \¢ºËTr]Sú:ấæxÀRr‘(=(Âé:¢Çc÷â:+õÍ”(´>+‘‚¨¤Ô*:‘5ÙŠbdÀÔ¨eì14ýXi]d1í(³ C’ªe8q‡Wpá; @¢äkhÆ—¡%V6K°ÉKe¨ã ºKCÝ%puçëÄîÁ!{  ¥4€Ú”Æu=¬óØágá\‡deŠæ©#a¯Bf@BDü†Õì‚Oë'Œ§QgQ&¨ÇK|²é nJ`¥7XÂ’îRð ­°TV–¾}AíÈ¢ð,¤U'UfêN‘ý­ ¥äFG—Uë7øÓ‘—HÆ@óÕ&Ì×jO|ÀówåÝ+O~h“÷Z1 —  5<€ ® ™ âf´fiòc€ÆÛ¨KeìqBú¶‚“ žÍÂÚHø J8Ú´U˜ë –škfÊ£Ã'V¹»2OÜS'9¡Ûºú }üg>Žéžk°Wà9\ª‹X/ÀYƒœfÉc¹ʱÐ9#=  :_6ÝXn² Ä2Û¤hcÒD{rwShÍS!0x\L‰ˆ€\CÛ Ä@rb`]“g´Æ³ˆ{âÊ’¸:›yú ´’Л¤<ÓÓÅÏN·ËÔ'ÿÎ'«üåú—…áé½E¸ˆmíxÀÍñcÇ݆µXÌÆ…n— ·ýÎ1XJûhi#žÃ[\F92µsçÎÐÜ«!8ƒE9[ÍÅ?÷7ÿM·q¿|ñ²ì¡wô§OŸ®^}ù™ùG~jŒD€ŒÿSƒ´¤HJrVî#da)x& ·Û$ì¼}6ùiNxfÉ}ž9È.¦Í8Ńk=øœ‡„ŒÇyªÁ¡ŽÈÓÎá…Òµ‹ô»ÞýtQùɘÊpÜž×ûðBZôðóâ_ýFõ§ò«¯a³ÚëØ¯ËquáRs‘@榠èËÙ”ÿò—¿<ùÁ~0Íx—!(ÍxÏ{ߣ,²÷M[6U¼žÀª@uÌ×¼ôÒáêyìü§ÿñO«—^|±u7`™iB„ \½”dœ‰Z\EÖÌ<•2Go¤àž>J+ÐׄdÓù¬ñœ¯ÁÔrà êq15&ๆ†º#Y &‹×z0 …" »˜PF§ÈÀKïyXWîf"<}×À–mÍ·¿>£ˆun_Öåø"[ KÏ;ljݪ÷s:K\óÿ9õ`ßýœÊs·×ïoV;ò®\ÁZÏŒÛ?A‰¯WÑèê™’³)Åú¯ƒ­à;As´âçÛ*\¥”g…çîL›"jÄ” È)]^]?&Gòò×p` sÙÌ€û€`¯”!¥Ñwwõ\cy_”‰úYˆ•Á¾H¹˜RÌÐR`ÄDzÁ“àNwtêž>§ '³ù¹^Z\õ¸êѨ›N ?d8 \ÜÏþìÏr§tÂõbxÎ_î´¾¹ckÉ©ð÷òºjtC€N6lz*~*5æ½ÝåUh´òIDAT׿9ç·Ç~q4m† 4€;µº7³r*ßõ” WÁµ¹ð ÐP¡´³òÂ… ¬âàJ†à4ÆHsNNèÁSRÎáä`Aˆå ;Œ×;Vr)°—™Æ=Jà •ÑZš"ÌB !uÀ³°±|]”î–²„£pâ6Å­æð’JQ¸Í±úkjøhî5­QKS¦MÄÓVºñnH+ÉnDÞŒ ”HšhtÌ+9wöLõÅßý·Õ±×zÛÉ7Î@b‹÷æ ´àU²ÉhMõ`|Ï>ûì,&;é÷?3ñ»6 ¹Âzó+ØKíŸ"ðw8¦eø©Ÿú©ñ/|á Ë1–OY ζˆ[: ø&6µ¸‚=7bË' ]W§YHÄ{”îÛ~ ç4ža¶2\¿“KÃáÔYfÒuÈÅZÌéóHŒ_¨’Î-Ç)ý8'‘Y®GˉÇÖ].ñÚSrƈìžû 9/p@Œ3èT00u‘7›£ÀÐó¡QH\€&1ÙG"3Í3LXI»Lý³OFü+°YÉ~œ%ðè£V?ñ8FœžÂ& ½-Úy酗串\¶§ ?HǾ³O}êS¡}^þ·†`ŒÀ§`~ þ4Ø©·â£ýèÝO~ò“·?ö±acª¦£1(Í öOÿg?q×­8,c›Ÿ\±³âÒÈÝ»÷T»÷îÆºólV =ÿü÷0ð`I§µD…m"¼„¤5Pc‚KiAQ˜&œÞ­4¦qÎ$áÙÄ¢GÝ"ܽ2jˆ$_*Ä*®ÂrÖ%Êy@¬ËÐf$O]L3Æt!)ˆ®!À:7Î7>~§zñ…äúÝßùnÚ´¹Ú»woµ xØ{Ï—×Ö­›«Í˜;À­Â?84P}á󿙲ˆôà/üÂ/ÜÁÛË÷ tåJ›Ö}¨'qm¡rãøµ_ûµU¿ýÛ¿}û³ŸýìJlà=k²-Î8¶xåvV¥ nÀ2In Ƀ´–˜…ã° Æal½Ì·;›[¯½Ê‘ʼâ.@æ ¡z(Âa”Æf<Ž"Ö¯–°!Ðd‘Û D&š£ú"Î ôw›P…`[‹€™´É׸MžŠWÇ4ó¤UÚ«q`n¿&;)L›°é²þ¦L£Q€Jּ׌8EWɱŻ›™rý@/n*y@î«_ýêì—¾ô%«üÌÉ_çOÑ 0VÀnà| ×SD¦!8~üøªøÃÆã§Q¨ñ§Ÿ~úî3Ï<³ ãü£gϬ…н9Òh…¿üòË "*ÿÚuë±{ìj9¼àƒÚ™ÙÜÐúÁZZr+‹YLE´ÄðgqœìBÖLÒ |:µ/eTÇtù¨ 7pt/Žà½~Rô¯*ÿÏÿüϧ$ß…Î=Kà@/ CðëÀýoqé*Ò÷ݓȎÛTÍ¡vÅ+M¯xŠÿý{\<@oŠ` DÍ¥I›Ç«)èSýV¥b›,%ºŽH¸téruçv¼2ñ½r0$ àekö7þÏÏ/§ÞYð›Íþq¼ùÓ }¬˜ÝÐ{Y¼ÐÈ%ÖÀßœ;S~ W˜'à? ¤e£kƒÑðè•ÃÓ8ÞÛœÅSþ[5NëÆÞëº`—.ƒ>ŽørÏÑÒÛ4b\GKŽTE§Ž™tA¤mãŠo˜b„!~‹z³õŠº˜šæÔ¸¤Ž°þeÕæQ¨\ÝÎ=š”Co´eîyúÉÉéjMô¥âV®ZQ;vlQ²CC‰é½sXA;ÃI>ç½~ý:u4ÕDÎ|ú0ðŸ³ééÀ|ßÿæ©­›·ì¼yûV~ò†/&ì^[ŠýºRº]ãûý¦óÁÿÊùC¨S™ÙkËœZ ÷}ÿ[´¨|zÍ· æûyØ–î÷•¿ï§ñ(~uún\ å'·ž?úNúûo˜ Ò-„›Ï›^ÓmËÃ÷_k©xg‹<‹é\¿‡ëGæ—æ"RÝÿ™=Gáßq!¼IEND®B`‚icnV C CorsixTH-0.61/AnimView/app.cpp000066400000000000000000000027241321660673500161640ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "app.h" #include "frmMain.h" #include "frmSprites.h" IMPLEMENT_APP(ThemeHospitalAnimViewApp) bool ThemeHospitalAnimViewApp::OnInit() { wxTopLevelWindow *pForm; if(::wxMessageBox(L"Launch animation viewer? (No -> sprite viewer)", L"AnimView", wxYES_NO) == wxYES) pForm = new frmMain; else pForm = new frmSprites; pForm->Show(true); SetTopWindow(pForm); return true; } CorsixTH-0.61/AnimView/app.h000066400000000000000000000030421321660673500156230ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #pragma once // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif // for all others, include the necessary headers (this file is usually all you // need because it includes almost all "standard" wxWidgets headers) #ifndef WX_PRECOMP #include "wx/wx.h" #endif // ---------------------------- class ThemeHospitalAnimViewApp : public wxApp { virtual bool OnInit(); }; DECLARE_APP(ThemeHospitalAnimViewApp) CorsixTH-0.61/AnimView/backdrop.h000066400000000000000000000205671321660673500166430ustar00rootroot00000000000000/* XPM */ static const char *const backdrop_xpm[] = { "126 64 12 1", "f c #695D7D", "c c #6D6D6D", ". c #797979", "j c #3561CA", "i c #797196", "d c #8275A2", "b c #867DAA", "e c Gray51", "a c #8E8E8E", "g c #A29A9E", "h c #AAAAAA", " c None", " .. .. ", " abcccd abcccd ", " abccccccce abccccccce ", " abcfcfcfcfcfcb abcfcfcfcfcfcb ", " agacccccfcfcfcccag agacccccfcfcfcccag ", " eahhhabfcfcfcfcfbahhha eahhhabfcfcfcfcfbahhha ", " eahhhhhhhabfffffbahhhhhhha eahhhhhhhabfffffbahhhhhhha ", " iahhhhhhhhhhha.f.ahhhhhhhhhhha iahhhhhhhhhhha.f.ahhhhhhhhhhha ", " ...hhhhhhhhhhhhh...hhhhhhhhhhhhh.. ...hhhhhhhhhhhhh...hhhhhhhhhhhhh.. ", " abcccdahhhhhhhhhadcccdahhhhhhhhhabcccd abcccdahhhhhhhhhadcccdahhhhhhhhhabcccd ", " abccccccceahhhhhaeccccccceahhhhhabccccccce abccccccceahhhhhaeccccccceahhhhhabccccccce ", " abcfcfcfcfcfcbahgbcfcfcfcfcfcbahabcfcfcfcfcfcb abcfcfcfcfcfcbahgbcfcfcfcfcfcbahabcfcfcfcfcfcb ", " agacccccfcfcfcccagacccccfcfcfcccagacccccfcfcfcccag agacccccfcfcfcccagacccccfcfcfcccagacccccfcfcfcccag ", " eahhhabfcfcfcfcfbahhhabfcfcfcfcfeahhhabfcfcfcfcfbahhha eahhhabfcfcfcfcfbahhhabfcfcfcfcfeahhhabfcfcfcfcfbahhha ", " eahhhhhhhabfffffbahhhhhhhabfffffeahhhhhhhabfffffbahhhhhhha eahhhhhhhabfffffbahhhhhhhabfffffeahhhhhhhabfffffbahhhhhhha ", "iahhhhhhhhhhha.f.ahhhhhhhhhhha.fiahhhhhhhhhhha.f.ahhhhhhhhhhha iahhhhhhhhhhha.f.ahhhhhhhhhhha.fiahhhhhhhhhhha.f.ahhhhhhhhhhha", ".hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhhjj.hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh", " ahhhhhhhhhadcccdahhhhhhhhhabcccdahhhhhhhhhadcccdahhhhhhhhhjjccjjahhhhhhhhhadcccdahhhhhhhhhabcccdahhhhhhhhhadcccdahhhhhhhhh ", " ahhhhhaeccccccceahhhhhabccccccceahhhhhaeccccccceahhhhhjjccccccjjahhhhhaeccccccceahhhhhabccccccceahhhhhaeccccccceahhhhh ", " ahgbcfcfcfcfcfcbahabcfcfcfcfcfcbahgbcfcfcfcfcfcbahjjcfcfcfcfcfjjahgbcfcfcfcfcfcbahabcfcfcfcfcfcbahgbcfcfcfcfcfcbah ", " acccccfcfcfcccagacccccfcfcfcccagacccccfcfcfcccjjacccccfcfcfcccjjacccccfcfcfcccagacccccfcfcfcccagacccccfcfcfccc ", " bfcfcfcfcfeahhhabfcfcfcfcfbahhhabfcfcfcfcfjjhhhabfcfcfcfcfbahhjjbfcfcfcfcfeahhhabfcfcfcfcfbahhhabfcfcfcfcf ", " bfffffeahhhhhhhabfffffbahhhhhhhabfffffjjhhhhhhhabfffffbahhhhhhjjbfffffeahhhhhhhabfffffbahhhhhhhabfffff ", " .fiahhhhhhhhhhha.f.ahhhhhhhhhhha.fjjhhhhhhhhhhha.f.ahhhhhhhhhhjj.fiahhhhhhhhhhha.f.ahhhhhhhhhhha.f ", " .hhhhhhhhhhhhh...hhhhhhhhhhhhhjj.hhhhhhhhhhhhh...hhhhhhhhhhhhhjj.hhhhhhhhhhhhh...hhhhhhhhhhhhh ", " ahhhhhhhhhadcccdahhhhhhhhhjjcccdahhhhhhhhhadcccdahhhhhhhhhabccjjahhhhhhhhhadcccdahhhhhhhhh ", " ahhhhhaeccccccceahhhhhjjccccccceahhhhhaeccccccceahhhhhabccccccjjahhhhhaeccccccceahhhhh ", " ahgbcfcfcfcfcfcbahjjcfcfcfcfcfcbahgbcfcfcfcfcfcbahabcfcfcfcfcfjjahgbcfcfcfcfcfcbah ", " acccccfcfcfcccjjacccccfcfcfcccagacccccfcfcfcccagacccccfcfcfcccjjacccccfcfcfccc ", " bfcfcfcfcfjjhhhabfcfcfcfcfbahhhabfcfcfcfcfeahhhabfcfcfcfcfbahhjjbfcfcfcfcf ", " bfffffjjhhhhhhhabfffffbahhhhhhhabfffffeahhhhhhhabfffffbahhhhhhjjbfffff ", " .fjjhhhhhhhhhhha.f.ahhhhhhhhhhha.fiahhhhhhhhhhha.f.ahhhhhhhhhhjj.f ", " ..jjhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhjj.. ", " abcccdjjhhhhhhhhadcccdahhhhhhhhhabcccdahhhhhhhhhadcccdahhhhhhhjjabcccd ", " abcccccccejjhhhhaeccccccceahhhhhabccccccceahhhhhaeccccccceahhhjjabccccccce ", " abcfcfcfcfcfcbjjgbcfcfcfcfcfcbahabcfcfcfcfcfcbahgbcfcfcfcfcfcbjjabcfcfcfcfcfcb ", " agacccccfcfcfcccagjjccccfcfcfcccagacccccfcfcfcccagacccccfcfcfcjjagacccccfcfcfcccag ", " eahhhabfcfcfcfcfbahhhajjcfcfcfcfeahhhabfcfcfcfcfbahhhabfcfcfcfjjeahhhabfcfcfcfcfbahhha ", " eahhhhhhhabfffffbahhhhhhhajjffffeahhhhhhhabfffffbahhhhhhhabfffjjeahhhhhhhabfffffbahhhhhhha ", " iahhhhhhhhhhha.f.ahhhhhhhhhhhajjiahhhhhhhhhhha.f.ahhhhhhhhhhhajjiahhhhhhhhhhha.f.ahhhhhhhhhhha ", " ...hhhhhhhhhhhhh...hhhhhhhhhhhhh..jjhhhhhhhhhhhh...hhhhhhhhhhhjj...hhhhhhhhhhhhh...hhhhhhhhhhhhh.. ", " abcccdahhhhhhhhhadcccdahhhhhhhhhabcccdjjhhhhhhhhadcccdahhhhhhhjjabcccdahhhhhhhhhadcccdahhhhhhhhhabcccd ", " abccccccceahhhhhaeccccccceahhhhhabcccccccejjhhhhaeccccccceahhhjjabccccccceahhhhhaeccccccceahhhhhabccccccce ", " abcfcfcfcfcfcbahgbcfcfcfcfcfcbahabcfcfcfcfcfcbjjgbcfcfcfcfcfcbjjabcfcfcfcfcfcbahgbcfcfcfcfcfcbahabcfcfcfcfcfcb ", " agacccccfcfcfcccagacccccfcfcfcccagacccccfcfcfcccagjjccccfcfcfcjjagacccccfcfcfcccagacccccfcfcfcccagacccccfcfcfcccag ", " eahhhabfcfcfcfcfbahhhabfcfcfcfcfeahhhabfcfcfcfcfbahhhajjcfcfcfjjeahhhabfcfcfcfcfbahhhabfcfcfcfcfeahhhabfcfcfcfcfbahhha ", " eahhhhhhhabfffffbahhhhhhhabfffffeahhhhhhhabfffffbahhhhhhhajjffjjeahhhhhhhabfffffbahhhhhhhabfffffeahhhhhhhabfffffbahhhhhhha ", "iahhhhhhhhhhha.f.ahhhhhhhhhhha.fiahhhhhhhhhhha.f.ahhhhhhhhhhhajjiahhhhhhhhhhha.f.ahhhhhhhhhhha.fiahhhhhhhhhhha.f.ahhhhhhhhhhha", ".hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh .hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh...hhhhhhhhhhhhh", " ahhhhhhhhhadcccdahhhhhhhhhabcccdahhhhhhhhhadcccdahhhhhhhhh ahhhhhhhhhadcccdahhhhhhhhhabcccdahhhhhhhhhadcccdahhhhhhhhh ", " ahhhhhaeccccccceahhhhhabccccccceahhhhhaeccccccceahhhhh ahhhhhaeccccccceahhhhhabccccccceahhhhhaeccccccceahhhhh ", " ahgbcfcfcfcfcfcbahabcfcfcfcfcfcbahgbcfcfcfcfcfcbah ahgbcfcfcfcfcfcbahabcfcfcfcfcfcbahgbcfcfcfcfcfcbah ", " acccccfcfcfcccagacccccfcfcfcccagacccccfcfcfccc acccccfcfcfcccagacccccfcfcfcccagacccccfcfcfccc ", " bfcfcfcfcfeahhhabfcfcfcfcfbahhhabfcfcfcfcf bfcfcfcfcfeahhhabfcfcfcfcfbahhhabfcfcfcfcf ", " bfffffeahhhhhhhabfffffbahhhhhhhabfffff bfffffeahhhhhhhabfffffbahhhhhhhabfffff ", " .fiahhhhhhhhhhha.f.ahhhhhhhhhhha.f .fiahhhhhhhhhhha.f.ahhhhhhhhhhha.f ", " .hhhhhhhhhhhhh...hhhhhhhhhhhhh .hhhhhhhhhhhhh...hhhhhhhhhhhhh ", " ahhhhhhhhhadcccdahhhhhhhhh ahhhhhhhhhadcccdahhhhhhhhh ", " ahhhhhaeccccccceahhhhh ahhhhhaeccccccceahhhhh ", " ahgbcfcfcfcfcfcbah ahgbcfcfcfcfcfcbah ", " acccccfcfcfccc acccccfcfcfccc ", " bfcfcfcfcf bfcfcfcfcf ", " bfffff bfffff ", " .f .f " }; CorsixTH-0.61/AnimView/frmMain.cpp000066400000000000000000001325671321660673500170060ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "frmMain.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "backdrop.h" #include "tinyxml.h" BEGIN_EVENT_TABLE(frmMain, wxFrame) EVT_BUTTON(ID_LOAD , frmMain::_onLoad) EVT_BUTTON(ID_BROWSE , frmMain::_onBrowse) EVT_BUTTON(ID_EXPORT , frmMain::_onExport) EVT_BUTTON(ID_FIRST_ANIM, frmMain::_onFirstAnim) EVT_BUTTON(ID_PREV_ANIM , frmMain::_onPrevAnim) EVT_BUTTON(ID_NEXT_ANIM , frmMain::_onNextAnim) EVT_BUTTON(ID_LAST_ANIM , frmMain::_onLastAnim) EVT_BUTTON(ID_PREV_FRAME, frmMain::_onPrevFrame) EVT_BUTTON(ID_NEXT_FRAME, frmMain::_onNextFrame) EVT_BUTTON(ID_PLAY_PAUSE, frmMain::_onPlayPause) EVT_BUTTON(ID_SEARCH_LAYER_ID, frmMain::_onSearchLayerId) EVT_BUTTON(ID_SEARCH_FRAME, frmMain::_onSearchFrame) EVT_BUTTON(ID_SEARCH_SOUND, frmMain::_onSearchSoundIndex) EVT_LISTBOX(ID_SEARCH_RESULTS, frmMain::_onGotoSearchResult) EVT_RADIOBUTTON(ID_GHOST_0, frmMain::_onGhostFileChange) EVT_RADIOBUTTON(ID_GHOST_1, frmMain::_onGhostFileChange) EVT_RADIOBUTTON(ID_GHOST_2, frmMain::_onGhostFileChange) EVT_RADIOBUTTON(ID_GHOST_3, frmMain::_onGhostFileChange) EVT_SPINCTRL(wxID_ANY, frmMain::_onGhostIndexChange) EVT_TEXT(ID_ANIM_INDEX, frmMain::_onAnimChar) EVT_TIMER(ID_TIMER_ANIMATE, frmMain::_onTimer) EVT_CHECKBOX(ID_DRAW_MOOD, frmMain::_onToggleDrawMood) EVT_CHECKBOX(ID_DRAW_COORDINATES, frmMain::_onToggleDrawCoordinates) END_EVENT_TABLE() frmMain::frmMain() : wxFrame(NULL, wxID_ANY, L"Theme Hospital Animation Viewer") { wxSizer* pMainSizer = new wxBoxSizer(wxHORIZONTAL); wxSizer* pSidebarSizer = new wxBoxSizer(wxVERTICAL); #define def wxDefaultPosition, wxDefaultSize wxStaticBoxSizer *pThemeHospital = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Theme Hospital"); pThemeHospital->Add(new wxStaticText(this, wxID_ANY, L"Directory:"), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pThemeHospital->Add(m_txtTHPath = new wxTextCtrl(this, wxID_ANY, L"", def, wxTE_CENTRE), 1, wxALIGN_CENTER_VERTICAL | wxALL, 1); pThemeHospital->Add(new wxButton(this, ID_BROWSE, L"Browse..."), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pThemeHospital->Add(new wxButton(this, ID_LOAD, L"Load"), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pThemeHospital->Add(m_btnExport = new wxButton(this, ID_EXPORT, L"Export"), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pSidebarSizer->Add(pThemeHospital, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pPalette = new wxStaticBoxSizer(wxVERTICAL, this, L"Palette"); wxBoxSizer *pPaletteTop = new wxBoxSizer(wxHORIZONTAL); pPaletteTop->Add(new wxRadioButton(this, ID_GHOST_0, L"Standard"), 1); pPaletteTop->Add(new wxRadioButton(this, ID_GHOST_1, L"Ghost 1"), 1); pPaletteTop->Add(new wxRadioButton(this, ID_GHOST_2, L"Ghost 2"), 1); pPaletteTop->Add(new wxRadioButton(this, ID_GHOST_3, L"Ghost 66"), 1); m_iGhostFile = 0; m_iGhostIndex = 0; pPalette->Add(pPaletteTop, 0, wxEXPAND | wxALL, 1); pPalette->Add(new wxSpinCtrl(this, wxID_ANY, wxEmptyString, def, wxSP_ARROW_KEYS | wxSP_WRAP, 0, 255), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pPalette, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pAnimation = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Animation"); pAnimation->Add(new wxButton(this, ID_FIRST_ANIM, L"<<", def, wxBU_EXACTFIT), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pAnimation->Add(new wxButton(this, ID_PREV_ANIM, L"<", def, wxBU_EXACTFIT), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pAnimation->Add(m_txtAnimIndex = new wxTextCtrl(this, ID_ANIM_INDEX, L"0", def, wxTE_CENTRE), 1, wxALIGN_CENTER_VERTICAL | wxALL, 1); pAnimation->Add(new wxStaticText(this, wxID_ANY, L"of"), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pAnimation->Add(m_txtAnimCount = new wxTextCtrl(this, wxID_ANY, L"?", def, wxTE_CENTRE | wxTE_READONLY), 1, wxALIGN_CENTER_VERTICAL | wxALL, 1); pAnimation->Add(new wxButton(this, ID_NEXT_ANIM, L">", def, wxBU_EXACTFIT), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pAnimation->Add(new wxButton(this, ID_LAST_ANIM, L">>", def, wxBU_EXACTFIT), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pSidebarSizer->Add(pAnimation, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pFrame = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Frame"); pFrame->Add(new wxButton(this, ID_PREV_FRAME, L"<", def, wxBU_EXACTFIT), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pFrame->Add(m_txtFrameIndex = new wxTextCtrl(this, wxID_ANY, L"0", def, wxTE_CENTRE), 1, wxALIGN_CENTER_VERTICAL | wxALL, 1); pFrame->Add(new wxStaticText(this, wxID_ANY, L"of", def, wxALIGN_CENTRE), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pFrame->Add(m_txtFrameCount = new wxTextCtrl(this, wxID_ANY, L"?", def, wxTE_CENTRE | wxTE_READONLY), 1, wxALIGN_CENTER_VERTICAL | wxALL, 1); pFrame->Add(new wxButton(this, ID_NEXT_FRAME, L">", def, wxBU_EXACTFIT), 0, wxALIGN_CENTER_VERTICAL | wxALL, 1); pFrame->Add(m_btnPlayPause = new wxButton(this, ID_PLAY_PAUSE, L"Pause"), 1, wxALIGN_CENTER_VERTICAL | wxALL, 1); m_bPlayingAnimation = true; //m_bPlayingAnimation = false; pSidebarSizer->Add(pFrame, 0, wxEXPAND | wxALL, 0); #define ID(layer, id) (ID_LAYER_CHECKS + (layer) * 25 + (id)) wxStaticBoxSizer *pLayer0 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 0 (Patient Head)"); pLayer0->Add(new wxCheckBox(this, ID(0, 0), L"0"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 2), L"2"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 4), L"4"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 6), L"6"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 8), L"8"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 10), L"10"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 12), L"12"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 14), L"14"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 16), L"16"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 18), L"18"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 20), L"20"), 0, wxALIGN_CENTER | wxALL, 1); pLayer0->Add(new wxCheckBox(this, ID(0, 22), L"22"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer0, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer1 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 1 (Patient Clothes)"); pLayer1->Add(new wxCheckBox(this, ID(1, 0), L"0"), 0, wxALIGN_CENTER | wxALL, 1); pLayer1->Add(new wxCheckBox(this, ID(1, 2), L"2 (A)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer1->Add(new wxCheckBox(this, ID(1, 4), L"4 (B)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer1->Add(new wxCheckBox(this, ID(1, 6), L"6 (C)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer1->Add(new wxCheckBox(this, ID(1, 8), L"8"), 0, wxALIGN_CENTER | wxALL, 1); pLayer1->Add(new wxCheckBox(this, ID(1, 10), L"10"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer1, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer2 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 2 (Bandages / Patient Accessory)"); pLayer2->Add(new wxCheckBox(this, ID(2, 2), L"2 (Head / Alt Shoes)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer2->Add(new wxCheckBox(this, ID(2, 4), L"4 (Arm / Hat)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer2->Add(new wxCheckBox(this, ID(2, 6), L"6"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer2, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer3 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 3 (Bandages / Colour)"); pLayer3->Add(new wxCheckBox(this, ID(3, 0), L"0"), 0, wxALIGN_CENTER | wxALL, 1); pLayer3->Add(new wxCheckBox(this, ID(3, 2), L"2 (? / Yellow)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer3->Add(new wxCheckBox(this, ID(3, 4), L"4 (L Foot / Blue)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer3->Add(new wxCheckBox(this, ID(3, 6), L"6 (? / White)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer3->Add(new wxCheckBox(this, ID(3, 8), L"8 (R Arm)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer3->Add(new wxCheckBox(this, ID(3, 10), L"10 (R Foot)"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer3, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer4 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 4 (Bandages / Repair)"); pLayer4->Add(new wxCheckBox(this, ID(4, 0), L"0"), 0, wxALIGN_CENTER | wxALL, 1); pLayer4->Add(new wxCheckBox(this, ID(4, 2), L"2 (Head / Repair)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer4->Add(new wxCheckBox(this, ID(4, 4), L"4 (L Root)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer4->Add(new wxCheckBox(this, ID(4, 6), L"6"), 0, wxALIGN_CENTER | wxALL, 1); pLayer4->Add(new wxCheckBox(this, ID(4, 8), L"8 (R Arm)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer4->Add(new wxCheckBox(this, ID(4, 10), L"10 (R Foot)"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer4, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer5 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 5 (Staff Head)"); pLayer5->Add(new wxCheckBox(this, ID(5, 0), L"0"), 0, wxALIGN_CENTER | wxALL, 1); pLayer5->Add(new wxCheckBox(this, ID(5, 2), L"2 (W1)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer5->Add(new wxCheckBox(this, ID(5, 4), L"4 (B1)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer5->Add(new wxCheckBox(this, ID(5, 6), L"6 (W2)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer5->Add(new wxCheckBox(this, ID(5, 8), L"8 (B2)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer5->Add(new wxCheckBox(this, ID(5, 10), L"10"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer5, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer10 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 10 (Wall Colour / Smoke)"); pLayer10->Add(new wxCheckBox(this, ID(10, 2), L"2 (Yellow / Smoke)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer10->Add(new wxCheckBox(this, ID(10, 4), L"4 (Blue)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer10->Add(new wxCheckBox(this, ID(10, 6), L"6 (White)"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer10, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer11 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 11 (Wall Colour / Smoke / Screen)"); pLayer11->Add(new wxCheckBox(this, ID(11, 2), L"2 (Yellow / Smoke / On)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer11->Add(new wxCheckBox(this, ID(11, 4), L"4 (Blue)"), 0, wxALIGN_CENTER | wxALL, 1); pLayer11->Add(new wxCheckBox(this, ID(11, 6), L"6 (Green)"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer11, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pLayer12 = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Layer 12 (Smoke)"); pLayer12->Add(new wxCheckBox(this, ID(12, 2), L"2 (Smoke)"), 0, wxALIGN_CENTER | wxALL, 1); pSidebarSizer->Add(pLayer12, 0, wxEXPAND | wxALL, 0); wxStaticBoxSizer *pMoodOverlay = new wxStaticBoxSizer(wxVERTICAL, this, L"Overlays"); pMoodOverlay->Add(new wxCheckBox(this, ID_DRAW_MOOD, L"Draw mood overlay"), 0, wxEXPAND | wxALL, 1); wxBoxSizer *pMoodRow = new wxBoxSizer(wxHORIZONTAL); pMoodRow->Add(new wxStaticText(this, wxID_ANY, L"Marker position (click to move it):"), 0, wxEXPAND | wxRIGHT, 2); pMoodRow->Add(m_txtMoodPosition[0] = new wxTextCtrl(this, wxID_ANY, L"{0, 0}"), 1, wxEXPAND | wxRIGHT, 1); pMoodRow->Add(m_txtMoodPosition[1] = new wxTextCtrl(this, wxID_ANY, L"{0, 0, \"px\"}"), 1, wxEXPAND); pMoodOverlay->Add(pMoodRow, 1, wxEXPAND | wxALL, 2); pMoodOverlay->Add(new wxCheckBox(this, ID_DRAW_COORDINATES, L"Draw tile coodinates"), 0, wxEXPAND | wxALL, 0); pSidebarSizer->Add(pMoodOverlay, 0, wxEXPAND | wxALL, 0); m_bDrawMood = false; m_bDrawCoordinates = false; m_iMoodDrawX = 0; m_iMoodDrawY = 0; for(int iLayer = 0; iLayer < 13; ++iLayer) { wxCheckBox *pCheck = wxDynamicCast(FindWindow(ID(iLayer, 0)), wxCheckBox); if(pCheck != NULL) { pCheck->SetValue(true); m_mskLayers.set(iLayer, 0); } } Connect(ID(0, 0), ID(12, 24), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&frmMain::_onToggleMask); #undef ID wxStaticBoxSizer *pSearch = new wxStaticBoxSizer(wxVERTICAL, this, L"Search"); wxBoxSizer *pSearchButtons = new wxBoxSizer(wxHORIZONTAL); pSearchButtons->Add(new wxButton(this, ID_SEARCH_LAYER_ID, L"Layer/ID"), 0, wxALL, 1); pSearchButtons->Add(new wxButton(this, ID_SEARCH_FRAME, L"Frame"), 0, wxALL, 1); pSearchButtons->Add(new wxButton(this, ID_SEARCH_SOUND, L"Sound"), 0, wxALL, 1); pSearch->Add(pSearchButtons, 0); pSearch->Add(m_lstSearchResults = new wxListBox(this, ID_SEARCH_RESULTS), 1, wxEXPAND | wxALL, 1); wxStaticBoxSizer *pFrameFlags = new wxStaticBoxSizer(wxHORIZONTAL, this, L"Frame Flags"); wxBoxSizer *pFlags1 = new wxBoxSizer(wxVERTICAL); pFlags1->Add(m_txtFrameFlags[0] = new wxTextCtrl(this, wxID_ANY), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[0] = new wxCheckBox(this, wxID_ANY, L"2^0"), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[1] = new wxCheckBox(this, wxID_ANY, L"2^1"), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[2] = new wxCheckBox(this, wxID_ANY, L"2^2"), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[3] = new wxCheckBox(this, wxID_ANY, L"2^3"), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[4] = new wxCheckBox(this, wxID_ANY, L"2^4"), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[5] = new wxCheckBox(this, wxID_ANY, L"2^5"), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[6] = new wxCheckBox(this, wxID_ANY, L"2^6"), 0, wxEXPAND | wxALL, 2); pFlags1->Add(m_chkFrameFlags[7] = new wxCheckBox(this, wxID_ANY, L"2^7"), 0, wxEXPAND | wxALL, 2); pFrameFlags->Add(pFlags1, 1, wxEXPAND); wxBoxSizer *pFlags2 = new wxBoxSizer(wxVERTICAL); pFlags2->Add(m_txtFrameFlags[1] = new wxTextCtrl(this, wxID_ANY), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[8] = new wxCheckBox(this, wxID_ANY, L"2^8 (Animation Start)"), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[9] = new wxCheckBox(this, wxID_ANY, L"2^9"), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[10] = new wxCheckBox(this, wxID_ANY, L"2^10"), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[11] = new wxCheckBox(this, wxID_ANY, L"2^11"), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[12] = new wxCheckBox(this, wxID_ANY, L"2^12"), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[13] = new wxCheckBox(this, wxID_ANY, L"2^13"), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[14] = new wxCheckBox(this, wxID_ANY, L"2^14"), 0, wxEXPAND | wxALL, 2); pFlags2->Add(m_chkFrameFlags[15] = new wxCheckBox(this, wxID_ANY, L"2^15"), 0, wxEXPAND | wxALL, 2); pFrameFlags->Add(pFlags2, 1, wxEXPAND); pMainSizer->Add(pSidebarSizer, 0, wxEXPAND | wxALL, 2); wxSizer* pRightHandSizer = new wxBoxSizer(wxVERTICAL); pRightHandSizer->AddSpacer(1); pRightHandSizer->Add(m_panFrame = new wxPanel(this, wxID_ANY, def, wxBORDER_SIMPLE), 0, wxEXPAND | wxALL, 2); m_panFrame->Connect(wxEVT_PAINT, (wxObjectEventFunction)&frmMain::_onPanelPaint, NULL, this); m_panFrame->Connect(wxEVT_LEFT_UP, (wxObjectEventFunction)&frmMain::_onPanelClick, NULL, this); m_panFrame->SetMinSize(m_panFrame->ClientToWindowSize(wxSize(402, 402))); pRightHandSizer->AddSpacer(1); pRightHandSizer->Add(pSearch, 1, wxEXPAND | wxALL, 0); pRightHandSizer->Add(pFrameFlags, 0, wxEXPAND | wxALL, 0); pMainSizer->Add(pRightHandSizer, 1, wxEXPAND | wxALL, 0); SetBackgroundColour(m_btnPlayPause->GetBackgroundColour()); SetSizer(pMainSizer); SetMinSize(ClientToWindowSize(pMainSizer->CalcMin())); SetSize(GetMinSize()); load(); m_tmrAnimate.SetOwner(this, ID_TIMER_ANIMATE); m_tmrAnimate.Start(100); } void frmMain::_onBrowse(wxCommandEvent& WXUNUSED(evt)) { m_txtTHPath->SetValue(::wxDirSelector(L"Choose Theme Hospital root folder", m_txtTHPath->GetValue(), 0, wxDefaultPosition, this)); } void frmMain::_onLoad(wxCommandEvent& WXUNUSED(evt)) { ::wxInitAllImageHandlers(); load(); } void frmMain::_onExport(wxCommandEvent& WXUNUSED(evt)) { m_tmrAnimate.Stop(); ::wxInitAllImageHandlers(); export_png(); } void frmMain::load() { wxBusyCursor oBusy; wxString sPath = m_txtTHPath->GetValue(); if(sPath.IsEmpty()) return; if(sPath.Mid(sPath.Len() - 1) != wxFileName::GetPathSeparator()) { sPath += wxFileName::GetPathSeparator(); } if(!wxFileName::DirExists(sPath)) { ::wxMessageBox(L"Theme Hospital path non-existant", L"Load Animations", wxOK | wxICON_ERROR, this); return; } sPath = _getCaseSensitivePath(L"DATA", sPath); sPath += wxFileName::GetPathSeparator(); wxString aPath = _getCaseSensitivePath(L"VSPR-0", sPath); aPath += wxFileName::GetPathSeparator(); m_oAnims.setSpritePath(aPath); bool bXmlLoaded = false; wxString xmlFile = _getCaseSensitivePath(L"VSPR-0.xml", sPath); TiXmlDocument xmlDocument((const char*)xmlFile.mb_str()); if(wxFileName::FileExists(xmlFile) && xmlDocument.LoadFile()) { m_oAnims.loadXMLFile(&xmlDocument); m_oAnims.loadPaletteFile(_getCaseSensitivePath(L"MPALETTE.DAT", sPath)); m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST1.DAT", sPath), 1); m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST2.DAT", sPath), 2); m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST66.DAT", sPath), 3); bXmlLoaded = true; m_btnExport->Disable(); } else if(!m_oAnims.loadAnimationFile(_getCaseSensitivePath(L"VSTART-1.ANI", sPath)) ||!m_oAnims.loadFrameFile(_getCaseSensitivePath(L"VFRA-1.ANI", sPath)) ||!m_oAnims.loadListFile(_getCaseSensitivePath(L"VLIST-1.ANI", sPath)) ||!m_oAnims.loadElementFile(_getCaseSensitivePath(L"VELE-1.ANI", sPath)) ||!m_oAnims.loadTableFile(_getCaseSensitivePath(L"VSPR-0.TAB", sPath)) ||!m_oAnims.loadSpriteFile(_getCaseSensitivePath(L"VSPR-0.DAT", sPath)) ||!m_oAnims.loadPaletteFile(_getCaseSensitivePath(L"MPALETTE.DAT", sPath)) ||!m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST1.DAT", sPath), 1) ||!m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST2.DAT", sPath), 2) ||!m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST66.DAT", sPath), 3)) { ::wxMessageBox(L"Cannot load one or more data files", L"Load Animations", wxOK | wxICON_ERROR, this); } if(!bXmlLoaded) { m_oAnims.markDuplicates(); } m_txtAnimCount->SetValue(wxString::Format(L"%u", (int)m_oAnims.getAnimationCount())); m_imgBackground.Create(400, 400); { unsigned char* pData = m_imgBackground.GetData(); unsigned char cPrimary = 0xFF; unsigned char cSecondary = 0xE0; for(int y = 0; y < 400; ++y) { for(int x = 0; x < 400; x += 8) { memset(pData, cPrimary , 4 * 3); pData += 4 * 3; memset(pData, cSecondary, 4 * 3); pData += 4 * 3; } if(y % 4 == 3) { cPrimary ^= cSecondary; cSecondary ^= cPrimary; cPrimary ^= cSecondary; } } wxBitmap bmpBackdrop(backdrop_xpm); wxBitmap bmpBackground(m_imgBackground); { wxMemoryDC dcBlit; dcBlit.SelectObject(bmpBackground); dcBlit.DrawBitmap(bmpBackdrop, 78, 170, true); } m_imgBackground = bmpBackground.ConvertToImage(); } _onAnimChange(0); } void frmMain::export_png() { wxBusyCursor oBusy; wxString sPath = m_txtTHPath->GetValue(); if(sPath.IsEmpty()) return; if(sPath.Mid(sPath.Len() - 1) != wxFileName::GetPathSeparator()) { sPath += wxFileName::GetPathSeparator(); } if(!wxFileName::DirExists(sPath)) { ::wxMessageBox(L"Theme Hospital path non-existant", L"Load Animations", wxOK | wxICON_ERROR, this); return; } wxString sdPath = _getCaseSensitivePath(L"DATA", sPath); sdPath += wxFileName::GetPathSeparator(); //wxDialog warnDialog(this, wxID_ANY, L"Export Warning"); //warnDialog::CreateButtonSizer(wxOK|wxCANCEL); bool bWriteFrames = false; int response = ::wxMessageBox(L"If you click Yes, the export process will write animation frames \n \ in separate folders and will run for about 20 minutes, and will create about 18,000 files on \n \ your hard disk (~250MB). \n If you click No, it will write the XML and element files only. This will create \n \ 2,950 files (~80MB) and is everything you need to modify graphics. As long as the XML file is present in \n \ the DATA folder, the Animation Viewer will use PNG sprites instead of Theme Hospital data files.", L"Export Warning", wxYES_NO | wxCANCEL); if( response == wxYES) { bWriteFrames = true; } if( response != wxCANCEL) { //Start with animations, then move on to sprite sheets (map tiles) if(!m_oAnims.loadAnimationFile(_getCaseSensitivePath(L"VSTART-1.ANI", sdPath)) ||!m_oAnims.loadFrameFile(_getCaseSensitivePath(L"VFRA-1.ANI", sdPath)) ||!m_oAnims.loadListFile(_getCaseSensitivePath(L"VLIST-1.ANI", sdPath)) ||!m_oAnims.loadElementFile(_getCaseSensitivePath(L"VELE-1.ANI", sdPath)) ||!m_oAnims.loadTableFile(_getCaseSensitivePath(L"VSPR-0.TAB", sdPath)) ||!m_oAnims.loadSpriteFile(_getCaseSensitivePath(L"VSPR-0.DAT",sdPath)) ||!m_oAnims.loadPaletteFile(_getCaseSensitivePath(L"MPALETTE.DAT", sdPath)) ||!m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST1.DAT", sdPath), 1) ||!m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST2.DAT", sdPath), 2) ||!m_oAnims.loadGhostFile(_getCaseSensitivePath(L"../QDATA/GHOST66.DAT", sdPath), 3)) { ::wxMessageBox(L"Cannot load one or more data files", L"Load Animations", wxOK | wxICON_ERROR, this); } m_oAnims.markDuplicates(); wxString aPath = _getCaseSensitivePath(L"VSPR-0", sdPath); aPath += wxFileName::GetPathSeparator(); if(!wxFileName::DirExists(aPath)) { wxFileName::Mkdir(aPath); } size_t iExportCount = m_oAnims.getAnimationCount(); wxFile f(_getCaseSensitivePath(L"VSPR-0export.log", sdPath), wxFile::write_append); wxFileOutputStream fos(f); wxTextOutputStream outputLog(fos); outputLog.WriteString(wxString::Format(L"File\tIndex\tFrame\tLayer\tID\tWidth\tHeight\tUnknown\n")); m_oAnims.writeTableDataHeader(&outputLog); wxFile fxml(_getCaseSensitivePath(L"VSPR-0.xml", sdPath), wxFile::write); wxFileOutputStream fosxml(fxml); wxTextOutputStream outputXml(fosxml); outputXml.WriteString(wxString::Format(L"\n")); outputXml.WriteString(wxString::Format(L"\n")); int iAnimationCount = 0; int iFrameCountTotal = 1; int iElementCount = 0; int iSpriteCount = 0; int iListIndex = 0; for(size_t iAnimation = 0; iAnimation < iExportCount; ++iAnimation) { if(!m_oAnims.isAnimationDuplicate(iAnimation) && m_oAnims.getFrameField(iAnimation) >= iFrameCountTotal) { wxString aiPath = aPath + wxString::Format(L"a%04u", iAnimation); if(!wxFileName::DirExists(aiPath)) { wxFileName::Mkdir(aiPath); } outputXml.WriteString(wxString::Format(L"\n", iAnimation, m_oAnims.getFrameField(iAnimation), m_oAnims.getUnknownField(iAnimation))); aiPath += wxFileName::GetPathSeparator(); size_t iFrameCount = m_oAnims.getFrameCount(iAnimation); for(size_t iFrame = 0; iFrame < iFrameCount; ++iFrame) { wxImage imgCanvas; th_frame_t* pFrame = m_oAnims.getFrameStruct(iAnimation,iFrame); outputXml.WriteString(wxString::Format(L"\t\n", iFrameCountTotal, iListIndex, pFrame->width, pFrame->height, pFrame->flags, pFrame->next)); wxSize oSize; m_oAnims.writeElementData(aPath, &outputLog, &outputXml, iAnimation, iFrame, &m_mskLayers, oSize, &iListIndex); if( bWriteFrames && oSize.x > 0 && oSize.y > 0 ) { if(!imgCanvas.IsOk()) { imgCanvas.Create(oSize.x, oSize.y, true); if(!imgCanvas.HasAlpha()) { imgCanvas.SetAlpha(); } for(int iX = 0; iX < oSize.x; ++iX) { for(int iY = 0; iY < oSize.y; ++iY) { //set completely transparent imgCanvas.SetAlpha(iX,iY,(unsigned char)0); } } } m_oAnims.drawFrame(imgCanvas, iAnimation, iFrame, &m_mskLayers, oSize, 0, 0); outputLog.WriteString(wxString::Format(L"%s\t%u\t%u\t%u\t%u\t%u\n", L"VSPR-0", iAnimation, iFrame, oSize.x, oSize.y, m_oAnims.getUnknownField(iAnimation))); } outputXml.WriteString(wxString::Format(L"\t\n")); iFrameCountTotal++; if( bWriteFrames && imgCanvas.IsOk() ) { if(!imgCanvas.SaveFile(aiPath + wxString::Format(L"a%u_f%u.png", iAnimation, iFrame),wxBITMAP_TYPE_PNG)) return; imgCanvas.Destroy(); } } outputXml.WriteString(wxString::Format(L"\n")); iAnimationCount++; } } //outputXml.WriteString(wxString::Format(L"\t\n", // iAnimationCount, iFrameCount, iElementCount, iSpriteCount)); outputXml.WriteString(wxString::Format(L"\n")); //Sprite sheet code for Data directory exportSpritesPage(false, sdPath, L"MONEY01V"); exportSpritesPage(false, sdPath, L"MPOINTER"); exportSpritesPage(true, sdPath, L"PANEL02V"); exportSpritesPage(true, sdPath, L"PANEL04V"); exportSpritesPage(true, sdPath, L"PULLDV"); exportSpritesPage(false, sdPath, L"VBLK-0"); exportSpritesPage(true, sdPath, L"WATCH01V"); //Skip DataM directory because it appears to be low-res versions of same //Sprite sheet code for QData directory wxString sqPath = _getCaseSensitivePath(L"QDATA", sPath); sqPath += wxFileName::GetPathSeparator(); exportSpritesPage(true, sqPath, L"AWARD03V", L"", L"AWARD02V.PAL"); exportSpritesPage(true, sqPath, L"BANK02V", L"", L"BANK01V.PAL"); exportSpritesPage(true, sqPath, L"DRUGN02V", L"", L"DRUGN01V.PAL"); exportSpritesPage(true, sqPath, L"FAME02V", L"", L"FAME01V.PAL"); exportSpritesPage(true, sqPath, L"FAX02V", L"", L"FAX01V.PAL"); exportSpritesPage(false, sqPath, L"FONT00V", sdPath); exportSpritesPage(false, sqPath, L"FONT01V", sdPath); exportSpritesPage(false, sqPath, L"FONT02V", sdPath); exportSpritesPage(false, sqPath, L"FONT04V", sdPath); exportSpritesPage(false, sqPath, L"FONT05V", sdPath); exportSpritesPage(false, sqPath, L"FONT09V", sdPath); exportSpritesPage(false, sqPath, L"FONT16V", sdPath); exportSpritesPage(false, sqPath, L"FONT18V", sdPath); exportSpritesPage(false, sqPath, L"FONT19V", sdPath); exportSpritesPage(false, sqPath, L"FONT24V", sdPath); exportSpritesPage(false, sqPath, L"FONT25V", sdPath); exportSpritesPage(false, sqPath, L"FONT26V", sdPath); exportSpritesPage(false, sqPath, L"FONT31V", sdPath); exportSpritesPage(false, sqPath, L"FONT34V", sdPath); exportSpritesPage(false, sqPath, L"FONT35V", sdPath); exportSpritesPage(false, sqPath, L"FONT36V", sdPath); exportSpritesPage(false, sqPath, L"FONT37V", sdPath); exportSpritesPage(false, sqPath, L"FONT38V", sdPath); exportSpritesPage(false, sqPath, L"FONT39V", sdPath); exportSpritesPage(false, sqPath, L"FONT40V", sdPath); exportSpritesPage(false, sqPath, L"FONT43V", sdPath); exportSpritesPage(false, sqPath, L"FONT44V", sdPath); exportSpritesPage(false, sqPath, L"FONT45V", sdPath); exportSpritesPage(false, sqPath, L"FONT46V", sdPath); exportSpritesPage(false, sqPath, L"FONT47V", sdPath); exportSpritesPage(false, sqPath, L"FONT50V", sdPath); exportSpritesPage(false, sqPath, L"FONT51V", sdPath); exportSpritesPage(false, sqPath, L"FONT60V", sdPath); exportSpritesPage(false, sqPath, L"FONT74V", sdPath); exportSpritesPage(false, sqPath, L"FONT100V", sdPath); exportSpritesPage(false, sqPath, L"FONT101V", sdPath); exportSpritesPage(false, sqPath, L"FONT102V", sdPath); exportSpritesPage(false, sqPath, L"FONT105V", sdPath); exportSpritesPage(false, sqPath, L"FONT106V", sdPath); exportSpritesPage(false, sqPath, L"FONT110V", sdPath); exportSpritesPage(false, sqPath, L"FONT111V", sdPath); exportSpritesPage(false, sqPath, L"FONT112V", sdPath); exportSpritesPage(false, sqPath, L"FONT113V", sdPath); exportSpritesPage(false, sqPath, L"FONT115V", sdPath); exportSpritesPage(false, sqPath, L"FONT120V", sdPath); exportSpritesPage(false, sqPath, L"FONT121V", sdPath); exportSpritesPage(false, sqPath, L"FONT122V", sdPath); exportSpritesPage(false, sqPath, L"FONT124V", sdPath); exportSpritesPage(false, sqPath, L"FONT250V", sdPath); exportSpritesPage(false, sqPath, L"FONT502V", sdPath); exportSpritesPage(true, sqPath, L"GRAPH02V", L"", L"GRAPH01V.PAL"); exportSpritesPage(true, sqPath, L"LETTR02V", L"", L"REP01V.PAL"); exportSpritesPage(true, sqPath, L"LOAD02V", L"", L"LOAD01V.PAL"); exportSpritesPage(true, sqPath, L"MAIN02M", L"", L"MAIN01M.PAL"); exportSpritesPage(true, sqPath, L"POL02V", L"", L"POL01V.PAL"); exportSpritesPage(true, sqPath, L"PREF02V", L"", L"PREF01V.PAL"); exportSpritesPage(true, sqPath, L"REP02V", L"", L"REP01V.PAL"); //exportSpritesPage(true, sqPath, L"REQ00V", sdPath); //exportSpritesPage(true, sqPath, L"REQ01V", sdPath); //exportSpritesPage(true, sqPath, L"REQ02V", sdPath); //exportSpritesPage(true, sqPath, L"REQ03V", sdPath); //exportSpritesPage(true, sqPath, L"REQ04V", sdPath); //exportSpritesPage(true, sqPath, L"REQ05V", sdPath); //exportSpritesPage(true, sqPath, L"REQ06V", sdPath); //exportSpritesPage(true, sqPath, L"REQ09V", sdPath); //exportSpritesPage(true, sqPath, L"REQ10V", sdPath); //exportSpritesPage(true, sqPath, L"REQ11V", sdPath); //exportSpritesPage(true, sqPath, L"REQ12V", sdPath); //exportSpritesPage(true, sqPath, L"REQ13V", sdPath); exportSpritesPage(true, sqPath, L"RES02V", L"", L"RES01V.PAL"); exportSpritesPage(true, sqPath, L"REP02V", L"", L"REP01V.PAL"); exportSpritesPage(true, sqPath, L"SPOINTER", sdPath); exportSpritesPage(true, sqPath, L"STAFF02V", L"", L"STAFF01V.PAL"); exportSpritesPage(true, sqPath, L"STAT02V", L"", L"STAT01V.PAL"); exportSpritesPage(true, sqPath, L"TOWN02V", L"", L"TOWN01V.PAL"); exportSpritesPage(true, sqPath, L"VER00V", L"", L"REP01V.PAL"); } } void frmMain::exportSpritesPage(bool bComplex, wxString sPath, wxString sFilename, wxString spPath, wxString sPalette) { if(spPath.length() == 0) { spPath = sPath; } if(!m_oAnims.loadTableFile(_getCaseSensitivePath(wxString::Format(L"%s.TAB",sFilename.wx_str()), sPath)) ||!m_oAnims.loadSpriteFile(_getCaseSensitivePath(wxString::Format(L"%s.DAT",sFilename.wx_str()), sPath)) ||!m_oAnims.loadPaletteFile(_getCaseSensitivePath(sPalette, spPath))) { return; } wxFile f(_getCaseSensitivePath(sFilename + L"export.log", sPath), wxFile::write); wxFileOutputStream fos(f); wxTextOutputStream outputLog(fos); outputLog.WriteString(wxString::Format(L"File\tIndex\tPalette\tComplex\tWidth\tHeight\n")); wxString aPath = _getCaseSensitivePath(sFilename, sPath); aPath += wxFileName::GetPathSeparator(); if(!wxFileName::DirExists(aPath)) { wxFileName::Mkdir(aPath); for(size_t i = 0; i < m_oAnims.getSpriteCount(); ++i) { Bitmap* pSpriteBitmap = m_oAnims.getSpriteBitmap(i, bComplex); if(pSpriteBitmap->getWidth() * pSpriteBitmap->getHeight() > 0) { wxImage imgSprite(pSpriteBitmap->getWidth(), pSpriteBitmap->getHeight(), false); pSpriteBitmap->blit(imgSprite, 0, 0, NULL, m_oAnims.getPalette(), 0x8000); if(!imgSprite.HasAlpha()) { imgSprite.SetAlpha(); } for(int iX = 0; iX < pSpriteBitmap->getWidth(); ++iX) { for(int iY = 0; iY < pSpriteBitmap->getHeight(); ++iY) { if(imgSprite.GetRed(iX,iY) == 255 && imgSprite.GetBlue(iX,iY) == 255) { imgSprite.SetAlpha(iX,iY,(unsigned char)0); } else { imgSprite.SetAlpha(iX,iY,(unsigned char)255); } } } if(!imgSprite.SaveFile(_getCaseSensitivePath(wxString::Format(L"s%u.png", i), aPath),wxBITMAP_TYPE_PNG)) return; outputLog.WriteString(wxString::Format(L"%s\t%u\t%s\t%u\t%u\n", sFilename.wx_str(), i, sPalette.wx_str(), pSpriteBitmap->getWidth(),pSpriteBitmap->getHeight())); } } } } void frmMain::_onToggleMask(wxCommandEvent& evt) { int iID = evt.GetId() - ID_LAYER_CHECKS; int iLayer = iID / 25; iID %= 25; if(evt.IsChecked()) m_mskLayers.set(iLayer, iID); else m_mskLayers.clear(iLayer, iID); m_panFrame->Refresh(false); } frmMain::~frmMain() { } void frmMain::_onFirstAnim(wxCommandEvent& evt) { if(m_iCurrentAnim > 0) _onAnimChange(0); } void frmMain::_onPrevAnim(wxCommandEvent& evt) { size_t iAnim = m_iCurrentAnim; while(iAnim > 0) { --iAnim; if(!m_oAnims.isAnimationDuplicate(iAnim)) { _onAnimChange(iAnim); break; } } } void frmMain::_onNextAnim(wxCommandEvent& evt) { size_t iAnim = m_iCurrentAnim + 1; while(iAnim < m_oAnims.getAnimationCount()) { if(!m_oAnims.isAnimationDuplicate(iAnim)) { _onAnimChange(iAnim); break; } iAnim++; } } void frmMain::_onLastAnim(wxCommandEvent& evt) { if(m_iCurrentAnim < m_oAnims.getAnimationCount() - 1) _onAnimChange(m_oAnims.getAnimationCount() - 1); } void frmMain::_onAnimChar(wxCommandEvent& evt) { long iAnim; if(evt.GetString().ToLong(&iAnim)) { if(iAnim >= 0 && iAnim < (long)m_oAnims.getAnimationCount()) { _onAnimChange((size_t)iAnim); } } } void frmMain::_onGhostFileChange(wxCommandEvent& evt) { m_iGhostFile = evt.GetId() - ID_GHOST_0; m_oAnims.setGhost(m_iGhostFile, m_iGhostIndex); m_panFrame->Refresh(false); } void frmMain::_onGhostIndexChange(wxSpinEvent& evt) { m_iGhostIndex = evt.GetPosition(); m_oAnims.setGhost(m_iGhostFile, m_iGhostIndex); m_panFrame->Refresh(false); } void frmMain::_onAnimChange(size_t iIndex) { m_iCurrentAnim = iIndex; m_txtAnimIndex->ChangeValue(wxString::Format(L"%u", (int)iIndex)); m_iCurrentFrame = 0; THLayerMask oMask; m_oAnims.getAnimationMask(iIndex, oMask); for(int iLayer = 0; iLayer < 13; ++iLayer) { for(int iId = 0; iId < 32; ++iId) { wxCheckBox *pCheck = wxDynamicCast(FindWindow(ID_LAYER_CHECKS + iLayer * 25 + iId), wxCheckBox); if(pCheck) { pCheck->Enable(oMask.isSet(iLayer, iId)); } } } m_panFrame->Refresh(false); m_txtFrameIndex->SetValue(wxString::Format(L"0")); m_txtFrameCount->SetValue(wxString::Format(L"%u", (int)m_oAnims.getFrameCount(iIndex))); } void frmMain::_onPlayPause(wxCommandEvent& evt) { m_bPlayingAnimation = !m_bPlayingAnimation; if(m_bPlayingAnimation) m_btnPlayPause->SetLabel(L"Pause"); else m_btnPlayPause->SetLabel(L"Play"); } void frmMain::_onPrevFrame(wxCommandEvent& evt) { if(m_oAnims.getAnimationCount() == 0) return; if(m_iCurrentFrame == 0) m_iCurrentFrame = m_oAnims.getFrameCount(m_iCurrentAnim) - 1; else m_iCurrentFrame = (m_iCurrentFrame - 1) % m_oAnims.getFrameCount(m_iCurrentAnim); m_txtFrameIndex->SetValue(wxString::Format(L"%u", m_iCurrentFrame)); m_panFrame->Refresh(false); } void frmMain::_onNextFrame(wxCommandEvent& evt) { if(m_oAnims.getAnimationCount() == 0) return; m_iCurrentFrame = (m_iCurrentFrame + 1) % m_oAnims.getFrameCount(m_iCurrentAnim); m_txtFrameIndex->SetValue(wxString::Format(L"%u", m_iCurrentFrame)); m_panFrame->Refresh(false); } void frmMain::_onTimer(wxTimerEvent& evt) { if(m_bPlayingAnimation) { if(m_oAnims.getAnimationCount() == 0) return; m_iCurrentFrame = (m_iCurrentFrame + 1) % m_oAnims.getFrameCount(m_iCurrentAnim); m_txtFrameIndex->SetValue(wxString::Format(L"%u", (int)m_iCurrentFrame)); m_panFrame->Refresh(false); } } void frmMain::_onToggleDrawMood(wxCommandEvent& evt) { m_bDrawMood = evt.IsChecked(); m_panFrame->Refresh(false); } void frmMain::_onToggleDrawCoordinates(wxCommandEvent& evt) { m_bDrawCoordinates = evt.IsChecked(); m_panFrame->Refresh(false); } void frmMain::_onPanelPaint(wxPaintEvent& evt) { wxPaintDC DC(m_panFrame); wxImage imgCanvas(400, 400, false); if(m_imgBackground.IsOk()) { memcpy(imgCanvas.GetData(), m_imgBackground.GetData(), 400 * 400 * 3); } else { memset(imgCanvas.GetData(), 0xFF, 400 * 400 * 3); } if(!imgCanvas.HasAlpha()) { imgCanvas.InitAlpha(); } for(int iX = 0; iX < 400; ++iX) { for(int iY = 0; iY < 400; ++iY) { //set completely opaque imgCanvas.SetAlpha(iX,iY,(unsigned char)255); } } wxSize oSize; m_oAnims.drawFrame(imgCanvas, m_iCurrentAnim, m_iCurrentFrame, &m_mskLayers, oSize); if(m_bDrawMood) { m_oAnims.drawFrame(imgCanvas, 4048, 0, &m_mskLayers, oSize, m_iMoodDrawX - 1, m_iMoodDrawY - 80); } th_frame_t *pFrame = m_oAnims.getFrameStruct(m_iCurrentAnim, m_iCurrentFrame); uint16_t iFlags = 0; if(pFrame) { iFlags = pFrame->flags; } int iFlags1 = (int)(iFlags & 0xFF); int iFlags2 = (int)(iFlags >> 8); m_txtFrameFlags[0]->SetValue(wxString::Format(L"0x%02x (%03i)", iFlags1, iFlags1)); m_txtFrameFlags[1]->SetValue(wxString::Format(L"0x%02x00 (256 * %03i)", iFlags2, iFlags2)); for(int i = 0; i < 16; ++i) m_chkFrameFlags[i]->SetValue((iFlags & (1 << i)) != 0); wxBitmap bmpCanvas(imgCanvas); DC.DrawBitmap(bmpCanvas, 1, 1, false); // Draw relative tile coordinates if (m_bDrawCoordinates) { for (int i = -1; i <= 1; ++i) { for (int j = -1; j <= 1; ++j) { _drawCoordinates(DC, i, j); } } } } void frmMain::_onPanelClick(wxMouseEvent& evt) { m_iMoodDrawX = evt.GetX() - 143; m_iMoodDrawY = evt.GetY() - 203; { double fX = (double)m_iMoodDrawX; double fY = (double)m_iMoodDrawY; fY = fY / 32.0; fX = fX / 64.0; fY -= fX; fX *= 2.0; fX += fY; m_txtMoodPosition[0]->SetValue(wxString::Format(L"{%.2f, %.2f}", fX, fY)); } m_txtMoodPosition[1]->SetValue(wxString::Format(L"{%i, %i, \"px\"}", m_iMoodDrawX, m_iMoodDrawY)); if(m_bDrawMood) m_panFrame->Refresh(false); } void frmMain::_onSearchLayerId(wxCommandEvent& evt) { int iLayer = ::wxGetNumberFromUser(L"Enter the layer number to search in (0 - 12)", L"Layer:", L"Search for Layer / ID Combo", 0, 0, 13, this); if(iLayer == -1) return; int iID = ::wxGetNumberFromUser(L"Enter the ID number to search for (0 - 24)", L"ID:", L"Search for Layer / ID Combo", 0, 0, 24, this); if(iID == -1) return; m_lstSearchResults->Clear(); wxBusyCursor oBusy; for(size_t i = 0; i < m_oAnims.getAnimationCount(); ++i) { if(m_oAnims.isAnimationDuplicate(i)) continue; THLayerMask mskAnim; m_oAnims.getAnimationMask(i, mskAnim); if(mskAnim.isSet(iLayer, iID)) { m_lstSearchResults->Append(wxString::Format(L"%i", (int)i)); } } } void frmMain::_onSearchFrame(wxCommandEvent& evt) { int iFrame = ::wxGetNumberFromUser(L"Enter the frame number to search for.", L"Frame:", L"Search for frame", 0, 0, 20000, this); if(iFrame == -1) return; m_lstSearchResults->Clear(); wxBusyCursor oBusy; for(size_t i = 0; i < m_oAnims.getAnimationCount(); ++i) { if(m_oAnims.isAnimationDuplicate(i)) continue; if(m_oAnims.doesAnimationIncludeFrame(i, iFrame)) { m_lstSearchResults->Append(wxString::Format(L"%i", (int)i)); } } } void frmMain::_onSearchSoundIndex(wxCommandEvent& evt) { int iFrame = ::wxGetNumberFromUser(L"Enter the sound index to search for.", L"Sound index:", L"Search for sound", 0, 0, 256, this); if(iFrame == -1) return; m_lstSearchResults->Clear(); wxBusyCursor oBusy; for(size_t i = 0; i < m_oAnims.getAnimationCount(); ++i) { if(m_oAnims.isAnimationDuplicate(i)) continue; size_t iCount = m_oAnims.getFrameCount(i); for(size_t j = 0; j < iCount; ++j) { if((m_oAnims.getFrameStruct(i, j)->flags & 0xFF) == iFrame) { m_lstSearchResults->Append(wxString::Format(L"%i", (int)i)); break; } } } } void frmMain::_onGotoSearchResult(wxCommandEvent& evt) { long iAnim; evt.GetString().ToLong(&iAnim); _onAnimChange(iAnim); } void frmMain::_drawCoordinates(wxPaintDC& DC, int i, int j) { int x = 122; // tile (0, 0) text start x-coordinate int y = 226; // tile (0, 0) text start y-coordinate wxString s; s.Printf(_T("(%2d,%2d)"), i, j); DC.DrawText(s, 32 * (i - j) + x, 16 * (i + j - 2) + y); } wxString frmMain::_getCaseSensitivePath(const wxString& sInsensitivePathPart, const wxString& sPath) { bool found; bool cont; if(!wxFileName::IsCaseSensitive()) { return sPath + sInsensitivePathPart; } wxString retStr(sPath); wxStringTokenizer pathTokenizer(sInsensitivePathPart, wxFileName::GetPathSeparator()); while(pathTokenizer.HasMoreTokens()) { wxDir dir(retStr); if(!dir.IsOpened()) { break; } wxString pathPart = pathTokenizer.GetNextToken(); wxString realName; cont = dir.GetFirst(&realName, wxEmptyString, wxDIR_DIRS|wxDIR_FILES|wxDIR_HIDDEN|wxDIR_DOTDOT); found = false; while(cont) { if(realName.Upper() == pathPart.Upper()) { if(retStr.Last() != wxFileName::GetPathSeparator()) { retStr += wxFileName::GetPathSeparator(); } retStr += realName; found = true; break; } cont = dir.GetNext(&realName); } if(!found) { retStr += wxFileName::GetPathSeparator(); retStr += pathPart; break; } } while(pathTokenizer.HasMoreTokens()) { wxString pathPart = pathTokenizer.GetNextToken(); if(retStr.Last() != wxFileName::GetPathSeparator()) { retStr += wxFileName::GetPathSeparator(); } retStr += pathPart; } return retStr; } CorsixTH-0.61/AnimView/frmMain.h000066400000000000000000000102061321660673500164340ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include "th.h" //#include class frmMain : public wxFrame { public: frmMain(); ~frmMain(); enum { ID_FIRST_ANIM = wxID_HIGHEST + 1, ID_PREV_ANIM, ID_ANIM_INDEX, ID_NEXT_ANIM, ID_LAST_ANIM, ID_PREV_FRAME, ID_NEXT_FRAME, ID_PLAY_PAUSE, ID_TIMER_ANIMATE, ID_SEARCH_LAYER_ID, ID_SEARCH_FRAME, ID_SEARCH_SOUND, ID_SEARCH_RESULTS, ID_GHOST_0, ID_GHOST_1, ID_GHOST_2, ID_GHOST_3, ID_LOAD, ID_BROWSE, ID_EXPORT, ID_DRAW_MOOD, ID_DRAW_COORDINATES, ID_LAYER_CHECKS, // Must be last ID }; void load(); void export_png(); void exportSpritesPage(bool bComplex, wxString sPath, wxString sFilename, wxString spPath=L"", wxString sPalette=L"MPALETTE.DAT"); //std::vector<_sprite_t> m_vSprites; protected: void _onLoad(wxCommandEvent& evt); void _onBrowse(wxCommandEvent& evt); void _onExport(wxCommandEvent& evt); void _onFirstAnim(wxCommandEvent& evt); void _onPrevAnim(wxCommandEvent& evt); void _onNextAnim(wxCommandEvent& evt); void _onLastAnim(wxCommandEvent& evt); void _onPrevFrame(wxCommandEvent& evt); void _onNextFrame(wxCommandEvent& evt); void _onPlayPause(wxCommandEvent& evt); void _onToggleMask(wxCommandEvent& evt); void _onToggleDrawMood(wxCommandEvent& evt); void _onToggleDrawCoordinates(wxCommandEvent& evt); void _onSearchLayerId(wxCommandEvent& evt); void _onSearchFrame(wxCommandEvent& evt); void _onSearchSoundIndex(wxCommandEvent& evt); void _onGotoSearchResult(wxCommandEvent& evt); void _onAnimChar(wxCommandEvent& evt); void _onGhostFileChange(wxCommandEvent& evt); void _onGhostIndexChange(wxSpinEvent& evt); void _onPanelPaint(wxPaintEvent& evt); void _onPanelClick(wxMouseEvent& evt); void _onTimer(wxTimerEvent& evt); void _onAnimChange(size_t iIndex); void _drawCoordinates(wxPaintDC& DC, int i, int j); wxString _getCaseSensitivePath(const wxString& sInsensitivePathPart, const wxString& sPath); THAnimations m_oAnims; THLayerMask m_mskLayers; wxImage m_imgBackground; wxTimer m_tmrAnimate; size_t m_iCurrentAnim; size_t m_iCurrentFrame; int m_iGhostFile; int m_iGhostIndex; int m_iMoodDrawX; int m_iMoodDrawY; bool m_bPlayingAnimation; bool m_bDrawMood; bool m_bDrawCoordinates; wxButton* m_btnPlayPause; wxButton* m_btnExport; wxTextCtrl* m_txtTHPath; wxTextCtrl* m_txtAnimIndex; wxTextCtrl* m_txtAnimCount; wxTextCtrl* m_txtFrameIndex; wxTextCtrl* m_txtFrameCount; wxTextCtrl* m_txtFrameFlags[2]; wxTextCtrl* m_txtMoodPosition[2]; wxCheckBox* m_chkFrameFlags[16]; wxListBox* m_lstSearchResults; wxPanel* m_panFrame; DECLARE_EVENT_TABLE(); }; CorsixTH-0.61/AnimView/frmSprites.cpp000066400000000000000000000175451321660673500175510ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "frmSprites.h" #include #include #include #include #include #include #include BEGIN_EVENT_TABLE(frmSprites, wxFrame) EVT_BUTTON(ID_LOAD, frmSprites::_onLoad) EVT_BUTTON(ID_BROWSE_TABLE, frmSprites::_onBrowseTable) EVT_BUTTON(ID_BROWSE_DATA, frmSprites::_onBrowseData) EVT_BUTTON(ID_BROWSE_PALETTE, frmSprites::_onBrowsePalette) EVT_BUTTON(ID_LOAD_COMPLEX, frmSprites::_onLoadComplex) EVT_BUTTON(ID_NEXT, frmSprites::_onNext) END_EVENT_TABLE() frmSprites::frmSprites() : wxFrame(NULL, wxID_ANY, L"Theme Hospital Sprite Viewer") { wxBoxSizer *pMainSizer = new wxBoxSizer(wxVERTICAL); wxStaticBoxSizer *pFiles = new wxStaticBoxSizer(wxVERTICAL, this, L"Files"); wxFlexGridSizer *pFilesGrid = new wxFlexGridSizer(4, 3, 2, 1); pFilesGrid->AddGrowableCol(1, 1); pFilesGrid->Add(new wxStaticText(this, wxID_ANY, L"Table:"), 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT); pFilesGrid->Add(m_txtTable = new wxTextCtrl(this, wxID_ANY, L"X:\\ThemeHospital\\hospital\\QData\\Font00V.tab"), 1, wxALIGN_CENTER_VERTICAL | wxEXPAND); pFilesGrid->Add(new wxButton(this, ID_BROWSE_TABLE, L"Browse..."), 0, wxALIGN_CENTER_VERTICAL); pFilesGrid->Add(new wxStaticText(this, wxID_ANY, L"Data:"), 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT); pFilesGrid->Add(m_txtData = new wxTextCtrl(this, wxID_ANY, L""), 1, wxALIGN_CENTER_VERTICAL | wxEXPAND); pFilesGrid->Add(new wxButton(this, ID_BROWSE_DATA, L"Browse..."), 0, wxALIGN_CENTER_VERTICAL); pFilesGrid->Add(new wxStaticText(this, wxID_ANY, L"Palette:"), 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT); pFilesGrid->Add(m_txtPalette = new wxTextCtrl(this, wxID_ANY, L"X:\\ThemeHospital\\hospital\\Data\\MPalette.dat"), 1, wxALIGN_CENTER_VERTICAL | wxEXPAND); pFilesGrid->Add(new wxButton(this, ID_BROWSE_PALETTE, L"Browse..."), 0, wxALIGN_CENTER_VERTICAL); pFiles->Add(pFilesGrid, 0, wxEXPAND | wxALL, 1); wxButton *pTmp; pFiles->Add(pTmp = new wxButton(this, ID_LOAD, L"Load Simple"), 0, wxALIGN_CENTER | wxALL, 1); pFiles->Add(pTmp = new wxButton(this, ID_LOAD_COMPLEX, L"Load Complex"), 0, wxALIGN_CENTER | wxALL, 1); pFiles->Add(pTmp = new wxButton(this, ID_NEXT, L"Next"), 0, wxALIGN_CENTER | wxALL, 1); SetBackgroundColour(pTmp->GetBackgroundColour()); pMainSizer->Add(pFiles, 0, wxEXPAND | wxALL, 2); wxStaticBoxSizer *pSprites = new wxStaticBoxSizer(wxVERTICAL, this, L"Sprites"); pSprites->Add(m_panFrame = new MyVScrolled(this), 1, wxEXPAND); pMainSizer->Add(pSprites, 1, wxEXPAND | wxALL, 2); m_panFrame->Connect(wxEVT_PAINT, (wxObjectEventFunction)&frmSprites::_onPanelPaint, NULL, this); SetSizer(pMainSizer); load(true); } frmSprites::~frmSprites() { } void frmSprites::_onLoad(wxCommandEvent& evt) { load(false); } void frmSprites::_onLoadComplex(wxCommandEvent& evt) { load(true); } void frmSprites::_onNext(wxCommandEvent& evt) { wxString s = m_txtTable->GetValue(); while(true) { const wxChar* sc = s.c_str(); for(size_t i = s.Length(); i > 0;) { --i; if('0' <= sc[i] && sc[i] <= '9') { s.SetChar(i, sc[i] + 1); if(sc[i] > '9') { s.SetChar(i, '0'); if(sc[i - 1] == '9') { s.SetChar(i - 1, '0'); return; } s.SetChar(i - 1, sc[i - 1] + 1); } break; } } if(::wxFileExists(s)) { m_txtTable->SetValue(s); return; } } } void frmSprites::load(bool bComplex) { if(!m_oAnims.loadTableFile(m_txtTable->GetValue()) ||!m_oAnims.loadSpriteFile(m_txtData->GetValue().IsEmpty() ? m_txtTable->GetValue().BeforeLast('.')+L".DAT" : m_txtData->GetValue()) ||!m_oAnims.loadPaletteFile(m_txtPalette->GetValue())) { ::wxMessageBox(L"Cannot load files"); return; } m_vSprites.clear(); for(size_t i = 0; i < m_oAnims.getSpriteCount(); ++i) { _sprite_t oSprite; Bitmap* pSpriteBitmap = m_oAnims.getSpriteBitmap(i, bComplex); oSprite.caption = wxString::Format(L"#%i (%ix%i)", (int)i, pSpriteBitmap->getWidth(), pSpriteBitmap->getHeight()); if(pSpriteBitmap->getWidth() * pSpriteBitmap->getHeight() > 0) { wxImage imgSprite(pSpriteBitmap->getWidth(), pSpriteBitmap->getHeight(), false); pSpriteBitmap->blit(imgSprite, 0, 0, NULL, m_oAnims.getPalette(), 0x8000); oSprite.bitmap = wxBitmap(imgSprite); } m_vSprites.push_back(oSprite); } m_panFrame->Refresh(); } void frmSprites::_onPanelPaint(wxPaintEvent& evt) { wxPaintDC dc(m_panFrame); int iAvailableWidth, iAvailableHeight; m_panFrame->GetClientSize(&iAvailableWidth, &iAvailableHeight); int iX = 0; int iTallest = 0; int iTotal = 0; int iY = -m_panFrame->GetVisibleRowsBegin(); for(std::vector<_sprite_t>::iterator itr = m_vSprites.begin(), itrEnd = m_vSprites.end(); itr != itrEnd; ++itr) { wxSize szLabel = dc.GetTextExtent(itr->caption); int iWidth = wxMax(szLabel.GetWidth(), itr->bitmap.IsOk() ? itr->bitmap.GetWidth() : 0); int iHeight = (itr->bitmap.IsOk() ? itr->bitmap.GetHeight() : 0) + szLabel.GetHeight() + 2; if(iWidth + iX > iAvailableWidth) { iY += iTallest; iTotal += iTallest; iX = iTallest = 0; } if (iY + iHeight >= 0 && iY < iAvailableHeight) { dc.DrawText(itr->caption, iX, iY); if(itr->bitmap.IsOk()) dc.DrawBitmap(itr->bitmap, iX, iY + szLabel.GetHeight() + 1); } iTallest = wxMax(iTallest, iHeight); iX += iWidth + 2; } iTotal += iTallest; // Add last row too. // Update the row count if it doesn't match. if (iTotal != m_panFrame->iMyCount) { m_panFrame->iMyCount = iTotal; m_panFrame->SetRowCount(iTotal); } } void frmSprites::_onBrowseTable(wxCommandEvent& WXUNUSED(evt)) { m_txtTable->SetValue(::wxFileSelector(L"Select location of Font00V.tab (DATA)", m_txtTable->GetValue(),L"Font00V.tab",L"tab",L"Tab files (*.tab)|*.tab" ,0, this)); } void frmSprites::_onBrowseData(wxCommandEvent& WXUNUSED(evt)) { m_txtData->SetValue(::wxFileSelector(L"Choose Theme Hospital data file", m_txtData->GetValue(),L"",L"dat",L"Dat files (*.dat)|*.dat", 0, this)); } void frmSprites::_onBrowsePalette(wxCommandEvent& WXUNUSED(evt)) { m_txtPalette->SetValue(::wxFileSelector(L"Select location of MPalette.dat (QDATA)", m_txtPalette->GetValue(),L"MPalette.dat",L"dat",L"Dat or Pal files (*.dat, *.pal)|*.dat;*.pal", 0, this)); } CorsixTH-0.61/AnimView/frmSprites.h000066400000000000000000000050731321660673500172070ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #pragma once #include #include #include #include #include #include #include #include #include #include "th.h" #include static const int ROW_COUNT = 1000; // Derived class to add scrollbars to the window. class MyVScrolled : public wxVScrolledWindow { public: MyVScrolled(wxWindow *parent) : wxVScrolledWindow(parent, wxID_ANY) { iMyCount = ROW_COUNT; } wxCoord OnGetRowHeight(size_t row) const { return 1; } wxCoord EstimateTotalHeight() const { return iMyCount; } int iMyCount; }; class frmSprites : public wxFrame { public: frmSprites(); ~frmSprites(); enum { ID_LOAD = wxID_HIGHEST + 1, ID_BROWSE_TABLE, ID_BROWSE_DATA, ID_BROWSE_PALETTE, ID_LOAD_COMPLEX, ID_NEXT, }; void load(bool bComplex); protected: struct _sprite_t { wxBitmap bitmap; wxString caption; }; void _onNext(wxCommandEvent& evt); void _onLoad(wxCommandEvent& evt); void _onLoadComplex(wxCommandEvent& evt); void _onPanelPaint(wxPaintEvent& evt); void _onBrowseData(wxCommandEvent& evt); void _onBrowsePalette(wxCommandEvent& evt); void _onBrowseTable(wxCommandEvent& evt); std::vector<_sprite_t> m_vSprites; THAnimations m_oAnims; wxTextCtrl* m_txtTable; wxTextCtrl* m_txtData; wxTextCtrl* m_txtPalette; MyVScrolled* m_panFrame; DECLARE_EVENT_TABLE(); }; CorsixTH-0.61/AnimView/rnc.cpp000066400000000000000000000262421321660673500161670ustar00rootroot00000000000000/* RNC decompression library. Original code was from http://www.yoda.arachsys.com/dk/utils.html, which links to http://www.yoda.arachsys.com/dk/utilsrc.zip which itself includes this LICENSE.TXT: The MIT License (MIT) Copyright (c) 2009 Jon Skeet, Simon Tatham Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Modifications made to the original code include: * Const correctness * Prebuilt CRC table * Indentation and code style */ #include "th.h" #define RNC_OK 0 #define RNC_FILE_IS_NOT_RNC -1 #define RNC_HUF_DECODE_ERROR -2 #define RNC_FILE_SIZE_MISMATCH -3 #define RNC_PACKED_CRC_ERROR -4 #define RNC_UNPACKED_CRC_ERROR -5 #define RNC_SIGNATURE 0x524E4301 /* "RNC\001" */ static const unsigned short rnc_crc_table[256] = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040, }; struct bit_stream { unsigned long bitbuf; /* holds between 16 and 32 bits */ int bitcount; /* how many bits does bitbuf hold? */ }; struct huf_table { int num; /* number of nodes in the tree */ struct { unsigned long code; int codelen; int value; } table[32]; }; /* * Calculate a CRC, the RNC way. */ static long rnc_crc(const unsigned char* data, long len) { unsigned short val = 0; while(len--) { val ^= *data++; val = (val >> 8) ^ rnc_crc_table[val & 0xFF]; } return val; } /* * Return the big-endian longword at p. */ static unsigned long blong (const unsigned char *p) { unsigned long n; n = p[0]; n = (n << 8) + p[1]; n = (n << 8) + p[2]; n = (n << 8) + p[3]; return n; } /* * Return the little-endian longword at p. */ static unsigned long llong (const unsigned char *p) { unsigned long n; n = p[3]; n = (n << 8) + p[2]; n = (n << 8) + p[1]; n = (n << 8) + p[0]; return n; } /* * Return the big-endian word at p. */ static unsigned long bword (const unsigned char *p) { unsigned long n; n = p[0]; n = (n << 8) + p[1]; return n; } /* * Return the little-endian word at p. */ static unsigned long lword (const unsigned char *p) { unsigned long n; n = p[1]; n = (n << 8) + p[0]; return n; } /* * Mirror the bottom n bits of x. */ static unsigned long mirror (unsigned long x, int n) { unsigned long top = 1 << (n-1), bottom = 1; while (top > bottom) { unsigned long mask = top | bottom; unsigned long masked = x & mask; if (masked != 0 && masked != mask) { x ^= mask; } top >>= 1; bottom <<= 1; } return x; } /* * Initialises a bit stream with the first two bytes of the packed * data. */ static void bitread_init (bit_stream *bs, const unsigned char **p) { bs->bitbuf = lword (*p); bs->bitcount = 16; } /* * Fixes up a bit stream after literals have been read out of the * data stream. */ static void bitread_fix (bit_stream *bs, const unsigned char **p) { bs->bitcount -= 16; bs->bitbuf &= (1<bitcount)-1; /* remove the top 16 bits */ bs->bitbuf |= (lword(*p)<bitcount);/* replace with what's at *p */ bs->bitcount += 16; } /* * Returns some bits. */ static unsigned long bit_peek (bit_stream *bs, const unsigned long mask) { return bs->bitbuf & mask; } /* * Advances the bit stream. */ static void bit_advance (bit_stream *bs, int n, const unsigned char **p) { bs->bitbuf >>= n; bs->bitcount -= n; if (bs->bitcount < 16) { (*p) += 2; bs->bitbuf |= (lword(*p)<bitcount); bs->bitcount += 16; } } /* * Reads some bits in one go (ie the above two routines combined). */ static unsigned long bit_read (bit_stream *bs, unsigned long mask, int n, const unsigned char **p) { unsigned long result = bit_peek(bs, mask); bit_advance(bs, n, p); return result; } /* * Read a Huffman table out of the bit stream and data stream given. */ static void read_huftable(huf_table *h, bit_stream *bs, const unsigned char **p) { int i, j, k, num; int leaflen[32]; int leafmax; unsigned long codeb; /* big-endian form of code */ num = bit_read(bs, 0x1F, 5, p); if(num == 0) { return; } leafmax = 1; for(i = 0; i < num; i++) { leaflen[i] = bit_read(bs, 0x0F, 4, p); if (leafmax < leaflen[i]) { leafmax = leaflen[i]; } } codeb = 0L; k = 0; for(i = 1; i <= leafmax; i++) { for(j = 0; j < num; j++) { if(leaflen[j] == i) { h->table[k].code = mirror(codeb, i); h->table[k].codelen = i; h->table[k].value = j; codeb++; k++; } } codeb <<= 1; } h->num = k; } /* * Read a value out of the bit stream using the given Huffman table. */ static unsigned long huf_read(huf_table *h, bit_stream *bs, const unsigned char **p) { int i; unsigned long val; for (i = 0; i < h->num; i++) { unsigned long mask = (1 << h->table[i].codelen) - 1; if(bit_peek(bs, mask) == h->table[i].code) { break; } } if(i == h->num) { return -1; } bit_advance(bs, h->table[i].codelen, p); val = h->table[i].value; if (val >= 2) { val = 1 << (val-1); val |= bit_read(bs, val-1, h->table[i].value - 1, p); } return val; } static int rnc_unpack(const unsigned char* input, unsigned char* output) { const unsigned char *inputend; unsigned char *outputend; bit_stream bs; huf_table raw, dist, len; unsigned long ch_count; unsigned long ret_len; unsigned out_crc; if(blong(input) != RNC_SIGNATURE) { return RNC_FILE_IS_NOT_RNC; } ret_len = blong(input + 4); outputend = output + ret_len; inputend = input + 18 + blong(input + 8); input += 18; /* skip header */ /* * Check the packed-data CRC. Also save the unpacked-data CRC * for later. */ if(rnc_crc(input, inputend-input) != bword(input - 4)) { return RNC_PACKED_CRC_ERROR; } out_crc = bword(input - 6); bitread_init(&bs, &input); bit_advance(&bs, 2, &input); /* discard first two bits */ /* * Process chunks. */ while (output < outputend) { read_huftable(&raw, &bs, &input); read_huftable(&dist, &bs, &input); read_huftable(&len, &bs, &input); ch_count = bit_read(&bs, 0xFFFF, 16, &input); while(true) { long length, posn; length = huf_read(&raw, &bs, &input); if(length == -1) { return RNC_HUF_DECODE_ERROR; } if(length) { while(length--) *output++ = *input++; bitread_fix(&bs, &input); } if(--ch_count <= 0) { break; } posn = huf_read(&dist, &bs, &input); if(posn == -1) { return RNC_HUF_DECODE_ERROR; } length = huf_read(&len, &bs, &input); if(length == -1) { return RNC_HUF_DECODE_ERROR; } posn += 1; length += 2; while(length--) { *output = output[-posn]; output++; } } } if(outputend != output) { return RNC_FILE_SIZE_MISMATCH; } /* * Check the unpacked-data CRC. */ if(rnc_crc(outputend - ret_len, ret_len) != out_crc) { return RNC_UNPACKED_CRC_ERROR; } return RNC_OK; } unsigned char* THAnimations::Decompress(unsigned char* pData, size_t& iLength) { unsigned long outlen = blong(pData + 4); unsigned char* outbuf = new unsigned char[outlen]; if(rnc_unpack(pData, outbuf) == RNC_OK) { delete[] pData; iLength = outlen; return outbuf; } else { delete[] pData; delete[] outbuf; iLength = 0; return NULL; } } CorsixTH-0.61/AnimView/th.cpp000066400000000000000000000737131321660673500160250ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th.h" #include #include #include #include #include static const unsigned char palette_upscale_map[0x40] = { 0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, 0x1C, 0x20, 0x24, 0x28, 0x2D, 0x31, 0x35, 0x39, 0x3D, 0x41, 0x45, 0x49, 0x4D, 0x51, 0x55, 0x59, 0x5D, 0x61, 0x65, 0x69, 0x6D, 0x71, 0x75, 0x79, 0x7D, 0x82, 0x86, 0x8A, 0x8E, 0x92, 0x96, 0x9A, 0x9E, 0xA2, 0xA6, 0xAA, 0xAE, 0xB2, 0xB6, 0xBA, 0xBE, 0xC2, 0xC6, 0xCA, 0xCE, 0xD2, 0xD7, 0xDB, 0xDF, 0xE3, 0xE7, 0xEB, 0xEF, 0xF3, 0xF7, 0xFB, 0xFF, }; class ChunkRenderer { public: ChunkRenderer(int width, int height, unsigned char *buffer = NULL) { m_data = buffer ? buffer : new unsigned char[width * height]; m_ptr = m_data; m_end = m_data + width * height; m_x = 0; m_y = 0; m_width = width; m_height = height; m_skip_eol = false; } ~ChunkRenderer() { delete[] m_data; } bool isDone() const { return m_ptr == m_end; } unsigned char* takeData() { unsigned char *buffer = m_data; m_data = 0; return buffer; } const unsigned char* getData() const { return m_data; } void chunkFillToEndOfLine(unsigned char value) { if(m_x != 0 || !m_skip_eol) { chunkFill(m_width - m_x, value); } m_skip_eol = false; } void chunkFinish(unsigned char value) { chunkFill(m_end - m_ptr, value); } void chunkFill(int npixels, unsigned char value) { _fixNpixels(npixels); if(npixels > 0) { memset(m_ptr, value, npixels); _incrementPosition(npixels); } } void chunkCopy(int npixels, const unsigned char* data) { _fixNpixels(npixels); if(npixels > 0) { memcpy(m_ptr, data, npixels); _incrementPosition(npixels); } } protected: inline void _fixNpixels(int& npixels) const { if(m_ptr + npixels > m_end) { npixels = m_end - m_ptr; } } inline void _incrementPosition(int npixels) { m_ptr += npixels; m_x += npixels; m_y += m_x / m_width; m_x = m_x % m_width; m_skip_eol = true; } unsigned char *m_data, *m_ptr, *m_end; int m_x, m_y, m_width, m_height; bool m_skip_eol; }; static void decode_chunks(ChunkRenderer& renderer, const unsigned char* data, int datalen, unsigned char transparent) { while(!renderer.isDone() && datalen > 0) { unsigned char b = *data; --datalen; ++data; if(b == 0) { renderer.chunkFillToEndOfLine(transparent); } else if(b < 0x80) { int amt = b; if(datalen < amt) amt = datalen; renderer.chunkCopy(amt, data); data += amt; datalen -= amt; } else { renderer.chunkFill(0x100 - b, transparent); } } renderer.chunkFinish(transparent); } static void decode_chunks_complex(ChunkRenderer& renderer, const unsigned char* data, int datalen, unsigned char transparent) { while(!renderer.isDone() && datalen > 0) { unsigned char b = *data; --datalen; ++data; if(b == 0) { renderer.chunkFillToEndOfLine(transparent); } else if(b < 0x40) { int amt = b; if(datalen < amt) amt = datalen; renderer.chunkCopy(amt, data); data += amt; datalen -= amt; } else if((b & 0xC0) == 0x80) { renderer.chunkFill(b - 0x80, transparent); } else { int amt; unsigned char colour = 0; if(b == 0xFF) { if(datalen < 2) { break; } amt = (int)data[0]; colour = data[1]; data += 2; datalen -= 2; } else { amt = b - 60 - (b & 0x80) / 2; if(datalen > 0) { colour = *data; ++data; --datalen; } } renderer.chunkFill(amt, colour); } } renderer.chunkFinish(transparent); } THLayerMask::THLayerMask() { clear(); } void THLayerMask::clear() { for(int i = 0; i < 13; ++i) m_iMask[i] = 0; } THAnimations::THAnimations() { m_pAnims = NULL; m_pFrames = NULL; m_pElementList = NULL; m_pElements = NULL; m_pSprites = NULL; m_pSpriteBitmaps = NULL; m_pChunks = NULL; m_pColours = NULL; m_pGhostMaps = new unsigned char[256 * 256 * 4]; for(int iMap = 0; iMap < 256 * 4; ++iMap) { for(int iCol = 0; iCol < 256; ++iCol) { m_pGhostMaps[iMap * 256 + iCol] = iCol; } } m_iGhostMapOffset = 0; m_iAnimCount = 0; m_iFrameCount = 0; m_iElementListCount = 0; m_iElementCount = 0; m_iSpriteCount = 0; m_iChunkCount = 0; m_iColourCount = 0; m_bXmlLoaded = false; } THAnimations::~THAnimations() { delete[] m_pAnims; delete[] m_pFrames; delete[] m_pElementList; delete[] m_pElements; delete[] m_pSprites; delete[] m_pSpriteBitmaps; delete[] m_pChunks; delete[] m_pColours; delete[] m_pGhostMaps; } bool THAnimations::isAnimationDuplicate(size_t iAnimation) { if(iAnimation < m_iAnimCount) return m_pAnims[iAnimation].unknown == 1; else return true; } size_t THAnimations::markDuplicates() { size_t iNonDuplicateCount = 0; std::map mapSeen; for(size_t i = 0; i < m_iAnimCount; ++i) { uint16_t iFrame = m_pAnims[i].frame; uint16_t iFirstFrame = iFrame; do { if(mapSeen[iFrame]) m_pAnims[i].unknown = 1; else mapSeen[iFrame] = true; iFrame = m_pFrames[iFrame].next; } while(iFrame != iFirstFrame); if(m_pAnims[i].unknown == 0) { ++iNonDuplicateCount; } } return iNonDuplicateCount; } bool THAnimations::loadFrameFile(wxString sFilename) { if(!_loadArray(m_pFrames, m_iFrameCount, sFilename)) return false; /* 256 is a common flag - could be x-flip. The lower byte can also take non-zero values - could be ghost palette indices. */ /* FILE *f = fopen("E:\\list.txt", "wt"); for(size_t i = 0; i < m_iFrameCount; ++i) { if(m_pFrames[i].flags != 0) { fprintf(f, "%i, %i,\n", (int)i, (int)m_pFrames[i].flags); } } fclose(f); */ return true; } bool THAnimations::loadTableFile(wxString sFilename) { delete[] m_pSpriteBitmaps; m_pSpriteBitmaps = 0; if(!_loadArray(m_pSprites, m_iSpriteCount, sFilename)) return false; m_pSpriteBitmaps = new Bitmap[m_iSpriteCount]; return true; } bool THAnimations::loadXMLFile(TiXmlDocument* xmlDocument) { TiXmlHandle hDoc(xmlDocument); TiXmlElement* pElem; TiXmlHandle hRoot(0); //navigate to pElem=hDoc.FirstChildElement().Element(); hRoot=TiXmlHandle(pElem); //count elements int iAnimation = 0; pElem=pElem->LastChild()->ToElement(); pElem->QueryIntAttribute("id",&iAnimation); m_pAnims = new th_anim_t[iAnimation]; for( int i=0; i <= iAnimation; i++ ) { m_pAnims[i].unknown = 1; m_pAnims[i].frame = 1; } //temporary hacks to avoid complicated allocation, the only drawback is that reducing //element count won't automatically reduce memory consumption, and increasing element //count might require a recompile. m_iAnimCount = iAnimation+1; m_iFrameCount = 11642; m_iElementListCount = 185864; m_iElementCount = 26557; m_iSpriteCount = 4399; m_pFrames = new th_frame_t[m_iFrameCount]; m_pElementList = new uint16_t[m_iElementListCount]; m_pElements = new th_element_t[m_iElementCount]; std::vector tmp_elementMap(m_iElementListCount, 0); m_pSprites = new th_sprite_t[m_iSpriteCount]; m_pSpriteImages = new wxImage[m_iSpriteCount]; m_pSpriteScaleFactors = new uint8_t[m_iSpriteCount]; //navigate to first element pElem=hRoot.FirstChild( "an" ).Element(); //pElem->QueryIntAttribute("id",&iAnimation); iAnimation = 0; int iFrame = 0; int tmpInteger = 0; int iNewListIndex = 0; int iOldElementCount = 0; int iNewElementCount = 0; int iOldElement = 0; m_pFrames[0].list_index = 0; m_pFrames[0].width = 0; m_pFrames[0].height = 0; m_pFrames[0].flags = 0; m_pFrames[0].next = 0; for( pElem; pElem; pElem=pElem->NextSiblingElement()) { pElem->QueryIntAttribute("id",&iAnimation); pElem->QueryIntAttribute("fr",&iFrame); m_pAnims[iAnimation].frame = iFrame; m_pAnims[iAnimation].unknown = 0; TiXmlElement* pFrameElement = pElem->FirstChildElement("fr"); for( pFrameElement; pFrameElement; pFrameElement=pFrameElement->NextSiblingElement()) { pFrameElement->QueryIntAttribute("id",&iFrame); //ignore original frame indexes, they are only for looking up "first elements" //pFrameElement->QueryIntAttribute("li",&iListIndex); //m_pElementList[iListIndex] = iFrame; if(iFrame < m_iFrameCount) { m_pFrames[iFrame].list_index = iNewListIndex; pFrameElement->QueryIntAttribute("w",&tmpInteger); m_pFrames[iFrame].width=tmpInteger; pFrameElement->QueryIntAttribute("h",&tmpInteger); m_pFrames[iFrame].height=tmpInteger; pFrameElement->QueryIntAttribute("fl",&tmpInteger); m_pFrames[iFrame].flags=tmpInteger; pFrameElement->QueryIntAttribute("nx",&tmpInteger); m_pFrames[iFrame].next=tmpInteger; TiXmlElement* pElementElement = pFrameElement->FirstChildElement("el"); for( pElementElement; pElementElement; pElementElement=pElementElement->NextSiblingElement()) { int iNewElement = 0; pElementElement->QueryIntAttribute("id",&iOldElement); //complex mapping of original element ids to new sequential id system if(iOldElement < iOldElementCount) { //this is a re-used element id from the old numbering system, so look up the new element id //in the new numbering system. iNewElement = tmp_elementMap.at(iOldElement); } else { if( iNewElementCount < m_iElementCount ) { tmp_elementMap[iOldElement] = iNewElementCount; iOldElementCount = iOldElement + 1; iNewElement = iNewElementCount; iNewElementCount++; //new fill fields in the new element pElementElement->QueryIntAttribute("fl",&tmpInteger); m_pElements[iNewElement].flags = tmpInteger; pElementElement->QueryIntAttribute("ox",&tmpInteger); m_pElements[iNewElement].offx = tmpInteger; pElementElement->QueryIntAttribute("oy",&tmpInteger); m_pElements[iNewElement].offy = tmpInteger; //pElementElement->QueryIntAttribute("tb",&tmpInteger); //m_pElements[iNewElement].table_position = tmpInteger; pElementElement->QueryIntAttribute("ly",&tmpInteger); m_pElements[iNewElement].layerid = tmpInteger; int iSprite = 0; pElementElement->QueryIntAttribute("sp",&iSprite); if(iSprite < m_iSpriteCount) { //set table position to Sprite ID * 6 (sizeof th_sprite_t) m_pElements[iNewElement].table_position = iSprite*6; //zero means "attribute found", 1 means "no such attribute" if(pElementElement->QueryIntAttribute("sf",&tmpInteger) == 0) { m_pSpriteScaleFactors[iSprite] = tmpInteger; pElementElement->QueryIntAttribute("w",&tmpInteger); m_pSprites[iSprite].width = tmpInteger/m_pSpriteScaleFactors[iSprite]; pElementElement->QueryIntAttribute("h",&tmpInteger); m_pSprites[iSprite].height = tmpInteger/m_pSpriteScaleFactors[iSprite]; } else { m_pSpriteScaleFactors[iSprite] = 1; pElementElement->QueryIntAttribute("w",&tmpInteger); m_pSprites[iSprite].width = tmpInteger; pElementElement->QueryIntAttribute("h",&tmpInteger); m_pSprites[iSprite].height = tmpInteger; } pElementElement->QueryIntAttribute("of",&tmpInteger); m_pSprites[iSprite].offset = tmpInteger; } } } m_pElementList[iNewListIndex] = iNewElement; iNewListIndex++; if(iNewListIndex >= m_iElementListCount) break; } m_pElementList[iNewListIndex] = 65535; iNewListIndex++; if(iNewListIndex >= m_iElementListCount) break; } } } m_bXmlLoaded = true; return m_bXmlLoaded; } void THAnimations::writeElementData(wxString aPath, wxTextOutputStream *outputLog, wxTextOutputStream *outputXml, size_t iAnimation, size_t iFrame, const THLayerMask* pMask, wxSize& size, int *iListIndex) { if(iAnimation >= m_iAnimCount) return; uint16_t iFrameIndex = m_pAnims[iAnimation].frame; while(iFrame--) { iFrameIndex = m_pFrames[iFrameIndex].next; } th_frame_t* pFrame = m_pFrames + iFrameIndex; th_element_t* pElement; uint32_t iOldListIndex = pFrame->list_index; int iFarX = 0; int iFarY = 0; int iNewListIndex = *iListIndex; while((pElement = _getElement(iOldListIndex))) { if(pElement->flags >> 4 != 1) { uint16_t iElementIndex = m_pElementList[iOldListIndex]; outputXml->WriteString(wxString::Format(L"\t\ttable_position, pElement->flags, pElement->offx, pElement->offy, pElement->layerid )); uint16_t iSpriteIndex = pElement->table_position / sizeof(th_sprite_t); wxString spriteFile = aPath + wxString::Format(L"a%04ue.png", iSpriteIndex); th_sprite_t* pSprite = m_pSprites + iSpriteIndex; int iRight = pElement->offx + pSprite->width; int iBottom = pElement->offy + pSprite->height; if(iRight > iFarX) iFarX = iRight; if(iBottom > iFarY) iFarY = iBottom; //if(pMask != NULL && !pMask->isSet(pElement->flags >> 4, pElement->layerid)) // continue; outputXml->WriteString(wxString::Format(L"sp='%u' of='%u' w='%u' h='%u'/>\n", iSpriteIndex, pSprite->offset, pSprite->width, pSprite->height )); if(!wxFileName::FileExists(spriteFile) && pSprite->width > 0 && pSprite->height > 0) { wxImage imgSprite(pSprite->width, pSprite->height, true); if(!imgSprite.HasAlpha()) { imgSprite.SetAlpha(); } for(int iX = 0; iX < pSprite->width; ++iX) { for(int iY = 0; iY < pSprite->height; ++iY) { imgSprite.SetAlpha(iX,iY,(unsigned char)0); } } //ignore element "mirroring" flags, they will cause the sprite to be written mirrored and then that sprite //will mirrored again when loaded later. getSpriteBitmap(iSpriteIndex)->blit(imgSprite, 0, 0, m_pGhostMaps + m_iGhostMapOffset, m_pColours, 0 & 0xF); if(!imgSprite.SaveFile(spriteFile,wxBITMAP_TYPE_PNG)) return; outputLog->WriteString(wxString::Format(L"E%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\n", iSpriteIndex, pElement->table_position, pElement->flags, pElement->layerid, pElement->offx, pElement->offy, iNewListIndex, sizeof(th_sprite_t), pSprite->width, pSprite->height, pSprite->offset)); } iNewListIndex++; } iOldListIndex++; } size.x = iFarX; size.y = iFarY; *iListIndex = iNewListIndex; } void THAnimations::writeTableDataHeader(wxTextOutputStream *outputLog) { outputLog->WriteString(wxString::Format(L"Element\tTablePos\tFlags\tLayerID\tXoff\tYoff\tListIndex\tSpriteSize\tWidth\tHeight\tOffset\n")); } bool THAnimations::loadPaletteFile(wxString sFilename) { if(!_loadArray(m_pColours, m_iColourCount, sFilename)) return false; for(size_t i = 0; i < m_iColourCount; ++i) { m_pColours[i].r = palette_upscale_map[m_pColours[i].r & 0x3F]; m_pColours[i].g = palette_upscale_map[m_pColours[i].g & 0x3F]; m_pColours[i].b = palette_upscale_map[m_pColours[i].b & 0x3F]; } return true; } bool THAnimations::loadGhostFile(wxString sFilename, int iIndex) { if(iIndex < 0 || iIndex >= 4) return false; unsigned char *pData = NULL; size_t iDataLen; if(!_loadArray(pData, iDataLen, sFilename)) return false; if(iDataLen != 256 * 256) { delete[] pData; return false; } memcpy(m_pGhostMaps + iIndex * 256 * 256, pData, 256 * 256); delete[] pData; return true; } void THAnimations::setGhost(int iFile, int iIndex) { m_iGhostMapOffset = iFile * 256 * 256 + iIndex * 256; } size_t THAnimations::getAnimationCount() { return m_iAnimCount; } size_t THAnimations::getSpriteCount() { return m_iSpriteCount; } void THAnimations::setSpritePath(wxString aPath) { m_sSpritePath = aPath; } void THAnimations::getAnimationMask(size_t iAnimation, THLayerMask& mskLayers) { mskLayers.clear(); if(iAnimation >= m_iAnimCount) return; uint16_t iFrameIndex = m_pAnims[iAnimation].frame; if(iFrameIndex >= m_iFrameCount) return; uint16_t iFirstFrameIndex = iFrameIndex; do { th_frame_t* pFrame = m_pFrames + iFrameIndex; uint32_t iListIndex = pFrame->list_index; th_element_t* pElement; while((pElement = _getElement(iListIndex++))) { mskLayers.set(pElement->flags >> 4, pElement->layerid); } iFrameIndex = m_pFrames[iFrameIndex].next; } while(iFrameIndex != iFirstFrameIndex); } size_t THAnimations::getFrameCount(size_t iAnimation) { if(iAnimation >= m_iAnimCount) return 0; size_t iCount = 0; uint16_t iFirstFrame = m_pAnims[iAnimation].frame; if(iFirstFrame < m_iFrameCount) { ++iCount; uint16_t iFrame = m_pFrames[iFirstFrame].next; while(iFrame != iFirstFrame && iFrame < m_iFrameCount && iCount < 1024) { ++iCount; iFrame = m_pFrames[iFrame].next; } } return iCount; } bool THAnimations::doesAnimationIncludeFrame(size_t iAnimation, size_t iFrame) { if(iAnimation >= m_iAnimCount || iFrame >= m_iFrameCount) return 0; uint16_t iFirstFrame = m_pAnims[iAnimation].frame; uint16_t iFrameNow = iFirstFrame; do { if(iFrameNow >= m_iFrameCount) break; if(iFrame == iFrameNow) return true; iFrameNow = m_pFrames[iFrameNow].next; } while(iFrameNow != iFirstFrame); return false; } Bitmap* THAnimations::getSpriteBitmap(size_t iSprite, bool bComplex) { if(iSprite >= m_iSpriteCount) return NULL; if(!m_pSpriteBitmaps[iSprite].IsOk()) { wxString spriteFile = m_sSpritePath + wxString::Format(L"a%04ue.png", (int)iSprite); th_sprite_t* pSprite = m_pSprites + iSprite; if(m_bXmlLoaded && wxFileName::FileExists(spriteFile)) { wxImage imgSprite(pSprite->width, pSprite->height, true); imgSprite.LoadFile(spriteFile,wxBITMAP_TYPE_PNG); m_pSpriteBitmaps[iSprite].create(pSprite->width, pSprite->height, imgSprite.GetData()); } else { ChunkRenderer oRenderer(pSprite->width, pSprite->height); (bComplex ? decode_chunks_complex : decode_chunks)(oRenderer, (const unsigned char*)m_pChunks + pSprite->offset, m_iChunkCount - pSprite->offset, 0xFF); m_pSpriteBitmaps[iSprite].create(pSprite->width, pSprite->height, oRenderer.getData()); } } return m_pSpriteBitmaps + iSprite; } th_frame_t* THAnimations::getFrameStruct(size_t iAnimation, size_t iFrame) { if(iAnimation >= m_iAnimCount) return 0; uint16_t iFrameIndex = m_pAnims[iAnimation].frame; while(iFrame--) { iFrameIndex = m_pFrames[iFrameIndex].next; } return &m_pFrames[iFrameIndex]; } void THAnimations::drawFrame(wxImage& imgCanvas, size_t iAnimation, size_t iFrame, const THLayerMask* pMask, wxSize& size, int iXOffset, int iYOffset) { if(iAnimation >= m_iAnimCount) return; uint16_t iFrameIndex = m_pAnims[iAnimation].frame; while(iFrame--) { iFrameIndex = m_pFrames[iFrameIndex].next; } th_frame_t* pFrame = m_pFrames + iFrameIndex; th_element_t* pElement; uint32_t iListIndex = pFrame->list_index; int iFarX = 0; int iFarY = 0; while((pElement = _getElement(iListIndex++))) { if(pMask != NULL && !pMask->isSet(pElement->flags >> 4, pElement->layerid)) continue; uint16_t iSpriteIndex = pElement->table_position / sizeof(th_sprite_t); th_sprite_t* pSprite = m_pSprites + iSpriteIndex; int iRight = pElement->offx + pSprite->width; int iBottom = pElement->offy + pSprite->height; if(iRight > iFarX) iFarX = iRight; if(iBottom > iFarY) iFarY = iBottom; wxString spriteFile = m_sSpritePath + wxString::Format(L"a%04ue.png", iSpriteIndex); if(m_bXmlLoaded && wxFileName::FileExists(spriteFile)) { copySpriteToCanvas(spriteFile, iSpriteIndex, imgCanvas, pElement->offx + iXOffset, pElement->offy + iYOffset, pElement->flags & 0xF); } else { getSpriteBitmap(iSpriteIndex)->blit(imgCanvas, pElement->offx + iXOffset, pElement->offy + iYOffset, m_pGhostMaps + m_iGhostMapOffset, m_pColours, pElement->flags & 0xF); } } size.x = iFarX; size.y = iFarY; } void THAnimations::copySpriteToCanvas(wxString spriteFile, int iSpriteIndex, wxImage& imgCanvas, int iX, int iY, int iFlags) { if(!m_pSpriteImages[iSpriteIndex].IsOk()) { th_sprite_t* pSprite = m_pSprites + iSpriteIndex; if(m_pSpriteScaleFactors[iSpriteIndex] > 1) { int scale = m_pSpriteScaleFactors[iSpriteIndex]; m_pSpriteImages[iSpriteIndex].Create(pSprite->width*scale, pSprite->height*scale, true); m_pSpriteImages[iSpriteIndex].LoadFile(spriteFile,wxBITMAP_TYPE_PNG); m_pSpriteImages[iSpriteIndex].Rescale(pSprite->width, pSprite->height); } else { m_pSpriteImages[iSpriteIndex].Create(pSprite->width, pSprite->height, true); m_pSpriteImages[iSpriteIndex].LoadFile(spriteFile,wxBITMAP_TYPE_PNG); } //m_pSpriteImages[iSpriteIndex].SetMaskColour(0,0,0); if(!m_pSpriteImages[iSpriteIndex].HasAlpha()) { m_pSpriteImages[iSpriteIndex].InitAlpha(); } } for(int y = 0; y < m_pSpriteImages[iSpriteIndex].GetHeight(); ++y) { for(int x = 0; x < m_pSpriteImages[iSpriteIndex].GetWidth(); ++x) { int iDstX = iX + x; int iDstY = iY + y; if(iFlags & 0x2) iDstY = iY + m_pSpriteImages[iSpriteIndex].GetHeight() - 1 - y; if(iFlags & 0x1) iDstX = iX + m_pSpriteImages[iSpriteIndex].GetWidth() - 1 - x; if(m_pSpriteImages[iSpriteIndex].HasAlpha()) { if(!m_pSpriteImages[iSpriteIndex].IsTransparent(x,y,128)) { imgCanvas.SetRGB(iDstX,iDstY,m_pSpriteImages[iSpriteIndex].GetRed(x,y),m_pSpriteImages[iSpriteIndex].GetGreen(x,y), m_pSpriteImages[iSpriteIndex].GetBlue(x,y)); imgCanvas.SetAlpha(iDstX,iDstY,m_pSpriteImages[iSpriteIndex].GetAlpha(x,y)); } } else { imgCanvas.SetRGB(iDstX,iDstY,m_pSpriteImages[iSpriteIndex].GetRed(x,y),m_pSpriteImages[iSpriteIndex].GetGreen(x,y), m_pSpriteImages[iSpriteIndex].GetBlue(x,y)); //imgCanvas.SetAlpha(iDstX,iDstY,m_pSpriteImages[iSpriteIndex].GetAlpha(x,y)); } } } } th_element_t* THAnimations::_getElement(uint32_t iListIndex) { if(iListIndex >= m_iElementListCount) return NULL; uint16_t iElementIndex = m_pElementList[iListIndex]; if(iElementIndex > m_iElementCount) return NULL; return m_pElements + iElementIndex; } Bitmap::Bitmap() { m_iWidth = 0; m_iHeight = 0; m_pData = NULL; } Bitmap::~Bitmap() { delete[] m_pData; } void Bitmap::create(int iWidth, int iHeight) { delete[] m_pData; m_pData = new uint8_t[iWidth * iHeight]; m_iWidth = iWidth; m_iHeight = iHeight; memset(m_pData, 0xFF, iWidth * iHeight); } void Bitmap::create(int iWidth, int iHeight, const uint8_t* pData) { delete[] m_pData; m_pData = new uint8_t[iWidth * iHeight]; m_iWidth = iWidth; m_iHeight = iHeight; memcpy(m_pData, pData, iWidth * iHeight); } void Bitmap::blit(Bitmap& bmpCanvas, int iX, int iY, int iFlags) const { for(int y = 0; y < m_iHeight; ++y) { for(int x = 0; x < m_iWidth; ++x) { uint8_t src = pixel(x, y); if(src == 0xFF) continue; int iDstX = iX + x; int iDstY = iY + y; if(iFlags & 0x2) iDstY = iY + m_iHeight - 1 - y; if(iFlags & 0x1) iDstX = iX + m_iWidth - 1 - x; bmpCanvas.pixel(iDstX, iDstY) = src; } } } static inline void _merge(th_colour_t& dst, const th_colour_t& src) { dst.r = (uint8_t)(((unsigned int)dst.r + (unsigned int)src.r)/2); dst.g = (uint8_t)(((unsigned int)dst.g + (unsigned int)src.g)/2); dst.b = (uint8_t)(((unsigned int)dst.b + (unsigned int)src.b)/2); } void Bitmap::blit(wxImage& imgCanvas, int iX, int iY, const unsigned char* pColourTranslate, const th_colour_t* pPalette, int iFlags) const { if(m_iHeight == 0 || m_iWidth == 0) return; th_colour_t* pCanvas = (th_colour_t*)imgCanvas.GetData(); int iCanvasWidth = imgCanvas.GetWidth(); if(m_iHeight > 256 || m_iWidth > 256) { return; } for(int y = 0; y < m_iHeight; ++y) { for(int x = 0; x < m_iWidth; ++x) { uint8_t src = pixel(x, y); if(src == 0xFF && (iFlags & 0x8000) == 0) continue; if(pColourTranslate != NULL) { src = pColourTranslate[src]; if(src == 0xFF && (iFlags & 0x8000) == 0) continue; } int iDstX = iX + x; int iDstY = iY + y; if(iFlags & 0x2) iDstY = iY + m_iHeight - 1 - y; if(iFlags & 0x1) iDstX = iX + m_iWidth - 1 - x; th_colour_t srcc = pPalette[src]; if(iFlags & 0xC) { th_colour_t dstc = pCanvas[iDstY * iCanvasWidth + iDstX]; switch(iFlags & 0xC) { case 0x8: _merge(srcc, dstc); // fall-through case 0x4: _merge(srcc, dstc); break; } } pCanvas[iDstY * iCanvasWidth + iDstX] = srcc; if(imgCanvas.HasAlpha()) { //set completely opaque imgCanvas.SetAlpha(iDstX,iDstY,(unsigned char)255); } } } } CorsixTH-0.61/AnimView/th.h000066400000000000000000000176461321660673500154750ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Note that this file contains similar functionality to th.h / th_gfx.h from the main CorsixTH project. It is reimplemented rather than reused for good reasons: 1) Animations need to be rendered onto a wxWidgets canvas rather than onto an SDL or DirectX canvas. 2) Modifications and experimentation can be performed on this version before being implemented on the game copy, resulting in better code when the game version is implemented. 3) Simplicity rather than speed is the aim of this copy, so it will render slower than the game copy, but will be easier to understand and make changes to. */ #pragma once #include #include #include #include #include "tinyxml.h" #ifdef _MSC_VER typedef signed __int8 int8_t; typedef signed __int16 int16_t; typedef signed __int32 int32_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; #else #include #endif // _MSC_VER #pragma pack(push) #pragma pack(1) struct th_anim_t { uint16_t frame; uint16_t unknown; }; struct th_frame_t { uint32_t list_index; uint8_t width; uint8_t height; uint16_t flags; uint16_t next; }; struct th_element_t { uint16_t table_position; uint8_t offx; uint8_t offy; uint8_t flags; uint8_t layerid; }; struct th_sprite_t { uint32_t offset; uint8_t width; uint8_t height; }; struct th_colour_t { uint8_t r; uint8_t g; uint8_t b; }; #pragma pack(pop) class THLayerMask { public: THLayerMask(); inline void set(int iLayer, int iID) { if(0 <= iLayer && iLayer < 13 && 0 <= iID && iID < 32) m_iMask[iLayer] |= (1 << iID); } void clear(); inline void clear(int iLayer, int iID) { if(0 <= iLayer && iLayer < 13 && 0 <= iID && iID < 32) m_iMask[iLayer] &= ~(1 << iID); } inline bool isSet(int iLayer, int iID) const { if(0 <= iLayer && iLayer < 13 && 0 <= iID && iID < 32) return (m_iMask[iLayer] & (1 << iID)) != 0; else return false; } inline bool isSet(int iLayer) const { if(0 <= iLayer && iLayer < 13) for(int iId = 0; iId < 32; ++iId) { if((m_iMask[iLayer] & (1 << iId)) != 0) return true; } return false; } protected: uint32_t m_iMask[13]; }; class Bitmap { public: Bitmap(); ~Bitmap(); void create(int iWidth, int iHeight); void create(int iWidth, int iHeight, const uint8_t* pData); inline uint8_t pixel(int iX, int iY) const {return m_pData[iY * m_iWidth + iX];} inline uint8_t& pixel(int iX, int iY) {return m_pData[iY * m_iWidth + iX];} int getWidth() const {return m_iWidth;} int getHeight() const {return m_iHeight;} void blit(Bitmap& bmpCanvas, int iX, int iY, int iFlags = 0) const; void blit(wxImage& imgCanvas, int iX, int iY, const unsigned char* pColourTranslate, const th_colour_t* pPalette, int iFlags = 0) const; bool IsOk() {return m_pData != NULL;} protected: int m_iWidth; int m_iHeight; uint8_t* m_pData; }; class THAnimations { public: THAnimations(); ~THAnimations(); bool loadAnimationFile(wxString sFilename) {return _loadArray(m_pAnims, m_iAnimCount, sFilename);} bool loadFrameFile(wxString sFilename); bool loadListFile(wxString sFilename) {return _loadArray(m_pElementList, m_iElementListCount, sFilename);} bool loadElementFile(wxString sFilename) {return _loadArray(m_pElements, m_iElementCount, sFilename);} bool loadTableFile(wxString sFilename); bool loadSpriteFile(wxString sFilename) {return _loadArray(m_pChunks, m_iChunkCount, sFilename);} bool loadPaletteFile(wxString sFilename); bool loadGhostFile(wxString sFilename, int iIndex); bool loadXMLFile(TiXmlDocument* xmlDocument); void writeElementData(wxString aPath, wxTextOutputStream *outputLog, wxTextOutputStream *outputXml, size_t iAnimation, size_t iFrame, const THLayerMask* pMask, wxSize& size, int* iListIndex); void writeTableDataHeader(wxTextOutputStream *outputLog); size_t markDuplicates(); size_t getAnimationCount(); size_t getSpriteCount(); size_t getFrameCount(size_t iAnimation); uint16_t getUnknownField(size_t iAnimation) {return m_pAnims[iAnimation].unknown; } uint16_t getFrameField(size_t iAnimation) {return m_pAnims[iAnimation].frame; } //uint32_t getListIndexField(size_t iFrame) {return m_pFrames[iFrame].list_index; } //uint8_t getFrameWidthField(size_t iFrame) {return m_pFrames[iFrame].width; } //uint8_t getFrameHeightField(size_t iFrame) {return m_pFrames[iFrame].height; } th_frame_t* getFrameStruct(size_t iAnimation, size_t iFrame); bool isAnimationDuplicate(size_t iAnimation); bool doesAnimationIncludeFrame(size_t iAnimation, size_t iFrame); void getAnimationMask(size_t iAnimation, THLayerMask& mskLayers); void setSpritePath(wxString aPath); Bitmap* getSpriteBitmap(size_t iSprite, bool bComplex = false); th_colour_t* getPalette() {return m_pColours;} void setGhost(int iFile, int iIndex); void drawFrame(wxImage& imgCanvas, size_t iAnimation, size_t iFrame, const THLayerMask* pMask, wxSize& size, int iXOffset = 0, int iYOffset = 0); void copySpriteToCanvas(wxString spriteFile, int iSpriteIndex, wxImage& imgCanvas, int iX, int iY, int iFlags = 0); static unsigned char* Decompress(unsigned char* pData, size_t& iLength); protected: template bool _loadArray(T*& pArray, size_t& iCount, wxString sFilename) { if(pArray != NULL) { delete[] pArray; pArray = NULL; } iCount = 0; wxFile oFile(sFilename); if(!oFile.IsOpened()) return false; size_t iLen = oFile.Length(); unsigned char* pBuffer = new unsigned char[iLen]; oFile.Read(pBuffer, iLen); if(memcmp(pBuffer, "RNC\001", 4) == 0) { pBuffer = Decompress(pBuffer, iLen); if(!pBuffer) { return false; } } pArray = (T*)pBuffer; iCount = iLen / sizeof(T); return true; } th_element_t* _getElement(uint32_t iListIndex); th_anim_t* m_pAnims; th_frame_t* m_pFrames; uint16_t* m_pElementList; th_element_t* m_pElements; th_sprite_t* m_pSprites; Bitmap* m_pSpriteBitmaps; wxImage* m_pSpriteImages; uint8_t* m_pSpriteScaleFactors; uint8_t* m_pChunks; th_colour_t* m_pColours; unsigned char* m_pGhostMaps; size_t m_iGhostMapOffset; size_t m_iAnimCount; size_t m_iFrameCount; size_t m_iElementListCount; size_t m_iElementCount; size_t m_iSpriteCount; size_t m_iChunkCount; size_t m_iColourCount; bool m_bXmlLoaded; wxString m_sSpritePath; }; CorsixTH-0.61/AnimView/tinystr.cpp000066400000000000000000000051711321660673500171170ustar00rootroot00000000000000/* www.sourceforge.net/projects/tinyxml This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ #ifndef TIXML_USE_STL #include "tinystr.h" // Error value for find primitive const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1); // Null rep. TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } }; void TiXmlString::reserve (size_type cap) { if (cap > capacity()) { TiXmlString tmp; tmp.init(length(), cap); memcpy(tmp.start(), data(), length()); swap(tmp); } } TiXmlString& TiXmlString::assign(const char* str, size_type len) { size_type cap = capacity(); if (len > cap || cap > 3*(len + 8)) { TiXmlString tmp; tmp.init(len); memcpy(tmp.start(), str, len); swap(tmp); } else { memmove(start(), str, len); set_size(len); } return *this; } TiXmlString& TiXmlString::append(const char* str, size_type len) { size_type newsize = length() + len; if (newsize > capacity()) { reserve (newsize + capacity()); } memmove(finish(), str, len); set_size(newsize); return *this; } TiXmlString operator + (const TiXmlString & a, const TiXmlString & b) { TiXmlString tmp; tmp.reserve(a.length() + b.length()); tmp += a; tmp += b; return tmp; } TiXmlString operator + (const TiXmlString & a, const char* b) { TiXmlString tmp; TiXmlString::size_type b_len = static_cast( strlen(b) ); tmp.reserve(a.length() + b_len); tmp += a; tmp.append(b, b_len); return tmp; } TiXmlString operator + (const char* a, const TiXmlString & b) { TiXmlString tmp; TiXmlString::size_type a_len = static_cast( strlen(a) ); tmp.reserve(a_len + b.length()); tmp.append(a, a_len); tmp += b; return tmp; } #endif // TIXML_USE_STL CorsixTH-0.61/AnimView/tinystr.h000066400000000000000000000214311321660673500165610ustar00rootroot00000000000000/* www.sourceforge.net/projects/tinyxml This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ #ifndef TIXML_USE_STL #ifndef TIXML_STRING_INCLUDED #define TIXML_STRING_INCLUDED #include #include /* The support for explicit isn't that universal, and it isn't really required - it is used to check that the TiXmlString class isn't incorrectly used. Be nice to old compilers and macro it here: */ #if defined(_MSC_VER) && (_MSC_VER >= 1200 ) // Microsoft visual studio, version 6 and higher. #define TIXML_EXPLICIT explicit #elif defined(__GNUC__) && (__GNUC__ >= 3 ) // GCC version 3 and higher.s #define TIXML_EXPLICIT explicit #else #define TIXML_EXPLICIT #endif /* TiXmlString is an emulation of a subset of the std::string template. Its purpose is to allow compiling TinyXML on compilers with no or poor STL support. Only the member functions relevant to the TinyXML project have been implemented. The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase a string and there's no more room, we allocate a buffer twice as big as we need. */ class TiXmlString { public : // The size type used typedef size_t size_type; // Error value for find primitive static const size_type npos; // = -1; // TiXmlString empty constructor TiXmlString () : rep_(&nullrep_) { } // TiXmlString copy constructor TiXmlString ( const TiXmlString & copy) : rep_(0) { init(copy.length()); memcpy(start(), copy.data(), length()); } // TiXmlString constructor, based on a string TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0) { init( static_cast( strlen(copy) )); memcpy(start(), copy, length()); } // TiXmlString constructor, based on a string TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0) { init(len); memcpy(start(), str, len); } // TiXmlString destructor ~TiXmlString () { quit(); } TiXmlString& operator = (const char * copy) { return assign( copy, (size_type)strlen(copy)); } TiXmlString& operator = (const TiXmlString & copy) { return assign(copy.start(), copy.length()); } // += operator. Maps to append TiXmlString& operator += (const char * suffix) { return append(suffix, static_cast( strlen(suffix) )); } // += operator. Maps to append TiXmlString& operator += (char single) { return append(&single, 1); } // += operator. Maps to append TiXmlString& operator += (const TiXmlString & suffix) { return append(suffix.data(), suffix.length()); } // Convert a TiXmlString into a null-terminated char * const char * c_str () const { return rep_->str; } // Convert a TiXmlString into a char * (need not be null terminated). const char * data () const { return rep_->str; } // Return the length of a TiXmlString size_type length () const { return rep_->size; } // Alias for length() size_type size () const { return rep_->size; } // Checks if a TiXmlString is empty bool empty () const { return rep_->size == 0; } // Return capacity of string size_type capacity () const { return rep_->capacity; } // single char extraction const char& at (size_type index) const { assert( index < length() ); return rep_->str[ index ]; } // [] operator char& operator [] (size_type index) const { assert( index < length() ); return rep_->str[ index ]; } // find a char in a string. Return TiXmlString::npos if not found size_type find (char lookup) const { return find(lookup, 0); } // find a char in a string from an offset. Return TiXmlString::npos if not found size_type find (char tofind, size_type offset) const { if (offset >= length()) return npos; for (const char* p = c_str() + offset; *p != '\0'; ++p) { if (*p == tofind) return static_cast< size_type >( p - c_str() ); } return npos; } void clear () { //Lee: //The original was just too strange, though correct: // TiXmlString().swap(*this); //Instead use the quit & re-init: quit(); init(0,0); } /* Function to reserve a big amount of data when we know we'll need it. Be aware that this function DOES NOT clear the content of the TiXmlString if any exists. */ void reserve (size_type cap); TiXmlString& assign (const char* str, size_type len); TiXmlString& append (const char* str, size_type len); void swap (TiXmlString& other) { Rep* r = rep_; rep_ = other.rep_; other.rep_ = r; } private: void init(size_type sz) { init(sz, sz); } void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; } char* start() const { return rep_->str; } char* finish() const { return rep_->str + rep_->size; } struct Rep { size_type size, capacity; char str[1]; }; void init(size_type sz, size_type cap) { if (cap) { // Lee: the original form: // rep_ = static_cast(operator new(sizeof(Rep) + cap)); // doesn't work in some cases of new being overloaded. Switching // to the normal allocation, although use an 'int' for systems // that are overly picky about structure alignment. const size_type bytesNeeded = sizeof(Rep) + cap; const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); rep_ = reinterpret_cast( new int[ intsNeeded ] ); rep_->str[ rep_->size = sz ] = '\0'; rep_->capacity = cap; } else { rep_ = &nullrep_; } } void quit() { if (rep_ != &nullrep_) { // The rep_ is really an array of ints. (see the allocator, above). // Cast it back before delete, so the compiler won't incorrectly call destructors. delete [] ( reinterpret_cast( rep_ ) ); } } Rep * rep_; static Rep nullrep_; } ; inline bool operator == (const TiXmlString & a, const TiXmlString & b) { return ( a.length() == b.length() ) // optimization on some platforms && ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare } inline bool operator < (const TiXmlString & a, const TiXmlString & b) { return strcmp(a.c_str(), b.c_str()) < 0; } inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); } inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; } inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); } inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); } inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; } inline bool operator == (const char* a, const TiXmlString & b) { return b == a; } inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); } inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); } TiXmlString operator + (const TiXmlString & a, const TiXmlString & b); TiXmlString operator + (const TiXmlString & a, const char* b); TiXmlString operator + (const char* a, const TiXmlString & b); /* TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString. Only the operators that we need for TinyXML have been developed. */ class TiXmlOutStream : public TiXmlString { public : // TiXmlOutStream << operator. TiXmlOutStream & operator << (const TiXmlString & in) { *this += in; return *this; } // TiXmlOutStream << operator. TiXmlOutStream & operator << (const char * in) { *this += in; return *this; } } ; #endif // TIXML_STRING_INCLUDED #endif // TIXML_USE_STL CorsixTH-0.61/AnimView/tinyxml.cpp000066400000000000000000001234721321660673500171140ustar00rootroot00000000000000/* www.sourceforge.net/projects/tinyxml Original code by Lee Thomason (www.grinninglizard.com) This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ #include #ifdef TIXML_USE_STL #include #include #endif #include "tinyxml.h" FILE* TiXmlFOpen( const char* filename, const char* mode ); bool TiXmlBase::condenseWhiteSpace = true; // Microsoft compiler security FILE* TiXmlFOpen( const char* filename, const char* mode ) { #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) FILE* fp = 0; errno_t err = fopen_s( &fp, filename, mode ); if ( !err && fp ) return fp; return 0; #else return fopen( filename, mode ); #endif } void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString ) { int i=0; while( i<(int)str.length() ) { unsigned char c = (unsigned char) str[i]; if ( c == '&' && i < ( (int)str.length() - 2 ) && str[i+1] == '#' && str[i+2] == 'x' ) { // Hexadecimal character reference. // Pass through unchanged. // © -- copyright symbol, for example. // // The -1 is a bug fix from Rob Laveaux. It keeps // an overflow from happening if there is no ';'. // There are actually 2 ways to exit this loop - // while fails (error case) and break (semicolon found). // However, there is no mechanism (currently) for // this function to return an error. while ( i<(int)str.length()-1 ) { outString->append( str.c_str() + i, 1 ); ++i; if ( str[i] == ';' ) break; } } else if ( c == '&' ) { outString->append( entity[0].str, entity[0].strLength ); ++i; } else if ( c == '<' ) { outString->append( entity[1].str, entity[1].strLength ); ++i; } else if ( c == '>' ) { outString->append( entity[2].str, entity[2].strLength ); ++i; } else if ( c == '\"' ) { outString->append( entity[3].str, entity[3].strLength ); ++i; } else if ( c == '\'' ) { outString->append( entity[4].str, entity[4].strLength ); ++i; } else if ( c < 32 ) { // Easy pass at non-alpha/numeric/symbol // Below 32 is symbolic. char buf[ 32 ]; #if defined(TIXML_SNPRINTF) TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); #else sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); #endif //*ME: warning C4267: convert 'size_t' to 'int' //*ME: Int-Cast to make compiler happy ... outString->append( buf, (int)strlen( buf ) ); ++i; } else { //char realc = (char) c; //outString->append( &realc, 1 ); *outString += (char) c; // somewhat more efficient function call. ++i; } } } TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() { parent = 0; type = _type; firstChild = 0; lastChild = 0; prev = 0; next = 0; } TiXmlNode::~TiXmlNode() { TiXmlNode* node = firstChild; TiXmlNode* temp = 0; while ( node ) { temp = node; node = node->next; delete temp; } } void TiXmlNode::CopyTo( TiXmlNode* target ) const { target->SetValue (value.c_str() ); target->userData = userData; target->location = location; } void TiXmlNode::Clear() { TiXmlNode* node = firstChild; TiXmlNode* temp = 0; while ( node ) { temp = node; node = node->next; delete temp; } firstChild = 0; lastChild = 0; } TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) { assert( node->parent == 0 || node->parent == this ); assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() ); if ( node->Type() == TiXmlNode::TINYXML_DOCUMENT ) { delete node; if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } node->parent = this; node->prev = lastChild; node->next = 0; if ( lastChild ) lastChild->next = node; else firstChild = node; // it was an empty list. lastChild = node; return node; } TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) { if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) { if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } TiXmlNode* node = addThis.Clone(); if ( !node ) return 0; return LinkEndChild( node ); } TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) { if ( !beforeThis || beforeThis->parent != this ) { return 0; } if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) { if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } TiXmlNode* node = addThis.Clone(); if ( !node ) return 0; node->parent = this; node->next = beforeThis; node->prev = beforeThis->prev; if ( beforeThis->prev ) { beforeThis->prev->next = node; } else { assert( firstChild == beforeThis ); firstChild = node; } beforeThis->prev = node; return node; } TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) { if ( !afterThis || afterThis->parent != this ) { return 0; } if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) { if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } TiXmlNode* node = addThis.Clone(); if ( !node ) return 0; node->parent = this; node->prev = afterThis; node->next = afterThis->next; if ( afterThis->next ) { afterThis->next->prev = node; } else { assert( lastChild == afterThis ); lastChild = node; } afterThis->next = node; return node; } TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) { if ( !replaceThis ) return 0; if ( replaceThis->parent != this ) return 0; if ( withThis.ToDocument() ) { // A document can never be a child. Thanks to Noam. TiXmlDocument* document = GetDocument(); if ( document ) document->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } TiXmlNode* node = withThis.Clone(); if ( !node ) return 0; node->next = replaceThis->next; node->prev = replaceThis->prev; if ( replaceThis->next ) replaceThis->next->prev = node; else lastChild = node; if ( replaceThis->prev ) replaceThis->prev->next = node; else firstChild = node; delete replaceThis; node->parent = this; return node; } bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) { if ( !removeThis ) { return false; } if ( removeThis->parent != this ) { assert( 0 ); return false; } if ( removeThis->next ) removeThis->next->prev = removeThis->prev; else lastChild = removeThis->prev; if ( removeThis->prev ) removeThis->prev->next = removeThis->next; else firstChild = removeThis->next; delete removeThis; return true; } const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const { const TiXmlNode* node; for ( node = firstChild; node; node = node->next ) { if ( strcmp( node->Value(), _value ) == 0 ) return node; } return 0; } const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const { const TiXmlNode* node; for ( node = lastChild; node; node = node->prev ) { if ( strcmp( node->Value(), _value ) == 0 ) return node; } return 0; } const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const { if ( !previous ) { return FirstChild(); } else { assert( previous->parent == this ); return previous->NextSibling(); } } const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const { if ( !previous ) { return FirstChild( val ); } else { assert( previous->parent == this ); return previous->NextSibling( val ); } } const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const { const TiXmlNode* node; for ( node = next; node; node = node->next ) { if ( strcmp( node->Value(), _value ) == 0 ) return node; } return 0; } const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const { const TiXmlNode* node; for ( node = prev; node; node = node->prev ) { if ( strcmp( node->Value(), _value ) == 0 ) return node; } return 0; } void TiXmlElement::RemoveAttribute( const char * name ) { #ifdef TIXML_USE_STL TIXML_STRING str( name ); TiXmlAttribute* node = attributeSet.Find( str ); #else TiXmlAttribute* node = attributeSet.Find( name ); #endif if ( node ) { attributeSet.Remove( node ); delete node; } } const TiXmlElement* TiXmlNode::FirstChildElement() const { const TiXmlNode* node; for ( node = FirstChild(); node; node = node->NextSibling() ) { if ( node->ToElement() ) return node->ToElement(); } return 0; } const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const { const TiXmlNode* node; for ( node = FirstChild( _value ); node; node = node->NextSibling( _value ) ) { if ( node->ToElement() ) return node->ToElement(); } return 0; } const TiXmlElement* TiXmlNode::NextSiblingElement() const { const TiXmlNode* node; for ( node = NextSibling(); node; node = node->NextSibling() ) { if ( node->ToElement() ) return node->ToElement(); } return 0; } const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const { const TiXmlNode* node; for ( node = NextSibling( _value ); node; node = node->NextSibling( _value ) ) { if ( node->ToElement() ) return node->ToElement(); } return 0; } const TiXmlDocument* TiXmlNode::GetDocument() const { const TiXmlNode* node; for( node = this; node; node = node->parent ) { if ( node->ToDocument() ) return node->ToDocument(); } return 0; } TiXmlElement::TiXmlElement (const char * _value) : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) { firstChild = lastChild = 0; value = _value; } #ifdef TIXML_USE_STL TiXmlElement::TiXmlElement( const std::string& _value ) : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) { firstChild = lastChild = 0; value = _value; } #endif TiXmlElement::TiXmlElement( const TiXmlElement& copy) : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) { firstChild = lastChild = 0; copy.CopyTo( this ); } TiXmlElement& TiXmlElement::operator=( const TiXmlElement& base ) { ClearThis(); base.CopyTo( this ); return *this; } TiXmlElement::~TiXmlElement() { ClearThis(); } void TiXmlElement::ClearThis() { Clear(); while( attributeSet.First() ) { TiXmlAttribute* node = attributeSet.First(); attributeSet.Remove( node ); delete node; } } const char* TiXmlElement::Attribute( const char* name ) const { const TiXmlAttribute* node = attributeSet.Find( name ); if ( node ) return node->Value(); return 0; } #ifdef TIXML_USE_STL const std::string* TiXmlElement::Attribute( const std::string& name ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); if ( attrib ) return &attrib->ValueStr(); return 0; } #endif const char* TiXmlElement::Attribute( const char* name, int* i ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); const char* result = 0; if ( attrib ) { result = attrib->Value(); if ( i ) { attrib->QueryIntValue( i ); } } return result; } #ifdef TIXML_USE_STL const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); const std::string* result = 0; if ( attrib ) { result = &attrib->ValueStr(); if ( i ) { attrib->QueryIntValue( i ); } } return result; } #endif const char* TiXmlElement::Attribute( const char* name, double* d ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); const char* result = 0; if ( attrib ) { result = attrib->Value(); if ( d ) { attrib->QueryDoubleValue( d ); } } return result; } #ifdef TIXML_USE_STL const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); const std::string* result = 0; if ( attrib ) { result = &attrib->ValueStr(); if ( d ) { attrib->QueryDoubleValue( d ); } } return result; } #endif int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); if ( !attrib ) return TIXML_NO_ATTRIBUTE; return attrib->QueryIntValue( ival ); } int TiXmlElement::QueryUnsignedAttribute( const char* name, unsigned* value ) const { const TiXmlAttribute* node = attributeSet.Find( name ); if ( !node ) return TIXML_NO_ATTRIBUTE; int ival = 0; int result = node->QueryIntValue( &ival ); *value = (unsigned)ival; return result; } int TiXmlElement::QueryBoolAttribute( const char* name, bool* bval ) const { const TiXmlAttribute* node = attributeSet.Find( name ); if ( !node ) return TIXML_NO_ATTRIBUTE; int result = TIXML_WRONG_TYPE; if ( StringEqual( node->Value(), "true", true, TIXML_ENCODING_UNKNOWN ) || StringEqual( node->Value(), "yes", true, TIXML_ENCODING_UNKNOWN ) || StringEqual( node->Value(), "1", true, TIXML_ENCODING_UNKNOWN ) ) { *bval = true; result = TIXML_SUCCESS; } else if ( StringEqual( node->Value(), "false", true, TIXML_ENCODING_UNKNOWN ) || StringEqual( node->Value(), "no", true, TIXML_ENCODING_UNKNOWN ) || StringEqual( node->Value(), "0", true, TIXML_ENCODING_UNKNOWN ) ) { *bval = false; result = TIXML_SUCCESS; } return result; } #ifdef TIXML_USE_STL int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); if ( !attrib ) return TIXML_NO_ATTRIBUTE; return attrib->QueryIntValue( ival ); } #endif int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); if ( !attrib ) return TIXML_NO_ATTRIBUTE; return attrib->QueryDoubleValue( dval ); } #ifdef TIXML_USE_STL int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const { const TiXmlAttribute* attrib = attributeSet.Find( name ); if ( !attrib ) return TIXML_NO_ATTRIBUTE; return attrib->QueryDoubleValue( dval ); } #endif void TiXmlElement::SetAttribute( const char * name, int val ) { TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); if ( attrib ) { attrib->SetIntValue( val ); } } #ifdef TIXML_USE_STL void TiXmlElement::SetAttribute( const std::string& name, int val ) { TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); if ( attrib ) { attrib->SetIntValue( val ); } } #endif void TiXmlElement::SetDoubleAttribute( const char * name, double val ) { TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); if ( attrib ) { attrib->SetDoubleValue( val ); } } #ifdef TIXML_USE_STL void TiXmlElement::SetDoubleAttribute( const std::string& name, double val ) { TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); if ( attrib ) { attrib->SetDoubleValue( val ); } } #endif void TiXmlElement::SetAttribute( const char * cname, const char * cvalue ) { TiXmlAttribute* attrib = attributeSet.FindOrCreate( cname ); if ( attrib ) { attrib->SetValue( cvalue ); } } #ifdef TIXML_USE_STL void TiXmlElement::SetAttribute( const std::string& _name, const std::string& _value ) { TiXmlAttribute* attrib = attributeSet.FindOrCreate( _name ); if ( attrib ) { attrib->SetValue( _value ); } } #endif void TiXmlElement::Print( FILE* cfile, int depth ) const { int i; assert( cfile ); for ( i=0; iNext() ) { fprintf( cfile, " " ); attrib->Print( cfile, depth ); } // There are 3 different formatting approaches: // 1) An element without children is printed as a node // 2) An element with only a text child is printed as text // 3) An element with children is printed on multiple lines. TiXmlNode* node; if ( !firstChild ) { fprintf( cfile, " />" ); } else if ( firstChild == lastChild && firstChild->ToText() ) { fprintf( cfile, ">" ); firstChild->Print( cfile, depth + 1 ); fprintf( cfile, "", value.c_str() ); } else { fprintf( cfile, ">" ); for ( node = firstChild; node; node=node->NextSibling() ) { if ( !node->ToText() ) { fprintf( cfile, "\n" ); } node->Print( cfile, depth+1 ); } fprintf( cfile, "\n" ); for( i=0; i", value.c_str() ); } } void TiXmlElement::CopyTo( TiXmlElement* target ) const { // superclass: TiXmlNode::CopyTo( target ); // Element class: // Clone the attributes, then clone the children. const TiXmlAttribute* attribute = 0; for( attribute = attributeSet.First(); attribute; attribute = attribute->Next() ) { target->SetAttribute( attribute->Name(), attribute->Value() ); } TiXmlNode* node = 0; for ( node = firstChild; node; node = node->NextSibling() ) { target->LinkEndChild( node->Clone() ); } } bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const { if ( visitor->VisitEnter( *this, attributeSet.First() ) ) { for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) { if ( !node->Accept( visitor ) ) break; } } return visitor->VisitExit( *this ); } TiXmlNode* TiXmlElement::Clone() const { TiXmlElement* clone = new TiXmlElement( Value() ); if ( !clone ) return 0; CopyTo( clone ); return clone; } const char* TiXmlElement::GetText() const { const TiXmlNode* child = this->FirstChild(); if ( child ) { const TiXmlText* childText = child->ToText(); if ( childText ) { return childText->Value(); } } return 0; } TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) { tabsize = 4; useMicrosoftBOM = false; ClearError(); } TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) { tabsize = 4; useMicrosoftBOM = false; value = documentName; ClearError(); } #ifdef TIXML_USE_STL TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) { tabsize = 4; useMicrosoftBOM = false; value = documentName; ClearError(); } #endif TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) { copy.CopyTo( this ); } TiXmlDocument& TiXmlDocument::operator=( const TiXmlDocument& copy ) { Clear(); copy.CopyTo( this ); return *this; } bool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) { return LoadFile( Value(), encoding ); } bool TiXmlDocument::SaveFile() const { return SaveFile( Value() ); } bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding ) { TIXML_STRING filename( _filename ); value = filename; // reading in binary mode so that tinyxml can normalize the EOL FILE* file = TiXmlFOpen( value.c_str (), "rb" ); if ( file ) { bool result = LoadFile( file, encoding ); fclose( file ); return result; } else { SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); return false; } } bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding ) { if ( !file ) { SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); return false; } // Delete the existing data: Clear(); location.Clear(); // Get the file size, so we can pre-allocate the string. HUGE speed impact. long length = 0; fseek( file, 0, SEEK_END ); length = ftell( file ); fseek( file, 0, SEEK_SET ); // Strange case, but good to handle up front. if ( length <= 0 ) { SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); return false; } // Subtle bug here. TinyXml did use fgets. But from the XML spec: // 2.11 End-of-Line Handling // // // ...the XML processor MUST behave as if it normalized all line breaks in external // parsed entities (including the document entity) on input, before parsing, by translating // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to // a single #xA character. // // // It is not clear fgets does that, and certainly isn't clear it works cross platform. // Generally, you expect fgets to translate from the convention of the OS to the c/unix // convention, and not work generally. /* while( fgets( buf, sizeof(buf), file ) ) { data += buf; } */ char* buf = new char[ length+1 ]; buf[0] = 0; if ( fread( buf, length, 1, file ) != 1 ) { delete [] buf; SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); return false; } // Process the buffer in place to normalize new lines. (See comment above.) // Copies from the 'p' to 'q' pointer, where p can advance faster if // a newline-carriage return is hit. // // Wikipedia: // Systems based on ASCII or a compatible character set use either LF (Line feed, '\n', 0x0A, 10 in decimal) or // CR (Carriage return, '\r', 0x0D, 13 in decimal) individually, or CR followed by LF (CR+LF, 0x0D 0x0A)... // * LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others // * CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS // * CR: Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9 const char* p = buf; // the read head char* q = buf; // the write head const char CR = 0x0d; const char LF = 0x0a; buf[length] = 0; while( *p ) { assert( p < (buf+length) ); assert( q <= (buf+length) ); assert( q <= p ); if ( *p == CR ) { *q++ = LF; p++; if ( *p == LF ) { // check for CR+LF (and skip LF) p++; } } else { *q++ = *p++; } } assert( q <= (buf+length) ); *q = 0; Parse( buf, 0, encoding ); delete [] buf; return !Error(); } bool TiXmlDocument::SaveFile( const char * filename ) const { // The old c stuff lives on... FILE* fp = TiXmlFOpen( filename, "w" ); if ( fp ) { bool result = SaveFile( fp ); fclose( fp ); return result; } return false; } bool TiXmlDocument::SaveFile( FILE* fp ) const { if ( useMicrosoftBOM ) { const unsigned char TIXML_UTF_LEAD_0 = 0xefU; const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; fputc( TIXML_UTF_LEAD_0, fp ); fputc( TIXML_UTF_LEAD_1, fp ); fputc( TIXML_UTF_LEAD_2, fp ); } Print( fp, 0 ); return (ferror(fp) == 0); } void TiXmlDocument::CopyTo( TiXmlDocument* target ) const { TiXmlNode::CopyTo( target ); target->error = error; target->errorId = errorId; target->errorDesc = errorDesc; target->tabsize = tabsize; target->errorLocation = errorLocation; target->useMicrosoftBOM = useMicrosoftBOM; TiXmlNode* node = 0; for ( node = firstChild; node; node = node->NextSibling() ) { target->LinkEndChild( node->Clone() ); } } TiXmlNode* TiXmlDocument::Clone() const { TiXmlDocument* clone = new TiXmlDocument(); if ( !clone ) return 0; CopyTo( clone ); return clone; } void TiXmlDocument::Print( FILE* cfile, int depth ) const { assert( cfile ); for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) { node->Print( cfile, depth ); fprintf( cfile, "\n" ); } } bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const { if ( visitor->VisitEnter( *this ) ) { for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) { if ( !node->Accept( visitor ) ) break; } } return visitor->VisitExit( *this ); } const TiXmlAttribute* TiXmlAttribute::Next() const { // We are using knowledge of the sentinel. The sentinel // have a value or name. if ( next->value.empty() && next->name.empty() ) return 0; return next; } /* TiXmlAttribute* TiXmlAttribute::Next() { // We are using knowledge of the sentinel. The sentinel // have a value or name. if ( next->value.empty() && next->name.empty() ) return 0; return next; } */ const TiXmlAttribute* TiXmlAttribute::Previous() const { // We are using knowledge of the sentinel. The sentinel // have a value or name. if ( prev->value.empty() && prev->name.empty() ) return 0; return prev; } /* TiXmlAttribute* TiXmlAttribute::Previous() { // We are using knowledge of the sentinel. The sentinel // have a value or name. if ( prev->value.empty() && prev->name.empty() ) return 0; return prev; } */ void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const { TIXML_STRING n, v; EncodeString( name, &n ); EncodeString( value, &v ); if (value.find ('\"') == TIXML_STRING::npos) { if ( cfile ) { fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); } if ( str ) { (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\""; } } else { if ( cfile ) { fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); } if ( str ) { (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'"; } } } int TiXmlAttribute::QueryIntValue( int* ival ) const { if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 ) return TIXML_SUCCESS; return TIXML_WRONG_TYPE; } int TiXmlAttribute::QueryDoubleValue( double* dval ) const { if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 ) return TIXML_SUCCESS; return TIXML_WRONG_TYPE; } void TiXmlAttribute::SetIntValue( int _value ) { char buf [64]; #if defined(TIXML_SNPRINTF) TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); #else sprintf (buf, "%d", _value); #endif SetValue (buf); } void TiXmlAttribute::SetDoubleValue( double _value ) { char buf [256]; #if defined(TIXML_SNPRINTF) TIXML_SNPRINTF( buf, sizeof(buf), "%g", _value); #else sprintf (buf, "%g", _value); #endif SetValue (buf); } int TiXmlAttribute::IntValue() const { return atoi (value.c_str ()); } double TiXmlAttribute::DoubleValue() const { return atof (value.c_str ()); } TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) { copy.CopyTo( this ); } TiXmlComment& TiXmlComment::operator=( const TiXmlComment& base ) { Clear(); base.CopyTo( this ); return *this; } void TiXmlComment::Print( FILE* cfile, int depth ) const { assert( cfile ); for ( int i=0; i", value.c_str() ); } void TiXmlComment::CopyTo( TiXmlComment* target ) const { TiXmlNode::CopyTo( target ); } bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const { return visitor->Visit( *this ); } TiXmlNode* TiXmlComment::Clone() const { TiXmlComment* clone = new TiXmlComment(); if ( !clone ) return 0; CopyTo( clone ); return clone; } void TiXmlText::Print( FILE* cfile, int depth ) const { assert( cfile ); if ( cdata ) { int i; fprintf( cfile, "\n" ); for ( i=0; i\n", value.c_str() ); // unformatted output } else { TIXML_STRING buffer; EncodeString( value, &buffer ); fprintf( cfile, "%s", buffer.c_str() ); } } void TiXmlText::CopyTo( TiXmlText* target ) const { TiXmlNode::CopyTo( target ); target->cdata = cdata; } bool TiXmlText::Accept( TiXmlVisitor* visitor ) const { return visitor->Visit( *this ); } TiXmlNode* TiXmlText::Clone() const { TiXmlText* clone = 0; clone = new TiXmlText( "" ); if ( !clone ) return 0; CopyTo( clone ); return clone; } TiXmlDeclaration::TiXmlDeclaration( const char * _version, const char * _encoding, const char * _standalone ) : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) { version = _version; encoding = _encoding; standalone = _standalone; } #ifdef TIXML_USE_STL TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, const std::string& _encoding, const std::string& _standalone ) : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) { version = _version; encoding = _encoding; standalone = _standalone; } #endif TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) { copy.CopyTo( this ); } TiXmlDeclaration& TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) { Clear(); copy.CopyTo( this ); return *this; } void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const { if ( cfile ) fprintf( cfile, "" ); if ( str ) (*str) += "?>"; } void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const { TiXmlNode::CopyTo( target ); target->version = version; target->encoding = encoding; target->standalone = standalone; } bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const { return visitor->Visit( *this ); } TiXmlNode* TiXmlDeclaration::Clone() const { TiXmlDeclaration* clone = new TiXmlDeclaration(); if ( !clone ) return 0; CopyTo( clone ); return clone; } void TiXmlUnknown::Print( FILE* cfile, int depth ) const { for ( int i=0; i", value.c_str() ); } void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const { TiXmlNode::CopyTo( target ); } bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const { return visitor->Visit( *this ); } TiXmlNode* TiXmlUnknown::Clone() const { TiXmlUnknown* clone = new TiXmlUnknown(); if ( !clone ) return 0; CopyTo( clone ); return clone; } TiXmlAttributeSet::TiXmlAttributeSet() { sentinel.next = &sentinel; sentinel.prev = &sentinel; } TiXmlAttributeSet::~TiXmlAttributeSet() { assert( sentinel.next == &sentinel ); assert( sentinel.prev == &sentinel ); } void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) { #ifdef TIXML_USE_STL assert( !Find( TIXML_STRING( addMe->Name() ) ) ); // Shouldn't be multiply adding to the set. #else assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. #endif addMe->next = &sentinel; addMe->prev = sentinel.prev; sentinel.prev->next = addMe; sentinel.prev = addMe; } void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) { TiXmlAttribute* node; for( node = sentinel.next; node != &sentinel; node = node->next ) { if ( node == removeMe ) { node->prev->next = node->next; node->next->prev = node->prev; node->next = 0; node->prev = 0; return; } } assert( 0 ); // we tried to remove a non-linked attribute. } #ifdef TIXML_USE_STL TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const { for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) { if ( node->name == name ) return node; } return 0; } TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const std::string& _name ) { TiXmlAttribute* attrib = Find( _name ); if ( !attrib ) { attrib = new TiXmlAttribute(); Add( attrib ); attrib->SetName( _name ); } return attrib; } #endif TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const { for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) { if ( strcmp( node->name.c_str(), name ) == 0 ) return node; } return 0; } TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const char* _name ) { TiXmlAttribute* attrib = Find( _name ); if ( !attrib ) { attrib = new TiXmlAttribute(); Add( attrib ); attrib->SetName( _name ); } return attrib; } #ifdef TIXML_USE_STL std::istream& operator>> (std::istream & in, TiXmlNode & base) { TIXML_STRING tag; tag.reserve( 8 * 1000 ); base.StreamIn( &in, &tag ); base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); return in; } #endif #ifdef TIXML_USE_STL std::ostream& operator<< (std::ostream & out, const TiXmlNode & base) { TiXmlPrinter printer; printer.SetStreamPrinting(); base.Accept( &printer ); out << printer.Str(); return out; } std::string& operator<< (std::string& out, const TiXmlNode& base ) { TiXmlPrinter printer; printer.SetStreamPrinting(); base.Accept( &printer ); out.append( printer.Str() ); return out; } #endif TiXmlHandle TiXmlHandle::FirstChild() const { if ( node ) { TiXmlNode* child = node->FirstChild(); if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const { if ( node ) { TiXmlNode* child = node->FirstChild( value ); if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } TiXmlHandle TiXmlHandle::FirstChildElement() const { if ( node ) { TiXmlElement* child = node->FirstChildElement(); if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const { if ( node ) { TiXmlElement* child = node->FirstChildElement( value ); if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } TiXmlHandle TiXmlHandle::Child( int count ) const { if ( node ) { int i; TiXmlNode* child = node->FirstChild(); for ( i=0; child && iNextSibling(), ++i ) { // nothing } if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const { if ( node ) { int i; TiXmlNode* child = node->FirstChild( value ); for ( i=0; child && iNextSibling( value ), ++i ) { // nothing } if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } TiXmlHandle TiXmlHandle::ChildElement( int count ) const { if ( node ) { int i; TiXmlElement* child = node->FirstChildElement(); for ( i=0; child && iNextSiblingElement(), ++i ) { // nothing } if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const { if ( node ) { int i; TiXmlElement* child = node->FirstChildElement( value ); for ( i=0; child && iNextSiblingElement( value ), ++i ) { // nothing } if ( child ) return TiXmlHandle( child ); } return TiXmlHandle( 0 ); } bool TiXmlPrinter::VisitEnter( const TiXmlDocument& ) { return true; } bool TiXmlPrinter::VisitExit( const TiXmlDocument& ) { return true; } bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) { DoIndent(); buffer += "<"; buffer += element.Value(); for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) { buffer += " "; attrib->Print( 0, 0, &buffer ); } if ( !element.FirstChild() ) { buffer += " />"; DoLineBreak(); } else { buffer += ">"; if ( element.FirstChild()->ToText() && element.LastChild() == element.FirstChild() && element.FirstChild()->ToText()->CDATA() == false ) { simpleTextPrint = true; // no DoLineBreak()! } else { DoLineBreak(); } } ++depth; return true; } bool TiXmlPrinter::VisitExit( const TiXmlElement& element ) { --depth; if ( !element.FirstChild() ) { // nothing. } else { if ( simpleTextPrint ) { simpleTextPrint = false; } else { DoIndent(); } buffer += ""; DoLineBreak(); } return true; } bool TiXmlPrinter::Visit( const TiXmlText& text ) { if ( text.CDATA() ) { DoIndent(); buffer += ""; DoLineBreak(); } else if ( simpleTextPrint ) { TIXML_STRING str; TiXmlBase::EncodeString( text.ValueTStr(), &str ); buffer += str; } else { DoIndent(); TIXML_STRING str; TiXmlBase::EncodeString( text.ValueTStr(), &str ); buffer += str; DoLineBreak(); } return true; } bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration ) { DoIndent(); declaration.Print( 0, 0, &buffer ); DoLineBreak(); return true; } bool TiXmlPrinter::Visit( const TiXmlComment& comment ) { DoIndent(); buffer += ""; DoLineBreak(); return true; } bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown ) { DoIndent(); buffer += "<"; buffer += unknown.Value(); buffer += ">"; DoLineBreak(); return true; } CorsixTH-0.61/AnimView/tinyxml.h000066400000000000000000002154051321660673500165570ustar00rootroot00000000000000/* www.sourceforge.net/projects/tinyxml Original code by Lee Thomason (www.grinninglizard.com) This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ #ifndef TINYXML_INCLUDED #define TINYXML_INCLUDED #ifdef _MSC_VER #pragma warning( push ) #pragma warning( disable : 4530 ) #pragma warning( disable : 4786 ) #endif #include #include #include #include #include // Help out windows: #if defined( _DEBUG ) && !defined( DEBUG ) #define DEBUG #endif #ifdef TIXML_USE_STL #include #include #include #define TIXML_STRING std::string #else #include "tinystr.h" #define TIXML_STRING TiXmlString #endif // Deprecated library function hell. Compilers want to use the // new safe versions. This probably doesn't fully address the problem, // but it gets closer. There are too many compilers for me to fully // test. If you get compilation troubles, undefine TIXML_SAFE #define TIXML_SAFE #ifdef TIXML_SAFE #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) // Microsoft visual studio, version 2005 and higher. #define TIXML_SNPRINTF _snprintf_s #define TIXML_SSCANF sscanf_s #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) // Microsoft visual studio, version 6 and higher. //#pragma message( "Using _sn* functions." ) #define TIXML_SNPRINTF _snprintf #define TIXML_SSCANF sscanf #elif defined(__GNUC__) && (__GNUC__ >= 3 ) // GCC version 3 and higher.s //#warning( "Using sn* functions." ) #define TIXML_SNPRINTF snprintf #define TIXML_SSCANF sscanf #else #define TIXML_SNPRINTF snprintf #define TIXML_SSCANF sscanf #endif #endif class TiXmlDocument; class TiXmlElement; class TiXmlComment; class TiXmlUnknown; class TiXmlAttribute; class TiXmlText; class TiXmlDeclaration; class TiXmlParsingData; const int TIXML_MAJOR_VERSION = 2; const int TIXML_MINOR_VERSION = 6; const int TIXML_PATCH_VERSION = 2; /* Internal structure for tracking location of items in the XML file. */ struct TiXmlCursor { TiXmlCursor() { Clear(); } void Clear() { row = col = -1; } int row; // 0 based. int col; // 0 based. }; /** Implements the interface to the "Visitor pattern" (see the Accept() method.) If you call the Accept() method, it requires being passed a TiXmlVisitor class to handle callbacks. For nodes that contain other nodes (Document, Element) you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves are simply called with Visit(). If you return 'true' from a Visit method, recursive parsing will continue. If you return false, no children of this node or its sibilings will be Visited. All flavors of Visit methods have a default implementation that returns 'true' (continue visiting). You need to only override methods that are interesting to you. Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. You should never change the document from a callback. @sa TiXmlNode::Accept() */ class TiXmlVisitor { public: virtual ~TiXmlVisitor() {} /// Visit a document. virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; } /// Visit a document. virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; } /// Visit an element. virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; } /// Visit an element. virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; } /// Visit a declaration virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; } /// Visit a text node virtual bool Visit( const TiXmlText& /*text*/ ) { return true; } /// Visit a comment node virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; } /// Visit an unknown node virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; } }; // Only used by Attribute::Query functions enum { TIXML_SUCCESS, TIXML_NO_ATTRIBUTE, TIXML_WRONG_TYPE }; // Used by the parsing routines. enum TiXmlEncoding { TIXML_ENCODING_UNKNOWN, TIXML_ENCODING_UTF8, TIXML_ENCODING_LEGACY }; const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN; /** TiXmlBase is a base class for every class in TinyXml. It does little except to establish that TinyXml classes can be printed and provide some utility functions. In XML, the document and elements can contain other elements and other types of nodes. @verbatim A Document can contain: Element (container or leaf) Comment (leaf) Unknown (leaf) Declaration( leaf ) An Element can contain: Element (container or leaf) Text (leaf) Attributes (not on tree) Comment (leaf) Unknown (leaf) A Decleration contains: Attributes (not on tree) @endverbatim */ class TiXmlBase { friend class TiXmlNode; friend class TiXmlElement; friend class TiXmlDocument; public: TiXmlBase() : userData(0) {} virtual ~TiXmlBase() {} /** All TinyXml classes can print themselves to a filestream or the string class (TiXmlString in non-STL mode, std::string in STL mode.) Either or both cfile and str can be null. This is a formatted print, and will insert tabs and newlines. (For an unformatted stream, use the << operator.) */ virtual void Print( FILE* cfile, int depth ) const = 0; /** The world does not agree on whether white space should be kept or not. In order to make everyone happy, these global, static functions are provided to set whether or not TinyXml will condense all white space into a single space or not. The default is to condense. Note changing this value is not thread safe. */ static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } /// Return the current white space setting. static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } /** Return the position, in the original source file, of this node or attribute. The row and column are 1-based. (That is the first row and first column is 1,1). If the returns values are 0 or less, then the parser does not have a row and column value. Generally, the row and column value will be set when the TiXmlDocument::Load(), TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set when the DOM was created from operator>>. The values reflect the initial load. Once the DOM is modified programmatically (by adding or changing nodes and attributes) the new values will NOT update to reflect changes in the document. There is a minor performance cost to computing the row and column. Computation can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value. @sa TiXmlDocument::SetTabSize() */ int Row() const { return location.row + 1; } int Column() const { return location.col + 1; } ///< See Row() void SetUserData( void* user ) { userData = user; } ///< Set a pointer to arbitrary user data. void* GetUserData() { return userData; } ///< Get a pointer to arbitrary user data. const void* GetUserData() const { return userData; } ///< Get a pointer to arbitrary user data. // Table that returs, for a given lead byte, the total number of bytes // in the UTF-8 sequence. static const int utf8ByteTable[256]; virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0; /** Expands entities in a string. Note this should not contain the tag's '<', '>', etc, or they will be transformed into entities! */ static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out ); enum { TIXML_NO_ERROR = 0, TIXML_ERROR, TIXML_ERROR_OPENING_FILE, TIXML_ERROR_PARSING_ELEMENT, TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, TIXML_ERROR_READING_ELEMENT_VALUE, TIXML_ERROR_READING_ATTRIBUTES, TIXML_ERROR_PARSING_EMPTY, TIXML_ERROR_READING_END_TAG, TIXML_ERROR_PARSING_UNKNOWN, TIXML_ERROR_PARSING_COMMENT, TIXML_ERROR_PARSING_DECLARATION, TIXML_ERROR_DOCUMENT_EMPTY, TIXML_ERROR_EMBEDDED_NULL, TIXML_ERROR_PARSING_CDATA, TIXML_ERROR_DOCUMENT_TOP_ONLY, TIXML_ERROR_STRING_COUNT }; protected: static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding ); inline static bool IsWhiteSpace( char c ) { return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); } inline static bool IsWhiteSpace( int c ) { if ( c < 256 ) return IsWhiteSpace( (char) c ); return false; // Again, only truly correct for English/Latin...but usually works. } #ifdef TIXML_USE_STL static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ); static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag ); #endif /* Reads an XML name into the string provided. Returns a pointer just past the last character of the name, or 0 if the function has an error. */ static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding ); /* Reads text. Returns a pointer past the given end tag. Wickedly complex options, but it keeps the (sensitive) code in one place. */ static const char* ReadText( const char* in, // where to start TIXML_STRING* text, // the string read bool ignoreWhiteSpace, // whether to keep the white space const char* endTag, // what ends this text bool ignoreCase, // whether to ignore case in the end tag TiXmlEncoding encoding ); // the current encoding // If an entity has been found, transform it into a character. static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding ); // Get a character, while interpreting entities. // The length can be from 0 to 4 bytes. inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding ) { assert( p ); if ( encoding == TIXML_ENCODING_UTF8 ) { *length = utf8ByteTable[ *((const unsigned char*)p) ]; assert( *length >= 0 && *length < 5 ); } else { *length = 1; } if ( *length == 1 ) { if ( *p == '&' ) return GetEntity( p, _value, length, encoding ); *_value = *p; return p+1; } else if ( *length ) { //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe), // and the null terminator isn't needed for( int i=0; p[i] && i<*length; ++i ) { _value[i] = p[i]; } return p + (*length); } else { // Not valid text. return 0; } } // Return true if the next characters in the stream are any of the endTag sequences. // Ignore case only works for english, and should only be relied on when comparing // to English words: StringEqual( p, "version", true ) is fine. static bool StringEqual( const char* p, const char* endTag, bool ignoreCase, TiXmlEncoding encoding ); static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; TiXmlCursor location; /// Field containing a generic user pointer void* userData; // None of these methods are reliable for any language except English. // Good for approximation, not great for accuracy. static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding ); static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding ); inline static int ToLower( int v, TiXmlEncoding encoding ) { if ( encoding == TIXML_ENCODING_UTF8 ) { if ( v < 128 ) return tolower( v ); return v; } else { return tolower( v ); } } static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); private: TiXmlBase( const TiXmlBase& ); // not implemented. void operator=( const TiXmlBase& base ); // not allowed. struct Entity { const char* str; unsigned int strLength; char chr; }; enum { NUM_ENTITY = 5, MAX_ENTITY_LENGTH = 6 }; static Entity entity[ NUM_ENTITY ]; static bool condenseWhiteSpace; }; /** The parent class for everything in the Document Object Model. (Except for attributes). Nodes have siblings, a parent, and children. A node can be in a document, or stand on its own. The type of a TiXmlNode can be queried, and it can be cast to its more defined type. */ class TiXmlNode : public TiXmlBase { friend class TiXmlDocument; friend class TiXmlElement; public: #ifdef TIXML_USE_STL /** An input stream operator, for every class. Tolerant of newlines and formatting, but doesn't expect them. */ friend std::istream& operator >> (std::istream& in, TiXmlNode& base); /** An output stream operator, for every class. Note that this outputs without any newlines or formatting, as opposed to Print(), which includes tabs and new lines. The operator<< and operator>> are not completely symmetric. Writing a node to a stream is very well defined. You'll get a nice stream of output, without any extra whitespace or newlines. But reading is not as well defined. (As it always is.) If you create a TiXmlElement (for example) and read that from an input stream, the text needs to define an element or junk will result. This is true of all input streams, but it's worth keeping in mind. A TiXmlDocument will read nodes until it reads a root element, and all the children of that root element. */ friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base); /// Appends the XML node or attribute to a std::string. friend std::string& operator<< (std::string& out, const TiXmlNode& base ); #endif /** The types of XML nodes supported by TinyXml. (All the unsupported types are picked up by UNKNOWN.) */ enum NodeType { TINYXML_DOCUMENT, TINYXML_ELEMENT, TINYXML_COMMENT, TINYXML_UNKNOWN, TINYXML_TEXT, TINYXML_DECLARATION, TINYXML_TYPECOUNT }; virtual ~TiXmlNode(); /** The meaning of 'value' changes for the specific type of TiXmlNode. @verbatim Document: filename of the xml file Element: name of the element Comment: the comment text Unknown: the tag contents Text: the text string @endverbatim The subclasses will wrap this function. */ const char *Value() const { return value.c_str (); } #ifdef TIXML_USE_STL /** Return Value() as a std::string. If you only use STL, this is more efficient than calling Value(). Only available in STL mode. */ const std::string& ValueStr() const { return value; } #endif const TIXML_STRING& ValueTStr() const { return value; } /** Changes the value of the node. Defined as: @verbatim Document: filename of the xml file Element: name of the element Comment: the comment text Unknown: the tag contents Text: the text string @endverbatim */ void SetValue(const char * _value) { value = _value;} #ifdef TIXML_USE_STL /// STL std::string form. void SetValue( const std::string& _value ) { value = _value; } #endif /// Delete all the children of this node. Does not affect 'this'. void Clear(); /// One step up the DOM. TiXmlNode* Parent() { return parent; } const TiXmlNode* Parent() const { return parent; } const TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. TiXmlNode* FirstChild() { return firstChild; } const TiXmlNode* FirstChild( const char * value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. /// The first child of this node with the matching 'value'. Will be null if none found. TiXmlNode* FirstChild( const char * _value ) { // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe) // call the method, cast the return back to non-const. return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value )); } const TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. TiXmlNode* LastChild() { return lastChild; } const TiXmlNode* LastChild( const char * value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. TiXmlNode* LastChild( const char * _value ) { return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value )); } #ifdef TIXML_USE_STL const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); } ///< STL std::string form. TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); } ///< STL std::string form. const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); } ///< STL std::string form. TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); } ///< STL std::string form. #endif /** An alternate way to walk the children of a node. One way to iterate over nodes is: @verbatim for( child = parent->FirstChild(); child; child = child->NextSibling() ) @endverbatim IterateChildren does the same thing with the syntax: @verbatim child = 0; while( child = parent->IterateChildren( child ) ) @endverbatim IterateChildren takes the previous child as input and finds the next one. If the previous child is null, it returns the first. IterateChildren will return null when done. */ const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const; TiXmlNode* IterateChildren( const TiXmlNode* previous ) { return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) ); } /// This flavor of IterateChildren searches for children with a particular 'value' const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const; TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) { return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) ); } #ifdef TIXML_USE_STL const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. #endif /** Add a new node related to this. Adds a child past the LastChild. Returns a pointer to the new object or NULL if an error occurred. */ TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); /** Add a new node related to this. Adds a child past the LastChild. NOTE: the node to be added is passed by pointer, and will be henceforth owned (and deleted) by tinyXml. This method is efficient and avoids an extra copy, but should be used with care as it uses a different memory model than the other insert functions. @sa InsertEndChild */ TiXmlNode* LinkEndChild( TiXmlNode* addThis ); /** Add a new node related to this. Adds a child before the specified child. Returns a pointer to the new object or NULL if an error occurred. */ TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); /** Add a new node related to this. Adds a child after the specified child. Returns a pointer to the new object or NULL if an error occurred. */ TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); /** Replace a child of this node. Returns a pointer to the new object or NULL if an error occurred. */ TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); /// Delete a child of this node. bool RemoveChild( TiXmlNode* removeThis ); /// Navigate to a sibling node. const TiXmlNode* PreviousSibling() const { return prev; } TiXmlNode* PreviousSibling() { return prev; } /// Navigate to a sibling node. const TiXmlNode* PreviousSibling( const char * ) const; TiXmlNode* PreviousSibling( const char *_prev ) { return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) ); } #ifdef TIXML_USE_STL const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); } ///< STL std::string form. TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); } ///< STL std::string form. #endif /// Navigate to a sibling node. const TiXmlNode* NextSibling() const { return next; } TiXmlNode* NextSibling() { return next; } /// Navigate to a sibling node with the given 'value'. const TiXmlNode* NextSibling( const char * ) const; TiXmlNode* NextSibling( const char* _next ) { return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) ); } /** Convenience function to get through elements. Calls NextSibling and ToElement. Will skip all non-Element nodes. Returns 0 if there is not another element. */ const TiXmlElement* NextSiblingElement() const; TiXmlElement* NextSiblingElement() { return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() ); } /** Convenience function to get through elements. Calls NextSibling and ToElement. Will skip all non-Element nodes. Returns 0 if there is not another element. */ const TiXmlElement* NextSiblingElement( const char * ) const; TiXmlElement* NextSiblingElement( const char *_next ) { return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) ); } #ifdef TIXML_USE_STL const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. #endif /// Convenience function to get through elements. const TiXmlElement* FirstChildElement() const; TiXmlElement* FirstChildElement() { return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() ); } /// Convenience function to get through elements. const TiXmlElement* FirstChildElement( const char * _value ) const; TiXmlElement* FirstChildElement( const char * _value ) { return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) ); } #ifdef TIXML_USE_STL const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. #endif /** Query the type (as an enumerated value, above) of this node. The possible types are: TINYXML_DOCUMENT, TINYXML_ELEMENT, TINYXML_COMMENT, TINYXML_UNKNOWN, TINYXML_TEXT, and TINYXML_DECLARATION. */ int Type() const { return type; } /** Return a pointer to the Document this node lives in. Returns null if not in a document. */ const TiXmlDocument* GetDocument() const; TiXmlDocument* GetDocument() { return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() ); } /// Returns true if this node has no children. bool NoChildren() const { return !firstChild; } virtual const TiXmlDocument* ToDocument() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual const TiXmlElement* ToElement() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual const TiXmlComment* ToComment() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual const TiXmlUnknown* ToUnknown() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual const TiXmlText* ToText() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual TiXmlDocument* ToDocument() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual TiXmlElement* ToElement() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual TiXmlComment* ToComment() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual TiXmlUnknown* ToUnknown() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual TiXmlText* ToText() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. virtual TiXmlDeclaration* ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. /** Create an exact duplicate of this node and return it. The memory must be deleted by the caller. */ virtual TiXmlNode* Clone() const = 0; /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the TiXmlVisitor interface. This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML is unchanged by using this interface versus any other.) The interface has been based on ideas from: - http://www.saxproject.org/ - http://c2.com/cgi/wiki?HierarchicalVisitorPattern Which are both good references for "visiting". An example of using Accept(): @verbatim TiXmlPrinter printer; tinyxmlDoc.Accept( &printer ); const char* xmlcstr = printer.CStr(); @endverbatim */ virtual bool Accept( TiXmlVisitor* visitor ) const = 0; protected: TiXmlNode( NodeType _type ); // Copy to the allocated object. Shared functionality between Clone, Copy constructor, // and the assignment operator. void CopyTo( TiXmlNode* target ) const; #ifdef TIXML_USE_STL // The real work of the input operator. virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0; #endif // Figure out what is at *p, and parse it. Returns null if it is not an xml node. TiXmlNode* Identify( const char* start, TiXmlEncoding encoding ); TiXmlNode* parent; NodeType type; TiXmlNode* firstChild; TiXmlNode* lastChild; TIXML_STRING value; TiXmlNode* prev; TiXmlNode* next; private: TiXmlNode( const TiXmlNode& ); // not implemented. void operator=( const TiXmlNode& base ); // not allowed. }; /** An attribute is a name-value pair. Elements have an arbitrary number of attributes, each with a unique name. @note The attributes are not TiXmlNodes, since they are not part of the tinyXML document object model. There are other suggested ways to look at this problem. */ class TiXmlAttribute : public TiXmlBase { friend class TiXmlAttributeSet; public: /// Construct an empty attribute. TiXmlAttribute() : TiXmlBase() { document = 0; prev = next = 0; } #ifdef TIXML_USE_STL /// std::string constructor. TiXmlAttribute( const std::string& _name, const std::string& _value ) { name = _name; value = _value; document = 0; prev = next = 0; } #endif /// Construct an attribute with a name and value. TiXmlAttribute( const char * _name, const char * _value ) { name = _name; value = _value; document = 0; prev = next = 0; } const char* Name() const { return name.c_str(); } ///< Return the name of this attribute. const char* Value() const { return value.c_str(); } ///< Return the value of this attribute. #ifdef TIXML_USE_STL const std::string& ValueStr() const { return value; } ///< Return the value of this attribute. #endif int IntValue() const; ///< Return the value of this attribute, converted to an integer. double DoubleValue() const; ///< Return the value of this attribute, converted to a double. // Get the tinyxml string representation const TIXML_STRING& NameTStr() const { return name; } /** QueryIntValue examines the value string. It is an alternative to the IntValue() method with richer error checking. If the value is an integer, it is stored in 'value' and the call returns TIXML_SUCCESS. If it is not an integer, it returns TIXML_WRONG_TYPE. A specialized but useful call. Note that for success it returns 0, which is the opposite of almost all other TinyXml calls. */ int QueryIntValue( int* _value ) const; /// QueryDoubleValue examines the value string. See QueryIntValue(). int QueryDoubleValue( double* _value ) const; void SetName( const char* _name ) { name = _name; } ///< Set the name of this attribute. void SetValue( const char* _value ) { value = _value; } ///< Set the value. void SetIntValue( int _value ); ///< Set the value from an integer. void SetDoubleValue( double _value ); ///< Set the value from a double. #ifdef TIXML_USE_STL /// STL std::string form. void SetName( const std::string& _name ) { name = _name; } /// STL std::string form. void SetValue( const std::string& _value ) { value = _value; } #endif /// Get the next sibling attribute in the DOM. Returns null at end. const TiXmlAttribute* Next() const; TiXmlAttribute* Next() { return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); } /// Get the previous sibling attribute in the DOM. Returns null at beginning. const TiXmlAttribute* Previous() const; TiXmlAttribute* Previous() { return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); } bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } /* Attribute parsing starts: first letter of the name returns: the next char after the value end quote */ virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); // Prints this Attribute to a FILE stream. virtual void Print( FILE* cfile, int depth ) const { Print( cfile, depth, 0 ); } void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; // [internal use] // Set the document pointer so the attribute can report errors. void SetDocument( TiXmlDocument* doc ) { document = doc; } private: TiXmlAttribute( const TiXmlAttribute& ); // not implemented. void operator=( const TiXmlAttribute& base ); // not allowed. TiXmlDocument* document; // A pointer back to a document, for error reporting. TIXML_STRING name; TIXML_STRING value; TiXmlAttribute* prev; TiXmlAttribute* next; }; /* A class used to manage a group of attributes. It is only used internally, both by the ELEMENT and the DECLARATION. The set can be changed transparent to the Element and Declaration classes that use it, but NOT transparent to the Attribute which has to implement a next() and previous() method. Which makes it a bit problematic and prevents the use of STL. This version is implemented with circular lists because: - I like circular lists - it demonstrates some independence from the (typical) doubly linked list. */ class TiXmlAttributeSet { public: TiXmlAttributeSet(); ~TiXmlAttributeSet(); void Add( TiXmlAttribute* attribute ); void Remove( TiXmlAttribute* attribute ); const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } TiXmlAttribute* Find( const char* _name ) const; TiXmlAttribute* FindOrCreate( const char* _name ); # ifdef TIXML_USE_STL TiXmlAttribute* Find( const std::string& _name ) const; TiXmlAttribute* FindOrCreate( const std::string& _name ); # endif private: //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element), //*ME: this class must be also use a hidden/disabled copy-constructor !!! TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute) TiXmlAttribute sentinel; }; /** The element is a container class. It has a value, the element name, and can contain other elements, text, comments, and unknowns. Elements also contain an arbitrary number of attributes. */ class TiXmlElement : public TiXmlNode { public: /// Construct an element. TiXmlElement (const char * in_value); #ifdef TIXML_USE_STL /// std::string constructor. TiXmlElement( const std::string& _value ); #endif TiXmlElement( const TiXmlElement& ); TiXmlElement& operator=( const TiXmlElement& base ); virtual ~TiXmlElement(); /** Given an attribute name, Attribute() returns the value for the attribute of that name, or null if none exists. */ const char* Attribute( const char* name ) const; /** Given an attribute name, Attribute() returns the value for the attribute of that name, or null if none exists. If the attribute exists and can be converted to an integer, the integer value will be put in the return 'i', if 'i' is non-null. */ const char* Attribute( const char* name, int* i ) const; /** Given an attribute name, Attribute() returns the value for the attribute of that name, or null if none exists. If the attribute exists and can be converted to an double, the double value will be put in the return 'd', if 'd' is non-null. */ const char* Attribute( const char* name, double* d ) const; /** QueryIntAttribute examines the attribute - it is an alternative to the Attribute() method with richer error checking. If the attribute is an integer, it is stored in 'value' and the call returns TIXML_SUCCESS. If it is not an integer, it returns TIXML_WRONG_TYPE. If the attribute does not exist, then TIXML_NO_ATTRIBUTE is returned. */ int QueryIntAttribute( const char* name, int* _value ) const; /// QueryUnsignedAttribute examines the attribute - see QueryIntAttribute(). int QueryUnsignedAttribute( const char* name, unsigned* _value ) const; /** QueryBoolAttribute examines the attribute - see QueryIntAttribute(). Note that '1', 'true', or 'yes' are considered true, while '0', 'false' and 'no' are considered false. */ int QueryBoolAttribute( const char* name, bool* _value ) const; /// QueryDoubleAttribute examines the attribute - see QueryIntAttribute(). int QueryDoubleAttribute( const char* name, double* _value ) const; /// QueryFloatAttribute examines the attribute - see QueryIntAttribute(). int QueryFloatAttribute( const char* name, float* _value ) const { double d; int result = QueryDoubleAttribute( name, &d ); if ( result == TIXML_SUCCESS ) { *_value = (float)d; } return result; } #ifdef TIXML_USE_STL /// QueryStringAttribute examines the attribute - see QueryIntAttribute(). int QueryStringAttribute( const char* name, std::string* _value ) const { const char* cstr = Attribute( name ); if ( cstr ) { *_value = std::string( cstr ); return TIXML_SUCCESS; } return TIXML_NO_ATTRIBUTE; } /** Template form of the attribute query which will try to read the attribute into the specified type. Very easy, very powerful, but be careful to make sure to call this with the correct type. NOTE: This method doesn't work correctly for 'string' types that contain spaces. @return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE */ template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const { const TiXmlAttribute* node = attributeSet.Find( name ); if ( !node ) return TIXML_NO_ATTRIBUTE; std::stringstream sstream( node->ValueStr() ); sstream >> *outValue; if ( !sstream.fail() ) return TIXML_SUCCESS; return TIXML_WRONG_TYPE; } int QueryValueAttribute( const std::string& name, std::string* outValue ) const { const TiXmlAttribute* node = attributeSet.Find( name ); if ( !node ) return TIXML_NO_ATTRIBUTE; *outValue = node->ValueStr(); return TIXML_SUCCESS; } #endif /** Sets an attribute of name to a given value. The attribute will be created if it does not exist, or changed if it does. */ void SetAttribute( const char* name, const char * _value ); #ifdef TIXML_USE_STL const std::string* Attribute( const std::string& name ) const; const std::string* Attribute( const std::string& name, int* i ) const; const std::string* Attribute( const std::string& name, double* d ) const; int QueryIntAttribute( const std::string& name, int* _value ) const; int QueryDoubleAttribute( const std::string& name, double* _value ) const; /// STL std::string form. void SetAttribute( const std::string& name, const std::string& _value ); ///< STL std::string form. void SetAttribute( const std::string& name, int _value ); ///< STL std::string form. void SetDoubleAttribute( const std::string& name, double value ); #endif /** Sets an attribute of name to a given value. The attribute will be created if it does not exist, or changed if it does. */ void SetAttribute( const char * name, int value ); /** Sets an attribute of name to a given value. The attribute will be created if it does not exist, or changed if it does. */ void SetDoubleAttribute( const char * name, double value ); /** Deletes an attribute with the given name. */ void RemoveAttribute( const char * name ); #ifdef TIXML_USE_STL void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); } ///< STL std::string form. #endif const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. TiXmlAttribute* FirstAttribute() { return attributeSet.First(); } const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. TiXmlAttribute* LastAttribute() { return attributeSet.Last(); } /** Convenience function for easy access to the text inside an element. Although easy and concise, GetText() is limited compared to getting the TiXmlText child and accessing it directly. If the first child of 'this' is a TiXmlText, the GetText() returns the character string of the Text node, else null is returned. This is a convenient method for getting the text of simple contained text: @verbatim This is text const char* str = fooElement->GetText(); @endverbatim 'str' will be a pointer to "This is text". Note that this function can be misleading. If the element foo was created from this XML: @verbatim This is text @endverbatim then the value of str would be null. The first child node isn't a text node, it is another element. From this XML: @verbatim This is text @endverbatim GetText() will return "This is ". WARNING: GetText() accesses a child node - don't become confused with the similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are safe type casts on the referenced node. */ const char* GetText() const; /// Creates a new Element and returns it - the returned element is a copy. virtual TiXmlNode* Clone() const; // Print the Element to a FILE stream. virtual void Print( FILE* cfile, int depth ) const; /* Attribtue parsing starts: next char past '<' returns: next char past '>' */ virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); virtual const TiXmlElement* ToElement() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. virtual TiXmlElement* ToElement() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. /** Walk the XML tree visiting this node and all of its children. */ virtual bool Accept( TiXmlVisitor* visitor ) const; protected: void CopyTo( TiXmlElement* target ) const; void ClearThis(); // like clear, but initializes 'this' object as well // Used to be public [internal use] #ifdef TIXML_USE_STL virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); #endif /* [internal use] Reads the "value" of the element -- another element, or text. This should terminate with the current end tag. */ const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding ); private: TiXmlAttributeSet attributeSet; }; /** An XML comment. */ class TiXmlComment : public TiXmlNode { public: /// Constructs an empty comment. TiXmlComment() : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {} /// Construct a comment from text. TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) { SetValue( _value ); } TiXmlComment( const TiXmlComment& ); TiXmlComment& operator=( const TiXmlComment& base ); virtual ~TiXmlComment() {} /// Returns a copy of this Comment. virtual TiXmlNode* Clone() const; // Write this Comment to a FILE stream. virtual void Print( FILE* cfile, int depth ) const; /* Attribtue parsing starts: at the ! of the !-- returns: next char past '>' */ virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); virtual const TiXmlComment* ToComment() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. virtual TiXmlComment* ToComment() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. /** Walk the XML tree visiting this node and all of its children. */ virtual bool Accept( TiXmlVisitor* visitor ) const; protected: void CopyTo( TiXmlComment* target ) const; // used to be public #ifdef TIXML_USE_STL virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); #endif // virtual void StreamOut( TIXML_OSTREAM * out ) const; private: }; /** XML text. A text node can have 2 ways to output the next. "normal" output and CDATA. It will default to the mode it was parsed from the XML file and you generally want to leave it alone, but you can change the output mode with SetCDATA() and query it with CDATA(). */ class TiXmlText : public TiXmlNode { friend class TiXmlElement; public: /** Constructor for text element. By default, it is treated as normal, encoded text. If you want it be output as a CDATA text element, set the parameter _cdata to 'true' */ TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) { SetValue( initValue ); cdata = false; } virtual ~TiXmlText() {} #ifdef TIXML_USE_STL /// Constructor. TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) { SetValue( initValue ); cdata = false; } #endif TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TINYXML_TEXT ) { copy.CopyTo( this ); } TiXmlText& operator=( const TiXmlText& base ) { base.CopyTo( this ); return *this; } // Write this text object to a FILE stream. virtual void Print( FILE* cfile, int depth ) const; /// Queries whether this represents text using a CDATA section. bool CDATA() const { return cdata; } /// Turns on or off a CDATA representation of text. void SetCDATA( bool _cdata ) { cdata = _cdata; } virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. virtual TiXmlText* ToText() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. /** Walk the XML tree visiting this node and all of its children. */ virtual bool Accept( TiXmlVisitor* content ) const; protected : /// [internal use] Creates a new Element and returns it. virtual TiXmlNode* Clone() const; void CopyTo( TiXmlText* target ) const; bool Blank() const; // returns true if all white space and new lines // [internal use] #ifdef TIXML_USE_STL virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); #endif private: bool cdata; // true if this should be input and output as a CDATA style text element }; /** In correct XML the declaration is the first entry in the file. @verbatim @endverbatim TinyXml will happily read or write files without a declaration, however. There are 3 possible attributes to the declaration: version, encoding, and standalone. Note: In this version of the code, the attributes are handled as special cases, not generic attributes, simply because there can only be at most 3 and they are always the same. */ class TiXmlDeclaration : public TiXmlNode { public: /// Construct an empty declaration. TiXmlDeclaration() : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) {} #ifdef TIXML_USE_STL /// Constructor. TiXmlDeclaration( const std::string& _version, const std::string& _encoding, const std::string& _standalone ); #endif /// Construct. TiXmlDeclaration( const char* _version, const char* _encoding, const char* _standalone ); TiXmlDeclaration( const TiXmlDeclaration& copy ); TiXmlDeclaration& operator=( const TiXmlDeclaration& copy ); virtual ~TiXmlDeclaration() {} /// Version. Will return an empty string if none was found. const char *Version() const { return version.c_str (); } /// Encoding. Will return an empty string if none was found. const char *Encoding() const { return encoding.c_str (); } /// Is this a standalone document? const char *Standalone() const { return standalone.c_str (); } /// Creates a copy of this Declaration and returns it. virtual TiXmlNode* Clone() const; // Print this declaration to a FILE stream. virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; virtual void Print( FILE* cfile, int depth ) const { Print( cfile, depth, 0 ); } virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. virtual TiXmlDeclaration* ToDeclaration() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. /** Walk the XML tree visiting this node and all of its children. */ virtual bool Accept( TiXmlVisitor* visitor ) const; protected: void CopyTo( TiXmlDeclaration* target ) const; // used to be public #ifdef TIXML_USE_STL virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); #endif private: TIXML_STRING version; TIXML_STRING encoding; TIXML_STRING standalone; }; /** Any tag that tinyXml doesn't recognize is saved as an unknown. It is a tag of text, but should not be modified. It will be written back to the XML, unchanged, when the file is saved. DTD tags get thrown into TiXmlUnknowns. */ class TiXmlUnknown : public TiXmlNode { public: TiXmlUnknown() : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) {} virtual ~TiXmlUnknown() {} TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) { copy.CopyTo( this ); } TiXmlUnknown& operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); return *this; } /// Creates a copy of this Unknown and returns it. virtual TiXmlNode* Clone() const; // Print this Unknown to a FILE stream. virtual void Print( FILE* cfile, int depth ) const; virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); virtual const TiXmlUnknown* ToUnknown() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. virtual TiXmlUnknown* ToUnknown() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. /** Walk the XML tree visiting this node and all of its children. */ virtual bool Accept( TiXmlVisitor* content ) const; protected: void CopyTo( TiXmlUnknown* target ) const; #ifdef TIXML_USE_STL virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); #endif private: }; /** Always the top level node. A document binds together all the XML pieces. It can be saved, loaded, and printed to the screen. The 'value' of a document node is the xml file name. */ class TiXmlDocument : public TiXmlNode { public: /// Create an empty document, that has no name. TiXmlDocument(); /// Create a document with a name. The name of the document is also the filename of the xml. TiXmlDocument( const char * documentName ); #ifdef TIXML_USE_STL /// Constructor. TiXmlDocument( const std::string& documentName ); #endif TiXmlDocument( const TiXmlDocument& copy ); TiXmlDocument& operator=( const TiXmlDocument& copy ); virtual ~TiXmlDocument() {} /** Load a file using the current document value. Returns true if successful. Will delete any existing document data before loading. */ bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /// Save a file using the current document value. Returns true if successful. bool SaveFile() const; /// Load a file using the given filename. Returns true if successful. bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /// Save a file using the given filename. Returns true if successful. bool SaveFile( const char * filename ) const; /** Load a file using the given FILE*. Returns true if successful. Note that this method doesn't stream - the entire object pointed at by the FILE* will be interpreted as an XML file. TinyXML doesn't stream in XML from the current file location. Streaming may be added in the future. */ bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /// Save a file using the given FILE*. Returns true if successful. bool SaveFile( FILE* ) const; #ifdef TIXML_USE_STL bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) ///< STL std::string version. { return LoadFile( filename.c_str(), encoding ); } bool SaveFile( const std::string& filename ) const ///< STL std::string version. { return SaveFile( filename.c_str() ); } #endif /** Parse the given null terminated block of xml data. Passing in an encoding to this method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml to use that encoding, regardless of what TinyXml might otherwise try to detect. */ virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /** Get the root element -- the only top level element -- of the document. In well formed XML, there should only be one. TinyXml is tolerant of multiple elements at the document level. */ const TiXmlElement* RootElement() const { return FirstChildElement(); } TiXmlElement* RootElement() { return FirstChildElement(); } /** If an error occurs, Error will be set to true. Also, - The ErrorId() will contain the integer identifier of the error (not generally useful) - The ErrorDesc() method will return the name of the error. (very useful) - The ErrorRow() and ErrorCol() will return the location of the error (if known) */ bool Error() const { return error; } /// Contains a textual (english) description of the error if one occurs. const char * ErrorDesc() const { return errorDesc.c_str (); } /** Generally, you probably want the error string ( ErrorDesc() ). But if you prefer the ErrorId, this function will fetch it. */ int ErrorId() const { return errorId; } /** Returns the location (if known) of the error. The first column is column 1, and the first row is row 1. A value of 0 means the row and column wasn't applicable (memory errors, for example, have no row/column) or the parser lost the error. (An error in the error reporting, in that case.) @sa SetTabSize, Row, Column */ int ErrorRow() const { return errorLocation.row+1; } int ErrorCol() const { return errorLocation.col+1; } ///< The column where the error occurred. See ErrorRow() /** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol()) to report the correct values for row and column. It does not change the output or input in any way. By calling this method, with a tab size greater than 0, the row and column of each node and attribute is stored when the file is loaded. Very useful for tracking the DOM back in to the source file. The tab size is required for calculating the location of nodes. If not set, the default of 4 is used. The tabsize is set per document. Setting the tabsize to 0 disables row/column tracking. Note that row and column tracking is not supported when using operator>>. The tab size needs to be enabled before the parse or load. Correct usage: @verbatim TiXmlDocument doc; doc.SetTabSize( 8 ); doc.Load( "myfile.xml" ); @endverbatim @sa Row, Column */ void SetTabSize( int _tabsize ) { tabsize = _tabsize; } int TabSize() const { return tabsize; } /** If you have handled the error, it can be reset with this call. The error state is automatically cleared if you Parse a new XML block. */ void ClearError() { error = false; errorId = 0; errorDesc = ""; errorLocation.row = errorLocation.col = 0; //errorLocation.last = 0; } /** Write the document to standard out using formatted printing ("pretty print"). */ void Print() const { Print( stdout, 0 ); } /* Write the document to a string using formatted printing ("pretty print"). This will allocate a character array (new char[]) and return it as a pointer. The calling code pust call delete[] on the return char* to avoid a memory leak. */ //char* PrintToMemory() const; /// Print this Document to a FILE stream. virtual void Print( FILE* cfile, int depth = 0 ) const; // [internal use] void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding ); virtual const TiXmlDocument* ToDocument() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. virtual TiXmlDocument* ToDocument() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. /** Walk the XML tree visiting this node and all of its children. */ virtual bool Accept( TiXmlVisitor* content ) const; protected : // [internal use] virtual TiXmlNode* Clone() const; #ifdef TIXML_USE_STL virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); #endif private: void CopyTo( TiXmlDocument* target ) const; bool error; int errorId; TIXML_STRING errorDesc; int tabsize; TiXmlCursor errorLocation; bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write. }; /** A TiXmlHandle is a class that wraps a node pointer with null checks; this is an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml DOM structure. It is a separate utility class. Take an example: @verbatim @endverbatim Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very easy to write a *lot* of code that looks like: @verbatim TiXmlElement* root = document.FirstChildElement( "Document" ); if ( root ) { TiXmlElement* element = root->FirstChildElement( "Element" ); if ( element ) { TiXmlElement* child = element->FirstChildElement( "Child" ); if ( child ) { TiXmlElement* child2 = child->NextSiblingElement( "Child" ); if ( child2 ) { // Finally do something useful. @endverbatim And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity of such code. A TiXmlHandle checks for null pointers so it is perfectly safe and correct to use: @verbatim TiXmlHandle docHandle( &document ); TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); if ( child2 ) { // do something useful @endverbatim Which is MUCH more concise and useful. It is also safe to copy handles - internally they are nothing more than node pointers. @verbatim TiXmlHandle handleCopy = handle; @endverbatim What they should not be used for is iteration: @verbatim int i=0; while ( true ) { TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement(); if ( !child ) break; // do something ++i; } @endverbatim It seems reasonable, but it is in fact two embedded while loops. The Child method is a linear walk to find the element, so this code would iterate much more than it needs to. Instead, prefer: @verbatim TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement(); for( child; child; child=child->NextSiblingElement() ) { // do something } @endverbatim */ class TiXmlHandle { public: /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. TiXmlHandle( TiXmlNode* _node ) { this->node = _node; } /// Copy constructor TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; } TiXmlHandle operator=( const TiXmlHandle& ref ) { if ( &ref != this ) this->node = ref.node; return *this; } /// Return a handle to the first child node. TiXmlHandle FirstChild() const; /// Return a handle to the first child node with the given name. TiXmlHandle FirstChild( const char * value ) const; /// Return a handle to the first child element. TiXmlHandle FirstChildElement() const; /// Return a handle to the first child element with the given name. TiXmlHandle FirstChildElement( const char * value ) const; /** Return a handle to the "index" child with the given name. The first child is 0, the second 1, etc. */ TiXmlHandle Child( const char* value, int index ) const; /** Return a handle to the "index" child. The first child is 0, the second 1, etc. */ TiXmlHandle Child( int index ) const; /** Return a handle to the "index" child element with the given name. The first child element is 0, the second 1, etc. Note that only TiXmlElements are indexed: other types are not counted. */ TiXmlHandle ChildElement( const char* value, int index ) const; /** Return a handle to the "index" child element. The first child element is 0, the second 1, etc. Note that only TiXmlElements are indexed: other types are not counted. */ TiXmlHandle ChildElement( int index ) const; #ifdef TIXML_USE_STL TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); } TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); } TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); } TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); } #endif /** Return the handle as a TiXmlNode. This may return null. */ TiXmlNode* ToNode() const { return node; } /** Return the handle as a TiXmlElement. This may return null. */ TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); } /** Return the handle as a TiXmlText. This may return null. */ TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : 0 ); } /** Return the handle as a TiXmlUnknown. This may return null. */ TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); } /** @deprecated use ToNode. Return the handle as a TiXmlNode. This may return null. */ TiXmlNode* Node() const { return ToNode(); } /** @deprecated use ToElement. Return the handle as a TiXmlElement. This may return null. */ TiXmlElement* Element() const { return ToElement(); } /** @deprecated use ToText() Return the handle as a TiXmlText. This may return null. */ TiXmlText* Text() const { return ToText(); } /** @deprecated use ToUnknown() Return the handle as a TiXmlUnknown. This may return null. */ TiXmlUnknown* Unknown() const { return ToUnknown(); } private: TiXmlNode* node; }; /** Print to memory functionality. The TiXmlPrinter is useful when you need to: -# Print to memory (especially in non-STL mode) -# Control formatting (line endings, etc.) When constructed, the TiXmlPrinter is in its default "pretty printing" mode. Before calling Accept() you can call methods to control the printing of the XML document. After TiXmlNode::Accept() is called, the printed document can be accessed via the CStr(), Str(), and Size() methods. TiXmlPrinter uses the Visitor API. @verbatim TiXmlPrinter printer; printer.SetIndent( "\t" ); doc.Accept( &printer ); fprintf( stdout, "%s", printer.CStr() ); @endverbatim */ class TiXmlPrinter : public TiXmlVisitor { public: TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ), buffer(), indent( " " ), lineBreak( "\n" ) {} virtual bool VisitEnter( const TiXmlDocument& doc ); virtual bool VisitExit( const TiXmlDocument& doc ); virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ); virtual bool VisitExit( const TiXmlElement& element ); virtual bool Visit( const TiXmlDeclaration& declaration ); virtual bool Visit( const TiXmlText& text ); virtual bool Visit( const TiXmlComment& comment ); virtual bool Visit( const TiXmlUnknown& unknown ); /** Set the indent characters for printing. By default 4 spaces but tab (\t) is also useful, or null/empty string for no indentation. */ void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; } /// Query the indention string. const char* Indent() { return indent.c_str(); } /** Set the line breaking string. By default set to newline (\n). Some operating systems prefer other characters, or can be set to the null/empty string for no indenation. */ void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; } /// Query the current line breaking string. const char* LineBreak() { return lineBreak.c_str(); } /** Switch over to "stream printing" which is the most dense formatting without linebreaks. Common when the XML is needed for network transmission. */ void SetStreamPrinting() { indent = ""; lineBreak = ""; } /// Return the result. const char* CStr() { return buffer.c_str(); } /// Return the length of the result string. size_t Size() { return buffer.size(); } #ifdef TIXML_USE_STL /// Return the result. const std::string& Str() { return buffer; } #endif private: void DoIndent() { for( int i=0; i #include #include "tinyxml.h" //#define DEBUG_PARSER #if defined( DEBUG_PARSER ) # if defined( DEBUG ) && defined( _MSC_VER ) # include # define TIXML_LOG OutputDebugString # else # define TIXML_LOG printf # endif #endif // Note tha "PutString" hardcodes the same list. This // is less flexible than it appears. Changing the entries // or order will break putstring. TiXmlBase::Entity TiXmlBase::entity[ TiXmlBase::NUM_ENTITY ] = { { "&", 5, '&' }, { "<", 4, '<' }, { ">", 4, '>' }, { """, 6, '\"' }, { "'", 6, '\'' } }; // Bunch of unicode info at: // http://www.unicode.org/faq/utf_bom.html // Including the basic of this table, which determines the #bytes in the // sequence from the lead byte. 1 placed for invalid sequences -- // although the result will be junk, pass it through as much as possible. // Beware of the non-characters in UTF-8: // ef bb bf (Microsoft "lead bytes") // ef bf be // ef bf bf const unsigned char TIXML_UTF_LEAD_0 = 0xefU; const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; const int TiXmlBase::utf8ByteTable[256] = { // 0 1 2 3 4 5 6 7 8 9 a b c d e f 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x00 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x10 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x20 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x30 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x50 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x70 End of ASCII range 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x80 0x80 to 0xc1 invalid 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x90 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xa0 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xb0 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xc0 0xc2 to 0xdf 2 byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xd0 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xe0 0xe0 to 0xef 3 byte 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid }; void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) { const unsigned long BYTE_MASK = 0xBF; const unsigned long BYTE_MARK = 0x80; const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; if (input < 0x80) *length = 1; else if ( input < 0x800 ) *length = 2; else if ( input < 0x10000 ) *length = 3; else if ( input < 0x200000 ) *length = 4; else { *length = 0; return; } // This code won't covert this correctly anyway. output += *length; // Scary scary fall throughs. switch (*length) { case 4: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; case 3: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; case 2: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; case 1: --output; *output = (char)(input | FIRST_BYTE_MARK[*length]); } } /*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) { // This will only work for low-ascii, everything else is assumed to be a valid // letter. I'm not sure this is the best approach, but it is quite tricky trying // to figure out alhabetical vs. not across encoding. So take a very // conservative approach. // if ( encoding == TIXML_ENCODING_UTF8 ) // { if ( anyByte < 127 ) return isalpha( anyByte ); else return 1; // What else to do? The unicode set is huge...get the english ones right. // } // else // { // return isalpha( anyByte ); // } } /*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) { // This will only work for low-ascii, everything else is assumed to be a valid // letter. I'm not sure this is the best approach, but it is quite tricky trying // to figure out alhabetical vs. not across encoding. So take a very // conservative approach. // if ( encoding == TIXML_ENCODING_UTF8 ) // { if ( anyByte < 127 ) return isalnum( anyByte ); else return 1; // What else to do? The unicode set is huge...get the english ones right. // } // else // { // return isalnum( anyByte ); // } } class TiXmlParsingData { friend class TiXmlDocument; public: void Stamp( const char* now, TiXmlEncoding encoding ); const TiXmlCursor& Cursor() const { return cursor; } private: // Only used by the document! TiXmlParsingData( const char* start, int _tabsize, int row, int col ) { assert( start ); stamp = start; tabsize = _tabsize; cursor.row = row; cursor.col = col; } TiXmlCursor cursor; const char* stamp; int tabsize; }; void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) { assert( now ); // Do nothing if the tabsize is 0. if ( tabsize < 1 ) { return; } // Get the current row, column. int row = cursor.row; int col = cursor.col; const char* p = stamp; assert( p ); while ( p < now ) { // Treat p as unsigned, so we have a happy compiler. const unsigned char* pU = (const unsigned char*)p; // Code contributed by Fletcher Dunn: (modified by lee) switch (*pU) { case 0: // We *should* never get here, but in case we do, don't // advance past the terminating null character, ever return; case '\r': // bump down to the next line ++row; col = 0; // Eat the character ++p; // Check for \r\n sequence, and treat this as a single character if (*p == '\n') { ++p; } break; case '\n': // bump down to the next line ++row; col = 0; // Eat the character ++p; // Check for \n\r sequence, and treat this as a single // character. (Yes, this bizarre thing does occur still // on some arcane platforms...) if (*p == '\r') { ++p; } break; case '\t': // Eat the character ++p; // Skip to next tab stop col = (col / tabsize + 1) * tabsize; break; case TIXML_UTF_LEAD_0: if ( encoding == TIXML_ENCODING_UTF8 ) { if ( *(p+1) && *(p+2) ) { // In these cases, don't advance the column. These are // 0-width spaces. if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) p += 3; else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU ) p += 3; else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU ) p += 3; else { p +=3; ++col; } // A normal character. } } else { ++p; ++col; } break; default: if ( encoding == TIXML_ENCODING_UTF8 ) { // Eat the 1 to 4 byte utf8 character. int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)]; if ( step == 0 ) step = 1; // Error case from bad encoding, but handle gracefully. p += step; // Just advance one column, of course. ++col; } else { ++p; ++col; } break; } } cursor.row = row; cursor.col = col; assert( cursor.row >= -1 ); assert( cursor.col >= -1 ); stamp = p; assert( stamp ); } const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ) { if ( !p || !*p ) { return 0; } if ( encoding == TIXML_ENCODING_UTF8 ) { while ( *p ) { const unsigned char* pU = (const unsigned char*)p; // Skip the stupid Microsoft UTF-8 Byte order marks if ( *(pU+0)==TIXML_UTF_LEAD_0 && *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) { p += 3; continue; } else if(*(pU+0)==TIXML_UTF_LEAD_0 && *(pU+1)==0xbfU && *(pU+2)==0xbeU ) { p += 3; continue; } else if(*(pU+0)==TIXML_UTF_LEAD_0 && *(pU+1)==0xbfU && *(pU+2)==0xbfU ) { p += 3; continue; } if ( IsWhiteSpace( *p ) ) // Still using old rules for white space. ++p; else break; } } else { while ( *p && IsWhiteSpace( *p ) ) ++p; } return p; } #ifdef TIXML_USE_STL /*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ) { for( ;; ) { if ( !in->good() ) return false; int c = in->peek(); // At this scope, we can't get to a document. So fail silently. if ( !IsWhiteSpace( c ) || c <= 0 ) return true; *tag += (char) in->get(); } } /*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ) { //assert( character > 0 && character < 128 ); // else it won't work in utf-8 while ( in->good() ) { int c = in->peek(); if ( c == character ) return true; if ( c <= 0 ) // Silent failure: can't get document at this scope return false; in->get(); *tag += (char) c; } return false; } #endif // One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The // "assign" optimization removes over 10% of the execution time. // const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ) { // Oddly, not supported on some comilers, //name->clear(); // So use this: *name = ""; assert( p ); // Names start with letters or underscores. // Of course, in unicode, tinyxml has no idea what a letter *is*. The // algorithm is generous. // // After that, they can be letters, underscores, numbers, // hyphens, or colons. (Colons are valid ony for namespaces, // but tinyxml can't tell namespaces from names.) if ( p && *p && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) ) { const char* start = p; while( p && *p && ( IsAlphaNum( (unsigned char ) *p, encoding ) || *p == '_' || *p == '-' || *p == '.' || *p == ':' ) ) { //(*name) += *p; // expensive ++p; } if ( p-start > 0 ) { name->assign( start, p-start ); } return p; } return 0; } const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ) { // Presume an entity, and pull it out. TIXML_STRING ent; int i; *length = 0; if ( *(p+1) && *(p+1) == '#' && *(p+2) ) { unsigned long ucs = 0; ptrdiff_t delta = 0; unsigned mult = 1; if ( *(p+2) == 'x' ) { // Hexadecimal. if ( !*(p+3) ) return 0; const char* q = p+3; q = strchr( q, ';' ); if ( !q || !*q ) return 0; delta = q-p; --q; while ( *q != 'x' ) { if ( *q >= '0' && *q <= '9' ) ucs += mult * (*q - '0'); else if ( *q >= 'a' && *q <= 'f' ) ucs += mult * (*q - 'a' + 10); else if ( *q >= 'A' && *q <= 'F' ) ucs += mult * (*q - 'A' + 10 ); else return 0; mult *= 16; --q; } } else { // Decimal. if ( !*(p+2) ) return 0; const char* q = p+2; q = strchr( q, ';' ); if ( !q || !*q ) return 0; delta = q-p; --q; while ( *q != '#' ) { if ( *q >= '0' && *q <= '9' ) ucs += mult * (*q - '0'); else return 0; mult *= 10; --q; } } if ( encoding == TIXML_ENCODING_UTF8 ) { // convert the UCS to UTF-8 ConvertUTF32ToUTF8( ucs, value, length ); } else { *value = (char)ucs; *length = 1; } return p + delta + 1; } // Now try to match it. for( i=0; iappend( cArr, len ); } } else { bool whitespace = false; // Remove leading white space: p = SkipWhiteSpace( p, encoding ); while ( p && *p && !StringEqual( p, endTag, caseInsensitive, encoding ) ) { if ( *p == '\r' || *p == '\n' ) { whitespace = true; ++p; } else if ( IsWhiteSpace( *p ) ) { whitespace = true; ++p; } else { // If we've found whitespace, add it before the // new character. Any whitespace just becomes a space. if ( whitespace ) { (*text) += ' '; whitespace = false; } int len; char cArr[4] = { 0, 0, 0, 0 }; p = GetChar( p, cArr, &len, encoding ); if ( len == 1 ) (*text) += cArr[0]; // more efficient else text->append( cArr, len ); } } } if ( p && *p ) p += strlen( endTag ); return ( p && *p ) ? p : 0; } #ifdef TIXML_USE_STL void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag ) { // The basic issue with a document is that we don't know what we're // streaming. Read something presumed to be a tag (and hope), then // identify it, and call the appropriate stream method on the tag. // // This "pre-streaming" will never read the closing ">" so the // sub-tag can orient itself. if ( !StreamTo( in, '<', tag ) ) { SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); return; } while ( in->good() ) { int tagIndex = (int) tag->length(); while ( in->good() && in->peek() != '>' ) { int c = in->get(); if ( c <= 0 ) { SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); break; } (*tag) += (char) c; } if ( in->good() ) { // We now have something we presume to be a node of // some sort. Identify it, and call the node to // continue streaming. TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING ); if ( node ) { node->StreamIn( in, tag ); bool isElement = node->ToElement() != 0; delete node; node = 0; // If this is the root element, we're done. Parsing will be // done by the >> operator. if ( isElement ) { return; } } else { SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); return; } } } // We should have returned sooner. SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); } #endif const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding ) { ClearError(); // Parse away, at the document level. Since a document // contains nothing but other tags, most of what happens // here is skipping white space. if ( !p || !*p ) { SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } // Note that, for a document, this needs to come // before the while space skip, so that parsing // starts from the pointer we are given. location.Clear(); if ( prevData ) { location.row = prevData->cursor.row; location.col = prevData->cursor.col; } else { location.row = 0; location.col = 0; } TiXmlParsingData data( p, TabSize(), location.row, location.col ); location = data.Cursor(); if ( encoding == TIXML_ENCODING_UNKNOWN ) { // Check for the Microsoft UTF-8 lead bytes. const unsigned char* pU = (const unsigned char*)p; if ( *(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0 && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1 && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 ) { encoding = TIXML_ENCODING_UTF8; useMicrosoftBOM = true; } } p = SkipWhiteSpace( p, encoding ); if ( !p ) { SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } while ( p && *p ) { TiXmlNode* node = Identify( p, encoding ); if ( node ) { p = node->Parse( p, &data, encoding ); LinkEndChild( node ); } else { break; } // Did we get encoding info? if ( encoding == TIXML_ENCODING_UNKNOWN && node->ToDeclaration() ) { TiXmlDeclaration* dec = node->ToDeclaration(); const char* enc = dec->Encoding(); assert( enc ); if ( *enc == 0 ) encoding = TIXML_ENCODING_UTF8; else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) ) encoding = TIXML_ENCODING_UTF8; else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) ) encoding = TIXML_ENCODING_UTF8; // incorrect, but be nice else encoding = TIXML_ENCODING_LEGACY; } p = SkipWhiteSpace( p, encoding ); } // Was this empty? if ( !firstChild ) { SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding ); return 0; } // All is well. return p; } void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding ) { // The first error in a chain is more accurate - don't set again! if ( error ) return; assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); error = true; errorId = err; errorDesc = errorString[ errorId ]; errorLocation.Clear(); if ( pError && data ) { data->Stamp( pError, encoding ); errorLocation = data->Cursor(); } } TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding ) { TiXmlNode* returnNode = 0; p = SkipWhiteSpace( p, encoding ); if( !p || !*p || *p != '<' ) { return 0; } p = SkipWhiteSpace( p, encoding ); if ( !p || !*p ) { return 0; } // What is this thing? // - Elements start with a letter or underscore, but xml is reserved. // - Comments: "; if ( !StringEqual( p, startTag, false, encoding ) ) { if ( document ) document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding ); return 0; } p += strlen( startTag ); // [ 1475201 ] TinyXML parses entities in comments // Oops - ReadText doesn't work, because we don't want to parse the entities. // p = ReadText( p, &value, false, endTag, false, encoding ); // // from the XML spec: /* [Definition: Comments may appear anywhere in a document outside other markup; in addition, they may appear within the document type declaration at places allowed by the grammar. They are not part of the document's character data; an XML processor MAY, but need not, make it possible for an application to retrieve the text of comments. For compatibility, the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity references MUST NOT be recognized within comments. An example of a comment: */ value = ""; // Keep all the white space. while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) { value.append( p, 1 ); ++p; } if ( p && *p ) p += strlen( endTag ); return p; } const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) { p = SkipWhiteSpace( p, encoding ); if ( !p || !*p ) return 0; if ( data ) { data->Stamp( p, encoding ); location = data->Cursor(); } // Read the name, the '=' and the value. const char* pErr = p; p = ReadName( p, &name, encoding ); if ( !p || !*p ) { if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding ); return 0; } p = SkipWhiteSpace( p, encoding ); if ( !p || !*p || *p != '=' ) { if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); return 0; } ++p; // skip '=' p = SkipWhiteSpace( p, encoding ); if ( !p || !*p ) { if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); return 0; } const char* end; const char SINGLE_QUOTE = '\''; const char DOUBLE_QUOTE = '\"'; if ( *p == SINGLE_QUOTE ) { ++p; end = "\'"; // single quote in string p = ReadText( p, &value, false, end, false, encoding ); } else if ( *p == DOUBLE_QUOTE ) { ++p; end = "\""; // double quote in string p = ReadText( p, &value, false, end, false, encoding ); } else { // All attribute values should be in single or double quotes. // But this is such a common error that the parser will try // its best, even without them. value = ""; while ( p && *p // existence && !IsWhiteSpace( *p ) // whitespace && *p != '/' && *p != '>' ) // tag end { if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { // [ 1451649 ] Attribute values with trailing quotes not handled correctly // We did not have an opening quote but seem to have a // closing one. Give up and throw an error. if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); return 0; } value += *p; ++p; } } return p; } #ifdef TIXML_USE_STL void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag ) { while ( in->good() ) { int c = in->peek(); if ( !cdata && (c == '<' ) ) { return; } if ( c <= 0 ) { TiXmlDocument* document = GetDocument(); if ( document ) document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); return; } (*tag) += (char) c; in->get(); // "commits" the peek made above if ( cdata && c == '>' && tag->size() >= 3 ) { size_t len = tag->size(); if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) { // terminator of cdata. return; } } } } #endif const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) { value = ""; TiXmlDocument* document = GetDocument(); if ( data ) { data->Stamp( p, encoding ); location = data->Cursor(); } const char* const startTag = ""; if ( cdata || StringEqual( p, startTag, false, encoding ) ) { cdata = true; if ( !StringEqual( p, startTag, false, encoding ) ) { if ( document ) document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding ); return 0; } p += strlen( startTag ); // Keep all the white space, ignore the encoding, etc. while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) { value += *p; ++p; } TIXML_STRING dummy; p = ReadText( p, &dummy, false, endTag, false, encoding ); return p; } else { bool ignoreWhite = true; const char* end = "<"; p = ReadText( p, &value, ignoreWhite, end, false, encoding ); if ( p && *p ) return p-1; // don't truncate the '<' return 0; } } #ifdef TIXML_USE_STL void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag ) { while ( in->good() ) { int c = in->get(); if ( c <= 0 ) { TiXmlDocument* document = GetDocument(); if ( document ) document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); return; } (*tag) += (char) c; if ( c == '>' ) { // All is well. return; } } } #endif const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding ) { p = SkipWhiteSpace( p, _encoding ); // Find the beginning, find the end, and look for // the stuff in-between. TiXmlDocument* document = GetDocument(); if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding ); return 0; } if ( data ) { data->Stamp( p, _encoding ); location = data->Cursor(); } p += 5; version = ""; encoding = ""; standalone = ""; while ( p && *p ) { if ( *p == '>' ) { ++p; return p; } p = SkipWhiteSpace( p, _encoding ); if ( StringEqual( p, "version", true, _encoding ) ) { TiXmlAttribute attrib; p = attrib.Parse( p, data, _encoding ); version = attrib.Value(); } else if ( StringEqual( p, "encoding", true, _encoding ) ) { TiXmlAttribute attrib; p = attrib.Parse( p, data, _encoding ); encoding = attrib.Value(); } else if ( StringEqual( p, "standalone", true, _encoding ) ) { TiXmlAttribute attrib; p = attrib.Parse( p, data, _encoding ); standalone = attrib.Value(); } else { // Read over whatever it is. while( p && *p && *p != '>' && !IsWhiteSpace( *p ) ) ++p; } } return 0; } bool TiXmlText::Blank() const { for ( unsigned i=0; i) add_custom_command(TARGET CorsixTH POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove $/COPYRIGHT) add_custom_command(TARGET CorsixTH POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${VCPKG_INSTALLED_PATH}/$<$:debug/>bin/lfs.dll" $/lfs.dll) add_custom_command(TARGET CorsixTH POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${VCPKG_INSTALLED_PATH}/$<$:debug/>bin/lpeg.dll" $/lpeg.dll) add_custom_command(TARGET CorsixTH POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${VCPKG_INSTALLED_PATH}/$<$:debug/>bin/mime/core.dll" $/mime/core.dll) add_custom_command(TARGET CorsixTH POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${VCPKG_INSTALLED_PATH}/$<$:debug/>bin/socket/core.dll" $/socket/core.dll) CorsixTH-0.61/CMake/FindDirectX.cmake000066400000000000000000000107111321660673500173010ustar00rootroot00000000000000#------------------------------------------------------------------- # This file was taken from the CMake build system for OGRE # (Object-oriented Graphics Rendering Engine) # For the latest info, see http://www.ogre3d.org/ # # The contents of this file are placed in the public domain. Feel # free to make use of it in any way you like. #------------------------------------------------------------------- # ----------------------------------------------------------------------------- # Find DirectX SDK # Define: # DirectX_FOUND # DirectX_INCLUDE_DIR # DirectX_LIBRARY # DirectX_LIBRARY_DIR # DirectX_ROOT_DIR if(WIN32) # The only platform it makes sense to check for DirectX SDK include(FindPkgMacros) findpkg_begin(DirectX) # Get path, convert backslashes as ${ENV_DXSDK_DIR} getenv_path(DXSDK_DIR) getenv_path(DIRECTX_HOME) getenv_path(DIRECTX_ROOT) getenv_path(DIRECTX_BASE) # construct search paths set(DirectX_PREFIX_PATH "${DXSDK_DIR}" "${ENV_DXSDK_DIR}" "${DIRECTX_HOME}" "${ENV_DIRECTX_HOME}" "${DIRECTX_ROOT}" "${ENV_DIRECTX_ROOT}" "${DIRECTX_BASE}" "${ENV_DIRECTX_BASE}" "C:/apps_x86/Microsoft DirectX SDK*" "C:/Program Files (x86)/Microsoft DirectX SDK*" "C:/apps/Microsoft DirectX SDK*" "C:/Program Files/Microsoft DirectX SDK*" "$ENV{ProgramFiles}/Microsoft DirectX SDK*" ) # Windows 8 SDK has custom layout set(DirectX_INC_SEARCH_PATH "C:/Program Files (x86)/Windows Kits/8.0/Include/shared" "C:/Program Files (x86)/Windows Kits/8.0/Include/um" ) set(DirectX_LIB_SEARCH_PATH "C:/Program Files (x86)/Windows Kits/8.0/Lib/win8/um" ) create_search_paths(DirectX) # redo search if prefix path changed clear_if_changed(DirectX_PREFIX_PATH DirectX_LIBRARY DirectX_INCLUDE_DIR ) find_path(DirectX_INCLUDE_DIR NAMES d3d9.h HINTS ${DirectX_INC_SEARCH_PATH}) # dlls are in DirectX_ROOT_DIR/Developer Runtime/x64|x86 # lib files are in DirectX_ROOT_DIR/Lib/x64|x86 if(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x64") else(CMAKE_CL_64) set(DirectX_LIBPATH_SUFFIX "x86") endif(CMAKE_CL_64) find_library(DirectX_LIBRARY NAMES d3d9 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX_D3DX9_LIBRARY NAMES d3dx9 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX_DXERR_LIBRARY NAMES DxErr HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX_DXGUID_LIBRARY NAMES dxguid HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) # look for dxgi (needed by both 10 and 11) find_library(DirectX_DXGI_LIBRARY NAMES dxgi HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) # look for d3dcompiler (needed by 11) find_library(DirectX_D3DCOMPILER_LIBRARY NAMES d3dcompiler HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) findpkg_finish(DirectX) set(DirectX_LIBRARIES ${DirectX_LIBRARIES} ${DirectX_D3DX9_LIBRARY} ${DirectX_DXERR_LIBRARY} ${DirectX_DXGUID_LIBRARY} ) mark_as_advanced(DirectX_D3DX9_LIBRARY DirectX_DXERR_LIBRARY DirectX_DXGUID_LIBRARY DirectX_DXGI_LIBRARY DirectX_D3DCOMPILER_LIBRARY) # look for D3D11 components if (DirectX_FOUND) find_path(DirectX_D3D11_INCLUDE_DIR NAMES D3D11Shader.h HINTS ${DirectX_INC_SEARCH_PATH}) get_filename_component(DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH) message(STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}") find_library(DirectX_D3D11_LIBRARY NAMES d3d11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) find_library(DirectX_D3DX11_LIBRARY NAMES d3dx11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) if (DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY) set(DirectX_D3D11_FOUND TRUE) set(DirectX_D3D11_INCLUDE_DIR ${DirectX_D3D11_INCLUDE_DIR}) set(DirectX_D3D11_LIBRARIES ${DirectX_D3D11_LIBRARIES} ${DirectX_D3D11_LIBRARY} ${DirectX_DXGI_LIBRARY} ${DirectX_DXGUID_LIBRARY} ${DirectX_D3DCOMPILER_LIBRARY} ) endif () if (DirectX_D3DX11_LIBRARY) set(DirectX_D3D11_LIBRARIES ${DirectX_D3D11_LIBRARIES} ${DirectX_D3DX11_LIBRARY}) endif () if (DirectX_DXERR_LIBRARY) set(DirectX_D3D11_LIBRARIES ${DirectX_D3D11_LIBRARIES} ${DirectX_DXERR_LIBRARY}) endif () mark_as_advanced(DirectX_D3D11_INCLUDE_DIR DirectX_D3D11_LIBRARY DirectX_D3DX11_LIBRARY) endif () endif(WIN32) CorsixTH-0.61/CMake/FindFFmpeg.cmake000066400000000000000000000072611321660673500171110ustar00rootroot00000000000000# vim: ts=2 sw=2 # - Try to find the required ffmpeg components(default: AVFORMAT, AVUTIL, AVCODEC) # # Once done this will define # FFMPEG_FOUND - System has the all required components. # FFMPEG_INCLUDE_DIRS - Include directory necessary for using the required components headers. # FFMPEG_LIBRARIES - Link these to use the required ffmpeg components. # # For each of the components it will additionally set. # - AVCODEC # - AVDEVICE # - AVFORMAT # - AVUTIL # - POSTPROCESS # - SWSCALE # - SWRESAMPLE # the following variables will be defined # _FOUND - System has # _INCLUDE_DIRS - Include directory necessary for using the headers # _LIBRARIES - Link these to use # _VERSION_STRING - The component's version # # Copyright (c) 2006, Matthias Kretz, # Copyright (c) 2008, Alexander Neundorf, # Copyright (c) 2011, Michael Jansen, # Copyright (c) 2013, Stephen Baker # Copyright (c) 2015, Alexander Bessman # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. include(FindPackageHandleStandardArgs) include(${CMAKE_CURRENT_LIST_DIR}/CMakeFFmpegLibavMacros.cmake) # The default components were taken from a survey over other FindFFMPEG.cmake files if (NOT FFmpeg_FIND_COMPONENTS) set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL) endif () # Check for cached results. If there are skip the costly part. if (NOT FFMPEG_LIBRARIES) # Check for all possible component. find_component(AVCODEC avcodec libavcodec/avcodec.h libavcodec/version.h) find_component(AVFORMAT avformat libavformat/avformat.h libavformat/version.h) find_component(AVDEVICE avdevice libavdevice/avdevice.h libavdevice/version.h) find_component(AVUTIL avutil libavutil/avutil.h libavutil/version.h) find_component(SWSCALE swscale libswscale/swscale.h libswscale/version.h) find_component(POSTPROC postproc libpostproc/postprocess.h libpostproc/version.h) find_component(SWRESAMPLE swresample libswresample/swresample.h libswresample/version.h) # Check if the required components were found and add their stuff to the FFMPEG_* vars. foreach (_component ${FFmpeg_FIND_COMPONENTS}) if (${_component}_FOUND) # message(STATUS "Required component ${_component} present.") set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} ${${_component}_LIBRARIES}) list(APPEND FFMPEG_INCLUDE_DIRS ${${_component}_INCLUDE_DIRS}) else () # message(STATUS "Required component ${_component} missing.") endif () endforeach () # Build the include path with duplicates removed. if (FFMPEG_INCLUDE_DIRS) list(REMOVE_DUPLICATES FFMPEG_INCLUDE_DIRS) endif () # cache the vars. set(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS} CACHE STRING "The FFmpeg include directories." FORCE) set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} CACHE STRING "The FFmpeg libraries." FORCE) mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES) endif () # Now set the noncached _FOUND vars for the components. foreach (_component AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROCESS SWSCALE SWRESAMPLE) set_component_found(${_component}) endforeach () # Compile the list of required vars set(_FFmpeg_REQUIRED_VARS FFMPEG_LIBRARIES FFMPEG_INCLUDE_DIRS) foreach (_component ${FFmpeg_FIND_COMPONENTS}) list(APPEND _FFmpeg_REQUIRED_VARS ${_component}_LIBRARIES ${_component}_INCLUDE_DIRS) endforeach () # Give a nice error message if some of the required vars are missing. find_package_handle_standard_args(FFmpeg DEFAULT_MSG ${_FFmpeg_REQUIRED_VARS}) CorsixTH-0.61/CMake/FindLibAV.cmake000066400000000000000000000072511321660673500167010ustar00rootroot00000000000000# vim: ts=2 sw=2 # - Try to find the required libav components(default: AVFORMAT, AVUTIL, AVCODEC) # # Once done this will define # LIBAV_FOUND - System has the all required components. # LIBAV_INCLUDE_DIRS - Include directory necessary for using the required components headers. # LIBAV_LIBRARIES - Link these to use the required libav components. # # For each of the components it will additionally set. # - AVCODEC # - AVDEVICE # - AVFILTER # - AVFORMAT # - AVRESAMPLE # - AVUTIL # - SWSCALE # the following variables will be defined # _FOUND - System has # _INCLUDE_DIRS - Include directory necessary for using the headers # _LIBRARIES - Link these to use # _VERSION_STRING - The component's version # # Copyright (c) 2006, Matthias Kretz, # Copyright (c) 2008, Alexander Neundorf, # Copyright (c) 2011, Michael Jansen, # Copyright (c) 2013,2015 Stephen Baker # Copyright (c) 2015, Alexander Bessman # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. include(FindPackageHandleStandardArgs) include(${CMAKE_CURRENT_LIST_DIR}/CMakeFFmpegLibavMacros.cmake) # The default components were taken from a survey over other FindLIBAV.cmake files if (NOT LibAV_FIND_COMPONENTS) set(LibAV_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL) endif () # Check for cached results. If there are skip the costly part. if (NOT LIBAV_LIBRARIES) # Check for all possible component. find_component(AVCODEC avcodec libavcodec/avcodec.h libavcodec/version.h) find_component(AVFORMAT avformat libavformat/avformat.h libavformat/version.h) find_component(AVDEVICE avdevice libavdevice/avdevice.h libavdevice/version.h) find_component(AVFILTER avfilter libavfilter/avfilter.h libavfilter/version.h) find_component(AVRESAMPLE avresample libavresample/avresample.h libavresample/version.h) find_component(AVUTIL avutil libavutil/avutil.h libavutil/version.h) find_component(SWSCALE swscale libswscale/swscale.h libswscale/version.h) # Check if the required components were found and add their stuff to the LIBAV_* vars. foreach (_component ${LibAV_FIND_COMPONENTS}) if (${_component}_FOUND) # message(STATUS "Required component ${_component} present.") set(LIBAV_LIBRARIES ${LIBAV_LIBRARIES} ${${_component}_LIBRARIES}) list(APPEND LIBAV_INCLUDE_DIRS ${${_component}_INCLUDE_DIRS}) else () # message(STATUS "Required component ${_component} missing.") endif () endforeach () # Build the include path with duplicates removed. if (LIBAV_INCLUDE_DIRS) list(REMOVE_DUPLICATES LIBAV_INCLUDE_DIRS) endif () # cache the vars. set(LIBAV_INCLUDE_DIRS ${LIBAV_INCLUDE_DIRS} CACHE STRING "The LibAV include directories." FORCE) set(LIBAV_LIBRARIES ${LIBAV_LIBRARIES} CACHE STRING "The LibAV libraries." FORCE) mark_as_advanced(LIBAV_INCLUDE_DIRS LIBAV_LIBRARIES) endif () # Now set the noncached _FOUND vars for the components. foreach (_component AVCODEC AVDEVICE AVFILTER AVFORMAT AVRESAMPLE AVUTIL SWSCALE) set_component_found(${_component}) endforeach () # Compile the list of required vars set(_LibAV_REQUIRED_VARS LIBAV_LIBRARIES LIBAV_INCLUDE_DIRS) foreach (_component ${LibAV_FIND_COMPONENTS}) list(APPEND _LibAV_REQUIRED_VARS ${_component}_LIBRARIES ${_component}_INCLUDE_DIRS) endforeach () # Give a nice error message if some of the required vars are missing. find_package_handle_standard_args(LibAV DEFAULT_MSG ${_LibAV_REQUIRED_VARS}) CorsixTH-0.61/CMake/FindLua.cmake000077500000000000000000000045051321660673500164670ustar00rootroot00000000000000# Copyright (c) 2013 Martin Felis <martin@fysx.org> # License: Public Domain (Unlicense: http://unlicense.org/) # Modified by Edvin "Lego3" Linge for the CorsixTH project. # # Try to find Lua or LuaJIT depending on the variable WITH_LUAJIT. # Sets the following variables: # Lua_FOUND # LUA_INCLUDE_DIR # LUA_LIBRARY # # Use it in a CMakeLists.txt script as: # # OPTION (WITH_LUAJIT "Use LuaJIT instead of default Lua" OFF) # UNSET(Lua_FOUND CACHE) # UNSET(LUA_INCLUDE_DIR CACHE) # UNSET(LUA_LIBRARY CACHE) # FIND_PACKAGE (Lua REQUIRED) SET (Lua_FOUND FALSE) SET (LUA_INTERPRETER_TYPE "") IF (WITH_LUAJIT) SET (LUA_INTERPRETER_TYPE "LuaJIT") SET (LUA_LIBRARY_NAME luajit-5.1 lua51) SET (LUA_INCLUDE_DIRS include/luajit-2.0 include) ELSE (WITH_LUAJIT) SET (LUA_INTERPRETER_TYPE "Lua") SET (LUA_LIBRARY_NAME lua53 lua5.3 lua-5.3 liblua.5.3.dylib lua52 lua5.2 lua-5.2 liblua.5.2.dylib lua51 lua5.1 lua-5.1 liblua.5.1.dylib lua liblua) SET (LUA_INCLUDE_DIRS include/lua53 include/lua5.3 include/lua-5.3 include/lua52 include/lua5.2 include/lua-5.2 include/lua51 include/lua5.1 include/lua-5.1 include/lua include) ENDIF(WITH_LUAJIT) FIND_PATH (LUA_INCLUDE_DIR lua.h HINTS ENV LUA_DIR PATH_SUFFIXES ${LUA_INCLUDE_DIRS} PATHS /opt/local /usr/local /usr /opt /sw ~/Library/Frameworks /Library/Frameworks ) FIND_LIBRARY (LUA_LIBRARY NAMES ${LUA_LIBRARY_NAME} HINTS ENV LUA_DIR PATH_SUFFIXES lib PATHS /usr /usr/local /opt/local /opt /sw ~/Library/Frameworks /Library/Frameworks ) IF (NOT LUA_INCLUDE_DIR) MESSAGE(FATAL_ERROR "Could Not Find Lua Include Dir") ENDIF (NOT LUA_INCLUDE_DIR) IF (NOT LUA_LIBRARY) MESSAGE(FATAL_ERROR "Could Not Find Lua Library") ENDIF (NOT LUA_LIBRARY) IF (LUA_INCLUDE_DIR AND LUA_LIBRARY) SET (Lua_FOUND TRUE) ENDIF (LUA_INCLUDE_DIR AND LUA_LIBRARY) IF (Lua_FOUND) IF (NOT Lua_FIND_QUIETLY) MESSAGE(STATUS "Found ${LUA_INTERPRETER_TYPE} library: ${LUA_LIBRARY}") ENDIF (NOT Lua_FIND_QUIETLY) ELSE (Lua_FOUND) IF (Lua_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Could not find ${LUA_INTERPRETER_TYPE}") ENDIF (Lua_FIND_REQUIRED) ENDIF (Lua_FOUND) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua DEFAULT_MSG LUA_LIBRARY LUA_INCLUDE_DIR) MARK_AS_ADVANCED ( LUA_INCLUDE_DIR LUA_LIBRARY) CorsixTH-0.61/CMake/FindPkgMacros.cmake000066400000000000000000000135371321660673500176360ustar00rootroot00000000000000#------------------------------------------------------------------- # This file was taken from the CMake build system for OGRE # (Object-oriented Graphics Rendering Engine) # For the latest info, see http://www.ogre3d.org/ # # The contents of this file are placed in the public domain. Feel # free to make use of it in any way you like. # # FindDirectX.cmake is dependant on this file. #------------------------------------------------------------------- ################################################################## # Provides some common functionality for the FindPackage modules ################################################################## # Begin processing of package macro(findpkg_begin PREFIX) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Looking for ${PREFIX}...") endif () endmacro(findpkg_begin) # Display a status message unless FIND_QUIETLY is set macro(pkg_message PREFIX) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS ${ARGN}) endif () endmacro(pkg_message) # Get environment variable, define it as ENV_$var and make sure backslashes are converted to forward slashes macro(getenv_path VAR) set(ENV_${VAR} $ENV{${VAR}}) # replace won't work if var is blank if (ENV_${VAR}) string( REGEX REPLACE "\\\\" "/" ENV_${VAR} ${ENV_${VAR}} ) endif () endmacro(getenv_path) # Construct search paths for includes and libraries from a PREFIX_PATH macro(create_search_paths PREFIX) foreach(dir ${${PREFIX}_PREFIX_PATH}) set(${PREFIX}_INC_SEARCH_PATH ${${PREFIX}_INC_SEARCH_PATH} ${dir}/include ${dir}/Include ${dir}/include/${PREFIX} ${dir}/Headers) set(${PREFIX}_LIB_SEARCH_PATH ${${PREFIX}_LIB_SEARCH_PATH} ${dir}/lib ${dir}/Lib ${dir}/lib/${PREFIX} ${dir}/Libs) set(${PREFIX}_BIN_SEARCH_PATH ${${PREFIX}_BIN_SEARCH_PATH} ${dir}/bin) endforeach(dir) set(${PREFIX}_FRAMEWORK_SEARCH_PATH ${${PREFIX}_PREFIX_PATH}) endmacro(create_search_paths) # clear cache variables if a certain variable changed macro(clear_if_changed TESTVAR) # test against internal check variable # HACK: Apparently, adding a variable to the cache cleans up the list # a bit. We need to also remove any empty strings from the list, but # at the same time ensure that we are actually dealing with a list. list(APPEND ${TESTVAR} "") list(REMOVE_ITEM ${TESTVAR} "") if (NOT "${${TESTVAR}}" STREQUAL "${${TESTVAR}_INT_CHECK}") message(STATUS "${TESTVAR} changed.") foreach(var ${ARGN}) set(${var} "NOTFOUND" CACHE STRING "x" FORCE) endforeach(var) endif () set(${TESTVAR}_INT_CHECK ${${TESTVAR}} CACHE INTERNAL "x" FORCE) endmacro(clear_if_changed) # Try to get some hints from pkg-config, if available macro(use_pkgconfig PREFIX PKGNAME) find_package(PkgConfig) if (PKG_CONFIG_FOUND) pkg_check_modules(${PREFIX} ${PKGNAME}) endif () endmacro (use_pkgconfig) # Couple a set of release AND debug libraries (or frameworks) macro(make_library_set PREFIX) if (${PREFIX}_FWK) set(${PREFIX} ${${PREFIX}_FWK}) elseif (${PREFIX}_REL AND ${PREFIX}_DBG) set(${PREFIX} optimized ${${PREFIX}_REL} debug ${${PREFIX}_DBG}) elseif (${PREFIX}_REL) set(${PREFIX} ${${PREFIX}_REL}) elseif (${PREFIX}_DBG) set(${PREFIX} ${${PREFIX}_DBG}) endif () endmacro(make_library_set) # Generate debug names from given release names macro(get_debug_names PREFIX) foreach(i ${${PREFIX}}) set(${PREFIX}_DBG ${${PREFIX}_DBG} ${i}d ${i}D ${i}_d ${i}_D ${i}_debug ${i}) endforeach(i) endmacro(get_debug_names) # Add the parent dir from DIR to VAR macro(add_parent_dir VAR DIR) get_filename_component(${DIR}_TEMP "${${DIR}}/.." ABSOLUTE) set(${VAR} ${${VAR}} ${${DIR}_TEMP}) endmacro(add_parent_dir) # Do the final processing for the package find. macro(findpkg_finish PREFIX) # skip if already processed during this run if (NOT ${PREFIX}_FOUND) if (${PREFIX}_INCLUDE_DIR AND ${PREFIX}_LIBRARY) set(${PREFIX}_FOUND TRUE) set(${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIR}) set(${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARY}) if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Found ${PREFIX}: ${${PREFIX}_LIBRARIES}") endif () else () if (NOT ${PREFIX}_FIND_QUIETLY) message(STATUS "Could not locate ${PREFIX}") endif () if (${PREFIX}_FIND_REQUIRED) message(FATAL_ERROR "Required library ${PREFIX} not found! Install the library (including dev packages) and try again. If the library is already installed, set the missing variables manually in cmake.") endif () endif () mark_as_advanced(${PREFIX}_INCLUDE_DIR ${PREFIX}_LIBRARY ${PREFIX}_LIBRARY_REL ${PREFIX}_LIBRARY_DBG ${PREFIX}_LIBRARY_FWK) endif () endmacro(findpkg_finish) # Slightly customised framework finder macro(findpkg_framework fwk) if(APPLE) set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_SEARCH_PATH} ${CMAKE_FRAMEWORK_PATH} ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks /Network/Library/Frameworks ${CMAKE_CURRENT_SOURCE_DIR}/lib/Release ${CMAKE_CURRENT_SOURCE_DIR}/lib/Debug ) # These could be arrays of paths, add each individually to the search paths foreach(i ${OGRE_PREFIX_PATH}) set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_PATH} ${i}/lib/Release ${i}/lib/Debug) endforeach(i) foreach(i ${OGRE_PREFIX_BUILD}) set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_PATH} ${i}/lib/Release ${i}/lib/Debug) endforeach(i) foreach(dir ${${fwk}_FRAMEWORK_PATH}) set(fwkpath ${dir}/${fwk}.framework) if(EXISTS ${fwkpath}) set(${fwk}_FRAMEWORK_INCLUDES ${${fwk}_FRAMEWORK_INCLUDES} ${fwkpath}/Headers ${fwkpath}/PrivateHeaders) set(${fwk}_FRAMEWORK_PATH ${dir}) if (NOT ${fwk}_LIBRARY_FWK) set(${fwk}_LIBRARY_FWK "-framework ${fwk}") endif () endif(EXISTS ${fwkpath}) endforeach(dir) endif(APPLE) endmacro(findpkg_framework) CorsixTH-0.61/CMake/FindSDL2.cmake000066400000000000000000000142341321660673500164470ustar00rootroot00000000000000# - Locate SDL2 library # This module defines # SDL_LIBRARY, the name of the library to link against # SDL_FOUND, if false, do not try to link to SDL # SDL_INCLUDE_DIR, where to find SDL.h # SDL_VERSION_STRING, human-readable string containing the version of SDL # # This module responds to the the flag: # SDL_BUILDING_LIBRARY # If this is defined, then no SDL_main will be linked in because # only applications need main(). # Otherwise, it is assumed you are building an application and this # module will attempt to locate and set the the proper link flags # as part of the returned SDL_LIBRARY variable. # # Don't forget to include SDL_main.h and SDLmain.m your project for the # OS X framework based version. (Other versions link to -lSDLmain which # this module will try to find on your behalf.) Also for OS X, this # module will automatically add the -framework Cocoa on your behalf. # # # Additional Note: If you see an empty SDL_LIBRARY_TEMP in your configuration # and no SDL_LIBRARY, it means CMake did not find your SDL library # (SDL2.dll, libSDL2.so, SDL2.framework, etc). # Set SDL_LIBRARY_TEMP to point to your SDL library, and configure again. # Similarly, if you see an empty SDLMAIN_LIBRARY, you should set this value # as appropriate. These values are used to generate the final SDL_LIBRARY # variable, but when these values are unset, SDL_LIBRARY does not get created. # # # $SDLDIR is an environment variable that would # correspond to the ./configure --prefix=$SDLDIR # used in building SDL. # l.e.galup 9-20-02 #============================================================================= # Copyright 2003-2009 Kitware, Inc. # Copyright 2012 Benjamin Eikel # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) find_path(SDL_INCLUDE_DIR SDL.h HINTS ENV SDLDIR PATH_SUFFIXES include/SDL2 include ) find_library(SDL_LIBRARY_TEMP NAMES SDL2 HINTS ENV SDLDIR PATH_SUFFIXES lib ) if(NOT SDL_BUILDING_LIBRARY) if(NOT ${SDL_INCLUDE_DIR} MATCHES ".framework") # Non-OS X framework versions expect you to also dynamically link to # SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms # seem to provide SDL2main for compatibility even though they don't # necessarily need it. find_library(SDLMAIN_LIBRARY NAMES SDL2main HINTS ENV SDLDIR PATH_SUFFIXES lib PATHS /sw /opt/local /opt/csw /opt ) endif() endif() # SDL may require threads on your system. # The Apple build may not need an explicit flag because one of the # frameworks may already provide it. # But for non-OSX systems, I will use the CMake Threads package. if(NOT APPLE) find_package(Threads) endif() # MinGW needs an additional library, mwindows # It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -lmwindows # (Actually on second look, I think it only needs one of the m* libraries.) if(MINGW) set(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW") endif() if(SDL_LIBRARY_TEMP) # For SDL2main if(SDLMAIN_LIBRARY AND NOT SDL_BUILDING_LIBRARY) list(FIND SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" _SDL_MAIN_INDEX) if(_SDL_MAIN_INDEX EQUAL -1) set(SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" ${SDL_LIBRARY_TEMP}) endif() unset(_SDL_MAIN_INDEX) endif() # For OS X, SDL uses Cocoa as a backend so it must link to Cocoa. # CMake doesn't display the -framework Cocoa string in the UI even # though it actually is there if I modify a pre-used variable. # I think it has something to do with the CACHE STRING. # So I use a temporary variable until the end so I can set the # "real" variable in one-shot. if(APPLE) set(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} "-framework Cocoa") endif() # For threads, as mentioned Apple doesn't need this. # In fact, there seems to be a problem if I used the Threads package # and try using this line, so I'm just skipping it entirely for OS X. if(NOT APPLE) set(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT}) endif() # For MinGW library if(MINGW) set(SDL_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL_LIBRARY_TEMP}) endif() # Set the final string here so the GUI reflects the final state. set(SDL_LIBRARY ${SDL_LIBRARY_TEMP} CACHE STRING "Where the SDL Library can be found") # Set the temp variable to INTERNAL so it is not seen in the CMake GUI set(SDL_LIBRARY_TEMP "${SDL_LIBRARY_TEMP}" CACHE INTERNAL "") endif() if(SDL_INCLUDE_DIR AND EXISTS "${SDL_INCLUDE_DIR}/SDL_version.h") file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$") file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$") file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$") string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MAJOR "${SDL_VERSION_MAJOR_LINE}") string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MINOR "${SDL_VERSION_MINOR_LINE}") string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL_VERSION_PATCH "${SDL_VERSION_PATCH_LINE}") set(SDL_VERSION_STRING ${SDL_VERSION_MAJOR}.${SDL_VERSION_MINOR}.${SDL_VERSION_PATCH}) unset(SDL_VERSION_MAJOR_LINE) unset(SDL_VERSION_MINOR_LINE) unset(SDL_VERSION_PATCH_LINE) unset(SDL_VERSION_MAJOR) unset(SDL_VERSION_MINOR) unset(SDL_VERSION_PATCH) endif() #include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL REQUIRED_VARS SDL_LIBRARY SDL_INCLUDE_DIR VERSION_VAR SDL_VERSION_STRING) CorsixTH-0.61/CMake/FindSDL2_mixer.cmake000066400000000000000000000075401321660673500176550ustar00rootroot00000000000000# - Locate SDL_mixer library # This module defines: # SDL_MIXER_LIBRARIES, the name of the library to link against # SDL_MIXER_INCLUDE_DIRS, where to find the headers # SDL_MIXER_FOUND, if false, do not try to link against # SDL_MIXER_VERSION_STRING - human-readable string containing the version of SDL_mixer # # For backward compatibility the following variables are also set: # SDLMIXER_LIBRARY (same value as SDL_MIXER_LIBRARIES) # SDLMIXER_INCLUDE_DIR (same value as SDL_MIXER_INCLUDE_DIRS) # SDLMIXER_FOUND (same value as SDL_MIXER_FOUND) # # $SDLDIR is an environment variable that would # correspond to the ./configure --prefix=$SDLDIR # used in building SDL. # # Created by Eric Wing. This was influenced by the FindSDL.cmake # module, but with modifications to recognize OS X frameworks and # additional Unix paths (FreeBSD, etc). #============================================================================= # Copyright 2005-2009 Kitware, Inc. # Copyright 2012 Benjamin Eikel # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) if(NOT SDL_MIXER_INCLUDE_DIR AND SDLMIXER_INCLUDE_DIR) set(SDL_MIXER_INCLUDE_DIR ${SDLMIXER_INCLUDE_DIR} CACHE PATH "directory cache entry initialized from old variable name") endif() find_path(SDL_MIXER_INCLUDE_DIR SDL_mixer.h HINTS ENV SDLMIXERDIR ENV SDLDIR PATH_SUFFIXES include/SDL2 include ) if(NOT SDL_MIXER_LIBRARY AND SDLMIXER_LIBRARY) set(SDL_MIXER_LIBRARY ${SDLMIXER_LIBRARY} CACHE FILEPATH "file cache entry initialized from old variable name") endif() find_library(SDL_MIXER_LIBRARY NAMES SDL2_mixer HINTS ENV SDLMIXERDIR ENV SDLDIR PATH_SUFFIXES lib ) if(SDL_MIXER_INCLUDE_DIR AND EXISTS "${SDL_MIXER_INCLUDE_DIR}/SDL_mixer.h") file(STRINGS "${SDL_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+[0-9]+$") file(STRINGS "${SDL_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+[0-9]+$") file(STRINGS "${SDL_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+[0-9]+$") string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_MIXER_VERSION_MAJOR "${SDL_MIXER_VERSION_MAJOR_LINE}") string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_MIXER_VERSION_MINOR "${SDL_MIXER_VERSION_MINOR_LINE}") string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL_MIXER_VERSION_PATCH "${SDL_MIXER_VERSION_PATCH_LINE}") set(SDL_MIXER_VERSION_STRING ${SDL_MIXER_VERSION_MAJOR}.${SDL_MIXER_VERSION_MINOR}.${SDL_MIXER_VERSION_PATCH}) unset(SDL_MIXER_VERSION_MAJOR_LINE) unset(SDL_MIXER_VERSION_MINOR_LINE) unset(SDL_MIXER_VERSION_PATCH_LINE) unset(SDL_MIXER_VERSION_MAJOR) unset(SDL_MIXER_VERSION_MINOR) unset(SDL_MIXER_VERSION_PATCH) endif() set(SDL_MIXER_LIBRARIES ${SDL_MIXER_LIBRARY}) set(SDL_MIXER_INCLUDE_DIRS ${SDL_MIXER_INCLUDE_DIR}) #include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL_mixer REQUIRED_VARS SDL_MIXER_LIBRARIES SDL_MIXER_INCLUDE_DIRS VERSION_VAR SDL_MIXER_VERSION_STRING) # for backward compatibility set(SDLMIXER_LIBRARY ${SDL_MIXER_LIBRARIES}) set(SDLMIXER_INCLUDE_DIR ${SDL_MIXER_INCLUDE_DIRS}) set(SDLMIXER_FOUND ${SDL_MIXER_FOUND}) CorsixTH-0.61/CMake/FindVLD.cmake000066400000000000000000000023321321660673500163640ustar00rootroot00000000000000## Try to find Visual Leak Debugger library (VDL) ## http://vld.codeplex.com ## ## Sets the following variables: ## VLD_FOUND ## VLD_INCLUDE_DIR ## VLD_LIBRARY ## ## Stephen E. Baker 2014 SET(VLD_FOUND FALSE) IF(${CMAKE_SIZEOF_VOID_P} MATCHES 8) SET (VLD_LIB_SUBDIRS lib/Win64 lib) ELSE(${CMAKE_SIZEOF_VOID_P} MATCHES 8) SET (VLD_LIB_SUBDIRS lib/Win32 lib) ENDIF(${CMAKE_SIZEOF_VOID_P} MATCHES 8) SET (PROG_FILES_X86_ENV "PROGRAMFILES(X86)") SET (PROG_FILES_ENV "PROGRAMFILES") FIND_PATH(VLD_INCLUDE_DIR vld.h HINTS ENV VLD_HOME PATH_SUFFIXES include PATHS "$ENV{${PROG_FILES_X86_ENV}}/Visual Leak Detector" "$ENV{${PROG_FILES_ENV}}/Visual Leak Detector" ) #MESSAGE("VLD_INCLUDE_DIR=${VLD_INCLUDE_DIR}") FIND_LIBRARY(VLD_LIBRARY NAMES vld HINTS ENV VLD_HOME PATH_SUFFIXES ${VLD_LIB_SUBDIRS} PATHS "$ENV{${PROG_FILES_X86_ENV}}/Visual Leak Detector" "$ENV{${PROG_FILES_ENV}}/Visual Leak Detector" ) #MESSAGE("VLD_LIBRARY=${VLD_LIBRARY}") IF(VLD_INCLUDE_DIR AND VLD_LIBRARY) SET(VLD_FOUND TRUE) ENDIF(VLD_INCLUDE_DIR AND VLD_LIBRARY) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(VLD DEFAULT_MSG VLD_LIBRARY VLD_INCLUDE_DIR) MARK_AS_ADVANCED( VLD_INCLUDE_DIR VLD_LIBRARY ) CorsixTH-0.61/CMake/PrecompiledDeps.cmake000066400000000000000000000077041321660673500202250ustar00rootroot00000000000000# Copyright (c) 2017 David Fairbrother # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # Clones and sets any dependencies up include(ExternalProject) # Inform CMake about the external project set(_DEPS_PROJECT_NAME PrecompiledDependencies) # Place files into ./precompiled_deps folder set(PRECOMPILED_DEPS_BASE_DIR ${PROJECT_SOURCE_DIR}/PrecompiledDeps CACHE PATH "Destination for pre-built dependencies") set(_DEPS_GIT_URL "https://github.com/CorsixTH/deps.git") # Select the optimal dependencies commit regardless where master is. set(_DEPS_GIT_SHA "a23eb28bb8998b93215eccf805ee5462d75a57f2") ExternalProject_Add(${_DEPS_PROJECT_NAME} PREFIX ${PRECOMPILED_DEPS_BASE_DIR} GIT_REPOSITORY ${_DEPS_GIT_URL} GIT_TAG ${_DEPS_GIT_SHA} # As the deps are already build we can skip these CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "") unset(_DEPS_GIT_URL) unset(_DEPS_GIT_SHA) # Make sure the final make file / solution does not attempt to build # the dependencies target set_target_properties(${_DEPS_PROJECT_NAME} PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1) set(_DEPS_TMP_PATH ${PRECOMPILED_DEPS_BASE_DIR}/tmp) set(_DEPS_MODULES_TEMPLATE_NAME ${_DEPS_TMP_PATH}/${_DEPS_PROJECT_NAME}) # Clone if we don't have the deps if(NOT EXISTS ${PRECOMPILED_DEPS_BASE_DIR}/src/${_DEPS_PROJECT_NAME}/.git) message(STATUS "Getting Precompiled Dependencies...") execute_process(COMMAND ${CMAKE_COMMAND} ARGS -P ${_DEPS_MODULES_TEMPLATE_NAME}-gitclone.cmake RESULT_VARIABLE return_value) if(return_value) message(FATAL_ERROR "Failed to clone precompiled dependencies.") endif() # Deps exist, check for updates and checkout the correct tag else() message(STATUS "Checking for Precompiled Dependency Updates...") execute_process(COMMAND ${CMAKE_COMMAND} ARGS -P ${_DEPS_MODULES_TEMPLATE_NAME}-gitupdate.cmake RESULT_VARIABLE return_value) if(return_value) message(FATAL_ERROR "Failed to update precompiled dependencies.") endif() endif() # We can dispose of tmp and modules template name afterwards unset(_DEPS_TMP_PATH) unset(_DEPS_MODULES_TEMPLATE_NAME) # Determine the appropriate libs to use for this compiler if(UNIX AND CMAKE_COMPILER_IS_GNU) # We need user to choose which arch they are intending to compile for set(DEPS_ARCH "x86" CACHE STRING "Architecture of precompiled dependencies to use.") set_property(CACHE DEPS_ARCH PROPERTY STRINGS "x86" "x64") # Generate the folder to use set(_DEPS_FOLDER_NAME "gnu-linux-" + ${DEPS_ARCH}) else() message(FATAL_ERROR "Precompiled dependencies do not exist for this platform / compiler combination yet.") endif() set(_DEPS_PATH ${PRECOMPILED_DEPS_BASE_DIR}/src/${_DEPS_PROJECT_NAME}/${_DEPS_FOLDER_NAME}) # Update the prefix path - this refers to the base directory that find_xx # commands use. For example using find_include would automatically append # the 'include' subdirectory in. set(CMAKE_PREFIX_PATH ${_DEPS_PATH}) unset(_DEPS_FOLDER_NAME) unset(_DEPS_PATH) CorsixTH-0.61/CMake/VcpkgDeps.cmake000066400000000000000000000052361321660673500170320ustar00rootroot00000000000000# Copyright (c) 2017 David Fairbrother # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. set(VCPKG_COMMIT_SHA "0c14322f9fd318cab1d1cae785cf7894c4ff17b8") # Setup the various paths we are using set(_VCPKG_SCRIPT_NAME "build_vcpkg_deps.ps1") set(_SCRIPT_DIR ${CMAKE_SOURCE_DIR}/scripts) # By default place VCPKG into root folder set(VCPKG_PARENT_DIR ${CMAKE_SOURCE_DIR} CACHE PATH "Destination for vcpkg dependencies") # Determine the args to use if(VCPKG_TARGET_TRIPLET) set(_VCPKG_TARGET_TRIPLET ${VCPKG_TARGET_TRIPLET}) elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Xx]64$" OR CMAKE_GENERATOR MATCHES "Win64$") set(_VCPKG_TARGET_TRIPLET "x64-windows") elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]$" OR CMAKE_GENERATOR MATCHES "ARM$") set(_VCPKG_TARGET_TRIPLET "arm-windows") else() set(_VCPKG_TARGET_TRIPLET "x86-windows") endif() set(_VCPKG_ARGS "-VcpkgTriplet " ${_VCPKG_TARGET_TRIPLET}) if(BUILD_ANIMVIEWER) string(CONCAT _VCPKG_ARGS ${_VCPKG_ARGS} " -BuildAnimView $True") else() string(CONCAT _VCPKG_ARGS ${_VCPKG_ARGS} " -BuildAnimView $False") endif() string(CONCAT _VCPKG_ARGS ${_VCPKG_ARGS} " -VcpkgCommitSha " ${VCPKG_COMMIT_SHA} " ") # Run the build script set(_SCRIPT_COMMAND powershell ${_SCRIPT_DIR}/${_VCPKG_SCRIPT_NAME}) execute_process(WORKING_DIRECTORY ${VCPKG_PARENT_DIR} COMMAND ${_SCRIPT_COMMAND} ${_VCPKG_ARGS} RESULT_VARIABLE err_val) if(err_val) message(FATAL_ERROR "Failed to build vcpkg dependencies. " "\nIf this error persists try deleting the 'vcpkg' folder.\n") endif() set(VCPKG_INSTALLED_PATH ${VCPKG_PARENT_DIR}/vcpkg/installed/${_VCPKG_TARGET_TRIPLET}) set(CMAKE_TOOLCHAIN_FILE ${VCPKG_PARENT_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake) CorsixTH-0.61/CMakeLists.txt000066400000000000000000000203751321660673500157230ustar00rootroot00000000000000# Cmake File for CorsixTH # OPTIONS AVAILABLE: # At most, one of the following: # - WITH_SDL : Activate SDL Renderer (default) # Any of the following: # - WITH_AUDIO : Activate Sound (enabled by default) # - WITH_FREETYPE2 # - WITH_MOVIES : Activate movies (requires Sound) # - BUILD_ANIMVIEWER # - WITH_LUAJIT : Whether to use LuaJIT 2 instead of Lua51 (default is LuaJIT 2) # - WITH_LIBAV : Whether to use LibAV (as opposed to FFMEPG) when building movies # - WITH_VLD : Build with Visual Leak Detector (requires Visual Studio) CMAKE_MINIMUM_REQUIRED(VERSION 3.2) SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMake) IF(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015" OR CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017") OPTION(USE_VCPKG_DEPS "Build vcpkg dependencies locally" OFF) ENDIF() if(USE_VCPKG_DEPS) message("Note: Using locally built vcpkg dependencies.") include(VcpkgDeps) endif() PROJECT(CorsixTH_Top_Level) INCLUDE(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) IF(COMPILER_SUPPORTS_CXX11) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") ELSEIF(COMPILER_SUPPORTS_CXX0X) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") ENDIF(COMPILER_SUPPORTS_CXX11) IF (MINGW) set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") ENDIF(MINGW) INCLUDE(CheckIncludeFiles) SET(CORSIX_TH_DONE_TOP_LEVEL_CMAKE ON) # Dependency management if ( UNIX AND CMAKE_COMPILER_IS_GNU) OPTION(USE_PRECOMPILED_DEPS "Use Precompiled Dependencies" OFF) # Make *nix systems opt in endif() # Define our options OPTION(WITH_SDL "Activate SDL Renderer" ON) # our default option OPTION(WITH_AUDIO "Activate Sound" ON) # enabled by default OPTION(WITH_MOVIES "Activate in game movies" ON) OPTION(WITH_FREETYPE2 "Enhanced Font Support" ON) OPTION(WITH_LUAJIT "Use LuaJIT instead of Lua" OFF) OPTION(WITH_LIBAV "Use LibAV instead of FFmpeg" OFF) OPTION(BUILD_ANIMVIEWER "Build the animation viewer as part of the build process" OFF) IF(MSVC) OPTION(WITH_VLD "Build with Visual Leak Detector for Visual Studio" OFF) ENDIF(MSVC) IF(WITH_AUDIO) SET(CORSIX_TH_USE_SDL_MIXER ON) MESSAGE("Note: SDL audio is enabled (default)") ELSE() SET(CORSIX_TH_USE_SDL_MIXER OFF) MESSAGE("Note: SDL audio is disabled") ENDIF(WITH_AUDIO) IF(WITH_MOVIES) IF(WITH_AUDIO) IF(WITH_LIBAV) SET(CORSIX_TH_USE_FFMPEG OFF) SET(CORSIX_TH_USE_LIBAV ON) MESSAGE("Note: LibAV video is enabled") ELSE() SET(CORSIX_TH_USE_FFMPEG ON) SET(CORSIX_TH_USE_LIBAV OFF) MESSAGE("Note: FFMPEG video is enabled (default)") ENDIF(WITH_LIBAV) ELSE() SET(CORSIX_TH_USE_FFMPEG OFF) SET(CORSIX_TH_USE_LIBAV OFF) MESSAGE("Note: FFMPEG video disabled since it requires SDL audio.") ENDIF(WITH_AUDIO) ELSE() SET(CORSIX_TH_USE_FFMPEG OFF) SET(CORSIX_TH_USE_LIBAV OFF) MESSAGE("Note: FFMPEG video is disabled") ENDIF(WITH_MOVIES) IF(WITH_FREETYPE2) SET(CORSIX_TH_USE_FREETYPE2 ON) MESSAGE("Note: FreeType2 is enabled (default)") ELSE() SET(CORSIX_TH_USE_FREETYPE2 OFF) MESSAGE("Note: FreeType2 is disabled") ENDIF(WITH_FREETYPE2) IF(MSVC) IF(WITH_VLD) SET(CORSIX_TH_USE_VLD ON) MESSAGE("Note: Visual Leak Detector is enabled") ELSE() SET(CORSIX_TH_USE_VLD OFF) MESSAGE("Note: Visual Leak Detector is disabled (default)") ENDIF(WITH_VLD) ELSE() SET(CORSIX_TH_USE_VLD OFF) ENDIF(MSVC) # Get precompiled dependencies before running the various find modules if ( USE_PRECOMPILED_DEPS ) message("Note: Using precompiled dependencies.") include( PrecompiledDeps ) endif() # Environment handling CHECK_INCLUDE_FILES(inttypes.h CORSIX_TH_HAS_INTTYPES_H) # Include individual projects message("") # We always build CorsixTH otherwise we would miss the generated header message("Building CorsixTH") add_subdirectory(CorsixTH) IF(BUILD_ANIMVIEWER) message("Building AnimView") add_subdirectory(AnimView) ENDIF(BUILD_ANIMVIEWER) # Documentation generation, construct 'doc' target (or a message it is disabled). # Try to find 'lua' IF (WITH_LUAJIT) SET (LUA_PROGRAM_NAMES luajit-2.0.3 luajit) ELSE (WITH_LUAJIT) SET (LUA_PROGRAM_NAMES lua53 lua5.3 lua-5.3 lua52 lua5.2 lua-5.2 lua51 lua5.1 lua-5.1 lua) ENDIF(WITH_LUAJIT) find_program (LUA_PROGRAM_PATH ${LUA_PROGRAM_NAMES} PATHS ENV LUA_DIR /opt /opt/local ~ ~/Library/Frameworks /Library/Frameworks ) IF (LUA_PROGRAM_PATH) SET(LUA_PROGRAM_FOUND TRUE) ELSE (LUA_PROGRAM_PATH) SET(LUA_PROGRAM_FOUND FALSE) ENDIF (LUA_PROGRAM_PATH) # Find doxygen. find_package(Doxygen) # Generate build targets and the doc/index.html file. IF (DOXYGEN_FOUND OR LUA_PROGRAM_FOUND) add_custom_target(doc) ELSE (DOXYGEN_FOUND OR LUA_PROGRAM_FOUND) message("Cannot locate Doxygen or lua, 'doc' target is not available") ENDIF (DOXYGEN_FOUND OR LUA_PROGRAM_FOUND) # Add sub-targets of the 'doc' target. IF (DOXYGEN_FOUND) add_custom_target(doc_animview ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/DoxyGen/animview.doxygen WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc COMMENT "Generating API documentation for AnimView" VERBATIM ) add_dependencies(doc doc_animview) add_custom_target(doc_leveledit ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/DoxyGen/leveledit.doxygen WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc COMMENT "Generating API documentation for LevelEdit" VERBATIM ) add_dependencies(doc doc_leveledit) add_custom_target(doc_corsixth_engine ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/DoxyGen/corsixth_engine.doxygen WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc COMMENT "Generating API documentation for corsixth_engine" VERBATIM ) add_dependencies(doc doc_corsixth_engine) ENDIF (DOXYGEN_FOUND) IF (LUA_PROGRAM_FOUND) add_custom_target(doc_corsixth_lua ${LUA_PROGRAM_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/LDocGen/main.lua COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LDocGen/output/corner_right.gif ${CMAKE_CURRENT_BINARY_DIR}/doc/corsixth_lua COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LDocGen/output/logo.png ${CMAKE_CURRENT_BINARY_DIR}/doc/corsixth_lua COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LDocGen/output/main.css ${CMAKE_CURRENT_BINARY_DIR}/doc/corsixth_lua WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc COMMENT "Generating API documentation for corsixth_lua" VERBATIM ) add_dependencies(doc doc_corsixth_lua) ENDIF (LUA_PROGRAM_FOUND) # Generate doc/index.html file. IF (DOXYGEN_FOUND OR LUA_PROGRAM_FOUND) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "CorsixTH source code documentation\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "

CorsixTH main program source code documentation

\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
    \n") ENDIF (DOXYGEN_FOUND OR LUA_PROGRAM_FOUND) IF (DOXYGEN_FOUND) file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
  • CorsixTH engine documentation\n") ENDIF (DOXYGEN_FOUND) IF (LUA_PROGRAM_FOUND) file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
  • CorsixTH Lua documentation\n") ENDIF (LUA_PROGRAM_FOUND) IF (DOXYGEN_FOUND) file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "

CorsixTH helper programs source code documentation

\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
    \n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
  • Animation viewer documentation\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
  • Level editor documentation\n") ENDIF (DOXYGEN_FOUND) IF (DOXYGEN_FOUND OR LUA_PROGRAM_FOUND) file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "
\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html "\n") ENDIF (DOXYGEN_FOUND OR LUA_PROGRAM_FOUND) CorsixTH-0.61/CONTRIBUTING.txt000066400000000000000000000074741321660673500156400ustar00rootroot00000000000000TELL OTHER DEVS WHAT YOU ARE WORKING ON When you start working on a fix/enhancement for an open issue please always post a comment in this issue's discussion to tell other devs that you have started working on it so that they won't waste any of their free time by working on their own fix/enhancement for it. If there isn't an open issue discussion for a bug fix/enhancement you want to work on please check that there isn't a closed discussion for it because a previous developer of it didn't finish their work which you could finish. And if there is no existing issue discussion for what you want to work on please open a new issue for it and tell other devs here that your going to/ have started working on it. SUGGESTION If you want to make a suggestion, please copy the following questions into your issue and answer them: What is it you would like in the game? What version of the product are you using? On what operating system? PULL REQUEST When providing a pull request ensure the description field describes the major changes from the request. If your pull request relates to any existing issues, include those issues in the description. e.g. "Fixes issue #1" CONTRIBUTING CODE: First Time 1. Ensure you have a GitHub account (https://github.com/signup/free) 2. Fork CorsixTH\CorsixTH (https://github.com/CorsixTH/CorsixTH/fork) 3. Ensure you have a git client. (http://desktop.github.com) 4. Clone your fork to your computer - If using github client, run Git Shell - git clone https://github.com/mygithubuser/CorsixTH.git 5. Add upstream remote - git remote add upstream https://github.com/CorsixTH/CorsixTH.git Every Time 6. Sync your master branch with the CorisxTH repository's master branch - git fetch upstream - git rebase upstream/master 7. Make sure no one is already working on the issue you want to work on. 8. Tell other developers that you've started/will start working on this issue by posting a comment in its existing issue discussion or if there's no existing discussion for it then please open a new issue discussion for it and tell other devs here that your working on it. 9. Create feature branch - git branch myfeature upstream/master 10. Checkout your feature branch - git checkout myfeature 11. Make your changes 12. Unittest continuously, see README.txt in CorsixTH/Luatest for more info 13. Review your changes - git diff (each file) - git add - git diff --check Check there's no white spaces. - git commit Write an informative commit message and save 14. Push your changes to your fork - git push origin myfeature 15. Create a pull request (https://github.com/mygithubuser/CorsixTH/compare/CorsixTH:master...myfeature) Now watch to see if your feature is accepted. Notes: Multiple commits: If your feature is very big, break it into subprojects and do a separate commit for every independent operation. This means doing step 10 several times as you go. You still only need to do one pull request at the end. Syncing with Upstream: If it takes a long time between when you start your feature and when you finish there might be other important changes other people are making to CorsixTH. It is a good idea to make sure your code will still operate correctly with the latest changes. To do this: - git fetch upstream - git rebase upstream/master What this does is downloads all the changes from CorsixTH\CorsixTH since you started, and pretends that all your changes were made after them. If there are conflicts, for example if someone else changed the same line in the same file that you did you will be asked to resolve those conflicts. If you follow these guidelines then you should be well on your way to producing good pull requests. If you need more help just ask the friendly people on corsix-th-dev@googlegroups.com or via IRC in #corsix-th on freenode. CorsixTH-0.61/CorsixTH/000077500000000000000000000000001321660673500146575ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Bitmap/000077500000000000000000000000001321660673500160735ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Bitmap/aux_ui.dat000066400000000000000000000111711321660673500200600ustar00rootroot00000000000000Ÿ>þ7>>=þ6>>7534ú5667>7645ü67>765Ê67@=6i67>765Æ67B=>7j67>765i6=A=7N67D=>7l67>765i67>D=7G67C=>7p67>765l677>C=7A67D=>7r67>765o67>D=77E=7t67>765q67>J=>7v67>765t67E=>7y67>765s67G=7y67>765q67K=7w67>765p67D=7>D=7u67>765n67D=>7667>D=7s67>765m67C=>7B67>E=6p67>765l67B=>7F67>D=7o67>765k6=A=>7J67>D=6m67>765j67@=>7N67>B=6m67>765j67@=6Q6=A=6m67>765j67==>7R67>==>7n67>765k6>77T67>>7o67>765ý67>7þ677>>ÿƒ7>>ÿ„>ÿž ¼ ÿÿ ¸ † ´ Š ° Ž ¬ ’ ¨ – ¤ š   ž œ ¢ ˜ ¦ ” ª  ® Œ ² ˆ ¶ „ º ÿÿ º „ ¶ ˆ ² Œ ®  ª ” ¦ ˜ ¢ œ ž   š ¤ – ¨ ’ ¬ Ž ° Š ´ † ¸ ÿÿ ¼ Ÿÿ¿¿¿¿¿¿¿¿¿¿¨PP¼PAPÿ·PEPÿ³PIPÿ¯PMPÿ«PQPÿ©PQPÿ«PMPÿ¯PIPÿ³PEPÿ·PAPÿ»PP¿¿¿¿¿¿¿¿¿¿©ÿ¿¿¿¿¿¿¿³PP¼PAPÿ·PAPÿ·PAPÿ·PAPÿ¹PPPP¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ªÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿·PPPP¼PAPÿ»PAPÿ»PAPÿ»PAPÿ»PP¿¿¿¿¿¿¿˜ÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿©PPPPºPAPÿ·PAPÿ·PAPÿ·PAPÿ»PP¿¿¿¿¿¿¿´ÿ¿¿¿¿¿¿¿—PP¼PAPÿ»PAPÿ»PAPÿ»PAPÿ»PPPP¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¸ÿ¿¿¿¿¿¿¿¿¿¿¿¿¿ªÿÿ¼ÿÿ¼¼ÿÿ¼ÿÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¬ÿ¿¿¿¿¿¿¿¿¿¿¨ÔÔ¼ÔÔÿÿÔÔ¸ÔÔ†ÔÔ´ÔÔŠÔÔ°ÔÔŽÔÔ¬ÔÔ’ÔÔªÔÔ’ÔÔ¬ÔÔŽÔÔ°ÔÔŠÔÔ´ÔÔ†ÔÔ¸ÔÔÿÿÔÔ¼ÔÔ¿¿¿¿¿¿¿¿¿¿©ÿ„gÿÿÿi ÿÿŸ  ŸŸdž ÿ餤¤£é¡¡  `Ÿÿé§©ª©¨¦¥¤££¢¢éé\¡¡¨A«©¦¦¥¤¤££]¢¤B«ª¨¦¥¥@¤£[£¥C«¨¥¤@£¢\¢¥B«ªŸc¥ªA«Ÿ§¥ª@«©¨¥©@«¥¨ ¥©ª«««£¨ ¤¨ª«««¤¨ ¤¨ª«««¤¨ ¤¨ª«««¤¨ ¤¨ª«««¤¨ ¤¨ª«««¤¨ ¤§ª«««¤¨ ¤§©«««¤¨ £§©«««¤¨ £¦©«««¤¨ ¢¦©«««¤¨ ¢¦©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ccžcžŸcŸ¡c¡¢c¢£c£¢c¢cgÿ„hÿÿÿhžÿÿfŸžžÿe¡  žžÿd¢ ¡¡ Ÿžd£ é¡ Ÿžc¢ ¡¡ Ÿžžc ŸŸŸžž¸§ ŸŸŸžž¸¨ £ŸŸž¸¨ ¤¢Ÿž¨ ¹¨¥Ÿž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž?¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤?¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤?¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤?¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤?¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤-¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤?¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž?¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž?¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž?¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž?¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž-¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©«««¤¨ ¢¥©ª«ª¤¨ ¢¥©ªªª¤¨ ¢¥©ªª©¤¨¢¥@©¤¨¢¥@¨¤¨¢¥@§¤¨¢¥@¦¤¨ ¢¤¥¥¥¤¤¨¢£@¤¢¹¨¡@梢Ÿd¹ B¡ ŸŸ¡¢`¤ŸC ŸŸŸ `¡žBŸždžÿAžeÿh¸ÿÿi¹ÿÿÿjÿ„Ég¹c¹¤c¤¡c¡žcžc¸c¸¹c¹ccÿ§ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž¨ ¹ª¦ ž§ ¹ «¦ žc¹ ¨ª¡žžd¤ ¥¡žd¡Ÿž@ež¸¸¸ÿg¸¸¹¹ÿh¸¹¹ÿÿi¹ÿÿÿhÉ„fÿ…ÿž ¿ ¿ ½ ÿÿ » „ ½ ÿÿ » „ ½ ÿÿ » „ ½ ÿÿ » „ ½ ÿÿ » „ ½ ÿÿ » „ ½ ÿÿ » ÿÿ ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿‰ ÿÿ » ÿÿ · „ ¹ ÿÿ · „ ¹ ÿÿ · „ ¹ ÿÿ · „ ¹ ÿÿ · „ ¹ ÿÿ · „ ¹ ÿÿ ¼ ¼ ¼ Ÿÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ ÿÿ » ÿÿ ½ „ » ÿÿ ½ „ » ÿÿ ½ „ » ÿÿ ½ „ » ÿÿ ½ „ » ÿÿ ½ „ » ÿÿ ½ ¿ ¿ Ÿÿž ¼ ¼ ¼ ÿÿ ¹ „ · ÿÿ ¹ „ · ÿÿ ¹ „ · ÿÿ ¹ „ · ÿÿ ¹ „ · ÿÿ ¹ „ · ÿÿ ¿ ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ŠCorsixTH-0.61/CorsixTH/Bitmap/aux_ui.spec000066400000000000000000000021021321660673500202340ustar00rootroot00000000000000-- Bitmaps to create sprite sheet from sprites = {} sprites[ 1] = "build_room_dialog_close.bmp" sprites[ 2] = "map_cell_outline.bmp" sprites[ 3] = "flag_passable.bmp" sprites[ 4] = "flag_travel_north.bmp" sprites[ 5] = "flag_travel_east.bmp" sprites[ 6] = "flag_travel_south.bmp" sprites[ 7] = "flag_travel_west.bmp" sprites[ 8] = "flag_hospital.bmp" sprites[ 9] = "flag_buildable.bmp" sprites[10] = "fullscreen_border_topleft.bmp" sprites[11] = "fullscreen_border_top.bmp" sprites[12] = "fullscreen_border_topright.bmp" sprites[13] = "fullscreen_border_left.bmp" sprites[14] = "fullscreen_border_right.bmp" sprites[15] = "fullscreen_border_bottomleft.bmp" sprites[16] = "fullscreen_border_bottom.bmp" sprites[17] = "fullscreen_border_bottomright.bmp" sprites[18] = "map_cell_outline_north.bmp" sprites[19] = "map_cell_outline_east.bmp" sprites[20] = "map_cell_outline_south.bmp" sprites[21] = "map_cell_outline_west.bmp" -- Palette options palette = "from bitmap" -- Compression options complex = true rnc = false -- Output filenames output_tab = "aux_ui.tab" output_dat = "aux_ui.dat" CorsixTH-0.61/CorsixTH/Bitmap/aux_ui.tab000066400000000000000000000002041321660673500200510ustar00rootroot00000000000000†ã@ Þ@ C@ †@ É@ @ O@ ‹@ ú11(( L11d (Ò (@ 11E( i11w@ ù@ z@ ü@ CorsixTH-0.61/CorsixTH/Bitmap/bootstrap_font.bmp000066400000000000000000000612661321660673500216510ustar00rootroot00000000000000BM¶b6(¨€^ÂÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/bootstrap_font.dat000066400000000000000000000115501321660673500216320ustar00rootroot00000000000000ÿ„ÿAÿ„ ÿÿÿÿÿ›ÿ‰ÿÿ„ÿÿÿÿDÿÿÿÿ„ÿÿÿÿDÿÿÿÿ„ÿÿš+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘ÿ†„ÿÿÿ…………ÿÿÿ„œÿ†)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜ÿÿÿÿ‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹ÿ†ÿÿÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿÿÿœÿ‹„ÿÿAÿÿ„›ÿއÿ“@ÿ¢ÿ†„ÿ„ÿÿÿÿÿÿÿÿÿÿŽÿ„ÿÿÿÿÿÿÿÿÿÿÿÿ‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿ„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿ„ÿÿÿÿÿÿÿ„ÿÿÿ‘ÿ‡ÿÿÿÿÿÿÿÿÿÿAÿÿÿ„•ÿ„ÿ„…… ÿÿÿÿ•ÿ†ÿÿ„„ÿÿÿÿÿÿÿÿÿ•ÿ„@ ÿÿÿÿÿÿÿ„ÿÿÿ„„–ÿ…!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿ…ÿÿÿÿÿÿÿÿ@ÿÿÿÿ„„”ÿÿÿÿÿÿ„ÿ†‡‡ÿ† ÿÿÿÿÿÿ„„„ÿŽ@ÿ‰@ÿ˜ÿÿÿÿ„„„ ÿÿÿÿÿÿ“ÿ„ÿÿÿÿÿÿÿÿÿÿÿ‡‘ÿ†ÿ„ÿÿ@ÿÿ@ÿÿ@ÿ…™ÿ… ÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿ”ÿÿÿÿÿÿÿÿÿ@ÿÿÿÿÿ@ÿÿ… ÿÿÿÿ„„„ ÿÿÿÿ•ÿ„!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–ÿÿÿÿAÿÿÿÿÿÿAÿÿÿÿÿÿ@ÿÿÿÿÿAÿÿÿÿÿÿAÿÿÿÿÿÿ“ÿ… ÿÿÿÿ„ÿÿÿÿÿÿÿÿÿ•ÿ„ÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿ”ÿ„@ÿÿ„„„„ÿÿAÿ“ÿ„@ÿÿÿ„„ÿÿÿÿÿÿÿÿ– ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿ„#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”ÿ„#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”ÿ‡ ÿÿÿÿÿÿ„„„ ÿÿÿÿÿÿšÿÿÿÿÿÿÿÿÿ@ ÿÿÿÿÿÿÿ“ÿˆ„ÿÿÿÿ„ÿ„ÿÿÿÿÿÿÿÿ„ÿ‡•ÿÿÿÿÿÿÿÿÿ@ ÿÿÿÿÿÿÿÿ… ÿÿÿÿÿ…… ÿÿÿÿÿ•ÿ„@ÿÿ„„„„„–ÿ„"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿ„!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–ÿ„#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”ÿ†… ÿÿÿÿÿÿÿÿ…… ÿÿÿÿÿÿÿÿ…œÿ„ÿÿÿÿÿÿÿÿÿÿÿ„„„–ÿ„AÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿˆÿ† ÿÿÿÿÿÿÿÿ¨ÿ§@ÿŽÿÿÿÿÿÿŽ…ÿÿÿÿÿÿÿÿ”ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿŒ ÿÿÿÿÿÿ„ÿ†ÿÿÿÿ@ÿÿÿÿÿÿÿÿŒÿÿÿBÿÿÿÿÿ…ÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ’ÿŒÿÿÿÿÿÿÿÿÿÿ@ÿˆÿ„„„ÿÿÿÿÿÿÿÿÿÿÿÿÿ”ÿÿAÿÿÿÿÿ„…ÿÿÿÿÿÿÿÿÿÿ‡ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿ”ÿŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿ‹ÿÿÿÿÿÿÿ@ÿÿÿÿ‹ÿŒÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿ‹ÿ@ ÿÿÿÿÿÿÿÿ“ÿŒ„„‘ÿ„ÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ‘ÿ‹ÿÿÿÿÿÿÿÿÿ‘ÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–ÿŽÿÿÿÿÿÿÿÿÿÿ•ÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”ÿ‹ÿÿÿÿÿÿÿÿÿÿÿÿ@ÿˆÿŽ@ÿÿÿÿÿÿÿÿÿÿÿÿAÿ“ÿÿÿÿÿÿÿÿÿÿÿ„ ÿÿÿÿÿÿ„Œÿ@ÿÿÿ„ ÿÿÿÿÿÿ„ÿÿÿÿÿÿÿÿÿŽÿ† ÿÿÿÿ·ÿ†ÿÿÿÿÿÿÿÿÿÿÿBÿÿ… ÿÿÿÿ„„„ÿÿÿÿÿÿÿÿÿÿŒÿÿÿÿÿÿ„ÿÿÿÿÿÿÿÿÿ‘ÿÿÿÿ‡ÿÿÿBÿÿÿÿ ÿÿÿÿÿÿ†…ÿÿÿÿÿÿÿÿ”ÿ…ÿ†…ÿÿÿÿÿÿÿÿ”ÿ…‡…ÿÿÿÿÿÿÿÿ”ÿÿÿÿ‡…ÿÿÿÿÿÿÿÿ”ÿŒ ÿÿÿÿÿÿ„ ÿÿÿÿ‰ÿÿÿÿÿ…ÿÿÿBÿÿÿÿÿ„ÿ…ÿÿÿBÿÿÿÿÿ„†ÿÿÿBÿÿÿÿÿÿÿÿ„ ÿÿÿÿÿÿÿÿÿÿÿ„ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿ‡ÿÿÿÿCÿÿÿÿÿÿÿÿÿ”ÿÿˆÿÿÿÿCÿÿÿÿÿÿÿÿÿ”ÿÿÿÿ†@ÿÿÿAÿÿÿ@ÿÿ”ÿ„ÿÿÿCÿÿ„ÿœÿ†ÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿ˜ ÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿ•ÿ…ÿ‡ÿÿÿÿÿÿÿÿÿÿÿ•ÿ…ˆÿÿÿÿÿÿÿÿÿÿÿ•ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿ‘ÿ„…ÿÿÿÿÿÿÿÿÿ‘ÿÿÿÿÿÿ„ÿÿÿÿÿÿÿÿÿÿÿÿ@ÿˆÿÿÿ‰ ÿÿÿÿÿÿ„„ ÿÿÿÿÿÿšÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿ…ÿÿÿÿÿ@ÿÿÿÿÿÿ„ ÿÿÿÿÿ‰ÿ†ÿÿÿÿÿÿÿÿÿÿÿ„ÿÿAÿ”ÿ„ÿÿÿÿÿÿÿÿÿÿAÿÿÿÿAÿÿ–ÿ„#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”ÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿ„ ÿÿÿÿÿÿ’ÿÿÿÿÿˆ…ÿÿÿÿÿÿÿÿ”ÿÿÿÿÿÿÿÿ‰ÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿ•ÿÿÿÿ†ÿÿÿÿÿÿÿÿÿ‘ÿÿÿ†ÿÿÿÿÿÿÿÿÿ ÿÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿ”…ÿÿÿÿÿÿÿÿ£ÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿ„‡ÿÿÿÿÿÿÿÿÿÿÿ‘ÿ“Aÿÿÿÿÿ“@ÿÿÿÿ„™‡„ÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿÿÿÿÿ…††˜‡„&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿAÿ…‡™ÿÿAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžÿ‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ’ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜ÿ„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ@ÿÿÿÿ„ÿÿÿ–ÿŽ@ÿÿÿÿÿÿÿÿÿÿÿ•ÿ‰Aÿÿÿÿ… ÿÿÿÿÿÿÿÿÿBÿŽÿ•BÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿ‹ÿÿÿÿÿÿÿÿ@ÿÿÿÿ‹ÿ@ÿ„„ÿÿÿÿ•ÿ„@ÿÿ„ ÿÿÿÿÿÿÿ„ÿÿAÿ“ÿ‡ ÿÿÿÿÿÿ„Cÿÿÿÿÿÿÿÿÿÿšÿ‡ ÿÿÿÿÿÿ„„„ ÿÿÿÿÿÿ˜ÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿ•ÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿ•ÿÿÿÿÿÿÿÿÿÿÿÿAÿÿÿÿ††‘ÿ„ÿÿÿ„ÿÿÿÿÿÿÿ‘ÿ‡ ÿÿÿÿÿÿ„„„„„˜ÿ‰@ÿ„@ÿ„@ÿ˜ÿ‹„ÿÿAÿÿ„ÿÿAÿ“ÿ„………ÿÿÿÿÿÿÿÿÿÿÿ’ÿˆ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹‡@ÿ†›ÿŒ ÿÿÿÿˆ ÿÿÿÿŸÿÿÿÿÿÿÿ¡ÿˆÿÿÿ…… ÿÿÿÿÿÿÿÿ„šÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ@ÿ›CorsixTH-0.61/CorsixTH/Bitmap/bootstrap_font.pal000066400000000000000000000014001321660673500216270ustar00rootroot00000000000000?????CorsixTH-0.61/CorsixTH/Bitmap/bootstrap_font.tab000066400000000000000000000025061321660673500216310ustar00rootroot00000000000000   G t š È Ñ î  ; O V ` f | › µ Õ ò  1 R q — ¹ Ã Í å ö  ) N q ‘ ± × õ  4 X v — ¹ Û  + P n œ ½ Ý ø  E m — · Û ø  / A K U p ‘ § Ä Ù õ  8 C ]  ‘ ® Æ â ÿ   4  G  e  }  ™  ¶  Ô  ô    2  >  ^  m  ‡  °  Ï  é   ,  K  m  Š  ¦  À  Ù  ð      :  Z  u  •  ¿  ã    $  B  ^  …  ª  Ð  ó   7 _ „ ¥ ¶ Ù ö  : R l † ” ¥ Ù   = ^ € ¡ º Ö ÷  5 L n “ º à ÿ ' D g  ™ º â ò   @ R CorsixTH-0.61/CorsixTH/Bitmap/build_room_dialog_close.bmp000066400000000000000000000112161321660673500234330ustar00rootroot00000000000000BMŽ6(†X  š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777>>7666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666677>7656666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666666>776666666666666666666666667>>76666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666667==>766666666666666666666667>==>7666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666667====6666666666666666666666======666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666667====>76666666666666666667>======666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666666======>7666666666666667>========666666666666666666666666666666666666666666666666667>7656666666666666666666666666666666666666666666666667======>766666666667>========76666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666666667=======>76666667>=========666666666666666666666666666666666666666666666666666667>765666666666666666666666666666666666666666666666666667========>7667>========766666666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666666666667========7>========76666666666666666666666666666666666666666666666666666666667>765666666666666666666666666666666666666666666666666666667===============7666666666666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666666666666667===========766666666666666666666666666666666666666666666666666666666666667>765666666666666666666666666666666666666666666666666666666667=========>766666666666666666666666666666666666666666666666666666666666667>765666666666666666666666666666666666666666666666666666667>==============>766666666666666666666666666666666666666666666666666666666667>7656666666666666666666666666666666666666666666666666667>========77=========7666666666666666666666666666666666666666666666666666666667>76566666666666666666666666666666666666666666666666677>=======7666667========>76666666666666666666666666666666666666666666666666666667>7656666666666666666666666666666666666666666666667>========7666666666667=======>766666666666666666666666666666666666666666666666666667>765666666666666666666666666666666666666666666666======76666666666666666667========>76666666666666666666666666666666666666666666666667>765666666666666666666666666666666666666666666666666666666666666666666666666667======>766666666666666666666666666666666666666666666667>7656666666666666666666666666666666666666666666666666666666666666666666666666666667====66666666666666666666666666666666666666666666667>7645666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667>7534555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555667>>=6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666>>Ÿ>7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777>CorsixTH-0.61/CorsixTH/Bitmap/flag_buildable.bmp000066400000000000000000000060661321660673500215170ustar00rootroot00000000000000BM6 6(@ š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/flag_hospital.bmp000066400000000000000000000060661321660673500214170ustar00rootroot00000000000000BM6 6(@ š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/flag_passable.bmp000066400000000000000000000060661321660673500213660ustar00rootroot00000000000000BM6 6(@ š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/flag_travel_east.bmp000066400000000000000000000060661321660673500221050ustar00rootroot00000000000000BM6 6(@ š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/flag_travel_north.bmp000066400000000000000000000060661321660673500223030ustar00rootroot00000000000000BM6 6(@ š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/flag_travel_south.bmp000066400000000000000000000060661321660673500223130ustar00rootroot00000000000000BM6 6(@ š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/flag_travel_west.bmp000066400000000000000000000060661321660673500221330ustar00rootroot00000000000000BM6 6(@ š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_bottom.bmp000066400000000000000000000026361321660673500236650ustar00rootroot00000000000000BMž6(( h  š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸žžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžž¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹CorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_bottomleft.bmp000066400000000000000000000070521321660673500245350ustar00rootroot00000000000000BM*6(11ô   š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÉÿÿÿÿÿ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ÿ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ÿžžžžžžŸŸŸŸŸŸžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžŸ       ŸŸŸ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡ ŸŸ¡¢¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¡ææææ¢¢Ÿ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¢£¤¤¤¤¢¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¤¥¥¥¤¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥¦¦¦¦¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥§§§§¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥¨¨¨¨¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©©©©¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©ªª©¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©ªªª¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©ª«ª¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_bottomright.bmp000066400000000000000000000070521321660673500247200ustar00rootroot00000000000000BM*6(11ô   š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÉÿÿÿÿ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ÿÿÿ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹¹ÿÿ¸¸¹¹ÿžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžž¸¸¸ÿ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿž¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¥¡ž¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¨ª¡žžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ «¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žCorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_left.bmp000066400000000000000000000030261321660673500233050ustar00rootroot00000000000000BM6( (à  š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿ¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤¢¥©«««¤CorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_right.bmp000066400000000000000000000030261321660673500234700ustar00rootroot00000000000000BM6( (à  š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿ¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ ž¹ª¦ žCorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_top.bmp000066400000000000000000000026361321660673500231630ustar00rootroot00000000000000BMž6(( h  š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢££££££££££££££££££££££££££££££££££££££££¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžCorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_topleft.bmp000066400000000000000000000070521321660673500240330ustar00rootroot00000000000000BM*6(11ô   š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¥©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¦©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¦©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£¦©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£§©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤§©«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤§ª«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¨ª«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¨ª«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¨ª«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¨ª«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¨ª«««¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥©ª«««£ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥©««««¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥ª««««©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥ª«««««Ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥««««««ªŸ¥«««««««¨¥¤££££¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¤««««««ª¨¦¥¥¤¤¤¤££££££££££££££££££££££££££££££££¡¨«««««©¦¦¥¤¤££¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿé§©ª©¨¦¥¤££¢¢éé¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÿ餤¤£é¡¡  ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸÿÿŸ  ŸŸžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/fullscreen_border_topright.bmp000066400000000000000000000070521321660673500242160ustar00rootroot00000000000000BM*6(11ô   š–Ê’†¾†y²‚mªyažuY–mMŠAŠ(š1ª9ºEÊ QÛ]ëmÿ]]]QQQEEE===111 e‚}¶ŽÂQ¾ÊQQiyÿšÿºÿÛÿÿÿaAEqQY‚am†–¦(¶E$Êa5Û}I}}q}i} a} Y}Q}M}²¶ómyãYi×=UÆ$Aº 1®$¢=-yUAŠmYšš†¶I® 1š($†5$qqUiqUE}]MŽeYšmeªuq¶}}ÆŠŽ×–žYm†ž¶Îç}¢†šŠ’І‚qy]qMmA–žÛŠŽÊ}‚¾qu²ii¢a]–YUŠEQ‚¶-Û]ÿÊª×®šÆ’šºŠ’²‚Žª}†¢u‚–qyŽiu}]i--e-9m-Eu1Y}ªy®‚ ²Š$º’-¾š1Ʀ9Ê®=ζE×¾MÛÊUãÒYçÛaóëq÷óyeš mžu¦$‚®-в=–ºIžÂYªÆe²Îu¾×†ÊÛšÒãªÛë¾çïÎï÷UeyŽ$¢9$ª91²9Eº=]ÂIuÊYŽÒi¢ÛuÊë–ß÷ªÿÿÒeeemmmyyy‚‚‚ŽŽŽššš¢¢¢ªªª¶¶¶¾¾¾ÊÊÊÒÒÒßßßëëëóóóÿÿÿ†Š¶†}¦Ššª}Žžy†–¦’Ž¢ŠŽ®ŠŠamaQUa]aaYYaMM†]ayU9A I$Q(Y-a1i5qŽ]I¢aIiaYUIQ¾Ž–AY†A]Š5Q‚9U‚9YŠEaŽ1MyQi’am’-IyIe’Mi–Yi’5UŠQeŽ]uš1M‚9]’Uq–Òºª5YŽ]iŽAU‚I]†A]’Yu¢Qmšžš¢’Žš]i†š’–Æ®¢Qa†9M}amžAQaAyša‚²euš9U}1Muº¢š9 A1A(9AQ1Y1aYIaYy‚Qa‚yieUeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª¦ žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹¨¥Ÿžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¢Ÿžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£ŸŸž¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸžž¸ŸŸŸžž¸¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡ Ÿžž££££££££££££££££££££££££££££££££££££££££é¡ Ÿž¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡ Ÿž¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡  žžÿŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸžžÿžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/lib_bmp.lua000066400000000000000000000077341321660673500202150ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local io_open, table_concat, setmetatable, ipairs, string_reverse, string_char = io.open, table.concat, setmetatable, ipairs, string.reverse, string.char local math_floor = math.floor module "bmp" local mt = {__index = _M} -- Convert a little endian byte string into an integer local function LE(s) local value = 0 for n, i in ipairs{s:byte(1, #s)} do value = value + i * 256 ^ (n - 1) end return value end function open(filename) local file, err = io_open(filename, "rb") if not file then return nil, err end if file:read(2) ~= "BM" or not file:seek("cur", 8) then return nil, "Invalid header" end local bits_offset, header_size = LE(file:read(4)), LE(file:read(4)) if header_size ~= 40 then return nil, "Expected BITMAPINFOHEADER" end local width, height = LE(file:read(4)), LE(file:read(4)) local planes, bpp = LE(file:read(2)), LE(file:read(2)) if planes ~= 1 then return nil, "Expected single colour plane" end if bpp ~= 8 then return nil, "Expected 8 bit paletted image" end local compression = LE(file:read(4)) if compression ~= 0 then return nil, "Expected uncompressed image" end file:seek("cur", 12) local pal_size = LE(file:read(4)) if pal_size == 0 then pal_size = 2 ^ bpp end file:seek("cur", 4) local palette = {} for pal_idx = 1, pal_size do local bgr = file:read(3) file:seek("cur", 1) palette[pal_idx] = convertPal(bgr) end return setmetatable({ file = file, bits_offset = bits_offset, width = width, height = height, pal_size = pal_size, palette = table_concat(palette), }, mt) end function getPixel(bmp, x, y) local file, width = bmp.file, bmp.width if x < 0 or y < 0 or x >= width or y >= bmp.height then return nil, "Invalid pixel" end local stride = width + ((4 - (width % 4)) % 4) local offset = (bmp.height - 1 - y) * stride + x if not file:seek("set", bmp.bits_offset + offset) then return nil, "Invalid data offset" end return file:read(1) end function getPixels(bmp) local file, width = bmp.file, bmp.width if not file:seek("set", bmp.bits_offset) then return nil, "Invalid data offset" end local rows = {} local skip = (4 - (width % 4)) % 4 for y = bmp.height, 1, -1 do rows[y] = file:read(width) file:seek("cur", skip) end return table_concat(rows) end function getSubPixels(bmp, x, y, w, h) local file, width = bmp.file, bmp.width local stride = width + ((4 - (width % 4)) % 4) local offset = (bmp.height - y - h) * stride + x if not file:seek("set", bmp.bits_offset + offset) then return nil, "Invalid data offset" end local rows = {} local skip = stride - w for y = h, 1, -1 do rows[y] = file:read(w) file:seek("cur", skip) end return table_concat(rows) end function convertPal(data) return (data:gsub("...", string_reverse):gsub(".", function(c) return string_char(math_floor(c:byte() / 255 * 63 + 0.5)) end)) end CorsixTH-0.61/CorsixTH/Bitmap/lib_spritesheet.lua000066400000000000000000000101331321660673500217610ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local io_open, assert, setmetatable, string_char, table_concat = io.open, assert, setmetatable, string.char, table.concat module "spritesheet" local mt = {__index = _M} function open(filename_tab, filename_dat, is_complex) return setmetatable({ tab = assert(io_open(filename_tab, "wb")), dat = assert(io_open(filename_dat, "wb")), encode = is_complex and encodeComplex or encodeSimple, }, mt) end function close(ss) ss.tab:close() ss.dat:close() return ss end function writeDummy(ss) ss.tab:write"\0\0\0\0\0\0" return ss end -- Convert an integer into a little endian byte string local function uint4(value) local b0, b1, b2, b3 b0 = value % 0x100 value = (value - b0) / 0x100 b1 = value % 0x100 value = (value - b1) / 0x100 b2 = value % 0x100 value = (value - b2) / 0x100 return string_char(b0, b1, b2, value) end function write(ss, width, height, pixels) ss.tab:write(uint4(ss.dat:seek())) ss.tab:write(string_char(width, height)) ss.dat:write(ss.encode(width, height, pixels)) return ss end function encodeSimple(width, height, data) error "TODO" end function encodeComplex(width, height, data) local result = {} local run_start = 1 local run_byte = false local prev = false local function flush_run(i) if run_byte == false then while i - run_start > 63 do result[#result + 1] = "\63" result[#result + 1] = data:sub(run_start, run_start + 62) run_start = run_start + 63 end if i ~= run_start then result[#result + 1] = string_char(i - run_start) result[#result + 1] = data:sub(run_start, i - 1) end else if run_byte == 0xFF then while i - run_start >= 63 do result[#result + 1] = "\191" run_start = run_start + 63 end if i ~= run_start then result[#result + 1] = string_char(i - run_start + 128) end else while i - run_start >= 255 do result[#result + 1] = "\255\255" result[#result + 1] = string_char(run_byte) run_start = run_start + 255 end if i ~= run_start then local d = i - run_start if 4 <= d and d <= 67 then result[#result + 1] = string_char(d + 60) result[#result + 1] = string_char(run_byte) elseif 68 <= d and d <= 130 then result[#result + 1] = string_char(d + 124) result[#result + 1] = string_char(run_byte) else result[#result + 1] = "\255" result[#result + 1] = string_char(d) result[#result + 1] = string_char(run_byte) end end end run_byte = false end run_start = i end for i = 2, #data, 1 do local byte = data:byte(i) if run_byte then if byte ~= run_byte then flush_run(i) end elseif byte == prev and i - run_start >= 4 and data:byte(i - 3) == byte and data:byte(i - 2) == byte then flush_run(i - 3) run_byte = byte end prev = byte end flush_run(#data + 1) return table_concat(result) end CorsixTH-0.61/CorsixTH/Bitmap/mainmenu1080.bmp000066400000000000000000077240661321660673500207430ustar00rootroot00000000000000BM6¨6(€8  ÿÿÿ ÿ ÿÿ" ÿ1 ÿ&ÿ3ÿ ÿ5 ÿ* ÿ6$ÿ .ÿ.$ÿ'''ÿ;,!ÿ;2-ÿ)$3ÿ%<7ÿ777ÿD) ÿV3ÿF*ÿQ+ÿK1ÿU7ÿe:ÿb:ÿ{7ÿ@."ÿN3 ÿY9!ÿB;6ÿQ?0ÿa=#ÿEÿEÿUÿ J ÿcÿeÿR ÿD5ÿC5ÿP?ÿP?ÿ%I4ÿq!ÿ+b:ÿ2d:ÿ/r?ÿhA ÿvFÿkBÿrJÿ\@+ÿCN?ÿ\D3ÿQ_6ÿhD'ÿsL,ÿxP.ÿeJ8ÿtN0ÿlQ<ÿ{S2ÿNÿ#Mÿ%%Gÿ**Tÿ33Xÿ yÿ33gÿ66yÿWDÿ.NFÿkSÿ(kAÿ1aNÿ9rKÿ4fQÿ{aÿDDEÿFXHÿQ]LÿJZWÿVWWÿjTGÿtZGÿt^PÿQiUÿz`LÿlmYÿzdUÿlr\ÿss^ÿ^baÿgggÿrnlÿh{eÿxvfÿmsrÿyyyÿN ÿ…U)ÿ“\)ÿ…[6ÿ‹b/ÿœc+ÿŒa;ÿ“e=ÿœq<ÿ¨n6ÿ¢v>ÿ‚^AÿŒdBÿ˜kCÿpHÿ†lWÿ‘nQÿ‹r\ÿ–tXÿ nCÿ§vJÿ²}Lÿ¬|Pÿ±~Pÿn`ÿˆufÿ”{gÿ|pÿ~qÿ¤w`ÿ/ƒGÿŠkÿ¡~ÿFZÿJ¥[ÿP”aÿ}‚iÿ®€Eÿ·‚Mÿ¬[ÿ¹„Rÿ¼‘WÿŠ„lÿškÿŠˆvÿ™…uÿŸ’wÿ¨†gÿµˆkÿ»”hÿ¦‹uÿ°Žrÿ«’zÿ·•wÿÀŽLÿÁNÿÄ‹VÿÌ‘ZÿÒ–]ÿÀŽ`ÿÆ™fÿÙ›aÿÅ›tÿПrÿàŸcÿÉ¡lÿÝ eÿȦyÿÔ¤}ÿã¤fÿë°nÿæ§rÿë²qÿ™ÿ<<ˆÿ²ÿ"U³ÿ8f¹ÿAA†ÿDD•ÿbbŒÿKK§ÿ^p±ÿ$$Ìÿ³Œÿr„€ÿ˜ÿÕ¦ÿ„„„ÿœŽƒÿž…ÿ–––ÿ Žÿ¥•‰ÿ¶˜ƒÿ«œ’ÿ°žÿ¼¡‰ÿ®¡˜ÿ¸¥—ÿ©©©ÿ¶ª¢ÿ¼²«ÿ­µµÿ¸¸¸ÿŸ‚ÿÈ©ŠÿÔ¬‡ÿΰ‡ÿÓ³ŠÿÈ©’ÿÑ®‘ÿ̲™ÿÖ¶—ÿ஀ÿ᳇ÿá¶’ÿÀ® ÿɵ¨ÿÔ¼¥ÿǼ²ÿп°ÿá¿ ÿÙÀŸÿåÀÿØÂ¬ÿ̺ÿ×ǶÿÞмÿæÄ©ÿéÍ·ÿðϱÿâѼÿðѲÿ½ÅÅÿÇÇÇÿ×ÌÃÿÛÒÊÿÛÚØÿàÏÀÿå×ÈÿóØÀÿâÜÕÿðßÐÿíàÎÿæáÜÿñæÛÿëèåÿñíéÿóðíÿýýýÿhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhÁÁÄÄÄÍÍÑÑÑÑðððððÑÑððÑÑðÑÑÑÑÑððÑðóððóðÑðïððóðóóðóðóóüóóüüüüóóððóððððððÑÑÍÑÍÍÍÄÄÄÄÄÄÁÁhhhhhhcccbXcXXXTTXTTTT0TchhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhÃÄÄÄÍÍÑðððÑðÑððÑððÑÑÑÑÑÑÑÑÑÑÑðÑðÑððððððòðóððóðüóóóóóüóóóüóóóóóððÑÑðÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhcccccbXXXXTTXTTTTThhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhh•¹ÁÄÄÄÑÍÑððððÑïçðÑÑïÑÑðÑÑÑÑÑðÑÑððððððððððóóðóðóðóóóóóóüüóóóðóðòóðïðÑÑÑÑÑÍÍÍÍÄÍÄÄÁÁÁÁÁÁÁhhchccccXXXXXTVTTT"ThhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhdehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÄÄÄÄÄÍÍðÑÑðóðÑðððððïððÑðÑÑÑÍÑÑÑÑÑðÑððóðððóðððúóóóóðóóúóóóóóóóóððÑÑÑÑÑÑÍÍÍÍÄÄÍÄÄÄÄÁÁhhhhchccbXccXXXTTTTTTTTTTT"TTT:"ThhhhchhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhÁÁÄÄÍÍÑÑÑÑððððÑÑððÑððÑÑÑðÑÑÑÑðÑðÑðððÑðððóððððóóóóóúðóóóüúóóóóððïðððÑÑÍÑÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhhhchcccXXXXXTTTTT""TchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhchhchhhhchhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhÁÁÄÍÍÑÑÑÑððÑÑÑÑððÑðÑððÑÑÑÑÑÑÑÑÑðððððÑðóððïðóðóüóúðóúóüüóüóóóððððóòððÑÑÍÍÍÍÄÄÄÁÄÄÄÁÁÄÁhhhchchcbXXXXTXXTTTTMTThhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhÁÁÄÄÄÍÍÍÑððððÑððÑÑÑÑðÑðÑÑÑðïóÑðÑðÑÑòððððóóðóóóððóóðüüóüóüóóóðóóðÑÑðÑÑÍÍÑÍÍÍÍÍÄÄÁÁÁÄÁÁhhhhcccbccXXVXXTTTTTT"TThhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhchhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhdhhhhghhghhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹••hhhhhhhhhhhhhhhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhchhhhhhhchhhhhhchhhchhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhh¾ÂÄÄÄÄÍÑÑÑððððÑððÑðÑðÑðÑÑÑïÑðÑðððÑïóÑððððððóóðóóóóóüóüóóüóóóóóóððÑðÑÑÑÍÑÍÍÍÍÄÄÄÄÁÁÁÁÁÁhhhccccbbXXXTTTT"TTT"TM"hhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhdhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhchhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhhh¹Áhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh••hhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhchhhhhhhhhhhhhhhhhhchhhhhhhhchhhhÁÄÄÍÍÑÑððððóððÑÑÑÑÑÑÑÑðÑðÎÑÑÑÑóÑÑðÑÑóðóðóðóóóðóððóóóóóóüóóðòðððððÑÑÑÑÑÑÑÍÍÍÄÍÄÄÄÁÁÁÁÁhhhhcccbbXXXXXTXTTT"T:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhghhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhghhdhhhhdhhhhhhhhhhhhhghhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhh•hhhh•hhhhhhhh•¹•ghhhhhhhh¹•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹hhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhchhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhÁÁÄÍÄÍÑÑÑÑðððÑÑðÑðÑÑðÑÑðÍÑÑðÑÑÑðÑððÑñððóðððóðóóðóóóóóóüüüóóóóðóððÑÑÑÑÑÍÑÍÍÄÄÍÍÄÄÄÁÁÁÁhhhghchcXbbXXTTUTTTTchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhdhhdhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhdghhhhhhhhhhchhhhhhhhdhhchhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhÁhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹hhh¹hhhh•hh•¹•hh•¹hhhh•¹h„h•¹hhhhh•hhhhhhhhhhhhh•hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhchhhhhhhhhhhhÁÁÄÄÄÄÑÑÑÑÑðÑðÑÑÑÑðÑÑÍÑðÑÑðððÑÑðððððïïðóóðóðððóóóóðóóóóüüüüóðððððððððÑÑÍÍÄÍÍÄÄÄÄÁÄÁÁÁÁhchchcccbbXXXTTTT:TTTchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhchhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhÁhhhhÁhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhÁhhhhhhhhhhh¹•hhhhhhh¹•hhhhhh•¹•hhh¹•h•¹•hhh•¹•h•¹•hhhh¹•hhhhhhhh•hhh¹•¹•hh¹hhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhÁhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÄÄÍÍÑðÑððÑððóððððóðððÑðÑÍÍÑÑðÑÑÑðððóïïÑððóóóóðóüóóóüóóóóóóóóóðïðÑÑÍÍÍÍÍÍÍÄÄÍÄÄÁÄÁÁÁhhhhdgcccXXXTXXXTTTTT:TTTTThhhhhhhhhhhhhhhhhhhhhchhdhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhchhchdhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhdhhhchhhhhhhhhhdhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhchhhhhhhhhhhhhhhehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhfghhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhh¾hh•¹h•hh•h•hhhh•¹•hhhhh•¹hh•hg•¹hhh•¹•hhhhhhhhhhh•h•¹hÁ•¹••¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhchhhhhhhhhhÁÁÄÄÄÍÍÑÑðððððððÑðÑððÑÑÑïÑÑïÑÑðÑÑððððððòïðóóðóóóóóóóóóüüúóóóóðóððððÑÑÍÑÑÍÍÍÄÄÄÄÁÄÄÁÁÁhhhhcccccbXXVXTTTTTT:TTchhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhehhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhh•¹•hh„h¹•hhh¹•hhhhhh¹•hhhhhhhh¹•h•hhh•hhh¹•h•hhhhh•h¹•¹•¹•¹¹•¹•hh¹•hhhÁhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhghhhhhhhÁÄÍÍÍÍÍðððððÑÑÑÑðÑÑÑÑÑÑÑÑïáÑÑÑóðððóðÑóóïóðóðòóóóðúóóðóüóóóóðððïðÑÑðÑÑÑÍÍÍÍÄÄÄÄÍÄÁÁÁÁhhhchhccXbXbbXXTTTTTTTTThhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhchhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchghhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhÁhhhhhhhhhhÁhhhhhÁhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhÁhhhhhhh•¹„hh•¹hh•¹Á•hhhhhhhhh•hh•hhhhh•¹hh•¹•hhhh•¹hhh•¹••hg„h„•¹„hhhhhhÁhhhhhhÁhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhÁhhhhÁhhÁhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÄÍÍÑÑÑðÑððÑïððÑÑÑñïïÍðÑÑðÑÑðÑðÑðððïòðððóððóóóóúóüüóüüóóóóóóðððÑÑÍÑÑÍÍÍÍÍÄÄÁÄÄÁÁÁÁhhhhcccccbXXTTTXTTTTTThhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhh¾hh•Á¹•gh¹•¹•hhhhhhh¹•h¹••hh•hhhh•¹•h„h•h••¹hhh¹•¹•hh¾¹•h¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhÁÁÄÄÍÍÍÑÑÑïÑÑðÑðÑÑÑÑóÑðÑÍÑÑðÍðÑóÑÑðÑððððððòðóóóóðóóóüüüþüóóóóóðóððÑÑÑÍÑÑÍÍÄÄÄÄÁÄÁÁÁÁÁhhhhccccXXcXXXTTTTTTTThhchhhhhhhhhhhhhhhhhhhhghhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhchhhhhhhhhhhhchchhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghdhhhhhhhhhhgdhchhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhchhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhghhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhÁhhhÁhhhh•¹•¹•h•¹„•hhhh•hhhhhhh•¹h•¹•hh•¹hhhhh¹•¹•¹hhhhhhhhh•¹„•¾•hhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÍÑÑððóðððððððÑððÑÐðÑÑÑðÑðÑÑÑððÑððóïðóóðóðóðüóóóóóóóóóóóðððÑððððÑÍÍÍÍÍÍÍÍÍÄÍÄÄÁÁÁhhhhhcccccXXXXXTTTTTTTchhhhhhhhhhhhhhhhhhhhhhfhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhÁhhÁhhhÁhhhÁhhhhhhhhhhhÁhhÁhhhÁÁhhhhhhhhhhhÁhhhhhhhhhhÁhhÁhhÁhhhhhhÁhhÁhhÁhhhhÁhhÁhhhÁhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhh¹••¹•¹•h•h¹•h•hh•hhhhh¹••hhhhhhhhhhhhhhhh•hhhh•„¾¹•¹•¹•hhÁhhhÁhhhhhhÁhhÁhhÁhhhÁhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhÁhhhhhÁhhhhÁhhhhhhhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhfhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÍÍÍÑÑðððððÑÑóÑÑÑÑðÑáÑÑÑïÍÑÑðððïðððððòðóóðóóðóóóóóóóóüüóóóðððððÑÑÑÑÑÍÍÍÍÄÄÄÄÁÁÄÁÁhhÁhcchcccXbXXTTTTT0"TTTchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhchhhhhhhhfhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhghhchhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhÁhhhhÁhhhhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhhhÁÁhhhhhhhhhhhhhÁhhhhÁhÁhhhhÁhhhhÁhhÁhhÁhhhhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhh•¹hhhhh•¹Á••¹h•¹h•hh•¹••¹hhhhh•hhhhhh•hh•¹hh•¹•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhÁhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhÁhhhhhÁhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhhhhhh¹„hhhhhhhhhhhhhhhhhhhhhÁÄÄÄÍÄÍÐÐÑððóðÑÑðÑðÑððððððÑÑÑÑÑóïÑðððððóóïðóðóóóðóóüóóóüüüóóðóððððÑÑÑÑÑÑÑÍÄÍÄÄÄÁÁÁÁÁhÁhhchcccXbbXXXXTTTTTTTTT:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhghhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhchhhhhhdghhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhhÁhhhÁhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhÁÁhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhÁhÁÁhhhhhhÁhhhhhhhhhhhh•Áh•¹•¹•hhh•Á¹•h•¹•hhhh•h¹•Á•h•h¹•Á•hhh•¾„¹•hhhhhhhhÁhÁhhÁhÁhhhhhhhhhÁhhhhÁhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhÁhhÁhhhhhÁhhhhÁhhÁhhhhhhhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhÁhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhÁhhhhhÁhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhÁhhÁhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhh•hhhhhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhÁÁÍÍÍÑáðððÑÑÑðððÑðÑÑÑÑÑÍÑÑÍÑðÑïÑóððððòððóððóððóóððóóóóóóüóðóððïððÑððÍÑÑÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhhccccXXXXTUXT"TTT"TTchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhghhhhhdhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhchhhhchhhhhhhhhhhhhhhhdhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhÁhhÁhhhhhhhhhhhÁhÁhÁhhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhÁhÁhhhÁhhhhÁhhhhÁhÁhhhhhhhhhhhhhhhhhÁÁhhhÁhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhÁhhhÁh•¹h•¹h•¹•hh•¹hh•¹hhhh•h•¹Á•¹h•¹¾„h•¹hh•¹¹•hh•ÁhhhÁhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhÁhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhÁhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhhÁhhhÁhhhhhhhhhÁhhhhÁhhhhhhÁhhhhhhhhhhhÁhhÁhhhhhhÁhhhhhhÁhhhhhÁhhhhÁhhhhÁhhhÁhhhhhÁhhhhÁhhhhhhhÁhhÁhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhÁhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhÁhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhÁhhhÁhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhh•¹¹•¹„hhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhÁÁÄÍÄÍÑÑðÑðððððÑðÑðÑïðÑÑÍïÑÑððÑÑðððïòððððóóïðóóðóóóóüóóóüúúóóóððððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÁÁÁÁÁhhhhcccccbXXXXTTTTTTTThhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhghhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhdhhhhhhhchhhhhchhdhhhhhhhhhhhhhÁhhhhhhhÁÁhhhhhÁhÁhhÁhhhhhhhhhhÁhhhhhÁhhhÁÁhhhhhhhhhhÁhhÁhhhhhhhhhhhÁhhhhÁhhhhÁhhhhhÁhhÁhhhÁhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhhhhhhhÁhhhhhhÁÁhhhhhhhhhhhÁhhhhhhÁhhhhh¹•hh•¹•hhhhÁhh¹•Á¹Áhhhhh¹•hhhhh••¹•h¹•hhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhÁhhÁhÁhhhhhhhhhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhÁhÁhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhÁhhhhÁhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh••¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÄÍÑÐÑÑïÑÑðÑððÑÑððÑÑðÑððïÎÐïáðÑððÑððóóðóóóðúóüóóóóóüóóóóððóóóðððÑÍÍÍÍÑÍÄÄÍÄÄÄÄÄÁhhÁhhccccccXbXXXXTTTTTTTTTTThhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhh•¹•hhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhchhhhhhedhhhhhhhhhhÁhhÁhhhhhhÁhÁhhÁhhhÁhhhhhhÁhhÁÁhhhhhÁhhhhhhhÁhÁÁhhÁhhÁhhÁhhhÁhhÁhhhhhhhhhhÁhhhhÁÁhÁhhhhÁhhhhhhhhhÁhÁhÁhÁhÁhhhhhhhhhhhhhÁhÁhhÁhhhÁhhhhhhhhhhhhhhhÁhÁhhhhhhhhhhhhhhhhhÁh•¹h•hhh•hhh•¹„h•hhh•hhh•hhÁ•¹•¹hhÁhhhhÁhÁhhÁhhÁhÁhhhhhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhÁÁhhÁhhhhhhhÁhhÁhhhhhhhhhhÁhhhhhÁhhÁhhÁhhÁhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁÁhhÁhhÁhÁhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhÁhÁhhhhhhhÁhhhhÁhhhhhhhhhhhhÁhhhhÁhhÁhÁhhhhÁhhhÁhhÁhhÁhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhÁhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhÁhhhhÁhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhÁhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹•¹hhhhhhhhhhhhhhhhhhhhhhhh¹•hhhhhhhÁÁÄÄÄÍÍÑððÑððððÑðÑÑÑðÑðÑÐáÑðÍðÑðÑÑððÑððððððóðóóðóóóóóüüóüóüðóòðððÑðÑÑÑÍÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhhhhcccXXXXXTTTT:TcÁhhhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhh•¹•hh„¹hhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh„hhhhhhhh•¹hhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhchhhÁhÁÁhhhÁhhhhhhÁhÁhhhhhÁÁhhhhÁhhhÁhhhhhhÁhhÁhÁhhhhhhÁhÁhÁhhÁhhhÁhhhÁhhhÁhhhhhhhhÁhhhhhÁhhÁhhhÁhhÁhhÁhhhhhhÁhÁhhhÁhhhÁhhÁhhÁhhhhhhÁhhhhhÁÁhhhhhÁÁhÁhÁhhhhhÁhhhÁhhhhhÁhhhh•hh•¹Áh•h¹•hÁh¾Á¹•Áh¹•Á•¹•hh¾„ÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhÁhhhhhhhhÁhhÁhhÁhÁhhhÁÁhhÁhhhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhÁhÁhhÁhÁhhÁhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhÁhhhhhhhhhÁhhhhhÁhhÁhhhhhhÁhhÁhhÁhÁhhhhÁhhhhhhhhhhhhÁhÁhhÁhhÁhhhhhhÁhhÁhhhhÁhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhÁhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhÁhÁhhhhÁhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhÁhhÁhhÁhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhÁhhhhÁhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhhÁhhhhhhhhhÁhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhÁhhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhÁhhhhhhhÁhhhhhh•hhhhhhhhhhhhh„¾„¹hhhhhhhÁÁÄÄÍÈÑðóÑðððððÑÑðÑóÑððÑÐÑÑÑÑððÑððÑððÑðóððððúóóóóúðóóüóüóüóóóïððÑðÑÑÑÍÍÍÄÍÄÄÄÄÄÄÁÄÁÁhhhhccccccXXXTXTTTT:TT:Thhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhh¹•hh¾„hhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhh•¹•hhhhhhhhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhh•h¹•ghhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhÁhÁhhhhhÁhhhhhhÁÁhhÁhhhÁÁhhhÁhhhhÁhhhÁhÁhhhhÁhhÁhhhhhhÁhhhÁÁhhhÁhhhhÁhhÁhÁhhhhhÁhhhÁhÁhhhÁhhÁhhhÁhhhÁhÁhÁhhhhÁhhhhhhÁhhÁhÁhhhhÁhÁhhhhhhhÁhhÁhÁhhÁhÁhhÁhÁhhh•¹Á•¹Á•¹h•hÁ••¹•Á•hhh•¹hhhÁhhhÁhhÁhhhhhhhhÁhhhhÁhhÁhhhÁhhhhhÁÁhÁhÁhhhhhhhhhÁhhhhÁhhÁhhhhhhhhhÁhhhhÁhhhhhÁhÁhhhhhhhhÁhhhhhhÁhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhÁhÁhhhÁhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhÁhÁhhhÁhhÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhÁhhÁhhhhhhhhhÁhhÁhhhhhhhhhÁhhhÁhhhhhhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhÁhhhhhÁhhhhÁhhÁÁhhhÁhÁhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhÁhhhhhÁhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhh•¹hh•hhhhhh•hhÁ¹¹•hhhhhhÁÄÄÄÍÑÐÍÑððÑòÑÑððÑÍÑðÑÑÑÑÑðððÑÑðÑðððóðððóðóóððóóóóóóüóóóüüóðóóðððððÑÑÑÑÑÑÍÍÍÍÄÁÄÁÁÁhhÁhhhhcbccXXXXXXXTTTTTTTTThhhhhh•¹•hh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hh•hhhhhhhhhhhh•hh¹hhhh•hhhhhhhhhh••¹hhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•h•hh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhh¾„hhhhh•¹h•hhhhhhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hh•h•hhhhhhhhhhh¹•hh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhÁhhhÁhÁÁhÁhhÁhhhhhhÁhÁhÁhhÁhÁhhhÁÁhÁhÁhhÁhÁhhhhhhÁhhhÁÁhÁhÁhhÁhÁÁhÁhhhhhhÁhÁÁhhhhhhhhhhÁhÁhhhhhhhhÁhÁhhhÁhÁhhhÁhhÁÁhhhhhhÁhhhÁhhÁhhÁÁhÁhÁhhhhhhÁhhhhÁhhhhÁhÁh¾„¹•ÁÁ¹•h¹•Áh¹•¹•hÁhhhÁhÁhÁhhhhÁhhhhÁhhhhhhhhhhhÁhhhhhhhÁhÁhhhhhhhhhÁhhhhhÁhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhÁhhÁhÁhÁhhhhhhÁÁhhÁhÁhÁhÁhhhhÁhhhhhhÁhhhhhÁhhhhhhÁhhÁhÁhhhÁhhhÁhÁhhhÁhhÁhÁhÁhhhhhhÁhhÁhhhÁhhhhÁÁhhhhÁhhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhÁhÁhhhÁhhhhhhhhÁhÁhhhhhhhhhhhhhhhhhhÁhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhÁhhhhhhhhhhhhhhhÁhÁhhhhhhhÁhhhhÁhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhÁhÁhhÁhhhhhhhhhhhhÁÁhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhÁhhhhhhhhhhhÁhhhhÁhhhhhhhÁÁhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhhÁhhhÁhhÁhhhhÁÁhhhhhhhÁhhhÁÁhhÁhhÁhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhÁhhhÁhhhhhhhhhhÁÁhhhhhhhhhÁhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhÁhhhhhhhhhÁhhÁhhhhhhhhÁhhÁhhhhhÁhhhhhhhhhÁhhhhhhhhhhhÁhhhhÁhhhhhhhhhhÁhhÁhhhhhÁhhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhÁhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhÁhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhh•¹hhhhhhh¹•h••hh¹•hhhÁÁÄÄÄÍÑÑÑÑðððÑðÑðÑÑðÑÑððÑÑÑÑÑïÑððððððððððððóðóóóóðóüóüúóóúóóóóðððÑÑðÑÑÍÑÍÍÍÄÄÄÄÁÁÁÄÁÁÁhhhhcccccXXXXXTTTTTTThhhhhhhÁhh¹hh¹•hhhhh•hhhhhhhhh•hh•hhhhhhhhhhhhhhhhhhhhhh•h¹•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹•¹•hhhhhhhh•¹•hhhhhh¹•hh•¹•hhhh¹•hhhh•¹•hhhhh•¹•h•hhhhhh•hhhhhhhhhhhhhh¾hhhh¹•¹hhh¹•hhhhhhhhhhhhhhhhhhhhhhhhh•h¹hhhhhhhhh¹••hhhhh•¹•h•hhhÁhhhhhhhhhhhhhhhh¹•hhhhhhhhhh•hh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhh¹•¹•hhhhhhhhhhhh¹•hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhÁhÁhhhÁhÁhhhhÁhhhhÁhÁhÁhÁhhhhhÁhhhhÁÁÁhÁhhÁhhhÁhhÁhÁhhÁhÁhÁÁhhÁhhÁhÁhhhhÁhhhÁhÁÁhhhhhÁhÁÁhÁÁhÁhhÁÁhÁhÁhhhÁÁhhÁÁhhÁhhÁhhhhhhhÁhÁhÁhÁhhÁÁhhhhhhÁhÁhhhÁÁhÁhhhhhhÁÁhhhhhÁ•¹Áhh•¹•hÁhhhhÁhhhhÁhhhhhÁhhhÁhhhhÁhÁhÁhhhÁÁhhÁÁhÁhhhÁhÁhÁhhÁhÁhhhhhhÁhÁhhhhÁhhÁÁhhÁhhhÁhhÁhhÁhhÁhÁhhhhhhhÁhhhÁÁÁhhÁhhhhÁhhhhhhÁhÁhhÁhhhhÁhÁhhhÁhhhhhÁhÁhÁhhhÁhhhhÁhÁhÁhhhÁhÁhhÁhhÁhhhÁÁhhhhÁhÁhÁhhhhÁhhÁhÁhÁhhÁhhhhhÁhhÁhÁhÁhhhhÁhhhhhhhhhhhhÁhÁhhhhhhhÁhhhhhhÁhÁhhhÁhhhÁhhÁhÁhhhhÁÁhhÁhÁhhhhhÁhhÁhÁhÁhhhÁhhhÁhhÁhhhhhÁÁhhÁhhÁhhhÁhhÁhhhhhhhhhhhhÁhhÁhhÁÁhhhÁhhhhhhhhhhhÁhhhhhÁÁhhhhhhhÁhhhhÁhhÁhhhÁhhhhhhhhÁhhhhhhÁhhhÁÁhhhhÁhhÁhhhhÁhhÁÁhhÁhhÁhhhhÁÁhÁhhÁÁhÁhÁhhÁhÁhhhhhhÁÁhhhhhÁhhhhhhhÁhhÁhÁhhhÁhhhhhhhhÁhÁhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhÁhÁhhhhhhhÁhÁhÁhhhhÁÁhhhhhhhÁhhÁhhhhhhÁhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhÁhÁhÁhhhhhhÁÁhhhhhhÁÁhhhhÁhhÁhhhhÁhhhhhÁhhhhÁhhhhhhhhÁhhhÁhhÁhhÁhhhhhhhÁhÁhhÁhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhÁhhhÁhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhhÁhhhhhhhhhh•¹hhhhhhhhhhh•¹•¹hhh•h•¹ÁÁÁÁÄÍÍÍÑÑÑðóððóðððððÑÑÑÑððÑÑáÑÑÑððððïóððððóóóððóóóóúóóóüóóüóóóðððÑÑÑÑÍÍÑÍÍÍÍÍÍÄÄÄÁÁÁÁÁhccccccXXbXTXUTTTTT:TTThhhhhhhhhhh•¹•hhhhh•¹•hhhhhh•¹•¹•¹hhhhhhhhhhhhhhhÁhhhh•¹h•hhhhhhhhhhhhhÁh•hh•hhhhhhhhhhhhhhhhhhhhhh•h•hhhh•hh•¹•hh•hhhhhh•¹•hhhhhhhh•¹hhhhhhh•¹••¹hhhhh•¹hh•hhhhhh•hhhh¹„h•¹•hhh•¹•hhh•hhhhhhhhhhh¹•hhhhhhhhh¹•¹hhhhhhhhhhhh•¹hhhh•¹hhf¹•¹•hhhhhhhhhhhhhhhhh••hhhhhhhhhh•¹hhh•hhhhhhhhhhhhhhhhhhhhhhhhhhh•¹h•hh•hhh•hhhhhhh•hhhhhhhhhhhhhhhh•hhhhhhhhhh•¹hhhhhhh•¹•hhhhhhhhhhhhh•hh•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhh•hhhhhÁhÁhhhÁhÁhhhÁhhhhhhÁhÁhhhhÁhÁhÁhhhÁhhhÁhhÁhhhhÁhhÁhÁhÁhhÁhhhhhhhÁÁhhhhÁhÁhhhhÁhhhÁhÁhÁhhÁhÁhÁhÁhÁhhhhÁhÁhÁhhÁhÁhÁhhÁhhÁÁhhhhhhhhÁhÁhhhÁhÁhhÁhÁhhhhhÁhÁhhhÁhÁhÁhhhhÁhhhÁ••Áhhh¹••ÁhÁhÁhhÁhÁhhÁhhhÁhhhÁhÁhÁhhhÁhÁhhhhhÁhhÁhÁhÁhÁhÁhÁhhÁhÁhÁhhÁhÁhÁÁhÁhhÁhhhhhhÁÁhhÁhÁhhÁhhÁhhÁÁhhhhhhhÁhhhhhhÁhhhÁhhÁhhhhhÁhhhhÁhhÁhÁhÁÁhÁhhhhhhhhÁhhhÁhhhhhhhÁhhhhhhhhhÁhÁhÁhÁhhÁhhhhhhhhhhhÁhhhÁhhÁhÁÁhhhhhhhhÁhhhhhhÁhÁhÁÁhhÁhhÁhhÁhhhÁÁhÁÁhhhhhÁhhhhhhÁhhhhhhhÁhhhhÁhÁhÁhhhÁhhÁhhhhhhhÁhhhÁhhhhÁhhhhhÁhhÁhÁhhhhÁhhhhhhhhhÁÁhhÁÁhhhhÁhhhhhhhhhhhÁhhhÁhÁhhÁhhÁhhhhhÁhhhhÁhÁhhhhhhÁhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhÁhhhhhhhhhhhhhÁhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhÁhhhhhÁÁhhhhÁÁhhÁhhhhÁhhhÁhhÁhhÁhhhhhÁhhhÁhhhhhhÁÁhhhhhhÁÁhhhhhhÁhhhhhhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhhhhhhhhhhÁhhÁhÁhhÁhhhhhÁhhhhhhhÁhÁhhhhÁhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhÁhÁhhhhhhhhhhhÁhÁhhhhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhÁhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhÁÁhhhhhÁhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhÁhÁhhÁhhhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhÁhhhhhÁhhhÁhhÁhhhhÁhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhÁhhhhhhhh•hhhh•hhhhhhhhhh¹•hh¹ÃÄÍÍÄÍÑððÑÑÑÑÑðÑðÑðÑÑÑÑÑÑÑÑÑÑðððÑÑðððóððððóðóóððóðóóüóüóóóðóðððððÑðÑÍÑÑÑÄÍÄÍÄÄÄÁÁÁÁÁhÁhhhchccXXbXXTTTTTTTThhhhhhhhhhhh•¹•hhhhh¹•hh•hhhh•h•¹•hhhhhhhhhhhhhhhhhhh•¹•¹••hh•hhhhhhhhhh¹•h¹•hh•hhhhhhh•¹•hhhhhhhh•¹•¹••hhh¹hhhh¹•h¹•hhhhhhhh¹hhh•¹•hhhhhhhhhhh•hhh¹••¹•hhh•hh¹••hhhh¹•hhhÁ¹•hh¹hhhh•¹•h¹hhhhhhhhhhh¹•hhhhhhhh•f•h•hhhhhhhhhhhhh•hhhhhhhhhhhhhhÁhhhhhhhhhhhhh¹•hhhhhhhhhhhh¹•hhhhhhhhhhh•hhhhhhhhhhhhhh•¹hhh¹••h¹•hhhhhh¹•ghhhhhhhhhhhhh¹hhhhh•¹hhh••hhhhhhh¹hhh•hhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¾hhhhhhhh•hhh¹•hh¹f•hÁhÁhÁhÁhÁhÁhÁhÁhhhhhhÁhhhhÁhÁhÁhhhÁhÁhhhhhhÁÁhÁhhÁhÁhÁhÁhÁhÁhÁhhhÁhhÁhÁhhÁhhhÁhÁhhhÁhÁhhÁhÁhÁhhhhÁhhÁhhÁhÁhhÁhhhhhÁhÁhhÁhhÁÁhÁhhÁhÁhÁhÁhhÁÁÁhhÁhhhhhhhhhÁhÁhhÁhÁhhÁhÁh•¹hhhh¹•—¹ÁÁhhhÁhÁhÁhhhhhÁÁhÁhhÁhhÁhhÁhÁhhÁhÁhhÁhhÁhÁhÁhhhhhÁhhhÁhÁhÁhhhhhÁhÁhhÁhÁhÁhÁhhhÁhhhÁhhÁhÁhhÁhÁhhhhÁhhhhhÁhÁhÁhhhÁhÁhhÁhhÁhÁhhÁhhÁÁhhÁhÁhhÁhÁhhhÁÁÁhhhÁÁhÁhhÁhÁhhÁhÁhÁÁhhhÁhhhhhhÁhÁhhhhhÁhhhhhhhÁhhhhhhÁhÁhÁhhhhÁhhÁhhÁhÁhÁhÁhhhhhhÁhhhhhhÁhÁhhÁhhÁhhhhhhÁhhÁhhhhÁhhÁhÁhhhÁhhhhÁhÁhhÁhÁÁhhhhhÁhhhhhÁhÁÁhhÁhhhhhÁhhÁhhhÁhÁhhhhhhÁhÁhhhÁhhhÁhhhhhÁhhhÁhhhhÁÁhhÁhhhhhhhhhhhhÁhhÁhhÁhhÁhhhÁhÁhhhÁÁhhhÁhhÁhÁhhÁhhhhÁhhÁÁhhhhÁhhhhhÁhhÁhhhhÁhhhÁhhhhhÁhÁhhhhhÁhhhÁhhÁhÁhhhhÁhhhÁhhhhhÁhÁhÁhhhÁhhhhÁÁhhhhhhhhhÁhhÁhhhÁÁhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhÁhhhhhhÁhÁhhhhhhhÁÁhhÁhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhÁhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhhhÁhhÁhÁhhhÁhhhÁhhhhhhhhhhhhhhÁhhÁhhhhÁhÁhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhÁhhhhhÁÁhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhÁhhhhhÁhhhhhhhÁhhhhhÁhhÁhhhhhÁhhhhhhÁhÁÁhhhhhhhhhhhhÁÁhhhhhhhhhhhÁhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhÁhhhhhhÁhhhÁhhhhhhhhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhÁhhÁhhhÁhhÁhhhhhhÁhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhh•¹•hh•hhh•hhh•¹•hhÁÁÁÄÄÍÍÑïÑðððÑÑÑÑÑÑðÑðÑÑðÑÑÑÐÑïððððÑóððóóððóðóðóóóóüóúóóüóóóðóóððððÑÑÑÍÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhhhhcccbXXXVTTTTTTTThhhhhhhhhh•¹hhhhhhh•¹•h•¹•hhh•¹•¹•hhhhhhhhÁhhhhhÁhhhhh•¹hhhh•¹h•¹hhhhhhhhhhhhhhh•¹•hh•hhh•¹hhh•hhhh•¹h•¹hhÁh•hhhhhhh•hh•¹•hhhhh•¹hhhhhhhhhhh•¹hhhh•¹hhhh•¹•hhh•¹hhhh¹••¹•¹•hhhhhh•¹hh••¹•hhh•hhhhh••¹•hhhhhhh•¹h¹•¹•¹Áh•¹•hhhhhh•¹•hh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hh¹•hhhhhhhhhhhh•¹„¾hhh•hhhhhhh•¹hhhhhh•¹hh•hhh•¹h„hhhhhhhhhh•hhhhhh•h•¹•h•¹•¹hhhhhhhhhhh•¹hhhhhhg•¹•hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhh¹„hhhh•hh•¹h•¹hhhhhh•¹hhÁhÁhhhÁÁhÁhÁhhÁhÁhÁhÁhhhÁÁÁhhhÁhÁhhhÁhhhhÁhhhÁhÁhÁhhhhhhÁhÁhÁhhÁhhÁhhhhÁhhhÁhÁhÁhhhhhÁhÁhhÁhhhÁhhÁhÁhÁhhÁhÁhhhhÁhÁhÁhÁhhhÁhÁhÁhÁhÁhhhhÁhÁhhhhhhhÁhÁhÁhhhhÁhÁhhÁhhÁhhÁhhhhhÁhhÁhÁ¹Á•¹•ÁhhÁhÁhhÁhÁhhÁhhhÁhÁhhhÁhhhhhÁhhhÁhhhÁhhhÁhhÁhÁhÁhÁhÁhhhhhÁhÁhÁhÁhhhhÁÁhÁhhÁhÁhhhhÁhÁhhhhhhhÁhÁhhhhÁhÁhhhÁhhÁhhÁhhhhhÁhhÁhÁhÁhhhÁhhÁhÁhÁhhÁhhÁhhhhÁhhhhÁhhÁhÁÁhhhÁhhhÁhhÁÁhhÁhÁhhhÁhÁhÁhhÁÁhhÁhÁhhhÁhÁÁhhhhÁhÁhhhÁhÁhhhhhhhÁhÁhÁhhhÁhÁhhhÁhhÁhÁhÁhÁhhÁhÁÁhÁhÁhhhhhhÁhÁhhhhhhhÁhÁhhhhhhhÁhhhÁhÁhhÁhhhhhÁhhhhhhhÁhhhhÁÁhhhhhÁhhhhhÁhhhhÁhÁhhhÁhhhhhhhÁhhhhhhÁhÁhÁÁhhhhÁhhhÁÁhhÁhhhÁhhhhhhhhhÁhhÁhhhhhÁhhhhhhhhhÁhhhhÁhhhÁhÁhhÁhhhhhÁhhhÁhhhÁhhhhhÁhhÁhÁhhhhhhhÁhhÁhhhhhÁhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhÁhhÁhhhÁhhhhhhhÁhhhhhhhhhÁhhhhÁhhÁhhhhhhÁhhÁÁhhhhhÁhhhÁhhhhhhhhhÁhhhÁhhhÁhÁhhÁÁhhÁhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhÁhhhhhhÁhÁhÁhhhhhÁhhhhhÁhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhÁhhhÁhhÁhhhÁhhhhhÁhhhÁhÁhhhhÁhhhÁhhÁhhÁhhhhhhhhhÁhÁhhhhhhhhhhhhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhÁhhhÁhhhhhhhhhhhÁhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhhhÁhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhhhÁhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhÁhhhhÁhhÁhhhhhhÁhhÁhhÁhhhhhhÁhhÁhhhhhÁhhhhhhhhhhhhÁhhÁhhhÁhhhhÁhhhhhhhhhhhhÁhhhÁhhhhhÁhhÁhhÁhh•Á•¹•¹•h¹•h•¹•hh•¹•ÁÄÄÄÍÍÑÑÑÑóððÑðóðÑðÑððÑÑðÍÑðÑÑÑÑÑÑðÑðÑððððóóððóóúóðóüüóüóóóóóðóðÑÑÑÑÑÑÑÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhhcccccXXXXXXXTTTTTThhhhhhhhhhhhhhh•¹•h•¹••¹•hhh•h¹•hhhhhhhhhhhhhhhhhhÁhhhh•hhhhhhhhh•hhhh•hh•hhh•¹hh•¹hhh•¹•hh¹•hhhh•¹hhhh„¾¹•h¹•hhhhhh¹•h•¹•hhhh•h¹•hhhhhhhhh¹•hhh•hhhhh•h•¹•hhhhhhh••¹•hhhh¹•hh•h•hhhh¹•¹•hh¹•hhhh¹•h¹•¹•h•hhh•hhhhhh¹•h•¹•h•hhh¹•h¹•hh•hhhhhhhhhhhÁhhhhhhh¾hhhhhhhhh••„¹•¹•hhhh•hh•hhhhhhhh¹••hhhhhhhhhhhhhhh„¹•¹•hhh•¹•hhhh•hh•h¹•hhh•¹hh¹•hh¹hhhhhhhhhhhhhhhhhhhhhhhhh•¹hhh•hh¹hhhhhhhhhhhhhhhhhÁhh•••¹•hhh¹•hhhhhh•hhhh•ÁhÁhÁhÁhÁÁhhÁhÁhÁhÁÁÁhhÁhÁhÁhÁhÁhhÁhhhÁhhÁhÁhÁhÁhÁhÁhhÁhÁhÁhhhhÁhhÁhhhÁÁhÁhÁhÁhÁhhhÁÁhhÁhhÁhhhÁhhÁhÁÁhhÁhÁhÁÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhÁÁhÁhÁÁhhÁhÁhÁhÁhÁhhÁhÁhÁhÁhhhÁhhhhÁhhhÁhhÁhhÁhÁhÁhhhhhÁhhhhÁhhÁhhhÁhÁhhhÁhhÁhhhÁÁhhÁhhÁhhhÁhhÁhÁhhhhÁÁhhÁhhÁhÁhÁhhhÁhhÁhhhhhÁhhhÁhhÁÁhhÁhÁhhÁÁhÁÁhhÁhhÁhhÁhÁhhhhhhÁhhhÁhhÁhhhhÁhÁhhhÁhÁhhhhÁhhÁhhhÁhÁhhhÁhÁhhhhhÁhhÁhhÁhhhÁhhÁhÁhhÁÁhÁhhÁhhhhÁhÁhhÁhhhÁhhhÁhÁhhÁhhÁÁÁhhÁhÁhhÁhÁhÁhhhhhÁhhÁhÁhÁhhhÁhhhhÁhhÁhhhÁÁÁhÁhhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁhÁhhhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhÁhÁhÁhÁhÁhhÁhÁhÁhÁhhÁhhhÁhÁhhhÁÁhÁÁhhÁhÁhhhÁhhÁhhÁhÁhhhhhhhÁhhhÁhhhhhhÁÁhhhhÁhhÁhhhhÁhhhhhhhhhhhÁhhÁhhhhÁhhhhÁhÁÁhhÁhhhhhhhÁhÁhhhÁhÁhhÁhhÁhhhÁhÁÁhhhÁhhhhÁhhhhÁhhhÁÁhhÁhÁhhÁhÁhhhhÁhhhÁhhhÁhhhhÁhhÁhÁhhÁhhhhÁhÁhhhhhÁÁhhhÁhhhhhÁhÁhhhhhhÁhhhhÁÁhÁhÁhhhhÁhhhhhÁhhhhÁhhÁhhÁhhÁhÁhhhÁhÁhhhhhhÁhhÁhhhhÁhhÁhhhhhÁhÁhhhhhÁhhhÁhhhhhhhÁhhhhÁhhhhhÁhÁhhhhhhhÁhhhhhhhÁhhhhhhhÁhhÁÁhhÁhhÁhÁhhhhhhhhÁhhhÁhhhhÁhhÁhhhhhhhhhhhhhhÁhhhhÁhÁhÁhhhÁhhhhÁhhhhÁhÁÁhhhhÁhhhhÁhhhÁhhÁÁhhhhhhhhhhÁÁhhhhhhhhhhhhhÁhhhhhÁhhhhhhhÁhhhhhhhÁhhÁhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhÁhhhÁhhhÁÁhÁhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhÁhhhhhhhÁhÁhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhÁhhÁhhhhhÁhhhhÁhhhÁhhhÁhhhhÁhhhÁhhÁÁhhhhÁhhÁhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhÁhhÁhhhhÁhhhhhÁÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhÁhhhhhhhhh•¹•¹hh•¹•hhhh•¹hh•¹hhhhÁÁÄÄÄÍÍÑðÑÑððÑððÑÑÑÑðÑÑÑðÑÑÑÑáïððÑðÑóððóðóðððóóóóóóóóóóüüüðóóðóðïððÑÑÑÍÍÍÍÍÍÄÄÄÄÁÄÁÁÁhhhhhccccXbXXXXTTTTT:ThhhhÁhhhhÁhhh•¹hhh•¹hh•¹hhhh••¹hhhhhhÁhhhÁhhhÁhhhhhÁhhhhh•¹h•hh•hhh•¹„hh•¹h•¹hh•¹hhh•¹•h•¹•hhh•¹••¹hhhh••¹h•¹•hhh•hhh•f¹hh•hhh•¹•hhh•hhhhhh•hh•¹hhhh•¹•¹hhhhhhhh•¹•¹hhhh•hhhhh•¹•¹hhhhh•¹•hh¾hhh¹••h•hh•¹hh•¹hhhhhhhhhh•¹••¹hh•¹•hhhh•¹•¹hhhhhhhhhhhhhhhhh•¹„hhhhhhhhh¹•¹•¹¾••hh••¹h•¹•hhhhhhhh•¹•h•hh•hhhh•h•hh¾hhhhh•¹hhhhhh•¹•¹•¹•hh•¹„¾hhhhhhhhh•hhh•¹Á„hhhhh•hhhhh•¹hhhh•¹•Áhhhhh•hhhhhhhhhhhhhhh¹•¹hh•hhÁhhhhh•¹•¹h•h•¹hhÁÁhÁÁÁÁÁhhhÁhÁhhhÁhÁhÁhÁÁÁhhÁÁÁhÁhhhÁÁhhÁhÁhÁÁhhÁhÁÁhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhÁhÁhÁhhhhhhhÁhÁÁhhÁhhÁhÁhhÁhÁhÁhÁhÁÁhÁhhhhÁhhÁhÁÁhhÁhÁÁÁhÁÁhÁÁhhhÁhÁhhhÁhÁhhÁhÁÁhhÁhÁhÁhÁhÁÁhhÁhÁhÁÁhhhÁhÁhÁhÁÁhÁhhÁhÁhÁhhhhÁhÁÁhÁhÁÁhhhhhhhÁhÁÁhhÁhhÁhÁÁhÁhÁhhhÁhÁÁhhhhhhÁhhhÁÁhÁhÁhÁÁhÁhÁhÁÁhhhhÁhÁhhÁhhÁhÁhÁÁhhÁhÁhhÁhhÁhhhÁhÁhÁhhhÁhhÁhÁhÁhÁhhhÁhÁhÁhhhhÁhÁhÁhÁÁhÁhhhhhhÁhhÁhhÁhhhÁhhhÁhhhhhÁhÁhhÁhhhhÁhhÁhÁhÁhÁhÁÁhhÁÁhÁÁhhhhÁhÁhhÁhÁhhhÁÁhhhÁÁhÁhhhhÁÁhhÁhÁhÁhhÁÁhhÁhhÁhÁhhhhhhÁhÁhhhhÁhhÁhÁhÁhÁhhhhhhhhhÁhhÁhhhÁhhhhÁhhhhhÁhÁhÁhhhhÁhhhÁÁhhÁÁhÁhÁhÁÁhÁhÁhÁhÁhÁhhÁhÁhhÁhÁÁhhÁÁhÁhhhhÁhÁhÁhÁhÁhhhÁhhÁhhÁhÁhhÁhÁhÁhÁhhÁhÁhÁhhhÁÁhÁhhÁhhhhhhÁhhÁÁhhÁhÁhhÁhhhhhÁhÁhhhhhhhhhhhÁhhÁhÁhÁhhÁhÁhÁhhhhÁÁhhhhhÁÁhhÁhÁhhhÁhhÁhhhÁhhhhÁhhÁhhÁhhÁhhhhÁhhhhhhhhhhhhhhÁhÁhhÁhÁhhÁhhÁhhhhhÁhÁhhhhhÁhhhÁhhhhÁhÁhhhhhhhhhhhÁhhÁhÁhÁhhhhÁhÁhhÁhhÁhÁhhhhÁhÁhhÁhhhÁhÁhhÁhhÁhhhhÁhÁhÁhÁhhhhhhÁhhhÁhÁhhÁhhhhhhÁhhÁhhhÁhhhhhhhhhhhÁhhhhhhhhhÁhÁhhhhÁhhÁhhhhÁhhÁhhÁhhhhÁhhhÁhhÁhÁhhhhhhhÁhhhhhhhhhÁhhhÁhÁhhhhhhhhhhhhhhhhÁhhhhhhÁhÁhÁhhÁhhhhhhÁhhhhÁhÁÁhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhÁhhhhhhÁhÁhhhÁÁhhhhhhÁhhhhÁhhhÁhhhhhhÁhÁhÁhhhhÁhhhhhÁhhÁhhhhÁhhhhÁhhhhhÁhhhhhhhhhÁhhhhÁhÁhhhhhÁhhhhhhhhÁhhhÁhÁhhhÁhhhÁhÁhhhhhhhhhhhÁhhhÁhhhÁhhÁhhhhhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁÁhhhhhhhhhhhhhhhhhhhÁÁhhhhhhhhÁhhhhÁhhhÁhhhhhhhhhhhhÁhÁhhhhhhhhhhhÁhhhÁhhhÁhhÁhhhhÁhhhhhhhhhÁÁhhhÁhhhÁhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhh•¹••hhh•¹•hÁhhhhhÁÁÄÄÍÑÑðÑðððððÑðÑÑÑÑÑðÑððÑÑÑððÑðÑðððððÑðòïðóóóóóóðóóóóüóóóóðóðïðððÑðÑÑÍÍÍÍÍÄÄÄÄÁÁÄÁÁhhhcccccXXbXXTTT"TTTTTTThhhhhhhhhhhhhhhhhh•hhhhhhhhhÁ¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹•h¹••¹•¹•hhhhhÁ•hhhhhhhh¹•hhh¹•hh•¹•hhh•h¹•h•¹•hh¹•hh¹•h•¹•hhh¹••hhhh¹••¹•hhhhhh¹•h•Áhhhhhhhhhhhhhh•hhhhhhhh¹•hh•hh•¾„hhhh•¹•h„¹••hhh¹•¹•¹••hhhhhhhhhh•hhh•hhhh¹•hhh•¹•hhh•hhhhÁhhhÁhhhhhhhhhhhh•¹•hhÁhhhhhhhhh„¹•¹•h¹•hhh¹hh•hhhhhh¹•¹•h¹•h•h¹•¹hh•¹•hhhhhhhhhh•hhh¾„¹¹•h•¹•Á¹•h•hhhh•h¹•hhh¾¹•hhhh¹•hhhhhhhhhhhhh¹f•h¹•h•¹•hhhhhhhhhhhhhhhhhh¹•h¹Áhhh••hhhh¹•hhhÁhÁhÁhÁhÁhhhÁhÁhÁhhhÁhÁÁhhhÁhÁhhÁhÁÁÁhÁhÁÁhÁhhÁÁhÁhhÁhÁhÁhÁhÁÁÁhÁhhÁhÁhhÁÁhÁÁÁhÁÁhÁhÁhhhÁhhhhhÁhÁÁhÁhÁhhÁhÁhÁÁhÁhÁÁhhÁhÁÁhhÁÁhÁhÁhÁhÁhÁhhhÁhÁhÁhÁhhhÁÁhÁhhhÁhÁhÁhÁhÁÁhhÁÁÁhÁhhhÁhhhhÁÁhÁhÁhÁhÁÁhÁhÁhÁÁhÁhÁÁhÁÁhÁÁhÁhÁhhhÁhhÁhhÁhÁhhhhÁhÁhÁhÁhÁhÁhÁÁhhÁhÁÁhhÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁhÁhhÁhÁhÁhhhÁhÁÁhÁhÁhÁhhÁÁhhÁhhhÁhhÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhhÁÁhÁhÁhhÁhhhÁhhhÁhhhhhhÁhÁhhhÁhÁhhÁhhÁhhÁhÁhhhÁhÁhhhÁhÁhhÁhÁhhhhhhhhhhÁhÁhhhhÁhÁhhhÁhhÁhhhÁÁhhhÁhÁhÁhhhÁhhhhÁhÁhhhÁhÁhÁhÁhhÁhÁhhÁÁhÁhÁhhÁhhhhhhhÁhhhhhhÁhÁhhÁhhhÁhÁhÁhhÁhÁhhhÁhÁÁhhÁhhÁhÁÁhÁhhÁhhhhhhhÁhÁhhhhÁhÁhhhÁhhÁhhÁhÁhhÁhÁhhÁhhhÁhÁhÁhÁhÁhhhÁhÁÁhÁhhhÁhhÁhÁhÁhÁhÁhhÁhhhhhÁhhhhhÁÁÁhhhÁhhhÁhÁhhÁÁhÁhÁÁhÁhÁÁhÁÁhhÁhhÁhÁhhÁÁhhhhhhÁhÁhhhhÁhÁhhhÁÁhÁhhhhÁÁhÁhÁhhÁhhhÁhhhÁhÁhhhÁhÁhhÁhÁhÁhÁhhÁhÁhhÁhhÁhhhhhhhÁhhhhhhÁhÁhhhÁhhhhÁhhhÁhhhÁhhhÁÁhÁhhÁhhhhhÁhÁhhhhhhÁhhhhhÁhhhhhhÁhhhhhhÁhhhÁhÁhhhÁhhhhhhÁhhhÁhhÁhhhhhhÁhhhÁhhÁhhÁÁhÁhÁhhÁhhhhhhhÁÁhhÁhhÁhÁhhhÁhhÁhÁÁhÁhÁhhÁhhhhhhÁhhhhhhhÁhhÁhhhhhhÁhhÁhhÁhÁhÁhhÁhhhÁhhhhhÁhhÁhhhÁhhÁhhhhhhhÁhhhÁhhhhhhhÁhhhhÁhÁhÁhhhhhÁÁhhhhhhhÁhhhhhhÁhhhhhÁhhÁhhÁÁhÁÁhÁhhhhhÁhÁhhÁÁhhÁhhhhhhhhÁhhhhhhhhhhhhhÁÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhÁÁhhhhhhÁhhhhhÁÁhhhhhÁhhhÁhhhÁhhhhÁhhhÁhhhhhhÁÁhhhhhhhhhhhhhÁhÁÁhhhhhhhhhÁÁhhhhhhhhhÁhhhhhÁhhÁhÁhhhhhhÁhhhhhhhhhhhhhhhÁhhhhÁhÁhhÁhhhhhhhÁhhhhÁÁhhhhhhhhhhÁhhhÁhhhhhÁhhÁhhhhhhÁhÁhhhhhhhhhhhhhhÁhÁhhhhhhhhÁhÁhhhhhhhhÁ•¹hh•¹hh•¹•Áhh•hÁhhÄÄÄÄÍÍÍÑÑððÑðÑððÑðÑÑððÑðÑðÑÑÑðÑóðÑðððóðóòóðóðóðóðóüüóóüüóóóðóðóðððÑÍÍÍÍÍÍÍÄÍÄÄÄÄÁÁhhhhhchcccccXXXXXXTTTTTTTThÁhhhhhhÁhhhhhÁh•¹•hhhhhh•ÁhhhhhhÁhhhhhÁhhhhhhhÁhhhhhhÁhh•¹•hh•¹•¹•hh•hh•¹•¹hh•hh•hhhhhhhh•h•¹hhhhh•¹¾„h•¹•hhh•hhhh•¹hhhhh•¹•hhhh•¹hhhhÁhhÁhhh•¹•¹•hhhhhh•hh•¹h•¹•hhhhh•Á•h•¹h•¹•¹„¾hh•¹hh•¹Á•¹hhhhhhhh•¹•hh•hh•h•¹•¹h•¹h•hhhhhh•¹hhhh••¹hhhhhhhhhhhhhhhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhhh•¹•h•¹h•hh•hhhhhhhhh•¹hhhh•¹h•hhhhh•hh•¹•¹•¹•¹„¾„•h•¹¹hh•¹hhh•¹¾„•hh•¹„hh•hhÁhh•hh•hh•hh•hhh•¹h•¹h•¹•hhhhhhhhhhhhhhhh•Áhhhh¹h•¹•ÁhhhhhhÁhÁhhÁÁhÁhÁhÁÁhÁÁhÁÁÁhÁhÁhhÁhÁÁhÁhhÁhÁÁhhÁhhÁhhÁhhÁÁÁhÁhÁhÁhÁhhhÁhÁÁhÁhhÁÁÁhhÁhÁhÁhÁÁhÁhhÁÁhÁhÁhhÁhÁhhÁÁÁhhÁhhhÁhhÁhÁhÁhhÁhhhhÁhÁhÁhhÁÁhÁhhhÁhhÁÁhÁhÁÁÁhÁhhÁhÁhÁhÁhÁhÁhhhÁhhÁhhÁÁhÁhÁhÁhÁhhÁÁhhhhÁhÁhÁhÁhÁÁhhÁhhÁÁhÁÁhÁhhÁhhÁhÁhÁhÁÁhhÁÁÁhhÁhhhÁhhÁhÁhÁhhÁhhhhÁhhhhhhÁhÁhÁhhÁhhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhÁhhhÁhhÁhhÁhÁhÁhÁhÁhÁhhhÁÁhÁhhÁhhÁhhhhÁhÁhÁhÁhÁhhÁÁhÁhÁhhÁÁhhhÁÁÁhhhhÁhhÁhÁhÁhÁhhÁhhhhÁhÁhhhhÁhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhÁhhÁhÁhhÁhhÁhhÁhhÁhhhÁhhÁhhÁhÁhhhÁhhhhÁhÁhhÁhhÁhhhÁhhÁhhÁhÁhhhÁhhÁhÁhhhÁhÁhÁhÁhhhÁhhhÁhÁhhhhhhÁhhhhhÁhhhhhhÁhhÁhhÁhhhÁhhÁhÁhhhÁhÁhhÁhÁhhÁhhÁhhÁhhÁhhhÁhhÁhhhhÁhhhÁhhhhÁhÁhhhhhÁhhhhhhÁhhÁhhÁhhÁhhhÁhhhhÁhÁhÁhÁhÁhhhhhÁhhhhÁhhhÁhhhhÁÁhhÁhhhÁhhÁhhÁhhhÁhhÁhÁhhÁhÁhhhÁhÁhhÁhhÁhhÁhÁhÁhhÁhhÁhhÁhÁhhhÁhÁhhÁhhÁhhhhÁhhÁhhhhÁhÁhÁhhhÁhhhÁhhhhÁhhÁÁhÁhÁhhhhhÁhÁhhÁhhhÁhhhhÁÁhhÁhhÁÁhhÁhhÁhhhÁhhÁhÁhÁhÁÁhhÁÁhÁhhÁhhÁhhÁhhhhhhÁhhÁhhhhhhÁhhÁhhhhhhÁhhhhhÁhhhhhhÁhhÁhhhhhÁhhÁhhhhÁhhhhÁhhhhhhhhhhhhÁÁhÁhÁhÁhhÁhhÁhhhÁhhhhhhhÁhhÁhhhÁhÁhhhhhhhÁhhÁhhhhÁhhÁhhhhhhÁhhÁhhhhhÁhhÁhhhhÁhhÁhhhhÁhÁhhhhhÁÁhhÁhhhhÁhhhÁhhhÁhhÁhhÁhhhhhhhÁhÁhhhhhhÁhhhhhhhhhhÁhhhhhhhÁhhhÁhhhhhÁhhÁhhhhÁhÁhÁÁhÁhhhhhhhÁhÁhhhÁhhhhÁÁhhÁhhhhÁhÁhhhÁhÁhhhhhhhhhhhÁhhÁhÁhhhÁhhhhhhhhÁhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhÁhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhÁhhhhhhhhhhhhÁhÁhhhÁhhhÁhÁhhhÁhhÁhÁhhÁhhhhhhhhÁhhhÁhhÁhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhh•ÁÁhh¹•¹•h¹•hÁÄÄÄÍÄÑÑÑÑððÑððððÑÑðÍððÑðÍÑÑÑððððÑðððððóððóðóðóóóóóóóóóüüóóóóóðñðÑðÑÑÍÑÍÍÍÄÍÄÄÄÄÄÁÁÁhÁhhhchcccXXXXTXTTTT"ThhhhhhhÁhhhhÁhhhhh¹•hhÁhh¹•¹•h•hhhhhhhhhhhhÁhhhhhhhhhhhhhhhhh¹•h•¹•¹•h¹•hhhh•h¹•h¹•hhÁhhhh¹•hhhhh•h•h¹•hhh¹•hh¹•hhhhh•¹•h•hh¹•hhhhhhhhhhhhhhhhhhh¹•h•h•h¹•h•hhh¹••h•¹•¹•¹•hhhhhhhhhhhhhhh•Á¹•hhh•hhhhhh¹•h¹•h¹•hh•h•h¹•hh•hh•hhhhh¹•hhhhhhhÁhhhhÁhhÁhhhÁhhhhh¹•hhhh•hh•hhhhhhhhhhhh•h¹•h„¾¹•h¹hhh•hh•hh•¾•„¹•hhh¹•¹•hhh¹•hhh•h••¹¹•¹••„¹•hhhhhhhh¹•¹•h¾hh¹•hh¹•h¹•h¹•h¹•h¹•hh••¹•¹••¹•hhh¹•h•hhhhh•hhhhhhh¹•¹•hhhhhhhh¹f•hhhÁhÁhÁhÁhÁhÁÁhÁhÁhÁÁhÁhÁÁÁhÁhÁhÁhÁÁÁÁhÁÁhhÁÁhÁhhhÁÁÁhÁhÁÁÁÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁhhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁhhÁÁhhhÁhhÁÁhÁhhÁhÁhÁhÁhÁhÁhÁhhhhÁhhhhÁÁhhÁÁhÁÁhÁhÁhÁhhÁhhÁhÁÁÁhÁhÁhÁhÁhÁhhhÁ„ÁhÁhÁÁhÁÁhÁhhÁhÁhhÁÁhÁÁhÁhhÁhÁhÁhÁhÁÁhhÁÁÁhÁÁÁhhÁhhhhÁÁhhhhÁhÁhÁhhÁhhÁhhÁhÁhÁhÁhÁhÁÁhhhhÁÁhhÁÁhÁÁhÁÁhÁÁhhÁhhÁhÁÁhÁÁhÁhhhÁhÁhhÁhÁÁhhÁhÁÁhÁhÁhhÁhÁhhÁÁÁhÁhÁhhÁÁhhÁhÁhÁÁhÁhÁhÁhÁÁhhÁhhhÁÁhhhhhÁhÁhÁhhÁhhÁhhÁhhÁhÁhhÁhhÁhhhhÁÁhÁhÁhÁÁhÁhÁÁhÁhÁhhÁhÁÁhÁÁhÁhhhÁhhhhhÁÁhÁhhÁhÁhÁhÁhhÁhÁhhÁÁÁhÁhÁhhÁhhÁhÁhÁÁhÁhÁÁhÁhÁÁhhÁhhhÁÁhhÁhhhhÁhÁhhÁhÁhÁhhhhÁhÁhhhhhÁhhhÁhÁhhÁhÁhÁhhhhÁhÁhhhhÁhÁÁhÁhhÁhhÁhhÁhhhÁÁhÁhhÁhÁhÁhÁhhhhÁhhhÁhÁhhÁhhhÁhhhhÁhÁÁhhhÁhhÁhÁhhÁhhhhÁhhhhhhÁhhhhÁhhhhhÁhhhhhÁhhhhhÁhhhhhÁhhÁhÁhÁhhÁhÁhhhhhhÁhÁÁhÁhhÁhhÁhhhhhhÁhÁhhhÁhÁhÁhhhhhhÁhhÁhÁhÁÁÁhhhÁhÁhhÁhÁhhÁhÁhhÁÁhhÁÁhhhhÁhhhhhhÁÁhÁhhÁhhhhÁhhhhhÁhhhhhÁhhhhÁhhÁhÁÁhÁhhhhÁhhÁhhhÁhhÁhÁhhÁÁhÁhhÁhhhÁhÁhÁhÁhÁhÁhÁhhhhÁhhÁhÁhÁhÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁÁhhÁhhhÁhÁhhhhhhÁhhÁhhÁhhhhÁhhhhÁhhhhhhÁhÁhhÁhhhhhÁhÁhÁhhÁhhÁhhhÁhÁÁhÁÁÁhhhÁhhhhhhÁhÁhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhÁhÁhÁÁhÁhhhhhÁhhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhÁhhhhhÁhhÁhÁhhÁhÁhÁhhhhhÁhhhÁhÁhhÁhhhÁÁhhhhhhÁhhhhÁhhÁhhhhhhhhhhhÁhÁhhÁhhÁhhhÁhÁhÁhhhhÁhhhÁhhhhÁhhhhhhhhhhhÁÁhhhÁhhÁhhhhÁhhhhhhhÁÁhhhÁhÁhhhÁhÁhÁhhhÁhhhhhhhhhÁÁhhÁhhhÁhhhhhhhÁhhhhÁhhhÁhhhhhhÁhhhhÁhhhhhhhhhhhhhÁhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhÁhhhhÁhÁÁhhhhhhhhÁhÁhÁhhhÁhhhhÁhhÁhhhhhhhhÁhÁhhhhh•¹•¹Á••hhhhhhhÁÁÄÄÍÍÑÍððóðóððÑðÑððÑÑÑÑÑÑÑðÑðÑðÑÑððððððððððóóððóúóóóóúüóóóóóóðïÑÑÑÑÑÑÑÑÍÍÍÄÍÄÄÄÄÁÁÁÁhhÁhhccXcXXXXTTTTTTTTTTThhhhÁhhhhhhhhhhh•¹h•hhÁhh•hh•¹hhÁhhhhÁhhhhhhhÁhhhhhÁhÁhhhhhhhh•¹hh•¹hÁhh•hh•¹•¹Á•Áhhhhhhhhhhh•hÁh•¹•¹¹•hh•hhhhhhh••hh•¹Á„¾¹h•¹•¹••hhhhhhhhhhhhhÁhhhhhh¹•¹hh•¹hh•¹••¹hhhhhhhhhhhhhhhÁhhhÁhh•¹•¹•hh•¹h•hh•¹•hhhhhhh•h•¹•¹•¹hh•h•¹h•¹h•hhÁ•hhhhÁhhhhhhhhhhhhhhhhhhhhhhhhh•¹••¹hhhhhhhhhh•¹•¹hhh•¹hhhhhh•¹••¹h•¹•¹•¹•hh••hhh•Áhhh•¹•¹•¹hh•Áh•¹•¹•hhhh•hh•¹„¾h•¹•hhh•¹•hhhhhhhhhhhhhh•¹hhhh•¹hhhhhh•¹hhhh•¹hhhh•hhhhh•¹••hh•hhh•¹hhhhÁÁhÁÁÁhhÁÁÁÁÁhÁhÁhÁÁhÁÁhÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁhÁhhÁÁÁhÁhhhÁhÁÁhÁhhÁÁÁhhhÁÁhÁhÁhhÁhÁhÁÁhÁhÁÁhÁhhhÁÁhÁhÁÁhhÁÁhÁhhÁÁhÁÁhÁÁhÁÁhÁhÁhÁhÁhhÁÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁhhÁÁÁhÁÁÁhÁhÁhÁhÁhÁhÁhÁhÁhhÁÁÁÁhhhhÁhÁÁhÁhhÁhÁhhÁhÁÁhÁÁhhÁhÁhÁhhÁhÁhÁhhhhÁhhhhÁÁhhÁÁhhhhÁÁhÁhhÁÁhÁhÁhhÁhhÁhhÁhÁhÁhÁhhÁÁhÁhÁhÁÁhÁhhÁÁhÁhÁhÁhhÁhhÁhhÁhhÁÁhhÁhÁhÁÁhhhhÁhhÁhÁhhÁÁhhhhÁhÁhÁÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhhÁhhhÁÁhhhhÁÁhÁhhÁÁhÁhÁhhÁhhÁhÁhÁÁhÁhÁhhÁÁhÁÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhhÁhÁÁhÁhhhhhÁhÁhÁhhÁhÁhhhÁhÁhÁÁhhÁhÁhÁhhÁhhÁhÁhhhÁÁhhhÁhÁhhÁhhhhÁÁhÁhÁhÁhÁhhÁhÁhhÁhhÁhÁhÁhÁhhÁhÁhÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhhhhÁhÁhhhhhhÁhÁhÁhhÁhÁhhhÁhÁhÁÁhhÁhhÁhÁhhhhÁhÁhhhÁÁhhhÁhhhhÁhhhhhÁhhÁhÁhhÁhhÁhhhhÁhhhÁhhhÁhhhÁhÁhÁhhÁhhhÁhhÁhÁhÁhÁhhÁhhÁhhÁhhÁhhhhhhÁÁhhÁhhhhÁhhhÁhhÁhhhhÁhhÁhÁhhhÁhhhÁhhÁhÁhhhhhÁhhhhÁhhhhÁhhhhÁhhhÁhhÁhhÁhhÁhhhÁhhhÁÁhhÁhhhÁhhÁhhhÁÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhhÁhhhÁhhÁÁhhhhhhhhÁhhhhÁÁhhhhÁhÁÁhÁhhhhÁhhhhÁhÁhhhhhhÁhhhhÁhÁhÁhhhhhÁhÁhÁhhÁhhÁhhÁhhhÁhhhÁhÁhÁhhhÁhÁhÁhÁÁhÁhÁhhÁhÁhÁhhÁhhÁhhhhhhhÁÁhhÁhÁÁÁhÁhhhÁhhÁhÁhhÁÁhhÁhÁhhÁhÁhhhÁhhÁhhÁhhÁhhhhhÁhhhhhhÁhhÁhÁhhhÁhhhhÁhhhÁÁhhÁhhÁÁhhÁhÁhhhhhÁhhÁhhhhÁhhÁhÁhÁhÁhhÁhhhÁhhhhÁhhÁhhhhhhÁhhhhhÁhhhÁhÁhhhÁhÁhhhhhhhÁhhhhÁhhÁhhhhÁhhhÁhhÁhÁhÁhhhhÁhhÁhhÁhhhhhhhhhhhhhhÁÁhhhhÁhhhÁhhÁhhhÁhÁhÁhhhhhÁhhÁhhhÁhhÁhhhhhhhÁhhhhhhÁhÁhhhhhÁhÁhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhÁhhhÁhhhÁÁhhÁhÁhÁhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhhhhhÁhhhhhÁhhhÁhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhh¹•¹•hhhhhÁÁÁÍÄÍÑÑÑÑðððÑÑðÑÑðÑÑðÑÑÑðÑÑÑÑÑðÑðððððððóððóóóóðúóóóóüóóüüóððóóðððÑðÑÑÍÑÑÄÄÍÄÄÄÄÁÁÄÁÁÁhhhccccbbXXXXXXTTTTThhhhhhhhhhhhhÁhÁhh••¹•h¾„¹•¹•¹•hhhhhhÁhhhhhhhhhhhhhhhhhhhhÁÁhhhhhhhh•Á•Áh¹•hh••¹•hhhhhhÁhh••¹•hh•Á••¹•h¹•hh•hhh¹•¹•hh¹•„¾•„¹•hh¹•ÁhÁhhÁhhhhhhhhhhhhh•Á•¹•hhh•¹•hhhhhhhhhÁhhÁhhhhhÁhhhhhhhhh¹•h•¹•¹••¹•h•hh•h¹•hhhhhhhh•¹•hhh¾„¹•h¹•¹•hhhhhhhhÁhhhhhhÁhhhhhÁhhhhhÁhh¹•h¾Áhhhhh•Áhh••hh••¹•h•hhhh¹•hhhhhhhhh¹•h¹•¹•hh¹•¹••¹•hhhhhhh¹•¹•hhhhh¹•hh¹•hhhh•¹•h¹•hh•hh¹•hh•hh•hh•hh•hhhhh•hh•¹•hh••hhhhh•¹•hhhhh¹•hhhh•hh¹•h¹•hh••hhhÁhÁÁhÁhÁhÁÁÁhÁhÁhÁhÁÁÁÁÁÁÁhÁhÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁhÁhhÁÁhhÁhÁÁhÁhhÁÁÁÁhhÁhÁhhÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁhhhÁhÁhÁÁhÁÁÁhÁhÁÁÁhÁÁhhÁhÁÁhÁÁhÁhÁhÁÁhÁÁÁÁhÁhÁhÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁhÁhhÁhÁhhÁhÁÁÁhhÁÁÁÁhÁhÁÁhhhÁhÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁhhÁhÁhhhÁÁÁhÁÁhÁhÁÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁÁhÁÁhÁhÁhÁhÁÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhÁhÁhÁhÁhhhhÁhhÁÁhÁhhhhÁÁhÁhhhhhhhÁhÁÁhÁhÁÁÁhÁÁhhÁÁhÁhhÁÁhhhÁhhÁhÁÁhÁhhÁhÁhÁhÁhÁhhhÁÁhhÁhÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁhÁhÁhÁhÁhÁhhÁhhÁhhÁhÁÁhÁÁhÁhhhhÁhhÁÁhÁhÁhhÁhÁÁhhÁhhhhÁhÁÁhhÁhÁÁhÁÁhhÁÁhÁhhÁhhhhÁhhhÁhÁhÁhÁhÁhÁhÁhÁhhhÁhÁhhÁhÁhÁhhÁhÁÁÁhÁhÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁhhÁhhÁhÁÁhÁÁhÁhhhhÁhhhÁhÁhhhÁhÁhÁhÁhÁhhhÁhÁÁhÁhÁhÁhÁÁhhÁÁhÁhhÁhhhhÁhhhhÁÁhÁhhÁhÁÁhhÁhhhhÁhÁhÁÁhÁhÁhhÁhÁÁÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁhhhhÁhhÁÁhÁhhhhhÁhhhhÁhÁhhhhhÁhÁhhhhhhhhÁhÁhÁhhÁhÁhÁhhÁhÁhhhÁhhhhhhhÁhÁhÁhhhhhhÁhhÁhhhhÁhÁhÁhhhÁhhhhÁhÁÁhhhhhhÁhÁhÁhÁhÁhÁhhÁhhÁhhhhhÁhhÁhhÁhhÁhhÁhhhÁhhÁhhhÁhÁhÁhhhhhhhÁhÁhhhÁhhÁhhÁhhhÁhÁhhÁhhhhhhhÁÁÁhÁhhhÁhÁhhhÁhhhÁhÁhhÁhhÁhhhÁhhÁhÁhhÁhhhhhÁhÁhÁhhÁhÁÁÁhhÁhhÁhÁhhhÁhhÁhhhhhhhhhÁhhÁhhhÁhÁhÁhhÁhhhhÁhhÁhhÁhhÁhhÁhhÁhÁhhhÁhhhhhhhÁhÁhhÁhÁhhÁhhhÁhhhhhÁhhÁhhÁhÁhÁhhÁhÁhhhhhhhhÁhÁhÁhhÁhÁhÁhhÁhhÁÁÁhhÁhÁhÁhhÁhhhhhhhhÁhhÁhhhÁhÁhhhhhhhÁhhÁhhhhhÁÁhÁhhhhÁhhhhÁhhhhhhhhÁhÁhhhhhÁhhhÁhhhhhhhhÁÁhÁhÁhhhhÁhÁhhhhhhÁhhÁhÁhhhhÁhhÁhhÁhhÁhÁhhhÁhÁhhhhhÁÁhhhÁÁhhhhhÁhhÁhÁhhhhÁhÁhÁÁhhhhÁhhhÁhÁhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhÁhhhhhhhhhhhhÁhÁÁhÁhÁhhÁhhhÁhhhhhÁhhhÁhhhhhhÁhhhhhhhÁÁhÁhhhhÁhhÁhÁhhhhhhÁhhÁhhhhhhh•ÁhÁhhhÁÁÄÄÍÍÍÑÑÑðÑððÑÑÑÑÑÑÑÑÑÑðÑÑÑÑðÑÑððÑððððïóóðóóóóóóóóóóóóóüóóóððóððððÑÑÑÑÍÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhhhcccXccXXXTTTT:ThhhhÁhhhhÁÁhÁhhh•¹hhhhhhhÁÁ•hhhhÁhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhÁhhh•¹•¹hhhhhh•¹•¹hhhhhhÁhhhh•¹Áhhh•¹•¹•¹hhhÁ„hh•¹Áh„¾h•h•¹„¾Á¹•¹hhhhhhhhhhhhÁhhÁhhÁhhhhhhù•¹•¹•hÁ•¹hhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhh•¹hh••¹h•¹„¾hhhhhh•h•¹•hhhhhhÁhhhhhÁhÁhhhhhhhhÁhhhhhhhhhhhhh•hÁh•¹••¹•¹hh•hÁ¹h•¹•¹h•¹hhh•¹hhh•¹•hh•hhhh•hhhhhhhh•h„¾h•¹•hhhhh•h•hhhhhhhhh•¹•h•¹•h•¹h•¹•hh•¹¾„Áhh•¹h•¹h•¹h•¹•hhh•¹h•¹••¹•¹hhhh•¹•hhhhhhhhh••¹hhhhhhhh•¹hhÁhhhÁÁÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁhÁhÁÁhÁhÁÁÁÁhÁÁhÁÁÁhhÁÁÁÁÁÁhhhÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhhÁÁhÁÁÁhÁÁÁÁÁÁÁhÁhhÁÁÁÁÁhÁÁÁhÁhÁÁhhÁÁhÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁhÁhÁhÁÁÁhhÁhÁhÁhÁÁhÁhhÁÁhhÁÁhÁÁÁhhÁÁÁÁÁhÁhhÁÁÁhÁhÁhÁhÁhÁhÁÁÁÁhÁhÁhÁhÁÁÁhhÁÁhÁÁÁhÁÁhÁÁÁÁhÁhhÁhÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁhhÁhÁÁhÁhÁhÁhÁhÁhhÁÁhÁÁÁhhÁhÁÁÁhÁhhÁÁÁhÁhÁhÁhÁhhÁÁÁÁÁhÁÁÁhhÁhÁhÁhÁÁhÁhÁhÁÁÁhÁÁÁhÁhhÁÁÁÁhÁhÁÁhÁhÁÁhhÁÁhÁÁÁÁÁÁÁÁhÁÁhhhÁhÁhÁhÁhÁhÁhhhhÁhÁhÁhÁhÁhhÁÁhhÁhÁhÁÁhhÁhÁÁhÁhhhÁÁÁhÁhÁhÁhÁhhÁhÁÁhhÁhhÁhhÁÁhÁhÁÁÁhÁÁhhÁÁhÁÁhhhhhÁhÁhÁhÁhÁhhÁÁhhhÁhÁhÁhÁÁÁhÁhÁÁhhÁhÁhÁhÁhhÁÁhhhhhhÁhÁhÁÁhhhhÁÁhhÁhÁÁÁÁhhÁhÁÁÁhÁhhÁÁÁhÁhÁhÁhÁhhÁÁÁÁhhhÁhhhhÁÁhÁhÁhÁÁÁÁhhÁÁhÁÁhhÁhhhhÁhÁhÁÁhhÁhÁhhhhÁhÁhÁÁÁhÁÁhÁhhhÁhÁhÁhhÁhÁhÁhhhhhÁhÁhÁÁhhhhÁÁhhhÁhÁÁÁhhÁÁhÁÁhÁhhÁhÁhÁhÁhÁhÁhhÁÁÁhÁhhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁÁhÁhhÁhÁhÁÁÁÁhÁhÁhhhÁhÁhÁhhhhhÁhhhhhhÁhhhÁhhhhhhÁhhÁhhÁÁÁhhhÁhÁÁhÁhhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁhhhhÁhÁhhÁhÁhÁhÁhÁhÁhÁhÁhhhhhÁhÁhhÁhhhÁhÁhhhÁhhÁhÁÁhÁhÁhÁhhhÁhhÁhhhhhÁhhhhhÁÁhhÁhÁhhhhhÁhhhÁhÁhÁhhhÁhÁhhÁhhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁhhhÁhÁhÁhÁhÁhhÁhhhÁhÁhhÁhhhhhÁhÁhhÁhÁÁhÁhÁhhÁhhÁhÁhÁhÁhhÁhhhhhhÁhhÁhÁÁhÁhhÁhÁhhhÁhÁhhhhÁhÁhÁhÁhÁhhhÁÁhÁhÁhhÁhÁhhÁhÁhhÁhhhÁhÁhhÁÁhhhhhÁhhhÁhÁhhÁhhÁhÁhÁhhhhhhhÁhÁhhÁhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhÁÁhhhÁhhÁhhhÁhÁhhhhhhÁhhhÁÁhhÁhhÁhhhhhÁhÁÁhhÁhÁÁhÁhhÁÁhhhÁhhÁhhÁhhÁhÁhhhhÁhhhhÁhhhhÁhhÁhÁhhÁhhÁhÁhhhÁhÁhÁhhÁhhhhÁÁhhhÁhhÁhÁhÁhÁhÁÁhhhÁhhhhhhhÁhhhhhhhÁhhhÁhhhhhhÁhÁÁhhÁhÁÁhhÁhÁhhÁhhhÁhhÁhhhÁhhhhhÁhhÁhÁÁhhh•¹ÁhhÁhÁÁÄÄÄÑÑÑðÑððððÑððððððÑðÑðÍÑðÍðððÑÑðððððÑóððððóððóüóðóüüóóóóóóóóðïÑÑÑÑÑÑÍÍÄÍÍÍÄÄÄÄÁÁÁhhhhhcccdcXXXXTTTVTTTTTTTTThÁhhhhhÁhhhhhhhhhhhhhÁhhhhÁ•¹•¹•hhhhhhhhhÁhhhÁhhhhhhhÁhhhhhÁhhhhhhhhhhhhh•hh•hhhhhhhhhhhhhhÁhhhhÁhhhhhhhhÁhh¾hhhÁÁ•¹•h¹•hhhh•¾ÁhÁhhhhhÁhÁhhhhhhhhhhÁhhhhhhhhhh¹•hhhhhhÁhÁhhÁhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhh•hhhhh¹•¾hhh„¹•Á•Áh•¹•hh¹•hhhhhhhhhhhhhÁhhÁhhhhhhÁhhhÁhÁhhhhhÁÁ¹•¹•¹•hhhhÁ•¹•h•¹•hhhhhhhhhh•ÁÁh•¹•h¹•hhh¹•hhh•hhh¹•¹•¹•hhh¹•hhhhh¹•¹•hhhh•hÁh•¹••¹•h•¹•h¹•hhh¹•hÁ•hhhhhhhhh¹•hhhhhÁhh¹•h¾„¾h•hhh¹•hhh•hhhh¹•hhhh•hh•hhhhhhhÁhÁÁhÁÁÁÁhhÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁhÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁhÁÁÁÁÁÁhhÁÁÁhÁhÁÁhÁhÁhÁÁÁÁhhÁÁÁhhÁ¾hÁÁÁhÁhhhÁÁÁÁhÁÁhÁÁhÁhÁÁÁhhÁÁÁÁÁÁhÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhÁhÁhÁhÁÁÁÁhÁÁhhÁÁÁÁhÁÁÁhhÁÁhhÁÁÁhÁhÁÁhÁÁÁhÁhÁhÁhÁhÁÁhÁhÁÁhÁhÁhÁÁÁÁhhÁÁÁhhÁhhÁÁÁhÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁÁhhÁÁÁÁhÁhÁhÁhÁhÁhÁhÁÁhÁÁhÁÁhÁhhhÁhÁhÁÁhÁhÁhÁhÁÁhÁÁÁhhÁÁhhÁÁÁhÁhÁÁhÁÁÁhÁhÁhÁhÁhÁÁÁhÁhÁÁhÁhhÁÁhÁhhÁÁÁhhÁhhÁÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁhÁhÁÁhÁhÁÁhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁhÁhÁhhÁhhÁÁhÁÁhÁhhÁÁhÁhÁÁhhÁhÁhhÁhÁhÁhhÁÁhÁhÁhÁhÁhhhÁÁhÁhhÁhÁhhhhÁÁhÁhÁhÁÁhhhhhÁhÁhÁhÁhhÁÁhhÁÁhÁhÁhÁhÁÁhhÁhÁhÁhhhÁhÁhhÁhÁhhÁhÁhÁÁhÁhÁhÁhhÁhÁÁhÁhÁhhÁÁÁÁhÁÁhhhÁhÁhÁÁhhhÁÁhÁhÁhÁÁhÁhhhÁÁhÁhhÁÁhÁhhhhÁÁhÁhÁhÁhhhhhÁhÁÁhhhhÁÁhÁhÁÁhÁhÁhhÁhÁhhhÁÁhÁhhhÁhÁhhhhÁhÁhÁhÁhÁhÁhhÁhhhÁhÁÁhÁhÁhÁhÁÁÁhÁÁhhhÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁÁhhhÁhhÁhhÁhÁhhhhhÁhÁhÁhÁhhhhhhhÁÁÁhhhhhÁhÁhÁhÁhÁhÁhÁhÁhhÁÁhÁhÁhhÁhÁhhÁhhÁhÁhÁhÁhhÁhhhhhhÁhhÁhhÁhhÁhÁhÁhÁhhhhÁhhhÁÁhhÁhÁhhÁhhhhÁhhhhÁhhhhhhÁhÁhhhhÁhÁhhÁÁhhhhhhhÁhÁhhhhhÁÁhhhÁhhÁhhhhÁhhhhhÁhÁhhhhÁhhhhÁhhÁhÁhÁhÁhÁhhhhhhhÁhÁhÁhhhhÁhÁhhÁhhhÁÁhhhÁhhhhhÁhhÁhÁhhÁhhhhÁhÁhhhhÁhhhhhhhÁhhhhÁÁhhhhhhÁhÁhhhhÁhÁhhÁhhhÁhhÁhÁhhhhhÁhÁhhhhhÁhhhhÁhÁÁhhÁÁhÁhhhhhhhhhÁhhÁhhÁhÁhÁhhÁhhhhÁhhhÁhhhhhÁhhÁhÁhÁhÁhhhÁhÁhhhhhÁhhhhhÁÁhhÁhÁhhhhhhhÁhÁhhhhhÁhÁhhÁhhÁÁhhÁhhhÁhhÁhÁhhhhhÁhhhhhÁhÁhhhÁhÁhhhhhhhhhhÁhÁÁhhhhÁhhhÁhhhÁÁhhhÁhhhhhÁhhÁhhhhÁÁhhhÁhhhhhÁhhhhhhhhÁhhhÁhhhÁhhhÁhhÁhhhÁhÁhhhÁhhhhh•¹Á„¾hÁÁÁÄÄÍÍÍÑÑðððððÑÑÑðððÑÑÑðÑÑÑðÑÑÑðÑðïððððïóðóðóóúðóóóóóóüóóóóóðóððððÑÑÑÑÍÍÍÍÍÄÄÍÄÄÁÁÁÁÁhhhchccccXcXXTXTTTTTThhhÁhhhhÁhhhhhÁhhÁh•ÁhhÁ•¹hhhhhÁÁhÁhÁhÁhÁhÁhhhÁÁhhÁhhhhÁhhhhhÁhhÁhÁhhhÁ•¹••¹•hhhhhÁhhÁhhhÁhhhÁhhhhhhhhÁhhhhhh•Á•¹hhhhhhhhhhù•¹„hhÁÁhhÁhhhhhÁhhhhÁhhÁhhhhÁhhhhhhhhh•hhhÁhhÁhhhhÁhhÁhhhÁhÁhhhhhhhhhÁhhÁhhh•¹••hhhh•¹•hhh¾Á•¹h•¹•hhhhhÁhhÁhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhh•¹•••¹•Á•h•¹hhh•¹•hhhh•hh•h•¹•¹Á•¹Á„¾hhÁhÁh•hh•¹•Áhh•••hhhhhhhh•¹•h•h•¹••¹hh•¹hh•¹hh•¹hh¹•h•h•¹•h•¹•hh•hh•hh•¹„¾hhÁÁhhhhhh•¹•¹••¹•hhhh•h•¹hh•Áhh•h•¹h•¹•hÁhhÁhhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁhÁhÁÁhÁÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁÁÁhÁhhÁhÁhÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁhÁhÁÁhÁÁhhÁÁÁÁÁÁhhÁÁhÁhhhÁhhhÁhhÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhÁhÁhÁhhÁhÁÁhÁÁÁÁÁÁhÁhÁhÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁÁhÁhÁhÁÁhÁÁÁhÁhÁhÁÁÁhhÁÁÁÁÁÁhhÁÁhÁhhhÁhhhÁhÁhÁÁhÁhÁhÁhÁhÁÁÁÁÁÁhÁhÁhÁhÁÁhÁhÁhÁhhÁhhÁhÁÁhÁÁÁÁÁÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁhhÁÁÁhÁhhÁÁhÁÁÁÁhhÁÁÁhÁhÁÁÁÁÁÁÁhhÁÁhÁhhhÁhhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁhÁhÁhÁhÁhhÁhÁhhÁhhÁhhÁhÁhÁÁÁÁÁhÁhhÁhhÁÁÁÁÁhÁhhÁhhhÁhÁÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhÁÁÁhhhÁhÁÁhhÁÁÁhÁÁhhhÁhÁÁhhhÁhhhhÁhÁhÁhhÁhÁhÁhhÁÁhÁÁhÁÁhÁhhÁhhhÁhÁhhÁhÁhhhÁhÁhÁÁÁÁÁhÁhÁhÁhÁÁÁÁhÁhÁhÁhhÁhÁÁÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhÁhÁhhÁhÁhÁÁhÁhÁÁÁhÁhhÁhÁÁhhhÁhhÁhhhÁhÁhhhÁhÁhhhhÁÁhÁÁhÁhÁhhÁhhhÁÁhhhÁhhÁhhÁhÁhÁÁhÁÁhhÁhÁhÁhÁÁhÁhÁhhÁhÁhÁhÁÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhÁhÁhhhÁhÁhÁhhÁÁÁÁhÁhhÁÁhÁhhhÁhhhhhhÁhÁhhÁhÁhhÁhÁhÁhÁÁhÁhÁhhhÁhhÁhÁhhÁhhÁhhhÁhhÁhÁhÁhhÁhhÁhÁÁhÁhhÁhhÁhhhhhhÁhhÁhhhÁhhÁhhÁhÁhhhÁhhhÁhÁhhhÁÁhÁhhÁhÁÁhÁhhÁhhÁhhhhhhhÁhhÁhÁhhÁhÁhhhhhÁhÁÁhÁhhÁhhhhhhÁhÁhhÁhhhhhÁÁhhÁhÁhÁhhhhhÁhhÁÁhhhhÁhhÁhhÁhhÁhÁhÁhhÁhÁhhÁhÁhhhhÁhhÁhÁhhhhÁhhÁhhÁhÁhÁhhhÁhhÁhhhÁhÁhhhhÁhhhhhhÁhÁhhhÁÁhÁhÁhÁhhhÁhhhÁhÁhhÁhhÁhhhÁÁhhÁhÁÁhhhhÁhhÁhÁhhhÁhÁhÁhÁÁhhÁhÁhÁÁhÁhhÁhÁÁhÁhhhÁhhÁhÁhhhhÁhhÁhhhÁhÁhÁhhÁhÁÁhhhhhhhhhhÁhhhhÁhÁhÁhhhÁÁhÁhÁÁÁhhhÁhhhÁhÁhhÁhhh¹•¹ÁhhÁÄÄÍÍÑÑÑóðïÑððÑÑðÑÑÑÑÑÑÑÑÍððÑÑðÑððïóðððóððððóðüóóóóúóóüóóóóóóóóððÑÑÑÑÍÍÑÍÍÄÄÍÍÄÄÄÁÁÁÁhhhhccccXXXTXXXT"TTTTThhÁhÁhÁhhhhÁhÁhhÁhhhh¹••hhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhÁhhhÁhhhhhhÁhhÁhhh¹Á¹•hhhhhhhhhÁhÁhhhhhhhhhÁhhÁhhÁhhhh¹•hhÁhÁhhhÁhhhhhhÁhhÁhhÁhhhhÁhhhhÁhhhhhhÁhhhhhhÁhhh••¹•hhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhh¹•hhhh¹••hÁ¹•hhhhÁh¹•hhÁhÁhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhÁhÁÁh¾„¹•¹•¹•Á¹•¹•hhhhhhhh¹•h•h¹•h¹•hhhhhhhhhhhhhhÁ¹••hhh¹•h¹•¹•¹Ãhh•h••¹•h•¹•¹••¹•Áhh•¹•hhhh••¹•hhhhh¹••¹•h¹•h¹•h¹•hhhhÁhhhhhhhhhhh•„¹Á¹•hh•¹ÁhÁh¹•¹•h¹•hhhh¹•hhhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁhhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhhÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁhÁÁhhÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁhhÁÁhÁÁÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁÁhhÁÁhÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁhhÁhÁÁÁhhÁÁhÁhÁhÁÁÁhÁhÁhÁÁÁhÁÁhÁÁhhÁÁÁÁÁhÁhhhÁÁÁÁhÁÁhÁÁhÁÁhÁÁhhÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁhÁÁhÁhÁÁhhÁÁÁhÁhÁhÁhhÁÁhÁÁÁhÁhÁhÁÁhÁhÁÁÁhÁhÁhÁhhÁhÁÁÁhhÁÁhÁhÁhÁÁÁhhhÁhÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhhhhÁÁÁÁhÁÁhÁÁhÁhÁÁhhÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁhhÁhhÁÁhÁÁÁhÁhÁhÁÁÁhhÁÁÁhÁhÁhÁhhÁhÁÁhhhÁhÁhhÁhÁhÁhhÁhhhÁhÁhÁhÁÁhhhÁÁhÁhÁhhhhÁÁÁÁhÁhhÁhhÁhhÁhhhÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁhÁhÁhhÁhhhÁÁÁhÁhÁhÁhhÁÁhÁÁÁhÁÁhÁÁhÁhÁÁÁhhÁÁhhÁhhÁhÁÁhhhÁhÁhhÁhÁhÁhhÁÁhhÁhÁhÁhÁÁhhÁÁhÁÁhÁhhhÁhÁÁÁhÁhhÁhhÁhhÁhÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁÁhhÁhÁhÁhhÁhÁhhÁhÁhÁhhÁÁhhÁÁhÁÁhhÁhÁhhÁÁhhÁhhhÁhhÁhÁÁhÁhÁhhhhÁhÁhÁhhÁhhhÁÁhÁhhÁÁhhhÁÁhÁhÁhhhÁhÁÁhhÁhhÁhhÁhhÁhÁhÁhÁhÁÁhÁÁhÁhÁÁhhÁÁhhÁhÁhhÁhhÁÁhÁhÁhhÁhhÁÁhÁhÁhÁÁhhÁhÁhhÁÁhhhÁhhÁhhÁhhÁhhhÁhhhhhhÁhÁhhÁhhhÁhhÁhÁhÁhhÁhÁhÁhÁhhhhÁhÁhhÁhÁhhhÁhhÁhhÁhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhÁhhÁhhhhÁhhÁhhhhhhÁhhÁhÁhhÁÁhÁhÁhÁhÁhhÁhhhÁhhÁhhÁhhhÁhhhhÁhhhÁhhÁhhhÁhhÁÁhhÁhhhÁhÁhÁhhhhÁhhÁhhÁhhÁhÁhhhÁhhhhÁhÁhÁhÁhhÁhÁhhhhÁhÁhÁhhÁhhhÁhhhhÁhhhhhÁhhÁhÁhhÁhhÁhÁhÁhÁhÁÁhhhÁhhÁhhÁhhhÁhhÁhÁhÁhÁhhÁhhhÁhÁhÁhhÁhhhhhÁhÁhhÁhhhhÁhhÁh••ÁhhÁÄÁÄÄÍÍÍÑðððððÑÑðÑðÑÑððÑÑÑÑÑðÑððïçðÑóððððòóóóóóóðóüóóüóüüóüóóðððððïÑÑÑÑÍÍÍÍÄÄÄÄÁÄÄÁÁhhÁhchcccbbXXXXTTTTTT"TThÁhÁhhhÁhÁhhÁhhÁÁhÁhh•¹hÁhhÁhhÁhhhÁhÁhÁhhhhhhÁhhhhÁhÁhhhhÁhhhhÁhÁhhhÁhhhhhÁhhhhÁÁhhhhhhÁhhhhÁhhÁhhÁÁhÁhhhhhÁhhhhÁhhhhhÁhhÁhhhhÁhhÁhhhhÁhhÁhhÁhhÁhhÁhÁhÁhhhhhÁhÁh•¹hÁhhÁhhhhhhÁhhhhÁhhÁhhÁhhhhhÁhhhhhÁhhhÁhÁhhhÁhh•¹h•¹hÁ••hÁ•hÁhhhÁhhhÁhhhÁhÁhhÁhhhhhÁhhÁhhhhhÁhhÁhhhhhhÁhhhhhhhhhhhhhhÁ•hhhhh•¹•hÁhhhhhhhhhhhhhhÁh•¹h•¹•hhhhÁhhhhhhhh•¹•¹hhh•¹hh•¹hhhÁh•¹hh•Áhh•¹hhÁÁhhhhh•¹hhh•¹•ÁhhhhhhhhhÁhhhhhhhÁhhÁ•¹•¹•hhhh•¹h••¹Á•hhhh•hh•¹•hhhÁhhhÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhhÁÁhÁÁÁÁhÁÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁhÁÁhhÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁÁhÁÁhhÁÁhÁÁÁÁÁÁÁÁÁÁhhÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁÁhÁÁhÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁhÁhÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁhÁÁÁhÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁhhÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhÁhÁhhÁÁhÁÁhhÁÁhÁhÁÁhÁÁhÁhÁÁhÁhÁhhÁhÁhÁÁÁhÁÁÁhÁÁhhÁhÁÁÁhÁÁÁÁhhÁÁÁÁÁhÁhÁhÁÁÁÁÁhÁÁhhÁÁhÁhÁhhÁhÁÁÁÁhÁÁÁhÁÁhhÁÁhhÁhÁÁÁhhÁhÁÁÁÁhÁÁÁhÁhÁÁÁhhÁÁÁhÁhhÁÁhÁhÁÁhÁÁhÁhÁhÁhÁhhhÁhÁhÁÁhÁÁÁÁhÁhÁhÁhÁhÁÁhÁÁÁhhÁÁÁhÁhÁhÁhÁhÁÁÁhÁÁhhhÁhÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁhhÁhÁhÁhÁhÁhÁhÁhÁÁÁhÁhÁÁhÁhÁÁhÁhÁhÁÁhhÁÁhÁÁhÁhÁÁhÁhÁÁhÁhÁhhÁhÁhÁÁÁhÁÁhÁÁhhhÁhÁhÁhhÁÁhhhhÁhÁÁhhÁhhÁhÁhÁhÁÁhhhÁhhÁhÁhÁhhÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhÁhhÁhhÁÁhÁhÁÁhÁhÁhÁhhÁÁhÁhhhÁÁhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhhhÁÁÁhÁÁhÁÁhhÁÁhÁhÁhhÁÁÁhhÁÁhÁÁhÁhhÁÁhÁhÁhhÁhhhÁhhÁhhhÁhhÁÁhÁhÁhÁÁÁhhÁÁhhÁhhÁÁhÁhhhÁhÁhÁÁhÁhhÁhÁhhÁÁhÁÁhhÁÁhÁhÁhhÁÁhÁhhÁhÁhhhÁhhÁhhÁhÁÁhÁÁhhhhÁhÁhÁhÁhÁhhhÁhÁhÁhhhÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhhÁÁÁhÁÁhÁÁhhhÁhhhÁhÁhÁhhÁhhÁhÁhÁhÁhÁhhÁÁhhÁÁhÁhhhhÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhhhÁhÁhÁhÁÁhhhhÁhÁhÁhhÁhÁhhhÁhÁhhhhhhÁhÁhÁhÁhhhhÁhhÁhhhÁhhÁÁhhhÁhÁhÁhhÁhhhÁhhÁhhhÁhhhÁÁhhÁhÁhhhhÁhhÁhÁhÁhhhÁhÁhÁhhÁhhhÁhhhÁhhhhÁhhÁhÁhÁhÁhÁhhhhÁhhÁhhhÁhÁhhhÁhÁhhhÁhÁÁhÁhÁhhÁhhhÁhhÁhhhhhhÁhÁhÁhhhÁhhhhÁhhÁhhhhhhÁhhÁhÁhhÁhhhhhhÁhÁÁhh•Á¹•¹ÂhÁÁÄÄÄÍÍÑðððððÑððððððÑÑðÑÑÑÑÑðÑððÑððððòðððóðóðóóóóóóóóóóóúóüóóóððððÑáÑÑÍÑÍÍÄÄÄÄÄÄÄÁÁÁÁhhhcccccccXXXTXTT:TTTTThhÁhhhÁhhÁÁhhhÁhhhhÁhhÁh•ÁhÁhÁhÁhhhÁhhhÁhÁhÁhhÁhÁhhÁhhhhÁhhÁhÁhÁhhhhhhÁÁhhh•hhÁhÁhhÁhÁÁhhhhÁhhhhÁhhhhhhhÁÁhhÁÁhhhhhhÁhhhÁhhÁhhhÁhhhÁhhhÁhhhhhhÁhÁhhÁhhhhÁhhÁhÁhÁhhhhhhhÁhhÁhÁhÁhÁhhÁhÁhhhÁhÁhÁhhhhhhhhhÁhhhhhhhÁ•¹•Á„¾Áhhh¹•h¹•hhÁhhhÁhhÁhhhhhÁhhhhÁÁhhÁhhÁhÁhhÁhhhhhhhÁhhhhhhhhhhhhh•hhh¹ÁÁhhÁh¹•hhhhÁhhhÁhhhhÁhhÁhhhh¹•ÁhhhhhhhhhhhÁhhhhhhhÁhhhÁhhÁhhhhÁhh•¹•hÁhhhhhhhÁhhÁhhhh•¹•hhh•hÁ•hhhhhhÁhhÁhhhÁhhhÁh¹•hh•hh•¹¹•¹•¹•hhh¹•h•¹•ÁhhhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁhÁhÁhÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁÁÁhÁhÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁhÁhÁhÁÁhÁÁhhÁÁÁhÁhhÁÁhÁÁÁhhÁÁÁhÁÁhÁÁÁÁhÁhÁÁhhÁhÁÁÁhÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁÁhÁÁhhÁhÁhÁÁÁÁhÁhhÁÁhÁÁhÁÁhÁhÁÁÁhÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhÁÁÁhÁhÁÁhhÁÁÁhhÁhÁÁÁhÁÁhÁÁhÁhhÁhÁÁÁhÁhÁhÁhhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁhÁÁhÁhÁhÁhÁÁÁhÁhhhÁhÁhÁÁhÁÁhÁÁÁhÁÁhÁhÁhÁÁÁÁÁhÁÁÁÁÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁhhÁÁÁhhÁhÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁhÁhÁhhÁÁhÁÁhÁÁhÁhÁhÁhÁÁÁhÁhÁÁhhÁhÁhhhhÁhÁÁhhÁhhhÁhÁhÁÁhhÁhhÁhÁhÁhhÁhhhÁÁÁÁhÁÁhÁÁhhÁhÁÁhhÁÁhhÁhÁhÁhÁhhÁhÁhÁhhÁÁhÁhÁhÁhÁhhhhÁÁhÁhÁhhÁÁhhÁhhÁÁhÁhÁhÁÁhhÁhÁÁhÁhÁÁhhÁÁhhÁhhhÁÁÁhhÁhÁhÁhhÁhÁhhÁhÁhÁhÁÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhÁÁÁhhÁÁhhÁhÁhÁhÁhhÁhÁhhhÁhÁhhÁÁhhÁÁhhhÁhÁhÁhÁhhÁhhhhÁhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁÁhhÁhÁhhÁhhÁÁÁhhÁhhhÁhhÁhÁhÁhhÁhÁhÁÁhhÁhhÁhÁÁÁÁÁhÁÁÁhÁhhÁÁhhhÁhhÁhÁhÁhÁhhÁhÁhÁhhÁÁhhÁÁhhÁÁhhÁhhÁhÁhÁhhÁhhhÁhÁhÁhÁhhÁhÁhhÁhÁhÁhÁhÁhhhÁhhhhhhÁÁÁhhÁhhhÁhhÁhÁhÁhhhÁÁhhÁhhhhhÁhÁhÁhÁhÁhÁhhhÁhÁhÁhÁhhÁhhhhÁhhhhÁhhhhhhÁhÁhÁhhhÁhhÁhhÁhÁhÁhhÁh•¹ÁÁhÁhhÁÁÄÍÄÍÍÑÑÑÑððððððÑÑðÑÑÑÑÑÑðÑÑðÑÑÑÑðïÑðóððððóððóóóóóóóóóóóðóððððððÑÑÑÍÍÑÍÑÍÍÍÍÄÁÄÁÄÁÁÁhhhhhchcccXXXXVTTTTTTTTÁhhÁhÁhhhÁhÁhÁhhÁhÁhÁhhhhÁhhÁÁhhÁhhhÁhÁhhÁhÁhhÁhÁhÁhhhhhhhÁhÁÁÁhÁÁÁÁhhÁhh¹h•ÁhhhhÁhhÁhhhÁÁhhÁhhhÁhÁhÁhhhÁhhhhhÁhÁhÁhÁÁhhhÁhhÁhhÁhÁhÁhhhÁhÁÁhÁhhÁhÁhÁhhÁhhhhÁhhÁhhhhhÁhhÁhÁhhhhÁhhÁhhhhhhhhhÁhÁhÁhÁhhÁhhÁhhhhÁ•¹••¹Á•hhhÁhhhhhÁhhhÁhhhhÁhhÁhhhÁhhhhhÁhÁhhhhÁhhÁÁhhÁhhhÁhÁhhÁhhÁhhùh•Áh•Á•¹•hhhhhÁhhÁhÁhhÁhÁhhÁhhh•¹•ÁhhÁhÁhÁhÁhhhhhhhhh•ÁhhhhhhhÁh•hhhh•¹hhÁhhÁhhhhÁhhhhhhùhhhhh•¹h•¹•ÁhhÁhÁhhÁhhhhhÁhhhÁhh•¹ÁÁ¹„•¹hÁhhhhhÁh•¹hÁhhhhhÁhÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁhhÁÁÁÁÁÁhÁhÁÁhÁÁhÁÁhhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁÁÁÁÁÁÁÁhÁhhÁÁÁÁÁÁhÁhÁhÁhÁhÁÁhhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁÁhhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁhÁhÁhÁÁÁhÁÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁhhÁhÁÁÁÁhÁhÁhÁÁÁhÁÁhhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁhÁhhÁhÁÁhÁÁhhÁÁhÁhÁÁÁÁhÁhÁhhhÁhÁhÁhÁÁhÁhÁhÁhÁÁÁÁÁhÁhhÁÁÁhÁÁÁhÁÁhhÁÁhhÁÁÁÁÁÁÁhÁÁhhÁhÁÁÁÁhÁhhÁhÁÁhhÁhhhÁhÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhhhÁhhÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁhÁhÁhhÁhÁhÁhÁÁhÁhÁhÁhÁÁÁÁhÁhÁhhÁÁhÁÁÁhÁÁhhÁÁhhÁÁÁÁÁhÁhÁÁhhÁhÁÁÁÁhÁhhÁhÁÁhhÁhhhÁÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁÁÁhÁÁhhhÁhÁhÁhÁhÁÁÁhÁhÁÁhhÁÁÁÁhÁhhÁhhÁhÁhÁhÁÁhÁhÁhhhÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁhÁhhÁÁhhÁhÁÁhÁÁhÁÁhhÁhhÁÁÁhhhÁhhhÁhhÁhhhÁhÁhÁhÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁhÁhhÁhhÁhÁhhÁÁhhÁhÁhhÁÁÁhÁhÁhÁhhÁhÁhÁhÁhÁhhhhÁhhÁÁÁhÁhÁhhÁÁhÁÁhÁhÁhhÁÁhhÁÁÁÁhÁÁhhÁhhÁhhÁÁÁhÁhhÁhhÁhhÁhhhÁhÁhÁÁhÁÁhÁhÁhÁhÁÁÁhÁhÁÁhhhhhhhÁÁÁhhÁÁhhÁhÁhhÁhÁÁhhÁhÁhhhhÁhÁhÁhÁhhhhhhÁÁhÁÁÁhÁhhÁhÁhÁÁhÁÁhhÁÁhhÁÁÁÁhÁhÁhÁhhhÁhÁÁÁhÁhhÁhhÁhhÁhhhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁÁhÁhÁhhhhhhhÁÁÁhhÁÁhhÁhÁhhÁÁhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhhÁhhÁhÁhÁhÁhhÁÁhÁhÁhÁÁhhÁhhhÁhÁhhÁhÁhÁhhhÁhÁÁhhhhhhhhÁhhhhhhhÁÁÄÄÄÑÍÑÑÑððððÑÑððÑðÑðÑðÑÍÑðÑðÑððððòïððóðððóðóóóóóóüóóóóüüóóóóðïððÑïÑÑÍÍÍÍÄÄÄÄÄÄÄÁÁÁÁÁhhhccccXXbXXTTTTTTT""TTT"hhhhhÁhÁhhÁhhhÁhhÁhÁhhhÁhhhhÁhhhÁhhhÁhhhÁhhhhÁhÁhhhÁhÁhhhÁhÁhhÁhhhhhhhhhÁhÁ„Á¹•hhÁhÁhhÁhÁhhhÁhhhÁhÁÁhhÁhhÁhhÁhhÁÁhhhÁhhhhÁhÁhhÁhÁhÁhhÁhÁÁhÁhÁhÁhhÁhÁhhhÁhhhÁÁhhhÁhÁhÁhhhÁÁhhhÁhÁÁhhhhhhhÁhÁhÁhÁhhhÁhhhhhÁhÁÁÁhÁhhÁ¹•ÁhÁ¹•ÁhhÁhhÁhÁhÁhÁhhÁhÁhhhhÁhÁhhhhhhhÁhhhhhhhÁhhhÁhhÁhÁhÁhÁhhÁhÁhhhÁ¹•¹•¹•hhÁhhhÁhhhhhhhhhÁhÁhÁhhhh•¹•hhhhÁhÁhhÁhhhÁ•ÁÁhh¹•hÁhhÁh••¹Á••hÁhhÁhhÁhÁhhhÁhhÁhhÁhÁhhh••¹•hhh¹•hhÁhhhhhhÁhÁhhÁhhhhÁhh•„¾¹•hhhhhÁ•¹ÁhhhhÁhhhhhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁÁÁÁÁhÁÁhhÁhÁÁhÁhÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁhÁhÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁÁhÁhÁhÁhÁhÁÁÁÁhhÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhhÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁÁÁhÁhÁÁÁhÁhÁÁhhÁhÁÁÁÁhÁhÁÁhÁÁhÁÁÁhÁhÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁhÁhÁhÁhÁÁÁÁhhÁÁhÁhÁÁÁÁÁÁÁÁhhÁÁÁÁhÁÁÁhÁhÁÁhhÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁhhÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁÁhÁhÁÁhÁhhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁÁhhÁhÁÁhÁÁhÁhhÁÁhhÁÁhhÁhÁÁhÁÁhÁÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁhhÁÁhÁhhÁÁÁÁhÁhÁhÁhÁhÁÁÁhÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁhhÁhÁÁÁhÁhÁhhÁhhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁÁhÁhÁhÁhÁÁhÁhhÁÁhhÁhÁhÁhÁÁhÁÁhÁÁhhÁÁÁÁÁhÁÁÁhÁhÁÁhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhÁhÁhÁÁhÁhÁÁhÁÁhÁhÁÁhÁhÁÁÁhhÁhÁÁÁhÁhhÁhhÁhÁhÁhÁhhÁhÁhÁhÁÁÁÁhÁhhÁhÁhÁhÁÁhhhÁhÁhÁÁhhÁhÁÁhÁÁhÁÁhhÁhÁhÁhÁhÁhhÁhhÁhhhÁÁhhhhÁhÁÁhhhÁhÁhÁhhÁhÁhÁhÁhÁÁhÁhhÁhÁhÁhÁÁhÁhhÁhÁhhhhhhhhhÁÁhÁhhhÁhhhhÁhÁhÁÁÁhhÁhÁhhhÁÁhhhhÁhhÁÁhhhhÁÁhÁÁhÁÁhhÁhÁÁhhÁÁÁhhÁhÁhhhhÁÁhhhhÁÁhÁhhhhhÁÁhhÁÁhÁhhÁÁhhÁÁhÁhÁhÁhÁhÁÁhhhhÁÁÁhhhhhhÁhÁhÁhÁhhhÁhhÁhÁhÁÁÁÁÁhhÁhÁhhÁhÁhhhÁÁhhÁÁhhhhÁÁhÁhÁhÁhhhÁhÁÁhÁhÁhhÁhhÁhhhÁÁhhhhÁÁhÁhÁhÁhÁhÁhhÁÁhÁhÁhhhÁÁÁhÁhÁhÁhÁÁhÁhhhÁhÁhhhhhhÁhhÁhhÁhhÁhhÁÁÄÄÄÍÍÑðÑðÑðððÑÑðÑðÑððÑÑÑÑðÑðÑððÑÑóððððóðóóóððóðóóüóóóóóüóüóððððððÑÑÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhccccXXXXXXXTT:TM"ThÁhhÁhÁhÁhÁhhÁhÁhhhÁÁhhhÁhhhhÁhhhhÁÁhÁhhhÁhÁhhÁhÁhÁhÁhhÁhhhÁhhhÁhhhhhÁhÁhhhÁhhÁhhhÁhÁhhÁhhÁhÁhhhÁhÁhhÁhÁhhhÁhÁhhhhhhhhhhÁhhÁhhhhhhhhÁhhÁhÁhhhhhÁhhÁhÁhhhÁhhhhÁhhhÁhÁhÁhhhÁhhhÁhÁhhÁhÁhhhÁhhhÁhhÁhhhhhÁhÁhhhhhhÁhhÁhÁhhhhÁhhhÁhhhÁhÁhÁhÁhhhhhÁhÁhhhhhÁhhhÁhhÁhhhhhhhhÁÁhÁhÁhhhÁhÁÁhÁhÁhhhÁ•hhhÁhhhhÁÁhÁhhÁÁhhÁhhÁhhÁhhùhÁÁhhÁhÁhhhhhhhÁ•¹¾hhÁhhhÁhÁ•¹hÁh•¹hÁh•¹••ÁhhÁÁhhhhhhÁhhhhh•¹hhhÁh•¹•hhhhhhhÁhhÁhÁhhhhÁh•hhù•¹Á•hh•Á•¹•¹Á••ÁhhÁhhhÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁhÁÁhÁhhÁhÁhÁhhÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁhhÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁhÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁhÁhÁÁÁhÁhhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhhhÁÁÁhÁhÁÁÁÁhhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁÁhhÁÁÁÁhÁhÁhÁÁÁÁhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhhÁhÁhÁhhÁÁhÁÁhÁÁhÁÁÁÁÁhhÁhhhÁhhÁÁÁÁhÁÁhhÁhhÁhhÁÁhhÁhÁhÁÁhÁÁÁÁhhÁhÁhhhÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁhÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁÁhhhÁÁhhhÁhÁhÁÁÁhhÁÁÁhÁÁÁhÁÁÁÁhÁhhhÁhhÁhhÁÁÁÁhÁÁhÁhhhÁhhÁhÁhhÁÁhÁhhÁhÁÁhhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁhÁhÁÁÁÁhÁhÁÁhÁÁhhÁÁhÁhÁÁhÁÁhhhÁÁhhhÁhhhÁhÁhhÁÁhÁhÁÁhhÁÁÁhÁhhÁhhhÁhhÁhÁÁhÁhÁhÁhhhÁhÁhhhhhÁhÁhhhÁhÁhhhÁhÁhhÁhÁÁÁhÁÁÁÁÁhÁhÁhÁhÁhÁhÁhhhhÁÁhhhÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁhhhÁhÁhhhhhhÁhÁhhÁÁhÁÁhÁhhÁÁÁhÁhhhhÁhhhhÁhÁhÁÁhhhÁhhÁhhÁhÁhhÁhÁÁhhhÁhÁhhÁhÁhhhhhÁhÁÁhÁÁÁÁhÁhÁhÁhÁhÁhÁhhÁÁÄÄÍÍÑÑÑðÑðÑðÑÑÑððÑÑðÑÑðÑÑÑÑÑÑðÑÑÑððððððóðóðúóóðóóóóüóüüóðóóðóððÑÑðÑÑÑÍÍÍÍÄÄÄÄÁÄÁÁÄÁhhhhccccXXbXXXTTTTT:T:TTM"hhhÁÁhÁhhÁhÁhÁhÁhÁhhÁhÁhhÁhhhhÁhhhhhhhÁhÁhhhÁhÁhhÁhhÁhÁhÁhhhhhhhhhÁhÁhÁhÁhhhhhhÁhÁhhhhhÁhhÁhhÁÁhhhhÁhhhhhhÁhÁhÁÁhÁhhÁhÁhÁhÁhhhÁhhhhÁhÁhhhÁhÁhÁhhÁhhhÁÁhhhÁhhhÁhhhhhhhhÁhÁhhÁhhÁhhÁhÁhÁhhhhhhhhhhhhÁhÁhÁhhhÁhhhhhhÁhhhhhÁhhÁhhÁhÁhhhÁhhhhhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhÁhhhhÁhÁhhhÁhhÁhÁhhÁhhÁÁhhhÁhhhÁhÁhhhhhhÁhÁhhhÁhÁhhÁhhÁhÁhhhhhhhhhhhÁhÁhÁhÁh„¹•hhÁhÁhhhhhhhhÁhhÁhÁhh¹•hhhhhhÁhÁhÁhÁhÁhÁhhÁhhÁ•¹ÃhhÁhÁhÁhÁhhÁhhÁ•hÁ¹•hÁhhhhÁ¹•h¹•hhhhhh¹•ÁhhÁhÁhhÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁhÁÁhÁhÁhÁhÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁÁÁhhÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁhÁhhÁÁÁhÁÁÁhÁhÁÁhÁÁhÁÁhÁhÁhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁÁhhÁÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁhhÁÁÁhÁÁhÁÁÁhhÁÁhÁhÁÁhÁhhÁhÁhhÁhhÁhhhÁhÁhÁÁÁÁhÁhÁÁÁÁÁhhÁÁhÁÁhÁÁhÁÁhÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhhhÁhÁÁhÁÁÁhÁhÁÁhÁÁÁhhhÁÁhhÁÁÁhhÁhÁhÁhhÁÁhhÁhÁhÁhÁhhÁÁhhÁhÁhhhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁÁÁhÁhhÁÁhÁÁÁhÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁhÁhÁÁhhhÁhÁhÁÁhÁÁhhÁÁhÁÁhÁhhÁÁhhÁÁÁhhÁhÁhÁhhÁÁhÁhÁÁhÁhhÁhÁhÁhhhÁhhhÁhÁhÁÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁhhÁhÁÁhÁÁhÁhÁhÁhÁhÁhÁhhhÁhÁhÁÁhhhÁhÁhÁhÁhÁhhÁÁhÁhÁhÁhÁÁhhÁÁÁhÁhhÁhÁhhhÁhhÁhÁhÁhÁhÁhhhhÁhhhhhÁhÁhÁÁhÁhÁhÁÁhÁhÁhhÁÁhÁhhÁhÁÁÁhÁhhhÁhhÁÁÁÁÁÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁÁÄÄÄÍÍÑÑðÑððÑðððÑðÑððÑÑÑÑÑÑÑðÑððððÑðððïððóóðóóóóóóðúóóóüóóóóóððððÑÑÑÑÑÍÍÍÍÍÄÄÁÄÄÁÁÁÁÁhhchccccbbXTXXTTTTT"hÁÁhhhhhÁÁÁhÁhÁhhÁÁhhÁÁhhÁhÁhÁhÁÁhhhÁhÁhhhÁÁhhÁhÁhhÁhhÁhhhhhhhhhhÁhÁhhÁÁhhhÁhÁÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhhÁhÁhÁÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhÁhhhhhhhÁhÁhÁhhhÁhÁhÁhhÁhÁhhÁÁhhhhhÁhhhhÁhhhÁhÁhÁhhhÁhhhhhhhhhhhhÁhhÁÁhhhhÁÁhÁÁhhhÁhÁhhÁhhÁhÁhhhhhhhhÁhÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhÁhhhhhÁhÁhÁhÁhhhÁhhhÁhhÁhÁhhhÁhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhÁhhhhÁhhhÁhÁhhÁhÁhÁhÁhhÁhÁhÁhÁhhÁhhÁhhhhÁhhhÁhÁhÁhÁhÁhhÁhhÁhhùhhÁhhhhÁhhhhhhÁhÁùÁ„¾hÁhÁhÁhhhÁhhhÁÁhhhhhÁhhhhhÁhhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁhÁÁhÁÁÁhhÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁhÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁhÁÁhhÁÁhÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁhÁÁÁhÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁhhÁhhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁhÁÁhhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁhÁÁÁÁÁÁhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhhÁÁhhhhÁhÁÁhÁÁÁÁhÁÁhÁhÁÁhÁÁhhÁÁhÁÁÁhÁÁÁÁhhhÁÁhÁÁÁÁÁÁÁhhhÁÁÁÁÁhhÁÁÁÁhhÁÁÁÁhÁÁhhhÁÁÁhhhÁÁÁhÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁhhÁÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhhÁhÁhhÁhÁhÁÁhÁhÁÁhÁhÁÁÁhÁÁÁhhÁÁhÁÁhÁÁÁÁÁhhhÁhÁÁÁÁÁÁÁÁhhhÁÁÁÁÁhÁhÁÁhÁhÁÁÁÁhÁhÁhhÁhÁhÁhÁhÁhÁÁÁÁhÁhÁÁhÁÁhÁhÁhÁhhÁÁÁhÁhÁÁhÁhÁÁhÁÁhÁhhÁhÁhhÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁhÁhhÁhÁhÁhÁÁhÁÁhhhÁÁhÁhÁÁÁÁhhhhÁÁÁhÁhhÁhÁhÁhhÁÁÁhhÁhhhÁhÁhhhÁhÁhÁÁÄÄÄÍÍÑÑðððÑðÑððÑðÑÑÑÑÑðÑðÑððÑðÑÑóÑððóðóðóóóðóðóóóóóóóóüüóóðóðòðïÑÑÑÍÑÍÍÍÍÍÍÄÄÄÄÄÁhhhhhhcccccbXXXXXXTTTTTT:hÁÁhÁÁÁÁhhhÁhhÁÁhhhÁhÁÁhÁhhÁÁhÁhÁÁhÁhÁhÁhÁhhÁhhhÁhÁhÁÁhÁÁÁhÁhÁÁhÁhÁhhÁhÁhÁhÁÁhÁÁhhhÁhÁÁÁÁÁÁhÁhhhÁhÁhÁhhÁÁhhÁhhÁhÁhÁhhhhÁhÁhhÁhhÁÁÁhÁhÁhÁhÁhÁhhÁÁhhhÁhÁÁhÁhhÁhhhÁÁhhÁhhhhhÁhÁhhhhÁÁÁhhÁhÁÁÁhhÁhÁhÁÁÁhhÁhhÁhÁhÁhÁhhhhÁhhÁhÁhÁhÁhhhÁhÁhÁhhÁhÁhhÁhhÁhhhÁhhhhÁÁhhÁhhÁhÁhÁhhÁhhhhÁhhhÁhhhhhÁhÁhhhhÁhÁhÁÁhÁhhÁhhhhhhhhhÁhÁhhÁhÁhÁhhhÁÁhÁhÁhhÁhhÁhhÁhÁÁhhhhÁhhÁhÁhÁÁhhhhÁhhÁhhhÁhhhÁhhhÁhhhÁhhhÁhÁhhhhhÁhÁhÁhhhÁhÁhhhhhÁhhhhhÁhÁhhhÁhhhhÁhhÁhhhhhhhhhhhhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁÁÁhÁÁhÁÁÁhÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁhÁÁÁÁÁhhÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁÁhÁÁÁÁÁhÁhÁhÁÁhÁÁhÁhÁhÁÁhÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhhÁÁÁhhÁhÁÁhÁÁhÁhÁÁÁhhÁhÁÁhÁÁhÁÁÁÁÁÁhÁhhhÁhÁhÁhÁÁhÁÁÁhÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁhÁhÁÁhÁhhÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁhhÁÁÁhÁhhÁÁhÁÁhÁhÁÁhÁhÁhÁÁhÁÁÁhÁhÁÁÁhÁhhhÁhÁÁhhÁhÁhÁÁhÁhÁÁhÁhÁÁÁÁhÁhÁÁÁÁhÁhhÁhÁhhÁÁÁÁÁhÁÁhÁÁÁÁÁÁhhÁhÁhÁhhÁÁhhhÁhÁhÁhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhÁhÁhÁÁhÁÁhÁhÁÁhhÁhÁÁhÁÁÁÁÄÄÍÍÑÑÑðÑððððÑðÑÑðððÑÑðÑÑÍÑÑðððÑÑÑððððóððððóóóðóóóüóüüúóóóóðððððÑÑÑÑÍÍÍÍÍÄÄÍÄÄÄÁÁÁhÁhhhhcccbcXXXTVTTTTTTTTT::hhhÁÁhÁhhÁhhÁhhhÁhÁhÁhhÁÁhÁhÁhhÁhÁhÁÁhÁhÁhÁÁhÁhhhÁhhÁhÁÁÁhÁhÁhhÁÁÁÁhhÁhhhÁhhhÁhhhÁhÁhÁhhhÁhÁÁhhÁhÁhÁhhÁhÁhÁhhÁÁÁhÁhÁhÁhÁhhÁhhÁÁhÁhhÁÁhÁhÁhhhÁhhhÁhÁhÁhhÁhÁhhÁhÁhhÁÁhÁhÁÁhÁÁhÁhhhhÁhhÁhÁÁÁhÁÁhhÁÁhÁÁhhÁhhÁÁhhhÁhhhhhÁhÁhÁhÁhÁÁhhÁhÁhÁhhÁhÁhÁhhhÁhÁhÁhhÁhÁhhÁhhÁhÁÁhhÁhÁÁhhÁhhhÁhhÁhÁhÁhhÁÁhhÁhÁhhhhÁhÁhhÁhÁÁhÁhhhhÁhhÁhÁhÁhhÁhhhÁhÁÁhhhhhhÁhhhhhhhhÁhhÁhhhÁhhÁhhÁhhÁhhhÁhÁhhhhÁhÁhÁhhhÁÁhhhÁhhÁhhÁhhÁhÁÁhhhhhhhhhÁhhÁhhhÁhÁhhÁhhÁhÁÁhÁhÁhÁhÁhÁhhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁÁÁÁhhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁhhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁhÁhhÁÁÁÁhÁhÁÁhÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁ•ÁhhÁÁÁÁhÁhÁÁhÁÁhÁhÁhÁÁhhÁhÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁÁhÁhhhhÁÁÁhhÁÁhhÁÁÁhhÁhÁÁhÁÁÁÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhhÁÁ•ÁÁhhÁhhÁhhhÁhÁÁhÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhhÁhÁÁhÁÁÁhÁÁhÁÁhhÁhhhÁÁÁhhÁÁhhÁÁÁhhÁhÁÁhÁhÁÁÁÁhhÁhhÁhÁhÁhÁÃÁÄÍÍÍÑðÑðððáïÑðÑÑððÑÑÑÑÑÑÑÑÑððÑððððððóðòðóðóóðóóóóóóüóóóüóóðððððïÑÑÑÍÑÍÍÄÄÄÄÄÄÁÁÁÁÁÁhhchcccbXXXXXTTTTTTTTT¹•hÁhÁÁhhhÁÁhÁÁhhÁhhhÁhhÁhÁhhÁhÁÁhÁÁhhÁÁÁÁhÁÁhhÁÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhhÁhÁhÁhÁhÁÁhÁhÁhÁhhhÁhhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁhÁÁhÁÁÁhhhhhÁhhÁhÁhÁhÁÁhhhÁhhÁÁhhÁhhhÁhhÁhÁhhÁhÁÁhÁÁhÁhÁÁhÁÁÁÁhÁÁhhÁhÁhÁhÁhÁhÁhÁÁhÁÁÁhÁhhÁhÁhÁhÁÁhÁhÁhÁhhhÁhhÁÁÁhhÁÁhhÁÁhhhÁhÁhÁhÁÁÁÁhÁhhhhhÁhhhÁhhÁhÁhÁhhÁhhÁÁhhÁhhhÁhhÁhÁhhhÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁÁhhÁhÁhÁhÁhÁhhÁÁÁhÁÁÁhÁhhÁhhÁhÁhÁÁhhÁhÁhhhÁhhÁÁÁhhÁÁhhÁÁhÁhhÁhÁhÁhÁÁÁhÁhhhhhhhhhhhhÁhhÁhhhÁhhÁhhhÁhhhÁhhhhÁhhÁhhÁhÁhhhÁÁhÁÁhÁhhhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁ•ÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁ•ÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁ¾ÁÁÁÁÁÁÁÁÁÁÁ¾ÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁ¾ÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁ¾ÁÁÁÁÁ•ÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁ¾ÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁh¾ÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁ•ÁÁÁhÁÁÁÁÁÁÁ•ÁÁhÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁÁhÁÁhÁÁ¾ÁÁhÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁhÁÁÁÁÁÁÁhÁhÁhhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁhÁÁÁÁh•ÁÁhÁhÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁhÁhhÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhhÁhÁÁhÁ•¹ÁÁÄÄÍÍÍÑÑÑóðïïÑÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑðððððððððóððóóóóóóóóóóóüüóóóóóðððáðÑðÑÍÍÍÍÍÍÄÄÄÄÄÄÁÁhhhhcccccbbXXXXTXTTTTTTTThÁhÁhÁhÁÁhÁhhÁÁÁhhÁÁhhÁhÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁhÁÁhÁÁÁhÁhhÁÁÁhhÁÁhÁhÁÁÁhÁhÁÁÁhÁhÁhÁÁhÁhÁÁÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁhÁhÁhÁÁhhÁhÁÁhÁhhhÁhÁhÁhhÁhhhÁhhÁhhÁhhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhÁÁhÁhhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhhÁÁÁhÁhhhÁhÁhÁhÁÁhhÁhhÁÁhÁÁhÁhhÁhhhÁÁhÁÁhhÁhÁhÁÁhÁhÁhhhÁhÁhÁhÁhÁhhÁhÁhÁhÁhhÁhÁhhhÁhhÁhÁhÁÁhÁhÁÁhÁhhhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhhhÁhÁhÁÁhÁhhÁhhÁÁhÁÁhÁhhÁhhhÁÁhÁhÁhhÁhÁhÁhÁhÁhhhhÁhÁhÁhhÁhhÁÁhhÁhÁhhÁhÁhhhÁhhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhÁhÁÁÁÁhÁÁÁÁhÁÁÁ•¹•ÁÁÁÁÁÁÁhÁÁÁ„hÁÁ•¹ÁÁ•ÁÁÁhhÁÁÁ•¹ÁÁÁÁÁ¹ÁÁÁÁÁÁÁ„¾ÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁ•h¹•ÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁ„¾ÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁ¾ÁhÁÁ¾ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁ„¾ÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁ„¾Á¾ÁÁhÁhÁÁhÁhÁhÁÁ¹•ÁÁÁÁ„¾ÁÁ¹ÁÁÁ„¾hÁÁÁÁÁÁ¾hÁ„¾ÁÁÁ¹•ÁÁ¹•ÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁhÁÁÁÁ„¾ÁÁÁÁÁÁÁ„¾ÁÁ„hÁÁÁ„¾ÁÁÁÁÁÁhÁÁÁ„¾ÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁ„¾hÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁ„¹ÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁ„¾ÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁ„h¾ÁÁÁhÁÁÁÁ„¾ÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁ¹•ÁÁÁhÁÁÁÁÁÁ¾ÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁh„¾Á„h¾hÁhÁÁÁÁÁÁhÁÁÁhÁÁÁ•¹•ÁhÁÁÁÁÁÁÁhÁhÁÁÁÁÁ¹ÁÁÁ„¾hÁÁÁÁÁÁÁÁhÁÁhÁ„ÁÁÁh•¹ÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁ¹ÁÁhÁÁÁÁhÁÁÁÁÁ¹•ÁÁÁÁÁÁÁÁÁÁ¾hÁÁÁÁhÁhÁhÁÁÁÁÁ¹ÁÁÁhÁÁÁÁÁ„¾ÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁ„¾ÁÁ¹•ÁÁÁÁÁÁÁÁhÁ¾hÁhÁÁ•h¹ÁÁÁhÁ¹•Á¾ÁÁÁÁÁÁÁÁÁÁÁÁ•h¾ÁÁ„¾ÁÁ„¾ÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁ¹•ÁÁÁhÁhÁÁhÁhÁhÁ•¹•Á¹•Á¾ÁÁÁ•¹•Á¹ÁhÁhÁÁÁÁÁhÁ„¾ÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁh„¾ÁÁhÁÁÁÁ•¹•ÁÁÁÁhÁÁÁhÁÁhÁÁ•¹•Á¹•ÁÁ¾hÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁ„¾hÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁ¹ÁÁhÁÁÁÁÁÁÁÁhÁ¾hÁ•¹•ÁhÁÁÁÁhÁÁÁÁÁ„¾ÁÁÁÁÁÁÁÁÁÁ•h¾ÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁ„¾Á¹•¹ÁÁ•hhÁhhÁ¹•ÁÁ¹•ÁÁÁhÁÁÁ¹ÁÁÁhÁÁÁ¾ÁÁÁhÁÁÁhÁÁhÁhÁ„¾hÁÁÁÁhÁÁÁÁhÁÁhhÁÁÁÁhÁÁÁÁhÁhÁÁ„¾ÁÁÁÁhÁÁhÁÁÁÁhÁÁÁÁ„¾ÁÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁ„¾hÁÁÁÁÁhhÁhhÁÁÁÁÁÁÁ¹ÁÁhÁÁÁÁ¹ÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁhÁhÁÁÁhÁÁÁÁhÁÁhhÁÁÁÁhÁÁÁÁhhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhhÁhhÁhhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁ¹ÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁhÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁÁhhÁ¹ÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁÁ¾ÁÁÁÁÁÁÁÁÁhÁÁhÁÁhhÁhhÁhÁÁÁhÁ•¹hÄÁÄÄÑÑÑÑÑððÑóðððÑÑðÑÑÑðÑÑÑÑÑðÑÑðÑðáïððóððóðóðóóðóóüóóüüóóóðóððððïðÑÑÍÑÍÍÍÍÄÄÄÄÄÄÁÁÁÁhhhhhcccXbbXXXTTTTTTThÁhÁÁÁÁhÁh¾hÁÁhÁÁhÁ•¹•ÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhÁÁÁÁhÁÁÁÁhhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁhhÁÁÁÁhÁÁhÁhÁhÁhÁhhÁÁhÁÁÁÁÁÁhÁÁÁhhÁhÁÁhhhhhÁhÁÁÁhÁÁÁhÁÁhÁÁhÁhÁÁÁhÁhÁhhÁÁÁhÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhÁÁhÁhÁhÁÁhhhhÁhÁÁÁÁhhÁhÁÁhhÁhÁhÁhhÁÁhhÁÁhÁÁhhhÁhhhÁÁhÁÁÁhÁÁhÁÁÁhhhÁhÁhhhhhhÁhÁhÁhÁhÁhÁhÁÁhÁhhÁhÁhÁhÁhÁÁÁhhÁhÁhhÁhhhÁÁÁhÁhÁhhhÁhhÁÁhÁhÁhÁ•hhhhÁhÁÁÁÁÁhÁÁÁÁhhÁh¾hÁhÁhÁÁhÁhhÁÁhhhÁhhhÁ•ÁhÁÁhÁhÁÁÁÁhhÁhÁÁhhhhhhÁÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁÁÁhhÁhÁhÁhÁhhÁhÁhÁhÁhhhÁhhÁhÁhhhhchhdhhhhhhchhdhhhdhhhhhhhfhhhdhhhdhdhhhhcfhhhdhchdhhhfhdhhhhchhhchhhchhdhhhdhdhhhdhhhhhhchhchhgfhhhdhdhhhfhhhchhgfhhhdhhhhhdhhhhdhhhfhhhfhhhchhhhdhhdhhhhhdhhhfhhhchhhhchhhhfhchdhhhfhhhfhhhhhhhfhhhfhhhdhhhfhhhfhhhdhfhgfhhdhhhhhfhhhfhhhhhhdhhhchhchdhhhfhhhhhchhhchhhhhchhdhhhdhhhhhhhhhhhfhhhdhhhhhhcdhhhhchchhdhhhhhdhhchhhchhhchhdhhhdhhhhhdhhhfhhchhchhchhdhhhdhhhfhhhchhhdhhhdhhhhhhhhhdhhdhdhhhdhhhchhhdhhhhhdhhhfhhhdhhhchhfhhdhhhfhchdhhhhhfhhhhhhhhhfhhhdhdhhhfhhhdhhhhhfhhhchhgfhhhhhfhhhfhhhhhhchhhchhchdhhhchhhhhchhchhdhhhgfhhhdhhhhhhhdhhhfhhhfhhhdhhhhcfhhhhchchhdhhhfhhhhgfhhchhhchhhhfhhhhhdhhhfhhhhchhchhhdhhhdhhhfhhhdhhdhgfhhhfhhhhhhhhhdhhfhhhfhdhhhchhhchhhhhdhhhdhhhfhhhchhfhhdhhhhchchhfhhhdhdhhhfhhhdhdhhhhhhhfhdhhhhhhhfhhhdhhchhhhhhdhhhfhhhhhhchhhchhchdhhhdhhhhhchhchhhhhhchhhhdhhhhhhhhhhhhhhhfhhhdhhhhcdhhhhchchhdhdhdhhhhchhhchhhchhdhhhdhhhdhhhhhdhhdhhdhhchhdhhhfhhhfhhhchhhdhhhfhhhhhhhhhdhhhhdhhhhhchhdhhchhhhhdhfhdhhhfhhhchhhhchhhhhchchhdhhhfhhhfhhhdhhhfhhhfhhhdhhhfhhhfhhhdhhdhhdhfhhhhhfhhhhhhhhchhhchhchdhhhchhhhhchhchhhhhhchhfhhhdhfhhhdhhhdhhhdhhhdhhhhcdhhhhchchhdhhhdhhhchchhchhhchhfhhhfhhhdhhhfhhhhchhchhhdhhhdhhhdhgfhhchhchhhchchhhchdhhchgfhhhchhchchhhcchhdehchgfhhchhchhdhchhhchdhhchgfhhhhchgfhhhhchhchdhdhchhhhchchhchhchhhfhchhhhdhhhchhdhhfhhhdhdehchchgfhhhdhchhhdhdhhhfhhhchhhhcchhhfhchchhhdhhchhchfhhhchhfhhdhchchgfhchdhhdhhhchhhhdhdhhhhhhÁÄÄÄÍÑÑÑÑðÑÑððððÑÑÑÑðÑððÑÑÑÑóÑðÑïðÑððïóððóóóðóóóóóüóüóüúóóóóóððððÑÑÑÍÑÑÑÍÍÍÍÄÄÄÁÄÁÁhhhÁhhcccXbbbXXTTTT"TTTcdhhgfhhhfhchchhhhhhhchhdghggfhchgfhhfhhchchchfhchhfhchcdhhchhchchdghchchchghchhhdhhchchdhhhchhchchdhchhhchchhfhchcchdhhgdghchhchddhhdhhhchchdhhhchdhfhhchhchhhchchgfhhhchchchdgcdhchchcdhhchhhchchghcgdhchgfhchchhchchcchchchhhchddhchchchchdhhchcchdhhchdgdhdhchdhhddhhchdhchhhchdhhchhchhhcchchchchchhfhchhhhchhhhchchhhhhhchchhchchhhhfhhcfhchhhchccdhfhchhhhcdhdhchdhdhchchchchfhhhhcfhchhchchchdhchchfhchdhchchhhgfhchcchhcfhfhdhfhchchhchXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXUXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXÁÄÂÄÄÍÍÑÑðððÑðÑÑðÑÑðÑðÑÍðÑÑÑÍðððÑððÑóððóðòððóóðóóóðóóóóúóóóóóðððóÑÑððÑÑÍÍÍÄÄÄÄÄÄÁÁÄÄÁÁhhccccccbbXTXTXTTTM"T"XXXXXXXXXXXXXXXXXXXXXXXXXXX^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXWXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTWTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTWTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTWTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTTTTXTXTTXTTXTXTXTTXTXTTXTXTTXTTXTTXTTXTXTXTTXTTXTTXTXTTXTXTXTTXTTXTXTXTXTTXTTXTTXTXTTXTXTXTTXTXTTXTTXTXTTTXTTXTTXXÁÁÁÄÍÍÍÑÑðððÑðÑÑðÑðÑÑðÑÑÑÑÑÑÑððÑÑðÑÑóðððððóðóðóóóóóüóúóóüóóóóóððððÑðÑÑÍÍÍÄÍÍÄÄÄÄÄÁÁÁÁÁÁchhccccXbXXXXTT"T"TTT""XTTXTXTXTXTXTXTTTTTXTTXTXTTTTXTXTTXTTXTTXTXTTXTTXTTXTTXTXTTXTTXTTXTXTTXTXTTXTTXTTVTXTXTTXTTXTTTXTXTTXTXTXTTXTXTTXTTVTXTTXTXTTXTTXTXTTXTXXTTXTXTTTTXTXTTXTXTTXTTXTTXTTTTTXTXTTXTTXTTXTTXTXTTXTTXTTXTXTTXTXTTXTTXTTXTXTXTTTXTTXTTXTXTTXTXTXTTXTXTTXTTXTXTTTXTTXTTXTXTTXTXTXTTXTXTTTXTXTTXTTXTTXTTXTTXTTTTTTTTTTTTTXTTTTTTXTTTTTTTXTTTTXTTTTTTTTTTTTTTTXTTTTTTTTTTTTTTXTTXTTTTTTTTTTTTTTTTTTTTTXTTXTTXTTTXTXTTTXTTXTTXTXTTXTTXTXTXTTTXTTXTTTXTXTTXTXTXTXTXTXTXTXTXTXXXXTXXTXTXTXTXTXXXXXXXXXXXXTXTXTXTXTXTXXXXXTXXTXXTXTXXTXTXTXXTXXXXXTXXTXTXTXXXTXTXTXTXTXWXXXXTXTXTXTXXTXTXXTXWXTXXTXXXXXTXTXTXTXTXTXUXTXTXTXXXTXTXTXXTXTXTXTXTXTXTXTXUXTXTXXXTXTXTXTXTXXTXTXTXTXTXXTXTXXXXXXXTXXTXXXTXTXXTXXXXTXTXTXTXTXWXTXXTXTXTXXTXXXXXTXTXTXXXTXTXXTXTXTXTXTXTXTXTXTXTXXXXXTXTXTXTXTXTXTXTXVXTXTXTXTXTXXXTXTXTXXTXVXTXXXXTXXTXTXXXXTXTXTXTXTXTXTXTXTXTXVXTXTXWXTXXXVXTXTXVXXXTXTXTXTXTXXTXTXXTXXXXXTXTXXXXXTXTXXTXTXXTXTXTXTXTXTXTXUXXXXXTXTXXXTXTXTXTXXXTXTXXXTXTXXTXTXTXTXTXTXXTXTXXTXXXXXTXXTXTXTXXXXXTXTXXXXTXTXTXXXXXTXTXTXTXTXXXXTXTXTXTXXTXUXTXTXTXTXTXTXWXTXTXTXTXTXTXTXUXTXTXTXTXVXTXTXXXXTXTXTXTXTXVXTXTXWXTXTXTXTXTXTXTXTXXXXXTXTXTXTXTXTXTXXXXTXTXTXXXXTXTXXTXTXUXXTXTXTXXXXXXXTXTXTXWXXXXXXXXXXXTXTXTXTXTXTXTXTXTXTXTXVXTXTXTXTXXTXXTXWXTXXTXXTXXTXTXTXTXTXXXTXTXTXVXTXTXTXTXTXTXTXTXTXXTXTXXTXXTXTXTXWXXXXXXXTXTXTXTXTXTXXXTXXXXXTXTXUXTXXXXTXTXTXXXXTXTXTXTXTXTXTXXTXXTXTXTXTXXTXTXTXTXTXTXTXTXTXTXTXTXXXXXTXTXTXXTXTXTXTXTXTXTXTXWXTXTXXXXXTXTXXTXTXXTXTXVXTXTXTXTXTXXXXXTXXXXXXXTXTXTXTXTXTXTXTXTXXTXVXTXXTXUXTXXXXTXTXVXTXTXTXWXXTXTXTXTXXXXXTXXXTXTXXXXXTXTXTXTXTXTXXXTXXTXTXXTXTXTXTXTXTXXXTXXTXTXTXXTXTXTXXXTXXTXXXXXXXXTXWXTXWXXTXXTXXTXVXTXTXTXXXXTXTXTXTXXXXXTXTXTXXTXTXTXTXTXTXTXVXXXTXTXTXTXXXTXTXTXTXVXTXTXTXTXTXTXTXXTXXTXTXXXTXXXXXXXXTXVXTXTXXXTXTXXTXTXTXTXXTXXTXXXXXTXXTXTXXTXXXTXTXTXXXXTXTXUXTXTXTXTXTXTXTXTXVXTXTXTXXXXXTXTXTXTXTXTXTXXXXhÁÁÄÍÑÍÍÑðÑðððÑððððÑððððÑÑÑÑÑÑðÑÑððððððððððóóóóóóóóüóóóóüüüóóóóððÑÑÑÑÍÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhÁhhcccXcXXXXXTTTT"T"TTTTMXXXXTXTXTXTXTXTXXTXTXXXXTXTXTXXXXXTXTTXTXXVXTXTXTXTXTXXXXTXXXXXXVXXXXXXXTXXXXXXTXXXXXXXVTXTXXXTXTXTXXXTXTXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXTXXXXXXXXXXXTXXXXXXXXXXXXXXTXXXXXVXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXTXXXXTXXXTXXXTXXXXXXXXXXXXXXXXXXXXTXTXXXXXXXXXXTXXXTXXXXXXXXXXXXXXXXXXXXXXXWXXXXXXXXXXTXXXXTXXXXXXXXXXTXXXXXXXXXXXXTXXTXXXTXTXXXTXXTXXTXTXXTXXTXTXTXXXTTXTXTXTXTXXTXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXTXXXTXXXTXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXVXTXXXXXXXXXXTXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXTXXXXXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXTXTXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXTXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXTXXXXXXXXXTXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXTXXXXXXTXXXXXXXXXTXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXTXXTXXXXXXXXXXXTXXXTXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXTXXXXXXXXXXXXXTXXXWXTXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXVXXXTXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXTXXXXXXXTXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXTXXXVXXXXXXXXXXXXXTXXXXXXXTXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXTXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWXTXXXXXXXXXXXXXXXXXTchÄÁÍÄÍÍÑððððððððÑðððÑÑððÑÑÑÑððÑðÑððððððððóðóðóðóóðóóóóüóóóóüóððððÑÑðÑÑÑÍÍÍÍÍÍÄÄÄÁÄÁÁhhhhhhhccccXXXXTXTTTMM"TT"WTXXXXXXXXXXXXXXXXXXXTXXXXXXXWXTXXXXXXXXTXXXXXXXXXXXXTXXVXTXVXTXXXTXXTXXXTXXTXXXTXXTXTXXXXXTXXXXXXXTXXXXXXTXXXTXTXTXXTXXTXXTXTXTXXTXXTXVXXTXWXTXTXTXTXXTXXXTXTXTXTXTXTXXXTXXTXXTXVXTXXTXXTXXTXXTXXTXTXXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXXWXTXXTXTXXTXXUXTXXTXTXWXTXWXTXXTXVXTXXWXTXWXTXWXTXWXTXXTXTXTXTXTXXTXXTXVXXXXXTXTXXTXXXXTXXXTXXTXXTXTXTXTXTXXTXXTXXTXTXTXXTXWXTXXWXTXWXTXXTXWXTXTXTXTXTXTXTXTXTXWXTXWXTXXTXXWXTXWXTXWXTXTXTXWXXTXXXXWXTXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXchÁÄÄÄÍÑÑÑððÑðððÑÑÑððÍðÑÑðÑÑÑðÑÑÑðððóðððððòðóðóðóðóóóüóóüóóóóððððððÑÑÑÑÍÍÍÍÍÍÄÄÁÄÁÁÁÁÁhhhchcccXXXXXXTTTT"TTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXbXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXÁÄÁÄÍÍÑÑÑÑððÑðÑðÑÑÑÑÑðÑÑÑÑÑÑðÑðððÑððððóðóððóóóóóðóüüóúóüüóóðóóóððððÑÑÑÍÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhccccccXXXXVTTTT::TT"TXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXbXbXXXXbXXXbXbXXXXXXXXXXbXXbXXXXbbXXXXXXbXXbXbXXXXXXXXXXXbXXXXbXXXXbXXXXXXbXXbbVXXbXbbXXbXbXXXXbXXXbXXXbXXXXXbXXbXXXbXbXXXXXXXXXbXXXbXXXbXXXXbXXXbXXXXbXXXbXXXbXXXXXXbXXbXXXXbXXXbXXXXXXXbXXXbXXXbXbXbXXXXXXXbXXXXbXXbXXXbXbXbXXXXXXXXbXXbXXbXbXXbXXXXbXXXbXXbXXbbXXXXXXXXbXXbXXbXXXbXbXXXbXXXbXXXXXbXXbXbXXXXXXXbXXbXXXbXbXXXXXbXXXbXXXXXXXXXXXXXXXbXbXXbXXXbXXbXXXXbXXXbXXXbXXbbXbXXbXXXXXbXbXXbXXbXXXXXbXXXbXXbXXXXXXXXXbXXXbXXXXbXXXbXXXbXXXXbXXXXXXXbXbXXbXXbXbXXbXXbXXXbXXXbXbXbXbXXXXbXbXXXXXXXXXXbXXXbXXbXXXXXbXbXXbXbXbXbXXXbXXXbXbXXbXXXXXXbXXbXbXXXXbXXXXbXXXbXXXbXXXbXXXXbXXbbXXXbXXXbXXXXXbXXbXXbXXXbXXXbXXXXbXXXXXXXXXXXXXXbXXbXbXXXbXXXbXXbXXXXXXXbXXXbXXXbXXXXbXXXXbXbXXXbXXXXbXbXbXbXbXXXbXXbXXXXbXXbXXXbXXbXXXbXbXXbXXbXXXXbXXbXXXXbXXXXXXXbXXXbXXXXbXXbXXXXXXXbXXXXbXXXXXXXXXXXbXbbXXXXbXXbXXbXXbXbXXbXbXXXbXbXbXXbXXXXXbXXbXXbXXXXbXXbXXbXXXbXbXXXXXbXbXXbXXbXXXXbXbXbXXXbXXXbXXXbXXXbXXXbXXbXXXXXXXXXbXXXXXbXXXbbXXbXbXXXXXbXXXXbXXbXbXXbXXXbXXbXXXXbXXXXXXbXXXXXXXXXXbXXbXbXXbXXbXbXXXXXbXXXXXbXbXXXXXXbXXXXbXbXbXbXXXXbXXbXbXXXXXXXbXXXXXbXXXXbXXbXXXXXXbXXXXXXXXbXbXXbXXbXXbXbXXbXXXXXXXbXXXbXXXXbXXXbXXXbXXbXXXXbXXXbXXXXXXbXbXXXXbXXXXXXbXXXbXXXbXXXXXbXbXXXXbXXXXbXbXXXbXXXXbXXXbXXbXXXXXXbXXbXXXXXXXbXXXXXXXXXbXXbXXXXXXbbXXbXXXbXbXXXXbXbXXbXXXXbXXXXbXbXbXXbXbXXXXXXXbXbXbXXbXXbXXbXXXXXbXXbXXXXXXXbXXbXbXXbXXbXXXbXXXbXXXXbXXbXbXXXXXXXXXXbXXXXbXXbXXXbXbXXbXXXbXXbXXbXXXXXXchÁÄÄÍÍÑÑÑÑðððÑðÑðððÑÑðÑÑÑÑÑðÑÑÑÑÑðððÑðððóððóðóðóóóóóóúóóüóüóóððððÑððÑÍÍÑÍÍÄÍÄÄÄÄÁÁÁÁÁÁhhcccccXcXXXXTTTTTTTTTXXXbXXbXbXbXXbXXXXbXXXXbXbbXXbXXXXbXXbXXXXXXbXXXXXbXXXXbXXbXbXXXXXXbXXXXXXbXXXbXXbXbXXXXXbXXXXbXXXXXXXbXXbXXXbXbXXXXXbXXXXbXXXXbXXXXXXXXbXXXXXXXXbXXbXXXbXbXbXXbXXbXXbXXXXbXXXbXXXXXXbXXXXbXXbXXXXbXXbXXXbXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXbXXXXXXXXXXXbXXXXXbXXXXXXXXXbXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXbXXXXbXbXXbXXXbbXXbXXbXbXXXbXXbXXXXbXXXbXXXXXXXbXbXbXXXbXXXXXXXbXbXbXbXXXbXXXXXXbXbXXXXXXXXXXbXbXbXbXbXbXXXbXXXXXXXbXXXXXXbXbXXbXXbXbXXXXXbXXXbXbXXXbXbXbXbXbXbXXXXbXXbXXbXXbXXbXXbXXXXbXXXXXXXbXbXXXXbXXbXbXXXXXbXXXXbXbXXbXXXXXXbXbXbXbXXXXXXXXXbXXbXXXXXbXbXXXXXXbXXbXXbXXXXXXXXXXbXXbXbXbXbXXXbXXXXXXXXXXXXbXXbXXXXXXbXXXXbXbXXbXXXbXXbXbXXbXXbXXXXXXXbXXbXXXXXXbXXbXXXbXXXXXXXXXXXXXXbXXXXXXXbXXXbXXbXXbXXXXXbXXbXbXXXXXbXbXXbXXbXbXXbXbXXbXXbXXXXbXXXXXXbXXXbXXXbXXXXXXXXbXXXXXbXbXbbXbXXXXXXbXbXbXXXbXXXXXXXXbXbXXXXXXXXXXbXXXXXXbXXXXXXbXXbXbXXXXXXXXbXXXbXXXXXbXXbXbXbXbXXbXbXXXXXXXXXbXbXXXbXXXXXXXXXbXbXXXXXXbXXXXXbXXXbXbXbXbXXXbXXXXXXXbXXbXbXXXXbXXXXXXXXXXXXbXXXXXbXXbXXbXXXXXbXXXXXXXXXXbXbXXbXXXbXXXXbXXXbXXXbXXXXXXXbXXbXXbXXXXXXbXbXXXbXbXXbXXXbXXbXbXXXXXbXXbXXXXbXXXXbXXXbXXbXXXXXXXbXXXXXbXXbXXXXXXXXXXbXXXXXXXXXbXbXbXXbXXXXXXbXXXXbXXXbXXXXXXXbXbXXXbXXXXXXbXbXXXXXXXbXXXXXbXXbXbXXbXXXXXXXXbXXXbXXbXbXXbXXbXXXXXXbXbXbXXXXXbXXXbXXXbXXbXXXXXbXbXXbXbXXXXXbXXXXbXbXXbXbXXXbXXXbXXXXXbXXXXXbXXXXXXbXbXXbXXbXXXXbXXXXXbXXXXXXXXbXXXbXXbXXbXXbXbXXbXXXXbXbXXXbXbXXbXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXbXbXXXXXXXXbXbXXbXXXXXXXXbXXbXbXXXXbXbXXbXXbXXXbXXXbXXbXbXXXXXXbXXXXXXXXXXXbXXXbXbXXbXXbXbXXXbXXXXXXXbXXbXXXbXXbXXbXXbXXXXbXbXXXXXXXbXXXbXXbXbXXXbXXbXXXXXXbXXbXXXXXbXXXXXXbXXXXXXXXXbXXXXXXXXXbXXXXXXXbXXXXXbXXXXXbXXXXXXXbXbXXbXbXXXXXXXXbXXbXbXbXXXbXXXbXXbXXXXXXXbXXbXXbXXbXXbXbXXchÁÄÄÄÍÍÑðÑðððÑðÑððððÑÑÑÑÑÑÑðÍðÑÑÑðððÑðÑððððóðóóðóóóóóóóüüóúóóóððððÑðÑÑÑÍÍÍÄÍÄÄÄÄÄÁÁÁÁhhhhhhcccXbXXXXTTTTT"XbXXbXXXXbXXXXXbXXXbXXbXXXXXbXXbXXXXXXXXXXbXXXbXXXXXXXXXXXbXXXbXXbXbXXbXXXXbXbXXbXbXXXbXXXbXbXXXXXXbXXbXXXXXXbXXXXbXbXXbXXbXXbXbXXbXXbbXXXbXbXXbXXbXXbXXXXXXXXXbXXXXXXXbbXXXXXXXbXXbXXXXbXXbXXXbXXXXXXXXbXXbXXbXbXXbXXXXbXbXXbXXbXXbXXbXXXXbXXXXXXXXbXXbXXbXXbXXXXbXbXXXXXbXXXXXXbXbXbXbXbXbXXXbXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXbXXbXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXbXXXbXXXXXXXXXXbbXbXbXbXXXXXXXXXXXbXXbXXXbXbXbXXbXXXXXXbXXXXXbXXXXXXXXXbXXbXXbXXXXXXbXXXbXXXXbXXXXXXbXbXbXbXXXbXXXXXbXXXbXXbXXbXXbXXbXbXXbXXXXXXXXXXXXXXXbXbXbXXXXXXXbXXXbXXXbXXXbXbXXXXXXXXXXXXbXXXXXbXXXbXXbbXXXXbXbXbXXXXXbXbXbXbXbXXXXbXXbXbXbXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXbXXXXXXbXbXbXbXXbXXbbXbXbXXXbXXXbXXbXXXbXXXbXbXbXXXXbXXcXXbXbXXXXXXXXXXXXbXXXXXXXXXXXbXXbXbXbXbXbXXXbXXXXXXXXbXXbXXXXbXXbXbXXbXXXXXXXXXXXbXXbXXXXbXXbXXXbXbXXbXXXXbXXXXXXXXXXXXXXXXXXbXXXbXXbXXXbXbXbXbXXbXXXbXXXbXbXbXXXXXXbXbXbXXXXXXXXXXXXbXXbXXbXXXXXbXXXbXbXXXXbXXXbXXXbXXXXXXXXXXXbXXXbXXXbXXbXXXbXXbXXXbXXXXXXXXXbXXXbXXbXXXXbXXXbXXXbXXXXXXXbXXbXXbXbXXXbXXXXXXXXXXXXXXXbXbXXXXXXXXXbXXXXbXXXbXXbXXXXXbXXbXXbXXXXXXbXXXXbXXXbXbXXXbXbXXbXXXXbXXXbXXXbXXXXbXXbXXXXXXXXXXXbXXbXXXXbXXXbXbXbXXXbXXXXbXXbXXXXXXbXXXXXXXXbXXXXbXXXXbXXXXXbXXXbXXbXbXXXXXbXXXXbXXXbXbXXbXXXbXXXbXXXbXXbXXXbXXXXbXXbXXXXXXXXXXXbXXbXXXXbXXXbXXbXbXXXXXXXXXXXbXXbXXbXXbXbXXXXXXXXXXXXXXbXXbXXXXXbXXbXbXbXXbXXbXbXXXbXXXXXXXXXXXbXXXXXbXXXXXbXXbXbXbXbbXbXbXbXXbXXbXXbXXXXbXXXXXXbXbXbXXbXbXbXXXXbXXbXXXXXXXXXXXXXXXXXXXXbXbXXXXXXXXXXXXbXbXXXbXXXbXXXbXXbXXbXbXXXXXbXbbXbXXXbbXXXbXXXbXXXbXXXbXXXbXXbXbXbXXXXXXXXbXXXXXXXXXXXXXXbXXXbXXXXbXbXbXXbXXXbXXXXXXXXXXXXbXXXXXbXbXXXXbXbXXXXbXXbXXXXbXXXXXXbXXbXbXXbXXXXbXXXbXbXbXXXbXXXbXXbXbXbXXXXbXbXbXXbXXXXXXXXbXXbXXbXbXXXbXXbXXXbXXXbXbXbXbXbbXXXXXXbXXXXXXbXbXXXXXbXXXXXXXbXXXXXXXbXbXXbXXXbXXbXbXbXXXbXXXXchÄÄÄÍÍÍÑÑðððÑÑððÑÑððÑÑÑðÑðÑÑÑððÑððððððððóòóóóðóðóóóóóóóüóóóóóóðððÑÑÑÑÑÍÍÑÍÍÄÍÄÄÄÁÁÁÁhhÁhhcccccXXXXTTTTTT"TTTTXXXXbXXbXXbXbXXXXbXbXbXbXbXbXbXXXbXXbXXbXbXXbXXXXbXXXbXXXXXXXbXXXXXXXbXXXbXXXbXXbXXXbXXbXXXXXXXbXbXXXXXXbXXcXXbXbXXXXXXXXXXXXbXXXbXXbXXXbXbXXXXXXXXXXXXXbXXXbXXXXbXXbXXXXXXXbXXXXXXXXbXXXXXXbXbXXbXXbXXbXbXbXXbXXXbXXbXXXXXXXXXXXXXbXXXXXbXXXbXXbbXXbXbXXbXXXXXXbXXXXbXbXbXXXbXXXbXXXXXbXXXbXXbXXbXXbXXbXbXXbXXXXXXXXXXXbXXXbXbXXXXXXXXbXbXXbXbXbXbbXbXbXbXXXXXXXXbXbXbXbXXXXXXbXXXXbXbXXbXbXbXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXbXXXXXbXXXXXbXXbXXXXXXXXbXXXbXXXbXXXXbXbXbXXbXXXXXXXbXXXXXXXXbXXbXXbXbXbXbXbXbXXbXbXbXbXXbXXXbXbXbXbXbXbXbXbXXbXXXXXXXXbXXXXXXbXXbXXXXbXbXbXbXXXbXbXbXbXbXbXbXbXbXbXbXXXbXXXbXXXbXXXXbXXXXXXXbXXXXXbXbXXbXXbXbXXXbXXXXXXXXbXXbXbXXbXXbXXXXbXXXbXXXXXbXXbXXbXbXbXbXbXbXbXbXbXXXbXXbXXbXXXXXXXbXbXbXbXbXXXXbXXXbXXbXXXXbXXXXXXXbXXbXXXbXXXbXXXXXXXbXXbXXXbXXbXXXbXXXbXXbXXXXbXXbXXXXXXXXbXbXXXXXXXbXbXbXbXbXXbXXXXXbXbXXXXbXXXXbXXXbXbXbXXXbXXXbXXXbXXbXXXXXXXXbXXXXbXXXbXXXbXXbXbXbXbXbXXXbXbXbXbXXXbXXbXXbXXXbXXXXXXXbXXXXXXXXbXbXbXbXbXbXbXXbXXXXXbXXbXbXbXbXbXXXbXXXXXXbXXbXbXbXbXbXbXbXbXbXXbXXXbXbXXXbXbXbXXbXbXbXbXXXbXXXXXbXXXbXbXXXbXXbXXXbXXXXXXbXbXXbXXbXXbXbXbXbXXXbXXXXXXXbXXbXXbXbXXbXXXXXbXbXXbXbXXXbXbXbXbXXXXbXXXXXbXXbXXXbXXXbXXXbXXbXXXbXXXXXXXbXXXbXXXbXXXXXbXXXXXbXbXXXXX^XXXbXXbXXXXXXXXXXXXXXbXbXbXXbXbXbXXbXXXXXbXbXXbXbXbXbXbXbXbXXXXbXXXXXbXXbXXXbXXXbXXXbXXXbXXbXXXXbXXXbXbXXbXXbXXXbXXXXXXXbXXXXXXXXXXXbXXXXbXbXbXbXbXbXbXXbXXXbXXbXbXbXXbXbXXXbXXXbXXbXXXXbXXXXXbXbXbXbXXXbXXXXXbXXbXXXXXXXXXXbXbXbXbXbXXXbXXbXbXXbXXXXXXXXbXXXbXXbXXXXbXXXbXXbXbXXbXXXbXbXbXbXXXXXXbXbXbXbXXXXXXXbXXXbXXbXXbXXXXXbXXXXXbXbXbXbXbXbXbXbXbXbXbXXXbXXXbXXXbXXXXXbXXXbXXXXXXbXbXXXbXXXXXXXXXXXXXbXXbXXXbXXXXXXXXbXXXXXXbXXXXXXXbXXXXXbXXXXXXXXXXXXXbXXXXXXbXXbXbXbXXXbXbXbXbXbXbXXXbXXXbXXXXXXXXXXbXXbXXXXXXXXbXXXXXXXXXXXXXXbXbXXbXXXbXXXXbXbXXbXbXbXbXXbXbXbXXbXbXbXXbXbXbXbXbXXXXXXbXXbXbXXXbXbXXXXXX^¹ÂÄÍÄÍÍÑðÑððððððÑÑÑðððÑÑÑðÑÑÑÑðÑðÑððÑððïóðóúðóóóóóóóóóóüóóóóóóóððððÑÑÑÑÍÍÍÍÍÍÄÁÄÁÄÁÁÁhhhhhccXccXXXXXXTTT:TT:XXbXXbXbXbXXXbXbXXbXXXbXXbXXXbXXXXXXXXXbXXXXXXXXbXXbXXbXbXXbXXXbXXXXXXXbXXXbXXbXbXbXbXXXXbXXbXbXXbXXbXXXXXXXXbXXbXXXbXXXbXXXXXXXXXXXXXXXXXXXbXXbXXXbXXXXXXbXXXbXXXXXXbXbXbXXXbXXXXbXXXXbXbXbXXbXbXXXbXXXXbXXbXbXbXbXbXXXbXXXbXXXbXXXXbXXXXXXXbXXXXXbXXXbXbXbXbXbXXXbXXbXXbXbXbXbXbXbXbXbXbXbXXbXXXXXXXXbXXXXXXbXXbXXXXbXXbXbXXbXbXbXbXXbXXbXbXXXbXXXXXbXXXbXbXbXbXbXXXbXXXbXbXXXbXXXbXXbXbXXbXXbXbXbXbXbXXXbXXXbXXbXXbXbXbXXXbXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXchÁÁÄÄÍÑÍðÑÑððððððÑÑÑðÑÑðÑðÑÑðÑðÑðððððððððððóðóóðóóóüóóóóóóóóðððððÑðÑÑÑÑÍÍÄÍÍÄÍÄÄÄÁÁÄÁÁhhchccccccXXTXTTTTTTTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcÁÁÄÄÍÍÍÑÑððÑðððÑðÑððÑÑðÑÑÑðÑðÑÑÑðððÑððððððïóóóóóðóóüóóóóóóóóóóððððÑÑÑÑÍÑÍÍÍÄÍÄÄÄÄÁÄÁÁhhchchcccXXXXXXVT"TTTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcXc^cXdcXcXcXcXcXcXcXcXcXcXXcXcXcXcXcXcXcXcXcbc^cXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXccXcXcXcXccXcXcXcXcXcXcXccXcXXXcXcXXcXcXcXcXcXcXcXcXcXccXcXcXcXcbcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXccXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXcXcXcXccXcXcXcXc^ccXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXXcXXcXcXcXccXcXcXcXccXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXccXcXcXcXcXccXcXccXcXXcXcXXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXcebcXcbc^cXcXcXcXcXcXc\dXcXcXcXcXcXcXc\cXcXcXcXcXcXcXcXcXcXcXcXcXcXXcXcXcXccXcXcXcXcXcXcXcXcXcXccXccXcXcXcXcXXcXcbcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXXcXccXXcXfXcXcXcXcXcXcXcXcXcXcXcbcXcXcXcbcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXccXcXccXcXcXcXcXcXcXcXcXcXc\cXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcchÁÁÄÍÑÍÑÑðÑÑððððÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑððððÑóðóðððóóðóóðóóóóóóüüóóóóóððððÑÑÑÍÑÑÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhhcccbXXXXXTTTTTTTTTcXcXcXcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXXcXcXcXc\dXcXcXcXccXcXcXcXc^cXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcbcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcc^cXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXcXcXhÁ¹Á•¹•Á„ÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁÁ¹ÁhhÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁhÁ„ÁÁÁhÁÁhÁÁhÁÁ•ÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁhhÁhÁhÁhÁÁhÁÁhÁÁÁhÁÁhÁÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁhhÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁhÁ„ÁÁhÁÁhhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁhÁhÁhhhÁhÁhÁÁÁhÁhÁÁÁ•ÁÁÁÁÁhÁhÁhÁhÁhÁhÁÁhhÁÁhÁhÁ•ÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁhÁhhhÁÁ•ÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁhÁhÁÁhhÁÁhÁhÁhÁÁÁhhÁÁÁÁÁÁÁÁÁÂÁÁÁÁÁ•ÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁhhhÁhÁ¹ÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁhÁÁ•ÁhhÁÁhhÁÁhÁhÁhÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁhÁÁhÁÁÁ•ÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁhhhÁhÁhÁÁhÁhÁÁÁÁhÁÁhÁÁÁhÁhÁhÁhhÁhÁÁÁhhÁÁhÁhhÁÁÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁhÁÁhÁhÁÁÁÁhÁÁhÁÁÁhÁhÁhÁhhÁhÁÁÁhhÁÁhÁhhÁÁÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁ•ÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhhÁhÁhÁhÁÁÁ¹ÁhÁÁÁ¹ÁÁhÁÁhÁÁÁhÁÁh¹ÁhÁhÁhÁÁhÁhÁ•ÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁ•ÁÁ•ÁÁÁÁhÁ•ÁÁhÁÁÁhÁÁÁÁÁÁÁ¾hÁhÁÁhhÁhÁhÁhÁÁÁhÁhÁÁÁhÁÁ•ÁÁÁhÁhhÁÁhÁhÁ•ÁhÁhÁÁhÁ•ÁhÁÁÁÁ•ÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁ•ÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁ•ÁÁhÁÁÁÁhÁ•ÁÁhÁÁÁÁhÁÁÁÁÁÁÁhhhÁÁ¹hÁ•ÁhÁhÁÁÁÁÁhÁÁÁ•ÁÁhÁÁÁÁÁhÁhÁÁÁhÁÁhhÁÁhÁhhÁÁÁÁh•ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁ•ÁhÁÁhhÁhÁhÁhÁÁÁÁÁhÁÁÁhÁÁ¹ÁÁÁhÁhÁhÁhÁhÁhÁÁhhÁÁ•ÁhÁhÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁÁÄÄÄÍÑÑÑððððÑÑðÑðÑððÑÑÑðÑÑÑÑÑðÑÑðïððððóóóóðóóóóðóóóóóüüüüúóóðððððÑÑÑÍÍÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhhhhcccbXXXVXTTTTTTTT"hÁhÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁ„ÁhÁÁÁÁÁÁÁ•ÁÁhÁ„hhÁhÁhÁÁÁÁÁhÁÁÁ•ÁÁhÁÁÁhÁhÁhÁhÁhÁhÁÁhhÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁ„hÁÁ¹hÁhÁhÁhÁÁhÁÁhÁÁùÁÁhÁÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁhhÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁ•ÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁhhÁhÁhÁhÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁhÁhÁ•¹hÁhÁÁhhÁÁhÁhÁhÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁ¹ÁÁÁÁhÁÁÁÁhÁÁhÁhÁhhhÁhÁÁhÁ•hÁh•hÁ¹•ÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁhhÁhÁhÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁh¹ÃÁÁhÁÁ¹ÃhÁ¹ÁhhÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁ„ÁÁÁhÁ•Á¹•hÁhÁÁhÁhÁhÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁhÁhÁhÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁhÁ•ÁhhÁhÁhÁhÁÁ„ÁÁÁÁÁÁÁhhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁ¹Á„¹•ÁhÁÁhÁ•ÁhÁhÁhÁhÁÁÁhÁÁhÁÁ¹ÁhÁhÁ„ÁÁhhhÁhÁhÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhÁÁÁhÁÁhÁhÁhÁ¹•ÁhÁhÁhÁÁhÁÁÁÁÁÁ„Á¹•hÁÁÁhÁÁhÁÁÁÁ¹ÁÁÁÁÁÁÁ¹ÁhÁhhhÁhhÁhÁhÁhÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁ¹ÁhÁhÁ¹ÁhÁÁ•ÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁhÁÁ•ÁhÁhÁhhÁ„ÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁ•ÁhÁhhhÁhhÁhÁÁhÁ¹•ÁhÁ•ÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁ„¹•ÁhhÁhÁhÁhÁ¹ÁÁhÁÁÁhÁÁÁhÁÁÁÁ„ÁÁhÁhÁ¹ÁÁÁÁhÁhÁhÁhhÁhÁhÁ¹ÁÁ„ÁÁÁÁÁÁhÁ•hhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhhÁhÁÁhÁhÁhÁhhÁhhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhhÁhhÁÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁhÁÁhhÁÁÁhÁÁhÁhÁhÁhhÁhhÁÁhÁÁhÁÁÁÁÁÁÁh„¹•ÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁÁhÁÁhÁhhÁhÁÁhÁhÁhÁhhÁhhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhhÁhhÁÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁÁÁ¹ÁÁhhÁÁÁhÁÁhÁhÁhÁhhÁhÁhÁhÁÁhÁÁhÁÁÁÁ„¹•hÁÁÁhÁhÁÁÁÁÁ•ÁÁÁÁÁÁhÁÁ¹•hÁhhÁhÁhÁhÁÁhÁhÁÁÁhÁÁhÁÁÁ¹ÁÁ•ÁhÁÁhhhÁ¹ÂhÁ•ÁhÁhÁÁÁhÁÁ•ÁÁÁhÁÁÁÁhÁÁÁhhÁhÁÁÁÁhÁ¹ÁhÁ¹•ÁhÁ¹Á„ÁÁ•ÁÁhÁÁÁÁh•„hÁÁÁÁ•ÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁ¹•¹Á„ÁÁhÁhÁhÁhÁ¹ÁhÁÁÁhÁÁ¹ÁÁÁhÁÁ¹Á•ÁÁhh„ÁÁ•ÁhÁhÁÁ¹ÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhÁhÁÁÁÁhÁ¹ÁhÁhhÁhÁ¹ÁhÁÁÁÁÁÁÁÁhÁh•ÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁhÁÁÁ¹ÃÁ„Á¹•ÁhÁÁ•h¹•ÁhÁhÁÁÁhÁÁ•ÁÁÁhÁÁ¹ÁÁÁhhhÁhhÁ•ÁhÁhÁhÁÁÁhÁÁhÁÁÁÁÁÁÁhÁ•ÁÁhhÁ„ÁÁÁÁ•ÁhÁhÁhhÁhÁhÁhÁÁ•ÁÁÁÁÁÁ•hhh¹ÁÁÁhÁ•ÁÁÁÁÁhÁÁÁÁhÁÁhÁÁ•„ÁhÁÁhÁhÁhÁhÁhÁ•ÁÁÁ¹ÁÁhÁÁÁhÁÁhÁhÁ¾Á•hÁhhÁ•ÁhÁÁÁhÁÁ•ÁÁÁhÁÄÁÄÍÍÍÑÑÑðððÑððÑðÑÑðÑÑÑðÍÑÑÑðÑÑÑðððóïðóððóðòóóóóóüüóúüüóóóóðóðððððÑÑÑÑÍÍÍÄÍÄÄÄÄÄÁÁÁhhhhchccccbbXXXTTTTT:TTTM"ThÁÁÁhÁÁÁÁhÁÁÁhhÁÁÁhÁÁhÁhÁhÁh„ÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁ•ÁÁhÁÁÁÁ•ÁÁÁÁÁÁ•Á¹Á•hhÁhÁÁhÁ•ÁhÁhÁhÁhÁÁÁhÁÁhÁÁhÁhÁhÁ„ÁÁhhhÁhÁhÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁ¹ÃÁÁÁÁÁhÁhÁhÁhhÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁ„ÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁ¹•hÁhÁÁhÁhÁhÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁhÁhÁhÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁh¹ÃÁÁhÁÁ¹ÃhÁ¹ÁhhÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁhÁhhhÁ•ÁÁhÁhÁÁhÁhÁhÁÁÁhÁÁ„ÁÁÁhÁÁhÁhÁÁÁhhÁhÁhÁhÁhÁhÁÁÁhÁÁ¹ÁÁÁÁhÁÁhÁhÁÁhhÁhÁhÁÁÁhhÁhÁhÁhÁhÁÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁÁ„ÁhÁ¹ÁhhÁÁÁÁÁÁhÁhhÁhÁhhÁhÁÁ¹hÁ•¹Á„Á•ÁÁÁh¾„ÁhÁhÁhhÁÁÁÁhÁÁÁ•¹„ÁhÁhÁhÁÁÁ„ÁÁÁÁhÁhÁÁÁhhÁÁ•ÁÁÁÁhÁÁhÁÁhÁ„ÁhÁÁÁÁhÁ•ÁÁhÁhÁÁÁÁÁ„hhhÁÁÁÁhÁhÁÁhÁhhÂÁÁÁÁÁhÁ¹„ÁhÁ•hÁhÁÁhhÁhhÁhÁhÁÁÁhÁhÁhÁhÁ¹„ÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁhÁÁÁhÁhÁÁÁ¹•ÁÁ•ÁÁÁ•ÁhÁÁ„ÁhÁhÁ¹ÁÁÁÁÁhÁ•ÁÁÁhÁ„ÁÁÁhhhhhÁÁÁÁhÁÁ•ÁhÁhhÁÁÁÁÁÁhÁ„hÁhÁh„ÁhÁÁ¹hÁ•hÁhÁhÁÁÁhÁhÁÁÁÁhhÁÁÁÁhÁÂÁhhÁhÁhÁÁhÁhÁÁ•ÁÁÁhÁhÁÁÁhhÁÁhÁÁÁhÁhÁÁhÁhÁhÁhÁÁÁÁÁhÁ•ÁÁhhÁÁÁÁÁÁhhhÁ¹ÁÁÁÁÁhÁ¹Á„hÁÁÁÁÁÁ„Á•hÁhÁ•hÁÁhÁhhÁhhÁhÁhÁÁÁhÁhÁÁ„ÁhhhÁÁÁÁhÁÁÁ•¹ÁÁhÁ•Á„ÁÁ„Á¹ÁÁÁ•ÁhÁÁÁhhÁÁhÁÁÁhÁhÁÁ••¹ÁhÁhÁhÁÁÁÁhÁhÁÁhhÁÁÁÁÁÁhhhhÁÁÁ¹ÁÁhÁh¹„ÁÁÁÁÁÁ¹Áh•ÁhÁhÁhÁhÁhhÁhÁhÁ¹ÁÁÁÁÁhÁÁhÁhhhÁÁÁÁ¹ÁÁÁ„hÁÁhÁ•ÁhÁÁ„ÁhÁÁÁhÁhÁÁÁ•¹ÁÁhÁÁÁhÁ„ÁÁ„ÁhÁhÁhÁhÁÁÁÁhÁ„ÁÁ•¹ÁÁÁhÁÁ•¹h•ÁÁÁÁhÁÁhÁhÁhhÁÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁhhÁhhÁhÁhÁÁÁÁÁhÁhÁÁhhhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁÁhÁÁ•¹ÁÁhÁhhÁÁhÁÁÁhÁÁhÁhÁhÁhÁhÁhÁÁhÁÁÁhÁÁ•hÁÁÂÁÁhhhÁhÁÁÁÁhÁÁhÁÁÁhhÁÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁhhÁhhÁhÁhÁÁÁÁÁ•ÁhÁÁhhhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁÁhÁÁhhÁÁhÁ•¹ÁÁhÁÁÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁhÁ•ÁÁhhÁÁÁÁ¹h„ÁhÁÁÁÁÁÁÁhÁh¹ÁÁÁÁÁÁh¹hÁhÁ•ÁhÁhÁhh¹„ÁhÁhÁÁÁhÁhÁÁ¹Á„•¹ÁÁÁÁhÁÁ¹„ÁÁÁ¹Á„ÁÁÁÁhÁÁ¹ÁhÁÁÁhhÁÁhÁÁÁhÁhÁÁhÁhÁ„ÁhÁÁÁÁÁ„ÁhÁÁ¹hÁÁÁÁÁh•¹hhÁÁÁÁ¹ÁÁ¹Á„ÁÁhÁÁÁÁÁÁhÁhh¾„ÁhhÁhÁÁhhÁhhÁÁ•ÁÁÁhÁ„ÁÁhÁ•¹„ÁÁÁÁhÁÁÁ¹„Á¹ÁhÁÁhÁÁ„ÁhÁÁÁhÁhÁÁÁhhÁÁ„ÁÁÁhÁhÁÁhÁhÁ„ÁhÁ•ÁÁÁÁ„ÁhÁ–¹–¹ÁÁÁÁÁh•¹ÁhÁÁÁ„ÁÁ¹ÁhÁÁhÁÁÁÁÁ¹ÁhhÁ¹ÁÁhÁh¹hhÁ„ÁhÁhÁÁÁ„Á¹ÁhÁhÁ„hÁÁ„ÁhÁÁÁ„hÁÁ¹ÁhÁÁÁÁhÁ•ÁÁÁhhÁÁ„Á¹•ÁÁ¹ÁÁÁhÁhÁÁhÁ¹ÁhÁhÁhÁÁÁÁhÁhÁÁ¹„ÁÁÁÁÁ¹Á„ÁÁÁ„Á¹ÁÁhÁhÁhhÁÁÁÁÁÁh¹hÁ¹ÁhhÁhÁ¹„ÁhhÁhÁ¹ÁÁÁ„ÁhÁÁhÁhhhÁÁÁÁ„ùÁhhhÁ¹„ÁÁhÁhÁ•¹ÁÁÁhhÁÄÁÄÍÍÍÍðÑðððððÑðÑðÑÑðÑÑÑÑÑÑÑððÑïÑðóððððððððóððóóóóóóóóüóóóóóðóðððÑÑððÍÑÍÍÄÍÄÄÄÄÁÄÁÁhhhhcccccbbXXXTTTTTT"TTT„hÁÁÁ•hÁÁhÁÁÁ•ÁhÁÁhÁhÁhÁhÁhÁÁÁÁhÁ•ÁÁ•¹ÁÁÁÁÁÁhhhhÁ¹ÁÁ¹ÁÁhÁhÁ¹„ÁÁÁÁÁ–¹Á„hÁhÁh„ÁhÁÁ¹hÁ•hÁhÁhÁÁÁhÁhÁÁhÁÁhhÁÁÁÁhÁÂÁhhÁhÁhÁÁhÁhÁÁ•ÁÁÁhÁhÁÁÁ„hÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁ•ÁÁÁÁhÁhÁÁ„ÁhÁÁÁÁÁhhhhÁÁÁÁÁ•ÁÁhÁhhÁÁÁÁÁÁhÁ¹„ÁhÁ•hÁhÁÁhhÁ„hÁhÁhÁÁÁhÁhÁhÁhÁ¹„ÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁhÁÁÁhÁhÁÁÁ¹„ÁÁ•ÁÁÁÁhÁÁhÁÁhÁ„ÁhÁÁÁÁhÁ•ÁÁhÁhÁÁÁÁÁ„hhhÁÁÁÁhÁhÁÁhÁhhÂÁÁÁÁÁhÁhhÁhÁ•¹ÁhÁÁ•¹„ÁhÁhÁhÂÁÁ„Á¹ÁÁhÁhhhÁÁÁùÁhÁhhÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁÁhÁhÁÁhÁÁÁhÁhÁÁÁhÁhhÁhÁhÁÁÁÁhÁ•ÁÁhhÁÁÁÁÁÁhhÁhÁhh„¾ÁÁ¾hÁ„ÁÁÁÁh¹„ÁÁÁ¾hhÁÁÁhÁÁhÁÁ„ÁÁh¾Áh¾¹ÁhÁÁÁ„¹•ÁÁÁÁ¾ÁÁhhhÁh¾Áh¾hÁÁhÁ¾ÁÁÁ¹ÁhÁÁhÁÁh¹Áh„Á¹Á¹ÁÁh¹ÁhÁhÁ¹ÁÁh¾Áhhh¾ÁÁ¹Á¹ÁhÁ¾„ÁhÁ¹ÁÁÁh¾hhÁÁÁh¹ÁÁÁÁ¾¹Á¹•¹ÁÁÁhh¾ÁÁ¹ÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁÁhÁhÁÁÁh¾ÁÁhÁhÁhÁÁÁÁhÁÁh¾ÁÁÁÁhÁhÁÁh¾ÁhhÁh¾¹ÁÁ¹ÁÁh¹ÁhÁ¹ÁhÁÁhÁÁ¹•¹ÁÁÁhÁ¹•¹•¾Á¹ÁÁhÁÁÁhÁÁÁÁÁÁÁ¹ÁÁÁÁÁÁÁ¹•¾ÁÁÁ¹•¾ÁÁ¹ÁÁÁÁÁÁÁÁ¹ÂÁhÁhÁ¹ÁÁhhÁ¹ÁhÁÁÁÁÁÁ¹•¾¹ÁÁÁÁhÁÁh¾ÁÁÁhÁÁ¹ÁÁÁÁÁ„¹ÂhÁhÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁ„¹•ÁÁÁhÁ¹•ÁÁÁÁ¹Áh¹ÁÁÁhÁh„ÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁ¹•¾ÁÁ¹ÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁ¹ÁÁÁÁÁÁÁhÁÁÁhÁÁ„ÁÁÁÁ¹ÁÁÁÁÁ„ÁhÁÁ¹ÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁ¹Â¹ÂhÁÁÁÁÁÁÁ¹ÁÁÁÁÁÁhÁÁÁÁhÁ„¹Â¾ÁhÁ¹•ÁÁÂÁÁÁÁÁÁ¹ÂÁÁ„ÁÁÁÁ¹ÁÁÁhÁÁÁÁÁÁÁ¹ÂÁÁÁ„ÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁhÁÁÁ¹•ÁÁÁÁÁÁÁÁÁ„ÁÁÁhÁÁ¹Á„ÁÁÁhÁÁÁÁÁ¹Á„¹ÂÁÁÁÁÁÁÁÁÁÁhhhÁÁÁhÁ•ÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁ•¹•ÁÁhhÁ•ÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁÁÁÁÁ•ÁÁhÁÁÁÁhÁhhÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁhhhÁÁÁhÁhhÁÁÁ¹ÁÁhÁhÁhÁhhÁÁhÁhÁÁÁÁÁÁhhhÁÁÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhhhÁÁh¹ÁÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁh„ÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁhhhÁÁÁhÁ¹•ÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁ¹Ãh¹ÂÁÁÁÁ„ÁÁÁ¹ÃÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÂÁÁÁÁÁÁÁÁÁÁÁ¹ÂÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁ„¹•ÁÁÁÁÁÁ„ÁÁÁÁÁÁ¹ÂÁÁÁÁÁ„ÁÁÂÁhÁÁÁÁÁÁÁÁÁÁÂÁÁÁ„ÁÁÁÁÁÁÁÁÁÁÂÁÁÁ¹¹ÂÁÁÁÁhÁÁÁÂÁÁÁÁÁ„¹•ÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁÁÁÂÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁÁ¹•ÁÁÁÁÁÁÁÁÁÁÁ„Á¹ÂÁÁ„ÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁ„¹•ÁÁÂÁÁ„ÁÁ¹ÂÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁ¹¹ÂÁÁÁÁÁÁ„¹ÂÁÁ„ÁÁÁÁÁÁÁ„Á„ÁÁÁÁÁÁ„¹ÂÁÁhÁÁhÁhÁ¹ÁhÁhÁÁ¹ÁhÁÁÁÂÁÁÁÁÁÁÁÁ¹•„ÁÁÁÁÁ„ÁÁÁÁÁÁhÁÁÁÁ¹ÂÁÁÁ„ÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁÁ¹Á„ÁÁÁÁÁÁÁ¹ÁÁÁÁÁÁÁ„ÁÁhÁÁÁÄÍÍÑÑðÑððððÑÑðÑÑÑÑÑðÑðÑðÑÑðÑÑñðÑòÑððððóðóóððóóóóóóóóüüóóóóðóðððÑÑÑÑÍÑÍÍÍÍÄÄÄÄÁÁÁÁÁÁÁhhcchc^XXXXXTXTTTThÁÁÁ„Á¹ÁhÁÁ¹ÁÁÁ¹ÁhÁhÁÁÁÁÁÁÁhÁ¹ÁÁÁhÁ¹•ÁhÁÁ¹ÁhhÁÁÁhÁh„ÁÁÁÁÁÁÁÁÁÁÁ¹•¹ÁÁÁÁ¹•¾ÁÁ¹ÁÁÁÁÁÁÁÁ¹ÂÁhÁhÁ¹ÁÁhhÁ¹ÁhÁÁÁÁÁÁ¹•¾¹ÁÁÁÁhÁÁh¾ÁÁÁhÁÁ¹ÁÁÁÁÁhÁÁ¹ÁhÁÁhÁÁh¹ÁhÁhÁÁÁÁÁÁÁ¹•¹ÁÁÁ¹ÁhÁ¹ÁÁh¾¹ÁhÁÁÁh¾¹•¹ÁÁh¹ÁÁÁÁÁ¹Áh¹ÁÁÁÁhh¾ÁÁ¹ÁÁhÁÁÁÁÁ¹ÁÁhÁhÁhÁÁÁhÁhÁÁÁh¾ÁÁhÁhÁhÁÁÁÁhÁÁh¾ÁÁÁÁ¹ÁhÁÁhÁÁhhÁh„¹ÁÁ¹ÁÁh¹ÁhÁhÁ¹ÁÁh¾Áhhh¾ÁÁ¹Á¹ÁhÁ¾„ÁhÁ¹ÁÁÁh¾hhÁÁÁh¹ÁÁÁÁ¾¹Á¹•¾ÁÁÁ¹•ÁÁÁh¾ÁhÁÁ¾ÁÁ¹ÁÁhÁh¾¹ÁÁÁ„¾hÁÁÁÁÁ¾Á¹ÁÁhÁÁhÁ¹ÁÁhÁÁÁÁÁÁhÁÁh¹ÂÁhÁhÁ„ÁÁÁhÁÁhÁÁhhÁhÁÁÁhÁÁhhhÁÁÁhÁ¹•ÁÁhÁhÁ„¹ÁhÁMMM0-M0MLM0LM000-M-M0MLM-M-M-M0LM-M0-M0-M-M0LMMLM0-M00-M-M00-M0MLM-M000000000LM000MLM000-M000-M0000-M0-M-M000000-M0MLM000-M-M00000-M0-M00000000-M0000000000000000MM000-M00000M00-M00000-M00-M00000000000000000000M00000000000000M000000000000000-000000000000000-M00000MM0000M00M00000M000000000M00M00M000M000M00M00MM000MMM00M00M0M0000000000000M000000M00-M0000M00M0000-000M0000-00M0000MchÁÁhÁÁ„¾•Á¹•Áh•Áhhhhhhhhhh•¹ÁÁhÁhhÁ•¹hhhÁhÁhÁhhÁhhÁÁhhÁhÁhÁhÁ¹ÁhÁhÁ•¹Á••hÁÁhhÁh•ÁhhhÁhhÁ•hÁhÁhhÁÁhhhÁhh¹hhÁhhhhhhÁhÁhhÁhÁÁhÁhh•ÁÁhÁ•¹hÁhÁhhÁhhÁ•hhhh•hhhhhhÁÁhÁhhÁh•¹hhÁhÁhÁhhÁhhÁÁhhÁhÁhÁhÁhÁhÁ•Áh•ÁhhhÁÁhhÁhhÁhhhÁhhÁhhÁ•Áh•ÁÁhhÁÁÁÁ„hX000M0M00M000-0--0000-M0000M0000-0000M000M0-000M00M0M0M00-M0000-M0-M0M0000MM0M0MM00-0000000000000M0-0M0000000M00000M0MhÁÄÄÄÍÑÑðÑððÑÑðððÑðððÑðÑÑðÑÑÑðÑÑððððïðððïòðóóóóðóóðóóóóüóóóóóóððððÑÑÑÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhhhhccXXbXTXXTTTTT"TT0M00000000MM0000M00000000M000MM00000000000000-000000000000000-M000000M000000000000000000000000-M0000-M000000-M00000000-M00000000000000000MM000-M00000M0-M-M000000000LM00MLM000-M000-M0000-M0-M-M000000-M0MLM000-M-M00000-M0-M0000000000-M-M00-M-M000000-M0-M0LMMLM-M-M00-M-M-M-M-M0MLM-M-M-M-M0MLM-MMLM0LM-M-M-MMLM-M-M-M-M0LM-M00LM00LMMLM0MLM,,,,                                                                 ThhhÁhÁh¹•hhÁhh¹Á¹•hÁhhhÁ•hÁhhÁhÁ•hÁhÁhhhÁhhhhÁhÁhhhÁhhÁhhhhÁÁ„ÁÁhhÁh„Á¹ÁÁhhÁÁhhh¹•hÁh••¹ÁhhhhhhhÁÁÁhÁhhÁhhhhÁÁ•ÁhÁÁhhhÁÁhhhÁÁÁÁ¹•Á•ÁhhhhhÁhhhÁ•h¹•Á•h¹ÂhhÁhhhÁhÁ•hÁhÁhhhÁhhhhÁhÁhhhÁhhÁhhhhÁÁhÁÁh¹Á•¹ÁhÁhh¾ÁÁhhhhh•ÁhhhhÁhh¹•h¹•ÁÁÁ•¹Á•¹c                                                                             MgÄÄÍÍÍÍÍÑðððÑðððððððÑÑÑÑðÑÑÑÑÑðÑÑðÑððòððóóðóóóóðóóóóóüüóüóüðóðððððÑðÑÑÍÍÍÍÍÄÄÄÄÄÁÁÁÁÁhhhccccXcbbXXXTTTTTTT:"                    ,,,,,,,                                                                                   0cÁhhÁhhhhhÁhÁ„ÁhÁhÁÁhÁ•Á¹Á•Á•¹Á•ÁÁhhhhhÁ•Á•hhÁhhÁhÁhÁhÁhÁ•Á•hÁ¾hÁhhhÁ¾hÁhhÁÁhÁhhhhÁ•¹hhhÁhhÁhhhhhÁ¾„•ÁhhhÁh•Á¹hhÁÁhÁhhÁhhÁ•Á•hÁ•¹Á•hhhhÁhÁ•Á¹ÁÁùÁhÁhÁhÁhhÁhÁÁhhhhhÁ•Á•hhÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhhhÁhhhÁÁhÁ•h•¹Á•hhhhÁhhÁhhh•¹hhhÁhhhW                                                                                                  hÁÄÄÍÍÍÑÑðÑðÑðððÑÑÑðÑðÑÑÑÑÑððÑïïÑððÑÑðððððððóóóóóóóüóóüóóóüóóóððððÑÑÑÍÑÍÍÍÍÍÄÄÄÄÄÁÁÄÁhhhhhhcccbXXXXTXT""TTTTT                              ,  ,,,,,,,,,                                                            bhÁhÁhhhÁ•hÁ•h¾ÁhÁ•hÁhÁhh„Á¹Á•Áhh¹•hh••Á¹Á¹Á•¾ÁhÁhhhhhÁ•Áh¹ÁhhhhhÁhhÁ•¹Ã¹ÃhhÁhÁhÁhhhÁhhÁhÁÁ••Áhhhhh¹Á¹•ÁhÁhhhÁhh¹•hhÁhÁhhÁ¹•¹•Áh•¹•ÁhhÁ•¹•ÁhÁ•¹ÁÁhhhÁ•ÁhhÁhh¹•hhh•Á¹Á¹Á•ÁhhÁhhhhhÁhÁhhÁhhhhhÁhhÁhhÁ•hÁhhÁhÁ¹••¹Á•hÁ•ÁÁhhÁhhhhhÁhhhc                                                                                 gÁÁÄÍÍÑÑÑðÑðððððÑÑðÑðÑÑÑÑÑÑððÑðáðððÑðððóððóðòðóóóóóúóóóóóóóóóðóðððïÑÑÑÑÍÍÍÍÄÄÄÄÄÄÁÁÁÁÁhhhcccccXcXXXTVTTMTT                          ,,,,,,,,                                                                                        MhhÁhhÁ•¹h•¹Áh•¹•hÁhhhÁ¾hhh•¹ÁÁhhhhÁÁ¹Á„¾•ÁhÁhÁ•hÁh¾Â¹Áh•hÁhÁhhhhùhhhÁÁhhhÁhhÁ•hhhÁhÁhhh•¹Á¹Á•Á•¹•ÁÁÁ•¹••Áhh•¹•hhhhÁhÁhhhhhÁ•¹Á¹•Áhhh•¹Áhh•¹ÁhhhÁ••¹hh•ÁÁhhhhÁùÁ„¾•ÁhÁhÁh•ÁhÁÁhÁ•hhÁhÁhh•hÁhh•¹ÁÁhhhÁhhÁ•¹hhÁhÁ¹hhhhÁhÁ•ÁhhÁhÁÁhX                                                                                  MhÁÁÄÄÍÑÑÑððÑððÑðÑðÑððÑððÑÑÑÑðÑÑððððððòððððóðóóóóóóóóóóóóüóúóóððððððÑÑÍÑÑÍÍÍÍÍÄÄÄÄÁÁÁhhhhhhcccbXXXXXTTT""TTTTTT                          ,,,,,,,,                                                              dhhhhhh¾„Á¹•h¹•h¹•hÁÁhÁhhÁh•¹•hÁhhhÁ•Á¹•h•¹•h•Á¹•ÁhÁhhÁ¹•hÁhhÁ•hÁhhÁhh¹•hÁhÁhh¹••hhhhÁhhhÁÁ¹•ÁhÁ¹Á„¹•h¹ÁÁhh•¹•ÁhhÁhÁhhÁhhhh•„¾¹••Áhh•¹•hh•¹•hÁ•Á¹•¾„¹•¹•hÁhhhÁÁ¹•h•¹•hhÁ•¹ÁhÁ••¹Á•hhÁhhÁ¹•Áh•Á•„¹•hÁhÁhhhhhh•h•Áhh•hh•Á¹•ÁhÁhÁh                                                                                   0hÁÄÄÍÍÍÑðÑððÑððÑððÑÑðÑÑÑÑðÑÑÑÑÑðððððððóðóððððóððóóóóóüóüüüüóððððóðÑÑÑÑÑÍÍÍÄÄÄÄÄÄÁÁÁÁhhÁhcccccXcXXXXTXTTT:TT                    ,,,,,,,,,,,,                                                                            Xhhh•¹„hhhhhhh•¹„¾hhhhÁhhhùhÁhhhÁÁh•¹hh•¹h•¹h•hÁhhhhÁhhhÁhÁ•¹hÁhhhÁhhh•Áh•hhh•¹hhh•Áhh•¹•¹ÁhÁhÁ„Á¾hhhhhÁhh•¹ÁhhhhhhÁÁhÁhhÁ••¹•¹h•¹hh•¹•h•¹•h•¹Á•hÁhhÁhhhÁÁ•¹„h•h•¹hh•¹hhhÁ•¹hhÁhhhÁ•ÁÁhÁ•¹Á¹•hÁhhh••hh•¹•¹Áh•¹h•¹ÁhÁhÁhÁhc                                                                                        MhÁÄÄÍÍÍÑðÑðððððÑððÑÑðÑÑÑÑÑÑðÍïÑÑÑðïðÑðóóðóðóïóóðóóóóúóüüóóüðóðððððÑðÑÍÑÍÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhdccccccXXTXTTTTT""TT                           ,,,,,,,,                                                         MchhÁh¾Á•ÁhhÁhhhÁhhhhhÁhhhhhhÁhÁhÁÁhh•¹•hÁhhhÁùÁ•ÁhhhhhhhhhhhhhhhhÁhhhhhh¹•¹•hÁ•ÁÁh¹•Áhhh•„¹•hhhhhhhÁhhhhhhÁhhhhÁhÁhhhhh•Áh¹•hhÁ•¹•ÁhÁhhÁ¹•hÁh¹•hhÁh¹•h•h¾hÁhÁÁh¾•¹•Á•¹•ÁÁhhÁhÁhhhhhhhhhh¹•¹•hhÁhhhh¹•hhhh¹ÁhhhÁ¾„Áhhhhh•¹•hhhhhW                                                                              0gÁÄÄÍÍÍÑÑððÑÑððððððÑÑÑðÑÑÑÑÑÑÑðóÑðððóðððïðóóóóóðóóüóóóüóúóüóóóððððÑÑÑÑÑÑÍÍÍÄÄÄÄÄÄÁÁÁÁhhhhhcccXXXXXXTTTTTTMT:T"T                  ,,,,,,,,,,,,,                                                       chÁÁ¹•¹•hh•hhhÁhhhhÁhhhÁhhhhhhhÁhh•¹•hhhhhÁ¹hhÁhÁhÁhhhÁhÁhhÁhÁh•hÁhhÁhhÁÁhÁh—¹¹ÁhÁh•hÁ•¹•¹•hhÁhÁhhhÁhÁhhÁhhÁh•ÁhhÁ•hÁ•¹hhhÁhh•¹Á•hhhhhhhhÁhhhhÁhhhÁ•¹h••hhÁh•¹•¹¹hhhhÁhhhÁhÁhÁhhhÁhÁhhÁÁ•hhÁhhÁhhhÁhÁÁÁhÁùÁhh•Áhh•¹•hhÁhÁd                                                                                                MgÁÄÄÄÍÍÑÑðððÑðÑðÑðÑÑÑÑÑÑðÑÑÑÑðððÑððððððòðððóóóóóóóüóóóüóóóúóóóðððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÄÄÁÁÁÁhhhhhccccXXXXXXTTT"TT"MT""                    ,,,,,,,,,,,,,,,                                                                              X„Á¹•h•Á¹Ãh¹•ÁhhÁhÁhÁhhÁÁhhÁ•ÁhhÁhhÁhh¹ÂhhÁhÁhhÁhh•¹•hÁhÁhhÁhÁÁh•¹•hÁh•hÁ¹••hÁ¹••Á•hÁ¹•hÁhhhh¹ÃhÁhhh••¹•hÁhhhhhÁh¹••h¹•hÁhhÁhÁhÁhhhh¹ÃhÁhhhÁhhÁhÁhÁhhÁhh•Á¹ÁhhÁhhÁ•„ÁhhÁhÁh•ÁhhhhhhÁhÁhhÁ•ÁÁh¹•hhÁhh•ÁhhÁ¹Áhhh¹•••Áh¹•Áhhhh¹ÃhÁhX                                                                                     gÁÁÄÄÍÍÑÑððððÑðððÑÑððÑÑÑððÑÑÑðÑÑÑððÑððððóóðóððóðóóóóóóóóóóóóððððððÑÑÑÍÍÑÍÍÄÄÍÄÄÁÁÁÁÁÁhhhhgccccbXXXXXTTTT:"TT"M                         ,  ,,,,,,,,,,,                                                                            chhùhhhhhhÁhhhÁhÁÁhh•¹•h•¹ÁhhhhÁhhhhÁhÁÁhÁhhÁh•¹••¹hÁhÁÁhÁh•¹ÁhÁ•¹¹•Á•¹•¾•¹Á¹•hÁhhÁÁhÁhhhhhh•Á¹hhÁh••hÁhhÁhh•¹hhh•hÁhÁhh•ÁhhÁhhhh•hhÁhhhÁhÁÁhhhhhhhhhÁ•hhhÁ•¹•¹ÁhÁÁhÁ•¹Áhh••hh•¹ÁhÁ¹ÁhhhhÁhÁh•¹hhÁ•¹•h•hhÁ•¹hÁhhhÁÁhÁhhhhhhc-                                                                                   MhÁÁÄÍÍÍÍðÑðððÑÑðÑÑðÑðÑÑÑÑÑÑÑðÑÑÑÑðððÑððððóòððóóðóóóóóóóóüüóóóóóðððÑðÑÑÍÍÍÍÄÍÄÄÄÄÁÄÄÁÁÁhhhdcccccbXXTXTTTTT:T                       ,,,,,,,                                                                            XhhhhhhhhhhÁÁhÁhÁhÁÁhhÁhh¹•hhhhhhÁhhÁhhhÁhÁhÁhÁhÁhhh¹•hhÁhhhhhhhÁ•¹•hÁ•Áhh¹•¹•¹••Á¹•h¹•hhÁhÁhhhhhÁhhhhhÁh¹ÁhÁh•hhÁhÁ••¹•Áhhhhh¹•hhhhh•¹•ÁÁhÁ•ÁhÁÁhhÁhhhhhhh¹•hÁhhÁ¾ÁhÁhÁÁhÁh¹•¹•h•ÁhhhhhhhÁhhhhÁhÁhhh•¹•¹•hhÁhhhhhh•ÁhÁhhhhhc                                                                                      0hÁÄÄÍÄÍÑÑððððððððÑÑððÑïÑðÍÑÑðÑÑÑðððÑððððððððóóóóóðóóóóóóüüóðóóðððÑððÑÍÍÍÍÍÍÍÄÄÄÄÁÄÁÁÁhhhhcccccXbXXXTTTTTTTTT                         ,,,,,,,,,,                                                                      Xhhhhhhh•hhh•h•ÁhhhhÁhÁhÁhhhhhhÁhÁhh•hh•hh••hÁ•hhhhhhhh•hÁhÁhhùÁhh•¹Á•hhÁ•¹Á„h•¹hhh•Á„h•hhhÁh•ÁhÁhÁhÁhÁhhh•hhÁ¹•hÁ•¹•¹hhhhhhhhÁÁ•hhh•¹hhh•¹hÁhhh••hÁhÁhhhhhhÁhÁ„•¹•¹•hh•¹•Áhhhhhhh•¹hÁhÁhhÁhÁ•hhhÁhhhùhÁhhhhhhhhÁhh•¹hhÁhhhhÁhM                                                                           McÁÁÄÍÍÍÑðÑÑÑðððððððÑððÑÑððÑÑðÑÑïðððððòðóòðóðóóóóóóóüüóüþüóóóóóðððÑÑðÑÑÑÍÍÍÍÍÄÄÄÁÄÁÁÁhhhhcghcccXXXXXXTTTTTT"T                      ,,,,,,,,,,,,,,,,,,                                                            c¹•hÁhÁÁ¹•hh¹•¹ÁhhhhÁhhhÁhÁhÁhhÁhÁ•h¹•h¹•h¹Áhh¹•hÁhhÁ•Á¹•hÁ•ÁhhÁ•hÁh¹Ãh•hhÁhhhhhhh¹Á•¹•hÁhÁ¹ÁhÁhÁ•ÁhÁ••h¹•hÁ¹•hÁhhhhÁhhhÁhh¹Á¹•ÁhÁÁ¹•hhhhhÁhhh¹Á¹•hÁÁÁhÁhhÁ•¾¹••h¹•hhÁh¹•h•ÁhhÁhÁ•¹•ÁhÁhh•Á¹•ÁhhhÁhhhhhÁhhh•hhhhÁhhhhÁhÁ•Áhc                                                                                                   hÄÄÄÍÍÍÑÑðÑððÑðÑÑðððÑÑÑÑðÑÑÑÑÑðáððððÑóðóððððòðóðóóóóóóüüóóóóóðóððÑÑÑÑÑÍÑÍÍÍÍÄÄÄÁÄÄÁÁÁhhchhcccbXXXXTTTVTTTTT                      ,,,,,,,,,,,,,,                                                                     bhÁhhÁÁhÁhÁ•hhÁhÁ•hÁhhhhÁhhhÁùÁ„¾hhhhhh•ÁhhÁhÁ•¹hhhÁ¹Á•¹••¹ÁÁhhÁhhÁ¹•ÁhhÁhhÁhhÁÁhhhÁ•Á•hÁ•¹hhhhÁ¹Áhh•¹Á•hÁhÁhhhhÁhÁhÁ„hhÁÁhÁ¾„•hÁhÁhhhhÁhÁ•Á•¹•Áhh•¹hÁ••¹hhhh•hhhhh•¹Á•Áh•¹hh•ÁhÁh•¹Á•ÁhhÁhhÁhhÁh•Á•¹ÁhhÁhÁhhhÁ•Á¹hÁÁ\                                                                                        MhÄÄÄÄÍÍÍðððÑÑÑððÑðÑððÑÑÑðÑÑÑÑðÑïððððÑððóððóðóðóóüóóðóóóüóóüóóóðóððÑÑÑÑÍÑÍÍÍÍÄÄÄÄÄÄÁÁÁhhhdhcccbXXXXXTTTTTTTTTTT"                        ,  ,,,,,,,,,,,                                                             TdÁh•h¹ÁhÁhÁh¹•hÁhh¹•hhhÁ•hÁ•Á¹Áhhhhhhhh•hh¹•¹•hh•Áh•¹•hÁhÁ•Á¹••¹ÃhÁÁ•hhÁ¹•¾hhhhÁhÁhÁhÁhhh¹•¹•hhhhÁhhhh¾hÁ„ÁÁ¹•ÁhhhÁ•hhhÁ•¹•hhÁhh¹ÁhÁhÁh•hhÁhhh¹•hhÁ¹•ÁhÁÁ•¹•hhhhh¹•hhhhhh¹Á•hhhhÁ¹•hhÁhÁh¹•ÁhÁÁh•hÁhhÁ¹•hÁhÁhÁhÁhhh•Ác                                                                                    0gÁÁÄÄÍÍÑðððððÑððÑÑÑðÑÑðÑóÑÑðÐÑðÑððïððÑðóóððððóóðóüóóóüóüóóóððóððÑïáïÑðÑÍÍÄÄÍÍÄÁÄÁÁÄÁÁÁhhhchccbcbbXXTTTTTT:T                   ,,,,,,,,,,,,,,                                                                          chÁ¹•Á„h•hhhhÁhÁÁ••hÁh•¹h•¹ÁhhÁhhhhÁ•¹•hÁÁhÁ•¹Á•¹•Á•¹•Á¹••¹hhÁhÁ¹hhhÁ•hhÁÁhh••¹ÁhhhÁhhhhÁ•hÁ•hh•h•¹„Á•¹hhhÁhhÁ•¹hhÁ•¹hÁ••¹Á•¹•Áhh••h•¹Á••hhhhhÁhhhhh•¹Â¹hÁhhhhÁ•hhhÁhÁ•ÁhhÁhhÁ¹•ÁhhhhhhhÁhÁh•¹•ÁhhhhÁ•¹••ÁhÁ•hhÁ•¹hhhX                                                                                              gÁÄÄÍÍÍÑÑððððÑððÑðÑÑÑÑÑÑðÑÑðÍðÑÑðáðððððððððóóóóðóóóóóüüóóüúðóðððððÑðÑÑÍÍÍÍÍÄÄÄÄÁÄÁÁÁhhÁhhgcccbcXXXVXTTT"TT                            ,, ,,,,,,,,,,,,,,                                                                       Xhhh¾¹•Á¹Á•hhÁh¹•¹Á•¹•hhhh•¹•hh•hÁhhhÁ¹•ÁhÁ•hhhhhhh¹•Áhhhhh¹•hhhhÁ•Á•Áhh¹•„¾Áhh¹•hhhh•Áhhh•Á¹•h¹•h¹••¹•h•¹•Áhhh•Á•hhhÁhhhh¹•••¹•hÁ¹ÁhhÁ¹•¹••Áhhhhhh•hh¾„hhÁh•¹ÁÁ•ÁhÁh¹•hhhhh¹•Áh¹•h•hhhhhhÁhhhÁ¹•hhhhÁhh¹•hh¹••Áhhhh                                                                                  hÄÄÍÄÄÍÑÑðððððÑðÑóðÑÑÑÑÑÑÑÑðÑðÑÑðïðÑðððððóðóóóóóðóóóóüüóóóóúóóðððÑÑÑÑÑÑÍÍÍÄÄÍÄÄÄÁÁÁÁÁhhhcdcccbXXXXXXTTTTTT              ,,,,,,,,,,,,   ,                                                               c•¹„h•¹•hhÁhhhhhhÁhhÁhhh•¹•h•¹hÁhh•¹„¾hhùhhÁhhhhhhhhh•hhhhhhhhhÁ¹•¹hÁhhh•¹hh¾„hhhh•¹hÁh•¹•hhhhhh•¹hh•¹•hÁhhhÁ¹hh•hÁ•hÁhh•¹•¹hhhhhhhh•Á¹„¾•¹ÁhhÁhh•¹h•¹•¹•hÁ•¹••¹hhÁhhhÁhh•hhhhhhhh•¹h•hhhhÁh•¹•Áhhhhhhhhhhhhh•¹hÁhhÁd                                                                                                  MgÄÁÄÍÍÑÑÑððððððÑÑÑÑðÑÑÑðÑÑÑÑÑÑïÑñïïðóðððððóðóðóüóðóüóóüüüóðóóðóððÑðÑÑÑÑÍÍÍÍÍÄÄÄÄÄÄÁÁÁÁhhhcdccbXbXXXTTXTT:TTT                         , ,,,,,,,,,,,,,,  ,                                                                XhhhÁh¾„¹ÁhhÁhhhhhhhh•Áhhhhhh¹•ÁÁhhhhhhhhÁhhhÁhhÁh•hhhhh¹••hh•ÁhhhhhÁ¹•hÁ•¹•Á¹•hhÁhhhhÁhhh¹•hhh•hhhhh•¹••¹•Áh•Á•¹•h¹•hhhhhhhhÁ•hhhÁhhÁhh•¹•hhhhÁhhhhhh•Á¹•hhhh¹•hhÁh•hÁhhÁ¹•hhhhhhh•Á¹Á••hh•¾„¹•¹•Áhh•hÁhhhhhÁhhhhhhT                                                                                 gÁÄÄÍÄÑÑÑÑðððððÑÑÑðððÑÑðÍðÑÑÑÑïáïððÑóðððððóðóóóóóóóúóóüüóóóóðóððððÑÑÑÑÑÑÍÍÍÄÄÄÄÄÁÁÁÁÁÁhhhchccbbXXXTTXTTTTT                 ,,,,,,,,,,,,,,,,, ,                                             XhÁhhhhhhhÁÁhhhhÁhh•¹•Áh•hhh•¹•Áhhh•ÁhhÁhÁhhÁhÁ••¹hhhÁhh•¹h•¹hÁhÁh•¹•¹„¾Á¹hh•¹Á•ÁhÁhhÁh•Áhhhhh•h•¹h•hh•¹hhÁ¹hh•¹•¹hhhhhhhÁhhhhhh•¹hhhhÁÁhg•¹Áhhhhh•Áhhh•¹hhhÁhhhhÁhhÁhùhÁ•ÁÁ•hhhÁhh•¹•¹••¹Áh¹hhhhhÁh•¹hhÁhÁhÁhhÁhhhÁc-                                                                                                  MhÁÄÄÍÍÍÑðÑÑðððððÑÑðÑððððÑÑÑÑÑÑÑðÑïðïÑðóððððððóððóóóóóóóüóóóóóóððððÑðÑÑÍÍÍÍÍÍÍÄÄÄÁÄÁÁÁhchhcccccbbXXXVTT:TT:TTTT                   , ,, ,,,,,,,,,,,,,,,,,,,,                                        chhhhhhÁh•h¹•Áhhh•Áhh¹•Á¹•hhhhh¹•hÁ•¹•hhhhhhh•h¹•hhhhh•hhhhÁhhhhhhhh¾„¹ÂhhhÁhh¹•hh••Áhh¹•h•hh•¹••Á¹•hhhhh•hhÁÁhhhhhhh•ÁhhhhÁhhÁhh•hÁÁh¹•h•Á¹•h•Áh•¹•Áh•hhhhhh•hÁhhhhhhhhhhhh¹•¹•h¹••hhhhÁh¹•h¾„¹•hhhÁhh•Áhhhh•h•h•ÁhhhX                                                                                                          gÁÄÄÍÍÍÑÑðÑðÑðððÑðÑÑðÑÑÑðÑÑÑÑððððÑðòïððððóðòðóóóóóóóóóóüóóüðóðððððÑÑÑÑÍÍÑÑÍÄÄÄÄÄÄÁÁÁhÁhhhhccbcXbXXTXTTTTTTT"                ,,,,,,,,,,,,,,                                     XhhhhÁh•¹•¹„hÁÁh•¹hhhh•¹•hÁhhhhh•¹hhhhhhhhh•¹•hhh•hh•¹h•hhhhh•hhhÁ•¹•hhhhhhh•Áhhh•¹•¹hhhhh•¹h•¹•¹•hhhÁh•¹h•¹hhhhh••¹hhÁhÁÁ•Áh••¹Áh•¹•h•¹Á„h•¹h•¹hh•¹hÁ•h••¹•hhhhhhhhhhhhhhhhhhh•¹hhhhhhhh•¹„Áhh•hhh••¹hÁhÁ¹¹•¹•hhhh                                                                                                  MgÁÄÄÄÍÍÑÑðððððððÑðÑðÑÑÍÑðÑðÑÑÑÑóÑððððððððððóóóóóóóóóóóóóóüóóóðððððÑÑÑÑÑÍÍÍÍÍÄÍÄÁÄÁÁÁÁhhhchcccbXXXXXXTTT"TTTT                  , ,,,,,,,,,,,,,,,                                Xhhh•hhhÁhh¾hh¹•hhÁhhhhh¹ÂÁhhÁhhhhhhÁhhhhÁhhhÁ•h¹•hh„Á¹•hhh•¹•Áh•h¹•hh•hÁhh¹••¹•ÁÁhhhÁhhhhh•¹•hh¹•hh•ÁhhhhhhÁ•Á•h¹•hhÁhhh¹Áhh¹•h¹•Á¹•hh¹•hhhÁ•¹•hhÁ•¹•¹Á¹•h•hÁhhhhÁh•hÁhhhhhhÁÁhhhhh•hÁh¹•h¹••h¹•Á•¹•h••ÁÁ¹•ÁX                                                                                                     hÁÁÍÍÄÍÍÑðóÑÑÑÑÑÑðïÑðððÑððÑÑÑÑððÑðððóÑðóóóóóðððóóóóóóüüüüóüüóðððÑÑððÑÑÑÍÍÍÄÄÍÄÄÄÄÄÁÁÁhhhhchccbbbXXXTTTT"TT:T                      ,,,,,,,,,,,, ,,,,                              cÁ¹•hhhh•¹•h•¹••hhÁh•hÁhh•¹hhhÁ•hhh•ÁhhhhÁhhhhÁ¹hÁhhh¾hhÁhÁ•¹hh•¹•¹•h•¹•¹Áhhh•¹h•¹•hhÁhÁ•hh•¹hhhhh••¹h•hhhh•¹•¹ÁhhhhhhÁh•¹•hÁhhhhhh•¹•hh•¹••hhh¹•Á•¹•¹„¾Á•¹•¹•ÁhhhhÁh•¹hÁhhÁh•¹•¹ÁhÁ••¹h•¾hhh•¹hh•Á¹••¹•¹hhhhhhhT                                                                                                 0gÁÄÄÄÍÍÑÑðððóÑðÑÑóðÑÑÑðÑÑÑÑðÑðÑððÑïðóððððòðóðóðúðóóóóóüüóóóóððòððÑðÑÑÑÑÍÍÍÍÄÄÄÄÄÄÄÁÁÁhhhhhcccbbXXXTXTTTTT               ,,,,,,,,,,,,,,,,,                             chh„¹Á•h•h¹•hhh¹•hh¹•¹•hhhhhÁhh¹•hÁ¹Ãh¾hhÁh•hh•hhhhhhhhhÁhhhÁ•hhh¹•¾„Áhhh•¹•h¹•hÁhh¹•h•hhÁ•hhh¹•Á¹•ÁhhhhhhhhÁhÁhÁhh•¹•h•hh•hÁ•¹•h•hh¹•hhhhh¹•hhhhhÁ¹h•Á¹Á••¹•¾h•hhhhh•hh•„¹•hh¹•Á¹•¹•hhhÁ•¹•hh¹•hhhhhhhÁc                                                                                                           MgÁÄÄÍÍÑÑÑðÑÑððððÑðÑÑÑÑðÑÑÑðððÑÑÑÑÑïòðððÑððððòóðóóóóüóóóüóóóóóóóðððÑÑÑÑÑÑÑÄÍÍÄÄÄÁÁÁÁÁhhÁhhccccbXbXXXTTXTTTTTTT                   ,,,,,,,,,,,,,,,,, ,                        Mchh•¹•¹•¹„•hhhhhÁ••hhÁhhÁhÁhhhhhhÁhhhh•¹•¹h•¹hhhhhhhhh•¹•¹••¹hhh•¹ÁhÁh•¹hhh•¹hh•¹•Á•hhhhÁh•¹Ã¹h•hhh•¹••hh•hhhhhhhhhÁhhh•¹hhh•¹h•¹Á•¹hhh•¹hhhhhÁ•hhhhÁhhÁ•Á••¹hhÁ•¹hhh••¹„hhh•¹h•¹•¹•hhh•¹„Á„hhÁhÁ¹•hhhhhhhhhhÁhÁhhW                                                                                               gÁÁÄÍÄÍÑÑóÑððÑððÑððððÑÑÑÑÑÑÑÑÑðððáðððóóððððóóóðóóóóóóóóóóóóðòððððððÑÑÍÍÍÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhchcccbXXXTXTTTTTTTT"                 ,,,,,,,,,,,,,,                             chhÁhh¾„¾h¹•h•hhh¹•¹•hhhhhhÁ•hhh•hhhhhÁhhÁ•hhhÁ•hÁhhÁhh•Á¹•hhhÁ•„Á¹••hhhÁhhhhÁ•¹•¹•Áh•hhhh¹•¹Á•hÁhhh¹•h¹•hhhhh••¹•h•hhhhÁ•hhhÁhhhhhhÁ•hhhh•hh¹•hhhhhhh¹Âh¹•hhhhhhhÁh¹•¾¹•hhÁhhÁhhÁh¹•hÁ•¹•¹Á•hÁh•¹•hÁhhh•ÁhhhhÁc                                                                                                     gÁÄÄÄÍÍÍÑðððððÑÑððÑðÑðÑÑðÍÑÑÑðððððððððððóðóðóóðóóóóðóóüóóóóóðóððððÑÑÑÑÑÍÍÑÍÄÄÄÄÄÄÁÁÁÁhhhhhccccbXXXXXTTTTTT                 ,,,,,,,,,,,,,,,,,                              XhÁh•¹•hhÁh•¹hÁhhhhhhhÁhhÁ•¹h••¹hh•hhhh•¹•¹hhÁ•¹Á•ÁhÁh•¹hhhhhh•¹•¹••¹hh•h••hh•¹hhhhÁh•¹hÁ•Á•¹••¹h•hhhhÁhh•ÁhÁh•¹hhh•¹•hÁh•¹hÁhÁhhhh••¹•hhh•¹ÁhhhhhhhÁhhÁhhhhh•hh•hhhhhh••h•Á•hÁhÁhÁhhhh•¹hhhhhhhh•¹hhh•hh•¹•¹••hhhhX                                                                                          0hÁÁÄÍÍÍÑÑðÑðððÑððÑðÑÑðÑÑðÑÑÑÑÑÑÑÑÑïðáÑóððððððððüóüüóúüþüþüóóððóððÑÑÑÑÑÑÍÍÍÄÍÄÄÍÄÁÁÁÄÁÁÁhcdccbbcbXXXVTTTTTTT"                         ,,,,,,,,,,,,,  ,                    MdÁhÁ•„¹Áhh¹•Á¾hhÁhÁhh•Á•hÁhhÁ¹•hhh¹•hÁhh•Á•ÁhÁh¹•h¹•hhhhhhÁÁÁ¾hh¹•hhh•¹Á¹•hhhhÁhhhhhhhhh¹Á•¹•Á¹•h•hÁhÁh¹•hhhhhhhÁ¹•hhhhhhhhÁ•h•¹Á¹•hÁ•hhhÁhÁhhhÁhhÁhhÁh•¹•h¹•h•hhh¹ÁhÁ¹Áhhhhhhhh•hhhhÁhhÁ•¹•hhh•¹•Á•Áhh¹Á•hM                                                                                        gÁÁÄÄÍÍÐÑÑÑÑðÑððÑðÑÑÑðÑÑÑÑÑÑÑÑÑðÑðððïððóðððóðóðóóóóóóóóüóóóóóðóððïÑÑÑÑÑÍÍÍÍÍÄÄÄÁÄÁÁÁ•hhhhcccccXXXXXTTTTT                     ,,,,,,,,,,,,,,,,, ,,                 FTTTXXXXXXXXXXXXXTFTXXXXXTXXXTF               chhÁ¹••h••¹„ÁhhhÁh•¹Á¹Áh¾•Áhhhhh•¹h•¹hÁ¹hhh•¹•hhhhhhhhh•¹Á¹„hhhhhÁ•¹Á•hh•hhhhhhhÁhhÁhh•¹hh•¹•hh•¹hÁhhhhhhhÁhhhÁ•¹••h•hh•hh•¹•Á¹•hhh•¹•hÁhh•Áhh•Áhhh•hÁ•¹hhhh•¹•hhhÁ•Áhh•h•hhh•¹h•hhh•Á•¹••¹hùÁ¹•¹hhhhhÁc                                                                                          McÁÁÄÄÍÍÑÑÑÑÑÑððÑÑÑðÑðÑðððÑÑðÑÑïÑððÑïÑððïóðóðóóðóðððóóðóóóóúóóðóóððáÑÑÑðÍÍÍÍÍÍÄÄÄÁĹhhhhhhgccccXXTXXTT"TT                  ,  ,,,,,,,,,,,,,,,,,,,,                   FTTFTTXXbXXXXbXXbXXXXXbXXbTFXbXXXXXXbTTXXXXXT           bhÁhhÁh¹•¹•¹•Á¹•ÁhhhÁh¾„¹¹Á•hh•ÁhÁ•¹•ÁhhhhÁh•¹•Áhhh•hÁhhhh•¹•hhÁhhhhÁh¹•h¹•hhÁhhhÁhhÁhhhhhh•¹•hhhhhhhhhhÁhh•hhhhhh¹•¹•h¹•h•¹•Áh¹•hhh¹•hhÁ¹•hÁh¹•hh¹•hÁ„¹•hÁhÁ¹•Áhhh¹••h¹•¹Áhhhh•¹•hh¹•hhh¹•ÁhhhhÁ¾„¹•h•hhW                                                                                                         cÁÄÁÄÄÍÍÑðððóðÑÑÑðÑÑðÑÑÑÑÑðÑÑððÑóÑÑòóðððóóóðóðóóóüüóóóóüúóüóððóððïïÑÍÍÍÍÍÍÍÄÄÍÄÄÄÁÁÁ•hhhccdccXXXXXTXTXTT                     ,,,,,,,,,,,,,,,,,,,,             ETXXXXTFETbXXXbXXXFTTXXbbbbXXXbXXbXbXbXXXXbXbXXXXTFE"bXXXXbXbXXbXTFTXXXXbXTTXX           0chhhhhhhhh•¹Áhhh•hÁ•¹•¹„¾„h•¹h•¹Á••¹Á•hhh•h•¹hhÁh•¹•¹h•h•¹hhh•ÁhÁ•ÁhÁhhÁhhhhhÁh•Á•ÁhhhÁ•hh•¹hhh•hhhhhÁhhhÁhhÁ¹•hÁhhhhÁhhhh•¹hhhhhhh•h•¹•ÁhhhhhhÁhhhhh••hh¾hh•Á•¹•Áh•hhhh•¹h•Á•hhhhhhhhhh•hhhhÁhÁhÁh¹•Áh•¹hÁd                                                                                           MeÁÄÁÄÄÍÍÑððÑÑðÑÑÑÑÑÑðÑÑÑÑÑÑðÑÑðððÑðððððððóòððóóóóóóóóóüüóóóóðòðððáÑÑÑÍÍÍÑÍÍÍÄÄÄÄÄÄù••hhgcccccXXXXXXTT:TT"                 , ,,,,,,,,,,,,,,,,,,,,,,,,,       FFFFHEXbXXbXbXXXbXbXXXbbXXXXXFFTbXXXXXXXXXXXXbXXXXXXXXXbXXXXXXXbXbXbXXTTTTbXXXbXXXXXbXXXbTFEVXXXXXXXbTF"TTXXTTTTTT"FTbXXXXX         bhhhhhhhhhhh••¹•h¹•¹•hhhhÁ¹••hhh•¹•hhh¹•hh¹•hhhÁ•¹•hhhÁ•¹•¹•hhÁh•¹•h¹••hhhÁhh•hhÁ¹••¹•hh•¹•hhÁhÁh¹•hgÁÁÁhhÁ•h•h¹Á•hhhhh•hhhhhhhhhhh¹•hh•¹••hh•hh•hh•Áh¹•hhhh¹•h¹•h¹•h•hh••¹Á•¹•hhhÁhhh••¹•ÁhhhhhhÁhh„¹Á•¹•hhX                                                                                                          b¹•ÄÁÄÍÄÍÑÑÑÑÑÑÑÑÑÑÑðÑðÑðÑÑÑÑÑÑðÑóðððïððòððóóðóóóóóðúüüóóüóóóððððïðÑðÑÑÍÍÍÄÄÄÄÄÄÄÁÁÁÄÁ¹hfghhbXcbXXXTTTTT      ,,,,,,,,,,,,,,,,,,,,,,,,,    XXXXXXXXXXXXbXXTFFTXbXbXXbXXbbXbXXXXbXXXXbXXXbbbXXbXbXXbXXXXXXbXbbXbXXbbbbXXXXXbXbXXXXXXXXXXXXXXbXXbXXXXXbXbXbXXXTF"bXbXXXXbXXXXbXbXbXXbXXXbXXXXXXbXbXXXXXXXX                XhhÁhh••hh•¹hhh••hhhÁh•¹•h•¹h•hÁ¹h•hhhhh•Á•hhh•¹•Áhh•¹„¾hÁhh•¹Áhh•¹h•hÁh•¹h•¹h•¹hÁhh•¹hhÁhh•ÁhÁhù•hh•¹•¹•¹•hhÁhÁhh•¹••ÁhhhhÁhhÁhh•¹•¹h•¹••¹Á•¹hhhhhhhhÁ•¹•hhhhh•¹h•¹hhhhhhÁhhhhh•¹hÁhhhhhÁhhhhhhhÁhhhhhc                                                                                         0chÁ¾ÄÄÄÍÍÑÑÑÑÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÑðÑðÑððððððáóðððóóðóóúóðóóüüóóóóóðóððððÑÑÑÍÑÍÍÍÄÄÄÁÄÁÁÁÁÁhhhhchccccXXXXXTT          ,,,,,,,,,,,,,,,,,,,,,,,,,,            XXXXbXbXXXXXXbXbXXXXXbXXbXXbXbXXXXXbXbbXbXXXXXXXXXXXbXbXXXXbXbXXXbXXXXXXbXXXXXbXbbXbXbXXXXbbXXXXXXXXbXbXXXXXXXXXbXXbXXbXXbXXbXXXXTXXXbXXXXbXXXXXXbXbXXbXXbXXXbXbXbXbX        chhÁ•¹Á¹Âhhhhhh¹•¹••hÁh•¹•hhÁ¹•h•Á¹ÁhhhÁh¹•¹•hÁhhh¹ÁhÁh¾¹„¹•hhh••¹•hÁhhÁ¹••hhhhhhhhhhhÁhh•¹•hÁhhh¹••hhh¹•Áhhhh•¹•hhhÁhhhhh¹•hh•hÁ•hÁ¹Ã¾„¹•hhh¹•Áhhhh•hhÁhh•Á¹••hhÁhhhhhhÁhh•hÁÁÁhÁhhhhhhÁhhhh•Á•hÁhÁhhhhhc                                                                                                          chÁÁÃÄÄËÍÍÑÑÍÍÍðÑðÑÍÑÍÑÑÑÑÑÑðáÑÑðÑðððððïððóðóóðúóúóóóóüóóóüóóððòðóðÑÑÍÑÑÍÍÍÍÄÄÄÁÄÄÁÁhhhhhcccccXcXXXTTTT           ,,,,,,,,,,,,,,,,,,,,,,,,,,,,  ,,,            XbXXXbXXXXXbXXbXXXbXbXbXXXbXXXXXbXXXXXXXXbXbXXXXXbXbXXXXbXXbXXbXbXXbXbXbXXXbXbXXXXXXXbXbXXXXXbbbXbXbXbXXXXXbbbXbXXbXXbXXbXXbXXXbXbXXXTTTXbXbXXXXXXXbbbXXXXXXbXXbXXXbXXXbXXXX               X•¹Á•ÁhhÁhÁhhhh•¹Á¹•¹Á•hhÁh•¹Á„h•hÁhhhhhhÁhhhhhhÁ•••hhh•¹hhhhÁ•Áh•¹hÁhh•hh•hhhhÁ•¹•hhhhhh•¹hh•¹•hh•hhhÁ¹„•hhhhÁhÁhhhhhÁ¹••¹Áh••¹hÁhÁhh•¹•Á¹hÁùhhÁh•¹hÁh•¹hhÁh¾•hhhÁh•¹•¹Á¹•hhhhhhhhhh•¹Á¹Áh¾hhÁhÁ„M                                                                               0bchÁÁÄÄÄÍÑÍÍÑÑÑÍÍÑÍÑðÑÐÑÑÍÍÑÑðÑÑÑÑÑÑððóðððóððóðóðóüúóóüóóóðóóóðïðÑÑÑÑÑÍÑÍÍÄÄÄÄÄÁÄÁÁÁÁÁhhhccccXXXXXVTTTT                  ,, ,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,       XXXbXXbXbXXbXXbXXbXbXXXbXbXbXbXXXXbXXbXbXXbXXXXXXXbXbXbXXbXXbXXXXbXXbXXbXXbXbXXbcbXbXXbXbXbXXXXXXbXXXXXbXXbXXXXXbXXbXXbbXXbXXbXXXXXXXXXXXXXXXXXXXXbXXXXXbXbbXXbXbXbXbXbXXbXX      Thhh•¹•¹•hhÁhÁhÁhÁhhh••hÁ¹•h•¹•h•¹Á•¹•hhhhÁhÁhÁh•h•hhh¹•¹Á•Áhhhhhhhh¹•¹•hhhhÁ•¹•h¹•hh•hÁhÁ¹•h¹•¾hhÁhÁhhÁ•¹•Áhh¾¹•hÁhhhhhhhh•Á¹•hh•¹•hhÁhÁhÁhÁ„¹•hhh¹•Á•¹•hhhhhÁhhh•h¹Á•ÁhÁhhhhh¹•hÁ•ÁhhhhhhhÁ•¹•¹••Ác                                                                                               cghhÁÁÄÄÄÍÍÍÍÑÍÍÍÍÑÑÑÑÏÑÑÍÑÍÑÑÑÑÑððÑðððóðððóóðòðóóóóóóóúúüóðóðððððÑÑÑÍÍÍÍÍÄÍÄÄÄÁÁÄÄÁhhhhccccccXXXXTTTT             ,,,,,,,,,,,,,,,,,,,,,,,,,,,,           XbXcXbXbXbXXbbXXbXXXXbXXbXXXbXXbXXbXXXXbXXbXbXXbXXXXXbXXbXXbXXbbXXXbXXbXXbXXXXbXXXXbXcXXXbXbbXbXbXXcbXbXXbXXXbXbXbXXXXXXXbXXbXXbXbXbXbbbbXbXbXbXXbXXXbXbXXXXXbXXXXXXXbXXbXXX                  c•¹„hhhhhÁ•hhhÁ•hhhÁ¹hÁhhh•¹h•¹hhÁhhhh•Á•hh••¹•Á¹•hÁhhhh•¹ÁhhÁhhhhhhhhh•hhh•¹hhhh••¹hÁ¾„hh••h•hùhhhhÁ¹hÁh•¹„hhhÁhÁhhhhhhÁ¹„hhhhhhhhhÁhhhhùh¾„ÁhhÁ•¹•¹•hhh•hÁhh•¹•ÁhhhhhhhÁ•¹„Áhhhh•¹ÁhhÁhÁ•¹•¹hhhh•¹hhW                                                                                                                Xhhh•¹ÄÍÄÍÄÄÍÍÍÍÑÑÑÍÑÑÍÍÑÑÍÍÑÍÑðÑïððððððÑðïòðóóóóððóüüóüýüóóóðòóððÑÑðÑÍÍÍÍÍÍÍÄÄÄÁÁÁÁhhhhchccccbXXXTTT                ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,        XXXXbXXXXXbXXXXbXbXbXXbXXbXXXbXXbXXbXbXXbXXbXXbXbXbXbXXbXXbXbXXXXbXXbXXbXXbXbXXbXbXXbXXbXXXXXXXbXXbXXXXbXbXXbXbXXXbXXbXbXXbXXbXXXXbXXXXXXXXbXXXbXbXXbXbXbXbXbXbXbbbbXbXXbXXX          bhhhhhhhhh•¹••hh¹•Áh•Áhhhhhh•¹•hhhhhhhÁh¹•¹•Á¹•hhh¹•hhhhhÁ¾hh•Áh•h•hÁh•¹•Áhh•¹•hhh¹•hhhÁ¹•h¹•¹¹Á•¹•h•h••¹•hhhhhhÁhÁhhhhÁhhhh¾hhhhhhhhh•hh•hhhÁ¹•Áhhhhhhh¹••h¹•hhhÁhh¹•hÁ•hhhhh•h¹•hhhÁhhhh•Áh¹•h„Á¾„h•Áhc                                                                       bchhhÁÁÄÄÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÑÑÑÑÍðÑÑÑÑÑðïóóðððóððóóóóúóóóóóðóóðóðððÑÑðÍÍÑÍÍÍÍÄÄÄÄÄÄÁhÁÁhhhccccXXXXTXXTTTT       ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,       XXbXXcXbXbXbXXbXXXXbXbXXbXbXbXbXXXXXbXbXXbXXXbXXXbXbXXbXXbXXcbXbbXbXXXbXbXXbXXbXcXbXXXcXcbXcbXbXXbXbbcXXbXXbXXXbXbXbXXbXXbXXbXXbXXXXbXbXbbXbXbXXbXXbXXXXXbXXcXbXXXXXXXXbXXXX                    McÁhhhh•Á¹•¹hhhhh•¹„hhhh•Á¹„•hhh•hhÁhh•hhhhhhhÁ•¹••hhhÁg¹•h•¹Á•¹•¹hh•¹hÁhhhhh•hhhÁhhh•h¾Áh••hhh•¹Á¹hÁhhhh•ÁhhhÁhhh•ÁhÁ••¹„hhÁhhhhhùh•¹h•¹•Á•hh••hhÁhh•¹hhhhhÁhhhhh•¹h•hÁh•¹„¾hhÁhÁhhh•¹Á¾„h•¹¹•¹•ÁhhX                                                                                                                                    bhghhÁÁÁÄÄÍÄÍÄÍÍÄÍÍÍÍÍÍÍÍÑÑÍÍÑÑÑÑÑÑÑÑðððððððððððóóóóóóúóóóóóóðóððçðÑÑÍÑÍÍÍÍÍÄÄÄÄÁÁÁhhhhhhcccbXXXTTTTTT             ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,      XXXXbbbXbXXXbXXbbXbXXXXbXXXcXXXbXXbXbXXcXbXXcXbXXbXXcXbXcbXXbXXXXXXbXbXXXbXXcbXbXcXbXbXbXbXbXXXXbXXXXXbXXXbXbXbXXXXXbXXXbcXbcXXbXXbXcXXcXXXXcXbXXXbXbcXbXbXbXXXbXbXXbbbXbXbX           cghhhhhhh•¹•hhÁhhhhhÁhÁ•¹•h¾¹•Áh¹•hhhhhhÁhÁhhhhhhh¹•hhÁhh¹•hhhhhÁhh•hÁhhÁhhhh¹•hÁh••¹•¹•„¹•¹¹•hhÁhhhhhÁhhÁÁh¹•¾„¹•h¹•hh¹•¹•hhhhhhhhhhhhhÁhh¹•¹•hÁ¹•hhhhhÁ•hhhhhhhhÁhÁ¹hhhhhhhhhÁhhhhhhhh¹•Á••Á¹•hM                                                      \chhh•ÁÁÄÄÄÍÄÄÄÍÄÄÄÍÍÄÑÍÐÍÍÍÍÑÑðððïðððÑòððóððóóóóóðóðóúóóúúóòóðÑÑÑÑÑÍÑÑÐÍÍÍÄÄÁÃÄÄÁÁhhhfcccccXbXXXTTT ,,,,,,,,,,,,,,,,,,,,,,,,         XXbXXXXXXbXbXbXXXXbXbXbXXcbXbXcXbXXXcXXbXXcbXXXbXXXbXXcXXcXXcbXbbXXbXXbXbXbXXXXXcXbXXXbXXXXXcbXbXXXbXbXbXbXXXXbXbbXbXbbXXXXbXcXbXbXXbXbXXcbXXbXbXbXXXbXXcXXXcbXXbXbXXXXXXXXX                   Xhhhhhh•¹•hhhhhhh•¹•¹•h¹„hhh•hÁhhhÁhhhhhhhhhhhhhhhhh•¹„¾hÁhh•¹•h•¹•¹•hÁhhhh••hh•¹hhhh•¹•••¹¾„•hÁhhhhhhhhhh•¹hhhhhhhhhh•¹••¹hhhhhhhhh•hhhhhhh•¹hhhh•h•¹•¹„hÁhhhÁhh•¹•hh•hhhhhhhhhhhhÁhÁhhhh•¹•¹hhhhÁc                                              00UVV\^^^^^`^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^`^^^^^^`^^^^^^`^^^^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``^`^^^^^^^^^^^^^`^^^^^^^^^`^^^^^^^^^^^f–Â›ÆÆÆÆÆÇÆÌÌÌÌÉÌÌÌÌÌÌÌÌÌÌÌÌÌÌÎ×Î×Þ×ßßßßßßßßßæßßßàâàßàáâèèèßèßßßßßßßßÎÌ×ÌÌÌÌÌÌÉÈÇÆÆÆÆÆÆÆÆÂ–––––––…–‚‚‚‚‚‚‚‚‚‚_‚‚x‚_zdz_‚_‚x‚‚‚‚^^^^^^^^^^^^^^^^^^^`^^`^^``````````^^`^`^^^^^^``^`^^^`````^````^```^^```^`^^^`^``^^`^^^``^^``^^^^^^^^^^^^^^^^^`^`^``^``^^^`^^^^^^^`^^^^^^^`^^`^`````^^``^^```^```^`^^^`^`^^^^`^^^`^^^`````^````````^``````^`^`^``^``^^````````````^`^``^^^``^`````````^`^```````e`````^\VUM000,,,,,,,,,,,,,,,,,,,,,,,,               XXXbXXbcXXbXXXbXXbXXXXbXXbcXcXbXbXbbXbcXXcXcXcbXbXXbXcXXbXcbXcXXXXbXbXbXXXcXbcXcXXcXbcXbXbcXbXXXbXbXbXXbXXcXXbXXXXXbXXXXbXcXcXbcXXXbXcXbXbcXcXXXXbXcbXcbXcXcXcbXXXXbXbXbXbcX             TchhhhÁhhhh¹•hhÁhhhhh¹•hh¹•hh¾„¹•¹•hhÁ¹•hÁh•hhhhÁhÁhhhÁhÁhhhhhhhhÁ¹•hÁ•¹ÁhÁhhh¹•hhhhÁhh•hh¹•¹•h¹Áh•hhhÁhhhhhh••ÁhÁhhhhhhh•¹•¾hhhÁhhhh¹•h•Áhh•¹••¹•hhh¹•hhhh•¹•hÁhh•hÁ¹•hh¹ÃhÁhhhÁhÁhhhhhhhhÁhhhhhÁhhW                                   0T^‚ÊÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓ×ÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓ×Ó×Ó××ÓÓ×ÓÓØÓÔÓÔÓÔÓÔÓÓÔÓÓÓÓÔÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓ×ÓÓÓ×Ó×ÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÊÓÓÊ“`U0,,,,,,,,,K2,,,,,,,,,,,,,        XXbXXbXXbXcXbXbbXbXbcXbXcXXcXcXcXXXXXcXcbXcXcXcXXbXcbXcXXcXXcbXcbXXXbXXcbXXcXXcbXcXcXXcXXbXXbXcXbXXXXbXXcbXcXbXbXbXbXcbXcXcXcXcXbXbXcXcXcXXcXcbXbXXXXcXcXXcXcXXcbXbXbXcXXcXX              cÁhhÁhhhhÁh•Áh¾Áh•Á•hhhhhhhÁhhhhhh•¹•h•h•¹hh•ÁhhhhhhÁhÁhhÁhhhÁhù••hÁ¹hhhhhhÁhhhhhhhhh•¹hhhhhh•¹••f¹hhhÁhhhhh•¹hhhh•Á••hh¹hh•¹•hÁhÁhhhhÁ•¹ÁhhÁ¹•¹•hhhhhhÁh•¹hh•h•¹h•¹••hhÁhhhhhhÁhÁhhÁhhhÁhÁhhhhhÁhhd                                        0Va–ÓÓÓÓÓÓÓÓ×ÙÚÚàààèèëèèëèèëèèëèèëèëèëèèëèëèèèëèèèèèèèèèèèèèèëèëèëèëèëèëèëèèëèëèëèèëèëèëñèèëõèëôèíèèëèõèëèëèëèëíèëèèõèëíèëèõèëííèíèëñèíèõèíèíèëèõèíñíñíñëõíõõõõõõõõõèõèõñõñõòõñõõôõõôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõ÷õõ÷õõ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõôõõõõõõõõõõõõôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõôõõõëõõõõôõõõõõõõõõõõôõõôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõôõõõôõõõôõõôõõôõñõñõèõèõèõèõôôôíñëíñëõõõõõôôôôëôëôëôëôôèëèëèëíèëèëèèëííñíèëõèëõèëèëèõèíèëèèæààÚÚÚ×ÓÓÓÓÓÓÓÊ–f\M,,,,,,,LJNMµ·µ¶»¶»»»»¶µµ¶¹M,,,,,,,,,,,,,,, ,      XXXXbXbXbXXbcXXXXXcXXXXXbXcbcXcXbXbbcXcXcXbXcXXbXbXXXXXcXXXcXXXbXXbXXXXbcXbXcXXcXXcXXXXXcXXcXXbXcXbXbXXbXXXXcXXXbXXcXXXXXbbcXcXcXXXbXcXcXcXbcXXbXXbXbXbXcbXcXXXbXXbXXXXcXbXX                  XdhÁhhhÁ•hhh¹•hh¹•¹•¹•hhhÁhhÁhhhhhhhhhh¹••hhh¹•hhhh„¾hhhhhhhhhhhhhÁ¹•hhhhhhhhhhhÁhhhhh•hhhhhhhhhh¹•ÁhÁhhhÁhhhhhhhhhh¹Á¹•hhhhhh¹•ÁhhhÁ•h••h•h•„¹•hh¹•hhÁhhÁhhhhhh¹•hhhhhh¹•hhhhhhh•hhhhhhhhhhhh•Á•hh•hX                                            \‚ÊÓÓÓÓÓÓÙàèèò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúüúúúúúûüúúúúúûúüüüúúúüüüúüüúüúúýüúýúüüúýúüüúüúýüúýüüýúýüüüýüýüýüýüýüýüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýþþýýýýýýýýþþþþþþþþþþþþþþýþþþþþþÿþþÿþþþþþþþþÿýþþþÿýþþþþþþþÿþÿþÿþÿþÿþÿþÿþþÿÿþÿýÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿþÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿýþÿÿÿþÿþÿÿþÿþÿþÿÿÿþÿþÿþÿþþþÿþþÿýÿþþÿþÿþÿþÿýÿýþþþþþþþþÿýÿþÿÿþÿýÿþÿýþÿýþÿýþýÿýÿýýÿýþþýþýþýþýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýýýýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüüüüúýúýúýýüýüýüüýüýüýýüüúûüúýúýüúüüüüýúýúúýúüýúûüüúýú÷õëæÚ×ÓÓÓÓÓÊ”\0,,,,,,,0XcM³,IN¼»¶¶µ»»¶¶µ¶¶¶»¶»»Í»»¶¶µµµ¹M,,,,,,,,,,,,,,,,,,,,,,,,,,,,  ,          XcbXcXXXcXXcXcXcXcXcXcbcXXXcXcXXcXXXXcXcXcXXbXbXXcXXcXbXcXcXcXXXcXcXcbXcXcXcbcXXcXcXcbXcbXcbXcXcXXXXcXXXbXcXcXcXcXcXcXcbXXXcbcXcbXXXcXcXcXXbXbXcbXXXcXXXXXcXcbXXcXcXcbXbXcXX       0cÁhh•¹•hhhh••¹„hhhhhhhhÁhhhhhhh•hhhhhhh¹•hhhh•hh•¹hhhhhhhhhhhhhhhh•¹•hhhhhh•hhhhhg•¹•hhhÁhhhhhhhhhhhhÁ•hhÁhhhhhÁhhh•hhhhhh¹„¾hh•¹•¹•¹•¹•¹•¹•hhhhhÁhhhhhhhhhhhhhh•hhhhhhhhhh••¹hhhhhhhhhh•¹•¹h•¹hd0                            UfžÓÓÓÓÙàèèõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷ú÷ú÷ú÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúüúúúúúúúúúýúüúúüúúüúüúüüûúúüüüúûúüýúýúýüüúýúýúýüüýúýýüýúýüýúýüýüýýüüýüýüýüýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýþýýýýýýþýýýýþþþþþþþþþþþþþþþþþþþþÿþÿþþÿýþþþþþþþÿþÿþÿþÿýÿÿþÿýÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþþÿÿÿþÿÿþÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿþÿÿþÿþÿÿÿþÿþÿþÿÿþÿþÿÿÿÿýÿÿþÿþÿÿþÿþÿþÿþÿýÿþÿþÿþÿþÿþÿþþþþþýÿþþÿþÿýÿþýÿþÿþýÿýÿþþÿþÿþÿþÿýÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýþýþþýþýþþþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýüýüýüüýýýýýýýüýýüýýúýúýýýýüüýúýüûüýúüüúúüüýúõëèÚÓÓÓÓÊ“\0,,,,,,,ccccc‚¶µµµ¶¶µ¶µµµµµµµµµµµµµµµµµµ¼µµ¾,,,,,,,,,,,,,,,,,,,,,,,,, ,       XXXcXcXcXbcXcXcXcXcXcXcXXbXcXbcXXbcXXcXcXcXXbXXcXXXcbcXXXbXcXXbcXcXcXcXXcXb@=XcXbcXcXcXXXcXXcXXcXcXcXcbcXXXcXcXcXcXccXXcXbcXXXcXXXcXXcXcXcXXXXcXcXXcXcXcXXcXXXXcXcXcXcXcXXcX               chhhh•¹Á•hh¹•¾hhhhhhÁhhhÁhhhhh¹•hhh•¹••¹•hhh•¹••hh¹•hhhhhhhhhhhhhhhhh¹•hh•h¹•hhhhh•¹•hhÁhhhÁ•hhh•hhh¹Áhhhhh•hhhhhh¹•hÁhhhhhh•¹•hh•Áhhhhhhhhh¹•hhÁhhhÁhhhhhhhhhhhh¹••hhhhh•h¹•¹f•¹•hhhhhhhhhhhhhhhX                                ^ÓÓÓÓÙàèò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷÷ú÷ú÷ú÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúûúüúüúúüúúúúûüúûüúýúüúúüúýúûüüüýúúüüüüúüüüýúýüúýüýüúýüüüýüýüýüýüüýüüýüýüýüýüýüüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýþýýÿüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþÿþÿþÿýþþþÿýþþÿýþþþÿýþþÿþÿþÿþþÿþÿþÿþÿþÿþÿÿþÿÿÿþþÿÿþÿÿþÿÿÿÿÿþÿÿþÿÿÿþÿÿþÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿþÿÿÿþÿÿÿþÿþÿÿþÿÿþÿÿþÿþþÿþÿÿþÿþÿþþþÿþÿþÿþÿÿþÿþÿþÿýÿýÿýÿþÿþÿÿþÿþÿýþÿýÿýÿýþÿýÿýýÿýþþþþþþþþþþþÿþÿýþþþþþþþþÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýþýýþýþýýýýþýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýüýüýýüüüüüüúýúüýüüýýýüúüúýüýüüýüýúýúýüýüûüüüüüüúõæÚÓÓÓÓÇf0,,,,,,,,,,0cccXccchºµµµµµµµ¼µµµ¼µµµµµµµµµµµµµµµµh,,,,,,,,,,,,,,,,,       XXcXXcbXXcXccXccXcXcccXcXcXXXcbXXXXbcXcccXcXbXcXbccXcbcXXXcbXXXXbXcXcXcbXXcA$cXXcXcbccbcXcXcXccXcXbXcXcXXccXcccXcXccXccXXcXXbcXbXbbXXXcXcXcbXXXXXccXcXcXbcXbXbXXXXcbcXcXXcXX         Thh•¹hhhhhhÁ•¹•hhhhhhhhhhhh•¹•Áh•¹h•¹hhhhh•¹Á¹Á•hÁhhhhhhhhhhhhhhhhhÁh•¹Áhhhhh•¹hhÁhhhhhhÁ¹hh•¹•h•¹•hh•Áh•¹h•hhhhhhhÁ••hhh•¹„hh•¹hhhhhÁhh•hhhhhhhhhhhhhhhhhÁhh•hhh•¹hhhh•¹•Áh•¹Á•hhhhhhhhhhhhhh„M                                  \–ÓÓÓ×àèòõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷ú÷ú÷ú÷ú÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúûúýúüúúüúúúüúüüúýúüüúúúúüüüüúüüüýúüüüüýúýúýüüüüüüýüüüüýúýüüýüýüýüýüýüýýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýþýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþýÿþþýþþþþþþÿþÿþýÿþÿþÿÿþÿþÿÿþÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿþþÿÿÿþÿÿþÿþÿþÿþÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿþÿÿþÿþÿÿþÿþÿÿþÿþÿÿþÿÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿþÿýÿþÿþÿþÿþÿþÿþþþþþþþÿþÿýÿýÿýÿþýÿýÿÿýÿýÿþÿþÿþÿþÿýþþýÿýÿþÿþÿþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýþþýþýþþþþýþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýüýüýüüýýýýýýýýýýüüýúýúýýýýüûüüýúýúýüüýúýúüüüüûýúýüüüúõæÚÓÓÓ^-,,,,XcXcXcXcchµµµµµµµµµµµµµµµµ¶µ¶»º»¹»¾¹ÁÁ¾0,,,,,,,,,,,,,,,,,,,,,     XXXcXbcXcXcXcccXccYYYXcXcXbYXbXXbYYXXcXYdXbXcXXbcXYYcXXcbcYYXbXcXYYbXcXcXcb@$XYXcXcXYYYXYXYcXYXbcYYXXcXYcXb[bXccXYYcXXccXXXYXXXXXXYYcbYcccXXXYcXcXcYYcXXcXYYXYXcXcXcXXcXcXcX                     chhhhhhhhÁhhh¹•hhhÁhhhhhhh¹•hh¹•¹••¹•hhhhhhÁhhhhh¹•¹••hhhhÁhhhÁh•hÁhhhhhh•¹•hhhhhhhhhhhhhhhÁhhhh¹•h¹•h¹•Áhh¹•h•hhhhh¹hhhhhhh¾hhhhhÁhhhh¹••hhÁhhhhhhhhhhh•h•h¹•hhh•hhhÁhhh¹•¹•hh¹•¹•hhÁhhhÁhhhhc                                       U‚ÊÓÓÙàòõ÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷÷÷÷ú÷ú÷ú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúúúüúúúúûúüúúüüúýúûüúüúúüýüýúüúûüüüûüüúýúýúüüüüüüüûüüüýûýüüýüýýüýüýüýüýüýüüýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýÿýþþþþþýþþþþþþþþþþþþþþþþþÿþþþþÿþÿþþÿýþþþÿþÿýþþþþþÿþþýþþÿþÿþÿýÿþÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿÿÿÿÿÿÿþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿýÿýþÿþÿþÿýÿþÿþÿþÿþÿþþÿýÿýÿýÿýÿýþþþþÿýþþþþþþþþÿýÿýýþýþþþþþþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýýþýþýýýýþýýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüýüýüýýüüüüüüüüüüûýüüüýúýúýúýýýûýýýüüûüüüüýýûüüúýúýûýúûüú÷ëÙÓÓÓ–\,,,,,,,McXcXcXcXcc¹¶µ¶¹¶¹¹¾»¹ÁÁÁÁÁÁÁÄÁÄÁÁÄÁÁÄÁ¾J,,,,,,,,,,,,,,,,,,,,,  XXcXXcXcXcXccXccY$$$@cXcX$@cXX$$>XA=XcXbXcXcX$@cXc$YbX@YXcXXXc@$@cX@$$@@$cb$Yc$@cA@Xc@A$cX$$cXcXcY$$@Xb@$Y$YXcXbY=XcbY$$XcY$cXcXcXcXcbXXcX          XhhÁ•hhhhhh•¹•h•¹••h•hhhhhh•¹„¾h•¹•hh•hhhÁh•hh•¹„••¹h•hhÁhhh•¹•¹hhhhh•¹hhhhhhhhhhhhhhh•¹•h•h•¹hh•¹•hhhhÁhù•h•¹hhhhhhhhhÁhhhh¹•hhhhhhÁ•¹hhhh•hhhhhh•h•¹Á¹hh•hh•¹hhÁhh•••h•h•hhhhÁhhhhhhÁhhW                                          0`žÓÓ×àèòõó÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷ú÷÷ú÷ú÷ú÷÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúüúûúúüúúúüúüúûúúúúüúüûúýúúúúýúüüúýúüûüüüüüüýüûüüýüüýúýüüüýýüýüüýüýüýüýüýüýýüýüýüýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþÿýÿþÿþþýÿþÿþÿþþÿþÿÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿÿþþÿþÿþÿÿþÿþÿþÿÿÿþÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿÿÿÿþÿþÿþÿÿþÿþÿýÿþÿþþÿþÿþÿþÿþÿÿÿþÿþþÿþÿþÿþÿþÿþýÿýÿýÿýÿýÿýÿþÿþÿýÿýÿþÿþÿþÿþþþýÿýÿþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþýþýþþþþýþþýýýýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýüýüýüüýýýýýýýýýýüüüýýüýüýüýúýúüúüüüüüüüýúüúüýüýúýúýúýüüüüúýõæ×ÓÓÓ“M,,,,,,cXXcXccXccchÁÁÁÁÄÁÁÁÁÄÁÄÁÁÄÁÁÁÁÁÄÁÁÄÁÁľg,,,,,,,,,,,,,,,,,     XcXcXccXXXcXccXX=@bcXY$@ccY$Xc@$YbXXc@$cXcXXXcXB$cX@$Yc@$Yb$$X@Yb@XcXcXc@$XcYXXYcX@@cXY@XbYXb@$XX@@@$cbYcY$XccccXYc@bX@XXYXYcXcXXbX$@bcYcX@Xc@bXcXcXbcXcXccX                Mhhh•¹•hhhhÁh¹•hhh¹Á¹•hhhhh•hh•¹Âhhh¹Á•¹•Áhh¹•h•¹•¹•h•¹•hh¹•hÁ¾„¹•hh•hhÁ•¹••hhhhhhhhhhhhhh¹•¹•hh•¹••hhhhhh¹•hhhhh•¹•hÁhhhhhhhhh¹•hhÁh¹•hhhhh¹•h•¹•h¹••hÁh•¹•Áh•¹••¹•h¹•¹•¹•¹•¹•h•h¹•hhÁhhhc                                :”ÊÓ×Ùèòò÷÷÷÷õóõ÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷ú÷ú÷ú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûüúúúúûüúûúüúúýúýúüúüüúýüýýúýúýúüüüüúýúýúýúüüýúüüýúýüüýýúüýúýýüýüýüýüýüýüüýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþýýþþþþþþþþþþþþþþþþþþÿþÿþþÿýþþþþþþÿþÿýþþþÿþÿþþþþþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿþÿþþÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿþÿþÿþÿþÿÿÿþÿýÿÿÿþÿþÿþþÿÿÿþÿÿþÿþÿþÿÿÿþÿÿþÿþÿþÿþÿþþþþÿþÿþþÿþþþÿþþþÿýÿýÿþÿýÿýÿþþþþþÿýÿýþþþþþþþÿþÿýþÿýþþþþÿþÿþþþÿýþþþþþþþþþþþþþþþþþþþþþþþþþþýþýýþýþýýýýþýýþþýýýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýüýüýýüüüüüüüüüüýýýüüýüýúýüüüýýýýýûüýüûüüýüýúýúýúýúýúýúýûüüüúúõàÓÓÓ\,,,,,,,,,,XcXcXbbcXcchhÁÁÁÁÁÁÄÁÁÄÁÁ»¾»»»¶»¶¶¶¶µµµ¶h,,,,,,,,,,,,,,,,,,,,,,,,,, ,    XXcXcXXcXcXccXc@$cXXcbYXc@$Xb@$$YB$XcXcXcXX$YXcc$YXYXcXY$@ccX@Xcccc@ccc$YY$cbc$B@$cXX$$$$c@>Xc=@Y$XcX$$cXcXccY$@XY$$YYXcXY@cY$YX$@cbYXccXcXcXcXcXcX          X•¹hhh••h•¹•h•hhÁhhhh••¹h•¹hhhhhhhhhÁ¹hÁh•¹hhhhhhhhhÁh•hÁ•¹•hhÁh•¹Á•¹hh•¹hhhh•hhhhhhhh•¹„¾•¹hùhh•¹hhhhhhhhÁhh•¹•¹hhhhhhhhhhhhhhh•h•¹••hh•Áhh•¹hhh¾•¹hhh•¹hh•¹Á¹Áhhhhhhhhhhh•¹Á•hhÁhÁhhhX                                  M–ÓÓÙàñõ÷÷÷õ÷÷÷÷÷÷÷õ÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷ú÷÷ú÷ú÷ú÷÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúýúúúúúúüúýúúúúüúüúúüúúúúüúüúüüúýúýúýúüüýúýüüýüüüüýúüüýýüüüúýüýüýüýüýüýýüýüýüüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýýýýýþþýþþþþþþþþþþþþþþþþþþþýþþþþÿþþÿþþþýÿþÿýÿþþÿýÿÿÿþÿýÿþÿþÿþÿýÿþÿþÿþÿþÿþÿþÿþÿÿÿÿþÿþÿÿþÿÿÿþÿþÿþÿÿÿþÿþÿþÿÿÿþÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿþÿþÿÿÿÿþÿþÿÿþÿÿÿþþÿÿþþÿþÿÿÿþþÿþþÿþþÿþÿþÿþÿÿÿÿþÿþÿþÿþÿþÿþÿÿþÿýÿþýýÿýÿýÿþÿþÿýÿýÿýÿýÿþþþþþýÿýþýÿþþþþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþþýþýþþþþýþþýýþýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýýýýýýýýûýüüýúýüýüüûüýýýúüúüüýúýüüýúýúýúýúýúýúýúýúýúýúýúýúúèÚÓÓ\-,,,,,,,cXcXXXcXcXcc¾»»»»¶¶¶µµµµµµµµµµµµµ¶µµµµ¶µ,,,,,,,,,,,,,,,,,,,,,,,,,,,,       XcXcXccXcXcXccX@XXcXcX@X$Y@$c@cXXX@$YccXcXcY@cbcYY$XcXc$@$YXXc$@XcXcX@$bcYYXXcX$@@$ccY@ccYX@$cX$@@cX=$bcXcXccX@YccXYbc$@$@cXc=@Y$XXYcX>@c=@Xc@XcXcXXXcXcXcXX            Xhhh¹•Áh¹•¹•hhh¹•h¹•¹•hh•¹•hh¾„¹•hh•h•hhh•Á•¹•hhhhhhhhÁhhhh•¹•h¹•hhh•¹•hhhhÁÁhh•¹•ghhhhhhhhh¹•hhhhhh•Á•hhhhhhhhh•h•¹•hhhhÁhhhhh•Á•¹•¹•hh¹•h¹•hhhhhhh•¹•hhhhh•¹•h•hh••¹•hhhhhhhhhhÁhh¹•hÁhhhhM                                   U–ÓÓÙèò÷÷õóõ÷÷óõ÷õ÷÷õ÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷ú÷÷÷ú÷úú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúúüúúýúûúüúúüúýúüüûüüüüúýúýüûüüüúýüüúýúýúýúýúýýúüüýüüüýýýýüýúýüýüýüýüüýüýüýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþýýþýþþþþþþþþþþþþþþþþþþÿýÿþþþÿþþþÿþÿýþþÿýÿþþÿýþþþþÿýþÿþÿþþÿýÿþÿþÿþÿþÿþÿþÿÿþþþÿÿÿþÿÿþÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿþÿþÿÿÿÿþÿýÿþÿþÿÿþÿþÿÿÿþÿÿÿþÿþþÿÿþÿÿþÿÿþÿþÿþÿþþþþþþþÿþÿþÿþÿþþþþþÿþÿÿÿýÿýÿýþþþþÿýþþÿýÿýþÿþÿþÿþÿýÿýþþÿþþþþÿþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþþýýþýþýýýýþýýþþýþýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýüüüüüüüüüüýûüýüýüýüüýúüúýýýýýûýúýúüüüüüýúýúýúüüüûýúýúýúýúýúüúõàÓÓž\,,,,,,,,cXXcXcXXcXcX¾µµµµµµµµµµµµµµµµ¶µ¶µµµ¶µµµ¶h,,,,,,,,,,,,,,,,,,    XXccXcXccXcXcXc$YccXcXc$@Y$cY$XX!@$$c@$=XcXcbY$$@B$$cYcXXc@XccX@$cXccc@$$@$=cX@$@$@$Yb$Yc$=@$@c@$=$Y$$YXB$@@cXccXc$=@YXc@$@@X$=YX$Xc=@c@$@@XXY$$$cXccXcXccXcccW            ch„•hhhhhhhhhh•Á„Áhh•¹hhhhhhhh•¹•¹hh•¹•¹hhhhhhhhhhhhhhh•¹••¹„¾hh¹hhhh•hhÁ¹h•¹••ÁhÁhhhhh••hhhhÁh•¹•¹hhhhhhhhh•¹•¹•hh•hÁhhhhhh•¹hhhhhhhhhhhhhhÁhh•h•¹hhhhh•¹••¹h•¹hhhhhhhhhhhhhhh•¹„¾hhhhhhc                                       U–ÓÓÙèòò÷òó÷õ÷óõ÷÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷ú÷ú÷ú÷÷ú÷÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúüúúúûúúúúüúüûúúúüúúúüúûúüúüúúüúýúüúýúýúýúüüýúýúüüýüüýúýýúýúýüýüýüýüýüýýüýüýüüýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýýýþþýþþþþþþþþþþþþþþþþþþþýþþþþþþþÿþþþýÿþÿþýÿýÿþÿþÿþÿýÿþýÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿÿÿþÿþÿþÿÿÿÿþÿþÿþÿÿÿþÿþÿÿþÿþÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿþþÿÿþÿþÿþÿÿþÿÿþÿþýÿþÿþÿþÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþþþýýÿýÿýÿþþÿþýÿþÿþýÿýÿþþþþþþþÿýÿþþþýÿþþþþýþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþþýþþýýþýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýýýýýýýýýýüýýýüüýüýýüýýýúýúýúýüýüýûüüûüüýüýüüûýúüüüúýúýúýúýúüüúõà×Óž\0,,cXXbcXbcXcXc¹µµµµµµµµµµ¶µ¶µ¶µ¶µ¶µ¶µ¶µ¶¶b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , XbcXcccXcXccXcX=@cccXcX$A@YccYYcc@@YcX_@Y@YccXcYX@@YXcY$bcXc$@$YXcc@=ccccXYY@@YccXcY@@YY$$Yc@XcX@Y@ccYYY@YX=XcX@@YcXXXXcX@@XcXcY@@Xc@Y@@Y@cXX@ccY@@XcccX@@@$XcXccXcXccccXX        chhh¹•hhhhhhÁhhh¹¹•hhh„¹•hhhhhhhhhhÁhhhhhhh•hÁhÁhhhÁhhhhhhh¹•hhhhhhhhhh•¹•hhh•¹•hh¹•¹•hÁhhÁhh¹•ÁhhhhhhhhhhÁ•¹•hhÁhhh¹•h¹•hhÁ•h•hhhhhhhhhhÁhh•hhhh•h¹•h•¹•hhhhhhh¹ÁhhhhhhhhhÁ•ÁhhhÁhhhhhhhÁhhhW                            UÓÓÙèò÷÷÷õ÷õó÷÷õ÷÷õ÷õóõ÷÷õ÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷úú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúûüúúüúúüúúúüúýúúüüüúýüüúüüüüúýúýúýúüúýúýúýüüüýýúýúýúýüüüüýüýüýüýüýüýüüýüýüýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþýýþýýþþþþþþþþþþþþþþþþþÿýÿþþÿþþþþÿýÿýþþþÿýÿýþþþÿþþÿþÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿÿÿþÿþþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿþÿþÿþÿÿÿÿÿþÿþÿþþÿÿÿþÿþÿÿÿþÿþÿýÿÿþÿþþÿþÿÿÿþÿþÿþþþþþþþþþýþÿþÿþþÿþÿþþÿþÿÿÿýÿýÿýÿþÿþþÿýþþÿýÿýþþÿþÿþþþþþþÿýþýþþþþÿþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýýýýþýýþþýþþýýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýüüüüüüüüüüýüüúýûüýúüýúýúýüýüýúýúýúüüýüýúýúüúüüúýúýûüüüüüúýúýúûüüúõàØÓž\,,,,,,,,,,XXbXXcXXXbcc¹¶µµKµµKµ³µµµ³µµKµµGKµFµ¶¶¶»M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  VcXcccXcXccXcXc@ccXcc@$XccccXccXccXccXccccccXccYccXccYXXcbY$@ccb$@ccccccXccccccccXcXcY@cX@XcccXccccXcXcc@@ccXccXccXcXccccXccXccXccXccccccXcccXccXccccccXYccXcXccccccccX             Wh¾hhhhhhÁhhhhhhh•hhh¾hhÁhhh•hÁhhhhhhhÁhhg•¹hhhhhhhh¹•hhhhhhhhhhhhÁhh•¹hh••¹•hhhhhhhÁhhhhhhhÁhhh•hhhh•h•¹hhhhhhhhhhhhhh•¹h•¹•hhhhhhhhÁhh•¹•hh•¹hh•¹•hhhhÁhhhhhhhÁ•hh•h•¹hhhhhh•hhhhhhhhÁd                                     0‚ÓÓÚèòóõòõó÷ò÷õóõóõó÷÷÷÷óõó÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷÷ú÷÷ú÷÷ú÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúüûúúúüûúúúüúúúüûúýúüúüüüüýúýúüüüüúýúýúýüýüýüýüýýüýüýüýüýüýüýýüýüýüüýüüýýýýýýýýýýýýýýýýýýýýýýýýýýþýýýýýþþýþþýýþþþþþþþþþþþýþýþýþýþþþþþÿýþýÿþÿþÿþýÿýÿþþÿþÿþþþþþþÿþÿþÿþÿþÿÿþÿþÿþÿýÿÿþÿþÿþÿýÿÿÿÿþÿýÿþÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿþÿþÿÿÿÿÿþÿþÿÿÿÿÿþÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþþþþýÿýÿýÿþþÿþÿýÿþÿþþýÿþþþþþþÿþÿþþýÿýÿþÿþþýþýþýþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþþýþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüýýýýýýýýýýüýýýýüýüüýüýüýüýúýüüýüýüýüúýúýüüýýûýýüüúüüýúûüüúýúüüüûüüúõæ×ÓU,,,,,,XXXXXXbcXcXc¹µ¶Kµ GµKµµ³µµµ¶µµ³¶µ¶¶¶¶¶¹,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , XccccXccccccXcXc$@XcbY@ccccXccXcXccXccccXcXcccX@$YcXccc@$bY@$c@Yb@XccccXccXcccccccXcXccXcc=XcXccccXccccccXcXccXccXcXcccccXccXcXccXccccXcXcccXccXcccccXcXcY$XcccccccccccXX        0c„•¹•ÁhhhhhhÁhhhhh¹•hhhhhhhhh¹•hhhhhhÁhhh•hh•¹•hhhhhhh¹•Áhhhhhhhhh•hÁhhhhhh¹•hh¹•hhhÁhhhÁhhÁhhh•hhh¹•h•h¹•h•¹•hÁhhhhÁhh•hh•hhhh¹•hhÁhhhhhhh•¹•h•hh¹•hhh¹hhh•¹•hhhhÁhh¹•h¹•h•¹•hhh•h¹•hÁhhhhhX                        0^ž×Ùèò÷÷õ÷÷óõóõóò÷÷õ÷÷õóõ÷õ÷÷õó÷÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷úú÷úú÷úúú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúûúýúúýúúúûüúýúúüúüüúüüüúüüúüúüúúüúüüúüüúüüüüüüüüüüüüüüüüüýüýüýüýüýüýüüýüýüýýüýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþýýþýüþþþþþþþþþþþþþÿýÿýÿýÿýÿýÿýþÿþÿýþþþþþÿýÿýÿþÿþþÿþÿþÿýÿþÿþþÿýÿþþÿþÿýÿþÿÿýÿÿþÿþÿÿÿýÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿþÿþÿÿÿþÿþÿþÿþÿþÿþþÿÿþÿýþÿþÿþÿÿþþþþÿþÿýÿýþþþþþþþþþþþþþýþÿþÿþÿþÿþÿþÿÿýÿýÿýÿýÿýþþÿýýÿýÿýÿþÿþÿþþþþþþÿýÿýþþþþÿþÿþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýýýýþýýþþýþþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýüüüüüüüüüüýüüüüýüýýüýüýüûüýüýûüýúýüûüüüüüûüúüúýúûüüûüüüýúýúýúûüüúýúüúõà×Óf0,,,,,,,,,,,McXbXbbXXXchº¶µ¶µKµ¶³KL³Jµ³K¶µ¸¶¶¶¶¶¹\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,,,,, , XcccXcccXccccXccb$$$@cccXcccccccXcccccccccccXcc@$cccX$$XcX@$XcccXcccXccccccccXcXccccXcXcccccXcccXccccXcXcccXccccccXcccccccXcccccccccccXcccccXccXcXccYcccXccccccXccX            c¹hhhhÁhhhhhhhh••hhhÁhhhhhÁ•¹•hÁhÁhhh•¹••¹•hhÁh•h•¹„ÁhhhhhÁhÁh•¹hÁ•h•¹•Á•hhÁhhhhhhhhhhhhhh•¹h¾„h•¹•¹••¹•Áh•h•¹•h•¹h•¹hhhhÁhh•hhhhÁhhh•¹hh•¹•hhhÁhhh„hÁ•¹•hÁhÁhhÁhhhh•¹•Áh¹hhhhÁhhhhÁhc                              :–Ó×àñ÷÷õò÷ò÷õóõ÷÷÷õóóõ÷÷õ÷÷÷÷÷÷÷õ÷õ÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷÷÷÷÷ú÷÷ú÷÷÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúúúúúúúúúúúúüúúüúúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüýüþüüþüüýüýýýýýýýýüþüýýýýýýýýþþýýýýýýýýýþþýÿþýüýýþýþþþþþþüþþþþþþþþþþþþþþýÿüÿüÿüÿüÿýÿþüÿþÿüÿüÿüÿþÿýÿÿþÿþÿÿþÿÿÿþÿýÿÿþÿÿþÿÿýÿÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþþýÿýÿýÿþÿþÿþþÿþÿþÿþÿþþþþþþþÿþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþþþþýþþýýþýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýýýýýýýýýýüýýýýüýüüýüýüýüûüýüüýüüûýüüüýúýüýüýüüýüûüüûúýúýúýúüüûúýúüûüýûèÚÓÇ\-,,,,,,,,,,,XXXXXXXcXch¶¶µ·µ¶¶·µ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶»c,,,,,,,,,,,,,,,,,,,,,D²D,,,,,,,,,,  XcccccXcccccXcXcXcXYXccccccccXcccccccXcXccXcccXcXccYccXcccXXccccccXcccccccccccXcccccXccccXcccXccccccccXcccccXcXcXcccXccccccccXcccccccXcXccXcccXcXcccccXcccXcX$ccccXcccccccXX             Xh„¹•hhhhhhhhhhÁhh¹•hhhhhhhhh¹•Á¹•Áhh•h•¹•hh¹•h•h¹•h¾hhhÁhhhhÁhh•hh¹•hhh¹•¹•hhhhhhhhhhhhhhhhh•„¾¹•hhhhh¹•hh¹•h¹••¹•hÁh•hh••¹•h¹•hhhhhhhhhhh•¹•hhhhhh¹•hhhh¹•hÁhhh•¹•hh•hhh¹•hhhhhhhhhÁhhc                                  0‚ÊÓàè÷÷õ÷ó÷óõóóõóò÷ò÷õ÷÷õó÷õóõóõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷ú÷÷ú÷÷úú÷÷ú÷ú÷÷úú÷úúú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúúúúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüþüýýüüýýýüþüýüþýýüýþþýýüýüüüÿüÿüÿüÿüÿüÿþþÿüþþþüÿüÿüÿüÿüþÿüÿüÿþÿþÿüÿþÿþþÿþÿþÿþÿüÿüÿüÿüÿüÿüÿüÿýÿÿýÿþÿþÿþÿÿýÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿÿþÿþÿþÿþÿþþÿþÿÿþþÿþÿÿþÿÿþþþþÿþÿýþþþþþþþþþþþþþþþþþþÿþþÿýþÿýþÿþÿýÿýÿýÿýþþÿþÿýþþþþþþÿþÿþÿþþþþþÿýþÿþÿþÿþþþþþþþþþþýþþþþþþþþþþýþþýþþþýþýþýýþýýýýýýýþþýþýýýýýþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüüýüüüüýüýýüýüýüýüýúýüüýüüüýûýüüüúýúýúüüüüüüüýúýúýúýúúüüúýúýúúüú÷æ×Ó–M,,,,,,,,,MbcXbXXXcc¹¶¶¶¶¶¶¶¶¶¶¶¶»¶»¶»¶»»»»»»¾T,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDD,,,D,,,, , WcccccccccXcccccccXccccccccccccccXccXcccccccccXccccccccccccccccccXccccccccXccccccccccccXccccXcccccccccccccXcccccccXccccccccccccccXccXcccccccccXccccccccccccccccccXcccccccXcX         chhhhhhÁhhhhhhhhhhhhhhhhhhhÁ•¹hh•h¹•¹¹hhhhÁh•¹h••¹„ÁhhÁhhhhhhh¹hh•hhhhhhhhhhhhhhÁhhÁhhhhhhh¹h•hh•hhhhhhhhhh•¹hhh•¹•¹Áh•¹hhhhhhhhhÁhhhhh•¹hhhhhhhh•hhÁhhhhh•hh•¹hh•¹hÁhhh•hhhhhÁhhÁhhhM                        \ÓÙèòõóõóõ÷õ÷÷õõóõ÷õ÷ò÷ò÷óõ÷÷÷÷÷óõóõóõ÷÷÷÷÷÷÷÷÷÷ó÷÷÷÷÷÷úúúüúüúüúüüúüüúüüúúüüúüüüüüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüüüüüþþüüþüþüüþüþüþþüþþþþüþþüþþþüþþþþþþþþþþüþþþþüþþþþþþþþþþþþþþþüÿþþþþþþüÿþüÿüþþþþþüÿüÿüþüÿüÿüÿþþþþþþþþþþþþþþþþÿüÿþÿþÿþÿüÿþÿþþÿþÿþþÿþþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþþþÿþÿþÿþÿþþþþþÿþÿþÿþÿþþþþþþýÿþÿþÿþþÿýÿþþþþþÿþþÿþÿþþÿýþýÿýÿþÿþþþþþýÿýýýýþýÿþÿþþþþþÿþÿþÿþÿþÿþÿþýýýþþþþþþþþþþþþýþýþýþýýýýýþýþýþþþþþþþþþþþþþþþþþþýþþþþþýÿþýþýýýüýýüüüüüüýýüýýýüüüûýüýúýüüûüüüüûúüýúýúüüüüûüýúüúüýúüûúõà×Êf0,,,,,,,,,0XXXXcXh¹¶¶»¶»¶»»»»·¶¹µRJRKM0L0M,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD´DDDDDD,,,,,,,XccccccccXcccXcccccXcccccccccccccccccXccXcccXccccccccccccXccXcccccccXcccXccXccccccccccccXccccccccccccccccXcccXcccccXcccccccccccccccccXccXcccXccccccccccccXccXcccccccXcccXccX           cdhhhÁhhhhhhhhhhhhhhhÁhhhhhh•„¹•h¹•hÁ•„¾Áhhhh•¹•¹Áh¹•¹hÁhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhÁhhhhÁhh¹••¹•hhhhhÁhhhhhhhhhh••hhhhhÁh¹•gÁhhhhhhhhhhhhhhhÁhh¹hhhhh•hhh¹•¹•h¹•h•hhhhh•¹•hÁhh¹•hhhc                                   0‚ÓÙàòõ÷÷÷÷÷÷÷÷÷ò÷óõ÷ò÷óõóõóõ÷÷õ÷õ÷õ÷÷÷÷÷÷÷÷÷÷÷÷úüüþÿÿÿÿÿÿÿþÿþÿþÿþÿþþÿþþÿÿüÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿÿþþÿüÿþÿÿþÿþÿþþÿþþÿþþÿþþÿþÿþþÿþþþÿþþÿþÿþþÿþÿþÿþþÿþþÿþÿþþÿþÿþþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿþÿþÿþÿÿþÿÿþÿÿÿÿþÿÿþÿþÿÿþÿÿÿþÿþÿþÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿþÿþþþþþþþþþþþþþþÿÿÿþÿþÿþÿþÿþÿþÿÿþÿþÿþÿþÿþÿýÿýÿýþþþþþþþþþþþþþþþýýÿýþþþþþþþþþþþþÿÿþÿÿÿÿÿÿþþþýüüúýüüüúüüüúýüüýûýüýûýúýýûüüûüúúüüüûúýúüüúúèÚÓM,,,,,,,,,,LXcbccRKRLM,-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D´´DD,D²I,,DD,,,,    XcccccccccccccccXccccccccccccccccccccccXcccccXccccccccccXccXccccccccccccccXcccccccccccccccccccccccccccccccccccccXccccccccccccccccccccccXcccccXccccccccccXccXcccccccccccccccX                 MhÁhÁhhhhhhhhhhÁhÁ•¹hhhh•Á•¹•¹•hhh•¹•¹hÁhh•¹„hhÁh•¹•h•¹hhhhÁh•hhhhhhÁhhhÁhhhhhÁhhhhhhhhhÁhhhhÁ•¹hh•¹••hhhhhhhhhh•¹•¹hhhhhÁh•hÁhhhhhhhhhhÁhÁ•hhhhh•Áhh•¹••hhÁh••¹Á•hh•¹•ÁhÁ•hhhhhW                        U–×Úèõ÷÷óõ÷óõóõóõ÷óõ÷óõóõóõ÷÷÷óõó÷ó÷÷÷õ÷÷÷÷úüþüÿÿÿþüüúúúóúóóúóó÷÷ó÷óóúóú÷óóú÷óóóúóúó÷óóúóóú÷óóúóúóúóóúóóú÷óó÷ó÷÷óóó÷÷óóóú÷ó÷úóúóóóúóúóóóúóúúúúóúúóúóúóúúóüóúúúúúúúóúúúúüúóüóüóúúüúúúüúúúüúüúúüúüüúüüüúüüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüþüüüüýüýüüýüüþüüýüýüýýþýþýýýüþþþüþþüýþýþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþþþþþþþÿþþÿþþÿþþþÿþþÿþÿþÿüÿþÿüÿþÿüÿýÿÿÿÿþÿÿÿÿÿþÿÿÿþÿþÿþÿÿþÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþþÿþÿÿÿÿÿþÿþÿþÿþÿþÿýÿþÿþÿþþþþþþþþþþþþþþþþþýþýýýþýþýýýýýýýýýýýýýýýýýýýýýüýüüýüýüýüýüüüýüýüüüüüûýýüýüüüüüüüüýúýúüúüúýúüúüúýúüúýúüúúüúúúýúúûúúúúúúúúúúúúúúúúúúúúúúú÷÷÷ú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷÷÷÷õ÷÷÷òóõ÷õ÷õóõ÷÷ò÷óõ÷÷÷÷úüýýÿÿÿþýýýýýüýüüúýúüúýúüýúýúüýúüüüüüûúüýúüûúüûú÷à×Ç\-,,,,,,,,,,-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD´´´´´D´´´DDD´²D,DDD,,D,, ,XcccccccccccccccccccccccccccccccccccccXccXccccccccXcccccccXccXccccccccccXccXccXcccccccccccccccccccccccccccccccccccccccccccccccccccccccXccXccccccccXcccccccXccXccccccccccXccX              chÁhhhhhÁ„Áhhhh¾„¹••h•Á¹•hhhhh¹•¹ÂhhhhÁhhhhhhhÁhhÁh•hh¹•¹•Á„¾Áhhh¹•h•hhhÁhÁhhhÁhÁhhhÁhhhhhhhhhhhhhhh•¹••hh¹•hÁhhhh•ÁhhhhhhÁhhhhÁh¹ÃhhhhÁhÁhhh•hÁ¹•h••Áh¹•hhhh¹•¹Âh¹•¹Áhh¹•hhÁh¹Á¹•¹•hhc                                     ^ž×àñ÷÷÷õ÷÷÷õ÷õ÷÷÷÷õóò÷ò÷÷õóò÷òõó÷õ÷õ÷÷úúüýÿþþüüúóóú÷úóó÷úóóúóóúóóúóúó÷óóó÷úóóúóúóóó÷óúóóóúóóúóó÷óóó÷úóóúóó÷úóúóóúóúóóú÷úóóúóóóó÷úúóúóúúóú÷÷óóúúóóúóüóüóúúúóúúóúúúúúúúúúúóüúúúúüúüóüúúúúüúüúúüúüúúüúúüúüúüúüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüýüüüþüýýýüþýþýýþýüþüþüþþýþüþþýþþþþþýþþþþþþþþþþþþþþþþþþþþþþÿþþþþÿþþþþþþþÿþÿþÿþþþÿþþÿþþÿþþÿþþþÿþÿÿÿþÿÿÿþÿÿÿÿýÿþÿÿþÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿÿþÿÿÿþÿþÿÿþÿÿþÿþÿþÿþÿþþÿþÿþÿþþþþþþþþþþþþþþþþþþþýþþþþþþþþþþþþþþþþþþþþþýþþþýýþýýýýýýýýýýýýýýýýýýýýýýüýýüýüýüýüýýýüýüýüûüüüüúýúýúýúýúýúüýúüúýúýúýúýúüúúúüúúûúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õó÷÷ò÷÷õóò÷óõ÷òóõ÷õ÷÷÷÷÷÷÷÷÷÷÷÷úüýÿÿýþýüüýüüüýüüýúýúýýúûüúýúûüüüúüúýúýúýúý÷ë×Ê‚0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DI´´´´´´²D´´´´´´´´´´´,DDDD,D,,D,,,  XccXccXcccccccccccccccccccccccccccccccccccccccccXccccccccccccccccccccccccccccccccccccccXcccccccccccXccXcccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccbX                   Xhhhhhh•¹ghhÁhhhh•¹•¹•¹•hhhhhhhhhhhhhhhhhhhh•¹hÁ•¹hhhhhh•¹hhhh••¹hhhhhhhhhhÁhhhhhhhhÁhhhÁhhhhhh•¹„•¹hhhh•hhhh•¹Áhhhhh•hhhhhhhhhhhhhhhhhhù•¹h•¹•¹hhhhhhhhhhhhhh•hh•¹„hhhhhhhhhhhhhhhX                           0fÓÙèò÷õ÷÷÷÷÷ó÷÷÷óõóõóõ÷õ÷÷òóõ÷ò÷÷õ÷÷÷úüüþÿþüúúóúóóúó÷óóóúóó÷÷óúóó÷úóóóúóúóúóóú÷óóóúóúó÷óóú÷óóúóú÷óúóúóóóúóóúó÷óóú÷óóóúóóóó÷úóúóú÷óóóúóúóó÷÷óü÷úúóúüóúóúóúóúúúúúúóúúúúúúúúúüóüúúúúúúüúüúúüúúüúüúúüúüüüüúüúüúüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüþüüþüüüýüþüüýüýüýüüüþüýýýýýýýþýýýýþüþþýþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþÿþþþþþþþÿþþÿþþþÿþÿþÿÿþÿþÿþÿüÿýÿþÿÿþÿýÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþþÿþþþþþþþþþþþþþþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýüüýüüýüýüýüýúýúýüýúýüýúýüüüýúýúýúýúýúúýúýúüúúúúüúýúüûúýúüúúúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷ú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õ÷õ÷ó÷õóõ÷õó÷õ÷õ÷õóõ÷÷÷÷÷õó÷õ÷÷õ÷÷÷õ÷÷÷÷÷üýþÿþþýýüüúýúýúýúúýüüýúüüüûúýúýúýúýúýúüúõÚÓ–U,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D´²´´´´´´´´´´´¼´´´²,´ID,D´I,D,,,, XccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccW             MchhhÁhhh••Áhhhhhhhhhhhhh¹Ãghh•hhhhhhÁ•hhÁhÁ•¹•¾h¹•ÁhÁhhh•¾hhh••¹•¹•••hhhhhhhhhhÁhÁhhhÁhhhÁhhhhhhÁhÁh¾ÁhhÁhh¹•hÁhhh¹•hh•¹•hhÁhhhhhhÁhhhhhÁhhhhhhhh¾hhhhÁhhhhhhhhhhÁ¹•hÁhÁ¹•hh•h••ÁhÁhhhM                      U›×Úè÷÷÷÷÷÷õ÷õ÷õóõ÷õ÷÷÷õó÷óõ÷õóõ÷õó÷÷üýÿüüüóó÷úóó÷óúó÷óú÷úóóúóóúó÷úóóóúóó÷óóó÷úóóú÷úóó÷óúóúóóú÷óóóóúóóó÷úóóóúó÷óúóóóúóúó÷úóúóóóó÷óóúóúóúóúúóúó÷óúóúóúóúúúúúúúúóúúúúúúúúóüúúúúúúúúüúüúúúúúüúüúüúüúüúüüúúúüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüýüüüþüüüüüüþüýüüþüþüþýýýýþýýþüþýýþüþþþþýþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþþþþþþþÿþÿþÿþþþÿþÿþÿþþÿþþþÿþÿüÿÿÿÿÿþþÿþÿÿÿýÿüÿþÿþÿÿÿÿþÿþÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿþÿþÿÿþþÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿýÿþþþþþÿþþþþþýþþþþþþþþþþþþþþþþþþþþþþþýþýýýýýþýýýýýýýýýýýýýýýýýýüýýüýýüýüýüýúýüýüýúýüüüýüýúýúüüýúüúýúýüúüúüúýüýüúüúúúüúúúúûúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷ó÷ó÷÷õó÷÷÷óõó÷ò÷òó÷õóõóõó÷÷õó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýýÿþþýüüüüüüýüüúûüüüúûüüúüüúýúüüúýúýú÷àØÇ\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD´´´´´´´´´´´´´´´I²´´´,DDDD,DD´DDD,DDDD,,,  WccccccccccccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccX          chhÁhh•¹hhÁhhhhÁhÁhh•hhhhhÁ•¹h•hhh•¹hhhÁh¹Á•¹Á„Á•hh••Á¹„hÁ•¹hhhh•¹hhhÁhhhhÁÁhhhhÁhhÁhÁhÁhhhhÁhÁhÁhhhhh•hhhhh•hhhhhhh•¹hhhÁhh•hhhÁhh•hhhÁhhhhÁh¹„h•hhhhÁ•hh•hhhhhhhhÁh•ÁhÁÁ¹•¹hhhhhÁc                                   \ž×àò÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷òõ÷òóõ÷ó÷úüþÿüúúóóóúóóóúó÷óóúó÷óóúóóúóó÷úóóú÷óúóóúóúóóúó÷óóóúó÷óóóúóóóúóú÷óóú÷óóóú÷óóúóóóú÷÷÷ó÷óó÷ó÷ú÷úóú÷óúóúóúóóúóúúúóúúóúúúóúóúóúúúúóüóúúúúúúúúúúüúúúúúúüúúüúúüúüúúüúüúúüüüüúüúúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüüþüýüýüüüþüþüþüþüþüþýþýþüþüþþþüþþþþþþüþþþþþþþþþþþþþþþþþþþþþþþþþüÿþÿþÿþþþþþþÿþÿþÿþþþþÿþÿþÿþÿþÿÿþþþþÿÿÿÿüÿýÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþþþýÿþþÿþÿþþþÿþÿþÿþþþÿþþþþþþþþþþþþþþþþýýýþüÿýþýýýýýýýýýýýýýýýýýýýýýýüüýüüýüýüýüýüýüýüýüüüýúýúýüüýúüüüýúüüûüüüúüúúúûúýúúüûúýúúúúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷ú÷÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õ÷õ÷÷õ÷õóõóõóõóõ÷ò÷÷÷õ÷õ÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ýþÿþýýýüúüûýüüýûýüüûüüûúýúüûúýúýúüû÷èÙÊ0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD´´´´´DI´´´´´´´D´I´´DD,²´DDDD,DD´´D´D,,,,,XccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX             WhhhhhÁhhhhhh•Áhhhhh•¹•hhhhh•hh¹Âhhhhhh•Á••¹•hhÁ¹•¹•h¹•hh¾„¹•hhhhhhhhhhÁhhÁhhhhÁhhhhhhhÁhhhhhhhÁhhhhÁhh•¹•hh•h¹•hhhÁhhh•¹•Áhhhh¹•hhhhÁ¹•hhhhhÁhhhhh¾h¹••hhh¹•h¹Âhhhhh•hÁhh¹•hhÁhhhhhhhW                       aÓÙèõ÷÷÷÷÷÷÷õ÷÷õ÷÷õ÷óõó÷÷õ÷÷÷ó÷õ÷÷üýÿüüóóóó÷úóó÷úóó÷óú÷ó÷óúóóúóóú÷óóóúóóúó÷úó÷ó÷úó÷óúóúó÷óúóúó÷óúó÷óóúóóóúóúóóú÷ó÷úóóóóúóúóúóúóóóó÷óóúóúóúóúúóúóúóúóúóúóúúúúúúúúóúúúúúúúúúúúúúúúúúüúüúúúüúúüúüúüúúüúüüüúúüúüüüüüüüüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüþüüüþüüüüüþüüþüýýýýýüþüþýþýþýþýþýýýþþþýþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþþþþÿüÿüÿþþþÿþÿþþÿþþþþþÿþÿþÿþÿþÿþÿüÿÿÿÿÿþÿþÿÿÿÿþÿýÿþÿþÿÿÿþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿþÿÿþÿÿÿþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿþþÿþÿÿÿþÿþÿþþþÿþþþþýþþþþýþþþþþþþþþþþþþþþýþþþýþýýýýýýýýýýýýýýýýýýýýýýýüüýýüýýüýüýüýüýüýüüüýúýüüüýúýúüüúýúüüúýüúúüüûüüüüüúúüúüúúúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúúúúú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õ÷÷÷÷÷÷óõó÷÷õóõò÷ò÷÷õ÷õóõó÷÷÷÷õ÷õ÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýÿþþýýüüúýúüüúýúüúýúýúýúýúýúúüûüýúõÚ×–M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D²´´´´DD´´´´´´´´´´DD´´´²´I´´DD,DD,D´´´´,I´´´´²´DDDD,,,,,, XccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX                   MchhhÁhhhhÁh¹hhhhh•¹ÁhhhhhÁhhhhhhhhh•¹•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhÁhhhhÁhhhÁhhhhhhÁh•¹•h•¹Á•hhÁhhhh•¹•ÁhhhÁhhhhhÁhhhÁhhhhhhhhhhÁ•¹hhhÁhhhhhhhh•¹••hhhhhhhhhh•hh•¹c                       0fÓÚè÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõ÷÷÷õ÷óõ÷÷õ÷úüÿþüúóóóú÷úóóóúóóúóúó÷óúóúóúóóúóóóúó÷ó÷÷÷óúó÷úóúóúó÷óúóóúóóúó÷óúóóúóúóúúó÷÷óúó÷ó÷úóúóúóóóó÷ó÷ó÷ú÷óúóúóúóúóúóóúóúóúóúúúúóúóúóúóúúúúúúúúúúúúúúüúóüúúúúúúüúúüúüúúüúüüúüúúüüüúüúúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüüüüüüþüþüüþüüþüþüüþüþüþüþüþüþüþþþþüþþþüþþþüþþþþþþþþþþþþþþþþþþþþüþþþþüÿþþüÿüÿþþþþþþÿþþþÿþÿþþÿþÿþÿþÿþÿþÿÿþþÿþÿþÿÿþÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿÿÿÿþÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþþÿþÿþþþþþþþýÿþÿþþþþÿþÿþþÿþÿþþþþþþþþþþþþþþþþýýýþýýýýýýýýýýýýýýýýýýýýýýýüýýüüýüüýüýüýüýúýüýúýüýúýúýúýúüýúýúüýúüúúüüúúüúúúúúúüúûúüúúüûúúúúúûúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷÷ú÷÷÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõóõóõ÷÷õóõóõó÷õ÷÷òó÷óõ÷õóõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ýýÿþýýüûüýúýúýúýúýúüúüúýúüýúüúúüüõàÓM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,ID´´D´´´´´´´´¼´´´´´´¼DD´´´´´¼²,DDD´´´´DD´´²D´´´´´´IDIDD,,,,,,,,XccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX             chhhh•hhhhÁh••hhhhh•h¹•hh•¹•hhhhh•hhhhhhhhh•hhÁhhhhhhhÁhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhh¹•h•¹•¹•hhhhhh¹•hhh•¹•hhh•h¹•hhÁh•hhhhhhhhhhhhh•hhhhh•hhhhh¹•hh•hhÁhhh¹•h•X               0“ÓÙñ÷÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷÷÷÷÷õó÷õ÷÷÷úüÿüúóó÷÷úóóó÷óúóóúó÷óó÷óúó÷óó÷óúó÷óúóóúóúóó÷÷óó÷ó÷ó÷óúó÷óúó÷÷÷óúóóóúóóóóó÷óúó÷ó÷óúóóó÷óóú÷÷úóúó÷óóóúóúóúóúóúóúóúúóúúúóúóúúúúúúúúúúúúúóúúúúúúúúúúüúúúúúüúúúüúúúúüúúúúúüúüüúúüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüþüþüüýüüþüüýüýüýüþþüþüþþüþüþþþþüþþþþþþüþþüþþþþþþþþþþþþþþþþþþþþþÿþÿþþÿþþþÿýÿüÿþÿþÿþÿþÿýÿþþÿþÿþÿþÿþÿþÿþÿþÿÿÿþÿÿþÿþÿÿÿþÿþÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿþÿýþþÿþÿþþþþþþþþþþþþþþþþþþþþþþþýýþþþýýýýýýýýýýýýýýýýýýýýýýýüýüüýýüýýüýüýüýúýüýúýüüüüüýúüüýüúüüýúüüüüüüûüüúüüüüúýúüúüúûüúúúúûúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷÷÷÷õóõ÷óõóõóõóõ÷õóõ÷÷ó÷÷÷÷õ÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýÿýýüúýüüüüüüúýúýüûüúüûüüûüüüûü÷æÓU,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D´´²´´´´´´´´´´´´´´´´²´¼´´´´´´D,´´D,D´´¼´´´´´´´´´´´´´´´´DI²´D,,,,, XcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX                 Xhh•¹••hhÁ•¹hhhhÁ•¹„hh•¹hhhhhh•¹hhhhhhh•¹•ÁhÁhhhÁhhhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁh•¹hh•¹•hhhhÁhhhhhÁ•¹•h•¹Áh•hhÁ•¹•¹h•Á•hhh•¹•h•¹hhh••¹hhhhhhhh•¹•ÁhÁhh•h•¹c0                         M”Óàõ÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷õ÷÷óõ÷÷÷úüÿüüóúóúóóóú÷úó÷óúóóóúóúó÷óóú÷úó÷óúóúóú÷ó÷óúóúóúóúóúóúóúóúóúóóúóúóú÷÷úóúóú÷ó÷óúóúó÷óóú÷óúóóóúóóóúóú÷÷ó÷óúúóúúóúóúúóúóúóúúúóúúóúóúóúóúúúúúúúúúúúúúúúúúúúüóüúúúüúüúúüúüúüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüüýüüþüüýüþüþüþüüýþüþüþüþüþüþþüþüþüþüÿüþþþüþýþþþþþþþÿþþþþþþþþþüþüþþþþýÿüÿüÿþþþýÿüÿüÿþÿþþÿþÿýÿþÿþÿþÿÿþÿþÿþÿþÿÿÿþÿþÿÿÿÿÿÿþÿþÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþþþÿþþþþþþÿþÿþþþþþÿþÿþþþþþþþþþþþþþþþþþþýþþýýýþýýýýýýýýýýýýýýýýýýýýýýýüýýüüýüüýüýüýüýüýüýúýüûýüüüýúüúýúúüüûúüúúúüûúýúúûúúúûúúûúúúúüûúúúúúúúúúúúúúúúúúúúúúúúùúúú÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷õóõóõóõóõ÷ó÷õ÷÷õ÷÷õ÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷úýÿþýýúýûüûúýúýúúüüýúüüúüüûúüúý÷è×\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,²´´´´´´´´´´´´´´¼´´¼´´´´´´´´´´´´I´´´´´´´´´´´´´´´´´´´´´´²´´I²´D²´D,,,,,,,XccccgccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX            0ghÁhhh¹•hhhhhÁh•ÁhÁ¾Áh•¹•¹•ÁhÁh•hhÁh•hÁhhhhh¹•ÁhÁhhhÁhhÁhÁhhhhhhhhhhhhhhhhÁÁhhhÁhÁhhÁhhhÁhhÁhhhhhhhhhÁhhÁhhhhh•¹•hhhhhhh•hhhhh¹ÁÁ¹•¹•hhh•Áh¹Á¹ÂhÁ•¹••ÁhÁ¹•hhÁhhhÁhhhhh¹•Á•Á¹•c               U–×àò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷úýþüüóó÷óóó÷úóóó÷óúóó÷úóó÷óúó÷úóóó÷óúó÷óóóúóúóó÷óúó÷ó÷ó÷ó÷ó÷ó÷ó÷÷óúóóóúóóó÷÷óúóóúóó÷÷óúóóúóó÷ú÷ó÷÷úóóóúó÷úóóó÷óóóúóúóúóúóúóúóúúóúúúúúúúúúúúúúúúúüúúúúúüüüüúüüúúüúüúüüüüüüüúüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüýüýüüüþüýüýüüýüýýýüþüýüþýþýýýüþþþüþþþüþþüÿüÿüÿüþþÿüþþþþÿýþþÿþÿþÿÿþÿþÿþÿþÿýþÿþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿÿÿÿþÿþÿþÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿþÿþÿþÿþþþþÿþþþþþþþÿþþþþþþþþþþþþþþþþýýþþþýþþýýýýýýýýýýýüýýýýýýýýüýüüýýüýýüýüþüýüýüýüüüüüüúýüüüüýüýüýûüýúýüüúýúúüüüúýúúýúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúùúúõ÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷õõ÷óò÷óòõ÷÷÷õóòó÷óõóóõ÷óõóõóõóõóò÷õó÷ò÷÷õó÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷úýÿþýúüúýüüüúüüüûüüúûüüûüüúýúý÷èÚ\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,´´D´´I´´´´´´´´´´´´´´¼´´¼´´¼´´´´´¼´´´´´´´´´´´´´´´²I²´´´²´´²´´²´IDI²D,,,XccccddcccccccW                XhhhhhhhhhhhÁ•¹Á•¹••¹Á••¹••¹h•¹•¹hhhhhhhhhhÁhhhhhhhhhÁhhhhÁhhhÁhÁhhhÁhhhhÁhÁhhhhÁhhhÁhhhhhhÁhhhhhhhhhhÁhh•¹hhÁhÁhhhÁ•¹ÁhhÁhhh•¹•hhhhhhhÁ¹Á•hÁhh•¹hÁ•¹•¹hhhhhhhhhhhhhhhh•¹Áh•¹„M                       U×àõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷úüÿüüóó÷úóúóúóóúóúó÷÷úóúóúóó÷óóúóú÷úó÷óúóú÷÷óúóúúóúóúó÷úóúóúóúóúóúóúóú÷÷óú÷÷úó÷÷÷÷óú÷úó÷÷÷÷÷ú÷ó÷ó÷÷óó÷÷÷óúóúúúúúú÷úó÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüüúüúüúúúúüúüüúüüüúüúúúúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüýüýüýýüüýüýýýýýýþýýþþýþþüýþýþþþþýüýþþþýþþýþþþþþþþþþþþþþþþþþÿþþþþþþþþþþþþþþÿþÿþþÿþÿþÿþÿþþþÿþÿþþþÿþÿþþÿþÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿþÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþþþþÿþþþþþÿþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýýýþþþþþþýýýýýýüýüýýüüýüüüüüüüüüüüüüüüüüüüüúüúúúúúúúúúúúüûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúùúú÷÷ùóùúõúõúõõúõóõóõòúòõóõ÷÷÷õúõ÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷úúýÿþýüüûüüüüûúüûúýüüúüüûüúýúýúèÙÇ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,I²´´´´´´´´´´´´´´´´´´´´´´¼´´´´´´´´´´´´´´´´´´´´´²´²´´´²²I²²DD²D,,Xcchccccc cccccX               ThhhÁhhÁhhhÁhhhhhhÁh¹•hhh¹•hh¹•hhhÁÁhhÁhÁ•hhhhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhÁhÁhÁhhhhhhhhhhÁhhhhhhhhÁhÁhhÁh•¹•hhÁhhhÁ•¹•hhÁ•hhhhhhhhhhhhh•Á•Á•hÁhÁhhhhh•¹•hc                V׿õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷üþþüóó÷úóóó÷óóúóó÷óúóó÷ó÷óó÷úúóúóóóóòòòèèèèèèèæææèææææèèèæææææææææèæææèæèèæèèèèèèèèèæèæèèèèèèæèæéæèèèèèèèèæèæææèæèèèéèèèèèæèèèèæéèèèèèèèæéæèéæèèèéèèéèéèééèéèèééèéèééèéèéééèéèéééèéééééééééééééééíéééééééíéíéíéíééééééééííííííííííííííííííííííííííííõíõííííõõõíõíõõíõõíõíõíõõõíõõõõõõõíõíùõõõõõõõõõõõíùõõõíùíõõõõõõùíùíùõùíùõõùõùõõõõõùùõõùíùõùõõùùõùùõùùùùùùùùùõùùõùùùùõùùùõùùùùùùõùùùùõùùùùùùùùùùùùùùùùùùøùùùùùùùùùùùùùùùùùõùùùùõùõùùõùùùùùùõùõùùõùùõùùõùùõùõõùùõõõõõíùíùõõùõõõùõõõõíùíõõõõõõõõõõíõõõõíõíùíõõííùíõíõíõíõííííõííõííííííííííííííííííííííííííííííííííííéííííííííéííííéëéíëééëéíéééííéèíèííëééæéæééæíèëéíèéèëéèíèëèèëèéæéèèíèéæéæèèëèèèèèæèæëææêèææéæèæææææææææææææææææææææææææææææææææææææææææææææææææææææèèèèéèòòòó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷÷úúþÿþýüúýúûüüúýúýúûüúúüúýúüúý÷ëÙÇ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,D²D´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´´´´²²´²²²²²²²I²IID,,,,XcccccgcccccccchccccccccchcccdcccccccccccchccccccccccgccccccdcgccdccccccchccccccccdcccdccgccccccccdccccccccccccecccccccgcchcdgccccccccccccdcccccdcccchcccccchcdccccccccccccX         0chhhÁhhhhÁ•hhhhhÁhhhhhhÁhhhhhhh•¹•hhhh•Á¹•hhhhhÁhÁhhhhhhhÁhhhhÁhhhhhhÁhhÁhhÁhhÁhhhÁhhhÁhhÁhhÁhhhhÁhÁhhhhhhÁhh••hh•h•hh••¹h•hhÁ•¹hÁ•hÁhhhhùhhhhhÁ¹hhhhhÁ•hhhh•¹•¹•¹hh•hÁhh•h•¹hhhW                 \×èõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýþüúóú÷óóúóúóúóóóúó÷óúóúóú÷÷óóóòñéèææÙÕ¬ª¥’’ŸŸŸ ŸŸŸŸŸ ŸŸŸ Ÿ   Ÿ Ÿ  Ÿ Ÿ Ÿ Ÿ      ŸŸŸ Ÿ      ŸŸŸ   Ÿ  Ÿ  ŸŸŸ ŸŸŸŸŸŸ  Ÿ  ŸŸ        ŸŸ        Ÿ  Ÿ    ŸŸ Ÿ Ÿ Ÿ  ŸŸŸ  Ÿ ŸŸŸ   Ÿ    Ÿ  Ÿ ŸŸŸ  Ÿ   Ÿ Ÿ        Ÿ    Ÿ   ŸŸ ŸŸŸŸŸ Ÿ  Ÿ    ŸŸŸ ¢ŸŸ   Ÿ  Ÿ   ŸŸŸ  Ÿ Ÿ      ŸŸ         Ÿ ŸŸŸŸ     Ÿ Ÿ Ÿ  Ÿ   Ÿ ŸŸ   ¢    ŸŸ ŸŸŸ Ÿ       Ÿ  Ÿ       ŸŸ Ÿ Ÿ       ŸŸ  ŸŸŸ ’      Ÿ  Ÿ¢Ÿ  ŸŸŸŸŸ     Ÿ   Ÿ  ’  ŸŸŸŸŸŸ   Ÿ ŸŸŸŸŸŸŸŸŸ       Ÿ      ŸŸ   ¢ ŸŸ ŸŸ’  Ÿ     Ÿ  ŸŸ Ÿ   ŸŸŸŸ ŸŸ        ¢’’¢¥ª¬Õäæèèèò÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷÷úú÷÷úúþþýýúýüýúüúüúüüûýýúýúüûüúýúõÙÊ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD´´²´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´²´²´²´²²²²²I²´²,,,,,XcchccdcgccccccccccccccchccchccchcccdccccccccccchccccdcccccgccdcgccccccccccccchcchccgcgccdcchcchccccgccgcdcgccccccccccgcdcccccccgcccdcccccccccccgccccccchccccccccdccccccchcX       chhh•ÁhhhÁh¹•hhhhhhhÁhÁhhhh•hhhh•¹•hÁhhÁ„¹•hÁhhÁhhhhhhÁhhhhhÁhÁhhÁhÁhhhhÁhÁhÁhhhhhhhhhhhÁhhhÁhhÁÁhhhÁÁhhhhhÁhh¹•h¹•¹Áh¹•hh¹•h¹„Áhh¹•ÁhhÁhhhhhhhh••hÁhÁhh¹••¹•hhhh•hÁ¹•Áhh¹•¾„¹Âc                      VÚæ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüüóó÷óóúóó÷÷óóúóúó÷úóó÷ó÷óóóòèæÙ¬¥’Ÿ’Ž}sppppppppppps}qqopppppppppppppq}q}}qwsssqs}qppsq}qpqpqppqqqpqq}}}pppppppqqp}}}qppp}qpppqqppqw}ppp}}popp}}pqsqpmp}}}}qpq}qq}}}qppq}}qppqsppppqppqps}}ppqpqwqpqpppppq}qpps}w}qpqppppqs}pmpqq}}qqpppqoopppoppsqq}qpps}}}}qp}qpsq}qpp}qqqppq}qqqqpppqqq}}}qpqqpq}}qppqpppqsqqpppoopqppoppqqpq}qppq}wooppqq}qppoppqpq}}qpppppq}qpp}pqps}}}ppppsqpqqqqpqppqqpqpppppsqqpqqspqw}}ppppqppp}}qqs}ppqpppps}spp}}qppqpppppspq}}}w}}pqq}qpopppppq}}ss}}qqpppswpq}}q}}qqppqqpqpppqqppq}}}pppqqpppq}sppssppnwŽ}}}}qqppppq}pqŽpq}ppmq}qppp}}}}}ppqsq}}qpqwŽ}}qppppppppppppqwqppppppopppppppp}qq}qqws}qqwsppqwq}qqpqppqqqqpqq}Žwopqppppsqp}Ž}qppq}pqppqppqp}sppq}spppq}qqqqppmp}}}}qp}wqq}}qqpp}}}sqs}ŽsŽ’¬Õææéò÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷úú÷÷úúúúúúÿþüüúúýúýûüúûüúúýúüûüúýúý÷õÚÇ^,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,,,D,´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´²´´´´²´²´²²²²²²²´²I,,,,,XccccccddcgchcccchccchcccgccchccccgcccccccccccccchccgccdcgcdcgcdcgcccchchccccccccccddccdccccccccchccccdccccccccchcccccdccgchccgcdcccccccdccccgcccchchccccchccchcgccccchccccX            Mh•¹hhhÁhhhhhhÁ•hhhÁhhhhh•¹•h•¹•¹h•¹••hh¾hhhÁhÁhhÁhhÁhhhÁhhÁhhÁhÁhhÁhhhhÁhhhÁhhÁhÁhÁhÁhÁhhhhÁhhhÁhhhhhÁhhÁhhhhhhhhhÁÁhh•Á„¾••hhh•hhhÁhhhhhhÁ•¹hhÁhhhhh•¹•hhh•¹•¹h•¹•Á•ÁhhhhX                      0–׿÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýþüúóóúóúóóú÷óóúóó÷óóúó÷úóóòèæÙ¬’ŽŽ}ssp??>===!!!!   !    !!!!!! !! !!!! !!! !!!==?lpwqqŽŽ‘¬Ùæèòõ÷÷÷÷÷÷ú÷÷ú÷÷ú÷÷úú÷÷úúúúúýÿýýüúýúúýúýúüýúýúüüüúýúüúõÙž\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDI´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´´´²´²´²´²²´²²²²²²²²I²ID,,,XcchccgcccdcccchcccccccchccdgccchcccdccccgccccchccccccdcccdccccccdccccccccchccchcgccccgcgcccccchcccchccgchcchcccccchchccgcccccdccccgcgccccgccccdgcccccchchccchccccdcccccchcX               XÁhhhÁhÁ•ÁhhÁhh¹•hÁhhhhh•Á¹•h•Á•hhh¹•hhhhhhhhhhhhhÁhhhhhhhhhÁhhhÁhÁhÁhÁhhhÁhhhhÁhhhhÁhhhhÁhhÁhÁÁhhÁhÁhhhhÁhhhh•Á••¹Áh•h¹•¹•hh¹•Áh¹•ÁhÁ•Á•hÁhhhhhÁ•hhhhhÁhh¹•h•Áhhhhhhhh¹•¹•hhhM                  0–׿÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷üþüúóóóúóóó÷úóóúóó÷úó÷úó÷óòèæÓ’ŸŽqpj>=! !  !! !! !     !   =>lpqs  ’¬äèò÷ú÷ú÷÷ú÷÷ú÷úú÷÷úúúúúúúúýþþýúüýüúýúýúûüúýúûüüüüûúúëÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,D,D,,D²´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´´´´´²´²´²²²²²²²I²²II,,,,,XcccdccdcgcchccccchcchcccdccchcccddcchcgcdcchccchcchccgcgcchcgcgccccchcchccchccccdccgcdccchchcccchcccdccccccchcchcccccccdcgdcgdcgcgfcdccdccgcgccchcchcccccchccccgccccchccccX       XhhhÁ•¹hhh•Á¾hhhhhh•h•¹•¹•hÁ¹hÁ¹•hhhhÁhhhÁhhhhÁhhhÁhhÁÁÁhÁhhhhhhhhhhhhhhhhhhhhÁhhhÁhÁhhhhÁhhhhhhhhhhhhhhhhhhh•¹•¹hh•¹•h•hhhhhhÁ•hhÁh•¹•¹hÁhhhhhhh¹••hhhhhhh•¹ÁhhhhhhÁhhhhhhhhc                     0“×àõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüúúóú÷óóú÷óóóúóú÷óóúóóóèæÕšsspC=  !   ! !>opq’¬æèõ÷ú÷÷ú÷÷ú÷÷úú÷úúúúúúúúúÿþýúüúýúýúüüúýúüüûúýúüüýúèÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DD,D,,DD´´´´´´´²´´´´´´´´´´´´´´´´´´´´´´´´²´´´´²´²´²²´²²²²²²²IDDD,,,,,,,XcchccgccccdccchccccccccccgccccchcccdccccccgcccccccccdcdcccgcdcdcgccccccccccccchcccdccdcgcccccchcccchccgcchcccccccchcchccccccccccddccccgccgcdcccccccccchcchccchccdgcchccchcX         MchhhhÁÁh¹•¹Á•hhh•Á•¹•hh¹•Áh•¹•ÁhhÁhhÁhhhhhhhhhÁÁhÁhhhÁhhÁhhÁhhhhhhÁhhhhÁÁhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhÁhhhhhhhÁhhh¹•¹ÂhhhÁhhhhhhhhhhhhh•ÁhhhhhÁh¹Á•hh••hÁhhhh•ÁhhÁhhÁhhhhW                     0‚Óàõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýþüóó÷óóó÷úóóúóúóóóúóúóòèÙ¬’sp?=!    !      ! ! !   !!    CpsšÕæò÷ú÷÷ú÷úú÷÷úúúùúúúúúúúþÿýýüúüúýúûüúýúûüüúüúûüû÷èØM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,²DD²,DDDD,D,DI²´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´²´´´²²´²²´²²²²²DD,,,,,,,,, XccccdcgcgcchcccchccchchccdcchcccccgcgcchccccchhchcccgcccgdcccgcdcgcchchcchchcccdcgcgcdcchcchcccchcccgcdcccchcchchccccccchcchccgcccchccchcdccchhchcchcccccchcccdcccccchccccX       chh•¹•¹hhhhh•¹•hÁ¹hhhÁhh¹Á•¹hhhhhhhhhhhhhÁhhÁhhhhÁhhhhhhhÁhÁhhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhÁhhhhhhÁhhÁhhhhhhÁhÁhhhh•hhhhhhhhÁhhhÁhhhhhhhhh•¹••hhhÁhhhh•¹•Á¹hÁhhh•¹hhhhhhhhÁhhh                   fÓàõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþþúóóúóúóúóóú÷óóóúó÷ó÷òèÕ’Žso>   !! !   !!    !=lqsŸÕæòúú÷ú÷÷úúúúúúúúúúúúúúýþýüýúýúüüúýúüüüûüýúýúüü÷è×M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,DDD,DDDDDD´²´²´´²´´´´´´´´´´´´´´´´´´²´´²´´´²´´²´²´²´²²²²²IDD,,,,,,,,,XcchcccdcdcdccchchcchcccccccgccchccdccdchhchcchccchhcccgccccgcdcccdcccccccccccchccccdcgcccccccchcccchcccgcdccccccccchccchccdcccdcgcdccchcccgcdcccchhccchcccccchcdcchccccchcX     Xhhhhh•h•hhhh¹•Á•hhÁhhhhÁ„¹•ÁhhÁhhÁhhÁhhÁhhhhhhhhhhhhÁhhÁÁhÁhhhhÁhhÁhhhhhhhhhhhhhhhÁhhÁhÁhhhhhhhÁhhhhhhÁhhhÁhhhÁh•¹•hÁhhhhhhhhÁhhhhÁhhh•hhhh¹•hÁhhhÁhhhhÁhhhÁ•hÁÁÁhhÁhhÁhhX                        aÓÚò÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþü÷óóúóó÷ó÷óúóóú÷úóúóòçÕšŽo?!  ! !     !   ! !!  !=pq’¬æéú÷úú÷úúúúúúúúúúúúúúýÿýýúúýúûüúýúûüüúúýúüúûü÷æÓ“0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DI²I²²,DDDDD´´´´´´²´²´´´²´´´´´²´´´²´²´²´´´´²´²´´²´´²´²´²²²²²²²D,,,,,,,XccchccgcdechcccccccchccchccchcccgccgccchccccccccccchccdcchcdcccgccchcchcchcchccgcgdcccchcchchccchccccgcdcchcchcchccchcccccgdcgcdccchccchcdccchccccchcccccchccccgccccchccccX      0cÁ••¹•¹•hhÁ•¹•Á¹hÁhhhhhhÁ¾hhÁhÁhhÁhhÁhhÁhhhÁhhhhhÁhhhhhhhhhÁhhhhhhhÁhhÁhhhhhhhÁhhÁhÁhhhhhhhÁhÁhhÁhhhhhhÁhhhÁhhhÁ•¹•hÁhhhhh••ÁhhhÁhhhh•¹hhÁhhhÁ•hÁhhhhhhÁhhh¹Á•¹ÁhhÁhÁhhhg0                  VÇÚôú÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüóúóúóúóúóúó÷úó÷óóóò⬒Žp?   ! !!  ! !   $jެæòú÷úúúúúúúúúúúúúúúúúýÿüýúýüúýúüüûüúýúýúýüûú÷àÓf-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,DIDD²²DD²I²DD´²´²´´´´´´²´´²´²´´´²´²´´´´´²´²´´´´²²´²²´²²²²²²²²DD,,,D,,,,,,XcchccccccccccchcchccccchccchccchccdcchcccccchcchcchchccchcccdgcdcchcccccccccchccccccchccccdcccccccchcdcccgccccccccchccchcccccccdcgccchchcccchcchcchchchcchccchcccchccccchcX   Xhh¹•ÁÁ¹•hhhhhhhhhhÁhhhÁhhhhhhÁhhhhhhhhÁhÁhhhhhÁhhÁhhÁhhhÁhÁhhhhhhhÁhhhhhÁhhhhhhÁhhhhÁhÁhhhhhhÁhhhhÁhhÁhÁhhhhhhhhhh¹•Á•hÁ•¹Á¹hÁhhhhÁÁÁhhhhhhhh¹•h•Áhh•Áhh•hhÁh••¹•¹•Áhhc                 0žÙè÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüóóó÷óóó÷ó÷ó÷óó÷ó÷óèÕ’}sp? !      !    ! !! !!  ! !! !      !! !?pŽÕæúúúúúúúúúúúúúúúúúúýþÿüüúúýúýúûüúýúýúýúúýúýõàÇ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDD²II²²D²´²´²´²´²´²´´²´´´´²´²´´´´²´²´´´´´²²´²´²²´²²²²²²²ID,,,,,,,,,,,,,,,,,XhcccchcchcchccccccchchcchcccchccdcgcdcccchchhcccchchgchcchcccccchccchcchchchcchcdcgdgchcchcchhchchcccccgdcgchchchcccchcchchcchcdcchcccccchchgccchcccccchcchccccchcchcchcccX          ThÁ¹•hhh•hhhÁh•hhhÁhÁhhhhhÁ•ÁhhÁhÁhhhhhÁhhhhÁhhhhhhhhhhhhhhhhÁhhÁhhhhÁhÁhÁhÁÁhÁhhhÁhÁhhÁhhhhhhÁhhhhhhÁhhhhÁhhhÁhÁhh•¹•¹hùÁ•hÁhhhÁ¾hhhhhhhÁhhh•¹ÁhÁhhh•¹Á•ÁhhÁ¹hhhhhhhhhM             “׿÷÷ú÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷üýþü÷ó÷úóúóúóúóúóúúóóòæªso=!        !js’ÙéúúúúúúúúúúúúúúúúúúýÿüüýúüüüýúýúýúýúüýúýúúôÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD²²²²I´²²²²²²´²´²´²´²´´²´´²´²´´´´²´²´´´´²²´²²´´²´²²²²²²²²I´D,,,,,,,XccchcccccccccchhccccccchcchcccccgcccgcchhchccchchcccccchccghcchcccchchccccccccchcccfccchccchcchccccchccccccdccccccchccchchcccgccgcccchccchhccchccchchccchcchcchcccchchchccX     0c¹•hhhhhh¹•Áhhh•¹•hÁ•Áhhhhhh¹•hÁhhhhÁÁhhhhhhhhhhhhÁhhhÁhhhhÁhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhÁhÁhhhÁhÁhhhhhhÁhhhhh¹•h•hhh•¹•h•hhÁh•hhh•Á¹Áhhhhhhh¹•ÁhhhhÁhhh•c                 aÓàõ÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýüúóóúóóó÷ó÷óó÷ó÷óóò謒q?!    !       !!!!        !     =psªàòúúúúúúúúúúúúúúúúûýÿýüüúûúúüúýúýúýúüüúýúúèד0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DII²I²²²²²²²²²²´²´²´²²´²´²²´´²²´²´´´²²´²´²´²´²²²´²²²²²²²²²²ID,,,,,,,,,,,,ThccchchchchhcccchccchchdcccchchccchccccccchcccccchchhcccchcgcccchchchchhdchchchchccchchcdchcchcchcchcchchchcchcchccchchccccchchccchcccchchcchcccchchccchccccccchchcchhhchcX,      X•ÁhhhhÁh•hhù••Á¹hhÁhÁhh••hhhhhhhhhhhhhÁhÁhhhhhhhhÁhhhÁÁhhhhhhhhhhÁÁhhhhhÁhhhhhÁhÁhhÁhhÁhhhhhhÁhhhÁhhhhhhhhhhhhh•¹•Áhhhhhhh•¹Áh¹h•¹•h••¹Áh•¹hÁhhhÁhÁhhhhhhhh•hhhh•¹hW         VÊÚõ÷ú÷ú÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷üþýúúóúóúóúóúóú÷óúó÷èÙ’sl!      ! !!  !   >qŸÕèúúúúúúúúúúúúúúúúüýþýúýüýüûüúýúüúüûúüüüý÷àÓf0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD²IID²²²²²²²²²²²²²²´²´²´²´´²´²´²´´²²´²´²´²´²²´²²²²²²²²²²²²²²L,,,,,,,,,,,,,,Xchchccchcccccchccchcccccc‚__chcchcccchchchchchchchchcghcccccchcgcdcchccgcccdchchchgcccccgccchcdcchchgcggcccccchgchccccccchcccccchccgchcchchchchchchchchchchcchcgcchcccchccX      M„¹•hhhÁ¹•h¹•hhhh¹•ÁhhhhhÁhhh¹•hhÁhhÁhhhÁhÁhhÁhhÁhhÁhhhhÁhhhhÁhhhhÁhhÁhhhhhhhÁhhÁhhhhhhÁhhhhhhÁhÁhhhÁhhhhhÁhhhÁhhhÁ•Áhh¹•hhhhÁhhÁhhhhhÁ¹•¹•hhhhhhÁhhhhhÁhhhhhhhÁ¹•Áhhhc0               MÙè÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷úþüúóó÷óó÷ó÷ó÷óóúóóó笒}p= !!!!       !  ! !!   ! !!  ?p’æùúúúúúúúúúúúúúúúúýÿýúúúüüúýúüûüûüüüûúüúõàÇ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D²I²IDD´I²²²²²²²²²²²²²´²²´²´²´²´²´²²´²´²²´²²²²²²²²²²²²²²I²²I,,,,,,,,,,,,,Xhchhchccchcchchhhhchc_jjjC[hchhchchchchcx>_C_[hhchchcB_C_ccchcchccchccc‚_>jZC_hchccccj>>_chhB_C_Cdchgcch_C_>_hcchchcchj_C_chcchcdhc__YCcchchchdhdhcc_>_CcchcchchccccX  chhhÁÁ•¹•hhhhhhÁhhhÁhhhhhhhhhÁhhhhhÁhhÁhhhÁhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhÁhhÁhhhÁhhhhÁhhhhÁhhhÁhhhhhhhhhhhhhhh•¹•hhh•hhhÁhh•¹Á•hhh¹h•¹•hh•hhhÁh•hÁhhhhhhhhhÁ•hhhÁhX      0“Óè÷ú÷ú÷ú÷÷ú÷ú÷ú÷ú÷÷÷÷úþüúúóúóúóúóúóúóúóóòàªq=      !  !=p’ÚòúúúúúúúúúúúúúûúüüÿýüüûúýúýúýúüüûúüýúýûñÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD²D²²I²²²²²²²²²²²²²²²´²²´²²²²´²²´²²²²²²²²²²²²I²²²²I²²²²,,,,,,,,,,,,,,,,,,,,Xccchcchchchcchchccc_jjj_chdhchch[jjj_hchchjhcdccccdchcc‚>jj>cchcc_j_ccc_j_cccch_jchchchcchcjhfchchchcBk_hchgchghchhcjhcchcccccchcW,Xhhhhh•¹•hh¹•hhhhhhh•hÁhhhhhÁhÁhÁhÁhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhÁhhhÁhhhhÁhÁhÁhhÁhhhhhhhhÁhhÁhÁhÁhhhhhÁÁhhhhhhhhÁhh¹•hh¹•ÁhÁhÁ•Á¹•hhhhhhhh¹•h¹•hhh•¹•Áhhh•hÁhÁ•Á¹ÁhhhhM         aÓàõú÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷ú÷úýüüóó÷óó÷ó÷óó÷ó÷ó÷èÓ¢Ÿp=  !  ! ! !! !     !  !! !o¬æúúúúúúúúúúúúúúúûýÿýúüüúýúýúüúýüüúüúýú÷ëד0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,²I²DD²I²²²I²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²I²²I²IDD,,,,,,,,,,,,,,,,,,,Wchchghchccchchhhhcj>ccchch_Cchch>chhhhccchch_jccch_Ychchj>chchcj_hchchcdhhcj>dhhchchhc__chchghdhghcf>jhchchhccchchX,MhhÁ•¹hÁhh•¹••Áhh•¹ÁhhhhhÁhhhhhhhhÁhhÁhhhhhhhhÁhhhÁhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhÁhÁhÁhhhhhÁhhhhhhhhhhhhhhhh•Áhhh•¹Á„h•¹Á•hhhÁhhhhh•Áh•¹Áhhh•¹Á•¹•¹•hhhhhc      MÇÙõ÷÷ú÷ú÷úú÷ú÷ú÷ú÷ú÷÷úüüüóóúóúóóúóúóú÷óó謒}l! !      !!>qšäúúúúúúúúúúúúúúúüýþüýúýúýúüûüúûúýúýúüü÷æÊ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD²²I²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²I²²²IID²I²²ID,,L,,,,,,,,,,,,,Xhchchdhchccdhdccc>>[__[C>>chch_>>>jhhdjcchcchchchc>>>ChchZjZfhchc>__ccC>hccchchcchcjhchcchchcZ‚cchchchdhdhg>jchchcchchchcX  , 0bÁh•¹•¹••hÁ•¹•¹•hÁhÁ•hÁhhhhhÁhhhhhhhhhhÁhhÁhhÁhÁhhhÁhhÁhhhÁhhhhhhhhhÁhhhhÁhhhhÁhhhÁhhhhhÁhhhhhhÁhhhhhÁhÁhÁhhÁhhhhÁ•hh¹•hÁhÁ¾¹•Á•¹•hÁ•hÁh•hh¹•hÁ•¹•hhÁhhhhhhh¹•h•hW       ”Ùè÷úú÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷úüþüóóúóó÷óú÷ó÷÷óóóàªq?  ! ! !    !       !       !! ! $o}‘ÙúúúúúúúúúúûúúüúýþÿüúúýúýúüúýúýúýúüüûúõÚM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,.,,.L,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DII²²I²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²I²DDD,,,,,,,,,,,,,,,,,,,,,,,Xchchcchghcccghc‚>[chhchhch_C[hhc‚jcchcc_[eh>chchcchccchhB>[hchcj>chh_>Bhchch_cc_chchcchchdgf>>chchhdhgh_[hcchchdgghdhjhchchcchchcdXX•¹Á••¹h•¹hhhhh•¹•¹hhhhhÁÁhhhhhhhhhhÁhhhhhhhÁhhhhÁhhhÁhhÁhhÁhÁhhhÁhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhÁhÁhhhÁhhhhhhhhÁh•¹hhh••¹•¹„h•¹•¹Á•h•¹hh•¹hÁh•¹hhhhhhhhhÁ•hhhh•¹hh    \ÓÚõúú÷ú÷ú÷úú÷úú÷ú÷ú÷úüþüú÷óóúóúóóó÷úóúòäšp=   !    ! js’ÚõúúúúúúúúúúûúüúüýÿüýúüúýúýúýúýúüûúüýúèÙ‚-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,L,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DII²IDI²²I²²I²²²²²²²²²²²²²²²²²²²I²²I´IIDD,D,,,,,,,,,,,,,,,,Xhchchchdhgghchc_chchchchchch[>chdchBjgdcchccc>hd>fchchccchhhchBhcgchcChgd[_chchchB>h[hchchchchggh>jhchchgchcCj_hchcchchhdhg>hhchchccchdhXMchhÁh¹•hhhhhhhhh••¹•hhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhhÁhhhhhhhhhhhÁhhhÁhhhhÁhhhhhhhhhÁhhÁhhÁhhÁhhÁhhhhhÁhhÁhÁ•hhhh¹•h¹ÂhÁ¾hh„Á¹•hhhh•h¹•¹•hhhh•hhhh••¹•hhh•X             0ÇÙòúúúú÷ú÷ú÷÷ú÷÷÷÷÷÷÷üþüóóóúóó÷ó÷óúó÷óòäšm  !          !!                ?}¢ÕòúúúúûúûúúúúúúûýþþüüúýúýúýüüúýúüüúüúõàÇ\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,L.,L,,,,,.,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,I²I²²²²I²²²´I²²²I²III²I²²²I²I²D,,,,,,,,,,,,,,,,,,,,,,,,XcdhcghdghdhchhY[hghdhhghchhdhchcghhhhhdhdhhchZ_h>hdhhcgchchdhgghghghh>dhh_Bhchchhc>>>hhchcdhgghdfdj>chghchhchB_cgdhghchchdhjchhhhchcdhdeX, XhhhÁhÁhhÁhhhh•¹hhÁhhhÁhÁhhhhÁhhÁhhÁhhhhhhhhhhhhhhÁhhhhhÁhÁhhhhhÁhÁhhhhÁhhhhÁhhÁhhhhÁhÁhhhhhhhhhhÁÁhhhhhhhhÁhhhhÁ¹••Áhhh•h¹hhÁh¹hhÁhÁh•Á¹hh•h•hhÁ•¹hÁh•¹hhhhÁhÁ¹cM    fÓæõúúúúú÷ú÷úú÷úúú÷ú÷üþüúúóúóúóóúóúóó÷òÙ¥o!        ! !      ?Ž’ÕéúúúúúúúüúúüúúúýþýûüúýúüúûúüüüûüüúüüèÙ–M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,L,,,,,,,,L,.,L,,,,,.,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,I²I²I´²²I´I²²I²²DI²I²I²²IDDDDII,,,,,,,,,,,,,,,,,,,,,,,,Xhchhchchdhghhc_hdhdhchdhhchgchhdhcccCghgghchhhc_c>fhcchhghhhghdhhfh_Chgd[Chghcchh[hchcchhdhdhghh>>hcdhdcchc__hhhchdhdhghd>hhccchgdhgghX WhhhhhhÁh•hh•hhhhhhÁhhhÁhhhhhhhÁhhhÁhhhhÁhhhÁhhhhÁhhhhhÁhhhhhÁÁhhhhhhÁhhhhhhhhhhhhhÁhÁhhhhhhhhhhhhÁhhÁhÁhhhhhhhhhhÁh¹ÁÁ¹••hhh•hh¾•h•Áhhh••h¹¹•hÁhhhÁhhhhhhhÁh•c           VÓÙõúúúúúúú÷ú÷÷ú÷÷÷ú÷úýüúóóóóó÷óúó÷óóúòÙ’}?     !  ! !!!   !   !       !  ! !   ?Ž¢¬òúúúúúýúúúúûúüüýÿüúýúýúýúýúûüüúûüüû÷æÓe-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,LL,,,L,L,.L,.,,,,,,.,,,,,,,,,,,.,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DI²I²I²I²I²²I²ID²I²DD²DIDDID,,,,,,,,,,,,,,,,XghcdhchdhgdhgC>ghgdghhdghchdcgdgdhhh_Bhdhdhchcdf>Bh>hdhdhdhchchchhc>cdhh_BchchchchC[hdhddghgghchdd>>ghhdhhhchC_dhchhcggghdh>chhchdhdhdhdX 0cÁhhh•f¹hùhÁhhhÁhhÁÁÁhÁhhhÁhÁhhÁhhhhhÁhÁhhhhÁhÁhhhhÁhÁÁhÁhhÁÁhhhhhhhÁhhhhhÁhhÁhÁhhhhhÁhhÁhhÁÁhhhÁhhhhÁÁhÁhhÁhÁhÁhhh•¹hÁ•¹hh¹h••¹•¹hhhhÁ¹Á„•hhÁhÁhÁhÁhhhÁhh•¹„M        –Óèúúúúùúúúú÷úú÷úúú÷úüþúúóú÷úóúó÷úó÷÷òÙ’s?  !!    ?s¬òúúúúúûúüúúüúúüýÿýúýúýúýúýúýúüüûúüüõÙU,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,L,,,L,L,,,,,,,,LL,,,,,,,.,,,.,,,,.,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DII²I²IIDDDDDDDDDDDID,,,,,,,,,,,,,,,,,,,Xdgdhdhhchhghdchdhhhdhghdhchghhhghccc_chghghghgh>Cg>hghghgdhhhhhh__hghc_Zhhhghghcc>>hhdhghhdhdhhhgh>>fdhghcchgY_hghdhghdhdhg>hhchdhgghdhgX,Xhhhh•¹•hhhhhhhÁhÁhhhhhhÁhÁÁhhhhhhhhÁhhhhÁhhÁhÁhhhhÁhhhhhhhhhhhÁhhhÁÁÁhhhÁhhhhÁÁhhhÁÁhÁhhhhhhÁhhhhhhhhhÁÁhhhhhÁÁhhhhÁhhhh•Áhh•h¹ÂhÁ•¹•h•h•¹¹Áhhhhh•hhÁ•hÁhhh•c               ^Óà÷úúúúúúúúúù÷÷ú÷÷÷úüþüóó÷óóó÷ó÷ó÷óúóÙ¥Ž?!!  !  !!    ! !    ! !  !!      ! =q’Óõúúúúüúúûüúúüúýþþüúüúýúüúýúýúûüüúý÷ëד0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.L,L,,.,,,L,L,.,L.,,.,,,L,,.,,.,,.,,,,,,,,,,,,L,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD²IDDIID,,DDD,DDD,D,,,,,,,,,,,,,,,,,,,,,,Xhgghgdgdhdhh_>hdgdgdghdhghchdhchdhhhhBhchgdghdhh>Bh_hdhdhghchchc>>[dhhdhh_Bhchdhdhh_cgghdgdgghhchdhj>ghchghhhc_chdghchghdhdf>chhghdhhdghdX,ThÁ•¹•hhhhÁ•ÁhhÁÁhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhÁÁhhhÁhhhÁhhhhÁhhhhhÁhÁhhhhhhhhhhhhÁhhhhÁhhhhÁhÁhÁhhhhhhhhhhÁhhhhhhÁh•¹•¹h•¹ÁÁhÁ¹hh•¹•¹Á••ÁhhÁh•¹h••¹hÁ•h•¹hX    0Ç×õúúúúúúúúúúúúú÷úúúúþüúóúóú÷÷ú÷óúó÷òÙ¥Žl     !     ?s’Õúúúúúúúúúüûúúúýþýýúýúýúýúýúüüûúýúý÷àÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,LL.,,L,,,.,,,,L,.L,,,,,L,L,,,.,,L,,.,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DDDDDDDDD,,DD,DD,,,,,,,,,,,,,,,,,,Xedhdhhhghgdh_Zhhhghhdhghhdhghdhhgdhch>dhhhhhdhgc_dCghggdhdhghh]>_hhghchggccCghghghch>hfhghghdhchhhd>jhdhhhchchC_hhhdhhdhhghh>hhchdhchghdgW  cÁhhhh¹••Áh•¹Á•ÁhhhÁhÁhhhhÁÁhhhÁhhÁhhÁhhhÁhhhhhÁhhhhhÁhÁhÁhÁhhhÁhhhhÁhhÁÁhhÁhÁhÁhÁhÁhhhhÁhhhhhÁhhÁhhhhhhÁhhhhÁhhÁÁhÁhhhhÁhhhhhhhÁ•hhhhhÁÁhh¹ÁhÁhhÁhhÁ¹•hÁ¹•hc0      aÓæ÷úúúúúúúúúúúú÷ú÷÷úþüúóó÷óóóóóóúó÷óàšŽl !       !    ! !   !      !  !  !>}¢ä÷úúúýúýúúüúýúüýÿýüúüúýúýúýúûüüúýúúëÙ–0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,L.LL,,,,.,L,.,,L,,L.,,L,L,L,.,,,,.,.,,,,,,,,,,,,.,,.,,,,,.,,,,,,.,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DIID,,D,,,,,,²D,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhdghddghdgfZ[hchdhdghhdgdhdhghchghhh__chdhdggh>hh_ghdhghdhch>Zhdhdhhdhhh_Bhhdhdhh>[hchhdhghhdhdh>>dghchhhhhY__c__c__c__c_>chhgghghdhhhX,XhhhhÁ•¹ÁhhhhhÁhhhÁhÁhÁhhhhhhhhhhhÁhÁÁhhhhhhhÁhÁhÁhÁhÁhhÁhhhhhhÁhÁhhhhhhhÁhhÁhhhhhhÁhhhhhhhhhÁhÁhhhhhÁhhÁhÁhhÁhhÁhÁhhhhÁhÁhhhhù•ÁhhhÁ•¹Áhhhh•ÁhhhÁhÁÁ¹•ÁhhhX,  0ÇÙõúúúúúúúúúúùúúú÷úúüþüóóúóúóúúó÷ó÷ó⚎o   !  !       ?Ž¢äúúúúúúüûúúúüúüýþüýúýúüúýúýüûúýúüý÷æÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,LLLLLL,,LLL,,LL,,.,L,,,,,,,,L,L,L,,,,,L,,,,,,,,,,,,,,.,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD²IIID,,,D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XddghdhghdhhhB$[hhhghghdhghghgdhdhghchhd_hdhghhCCgdChhhhdhghhB_hhdhchhchd$Zhggdhd[_hhhchgddhghhg>@hhdhhchhhBhhchdhhhgdhcX,Mhh•ÁhhhhhhhhÁhhhhhhÁhhÁhhhÁhhhÁhÁhhhhhhhÁhÁÁhÁhhhhhhhÁhhhÁÁhÁhÁhhhhhhhhhhÁhhhhÁhÁhhhhÁhhhhÁÁhhhhhhÁhhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁÁhhhh¹•Áh¹•hhhhhÁ¹•hÁhhhh•Áhh¹Á„hM `Óæ÷úúúúúúúúúúúúúúú÷üþüóúóó÷ó÷ó÷óúóóè¬q=! !!  !    !    !    !   !  ! ?¥æúúúýúúüúüüúüüýÿýúüüüûüúýúüüüúýúúúëÙ“M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,.,.,,,,,LLL,LL.,LLLL,,L,.L,LLLL,L,,,,.,L,L,,,L,,L.,,.,.,L,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,.,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD,,,,D,,,,,,,,,,,,,,,,,,,,,,,,WhghdghdggdghY_hhchdhhghdghdhgghdhhhhch_>___C$>ghh$$hchch__c_>[hhgh_BhhhhdhCgC>dhhdhhgdhdhf>>chghhhchhCchhghdhdghghX,c¹••hhhhhÁhÁÁhhÁhhhÁhÁhhÁhhÁhÁhhhhhÁhhhhhÁÁhÁhÁhÁhhhhhhhhhhÁÁhÁhhÁhÁÁhhhÁhhÁhÁhÁhhÁhÁhhÁÁhÁhÁÁhhÁhÁhhhÁhhhÁhhhhhÁhhÁhÁhhÁhhÁhhhhhhh•hhhhhÁhÁ„¾hhhhhùhhhÁh•¹e ,  ,0žÙõúúúúúúúúúúúúúúúúúüüú÷óóúóúóúó÷úúòÓ p=!     !!  !jšéúüúúüúüúúýúúúýÿýúýúüúüüúýúûüüüüü÷àÊ\,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,.,,,,,,,,,,,,.,,,,,,.,..,LL,,NL,,.,L,,L,L,,,.L.,,,,.L,,,.,LL,,,,.,L,L,,L,,L,,,,,,,,,.,,,,,.,,,,,,,,,.,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhhhdhhh[Chhhhhchhdhdhgdhdhghdhhhhd_$$>fhch>@@hhhhhd@chdhcCghchh>$>hdh>_hhghhdhhgdh>>hhdhchhhc_hhhgdhdhhhdhT,,,, ,bhhh¹•ÁhÁhÁhhhhhÁhhÁhÁhÁhhhhhhhhhÁhÁhhhhÁhhÁhhhhhhÁhhÁhÁhÁhhhhhhÁhÁhhhÁhhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhhhhÁhhÁhÁhhhÁhÁÁhhÁhhÁÁhhhhhÁhÁhhhhhÁÁhhhÁhÁhÁhhhhhÁhÁhhhhÁhhhhW ,,, ^Óàúúúúúúúúúúúúúúúúúüÿüóóúóó÷ó÷ó÷óóòÙ’q= !       !   !!        !   ! !  o¬òúüúúûúüúúýúýüþþüúüûüüûüúýüúýúûüúëÙ“0,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,.,,.,,,,LLLLL,,L,,,L,,,LL,.,,,LLL,,LL,,,.L.L.L,,,LLLL,LL,,LL,,,,L,L,,,,,,,,,,,,,,L,,,,,,,,,,,,,L,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DD,,,,,,,,,,,,,,,,,,,,,,,,,,,Thhhhghdhghhdg$>hhhhhhhghghhhhhhhhhghhchhh‚@$Bhhhhh@‚@hhchch@>hchh_Bhhhh_$_hhhcchdhhghhhhh@>hdhhhhhghZchhhhhhchhdhh>hchhghhghhghX,,MdhhhÁhÁÁhÁhhÁhhhÁhhhhÁhhÁhÁhhÁhhhhhhÁhÁhhÁhÁhÁhhÁÁhÁhÁÁhÁhhÁhhÁhhhhÁhÁhÁhhÁÁhhhhÁhhhhhhhhhÁhÁhÁhhÁhhhhÁhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁ•ÁÁ•ÁhhÁhhÁhhhh•ÁhhÁhg0,0Úõúúúúúúúúúúúúúúúúúüüú÷÷óóúóúó÷úó÷â’}?   !   !   ! !=q‘Úúúýúüýúüüúüúüýþýýúüûúüúüüúüúüüüü÷àÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,.,,,L,L,L,,,N,L,NL.,L.L,L,LL,,.,L,,.LL,,LL,L.L.LL.,,,,,LLL,,LL,.,,,,,,,,.,,L,.,,,,,.,.,,,,,,,,,,,.,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhfghhdhhh8chdhhdhdhhhdhdhchchhhhhhhhhch_B_B__hhhchchBBB_hh[B$j@hhhhghgh[CYB_chhhghdZBY_hhhh[c_c‚hhchhc_c[hhhhhhhdghh>@hhhhdhhdhB_hhchhhhhhghh>$hhhhhdhhdhhdX,,,,,,chhÁhhhhÁhÁhhhÁhhÁhÁhÁÁhhÁhÁhhÁhhhÁhhÁhhhhhhÁhÁhhÁhÁhhÁhhhÁhhhÁhÁhÁhÁhÁhhhÁhhhhÁhÁhÁhhhhhhhhhhhhhhhhÁÁhÁhhhÁhhhhhhhhhhÁÁhÁhhÁhhÁhhhÁhh¹•Á¹ÁhhhÁhÁhÁhÁ¹••Á•^,,, ,,,`Óàúúúúúúúúúúúúúúúúúüÿúóóóúóó÷ó÷óó÷èšm     !!!   !   !    ! =Ž’æúúúúúüúûüúýúýýÿüüüüüúýüûüûýúûúýúëÙ“-,,,,,,,,,,,,,,,,,,,.,,,,,.,.,,,,,,,,,,,.,.,,,,,,.,,,,,,,,L,,L,LL,,LLLLLLNLLL,L,,L,L,LL,,L.L.LL.L,.LL,LL,.,,L,L,,,,L,LL,,L,.,.,,,,,,,,,,,,,,,,,,,,,,,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,D,DD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhdhdhhhh_$Zhhhhghhhhhhhhhhhhhhhdhhchhhchhhhhghhhhhhhhhhhhhhhhchhhhhhdhhdhhhhdhdhdhghdhdhhhhhhhhhchhhhhhhhhhhhhhdhhhhh>hhghhhhhhC$[hhhhhhchhhdd@hdhhhhdhghhhX,,,,Whhh•hhÁhÁhhhÁhÁhÁhhhhhhÁhhhÁhhÁhhÁhÁhÁhÁhhhhhhÁhÁhÁhhhÁhÁÁhÁÁhhhÁhÁhhhhhhhÁhhhÁhhÁhhhhÁhhhhhhhhÁhhhÁhhhhhhhÁhhhhhÁÁhhÁhÁhhhhÁhÁhÁhhhhhÁÁ••hÁhÁhÁhhh•¹•¹cM -×õúúúúúúúúúúúúúúúúüþüóóú÷óóúóúóúóòÓp$   ! !   !         !jŽšéúüüüúüüúüúüüýþýúüûúýúúüúüúýüüüú÷àÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,.,,,,.,L,.,,L,L,LL,LLLLLL,LLL,L,.LL,LL,LLLLLLLL.LLL,.LL,L,,L,L,L,,LLL,L,.,.,,L,,,,LL,,,L,,,,,,,,,.,L,,,.,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DIDDDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhgghghhhhchhhhhhhchhhghhhhhhhhghhhchhhhchhdhhchhhchhhhhhhhhhdhchhhghhhhchhghhgghhhghdhhhhhhhchhhchhhhhhhhhhhhhhhdhh>$$hdhhhhchgYchdhhhchhhhgh>hhhhhghgdhhhW,,,,McÁ•h¹•hÁhhhÁhÁhhÁhhhhhÁhÁÁhÁhhÁhÁhÁhhhhhhhhÁhÁhhhÁhhhhhhÁhÁhhhhÁhhhhhhÁhÁhhhÁhhhÁhhÁhÁhÁhÁhÁhhhÁhÁhhÁhÁhÁhhhÁhhhhÁhhhÁhÁhÁhÁÁhhhhÁÁhhhÁhhh¹ÁhÁhÁhhhhhhÁc^Óàúúúúúúúúúúúúúúúúúüþóóúóóúóó÷÷óó÷à’s=     !   !!     ! !     !!!oÕúúúúüúûüúýúúüþÿüüüýúýúýüûüúýúûüúë×/,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,,,,,,,,,.,,,,,,,,L,LLLLL,L.LLLLLLLL.L.,,L,LLLLLLLLLL,LLL.L,,L,,,LLL,,LLL,L,,,,,,,,,LLL,,L,.LL,,.,L,,L,,,,,,,,,,.,,.,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhchhhhfhhhh•¹C$$>gdhhhhdhhghhhhdhhhdhhhhhhchchhhhghhhchchhhhhhhhchchghhhhhchghhhhhhhhhhg„$8hfhhhhhhhchhhhhhhhhdhhhghhhhg„$hhhhhhhghY$[dhchhhhhchdh>$hhhhgfhdhhhhX,,,,,,c¹Á„¾hhhÁhhÁhhhÁhÁhÁhÁhÁhhhhhÁhhÁhhhÁhhÁÁhhhhhhhÁhhhÁhhÁhhÁhhÁhÁhhhhÁÁhÁhhhhÁhhhhhhhÁhhÁhhÁhÁhhhhhÁhhhÁhhÁhhhÁhÁhhhhÁhÁÁhhhhhhhhhhÁhhhhhhhh•¹•ÁhÁ•ÁÁ•¹hhM    , ×õúúúúúúúúúúúúúúúúúÿüúóóúóóúóúóúóç¬l     !   !  =s’æúüýúüüúüúüýúüþýýúúýúýúúüúüúüüúüõàžP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,.,,,,,,,,,,,,,,,,,,,,.,.,L.,,,,L,,LLLLLL,LLLLLLLL,LL,,L,L,LLLL.L,L,L.L.LL.LL,LL,LLLLL,,,,.,,,,,,.,L,,,LL,LL.,L.,,,L,.L,,,,,,,,,,,.,,L,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDDDDL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhchhhhhhhhhh$hhhhhhhhdhdhhhhhhghhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhchhhhC$Y¹hhhchhhhhhhhhhhhhghhhhhhhhhd>hhhhhchhhC$xhhhhhhhhhhhd@hhhhhhhhhhhhX,WhhhhhhÁhhhhhhÁhÁÁhhhhhhhhhhÁhÁhhhhÁhhÁhhhhhhÁhhhhhÁhhÁhhhhÁhhÁhhÁhhÁhÁhÁhhhÁhhhhhhÁhÁhhÁhhÁÁhhhÁhhÁhhhhhhÁhhhÁhÁÁhÁhÁhÁhhÁhÁÁhÁhÁhÁhhhÁhhhh•Á¹•Áh¹••c0      0ÔÚúúúúúúúúúúúúúúúúúüþ÷óúóó÷úó÷óóúòÕq !        !     ! ! ! ! !         l¬òúúüúûüúýúüüýþÿüüýüüúýúýüûüüûüüúèÓ`,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,,,,.,,,,,,,,,,,L,,,,,.L,LNLLL,.LLLLLLLLL.L,LL,LLLLL.L,LL,LLLLL.LL,,,,,LLL.L,,L,,L,L,,L,L,.,LLL,LL,.LL,,L.,,L,L,,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Whhhhhhhhhhhhhhhd$chhhfhhhhhhhghhhdhhhchhchhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhh_$Chhhhhhhhhhhhhhhhhhhhhdhhdhhhd@hhhhhhchhZ$[hhhhhhhhhhhh>$hhhhhhhhhhhhX,,,0chÁhÁÁhÁhhhhÁhhhhhhÁhhhhÁhÁhhhhÁhÁhÁhÁÁhhhÁhhÁhhhÁhhÁÁhhhhÁhhÁhhÁhÁhÁhÁhhÁÁhhÁhÁÁhhhhhhÁhhhhhhhÁhÁhhhhhhÁÁÁhÁhÁÁhhhÁhhÁhhhhÁhhhÁhhhÁhÁhÁh•¹hÁhhhhh•¹•¹W  , fÓèúúúúúúúúúúúúúúúúüýüúóóóúóóóú÷÷óâ’}>!   !  !  !  !!$q’ÚúýúüüúüüúýúüüþýúüûúýúýúúüûúüüúüõÙ“M,,,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,LL,.,,,,,,.,L.L.,LL,LLNLLLLLLLLLLLLLLLL.LLL,LLNLLL.,L,LLLLL.L,LL,LLLLLLLLLL.LL,,LL.,.,,,L,L.,,LL,,L,.,,,,,,,L,,,,.,.,,,,,,,,,,,L,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,DDDDDDDDDD,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhh¹•hhhhhh_$>hd¹hhhhhh_X„hghdhhhhhhhhhhh¹•hhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhB$>hhhhhhhhhhhhhhhhhhhhhhhhhhhdhh>$hhhhhhhhhB$chhhhhhhhhhhh@hhhhhh¹•hhhhX,,,c„hÁhhhhÁhhÁhhhhhhhhhhhÁhhhhhhÁhÁhhhÁhhÁhhÁhhÁhhÁhhÁÁhhhÁhhhhhhhhhhhhhhhÁÁhhhÁhhÁhhhÁhhhÁhÁhÁhÁhÁhhhÁhÁhhhhhhhhhÁhÁhhÁhhhÁhÁhhhhhhÁhÁhÁhÁhhÁhh•Áhhhhhc0 Ê×õúúúúúúúúúúúúúúúúüÿóóúóúóóú÷óóóòÓm!  ! !  !     !   !  !=Žªèúüúüüúúüüüúýýÿüüüýúýúýúýüüúýüû÷àÊ\,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,L,,,,.,,,L,,,,.LL.,.,,LLLL.L,LLLLLLLLLL,LLLLLLLLLLLLLLLLLLLL.L,,LL.LLL,LLLL..LLLL,.LL,,LLL,L.L,,LL,,,,,L,LLL,L,,L,,,,,,,,,,L.,,,,,,.,,,,,,.,,,.,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDLD,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Thhhhhh¹hhhhhhhhhh_!@Y_c_[@$@hhhhhhhhhhhhhh•hhhhhhhhhh•hh••¹•hhh•hhh•hh•hh•hhhhhhhh•¹••hhhh•hh•hhhhhhhhhh•hhh@_@[>@$@>YZYZhhZ$_hhhhh•hhhhhh$hhhhhhhhhhhhX,,,,,MhÁhhhhhhÁÁhhhhÁhÁhhÁhhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhhhÁÁhhÁhhhhÁÁhhhhÁhhÁhhhÁhhhhhÁhhÁhhhhhÁhhhhÁhhhhÁhhÁhhÁhhhÁhÁhhhhhÁhhhhhÁhhhhÁhhhÁhÁhÁhhhhhhhÁh•¹ÁhÁhhhhX UÓàúúúúúúúúúúúúúúúúúþüúóó÷óúó÷óúúóà¢s=   !!!      ! !o¢ÕúúüûüüüúýúýúýþýýúúýúýúüúûúýúúüüèÙ-,,,,,,,,,,L,,,,L,,,,,,,,,L,,,.,,,,,,,,,,.,L.,,.,.LL,,L,,.,L,.,LLL,,,LLL.LLLNNLLLLNLLLLNLLLNLLLLLNLL.LLLLL,LLLL,,LLLLLLLLLLLLLLL,,L.LLLL,LLLL.,,L,L,L,L,L,.,,,,.,,,L,.L,,LLL,,,,,LL,,L,,,,,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhh••hhhhhhhhf>$$$[hhhgh•hhhhhhhhh¹•hhhhhhhhh¹•¹•¹•ghh¹•h¹•h¹•h¹•hhhhhhhhhh¹hhh¹•¹•¹•hhhhhhh•¹hh$$$$‚hYchhhhhhh¹•hhh>$hhhh•hhhhhhX,,,,,,,Ldh¹•hÁÁÁÁhhhÁhÁhhÁÁhÁhhÁhÁhhÁhÁÁhÁhhhÁhhhhÁhhhhhhhhhÁhÁhhhÁÁhhhhhhhÁhhhhÁhÁÁhhhÁhÁhhÁÁhhÁhhÁhÁhhhhÁhhÁÁhÁÁÁhhÁhhhÁÁÁhÁhÁÁhÁÁhhÁhÁÁhhhÁÁÁÁhhhÁhhhhÁÁhM ,“Óèýúúúúúúúúúúúúúúúýÿ÷óóúóó÷÷÷óó÷謠?      !  !  !            =}’æüúüúúýüüüüüüþÿúýüúýúýúýúýúýüüûõÚ—M,,,,,L,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,L,,L,L,,,,,LL,,,,,,,,LL,,,LLL,,LN.LLN,NLNLLLLLLLLLLLLLLLLLLLL.LLLLLNLLLLL,.LLLLLLLLL,LLLLL,LLLLLLL,,L,.L.L.L.,,LLL,,L,LL,,,,L.,,,L,L,L.,,LL,,L,,.,.,,,,,,,,,,,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,DDIDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhh•h•¹•¹hhhhhhh•¹hh_$$$=hhhhh•¹•hhhhhhhhhhhhhhhh•¹••¹h•¹•hhhhhhhhhhhhhhh•¹•hhhhhhhhhhh¹•h„¾hhhhhhh•¹•hh$$!$$$$hhY_hhh•hhhhhhhh@$hh•¹h•hhh¹hX,,,bhÁÁhÁhhhhÁhhÁhhÁhhÁhÁhÁhhhhÁhhÁÁhÁhhhhhÁhÁhhhhhÁhhÁÁhÁhhÁhÁÁhÁhÁÁÁhÁÁhÁhÁhhÁÁhhhhhhhÁhÁhhÁhÁÁhhhhhhhÁÁhhhÁhhhhÁhhhÁhhhhhÁhÁhhhÁhhÁÁhÁhhhhÁhhhhÁhhg,0ÊÚ÷úúúúúúúúúúúúúúúúüüóú÷óóúóóóú÷óÙ’}!!  !!  !!!   !    ! !! o¬úýúüüüûüúýúüýÿýýúýúýúüüýúüúûúüúàÓ\,,,.,,,,,,,,,,,L,,,,,,L,,,,,L,,,,L.,,,L,L,LL,,L.L,LL,L,LL,,L,LL,,L.,LNLLNLNLLLLLLLLLNLNLLLN,NLLLLLLLLLNLLL,LN,LLL.LLLLLLLLLL,LLL,LLLLL,LLLLL.L.LL.,,LLL.L,,L,.,,,L,,,LLL,.,,,L,LLL,L,,,,,L,,,,L,,.,,,,,,,L,.,,.,,,,,,.,,,,.,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDD,DDDDD,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhh¹•hhhhhhhhh•hhhhhh_@$$$$>Y‚hhhhhhhh¹•hhh¹•h•hhhhhhhhhhh¹•hhhhh¹•h•hh•hh•hh•hh•¹•hhhhh•hhh•¹••¹•¹•hhhh•hhh¹•ZYYYYYBYCYZYZ_YYYYh•_=@>hhh¹•¹•hhhh•h=$hhh•¹•¹•hh„X,,,Mg¹ÂÁÁhÁÁÁÁhÁhhhÁhÁhhhhÁhhÁhÁhhhhhÁhhhÁhÁhÁhÁÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁhÁhÁhÁhhhÁhÁhhhÁÁÁhÁhÁhÁhhÁhhhÁÁhhÁÁhhÁhhÁÁhhÁÁhÁhÁÁhÁhhhhÁÁÁhÁÁÁÁhÁhÁh•ÁhW\Óàúúúüúúúúúúúúúúúúýÿúóóó÷úóúóúóó謎?  !      ! ! !       !! =’éúüúýúüúýúüüüþþúýúýúýúûüüúýüýúûèÚ/,,,.,,L,,,,,.,,,,,,L,,.,L,,,,,,,,,,,L,L,,,,,.,LLL,L.,,,,L,,L,LL,L,,LLLLNLNLLNLNLLLLNNN,LLNNNLLL.NN,NLLLNLLLLLLLLLLLLLLLLLL,LLL,LL..LLLLLL,LLLLL.L,LLL.L,.LL,,LL,,L,.,,L,,L,,,.L,L,LL,L,,,.,,,..,L,L,.,,,,,,,,,,,,,.,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DLL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhÁhhhhhh•hh•¹•hh•h•¹ghh•_c_h•¹•hhhhhh•¹•hh•hhh••¹hh•¹hhhhhhhhhh•hh•••¹h•¹h•¹h•¹h•¹hhh•h¹••¹hh•¹hh•¹h••¹•h•¹hhhhhhhh••h•h•¹•hh••h••¹hhhhhh••hhhh•¹•hh•hh•h•¹hhhh•h•¹hX,,,,,,,,chÁhÁhhhhhhhÁhÁhÁhÁhhÁÁhÁÁhhhÁhhhhÁhhhhÁhhÁhÁÁhÁhhhhhhhhÁhhhÁÁhhÁhhhhhhhÁhhhÁhhhÁÁhÁhhÁhhÁhhÁhhhÁhÁÁÁhhhÁÁhÁhhÁhÁhÁhhÁÁÁhÁhhhhÁhÁhÁhÁhhhhhhhÁ•¹ÁÁgM,,Óõúúûúûúúúúúúúúúúúüþóúóúóóóó÷ó÷óæ’q!      !!!      !        !o¢ÕúúüüüúýúýúýúýÿýúýúüüüüûúýúúúüüõàÆ\,,,,,,,,,,.,,,,L,,.,.L,,,L,.,,,,L,,,L,.,,L,,,LL,L,LLLL,L,,,,,L.L.L,LNLNNNLNLLNLLNLLNLLNLNLLNLLLLLNNNN,LLLLLLLLLLLNLLLLL.LLL,LLLLLLL,LL.L,LLL,LLLLLLLLL.LLL,.,LLL.,,,.,,,.,.,LLL,,,L,LL,LL,.,L,,,L,,,,,,LL,.,,.,,L,,.,L,,,.,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,D,DDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhh¹•¹•hh•h¹•h•¹•h¹•••hh•¹hhh•¹•hh•hh•¹••¹•hh¹•hhh••hhÁhhh•hh•¹•h¹•¹•hhhhhhhhhhhhhhh•¹•¹•¾•hhhhhhhh¹•¹••hhh•hh•hhh¹•¹hhhh¹•h¹•¹•¹h•hhhh¹•¹•hhhh¹•h¹•h¹•hhhh•h¹••X,,,,,,,,,,\hhÁhhÁhhÁhÁhhhÁhÁÁhÁÁhhhÁhÁÁhÁhhÁÁhhhÁhÁÁhhhhÁhhhhhhhhhhhÁhÁhhÁhhhÁhÁhhhhÁhÁÁhÁhhhÁÁÁhhÁhhhÁhhhÁÁhÁÁhhÁhhhÁÁhhÁhÁhhhÁhhhhhhhÁÁÁÁhhÁhhÁhhÁhÁhhÁhhX,,,,,0ÓÙúúúúúúúúúúúúúúúúüþúóóóó÷úóúóúóè¬?  !          !! =ªèüüüûüüüüüüüýþþüüüüûüúüúýúýýûüúæÓ\L,,,,,,,,,.,,L,L,,L,L,,,L,,,,,LL,L,,,,,,,,L,LLL,,LL,LL,,LLLL,,L.LL,LNNLLNLLNLLNLLNLLNLLLLLNNLLLLLLLNLNLLLLLLL,LNLLLNLL.LLLLLLLL.LL.L,LLLLLLLLLLL,,LLL.LL.L,,LLL,.LL,L,LL,.,,.L,L,,,LL,,,L,,,,.,L,L,,LL,,.,,,.,.,,,.,,,,L,,.,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XÁ¾„•h•¹•¹••¹hhhhh•¹•¹h•¹•h•¹hhh•¹•h•¹hh•¹hhhhhhh•¹hh¾hh•¹h•¹hhhhhhhhhh•hhh•hh•hh•¹•¹h•¹•¹hh•hhÁhhh•¹••¹hh•¹••¹hhhhhhhhhhhhhhhhhh••¹hhhhhhhh•¹••¹•hhhhhhhhh••¹•h•¹hhX,,,,,,,MchhhÁhhÁÁÁÁÁhÁhhÁhhhhhhhhÁhhhÁhÁhhhhÁhÁÁhhÁhhhhÁhÁhÁÁhÁhhhÁÁhhhhhÁhÁhhÁhÁhÁhhhÁÁhÁhhÁhÁhhÁÁhhÁÁÁhhhhÁhhÁhhhhÁhhhhhhÁhhhhhÁhhÁhhhÁhhhÁhhÁÁÁÁhÁhhgM,,,\Óæúüûúúúûúúúúúúúúúüÿúóúóúóó÷÷÷óóà’q= !    !     !  !!     o¢ÕúýúüúýúýúýýüþþýûýúüüýúýúýúúüúýñÙ“L,,,,L,,,,,,L,,L,,,L,LLLL,,,,LL,,,,L,,LLL,,,LL,L,L,LLL,L.L,L,LLLLLLLNNLLNLLNLNLNLNLNLNNLNNLLLLLLNLLLNLNLLLLLLLNLLNLNLLLLLLLLLLLL.LL.L.L.LL,LLLLL.LLLLLL,LL,L.LL,LL.L,LL,L,,LLLL,,.L,L,LL,,LL,,,.LL,,LL,L.,,L,,L,,.,,L,L,,.,,,,,,,,,,.,L,,.,,,,L,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,LL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhh¹•¹•hhhhh¹•hhÁhhhhhhhhhhh¹•hhhhh•¹•hhhhh•¹•h•hh•hhhhh•¹•h•hhh•¹•hhhh•hhhÁ¹•h•¹•h¹•hh•¹•hhh•Áh¹•hhhhhh¹•hhhh¹•Áhhhhh•hh•hh•hhhhh¹•Áhh•hhhh•¹•¹•hh•hh•hh¹•¹•hhhX,,,,,,,,,,,,,,,chhhhhÁhhÁhÁhhhÁhÁÁÁhhÁhÁhÁhÁhÁhhhhÁhÁhhhÁhhÁÁÁhhÁhhhÁhhhÁhÁhÁhhÁhhÁhÁhhhÁhhhÁhhÁhhhhhhÁÁhhÁhÁhhhhhhhÁhhÁhhÁÁÁhhhÁÁhhhÁÁhhÁÁhhhÁhhhhhÁÁhhhÁÁhhhc,,,,,,,,,,–Õõúúúúúúúúúúúúúúúúýüó÷÷ó÷óúóóó÷ò¬Ž?!!    !  !      =s¥èúüüüüüüüúüúþÿüüúýýûüüýúúýüúýúõàO,,,,,,,LL,,L,L,,.L,L,,L,L,,LLL,LL,,,LL,,,LLLLL,,,L,L,LLLLL..,LL.L,LLNLNNLLLNNLNLNNLLNNLLLLLLNLLNNLLNNNNNLLLLLLNNLNL.LLLLLLNLLL.L..LLL.NLLLLLLLLLLLLLLLLLL,LL.L.L.L,,LLLL,LLLL,L,.,L,,LLL,L,L.,L,,LL,,,,L,,,L,.,L,L,,.L,,,,,,,,.,.,,,.,.,,,,,.,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,LD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhh•h•hhhhhhhhhhhhh•hhhhhhhhhh•¹hhÁ•hhh•¹h•¹h•¹hhhh•¹h•¹hh•¹•hhh•¹Á„¾Áh•¹hhhhh•¹•hh•¹•¹hhhhhhhhh•¹„¾hhÁ•¹••¹•hh•h•¹h•¹h•¹h•hÁhh•¹hh•¹•hh•¹hh•¹•hh•¹h•¹hÁ•¹•hh•hX,,,,,,,,,,WhÁhhhÁÁhhhhÁhÁhhÁhÁÁhÁÁÁhÁÁÁhhÁÁÁÁÁÁhhhÁÁhhhÁhhhÁÁhÁÁhÁhhÁhÁÁÁÁÁÁhhhÁhÁhhÁhÁhhhhhhÁhhhhhhÁhhÁhhhÁÁÁhhhÁhÁÁhhÁhhhÁhÁhhÁhhÁÁhhÁhhhÁÁhhhÁÁhhÁhhÁhM,,,,Ê×÷úúúüúûúúûúúúúúúúÿú÷óóúó÷óúóúóæ’q= !          !     ! !     !    !  ! m’Úüüûüüúüýüýüüþÿûüüúüûúüüüüûüúý÷àÊ\,,,,,,L,L,L,L,.,,LL,L,,,L,LLL,L,,L,,LLLL,,LLL,L.,,LL,LLL..LL,,LL,LLNLNNNNLLNNNLNNLLNNLLLLLNLLLNLNLLLLNLLLLNNNNLLLLLLLLNLLLLLLLLLLL.LLLLLLLLLNLLLLLLLLLLLLLLLL.LLLL.LLLLL,LLL,LL,,L,LLL,,,LL,,,L,L.,,,LLL.,,LL,,.L,,.L,,,,,.,.,,L,.,,,,L,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,LD²D,D,DL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhÁhhÁ¹•¹•hhhhhhhhÁhhh•¹•h•hhÁhhÁhÁhh•¹••¹••¹•hhhhÁhh•hh•¹•hhh•h¹•¹•h•¹•¹•¹••¹•hhhhhhh¹•h•hhhhhÁhhÁhÁhhhhhhhh•¹•¹•Á¹•hhhhhhh•Á¹•h••hhhhh¹•hhhhh•¹••hhhhhhh¹Âhh¹•h¹V,,,,,,,,,,,McÁÁhÁhÁÁÁhÁhÁhhhhÁhÁÁhhÁhhhhhÁhÁhÁhhhhÁhhhhhÁhhÁhÁÁhhhhhÁhhhhÁÁhÁhhÁhhhhhhÁhÁhhhhhÁhÁhhÁhhhhÁhÁhÁhÁhÁÁhÁhÁhÁhÁÁhhÁhÁhhÁhÁhhhÁhhÁhÁÁhÁhÁÁÁhÁhhc,,,,,0ÓÚüúúüúúúúúúúúúúúúýÿóóúóó÷óúó÷óóÙŸo !   !  ! !    ! !  ! ?¢¬õüüúýüýúüüüýþþüúýüüüýúýúûüúýúüèÓeLL,,L,L,L,L,L,,LL.,L,,L,,L,,,LLLLLLLLL,LLLLLL,,L,LLL,,LL.LLLL.LL.NNNLNNNNLNLNLLLNLLLLLNLLLLLLNNLNLNLNLLLLLNLLL,NLLLLNLLNLLLLLLLLL,LLLLLNLLLL,LLNLLLLLL,LLLLL,LLLLLLLL,LL,,LL,,L,,LL,L.LL,LL,L,,,LLL,,LL,,,LL,,L,,.,,.,,.,,.,.,L,L,.,,.,L,,L,,,,,,,,,,,,,,.,,,,,,,,,,,,,,L,,,,,,,,.,.,,,,,,LD,LL,DL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhÁhhÁh•hhhhÁhÁhhhhh•¹••¹hhhhhhhhh•¹Á¹•¹•hÁh•Á¹h•¹Á•¹„•hh•¹Á„¾••¹¹•¹„••¹•hhhÁ•hhhh•¹hh•••ÁhhÁhhhhhÁhhhùh•¹h•¹hhhhh•hh•¹•hhÁ¹h••h•¹•Á•hÁh•¹hh•¹•hh•hhhhÁhhhhhhhX,,,,,,,,,chhÁhÁhÁhhhhhÁhÁhhhhhhÁhÁhhÁhhÁhhÁhhhÁhhhhhhhhÁhhÁhhhhhÁhhÁhhhhhhhÁhhÁhÁhhÁÁhÁhÁhÁhÁhÁhhÁÁÁhhÁÁÁÁhhÁhÁhhhhhhhhhÁhhhÁhhhhÁhhÁhÁÁhÁhhÁhÁhÁhhh•¹X,,,,,^Óèúûúûúúüûúúúúúúúúþüúóóúóúó÷úóúèª?!   !!   !    ! !!     !9Ž¥æúüüüúüüûüüüüÿýüüûýúýúýúýúýúýúõÙOL,,,,,,,LLLL,,.L.LL,LLL,,LLLL,LLLLLLLL,,L,,LLL,L,,LL,LLLLLLL,LL,.LNNNNNNNLLNNNNLNNNLLLLLLLNLNLNLLNLLLLLLNLLLLLLLLNLLLLLNLLLLLLNLLLLNLLLLLLNLLLNLLLLLLLLLLLLLLLLL,LLL,LLLLLLL,LL,,LLL,LL.LLLL,LL,L,LL.L.LL,,LL,L,,L.,,,,,,.,.,,L,.,,,.,,,,,,L,,,,,L,,,,,L,.,,,,.,,,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,LD,L,D,DL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhÁÁh„¹•¹•hhhhhhhhhÁhhhh¹•ÁhhhhhÁhhhhh•„Á¹•hh¹•h•¹•hhhhhh¾¹•hhÁ¹•hh¹••¾¹•¹•hh¹•ÁhÁ¹•hh•hhhh¹Á¹•Áhhhhhhhhhhhhhhhhhhhhh•Áh•¹••Áhh¹•Á•h¹•¹•¹•¹•hhhhhhh¹•h¹•ÁhhÁhh•h•hX,,,,,,,,,,,,XhÁÁhhhhhhhhÁhÁhÁhÁhhhÁÁÁhÁhÁÁhÁhhÁÁÁhhhhhhhhhÁhÁÁhÁhÁhÁhÁhhhhhhhhÁhÁÁÁhhÁhÁÁhhhhÁÁhÁhÁhhÁhhhÁhhhhhhÁhÁhhÁhhhÁhÁhhÁhhhhÁhhÁhÁhhhhhÁÁhhhhhhhÁc0,,,–Óõúüúúúüúúúûúûúúúüÿ÷ó÷úóóó÷ó÷óóâ’p9    ! ! !  !  ! !!!CÕüüúýüýüüýúýüÿýúûüúýúüüüüüúýúýõàR,,,LLLLL,L,LLL.L,L.,,LLLLLL,L,LLL,LLLLLLL,LLLLLLLLLLLLLLLLLLL.LLNNNLNLNNLLLNLNNNNLNNLNLLNNNNNNLNLLLLLLLLNNLLLNNLLLLLNLLNLLNLLLLLLLLL,NLN,LLNLNLNLL,LLLLLLLLLLL,LL.LLLLL,LL,,.LL,LLLLLLL,.LLL,,,LLLL,L,LL,L,L,LL.L,LL,L,,,.,,.L.,.,,.,,,,,L,,,LL,,,,.,,,.,,,,,,,,,L,,,L,,,,,L,,,,,.,,.,,,,,,,,,,,,L,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XÁhhÁh¾Á•hhhÁhhhÁhhhhhÁhhhhhhhÁhhhhÁh•¹Á¾•hhhhÁ•¹Á••hÁh•¹„hhhhhh¹„¾••¹•¹„Áhhhhhhh•¹Áhh•¹h¾•hÁ•hÁÁhÁhhhÁhhhÁÁhhhhhÁhh•¹h•¹Á¹hhhÁ•¹•¹•Áh•¹Á„¾hÁhhÁhÁ•¹•h¾hÁhÁhhhÁ¹•hhX,,,,,,,,,chÁhÁhhÁhÁÁÁÁhhhÁhÁhÁÁhhÁÁÁhhhhÁhhhÁÁÁÁÁÁÁÁÁÁhhhhÁÁÁhhhhÁhÁÁÁhhÁÁhÁÁÁhhÁhhhhhÁÁÁÁÁÁÁhÁÁÁhhÁhhÁÁhÁÁhÁÁhhhÁhhhÁhhhÁhhÁÁhÁhÁÁhhÁhÁhÁhÁhÁhhÁhÁhX,,ÓØúúúüúúúúúúúúúúúüüÿó÷óóúóúóúó÷òÕŽj !!     !!  !    !         !!      !  !  ! 7ŽšõüüúýüûüüüüüþÿüüüüüüûýúýúýúúýúàÓ\,,,,LLLL,,L,,LLLL.LLL,,LLLLL,,LLL,LLLLLLLLLLLLLLLLLLL,LLLL.LNNNNNNNLNNLLNNNNNNNNNNNNNLNLLLNNNNLLLLLLLNNNLNNNLNNLLNNLNNLNLNLLLLLNLLNLNLLLLNLLL,LLLLLNNLLLL,LLLLNLLLLLLLLLLLLL,LLLLLLL,LLL,L,L.,LLLL,,LL,,,LL.LLLLL.L,L,L,.,L..,,,,,,,,LLL,LLL,LL,,.,.L,.,L,,,,,,,,,,,L,,,,,,.,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhhÁh„¹•¹•hhhhhhhhhÁhhÁhhh•¾hÁhÁhÁhÁhhhÁ¹•hhhhÁh„¹•¹•hÁhhhhÁhhhhÁhhÁ¹•hhhhhhhÁhhÁhhhhhÁ•hÁh„¹•Áh¹•ÁhhhÁhhhhhhhhhhÁhhÁhhhhhÁhh„ÁhÁhhhhh¹•¹•hhÁhhhÁhhhh•¹Ã„¹•hhÁhÁ•Á¹•W,,,,,,,,,,,,,,,,,,chhhÁhÁhÁhÁÁhhhhhÁhhÁhhhhÁhhhhhÁhÁhhhÁÁÁÁhÁhhhÁhÁhÁhÁhÁÁhÁhhhhÁhÁÁÁÁhÁÁÁÁhhhÁÁhÁhÁÁhÁhhÁhÁhÁhhÁÁhÁhhhÁÁhhÁhÁhÁhÁhÁÁhhÁÁÁhhÁÁhÁhÁhhhhÁhÁhÁhhM,,,,,,MÓàúûúúúûüúúüúúúúûúýüúóúóóó÷óó÷óèšs=  !!!!!!     !     p’ÙüüüüúüüüüýüýþýúýûüüüúýúýúýüúúèÓeL,L,LL,LLL,LLLLL,LLLLLL,,DLLLLLLL,LLL,LLLLLLLLLN,LLLLLL.NLNNNNNNLNNLNNNNNNNLNLLNNNNLNNNNNNNNNLLNNNLNLNNLNNNNLLNLLLLNNLNLLLNLNLNNNLLLNNLNLNLL,NLLLNLLLLLLNNLL.L.LLNLL,LL,LLLLLLLL,,L.LLLLLLLLLLL,,LL,LLLLL,L,.L,LL.L,,LLLLL.LL,,,LL,,,,L,,LL,.,L,,,,LLL,,,,,L,,L,.,,,.,.,,,,,,L,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XÁhÁhhhhhhhhhÁhhÁhhÁhhÁÁhÁ•¹„hhhÁhÁhÁhh¹„hÁÁhÁhÁhhhhhhÁhhÁhhhhhÁhÁhhÁ„hÁhhÁhÁhhhhÁhÁhhùhÁhhhÁhÁhhÁhhhhhhhhhÁhhÁhhhÁhÁhÁhhhhhhhÁhÁhÁhhhhùÁ•hhÁhhÁhhhhÁ•¹h•¹¾ÁhÁhhùhÁhÁhX,,,,,,,,,,,,,,MhhhhÁhÁhÁhhÁhÁÁhhhÁhÁhhhÁhhhÁhhÁhhhhÁÁhÁÁhhÁhÁhhhhÁhÁÁhÁÁhhÁÁÁÁÁhÁhhÁÁhhÁhÁhhÁhÁhhÁhÁhhhÁÁhÁhhhhhÁhhhÁÁÁÁÁhÁhÁÁÁhhÁhhhÁhhÁhhÁhÁÁhhÁhÁhhÁhh,,,aÓèúúýúúúúúûúüûúúúúþü÷óóú÷úóúóúóà p! !  !! !!! !!         !  ! !!       ?¬üûüýüýüýüüúýÿýýúüûýúýúýúüüûýüõÚ•P,,LLDMLL,LLLLLLLLLLNLLL,LNLLLLLLLLLLLLLL,LLLLLLLLLLLLLL.LNNNNNNLLNNNNLNLNNNLNNNNNNNNNNLNNNLNNNLNNLNNLNNLNNNLLNLNLNLNNNNLLNNLNLNLNLLLLLLNLNLLLLNNLLLLLNLLLNLLLLLLL,L,LLLLL,LLLLLLLLLLLLLLNLL,LLL,,LLLLL,,LLL,LLL,LLLL.,,L.L,L.,,.L,LL,LL,L,L,,,.,,.,LLL,,,.L,.L.LL,,.,,,.,.,.,,,,.,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhÁhhÁhhhhhhÁhhÁhhÁhhÁhhhhhhhhhÁhÁhÁhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhÁhhÁhhhhhÁhÁhhhhhhhhÁhhhhhÁhÁhhhÁhhÁhhÁhhhÁhhhhhÁhhhhÁhÁhhÁhhhhhÁhÁhÁhhhhhh„¹•hhÁhhhÁhhÁhhhhh„¹•hÁhhÁhhhhÁX,,,,,,,,,,,,,,ghhhhÁÁhhhÁhÁÁhÁhÁhhÁÁhÁhÁhhÁhÁhhhÁhÁhÁhhÁÁhÁhhÁhÁhÁhhhÁÁÁÁhÁÁhÁÁhhÁhÁhÁhhÁhhÁhÁhÁÁhÁÁÁhhhÁÁhhhÁÁÁhhÁhhÁÁhÁhhhhÁÁhhÁhÁhÁhÁhhÁhhÁhhhhhÁÁhhW,–Óõúüúúúüúüúúúúúúúýÿóóóúóóóóó÷÷òÙm!  ! !!    !   ! =ªõüýúýúüüüýüýþþúýüüúüüüüüúýüúú÷àÆPLLLLLLLL,LLLLLLL,LLLNLLLLLLLLL,LLL,LL,LLLLNNLL,-LLELNNNNNNNLNNNNNLNNLNNNLLNNNNNNLLNNNNNNLLNLNNNLLNLLNNNLNNNLLLNLNLLLNLNNLNNLNLLLLLLNLNLLLNLNLLNLLLLLLNLLLLLLLLLLLNLLLLLLLLLLLNLLLLLLLLLLLL,LLLL,L,LL,LLL,LLLLLLL,,LLL.LL,,,L,LL,,,,,.LL,,LL,.,L,L.,,LL,.LL.,,.,,L,,,L,,,,L,.,,,L,,,,,L,,,,,,,,,,.,,,,,,,,,,.,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhÁhhÁÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhÁhhÁhÁhÁhÁhÁhhÁhhÁhhÁhhÁhhÁhhÁhÁhÁhhÁhhÁhÁhÁhhÁhhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhhhÁhhÁÁhÁhÁhhÁhÁÁhÁhÁhhÁhÁhhÁhÁhÁhÁhÁhÁhÁhhhhÁhhÁhhÁhhÁhhÁhÁhhÁhhÁhhÁhÁhhÁhX,,,,,,,WhhÁhhÁÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁhÁhhÁhÁÁhÁhÁhhÁhhÁhhÁhhhÁhÁhhÁÁhhÁhhhÁhhÁhÁhhÁhÁhÁÁÁÁhÁhhÁÁhÁÁhhÁÁhÁhhÁhÁhÁhhhhhhhhhhhÁhÁhÁhÁhhhhÁhhÁÁhÁhÁhhÁÁdÊÓúüúúüûúûúüúúüúúúüÿú÷÷óóúóú÷óóéšs= !  !!!! !!!! !! !!! !!!!! !         !!   !!! !  !!! =qšæúüüüüýúýúýüþÿüüûüüýûýûýúýúüýúàÓeMRM\MRMMRMM\RMMRMR\RMRUMRMMMMMTMMRM\MMRMTRMMMMMMRMRMRMMMR\WMMRMMMNNNLLLNLNNNNNNLNNNNNLNNNNNNNLNNNNNNNLLNNLLNLNLLNNNNNNNLLLNNNNLLNLLLNNNLNLLLLNLNLNLLLNLNLLLLLLNLLLLLLLLLLLNLLNLLLLLLLNLLNLLL.LLLLLL,L,,L,LLLN,LL,LL,L,,LL.LLL,LLL,LLL,.LL,L,LL,LLL.,LLL,,,,L,L,,.,,,.LL,,L,,,,,.L,.,,L,L,,.,,,,L,,,,,,,,,,,.,L,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,XhhÁhÁhhhÁhÁhÁÁhÁÁhÁhhÁhÁÁÁhhhhÁhhÁhhÁhÁhhÁhhhhÁhÁÁhÁhÁhhhhhhhhhhÁhÁhÁhhÁhÁÁhÁhÁhhÁhÁhhhhÁhhhhhÁhhhÁhÁhhhÁhÁhhÁÁhÁhÁhÁhÁhÁÁhhhhÁhhÁhhÁhÁhhÁhhhhÁhÁÁhÁhhÁhhhhÁhhhÁhhÁhÁhhhhÁX,,,,,,,,"dÁÁÁhhÁÁÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁÁhhÁÁhhhhhÁhhÁhhÁhhÁhhÁhhÁÁhÁhÁhhÁhhÁÁhÁÁÁÁÁhhÁÁhhÁhÁÁÁÁhÁÁhhhhÁhÁÁhhÁÁhhhhÁhÁhÁhÁhÁhÁhÁhÁhÁhhhÁhhhÁhÁÁÁhhhcXWXWXWXWWXWXWWWWWXWTWWWWMMMMMMMMMMMMTMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0MM0M-M0T0LMT"L"--0M-000LMM00M-M00M0F0M0000M00F,MÓÚúúûüúüúúúúúûúúúüþüóóóúóó÷óóúóèq!  !!!  !! jÖüüýüüüüüýüýþþýüüüûüüúüúýúýúúüèÓÂhhhh¾hhhhhhh¹•hhhhh¹•hh¹•hÁhhhhhhhhh¾hhhhhhhÁhÁhÁhhÁhhhhhhhÁ¾hÁ¾hNLNNNNNNNNSNNNNNNNNLNNNNNNNNLNNNNNNLNLLNNLNNNLNNNNNLNLLNNLLNLLNNLLNNNNLLNLLNLLNNLLLNNNLNLNLLLLLLLNLLLLLLNLNLNLLNLLLLLLLNLLLLLLLL,LLLL.LLLLLLLLLLL,L.L.L.LLLLLLLLNLLL,,.L,L,L,,LLLLL,L,,LL.,,.,L,,,,.L,,,L,,LL,L,,,,L,L,L,,,,.,,,,LL,,.,,.,,,,,.,L,,,.,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MM\XXWbb\XW\WWWWXWWWXXWWWXÁhhhÁhhÁhhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhÁhhÁhhÁhÁhhÁhhÁhÁhhhhÁhÁhÁhÁhÁhÁÁhÁhhhhÁhhhhÁhhhÁhhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhhÁhÁhhÁhÁhhhhÁhÁhhÁhhÁX,,chÁhÁÁhÁhÁÁhhÁhÁhhÁhhÁÁhhÁÁhhhÁÁÁÁhÁhÁhÁhhÁÁÁhÁÁhhhhÁhhhhÁhÁhÁhÁÁhhhhÁÁhÁhÁhÁÁhÁÁhhÁhhhÁhÁhhÁhhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁhÁÁhhÁhÁÁhÁÁhÁhÁhÁhÁhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhcccccccccccccccccccccccccccccccccccccccccccccccccccccccccc„Óàúúüúûúüúüúúúüúúúþüúóúóóúóúóóóào     !  !! !! !!!!!!! !           !! ! !!     !!!!!  !  !! =ÓûúüýüýúýüüúüÿþúýúüüúýûýüüüüýúèׯÁÄÁÁÁÁÁÄÁÁÄÁÁ¾ÁÁÄÁÁÁÄÁÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÄÁÄÄÄÁÄÁÄÁÄÁÄÄÁÄÄÄÄÁÄÁÁÄÁÁÄLNNLNNNNNNLNNNNLNNNNNNLNNLSNNNNNNLNNLLNNLNNNLNNNLNNLLNLNNLLNLNNLNNNNNLLNLLNNLLNLLNLLNNNLNLLLNLLLLNLNLLLLLLLLLLLNLLLLNLNLLLLLLLLL,LL,NLL,LLL,NLLLLNLLLLLLL,LLLL,L,,LL,,LL.,LN,LLL,LLL,,,LL,,L,L,,LLLLL,,L,,L,,,,.,.,,LLL,L,,L,L,,,L,,,,,,.L,L,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MchhÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁXhÁhÁhhÁhhhhÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁÁhÁhÁhhÁhhÁhÁhhÁhÁhhhhÁhhÁhhhhhÁhÁÁhÁhhÁhÁhÁhhhÁhhÁÁhÁhhhÁhÁhhÁhhhÁhÁhhÁhhhhÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁÁhÁhÁhhÁhhÁhÁhhÁhÁhhÁhhÁhÁhhhhhÁhÁhÁhÁhhÁhÁXWWXWXWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMM0M0MM-L-MTMM-M000M00000M-0M0M00,,,0,0XhÁÁhhÁhÁÁÁÁhÁÁhhÁhhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁÁÁÁhÁhhhhhhÁhhhÁÁÁÁhhÁÁhhhhhhÁÁÁÁhÁÁhhÁhÁhÁÁhhÁÁhÁÁhhÁÁÁÁhÁhÁÁhhÁhÁhÁhhÁhhhhhÁÁhÁhÁÁÁhÁÁhhÁhÁÁÁÁhÁÁhhÁhhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁÁÁÁhÁhhhhhhÁhhhÁÁÁÁhhÁÁhhhhhhÁÁÁÁhÁÁhhÁhÁhÁÁhhÁÁhÁÁhhÁÁÁÁhÁhÁÁhhÁhÁhÁhhÁhhhhhÁÁhÁhÁÁÁhÁÁhhÁhÁÁÁÁhÁÁhhÁhhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁhÁÁ¹Æ×èüüúüúúúúûúúüúûüüÿóó÷óóúóó÷óúòÕŽj  !!!!   ! !     !!   =ŽªòüýúýüýüýýüýÿþüüýýûüüüúýúýûüüõÙÆÂÁÁÄÁÄÁÁÁÁÁÁÁÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÄÁÄÁÄNNNNNNNLNNNNNNNNNNLNNNNNNNNNNNNNLNNLNNNNNNNNNNNLNNLLNNNNNLNNNLLNNNNNLNNLLNNNLNNLNNLLNNLLNNLLLNNLLLNLNLLNNNLLLLLLNLLLNLNNLLNLLLLLLL,LLLLL.LLLLLLLLL,LLLLLLLLL,LLL,LL,LLLLLL,,LLL,LL,,.LLLL,L.L,,LL.LL,L,L,,LL,,L,.L,L,L,,L.,,,,L,,,L,L,,,L,,,,,L,L,,,,,L.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,McÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄXhhÁhÁhhhhhhhhÁhÁhhhÁhÁhÁÁhÁhÁhhhÁhhhhÁhÁhhÁhhhhhhÁÁhÁhhhhhÁhÁhhhÁhÁhhÁhhhÁhhÁÁhhÁh„Áh„hhhhhhhhhÁhhÁhÁhhhhhhhhÁhhÁhhÁh„hÁÁhÁhÁhhhÁhhhhÁhÁhhÁhhhhhhÁÁhÁhhhhhÁhÁhhÁhÁhÁhÁhhÁhXhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchÁhhÁhÁÁÁhÁhÁhÁÁhhÁhÁhÁhhÁÁÁhhÁhÁhÁhÁhÁÁÁhhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁhhhÁhhhhhÁhÁhÁÁhÁhÁhÁÁÁhÁÁhÁhhÁhhhÁhhÁhhÁÁhhÁhhÁhhÁÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁhhÁhÁÁÁhÁhÁhÁÁhhÁhÁhÁhhÁÁÁhhÁhÁhÁhÁhÁÁÁhhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁhhhÁhhhhhÁhÁhÁÁhÁhÁhÁÁÁhÁÁhÁhhÁhhhÁhhÁhhÁÁhhÁhhÁhhÁÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁhhÁhÁÁÁhÁhÁhÁÁhhÁhÁhÁhhÁÁÁhhÁhÁhÁhÁhÁÁÁÆÓèúúûúýúýúüúúúúúúüÿóúóúóóúóúóóéšs> !!  !!!! !!! !!!!!!!!   !!!!!!   !!!    !!  !   !!           !  ! =q’æüüüüüúýüüýüþýýúüúüûýúýúýúüüüõÙÌÂÁÄÁÁÁÁÁÄÁÄÁÁÁÁÄÁÄÁÁÄÁÁ¾ÄÁÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÄÄÁÄÁÄÁÄÁÁÄÁÄÁNNNNNSNNNNNNNNNSNNNNNNSNNNNNNNNNNNNLNNNNNNLNNNNNNNNNNNNNNLNNNLNNNNNNNNLLNNNLNNLNNNLLLNLNNLLLNLNLLLNNNLLLLLLLLNLLNLLNLLNLNNLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLL.LL,LLLLLLLLLLLLLLLLLLLLL,,LL,LLLL.LLL,,,LL,LL,LLL,,,,LLL,,,,L.,,,LLL,.,.,.,,,,,L,,L,,,.,L,,,,.,,,,,.,,,,,,,,,.,,,,,,,L,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,cÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÁXXXXXWXXTXXWXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXWXXXXTXWXTXWXTXXTXWXTXTXXXXXTXXXXTXXXTXWXTXXXTXXXTXUXXTÁÁÁhÁÁÁhÁÁhÁhhÁÁhhhÁÁhÁÁÁhhÁhÁÁhÁÁhÁhhÁÁhÁÁÁÁÁÁhÁhhÁhÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁÁÁhhhÁhÁÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁhhÁhÁÁÁhÁhÁhÁÁÁÁhhÁÁhhhÁÁhÁÁhÁhÁhhÁhÁhhhÁhÁhÁhÁÁhÁÁhhhhhÁhÁhhÁhhÁhhhÁÁÁÁhÁÁhhÁhhhhÁhhÁhhhÁhhhhhhhÁÁÁhÁÁhhÁÁhhÁhÁhÁÁÁhhhhhhhÁhhÁÁhhÁhÁÁÁhÁhÁhÁÁÁÁhhÁÁhhhÁÁhÁÁhÁhÁhhÁhÁhhhÁhÁhÁhÁÁhÁÁhhhhhÁhÁhhÁhhÁhhhÁÁÁÁhÁÁhhÁhhhhÁhhÁhhhÁhhhhhhhÁÁÁhÁÁhhÁÁhhÁhÁhÁÁÁhhhhhhhÁhhÁÁhhÁhÁÁÁhÁhÁhÁÁÁÁhhÁÁhhhÁÁhÁÁhÁhÁhhÁhÇ×õüýüúúúúúúûúüúúúüÿóó÷óóúóóó÷óè’q9  !!!! ! ! !!    !o’Úüüüüýüüýúýüþÿüüýüýüúýúýüüûýú÷àʾÁÁÁÄÁľÄÁÄÁÄÄÁÄÁÁÄÁľÄÁÄÁÄÁÄÁÄÄÁÁÄÁÁÄÁÁÄÁÄÄÄÄÁÄÄÁÄÁÄÄÁÄÁÄÄÄÁÄÁÄNNNNNNNNNNNNSNNNNNNNNNNNSNNNSNNLNNLNNSNNNNNNNNNNNNNNNNNNLLNNNNNNLNNNNNLNNNLLNNNNNLNNNLNNLLNLNNNLLNNNLNLLNLLLLNNLNLLNLL,NLLNLNLLL,LLLLLLLLLLLLLLLLLLLLLLLNLLLNLL.LL,LLLNLLLLLLLLLLLLN,LLL,,LL.LLLLLLLLL,L,LL,L,LLL,LLL,LL,,L.LLL,,LLL.,,,.,,.,LL,L.,,L,,,,,LL,.,,,,,,,,,,,,.,,,,,.,,.,,,,.,,,L,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,LcÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÁcXccccccccccccccccXXXcXXXXbXXXbXXbXbXbXbXbXXXbXXXXbXXXXXXXXXXXXXXXXXXXbXbXXXXbXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWXTXXXXTXXXTXXXXXXXTXXXTXXXXXXWXÁÁhhhÁÁÁhhÁÁhÁÁhhÁhhÁhhÁhhhhhÁhÁÁhÁhhÁÁhhÁÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁhhÁÁhÁÁhÁhhhhhÁhhÁhhÁhhhhhhÁhÁhÁÁÁhhÁÁhÁhhhÁÁÁhhÁÁÁhhhÁhÁhÁhÁÁhhÁhÁÁhhhÁÁhhhÁhhÁÁhhÁhhÁhhÁhhhhhÁhÁÁhÁhhÁÁhhÁÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁhhÁÁhÁÁhÁhhhhhÁhhÁhhÁhhhhhhÁhÁhÁÁÁhhÁÁhÁhhhÁÁÁhhÁhÁhhhÁhÁhÁhÁÁhhÁhÁÁhhhÁÁhhhÁhhÁÁhhÁhhÁhhÁhhhhhÁhÁÁhÁhhÁÁhhÁÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁhhÁÁhÁÁhÁhhhhhÁhhÁhhÁhhhhhhÁhÁhÁÁÁhhÁÁhÁhhhÁÁÁhhÁhÁhhhÁhÁhÁhÁÁhhÁhÁÁhhhÁÁhhhÁhhÁÁhhÁhhÁhhÁhhhhhÁhÁÓÓ÷úúúüúýúýúüúûúúüþüóúóúóóúóúó÷æ q!!  !!  !!!!!   !! !!!   !!!!  !! !!!!  !!        !!  ! !      !!!!!    ! ?Ÿ¬üýüýüýýüýüüþþýúýúýúýüüûúýüúýúàÓÃÁÁÄÁÁÄÁÁÁÁÁÄÁÁÁ¾ÄÁÁÄÁÄÁÄÁÄÁÄÁÁÁÁÄÄÁÄÄÁÄÄÄÁÄÁÁÄÄÄÁÄÁÄÁÁÄÁÄÄÁÁÄÁÄÁNNNˆNSNNSNNNNNNNNNNSNSNNNSNNNNNNNLNNNNNSNNNSNNNLSNNNNNNNNLLNNNNNNNNNNNNNNNNNNLNNLNNNNNNLLNNNNNNNNNNNLNNLLLNLNLLLNLLLLLNNLNLNLLLLLLNLNLLLN,LLLLNLNLLLNNLLLLLLLNLL.L,LLLLLLLLLNLL,LLL,LLLLL,,NLLLL,LLLLLLLLLLLL,LL,LLLL.,,,LLL..LLLL.,,,L,,,L,,L,,L,,L,.LL,L,,,,.,,,.LL,,L,,,,,.,,,,,,.,,,,,,,,,,,,,,.,,.,,,.,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,cÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÁhXÁhhhhchchcchcccccXcXcXXXXcXXXcXXcXXXXcXXcXXXXcXXXcXXXXcXXcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXTXXXTXXXcXÁhÁÁÁÁhhÁhÁhÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhhhÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhÁÁÁÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁÁhÁhÁhhhÁÁÁÁhÁhÁÁÁÁÁÁÁÁhhÁhÁÁhhÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁhÁhhÁÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhhhÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhÁÁÁÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁÁhÁhÁhhhÁÁÁÁhÁhÁÁÁÁÁÁÁÁhhÁhÁÁhhÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁhÁhhÁÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhhhÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhÁÁÁÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁÁhÁhÁhhhÁÁÁÁhÁhÁÁÁÁÁÁÁÁhhÁhÁÁhhÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁhÁhhÁÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhh××üüüüúûúúúúúüúüúýýüóóóó÷úóóó÷óÙŸp!! !  !!!!!  ! !    ! ! !=¬úúýúýüüýüýüýÿüüüýúýúýüüýúýüüúæÓÆÄÁÁÁÁÁÁÁÄÁÄÁÁÁÁÄÁÄÁÁÄÁÁÄÁÁÄÁÄÄÄÄÁÄÁÄÁÄÄÁÁÄÁÄÄÁÁÄÁÄÄÁÄÄÄÁÄÁÄÄÄÁÄÄNNSNˆNNNNNNSSNSSNNNNˆNNNNNNNSNNNNNLSNNNNNNNNNNNNNNNNNNNNLNNNNNNLNNNNNSNNNNNNLNLNNLNLNNLNNNNNNNLLNNNLLNNNLLNLNNLNNLLNLLNNLLNLNNLLNLNNNLLLNLLNLLLNLLLLNLLLLLLLNLNLLLLNLLLLNLLLLLNLLLLLLLLL,,LLLLL,LLL,LLLLLLLL,L,LL,L,LL,LLLL.LL,,LLL,,LL.,L,L,,LL,,,L,,,L.,.LL,,.,,L,L,,,.,,L,,,L,,,L,.,..,,L,.,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,WÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄccXhchchccccccccccXccXcXcXXXcXXcXXcXXXXcXXXXcXXXcXXXXcXXcXcXXXXcXXcXXXcXcXXcXXcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXThÁÁhÁÁhÁÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁhhÁÁÁhhhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhhÁhÁÁÁÁÁÁhhhhÁÁhÁhÁÁÁhÁhhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁÁhÁhhhhÁhÁhÁÁhhÁÁÁÁÁÁhÁÁhÁhÁhÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁhhÁÁÁhhhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhhÁhÁÁÁÁÁÁhhhhÁÁhÁhÁÁÁhÁhhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁÁhÁhhhhÁhÁhÁÁhhÁÁÁÁÁÁhÁÁhÁhÁhÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁhhÁÁÁhhhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhhÁhÁÁÁÁÁÁhhhhÁÁhÁhÁÁÁhÁhhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁÁhÁhhhhÁhÁhÁÁhhÁÁÁÁÁÁhÁÁhÁhÁhÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁ•ÓÚúúúúüüýúüúüûúúú÷ÿüúóú÷óóúóúóòÓsl!!      !!! !!!!!!!!!!!!! !!  !!!!  !!!    !     !!       !        !!      !=ެõüüüýúýüýüüüÿýýúüüüüüûúüüüûüüèÙÆÁÁÁÁÄÁÁÄÁľÄÁÄÁÁľÄÁÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄÁÁÁÄÁÄÁÄÁÄÁÄÁÁNNSNNNNNNNNNNNNNNNNSNNNSNNNNNSNNNNNNNNNNNSSNNNNNSNNNNSNNNLNNNNLNNNNNNNLNNSNNLNNNLLNNNLLNNNNNNNNLLNLLNNNLLNNLLNNNNLNNNLLLLNLNNLNLLLLLLNLLLNLLLLNLLLNNNLLNLLLLNLLLL,LLLLLNLLNLLLNLLNLLNLLLLLLLLL,LL..L.LL,LLNL,LLL,,NLL,LLLLLLLLL,,L,LLLL,,LL,L..LL,L,,L,L,,L,LLL,L,.,.,.,,.,,.,L.,,L,L,.,,,,,,,,,,,,,,.,,,.,,,,,.,L,,L,.,,,,,.,,,,,,,.,,,,,,,,,,,.,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,0cÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÁÄÁÄÄÁhcccccccccXcXXXbXbXXXXXXXWXXWTXWXWXWXXXXXXXXWXXXXXXWXWXWXXWXWXWXXWXXWWXWXXWXWXWXXXXXXXWXWXXXXXXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXhÁÁhÁÁhÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁhÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhhÁÁhhhÁÁÁhhÁhÁhÁÁÁÁÁhÁÁÁhÁhhhÁÁÁhhhÁhÁÁÁÁÁÁhÁÁhhÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁhÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhhÁÁhhhÁÁÁhhÁhÁhÁÁÁÁÁhÁÁÁhÁhhhÁÁÁhhhÁhÁÁÁÁÁÁhÁÁhhÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁhÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhhÁÁhhhÁÁÁhhÁhÁhÁÁÁÁÁhÁÁÁhÁhhhÁÁÁhhhÁhÁÁÁÁÁÁhÁÁhhÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁ–׿üýüüúúúúúúûüúúýýÿ÷÷óóóúóó÷óóò¬}? !!!!!! !!!!!  !!      !}ªèüýüüýüýüýüýÿýüüýûüüüüüýûüüúýëÙÆÁÄÁÄÁÁÁÄÁÁÄÁÄÁÁÄÁÄÁÄÁÁÁÄÁÄÁÄÁÁÁÄÁÄÄÁÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÄÄÁÄÁÄÁÄÁÄÁÄÄNNNNNNNNNSNNNNNNSSNNˆNNNNNSNNNNNNNNNNSNSNNNNNSNNSNNNNNNNNNNNNNNLNNLNNNNNNNNNNNNLNNNNNLLNNNNNNLLLNLLNNNNNLLNLNNNNNLNLNLLLNNNNNLLNNLLLLLLLLLNLLLLLLLLLLNLLLLLNLL,LLNLLLNLLNLLLLLLNLLLLLNLLLLLLL.L,LLLLL,LLNLLLLLL,LLL,L,,LLLLLLL,,L,,,LLLL,,,,LLLLL,LL,,,,,L.LL,,L,,,,,.,L,L,.,,,,,.,,L,,L,,,...,,,L,,,,.,.,,,L,.,,,,,,,,,,,,,,,,,,,,,,,,L,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ThÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÁÄÁÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁ¾ÄÁÁÁÄÁÁÄÁÁÁÁÁÁÁÄÁÁÁÁÁÁ¾ÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁhhhhhÁÁhÁhÁÁhÁÁÁhÁÁhhÁhhhÁhÁÁÁÁÁhÁÁhÁÁhÁhhhÁÁhÁhÁÁÁÁÁÁhÁÁhhhÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁhhhhhÁÁhÁhÁÁhÁÁÁhÁÁhhÁhhhÁhÁÁÁÁÁhÁÁhÁÁhÁhhhÁÁhÁhÁÁÁÁÁÁhÁÁhhhÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁhhhhhÁÁhÁhÁÁhÁÁÁhÁÁhhÁhhhÁhÁÁÁÁÁhÁÁhÁÁhÁhhhÁÁhÁhÁÁÁÁÁÁhÁÁhhhÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÆÓèúúúûüüüüýúüúüúúúÿóóóú÷óóúóúóéšs= ! !!    !!! ! !!!!  ! !!!! !!!! !!!!!!!!   !! !   !!  !   !!        !!    !!!!  ! !  q¢äýüüýüýüýüüúÿþýúüüüûüüüúüûüýúòÚÆÁÁÁÁÁÄÁÁÁÄÁÄÁÁÄÁÄÁÁÁÄÁÄÁÄÁÁÄÁÄÄÁÄÁÁÄÄÁÄÁÄÄÄÁÄÁÄÄÄÁÄÁÄÁÄÄÁÄÁÄÄÁÄÁNSNNSNNSNNSNNNNNNNNNSNSNNNNNNNNNNNNNNNNNNSNNNNSNNNNNNNLNNNNNNNNLNNNNLNNNSNNNNNNNNNNNLLNNNNNSNLLNNNLNNNLLNNNNNNLLLNNNNLNLNNNNLLNLNLLNLNLNLLNLLLLNLNLLNLNLLLLLLLLLLLLL,LLLNN,LLNLLLNLLL,LLLLNLLLLL.LLLLLLLLLLLLNLLLLL.,,LLLLLLL,,LLL,LLL,,LLLL.L.,,LLLL,L,LL.L,,,LL,.,L,,,,,L,,,,L,L,.L,L,,,L,,,,,,,,,,,.,,L,,,,,.,.,,.,,,,,,.,,,,,,,,,,,,,,,,.,,,,.,,,,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,bÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÁÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÁÁÄÁÄÁÄÄÁÄÄÄÁÄÁÄÄÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÄÁÄÄÁÁÄÁÄÁľÄÁÄÁÁÄÁÄÁÄÁÁÁÁÄÁÁÄÁÁÁÁÁÄÁÁÄÁÁÁÄÁÁÄÁÁÄÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhhÁÁhÁÁhÁhhÁÁÁÁhhÁÁhÁÁÁÁÁhhÁÁhÁÁhhhÁÁÁhhÁhÁhÁhhhÁhhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhhÁhhÁhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhhÁÁhÁÁhÁhhÁÁÁÁhhÁÁhÁhÁÁÁhhÁÁhÁÁhhhÁÁÁhhÁhÁhÁhhhÁhhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhhÁhhÁhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhhÁÁhÁÁhÁhhÁÁÁÁhhÁÁhÁÁÁÁÁhhÁÁhÁÁhhhÁÁÁhhÁhÁhÁhhhÁhhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhhÁhhÁhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁÆÓèüüüüúúúúúúúúûüúýÿó÷÷óóúóó÷ó÷ç’q!!!!! !! !! !!!!!! !!!!!! !!     !  l’ÙúýüüýüýüýýýÿþüüüüýüüýûýúýúüüõÙÊÁÄÁÁÁÁÁÄÁÄÁÁÁÁÄÁÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÄÄÁÄÄÁÄÁÄÁÄÁÁÁÁÄÁÄÄÁÄÄÁÄÄÄÁÄÄÁNNˆNNSSSNˆNNNNSNSSSNNNSSNSSNNNNNNNNNSNNNˆNSNNNNNNNNNNLNNNNNNNNNNNNNNSNNNNNNNNSNNSNNLNNNNSNNNNNNNNNNNNNLLNNNNNNNLLNLNNLLLLNNNLLLLLNNLNNNNLNLNLLLLLNNNLLNNLNNLLLNLLLNLNLLLLNNLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLL.LLLLNLNLLLLLLLLLLL,LLLLLLL,,LLLLLL.L,LL,LL,,,LLLL,L,,,..L,.LL,L,L,,L,.,L,,,LL,L.,,,L,,,L,L,,,LLL,L,.,,,,,,,,,.,,,,,,,,,,,,,,L,,,,,.,,.,,,,,,,.,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,cÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÄÄÁÄÁÄÄÄÁÄÁÁÄÄÁÄÄÁÄÁÄÄÁÄÄÁÄÄÁÄÁÄÁÁÁÄÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÁÄÁÄÄÁÁÄÁÄÄÁÄÁ¾ÄÄÁÁÁÁÁÁÁÁÄÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhÁhhÁÁÁÁhÁÁÁÁÁÁhÁÁhhÁhhhÁÁÁÁÁhhhÁhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhhÁhhÁÁhÁhÁÁhÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhÁhhÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁhhÁÁÁÁÁhhÁÁhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhhÁhhÁÁhÁhÁÁhÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhÁhhÁÁÁÁhÁÁÁÁÁÁhÁÁhhÁhhhÁÁÁÁÁhhhÁhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhhÁhhÁÁhÁhÁÁhÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁÆÓëüúúúüüüúýúýúúúüüÿóóóú÷óóúóúóæq    !!!!!  ! !!!!!!! @BY__x_ZB;!!!! ! !!!!!!!!!! @xÂÎçñóú÷òðáË…[             !!           !    !        ! !!! !!! !mÓüýüýüýüýüüüþþýüýúýúýúüúýüüýüõÚÌÁÁÁÄÁÄÁÄÁÁÁÄÁÄÁÁÁ¾ÄÁÄÁÄÁÄÄÁÄÁÄÁÁÄÁÁÄÁÄÁÄÁÄÄÁÄÄÄÄÄÄÄÁÄÁÄÄÁÄÁÄÁÄÁÄNˆSSSSSNNSNNNNNNNNNNSSSNSSNNNNSNNNNˆSNNSSNSNNNNNNNNNNSNNNNNNˆNNNNNNNNNNNNNNNNLNSNNNNLNNNNNNNLNNNSNNNLNLNNNNLLNNNNNNNNNLLNNLLNNNLNNNLLNNLNNLLLLNLNLLLNNNLNNLLLLNLLLLNNLLNNLNLLLLLLLLLLNLLLLLLNLLLLLLLLNLLNLLLLLLLLLLL,LL,LNLN,LLLLLLLLL,LLLL,,LL.LLLLLL,,LL,L.L,L,LLL.L.,LL,,,,.,,L,,LLL,LL,,,,L,.,,LL,,LL,L,,,,,,L,,,LL,,,,.L,.,,,,,.,L,,L,,,,,,.,,,,,.,,.,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,0\ÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÁÄÁÄÁÄÁÁÁÄÁÄÄÄÁÄÁÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁľÁÄÁÁÄÁÄÁÁÁÁÄÁÄÁÁÄÁÁÁÁÄÁÄÁÁÁÄÁÄÁÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁhhÁÁÁÁÁÁÁhÁhÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÁÁÁhÁhhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁhÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁhÁÁÁÁÁhhhhhhÁÁhÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁhhhÁÁhhhhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÁÁÁhÁhhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁhhÁhÁÁhÁÁÁhÁhÁhÁhÁhÁhÁÁhÁÁÁÁÁhhhhhhÁÁhÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁhhhÁÁhhhhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÁÁÁhÁhhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁhÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁhÁÁÁÁÁhhhhhhÁÁhÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁhhhÁÁhhhhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÊÕòúüüüúûúüüúúúüúýþüúóúóó÷úóó÷óæq  ! ! !! !!!!!!!!!!!!!!Z–ÎçúÿÿÿÿÿÿÿÿÿÿÿÿúðÌ–Y!!!!!! !!    !‚ßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÈZ!!!YYYZZZ[ZZ@ @__@! @YZYYZYZ_Y  @ZYZ[ZYZ[ZY! YZZZZ[ZZYZY!! ‚üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË    ?ÕýüýúýüüüýýýþÿüúûüüüüüýüüúûüúõàÇÁÁÄÁÄÁÁÁÁÄÄÄÁÁÄÁÄÁÄÁÄÁÁÄÁÁÄÁÄÁÄÄÁÄÄÁÄÁÄÁÄÁÄÄÄÁÄÁÄÄÄÄÁÄÄÁÄÁÄÁÄÄÄÁNSNNSNSSSNSSNNNNNNNNSSNSSNNˆNNSNNNNSNNSˆNNNNNNNNˆNNNNSNNNNNNNSNNNNNNSNSNSNNNNNNNNNNNNNNNNSNNNSNNNNNNLNNNNLNLNLNNNNNNNLNNNNLNNNLNNNNNNLNNNLNNLLLLLLNLNLLNNLNLNLNLLNLNNLNNLNLNLLLNNLLLLNLLLLLLNNLLLLLNLLNLLNLL,LNLLLLLLLLLLLLLLNLLNLLL,LLLL,L,L.LLLLLLLL,LLL,LLLLLLLL.L.LLLLLL,.,L,,L,LL,LL,LLL,L,,L,LL,LL,.,,L,,LL.,L,L,,,,,,L,L,,,,,.,,.,,,,,,L,,,,,,,,,,.,,..,,,,,,,,,,,,,,,,,,,L,.,,,,,,,,,,,LcÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÁÄÄÄÄÁÄÄÁÄÁÄÄÄÄÄÄÄÁÄÁÄÁÄÁÄÄÄÄÄÁÄÁÄÁÄÁÄÄÁÄÄÁÄÁÄÄÄÁÄÄÁÄÁÄÁÄÁÄÁÁÁÄÁÄÁÁÄÁÄÁÁÁÁÄÁÁÁÁÄÁÄÁÁÄÁÁÄÁÁÁÄÁÁÁÁ¾ÁÄÁÁÁÁÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁÁÁÁÁÁhÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁhÁhhÁhhÁÁÁÁhhÁhÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁÁÁhÁhÁhÁhÁhhhhÁhÁhÁÁÁhÁÁÁÁÁhhÁÁÁÁÁhÁhhÁhhhhhhÁÁÁÁhÁhhhhÁÁÁhhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁhÁhhÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁÁÁhÁhÁhÁhÁhhhhÁhÁhÁÁÁhÁÁÁÁÁhhÁÁÁÁÁhÁhhÁhhhhhhÁÁÁÁhÁhhhhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁhÁhhÁhhÁÁÁÁhhÁhÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁÁÁhÁhÁhÁhÁhhhhÁhÁhÁÁÁhÁÁÁÁÁhhÁÁÁÁÁhÁhhÁhÁhhhhÁÁÁÁhÁhhhhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁ¹ÇÓõüüûúüüüúúüüúúúúýþóóóóúóóúóúòæ’q!!! !!!! !!!! !  !!!!!!!ZÆçþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüá–B! !! !!_Ïýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Æ; !_ñÿÿÿÿÿÿÿÿË! !   @–çþÿÿÿÿÿÿÿñÆ@  !  ;Ìÿÿÿÿÿÿÿÿá@! !ÂÿÿÿÿÿÿÿÿÿÿÈ!Y÷ÿÿÿÿÿÿÿÿÿü!   xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ ! !    áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! !   ! !     =ެúýüýüüýýüüüýþýýüüûüýúýúýýüüýõßÊÄÁÁÁÁÁÁÁÄÁÁ¾ÄÁÁÄÁÄÁÄÁÄÄÁÁÄÁÄÁÄÁÁÄÁÁÄÄÁÄÁÄÄÄÄÄÁÄÄÁÄÁÄÄÁÄÄÄÁÄÄÁÄÁÄNNNSSSSSSNNSNNNNNNSNSSSSNSNSSNNSNNSSNNSNSNNNNNNˆNNNNNNˆNNNNNSNNNNNNNNNNNNNNNNLNNNNLNNNNNNSNSNNNSNNNLNNNLLNNNLNNNNNNNSNNLNNNNNNNNLLLNNNNNNLNNLLLLLNLLNNNNNLLNNLLNLLLNLLLNNLLLLLLNLLLLLNLLLLLNLLLLLLLLLLLLNLLLLLLLLLLLLLLLLNLLN,LNLL,L,LL.,NLL,L.LLLLLLLLLLLLLLLLL,,,LLLLLL,L,,.,,,,.,LLLL,L,LL,,L,,.L,.L,L,.,,,LL,,,,,,L,.,LL,.,,,L,,,,,,L,L,,,,,,,,,,,,,.,L,,,,.,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,0\¾ÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÁÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁľÄÁÄÁÄÁÁÄÄÁÁÄÁÄľÁ¾ÁÁÁÁÁÄÁÁÁľÁÄÁÁÁÄÁÁÄÄÁÁÁÄÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁÁhÁhÁÁÁhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÁÁhÁÁÁÁÁÁÁhÁhhhhÁÁhÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhhÁÁÁhÁhÁÁÁÁhÁÁhhhÁÁÁhhhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhÁhÁhhhÁhÁÁÁÁhhhÁhÁÁhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÁÁhÁÁÁÁÁÁÁhÁhhhhÁÁhÁhÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhhÁÁÁhÁhÁÁÁÁhÁÁhhhÁÁÁhhhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhÁhÁhhhÁhÁÁÁÁhhhÁhÁÁhhÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÁÁhÁÁÁÁÁÁÁhÁhhhhÁÁhÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhhÁÁÁhÁhÁÁÁÁhÁÁhhhÁÁÁhhhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhhÁhhhhÁhÁÁÁÁhhhÁhÁÁhhÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÇ×õüûüüúûúýúúûüüúýýüúúóúóóú÷óóóæŸq!!!!!!!! !!!!!!! ! YÆúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÂ@!!!!!!ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÌ;!_ñÿÿÿÿÿÿÿÿË;Yçÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ ;Íÿÿÿÿÿÿÿÿç@Zðÿÿÿÿÿÿÿÿÿú‚ áÿÿÿÿÿÿÿÿÿÿ–  ‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   ! 7}¬úüýüýüüüýýýþÿüüüüüúýüüýúýúýú÷ÚÊÁÄÁÁÁÁÁÁÁľÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÄÁÁÄÄÄÁÄÄÁÄÄÄÁÄÄÁÄÁÄÄÁÄÁÄÄÄÁÄÄÄÄÁÄÁÄÄÁNNˆNSˆSSSSNNNSSNNNNNSˆSSSNSNˆNSSNNNNSNNSSNNˆNSNNNNNˆNNNSNNNSNNSSNNNSNNNSSNSNNNNNLNNNSNNNSNNNNNNNNNNLLNNNNNNNLNNLLNNNNNNNNNNNLNLLLNLNLNNNNNNLLNNLLLLNNNNNNNLNNNLNNLLLLNLLNLLNNNLNNLNNLLNLLNLNLLNLLLLNNL,NLLLLLLLLLLLLNNLLLNLNLLLLLNL,LLLLLLLLLLLL,LNLNLLLLLLL,L,,L,LLLLLLLL,L,.L,,.,LLLLLLL,,N,LLL,,,L,,.L,,L,L,,L,LL.,L,,L,L,,L,,,,LL.,L,,,L,,,,,,,L,L,,,L,L,,,,,L,,,,,,.,,,,,,,,,,,,.,,,,,,,,,,,MWhÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÁÄÁÄÄÄÄÁÄÄÁÄÁÄÄÄÄÁÄÁÄÄÁÄÁÄÄÄÁÄÄÄÁÄÁÄÄÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÁÁÄÄÁÁÁÄÁÁÁÁÁÄÄÄÁÁÄÁÁÁÁÄÁÁÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁhÁhÁhhÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁhÁÁhhÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁhÁÁhhÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÊÔ÷úüýúüúýúýúüúúúúÿüóóóóúó÷óú÷òÙj!!!!!! !!!!!!!!! !!!!!‚óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð_!!   !!!!!![ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË9!!ZñÿÿÿÿÿÿÿÿË9! YÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñY  ;Ìÿÿÿÿÿÿÿÿç; –ýÿÿÿÿÿÿÿÿÿÏ@ ‚üÿÿÿÿÿÿÿÿÿó!    ‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó! !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ     !!!?Öúýüýüüýýüüüýÿýûüýýüüûüüüüýúý÷àÊÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÄÁÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄSˆNNNSSSNˆNSNSSNSNNNSˆNSSSNNSNNSˆSNNNNNSSNˆNNSNSSNNNNNSNNSNNNNSNNSSNNNSNNNNNNNNNNNNNNˆNNNNSSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNLNNNNNLNNNNLNNLLNNNNLLNNNNLNNNLNLNNNNNLLLNNNLNNLNLLNLNLLLNNLLLLLLNNLNNLLLNNLLNLLLLLLLLLNLNLNLNLLNLLLNLLLLL.LLL.L,LL...,LLLLLLLLL,LLLLL,LLLL,LL,,LLLL,,,LLLLLLL,L,L.LLL,,,LLL,LLLL,LL,L,,,LL,L,.,.LL,L.,L,L,,LL,,,,,L,.,.LL,L,L,,,L,.,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,.,,\cÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÁÄÄÁÄÁÄÄÁÄÄÄÄÄÄÄÁÄÄÁÄÄÄÁÁÄÁÄÁÄÄÁÄÄÁÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÁÄÁÁÄÁÄÁÁľÁÄÁľÄÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁľÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁľÁÁÁÄÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁhhÁhÁÁÁÁÁhÁÁÁhÁhhÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁÁÁhhÁÁÁÁhÁÁÁÁÁÁhhÁÁÁhÁhÁhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁhhÁhÁÁÁÁÁÁÁÁÁhÁhhÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁÁÁhhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhhÁhÁÁÁÁÁÁÁÁÁhhhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÊÓ÷ýúúüúüüúúüúýüüüþü÷ú÷ó÷÷÷óóúòÙ?!!! !!!!!!     !!! !!!!!!!!Âüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò‚!!!! !!!!!!!!!!!;Ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú‚ !!!!!  _ðÿÿÿÿÿÿÿÿÌ!!!‚üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–9Îÿÿÿÿÿÿÿÿç; ;Ïÿÿÿÿÿÿÿÿÿÿ„ñÿÿÿÿÿÿÿÿÿÿ[! ‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    !!!=¬õüýüýýüüýýýýþýüýúüüüüýúýúýüüúàÓÁÁÁÁÁÄÁÄÁÁÁÄÁÄÁÁÁÁÄÄÁÄÁÁÁÄÁÄÁÁÄÄÁÄÁÄÁÄÁÄÄÄÄÁÄÁÄÄÄÄÁÄÁÄÄÁÄÄÁÄÄÁÄÁˆˆˆSNˆNNSNNNSSNˆSSSNNNSSNSNNSNˆSSSNNNNNˆNSSNSˆNSNSNNNSSSNNNSNSSNNSSNNNSNNNNSNNNNNNNNNNSNˆNNNSNNSNNNNNNNNNLNNNLSNNNLNNNNNNNNNNNNNNNNNNNNLNLLLNNNNNNNLLNNNLNLLLNNNNNNLLLNLNNNNNNNNLNLLNNNNNLLLLNLNLNNNLLNLLLNNLLLLLLLLLNNLNNLNLNLNLLLLLLLLL.LLLLLNNLLLLLLLLLLLLLLLNLLLLLL,L,,LLN,LLLLL,LLL,L,L,LLLLLLL,.,LLLL,LLLL,L,,LLN,L,.,,.L,.LLL,,L.,,,L,L.,,,,,.LLLLL,LLL,,L,,,,,,,,,,,,,.,L,,,,.,,,L,,,,.,.,.,,MbÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÁÄÄÁÄÄÄÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÄÁÄÁÄÄÁÄÁÄÄÄÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÁÁÄÄÁÁÁÁÄÁÄÁÄÁÁÁÁÁÁÄÁÄÁÁÄÁÄÁÄÁÁÄÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁhÁhhÁÁhÁÁhÁhÁhÁÁhÁÁÁÁ•ÁÁÁÁÁ•ÁÁÁ„Áh•hÁÁ•ÁÁÁÁ•Á•ÁÁ„ÁÁÁÁÁÁÁ„ÁÁÁ„•ÁÁÁÁ•ÁÁÁh•ÁÁ•ÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhÁhÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁhhÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁhhÁÁhÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁ•ÁÁÁÁÁÁhÁhhÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÓÓúúüýúýúúüüúüúúúúþüó÷óúóóóúóóòÕs?!!!  !! !!!!!!!!!!!!!!!!–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó‚!ZóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! [ñÿÿÿÿÿÿÿÿÍ! –þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ;Îÿÿÿÿÿÿÿÿð@‚üÿÿÿÿÿÿÿÿÿçY!ÂýÿÿÿÿÿÿÿÿÿÑ!‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !      =q¬õüüýüüýýüüüýÿýüüüûüýúüýúýüûýúà×ÁÁÁÄÁÁÄÁÄÁÄÁÁÁÄÁÄÁÁÁÄÁÄÄÄÄÁÁÄÄÄÁÄÁÄÄÁÄÁÁÄÁÄÄÁÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÄÄÁÄSSSˆˆNˆNNSNSSNˆSˆNNˆSNSNNNNSNNNNSˆNNSNNNNSNSSNˆNNNNˆSNSSNNNNNˆSNSSSNNSSNNSNNNNSNNNSSSSNNSNSNNNSNNSNNNNNLNNNNNNNNSNLNNNNNNNNNLNNNNNNNNNNNLNNNNLNNNNLNNLNLLLLLNLNLNNLLNLLLNNLNNLNNLNLNNLNNLLNLNNNLNNN,LNNNLLN,LLNNLLNLNNLLLNLNL,NLLNLLLNLLLLLLLLLLLL,LLLNLLLL,LLLLLLLLLLLL,LL.L,LLLL,LLLL,L,,,L,LLLL,,L,,,LLLLL,LL,L,LL,LL,,.,LLL,L.L,,L..,L.,.,LL,,L,L.,,,LLL,,L.,L,,LL,,,,.,L,,,,.,,,,L,,,,,,,,,.,,.,,M\hÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÁÁÄÁÄÁÁÁÁÁÄÁÄÁÄÁÄÁÄÄÁÁÁÄÄÁÁÄÁÁÁÄÁÁÄÁÄÁÁÁÁÄÁÁÁÁÄÁÁÁÁÁÁÁÁÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁhÁÁhÁh&0++((++++(++(+++(++*(++++++++(++(+0(++(+*++(*(*+*(+++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++cÁÁhÁhÁÁhhhhhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁÁÁÁ¹ÃhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁ×Óúüúúüúýüúûüúüüüüÿú÷÷óóúóúó÷úòÓŽ? ! !!!!!!!!!! !!!!!!!!  !!! [óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç_ !!!!–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ@!!!_ñÿÿÿÿÿÿÿÿË!Ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá ;Îÿÿÿÿÿÿÿÿç@!ËÿÿÿÿÿÿÿÿÿÿÂ! ;óÿÿÿÿÿÿÿÿÿÿ@!þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!     $q¥õýüüýýüüýýýýÿýúýýüýúýüüüüüüüúàÓÄÁÄÁÁÁÁÄÁÁÁÁÁÄÁÄÁÁÄÁÁÄÁÁÁÁÄÁÄÁÁÁÄÁÄÁÄÁÄÄÄÁÄÄÄÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÁÁÄÄSNˆˆSˆNSNNˆNSNNˆSNˆNˆˆNSSNNNNSSSSNSSˆNˆNSNˆNNˆSNSNˆSSNSSNNNNNNNSSSSSSˆSNSSNNNNNˆNNNNˆNNNNSˆNSNˆNSNNNSNNNNNNNNSNNNLNLNNNNNLNNNNNNNNNNNNLNNLLNLNNNNNNNNNLNNNNLNNNNNLNNNLNNNNNLLNN,NLNNLLNNLLLLNN,NNNNNNNNLNNLLLLLNLLLLNNLNLNNNLNNNNLLLNLLLLNLLLNLNLL,LLNLLLLLLLLLLLLLNLL,.L,LL,.LLLLLLLL,LLLLLLLLLL,LLL,LLL,L,,LL,L,LL.LLLL,,,LL,LLLL.LLLLLL,,,,,L,,L,LL..,.L,.L.LLL,,L,,,,L,,,L,L,,,,,L,L,,,,.,,.,,,.,,,LMcÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÁÄÄÄÄÄÄÄÁÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhgddfhhdhhddhhhhhdhhhhchhhdchhdhcgfhhdhghcdhchdhgcchchhcghchhchccdhchchcchccchchccccccchcccccchccccccccchcccccccccccccccccccccccccccccdccgfcccgcccccccdcccccXcc*0+3300<+30+30<+3000<0+000+0+30+30(30+300003000000+30+00+0+       +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+XcXcccccbcccccccccccccccccccccccchchcccchccccccccchcccccdccccccccchcccccccccccccccccccccccccÓÓýúýüúüüúüüúýúûúúþüóóúóó÷ó÷óóò¬Ž?!!!!!!!   !!!!!   !! 9ÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÌ@ ! !!Èþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó[ ! [ñÿÿÿÿÿÿÿÿÎ;–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË@ÎÿÿÿÿÿÿÿÿçB_òÿÿÿÿÿÿÿÿÿó_  ÎÿÿÿÿÿÿÿÿÿÿÆ!! ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ     áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóxÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !   !!!s¬íüýýüüýýüüüüÿýýüúýúýüüûýúýúýüàÓchddhchhfhhhgddghhhghdhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhˆˆNˆSNNNSNSNNSˆˆˆSNˆˆNNˆSˆNNSˆˆNNSSSNNSNSNNNNSNˆSNSSNNˆSˆNNNSSSSNSSNSSSSSNNˆSSNNNSNSSNNNNSSSNNˆNNNNNNSNNNNNNNˆNSLNNNNNNNNNNLNNNNNNNNNNLNLNNNNNNNNNLNNNNNNSNLNNNNLNNNNNNLNLLLNLNNNLNNLNNNNLLNLNNNNNNLNNNNNNLNNNNLNLNNNLLLLNNLNNLNLLNLLNLLLLLNLLNLLLLNL,LLLLLLLLLNNLLLLLLLLLLLLL.NLLLLLLLLNLL,LLLLLLLLLL.LLL,,L,.L.LLLLLLLL.,L,LLLLLLL.LLLLLLL.L.,LL,LLL,,,L.LLLLL,,L,,L,,.,,.LL.L,,,L,,,,,,,,,.,L,L,L,,,,,McÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄ   +000+0+00030+03+003+00033+<03+03+03003+03+0(03+*0+00+0*+00+        +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+   Ó×üüüúüúüüúúýúüúýüÿúóúóóúóúóúóò¬s> !!!!!!!!!!!!!!!!!!!! !!!! !!! _úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó‚!! !!!!!!!! !!!Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷_!!!![ñÿÿÿÿÿÿÿÿÌ!! _üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„;ÎÿÿÿÿÿÿÿÿðBÆÿÿÿÿÿÿÿÿÿÿË!_úÿÿÿÿÿÿÿÿÿ÷;!  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  ! =}ªéüüüýýüüýýýýÿýüýüýüüýúüúýúýüúæÓˆSˆNSSSSNSˆˆSNSSˆSNˆSˆSˆˆˆˆNˆSSNNˆSSNSNNˆˆNNˆNSNNSSSSNSSSSNNNSSNSSˆNSNSˆNNSSNSNSSNSSSNNNSSSSSNNNSSNNNNSNSNSNNSSNNNNNSNNSNNNNNNNNNNNLNNNLNNNNLNNNNNNNNNSNNNLNNNNNNNNNNLNNNNNLNNLNNNNNNLNNNNLNLNNLNNNNNNNNLLNNNLLNNLLNNLLNNNNNNLNLNLLNLLNLLNLLNNNLLLLNNLLNNLLLLLLLLL.LLL,LLLLLLLLLLLLLLLLLLLLLNLL,LLLLLLLLLLLLLLLLLLLLL,LLLLLLL,N,,L.LLLLL,,LLLLL.L,LLL,,.LLLLL,L,L,,L,L,L,LL,L.L,,,,L.,,.L,L,,,,L,.,,,,,,,,LWdÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄ++30330*00+3000+300+30+00+00303000+300030+300000303(300********************************************************************************************************************************&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+  ÓÓûüüüüüûüüüúýúüúúþüóóúóó÷óóó÷ò¬? !! !!!  !! !!!!ÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüñÏÈÆÂ–––ÅÈÎñúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÈ@!!!!! ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüáÆ…_[ZZZdÂÎóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü_ñÿÿÿÿÿÿÿÿÍ!! ;óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüY;Îÿÿÿÿÿÿÿÿç@ Yáÿÿÿÿÿÿÿÿÿü‚ áÿÿÿÿÿÿÿÿÿÿ„ !_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ     !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !  !    $qšëýýýüüýýüüüýÿýýúýüüûüýýüüüüýüàÓNSSNNSSNNˆˆSSNNSˆSSSNˆˆˆˆˆNNSˆSˆˆSSSˆSSˆSSNSSNSSNSSSSNˆSSNNSSNSSNNNNNNˆSNSNNNNNˆNSSSSNNˆSˆSSNNSSSNNNNSSNNNNNSNSNNNNNˆNNNSNSNNNNNLNNNNNNNNNSNNNLNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNNNNNNNNNNNNLNNNNLNLNLLLNNNNNLLNNNLNNNNLNNNNNNNLNNNLNLLNNLLNLLLNNLLLLLNLLLNLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLNLNLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL,LLL.,LLLL,LLLL.L,,LLLLLLLL,LLLLLLL,LLL,LL,LL,,L,,,L.L,.,.L.,L.L,,,L,,,,,,,L,,,L,,RcÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄ +000+00003+003+003+30+03+03+0+0+03+00*00+03+0*0+0(0+0+0*434344343O33433333433433333333333333333333333M333M333M333M330<0*03030:0033+03303+33+0<+00+0000003(0+00(0*0++0+++++++++++++++++*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+     Ó×üúýúûúüúúýúúüúüüÿúóúóóúóúóúóò¬?!!!!!!!!!!!!  !! !!!!!!!! ! !! @áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýñÈ@!!!!@xÈñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ_!!! !!!Ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ËZ!#…çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷_!_ñÿÿÿÿÿÿÿÿË;!Æýÿÿÿÿÿÿÿÿÿÿÿüç‚‚ÂÏüÿÿÿÿÿÿÿÿÿÿÿÿá;Îÿÿÿÿÿÿÿÿç@–üÿÿÿÿÿÿÿÿÿáY„üÿÿÿÿÿÿÿÿÿð!  !!ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!ÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóxÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      p’éüüüýýüüýýýýÿýúýüýûüýúúýúýûüüàÓNNSˆSˆSˆˆˆˆSSˆNSNˆˆSNNSˆˆˆNSSˆˆˆˆNSNˆˆNˆNNNNNSSˆˆˆNˆNSSˆNNSˆNNNNNSSˆNˆNNNSNSNNNNNSNSSNNNNNSSNSNSSNNNSSSNNˆNNSNNNNNNNNSNˆNSNNNNNNNNSNNNNSNSNNNNNNNNNNNNNSSNLNNNSNNNNNNNNNNNLLLNNNNNNNLNNNNLNNLNLNNNNNNNNLLNLNLLNLNNLNNNLLLNNNLNLNNLNLNNNLLNLNNNLNLLLLLNLNNNLLLLLLLLNLLLLLNNLLLLLLLNLLLLLNNLLLLLNNLLLLLNLLLL,,LLLLLLLLLLLL.LLLLLLLLLLLLLL,LL,L,L.,LLLL.LL,LLLL,L,LL,L,L.L,LLLL.L,L,,,,LL,LLL,L,,,,,,LL,,,LLLL.,LchÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄ  +3030+0300030003000003003000300300030003000300303030+20*34344343434334334333333333333333333333333333333333333333M33M303*:40303330030+0000000+30+33+0<+30+300(30+0+0+*0++0+++++++++++++*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+  ÓÓüüúýüýúüýúüüüüúúþüóóúóó÷óóó÷ò¬l  !! !!!  !!!  !!!!!!Bóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð…!!!!!!!!;–çýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷‚!!!!!!Æýÿÿÿÿÿÿÿÿÿÿÿÿÿó„!!!!YÎüÿÿÿÿÿÿÿÿÿÿÿÿÿóY  [ñÿÿÿÿÿÿÿÿÌ9!@óÿÿÿÿÿÿÿÿÿÿÿÈ; !Âüÿÿÿÿÿÿÿÿÿÿü[;Îÿÿÿÿÿÿÿÿð;;Ïÿÿÿÿÿÿÿÿÿÿ– !ñÿÿÿÿÿÿÿÿÿÿ[  _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      =s¥íýýýüüýýüüüýÿþýúýüüýüýýúýúüüüæ×ˆˆˆˆSNSˆˆSˆˆSNSSˆˆNˆˆˆˆˆˆNˆSˆSˆSSNSNSˆˆNSSˆNSSˆˆNSˆSˆSNˆNSNSSSSNˆˆSNˆNNNSNˆNNNNNNNNNˆNSˆNNSNNSˆNNNNNSSNNNNSNSSNNNSSNNNˆNNNNNNSNNNNNNNNNNNSNNNNNNNSNNNNNNNNSNNNSNNNLNNNNNNNNLNNNNNNNNNNNNNLLNNNNNLNNNNNLNNNNLLLLLLNNNNNLNLNNNLNNNLLLLNNLNLNLNLNLLLNNLNNNNLLNLLNNLNLNLLLLNLLLNLLLLLLLLNLLNLLNLNLLNLLLLLNLLNLLLLLLNLLLLLLLLLL,LLLLLLLLLLL,LLLLL,,,,L,LLLLLL,LLL,LNL,L,,NLLL,L,LLLL,LLL.,LL.L,,,,LL.L,L,,.,L,,,,,.,\bÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁ    +003+03000000000000000000000000000000000000000000000000*43434434343O33433333433333333333333333333333333M333M333M3330<3M*0300Q0300303303+30+30003+0003+003+0*0*00*0*0++0+++++++++++++++*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+    ÓÓýüüüúüüúúüúýúûüüÿúóúóóúóú÷úóò¬s?! !!!!! !!!!!!!!! !!!!!!!!!!!!! !Z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÆ@!!!!!!!!!!!!YÈ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÂ!!!!!‚üÿÿÿÿÿÿÿÿÿÿÿÿü–!!!!! !! !Zðÿÿÿÿÿÿÿÿÿÿÿÿÿá!!!_ñÿÿÿÿÿÿÿÿÌ;Èÿÿÿÿÿÿÿÿÿÿ÷_ ;ñÿÿÿÿÿÿÿÿÿÿá;Îÿÿÿÿÿÿÿÿç@ ‚÷ÿÿÿÿÿÿÿÿÿñ[ÆýÿÿÿÿÿÿÿÿÿÎ!  ! dþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   =}ªéüüüýýüüýýýýÿýúýüýûüýúýýüýýûüàÓˆSSˆSNSNˆˆˆSSˆNˆNˆˆNNˆNˆSˆSˆSˆˆˆSSNSˆSˆˆˆˆNNNSˆˆNSSˆSSNSNNNNˆSˆNNˆSNNˆSˆSSSNNNNSNNNNNNSNSˆˆNSSSNNNNSˆNNSˆNNSSNNNNSSNSSNSNNNNNNSSSNNNNLNNNNNNNNNNNNSNNNNSNNNNNNNNNNNNSNSNNNNNNNNNLNNNNNLNNLNNNNNNNNNLNNNNNNNNNLLNLLLLLNNLNNNLNNNLLLNNNLLNNNLNNNLLLLNNLNLLNLLLLNNNNLLLLLLLNNLLLNLNLLNLLNLNLLLLLLLN,N,LLLLLLN,LLLLLLLLNLLLLL,LLLLLLLLLLLLLLLLLLLL,L,,,,,LL,LLLLLLL,,,LNLL,LLLLLLLL,,LLLLL,LL,LL,LLLL,,L,,,,,LL.,L,.Mc¾ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄ *00300++++++++++++++-++-+++-+-++-++++++++++++++++++++0+*3434434343434334334333343333333333333333333333333M333333333M3M3*303033030303003+300+0+300+30+0+300+0000*0(0+0++0++0++++++++++0*+0+&0&00&0++++++0++++0++0+++++0++++++0++&&&&&&+ ÓÓüûúüüüüüýúüúüüúüþüóóú÷óóóóóóò¬Ž?! !! !!  !!! !!!!!!!!!!!!!! !_úÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÅ#  !!! !!!@ÂòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ@!!!YòÿÿÿÿÿÿÿÿÿÿÿÿðY!!!!!!!–üÿÿÿÿÿÿÿÿÿÿÿÿË!  !_ñÿÿÿÿÿÿÿÿË!!! ñÿÿÿÿÿÿÿÿÿüY!ñÿÿÿÿÿÿÿÿÿü;;Îÿÿÿÿÿÿÿÿð@!ÌÿÿÿÿÿÿÿÿÿÿÃ! @óÿÿÿÿÿÿÿÿÿü@ _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! =q¥ëýýýüüýýüýýýÿýýýúüüýüýúýúýúüýæÓˆˆˆˆˆˆNˆˆSSSSSSˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆNSSSNˆˆSˆˆNSˆˆNSNNˆSˆNSNˆNˆSNˆSNNˆSNNˆSˆNSˆNNSNNNNNNSNNNSSSSSSSNNNNˆSNNNSNNNˆSSSNNNNˆNSNNSNNNNSNˆSSNNNSNNNNNNNNNNNNSNNSNNNNˆNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNLNNNNNNNNNNNLNLNNLLNNLNLNNNNNNNNLLNNNLLNNLLNNNNNLNLNLNNNLNNLLLLNLNNNLNLLLNLLLLLLNLNNLLLNLLNLLNLNLLLLLNLLLNLLNLLLLLLLLLLLLLLLLLLLLNLLLLLNLLLLLL,LLL,LLLLLLL,LLLLL,LLLL,,LL.,LLLLL,L,LLLLL,N.,,,,L.LLL,LL,,L,,,.,,L,LXcÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄ  TTT003+03+ýüüúüüüþüüúüúúúúó÷úóúúúúúúúúóú÷óòóúòúó÷ó÷ò÷óòòõð13343443434343433433334333Q333333333333333333333333333M333M33330*3M030M3030U00303030303003000303003030*00+0*0*0++0+++++++++++++1ÉÍÈ×ÄÇÄ×ÄÉÄÆÉÆÄׯÉÄÆÄÌ›ÆÄÆ™ÄÆÂÆÆÅÆÄÆÄÆ™ÄÆ›Ã†Æ–Ȇ+&&&&&&+TTT   Ó×üüüýúûüúüüúüúýúýÿúóúóó÷úóúóúòÓ?!!!!!!!! !!!!!!!!! !!!!!!!!!!!!!!!!!!! !!!!_üÿÿÿÿÿÿÿÿÿÿÿÿÿüÉ@!!!! !!!!!!!!@Æúÿÿÿÿÿÿÿÿÿÿÿÿÿñ_!!!!!!;áÿÿÿÿÿÿÿÿÿÿÿÿÉ@ !! !! _óÿÿÿÿÿÿÿÿÿÿÿü‚ ![ñÿÿÿÿÿÿÿÿË!!!!!_÷ÿÿÿÿÿÿÿÿÿ‚;üÿÿÿÿÿÿÿÿý‚@Îÿÿÿÿÿÿÿÿç@! _ñÿÿÿÿÿÿÿÿÿú_! Îÿÿÿÿÿÿÿÿÿÿ   xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    !  !!q¥éüüüýýüüýýýýÿýüüýýýúýüýüýüüýúàÓˆˆˆSSˆˆˆˆˆSSSSSˆSˆSSˆˆSSSˆˆNSNSSSˆNˆˆˆSSSˆˆˆˆˆˆSNSSSSNˆNˆˆˆNNˆNˆˆSˆNNSSˆNˆNSˆNSNSNNNSSSNNNˆSSSNSNˆNNNNNNSˆNNˆNSNNSNSSSSNNˆNNNNSNSSNNNNSNSNNNNNNSNSNNSNSNNSNNNNNNNNNNNˆNNNNNSSNNLNNNNNNNNNSNNNNNNNNNLNNNNNNNNNLLNLLLNNNNNLNNNNLLLNNNNLLNLNNNNNNNNNNNNNLNLNNLLLNLNNNNLLNNLNLLLLLLNNLLNLNLLLNNLLLLLLNLLNNLLLLNLNNLLLLLLLLLLNNLLNLLLLLLLLL,NLLLLLL.L,L,LLLLLLLLLL.L...LL,L,LLLLLLLLLLL,LLLL,.LL,,LLLLLL,,L.LLL.,.,LLLL,McÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄ TTTTT"0(30300+þüúúüüüýüüüúúúúúóúúúúúúóúúúóúòúò÷÷ò÷÷÷÷÷ó÷òòóòðò*34434343334333333033333P0333\03333333333333333333303330333333M3*303M3030303030030000000000000000000000000000+0+0+0++0++++++++++ÉÌÉÆ×ÈÌÃׯÆ×ÄÆ×ÃׯɯÉÄÌÆÄÆÄ™ÆÄƙęęęÆÄ›ÄÅÆÅÅ–+&&&&&&+TTT""  ÓÓýúýúýüüüûüüúýúúüþüóóóúóó÷óóóò¬Ž?!! !  ! !!!! !!  !!!!  !! !!!!!!!_úÿÿÿÿÿÿÿÿÿÿÿÿÿçZ !!!!!! !!!!!! !!!ZÎýÿÿÿÿÿÿÿÿÿÿñ_!!! !!–üÿÿÿÿÿÿÿÿÿÿÿÂ!!!  !!! !!@ñÿÿÿÿÿÿÿÿÿÿÿñ@ _ñÿÿÿÿÿÿÿÿË!Âüÿÿÿÿÿÿÿÿó! –ÿÿÿÿÿÿÿÿÿÎ  ;Îÿÿÿÿÿÿÿÿð;ÂýÿÿÿÿÿÿÿÿÿÎ;_÷ÿÿÿÿÿÿÿÿÿó@ dýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    =q¥íýýýüüýýýýüýÿýüýúýúýüûüüüûüüüæ×T::TT:TT:TT"SˆˆˆSˆˆˆˆˆSˆSSSˆˆˆˆˆˆSSˆˆSNSNSSˆSSSˆˆˆˆSˆSNˆˆˆSNNNSSˆˆˆˆˆˆSSˆˆSSNˆSNSSNSˆNNˆSSSNNNNSˆˆSNSNNNNNNNNNSNNNNNˆSNNNNˆˆNˆSSNˆNNNSNNNNNNNSSSNNNˆSNNSNNNNNSNNNNNNNNNLNNNNNNNNNNNNSNNNNNNNNNNNNNNˆNSNNNNNNNNNNLNLNNNLNNNNLNLLNNNNNNNNLLNNNNLNNLLNLNNNLLLNNLNNNNNNLNLLNNLLNLNLNLLNNNNLNLLLLNNLNLNLLNNLLLLLNLLLNLNLLNLLNNLLLLLLNNNLNLLLLLLLLLLLLLLLLNLLLLLL.LLLLNLLLLLLL,LLLLLLL,L,LLLL,,LLL,LNLLLL,L.,LL,,L,LLL,LLLLL,L,,,,L.L.L\hÄÄÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄTTTTTT   """0003+0*üúúüüþýýüúúúúúúúúúóúúúúüúúú÷÷÷ó÷ò÷÷÷ó÷òò÷òòóòòóò133443***11***1*1*11+1+1+1*1+1*11+110*1+10*1+1+1+1+1*1+1*1+1**33*33**1+1+1+1*1*+0**1+1+*+1*10*1++1+1+1+1+1+1*0**+******+1*+++++*ÌÈÉÌÈÄÉÉÈ×ÄÉÈ×ÉÍ™ÍÇÍ™ÄÇÃ™ÆÆÆ™ÄÆÄ™ÄÇÆ™ÄÅÃ™ÄÆ–ÄÅÆ–&&&&&&+""TM"T  ÓÓýüúüúüúüüúýúüüúýÿúóúóó÷úóóúóò¬Ž?!!!!!!!! !!!!!!!!!!!! !! !!!!!! !!!!!ZóÿÿÿÿÿÿÿÿÿÿÿÿýÅ!! !!!!!!!!!!!!!!!„óÿÿÿÿÿÿÿÿß[!! Yñÿÿÿÿÿÿÿÿÿÿþ…!!!!!!!!!!!!! !!YðÿÿÿÿÿÿÿÿÿÿýÈ! [ñÿÿÿÿÿÿÿÿË!!ßÿÿÿÿÿÿÿÿÿ–!! !üÿÿÿÿÿÿÿÿó ;Îÿÿÿÿÿÿÿÿç;!@áÿÿÿÿÿÿÿÿÿþ‚ áÿÿÿÿÿÿÿÿÿÿ‚! !! !!‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!     áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóx !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   !! !=}¥éüüüýýüýýýýýÿýüýýüýúýüýýûüýúýàÓTTTTTTTTTT:TˆSˆˆˆSˆˆˆˆSˆˆˆˆˆˆˆˆˆSˆˆˆSSˆNSSSSSSSSˆˆˆˆSNSˆˆˆSSˆSˆNˆSˆˆˆˆNˆˆSNSSˆNNNSˆSSSˆNNˆNSSSNSNˆSNˆˆSNSSˆNNˆNSˆNNNNSSNNNNNˆˆSNNNNSNSNNNNNSNNSSNNNNˆSNSSSNSNˆSNNNSNNNNNNNNNNNNNSSNNNLNSNNNNNNNNNNNNNSLNSNLNNNLNNNNNNNNNNNNLNNLNNNNNNNNNNNNNLNLNNLLLLNNLLLNSNNSLNLNLNNLLLNLNNLNNNLNLNNLNNNLNLNNLNLNNLLLNLLLLLLLLNNNNLLLNLNLLNLLLLLLNNNLNNLLLLLLLLLNLLLLLLLLLLLLLLLLLLNLLLNLLLLLLLLL,LLL,.LLLNLLLLLLLLLL,,L,LL,L.L,LLLL,LLLLLLL.L,LMcÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄT"TTT TT":"0*30300+úúüüþüüüúúúúúóóóóúúúúúúúúúó÷ó÷÷÷÷ó÷ó÷óóóó÷òòóòòò*34434*óòñðóñòðòðóèðèòâòâðâòçðâñðòðâðâðâðâðâòâðâçâââðèâââïàÑè*33*03*ßáßâáÞáÞÑÞÑÞÑÞÑÞÎÞÑÞÞÎÞÍ×Ñ×ÍÞÎßÉ×Ñ×ÎÞÞÉÌÉÞÍ×Í×Í×Í×Í×É*++++++ÍÌÉÄÉË×ÄÌÆÉÆÌÉÃÇÆËÆÇÆÇÆÄÆÄ™ÄÆÇÃÇÆÇ–Æ––™ÆÅ–Æ–Ä™–+&&&&&&+TTT  ÓÓüüüüüüüýúýúüýúüüþü÷óóúóóú÷óóò¬}?   ! !! !!!!!!!!!!!!!!! !!!!!!! !Bñÿÿÿÿÿÿÿÿÿÿÿÿ÷_!! ! !!!! !!!!!!ZßÿÿÿÿÿÿÏY!!!!!ÈÿÿÿÿÿÿÿÿÿÿÿÆ$ !  ! !Yñÿÿÿÿÿÿÿÿÿÿó[ _ñÿÿÿÿÿÿÿÿÌ#!ðÿÿÿÿÿÿÿÿÿYÏÿÿÿÿÿÿÿÿü;Îÿÿÿÿÿÿÿÿç@ „üÿÿÿÿÿÿÿÿÿáY –üÿÿÿÿÿÿÿÿÿá!  ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ!   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!!ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! =s¥íýýýüüýýýýýýÿþúýúýüýýúýúüýüüüàÓTTTTTˆˆˆˆˆˆNSˆˆˆSˆˆSˆˆˆˆˆˆˆˆˆˆˆSSSSˆSSSSˆˆˆˆˆSˆˆSSSNSˆˆSˆˆˆNSˆˆSˆSSSˆSNSNSSˆNSSNNˆNSˆNSNSˆSSˆˆSˆSSSSˆˆNNSNNNNNˆNNNNSˆSSˆˆNNSNSNNNNNNNSSNNNSNNNSNNNNNSNSNNˆNNSNNNNNNNNNNNNSNNSNNSNNNNNSNNSNˆNNSNNSNNNNNNNNNNSNLNNLNNNNNNNNNNNSNNSNNNNNSNNNNNLNNNNLNNNLNNNNNNNLNNLNLNLLNNNNLNLLNNNLLNNNNNNLNLLNNLLLLLLLLLNLNLNLLLNLLLLLNNLNNNLLNLLNLLLNLLLLLLLLLLLLLL.L.LLLLNLNNLLLLLLLNLLLLLLLLLLLL.LLLLLNLLLLLLL,LLL,LLLLL.L,LLL,LL,LLLLL.LLMc¾ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁT"TTTTTT"TTTT:000+03+üúüþýüüúúóúúúúòúúúúúúóúúúú÷÷÷òú÷÷÷ó÷÷÷ò÷òòð÷òóóò*44344*òóòóðóòòëëëìêëêôêöãöããêìêëëêãêìëãëãìãêãêêêêêêãêãêÝãÝãÝ*3M*3M*ÝêÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ­ÝÝÝÝ­Ý­ÝÝÝ­ÝÝ­Ý­Ý­­Ý­­­­­­­°Ô¨10++++*°­¦­¦­¨­¦¦°¨­¦¨°¦¨¦£¨£¦¨£¦¦¨¦¨¦¨¦¨£¦¨¦¦£¦¦£¨¦¦r¦+&&&&&&+::"T  ÓÓüüúýúýúüüúýúúüúüÿúó÷úóóúóó÷úò¬s? !!! !!!!!!!! !! !! !!!!!!!!!!!! !!!!!!!!!!9áÿÿÿÿÿÿÿÿÿÿÿÿá;!! !!!!!!!! !!! !!!!!@ÆüÿÿÿÌ@!! !!! !!YóÿÿÿÿÿÿÿÿÿÿÎ@  !! !!!ZüÿÿÿÿÿÿÿÿÿÿÈ!![ñÿÿÿÿÿÿÿÿË9! !!!!! !ñÿÿÿÿÿÿÿÿü; Âÿÿÿÿÿÿÿÿü;  ;Îÿÿÿÿÿÿÿÿð@!Îÿÿÿÿÿÿÿÿÿÿ– ;ñÿÿÿÿÿÿÿÿÿÿY _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ         =qªéüüüýýýýýýýýÿýüüýúýüüýüýýüûüýàÓ"TTT"TT"TTTTTTTˆˆˆˆˆˆˆSSˆˆSSSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆSˆˆˆˆNSNSSSˆˆˆSˆˆˆˆSSSˆSˆNSˆNNSNSˆˆˆNNNˆSNNNNNˆSSˆˆˆˆSˆNˆˆNˆSˆSSˆSSSSSSSˆSNNSSNSˆˆNSNSSNSSNNNNˆSˆNNSNNSNNNNNSSSNSNSNSSSˆNSSNNNNSNNˆNSNNNNNNNNSNNSNNNNNNNSNNNNNNNNNNNNNNNNNNLNNNNNNNSNNNNNSLSNNNNNNNNNNNNNNLNNLNNNNNNNNNNNNLNLLNNNNLNLLNNLLLLNNNLNLNNNNNLNNLNNLLNNLNNNLLLLLLLNNLNNLNLLNLLNLLLLLLLLNNLLLLLLLLLLLNLLLNLLLNLLNLNLLLLNLLLLNLLLLLLLLLLLLLLLLNLLL,L,LNLLLLLL,LLL,,LLLLLLLLLLLbcÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄT:TT""TT0T "T:TT"00+3000+úüüüóúúúúúúúú÷÷óúúú÷÷÷÷÷÷÷÷ó÷÷÷óúòúó÷òóóòóóó÷ñòò*43434*óòòóòðñëëëëëëãìãããêãöãìãêìãöãêãìããããêêêãÝãêãêÝÝêÝãÝêÝÝ*33*03*ÝÝÝÝÝÝÝÝÝÝÝÝݰÝݰݰÝݰݰݰ°Ý°Ý°Ý°°Ý°°Ý°°°°°°°°°°°°°°°*+++++1°°°¦°°°°¨°£°¦°¦¦°¦°¦¨¦¦¦¨¦¦¦¦¦¦¦¦¨¦¦¨¦¦¨¦¨¦£¦¨¦¦+&&&&&&+TTT:T: Ó×ûýüüüüüûüüüüüüúüþü÷óóúóóóúóóò¬s?   !!!! !!!!! !!!! ! !!!!!!!!!  !!!!!Æÿÿÿÿÿÿÿÿÿÿÿÿß@!!!!!!!!!  !! !!!!!!! !!–óüÆ@!!!!!Èþÿÿÿÿÿÿÿÿÿñ@! !!!! !!!‚ÿÿÿÿÿÿÿÿÿÿòZ!!_ñÿÿÿÿÿÿÿÿË;!! !ðÿÿÿÿÿÿÿÿð!‚ÿÿÿÿÿÿÿÿüB;Îÿÿÿÿÿÿÿÿç;xóÿÿÿÿÿÿÿÿÿó_ÆýÿÿÿÿÿÿÿÿÿË xþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!  q¥íýýýüýýýýýüýÿýüýüýüüûüýüüýüýüæÓT"MTTT"MTT"MTT"T"TTTˆˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSˆSˆSˆˆNˆˆˆˆˆˆˆˆˆˆˆˆˆNSˆˆˆˆSˆSSSSˆˆˆˆSNˆˆNNˆSSˆˆˆˆSˆNˆSˆNSˆˆSSSNSSSNNSSNNSSˆSSSSˆˆˆNNNSNNSSSNSNNSNNNNNSSSSNNˆSNSSSNSSNˆNNSNSSNNNNSNSNSSNNSNSSNNNSSNNNNNNNNNNSNNNNNSNSNNNNNNNNNNNSNSNNNNNNNNNNNLNNNNNLNNNNNNNNNNNNNNNLNNNNNNNNNNLNNLLNNNNNNNNNNLNNNNNNNNNNNLLNNLLLNLNLNNLLNLNNLNLNNLLNLLNLLNLNLLLLNLLNLLLN,LNLLNLLNLNLLLNLLNLNLLLLLLLLLLLLLLNLLLLLLNLLLLLLLLLLLLLLL,LLLLLLLLLLLLLLMdÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ""""TTTTT:TT: TTT+0303++üüüúúúúúúúúúúóó÷úúúúó÷ó÷ñ÷ó÷úòó÷ú÷÷òúó÷ò÷ò÷÷ò÷òó+44443*òðóòòðòëëêëëëêêãëãêãêêããêëãêãëëãëãëãêãêãêÝêêÝãêÝãÝãÝãÝ*33*33*ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ­Ý­ÝÝÝÝ­Ý­ÝÝ­Ý­°­­­Ý°­­°­­°­­­°­¦­¦¨1++0++*°¦¦­¨¦¦£¦£¦¨¦¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¦¨¦¦¦¨¦¦¦¨r¦¦¦&&&&&&&+TTÓÓüüúýúüüüúýúýúýúýÿúóúóó÷úóóóúò¬s?!! !! !!!!!! !!!!!!!!!!! !!!!!! !!!!!!!!!!! !‚üÿÿÿÿÿÿÿÿÿÿÿÌ! !!!!! !!!!!!!!!!_‚@! !@ñÿÿÿÿÿÿÿÿÿý_!!! ! !!!!!!!!#ÎÿÿÿÿÿÿÿÿÿüÆ  !![ñÿÿÿÿÿÿÿÿË!!!!ÈñüüÿÿÿÿÿÎ !!!‚ÿÿÿÿÿÿÿÿüY!;Ìÿÿÿÿÿÿÿÿç@ !ËÿÿÿÿÿÿÿÿÿÿË@ ZóÿÿÿÿÿÿÿÿÿüB  !dþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóx  ÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    ! !p¥éüüüýýýýýýýýÿýýüýüýüüýúýûüýüûàÓ"""ˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆSˆˆˆˆSˆSˆˆˆˆˆSˆˆˆˆSˆˆSˆˆˆSˆˆˆSSˆNˆˆNˆSSˆˆSˆSSˆˆNSˆˆˆˆˆSˆSˆˆˆSSˆˆNSˆNSSSSNNSSSSˆSNˆˆNSSSSˆˆNSSˆˆˆNNSSˆNNSSNSˆNˆˆSNSSNSˆNSNSNNSˆNNSNSNSNNNNNNSNSNNSSNSSNNSSNNNSNNNNSNNNNNNSNNNNNSNNSNNSSNNNNNSNNSNLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNLNNNNNLNNNLNNNNNNNLNNLNNNLNNNNNLNLNLNNNLNNNNLNNLNNNNLNNLLNLNNLNLLNNLNLLNNNLLNLNNNLNLNLLLNLLLLLLLLLLLLLLLLLLLNLLNLLNLLLLNLLLLLLLL.LLLLLLNLLLLLLLLLLL\gÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄ:TTTTT"TT0T:T"T"TTTTTTT(30000+üüúúóúúúúúúúúúó÷÷úúóú÷ó÷óò÷÷÷÷÷òóúó÷òóòòó÷óòóò÷÷*44434*òñóòõðòëëëëèâèââàâàâßßàââëâèêâãâãââêàêßâêßßßàßßßßßàߨß*33*331ÞØØßØ×ØßØ×רררÒררר××Ò×Ê×Ò××Ê××­ÇÒ×Ç×Ò×ÇÇ××Ç­ÇÇÔÇ*0++++*°°¦Ç­™ÇÇÇÇ™™Ç™™™™™™™™™™™™™™™™™™™™™™™†™†¦††¦†††œ†+&&&&&&+TTTTTTTÓÓýüüüüüûüüúýúýúüüþüóóú÷óóúóúóò¬Žl !!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!! !!!!!!!YóÿÿÿÿÿÿÿÿÿÿÿÎ!!! !  ! !!! !!!! !!!!! !! !!!!!!!!–úÿÿÿÿÿÿÿÿÿÌ@  !!!!! !!!Zúÿÿÿÿÿÿÿÿÿá!!!_ñÿÿÿÿÿÿÿÿÌ#!!Y…ÎóüüÿÎ!!Æÿÿÿÿÿÿÿÿü!;Îÿÿÿÿÿÿÿÿð;[ðÿÿÿÿÿÿÿÿÿü_ !ÎÿÿÿÿÿÿÿÿÿÿÂ!_ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    pªíýýýýýýýýýýýÿþúýüýüûýüýüüýúýüæÓTT"T:T:TTT"T:TTT"T:TTT"TT0T"T"MT"Tˆ½ˆSˆˆˆˆˆˆSˆˆSˆˆˆˆˆSˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆSSˆˆSˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆSSˆˆSSSˆSˆSSˆˆˆˆˆSˆSˆˆˆˆˆˆSSˆNˆˆSNSNSNSˆˆˆˆSˆSSˆNSNSSSSSˆNNSNˆˆSˆNNSNNˆNNNˆNNSNSSNNSSSNSSNSNNNSNSNˆNNSSNNSNNSˆNNNˆSSNˆNSˆNNNSNNNNNSNNNNSNNNNSNSSNNNNNSSNNˆNNNNNNNLNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNLNNLNLNNLNNNNNLNNNNLNLNLNLNLNNNLNNNLLNLNNNLNLNNNNNNLNLNLNLLNLLLNLLLNLNNLNLNNLLLLNNNNLNLLNLNNLLLLLLLNLNLLLLLNLLLLLLLLLLLLLLNLNLLLLLNLLLLLLLLLLLLLLLLLLLLLMhÁÄÄÄÄÄÄÁÄÄÄÄÄÁÄT0"TT:TTTTTTTT TTTTTTT+003+3+úúüúüüúúúú÷úúúóúó÷ó÷÷÷÷ó÷òú÷úúò÷÷úòóñ÷ð÷óòóòòóòó*43443*òôòððòðöëìëëëèâêëêãêêêãêêêâãèêêëëãöãêãêãàâßêÝãÝêÝÝÝãÝÝ*3M*33*ÝÝÝÝÝÝÝרßÝÝÝÝÝÝÝÝ­Ý­Ø×ÒÝ­Ýݰݭݰݭ×××­°­°Ý°­°°­­Ç­ž­*+0*++*°¦°¦Ç­Ç¦¨¦°¦¨¦°¨£¦™Ç™™¦¨¦¦¦¨¦¦¦¨™™†¨¦¦¨r¦¨r¨¦¨r†+&&&&&&+TTTTTT  Ó×ýúýúýüüúýüúýúýúýÿúóúóóúóó÷óóò¬ŽC!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!! !!!! !ÑÿÿÿÿÿÿÿÿÿÿÿÎ!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!Ïÿÿÿÿÿÿÿÿÿü]!!!!!!!!!!! !!!@Æÿÿÿÿÿÿÿÿÿó_ !!!![ðÿÿÿÿÿÿÿÿË!!!!! !!!!Y–Ï–!! çÿÿÿÿÿÿÿÿú;Îÿÿÿÿÿÿÿÿç@ ÂüÿÿÿÿÿÿÿÿÿÎ@‚óÿÿÿÿÿÿÿÿÿñ;   xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   !!q¥éüüýýýýýýýýýÿýüüýúýüýúýýúýýüýàÓ½ˆ½ˆ½ˆSˆˆˆˆˆ½ˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆSˆˆSSˆˆˆSSˆˆˆSˆˆˆˆˆˆSSSNˆNSˆSSˆˆSSSˆSˆˆˆˆˆNNNSˆˆˆNˆSSˆˆˆSSSNSˆSNSˆˆˆNˆˆSˆˆˆSˆNˆSSNSˆSNˆˆˆˆˆˆSˆˆNSSNSNˆSSNSNNSSSSNNNSSSNSSNNNSNSˆNSNNNSˆNNNNSSNSNNNNˆNNNNNNNNNNNNNNNSNNNSSNNNNNNSSNNNNNNSNNNNNNNNNSSSNSSNSNNNNNNNNNNNNNNSNSNNNSNLNLNNNNNNLNNNNNNNNNNNNLLNNNNLNLNNLLNLLNNNLLNNNLNLNNNNLLLLNLLNLLLNLLLNLNNNNNLLLLNNNLNNLNNNLLLLLNLLLNNNLNNLNLNLNLNLLLLNLLNNNNLNLNN,LLLLLNLLLLLLLLNLLLLLL.MLchÄÄÄÄÄÄÄÄÄÄÄÄÄTTTTTTTTTTTTTTTTTTTTTTTTTT"++0000+úúúüüú÷÷óòó÷óúúó÷÷÷÷÷úò÷ú÷÷óú÷÷óú÷ú÷óòóóòóòó÷÷óò*444431ðòñóòðòëëëêöëëèããêêããêêêãëâêâãëãìããöãêêãßêßêãêãÝÝÝÝÝÝÝ*33*M3*ÝÝÝÝÝÝÝØßÒÝÝÝÝÝÝÝݰÝÝ×××­Ýݰݰݰݰ­×Ò×­°­°°°­°­°­­Çצ*0++0+*°°°°£ÇǦ¦°¦°¦°¦¨¦¦¦Ç™¨¦¨¦¨¦¨¦¨¦¨™™™™¨¦¦¦¦¦¦¦¦¦™†+&&&&&&+TTTTTTTTTTÓÓüýüüüýúüüúýúüüüüþüóó÷÷óóúóú÷鬎?!!  !! !!! !!!!!!!!!!!! !!!!!!!!!!!!! !!!!!„üÿÿÿÿÿÿÿÿÿÿá;!!! ! !!!!!! !!!!  !!!! !  !!!!!!!!!YñÿÿÿÿÿÿÿÿÿÈ@!! !!!! !!! ! !!!ZüÿÿÿÿÿÿÿÿüÆ !!_ñÿÿÿÿÿÿÿÿÎ$!!;ÿÿÿÿÿÿÿÿÿñ;Îÿÿÿÿÿÿÿÿð@@áÿÿÿÿÿÿÿÿÿÿ–çÿÿÿÿÿÿÿÿÿÿ‚‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÃüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !   =s¥íýýýýýýýýýüýÿýýýüýúýüýüüýüúýüàÓ‰‰ˆˆˆ½ˆˆˆˆˆˆˆˆ½ˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆSˆˆˆˆˆSˆˆSˆˆˆˆSˆˆˆˆSSSˆSSSˆˆSSˆSSˆNˆˆˆSSSSSSˆSˆˆSSSNSSˆSNSNSSˆˆˆSˆˆSˆˆˆˆˆˆˆNˆSSNSNSˆˆSˆˆˆNSˆSSNNSˆNˆSˆNSˆˆSSSSSSNSNNNSˆSNNNNSNNNNNSNˆNNNSNSSSSNNSNNNNNNNNNSSNNNNNNNSˆSNNNNNNNSSNNNNNNNNNNNNNNNSNNNSNSNNSˆNSNSNNNNNNNNNSNSNNNNNNNNNNNSNNNNNSNNNNNNNNNNNNNNNNNNNNLNNNNNNLNNLNNNNLLNNNLNLNLLLNNLNNLLNLNNNLLLLLLNLNNLLLLLLNLLLLLLNNLLNNLNNNNNNLLNNLLLLLNLLNNNLLNLLLLLN,NLLLLNNNLLLLLLLNLLL\gÄÄÄÄÄÄÄÄÄÄÄÄTTTTTTTTTTTTTTTTTTTTTTTTTT""TTTTTTTTTTT+0330++üüüüúó÷óó÷÷òóú÷÷úó÷ó÷÷ó÷ó÷ó÷òú÷÷ò÷÷úóóòòóòòñóòòò*44434*òðóòòðñëëëìëöìëêàâßßßàãâêâââëñèëâëâêâêâàãßàãßàÝߨߨØßØ*33*33*ߨØßØØØØß×ß×רØß×ר×××××ר×××××ÊØ××Ê××××­Ç××­×Ò×­ÇÇǨ0++0*+*ǰ°°­™Ç™­ÇÇÇ™™™Ç™ÇǙǙ™™™™™™™†™™™™™™™††œ™†œ††™††+&&&&&&+TTTTTTTTTTTTÓ×ýúüýûüüüüüüüüúûüÿúóúóóúóó÷óóòÓ?!!!!!!  !!!! ! !! !!!!   !!! !!!! !! !!!!!!!!!!Bñÿÿÿÿÿÿÿÿÿÿò@!! !!!!!!!!!!!!!!! ! ! !!!!   ! !!!!!‚÷ÿÿÿÿÿÿÿÿÿ_!!!!!!!!!!!!!;Ìÿÿÿÿÿÿÿÿÿá![ñÿÿÿÿÿÿÿÿÌ;!!! !!!!!! !! ËÿÿÿÿÿÿÿÿÿÌ;Îÿÿÿÿÿÿÿÿç@!„üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ9  ‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! !    ! =qšíüýýýýýýýýýýÿýüüýüýüýúýûüýýüýàÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTˆ½½ˆˆˆ½ˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSSˆˆˆSSSSSSˆˆSˆˆˆˆˆSSˆˆˆˆˆˆˆˆSˆˆˆSˆˆˆˆNˆˆSSˆˆˆˆSSSSSSSSˆˆSSNSˆˆSNˆˆˆˆˆSˆˆˆSˆˆSSSSˆNˆˆSSˆˆˆNSˆNˆSNˆˆˆˆNSSˆSSˆSNˆSˆNˆSSNˆSˆSSNNSSNNNSSNNNNNNNNSNSNSSSNNNˆNNˆNSˆNNSNNSNSNNNNNNSNNSNNNNNNNNNSNNNNNSNNNNSNSNNNNNNNNNNNSNSNNNNSNNNNNNNNSNNNNNSNNNNNNNNNNNNNNNNNNLNLLNLLLNNNLLLLLLNNLNNNNNLLNNLNNNNNLLNNLNLNNLNNLLNNNNLLNLLNLLNNLLLLNNNLLNNNNLLNNLLNLLLLNLNNLNLNLLLNLNLLNNNNLLLNLLNLLNLLLLLLLLMchÄÄÄÄÄÄÄÄÄÄTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTT:+0+300+üüúúú÷ú÷÷óò÷óóóúúóúóóúóú÷÷÷÷÷÷ó÷ó÷úú÷óòóòóóó÷óóò*444441ðòððòðòëëëöëëëëêãßßßßßâÞñâèëââãâââêâàâêßßßßßßÙߨßߨß×à*33*33*ØßØß×Þ×ß×ߨÒß×ߨÊ×Òר×Ê×Ê×Ê×Ò××ל××Ç­ÇÊ×ÇÒÇ×ÇÇ×ÇÒÇžÔÇ*+0+0+*™­°°¦­ÇÇÇ™™ÇǙǙ™Ç™™™Ç™™™™™™™™™™™™™™†™†œ†™††™†††+&&&&&&&TTTTTTTTTTÓÓüüýúüüüüýúýúýüüüþüóóúóóú÷ó÷÷ò¬? !!!  ! !   ! ! !!!!  !!!!!!!!!!!!!! !!!!!!! !!!!!!!!Èþÿÿÿÿÿÿÿÿÿü_!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! !!!!!!Èýÿÿÿÿÿÿÿÿç@!!!!!!!!!!!!! ! !ÿÿÿÿÿÿÿÿÿñY_ñÿÿÿÿÿÿÿÿÌ;! !! xÿÿÿÿÿÿÿÿÿýd;Îÿÿÿÿÿÿÿÿç@!Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü_ !_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ =s¥íýýýýýýýýýýýÿþýýüýüýüýüüýüúýüæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆ‰ˆˆ½ˆˆ½Sˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆ½ˆˆˆˆˆˆSSˆˆˆSˆˆSˆˆˆˆ‰ˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSSSSSˆˆˆˆSˆNˆˆˆNˆˆˆˆˆNˆˆNˆˆNSˆNˆˆˆSˆˆNSNˆSSSˆˆNNˆˆSSˆˆˆˆNSˆNˆSˆSNNˆSNSNNˆSSNSNNNSSˆSSNNNNNNNSNSNˆSNNSSSSSNSNNNˆSNSNNˆNNˆNSSSSNNSNNNNNNˆSNNSNSSNNNSNˆSNNSNNNNNNNSNNNNNNNNNNNNSNNLNNNNNSNNNNNNNNSNNLNNNNNNNNNNNNNNNNNNNNLNNNLLNNLNNNLNNNNNNNNNLNNNLNNNNNLNNLNNNNLNLLLNLNNNNNNLNNNLNNNNNLNNLNNLLNLLNNLNNLLNNLLNNLLLLNLLNNNNLLLLNLLNLLNLLLLLchÄÄÁÄÄÄÄÄÄTT"TTTTTTTTTTTTTTTTTTT""""""""TTTTTTTTTTTTTTT:TT:TT:TT"TT+00303+ý÷üúúúóúú÷úó÷÷÷ú÷úúúúúúúúó÷÷ó÷÷÷òúò÷÷òóòóòóñóòð÷*44444*òñèóðòðëëëëöëëëìêêàßàßßââââèëèâöââàãââßãßâàãàßßߨߨßàØ*03*33*à×ßߨר×Êß×ßרÞÊ×Þ×××ר×××××××Ê×××Ç­×ל××Ç­Ç×ÊÇ­žÇ­Çž+0+0*0*Ǧ°°°¦™ÇÇ™ÇǙǙ™Ç™™Ç™™™™™™™™™™™™™†™™™™†™††™™††††+&&&&&&+T:T"TT"TT"TTTTTTTTT××ýüüüýúýûüüúýúüúýÿúóúóóúóóúóóò¬s?!! ! !!!!!! !!!!!! !!!!! !!!!!!!!!!!!!!!!!!!! !! Z÷ÿÿÿÿÿÿÿÿÿÿ–!! !!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!ÏÿÿÿÿÿÿÿÿÿÆ@ !!!!!!!!!!!!!!!!!! !!!Y÷ÿÿÿÿÿÿÿÿóx!!! !_ñÿÿÿÿÿÿÿÿÌ9 !!!!_üÿÿÿÿÿÿÿÿÿó! ;Ëÿÿÿÿÿÿÿÿç;!_óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  ‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!!  ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ       =}ªíýýýýýýýýýýýÿýüûüüýüýüýüüýüüýàÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT½ˆ½ˆˆ½ˆ‰ˆˆˆˆˆˆˆ½½ˆˆˆˆˆ½ˆˆ½ˆˆˆˆˆ½SˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆSSˆˆNˆSˆˆˆˆˆˆSˆˆˆˆˆˆSˆˆSˆˆNSˆSSˆSˆSSSSSˆˆˆˆˆNˆˆSSNNNSNNˆˆSˆNˆˆˆSSˆSSNSˆˆNNˆNSˆNSNSˆSˆˆˆSˆNSSSNSNSNNSNNSNSˆNSSNSSNSNNSSNNNNSNNSSSNNNNNNNSSSNSNNNSSNSNNSSNNSNNSNNNNNNNNNNSNSNNNSNNNNNNNNNNSNNNSNSNNNNNNNNNNLNNNNNNNNSNNNNNNNNNNNLNNNNNNLNNNNNNNLNNNNNNNLNNLNNNNSNNLLLN,NLNNNNLNLLNNLNLLNNLNNLLNLLNLNLNLLLLNLNLLNNLNLLLLLLNNLLLNNLNLNLLLLNNLLLLMcÄÄÄÄÄÄÄÄT:T"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT""0"""""TTT"TTT TT"TTTTTTTTTTTTTTT"*00+00+üüúüúúú÷÷ú÷÷ó÷úó÷ú÷úúúúúú÷óò÷ó÷óóòóóóóòóñóñóñòóõ*4444P1ðððõððòëìëöëìëëêìêãßÞßàâàáèëèâãââãßâßßàââãßßߨàßߨßߨÞ133*33+ØßØßߨ××ÞØÞØÞ××ÞØ×Ê×Êל×Òרœ××ÇÒ×ÒÇÊ×ÇלÇÇÒÇל×ÇÇמÇÇ**0+0+*ǰ°¦°¨­™™ÇÇ™™™™™™™Ç™™™™™™œ†™™™™™™†™™™™œ††œ††††††+&&&&&&+TTTTTTTTTTTTT"TTT"TÓÓüüûüüýúüüüüüüüüüþüóóúóóúóóúóò¬s>!!!!!!! !! !!!!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!ÈþÿÿÿÿÿÿÿÿÿÎ!!!!! !!!!!! !!!!!!! !!!!!!!!!!! !! !!!!! !!9çÿÿÿÿÿÿÿÿÿx! !!!! !!!!!!!!!!!!!!!!@ßÿÿÿÿÿÿÿÿü–!!  _ñÿÿÿÿÿÿÿÿÍ!!!!‚ýÿÿÿÿÿÿÿÿÿÿÌ;Îÿÿÿÿÿÿÿÿð@ÆþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóY   _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ; áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !  !=qªíýýýýýýýýýýýÿþýüûýúýúýüüûüýýüàÓTTTT"TTT"TTTT":T"T"T:T"T:T:T"TTTTT"TT"TTTTTT:TT"TT"T:T"TT":T"T:T‰‰ˆˆˆ½ˆˆˆˆˆ½ˆ½ˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆ½ˆˆˆˆˆSˆˆˆ½‰ˆˆ‰ˆˆˆˆˆˆˆSˆˆNˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆNˆˆˆˆˆSSˆNˆNˆˆˆˆˆSSˆˆSˆˆˆˆˆˆSˆSˆˆˆˆNSNˆˆNˆˆSSSNNˆˆSNˆˆSNSSSˆˆSˆSNSNNSSˆˆSˆSNˆNNˆˆSSNNNNˆˆˆSSNSNNNNSSˆNSNNNSSNNNSSSSSSNNSNSSSSNNSNSSSˆˆNNNNSNNSSSSNNSNNSSSNSNNSNSNSNNNNSSNNSNNNNNSNNNNNNNNNNNSNSNNNNNLNNSNNNNNNNNNNNNNLNNNNNNNSNNLNNNNLNNNLNNLNNNNNNNNNNNLNNNNNLNLNNNSNLLNLNLNNNNNLLNNLNNNNNNLNNNLNNLNLNNLNNLLNLLNNLNLNLLLLLNLNNLLLLLLLNNLNLLNLLLNLLLM\hÁÄÄÄÄÄTTTTTTTTT"TT:"TT"T"TT"T"TT"T"TT"T"T"T"T""T"T"T"T""TT""""""""""""":::"0"T::"T:T:T:T"TTXXXXXXXXXXXXXXXXXXX+03030*ýüüüúúóóóóó÷÷úó÷ú÷ú÷ú÷ú÷úóóóòúó÷òòóóóòòðòóòòóñòð1P4444*ðèóòðíñëöëëöëëêëãëêêàâÞßâàâââââßßßßàßßâßâââßßßߨߨßÞߨ133*331ß×ß×ß×ÞØÞÒ×ÞØ×Ò×Ì×××Ç××Ç××Ç×××Ò××Ç×Ç­ÇžÇ×Ç×Ç×ÇÇÊÇÇÇÇ™*0+0*0*Ǧ°­¦°°™™™™™™™™Ç™™™™™™†™™†™™†™™†™†™†œ††™††††††††+&&&&&&+XXXXXXXXXXXXXXXXXXX"T""T"T:T:T:"T"Ö×ýüüüýúýüýúýúýúûüÿúóúóóúóóúóóò¬s>! !!!!!!!!!!! !!!!!!!!!!!  !!!!!!!! !!!!!!! !!!!!!!!!!Zóÿÿÿÿÿÿÿÿÿ÷Z!!!! ! !!!!!!!!!!!!!!!!!!!!! !!!  !! ! !!!!!!!ZñÿÿÿÿÿÿÿÿüZ!!!! !!!! !!!!!!!#ÅÿÿÿÿÿÿÿÿüÆ _ñÿÿÿÿÿÿÿÿË!!!!!!!! !!!!!!!;Æÿÿÿÿÿÿÿÿÿÿÿ÷B!;Ìÿÿÿÿÿÿÿÿç;Yðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…! ! ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! !  !Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      !qªíýýýýýýýýýýýÿýüýüýýýýüýýüýúüüæÓTTT"T:T"TTT"TTTTTTTTTTTTTTTTTT:"TTTTTT:TT"TTTTTTT:TTTTTTTTTTTTTTˆ½ˆˆˆˆ½ˆ½ˆˆˆ½ˆ½ˆˆ‰ˆˆˆˆ½ˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆ‰ˆˆˆˆˆˆˆˆˆˆSˆˆSˆSˆˆSˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆSSSˆˆˆSˆˆSˆˆˆˆˆˆSˆˆSˆˆˆˆˆˆˆˆˆˆNSˆSˆSSSNSSˆˆSˆSNNˆˆˆˆSSˆˆˆˆSSˆˆNNˆSˆSˆNSNˆNSˆSNSSNNSSˆˆˆˆSSSˆNSNNSSNNNSSNSˆNSSSSSˆNSNNSSˆSNNˆNˆSSNNNNNNNSˆNNSNNSNNSNNSSSNSNSNSNNNNNNNNNNNNNNNSNNNNSNNNNSNNNNNNNNNSNNNNNNNNNSNNNNLNNNNSNNNNNNNNLNLNLNLNNNNNNNNNNNNNLNLLNNNNNLNNNNNLNLNNLNNNLNNNLNNLNNLNNNNNNNNNNLLNNLNNLNLLNNLNLLLNNNNNLNNNNLNNNLLNNLNNLLLNLNNLLL,LNbgÁÄÄÄÁXXXXXXTXXXTXXXXXVXVXXXXXXXXXXVXXVXXXVXVXWXXXXXXXXXVXXXXXXXXXXXXXXXXXXVXXXVXTXXXTXXXXXTXTXTXTXTXTXTXTXTXTXTXTXTXTTUTUTTTTTUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTVTTTXTTVTTTXTVTTTTTTTTTTXXXXXXXXXXXXXXXXXXXX+*0000+üüüóüüúú÷ó÷úú÷óú÷óú÷÷÷÷ú÷óòòóòóóóóóñòòóñòóóòñóðñ1444431èðððððòìëëöëëëëèìêëêãàßâßââââßàßßâßÞßâàâÞâßàßßßßàÞÞàØ×*33*331×Þ×ÞÞ×Þ×××ÒÞ××××Ê×Ò×Ò××Ê×ÒÇÊÇž×ÇÇÊÇžÇÇÊÇלǞǞǞǞǙž*+0(0++™°°¨Ç¦°¦™Ç™™Ç™™™Ç™™œ™†™™†™™†œ™œ††œ††™††™†††††††+&&&&&&+XXXXXXXXXXXXXXXXXXXTTTTTTTTTTTTTTTTTTTTTXUTTVTXTTTXTVTTTVTTTXTTVTTTTVTTVTTTTVTTTTTTTTTTTTTTTTTUTT×Õúýüüüýúýúüüýúýüúÿüóóúóóúóó÷÷ò¬}?!!!!! !! !! !! !!!!!!!! !!!!!!!! !!!! ! !!!!!!!!!!!!ÈýÿÿÿÿÿÿÿÿÿÆ!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!! ! !!!!!  !!!!!!!_óÿÿÿÿÿÿÿÿòY!!!!!!!!!!!!!!!!!!!!‚ÿÿÿÿÿÿÿÿÿÎ!!_ñÿÿÿÿÿÿÿÿÍ!! !!!!! !!_áÿÿÿÿÿÿÿÿÿÿÿÿÈ!;Îÿÿÿÿÿÿÿÿð@ –üÿÿÿÿÿÿÿÿÿÿÿÿÿÿð@!‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9 !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!q¥íýýýýýýýýýýýÿþýüýýúüüüüúýüýýýàÓXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXˆ½ˆˆˆˆ½ˆ½ˆˆ½ˆˆˆ½ˆ½½ˆˆ½ˆ½ˆˆˆˆ½ˆ½ˆˆ½ˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆ½ˆSˆˆˆˆˆ½½ˆˆˆˆˆˆˆˆˆˆˆSˆˆˆSˆˆˆSˆˆˆˆSˆˆSˆˆˆˆˆˆSˆSˆˆˆSˆˆˆˆˆˆˆSSSNSSSSSSˆSSSˆSSSSˆˆSSSˆSSSˆˆˆˆSNˆSˆˆˆNNˆˆˆNˆˆNSSNSˆSˆNNˆˆˆNSNSNSNNNSˆSNSNNSSˆNNˆSNNSNNˆSNNˆNNSSNSNSSNSNSNNNSˆNˆNNNSSSNNNˆSSSSNNNNNNNNNNNSNNNNNNNNSNSNNSNNNSNSSNNNNSNNNNNNNNNˆNNNNLNNNNNNSNNNNNNNNNNNNNLNNNNNNNNNNNNNNNNNNNNNNLNNLLNNNNLNNLNNNNNNLNLNNNLNNNNNNNLLLLLLLLLLNLLLNLLLLNNLLLNLLLNNNNLLNNNLNLLNLNLNNLNLLLLMcÁÄÄÄX\^X^X^X^X^X^X^X^bbX^X^X^XXbX^Xb^XXbX^bbYXXbVXV^VbXbXX^XXX^XXX^XXV^VXXX^XXX^VXVbXXVXVXVYXXVXXXXVXVXVXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXTXXTXTXTXTXTXTXTXTTXTTTXTTXTTTTTTTTTTTTTTTTTKKKK³KKK³KKK³KKK³KK+003+<+üüüüþüþóüóúóúóúóúóúóúó÷÷óóóóóòóòòòñóñóóóóòòðòððò134444*ðñðõðòðöëëöìëëëìêëëêìêâàâèâßßàßßâßâàâßâßâàâßßâßßßßÞØÞß*03*33*××××Þ××Ê×Ê××××É×××××××Ê×מ×Ç×ÇÇÊÇÒÇÇÇÇœ×ÇÇÇÇÇÊÇǞǙÇÇ*0*0*0*Ò¦°¦™™°°¨…œÇ™™™™œ™™†™†™™™†™†™††™†™†™††œ†††††††††+&&&&&&+KK³KKK³KKK³KKK³KKKTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXTTTTTXTTTXTTTXTTXTXTTXTTXTXTTXTXTXTXTXTXTXTXXTXTÓ×ýüýúýúýüüýüüüüúýþúóúóóúóóúóóò¬Ž?!!  !!!!!!!! !!!  !!!!!!!!!! !!!! !!!!!!!!!!!!! !!!!!!!!@ñÿÿÿÿÿÿÿÿÿñ@!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!  !!!‚÷ÿÿÿÿÿÿÿÿá@!!!!!!!!!!!!!!!!!!!_ÿÿÿÿÿÿÿÿÿÏ!!![ñÿÿÿÿÿÿÿÿÌ; !!!  !!! BÅüÿÿÿÿÿÿÿÿÿÿÿÿñ#!!Îÿÿÿÿÿÿÿÿç@;Ñÿÿÿÿÿÿÿÿÿÿÿÿÿý !!‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ; !!! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóx ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! p¢éýýýýýýýýýýýÿýüýüüýýýýýýüýúýúæÓX^X^X^X^X^X^X^X^X^X^X^XXXXX^X^X^XXX^XX^X^X^X^XXXX^XXX^X^XXX^X^XXˆ½ˆ‰‰ˆ‰‰ˆˆ½½ˆˆ½ˆ½ˆ‰½ˆˆˆˆ½ˆ½ˆˆˆ½ˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSSˆˆˆˆˆˆ‰ˆˆˆˆSSˆˆˆˆSˆˆˆSˆˆˆSSˆˆSˆˆˆˆˆˆSˆˆˆˆSSSSSSˆˆˆˆˆNˆˆSSˆˆSSˆˆˆSˆˆSSSˆˆSˆˆSˆˆSSˆˆNSSNSSSSSNˆSSNˆSNSSSNˆˆNSSSSSSSˆˆSˆNSSˆSNSNNNNNSSNNNSˆNNSNNSSNNSNSSNNˆNNSNNNNSSˆNNNNNSNNNNNNNNNNNSNNNNNˆNNNSNSNˆNNNNNˆNSNNSNNSNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNSNNNNNNNNLNLLNNNNNNNNNNNLNNNNNLNNNLNNNLNNNNNNNNNLNNNNNLNLNLNNNNNNLLNNLNNNLLNNNNNLLLLNNLNLNNLNNNLLLNLNL\hÄÁKJKKKJ·J·J·J·J·JKJKJ·JKKKWKKJ·KJKKWKKKJKKWKJ·JJ·JJJWJJJWJJKWKJKJKKJ·JJJJJJJKJKJWKJKJKJKJKJKJKJKJKJJKJJKJJKJJJJJKJJHKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJHJJHJJHJHJHHGJGHGGGFGFFFFFFEKKKKKKKKKKKKKKKKKKK+30000+üüüüþþþþúúóóóóóúóúóóóóóóóðóòóóóóóóóóóóóóóóóóðòñð*444441òðòðòððöööëöëëëêëëêëêêêââàâßßßÞàâßàÞàßâßàÞàÞßàâÞàÞÞ×Þ×133*33+Þ××ÞÊ×É×××ÉÊ×ÉÊ×É×ÉÊ×É×ÇÊ×ÇÉÇמÇ×ǞמÇ×ǞǞ×ÇÇÇÇÇÇÇÇž*000+01œ¦°Çœ™¦¦°™™™™œ–™†™†™™›™œœ™†œ††œ††œ††††††††††††‚†&&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFGFFFFGGGGGGGGHGHHGHGHGJGJHHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓúýüýüüüüúüûúüüüüÿüóóúóóúóóúóò¬Ž? !   !!!!!!!!!!!!!!!!  !!!!!!!!! !!!!! !!!!!!!!!!! !!!!!!!!!!!!…üÿÿÿÿÿÿÿÿÿ„!$!!!!!! !!!!!!!!! !!!!!!! !!!!! !!!!!!!!!!!!!!ƒ÷ÿÿÿÿÿÿÿÿÎ@!!!!!!!!!  !!!!!!!!!!!!!!Yÿÿÿÿÿÿÿÿÿá !!_ñÿÿÿÿÿÿÿÿÌ@!  !!  9_áÿÿÿÿÿÿÿÿÿÿÿÿÿ÷_!;ÎÿÿÿÿÿÿÿÿçY‚óÿÿÿÿÿÿÿÿÿÿÿÿÎ;ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! ! 9qšíýýýýýýýýýýýÿþýüýûüüüüüüýüýüýàÖJ·KK·JKKKKKKKKKKKKJKKKK·J·JKKKKKK·J·J·KKKKKKKKK·K·K·KKKKK·KKKKKK½‰½½‰‰‰‰½‰½‰‰ˆˆ½‰½ˆ½ˆˆ½ˆ‰‰½ˆ½½ˆ½ˆˆ½ˆ½ˆˆˆˆˆˆˆ½ˆˆˆ½ˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆ½ˆ½ˆˆˆˆˆˆSˆˆSˆSˆˆSˆˆˆˆˆˆˆSˆˆˆSˆˆˆˆˆˆˆSˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆˆˆSˆˆSˆˆˆˆSSˆˆˆSˆSSˆNˆˆˆSˆˆˆˆSˆˆˆSSSNSNˆNˆˆNˆˆSNSSNˆSˆSNˆˆSSNSSSˆˆˆNSSSNˆNNˆNNSSNSNˆˆSNˆSNNSNNˆNNSNSNNNSNˆNSSˆSNSSSSˆSNNNNNSNSNSˆSNNˆNSSNˆNNNNˆNNNNNNSNNSNSSNNNSNNNNNNNNNNNNNSNNNNNNSSNNNNNNNNNNNSNNNNNLNNNNLNNNNLLNNNNSNLNNNLNNNSNNNLNNLNNNNNNNNNNNNNNLLNNNLNNNSNLNNLNNNNLNNNNLNLNNLNNNNNNNLLNNLNLL,L,LMcÁK·KKJ·JKJKKJ·JKKJ·J·J·J·JKKJ·JKKKKKKJ·J·JKKJ·JKJKKJKKKJ·JKJKJJKJWKJJKJKH·JKJKJJKHKJJJJJKJJJJJWJJJKJJKJJJJJWKJKWJJJJKJJKJKJJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHJGHGHGGGGFFGFFFFFKKKKKKKKKKKKKKKKKKK+033+0*üüüóþþüüüóóóóóóóóóóóóóóóóóóóóóðóóóóóóóóóóóóñóðóó13444Q*òððóðóðöëëëëìëëëëèëêêêëêêßßßßßàÞàÞàÞØßàÞàÞØàßßßàÞàØ××Þ*33*33*Ø×Þ×××××Þ××××××××××××××ÌÇ××Ç××Ç×ÇÇÇÇÇ×ÇÇÇÇÇÇÇÇÇÇÇÇÇÇœ*0*03(*™­¦¦–œ™°¦¦™†œ™™†œ†œ†œœœ††††œ††††††††††††††††r††pM&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFGFGFGGGHGGHGJGHGJHHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýüüüüüüýüýüýýúýüþúóúóóúóóúóóò¬}?!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!Îÿÿÿÿÿÿÿÿÿò;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   !!!!…úÿÿÿÿÿÿÿÿÌ@!!!!!!  !!!!!!!!!!!!!!!!!!Zþÿÿÿÿÿÿÿÿç=!!!!_ñÿÿÿÿÿÿÿÿÌ@ ! !!!!!YÆüÿÿÿÿÿÿÿÿÿÿÿÿÿü‚!!@Îÿÿÿÿÿÿÿÿð@! Îÿÿÿÿÿÿÿÿÿÿÿü_    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ    áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      !=qªéýýýýýýýýýýþÿýüýüüýýýûýüüýüýúæÓKJJKKKKKJ·J·J·JKKK·J·JKJKK·KKKK·J·KKKKKKK·K·K·KKKKKKKK·K·KKK·K·K‰½½½½ˆ½½ˆ½ˆ½½ˆˆ‰ˆˆ½ˆˆˆ½ˆ½ˆ½ˆˆ½½ˆ½ˆ½ˆ½ˆˆˆˆˆ‰ˆˆ½ˆˆˆˆˆˆˆˆˆ½ˆˆˆ½½ˆˆˆˆˆˆˆ½ˆˆˆˆˆSˆˆˆˆˆˆˆˆSˆˆˆ½ˆˆ½SˆˆˆˆˆˆˆˆˆˆˆSSSSˆˆˆˆˆˆSˆˆˆˆˆˆˆSSSˆˆˆˆˆˆˆˆSˆˆˆˆˆSˆˆSNˆSSˆSSNˆSSˆˆSˆˆˆˆSˆˆˆˆSSSˆNSSNˆˆSˆNSSNˆˆˆˆNSˆˆSSSSSNˆˆˆˆNSNSNSNSNSNSNNNSˆˆˆˆNNˆˆNNˆSSSNSNNNNNSNSSˆNNˆSˆSNNNNNSSSˆNˆˆSNNSSSNNSNNNSNNSNNNˆNNˆNNSSˆNNˆNSSNNNNNNNNSNNNNNNNNNSNNNˆNNNNNNNSSNNNNNNNNNNNLNLNNNˆNSNNLNNNNNNNNNNNLLNLNNLNNNLNSNNNNLNLLNNNNNNNNNNNNNNLNNLLNLLNLLLNNNNNLNNNNNNNNNNLLNLLNLcKKJ·J·J·J·JKKKKKJ·JKJKJ·J·J·JKKWKKJ·JKJ·J·JKJ·J·J·KJ·JKK·J·KJ·KKKKJ·J·KJKKJK·J·KKJKJ·JKJ·JKJKJKJKJKJWKJKJKJJKJKJKJKJKJJJJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHGHGGGFGFFFFFEKKKKK³KKK³KKKKKKKKK+00400+üþüþþþþþüüüüüüüüóüüüüüüóóüóóüüüóóóóüüüóüüóüóóóúó*444421óúóúóóúöëöëëëõëëëëëëêìêëêëêêêããêãêêêêêêêêêêêêêêêêÝëÝãÝ*33*301ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝݰݰÝݰÝݰݰݰݰݰ°Ý°Ý°°°°°°°°®*000+0*°°°°°°°°°¦°°¦°¦°¦°¦°¦°¦°¦¦¦¨¦¦¦¦¦¨¦¦¨¦¨¦¦¨¦¦¦¦¦¦+&&&&&&+³KKKKKKKKKKK³KKK³KEFFFFFGFFFGFGGGGGGHGJGHGJGJHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓüýüüüýúýúýúýúüüüÿü÷óúóóúóóúóò¬s?! !!!! !! !!!  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!! !Zóÿÿÿÿÿÿÿÿÿ–!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!! !!!–üÿÿÿÿÿÿÿÿÌ@!!!!!!!!!!!!!!!!!!!!! !!!!!Züÿÿÿÿÿÿÿÿá!!!!!!_ñÿÿÿÿÿÿÿÿÑB!!!!!!!!!!  !@…óÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÆ!;Îÿÿÿÿÿÿÿÿç;_óÿÿÿÿÿÿÿÿÿÿÈ! xýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÃüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   7p¥íýýýýýýýýýýýÿþýüýýýúýüýüýüýüýàÓ·K·J·KJ·K·KKK·K·J·JK·K·K·KK·K·KKKK·K·K·KKKKKKK·K·K··KKKKK·KKKKKK½½½½ˆ½½½ˆ½ˆ½ˆˆ½‰½½ˆ½ˆˆ½½ˆ½ˆ½ˆ½½½ˆ½½½½ˆˆˆ½½ˆˆˆˆ½‰ˆˆˆˆˆˆˆ½ˆˆ½‰ˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½ˆ½ˆ‰SS‰Sˆˆ½ˆˆˆˆˆSSSˆˆSˆˆˆˆSˆˆˆˆSSˆSˆˆˆˆˆˆˆˆˆˆSˆˆˆNˆˆˆSSSˆˆˆˆˆNˆˆˆˆˆˆˆSˆˆˆSˆˆˆˆSNSˆˆNˆSˆˆˆNSNSˆˆNˆNˆˆˆNˆSSSSˆˆˆˆNSNSNNSSNNSNNNSˆˆSˆSˆNNˆNNˆˆˆSˆNNNNNNSNNˆNSNNˆˆNNNˆNSSSNSNSSSSNSˆNNNSSNNNNSNNSNNSNSSNSSNSSNNSSSNNNSSNNNNSSNNNNNSNSNNˆNNSNNNNNSNNNNNNNNNNNNNNNNNNSNNSNNNNNNNSSNNNLLNNNNLNNNNLNNNNLNNLNNNNNNNNNNLNNNLNNNLLNLNNNNLNNNLNNNNNNNNNNNNNLNNNLNLM·KKKKKKKKKKKJKWKKKKK·J·JKKKJKJ·JKJ·J·J·JKJ·J·HKKJKJJ·H·JJJKJJ·HJ·H·JJJJ·JKWKJJJJJJWJKJKJJJJJKJJKJJJKJJJKJJKJJJJJJJJJJJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJJHJHHHHGJGGGGGGFFFGFFFFKKKKKKKKKKKKKKKKKKK+03000*üüþþþþþþüþüüüüüüüüüüóüüóüüüüüüüóüóüüüüóóóóóóüóúó1P‡44Q*óúóúóüóöööëõëõìëëëêõêëêõêìòòóóóóóóðóðóððóðóðððóððòððòð103*331ñðððððððððððððððððððððÑððïÑðïÑðÑðÑïÑÑðÑðÑݰïÑáÑáÑáÑÑï*03+0**ÑÚ­ØÑÑÑÑÔ°¦ÞÑÐÑÍÑÑÑÐÑÍÑÍÐÍÐÍÍÍÐÍÐÍÎÍÍÍÎÍÍÍÎÐÎÍËÍ+&&&&&&+KKKKKKKKKKKKKKKKKKEEFFFFFFGFGFGGGGGGHGHGJGHGJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýúýúýüüüýúýüüýúýþúó÷óóúóóúóóò¬s? !!!  !!!!!! !!! !!!! !! !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!›üÿÿÿÿÿÿÿÿúZ! !!!!!!!!!!!!!!!!$!!!!!! !!!!!!!!!!!! ! !! !!!…úÿÿÿÿÿÿÿÿÎ@!! ! !!!!!!!!!!!!!  !! !Zÿÿÿÿÿÿÿÿÿá! _ñÿÿÿÿÿÿÿÿáZ!!!!_áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó–@Îÿÿÿÿÿÿÿÿç@!!Zñÿÿÿÿÿÿÿÿÿÿà ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÅüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !!  sªíýýýýýýýýýýþÿýüýüüüýýýúýúýüýúæÓKKJ·JKKKKKJ·JKKJ·J·J·J·J·J·J·J·K·KKKKKKKK·K·K·KKKKKKK·KK·KKK·KK·‰‰½½½½½ˆ½½ˆ½ˆˆ½ˆ½‰ˆ½ˆ‰½ˆ½‰½ˆ½ˆ½½ˆˆˆ½‰½½ˆˆ‰ˆˆˆ½ˆ½ˆˆˆ½½‰ˆ½ˆˆ½ˆˆˆˆˆˆ½‰½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆSSˆˆ½ˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆSˆˆˆˆˆˆSˆˆˆSSSˆˆˆSSˆˆSˆˆˆˆSˆˆˆˆˆSNˆˆˆˆˆNSˆSSˆˆSˆNSˆˆˆSˆˆˆˆˆSˆSSNˆˆˆSNˆSNˆSSSNSSSSSSˆSSSˆˆˆNNˆˆNSSSSˆSSNSNSˆNSSNNˆNSSNSNNNˆNSNSSˆNNˆSNSSNNSNNNNNNSNNNNNSNSNNNNˆNSNNSˆNˆNNNSNNˆNSNNNNNSNSNNˆNNNSNNSNSNNSNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNLNNNNNNNNNNLLNNNNNLNNNNNNNLNNNNSLLNNNNN,NNLLNNKWKJKKWKKKJ·KKKKKKJKJKKWKJ·J·J·KKKKJKKJ·J·JKKKKKKJ·JKKJ·J·J·JKKJKKJ·KKJKJJKH·JJ·JKJJJJWJKJKJJJJJKJKJJKJJJJJKJKJKJKJKJKJJJJJJJJJJJKJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHHGHGGGGFGFFFFFDKKKKKKKKKKKKKKKKKKK+3*030+þþþüþþüþüüþóüüüüóüüüüóüüüüþüüüüüóüüüüüüüüüþóóúóú1444431óóóóóóóööööõëöëõêõêëêëëëëëëëõòõòòñõèòñóóòòõèòëèñëñèððô133*331ââçððñáèâèâêâèâáððèâßâèÞèßâßèðïâßèßàßßßßè°ÝßßÝßßßßßßÑ*000+0*Ø­°Ý×ÑÑר°¦°ÞØÞØÞÞÑÞÞØÌØ×××ÉØÌÞÎÞÉ×××É×××Ì×ÉÍÍ×Ç+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFFGFGGGGHGHGHGJGHJGJHHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýüýüüýúýüüýúýüüüÿü÷óúóóúóóú÷ò¬s>!!!! !!!!!!!!!!!!!!!! ! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!$ !!!!! !!!!!!ÎÿÿÿÿÿÿÿÿÿÌ@!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!!!! !!!! !!!!!!‚÷ÿÿÿÿÿÿÿÿá@! !!!!!!!!!!!!!! !!!!!!_ÿÿÿÿÿÿÿÿÿá!!!_ñÿÿÿÿÿÿÿÿñ_!!!!! !!! @Âüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ!@Îÿÿÿÿÿÿÿÿð;!Ëÿÿÿÿÿÿÿÿÿÿÿü_ _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ;   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !q¥íýýýýýýýýýýýÿþýüýýýúüýýýýúýüýàÖKKKJ·J·J·J·J·J·KJ·KKKKKKKK·KKKKKK·K·K·K·KKKKKK·K·K·KK·KKK·KK·KKK‰‰½½‰½‰‰½‰ˆ½ˆ½½chh¹µµµµµSµˆ½ˆ½ˆ½‰ˆ½‰½½ˆ½ˆˆ½½ˆ½ˆ½ˆˆ½ˆˆˆ½ˆ½ˆ½ˆˆ½½ˆ½ˆ½ˆˆˆˆˆ½ˆ‰ˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆSSˆˆˆSˆˆSˆSˆˆSˆˆSˆˆˆˆˆSSˆˆSSSˆˆSSˆSˆˆˆSSˆˆSSˆˆˆˆˆˆˆˆSSˆˆˆNˆˆˆˆSNSˆSNSˆSNSSˆˆSNSˆNˆˆSNNNˆˆˆSNNNˆSNSNNSSNSSNSNNˆSNNSSNSNNˆNNNSNˆSSNNNˆNNNSNSNNNNSNNSNNˆSNNNSNNSNSNNˆNSNNSNSSNNSNNSNNˆNNNSNSNNSNNNSSNNNNNSNNNNˆNNNNNSNNNLNNNSNLNNNNNNLNNNNNNNNNNNNNNNNNNNNNLLNNNNNNLNLNLLNNLNNLNNLNLNNNNNNLNNNLNKKKK·JKKJKWKJ·JKKWKK·J·JKKKJ·JKJKKWKKKKKKJ·J·JKWKKKKJ·J·JKKJ·JKK·J·JKJ·J·JKK·JK·JKK·J·KKJ·JKJ·JKJWJKJKJJ·JKJKJJJKJKJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHGJGGGGFGFFFFFFK³KKKKKKKKKKK³KKK³K+03003+þþüüþüþüþüüþüþüüüüüüüüüüüüüüüüüóüüüóüüüóüóóóóüóó1344441óóóóóóóööööõëõëìëëêëëëëëëëóëëñëëëòêëèëðóñëçëêèëêèêòðóá133*33*êèèðòçêèêßêàêêßèèðèßêßÝßÝßÝßßÑÑèØØÝØØØØØÚݰßÝ°ØØØØØ×Ñ*03+0+*Ô°°­ßÑÑØ×­°°¦Ø­×Ø×ÍÍר­Ò­­­­žÔÌÍÍ×ÔÇ­­ÔÇ­­ÇÌÍÍǦ+&&&&&&+K³KKK³KKKKK³KKKKK³DFFFFFFFGFGGGGGGHGHGJGHGJHHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×üýüýúýüüüýúýúýúýþúóó÷÷÷óóúóóò¬s?! !!!  !!! !!! !!!!!!!!!!!!!!!!!!!! !! ! !!!! !!!!!!!!!!!!!!! !!!@ñÿÿÿÿÿÿÿÿÿx!!!!!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!! ! !!!!!  !!!! !!!!!!xóÿÿÿÿÿÿÿÿð@!!!!!!!!!!!!!!! !!!!!  !‚ÿÿÿÿÿÿÿÿÿÎ  !!_ñÿÿÿÿÿÿÿÿóx!!!!!!! !!! _ÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÎY! ;Îÿÿÿÿÿÿÿÿç@„üÿÿÿÿÿÿÿÿÿÿÿÿáY  dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   !q¥íýýýýýýýýýýþÿýüýüüýýýüüüýýüýüàÓKK·K·K·K·K·JK·KKK·KK·K·K·KKK·K·K·KKKKKKKKK·K·KKKKKKK·KK··KK·K·K·½½½½¿½‰½‰‰¿‰½½ccccc¸¼¼¼¼¼¼¼¼»»»¶ººˆ½ˆ½½ˆˆˆ½ˆ½ˆˆ‰‰‰‰½‰½ˆˆ½ˆ½ˆˆˆ½ˆˆ‰‰ˆˆ½ˆ½ˆˆˆ½ˆ½ˆ½ˆ‰ˆˆˆ½ˆ½ˆˆ‰ˆˆ‰ˆˆˆˆˆˆˆˆSˆˆˆˆˆˆ‰ˆˆˆˆSˆˆˆˆˆˆˆˆ½ˆS½ˆˆˆˆˆ½ˆˆˆSˆˆˆˆˆˆˆˆSˆˆˆˆSˆˆˆˆˆSSSˆˆSˆˆˆˆˆSSSˆˆˆSSˆˆˆˆˆˆSSˆSˆˆSSˆˆSSˆNˆˆSNˆSˆˆSˆˆSˆˆNˆSSˆˆˆSSSˆˆˆSˆNˆSSSSNSSSˆNNSSSNSNSSSSSSSSˆˆNˆˆNSSSˆSSSNNˆSNSNˆSNSNSSNNSNSSNNNSSNSSNSSNNNNˆNNNNSNNSNSNNNNSNNNˆNNSNSNNNNNSNSNˆNNNNSNNSNNNNNSNSNNNNNNNNNNNNNNNNNNNNNNNNNNSNSNSNNNNNNSSNNNNNNNNNNNNNNNNNLNNNNSLLNNNLNNNNNLNLNNNLJ·KKJ·J·KJ·KKJ·JKKKJKKJ·J·JKJ·J·JKKKKJ·JKKJKKKKKWKJ·JKJ·JKKKKKJKJKH·KH·JH·JJJJKJKJKJJJJJKJWKJJKJKJKJJKJJJJJJJJKJJJJJJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJHJJJJJHJJHJHJGJGHGGGGFGFGFFFFFKKKKKKKKKKKKKKKKKKK+04030+üüþþüþþþüþþüþþüüüüóüüüüüþüüüóüüüóüüüüüüüóóüüóóüú1‡44‡31úóóóóóóöìöëööëëöêõêìëëìëëëóòóóðóóðóððóóðóðóððóðóðóðððò*33*301ðððððóððððððððððððððððððððïððððÑðÑïÑðïáÑÑ­ÝðÑØèÑðÑïïç*00300*ÑØ°ØÑÑÑÑÐÑ­¦°ÞÑÐÑÐÐÑÑÑÑÑÑÑÑÑÑÍÍÑÍÍÍÍÐÍÎÍÐÍÍÐÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFGFGFFGFGGGGGGHGGHGHGHGJGHHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓÓýüýüüüüýüüüüüüüüÿüóúóóóú÷óúóò¬}?!!!!! ! !!!!!!!!  !!!!!!!! !!! !!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!xóÿÿÿÿÿÿÿÿ÷Y!!!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!!!!!!!!!!!!!!!!!!!!!!_ñÿÿÿÿÿÿÿÿ÷Z !!!!!! !!!!!!!!!!!!!!!–ÿÿÿÿÿÿÿÿÿÉ  !_ñÿÿÿÿÿÿÿÿÿ–!! !!!!xòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ–!!!;Ìÿÿÿÿÿÿÿÿñ@YñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ#!  _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÆ____xd_______________________ÎþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ q¥íýýýýýýýýýýýÿþýüýýüüüýûýúýýüüæÖKKJKKJKJKKJ·JKKKKKKKKJ·JKK·KKKKKK·K·K·KK·KKKKKK·K·K·K·KKK·KKK·KK¿¿½½¿½½½½½‰½½ˆhcccch¼´´´´´´´¼¼¼¶¼´ºˆ½½‰‰‰‰‰½½ˆ½ˆ‰½ˆˆˆˆ½‰ˆ½ˆˆ½ˆ½½ˆˆ½ˆ½ˆ½ˆ½ˆˆˆˆ½½ˆˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆSSˆˆˆˆˆ½ˆˆˆˆ½N½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆSˆˆˆSSˆˆˆSˆˆˆˆˆˆˆˆˆˆSˆSˆˆˆNSSˆˆSˆˆSˆˆˆˆSSˆSˆˆˆˆˆSSSˆSˆˆˆSˆSˆSSˆˆSSNˆSSSSSNSSNNˆSˆNNˆˆˆSSSNSˆSˆˆSˆˆˆNˆˆNˆˆNSˆSSNSSNSSNˆSNSNNˆˆNSNNˆˆˆNNNSNNSNSNNSNSSNSNNNSNNNNNNSSSNNSSSNNSNNˆNSSNNNNNˆNSNNNNNNSNSNNNNNNNNNNNNLNNSNNNˆNNNNNLNNSNNNSNNNSNSNNNNNNNNNNNNNNNNNNLNSNNNNNNNLNNNNLNNNNNNNNNLNKJKKJ·JJKKKJKKKKKKWKKJ·JKJKK·JKKJ·JKKWKJ·J·J·JKKKKKKKKKKKJ·JJWKKKWKKJKJ·J·JKJ·JKWJJJJ·J·JKJKJKWJJJJKWJKJKJJJKWJJJKWKJKWJJJJKJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJHJJHJHJHJHHJGHGGHGGFFFFFFDKKKKKKKKKKKKKKKKKKK+20003+þþþþþþþþþüþþüüüüüüüüüüüüüþüüüüüüüüüüüüüüüüóüüüóü134444*óúóüóóóëëööëëõëëëëëõëõëëëëóëóóóóóóóóóóðóóóóóóðóòóðóðóð103*331ñððòððððððððððððððððððððððððððððïÑððïÑðÑðݰïÑÝßðÑÑÑÑá*00*03*ÑÚ°ßÑÑÑÑÑÑѰ°¦ÑÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÑÍÑÍÑÍÐÍÐÍÍÍÍͧ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFGGGGGGHGHHGJGHHJGHJGJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüýýúüüúýüüýúýýþúóó÷úóóó÷óóò¬}?!!!! !!!! !!!! !!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!–üÿÿÿÿÿÿÿÿÎ@!!!! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!! !!!!!!@ñÿÿÿÿÿÿÿÿÿx!! !!!!!!!!!!!!!!!!!!!!@ÌÿÿÿÿÿÿÿÿüÂ!!! !!_ñÿÿÿÿÿÿÿÿÿÌ;!!! !! !!!!óÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÎY! !@ÎÿÿÿÿÿÿÿÿçY@Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü   _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!  !  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   !=qªéýýýýýýýýýýþÿýüýüüýýýüüýýüüýüàÓKKKK·J·K·J·KK·J·K·KKK·K·K·KKK·K·KKKKKKKK·KK·K··KKKKKK·J·KKKK·KK·¿½¿½½½½¿½½½‰½ŒccccccÁ¹»¹ºººº¼¼¼´´¼´¹ˆ½½½½‰½ˆ‰‰‰‰‰½½ˆ½‰½ˆ½ˆ½½‰½ˆ‰‰‰ˆˆ½ˆ½ˆˆ½ˆˆˆˆ½ˆˆˆˆ‰½½ˆˆ½ˆˆˆˆ‰‰ˆˆˆ½ˆˆˆˆˆˆˆˆ½½ˆˆ½ˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆSˆˆˆˆˆSˆˆˆˆSˆˆˆˆˆSˆˆˆˆˆˆSSˆˆˆˆˆˆSˆˆˆˆˆSˆˆˆˆSˆˆˆNˆˆˆˆSˆNˆSSˆˆSNSSˆˆˆNNˆSSSˆˆˆˆSˆˆˆSSNSNˆˆˆˆˆSˆˆNSNNˆˆSˆNˆNSˆNˆˆSˆˆSSSˆNSSNNˆSNSNˆNNˆˆNSNNNˆNNSSˆˆNNSˆˆSNSNNNˆNSSNNSSSNNNSSSSNˆNSNNSNSSNNSNSNSNNNNSSNNNNNNNNˆNSNNSNNNNNNSNSNSSNSNNNNNSNNNNNNSNNNSNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNN·J·J·K·KJ·J·KJ·JKJ·J·KJ·KKKJKKK·J·JKKKKKKKJKKKJKKKKJKKWK·J·KKKKJKJ·J·JKKJ·J·JKJ·K·K·KJJ·JJ·JJJ·J·JJJJKJKJKJKJJ·JKJKJKJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJGJGHGGGFGFFFFFFFKKK³KKK³KKKKKKKKK³K+03*30+üþüþþüþüþüüþüóüüüüüüóüüüüüóüóüüüüüóüóüüüüüüóüúóó*4‡44P1úóóóóóóëëöëöëõêõêëìëëöêõêëóëòóóðóðððððóððððððððððððóðñ133*331ððððððððððððððððïððððïððÑðÑïÑðÑïáïÑïïÑïÑÑݰÑÑÝÑÑïÑÑÑÑ*30000*ÑÔÔØÑÑÑÑÏÐÑÞ¦°×ÑÍÑÍÑÍÍÍÍÍÍÍÍÍÑÍÍÑÍÍÑÍÍÍÍÍÍÍÍÍËͦ+&&&&&&+³KKKKK³KKKKKKK³KKKFFFFFFFFFFGFGGGGHGHGHGJGJHJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓüýúýüýýýüüüýúýüúÿü÷úóóúóúóúóò¬s? !!!!!! !! !! ! !!  !!! !!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ìÿÿÿÿÿÿÿÿÿ–!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!áÿÿÿÿÿÿÿÿÿ–@!!!!!! !!! !!!!!!!!!!$!!!!!!Zñÿÿÿÿÿÿÿÿú‚!!!_ñÿÿÿÿÿÿÿÿÿñ_!!!!!!!!!!!!Zñÿÿÿÿÿÿÿÿÿÿÿÿÿüá‚!!!! !!!;Îÿÿÿÿÿÿÿÿð@ –üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðY_ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  9qªíýýýýýýýýýýýÿþýüýýüüüýýýüýýüýæÖK·KKJ·KKKK·KK·KKKK·KKKKKKK·KKKKKK·K·K·KKK·KKK·K·K·K·KK·K·K·K·K·K¿¿½½½½½‰ˆ½‰½½\ccccccÁÁÄÄÁÄÄÁÄÁÄÁÄÄ»¹½ˆ½½½‰½½ˆ½‰½½‰½½½‰½‰‰‰ˆ½ˆ½½ˆ½‰‰½½‰ˆ½ˆ½ˆˆ½ˆ½‰‰½ˆˆ‰ˆˆ½ˆ½ˆ½½ˆ½‰‰‰‰‰ˆˆˆˆˆˆ½ˆˆ½ˆ½ˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆ½ˆˆˆˆˆSSSˆSˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆˆˆˆˆSˆˆˆSˆSˆˆˆˆˆSˆˆˆSSSˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆNSNNˆˆˆSˆˆSˆSNNˆSNˆSNSˆSSˆSˆSSSˆNNNNSNˆSNNˆSNSNˆSSˆNNˆNNSNNSSSNNNSˆNSˆNNSNˆNˆˆNSSSˆNNNNSSNSNNSNˆNNNNSNNNNNSSSNNSSNNSSSˆSSSNˆSSSNNNNNNSSSSNSNNNNNNNSNNNSNNNNˆNNNNNNLNNLNNNNNNNNNNNSNNNNNNNLNNNSNNNNNNNNNNNKKKKKJKKKK·J·J·J·J·JKKJ·JKWKKKWKKKK·JKKKKWKKKWK·JWKK·JKJKJKJKJ·J·J·JKJ·JJ·JJ·J·JJJJJJ·JJ·JJJK·JJJKJ·JKJJJJJKJJJJJJJJJJKJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHJGHGHGGGGGFFGFFFDKKKKKKKKKKKKKKKKKKK+20300*üþþþþþüþþþþüþüüüüóüüüüüüüüüüüüüóüüüóüóóüüüüüüóüó1P44‡41÷úóúóóóëëöëìëìëìëëëõëëìëëêóëòóóóóóóðóóðóóóðóóððóðóððóð133*33*ñóððððòððóðòðððððððððððððððððïððÑðÑïÑáïÑð­°ïÑÝßïÑÑáïÑ*0+03+*ÑÝ­ØÑÑÑÑÑÑÐѨ°°ÞÑÑÐÑÐÑÑÑÑÑÑÍÑÍÍÑÍÍÑÍÍÍÑÍÍÐÐÍÑÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFFGFFGFGGGGGGGHGHGHGJGJGHHJGJHJJHJHJHJJHJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ýüýüýúýúýúýüüüüüÿ÷óóóúóóó÷óóò¬Ž?!!!!!!!!!!!!! !!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!  !!!!!!!! !$!!!!!áÿÿÿÿÿÿÿÿÿ]!!!!!!!!= !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!Îÿÿÿÿÿÿÿÿÿß@!!!  !!!!!!! !!!!!!!!!!!!_þÿÿÿÿÿÿÿÿòZ! !!!!!_ñÿÿÿÿÿÿÿÿÿý–!!!!!!@áÿÿÿÿÿÿÿÿÿÿÿÿÿñ–!!;Îÿÿÿÿÿÿÿÿç@_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË! !ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!  !  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !  ! !q¢éþýýýýýýýýýþÿýüýüüýýýüýúýúýýüàÓKKKK·J·J·JKK·JKK·KKK·K·K·KKK·K·K·KKKKKK·K·K·KKK·K·K·K·K·K·K·K·KK¿Q½½iˆ½‰½½½5½cccccccº¼¼¼¼º¼ºº»º»Á»ÁÁ‰½½½½½½½½½‰‰‰½½½‰½‰‰‰½ˆ½ˆˆ½ˆ½ˆ½ˆ½ˆ½ˆ‰ˆ½ˆˆˆˆ‰‰ˆˆ½½ˆ½ˆˆ½ˆˆ½ˆˆ½‰‰½ˆ½ˆˆˆˆˆ½ˆ½ˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆSˆˆˆˆˆ‰ˆˆ‰ˆˆˆ‰ˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆSˆSˆSSSSNSSˆSSˆˆNˆSSˆˆˆˆˆˆˆˆˆˆˆˆSSSSSˆˆˆˆSˆˆSSSˆNˆSNSˆSˆˆSSˆSSSSˆSSNNSNNNˆˆNNSNNSSNSSSSˆSNNˆNSSSˆNˆˆSSˆSˆSNNSˆˆˆNNSNSSNNNNSSNSNSNSSNNNNNNNNSNNˆNNSNNNNNˆNNˆSSSSSNNSNNˆNˆNNSSNNNNNSNNNNNNˆNNNNNNˆNNNNNNNNNNNNNNNNNNLNNNNNNNNNNNNSNNNNNNSNNKKKJ·KKWKJKJKKKKJK·JKKKKKKKJKJKJKKJKKWKJKKKJKKJKKKJKJ·J·J·J·KJ·JKKKKKJ·JKKKJKKJKJ·JKKJKJJ·JJKJJJ·JJJJJJ·JWJKJKJKJJKJKJJJJKJJJJJJKJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHJGJGHGGGFGFFFFFEKKKKKKKKKKKKKKKKKKK+03020+þþþþþþþþþþüüüþüüþüþüüüüüóüüüüüüüüüüüüüüóüüüüóüüú144‡431óóúóóó÷ëëöëëëëëõêöêõëõêëêëðëòóóóóóðóóðóóóóóóóóóóóðóððð*33*301ððòðððððððððððððððððððððððððððððïðïðïðÑïÑݰïïØâïÑïÑÑÑ*30000*ÑÔ°ØÑÑÑÐÐÑÏÐѰ¦°ÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÑÍÑÍÑÍÐÍÎÍÍÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFGFFFGFFGGGGGGGHGJGHGHGJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓüýüýüýüýüüüüüüüüÿüóú÷óúóúóúóò¬Ž?   !!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!! !!! !!!!!!!!!!!!!! ! !!!!!!!!!!!!!!@ñÿÿÿÿÿÿÿÿúY!!!!!!!!!!!!!!!!!!!!!!$!!!!!!! !!!!!!!!!!!! !!!!!$!!! !!!–üÿÿÿÿÿÿÿÿü]!!!!!!!!!!!!!!!!!! !!!!!!!!!!Âÿÿÿÿÿÿÿÿÿç!!!!!_ñÿÿÿÿÿÿÿÿÿÿÏB!!!!!!!ÂýÿÿÿÿÿÿÿÿÿÿÿúÈY!!9Îÿÿÿÿÿÿÿÿç@ !;Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‚  ! ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   pšíýýýýýýýýýýýÿþýüýýüüüýüýýýüüýàÔKKKJ·KKJK·KKK·KKK·KKKKKKKK·KKKKKKK·K·K·K·KKK·KKKKK·KKKK·K·KK·K·KˆÀ½¿ÀÀ¿½ˆ¿À¿½ˆƒcccccº¼¼¼¼¼¼¼¼¼¼¼¼¼¼º‰¿½½¿½‰½¿‰½‰½½½½½‰½½½½½½½ˆ½½‰‰½‰½½ˆ½ˆ½ˆ½ˆ½ˆ½‰‰½½‰‰‰ˆˆ½ˆ½½‰½‰½‰ˆ½½ˆˆ½ˆ‰ˆˆˆ½ˆ½ˆˆ½ˆ½Sˆˆˆ½ˆ‰½ˆˆˆ½ˆˆˆˆ½ˆSˆˆ½ˆˆˆˆˆ½ˆˆˆˆ‰ˆˆSˆˆ‰ˆˆSˆˆˆˆˆˆˆˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆˆSˆˆSˆˆˆˆSˆSˆNSSˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆSˆˆˆSˆˆNˆSNˆSˆSˆˆˆSSˆˆSSˆˆˆNNˆˆSSˆNˆˆNSSˆˆNSNSˆSNNNSSSNSˆˆˆNˆˆNSˆNNNSˆSNSSSSSSˆˆSNNˆNNSSSSNNNSNNNSSSNSSSNNSNNˆNSSSSSSSNˆSNSSSNSNNSNSNSNNSNNSNˆNSSSNNSSNNNSNNNNˆNNNNSSNNNSSNNNNNNNNNNNSLNSNSNSSNNNNKK·KK·J·KK·J·J·J·KJK·J·J·JK·K·K·J·J·J·KK·JKK·J·J·J·J·JKKJ·KJKKKJ·JKWKKKKKJ·J·J·J·JKJ·J·J·JKKJ·JKJJJ·JWKJKJKJKJKJJKJKJKJKJJKJKJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJGHGGGGGFGFGFFFFK³KKKKKKKKKKK³KKKKK+20304+þüþþþþüüþüþüþüüþþþüüüüóóüüüüóüüüóüóóóóóóüóüóüóúó14444‡*óóóóóóóëëöëëêõêõêõëöêëêëêêóêòóóóðððóðóðððóóððóðððòðóðó*33*331ñðððððððððððððððïððÑïÑðïðÑïÑÑðÑÑðÑÑÑáïÑïÑݰÑáØßÑÑÑÑÑÑ*00+3+*Ï­°­ÑÑÑÑÑÑÑÑÐÞ°°­ÐÐÐÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍͦ+&&&&&&+K³KKKKKKK³KKKKKKK³FFFFFFFGFGGGGGGHGHGJGHGJHHHJHHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýüýüýüýüýúýüýüüüÿóóóó÷óóó÷óóò¬Ž?!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!Zòÿÿÿÿÿÿÿÿð@!!$$!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!! !!!!!!!!!!!!!xóÿÿÿÿÿÿÿÿÿ–!!!!!!!!!!!!! !!!!!!!!!!!!YñÿÿÿÿÿÿÿÿÿÉ !!! !!_ñÿÿÿÿÿÿÿÿÿÿü–!!! !! !!Bòÿÿÿÿÿÿÿÿÿÿÿç…!!! !!!!@Îÿÿÿÿÿÿÿÿç@!!ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóZ!!!  _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!    áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ   ! !9q¥íýýýýýýýýýýÿþþüýüüýýýüýüýúýûüæÓK·J·KKK··KK·KKK·KKK·K·K·K·KKK·K·K·KK·KK·KK·K·K·····K·K·K·K··K·K·i¿½¿68½½½ÀŒ66½ˆ½Q½‡Œ¿½½½‰¿½‰‰‰Q‰‰‰‰½¿½½½¿½<½‰½½½½‰ˆ½ˆˆ½½‰‰‰½ˆˆ½½ˆˆˆ½‰‰½ˆ‰½ˆˆ‰½NGDD,,LS½ˆ½ˆˆˆ½ˆˆˆˆˆ‰ˆˆ½ˆˆ½½ˆˆS½ˆˆˆˆˆˆˆˆˆ½ˆ½ˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆˆˆˆˆˆˆˆˆˆSˆˆNˆˆSˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆSˆSˆˆˆˆˆSˆSˆˆˆSSNSˆˆˆSˆˆSSSˆˆSDLˆˆNSˆˆˆˆ<ˆˆˆˆSNˆˆNˆˆSˆˆˆˆˆˆSSˆˆˆNˆˆˆSSNˆNˆSSNˆˆˆSˆSˆNSNNSˆˆSSˆSˆNSˆˆSSNSNNˆNNˆˆNNˆˆˆSSSˆˆˆSNSNNˆˆˆNSNNNSSNNNNˆSNNˆNNNNˆ!ˆSNNNNˆNNNˆNˆSˆNNSSNN·J·KKKKJ·J·J·J·KJ·J·J·J·K·J·J·J·K·J·KK·J·KJ·J·KKJ·JKKJKKKKKKKKWKKKJKKKJKJ·J·J·J·KKJ·KKKKKKKKJ·J·JWKJJKJKWKJJKJJJJJKWKJJJJJJJJJJJJHKJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJHJJJHJHJJHJHJGJGHGGGGFGFGFFFFKKKKKKKKKKKKKKKKKKK+03030+üüþþüþþþþüþüþþüþþüüþüþüþþüüüüüüþüóüüóüüüüüüüóüó÷1‡4‡441üóóúóóúöëöëõëõëõëöêõìëìëëëóóóðóóóóðóóóðóðóððóóóóðóððóñ133*301ðððóððóððððóðððððððððððððððððððïðÑðÑðÑïÑïݰÑðØèÑÑïïáÑ*330+0*ÑݰØÑÑÑÑÑÐÐÑÐÐÑÑÐÑØ¦°ÞÑÐÑÑÑÑÑÑÑÑÍÑÍÍÍÑÍÐÍÍÍÐÐÍÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFGFFFFFGFGGGGGGHGHGJGHGJHGJGHHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓÓýüýýüýüýüýüýúýúüÿüóúóúóóúóóóò¬s?!!!!!!!!!!! !!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Èýÿÿÿÿÿÿÿÿx!!!!!!$!!$!!!!!!!!!!!!!$!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!ƒúÿÿÿÿÿÿÿÿÿÿñx=!!!!!!!!! !!!!!!=!!=ÆýÿÿÿÿÿÿÿÿÿÿÏ@!!! !!!_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ_!!!!! !Æÿÿÿÿÿÿÿÿÿ@!!!!Îÿÿÿÿÿÿÿò…!;Îÿÿÿÿÿÿÿÿð@ ! !!–÷ÿÿÿÿÿÿÿÿÿýÂ;Zñÿÿÿÿÿÿÿÿÿÿç@!  _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ;  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    q¥íýýýýýýýýþýýÿýýýýüýýüýüýüýýüüæÕK·KKKKKKK·KKK·KKK·K·KKKKKKKKKKKKKKKKKKKK·KK·KK·K·K³K·KK³K³KK³K³K6666iii6iiiii6ii66iii6ii6666666i6ii6ii6666i6ii6i6iii666i6666‡66ii6i6i6665i<нii6<½À¿¿¿À6¿Š¿½¿½½½66½<‰½ŠP¿‰‰½½½¿¿½¿¿<½½‰‰‰‰ˆ½½‰½‰ˆ½½‰‰‰‰<ˆ½‰½ˆ½ˆˆ‰ˆIFDDD,, ‰‰‰‰‰‰‰‰‡ˆ½ˆˆˆˆ‰ˆ‰ˆ½‰ˆˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½Sˆˆˆ½ˆˆˆ<ˆˆˆˆˆˆSˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆSSˆˆˆˆˆˆSˆˆˆˆSˆˆˆˆˆˆˆˆSSSˆSˆˆDNˆN6ˆNˆˆˆ3ˆˆˆSˆˆˆˆˆSNSNˆSˆSˆˆSSˆNˆSˆˆˆˆˆˆSSSˆSSSSSSˆˆˆNSSˆˆˆNˆˆNSNˆNSNNˆNNSNˆS8ˆˆˆNˆSSˆSNNNNNNˆSSNSNSSˆNSNNN<ˆSNˆNNSN6iSˆ6NˆNNNNLSNNSSSNSSSNKKK·J·K·K·J·J·K·KK·J·K·J·J·K·J·J·JKJ·J·J·KKK·KKJ·J·J·KKKKJ·JKKKKKJ·J·JK·KKKJKJKJKJ·JKJ·JKKWKKJJKJKKKKKJ·HKJJ·HJ·JJKJJJKJKJKJJKJ·JKJJJKJJJJJKJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJHJHJHJHHJGHGGHGGFFFFGFEEKKKKKKKKKKKKKKKKKKK+20204+üüþþþþþþþüþüüþþþþþüþüþüþüþüüóüüüüüüþüüüüüüüüüóüü13‡4‡4*óúóúóüóööööõöõëöìõëöëõëëëëóòóóóóðóóóðóóðóðóóóóóóóóððóó134*331ñðóððòððððððððððóððððððððððððððððïððððððïÝÝðïÝÑÑïÑðÑï*03003*Ñ­°ØÑÑÑÑÑÑÑÑÑÏÑÑÑÑÑ­°¦ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÍÑÍÐÍÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFGGGGHGHGHGHGHHHGJHJHJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüüýüýüýüýúýüýýÿúóóó÷óúóúóúò¬s> !!!!  ! !! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Æÿÿÿÿÿÿÿÿÿz!!!!$!!!!!$!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!@Îÿÿÿÿÿÿÿÿÿÿÿçx!!!!!!!!!!!!!!!!!!!!$!!!!@Æüÿÿÿÿÿÿÿÿÿÿ÷‚!! !!! !!_òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç…@!!!!!ÈÿÿÿÿÿÿÿÿÿZ !!÷ÿÿÿÿÿÿÿÿÈ!@Îÿÿÿÿÿÿÿÿç@ ![ðÿÿÿÿÿÿÿÿÿÿÎ;‚üÿÿÿÿÿÿÿÿÿÿÈ!!‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !q¥íýýýýýþýýýþþÿýýýýýüüýüýüýüüýýàÓKKK·K·K·KKKK·KKK··JKK··KK···K·K·K·KK·K·K·K·K··K·KKK·K³K·K·K³K·K³6i6666i6i6ii6ii6i6iii6iiii6ii6i66ii6ii6i6i6i66i66i6ii66i6i6i6i6i6i6À!!  !!!! !!!!!!!!!!!!! !!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!$!!!!!!!!!$!!!!!!!!!!!!!Æüÿÿÿÿÿÿÿÿ‚!!!!!$!!!!!!$!!=$!!!!!!!!!!!!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!_ñÿÿÿÿÿÿÿÿÿÿÿñ‚!!!!!!!!!!$!!=!!!!!!!!=@ÆüÿÿÿÿÿÿÿÿÿÿþÈ!!!!!!!!!!_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌ‚@!!! !!!–üÿÿÿÿÿÿÿÿÆ!!!!YÿÿÿÿÿÿÿÿÿÈ!! !@Îÿÿÿÿÿÿÿÿð@  ;Ëÿÿÿÿÿÿÿÿÿÿñ[!  Èýÿÿÿÿÿÿÿÿÿü‚  xþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ; ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! =qªíýýþýýýýþþýýÿýýýýýýýüýüýüýýüüæÔK·KKKKKKK·KKK·K·KK···K···K·K···K·K···³·K··K³·K³³³³³³³³·K³³·K³³³³6iii666ii666ii6ii6666iii6i6iii6ii6666iii66i6ii66i6iiii66i6ii666i6i666ii666ii66i666ii66Ài‡Àiiiii6i6i666½66¿Q6666¿¿56iii8666¿‡¿¿¿½¿¿¿666‰<6½ˆ‡665ˆŠ½i‰‰6EDDDDF½,,,,, ,NQi‰65‰ˆ½ˆ‰ˆ‰ˆˆ‰½ˆ‰‰‰ˆˆˆˆ‰ˆ½‰ˆˆˆ8‡‰ˆˆˆˆ½ˆ½ˆ½ˆˆˆˆˆˆˆ½ˆ½ˆˆˆˆiˆ‰ˆˆˆO‰‰ˆˆ½ˆˆ<ˆˆˆˆˆˆˆSˆˆˆ½ˆˆˆˆˆˆˆˆ5ˆSS2ˆNˆSˆˆˆˆˆˆˆˆDDLˆNNˆˆˆˆˆˆˆˆˆˆˆSˆˆˆSˆNˆ66ˆ6ˆˆˆˆSˆNˆˆˆˆˆ6ˆNˆˆi2ˆˆˆ!‰ˆN<ˆNˆNˆˆˆˆˆˆˆNˆiˆSˆˆNiˆNˆˆˆSˆSNˆSˆˆˆ54NˆˆˆQNiSˆ6SN‡NˆN6NN2ˆNNˆ<ˆ63$6ˆˆNˆOˆii666i666i6Ši6‡666iii6666i66i6iiii66¿6i½66666¿¿i6‰6ˆiNˆˆ<ˆˆSNˆˆN666ˆj8ˆ6iNˆˆ6ˆ66ˆSSˆˆˆNˆˆˆNiNN6ˆˆNSˆ5iˆSˆˆ=825SS!!!! !!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!$!!=$!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!$!!!!!!$$$–üÿÿÿÿÿÿÿÿ–=!!!!!!!!!=!!!!!!$!!!!!=$!!!!==!!!!!!!!!!!!!!!!!!!!!!$!!!!!!$!$!$!!!!!!!@ÌýÿÿÿÿÿÿÿÿÿÿÿüÌ_!!!!!$!!!!!!!!!!@–çÿÿÿÿÿÿÿÿÿÿÿÿó‚!!!!!!!!!!!xñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüñΖ@!!!@óÿÿÿÿÿÿÿÿÿÏY!!!!_üÿÿÿÿÿÿÿÿý‚!!!!@Îÿÿÿÿÿÿÿÿð@!!_ñÿÿÿÿÿÿÿÿÿÿÈ;_óÿÿÿÿÿÿÿÿÿÿË! _þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ# áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !p¥íýþýýýýýþþýýÿýýýýýýýüýüýüýýüýàÖKK·KKKKKK·KK··K··KK·KK·KK·K·K·K·K·K·KKK·K³·³K³K³K·K³KK³³³³³³³K³³iii6i66i66ii66i6i6iiiii6iii6666i6ii66iii6iii666i66ii66ii6i66i66i6iii66iiii6ii6ii6iiiiiii66iiiii6ii6iiii66iii6i6ii8iii6ii6ii6666i66666866‡‰j¿6ˆ66ˆˆˆ28ii<<666ˆˆˆˆˆˆˆ0iiiNˆ66ˆˆˆ666ˆ6655Sˆˆ6ˆˆ5Nˆii56ˆNˆ66ˆˆSS666iˆˆ>ˆˆ6iN<<5i6Q6ˆ<ˆ5i66ˆNˆi66i<6i>66ˆi<6i6i666i66i6iiiˆ6QNiK··J·K···K·K·K·J···J·K·J·K·J·K·J·KK··K··KKK·K·KKKKK·KK·J·KK·K·K·KK·J·K·KK·K·JKK·J·KKKJ·JKKJ·J·JKKJ·JKK·J·J·JKKWKKJ·JJJKJKJWKJKJKWKJKJJJJKJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHJGHGGGGGFGFFFFFDK³KKK³KKKKK³KKKKKKK+22202+üüüüþþüüþþüüóüüüüüþüüüüüüüüüüüóüóüüóüþüóóüóóóóóú144‡‡41óúóóóóúôöööööõöõöõöõöõìëëëóëóóóóðóóóðððððóððððóðððððóð10Q*331ñðððððððððððððððððððïððïðïðÑðÑÑÑÑïÑðÑÑðÑïݰÑðÝÑÑïÑáÑï*00+00*ÑÚ°ØÑÑÑÑÑÑÑÑÑÑÍÑÍÑÍÍÑ̦°­ÐÍÍÍÍÍÍÍÍÍÍÑÍÐÎÐÐÐÍÍÍͦ+&&&&&&+K³KKKKKKKKKKKKKKK³DFFFFFFFFGGGGGGHGHGJGJGJHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýüüýüýüüýüýüýüýýþúóóóúóó÷ó÷úò¬Ž?!!!!!!!!!!!!! !!!!!!!!  !!!!!!!!!!!! !!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!…üÿÿÿÿÿÿÿÿË@!!!!!!!$!!!!$!!!!!!$!!!!!!!!$!!$!!$!!=!!!$!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Záÿÿÿÿÿÿÿÿÿÿÿÿÿñ–Z=!!!!!=!!!!=!9‚Ìúÿÿÿÿÿÿÿÿÿÿÿÿü–$!!!!!! !!_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ@!!!!!!áÿÿÿÿÿÿÿÿÿÿßx@!;–ñÿÿÿÿÿÿÿÿÿü@ !@Îÿÿÿÿÿÿÿÿç@!@ÎÿÿÿÿÿÿÿÿÿÿáY!–üÿÿÿÿÿÿÿÿÿþ‚_þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    ! !qªíýýýýýþþýýþþÿýýýýýýýýüýüýüüýüàÓKK·KK·KK·KK·K·K·K·K·K····K·K·³K·K·³K·³³³³³K·³³³³³³³³³³³³K·³³K·³³666i66ii6ii66i666ii6i66i6i6iiiii666ii66iiiii6i6ii6666i6ii6i66ii6i6iii666i6i66iiii66i66i66i66ii66iii6ii6i66i66iiiii6iiiii6iiii666ii66666i6666i6i666>6i66EGDDi666i6i6666ii66i‰6i66i86½ii666‰i<66666i6656<½i666i6i566½5iˆŠ‰6ˆ666Q‰66666‰6‰6‰5ˆŠ6i66666ii6ˆ666i6666Q6666Ni6i6ii6i68i5iii6iii666i66i66iiiN68iiii86iiiii66ii6i6iiKK·K·J·J·KK·K·KKKK·KK·K·KK·K·K·KK·KKKKKKK·KKK·J·K·J·J·J·J·KKKKKJ·KJ·KKJKKKJ·KKKKKJ·JKKKWKKKKJ·J·JKWKKJKJKJH·JJKJKJJKJKJJKJKJJJJJJJJJJKHKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJJHJHJGJGHGGGGFGFGFFFFFKKKKKKKKKKKKKKKKKKK+20220+üüüüþþþüþþüüüüüüþþþþüüþüþüüüüüóüüüüüüþüüüóüóóüüó1‡4‡441óüüüóúúëöëöööõöõöõöõëöëõêëóë÷ðóóóóóóóóðóððóððóððóðóððñ143*O31ðóðóðóðóðòðððððððóðððððððððððððïððïðððÑðÑÝÝÑÑØèÑïïÑïá*33030*Ñ­°ØÑïÑÑÑÑÑÑÏÐÑÑÑÑÐÑÏÐÔ°¦×ÐÑÑÍÑÍÑÍÑÍÍÍÍÍÎÍÍÐÎÍЦ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFFFGGGGGGGHGHGHGHGJHGJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýüýüýýüýüýüýüüÿüóú÷ó÷úóúóóò¬l!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!$$!!!!!x÷ÿÿÿÿÿÿÿÿß@!!$!!$!!!$!!!!!!!$$!!!!!!!!!!!=!!==!!!!!!!!!!=$$$=$$!!!!!!!!!!$!!!!!!!!!!!xçÿÿÿÿÿÿÿÿÿÿÿÿÿüçÆx@!!!!!=$!!=ZƒÌóÿÿÿÿÿÿÿÿÿÿÿÿÿüÆ@!!!!!!!!!!!!!!xñÿÿÿÿÿÿÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿü‚!!!!‚üÿÿÿÿÿÿÿÿÿÿóÎÆ–ÈÎüÿÿÿÿÿÿÿÿÿÿð ! !!!!!@ÎÿÿÿÿÿÿÿÿðB !!!!Âüÿÿÿÿÿÿÿÿÿ÷d! !ÎÿÿÿÿÿÿÿÿÿÿóY !dýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! ! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍ!!qªíýýýýþýýþýýýÿýýýýýýýýýüýüýýüýæÓ·KKKK·KKKK·KKK·KKK·KKKKKK·KK·KK·K·K·KK·K·K³K·K³K³K·K³³K³K³K³K³K³ii6i666i6iiiiiiii6i6i6i6iii66666i6ii66iii66i66ii66i666ii6i6ii66i6iii6i6ii66i6iii66666iiii6i666i666i666i66i6ii66ii6i6i6iiii6iiiii6i6ii666ii66ii6i6i66ii8EDDEi66i6i66i6666Š666ii66666=$!=!!!!$===$!!$==$!===!=!!$=====$=====>==>CxßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÌx@======!!$!========$>>====$=!$!$====!$===$!=$=!$!!$$!$=$===$$!=====!!!=!=!!$==!!======!!$==!!=$$!!!$!$$!!$!!!!=$=!$!$=$$=$!$!!!==$!!!!$!$=!$=!!$!!!!=$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  !  !!!!!!! !!!!!!!!!!!! !!!!! !!! !!!   !   ! !!  !!!!!!!!!!   !!! !!!! !!  !!!!  ! ! $q¥íþþþþÿýÿþÿþÿÿýýýýýýýýýýýýýýýýæÓ³³K³³³³K³K³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸³³¸³¸³³³³³³³³³³³³¸³6i66666666666666i6i666iii666666666ii6666666666i6i666i66i6i66ii666ii666i66i6i6i666666i666666i666666i66666666666666i6iiiii6666ii6i66ii6i6i &  & &  %& & %66iii66i6i66666i66ii6i6i6ii6i66i66666i66666i66ii6666666666i6666i666666666i666i66            66i66i6ii666i6666i6i666i666i6i66i666i6666ii6iiii666i6i66666i6666i6ii66i6ii6ii6i6666i6666i66i666i6i6i666666i66666i66i6i666i6i6i··¸·····¸····¸····¸··¸·····¸·¸······¸·····································K·³·K·³·K·³K·K·K·K·KK·K··KK·KKKKKKK·K·K·J·J·K·KWKJ·KKKJKJ·J·JKJWKJ·JKH·JKJJKJJJJJKJJKJJJJJJJJJJJJJJHJJJHJGHGGGGGFGFFFFFFKKKKKKKKKKKKKKKKKKK+2OOO2+üþþþþþüþþþþþÿüÿþþþþþþþþþþþþþþüüþüþþüüþþþüüüüüóüü1‡‡‡‡‡+üüüüóüüööööööõöõöõöõöõëõëöóëóóóóóóóóóóóóðóóóðóóóðóóóóó*‡4*‡4*óóóóóóóðóðóóððóðóðóððððððððððòðððððððððððÜÚððßèðïðððð*333301Ñß°ßÑïáÑïÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÑÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÍÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFGFFGFGGGGGGGHGHHGHGJGJHJHJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþýýþýþýýýýýýýýýüÿüú÷óóú÷óóóóò¬Žj!!==!!!!$!!!!$==!!!!!=$!!==!==$$!!!!$=!$$$$!==$!$$$!$!!$$$$$$==!!=$!$=$$$$!$$=!==$=====$$$$$!======$===$$=======9===!========$$====$!=======!$====!=!!=====!====]Ìúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Æu==$=====$===!$==!$!=$====$!===$!=$=====!$!=!=====!!=$=$!===!!$!=$==$!==$!==$$!$=!$$$=$!$$$!$$!==$!$!==!!!=$!$$!!$=$!!!!!!=!=!!!$!!!!!!!!!=$!!!!!!!!!!!!!!!!!!!=!!!!!!!!!!!!!$!!!!!!!!$!!!!!!!!!!!!!!!!!!  !!!!! !!!! !!!!!!!!    !   =qªõþÿþþýþþþþþýÿÿýýýýýýýýýýýýýýýæÓ³³³·K³·³·³·³·³³·³³³³³³³³·³³³³³³³³³³¸³¸³¸³¸³¸³¸³³·³³¸¸³¸¸³¸³¸¸³³³ii6i6i6i66ii66i6ii6i66i66666666i6i6i6i6i6666666666iii6i66i6i6i66i6i66i6i6i66i666i66666i6iii6ii6ii66i6i66666666666666ii66ii666666666666i6% % % & & %& &  & % & & & & & & %(666666666666i66i666i6666i666666i6666666666666666666i6i66i66iiii66i66i6i66i66666         6i66i6666i6666i6666i6666i6i66i6i66i6666i66666666i66666iii6i6i66666i6666i6666666ii6i666i666i66i66i6i6i6666i6ii6i66666i6i66i666i·······¸·¸·¸···¸·¸·¸···¸····¸··¸·¸·¸··¸·¸································³···K·³·K·³·³·³·K·K·K···KK·K·KK·K·K·KKKKK·KKKKJKKKKKJKKKKKKKKKKKKKKJKJ·JKJK·JJKJ·JJJKJJJKJJJJJJJJJJJJHJHJHHGJGGGGGFFFFFFFKKKKK³KKKKKKKKKKKKK+OO2OO+üüþþþþþþüþþþþÿüÿüþþþüþþþþþþþþüþüüþüþüþþüüüüóüüüü+‡Š‡‡‡1üüüüüóóööõöööõöõöõöõöõöõöëóë÷óóóóóóóóóóóóóóðóóóðóððóðó*4‡*44*ðóððóðóððððððòðóðððòððððððððððððððððððððïÝÝèÑèÑÑÑÑðÑÑ1333331áØÝØáÑÑÑÑÑáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÏÐÐÑÑÍÑÍÑÍÍÍÍÍÍÍÍÑÍÍ&&&&&&&+K³KKK³KKKKK³KKKKK³DFFFFFFFGFGGGGGHGHGJGHHHJGHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýýýýýýýýýýýýýÿúóó÷úóóú÷úóò¬sl==!!$!!===$!$$=!!!=!$===!$==$==$$$!!!!!===!!!!!$$!=!!!$!$=$==$===!=!$=!===!$!!!$=$=9!!$==========!$!!!$$======!$======!!$$=>A>==!=====!=====$$=!=====!!!=!==@ƒßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌx@===!!!$!=========!!$=!!!!!!=$$====!=$$=========!!=$=$!======!!$$!$==$!$$==$!=$$==!$====!!$$!!!$!!!!=$!==!$!$=!!!$!!!$=$!$=$!!!!!!$=!!==!$!$=!!$!!=$!!!$!!!=!!!!!!!$=$!$=!!!!!!!!!$!!!!!!!!!!!!!! !!!! !!!! !!!!!!!!!! !!!!!!!!  !!!       !! !      !pªíþþþþÿþÿþÿþÿÿýýýýýýýýýýýýýýýýàÓ³³³K³³K³³³³³³K³³³³³³³³³³³³³³³³¸³³³³³³³³³³³³³·³¸·¸³¸³³·³³·³¸³³³¸³66666666i666i6i6i6666666ii66ii6ii6666i66i6i66i6i6666666666666i6i66666ii66ii6i66666ii66i666i6666iii6i66666666666ii66i666i66i666i666i6ii6i(& & & & & &  % & % %66666666666666i6666666i6ii666i6666666666666i66666666666ii66666666ii6i6i66666666            666i666i666666666i666i6i6i66666i66i6i66i6666ii6i6i6666i6ii6i6i6iii6i6666iii6666666i66iii6i66i66i6i6i666666ii6ii6i66i666i666i666·¸···¸³··³··³···¸·······³¸¸³··³···³·¸³···³·³·³·³·³·³·³·³·³·³³³³·K³³³K·³K³K³³³³K³·³·K·K·KKK·K·KKK·K·KKKK·KKKKK·K·KKJ·J·KK·J·JKKKWKKWKKJKJKH·H·HKH·JKJJJKJJJJJJJJJJJJJJJJJJJJJHJJHJGJGHGGGFGFGFFFFDKKKKKKKKKKKKKKKKKKK+OOOO2+þþþþþþþþþüþüÿþüÿþþþþþþþþþüÿþþþþüþüþþþþþüüóüóüüüü1‡‡‡‡‡1üóüóüüüööööööõöõöõöõöõöõëõóëóóóóóóóóóóóóóóóóóóðóóðóðóó*‡4*‡3*ððóðóðóðóððóððððððóððóððððóððòðððððððððððÝÝïðððïððÑðï*333331áݰØÑðÑðÑÑïÑðÑðÑÑÑÑÑÑÑÑÎÑÑÐÑÑÑÑÏÐÑÑÑÐÑÑÑÑÑÑÑÍÍÐÍ+&&&&&&+KKKKKKKKKKKKKKKKKKFGFFGFFFFGFGGGGGGHGHGHGHGJHGJGHHJHJHJJJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýþýýþýþýýýýýýýüÿüóúóóúóóóóóò¬s?==!!$$$!!$!!!!$!$!$$$!$!!!==!$!!=!==!=!=!==!==$!=!$=$$==!====!!==$=!==$$$==$==!!!==$$$=!===9===!$========$$==$!=======$=!=====$=====$=>=$=====$$====$$=======$=$===@zÇðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüçÆxC=!=========!===============$$=$>===!$===$$==!=!=====$=$====!$==$==$=!=$=$=!==$!==$!===!!$!$=$$$$$!=!==$!!=!!=$$=!$=$$=!!!=!!$$!=$!!!=!$$!!$$!!!$=!!$!!!!!!!!!!!!$!!!!!=$ !!!!!!!!!!!!!!!!!!!!!!!!  !!!! ! !!! !!!!!!!!!!  ! !   !!qªíþþþþþþþþþþýÿÿýýýýýýýýýýýýýýýæÓK³³³³³³³K³³³³³³³³³³³³³³³³³³³³³³³¸³¸³³³¸³³¸³³¸³³³³¸³³³¸³¸¸³³³¸³³³66iii6iii6i6i66iii6i6ii6666iii6ii6i66666666i6i66i6iiiiii66i666i6i6i6i666ii6666i666666i6iiii6ii66i666i66666666666666666i6666i6i66i6666( % & & &%  & %& & % % &66666ii66iiii666i666666i6666i6666iii666666666ii6ii6666666666i6666666i66ii666i6         6i6666i66i666iii66i666666i6666i6i6i66i666i6666i6i66i6i6ii66i66666ii666666666i666ii6666i6i666i66666i6666i66i66i66666i6i6iii6i666···¸··¸··¸··¸··¸··¸··¸··¸···¸·¸·¸··¸····¸·····¸················³···³······³·K·³··K·K·KK·³K·K·KK·KKKK·K··J·K·KKKKKK·J·KKJKKKKKKKKKKKJ·JWKK·JKJKJ·JJJJJJJJJKJKJJJKJJJKJJJJJJJJJJHJHJHHGGHGGGFGFFFFFFKKKKKKKKKKKKKKKKKKK+O2OOO+þþþþþþüþþþþþþþþþüþþþþþüþþþþþþþüþüþþüþþüþüüüüüüüü1Ї‡‡‡*üüóüüüüööõöööõöõö÷öõöõöõööóë÷óóóóóóóóóóóúóðóðóóóóóóóóó*4‡*4‡1óóóóóóóóóðóððóððóóðóððððððððòððóðððððððððÝÝèðâïððððïð*333331áݰÝÑÑïÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÐÑÑÐÑÑÐÑÑÑÑÑÑÑÑÑÑÍÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFDFGFFFFGGFGGGGGGHGHGHGJHHGJHJHJHJJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýýýýýýýýýýýýýÿóóóóúóóúóúóò¬Ž?==!!$$$!!!$==!!$!!$=!!!$=$!!!!=$!$=!$!!!!$=$!!==!===!===!!$=!$$!$========!!$!====$======!$!!$$$==$!!!$=====$!$$$=$===!$==$==$!$$$$==!!======$$!====$=$====>>=========AAC_ƒÈßñüüýÿÿÿÿÿü÷òßÌ–u@========$$==>====$!=============>===>====$!!==!===!!!$!$=====C=!!$!!==$!==$!!!===!!$!!!$!$=$=!!!!!===$=!!$$$!!==$!$==!!===!$!!!!!$==!!=!!!!$==!$!!$==$!!!!!=!$!!===!!$!!!!!$!!!!!!!!!!!$!!! !!! !!!   !!!!!!!!!!! !  !!! ! !        ! !!  !!q¬íÿþÿþÿþÿþÿþÿÿýýýýýýýýýýýýýýýýæÓ³³³K·³·³³·³³³³·³³³³·³³³³³³³¸³³¸³³³³³³¸³³¸³³¸³³¸¸³·³³¸³³³³³¸³³¸³¸666ii6666i6666i66ii66i6i6i66666666i666i6i6i6i666i66i66666i66666i66i666i666i66666iii66i66666i6i66i66iii6i6i66ii6i566666666i6i66i66ii6i % %&% &%&& & % & & & & & && % %% (ii6i6666i6i6666i6i66i6666i66i66i666i6i66i6i66666666i66666666iiii6ii6666666(%        i55666i66666i66666i6ii66666666i66666666ii666i666i666666i6i66666666i666i6i66i666666666666666666i6666i666666i66i66666i66666i6i6i¸·¸··¸··¸··¸··¸··¸·¸··¸··¸·¸···¸··¸··¸···¸··¸·········¸·················³·K·³··K··³···³···K·K·K·K···KK·K·KKK·K·K·KK·KK·KK·JKKWKKJ·JKKKKJKJKKK·JKJKJ·J·JKJKJJKJJKJJJJJJJJJJJJJJJHJJJGJGGGGGGFFFFFEK³KKK³KKK³KKK³KKK³K+OOO2O+þþþþþþþþþþüþþüÿþþþþüþüþüþþþþþþüüüþüþüþþüüüüóüóüü1‡‡Š‡Š1óüóóóóúööõöööõöõìõëõëõëõëöóëóóóóðóóóóóóðóóóóóóðóðóðððó*‡4*‡31ðòðððððóðóðóðóðòðððððððððððððððððððððïðÑïÝÝÑïßèÑðÑïïÑ*333301ÑÔ°ØïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÑÐÑÑÑÑÍÑÎÑÍÍÑÍÍÍÍÍÐÍÍ­+&&&&&&+³KKKKKKKKKKKKK³KKKFFDFFFFFFGFGGGGGHGHHGJHHGJHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþýþþýýýþýýýýýýýüÿüóú÷÷ó÷÷÷óóò¬Ž?==!!!!!!$=!!$=$!!$!!!=$!!=!!==!!=!$=$!$$$!===$$==!!====!=!$==$=!=$$==$$==$!====$!===========!$====!=====$$$====!======$=$!=========$=====$=============$!===>$==!=======!=========>@A@=@=@=@=====$=====$==$!=====$$$=====$===!$=====!=$===>9==!=====$=$===!======$===$===$!==$$===!===!=$$=$!$$$$====$$!==$!$=!!=$$$$!=!$!$!==!!==!!!!!!=$!!!!=$!!!$!$$$!!!!!$!$!!=!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!! !! !! !!!!   !     ! qªíþþþþþþþþþþýÿÿýýýýýýýýýýýýýýýæÓK³³³³·K³³³³³³³³³³³³³³³³³³³³³³³³³¸³¸³¸³¸³³¸³³¸³³³¸³¸¸³¸¸³¸³³¸³³¸³6i666i6i6i6ii66666i666i6666ii6666666i66666666666666i6666i6i6ii6i66i66666i6666i66ii6i66666i66666666i6666iiiii66i66i66666ii6i6666i666666%%%&% % & & & & & & & & %&% %&66666i66i66i666i6i6i6666i6666i666666666666666666666i66666666666666666i665 % %%        ( 66666iii66i6i6i666666i6i6i666666666666i66i66i666i666ii6666i666666i66666666666i666i66i666i66i666i6666i6666i66i666666i666666i···¸··¸··¸··¸··¸··¸··¸·¸·³¸·³¸·³·¸··¸·····³····³··³··³···³··³³³³³³·³·K³·K³·³·K·³³³K·³³KK³K·KKK³KK·KKK·KKK·KKKKKKKKK·J·JKKKKK·KKJ·J·J·JJ·J·H·HKJJKJKJJJJJJJKJJJJJJJJJJJJJJJJJJJHJHGJGHGGGGGFFFGFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþüþþþþþüþüþþþþþþüþüþþþþþþþþþþüþüüüþüþþüüüüóüüü+‡Š‡‡‡1üóüóüüóööööööõëõëööõöõìõöëúõóóóóóóóóóóóóóóóóóóóóóóðóðó*2‡*4‡1óðóðóóóðóððððððððóóððóððððððóðòððððððððððÝÝððÝâïÑðÑÑá133333*áݰÝÑáïÑðÑïïÑáïÑðÑÑÑÑÑÑÑÑÑÑÑÑÐÏÑÑÑÐÐÑÐÑÐÑÑÑÑÍÍÍÔ&&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFGGFGGGGGGGGJGGJGHHGJGHHJHJHJHJHJJJHJJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýþýýýýýþýýýýþÿúóóóóúóóóúóò¬?$$!!!==!!$!!===!!======!===!!!!=!!$====!!!==$!=$!=!!$$==!=$!!!!$!$$!=====$!$!$$$=========$!$$$======!!===!=$$======$$$=====$$$$======$=====!=>===>===!!==!$===========$=!====!!$=$=A=!!$==========!$====$=======$!$!==>==!!$==!==>=====!$$=$=>C==!$=!$=!!!===!=$$$$!===$==!$==$===!==$=====!!!$!$==$!$===!!!$!!$=$!!!====$=!!!!!=!!======!!!!!!!!!!!=$!!$$!!!=!!!!!!!$!!!!!!==!!!!!!!!!=$!!!!!!!!!!!!! !!!!!!!!!!!!! !!!!!!! !! !!   !    !  ! !!! q¥õþþþÿþþÿþÿýÿÿýýýýýýýýýýýýýýýýàÓ³³K³³K³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸³¸³³³¸³³³³³³³³¸³³¸¸³³³ii666i6i66i6666i6666i6ii6666ii6i6i6i6i66666i66666i6666i6666666i66666i66666666ii666i666i6i66i66666666666666i6i66666ii6666666666i6666666 & &% % & % & % & % % % %& % %66666666666666666i6i666666666i6666666666i6i6i66i66666i66i6i6666666666i6i6%           i6666666666i666i66666i66i6i6i6iiii66666666i6666666i666666i66666666i66666666666i6665iii66i666i666i666666666666666i6666i6i66i¸·¸··¸··¸··¸··¸··¸··¸·¸··¸··¸·¸·¸··¸··¸·¸·¸···¸······¸···¸·····³··³········³·³··K··K···K·³K·³³··KKK·K·K·K·K·KK·K·KKKKK·J·JKKJ·JKJKJKJ·JKJKJ·JKJ·JKJKJJJKJJJJJJKJJKJJKJJJJJJJJHJJHJGJGHGGGFGFFFFFDKKKKKKKKKKKKKKKKKKK+OOO2O+üÿþþþþþþüþüüþþþþþþüüþüþþþþþþþþþþþþüüüþþþüüüóüüüü1‡Š‡‡Š1üüüóüóüööõöëöõöõëõëõëõöõëõóóóóóóóóóóóóóóóóóóðóóóóðóóðó*‡4*‡21ðóðóóðóóóóðóòðóððððóðððððððððððððððððððððÝÝððÝèðððïðï*333331ÑÝÝØÑïÑÑÑÑáÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍ­+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFFGGGGHGHGHGHHGHHHHJHHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýþþýþýýýýþýýýýüÿüóúóúóóú÷óóò¬Žl!!!$!!$!!=!!=$!!$$=!$$$$$$$$$=!!$$$$!!$$====!!$!===$$==!$!=$=!===$==!==!==$==!=$=====!===!=!=====!=========!=$===$!==========$!=========!=========$===$====$=====!=============!=A=!=====$$=============$=========$=============$=$$==$$====$=====>=$====$!=!=========!!=====!===!===!=!$====!$=$$!=====$!!$!=!$=!$$!==!!!!=!==$!$!!=$!=!=$=!!$!!$$!!!!$$!!=!!!=!!!!$$!!!!$!!!!!!!!!$!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!   !!!!!!    !  $q¥íþÿþþþþþþýÿýÿÿýýýýýýýýýýýýýýýæÓ³³·³·³³·³·³³³³³³·³³³³·³³³³¸³¸³¸³³¸³³¸³³¸³³·³³¸³³³¸³¸³¸³³³¸³³³³¸³666i6i6i6666i66666i6666666666666i66666666i6i666i6666iii66i666i666i6i666iii66i666i66666i66666i666i66i6666666666ii666i666i666i66ii6666i6 %% % %& % & & & & & % & & %% %% %%6666666i6i6666666i666i666i66666ii66i6i66i66ii6666666i66i6i6i6666666i66666(         (% 6666iii666666666i666666i666i66i6i6ii6ii6666i666i6666666666i6666i66ii666i6iii66666i6i66666666i66i666i6666i66666i66i666666666···¸··¸··¸··¸··¸··¸····¸··¸··¸···¸··¸··¸···¸·¸···¸··¸···················³·³·K··K··³··K··³·³K·K·K···K·K·KK·K·KKKKKKK·K·K·J·J·JK·J·J·J·JK·J·J·JKKJKJ·JKJ·JKJKJJKJJKJJKJJJJJJJJJJJHJJHJGGGGGGGFFFGFFFK³KKKKKKKKKKKKKKKKK+OOOO2+þþÿþþþþþþþþüüþüþüüþüþüþþþþþþþüþüüüüüüüþþüüüüóüóü1Ї‡Š‡1óóóüóóúõööööëõöõöõëööõëöööóóóóóóóóóóóóóóóóóóóóóóðóðððð1‡4*4‡*ñððððóðóðððððððòðóðóðóïðððððððððððððïðïÑðÝÝÑÑÝÑïÑÑÑÑï133333*ÑØÝØÑÑÑïÑÑÑÑÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÐÐÍÑÍÑÎÑÍÍÑÍÍÍÍÍÍÍÍѦ+&&&&&&+K³KKKKK³KKK³KKKKK³DFFFFFFFFGGGGGGGHGJGHGJHHJGJHJHJHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýþýþýýýýýýþýþÿóóó÷óóúóóúóò¬Žo===!!$==!!=$!==!!!$!!!!!!$!$======!=$====$!!=$!!!=!!==$===$$$!==$$!!==!$$========$===!$===!=======>=!!==>=====$==A=======$$===$======$$!=$$==!!$==!$=$======!====$$!!====>=!======A=$$>CA===$$=!$========>A>=====$!!============!====!=========!!!!====$!=>====$====!!==$==$$====$=$!=$$!$!$$!!$$==$$!$====!!!=$===!==>=$!!=!!!=!$!!==!!!!!!!$==$!!$!!!!!!!!!=$!!=!$!!!!===!!!!!!!!!!!!!!! !!$!!!!!!!!!!!!! !!!!!!!!!!!! ! !!!!!       ! !  ! !   =p¥õþþþýÿþÿþÿþÿÿýýýýýýýýýýýýýýýýæÓ³³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³³³¸³³¸³¸¸³¸·¸³¸³¸³¸³¸³³¸³¸¸¸³¸³¸¸¸i6666i66ii666666i66666666666666666i666ii666666666666666666666666666i6i6666i666666i666666666i6666666666i6i66i666666i6ii66i6666666666i65% %% % % % &&& & % % % % % % % %6i6i66i66i66i6ii666i66i6i66i666i66i6666i6i6i6666i6i6666ii6666i6i6666666655(        ( % 6666666ii66ii66666i6i6i6i666i66666666i666666i66i6666i666666i66666666i666i66666ii6666i6i6ii6ii6i6i66666i6666i666i666666666i6¸·¸··¸··¸·¸···¸··¸·¸¸·¸··¸··¸··¸··¸··¸··¸³··³···³··³···³··³·³·³·³··³·³·³·K³³·³³³³³K³³³³··K··K·KKKK·K·KK·KKKKK·K·K·KKKKKJ·KK·J·KKJKKJ·JKJKJKJKJKWKJKJKKJKJJJJJJJJJJJJJJJJJJJJJJHJJGJGHGGGGGFGFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþþþþþþþüüüüüþüþüüþþþþüÿþþþþüþþüüüþþþüüüüüüü1‡Š‡ŠŠ1üüüóüóüööõöööõöõöõëõëõëõëõóõóóóóóðóóóóóóúóóóóóóðóðóóóð*4‡*‡31ðóððóðóóðóðóðóððððððððòðóððòððððóððððððððÝÝððØèÑðïððá*33333*ðØÝßïïÑÑðÑðÑïáÑðÑÑðÑÑÑÑÑÑÑÑÑÐÑÑÑÐÐÑÑÐÐÑÑÐÑÑÑÑÍÍ­+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFGFFFFGGGGGGGGHGHHGHGHGJGJHHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýþþýþýþýýýýýýýüÿüúóóúóóúóó÷ò¬o!!$!!!!!=$$$!!!$$=$!!!!=$!$$==$=$$$!$===$$=$$$$=$=$!$=$$===!=!====!=======$$=!===$=!=========$=======$===$=====$$=================!============A=$$=============!===========$=======$===$$======$$=====$===============$==========!===========!================$$==$!======$!=====$====$!!====!!====!!$$!!$$$!=====$!$$!====$!$!==$=$!!!!$$$$=$!!!==!!!$=!!!=!!!!!!=!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!! !!!!  !!!!!!  !!!!!!!!    ! qªíýÿþÿþþþþþþþÿÿýþýýýýýýýýýýýýýàÓ·K³K³K³³³³³³³³³³³³³³³³³³³³¸³³³¸³³¸³³³³³³³³³³³¸³³³³¸³³³¸³³³³¸³³³³666i66666ii666666ii6i6ii5i6i666i666ii666666666666666i666i66i66i6i66i666i6i66666i6666i6i6ii6666i6i666i66i66666666i66666i66666i666i6666 %% %%&% & % % & % %% & & & % %& & % %&%& i6666i66666i666666i666666666i6666i6i666666666666666i66i666666666i6666666%(      666i6666i666i6i66666666i666i66ii66i6i6i6i66i666666i666i666666i666i6666i66i6666666i666i666666666666i6ii666i66i6666666666666i···¸··¸····¸·¸·¸·······¸···¸··¸·¸··¸¸·¸···¸···¸·¸··¸·¸·¸······³··³······K·³·K···K···K··K·K·K·KK·K·K·KKK·KK·K··KKKKKK·KK·KJ·JKKJKK·J·J·J·J·J·J·JJJKHJJJWJJKWKJKJJKJJJJJJJJJJJJJJHJHJHGJGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+ÿþÿÿþþþüþþþþþþüþüþüüþþþþþþÿüÿüþþþþþüþüüþþüüüóüüü+‡Š‡‡‡1úóóüóüüööööõöõöõöõöõëööõööúöóóóóóóóóóóóóóóúóóóðóóóóóóó1‡2*4‡*óðóóóóóóóðóðóðóðóðòóðóðððððððððððððððððððÝÝððÝèïðððïð10Q333*ðÝÝßÑÑáïÑÑÑÑÑïÑÑïÑÑÑÑÑÑÑÑÑÑÏÑÐÑÐÏÑÑÐÑÑÑÑÑÑÑÑÑÑÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFGGGFGGGHGGHGJGHGJHHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýþýþýþþýýýýýþÿ÷ó÷úóóúóóúóò¬Ÿo!!!====!!!===!$$===$!!!!$==!$=!!!!!$===!$!=>A=!$=$$=====$==========!$===$===$$!!=========!$!!$==$$$===$======$====!$=CA=$==$$========!======!!$!==!====$===>==>=======>=========$=$!=$============$==$$!$====$!=>=====!$==========$==!=$$==>==C==!!=>==$=!!=$$====$$=$!!$!==!==$========!$!$======!!==$$====!!!$$$$!=!!!!!$==$$==!!!$!=!$===$$==!!==!$!!=!!!!!$!!=$!!!!!!! !!!!!!$=!!!!!!!!!!!!!!!!!!!!! !!! !!! !  !!!!! !!! !! !!     !   !!  !  !!!  =}ªíÿýþþþþÿþÿýÿþýýýýýýýýýýýýýýýýèÓ³·³·³·³·³³³³³³³³³³¸³³³¸³³³³³³³³³·³¸³¸¸³¸¸³¸³¸³³¸¸³³³¸³³³¸³¸³¸³¸³6666666i6i66i66i66666666666666666666i6666666i66666i66i666666i66i6i66666666666666666i6666666ii66i6i6i66666666666i6i66666i66666666666i%&%% & % %% % %&% & & & % % && % & &% &%%6666666i666i6666i66666666i6i66i6ii6666ii6666i666666666i66i66666i6i6666i66( (% %       666666666i66i66666666666666666666666i66666i666i66i6ii6i66ii6666666666666666i666666666666i6i666i6666666i666666i666i6666i666666¸·¸··¸··¸¸··¸·¸··¸¸·¸¸··¸·¸··¸···¸···¸·¸·¸··¸¸································K···³··K··³·³·³·K··K·K·K·K··KKK·K·K·KKKK·J·K·KKK·KKJKJ·JKKKJ·JKJ·JK·JKJKKJKJJJKJKJJKJJKJJJJJJJJJHJJJGJHHGGGGFGFFFGDKKKKKKK³KKKKK³KKK³K+OOOOO+þüþþþÿþþþþþüþüþüþüþüþüüþüÿüÿþþþþüþþüüüüþüþüüüüüü1ЇЇŠ+üóüóúóüööõööëõëõëõëõìõëõöõóîóóóóðóóóóóóóóóðóóóóóóðóððð*4‡*‡31ðòðððóðóðóóðððððððððððóðððððððððððïðÑïÑïðÝÝÑðØèÑÑÑïïá*333331ÑÝÝØïïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÏÐÑÑÎÑÎÑÍÎÑÍÍÑÍÍÍÍ­+&&&&&&+³KKKKKKKKKKKKK³KKKEFFFFFGFFFGFGGGGGGHGJGHGJGJHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþýþýþýýþýýýýüÿü÷óóúóóú÷óóò¬j=$!!=$$$!$=$$$=$!!$===!!$==!!$$$$!===!=$!!==$!==$!$!===$$$=$$C===!===$!=$====!!====$$=========!=$===$$======$$====$$===============$===================$$=====$=====!=C===================>======================$=======!=>===========>=$========$=======$=$=>===!!====!!==$====!========!$==!==$=$========$$$$=======!$$==$!$==!$=$!$===$=$!!$$$!$!$!!==$!!=!=!$!!$!!$!!=$!!!!!!!!!!!!$!$!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!    !    !=s¥õþÿþÿþÿþýÿþÿÿÿýýýýýýýýýýýýýýýàÓ³K³³³³³³³³³³³³³³³³³³³³³¸³³¸³³¸³¸¸³·³³·³³³¸³¸³³¸³³¸³¸¸¸³¸¸¸³¸³¸³¸6666666i66666i666ii66666i666i6i66i566656666666666i666i66666666666666i666666666i66i666666666666666666666666666666i66666i6i6i66666668%% % %% % % & % % & % %% % %%&&%%56i66ii6i66666666666666i6666666i6666i6666666i666666i66i66666666i66666i666i665( % %       i6666666i666666666666666i666666i6666666666656666666666666666666i66666666666666666666i6666666666666666i6i66i6666666i66666i66666···¸··¸····¸····¸······¸·¸··¸··¸··¸·¸···¸··¸···¸·¸···¸···¸·¸···³·³·³·³·³·³·³·K·³·³K·³³³³³K·K·K·K³K·KK·KKKKK·KKKKKKK·K·J·KKKJ·JKKJ·J·JKJ·JKKKJ·HKJJKJ·JJJJKJKJJJJJJJJJJJJJJJJJJJHJHJGGGGGGGFFFGFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþÿÿÿþÿüþþþüþþþþüüþþþþþþþþÿüþþþþþþþüþüüüþüþüüþü1‡Š‡Š‡1óóóóóüó÷öîöúöõöëìõëöëõëööîüë÷óóúóóóðóóóóóóóóóóóóóóóðóð144*4‡1óððóóðóóóððóðóóðóðóðóðððòððóððððòððððððððÝÝððÝÑðïÑðÑÑ13O334*ÑݰÝÑáÑïÑðÑïÑïÑïÑÑðÑðÑðÑÑÑÑÑÑÑÑÐÐÐÐÐÐÑÐÐÑÑÐÑÐÎÍÔ&&&&&&&+KKKKKKKKKKKKKKKKKKFEFFFFFFFFGFGGGGGGHGHGJGHGJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþýþýþýþþýþýýýÿþúóóúóóúóó÷úò¬}?9=!!!!!!!!$=!!!=!!==!$!$==!!==!!$!$=!!====$=======$=!======!!==!!!!=$!===$!!==$====>$$==>===========$==>==$====!$=>=$!$==$!!$=>===========$======>>==>=$=C======$$>=$=====$$====!!===>==!$=A=>===$=====!======!$$!$!!=>>>=========$==$!$==$$==!!$$==>====$$=!!===!!=>C>=====$!==$==$!$!!!=$===!=$========!!!!===!!!!!$$!!!!!!$$!!!$==!!!!!==$==!$=$!!!!$!!!!$=$!===$!====!=$!!==$!!!!!!==!!!!!!!!!$!!! !!!! !!!!!!!!!!!!!!!!$! ! !!!! !!!!! !!!!!!!!! !    !!  !    !  !  !!=}ªíþþþþþþþÿýþÿþýýýýþýýýýýýýýýýýæÓ³³³³K³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³¸³³¸³¸³³³³³¸³¸³¸³¸³³³³³³¸³³³¸³666666666i66666i6666666i6666i666666i666666i666666666i8i66666666666i66i6666666666i6666666i66666666666i66i6i6666i6666666666666666666i6% % % %% %%& %&% &% % % % % % % & &% % %& %% %6666i6666666i6i6666666i6666i666666i6666666666i66666666666i6i6666666i66i66i66 %      i666666666666i6i6i66i66666666666666i66666i6665i6666666666i666666666666666666666i6666666i6i66i6666i66i6666666666666i6i66i666666·¸··¸·¸·¸·¸·¸¸·¸·¸·¸¸·¸···¸·¸·¸·¸¸····¸···¸·¸·¸·¸··¸···¸¸···············³·³·³·³·K·³·K·K·K·³·K·³·K·K·K··K··K·KK·K·KKKKKKKKKK·J·J·KJKKK·JKKWJKKKKKJKJKJKKJJJJJJJJJKJJKJJJJJJJJJJHJJHJGHGGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+üÿþþþÿþÿÿüÿþþüþþþþþþüþþþþüÿþþþþþüþþþþüüüþüüüþüüü1ЇЇŠ1üüóüúúüööýöõöõëõëöëõëõöõö÷óöóóóóóóóóóüóóóóóóóóóóóóóóóó*4‡*441ðóóóóóóóóóóððóðóððððððóððòðððóðððððððððððÝÝððãèððððÑï*43343*ïÝÝØÑïïÑÑÑáÑïÑáÑðÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍ­+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFGFGFGGGGHGHGHGJGHJGJHHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþýþýþýýþýþýýüÿüúóóúóó÷úóóò¬ŽC!=!!$$=!$$!$!==$$$$!$$!!=$!$===!!$=!===!!=$===$$==!====$==!===$!====$=======!==$$===================>>=$=================$===========A=!=============$$A>=$===$===$=======>===$==================================$===>========================$=$=====$=====$===$===================$!===$===========$!==$$==$$$=$$$!==$!!$!!==$$$$$=$$$=$!$=$==!!$$!=$!!!$!=$!!!$$$!$!!!$$!!!!!!$!!!!!!!!$!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!! !!!!!!!!    !=q¥íÿþÿþÿþÿýÿþÿÿÿýýýýýýýýýýýýýýýæÓ³³·³³³·³³³³³³·³¸³³³³¸³³³¸³¸³³¸³³¸³³¸³³·³³¸³¸³³³³¸³¸³¸³¸¸³¸³¸³¸³¸6666i66666666i6i666i6i6i666i6666ii666666i66666i6i6i666666666666666666666i6i666ii666i666i6666666i6666666666i6i666666666666i66666666i6 % %% %%% % % %& &% %& & % % % % % %&6i666666i6666666666666666i66666i6i6i66i6666i6i66666666666666i6666i66666666665%%% % %    % % 666i66666666666666i6666i666i666i666666ii66666666666666666666666666666666666666666i66666i6666i666666i666666666666i6i66666i66¸·¸·¸··¸·¸··¸·¸··¸¸··¸·¸¸¸·¸·¸·¸···¸¸··¸·¸···¸···¸··¸·····¸·¸··¸··¸···¸··³···············³·K·³·K·K·K·K·K·KKKK·KKKK·K·K·K·KK·KKKKJ·KKJKKKKKKKJ·JKKWKJKHJJ·JKJJKJKJJJJJKJJJJJJJJJJHJHJGJGGGGFGFFFFFFK³KKK³KKKKKKKKKKKKK+OOOOO+ÿüþþüÿþÿþþþþþþþþüþüüüþþþþÿþþþþüüüþþüüþüüüüüüüóüü+‡Š‡Œ‡*úüüüóóóööõööö÷öõëõëõëöëõëöúëóóóóóóóóóóóóüóóóóóóóóóóóðó*‡4*‡41ñððóðóðóðððòðððòððóððòððððððððððððïððððïÑÝÝèïßâïÑÑÑÑð*34333*ÑÝÝØÑÑáÑïÑÑÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÍÑÍÑÍÎÑÍÎÑÍÍÍÐÇ+&&&&&&+K³KKK³KKK³KKK³KKK³EFFFFFFFGFGGGGGGHGHGJGHGJHHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþýþýþþýþýþýýÿ÷óóúóóúóóóúò¬Žj==$==!$==$!!!$===!!===$==$$=$==!!===$==$!$===!!$!!$========!!>>=>==!======$==>=!!!====$!!=$==$=!$!$$!!==$=======$$=====>>=====!$===>>======$=======>=$>>====$==>=====$$==>=====>>=$!$$========>=>=========>A==C>=====$!!!$=!!$=====$$!====$=$=============>=!=>==$$==$$==$!=========!==!!$$$=!$!$$$!===$$$======$!!=A======!!!$=!!$!$!$=!!==!$==!!!==!$!!!$$=!!!!!!!!!!$!!=!=!!=$$$==!$==!$!!!!!!!$=$!!! !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! !!!!!!!          !  !  !    !pªõþþþþþþþÿýþÿþýýýýýþýþýýýýýýýýà׳³³³³³³³³³³³³³³³³³³³³³¸³³³³³¸³¸·¸³¸³³¸³¸¸³³¸³¸¸¸³¸³¸³¸¸¸³¸¸¸³¸¸¸666666i66i8i66i86i6666666666ii6666666666666666666i666i666666666666666666i666666666i6i666665666666666i6i6i66666666i6666i666666666i666 %%%% %% %&%%%&% % %%%%% % &% % & &% %%%% %6666666i6666666666666666i6666666666666666666i666i66ii6666666666666666i665666 % % %    % % %66666i66666i6i666i666666666i666666i6666666666666i66666666666666i6666666i6i6666666666666666666666666i66666666666666i6i6666¸···¸·¸·¸··¸·¸·¸···¸··¸·····¸····¸···¸··¸·¸¸··¸·¸··¸··¸¸·¸·····³···³····³··³·³·K·³·K³³³³K³³³·K³K·K·KK·KK·KK·K·K·KKKKKKKK·J·JK·J·KWKKKWJKKJ·H·H·JJKH·J·JJJKJKJJJJJJJJJJJJJJJJJJJHJHJGHGGGFGFGFFFFEKKKKKKKKKKKKKKKKKKK+OOOOO+ÿþÿþþÿþÿþÿþþþþþþþüþþþþþþþþþþþþþüþüþþþþþüüüüüüüüü1Ї‡Š‡1üüüóüóúööõöööýöõëöìõëõìõî÷óö÷óóóóóóóóóüóóóúðóóóóóóóóóó144*4‡'óððóóóóðóðóððóððóðððððððððóððððððððððððððÝÝððèðððððïÑ*433O3*ðØÝßïÑïáÑïïÑïáÑïÑÑðÑÑÑðÑÑÑÑÑÑÑÐÐÑÐÑÐÑÐÐÑÐÐÐÑÑÍÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFGFFFGFGGGGGGHGGHGHGHGJGHHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþýþýýþýþýýýÿüúóóóúóú÷÷óò¬l=$!$$$$$==!!$$!===!!$===$$$==!$$==$=====$!===$==$===!===$=======$====$====$!=======!$======$===$$$$=$===========================!========================>===========>=!======================$=======A=======>===============================$===============$>===$!======$=====$$=======!==$!===!!=$$=====!!=====$!=====$!=$===!==!!!!=$$!!===!!!$$!!===!==$!!!$=!!$$$!!!!$$$$!$$!!!!=$!$!!!$!!!!!!!!!=!!!!!!!!!!!!!!!!!!! !!!!! !!!!!! !   !!!!!!      !!q¥íÿþÿþÿýÿýÿþÿÿÿýýýýýýýýýýýýýýýæÓK³³³³³³³³³³³³³³³³³³¸³³³³³³¸³³³³³³³¸³³¸³³³³¸³³³³¸³³¸³¸³³³³¸³³¸³¸³666666666i6666i6i6666i666666i6666666666666666666666666666i66i66666666i6i6666666666666ii666666i66666666666i6i666666i6i8666i66i6666665%%&%% % &% % % %%& % %&%%&% %% &% %&%%% % %5666666666666666i6666666666i6i666666666666666i666i6i6666666i6666666i666i6666% % %    % %566666i66666i6i66666666666666666666i6666i66i6666666666666i6665i6i66666666566i6666666666i6i66666666666666666i66666666666i6·¸·¸·¸·¸·¸¸···¸·¸·¸¸¸·¸·¸¸¸··¸¸·¸·¸·¸·¸·¸····¸···¸··¸·····¸··¸··¸···········³·³·³·K··K·K·³·³K³·³·KK·K·K·K·KKKKK·KK·K·K·JKKKK·KJKKKKKJKK·JKKKKKKKJKJKJJJJ·HJJJJJJJKKJJKJJJJJJJJJHJHJHGGGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+ÿþþþþþþÿþÿþþþþþþþþþüþþþþþþþþþþþüüüþþþüþþüþüüüüüü1‡ŒŠ‡Š1üüüüóüóööööööõöúöõëöëõëöëöüöóóóúóóóóóüóúóüóúóóóóóóóóóó'‡4*‡4*óóóóóóóóðóðóððóóðóðóðóðóðððððððððððððððððÝÝðððððððððï*34334*ðÝÝØïÑÑïÑïÑáïÑïïðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÏÑÑÑÑÑÑÑÑÐצ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFGFFFFFGFGGGGGGHGHHGJGHHJGHJGJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþýþþýþýþþþÿóóóú÷óóóóó÷ò¬Žj!!=!==!!!=====!$====!!==!!!$!=====$!!$$!==!!$=======$$=$!$$=>==!$$$=====$!==$$==$=>=$$$!$!=====$==>>===>A>==========>$$===========$$$!===>=========$!!===$===>=!========9=>=======>>=>==$====$==A>==>=$!$============A>>=>A>=====!==A==>>>=>=====$$==$$=$!!$===$=====$===$!!$!=>=$==!$=!!====A=$!$===========$!===$$=$=!=$!$=$!!=====!!!!==$!=!$!!!$=$!!$=!!!!!=$$!!!!==!!!!!!$!$!!!!!$=!!!!!!!$!!$!!!!!!!!$!!!!!!! !!!!!!$!!!!!!!!!!!!!!!!!!!!!!! ! !!!!   !! !    !       !       !! !!! =sªíþþþþþÿýÿýþÿþýýýýýþýýýýýýýýýýæÓ³·³³³³·³³³³·³³³³³³³³³³¸³¸³·¸³¸¸³³¸³³¸³³¸³¸³³¸³¸³³¸³¸³¸³¸¸³¸¸¸¸³¸666666666666666666666i66i66666i666666666666666666i66i66666i66666666i66666666666666666666i666666i666i66i666i66666666i666i66666666666%%%&%% %%% %%%&% %%% % % % & &%& %% % % %%% %% % (i6666i6i6666i6666666666i6i666666666i6666i666666i666666i6666i6666666666666665%% %    % 66666666i6666666666666666666666666666666i66666666i6666666666666i666666i6666666666666i6666666666i6666666i666666666666i6666¸¸·¸·¸¸¸·¸·¸¸¸·¸·¸¸··¸·¸··¸·¸¸·¸·¸·¸··¸··¸¸·¸·¸·¸··¸··¸¸·¸··¸·····¸·¸·¸···················K³··³·³·³··K··K·K·K·K·KKKKKKK·K·KKJ·KKJ·J·KKJKKWKJKKJ·J·JKJ·JKJ·KJJKJKJJJKJJJJJJJJJJJJJJJGJGHGGGFGFFFFDKKKKKKK³KKKKK³KKK³K+OOOOO+ÿþþüÿÿÿþÿþþþþþþþüþþþþþüþþüþþþüþóüüüüþüþþóüüüüüóü1Œ‡‡Š‡+üüóóóóúööõöööõöõöõöõëõö÷öõóõóúóóóóóóóóóúóóðóóóóóóóóðóó*‡‡*4‡*ðóðóðóðððóðóðððóððððððððððððððððïðððððÑïÑê°ïÑèÑðÑðïÑÑ*433431ÑÝÝØïïáïÑÑÑïïáÑÑÑÑÑÑÑÑÑÑÑÑÑÐÏÐÑÏÑÐÐÑÐÑÍÑÍÑÍÐÍɰ¦+&&&&&&+³KKKKKKKKKKKKKKK³KFFDFFFFFGGFGGGGHGHGHGJGJHJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþýýþýþýýüÿüúó÷óúóú÷úóò¬o!!$$==!!!===!=!======$!=$!==$$$$==$!!$=$!!====!====>=!=====!=====$!=$$======!===========!===============!=>>>>===========$=========!==================================$=====>======$=====>===>===$============>==$=====================AA=======$===$=======$===$$>===$!=====!=!$====!=$$==!$=======$$=====!=======$===$!=========$!!==!==!!==$!$!$!!==$$!!$==!$$!!$=$$=!!=$!$=!!$!!!!=$=!!!!$!!!$!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!! =q¥íÿýÿýÿýÿþÿþÿÿÿþýýýþýþýýýýýýýýæÓ³³³³³³³³³³³³³³³³³¸³³¸³³³³¸³³·³³¸³³¸³³¸¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸66666i6666666666666i66686666i666i66666666i66666i66666666i666666666666666666i66i666i6666666666i6i6666666666i66666i66666i6i6666666i666'%% & % %%% %%% %%% % % %&% % %%&%% %% %%% %%5'%%666666666666666666i6666666666i6i666i66666666666666666666666i66866666i66656666% % %  % % 6666i66i6666666i6666666i66666i6i6666666i6i6656666666666666i66666666666666666666666i66666666666666i666666i666i666i66666666··¸·¸·¸··¸·¸··¸·¸··¸¸·¸·¸··¸··¸·¸·¸··¸·¸·····¸·¸·¸··¸······¸³·¸³··³··³···³³··³·³·³³·K·³K··³³³KK·K³K·K·KKKKK·KKKKK·K·K·KKKKJ··J·JK·KJKJ·J·JKK·H·HKJJJ·HKJKJJKJJJJJJJJJJJJJJJJJJHJHJHGHGGGGGFFFGFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþÿþþÿÿüþþüþþþþþþþþþþÿþþþþüþüþüþüüüþüüüüüüóüüü+‡ŠŠ‡Š1üüóüüóóöööööëõöõöõöõöõìõëîüõóóóóóóóóóüóúóóóóóóóóóóðóóð*‡4*‡4*óóóóððóððððððóððóðóððòðððóðððóðòðððóðððððÝÝððÝðÑðÑðïð*34334*ïݰÝÑÑÑÑÑïïÑáïïÑðÑÑÑáïÑðÑÑÑÑÑÑÑÐÐÑÑÑÐÑÏÑÐÐÑÐÍÔ¦°(&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFFGFGGGGGGGHGHGHGJGJGHHJGJHJJHJHJHJJHJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþýþýýýÿþúó÷÷óó÷óóóóò¬so$!9!!!$====!=!=!!$$=$!!!======$!===============$!$=>===A===!=$$$===>>===!=>==========$=A>>A>>>=================================$=>=====>>=======>=====>C>==$=>>=A======>>>==>=$>>=$=$=$===$=>>=========$$=======>======>==$======>=$!=$=====A==$!=>====$========$==!!=============!=!===>A====$!$==!==$=!=$!!=$!$$=$!!$!!==!=!$!!$!$====$$!==!!$======!!$==!!!$=$!!!!!!!=!!!$!!=$!=!!!!=!!!!$!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!  !!! !!!!    !qšõþÿþÿýÿýþþÿþÿýýýýýýýýýýýýýýýýæÓ³³³³³³³³³³³³³³³³³³³³³¸³¸³³¸³¸³³³¸³³³¸³³³³¸³³¸³³¸³¸³¸³¸³¸³³³³¸³¸³66i6666666666666ii6666i6i666666666i6666666666666666666666666666666i66666i666i6666i66666i66666i66666666666666666i6666666666666666666i(66(%&%%&%% &% &% % % % %& %% %% %%&%%%((5(6666666666666666666666666i6666666i6666ii6i66666666i6666i666666i6666666i6666i666 % % %  % %66i6i666666666i8666666666666i6i66i666i66666666i66i666666666666i66666i666666i6i6i66666i6i6i66i66666666i6666666666666666i66¸·¸·¸·¸·¸·¸·¸¸¸·¸·¸··¸·¸¸¸¸¸·¸¸·¸·¸¸·¸··¸¸·¸···¸···¸·¸·¸¸·¸··¸··¸·······³···³·····K·³·³··K·K³·K³³·K·K·K···KKK·K·KKKKKKKKK·KKJ·KKKJK·J·JKKKKJ·JKKWKJKJKJJJJJJKJJKJJKJJKJJJJJJJHJJHJHJGHGGGFGFFFFFEKKKKKKKKKKKKKKKKKKK+OOOOO+þþþüÿÿþþþþþþþþüþþþþþþþþþþþþþþþþüþüþüþüþüüüüüüüüü1ŠŠ‡Œ‡1üüüüüüüööõöööõöõöõöõöõëõö÷úóóúóüóóóóóóóóóóóóóóóóóóóóóó*4‡*4‡*óóóóóóóóðóðòóðòððððóððòðòððòððððóððððððððÝÝððßèðïðððð*3O343*ðÝÝÝðÑïïáÑÑïïÑïÑÑÑÑÑïÑÑÑÑÑÑÑÑÑÐÑÑÏÐÐÑÐÑÑÑÑÑÑØ¦°¦+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFFGGGGGGGHGJGHGHGJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþýþýþýýüÿü÷óóú÷óúóúóò¬s?===$$!!==!=====$$!!!!$$$!!======!$===$===$$===$===========!=>===$=====!==============$===A=====$=======$=========!====================$=C>========A====A=A=========>===>=========>=====$=$=>=========>==$===========>===========>=====$==>======$$=====$=====$=>=$=======$===!$=====!=====>======!========$$!$==$!$$$$==$===$$$==$$$====!=!=$!!$!$$$===!$!!===!!!$$!=$!!$$$$!!$!=$!$$!!!$$$!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!   !  =q¥íþþþþÿýÿþÿþþÿÿýþýýþýþýþýýýýýýæÓ³³·³³³³³³·³³³¸³³¸³¸³³³³³¸³³·³¸¸³³¸³³¸³¸³³¸¸³¸³¸³¸³¸³¸³¸¸³¸¸¸¸¸¸¸6i6666666666i6i66666i6666666666i6668i6666i6666i6i66666666i66i66666666666666666i66666666666i66666666i66666666666ii666666i666666666666(i5%%% %&% &% %%% &%% %%% % %% % %%% % %%%%86666666i86666666i66i666i6666666666i668666666i66666666666666666666i6i6666666ii566i % % % %  % % 666666666666666666666666666665666666i66ii666666666666i666i6i66i666i66666i66666i6i6666666i66666666i6666666666666i6i66666i6¸¸·º·¸·¸¸¸¸¸··¸¸¸¸¸¸¸·¸·¸·¸·¸¸·¸¸·¸·¸·¸¸··¸·¸·¸··¸¸···¸····¸¸·¸···¸·¸···¸·················³··K³·K··³··³·KK···K·KKK·K·K·K·KKK·KKK·J·KKJ·J·JKKKJ·JKKKJ·JKJ·J·JJJKJKJJJJJJJJJJJJJJJJHJGJGGGGGGFFFFFFD³KK³KKKKKKK³KKKKKKK+OOOOO+þþþþÿüþþþüþþþüþüþþþþþüþþþþüþüüüþüþüüüüüüüüóüüüüó1‡Œ‡ŠŒ1üüüüóüüööõöööõëõöõöõëõëöëöóúóóóóóóóóóóóóóóóóóóóóðóðóðó*‡4*‡4*óðóðóðóððóððððððóððððððððððððððððððððððððÝÝððÝÑÑÑðÑáï*43334*ÑݰØÑÑðÑïÑÑÑÑÑáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÐÑÑÑÏÑÑÍÑÍÍͦ°¨Ô+&&&&&&+K³KKK³KKKKK³KKKKK³EFFFFFFFFGGGGGGHGHGJGHGJHHHJHHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþýþýþþÿþúóóúóóúóóó÷ò¬?$!!$!$==!!$$$!!===$!======!=!=!$==!==!!====$!!!===!$!$=$==!=A==$!=!===$$==!$$==$===============!$=========!==$$==================>>>>=$==========$==$$=====>=======C=====$==========A=>=>=========>=$===>>=>=>==>============>>===$=============>=$===$==================$!===$=>==$==A==!$$!==$$$$$$$==>>==$$=$!$=======$!==!==$$!!$$$===$!$====!$=$=!==$$!!!!!==!==!!==!==$$!!!!!!!!$!!!$$!$!!!!!!!!!=!!$===$!!!$$!!!!$==!!!!!!!!!!$!!!! ! !!!!!!!!!!!!!!!!!!! !!!!!  !   !   !!    ! ! ! !sªõÿþÿýþÿþÿýÿþÿýýýþýýýýýýýýþýýýæÓ³³³³³³³³³³³³³³³³³³³³¸³¸¸³³¸³¸³³³¸³¸¸³³¸³¸³³¸³¸³¸³¸³¸¸¸³¸¸¸¸¸¸¸¸¸656665666666665666666666666666666i6666656666665666666666666666666i866666666666666666i666666i66666666666666666i8666666666666666666666%%% %%%%%% %% %%%%%%%%%% %% %%%%%%% % %%%& %%5666i666i6i66666666666666i66666i666668666666666666i66i666666666666666666666655666( % % %  %666i65666666666i6666565666666i666666i5666666666666666666666666i6666666666i666i6666666i5666666i66i66666666666i6666666666¸···¸·¸¸¸¸·¸¸¸·¸·¸·¸·¸¸¸¸¸·¸¸·¸··¸··¸·¸·¸¸··¸··¸····¸···¸¸···¸··¸·³··³··³·³·³··³·³·K·³K·K³³³³³³³³K³K³K·KK·KKKKK·KKKKKKKKK·KKK·J·JKK·JKKJKKWKKJ·JKJKKJKJJJJJJ·JJJJJJJJJJJJJJJJJJHJHJHGGGGGGFGFGFFFKKKKKKKKKKKKKKKKKKK+OOOOO+üþþþüþþþþüþþþþüüþþþþþüþþüþüüþüüþþüþüüüüüüüüþüüüü1ŒŒ‡Œ‡+üüüüüóüõöõöööõöõöõëõöõëõöõúóúóüóüóóóóóóóóóóóóðóóóóóóóó*4‡*2‡*ðóóðóððóððóðóðóððóðóððððóððððóðððððòðððððêÝðÑãèððÑðÑï*34343*ïÝÝÝÑðÑÑïáïÑÑïÑïïÑðÑÑÑÑÑÑÑÑÑÑÑÐÑÏÐÑÐÐÐÑÑÑÑদ×Ô+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFGFGFFFGGGGGGGHGHGJGHGJGHJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþýþýýüÿüúóó÷÷óóú÷óòÕl!$!!====!$!!!=============!=====$==$=!==!$$!$==!==$$==$=======$=====$=====$============$===============================>==$=>===>=>==============================>==>==$=>=$=>====>==>A==A==$=>======>=>========$==>==>A===>====$================$=========C=============$======$======$!$====!$$$$===========$==========!=!==$==$!$=======!!=!==$!$$=$!=!=!!===$!!$==!===!!$!!$=$!!$=!!!!!$!=$!!$!$$!!!!!!!!!!!!!!==!!!!!!!!!!!!!!!!!!!!!! !!!!!! !!!$!!!!!! !!!!!q¥íþýÿþÿþþýÿþÿÿÿþþýþýýþýþýýýýýýæÓ³³³³³³³³³³³³³³³¸³³³³³³³³¸³³³³¸³¸³³³¸³¸³³¸³¸³¸³³³¸³¸³¸³¸³¸¸³¸³¸³¸665i6666666665666666666666i5i8666i66666i66666666i66666666666666i666666i566666i666666i66566666666666668i6666666i6666656i66666666i65'%%%%%% %%%%%%%%%&%%%& &%&%%%% %&% %% %%%%%%66666666i6666666666666666666666666666666ii6666666666566666i666i66i66666666i665666%% % % % % 666686566566666i66i66666666666i66666666566i6666666666656666666666i6666666666i6666666666i6666666i666i6i666666666686i6i666¸¸¸¸¸·¸·¸¸¸¸¸·¸¸¸¸¸¸¸·¸·¸·¸·¸¸¸¸¸¸·¸¸¸·¸·¸·¸·¸¸·¸¸¸··¸·¸···¸···¸·¸····¸··¸³···³·······³·³·³³K·K·³K···K···K³K··KKK··K·K·K·KKK·JKKK·JKKKKKKKKJ·J·JJ·HJKJKJKJKJJJJJJJKJJKJJJJJJJJJJHJHHJGGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþþþþþþþþþüþþþþþþþþüüüþþüþþüüþüþüþüüþüþüüüüþ1‡Œ‡Š‡1üüüóüüüööööööýëõëööõöëëõööúõ÷úóóóóóüóóóóóóóóóóóóðóóóðó*‡‡)‡‡*óóóððóðóðóðóðóððóðððððóðððððòððððððððððððÝÝððÝâðððððð1P3434*ðÝÝßðïðÑïÑÑïïÑïÑáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÑÑÑÑÑÑØ¦°­Í­+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFGFGFGGGGGHGHGHHGHJHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþýþþýÿ÷óóúóóúóóó÷ò¬Žo==$!!!$$=====!$=!=$!$=$!$$$=$=!$==$!=$==>=========A=$==$!===$$=>=$=======>=======$=>=========>==>==========>============$=>=========>===C====>==$=C>=>=>========>====$=====C=$==============>========>=======$=====$=$==>=====$$=>==>====>=======$===>>A===$===$$====$====A======$$==$$==============$===$==========!$$$$=!=!===!$======!$!!!==!$=$=!=$!!!!=$$=!!=!!$=!$=!!$!!==!$=!$$!!!!$=$!!!$!$=!!!!!!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!! !! !!   !!  !        !  =sªõÿþÿþþÿþÿýþÿþþýýþýýýýýýýýþýýýæÓ·³³³·³³³³³³³³³³³³³¸³¸³¸³·³³¸³³·³³¸³³³³³¸³¸³¸³¸¸³¸¸¸¸³¸¸³³¸³¸¸³¸³66666666666i66i6666665666666666666i6666666666i66666i666665i6ii86666666666666656666666666666666668666666i6666666666666666666i66666665'%%%&%%'%%%%%%&%%&%%%%%%% & & %%&%%%&%%%%% %66666i6666666666666666666666666666i6666i86666666666i666i5666666666866i6666i6666i6i6i6 % % % % % % % % (6666666666666666666666i6666666i66i6666666666666666666666666i66666666i6666i666666666i666666i6i6666566666666666i666666i6·¸·¸¸¸¸¸·¸¸¸¸¸·¸·¸·¸¸¸¸¸·¸·¸·¸·¸·¸¸¸·¸·¸¸·¸¸·¸·¸··¸·¸·¸·¸·¸·¸·¸····¸······················K··³··³·K··³·K···KK·K·KKKKKKKKK·KKK·K·J·J·KKWKJ·JKJKK·J·KKJ·JKJKJJKJKJKJJKJJJJJJJJJJJJJJHJGHGGGGFGFFFFEKKKKKKK³KKKKKKK³KK³+OOOOO+þþþþþþþþþþþþþþþüüþþüþþüüüüüþüþüþüþüüüüüüüüüüüüüü*ŒŠŠŠŒ1óüüüüóüööõöõöõöõöõëõëöëõöõó÷óóüóüóóóóóóóóðóóðóóóóðóóóó*4‡*4‡1ððððóððòðððððóðòððððóðððððóððððððððððððïðÝÝïðßèïðÑÑïá*34343*ïØÝßáÑïáïáïáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÏÑÑÐÏÑÍÑÍÍÞ¦°ÔÍÍ­+&&&&&&+³KKKKK³KKKKKKKKK³KFFFFFFFFFFGFGGGGGHGJGHJGHJGHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþýýýÿüúóóúóóúóúóò¬o==!$!!==$$===!!$======$!!=$!$$!$==$$=================$=!====$>======>===>=$=====$===>==========>===============$==A>=$==>A>===>==============C=====>C===$=====>>====!=====>=======>==>>====>=====>===>>======$==>==========>=====>>===A==============>>=$=====$==========>AA=======$=====>=======A==$=$$============!$!$==$$$==========!!$!=$$$$!!$!!!=!!!!$$$==!$==!==$=$!$==!!!==$$!!!!$!!$$!!!!$!!$$!!!!!!!!==!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !$!!!!!!!!!!!!!  !  !!!!!! !   =}ªíþþÿýÿýÿþÿþÿÿÿýþýþþýýýþýýýþýýæÓ³³³³³³³³³³³³¸³³¸³¸³³³³³¸³¸¸³¸³¸¸³³¸¸¸³¸³¸³¸³¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸66666666666i666666666666666666666666i6666666i666666666566666666666i666666656666665666666i666i666666666666i66566666666666666666i6665(%%%' %%%%%%%%%%%%%%%%%%%%%% %%%%% %%%&% %%((66666666666666666i666666666665i566666i66666566666666i666i666i66666i6666566i66666666 % % % % % % % % % %%666666666666i8i66666656i666656666856666i666666666666666666666666666i66i6666666666i666666666i66666i666666666666666i6i66i·¸¸¸·¸¸¸¸¸¸¸·¸¸¸¸¸¸¸·¸¸¸¸¸¸¸¸¸·¸¸¸·¸¸·¸·¸·¸·¸··¸¸········¸·¸···¸¸·¸·¸·¸¸·³·³·³·³·³··³·³··K³³³³K·³³K³K·K³KKK·KKKK·K·K·K·K·KKKK·JKKKKJKKKKKKJ·J·HKJKJJWJJJKJ·JKJJJJJJJJJJJJJJJJJHJJHJGHGGGGGFFFGFEFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþþüþüþþþþþüþüüþþþüþüüüþþþüþþüþþüþüóüüüüüþüþ1ЇŒŠ‡1üüüüóüóööõöúöúöõöõöõëõëöööúöóúóóóóóüóüóóúóóóóóóðóóóðóó1‡‡*44*óðóðððóðóððóóððððóðóðððóðóðððóðóððòððððððÝÝððÝððððïðÑ133434*ÑÝÝßïÑðÑÑïÑÑïÑáïÑðÑðÑðÑÑÑÑÑÑÑÑÑÑÑÐÑÑÐÐÑÐÑ­°¦ÞÐÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFGFFGFGGGGGGGHGHGJGHJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþþþþþþþþþþþýþÿóóóúóóúóóó÷ò¬sj======$=$!==$!=!====!=====$====!====!=!===$===$======$$=====$=======$=============$===!=>==========>========>A=====>====================A>===>>====>=====>>=====A===$=====>===C>====>========>===========$=>================A==>=====A=====$======>=============>======================$===!==!=========!====!$$!=====$=====!$=$=!==!!$====$!========!======9!=!!$$!!!$!$$!!$=$$!!!!=$!!!=!!!$!!!!!!!$!$!!$$!!!$!!!!!!!!!!!!!!!!!!!!!!!!!  !! !!!!!!!!!!!!!!!!!! !!  !     $qªõþÿýÿýÿýþþÿþÿýýýþýýþýýýýýþýýýæÓ³³³³³³³³³³³³³³³³³³³¸³³¸³³³³³³³³³³¸³³³³¸³¸³¸³³³³³³³¸³¸³¸³¸¸³¸³¸³¸66566666666666666666666666i66666666666i666686666666666666666666666665666i6666666566666666666666666666666666666i666666666666i66666666%%%(%%%%'%%%&%% %% '%&%%%&%%%&%&%%%%% %%%%%%%6666666666i66666686i666666666i6666666666668i6666i5666i66666666i6666666i86666666666 % % % % % % % % % % %%56666666666666666666i666666666666666666666666666i66666666665i666666666i666666666i6666665666656666i666i666666666666666¸·¸·¸·¸·¸·¸·¸·¸·¸·¸·¸·¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸¸·¸·¸¸³¸¸·¸¸·¸¸·¸·····¸···¸·¸······¸···³·········³·³K³·³·K·³K³K·····K··KKK·KKKKKKK·K·KK·KKJ·KKKJ·J·JKKKKKKKJK·J·JJJJJJJKJJJJKKJKJJJJJJJJJHJHJHGGGGFGFFFFFDKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþüüüüüüþþþþþüþþþüþüþþþþþþþüþþþþüüüüüüüüüüþü1ŠŠŒ‡Œ+üüüüüóüööîöýö÷öõöõëìëõìõööóöóüüóüóúóóóóóóóóóóóóóóóðóóó)4‡*‡‡*óóðóóóðóóðóððóóóðððððóðððððòðððððððððððððÝÝðïãèðððððð*43434*ïÝÝÝððïðïðïïÑïïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÏÑÑÑÑÑÑ×°¦ÞÑÑÍ­+&+&&&&+KKKKKKKKKKKKKKKKKKFFFFFGFFFFGFGGGGHGHGHGHHGHJGJHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþþþýÿüúóóúóóú÷úóò¬ŽC==========$$$=======!==========!!====!====$===========$=======$$==$$==$=$$===$=======!=======>================>=$=====$===>==============>A===>=====>>======C===>========>===>=A>====>>A====================>>=======>================>=============>=$$=>===================$==>===$=>========$$=>=>==$!$$$=$==$$====$======$$!==$$========$!========$=$$===!$!$!!$!$$!$=$!!=$=$!$=!!!!!!==!!!$!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!! !!! !!!!       =p¥íþþÿþÿþÿþÿþþÿÿþþýþþýþýýýýþýýýæÓ·³³³·³³³³³¸³³¸³¸³³¸³¸³³¸³³¸³¸¸³¸³³¸¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸6666666566i66666666666666666i666666666i66666668666i6666666666666666666666666666666i666666i66666666666666666666666666666666i666666666%%'((%%%%%%%%%%%'%%%%%&%%%%%%%%%%%% %%%%%&%%(i66666666i666i6666666666666666668i6i6666i666666666i6666666666666666666i6i6666i666 % % % % % % % %% % % % % 66666666666i6666666666i66666666666i6i66ii68i666666666666666666i666i66666666666i666666666666666666666666666666666666666¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸¸¸·¸¸¸·¸¸¸·¸·¸¸·¸·¸·¸···¸·¸·¸·¸·¸····¸·¸·¸··¸·¸···············K··³··³·³·KK·K³K·K·KKK·K·K·KKKKKKKK·J·J·KKKJK·JKKWKJ·JJKJKJ·JKJKJKJKJJJJJJJJJJJJJJJHJHGJGGGGFGFFFFFFK³KKK³KKKKK³KKKKKKK+OOOOO+þþþþþüüüüüüüüþüþþüþüþüþþþüþüþþüüþüþþüüüüüüüüüþüü+ŠŠŠŠ‡1üóüüóüóõöýöõöýöõöõëõëëöõëîüõúóúóóóúóóüóóóóóóóóðóððóððð*‡‡*‡4*ððððððððóððòððóððóðóððððóðððððððððððððððïÝÝððÝèïðÑÑðÑ*44343*ÑÝÝÝÑïÑáïÑÑáïÑÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÍÑÍÑͰ¦ÔÍÍÍÍÔ+&&&&&&+K³KKKKKKKKK³KKK³K³EFFFFFGGFGGGGGGHGHGJGHHJGHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþþþþþÿ÷óóúó÷÷óóóóò¬m=!$!$$!$$$$!==!$$$$==!$!===============$$!$======$!===========!=C===@======>======>========$=====$===========>===>===>>=========>=>=========================>=====>=>C>==C=====A>=>========>>>C=======>=A==>>==>C=======>====>===>==========>>===========>===>====>A>=========$=====!=A======$===========$======$$==$==$==!======>=$!$==$==!$$==!=!=!===$!!==$=$!!!==$=!$==$!$!$!$$$$!!!=!$!==!=!!!$!!!!=!!$!!!!!!!!!!!!$!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!! !!!!     !! $s¥õÿþÿþþþþþÿþÿÿýýýþýýþýþýýýýýýþæÓ³³³³³³³³³³³³³³³³³¸³·³³¸³³¸³¸³³³¸³¸³¸³³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸6i666666566666666666666666666666666i8666666666666666666666666666666666666i6666666i6666666i66666666i666666666666668i66666666666i666666%%(%%%%%%%% %%'&%%%%'%%%%%% %%%%%%'%%%'%%%(566666666666666i6666666666666666666666666666666i6666666666666666666666686666666666% % % % % % % % % % % %% 66666i6666666i66i6i6666666666666666666666668666666666666666666666666i8666666666666666666666666666666666666666666666¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸·¸¸¸¸¸¸¸·¸¸¸·¸··¸¸·¸··¸·¸·¸·¸·¸·¸···¸·¸¸·¸·³··³··³·³··³·³··³·K·K³³K³³³K³·K³K³K·K·KK·K·KKKKKKK·KKK·J·J·JKKWKKKKJ·JKJ·JKJKJKJKJJJKJJJJJJJJJJJJJJJJJJJHJJGJGGGGGGFFFFFFKKKKKKKKKKKKKKKKKKK+4OOOO+þþþþþüþüþüüüþüþþþþþþþþþþþþüüþþþþüþüþþüüüþüüüþüüü1ŠŒŠŠŠ1üüóüüüüööööüöúöõëöëõëõëõö÷óöüóóüóóüóúóüóóóóðóóóóðóðóðó*4‡*‡‡1ðóóðóðóðóðóððóðóðððððóðòðððóðððóðððððððððÝÝðïãèððððÑð*43434*ïÝÝßðÑðÑðïÑïÑÑÑçÑÑÑðÑÑÑÑÑÑÑÑÑÎÑÑÑÑÑÑÑÑѦ°°ÌÑÍÑÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFFFEFGFFFFFGFGGGGGGHGHGJGHGJHGJGHHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþþþþýÿü÷óóúóóúóúóò¬o!!===!!!=$$!=$!$=$!===!===========$$====!!$====$=$$========$$==========>=A===>=====>==$==============>=>====>===>====A>>A=====>>>==========>=======>>>=>===C===>>=>>=>=>A=$=>==>=A>=A=======A=>=======>>>=>===CC>=>====>===A=======>>=$=>>=>====>==$=>====>======>C>$===!$=======>=$==>A===$====$$$================!$$=======>========$!!=!=!=$=$=$$====!!$$$$=!$=!$!!$===$=!!==!!$!!$!!$$====!!$!!!$=!!$$!!!!!!!!!!!$==!!!!!!!!!!! !!!!!!$!!! !!!!!!!!!! !!!!!!!!!  !! !     !!  ! =q¥íþþÿþÿÿÿþÿþþÿÿýþýþþýþýþýýþýýýæÓ³³³³³³³³³³³³³³³³³³³¸³³¸³¸³³³³³¸³¸³³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸³³¸¸¸6666666666i6666666666666666666666666666i66666i66666666666666666666666666666666666666666866666666i66i666i66i66i66i6666666666666666666('%%%%%%%%'%(%%%%'%%&%%%%%%'%%%%%%%%%%%%(666666666i66666666666666666666666666666i5i6666666666i666i6666i6666666666i6666666 %%% %% % % % % % ((666666666666666656666666666666666666666i6i66666i6666666666666i666666666668i6i666666666666666666666i66666666666666666666¸¸·º¸¸·¸¸¸¸¸·¸¸¸·¸¸¸·¸¸¸¸¸¸¸·¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸·¸¸·¸¸¸¸·¸···¸···¸¸··¸·······¸·······³··³···³·³··K··K·³·K·K··³K·K·KKKK·K·K·K·KKK·KKKKKK·JKKJKJ·JKKKKJJ·JKH·HJJ·HJJKJJJJJKJJJJJJJJJHJHJGHGHGGGGFFGFFDKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþüþþþüüþþüþþþþþþþþþþþüþþþþþüþþþþþþþüüüþüüüüüü1ŒŠŠŠŒ1óüüüüüüööúööö÷öõöõëöëõëõëöüîüóüóóúóóóóóóóóóóóóðóóóóóóó*‡‡)‡4)óóóóóóóðóðóóðóðóóðóðóððððóðððòðððððððððððÝÝððèððððððï134443*ðÝÝßððïðÑïÑðÑðïÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑØ°¦ØÑÑÑÑÍÍ+&+&&&&+KKKKKKKKKKKKKKKKKKDFFGFFFGFGFGGGGHGHGHGHGHHHGJHJHJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþþþþþÿ÷óúóó÷úóóó÷ò¬Žo=!$$$===$======$===!======$$===$$=$$===========$$=$=========$====$==$======>===>===$=================>=>======>>====>>==========>===A==>==>=====>======>=>=$=C=====>=$===>===>===========>>====>>===>>>===========>==>==>>===>==>==$>>==>>===>======>========$==========>=$>===$!=======>===$=>===$==========================!==$!$======$$$!===$!$!===$==$!$$!=====$=!=!$!!==!!!$$=!$!=$=!!$!$=$!!=$!$$!!!$!!$$!$$!!!!!!!!!$$!!!!!!!!!!!!!!!!!!! ! !!!! !!!!!! !!!!!!! ! !!       =s¥õÿþÿþþþþþÿþÿÿýýýþýýþýþýþýýýýýæÓ³³·³³³³¸³³¸³³¸³¸³³¸³³¸³³·³¸³¸¸³³³³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸³6i666i56666666666666666666666666i6666i8666666666666666666666666i66i6666566666666i666666i66666666666i66668666666666666666666666666666666%''%%%%%%%%'%%%'%'%%'%%%'%%%%%%%%%%%%%%66666666666666666666666666666666666i666666i66666i66666666i6i666i66666666i6i6666666666%%%% %%% % % % % % % % (666666666666i6666666666666666666666668i66665666i6666666i666666666666666666i666666666666666666i6666666i6666666666666666666º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·º¸¸·¸¸¸¸¸¸¸¸¸¸¸·¸·¸¸·¸·¸¸¸·¸¸¸·¸·¸·¸·¸·¸·¸··¸··¸·¸·¸¸··¸·¸·¸··¸··············³··³···K·K·K···K··KKKKKKK·K·KK·K·J·J·J··JKKWKKJ·KKJ·J·JKJKJ·JWKKJKJJJKJJJJJJJJJJJHJHGGGGGFGFFFFFFKKKKKKKKKKKKKKKKK³K+4OOOO+þþþþþüþþüþüþþüþþþþþþþþþÿþþüþüþþüüþüþþüüüóüüüüüüú1ŒŒŠŠŠ1üóüóüóüööîöýö÷öõöõëõìõëëöõü÷úúúóóóóóóóóóóóóóóóóóðóðóðó*4‡*‡‡*óðóðóðððððòðððððððððððóðððððððððððððïððððÝÝððððïðïÑÑÑ*344331ÑßÝàÑïïÑïáïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÞ¦°­ÍÑÍÍÐÎÍ+&&&&&&+³KKKKK³KKKKKKKKK³KEGFGFFFGGFGGGGGHGHGJGHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþþþüÿüóóóúóóóúóóò¬so!$=!==========$!$=$!==========$$======$======!$==!==$======$===============>=================>========>===>>=>AA=>=>=>==========>=>=>===>>===>=>A>==>========>C>=>===$===>C===============>====>>==>=CA========>>>A====>==>=>>=>C>======>===>======>>>====>==>=====$=======A=$==$==$=================$=======$==============$$!!$!$$$$====$======!!$$=====$$!======$===!=!!==!!$!!$==$!$===!!!!$$!==$=!!!!!!!$!$==!!!$!!!!!=$!!!$!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   !  ! =s¥íþþÿþÿþÿþÿþþÿÿþþýþþýþýþýþýýýýæÓ³³³³³³³³³³³¸³³³³¸¸³¸³³¸³¸¸³³³¸³¸³¸³¸³¸³¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸66666666666i666666i686666666666666i66666666666666666666666666666666666666i686666i8i6666ii666666666i6666666666i66666666666666666666666'(%%%%%%%%%%'%%%%%%%%%%%%%%%%%'%%%%%%%%6666666666666i6666i66666666666666i666666666666i666666665i66666i6i666666666666i6666666% % % % %%% % % % % % % % %%% % %5666666666i6ii6666666666666i666666i666665666666666666666i66666666666ii6666666666666i6666666668i666665i666666i6i66666666i¸¸·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸¸³¸¸¸·¸·¸·¸·¸··¸·¸··¸··¸·¸··¸·¸··³¸·³··³··³·³·³·³·³·³·³³K³³K·³³³K·³KK·KKKKKK·K·K·KKKKJ·JKKKKKKKJKJ·JKKJ·HKJKJKJJJKJJJKJJJJJJJJJJJJJJJJHJHJHGJGGGGFFFFFFFDKKKKKKKKKKKKKKKKKKK+O4OOO+þþþþþþþüüþþþþüþþþþþþþþþþþþþüþþþþþüüüþüþüüüüþüüüü1Œ‡ŒŠŠ1üüüüóüüõöýöööýöõöõöõöëëõëöüöüóóóüóóóóóüóóóóóóóóóóóðóóó*‡‡*‡4*óóðóóóðóðóðóðóððóðóðóððððóðóððóððóðððððððÝÝððèðððððïð*43443*ïÝÝßðÑáÑïÑÑÑïáïÑðÑÑÑðÑÑðÑÑÑÑÑÑÑÑÑÑÑÐÑÔ°°ÑÑÐÑÑÍÍ×&&&+&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFFFGFGGGGGGGHGHGHJGHGJGHJGJHJJHJHJHJJHJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýþþþþþþþþþþþþþþÿúóúóó÷úóó÷úò¬Žo7=!!===$==!====!========$!========================$=========>===========$$=========C====>>>==>==================>========>>==========>=>===>====>=>=>>=====>===>===>==>==>==?==>====>>===>====>=>====>>===>=====>=>=========>==========>=============>=====$=A==>======>====>=====>===============$$=========$===A==$=$$=======$=====!$====>=!$==!$==$$$$==$!=$$$$=!!==$=$$=$$=!==!!!!$!==!!$=!!!==!!!$!!$=!!!!!!!!!!$!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!  !!!   !     !=q¥õÿþÿþþþÿþÿþÿÿýýýþýýþýþýþýýýýýèÓ³³³³³³³³³³³³³³³¸³³³³³³¸³³³³¸³³³³¸³¸³¸³³³³³³¸³¸³¸³¸³¸³¸¸³¸¸³¸³¸¸¸666666666666656666666666666666666666666i6i6666666666666566666666i665i666668i66666666666i6666666666666666666686666666666666666i666666665%%%%%'%'%'%%%%%%%%'%%%%%%%'%%%'%'%%'%%666666666656666666666665666666666656666656666666666i666666i8656666666i66666666i566( %% % % %% % % % %% % %% %% % 666i6666666i6656665666666566666666i666666666665i666666668i6666666666686666665666i6666666666866666666666666666666666666666¸¸¸¸¸¸¸·º¸¸¸¸¸¸·º·º¸¸¸¸¸¸·¸·¸·¸·¸·¸·¸¸¸¸¸¸¸·¸·¸¸·¸¸¸¸·¸·¸·¸·¸·¸····¸···¸·¸·¸··¸·····³····³··K·K·³K³·K·K³³·K³³K···K·KKKKKK·K·K·KK·JK·KKKK·J·JKKJ·J·H·JKJ·KJKJJJKJJJJKJKJJJJJJJJJHJJHJHHGGGGGGFFFFEKKKKKKKKKKKKKKKKKKK+OO4OO+þþÿüÿüþþþþþþþþþüþþþüþþüÿüþþüþþþþüþüüüþüüüþüüüüüü+ŒŒŠŒŒ+üüüüüüüöýööüöõöõöõöõöõëõöõüõóóóóóóúóúóóúóúóóóóóóóóóóóó*4‡)‡‡*óóóóóðóðóóðóððóóðððððóðòðððððòðððððððððððêÝððâèðððððð*44344*ðÝÝÝïïïïÑïðÑïÑïÑÑÑðÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑØ°°×ÑÑÑÑÑÑÍÔ++&&+&&+KKKKKKKKKKKKKKKKKKEEFFFFGFGFFGGGGGGGHGHGHGHGJHHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýþþþþþþþþþþþþþþýÿü÷óóúóóú÷óóò¬so==========$$$===9====$!!=$$=========$=====!$==========A==>=>=========$$===========>====CCA>========>============>>====>==A>========>>====>>===>C==>C==>===>>=>===>>>>>>====>>>=>========CC=>====C===>C==>CC>====>>==============>>>>=========>>===C>>>======CCA==========$===>==>>>====$===================$====>===!$!!=>======>===========$!!!==!==$!!!====$!!!$=!$==!!$$!!!=$!=====!$$$=$!!!!!!$$$!!=!$$!!!!!!!$!$$$$!!!=$$!$!!!!!!!$!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !   !! !!q¥íþþÿþÿþÿýÿþÿÿÿýþýþþýþýþýþþýýýæÓ³³·³³³¸³³³¸³³¸³³³¸¸³¸³³·¸³¸³³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸³¸¸666656666666666666666666666666666i5666666i6666666i6566666666i6666665666666666666665666566666686686666666666666566i66i666666656666666%'%%'%%'%%%'%%%'%%%'(%'%'%%%'%'%%%%%66656666i56666656666666666i666666566666666665656566666666656666666666i6666666666686%% %% %% %% %% % % % % % % % % %% % % %%666665656566666666666666666666i66666666665666666i66666666666666666666666666666565666666666666666666666666666i666i5666i¸¸¸¸¸¸¸¸¸¸¸¸¸º¸¸¸¸¸·¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸··¸·¸·¸¸·¸·¸·¸¸··¸¸···¸··¸··¸·················³··³··K³·K·³K·K·K·K·K·KKKKKKK·J·J·J·JK·JKKJ·JKKKKKKJ·HKJJKJKJKJKJKJJJJJJJJJJJJHJHJGHGGGGFGFFFFFFK³KKK³KKK³KKK³KKKKK+O4OO4+þÿüþÿþÿÿüþüþþþþþþþþþþþþþþþüüþüþüþüüüüüþþþüþüüóüü1ŒŒŒŠŒ1óüóüüóüöö÷öööúöõöõöõöõëõöîüõóóóóóóóóúóóüóóóóóóóóóóóðóð1‡‡*4‡*òðóðóðòðððòððóððòðóððððððððððððððððððððððÝÝððÝððïðÑÑï*43443*ÑݰØÑáÑÑáïÑÑÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ×°¦°ÑÐÍÑÍÍÍÍ­+&&&&&&+K³KKKKKKKKK³KKKKK³EEFFFFFFFFGGGGGGHGHGJGJGJHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿýþþþþþþþþþþþþÿ÷óóúóóúóóúóò¬o$=!$===!=====!==========$$=====!===$============>=====>=$=>=======>>====>>===>=======A===>======>==>=>>====>>=======>====>====>=====>==>>=====>===>=======>====>======>=======>=>====A>====>>=>===>===?=======>====>==>==>====>>=====>>=======>A=$=>===========>=====>>=====>================================================$=$===$=======!===$===$$==$===!!$=====$$==!!=====!$$=$!$!!=$!!$=!!$=!!!!!!$$!$!!!!$!!!!$!!!!!!!!!!!$!!!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!    !    !=s¥õÿþÿþþÿþÿþÿþÿýýýþýýþýþýþýýþýýæÓ³³³³³³³³³¸³³¸³³¸³³³·³³¸³³¸³³¸¸¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸656666i665666666666666666665665666666666666665666665i6i66668665656666666666666666666i66666666i666666666666666666666666666666666656666i8666(%%('%%'%'%'%%'%%'%%%%'%%%%%6556666i66666666666666666666666566666666666666666666666i6666666666666666666i666666i666666(% % %%%% % % % %% % % %% % % %% % % %% % i6666666666666666656666666666666i666666666656666666666666666666668666666866666566i6666666666666666656666666666i86666i86¸º¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸·¸¸·¸¸¸¸·¸··¸···¸····¸····¸·³·¸³··³·····³·³·K³·K·³·K³·K³³³³³K·KK·KKK·KKKKKK·K·K·KJ·KKJ·KKK·J·JKKWKJKJKJKKJJJ·JJJJJJJJJJJJJJJJJJJHJJHJGHGGGGGFFFFFFDKKKKKKKKKKKKKKKKKKK+4OO4O+þþüÿþÿþÿþþüþþþüþþþþþþþþþþþüþþþþþüþüþþþþþþþüþüüüú1ŒŒŒ‡Œ1üüüüüüüüöüöýö÷öõöõöõëõöõö÷óóóóóúóóóóóóúóúóóóüóúóóóóðóó)4‡*‡‡1óóðóóððóðóðóðððóðððóðóðóðóðððððóðððòðòðððêÝððãèðððððð*44434*ð°ÝÝïÑïïÑÑðÑðÑÑÑðÑðÑÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÔ°°ÐÑÑÐÑÑÑÑÍÔ+&+&&+&+KKKKKKKKKKKKKKKKKKFFFFFFFFFFFGGGGGGGHGHGHGHGJHGJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþþþýÿüú÷óóúóóúóóòÕo=!=!$=!!$=!=$!$==============$=====!=====$=====>C=$=======>======>AA====>=>>>===>=>=>C>==========>=>=>A>==>AA>>==============>=>>>>>====A>=========>=>>==>>====CC>====>>>>=====>=====>A>====>=>===>===>A>====AA>>===>==>>======>>=====A>=C=====A================>>==>C>=====>===>==$$==>========$==>==$========$=>=>==========$!====$!!$==!=$!!!!====!=!!$==!!===>=!!$=====!!=$!!===$!!==!!!==$=$!!!=$!!$======$!!!!!!!!!$=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!! !!!!!!!  !!!!!!!! ! !    !  $qªíþþÿþÿþÿþÿþÿÿÿþþýþþýþýþýþþýþýæÓ³³³³³³³³³³³³³³³³¸³³¸³³³¸³³¸³³³³³³¸³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸¸¸³¸¸¸¸¸¸¸6i6666566i66i6666666656i666666666666i6666666i6656i6566i8666666666668666666666666666668i6666665666666666666566656666666666666666666666666666565%%%%%'%%)%%%'%%%%%'%%%%66i66666666666666i6666668665666666666666666i6666666666666666666666666666666666666666666ii66( % %%%%% %% % % %% %% % % % % % %56% (666566666656i666i66666666i65i66666666666566666668656665666666666666666666666566666i666i665665668666i666665666666666¸¸¸¸·¸¸º·º¸¸¸¸¸¸º·º·º·¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸¸¸¸¸¸¸³¸·¸¸·¸·¸·¸¸·¸¸·¸·¸¸··¸¸·¸·¸¸·¸··¸··¸·¸····³·³·³··K··K³·K·³K³K³·K·K·KK··K·KKKKKJ·KKKK·J·JKKJKKKJ·JKKWKJ·HKJ·HJJJKJKJJKJKJJJJKJJJJJHJJHJGGGGGGFFGFFFFKKKKKKKKKKKKKKKKKKK+O4OOO+þþþþÿþÿþþþþþþþþþþþþþþþþþþüþþþþþüüþþþþþþþþþþüþüüü1ŒŒŒŠŒ1úüüüüóüöýööööýöúöõöõöõëõööó÷÷óóóúóúóóóóóóóóóóóúóóóóóóó*‡‡*4‡)óóóóðóóóóðóðóðóðóóóóóðóðððòðóðòððòðððððððÝÝððêâðððððð*43444*ïݰÝïáïÑïïÑÑÑÑÑðÑÑÑÑðïÑÑÑÑÑÑÑÑÑÑÑÑØ°¦ßÑÑÑÑÑÑÑÑЭ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFGGFGFGGGGGHGHGHGJGHHHJHJHJHJJJHJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþþþþþþþþþþþþþÿóóóúóó÷÷ó÷÷ò¬Žo==$=$==$===$=======$$9===$======================>=======================================>=>=======>=====>=>>====>>==>>====>>===>===>===>=>===>=>>====>>===>==>=>A===>===>>===>>=====>>=>==>>====>A====>C>>===>======>====>====>>=======>======>=>==========>>========>====>===>>=================>====$=$=========$====$$=====!========$!=============$$==!==$$$$=$!=!$=$=$==!==!=$$$=$!$!!=$!$!!$!!!$=!!$!!$!!!$!!!!!$!!$!!!!!!!!!!!!$$!!$=!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!    =sªõÿþÿþþÿþÿþÿþÿþýýþýýþýþýþýýþýþæÓ·³³³³³³³³³¸³³¸³¸³³¸³³¸³³¸³³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸³¸³¸¸¸¸³¸¸¸¸¸³¸³¸¸i56666656666666666666666666666666666666666i6656i66666i66666666666i66666666666666666666666666665666666668666566666i666665666666666666666666566655%%%%'6%%'%%'%%%%%%6i666666666656666656666666666666666666666666666i66666666566666666666666666686666666i6i66666666566%%% % %%% %% %% % % %%% % %%%%% %%65(5666666i66666665666666666i866666686i666666666656666666566666665666i666666665666i86666i6666666i566666666566666666666i66º¸º¸º¸¸º¸¸·º¸¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸·¸¸·¸·¸¸·¸·¸·¸··¸··¸·····¸··¸·······¸····³·········³··³····K·³K·K·KKKK·K·K·K·KK·KK·J·J·KKJ·J·J·J·JKKKJKJ·J·JJJKJKJJJKJJJJJJJJJJJHJGHGGGGFGFFFFDK³KKKKKKKKKKK³KKK³K+4O4OO+þþþüÿþÿþþþþþüþüþþþþüþþþüüüþþþþþüþüþþþþþüþüüüüþüý*ŒŒŒŒŒ1üóüüüüüüöúöööõö÷öõöõëõöõöõ÷÷óóóóóóóóóóóóóóóóóóóóðóóðóð*4‡*‡‡*ðóðòðððððóððóðððóðððððððóððððððððððððððððêÝïðßèÑðÑïïÑ*44434*ÑÝÝØÑÑïáÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÑÑÞ°°­ÍÑÍÑÍÍÑÍÎÍÔ+&&&+&&+³KKKKK³KKKKKKK³KKKEFFFGFFFFGFGGGGGHGHGJGJGHJGJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþÿþþþþþþþþþþþüÿüúóóú÷óóúóóò¬j!======!!==$$===========$!$======$==========$===9=$=>==========A>=====$$==>=====>===>======>==>>>=========>=>====A>>====>=>C>===>======A>=====>C>>>=======>>==>>>>=>>====>>>A>=C>==>>=>=====>>>>==>>C>==>=>>==>>>=======>CA>>>>=============>>====?==$=======>=$=>>>====>==C>>=>>==>====>====$====>>====$===========$====$========>========>>>=======>>=======!!$$$==$!!$==!===!!!!!$====$!!$===$!!!$!!!!!!!==$$==!!!!!!!!!!$!!!!!!$!!$!!!!!!!!!! !!!!!!!! !!!!! !!!!!!!!       !  =}ªíþþÿþÿþþÿþÿþÿÿýþýþþýþýþýþþýþýæÓ³³³³¸³³¸³³³³¸³³³¸³³¸³³¸³³¸¸¸³¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6686666656666666666666666666666666666666i6665i666666666666666666666666666i866i56666666666566666666i6666666666666656666666566666666666666666666665%%%%665%%%%%%%%%%55666i66666666666566666666666665666566666666i66i666666666666665665666666666666666666866666666666%% % %% % % %%% %% %% % %%%6666666666666666666666666566ii8ii6666666668666666666i6666i656666666666666666666666656668686866666666666666666566666666666666¸¸·º·º·¸¸¸º¸¸¸¸¸º·¸¸¸¸º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸··¸·¸¸¸·¸··¸··¸·¸³¸·³¸·³·¸³¸··³··³³·³³·K·³·K·³³K·³KKK·KK·K·KK·K·KKKKKKKJ·JKKJ·J·JKWKKKKKJKJKJJKJKJJJJKJKJJJJJJJJJJJJJJHJJHJGHGGGGGFFFFFEFFKKKKKKKKKKKKKKKKKKK+4O4O4+þþþþüÿüþþþþþþþþüüþüþþþþüüþþþþüþþüüþþþþþþüþüüüüüü1ŒŒŒŒŒ+üüüüüüüöýîýöö÷öõöõöõëõöõööóö÷óóúóüóóóóóóóóóóóðóóóóóðóó*‡‡*‡4*óðóððóðóóðóðððòóðóðòðóðòðòðòðóðóðððððððððêÝððÝððððÑðÑ*44443*ïßÝßïïðÑïÑðÑÑÑðÑðÑïÑÑðÑÑÑÑÑÑÑÑÑÑÑ­°°ÑÑÑÑÑÑÑÑÑÍÍ­+&&+&&++KKKKKKKKKKKKKKKKKKEFFFFFFGFFGFGGGGGGGHGHGJGHJGHGJHJHJJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þÿþþþþþþþþþþþþþÿýúóóúóóúóóóúò¬o=$===>=========$=====$==============================>===============>>=====>=====>===>==>==>===C===>===>=>=>=====>==>==>=>>====>C===>=>==>>===?=====>==>==>A===>=C=======>=>=>>A>=>>>===>=>=>===>==>>==>=>====>=>==>====A>==>=======>>==>>====>>===>===>=====C>$=C>=>=======>=>=====>===C======================================$=$=$========!==!$==$===$$$$==$$===!==$==!=$===$$$===!$====!!==9=!$!$!=!$$!==CYCYCZ@ZZZBBZZZCYCBBZZCYBBZZ@BBYBBCZZBBBBYBZ@@BZBBB@@ZBBB@B@BBB@BBB@B@BBB@@@CBBB@@B@@@@@B@@B@@@@@B@@@@@@@@@@@@@@@@@@@@@@@;@@@;@@@@@@@@@;@;;@@@@;;@;;;;@@;;;;;;@@@@;;;;@@;;@@;;@@;;@;@@@;@;@;;@@;;;;;@@@;;@@@@;;;;@@;;@@;;;;@@;;@@@;@;;;;@@@@@;;;;;@@;@;@;;@@!! !     wªõÿþÿþÿþÿþÿþÿÿþýýþýýþýþýþýýþýþæÓ³³³³³³³³³³³³³³¸³³³³³¸³³¸³³³³³³¸³³³¸³³³³¸³¸³¸¸³¸³¸¸³¸¸¸¸¸³¸¸¸¸¸³¸66666666666666666666666666566666666i5i666666666666566666566666566i6686i66665i66i65666666665666i66666i66568666i5656566666i665666i66666666666666665(%(66665%'%(((((i86i56666666666i66666666i6i666566666i666666666666666566666666666666666666i66666666666686666666666i666%%% %% %%%% % % % % % % %% % 66666i66i66568i6666666665ii6666666666i8i666666666666666666666666666656666666666666666i666666566866656666666666666686666666¸º¸¸º¸·º·¸¸¸¸¸·¸·º·º·¸¸¸·¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸···¸·¸·¸··¸·¸··¸··¸··¸····¸·····³³··³·K·K··K³·K·³³³K³·K·K·KKKKK·K·K·K·K·J·KKKKKK·JKJ·JKKJ·J·JJJ·JJJJJWKJKJKJJJJJJJJJJJHJHJHHGGGGGGFFFFEKKKKKKKKKKKKKKKKKKK+O4O4O+þþþþþþþþþþþüþþþþþþþþþþþþþþüÿþþþüþþþþþþþþüüüüóüüü1ŒŒŒŒŒ1üüüüüüüüöýöýöõöõöõöõöõöõö÷úõüóúóóóóóóóóóúóóóóóóóóóóóóó*4‡)‡‡*óóóóðóóðóóðóóðóðóðóððððððððððððððððððððððêÝððãèðððððï*4444P1ïÝÝßáðÑðÑÑÑÑðÑÑÑÑÑÑÑÑÑÑïÑÑÑÑÑÑÑÑ×°°×ÑÑÑÑÑÑÑÑÑÑÍÔ++&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFFFGFGGGGGGGHGHHGHGJGJHJHJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþÿþþþþþþþþþýÿü÷óóóúóóú÷óò¬so=!$======!====$!===$$===>==$!===@==$=>>==========>======>====>=======A=======>====>=====>======>>=>=>===>=>=====>=>====>>A=====>>>>======ACC>=========>AC=>>=====>AC====>A==>=>CC>>C?==>>>>>==>>>>==>>=======>=====A>======>=>=>=>>>>CC>C=====>=====>>=>>=>>======>======$=>====$==>====>>>==>>========A=>>===============>=======$======$===$$====!!=!====$$=====$!$=====$==$!!==$$=!$=!=!!==!==!!!!$!ZÉááááááßáßáßááßáááááááßáááááááßáßáááááááßáßááÏáßáßááááßáßáßáßáááßáßáßáßÑßáßÑßááßÑßááßÑßáßáßÏßááßáßÏáßÏáßÑßÏßÏÏÏÑßáßáßÏÏßÑßÏÏÏÏÏßÑßÏÑßáßÑßÏÏÏÏßÏÏÏÏÏÏÏÏÏÏÏßÏÏÏÏÏÏÑßÏÏÏÏáßÏÏÏÏÏÏÏÏÏÑßÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÑßÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏßÏÏÏÏÏÏßÏÏÏÏßÏÏÏÏÏÏÏÏÏÏÏÏßÏÏÏÏÏÏßÏÏÏËÆ–„‚x_Y!  !   =qªõþÿþÿþÿþÿþÿþÿÿþþýþþýþýþýþþýþýæÓ·³¸·³³³³³³¸³¸³³¸³¸¸³³¸³³¸³³¸³¸³¸³¸³¸¸¸³¸³¸¸¸¸¸¸¸¸¸³¸¸³¸¸¸³¸¸¸¸¸¸666666i5i6666i66666i66656666656666666566666666666666666666656666866i666i865666i6666666665666666565666666666666666666566666666i666656665666i666666666666(%%666666i8668666566i5668666i666i66666i66686866i66666i66566i66666666666666666656866666i666666666666666666i %% %%% % %% % % %%% %% % % %% 5666666666666666666666656i866666566666666i66656666566666866665656666666666666666666i6866666i666i6666666666666666666566i6¸º¸¸¸º¸º¸º¸º¸¸º¸º¸º¸¸º¸¸º¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸¸¸·¸·¸·¸·¸··¸··¸··¸··¸·¸····················K··³·K·K³·K·K··K·KKKKKKKKKJ·KJ·J·JKKKKKKKJ·J·JJKJ·HKJKJKJJKJJKJJKJJJJJJJJJJJHGJGGGGFGFFFFFFKKK³KKK³KKKKKKKKKKK+4O‡OO+þþþüþþþþþþüþþÿüþþþþþüþþþþÿüþþþþüüþþüþþþüüüüüüüüü+ŒŒŒŒŒ1÷üóüóúüöüöö÷öýöõöõëõöõöõöõóöóóóóóúóóðóóóóðóóóóðóóðóðóð1‡‡*‡4*ðóððóððóðððððððððððóðòðððððððððððïÑðÑðÑðÑÝÝðÑêèÑïÑðÑá1P4O44*áØÝßÑÑÑÑÑÑÑÑÍÑÑÑÑÑÐÑÐÑÐÑÎÑÐÑÍÑÍ×°°­ÍÍÑÍÍÍÍÎÍÐÍÍ­+&&&&+&+K³KKKKK³KKKKKKKKK³EEFFFFFFGFGGGGGHGHGJGHHHJGHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþÿþþþþýþþþþþþÿþúóúóúóóúóó÷ò¬Žo==$======$=====$========================!=======>=======C=$=====$=======C>==>A=====A=>===>=====>=======>=====>===>>=======>=>>===>>=>====>>==>>=>=>>==>>=>===>==>=>C>>==>C=>>==>===>=>=?>====>>=>===>=>=>>>====>>>>>===>==>=>======>==>==>==>>==>>===C=====>=====>====A===$==>A===>=======A=====>======>============================$$====$==!=====$====>==!===$!===!===$$!=====!$==!$$!==!$$$==!$$=!!==!!$=xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþñÎ…_B;   !! $sªõþþÿþÿþÿþÿþÿÿþýþþýýþýþýþýýþýþæÓ³³³³³³¸³¸³³³³³¸³¸³³³¸³³¸³¸¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸66666666566ii6668666666666i666666656666666666666666666i66665665666666666666666666666666666666i666656666666655666666666666656666666566666666666656i666666i6666666666666686i666i666i666i656666666666666i66i8666666i6566666666566i66666i5i66666i66666666666656666666i666((%%%% % % %% %% %% % % %% %%% %%% 66566666666666i566666666666i6666i666686i666666666i666666666i56666666666i56686566666666666666666665666666666666666566666i666¸¸¸º¸¸¸¸¸·¸¸º·º·¸·º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸³¸¸¸¸·¸¸·¸·¸·¸··¸··¸·³¸·³··³····³·³³K·³·³·³·³³³³·K³³K·KKK·KKKKK·K·K·K·K·KK·KK·J·KJKKWKKKKJKJ·JKJKJ·JKJKJJJJJJJJJJJJJJJJHJGJHGGGGGFFFFFFDKKKKKKKKKKKKKKKKKKK+O‡O4O+þþþþþþþþþþþþþþþþþþþþþþüÿüÿþþüþþüþþþþþþþüüüüþüüüü1ŒŒŒŒŒ1úóüóúóüööýöýö÷öõöõöõöõöõööúöóúóóóðóóóðóóóóóðóóóóóóóóòó*‡‡*‡‡1ððóðóðóóðóðóðóðóðòðððððóððððððððððïðÑððÑðÝÝïðßèðïÑÑïÑ*444431ÑÝÝØðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÑÑ­°°ÑÍÑÍÑÍÑÐÍÐÍÍÍ­+&&+&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFGFFGFGGGGGGHGHGHGHGJHGJGHHJHJHJJJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýþþþþþÿþÿþþþþþþýÿüóóóó÷÷óóúóò¬Žl$$=$==$========!$==A>============>============>===>=>==>C==>=======>>===CA==>>=>>>=>===>==>=====>=>===========>=>>=>>===>==>AA>=>>>C>=>>======>>===>=>C===>=>=>=A>=CC>>>C>==========>===>====>>>==>>==>>>CC>===>CA>=>>>>>>>==>>>=>===>==>CCCC>=>A>C==>=====>>===>>=$=>=======>===>>>============>>====>=>========================$===$=$$==$$===$=$$=A====!!===$==$===!=$!$!===!!=$!!$=!!!$==!!!==$=======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüñË‚@! qªíÿþÿþþÿþÿþÿþÿÿþþþþþýþýþýþþýþýæÓ³³³³³³³³³³³¸³³³³³³¸³¸³¸³³³¸³³³¸³³³¸³¸³¸³¸³¸¸³¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸666666656666666666i6666566666666666866i666666666566665656i6666666666666666666666666666666665i6666i66665666666666666666666566666566666666666666666566665666666i666i666666666666666i66i66666i6666666666666666666666i68668i6666666666656665666686668668666666i66666668655% % %%% % % %% % % % % % % %%%6668656666i6666666666666665666i666666666i68666666666666666666666666666566668566665666666666i66666666666656656666566666i666665¸¸º·¸¸¸¸º¸º·¸¸·º¸º¸·º¸¸¸·º·º·º·º·º·º·º¸¸¸¸¸¸¸¸·¸·¸·¸·¸¸¸¸¸¸³¸·¸·¸··¸··¸·¸··¸··¸··¸·¸··¸···³··³·³·K·K··KK·³KK·KK³·K·K·K·KKKKKKKKJ·KKKKKKKJKK·JKKKJKKKKJKJ·HKJJJJJJJKJJJJJJJJJJJJJJHJHGHGGGGGFGFFFFFKKKKKKKKKKKKKKKKKKK+4O4O‡+üþþþþþþþþþþþþþüþþþüüþþüþÿüþüþüüþüþþüþüþþþüþüüüüó1ŒŒŒŒŒ1üóúóúóóöö÷öýöõöõöõöõö÷öõöõóö÷úóóóóóóóóóóðóóóóóóóóóóóóó1‡‡*‡4*ððóóðóðððððððððððððòðððððððððððððïðïðïðÑïÝÝèïêÑÑáÑïÑÑ*44443*ÑÝÝÝÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑ×°°ÞÍÍÍÍÐÍÍÐÍÍÍÍË×+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFGGGGGGGGHGHGHGJHHGJHJHJHJJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýÿýþþþþþþþþþþþÿþúóúóúóóúóó÷ò¬Žj=!========================================>===C===================>>=>$=A>==>=====>>=$==>>>====>=====A>>>====>=====>===>>==>>===>==>C==>=>==C=>=>>=>==>=>>====>=>=>>>=>C==>>=C=>==>====C>=>=>>>==>>==>>=>>>>=>==>=>>C>====C>==>>>>==>===>>=====>===C=>===>=====>=>=$=>>=>====>>===>==>=>====>============>=====>===================>=$=============$=>==$==$!====$!====$$$=$=====!=!===!!=$$=!$$$$!$$$$==$=xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá‚Y!    !qªõÿþÿþÿþÿþÿþÿÿýýþþþýþýþýþýýþýþæÓ³³³³³³³³³³¸³³¸³¸³¸³³·³³¸³³³¸³¸³¸¸¸³¸¸³¸¸¸¸³¸¸¸³¸¸¸¸¸³¸¸³¸³¸¸¸³¸¸66i65665665656656665666666566666666666666566666666666666665666665666666666666566656666566666i866666666666666666566666668i6666666666i66666666866656i56666666568i66865666666666666656666666666666i666666666666666666666656666665666666666666666666i56666666i666666665666i(%%% %%%% % %%%%% % % %%%% %%%%(6666666656666666566666566666688666666666666i65666i666666666665666666666666666666866656666666565i6i5686666666666666666656i6666º¸¸º¸¸º¸¸¸º¸º¸º¸¸º¸º¸¸¸º¸º¸¸¸º¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸·¸¸·¸¸·¸··¸··¸··¸·¸·····················³·³·³··K·K·K·K·K·K·K·K·KKK·K·J·K·JKKKKJ·KWKKWKKKJ·J·J·J·JKJKJKJJJJJJJJJJHJJGJGHGGGFGFFFFDK³KKKKKKK³KKKKK³KKK+O4O4O+þþþþþüþþþþþþþüüüþþüþüüþþþþþüüþüþþüóüüüþþüþüüüüüü)ŒŒŒŒŒ+úóúóóóóööõöõöõöõöõö÷öõöõöõóõóóóóóóðóóðóóðóóðóðóðóððóðñ*‡‡*‡‡*ðððòðððððððððððïðððððððððÑðððïðïáÑÑðÑÑÑÑÑÝÝïÑßÑÑÐÑÎÑÑ*44444*ÑØ°ßÑÑÑÑÑÐÍÑÍÑÍÍÍÑÎÍÍÍÐÎÍÍÎÍÍͰ°­ÍÍÍÍÍÍÍÍÄÍÍÍÍÍÄ+&+&&+&+³KKKKKKKKK³KKK³K³KFFFFFFFFFFGFGGGGGHGHHGJHHGJHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþÿþþþþþþýÿþþþþýÿü÷óóóúóóúóóò¬l=$=!$==============$===$$!$==>=$=====$$==>=>==>===>>============>=A=====>==>===$===========AA>>C===>>>ACACA>>=>>>=>>=>>>>>==>=>=====>>>===>=C>>>AC>>>>>>CC>>==l==>========CA=>C>>=====>>>=>C>>>==>>==>>==>=>>>=>=>=>>=====>C>=>==A>=>>===========>>>C>>>====>=>>>====CC=>CC>=A>>>===>>==>==>>==$===>========$$==>=====$$==$===========>>==========$$===$$!========$==$=!====$!=$===!$===$=$=!$$==!$$!!$$!$!xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð–Y !  ! =sªíÿþÿþÿþÿþÿþÿÿÿþþþþþýþýþýþþýþýæÓ³³³³³³¸³³¸³³¸³³·³³¸³¸¸³¸¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6666666565666i5666566666656666i6866666666666656i6856666666666666666666666866556666666665565668666666666666666666i6656686665666566666i656668666666666i656686i6656i6666i566666566566666665666665656i65666666666666666566666666866566566666i6666666666666666665i66665666665% %%% %%%%%%% % % %% %% %%% %% 6(6i86665666666556666665666666666656666685686666656666666666666566565i6666665666668i866666666666666666666566655666i66666656¸¸¸º¸º·º·º·º¸·º¸¸¸¸¸¸¸º¸¸¸¸¸º¸¸¸¸¸º¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸³¸·¸·¸···¸··¸··¸··¸³··³¸··³·³··³·³³³·K³³·³·K·K³K³KK³K·KK·KKKKKKKKKKK·JKKKKKJKKKWKJ·JJKJKJKJKJJJJKJJJJJJJJJJJJJJJJHJJGJHGJGGGFFFFGFFFFKKKKKKKKKKKKKKKKKKK+O‡OO4+þþþþþþþþþþþþüüþüüþþüþüüüüüüüüþþþüüüüüüüüþþüüþüüü1ŒŒŒŒ1úúóúóóóööýöööõöõëõöõöõöõööðöóóóóóðóðóóðóóóóóóðððóðóðóð1‡‡*‡4*ððððððððððððððððððïðððððððïÑððÑðÑÑðÑÑðÑÑÑÝÝÑÑÑÑÑÑÑÑÑÑ*44444*ÑØÝØÑÑÑÍÐÍÐÍÐÍÐÑÍÐÍÐÍÐÍÐÍÐÍÍÍ®°°ÍÍÍÈÍÍËÍÈÍËÍÈÍÍÄ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFFGFGGGGGGGGJGGJGHHGJGHHJHJHJHJHJJJHJJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþÿþÿþÿþþþþþþÿþúóóú÷óóúóóúò¬o=====================>=======A===>=>========>=======$=>=====>=====>>==>=>=>=>>===>=======>>>>=>A===>>===>>>>===>=>>=>>=>>=>>>===>==>>>=>>=A>=>==CA======>>>===A>=>=A==>>>=>=>=A=>==>>==>===>=>>==>>>===>>==>>A>==>>>=>>==@C>====>=>=CA=>==>C===>>>==>=>C====>=>>==>==>>==>A=>==>=>>====>A===>==============>=====>====$$=>===>=$=============$$>====$==========$=$!=$===$$$=$===!$$$===$=$!$==!!$$$$$!$$!!x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ„;! ! 9qªõþÿþÿþÿþÿþÿþÿþþþþþþþýþýþýýþýþæÓ³³³³³³³³³³³¸³¸³¸³³³¸³³³³³³¸³¸¸³¸³³³³³¸³¸³¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸666666666666656i566666666i6656666665665666666566666666666666665666666666665666665665666666666666666656666666i66665666i666666666i6666665666i66666566665666668666666666656666656656i666666566665665665666666565666566866666i5566i6i6666666666666665665666566665656656666666 % % % % %%%%% %%%%% %% % %%% %(66666666666665i666666666666666i86656666866666i666666666i65665i6866666666568i66666666666666565666666666656666666i66666666i66¸º¸¸¸º¸º¸¸¸º¸¸º·º¸º¸º·º¸¸¸·¸¸·º·¸º·¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸¸¸¸¸¸³¸³¸·¸¸·¸·¸··¸·¸¸··¸·¸···¸···³··³·³·³··K···K·³·K··K·K·K·K··K·K·K·KKK·J·J·KK·JKKKKJ·J·JKKH·JH·JJJJKJKJJJJJKJJJJJJJJHJJGJGHGGGGFFFEFEKKKKKKKKKKKKKKKKKKK+‡4O‡O+þþüÿþþþþþþüþüþüþþþþþüüüüüüþüþüþüþüüüüüüóüüþüüüüü1ŒŒŒŒŒ1óóóóóóóööõöööõöõöõö÷ö÷ìõëëóëóóóóóðòðóðóóóóóóóóóððððððð*‡‡*‡‡*ððððððððððððððððïðÑÑïðïðÑïÑðÑïÑÑÑÑÑÑÑÑÑÑÑÝÝÑÑßÑÑÑÑÑÑÑ*44444*ÍØÝ×ÑÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ×°°ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÄÄÌ++&&+&&+KKKKKKKKKKKKKKKKKKFFFFFFFGGFFGGGGHGHGHGHHGHHHHJHHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþýÿýþþþþþþþþþþþýÿüúó÷óú÷ó÷÷óò¬Žo========$====$=========!$====>>==>CAA>=>>=============>>C==CCA>>===>=========>>>>>==>>>>=>======>=======>>>=>>==>=====>>>===>=>>A====>===>>>=A>>>>ZCZ]xxz{x{zx{zz{{{x{{ƒ{{xx{{yx{z{{ƒ{xx{z{z{xz{xx{z{xxz{zxx{{{{xxxxxx{{{{{{xxyx{xx{{{xz{x{{{x{xz{xxzxyƒ{{{xxxxzz{{{xzxxxz{xxxxxxxzxxxxz{{xxx{xxxz{xxxxx{xxzx{zxxxx{{zxxx{zxz{xxxxxxxxxxzz{zxxxzxxxxxxxx{zz{xxxxxxxxxxz{xxxxxxxxxxxzxx_xxxxxxxxxxxxxxxxxx_xx–ñüúú÷ú÷ü÷úúúú÷úú÷ú÷ú÷ú÷úú÷÷÷÷ú÷ü÷÷ü÷÷÷ú÷÷÷÷úú÷ü÷÷÷úú÷ü÷ú÷÷ü÷ú÷÷ú÷ú÷÷ü÷ú÷ú÷ú÷ú÷úúú÷úúú÷ú÷ú÷ú÷÷ü÷÷ú÷ú÷ú÷ú÷ú÷ú÷ú÷÷÷÷ú÷ú÷÷ú÷úú÷úú÷÷÷ú÷ú÷úúú÷÷÷ú÷ú÷ú÷ú÷ú÷úú÷÷÷÷÷÷÷÷÷ó÷÷÷ó÷÷ú÷÷÷÷÷÷ó÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úú÷ú÷÷÷÷÷÷óó÷÷÷ó÷÷÷÷÷ó÷÷÷÷÷÷÷÷÷÷÷óú÷÷÷÷÷÷÷÷÷÷ó÷÷÷óü÷÷óüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈY  ! $p¥íÿþÿþÿþÿþÿþÿÿÿþþþþþþþýþýþþýþýæ×·³¸³³³³¸³³³³³·³³¸³³³³¸³¸³¸³³¸³¸³¸¸³¸¸¸³¸¸³¸¸³¸³¸³¸³¸¸³¸¸¸¸¸¸¸¸¸¸666566666666666666666666666668i6686656668665666666666666666666665656666666856666666666565656666566666666566565i566656866666566566566666666666668i66666i6566i5686666666i6566656666666668666666686666666666666666656666856566i6656666666565666666666666666666666i6666565 % %% %% %%%%% % %%%%%%%% %%( 6666668i66666656856i6665666666688666666666i6565666666666656666666666666666566666666656666656565i666666666666666666666i66656¸¸º¸º¸¸¸º¸º¸º¸º¸º¸¸¸º¸º¸º¸º¸º¸º¸º¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸³¸¸¸¸¸¸·¸·¸·¸·¸··¸···¸·¸·¸····¸·············³··³·K·³K·³³K·K·KKKKKKKKKK·KKKKKKKKJ·JKJ·JKJK·J·JKJ·JKJ·JJJJKJKJJJJJJJJJJJHJHGHGGGGFGFFFFFFK³KKKKK³KKK³KKKKK³K+4O4O‡+üþþþþþþþþþüüþþüþÿüþþüüüüüúüüüüüþüüüóüüóóúóüüüóüó1ŒŒŒ‹Œ1òóóóóóóõî÷îööõöòöõöõöõëòëìðëðóóóðóððòðóððððððððóðòðððð*‡‡*‡‡*ðÑðÑÑÑðÑïÑððÑáïÑÑÑÑÑÑÑÑÑðÑÑÑÑÑÑÑÑÑÍÑÑÑÑÍÍÝÝÑÍßÞÍÐÍÐÍÍ*44444*ÍØ­ØÍÍÍÍËÍÈÍÈÍËÍÍËÍËÍËÍÄÍÄḬ́°×ÄÍÄÍÄÄÄÄÄÄÄÄÄÄÄĦ+&&&&&&+K³KKK³KKK³KKKKKKK³FFFFFFFFFFGGGGGGGHGJGHGJHHJGJHJHJHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþÿýÿýþþþÿþþþþþÿúó÷÷óóóúó÷óò¬o=======!=============================>>=>=>===========>=>===>>=>=====>=>====>>=>==>>==>C=>====>>=>=====>>==>=>===>===>>C>==>>===>>=>=>>=C>=>=Cuƒ–ÆÌ×ßçñóõó÷÷ò÷÷÷ò÷÷ò÷÷÷÷÷÷òóõ÷÷÷÷÷÷÷÷ò÷õóõ÷÷ò÷÷òó÷÷õóõó÷÷õó÷÷÷÷÷÷÷÷÷òó÷÷÷÷õó÷÷ò÷óõó÷÷õó÷ò÷ó÷÷÷òó÷÷õó÷ò÷ó÷÷÷ò÷÷÷÷÷ò÷ó÷÷ò÷ò÷÷÷÷òóõ÷ó÷òóò÷ò÷òóõó÷òóò÷÷÷ò÷ò÷ò÷òóõóõóòóõó÷òóò÷ó÷ò÷òóòóõóòóòó÷õó÷òóõóòóòóòóõóòó÷óòóõóòóòóòóò÷òóòóòóòóòóòóõóòòóòóòóòóòóòòóòóòóòóòóòçÆ”ƒƒ–”–ƒ–”ƒƒ––ƒƒ––ƒƒ–”––ƒ––ƒ–ƒ…ƒƒ–ƒƒ––ƒ……ƒ–ƒ……ƒƒ…–ƒ‚ƒ…ƒ…ƒ…ƒ…ƒ„‚…‚……ƒ‚…‚ƒ…ƒ‚„‚…ƒ‚‚ƒ‚ƒ‚„‚ƒ„ƒ‚‚…‚‚…‚„‚„‚‚ƒ‚„ƒ‚„‚‚„‚‚‚‚‚‚ƒ…ƒ‚‚‚‚‚‚‚„‚‚„‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚„–ÆÈÎáð÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿá_!   $qªõÿþÿþÿþÿþÿþÿþþýþþþþþþþýþýýþýþæÓ³³³³³¸³³¸³¸³¸³¸¸³¸¸³¸¸³³¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸³¸º³656666666666666656666566666666666666666865866666666566666666i665i66666656666666666666i6666686665i6656666666666686666666666666666666666656666666668i86666666686666668i86666688666656566666566666666668666666666i666666666666666666566656666656666566656668666668656666655% %%%%%% %%%%% %% %% %% % % %%% %66656666666666566666686666665i66666666666666666668666666668666666666566666666866666566668665i66656666566666666656665666666666º¸¸¸¸¹¸·º¸¸¸¸¸¸¸¸¹¸¸¸¸¸¸·º·¸·º·º·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸·¸·¸···¸··¸·¸··³··³¸·³·³·³·³·³·K·K··K³KK³K³³K·KK³·KKK·K·K·K·KK·J·J·J·J·KJ·KJ·J·JKJKH·JJJKJJJJJKJJJJJJJJJJJJJHJJGJHGGGGGFFGFFFDKKKKKKKKKKKKKKKKKKK+O‡O‡O+üüüþþþþüüüüüþþþþþÿþþüüúüüüúüüüüüüüüüüúüúóúóüüüóú*‹ŒŒŒ*óóóòóóóööõöööõöõöõöõöñëëëëðóðóóóðððððððððððððòðððððððð*‡‡*‡‡*ÑïÑðÑïçÑðÑïðÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÍÐÍÐÍÐÍÝÝÍÐÝÍÍÍÍÍÍÍ*44444*ÍØ°ØÍÍÍÍÍÍÍÍÍÍÍÄÍÍÄÍÍÍÄÍÄÍÆ­°°ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÈÇ+&+&&+&+KKKKKKKKKKKKKKKKKKDFFFFGFFFFGGGGGGGGHGHHGHGHGJGJHHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþÿþþýÿþþþþþÿþþüÿü÷óóúóúóóúóò¬?=======$$=======>=======>==$$==$===$======>A=========>================>>>CA====>===>>==>====>>====>A>==>=>>=>>=>>>>====>A>A=>C>>>=>>===>AACxƒÆá÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñx$=$!$$!!!!==$!===!$$=!!!$=$=!!!!!!$!!!!$!!!!!!!!!!!!!! !!!!!!!!!!! !!!!! !!!!!!!!!!!!!! ! ! !   @‚Èçóÿÿÿÿÿÿÿÿÿÿÿÿó–!!!      q¥íýÿþÿþÿþÿþÿÿÿÿþþþþþþþþþýþþýþýæ×³³³³³³³³³³³³¸³³³³³³³³¸³³³³³¸³¸³³¸³¸³¸³¸³¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸66666666866i666666666666866666666666i66665656666666i66666666666666666i866666866866666666i666666666666666666666666666656666668i66666666666i66666666666666566i6566666666666666666666665666665666666566666666666ii66666666666565668i866666i566( %%%% %%%% %% % %%%%%% %%%% % %% % 666666668666666666666666666i6566666666666666i666666666866666666666666666666666i666666668666666666866866666666666665¸º¸º¸º¸¸º¸¸¹¸¸º¸¸º¸¸º¸º¸¸º¸¸º·º¸¸¸¸·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸³¸···¸·¸·¸··¸··¸¸·¸······³···³·³·³·³····³³³K·³·K·K·KK·KKKKKKKKKKKK·J·J·JKKKKJ·JKJ·J·JKJKJKJJJKJKJJKJJKJJJJJJJJJHJHGJGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKK+4O4O4+óüüüüþþüüÿüüþþüþþüþþüüüüüüüüüüüüüüüüóóóüóúóúüúúó1Œ‹ŒŒ1óðóóóóðööúöööñöñöõöõìëöñëëððððóððððððððððððððððððððððð*‡‡*‡‡*ðïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÍÑÐÑÍÍÍÍÍÍÍÍÙÜÍÍØ×ÍÍÍËÍÍ*44444*Í­°ØÍËÍËÄÄÄÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄ×°°ÆÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÁÁ¦+&&+&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFGFGGGHGGHGJGHGJHHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþþÿýþþÿþþþþþÿþúóóúóóó÷÷óóò¬}j=========!=========>============$=====>====>>=====>===========?=====>>>>>A======>==>>=>===>=>>>>==>>>===>A>=>==AA==>=>>=>CC>=>=>>>=>=?C>u”Ìèüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòx==!!$$!$$!!$$!!!$!!$$=$!=$!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!! !! !!!!   !! ! !  #_ËóÿÿÿÿÿÿÿÿÿÿÿüÂ! !q¥õÿÿþÿþÿþÿþÿþÿýýþþþþþþþþþýýþýþæÓ³³³¸³³¸³³³¸³·³¸³¸³³¸³³¸³¸¸³³¸³¸³¸³¸³¸¸¸¸³¸¸¸¸¸¸³¸¸³¸¸³¸¸¸¸¸¸º¸¸¸66i6666666i8666666666666666666666665666666666666666666566666666i6666686666666666666666666668666i66666666666668666666666666666666668666666666666666666666686666666666666686666666566666666i6666666665i666666665666666i686i6666666666666666666866686i66( %%%%%% % %%% % %%% % % %%% % % %%6666ii666566666666666666566i6666i6666666666666666866666666666666666666666666i6665i66666666666i6666666656666666¸º¸¸¸¸º¸º¸¸º¸¸¸º¸º¸º¸¸¸º¸¸º¸º¸¸º¸º¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸·¸¸¸¸¸¸¸¸··¸··¸··¸···¸·¸··¸·¸··········K··³·K·³K··K·KK·K·K·K·K·K·K·KK·J·J·KKKWKKKKKKKJKKJ·JKJJ·JKJJKJKJJJJJJJJJJJJHJJGJGHGGGFGFFFFFKKK³KKKKKKKKKKKKK³K+42‡O4+++++++++++++++++++++++++++++++++++++++++++++++++1Œ‹ŒŒ1óóðóñðóööõöööñöõöõöõöôìôìëñâðòðòðçðÑñïðáðáïáððñððáðáðð*‡‡*‡‡*ÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÍÑÍÑÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍËÍÖÚËÍÓÍÄÍÄÍÄÍ*44444*++++++0++++++++++0++++++++++++++++++++++++++++++++&&+&&+³KKKKKKKKKKKKK³K³KFFFFFGFFFGFGGGGGGHGJGHGJGJHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþÿþÿýÿþþþþþþþþýÿüúóóúóúóóúóò¬sj===$$$=========>=============>==============>A>===>===>====>==A==>==A=>>>=========>====>>>>===>CC>==>==>=CC>==>CC=>==>===CC>==>>>=====CƒÌúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò]$=!!!=====$$$$!!!!!=$!$$!!!=!$!!!==!!!!$!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!! !!!!!!!!!!!!!! !! ! _Îóÿÿÿÿÿÿÿÿÿÿü„ !=qªíþþÿþÿþÿþÿþÿÿÿþþþþþþþþþþþþýþýæ×³³³³³³³³¸³³¸¸³·³¸·¸³¸³³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸66i668666i6666666666666666i866668866666666666666666i666666666i86i6666666566656666666666666686666666666666666666666666686656656666656i666666666666666566666666656i6666666666666666666666666666665666i6i566666i68i66668666666i66665666i6i666666666(%(65%%%%%%% %%%% %%%% %% %%%%% %%% (666656656i6686666656i66665666666666666665666686656666666666666666665666666666666666666666666666566666666666866666666866668¸¸º¸º¸º·º·º¸¸º¸º¸¸¸º¸¸¹¸¸º·¸·º·º·¸º·º¸¸¸¸¸º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸··¸··¸·¸··³··³·³··³·³·³³·K·³³K³·³K·³K³K·K·K·KKKKKKKKKKKK·KK·JKJ·JKJ·JJ·H·JJ·HKJKJKJJJKJJJJJJJJJJJJJJHJHJGHGGGGGFFFGFEFDKKKKKKKKKKKKKKKKKKK+O‡O4O4O4OOOO4OOOOOOOOOOOOOO2OOO24222222222222222022032*ŒŒ‹11**11**1***1*11*111*111111*11*11*11*111*111*11*1111*111‡‡*‡‡*****)***1*****)*****11*******)***)********************44444*+++++(++(++&++&0++&++&0&++&+&+&+&+&+&+&+&+&&+&+&&&++KKKKKKKKKKKKKKKKKKFFFFFFFFGFGFGGGGGGHGHGJGHGJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýþþþþþþÿýþþÿþÿþÿúóóúóóó÷úóóò¬Žo=$====================================>======>>====>==>>===>=>>===>>>>====>>==>=>>===>===?>>==>C>==>>>==>C>=>=>>=>>>>>=>>>>=>>>>>===C{Ì÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ]$=$!$==!===!!$!$!!!!!!$!$!!!!!!!!$$$=!$!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!! !!!!! !!!!!!!!!! Îüÿÿÿÿÿÿÿÿÿó_  =q¥õÿÿþÿþÿÿþÿÿÿÿþýþþþþþþþþþþýþýþæÓ³³³³¸³³³³³¸³³³¸³³³³³³³¸³³¸³³¸³¸³³³³¸³¸³¸¸³¸¸³¸¸¸¸¸¸¸¸¸³¸³¸¸¸¸³¸¸68666i6668666656i6i66i6666666666666666666566666668656566666666656666i6656666666666666666666666666666666666666i6565666i6666666666666668666656556666666666666656666i668666656666i66666i88666566666666666666i666i666666666666666665666i886566666666666666665% %% % % % % % % %% % %% %%6666666666666666666666666666666666666666656666666665666i66666666666666566666666656666666656666666666666566666666i66i5666¸º¸¸¸¸º¸º¸º¸¸º¸¸¸º¸º¸¸º¸¸¸º¸º¸¸º¸¸º¸¸º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸··¸·¸·¸¸··¸··¸··¸·¸··³··³······³·K·K··³·K³K³·K·K·K·K···K·K·K·KKKJ·J·KKKKKKJ·JKKJKKJKJ·JJJJKWJJKJKJJKJJJJJJJJJJHJHGHGGGGFFFFFEKKKKKKKKKKKKKKKKKKK+‡4O‡O‡2‡O4O4OOOOOOOOOOOOOOOOOO2O2O2O2222222222222222031ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŒŠŠŒŠŒŠŒŠŠŠŒ‡Œ‡Œ‡ŠŠ‡‹‡Š‡Š‡Š‡Š‡Š‡Š‡‡‡Š‡‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡‡‡1‡4‡‡‡‡4‡‡‡‡‡1‡‡‡‡‡4‡‡4‡4‡44‡4‡4‡4‡4‡44‡444‡44444444*+++0+++0+++0&++(+0&+&++&+&++&+&+&+&+&+&+&+&+&+&&+&+&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFFGFGGGGHGHGHGJGHHGJHHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿýÿþÿþÿýÿþþþþþýÿüó÷óúóúóóúóò¬Žj$!$========>=$==$=======>A>===>=>?>======>====C=>=======>A====>=====>=====CA>C>==>>==>>>=======>==>A=>C>==>=>>========>>===>=>CC>>=uÆòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò_===!!=$!!!=!!===!!=!!!!!!!!!!!!!!!!!!!=!!!=!!$!!!$!!!!!!!!!!!!!!!!!   Â÷ÿÿÿÿÿÿÿÿÿñY =q¥íýÿþÿþÿþÿþþþÿÿþþþþþþþþþþþþýþýæÓ·³³³³³¸³¸³³³¸³³¸³³¸¸³³³¸³¸³¸³¸³¸¸¸¸¸¸³¸³¸³¸¸¸¸¸¸³¸¸³¸¸¸¸¸¸³¸¸¸¸¸6666686666666666666666568666666i6666668666666666656666666665666666566666666666666666666666666666665666665666666666666i6i86656666666666666666666666666666666666668666666666666666666666666i86666i656665666665665666666666666666666686666666666666665666%%%%%% %%% %%%%%%% %% %(66866666666666i666666666666i6566666666656666656666666666666568i666668666656666666566566666666666666666566666666666666666i8¸º¸¸¹¸º¸¸º¸º¸º¸¸¹º¸¸¸º¸¸º¸º¸¸¸¸º¸º¸¸¸º¸¸º¸º¸º¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸·¸¸¸·¸·¸···¸·¸··¸··¸·¸·¸··¸·······³······K³·³·K³³³K·K·KKKKKKKKKK·KK·J·JK·JKKWKKJ·J·JKJ·JKJKJKJKJKJJJKJJJJJJJJJHJJHGJGGGGFGFFFEFEK³KKKKKKK³KKK³KKK³K+2‡2O4O‡O4O‡OO4OOOOOOOOOOOOOOOOO2O2O2222222222222222220*Œ‹Œ‹Œ‹‹ŒŒŒŒŒŒŒŒŒŒŒŒŒŠŠŠŠŠŒŠŠŠŠ‡Œ‡Œ‡Š‡Š‡Š‡Š‡Š‡Š‡Š‡‡Š‡‡‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡4‡‡‡‡‡‡1‡‡‡‡1‡‡‡‡‡‡1‡‡4‡‡4‡4‡‡4‡4‡4‡4‡4‡44‡444444444‡4*++++0++(++(+&0&+(++&0&+&0&+&0&+&+&+&+&+&&+&+&&&&+&&+K³K³KKK³KKKKKKKKK³DFFFFFFFGFGGGGGGHGHGJGHGJHHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýÿýþþþþþþþÿýþþÿþúóóúóó÷óúóóò¬}m==============$$==============>==A=====>>========>>====>A>>===A>===>>>===>>>>>>==C==>C=====>===>>=>>>>>==>=?>==>>=>==>>>>>>==>>>A>xÞýÿÿÿÿÿÿÿÿÿÿÿÿÿüüú÷ññèñçðñððññèðñððèñèññçðèðèðèñðñðçèððèñèñèñññèñçñèðñðèèñèððèñèñðèñèðèðèñðèñççñðçèðèññèñðñðððñññññèððçñèèðèðèðèðèèðèðèñèñðçèðèððçðèñðèðèðèðèðèñðçççèðèððèðççççèñðèðèðñðèðñèðççççèñççðèðèèèñèðèðççèèðèèðçèðèññçðèçèçèçèèççèðèçèèèèèèèèðççèèççèçèèçèèçèçèáß–ƒ”ƒƒƒƒƒƒƒƒƒƒ‚ƒƒƒƒƒƒƒ‚ƒƒ‚‚ƒƒƒƒ‚‚ƒƒƒƒƒ‚ƒƒƒ‚ƒƒ‚‚ƒƒƒ‚ƒ‚ƒ‚ƒƒƒ‚‚‚‚ƒ‚‚‚‚ƒ‚‚ƒƒ‚‚ƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚x‚‚x‚‚‚_‚‚xdz‚_‚‚x_‚____‚x_x_dx__‚‚xdx_‚x__dxdx____dx_dx___d_ZY@; ‚ñÿÿÿÿÿÿÿÿÿá; !qªõÿÿÿþÿþÿþÿÿÿÿþþþþþþþþþþþþþþýþæÓ³³³³³¸³³³³¸³³³¸³¸³³³¸³¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸º¸¸¸6566656666666666665666i66666666656666666566566666686666656666666566566666666666656666666666666666666666686665686656686666666i8666565666i666666666666566666668666666656656666i6665i8668668866665656666i666665666665865666666666666666666666666666666686666666666(%% % %%%% %%%%%% %%(65666666665666868666665666586666i56666i66i66665666565666666666666666866666666666666666666666665666668666686666666666666666666666¸º¸º¸¸º¸¸º¸¸¸¸º¸º¸º¸¸º¸º¸·¸º¸º¸¸º·º¸º·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸·¸¸¸·¸··¸··¸·³··³³·³·³··³·K·³·³·³³·K³K³³K·KK·KKK·K·K·K·K·J·J·J·KKKKKKJ·JKJKJKJKJJJ·JJJKJJJJJJJJJJJJJJHJJHJGJGGGGGFFFFFGFKKKKKKKKKKKKKKKKKKK+‡O‡O‡O4O‡O4O4OOOOOOOOOOOOOOOO2OOOO2O2422222222222220231ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŒŠŠŠŠŠŒŠŠŠŠŒ‡Œ‡Œ‡‡Š‡Š‡Š‡Š‡‡‡Š‡Š‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡‡‡‡‡4‡‡‡‡4‡‡‡‡4‡4‡‡‡‡‡44‡‡44‡44444‡444‡44444‡44‡444444*++++++++++++++++&+++&+++&+&+&+&+&+&+&+&+&+&&+&+&+&&+&+&+KKKKKKKKKKKKKKKKKKFFFFFGFGFFGFGGGGGGHGGHGHGJGJGHHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿýÿþþÿþýÿýþþþþþÿüúóóóúó÷óúóò¬Žo==>=========$======$=====$=====$=>>====A>>====>>====>>==>==>==>>==>>====?==>>==>>>==CC>=ACCC>>>C==>=>>>>===>>>=CCC>>===>>?>=>>==>ƒáÿÿÿÿÿÿÿÿÿÿÿÿúñßÇ›”{xuxuuuuuuxuuuuuuxuxuuu]uuuxuuuuxuuu]uxuxuuxuxuuxuuu]uxuuuxuxuu]uxuuuxuuxuuxuuu]uuxvxuuuuuuuxuuxuuuuZuxuuu]uxuxuu]txu]uuZuxuuuuuZuu]u]uuZuuxuuu]u]uuuu]utZuZZuu]u]uuu]uu]uxutZZuxuZuuZZ]u]uZCZZ]uZ]uuZ]uZu]uuZZZuZ]ZuZZuuZZZZZZZZ]]uZZZ]uZZZZZZZZZZZZZƒñüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüúóñáÏÌ–d@ ! [ÑÿÿÿÿÿÿÿÿÿÈ!!qªíþþþÿþÿþÿþþÿÿÿþþþþþþþþþþþþþþýæ×³³³¸³³³³¸³³³¸³³³³³¸³¸³³³³¸³¸³³¸³¸³¸³¸³¸¸³¸³¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸66666666665666668666665668866666666666566666656566566666666666666566686666666666666665666666566666668868666668666i6666666656566686666666866686666666666666666665666556656686665566866666566666666656665i6666566666666666666566666666666666666666666i66666565666666565%%% 68%% %%% % % 66566666656565666666666566666666666666665666666666i65686566668665686666665656556666666666666666666i666666566666685665668868¸º¸¸º¸º¸¸º¸¸¹¸º¸¸¸¸¸º¸¸¸º¸º¸¸¸º¸º¸¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸··¸······¸··¸··¸··¸³··³··³··³·K·K··K·K·³K·KKK·K·K·KKKKKKKKKKKKKKKKKJ·JKKKKK·J·J·JKJ·HKJJJJJKJKJJJJJJJJJJJJHJHGHGGGGGFGFFFFFKKKKKKKKKKKKKKKKKKK+O‡OOO‡OOOOOOOOOOOOOOOOOOOOOOOOO042O2O22222222222222220*ŒŒŒŒŒ‹ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŠŠŠŠŠŠ‡ŠŠ‡Œ‡Š‡ŠŒ‡Š‡Š‡Š‡Š‡Š‡‡‡‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡‡‡4‡‡‡‡4‡‡‡‡4‡‡‡‡‡‡4‡‡‡‡44‡‡4‡‡‡4‡4‡4‡4‡4‡4‡44‡4‡444Q4*++++++++++++++++++&+++&++&+++&+&+&+&+&+&+&+&+&+&&+&&+&&+KKKKKKKKKKKKKKKKKKEEFFFFFFFFGFGGGGHGHGHGHGJHHHHHJGJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýþþÿýþþÿþÿþÿýÿþÿúó÷úóó÷÷óó÷ò¬o=======>===============>=========A>====>======>>>===>>=>>=>>===C==C>====>>=>===A==>>>A=>?CA>>>>>>>>>>>>>===>>==CC>>>=>=AC>=>>==C–òÿÿÿÿÿÿÿÿÿÿüèÌ›xC>>C>C>>>==>=>C>=>C==>>>C>>===?>C>=>=>=>=>>>>>>>>>>>>>>>=>>>>=>>?>=>>>>C>=>A>>>==>=>>=>>A>=>>>=>>>>>>>==>==>>====>>>===>>A>>>==>====>=====>>===>>=>==>>=>===========>=>>=====>>>===================================$=============$$===$==$$====$!=$======!!x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷áÂ;Báÿÿÿÿÿÿÿÿ÷Y  $qªõÿÿÿÿþÿÿþÿÿÿþþýþþþþþþþþþþþþþþæÓ³³³³³³¸³³³¸¸³³¸¸³¸³³·³¸³¸³¸³¸³¸³¸³¸¸¸¸³¸¸¸¸¸¸¸³¸¸¸³¸¸³¸¸¸¸º¸³¸¸º66566565i6566668666566666666666666666665666666666666666666666666666666665666666666666666566566656666666666666666666666656665666668i6666666666666565666566666665666666666565666666566666666666566666656656666666686666666656666665666666666665666666666856%%%%666% %% % %%6666666666666666666666666656666666665666666658666666656666666666666666666666i666666686666666656666666665665666656666i666666666ºº¸º¸¸º¸º¸º¸º¸º¸ºº¸º¸¹¸¸º¸¸¹¸º¸¸¸º¸º¸¸¸º¸º¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸·¸··¸··¸·¸···¸···············³·³K·³·³·K·K·K··KK·K·K·KK·J·KK·KKWKKKKJKJ·JJ·JKJKJ·J·JKJKJJKJJJJJJJJJHJJGJGHGGGFGFFFFEKKK³KKKKKKKKKKKKKKK++++++++++++++++++++++++++++++OOOOO0O202020202020202022*ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŠŠŠŠŒŠŒŠŒŠŠŠŠŠŠŠŠ‡Š‡Œ‡‡Š‡‡‡Š‡‡Š‡‡Š‡Š‡QЇ‡‡‡*‡‡‡‡‡‡‡‡‡‡‡‡4‡‡‡‡‡4‡‡‡4‡4‡‡‡‡‡4‡‡‡‡‡4‡‡4‡4‡4‡4‡2‡4‡44‡44444424*++++++++++++++++++++++++++++++++++++++++++++++++++++++++KKKKKKKKKKKKKK³KKKFEFFFFFFGFGGGGGHGHGHGJGJGJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþþþýþýþþþýÿü÷óóóúóóú÷óòÓŸp============>>>=>==$===AA===>>===>>====>=>===>>====>=========>===>C>=>>>=>====>>>>>>==>==C=====>C>>=>>>=ACCC>==>C==>>>>===>CCAC÷ÿÿÿÿÿÿÿÿÿüçxCC>>>>==>>>C>=>>CC>=>CC>C>=CCC>==>>CC>CC?>>>C?=>=>=>>=>>>>A==>=>>>===>>>>>>>>=>>>>=>=>AC>=>===>>=>>=>=>C>=>lC>>>>>>>>>>=>=======>C====>>>C>>==>=========AA====>===>>>=>>=====>===========>>>>=>>==>=>=======>=========$$=======$====!=$$$=>=$$$=!$$$=$==$=!=$$xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÏ‚;YñÿÿÿÿÿÿÿÿÎ!  !   !  q¥íþþþþÿþÿþÿþÿÿÿþþþþþþþþþþþþþþþæÓ³³³³³¸³³¸³³³¸³³·³³¸³¸¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸66666666666656666i56566666666656666665666666665666666666566665666i6665656666666666566666656i6666566666655666666666666666666686666666666666656665656655666566666665666566666686666666666656566666666566668i668666556666i8656566656565686666666656668566666666666665565665% %(( 666666666666666666656666i665i6666668656665666666566666666666566666666666666666656666666666566i666666686666666666566i665656666666¸º¸¸ºº¸¸ºº¸¸º¸¸¸º¸º¸¸º¸º¸¸º¸º¸¸¸¹¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸·¸·¸·¸···¸··¸··¸···¸³¸³·³·³··³³³³·³³K·³³K·K³K·K·K·K·KKK·KKKKKKK·J·J·JKKKJKKWKJ·JKJJKJKJJJJJJJJJJJJJJJJJJJJJJJHHGJGGGFFFFGFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK++++++++++++++++++++++++++1+1+1+1+1+1+1+1+1**********1+1************1************1+111**********1+************1+11*********1+*************1+***********1+K††K³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEEEFFFFFGFFGFGGGGGGGHGJGHGJGJGHHJGJHJJHJHJHJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿýþþþÿþÿþÿþÿýÿþúóóúóóóúóóúò¬o===========>>>========>>>======>==>===>=>====A>===C===>====>=>>==>>=>>A>====>>>>>>>>====>>>==>>>>>=>>>>>>CCC>==>>=>CA==>=>>>>C›÷ÿÿÿÿÿÿÿÿýèÆuC>C>>>>===>>>>>>>>>>>?>>>>?>=CC>>=>C>?>>>CC>>>>C>==>=>>=>>>A?>>==>>>>==>C>>>=>>>>>=>>>>>>C=>=>>>>=>=>>>>=>>=>C>A>>>>>==>>====>=>A==>===>>>>>A====>====>==>>>>===>==>=>==>>>>======>===>=====>========>==>===============================!!$=====!$$=$$$====!$$==x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü΂!  _÷ÿÿÿÿÿÿÿ÷[=q¥õÿÿÿÿþÿþÿÿþÿÿþþþþþþþþþþþþþþþþæÓ³³³³³³³³³¸³³¸³³¸³³¸³³³³³³³³³¸³³³³¸³¸³¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸65666666666566666566666666666566866666656668666666666666i6866566666656568666666i566866656665666666666666666666566666666668666666656566656668i66i686665666666666656666666666666666666656666665666656666566566656666666666666666666666665656886666666666666656686666666686(%%8666656666666566656566556665666666656665666666666656666866i666666666565666566666666666665665686666666666666665656666665666ºº¸ºº¸ºº¸º¸º¸ºº¸ºº¸º¸º¸º¸¸¸¸º¸º¸¸¸¸º¸¸¸·º·º¸¸¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸·¸·¸¸··¸¸··¸··¸···³··³···³···³·K··K·K³³·K³K·K·K·K·KKKK·KK·KKKKJ·J·KJ·KKJKKKJKKJ·JKJ·JKJKJKJJJJJJJJJJJJJJJHJGJGHGGGGFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³K³K³K³K³KKKKK³J³K³K³K³KKKKK³K³K³J³K³KKKKJ³K³K³K³K³KKKKK³J³K³J³K³KKKKJ³K³J³K³K³KKKKK³K³K³J³K³³KKKK³K³K³K³K³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KEFFFGFFFFGFGGGGGGHGHGHGHJGHHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþýÿýÿþþþþþþýþþþÿüú÷óóú÷óúóóò¬Žo==========>======>=>=>====>====>A====CA====>==>==>>==>C>>C====CC>==>=>>>=>>==>====>>C>>=>>>=>>>=>===>====CC>>=>C>==>C>>A>>>>=ƒòÿÿÿÿÿÿÿÿ÷Ìx=>AC>>>>>C>>CA>=>>>>=>=>>>>=>>>C>=>>=>CCC>=>A>>=>>>>=>>>>>>>=>CCA>>CCCC>=>?CCC>>C>C>>>>>>>CC>=>=>C=>>>=>=>=>===>>=>=>=>=>===>==>>CC==>CC=>>===>>>>==>===A>>=>>>>====>=>=========>>=======>=====$=$==========================>>>=!=====>======$==!===$$!==!=$$===$=xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÈ@ „üÿÿÿÿÿÿÿÎ    =}¥íþþÿþÿÿþÿþÿÿÿÿþþþþþþþþþþþþþþýèÓ³³³³³³³³³³³³³³³³³³·³³¸³³¸³¸³¸³¸¸³¸¸³¸¸¸¸¸³¸¸¸¸³¸·¸¸³¸¸³¸¸¸³¸·¸¸¸666666665665666866666666656666686666668666656665665666666666665666666666665666666668666666666666566686665666666565666665665666666666666666666866i66665656i6665666566566666665i66i6666665666566666866666665666566656566666666566665656666666666666566685686865666666666666666666668666666566i66665666668666866656666666666566666i6866665668688i6666666i6666665666666656666566668666666685665656666668i66666666656¸¸º¸¸¸º¸¸º¸º¸¸¸º¸¸º¸¸¸¸º¸¸ºº¸¸¸ºº¸º¸¸º¸º¸¸¸º¸º¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸·¸·¸¸···¸··¸·¸·¸··¸·········³····³·³·K··³K·K·K····K·K·KKK·KK·J·J·J·JK·J·J·J·J·JKKJKJJKJJJKJJKJKJJJJJJJHJJHHGGGGGFGFFFFFK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKK³K³KKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKFFFFFFFFGFGFGGGGHGHHGHGJGHHJHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿþÿþÿýÿþÿýÿþÿþÿúóó÷úóóúóóúò¬m==>========>=$====>=>==========>>====C>====>=>=>>>>==>==C>==>>CC====>>>>>>>=>>==>>=>C>>>>=>=>>>==>>==>>=>CC=>>>>>==C>=?CC>==zèÿÿÿÿÿÿÿÿò›C=C>>>>>C>>C>>>>>=>>>C==>C>>==>=>C==>A>=AAC>=>>C>>>>C=>A>>>>>>=>lA>AC>?>>>>>?>?C???A?>=>>>>>C>>>==C>==>>>>===>==>=>>=C==>>=>==>==C>A>=>>C>=>==>==CA===>=>=>>==>>>=>===C>=>==>>===>>=>=====>=>==>================>=========$========$==========$$==$===9=!==!=====!$!x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáZ!Èÿÿÿÿÿÿÿ÷[   =qªõÿÿýÿþÿþÿÿþÿþþþþþþþþþþþþþþþþþæÓ6666666586666666666665665656666566666666666656666655666666656866666656666666865666666656666666656666666566656666666666666666666656666656656668666665666666656656666i666i6656568666566666666686656666666566666i56666666666566666666866586665666666666i666666666566666666666686668666666666666666665666666665666865666566566566666686666666666666665666665866666666665666666656666666666666666666665i6666666666666566ºº¸ºº¸ºººº¸ººººº¸º¸º¸ººº¸º¸ººº¸º¸¸º¸º¸¸¸¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸··¸·¸··¸·¸··³·³·³·³·³·³·K·³K³K³³K³K³K³·KKKKKKKKKKKKK·KKKKKKKKKJKKKJKJKJKJKJKJJJKJJJKJJJJJJJJJJJJJJHJJGJGHGGGFGFGFFEEFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFGFGGGGGGGHGHGJGJGHHJGJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJJJJJÓÓÿþþþþýÿþþþþÿþþþþÿüóúóóúóóóúóò¬o====>=========>A>>===>AC=====>>A>=>==CA=>==>==>=>=>>===>>===>=>>=C>>>====>==CC=>AC===>==>>>=>>==>CC>>>>==>>>>>>>CC=?C>=>C>=ußÿÿÿÿÿÿÿÿèƒCCCCC>>=>CC===>>>C>C>>>>=CC>C>>==>C>=CCC>>>>=>>=>A==>>>=>CCCC>>=>>==>>>=>>>>=>>>>>>=>CC>>>>>==>=C>>>C>>CCCC>>>>==>>=>=>C=>>>>CA>>=>>>=>==>====>CC==>>=>>>>>C>========>=>>=>>====C=====>==>=>====CA====>>>=======>=!$==========$$=====$$==$==========!======$!$=======xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð‚  !@óÿÿÿÿÿÿÿÎ! !qªíýÿÿþÿÿþÿþÿÿÿÿþþþþþþþþþþþþþþþæÓ656656666666566i6666666666666656665666666666666666666666686866666556566556656666666866566665656666666666666666666666666566686666566666666666666666666666666i56665665666566686885666i66668i666665666666666568666566566666666656666666666656666666666656666666866i666566566656666566666666666666656666565666666666666666666666i56666666665666665666566666688665666666665666666566666656666566666666668656668665666568566666¸º¸º¸º¸¸¸¸º¸¸¸¸¸º¸º¸º¸¸¸¸º¸¸¸¸¸¸º¸º¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸·¸·¸·¸·¸··¸··¸···¸··············³····³··³³·³K·³K·KK·KKKKKKKKKKKKKKKKKKKKJKKKJKJKKJJJKJJJKJJJKJJJJJJJJJJHJJJHJHJGHGGGFFFFFFEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KEFEFFFFGFGGGGGGHGHGJGHGHHJHHHHJGJHJJHJJHJJJHJJJJJJJJJJJJHJJHJJJHJJJJJJHJJJJJHJJJJJJJJJJHJJ××ÿþþÿþÿýÿýÿýþþþÿþÿóóóóúóúóúóúò¬Žo=>===>===$=====CAA===A>A>====>=>>=>==>>=>=>===>====>>==>==C=>>==>A>>==>====>C>>>>>====>=>==>>>=>>=>C>>>>>>>>>C>>C>>>>>=>>>CÌýÿÿÿÿÿÿÿßxCACCC>=>>>>>>=>>>ACC>C=>>>>>?>>A>>>=>>?l?>>>>=>>>>?=>=>>=>CCl>A?=>=>>A>==>C>==>>=>>==>ACC>C>==>>>>>>>>?>?>>>>C>>>=>>=>>=>=>>A=?>>>>==>>==>>====>C>=>>==>=>>>>>====>==>======C>==>>>=>===>===>>===>>====A>=======>==================$$=!=>=!=====$===$!=======!!====!==x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷– –ÿÿÿÿÿÿÿñ!  !9q¥õÿÿþÿþÿþÿÿþÿÿýþþþþþþþþþþþþþþþæÓi66666666666656565666566665666566i666566666566668666666656666655566665666656665666666666656566666565656686666666686686656666566665665666666686665666666665665656666666666665666656656666656666665656666666i66666656666565666656665666565666666666666665666666665656566665i65666655666666i66866656566665666666i866686665666666666666656666666i666656666566666666666565656566i665666666666666666656666666666656565JJJJKJJJJJJJJJJJJJJJJJJJJJJKJJJJJJJJJJJJJKJJJJJJJJJJJHJJHJJHJHJHJHJHJHJHJHJHJHJHJHHJHHJGHHJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHFHHHFHGTFHGTFHFHFGGHFHFGFGFFFFFFDFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFEFDFFFFFFGFGFFGFFFFGFGHFGFGFGFGGHFHGFHFHGFHFFHFHFGHFGHFHFTÓÓÿþÿþþýÿþÿýÿýÿþþþÿüóú÷óóóóóú÷ò¬Žo=====>=>===>>========================>=>=====CC==>===>>==>C>=>=>>>>>===>C>>>=>=>>?>CA>>>C=>=>CC>>>=CC>=>>>>=>>>>>=>A>>=AC>ƒóÿÿÿÿÿÿÿèxC>>>>>>>=>>>>>>>?>==>>C?=>>>=>>>CCCC>>>>CC>>>?=>C>CC>>>=>>>>>>>=>CCCCC>C?=>CC>CCC=>>C>>==CC>>==CC>=>C>=>>=>>>>C>>>>>>>CA>C>>C>>>==>>==>>>>>>=>C>=>>>=>>>>>=>=>ACC===>>>>>C>>=====>====>====>==>>====>>==>=======>==>==>A=======>=========A=$======!$=========$==$!==!==x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü‚;ñÿÿÿÿÿÿú_  =sªíÿþÿþÿÿþÿþþÿÿÿþþþþþþþþþþþþþþþæÓ5668686655656666666665565666656666566666665566666666566666666666666866686666686666566656566656656668666666666656i566i6668656656566666665666666656686566686666666666666666666656666i66656i6i66566668666666566685666666566656656566665666666566665668666666566656566566666668566566566665668666565666656668666656666666668566656666566565666566566656666665666666656666i666566666566666666666566566565666566686866    HHHHHHHHGHHHHHGHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHGHHHHHHHHGHHHHHGHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHGHHHHHHHHGHHHHHGHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH     ÓÓÿþþÿýÿýþþÿþÿýþÿþÿúóóóúóúúúóóò¬Žl=====>=>>==>===>=============>===>===========CC==>>=>===>>C==>>>=>>>==>>>>>=====>A?>>>>>>=>=?C>>>=>>C>>>>==>>>>==>CCC=>?>CßÿÿÿÿÿÿÿñƒC>>>>>>>>>>>>>?C>>>>=>=>C>>C==>CCl>>?>>>>CC>>??=>CC>>>>>>>>C>=>>>>CCCC>>>>>>C>>>C>C>>>?>>=CC>===CC==AC>=>>>>C>>>>>?C>=>=>lC>>=??>=>=>>>=>>CA>=>C>=>>>>=>>>C>==>CA>>>=>=>>ACC==>=>====>==>===>=>======>==>==>============>=>======>==>=========!=====$=========!$=!==$$==xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóY!„ÿÿÿÿÿÿü !  qªõÿÿþÿþÿþÿÿÿÿÿýþþþþþþþþþþþþþþþæÓTTTTTTT66666886665666665665666656666568666665665656556686666866666566666666656668656666666666666566665666666666656665666666666i56666868666i6666586666666665686566656666685666566666668666665i6665665666656666566666686666656i6566666666666666666586566666656686666665i86666586565656666666866566666656666666665666666668665665866666666566566i66666656668686668665666566666568656866656566686566656668668666666565668666668       ÓÓÿþÿýÿýÿþþþþýÿþþþÿüóúó÷óóóóúúò¬Žl=====>====>=========>C>==>A>==>==>>=>>>>>>>==>l===C>>>=A>>>>>=>>==>==>C>=>CCCCC>>>=>>>C=>>>==>>>>?CC>==>C=>>>AC>>C>>>>=>>”÷ÿÿÿÿÿÿ÷–C>>==>>>>>C>>>=>?>=>C>>>>>CCC>=>C>C>>C>>>>=>=>C?=>lC>=>>>?>>>C?>>>>>>>>>>>=>CCC=>>>>>=>?>=>>>>>>>>C==CC>>>>A>=>AC>=>C>>>>=>=>>>=>>=>=>CC==C=>C>>=>>>==>=>?>>>=>====>A>===>=>>=====>==>C=============>>======C========>==>==>===$=====C======================$==$!=====!$=z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç;@óÿÿÿÿÿÿá $qªíþÿÿþÿÿÿþÿþÿÿÿþþþþþþþþþþþþþþþæ×"T"TTTT"TTTTTTTTTTT666566666666668i66656666656656666566656656666665656665656666666566665666686566666566666566i66666666666666666666686i66666666666666656i666656656656666666566666666568666686665656665666668656666665666665666686666666666656656666666666666i6666666666666666666i6666666666665666666666666i665665666656666665666666666666666656686666666666666666566666566666666666666866666666       Ó×ÿþþÿýÿýÿþÿþÿýþÿþÿúó÷ó÷óúúúóóò¬m=========>==========>A>==A>==>===>>>A>>==CC==>A==>C>=>>>A==>>>=>==>==>>>>>CCC>C>>=>>>>>>>C>==>>=>>C>>>>C>>>>>>>>>>>>>>>>tßÿÿÿÿÿÿýÆC>C>>>>>C>=>C?=>>>>>>CC>>>>>CC>>=>CC>?CC>=>>>>>>>=>CC=>C>>>>>>>?>C>>>>>>>>>=>>C>>>>>>>>>>A>>>>>>>>>>>>>>>>=>C>==C>>=>C>>C>>>>=>C>====>>>>=>C=>CC>==>==>>>?C>=>?=====>>>>===>=>=>======>C>======>>====>====>=>A========C=>>===>====>====>$=============$$==$=====$======!=={óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!Ëÿÿÿÿÿÿó;!qªõÿÿþÿþÿþÿÿÿÿÿýþþþþþþþþþþþþþþþæÓTT668666566666666665666666666866665i6i6666666668666665666665666666656566666666566666666666656866666565668666665666568i6665666566656665666866666666666i8666666666656666566666666666666666656666666566666666666666666666686666866666i8866668666566566565666666668666666566566666666866566665666656666666666666865666656666655666666666666666666566656666666666666666656665666566666666666566   ÓÓÿþÿýÿýÿýÿþþýÿþþþÿü÷óúóúóóóúúò¬Žo==>=====>====>>====>==>==>>===>>>==A>>>==CC===>>=>C>=>>=>>=>?=>=>=CC>===>=>>=>=>>>>C>===>C>>AC>>>=>>>CC>>>>>>C>>>>>>>>>>›úÿÿÿÿÿÿßu=>CC>>>>>>=>CCCC>>CAC>>C>>>>>>>CC>>>>>>CCAC>>>C>>>=?C>>>CCCCC>>C>>>CCCC>?>>?>>>>>>>>>>>>>>?>>>>?CCC>>>=>>>>>=C>=>CA=>>>>=CCC>>=>>=C?>A>>C>=>=CC=>>>?=>>>==>>==>C>===>>>A>=>====>>>>>==AC==>>>==A==>=>C==>C====>==>>==>========>=>=>====$!=>=======!====$=========$$=======xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx !ÿÿÿÿÿÿü‚ !   $pªíÿþÿþÿÿþþþþÿÿÿþþþþþþþþþþþþþþþæ×TTTT""TT""TT""TTT""TT"TT"TT"TT6656566666665666668666666666i866i666666866666566856666668566566666665665666666666666666i666656666666865666566666666i8556666666668666666666666686656686666666666656666666665666665666566665666666656665666656666866666666666666666866666656666666666665656565i656665656668i66666i56666565656666656666666688886666666665666666666666666665666666666666866656666666i665686i8i66566666"T     ÓÓÿþþÿþÿýÿýþþÿýÿþÿþúóúóóóúúúóóò¬o===>========>==>=>>>>>==>==>===>===>>>>=>AC===>>>>>====>>>=>>==>=>CC=>>>=>C>==>>=>>C>>==>C>>CA>==>>>>CC>=>?CC>>>>==>>>>tßÿÿÿÿÿÿú–A=>>>>C>>C>>>>Cll>>>C>>?C>=>>>>>CCC>>>>>CCCC>>>C>>==>C?>CCCCC?>C>>CCCCCCC>>?>>>=>>>C>=>=>>>>?C>>>??>>>>>>=?>=>C?>>?>=>>A=>CCC>==>>CC>C==CC>===>=>C>A>>===C==>=>>>>>>>>>>>>>=====A>>>==>>==>>>>==>==>=CC>>>=>>====>>====>=======A======>=====================$$!=====!==$===x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ! @üÿÿÿÿÿü !q¥õÿÿþÿÿþÿÿÿÿÿÿýþþþþþþþþþþþþþþþæÓ8686666656666666666665656665666686686i6566666666666666566666i666666566665666666666666666i65656666666656666665668666866666666i6656656666666666566666666668666666566666566666666i6666665666656656666668666666666666i565666665566668666666666665666666666666866666566666666656666i5665666666666666666666666666666566666666666666665666565666566666666666i666666566666688656866666666TTT"TT  TTTT""TTTT""TT""TT""TTT""TT""TT""TTTTTT""TT""TTT""TTTTTT""TT""TT""TT""T  ÓÓÿþÿþþýÿýÿþÿþÿþþþÿüóóóúúóóóúúò¬q==>=>A==>=>===>======>>>===>>>>=>==>>====>>=>>=>>>CC>>>>>>>=>C>>>A>>>AC>>=>C>=>>>=AC>>>=>>>>>C>>CC>>>?>=>>C>>>>?C>>>C>>{òÿÿÿÿÿÿßu>CC>>>>>>CCCC>>CC=>>?>>?>>>C?>AC>>?>>>>>=>CC>C>>CC>>C>A>>>>>>CCC==>>>>C?>>>>>>>>>CCCC>>C>CC>>AC>>>?CCA?A?==>>>>>>>>>>>>>=>C>A>>>=>C>>>==?>>A>>>=C>>>>>>=ACC=>=====>>>====>>>>=>>A=>>>====>=>>>=>>>====>=>>=====>============>==============>=======A=$====>======$======$!$z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ… !ÎÿÿÿÿÿÿÌ  $}ªíþÿÿþÿÿþÿÿþÿÿÿþþþþþþþþþþþþþþþæÓ66666666666656556666656666666656566666656666666666666666656656666566666666668666665i66666656666656686666666666665666665666686666666666566666568666656666665666668665666566656i6665666666565656666666666666666665666668666666i656666666666666668566666i66666655656666666566666666686886666656666666665666666666566666666666656666566666666666666666666566666665666566565566666666666656666T:TTM""TT  TTTTM""TTTTM""TM""TM"TTTTM""TM""TM"TTTTT"TM""TM"TTTTM""TT"TT"TM""TM""TM""TM"T  Ó×ÿþþÿþÿýÿþÿþþþþÿþÿ÷óúóóóúúúóóò¬q===>>>>>==>>===>=====>>===>A>==>>>>=========C>=>>=>C>>=>>=>=>C>>=?C>=CC>===?>>>C=>CC>>>>CC=>>CC>CC>=>C>=>C>>>>>C>A>>>A>Æýÿÿÿÿÿ÷”CC>CC>>>>>CC>CC>>>>>>>>=>?>>CC>>C>>C>>>>>>>>?>CC???>CC>C>??>>>>?>>>>>?C>>CC>>>>>>>>CC?>CCCC?=>>CCA?CCCC>>>>>>C>>>>=>>>?=>>?C>C>=>>C>=>>=>==CCC>>>>C>=>>>>>lC=>>===>>===>>>===>=>A>=>>=>>====>>=>==>>===>=>=============>====A===========>>====>=====>====================!$$z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò; –ÿÿÿÿÿÿÏ=}ªõÿÿþÿÿþÿÿþÿÿÿþþþþþþþþþþþþþþþþæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT66656666656666665665666656686666656665666665666665666666666i66666565666556686i66666566656i666656665566565666666666565656i66655665666666656666666566666666666666666666656565656656656666656665665665666666666556556i56666666656656656565656666666656665686666i556556566666656i56658665685665666666665566686666566666656666656665666666656666665666666565666568866566665666656666TT""T"TTTTTTTTTTTTT"TTT"TTTTTTTT"TTTTTTTT"TTTTTTTT"TTTTTTTTTTTTTTTT ÓÓÿþÿþÿýÿþýÿþÿþÿþþÿü÷óúúúóóóúúò¬p==>========>==>=>AA>A>>=>==>>=>=>=>==CC>>>>>>==>>=>=>C=>?CC>>>>C==>>>==>>>C>>=CC>=A>>>>=>>>=>C>>>?>==CC>>>>>=>>CC>C>>CußÿÿÿÿÿÿÎuC>>>>CC>>>>>>>>>>?CC>?=>??C>>C>>>CCC=>>?C>C?>>>>>>?>>>>>>C>>>>>>>>>>>>>>>>CCClCC?>=>>>=>CCCC=>C>?>>>>>>CCC>>>C>=>CCC>>>==>=C>>>=C>>=>C>CC>=C>=>>>>>>===>>=>>>>AA=>C>>>=>CC==>=>>>?>===CC==>>=>>>>=>C>====>=>==>==>==>>===>=>=$=>>===>=====$=======$=====$===================x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„!ÿÿÿÿÿÿá!  =q¥íÿþÿþÿÿþÿÿþÿÿÿþþýþþþþþþþþþþþþæÓTTT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TTTT:TTTT:TTTTT"TT:TT65655665665656666656566656666666656665656666566666666666686565566666666556688566i6666686666665666666665665665656666666i666566566566668665666666568666566666656666665566566566656i5665666665665666665666666665666666866665655666666666866656565668866666666566656666666565655668866866i566665565655i6666666656666666666656666566656656665685666566666666666666665566566"T""TTTTTT T"TTTT""TT"TTT""TT""TT"""TTTT""TT""TT"""TTTT""TT""TT"""TTTT""TT""TT""TT""TT""TT""TT"""T" Ó×ÿþþþþÿþÿÿþþþþþÿþÿúó÷óóóúúúóóòÓo=>>=>>====>=>>==>CC>>A>=>>>>>==>=>=>>>CC?C>>>>=>>=>=>>>>>CC>=>>>=>>>===>>>CC>>>CC>>>>C>>>=>>>=>>>=>>=>>C>>>>>>CC>>>>>C{ñÿÿÿÿÿþ›CCC>>>?>?C>>=>?>>>CC>?>>>??>=C?>=?CC>=?>>CCCC>>?>>=???C>>CC>>>>=?C>>CC>>>>>>ClCCCC>=>>>>>??CC>>>C>>>>C>=?CCC>>C>=>C>>>=>>=>>>>>>>C>>>>>>CC>=>=>>>>>C>>=>==>>>C>>C>A>>=>>>>==>>=>>>>>>>>?>>>>====A>>>====>=>>>==>==>>>>>===>>===$>>=====>============$==========$$=====$$=====x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá[ÿÿÿÿÿÿñ   p¥õÿÿþÿÿþÿÿþÿÿÿþþþÿýÿýþþþþþþþþþæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT856666666665886666565665656566666666566666666665586665666565566666566566i56656566656666666i666666566666666666666666666655658i5666666666i666556656566665666566565666865666666566i6666666666566866666656666656566665866566668655666686586688666666666666666665i565666666656686656866666666666666656666666566656665666665666566666565i6565565666666565686656566666666665666665656666666656TTTTTTTTTTTTTTTTTT"TTTTTT"TT"TT"TTTTTTTTTTTTTTTTTTTTTTTT ÓÓÿþÿþÿþþþýÿþÿþÿþþÿüúóúúúóóóúúò¬Žl>>===>==>>===>===>====>=>==>==>>>>>=>>====>===>>A>>===>>=>>C=>>>==CCCC>>>>>C>>>=>>>>>C>=>>CC>>>>>>>>?>>>C>>>>>>>?CC>=Aüÿÿÿÿÿò{>?>>?>CCClC>CC>>>C>>CCl>?CC>=>C?>?CCCCC?>>>>?>>>?C=>C>CC>>>CCC>=CC>>Cl>>>?>>?>>>>C?>?lC>>=>>>=>C>>>C>>C>>>>=>>>>>CCCA>=>lCC>>>>>>>=>C>>=>>>>C>>>=>>A>>>>C=>>>C>>>==>CA>>>=>>>>>C?===>=>===>>>>A>>>>==>>>>>==>>====>>==>====>=>===A=====A======>====$=>===========A==!$=======xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü#Yÿÿÿÿÿÿñ!!!=qªõþÿÿþÿþÿÿÿþÿÿÿþþýþýþýþþþþþþþþæÓXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXbXXbXX66666656666666665656666i86666566666665566565666i6665666556666556666565i8666666i66666666566666665665665655566666666566566666i6665665666i665666655666656656666666665666666666656566556666665656665666i686666666866866665666665666666666556686566566i666566666666686666686666665656666666666666686556666565666566686566656565665666668666666866666666666666656656666666668666665656666TTTTTTTTTTTT"":TT"T"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓ×ÿþÿþþÿþÿþÿýÿýþÿþÿóóúóóóúúúóóò¬Žo>>==>===>=====>=>========>==>=>CCC?=>=>===>===AC>>>=>=>===>>=CC>=>lCCA>=C>CC>C>>>==C>>>>>>CCC>=>>>>>>>=>>>>>>>=>CCC>>CÌÿÿÿÿÿÿßu>>>=C?ClCCCCCC?=>lC>>lC>?CCC>>CCCACCCCC>>>>>>?>>CC>>C>>C>>CCCCC=>>CCCCC>>>>>>C>=>?CCClC?>=>?>=>>>>?CC>>>>>>>C>>>>CC>>C>CCCCC>>>>>>>>C>==>>=CCC===>>>>CACC>>>=?>>>=>>>>>>======>CC>====>==>>=>C>>A>>=>>C>>===?>=====>=>======>=>===A>=======>===>================A============x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@üÿÿÿÿÿó@ !  ! =s¥õÿÿþÿÿÿÿþÿÿÿÿþþþÿýÿýÿýÿýþþþþþæÓ·········³··³··············³··········³···³³·³··³··¸·¸·¸········666665i656666686866i6556666686666666656866666665666666666666566666666666666665666566655665666556566656666665i5666666666656665665665666i5665666666666666666566666666666666656566666566665665666666556665665665666666668666866666656666666565666666666666586656566665666666556658i6666665666665686666666866666655666666666i66665565566565666666i86565666666566566666668655i686665666566666TTTTTTTTTTTTTTTTTTT:TTTTTT"T"T"T"TTTTTTTT""T""T"T""""""TT""T":TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTM ÓÓÿþÿþÿþþÿþÿýÿýÿþþÿüúóúúúóóóúúò¬so=>===>>>===>>>>==>==>>>>>>=>>====>>==>>==>A==>C>>>=>>=C?>=>>=>?>==CA=>>=>>>C>>>>>>CC>>>??>>=>>CACC??>CC>>>>CC>C>>>>>CußÿÿÿÿÿÿC??>>>>>C>=>CCA>>>CC=>CC>>>>>ClC>C>?>>CCCC>CC>?=CC>>>CCC??>Cl>?>CC>CC>>>CCC>>CC>>>C?C>C>>>>>Cl?>CC>>?C>>>>?CCC>>>C>C>>>=>>>CC>>C?>>>>CC=>CC>>>C>>?>>=>>>>>>>>>>>=>C>>>>>>C=>>>>>A=>>>>>>=>?C>==>=>==>=>>>>>==>====>>===>>=>>>======>===>>>======C>======>====>============$$==zóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ @óÿÿÿÿÿóY !=sªíÿþÿþÿþÿÿÿþÿÿÿþþýýýýþþþþþþþþþæÓ³³³³³³³¸³³¸³¸³³·³³¸³³¸³³¸³¸³¸³¸³¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸³¸³¸³¸¸¸¸¸¸¸¸6666666566666666666566666666666656656666566665656685668688666856666555665655666665665666566566666666686566566566666666665666566566566666666666566568655566566665655665666666656666665666656666566666668668668656666656666666656666566666566666666665666666666665665656666666665666665666665655668i8668666565656666685656666566656565566i665688666656686565666666666666656666656TTXTTXTTXTTXTTTVTXTXTXTVTXTTTTUTTTTTTVTTTTTTTTTTXTTUTTTTVTUTVTTUTTVTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"T:T"TTTTTTTTTTTTTT"TT"TTTTT"TTTTTT"TTTTTT"TTTTTT"T"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TT:TT:TT:TT:TTÓ×ÿþÿþÿþÿýþþÿýÿýÿþÿúóúóóóúúúóúò¬so>>==CC>====>>>===>>=>A>===>CC====>==>>==>>>>>>>>=>>>>=>C>>>>>>=>>>==>>==>>>>>>>=>?CC>>>>C>>=>CCC>>CCCCC>>CC>?CC?>>>>?uèÿÿÿÿÿúƒ>>CCCC>>>>=>>>>>>>>>>>>>>>?>>?lCCC>>>CCCC>>??C>>CC>>>CCCC>>?C>>?CC??C>=>?CCC>>>>>C>CCC>A>C>>lC>>CC?>>CCC>>?CC?>>>>C>>>>=>>=?C>>>A?C>=CA>>CCC>>>??>>==>>>=>A>>>>==CC>===>>>C>=>>>=>>C>>>>>>>>>====>===>>>>>>>=====>>>>>===>C>>=======>==CC====>=>>>>===============$==A========z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷;óÿÿÿÿÿ÷Y !! $sªõÿÿÿþÿÿÿþÿþÿÿþþþÿþÿýÿýþþþþþþþæÓ³³³³³³¸³³³³³³¸³³¸³³¸³³¸³³³³¸³¸³¸³³¸³¸³¸³¸³¸³¸³¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6666568666666556666666656666665666686665666655566656665856668866665666666566665666656686566i666656566866568566666656666666665i65668656565i8666666666686665566666686666865568656566665666666666666666665668666666656666666566666656665i55666655566666665656566556556666866656666666566656666665666566656586666666566666566666666866666565656666666666665666i556656666656686665666658XXXXXXXXXXXXXXXXXXXXXXXXXX^XXbXbXbVbXX^X^XX^XXXXXXXbVbVXXXXXXXXXXXXXXXXXXWXXXXXXXXWXXXXXXXXXXXXXXXXXXXVXXVXXVXVXXXVXVXVXVXVVVVVVVVXVXXX:VVXXXVXTVVXTXUXVVX:XTVVVVXUXXTXTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXTXTXTXTXTXTXTXTXTXXTXXTXXTXXTXXTXÓÓþÿþÿþÿþÿþÿýÿýÿþþÿüúóúúúóóóúóò¬}j=>===>==>>==>=>=>>=>=C>>===C>>>>=>A>>=>CC>>>>>=>=>>>>?=>>>C>C>=>CC=>lC=>C?>>>>>>AC>C>>>>>>>>>C>C?>>CCC>>>CC>>?C>>C?>>zñÿÿÿÿÿõƒ>C>>C>>>lC>>>?>>>>CC>??>>>CC=>C>CCC>>C?>?=CCClC?>>C>?C>C?>>C?>>C??CCC>>???C???>?C>>>??C>?C=>CC>>CC>CC>CC>?CC>>>>>>>?>C>>>CCC>>C>>C>>>C>>>>>C>>=CC>>C>>C>=>>>>>CC>>CC>>>=>>>C>>>>==>>>>==>A>>=>>=>?==>>>>===>>=>>=>>==>>=>========>>=C===>=========C>=======>=$==>=============x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ!;òÿÿÿÿÿóZ! qªõþþÿÿÿþÿÿÿÿÿÿÿþþþþþþþþþþþþþýÿæ×³³¸³³³³³³¸³¸³³¸³³¸³³¸³³¸¸³¸³¸³¸³¸¸³¸³¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸³¸³¸¸¸6666666666666656566565666566668665655666666666856666666686656666666666656566666566666566866656656665686566666666666666666565666586686666565656666666666i6666566666666656666666566666666866665i65i6566666866668666866566865666668666656566666566666668566665656666666666666666666566656556566666656666656686666566666i66866566666665686656i665666666666565666i5i666665656666655665666ºººººººººººººººººººº¸ººº¸ºº¸ºººº¸ºº¸ººº¸ººº¸º¸¸¹¸º¸¸º·º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·····¸··¸··········K··K··³··K·³·K·K·K·K·K·K·K·KJ·J·JKKKWKKJ·JKKWJKJKJKJ·JKJKJKJJJJKJJJJJJJJHJHJGJGGGGFGFFFFFFTXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXHFFFFFFGGFGGGGGGHGHGJGHGJHHJGHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþÿþþþÿþþÿþÿþÿþÿóóúóóóúúúóúòÓm=========>>>===>>=>=>>==>=>>>?C>>>>==>CC>?CC>===>CC>C?>>C>CC>>>CCC>>CC>>CCC=>>=>CA>?C>C=>>>CCCC>C>>>?>>>?CC>>?>C>?C>>{òÿÿÿÿÿñ{>>>>>>ClCCC>CC>>>>>CCC?>>>C?>>C>ClC>>>>?>ClCCCC?>=?CC>>?C??>>>?C>>ClCC?C>?>>CCCC>>>>>?>>>>>>>>>>>>ClCC>>>>CC>A>>>=>CA>>=CCCC>>CC>?>CCC>>>>C>>>>AC>>CC>>>C>>>>CCCC=>>ACC?>==>>>>==>C=====>>>=>>==A>>=?>====>A>>A>>?>=>>=>======>==C>=>C>======>==$==>>===$========>=========$$$xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@!óÿÿÿÿÿóY  qªõÿÿÿþÿþÿþÿþÿÿþýþþþþþÿýþþþþþþþæÓ³³³³³¸³³¸³³³³¸³¸³³³¸³³¸³³¸³¸³¸³¸³¸¸³¸¸¸¸³¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸³¸¸¸¸¸³86666856666666656666666686656668666656668665666666666666656666666666666656666666656666i65666666666656556656865666668i666865655666666668666665566666665686i5686566666666865566666656666666566i666566566685665665656666666665666656666668666656656666656666656656866656656566866566666665666668665866666686656866666566665665666666656666ººº¸ººººººº¸ºº¸º¸º¸ººº¸ºº¸ºº¸º¸ººº¸º¸º¸¸º·º¸¸º¸¸º·¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸·¸·¸·¸··¸¸·¸·³¸·³³·³³·³·³··³³³·K·K³K³K·K³KK·KKKKKKKKKK·J·KK·JKKKKKJ·JKJ·J·JKJJJKJKJJJJJJJJJJJJJJHJJHJGHGGGFGFFFFFFFTXXXXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXXXXFFFFGFFFFFGFGGGGGGHGHGHGJGHGJGJGJHJHJHJJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿþÿþÿþÿþÿþþýÿüÿÿüúóúú÷óúóú÷ò¬Žo>==>==>>==>>=>>A>>===>>=>>===A>>>>>>>C?==A>>C==>>Cl>>>=>>>>>>>>>>C>>>C=>>>>>CC==>>>>CC>>>>>CCC?>>>>CC>C?>C>>>>>>>CC>>”÷ÿÿÿÿÿáu>>C>>>?>>?>CCC>CCCC?C?>?C>Cl>=??CC?C?>>C>>>>>CClC=?l?>>CCCC>>?>CCC?>C??>CCC>>C>??CCC>>>CCC?CC>>?>>CC?>>C>=CACCA>>>CC>>>>>CC>?=>?>>>>>>CC>>?>C>=>>>>>C>=Cl=>>>>?>>>=>>=C>>>>>>=>>>>>C=>>>>>==CC>==C>==>>==>>>>>>==>===>===>A=>====>C===>==>====>>=====>====>============>=====$x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_;òÿÿÿÿÿ÷Z $pªíÿþÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþþýÿþþþþþþæ×³³³³³³³¸³³³¸³³³³³¸³³¸³³¸³³³¸³³³³¸³³¸³¸³¸¸³¸³¸³¸³¸¸¸¸³¸³¸¸¸¸¸¸¸¸¸66686656666656666656566666666666656866565655656666656666565686566656666866656666i6665665566566656668656656656666666866666866686666656666668866566866565666565665566665666566665566665666565688656666666566656666668665666656666865656685666656866668668668568666886666656665666656656656656666666666666665665656866565i686566665868666686ººººººººººººººººººº¸ººº¸ºº¸ººº¸ºº¸ººººº¸ººº¸º¸º¸º¸º¸º¸¸·º·¸¸º·¸¸¸¸¸¸¸¸¸¸·¸¸¸¸³¸¸·¸·¸·¸····¸···¸³¸·····³³··³K³·³³K³³·K·K·K·KK·K·K·K·J·KJ·JKKKKKWKKKJKKJJJJJJ·HJJJJKJJKJJJJJJJJJJHJHJHGGHGGGGFFGFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFDFFFFFFGFGFGGGGGGHGHGHGJHHHJHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþÿþÿþþÿþÿþÿþÿ÷óúóóúóúú÷úò¬Žo===>==>>>>==>CC>>>>>>>>>>>>==>>>>>>A>>=>>>>=>>>>>CCC>>=>CC>>=C?>>CC>>>>>==?C>>>=>>>>>>>C?=>?>>CCC>>>CCCCC>>>>==>C?>>?›úÿÿÿÿÿßZ>>>CC>=>>=>CC?>CCCl>>?CCC??l?>>CC>?CC>>CC?>=llCCCCClC?CllCCCC>>CCCCC>?>>CC?>>>C?>>?>>=?CC>CC>>>>>?C>=>?C>>>CCCCCC>Cl>>>>?CC?>>>>>>>>>>CC>>>>CC>>>==>C=>C?>>>>>C>=>=>>>=CCC>==>>C>>C>CCC>AC>>>A>=>A>==>==>>==>>==>>>>==>>=CA>>=>==AC>=>>==C>===CA====>=>===>>==========>C==$$==z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚@óÿÿÿÿÿ÷Y $pªõÿÿÿþÿÿþÿþÿÿÿýýþþþþþþþýþþþþþþæÓ³³³³³³³³³¸³³³¸³¸¸³³¸³³¸³³¸³³¸³¸¸³¸¸³¸³¸³¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6566666556656666656666656856666656666866666666656665666666666666566686565666666656668666666666666666666665666i66665i668665666666666666566686665666666668665666666866666668666665666658666668658665666666655656666666566686866666666666566666665656665668666666666566566656686686556656665566665i866866668686666586666666566666666666ººººººººººººººººººººººººººººº¸ººº¸ºº¸ººº¸ºº¸º¸º¸¸º¸¸º¸º¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸·¸··¸·¸··········K·³··K···³·K··K··K·KKKKKKKKK·KK·J·J·JKKJ·J·J·K·JKJKJ·JKJKJKJJKJJJJJJJJJJHJJHHGGGGGGGFFFFF³KKKKK³KKKKK³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKK³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKK³KKKKK³KKKKKKKKKKKKK³KKKKK³KKKKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKK³KKKKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKK³KKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKK³KKKKKKK³KKKKKKKKKKK³KKKFFFGFFFGGFGGGGHGHHGJGJGJGJHHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿþÿþÿþÿþÿþÿþþþþÿüúóúúóúóóúúò¬p>>>>====>C>=>C>>=>>===>A>A>=>>=>>>>=>>>>>>>>=>C>>>>>=>>>l>>>>>>>C>>>>>>>>>Cl>>>>>>>>>>CC>>?C>>>>>>?>>>>>>CCCC>>CC?CCCüÿÿÿÿÿÎuCC>ClC>>C?CC>>>>?CCC>?CCCCCC>>CC?>C>CCClACC>>CC>>>>C?>CCC?CCC>=?CCC>>>??C?CC?ClCCC>???C??>CC?CCC>>Cl>>CCC?>?>>CC>>CCCC>>>?>>>>>=>C>>>>>>??>>>>C>C>>>C>>>=>>>=>C>>>>>C?==C>>>>>CC=>=>>>>>>>==>>=>>>>>>>>=>>>==>>====C>=>==>>>>=>===>>==>=>===$=C======>=>======================x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿóZ  !!=sªíÿþÿÿþÿÿÿÿþÿÿÿÿþþþÿþÿýÿþþþþþþæÓ³³³³³³³³³³³¸³³·³³¸³³¸³³¸¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸³¸¸¸¸¸¸³¸³¸³¸¸6566666556656668666666666556566566665665i666665686655566688656566566666666i56666665656685666668865656586666566668566558558656566656666666656666i666566866656566666686666686666666566665666866666666868866666565666666666568665566668656666666666666566656665665666666666666566568666666665668666665666666666556685666666666668656666ºººººººººººººººº¸ººº¸ººº¸ºº¸ºº¸º¸ººº¸º¸º¸¸º¸¸¹¸¸º·¸º·¸¸¸¸º¸º·¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸·¸··¸··¸·¸³·¸³·³³¸³·³··³·³K·³³³K·K·³KKKKK·KK·K·K·KK·JKKKKK·JKJ·J·JJKJKJJJ·JKJJJKJJJJJJJJJJJJJJHJJGJGJGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKDFFFFFFFFFGFGGGGGGGHGHGHGJGJHGHHJHJHJHJJHJJHJJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿýÿþÿþÿþÿþþÿþÿþÿ÷óúóóúóúúó÷ò¬o?>CC>>==CCC>>>===>>====>>>>>?>=CC>>=>>>C>=>==>>>===>=C?CC>>>=>=>C>>C==C>=>CC>C>=>CCC>=>?=>CCC>>>>>C>>>>>>CCCC>>ClC?CCÇüÿÿÿÿÿ×ulC>llClCCC?>>?>C>>lCC?CCCCC>ClC>>>?C>>lCC?CCC>>>>>>>>C>C>>CCC>>>CCC>>>???CCC?CllCCCCCC?>>CCClCCC>>?CCCCCC?>>>>?>>>>C??>>>>>CC>=>CCC?>>>>>>===>>Cl>>>CCC==>=>>>C=>CC>>>>=>>>>C>AC>>>>?>==>>>>>>>>>>=>C>===>=>==>===>>C>=>>C>===C>======>===>>====>>=====>>>===>================z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y  qªõÿÿÿþÿÿþÿÿÿÿÿþþþþþþþþþþþþþþþþæÓ³³³³³³³³³³³³³³¸³¸³³³³¸³¸³³¸³¸³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸¸¸³¸³¸¸³¸¸¸¸¸¸¸86668666666566666666666666656586666556686666666866666656666666586565555665666556665666665666866665666666666656666556565658666665666666665666i66i665668666665666668656566866865566665566666656666565666666555665666766856666686566666866665666566666586656866666666656566866666666666666565658666666666665666656656668666866665666666665656666566666ººººººººººººººººººººººººº¸ºº¸ºº¸º¸º¸ºº¸º¸ºº¸ºº¸º¸¸¸º¸º¸¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸·¸·¸··¸···¸····³··³···³·K·³³·K³·K³K·³K··KK·KKKKKKKKK·KKK·JKK·JKJ·JKWKKKJKJJJJWKJJJJKJJKJJJJJJJJJHJHJGHGGGFGFFFFFFEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFGFGFFGGGGGGGHGHHGHGHJHHJHJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿÿþÿþþÿþÿþÿþÿýÿÿüúóóúóúúóúúò¬so==>>>>===>>>>=>>>=>=>>>>>>>>>>=>>>>==>>>>>C=>>C>C>>>=>>>>>C?=>>>C>>>>>CC>>CC>>>>C>Cl?=CC?>AC>=>lC??>>C?>??C>>?CCC>>CCýÿÿÿÿÿÌlC?>>>ClCCC>>C>C>>>CCCCCC>C>>Cl>>>>ClC>Cl>>?C?C?>C?C?>CC?C>>CC>>CCCC>>CCC>CC>>?CCCC??CC>AlC?CCC>>?>CCCC>>CC?>>>>?CCC?Cl>>>>>>C>CCC>>CCC>>CCC>>CCCC>=C>Cl>>>>>>>CC>>?>>>C>>C>>>>>>>>=>>?>=>=>>>>>=>C>>>>>>>==>>>>==CA==>=A>>C====>>=====>=>===>===>=========>>==========$$======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY =}«íÿþÿÿþÿÿÿþÿÿÿÿþÿþþþÿþþþÿþþþþþæ×³³³³³³¸³³¸³¸³¸³³·³¸¸³³·³³¸³³¸³¸³¸³¸³¸³¸¸³¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸666686666568566656666665666i66565566856i6666656686i586666666656666565666666666665666656i5556565666666665656566688586566665666686686666666688665656666666568666656i666666566666666666686665666666666666666656666566666688666656666656668666666666666658856666566665656685i565656666666666666856666686566666586666665666658666665566566668566866ºººººººººººººººººººººººººººººº¸ºººº¸ººº¸ººº¸º¸º¸º¸¹¸¸º¸¸¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸·¸¸·¸··¸·¸·¸·¸·¸········³··K··³·³·³K··K·K·KK·K·K·K·J·J·JKKKKJ·J·J·J·JKJ·J·JKJKJKJKJKJJJJJJJJJJJHJJHJGGGGGGGFGFFFFFK³KKKKK³KKKKKKKKKKK³KKKKKKKKK³KKK³KKKKK³KKKKKKK³KKK³KKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKK³KKKKK³KKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKK³DFFFFFFFFGGGGGGHGHGJGJGJHHJGJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿþÿþÿþþÿþþþþÿþÿ÷óúúúúóúúóúò¬so==>==>====>>A>>C>==>C>=>>>>>>==>>>=>>>>=>>>>>CCCCC?C>>>>>=>CC>==C>=>>>>CC>>C?>=?l>>C>>lC>>>>=>CC>>C>>>>>>?>>>>CCC>CCCÆýÿÿÿÿÿÌlC>>>>>CCC>>ClC>>>>>ClCCCClCCllCC>?Cll>>C>>>?C?CCCClCCCCCC>>>???C>>>CllCCC>>>>>>>>>CCC?>CC>>>>>>>>CCC>>=>ClC>??CCClCCCC??C?>>>?C>>>CCC>>>>>?CCCCC?>C>>ClC>C>=>>CC>>?CCA>>>CC>=>=>>>>>CC>>>>>>=>=>>>>===>C>>>>===>AC>=>==>==>=>>==>>=>>>==A>===C====>>==>=>=>>===========!======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y!!  !!=sªõÿÿÿþÿÿÿþÿÿÿÿýýþþþþþþþþþþþþþþæÓ³³³³³³³³¸³³³³³³¸³¸³³³¸³¸¸³³¸³¸³¸³¸³¸³¸³¸¸¸³¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸³¸¸³56566666586665666666565686666686i6686556666566865565666665656666666656656666665566556565666666668566666666666666656666865666666666666665665666666666566688666566668666666666i66668666658666566686688666566666886566566666665666656665686865566668656566666666666666666686566i566566566666666666866566656666666686668666666666i666656566665666ººººººººººººººººººººººººººº¸ººº¸ºººº¸ººº·º¸º¸¸º¸¸º¸º¸º·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸·¸·¸·¸··¸···¸³··³·³³·³··³·³·³³K³K³K·K·KKK·K·KKKKKKKK·KKJ·K·JKKKKJKJKKH·J·JJJKJJJJJJJJJJJJJJJJJJJJJJHJGJGGGGGFFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKDFFFFFFFFFFGGGGGGGHGHGHGJGGJGJGJHJHJHJHJJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþÿþÿþÿþÿþþÿüúóóúóúúóúúò¬p>===>A>=>>>>==>>>==C>>>=>>>>>>>==>>C>>>>>?C>=>?>?>>>>>>>C>=>C>>>CC=>CC>>?>>>CC?>CCCCCA>CC>>>??CCC???C>>CC??>>>>C>>>CCüÿÿÿÿÿÌC>CCCCC>?lC>>lC>?C?>>CC>>CC?>?CCC?>CCCCClC>CC>>?CC??CC?>CCCC>???CC>>Cl?>CC>>?>CCC?CCCCC?CCC>>>>?>CClCCC>>ll>>>?>>?CC>??C??CC?>CC>>>?CC>>CC>>CC>>>>CC>>>?>>>lAC>>>=>>>A>CC>>CC>>>=>>>>>>>>>>>>>=>?==>C>=>>>=>=>>>=>>>=>==>>>>==CC>====>>=>>>>====>==>===A=======>===============x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóZ! !qªíÿþÿÿÿþÿÿÿþÿÿÿýÿýþþþÿþþþþÿþþýèÓ³³³³³³³³³³¸³³³¸³³³¸³³³³³³³¸³¸³³¸³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸³¸³¸³³¸¸¸¸¸¸6566566656666566666868665i666566566666686666566686665656666658666666i666656666566665656666666665866i655566666666666666566665666556665856i666656866655665686656556566666655656666666666656685656i5566665686655566666656666666666866666686665686666665666686666866666666685666665565666668666666666666676866656656666ººººººººººººººººººººººººº¸ººº¸ºº¸ºº¸ººº¸ººº¸º¸º¸º¸¸¸¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸··¸··¸¸··¸··³··³··³·K·K·³³³·³·K·K·K·K·KKK·K·K·KKKK·J·JKKKWKKK·J·J·HKJJKJJK·JKJKJJJKJJJJJJJJHJHJHHGJGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFGGFGFGGGGGHGHGHHHGJHHJHHJHJHJJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþÿþÿþÿþÿþÿþþÿúóúúóúóóúóúò¬o====>==>C>=>>>=>>=>>>>>>====>>C>=>CCC>>>>C>=>>>=>>>====>C>=>>CCClCCllC==>C>>ClC>CCCC>?CCC>>CCCClC?>ClCCCCC>>?C>>?>>>>ÆýÿÿÿÿÿÌuClllllCCll>>lClCCl??lC>>??>>C>?lC????lllCCC?>>C?C>>>C>>>ClCCClCC?>>?C?>??>>CCCllCCCCC>>>?C?>>C?>>>lCCCC>CCCCCCCCClCC>>?>?CCC>CC=>??>>>>?>C>>>>>=>>lC>>==>?CClC>>>>>>>CCC>=>>?CC?>>>>>>>>CA>>>>>>>>CCCCA>=>>>C>>>=>>>=>>CCA>=>C>=>======A>=========>==>>==>====>C======>>======x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z!   pªõÿÿÿþÿÿÿÿþÿÿÿþÿýÿþÿýþþþÿþþþþÿàÓ·³³³³³³³³³³³³¸³¸³¸³³¸³¸¸³¸³³³¸³¸³¸³¸³¸¸³¸¸¸¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸68666656656656556666655666666665565586666868666i68666665666666666565555666666665656555555668666686665566566565656655i66565566856656665666866666658656665666665666565666i66686566566656565568666566568586656866666665665665655665666656666666666656656666666866568666666666656666658666666655668668666665556556666865686866566666566556666666565666ºººººººººººººººººººººººººººººººººº¸ºº¸ºº¸º¸ººº¸º¸ºº¸º¸º¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸³¸¸·¸¸·¸·¸·¸···¸··¸·¸········³··K··K·³·K·³·K·K··KKKKKK·KKK·J·J·JKKKKKJKKKKKKK·JKJJJJJKJKJJJKJJJJJJJJHJJHJGHGGGGGGFFFFF³KKKKKKK³KKKKK³KKKKKKKKK³KKKKKKKKK³KKKKKKK³KKKKKKKKKKK³KKK³KKK³KKK³KKKKKKKKK³KKK³KKK³KKK³KKKKK³KKKKKKKKK³KKK³KKK³KKKKKKKKKKKKK³KKK³KKK³KKK³KKKKKKK³KKKKK³KKK³KKK³KKKKKKKKKKKKK³KKK³KKK³KKK³KKK³KKK³KKK³KKK³KKKKKKK³KKKKK³KKK³KKK³KKKKKKKKK³KKK³KKKKK³KKK³KKKKK³KKKKK³KKKKKKK³KKK³KKKDFFFGFFFFGFGGGGGHGHGJGJGJHHJHHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþÿþÿþÿþÿþÿÿüóúóúúóüóúúò¬Žo=>>>>=>>>A>=>>>=>>>=>>>>>>>>>>>>>>>>>>>>>CC>=?C>=>C>=>>AC>=>>>C???>?CC=>CC>>Cl?=CCCCC?>??>CCC>CCC>>CC>>CC????C>lC>>ACýÿÿÿÿÿÌC>CC??CCC>C?CCClCCC>>lC>>CC>>?>CCCCC?CCCCClC>CCCCC>?CC??>?lCCC?>Cl?>C?CC???>?CCCClCCCCC????C?>??CCC?C>>C??>Cl>>?>CCCC?>C>>?C>ClC>>lC>>CC>>lC>>>>C>Cl>C>>>>>>?C?=>C>>>>>CC>>=>>>CC>>>>>>>>AC>=>>>>>?>>>>>=>>>A>>=>=>>==>>A?=>==A=>=>===>=>>===>=======>=>====>===>===>=======>==z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !óÿÿÿÿÿ÷Y!9qªíÿþÿÿÿþÿÿÿÿÿÿÿþþþýþþþþþþþþþþþæÓ³³³³³³³³³¸³¸³³³³³³³¸³·³³·³¸¸³¸¸³¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸55666666686566656566566565665666i668666668656555665656665668565665666666556558865558656656688668668666665566666666566656656688666655666566665665665668i58666656665666665656665556666566655666666686666665i5656666565566565686868686656565586665856565668665555i65866668656665i6686665666865666666566565566686666666866568586856866668656656666566566655ººººººººººººººººººººººººººº¸ºº¸ºº¸ºº¸º¸ººº¸º¸¸¸º¸¸º¸º¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸··¸·¸·¸·¸·¸³¸·³··³³··³³··³K·³³³³³K³K³KK·K·KKKK·K·KKK·J·J·JKK·JKKWKJ·HKJ·HJJJ·JKJKJJJJJJJJJJJJJJHJJHJGHGGGGGFFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEFFFFFFGFFGFGGGGGGGHGHGHGJGHHJGJHJGJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿþÿþÿÿþþÿþþÿþÿþúóúúóúúóúúóò¬m=?>==>C>>>====>=>>=>==>?>>C>===>CA>>C>>==>C>>>C>=>C>CA>lol>>>>C>>>=>>CCCC>=>>>>=>???>>>>??CC?>?>>>C??>?>>ClCCCCCC>ClCÇýÿÿÿÿÿÌlCA>>>C>>>>>CC?CCCC>>CllClC>>>>C>?C>?>>>>Cl>>ll>>llCCCClC>C?>>>C?CCCllllC?>>>CC?>?CC?ClCCClllC?CClCCC>>>CCCllC>>CCC>C>>?>>>>CCC>>>CC>Cll>ClllC>CCClCCC>CC>>=>CCC?>CC>>>>>>>>>CCA>>>>>>?>=>>>>=?ACC>===>=>CCC>==>=>===>>>==>====>>===>====>=>>AC>C====>==>======>>=============>{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY  !!$sªõÿÿÿÿþÿÿÿþÿÿÿþþþþÿýÿþÿþþþþÿþþæÓ³³³³³³³³³³³³³³³¸³¸³³³¸³³¸³³³³³³³³³³³³³¸³¸³¸³¸³¸³¸³¸³¸³¸¸³¸¸³¸¸¸¸56558665666666566665656865656568666665656666666666665666658666666666665666666666566666568665686666686556558566556566568666566566665886685556566555658868865666656686688666666865i5665656666556655668i566666556656666655655566666666565656666656566665866566666i5566686666565866566665568i5656866565666666566865866666668656665665658666655655656666ºººººººººººººººººººººººººººººººº¸ºº¸º¸ºº¸¸º¸ºº¸º¸º¸¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸³¸·¸·¸··¸·¸···¸··³···³···³····K·KK·³·K·K·KK·K·KKK·KK·JKKKK·J·J·JKKJKJ·JJ·H·JJJJJJJJJJKJJJJJJJJJJJJHJGJGHGGGFGFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEFFFFFFFFFGFGGGGHGHGHGHGJHGJHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓÿþÿþÿþÿþÿÿþÿþÿþÿÿüóúóúóúóúóúò¬o>?==>>>>>=>C>==>>>>>=>=A>>A==>>?>>>>>>>>>A>?>>>>>>>?>>>Cl>>?=>C>?C>>>>CC>>CC>>>>>?>>?>???CC?CC>>?CC>?lC>>ll>>C?ll?>??ÆýÿÿÿÿÿÌlC>>??CC?CC>ClC?C>C>>AClCCC???C?>Cl?C?C>>ClCCCCC>Cll>CCC??CCCCCC>>CCCCCC?>A>ClCC>>CCCCC>?CCCCCC??C????C?CC????>CCC?CCC>?CCCCCC>>CC>?>>lC>?C?Cl>???C>>>CC>>>>>??>?>>C?>>>>C>>>C>C>>>>>>>>>>>>>>>>>>C>>>>=>>C?=>?>==C?==>>=>==>>=>==>=>>>>===>>==>==>==C===>===>==A>===>==>===>==z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y !qªõþÿþÿÿþÿÿÿÿÿÿÿÿþÿþþþþþþÿþþþþÿæÓ·³³³³³·³¸³³³³¸³³³³³¸³³¸³³¸¸³¸¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸8666666556858686666666655656666666865655686565566855566866865666666666655666566668665668666685i68668i6866556565566656666656666686666666666665686666856556866566666656566666i6666566666655666666568666666866665566556666668655566666655655568566666556666566666566656656i65665666566656666866586666658566666665656566668688666566585ºººººººººººººººººººººººººººººººººººººº¸ººº¸ºº¸º¸ºº¸¸¹¸º¸¸¸º¸º¸¸º¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸·¸·¸¸····¸¸·¸·¸·¸······K··K····³K··K·K·K·KKK·KKKK·KK·J·JKKJKKJ·J·J·JKJKKJKJ·JKJJKJJJKJJJJJJJJJJJHJHHGHGGGGFFGFFFFK³K³KKKKKKK³KKKKK³KKK³KKK³KKK³KKK³KKKKK³KKKKK³KKK³KKK³KKKKKKKKKKKKKKK³KKK³KKKKK³KKKKKKK³KKK³KKK³KKK³KKK³KKKKKKK³KKK³KKK³KKK³KKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKKKKKK³KKKKKKKKKKK³KKKKK³KKKKK³KKK³KKKKK³K³EEFFFFFGGFGGGGGGHGHGJGHHGJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿýÿþÿþÿþþþÿþÿýÿþüóúúóúóúúúúò¬Žm=?>>==>==>>>=>CCCCCCC>>CCC>>>>>A>>CC>>CCCCCCC>>=>>?CCC>CC>>C=>>>>>>>>>C>>CCC>?ClCCCCC?>C??>C>>CCll?>Cll>>?>>>>>ClC>>?ÇüÿÿÿÿÿÌlC>?CC>??C>>>?>?>>>CllCCCllCCCC>?lllC>Cl>ClllllC?>?CC?>?>?CClCCCC>??CCCClCllllCCC>>CC>>?>>>>>??>>?CC>CCC?>?CC>>ClCC>?>>CllllC>>CCC>>>ClC>==CCC?>CC>>>>??>>CCCC>>>>CllC>=?CCCC>=>CCA>=>>>>>>=?>==>>CCC>==>>>==>CC>CC>==>>==>>>?C>==A>>>CA==>===>======>C===C>=A=======>==>==>===z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY! !  !qªùÿÿÿÿÿÿÿÿþÿÿÿþþþþþþÿýþýþþþþþþæÓ³³³³³³³³³³³³¸³³¸³¸¸³³¸³³¸³³·³³¸³¸¸¸³¸¸¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸665686566865655868655666855656666666666568665656666666666i6866566686566668668666655686666668666666566666686865865566666568666666555666656665656656566686655666i66666666656666566665665656668666866656665666656566666658666856656665666666656666566565665656666665665556668655686655556586668656565656666656656568666666566ºººººººººººººººººººººººººººººº¸ºº¸ººººº¸¸º¸º·ºº¸¸¸º¸º¸¸¸º¸¸·º¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸·¸¸·¸···¸¸³··³·³··³·³·³·³·³³³³³K·K·K³KK·K·K·KKKK·KKKKKKK·KKKKKKKKKH·H·JKJJKJKJJJKJJJJJJJJJJJJJJHJHJHHGGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFGFGGGGGGHGHGHGJGHJGHHJHJHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿÿþÿþÿþÿÿÿþÿþÿþÿüúóóüóúúóúúòÕp=>>>>==>==>>>>>>>=>CC=>=>C>>>>>C>>?>>>CCC>>CC>>>>>>>>?>?C>C?>>C>=>C>CCC>>CC??CCC>>?CCC?>?>CCC>?CCC?>>CCC>??CCCCCC>>??ÆýÿÿÿÿÿÌlCCCCC?>CCCCC>ACC>>ClCCC?CCC>ll?CC?CCCCC?ClClC?CCC>?lC>C?C>?ll?CCCCCCC>>CCClCCC>?lCC?>?CCCCCC?CCC>C?>Cl??>>lC>>CCCC??>>?CCCCl?>C>?C??CC?CC>>???>Cl>?>>CC?C?>C>AC>>>lC>>>>C>>>>>CC>>>>>>>>CC>>>=>=?CCC>==>>>>=>C>>>>>>=>>==AC=>>>>=>?==AA>A===C===>=>=A>==>>=>>====>=======>====z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!óÿÿÿÿÿ÷Z    =qªíÿþÿþÿþÿÿÿÿÿÿÿþÿýÿýýÿþÿþþÿþþþæÓ³³³³³³³³³³³³³³³³³³³³¸³³³³¸³¸³¸³³³³¸³³³³¸³¸³¸³¸³¸³¸¸³¸³¸³¸³¸³¸¸³¸688i66666685666666565666665666866668566666686665i8866566655666666656656666866668666566666868565666666566686i66666666656665566566866568666668666865666868856656566666666666566i5668668656666566866656656886686666686656868656665686566685665i8665566656666668668686866566556655666666668668665668666666655668ººººººººººººººººººººººººººººººº¸ºº¸ººº¸ºººº¸º¸ºº¸º¸º¸¸º·¸¸º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³·¸·¸·¸·¸····¸·¸··³···³··³·K·K·³K³·K·K··K·KKKKKK·KKK·KKK·KKKJ·KWKKKWKKJKKJKJJJJJKWJJJJJKJJJJJJJJJJHJHJGJGGHGGFGFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKDFFFFFFFGGFGGGGHGHGHGHGHHHGJHJGJHJHJJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþÿþÿþþÿþþÿýÿÿúóúúóúóúúúóò¬q?>=?>>>CCCClC==>=>>C>>C>>>CCC>>>>>===C>>>>>ACC?CCCCCC>=>ClC>>CCCCCl>C>>CC?>???>C?>=>>?CCCCClC?????C?>>>>CCCllllC>>CC>ÇüÿÿÿÿÿÌlClCCC>?CCCC?CllC?CC?>>CCC?>Cll?>>>>>CCC>CC>???ll?>Cll???CCCll??Cll?>>>>>>C??CCClC>ll>>lllC>>>>AlCACCCC>>>>>>>>??>CCC>>C?>>?llC>>C>>>=>>>lC?>>>>CC??>>?lll?>CC>>?=>>>>>=>??>>>?lCC=>C>=>>llCC>>C>===>>>CA>A>==>>===>==>C>=CA===CC==>==>CA>>=>>===C==>>===>=====>==>============zóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY  ! !  qªõÿÿÿÿÿÿÿÿÿþÿÿþþþþþÿþÿýþþþþþþÿæÓ³³·³³³³³³³³¸³³³³¸³¸¸³³³¸³³·³³·³¸¸³³³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸³³¸¸¸¸³6666886566666666665i666666686665665666866686566666866656866666666565666566686666666866566566668666666666686866556566656686666866666656666i66665656666666566666666666665668666686656i65666866666686656686666866686666666666666665i86556666i656666566665666666686668668666665686666686685868666i5666666658ººººººººººººººººººººººººººººººººººººººº¸º¸ººº¸ººº¸¸º¸º¸º¸º¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸¸·¸·¸·¸··¸········³··³··³·K³·K·K·K··KKK·KK·KKKJ·J·KJKKJKKKKKKKJ·J·J·JKJKJKJKJJKJJJJJJJJJJJJGJGHGGGGGGFFFFFF³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKK³KKK³KKK³KKKKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKK³KKK³KKK³KKK³KKK³KKK³KKK³KKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFGFFGFGGGGGGHGHGJGJGHHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓÿþÿþÿþÿþÿÿþÿÿþÿþÿüóúóúóúúóúúò¬p>=>=>=>>>>CC?=>>>=>>>C>>>>>>A>>>>>>>=>>>>>>CC>>CCCCCC>=>CC=>CCCCCC>CCC>?>C>CC>CCC>CCCC?>C?ClC>?C??CCC>???CCCCCC>>Cl>>ÆýÿÿÿÿÿÎC?CCCCCCCCC?ClCCC?C?CC?llCC>?CCCC?>CCCl?>Cl?>C??C?CC?CCC?C?Cll?>CCC??CC?CCCCC?lCCCC>CCCClCC>>lCCCC>llCC>>CC>>CCCl>>Cl?>C??CC>?lC>CCCCC?C>CCC>>?CC?CC>>??CCCCC>>>>>>>>C>>>lC>>>>CC?>>>>>?CCCC>>>>>>>>>>>AC>>>>=C>==C>==>>>>>>===>>?====>l==>=>C==>C>==>===A>========>===>=======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!9qªõÿþÿþÿÿþÿÿÿÿÿÿþþÿýþýþýÿþþþþþþæÓ³³³³³³³³³³³³¸³¸³³³³³³¸³³¸¸³¸¸³¸³³¸³¸¸¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸66565i66666666666555666565i686866656666556666686666665656666666566668686856666656656666666566666i666555666666666665656686686665656666666666668668668566568666866666656665666886666665i666565i55i66666666565666668i566666666565686665666665586656566866866686866666665668656665866666556866656656666ººººººººººººººººººººººººººººººººº¸ºº¸º¸ººº¸¸¸º¸¸¸º¸º¸¸·¸·º·º·º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸····¸··³·³··³·³³··³³K³K·³³K³K·KKKK·KKK·KKKKKJ·J·JKKKKKJ·JKJKJ·H·JJJJJJJJJJJJJJJJJJJJJJJHJHJHJGHGGGGFFFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEFFFFFFFFGFGFGGGGGGHGHGJGGHGJGHJGJHJJHJHJJJHJJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿÿþÿþþÿþÿþþÿþÿú÷úúúúóúúúóòÕp=?=>>>>===>>==>C>====>>=>>>>>CCCCCC>CC>>>>>?>>>C>>>>CCCCC>=?C?>>?>>CCC>CC>>>>>>>>CCC>>?>>?ll?CC?CClC??CC?CC>>>lllllCCÇýÿÿÿÿÿ×uA>?CCC?>CCCCC?????>>>Cll>?CC?>?CCCllloC?ll>>>>CClC>>>Cl?>>>?C>>>?ClllCC>>>??>?Clll??llC?CCClllll?>CC?llCCCCllClllC>CC??ClC>>>CC?>?lllC>>>>C>CC>?>ClCCC>>>>>>?C>>>CCClC>>ACC>>=>>>CCCC>>>=>===>>CCC>>=>=>>>C>CC=>>CC?CC=>ACCC>>==>>>>==C=========>==>=======C>=A>>=>=>==>>====={÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿóY    !!! ! $qªõÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿþÿþÿýþþþÿþÿàÓ³³³³³³³³³³³³³³³³³³¸³¸³¸³³³³³³³³¸³¸³¸³³³¸³³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸³¸³668666685668666565686568868686668665866665866686558658568666666865565656666656666658666656666i66665655656655666565565865666686665656666686656686568866656566876665666665656656666855656866668666588565656666555566665865655665865686566666i585666665656565666666565665655666686666656866566665556866766668ºººººººººººººººººººººººººººººººº¸ºººº¸ºººººº¸ººº¸º¸¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸·¸·¸···¸¸···¸···³··³··K·K·³³·K³K·K·³···K··KKK·KK·K·J·J·J·J·J·JKKWKJKJKJ·JJJKJKKJJJJJJKJJJJJJJJHJHJGJGHGGGGGFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFGFFGGGGGGGHGHGJGHHJGJHHJHJHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþÿÿþÿþÿÿþÿÿüóúóóúúóúúúò¬o?>>=>>>=>C>=>>>>>A>=>C>>>>>>>>>>>CCC>>>C>>>>>CCC>CCA>?CC>?>?C>?>CC>C>>?>CC>>??A>AlCC>>C???C?ClCCCCCC?>ClCCC>>CCClC?CCÇüÿÿÿÿÿ×lCCCC??>ClC?C??lC?C>??CCC?Cll>>Cl?CC>loC?C?C?CCClCCCCCCl>>lCCC>??CCl??lCC>>?>>ClllC>?CCCCCCCC?Cll?>CC>Cll?>ClC>CCllC>CCC?ClC>?>CCCCCCCCC>>C?CC?C>>ClCCCC>>>>>CC?>>CCCCC>>>CCC>>??>?C?CC>>>>>=>>>>CC>=>>>>>=>C>>>>>>>>>>>??>>CC>==>>=>>>>>>>==C====>@===>===>A=ACZuxzƒ”››ÆÆÌÌßßáòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z qªíÿþÿÿÿþÿÿÿþÿÿÿÿþþþþýþýÿþþþþþþæÓ³·³³³³³·³³³³³³¸³¸³³³³³³¸³³¸³³¸³³³·³³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸³¸¸¸¸56866i5666686865686868666856666665686666685656866656668866665665665665666685655668666656566566558665665666666686665668656665665665568666686566866568665665666566666556686665556686666586566556856656666666856566668666666865586658686666566865866666668868668655656586556865666655656685666866ººººººººººººººººººººººººººººººººººººººº¸º¸º¸ººº¸º¸ºº¸º¸º¸¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸·¸¸····¸··¸··¸·······³··K··³·³·K³K³K·K·K·KKK·KKK·J·J·J·JKJKJ·JK·J·JKJKJ·JKJJJKJJKJJJJJJJJJJJJJJHJGGGGGGFGGFFFFDKKK³KKK³KKK³KKKKK³KKKKKKKKKKKKKKK³K³KKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKK³K³K³KKKKKKKKK³KKKKKKKKK³K³K³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³K³K³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³K³K³KKKKKKKKK³KKK³K³KKKKKKKKKKKKKKK³KKK³KKK³KKKKKKKKKKK³K³K³DFFFFFGFFGFGGGGHGHGHHGJGHHJHJHHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿÿþÿþÿþþÿþÿþþÿþÿ÷úóüóüóúúóúò¬}p?C==CC>>C>=>CCCC>>>>CC>>AC>>>>C>=>>>>>>>C?C?>>>>=CC>>>C??C>>>>>CllCC>CCCClCCCC>>ll?ClC>>>>>=?lC>>C>CCC>>>CCCCCCCC?>lCÇýÿÿÿÿÿÌCC??>?lllllC??CllCl?lC>CC?CllCCllC>>>ClCCCClCllClCCCCllC>?lllllllC?lC>CllllCC>>??CC>CCC??C?>>>>?>?lllC>?C?ClC>>C?CC?CC??CCC>CCCllC>?>?Cl>>>>CCC>>>CC=>>>>>?>>>>ClC>>>CCCC>>===>>C>>>>>>>CC>>CC>?>>>>>>ClCC>>>>>CC>=C>>C?>=>=CC>CA===>CA=>===ACCCC=Cu{ƒÉÌáñò÷úúüüüüüýýýþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷[ !!     =pšõÿÿÿÿþÿÿÿÿÿÿÿþýþþÿþÿþÿýþýÿýþþæÓ³³³³³³³³³³³³³³³³³¸³¸³¸¸³¸³³¸·¸³¸³¸¸¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6668686666865656666668656668686586666656568666686668666656666655656656656656665865865666565665656566656565658565688686656656666665558666686686668665656666556666666566565686656586666565558665658666668665566566656666i6556686568566656865655556565686666866685586668666666668666666565666666856566566656666ººººººººººººººººººººººººººººººººººº¸ºº¸ºººº¸ºº¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸···¸·¸³¸·³·³·³·³·³·K·³³³³³K³K³³K·KKK·K·K·K·K·K·J·J·KJ·J·KKK·JKJKJ·JJJJJJJKJJJJJJJJJJJJJJJJJHJGJGHGGGGFGFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFGFGGGGGGHGGHGHGJGHHGJHHJHJJHJHJHJJHJJJJJJJJJJJJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿÿÿþÿÿþÿþÿÿþÿÿüóúóóúóúúúúò¬so?C=>>>>>>>>C>=Cl>>>>>C>>>A>>>>C=>CC>>??C>>CC>>>>>Cl?>>CCCC>>??>?CCCCC??>Cl?CCC>>CC?>ll?>??>>>CC?CCC>ClC??>?lC??CC?CC?ÆýÿÿÿÿÿÌl>CC?>CllClCC>ClCCCClCCCCllCCCCClCCClCClCCCCCCCClC>C>CCCCClllCClCCCCC>ClCCC?C?ACC>ClClC>ClC?>>>??CCCCll?CC?CCCCCCC>CCCCClC>ClCCCCCC?C?ll>>CC?Cll>>C>CC>>CCC>>>C>CC?>ClC>>CA>>>=CC??>>CC>>C>>C>>>>>>>>>>?C>>>>>>C>>>>>>CC==>>>>>>>>==?C>===uƒÇÌçñ÷üüüýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;òÿÿÿÿÿóZ =sªíÿþÿÿÿÿÿÿþÿÿÿÿÿþÿþþþþýÿþÿýÿþÿæÓ³³³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³³³³³³³¸³³³¸³¸³³¸³¸³³³¸³³¸³¸³¸³¸³¸58686666866865668666568666866866666666666665566656868665556866566665665665565866656668586865686656666665656868686666866566568565686565656566665i66686656568565666665655658656665866666656555686556685666566666666866665668656866866665566676666556565566665586865566686656865665656665866855666665ººººººººººººººººººººººººººººººººººººº¸ºº¸º¸º¸ººº¸ºº¸º¸ºº¸¸º¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸··¸·¸·¸···¸···³····³··³·K·³K·³·K³K·K³K·KKKKKKKKKKKKKKKKKKJKJKJKKJKKJKJJ·JJKJJJJKJJJKJJJJJJJJHJHJHGHGGGGFFFFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFGFFGFGGGGGGHGHJGHGJGHJGJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþþÿþÿýÿþþÿþÿþüóúúúúúúóúóò¬Žm>>>>>>>=AAC>>=>C>=>>>CC>=>CA>>>>>lC>>>C>>>>>>ClC>>?=>>=>>>>?lCCCC>>>>C?CCC>?>CC?>?>>ClCClllClC>>?CC?>ClClC>CCC??Cl>>>ÇüÿÿÿÿÿÌCCClC?CCCC>?C?>llC?>>?>CCCC>>??CCCCC?>>>??lC>>ClllClCll>C>C>>CllCC????ClClCCClllCClllCC>CllllCC?>>>>?lC?CCC??Cl>>>ClCCC?C>>>lA>>>>>CC>>>>>CCl>?llCClll>>CC>CC?>>>>>>=?>>?lllCCllC>>==>CC>>CC?>>>CCllC>==>>>>>>>=>>====>==>C>==>>=>?Cx›Çßñúüýþÿÿÿÿÿÿÿÿÿÿÿÿÿþü÷òñçáßÌÉÆÆÆÆ››–––”–›”ƒ‚‚ƒ–›ÆÆÆÌÌÌÞÏßßááçèñòó÷üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–  @óÿÿÿÿÿ÷Y  !    =ެõÿÿÿÿÿþÿþÿÿÿÿþþþþþþÿþÿýþþþýþýæÓ·³³³·³³³³³³·³³³³¸³³³¸³¸³¸³·¸¸³·¸¸³·¸³³¸³¸³·¸³¸³¸³¸¸³¸¸¸¸¸³¸¸¸¸¸¸5666666656666556656658665665666856686656686656868656886866686665666868666666666666568656665665666866656566666568656666865568665686866568665i66666685866868666566666866868665656686656665566665666685666586656665656656665656665658656856686666665666656686686558665666866666668686566686688656656686666ººººººººººººººººººººººººººººººººººº¸ººº¸º¸º¸º¸¸º¸º¸¸¸º¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸¸¸·¸·¸····¸··¸·········³······³·K·³·K·K·KKKKKKKKKKKKKKKKJKKKKKKKJKKKKJJKJJJJJJKJJJKJJJJJJJJJJHJJHJHJGHGGGGGFFFFFFFKK³K³K³KKK³K³K³KKK³K³K³K³K³K³K³KKK³KKK³K³KKK³K³K³K³K³K³K³K³K³K³K³K³KKK³K³KKK³KKK³KKKKK³K³K³KKK³K³KKK³KKK³KKKKK³K³K³KKK³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³KKK³KKKKK³K³K³KKK³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³KKK³KKKKK³K³K³K³KKK³KKKKK³K³K³K³K³K³KKK³KKK³KKKKK³K³K³K³K³KKKKKFFFFFFFFGFGFGGGGGHGHHGHHJHJHHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJÓÓÿþÿþÿÿþÿÿÿþÿÿþÿþÿüúóúúóúóüúúò¬Žp>=>>CC>>>C>>>>CC>=>C?=>C?CCCC>?CCCCC?>?C>>>>CCCCC>>>>>=>CC>?CClCl>>?>>CC>>CC??Cl>>>>CCClCCCCCC>>?CC>>CCClC?>ClC?CCC>?ÇýÿÿÿÿÿÌlClCCCCCCCC>CCCClC>>?CCllCC>>CClCCl>>>>C?ClC>CClllClCCl?CCC>CCCCCCCC??C>llC>CCllC>llllClCCCCCCClC>>?CC?CCCl>>llC>ClC>ClC>C?ClCC??>>CC>C>CC>?lC?ClCllCC>>?C>=CC>CC>>?>>>??CCCC>Cll>>>>>>?CCCCC>>>>CCCC>>==>C>=>>>??>>>>>A==CC=?z›Ìá÷üüþþÿÿÿÿÿÿÿÿÿÿýóñßÌ›ƒutZuuZClZCCCCCCCCAAAAA=AAAA===AA@ACCCC@CCC@CBCZCCZCCuZuxƒ–ÆÆÌÎßçò÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Z !s­íÿÿþÿÿÿÿÿÿÿÿÿÿþÿþÿþþþþÿþÿþÿýÿæÓ³·³·³³·³³··³·³·³·³³³³³·³·¸·³·¸·³·¸·³¸¸·³¸³¸³¸³¸³¸³¸¸¸·¸·¸¸¸¸¸¸¸¸866568686668686666666686686566668666565686656658666686556566656656565568666656666656666668568686558656566565666856666556665666866666665565556668568666866565565656666666566665865668656665666566656656665666665686666668656868666666668666866568666886565556656686865686866668565666866666656666665568666855iKKKKJKKKJKJKKKJKKKKKKKJKJKJKJKJKJJJKJJJJJJJJJJJJJJJKJJJJHJJHJJJHJJJHJHJHJHJHJHJHHJHHJHHJHHJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFHHFTGHHFHGHGHFTFHFTFHGFFHFFFGFFFFF KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFGFFGFGGFHGFTFHFTFHFTFHFMFHFTFHFTFHFTFHFTFHFTFHHGHHGHHGGHGHGGÓ×ÿÿþÿÿþÿþÿþÿþþÿþÿÿúóúóúúúúóúóòÕo=>C====>CA>>>==CC>>CA=>>>C>>>>>>=>C>CCCAlC>>>>>=CCCCll?CC>>?>>>>>ClC>CCC?>CC>>CCClC>C??C?>CCCllCC???CCCC>CllCllC??CCCÆýÿÿÿÿÿÌuCCllC>>CllCllllC?llCllplClC???CClllllCCCClllllC?>>??>CllCllCCClCCClCCllCl?CCC>?>>?C?>>lCCCC>>CllllCC?CCCCC?>ClC?ll>>ClC>>CllllC?lC>>?llllC?CC>>CC>C>ClCCCC>?ClCCClCC>>>>>>>C?>lC>CCCCCC>>>>>=>=>>>>CCCC=>CCCC>>>==CCCA>Au›Ìèüýÿÿÿÿÿÿÿÿÿÿÿ÷ñßÌÆƒuZCCCA@>A===C======>=============>>>==A=========A==========$=>=====CC@@@CCBZx”ÆÌçóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!;óÿÿÿÿÿóY!     !!!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿþþþþþþþýàÓHHJHHHJHHJHHJHHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJJJHJHJHJJJHJ6856686686865866666566566665666566565655686866866656656566568566686565666686656655656666566566665656666666665868686568665666866656856568666665655666666666568866665666586666686665666865868556666566656566565656866686686866655666656556668665656866666666668565865686566568866566866566566586566568 KKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKKKK³KKK³KKK³KKKKKKKKK³KKKKK³KKK³KKK³KKKKKKKKK³KKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKKKKKKKK³KKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKKKKKKKKKK³KKK³KKKKKKKKKKKKK³KKKK³KKK³KK³KKKKKKKKKKK³KKÓÓÿþÿÿþÿþÿþÿþÿÿþÿþÿüúúúóúóúúúúò¬o>>>>>>>>>C>>>>=>>>>>>>A>AC>CC?>=>>>CCCCCCC??C?>>C>?ClC>C>CCC>>l>>C>>>C?CC>Cl>?>CClC>??>>ClClCCllCCC>>CC?>CllCCCCCCCCCÇýÿÿÿÿÿ×uClClCCClCllllClC?CllClolCClC?CCCCCClCCCC?CllllCCC>>CCClCCll>>lllCCC??lllC??ClC?>?CCCCCllCCCACC?CCllC>ClC?C?>CCllll?>CCCC>>ClllC>Cll>?ClCCCCCA>CClC??>ll>>>C>CC>>CCC>C>CC>>>?>>Cl>C?>CC>>>>C>>>>>C?>=?CC>>CC>>>>A>>Cu˜Ìèúýÿÿÿÿÿÿÿÿÿþò߯”xCZCCCCC>====>=>>====>>========>A=>===>>==A>=>==========>>========$$=========!=!$=====@=CCZx–ÌñüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z qªõþÿÿÿþÿþÿÿÿÿÿÿýÿýÿþþþýÿþÿþÿþÿèÓ5686566666666656558666856566666866666655655556566565566866656866665665666656566686665668658i8666666666565565665866666666555666856655666656668656565866565686666656568666686565566866566655685656666686565686665665566568665i6656866656556565686668566668665685556668665666668665666686665666666655666666666666655666  KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKÓ×ÿÿþÿýÿÿþÿþÿýþÿþÿÿúóúóúúüóüóúò¬Žp?>=>>>>=>=>>>>CCCCC>>>>>=??C?>CC?>>==>>=>?>??>>CClCCC>>>>>C?>CllCCClC?>>?CllC?>>CC?ClClACC?lC??Cl??>ClCCClC?>????CCl?ÆýÿÿÿÿÿÌC>>CCllCC???>??lC??CC>?lC>>ClllCllCllCCCCl>>?>>?lllllllCCCllC?CCClll?>CCClCClllll?>?ClllC??llll??llllCCCl?>CClC?>ClCCllCll>CC>CC>llC>llC>>?>>lC>?C>CC>CllClllC>=?>>?CClllCC>>>>CC>>>>>>>>?CCllll>>>>=>C>>C?>>>==u˜Î÷ýÿÿÿÿÿÿÿÿÿþò߯zZCCClA=>CA>=>=>C===>C>>CC>>=>C>=>>=========A==>=>==>=>===============C>===>======!=====!!!=>=$=!===@BuÂÎ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y  !  ! =pªõÿÿÿÿÿÿÿÿÿÿþÿþþýÿýþÿþÿýþþþþþþàÓ6656566866656586668668665866856665655666866886666556685656666865656656665665855656666568656566666585665555666586656686556568666768686656655855556865666665686565656666566565665655656656666566666665i8556555688656566565668665566656566566868665656666666686556668666855688656865566865668666856768666565658    ÓÓÿþÿÿÿþÿÿþÿÿÿÿþÿþÿüúúúóúóüóúúò¬p?C==>>====>>>CC>CCC>>C>>>>>?CCCCC=>>>CC>>CC>C>C>CClC>Cl>??>C>CllCC>lC?>>>CCClC?>>?ClC?ClC??CClC>Cl?>CllllCCCC?C??CCllÆüÿÿÿÿÿÌl>>>ClCCClC>>>CCl??ll?ClC>>CllCCClCClClACCCCC?>CllllllllCCCCCCll?Cll??llllClllllCC?>CllllCCllClC?ClCClC?CCC?CC?lCCClllCl?ClCC??C>ClC>ClC>>CCCl?>ClCCCCCClllCll?>?>>CCCCCC?>CC>>>?>>>>>>>>?>CCCCCC>>>>CCC>?>>C{Æñüÿÿÿÿÿÿÿÿýòß›xZtCC>==>>>==>C>>>C>=>>===??>>CC====>=======>>==>>=====>=>=>>====>===>======>=========$$===$==$====$==$=!$===@CZƒÌñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿóZ  qªíÿÿÿþÿÿÿÿÿÿÿÿÿÿýÿýÿþþýÿþÿþÿþÿæÓ5665886686566568558555656656655568685665i685666856858667865685556656565555688656555686668558568665568666868865586666686568666566586665665656566668566566556558665665685686556885865865866868558655588658666656855656866655668556658666566865565666556566655665666566856666655686686866555865856666885556  Ó×ÿÿþÿþÿÿþÿþÿþþÿþÿÿúóúóúúúóúúúò¬p>>?CCCCACC>>>>>>>C>=CCC>CACC>=>?C>>?ClC>>>CCCCCC>>>>>ClCCC>C??C?Cll>>C>CCC>>Cllll??C>>lC?CCC?C?>?Cl>ClC??>?CClC????llÇýÿÿÿÿÿÌollllll?>lClllCCC>ClC>>llllll>CC>?llCCllClllllCCC?CCC>?lCCCClCll>>llC>>>ClC>>ClCllC??lCC>?CllC?CllC>CllC???C?>>???>?C?>>>Cl?CCC?>>Cl?>CC?>llll>>lC?C>>??>>>>ClCCC>CCC>>>>>CC>CCCCCCllll?CCC>>>=>>>>C>>C>=u–ßúÿÿÿÿÿÿÿÿüá›{uCCCCC>>>>>C>>?C=>C=>=>>==>C==>===>=>C>==>>>>>>>=>===================>>=$===>==$$=>=====$$===$=>=====$$====$!$======!=@C–ßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY            !p­ùÿÿþÿÿÿÿÿÿÿÿÿþþÿþÿýþþÿýþþþþþþæÓ556568665556588586666866865665666566665686686656886686686566665565668686665686556665658665665866886665866665665665565666565686856565585657665586566886665865656865658666665655866655668656866856666686666568666658565556868558666686686586655566666666868686666668668686566658666656566566656555658665566565656655565665658TT  TTTÓÓÿþÿÿþþÿÿþÿþÿÿýÿþÿüüóüóüóüóúúòÕo>?>CCCC>CC>>>>>>>C>>?CC>>CCC>>>>?CC>?C>=>CCCCCCCCC???llCCCCClC>CllC>CC>>>C?>llCCC>>?ClllCl?>CCC?CCCCCllC?>?CC?>ll?>?lÇýÿÿÿÿÿÌullllllCC>CllCAllClClC>ClllCClllCCCCCC?llllllllCCC>CC?ClllCClllC?CCCC>?C>CA>CClllCCCCCllC>ClC>llllCCCCllC??>C?>>>CC>?Cl?>>>>>?C?>>?lC>ll?>ll>>CCllCCCCC>>?>?CClll?ClC>>>?C??>ClC?CCClCC?CCC>>>CCC>>??>l›èüÿÿÿÿÿÿÿÿ÷ÌzCCC?C?>>>>ACC>>CC=>>==>>A>=C>==AC===>>C>=C>>>>>>=>CC>==========>>====>=========A===$!=====>=$=>=$==AC====$!$====!=======!===@A‚ÎüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y ! 7sªõÿÿÿÿÿÿÿþÿÿÿÿÿþþýÿýÿþýÿþÿþÿþÿæÓ:TT"TT"T""TT""6656665668668865665666866565865865665566856668665666566865656656586656565555685666868665665655885865665686855556665686855686656556555586566868666568556555665688665i865656666886686656556665566556686668688666666666656565656655588668666566668656685555585866566655665656566868666885668668656656586686665666TT TT"TT"TTTTTTTT"T"TT:T"T:TTT:T"TTTT"TTTTרÿÿÿþÿÿÿþÿþÿÿþÿÿþÿúóúóüóüóúúúò¬Žo?>>>>>>>?>>>>>>>>C>>>>>>>>>llC?>>CC>>>l?>Cl>>>>CC>>>>>>>??>>CC>>>>Clolllll>>CC>?CClCCC>>?Cl?ClllC?C?>CCCCCCllllllCCl?ÆýÿÿÿÿÿÌlCCClCCllCClCCllCCCC>?llCCl?CllCCClllC?llC>?Clllll>ClCl?ClC?CCCllCCllllllllllCC???ClClClC>Clol>?CC?ClC?CllllCCllllllCClCllllClllClC>>?lC>>ll>>CC?C?>CCCllCC>>>>CC>?lCClC?>C?ClC>>CC>>>??>>C>>CC>CCCCƒßúÿÿÿÿÿÿÿüèÆuCCC=CAC>>>>>>>>>>>AC>=>=CC>C>==>C>=>C====>C>>=>=======>======A>===C==>>============>=A==>>=$=====A=!====$$$==!=====$==$!$$$!!==!=====xáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿóY  ! ! =pªõÿÿÿÿþÿÿÿÿÿÿÿþÿþÿþÿýþÿýþþþþþþæÓ"TTTT"TTTTTTT6586666685568658686566866556656656555686586855558886586856856656558665665666666655566866666865668865666856565568656665656566685656656855855668686865666668686655666565566566556656566686866666656566658666566666656586556685656686686668666568688565666568655565685656866586556656666556866866T":TTT"T:TT"T"M"TTTTT  "T"TTT"""ÓÓÿþÿÿþÿþÿÿþÿþÿþÿÿÿüúúóúóúúúúúòÕp?C>>>>=>>>>>>>>>?C>>C>>CC>Cll>>>>C>>>?C?ClCC>>CCC?=>lC=>C>>All>>lC?lCColC?lC??>>CllCCC>>>ClllllC?CCC>Cl?CCCCCllllllllÇýÿÿÿÿÿÌllClCCCCllllllClC>C>>ClllCC>ClCll?CllC?ll???>C?lCCllll>>lllC?ClllC?llllllllllC?CCClClllC?Clllll>CCC>>CC>Clol?ClllooC>?lCllll?CCCllC?>ClCCC?C?Cl?ClC>CllCllCC?>>?CCCCCClC>>CCClCCACC>>>>>>?C??>>>CuÌõÿÿÿÿÿÿÿúߘuCC>=>>CCC>A>C>=>?>CCC>>>>==>>?>=>>=>>==>======>=>C>======?>=====>=====>=>=====>==========>=========>======>=$=!!$==$=====$!$$$==$====!!$$=ZÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y  !!!=pªõþÿÿÿÿÿÿÿÿÿÿÿÿþþþýÿýÿýÿþÿþÿþÿæ×TT"TT""M"TT:TT:6685666665666665686686566666866566666676666565666686865656656886686568568666565685665656668556668666686668566586565686586685686886568868665568566688666668866866686686656656655865686586856868865665665665866866866665656656565868666656865656588656668685865566868688686686"M"""T"TTTT"""TT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:"TTTTÓ×ÿÿÿþÿÿÿþÿÿþÿþÿþÿþüóúúúúúúóúúò¬sp?C==CClC>CCC?>C>ClC>>>>lC=>A?>>lCllACCC>=>>>>lC?C?>ll>>lCC=>C>>?lCCC>>ll>>CCC?CCCCC>ClllC>>?CCC?ClClllCClCl??lC>>CCC?ÇýÿÿÿÿÿÌuCCCClCCClC??ClllClllllCCCll???lol?ClC>llClCllCCCClCll>ClCllCC??Clll?CCCllllC>ClCCCCCllllCC??lC??llllllCColCCCC?>lll>CCCCClCCCClC>>C?>lCllCCC>C?Cl>???>>?CCC??C>>?C>>?>?lC>?>>>>>llCCC>>>CC??>>{ßþÿÿÿÿÿÿüÌxCC>>>CC>>C>>>C=>>=>C>>>>>==>C>=>>>?>C>=>>CCA>CC>>>>>>>==>=>=>===>>CA>>>=>======>A>==========================!==========@>=!$===!==$===!!$======9CÈþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷[ !   qªõÿÿÿÿÿÿÿÿÿÿÿÿþþÿýÿýÿþÿýþþþþþþæÓ65565566686565666665685686656656866666668668686666566558666866866865666685566666866656656556665666586665556665566586686665656556666656655666686868667668665856866565655868686656566666566866566668566565565656666686686566666666566666665866668665685866566858686866565686TTTTTT"0TTT:TT"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓÓÿþÿÿþÿþÿþÿÿýÿÿþÿÿüúúóúóúúúúúò¬soCC=>llC>>>>>CCCllCllC>?CC>=>>>lCC>ClC>=>>CC>?C>>CCCll>>lC>C>>>>C?>>?>?CCC>ClC?llCl?>?llCC??ll??llC?llC>>CllC>Cl>?>CCCÆýÿÿÿÿÿÌulCClllClllCCCCCClllllll??lol?>lpl??l?C??lClolCllllllllll?llC?CCllC???ClllllCl>>ClCClCllllCCC??CC>?llllllllClC>>AllCC??>?CllCC>lC>>CCC>?ClCC>?C>ClCC?>Cl>>C>CllC?>C??C>?lCC>>>>>?CC?CCC>>C?>>xßýÿÿÿÿÿÿóuCCCC>=>CC>>C>>CCC>>=CCC>=C>>>=>>>>>C>==>CC>>CC?CCC>>>>CC>>==>AC===>>Cl=>CC>>>===>==>>=========>===========>=========$====>========$==$$==$$=====$!==ZèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Z  q¥õÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿþþþþýÿþÿþÿþÿæÓTTTTTTTTTTTTTTTTTTTTTT568565556656565885585656666565855685556556556686655666656656865665656566656565858685855585866666565656586866865666656565666566565666658656666665665865666866656566665668866666688856665688668686686668565656666655666665686858656665666658565855556556665655656866865565856655565886686666565TTTTTTTTTTTTTT:"""TTT""TTTTTTTTTTT:T:TTTTTT"TTTTTT"TT"TTTTTT"TTTTTT"TTTTTTTTTTTT"TTTTTTTTTTTTTTTT"TTTT"TTTTTT"TTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓ×ÿÿÿþÿÿþÿÿþÿÿÿþÿþÿúóúúúúúúúúúòÓŽmCl>=>A>CC>C>>>>>>=>C?=>CCCClC>>>C>>llCCl?Cl?>>C?>C>>CC>?ClllCClC?ClC????CClC>>llCC?>lC>?lCClC?ClC>CllllCClC?CllCCCCCCÇýÿÿÿÿÿÌuClCClC??CC?ClllCl?Cl??Cll?ll?CllC?Cllll>CCloC?CClCC?Cll>?lllCllllClC?lClC??lllClolCCCCCC?CllCllC?Cll????CCllClC?ClllClCCCCCll>ClCCCllCCClCC?>CllC>l>>ClCC>>ClCCC>>>?ClCC>>CCC?lCCCC>>C?>Clyßýÿÿÿÿÿÿè”CC?>>>lC?CCC>>?C==?C>>>>>>==>>>>CC>>>=>>C>AC>=>>===>>==>=>=>C==>>=>>=>=>A====>===>>==>===>A>==>=>========================$$=$!$========!==!=$==!!!===$$$@ÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z   ! =}¬ùÿÿÿÿÿÿþÿÿÿÿÿþþþþþÿýÿþÿýþþþþþæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT68665556686665565665676865558566656856565585555688856586686656655656585688567666666867868666585866568565655856866565865668556656568666655588566565656665666656566656856656566856665656665556657655688566866585585686856565665676588668658556568685855565666665858665655TTTTTTTTTTTTTTTTTTTTTTTT""""T"""""T"""TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓÓÿþÿÿþÿÿÿþÿþÿþÿþÿÿüüóúóúúóúúúò¬pCC>>CC?CCCCC>=>??>CCC>>?CClC?>>=CCCCCClC>>C?>>>CC>>>?lCClllllllllCllCCClllC>?>AlCClCC?>?CCClCCll?>CCCCllCCllllllCCCllÇýÿÿÿÿÿÌllllll?>?lllCClllllll??lolC?C>llCllCCClCCCCllllC?llC>llllACCllCClllCC?ClCC?>>CllllllCCC?>>?C?llCCCCAC?C>?>llCCClC?lollCllC>>llCCll>lollCClll>>>CoC>ClCllCl>>>C>>>>=>>?CCCCCCllCCll>>CCCC>tÌýÿÿÿÿÿüßx>>C?=>CCClCC>>>>>A>>>CCC==C>==>>=>CC>==>==ClC>=>C>>>==C>==>===?CCC>>CC>>>>A=====>>==>==>===>==CC==>?========>=========$!$==!!$=!!==!========$!!!!==========xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @òÿÿÿÿÿ÷Y    !s¬íÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿýÿþýÿýÿýÿþÿæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT5856667666666586655655666586556686656585556866786868676558656686688658666655666866566656885565667686568665666668666866755658866656865685655656666566856568558558586866556666858666576556665655665655885668668868686866655568658565856676868566566566868686656666556686T:"TTTTTTTTT:TTTTTTTTTTTTTTTTTTTT"TTT"T""T"""T"""TTTTTTTTT"TTTT:TT:TT"TT"T:TT"T"T"TTT"T"TT:"T:"M"T"TT:"M"T"TT:"T"TTT:"T0T"TT:"TT:"T:"××ÿÿÿþÿÿþþÿÿþÿÿÿþÿþüóúúúúúúúúúòÕm>C>=?C?C>>>>>>??>>>?>>C?>>>CClC>>???CCC>ClCCCCClC>ClC?>?lC>>CC>?CCCC?C??CC?>lCllC???ClCCC>lll?CCClClCllCCl?ClCCClll?CÇýÿÿÿÿÿ×u?ClCll?llCClClllCCllCCllClCCl?C?lolllllllClCCll>CllCCCCllllllC?llClCllllCC?llllClClllClllllllC?CllllllCClCCllllll?CCC>loCClCC>Cll>?llll>CClCCC>lll?C>CClll>llllCClllC?CClC>>>C>A?Cll?>?{èÿÿÿÿÿúÇuCCCCl?=?lC?>>>>>lC>>>>>>>C>>>CC>CC>>>C>>CCC=>C>=>C>==>>>==>CC==>=>>=>>=====>C>====C===C>===>====A>======>========$=========C=======A>!!=$=$$=!$======$$!$$!$!=$ZñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY  ! qªùÿÿÿÿÿÿÿÿÿÿÿÿÿýÿýþÿþÿýÿýýÿýþþæÓTTTTTT"TTT:TTTTTTT"TTT"TTT""TTT"TT"T"TT"TT"TTT"TTTT66586666585658585688666586856655666566868566856856865656666566568656566565556866566686656666865686868568565556855556665568658566666656858668656655685665855588656658666586566565686558666556665666865665666866665655566856665668556868656566586568666576586856656665668565565856XXXXXXTXXXTXXXTXXXTXTXTXXTXXXXTXXTXTXTXTXTXTXTXXXTXTXXTXXTXXXTTXVTXTXTXTXTXTXTXTWTXVTTTXTXTXTVTXTXTXTXTXTXTTXTTXTTTTXTTXTTXTWTTTTXTTXTTTXTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXÓÓþÿÿÿþÿÿÿþÿÿþÿþÿÿÿüüóúúóúüóúúò¬l=>??=?C>>C>=>>CC>??C>>>?>CCClClC>>?>>CC>ClC>C?CCCCllC>CC?>>>CC>>Cl>CllCClllClllll>ClCllCCC>CCCC>llllCCllCCC>CC>?lllC?ýÿÿÿÿÿÌl?CCCCCClllllllllCCll?CC?CCClllCllvllllCllll?>lllllolCAllll>llllllClClllllCCCCC?>?ClllllllCCll>?Clool?Cllll?ClllllC>CllllCCC?>>ClllCollllCCC>?CClplC>>>CllCClooplClllCC?Cl>>>>>>?ClllC?ƒõÿÿÿÿüÇCCCCllCC>>CCC>??>>=>>>=>>>>>?CCCCCCCC?>>C==>CC>>>=====>>=>>==CC>=>==>>==>>=====A>===>C>=>=>A========>=>?==>=>>=>======$$=======>=========$!!$$!========$!$!=$$!!!@áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!òÿÿÿÿÿ÷Z! !!  ! $q­õÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþþþýÿýÿÿýÿýÿæÓXTXXTXTXXXXTXXTXTXXXTXXXXXTXXXXTXXWXTXWXTXXXWXTXVXTXXXTXWXTXXXTX668688688866856868666566555556568866586668665685566566568556666685866866665685666686656856585655656655656566656888686865556555865568556666555855565665555676565666665565658665866885666555656686588658666666586666666665566865656568666868656886855556688656688586686566XTXTXTXTXTXTXTXTXTXTXTXTXTTVTTXTUXTTTXTTXTTTTVTTTTXTTTTUTTTTTTVTTTTTTTUTTTTTUTTTTTTTTXTTUTTTTTTTTTTUTUTTTTTXTTTTTTXTTTXTTVTTTTTTTTTTTTTTTTUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUTTTTTTTTTTXTTXTTXTXTUXTTXTTXTUXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTØ×ÿÿþÿÿÿþÿÿþÿþÿÿþÿþüóúúúúúúóüúòÕŽp??CCC>>>CC>>CC>>?CC>>>C>CCCCC>>>CCC>?CC>>llCl?>C>ll>>ClC>CClCC>>pl>?CC>>CC??CCCl?>llClCClCl>ClC>CllCllClllC??lllCCCCCÇýÿÿÿÿÿÌuClplClCllC>CCCCCllllCl?CllllCClCllC?CCl?llCClllCC?Cllll?CClllC?llllC?CllCllllllllCClllCCClCCCllllCllCCllCl??llCCClC?C?CClllClClCCC?lC>?CCCl??C?llCCC?llACC?CCCCC?CCC?C>>ClllCC?>>>CCCÆýÿÿÿÿç{ClC>>>CCCC?>>>>>CC>CCCCClCCC=>????>>>=CCAl>>>>>>>?>>C=>C?==>>CA>>>C==>A===>==>>>>>===>>=>===>=>>===>==============================$======$$==>==!===!======!===$====u÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY   $qªõÿÿÿþÿÿÿÿÿÿÿÿþþÿýÿýÿýÿýþþþþÿýàÓXXXVXXXXXVXXXXXXXXVXXXVXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXWXXX866666656666565555666656865856656567686656865566665655655688886655686668867655685855856688656668656567858665568688568568686566565555656686666566565665665566856556665865565675568666685865686565555655566768568686655666888568658656565886566585666866666886665678668676865655656568666766676866655668666656656668558566865556665565666665556686658688656565556665686588886666656856666656865568TTTTTTTTTTTTTT"TTTT:TTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTT:TTTTT:TTTTT:TTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTT:TTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTT6666855688858568565568555566656865856666666666865865665568ÓÓÿÿþÿþÿÿÿþÿÿþÿþÿÿÿüúúúúúúúúúúò¬ŽpC>?C>C>=>C?ClC?>>CClCC>>=>>>>>>>>>CCCCCC>lCllC>>llC>>CCC>ClllC>CllC???C>?C?>?C?>CllllClllCllCCl>>CClllCClll?ClllCCC>>ÆýÿÿÿÿÿÌullooplC??>>?C?>CllpolC?llll?Cl??llll?CCllllllCCCl?lllllC>CllllllllC??CCClllloppol??ClllClClllllllllllll?>CClllCClCCC?>?>Cl?Clllll?>?CCCCC>CCCl?CC>>??CllllCC?>>>CC?Cll??CClllC>>???CÇþÿÿÿ÷›ollll?>>>>>CC>>C>>>ClClCCCllA>>>?C?CC>>>>>>>A>>>>>=>C>>C==CCC>>>>>CC>==>CC====>CCC==>>>====>=>==>A=>A===>========$=>=>>========$===!=====!=====>=!===!!=$!$==!===$!===@›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!;òÿÿÿÿÿ÷Y !! !   pªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿþÿþÿþÿýÿèÓ6586655656866555586855686665686586655688866665665565668665666668666566666555666666856656568666685676556656656886656686656686665686755565665867666665675566656666585688886666865666656766685685556556566666585688566756886686766556768685685866667578566865655568566665888655566865666566658656865586655565856565566566666856665565668656565558586886756565565856665566685665566668666555666658566588558655565566567855668665656688656656668656TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT8566565655656668665588868658656566865568556656558566566Ó×ÿÿÿÿÿÿþÿþÿþÿÿÿþÿþüóúúúóúúúúúòÕŽm>>C>C?>>CCC?>>?CC>?C?>CCCCC>?lCCCCCCCCC>>CClCC?ll?C?>ClC>ClCll>?lCCC??llCC?>llC>llCCCCClCllCClCCllCCCClCCllCCllCClllCÇýÿÿÿÿÿÌuCCCllCClllClolCllCllClCCllCCloC>lClplClCCllllClll?CCllCCllllCCCllllC?llllC?CCCClll?CllCllllllC>?ll?CllCCllCCCCllCCloCCCllll?ClCCCCllCllClCClCClCl?>lCllC?ClClC>llC?ClCCC>???CCC?CCC”÷ÿÿÿçx?C>>llCCC?>>?CCC?>???CC>>??CC=>C?C>>>>>>CCC>>>C>>>C>>>>>lC=>>C=>==>>>C>=>>==>>>>=>===>>>>=>>====>A>==>>======>=A========>===$=A===========!=>=====$$=======!u÷‚$===!===!=‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿóY  !!=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýþÿýþþþþþþþÿýàÓ68568565565665666556556565655656658656586868678685665856656556685568565756568555585656566665558665655565656665568666868665566686665566666668686658666588666655668865666588576566665665865676566855655566886555586585766665865666666566565666866685566668656586686658585586555666566885568568656588585655555668685658566658568666766865658666556655668685665686656566866565886586656665856856565655686566555686658666885658658655865866568586656556665688556556586XXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=6886666866855658666655686685665686865665665556676666655ÓÓþÿþÿþÿÿÿÿÿÿþÿþÿÿÿüüóúúüóúúúúò¬Žo>>>CC?>ClC?>>>CCC>>CCC?CllllCllllCCCClC?>>CllCllC>?lClll>>llll?>>>>C>?lCll?ClC?>CllllClCCllll?>?ll>>???C>llllCl?ClpllÊýÿÿÿÿÿÌlClCll?>?llCCvpllllCCllllCl??lll?>llllllCClCCC>ll>>?llllllllll>>Cl?CllllCl??Clll>llC???ClllllllCClC??lllllllC>>>>AlllCllllolC>>CC>?llC>?ClllllCll?>lllCC?>CC>>>lllC>lllCC?llC>>>CC>tßÿÿÿèyCC>>>CC>?CC>>ClC=>CCCllC=>>>??ClC?>>=>>?>ClC>>C>C>=CC===>>>C>===>=>>>=>CCA>>CCCC===>====>C?C>>===>>=======================>====>C>==>===========$!=!=====A=!=–ÿ÷@!=!!$=$@ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóY      ! =s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿýÿÿþÿþÿþÿýÿèÓ6556566655868566865666856666866568666588685555588688555568588565665865556686866656656855655555867665675555555655555585555556556586658565565656655685565667688656565655856655586565666765666588586556856565676556686568855856566556768655856686565686565565655566556655886556566685855666866588688565656856765565565565667686556566675566586566658568656656858865785866555688856556858556866866765686655666686666558686865666668685865566555868566856555TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTMTTTTTTTTTTTTTTTTTTMTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT76866555676558858658566566656666686688858856656668Ó×ÿÿÿÿÿÿþÿþÿþÿÿÿþÿþüóúúúúóüúúúò¬p?>CCCCC?CC>>?C>?>>?CC>C>?>?CCCCCC>???CCCCC?CCCCClC>C?ClC>ClCCCClClll>?lClCC?llCClClCClCCClllC?llCClllllllllCCllC?llClÆýÿÿÿÿÿ×ulCClll?lllClllClCCClllllllCClClllClllllClllll?lolClllllCllCllCClllCllllllC>lllllllCllllCCClClCllllCCllllC?llllC?lllCllC?lllll>lllCCll?CllClClCCCCllCCCCC?llCCllCCC>CCCCCCCCC>?ll>>˜÷ÿÿè{CCC?>>CCCCClCACCC>>lC>>CC>>C>?>lC>>CC>>?C>>>C>=?>A>Cl>>>?A=>C?=>CC==>=>=CC=>>>>>==>>=>>>=A=>===>>====C>====>>>>=====>=====>=====$===$=====$=========$$==!=$===ƒÿÿß=====!$=ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Yq¥õÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýýýþþþþÿýàÓ8655655656567765568666585566655558855656555555875865655655686555857656565665565856855555666565658565668665567656855558676665686576555556868658586888555686865556566865586865855666588565586765886558555856655565658658556655866655665665657655686886665558688555665565565656556886566558555568665566656855866556688565766668868665565576865865676678556656556868656666658586656856588665868656885767656655586885765768656556885566656565686555866565565865566668686588688656567685656555556556558665865665685656585866786565686656865856665686858565685667556685685666766855865585566655586656555566566665686568686586866665566666668876558866588685555556886565858657656665566558655656ÓÓÿÿþÿþÿÿÿÿÿÿþÿþÿÿÿüúúóúúüóúúúò¬Žo>ClC>>>>?>>>?C>>CACC>>CC>>>CC?C>>CC?>>?ClC>>CCCClllC>CCClll???llllllC>AllCCCClllllC>Cl?>>?CCllolCCCCllllC>>CC?llCClCCÇýÿÿÿÿÿÌvllCClClpvllCCllCll>>CClllllllCCllCllCCClol>ClllpllllCllllllllllollllllpollCllClllCllpolllC>>ClC???ClCClClClollllllC?>>>>CllllC?CCCClllllC???lCllllCCClCC>CllCllCllC?>>CllCClClllCC›ýÿüžC?lC?>>>>Clƒ˜vC>?C>>?lC>>CCCCC>Cl?=CCll>>CCC?CC>>ClC>CCCAClC>>>>==>>>>>>>>===>?===>>==>?>=>CA====>===CC======CA===>>>>>>==========$======>=$$==!===$!!===!!!=xÿÿÿ–=$!!$@{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóZ!!  =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿýÿÿÿÿþÿýÿýÿæÓ656588565656865685565565656565585586565565568685665856856765685665566665686668558686585886576568678676555656668656578676566656656856556685556685665856555565676556565566655656656686556588867566556668566656568665565688866576568685666855665668855568656565555855566566858565558568566665586856878665665656555586655656568586856586855666555655566866566655566556666565655858686568555655855585865558555668565566558665655565666656685686666656558568555555656585665566665676558555566565666566855666555666565676668688855555585565686565657855665658668656655655555686855588686555568585856668586556556868666566566556555558676556675555556555558565555655658585866556565656555855665656886656656555856655586565555676566658Ó×ÿÿÿÿÿÿþÿþÿþÿÿÿþÿþüúúúúúúóüúúòÓp???C???C?C>=CCCC?>ClC??CC?ClCCC>?lCCC??Cl>?CCC?CCllC>C?ClCCC?Cll>ClCCClClCllCCCCll?>llCllCClClCllllCCClCllllll?lCllCCÇýÿÿÿÿÿÌull?lllClllll?CllllClllllllCClllllllolClllllCllllllCllolll?ClllllllCllllCClClolCCClllllClllClllllClllll?llCllC?lllllllClll?l>llllllClCllCl?lCClCllC?ClClC>lll?CCCllCC>?lCCCCl>CCCCCþÿòƒl>C?>CCCCuÌýÌllC>?CC>>CC>>CCC?>>CC>>>>?>C>?>>C>=CC>>C>>>C>>C?=>CC>>>>>=>>>>>>>?==CC==>>>=>>>>>=>===>>>==>=>=>==>==>>=======>=========>=!========$>============!Aüÿÿüu=!==xúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿ÷Y  !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýÿýþþþþÿþþÿýæÓ8856586556665665658656555585676567676555565858668868558555566565868555656568658566856686658556655686556658655765555666556665556858865568676885655568685565555555865885686855565885556855556565858655865855685586556868565655585666566565658585666555655558566555676555565568656865665676585566855565688866565565585655656865688588555556586565665858555665658586665865567655658588656865656568686655858676665586566558765555865658556565656885656566566566855888567686656565668555865656565568586856587655658665565555566866666655865656666656558586865585555655555556855665655655657655585765656656765856655555666565658565668665586568555586766786656655556865655858688855686855556566865586855855666768665586765ÓÓÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿüúúúúúúúúúüò¬spCCC?CCCCCC?>>ClC>=>ll>CClClllClllllC??CCClllllCC>>CC>>>?C??>>>lll>>??lll?lCCCCCCCCC>>llollC>>>C?CClCCC?lollpoll>llCl?Æýÿÿÿÿÿ×ul>Clol?lllllC?CCllllolllCC?llllllC?l?CC>>llCllClll?lllllCCllC?CllllllllllllClCCllllClC?ClllllllllCllllC?llClCCClCllllllC>C?CllCCll?CC???Cll???>>???lllC>ClllCCClCCC?>C?>>>CCC>Clllþÿò”llCC?lllzèÿü–ClC>?ClC>ll>>??CC>>ClC>>?CCC>>C>=>>>>=>C>>>>=>ClCCC?>==>=>C?==A>>>=>>C>>>C=>CC>====>=CCC>=>>==>>>=>========>>>==>>============$=A=$$A==A==!$====>==ÌÿÿÿçA==ƒüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!óÿÿÿÿÿóZ    p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿþÿþÿþþÿýÿæ×666567688568856865656656568676865665656676565866566566555665655885856685655565675566688685656566886856656655668556565865676855686656656676558686766558675555668685655856565655686565678856765665866685665888555555566686568678666565575678585855568865555666655566556556565786768655858688755565666586565588558565685566655556756568655885667655686666868558686665666556656558655556586556665865865856656865566558888556866667655666586558568656855565556555676555566866686568558685656758555658886556675565585655656865688586556558586565656585855668585658667558655565556585868686666556566686556666658665858686585666565688658666555656568656568666566566656856656685556856658565555656666756556667565665868656588886565658668666Ó×ÿÿÿÿÿþÿþÿþÿþÿÿÿþÿúóúúóüóüúúúò¬Žm??>C?C?>C??>CCCC?>?lA>>CCCCCC?CCCCCCCCC??CC??CClCClC?ClClClC>CllllCl>?llllCCCCllCllllClllClClCClCllClClllCl>lllCCl?llÇýÿÿÿÿÿÌullClll?lllllClllllllllllllCClllClllllllClllllllllClllllCClllllClll?lllClllllClolClllllCCllllllllCCllllClCCllllllC?l?lplClll?lll?lClll?ClCllCCC?lCCCllllllCCllCCC?ClllC??CClCCClClCþÿÿÇCCCClCCußÿÿßuCCCC???>ClC>>CCCC>>C??>CC?>>>Cl>=CCCl>=?>>C?>>>ACC=>C>CC==CC==??>?>=>=?>>>==>>>=>>>==>>=>=>=>======A>>>========>C===========C=$===$==========!=====xÿÿÿÿÇxÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y!!q¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýþþþÿþþÿþþÿýæÓ556665586665658566556666858885658668565655565558656556666656565565556686665857685568556565565585567686665686586665586655666556656568686566586666558566565565655556865866586765555886558855868666688655568665555658655665556656588676555556585665566655655665555666685676765666658658668655656655666565556655656565655665666555656557655655686666556655657656885656768686585565665655856658686565866665566556556558658676865856868565556686585565766686656585556665565566558865688566865568566868568556585665565665656668666556865566655565858688868558555665658685556565686585668566865586565655686685666557665676655665655885866556856868566556868555555555686588568685665568557685655ÓÓÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿüúúúúúúúúúúòÕo>>>>>>>>>CCCllCCC>CCC>>ClC??>>>>?C?ClllC>>>>>>CClClCCllllCCllllCClCCCCllCl?lllllCCClllllCllllllllllllloolllCCllCCClovÇýÿÿÿÿÿÌClllClC>??Clollll??llCClppol?CC?lCllolloollllClolC?>lllC?CCC?lllCl?ClC>ClllolClllCCllllClCCCC?CllllllCC>?>llCllpllC>ClollllCllll?>lllC?Clool???Clll??CClllCCClllC>>lllC>>lll??CC?>C”÷ÿÿñ{?>>CCCÇýÿþCCCCCC?>>?lC?CCCCl?>=>=>C>>>>>CC>=>CCll>=C?ClC>=>?===>CllC>CC>==CCCA>==>C=>>=>C=>CCC>=====>==>>>>>C=>==>>=======>=========>==A=$====$$==$======$$$!!=ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY      ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿýÿþþÿþÿæÓ86586688586886666666887565555556556556565665675667565555565566676886568655566555665567555556875658556565656566666555555658666856555656568565666686656656655865688555665555665655686667666565558566566858658667656566866665675656558688566656565665855555888585565856555565558676685656685656868665568558555868686566568685565586558585668688656666555568555686556656886565565556585656556585555565856555565566856665866566655656866586556576556755655566555585655655565586556566556555565558566565665656865686555558858656856555656656665658885656667586856656655666656565658568555686556666765586866665566765556688656556555656566666556758655676566867686656888ÓØÿÿÿÿÿþÿþÿÿþÿþÿÿþÿüóúúúúúúúúúò¬Žo?CCCCC>>?CCCCCC>>?ClC>CCC?CCClC>>llCl>?C?CClCCCllC?CClCCCC>CllCl?ClCll?ClClClCloCClClClClllllCCllClllllCllllllCllClllÇýÿÿÿÿÿ×uCCClllllClllllll?CplCCllllllllllC?lllClvlClllClllllllllllllCClllllClllllllllllllllClllllllllClll?lllllllCClllllllllClllolCl?llCClCllClColClClClClC?C?llCCCCCCCCCCClllC?CCCCClllC??ußÿÿþÌoCCCC{ñÿÿòƒCCCCCC>A>CCCCC>CCC??>?>>C>CCCC>>C?CCCCA=>l?=>lC=>CC>>>>>>>>CA>>>>CC=>>>>>==>=AC>>>>>=>>>=>==?>==>>=>=>===>>>===========$=>=>============$===>===!====–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Z!  !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþþþþþÿýÿýÿýýæÓ675685666865855668565556865656556886568665655556565685658576865556685656565657566766868866886855566657576688655665667555558865656558686585768655656856555658856655658555555886656565866666885655558656555685666658756555556868855855565656558768568565656656555557685655556566656656565658676868656665587665565865565555555558856586685556665656865565556866576558685556656565868566686565585667866656557655656665555655856665688866865656556585555586876558585665555676856665565686686565655686565568686855565686655658655665678586855586565556666556565565556557666558676856685565655665856565865655556686656558665565665565565686686556566655858666556665556668665658676555565765688556688ÓÓÿÿþÿÿÿÿÿþÿÿÿþÿÿÿÿüüóúúúúúúüúò¬solC>>>>>?CC?C?C>>>>CC>Cll??CCllC>>?CCCC?>?llCCC>>???>CCCCClCClCC??lllllC?C?>>lllollC???ClllC?C?llClC>>>?>lllCCllllC?llÇýÿÿÿÿÿßvll?ClllllllCllolllollllClCClpolllllllllllllll?>?AlovlopolopolppplllolllCClplloollCllloolllllllCCCCCllplllCllllC?CllCCClllClCClllll?lll?ll>C?lll?CCClC?llCCll????lllCClCll>>CCCCl??>›ÿÿÿüÇtC?lÌÿÿÿáuCCCCClllC>>>CCC??>CCCl>>>>lllC>>>CCC>>>=Cl>=>>>>>>CClC>>>>==>>>C==>>>>==>>====>>=====>AC>=>=======>==>>==========$==>>=======>>=====>=====$=====$====ZýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóZ  ! !!!!=p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿþÿýÿýÿýÿÿæÓ565856565655656556855556685656565565658655858555675665868866655555585565575655685865565558886865656568685686676558655755856665675586867856566555688685566555855655855667556856888565565865556588855586555856555585858565856855556566556566858567585576567655556555885566856555767755558556666756586768555666556555655676676658866566656565555566557555868676568558566555767585556656656567655555576868585558586755867666556656575555558855555555686567565656686567885686666586558585558555565568866686675666856785565566666865556556655585755565675567657555556665686556865556655557656755555567555855656657566676555555758665856556555875555556676655865655866588555556ÓØÿÿÿÿþÿþÿÿÿþÿÿÿþÿþüúúúúúúúúúúòÕqCC?>>>CC??CCCC??CCC???CCCCC?C?CCCCC>AllCCllCCClClC>ClClCCllCllCl?CllCClCCl>?lllllol?CllllolllClAlllAlllCllllClllClCllÇýÿÿÿÿÿ×ull?lllllllllllllllllllllllCClllllllllllllllllllllllolllCClllllllllllllll?lllClllllllllClllllollCllClllllCllllllClllllllllllClClll>Col??llClClClCCCClllCl?llCCCCllCCCCClCllll?CC?lCC{èÿÿÿý×{uÆúÿÿÿ×l?CC??CCClA>>CCCC>>CClC>>?CCCC>>>>CC??>C>>l>?>=?CC=>?C>>CC>>>>>=>=C>>C>>=>>=>C>>>=>>>>>>=>=>=>>>===A>=>=====>=>======>>====>===============!====$!=A=$C÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y!!!sªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿýÿýÿýþàÓ665656556785656855555558555658556558666558666688566558566555565588556556566556586665586557686565556667585576857657656558556586656865556767655785768856865665655565655556657665565655578658655655565686558556855655555558556555788586865586586556865856568656556767686685555565676556665755555565868565655656558565555656857656565656655566588558866555686588587558656665565558585865585665555668556665856566585576568565565556655666555556866656658586655686665556875585565567668655568565656556555556868556856856588685688656856565555656865668556865555576655856555655576765866556688685557685757668865666565655555866565656766658558685556568565565866556585555558586556656586ÓÓÿþÿÿÿÿÿþÿÿÿÿþÿÿÿÿüóúúúúúúóüúòÕpCCCllClCC>CCCClCClCClC>>>>>>>CClClllClCCC?ClllllllllCCCC?CllllllCllC?llClll>C?>>ClClllll?CCCCllllollllllCllClollllC??Æýÿÿÿÿÿ×ulClppoolCCCl>?lllC??llCClllllllCllCCllllllCllllllllolll?ClllCCClllCllllCllllClCClllC?ClCClolollllC??lllll?ClllClll?lllCCClCCCCC?llloC>loollllClClCCClllCCClClllCCCCC?lCllpol?CCCCC>?›úÿÿÿÿýüÿÿÿÿÿÆ>>>Cl?>CCllACCC?>>>CClC>>C>>>>>?>lC>>>>>>>CC>>=>C>=>=>>>?=>?C?>>>>>>=>=>>==>CC?>==>CCC===>==>C>=>===>>==>>>===>>==AA>=C>=>=====$=====>>===$==$======!@óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿóY ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþÿþÿýÿýÿýÿÿèÓ556568555678565686866665558865666586765565585856865667556785586765586655585655675755566555678665565567556678568555556565766585656685558666555556556685686685558855665655565856656567656556555566756558585658555665685568665558655565555756557655866555556857558655656856878575876765558575658566856855555556565556685587656865865565555766676585685575556585565658868686558557657855856568565568567676855555676566556566557566856587556765856565667566555565655586588586568568585855665668686886555558555575655685865865586867556565666668665755675575865655656586656785656757688688656556558558555656568568675556585Ó×ÿÿÿÿþÿÿÿÿÿþÿÿÿþÿþüúúúúúüúüúúòÕqC?ClCCCCCCCCClC>ClClC??CC>>CCCCC?ClllCCll??llC?llllC?Cll?CCllClllllClCllClllClC?lllllllll>lllllCllllllCllllllllllCClCÇýÿÿÿÿÿÌullClllllllllClllllCllllllllllllllll?lolllClllll?lllollllllllllllolllllllllllllClllllClllClllllllCCClllllCllllllClllllllClllllll>lllll?CllllCCllllllCllllllCC?lolCC?ClClClllCCClCClCCCÇüÿÿÿÿÿÿÿÿÿú˜>>ClC?CCC?CCCCCCC>>C?CC>>C?CC>C>>CC?>>??CC>?>>>>>>C>>>?C==CC>>>?>=>>>>>>>=>>>>C>>=>>A=>>>=>=>CA==>=====>A=A=>=====>==>====>==========================!Cýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Y  =qªùÿÿÿÿÿÿÿÿÿÿÿÿÿýþþÿþÿþþÿýÿýÿýýæÓ8565555586686565586576568676555676565786655765666758765685556685886585556567586655655588856565656586657667556556866755556576565886786686658665686565566588558568676656558655555568658665656766555686857565685566568656756855568766685768566666556866765686765866556656566668865768656865565686857667666785668585658568556655667665556585655655655655665567686558585658555686886555686565656665575568555686755665787556755658568685556676658555668556865566575556655565655585586758666567565865658665565665885565566565676665586576868655666866576858665655856566556865558566756857688686556555555565666567656ÓÓÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿüúúüóúúóúüúò¬sp?CCC>>>>CCllCC??lllC>CllllllCCC>lCCC?llllCCClC?CC?l?ClllCllC?ClC?CCClClplCClpplClC>CllllCllpollllllClClC>?CC?lllCllpoÇýÿÿÿÿÿÌuolClllCllpplClolClllpollllolllllCllClollCCpollllC?CllCClplClpllplC?llllllllCCClllCCCllllCCllllClllllllCClllCllC?lllC>ClllllC?ClCClllllCC>?llllCCC?CC>??ClCllCCClllCllC>>>>?llCClllllCCòÿÿÿÿÿÿÿÿõƒlCCl??>?>CllllCCllClCCllCC>?lCCC>?C>>?>?lCCCCCCCC>CCC>>>>>CC>CC?>=>?ClCCCCCCAC>=>=>>=>=>>====CC>=>=>>>=A>>========>==========$=A>==>===!====$>=$====9=ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;òÿÿÿÿÿóY       7p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþÿþÿþÿýÿýÿÿæÓ5576758765765686876765556558555765588856556865768586556855856865668566665655655865856556786586658556665658656655655568785566558655656886668855555655656675pj57655656656555666866768676656558587567556655558655568555655676558767658555568656586556588668658885678876578655856656765566855678655678868555766858558666558566655685565655655666565556875588656556756568566655576865865688567586755686555666577658865668558656656676865555886867675867655885568685686556585566856656565658676558576676565658676565865858568676685567855865655866556865667576555765556586756556566785558555655656566585656685658556565556655558585866558575Ó×ÿÿþÿÿÿþÿÿþÿÿÿÿþÿþüóúúúüúüúúúòÓŽp??C?CCCCCCCC?>?ClCC?CCCCClC>?ll??CCCCllCCCCC?llllCCC?lllClllCCllCl?ClCooll?ClllllllllClllllllllllllllllCClllllllllCooÇýÿÿÿÿÿÌvol?lllllolllllpllllllllllllllllllllllplllllllllllllllCllllloollloCClllllllllllll?lllllllllllllllllCClllllllClllllClllllllCllCllllllClllCl>llllClllCClCCllllllC?llCClol>?ll>CCllClllCCCl{ßüÿÿÿÿÿÿáx?CClC??>CCCCCCCCClCll>?lC>>CCCCCC?C>?>>?CC?C>>>CC>C?>?>>>>C>CC>A>>>>>>?>A>>A>>>=>C>=A>>>>>>==>>>>=>>>=>>>==>>=====C=========$==>===============!=>=$=CÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y =qªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþþþÿýÿýþæÓ6568666555568556568568665568558665766558565555555865555768765575656565566586658556658585885555565657866865856856555668656656565655565j™ý68665855865856666558685568666856658655665686856856655685685656858657565765557856565588656888588578855865565656766557885655865858865665756665656678685655755768555877866768876665855685768556665658656656556555676566558565557666565856565787685688556755867786658766688556578556886556585668656588876555865555655755767665576556556785656865555888676555555675866556555888565566565866565675556865665555566765587675766866586655585866566666558566ÓÓÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿüüúúúúúúúúüò¬sl>>>?CCCl?>???>>>>>?CCllC?llCCllCC?C?>?C>>CC??lCCl?ll????lllC?llCCl?>C?llCC?>?CCCClll??llllC>CC??>llllllllllCCCCClllllÇýÿÿÿÿÿÌullC?lllllC?CCCollllllllollllpllvlllllllllCCllllppvoopppllllllCllllllplCCClollollCllollllpplllllllllllClllllllllllllllllllClollCClllC??llllCllClopollllllllllllC???ClllClllC?l?CllC>CCClloÇúÿÿÿÿÿßul>CCCllC>??>>CC>?C?CCC>>C?Cll???>>ClCC>ClC?>>?>>CClC>>>C?=>>>C=>CCC>>>>==>>>>==>CC>>>?CA>>>====>===>>>=>C>==>==>>>?=>==>===$=>>====$==$=$=====$======ZüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿóZ!!     $s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþÿþÿýÿýÿÿæÓ56765658658855676676576558765586656656565656656855556658655856655856676656555876556568568566866658567567576555676668667865556555555756656656886775556565575656568†™p66556558685566558555558556658886556655755756555765586556556656856555686855568655685868556656655568566665555655588668556576556655556566867668566556886888667566568675566656566865568865576588658656655858685867656556567685886568558656655577655655586565688685857676556655865686655686655865658656855578865555868866555675688656666866868856556865768586565855855586556856856756556555855856556786585685556676586585558655867855555586558686868885555555567566758567565566565555667885Ó×ÿÿÿþÿÿþÿÿÿþÿÿÿþÿÿüóúúúúúúúüúò¬Žo?C>>C?ClCCC?>?CC?>CllllCCCCCl?lllCCCC?CCCCC?ClClCCClCCCCllol>lAlol>?llCCllClClllCllClllllll>lllCl>lolllllllClllllllooÇüÿÿÿÿÿ×uClllllllllllllClllllllppllllollplllllCllllllllllpllllpllllllllllllllllClllllplllClllolllllllllllllllClllllCClllllllolClll?lllllCllllCCCllCClllClllllClllllllClll?CllllClllClCCCllClCCClClo›÷ÿÿÿÿßuCCClCCCC??C>>lCCCCCCCCC>?>?ll?>?>>>CCCCCCCC>?C>>=?lC=>CC>=?>>>>>CC>C>=>=>>>C>=>C?>>>>>>C>>A>=>=>>==>>==?>C>======>=>===>A=======>>===============$===–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z!q­ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþþÿþþÿýÿýýàÓ57655865675685657587665656858656588587555565655655685667855885765855686555565856765568867676685565556858565558658656576666555656576568865585586655658855556856586>5555656556865566556568558555556886755855566868755586558566555555686585655566565565655865685558558685755556556565666585668655555666558556555555655875686658856656565667655685555668567555558585886586565555585675658755555655855658678556586656858685676566556876666556556566877855557657685666585756765666566687868655656568865565655656685555685585667685585655566658755565667556865655556556865855665865888556576656866665866856555668656656565665556658556855556658766ÓÓÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿüüóüóüóüúúüòÕpllC>>>?C????lClll?>CCC?CllCCCC>ClCCllCClllllCCClllCClllll??lCllloC>loolloplllCllllCCClllCllllolllllvpllClolllvpolllloÇýÿÿÿÿÿ×uClpolollllllllllllllCCllllCCloollClClllplppolClC?llllllll?lllllllpllllllllllllllllllllll?>llllpollllllolllllllpllllllClllClpllllC??Clllll?Cll?ClClClllC?lCCCCllCClC?ClCClClC?llCClllCCCCCClÆüÿÿÿáu??ClllCClC?>?ll>>CC?>CC>C?>ll??ClC>>CC>>C>?CCC>>>>ClC>>>>>>CCC==>CC>>>>>C>>>>=CC>=>=>==>====?>>>C>=>>=====>>========>====A=A>===>====>=>==C>==$=$!$=C÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿ÷Z    ! pªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþÿþÿýÿýÿÿèÓ5686765576766855686566557686576555555655565565555565885866556757565866555657558556666565655856855656565558555558555555558685868655585555556555665558667675668865758658565676557555655558776755575586585555558558885655556557655655768765565555655566585676788685655675858585556576758855565555568855555655675555855555555765565766587658686758655655555668575565655585887565865586655555555685565668565585585555675585558587555575555768585658676555556585575755555585855556585685585555555565556655555568685566556555666858755675655856765555555655655556857855587575855767556655565566585687665555555555556656655885755555656558565755655656558585565756855Ó×ÿÿÿþÿÿÿÿÿÿþÿÿÿþÿþüúúúúúüúúúúòÕqCCCC?>?C?>?CCllllCCC>??CllCClCCCCllCCCCllll?ClllllClllllCC?ClllllCCllllloolllClollCClCl?lllllllllllplllllllllpollllllÇýÿÿÿÿÿ×ullolllllllllolllllollllllllClllllllllCllllpllllllCllllllllClllllllplllllllllllllloolllllllllllllllllllllllllCClolllllllllClllllplCCllllllClllC?llCClllCllCCCClClllCClCClllCCCClClllClCCC?CCuáÿÿÿñ{C?CllCCCClC>Cll>>lC>????CC?llCCCl>=?CC=?CCC?>CC>>?>CC>>>C>>?CC>=ClCC>>>C?C>>>>>A===>=>>==?>=>A>>?>>=>>====>>========>>>===>==>========>>==========$=–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿýÿþÿþþÿþÿþýæÓ85855556675576565556555856655676865855565655575586556655656555656855576765865566565655555555555585558755655555585555658585755856586555658556655655655586767568555865565558555685555788587665555665556655867857668766586585555568655565555557686855565858565555665585676767555587655655675655885656855657557558858585658656666585556568555555657558857675585556555565767555686758555568576686856655556665557676756565755676856765685867556786586556766586558555565665788555556555855758555655556755865586558587655565565566866876587555588655568567665688685766855655678585555656856567866555765577678885855676557568565585555755577555588555766ÓÓÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿüúúúúúúúüúüò¬Žp?>C?>>llC??CllC>>Clll??CCllClClCCC??Cl?lCCCl?C?ClC?C??l?ll?lllCC?lllCCCCClClClllllClllCCll>llllllCAllCCllllClllC?lllCÇýÿÿÿÿÿÌulppllllllllopollllllllllllllllllovollCllll?llllpol?llllplCClpll>llllClloolllllClllpplllllllCCCllllllllClllpollllllClllopllllCClvpllolCllpllolllllClllCloolClClllllllllCCllllCCClllCCllCClCllžúÿÿü›CCCCCClCCll>>ll>CllC??CC>?>CCCCCl?>Cl>>?l>C?>>>C?>>>>CC>CCl>?C?=>?==>>>>?>>>>>>>C>C?>=>>>>>==>>>>>>>==>>>===>>>=>==>>=A===>=>======>=========>>A===Z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ!óÿÿÿÿÿóZ   ! ! !!!9qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿþÿþÿþþýÿÿæÓ865655655657665555555555655575655657676687556855857585855576557586566578556555555655568856765567656555885687656568555655566758765658565867665658865758565555585565685555885555555655658566755585655655855555656655555655666565565655565676755568555655658865856565555555685655856558856856768655555558655685685665556555765557556556556565865655855555555556675665555755655556678556786656668555578755565557658585556587685555655556586768575567675655665858556568566575556568565857585566665655667856565685855666755855555555658855755567585658655565755865556656765856855656565556655767555555566858675675585555558565565656568675656865565585ÓØÿÿÿÿþÿÿÿÿþÿÿÿÿÿþÿüúúúúüóüúúúò¬q??>C??llCCCCllC>>CllCC??CllCCCllC?ClCC?CClllC>?Clll>ClCClllCllllAllCCCll??lollllllCClolCllllllllllllllllllCCloollllllÇýÿÿÿÿÿÌuollllllllllllollplllllolllllllllpvlCllllllllllllllllllolllllllllllpllllpplllllllllpollllpllllllllllllllllllplllllllllllllllllllloplllCCllollllll>lllllllllllllllllllllClllCCCCllllClllllllllußÿÿÿßulC?CCllCCClC?CCCllCC>C?>CC?CCCClCCCC>=Cl?>?>>CC>>??=?C>>CC>>CC>>>>=>C>>>C>>>>>>>CCA>>>>>==>=>>>=>>>===>=>=>>>>====>==>===>>=======>==$======>=$=A=Æÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@òÿÿÿÿÿ÷Z !=q¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþþÿþÿýþæÓ5865655776685855755558558858565567657856586866585788555655586686857876557576755555556658555556655855658555855576555555656565658565655555565656558688567656555766766766556665657555656585856555858555785857657555555755656555655677655555866568555558555576675658576585655555555856656567655655565555556575578656558655655585565868565755856675555555565655656555868886555865577656858885855557555555685855855558858655658855555566757687676555555655567555765755555685658565555555565656856565655568556655578655656855576588555665656565555555555685677556555655865566586657585658655567855665565655565767568555556565558558865ÓÓÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿüúúúúúúúüúüò¬p?ClCCCClCCC>>CCClC??CCllCCCC???CC??ll?llClClllCCllllCClllCClllllllllllol?CllCllllolllplllollllC?CllClllllllCCllllplllÇýÿÿÿÿÿÌvollCllllplll?lllppllllllCl?llllllllllllopvololpllllllpllllppllpllllllollolloplllCCllplllppllllpoll?lloolllllllllllllCllllllllCCCllllpllllClCCllClllllCC??CClCClCCCCCllllllCllCCCCClC?CllC?ClC”÷ÿÿüÇul?CCClllCClC>>?>>lllC>>ClC>>>CC>?>C?>>lCC?>ClC>CC?=>CC>>CCC>ClC>>>Cl>>>C?>>C>==>=>>>>?>=>C>>>=>>>=>>=>A>>===>=>>=====>=>>=>====A======>========CxýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóY  ! qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿÿæÓ68565578858565765586575886686885655585656855658557567565865565555855876557556656655555566585555567675665665767556765555585555655656565686555855586858565758655585565655665555565856888575555765555555676555758665766765686858665585565655556888566685557665555575655586676865565556575765855875677555558655885555565588555555556786657655588656555555565658556555655656555556585676755556756565757657566557868558567566655756875855856756555555856776676775655655555558656855566555586557555857655766758667558556555555555556885656656765675566768565655655555566768766555655655885685658665558555556556556568555586565555557ÓØÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿüúúúúúüúúúúòÕq?>lllC?CCCCC??llC>?CC?Cll>ClC??>?>CllCCllC?CClCllllCllllAlllolCllllCllllCllClllllllllllllplllClCllollllllllllllopllllÊýÿÿÿÿÿÌvplClllllolllClllplolllllllCllllllClolClplooloplolllllplllllvololloolllllplolllll?llllolllllollllllCClpollClpllCClplClllllllllllllllllllolCll?llllllllllCClllClClllCllllllllCll>>ClllCCllCClCCl×ÿÿÿè{CCC?ClllCCCC?>>>?llCC>?CCC>CC>>?>>>?C??Cl>>ClCCC>>??>C?>CCCC?CCC>>CCC>CCCC>>>>==>>>>CC>>>>===>A>>>>==>>=>=>==>=>>>==>>>>==>>==>>======>==A=$===CáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!    9qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿþþÿþÿþþÿýþæÓ55685566667558565568675555555586558585656655785857556576566855568656557885758855675575555567565555658556756557685855585786568655558855567867677855576558665568566565565555855685565658688565556557658555785675655557655685685555885586865555565568555566555566755557675866755565575557585685567767876755555676856585557558858667555865676855585566765565558655556586585557586657685658588656785655566575588865555855555766555555565556576766565675567655568678555585657665565585668555555588655588768678876855556776568578766575566555565585855555588658556585558555675655556575655765556755655556567655888855576ÓÓÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿüúúúúúúúüúüòÕ}??lC?CC??CClC?ClCCllllCll>?llCllll?llCClllCllllll?lll>ll?CCCllCCClClllllllC?lClllllllllllplCllolll?llpl?llloollolCCClÇýÿÿÿÿÿÌuolllllloplllll??lllllllplopllpplCloplllllllllllplllClllllllolllllpplllClllllllllllllCllollplllpllllCll?lClplllllllCllllllClllplllllCCllplCCCllloll>llllllllC?lClllCCll??CCClllllllCCC?lolCClC?ƒòÿÿÿÊulC?>?CCCClllCC?CllClCCll>?CC?CCCCACCC>?CC>>>CCC>?C>>>>>??>>>>>C?>>>>>>>>C>=>>C>>>C==>>>>=>>>>>>=>?>>>>=>C>==>>=====>>====>=======>>>====>==A==–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z !     $}«õÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþþÿþÿþÿþÿþÿÿæÓ57555858655655655555655556658676755765585685555756556556658556555557885655665675758567665585556755855686555555556565685586665555588856786675565655858565587867665858655555585886568775556557555568558556688886556866758655556658578857788556665655868555567655766875685868588556755685567555588566656866658755666866755868867667575765865658566788665676585566585556858856665565556555755788555676755558568656568567566875555667586885555656555755856887667676565565566768555585557558858558665667575867556556565565655667655555655676855755556877558658555567675755566555565565665655655555565655555665556555868585575855665556555565756Ó×ÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿüúúúüúüúúúúòÕ }??lCCC?A>?lll??CllllllC?C?ClC?CooC?lllClCClllClpllClAAllCClllClCClllllllllll??lllClolllllollllollllllplCllllpllllllllÇýÿÿÿÿÿ×ullllplllolllpllllllplllollpllvlllllvlllllplllllpolllCllllllpllllllllplCllllllllllppllllllllllllolllllllllllllplCllCllllollllloolllllCClllCCllllllllCClolllollC?lllCllC??lCllCllll?ll??lllllllllÊýÿÿ÷˜llCCCC?CllllC>CCCCCllllClC?>?C?CC>>ClC>?CC>>>?C??>>>>>>>>?>>>>CC?CC>>>>>C>=>?>>>C>>>>C>>>>>>C>===>CA=>=?>======>=>>>>======>=====A>==>====>==C÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY    =s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþþÿþþþæÓ75565576657675767656785555655656557655658567675655565585575855655685686758675555557655565556755568868685575675555555558676578556685566865555555556556555585567565585685555876568675765855555765865655558586555655555665575566565655575558655858555565786565867656755657556858555656555665556555556558566565585655556858888655555575565655555756786555856656558655556658556886588856756556578585555575565555667855588588855565765565655556856686685555586688687665568558868575665867676885578656755555685675768656555666567865585555555667565555585675555788585558578865865765585567876877865676558665558566565565565ÓÓÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿüúúúúúúúüúüòÕ}?>CCCClllC?CC?ClClCCCllCCClolCCll?CllClCllClll?lplllllllCllClllllCllllCClllllClplllllll?CoplpolllllllllllllllllllllloÇýÿÿÿÿÿÙuCllllllllllllolplllllolllllllllllllllpllopllllovllllllllllllpllllllllllppllollllllllllllllllllplllpopolpllllllllooplllllllClClCClvoll??lllllllllllllClllClvlCj>CllllllCllllllCllCClll?ClCClClClxèÿÿÿßuCCCCCCllCCC?lll>ClC>??>Cl?ClCCCCClCCC?>ClC>CC??C?CC>?CCC>CCCC>>>>>>>>=>C=>CC>=>>>=>>>>>>=>=>>=>>=>C>>>==>>A>=>C======>=>==C>==$=>=!$=>=$===AÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿ÷Y!  ! =qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþÿýÿþÿþÿÿæÓ558865656575556565555555557658576555758858665555565686755865565558856555555558865585557555556555555556566755588586555875856875565556566555565565586555555565568676556575665555585575865667865658555555855867665856855755657655655555555555587656686655555766656557565576665875685855758556758555555555576876858555856858jCn855565765555667586675866855555688565785555858755575575565755565586758565755555655575565655555567558656855667655658685556565686557555555565555758656565565555755587555556586555557855655675655566558585665555768867566756755555855865556566586588555665667555568668656565656685658765585565556565658555655658865767585Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿüúúüúüúüúúúòÕp??>CCCllll>?ClCllllC?lllCllollllCCClCCCllllllC?llllllllllllCllll?llllCCClllllllolllll>llllpplplllplllllllllllllllllllÇýÿÿÿÿÿ×ullollllllllllloolllllllllolllllppplllllllpllllplllllllllllllllllllllllppplllplllllllllllllllllollllllplopolllllllplllllll?lllClClvlllllClllllllllllllllllllllC?lllllolClllllC?lllCClllCC?CCCClClÇüÿÿülCllCClCCCC>llC>ClC>>>>Cl>lCC>?C?Cll>CCCCClC>>CC?C??>CCCCCCCCC>>?>>>=>>>=>CC>>>>>=>C>>>>>=>>>>C>=>>>>>=>CC===C>=>==>>==>===>====>====>=====xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿóZ =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿýÿþþæÓ76687755556575555556875765555758566565556565555767665565555565567655576656657557686555856766855657656567558557685558868876585555585575855855555555858556557558578656555555855655765565585585557785558557655765557558755855655675755655558888765767655657558657665565688857586558585855586865576765557555685675656558555656jZrƒp65555555556557566555576555565555585566768576765867576556555555557555767587876555555765758656555565567675587656555585565855555555675765856556755865655555555555555565757856558558555585755555565556558588755656767557657555558575587855767555577556575557675555855676566688555565555855655756558655ÓÓÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿüúúúúúúúüúüõ¬spCllClCCCClC>?ClCCCC?ClCllllCCCCClllll?lllCCllC>ClCllllClllllllllClllllllllCClllllllllllpllCllllCloollllppllllllllllloÇýÿÿÿÿÿÞulpplllllllppllllloll?lloplllllollollllollplllllllllllvpollloopplllpllllllllllpllllllllllllllllpolllllllllllolllllllllllllCloollllllllpollll?ClClllllllll?lllllllllClllllllCCCClllll?llllllC?CllCvßÿÿÿè{llllC?>?lC>?llCCCllCCCllll?CC??>ll>>CCCCCl?>CCCCCCCCC>=>>>>CC>>>>>CC>CCC>>CCC?>>==>>>=>>?>ACC>==>>=>==C>=>>=>>==>==>>===>>==A==>A=>======CèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y! ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿýÿèÓ6568855565675575665877655558555565585575555555575557655567556586685655678575855855555657555565678565555585656655657558555575755555678565756675576555555555555755555565656875676755556685556757675665555856555658755658567585587587587565585555555758767555567565555565555655555565876765558757788>{†™Zj685675558558857875658577857555555655585765575555555578676755587557576855876555587675685658858557675556757555557687556855756555565755766875676555767555567655767575655556555587557555657555555656767558868555666855856556757555555555558555555555676576557Ó×ÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿüúúúüúüúúúúò¬so?olCllCC?CC>CllCC???CCCClol?>ClllllCCClCClllllCllCllllllllplllllClllolClllllllCClllllCllpllClllllllolllppllllllllplllÇýÿÿÿÿÿÙvloollollollllllCopllllovlllpllpllllllloollloplllllllpvvpllpllpplCllllllllllllplllllllllllllllllllllllllllollllllllllllllllllppllCllllopolllllllll?Cloppl?lClolllol?CllllllCCllllllCCllllClllllllC›÷ÿÿÿÌvllClC>C>>>?llCC?llllCClCCClC?CCllCll>CCClC>C?llC>CCC?>>>Cl?>?CCA>>lCClC>>ClCC>>=>>>==>C>>CC>>>>==>==>==>>>>CA>>==>=====>A=>>=======>====›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿ÷Y!qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþþÿþÿþÿàÓ855555555555585558585555555555785558555655555755575678675855755678885885555657686555575885555565576855657555855855556556676588585858555568885555565765857557556555675588555575585576558555765875555557575555576876565655557755655576755878655557576657557565565755575555865555555555678565585578jl†‚n>5655765676558755556765555567558777675785575675555565765586758556556787586755558575555755855855555575575555565557557556556657855787555556565855656556655665765556765755555755558557876555856755875657755585557576875887875855555575575555585555558575565575857866555555756ÓÓÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿüúüúúúúúüúüòÕplC?>CCllC>CCClClCC?Clll?CllllllCClllllCC?lllCllllllCllll?lol?llllCClpollooopollllllll>lllllllllClllllllll?lllollllpllÇýÿÿÿÿÿÌvllllllllolllllllpllpllpolllllllloooplCllllllllllllpllpllopllllollllplplloopplllplolpppllolllplllplllvllllClllllllllllpoolllllllClCllllllolllCllool?lllllllllllllll?lllllllllCCCCllCClCCCllClClCllu×ýÿÿú›lCClllCllCClllC>?CClC?>lCllCCC??C?C?=?lClC??>>>?>>>>>C?>CC>>CC>CC>>C>>>>>>>C>>>C?CC=>C>>>>>=>CC>>=>>>>=>>>>==>>>====>>>===========>==>=]úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;óÿÿÿÿÿóZ ! ! 9q«õÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿþÿèÓ55555576555587577655558555875555556765655675555655575755555558657587575556585588566675756677555685855868655755555555575567585555585875555855557585857558565586875657555567855576755565755555876775555576567555688655567655555755665665755765765555555557555555575655575555657555555585655565877855558>ikCj6867755756555567557656585675555578575656555685855585656775555865665585565655655555576556765555557767555586565678655685555555655788555556556875755555555555767557655556585685755678566755855557658555657558557556755555556557558755575756555878555757675576555555555555ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüúúúúüúüúúúòÕŸql?>?llllAC??ClCClCCCClCCClllllllCClllllCCllllllllllCllCll?ollCCplllllllloppopplllllllllllllllllllolllllllllllplllplllÊýÿÿÿÿÿ×ullllllllllllllplllppolpllllplllllppolllplllllolplllllplpplllllloollppollloplllollpopvpllllpoolllplllppllllllllllllllppppollll?lllClollClllllCllolC?llllllollollllllllllllllll>CCCllCCCClllClC?lllC{èÿÿÿè{??lllllll>CllCC>?lCl>?CClllCC>>C??>=CCClCCC>>>>>>>>CC?>C?>CC?CCC>C>A?>>>>>=>CC>>CC>>>>>>=>=>CC>=>>C>==>====>=>>====>CC>======>===A==A=Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ– ;òÿÿÿÿÿ÷Y! }¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿàÓ5655755565667555567767586575555655577555576555565875555765575555555885556555667856555585555557556555587675555775766565565757885557557655657657565657555555555875558758855655858567585555558655555565585585575565775555575785755855658875757555556755556657555558555855755765557565765788>875656567575556556556757765657755655556555555585767565556555555855565857755855755757656775655555577555755555585555555655555557858555576555557675655555755755678675865765688776885575667785556555885577655768576575558558555567666855777856585555686855555ÓÓÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿüúúüóüóüúüüõ¬pCCC?CCllllllllC?CllllllCC?Cll?CllCCllCCllllCClllClllll?CllollllClollCClllllllllllllClllllllllllllllllppllllplllCCllllÇýÿÿÿÿÿ×ulllppollploolovpllplllllllplllllpllllClvollllplplllllolollllllloplllllpllppollllllllpllllllllllloollpolloopllllllllllllllolplllloplpolllllllllllolCllllCl?ClllClClCCllll?loolllllClllllllCllC?lllCC›÷ÿÿÿÌtlCCClCCClCCClllCC?CC?CCClCCCCllClC>Cl?CClCCCCC??CClC>>C??C>>??>>>>>>>>C>>>>>>=>>>>>>A>A==>>>>>C>=>>>>>>=>>>===>>>=>====>>=>=>A==>===zÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9óÿÿÿÿÿóZ !    =qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿýÿþÿþÿèÓ558586555556567665565575755555556556557575675565556756556755555657576585555655575775557557555558575585765556556655766658556765556575558756555556756755757578576556755556758557685765575566855585656856566555566555555655776676685757565785555775585557555855785865555765855555856555655556756555858867555555575857557585855676555755855875875556765555575565675575555567555655655755676565656756756555656576755565875575558555765576765555566556556765656755575565575555575575556766555575855858555568555656555687557665575555565558576765556768765555655557585855755865568875Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúüúúüúúúòÓqCCC>>llolClllllClllllCCCC??lllClC?lllCllllllCCllllolllClCllllollllllClClllllloovlllllllllllplllllllllplllpoplllllllllÇþÿÿÿÿÿ×ulllpploplppvvpoloopolllplppollllollllllovvlllplplllllllppllloollollllplpoppllllllllllllllllllllloollllllpplllollllllllllooloolllovpollCllllClollplllol>llClllllllCllllCCClllolllllllllolCCllC?llCCClÌýÿÿú›olCCC>?lllClllCCCClCC>>lC>ClllllClllCCClCl>llC?CCCCC>>>?>>>>?>=>>C>>>>>>>>>=>>>>>>>>>>>>>>>==CC>>=>>>===CC>>==>A>>===>>A>=>>C>=====AñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y !=qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿàÓ56558556555555555767558575555855658558565755785585555585555555657575875556575858755557566575558555585555555555557765755585755655865555657857655558557657655655675555855565557557555555675855578585555575566557778555555555556555565568566555655658756556755555775556766757655576866877555555575655658555587658555555566856555557765555675556658756565555585565555655767677786657655565655565758555555855755885555655655565656655555655855876557558575555655555655557675555567555585877555555588555768585855585555557555555565755765757656675657576755657557655658757556585ÓÓÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿüúúúúüúúúüüò¬qClCClCCC??llCCCCCAlllCCll?lllllCClClllllllllllClllolllCC?lllllll?llolllCllllllllllollloplllllllollllllllllllplllllollÇýÿÿÿÿÿÞvllllllllllolplClolplllolllopllllppoploollvl?lpllpllopllplllppllppllpllllllpooollllpllllollppplllpollllllllllpplllllplllllllllllClpllllloploCllllllllllllllllllllllllllllll?lloClllCllllllllllllllllCyèÿÿÿè{lllC>Cll>lCC?ClCCCCl?>Cl?>CC??C?>C?CC?C>CC>CC>>>>>C>>ClCCCC>>CCClCACC>>AC?=>C>>>>>>>>>>>CC==CC>>>=>>>>>>====>A>>>>>==>==>===>=>=>=ÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;óÿÿÿÿÿóZ    !qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿþÿèÓ5767557655655655856855565755655556555555767566655567655555586555556585656665655555565756556555555557858575556558576555565757555758855778567555556855855585557576755585555567555675877558855575567555558555565765575655555555575555858578857675556576556555585558576758855675555575555565555768755755556675865555755765755556556778555785585555755786575655855755555665555555667685555567565875555855555556555556876755855755855677557557575665565555765576565655655757767656556885658555567558768555565557576555775755565585575586556666655765758556765555575668756575567567557575675765ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿüúúúüúúüüúúòÕŽpjClllC>>CClCClCCClCll?ClllllllACllCllllllClpvl?lllllllllllllllClllColplllllllCllloplpopvppllplllpllloplollllloollppplÇýÿÿÿÿÿÙvollllllllopllllllllllllllllpllolpllopppooplllolloplppopllllploppppppolllllovpolllpolllllppvpolllpllllllllplpoollllpllllllplllllClvllllllopllllllCllllllllllllllloollllllllClllllllCCllllllllCllllllll›÷ÿÿÿÌulCClllllCC?CClC>>CCC>>lC>>>>C>>>>CCC>?ClC?>?>>>?>>>>CCClCCCCl>ClClCCC?C?>=>CC>>>>>==>>>C>=>?>>>>=>>>C>=>>==>C>>AAA===>====>===>AuüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!   =q¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿþæÓ85565675867667557756565555555586758556555557576575557578557558558767566575755675755566556855555855555766755665856555757565666565685555575555865565556586555755576587565687585566555565555555556555557655555576586567555557555558555565655565855675555585655585865558765555558555576585676578565565555655556575586576758585658556555555865555757555655556555655555585585658555875558557565675655765587566556555565755755755575765575655577655678585556785656555855555557556758755657565765555756655765855557556555555758755555585656755857555767855855578555655655655575555Ó×ÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿüúüúúüúúúüüòÕŽpCCCllllCClCClllCllllCllolClllllll?ClllllllCllCClllClllplolllll?lpollllllllpllllllolllllllvlllolllllolllollllllollllloÇýÿÿÿÿÿÌvllllplllollllollllpppplllpppllllloolpolllpollvpllpolollolplllpolllllpllopollplllllllplllpolllllopollllllllllllllpllllloolvlllllClpplllllllllllpllollllplllllllolllllllllllCCllllllllllCCllllCClllllCloÌýÿÿú›lClllCCllCCllllCCllClCC?CC?ClCCC?CC?>C>CCCCC>CCl?C>>C>C?>>>C>>>>>C>>CA>C?=>CC??>>>>>>>>CC>=>>>>>C>>>>>==A>>>=>==>>==>=>>=>=>>==CßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!óÿÿÿÿÿóY!   7}ªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿæÓ6578555558555576655675565555786555565555565555558555565585586565577755567575555575656585575558656758658557558755575555585555675555556575785565765755855575557555556556765575655665855555555555556555857558655555885655575576755557655677585556588565876555685577655785555587585566766655555555578755585557576588655758556855557556585575555657575555555587558755557557555585555558755755557555655558765556587675556757555767558568565776855555557757655555765556656865555565658566557555555757765655555555578785755565585576556576755575885556557575755568558555855ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúúüüúúòÕp?ClClllCCC??lollllolC?lolCllClllClCllCCClCllllllll?lllpolollClllllllllllplllllllollllllllpplllooploolllllllllllollllpÊýÿÿÿÿÿ×ulllllpllpllllplllllpppllppplllplllpppollloplppvolpplpppollllloplllClllopvppllllpolpplllppollllppppllllllllllllpollllllollplpllllllllppoolllllllpplClllolClllllllll???llllllllllCllllllCCCCCCllCllllllluçÿÿÿè{Clll>?CllClClCllllCCllC??CC>Cll>>C>?C??>CCCCCCCClC>?>>>>>>>>>>=>>>>>CCCC>>CCCC?>CC>>>>CC>=>>CACCC>==>==CC=========A>>C=>>=C?==ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y ! =s¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿþæÓ6557885655855555555557765576555868877555557557655575575655587555585755755555685785785557575557575558555555555875576555775767575756555875555675555577555775565585576755676555755555767575855556755555775557555756557555565555585575557578556555556768556855857587755557575655555557555565785575555755755775575555568557576655655575555555555675575555555555555555557575555555676565555577765655555567757555558687585555556655567558555885557576855657555555555555557555575555555555558575757566555555675755555558555555755757587555565575567576565665558758557555555755556Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüóüúüúúüüò¬pllCCClCllClClllCCClll?ClllCllllCllllllllllllllllllllllplllllllllllllolllollllplllllllllllllllllllllpollolllllppolllooÇýÿÿÿÿÿÌvllplllpppollllololplllplllllooolplpolpolpllplplpololloplplpllpplplllpllplllplllopopollllllppllppllolplllvvlollllllpllllloolplllolllllllpplllllllolllolplllllClllllClllolClllllllllCClllllllllllClllllCl˜÷ÿÿÿ×ulCCCClCClllCClClCCCll?CClC>llC>ClCCCCC>?llCl>>CC?C?CCCCCCC?>>>?C>>Cll>>=>???A>>>C=>>>>>>>>>>>>>>>>>>>>C>>=>>>=>>====>>=>====ZóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóY !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿèÓ55558556575875575655558585575875555555777575555677555875676555585555755555855555585675577555557675575557555765555755765855655555555567775787558655585585555757855555765555555585577556557555556577555555565575856755558757755875757557558755775756758555555565555757555577557585576575555576755555557575755555675557555776587555755756555575555557555575558585757575557575758567555585885556755677578555557575855555576755855558555755755575555557575557555575555655556555555575555555556558556557775555587557575655585555565556758757555555655557555575555675555556575775557755755855575ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿüúúüüúüúüúúò¬qll>?CClCClllCllCllllCClllClCClllllllllllllCllpolll?llllllpllppollll?lllllplllplllllllllllpllllllllllllplppopppllpolllÇýÿÿÿÿÿ×uvlollppppololllplplllloolllloploplpllopopppplloollplllpolllolpopoplolllllllllollppppppllllppoppoloppppllvvplpllllpppllllpllllloppllll?CllllpolllllClpoplllllllllllllllllllllllllllCClllllllollC?lCCClClvÌýÿÿúlClClCC?CllCC?CClCCll?llCClllC>CCllCCC>llllC?>>CCCClllCClCC>>?CCC>?CC>>>>?>C>>>>>>=>==>=>C>>>>>=?C>A>A>=>=====>>=>==========ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z ! =pªùÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿþÿþÿþÿþþàÓ5755558555555556578757557555555555575655575555557555755758555558575557555855655585575555577555758857678778757675656555555565775566557575757755587585576755575586555577555785575557555755565757555555555878555557585758755565565556557556555555856585555787855566557567555675557565555555558775875555555887555565575555858557755655565655557555557555575757585555578575556857575575587555765685776755556555556585576577575576575555557555555565577876765755555778557565757755875575755557555556555785767555555557575655855656557785755557558757575556555575555675555575557675555775576755Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúúúüúüúúüõÕplCClCClllCCllCC?lllllCCCCllCllllllllllllCllllllllCllllllpllollllllClplCllollollllllpllllplpllllllllplpllllolloloooollÇýÿÿÿÿÿ×vvollllpoolpoplllllolpopplollpvllollppoollllpollpollllpoopllllllolopllplllloloololllolllplllpllllllllppllvplllplllllplllplolllllplllvp?lplllolllpolllllllolllolllpollllplllllllllllllllllCCllllCCllllClllvßÿÿÿè{CCCllC?llllll?llCCllClC>llCCllCCClC>CCCCC?C?CC?ClCCClC???C>Cl>>?>??>>CCC=>C?>>C>>>>>>>>>CC>=>>>>>>>>>>>=>=>C>>>=>=>>>>=>>=ƒýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿóY ! q­õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿÿèÓ55855765555585555585765557557558555555555755555565575575557555587555555755875555575575876757755555655575855575575557575575575555875658655555557555555577556755858775755775755557557865558577755755587655875675765555875755857565576575555555855757657685588755875855555555555555555578555777557577765557555567555555575555555557585555575677556555867587555758555755756565555655775757875855655876575556555877555555578755855555555557757555555565558756767555855555755557655755765585577755555758875555755765555755556585585755555557667675855787778558555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüúúüúüúúüúüòÕslllllCClC??llC?CllllllCllllllClClllllllC?llolllllCllllClollllllppollllllllllpolClllpplplloppllllllppllllllllllllppoolÇýÿÿÿÿÿÙwoooplllllplllplppopppooppppopplllllppppllpllollpollplpllolllolllolopplppoplpopollllllloploplllllllpllplopplllollllllplllllolllllplpplllooolplloopllllllllllllplpvpllCllplllCllllllllllllC?lllllllllCC?Cll˜óÿÿÿ×uClC?C>CllClllClllClCCCCCl>?lllCllC?C?Cl>>?CCC>CCCCCC>?>>>ClC>>>>CC>CCC>>>>>>>CA>CCCC>>>>>=>>>>>=>>CA>=>>=CCC>>>==ACC?===ZñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y   9s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿþàÓ655658655856858756685856576775775575875577755555675757575757875557557755765787657565755555587568555755557757577655576755577557785555555555757775567875555777555555585575555555785575755557577557855775575585565575575755757587555775555585555775558757575756555756575557575577655575775777575855557557755555775555776776775757575557555775857555575555567555855785558775555555557555576755577575655555555765555565757758575558575557575755778557555575575786765577765558765575565576575577565757855587777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúúüúüúüúòÕplClClCllCClllllCllllCClllClllCCllllllllllllll?llllllolllllllClollolllllllllloolllplplplllllolllppllololllllllolppolopÇýÿÿÿÿÿÙulllolplploppolllolpooploooopooplllpplplllpololopollppppllooppllppllpvlllplllllpollollpppolooolllllpplllllloolllpollllopolloolololllllllpollllpolllllllllllllllllllllllpllllllllllllllllllCllllllllllC>llloÇüÿÿü›ollllCCllCCllClClCCC>llClC>ClClCCCCC>?Cl>CCCC?CCCCCCC?>>?>ClC??>CCCCC>>>CCC>>lC>>>>>>CA>>>>==>>>=>>>>>>>>>>>==>>==>=>>==ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿóY! =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿþÿþÿþÿþÿþÿèÓ755555555557555778557757555757855775775575755557775775557575877677585777575575777577757555778575875577555775555757555787557577755775575575775575757577775557575755575777557555785757675757557555576575585855677585577757777585575755757555577757875755755577585755875556775565775575787555777555575576755557575787557877577565575785557577555858758557558557577775787755555757555755578557787555557775755885755575755555577855555575577557657577775575778777777775567756778577755577776577755777757555758575575558778ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúüúüúúüúúóÓŽqClCCCllCllllllllllCCClllCCClllCClloll?ClllClllCllollllllolllllollllolllpplllllllppoolllplllppoppploplollllppolopoopppÊýÿÿÿÿÿ×ullllppplllppplllplollppllplplllolppllllllpolplpppllpolllpppvvpopppoppllllppllppppppooppolllpopplllpvolpllloppoloopplplvpllpvolplllplppllollllpllllolllllllplllCC?lllCllllolllllllClllllllllllClloll?llCCllußÿÿÿè{ullll>CC>CllCC?lCCllllCClC??lC?llCC>CCCCCC?ClC?ClAllC>>>>ClCC?>>CCC?>>CCCCCClC>=>>>>CC>?CC>>>>>>==>CC>>==>>==>>===>>C={üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y   !=p¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿþÿþþÿþÿàÓ7555855757758755555775555577588577775755575775755785776577875577755577857675575557775575777775558585755787755877557887577555765555755775776555555755555558555577657875777776555577765578575657555775755575755555777787575777577575757577555557577575757757555767875575557775577577555757577555575577555568757558775775755577555755857556775755757577587577575758575557755587577575757765555578756577557577577575587757777775576577755757778755557577558758787575555755555787768757555555785755575557775557757778555577575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúúüúüúüõ¬qCClCllllllClllllCClllollllllllllllllllllllllllllolllllllplllllllllllllllpoCllloolplllllllpllllollloppolllooppllllolllÊýÿÿÿÿÿßvllloppoollplpplovplpllpplplpllllplplplolppplpplpollvplplololoppolppllllllpvllopplppoppllppplploollopplolllppoolllolllloplllpllllllpllopllolllollllplllpllllollllllplllllolllllCllllolllllllClllllllClllllll{òÿÿÿ×ulll?CllllClClCCCCllClC?ClC>C?CCClC?CCCCC?>ClC>Cl>>CCCC?>ClC>C??>?C??>?>>CCCCC>>>>>>CC>>>>>>>=>A>=>C>=>>>=>>=>>>>==>>AáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿóY  =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿÿþÿþÿþÿþÿèÔ575777757755785658575757776755778757875577575775577557557655557776555557775776575575578558577557555777755577757775557555758657576557755755758775567555775557777557575577555555775757555557786588758577575565577575877575575875755755557775875757775577557575556757757575555755875755555575856755555577578757577878557557557777555585555685575755575577775777875676775675575557555575557575577557558775855557555677557555757555777757555557575777755877765755757775577575777585757577755575555587755577757557577755587557557577577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüúüòÕp??CCllllllllClCCC>llpollllllCCllCllllllllCCllllppllllllCloollllplClllplllollloplpplllllllllllllllllpolppoppppllllllllÇýÿÿÿÿÿÙvvpllllpppplllppppplollllppoplllppoopllllv|olllloplpppppplllooppoopplllopopppllplpollllllpppolppplopolllppppplllllpllllpplllpllllopllppplllppllolllpppollloplpppplpvplllCllC?llllllollpollll?lllllllllllllCllüÿÿú˜CCCllllllClllC??CCCllC>?CCCC>?ClllCCCC?Cl?CC>>?C?>?ClC>>>CC>>C>>>>CCC>>>>>>=>?C?>>>CC>>>>=>>>>>>=>>>>>CC>AC>=>===>>>›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z  !  $qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþþÿþÿþÿÿþÿàÓ555755558575775777785557785757758777787855557755775757765557855757757857757555755775775575775557575765775577567558757777755755577557575585787555575755567555775575555675877767755575557555777577775755777577755585575777785555775755576557755557765577555777567576756575776757577555557778775575857555755557575757555775555555557575555578866777785775757575577777575577855775755555578758577757558557755555557757557557775757555758757557857755778755775757757575555575757775775775777775577557877558775587875587557565575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúúüúüúüüò¬ŽpCCllllllllllllllllllllllllllClCllolCllllllllllllllllllplllllllllllllllplpplllolllolllllllllolploollolllooppooloppllolÇýÿÿÿÿÿÌvppllolloppoolopoppopllllvpllopllpoovplllpvollplolppplpplollpploplpploplplplplolopopllollopppllooppploplollpppplllvllolopollplllplpplllplllllplplllllplllllllllolllllllllllllllllllllllllllCllllllllolllllllCoßþÿÿèyllllllllCCllC?C?lCClllCCClC>CCClClC?C>?llCC?>?>Cl>CCCC>C??CCCCC>>C??>?>>CC>>>CC?>>C>>>>>>C>>>=>>>>>C>>>=>C>=>=>==@u÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;òÿÿÿÿÿ÷Y =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿÿæÓ7557567575775555757557787655577555777577785575757577555555577577575575777855775557557575557577555757755577777577775755777555557577777755577777775558575757557577577777575875755785755777775757676757555755757755577555775557757575577755775755775875575855557857557755557557575557755775877558777775557577757577577778557557757575557875755577757556575775555577775575775557555577577877778555557777555577557777785556755775575557555775575575555557777555557577557755755877657757555755557577556775757555755577775555557577557557757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüúüò¬Žp?lllC?ClCCllCCCllllolCCllllllClllllClopoollpllllll?llpolllllllllllllolllvvooolllllllolpppopvpllpllllllloplllpppvplllpÊýÿÿÿÿÿ×ulllpppllollppllplllllllpppllpvpllolpopplpvollllppollllllollllpolllopvppllllllpopploppolooollllppoololplpoplvppolppllpllpoopppolplllllpppolllllplllllpllolllllllllllllllpplllppllClllllllllllllCCClloplCllCCll{ñÿÿÿ×vlllllll??llllC?CC?ClllClllCllCllCC>?>>CCCCCll?CC>>>CClCCCCllCCCC>A>?CC?CC>>CC?C>>==?>?CC>CC>>A>>>>CC>==>C>=>>>>>>Ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿóY  =q¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿÿþþÿþÿþþæÓ7557755577575775555755757577578775777577857557577777575755757577555855778755555557555777577755757755557575575755757555575575755777755757577575577757555757776557558575555558755555557577755587555875757575555755867787755855557557767775755555585577577577575775577757755557757777758578755757757557577757758757575575587575555775555775777757855557577577755577757585575777557757555755775755755857555555757577755577555577557577777557557755755755785577575755557557577555757777775575757555757555757875555755775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúüúüúúüüõ¬pllllC?llCllllllllllllllllllClllllllClllolllpllllllllolllplllllplll?lplllpplpollolllllllpllopolloopoplllllpplolplpllppÇýÿÿÿÿÿÙvpllpplllpolppollpoopppppplllvvolppplplplopopplovplolopoppopllpvoloopppoplloooplovplooooooollllopllpollplppllppopoplllplplpllopopplllllppllllllloplllllllllvlllllplllplllplllpplllllllllllllllllCllllllllllllll›úÿÿü›lllllCCCCllllCCllC?lllCCCCCCCCCClCCl>CCCC?CCC?CCC?CCClC>?CC???CCC>CCCCCCC>>lC>>C>>>>CCC>>>?>>>C>>>>>C>==C>>>=>>>ƒüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóY !q«õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþýÿÿþÿþÿÿèÓ55557577555775757757875775657575755875577875775575755757577557577555577755777777775577755555775777575775555557755755575775755777757555577577557755785575755555577557755575775577558555755757775755775555577575587575577575577557877556778757775755557575755577577557777775675557575575755577755775775555757785777755557755855575758757575558757757575755557577775787555575557575555577587555755577775775577557575577577755557577555555775775575577785557755575775757577755575757555777775775557557775555555777777555577677575558Ô×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüúüòÕslClllCllllClllllllllllllCCClloplllllllllolColllllllopllpolpllllplllllllllllolopollllllllplpolllpppllpolllopolpllloppoÇýÿÿÿÿÿÙvllllppoppolllllpllopvvollllpppllpppopllllpppppv|olllpvvvplplppplppppplllopppollpppppppopolpooopllllplplllollllpppplllppoollllplppllpollllllllllopllllllllppplpCllllllploloollllpollClllllllllllllllClllllollllv×ÿÿÿè{lCCCCCC?Cllplllll?ClCCC?C>?>ClCllll?>?lC>C?>ClCCClC?CCCC?>>>CCC?CCCCCCC?>CC>=>>CC>=>CCC>=>>>>>C>==>>C==>>C>==>tèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!9óÿÿÿÿÿóZ !    qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿÿÿþþÿþÿþàÓ555755755777755577775575777557557577577575577757555787758755755577557757757757555578757775558575777557557557777577875575775757755775777777777557765575777558875775555775557557757775777758575757557575555555775575775875755557877755755575757575777575585757555775755575757575557577777575575757757775557557757757775575757775755575555757755677565577757555575757575557877577757777777755577865775755775755575555857765775557757757557575775775757757757758557757775577575557775777555557557757575575755758555575575755777555575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúüúüüüüòÕpCCllCCClllClllllCllllllllllllllllllCllllllllllolllllolllllvlllllvolllllllloplllplplllllllloplllpplolpolllppllppllllooÇýÿÿÿÿÿßvoopoloppoopllloopplpvpplllpoplpopoppopplopplplpvooplopvppllloppoppppplpllopppllovplplopploppllppllolpollpppollpopplllpplpllolplllloplllllopllollloplllllpollplllolllllplllpllllplllllllllllllolllllClllllllllll{èÿÿÿÌulllCllllClllClCCllllllCCClCCCClllCllCl??CC??llCCCC?>CCC?>>?CCCA>ClC>>>>CC?>>>A???>>CCCC=>>C>>>>>=>=>>>=>C>=>>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y   !q¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿýÿÿþÿþÿèÓ7585557577755557575555575555778857575555555775578757787777555555575755775587757755557775777557755757557575577587555775555777557555577557557775778777755755775775557577775557575575755558557575555775777757577877575577777557577755775578577575757577555777757557578555577555575555755775777567775575777757577775555765675555777777757555587757575577777757775587575757555777557555577775577777657575755775775755555575555757775575775555755575777577558557775555577777757577755555777575557577575777775755557757755775577555Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúüúüüúúüò¬ql?l?>CllllllCCCCllCCllllllolllC?lllll?llpllllpollollpllllppolpolppppoolpopplllllppppppolllloooppllppllppppollppplllplÊýÿÿÿÿÿ×vopollpolpppooopovvolppllpppppoppollplpvvppllllovpopoopooolpollplllllolppopollloppolllollopvplppplloloploollplllllllllpplllpllllllpllllllopploolpllpllopolollllllollplloollopllploollllllllllllllllllllllClllCCCl›÷ÿÿü˜olCClllllllCCCClllloolCllllllCllClloC?CClllCCl????>>>CCC?CCCCC?>lC?>>>>?C>>>CCCCCC>CC>>>=>>>CC?>>=>>>>=>>==>x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y!         =wªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿÿýþÿþÿàÓ575555757575775756785575775775555775778767575755875557577757555575775855575775555575575555775755777555575575755575757555755777758577575557575775575855577775575757775577557557557575757575757575755557877777575657775755855655775575577575585755777557657555777755577777557555775855755577755775775775557577557557755755577555778557575557575557555575777777755757555577757557575755675577575577555757557577555577755575757577775757575757777787555557755775775775755555787577755565757755577575777755778757757758577557757777777775577655Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüüüõÕŽpCClllllllllll>llllllllllllllllllllllllllllllloolllplllolllloloppllvpoplllplllllllpllollplllpplopplpppllopplllopolpoopÊýÿÿÿÿÿßvpppoloollpppppoppppllloovvloopppllppoopvplplplo}plooopppplpolooolllppppplpplllopoopplllloppplopopollpoopllpoolpplllplpoplololllllpplloolpllpplolollpplllllolllllllllllllllollllllllllllllllllllllllllllClllllllClÌýÿÿè{lllCllllCClClClllllllClolllCCllCCll>>ClCClCCCC??>??CCC?ClC?Cl?>>?>>>?>lC>>>>C>>??>C>>A>>>=>>>>>>>>>=>>>>>=CßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ#òÿÿÿÿÿ÷YqªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþÿÿþÿýÿÿþÿÿèÓ55577755755757755755575775757575777576755875777875575757775777757755757775575555557555577577577555555577575757557555577757557757775757575757557575777577555557775755855555775558757558577755755555555757775577777875557755785757557755577777755775585575757757555757575775755755555575568757577775755775575557575775575557575757557775777575857785757855755755577577757577775755557557557675555657575757577757757575775555775775757555777557757775655557557757755777577555775757757577557575555555557755855557555557775575575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüúüüúüúó¬Žo?Clllllllllllllllpollllllll?loollllllolllopllopollllololll?lolllllpppplllollopollllopllpplolllpppllplllllllpppoopppopÊýÿÿÿÿÿÙwolppllooloppvplllplolpolvpllpllpopppoopppoolpllppllpoppppoollppooppvvppllpppolollppoolloplppllolppoppvpoloppoooolloovolpooppopvppvplpppopoopplpplllllllllopplllppppllllllllllllllllpllllCllplllllllllCCClllllllllvçÿÿÿÌolllllClllllCllClC?CC?ll>?CCllC>Cll>>lllCl>CllCCClCC?>CCC>>?CC>>>>>CCCCCCCC>>>>>===>>lCC=>>>>>>CCC>=A?>>C>”üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóZ  =s¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿÿýÿþþàÓ5555575777555577755788757557777755757757755778787775577757577757577557757577557557555755555555877555777777575777755778575555575557575775567585758577755775757577857755555757775577777757777785577555757577777557778575577557777775555755857575577775765785785757755555777555555575575575755777575755587785755575775777755777578765757557758577578557757787577575557587755755775757577755755777575555576555775557755655775755555777585555777577777575556575757777575565557575577577755775775755777575557577775575875557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüüüò¬plClllllllllllllllplllllllllClplllpllloolllolllplllllllllplllollplloppllllloplpllllloolpvpolllplllppllllopllopppoppollÊýÿÿÿÿÿßvoopppopoloppppopllooppolpvoplplploppppoopvolppplpplvplpppllpopvoplppvplooooppppoloppoolopplooopplolovpppllopllppopllpooppllpplppppooplpppllopllolppllllllllollplppvlllllpllllllllllllllllllolllllllllllllllCllllll˜÷ÿÿý›ollCClllClCllC?llC>l>lll>ClllCCClClCCCll??CCCCClCCCCCCC?CC??CCC>>>>CC>?>?CC>>A>>>>>CC?>>=>>>>>CC>>=>C>=>CñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ9óÿÿÿÿÿ÷Y qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿÿþþÿÿýÿÿèÓ55557577557755757557765757557758777577575757775777777857557775777777585757775777755556775755575577777577575755775755577575575757877775575775777757755575755757755775575777755577555775777777877557786775575575755577757775577575775758785775775777775577578578787775575577777757575577777558557757675575755775555555775775555675575575757577575775575775757557556755557757557755777575777757575577575777777775755875657777575775557577777755575777775776Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüúüúüúüúòÕsllCClllll?lllllCllllllloll?CClllllppllplopol?lllpppollllppllpllllllllolppppllllpppvploppllllllollllpvppplooooppollppoÇýÿÿÿÿÿ×uloolopppolppvvpvppvpppppvpppoolllloopplllpvppppolppppooooolpv}vopoplllloppppvpooopvpppllllopooppppolpolplpppoppvpplloppollpplolplpllppllllllllllppplpolllllppllllllplplpppllllllppllllppolpllllllClllllClollClllCClÇýÿÿèy?CClCCllCClll?llCllCCllC?CC?C?CCClllCCCCCl?>???>?>??CCCCC?>>ClCC>>CC?>>>CCCCCCCCCCC>>CC>>>=>CC>>>>>>>>>ÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY!! ! pªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþþÿÿþþÿÿýàÓ775557577777578575577757557767575757587755775787577755777558557757775677775775778557777757575578755777575555777755777555755857577777577557585757557777777757777777755567777775757757575757775567755575755777577575755777757777755755557777557757557775558575755757775775755557775557755757557775757557775577777777577777755557575775577757777777555555775655787775755575777777775777577557757557757575775555555755585777577777575777757577775557575685557577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüüúüüù¬plllllllllllllll?lllllllllllllplCllplllolllllllllvoloolllllllllplpllllllppplplplppppollppopllollllllvpllpploplppoollpoÇýÿÿÿÿÿßvoploppppoplpppppppppllppppvpooploopopvolopp}ppplppppplooppoop|pplpooooppppoppoopoppplppplloooopppppooplpplpplopvppllppppllopplpllpllppllllolplllpllopopllllpplllolllllplolllpollolllllpplllllllllllllllllplllClllllußÿÿÿÌulllC?lllClClllCClllCllCClC?>lCllllll?>ClC?C>CCClC>CClCCCC>CCC??C?CCC>CC>?>>CCCCCC>>?C>>>>>>>>>?>C>=A>x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;óÿÿÿÿÿóY $pªõÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿþÿÿÿþÿÿÿýÿÿèÓ75755558757555557877757777775757877775777777755777557577757757775777777577757557775557575757757557575557557757577755757577577577757777757785785757777555775555775575557557555777857577757777775777577755757555777577577577777575777557557757777775775557575575557777575757777777755575777577555557555757777557755775755557775775555575775777775757777775557555777555758757577557577575757775577557757757555557777558777555577575557575577755777577577575557757556577777775575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüúüüòÕŽpllolllCCCllolll?llllllllllpllpollpllllollllllolllljlpollllllplpolpllllplllooopvpllllollllppplopppopplllppvppolpppollpÊýÿÿÿÿÿ×ulllppppppppolllppoppllloloppppppppoloploppoplpplooloppooopppopplopppopppppppppppppolllppovvpllppvplllolllppppooplppllpllpoloollolpvpllollopopollllopvpppllllolllpllllllollllllllllvplllplllloppplllloplllolllllllCll{÷ÿÿý›plllCllClCClCCllCClllCCCCCCllllCCCCl?>llCClllCllCllCCCl?>>>?>>>?CC>>CllC>=>?CC>>>>CC>>CCCC>>=C>>C>>>Cßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóZ  $pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþþþÿþþÿÿýæÓ7577755757755577575557557757575577757757777577777577777757857777775775575755557775775575757777777555775775777577757557757577757577577576757557775557577575555555775757557757575575755777757555775777757755557757575577777577575577757557555777575757775775775776777577775577775577575557775775757755577775577757555777755777757575575757557757755757777777755756655575775755777577557557755577775777577755777757777777777775757558757557775755557755757577575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúúúüúüüú÷¬sllollClllllllClllllllllllplllpolllllllplllllppllolClvlllllllplpllolplplolloplopooplpolllopppploppllplooopppppolopolppÊýÿÿÿÿÿßvppppoppoppoooploppppoplpooppopppppplpoppplpppppppplppplplppppppolpopppppppppppppvpooloopop|plolovpllppllppopppllooppopllpplllllvopplollploopvlllllpololpvlllplllplllpllllloolllllolppllllllllllllllllllllplllolll?Cpoüÿÿò{lllClllllCllllllCClllCl>CllllCCllCCCCCCCClllCllClC?CCC?>>?CCCC>??>CCCCC>>>CC>>A>>C?>CCC>>>>>>>>?>>>›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ9óÿÿÿÿÿ÷Z!!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿþÿÿÿÿÿÿÿþÿÿæÓ7575777575757577557587577777577757575777777757877575555777777575775577777757577577777777777575757777755757757555557777575857775757557775757757757777577555767757777755777775775757575755555777777757777577757777577777577777775757777775777555777575777757575577775775775557755757777777775775757557577777577555777777857555555775757777757755777777755757777557767755567755557577575757775575755777577775757775755777755757755775755555775575755757577755755××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüúüòÓq?ClpllllCllollllpplllllllllllllllllllplllllolllpvlllplpppolpvpllllppollllllpplllpvpollpppvppolppllloopoolooppollllovpÓýÿÿÿÿÿ×wpoolloppooppppplpolplppoloopolopolloppoplloolllppppplpplppollpvpploppooooppoolloppppoopplpvvppllpppppvppvplllllppppvppplpvpppoovpollllpppppppovplppllllovvppppllolppppplllppllpllllllllllpolpllllllllllClllClpppol?oouàÿÿÿ×tCCClllllCCCCClll>?llllACC?CC?>CCCCClCC?>???>?CCCC>>??lllCCCllC???llC?CCCCCC>>>llC>CCC>>>>>>>>?>>>tñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿ÷Y  !! ! !  =}ªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿþþþþþÿþÿæÓ5577775555755777755757755555777777775777775757777777777777577575575775755755777775577557775577575777755777777778575557557777777757775777557557757575775557557575757757757557577777775775757775775575557757557577575757757575758557757757755777755555557777577575775557575755777575777777777577557557775777755775757555757557777757577777577577777557755577557577555777577575557777575775577777575777575557757575557777577557575777777755777757577757775755775757775765757757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúúúúúüúüüù¬pCllllllllCllllllovlllllllllllllllolllpllllllllopopllllpplplppplllooopolpllppppllpppppolopppppolppllopooplllppplopopopÊýÿÿÿÿÿßvppoolppplovplpoppplopoppppopplppoloppopvolpppllvppplpvpllppoopppoooppppolppppllpppppopppppppppplpoppooppppoolllopopvpoplppopplppooollppllppplpvllpvlllloopppllpllllllopollpppolllllllllllplllllllllllllllllllllollllll{÷ÿÿý˜CllllllllllCll?llCllClllCCClCCCl>CCCllCl?>?>?CCACl?>CCCCl>>CllC>?CCCCCC???>?>?CCCCC?>?C>=>>CC>>>>ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y  =}ªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿþÿÿæÓ755577777757757767777777755775575787757787775757757775577577558575577787577575777755778576775577755775775557555755775575577755775575575557555555757777575757555577557757777787575757777777757777757757577777755777777557577755757555775755777575757777755755777575775555757575757757757755777777757575775775575557755577577577557575577555775757557557777577577767575677557755757777776575777757577555777775757757777777775775757577777577557575555577575756577757575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüúüüòÕ }ollllloollllClollplllllllllpllllllllllllpplllllllopplllllollloopplllopopllollolllpopllpllolllppvvolpollpppoolopppplllÇýÿÿÿÿÿÙuolpoppvpopvllllpvvpolpvpvvopllppopppppv|pppppoppoppllvvppvppppplppplppppoppppollplpppppollpppvpvppppllppoppppppppplppllllpppollpppllovollllllppllovpolllplollpvppplopopllllllllpvvolllllllllllllllllllooppolllllCCllllCÇýÿÿñvllllCllllooolClllll?llllllCClllllC?llClC?CCllClllC>CllC>>?CCCC>>CC>>??>?>>>CC>>>CC>>CC>>>>=C>=={÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY!      =s¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿýÿþþÿþÿþÿæÓ7777757557557577577577577577757577755777775775777777757777777777555757775757585577577575775557577757777755755757657777777755775575777775755767757777575775757577777775757557577777575577577557755757577575557757777577777755775577755575557777757557775555775575757577677775775777757577775577577757555557757775577777775757557757777757577777577777757557577565577555557857775777755757777755775757755775777777557777777775757575577777777577ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüüüòÕ}lClllllllllllllllplClollloollllpllllllplpollllllolloolllpllplploolpploppoollllopllopllopplopllpppplpplplooopopvopplopÇýÿÿÿÿÿÙvlppppppppppppplpppvplopppppppopplppopopvpppopvpoovpooppppppppppolppoopppppppopplloppvvpplooppppppoopplpoppopppllpvplpllplopplllppollpvpllllolololopppolllolllopooplpppolllllllllvvllopllllolllllopllllpllolllllCllllllluèÿÿÿ×uCllllCllllllllllCllllClllClCllllCCCCCCCCCllllCllCCCCCCCCCCCCCC???CC>?C>C>>?CC>>?>>>C>?C>>>>>=CáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ ;óÿÿÿÿÿ÷YqªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿÿæÓ575757757575577557577577757557755757575877777577777777775577757757575757757577757557775777757555775775757577585557755557777775575757775757777557577775558575555775557575557777757575777777775577557775775777777577777775755777557565777557575577557757775557575577575555575777577577757575777757555775775777575555775775558755557557575757775577755555777757775757575777757577757775557577575777577755576777755777576775577755775775555575557557775755777557755755555Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüúüüòÕp?lllllllCllolllClloloplClllllllll?lllvpollolopolplllppopvvllllopoppllppplpoploppllopopppollpplpplpvvppoololopvploooooÇýÿÿÿÿÿÙwvvvpoolllppvvploolpplpopoppolpp}ppolppppooolppplpppppppoppvpppolpvvpplopplollppvpppppolopppppllloppoloooppolpplloplllpvvvplpplloopvplpppvvppppppppllllppllopllppolllllllllppppllpplllpllpllpppolpvplllllllllllpoplllllll˜úÿÿý”llllolCCCllCClll?ClCCllC>CCll?ClClll?ClClCC??CCllClC??CllCC?CllCC?>>>>CCC>>?lC>>CA>>>ClC>CCCC›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷[     !  =q¬öÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþÿæÓ5755775555755755575777785775757577875777777577577777577557777577757757557777575577777775557555757777775575757755755757577575555577777787557777555577577577777777577775757555577775757777577775577755777555757557775575557757757577777877577785557557557575757777757775757577577757777577775777755777757557757575575777575755775577557755775775757575775775755555555777577575557777755757777757585577575575575575577577777557557577577777777577578Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúúúüüüüüüõ¬splllllllCllllllllllllpllllolllplllllllppllopllpplpollpplpppolpllpppllppllppppolopllpopppopllllpppplpvppoooopopppopopplÇýÿÿÿÿÿßwpvpppppploppoppooopppplopppplov}popoppploopvppplpvpppppopppppppooppvpolpppllooppppoppppppppoopollpppoppppppollooloploppvplovllllo|vlolppppppppopppolpplplovolllppppolllollopppllpopllllllllppplllopvlllllllolllppllllllluÌþÿÿñvlClllllllllClllCCll?llCCCCCl?llllll?>llCC??CClllCClC>ClllC>CCCC???CC>C>>C>CCC?CCCC>CCC?>>ACvòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z!=s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿþÿþÿÿþÿÿæÓ575577767775777775777557577877575577777757757757755757575757777757785557757777677575777777575775577777755577575757775757577577677765577575577855757777757757577755777755775777785655775577577577557775557555555555555555777557777757555775577555575557577555677757557777775775757775776755577777777577575777777575555557757777577775558775755757575857575777757757775575775755777577757757777555775575757775577775755755775775777777557755775555777577757575557575757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüüúüòÕŽpllllolllollllllloopllllllpolloollppolllllpllllpoollppllllllppollollpvolloooolpopppoopplloppvvplplllvoopppppplpppvvvpvÓüÿÿÿÿÿ×ulopooppoopvvpppoopv|ppoppppvplvvppolpolpvpp}vvpolpppppploloolpvppoppv|pv}vpvppoopppoppvvpppppoopppvpppppppppppppppolpppolopvvpvplplppplllllppllpooppollllpvpoolllllollolllppollllloppllllloplolllllpplllllllllCllllloolllvñÿÿÿ×uCollllllllllClllolCCllllCCCClC??llClllCCC?C??C?>>?>>>CCC?>>llCC>>ll?>>>?CCC>?????>>=>>>?>CÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z!   !  !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþæÓ7757577777575587857777777777777778777757757775777777777777777777557777775777755557757575757575775557755775565755555555557777555557757775575757575755755775777555757777577575757577777577755757775577577777775777557555675755575777577557555777757877575577775557757577757577557757757575777777777575757577575575755577755777777755775575557557556557755557577777775557555757777555757555775555555575557575577775557757777555755555757777775775575557575757577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúüúüúüüüõÕqlllllllppllllllppllllloloplllllllllpppollollllpppploplplollllllloooppollpplpooloppllpopolpvvpollllpppoppppppllovvvppvÓýÿÿÿÿÿÙvoooppppolpvppppopppvppppppp|pppppvloppooppp|vpploppoooopooloovvplppppppppvvppppoppopppvvppppppppopvvppppppoopppopppppooolopppppvoolpvplpllopvllppopopllopppppooopollollpplppllllllllollllllllllllllplllllllpllllllllplllll˜üÿÿý˜lloCllllllllllllClll?lllllCllC?CllCClllCCCC??>>C?>>C?>?CC>?llCC?>Cl>>>>>>lC>>>???>C>>>>?>{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóZ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿÿÿþÿþÿÿèÓ77577777777757775577577557777875777777775757777757775757777577777777777775757777777577777577555777757575757775557575577755575777757777557767675777777577557777557777757577575575755577577575555755757577575577775557577557575557557777777757777757565757775757757755755755757557557555577557757575777775575557575577757555757777577558575757577755575575755575755757757557557777557757557577577557777777557557755577575755585757777577777757577557755577557577575577755776557777××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúüüüüüüüòÓŽqjCllllppllppollplllllplllllllppolllpolllllppoplllloppllllllppvllplollolopplplpplopplollppolpppvpplopvpoplppppooppopppÊýÿÿÿÿÿßwppppppvvpoppoppv|pvpllppvvpplloop}ppoppppooppplppvvppppvpppvpppppvpoooppppvppv|vppppooppooppppppllppllpppllpppopppppolppppploopppppvllppvllpplllplplplloollopollollopppolllllllollllppopppllllpppllllllllllplllllpollllllloßÿÿÿòvoollCCllllClCll?CllCCllllCCCllCCllClCCCllCCClllC?lClCCC?>?CC?CCClC??llCCCCC>>>?CCCC>>>>Cßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ– @óÿÿÿÿÿ÷Y! pªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿþÿþÿþÿàÓ575575575757755757775767577777755757777775775777557777757775577777555757775777778777777775577577557757577757557767775755775755755777775777557577557757755577755555557757555577775757577777777777775577755775755575777557757577555575557575577775577557557757757767675577775575555777775557575775757777555757775557557757557757757575557777577577577557657775775757577578557775577775755777775775777777555757577775557575557575557757755577575575555555575577775555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúüúüúüüù¬wlCllllllllpppplllllllooplllllpopplllollllpppopllllvpllllllooppllpplolplpplpplppolpplpooppplloppooolppppplopvpooppllplÊýÿÿÿÿÿßwppppppvpppopppppvvpoppppvvppllolp}pplpplpopppopopvv|ppvppppppplpppopppppppvpppvvvpppopppllppoppppppplppvpplpppllpppploopolpopopvppppolpopppppplllopllplpplppppopllloloppooollllppolollloopollopvppllllllplllllloollllllClllyõÿÿÿÌullollloCllCCll?CClllCllllCClll?llCClCllCCClllC>?ClCCCCC?>??lC?ClCClCClCCCCC>>?CCCCC>>>›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóY   9pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿÿþÿÿÿþÿèÓ757757577577777555757557775777577577777777777577787777777577555775777577775575577777557775775577755575777757555567575575555755755575777757785577575777575777777557777577567575757775755757575755755757757577757775757557755557557575775755775757777755677557557775557755555767557755557777577757767777577757755775577775557777755575577577557557555556755577755757755775557556557557575777775777577577757577757577577755777757555757777557575577775577757657777555775555777757775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÕ}llvplllllllllplllllllllolopooolplllllllplllllllpooplpppplppppllpvvppooloopvvllllpoloopppppvpppppppppollpvpppppopplpopÓýÿÿÿÿÿ×uopvppoppppolppopppvvvollppoplpvp|vpvvvplpppvpoppppopvpppppolpopvvppvppppoppoloppvpooppvplpvpoooppvvvplpppvppvvoopppvpoppplppoloppoppppploplploppppvvpollpllllpppppolllpllollppppllpppolllllllolllllllllllllppllpllCllpplllolþÿÿý{lppC?llllCCllllllCllCCClCllCClCCCCC?CCClCCllCClC?C??CllllCCCC>>?>CC>?CCCCCC?>>>>>>C>?uñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Z $sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþþÿÿàÓ5755557557577575775775577577777777777787777577857757577777777777777577777787757757777757777555757777575557775555757565557777577777755757555576757555755575777565757777557577757777757575755777555755775755757775577775555757575757757755577575777575757556575577757577777777755775775757755757575775775575557575755555775757577775555557775777575757777775765575555777777775755575775577755776575577557575557855575777777755557757775757557775555776777577777557757777758Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúüúüúüüüüõÕqllppllllllolllllllllllollopppplpllllllpolllopoppplllpppppppplllpppppvpopoppppollppllpppppvvppppppppplplopppppppllppppÊýÿÿÿÿÿÙvoppvvplpvpoppplppp}}ppppopooopvvpppvw|ppplp}povvpoppppppppoppooppppppvvplpppopvvppppppppppvppooppvpplpppv|ppppppoppppppoppppplloopooppplpopllpopppppppolllplllppvvpplllllopllpplpppvpolllllolllllopplllllpppllpllllllvplCloloßÿÿÿèuoolCClllCClllllllllll>?llClCCClCllC??CllCCllll>>?C??>ClllC?CCC>>CCC?CCCCCCCC>>>>>>>?ÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!!óÿÿÿÿÿóZ! !s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿÿÿþÿèÓ7777775757557757555775755775777777785775777777877577777577575777775777777775777777775777575557787777757557557775777775575775757577757777757755777577577557575577575767757777757757575777575757577577577555555777557575577555755557757577575757777778757577775757557755577777555777555775757777575775757757575555757777775757757557555755757757777757777555575777775757757557577757757555877755575755575555577777787557775557757755777575755857577557777575757777555557757755557577555777755775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüúüòÓqjClllolllllllllllplllpllolllllloplplppollllooollplllllllpolllppollplpplplplopvplvpooppoooolllppvpppoppvppooooppoopvpoÊýÿÿÿÿÿÙvvpopvvppvppvvppoolpppvvvppppvpppplpppvpppppvplpvppolpopvpppvpppoppopppvolvpppvpoooooopppvppvppolplpppoolppploppppooopppoppppppppoppoopvvpllloppppololopopvppoppllllplvppolppopllllllppppllopolllolllllollplloolllllplllllllll{úÿÿÿÇlllClllplllllllplllllCClllC??llCC?CC?llCCllClCCllClC??CCCC?>>?>ClC>>?>>>>>CC?>?CClCxòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y     =sªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿþÿÿþÿþÿÿàÓ7757577777757775575777575777778777757777757777775557777755775775777757577775777577777575775557777557777757577557577577775577777757775777777757777775577757767777757775577775575577777777577777757777757777777577577777577757557575557577575775577775577755777757777755757777777577557755777757577575777775777777557775775757777757555775577877777778577755577777757757777757775577757777575777757577755577755777775575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúüúüüüüüõÕplllllpllllllllollplllllpllllllllppoplolllpplpollolllllllpololvlllopllplopolpppppppopppoppollloopvppoopvvppploppppppppÓýÿÿÿÿÿßwvvoopvvvvvppvploplppp}pvvppvpppvolpppppppppppopvpppllpp|vvppppppopppvpppppppvvpppppopppvvpopppppllpvplopppoppooppplloppppppppvvpplppppv}voollpopoopllpoppvvoppppllopppvvllpppolllllpooooplpppllllllolloppplpplpllllollllllllllÆÿÿÿú{lllClllllllllllllllClCCllC??llC>CC??ClllCClCClllCClCC>>CCC>>>?ClC?C>>>>?C>CC?CCCCC×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z =s¬õÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿþÿÿþÿèÓ777557775777755757775777777877757777577777555777775777575577577757775777777555577555555575775577577757755775755757575575775775557775577575777775567557575757777585577775775757777557777577777577777557575777777767777777575775777755757767777777775775757557555577775775557777757577757577777557757777777777777577577757557755757557575757755777777775858777575755577777775757757777577777757755777757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüúüüòÕqllllpllllllollllllllllppollppoolloploppllppolllpvppolppovppolplppopppplloopopplpppvpoopppppoppppolpppppppppppppppooolÊýÿÿÿÿÿÙ}vppoopppppppppopppvpvppppvppoopvppvppppvppplpppvpvvpppovppvpopppppopppppoopvpplpppoppppppplppv|vppppopppvpooppppppoovpppooooppppvopppllpppvppppppppllopplpvppolllppllpoollooppoolppplplllllllppplllvollolllllllllllllCCpplllllvèÿÿÿßllloololllllCCllllCllllClllllllllllClClll?C>llCClllCCClCCClCCCClCCC>?C?CC>>>?CCC>ƒ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y !!!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿÿþÿÿàÓ55775757577755755557777777777777755777777777777777775777575757777777777757757555777777577577777777775777777777577577777757777777555577577755775777557775777575575757755785577777577755777755555777775757777777777577755755775557775757755777757775757757775577777777555555757777755555577577577757756577775777777557777577677777777575757777775575767757577577777777777775577577555775577777577755777757777555577757757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúüüüüüüõ¬splllllllllppolllllllllpppllppppllpplolopooplllpllpopppopppppoopvpopppolloopoppllv|ppppooppppppppollppplopopppppppplooÇýÿÿÿÿÿßwpppoppppppppplpvpv|vppppppvppppppppppvppvvppppppp}|pppppplppppppppppvppplpppplpppppppppplpppvvppvppplovvvpopppppppopppppopllovppppopvpllpppvpppooppllppolpvppllovvollopolllllpppolpplpppllllllopllpplllplllllllplllllCllllllloo†üÿÿÿ›llpvlllClll?CCllClllollllllolCllllllCClClClll?>CllC??ClCClllCCClC>CCCC?>>C>>Cl>AßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z!   =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿèÓ7757775777775567757557777777777777778777777777777777577777777577785755777777777777577755777777577777777775777775575777777575557755557557575757775775777557765577775577777575775777577776777757575755777755757577557767757575775577555777777757777577577775777755577555777555757775577757757778757557755577757777575577557755775775775775777777557578575757577757577775ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüüüüòÕŽpllllllllllllpllolpolllollllppllllpooollllppooppolpoppolpplloppolpppplpooplpppvlloplpovpooppppppvpppvpppvvpoppppvvpoppÊýÿÿÿÿÿÙwpopppolplpvvvp|poppppppppppp|vpopvpov}poppppvvpppvvppop}vppppvpppppvvpppppppppvvppppppvvpoppppopv|pppopppp|pllvppvpoplpvpvvlppooppvvppplloopppvllpppppvplopopolpvpopolplopppoloollppllpplplllploollppollllllllllllllollpplllllllÊÿÿÿ÷uCoolllllvllllCllllllCCllC?llCCll?>CllCl?CCCllCCCCCClClCCCCl?CCC>>ClCC>>lC>>ClC›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY ! =qªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþþÿþÿÿþÿÿàÓ577777757777577577777777787777777777777777777777577777777777775577578775777775777777775775775777577755777757757778557757777777575777777755575777577777777575755777557577777777775757755775577777755577755777575777577557755757555577577757557777577557557775575777557577557777577777757777757777577577877555577755577777757555757775757775575577757777777755577777777575775775757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüüüüüüüüõ¬Žplpllpoolllllllllolllllolpopollplllllllllploppppploolollppllloppllppplpppploopppllpllppppppplopvpvppvvpv|vppoppppvppooÓýÿÿÿÿÿßwppvpopplplp}|vpvpppppvpoppvvpvvppvppv}plpvvpv}plpvppoppvvpppvvppplp}}vvplopppppp}ppppppppopppplpppvppppppvpplovpopvppoppppvppplllpvvpoollpppvppppvpppppolllopopppppvpplllpvvvpollllllllopplloppplllppllllolllplllpoloppplpll?lCluñÿÿÿ×llplllllllllllllllllllCCClll?ll?CC>CllClCClllCCCCClClCCCCCCCCCC?>CCC?>CC?>?ClvèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ#òÿÿÿÿÿ÷Y !   =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿÿþÿþÿèÓ5757577777577775757577777777757775755777777777787877777777777777755577777777775757577777755755557777757575757777555875777775777577577777777577767577577777577557855777577577777777577555777787775757575755775755577577777757758777757755757777757757575577777775777777755557577755577777777777777755575757775777575555775575775757575776777577577755777577575567557775577757557757757757758577577777777777657775777777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüúüúüüüòÕqollllplolllpolllllplollllpllloolopppplppplooplpolppppolpvpppoppplppvplppoopppppvpppppppppppppopopppppopvvoolopvpppvppÓýÿÿÿÿÿÙvvppplp|ppvpppvppppppppppvppppopp|}plpvplppppp|popppvpppppppppvvv|povvppppv|v|popppppppppppvvvppopppvpppppppppppvpoppppppppppoppppvppoppppppppllpooppooppppppvppolppopolpplplpolooollpplplollpoollloollpllllllplllplllllllpollllol˜ÿÿÿþ{lolllllllllClll?CllollClllllCCllol?ClCCC?ClCClCCllCC>ClC?C??>?ClCCClCC>>C>>CÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿóY   !!pªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿþÿàÓ77757777777777777575777577777777777887777777777775777777777777577777577777755777777775757777775777575757777757655775757777755777757757777775777575575755557577777775777755777777757577757757777755575755577575577655775775777777757557577777857775775775577577557577577777777775775577777575775575775777757775777777575777777777577777756575775757775775578557577577575575775755575777777557777778Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüüüüüüüüù¬ŽplpplpllllllppvollloppllollplllloppoppppppolpplloplpvpplpvvppvoppplpvppppppvvvppppppvllovpppllloppopopvvpopppppppppvpoÓýÿÿÿÿÿÙwppoppvvvv|voppppppppvpppppppplppvvpppvplpppvp|vplpv}vppppppppp}}}|pvppppp}}}vppppoppppplpv}|pvppppvpppppplpvpop|pppppppvvppoopppppollppppllpppoplloplpppvpppppvllppplopvollopploppollppopppllolllllploolllolpollllollllllpllllloovßÿÿÿñoll?lllllC?lopl?lollllllCCClClloollCCCCC>?CCCllCCl?>Cll??>>>?>?ClC>CCC>lC>>uñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z!! qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿþÿþÿÿÿèÓ7755777755555775757555557787778777777775757777777577777877777777777777777777777777777577777577575757575757777777755577777577575776757577755777577777775755755575775775577777755575577777757775777777575777755575775575577775775575577755755567577775557755577777575777777755577755575766775757777777575577757775777555757555557775577777775575757577777575777777557777777757775755575755755777755577777777775777777757777677577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüúüüüüüüòÕŽpolllllllllpllollllpoollvpllllppoopppplollllppoopvolopollpolppooplopopoppppppopppplp|plv}pppopop}pppooppopppvpppppvpppÊýÿÿÿÿÿÙwvpopppppvpvpppppvpppppopppppppvvppppppvpppp|ppppvppvvpppvppppppppppp}oopmv|ppv|vpppppvvpppppoppppppppppvpop|ppv|plpvpoppppoopvpppppopppppllvpolpvpppoolpvplplpwplpoollvppppooollppoopplllppopplollpppolllplllloolllllpolllplllllllüÿÿÿÇolCllllllllllllCllllllllllllCllCCCClllCCClC?lllCCCClC?CCC?CCCCCll?>CCCC?>CÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY $qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿþÿÿÿþÿþÿæÓ755755757577777777777777777777777775777777777577777777777757777757777777575777777577575777775757777777777757777757577775775555577777575577777557777775777777577575575777777777775757777777577555775775757755555575757555757577777777757775777577577775577577777577557757775755755777777755557757557575555775775575577775757557757777557756575557577757555775775777775775557555775757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬plllllpvollvpllllpolollolpopooppppolllopllllpplloplopolllollvvppplovpllppoolpppppolpvpppppppppopvvppppllllp}ppppppvpppÊýÿÿÿÿÿßvvppvpppvppp|ppppvv}vpppp}}vvpp|}popop|vv|plplopv}pp||pppp|||vpppppppppoopvvlopv}}}vplpvvpppppppvvpppopvvvvvvvvvppppppoploopppvplllopppppplpvppplvvvplplpvppooppppoollllllpvpopplopppvplllloppppllolpopplppplllpollllloplllllpplllloÇÿÿÿývCCollllllC>CllCllC?CllllllCllCClllllllllllClllCC>>???lll?ClllCllC?CClC>?{õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!;óÿÿÿÿÿ÷Z   !   pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿæÓ7775775577777577577575557577878777777757777777777877777777777777757557777777777577775775777775777775577577777577775555777555777555775777555575778777777577557557757578757575757777577577777777777756775777775577777577777557575577777575557775777777575757575757557577775777787775575757775577577757557777757577777777757755777775557577757557777775777577576575575575877777577755775777775775777775775577557577757777777777555775777777567757575557755577777557775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüúüüüüüòÕqlllplllolllvllplolppoplllllooolpplollppplllpvoopopooopppvplopoppllvplovplpppoppopopvppppppppplpppvppplpppvppppppoppv}ÊýÿÿÿÿÿÙvvppppppppppppppppp|vppppppppppppppp|vvpppvvpvopvpppvpppppvpvpppppppvvppplp}ppppvvppppp|vopppvvppvprvopppppppppppppppppppppppp}pppop}ppvpvolppppppooplplppolppoppppppppplvpppllpopplopvllppopollpppololooolloppollplllllpollpplllCllvòÿÿÿèlllllllplllllllllClllllC?lllllCllllC?CClll?CCClClllCCCCCCCCCCCCC?>>>CCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿýÿþÿæÓ7775777775757787777775877575775777777877777777777777577777777777777757777777777775755577757775557777575757757777777777775555775785777557575577575577757557777775757577777755777577777757777776777755757557775775777777777777777777777777777777577555757757777775555777777775777757777777577777777777777757777577577757775775775777777557777777775557775757577577777577577577577577577777577775557777757577775785775777777777757777557575775575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüüüüüüüüõ¬}llplllllllppvvpplollpvplllllppoloppllovvolpv|pppppplpvvvppolpppvllpoovvpplllppooopvvpplllllpppoppppppplpv|ppvvppplp|vÓýÿÿÿÿÿ×vlloppppppv}plppplpp|vvpopppppppvppvv}}popv}}vpppoplpppvpp}ppvppppp}|}v}vppvvppppppppp|}ppppp}vppppvvpoplppppollo}}vvvpopvpv|pppppppvplvpppopvp}pppllolllllpppllllopvppvvpvpolllppplloolloolppploppopllllllllvvppppploollpllplllllpol˜ÿÿÿÿllllolllllllppolCCCllllClllol?CllllCCClllC>?CCCClllC>CC>Cll>>>>?C>>>CC˜÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿ÷Y!    !!  =Ž­õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿÿÿæÓ77587755775777775777587777757775777775575575777755577777755577577777577577777757555757777757577777577777755775577555775777755557777757877777777775777757557777577777777755577557777777777575755775777577757755777777777577775777757576757757575777777757777777565775575557775757777755557777557777577777577555877577777777577775757775777577777777757577777575755577775777577777777575777777777777577775577777757757777777757777775777557775777777775557777777777777575575775777××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÕqolllpllllllpopollolpoppooplllpolloploppppplppllppppolpppopppvppplppppppooppopppppppppppppoppvppppppvvppppvvppppppppppÓýÿÿÿÿÿÙwpppppv}pppvppp}vppvpppppppv|vppvpppov}ppppp}plpvppvppvvppppppppppv|ppppppppvvpppppopppvpppopv|pppppppopp}vpppppppppppvpppppvpppvppppvpoppvpppopolpvppppplppppppooppplpppppllpopppooopoppoollllloooopllpoppollllplllllllpolllllollllllèÿÿÿúulllllClvllClllllllllll?llllCClllClllClCCllCCCC?ClCClll??lCCC??ll>>CCláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿóZ !wªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿþÿþæÓ77777557575777777755557877787777777777777757757787777777557775777777775577577777757577777777575577757777755777577777777755777575775557757755775777777575777757757777777777557775555777775777777577557575777557777575577777577775777777775777777577577575777575757775555775577777757577755777777577777577775777777577757757777777777775755557777777775777777577777775777577777857777557557777575775777775777577777777577757775577777775775577775777755755777577777777777775577ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬splllllllopllllllllpppvpppppllloollpvpppolvppopollooplllplpp|vvppplovpppoopppppppp}popoppv}vppp}vppp|}}ppvvppvpv|||ppppÊýÿÿÿÿÿß}}}pop}}|v||vpv}vpv|pooopvp}}}|vpppvp|}ppplp||pv}}}pvvpppppppv|ppp}}ppoppv}vpppvppppppop}}pppppopvvvvppppvvpopvvppoppp|vppooppllpvv|ppppllplpvppolpv|vppvpppppvvvpollloplplllolpopolllppplopplllllppplllollllllllllpolppppllloplllllllýÿÿÿÙvoCClllllll?>llpvlCCC?Cll?lCCl?>lllClC?ClllClC>>?>>CllCCClClC>ClCCC>›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !óÿÿÿÿÿ÷Y!    7pªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿÿÿèÓ7555577777755577777577557577787775777577757775778575777757757777575778577777577577775777777757577757577777757757777777577775575575755577755755777775787757577555777777777777755555757755777757777755777777777555777777757755557777777557577775757757577757777775587757557777775775775775575757775777577777775775575557777777775777777555777755775777577575557775757775777757777775757777777777775757785577777777777757575777777777757555757777755777577775777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÓpoplollpplloplllollollpllovpllvpllppopppppllllpppoplppplpppppopppopvppppppppvpplopppvppppppplpvpppppvpop}vppppppvpppppÓýÿÿÿÿÿÙwvppppp|vvpppppppppvvppppvpvpppppppppp}p|ppppppppppv}ppppppvpppvppppppv}ppppppv|ppppvppppvpppvvppppppvvppppppv|ppolpppvpppppvpppvpvplpvpopppvppoppppppppppppppppppplovpppllppppoopvlpplppolpoppolooppoolollopolllollllollollplpolllllllÌÿÿÿÿyplllllllpoCllllllllllllllClllClllClol>lll>lllllClCClClC??ll??CCCCClèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y  !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿýÿþæÓ777777577777775756577777575$775777575777775777777778757777777777777757775575777777757775777775755755777777577777777777577575777557555775577575557757775577775777575555777577775777777775777775857775577577775755575775775757757777775777777755575777577757755555575777777777777775577777555777775557777777777557577777757577577575577777575757555775777777577775777755787777777575855577757775775777775557777777577777757775755755775757875757577777757757575775757777775576775577557777757577557777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüùÕŸpllloolooloppopppolllllllp}vlovvpppolopllloplllolppolpoplppollollppppolpvpoppplllopppppvppppo|}}vpoppplpppplpp|pp|ppopÇýÿÿÿÿÿß}vppppvvppppppoppppppppppoppppppppppppvpp}|}vpppv|pp}|vv}}}}ppp}plppp}}pppv|vpvvpv}vv}}pppvpv}}|vpppp|}|poopp}|vpplppplpppppp|v||ppppp|}vplp}plovppplppolppllloppoppppllppllpvpvpppvppppppolllpppploppolppllpplllolllllppllllloopollllluúÿÿÿèlvplClCllllll?lllovlllopplllllllClllllClClllllllllCClll?>ClCCllC??ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ#òÿÿÿÿÿóY!!!!!  q­õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿèÓ7775777777775575775775777777775777755777777757787775757577777757777557877777777777777577775775757775757577577777777775755557775777775555555555575777575557775677775755777777577555555557757777555757777777775775575757775577577777577577775757777757757577757575777577775555775777575777777578577557555777775777555757755577777775777757777755777755575775755757757777777587577777777777777777577777775777777778575777777777775777777775757777577777777757577777557775777757755777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüó¬slllllllloplllpollooppllllppllpppppppolloopvolppppolpopppppoppplovppplov|oopppppopvpppppvpppppppppppppvpppvpppppppppppÊýÿÿÿÿÿÙwpppppvvpppvppppppppppp|vppvvppppp}ppp|popppppppvppppppp|vv|op|}ppppv}ppppp|ppppvvppp}pvpppppvrvpppppvppppppppppvpppvpppvpppppppppppppppv|lp|vpppvpvplpppvppplpvpopppppppppllpppvplpvllpopvopopolplopppooollllolllvplllollllllllpplllllp›ÿÿÿÿƒlvllllllllpCClllllllllllllllllllllClll>lllCCClllCCCCCC??llCCCCCCuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóZ   ! !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿþÿþÿþæÓ7775777777775775775775557775777757775=77777775777577777775757777777755775777557577787575775757777775775777557575777555577777777775775577577557777575755777557777577757777777777777777755757757555578755755777557777775775577775757757555577777777777557557577777757777777757777777775557557777755555777757577777577787757757775557757777775757777557777775775577657755577557577577575775755577775777757577777575777757777577775777577577775777877757757777775577557577557577577757777857577777ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬Žpjlllllllpvplpplppllpvvpllllllllppppopopppv|ppv}pplpvvpvvvppppopppppvpppplpvvvvvv|vppoopplpvpllpppppv}}}pppvpppppvvvv}×ýÿÿÿÿÿÙwvvvvpppppplpv}}}}|v}|v}}pp|pv|v}pppv}vpmpv||pppppppppp||pppppp}pppp|vv||ppvpppppppp}}|pppppppppppp|ppppvp}}popv|vopp||vvpp}vpppvvpplpllppll}}vpopvvpplp|vpvvpp}}pooppvplopppppvpooopollpppopppllllloppppllppolpollllpvolpppolllllllpllllèÿÿÿ÷lopolllllllllllolll?CCl>CC?Cl?CCC>?Cll>>lCCllClCCCCC???llC?CCCCCÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y    !=pªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿèÓ5775857757757557775777777755777=5787757=5777=5=577777577575777577877777777777777775757775757555777577777777775775775555555757775777557575757575577555577577777777777775777575775777777757755757777755577575575757755577777557577755775777577555755777757775775557757655777757577777577777577775758575757755577777755777555777557755555577777777757757577775775577777775575757557577855787757577557557777777775577555757777777777777755775757777757755575577777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷Óqlllpopllopooolppplppploploopplopopplppplppppppvooolpvplppppplp|poppppvoppppvpppppppppppppop|pppvvpppppppp|vppvvpppp}}ÓýÿÿÿÿÿÙwvppprpppvppp}ppp|vpvop|vpppp||v|ppp}p|pov}vpvvppp}|ppppppppvpvpppp|pprvppp|pppppppvppppppp}vvppppppppppppppppvpppppvvppppppppvpvpvppvpvopoo|vpvpoppp}olpppppppppvppppploopppolpppppolpppolpppopoppllppollpovpllllpollpplolooolllllllllpl{ÿÿÿÿÇllolllllllllllllllllllllC?lllllCllllC>lll?CllClCClCCClCCCll??Cuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ– @óÿÿÿÿÿ÷Z =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿþæÓ7575777775587777557577557757755=577777777777777877>77775=7755775777777777555777777777777775775775775777575777755777577777777775577757775577757777777777555775757757575777777777757777777775557757557575575775777675755777775757777577777755778577575757777777575757555777757757777775577557577757557787555557575777777775777575757777757575777757577755777675777557775777857777777777575575575777777775777757555777775555557577577777777575775577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬s}ppv|vvpllllooollloloollovvv}ppooopollopollllpopopllpvpllpopppv}plppooppllp}popvpppppvvv}}pv}}ppolpppppppv|vplpv|pppvvÊýÿÿÿÿÿÙvppppv}}}|v|ppoppploppp}}}pvv||p|vpvvp||p|vpppp|pppvpppppppv}}vppp}}ppvpppvppv|}||vpppppvpp|vppp}}vp|}}}}vpp}}popppvpppopllppopppvvppppppvplpplpllppv}pppplopplpllopppppvvopllloppplpllpplpvpllppppvpovplllv|plllo|vpllpllllllpvvpplloppllßÿÿÿýolooolllllllollllllClolll?lollllllClllllllC?ClllCClCCCCllCCClCÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @òÿÿÿÿÿ÷Y! !!! p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿè×75777577777757577575557777877777557757777775777777777777777757775777777777777775777757777777777757757775777555577775777575757775757755555577575767777555557575557775555577777755757575777757577577775575777755777777577755777577757777555775557777777575775777557557657777577775777577777557777777777755775777777775777777777757557575577757777777577757777777757758775775577775755757577757777777577777777758557577555677575777777777777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷Õsllpplllllloppoolpvplopoopppooooppppllvvppllp|llvvpoppplp}plp|vpplpvpppppppv|oopppoppp|pppppvvppppppppppppvpppppppppppÓýÿÿÿÿÿÙwvv}vpp|pop}vppppvvvvpp}|v|pvpvpppvpvvvvvppp}ppv}ppvvvppvvppv||}pp}}ppppv|ppp}pp||vppppvpppvppppp|p|vpp|vppppvppppp||ppp|plp}ppppp|pppppvpppppppplpvpppvplpvpopvplpppppppppooopppllpplopppppplpppppplppploopvplllpvpllpoplllllplpolllloollvüÿÿÿßllllllllllllllllllClllllllolClClllClllllllll>llCCCllCCll?ClluñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿþæÓ7775757757775755777577575575777777775=78777887777787775777577775777777777777575577775777757577775757577777775555777777777775577777757557557777777575757577757777777777577777757755777777777877577575757775575757577757577755775577777777775757777777777755555777555775757577777777555577577577775577777777757557757775755575777755577775577785775777777757775577757577775777557577757575757577577777757775757775775757777777777777777777557775ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÕŸplllollllpopolllllppllpplllllvvvpooolpv|vpllvvppp}vplopovvllpvlovpop}|vv}pplppppppp|p}}vpoopppv|v||v|vvppp}}}|pppppppvÓýÿÿÿÿÿß|p|p|vvppp}pp|vp|vrppppppvv|vppopppopp|ppppvrppv}pp|}}}||pppppppo}}pppp||pp|pppvrvv}|v|vpv}|||vppv|ppvvppppplpppppppppp|}ppv}}popv}pppv|vp}vpopvov|ppopopvplppvppvppollop}|vppvppvvpopvvplllollolllllpolpplplpvpllolllllllllloplplopllllllÇÿÿÿÿ{lllooolCClllClloollllCC>lllCj>lolllllC?ClCCC>ClolClCCCl>>CCÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóY  ! !  !s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿèÓ558767777777775577577777777577777757777777777777777575777757887777757775577777577757777777777757777775755775775757775777577575555575777757575857577777758777575555755577777557777577875775557777577777575777775577757575577575777577757575777557777777577755777777555777777757755777575777757775557577557775775557777777777757757578777777755775777775577777755577777575877777755577755777777775777555ÓÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÕpllppllllppopppolopolllppppppppppppploppppppppppppvppppppppppopppppvpvpvppplppppvpppvppppp}popvvvvvpv|vvpppppppp}}ppppÓýÿÿÿÿÿÙ}vvvvvppv|vpppp||pvppvppp|p||vvppp|plrv||pvppplppp}p}|p}pp|p}|vppp||vvv|v|ppppp}pvppvvvvpppvvvppvvppp||pppp|vppppvpvvppppvvpppvppppvpppppppvpppppovvvvplpppppppvpvvlooppoppvvlpppv|ppppppppllpvplpollppolpoloppppollpploppllpopooolllllllllp÷ÿÿÿèClllplllClolllllllllllllllllCClplClllllCCCCllClllCCllCC>?lxñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿþæÓ57775777777777757557777777577778777577777777787577775787755757787775775777777777777777777757777755777777777777577777587758775757755757557757757577777757777777775775775757577777575755575777777777777777777557575555577555777557777775575577785775557757575775777775775755775777557775575775555775777555757577577775755577775557777777777777777755775777777555777757577577577755577557877575767777577557775757555777577ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüù¬Ž}pppllppllpllooopppploppvppppllloopppppllppplllooopvvollppvvoopppplpplplpp}vpoopllp|pooop}}plppppvppppppppppop|p|povppÊýÿÿÿÿÿßvpppppppv~}}}|pvvvpppp}}vpvvrp}v}}}pp|pp|}p}}}}p}pppppppppppppv}vppppppvvvvvppvpppvppp|}}ppppvvpppppppppppp|}||vv}}p|v|vpp||pppvvpplopppv||vp}vppoppppvploppvvppppop}|pppppvpplllpplolllppvppvplllopvvvollpvplllllloppvpopplolllllllllppvvvv˜ÿÿÿÿ˜pllllCll>lloolllllllllllClClllllC??Cllll?Cll??CC>>>CClCClÊýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ  !óÿÿÿÿÿ÷Z   !      7p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿèÓ5575777755775577555777775777777777775875775777777777777557$7577555777577775777757775775775757777757757577757777777757775565755757577555775755757577757555757775757755777777577777557577785777777557775757755757757575555775775755777757775775577575777757757577575777555777575575777577757577755577875777777557755555555575757557777775757555777575557557775757777757557557577757757575578775757557577577777577777775755777777757755555757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽpollloppoolpllppppppoopvplppplpppppppppopppllppvpp|ppopppppplp|pppoppppppppploppppvpppppppppp|vpppp}vpp||ppppppvppp|vÓýÿÿÿÿÿÙwvppppp|}||p|}ppprvppvv}ppp|v}}p|vpvvvpv}pop}|v|pppppp|v|vpp|pp|ppppppvrpp}vpppppppppp|v|vppp}|pp||ppvpv|vvppvppp|vvpvvvp|}pppp|ppoppppvvvppv|povppppovvplppp|popopppvpoovpppopoppplloopppop|ppppllpppppppoollvolllpppvpllvplplpllllloplpppll÷ÿÿÿèllllllllllloplllllolClllllllllllol>CllllCCCCCClC?CCCCCCCvñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@òÿÿÿÿÿ÷Y  !!pªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿþæÓ5777775777757557755777777777777775777777777577777777787=7757775=777777557777757777757575775777777777775757757575555555757785555777757577557557775777757757677757577577777777755755557775557577555767557577777575577777757757775575577877575577577577577755777765575777575577757757575775575755575777557577777555777557575777757557777557775557775775777777575755557775777757777555775777775775755577777557558755577575755757855558577755777775775755777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÖ }lloppllloppllllllllopllppooolllvppppppvploppppplopvppolpvvppllppp}}|pvpolppv|p}}vpop}ppppppppvpppppppppvvpppppop}}pvvÊýÿÿÿÿÿà}vpppp|ppppp}}pp}ppv}pv}ppppppppppppppv}}pv|pppv}}}rv|ppppv|}vppv||}}p|vppp}pv|}vppvppppppop|}pv|ppppppv||vpppppv}poppppppvp}vpv}v}}|vpppolpoppp}vpoo|}vppoopppppppppplpppllooppv}vvplopllllllv|vppplpopolllopvopplllopllppoppllpolplllll?ll˜ÿÿÿþulpvlllppplpollllllllppolllllCllol?lolCC?lllllllllllClllÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY  !!!      !! qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿèÓ777777777777557675777=777777775=5777777875577778755557577777577575777777777777777577777775777777775777777577577575757555755757577577775555755577557555775757777555777575775555557577577757555755757585577577777757777755757575777575577755755775757755755757755577575555755757577577557755775757775755757777575777777755777755757777777557777775577755777777757757555577575757757777555577575755777775555557775555755758Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÓqlooppollloollpllppplppolopppplp|vlpvvoppppppopplppppppppppppoo|plpppvpppppppvvvvppppvvppppvppppvpppvppppvvpvvppvvppppÓýÿÿÿÿÿß}v|pppv}ppvp|}|v|vppp||}|pp}}po|}pppvppv|pppppppp}}}pvvp|ppp|v|pv}p|}|ppppppv}v}ppp|pppvppppppp|p}ppppppp}}|vpppp|vvppvppp}pvppp}}p|pvpvvvooppppvppvppvpv}poppppplpvpppppppoopoppppppolpppooplpppvwpoppplpllpplopoloolpploppoollpvllolpllplCllúÿÿÿÇoollllllllllollllllllllllClolClllCllllC>lllCClClllClllláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z ! 9qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿÿþæÓ577775777755577755577777757777777775757777755=7575775577775777757577557577777777577757757756757575777575757757775775577757577575577557577555577757555577775577575755777575775757577757775557555757775555555757755777757777777757777777757577775575555555577575757775755758555777557555777777577557575575577577577757575577777777777757775775755575755775585555557567755575775777557757775577755577775557555775575755775757755ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüù¬qpppllpoopllpvplolppllppppoopvllppllvppllppvppppvvpppvvpllopvvv}volopvpp}pppp|pppp|volp}vvpp|vv|vppv|pp|vrpv}}pp|}vppvÓýÿÿÿÿÿÙvop}}|ppppppppvppv}|ppppppp|vppv|p|}}vp|}v}}}vv|vp}vpppv|}pv|pp}}}ppp}vppv}|v|p||p}}|pp}}}}|}vpppv}}|v|vppppvvpvpoppv||ppvpppvop}pppppppppopvvvvv}vplloopvpopvv}vooppvvpvppoppvvoooovpppvvvvvplllpplllplllpppollplllloplllooollloplllplllvplloÇÿÿÿñolpplllllllCClllCCllCCllllllllCllCCopolCCllCllllCCCCC?{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!!!!! ! =}«õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5755757755755577555555775775757777777777755777777777557777777777757777777757757755777777577755777577577775777577777777777777555775557575757555775577555757777775757757577575775577557755555575777777555557777585585757577575557857757577755557757777755557757755557755755757777757777757777755757575557755757577577557577557775575555755755555757777555757575755755575555577757577757755555777575555577757577755577557577757555577777577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽsppolloppollpolppplllovvpppppppopvpoppppllpppppppvvppvplpppppppvppopvpppvpopp|ppppvvpp}vppppp|}vppv|}ppp}vppp|pp|}vppvÓýÿÿÿÿÿÙvvv|v|ppp|pppp|pp~}pvppvppppppopvp}vprw}pp}}}vvvpvpp|p}vppvvpp}}vp|p}}vppp}v|vppvv}|vv|}}||v}vpppp}}|pp}ppp}}pvppppv}vvvvvpp}vpppp|vvpvvpvppvvpp}}vpoopppppoopvvvooppvpvvpoppopvvpoopvpppppoopppppoooppollvpoloollollpvllolpololllppoolollpplCvüÿÿÿvlllpllloollllllC?lllllllllllllClllClllllllll?lllllCClüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY !q¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿàÓ757555777555755757775757755577777577777575777577777777777777575757757755777777755755557775777775777577777755777577757777575755775557575755575575757557577555555757757755575777775775757575575755777757777755775777577755577777755577775555577575557575557555775755557557577555575577575775557555777777785575557755757557755755775555577757757575775757757555755755775755777755755557757577558575757577577777775777775557755555575775577757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÕplllopppplpvvppvvppllppllollollpplllppppopppppopvpoppplpvpooppppvv||pv|ppoppop}}vpppp||pppvvpppplv|pvvpp|vvvpppv|vp}|pÊýÿÿÿÿÿàpp|ppvpv}pvvpppp}vppv|}|p}}}||}}}|pppppv|vpvrv}pppvvpp}||||pp}}pppp|pp}}|ppp}}|pppppppppppppp}vpppv}ppvvpppvppv|vppvppvpppv}ppvvv}vvvppp|vvpppo|vpv}|}}}vvv}vppopvvvvvvplpvvolppppvpopppoppllopooloopvvov|vvpvpopvpplpvppollllopllllllolllplllÇÿÿÿ×llloopllplllllllCllllC?C??llllCllll>llllllllCCllCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷[     !q«õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ755575575775777575775787777557775757777757777777557577777577777577577855775777757755777775777757557577775757777757575775575577777577555755577575557775555575755577577755755555557777555575555775777775757575575777575555775557777757757555755775557555775757575555557557777557775575575757575777775777755775757575575757755577775575575555557757557755757557757575775555777575775577555577855757555577757555577775757775757557575775757757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽsplpppopllppvppppppllopoolpppolopplppppoppvvpvpopop|ploppoppopppppvvvppvppvpppv|vppp}plpvppppp|ppp}pv|vv|}ppppvrpp|}ppÓýÿÿÿÿÿß}vpvv|v|}vv|vpppppp}pp||p|}}~p|}}}|pppp}|vp|}vp|}pp|}pp|}|}|p|v|ppv|pvp|}||}pp}|pppp|vpppopppvv|pp|vvvppppvppvp|||vpppvvvvvvppvvvv}||vpoov}vpvppwvvvvwwv}vvpvvvvpovvvvvvvvpvplovvovppppvoppoolooopvopoooppopovvvlooopppvvvvpllllvlovlllloololClvüÿÿ÷olooollllolllCllolCoplCCClllllClllllCClCCllllClCCllluèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Z  q¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿþÿþÿþÿÿàÓ77777757557777777557757777777777777757777757775577577777777777875775577577777577755775777777575755575577877775777755577775755775777757775555777755555577757557757757577757775557557555777555775557775575757757775777555555757557775575555755577777775775575775757557775855557575757555755777555577755575775557775555577755557557577575555557577757555777775757757575557575775757577577755757777777557577557757575575575757575757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÕŽpllopoloppooolplllppplppppvpoplpv|ppvpopppppvpppppvvpp|}ppv||vpppppppppvv}|vvvpo|pop}ppv}}vppv}}ppppppppppv|vpp|ppvvppÓýÿÿÿÿÿß}p|}||ppppp|||p||vp|}pppp}ppppppppppp}vp|||p|ppv|vppp}pppp|}pppppv}}|pppppv}|pp}|vvvvv}}vpv}}vvp}}vvvv}}}}vpppvvvv}}|vppppvvovpvvvvvv}v}vp}}vvpopvvvvpopvvvovvvv}vvvvvvoopv}wvv}}vvuvovvvpvwvvvvvvwvvpopvppopovvlvvpvpoollopovplovv|vouvovooplloÌÿÿÿƒllolooollpoolllll?lpllllollllllllll?lollCCC?ClolCCl{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ@òÿÿÿÿÿ÷Y!!!! !  mªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ775575775757757775757757777777757777777775775775777=575577777757777775777777777777575577757755777777755777577775777575575757775575775555555577755755777558757555557555775577777575757757557575757775757775755575757777555557777775777557577575557757558555777557557757585577757777587757777555775757577777575775757557755575575755577575577777775777775577577755557575575755555755755575555575777555577755557577755555757577577577555557757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽpolpplppoppopoolllopppooloppoopppvpp|vppppvvppppolp|pvvppppvvpppp||pppv}|pv|}vppvpopv|||}}|ppp}vvppppppppvp}pppppppvvvÓýÿÿÿÿÿÚww}p}ppppppvp|vp}ppvvpp}}vpppp}pppvpv}pv|}}vpppprp}rppvpvpp|vpp}v}rwppvpvvvvvp}|vpv|pvvv|}}p}}ppw}v}vpw}}vvvpvvvv|v}}vvppvwvvvvvvv}vvv}wvvvvvvvpvwvvvvvvvpvvvwpvvwvvwvvvvovwvvvvwwvvvvvvvvv}vvovvvvvvvvvvvvvuvvvvvvvvvvpllvvpvuooppvvvpvpvoloollvýÿÿ×ullloovlopllllllClloollllllllollllCClloCCCllClolCCC›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿóY  ! !!pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿþÿàÓ75577775555755755755575555775577777755757577577757778877777757777775777777775777$77577777757575777757757777777777757757757777757775777577575575577755577577787555555777775577557577755757757555777577775777757575577557557575757557555757757775577577575575577775555777577557557557575575757757757775757557577755577755775775575755757577755777757777757755757575757755555577577775577777757555575775557755575577577775755555775777755555775577577755577757555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕŸ}lpppollpppppllopppp}vpppppoop}ppoooppopplpppppvplp||ppppopppp|pvvpppplppppppp||pppvppvppppvopppp}}}pppvppppp}|vvv|vvvÓýÿÿÿÿÿß}ppppv|}|p|}v}vpppr}}pp}|pp}}}}pp}}}rvp}pp}p|}p|vv}vp|vv|}}|v}|vvvvvvv}}v||v|vv|vpv}}}vvv}vvv}}ppvv}}vvw}v}vv||vvvvv}wvvv}}v}vvovvvvv}}vvvvvvvv}}vvvvwvvuvvvw}vvvvvvvvvvuvwvvvpv}vvvvvvvouvvovvoovvvovvvuoovooooouooouolvuvvooloolovulooolpvvloàÿÿèlollllllllllouopllollolllllllllCCClllpllllCCllCllllÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Y ! 7s­õÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿèÓ5775757755755555755557557777757775577577575577577777777775575777877777777>57757777777757777577775775777787577777777777577577755777777777577757755557757557777577577555557757557557575777755775555755577577757555775577757757557577755777755577757575575575777755557775577575555575778755755755757557577577775555557555777575577557555757577757757555755775755775577775775575755755575755755755575775775755575577575777555577555775557577557555555575777775757557575ÓÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷Õ¢}oopppoopvplllppvppv|poppppppppppplppppppoppvvpppopvpppppplppvpv|ppvvlpppolpppvvppvpvvp|vpvpppppp}}pvp}rvpppv}vv||}}}vÓýÿÿÿÿÿà}pp|vp}|p|}}p|ppp|}}pp}}pp|}}}p}v}}}pv}ppppv|vvpppvppvvv}}}pv|vp|vv|}}}pw}vvvpv}vvvvv}}}}vvv}vvw}}}}}v}vv}}}vvvvvvvvvwvvv}}vwvvvvvvv}wvvvvvvw}wvw}vvvvvvvvwvuvvvwvvvvvvvvvvuv}{vvuv{}vvvuvvuvvvvvvvvvuvuouvopvuluoluvvlououvoovvllvvuouvvopÿÿ÷lvooololllllooooolooluollllllllllllllllllolCllCllllÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóZ  !!s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿþÿÿàÔ757555575555575557777555757777577778575777777777777577777777575=777777777777777777775557777755757777775775777757777777777755575755575757557557575575557555757577777775557577757775755555755557557575575757757555775755575575755777757555575777577557787555755577755557557755557575775555775555577575555777555757557755577555575555777555575575557555557777775755755755557575757557777575777575577555575775755757757775757557577755755777575755775577575575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüù¬Ž}llloopllloplpopppllpppppopppplpvpploooppppppppppppvvpp|vp}pp|ppplppppp}pppvv|ppov||pplppv|vr|vvppoppv}}pv}||vppvpppppÓýÿÿÿÿÿà}pp}pppv|pv}|}}|pppp||p}}pp}}ppp|pvppp}}pvpvv}}}p}}}|vpv}vvv|}vvw}vvvvvvv}v}vv}}}wvv|wvvvw}}vvvvvvvvwwvvv}v}vvvwww}}wwvw}vvv}vvvvv}vvwvw}}vwvvvvwwvvvvvvwwvvvvvvv{vvvvvvvv{vvvvvvuwwvvvuvvvwwvuuv{vvvvvuv}{vvuvwvvovvvvvvvvuoovulppooouuouuÿÿýullolovvoovlllooouollllllllllllClllllllCCllCCClllllßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y!  !=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777775577577575757777577577777757777757757777777777777777575775777557777777775777777777775777575575777757777575757777777777757577575755577755777755775555575755757775557555755555575755555577775757577575775577755557575555575775555555755555575755557777557577557555555775755575777785775575577557555757775557577575775557557555577555755555755555557557555575757855757555577575755777557775777777577555557555557557575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÕŽsppollpollloopololllpvpplpoppolppplppplpppvppvpoppv}vv|}vp}pppppppppop|vvpp}}ppppp}|pppppp}}}}p}pppp|}}|}}|}}|pprpppppÓýÿÿÿÿÿÙwp}}ppp|}}p}}p}}|p}pp}|v}}}vvpp|}ppp}v}vpppp}|}}}}}}}vvpp}}vp||v|}vv}vvw}}}vvw}}w}}}}}w}}wvvv}}vvvvvvwvw}vv}vvvvww}vwvwvwww}vwvw{}wwwwvuvwwvvw}vvvw{wvvvwwvuvvvvwwwvvvuvvvvvv{}vuuvw}{vuvvvvvvvvvvwvvvvv{vuuvvv{}vuvovvoluuuvuovuuvúÿÿ{lvvouvvvvuluvvuoolllllllluololllllllllllCCCllCllCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y  !=qªõÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿþÿþÿÿþÿÿþÿþæÓ5775575557575755757777757777577775757775755775777577777775=777775777775577777577757777777777775577757777757577775755757755755555577555557777557555755557557557557755557757577775775575775575555555555555757775757557555757555575755755575755575777555557577555757755777557757757757555777575755575555757557775555575557575575755555775555577775757557755575557555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕpooopvplppppplopvppppooopppp}vplpvppvvvplopppvpopppvpppppoppppvvppvpvvpppppv}pvppvpp|vv|pppp}||v|vpv}|pppppppppp|}}}poÓýÿÿÿÿÿßwpv}|p|pv}v|ppp}}vvpv}|ppv}pppv}}vp}}|vv}}p}vvvppv}p}}v}vv}}}vwwvvvv}}}}}vvw}vw}}}vvwwwvw}}vw}ww}}w}}vvv}}wvvw}wvvvwvvwvwvwwvvvvw{vwvw}vvwwwwwvwwv}vvw}wvvvvvw}{vvvvvvvwvvvvvvvvvvv}{wv}vvvyvvwvvwvuvuvvvvvuvvvvuvvuuuuv{vuvuu}ulovuvàÿÿ˜uvuoouvoollotolulllulovolllouulolllllllllllCllllCláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ ;òÿÿÿÿÿ÷Z!   !  !!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5555575757777575555757775757577777777777777=5555777777575577777575557577777577577577777777777577777777777777755577777777577755557777577777757557757775777555557555555575757777555777757755557757755775755557775577777777755775577775757775757777575575777557575757557577575775557577557555757557555755755757557777575577557757555575557577575775755777555775777575555755575577755575577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüýú¬soolpvolpvppllppvppvppooopvvvvppv}vpp|vvpppppppplppppopppvolppv}ppp}|pppppppp}}pp}ppvpp||pp|}}|pp}||vpppvppppv}pp}}vppÊýÿÿÿÿÿÙvvp}}}pp}pppppv}}}}v}}}ppppv}}p}}v|}}vv}~}v}}v}vvvvv}}}}vw}}v}}vvvvvw}€}v}}}wv}}}vv}vvw}w}vvwvv}}wvwww}}wwwwwvwwvw}vvvv{vwwvvvvw{}}wvvwv}{}{}wvyvvvvuwwwvvvuvvvvvvvvvvv{vvv{w}wvv{{wvvvyvyvuvvuvvuuvuvywvvvouv{vuvwvuvuuuvvÌÿÿÇuvuluuuuuoouolulluvvuuvuulCuvvvuuutltllluvlCllCCClçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿóZ  ! q¥õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿþÿÿæÓ55777557557557777777757777777757777575757777777577777777777777777=7777775775777777777577577777575777575775=7775775777757757557777777577557777557575557575577777755757755757755577775575775557577577577757577757555755557775557555557557577575775577555557557775755555775757777577575575577757575557575557585555775755775757555575755777777757775575777ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕ}opolopppoooppppvpoolppppppplplovppppppplppvvppv|vppppppp}vppop}vop}|ppvv|}ppv}ppppp}|pv}vpp|pv}pp|vpp|v|vv|ppp}|pprvvÓþÿÿÿÿÿÙ}p}|v|vpp|p}}pwpp|p}ppvp}|v|}vvv|v}vv}vv}vpv}w}w}vvv}w}}wv}}vw}vw}ww}wv}wv}}wwww}}wv}{ww}w}{w}ww}vvwww}wwwvwwwwwv{w}ww}vwvwww}{v}wv{v}{wvvvvwwvw}{wvwvvvv}{wv}w}v{vwvwvvuvvv{vvvvvvvuvvvwyvuvvvvuvyvvvvvuvuuvvvwvuvvvuuuvvuuÇÿÿ×uvvvuouvvuuvvvvuouullulouulllloullllluClulClullllCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y   sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿèÓ5755757555555557577577777575777577577777777=57777557577777777777777757775777777777775775757777757777557775775577775777757757755577557775777755555555775575755555775755557775757755755757777755755577557557575575757577855755775555757577577557555757755757555757757755557577757555555577555577575757777777755575555577555555755555785775777577575557575575757757755777775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüúÕŽqpppoopppoop|vpoppolpolppppplllploppppollpp}pppvvpppppplp||vpp|}||pp|||p}}}pv|||vppv}|v}}|vvpv}}}|ppp|}|pppv||p}}ppv}}×ýÿÿÿÿÿß}v}pv|vpp}}wvppppppvvppv}vvpv|}}vvvv}}}vvv}vv}vvvvvwww}}}}}w}w}}}}}vw}wwwvvvwwvvw}www}}}ww}wvv}vw}}}}ww}ww}}}}wvvvv{}}wwvv{}vvvvvvvv}www}}}wwv{}wvv{w{}}wwvvvvvv{}vvvuvvvvvvvvvvvvvvvuvwvvuuvuuuvvuuuuvuvuuvvvuuvžÿÿèuvw{vuvvvvvvvvvuuvulluluvvuuuoullCllullulClllluullßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y !!=s¬ùÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿþÿàÓ775575555757577575555775775777775777757577777575777577778777777777777777775755777777757577775777$7757777775777777575575777755775555755557557577757575755575757577755777557587555575775557575757777555557577557557757577577775575555555775555555575557577577775755555755757777555775555577775555577577557555777757877757775775557755755575777557755577577577557775777555555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕpppopppooolpppppopppvpppppppvvpppp|vvpppvpvvppvvpppvpppppvp}|pppp}}pvvvppvvvpppp}ppp|p|v|ppp|ppp||pppp}}vrpp}}ppv}vpvvÓýÿÿÿÿÿà}pv|v|vv}}}v|}|pvv}€}}v}}v}vv|vw}}}}wvvv}wv}}w}w}}w}}wwwvww}w}w}w}ww}w}}{wvw}v}ww}wwwvw}{}{w}{}w{w}w{wwww}v}{ww}}}{vv}{vvvvvw}vv{wvwwv{vvvvvwvw{vvvwvwwwvyvvvvwv{vv{vvvv{vyvvv{vvvwyvvvv{wwwvyvvvvvvvvyvvuvuvvv{vuuvvouv›ÿÿèuvuvuuuuvuuuuuuvvuvuluouvuloouuooulouulloouullloCC×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!;óÿÿÿÿÿóZ  $qªõÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿèÓ77755757757757555777777777777577577777777577777575777557577777777775577777757757776=57777777777775575757777777557577775777757775757577777577755555757777775557755555755776575557775557775757755775555757775755555775755575775577755757555577577555775557575775775555755555755557555777775757755557755555757757775557575575577557775757755575777775555775757755575775775757775555757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüþüü÷Õ}pllopvpllooplllppppppppppppv|pvvvppppppvvvpv}vppvv}pppp}}pp}volp}}}pp|vpp}vppppv|pppp|pp}}}pppp|}pvpp|vp}}}}pppp}|ppvÓýÿÿÿÿÿßwppp|}}}}}}|}}}v}}}}}}}}}vw}ww}w}‘}wv}}}w}}vw‘w}wvwwvv}www}}w}ww}ww‘}}vvwwvvv{vwwwvv}}wv}wvvwwwwvvvw}ww}vvvw{vvww}vvvw}wwvvwv}vwwv}wvvv}{vv{}vvv{vvvv{}vvvv{vw}}wvvvvvvvvwvvvvw{wvvyv}w{vvuvyw{w{vvvvuuuvvuuvvvvuuuu˜ÿÿèvvuuuuuuuuuultuuuuvuuluvuoltuuluuvvuuoouuvvulllCltÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!;òÿÿÿÿÿ÷Z!!   pªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿàÔ5755775755777557557775577757777757577775757777777777775757777777577775557775755$77775=7775777757777777=775777575777777777577577757777755777575777577577757755775577577757757575575577777755757575575577555557757757577557755757577557777555555557575757557577755575557757755555755575555757577557557557775575557557575777777555755557755575555557757557756555757775755575555757557557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüù¬Žsllppppplpppvpopppvpopppppop}pppppppppvvpppp|vppvpvvppppp|ppp}|ppvppppp|vvrpvpp|pv}vpv}vpppvv|v|pvv|pp}}vvppv|vpvv|||vÓýÿÿÿÿÿà|vvv}|vv}vvv}}w}vww}v}}}vv}}}}www}wv}}ww}}ww}}v{}}}v}w}vw}{}wv}v{}w}}ww}v}{wwwwwwvw}}}}vw}ww}vwww}ww}w{wwv{vvv}{vvw}wvw}{vvvwwv}}vvwyvvvv}vvwvvv|{vwyvv{vvvvvwwyvvvvwuvvvw{vvvvvvvvvuvvuvvuvvvvuvwvvvuvv›ÿÿßvvvuvvvuuvuuuvuuuuuuuuuuuuuuvuuuuuuuouuouutloutlooÇúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿóY   !q­õÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿèÓ7555755555755757577775577775575777777575777757777775777777557775777757577777777777577777577775577575777757775775777777755777757577775777775777775777557557557575557757557775755555557557775755777577555577775755557575577775577575757777755775777575757555577555557575555575555755577775755557757557575757557575555577775575577557555755775557755555555557775555757575775557××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüþü÷Ópppppopopppvvppppppppoloppplppolppppov|vpopp}pppppp}ppp|p|vpp}}vppvpppvvpvvpp}pppp}|v}}vpppp}|vp|v||||}|ppv|}}}}}}ppvpÓýÿÿÿÿÿàvvv}}v|vvvvv}}wvv}}}}w}}}}w}vvvvwvw}vv}‘w}wv}‘‘wwwwww}wvww}wwwww}{}vvw}vww}}}}w}}}{vvvvv}wwv{}vwww}wwwvvvwvvv{vvvwwvvvww{}}wwvvvv{vwvvv{vvvvvwvvy{vvvuvvvvvvwwvvuvvvvvuuuvvvuuvv{vvu{vvvvwvÌÿÿÙuuuvvvuuuuuuvvuuuvuuuvuuluvvvvvvuoluuvuuuoouuvvuuu˜óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y!!  ! $wªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿÿÿàÓ555555557577557575575777757775777777775777757577755777577775577775777755777757777777757777777757775777777777755576577775775575577577757557577775755575755755777577755757755777777555577577555555575775755575575755777557557557577555555755755757757575775557557557755575577775757555555775555555555755755557755775755577757555757557577757775557755557555575777775577575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüþüüüüüùÓsppoppopppppppppppopvpppppopvvppvpvvppppppvpvvppppp}ppp}pppppvppvppppvrpp||ppv}ppv}pvrvp}ppv}|pv|v|vvv|vpp}}|vwp}}pv}}Óýÿÿÿÿÿß}wv}v}}}w}v}w}ww}}ww}}ww}}}ww}}}}}w}}v}vwv}}w}wwwwwwww}}w}}w}w}}}wwwv}w}}}wwww}w}}{w}ww{wv}{v{w}vw}vw{vvvwvvwwvwwwvww{wwv}{wvv}}{wvvvvvwvvw}yvw{w}vvvvvvvvwvvvv{vyvuvvvvv{vvvvvvvv{vvvuvwvuvvvvvuvuuvßÿÿÇvuu{vuvuuuuvyuuuuvvuuuvuuuvuuuuuuuuuuuouluuuuotuuuuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ9óÿÿÿÿÿ÷Y   qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ557575777757557555575757577775757775777777757577757775575777775777577757777557777557777757777757775777557755575775755555775575755557775575575757557755555575555555755775557557775577555557557775555757557777557757557577555555757557575755575557577555575755575577757557757757775757577755757555775755755557577557557757755555755777555775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷¬sqpplpploppppppoopvppppp|vplp}}}v|vpppopppp|pvppppppv|pppv|vppvv|||ppv}ppp|ppv}|pp}}}vvpp}ppr}pp|pppvvv|}}}}pppv}}}v|}}×þÿÿÿÿÿß}wv}wv}v}}ww}w}}wvv}}vwwwww}}vvw}wvv}}}ww}www}w}}wvwww}wvvw}www{}}}vvvw{ww}wvwvvvww}wwv}wvvvvwvvwwvwwwwvv{vvw}wwwvw}wvw}wwvv{}wv{vvw}}vv{vvwvwvvvw}wwy}vvvvuvwvvvvuvwwvvvwvvuuw{vluvuuuuuuuvõÿÿ˜vuvwvvvvvuuuvvvvvvwuuvvvuuuuuuuutuuuuuuuuuuuCluollußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóY   !!pªõÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿÿæÓ575777555575757557577575777777775577555755755775777577777777777577577577777757777777777=57777775777787757775777777775757577557577575557575755557557557757575577557777755557575575757575755575577577775575575557577557557577777777755555555777775555755777757755557557755555555575555755555557557755557577777777557555757575557577557575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüþüüùÕsppvppoopppppppppppppppvpvppppppvppppppvvpppppvv|ppppp|ppppppvvp|v||ppvvv|v|ppp}pp}||p||vvvpv}vvvpv}v}vv|v|||vv}}|vvvv}×ýÿÿÿÿÿß}}vw}}}}}}w}v}}}wvw}}ww}}}}w}ww}w}}w}}{}}}{}www}}{}w}}}www}}w}}}w}{www}w}}ww}ww}w}wvwwv}{}{}wwvvvw{w}wwwwwwwwvw}wwwvwv{wwvv{vvvwwv{vvvwvvvvv}{vvvwwvv{vvvwvvvvvvvvvwvvuw}uvvvvuvuvvuvvuvvvvv{þÿý{vvuvvuuvvuvuuvvuuuvuuvuuuuuuuvvuouvuuuuuouuuluuuouu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;óÿÿÿÿÿ÷Y ! =qªõÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7577555775775775775777557575775777775557757575757557577777777777557757777777775755777577777575777777757757777777757777777775755757755757755775757755777775575777557775555555757557577755777555755757755575755777575555555757755775575557577575775755755555577575777755555777757757555555555557555755755575577555577757775557555755577757557557Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüú¬Žppppppppopppppopppoopvppv}vpppppppppppppppppp}}vpp}p}ppppppp|ppppvppppv|}p}vpv}}v|ppp|pp}}ppvv|vvv||v|vvvvvvvvv|v}vv}vÓþÿÿÿÿÿßvvvv}}ww}}}w}wwwwww{}www}ww}ww}}vw‘v}v}}ww}w}vvvvwwwwww}}wwwwww€wwwvw}vwwvvwvw}wwwwvvvvvw{}}w{}wvvvvww}{wvvvv{wvvvv{vvvw{}{wvvv{}vvv{vvw{{vvyvv{}wvvuuvvvywvvuuv{wÊÿÿõvuuuuuuuvvvuuvuuuuuuuulluvuuouwvuvuuuulllouuuouuuZluçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ! ;òÿÿÿÿÿóY !  !!qªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿþæÓ55555557575555557777777777777777777775777575675757777577775577777777777757577577577777775775777577775775757777575777777775557755785755775557755575555555757557777577575575777557755577755555557575555557757557557775575557755577755577755775777755775757557755577757557775775575555755557757775657555755555557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüýüüþüüüõÕpvvplpppppwppplpvpppppopppvpppppppvvppppv|vvppppppppppvpvvp|pvvpp|v|vrp|}vvpprpp}||vvv}v|vpvv}}}|vvvvvv}|v}wvv}wv}}vw}×ýÿÿÿÿÿßvww}}}w}}w}}www}ww}}}}}w}wwwwvvwwwww}}w}{}}w}w}}}w}w}w}www}{w}{wv}}}vw}vvwwwwwwvww}vww}}w}{v}wvw}}wwww{vvwwwwwwwwvwvv}}vvvvvvw{vvvvvwvvvvvw{uv{vvvvwvvvvv}{vvvvvvvvvvvwvuvv{õÿÿ×vvvvvvuuvvvuvuvuuuvvvvuuuuuvuuuuuuuvvouuuuuuuluuuoluuÊüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ9óÿÿÿÿÿ÷Y   !qªõÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7757555557777757575555755775757777575757777757757757777577=577775577787557777577757777777777=5777777757775777777575755577557555557577577755557775577755775555557555777777557575555557757577577575557577775555755555757777555787755777575575775555755775557775557555577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüýüüüüúÕspvppllllp|vvppvpppppplpppppppppp}|vvvpp}vppvppv|pppv}}v||vppprpv|p|}}}}vppp}}p}}pvpp}}}vpv}}}}}}vv}}}}}v}vvvw}}vvvvvw×þÿÿÿÿÿàw}wwwwwwvww}}}ww}}}wwvw}}vvvv}}ww}}}}}ww}{}ww}}wwwwwwwvw}ww}}‘}www}}vwvw}wvv}vww}wvvv{}}ww}{vw}w}vvwwvwwww}}wvvyvvwvvwwvww{}{}vwwwvvvvvuvvuuvwvvvvvvvvvv{wvvv{vvvv{vuvvuuyv{vvvžÿÿþ{vuuuvwvuvuuvvuuvuvvvwvvuvuouvuuuluvvuuuuuuuuuuuuuuuou{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y  ! !!o¥õÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿàÓ77575777575555757757577777777775557777575777775757777577777557777777777757775577755777577777877775777787777775757555575777777577577755577777555557557557575555775555555577575575777555575555777555557775555555577577557555775557575555577557585575775557755775555575755ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüýüüüüýüõÕppppppppppvpppppvpppvppppppppppppppp}vpppppppp|vvpppp}vpp}pppp|pp}p|pppp}p}ppvv|}vvvvv}vpvp}}}vv}}vv}}v}vwv}vwvvw}}}×þÿÿÿÿÿßw}}}}w}w}}w}}}}w}ww}{}w‘}}}}}}}w}ww}{}}}}}}w}wwww}}wwwwwww}w}w}}}}wwww{vwwwww}vw}{vv}wwvw}}}wvw}}{vw}{}wwv{vvvv}{wwvv}{vvvwwwwwwvvwvvvvv}wvvwvwwvvvvuvuvvvuvvwvvvvvuvvvvvuvvv˜õÿÿòuvuvv{vuuvvuuuuuvuvuuuvuvuouvuuuuuuuuuvuuuuuuuuuuuuuuou×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;óÿÿÿÿÿ÷Z! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿèÓ5775575575555755557575775777775777757757577777577777757775777775777775775=7777777777577757577777777577777557755555577777777577557577755555577575777555557557575555575575575555557755755757775557555555575777575777555575577555777775557757575555575555577757755755575575Ó×ÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿüüüüüüýüþüüú¬sqooppopvplloopppp|pvv|ppppppvpvppppp}vppppopv||pp||vv|pp|}popv}ppp}}pppppppvvvvpv|}|vpvv}}}}vvpvw}vvvw}wwv}}}}}}}}}}×þÿÿÿÿÿà{}w}}w}wvww}}www}w}ww}wwww}ww}wwww}}w}}wwwwv}www}wwwv}wwwvww{vv}wwvwvw}}vw}}}vvv}}vw}w{}ww}wwwvwwwvw}wvvwvwwvwv}vvvvv{vvwww{www{wvwwww{}{vvvvvvuuvyvyvvvvw{vvuuvv{àÿÿÿ›uuuuvvuvvuuvuuvvvvuuuuuvuouuuuvvvuuoouuouvuuuvuuvvvuuu›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY =}ªõÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿàÓ7575555555585777575557575775775775777777777757555777557777757757777775777577757777775=777775777777777777755777757757575575757757557577577555577557555777755757555775755577557775555755755755555777577555755757755555555557575575755557777555557577555557577577755757555557777555555555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüýüüüüüü÷Õ}opppppppplpppvpppoppppppp|vpppppppp|pppppppvvpppv|ppppvv}vppvpvpvp}}pp}}pp|}}}vv|v}}vv}}ww}}vvv}}}vw}}v}}w}ww}ww}}×ýÿÿÿÿÿß}w}w}}w}}}}vw}ww}w}}w}vww}}www}w}ww}}ww}w}}}ww}}}}w}w}}w}wwwwwwwww}w}}}{}wvvww}{w}wwwv}wwwww}}wwwwwwwwww}wwvv{vv{www}vvw}wwwvvvv{vvwwwwvwvvvvvvwvvvvvvvvvvvvvvvvvvvv{ÊÿÿÿõvvvvuvvuvvvvvwuuvuvvvvuouuuluuuuuvvuuuuuuuuuuluvvuuuuuuluáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y !  !qªõÿÿÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ55755557555575777777775557757575577775575757777775775557777777585755757757577577757777757757775577577557777577577775777577557785555755557755555777577555575575755575557565575775555555555577575575577755577555775555557577577555757557755555577757755755555555575557575757575557577575557Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüþüüþü÷ÕŸsppvvvolpppvvpvvppoppoppopvppppvppppppp}}}v|ppppv|v|}p}}pv|v}}ppv|v}}|}}vpv}v}}vvvvv}}}}}vw}w}}w}www}}w}}vvw}}vw×þÿÿÿÿÿàwvw}}wwvww}‘}w}w}}w}vwwv}}ww}vv}}}www}}wwwwww}wwww}vv}}wvvw}wwwwvwwvwvvwvvvwwvvvv}wvw}w{}vvv{}wvwwww}vwww{}wvv}}w{}wvvv{}}wwvvvvvv}}vvv{vvuvvvw}{wvwwvuuuvvw{vvvv{×ÿÿÿþ›vwwwvuvuuvw{}vuvvuuuuvutuuuuuuvvuvuuuuvvvuuuuuuvvoluuuuulÊüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !@óÿÿÿÿÿóY      q¥õÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿàÔ5555755775557755577757575777755757777755777755777577775777775757557775777777555757757777777575777577777777757777575757777757557555755755555757557555577755777577575575577555775557577555555555575555575555777757775757757577557557555575775557557757577757755555757775555575555575557755575777755ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþüüýüüüüüüùÕppppppppppppppppppvpvpppppppvvppvppppppvvvv|vvppp}|pppv}vprvv}v|v}vpv|w}}v}vvvvvw}}vv}}}}w}}w}}}}}}v}}v}}w}wv}×ýÿÿÿÿÿß}w}}}}}}w}www}}}}w}w}}}}w}ww}}}}}ww}}}}}}}}}}wwv}}ww}vw}ww}}}}}www}wv}w}wwwvv{w}wvw}}wvvw}wwwwwwwwvw}wvw}}{vvwwww{vwv{vvw}vvv{w{w{vvwyvvv}{vvwvyvwwvvvuvvvvvvv˜àÿÿÿÿâv{vuvuuvvvuvvuuvuvvvuuuvvvvuuuuuvvuvuutuuvuuuuuuuuuouuuuouÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y !  =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿè×5557577757555775755777587575775775575757777=7555777577777577575=7775777777757757778577775577757757557757557775777575775555755755755577557557755577555755555575575557757575555575757775575757755575557557577757757775555757555775577575557577575755577ÓÙÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿüüüüþüüþüýý÷ÓŽsppppopvvvppppoppp|v||v|pppv}|pppp}}}}}ppvp|prvp}vppppp}ppvvvvv}vvpvvvv}}}vpv}}}}wvvw}wv}}}wwvvvww}}}wwww‘}}wv×þÿÿÿÿÿà‘‘ww}ww}wv}vvwwww}}}w}ww}w}wvw}w‘w}}}}}}ww}ww}w}www{}}ww}}}www€www}wwww}{}ww}wvwvv}v}}vwwwvw}}}}wwww}}vwwwvwwvv}}wwv{}wwvvvvwvv}}}vvvvvw{}wwvvvvvvvvvvvw}vwvwwvvwvv{vw{vvv˜žòÿÿÿÿ÷{uvvuuuuv{vuuvuuuuuuuuvvv{wvvuvuuuvvvvllvvvuouullultuuultty×òó÷÷÷úýüüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY   =q¥õÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿæÓ575777555555577557575775577557755777775577557755757777757577557777777777777777777775778755777777757757777575575775777555575755575555755557555555555557775557557777555557775557575557555555555775755755555757755775575755577555575755575555557575575ÓÓþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕ}pppppppvpppppoppv|vvppvvppp||vpvppppv||ppppvvppv|pvvpp|vvvpv|p}}vvv}vv}}wwvvww}}vv}}}}w}}}}w}}w}}}}}}{}}}}}}}}}×ýÿÿÿÿÿà}}}w}}}ww}w}}w}www}}}w}}w}}w}ww}}}}}{}}{}}}}w}ww}}w}w}}www{}‘}w}}w}}}{}w}ww}{vv}{}wvww}wv{}{wvwwvw}}}ww}vv{www}w}{wvvwww{vvvy|yvvvwvvvv{vvvvvww{w{vvvvwwvvvvvw{˜Çèÿÿÿÿÿývvvvvvvvuuvuvuvvuuvvvuvuvvvvvuvuvuuuuvuuuuuuuvuuuuullvultuuuvy{”˜›ÇÇÌßòýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Y!=qªõÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75577555575555555757557557575575557577575775777757777575777777777777557777777775777575775777777757755777777777555775777777775757575755755775577775555575555555555577575555555557575577555555577555555775557557575755777555777557575777557775555577Ó×ÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿüüüþüüþüýýýúÕsolpp|vpopppvpppppppvppppppv|pp}}vppppv}pppppppp}ppppv}}vvvppvv}wv}}}vv}vv}}wvw}}w}ww}vvwvw}}}wwwvw}}www}}w{}Ùþÿÿÿÿÿà{}ww}w}}w}w}‘}}ww}w}w}w}www}}w}wv}w}}}}}}}}}w}www}‘wvw}www}}w}wvwv}}}‘}www}wwvvwv}www}wwwwvvwvw{}}}vwwvww}wwwvvwvv}vvvvwvvvvvv{w{}}wvvv{wwwvvuuvvv{wv{›ž×ñÿÿÿÿÿÿý×vvuvuvw{|vvvvvvvvvyv{vvvvvuuuuvvuvuvuuuvulouuvuuuvvuluuvuvvvuuulluuulltu{ßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@óÿÿÿÿÿ÷Z!   !! =wªõÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿæÓ755757557557777775757777757755775757755777755575757575757577577755777777557577777757777777775557775757577875577757577755777775755775755755557555555775557577775755757575575575575777755755755575555755557777555575555757555555555755755575775555557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüýüüüýüüüõÕqpppvvppppvppppppppv|ppppppvvppv}}pppppp|vppppppv}vpvv|vv}vvv}vvv}}w}vvwvw}}}vvw}}}}v}ww}v}}ww}w}w}w}www}}}}×þÿÿÿÿÿßww}wwww}}}}}}}}w}}}w}}}}}}w}w}v}}}}}ww}ww}w}www}}}w}}}w}}{}}}}}}ww}wvwvv}ww}wwwwwwvwv}{}{vvvvwwwwvvwww{vvwvvw}{vvvvvvvvv{w}{uvwwvvvvv{˜™žÇ×è÷ÿÿÿÿÿÿÿÿúÌ{vvvuvvvw{vvuvvuvvvvvvvuvvuuvuvvvvuuuvuuuuuuuvvuuuvuuuuuuuuvuuluvuuutuCuuuýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿóZ   7}ªõÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÔ5575557755557775755775757777775777777=77557575775577577777777777757777775777757757777757557757557577577777775577777755575755577557555755775775575575555777757557555775775555755775577757555557775755555775575557557775577577577555555775555775555775557577Ö×ÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿüüüüüýýüüþü÷ÓŽspppppvppppppppppppp|}ppp}|ppvvppvpvppvvv}vpp}}pp|v|v|v}v}wv}}}v}}v}vw}}vw}vvwvvw}vwww}}w}}}}wwwv}}×þÿÿÿÿÿàv}}w}ww}}w}w}}}w}}€‘}}}}w}w‘}}}}}}}w}}}}}}}}w}}wwww}}w}}w}w}}www}}{}w}{vw}}}vw}www}vww}w}}wvvwww}w}wwvvwwwvw}w}www{}}wvvwvvvwvvwvv{}vvvvvv}}vvvvvvvvž×æñ÷ýÿÿÿÿÿÿÿÿÿü÷èžv}}vvuv{vvvvvuuuuvv{vvuuuvvvuuuuvuoltuvuuvvvuuuuuvuluvuvultluuluvuuulllluuu˜üÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y    =qªõÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿæÓ555575575557557555575757555777755775777577577577$77757757777755777755=777755557777777775777777775775557757575575755555755557555757557575555557555557777555575555557755755755555557775555555777555555557555775575777777755555ÓÓÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþüýýüüüþüüüùÓspvpppppppppppvpppppvvppv|}vpp}pvp}vppv|v}pvpv|vpv}}vvv}wvv}}}}w}}}ww}w}}wv}}ww}vv}}w}w}w}}}ww}}}}w}ww×ýÿÿÿÿÿàwww}w}}}}}w}{w}{}}}}w}ww‘}w}}}}}w}w}w}wv‘w}{}}}ww}w}w}w}w}vww}}}wv}wwwwvwwwwvw}wvv}vvvvw}{vvvww{wwvvww{vvvvvvvvwvvvvvvw{wvv}{vvvvvñÿÿÿÿÿÿÿþýúõñèß×›vvv{vvuvvvvvvvvvuuvvvvuuvuuvvvvuuvuuuouvuuvuvuuuuuvuuuuvuuuoooluuuluuttltuvu{úÿòÇ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ@òÿÿÿÿÿóY  qªõÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿèÓ775777555575777575575555757777775777577757757577575777775775777755775777757=777777777777775557=55777777775557555755557555755775557555555575775557557555555575575555575575555555557557575555555555777555575555555555755557775555555ÓØÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿüüüüüýüýüýýú¬s}}vpvvppvpppppvvvpppppppp}}pppvpppvvv}}pvv}}vvv}vw}vvv}wv}}}w}vvvvvwww}vww}}w}vww}w}}{}}}v}}w}}}}}{×þÿÿÿÿÿà}}}}}}w}}}www}}}‘‘w}w‘{}}w}w‘}}}ww}w}}w}}}‘‘}}}}}www}ww}w}}}}w}}vw}}}ww}wvvwwwwwvwv}v{wvw}ww}wvwwvvvwvvw}w}wv{}ww{}vvvvvwwvvvvuvwvvvvvòÿÿÿþúõèßÊž˜{vuvvuyvwvyvvvuvuuuuvuvvyuuvuvvuvvuuuvvyuuvuuuvvuoluvvvvuuuuotuuuuuuouultuulluluuuzúÿßvÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–!@òÿÿÿÿÿ÷Z!   pªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ57555555575555555575577557575775777777775777575$75777777777577777757777777=77777777777777775755775777757755575555577577755555555557757557557755557557575557575557775555555ÓÓÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþüüþüüýüýüü÷ÖŽ}v|pppppvpppvpppppvvvpoppv}}|vpppppv|vv}vp}}vvvvw}vv}vv}wwwww}}vv}}vv}vw}}}w}w}}}}}wwww}}}}w}}}}}w}www}×ýÿÿÿÿÿà‘}}}}}w}}w‘w}w‘}}}w}w}}}}}w}}w}}}}}}}w}€}}}}w}}}www}www}}}}}w}}{}}wwwwv}w}wwwwvw}wwv}}www}}}wwwvvvwvvwwvw}{wwwvwwvw}{vvvvvvwvvvvv{vvv}èÿÿ÷מ˜vvv{vuvuvvvvyvvvvvvuuuuvvvvvuvvuvvuvvvyuvuuvvvuvuuuuuuuuuvvvuuuuutuuuuuuuuuutuuuuuullluv÷ÿÌv{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;óÿÿÿÿÿ÷Z  !qªíÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿèÓ55777755778775555557777757775577777577775578757757777777557757777777$777777757777777757575775777555755555555575777578555755775577555557555555757555555775755775575555775Ó×ÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿüüþüüýüüýýüú¬Žppppppoppppvvppppvvpppppppvvvvvpvvpp}}v|ppw}vvvv}}}}wwwwvv}vv}vvv}}ww}wwv}}}wvvvwww}vwwww}}www}}}}}}}×þÿÿÿÿÿà}}ww}w‘}}}‘}}w€}ww}}‘w}‘wwvw‘‘}w}}}}{}}}}ww}w}w}w}}}}}w}}www}}ww}}‘wvwwwwwww}w}w}}wwwwvv}{}wvw}w}}w}wwvvwwwvwvvvvww}}{vv{}vw}vvvñÿÿÓ{wvvv}}vvvuvvvvvvvuvvvuuvuyv{wvvvvvvuuuuvvvvuuvuvuuvvvvuuuuuuuluuvvuvvuluvuuvuvvuCuuvluultu÷ÿÇuuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Z ! !$s­õÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5755755555575557755575557555757557575775575757775777775577777557577777767777777775777577775575577557777557575555575555555755557577557555555555575575755755557555ÓÓÿýÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþüüýüýüýüüüùÕqoopppppvpppppopvvvppppppppvpvvvvvvvv}vvvvvwvvvww}}}}}}wvvwvv}}vww}}}w}}}wvv}wvwv}}}}}w}}w}}}wvv}w}}}}Ùþÿÿÿÿÿß}}}}w‘‘}}}}}}}}}}}‘}w‘}}}w}}}}}}}}}}}}}}}}}}www}}}}w‘w}}v}w}}w}w}w}ww}}}w}www}}}wwwwwwvvw}}wwvv}{v}w}vvvwww}{vvvvww}{vwvvw}}v{}vvvèÿÿ˜vvvv{w{vvvvvvvwvvvuvvvvvuvvvvvvvvvvvvuvvuvvvuuvuvvvuvvuuuvvouuuluuvvvvuluvuuuuuuvuuvuuuulluõÿÇulßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@óÿÿÿÿÿóZ !sªõÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75557757557557555555775577557777575777575=777=577757=7757777775777777775755555575557557555575775777755575577755575557555555557555555577755757555557555577Ó×ÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿüüüþüüýüýýþ÷ÓŽppvvppppppvvpppvv|}pvvpvvvpvv}v}}vvvvvvvw}w}w}www}wvvw}}}w}v}}w}vw}}}}}€}w}}}}w}w}}w}w}}}}wwwww}}}×þÿÿÿÿÿà}}ww}‘w}}}}}}}{}}}}}}}‘}}}‘}}}}}}‘}w}}}w}}}}}}w}}}}}}w}}}w‘}w}}w}wv}www}w}}wwwww}wwvwww}v{}wwwww}{}w}vwwwwwww}ww}www}}wvww}vvvw}vvv}wvwwvvv{wèÿúvwvwvvvvv}v{vvwvvvuvwvvvvuvvvuvuvuuuouvwvuuvvvvuuvuuuvvuvwvuovuoluvvuuulluvuluouuuuluuuuuuuèÿÆvuÇþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y! !  =qªõÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ555575555575757557575557577757557757777757755777777777775577777757777557577777575557557755557555775555555575557555575755775557555557557757555755757555775755757577ÓÓÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþüüýüýüýüüüùÖ~ppvpvppopvvvppv}vpv}vpp}}pvvvvv}}vvvvvvv}}}}}wvvwwvvw}}}ww}}v}w}vw}w}}w}}}v}}}}w}w}}}}}wwv}}}}×ýÿÿÿÿÿßw}}}}w}}}ww}}}}}w‘}}}}}‘vw}w}}}w}}w}w}}w}}w}v}w}}w}}wv}}vw}w}wwww}}w}wvww}}wwvww}{w}}ww}}}}www}wvwwwwv}{vvvw}wvv{vv{wvvv}}èÿ÷†w{wvvvvv{vvvwvvvuvvyvvvvvuuvuvvuuuvuuv{vvuuvvvvuuuuuvvuvuvuuvvuuuuuuuuuuuvuuutluvutluvuuuoçÿÇuu›ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ! @óÿÿÿÿÿ÷Z    q¥íÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5575555757757775757577555575757577757757757777757777777877=7777777777755=7777577757555775555577575777555755555575755755555555555557555555575557555575555577Ó×ÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿüüþüüýýüýýþ÷ÓŽsppppp|ppvvpvppv|vpvvvv}}vvv}vw}wvvvwvvv}wvww}w}}}w}}v}vwww}}vv}}}ww}w}vwwwv‘wv}}}}}}ww}w}}}}}}}w}w}wwv×þÿÿÿÿÿà}}}‘}}}w}}}}ww}}}w}}}}}}}}www‘}}}v}}}w€}}}}}{}}}w}w}w}w}}}}}w}}ww}www}}wvw}ww}w}wvwvw}w}}w}wwwwvvw{}wwv{}w}{}w}wv{}}vwvv{}vwvvvwv}vwèÿõvvwvv{}wyvvvvvv{vvvvvvvvwwvvvvwwvvv{vvvvvvvuuuuvvvvuvuuoouuvuuvuuvuuvvvuuuuuvuvuooultuuoluußÿuu˜ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY !=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ575557777575777557577777757577777755577777777757$777757777777777775575577575557755755755755577755575555557775757555777557ÓÓÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿþüüþüüüýüüüùÓŽqppvvpppvvpppvvpvvvvvvo}}}vvv}v}}vvwwwv}w}vww}}wwv}v}}vwwwv}}ww}w}}w}w}vvw}}wv}}}}}}}w}}}w}}}w}}}}}}}w}×ýÿÿÿÿÿà}‘}}}}}}}}w}}}}}}}ww}‘}}}{}}w}}}}}}w}}}}}}}}w}www}}}}}}w}www}}}}}ww}w}}www}}}wvv}}w}}{wv}wwwwvvw}wvvwwwwwvwwwwvwvw{vwvvvvww}{wwâÿõvvvvvvwwvvvv{vvwvvvvvwwvuvvvuvyvvwvvw{vvvvuvuuuuvvvuvvuuuuuuvuuouvuuuvvvvvvuvvvultluluuuuuoßþÆuu{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Z  =sªõÿÿþÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5575577575555557577577577777757757777557775577775777777757=75777777757577775777557777577577575755757555757557575555775555777555555577777555555555577575555755575555555557Ó×ÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿüüýüýüýýýýþú¬Žppppwpvvvpopvv}vpvvv}vvv}vv}vvvv}}}}}}wwv}}wvwvvwwvww}www}}ww}}ww}}}}wv}w}}ww}}w}}w}}}}w}}}}}}w}}}×þÿÿÿÿÿà}}}}}}}}}}}}}}}}‘}}}w}}‘‘‘‘}}‘€€w€v}}}}w}}}}}w}}}ww}}}}w}}}wwwwww}€}w}}w}}}{}w}ww}}ww{}vv{}wwv}w}wvvvwwwwwww}wvvvv}wwwvv{vvvèÿè{vv}vwvvvuwvvvvuvwyvvv{}vvvvuvvuvvuvvvuuvuvvuuvvv{vuvvvvvvuvvuuuouvuuuoltltluuuuuuvuuuluouußÿuouüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿóY!qªõÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ555555555577577555757555557557557578755775755755577777577777777777577777557777577757575775557575755555575757555557755757555557575555557555757555555555555ÓÓÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿþýüýüýüüýüüùÕqppppvv|vppvvv|vvpvvw}vvvvw}}www}}}}w}wwvww}vwwvwww}ww}v}}w}}wv}w}wwwv}}wv}}wvww}}}}v}}}}}}}}}}}Úþÿÿÿÿÿß}}}}}}}w}}w}}}}‘w}}w‘‘}}‘€}}€}}}}}w}}}}w}}}{}w}w}}w}wv{ww}}}www}}}}{vww}w}wwv}}}}{vw}{wwvwwvww}{v}vv}vww}}vvvvwvàÿè{vv{wvwvvvwvv{wuvvvvuvw{vvvvvuvvvvvuvvvuuuvvvvvvvuvvvuvwvvuuuvvouuuuuotuouuoouuuuuvvululuou×ÿÇuttúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y! pªõÿþÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5555555775775755555557577555755575777577557757555757577575757577575777575577785775577777755775757557555755755775555577575555557775755777755555557575555Ó×ÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿüüýüýýüþýýý÷Õ}qvppppw}vvvvvvvvvvv}vvvv}wvwvvvwwvv}}}wvwwvvw}}}}}vv}ww}}}}}}vwww}ww}‘€}}}}w}}w}}w}‘v}}}}}}w}}}}}×þÿÿÿÿÿà‘‘}w}}}€}}‘}‘w}‘‘}}}}}‘}}‘‘}}}}}}€}w}}}w}}€€}}‘}}}}}w}}}}ww}ww}w}}‘}}www}wwwww}w}}ww}}}}}wwvv}}{}vw}}}wvwwwv}vvwww}|}vvv{wvvvv{}ww}wvßÿâv{vvwvwvuvvvvvvvwvvvuvvvv{vvvvuvvvvvvvvvvvuvvvvuluvuuuuouvvuvuuoouvuuvvuuultuvvultuuouuuuu×þuoo÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!;óÿÿÿÿÿ÷Z! !!q¬õÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5775557755557557777577755577755$755775775775757777775757777775777757577557555557777777575555557777555757557575555757755555577555555555777757555575775575ÓÓþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþýüþüýüýüþüùÖ}ppvvppvv}}}vvv}vvvwwvvvvwvv}}vvvwvv}ww}ww}}vv}wwwv}}}}}vww}}}vv}}}}}‘}}w}}}}}w}}}}}€w}}w}}}}}×ýÿÿÿÿÿß™‘}w}}}‘}‘‘‘}}}}}‘‘‘}}}}}}}}}€}‘}‘}}}}}}}}}w}w}}}‘‘}}}}}}w}}}}}}w}w}}{w}}}}vwvvw}vw}}ww}www}}ww}vv{vvwwvvvw}{vvwwv{}w{vvvw{vvv}}{wwvßÿèvvvvw{vvvyvvvv}yvvvvvvvvvv{vvvvvyvvuvvvvuuvvyvvvuuuuvuuuuouuvuvuuuuvuvvvvuuuuuuvvulouuuuutoÌþÆutuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!;òÿÿÿÿÿóZ !sªõÿþÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5555755577775855777555575557557755755555577577787!7755577575575577775757575555775577557557575575555555775755755555557555555775755777755755575555Ó×ÿÿÿÿÿÿþÿÿÿþÿþÿþÿÿüüþüýüýýüýüúÓŽsvv|vvvpvvvvvvvv}wvv}w}wwwvvwvw}ww}}}vv}w}}}}www}}w‘wwv}}}}w}{}vw}}www}}}}}}w}w}}}}w}}}w}‘}}‘}}×þÿÿÿÿÿà‘€‘}}}}}}}}}}€€}}}}‘}}‘}}‘€}}‘‘}}}‘v‘‘‘}}}}w}}}}}}}}}}}‘}}w}w}€‘}}ww}}}ww}}wwvww}wwwwww}w}wvwwww}wv}wwww}}vvw{}wvvwvwwvwwvwvvvàÿè{vv}wvwwuvvvvv{vvuvvwwvvuvvvvvuvwvuuvvvwvuvuvvvvuuvvuvvvuuuvuouuvuouuuvuuvvvulluvuuuvuououuÊýÇuuláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z !=qªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ755755775555775757775557757775755575757577575$5577777777557777557777757777777757577755577555775755555555555777555555555755555555557555555557577555575ÓÓÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿþüüýüþüýýþüùÕ}vvvvvvvpvvv}vvv}}vv}}}}vvw}vw}}}}w}vvw}}}ww}vv}w‘www}}}}}}}}www}}}ww}}}}w}}}}}}}}w}}}}}}}}‘}}}}}Ùþÿÿÿÿÿ߀‘}}}}}‘‘}}}}}€‘}w}}}‘}‘}}}‘}}}}}‘}‘}}‘}}w}}}}}}}}w‘}w}}}}w}}wwwww}w}vwwwvww}wvvvwvvvvv}}w}}ww}www{vvvwvvwwwww}{vvvvvßÿñww}{vwvvuwvvvvvvv{vvvvuvwwuuuvvvuvvuvwvvuuvwvvvvvvuuuvvvvvvtluvuuuvuuouvvuouuouvvuuuuololÇýÇvoZ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z =sªõÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ555575555555575555555557575755755777577777557757757555=77777755777777777755557755557557555577755575555775557555555567557555555555755555555557775557755557555755Ó×ÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿüüþüþüþüþüüúÕ}pvvv}}vvvv}wvvwvvvvv}}wwvv}}}vww}w}ww}ww}}}vvw}w}}v}w}wwvw}}w}}}‘}ww}}}w}w}}w}}}}}}}}}}w}}}}w‘‘w×þÿÿÿÿÿà‘}}}w}‘€‘}}}}€}}}}€}}}}}}€}‘}}‘}‘‘}}}}‘}}}}‘€}}}ww}}}}}}w}w}}w}}}}}}}ww}}ww}}w}}}wwvwwvvwwwwvvvv{}v}wwwvwwwvvww{ßþèvvvvvw{vvvvvwvvvwvvvwwvuvv{vvvvvvvuuuvvvuvovvvuuvuvvuvvvuuvvuuvuuuvvuuuuuulluultouuuuuuuuuÆýÌwtlÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@óÿÿÿÿÿ÷Y! qªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ55557575557555557555775775557575575557775575777=755775775775575775757575775577775555555577755775557557575755557577557757555755755555555575757577755555555755ÓÓÿÿþÿÿÿÿþÿþÿþÿÿÿÿÿþüüþüýüþüüþõÕ}vwvvw}v}vv}}}vvvvvwvvw}wwvw}}}vwv}}}}vw}w}}}}}}vwv}}}}}w}}vw}}w}}}‘}}}ww}}}}w}}}w}}}}}}}}}w}w}}w}‘}}×þÿÿÿÿÿß‘}}‘}}}}}}‘‘‘}}‘}}}}€‘}}}}}}}}}‘}€}}}}}}€‘‘}‘‘}‘}}€}}w}}w}w}w}ww}w}}w}ww}}w}w}w}wwvvvw}wv}vwvwwvvwwvvwvvvwvw}Ùÿñ{v{vvvvvvvwwwvwvwwuvwvvvvvvvvvvuuvuvuvvuvvuuvuuuvvuvvvvuuuvvuvuuuvvvvvvuuutuuuuuluoooluvuužýÙuuCÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@òÿÿÿÿÿóZ!qªõÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ55557755577555555557775755575757555777557757557775777777757777757777755777577755755557557555757557555555557555555575555575575555755555555577755555555Ó×ÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿüüþüýüþüþüþúÕsw}vvvvwwvvvv}}wvw}wvvvw}}w}wwv}ww}}}}wvw}}}wwwww}}}}}}}}w}}}}}w}ww}}}w}}}}}w}}‘}}}}}}}}}}}×þÿÿÿÿÿà}}}‘}}‘}}w}}}}€}}}}€}}}}€}€€}‘}}}}}}}}}}}}}}}€}}}}}w}}}www}}}www}}w}w}}}v}}}w}wwww}wvvw}}w}w}wwvwwww}vvvw}w}{}wwwvvvwßÿëvvvvvwvwwwvuvwvwwvuwvvvwwvvvvvvvvvvv{vvvuuuvvvvvvuuuvvvvuvuvvuouvuuuuuuuouvuvuvuuouuuuvvuo›üÌwulÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !@óÿÿÿÿÿ÷Z  =s¥õÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ55575775575555755777777777555==7777777757557777775777777755777555575775555757ÓÓÿÿüÿÿÿþÿÿþÿÿÿþÿÿÿþýüþüþüþüþüùÕ}}}vvvvwwvvwv}}}ww}}}vvvvw}w}}vvvww}}w}w}ww}wvvvvv}}ww}w}}}}}}}}‘}v}v}‘‘w}}w}}}}w}‘w}}}‘‘}}}}}}}Ùþÿÿÿÿÿà‘}w}}}}}}}}}}‘}}}€‘‘}}}€}€‘‘}‘}}}}}}}}}}}}}}w}}}}‘}w}‘‘w}}}}wvvw}v}‘}}}}}}}}}}wvw{w}vw}www}vw}w}w}}}}ww}}vvwwwvv}}ww}{vvv×ÿòvuvv}}w}wwvvvv}{wuvvvvvvvvuvvv{vvvuvvvvvvuvyvvvvvvvuvvvvuvvuuuuuvvvuouuouvvuvvuoouuuuuvuuu›üÌvulÇþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿóY   =sªíÿÿþÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ55775557577757775777555777555775777755775777557557757557755577575577755ÓØÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿüüþþüýüþüþüúÕ}vvvvwww}wvvwwvwvwv}}www}}}}}}wwwww}}}w}}}vv}}}}}wv}}w}}}vwww}w}}w}}}w€‘}}}}}}}w}}}‘}}}}}}}}}}Ùþÿÿÿÿÿà}‘€}}}}}}‘‘w}€‘}€}}‘‘}}}}}}‘}}}€}}‘}}}}€}}}}‘}w€}}w}}}‘}}‘w}vv}wv}w}w}w}w}‘}}}}ww}w}}vw}vvw}}w}wwwwwww}}ww}w}v{wwwvwvvvw}vvv×þñ{vvw{}wvvywwv{vvvvvvvv{w{vwwvvvvvuvvwvuvvwvvvvvvuuuvvvuvvuvuvvvuuvuvuuovuvvlouvouuuuuuuoltu˜üÙ{ovÆþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;óÿÿÿÿÿ÷Z    =qªõÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ77775577775575575777557755577775775577777577557755557577557575755757557575575577ÓÓþÿýÿÿÿÿþÿþÿÿÿÿÿÿÿþüüüþüýþüþüúÖ }vvvvw}w}}vvvw}vwvvw}}}}}}}}ww}w}ww}}}w}}ww}‘}}}vvw}}}ww}wwv}}}}}ww}}}}}}‘}}w}}}}}}}w}}}}}}}}}}Úþÿÿÿÿÿà‘‘€€‘‘}}‘w}w}‘‘‘}}‘‘}}‘‘}}€}}}€}}}}}}‘}}€‘}}}}}}}}‘}w}}}}}w‘‘}w}w}}wwwww}w}}w}}{}}vwww}wvw}}}vw}ww}vvwvvvv}ww}}wwvv}wvvvvvwvvÌÿõ}vvvvvvvvvvww}{vvvv{vvvvw}{vuvvvvv}vvvwyvvvvvvuuvv{vvvvuvvvuvvvvvuuuuuuuuuuvuuouuououlllo˜üß{uvžþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!9óÿÿÿÿÿ÷Z!=qªõþÿþÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75757557577577755555777=7777557557575775575577575755555755575Ó×ÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿüýýýýýýüþüþúÕvvvvw}vvwwwwwwwwvvv}}}www}}vw}w}}www}w}w}wv}w}}}ww}}}}}v}}}}}}}}}}}}}}}w}}}}}}w}}}}}}}}}}}}}×þÿÿÿÿÿà‘}}}}}‘‘}}}‘‘}}‘‘}}w}€€‘}}‘€‘}}}}}}}‘€}‘‘}}}‘‘€‘}}}}€€}}}}}}}ww‘w}}w}w}}}}}ww}}{w}}}}w}ww}w}w{}ww}ww}wvwww}{}}wvw}wvvwvvwvvw}w×ÿè{w}vvv{vvvvvwwvwvvvvvvvwvvvvvvuvvvv{wvwuvvuvyvvvvuvvvuuuvuuvvvvuuvuvvuuuvuvouvuuouvuuvuuuu˜üßvuv›ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@òÿÿÿÿÿóY  !=sªõÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5555775775775775755575777777577577775555577755755755777755ÓÓÿþÿþÿÿÿÿþÿÿÿÿÿÿÿÿþýüüýüýýþüüõÕ}vvvvv}}wvv}}}wvwvvvw}}wvww}vvw}v}}wvww}w}wvw}w}w}}}}}}}wv}‘}}}}}}}vv}}}}}}}}}}}}}‘‘}}‘}}}}}}‘‘€Úþÿÿÿÿÿà™€}}}‘‘}}}€‘€}}‘}}}}}}}€‘‘}}‘‘}}}}w}‘™€}€€‘€}}}}‘‘‘}}}}}}}‘€}}}}}}}}}w}}}‘€}}}}}ww}}}vwww}}}}w}}w}ww}w}}}w}}}}wwvvvwvvvvvw}w}}wwwvÓÿóvv}{vvvvwvuvwvwwvvvvwwvvv{wvwvuv{vvw}wvuvvvuvvvvvvvvvvuouvvvvvvuouvvvvouvvvuouvvuuvvouuvvuüßxlv˜ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ@óÿÿÿÿÿ÷Z ! =}ªõÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×575577555575755555775777575555575777577575775755577557555775575775777555777Ó×ÿÿÿÿÿþÿþÿÿÿþÿÿþÿÿüýüþýþýþüþþúÕŽ}wvv}}vwvv}wvv}}}}w}w}wvw}wv}}ww}wv}}}}w}}}}}}}}}}w}}}w}}}}w}}w}}}ww‘v}€}}}}}}}}}}}}}}}}}‘}}‘}}}‘}×þÿÿÿÿÿà‘}}}‘‘}‘‘‘}‘‘}€}‘‘‘}‘‘}}}}}}}€€}}}}}‘}}}‘}€}}}}}}}}v}}}w{}w}}ww}w}}}ww}}wwwwwww}}wwwwww}w}ww}}}w{}wwwww}vÌþõ‘www}vvvvvvvvvwvvvvvvvvuvwvvvuvvvvuvvw{vvuvvvvuvvvvuvuouvuuuvuvvuuuuvuuuvuuuuuuvuouvuluuuo{úâuuu˜ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ @óÿÿÿÿÿ÷Y=sªõÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5555557575757777557755777777757877777775575755775575555757555575757ÓÓÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿþýýüüýüýýüüúÕŽ}}}vw}vvvv}ww}}}}}ww}}wv}wv}}wv}}}}}}}}}}}wvww}vw}ww}v}}}€}w}}v}}}}}}}}}}}}}}w}€}‘}}}}‘}‘‘×ýÿÿÿÿÿà}}‘‘‘‘‘‘‘‘€€‘}}‘‘‘€}‘‘€‘}}w}‘€‘‘‘‘}‘}}}}}‘‘}}}}}‘}‘™}}}}}}‘‘‘w}}‘‘‘}‘}}}}w}}}w}}}}}vww}}}w}}w}ww}w}wvwww}}wwwvwwvvvw}ww{}}}}wwvvwvÓþ÷˜}w}wwvvvvvvvvvw}vvvuvvvuvvvuvvvvvvvvwvvvvvvvvuuuuvvvouuvuvuuvuuvvuoouvuouuuvuoouvuuuvulootyúèyou{ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!;òÿÿÿÿÿóZ!  =qªíÿþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ555777575757557777575575757577777757$7757!75777755557557555775577557757577777557Ó×ÿÿÿÿÿþÿýÿþÿÿÿþÿÿÿüüýýþýþýþýþúÕŽw}vvw}vvwwvvwwvw}}wwww}}w}vw}}}}vw}}w}}}ww}}}w}}w}}}}}}}w}‘}}w}€}}w}}}}}}}}}}}}}}}}}}‘}}}}}‘€}}}‘}}‘}}Ùþÿÿÿÿÿà‘}}‘‘€}w€‘}}€‘}‘‘€‘}‘‘‘}‘€‘}€}}€€}}‘‘}}}}‘}}}}}}}w}}}}}}}}}www}}wwwww}ww}}}}w}}}wwwww}www}vw}wwwwvw}wvÊþ÷vwvvvw}vvw{vvvv{}v{vvvvvv{vvvvwvvvvvvuuvvuvvvvvvuvvvuvvvuuvvvvvvvvuuuvuuuvvvuvuuuuoovvuuuovúè{uu{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@óÿÿÿÿÿóY!!!!   !qªõÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5577577557555775757775557577557777757577557775777755555575ÓÓÿþÿþÿÿÿÿÿÿþÿÿÿþÿÿþþüþüþüþüþüùÖ}vwvvwwvvw}vv}}vvvw}}wvvww}}wvw}}www}}ww}ww}}}}}w}}w}}w}}}‘‘}v}}w}}€}}}}w}‘}}}}}}}}}}w}}}}}€}}}}×þÿÿÿÿÿ߀}€€}}‘‘‘‘}w‘‘€‘w}€‘‘‘}}‘‘€}‘€€‘‘‘€}‘‘‘‘‘‘‘‘‘}}‘}}}}‘‘}‘‘}}}}‘}}}}}}}‘}}}wwww}}}ww}}}‘€}}w}ww}w}wwwww}{}w}wvvvwwwvww}wvww}vvww}wvÇþ÷ƒvwvvv}}wvvvvvvwvvw}vvwvvvuv{wvw{vvvuuuvuvwvvuvuvuvyvvuuuvvvuuvvvuvvuvvuvvuuvulluuuvuoluu÷è{vvvüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z! ! p¥íÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5775575555777577555575757757577577555775557577577555757555775555777575755775Ó×ÿÿÿÿÿþÿþÿþÿÿþÿÿÿÿüüþüþþüþýþüúÕ}vvwww}wv}}vv}}wvv}}}vvw}}w}w}}}w}}}}}w}w}w}w}}}}}w}v}}}w}}}}}€}v}}}}}}}}w}}}}}}}}}}}}}}}€}}}}}}Ùýÿÿÿÿÿà‘‘}}}€€€}€}}‘}}‘‘€‘€‘€‘}}}}‘‘€‘€‘}€}€}}‘€}}}}}}}}w}}}}}}}}w}}vw}w}}}}}w}}}w}}}w}ww}wwv}w}vwwww}}ww{ww}}wwwÊþ÷vwvuw}w{wvv}vvvv}vv{wvwvvvvvvwvvvvwvuvvvuvvv{vvvvvuvvvvvvvuuvuuuvuvuvvuuuuuuuouvuuuuuvuuuuu÷ò{uuuüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ@óÿÿÿÿÿóY  =sªõÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ57775577577575557777555755775777!577=775=55557755757577577777755755755775575777ÓÓÿüÿþÿÿÿÿÿÿÿÿÿÿþÿÿþýüþüþýþüüüúÕ}vv}}v}}w}wvv}}wwvvvvv}}}w}ww}}w}}}}wvvvww}}}}wvwv}w}}}}}w}}}}}}}}}‘}}}}w}‘‘}}}}}‘‘}}}}}}}‘×þÿÿÿÿÿæ™}}€‘}‘‘}}}}}}‘}}}‘¡€‘‘‘}}‘‘‘€}€€}}‘}}}‘‘‘}‘‘‘‘}€}}}}‘‘}‘‘‘‘}}}‘‘€}}}}}}w}}w}}}}}}}w}‘}‘}w}}}}w}}w}}}‘}ww}}}}wwwww}w}}}}}}{}vv}}w}vww}wvvvvv}Òÿúvvwvvvv}vvv}{vwwvvw}{uvuvvvvvvvvvvvvvvvvvvwuuvvvuvvvvvvwvuuvuouvuouuuuvuuoouuuvvuuuuuuvvu÷õ{ouvüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿ÷Z!!   =}ªíÿÿþÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ57757775777557555!7575$7755!755775575$7577777557757777757777757557777Ó×ÿÿÿÿÿþÿüÿþÿþÿÿÿÿÿüþþýþüþüþþþúÕŽvvwwvv}wvvwwww}}ww}}w}}}wwww}}}}ww}}}}}}}}}}w}}w}}w}‘}}}}v}}}}}}}}}}}}w‘}}}}}‘}}}}}}‘}}‘}}}}}‘‘Ùýÿÿÿÿÿà‘‘}€}‘€}}€}}}‘‘€}}}‘‘}}‘¤}}€‘‘‘}‘}}‘€}}}€‘‘‘}}‘}‘}}}}}‘‘w}}}}}‘}w}}}}}}}}}www}www}}}www}w}}}v}‘v{}www}}}}vwww}{wÓýúww}wwvvwvvyvvvvvvvwvwvvvvvwwvvvwvvvvvvvvvuvvvuvuvuvvvuvvuvuuuuuvvuuvuvvvvuuvvoouvuuuvuuuvoõõ{uouúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿóZ!=qªõÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ777577777577555757755775777775757577575777757775777777577575ÓÓÿüÿþÿÿÿÿÿÿÿÿÿüÿÿÿþüýüýþýþüüüúÖ’}vvwwvw}}}vvwwvvw}}}}}}w}w}wvw}wv}}}}€}}wvw}}}}}}}w}}}w}}}}}}}w}}}}w}w}}}}‘‘}}}}}}}‘}}}}}}€}}‘‘×þÿÿÿÿÿà‘‘}‘‘}}}€}‘}}}}‘}}€€‘‘‘‘‘‘‘}‘‘}w‘‘‘‘‘‘‘}‘‘‘}}€‘‘}}}}}€‘‘‘}‘‘‘‘‘}‘}}}}}‘‘}}}}w}}}‘}}w}‘}www}w}}}w}}}}ww}w}wvwwwvw}{v}w}}}wvvwww}wžÿú˜{vvvvvvvvvvvvvvvvvvvv}vuvwvuuvvvvuuvvuvuvvuvvvvvuvvvvvvuvuuuuvvvvuvvvuuuuuouvuvvvuouoò÷{luo÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÇßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y     q¥õþÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75555557557557775575777755777577777557557Ô×ÿÿÿÿÿþÿþÿüÿþÿÿÿÿÿüþýþýýüþýþþúÕ Žw}vvvv}}vvvv}}vv}}}w}vvw}w}}w}w}w}}}vw}}}}v}}}}}}}}w}}}}}}}}}}}}}€}}}}}}}}}}}€}}}}}€}}}Ùþÿÿÿÿÿà‘€‘}}}}‘€€‘€‘‘‘€}€€‘}‘™‘‘}€‘‘‘‘‘€€€‘}€€€}}‘€€}}}}€}€‘}€}}}}}}}}}}}}}v}}}}}}}}}}}w}}}}wv}ww}wv}}}w}ww{}wwvw}vvvÇýú‘vvvwvwwwvw}w}wvvvvvv{vwvvvv{vuwuvvv{}vvuvvvvvvvuuvvuvuvvvvuvuvuuvuvvuuvuvvuovvuuouuuuuuvuñ÷{uvuòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ìzu‚çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ! @óÿÿÿÿÿ÷Z ! =qšùÿÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ7757757775557577757777757777775775557577755777777777777775577555Ó×þÿÿüÿÿÿÿÿÿÿÿÿþÿÿÿþüþüýýþüþüüúÖ¢}vvvvvvvvvvvv}}}v}}}w}}}vw}}}}v}}wv}ww}vv}}}‘}‘}}}}}}}€}}}}‘‘‘}w}}}}}w}€‘}}}}}}‘‘}}}}‘}×ýÿÿÿÿÿà‘}}‘‘}}}}‘‘‘‘‘‘}}‘‘‘‘‘‘}‘‘}™‘‘‘‘‘}}‘‘‘‘‘}}‘‘}‘‘‘‘‘‘‘‘€€‘}}}}€€€}}w€}}}}}}}}}}€‘}w}‘ww}}}}€wvw}}}}}}w}w}ww}w}}}ww}v‘vw}}}}}www}ww}}wvwvwwvvwvžýý˜vvvvwwvww}{wvw{vvvvwvwvvvvvv}}vvvvw}wvw}w{vvuvvuvuuuvvvvvvvvvvuuouvuuuoovvvuuouulouvuèú{oulñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýß–uCCC”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z!!!   =q¥íþÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77557757555775775857557!55=577775775757757777577757777775557757757777557777Ó×ÿÿþÿÿÿüÿþÿþÿÿþÿÿÿüþýýýþüþþþþúÕŽvvvvwwwwww}w}wwv}}}v}}wvw}}}}}}vw}}}}}}}}wv}}}}}}}}}}}w}}}}}}}}}}}€}}}}}}}}}}}‘}}}‘‘}Ùþÿÿÿÿÿà‘€}}}‘€‘€€€€€‘‘}‘}‘‘€€¡€}€‘}‘‘‘}‘‘}‘‘‘‘‘}‘€€}‘€€€}€}‘‘}}}}}‘}}‘}}}}}}w}}}}ww}}}}w}w}}}v}}}}www}w}}}w}w}vww}ww}wvvwvžýývwv}vwvvwvvvwvvvwvvwvvwwvvvvvu{}vvvvwwvvvvvvvvvvuuvwvouvvvvuuvuvvuuvvuuuvuuuuuvuuuvuouuuèú˜uluñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÆylCZlCuÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !@óÿÿÿÿÿ÷Y ! =sªùÿÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ555575775575775777557777777!55$77577757557577777777777575755775555ÓÓþÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿþýþüþüþüþüýú¬s}v}}w}}}}v}vvv}w}vw}w}}wvv}}vvwvw}}}}wv}}w}}wwv}}}}}w}‘}}}}}}}}w}}}}v}}}}}}}}€‘€€€}}}}‘‘‘€}}€‘‘}€€€‘Úþÿÿÿÿÿ晑‘€}}}‘‘‘‘}}‘‘}‘‘‘}}‘}}}}‘‘‘¥‘}}}}}‘‘}‘€}‘‘‘‘‘}€€€€€}}‘‘‘‘‘™‘‘}‘}€‘‘‘‘}}}‘€}}}}‘}‘‘‘‘‘}}}}}}}}w}}}}ww}€}}}}}}www}}w}}www}vw}}vvvwvww}}žýý˜}wwwvvvvwvwvvwvvvvuuvwvvvvvwvvv}vuuuouuuvuvvuouvwvuvvuvuuououuouvuoouuvuvuvulouvououuèû˜uuvèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ì{uCtlltllyßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@òÿÿÿÿÿóZ ! =ŽªõþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÔ577577575575757775555777575777577757575!5775755557775577777777577777757555Ó×ÿÿþÿþÿþÿüÿþÿþÿÿÿÿüþüþþýþýþþýúÕŽsw}vv}}w}}}v}}wvw}}w}w}w}}}ww}wvw}}}w}}}}}}}}}}}w}}}}}w}}‘w}}}w}}}}}}}}}}€}}}‘}}}€€}}€‘€}€Úþÿÿÿÿÿà‘}}€‘‘€‘€‘‘‘€€€}‘}‘€€‘}‘}‘‘‘‘}€‘€‘‘}€€€€€€‘‘‘}‘‘€€}}‘‘}}}}‘‘}}€}w‘v‘}}}}}}}}}}}}}}}}}}w}}www}}}wv}}v}wwwwv}www}}žýý™}w}ww}wwwvvvwvvwwvwvvwvvv}vvv{}vvvwvv{wvvvuvvvyvvvuvvvvvvuvvvvouvuuvuuvvuuvvuouvuvuluvuvuluàýƒouuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüß”vlZllCZllCZ”õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ @óÿÿÿÿÿ÷Z!=}ªõÿÿÿÿþÿþþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ7775777575555!57!577759755755$7!55!5!7757577777757577755577ÓÓþÿÿÿþÿÿÿÿÿÿÿþÿþÿÿþþüýüþþüþüþúÕ¢}}vv}}}vvvvv}}}}vvv}}}}}}}}}}}}‘}}}}}}}}}}}}}}wwvv}w‘}}}w}‘‘‘‘}‘‘‘}}}‘}€}}}€‘}}}‘}€€}€}×ýÿÿÿÿÿà}}}‘‘}}}‘‘‘€‘‘‘}‘‘‘}}‘‘}€‘‘}‘€}}€€‘™‘‘‘‘‘‘‘‘€}€‘‘‘‘€‘‘‘‘‘}‘€‘‘‘‘‘‘€‘€}}}}‘}}‘‘}}‘‘}}}€}}}}w}}}v}}}‘‘‘‘}ww}}}}}}}}}wvw}}}vw}www}vvw}}w}wvv}ww}}w}v}}wvwvžýþ˜wwwvw}wwvvvvvvvvuvww}vv{vvv}vvvwvvvvvwwyvvvwvuvvuuuuvuuuvuuvvuuvulvvvvvvvuuvvllouuvulußþ†uvlçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòžxZCClZClClZCCZÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@òÿÿÿÿÿ÷Z!! p¥õþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777575775755775755777!7!5!7755$77555!75775777777777777Ó×ÿÿþÿÿÿþÿüÿþÿþÿÿÿÿüþþýþþüþþþüúÕŽwvw}wv}vvw}w}}}}www}}}ww}}}}}w}w}}}}}}}}ww}}}}}}}}}}w}v}€}}}}}}}‘}}‘}}w‘}}‘}}€}€}}}‘‘}}}‘‘Úþÿÿÿÿÿà‘‘}€€}‘‘‘‘€‘€€€€€™‘€€‘‘‘}€‘‘}‘‘‘€}€}€€€‘‘‘€‘‘‘}‘}€‘€‘‘}€€‘}‘w}‘€}}}w‘}}}}}‘v}}}w}}w}}}wv}}ww}}w}w}}}}}}w}www}}}}wwww}wwžýþv}}vvwwwwvwv}vvvvvvvvvvwvvvvvwvvvwvvvvvvwvvvvvvvvvvvvvvuvvvuvuuvvvvuuvuvvuvuvouuvuluuuvuoußþƒouußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü̃utCCuZlCZCZllCCußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿóY  !pªõÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75777557575775777!557577775557ÓÓÿþÿüÿþÿÿÿÿÿÿþÿþÿÿþüþüþýþþüþüúÕ}pvwvvvw}w}}wwvvv}}}}w}}vvw}w}}}vw}}}}ww}}}}}}w}}€}}}‘}w}}}}w}}€‘‘‘}}}}w}}€}}}}}}}ww}}‘}}}}}}×þÿÿÿÿÿà‘™‘‘‘‘‘}}}‘‘‘‘}}€€}‘‘‘‘‘‘}}‘}}‘}}‘‘‘€‘€€}€‘‘‘‘‘‘€}}‘‘‘‘‘‘‘‘‘™‘‘€}}}}‘‘}}‘}}‘‘}}}‘‘‘www}}}}w‘‘w}}}}}}}}}}}w‘}wwwvwvvwvw}}www}wwww}wžýÿ˜vw}}wwvvw}{vuvwvv}}w}{vv}{vvv{vvvvvwvvvvvvvuv{wvv{vvuuuvvvvuuv{vuuvvvvuuuuuovvvuvvultluÙÿ˜ouvßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè›ulttCClutCClultlZC{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9óÿÿÿÿÿ÷Z !!  s¬íÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ77575777777!577557777777755ÓÓÿÿþÿÿÿÿþÿüÿÿþÿÿÿÿüþüþþüþýþþþúÕpvw}vv}}w}wv}}v}}}}}w}}vww}}}}}w}}}}}}}}}}}v}‘}}}}}}}}}}w}}}}}}‘}}}‘}}}}}}}}}‘}}€€}}‘‘}€×þÿÿÿÿÿà‘}‘‘‘‘€}€€}‘‘‘‘‘‘}‘‘‘‘€‘‘}‘€‘‘‘}}}‘‘‘‘‘‘‘€}‘‘‘‘€€‘€€€€€}‘‘€€‘‘‘}}}‘}‘‘}}€}}}‘}}}}}}}‘}w}}}}}}}}}w}}}}w}wvw}}}}w}}w}}v}}w}wv}wwžýþww}wwwwvvwv}vvvwvvw{}wvvvvwvwvvvvvv{vuvvvvvvvvvvvvvvvvvuvvvvvvvuvvvuvvvuuvuuvuuuvuouvuuouu×þ™ulußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌ{uCZllllttCCCCCZltlCtÆúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!!@òÿÿÿÿÿ÷Z  $qªõÿÿÿþþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77757777575757777757757777777ÓÓÿþÿþÿþÿÿÿÿþÿþÿþÿÿþþþüþþþüþüüùÕ}w}vvw}}vvv}vvwvwvvvw}}vv}}}vvvvw}}}wv}v}€}v}}}}v}w}‘‘‘}}}}}}}w}}}}‘‘‘‘€}}}‘}‘‘‘‘‘‘‘‘€}}‘‘‘‘€}‘‘‘‘‘‘Úþÿÿÿÿÿà™}€€€‘‘‘}‘‘‘€}€‘‘‘‘€‘‘‘‘‘‘‘}}‘‘‘€}}‘‘‘‘€}‘‘€€‘‘‘™‘‘‘}}}}}}‘‘‘‘‘‘‘‘€}€}‘}‘‘‘‘‘}}w}‘‘}}}‘‘‘}}}}‘‘}wÙëÚž}w}‘‘€}}}}ww}w}w}}}ww}}}}}wwwvw}€}ww}}w}}}w™ýÿ˜vvwv}}}vvvvvvv}}wvwvwvvvwvvvvvvuvvwwvvv{vvuvvvvvvuvuuuvvw}{uvvvvuvvvvuouvvvvuooouolvvvvvvvÌþ›vll×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè›uCtClZlttlCltutllZlCZtuÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿ÷Z!!!   ! ! !q¥íÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7775775777577!557757575757777777775777Ô×ÿÿÿþÿþÿþÿþÿÿÿÿÿÿÿüþüþþýýþþþþúÕŽww}wvw}}}wvvvw}vw}}wvw}}}vw}w}}}}ww}}}}}}}}}}w}}}w}}}}}‘}}v}‘~}}}}}‘}}}}}€€€€€‘}€‘‘}€€‘‘‘Úþÿÿÿÿÿà‘‘€‘‘€}‘‘‘}}‘‘€‘€€€‘‘‘‘‘‘‘‘‘‘‘‘‘€€€‘™€‘€‘‘‘‘}}€}‘‘‘‘‘‘‘‘‘}‘€‘‘}€€‘‘‘}‘‘}}€‘}‘‘‘‘}}}w‘}}ÓýÿÿýõÙ™}}}‘}}}}}}}}}ww}wv}w}vww}ww}}vw}}w}}}vœýÿwvvww}}vvw}vvvvvwwvvvwwvvvvwwvvvvvvwvwvvvvvvvuv{vvvvvuvvvwvvvvvuuvvvvuuuuvvuouvuouvuuuuvvvÊý›uuoßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ç{ulClltCCllCCtultCZllltCC{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@òÿÿÿÿÿ÷Z =sªõÿÿÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77775557577775!7777!5577777777777777ÓÓþÿþÿÿþÿþÿÿþÿþÿþÿÿþþüýýþþüþüýúÕ}vv}}vw}}}}v}}}}}w‘}}v}}ww}}}}}}}}}}}}}}€}}}}}}w}€€}}}}}}}}‘}}}}}}}}}‘}}‘‘‘‘}w}}‘€‘‘‘‘‘}}€‘}}‘}}×ýÿÿÿÿÿà™€}}}‘¤‘‘‘‘‘€}}}€‘‘‘}€€}}‘‘‘‘}}}‘‘‘‘‘}€‘‘}}}}}}‘™‘‘}}‘™‘}}€}}€‘‘‘‘}}‘‘‘€}}}‘‘‘‘‘‘€‘‘}}}}‘‘}v}}}}ww‘§úÿÿÿÿÿþúèž}}w}w}}w}}}}}}}}w}ww}‘}}vw}}wwwwwwww}vžýÿ˜}}vwvvvwwvwvw}ww}vvvvvwvwvuvvvvvwwvwvuvvvvuuvvvvuouvuvuvvvuvvvvouvuvvuvvuouvvuooououÇýuuu×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ߆utCuutuulZtlZCCtCCCCCZCClCu›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ  @óÿÿÿÿÿóY   !  !   sªíÿÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ577777775777557757777757777777777777777757Ó×ÿÿþÿþÿþÿÿþÿÿþÿÿÿÿüüþþþþþüþþþúÕ}pv}}}v}}}}w}}}}}}}}}}}}w}}}v}}}}}}w}}}}}}}}}}}w}}}}‘}}}w}}}}}‘}}}}‘‘}}}‘}‘‘‘}}}‘‘}}€‘‘€€}‘€‘‘}€}×þÿÿÿÿÿæ‘€‘‘‘€€‘‘}€~€€‘‘‘‘‘‘‘}‘¡€}‘‘‘}‘‘‘}‘‘‘‘‘‘}}}‘‘}‘‘‘‘€€}‘‘‘‘€‘‘‘€‘‘}‘‘€}‘‘‘€}¡}‘‘}‘‘}}‘}}€‘}}}}}}™ëÿÿÿÿÿÿÿÿÿýõÓ}}}}}}}}}w}}}}w}}w}w}}}}v‘ww}w}}}}}}}vv}wvžýÿ˜vwwwwwwvvw}v}wvvwvv}vvvv}wvwvvvvvvvvwvvwvvuvvvvvvvvvvuvvvvvvvvuuvvuuuvuvvuvuuuvvuvuuoouužüÇuuu×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ{ulCtlultlllCCtCtlCCltCCCCZlZtÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ! @òÿÿÿÿÿ÷Z! ! =sªõÿþÿÿþÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77575557777!7!!75!77777777557775757ÓÓÿþÿÿþÿÿþÿþÿÿþÿüÿÿþþüþüþýþüþüúÕ’vvvvvwwww}}wvv}vw}}vvvvw}‘‘v}}}}}w}}}}}w}}}}}}}€‘‘‘‘€}}}}}}}}}‘}}‘€€}}}}}}}€€€‘‘}}}}}}}}}}€‘}}‘‘}}}Úþÿÿÿÿÿꤑ‘‘‘}}}}}‘‘‘™‘‘‘‘‘‘‘‘‘™‘}‘‘€‘‘‘‘€‘‘‘‘‘‘‘™‘‘‘}€€‘‘‘‘€}‘‘}}‘‘‘}‘‘‘€‘‘}}}‘‘‘}}}€€‘‘}}‘}‘‘‘€}}}}w}‘}‘}‘}‘‘ÓÿÿÿÿíõÿÿÿÿÿÿþõÓ™‘€}}}}}}}w}}w}}w}}}}}vwvwwww}vwvžýÿ˜w}}wvvvvv}}wvv}vvwvvw}{vvvvv{wvvvvwvvwvuvvvvvwwwwvuuvvuuvvwvvuvvvuovvouvvvuuvvvvuuuvvuuoožýÇyvuÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÌxulttllttClZlutCClutCZCtlttCCCCC{èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷[!!      9qªíÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7775777777777575!757!7575$!75777575777Ó×ÿÿÿüÿÿþÿþÿÿþÿÿÿÿÿþþþþþýþýþþþúÖŸwpvv}}}}}}}w}}wvw}}}wv}}}}€}}}}}}}}}ww}}}v‘}}‘w}}}}‘}}}}}‘}}}}‘‘€}}}}‘€‘‘}}}}}}€‘}€€Úýÿÿÿÿÿæ‘‘‘‘‘€}}‘}}}‘‘‘€‘‘‘¡‘}‘‘‘‘‘‘‘‘‘€‘‘€‘‘‘€‘‘}€€€€‘‘‘€€‘‘€‘‘‘‘‘}‘‘‘‘‘‘‘€}}‘‘€‘‘‘‘€}}}‘‘}}}}‘€‘€‘˜úÿÿÿõ˜™Óèýÿÿÿÿÿþõב‘}}}}}}}}}w}}}}}w}}}}w}}}}w}wvw}wœýÿ˜}}wvvvvvwww}wvvwvvw}vvwwvvvwvv}vvwwvuvvvwvvvwvvvvvvvuvvvvvvvvvvuuuvuvuvvuvvvvuuuvvvuvuu˜ýÊvvuÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ”uultlltuolCullttllCtCCCCCCllCttCCt›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@òÿÿÿÿÿ÷[qªõÿþÿÿþÿÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77777555755577775757777777777777777775ÓÓþÿþÿþÿþÿÿþÿÿüÿþÿÿþüþüþüþýþþýúÕ}v}}w}}wwvvv}}}}}}w}wvv}}w}}}ww}}}}}w}w}~}v‘‘}w}}}}}}}}‘}}€}}}}}}}}}}}‘‘€}}‘‘‘}}}}‘‘}}‘‘€‘‘‘}}‘‘‘€Úþÿÿÿÿÿà™‘€~€€}}‘‘‘‘‘‘‘€‘‘‘}~™‘‘‘€€}‘‘‘‘‘}‘‘¡¡‘‘‘¤¡™}‘‘‘‘€€€€€‘‘‘‘‘}‘‘€}‘‘€‘€€‘‘‘€}}€‘‘}}}}‘}}}‘€€‘‘}}‘€‘‘}}}}}‘‘Ùÿÿÿýž}‘™š×õÿÿÿÿÿÿõÙww}}ww‘w}}}}}w}}wvw}}ww}}}wvvw}}}}}žýÿ˜ww}w}wwvvvwvv}vvvwvvvwvvvvvvvvvvwvvuuvvvvvvvvvvvvvvvvuvuvuvvvvvuouuvvuuuuvvvouuoouvu†üÌvvÊþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÌ{ttotlZlllZCCttCClZCtCuutllZCCCtutCCtÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ  @óÿÿÿÿÿóZ!!!      =Ž­õþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7577775777555775!57575777577777577Ö×ÿÿþÿþÿÿþÿþÿþÿÿÿÿÿüþþþþþþþþþþúÕww}}}w}}wvw}}}}}}}}}}vv}}v}}}w}}}}}}}}w}w}}}}‘‘}}}}}}}}€w}‘}}€}}‘}}‘€}‘‘€}}}}€‘}‘~‘‘€€}‘‘‘‘‘€Ùþÿÿÿÿÿæ‘‘}}€€‘€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘€‘‘‘‘‘‘¥‘}‘‘‘‘‘€‘‘‘‘}‘‘‘‘€€‘‘‘‘‘‘€‘‘}€‘‘‘€‘‘€‘‘}€€‘‘}}}€€‘€}‘‘}€‘‘}}‘‘€}}}}}žþÿÿÿÙ}€‘™Óëþÿÿÿÿþ÷×}‘}}}}}ww}}}}}w}ww}}www}v}}}}}}}žýÿ˜vw}}}}v}wvvv}}wvvvwvvvw}w}vvvvwvvvvw}vuvvvvvuvwvvvvv}wvvvuvvvvvwvuuuuvuvuvvvvvuuvvuuuuo{úÙ{vvÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè˜vlllullllCZlllCCCCCCltlllZltlCZllClCCC{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@òÿÿÿÿÿ÷Z!  =sªõÿÿþÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7777777!55!7777!77577777777777775ÓÓÿþÿþÿþÿþÿþÿþÿÿüÿÿþþüþüþüýþüýúÕ¢‘}ww}}}}}vv}}}}vw}}w}}}}}}}}v}}}}}}}}‘‘}}}}}}}}‘}}}}}‘€}}‘}}}}‘‘‘}‘‘}}}‘}}}}}€‘}€‘‘}}‘‘€~}}}}‘‘}}}€Úþÿÿÿÿÿà‘‘‘‘}‘‘€€‘‘‘}}€‘‘}}€}}}¤‘}‘‘‘}}€¡€‘‘¡‘€}‘‘€}‘‘‘‘‘‘‘€‘‘€‘‘€‘¥¡‘‘€€‘‘‘‘€€‘‘‘‘€‘‘‘‘}€‘€€‘‘‘€‘€}}}€}}ww}}€€}èÿÿÿõ}w}}}w}žàýÿÿÿÿÿ÷Ú™}w}}}}}}}}vw}v}‘}wv}‘ww}}wwvvvw}žýÿžw}wvwvvv}vvvvwvw}{vvv}wwvwvvwvv}wvvuvvvv}wvvuvvw}wvuvwvuuvvwwulvuuuvvwvuvvouvuuoluvuvuvv{úßvulÇþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÇxulultuuttlloluuuuootluuZCCCltCClZCCZCtCl›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿóY!    !  $p¥íÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77775575777!555577757777777777777Ó×ÿÿþÿÿþÿÿþÿÿþÿþÿÿÿþýþþþþþþþþþúÕ }}}}}}}}vv}}wwwww}}}}}vw}}}}}}}}}}‘‘}}}}}}}}‘}}}}}‘}}}}€}~}‘‘}‘‘€}}‘}}‘‘}}€‘}‘}‘}}€‘}Úýÿÿÿÿÿæ‘‘‘‘}‘‘}‘€‘‘‘‘}€}‘}‘¡‘€‘~‘‘}‘¤€‘™‘‘€‘‘}‘€€‘‘‘‘‘‘‘¤€€‘‘‘¤‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘€€€€€}‘‘€‘‘‘‘‘€}}}}}}€}‘‘žÿÿÿþÓ€}w}€}}˜àýÿÿÿÿÿúÙ}}}}}}}w}wvv}w}}}vw}}}vvwwvv}žýÿž}}vv}}wvvvw}vwvwvvvvvww}wvvvvwvvvvvvvvvvv}vvvvvvvvvvvvvvvwvvuvvvvvvwvuuvuuuuuvuoovvvuvwúáwuuþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿß{uoluttluulltltuuuuuttuultlCClCCZlCtCCCCCCZtÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@óÿÿÿÿÿóZ!!     !qªõÿÿÿþÿÿýÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77775757777757!577757!5!7557557555775777755557ÓÓþÿþþÿþÿþÿþÿþÿÿþÿÿþþüþüþýþþþüùÕ}vvvvvvw}}}}}w}}}}v}}wv}}}}www}vw}}}}}}}}}}}}}}}}}}}}}€€}}‘}}w}}‘}}}}}}}}}‘‘‘‘‘€‘}}€}€€‘‘}€‘€¡‘‘‘}€}}}×þÿÿÿÿÿà}‘‘‘}‘‘}‘‘}‘‘}€‘‘‘€‘‘‘‘‘‘‘‘‘}‘‘~}‘‘€¤‘€‘‘‘‘‘‘‘‘‘‘}‘‘‘‘‘‘‘€€‘‘‘‘€€}‘‘‘‘‘}‘‘‘€‘‘€‘€€‘‘‘}}}}‘¡‘}‘‘‘€}‘€‘}}‘™õÿÿÿè‘}}€}}}}‘žàýÿÿÿÿÿúà™}}}}}€}}}w}}w}}}}w}‘€}w}žýÿžww}vv}wwww}vvvv}wvw}vvvvuvvvvvwvvvwwvwvvvwvvuvvvuuvvvuvuvuuvuuvuuvvvvvvvuvvvoouvvuvvuuuvúè{vu›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷›wulZlllltllZCZltClZltCCtZCCZCuutlltlltCultCCl{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@òÿÿÿÿÿ÷Z! !  ! =sªõþþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÔ5755575577=577777577Ô×ÿÿþÿÿþÿþÿþÿÿþÿþÿÿþüþþþþþýþýþúÕ}wvvvww}}w}}}}}}w}}vw}}}}}}}}}}}w}}}}}}}}}}}}}}}‘‘}‘}}}}}€‘‘‘}}}}€€}}€}‘‘€}}}‘‘€}€‘‘‘‘‘Ùýÿÿÿÿÿà‘‘}‘‘‘‘}‘‘‘‘‘‘}‘‘‘‘‘€€€‘‘‘}}‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘}‘‘™‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€‘€€‘‘‘‘€€‘€‘‘}}}}}‘‘‘‘™}}‘€‘}‘€‘‘Úÿÿÿýš}‘‘‘}}w}€‘§àýÿÿÿÿÿûà™}}€}}}}v}}}wvww}‘}ww}žýÿžw}ww}}}}}v}wvvvvwvvvvwvvvvvvvvvwvvvvwvvvvuvvvvuuvvuuvvvuvvuvvuvvvvvvuuvvvuuvvuvvvvvuvu÷èuo›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÌyuuvlltCtuoCtulCCCCtCCltlCCCCtlluuulttlltCCZlCCtúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@óÿÿÿÿÿ÷Z!  !qªõÿÿÿþÿÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ577757575!557775777777777757ÓÓþÿþþÿþÿÿþÿþÿþÿþÿÿþþýýýþþþþþüúÖ}vv}vwv}}}w}}}wwwvw}}v}}}}}}}}}}}}}}}}}}v}‘‘}}}w‘}}}}}}}}}}‘‘}}}‘€}}‘€‘€}‘‘‘€‘€‘‘‘‘‘}‘‘}‘}€‘‘‘‘‘‘Úþÿÿÿÿÿà™‘‘‘}}‘‘™‘‘‘€}‘‘€‘‘‘‘‘‘‘‘}‘‘‘™‘¡™‘‘‘‘‘}‘‘‘€€‘‘‘‘¡‘‘‘€€}‘€}}€‘‘€‘‘‘‘‘‘‘‘‘‘‘}}€€}‘‘‘‘‘‘}‘‘‘€‘}}‘‘€}}}‘‘€}ýÿÿÿß}}}}}}}}}‘‘‘}}}}}™àýÿÿÿÿÿúà˜}w}}‘}}}}ww}}}}ww}}ww}}w}w}}žýÿžwww}w}wvww}v}wvww}vvwvvwvw}vwvv}vvvwwvvvv}{vvvvvvvvvvvuvvvuvuvvuolvvuuuvuuvvuuouuouoouõò{lv›ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ”uutluululoutClvvttlllotluuCCtltuZClZCCCZCtCClutClZ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿ÷Z !   =sªíÿþÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777757577!57!5!!777777557777Ó×ÿþÿþÿÿþÿþÿþÿÿþÿÿþþþþþþþþþþþþúÕ}w}}}}}v}}}}}wwvvv}}}}}}}}}}}}}}€}}}}}}}}}}}}}}}}‘‘}}}}}}}}}}‘‘‘}}‘‘‘‘‘}‘‘‘}‘‘‘‘€‘‘€‘‘‘‘‘‘‘‘‘‘‘‘€‘€€€‘‘‘‘Úþÿÿÿÿÿà‘‘‘€€‘€€‘‘‘‘‘‘}€€‘‘‘‘€‘‘‘€‘‘‘‘™‘‘‘‘‘¡‘€€‘‘‘‘‘‘‘‘€‘‘‘™‘‘‘‘€€‘‘}‘‘€€‘‘‘‘€‘€‘‘‘‘‘}}‘‘€‘‘‘€‘‘‘‘‘‘‘}}‘‘}‘€àÿÿÿú‘}}}}}¤‘}}}}}}šàýÿÿÿÿÿýàš}}w}}}}}ww}}}}w}w}}}}}w}}}žýÿž}}v}wwww}vvvv}}vvw}vvvv}}v}wvvv}wvwvvww}wvwvvvvvvvvvvvvouvvvvuuvuuuuuuuvuuvvvuluuvvouluñõ{luÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÇvuulCuuluuutltltuuulCCZluoutlltullClltCCZCCCCCCZCCZtƒòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@òÿÿÿÿÿ÷Z!!!!  !qªõÿÿþÿþþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ757777777!57777557777ÓÓÿþÿþþÿþÿþÿþÿþÿþÿÿþþüþþþþüþþýúÖ}}vvv}}}vvw}}}}}}v}w}}w}}}}}}v}}}}w}}€}}}}}}}€}}‘‘}}}}}}}w}}}}}‘}}‘}}}}‘}}€}€}€}€}}€}}}}‘‘}}}‘‘}}Úþÿÿÿÿÿ晑}‘‘‘‘‘‘‘€€‘‘‘‘‘¤‘‘‘}€‘‘‘€‘‘€‘‘‘‘€‘‘‘}€‘‘‘‘€‘‘‘}‘‘‘‘}}‘‘‘‘‘‘‘‘‘¤‘‘‘‘¤‘€€€‘‘€‘‘‘€€‘‘‘‘¡™‘‘‘‘}}‘¡‘‘}€}‘‘}‘}‘}€‘‘‘}}‘™þÿÿÿב‘‘€€}}}}}}‘}}}}}€}w}™àýÿÿÿÿÿýæ™}}}}}}w}}}}w}ww}}w}wvw}w˜ýÿÇ}}vvv}vwwvw}}wv}vvvv}v}}wvuvvvvv{vvvvvvvvwvvvvvvvvvuvuvvwvvvv}wvvwvvvvvvvvvvvuvvuvuuvuuvoè÷vužþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá{uullulltlulluluClltluluutlZCltClultlZCtCClltulZCCCCCtCÆúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷Y  !!!!=q¥õþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ7777!77577ÓÓÿþÿþÿþÿþÿÿþÿþÿþÿÿþüþþþþüþþþþúÖ Žvv}}v}}}wvvw}}}}}}}ww}w}}}}}}}}}}}}}}}}}}ww}}}}}}‘€}}}}}}}}v}‘‘}}}}}}}}}€€}€€}}‘}}‘‘‘}}}‘}Ùþÿÿÿÿÿ॑‘€‘™¡‘‘‘‘‘‘¡‘‘‘€€€€‘‘‘‘‘‘‘‘‘‘}‘‘}‘™‘‘‘‘‘‘‘‘‘‘}‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘€‘‘‘‘‘‘‘€€€‘‘‘‘‘‘‘€‘‘}‘¥‘‘€}€‘€€€€}}€‘}}}€‘‘‘€€‘æÿÿÿõ‘‘¤‘}€‘€}}}‘w}}}‘}w}}™àýÿÿÿÿÿýàš}}}}}}}}}}}}}vvvw}}}}w}}w™ýÿÓ}}wvvvv}vwww}wvw}}vw}}vwwvvvvuv}}vvwwwvovwwwwvvvvvvuvvvvv{vvvvvvvw}vvvuvvvwvuovvvvvvuouuuáü{uuÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú›vuoluvuulllultuullCtlultuvvtllZtCltltltCCCCltuuulCCCCtlluáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@òÿÿÿÿÿóZ! ! ! =sªõÿÿþþÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75!5777777777ÓÓÿþÿþÿþÿþÿþÿÿþÿÿþÿþþþþýþþþþþüúÕ}}v}}wwww}}}}}}}www}}}}}}}}}}}}}}}}}€}}}}‘}}}}‘€‘}}}‘€€‘€}‘‘‘}}‘‘}}‘‘‘}‘€€‘}}€‘}€}}}€‘‘‘‘‘‘‘‘‘€‘‘‘‘Úþÿÿÿÿÿà™‘‘}‘‘€‘‘‘‘‘}‘‘‘‘‘¤‘‘‘‘‘}‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘}~‘‘‘‘‘€}€}€‘‘‘}‘‘}‘‘€‘‘‘‘}‘‘}‘‘‘€‘‘‘‘‘‘‘‘}‘}€‘‘€}‘‘‘‘}}§ÿÿÿÿž}‘}‘}}}‘‘}}€‘}}}}}™àýÿÿÿÿÿýà}}}}}}}}}}}}}}}}wwvw}}všýÿÇ{vv}}vw}}wwwwvw}wvvvwvwvvvvvwvv}wvvvvw}vvwvvvvv}wvvvuv}wuvwvvvuouuvuvvuvvvuuuvvupuuvuvvoooßÿ˜uvÊþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌyvttlZltlutluulCltltlttltlCuuCtCClltlZlltltlZCtCZCZlltCCZCCƒòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!   !  9q¥õþÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75577777777775Ó×ÿþÿþþÿþþÿþÿþÿþÿþÿþþþüþþýþþýþúÕŽv}}}vvv}}}}w}}}}}}}}}}}v}}}vw}€}w}‘‘}}}‘‘}w}‘‘€‘‘‘}}€‘‘‘‘€€}}}‘‘‘‘€€}}}‘}}}}‘‘¡¤¡‘‘‘‘‘‘‘‘‘‘‘€Úþÿÿÿÿÿà‘‘‘‘€‘‘€‘‘‘}€‘€‘‘‘¤‘‘‘¡¡‘}‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘€‘‘}‘€‘‘‘‘‘‘€‘‘‘}€}}¡¢‘‘}€‘‘‘‘‘‘‘‘}€‘‘€€‘€€‘¤‘‘‘èÿÿÿè}}‘‘‘}}‘}}}‘‘‘‘}}‘}}‘žàýÿÿÿÿÿýà™}}}w}}}}}}}}vv}}}ww}žýÿÓvv}}}wv}}vwvv}wvvv}}wvvvvvvwwwvwwvvvvvvwwvuvvwvvvvv}vvvvvvuouuovvvvvvwvvuovwvuvvvuvvulußþ˜vvÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿò{uvulllllllulluultllulltlllClulllClututlCCZCluCCCllCCCZltlCtlZÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!YóÿÿÿÿÿóZ!!    ! !=sªõÿþÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77777777777ÓÓÿþÿþÿþÿþÿþÿþÿþÿÿÿþþþþþýþýþþþúÕŽ}v}}}}}}}}}}}}}}}}}}}}}w}}}€w}}}}}}}}}€€}}‘}}}}€}‘}‘}}}€‘€€}}}}‘‘€€€€‘€€‘¡‘‘€‘}‘€€€€€‘€}Úþÿÿÿÿÿà‘‘‘‘}€‘‘‘‘‘‘‘‘‘‘€‘€€‘‘€‘‘‘€‘‘¡€‘‘‘‘‘‘€‘‘‘€€}~‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘}‘€‘‘‘‘‘‘‘‘‘‘‘€€}™‘€‘€‘€€€‘‘‘‘‘‘€€€‘¤‘‘‘€€}‘‘‘€}}‘žÿÿÿýš‘}}}‘}}}}}}}}‘}}}w}}}˜àýÿÿÿÿÿýà™}}}}}w}}}w}}wwšýÿבwvw}}‘wvw}}vvwvv}vv}wvv}}}}vvvvvwvvvvw˜ž×מ›vwvuvvvvvvvvvwwvvvvvvvuuuuuvvvuuvuvuuuuouvu×ÿÇvuÊÿÿÿÿÿÿÿÿÿÿÿÿüÇvlloutltluluvultloutuuClllutuCtltltCClttCClllZClllZuCCCCluCCZCCuáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! !!@òÿÿÿÿÿ÷Z!!  $pªíÿÿþÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×577!77577777Ó×ÿÿþÿþÿþÿþÿþÿÿþÿþÿþþþýþþþþþþþú¬Ž}}}}}}}}}€}}}}}w}}v}‘€}}}}}}‘‘}w}}}€‘€}}}}‘‘}}}}}}}‘‘‘}}}‘‘}v‘€€}}‘¤‘‘}}€€‘‘‘€‘€‘‘‘‘}€‘‘‘€}€€‘€Ùþÿÿÿÿÿà‘‘‘€}}‘‘‘‘‘‘‘‘‘‘‘‘‘€}}‘¤‘‘‘}€‘¤‘‘€‘‘‘‘™‘}‘‘€‘¥‘}}€‘‘‘‘‘‘™‘‘‘‘‘€}}€‘‘‘‘‘¤¤‘‘‘}‘‘‘‘‘‘‘‘‘€}‘¤‘‘‘‘‘¥‘‘‘}‘€‘‘‘‘‘‘‘}}õÿÿÿæ}‘€‘‘‘}}}‘‘€}}}}}v}‘‘‘}}}}}}}™àýÿÿÿÿÿýÚ}}}}}}v}}}}}}všýÿבvw}}}}vv}w}wwwvvwwvvwv}wvvvvvvßèýÿÿÿÿÿÿÿÿ÷æžvvvuvuuvvvvvvvvvvuuuvulouvvulluuoolltuvvÌþÊvtÌÿÿÿÿÿÿÿÿÿÿÿßvuutltulCltvuuuuuluvlllttlttutllCCltoltlClluutCCllttlCCZllutCCCCCC”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!! @óÿÿÿÿÿ÷Z!! !  !! !! !p¥õÿþÿÿÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ775!577!77ÓÓüÿþÿüÿþþÿþÿþÿþÿþÿþþþþþþþþþþþúÕ}w}w}vw}}}}}w}w}}}}}}}}}}w}}}}}}}}}}}}}}}}}}}}€‘}}}€}w‘}‘}}‘€}‘‘}}}€€}‘‘}€€‘}}‘‘€}}‘€‘‘‘‘}}‘‘€‘‘‘€‘‘‘‘Úþÿÿÿÿÿ晑‘‘‘‘‘‘‘‘‘€‘}‘‘‘‘‘‘‘‘€‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€¤‘‘‘‘‘‘€‘‘‘‘‘€€‘‘‘‘‘}‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘€‘€€‘™‘‘€€€}‘‘‘‘‘‘€}€‘‘‘‘‘‘}‘‘}}€‘§ÿÿÿý™}}}‘}‘‘}‘}}}}}}}}}}}}}}}˜àýÿÿÿÿÿýÚ™}}}}}}}}}}w}}}}™ýÿÊww}}}}wwv‘wv}}ww}vw}}wvwvw}vvvwwwv}˜èþÿÿüèæßßÙà÷ÿÿÿÿ÷×vvvvvvvvvvvuuvvvvwwvuvvvvvuvvuvvvvuvwÊýßwvÙÿÿÿÿÿÿÿÿÿú›uluvtluvuoutuuutlltttlutlluCllluulutCtlltlZtClCtlZCltCCllZCClZCCtZCCÌüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷_!  ! =q¥íÿÿþÿþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77!5!75757××ÿÿþþÿÿþÿþþÿþÿþÿÿÿþþþþüþþþþþþúÖŸ}w}}w}}}vvvw}}}}}vv}}}}|}ww}v}}€}}}€‘}vv}}v}}}}€€}}}}}}‘‘}€€}}}€‘‘‘}‘}}€}‘‘‘‘}}}€‘}€‘€€}}€‘‘‘‘‘‘‘€€‘‘Úþÿÿÿÿÿæ‘‘‘‘‘‘‘‘‘}‘‘™‘€‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¥¥¡‘‘€‘‘¥‘‘‘€€‘‘€‘‘‘‘‘¤¡‘‘‘‘¥¥¡‘}‘}€‘‘‘‘‘‘‘‘‘‘‘‘‘€}}}}}}‘‘‘‘€}‘‘€‘‘‘‘‘‘‘‘‘€}}}€}÷ÿÿÿà€€€}‘}‘‘‘‘‘‘€‘‘}}}}}}}}}€}‘‘‘}}˜àþÿÿÿÿÿýÚ™}vw}‘}w}vv}}}žýÿ×}}wvww}€}}}}vv}v}}wvvvv}wvvv˜èÿÿüߘvwww}}v}{žÙúÿÿ÷Ç}wwvvvvuuuvvuvuvv}vvuuvvvvvuovvwvvvwžýè{vßÿÿÿÿÿÿÿÿ×uultvvllluvuuoCCCutlCllulCltlCluvutttlltCCClCCCuullCCtlCZCCCCCuCCllCCtèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ! !!!Yòÿÿÿÿÿ÷[!! !! !!    p¥õÿþÿþÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777!!7757ÓÓþÿþÿüÿþÿþÿþþÿþÿþÿþýþþþþþþþþþúÕ}}}w}}}}w}}}}}}}}}v}}}}}}}}}}}}}}}€€}}‘}€}}}}€€€}}}€}}€€}€}}‘‘}‘‘}€‘~€}‘‘€€‘‘€}‘‘€‘€‘€€‘‘‘€Úþÿÿÿÿÿæ‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘‘‘}‘‘‘‘‘‘‘‘‘‘}€¡¡€‘‘‘‘‘€‘‘‘‘‘~€€‘¡‘}€€‘‘‘€‘‘‘‘€~‘‘‘‘‘‘€€‘‘‘‘€‘‘€‘‘‘‘‘}}‘€‘‘‘‘}‘€€‘€™‘€Óÿÿÿü‘€}€‘}}‘}}}}}}}€}€}}}}}}}}}}}}}}™àýÿÿÿÿÿýÙ}}}}}}vw}žýÿ×ww}w}wvw}}www}vwwwwv}vwv}wvv}wæÿÿúÇwvwww}vvvuvvvv{Ó÷ÿÿè˜vvvvwwvvwwvvvvvuvvvvuuuvvvvuvvuluuýú{oèÿÿÿÿÿÿò{uuuulvuuuuluvlollulluuvutultlltlttluCCtltuCltlltCCltlltCCllClttCCClZClZCƒ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷[!! 9sªíÿþÿÿþÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77775!7$57Ó×ÿþÿþÿÿþÿþÿþÿþÿþÿÿþþþþþþþþþþþú¬Ž}vvwvw}‘€}w}w}}}}‘‘}}}}}}}}}v}‘}}}‘¡‘‘‘}w}}€‘‘}}}}}€€}}}}}}}}€€€}}}‘‘€‘‘‘}}€‘‘‘€€‘‘‘‘‘‘‘‘}€‘‘‘¡‘‘Úþÿÿÿÿÿæ‘‘‘‘¤‘‘‘™¡¡¤‘‘‘‘‘‘‘‘‘¡‘‘‘¤‘‘‘‘‘¤‘}€‘‘‘‘‘‘‘€‘~‘‘‘‘‘~‘¡¡¥‘‘‘‘¡‘‘¤‘€‘‘}€‘‘€‘€‘‘}€€‘‘‘¡¤‘‘¤¤‘‘‘‘€‘‘}}‘‘‘}}}}‘¡‘‘¡‘‘¥ûÿÿÿÓ€€‘}}}}‘‘}ww}‘‘}€‘}}€€}}}}}}}}w€šèþÿÿÿÿÿýÙvvvwwwÓýÿ×w}}v}}vv}}wvvvw}}vwwv}}wvvv}}}w˜õÿüÊw}ž×Ùßß×›wvvvvvwwž÷ÿõ˜vuuvvvvvvvvwvuvvvvvvuvoouvwvvulluu÷ÿ›{úÿÿÿÿýÇvtuvullllluvvuuuuuuoCtvuouuluvuutClCCttlCtlCClttlCllltuttlttCZluuCCCtuCCtCCÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!;9!!Yóÿÿÿÿÿ÷_      !!  =}ªõÿÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75777!57775777ÓÓÿþþþþÿþþÿþþÿþÿþþÿþþþþþþþþþþþúÕŽ}}}}}}v}}}}}}}}v}}}}}}}}v}‘}}}}}}€€}}}}€}}€}}}€}}}}€‘€€‘}€€€‘}€€}‘‘€}‘‘‘‘‘€}‘‘‘€€‘‘‘‘€€‘‘‘€Úþÿÿÿÿÿæ‘€€€€‘‘‘€€‘‘‘‘‘‘€‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¥‘‘‘‘‘‘€€€‘™‘‘‘‘‘‘‘‘‘€‘¡‘€‘‘¤‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€}}€€‘‘‘€€‘‘‘€~}‘€€€‘Óÿÿÿ÷€‘€}‘‘}}}}€}}}}}}}}}‘}}}}}}}}™æþÿÿÿÿÿý×}}}}}}}vÓþÿÙ{}}w}w}ww}}}vw}}}}vw}}vwwwvwžýÿèv}™æýÿÿÿÿÿÿÿÿèžvvvwww˜èÿ÷žvvvvvvvvvvvvuuvvvvvvuuuuvvuuvuvvoèÿýúÿÿÿÿç{vvlluvuluuuluuoluuovoCovuCtlluutlltuullltllltltltCClttClCltCllCCCCCZCCttCCCCuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!@óÿÿÿÿÿ÷[!!!! !=qªíÿþÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5!77!Ô×ÿþþÿþÿþÿþÿþÿþÿþÿÿþþþþþþþþþþþúÕ}q}}}}}vvvvw}}vvvv}w}w}}}}}€‘€}‘‘}}}‘€}€}}}}€}‘‘€}}}}‘€}}‘‘‘€}‘‘‘}}}€‘€}}}}}}}‘‘¡‘‘‘‘‘€‘‘‘‘€}€‘‘‘}€¡¤‘×þÿÿÿÿÿà‘‘€}€€‘‘‘‘¤¤‘‘€€}~‘€‘‘‘‘‘‘‘‘‘‘™‘¡€€‘‘€€}‘‘¥¤‘‘‘‘‘‘‘™‘‘€}}‘‘‘‘‘‘¤‘}}‘¡¢¡‘‘‘‘‘‘‘€‘‘‘‘¤¡‘‘‘‘‘‘}‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘}€‘}}€ýÿÿÿÓ}}€€€}}}‘‘}}}}‘‘‘‘‘€}}}}}}}}}}}}€€}}}}‘}w}}v˜æþÿÿÿÿÿýÚ‘}vv}wv×ÿÿÙwwvw}}}}w}wvvw}}www}w}ww}™úþÙw}˜àÿÿÿýèÌÊàõýÿÿý×vvwvvv{ßÿ÷ž}}vvuvwvovvvuuvvvvvvuvvuvuvvvvvußÿÿÿÿÿú›uuvulvvuouvuulvuuuulluuuvuulCluvCCCuvwvtCtvutuuuCtltlZCCCCtlCtullZCCCCCllCCCCCu›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !!!!Yóÿÿÿÿÿ÷[!!! !!    !!!pšõÿÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777557777ÓÓÿþÿþþÿþÿþÿþÿþÿþÿÿþþþþþþþþþþþúÕ¢‘wv}}}}}}}v}}}}}}}}}w}}}}}}}}€}}}}}}}}}}}}€€€}}}}‘€}}}€}‘‘€€}‘‘}}€‘‘€‘€‘€}€}€‘‘€‘‘‘}€€‘‘‘‘€‘€‘‘‘‘‘‘‘Úþÿÿÿÿÿ晑‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘¤‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘™‘‘‘‘‘‘‘‘‘‘‘}‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€}€‘‘‘‘}€‘‘‘‘}‘‘×ÿÿÿõ‘}}‘‘‘€}}}}‘€€€}}‘}}}}}}}}}}}}}™èþÿÿÿÿÿû×}vÙþÿß}}}}}}}w}}}w}v}vw}}}vvwv}v˜÷ÿ×w}žúÿýÙ˜vvvvvwv†èþÿáwvvvw{×ÿñ˜vvvvvvuuvvvuvvvvvvuovwvuvvvvuuvÇýÿÿþßvvluvvluuuuuuvlCuvlluouvutuuulutluuCluluuCltuCltulllltlltCCttCClttCClZCCCZCCulZCCCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷[!   !  qªíþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ557=777!7××ÿÿþþþÿþþþÿþþÿþÿþÿþþþþþþþþþþþúÖ¢Ž}}}vv}}}}}}}€‘€}}}v}‘€}}}}}}}}‘€}}w}}}w}€}}€‘‘}€‘}€}}w}‘‘€€‘‘‘‘‘‘‘‘‘€~‘‘€}‘¡€}}}€}}}€€}}}‘‘‘€‘¡‘‘‘€€×þÿÿÿÿÿæ‘}}‘‘¡‘}}€‘‘€€}€‘¥¥‘€‘‘‘€€‘‘€‘‘€‘¤¤‘‘¥¡¤¡‘‘‘‘‘¤¥‘‘‘€‘‘‘‘¡¤¡¤¡‘‘‘‘‘‘‘‘‘¥¥¡‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘}€‘‘‘€€‘‘‘‘‘‘€‘}‘€€}‘‘¥‘‘}}}€}‘}‘þÿÿÿ™}}‘‘‘}‘}}‘‘‘‘‘‘‘}}}}€}€}}}‘‘‘}}}}}‘‘}}}}‘‘‘‘}™èýÿÿÿÿÿúØ‘}æÿÿàw}wvvvvvvwvwv}w}v}}w}ww}èÿàw}žýÿõ˜vvvvvwwvvvu˜õÿõ™vvwwv˜èÿà{}wvvovuuuvvvoluvoluwwuuuulluvvòýßuvuuvwvollvuouulltvuolluululltlulttlCCCtuollullluulttlClutlCllCZCCCCltlCtCCCltlCCCC]ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@@!!Yòÿÿÿÿÿ÷_ !! !!!!!!!!   !=ެõÿÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77!7!7ÓÓþþÿþþÿþÿþÿþÿþþÿþÿþþþþþþþþþþþúÕ}}}}}}v}}}}}}}}}}}}}}}}}}}}}}}}w}€}€‘}}€€}}}}}‘}‘‘€‘}€€}‘‘€€‘‘}€€‘‘‘}‘‘}€‘‘}€‘‘‘€‘‘‘‘‘‘‘‘‘‘Úýÿÿÿÿÿꙑ€‘‘‘¡‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘}€‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘€‘‘¤‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘€€‘‘‘‘‘‘‘}‘‘‘‘€€‘‘‘€‘‘}Ùÿÿÿë}€€‘‘€}}€‘‘€}}}}}‘}}€}}}‘}}€}}}}‘}}}}}}}wšèþÿÿÿÿÿúÓ‘÷ÿÿ×}}w}}w}}}w}}vw}w}}w}w}wwžÿõwžÿýß}wvvw}vvvvvvvv˜èÿè{vvvvv÷þÊvvvvvuvvvvvvvuovvvuuvvuuvvuvvuuuvuvuvvluuuvvuuoulvuluuuvtlulululluulluuotllutuulttltulCotltluCCZCllllZCCtlCCltlZCCtCZCC”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷_ ! ! !! =}¥íÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ$7557Ó×ÿýÿþÿþþÿþÿþÿþÿþÿÿþþþþþþþþþþþú¬s}}}v}}v}}}}}}€‘€}}}}}}}v}}}}}‘‘‘}}}}}€‘‘‘€}}€}}€}}}}}}}}€‘¡‘‘‘}‘¡‘€€}‘‘‘}}‘‘‘‘}‘‘}‘‘}‘¡‘}‘‘€‘¡‘‘€‘‘}€€‘¥Úþÿÿÿÿÿæ‘‘‘‘‘€‘€‘‘‘‘‘™¡‘‘‘‘‘¡‘‘‘¤‘‘¤¥‘‘€‘‘‘€‘‘‘‘‘‘‘‘€¡¡‘‘‘€‘‘‘€€‘€€}}}‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€}‘¡‘™‘}}}€‘€‘‘‘¤‘‘‘‘‘‘‘‘‘€}‘‘‘¥ÿÿÿþ™}}}}‘¡‘}€‘‘‘}}€‘‘‘}}}}€}}‘‘}}ww}}}}}}}}}}‘‘}}}}}}€‘™èýÿÿÿÿÿýÿÿÿÊwvw}‘v}€}}}vv}wvvvvv}vvwúýžv˜ûþà}wwvvv}}vw}vu˜ñý×vvwwvv×þñuvvvuuvvwwwvvvuouvvvuvvvuvvuoovvvuvvuulluv{vltluvuvultulluuuuluuulCCuvuvuCCCtlClCCClltuvultllCCCCttuullltCZlulCCCtCCCCCÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!#9Zóÿÿÿÿÿú_! !!  !      ! =s¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!7!7ÓÓþÿþþþÿþþÿþþÿþÿþþÿþþþþþþþþþþþúÕ}}}vv}}}}w}w}€}}}}}}}}}}}}}}}}}}}}}}}‘‘}}}}€‘}€}€€€€}€€€‘‘}}€‘‘€‘€‘‘€€€}€€€‘€‘¤‘‘‘‘}‘‘‘‘‘‘‘‘‘‘€‘‘Úýÿÿÿÿÿꙑ‘‘‘‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€‘¥‘}‘¥‘‘¥‘€‘‘‘‘¤¡€€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘€€‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘}‘‘€æÿÿÿæ‘€€‘‘}€‘€}€€}}€}}€€}}}}‘}}}}‘}}}}}}}}}}}}}}}™àüÿÿÿÿÿÿÿž}}}}wv}}w}}wv}}w}vw}}v}Óÿñvèÿñwvwvvvvw}vwvvv}vvž÷õ˜v}vvv˜òþÌuu}wvvuvvvvvvvulvvvvvvvvuvuouvvuvuuvvuvllvvouotulvvuluvuluutuuloltlluultotlluultCltutluutltttClllCtltlZCClCtltCCCtCCCllxòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ9!!!!Yóÿÿÿÿÿ÷_!!! !!!! !!!!qªíÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!57!7ÓÙÿþÿþÿþþÿþþÿþÿþÿÿÿþþþþþþþþþþþúÖ Ž}‘}}€‘‘‘}}}}}}}}}}}}}€‘}v}}}}}v}‘€€}}}}}}}‘‘‘}}‘‘‘‘‘‘‘‘‘‘}}}}‘‘€€€}€}}}€€}€‘‘‘}}€‘‘}‘‘€‘‘}~‘‘€‘‘€‘‘}‘‘×þÿÿÿÿÿæ‘‘‘¤‘‘‘¥¡€‘‘¥‘€€‘‘‘¡‘‘‘‘‘€‘¢‘€‘‘‘€‘‘€‘‘‘‘‘¢‘‘‘¤‘‘‘‘‘€‘¤¡‘‘‘™¡¤¤¤‘}‘‘™‘€‘‘‘‘¡‘‘‘€€‘€€‘‘€}‘‘¥¢¡‘‘‘‘€€‘‘‘‘‘‘}}‘‘‘‘‘¤‘‘‘‘‘‘‘}‘ÿÿÿý™‘‘‘‘‘}€‘}}‘}}}‘‘‘}}}}€}}}}}}}‘‘‘‘‘}}‘‘€}}}w}}}w}‘}}}}}}wÓ÷ÿÿÿÿÿ™}‘wvw}}}v}‘‘}vw}w÷þžÓÿú˜w}}vvv}vvvvvvvvvvuv×ÿßvvvuvvÙÿèuwwwwvvuouvuvuuvuvuoltuvvvovuvuulollvvuovuuuuuulvvllvvvuluvvuutuvvullClluoluullltuCCCCCCCCCCltuulCCCCCCCZCCCttllutCtuuuÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Yòÿÿÿÿÿ÷_! !   !     !  !qªõÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7$!7$7!$777ÓÓüÿþþÿþþþÿþþÿþÿüÿÿþþþþþþþþþýþúÖ}}}}}}}}}}}}}}}}}}}}‘}}}}}}}}}}}}}}‘‘}}}}}}}}€‘}‘‘€}€}}€€€€‘€‘‘}}€‘€}‘‘‘€€€‘€€€‘‘€€€€¡‘€‘‘‘‘~‘‘‘~Úþÿÿÿÿÿæ‘‘‘‘‘€‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¤‘‘‘}‘¢‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘~‘‘‘‘‘‘‘¡‘‘¤‘‘‘‘‘‘‘‘‘¡‘€€‘¤‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘€€‘‘}èÿÿÿÚ‘‘‘‘‘‘}}‘‘}}‘‘€}‘€}‘‘}}‘€}}}‘‘}}}}}}‘}}}}}}}}}w}}}}žõþÿý™}}}}}w}}}}}w}w}}}}vwvw}žÿ÷}èÿ×}vvw}vvwwwwvvw}wvvvvž÷õ˜uv}vvžõýÇvvvvvvuvvwvvvvvvuuvvovvvluuvvvvvoovovvulvuvvluluuuutuvuvuluuuvllutltluluultttlltlllotttlltCCCltttllllCCCCCCtCCZlltCCCCltáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;!#! Bóÿÿÿÿÿ÷_!!!!!!!! !!     $qªõþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!!!!77Ó×ÿÿþþÿþþÿþþÿþÿþÿÿþþþþþþþþþþþÿú¬Ž}}}}}vv}}}vvvvvvv}}}€}}}}}}v}}}}}}}}}‘‘‘}€}w}}}}}}}}}}}‘‘€€‘‘}€€‘}‘‘‘¡‘€}€‘~‘‘‘¥¡‘‘‘‘€€‘‘‘‘‘‘‘™‘‘‘€‘‘‘™¡‘‘¡àþÿÿÿÿÿꥑ€‘‘‘€€}}‘‘‘€}}‘‘¡‘‘€€‘‘‘¤¤€€‘‘¡‘‘¡‘¡‘¡¤‘‘‘€€€‘€‘‘‘‘¤¥‘‘‘¤¡¤¡‘‘¤‘‘‘™¡¡‘‘€‘¥¤‘‘€‘‘¤¡¤¡‘‘™‘€‘‘€‘‘‘‘‘‘‘‘€‘‘‘‘}}‘}‘‘‘‘‘‘‘‘¡‘™ÿÿÿû‘}€‘¡‘‘‘‘‘}}}}}‘‘‘¡‘€‘‘}€}}}}}}}}}€}}}}}}}}}}€}w}}}}}w}‘§èÙw}€}wvvv}vvvvww}€}v{àÿÙv›ÿúwww}wvvvw}}vvv}}vvßüÓvvw}v{èÿÙwwvvvvvvuvvwvwvulvvuvwwvuuoluuvulouuuuoluluvvluolClllllulllCluullluuuvuuulollCtltlouvoCCtCCtlZCCClZttulCCttCCCCCZCCC@CCZ{óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!#!!!#!! !!    $p¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!57Ó×þþÿþÿþþÿþþþþÿþþÿÿþþþþþþþþþþþúÕ}}w}}}}}}}}}}}}}}}}}}}}}}}}}‘}}}}}}}‘‘‘}}‘‘}}}}~€~}€€‘}}€‘‘}‘‘€€€‘€}€}‘‘‘‘‘‘€‘€€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘Úþÿÿÿÿÿ晑‘‘‘‘‘€€‘‘‘‘¡‘€‘€¥‘‘‘‘‘‘‘‘¡‘‘¡¡‘¡‘‘‘‘‘‘‘¤‘‘‘‘‘¤‘€‘‘‘¤‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘}‘€‘‘‘‘‘‘‘‘‘}‘‘íÿÿÿÓ‘‘€‘‘‘‘€}‘¡€}‘‘€‘}}‘‘€}‘‘‘‘}}€}}}}}}‘}}}}}}}}}}}}v}}}}‘w}}}}}w}}}www}v}}w}vv}}vvòÿž}Ùÿñw}wvwvvv˜wvw}}vyvvv×ýÙvvwwvvÙÿávvvvvvuovvvvwvvuuovvvvvvvouvvvvluuvlovuvluuvuuulluoooluuollluuuuClouluuuuutlllltutuutlllltCllCltCCCltuCCllZCCCCCCtlCCCCCÊýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=9!!!Yóÿÿÿÿÿ÷_!#!! !!! ! !! !  ! =qªíÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ777!$7!$!Ó×ÿþÿþþþþÿþþÿþÿþþÿÿþþþþþþþþþþþúÖŽvv}€}}wv}}€‘}€‘}}}}‘‘}}‘‘}}}}}‘}}}‘}}‘‘‘‘‘‘‘€}}}}}~}}‘‘‘}}}}‘¡‘‘€}€‘€‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘¡‘‘‘Ùýÿÿÿÿÿà‘€€€‘‘¥¡¥¡‘‘™‘¡¡¤¥¡‘‘‘€‘¤¡‘€¤‘‘¤‘€}}}€‘}€€‘¡‘‘€€‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘¡¥‘‘€‘‘€€€‘‘‘‘‘¤¤‘‘‘‘‘‘‘¡¤¤¡‘€‘‘}‘‘¤‘‘}‘‘‘‘™‘‘‘‘‘‘‘‘‘‘‘‘žÿÿÿõ}}}~}}}}‘‘}}}‘‘‘‘‘€€~‘‘}‘}}}}}}}}}‘}}w}‘}}}‘‘}}v}‘‘}ww}}}}}}vv}v}w}vvwvwv}}‘}}v}}}}}}w}˜ÿû}òþÓ}vv}w}ž÷ÿýÙvvvvvvvvvwÓýßvwvvvÇýò˜vuvvuvvuvvvvvwvvvuvulooouovvuuluvvvlluvuuolvuvvulvuuuuuoltluvuullltltllCCCouvuulCCCtluuuullttluullllllllCltullCCCtllCC@CuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@!!;!Yòÿÿÿÿÿ÷_!! ! !  !! ! pªõÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77!!!75ÓÓþþþÿþÿþþÿþÿþþÿþÿÿþþþþþþþþþþþúÕŽwv}}}}}v}}}}}}}}}}}}}}€}}}}‘}}}}}}}~}}}‘‘‘€€}}}}}}‘‘}€}}}‘€‘}}‘‘€€‘‘}}‘€‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘€‘‘‘‘‘‘‘Úþÿÿÿÿÿæ‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘¥‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘€€~‘¡‘€‘‘‘¡¡}‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘€‘‘¡¡‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘™‘¡‘‘‘‘‘‘‘‘‘‘‘õÿÿÿ§‘‘‘‘‘‘}€}€‘‘‘}‘‘}}‘}}}‘‘}}}}}‘}}}€}}}}}}}}€}}}ww}}}}}}}}}w}}w}}vw}}w}vw}}v}}ww}žÿòvþý™wv}vvÙÿÿÿú˜wvvvvvvwvžýñvwvvvžúúžvvvvvvvvuvvvvuvvvuvvuouuouvvvouovvvllvvvuuuoouvouuluooultluuuullvulluulllltutluollltuuuultCCllttltttlZCCZCltlZCCCCZtZCCll”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=;!!!Bóÿÿÿÿÿ÷_!!! ! !! !!!! !   qªíþþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7Ó×ÿþÿþþþþÿþþþþÿþþÿÿþþþþþþþþþÿüúÕsv}}}w}}}}}}}}vv}}}}}}}}}}}€}}}}‘‘€‘€‘}}}}}}}}}}}}}}}‘‘‘‘€}}‘€€‘}}}‘}‘‘‘€‘‘€‘‘‘‘¡€}}‘‘¤¡‘€€‘‘€}‘€‘‘€€‘‘‘€€€‘Úþÿÿÿÿÿæ‘‘¤¡‘}‘‘‘¡‘‘‘¡‘€€‘‘€‘‘‘¡¡‘‘‘‘€‘‘¤‘¤¥¤€€‘‘‘‘€¥¦¥‘‘‘¡‘‘‘‘‘‘‘‘‘‘¥¥‘€‘€€‘‘‘¤¡‘‘€€‘¥¡‘‘‘‘€‘¤¥‘‘‘¤¥¤¤¤¡‘‘‘€‘™‘‘‘}‘‘‘‘¤‘‘‘€€}}}§ÿÿÿõ€‘€€‘‘‘‘€‘€}}‘‘‘}‘€€}}}}}}‘‘€€€}€}‘‘‘€‘}}}}}}€}}}}‘}}}w‘}}}}}}}‘}wv}}w}wv}}w}}wvv}}Óÿè™ÿý˜vv}}wvÙÿÿÿ÷œvwvvw}vvžýèvvuvwžõúžvvwvvvwwvuuvovvvvuw}vvtvvuououvvluvuuvlovuluuvvuuluouvvuvvllllluuulullCttlulllouuuoCCCCCCtltttlCCtlCCtllCCCZlCCCCtCCCCCCZCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ!!#!!Yóÿÿÿÿÿ÷_ !!!!;;! ! ! !;!   !   !  !=q¥õÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ$5!Ó×þþþþÿþþþÿþÿþþÿþþÿþþþþþþþþþüÿúÕŽ}w}}}ww}}}}}}}}}}}}}}}}}‘}}}}}}}}}‘‘‘€}}}}}}}}}}€‘€€}€‘}‘€‘}€€}‘€‘‘€‘‘€€}‘‘‘¡‘}€€‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘Úþÿÿÿÿÿæ‘‘‘‘‘~€‘‘€‘¤‘€€¥‘‘‘€‘‘‘‘‘‘‘‘‘‘‘¡¡€‘¡‘‘‘‘‘€‘€‘¥‘‘‘¥¡€‘‘‘‘‘‘‘¤‘‘‘‘‘¡¤‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€‘÷ÿÿÿ¥‘‘‘‘‘‘}‘€‘‘‘€‘€}}}‘‘}}}€}}}}‘}}€‘}}}}}}}‘‘}}}}}}}}}}}}}}}ww}v}‘}v}}}w}}v}}Úÿà}™ÿý™vvv}}v}žúÿýàvwvvv}vvvÇýèwvvvvvžõýÇvvvvvvvvvuvvuuuvuvvvvvvuvuvvuovuoovvuuvuuvvuvuvtvloulvwouullotluooulltltlluluttluuullCCllllllulCCltlCtltCCCllCCCtCCCClZCCCxòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷_ !!#!!!!! !! !!  !=q¥íÿþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ7Ó×ÿþÿþÿþÿþÿþþþÿþþÿÿþþþþþþþþþÿüúÖ¢Ž}}}}}}}w}v}}‘}}}}}}}}}€}}}}‘}}}}w}}}}}}}‘‘‘€}€‘‘‘‘€}‘}€‘‘‘}€}}‘¡¡€}‘€‘‘€‘‘‘‘‘‘€}}‘‘€€€‘‘‘€‘‘€}‘€€‘‘‘‘‘‘‘‘‘€Úýÿÿÿÿÿæ‘€€‘¡‘™¡‘€€¤‘€‘¤¡‘¥€€€‘‘‘‘‘‘™‘‘‘¥‘‘¡¥‘€€‘‘‘¥‘‘‘€‘¡‘‘¡¤‘€€‘‘‘‘‘‘‘‘‘‘‘¥¡‘¡‘‘‘‘€€‘¡‘‘€‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘€€€€‘‘‘¤‘‘‘‘‘‘‘}}‘‘‘€‘‘‘}‘‘Ôÿÿÿæ}‘€‘}€‘‘‘‘‘‘‘‘¤‘‘‘‘‘€‘‘‘€}}€‘€‘‘‘€}}}}}w}}}€}}}}}}€€}}}}}}}}vv}}v}}w}}}}v}vv}}v}w}wvvvwßÿÙv˜ÿýžvw}vvv}˜Êž}vvvw}vvv{ßÿßvvvvvv˜õúžvvvvvuvvvw}vvuvvvuvvuuvvvvuvvvvvvuuvvvluluuolluvvuulluvtotouuoulltltllluCltlulCCllCCluuvuulCZlCCtlCCtlCtllluultlCltCCtlCCCC›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!! ;!Yóÿÿÿÿÿúx!!;!! ! !!!! ! ! !!    !s¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5!77ÓÓþþþþþþþþÿþÿþþÿþþÿþþþþþþþþþüÿúÕ¢}}}}}w}}}}}}}}‘€}}}}€}}}}}}}}}}}}}€}}‘}€€‘}}€‘}}‘‘‘}‘}‘‘}€‘‘‘€}}¥¡}}‘‘‘‘‘}€‘‘€‘‘€‘}‘‘‘‘‘‘‘‘€€€€‘‘€‘‘‘‘‘‘‘‘€€ÚþÿÿÿÿÿꙀ‘¤‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘€€‘¢™‘‘‘‘‘‘‘‘¡¥‘‘‘‘‘‘‘¡¤‘‘‘‘¡‘‘¤¤‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘¤‘‘‘‘‘‘™‘‘‘€‘™‘‘‘‘‘‘‘‘‘‘‘‘‘€€€‘‘€‘‘‘‘‘‘‘¤‘€€‘‘‘‘‘‘‘€‘¥ûÿÿþ™‘‘€‘‘‘€}‘€‘‘€€‘‘‘‘‘‘‘‘‘‘‘}}‘‘‘‘‘}€}}}}}}}}‘}}}}}}}}}}}}}w}}}}}}}}}}}}}}}v}ww}}}w}}ww}vw×ÿ×vúýž}}}wvvw}}v}wvwvvvwvèý×vvvvvv˜õúÇ}vuvvvw}|vvvvvuuvvuvvvvvuuuvvwvuvvvuvuoolvvuullouoououvuluvuluotlllltllllllllCClttCltllutluClulllltCtlCCutttttllZClCClCCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!=Zóÿÿÿÿÿ÷_!;!#! ! !!!!! !! ! !  !  qªíÿþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×!77Ô×ÿþÿþÿþÿþÿþþþþÿþÿÿþþþþþþþþþÿüú¬}}}}}}‘‘‘}}}v}}}}}}€}}}}}}‘€}}}}‘}}}‘‘}}}€}‘‘€}}€}‘‘‘‘}}}€}€¡‘‘€‘‘}}‘‘€}}€€€‘‘‘‘}€‘‘€‘‘‘‘‘‘‘‘¤¡‘‘€‘¡‘‘‘‘‘Ùþÿÿÿÿÿæ‘‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘¡¡‘‘‘‘‘‘‘‘€‘€‘‘‘‘€‘¡¡¢¡‘‘¤¡‘‘‘‘¤¡¡‘‘‘‘‘‘€‘‘‘‘‘¡‘‘‘‘‘‘¤¡‘‘‘‘‘‘‘‘‘‘€€€‘€‘¡¡‘€‘‘¡¡‘‘‘€‘‘‘‘¡‘‘¤‘‘‘}€‘‘‘‘‘‘‘àÿÿÿÚ‘‘¤‘€}‘‘}}‘¡‘€€€‘}}‘‘}€}}‘‘}}}}‘‘€‘‘‘}}}€~}}}}}}}}}}}}}}€}}}}}wvvww}w}}w‘vww}}w}}}}vÓÿ×}èÿ×}}vvwvvvvvvvvvwvvw}wž÷÷œvwvvv}ž÷÷œv}vvuuvvuouvvvuuwvvvvuoovvvuvuuuvuuouuuuuvuuvvuuouuulltlluvuoouvlluvuvuuluotlultuvlltllZlCCCCtCCZCCCCCtlCCCCCCultCCCZtltlCCZx÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Yóÿÿÿÿÿ÷_! !!! !#!;! !#! ! !!  !  =pªõÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!$Ó×þþþþþþþþþÿþÿþþþþÿþþþþþþþþüÿþúÖ}}}}}}}}}€‘}}}}}}}‘}}}}}}}}€}}}}€€‘}}}}‘‘‘}€‘‘}}‘}‘‘}‘‘‘}‘€}‘‘‘}€‘‘‘€}}‘‘‘}}‘‘‘‘€‘€‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€Úþÿÿÿÿÿꙑ‘‘‘‘‘‘‘¤¡‘‘‘‘‘‘‘‘¥‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘}¡¥¡¥¤‘‘¡¥‘‘‘‘‘¥‘¤¤¡‘€‘‘‘€‘‘‘‘‘‘‘¤‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘¡™‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘€‘ûÿÿý‘‘‘‘¡‘}‘‘‘¥€‘‘‘‘‘€}‘‘}‘‘}‘‘}}}}‘‘}‘‘‘‘‘}}~‘}}}}}}w}}}}}}}}}€ww}}vv}w}ww}w}}}}}}}}vw}w}žÿà}Óÿ÷wwvv}}}vvvvvvv}vvwvwÓÿà{vw}vvwÇúñ˜vvwvuvvvvuuuvvvvvvuvvuuuuuvuvvuvvvullvvllvovvuvulluullulluvluutultluutuuululoullouuuoullltCCCCCCCtCCCttCClCuCCZCClCCCtCouCCCCÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@! !!Bóÿÿÿÿÿ÷_!!!! !! ! !#!!# !!! ! !  =q¥íþÿþÿþÿþÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!7ÓÓÿþÿþÿþÿþþÿþþþÿþÿÿþþþþþþþþþþþúÕŽs}v}‘}}}}}€}}}}€}}}}}}}}}‘}}‘€‘}}€‘}}}}}€}€€€‘}}‘‘‘‘‘‘‘}}‘}}‘‘}€‘‘‘‘‘‘‘‘€‘‘‘‘€€€‘€}}‘‘€€‘¡¡‘€€‘‘‘‘‘Úýÿÿÿÿÿæ‘‘}‘¡¡‘€‘‘‘‘‘€‘¡‘‘‘¡‘‘‘¤¡‘‘€‘‘‘¡¡¡¤‘¤¡‘‘¡¡‘‘‘‘‘‘¡¡‘€‘‘¥¡‘‘‘‘‘‘‘¤‘€‘¡¥¡¡‘€‘¤‘‘‘‘‘¤¡‘‘‘‘‘‘‘¡¡¤¡‘€€€‘‘‘€‘¥‘‘‘‘‘‘¡€€‘€€‘‘‘‘‘‘‘‘¡‘‘‘×ÿÿÿÚ‘‘}€€}€‘‘‘‘}‘¡‘‘‘‘}}‘‘€}‘‘}}~€}}‘}‘}‘‘}‘‘}€}}w}}}‘‘€}}}}}}}}}}}}}}}}}}}}}w}}}wvv}}ww}}wv˜ÿôv}˜ÿýÇww}}vv}vv}v}}}wvvv˜ñýÓvvvv}vv×ýßvvvvvvvvvvvvvvvuovvvvlvvvvvuooovuuvluwvoluuvvouoovuouvvvououvlCluvltllultuoooulCtllCullltolluultllCCClCCltlCCCCCCZlCCCCZCCCCZtèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!;Zóÿÿÿÿÿ÷_!!#!!!#!#! ! ! !! !! !    !! qªõÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!75Ó×þþþþþþÿþþþÿþÿþþÿÿþþþþþþþþþÿþúÕ}}v}€€}}}}}}}}}}}}}}}}}}}}‘€}‘‘}}}‘}‘‘}}}}‘‘€}€}‘}}‘‘‘‘‘¡‘}‘‘€}‘‘‘‘‘‘€‘‘‘‘‘€€€‘€‘‘‘‘€‘‘‘€‘‘‘‘‘¡‘€€‘‘‘€‘‘Úþÿÿÿÿÿꙑ€‘¤‘‘‘‘‘¡‘‘‘™‘‘‘¤‘€‘‘‘¡‘€‘‘‘¤¡‘‘¡¥‘‘¡¤¡‘‘‘‘‘‘‘¥‘‘‘‘‘¡¥‘‘‘‘‘‘¡‘‘‘‘¤¡¥¤‘€‘‘‘‘‘¡‘¤‘‘‘‘‘‘‘¡‘‘‘¤‘‘‘‘‘‘‘€‘¢™‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡¡‘úÿÿû¤‘‘€€}€‘‘€}‘€‘‘‘‘‘‘‘‘€}‘‘‘‘€}‘€}‘}€‘}‘‘‘‘‘€}}}}}}}~€}‘€}}}}€}}}}}}v}}}}}}}}}}}‘}v}}v}v}}wv}}}vÿüv}˜õÿõv}}v}}wvv}}}}v}}vÙÿñ˜vuvvvvvßÿ×vvvuvvvwvvvvvuvvvvvvuvuvvvvuouuuuouvlovvuullvuuvluvluvvvvlououllluvllltClouuuuulultCCltlttlZutllulCCCCCZlutuCCCCCClttCCCCCZCCCCƒúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;!!!!Bóÿÿÿÿÿ÷_!!!;!!!!! ! ! !!! !!! ! ! ! !! p¥íÿþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!7!!Ó×ÿþÿþÿþþþþÿþÿþþþÿÿþþþþþþþþþþþúÖ}}}}}}}}w}w}‘}}}}}}}‘}}‘€}}}}}}}}}}}}‘‘}‘‘}€}}‘~}}}}}}‘‘}}~}‘‘‘€‘¡‘‘‘‘‘‘€€€‘‘‘‘‘€‘‘‘‘¤¡‘‘‘‘‘¤‘‘€€‘‘¤‘‘¤¡‘¡¤¡Úþÿÿÿÿÿ椡¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¤¡‘‘‘‘¡¥¡‘‘€‘¡‘~‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¤‘‘€‘‘‘‘¡‘‘€‘‘‘‘‘€‘‘€‘¡¤¡€‘‘‘‘¤‘€‘‘€€¡¡‘‘‘‘™¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘€~‘ÓÿÿÿÓ}~€€‘}‘‘‘‘‘€‘}€}€‘‘€}€€}}}‘€‘‘‘‘}}€€€}}}}}€}‘}}}}}}}}‘€}}}}}€}w}w}}}}}‘}v}}}w}}}}wvw}úý˜}Çÿý§}wvvv}vv}}vvvvvw{Êýü×wvvwvvèýÊvvvvvwvvvvvvvvvvwvvvouovvvuvuvvvvuvvouvvvvuluovuoooluuuuoCtuuvulvuoluuvooullZlllllulCuulllllCCCtutltlullCCCCCCZCCCtCCCCCCCCuCCCZÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=9!!!Yóÿÿÿÿÿ÷_! !! ! !! !! ! ! !!   !!   qªõÿþÿþÿþþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!7!ÓÓþþþþþþÿþþþþþÿþþþÿþþþþþþþþþÿþúÕ}}}}}wv}}}v}}}}}}}‘‘‘}€‘}}}‘}}€}}}~€}}}}€‘‘€}}‘}}}}}}}~}€}}}}¡‘}}‘¡‘‘‘‘‘‘}}‘‘€‘‘‘¡¡‘€‘‘‘‘‘‘‘€‘‘¡¡‘‘‘‘‘¡‘‘¡¡¤¡¡‘Úþÿÿÿÿÿॡ¤¡‘¤¡‘‘‘‘‘‘‘‘¡‘‘‘‘¡‘€€¡¤¥¢€€‘¡‘€€€‘‘‘€‘¢¤‘‘‘‘‘¡¡¤¡‘‘‘¡¡¡‘‘€‘¡¡¡¤¡‘‘‘‘¡¤¡¡‘€‘¥‘‘‘‘€‘‘¡¥‘‘‘‘‘‘‘‘€‘‘‘¤‘‘‘‘‘¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘€€‘‘‘‘ûÿÿ÷€‘‘‘‘€‘‘‘€‘€‘€€}}}‘‘‘‘‘}€‘€€‘}}}}}‘€}€}}}}‘‘}}}}}}}}}}}‘}w}}}}}}€}}w}}w}}}w}v}}èÿÓ}wõÿ÷™wwvw}wwv}vvvvvžõÿèww}wvvwžúñ˜vvvvwvvvvvvvvvvvwvvvuoovuvuvvvvvvuouvulvuvoluluvtluulooullloouuuuvtlluvuuuullutlututCllltluCCClCtlluCoutltCCCCCCCltCCCCCBCCCCCCCuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!;!!@óÿÿÿÿÿ÷_! !! !!#!! !!! ! !! ! ! !  !    $}ªíÿþÿþÿþÿþÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!7$!777Ó×ÿþÿþÿþÿþþÿþÿþÿþÿÿþþþþþþþþþþþúÖ}Ž}}}}}€€}}}‘}~}}}}}}}~}}}}€}}}€‘‘€}}}}}‘€}€}}~€€€‘‘‘‘‘€€}‘‘‘‘¤¡}‘}}~‘‘‘¡€€‘€}‘€‘‘‘€‘‘€€‘‘‘‘}‘‘‘¡‘‘‘€€‘‘‘‘€Úþÿÿÿÿÿ椑‘‘‘‘‘‘‘€‘¡‘‘‘‘‘‘¡‘‘¤¡‘€‘‘¡‘}¡¦¡¡¡€‘¡‘‘¤¥‘¡¤‘¡‘€‘‘¡‘‘‘‘‘™¡‘‘™‘‘‘‘‘‘¤‘‘‘‘‘¤‘‘‘¡‘¤¡¡‘‘‘‘‘‘€‘‘‘‘‘‘‘¤¡‘€‘‘‘‘‘‘‘€‘¥¡‘€‘‘‘‘‘‘€‘‘€‘€ÓÿÿÿÓ€‘‘¤‘€‘‘}}‘‘‘‘‘‘€‘‘‘‘€}‘‘‘€€‘‘}€~€‘€}}}€}€€}}‘}€‘}}}}}~}}}}}}w}}}}‘‘ww}v}ww}v}‘}v}v}}}}}}}žÿôžüÿõž}wvv}vwvvw}˜Ó÷ÿõœvvvwvvwàþßvvvvvouvupvvvuvvvuuvovuvvvvvvuuovvuvvvuuovuuuovvuluvvluvluuvuoooltouoolotullCuulltllCuutlltllutolCtlCCullCCtllCllCtCCCtlCCuCulCCC–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Bóÿÿÿÿÿúx!!!!!!! #!!!!#! ! ! !     !=q¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!!!ÓÓþþþþþþþþþþþþþþþÿÿÿþþþþþþüÿþþúÖŽ}}}}}}}}}}}€€‘‘}}}}}}}€}}€‘}}€‘‘‘‘‘}}}}‘€}}‘‘‘}}‘‘€‘‘‘‘‘}}‘‘‘‘‘‘‘}}}€}}‘‘‘‘€}‘‘€}€€€‘‘‘‘‘€€‘‘€‘‘‘€‘¡‘‘€‘‘‘‘‘‘‘Úþÿÿÿÿÿड‘‘‘‘‘¡™¡‘‘‘€‘¡‘‘¡¡‘‘‘‘€‘‘‘‘€¡¥¥¤‘‘¡‘‘‘¡¡‘¡¥¤‘‘‘‘¤¥‘‘‘‘‘‘‘¡¡‘‘‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘¤¥¤‘‘¤‘‘‘‘‘¤¡‘‘¡¥¥‘€‘‘‘‘‘‘‘€€~‘¡¢¡‘€€‘‘¡€‘‘‘‘÷ÿÿ÷‘€‘‘‘€€‘‘‘‘‘‘‘€‘‘€‘‘‘‘}€‘€}€‘‘‘‘‘€}}‘‘‘}}}‘‘}€}}}‘‘}}}}}€€}}}}}}}}w}‘}}v}}}vv}}}}}w}vvw}w}}õþÓ}}žúÿýàž}{}}{™Óèÿÿ÷Çwvvvvvvvœ÷÷ž}vvvvvvvvvuvvvvvvvvvuvvuvvvvvvooulvvuuvvuovuovvuuvvuuvultlluuuuuvlluvotullouClluCCllllluutltCCuuulltuCltttltluCCZluCCluCZCCllZtCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9#!!!@óÿÿÿÿÿ÷x;!! !!!!!!!!!!! ! !! ! !!  ! !! ! q¥íÿþÿþÿþÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!!!Ó×ÿüÿþÿþþÿþÿþÿþþÿþÿþþþþþþþþÿüÿúÖ}}}}}‘}}}}}}}}}}v}v}}~}}}}|}~€}}}}}‘‘‘~}}‘‘}‘}}‘‘‘‘€€€€‘}€‘‘€‘‘‘‘‘‘}€‘‘€‘‘¤‘€€€‘€€‘‘‘‘‘‘¡‘‘‘‘‘‘¤‘€‘€‘¡‘‘¤‘‘‘‘Úþÿÿÿÿÿ楡¡‘€‘‘‘‘‘‘‘‘‘¡‘€€‘‘‘‘¡¤¡‘‘¡¡‘‘‘‘¤‘‘¡¥¡‘‘‘€‘‘‘‘€‘¤¡¡‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘¤¤¡‘‘‘‘¤¡‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘¡‘¡‘‘‘€‘‘‘™‘‘™‘‘‘‘¡¡€¡¡‘€‘ÚÿÿÿÓ‘‘‘‘‘€‘€€‘‘€‘‘‘‘‘€‘‘‘‘‘‘€‘€‘‘}}‘‘€‘}}}€‘€}}€‘}}€}}€‘}}}}€}}}}}}}}}‘}}}}~ww}w}}}€}w}}}}w}}w}}}w}}Êÿ÷vwv™òþÿþõßÓÓž×àñûÿÿÿõžvvw}wvvÙýàw}v{}vvvvvvuvvvuuovvvvvovuuuouuvvvovvvvvvoooovvtlvvoluuvvuuuoluuvulluullluuulluulltltullllltlllllttlCCCuCCCCCllCCCCCltCCCCCZCCCCBA@u÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!;Zóÿÿÿÿÿ÷_!! !!9!!! ! !! ! !      !q¬õÿþÿþÿþþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!!ÓÓÿþþþÿþþþþþþÿþþþþÿþþþþþþþüÿþþúÕŸ}}}}}}}}}}}}}}}}}}}}}}€}}~‘}}}}}}}}}€‘‘‘}}}~‘€}}}‘}€‘‘€‘€€‘€€‘‘‘}}}€‘€‘‘‘‘‘‘‘‘¤‘‘‘€‘‘‘€‘¡¤‘‘‘‘‘‘‘¡‘€¡¤‘‘¡‘‘‘‘‘Úþÿÿÿÿÿत‘‘‘‘‘‘‘‘‘€¡¤‘‘‘€€¡‘€‘‘¤‘‘¡¡¤‘‘‘‘‘‘‘¡¤¡¥‘‘€‘‘‘‘‘‘‘‘‘¡¡¤‘‘¥‘‘€€‘¡‘€‘¡‘‘¡¤¡‘‘‘¡¥¡‘‘€‘‘‘‘‘‘¤‘¡‘‘‘‘™‘‘‘¡¤‘¡¥¡€‘‘‘‘‘‘‘‘€‘‘€€¥‘€¡¥‘‘¡÷ÿÿõ‘‘‘‘‘€‘‘}¡™‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€€€€€}€€€}‘}}}€€}‘‘}}}‘}}}}}€‘}}}}}}}‘‘}}‘}w}w}w}}}}}}}}}}}}}}wvúÿ×wvv{×úþÿÿÿÿÿÿÿÿÿÿÿõžvvvv}}}wwÇú÷žvyvvw}wvwvvvvvvvvouvvvvuoovvvolovwvvuvvvvvououuvvovvooluvvvooutlluouuouutlluuuouulluClutllttlulttClltCCCCCCCZltlCClZCCulClCCCCCCCCCC@ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ;!!9!Cóÿÿÿÿÿ÷_!!!!#!#! ! !! ! !!!! !!   ! !   !q«õþÿþÿþÿþÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ57Ó×ÿþþþþþþÿþÿþþþþþÿÿþþþþþþþþÿüÿúÕ}~}}}}}}}~}}}}}}~}}}}}}}}€€}~}}€€}~‘~}€}}€€~~}‘~}}}‘‘€}}¡€}~}€}~‘‘‘€‘‘‘‘‘‘}}‘¡‘‘¡‘€‘¤‘€}‘¡‘¡‘‘‘€‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘Úþÿÿÿÿÿ楡‘‘‘‘¡¡‘¡‘€‘¥¡‘‘‘‘¥¡‘‘‘‘‘‘¤¡¡¡‘¡‘¡¡‘‘€‘¡‘‘‘¤‘¡‘¥¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘¢¥‘‘¤¢‘‘‘‘‘¤‘‘‘‘‘¤‘‘‘¡‘¤¡¡‘‘€‘‘‘‘‘‘‘‘¥¡‘‘‘‘€€‘‘‘‘‘‘‘‘¡‘‘€‘¥€‘¡‘‘Úÿÿÿ¬‘‘‘€‘€‘¤€}‘‘‘‘€‘~€‘‘€€€‘‘‘‘€€€}€€€‘€‘‘‘€€}}€€}}}}‘€€€}€}}}}€}}w}}}}}}}}}}}}}}}wwwwww}vw}v}}v}ÌýýÓ}}vv˜àõýÿÿÿþúýÿÿè™v}wvv}v}w˜õý×vvvvvvvvuvvwvvvvvuovvvvvuvuuvvuvvuuvvuoooououvlloouuuououuuluooluouvoluooltlltluulllluulltlllltlClulCCulullllCCCZltCCCCCCZltClCCCtCCCCçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Yóÿÿÿÿÿ÷_!!#!! !! !!!#!# ! !  !! !  !  pªõþÿþþþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!ÓÓþþþþÿþþþþÿþÿþÿþþÿÿþþþþþþþüÿþúÕ~}}}}}}}}}~}}}}‘‘}}}}}}}}}~€‘‘‘‘€}~}}~}}‘‘}}‘‘‘}}}}€~}}‘}}}‘€}}}}‘‘}‘‘‘‘‘‘‘‘}‘‘‘‘‘¥‘‘‘‘‘‘}‘¥‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡Úþÿÿÿÿÿꥡ‘‘‘‘¡¡‘‘‘‘¡¥¡‘‘€‘¥¤‘‘‘‘‘‘¢¥¤¡‘‘‘¤£¥‘‘‘‘‘‘¡¡¡¡¡¤‘‘‘‘‘}‘¡¡¡‘‘‘‘‘¥¥‘‘¡¥‘‘€€‘‘¡¡‘‘‘¡‘¡¤‘¡¢¤‘‘€‘‘‘‘‘‘‘‘‘¡¤‘‘‘‘€‘€‘¡‘‘€‘¤¡‘€‘‘‘‘€‘¥‘¡÷ÿÿô‘¤‘‘‘€‘¡‘‘‘‘‘}€‘‘€‘€‘‘€}€‘‘‘‘€€}}‘‘‘‘}}‘‘‘‘‘}}}}}‘}‘‘€‘}}}}}€}}}}}}}}}‘}€}}}}}}}}vvv}wvv}}vvàþý×vvvvw×÷ÿÿàžàÿ÷˜vvv}}vvvw™èþè†}wvvvvvuuov}vvvv}wvuvvvuvvvvuvvvv}oovvvououououuluvovvuvllllvulllouuvtlotluoltlllululultullutltlltCCoClltltultCCCCutlCZCCCCCCZCCCClZCCC{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@!!!!@óÿÿÿÿÿ÷_!!;! ! !!!!!! !!! !  !!!  !! !!  ! !$p¥õþÿþÿþÿþÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!!!$!!7Ó×ÿþþÿþþþÿþþþþþþþþÿþþþþþþþþÿþþúÖŽ}}}}}}}}}}}}}}~}}}}€‘‘€}}}}}}}~}‘€‘}}}}‘‘}}‘‘}}‘‘‘‘}€¡‘}€‘‘}‘€‘¡‘€‘‘€‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘‘€‘‘‘‘‘€€‘‘‘‘¡¡‘‘‘‘‘€‘‘Úþÿÿÿÿÿæ‘‘‘‘‘‘¡‘™¡‘‘‘¡‘¡‘‘‘¡¡‘‘¡¡‘‘‘¡‘¡¡‘‘‘‘¤‘‘‘‘‘‘‘‘‘‘‘¡¤‘¡‘‘€‘¡‘‘¡¡¡¡‘‘¡‘‘¤¡‘¤‘‘‘‘¤¤‘‘‘¡‘¤‘‘‘¥¡‘‘€‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘¤¡‘¡¡‘€‘¤‘‘‘‘‘€‘€‘¤‘×ÿÿÿ§‘‘‘€‘€‘‘‘€€‘‘‘‘‘€}‘¡}€€€€€€‘‘€}‘€‘‘‘€€}}‘‘‘‘}}}‘€}}}}€}}}€}}€}}}w}}}}}€}}}}}}}}}}v}w}}}v}}v}}}èÿû×}}wv}Êÿ÷™vžúè}wvvvv}v{žèýò›vvvvvvvvvv}wvuvvv}vvvvvovvvwvvulv}vuuvuoovvvvuoolvvuuouoououvoouluuouolltluuoolltoulttlllltllCultulCZltulCltltlCllCCCllCCCCCCCCCCZCCCCCZÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!9!Zòÿÿÿÿÿ÷_!!!!! ! ! ! !!! ! ! !#! ! !   !  !qªõþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!!$!7ÓÓþþþþþþþþÿþþÿþÿþÿÿþþþþÿþþþüÿþúÖ¢}v}}}€~}}}}}€}}}}}}~}€‘‘~}}}}}}}‘}}~‘‘‘~}}}‘€‘‘}}~‘‘‘}}€€‘‘}€‘‘‘‘‘‘¥‘}‘~‘}}€‘€~‘‘‘‘‘‘‘‘‘€‘‘€‘€€‘‘€‘‘‘‘‘€€‘¥¤‘‘‘‘€‘‘‘ÚþÿÿÿÿÿꙀ‘¡‘™‘‘¡‘‘‘‘‘¡¤¡‘‘‘‘‘¡¡¤¡‘‘‘¡¤¤¡¡‘‘‘¡‘‘‘‘¡‘‘‘‘‘‘¡¡¡¡‘€‘¤‘¡¥¤¥¡€‘‘‘¡¡¡‘‘‘¡¡‘¡¡‘‘‘‘¡¤‘‘‘¤‘‘‘€‘¡¡‘‘‘‘¡‘‘‘‘‘‘¤¡¤‘‘™‘‘‘‘‘‘¡¤¡‘‘‘€‘¡÷ÿÿ뤑‘‘€‘‘‘‘‘€‘‘€€€‘‘‘}}‘€€}€‘‘€}‘‘€€‘‘‘‘}}€‘‘‘‘‘‘€€‘‘}}€€}}€€}}}}}‘‘‘}}}}}}}}‘}w}w}}v}}}}}}}}}}vww}}w}˜òÿþÙ˜w}}vvšÿõw™ñÙwvvvvvvÊõÿõžvvvvvvvvvwvvvvovvvvvwwvvvuvvvvvvvuvwvvuvvuuluvvuvuovvuouvuovvuvuvvuuuuuvulCloutlluluullllCtltuClltCCCCCloulZCtlltltlCClZulllZCClZCCCCACCCCvñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!9!!9Zóÿÿÿÿÿ÷_!! !#! !!! ! !!!!! ! !!!!  ! ! !!   !  qªõþÿþÿþÿþÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!Ó×ÿüÿþþþÿþþþþÿþþþþÿþþþþþþþÿþÿþúÖ}}}}}}}}}}}‘}}}}}}}}}‘€}}€€}~€}~‘}}~}}€}}‘€~‘}}‘‘~}€~‘‘‘€€}‘‘‘€~}~¢‘‘‘€‘}}¡‘€€‘€‘¡‘€‘¡‘‘‘‘‘‘‘‘‘‘¡¡‘¡‘‘‘‘‘‘‘¡‘¤‘¡‘‘‘‘Úþÿÿÿÿÿæ¡‘¡¥¡‘‘‘‘‘‘¡¡¡‘¡¡‘¡‘¡‘‘¡¡‘‘‘‘‘‘‘‘‘¡‘€‘¤¡‘¡¡¡‘‘¤‘‘‘‘¡¤¡‘€¡‘¤¡‘‘‘¡¡‘‘¤‘‘‘‘¡¤¡‘‘¡¤‘¡¡¡¡‘‘‘‘‘‘¡‘¡¥¡‘‘‘‘‘‘‘‘‘‘¤¡‘‘‘‘‘‘‘‘‘‘‘™‘‘‘‘‘¡‘‘Øÿÿþ¥‘‘‘‘‘‘‘‘‘‘€€‘¡‘‘‘‘€€‘€‘‘‘‘‘‘€}‘‘€€€}}€‘€‘€‘‘€€}}~}€‘‘}€€€€}}}€}}}}}}}}}}€}}}}}€}}}w}€}v}}}}}v}}ww}}ww}}}™èýÿõÓ™€vvžý÷w˜èÙvvww˜žàýþèžwvvvvvvvvvvvvvvvuvvuvvvvvvvvuvovuvoovvvvvvvvoovvuuuovuolvvolupooouoluloltooltuollvulloululllullCCtulCtllCZCllllCtlCCttCCCCCZCCCCtlCCCCCBCCCZ”üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Yóÿÿÿÿÿ÷_!! !!!!!#$! !! ! ! ! ! ! ! !   !  !q¥õÿþÿþþÿþþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!775Ó×þÿþþþþþþÿþþþþÿþþÿÿþþþþþþþüþþúÕŽ}}}}}}}}}€~}}}}}}}}}}}}‘‘‘}€‘}}‘‘}}}}~}~‘€}‘‘€€€}€‘‘‘‘‘‘‘‘‘}}}¡‘‘‘‘‘‘€‘‘~‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘¡¥‘‘‘‘‘‘‘‘‘‘‘¡¥¡‘‘€‘Úþÿÿÿÿÿड‘‘¡‘¡‘‘‘¡¥¥¡‘‘‘¡¤‘‘‘¡¥¥‘‘‘‘‘¡¡¡‘‘‘‘‘¦¡¡¥¥¡¤¡¡‘‘‘‘‘¡¥‘‘‘¡¡¡‘€¡¥¡‘¡¡‘‘‘¡¡¤‘‘‘‘¡¤¤¤¡¡‘‘‘‘‘¡¥‘¢¦¤‘€€‘‘€‘‘¤‘‘¡¤‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¥¡‘õÿÿè‘€‘‘€‘‘‘‘‘‘‘€€‘‘™‘‘‘‘‘‘¢‘‘‘‘€}‘‘€‘‘}}‘‘‘‘}€‘€€}}}}€‘‘‘}€€}}}‘€}}}}}}}}}}}}}}}}}}}}}}w}w}}}}}}}}}}}}}}}}ÙúÿÿõÓ˜žý÷w™èß‘™Óèüÿüè™w}vvvvvvw}vvvvuvvvvvvuvpvwwvouovvouvuvuuuuvvvuvvvllvulluooulooulluoooooullullouluvuuullullultluClllltlllCCCCCCCtCCCZCClltCCCCCCCCtlCCCCCCCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!;!9@Cóÿÿÿÿÿü_! !!=#!!#!!! ! ! !! ! !! ! ! ! !  !!=q¥õþÿþÿþÿþÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×!77Ô×ÿüþþÿþþÿþþþÿþþþþÿþþþþÿþþþÿþÿúÕ}}}}}}}}}}}}€}}}€‘}}}}~~}‘~}}‘‘}}~~~~€€}}‘‘‘€€}}€‘~~~~€}‘€€‘‘€€}‘‘‘‘~‘€~~‘¡‘‘€}‘‘‘€‘‘‘€‘‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘¤¡‘€Úþÿÿÿÿÿ楡‘€‘‘‘‘‘¡¡‘‘¤‘‘‘‘¤‘¡‘‘‘¡‘‘¤‘¡¡‘¤¡‘‘‘¤¦‘‘‘‘‘¡‘‘‘‘¡¡¡‘‘€‘¡‘¤¡¡‘¡¡‘‘¡¡‘‘¤¤¡‘¡‘¡‘‘¡‘¡‘¤¡‘¡‘¡‘‘€‘¤¡‘‘‘‘¤¡‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘Öÿÿý¥‘‘‘‘‘‘‘‘¤€‘‘‘‘‘‘€‘‘‘‘€‘‘€‘‘‘}‘‘€}€‘‘€‘‘‘‘€}}‘€}}€€}€€€€}€}}€}€‘}}‘€€€}}€}}}}}}}}}}}}}}}}}}ww}w}}}wwv}}}ww}žñþÿÿõßèÿõwœõ÷Ó×à÷ÿÿýèÓ}vvvvvvvvvvv}vvvvvvvwvvvuvvvvvovvuuvvvvvvvoovvouvvllvvulvuuouvuuuloluvoooluvullulvulluultlluulllltlllltttllllCtlulCCulCCtlClllCCCZlCCZCCtlCCCCC{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!!!!#!! !!! ! !#! ! ! !  ! !    !$qªõþþÿþÿþÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!ÓÓþÿþþþþþþþþþÿþÿþÿÿþþþþþþþþüÿþúÖŸ}}}}€‘}}}}~€~}‘‘‘€€~}}€€}}~€€‘‘}}}}‘€~}}}‘¡‘‘‘}}‘‘}}}}}~€€‘‘€‘‘}}‘‘‘€~~}}‘¥‘€€‘€}‘‘€€}€‘‘‘‘‘‘‘‘‘‘‘}€‘¡¡‘€€€‘‘‘‘‘¡¤‘€Úþÿÿÿÿÿ椑‘‘‘€‘‘¡™‘‘‘‘¡‘‘‘¡¤¡¡‘€‘‘‘¦¡¥¡‘¤¡¤¡‘¡¡‘‘‘‘‘¡¡‘‘‘¤¡‘‘‘‘‘¡¡¡¥‘¡¡‘€‘¥¤‘‘‘‘¡¤‘¡¤‘‘‘‘‘‘¡¤¡¡¥‘€‘‘‘¤¡‘¤‘¡¤¡¡‘‘‘‘‘‘‘€‘¤‘‘€‘‘‘€‘‘€‘‘‘™õÿÿà‘‘‘‘‘‘€‘‘‘‘‘‘‘¤‘‘‘‘‘‘‘‘}‘‘‘‘}‘‘‘‘€‘‘‘‘‘€}}}}}}€‘‘‘‘‘}}}}‘€€‘€}}€‘€‘‘‘}}}}}}}}€}}}}}}€€}}}}}w}vwwv}vwvv}}}wvwwÙõýÿÿÿÿ÷}™õÿÿÿÿÿúñ׆vv}vvwv}vvvvvw}wvuvvvwvvuvvvuvvuvvvvvvvvvuooovullouuouvolvvvuluooptlluuluulluvulllulCCluClllouolluuuotCluvuuultllvtCClltllZCttttCCCllCClllZCZCCZCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=;!!!@óÿÿÿÿÿ÷_!#!!!#!! !!!! !! !!!! !  ! ! !  !! !p¥íÿþÿþÿýÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ$!!××ÿüþþþþþþþÿþþþþþþÿþþÿþþÿþþþÿþúÖ ‘}}}}}}€}}}}}}}‘}}}~}}}~}€}‘~}}‘‘}€€~€}€~~~}~‘€~€‘€€‘}€€€€~‘‘‘‘€‘‘‘~€€‘‘€‘¡€~‘‘‘}¡¢‘€‘~‘‘‘‘‘}‘‘‘¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘¡‘‘Úþÿÿÿÿÿ椑¡‘‘‘‘‘‘¡‘¡‘‘‘¡¡¡¡¡‘™¡‘‘‘‘¡¡¡¤‘‘‘¡‘¡¤‘¡¥¡‘¡¤¡¡¤¡‘¡¡¡¡¡‘¡¡¥¡¡¡™¡¡¡‘¡¡¡‘‘¡¤‘‘‘‘¡¡¡¡‘‘‘‘‘¡‘‘‘‘‘¡‘¤‘‘‘‘‘¤¡¡¡‘‘‘¤‘‘‘‘‘‘¡¡‘‘‘‘‘¤‘€Ôÿÿý¥€‘‘‘¡‘€€‘€‘¤€‘‘‘‘‘€‘‘‘‘‘€€‘‘‘€‘‘€‘‘€€‘‘‘‘€€€€€€€€}}€}€€}}€~€€€}}}}€}}‘‘}}}}}€}}}}}}}}}}}}v}‘}}}}}}}}}}}}w}ww}}}˜×õ÷ýÿ÷™w˜õÿÿúòàžv}vvvvv}}vvvvvwvvvwvvvvvvvvvuvvvvuvvvvwvvvvvouvuvvovuuvvvvulvvovoluluuuluoovlluvlllltuuCluollultltttulCtllllulCCtlCttlCllZolCCCCClClCCCZCClZCCCCCCCCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Yóÿÿÿÿÿ÷_!!!!!!!!!!!#!!!! !!!!! !! !! ! ! !    pªõÿþÿþþÿýÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!!ÓÓüÿþþþþÿþþþþþþÿþþÿþþþþþþÿþüÿþúÖ¢‘}w}}}}~}‘€}}€~~}}}}}‘€~}}}}}}}}€}€‘‘~}~}}}}}}}€‘€‘‘‘‘¡~‘‘€}}‘‘‘‘‘‘‘€~}€‘‘‘‘‘‘}‘¡‘€‘¡€‘€€‘‘€‘‘‘‘‘¡¡€‘‘‘‘¡¥¥¡¡‘€€‘‘‘‘‘‘Úþÿÿÿÿÿꤡ¤‘‘‘¡‘‘¡‘¤¡‘‘‘¤¤‘‘‘¡¥¡‘‘€¥‘‘¤¡‘‘¡‘‘¡¡¤¡‘¡¡¤¡¡¥¡¡¡¥¤¦¥‘‘‘¡¤‘‘¡¡¤¡‘‘¡¡‘‘‘¡‘‘‘‘¡¤‘‘‘‘‘‘‘¡‘‘¡‘‘‘¡‘‘‘‘‘¡¤¡™‘‘‘‘‘‘‘‘‘¡¡¥¢¡‘¡‘¡‘‘‘õÿÿÚ¥‘‘€‘¤‘‘‘‘‘‘‘€‘‘€‘‘€‘‘‘€}€€€‘‘‘€}€€}}‘‘‘‘‘}€€‘€€~€‘}€}}€‘}}€}}}}}}€}}}€}}€}}€}}}v}w}‘}}}}‘}}w}}}}wvv}}}}}}}}žÙý÷‘}˜õýæž}vvvv}}vvv}}v}vvvwwvvvwwvvvvvwvvvvuvvvvvvvvvvvvoouvouvvvvvvvvvloouuvolllvvlovotlloulllluvvuouulCltllClCCllloutllllCCCCClCltllutCCCCCttltCCCZCCCCCCCCCCCCÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!@!@óÿÿÿÿÿ÷_!!!!#!!#!!!!!!# !!!#!!! ! ! !   !  ! !!  =sªíÿþÿþÿýÿþþýÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿëÓÓ×ÿþþþþÿþþþþþÿþþþþÿþÿþþþþþþþÿþúÖŸ}}}€}}}}~‘}}}}}}}€}}}‘}}}}~}~~~}€‘‘}‘‘‘€€~€€‘€‘€~}}‘€~}€‘‘‘‘‘‘€¡‘‘‘€‘‘€‘€‘‘‘‘‘¡‘}‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘¡¡‘}€¡‘¡¡‘‘‘‘‘¡¡¡‘‘Úþÿÿÿÿÿæ‘‘‘¡¡¡‘‘¡¤¡¡‘‘¡¡¡‘‘¡‘‘¡‘¡‘‘¡¡¡¡¡¡¡¡¡‘¡‘¡‘¡¤¡¤‘¡‘‘‘¥¡¡¤‘¡‘‘¡¡¡¡‘‘¤¤‘‘¤¡¡‘¡‘‘‘‘‘¤¥¡‘‘€‘‘‘¥¡‘‘‘¡¡‘‘‘‘¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘¤¡‘™‘‘‘‘‘Óÿÿú™‘‘‘‘‘‘¡€‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘‘‘‘€€‘‘‘€‘‘€€€}‘€}€€€€}}€€}}€‘}}‘}}~€}}}€}}}}}w}}}‘}}}w}€}v}}}}}}}}w}}ww}w}}wvwv}}™úú™}˜õ÷˜vv}wwvvv}vvv}vvvvvvvvvvvvvvvvvvvvvvvvvvuvuvvvvuvuuvvvuuvvvvoouvoouuoluvuuvvulovololuuuuooolluululluulllllltltltlCCuullCCCCCtlCtllCtllCCCCttCCCCCCCZCCCtC@CZòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!#!!Yóÿÿÿÿÿ÷_!!!!!!!!!!!#! !!!! ! !! !! ! !!   !   =q¥õÿþÿþþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!$Ó×þþþþþþþþÿþþþþþÿþÿþþÿþþþþþþÿþúÖ}€€}}}}}}€}}}}}‘}}}}€}}‘€~}}}}€‘~€‘‘‘‘‘‘}‘‘‘}}‘}}}‘}}}‘‘‘‘‘~}‘‘‘‘‘‘¡‘€}€‘‘¡‘‘‘‘~‘¡¡¢¡€‘‘‘‘‘¡¥‘‘¡¤¤‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘Úþÿÿÿÿÿꥑ¡¡¥¡¡¡¤¤‘‘¡‘¡¥‘‘‘‘‘‘‘¡¡¡‘‘¥¥¡‘¡¥¥¡¡‘‘¡¡¡‘‘¡¡‘‘¡‘‘‘‘¡‘‘‘‘‘‘‘¤‘¡‘¡¡¡¡¡¡¤‘‘¡¡¡‘‘¡¤‘‘‘‘‘‘‘¤‘‘¡¤¡‘‘‘‘‘‘‘‘‘‘‘€‘¤‘‘‘‘‘¡‘¡¡‘¡¡‘‘€‘õÿÿÚ‘€‘‘€‘‘‘‘¡‘¤‘‘‘‘‘‘‘¡‘€‘‘‘‘‘‘¡¥‘‘‘‘‘‘‘‘‘‘‘€~}€€‘€‘‘€€}}}}}}}}}‘}}‘‘€}}€€‘}}}}}}}€}}}‘}}wvw}}}}wv}}}}}€}}vvv}}}w}}}™û÷}˜õõ™vvwvv}}wwvvwwvvvw}vvvvvvvvvuvvvvvwwvvpvvooooooooovvwvvvvloulloouovvolovuvvuolluuuvoovvvutltCllllCuuullllCCllllllCCluullCCCClllCtlllZlCCCCClCCCCCCCCCACCCACl›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_;!#! !!#! !!!! ! ! ! ! !! !  !!=q¥íÿþÿýÿþþÿþþýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿèÓÓ×ÿþþþþþþþþþþþþÿþþÿþþþþþþÿþþþþúÖ}}}}}€}}}~}}~‘}}}}}}}‘€}}¡‘}}}}‘€}}‘‘‘‘~~}}‘‘}~‘‘‘‘¡‘‘‘~‘€‘‘‘}‘~‘‘‘‘‘€‘€‘€€‘¡‘‘‘€‘‘‘‘‘‘‘€‘‘‘‘¡‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘¡‘¡¡Úþÿÿÿÿÿ椑‘¡‘‘¡‘¡¡¡‘‘¡¡¢¡‘¡¡¡‘‘‘‘¤¡¡¡¡¡‘‘¡‘¡¥‘€‘¥¡‘¡¥¡‘¡¤¡‘‘¡¡¡¡‘‘¤¡¡¡¡¡‘‘¡¡‘‘¤¢‘‘¤¤¡‘¡‘‘¡¡‘¡¤¡¡¡¡‘¡¤¡‘¤¡‘‘¡¡‘‘¡¡‘€‘¡‘‘¡‘‘€‘¡¡¡‘‘‘‘Ôÿÿú¥‘‘¤¡€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¤€€‘‘‘‘‘}‘¢‘‘‘‘‘‘‘‘€€}€€€‘€‘€€‘‘‘}‘}}€€}}}}‘}}}}€}}€€}}}}}}}v€}}}w}}}}}}}w}}}w}}}}}}w}}}}w}}w}wvv}}™úõ˜v™õ÷™}v}vvvwvvvvvvvvvwwvvvvvvw}vvvvvvvwvvvuvvvpuovvvuvuvvvvvoovvoovuoovvuuvuoououvoooooltvuuolloolluollloltuulCltltltllttltlCtllulCllCtlCCulCClCCCtlCCCCCACZCACuCðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$!!!Yóÿÿÿÿÿ÷_!!!!! !!! !! ! ! ! ! ! ! ! !  ! !!     !!qªíÿþþÿýÿýÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿæÓ!7ÓÓþþþþÿþþÿþþÿþþþþþÿÿþþþþþþÿþÿÿúÖŽ}}}}}‘‘}}}}}}}‘€}}‘‘}}}€~€‘€}}‘‘‘}~‘€}}}~}€‘‘}}€‘‘‘‘‘‘‘‘€~‘‘‘~~}}‘‘~‘‘‘‘‘‘‘‘‘‘€€€‘‘€‘€‘‘‘‘‘‘‘‘‘€‘‘‘¡‘¡¤‘‘‘‘‘€‘‘¡¡¤¡‘Úþÿÿÿÿÿê‘‘‘‘‘‘‘‘‘¡¡¡¡‘¡¥‘‘¡¡¢¡‘‘‘¡¥¡‘€€‘‘‘‘‘‘‘‘‘¤¤‘¡¡¤¡‘¡¡‘¡¤¥¡¤¡¢¢¤‘‘¡¤‘‘¡¥‘‘¤¡‘‘¡¡¡¤‘‘‘¡¤¡¡¢¥¥¤¤¡¡¡‘¡¡¤‘€‘™‘¡¡¡‘‘‘‘¤¡¡‘€€‘¡¥¤¡‘‘‘õÿÿÚ¥¡¤¡‘‘¤‘‘¡™‘‘‘‘‘‘¡¡‘€‘‘€‘¡¡‘€}‘¤‘~€€€‘‘‘‘‘€‘}€‘‘€‘€}}‘‘‘€€‘‘‘‘€}€‘}}}}}}}}}}€€}}}‘€}}}}}}}}}}}}}}}w}}}€ww}w}}}v}}}}v}}}}}wvvvvvw™÷÷v˜õ÷˜}}}}vvvvv}vvwvvvvvv}}wwvvw}vvovvw}wvuvvwvuuovvvvvuvouvulvuvvvvuoouvuvvvuloovvovuvullloooluluououlotllouvtClltllluClllCClouuulZCCClCCCltCCCCCCltCCClCACCCCClC{ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!;!!!Bóÿÿÿÿÿ÷_ ! !!! !!!!! !!! ! !!! ! ! !  ! !!!! ! !!  !=s¬íÿþÿýÿýÿþþýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ$Ó×ÿþþþþþþþþþþþþþþÿÿþþþþÿþþþþþþúÖŽ}}}}}}}}~~}}}€~}~}‘}}}}~}}‘€}}‘~‘‘}~‘€}~}~‘‘€‘‘€€~‘‘€~‘‘‘€€~~‘‘€€}}¢‘~‘‘¡¡‘‘€‘‘‘‘~‘‘‘‘‘¡‘€‘€‘¡‘€‘‘‘‘¡¡¡‘‘‘‘‘‘‘€‘‘¡¡‘‘Úþÿÿÿÿÿꙑ‘‘‘¡¡‘‘¡‘‘‘‘‘¡¡¡¡‘‘¤¡¤¡¡¡¡¡‘‘¥¦‘¡‘¡¡‘‘¡¡¡‘‘¡¡¡¥¡‘‘¦¡‘¡¡¡¥¢‘‘¤¡‘‘¤¡‘‘¡‘¡¡‘‘¤¡‘‘‘¢¡‘¡¤¡¡¡‘‘‘‘¡¡¡¡‘‘‘¡‘‘¥¡‘‘‘‘¡¡¤¡‘‘¡‘‘‘‘‘‘Óþÿ÷™‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¤€}‘¡‘€‘‘‘}€‘‘¡‘€}€€‘‘€€‘‘€‘‘€€€‘‘‘‘}€€€€€€€€€€€}}€}}}}€€}}}}}€}}}}}}}}}}w}}}}}}}}}}}w}}}}}w}}}w}}™÷û™v˜òõ™ww}vwwvw}wvvwvvvvvwvvvvwvvvvvvvuvvvvvvvvvovvvvvvvouoowvuvoouvvvouoovvvvoooooouuouuluuouuuoolultluolluultlCtullllCClulClCtulCllCCCllCCtCCCZCCCtCClCZCCCCCCCZC@ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!;Zòÿÿÿÿÿú_!!!!!!!! ! ! !! !! !!! !  ! !!! ! ! ! !  }ªõÿþþÿýÿþÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ7!ÓÓþþþþþþþþþþþþÿþþþÿÿþþþþþþþÿýÿúÖŽ}}}}}€~}}€€~}€€€~€}~}‘~}}}}‘€}}}€‘€}‘~}‘}‘¡‘‘¡‘~}€‘}~€‘‘‘}€€‘‘‘‘‘‘¡‘}‘¡‘‘‘¡‘€‘‘€‘‘‘‘¡¤‘}‘€‘‘‘‘‘‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘¡Úþÿÿÿÿÿꥡ‘‘¡¥‘‘‘‘‘¡‘‘‘¡¥¡‘‘‘¡‘¢¦¥¡¡¤¡¡¢¤¡¡¥¤‘¡¡¡¡¡¡‘‘‘¤¡¤‘‘¤¡‘‘¤‘¡¤¡¢¦¤‘‘¡‘‘‘‘¡¥¥¡‘‘‘‘‘¡¥¤‘¡¡‘‘‘‘‘‘‘¡¥¡‘¡¤¡‘‘‘¡¥¡¢¤¡¡‘¡¥¤¡¤‘‘‘‘¡¥õÿÿÔ‘‘‘‘€‘‘‘‘¡‘‘‘€‘‘‘¡‘€‘¤‘‘‘‘€}€€‘‘‘‘€€}}‘‘‘‘‘‘‘‘‘‘‘€‘‘€}€‘}}}‘‘‘€€‘€€}}}}€}}‘€}}€€}}}€}€€}}vv}}}}}}}}}}v}w}vvvw}}}šõ÷˜võ÷˜wvv}}}}}vwvvvvvv}wwvvvvvwvvvoovvvvvvvvpuvvwvuvovvloouwvvvulovvvvvulluouuluuulvvtllouvuulououluoooullllCClluuullulCCttltllutCCtlClZCCCltClltCCtlZCCCClZCCAACCCxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!=Zóÿÿÿÿÿ÷_!9!! !#!!!! ! !!! ! ! !!!  !!  !!   ! !! !9sªíÿýÿýÿþþÿþþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ Ó×ÿþþþþþÿþþþÿþþþþþÿþþþþþþÿþþÿþúÕŽ}}}}~€}}}€}}~}~}}}€~~}}}}~~‘‘}}~€}~€€€€}~‘‘€€‘‘€}‘€€‘€€‘}‘‘‘~‘¡‘‘‘‘‘}€‘‘‘‘‘‘‘‘‘¡‘‘‘€‘¥‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘¡¡¡‘‘‘‘Úþÿÿÿÿÿ椑¡‘‘¢¡‘‘‘‘¤¡‘¡¡¡¡‘‘‘¡¡¡¤¡¡¡¡¡¥‘‘¡¡¡¡‘‘¡¥¡¡¡‘‘¡¡¡¡‘‘¡¡‘‘¡¡¡¡¤¡¤¡¡¡¤¡¡¡‘¡¡¡‘‘¡‘‘¤¡¡‘‘‘¡¡¡‘‘‘‘‘¤¡‘‘¤¡‘‘‘‘¤¡‘‘‘‘‘‘¡¤¡¡‘‘‘¤‘‘Ôþÿõ™‘‘¤‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€€‘‘}€‘‘€‘‘€}~€€€€}‘‘€€€}}€‘‘}}€}}€}}‘}}}}}}}}}}}}}}}}}}}}}w}}w}}w}v}}}}v}}˜÷ú™}˜õ÷™wwvww}}wvv}}vvvvvv}wvvvvvvvvvvvvvvvvvvvouvv}vvvuvovouvvuvvvvvuuvuolvvuuoluvolovoluouuuolltuulltluluuuolllllllCtlltltlClCuulCCllClCCllllCCtlCCCCCCCCCCCCCCCCCtC÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!!Zóÿÿÿÿÿ÷_!!!#!!!!!! ! ! ! ! ! !! ! ! !   ! ! ! ! ! !!qªõþÿýÿýÿýÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿàÓ Ó×þþþþþþþþþþþþþþÿþÿþÿþþþþÿþþþÿúÕ}}}‘~}}}}}~}}}}}~}}~~}}~}‘€~‘‘~}}}}}}~‘‘~~‘‘€~}‘€}€‘‘‘‘}~€€‘‘‘€‘‘¡‘€‘‘‘~‘‘‘‘¡¡‘€‘‘‘‘‘¡¡‘‘¡¡¡¢¤¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘¡¡¡¥‘‘‘¡¡Úþÿÿÿÿÿꤑ‘‘‘¡‘¡¡‘‘¤¡¡¥¡‘‘‘¡‘¡¡¡¡‘‘‘¡‘¡€‘¡¡‘¡¡‘¡¡‘‘¡¡‘¡¡‘‘¡¡¥‘‘‘‘¡‘¡‘‘‘‘‘¡¢¦¥¤¡¡¡‘‘‘‘¡¤¡‘‘‘‘€¡¤¥¡¡¡¤¡¤‘€‘¡¤‘‘‘‘‘‘‘‘€€‘‘¡¤¡¤‘‘‘¡‘‘õÿÿÓ‘‘¡¡¡‘‘‘‘‘‘¡‘‘‘‘‘€€€‘‘‘€‘‘€€€¤¥‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘€}‘€}‘‘‘~~€}}}‘‘‘‘}‘‘‘€}‘‘}€‘‘€}}‘‘}€‘}}}}€}}}€}}}€}}ww}}}}}}vv}}}w}}}}vvvv™õúž}™õú™wvvvw}}}v}}}w}vvvvwww}wuvvvwwvvvvvvvvvvopov}vvvvvvvuooooovvuoloouvuvvovvoovoluuulllooooullovvtllullooutvutltllltClltllCCCltlltCCCCttCtCCCCtCCCCCCCClCACCCtCClláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@!Bóÿÿÿÿÿ÷_!! !! !! !! !! !!    !!!! !   !! ! !!   p¥íÿýÿýÿýÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ  Ó×þþþþþþþþþþþþþþþþÿþþþþÿþþþþÿüúÖ}}}}}~}}}‘}}}}~}}}€}}}‘€€€‘‘€~‘‘}}€‘‘}~€‘‘‘}}‘}‘¡‘‘‘}‘‘‘}‘‘‘‘‘‘‘€‘‘‘€‘‘}‘‘‘¡€~‘‘‘€‘¡‘‘‘¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘¡¡‘‘¡‘àþÿÿÿÿÿ椑‘‘¡¤¡¡‘‘¡¡¡¡¡‘‘¡¡¥¡‘¡¡¡‘‘¡£¡¡‘‘¢¢‘¡‘‘¡¥‘‘¡¡¡¡¡‘‘¢¡¡¡‘¡¡‘¡‘‘‘‘‘¡¤¡¤¡¡¡¤¡¡¡‘¡¡‘‘¡‘‘‘¡¡¡¡¡‘¤¡¡¡‘‘‘¡¡‘‘¡‘‘‘¡¡‘‘‘¡‘‘‘‘‘‘‘¢‘Óþÿõ‘‘¡‘‘¡™¡€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘}‘‘‘€~€‘€€~€‘‘‘‘‘€‘}‘‘‘}}‘€}}‘€}}}}}‘‘}}}}}}}}}}v‘}}v}}}}}}}vw}}}}}}}}wv}}v}˜õûš}™õõ™wvvw}}vvvvwv}vvvvvvvwvvvvvvv}wvpwwvov}vovpv}vvouv}voovuovvvoovvoovvuvouuouuouololuooouuolluuuolltluultuulltltllllCtllCtllllCtlCllClCClCCCCCCCCCCCCCZCCCCCCCCC{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Zóÿÿÿÿÿ÷_!9!!! !! !!!! !! ! ! !!    !  !  ! !q¥õþÿýÿýÿýÿþÿþÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿæÓ! ÓÓÿþþþþþþþÿþþþÿþþþÿÿþþþþþÿþþþÿúÖ }}}}}}}}}}}}}~€‘‘‘~}‘€€€~}}}}~‘¡‘‘‘‘‘~€}}}}}~~}~}‘‘‘‘€€~‘‘}}‘‘~€‘‘€‘¡‘}€~}€‘‘‘‘‘‘‘‘‘¡¤¡¡¡‘‘‘€‘‘‘¡¡¡¡¡‘¡¡¡¤¡‘‘‘‘¡¡‘‘‘¡Ýþÿÿÿÿÿꥡ¡‘¡¢¡‘¡‘¡¤¡‘‘‘¡¢¡¢¢‘‘¡¡‘¡¥¢¡¡¤¡¡¥¡¢¡‘¡¡‘‘¡¥¥¡¡‘‘¤‘¡¡¡¢¥¢¢¡‘‘¡¡¡¡‘¡‘‘¡‘¡¡¥¡¤¡¡¡‘‘‘¡¥¡¥¤‘‘‘¡‘‘¡‘¡¥¡¡¥¥¡¡¡¥¥¡¤¤‘‘‘‘‘‘‘¡¥¡õÿÿÓ‘¡¤‘‘‘¡‘‘‘¡¡‘‘‘‘€¡‘‘‘‘€‘‘¤‘¡¤‘‘‘‘‘€‘€‘‘}}€‘€€‘‘}}}}}}‘‘€~}‘‘¡‘}}}}‘‘‘}}}€}}}}€€‘}}}}}}}}}w}}}}}v€‘}}vwwvw}}‘}}}}}}w}}}}˜õú™p˜õ÷™ww}}}vvvvvvvv}}}vvvwvvvvvvvvwvvvwvvvwwvvoovvvulvwvovwvooouoluooluuluooovvovvululuvtlouuloullluloooulCltlllllluullltCllotCCllttttCClZClCClCCCCZlllCCClCtCCCC›çÿÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ@9!!!Bóÿÿÿÿÿ÷_!!!!!!!!! !!!!! ! ! !!!! ! ! !! !  ! !   ! ! !!!!  }ªíÿýÿýÿýÿþýÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ  Ô×ÿüþþþþþþþþþþþþþþÿþþÿþþÿþþþÿýúÖ}}}‘}}}}~~}}}‘~}‘‘}}~}‘‘€‘~}}~€‘‘~~‘‘€~}€€~}}€‘}~‘‘‘‘‘‘€~€}‘‘‘€€‘‘€‘‘‘‘‘‘‘‘€‘‘‘‘€‘‘‘‘¡‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘¤¡‘‘‘¡Úþÿÿÿÿÿ楡¡¡¡¥¡‘‘¡¡¡¡¡‘¡¡¡¥¡¡‘‘¢¢‘‘¡¥¡‘¡¡¡¡¤¡¡¢‘¡‘€¡¦¤‘¡‘‘¢¡¡¡‘‘¡¡¡¡¡¡¢¢¡¡¡¡‘‘¡¡¡¤¡‘¢¡¡¤¡‘¡¤¡¥¡¡¡‘‘¤¡‘‘¡¡¤¡¡¡‘¡¡¤¡‘¤¡‘¡‘‘‘‘‘¤¡¡Óýÿõ¥‘¡¤‘‘‘¤‘‘‘‘‘¡¤‘‘‘‘‘¤‘€‘‘‘€‘‘‘‘‘‘‘€‘‘‘€‘‘‘‘‘‘€‘}€‘‘‘€€€€‘‘€€‘‘€}}‘~‘€‘}€}}}}}}‘€€}}}}}}}‘‘}}}}}}}}}}}}}}}}}}}}}}}}}}}}}wv}}}}w˜õú™}˜ô÷™}}w}vwwvvvvv}}vvvvvvwvvvvvvvvvvvvvvpvvvwvvvvvovvvvvovvvvuvvuvllvlvvlooouvuuvuovlluuolloolooultlloouollllllloCCuulllCltlltCCulllCllCtlCCCCZlCCltCCZlCCCCCCC{ÌúÿÿúáÇçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@Yóÿÿÿÿÿ÷_!!!#!!!! !;! ! ! ! ! ! !  !   !!  !  !  !! !=qªõþÿýÿýÿþÿþÿýÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿæÓ ÓÓþþþþþþþþþþþþþþþþÿþþþþþþÿþþÿþúÖ}~~‘}}}}}}‘‘}~}}}}}}~~}‘}‘€~}}}‘~}€‘‘‘‘‘‘‘‘}}‘‘}}~‘~}‘‘‘‘~‘¡‘‘‘‘}~€¡¡¡‘‘‘¡‘‘‘‘‘‘~‘€€‘‘‘‘‘‘¡¤¡¡¡‘€‘‘‘‘‘‘‘‘¡¡‘‘‘¡¤¡‘¡¥Ýþÿÿÿÿÿ榥¤¡‘¡¡‘¡¡‘‘‘¡¤¡¡‘‘€‘‘¡¥¡‘¡‘¡‘‘‘‘‘‘¢¡‘¡¡¢¢‘‘¢¡‘‘‘¢¡‘¡¥‘‘‘‘¡¥¡¥¡¥‘‘‘‘‘‘‘‘‘¡¡‘¡¡‘¡¤‘¡¡¡¡‘‘‘‘‘¡¤¡¡‘¡¡¤¡‘¡¤¡¡‘‘‘‘‘‘¤‘‘‘¡¥¡‘ëÿÿÚ‘‘‘¡¡‘‘‘¡‘‘€‘‘¤¡¡‘‘‘‘‘€‘‘€‘‘‘‘‘€‘‘€‘‘‘‘¡‘€‘‘‘€‘€‘‘¤‘‘€€‘‘€‘‘€}}}}~}}‘}}}}}}€€}}‘€‘}}€‘}}‘‘}‘‘€‘€}}}}€}w}}}w‘‘}vvw}}www}}}v}}}}}}}šõûž}˜ô÷œ}wvwvvvvvvvw}vvvpvwv}}}}wvvvvwwwvvpuvvvvwwvvpvvvvooovvvoovvvvvvvoovuoolovollluovullvvuuultlolououuoulouootuullltllCltltllClltltlCltuCClCCltlCCCCCCCCCCCCu›èÿÿýáxƒòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!9Cóÿÿÿÿÿ÷_!!!!!!#!! !!!! !! !!  !!! !     !    ! !  !!=q¥íÿýÿýÿþþýÿýÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿèÓ  Ó×ÿþþþþþþþþþþÿþþþÿÿþþþÿþÿþþþþÿúÖŽ}}}}}}}}€‘€~}}}}~~}€}}}‘~}~€€}}‘‘}}‘‘‘‘‘‘‘‘}~‘}‘~€‘}‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘€‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘¡‘‘¡¥‘‘‘‘‘‘‘¡¡‘‘‘‘¡¡‘¡‘‘¡¡Úþÿÿÿÿÿ楢¡‘¡¡‘‘¡¡¡‘¡¥¡‘¡¡¡‘‘¡‘¡¡¤¢‘‘¡‘‘¡¡¡¡¡‘¡¡¥¡‘¡¡¡¥¡‘¡¡¡¡¡¡‘¡‘¢¢¡¡¡¡‘‘¡¡¡¡¡‘¡¢‘‘¡¢¡‘¡¡¡¡¡‘¡¡‘‘‘¡¡¡‘¡‘¡¤‘‘¤¡¡‘¡¡‘‘‘¤‘‘‘¡¡¤‘§ûÿõ¥‘‘‘¤‘‘‘‘‘¦¡€‘‘‘¥¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘€€‘‘‘€‘‘‘‘‘‘€‘‘€}‘‘€}€}}‘}}€‘}}‘€}‘}}‘€}‘}}}}}}}}}}}}}}}}}}w}}}‘}}}}}}wv}}}}}w}vv}}™õûž}˜èúš}www}vwwvvvwwvvvvvv}vv}}wvvovvvvvvvpvvvvvwvvuvvwvovuvuvovuvvovvuouvoluoouuouooluvtluvollolllluouuouolllttllltlttltlllllCltltlCtCltlCCCCZlllllCCCCCZCCCA{ÌúÿÿñÆu]ÊóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!99Y÷ÿÿÿÿÿ÷_!!!!! !!! ! !#! !! ! ! !   ! ! ! ! ! qªõþÿýÿýÿþÿþÿýÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿæÓ  ÓÓþþþþþþþþþþþþþþþþÿÿþþþþþþÿþÿþúÕ}}}}}€}~}~€}€}~}}}€‘€}}}}€‘‘‘}}}‘‘€€€}}€‘~‘‘‘‘}‘‘‘}‘‘‘€‘€~€}‘€~‘‘‘‘‘‘‘€‘‘}}}‘¡¡‘¡¡€‘‘¡‘‘‘‘‘‘‘¡‘‘¡¡¡¡¤¡‘¡¥¥¡‘€‘¡¥¡¡¡‘‘‘Úþÿÿÿÿÿꙡ¡‘‘‘‘‘¡¢¡‘¡¥¡¡¡¤¢¡‘¡¡¡‘¢¢‘‘¡¢¡¡‘¡¢¦¥‘‘¡‘‘¢¡¢¦‘‘‘¡¥¡‘¡¢¡¡¥¡¡¡¡¤¡¡¡¢¢¥¡¡¥¢‘‘¡¢¡¡‘‘‘‘‘‘‘¡¡¡‘¡¡¡¡‘¡‘¡‘¡¡¡¡¥¡¥‘‘‘‘‘¡¡¡‘‘‘ëÿÿÚ™¡‘‘‘‘‘‘‘‘¥¥‘‘‘‘¡¤‘¡‘€‘¥¡‘‘‘‘‘‘‘‘‘€‘‘¡‘‘‘‘}€€‘‘‘‘‘¡‘‘}‘‘‘‘‘‘€}}‘‘‘‘}‘€‘‘}}‘}}}‘}}}}}}}}}}}}}}}}}}}}}}}}}}}€}}w}}}‘}}}}}}}v}}}}ww}}vv}}˜õúžwô÷™w}w}}}}vvwvvvwv}wv}wvvvvv}vvvvvwvvvvwvvopvvvpovvvovvvvwvvvooovvlvvvvovvvvlloollvvvolvvovuuulultlllluuullltlllCClulltlCtlCllttCCCCClClCClClZCZCCCCCllCZ›çÿÿ÷Ì{CƒßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!@óÿÿÿÿÿ÷_!!!;!!! !!!!! ! !! ! !!! !! ! ! !  !       ! !  !$p¥íÿýÿýÿþþþýÿýÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿèÓ   Ó×ÿüþþþþþþþþþþþþþþÿÿþþÿþÿþÿüþÿúÖ}}}~}}}}€‘}}~€}}}‘€~}}}~‘‘€}~€}~~‘‘}}}~‘‘‘‘‘‘~‘‘}‘‘‘‘‘€€‘€}‘}~‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘¡¥‘‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘¡¡‘¡‘‘¡¡¡‘‘¡¢‘¡‘¡‘¡Úþÿÿÿÿÿ楑‘‘‘¡‘‘¡¥¡‘¡¡¤¢¡¡¡‘¡¥¡‘‘¡¡‘‘¢¥¡¡‘‘¡¢¡¡¡‘‘¡¤¡¡¥¡‘‘¡¡¡‘‘¡¥¡¡¡¡¢¡¡¢¡¡¥¡¢¡¡¡¡¡‘¡¥¡‘¡¡‘¡¡¡¡¡¡¡¡‘‘¤¡‘‘¡‘¡‘‘‘¤¡¡¤¡¡‘‘‘‘¥¡‘‘§ûÿû¥¡‘‘‘‘‘¡¡€‘‘¤‘‘‘‘‘‘‘‘‘€‘¤¤¡‘‘‘‘‘‘€‘‘‘‘‘€‘‘‘€‘‘€‘‘‘‘‘‘€‘‘‘‘‘}‘‘‘‘‘‘}€‘‘‘‘}}}}}}‘}}}}}}}}}}€€}}}}}}}}}}}}‘}}}}}}}‘}}}w}}}}v}}}}}w}}w}wv™õúš|˜èú™w}}ww}}wvv}vvvvwvwwvvwvvv}vvvvvvvvvwvvvovvvvvopvuvuvuuvvvvvouvvlovvuovvvvlluvulvvuluoouuuoloolltlulluulllllllllllltllllCCtlllCltlCClZlCClllCCClCCCCCƒÌúÿúß”ltÆòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!;!!Yóÿÿÿÿÿ÷_!!!#!! !!!! !!! ! ! ! ! ! ! !! !! !!   ! ! ! !   !!pªõþÿýÿþÿþÿýÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿæÓ  Ó×þþþþþþþþþþþþþÿþþÿÿþþþþþþþÿþÿúÖ‘}}}}~}}~€~}}~‘€€}€}}}}‘€}~€€}‘‘~€‘‘€‘‘}~}€~}‘‘‘}¡¢‘‘€}€‘‘~‘}‘‘‘‘‘‘‘‘‘‘¡¡¡‘‘¡‘¢¡€‘¡‘‘‘‘‘¡¡‘‘‘‘‘€‘‘‘‘¡¡‘‘‘‘¡‘¡¢¥‘‘‘‘¡¥Ýþÿÿÿÿÿ릡¡¡¡¢¥¡‘¡¤¡¡‘¡¡‘‘‘‘‘¢¢¡¡¢‘¡¡¡¢¡‘‘‘¡¥‘‘‘¡¦¡¡‘¡¦¢¡¡¡‘¡¡¡¡¡¡¡¡¡¥‘‘¡¥¡‘‘¡‘‘¡¡¥¢¥¢¡¡¡¥¦¥¢¥¡¡¡¢¥¡¡¢¥‘‘‘‘¡¡‘‘¡¤‘¡¡¡¡¡¡‘‘¡¡‘ÚÿÿÚ¤‘¡‘‘¡¡¥¡‘‘€‘¡‘‘‘‘‘~‘‘‘‘‘‘¡‘}€‘¤‘‘€¡‘‘‘€‘‘¡‘¤‘‘€}}‘‘‘‘‘€€‘¥‘‘‘‘€‘}€‘‘‘‘}~€€€}‘‘‘}‘‘}}€}}}}}}}}‘‘‘}}}}}}w}}}}}w}}}}v}}vvv}v}}vv}}}v}v™õúž}™õ÷ž}}}wvv}}vw}}}wvvwvvvvvvvwvvppovvvvwvvvvvvvpvvuvvvvvovvooouvovvvuoluoouvoullvvvllolllvulooootllllulllovptlluoooultlltltClltlllCCltClCuClZCtCCCltlCCu›èÿÿè›tlƒßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=9!Cóÿÿÿÿÿ÷_ !!! !!!!!!!#! ! ! ! ! !! !! !! ! !!!!! ! !  !   !  qªíÿýÿþþýÿþÿýýÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿèÓ!  ÓÓÿüþþþþþþþþþþþþþþÿþþþÿþÿþÿþÿþúÖ}}~~}}~€}}}}}}‘‘~}}~}}€~}‘€}}‘‘€~‘‘€‘‘€‘}€}‘‘‘€~~¡‘‘¡‘}‘‘‘‘‘~‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘¡‘‘‘¡‘€‘‘‘¡‘‘‘¡¡‘‘‘‘‘‘‘‘¡¡¡¡‘‘¡¢Úþÿÿÿÿÿꥢ‘‘¡¥¡¡‘‘¡¡‘¢¡¡¡¡‘‘‘¢¡¡¡¥¡¡¥¡¡‘‘‘¡¡¡‘‘¡¥¢‘¡‘¡¦¥¡¡‘¡‘¡¢¢¡‘‘‘¥¡¡¡¢¢‘‘¡¡‘‘¡¢¢¡¢¡¡¥¡¡¡¡¡¡¡¥¡¥¡‘¡¥¡‘‘‘‘¡¡‘‘¡‘¡¡‘¡¤¢‘‘‘¢‘¥ûÿû§¡¡‘‘‘‘¤¡‘¤‘‘‘‘‘€€¡‘‘‘‘‘‘‘‘‘‘€‘‘‘¡‘€‘¤‘‘‘€‘‘¤¡‘‘}‘‘‘‘‘€‘‘€‘‘‘‘‘‘‘€~}‘‘‘‘‘}}‘‘‘}}}‘‘}}‘€€}}}}}}}}}‘}€}}}}}}}}}}}}}}}}}w}}}}}vv}v}}v}}}vw˜õúž}˜ë÷ž}}}}wwwwvw}wvwwvvwvvvvwwvvvvvvvov}vvvvvovvvvvvvuvvvovvvlovouvvvvoooovovooolu}ullulluvlolluoolllllullluullltluvlltllltlltlllCZCCllCltlCCllCCCCCCltƒÌüÿòÇzCxÇóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!!Y÷ÿÿÿÿÿ÷_!!!! !!!! !!!! !!!  ! !!  !!! !!  !  !   !qªõþÿþÿþÿýþþþÿÿÿþÿÿÿÿþÿþÿÿÿÿÿþÿæÓ7    Ó×þþþþþþþþþþþþþþþþÿÿþþþþþþþþÿþúÖ }}}}}}‘‘}€‘~}}}‘€~}‘€~}}‘‘‘‘‘‘‘}€~~}~}}€‘‘¡‘‘~}‘~‘‘€‘‘‘‘‘~~}}€‘‘‘‘‘‘‘‘¡¡‘‘‘}€~‘¡‘€€‘‘¡‘‘‘¡¡‘‘‘¡‘¡‘‘‘‘‘¡¡¡¡‘‘‘‘‘‘¡¡‘¡¡Úþÿÿÿÿÿꙡ¢¡‘¡‘¡¥‘‘¡¡¡‘¡¡¦¢¡¡£¥¡‘¡¢¦¢‘¢¢£¥¡‘¡‘¡¥¢¡‘¡‘‘¡‘¡¥¡¡¡¢¥¡‘¡¡‘¡¡¡‘¡¥‘¡¡¥¡¡¥¡‘‘‘‘‘¢¢¡‘‘‘¡‘‘¡¢¤¡‘¡¡¡¡¥¢¥¡‘‘¡¡‘‘‘‘¡¡‘‘¡‘¡Úþÿà‘‘‘‘‘¡‘‘‘‘¡¡€‘¡¡‘‘¢¥‘‘‘¤‘‘‘‘‘¡¤‘‘‘‘‘‘¡‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘}€‘‘€}‘‘~}}}‘€}}‘€‘‘€‘}‘‘}€€€}€~}}‘‘‘€}}}}}}}}}}}}}}}}}}‘€}}vv}}}}}}}}}vw}}}™õúžv˜èúžwvvv}}}}}w}}}vv}vwvvpvwvw}vvvwvvvvoovvuvuvvvuvvovvvoovvovvvvupoovvvvulvuvvlvvoovvvlouolulluvuuulullullltlloouvtlCCCClClttlCllClttlCCCCltlCltCCAuÇñÿüß”CC˜áýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!@=!Bóÿÿÿÿÿúx!!!!!#!!!!! ! !!!!!! ! !  !! !   !   !  ! !      !=sªíþÿþþýÿýÿýÿýÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿèÓ!     Ó×þþþþþþþþþþþþþþþþÿþþþÿþÿþÿþþÿúÖŸ}}}}}€€€€€‘~}}~‘€}}‘‘€€€‘‘}‘‘‘‘‘€€‘€}}‘‘‘‘‘~}}‘‘‘‘~€‘¡‘‘‘}‘~~‘‘‘‘‘‘€‘¡¡‘¡‘~‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¢‘¡‘‘‘¡‘¡‘¡‘‘‘¡¡‘‘‘‘¡¡‘¡‘‘Úþÿÿÿÿÿæ‘¡¡¥¡¡¡¡¡‘‘¤¡¡¡‘¥¥¢‘¡¥¥¡¡¡¡¥£¡¡¥¢¢¥¡‘¡¦¡‘¡¡¡‘‘‘¡¡¢¡¤¦¥¡‘¡¡‘‘¥¡‘¡‘¡¡¡¥¢¡¡¡‘¡¡¡‘¡¡¡¥‘‘‘¡¡‘¡¡¡‘‘¡¡¡¢¡¡¡¡‘¡¡¡‘‘¡¡¡¤‘‘¡‘¥õÿý§‘‘¡‘‘¡‘‘¡‘‘‘‘‘¡‘‘‘¡¥‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘€‘‘‘‘‘‘€‘‘‘‘‘‘‘‘€‘‘}}}‘‘}~‘‘‘‘‘}‘€}€~‘‘}}€}}}‘‘}}}}}}}}}‘}}}}€}}}}}}}v}}}}}}}}}v}}v}}}˜íûž}èûžvwvwv}}}}wvv}vvvvvvvvvvvvwvvvwvvvvvovovvvvvvvovvvvvoovvuvuvovuooovuoooovvvluvouvuuuollvoluouvvollltllllllltluulllllClllllCltlCltlCCCClltCltllCƒßúþèut{Ì÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@!!Yóÿÿÿÿÿ÷_9!! !!!! #! !!! !#! !  ! !! ! ! !   ! !!!  !  9sªõÿþÿþÿýÿýÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓÓ×þþþþþþþþþþþþþþþþÿÿþþþþþþÿþÿÿúÕŽ}}‘~}}}}€~}€~}}€~}~€}€~}€€~}}~~}€€}€‘~‘‘‘‘‘€‘‘}~}€‘€}‘¡~~‘¡‘‘‘‘‘‘‘~€~‘¡‘‘‘€‘¡¢‘‘‘‘¡¡¡‘‘¡¢¡‘¡¡¡¡‘¡¤¡¡¡‘¡‘‘¢¡‘‘‘‘¡¡‘‘‘‘Úþÿÿÿÿÿꥑ‘¡¢¢‘‘¡‘¡¢¡¡¤‘‘¡¡‘‘¡¡¡‘‘‘¢¥¡‘¡¡¥¡‘¡¢¥¡¡¢¥¥¡¡¡¥¡‘‘¢¦¡‘‘¡‘‘¡¢¥¡¤‘‘‘‘¡¡¢¡‘‘¥¢¡¡¥¡¡¤¢¡¡¦¥¡¡¡¡‘¡‘¡¡¡¡¡¡¤¡‘¡¡‘‘¡‘‘‘‘‘‘¡Ôýÿ楑¡¢¥‘‘‘‘‘‘‘‘‘‘¥¡‘‘‘‘€‘¡‘‘¡‘€€‘‘‘‘‘‘‘‘€‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘€}‘‘}‘‘€€}‘‘€}€‘}€‘‘}}‘€€}€}‘€}}}}‘}}‘}‘€}}‘‘}}}}}}}}}}}}v}}}}}w}}vw}}}}}}™ñûžv˜èúž}}}}vv}vwwvv}}w}vvvw}wvvvvvv}vvw}}vvvvv}wvuvpvvvvvvoouvvvvvuoovuvvvvvvloolllovvlloooouvullulltluolooutltllCCClltllltCllulCCltCCCClttCCCCtCCCuÆñÿ÷Ìzll›èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!! !;!!!!!!!!!! !!! !!   !! ! !  !! !! !     !!!!!=p¥íþþþýÿýÿþþþþÿÿÿÿþÿþÿþÿÿÿÿÿþÿÿèÓ!!     Ó×þþþþþþþþþþþþþþþþÿþþþÿþÿþÿþþþúÕ}~}}}~}~}}~}~~}€‘‘}}€~~€}~}}‘‘~€}€‘‘‘‘‘‘}‘‘€‘‘€‘‘}‘¡€}‘¡‘€‘¢‘}‘€~‘‘¡‘‘€‘‘¡¡¡‘‘‘¡‘¡¡‘‘¡‘‘‘¡¢‘‘¡¢¡¡‘‘‘‘¡¤¡‘‘‘¡¡‘‘‘‘‘Úþÿÿÿÿÿê¡‘¡¡¡¡¡‘¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘‘¡¡¥¢‘¡¡¡‘¢¢¡¡¢¡¡¢¡¡¦¥‘‘¢¢¡¡¡¡‘¡‘¢¢¢‘‘¡‘‘¡¡¡¥¢‘‘¡¡¡¥¡¡¡¡¡¡¤¥¢¡¡¥¡‘‘‘‘¥¡¥¡¡¡¡¡¡¡¡¡‘‘¡¡‘‘‘‘ëÿý¬¡‘¡¥¡‘‘¡‘¡‘¡¡‘‘¡¡‘‘‘¡‘‘‘‘‘‘‘¥€€‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘€‘‘‘}‘‘}}‘‘‘‘€~€€€€‘€€}‘€}~‘€}}}}‘€}€}}€}}€}}€}}‘}}}}}}}}}}}}‘v}}}}}}}}}vv}}}}}wõúžv˜èû§}}}}}}}vv}v}v}vvvvv}wwvvvvpv}vvvvvvwvpv}vvvlvwvvvvvvuvuvvvvovovvvoovwuluuoloouolooouuvvoluollloolultolllulllllllluulCCtutllllCCCllllCZlCCCCƒßüüß”tC{ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!! !!!!!!!#! !!!! !  ! !!! ! !!!  ! ! !!    !!  !!qªõÿþÿþÿýþÿþÿþÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿàÓ  Ó×þþþþþþþþþþþþþþþþÿÿþþþþþþþÿþÿúÖ¢}}}}‘~}}}}‘€}~~}}}}¡‘‘‘‘€€~}~}}‘‘€‘‘‘€}‘‘‘€}€‘¡‘¡‘~€¡‘~‘¥‘}‘¡¢¡¡‘‘‘}‘€‘‘‘‘‘€€‘‘‘‘‘‘¡‘‘~‘‘‘‘¡‘€‘¡¡¡¤¡‘¡¡¡¡‘‘¡¡‘¡¡¡¡¡Úþÿÿÿÿÿꥑ‘¡¡¦¥¡‘¡‘‘‘‘¡¡¡¢¥¦¡¡‘¡¥¡¡¡¡¢¥‘¡‘¡¥¡‘‘¢¥¡‘‘¡¢¦¡‘¡¢‘‘¡¢¥¡¤¢¡¡¦¢¡¢¦¢¥‘‘¡¦¥¡¡‘¡¤¡¡‘¡¡¡‘¡¡¡¡¢¡‘¡‘‘¢¢¡¤‘‘¡‘¡¤¡¡‘‘¡¢¡¡¡¡úÿꙑ‘¡¡‘€‘¡‘¤¡¥‘‘‘‘‘€‘‘‘~~~€‘¡‘¡‘€‘¤¡‘¤¡‘‘‘‘‘‘‘¡‘€€‘‘‘‘‘‘‘‘‘‘‘‘~}‘‘‘‘‘¡‘‘‘€}€‘‘€€}}}‘‘‘}}}}}‘}w}}}}}‘}}}}‘€|}}}}~€}}wv}}}‘}}v}}}}}}}}}w}v˜õü§wèúž}vvv}wwvvvvv}wvvvvvw|vvv}wvvv}wvvovvvovwwwvvwwvvupovvvvouvvvvlvoooluvolvvvvuvoopvvllltlulluvulvvuullllullouluotltlltllCCCltCCClultCCllCCCuÇõþñÇxClÆñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ@!!!!Zóÿÿÿÿÿ÷_!!!! !!!! !! !! !!!!!! ! ! !!! !   !! !!  !  !  ! !      pªõþþþýÿýÿþþþþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿèÓ   Ô×þþþþþþþþþþþþþþþþÿÿþþÿþÿþÿþþÿúÖ }}}}}}}}~‘~}~€‘€}}~‘‘‘‘‘‘‘~}}}‘‘‘‘‘‘€‘‘}}‘‘‘‘}~‘¡‘‘‘‘~}‘‘‘¡‘‘‘‘‘¢‘‘‘€~€‘‘‘‘‘‘‘‘¡‘¡‘~‘‘‘¡‘€‘¡‘‘‘‘‘¡¡‘¡¡¡‘¡¡¡¡¡¡¡‘‘¡¡¡¡Úþÿÿÿÿÿꥡ¡¡¢¦¡‘‘¡¡¡¡‘¡¡¡¢¥¢¡¡¡¡¢‘¡‘‘¢¡¡¡¡¢¡‘¡¡¢¢¡‘¡¡¢¢¡¡¥¡¡‘¡¢¢¥£¡¡¤¥¡¡¢¥¡¡¡¡¥¥¢¢¡¡¤¢¡‘¡¡¡‘¡¡¡¤¢¥¡¡¡‘¡¢¡‘¡¡‘¤¡‘¡¢¡‘‘¡¥¡¡‘ÓýÿÔ‘‘¡¡¢‘~‘¡¡¡¡‘‘‘‘¡¡}€‘‘‘‘‘€¡‘‘¡‘‘‘‘‘¡¡¡‘‘‘‘‘‘‘¡‘‘‘¡‘‘‘€€‘‘‘‘‘‘‘}‘‘‘‘‘‘‘}‘‘}€‘‘‘}}‘}}€‘€€}}}}}}}}}}}}}}}€}}€‘}v}}}}}}}w}}}}}}}‘w}}v}}v}}}ww™ëý¬vèûÒ}}}}}vv}vv}vvv}vvvvvwvvvvwvv}}vvvvvvvovwvvvvvovvvvupvwvovvvvuvvououovvovvvovvuouuullloulluvuuuuuoolltooltuluulltlCtllClCtllCCCoutCCCClCl”ßý÷̃tC”ßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Yóÿÿÿÿÿ÷_!!!!!!#!! !!!! ! !  !!! !!! !! ! !!   !!   ! !  !  !!  !! qªíÿþÿýÿýþÿþÿþÿÿþÿþÿÿÿÿþÿÿÿÿþÿÿæÓ!      Ó×þþþþþþþþþþþþþþþþÿþÿþþþþþÿþÿþûÓ}}}}}}}}}}€}~€}}~}}}}}}~}~‘‘‘‘~~~}€}~€€€}‘‘‘‘‘}‘‘‘‘‘‘‘~€}€‘‘‘‘~‘‘‘‘‘‘‘¡¡¡¡‘‘‘‘‘¡‘‘€‘¡¡¡¥¡‘‘¦¥¡‘¡¡¡¡‘‘¡¡¡¡‘¡¡‘¡¡‘‘¢¥¥¦Ýþÿÿÿÿÿ楢¢‘‘‘‘‘¡¢¡¢¥¡‘¡¡¡‘¡¡¥¢¢¢¡¡¡¡‘¡¡¡¡¢¢¡¥¢¡¡¡¡¢¥¡¡¢¡‘¡¥‘‘¡¡¡¥¡¡¡‘‘¡¡¡¡‘¡‘¡¡¡¡¡‘¡¡¡¡¥¥¡¡¡¡‘¡¡¡¥¡¥¡¡¦¡‘‘‘¡¢¢¡‘¡¤¡¡¢¡¡¡¡êþÿõ­¡‘¡‘‘‘¡¥¡‘‘‘¡‘‘¡¡‘¡¥¢¡¥¡‘‘¡¤‘‘‘¡€‘‘‘‘‘‘‘‘‘‘‘‘€~}‘‘€‘€‘‘‘€~€‘‘‘‘}~}€€‘‘}}‘‘‘‘€}‘‘‘}‘€€‘€€‘‘‘‘‘‘‘}€€‘}}}}}‘‘}}}}}}}€}}v}}‘€}w}}w}}€wv}}}}˜èüÓ}™èüžvv}vw}vvvvv}vvvw}}}vvvvvvvvvvv|vv}vvvvvvvpvvuopvvvvuovvovupoovvvlvooooouvulovouvoolvulvvllllllolllCloolllltlCtllCllullCllvllltCCCCCCCCxÌ÷üç›uCuÊòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9==!Cóÿÿÿÿÿ÷_!#!!!! ! !!!!!! !! !!!      !!!! !   !  ! !!  !  !!! 7p¥õþÿýÿýÿþþþþýÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿæÓ$   Ó×þþþþþþþþþþþþþþþþÿþþþþÿþÿþþþÿúÖŽŽ}}}}}~}}}}}}~}~€}}}}€}}~}}‘¡‘€€}}}~‘‘‘~~}‘‘‘~‘‘‘‘‘€‘‘‘€€€€‘‘~‘‘‘€‘¡¡‘‘¡‘¡‘¡‘‘¡‘‘‘€‘‘¡¢¡‘¡‘¡¢¢¡¡‘¡¡¡‘¡¡¡‘‘¡‘¡¡¡¡¡¡¢¢¡¡Úþÿÿÿÿÿꥡ¡¡‘‘¡¡¡¡¡¡¢¡¡¡¡¡¡‘¡¢¢¢¥¡¡¡¡‘¡¡‘¡¥¡¡¡¥¡‘¡¥¡¥¡¡¥¡¡¢¥¡‘¥¡¡¡‘¡¡¡¡¡¡¢‘¡‘¡¡¢¡¡¤¢‘¡¢¦¢¢¡¡¥¡¡‘¡¥¢¢¡¡¤¡¤‘‘¡¡¡¡¥¡‘¡¡¡¤¡¡¥¡ÚýÿÿøÚ¢‘‘‘‘¡¥¡‘‘¡¡‘‘‘¡‘‘¦¥¡¡¡‘‘€¡¢‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€‘‘‘‘€€‘‘‘‘€~€‘‘‘‘€~‘‘€}}€‘‘€‘‘‘€€‘‘€}€}€‘‘€‘‘€‘‘‘}}‘‘}}}€}}}‘}}}}‘}}}}}}}‘‘}}w}}}}}}}}}}véý§}™æûÊ}vvv}v}wvvvwww}}v}vvwwvvv}vvv|vvw}vvvvvvvovvvlvvvovpovvvvvulovvvvlulpouvvllupllovuvoluvulltlllvulClluulllllllllllCtotllllttuulCCCCClt›èüòÇ{CC›áýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!9Zóÿÿÿÿÿ÷_!!!!!!! !!!! ! ! ! !     !! !!!!!! ! !  ! ! !! ! !  ! ! =q¥õþþþþÿþÿþÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿÿþÿæÓ      Ó×þþþþþþþþþþþþþþþþÿÿþÿþþþÿþÿþÿúÖ~}}€‘‘‘}~‘€~}€€€¡‘~‘‘}}~‘‘}€¡‘€‘}‘‘‘‘€~€€~‘‘~‘‘‘€~~€‘¡‘‘‘‘¡¢‘‘‘€‘€€¡‘‘‘‘€~€‘¡¡¤‘¡¡‘‘‘‘¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¡¡¡¡‘‘¡¤¡‘‘‘‘‘‘‘Úþÿÿÿÿÿꤑ¡¡¥‘¡¦¢¥¥‘¡¡¡¦¥¡¡‘‘¡¡‘¡¡¡¢¥¡¡¡‘¦¢¡¡¡¡‘‘¡¡‘¡¢¡¡¡¡¡¡‘¡¦¦¥¡¡¡¡¤¦¢¥¡‘¡¦£¢¢¡‘¡¢¢‘¡¥¡¡¡‘‘¡¡‘‘¡‘‘‘¡¡¡¡‘¡¢¤¡¡‘¡‘‘¤¡‘‘‘¡¡¥ëÿÿÿý묡¥¡‘¡¡‘¡¡‘€¡¥‘~€¥‘€‘‘¡‘‘‘¡‘€‘‘‘¡‘‘‘‘‘‘¡¡‘‘‘‘‘¡‘‘‘€‘‘‘‘‘}€}€‘‘€~‘~‘‘}‘‘‘€~€}}}~}€}‘}}}‘}}}€‘}}€‘‘}‘‘}}}}}}}}}‘}}}}}}}}}}}}}}v}w}v}vw}}}™èýÇw™èüÇ}v}}w}}}v}vvvv}}vvvvvvpvvvv}vvvvwvvovovvpvv}vvv}vvvuvvouoovvvvvuvvvvuvovovuovvouuloulluvuooolltvluuCuvulullluultlllllotClCCCClllCCC{×÷üß›ulxÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_9! !!! !! !! ! !! !!! !!!  ! !!  !        !!  !  !  9s¥ëÿþÿþþþþþþþýÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿèÓ$!    Ó×þþþþþþþþþþþþþþþþÿþþþþÿþÿþþÿþúÖ }}~€‘€}~‘€}}~~‘¡‘}‘‘€}‘‘‘~~‘‘~~‘‘~‘‘‘‘€}€}~‘€‘‘~}‘‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘¡¡¡‘‘‘‘‘¡‘‘¡¡¡‘€‘‘‘‘‘‘¡¥¡‘‘¡¡¡‘‘¡‘‘‘‘Úþÿÿÿÿÿæ‘‘¡¦¢¡¡¡¢¢¡¡¡¡¥£¢¡‘‘¡¥¢‘¡¡¥¡¢¡¡‘¡¢¢¡¡¡¡¡¡¡‘‘¡¡¡¡¥¡¡¡¢¢¥¦¦¡‘¡¥¦¥¡¡¡¡¡¥¥¢¥¡¡¡¡¥¡¡¡¡¢¡‘‘¡‘‘¡¡‘¡¡¢¤¡¡¡¡¡¡¡‘¡¡¡¡¡‘‘‘¡¡¡‘¬ëÿÿÿÿûꥡ¡¡¡‘‘¥‘‘¡¦‘‘‘¡‘¡‘€‘‘‘‘‘‘‘‘¡‘‘‘¡¡‘‘‘¡‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€€}~‘‘€‘‘‘‘‘}‘‘‘‘}}}‘}‘‘~€€~}}}€}}‘}}‘‘‘€}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}w}vw}}wèýÒ}èýÓv}w}}v}vv}vvvv}wvvvvvvvvvv}}vvvwvvvvpvvvvpvvvvvvv}vovvvpvlvvvvvoov}vuovouvolvuvlolvllluovllultllvoollvuulllullllltlCtltllllClCtlluñýñÆuluèþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@!!Bóÿÿÿÿÿ÷_!!!!! !!! ! !!! !!!!!! !! ! !!!!   !    ! !     ! ! !  ! qªõÿýþÿþÿþÿþþÿÿÿýÿþÿÿÿþÿþÿÿÿÿÿÿàÔ!    Ó×þþþþþþþþþþþþþþþþÿÿþÿþþþÿþþÿþûÖ€€}}}}~}}}}}}}}~~}}‘~}}‘€}}€~~}~‘‘~€€‘‘‘‘‘‘€‘‘‘‘~‘‘‘‘‘‘‘~~‘‘}‘‘‘¡‘¡‘€€‘¢¢¥‘~‘‘¡‘‘‘¡‘‘‘¡¢‘‘‘‘¡‘¡‘¡¡¡‘¡‘‘¡‘€‘¡¡¢¢¢¢¢¢¡‘Ýþÿÿÿÿÿꥑ¡¥¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡‘‘¢¡‘¡¡¡¡¡¢¦¡‘‘‘¡¥¡¡¢¢¢¡¡¡¡¡¡¢¥‘‘¡¡¡¡¢£¡¡¡¢¡¡¡¢¥¡¡¡¡¢¡¡¢¤¡¡¡¢¡¥¡¡¤¡¡¡¡¡¥¤¡¡¡¡¡¡¤‘¡¡¡¢¡¥¡‘‘¢¡¢¡¡¡¡¥ÚýÿÿÿÿõØ‘‘‘~‘¢¡~‘¥¡‘€‘¡¥¥‘¡¡‘~‘¤¡¡¡‘‘‘¥‘‘‘‘‘‘‘¡‘~€‘‘¡‘€}€‘¥¡‘‘~€€‘‘‘¡‘‘~~}‘‘‘‘}‘‘‘‘€}}}}}}€‘‘€€‘‘}}}}}}}}€}}}€}}}}‘}}}}}}}}}}}}}v}}}}€}vvw}}}}}™èýÓwæýÓ}}vv}}}}}}vvvv}}vvww}}}}vvv}vvvvvv}}vvvvvovpovpov}vovvvvwvooovvllvvopouoovovoouulovulooouvolvootlulltllllluvulutlulCllClloltCCCoƒßü÷̃lC{ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!9!!Bóÿÿÿÿÿ÷[!!!!!!#!!!! !! !! ! ! !! !  !!! ! !!  ! !! ! !  !   !!!9sªíýÿþþþþþþþþýÿÿÿÿÿþÿÿÿÿÿÿþÿþÿÿèÓ!   Ó×þüþþþþþþþþþþþþþþÿþþþþÿþÿþþÿÿúÖŽ‘~}}}}}}}}}}}}}}}}~}~~€~€~~~}}‘‘‘‘€‘€‘‘‘‘‘€€‘‘‘‘‘~‘‘‘‘‘}€€‘€‘‘‘¡¡¡‘~‘‘¡¡¡¡‘‘‘‘‘‘‘¡¢‘‘¡¥¡~‘¡‘‘¡¡¡‘‘‘¡¡‘‘‘‘‘¤¡¢¢¢¥£¥¡‘Úþÿÿÿÿÿæ¡‘¡¡¢¡¡‘‘¡¡‘¡¡¡¢¥¡¡¡‘‘¡¢¢‘‘¢¢¡¥¡¡¡‘¡¢¡¡¥£¡£¡¡¡¡¡¢¢‘¡¡¡¡¡¦¥¡‘¡¡¡¡¡¢¢¡‘¡¡¥¡¢¥¢¡¢¢¥¢¡¡¢¢‘¡¡¡¡¢¡‘¡¡¥¡¡¡¡¡¥¥¡¥¢¡‘¡¡¢¥¡‘¡¡¥¥Ôõÿÿÿÿý묑€‘¢¡~‘¢¡¡‘‘‘¡¡¡¤¡‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘}‘‘‘¡¤€€}}~€€‘‘€€¡‘~~}}}}‘€}}‘€}}}}}}}}}‘‘}}}‘}}}‘}}}}}}}}€}}}}w}}ww}}}w}}}}}˜ëýÓvâý×}}}vv}}}vvvvv}}w}}}}}}wwv|vvvvvpvvwvvvvvvvvvpovupvvovvvvv}voooouooovvoopoouvuoollooolouuvvluuuolllllulllltlllullullllCltltulCluÇòýè›uCuÇñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Zóÿÿÿÿÿ÷_! !!!!!!!! ! !! ! !!!  ! !  ! ! !   !! ! !!! !!  !!!  !   !!=}ªõÿýÿþÿþÿþÿþÿÿÿþÿþÿÿþÿþÿþÿÿÿÿÿàÓ  Ó×þþþþþþþþþþþþþþþþÿÿþÿþþþÿþÿþþúÖŽ}}‘~~}~}€‘‘‘‘€~‘‘€~}~€€€€}€€€~‘‘‘€~~~}~‘‘‘‘€~~‘‘‘~}€‘‘¡¡‘‘~~€~‘‘‘‘¡¡‘‘‘‘‘‘‘‘¡¡‘‘‘€‘‘‘~¡¥‘¡¡¥¡‘¡¡¡¡¡¡‘‘‘‘¡¡¡¡¡‘¡‘¡‘¡‘‘Úþÿÿÿÿÿꥑ¡¡‘¢¡‘¡¥¢¡¡¢¢¡‘¡¡¡¥¡¡¦¢‘‘¥¢¡¡¡¢¥¡¦¢¡‘¡‘¡¥¢‘¡¡¡¡¡¡¡¥¡¡¡¡¡¡¡¢¢¢¡¡¡‘¡¡‘¢¢‘¡¡¡¡¡¡¡¡¡¡¥¡¡¡¦¥¢¡‘¡¡¡¢¥¡‘¡‘¡¡¡¡‘¢¡‘¡¡¡¥¡¡‘¡¡¡§àûÿÿÿÿûꥑ¦¡‘‘‘‘¥¥¡¡‘‘‘¡‘¡‘‘‘‘‘‘‘¡‘‘€‘‘‘‘~‘¡‘‘‘‘€‘‘‘‘‘‘~~€‘‘~}€‘¡‘~~€‘‘‘~}}~‘‘€}€‘‘‘‘€‘‘€€‘}}}}}}€‘‘‘}}}‘}}€‘}}}}}}}}}}w}}}}}‘}}}‘}}}}}}}}‘èýבàýÓ|vvvv}}}v}}}|vv}vvvvw|vvvvvvvvvvvvvvvvvvpvvvvvpvvvvvlooovvoooovvvovvoououoooovvvulvlulovvlloouvulllovtlooulullllouuCClullClu˜çüóÊ{ulƒßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!@Cóÿÿÿÿÿ÷x9;!! ! !!! ! ! ! !! ! !       ! !  !  !   ! ! !!  ! !q¥íýÿþþþþþþþþýÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿèÓ    Ô×þþþþþþþþþþþþþþþþÿÿþþþÿþÿþþÿÿúÖŽ~€‘}}}‘‘‘‘‘}‘‘‘€}~}‘‘€}~‘‘€~‘‘€€€}}}‘‘‘‘‘‘‘‘~‘‘~}~‘‘‘¡¢‘}€‘~~‘‘‘‘‘‘¢‘‘‘‘¡‘‘‘‘‘‘‘~‘‘¡‘‘¥¢‘¡¥¡¡¢¡‘‘¡‘¡¡¤¡¢‘‘‘¡‘‘¡¡¡Úþÿÿÿÿÿꥡ‘‘¡¢¡‘¡¦¡¡¡¥¡¢¡¡¡¡¢¦¦¢¡‘‘¡¡¡¡‘¥£¢¢¢‘¡¡¢¡¡¢¡¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¥£¢¡¡‘¡¡¡¡¡¡¡¡¡‘¡¢¢¡¡£¡¡¡¡¢¦¡¡¡¡¢¥¡¡¡¡¢‘‘‘‘‘‘¡¡‘¡¥¢¡¡¡‘¡¡¡‘¡¥Ôæýÿÿÿÿúꥥ¡‘‘¡¦¢¡‘‘¡‘‘‘¤‘€‘‘‘¤‘‘¡‘‘‘‘‘€‘‘‘¡¡‘‘‘‘‘‘‘‘}}‘‘‘‘‘€‘‘‘¡€‘‘‘€~}}€‘‘€€‘‘‘‘‘‘‘‘‘~€}}}}}€~€‘‘€}}€€}‘€}}}}}€}}‘}}}}}}}}}}}}}}}}‘}w}}}}˜èýÙ}àý×vvwv}w|}}}}vvvv}}vvv|vvvwvovv}vvvpppvvwvvvvvvvovpvouvvovvuvulvpvvvvvoooooluooooulovloltooouoououlllluuluvloltlCtuollltltlly×÷úߘutxÊõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=@=!Yóÿÿÿÿÿ÷_!!!!!!!! !!!!! ! !  !!!!  !    !  !  !!! !!!! ! !! ! !!!! 9qªõÿþÿþÿþÿþÿþÿÿÿþÿþÿÿþÿþÿÿþÿÿÿþæÓ   Ó×þþþþþþþþþþþþþþþüÿÿþÿþþþÿþþÿþûÖ}}}}}€‘}}~~~}}}~‘‘}€€‘€~}‘~}€}~‘~€‘‘‘‘€€~~~‘‘€€‘¡‘€‘‘€}‘¡‘‘‘¢¡‘€‘‘‘‘‘€¡¢‘‘‘‘‘¡‘‘¡¢¡¡¡‘¡¡‘‘‘¢‘¡‘‘¡¡‘€‘¢¢¡¡¡¡¡¡¡‘¡¡¡‘¡¦Ýþÿÿÿÿÿ楑¡¡¢¡¡‘¡¢¢‘¡¡¡¥¡¡¢¡‘¡¡¡¡¡¡¢¢¢¢¢¡¡‘¡¢¥¡¡¢¡¡¡¥£¥¢¡¢¢¢¡¢¥¡‘‘¡¢¦¥¡¥¡¡¢¥¡¡¡¡¡¢¡¡¡¢¡‘¡¥¡‘¡‘¡¥¢¡¤¡¡¢¢‘‘¡¡‘¡¢¢¡¡¢¡¡‘¢¢¡‘‘‘¡¡‘¡¡¦¡¥ÔëÿÿÿÿþøÚ¥¢‘‘¡¤‘¡‘¡‘‘‘¢‘‘¡‘‘¡‘¡‘‘¡‘‘‘‘€€‘‘¤¡‘‘~~‘‘¡¤‘‘¡‘~~~~~}‘‘‘€€‘‘~}}‘‘‘‘‘‘‘‘‘}~‘€‘€}}}€}~‘~}}€€}}}}}}‘‘‘}}‘€}}}}}}}}}}}}}}}}}wv}}ww‘èþ×}àþ×v}}}vvv}w}}vvvv}vvv}}vvvvppvvv}}vvvvpvvvvvvvvvvvvvvovvooovvvvpuovovvvvuouloupuvvvvullloulvoltluvvvutllllttlltlClltltllClu›èýòÆutC˜èýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_! !!! !! !!!!!! !! !!!! ! ! !!  !  !  !  !  !   !  !!   ! !! !$p¥íþþþþþþþþþþýÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿèÓÓ×þüþþþþþþþþþþþþþþÿÿüþþÿþÿþÿþÿúÖ}}}}}~€‘~}}}}}€€}~‘‘‘‘}‘‘}~‘€}}~}‘‘‘‘‘‘}‘‘€€‘~~¡¡‘‘‘‘‘‘~~‘‘¡¡¡‘~¡‘€€}€‘¡¡¡‘‘‘‘‘‘¡¡¥¡¡¡¡‘‘‘¡¡‘¡‘‘¡‘‘‘¡¦¥¡¢¡¡¡¥¡¡¡¤‘‘¡¢àþÿÿÿÿÿæ¡¡¢¥¡¡‘¡‘¡¢¡‘¡¡¢¡¡¢¡¡¡¡‘¡¡¢¥¦¢¥¦¡‘‘¡¢¦¢¡¡¡¡¡¦¦¡¢¢¡¡¥£¢¡¡¡‘¡££¡¡¢¦¢¢¢¡‘¡¥¡‘¡¢¥£¡‘¡¡¡‘‘‘¡¡¡¥¡¡¡¡¡¡‘¡‘¡¢¥¡¡‘¢¥¡¡¡¥¡¢‘‘‘¡¡¥¢¥¡¡‘šÓöÿÿÿÿþöÚ¡‘‘¡¡‘¡¥‘‘‘‘‘¡¡¡‘‘¡‘‘¡¡‘‘¡‘€‘‘‘¡‘‘‘‘}€‘‘‘¡¡‘‘}€~}}€€‘‘‘‘‘‘‘€‘€~‘‘‘‘‘‘€}‘€€€}}}€‘}€‘€}}}~}}}}}€‘‘‘€}€‘‘‘}v~}}}}}}}}}}}v}}}}}}}v}™èýÙvàþÙv}}}}vvw}wvvvv}vvvv}}vvvvvpvvvvvvvvvvvvvvvvvvvvvvvvvvovoovvvwvvoopovvvvpooovvvvuouooooovouvuoollvvuollCClllllllltllllCCl{Ùú÷΃uly×÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yòÿÿÿÿÿ÷_ !!!#!!!!!!!#!!!! !! ! !!!! !!  !  !!   !  !! !  !  ! !!! !   $q¥õÿþÿþÿþÿýÿýÿÿÿþÿþÿÿþÿÿÿþÿÿÿÿþæÓ    Ó×þþýþþþþþþþþþþþþüÿÿÿÿþþþþÿýÿþúÖ~~}~}}}~}}}}€‘~}~}}}€‘‘‘‘}}¡‘~€€‘‘‘‘‘¡‘~}€‘~‘}}‘‘€€‘¡‘‘€}‘¡‘~‘‘‘¥¡‘¡‘‘¡‘¡‘‘‘‘‘¡¡‘‘¡¡‘‘‘‘‘‘‘¡¢¡¡‘‘‘¡¡¡¥¢‘‘‘‘¡¡¡¡¡¡¡‘¢¢Ýþÿÿÿÿÿ륡¡¢¡¢¢¥¢‘¡¡¡¡¡¡¢¡¡¡¡¥¦¡¡¡¡¢¢‘¡¡¦¡¡¥¡¡¡¡¢¢¥¡¦¡‘¡¢¢¡¡¡¡¡¡¡¡¥¡¡¡¡¡¢¥¡¢¡¡¡¦‘‘¡¡¡¥¡¡¡¢¢¢¢¡¡‘¡¡¡¡¡¡¡¡¥¡¡‘¡¡¥‘‘¡¡¡‘¡‘¡¡‘¡¡¡¡¡‘‘‘¡‘‘¢­ÚúÿÿÿÿýíÔ‘‘‘¡‘¡‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘~‘¥‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€~€‘‘‘‘‘‘‘€}€‘€~}}~€€~‘~}}}~~~}‘‘€}}€€}}}}}‘€‘~}}}}~}}}}}‘}}}}}}}}‘~}}}}}}}}}}€}væÿÙ}àþÙ}vw}}v}}}vv}}}}wvvvvvv}ww}vv}vvvvvvvvvvv}vwvpvvvovvvuvvvvvvvpvpoulovovopolulovoooulvuoulloooulllulloulllllultlllllullužñýèvllñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@!!Zóÿÿÿÿÿ÷x!!!!!!!!!#!!! !! ! ! !!  ! ! !!   !    !!!!   !   !  !  !=qªíþþþþþþþýÿþýþÿÿÿÿþÿÿÿþÿÿÿþÿÿÿèÓ    ××þüþþþþþþþþþþþþþþÿÿþþþþÿÿþÿþÿúÖ~}~}}}}}}~‘~€‘‘}~~€‘‘~~}‘‘‘€~}‘‘~‘‘‘‘‘‘}~€~}‘¡~‘‘‘¡‘}‘‘‘¡‘~~~¡¦¡‘‘¡¡¥¡‘‘‘¡‘‘¡¡‘‘¡¡‘‘‘¡‘‘‘‘¡£¡‘‘¡¥¡‘‘¡¡¡‘‘¡¡¡¡¡¡¡¡¡¥ãþÿÿÿÿÿꦡ¡¥¢¦¦¦¢¡‘‘‘¡¡¡¥¡¡‘¥¦¥¦¦¥¡¡¡¡¡‘¡¥¦¦¡¡¡¦¦¦¢¢¡¡¢¡¡¥¡¡¡¡¡¡¡¦¢¡‘¡¡¡¥¢¡¥¡¡¥¦¡¡¡¡¡¢¡¡¡¥£¦¢‘‘¡‘‘¡¡¡‘¡¥¦¡¡¡¡¢¢‘‘¡¡¡¡¡‘¡¡¡¡¥¢¡‘‘‘‘‘¡¡¡‘‘§ãýÿÿÿÿýë§‘‘‘¡¡¡¡‘‘‘€‘€‘‘‘‘‘€}‘¤¡‘¡¡‘€‘‘‘‘‘‘‘€}€‘‘‘‘€€‘¡¡‘‘‘‘}‘‘‘}}}}‘~}‘€}}}€€€}}}‘‘}}}€}}}}€‘€~‘‘}}}}}}}~}}}v}~}~}€}}}}}v}}}}}}}€}}ëþÙ}‘ßþÙvvv}€}v}wvv}}wvvv}}vpp}}}v}vvv}vvvvvwvpvwwvv}uoppupvvvvvvvvvvvvvvloloovuuvuoovulooolooolouvulullllluuolluluoooltltlouƒßú÷Ì{uCƒßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!==;=Zóÿÿÿÿÿ÷_!;!!!!9;!! !! ! ! !!  !! !  !    !!    !!  !    !     !! =}ªõþÿþÿþÿþÿýþÿÿÿýÿþÿÿþÿÿÿþÿÿÿÿþæÓ  Ó×þþþþþþþþþþþþþþþþÿÿþÿþþÿüÿþÿþúÖ}~€€~}~}}}‘‘€~}~}}€‘~€~}~~~‘‘‘‘~~€~€‘€~‘‘€€¡‘‘€€‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘¡‘¡¡~‘‘‘‘¡¥¡‘‘‘‘‘¡¡‘‘¡‘¡¥¡¡¡¡¡‘‘¡‘¢¡‘‘¡¡¡¡¡¡¡¥¡¢Ýþÿÿÿÿÿꥢ¡‘¡¡¡¢¢¡¡¡¥¦¥¡¡‘¡¡¡¡¡¢¡¡¡¡¢¡¢¡¡¡¡¡¡¡¡¡¦¡¡¢¡¡¦¡‘‘¡¡£¢¢¥¢¢¢¢¡¡¡¡¢¢¢¡¡¡£¦¢¡¡‘¡¡¡¡¡¡¥¦¢¡¢¦¢‘¡¢¢¡¡¡¡¡¡¡‘¡¡¡¡¡¥¡¡‘‘¡¡¢¡¡¢¡‘¡¢¡¡‘¡¡‘¡¥¥­ëÿÿÿÿÿûꬡ‘‘‘‘¡‘‘‘‘¡‘¡¡‘‘‘€‘¡‘‘‘¡‘€€‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘€‘‘~‘¡‘}€‘€}~€‘‘€}}€‘}~‘€€‘}€¡‘€‘€~}~}}‘‘}}}€}}}}}}}}}}€}}}}}}}}}}}}}}}wv}}w}}vèþß}Ùýàv}vw}}vw}}vv}}}v}v}wvv}}vv}}vvv}wvvvvw}vvopvvpvvvvvpvvvvopuovoovvoouvuoooopulooupoouvuoulloullloulpllluulllolullllluÇõüá˜vouÇñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!9!!!Bóÿÿÿÿÿ÷_!!!! !!!!!! !!! ! !!!!!  !!!!    !!! ! !      ! !  ! !!   !9q¥õþþþþþþýýÿþýÿÿÿÿþÿÿþÿþÿÿÿþÿÿÿèÓ  ÓÓþüþþüþþþþþþþþþþþÿþþþþÿþÿþÿþÿúÖs~‘~}~}€€}}~€€€‘‘~€‘‘}}~}}}}‘‘‘‘}}}~‘‘€}~‘‘¡‘¡‘‘}‘¡¡‘‘¡¡‘‘€‘‘‘¡‘‘‘€‘‘¢¡¡¡‘‘‘‘€€‘¢¡¡‘‘‘‘‘¡¡‘¡¡¡¡¡‘¡¡¡‘‘¢¢¡‘¡¡‘‘¡¥¡¡¡¢¢¡Úþÿÿÿÿÿꥢ¡‘¡¡¡¢¥¡¡‘¦«¦¢¡¡¦¦¦¡‘‘¡¡¡¡¡¡¡¢¢¡¡‘‘¡¡¥¦¡¡¥£¦¥¡¡¡¡¡¥¢£¢¦¥¢¦¥£¡¡¡¢¡¢¢¡¡¡¥¦¢‘¡¡¡¡¢¢¡¢¢¢¢¡¡¡¡¢¢¢¡‘‘¡¡¡‘¡¡¡¡¥¦¡¡‘‘¢¥£¡¡¡¡‘¢¦¥¡‘‘‘¡¥¡¡¡¥Ôëÿÿÿÿÿûê‘‘¡‘‘‘¡‘¡¡¡‘‘‘€‘‘¡¡‘‘‘‘‘‘€‘‘¡¤‘‘‘‘‘‘‘‘¡¥‘‘‘‘‘~‘‘‘‘€‘‘‘€€‘‘€}‘‘‘}‘‘‘~‘‘‘‘¡‘¡‘}}‘‘€}}}}}}}}}}}}}}‘‘}}}}}}}}v}~}}}}}}vv}}}vèþßvÙÿÙ}}vv}}v}}}}v}}vvvvv}}}}wv}}vvvv}}}vopvwvpovvpuvvvvvvppvvovpvooooooovvolllouollovvllvuolllllllluvuoltuoolllltuolCllƒàüòÇuuCƒßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=9!!!Yóÿÿÿÿÿ÷_!! !!!!!!!!!! !!! !!!!!! ! ! !!!   !  !  !  !!  !!  !! !! ! !!=qªíÿþÿþÿþÿÿýþÿÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿæÓ Ó×þþþþþþýþþþþþþþþþÿÿÿþþÿþÿþÿþÿúÕ}~‘}}}}‘‘€€~}~}€}}~€‘‘€}‘€‘‘‘}‘‘‘‘‘‘€‘‘‘€‘‘‘‘‘¡‘~‘¡‘}‘¡‘‘‘~‘‘‘‘€‘‘¡‘¡‘‘¡‘‘¡‘¡‘¡‘¡¡‘¡¡‘¡¤¡¡¡‘‘¡¡‘¡¡¡‘¡¡¡¡¡£¢‘‘¢¡¡¡‘¡¡¡Úþÿÿÿÿÿꥢ¡‘¡¥¡¡¡¡¢‘¡¢¡¥¢¢¡¥¡¡¡¢¢¡¢¡¢¡‘¦¦¡¢¡‘¢¡¡¡¡¡¡¡¡¡¡¦¡‘¡¢¡¥¡¦¦¡¡¡¢¡¡¢¡¡¡¡¢¡¡¢¦¡¡¢¦¡¡¡¡¡‘¡¦¥‘‘¡¡¡¡£¥¡¡¡¡¡¡¡¡¤¡¡¡¡¡¡¡¡¢‘‘¡¡‘‘¡¢¡‘¢¡¡¡¡‘¡‘¡€¥ÖõÿÿÿÿÿøÚ¥‘¡‘¡‘‘‘¡¡¡¡¡¡‘‘‘‘‘‘‘‘‘¡‘‘¡‘€‘‘‘‘‘~‘‘¡€}‘€‘}‘‘‘‘‘}~‘‘}€€‘‘}~~}}€~}}‘~}}~}}}€}~€}}‘‘}}}}‘}|}}}‘}}~}}}}~}v}}}}}}}}}vv}}}}‘æÿà}Ùþà}}}}}}}v}vvv}}v}vvw}vvvv}vvvvvvvv}vvvvv}vov}vpvovvvwwvuvoovovvvpovpvvuvvvoouluvovvlooooouoouoolllulCouoolulllulluÇ÷ú߃ulvÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_!!! !! ! ! ! !!! ! !!! ! !  !   !  !    !  !   !! =w¥õþþþþþýýýþþýÿÿþÿþÿÿþÿþÿþÿþÿÿÿèÓ!!!  ÓÙüþþýþüþþýþþþþþþþÿþþþÿþÿþÿþÿþúÖŽs}}}}~‘‘‘‘‘}~}~~~~€‘‘~}~‘‘‘‘€~‘‘¡‘‘‘~~‘¡‘€~€‘‘¡¡~‘¡‘~‘¡‘€‘~€¡¡€‘‘¡‘‘‘¡‘¡‘‘¢¢¡¡¡‘‘‘¢¡‘¡¡¡¥¡‘‘‘‘‘¡¥¢¡¡‘¡¡¢¥¢¡¡‘¡¡¡‘‘¡¡Úþÿÿÿÿÿꥢ¡¡¡¢¡¢¡¦¥¡¡¦¢¦¦¥¡‘¡¡¢¢¢¡¥¢¦¥£¦¦¡¥¢¢¡‘‘¡¢¥¡¡¡¢¦¢¡¡¡¡¦¦¢¢¢¢¡¥¢¥¦¢¡¡¡¡¡¡¡¥¦¡¡¦«¥¡¡¡¡‘¡¢¢¡¡¡¡‘‘¡¡¡‘¡¡¡¢¦¡¡¡¡¡‘¥¦¥¢¡‘‘‘‘‘‘‘¢‘¡¢£¡‘¡‘‘‘‘¡¡¥¨ÚûÿÿÿÿþõÔ¡‘‘‘¡‘‘¢¥¡¡¤‘‘‘‘‘¡¡¡¡¥‘‘‘‘‘‘‘‘€€€€‘‘‘€~}‘‘‘‘‘‘€}~€~~‘‘‘}}}~}€}}}}}}}}}}~€}~‘‘€‘‘}~}~€}}}}~}}}}}}}}}}}}}vvv}}}vv}}}}}™æÿà}‘Ùÿß}}}}wvvvvvvvv}}vv}wvvvv|}}vvvvvvv}}}vvpvvvvvvpooovv}wvvoovvovovvoovvvovvoolllvvuvoluluvlouupolllllllllultolllloƒèüèvluñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿúx!!!!! !!! !!!!! !!! !! ! ! !   ! !!!  !  !  !!  !! !  ! !!   !  =qªõþþÿýÿýÿýÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿþÿàÓ!$  Ó×þþþþþþþþþþþþþþþþÿÿÿþþÿþþÿþÿÿúÖ}}€€~}~}~‘‘€}}}}‘€€~‘‘€~}~~€‘‘~‘~€}~‘‘‘‘¡‘~~‘‘‘‘€~‘‘‘‘‘¡‘€‘‘‘¥‘‘‘¡‘‘‘‘‘‘‘‘¡¢‘‘¡¤‘‘¡¥¡‘‘‘¡¡¡¡¡¢¡‘‘¡¡¡¡‘‘¡¡¡¡¡¡¡‘¢¢‘‘¢¥Ýþÿÿÿÿÿꤡ¡¡¡¢¡¥¡¢¢‘¡¥¡¢¢¢¢‘¡¢¦¡¡¡¡¡¡£¢¡¦¡¡¢£¢‘¢¡¡¦¡¥¡¡¡¡¢¢¥¡¡¡¡¡¡¡¡¢¢¡¡¡¢¥¢¡¡¡¡¡¡¡¡¥¦¢¡¥¡¡¡¡¥¢¡¡¥¡‘¡¥¢¡¡¡¡‘¡¢¢¡¡¡¡¡‘¡¡¡¥¡¡¡¡‘‘¡¥¡‘¡¥¡¡¡¡¡‘‘¡¡¡¡¡­àþÿÿÿÿýõ§‘¡¡‘€‘¡‘‘‘‘‘¡‘‘‘‘‘¡‘‘‘~‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘~‘‘~€‘~€€€‘‘‘‘‘‘€‘}€}}~}€~~}}}€€}~}€}}}}}}}‘}}}}}}}}}}}}}}€}}}w}v}}æÿà}×ÿàwv}}v}v}vv}vvv|v|v}}vvvvvvvv}}vvvvvvvvvvvvvvvvvvvvvpvvvovwvovoouvvvvvuoulvvvuvloovvolovvllvuouoloulooullouolo{Ì÷÷Ê{ulƒßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!9!Cóÿÿÿÿÿ÷_!!!!!!! !!!! !! !!! !  ! ! !! !!  !       !  !   !! !q­íÿþýÿýÿþÿþþýþÿþÿÿþÿþÿþÿþÿþÿÿÿèÓ$      ××þüþþýþþþþþüþþþþþÿÿüþþÿþÿþÿþÿúÖŸŽ~‘‘~}}}}}€~}}}}~~€‘‘‘‘‘‘~€‘‘}~‘~}€‘¡‘‘¡‘€~¡‘‘‘‘‘‘€‘‘‘¡¡‘¡‘¡‘‘‘¡‘€‘¢¡€€€‘‘¡¡‘‘¡¡¢‘‘¡‘‘‘‘¡‘‘¡¢¡¡‘‘¡¡¡¡‘‘‘‘¡¡¢¢¡‘¡¡¡‘¦¦àþÿÿÿÿÿꥡ¡¡¡¡¢¢¡‘¡¡‘‘¡¢¡¡¢¡¡¡¡¡¢‘‘¡¡¥¦¥£¢¢¡¥¢¢¦¡¡¢¡¡¡‘¡¥¦¥£¡‘‘‘‘‘¡¡¡¡¡¡¢¦¦£¡¡¦¡¡¡‘‘£¦¢¢¢¢¡¢¥¢¡¡¢¦¢¢¢¢¡¡¦¥‘‘‘¡¥¢¡¡¡‘¡¢¢¡¢¢¢¢‘¡¡¢¡‘‘‘¡¡¡¤‘¡¡¡¦‘‘¡¡¡™§ëÿÿÿÿÿý륡‘€‘~~~‘‘‘‘‘‘¡‘‘‘‘‘‘~‘¡‘‘¡¡‘€€‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘€~}}~‘‘}}}}‘‘¡‘¡‘‘}~‘€}€€‘}}}‘€‘‘}€}‘‘}}}}}}‘€}}}}}v}}‘}}}}‘}}}}}}àÿæ}}×ÿà}}|}}vvvvv}}}vv}v}}}}}}}vpvv}vvvvpoppvwvpvvvvvvpvvvpvvvov}povloouwvvoloopvvpoouvvoovuvvvluvvvvvluouuuoluuuou˜èüß”tC{×÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!!!!!!! !! ! !!!!!    !!!  !!!  !! !  ! !!   ! ! !!  ! ! !  !!9}ªíþþÿýþýþýþþÿÿÿÿþÿÿþÿþÿÿÿÿÿÿþÿàÔ   Ó×þþþþýþüþþþþþþþþüÿÿÿÿþÿþÿþÿþþûÖ~‘~}}~€€}~~~~‘‘‘}}~€‘‘€€~~~€~}¡‘~}‘‘‘€€€‘€‘‘‘€‘¡‘~‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘¡¡‘¡¡‘¡¡¡¡‘‘¡¦¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥¡¡¡¥Ýþÿÿÿÿÿ楑¢¦¢¡¡¢¡‘¢¢¢¡¡¢¢¡¡£¥¡¥¢¢¡¡£¢¡¡¢¡¢¦¡¢¡¡¢¡¢¦¢¢¡¡¡¦¢¡¢¢¢¡¢¡¡¢¢¥¦‘‘¢¢¢¥¡¡¡¦¢¡¡‘¡¥¡¡¡¢¡¡¢¢¡‘¢¢¥¢¢¢¡¢¡¡¡¡¡¡¡¡¡¢¥¡‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘¡¡¡¥¢‘‘¡¡‘‘¥Üíÿÿÿÿÿû॑‘‘¡‘‘¥‘‘‘¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘~‘‘€€‘}€‘‘~€‘‘€‘‘‘€‘‘‘‘}~€€}}€}}~}}~‘}}}}}€}}}~}}}}}}}}}}}}}}}}}}}}}}v}}àÿè}Óÿè}w}v}}vv}}vw}}vvvv}}vvwvpvv}vvw}vvvvvvwwvvvvvvvovvvuvvvlo}vvvpvllvwlvouovouvouooouooouooooououlullllululll{×÷òž{ouñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ==!!!Cóÿÿÿÿÿ÷_!!!!! !!!!!! !!! !! ! ! !! ! ! !!  !  !  ! !   !  !  ! !  ! ! =qªõþþýÿþÿþÿþþýÿÿþÿþÿÿÿÿþÿþÿþÿÿÿèÓ$    Ó×þüþþþþþþýþþþþþþþÿÿüÿþÿþþÿþÿÿúÖ}}}~‘¡‘~}}~‘‘‘‘}}}}~~€‘‘€‘€}}‘‘~}}}}}‘¡‘}‘~€}‘‘‘€~‘¡‘~€€‘¡‘‘‘¡‘‘‘}‘‘¡¡‘‘‘‘‘‘¡‘‘‘¡‘‘¡¡¡‘‘¡¥¡‘¡¡¢¡¡¡¢¡¡¥¦¥¡‘‘¡££¢¡¡¡¡Úþÿÿÿÿÿê¡‘‘¥£¥¦¢¢¢¢¦¦¢¢¦¦¢¢¥£¦¦¦¢‘¡¥¢¢¢¡‘¡¦¢¡¢¡¡¢¥«¦¥¦¡¢¦¢¦¦¦¦¦¥¡¢¦¡¡¡¡¡£¢¢¦¢‘¢¦¡¡¡‘¡¡‘¡¡¡¥¢¡¡¡¡¢¦¡‘‘‘¢¡¡¡¦¢¢¢¡¡¢¢¢¢¡¡¢¡‘‘‘¢¥¡¡¢£¡¡¡¡¡¡¡¥¡‘¡¡‘‘¡‘‘¡¡¡§ÔõÿÿÿÿÿûÚ‘¡¥¡¡¢¡‘‘€‘‘¡‘¡¡‘€‘¡¥‘~€‘‘‘¡‘}}‘‘€€~€‘‘‘‘}‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘€€€~€‘}~}~}}€}}€‘‘~‘‘}}}‘}}}}}}‘}}}~‘}}}}}}}}w}}}v}}™æÿè}}×ÿè|vpv}vvvv}}}}}vvvv}}vvpvpv}vvvvvvv}}vvvvvvvvvvvvvvovvollv}wvvvvvovvvuvlllooollupoollolluuoloouooolllllllo›ñ÷Ì{uu”ßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!@==Yòÿÿÿÿÿ÷]!9!! !!!!@!!!!!!!!!!!!! !!!  !!    ! !!! !  !   ! !   !!  !=qšíÿþÿþþþýþþþÿÿÿþþÿÿþþÿþÿÿÿÿÿÿþàÓ  Ó×þüþýþýþþüþþþþþþüÿÿÿþÿþÿþÿÿþÿúÖ~~~~‘~}}~€‘~}~~~~~~€~~}~‘€‘‘‘‘}~‘‘‘‘‘‘‘‘‘‘€~‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘¡‘‘‘¡¡‘‘¡¡¡¡‘‘¡¡‘‘¡¡‘‘¡¡¡¡¡¥¡‘¡¡¡‘¡¥¢‘¡‘¡¡¡¢¢¢¡‘‘¡¥¡¡¡£¡¡Úþÿÿÿÿÿꥡ¡¢¡¢¡¡¡¡¢£¢‘¡¥¢¡¢¡¡£¢¥¦¡¡¡¡¡¢¡¡¥¦¡¡¢¡¢¢¢¦¢‘¡¡¡¢¡¦¢¢¥¢£¡¡¡¥¡¡¢¡¥¢¢¢¡‘¢¦¥¢¡¡¡¢¡¡¡¡¢¢¢¡¡¡¡¢¢¡¡¡¡¢¡£¥¡¡¢¡¡¡¡‘¡¡¢¢¡¡¡‘¡¦¡¡¡¥¡‘¡¡¡¡‘¡¡‘‘¡¡‘¡‘‘¡¡‘‘¢¦¥Ô÷ÿÿÿÿþõÖ¡‘‘‘‘¡‘‘‘‘‘€‘¡‘~‘¡‘‘‘‘‘€‘‘~}‘‘‘~€€‘€‘¡‘~€~€‘‘‘‘}‘}‘‘€~~}}€€‘‘}~~}}}‘‘}}}}}}}}‘}€€€‘}v}‘}}}}}‘}}}}}}}}}}}}v}}àÿèw}Óÿè}wv}}}}vvv}}}v}vvv}v}wvvvvvvvvvvvvv}vvvvvpvvvovvvlvwvovoovvvvoovvoovvovvuovuououuoluvvloputllloououloulvÌ÷ߘul{×÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!99!Zóÿÿÿÿÿ÷_!!!!! !!!!! ! ! !! !! ! !! !!! ! ! !  !   ! !  !  !  !      !=}¥õýþþýÿþÿþþþþÿÿÿÿþÿÿÿÿÿþþÿÿýÿÿèÓ        Ó×þþþýþþþþþþþüþþþþÿÿüþÿþþÿþþÿþúÖŽ}~‘€~}}}~~}}}}}}~‘‘~}}~~€‘‘~~‘¡‘€‘¡¢¢¡¡‘}~¡‘¡‘¡¡¡¥¡‘¡¢¡¡¤‘‘¡‘~¡¡¡¡‘¡‘¡‘¡¡¥¡‘¡¡¡‘¡¡¥¢¥¦¡¡‘‘‘‘¡¡¡¢¡‘‘¡¥¡‘‘¡‘‘¢¡‘‘¢¥¡¡Úþÿÿÿÿÿ뫦¦¦¦¢¢¡¡¡¡¥¢¡¡¡¡¢¢¢¡¡¡¡¢¢¡‘¥£¢¡¡¢¢¢¡‘‘¡¡¡¡¡¡¡‘¡¢¥¦¡¡¢¢¦¡¢¦¦¦¦¢¡¡¢¡¡‘‘¡¢£¦¦¥¦¦¦¡¡¡¡¢¥¡¡‘‘¡¡¡¡¡¢¦¢¥¡‘¡¡¡¡¡‘¡¡¢¥¢¡¥¡¡¥¡‘‘‘‘‘‘¡¡¡¡¡‘‘‘¡¡‘‘‘‘¡¦£‘‘¡¥¡¡šÚûÿÿÿÿþõ§‘}~‘¡‘‘‘‘‘‘‘¡‘€€‘‘‘‘‘‘‘‘‘}‘¡¡‘}€‘¡¡‘‘}‘‘}~~‘‘€‘~}€‘~€~}}€€€‘}‘}€~}}~~}~}}}}€‘}}}‘‘}}‘~}}}}}}‘}v}}}}}vvvw}‘àÿè}vÊÿë}}}}}}}v}}}vvvvvppvv}}}wvvvvv}vvvpvvvpvvvpvwvvvvvvvpvvvlvvvvvvvoloopv}vovvoovvllvovvvvlluoltuvoovvvul{çèuluñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zòÿÿÿÿÿ÷_!!! ! ! ! !!! !! !!! !   ! ! !!    !! !   ! ! !   !! =ެíÿþÿþþþýþþÿþÿÿþþÿþÿþÿþÿÿÿþÿÿÿàÓ $$8>        Ó×üþýþþþþþýýþþüþþüÿÿÿþþÿþÿÿþÿÿúÖ~}}}~€~~€~~}~~€‘~~‘}~~€‘‘‘‘}~‘‘~~‘‘‘‘‘‘~~‘‘‘‘‘‘‘¡‘}‘¡‘¡‘¡‘~‘‘‘¡¡¡¡‘‘¡¡‘¡‘¡‘‘¡‘¡¡‘‘¡‘¡¡¡¥¡‘¡‘‘¡¡¢¢‘‘¢¢¢¢‘¡¡¡¥¢¡¡¡¢‘¡Ýþÿÿÿÿÿ榢¢¢¢¡¡¥¡‘¡¦¢¡¡¢¢¢¢¢¢¥¢¡¡¡¢¢¢¢¢¢¢¡¡¡¦¡¡¢¢¢¡¢£¡¡¡¦¢¢¡¡¡¦¥¢¡¢¢¢¦¡¡¡¡¢¢¥¦¡¡¢¦¢¢¢¢¢¢¡¡¢¡¡¦¢¡¡¡¡¦£¡¡¥¢¢¢¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡¡‘¡¡¡‘¡¦¡¡¡‘‘¡¡‘‘¡¡¥¡‘¡¥¡‘‘¡¡¡¡‘‘§Úýÿÿÿÿý륑‘¡¥‘‘‘‘‘~‘¡‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘~‘‘‘‘‘~€~‘€€€‘‘‘‘€}~€€¡‘}‘‘€€}}~~}€}}€‘}€}}€}}}}‘}}}}}}~v}}}}}}}}}}}}}}}€àÿõ}}Óÿè}}}w}}wwvw}}vv}}vvvv}wvvwv}vvvvww}vpvvv}vvvpvvvvvvvlvvvvvvvvvvovvvuvovvulvwoluvvouloopuvlllloouotlouvÇçÇ{voƒáýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Yóÿÿÿÿÿ÷_!!!!! !! !!!! !!!!!!!! !!!   ! !   !  !  ! !!  !   !   ! !=qªõýþþþÿþÿþþþýÿÿÿÿþÿÿþÿÿþþÿÿþÿÿèÓ $jƒƒ_j!   Ó×þüþýýüþþþþþþþþþþÿÿþÿþÿþÿüÿÿþúÖ}}~}‘‘€}~‘‘}}‘‘€~~~}}}‘‘‘~‘‘~~‘‘~~‘}}}}‘‘‘~}~‘¡‘‘‘‘~¡¡€~‘¡‘~€‘¡¡‘¡¡‘‘‘¡¡£‘‘‘¡€‘¡¡‘‘¡‘‘‘¡¡¡¡¡‘¡¡¢¥¡‘‘¡¡¢¥¡‘‘‘¡¡¡¡¦¦¦£êþÿÿÿÿÿꥡ‘¡¡¡‘‘¡‘‘‘‘‘‘¡¡¡¡¦¦¦¡¡¢¦¥¡¡¡¡‘¡‘¡¡¢¡¡¦¢¡¡¦¥¢¢¥¢¢¦¡¡‘¢¡¡¢¡‘¡¡¡¡¦¢¦¦¦¦¦¥¡¡‘¢¥¡¡£¦¦¢¡¡¢¢¥£¦¦¦¥¡¡¡¡¡‘‘¢¥£¢¡¥¡¡‘¡¢¡¡¡‘‘‘¢£¢¡¡¦¥¡¥¡¡¢¦¡¡¡¥¢¡‘‘¡¡¡‘‘€‘¡‘¡¡‘¥æþÿÿÿÿûॡ¢¡¡‘‘‘}€‘¡‘¡¡¡‘‘~€‘‘‘‘‘~~‘€‘‘€}‘‘€}~‘‘‘€}€€}}}‘‘~}}‘¡‘‘‘~}}‘€}‘€}‘‘‘‘‘}|}}~‘}}€}}}}}}}}}}v}‘}}€€}}‘}ßÿõv}Óÿè}vvw}}}}vvv}w}}}}}}}v}vvv}}}vvvv}}vvvvvv}}}vovvvv}vpovvvvvvuoovvvvollvoolo}vlovvvlouvupollovvolllltvʘvv˜ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ===!!Yõÿÿÿÿÿ÷_ !!!!!!!!!!! !! !   !! !!!!!  ! !  !! !!   ! !  ! ! !! ! !! !  !pšíÿþÿýþþþþþÿþÿÿýÿþÿþÿÿþÿÿÿþÿÿþæÓ  >B–×™_    Ó×þþýþþþüþþþýþýþþüÿÿþÿþÿþÿÿÿþÿúÖ~}}~‘‘~~~}}~€~~€‘‘‘~~~€~~~‘‘~‘‘~~‘‘~~‘‘‘‘‘‘‘‘‘~‘¡‘€‘¢‘~‘¡‘¡¡‘‘‘‘‘‘¢¡€¥¡‘‘¡¢‘‘¡¡¡¢¡‘¡‘¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¡¡¢¢¡¥Ýþÿÿÿÿÿꥡ¡¢¡¥¡‘¡¦¢‘¢¢¢¢¥¢¢¡¢¡¢¡¡¦¦¡‘£¥¢¦¡¡¥¦¡¡¥¢¢¡¢¢¢¢¢¢¢¦¥‘¡¢¢¢¢‘¡£¥¡¡¦¦¡¥¢¡¢¡¡¡¢¢¢¥¢¥¢¡¡¡¡¥¢¢¥¢¥¡¡¡¡¢¢¡¡¢¡£¥‘¡¢¥¡¡¢¥¡¡‘¡¡‘¡¥¡¡¡¡¡‘¡¦¡‘¡¡¡‘¡¡¡¡‘¡¡¡¡‘‘¡‘‘‘‘‘¡¡§ëþÿÿÿÿûÚ¡‘¥¡‘‘‘‘‘‘‘‘‘‘‘‘~}‘‘‘‘€€‘‘‘~‘‘‘‘‘‘~‘€€‘‘‘‘‘€‘~€‘€€‘}€~~‘}}‘}}‘‘}}}}~€}}}}}‘}}}}}}}}}}}}}v€}}}}}}}àÿõ}}Óÿô}}w}v}}v}v}}vvv}}}}}vvvv|vwvvvvvvvv}vvvvvvvvvvvpvvvvvvvvvouvvuovvlvoouoouvvulopovvoooouuuuoovullulovvuo{ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!9!!!Bóÿÿÿÿÿ÷_!!9! !!! !! !!! !!  !!!!!! ! !  !!!  ! !    !!  !  !!   !   !9qªõýþþþþþþþþþýÿÿÿþÿþÿþÿÿþÿþÿþÿÿèÓ     8ƒÇèÄ_>       ÓÓüþüþýþüþþþþþþþþþÿÿüÿþÿþÿüÿüÿúÖŸ~}~}}~€}}}}~‘‘‘‘‘‘~~‘€€~‘}}~‘‘‘~‘~~‘¡‘‘‘}~~¡¡‘~~‘‘¡‘‘‘‘‘‘‘‘¡¥¡‘‘‘‘¡¢¥‘‘¡‘‘~‘¦¥¡¥¥¡¡¡¥¢¡‘‘‘¡‘‘¥¢¡¡¡¡¦¦¢¡¡¡¢¦£¢¥¡¡¡¡¡¡Úþÿÿÿÿÿ楣¦¡¡¡¡¡¦¦¢¢¢¢¦«¢¡¡¡¡¥¢¢¡¦¦¡¡¦¦¦¦¥¢¢«¦‘¡¢¦¡¢¢¦¦¡‘‘¢¦¢¡¦¥¢¢¡¡£¢¦¥¢¦¥¢¡‘¡¥¦¦¦¡¡¡¡¡¡¡¡¡¥¦¦¡‘‘¡¡¡¥¦¦¢¥¦¢‘‘¡¡¢¦¦¡‘¡¢¡¦¦¢¡‘¡¡¡¡¡¡¡‘‘¡¢¡¡¡¡‘‘¡¡¢¡‘‘‘¡‘¤¡¡‘~‘¡¥¡¡¥§ëÿÿÿÿÿõÔ¡¡¡¡¡‘‘‘¡‘‘‘‘‘‘‘~‘‘‘‘¡¡‘}€‘‘~}~€}~}}~‘‘}‘‘€}}}‘‘‘}}}}}‘‘‘‘‘}}}}}}}}‘}‘}}€‘‘}€‘}}|}}}}}v}}|}}~€wv}}ßÿõ}Òÿèwv}}vvvvv}}vv}}|vv}vv}vvvvpv}vpvvv}vpvvvpoov}}wvpvvvv}vvvoovvoovvvvvopvvvvvoovvuvolollollllltoluloltuƒßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!9!Y÷ÿÿÿÿÿ÷x!!!!!! !!!!!!! !!! !  ! ! ! !! ! !!  ! !  !!! !  !   !   =wªíÿþÿþÿþÿþþÿþÿÿþÿþÿÿþÿþÿÿþÿÿþÿàÓ  =Z†–†C   ÓÙüþþýýýþþüþýþýþþüÿÿÿþþÿþÿÿÿÿÿúÖ~~€‘}}~~~}~€‘‘‘~~~~‘~~‘~~€¡‘~‘‘€‘‘¡~~~‘‘‘‘~‘‘‘‘‘‘‘‘‘¡‘¡‘‘¡¡¡‘¡‘‘¡¡‘¡‘‘‘¡¡¡¡¡¢‘‘¡¢¡‘¡‘¡¢¡¡¡¡¡¡¡¡¡¡¡¥¡‘¡£¥¡¡¢¡¥¢¢¢Ýþÿÿÿÿÿ襢£¥¡¡¡¢¢¡¡¦¢¡¥«¥¢¢¡¢¡¢¡¡£¢¢¡¥¦¡¡¦«¢¢¢‘¢¦¢¡¢¢¢¦¢¢¢¢¢¢¢¢¢¡¢¡¡¢¢¦¦¢¢¢¢¡¡¢¢£¥¢‘¡¦¡¡¡¥¢¡¢¢¢¡¡¢¡¡¡¢¢¢¡¢¢¡¡¡¡¢¢¢¢¡¡¡¢¡¡£¥¡‘¡¡¡¢¡¡¡¡¡‘¡¡¡¢¡¡‘¡¡¡¥¡¡‘‘¡¡¡¡‘‘¡¡¡‘¡‘‘¥§õÿÿÿÿþõ¬¡‘¡‘‘‘¡¡‘‘€€¡¡€€‘‘‘‘‘‘‘~‘‘‘€‘‘€‘€~€€‘~€¡‘}~€€€€‘‘}}€}‘‘€€‘‘}}}‘}€}}}}}~}}€}}~~}}}}~}}}}}v}}}}}}}€Úÿ÷}Óÿèv}}}}}}}vv}}vv}}}w}}vvvv}}vvvvvvvvvvvpv}vovvvvvpvwvuvvvvvvovvppvvvvolvvvovuuvvvovooullvulollolllolužúýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Bóÿÿÿÿÿ÷_99!!! !!! ! !!!! ! !!! !! !!!!   !        ! !!!  !!   !  =}¥õþþþþþþþþþýýþÿÿþÿþÿÿþÿþÿÿþÿÿÿèÓ   7ZCB>!      Ó×þüþýþþþüþþþþþþþþÿÿþþÿþÿüÿüÿþúÖs~~}~}~}~¡¡‘‘~}}~‘‘‘‘‘‘~~‘¡‘¡¡~}~‘¡‘‘‘‘¡‘‘‘~~}¡¡¡‘‘~‘¡¡¡‘¡‘‘‘¡¡‘¡¡‘‘‘‘‘‘¡‘¡¢¡¡¡¡¢¡‘‘¡¡¡¢¡¦¦¡‘¡‘‘‘‘‘‘‘¡¢¢¡¡¦¦¡‘‘¡¢¡¡¥ãþÿÿÿÿÿꦦ¥¦¦¦¦¢‘‘¢¦¡¡¡¦¦¡¡‘¡¡¢¡¡¥¢¡‘¢¦£¡¦¦¡‘‘¡¦¦¡‘¡¡¢¦¡¢¢¢¡¡¦¦¢¡¡¡¡¡‘¢¦¡¢¢¢¦¦¦¢¡¢¡¡¦«¦¥¦¦¡¡¢¢¡¡¢¡¢¦¢¡‘‘¡‘‘¡¢¢¢¥¡‘‘¡¥¦¡‘‘‘¢¡¡¥¢¥£¡‘‘‘‘‘‘‘‘¡¢¡¡‘‘¡¡‘¡‘¡¡¡‘‘‘‘¥¡‘‘‘¡‘¢¦¨Ôõÿÿÿÿþ륑¡‘‘‘‘€¡¡¡¡¡‘€‘}}~‘‘‘‘~}}‘¢¡‘‘‘‘‘}}‘‘‘}}~‘‘}~‘‘€}}€‘}}}‘}‘‘~}}~}}}}€‘}}}}}}}‘‘€€}}}€‘}v}v}}vvv}‘ßÿõ‘‘Óÿñ}}}v}w}|vvvvvvvvvv|}}wv}}}}vv}vvvvwvvvvvvvvvpopoovoopvoooov}vvupouvovvvooollvlluvvvolovvvvvvvvuuuoo˜òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!B÷ÿÿÿÿÿ÷_!9! !!! !!!! !! !!!    ! !!   !! !    ! ! !!! ! ! ! !   =wªíÿýþÿþþþþÿýÿÿÿþÿÿþÿþÿþÿÿþÿÿþÿæÓ ==      Ó×þþýþüþþþþüþþýþþüÿÿþÿþÿÿÿÿþÿÿúÖ}‘¡}}~}~€‘‘}~~~~‘‘~‘‘‘~~€‘‘‘~‘‘¡‘~~¡‘‘‘‘‘~~‘¡¡¡‘~‘¡‘¡‘¡¡‘‘‘‘‘¡¡~‘¢¢‘‘‘‘¡¡¡¡¡¡¡‘¡¡¡¥¡¡¡¡¡¡¡¢¡€¡¡¡¡¡¢¢¡¡¢¥¡¡¡¢¢¢¡¡Ýþÿÿÿÿÿꦦ¢¡¢¦¢¢¡‘¡£¥‘¢¦¢¢¡¢¥¡¢‘¡¢¢¢¢¢¥¢¢¢¦¡‘¢£¥¢¢¢¡¡¢¥¢¡¢¦¦¡¢¦¥¡¢¢¢¡¡¢£¢¢¢¦¢¡¢¥¢¡¢¢¢¢¢¡¦¦¢¡¡¦¡¥¡‘¡¦¢¡¡¡¡¡¡¢¥¡¡¢¢‘‘¡¡¦¥¡¢¡‘¡¡¡¡¡¥¡¢¡‘¡¡¡‘¡¡¡¥¡‘‘¡¡¡¡‘‘‘¡‘¡‘‘¡¢‘€¡¡¡‘¡¡‘¤Ô÷ÿÿÿÿýॡ‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘~€€‘‘‘€‘~‘‘‘€‘‘‘~€~€‘~‘‘‘‘}}‘‘~~~~€€}}}}}€~}}‘}}}~}}}}}}}}}}}}}}}}}}}}}}vÚÿ÷}Òÿõ‘}v}}}v}w}}wvv}vvvvv}}vvv}vv}}vvvvvvvvvvvvvvvpuvvvvpvoovpvvvvvvoooovvuvooulovvlovuvvoolovvlouuuooolu{ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!@óÿÿÿÿÿ÷_!!! !!!!! ! !! !!! !! !  !!! !!   !  !   !  !  !   !    !   !=qªíÿþþþýÿþþþýýÿÿþÿþÿýÿþÿþÿþÿþÿÿæÓ     !          Ó×üþüþþþþüþþýþþþþþÿÿþÿþÿüÿþÿþÿúÖs~€~~}}~‘‘}}~}}~‘‘~~}}}‘~}}}~~}~‘~}‘¡~‘¡~‘¡‘~‘‘‘‘~~‘¡¡‘‘‘‘‘‘~~‘¡‘~¡¡‘¡‘‘‘‘¡‘‘‘‘¡¡‘¡‘‘¡¢¥¡¡¢¦¥¦¥¦¢¡¡¡‘‘¡¡¡¢¥¢¢¦¡‘Úþÿÿÿÿÿ楡¡‘¡‘¡¢¦¢¢¥¢‘¡¡¡¥¦¦¢¢¦£¦¦¢¢¢¦¢¡¡¡£¦¦«¢¢¡¦¦£‘¡¢¦¢¥¦¡¡¡¢¦¢¢¢¦¥¢¦¦£¡¡¡¡££¢¡¢¦¢¡¡¡¡¡¢¦£¢¢¢¢¢¡¡£¦¥£¥¦¦£¦¢¡¡¥¦¢¡¢¡¦¦¥¢‘¡¡¡¡¡¦¢¡¡¡¡£¡¡‘¡‘‘¢¡‘¥¦¢¢¦¡¡¡¦¦¥¡‘¡¡‘€‘‘‘‘‘¡¡‘€™ÚûÿÿÿÿûÚ¡‘¡‘‘€€€‘‘‘¡¡‘‘‘‘~‘‘‘‘‘€‘~}}}€‘¡‘‘}}‘‘‘‘}€‘}~€}€‘}}}}}}‘‘‘‘€‘}}}€€}}‘‘}}}}}}}}v}}}v}€‘‘}}}}Ùÿõvžÿôvv}}vvvv}}}}}}}}vvvvv}wvp}}w}vvvv}}}v|vpvvvpv}}vooovvvvoovlllovovvovvoovvvoopoopoovpvvullCllluvououÇúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!@!Zóÿÿÿÿÿ÷_!!!=!! !!!! !!!! ! ! ! !!!  ! !  !  ! !! ! !!!!!   ! ! !  !!!  =ެõþþþþþþþþþþÿÿþÿþÿþÿÿÿþÿþÿÿÿþÿæÓ           Ó×þþüþüþþýýýþüþþþüÿÿþÿþÿÿÿþÿÿÿûÖ}}~}~}}‘‘~~€‘}}~‘‘‘~}~‘‘~~~€~~¡¡}~¡¡€‘‘‘€~‘‘¡‘~~‘‘‘‘‘~¡¡‘~¡¡¡~‘¡‘‘‘‘‘¡¡¡¡‘¡‘‘¡¦‘‘¡¡¡‘¡¡¡‘¡¢¡‘¡¡¢¦¢¡¡¡¡¡¡¡¡¡¡¢¢¡¡¢¡£¡Úþÿÿÿÿÿꥡ¢¦¡¡¡¡¢¦¢¡¢¢¡¢¢¡¢¡¡¥¢¦£¥¢¢‘¦¦¦¦¡‘¦«¥¢¢¡¥¢¢¢¡£¢¡¢¡¡¢¢¦£¥¦¢¡¢¢£¥¦¦¡¡¥¦¢¢¡¢¢¦¡‘¢¦¢¡¥¦£¥¡¡¡¡¡¢¢¦¢¡¡¥¢¥¢¡¡¦¦¡¡¡¡¦¦¢¡¡¡¢¡¡¡¥¡¡¡¡¥¡‘‘¢¡‘‘¦¡¡¡¡¥¡¢‘‘¡¡¡¡‘‘¡¡¡¡‘¡‘‘¡‘‘‘‘¡¤¥Úýÿÿÿÿõ¬‘¡‘€‘‘‘‘‘¡¡‘‘‘‘€~‘‘‘‘}‘‘‘€‘‘‘‘‘}~~‘¡‘}}¡‘}~}~‘‘}€}}€‘€‘}~}~€}}}}}}€}}}}}v}‘}}}}}}}}}}€}}}w×ÿõ}žÿõ}v}}}}vv}}}v}}}vv}}vvvv}}vvv}vwvvvvvv}vvvvpvvvvvvvvvvvvvuovvoovvoovvvvoooovvvovvuuvouuuuovulllllvlluou˜èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!9!!Zóÿÿÿÿÿ÷_ !!;!!!!!!!!!! !! ! !!!! ! !!! !!  !  ! !  !  !  !!  !! !!!    ! !!=}ªõþþÿþÿýÿþþþýÿÿþÿþÿþÿþÿþÿþÿþÿÿæ×  !      ÓØüüþþýþþüþþýþþþþþÿÿüÿþÿüÿþÿþÿúÖŽ~}~~}~‘‘~‘‘}}~}‘‘~‘‘‘‘‘¡¡‘¡¡‘}‘¡¡~‘¡¡‘¡‘‘¡¡‘€‘¡¡‘‘‘¡¦‘~‘‘¡¡‘‘¡¡¡¥¡¡¡¡¡¡‘¢¡~‘¡¡¡¡¡¢‘‘¡¡‘‘¡¡¡¡¡¡¡¦¦¡¡¡£¢¡‘‘‘¡‘¡¡¥ãþÿÿÿÿÿ梡¡¡¡¥¦£¡¢¢¡¡¢¦¢¢¢£¢¡¢¡¡¡¢¦¢¢¢¡¡¦¢¡¦¦¡¡¢¢¦¦£¦¦¦¡¢¢¢¦¢¢««¦¦¡¦£¡¡¡¢¥¡¡¢¢¡¥¦¢¢¢¢¢¦¦¡¡¡¦¢¡¡¡¢¥£¢¡¡¦¡¡¡¡¡¡‘‘¡¡‘‘¡‘¡¢‘¡¢¥¡¡¡‘‘¡¦¦¥¡¡¡¥¦¢¡‘¡¥¡¡¡‘‘‘‘¡¡‘‘¡¡¡¡‘‘¡¡¤¡‘‘‘‘¡¡‘‘‘¡§æþÿÿÿýÚ¤¡¡‘‘‘~‘¡‘‘‘‘‘‘‘‘€‘€€‘¡‘‘}}}}~~‘€‘‘}}}‘‘‘‘€}€‘‘‘}}}}}}}}~}}‘‘}}}}}€‘€}v}€‘‘‘}}}w}}}}}}}€‘×ÿ÷™}žÿõ‘}ww}vv}}}}}vppvvvvvvvvvv}vv}vv}vvvvvvvvvvvvv}}voppvvvouvp}}vvvvvooooooovvuollllulvllllllvvvoluvvvllluolu›òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yòÿÿÿÿÿ÷_!!!!!!!!!!!!!!! ! !!!!! ! !   !  ! !! ! ! !  !  !!!  ! ! 9pªõþþþþþþýþþþÿÿþÿþÿþÿþÿþÿÿÿþÿÿþæÓ       Ó×þýþýþüþþýþüþüþþüÿÿÿÿþÿÿÿþÿþÿúÖ~‘}}}}~€~‘€~}~~~}~‘‘~~€‘€‘‘‘‘‘‘‘~€¡‘‘‘~‘‘‘¡¡‘‘‘¡‘‘‘¡‘‘‘‘¡¡‘~‘¡¡¡‘‘‘¡¡¡‘¡¡‘‘¡¡¡¡¡¡‘¡¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡£¥¢¡‘‘¢¦¢¡¡¡¡¡¡¡¡¡Ýþÿÿÿÿÿꥢ¡‘¢¦¥¡¡¡¢¡¡¦¦‘¡¦¥¢¡¢¢¡¢¢¢¦¦¡¡¥¢¢¡¢¦¢¦¢¢¦¥¢¦£¥¢¦£¢¦¡¡¦¦¢¢¥¦¥¢¡¡¦¦¡¡¢¢¢¢¦¦¦¢¢¢¢¥¡¡£¥¢¦¢¡¡¡¥¢¥¡¡¢¢¢¢¢¡‘¡¡¡¢¡¡¡¡¢¡¡¡¢¡¡¡¡¡‘¢¦¢‘¡¦¢‘¢¡‘¡¡‘¡¡‘¢‘¡¢¡¡‘‘¤¡¡‘¡¡¡¡¡‘‘¡‘¢¡‘‘‘‘‘‘§ëÿÿÿÿõ¬‘‘¢¡~‘¡‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€‘‘~€‘€}~‘€‘€}}~€‘‘‘‘~~‘~}~}}}‘‘‘}|‘}‘}w}‘}}}}€‘}}}}}}}}}}}~}}Óÿú™vžÿõ™}}}}}vv}}}w}vvv|v}}vvvpw}vv}vv|vvvov}vwvvvvv}vopvvvvoovvovvvvvvvovulovoovvpllooovvvllvoouvvooouuuollluluvu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!! !!!!! !!!!!!!!! !! ! !! !!! !    !  ! !   !!  !!     =q¥íÿþþþÿýÿþþþüÿÿþÿþÿþÿþÿþÿþÿþÿÿèÓ             ÓÓüþþüþþþþüþþþýþþþÿÿüÿþÿüÿÿþÿÿúÕs}~}~‘‘‘~}}~}}}~‘‘¡¡¡~~‘‘‘~‘‘~~~€‘‘‘€}~‘‘~~‘¢¢‘¡¡¡¡~~¡¡¡‘~‘¢¥‘‘‘‘¡¦‘‘‘¡‘¡¡¢¡€‘‘‘¢¢¡¡‘¡¡¢¦¢¢¡¡¡¡¡¡‘¡¡¢¡‘¡‘¡¡‘¡¡£¡¦¦¦¡¡¢Úþÿÿÿÿÿë­«¦¢¦¦¢¢¥¡¡¢¦¦¢¢¦¦¢¡¦¦¦¥¡¡¡¡¦¡¢¦¦¢¡¢¢¢¡‘¡¡¡¢¡¢¢¦¦¦¡¡‘¡¢¢¡¡¡¡¢¡¡¡¢«£¢¡¡¡¡¢¢¡¡¢¢¢¢¢¢¡¢¡¢¡¡¡¡¡¡¡¡¡¥¢¢¢¢¦¢¢¡‘¡¡¦¥£¡¡¡¡¢¢¢¢¦£¡‘¡‘‘¢¥¡‘‘¢¦¡¡‘¡‘‘¢¦¦¡‘¡‘‘¡¡‘¡¡¡¡¡‘‘¡¡¡¡¡‘‘€‘‘‘‘‘§íÿÿÿýÚ‘‘¢€}~‘‘‘‘‘€€~‘¡‘€~‘‘‘‘‘¡‘‘€}~}~‘‘‘‘‘‘~‘€}~}}}‘‘}}}‘€}‘}}}‘}¡~}€~}}‘‘}‘}vv}}}}}}vv}vw}}×ÿ÷‘}§ýõvv}}}w}}vw}}}v}}}}}}vv}}}vvvvvvvvov}vvv}}vvvvvv}vv}vv}}vplovvvvvvoolvvwvovuovolvuvtlovvvlllouvllllvullluvul{ÌúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=@=!Bóÿÿÿÿÿ÷_!!!!!! ! ! !!!!  !   !!       !!! ! ! !  !!!!  !!!=qšíþþþþýþþþþþÿÿÿþþÿþÿþÿþÿÿþÿþÿþæÓ         ÓÙüýþüýþüþþþüþþüþüÿÿÿÿþÿÿþÿþÿÿûÖ}}}€‘~~~~}}‘‘~}}}€‘‘‘‘~‘¡‘‘‘‘~€}‘‘‘~~‘‘‘¡~‘¡¡‘‘¡‘¡‘‘‘¡¢‘‘¡¡¡‘‘‘‘¦¢~‘¡¡‘‘¡¡¡‘¡¡¡¡¡¡‘¡¡¡¡¡¢£¡¡¡¡¡‘¡¡¡¢¡¡¡¦¡‘¡¡¥¢¢¡¡¢¡¢¢Úþÿÿÿÿÿꦢ¦¦£¢¢¦¢¡¡¢¥¦¦¦¦¢¢¡¢¦¦¦¢¥¢¢¢¢¢¦¢¥¦¡¢¦¡¡¢¡¢¢¡¢¢¢¦¥¦¢¡¢¡¢¡¡¡¢¢¡¡¢¡¦¥¢¢¡¡¡¢¥¢¡¡¥¢¢¦£¢¢£¥¡¡¡¡¡¡¡¡¢¡¡¢¢¦¦¡¡¡¡¡¡¦¦¢¡¡¢¡¡£¥¢£¥¡¡¡‘¡¢¢¡‘‘¢¢¡‘¦¡¡‘¢¦¡‘‘‘‘‘¡¡¡¡¡‘¡¡¡‘¡‘‘‘‘‘‘‘‘¡¡¡‘‘™àÿÿÿþæ‘‘‘€‘‘‘‘‘‘‘‘€€‘‘~€‘‘‘€‘‘‘‘‘‘€}}‘‘}‘}€~€‘‘}}‘‘~‘}}}‘€~~}~}~‘€~‘}}}}‘~}}€}}}}}}}}}}v}}}Óÿú™}žýõv}|}wv}}v}}}}vv}}}}vwvv}ww|v}vvvvvvv}vvvvvvvvvvvvv}vvvvvvvlovvvuvvovvovoouvvvlovvvvlovvvvoullvuvoloolllllouuu{×ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!=9!Bóÿÿÿÿÿ÷_!!!!! !!!!! !!!!!!! !    !  ! ! ! !! !!! !! ! ! !  !!!q¥õþþÿýÿþþþþþýþÿÿþÿþÿþÿþÿþÿÿþÿÿæÓ   !        Ó×üþüþýýþýþüþþýýþþÿÿüÿÿþÿþþÿÿþúÖ ‘‘‘‘}}~‘‘~~¡¡¡¡‘~~‘~}~‘€~}}}‘‘~~¡‘‘‘‘¡‘~}~‘‘‘~}~‘‘‘‘‘~~‘‘‘¡¡‘¡¡‘¡£¡¡¡¡‘‘‘¡¡‘¡¥£¡¡‘~‘‘¡¥¢¡¡¡¡¡¡¡‘¡¡¡¢¦¥¡¡¡¡¡¦¡¡¡¢¦«êþÿÿÿÿÿꥢ¢¥¡¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡£¡¡¡£¢¢¢¥¡¡¢¢¦¢¡¡¢¦«¦¦¥¡¡¢¦¦¢¦¦¦¦£££¦¦¡¡¦¦¦¦¢¡¦¢££¢¢¢¢¢¦¦¢¡¡¢¥¢¢££¢¢¢¢¦¦¢¡¡¡¥¡¡¢¡¡£¢¢¡¦£¡¦¦¦¢‘‘¡¡¡¡¡¡¥¦¢¡¡¡¡¡¢‘¡‘¡¡¡¡¦¡‘¡‘¡¡¡¡¡‘‘¡‘¡‘‘¡¡¡¡‘¡‘‘‘‘‘€‘‘¢¦ëÿÿÿÿûÔ‘‘‘¢¥‘‘‘‘¡¡‘~€‘¡€}‘}~‘‘‘}‘‘‘‘‘‘€‘‘‘€}‘}}€‘}€}}‘‘}~}}}}}€}}}}}}}‘}w}}}}‘€}}}}‘€}}}}Óÿ÷™}žýõ™}}}v}vvv}}w}}vvvvv|}}}vvvvvvvvvv}}}vvvpppvvvpv}vvv}voooovwpovvovvvvvolovvoovpovvlllllulltlolluopulluvvvolCClllo{ßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yòÿÿÿÿÿ÷_!!! !!!@!!! ! !!!!!!!! !! !!!!! ! !  !!  !   !    ! !!!    !!   ! =qªõþþþýþþþþþþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿæÓ           Ó×þþüýýýþýýþüþþüþüÿÿÿþÿþÿÿÿþÿÿûÖ¢‘‘‘~~}}~‘~}~~‘¡‘‘€‘€~}~‘‘‘~~~‘‘~‘‘‘¡‘~‘‘‘‘‘~‘‘‘‘~‘‘‘~‘¡}‘¢‘~¡¦¡~‘¢¡¡¡¡¡¡¡‘¡¡‘‘¢¡¡‘¡¡‘¡¡¡¢¢¢¡¡¡¡¡¡¡¡¡‘¡¦¡¡¡¡¡¡¡¢¢£¦¢£åþÿÿÿÿÿꦦ¢¡¡¡¢¦¡¡¡¡¡¡¡¢¢¡¡£¥¢¢¡¢¡¡¡¢¦¢¡¢¢¢¢¡¥¦¥¦¦¢£¢¢¥¦¦¢¢¦¦¦¢¥¢¦£¥¡¢¢¥¦¡¡£¥¢¥¦¢£¢¢£¥¢¡¢¦¦¦£¢¡¡¡¡¡£¦¡¡¡¢¡¡¡¡£¡¥¢¡¥¡¢¥¦¢¥¢¢¡‘¡¡¡¡¡¦¥‘¡¡¡¢¡¢‘‘¡¡¡¡¡¥¡¡¡‘‘‘‘¡¢‘‘¢¢‘~¡¥¡‘¡¡‘‘‘‘‘‘‘‘‘¥Ýþÿÿÿÿà¡‘‘‘¡¡‘~‘‘‘‘‘‘€‘‘‘€‘~}€‘‘€‘‘€‘‘‘‘‘‘‘‘‘€}~‘}}}€~~‘‘‘}€}}}}}€}}~}}}}}}~}}}}~}~}}}}}~}}}}}Óÿúš}žûõ™w}v}v}}v}}}vv|vv}}}vv|}vvv}vvvvvvvvvvvvvvvvvvv}vvvvvvvlovvvvvvvvvvvvvpulvoovulvvuvollllloovlovuuollouvuullllotlul{áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!! !!!!!!!! !!!!!  !   ! !!! !   !!    ! !  ! !    !! 9qªíþÿýÿþþþþþþþÿÿþÿþÿþÿþÿþÿþÿþÿÿæÓ                   Ó×üüþýþüþüþþþýþýþþÿÿüÿþÿÿþþÿÿþúÖ‘~~}~}~¡¡~}~}~~~~‘‘‘‘‘‘~}}~~~~¡¡‘~~}~‘~~‘‘¡¢¡~‘‘~¡¡¡€‘¡¡¡¡¢‘~‘¡¡‘‘¢¡‘‘¡¡‘¡‘¡¡¡¦¢‘¡¢¡‘‘¡¢¡¡¡¡¡‘‘‘‘¡¢¦¦¡¡¡¦£¢¡¡¡¡¡¡¡¡‘‘Úþÿÿÿÿÿ楦¦¦¦¡¡¦¦¦¦¥¢¡££¢¢¦¦¡¢¦££¢¦¢¡¢¦«¦¦¥£¢¢¦¢¢¡¡¢¥¦¢¡¡¡¡¡¢¦¦£¢¡£¦¢¢¢¡¡¦¦¢¡¡¦¦¦¥¢¡¢¢¢¢¢¢¢¢¢¡¥££¦£¦¢¡¥£¥¢¦¢¡¡£¢¢¦¢¡‘¡¡‘¡‘¡¡¡¢¡¡¡¡¦¡‘‘‘‘¡‘¥¦¥¡¢¡‘‘¡¢¥¦¡¡¡¡¢¦¢‘‘¢¡‘¥¡‘‘‘‘‘‘¡‘‘¡¡¡¡ÚÿÿÿÿþÚ‘‘¡‘‘‘‘€}‘‘¡‘‘‘~}‘‘‘¡‘€‘¡‘€‘}‘€}~}}}‘‘}}}€‘‘‘‘‘}}€}}}}~€‘€}}}~~}}}‘}}‘}}}}}}}v}}}}}}}Çÿú§‘§úõš}}}v}}}}v}vvv}}}}vvvv}vv|}}}}wvvvvvvvv}}vvvvpvvplovvvwvvvvvovupuoouvvoopvvvvolouovvvvovvvuolCloovolllCllpoltvlCCluv˜ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!=!Zóÿÿÿÿÿ÷x!!!! !!!  !!  !!!  !!  !! !! !      ! ! !    !!!  !=qªõþþþþþþþþþþþÿþþÿþÿþÿþÿþÿþÿÿþÿæÓ                   Ó×þþüýýýþþüþýþþüþüÿÿÿÿþþÿÿÿýÿÿúÖ Ÿ~}~~}}‘‘€~~‘~~}~‘~~‘~}}~~‘~~‘‘~}‘‘~}‘‘¡¡‘~‘¡‘‘‘‘¡¡‘‘¡‘¡¡‘‘‘¡‘‘¡¡¡‘‘¡¡‘¡¡¡¡¡¦¦¡¡¢¡¡‘¡£¡‘¡¦¡¡¡‘‘¡¡¡¡¦¢¡¡¢¢¡¡¡¡¡¡¥¢¡¡Ýþÿÿÿÿÿꥢ¦£¢¦¢¦¦«¦¢¢¡¢¡¢¦¦£¡¡¡¥¢¦¦¡¡¦«¦¦£¢¢¢¢¦¢¡¦¦¢¢¦¦¡¡¡¡¡¢¦¦££¥¡£¥¡¢¡¢¦¦¥¢¡¡¢¦¦£¥¢¢¡¡¢¢¢¦¥¢¢¦¥£¥¡¡¢¡¦¦¢¦£¡¥¢¡¢¦¢¡‘¡¡¡¡¡‘¡‘¢¡¡¥¢¡¡¡‘‘‘¢‘‘¢¢£¥¡‘‘¡¢¡¡¦¥‘¡¢¡¥¦¡‘¡¢¡¡¡‘‘‘‘~¡¡‘‘¡¨íÿÿÿÿýÔ¡‘€‘¡¡‘‘‘‘‘‘¡‘€€€€~~‘¡‘‘‘¡‘‘‘}}‘‘‘}~‘‘‘‘~}}‘‘‘¡€€‘}}€}}}}}‘‘}}€}}}}}}}€}}~}}}}}}}}}€}}}v}Óÿûž}žû÷™|}}w}€}}}}vv}vv}}v}vv}vvwvv}vvvvvvvvvvv}}vvvovvvvvvvuvvv}voovovvolovvovvvvvvllvvvvvvuooouvvllluuvuullCClulClllllltluu›õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_!!!!!!! !!!!!!! !!!!! !  !!!!!   !! !   ! ! !  !    !   !   >}¥íÿþþþþþþþþþýÿÿþÿýÿþÿþÿþÿþÿþÿÿæÓ            ÓÓýüþýþüþüþýþþüþþþÿÿüÿþÿÿþÿÿÿþûÖ}}¡‘~~~~~}}~~~~~€‘‘~‘¡¡‘‘‘€‘¡‘‘¡¡‘‘¡¡‘‘~‘¡¡‘‘~}¡¥¢¡¡‘¡¢¡‘‘¡¡‘¡‘¡¡¦¡¡¡‘‘‘‘¡¡‘¡‘¡¡‘¡¢¡‘¡¦¥¡¡‘¡¡¡¡¡¢¡‘¡¢¢¢¢¦£¡¡¦¦¢¢Úþÿÿÿÿÿꦡ¡¡¡¡¡¡¡¢¡¢¢¢¢¡¡¢¡¢¦¢¢¦¦¦¥¡‘¢¢¡¡¡££¢¢¢¡¡¡£¡¡¡«¦¦«¦¦¥¡¢¥¡¡¡¡¢¦¦¦¦¦¡¢¢¦¦¢¡¡¡¢¢¦¦¦¢¢¢¢¡¡¢¢¢¢¢¡¢¦¦¦¡¡¡¡¥¦¦¡‘¡¢¡¢¢¢¦¦¦¦¢¢¢¢¢¦¢¡¢¢¢¡¢¦¦¡¡¡‘¢¦¡¡‘‘‘‘¢¦¡‘‘‘¡¢‘‘‘¡‘€‘‘‘¡¡‘‘¡‘¡Óûÿÿÿÿëš‘‘‘‘‘¡‘€~‘‘‘‘‘‘¡‘‘‘‘‘‘¡‘}€‘‘‘~}‘‘}€‘‘}}~€‘}~‘‘~}}}‘‘€~‘‘€‘‘}}}~}}‘}€}}~€}}}}}}v}}‘‘}}}v}Óÿúž}™ú÷¥}vv}vvvw}}}vv}}vvv|vv}}}vov}}}|vvvvv}vpvvvpoovpvv}vovvvvvpvvv}voovvlovuoovvvlloovoovvvlllltpuolllluullvvllvlltoolCClluÆ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!!=Yóÿÿÿÿÿ÷_!!!!!! ! ! !!!!!!!   !!!!  !!  !!    ! ! !!   ! !! ! !  !!   !!  =ެíþþþþþþþþþþÿÿþÿþÿþÿþÿþÿþÿþÿþÿæÓ   !          ÓÙüýþüþüþüþüýþþüþüÿÿÿþÿþÿÿüÿÿÿúÖ}}}‘‘‘~~~~~€‘}~}}‘‘‘‘¡‘¡‘‘‘‘‘‘‘¡¡¡‘~~¡¡‘‘¡‘~‘¡¡¡¢¡‘‘¢¡‘‘¡¡‘‘¡¡¡¡¡¡‘¡¡¡‘‘¡¡‘¡‘¡¡¡‘¡¢¡¡¡¡¡¡‘‘¡¡¡¡¡¡¡¡¢¢¢¦¢¢¡¢££¢¡Úþÿÿÿÿÿ릣¥¡¡¡¡¦¡¡¢¢¢¢¡¡¡¢¡¢¦¢¢¦¦¢¢¦¢¢¡¡¡¡¡¢¦¢¢¡¡¡¢¡¡¡«¦¦¦££¢££¢‘¡¢¢¡¡¦¦¦¦¢¡¢¦¦¢¢¦¢¢¢¦¦¦££¥¦¡‘¡¢¡¡¡¡¦¦¥¦¦¢¡¢£¥¦¡¡¢¥¦¢¥¢¢¥¦«¥¡¦¦¡£¥¢¢¡¡¢¢¦¢¢¢¡¡¡¢¦¢‘¡¡¡¡¥¢¡¡¡¢¡¡¡¡‘‘¡‘€‘‘‘¡‘‘¥êÿÿÿÿþà‘‘¡¡‘‘‘¡‘€‘¡‘‘~€‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€}‘‘€~~‘}€‘‘‘‘€}}~}‘}}€‘‘}}}€}}~}~}}}~}}}}}}}}}~}}}}}}}žÿýÒ}™õ÷ž}}}}}}v|}}}}vvvvvv}}vvv}}ppv}}vvvvvvv}}vpvvpopppp}vvpvoo}vvvvvvvvovvulvolovvvolllvuovvlolllovvllCllluuloullvvlltllClllCCvÌüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ9!!9!Cóÿÿÿÿÿ÷_!!!!!! !! !!!!!!! !!  ! !!  !!!  !  !!  !! ! !!! ! ! !! ! !  !  =ŽªíÿþþþþþþþþþüÿÿþþÿþÿþÿþÿþÿþÿþÿæÓ                 Ó×üþüþýýþýýþþüþýþþÿÿþÿÿÿÿýÿÿÿüúÖŽ}}}~~~~~}}~‘¡~}~~‘‘‘‘‘~~}~¡‘‘‘‘‘¡‘~~¡‘¡¡~‘¡‘~‘‘~‘‘‘~‘‘‘‘¡¡‘‘¡¡¡¢£¡¡‘¡‘¡¡¦¦¡¡¡¡¢¡‘¡¡¢¢¡¡¡¦¦¢¢¦¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢êþÿÿÿÿÿꥡ¡¢¦¡¢¢¡¡¢¦£¦£¡£«¦«¦¡¢¢¡¡¡¦«¦¦£¢¢¢£¦¢¦£¡¦««¢¦¦¢£¢¢£¡¢£¦£¦¦¦¡¢¦¦¦¢¥£¦£¢¡¦¦¢¢¢¡¡¡¢¢¢¦¦¢¢¦¥¦¦¥¡¡¢¡¡¡¢¡¡¢¡¡¡¢¢¡¢¡¡¡¡¡¢¡‘‘¡¢¢¡¡¡‘¥¢¡¢¥¡¡‘¡‘¡¥£¡‘¡‘¡‘‘‘‘‘‘‘‘‘‘‘¡¢¡¡¢‘¡¡‘§õÿÿÿÿû¬‘¡¡‘‘‘‘€‘¡¡‘¡‘‘‘‘‘¡¡‘~‘‘‘}~‘‘~}~~}~‘¡‘‘‘‘}}~€}~‘}‘€€}}}~‘‘‘€}}}}‘‘‘}}}}}€}v}}‘}}}}}}}}}}}}§ÿú§}šõ÷™vv}}}}}}vvv}}}}v}}w}}vp}}vv}}v}vvvvvov}vovv}v|vvvovvvvoovvooooovoov}ovvvvoovoovovvoluluvooouovvuvvoollluvollvuulllluullllluÎýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Bóÿÿÿÿÿ÷_!!!9!9!!!!!!!!! ! ! !! !! !!!  !    !  !      !  !  ! !  ! =p¥íþþþþþþþþþþÿÿÿþÿþÿþÿþÿþÿþÿþÿþæÓ                  ××þüþüþüýüþüýþþüþüÿÿÿüÿýÿÿþÿÿÿûÖŸ~}}}~~~‘‘~~}~‘~~~~~~~¡‘‘~}~~‘‘‘‘‘‘‘‘‘¡¡~‘¡~‘‘~~‘~‘‘‘~‘¢¡~‘¡‘‘¡¡¡¡¡¦¡‘‘¡‘‘¡¢¢¡¡¡¢¡‘¡£¢¢¡¢¡‘¢¦¡¢¦¦¥¦¡‘‘¡¡‘¡¥¡¡‘¡¡Ýþÿÿÿÿÿ릣¢¢¢£¢¡¡¢¦«¦££¢£¦««¦¢¦¦£¡¢¦¦¦¦¦¦¡£¦£¦«¦¡¢«¦¢¦¦££¢¦¥¡¢¡¢¦¦¢¡¦¦«¦¦¦¦¦¦¦¢¢¦¢¢¥¢¢¢¡¦¢¢¦¦¢¢¦¦¢¢£¥¢¡¢¡¡¡¦£¡¡¡¡¢¡¥¦¡¡¡¡‘¡¢¢¡¡¦¢¢¢¡¡¢¥¡¢¦¡¡¡¡‘¡¢¥¢¡¡¡¡‘‘‘¡‘¡¢¡‘‘‘¡¥‘¡¢‘¡¥Úþÿÿÿÿõ§¡‘¡¡¡‘‘‘‘‘‘¡¡¡‘‘¡¡‘¡¡‘‘‘‘~}€‘‘~}€}}€‘‘‘€}‘€}}~}}‘‘‘~}}}~¡‘‘}}}}~‘¡‘}}}}}}}}}~~}‘‘}}}}}v}w}}~ÓÿúÓ}šõúžvvv}}}}vpvvvwv}v|}vv|vvv}}}}vvv}pvvpvvvvvpvvvvvvvpvvvvvvvvvpvoovoovvvvvvvvvlvvvoovllooooouullovvvullollltvouoooullloutlCCCll{ßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ@=!$=Bóÿÿÿÿÿ÷_!!!!!!!!!9!!!!!!!!! !!! !!!!!!!!!! !    ! !!  !   !  !!!!  ! ! !! 9q¥õþþþþþþþþþýýÿþÿþÿþÿþÿþÿþÿþÿþÿèÓ                  ÓÓüüýýýþýþýþýüþüþþÿÿüÿÿÿÿþÿÿþÿúÖ~}‘€~~~‘~~~}}~‘‘‘‘~‘¡‘~~‘‘‘~‘‘‘‘‘~~~‘‘~~¡¢¡‘‘¡‘‘¡¡¢‘‘‘¢¡¡¥¡~¢¢¡‘‘‘‘‘¢¦‘‘¡¡¡‘¡¡¡¡¡¡¡‘¡¢¡‘¡¦¢‘¡¦¢¡¡¡¡¢¦¡¢¦¢¡¡¡¡¢¦¢¢Ýÿÿÿÿÿÿꥣ¡¢¢¢¢¡£¢¡¢¢¡¡¢¢¢¡¡¢¡¡¦¦¡¡¡¢¢¢£¦£¢¡¡¢¦¢¢¦¦¢¡¡¡¡¢¦««¦¦¢¢¦¢¡¢¦¢¡£¡¢¢¢¡¡¡¡¢¦¦¦¦¢¢¡¡¢¦¦¡¡¢¦¢¢¢¢¡¢¦¦¦¡¡¦¦¡¡¡¡¡¡¦¦¢¢¢¦¡‘¥¦¢‘¡¡¡¡¡¡¡¡¡¡¡‘¡¢¥¡¡‘‘¡¡¡¡¡¢¡‘¡‘¡¢¡¢¡‘¡¦¡¡‘‘¥õÿÿÿÿûÚ‘¡‘€€‘‘‘‘‘‘‘€‘‘‘‘‘€~}‘¡‘‘‘‘‘~‘‘~}‘¡‘€~‘€‘‘~}‘‘‘‘‘€~}}}~‘‘‘}}}€}}}}~‘}‘}}}‘‘~}}}‘}}}}}}}~}}}€€}}ÓÿýÓ}™õúž}v}}}}}v}}v}}}}}}w}vwvv|v}vvvvvpv}}}vvpv}vvvvvvvvvvv}vpvooopovvvolvvpvooooolovolovvvlooouvvllulvoltvvlulllClluoovlllllloloollCƒèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Zóÿÿÿÿÿ÷x!!! !!!!!! ! !9!!!! ! ! ! !     ! ! ! !! !!!     !  =}ªíþþþþþþþþþþÿÿÿþÿþþÿþþÿþÿþÿþÿþæÓ               Ó×þýýýýüþüþüþýýýþüÿÿÿÿüÿþÿþÿÿÿûÖ‘‘‘~~~~}}}~}~}~‘‘‘‘~‘‘~~~¡¡‘}‘¡‘‘‘~~~‘‘~‘‘‘¡‘‘¡‘¡¡¡¡‘¡¢¦¡¢¡‘‘‘¢‘‘¡‘‘¡¡¡¡¡¦¡‘‘¡‘‘‘¡£¡¡¢¡‘¡¢¢¡¢¦¢¢¡¡¡¡¡¡¡¢££¡¡‘¢¢£¥Ýþÿÿÿÿÿ楡¢¢¡¢££¢¦¢¡¢¢¡¢¢¡¡‘¡¡£¢£¢¢¦¡¡£¢¥«¦¡¢¡¡£¦¦£¢££¡¡¦¦«««¦¦££¡¦«¦¡¡¡¡¢¢¢¢£¡¡¡¦¦¦¦¢¡¡¡¡£¦¥¢¦¦¢¦¦¦¡¡¥¦¡¡¢¥¢¢¡¡¡¡‘¡¢¢¥¡¡¢¢¦¦¥¡¡¥¡‘¡¥¡‘¡¡¡¡¡‘£¡‘‘‘¡¥¡¢¢¢¦¢‘¡¥¦¡¥¢€‘¦¥‘¡Úýÿÿÿÿõ§¡‘¡‘‘‘¡¡~~‘¡¡€‘¡‘‘€}~€‘¡¡¡‘‘‘‘~}€‘‘‘‘‘€~}€€~}€‘‘‘‘}}~}}‘‘‘‘~}}}}‘‘€}}}}}€}‘‘}}€€}}~€}v}€~}}}}}}}§ÿýÓ}˜ëúžw}}}|}}}}}}|}}}}}vvv}w}}}wvvvvvvvw}}vpvvvvvvvvvvvvvvvvvvlopov}}vllvvluvppvollvvvovvvolllovvlllouulovvuoullllluuuvuutlluuouuullll˜èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_=! ! !!!!!!!!!!!!!!!!! !!!     !!! ! !! !     !!  !    =}¬õþþþþþþþþþþþþÿþÿþÿþÿþÿþÿþÿþÿÿæÓ            Ó×üüþüþýþüþþüþüýþþÿÿþÿÿÿÿÿÿÿþÿúÖ~€~~~‘~~‘~~‘‘~‘‘~~‘~‘‘¡‘~~‘¡¡¡¡~~¡¡¡‘‘‘¡¡¡¡‘‘‘¡‘¡‘‘£¡‘¡¡¡¡¦¢¡¡‘¡¡¡¡¡¡¡¡¢¥¡¡¢¡‘‘¡¡¡¡¡¡¡¢¡¢¡¡¡¡¡¢¢¢¢¢¡¡¡¡¢¦¦¢£Ýþÿÿÿÿÿꦥ£¦¦¡¡¢¥£¢¡¡¦¦¦¢¦¦¡¦¢¢¡¢¡¡¢¦¦¦¡¡£¦¢£¢¡¢¦¡¢£¦¢¡¢£¢¡¢¢¢¡¢££¦¦¡£¢¡¦¢¢¢¦¦¡¡¦¦¢¡¡¡¢¦¥££¦¢¡¡¡¢¢¡¢£¢¢¦¦¥¢¡¡£¦¦¥¢¦¢¡¡¢¡¡¦¢¢¢¡‘¥¦¡‘¢¦¢‘¥¢¡¢¥¡‘‘¡¢¡¦¦‘‘¡‘¡¢‘‘¡¢‘¡‘‘¡¢‘¥õÿÿÿÿýÚ‘‘‘‘¡¡‘‘‘‘‘‘¡‘~‘¡¡‘‘‘‘‘‘‘‘€‘€~€‘‘‘‘¡‘€~‘‘‘€~‘‘‘~‘‘€‘}}‘¡~}}~}~}~}}}‘}}}€‘‘}}}}‘€}}}}}}€}}}}}}}}}}}žÿûÓ€™èú§}}vw}v}}}vv}}v}}v}}vvv|vvv}}w}wvvvvv}}vv}vvvvvv}v|vpopvvvvvpvpovolvvvooluvoovuoppoooooollvvlolllollvvlloolllllllulllClullllCCClltu›òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!! !!!! ! !! ! !! !  !  !   !!   !   ! !! ! !   ! 9qªíþþþþþþþþþþþÿÿýÿþÿþÿþÿýÿþÿþÿþæÓ                     ÓÙüþüþüþüýüþþýýþüüÿÿþÿüÿüÿþÿÿÿûÖŸ}}~‘~}}~‘‘~}~¡¡¡¡‘‘‘‘~~¡‘‘‘‘~~‘‘¡¡‘‘‘‘‘¡¡¡¡‘¡¢¡‘‘‘‘¢¡¡¡‘¡¢‘¡¡¡¡¢££¡‘¡‘¡¢£¡¡¡¦¦¢‘¡£¡¡‘‘¢¡‘¡¢¢¢¡¡¡¡¡‘¡¢¢¡¢¡¡¡¡¡¢«¥¢£êþÿÿÿÿÿꦢ¡¦«¦¢¢¢¡¡¡¡£¦£¢¢¦¦£££¡¡¡¡¡¦¦«¢¡¦¦¡¡¢¡¡¡¡¦¦«¦£¢¦¢¢¡¡¢¡¢¥¦¦¢¡¦¦¡¡¡¢¢¦¦¡¢¢£¡¡£¦£¦¦¦£¡¡¡¢¢¢¢¡¡¡¢¢¦¦¦¦¡¡¥«¦¦¢¦¦¡¡¡¡¡¢¡¢¢¢¡¢¦¡¡¡¡¢¡¢¢¡‘¡¡‘¡¢¦¢¢¢¡‘¡¡‘¡¡‘‘¡¡‘¡¡¡¥Úþÿÿÿÿõ§¡‘~‘‘‘¡¡‘‘~}‘‘‘~‘¡¡‘¡¡¡‘¡¡‘~~‘€‘‘€‘‘‘€}~}~‘‘‘‘‘}‘‘‘}‘€‘‘‘~}}€}}}}}}}‘}}~‘‘~‘‘}}‘‘}}}}}}~}}}v}}}}}}}žÿý×}™èûž}}}vv}w}}v}}vvv}}v}}}vwvvvvvvvvvppvv}vvw}}vvvvv}wvvvoovwvvovoolvollovvlloovvvolvullpvvoouvvvvvlovvlllovvlluulllCCllllCClltClClllCCluÆ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=9!!!@óÿÿÿÿÿ÷_!!! !!! !!!!! !!!   !!! !   !!  ! !   !!!!! ! !    !  !  !! !=qšõþþþþþþþþþþþÿþÿýÿþþÿýÿþÿþÿþÿÿæÓ    !          Ó×üüþüþüþýþýüþüþüþÿÿþÿÿÿÿÿÿÿþÿúÖ¢~~~~‘‘~‘‘}~‘~~€~‘~~~‘‘‘~~~~~‘‘‘‘‘~‘‘‘~~‘‘‘‘~¡‘‘¡~‘‘¢¡‘¡‘‘‘¡‘‘¡¡¡¡‘¡¢¢‘‘¡‘¡¢¡¡‘¡¡¡¢¦¡¡¡¡¡¢¢¡¢¦¢¡¡¢¢¡¡¢¦¢¥¡¡¦¦¢¡Úþÿÿÿÿÿꥡ£¢¢¦¢¦¢¢¢¢¢£¢£¢¢¢¦£¢¢¡¦¢¦¢¢¦¦¡¡¦¦¢¢¦¦¦¢£¦¢£¢¢£¦£¢¦¢¢¡¢¦¦¦¦¢¢¢¦¢¢¢¡£££¢¦¦¢¡¦¦¢¡££¢¢¦¢¢¢¢¦¥¡££¢¦¢¡¢¡¡¦¦¡¢¢¡¡¡¦¦¦¥¡¡¡¡¡¡¢¦¢¢¡‘¡¡¢¥¡‘¡¢¡¥¡¡¢‘‘¡‘£¦‘‘¡‘¡¡‘‘¡¥¬õÿÿÿÿýà¡‘‘‘¡¥¡¡‘‘¡¡¡¡‘¡¡‘‘‘€‘‘‘¡‘€‘‘‘‘€‘‘¡‘‘€‘‘‘€~€~~€€}‘‘‘}~}~€}€‘}}‘‘}}~€‘~€¡}~}}}|}}~}}}~}}}}}}}}}}}}}}}~}§ÿýÓv‘èýÓ}v}v}}}}}vv}}vv}}vv}}wv}}w}}wvvvv}vv}vpvvvov}vppvp}vopvvvvvvvvpovvvpv}oovvooolvvolovlouolltplolvlltlllllluolllllllllullltllllluollCCluÇ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Yóÿÿÿÿÿ÷]!9!!!!!!!!!! !!! !! !!! ! !!     !   ! !!    !  !!!  =ŽªíþþþþþþþþþþþÿÿýÿýÿþÿþÿþÿþÿþÿþæÓ                     ÓÙüþüþüþüýüþýþüþþüÿÿÿÿþÿýÿþÿÿÿûÖ¡‘~}}~‘¡¡‘~}~¡¡€~}}~~‘¡~~‘‘~~~~~~~‘‘‘‘~~~}‘¡‘~~‘‘~‘~~‘¡¡¡¡¡¡¡¡‘¡¢¡‘¡¢¡‘¡‘¡¡¡‘¡‘¢¦££¢¢‘¢¦¡¢¢¡¡¢¦¢¡‘¢¢¦¦¡¡¦«¦¢Ýþÿÿÿÿÿꥡ¦¦¡¡¡¦¦¦¦¦¦£¢¦¦££¢¢¡¡¡¢¦¦¦«¦££¢¢¦«®¦¦¦¢¦«¢¡¡¢¦¦¡¡¡¡¡¢¢¦£¢¦¦££¦¦¦¡¡¡¢¢£¢¡£¢¢¦¦¢¢££¦¦£¡¢¦¦¦£¥¢¦¡¡¡¢£¢¦¢¢¦£¡¡¥¦«¦¦¥¡‘‘¡¡¡¦¦¢¥¢¡¡‘¢¦¡¡¡¢¡‘¡‘‘¡‘‘¥¢¢¢¡‘‘‘‘‘¦êþÿÿÿÿõ¬¡‘~‘¡¡£¥¡‘‘¡¥¥¡¡¥¡‘‘‘€€~‘‘‘€~‘¡‘~}}€‘‘‘‘‘‘~‘‘€}‘}~‘‘~€}}~‘‘€}}‘‘€~~~‘€‘‘~}~~}}}}}}}}}}}}}}v}}‘€~}}}}€}žÿþÙ}™æý×}}}|v}vvvv}}}}v}}|v}}}}}}vv|vvvv}}vv}vvvvvvvvvvvvvvvvvoovvlpvvvvvvvvwvllpvvovlvvpvvvuloolloollovullllltlloulvuullllloullvtlCCCtuulCCluuyÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷_!!;9!!!!!!  !!!!  !!! ! !!  !  ! !! !! !   !!! !!!!! !! ! ! =}ªõþþþþþþþþþþýÿþÿýÿþþÿþÿþÿþÿþÿÿæÓ    !                    Ó×üüþüýüþýýýýüþýüþÿÿüÿþÿÿÿÿÿþÿúÖŸ~~}~~~~~~~‘‘‘‘~~~~~~‘¡‘~‘‘‘‘‘~~‘¡¡¡‘¡~~¡¢‘¡‘‘¡‘¡‘‘¡¡¡¡¡‘¡¡‘‘¡¢‘¡¡¡‘‘‘¢¡‘‘¢¦¡¡¢¢¡¡¡‘¡¡¡¡¡¡¢¢¡¡¡¢¡¡¡£¢¢¢¦¦¢¢¡¡¢¢¢£Ýþÿÿÿÿÿꥡ¥¦¢¡¢¦¢¢¢¢¢¢¢¦£¦¥¢¦¢¦¡¢¦¢¦¦¡¡¢¦¡¡¦¦¢¡¢¡£®¢¡£££¦¦¢¦¢¦¦¦¦¦¢¡¢¢¢¢¦«¢¡¦¦¦¦¢¡£¦¦¦¢¡¢¦¢£¢¡¢£¢¢¢¡¢¢¢¢¦¥¢¡¢¡¡¦¡¢¢¢¡¢¡¡¢¢¦¡¡¢¦¢¡¡‘¡¡¡¢¢¢¡¢¥¡¡¡¡¡¢¢¢‘‘¡¡¢¡¡¡¢¦¢§õÿÿÿÿýà¡¡¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘€‘‘~}‘¡‘‘‘}‘‘‘‘€}~‘‘~€~‘‘~}‘‘}€}}}~~}}~}}}}}}}}€~}}€}}}}}~}}}}}}}}žÿýÚ}æýÙ}}}}}v}}}vv}}}}}}vv}}vvvvv}}}w}vvpvv}vvvpvvvvvvvpvvvvvlo}}vvppvovpuopvvovvopploluvovoluooolltpolooollvllullllllllovlllCltlllllllltCCllllCuÌúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!9!Bóÿÿÿÿÿ÷_!!!!!!! !!!!! !! !!!!  ! !!! ! !  ! !       !    =qªíþþþþþþþþþþþÿÿýÿýÿýÿþÿýÿýÿþÿþæÓ                   ÓÙüþüþüþüýýýýþüþýüÿÿÿÿþÿþÿþÿÿÿûÖ ~‘~~‘‘~}}~‘‘~‘¡‘~~~‘~~‘‘~~‘¢¡¡‘~}‘‘‘¡¢¡‘¡¡‘¡¡¡¡¡¢¡¡¥¦¡‘¡‘‘¡‘¡‘‘¡¢‘‘¡‘¡‘¡¡£¢¡¢¡‘¡¢¡¡‘‘¡¢¢¦£¢¢£¢¡¡¢¦¦¢£¦¢‘¡¡¡¡¢¡£êþÿÿÿÿÿ릢¢¢¡£¦¢¡¡¡¡¢¢¢¢¡¦¦¢¦¢¦¦¦«¦¦¢¡¡¢¦¦¢££¡¦£¡¡¢¡¢¦¡¡¦¦¦¦¦«¦«¦¦¡¡¡¡¢£¢¦¦£¦¦«¦¢¡¡¦¦¦¦¢¢¢¦¢¡¢¢¢¡¡¡¦¢¢¢¦¦¦¢¡¢¦¦¦£¡¦¦¢¢¡¡¡¡¡¥¡¢¦£¡‘¡¡¡‘‘¢¦¡¡¦¥‘‘‘¡¡¡‘¡‘¡¢¢¢‘‘«­êÿÿÿÿÿõ§‘‘‘¢¡€‘‘‘‘€‘‘‘‘¡¢‘€~‘¡¡‘‘¡¡‘‘¡¡‘‘€€‘¡‘~€‘}‘¡¡‘€‘‘¡‘€}}}~‘¡‘€‘~¡‘‘‘‘€‘€}}}}}}€‘‘‘}}}}}}~€~‘‘}}~}}}}}}}}}}}žþþà}™àþÚ}}}}}}}}}vpv}}}}}v|vvvpvw|vv}vvvpop}wvvvpv}}vvvvopvvvvlovvvvvvoouvplovvvvvvopvollvollllovvuloulllovulllllllllClluuultlllllllClllllClltlCCClxßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!$9!Z÷ÿÿÿÿÿ÷x!!!!!!!! ! !! !!!!!!!!!!   ! !!!!!!!! !!!  ! !! ! !   ! !! 9}ªõþþþþþþþþþþþÿþÿýÿýÿýÿþÿþÿþÿþÿèÓ      !                     Ó×üüüþüýüþüþüþüýýþÿÿýÿþÿÿÿÿÿþÿúÖŸ}~~}~~‘~}~~~‘‘‘~~~~‘¡‘~~~‘‘¢¡‘‘‘¡¡‘‘‘‘‘¡¡‘‘‘‘‘‘‘¢¡‘‘¡¡‘¡¢¡¡¡‘¡‘¦¢¢¡¢¢¡¡¡‘¡¡¢¢¡¡¡¢¡‘¡£¡¡¡¡¡¡¡¡¢¡¡¢¢¡¡¢¢¢¡¦¥£¢¡¡Úþÿÿÿÿÿꦢ¡¡£¦¢¢¢¢¢¦¢¦¢¡¢¦£¢£¦¦¡¢££¢¢¢¢¦¦¢¢££¦«¢¦¥£¦¦¦¡£¦¢££££¡¢¢¢¦¦¢¢¦¦¥¡££¢¢£¦¢¢£¦¢¢¢£¢¢¢¢£«¦££¡¢¦¦¡¢¢¦¢¢¡¡¡¡¢¥¡¢¡¢¢¢¢¢¡¡¢¦¢¢¡¡¥¦¡¡¢¡¡¦¡¡¡¢¢¡¡¦¥¡‘¥¡¡¡¢£‘‘Ôûÿÿÿÿýꥡ¡‘¡¡¡¡¡¡‘‘¡¡‘‘¡¡¡‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘}‘¡‘}‘‘‘}‘‘‘‘‘‘‘}~€~‘‘‘€}}~}‘€~‘}~€~}}‘€}}~~€€}}}€}}}}}~}}}}}}}}}}}}šýþÙ}àþÚ}|}}}|}}}v}}w}vvv}}v}vv|vvv}w}}vwvpvv|wvpvvvvvvvpvvvvvpvvpvvvvoovvvvvvplvvlouvolovvlovooovolloluoovluluoolClooltlllllllllltlCCtlllCCllClCCCCl{ßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!9!!!!!!!!!!!!!! !! ! !!!   !   !  !  ! !   !      !  =}ªíþþþþþþþþþþþÿÿýÿýÿýÿýÿþÿþÿþþÿàÓ       !!                  ÓÙüþüýýüþüýýýýýþüüÿÿÿÿþÿþÿýÿÿÿýÖ~}}}}}~‘~}}~~‘‘~‘‘‘~~~}~~~~‘¡‘‘¡¡¡¡¡‘‘‘‘¡‘‘‘~~~~~‘‘¡¡~~¡¡¦¢¡¡¢¡‘‘‘¦¢‘¡¢£¢¦£¡‘¡‘‘¡¦¦¢¡¡¡¡¢¡¡‘‘‘¡‘¡¢¢¡¡¡¡¢£¦¦£¦¦£¡¡¢Úþÿÿÿÿÿ楡¡¢£¢¢£¦¦¢¦¢¢£¡¦¦¦¦¦¦¦£¡¢¦¢¡¡¦¢¡¢££¡¦«¦¦¦¦¦¦£¢¢¦¢¦¦¢¡¡¢¢¢¢¦¦¢¦««£¢¡¢¢£¦¦¦¦£¢¢¡¢¦¢¢¦¦¦£¦¦£¡££¢¡¡¡¡¡¡¢¢¢¡¡¡¢£¢¡¡¢£¡¡¦¦¦¦¦¦¦¢¡¦¦¢¦¢¡¡¡¢¢¡¥«¦¡¦¢¡£¥¢¢¥àÿÿÿÿÿ÷Ô¡¢¡¡¡¡¡‘‘¢¢¡¡¡¡¡¢¡¡‘¡¥¡‘‘€€‘¡‘~~~‘‘‘‘¡¡‘€‘¡¢¡‘}}}}}€~‘‘‘‘‘‘~‘‘‘‘}}}}‘}}€€‘¡~}}‘~}~}‘‘€‘}~}}}}}‘€}}|}}v}}}}}}™ýÿàwÙþßvvv}}}}}}}}}}|vpp}}}wv}}}v}vv}}}|}vvvvpoovvpppppvvvvov}vvvvvovoovvovvolllolllvvlloovvvvvoovoollloloollluvvooulClllllltlCClllllllCCCCCCllCCCCClC{áüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9===!@óÿÿÿÿÿó]!!!!!!!!!!!!! ! !   ! !!! ! !!   !!! !  ! ! !!! !! !! ! !!! !=}ªõþþþþþþþþþþýÿþÿýÿýÿýÿýÿþÿþÿþÿèÓ      !                           Ó×üüþüýýüþüþüþüþýþÿÿþÿþÿÿÿÿÿÿþûÖ}}~~~}‘¡~}‘‘‘¡~}~¡‘~~‘‘‘~‘‘‘‘‘¡‘‘‘‘‘‘‘¡¡‘‘‘¡‘¡‘¡‘¡¦¡‘¡¡¡¡‘‘¡¡‘¡¡¡‘‘¡¢¡¡¡¡¡¡¡‘¢¢¡¡¡¡¢¢¡‘¡¢¡¡¢¦¢‘¡¢¢¢¢¡¡¢¢¢¢££¡¢¦¦Ýþÿÿÿÿÿꦥ£¢¢¢¢¢¢¢£¦¦¢¢¢£¦£££££¢£¦¦¢¦¦¦¡¡¦«¢¡¦¦£¦¦¢£¦¢¡¢¦£«¦¦¦¢¢£¦¦¦¢£££¦¦¢¢¦£¢¡££¢¦£¦¢¡¢¢£¦¦¢¥¡£££££¦¦¢¢¦¦¢¢¢¢¢¢¢¦¡¢¡¡¦¦¡¡¡¡¡£¡¦¡‘¡«¢‘¡‘¡¦¡¢¢‘‘¦¡¢¡‘‘¢¡¥Ôûÿÿÿÿýꥡ¡¡‘¡¢¡¡¡‘‘¡‘‘‘‘‘¡¡‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘~‘‘‘‘‘‘‘}‘‘‘‘‘‘‘}~€€~€~~‘€‘‘}}}~€€~}}~~}~}}‘}‘}}~}}}}~}}}}~}}}€}}}}}}}žýþà}×ÿà}|}}}|}v|}}}|w}}}}}}}}vvv}vvv}vvvvvv}vvvvvwwwvvpvv}vovvvppvvpvoovvvvopvovvvlvvovuoovulouluooolovvlluollllltlullovlllllltllllultlCCllCCtlCCllllCAlƒèüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zòÿÿÿÿÿ÷_!!!!!!!!!!!! !!!!!!! ! !! ! !! !  !!  !! !!   !  !!  ! !  ! =wªíþþþþþþþþþþþÿÿýÿýÿýÿýÿýÿþþÿþÿàÓ                             Ó×üþüýüþüüþüýýýþüüÿÿÿÿþÿþÿýÿÿÿûÖ}}€‘‘‘‘~~‘¡‘‘}~‘‘‘‘¡¡¡‘‘‘~‘‘‘¡‘‘~~‘¡¡¡¡¡‘¡¡‘¡¡‘¡¡‘‘¡¢‘‘‘‘‘¡¡¡¡‘¡¢¢¡‘¡‘‘¡¡¢¢¡‘¡¡¢¢¡¢¦¦¢¡¢¦¦¢¡¡¢¢‘¡££¢¢¢£åþÿÿÿÿÿë««¦¢¢¡£¦¡¡¦«¦¦¦£¦£¡¢¢¡¢¦¦«¦£¦«¦¡¡¦«¦¡¡¢¢«¦¢¡¦¢¡¢¢£¦®¦¦£¢¦««¦¢¦¦¦£¢¢¢¢¡¡¡¢¦¢¢¢¢¢¡¡¡¡¢¢¢££¥¢¢¢¢£¦¦¦¦¦¦¢¢¢¡¢¢¡¡¡£¡¢¡¡¡¡‘¡¡¡¡¡¢¦¢¡¡‘¡¦¦¡¡¢¡‘¦¡¡¡‘¡¡¥êÿÿÿÿÿøÔ¢¡‘¡‘¡¡¡‘‘¡‘€€€‘¡‘‘¡‘‘€‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘~€¡¡‘‘‘‘‘~‘¡‘‘€‘~}}}}}~}}}~€}}}}~~}}}}}€}}}}~}~}}~€‘}}}}€‘~‘‘}}‘~}}}}}}šûÿà}×ÿæ}}}}vvvvv}|v}}}}}}vv}}}v}}}}vv}}}vpvvvv}vpv}}}vvvvvvppvpvvovvvvvvvvolvwov}vvpvlvvvolllloooouuovwvuolouolllllllouuluvolllltlCCllCCllCllulCltutlCAClC›ñüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷]99! !!!! !  !!!!! !!!!!!         !! !!      !!! !=q¥õþþþþþþþþþþýÿþÿýÿþÿýÿýÿýÿþÿþÿèÓ                                       Ó×ýüüþüþüþýüþüþüþþÿÿþÿÿÿÿÿÿÿÿþúÖŽ~‘~~‘‘~~~‘~~}‘‘‘~~~‘¡‘‘‘‘‘¡¡‘‘~¡¡‘¡‘‘‘¡‘¡‘‘¡¡¡‘‘¡¡¡‘¡‘£¡‘‘¡¡¡‘¢¡¡¢‘¡¡¢¡‘¡¡¢¡¡¢¡¢¢¢¢¡¢¡¡¡¢¡¢¡¡£¢¡¢¢¢¡¡¢£¢¢¢¡Ýþÿÿÿÿÿꫦ¦¢¢¡¢«£¡¢££££¢¢¢¢«¦¢¢££¢¢¢¡¦«¢¡¦¦£¢¦¢¦«£¢£«¦¦¦¡£¦¢¢¢££¦£¦¦¢¢¦£¢¢¦¦££¢¢¦¦£¦¦¦¢¡¦¦¦¦¢¢¢¢£¢¦¢¢¢¢¦¦¦¢¡¢¢¢¡¢¢¡££¢¥¢¡¢¦¡‘¢¦¢¢¡¦¡¡¡¦¥¡¡¡¡‘¡‘¡£¢¡¡¢¦Óûÿÿÿÿþ륡¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡‘‘¡¡‘‘‘‘¡‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘~‘‘‘‘‘€‘‘‘‘€~€€‘‘‘~‘€€}~€~‘‘€~}€}}}}~~€}}}‘}}~}~}}‘}}}}~}}}}}v~‘}˜ûþæ}}Óÿè}}}}}vv}}}}}}v|}v|v}|}}v|vvv||v}}vvv}vvvvvvv}vovvvvvvvvvvvopvpvvpovvpvolvvvlvloouopvvllvloooollpoollluvllollltulllllulClullCllClClllllllCCllCCCCClCCl›ñýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ==!!!Cóÿÿÿÿÿ÷_!!!!!!!!! !!!! ! !  !!!  !! !   ! !      !   !    !!  ! !=qªõþþþþþþþþþþþÿÿýÿþþþÿýÿýÿþÿþÿþæÓ                              Ó×üþüýüüýüüþüýýüüüÿÿþÿüÿþÿýÿÿÿûÖ}‘‘~}}~}}~‘‘~~~~~}~‘~~~~~~‘¡‘‘‘‘‘¡‘‘~‘¡¡‘¡¡¡¡‘‘¡¡‘¡¢£¡¡‘¡¡¡¡‘¡¦¦‘¡¦¡¡¡‘¡¡‘¡¡¡¢¢¢¢££¡¡¢¢¢¢¢¢¢¡¡¡¡‘¡¡¢¦£¢¢¢¡¡‘‘¢¢¡¢åþÿÿÿÿÿ榦£¦¦¡¢¦£¢¢¢¡¢¢¢¡¡¢££¢¡¢¡¡¢¢¢£¦¦¢¢¢¢£¦¦¦¦¢¢£«¦¦¦¢¦¦¢¡¡¡¢¢¢¦«¦¢¢¦¢¦¦¦¦¦¦¡¡¡¦¦¦«¦£¦««¦¦¢¡¡¡£¦£¡¡¢¦¢¡¡¡¡¢¥¦¢¡¡¡¢¦¦¢¦¦¦¢¡¢¦¡¡¦¡¡¡¢«¦¢¡‘¡¡¡¡‘¡¡¡¡­êÿÿÿÿÿûÖ££‘‘‘¡¡¡¡¡¡¥¦¢¡¢¢¡¡‘~~‘¡‘¡¡‘‘¡¡‘‘‘‘‘¡‘‘‘~‘¡¢¢‘€‘~}~‘‘‘~}~~€‘‘‘‘‘¡¡‘‘}}‘€~‘‘‘‘}}}~‘}~}~}‘‘}}€‘}}}}~~}}}}}}}~}}}}|}}s™úÿè}vÓÿèvvvv|}}}}}vvvv|}}vv|v||vvvppvvv}}|v€}}}||vvpovv|wpvvvvoppvpoooopolpvvvooopoopvvvlvvvvouvvvulllluooullulluvvlllllllltllClullllllllltllClCCCClCCCCCCCCCCC›óýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷] !!!!!!!!!!!!!!!!!  ! !!!  !!!!!   !! !!! !   !!!!! !  !!!  =q¥íþþþþþþþþþþýÿþÿýÿþÿýÿýÿþÿþÿþÿæÓ                              Ó×üüýüþüýýýýýüþüþþÿÿÿÿÿÿÿÿÿÿÿþûÖ~~‘}~‘~~~~~~~€‘‘‘~~~‘¡‘‘~¡¡€¡¡~¡‘¡‘¡‘¡¡¡¡‘‘‘‘¡¢‘‘¡~‘¢¡¡¡¡¢¡¢¢‘‘¢¡¡¡¡¡¡¢¡¢¡¡¡¢¡¢¦¢¡¡¡¢¦¢‘¡¢¢¡¢¡¢£¢¢¡¢¢¢¡¦¦¢¢Úþÿÿÿÿÿꦦ¢¢¢¢¢¢¢¢£¢£¢¢«¦¦¢¢¢¡£¦¢£££¦¢¡¦££¢¦¦¦¦£££¢¦®¦¢¦¡¦«¦¦¦¦¦¢¢¢¢£¢««¢££¢¦¦¢¢¦¢¢¢¦¦£¢£££££¦£¡¢¦¦¥£¢¢¢¢¢¢¦¦¢£¦¦¢¢¢¢¢¦¡¢¡¡¢¡£¦¢¡¢¡¡¡£¦¢£¡¡¡¢¡¢¡¡¢¡¬ûÿÿÿÿýí­¡¡¡‘¡¡¡¢¡¢¡¡¢¡¡¡¡¡‘‘‘¡¡¡‘‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘}‘‘‘‘‘~€‘‘‘€‘‘~‘‘‘‘‘‘‘}~}~‘‘~€}}€~}‘}}~‘}}‘~}}}}€~}}}~v|}}}}}}}}}™÷ÿè}}Óÿè}v|}}}}v}v}}}}}}vvv}}}}vv|vvvv|}}vpv}vvvpv}vpvvvvvvv}vvvppvvpovvvov}oopvopoovpvuuooouvooopoolllvvlllllluolulllllltolllllllllllllllllCCtlCCCClCCllCCCCACltÇ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!!!!!!!! !!!! !!! ! !  !!! !   !    ! ! ! !    !!  !! ! !=wšõþþþþþþþþþþþÿÿýÿýþþÿýÿýþýþþÿþæÓ      !                  Ó×üþüýüýüýüüþüýþüüÿÿþÿþÿþÿþÿÿÿýÖ‘~}~}}}‘‘~}}~€‘‘‘¡¡‘~}‘¡¡‘~~}~}‘~‘¡¡‘‘~‘‘‘¡¢¡‘¡¡‘¡¢¡‘‘‘¡¢¡‘‘‘‘¢«¡‘¡¡¡¦£¢£‘¡¡¡¡¡¡‘¡¢¢¢¢¢¢£¢¡¡¢¦¡¡‘¡¢¡¡¡£¢¢¢¦¦¦¦åþÿÿÿÿÿ릢¡¡¡¢¦¦¦¢¡¢£¢¢««¦£¢¢¢£««£¢¢««¢¦£¦£¦¦¢£¦¦¢¡¦¦£¦«¢£®«®¦¦¦¢¢¦¢¡¢¦¦¢¢¢¢£¦¦¦¦¦¦¡¡¡¡¢¢¡¡¡¢££¢££¢¦¦¦¡¢¢£¦«¦¡¡¡¡¢££¢¢¢¢¦¦¢¡¡¡¦£¢¡¡¢¥¡¡¡¢¦¡¡¢¢¢¦¢­êÿÿÿÿÿûÔ¦¦¡‘‘¡¡¡¦¢¡¡¡‘¡¡‘‘¡¡¡‘‘‘¡¡‘~~‘‘¡¡‘~‘‘‘‘€‘¡‘‘‘‘‘‘~~~‘‘¡‘‘‘‘€‘‘‘‘¡‘}}}}‘¡‘‘~€~}~‘‘¡‘~}}‘‘~}}€~}}‘}}}|}}€}}}}}}}v}}v}~€}˜õÿè}~Óÿõ}}}||v}}}}}~}}|v}vvvv}}}vvvvv}vv}vp}}}vvvv}}p}vvvvvv}vvvvvvvvvvolvvvvvvvvullollvvvllllullovuvollolollluvllClllllloollotlllltlllltCClCCClCCCCClCllulCAClluCuÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!=Cóÿÿÿÿÿ÷_!!!!!!!! !!!!!!!!!!!  !  ! ! !  !!! !!!   !! ! ! !!  =q’õþþþþþþþþþþþþÿþýÿþÿþÿýÿÿÿþÿþÿèÓ     !                           ××üüýüýüþüþýýýüýüþÿÿþÿÿÿÿÿÿÿÿþúÖ‘‘~~~~‘€~~~}‘¡~~‘‘‘‘~~‘‘‘€‘‘‘‘‘~‘‘¡‘¡¡‘‘‘¡‘‘‘‘¡¢‘¡¡¡¡¡¡‘¡¡‘¡¡‘¡¡‘¦¢¡¡¡¡‘¡¡¡¡¡¡¢¡¢¡¢¡¡¡¡¡¢¡¡¡¡¡¡¢¦£¡¢¢¢¦¥¡¢¡¢¢¦¢¢¢¢Ýþÿÿÿÿÿꥡ££¢¢¢££¢£¦£¢¢¦¦¦£££¢¢¦¦¢¢¢£££¢¢¦¢¦¦¢£¦«£¡¦¦¢«¦¢£¦£¦¦¢£¢£¦¦¡¡¦¦¦££££¦¢¢¦¦¢¡¦¦¦¦¦¢¦¥£¢£¢£¢£«¦¡¡¦£¦¦££¡¢¡¢¢¡£¡¦¦££¢¡¢¢¡¡¢¡¢¡¡«¢‘¡¡¡¡¡¢¢¢¦¬ûÿÿÿÿý륡¡¡¡‘¡¡¡¡¡¢¡‘¡¡¡¡¡¡¡‘¡‘‘‘‘¡‘‘¡¡¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘~‘‘‘‘‘}}¡‘€~‘‘}}~}‘‘}€}}‘‘}}}~~}}‘}~}}}}~}}}}}~}}}€}}}}}™õÿè}}Óÿè}}|v}}}v|}}}v||}v}}|}v}v|||vv||vvv}vvvvvvvvvvvpvppvvpvvvpo}}lovvvovvvvvovvvlvvovooololovvoooolluulloolllllolllululllullCllCCllullCClllllCCllCCClClCCCCCCCCxßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Zóÿÿÿÿÿ÷_!!!!!!!! !!!!!!!!!!!!! !! ! !  !     !!! !!  !   !!     =qªíþþþþþþþþþþþÿÿþÿýÿýþþÿýþþþÿþþæÓ                               ÓÙüýüýüýüüýüüþüþüüÿÿÿÿþÿþÿþÿÿÿûÕŽ¡‘~‘‘¡¡‘‘‘€‘‘~}}‘~‘~~~~‘¡‘‘‘‘~~¡‘‘‘~~~‘‘~~‘¡‘~‘‘¡¡¡¢¡¡¡‘¡‘¡¡¡£¡‘¡¡¢¡‘‘‘¡¢¡¡¡¢¡¢££¦¢¡¢¡‘¡‘¡¡¢¦¢¢¢£¢£¦¦¢¢¢¦¢¡¡¡¢åþÿÿÿÿÿ릣¢£¦£¢££¦¦¦¢¢¦¦££¦«£¡¢¢£¦®¦££¢¢¢£¡¢££££¦¦¢£¢¢¦¢¡¡¢¢¢£¢¦¦£¦£¢¢¢¢¢£¦¦¦£¢¢¡¢¢£¦««¦£¦¦««¦¢¡¡¡¢¦¦¡¦¦¦¢¢¢¢¡¡¦¦¦¥¡¡¡¢¡¡¡¡¡£¦¢¡¡¡‘¡¦¡‘¡¡¡¡¥¦£­êÿÿÿÿÿûÚ¦¢‘‘‘¡¡¢¡¢¡‘¡¡‘‘‘‘¡¡‘‘‘‘‘¡¡‘¡¡¢¢¢¡¡‘¡¢¡‘¡‘‘¡¡¡¡‘‘‘‘¡¡‘‘‘‘‘‘‘~‘‘€~~~‘¡¡‘€€‘‘~}}‘‘}~}‘~}‘~}‘‘‘~}}}}}€‘€}}}}}}~‘€€‘‘€‘‘~}}}~šõÿè}}Óÿõ‘~}}}}}}}vvv}v}pvv}}}}|v}€}}vvv}pvpvvvppvvvvvppppvpvvvplpvpv}}ooppvovvovvvvvooouvoovvvlluvoloouvvvvuulllloouvotllutlCllllllCCCCCoulllovtltlltlCAClCCCCCACCllCCƒáýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=!!!!Cóÿÿÿÿÿ÷_!!!!!!!!! !  ! !!    ! !  !! !! !!!! !    !  =}ªõþþþþþþþþþþþþÿþýÿýÿþÿýÿÿþÿýÿÿæÓ       !                                      ÓÓüþüýüüýýýüþüþüýþÿÿþÿþÿÿÿÿÿÿþûÖ~~~~‘‘‘‘€‘‘€~}¡‘}~‘€~‘‘‘‘‘~‘‘¡‘‘‘‘‘¡‘¡¡‘¡‘¡~‘¡‘¡¡¡~¡¡‘¡¡¡¡¡¡¡¡‘£¡¡¡¡¡¡‘¢¡¢¦‘‘¡¢¡¡¡¡¡¢¢£¢¡¡¡¡¢¢¢¢¡¢¦¢¡¢¦¦¡¡££¢¢¢¢Úþÿÿÿÿÿê«£¢¢££¢¢££££¢¢££¢¢£«£¢¢££««¢¢¦¦¢£¢¢£¦£¦£¢¦¢£££¦£¢£«¦¢¦£££¦¢¢¦¦¢¢£¢¦¦¦¦£¢£££¦£¦¦¢£¢£¦¦¦¢¢¢¢¢¦£¦£¦¦¢¢¢£¢¢¦¦¢¢¡¡¦¦¡¡¢¢¢¢¢¢¢¡¢¡¡¦¡¡¡£¡‘¡¦Ôûÿÿÿÿý륢£¡¡¡‘¡¥¡‘¢¦¡‘¡¡¡‘¡£¡‘‘¡¡‘¡¡¡¡‘¡‘¡‘‘¡¡¡‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¡‘€‘~‘~‘~€‘‘‘‘‘‘~~‘~‘‘~€‘€€}~}‘‘€}~‘~‘}}}}}~~}}}}}}}}}}}}~}}}}}}}}™õÿë}}žÿõ}vv}}}}}}v}}}vvv|v}}vv||}}vv|}vvvvv|ppv}vvvvvpvppvvvvppvvppvvpvpopvoovvvvvovuppvlovpoollvoooopoulloloollluollolllllllltllllllllllCllCllllCClCCAltCCClCCClCCCACCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Y÷ÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! ! !!    ! ! !      !!  !        !   =}ªíþþþþþþþþþþþÿÿýÿþÿýþþÿýþþþÿýþæÓ        !                                        ÓÙüüüýüþüüýüýüýýüüÿÿÿÿÿÿÿþÿþÿÿýÖ }}}}~}~~~~~}‘‘~}~‘‘~~¡¡‘‘‘‘‘‘¡¡‘‘‘¡¥¢¡¡¡¡¡‘‘~¡¡¡¡‘‘¡¡¡‘‘¡¡¡¡¦¢¡¢¢¡¡¢¡¡¢¡‘¡¡¡¡‘‘¡¡¢£¢¡¢¢£¦£¢¡¡¡¢¦¢¢¦¦£¢¢¢£¦¦¦Ýþÿÿÿÿÿë«£¢¡¡¡¢¢¢¢¢¦£¢¢¡¢¢£««¦«¦£¦¦££¢¦££¢¢¦¦¦¦£¢¢¡¡£«¦¢¢««¦«®«¢£¦££««¦£¦¢£¦««£¦¦¦¦¦¢£¢¡¡¢¦¢¢¢¦¢¢¢¢¢¦£¢£¦£££¡¡¢¦¢¡¦¦£¦£¡¡¢«¦¦¦¢¡¢¡¡£¦¦¢¡¦¦¡¥êÿÿÿÿÿûÚ¡‘¡¥£££¡¢¢¡‘¢¦¢¡‘‘‘‘¡¢¡‘‘¡¢‘‘¡‘‘¡‘~~~‘¡¡¡‘¡‘‘¡‘‘~‘‘}~~~~‘‘‘‘‘~‘¡‘~}~~€‘~}}}~€¡¡‘}}€‘‘}‘‘‘~}}}}‘‘~}}‘}}}‘‘‘}}v}}}}}}}}}v}}||˜èÿë}}§þ÷‘}}}}}}vvv}}v}}}v}}|vvvvv}|vvvvvvv}}|vv}}|vvvpvvvvv|vvvv}vvopvvvvpvoploooolooppooluvvovvouooululllvuouuolulloollllCllllllullvulCCClCCltCllllClCClCCCCCCCCtCCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ==!=$Bóÿÿÿÿÿ÷_!!9!!! !  !!! !!!!!!! !!!!!!  !! ! !  ! !!!!!!! !  !!  ! =}ªíþþþþþþþþþýþþÿþþþýÿýÿýÿÿþÿþÿÿæÓ                                         ÓÓüüþüþüýüýýüþüþüþÿÿþÿÿþÿÿÿÿÿÿúÖ}~~~~‘~€‘‘~~~}‘‘‘‘~~‘‘‘~‘‘‘‘‘¡¡‘~‘¢¡¡¡‘‘¡¡‘‘¡¡‘¡‘‘‘¡¡¡¡¡‘¡¡¡‘¡¡¢¡¡¢¡¡¡¡¢¡¢¡¡¡¡¡¡¡¡¡¢¢¡¡¡¢¢¢¢¢¢¡¡¡££¢¢¢¢£¦¢¢¢¢¦£åþÿÿÿÿÿꦥ££¢¡¢££¢£¦£¢¢¢¢£££££¦¦£¢¢¦«¢¢£££¢¦«£££¦£¢£¦¦«¦¢£££¦¦««¢££££¦¢¢¦££¦¦¦£¢££¦¦¢¢£¢£¦£¢¢¢£¦£¦¥¢££¢¢£¦¦¥£¡¢«¦¡¢¦¥¦¦¡¡£¦¢¢¥¡¢«¢¡¢¢¢¢¢¢¥Ôöÿÿÿÿþõ¦¡¡¡¡¢¡¡¡¡¡¡¡‘¡¥¡¡¡‘¡‘¡£¡‘¡¡¡‘¡‘¡¡¡‘¡~~¡¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘~‘‘‘~‘~~‘‘‘‘¡‘~€}~~‘‘‘~~}~‘‘}‘~}€‘}}~‘~}}~}~}‘~}‘}}}}}€}}}~}}}}}}}ñÿè}}žýõ™}w}}}}v}}}|v}|}}}}vv|v|vv||vv|}}p|v|vvvvv}vvvvvpvvvvvvvpvppppvvpvppooppplpvppolovpoolvvvlvlllluouoololuolluluollllllllltlCltlllllCClClllCtlCCCCClClCCCAClCAClCuþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Y÷ÿÿÿÿÿ÷_!!!!! !! !!!!!  ! !!!!! ! !!!  !    !  !!!!!  !   =}ªõþþþþþþþþýþþÿÿþÿþÿýÿþÿýþþÿþþýæÓ       !                                Ó×þüüüüýüüýüýüüþüüÿÿÿÿÿþÿÿþÿÿÿûÕ~}}}}}}}‘‘‘¡‘‘‘~‘‘¡‘‘‘~‘‘‘~‘‘‘~~‘‘‘¡‘~¢¡¡‘~~‘¡¡¡¡~‘¡¡¡¢¡‘¡¡‘¡¡¡‘¢¡‘‘‘¡¡‘¡¡¡¡¡¢¢¢¢¦¦¢¢£¦¢¡¡¡¢¢¡¡¡¢¢¢¢£¢¡¡¡¡¢¢¢¡¡¡¡¢Ýþÿÿÿÿÿ릦£££¢¦¦¢¢¢¦¦£¢¢£¦¢¢£¦¢¡¢¢£®¦¢¢¦¦¦££££¢££¢£«®£¦¦£££¦¦¢£¦£££££¦¦££¦¦¢¢£¢£¦£¦«¦¦¦¦¦£¢¢¢£¦««««¢¢¡¡¢¢¢¢£¦£¢¦¦£¢¢¢¢¦£¢¦¦¢¡¡¡¦¦£¢¡¡¡¢¦­êþÿÿÿÿûꦡ¡¡¦¦¡‘‘‘¡‘¡¡‘‘¡¡‘¡¢£‘‘¡‘‘¡¡¡¡£¢¡¡¡‘¡‘‘¡¡‘~‘‘~~~‘‘¡¡¡¡‘€‘‘¡‘~~‘‘}~~‘‘‘‘¡‘€‘‘~}‘€‘‘}‘‘}~‘~~}}}‘‘}}}}€‘€€‘‘€}}}~}}‘‘‘}}}}}}}}~}}‘èÿèv|žý÷™}}vv}vv|}}v}}||}}}vv}}}}vv}}vvvwvvvvvppvvvvv|}vpvvppvvpoppvvpvvvolopvoplovvppvoopvvvpoovppvvlllloolollllollllvvollooolllCCClCltClCCCCCCllltCllCltoClCCCCCCCCCCÇÿÿÿüñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$!!@óÿÿÿÿÿ÷x!!!!!!!!!!!!!!!  !! ! !  ! ! ! ! !!!! !!!!!!!!  !!!  =q¥íþþþþþþþþþýþþÿþþýÿþþþþÿþþÿþÿÿæ×     !                                           Ó×üüþüþüýüþüýýüþüþÿÿýÿþÿÿÿÿÿÿþýÖŸ‘Ž}~€~~~~~‘‘‘‘‘‘~‘‘~‘¡‘‘‘‘~‘‘‘¡~~¡‘‘‘‘‘¡¡¡‘‘¡‘¡‘‘‘‘‘¡¡¡~¡¢¡~¡‘¡¡¡¡¢‘‘¡‘£¦‘¡¡¡¡¡¢£¡¡¦£¡¡¢¡¢£¢¡¢¢¢¡¢¦¢¡¢¢¡¢¢££¡¢¢¡¦¢¢¡Úþÿÿÿÿÿꫦ¥¢£¦£¦¢¢¢¢£¦£¢£¦£¡¢«¦¢¢¢£££¦¦££¦®£¢£¦£¢¦«¦®¦¢¦££¦¦«£¢¢£¦¦¦£¦¦£¢£¦¦££££££¦¦££¦¦£¢¢¢££££¦®«¦£¡¢¦£¡¢¦¦¢¢££££¢¢£¦¢¡¢¢¢¢¢¦¢¡¢¢¡¡¡¥Üöÿÿÿÿþí¨¢¦¡¡¡¡£¡¡¡¡¢¡‘¡‘¡¡¡¡¡¦¡‘‘¡¡‘‘¡¡¡¡¡¡¢¡‘‘‘‘¡¡‘‘¡¡‘~‘‘¡‘‘¡‘‘‘‘‘‘}‘¡‘~~‘‘‘‘‘‘~‘‘}~~~‘‘}~~~‘‘~~~}}¡‘}}}}‘‘}~‘‘}}}}‘€}}}~~}}}}}}}}}}™èÿè|}žúú¥}}}}}}v}}|}|}}}v}|v|}}}v||}}vpv}vpv}vpvvvvvvv|vpvvvvvpppppvvpvvpoppvvpopovvvlvpoooovvovolvvvlllovolllllluulllluullltoolClllllllCCtlClClCllllllCCCCCllCllCCCCluúÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@!!Yóÿÿÿÿÿ÷_!9!!!!!!!!!!!! !!! !!!! !!!! !!  !!  !!     !  ! !=q¥õþþþþþþþýýþþÿÿýÿþþÿþÿýÿþþÿþþþæÓ     !                                   ÓÙüüüüüýüýüýüþüüüüÿÿÿÿÿÿþÿþÿÿÿûÖ¢‘~}‘¡¡‘‘‘‘‘‘‘~~~‘‘~~~‘¡¢¡‘‘‘‘‘‘~¡¡~~~~‘‘‘‘‘‘‘¡‘‘¡¡‘‘¡¦‘‘¢‘‘¡¢¡¡¢¢¡¡¡¡‘¡¢¡¡¡¢¡¡¢£¡¡¡¡¡¡¢¡¡¡¢¡¡¡¡¡¢¦¢¡¡¡¢£¦¦¦£¢¢¦¦¦££êþÿÿÿÿÿ榦¦¢¦¦£¢¢¢¦¦£¦¦¦¦«¦¢¢«®¦£££¢¢£¦£¢£«£¢««¦£«¦£¦¦¢£¢££¦¦£¢¢¢¢£¦¦£¢¢¢¢£®«¦£¢¢¡¢£¦££££¢¢¢£¢¢¡£««¦¢¡¦«£¢¢¢¢¡¡¡¡¢¢¢¢¡¡¡¡¡¡¦£¢¡¡¡¡¡¢¡¦êþÿÿÿÿûꦡ¡¡¡¢¡‘‘‘¡¡¡¢¡‘¡¡¢¡‘¡¢¢¡‘‘¡¡‘‘‘‘¡‘‘‘¡¦‘‘‘‘‘‘¡¡¥¢¡‘‘‘‘‘‘¡‘‘‘‘‘~~‘¡¡‘‘~~}~€~~‘‘‘~~}}~}}}}‘‘‘~~~~~}}‘~‘}}}~}}‘€}‘‘}}|v}}|}}‘}}}}}‘èÿñ}}§ûúž}}~}~~}}}}vv}}}}|}vvv}v}vvv}vv|}}vvvpv}|pppppvpvpopvppvvvplopopopvvvvpvppovpooovvvlllollllvollolovlouvullolluolllllllvvlllooouuCCluoullltlCCCCllCCClultCCCCCCÿÿÿÌCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!==!Cóÿÿÿÿÿ÷]!!!!!!!!!! !! !! !!   ! !!!! ! ! !!    ! !  !q¥íþþþþþþýþþýýþÿþþþÿþþþýÿþþÿþÿÿæÓ       !     !                                         Ó×üüþüüþüýüüýüüýþþÿÿÿþÿþÿÿÿÿÿÿúÖ ~€~‘‘‘‘‘‘~~‘~‘‘}~‘‘¡¡¡¡‘~~‘‘‘¡‘‘¡‘‘‘~‘¡¡¡¡‘¡¡‘¡¦¡~¡¢¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¢¡¡¡¡¢¢¡£¢¡¡¦¢¡¡¡¡£££¦£¢¢¢£¢£¦åþÿÿÿÿÿꦦ¦£££¢¢¢¢£¦££¦¦¦¦£¢¢¦¦££¦¦¢¢¦¦¢¢¦«£¢«®¦¦¦¢££¦«£¢££¦££¦£££¢£¦¦¢¢£££¦¦££¢£¦¢¢£££¦£¢¢££¢¢¢£«¦£¢¢£¦££££¢¡¡¢¢¢¢¢¢¢¡¢¢¢¢¦¦¢¢¡¡¡¡¢­õÿÿÿÿþö­¦¡¢‘¡¢¢¡¡¡‘¢¦¡¡¡¡¡¡¡¡¡¦¡¡¡¡¡¡¡¡¡‘‘¡¡‘‘¢¢‘¡‘‘‘‘¡‘¡¡¡‘‘‘‘‘¡¡¡¡‘~‘¡‘‘‘‘‘‘‘€~~~~€‘~‘‘€~}~}‘‘}}‘‘€‘€‘}}~‘~‘~}}‘~}}‘‘}~‘}}}}}}}}}‘}|}€}èÿõ}}žúû§|}}}}}}}}}v}}}}}v|}v}}v}v|}}}vvp|vv}vp|vvppvpvvvvopvvpvvvplvvpvopppvvvvvvooploppvppollplllooppllooooooloolloolloollllvlCloltlollllltlltllCCllCCCCCCllltlCCACC÷ÿÿõZlýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!!Bóÿÿÿÿÿ÷_!!!!!=!!!!!!!! !!!! !  ! ! !! !  !     !! !! ! !qªíþþþþþþþýýþþÿÿýÿýþþÿþÿþÿýÿþþþæÓ                                                    ÓÙüüüüüüüþüýüýýüüüÿÿÿÿÿÿÿþÿÿÿÿþÖ~€~~}‘~~~}}~¡¡‘‘‘‘‘‘~~~‘‘‘‘~‘‘‘‘¡‘~¢¡‘‘‘¡¡¡¡¡¡‘¡¦¡€¡¢¡¡‘¢¢‘¡¢¢¡‘‘‘¡¡¡¢¢¡‘¡‘¡¡¡¡¡¡¡¡¦¦¢¡¡¡¡£¦£¦¢¡¡££¢¢¡¡¡¡¡¡¡¢¢¡¢¢¦¦åþÿÿÿÿÿ뫦¢¢££¦«¦¢¢¦¦¢¡¢¢£¦££¦££¦¦¦¢£«®£¡£¦¦¦®®££¢¡£¢¢¦££«¦££¦¦««¦¡¢¢££¦¦££££¦¦££¦¦£££££££¦¦¦£¦¢¢£¢£¦¢¢¦«¦£¢¢¡£¦¦££¢££¦«¦¦¢¢££££¢¡­êþÿÿÿÿûড¢¡¢¡¡¦¢¡¢¢¢¦¦¡‘¡¢¦¡¡¡¡¡‘‘¡¢¥¦¡¢¦¡¢¢¡‘¡¡¡¡¡¡¡¡‘¡¡‘‘‘¡¡‘~~‘‘‘‘‘~‘¢¡‘‘~~‘‘¡‘‘~~~‘‘~}~‘~‘‘¡‘‘~~~€~~}‘}}}~}}}~‘€}~~}}}}}}€}~}}}~}}}~vàÿò|vš÷ýÇvv|vp}}}vrpvvv}}vvv}}}|pppvv}}vvvv}}}vpv}vvvv|v|}vvvvvvvvvvvvpvpppoppopopvlolopopooollvvvolloolouvolllolloulllllllCCCllClllloClCllCllCCCCClttltlClCCCCCCCCCC”ÿÿÿ›CÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Zóÿÿÿÿÿ÷]!!!!99!! ! ! !! !!!!!! !! !!   !  ! !!  ! ! ! !! !=}ªõþþþþþýýþþýýÿþÿýÿþþþþþýÿþýÿþÿæÓ                                                                ÓÓüüüþüþüüüþüüýüþüÿÿÿþÿþÿÿÿÿþÿûÖŽ}‘~~~~~‘~~‘‘‘‘‘‘~~~~‘‘‘~‘€‘‘‘‘‘‘¡¡‘¡¡¡¡¡¡¡¡¡¢¡‘‘‘¡¢¡¡¡‘¡¡¡‘‘‘¢¡‘¡¢¡¡¡¡‘¢¦¡¡¡‘¡¦¢¡¡¡¡¡¡¦£¢¢¡¡¡¢¢¢¡¡¡¢££¡¡¡¢£¦¦¦êþÿÿÿÿÿꫦ¢¢£¢¦¦¦¢¢¦¦¡¢¢¢¦£¢£«¦¢£¦¦¢£®«¦£¢£¦¦¦¦£«¢¢£¢£££¦¦«¦£¦££®¦¢££¦£¦£¢£¢¦«¦££¦¦££££¦¢¡¦®¦¦££¢£££££¢«¦¦£¢¢¢£¦¦¢¡¢£¦¦££¦¦¡¢¢££¥Ôöÿÿÿÿþö­¡¢¡¡£¢¡¢¢¡¡££¡¢¡¡¡¡¢¢¡¡¡¡¡¡¡¡¡¡¦¡¢¢¢¡¡¡‘‘¡‘¡¢¡¡‘‘¡¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘}~‘‘}}‘€~~‘‘~‘€~}~~‘}}}~}}}}}‘~€~}}}}}}~~}}}}}}}}~}}}àÿô}}™õýÓv|vp}|}}vvvv}}}|vp}|}|vv}vvv}|vv||v|vvpv|vvpvvvpv}vvvpvvp}}ppvppvoopvoopoppllovpoollopvvoolopplopplllolllllllluplllCllllClllllCllllClllClCCllClllCCCCCCClCAlèÿÿßCl÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9=!!Yõÿÿÿÿÿ÷_!!!!!!!! ! !!!!!!! ! !!! !!  !! !  !!   ! ! !!!! !    ! !=}ªíþþþþýþþýýþþÿÿýþþþÿþÿþÿýÿýÿþþæÓ                                         ÓÙüýüüüüþüýüýüýüüüÿÿÿÿÿÿþÿÿÿÿÿûÕ~}~‘‘~}~€‘‘~~‘~~€‘‘¡‘~‘~‘‘€¡‘‘‘‘‘‘~~‘¡‘‘¡¡~~€‘‘‘¡‘‘‘~¡¢¡¡‘‘¡‘‘¡¡¡£¢¡‘‘¢¡££¡¢¦¡¡¡¡¢¡¡¡¡¦¢¡¡¡¢¢¢¦¦££¢¡¡¢£¡¢£¥¦£¢¢£££Ýþÿÿÿÿÿꥦ¢¢¢£¦®¦¢¦«¦¦¦££«¦£¦®«¢¢£¦¦¢¦¦£¦«¢££¢¢¢¦«£«£¦««¦¢¦£££¢¦±®¦«««¦«£££¢£££¦¦¦££££¦¦¦¢£¦£¢¢¢¦£¢¡¡¡¢££¢££¦¦¢££¢¡¢¡¢£¢¡¡¢¡¡¡¡¥Ýýÿÿÿÿýঢ¡¡‘¡£¡¡¡¡¢¥¢¡¡¡¡¢¢¦¡¡‘¡¡¢¡¡¡‘‘¡¡¡¡¡¡¡¡¡‘‘‘‘¡¡‘¡¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘}~‘‘~€‘~¡‘‘‘‘‘~~‘¡‘‘‘€‘}}‘‘~‘‘}~‘}~‘}~~}}~~}}}~}}}‘‘}}}}}}}}~}}}}àÿõ~~šõþÚ}}}}}}}}v}}~}}v}vvv}||vv}}|vvv|vvvvvw}}vvvvpv}vop}vvvvvppvvpppoppppvvppooovvpvvvvplpolooopoovvlloolloovoClllllovlluluoououllCClCClllCCCloCCllCCCCCllCCCACCCƒÿÿúxC›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!@óÿÿÿÿÿ÷_!!!! !!!!!!!!!! !!!9!!! ! !   ! ! ! ! !! !   =p¥õþþþýþýýþþýþþÿþýÿýþþþþýÿþÿþþÿèÓ           !                                                   Ó×üüüýüüüüüþüüýüýþÿÿþÿþÿÿÿÿþÿÿúÖŽ}~‘‘}~~‘‘~‘¡‘~~‘‘‘‘‘‘~‘‘‘‘‘‘¡‘‘~‘¡‘¡¡¡~~¡¡‘¡‘~¡¡‘‘¡¡¡‘‘‘¡¡‘‘¡¡¡¡¡¡‘¡¡£¦¡¡¡¢¡¡¡¢¡¢¡¡¡££¡¡¡¢¦¦¦¢¢£¢¡¡¡¢¢¢¢¦¦¢¢¢¢£¢åþÿÿÿÿÿꦣ££££¦¦¦£¦¦¦¦¦¢£¦¦¦¦««¢¢¦¦¦¦££¢£¦¢¦«¢£¢¢¦¦««¦®¦¢¢®¦£¦¢£®«£¦««¦¦£££¢£¦¢¢¦¦¦¦¦¦£¦¦¢£¢£¢¢¦¦£¢¢¢¢¢¢¢¢£¦¦£¢£¦¡¢¡¡¢£¢¢¡¡¢¢¡¥àþÿÿÿÿøÜ¢¡¡¡¡¡¢¢¡¡¡¢¡¦¦¡‘¡¡¡¡¢¡¡¡¡¡¡‘¡¦¡¡¡¡¢¡¡¡‘‘¡¡‘‘¡¡¡¡¡¡‘‘¡‘‘‘‘¡¡¡‘~‘‘~~‘‘‘~‘‘‘‘‘‘‘¡‘~‘‘‘~‘‘~}‘‘‘‘‘~~}~‘‘~‘}}}}}~}~}~~}}}‘~}}}}}€~}}}}}}Ùÿõ}}™õþà}}}}v|}}}}w}‘}|vvp}vpvv|}}}}vv|}vvvpv}|vv}vov}vpvvvpv}vpvvvvvvvppoovopopvpvvppvvvoloooppovopoooooolollvllllulloololllllllllClllCClllCClltlCllCCCCCCCCClCCCCñÿÿÆCtòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$==9@÷ÿÿÿÿÿ÷_!!!!!! !!!!!!!!!!! !!! !!!!!! ! !  ! ! !!!  !  !q¥íþþþþýþþýýþþÿÿýÿýÿýÿþÿþÿýþþÿýàÓ                                             Ó×üüýüþüüþüüýýüýüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ}}‘‘~~‘€‘‘~~‘~}~‘‘~}}‘¡‘‘‘€¡¡¡‘¡¡~‘‘‘‘¡‘¡£¢¢‘~‘¢¡¡‘¡¡¡¢¢¢¡¡‘¡¢¡‘¡¡¢¡¡¦¡¡¡¢¢¡¡¡¢¢¡¡¡£¢¡¡£¢¢¢¡¢£¢¡¡¢¢¢£¦¦£¦¦¢¢¢¢¡¢Ýþÿÿÿÿÿ릣£¢£¡¡¢¢¢¢¢¢£¢¡¢¦¦¦££¦¢¦¦££££¦£¢¢¡¦®¦«®¢¢¢¢¦¦¦£¡¦®££«¢¢££¢¢££££££££¦«£¢£¢£¦¦«¦££¦«¦¢¢£¦¦¦£¢£¦¦££¦¢¢¢¡¢£¦¦£¦£¦¦¦¦£££¢¦êÿÿÿÿÿõ§¦£¡¢£¢¡¡¢¢¢¡‘¢¦¢¡¢£¡¡‘¡¡¡¢¢¡‘‘¡¢‘‘¡¡¡¡¡¡‘‘¡¡‘¡¡‘‘‘¡¡¡‘‘¢¡‘¡‘¡‘‘¡¡‘‘¡¡‘€‘‘‘‘‘~~}‘‘~}‘‘}}~‘}~‘‘}}}~}~}‘‘‘‘~‘‘}€‘}}}~~}~‘}}~}}}}}}}}}}}}}‘Ùÿò}vèÿæ}}}}p}}}}}pv}}v}}}}}vv}v|v}}vpv|v}vp|vvvv}}pv}|ppvvppvvvpvpvvvvv}pppvvvvvvvooooovvpplloollooolooooooolloollolllllolCllllllllCllCCulCClCllCCllCCCCCCACllCCC{ÿÿòCC˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_ !=!!!  !!! !! !   ! ! !!  ! ! !   ! ! !!    !  !  !9ŽªõþþýýþýýþþýþþÿþþýÿþþþþþýÿþÿýÿèÓ                                                         ÓÓüüüüüüüüüüþüþüþüÿÿÿÿþÿÿþÿÿÿÿúÖ}}‘¡~‘‘~~‘‘‘€~~~~~~~‘‘‘‘~‘‘¡¡‘‘¡¡‘‘‘‘¡¡‘¡¡¡¡¡‘¡£¡¡‘‘¡£¢¡¡¡¡‘¡¦¡‘¡¡¡¢¡¢¡¡¡¢¢¡¡¡¢¢¡¡¡¢¢¢¦£¢¢¡¢¦¦£¢¡££¢¡£¦¦£¢¦¢¢¢¢¡Ýþÿÿÿÿÿꦥ££¢¢¡¢££££¢¢¢£££¦££££¦¦¦¢£££¦¢¢¢££®««¦£¢¢£¦«®£¡¦¦££¦¦£¢¢¦¦¢£¢¢££££¦¦££¢¢£¦¦¦£££«®¦£££¢£¦¦££¦¦¢¢¦£¡¡£¢¢¦¦£¦¦££¢£££¢­íÿÿÿÿýꥡ¢¦¢¢¢¢¡¡¢¢£¡¡¢¢¡¡££¡‘¡¡¡¡¢¢¡‘¡¡¢¡‘‘‘¡¢¡‘‘¡‘¡¡¡¡¡‘¡¡‘¡¡‘¡¡¡‘¡¡‘¡€‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘~~‘‘‘~~‘}}¡‘~~‘‘€~}~}}}~‘‘‘‘‘~}~}}~}}~}~}~~}}}}}~}}}}}}}‘Ùÿõ}wèÿè~}}}}}}}}|p}}|}}v}}}}vvvvv}}}}vv|v|vv}vvv|}vv}vppvvvpvvvvpvvpppv}povvvvvvvvoloppvvpollpollvplllloooovolllllolllllllllollCllllllCCuollllCClCClCCCCCCCCCCCClèÿÿƒClòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷]!!!!!!!! !!!! !! !!  !  !!  !!    ! ! !   !  ! !=}ªíþþþþýþþýýþþÿÿýþÿýþÿýÿýÿýþþÿýæÓ          !  !                                                              Ó×þüüýüþüþüüüüüüüüÿþÿÿÿÿÿÿþÿÿÿýÖ ~}}~~~}~‘‘‘‘‘‘~~‘‘¡¡‘¡‘‘€¡¡‘~~‘‘~‘‘‘¡¢¡‘~‘‘‘‘‘‘¢¥¡¡¡‘‘¡¡‘¡¡¡¡‘¦¢¡¢¥¢¡‘¡¡¡¡¡¡¡¢¢£¡¡¢¡¡¢¢¢¡¡¡¡¡£¢¢¢¢¢¢¢¡¡¦¦¢¢¦¦££¡£åþÿÿÿÿÿ뫦¢£¡£¦¢¢££££¢¦¦¦££¢¢¢¢£££¦¦«¦«¦¦®®¦¦£¦£¦¦£«®£««££¦«¦££«««®«££££££¦«¦¦¦««£££¢£¢¢¢££¦£££¢¢¢£¢£¦¦¢¡¦¦¢¢¦¦¦¢¡¢£¢¢¢¢¢¢¡¢êÿÿÿÿûݦ¦¦¦£¢¢¢¢‘‘¡¡¢¢¡¡‘¡¡¡‘¡¡¡¡¡¡¡‘¡¡¢¢¢¢¢¢¡¢¢¡‘¡¢¡‘‘¡‘‘¡‘‘‘‘¡¡¡~‘‘‘¡¡¡‘‘‘¡‘‘¡¡‘€‘~‘~~€€‘¡‘‘‘¡‘~}‘‘~~~}~~‘‘~‘~}}}}}}~~}}‘‘}}}}}}‘€~~}}}}}}}}}}w}‘×ÿõ~}æÿè}}p}}v}}}}vvs}}}wpp|v}}p}}||v}pvvvvp|}|pppvvpv}pv|vpvvvvvvppvvo}wplvvppolopplpoooolvov}volvvolppooolovllooolllloullClllClClllllCCllCCllCCllllClCCCCllCllC{þÿáC>›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_$!!!!!!!!!!!!!  !! !!!!!! !!!!      !    !  !9p¥íþýýýþýýþþýþþÿþþýÿýþýÿþýÿþÿýÿæÓ                                                            ÓÓüüüüüüüüüüþüýüþþÿÿÿÿþÿÿÿÿÿÿÿûÖ ‘~~}~~~~~}~‘~‘‘‘‘‘‘‘‘¡‘‘~~‘‘‘~¡‘‘‘‘¡¡¡¡‘~¡¡~¡¡¡¢¡¡¡~¡¢¡¡‘¢£‘¡¢¡¡¢¦¢¡‘¡¡¡¡¡¡¡¡££¡¡¢¢¡¡¢¡¡¡¡¡¡¢¢¢¢¢¢¢¢¡¢¦¦££¦¦¦£¢¢êþÿÿÿÿÿꫦ¢¡¡¦¦¢¢¦¦££¦¦¦¦¦£¡¢£¢£¦££¦®¦£®®«¦®¦¦«££¦£¦®¦£¦«¦¦¦¦££««««£¦£««££«®««£¦«¦¦£££¢¡£¦¦¦¢¢£¢¢¦£¡£«¦¢¢¢¢¦¦£¦¦¦¡¢¢¢¡¢££¢¡­ûÿÿÿíÔ«£££¦¦¦¢¡¢¡¡¡¡¢¡£¢‘¡¡¡‘‘¢¢¡¡¡‘¡‘¡¢¡¢¢¢¢¡¡¡‘‘‘¡¡¡‘¡¡‘¡‘‘‘‘¡¡‘‘‘‘‘‘¡¡‘‘¡‘‘‘¡¡‘‘~‘‘‘~‘‘‘‘‘‘‘‘‘‘~~‘€€~~~‘‘‘}}‘‘}}}}}~}}‘‘~~}}}~‘~}}}}~}}}}}}}}}}‘Óÿõ~}™æÿè}}}p}}}wvppvp}}vvv}}}v}}}ppv|v}pppvv}vvvpvppvvvv}vpppvvvvppvppvpvpvpovllooopooollpvov}vllvpopvpooooollvoooolCloollllllllllClulllCCllClCCClCCCllCClClClCCáÿý{CCóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Yóÿÿÿÿÿ÷x!!!!!!!!!!!!! !!!!!  !!!! !!!!!!! !!     ! ! !!   ! !!!!!!   $qšíþþþþýþþýýþþÿÿýþþþÿþÿýþÿþþþÿýæÓ                                                                       ÓÙüüüüþüüþüüüüþüüüÿÿÿÿÿþÿÿþÿÿÿýÖŸ¡‘‘~}~‘€~~‘‘‘‘‘‘~‘‘¡¡~‘€‘‘‘~¡¡¡‘‘‘~‘¡¡‘¡¡¡€‘¡¡¡¡‘¡‘‘£¡‘¡¡¡~‘¡¡¡¡¡¡¡¡¢¡¢¢¡¢¡¡£¢¡¡¢¢£¡¢¢¢¢¡¡¢£¢¢¢¢¢¡¢¡¡¢¢¢¡¢¢££¡¢Ýþÿÿÿÿÿꦦ¦£¦¦£¢¦¦¢¦¦¦¦¦¦¦£¢£££¦£¦¦®®¢¢¦¦¦£¢¢¦«¢¦£¢¦¦£¢¢£¦¦«««¦¢£¦¢£«¦®«¢£«££¦¢¢£«¦£££££¦¦£¦¦£££¦¦£¢££¢¢£¦¦¦£¢¢££¢¡¢¢¢¢¢¦¢¢­ûÿÿû§¢¢¡¡¢¢¡¢£¢£¡¢¡¡¡¢¦¦¢¢¢¥¢¡¢¢¡¢¡‘¢¡¡¡¡¡¡¢¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡‘¡‘‘‘‘‘¡‘‘€‘‘‘¡¡¡¡‘~‘‘‘~‘¡‘~‘‘~~~~~}~¡¡‘~‘‘~~~‘~‘‘~~‘}}‘‘‘‘€~~~~}~}}~}}}}}}}}~}}}}}}}}}}Óÿè}}‘àÿõ}}}}p}}}}}}}}}vv|}v|}vv}}}vvvvvvp}|}}vvpppvv}vpp|vpvppvpppvpoopopvpov}popvvvvpplvvolovvlloooooooloooooolllvulupllllootllllllloolCCllClCCloCllCClluCCCCC{ýÿÎCC›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Aóÿÿÿÿÿ÷_!!!! !!!! ! !!! !! !!!! !!! !  !! !!   !=}ªíþýýýþýýþþýþþÿýÿþþþþýÿýþýÿþýÿæÓ           !                                                                                           ÓÓüüüþüüüüüüþüüüþüÿÿþÿÿÿÿÿÿÿÿþûÖ‘‘~~~~~‘‘~‘‘¡¡‘‘‘~~‘‘‘‘¡¡‘‘¡¡¡‘¡‘‘~‘‘‘¡¡¡¡¡¡‘‘‘‘¡‘‘¢¡¡‘¡¡¡‘‘‘¡¡‘‘¡¢¢¢¡¡¡¡¡¡¦£¡¡¡¢¦¡¢¦¢¡¡¡£¦¡¢¢¡¡¡££¡¢¢£¢¡¡£¢¡¡Ýþÿÿÿÿÿꥦ¦¦¦£££¦£¢¦«£¦¦¦¦¦£¦¦¦¢£££®®£¢¦®£¢£¢£¦£¦¦£££¦£££¦¦¦¦¦¦££¦£¦«®«¦££¦¢¦«¢¢¦¦¦¦¢¢£¦««¦¦¦£££¦¢££££¢£¦«¦¦£¡¡¢¢¢¢¢£¢¢£¦¢¡¢ëÿÿø¦¢¢¡¡¡¢¢¢¦¢¢¡¡¦¢¡¡£¦¡¡££¢¡¢¢¡¢¢¡¢¢¡‘¡‘‘¡¡¡‘‘‘¡¡¡¡‘¢¡¡¡¡‘‘¡¡¡¡‘¡‘‘¡¡‘¡¡‘‘‘‘~‘¡‘~‘¡‘~‘‘~‘~~}~‘‘‘~~‘‘‘}~~~‘‘}~}~‘~~}}}}~€‘~}}}}}}}~€‘}}}}}}}}}}Óÿæ}}àÿõ™}}vp}}}}}}}}}}}p}qv}}v}p}p}}}ppp}}}}v|vvvppv}popvvvvvppovvvvooolpvpovvvppvvvvpovvpllovoollloolollooloollllooovvllllouolllllllllolCCllllClllCllCClllCCCCßÿúyCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!! !!!!!! ! !  !!!!!!!!!!! ! ! ! !!! ! ! !!!! !!  ! !  =}ªõýþþþýþþýýþþÿÿýþþþþþÿýÿýÿýþÿýæÓ                                                                                       ÓÙüüüüüüýüýüüþüüüüÿÿÿþÿÿþÿÿÿÿÿþÖ ~~‘‘~}~~~~‘~~~¡~~~~‘‘~‘¡¡‘~‘‘‘¡¡‘‘¡¡‘¡¡¡~‘¡¡¥¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¢¢¢¢¢¡¡¡¡¡¡¢¢£¡¡¡‘¡¦¡¢¢¡¡¡¡¦¦¢£¢¡£¦¢¢¢£¡¡¢¦£¢¢£¡¡£¦¦¦êþÿÿÿÿÿ뫦¦¦¦¢££££¦¦£¢£¦£¦¦¦¦¦¦¢£££®¦££¦¦£¦¦¦¦®®®«¦¦£¦©¦£££££££¦¦¦¦¦«¦¢££¢¢£«®¦££¢£««£««¦¦£¢¢¢¢£¢¢££¢¢£¦¦££¢£¢¢¦¦¦¦¦¦£¢¢¦¢¡¦°ûÿÿꦫ¦¡¢¢¡¡¡¢£¢¢¦¢¡¡¡¢¡‘¢¢¡¡¡¢¢¢¡‘¡¢¡¡¡‘¡¡‘¡‘¡¢¡¡¡¡¡‘‘‘¡¡¡‘‘‘¡¡¡¡‘‘‘‘‘~‘¡‘‘¡¡‘~€¡‘~~‘‘‘‘€‘~~}~~~~~~}~}}‘‘}}~}~‘}~€~}~‘}~~~~}}}}~}~~}}}}~~}}}Óÿæ}}Ùÿõš}}}}}}}}}p}pv}}}}vv}}|v}pvp}}}}}pwvvppv|v}ppvvppvpppppopv|vvppvvvvoopvoopvolooovpopoloooooovopuooovoollollllllvlllCCllllllvolClllllCCCCllCCCllCCCCCCCCƒüÿÉCCÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉ!=!!Bóÿÿÿÿÿ÷_!!!!9!9!!! !!!  !  ! !!! ! !  !! !   !!   ! !=q¥íþýýýþýýþþýýþÿþþÿþÿþþýÿþýÿþýÿæÓ                                                                                                 ÓÓüüüüüüüüüüüüüüþþÿÿÿÿÿÿÿÿÿÿÿÿúÖ Ž‘~‘~~‘~~~~~‘~~~‘‘¡¡‘~‘¡‘¡¡¡~‘¡¡¡¡¡¡‘¡¡‘¡¦¡‘¡¡¡‘¡¡¡¡¡¡¡‘¡¢¢¢¢¡¡¢¡‘‘¡¢¡¡£¢¡¡¡¡¡¡¦¢¢¡¡¡¢£¦£¢¢££¢¢£¡¡¦¦¦£¢¢¡¡£¦¦¦êþÿÿÿÿÿꦦ¦«¦¢¢£¢¦¦££¦¦£££¦®¦¦¦¢£££¦¦£¦£¢£¦®¦¦®«¦®®¦£¦¦¦£¢£¦¦¦£¦£¦¦¦¦¦¢£¦£¢¢«®¦¦¢¡¦®«¦«¦£¢¢¢¢£¢£££¦¢¢££¦¢¢¢££¢£¦¦¦¦££££¢¢¢¢£¦êÿÿý­«¦¡¡¢¢¡¡¡£¢¢£¢¢¢¡¡¢¢¡¢‘‘¡¢¢¡¡¡¡¢¢‘¡‘¡‘‘¡‘¡¡£¡¡‘‘¡‘‘¡¡¢¡‘¡¡‘‘‘‘¡‘~~¡‘~~‘¡¡¡‘¡‘~¡¡~~‘‘€‘‘‘‘}}~~}~~~}~}}~~~‘€~}}}}‘‘~}‘}}~~~}}~~}}}~}~}}}}~}‘Úÿà}}}Ùÿúž}}}}}~}p|}}}}}}}}}ppv}vvvp}}}}}vvv|vpv}|}vpp}pppvvoovpopvvvvovvvvvolopopplollpoppovvllloovopollolvooolllllllloolllCllllllluuollllllCllCClCCClCCCCCClClèÿ÷uCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Bòÿÿÿÿÿ÷_!!!!!!!!!!! !!! !!! !!!! !! ! !!!  !! ! ! !!  ! =w¥íýþþþýþþýýþþÿÿýýýþþþþÿýþÿýþÿýàÓ                                                                              ÓÙüüüüþüüýüþüüþüüüÿÿÿþÿÿÿÿþÿÿÿþÖ~}~}~‘¡¡~~}~~‘‘‘‘‘‘~‘~‘‘~~¡‘~~‘‘~‘‘‘¡¢¡¡‘‘¡¡¡~‘¡¡‘¡¡¡‘¡¢¡‘¡¡¡¡¡¡¡¢¢¡¡¡¢¡‘¡¢¡¡¢¦¢¡¡¡¡¡¢¡¢¢¢£¢¢¢££¢¢¡¡¦¦¢¢¡¢££¦¦££Ýþÿÿÿÿÿ릡£¦£¢£««¦¦¢¦¦¦¦£¢£©¦¦¦¦££¢¦¦¦¦¦££¦¦¦¦¦£¢£¦£¦¦¦¦£¦¦£¦®¦¦¦£££¦®¦¦¦®¦¢¦¦«¦£¢¦®¦££¦¦¢£¦««¦¦¦£¢¢£¦¦¢£¢£££¢¢£££¦¢¢£¦£¡¡¡£¥¦øÿÿí¦¢¢£¦£¢£¢¡¡¡¢¢££‘‘¢¦¢£¡¡¢¢¡¡¡¡¡¢¢¢¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡‘¡‘¡¡‘¡¡‘‘‘‘‘‘‘¡¢‘~‘‘¡‘~~~‘‘~~‘‘~~~‘¡‘~‘‘¡‘‘‘‘¡‘}~~‘‘~‘€~~~}~~}}~}}}}}~}~~}}}}}}}}}~}}}æþà}}}Óÿý×v}}v}‘}v}}}p}v}|wpw}}v}|}vpvv}}wpwvpvvvvvvpvvvpw}vpp}}povpvvvooppvvovvppvoppvvpvpooopoppoovoplovpooopolvvlllllopulllolllllClllClClllooCCCCllClllCCCCC{üÿCCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!=!!Bóÿÿÿÿÿ÷]!!!!!! !!!! !!!!!! !!!! ! !!!!  ! !!  !  !!   =s¥íþýýýþýýþþýþþÿÿýÿþþþþþÿþýÿþýÿèÓ      !   !                                                                                Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿþÿÿÿÿÿûÖŸ~~~~~‘¡~}~~~‘¡¡‘~~‘~~‘‘~~~~‘‘¡‘¡¡¡‘¡¡¡‘¡¢‘¡¡¡‘¡‘¡¡¡¡¡¡¡¡¢¢¡¡¦¦¡¡¡‘¡£¡¡¦¦¢¡¡¡¡¡¢£¢¢¢£¢¡¡¢¢¡¢¢¡¢££¡¡£¦¦¦¦¦¢Úþÿÿÿÿÿꥢ£¦££¦¦««££¦¦¦¦¦¡£¦¦¦¦®¦¢¡£¦£¦¦¦£¦¦¦¦££«¢¡£¦¦¦¦£¦££¦¦¦¦¦¦¦¦¦¦®®®«¦¦££¦¦££¦¦¦¦££££¦««¦¦¦¦¦¢¢£«£¢¢¡¢¦£¢¢££££¢¢££¢¡¢¢¦¢¡ÚÿÿÿÖ¦¢¦¦£¢¦¦¢¢¢¡¢¢¢¡¡¢¦¦¦¡¡¢¡¡¢‘¡¡¢¢¡¡‘¢¢¡¢¡‘¡¡¡¡¢¡‘‘¡¡¡¡‘‘‘‘¡¡¡‘‘¡~‘‘¡¡¡~~‘‘‘~~}‘~‘~‘‘~}‘‘~‘¡¡‘‘¡‘‘¡~}~‘‘~€‘~~}}}}~}}}~}}}}~}}}}}}}}}}}}}}}™íýÚ}}}Óÿÿæ}w}}}~~}pvp}}qvp|}}}}p}|vpppv}}ppppv}pppvvvpvvpv}vvv}}popopvvppvopvvvvvvppvvppvvvooovopvooopooovvolopooppollllouolltlllullClllllCCClolCCCCCClllCCCCCCßÿòt>uúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!9=Yóÿÿÿÿÿ÷_!!!!! !!!! !!  !  ! ! !!!!!!! ! !   !!!!!!!! !  !=}ªéýþþþýþþýýýýÿýýþþþþÿþþþþÿýþÿþæÓ                                                                                    Ó×üüüüüüüüþüüüþüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~~‘‘~~~~~‘‘‘‘¡~}‘‘‘¡¡‘‘¡¡~‘¡‘¡¡¡‘~¡¡¢¡¡~‘¡¡¡¡‘¡¡¡£¡‘¡¡¡¡¡¡‘¡¡¡¡¢¢¡‘££¡¡¡¡£¦¡¡¡¡¡¡££¡¡¢£¡¡¢££¢¢¡¢¡¡¦¦£¡¢££¢¢¢££££åþÿÿÿÿÿ릢£££¦¦££££££¦¦¦¦££¦£¢£®®¦¦®«££¦¦¦¦£¢¦£«®¦£¦®¦¦««¦£¦¦¦©¦¦¦¦¦£££¦£¦¦¦£¢¦££££¦¦¦¦¦£¦¦«£¢£¦£¦¦¢£¦¦£££¢¦«¦¦¦¦£¢¢¢£¢¢¢¢¡¢¦¢¦öÿÿöª¢¡¢¢¡¡¢¢¢£¡¡¡¢¡¡¢¢¢¢¡¡¡‘¢¦¡‘‘¡¡¡¡‘¡¢¡¡¡¡‘¡¡¡¡¡¡‘‘¡‘‘¡¡¡‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘¡¡‘¡‘‘‘¡¡‘€‘‘‘‘‘‘~‘‘‘~}~‘‘‘~~‘~}}~‘€‘~}}}~¡}}~‘~}}~}~}}}}}}}}}}}}}ÓþýÓ}}}§üÿúÓ}wv}}p}}}}}}}vpv}p}}v}}}v}pv}v}vp|}vpvv|vv}pov|vvp}vppvvvpvvvvpovppvpopoopolovpppooooooooopoololloollllllopollllllllllvulCllCllollCCCClllloCCCllllƒüÿ›CCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!=Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! ! !!!! ! !  !!! !! ! !!   =}¥õýýýýþýýþýýýÿÿþþþþþþþþÿþýÿýþþæÓ                                                                                       ÓÓüüüüüüüüüüüþüüüþÿÿÿþÿÿÿÿÿÿÿÿúÖŽ~~~‘‘~~}}‘¡‘¡¡‘~~~‘‘¡¡‘‘‘‘‘~‘¡¡¡¢¡~¡¡¢‘‘¡¡‘¡¡¡¡¢¡¡‘¡‘¡¡¡¡¡‘‘¡¡¡¡£¡¡¡¡¢¡‘¡¢¢£¡¡¡¡¢£¢¡¢¢¢¡¡¡£¦¢¡££¢¡£¦£¡£¦£¢¢¢¢¢£¦êþÿÿÿÿÿꦢ¦¢£¦¦¦¢¢¢¡£¦¦®¦¦¦¦¦¡£¦«®®®¦¢¢¦¦®¦£¢£®¦¦£¦¦©¦¦®®¦£¦®¦¦¦¦¦¦¦££££££¦«¦£¦¦¦¦¢£¦¦¦££¦«®¦£¦£¢¦¦¦£¦¦££¢¡¦««¦£¦¦¢¢£¢¢¢£¢¡¡¦£¢ÖþÿÿÚ¢¡¦¢¢¡¡¢¡¢¡¡¢¡¡¡¢¢¢¢¡¡¡‘¢¢‘‘‘¡¡‘¡¡¡£¡¡¡‘‘‘¡¡¡¡¡¡¡¡¡‘¡¡‘¡‘‘‘¡‘‘¡¡‘‘‘‘‘¡¡¡‘¡¡‘‘¡¡¡¡‘‘¡‘‘‘‘~~~~‘~~~‘~~}‘‘‘~~}}~‘}~‘}}}}}~}~~}}}}}}}}}}}žõÿõ™p}}Úÿÿýæž}}wv}}}}}ppvvpp|}pp}}}}}vpwpvvvvvppvvvvv}vppvwvpppppv}ppv}opppppppooppolloooooovppoooooooollllloolllClovvolloolllloovolllllClllCllCCllllllCCCCCuèÿèuCzúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Z÷ÿÿÿÿÿ÷_!! !!!! !!!!!!! !!! ! !! !    ! !!!  !!  !   =qªíþþþþýþþýýþþÿýþþþþÿýÿþþþþþÿýÿàÓ     !                                                                                 ÓÙüüüüüüüþüüüüüüüüÿÿÿÿþÿÿÿÿÿÿÿþÖ~~~~~~‘‘~~‘‘‘‘‘‘‘~‘‘~‘‘¡¡¡‘‘¡‘¡‘‘¡¡¡¡~¡¡‘¡¡¡¢¡¡¡¡¢¡¡‘‘¡¡¡¡¢¢¡¡¡£¡¡££¡¡‘¢£¢¢£¢¡¡¡¢¢¢¢¡¢£¡¡££¢££¦¢¡¢¦¦¢¢££¢¢¢£åþÿÿÿÿÿ릣¦¦¦¦£®¦¦¦¢¢££¦¦¦¦®¦££££¦¦¦®£¢¦¦¦¦£¢®®¦£¦®¦££££¦¦££¦¦®££¦¦¦£¦¦¦££¦®¦£¦¦«®¦££¢£¦¦¦¦¦¦£££¦¦£££££¢£¢£¦£££¢¢¢££¦¦£££¢¡¦¦¢¢£íÿÿý­¦¦¢¢¢¡¢¡¢¡¡£¢¡¢¢¢¡¡¡¡¢¢¢¦¢¡¢¡¡¡¡‘¡¢¢‘¢¡¡¡¡¡¡¡¡‘‘¡¡‘‘‘¢¡¡¡¢¡‘~‘¡‘¡‘~‘‘‘‘‘‘‘‘‘‘‘‘~~‘‘‘‘‘‘}~‘~‘~}~~‘~}~}~€‘}‘‘~~}}~‘‘}}}}‘~~~}}}}}}ÓõÿúÓ}}}}}˜àûÿÿúæÓ™}}v}}}}}}}}}}}}vp}}}ppv}}}pv}|vvpv}vpv}vopvpppvvvvvvvpvvplpppppvvpoppopoolooopoppooopolopolllopooplollulllolllllollllllCllClClllCCllClllClCCl”üþƒCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Bóÿÿÿÿÿ÷_!!!!!!!!! ! !!!! !!!!! ! !   ! !  ! !  !9q¥íýýýýþýýýýýýÿÿþþþþþþýþþþÿþþýÿèÓ          !  !                                                                                          Ó×üüüüüüüüüüüþüüüþÿÿÿÿÿÿÿýÿÿÿþûÖ}‘€€~~‘‘~~~~~‘¡¡¡‘~~‘¡¡¡‘¡~‘¡¡¡¡‘~¡¢¡‘‘¡¡¡¢¢¡‘¡¢¡¢¡¡¢¢£¡¡¡¡££¡¢¡¡¡¡¡¢£¢££¢¡¡¡£¢¡¢¢¢¢¡¦¦¢¡¦¦£¡¢££¦£¢¦¦¡¡££Ýþÿÿÿÿÿꫦ¦¦¦££¦¦®¦¢¡¢¢¦££¦¦¦¦¦££¦£¦¦££®¦¦£¢¢¦®¦£¦©¦££££££¢££¦¦£¦¦£¢£¦¦¦££¦®¦£¦¦®®¦££££¦¦¦¦¦¦£¢¦¦¦¢¢¢¢¢£¢£¦¦£¢¡¡¢¢£¢££¢£¦¡¢¦¦¢¢¢Ôýÿÿ릥¡£¢¦¢¡¡¡¡¢¡¡¢¦¢‘¡¡¢¢¦¦¢¡¢¡¡‘¡¡‘¡¡¡¡¢¢¡¡‘‘‘¡¡¡¡¡¡‘~¡¥¢‘¡¢¡‘¡‘‘¡‘‘‘~‘~‘‘‘~‘‘~‘¡‘~~~~~‘‘~‘~}}}}~}‘¡}}~}~¡‘}~}~‘‘‘~}}}~‘~}}~~}žæýÿõÓ}~}}}}}Êèúÿÿýõמ}vw}}}}}}}}}ppvpvpp}}}}}}}vv}v}}}ppvvppppppvvvvppppppvopoppovvvoopvoooooopolopoopollvvollllovvuolllloloolllllllClllllCllllCllllCCCCCllllClèÿßuC{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Y÷ÿÿÿÿÿ÷_!!!!!!!!!!    ! ! !  !!! !!  !!     !!   ! !p¥íþþþþýþýýýþýÿýýþþþþþÿýÿþþþþÿýæÓ                                                                                                                     ÓÓüüüüüüüüüüüüüüüüÿÿÿþÿÿÿÿÿÿÿÿþÖ ‘~}~~~~~‘¡‘~~~~~~‘‘~~‘¡‘‘‘‘‘‘¡‘¡¡~¡¡‘‘Ÿ¡‘‘¡~¡¡‘¡~¡¡‘¡¡¡¡¡¢¡¡¡¡¢¢¡¡¡¡¢¡¡£¡¡¡¡¢¦¡¢¢¢¡¡£¦¢¡¢¢¢¡£¦¢¡¢££¢££££¢¢¢«¦££¦«êþÿÿÿÿÿ릣£££¢¦¦¦¦¦¢¦¦£££££££¦¦¢£¦£¦«¦¢«®««¦¢¦®¦¦¦¦¦¦«¦¦¦®¦««¦¦¦¦®¦¦¦«£¦££¦©£¦¦¦¦®¦¢£¦¦«¦¦££££¦¦¦¦¦¦¦¦¦¦¦¦£££¢¦¦¦¦£¢¡¢£¦¦£¢¢¦¦¦££íÿÿþÖ¢¢£¢¦¢¡¡¡¢¦¦¡¡¢£¡¡¢¢¢¡¡¡¡¡¡¢¡¡¢¢¢¡¡¡¡¡¢‘¡‘¡‘‘¡¡‘¡¡¡‘‘¢¢‘‘‘‘‘‘‘¡¢¢‘‘‘¡‘¡¡‘~‘‘‘~‘¡¡~~‘‘~‘~~~~~~~~~‘~‘}~‘~}~~~‘~}}}~}}~}~}}}}}}~~}}}™Úõÿþèž}}}}}}}}}}ÓàõýÿÿúæÓ™}vv|vp}}}wwv}v}}v}vpw}vvvvvvv}vpv}vvvvvvpvv|vppvvpoppvpvvvopvooopvopopoooopooooollpplloooolllllllllllllllClolClClllClllllCCouCCCCCCClC?ƒüý{CCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!@óÿÿÿÿÿ÷x!!!!! ! !!!!! ! !!! !!!!!!!!! !!   ! !  !! !q¥õýýýýþýþýýýýÿÿþþþþþþþþþþþþþþÿæÓ                                                                                                          Ó×üüüüüüüüüüüüþüüþÿÿÿÿÿÿÿÿÿÿÿÿúÖ ~~~~~~~~¡¡‘‘~}~~~~‘~¡¡¡€¡‘‘‘‘‘¡‘‘~‘¡‘‘‘‘‘¡¡‘¡‘¢‘‘¡¡¡¡¡¡¡‘¢£¢¡¡¡¡¡¡£¢¢¡¡¡¡£¢¡¡£¢£¦¢¢£¢¡£££¡¡¡¦£¢£¦£¡¡££¦¦¦£®«åþÿÿÿÿÿꫦ¥¡¢¡¦®¦££¦¦¦¦¢£££¦£¦¦££¦¦¦®¦£¦®®¦®¦¦¦¦¦¦¦¦¦®¦¦®®¦®®¦¦¦¦©¦®®¦¦¦££¦¦¦¦«¦¦®¦£¢£¦¦¦£¢£¦¦¦¦¦¦¦£¦«¦¦¦¦£¢¢¦¦¦¦«¦¡¡£¦¦£¦££¦¦¦¦¢­ýÿÿõ¦¦¢£¦¢¡¡‘¢¦«¡¡¡¢¡¢¡¡¡¡¡¡¡¡¡¡¢¡¢¢¢¡‘¡¡‘¡¡¡¡¡¡¡‘‘¡¡¡‘¡¢‘‘‘‘‘¢¢‘‘¡‘‘¡¡~‘¡¡‘‘¡‘‘~‘€~‘‘~~~}~~}~‘‘~}~‘}~}}~}~~}}}}~‘}}}}}}~}~~}}‘Óèþÿ÷Ú™}|w}}}v}~~}}}}™Óæ÷þÿýõÙžvv}w}}pp}}}}}vppp|v}}wpvv}}pvvvv}}v}vvppvvppvvvpvpvpvvppooolopppppooppoololvolllpoolloollllllCllllllCCCloolCllllllCCClCloollCCCCCCCCçÿ×ZC{ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿúx!!!!!!!!!! !!!!!!!!!!! ! !!   !! ! ! ! ! !!! !!! !!!!!  !!=qªíþþþþýýþýýýþÿýýþþþþþþþÿþþÿþþþæÓ                                                                                                               ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘‘~~~~~}~‘¡‘~‘‘~~~‘¡‘~~‘‘¡‘¡‘‘¡‘¡¡~¡¡¡¡¡¡¡¡¡¡‘¡‘¡¡¡£¡‘‘¡¡¡¡£¡¡¡¡¡¡¡¡¡¢¡¡¡¡¢£¢¡¡¢¢£¢¡¢¡¡£¢££¢£©£¢¢¦£¡¢¡¢££¢££¦åþÿÿÿÿÿ릣£¦¦££®¦¡£¦¦®«£¦¦¦®¦¦¦££®®¦¦££¦¦¦£¦®¦£¦®«®¦¦¦£¦®¦££¦¦£¦¦¦¦®«®®¦££¦¦£¦¦££¦¦¦¦£¦¦¦¦¦££¦¦££¦¦¢££££¦¦¦¢£¦¦¢¢£¦¢¢¢£¢¡££¢¢£¢¢¡£êÿÿÿꢡ¢¦¢¡¦¢¢££‘‘¢¡¢£¡‘¡¡¡¡¢¢¡‘¡¡¡¡¡¡¢¦¡‘¡¡¡¡‘‘¡¢¡¡¡‘‘‘‘¡¡‘‘‘‘¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘¡~~~‘‘‘~~~‘‘~}~~‘¡‘€~~~}€¡€}}}}~~~}~~‘€}}}‘§æûÿýæ§}}~~}~}}}}}}}}v}}}ž×èúÿÿ÷æÓ™}}}p}}vwp}}pvv|vpp}vvvpp|vpvvv}wvpvvoovvvpvppppvpopppvopppvppvpopooooloolovooploplloplollllolovlllllllolCllllllCllClCCllllCCllCCCƒüú{CláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=9!!!Bóÿÿÿÿÿ÷_!!!!! !!!!! !!!  !! ! !!!!! ! !   !!!   !!!=}¥íýýýýýýþýýýýÿÿþþþþþþþþþþþþþÿþæÓ                                                                                             Ó×üüüüüüüüüüüüüüüýÿÿÿýÿÿÿþÿÿÿÿûÖ¢Ÿ~~~€‘‘~~‘‘‘¡‘‘‘~~‘¡‘‘‘~~‘‘‘¡‘‘‘¡¡¡‘¡¡‘‘¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡£¡¡¡‘¡¡¡¡¢¢££¡££¢¢££¡¡¢¡¡¡¡¡¡¡£££££££££¢¡¢££¡¢¢¢£åþÿÿÿÿÿê«¢£®®¦£¦¦¡¢¦¦®®¦¦¦¦««®¦¦¦®®®¦¢£¦®¦¦¦®¦££®®®®¦££¦¦¦«££¦£¦®¦¦«®®®©£¦®¦£££££££¦¦¦£¦¦¦¦£££¦¦¦¦£¢¢££¦¦¦£££¦¦£¢¢££¢¡¢¡¢££¢¢¡¡¡¡£¨ûÿÿû§¡¢¦¢¦¦¡¡¡¢¡¡£¢¢¢‘¡¡¡¡¢¦¢¡¡¡‘‘‘¡¡¢¢¢‘‘¡¡¡¡‘¡¡¡‘‘‘~‘‘‘‘‘¡‘¡‘‘‘¡~~~‘¡¡‘‘~‘‘~‘¡‘~}~~~‘‘~‘~~¡‘~}~~‘‘‘¡‘~~¡‘}}}}}~€~¡‘~~}}šàûÿýèÓ}}~~~~~}}}€‘}}}}}wv|vvžàõÿÿýõÚ™}w}}ppvvw}}vvvpv}pvpppvvpppp}vpopvpopvvvpoppopvooppoovvpvvpvvopoopoloolooooolooolooopoollvoollollllollllllollllCllCCClllllCllCCèÿÇoCƒýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!$!!Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!! !!!! !!!! !!! ! !!!!!! !=q¥íþþýýýýýýýýþÿþþþþþþþþþþþÿþþþþæÓ                                                                                                                                  ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~‘~‘~~‘‘~~‘‘‘‘~~‘‘¡‘~‘‘‘‘¡¡¡‘‘‘¡¡¡¡‘¡‘¡¡¡¡¡‘¡¡¡‘¡¡¡‘¡£¡¢¡¡¡‘££¢¡¡¡¢¢£¢¢¡¡¡¡¢¢¡£¢¡¡¡¡¢££¦£¡¡££¢¢££¢¡¡£££¡£¦¦££åþÿÿÿÿÿí¦££££¦¦¦¦¢¦¦¦«¦¦¦¢£¦¦®¦££££«®££®¦¦¦®®©¦®¦¦®¦£¦£¦¢¦®®¦£¢£¦¦£¦£¦©®££¦®¦£¦¦¦¦££¦¦¦¦¦¦¦£££¦«¦¦¦££¦¦¦£££¦¦£££¦¢£¦¦£¢£¢¢££¦¢¢£¡£¥Ýÿÿÿë¡¢¢¢¦£¡¡¡¡¢¡¢¢¦¦¢¢¡¢¡¢¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡‘‘¡¡¡¡‘~‘‘‘¡‘‘‘‘‘‘}‘‘~~‘~~‘‘‘}~¡‘‘‘~~~‘~}~~~}‘‘~}~~~‘~}~~~}}~}~~}}‘×õÿþíב}}}}}™§žÓ×ÚààÚÓ§ž‘v}}}}}}§×èûÿýõÙ™}ww}}vp}}vvvp}}vvvpv}vvvpvvppvvvvvppvpoovvppvoppppvvplpoopoloppoploppppllolopoolloooolCoplllllllllllolllllllllllllllCCllCCClƒüóyCuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Bóÿÿÿÿÿ÷_!!!!!!!!!!! !!!!!!!! !! !  ! !  !     !=}ªíþüÿýýþýýýýþþÿþþþþþþþþþþþþþþÿæÓ                                                                                                         Ó×üüüüüüüüüüüüüüüþÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡‘~~~‘¡¡‘~}~‘‘‘~~~~‘‘¡‘¡‘¡¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘‘¡¡¡‘¡‘‘¡¢¡¡£¢¡¡‘‘£¦¡¡¡¡£¦£¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡££¦«£¡¡¡¡¡¡£¢¡¡£££¡££¦«¦¢Úþÿÿÿÿÿꫦ££¢£¦¦£¦®®¦££¦£¡££¦®¦£££¢¦®¦¦«®£®®®®®®¦££¦¦£¦¦¡£®®¦£¢£¦¦¦¦¦¦£¦££¦®¦£¦®«£££¦¦£¦¦¦¦£££¦¦¦¦®¦¦¦¦£¢¢£¦¦¦£¢£¦¦«®£¢¦¦¡£¦£¡£¦¦¦¢¦÷ÿÿþÖ¢¡¢¦¢¢¡¡¡¦¡¡¡¦££¦¦¦¢¢¡¦¡¡¡¦¢¡¡‘¡¡¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡‘~‘‘‘‘‘¡‘‘~~~‘~~~~}}~¡‘‘~~€‘‘‘~}~~}}}~‘}}}}~~}~‘~}}‘}}}Óèýÿôך€}}}~‘žÙèõ÷ûýÿÿÿþýúõèàÓ™}}}}}}}Çà÷ÿýõÙ™}}}pv}}}}v}}}w|vv}}}}vvpppvvvvvvppvvoovvvvooopvvpolooppoooooooooopvvpollloopolloolollovlllllllCllCllllCllolCClllllC>ClClCCçÿÇul›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$=!!@óÿÿÿÿÿ÷_!!!!!!!!!!!! !!! ! ! !! ! !! !! ! !! !!!!! ! !  =}ªíýþýýýþýýþýþÿþýþþþþþþþþþþþÿýþàÓ               !                                                                                             ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿþÿÿÿÿÿÿûÖŽ}‘‘~~~~‘~~~~‘‘¡‘¡¡‘~¡‘‘‘‘‘¡¡‘¡‘‘¡¡‘‘‘¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡£¡¡¡¡¡£¡‘‘¡¡¢£¡¡¡¡¢£¡¡¢¢¢¢¢££¢¢¡£®££¢£¡¡¢£¢¢£££££££££¢¢åþÿÿÿÿÿ뫦¦¦££¦£££¦®¦¢£®«££££«¦¦££¦®®¦¦¦¦££®®¦¦¦®©£¦®®®®¦¦®®¦¦¦¦®¦®¦¦¦££¦£¦®¦£«®¦¦¦£¦¦¦¦¦£¦¦¦££¦¦££¦¦¦¦£¦£££¦¦¦¢¢¦¦£¦¡¡¦«¢¡£££¢£¢¢¡¢Üþÿÿö¦¡¢¢¢¦¦¡¡£¦¡¡¢¡¢¢£¡¡¢¡¢¡‘¢¦¡¡¡¡¡¢¡¡¡¡¡¡¡¢¡¡¡¡‘¡‘¡¡¡¡‘¡¡¡‘‘¡¡¡‘‘¡‘‘‘‘¡‘‘‘‘‘‘‘‘¡‘‘‘~~~~‘‘~~~‘‘~}~‘~}}}}}}}~‘~}}‘}}šàúÿõÚ¥}}}}}™Úë÷ÿÿÿÿÿýýûýýÿÿÿÿÿüõæÓ™}}}}v|žß÷ÿþõßž}vpv|}||v|vvvvvpv}vpvvp}wpppvvov}plvvvvpovpvvpovpoppoppooolooooooollooollooooplllllplllollCllClllllCColClCCllClCClllll˜üòultñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! !!!!   ! ! !!    !  ! !!  =qªíþýýýýýýýýýþþÿþþþþþþþþþþþþþþÿæÓ                                                                                                                                   Ó×üüüüüüüüüüüüüüüþÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ‘}~‘~~~}~~~‘¡‘¡¡¡¡‘‘‘‘‘~~~~‘‘‘‘~¡¡¡‘¡¡¡‘‘¡¢¡¡¡¡¢¡¡‘‘¢£¡¡¡¡¢¢¡‘¡¡¡¡¢¡¡¡¡££¢¡¡¢¢£££¦¡¢¡£¦£££¡¡££££¢£££¢£¦£¡¡¡¢åþÿÿÿÿÿꦦ¦¦¦©¦££¦¦£¦£©®®£¦¦££®£££¦®®£©¦¦£¦¦¦¦££®®££®®®®©®®¦¦®©®®®©£¦¦£¦¦£®®££¦«¦¦®¦¦£¦¦¦££¦¦¦¦¦¦¦£¢£¦¦¦«¦£££¦¦££¦£¢¢¢¡£¦¢¡¡£¦¢¡¡¡¡¡¦íÿÿÿÚ¡¡££¦¦£¢¡£¡¡¡¡¢¢¡‘¡£¢¡¡¢¢¡¡¡¢¢¡¡¡¢¡‘¢¡¡¢¡¡¡‘¡‘¡‘¡¡‘¡¡¡‘‘~‘¡¡¡~‘¡‘‘‘‘¡¡¡¡‘~‘¡¡‘‘‘‘‘‘¡¡‘~~~}‘‘}~~~}~~~}}~}}}}}~~‘}~~‘‘×õÿýæ§‘}}}šÚõþÿÿÿúèàÙÓ§ÓÓÓÓàèõúÿÿÿýíÙš}}}|v}žÙõÿÿõàž}vvvvvvvvpp|vpv|pppv|v}vppvpvpv}vppvvvop}}vvpvvppvvvoooollloolllllooopolloopvlllllolovoollCllllClCClll?llCCCCCCllllluèÿ›lCþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!$!@óÿÿÿÿÿ÷_!!!! !!!!!!!!!!!!!!! !!!!! !! ! !  !!!!!!  !!!=qªíýýýþýýþýýýþÿþþþþþþþþþþþþþÿýþæÓ                                                                                               ÓÓüüüüüüüüüüüüüüüüÿþÿÿÿÿÿÿÿÿÿÿþÖ‘‘~}‘~~‘‘‘~~~~‘¡~‘‘‘‘~~‘¡¡¡‘¡‘¡¡¢¡¡‘¡¡¡‘¡£¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡£¢¢¢¡¡¢¢¢¢¢¢¢£££¢¡¢¡¢££££¡¡££££¢¢£££££££¦£¦Ýþÿÿÿÿÿ릣££¦¦£££®££££¦¦££¦©«©¦£¦®¦®®££££¦©¦£¦£¦£¦¦®®¦¦¦¦©®®¦®®¦®«£¦®¦¦¦¦¦®®¦¦¦£¦£¦®¦£¦¦¦¦£££¦£¦¦¦£¢£¦¦¦¦£¢¦£¦¦££¦¦¢¢££¦¦£¡¦¦£¦¢¢¢£££­ûÿÿû¥¡¢¢£¡£¢¡¢¢¡¡¡¡¡¡‘¢¦¡‘¡¦¡‘¡¡¡¢¡‘¡¦¢¡¡¡¡‘¡‘¡¡‘¡¡¡‘¡¡‘‘‘‘‘‘¡¢¡‘‘¡¡¡‘‘‘‘‘¡‘~‘¡¡‘‘~‘~~‘‘‘~‘‘~~~}‘¡~}~‘~}‘¡~~~}}}}}}~§ëýÿúב}}}}‘ØõþÿÿþõÚ§™‘}}}}}}}™šÓÚèúÿÿþõà§v}}vvžÚõÿÿ÷Ú˜vvpv|v|vv|vvpvvv|vvvppppvvvvppvpppvvpovvpvvpvlppovplopooovploppoolloplloooolllolllllllolllllClllllolCCllllllCCCCCC˜üñuCuòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!$!!Bóÿÿÿÿÿ÷]!!!!!! ! !!!! !!!!!!!!!!!!!!! ! !!   ! !!      ! 9q¥íþýýþýýýýýýþþÿþþþþþþþþþþþþþýÿæÓ                                                                                                                                              Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ¡‘~~‘¡¡‘‘‘~~~~~~}~~‘~~~~‘¡¡¡¡¢¡‘~~‘‘¡¢¢¢¡‘¢£¡¡¡‘¢¡¡¡¡‘¡‘‘‘¡¢¦¢¡¦£££¢£¢¡¡£££¡¢¢¢£¡£¡¢¡¡¢¢£¢¡¢¢£££££¦®¦£££££¦£åþÿÿÿÿÿꦣ¦¦££££££¦££££¦£££®®®¦£«®®«¦££®£©®££££¦«££®¦£¦£¦¦®®¦®¦¦©¦¦©®®¦£¦¦££¦®¦££¦¦¦¦£¦¦¦¦¦££££¡£¦¦£¦¦¦¦££¦¦¦¢££¦¦¦¢£¦¦¦¦££¦¦£¢£¦¦¦£¢¢êÿÿÿꢦ¢‘‘¢¢¡£¢¡¡¡‘¡¡¢¢¡¡‘¡¢‘¡‘¡¡¡¡¡¦¡¡¡‘‘~‘¡‘‘¡‘¡¡‘‘‘‘‘¡¡¡¡¡¡‘¡¡¡¡¡‘‘¡‘~~‘‘‘‘‘‘‘€~~‘~‘‘}}}~‘‘~~‘‘‘‘¡‘}~~~}}}}€×úÿÿæ§‘}}}‘ÒèýÿÿûèÓ™}}~}~}ppp}~~}~~}‘žÙëýÿÿúèÓ}vv}}™×÷ÿþõÓvw}vv|vvppvp||vvvppvppvvpvvvvpvppppovvlvvvoopoopoovvvpvvpopvvvpoloplloooollooolllllopolluollpoCloolCllollllCCCCCèý˜CCÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!!!Z÷ÿÿÿÿÿ÷_!!!! !!!! ! ! !!  !!!!!  ! ! ! ! !! !   !p¥íýýýþýýýýýýþÿþýþþþþþþþþþþþþþþæÓ                                                                                                                                                 ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~~~‘‘~€‘‘~~~‘‘‘‘‘‘‘‘‘¡¡¡¡¡¡¡¡‘‘¡¡‘¡¡¡‘~¡¡¢¡‘¡¡¡¢¡‘¡£¡¡¢¡¡¡¡¡¢¡¡££¡£¡¡¡¡¡¢¢¦¢¡¡¡¡¡¢£¢¢¢¢¢¦¦££¡£¢¢£££££££¦££¦©åþÿÿÿÿÿë«££¦£££©£¢£¦£££¦¦¦¦££¦¦¢£®®¦®££¦¦®®¦¦¦£®®¦£®£©®®®©¦«¦¦£¦¦¦¦¦¦¦¦¦®®¦£®®¦¦¦¦££¦¦¦®¦¦¦£¦¦¦¡£¦¦¦££¦¢££¦«¦¡¢£¦££¢¢£££££¢¦¦¢¡¦¦¦¢¦£¢¦ûÿÿþ­¦¢‘¡¦£¡¢¢¡¢£¡‘¢£¡¡¡‘¢¦¡‘¡¡¡£¡‘¡¢¡¡¡‘‘‘‘¡¡¡¡¡‘¡‘¡¡¡‘‘‘¡¡‘‘‘¡¡‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘~~‘~~‘‘‘‘}~~~~~~~~~~}~‘~}~~‘æýÿúב~€}}§æûÿÿ÷àÒ‘}}s}~}~}}s}}~}v}}}}}}˜Óæúÿÿýèךv}vv}žàýÿýèž}}vp|}vvvvv|vpvvvppvvvvppvpppvpvvpovvpopppppooppopoppopooopplllloolloolllooolllllllvllllllCvolllCllClllCClCClC˜üçuCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷_!!!!!!! !!!!!!!! !!  !!!! !   !!!!! !!=s¥íýýýýýýýýýýýþÿþþþþþþþþþþþþþþþæÓ                                                                                                                                            Ó×üüüüüüüüüüüüüüüýÿÿÿÿþÿÿÿÿÿÿÿûÖ}}~}~~~‘‘~‘‘‘~~‘¡¡~~~‘¡¡‘¡¢‘‘‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡‘££¦¦¡¢¢¡¡¡¡¡¡¢¢¡¡¡¡¡¢¡¡£¢¡¡¡¡¡£££¦¦£¢¦¦«££¢¡¢££¢¡¡¡£¦££££åþÿÿÿÿÿ£¦¦££¦£££££¢¢¦«¦©£¢£¦¢£®®¦®£££®®®£®®¦©«¦®¦£®®®®®®©¦¦¦¦¦©®££¦¦£®®¦®®®®®¦£¦¦¦¦®®¦¦£¢£¦®¦£¦¦£¢¢¢£¢£¦®¦¡¡££¦¦¢¢¦£¢£¢£¢¦¦££¦£¦¦¦¡¢Ôþÿÿõ«¢¡¢£¦£¡¡£¢¢¡¡£¢‘¡¡¢¦¦¢¡¡¡¥£¢‘‘¡¢¡‘¡¡‘¡£¦¡¡¡¡~¡¡¢¡‘‘‘‘~~‘‘‘¡¡‘‘‘‘‘‘¡~‘~‘‘‘~~‘}¡¡‘‘‘€‘‘‘~~}~‘}}~}‘‘‘‘Óõÿÿè§~~‘}‘Ú÷ÿÿúÚž}}}~}}}}}}}}}}}}}r}|v|||}}žßõÿÿþõà§vvvv‘Óòþÿúà™}v}}}v}}|vvpp||ppp|}vpploppvvv}olp}voopvvpooopooopoooopppollllpolllolllopolooolllllCClClllllCCCCCCClllCCllllçý›llÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Y÷ÿÿÿÿÿ÷x!!!!!!!!!!!!!!!!  ! ! !! !!! ! !!!!   !!!!! ! !  !=q¥õýýýýþýýýýýþÿýýþþþþþþþþþþþþþþæÓ                                                                                                                                       ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~~~~~~‘‘‘~~‘‘¡¡‘‘‘‘‘‘‘‘~‘¡¡¡‘‘‘¡¡¡¡¡‘~‘¡¡‘¡¢¡‘¡¡¡¢¡‘¡¢¡¢¢¡¢¡¡¡¡¡¡¡¡¡¢¡¡¡¡¢¢¢¢¢¢¢¢¢¡¢££££¢£¢£££££¢£££££¢£££¦¦¢£åþÿÿÿÿÿ££¦££££¢¦®¦¦£¦¦£¦££®®££®©£¦££®¦®¦¦®¦®©£®¯¦£©¦¦¦¦©¦¦¦£©££®®®®££®®®©££¦¦££¦©££¦®¦¦¦£¦¦¦¦¦¦¦¦£¢£¦£¦¦¦¦¢¢¦¦£¦¢¡£££¢£££££££¢¢£££¢¢¦íÿÿÿÝ¢¢¢¡¡¢¢¢¦¡¡¡¡¡¢¡¡¡¢¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¢¡‘‘¡¡¡‘‘‘‘‘‘~‘¡‘¡‘‘‘~‘‘‘¡‘‘‘‘~‘‘~~‘‘‘‘}}¡¡~~~€~~}~¡}}~‘}~}‘àûÿýÚ™}}~~¬ëýÿþè§}~}}}}}}}}}}~}}}p}}}|}}}}|}|}™×èýÿÿ÷à§vvv}™ßúÿÿõ×|}vpv}|vvppvvpppppvpppp|vppvvpopvppppppvppppoopploppopoollooovollolllllollollllllllllolllllllllllCCllClCC›ýßvly÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!=!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!! !!!!!!! ! !  !! ! !!   !  !q¥íýþýýýýýýýýýÿÿþþþþþþþþþþþþþýÿæÓ                                                                                                                                                            Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽŽ‘‘‘~~~~‘‘~~~‘¡‘‘¡¡¡‘¡~¡‘‘‘~‘‘‘‘‘¡¡‘¡¡‘~¢¢‘¡‘‘¡¡¡¡¡¡¡¡¡¡£¢¢¡¡¡¢¡¡¡¡¡¢¢££¡¢££¢¡¡¢¡¡££££¡¢££££¦¦££££¦¦£¦¦£¢åþÿÿÿÿÿꫦ¦¦£®¦©¦¦®®®¦¦®¦£¦®©¦®¦£££££©£££©¦©®¦®®£®®®¦¦££££¦£££¦¦££®®±®®®®®®¦£££¦£¦®¦£¦®¦££¦¦®¦¦¦®¦¦£¦£££¦¦¢£¦¦¦®¦££¡¡¡£¢¦¦¦£¡¡¢£¡¡£¢¦¦£¦Üýÿÿû«¥¡¡¡¡¡¡£¡¡¡¡¡¢¡¡¡¡¡‘‘¡¢¡¡¡¡¢£¡¡¡¢¢¡‘¡¡¡€¡¡‘¡€~‘¡‘‘‘‘‘‘¡‘‘¡¡‘‘‘~~~‘‘‘‘‘~~‘~}‘¡‘‘}~‘~}~~~}}~~~‘¡‘~‘‘~}‘èýÿõÓ‘}}~™àúÿÿõÓ™}}‘~}}~~}}}}}}}}}}v}}|}}~~}}|}}|v}˜Óèýÿÿúàš}}vvžèþÿýè˜vvppppvppvpppvppppvvvv|vppvvpvvppvvvpppvvvvppvoooppollllooloovppllllllClllllllllllllpolCCClllllCCllCllClèú”lCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!=!@÷ÿÿÿÿÿ÷_!!!!!!!!!!!     !!!! !!!!!!!!!!! ! ! !  =qªíþýýýýýýýýýþÿþýþþþþþþþþþþþþþþæÓ                                                                                                                                                                   ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ}‘‘‘‘~~~~‘¡‘‘‘~‘‘~¡‘¡‘‘‘~‘¡¡¡‘~¡¡‘‘¡¡¡¢¡‘¡‘¡¢¡¡¡¡¢¡¡¡¡¡¡¡¢¡¡¡¢¢¡¡¢¡¡¡¡£¡£¢¡£¢¡¢£££¢£¡¢¡¢¢£¦£¡¢££¢£¦££££££¦¦¦£¢åþÿÿÿÿÿ뫦££££££¦¦¦®¦£«®®££®®££®®£¦¦¦®®¦©££®®££®£©¦©®¦®¦££¦¦©¦®®££®®¦¦®¦®¦®®¦¦¦£¦¦¦¦¦¦¦¦¦¦¦®¦££¦¦®¦¦¦££¦¦¦¦£¦££¦¦££¢¢¢¢£¦££¢£¢¢£¡¢£¢¦£¡¢¦êÿÿÿꢢ¡¡££¡¢¡¢¡¡¡¦¡¢¡¡¡¡¡¡¡¡¡‘¡£¡¡¡¡¡¡¡‘¡¡¡‘¡‘¡¡‘‘¡¡‘‘‘‘‘‘¡¡‘‘‘~‘¡‘~‘¡‘~€¡‘~‘‘~‘‘~~~~‘‘‘‘~}}€‘~~~€‘~™ëÿÿà¥~~}€Óõþÿýà™}~}~~}}}}}}}}}}}}}~}||s}}}}}}}}}}}|vvw‘žàúÿÿ÷à™}}|v×õÿÿõžvpvvv}vvvppvvvvvppvvpvvpppvpvpoppvppppvvlplovoopoplloooooollovoloolllllllolllllllllullllCllllllCCCClll›ü×uC{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!$Bóÿÿÿÿÿ÷[!!!!!!!!!!!!!! !! !!!!!!!!!  !! !  ! ! !=q¥íýýýýýýýýýýýþÿþþþþþþþþþþþþþþþæÓ                                                                                                                                                               Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~‘~~~¡‘‘‘‘¡‘‘‘‘~‘¡¡€~‘¡¡¡‘¡¢¢¡‘¡¡‘¡¡¢¢£¡£¢‘¡¡¡¢¢¡¡¡¡¡¢¦¡¡¡¢£¡¡¢¢¢££¢¡¡¢¢¡£££¡¡¡££¢¡¡¡¢¢¢¡¡¢£££¦££¢¢££££££Ýþÿÿÿÿÿê°¦£¢££££¦®®©¦£¦®®«£®®££®®®®¦¦®®®¦££®®¦®¦©®££®©®®¦®®©¦®®¦£¦®££££¦¦¦¦®®®¦¦©¦£¦®££¦®®®¦£££££¦®¦¦£¦®¦®®¦¢¢¦£¢¡£££¦¦¦£¡¡¡£¦¦¡¢¢¦¡¡¢¢¡¡¦ûÿÿþ­£¡¡£¦¢¡¡¡¡¡¡£¢¢¢¢¢¢¢‘¡¡¡‘‘¡‘¡¡‘‘¡¡‘‘¡‘‘‘‘¡¡¡‘‘¢£¡¡¡€‘‘‘‘‘‘~~‘¡‘‘¡¡~‘¡‘€~}~~}~~~~~}~‘¡¡~}}}‘~}}}}~¡§õÿþב~~}™æûÿÿ묑~}~}}}}}}|}}‘‘}}}}}}}}}}}}}}|}}rw}}||}rv}}žàýÿþõÙwvv}™èþÿúÓw|vv~}v|p|}v|||ppvppvvvpvplvplpplpoplooplllolppopllovplopolvllvppllllooovoluuoollllollCllClllllCCllllèúƒClßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!=Zóÿÿÿÿÿ÷_!!!!!!!!!!!! !! !!!!  !! !!!!! !   !  !$q¥õýýýýýýýýýýþÿþýýþþþþþþþþþþþþþæÓ                                                                                                                                                          ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~‘~~‘‘~~¡¡‘‘‘‘‘}¡¡‘‘‘‘¡¡‘¡¡¡‘‘¡¡¡‘¡¢¡¡¡¡¡¡¡¡¢¡¡¡¢¢‘¡£¢‘¢¡¢£¡¡¢£¡£¡¡¡¡¢¡££££¢¡¢¡£¢¢£¢¡¢¦£¡¢¢¢££££¡¡¦¦£££¦Ýþÿÿÿÿÿ뫦£££®£££©¦££¦¦¦¦££®¦¦¦®®¦©££®®®©££®¦®®®¦©£©®®£¦®®®®£¦®®£¦®®££¦£¦©££©®¦¦®®¦¦¦£¦¦¦©£££££¦¦£¦¦¦££¦¦¦¦££¦¦¢¢££££¦¦£££¡¢£¦££¢£¦¡¡¢¦¢¡¡Ôÿÿÿõ¦¡¡¢¢¢¡¡¡¡¡¢£¢¡¡¡¡¢¡‘¡£¡‘¡¡¡¡¡‘¡£¡‘¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘~‘~~‘‘‘~~‘‘~~‘¡€‘~}~~~~}~‘}}}ÖûÿýØ‘}~‘ÓõÿÿýÙ™‘~}}}~}}}~}|}}‘}}}|}}}~}p}}|}s}}vp~}pp}}}}vvÇèýÿþõÊ}vv×ýÿüßvv}|ppvvvvvvvvvvoopppppvpovlvvolppplpvploooppopoooppllollpllloulllolllllllllllllllllllllllCClCllCC›üÌvlƒüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Cóÿÿÿÿÿ÷]!!!!!!!!!!!! !!!!!!!!!! !!!!! ! !!!!   !9q¥íýýýýýýýýýýýþÿýþýþþþþþþþþþþþþæÓ                                                                                                                                                           Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘¡~}}~‘}~¡¢¡‘~~~~~¡‘‘¡‘‘¡¡¡‘¡¡¡‘‘¡¡‘¡‘¡¡‘¢¡¡‘¡¡¡¢¡¡¢£¡¡£¡¢£¡¡¡¡¢¡¡¢£¢££££¡£¢¢£¢¢£¢£¢¢££££££¢¡£¦¦££¦®£¡£¦åþÿÿÿÿÿê«««¦¦£££££££®®¦£££££©©¦©®¦®££©££®®£®®®®££®£®®£¦®®®®©££®®®¦«®®®®¦£«£££££®®®®®¦®®¦£££££¦®®¦¢¢££¢£¢¢£¦¦«®¦¦¦¦¦¦¦¦£££¢£¦¢¡£¢£¦¦¦¡¡£¢¡¡¥íÿÿÿÜ¡£¦¢¡¢¡£¢¢¦¢¡¡¡‘¡¢¡‘¡¡‘¡¢¢¡¡¡‘¡¢¢¡¡¡¢¢¡¡¡‘‘¡‘~~‘¡¡¡¡‘‘~‘‘¡¢¡‘~~~~~~~‘‘‘¡¡‘‘‘‘¡¡¡‘~‘~~~‘‘}}}‘}ÚýÿýÓ~€€‘àûÿÿõÓ‘}~~}}~‘‘~~}~~}}}||}|||}~|vv|}}}}}p}}}p}}p|v||}}‘ÇèþÿýëÓvpwÇ÷ÿþèvvvvvppppvv|}vpooopvpv|vlpppvvpppllvvplpvvvpollpollopvollvvppopvllllllllllllllulllllllollCCCllCClèó˜olèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!!Zòÿÿÿÿÿ÷_!!!!!! !!!! !!!!!!!!!!!!!!! !! ! !!    =wªíýýýýýýýýýýþÿþýýþþþþþþþþþþþþþæÓ                                                                                                                                                                  ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~‘~~~‘¡‘~~~‘‘‘~‘‘‘¡‘¡~~¡‘¡¡¡‘¡¡¡¡‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡£¡¡¢¡¡¡¡¡¢¢¢¡¡¡¡¢£¢¡¢££¡¢££¢£¢¢¢££¢¢£££££££¡¡¦«¢££££££©åþÿÿÿÿÿꦣ«®£¢¦®¦£££¦®®£££££¦©¦¦¦©®££®®®®¦¦¦®®®££¦¦®«®¦©®©®®¦¦¦®®®¦¦®®®¦®®£££¦¦¦®£©¦¦®®©¦££££®«®¦££¦£¢£¢£¦£©®£££¦££¦£££¦¦£££¦¢£¡¡£££¡¢£¢¡¡¦­ýÿÿû¥¡¦¦¡¢¡¢¡¡¦£¢¢¡‘¡¦¡‘¡¢¡¡¡£¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘‘¡¡‘‘¡‘‘‘¡¡‘‘‘~‘¡¡¡‘~‘‘‘~‘‘‘~‘‘‘‘¡~‘‘‘‘‘~~~~‘‘}}€¡€Úþÿú¬}}~¥íþÿþà¥~}}~~|}~~~~}}}}}}}~}}}s}p}}}r}}}pw}}||}}v||v|p}}||}vÓèÿÿûèž}pwžëÿÿõžvv|vvvvp|vvvpppppovvpvvlpvpppwppplpvpoppppvlollvlvvlpllllppllvvollllllllllllllllllClllllCCllllCüÇul›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!!! !!!!!!!! !!!  !  !!  !!! !=q¥íýýýýýýýýýýýþÿþþýýþþþþþþþþþþþæÓ                                                                                                                                                                                              ××üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~}~‘¡‘¡‘‘‘~~~~~~¡¡¡¡¡¡¡‘‘‘¡¡¡¢¡¡‘~~‘¡¡¡¡¢£¢¡‘‘¢£¡¡¡¡‘‘¡¡¡¡£¡¡¡¡¡‘¡¡¡¡¦£¡¡¡£¡¡£¢¢¡¡¡££¢¡¡¢¢¢£¦£¢¡¡££¢¢¡¢¦¦¢£¢¡££££êþÿÿÿÿÿꥣ®®££®®¦¦£££©¦¦£¦®©££®¦£¦¦£¦®®®®¦££¦£££¦¦¦®®®®®®©®®®®®¦®¦¦¦¦££¦®®®®®¦®®££££®®¦££££££££©®®®®«¦£¢££££¦¡££¦£¢¦¦££¦®¦¦£££¢¡‘¡£¢¢¦¦££¦«¦êÿÿÿ桦¢¡¢¡¡‘‘£¦¡¡¡¡£¦¦¡¡¢¢¡¡¡¢¡¡‘‘¡¡¡¡‘‘‘‘¡¢¡¡¢¡¡¡¡¡‘¡‘‘‘‘‘¡¡‘~~~€¡‘‘‘¢¡‘‘‘~~}}}~~~‘‘~}~‘~}}¡‘}~‘Óýÿúš€‘}ÓõÿÿúÓ€}}}}~~}}}}}}}}}rvr}}~}}|}}}}}}p}}|}rvp}}}}}|}|vv|v||}}}™Ó÷ÿÿúà˜vv˜èÿÿúžvvpppv|}ppppppv}pppopolvvvpvvpvvopvplolllpvvllplvvlllvvpollloplvllollCllllClllllllllCClCllloluñò{ClèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!$!@÷ÿÿÿÿÿúx!!!!! !!!!!!!!!!!!!!!  !!  !  !! !  !! !! !!qšíýýýýýýýýýýþÿþýýþþþþþþþþþþþþþæÓ                                                                                                                                                                                         ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘‘~~~~~‘‘‘‘‘‘~~‘¡¡‘¡‘¡‘‘‘‘¡¡¡¡¡~~¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¢¢¡¡¡¡££¡¡¢¡££¡¡¡¡¢¦£¡¡¡¢¦£££££¢¢¢£¢¢£££££££££¦££åþÿÿÿÿÿ릣¦®¦¦££¦£¦¦¦£¦£¦£®®©£®££®®£®¦¦®®©£®®¦¦¦®©£®®®®®®®£©¯®®©¦©®®¦©£¦¦¦®®«¦®®££¦£¦©¦«¦¦£££¦£¦¦¦¦®®££¢£¦£¦££¢¦¦££¦¦£¡¦£¦¦£¢££¢¡¢¦¢¡£££¢£££¥ûÿÿþ¨¢¡¦¦¡¡¡¡£¦¡‘¡£¡¡¢£¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡‘‘¡‘¡¡¡¡¡¡¡¡¡‘‘‘‘‘‘‘‘‘‘¡‘~‘‘‘‘‘‘¢¡~~€¡‘}~‘‘~~‘‘~}‘¡}}~‘~€¬ýÿýÓ€~‘Úûÿÿëž}}}}}~}~}}~}}}}}}}}}}}~~}}}~}p}}}}}}}}}v}}}}}}}|v}|||||}|v}™àþÿÿõÓwvÙþÿúž}vpvpvppppvvpl}vpvoppoppppppvvplpvvloolllvvpolvlvlolooplllllllollullClllllllllllllllllllllClÇüÇtCýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!!!! !  ! !!!!!  ! !  !!!!  9p¥íýýýýýýýýýýýþÿýþýýýþþþþþþþþþþæÓ                                                                                                                                                                                  Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ }~~~~}~~~~}~~‘¡¡¡‘~~~~~‘‘‘‘¡¡¡‘¡¡¡¡¡¡¢¡‘‘¡¡¦¢¡¡¡‘¡¢¡¢¢¡£¡¢¡¡¢¡¡¡¢¡¡¢¡¡¢£¦£¡¡¢¢£«£¢££¦£££¡¡¡£¦£¢££££££¢¢åþÿÿÿÿÿê«¢£¦®¦£££¦£©£££©¦¦££©¦££©®±®¦©®®¦¦®®®®®¯¦££¦¦¦¦¦®«£¦®£££®®®®®®®®¦£¦¦££®®«¦¦££££®®®¦£¦¦£¢£££££¦«££££¦¦££®¦¢¢¦®££¦££¦¢¡¦¦¦¢£¦¢¢¢¢¢¡¡¢£¢Öÿÿÿí¡£¦¦¢¡¡‘¡¦¢£¦¢¢¡¡¢¢¡¡¡¡‘¡£¡¡¡‘¡¢¡¡‘¡¡¡¡‘‘‘‘‘¡‘‘¡¡¡¡¡¢¡¡¡¡‘¡¡¡‘€~~‘‘€‘‘‘¡¡‘~‘€}~~~~~‘‘~~‘‘~~§ûÿþÓ¡‘‘èþÿÿæ™}}~‘~~~~}}~}}}}}}}}~~}~}~}~}}v}}~‘~}}}}}v|}}}}}p}}~}}pv|||v|Çõÿÿýèžv{õÿÿ÷žwvpppvppv|vpp}}|}vvopolppvolplllpllppvplvpovvlllplllllllllllollllllllCllltlllllllClCCCCCCCuñè{luòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!! ! ! ! !!!! !!!!!! !   !! !   !!!=q¥íýýýýýýýýýýþÿþýýþþþýþþþþþþþþþæÓ                                                                                                                                                                                             ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ~}‘~~~~~~~‘‘¡¡‘~~‘‘‘‘‘~~¡‘¡‘¡¡€¡¡¡‘¡¡‘‘¡¡‘‘¡‘¡¡¡¡¡¦¡¡¡¡¡¡¡¡¡£¢¡¡£¢¡¡¡¡¡¡¢¢¡¢¡‘££££¡¡¢¢£££¢£££¢¦¦£¢¢£££¢¦¦££££££åþÿÿÿÿÿ뫦££¦®£££¦¦¦¦£££©¦££¦££®®®®££©®¦£©®®£®®®¦¦®®£¦®©¦©¦©®®££®®®®££®®¦®¦«££®®¦®®®£¢¦®®®¦£¦¦£££®¦¡£¦¦©£££¦¦££££¢£££££££¦£¢¢£¦£¡£££«£¢¢¡¡¢£¡¢öÿÿÿÖ¦¢¢¢£¡¡¡¡¢¦¡¡¢£¡¡¡¡¡¡¡‘¡¡¡¡¡‘¡¢¢‘¡¡‘¡¡‘‘¡¡‘¡‘‘¡¡‘‘¡¡‘‘¡‘¡¡¡‘‘‘‘~~‘‘¡‘~~‘‘~‘‘~~~~~‘‘~~~~‘~€§úÿÿב¡¥õÿÿýØ‘~}}~~}‘}}}~}}}}}}~}}}}}}}}}}}}vr}}}}}}}}s}|}}}}vv}}}}|v||v||p}™àýÿÿúèÙüÿÿÿõ™vvpv|vpvvpvpvvvvvppvolpvpvplopoppllpvplpplovvlloolllllloolllllllolllllllllllllllCCllCCCClÇüÆtlÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷Z!!!!!!! !!!!!!!!!!! !!!! ! !! !   !! =q¥íýýýýýýýýýýýþÿþþýýýþýþþþþþþþþæÓ                                                                                                                                                                                            Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~‘‘‘~‘‘¡¡‘~~}~~‘‘~~‘‘‘¡‘‘¡¡‘‘~¡‘¡‘‘¡¡~‘¡¢¡¡‘¡¢¡‘¡£¡¡¡¡¢¦£¡¡¡¢¡¡££¡¡¦¦¦£¡¡¢¡£¢¡££¡¡¡¡££¡¡£««££¦£¢££¢£¦¦¦¦¦êþÿÿÿÿÿê®®®¦®®®¦£©¦¦®¦££¦£®®®¦¦®®££££©¦£©©®¦££££¦®®©£©®©¦©©©®®¦¦®®¦®£©®®®¦®®®¦£©¦¦¦£££¦¦£¦££££®®®®¦££££¦®¦¦¦¦£¦£¢£¦¦££¢¡¡£®£££¦£¢¡£¦«££¦¦«¦¡¡‘­ÿÿÿû¦‘¢£¦£¦¢¡¡¡¡¡¡¡¡¡£¡¡¡¢¡‘¡¡¡‘‘¡¢¡¡‘‘‘¡¢¡¡¡¢£¡‘‘¡¡‘‘‘‘~~~‘‘‘‘¡¡¡‘¡‘¡¡¡~‘‘‘~~‘¡‘‘‘~€‘}}}~~}‘õÿÿè‘}¬÷ÿÿõ§‘}‘}}}~}}}}}}}~~}~}}~}}sp}}r}}}}p}}}}}}vrvv}}rvvp||vv}ppvpvvvpv|žõÿÿÿÿÿÿÿÿÿ÷ž}vpvvvppppoppopv}vvplvvpppvvvpvpopollpvlllpolopvololltpvllloollvpllllvlllClCCllClllllllyõèyCuòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!$Yóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! !!! !!! !!! !!!!!!!! ! =}ªíýýýýýýýýýýþÿþýýþþþýþýýþþþþþþæÓ                                                                                                                                                                                     ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ~‘‘~~‘¡‘~~~~‘~‘~‘¡‘~‘¡¡¡¡‘‘¡‘~‘‘¡¡‘‘‘¡¡¡‘¡¡¡¡¡~¡¡¡¡¡¢¡¡¡¡¢¢¢¢¢¡¡‘¡£¦¡¡¡¡£¢£¢¡¢¡¢¢¡££¢¡¡£££¢¡£«¦££¦£¦¦¢¡£«££¦®åþÿÿÿÿÿë«««££¦¦¦¦®¦£¦¦¦«¦£¦®®¦¦®®££®£®¦®®©®¦¦¦¦®®®©®£©®®£©®©£®®®®®¦®®¦®®®£®®®¦©®¦¦¦¦¦¦££¦®¦£££«®®££££££¦«£¦¦£££££¦¦££££¢££¦£¢£¦££¢££¢£££££¦£‘¡¢êÿÿÿê‘¢¡¡¦¦¢¡¡¡¡£¡¡¡¢¢¢¡¡¡¡¡‘¡¡¡‘¡¡¡¡¡‘‘¡¡¡¡‘¡¡¡¡‘¡¡‘‘¡‘~‘‘‘¡‘¡‘‘¡‘‘‘‘¡‘‘~¡‘~~‘‘~~‘‘‘‘~}~‘~}§ÿÿÿš‘Úûÿÿèš~}}‘‘}}~~}}~}~}}~}~}}}}}}}}}}}}}}}|s}}}}}}}}v}pp}}vvwwr}pv|v}}rppvvvv}˜Ùýÿÿÿÿÿÿÿÿý×vvvv}vopppppppvvvpvlvvplp|voovovovllooplpopoploppllllvolllvlllvlllltlllllCllClllllllClÌü›lCÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!=Còÿÿÿÿÿ÷_ !!!!!!!!!!!!!!  ! ! !!!!!!!  ! !   ! ! =q¬íýýýýýýýýýýýþÿýýýýýþýþþþþþþþþæÓ                                                                                                                                                                                                            Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ}~~‘¡‘‘~‘‘~‘¡‘‘¡‘~~¡‘¡¡¡¢¡~~~¡¡¢¡¡¢¡¡¡¡¡¢¡‘¡‘¢¢¡¡¡~‘¡¡¢££¢¡¡¢¡¡¡¡¡¡¢¡¡¦¢¡¢¢¡¡¡¢¢£««¦¢¡¢¢¡£¦££¦¦£¡¢¢¡¢££££¢£¦£¢£¦¦Ýþÿÿÿÿÿê«¢¢¢£¢££«®¦££®®®®®®¦£££®®££¦®¦£¦®££©®®®®®®®¦¦®®££®®®¦©££®®®£¦®®¦£©®¦¦®®®£®®®®®®¦®®®£££¦®££¦®®«¦®®£¢££££££®¦£¢£¦¦¦¦£¢¢¢£¢¦££¡¡¡¢¡¡¡¡£¡££¥ûÿÿþ¦¡¡¡¢£¡¡¡¡¢£¡¡¢¢¡¢¢‘¡¡‘¡¢¦¢¢¢‘‘¡‘‘¡¡‘¡‘‘¡~‘¡¡‘‘¡~‘¡¡¡¡‘‘‘‘‘‘~~‘~‘¡‘‘‘‘‘~}‘€‘‘¡‘~}}ëÿÿÿèõýÿÿÚ‘}~}}~}}}}}|}~}}}}~}~}}}}}}rw}}}}}}}}}}pvv}p}v}}}p}}p}prvp}p}}}}}vv}}v|pv}˜ßúÿÿÿÿÿÿÿýßppvvp}|vvvvpppolooovppvvolvpvpppvlppvpllllvollvlpllllllllltplllllllllllllllClClllllvòèyl{óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷_!!!!!!!!! !!!!!!!!!!!  !  !!!!!!!!! ! !!!!qªíýýýýýýýýýýþÿýýýþþþýþýýþþþþþþæÓ                                                                                                                                                                           ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~~‘‘~‘¡‘‘¡‘~~¡~¡‘‘‘¡‘¡¡¡~~¡¡¡¡‘¢¢‘¢¢¡‘¡¡¡¡¡¡¡¡¡¡‘¡¡¢¢¢¡¡¡£¢‘¡¡¡¢¢¡¡¢¢¡¡¢¡¡¢£¢£¦£¦¢¡¢£¢¢£££££££££¢£££££¢££££¦¦£åþÿÿÿÿÿ릡£©£££¦®£¦£¦®®£©®®££££®®¦£®®¦©¦©££¦®®®®®®¦®®®¦¦®®¦®®®££¦©®¦®®®®£®®®¦©®®££®®®®®®©©¦£££¦®¦£¦¦¦©¦¦¦££¦¦¦¦£££££££¦£££¢£¦££££££¢¡¢£¢¢¢¡£¢££¢Öÿÿÿí£¡¡¢£¢¡¡‘££¡¡¡¡¡£¡¡¡¡¡¡¢¢¢¡¡‘‘‘¡¡¢¡‘‘¡‘‘‘‘‘¡¡¡‘¡~~‘¡¡¡¡‘‘‘‘‘‘‘~~‘‘¡‘€‘‘}~‘‘}~‘¡~™ýÿÿÿÿÿÿûÓ¤~}~}}~}~}}}}}‘~}}~}}}}}}}|}}}}}}}}}}}}}s}}}vrp}}}}}p}vvvvvvv}}}}}pvs}vvppv™Ùúÿÿÿÿÿÿÿèžvpvpv||ppvpppppppppppvopopvlvoppvlvvpplllppplloolllllllllpllllllltlllClllClllllllCÌütl×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!CóÿÿÿÿÿúZ!!!!!!!!!! ! ! !!!!!!  !! ! ! !  !!   ! $pªíýýýýýýýýýýýþÿýýýýýþýþþýþþþþýèÓ                                                                                                                                                                                                                  Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡¡‘~~~~~‘¡¡¡~‘‘~¡‘‘~‘¡¡¡‘~~¡¡‘¡¡¡‘~~¡¡‘¡¢¡‘¡‘¡¡¡¡¡¡£¢¡¡¡‘‘‘¡¡¦¢¡¡¡£¦£¢¡¡¡¢¢£¦£¢¡¡¢¡¡¡¡¡¡£¦¦¢¡¡¢¡£¦¦¢¡¡£¦¦¦¦£¢£¦£££åþÿÿÿÿÿ¦®¦¦¦¦£££¢£®¦£££££®®¦«££®®®®®®®®©©®¦©¦£©®®®®®®¯®£®®®££©®®®®®®®¦££££££©¦££££££¦¦£®®¦££©¦©¦©¦££££¢£«¦£££¢¢¢¦«¦££¢¡¡£££¡¢¦¦¦£¢£«¦¦¦¡¡¡¡¢¡¡õÿÿÿÔ¡¡¡¡¡¦¢¡¢¡¡¡¡¡¡¡¡¡£¢¡¡¡¡‘¡¡£¡¡‘‘¡¡¡¡¡‘‘‘‘¡¡¡‘¡¡¡¡‘‘‘¡‘‘~~~~~‘‘~~~~~‘‘~‘‘~~~¡¡}~‘‘}}}êÿÿÿÿÿÿõž}‘}}}}}}~‘‘‘}}}}}}~}}}}}}}s}}~~}}}}}}}~}}}}}v}}v}}~~}}p}|v}}}pvp}}}pv}}wpp}}pv˜ßüÿÿÿÿÿÿýà|vvvvpvvpvvvv|}vpllopppolvpppooolllolppllollllpvvolplllllupllllollCllvlllollCCC{õè{l{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!! !!!!!!! !! !!!! !   !  !!!!q¥íýýýýýýýýýýýÿýýýýþþýþýýþýþþþþæÓ                                                                                                                                                                                                         ÓÓüüúüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ~‘¡‘‘~~~‘¡‘‘‘‘‘‘‘~€‘¡¡‘‘‘‘‘‘Ÿ¡¡¡¡‘¡¡¡‘¡¡¡‘‘‘¡¡¡¡¡¡¡¡¢¡¡¢¡¡¡¡£¡£¡¢£¡£¡¡¡¡£¢¢£¢¡¢£¡¢¡¡¡¡¡¡¦¦¢££¢£¢£££¡¢££££©¦££®¦££åþÿÿÿÿÿë«®£££©¦££££££¦¦®¦££¦®¦¦®¦©®®®¦¦®®®®®®©¦®©®®®®®®®®®®®®®£¦®®®®©©®©®®££¦££¦®©££££¦®££¦®¦££©££¦®¦££££££««£££¢¢¢¦®£££¢£¢£«¢¡¢¦¦££££££¦££¢¡¢¢¢¡­ÿÿÿû¢¡¡‘¢¦¡¡¢¡¢¡¡¡‘¡£¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘¡¡¡¡‘¡¡¡¡¡‘¡¡‘‘¡¡‘‘‘¡‘¡‘‘‘~~‘€€€~‘‘‘‘‘‘~~‘‘‘‘~‘‘~€šýÿÿÿÿüÚš‘~}}}}~}}~~‘‘}}~~}}}}}}}}~}}}}}}~}}}}}}}~}}}}}}}rp}}}}}vv}qw|q}p}}w}}ppp}p}pv}vov}™àÿÿÿÿÿÿÿúÙvvvvvppvpvvvvplplppvppllppvvoolloopvvlllooolllpllllolllovulllllllllllCltlllClÌü›olßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷_!!!!!!!!!! !!!!!!!!!!!!! ! !! !! !!9q¥íýýýýýýýýýýýÿÿýýýýýþýþþýþýþþþæÓ                                                                                                                                                                                                                                     Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~~~‘‘~~~~‘‘‘¡‘‘¡‘¡¡¡‘‘¡¡¡¡~‘‘‘¡¡¡¢¡¡¡¡¡‘¡‘££¡¢¡¡£¡¡£¢¡¡¡¡‘¡¢£¢¢£¡££¢££££¢£¢¢¦£££££¡¡£¦«¦£¡££¦£££¦¦£©êþÿÿÿÿÿê««¦£®«¦££©®¦®®®®®¦£¦¦¦¦®®®®®®©£®®®®¦®®®®©¦®®©®®®©£¦®®®©®®©¦®££££®®®¦®®®®®®££¦¦®®®£¦«¦¦®®®££¦¦£¦£££¡©«£££®¦¦¦¦¢¡¡¢¦¦«£¢¡¦¦¢¡¡¢£¢¡¢¢££¢¡£¦££ëÿÿÿÝ¥¡¡£¦¡¡££¢££¢¢¡¡¡‘¡¡¡¡¡‘¡¡‘¢¢¡‘‘¡¡‘¡¡¡‘‘~¡¡‘¡¡¡‘‘‘‘~~‘¡¡¡¡‘~~~~~‘‘~~~}~~~~}~ëÿÿÿÿ॑}~~}}}‘‘€}}}}}~}}‘‘~}}}}}}}}}}}}}}|}s}}sp}}}p}}}}vv}}}p}p}}}|}ppp}wpppw}}pp}ppv}}ppvwÙÿÿÿÿÿÿÿþúÙopvolpvpopvvvvpvvpvplppvwppvlopoollolovolvplllolpplllllllllllCllClCClllClC{÷èyCƒ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Z÷ÿÿÿÿÿ÷x!!!!!!!!!! ! ! !!!!!!!!   !!!!!!!!  ! ! =qªíýýýýýýýýýýþÿýýýýýýýþýýþýþýýþæÓ                                                                                                                                                                                                                      ÓÓüüúüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~‘‘~~€~~‘‘~~‘¡‘‘¡¡¡‘~‘‘~‘¡¡‘~¡¡‘‘¡¡¡‘¡¡‘¡‘¡¢£¡¡¡‘¡¡‘‘¡¡¡£¡¢¡¡¡¡¢¢¢¡¡¡¡‘¡¡¢¦¡£¢¡££¡¢££¢¢£¢£«£¡££££¢£¦¦£¡¡££¦£¡¢¦¦££åþÿÿÿÿÿë«£¦¦¦¦£¦¦¦®£¦®®®®®¦£¦®®¦®¯®£¦®®¦®®®£©¯¯®£©®®®®®®®©£©®®¦®±®©®¦®¦¦£®®®®®¦£©©££££©®¦£¦¦¦®®¦¦¦¦£¦©¦££££££¦¦¦¦®¦£¢£¢££¦¦¦£¡¢£££¢¡¡£¦¢¡¢¡¡¦¢£¦¡¢°ýÿÿþ«£¢¡¡¡££¦¡¡¢¢¡‘¡¡¡‘¡¡¢¡¡¡¡¡¡¡¡¢¡¡¡¡‘¢¡¡¡‘¡¡¡‘¡¡¡¡‘‘‘~‘‘¡‘¡¡¡‘~}~~~¡‘~~‘‘~~}}}Óþÿÿÿà¥}}}}}~~}~~~~}}~}~}}‘‘}}}|}~}}}}}|v}}}}}}pp}}}}}}}p}}}}vpv}s}}}}}}}}v}}}|}}vp}pp}vpppvp{àÿÿÿÿÿÿÿÿÿúߘpppppoovvvppopvpppoovvvvlppvlllolllpolloppllllpolllllllllllllllClCllllllßü›tlßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!!!!!!  !!  !!!! !!!  =qªíýýýýýýýýýýýþÿýýþýýýýýýýþýþþþæÓ                                                                                                                                                                                                                     Ó×üüüüüúüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖs‘‘‘‘‘~~~~~~‘~‘‘¡¡~¡¡‘‘‘¡¡‘¡¡¡¡¡¡‘‘¡£‘¡¢¦¡¡¢¢¡¡¡¡¡¡¡¡¢¡¡¡£¢¡¢¦£¦¦¡¡¡‘¡££¢¢¢£¢¢¡¡££¡£££¦£££££££¦££¦£¡££££åþÿÿÿÿÿꦣ¦©©®®®®¦¦¢¦®¦££®®¦¦®®££®®©£©®®®¦®©£¦®©¦®®£©£®©®®®¯®££©±±®®®¦£©®£¦¦®®©£®®©®®¦¦¦££¦®®®¦££¦£££«®¦¦¦®£££££¢££££¦££¢£¦££¦¢¢¢¢£££¢££££¡£«¦¦£¡¡¢Ýÿÿÿõ¡¡¡¡£¢¡£¡¡¡¡¡¡££¡¡¢¢¡‘¡¡¡¡¡¡¡¡¡‘¡¢¡¡‘‘¡¡‘‘¡¡¡‘~¡‘~‘~~‘‘¡‘~~}¡‘~~~~~‘~‘¥úÿÿÿè‘‘‘‘‘‘~}~~}}}~~}~}}}}}~~}~}}~~}r}}~~}}}}}}}}}v}}}vp}}}pv}}~}}wp}pppppp}pp|vvpppv}}p|}vvv|üÿÿÿÿÿÿÿÿÿÿüè˜opvpoppovpoopoopopplpollooopvoovplllolvollllltppollllllCllovollCCllllƒõèuC˜úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!!B÷ÿÿÿÿÿ÷_!!!! !!! !!!!!!!!!!!! ! ! !  !  !!!!q¥íýýýýýýýýýýýÿýýýýýýþýýÿýýþýýýæÓ                                                                                                                                                                                                                                 ÓÓüúüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~‘¡¡~~¡‘~}~~‘‘~‘¡¡~‘¡¡~¡¡¡‘‘‘¡¡‘‘¡¡¡‘¡¡¡‘~¡£¡¡¡¢¡¡¡¡¡¡¡‘¡¡¢¡¡¦£¡¢¦£££¢¡¢¡¡¢¢£¢¡££¢¢¡££¡¢£¦¦£¡¡£¦££¦££¦£¢££££åþÿÿÿÿÿꦣ£££«®®®®££¦®®¦£¢¦®®®®¦¦®®®®£®¯®¦®®®££®®¯®£¦©£®®¯®®¦£¦®±¯®®®©£¦®©¦®££¦¦¦®®£®®¦£££¦¦©®®¦¦®¦££¦«¦©®¦¦£¦¦££¢£££¦¦£¢£¦£££¢¡£¢¢£££¡¢¦£¡£¦££¢¢¡£¦õÿÿÿÚ¦¡¡££¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡¡¡‘‘‘‘¡¡¡¡¡‘¡¢¡¡¡‘¡¡‘¡¡‘¡¡¡‘¡‘¡¡~~~‘‘¡¡‘~~~~‘~~~‘¡õÿÿÿÿ§}~‘¡‘}‘~}‘~}}~~~}~~}}~~~}}~}}}}}}}}~}}}}}}}}|}}}pp}}rvvv}}}}}|v}wpp}w}}p}}}pppppvvv|}}v}}vòÿÿÿÿÿÿÿÿÿÿÿÿýè˜vppopppplopppopvpolpllpplopovvoollloopvlvlllolluvllllCllolllllCllllßüžlláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!$!!@óÿÿÿÿÿ÷_!!!!!!!! ! !!!! !!! !! !    !!  !!pªíýýýýýýýýýýýþÿýýýýýþýýýýþýþþþæÓ                                                                                                                                                                                                      Ó×üüüúüüüúüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ‘~~}~~¡‘~~‘‘‘~~‘¡‘¡~~‘‘‘¡¡¡¡~¡¡¡¡¡¡‘‘¡¢¡‘¡¡¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡££¢¡¡‘¡£¢¡‘£¢¡¡¡¡¡¡¡£¢¦¢¡¢£¢££££££££¦¦¡£¦£¢¢££££££¦£££åþÿÿÿÿÿî°¦£¦¦£££¦®£££¦¦£©££®©®®©¦©£®®¦£®®¦®®®©£©¦£®¯¯©£©®©¦©£©©¦®®££¯®®®®±®®®£¦®®®¦£®®®®®®®®©«££¦©£¡£®¦¦££«¦££££®£££££¦¦£¦®£££¦®«££¢¢£¡£«£¡¡¡¡¡¢£¢¦«Ûÿÿÿû®¡¡¡¡¡¡¡¡£¡¡¡¡¢¢¡¡¡¡¡¢¡¡¡¢¡¡‘¡¡¡¡¡¡¡~‘¡¡¡~~¡¡¡‘‘¡‘~~~‘¡‘‘‘‘‘‘¡‘~‘¡‘~}}~¡‘Ôúÿÿÿÿõ¡‘~}‘~}}}‘}}}~}}}}}€~}}}}}~~}}}~}}|}|v}|}}}}}s|}~}}}}}}}sv}}p}p}pp}}}vpppv}}p}wv}pwppvpvppppæÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜vpopooopvooopoppollovpllpopvoollvllllllllllllllllllluvlCClllllCl˜÷á{oüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!Cóÿÿÿÿÿ÷_!!!!!!!!! !!!!! !!!!!!!!  !  !!! !!! !qªíýýýýýýýýýýýÿýýýýýýýýýýþýþýýýæÓ                                                                                                                                                                                                                          ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ¢‘~~~}~‘¡¡~~~‘‘~‘¡¡‘‘‘‘‘~‘¢¡‘‘‘¡¡¡‘¡¡‘¡¡¡¡‘¡¢¡‘¡¡‘¡¢¡¡¡¡¡¡¢¢¢¢¢¡¢£¡¡££¡¡¢¡¡‘¡¡¢£¢¡¢£¢¦¦£¦££¢£££¦££¢£¡¢£¢¢££££££åþÿÿÿÿÿî«££¦®¦££¦¦£¢£©££«®©£©©®®®££®®®®®®®®®©¦©®®©®¯®©£©®®¦©®®¦£¦®®®®®®®¯®®®®®®£®®££®®®©®®®®®££®¦£¢£¦¦£¦¦£¦¦£¦¦££¦¦¦¦££££¦¦¦¦¦¦«¦¦££¡¢¢£¦£¡¡¡¡££££¦¦¦ëÿÿÿë¡¡£¡¡¡‘¡¢¡¡£¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¡¡‘‘¡¡‘¡‘‘‘¡~~¡¡‘‘‘‘‘¡‘¡}‘‘‘~}~‘¬õþÿÿÿÿÿè‘‘~}}~~}‘‘}}}~}~~}}~}~}}}}}}}}}}}}}}}sp}}}p}}}}}}}~}}}p}p}}p}p}p}vp}|}vvp}}|v}}p}}vpppppvpov×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜vooppvvplllpvvllppopooopolpppoovlllolllllllllllplllllCCCloulllßü›luèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!$@óÿÿÿÿÿ÷[!!!! !!!!!! !!!   ! !!!!!! !! !!  ! !      !!!!qªíýýýýýýýýýýýþÿýýýýýþýþýýþýþþþæÓ                                                                                                                                                                                                                         Ó×üüüüúüüúüúüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~‘~‘~~~‘‘‘‘‘‘‘¡~}~‘‘¡¡¡¡~¡¡‘¡‘‘‘‘¡¡‘¡¡¡¡£¡¡‘¡¢¡‘‘¡¡¡¢¡¡¡¡¡¢£¡¢¦£‘¢¢¡¡¡£¢¢¦££¦¡¡£££¦£¢¢££¡¡¢££££££££££¢£¦¦¦¦£åþÿÿÿÿÿꫦ¦¦£££££®®®®®®¦¦®®®¦££®®£©®®¦©¦©«¦¦©®®©®®¯®®®©®¯©¦®®®£®©¦®©®®®£®®¦£¦®£©®¯©££®®¦£©££££¦®®¦®¦¦¦¦¦¦£££¦¦£££££££¢¡¢£££££¢¡¡¢¢¦¦£¢¢£¡¡£££¢£¢¡¡¡¡¡¦ýÿÿþ­‘¡¢£££¡¡¡¢¦¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡‘¡¡‘‘‘‘¡~‘‘‘‘¡¡‘‘‘¡‘‘‘¡¡‘‘~~‘¡~~‘‘‘¥ëúôýÿÿÿÿÿà‘~‘}~}‘}}‘}}}~‘~}~}~}~}}}|}}}}~}‘}}}}}}}}}|v}}}}}}}}wp}}}v}v}w}ppppvpvp}}ppwvpp}}v}vpv}žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜ooopvppvpopolopololloollollloolloolllCllolllovllllolllllCll›÷áuCÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷_!!!!!!!!!!!!! !!!! !!!!!!! !   !    !!qªéýýýýýýýýýýýÿýýýýýýýýýýýýþýýýæÓ                                                                                                                                                                                                             ÓÓüúüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~}~‘‘~~~~‘‘~~‘‘¡~}~~~¡¡¡‘¡‘‘¡¡‘‘¡‘‘¡‘‘¡¡‘¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¡¡¢¢¢£¡¡£¢¡‘¡¡¡¡¡¡££¦¦£££¡¢£¦¦£¢¢¦££££££££££££££¢£¦®®¦®êþÿÿÿÿÿë«£¦¦££££¦®®®®®®®®®¯®¦££®®£®®©©®¦®¦¦£¦©¯®®¯®©®¯©¯®©©®©©©®®£®®¦®®£©©®££££®®®®££®®©£¦¦¦££¦©®®®®®®¦££¦¦¦®¦¢¢£££¢£¡¡£££¡££££¡¡¢£«¦££¦¢¡£¦£££¢¦£¢¢¡¡Üÿÿÿõ¡¡¡¢££¢¡¡£¢¡¡¡¡¡¢¡¡¡¡¡¡¡¡‘‘¡‘‘¡‘~~~¡¡‘¡‘‘¡‘‘¡€¡¡‘‘‘¡‘¡¡‘~~‘‘‘~~‘¡Úûõ§¥ýÿÿÿÿÿÚ‘~‘‘~~}}‘}}|}‘}~~~~}}}w|}~}}}~}~~}}}~~}}}}}}pv}}|}}}}}}}}s}pppp}vppppppvppp}v}|v}}}}pvvp™ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜popvvvlloppplllllllpooplllllopllpolllollllopollllolCClCClßü›luñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!$Aóÿÿÿÿÿ÷[! !!!!!!!!!!!!!!! !!!  ! !!!!    =p¥íýýýýýýýýýýýþÿýýýýýýýþýýýýýýþæÓ                                                                                                                                                                                                                                                         Ó×üüüüúüúüüüüúüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŸ~‘‘‘¡‘~~¡‘~‘‘‘‘‘¡‘¡¡¡‘‘~¡¡~~¡¡¡‘‘¡¡¡¢££‘‘¡¡¡¡¢¢¡£¡¡¡¡¡‘¡¢¡¡¢‘¡££¡¡£¢£¦¢¡¢¡££££¡¢££¢¢¡¡¢££££¢¢£££££¦££££©¦££££Ýþÿÿÿÿÿê««¦¦££¦®¦¦££¦¦££®¦¦®®¦£®®®®®®®®£®¦©®®®®®£©©©©©£©®¯¯¯®¯®®£©®¯¦¦¦®®¯®®®®©¦¦£¦¦®®££®£¦®®¦£££¦®££®¦£¦©¦£££¦®¦¦¦£££¢¦®£¡¦££¦££¢¡¡££¢¡¡££¡¡¡¡¡¢¢¢¢¡¡¥õÿÿÿ墡¡¢¡¡¡¡¡¡¡¡¡¡¢¡‘‘¡‘‘¡£¢¡¢¡¡¡¡‘¡¡¡¢¡~¡¢¡‘‘~~~~~¡‘}~‘¡‘¡Ô÷ûÚ™‘àÿÿÿÿÿÿØ‘}}}}~~~¡~~~}~}}~}}}}}}~}}}~~}}}}~}}}}}}}}}}}}}~}p}}}}}v}}}wvv|}}}}}vp}}}}|}}vpvwp}vppvvpv}|pvýÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜lovolooovploppvppollopoooooplllollollllCllCllCCllCllll›úèylÊýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Zóÿÿÿÿÿ÷_!!!!! !!!!!!!! !!! !!! ! !    ! =qªíýýýýýýýýýýýÿýýýýýýýýýýýþýýÿüæÓ                                                                                                                                                                                                                                                      ÓÓüúüüüüüüúüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖŸ¡~~‘‘¡¡‘}¡‘‘‘~‘¡‘‘¡‘‘¡¡¡‘¡¡‘~~¡¡¡¡¡¡‘‘~¡¢£¢¡¡‘‘‘¡¡¡¢¢‘¡¡¡¢£¡¡¡¡¡¡¢¡¡¢¢¦¢¢£¦£¡¡¡£¦£¢¡££¡¡¡¡¢¡£¢££¢¡¡£££¡££££¦®¦££¡£åþÿÿÿÿÿë°®®®££¦®®£££¦¦£®®®®®¯®£¦®®®®®®®®®£©©®©©®®££¦£££©®¯®¯¯®¯®®®®®©©®¯¯¯®®®®©®¦¦£©®®©££¦¦®®®£££©®®¦£¦®®®¦¢£¦®®®£££¦££¦«£££¢¢¦¦¢¢£¢¢£¢££¢¡¡¡£¡¡¡£¢¡¡¡¢­ÿÿÿý¨¡¡¡¡¡¢¢‘¡¢¡¡¡¡¢¡¡‘¡¡¢¢¡¡¡‘‘‘‘‘¡¡¡¡¢¡¡¡¡¡¡¡~‘‘~~~~}‘¡~‘‘‘¡§õýë§€~ÚýÿÿÿÿÿÿÚ~~~}~}}~¡~}‘}}}|rs}}~~}}}~}|}}}}}}}~}|}}}}}}}}}}}}}}vsp}}}}}}}p}}}pv}v}}vpvv}}}}|}}}p}vpvvppúÿÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜lppollpoloovvvooolppoooloollllllolllllCllCllCllClullâý›v{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!=!!!Cóÿÿÿÿÿ÷] !!!!!! !!!!!!!!!!! !!!!!!! !! ! ! ! !  =sªíýýýýýýýýýýýþÿýýýýýýýýýýþýýýþæÓ                                                                                                                                                                                                                                                          Ó×üüüüúüüüüüüúüüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ¢~~~~‘¡~~‘‘~~‘‘¡‘‘‘‘~‘‘‘‘‘‘¡¡¡¡‘‘¡¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡£¡¡¡¡¡££¡¡¢¡¡¡£¢¡¢££¡¡¢£¡¢£¡¡£¡¡££¡¡¢£££££££¢¡££££¦££££££¦¦££££åþÿÿÿÿÿꦦ¦®«¦¦£££©®¦¦¦¦¦£¦££®®®©¦¦©¦®®®¯®®®¯®£®¯®®¯®¯¯¯¯®£©®®®©®®®®®¦©¦££®¦®®®¦¦®®¦¦¦££®¦®®¦¦¦££££©£££¦¦££££¦¦£££¢££¢¢£¦£££¢¦¦£¢¦®¢££¡¡££¡¢£¢¢£¢¡¡¡¢¡£¡êÿÿÿí£££¡‘¢¦¢‘¡£¢¡¡¡¡¡¡¡¡‘¡¡¡‘¡¡¢¢¡¡¡¡‘‘‘‘~‘¡‘~~¡¡‘‘‘¡‘~~‘¡~~~‘àýøØ‘‘}ÚýÿÿÿÿÿÿÿÚ}~‘~~}}~~}}}‘‘~€}}~}}}~~}~~}}s~}~}}}}~}}}s}}}p}}}}}rw}}}}}p}r}vv}}}v}}rvp}}}v}|vpppv}pvppvpppvõÿwvúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜vplovvpploppllllopllloolllloollloolllolllloolllol›úáyl×ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=$!Bóÿÿÿÿÿ÷x!!!!!!!!!!!!!!! !!!!!  !!     ! 9qªíýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                ÓÓüúüüüúüúüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ‘‘~€‘~‘‘~‘~‘¡¡¡‘‘¡‘~‘¡¡¡¡‘‘‘‘¡¡‘¡¡~~‘¡¡¢¡¡¡¡‘‘¢¡¡‘¢¦£££¡¡¢£¡¡¡££¢¡¡¢¡¦¦¡¡¡¡¡¢¡¢¢¦¦££¦£¡¡¡¡£¢¢¢££££¦¦¦££¦£¢£êþÿÿÿÿÿ릢£«®®¦££¦®¦££¦©¦®©£©®®®®®®¦®®©®®®®©®¯®¦®¯¯¯¯±¯±®£©®®®©©®¯®®©£©££©£££¦®¦©®®®¦®££¦©¦£¦®¦££££¦¦££££££¦£®¦££££¢¡¢¢¢£¦¦¦£¦¦££¦£¡¢£££¢¢¡£££¡¢¡¡¡¢¢¡¢£¥ûÿÿþÖ¢¢‘¡¢£¢¢¢¢£¢¡‘¡¢¡‘¡¡¡¡¡¡‘¡¡¡¢¢¡‘‘‘~‘¡~‘~~‘¡¡¡¡¡¡¡~}‘‘€~Ô÷ý륑‘‘æþÿÿÿÿÿÿÿÿà€}}~}}~~}r}‘‘‘~~}}~}}}}}~~}}~}~~}}}~}}}p}~}}p}p}pvr}}}}}}pv}}p}}ppvw}vv}}}}pp}}vpv}}ppvvpv}võýp×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜ooopvpolopllllllllooolloovolllllloopollllloooluèþC{õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!$!!! ! !! !  ! ! !! !! =q¥íýýýýýýýýýýýþÿýýýýýýýýýýþýþýýæÓ                                                                                                                                                                                                                                                 ÓÓüüúüüüüüúüüúüüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~~‘‘‘¡‘‘~‘‘¡‘~~~‘¡¡‘‘‘‘¡¡¡¡‘¡¡¡~¢¢¡¡¡¡¡¡¡¡¡‘¡¡¡¢¡‘¡¡¡¡¡¢¡¡¡¡¢¡¡¢¡¡¢¢¡£¢¢££¦££¢¡¢¢¢£¢¢¢£¦¦¦¦£¦¦¦¦££¦££££¢¦«£¢åþÿÿÿÿÿ릣¦£®®«££®©¦®¦¦®¦®©£££©££®®££®®®®¯®©£®®©¦®®®®®©©£®¯©©®©©®®©®©©®®®®®®¦£®£®¦¦¦®®®¦®©¦££¦¦««¦£££££®¦££¢£«¦¢££¦££¦®£¢£££¢£¦£¢¢¡££¢¢¢¢£££¡¡¡¡¦££¢¢¡££¡Ôÿÿÿû¦¦£¡¡¡¡¡¡¡¡£¢‘¡¡¢‘¡¡¡‘‘¡¡¡¡¡‘¡¡¡¡‘¡¢‘¡¡‘‘¡‘‘¡‘‘~~‘‘‘¥ëýõ¬‘€~§øÿÿÿÿÿÿÿÿÿÿà‘~}~‘~}}}~‘}~~~~}}~~}~}~~}}}|}~}~}}s|}}}}}v}}~}}}}}}}}}}pp}}p}p}}}v|pp|v}}}pvvpppwvvv}vppppñýv˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýàoovpoooooploopollloooooolllolllllllClolClllCüául×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@÷ÿÿÿÿÿ÷_!!!!!!!!!!!! !!!!  !  !! =}šíýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                            ×ÓüúüúüúüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~‘‘~‘¡¡‘~‘‘~~‘‘~~~~¡‘¡¡‘¡‘¡¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¡¡££¡‘¡‘¡£¡¡‘££¡¡£¢¡¡¡¡¡¡££¦£¢¦¦¦¦£¡‘¡¢¢£¡¡¢¦«££££¦®®®¦£££¢££££¦®£Ýþÿÿÿÿÿ릣®¦¦®®£®®¦¦®®®®®££££©£££®®¦££®¯®¯¯££££®®©£©®©©¦£®¯®®©£®®£®®©®±®©££¦©¦¦®¦¦£££®®®®®¦££££®®£££¦£££¦®¦¡¡££¡¡££¦£¦«£¡¦¦£¡¢£££¡¡££¡¡¡¡£££¡¡¡¢¦£££¡£¦£¡¥õÿÿÿê«£¢¢¡‘‘¢¡‘¡¦¦¡¡¢¡‘‘¡¡‘¡£¢¡~‘¡¢¡¡¡¡¡‘¡‘¡¡¡¡~€¡‘~‘¡¡¡ÚýýÚ¤~}‘Úýÿÿÿÿÿÿÿÿÿÿÿ怀‘‘‘}}~~~~~‘}}}}~~}~‘}}}}~~}}}}}}}}}}r}}}}~}v||p}}}}}|}||pv}}}pppppv}}}vpppopppvppvppppè÷pvýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýß{polooollllpvvooololoollllllllCCllClolCCCluèýl{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!! !!! ! !!!!!!!!!!!!     ! !=q¥íýýýýýýýýýýýþÿýýýýýýýýýýýýþýýæÓ                                                                                                                                                                                                                                                          ÓÓüüüüúüüüúüúüüüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~‘~~~~~‘‘‘‘‘‘¡‘‘¡‘‘‘¢¡‘‘‘¡¡‘‘¢¢‘‘¡¡¡¡¡¡¡¡¡‘¡¢¡¡‘¡¢¡‘¡¦¢~¡¡¢¡¡¢¡¢¢£¢¡¢¢£¡¡£££¡£££££¡£££¢¢¢££££££££££££££¢£¦êþÿÿÿÿÿ£££¦£££®©£££¦®«££¦¦®®®®®®©®©£®©®±©®®©®±®£®¯®¯®©®®®¯®©©£©®¯®®®®©¦®©®®®®®®¦¦©¦©®££££¦®®®®££®¦¦¦££¦£££®«¦£££¦¦¦¦£¡£®£¢¦¦£££¢¢££££¡££¢£££¢££¢£¡¡¡¢¢£¨þÿÿþ­¡¡¡¢¡¡¡¡¡‘¡£¢¡¡¡¡¡¡¡¡‘‘¡¡¡¡¡‘¡¡‘‘‘‘‘¡¡‘~‘‘‘‘~~‘¬õþí§¡‘~¥õÿÿÿÿÿÿÿÿÿÿÿÿÿè}‘~~~~~‘~}~}~}~}~~~}}}~}|}~}}sr}}}}}}}}}|}r}}}}}}}rv}}v|}}}}pw}}}}v}}}pvpp|}|}v}|v|pv}vppvvvvè÷vvòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýßwoovopplloololloolllloplllllllllllllllCCÇüèyCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!9!!!!!!!!! !! !!!  ! ! ! ! !!qªíýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                          ×ÓüúúüúüúüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~‘~~~~~~~€‘~~‘‘~¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡¢¡¡¡¡‘‘~‘¡~¡¦«¦¡‘‘¡¡£¦£¡¡¡¡¡¢¢££¦£¡¢¡¡£¢¢£££¢£££££¢¢££¦£¡¢¢£¢¢¦®£¡¢£¢¡£££åþÿÿÿÿÿî°¦¦¦¦£¢¢£¦©£££®®£¢£¦®®®®®®®®¯®®©©®¯®®¯±¯±®©®¯¯¯¯®®©¯¯®©®£©¯®®£¦®®®®®®®®®®¦«®®®¦¦®®®®©©®®¦¦®®®®®£¢¢££«®®«¦££®¦®®¦¢¢££¦®«££¦¦££«¦¦¢¢££££££¡¢¢¦£¢¡¢££¢êÿÿÿõ¡¡¡¢¢¢¡¡‘¡¡¢¡‘‘¡¡‘‘¡‘¡¡¡‘¡¢£¡~~~~‘¡¡¡¡~‘¡‘‘€~‘æýýØ¡¡¢¡Úýÿÿÿÿýþÿÿÿÿÿÿÿÿí‘}~‘}}~‘‘~}~}}}}~}}~}}}}}r}}}}}v|}r}}rpvr}pv}~}|s}}}}|vrppvv}}r}}vvrp}}}}}pvv|v}}}}}v}||vpppvvß÷‘}pßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü×wppovooplllollllllopvolllllllCllovolCuèÿl˜÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!==9Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!! !!!!! !!!  ! !!! !  ! ! !!!!!  ! !!  ! =}ªíýýýýýýýýýüýþÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                    ÓÓüüüüüüüüúüúüúüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ~~~~‘¡¡~~‘¡‘‘¡‘~‘‘‘‘‘‘¡¡‘‘‘¡‘¡¡¡¡¡¡¡‘¡¡¡£¡¡¡¡£¡¡¢¡¢¡¡¡¡¢¡¡¡¡¢¢¡¡¢£¡¢¡¡¡¡¢¢£«¢¡¢¡£££¡¢¦£¡£££££¢¢¦¦£¢¦®¦£££åþÿÿÿÿÿꦦ¦«¦¦©£¦®¦£¦¦¦®®©®©¦©©®©©®©©¦®££®¯©©®¯©®®©®®®©®¯®®®©®¯®£©®¯©®®©®®®©®®©®¦£®©®®¦£££©¦¦¦££¦¦¦®¦¦¦££££¦¦¦¦¦¦¢¢££¦¦£££££¢¢¢¢££¦£¢¢¢£¡£¢£££££¡¢¡¡¢¡¡¡¢¢¡¥ûÿÿÿÝ£¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¢¡¡¡‘‘¡¡¡¡‘¡¡¡¡‘¡¢¡‘‘‘~~¡‘‘Ôûÿ륑€­õÿÿÿÿÿà¥Úÿÿÿÿÿÿÿÿõ‘‘}~}~~}¡~~~}~}}~~}~}}~}}}}}}}}}~‘}}}|}}}~}}}}}p}}}}}pv}}}}rv|}}}rv|}|}v|ppp|vp|vp}p}vpv}vpv}vß÷‘woÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌvoollppllllpplllollllllovllllllllllÇýè{uáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷Z!!!!!!!! !!! ! !! ! ! ! !   !q¥íýýýýýýýýýýýÿýüýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                               ÓÓüúüúüúüúüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~}}}~}}‘¢¡‘~~~‘‘¡¡‘¡¡¡~~~~‘¡¡~¡‘~~¡‘~‘¡¡£¢¡¡¡¡¡¡£¢‘‘¡¡¡¡¡¢¢¡££¡¡‘¡¡¡¦¦¦¢¡¡‘¡¡¡¡Ÿ¡¡¡¡£¦¢¡‘¡¡£¦£¦¦££¦££¦£¢¡£¦««®®¦£££åþÿÿÿÿÿꦣ©®®®®®¦©££®¦¢¦®®®®£®®®¦®®¦£££££®®¯®££©®®®®©®®®®®©©®®¯®©©¦©®®¯®®®£®®®®®®®®££¦¦¦££££®¦¦¦®®££¦££¦®¦®®£¢¢££¢¡¡£¦¦£¦®¦£¢¡¡¡¡¡£¦¦¡¢¦£¡¡¡¡¢¢£¢¢¡¡¡¡¡¢¦£¡Ôÿÿÿý«¡¡¡¡¡££‘‘¡¡¡£¢¢¦¦¦¦¡‘~~‘‘‘‘¡¡¡¡¡‘¡¡¡‘‘~}~}~¡‘§õÿúÓ‘~‘¡àýÿÿÿÿõ§}~¥ýÿÿÿÿÿÿÿõ‘¡‘~}~~}‘¡¡~~‘~}}‘~‘~‘}}~~}}~}~~‘€}}}}vpvrvr}}}r}}}}}r}|v}}}pp}}v}}}}|v|}}}|pp|||ppp|vp}}}v}vÙúvvžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÇollllllloooploolClloopplopolCCCl{òÿÇC˜÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!@óÿÿÿÿÿ÷_!!!!! !! !!! !!! !!! ! !  ! ! ! !!qªíýýýýýýýýýýýþÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                           Ó×üüúüúüüúüüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘~‘‘~}‘‘¡‘‘‘‘‘‘‘¡¡¡¡‘¢¡‘¡¡¡¡¡¢¡¡¡¡¡‘¡¢¡¢¡‘¡‘¡¢¢‘¡¢¡¡¢¡¡¢¡££¢£¡¢¡¢¡¡¢¢££¢£¢£¢¢££££¢¢£££££¢£¦¦££¢¢¦¦¦¦££££åþÿÿÿÿÿꫦ¦¦££££©®®¦¦¦©®®£¦®©®®£©®®££®®®®®®®±©£®®®¯®©®¯®©®¦©¯®©®®¯©®©®¦®®®®£¦¦®©¦©¦¦¦®®±®®¦£££¦¦¦¦¦¦£££®«¦£££££®®£££££££££££¦£¡£¦£¢£¦£¢¢££¡¢£¢¡¢££¡£¡¡¢¡££¡¡¥íÿÿÿí¡¡¡¡¡¢¡¡¦¢¡¡‘¡¡¡¡‘‘¡¡¡¡¡¡‘‘¡¡¡¡‘‘‘‘¡¡‘‘‘‘¡¥êýÿ॑‘~¬ûÿÿÿÿýÚ¤~~‘‘ýÿÿÿÿÿÿÿú~~~}~~~}~~}~}~~~~}}}}~‘}}}}}}}}}s}s}‘}}}|}}}}}}}v}}|}}}|p|}}v|}}p}|vvp}|}}p}ppv|vvppv||pvpp|v×üvoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÇvllopoolllloplCoplllClolllllll×ÿñ{uèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷]!!!!!!!!! !! !!!!!    !!  !  !qªíýýýýýýýýýýýÿýüýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                   ÓÓüúüúüüúüüúüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘¡‘~~~‘¡¡¢¡~}~~¡¡‘~~~‘¡¡¡‘¡¡¡¡¡£¡~~~¡¡¡¡¢¡¡¡¢¢¡¢¡¡‘¢«£¡¡¢£¦¢¡££¦¢¡£¢¦¦££¡¡¡£¢¢£¡¢£¦¦£¦¢¡¢¢¡¡££££¦£¢¡¡¢£¦¦££¦®©åþÿÿÿÿÿ뫦¦£££££¦®®®¦©®®®®¦¦£££¦¦¦®©®®®®®®©®¯®©®®£®®©©¯¯¦©¦®¯®©£®¯®®££££©®®®©¦®®£¦®®®®®®££¦££¦¦£¦®®®£¢¦®¦£¢¡¢££¦®®®¦¡¢£¡¡¡££¦¦££¦¦¡¡¡¡¡¢££¡££¡¡¡£¦¢£¦¢¡‘¡¡¡¡¡§þÿÿþ¬¡¦£¡¡¡¡¢¢¢¢¡‘¡~¡£¡¡¡¡¡¡‘¡¡~‘¡¡¡¢¢¡Ôûÿ÷¬‘¡¡¥ëþÿÿÿÿ뚀‘‘¡¡‘õÿÿÿÿÿÿÿý‘~}}‘‘}}}}}~}~~~}}}}~~~~||}}s}}}}}|}~|}~~~~}}pr}r}||}}}~}}}|pp}}ppvrppppp|}pp|ppp|}}p}}}plppp×üplpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷vpvvvolllllllooolllllClllCC˜÷ÿÇužüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷_!!!!! !!! !! ! ! ! !! !!!   !   pšíýýýýýýýýýüýþÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                           Ó×üüüüúüüüúüüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~‘~~‘‘‘¡‘‘~~‘‘‘‘‘‘¡¡‘‘‘¡‘¡¡‘‘¡¡~¡¡¡¡¡¡¡¡¡¡¡¡£¡¡¡¡¡¡¢¡¡¡¡¡¡¢¡¡¡¡¢£¡¡¢¡££¢¢££¢¡¢£¢¡£¢£«£¡¢££¦¦££¢£££££££¦¦££åþÿÿÿÿÿꮦ££«®«¦££¦¦¦¦¦®®¦©£©®¦®®¦©®®®®©¦®£®®®®®®®¯©®®¯®©®®©¯®®®¯®®¯©®©¦©¦®®©¦®®¦£©¦®®©¦¦£££®®®££®¦¦¦££®¦¦¦££¦¦£¢«¦££¦«£££®£¡£®£¢¢£¢¢£¢¢£¢¢¢££¡¡££¡¡££¡¡¡‘£¦¡¡Ýÿÿÿû¡¡¢¡‘¡¢¡¡¡¢¡¡¡¡‘‘¡¡¡¡¡¡¡‘¡‘¡¡‘‘¡‘¡‘‘‘‘¡¥ëÿþ楡~‘ÓûÿÿÿÿúÔ‘‘~~‘~Úÿÿÿÿÿÿÿþ‘‘‘~|~‘~‘~|}¡~}~}}~~~~|}}~~~}|}}}}}}}~}|}s}}}}}}}}}}s|}||p}}s}}}}pp}|pprv}}p|}}ppp|v}vpp}rppvvÓýwpppýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ooolllloolllllllllClollluèÿñ{uèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!$Yóÿÿÿÿÿ÷_!!!!!!!!!!!!! !! !!  ! !! !  ! !q¥íýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                               ÓÓüúüúüúúüüúüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ}~¡‘~~‘~~‘¡‘‘¡¢¢£¡¡¡‘‘‘‘¡‘~¡¡¡¡‘¡‘¡¡~~~‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡‘‘‘¡¡¡¡‘¡¡¡¡¡¡¡£¦£¡¢¦¦¢¡¡¡£¢¡£¦£¢¡£¦£¦©£¢£®££££££®£££êþÿÿÿÿÿí°¦££¦®®¦¦££¦®££¦££££®±¦¦®®££®®®©©£©®®®£©®®®©®®®®®±®©®¯®¯±±¯¯±¯®®®££¦¦¦®®©£¦¦¦¦£¦®¦£¢¦®¦£¢¢££®©£®±®®®©¦£¢££¢¡¦®®¦¦®¦££££¡¢¢£«««¢¡¢£££«®¡¡¡¢¡¡¡£££¦¡¢«£‘¥ûÿÿÿê¡¡¡¡¢¡‘¡¢¦£¢£¢¡¢¦£¢¡‘‘¡¡‘‘‘‘‘‘¡‘~~‘Úýÿõ§‘‘‘šëÿÿÿÿÿê¥~¡‘~‘‘~~‘ýÿÿÿÿÿÿÿ¡}}|}~‘‘‘}}~~}}}||~}}|s}~}~~}}}||}}~~~}pv}~}}}}}}}}||}}}ppv}}}}}}v|}p}}}|pppv|}p}}}|pppppp|}vžÿvpv÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷žollllovplClCllllllllllžúÿÌlÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!==!!Cóÿÿÿÿÿ÷Z !!! !! ! !!!!!!!!!!!!!! !  !!!   !! !!!!! ! =}ªíýýýýýýýýýýýÿþýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                     ÓÓüüüüúüüüúüüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘‘~~‘~~‘~~‘¡‘‘¡‘‘¡‘~‘¡¡‘‘‘¡¡¡¡¡¡‘¡¢¡¡‘¡‘¡¡¡¡¡¦¡‘¡¡¡¡¡£¢¡¢¡¡¡¡¢¡¡¡£¢¢¡£«¢¡¢¢£¦¢¡¢¡£¦£¢¢¢£££¦¦££££££¦¦¢¢£££©åþÿÿÿÿÿê®®«¢£¦¦®©¦¦©¦£©®«¦¦£©¯®¦©®®¦£®®®®®¦®®®©®±©£®¯®©®®®®®¯®©®®®©¦®®®®®®®®¦¦©¦®®®©®®®¦®¦££¦®©¦¦©¦££££¦¦£¦¦£¦¦£££££££££££¦£¦£££¢¢¢£¦£¡¢¦¢¡£¦£¡¢¡¡¦¦¡¡¡¡¡¡£¦¡‘¢Ûÿÿÿý­¡¡¡¡¡¡¡¡¢¢¡¡‘¡¢¢‘‘¡¡‘¡‘¡¡‘¡¡‘¡¡‘~¡ÔõÿþÚ¥¡‘‘Úýÿÿÿÿõ­‘~‘~~~¡‘~~ëÿÿÿÿÿÿÿ‘}~}~~~~~~~}}¡~}}€~}}}~~~}|}}~~}}}~}|}}}r}~}s}}}r}}}}}v|}}}}v}}rvps}p}v|vp||v|vv|}rpvvvvpvp|pžþvppõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷žvlllolllllllolllllluèÿõ”uñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!Bóÿÿÿÿÿ÷_!!!!!!! !!!!!!!!!!   !  !9qªíýýýýýýýýýýýþýüüýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                             Ó×úúúüúüúüúüúüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ¡‘~‘‘‘‘¡‘~‘¡¡~}}~‘‘¡¢¡‘‘¡¡¡¡~‘¡¡¡~‘¡££¡¡¡¡¡¢‘‘£¦¡¡¡¡‘‘¡¦«£¢¡¡¢¢¦¢¡¡£¦¡¡¡¡¢££¡¡¡££££¢¡¡¢¢¡¢££¡¡££££¦£££¦¦£££¡¢££åþÿÿÿÿÿë°®®££¦®®®¦¦£¢££££®®£¦®®¦£®±®©®©££©®¯®®®¯¯©®±±¯££©©£©¯®£©®©£©®®©®®®®¦£££££¦¦¦®®®£¢£®©£¦®®¦®®¦£¢¡¢¢¢¡¢££¦£££££££££££¡¡£££¦®®£¡¡¡¢¦¦£¡¡¢¢£«¢‘¢£¢¢£¡¡¢¦¢¡¡¡¥ëÿÿÿõ¡¡¡¡‘‘‘‘‘~¡¡¡¡¦£¡¡‘‘¡¡£¡‘¡¡‘‘êþÿõ­¡‘§õÿÿÿÿýÝ¥¡¡‘~~~~~¡‘~~‘€æÿÿÿÿÿÿ‘}~‘}|}}~~~~‘}}‘¡‘}}}}}~}}s}‘‘}~}s}}~~}p}}}}p}|p}}}rp}~~}rppv|}}}vvv|vpp}}}|vpppppvrp|}|vv}˜ÿplpèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷olllollC?llllllllÊýÿÌuÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!@óÿÿÿÿÿ÷Z!!!!!!!!!!!!!!!!!!!!  !  !!! ! pšíýýýýýýýýýýýÿÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                      ÓÓüüúüúüüúüüüüúúúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~~~‘‘~€~‘~‘‘¡‘‘‘‘‘‘‘‘¡¡¡¡¢¢‘¡¡¡¢‘¡‘‘¡¡¡¦¡‘¡‘¡¡¡¡¡~¡¦¢¡¡¡¡££¢¢¡¡¡¡¢¢¢¢¡¡¡¡¢£¢¡£££¡£¡¢£££¢££££££¢¢¦¦££¦¦££££êþÿÿÿÿÿꫦ¦¦¦¦¦¦¦£©©¦©¦££®®££®¦®¦®¯©®©®¦¦®®®®®®®¯©£®®®©©¯®©®¯®©©®®®©®¯©¦®®®®®®©¦®®¦¦©£¦¦¦¦®®«¦¦£¦¦«®¦££¦¦££££¦£«¦£¦£¢¦¦£¦£££¦¢¡£££®£¡¢£££¢¡¢¡¡®¦‘¡¢¡££¡¡¡¢¡¡¢£¡¡§þÿÿþÚ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘¡¡¡¡¡‘‘‘‘ÔûÿýÚ¡‘‘æþÿÿÿÿ륑‘‘‘¡‘~~~~~~~¡àÿÿÿÿÿ™~‘~}~}~‘~~~‘~|}‘~}~~}}}}}~~}}}}}~}}}}}}}}}}}}}p}~}}}}}p}}}}|}}p}}}p}r}p}p|pp|}pp|pv}p}vppppvp™þ™wppæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷›ooolllllllllll{ñÿü›{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷_!!!! !! !!!!  !!!!! !  !  !! =q¥éýüýýýýýýýýýþþýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                          Ó×úúüúüúüúüúüúüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~}~‘¡‘~~~~~¡¡¡¡¡¡~¡¡¡‘~~‘‘~‘‘~¡¡¡¡~¡‘‘‘~¡¡¢¢¡‘¡¡£££££‘¡¦¢¢¦¢¡¡¡¡£¡¡¡¡¢¢¦¢¡¡¡¡£¦¢¡¡£¦£¢££¡¡£®¦¡¡¡¡£¦¦¦£££££¡¡¢¢Ýþÿÿÿÿÿꥣ£¦®®®££«¦®®®®®®±®££££©®®®£££®©£®©©¦©¦©¯¯©©©¦®®®®®®®®£©®©£©®®©£¦¦¦®®±¯®®¦£¡¢££®®®®±®££¦¦®¦££¢¦¦££¦¦¦¦££¦£££¢¢££¢¢¦®¦£¡££¡¢££££¡¢¦£¦¢¡¢¢¡£¦£¦¡¡¢¦¡¡¢£¦£¦«Ýÿÿÿû¤¡¦«¦¢¡¡¡¢¢¡¡¢£¢~‘¡¡‘‘~¡¡¡¨ëÿÿõ§‘‘ÓûÿÿÿÿûÓ‘~~}~¡¡~‘‘}~¡~‘Óýÿÿÿž~‘‘~¡‘‘}}}}}}‘~}}}~~}}}}||p}||}r}|}~}~}}}}pp}r}pv|pppppv}p|p}}}vpv||vvvpvppppppv|pppppvpp˜þ™|ppßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷vuvulooooollÌÿÿà{×þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Cóÿÿÿÿÿ÷[!! !!!!! !!!!! !!!!!!!!  !!!    }ªëýýýýýýýýýýýÿþýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                   ÓÓüüúüúüúüüúüüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~‘‘‘‘¡¡‘~}‘‘¡¡¡‘‘~‘¡¡‘¡~¡¡‘‘‘‘¡¡¡¡‘¡¡‘¡‘‘¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¦¡¡¢¡¡¡¡£¢¡¡££¡¡£¢¡¡¡¡££££££¢¡££¢¡£¦¦¦£¢£¡¢¦¦££¦¦¦££££¦åþÿÿÿÿÿꫦ¦£¦®¦£¦®«¦¦£©®®®®¦¦®®¦®®®¦£©®©®¦¦®®®®©£®¯®®®®®£©¯®®®©®®®©©®®©£®®©¦©¦®¦®®¦¦©©¦®¦£¦®¦£¦®®®¦££££¦£¦¦¢£¦¦££¢£¦¦¢¢££¦¦£££££¦£¡£¦£¡¢££¢¢¡¡£¢¦£¢¢£¦¡¡¢¢¡¡£¢¢¡¢¥öÿÿÿê¡¡¡¦¢¡¡¢¢‘¡¡¡¡¡¢¡‘¡¡¡‘‘‘¤ÚýÿûÚ¡¡‘¥ëÿÿÿÿþê¤~~‘~~~‘‘¢‘~~~‘‘~~‘‘Úÿÿÿ¬€‘~~~}~¡~~~~~}~}~}~r}~~}}}}~~||}}}~}}}}}}}}}}}p}}}p}}}p}}}pr}}vv}}}}pp}}}|prvvppp}pvpppppvpvv˜þ˜vpvÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõžvllllllll˜õÿÿƒõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷]!!!!!!! !! !!  ! ! !    !qªíýýýýýýýýýýýþýüýýýýýýýýýýýýýýà×                                                                                                                                                                                                                                                                          Ó×úúüúüúüúüúüúüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ‘¡‘}}~}}~~}~~‘¡~~~¡‘~~~¡¡‘‘¡¡¡¡¡¢¡¡¡¢£¢¡‘¡¢¡¡¡¢¡¡¡‘¡¡¢¡¡‘¡‘¡£¢¡¢££¡£«££¦¢¡£££££¢£¦¦£¢¢¢¡¢®¦£¡¡££££¦«£¦¦£®®êþÿÿÿÿÿí°¦££¦¦£££®®©¦££££££¦®®±®££££®®®¦®¦£¦®®£©©®®®®©®©£®¯®®¯¯®®¯®¯®®©®¯®®®®¦©®®±®®®®®®£££®®££®¦©®«®®¦®«®¦£«®®®®££¦««¦®£¢£¡¡¡¢¡¢¡¢£¦¢£®¦¢¡¢£¦¦£¦£¡¢£¦¡¢¢¡¡¡¡¡‘¡¡¡¬ÿÿÿþÔ¡¡¡¡‘¡¡¡¡¡¡‘‘¡¡¢¡¡¢¡‘¡¡¬õÿÿë¥~¥êþÿÿÿÿõ§‘‘¡‘‘~~~~‘~~~‘}}}~~}§þÿÿÓ¡}}}~}‘‘~}~~}r~}}}}}}}}}}‘¡~~}}}~~}}wr}}p}~}}}‘~}}~~|pp}}p|r}v|v|}|pppp}|pp}}}~}}}vpp||}vpvþ˜}vlÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷žullllClßÿÿè{ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!===!@òÿÿÿÿÿ÷_!!!!!!!!! !!!!!!!!!! !!!!!!!  !   !!!   ! !   9qªíýýýýýýýýýýýÿÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                      ÓÓüüúüúüúüúüúüüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘¡~~~~‘~~¡¡‘~~‘‘¡¡¡¡‘‘‘¡¡¡‘¡‘‘¡¡¡¡¡‘¡£‘¡¡¡¡¢¡¡¡¡¡‘¡£¡‘¡¡¡‘£¡‘¡£¢¢¢¡¡£¢¦¦¡¡££¢¢¢¡£¢£¦¦¢¢¢£¦£¡£«£¡¢££££®«££££¦¦åþÿÿÿÿÿꫦ¦®¦¦¦££©¦¦©££®¦¦¦®®¦®®¦£©¦¦®®£©®¦®¯¦£®£®®®®©¯®©®®®©®®®©®®¯®®®®©¦®®®®®¦®®®®¦®¦¦¦¦¦¦®£¦®¦¦¦£¦££¦¦¦¦££¦¦¦£££££®®££¢£¢¡£®¢¡¢¢£¦£¢££¢¡¢££¢£¦¦¡¢£¢¢£¢¢¡£¡¡£¡‘¥ëÿÿÿõ¢¡¡¢¡¡¡‘¡¡¢¡¡¡¡¡¡¡¡¡¡¡¥êþÿûÔ¡‘‘ÓûÿÿÿÿýÚ‘‘‘‘‘‘‘‘‘‘~~~‘‘‘‘}}‘~~ûÿÿÓ‘‘~~~~~~~~~~~~}}}}~~}|~~}~}~}}}}}}}}}r}}}}}}r}}}p}~}||}|pp}}pp}}pvpp|p|||vp}pp||w}vppppppvpÿœvppÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú×ylllúÿÿ̘õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!Bóÿÿÿÿÿ÷] !!! !!!!!  !! !! !!! ! !! ! !=sªéüýýýýýýýýýýþþüýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                    ÓÓúúüúüúüúüúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿþÖŸ~}~‘~~}~‘¡¡¡‘~~¡‘~~~~‘¡¡¡~‘‘‘‘¡‘¡¡‘¡¡¢¡¡¡¡‘¡‘‘¡‘¡¡¡¡£££¡¢««¡¡¢¡¡¡¡¡‘¡¦¢¡¢¦£¢¡¡££¡¢¡¢£¢¦«¦££¦«£¢£¡¡¡£¦¢¡¢£££åþÿÿÿÿÿ릣®®©££®®®¦£££®®±®®®®¦£®®®¯®®¯®®®®¦®©£©®®££©¯¯±¯¯®®®©©¯¯®©£££££¦©®®®£££££®®®¦¦¦¦©®®®££®®®¦£££££¦£¦®«£¡¢££££¡¡££¡¢¦£¡¡£¦£¢£¦£££¡¡¡¢¡¢££¡¡¡£¡¡¡¡¡¡¡£¢¡‘¡¢£¡¡¦°ýÿÿþê¡‘¡¢£¡¡¡¡¡¡‘‘‘¡Óûÿþ륡¡­íÿÿÿÿÿ륡‘¡‘‘¡}~‘¡~~~~~~~‘¡‘~¡‘}~èÿÿÓ~~}}}~~}}}}}}~}}~€¡¡~}~~~}s}}s}}}r}}}vrppv}}vv}}pp}vp}}}|s}}v}}|vrv}}}}vp}}}ppp|vppp}}vppp}þžvppÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý螘èÿÿúžßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_!!!!!! !!!!!!!!  !  ! !! !!!   $p’ëýýýýýýýýýýýÿþýüýýýýýýýýýýýýýàÔ                                                                                                                                                                                                                                                                                 ××üüúúüúüúüúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ¢~~~~~~‘‘‘‘‘~‘¡‘~~‘‘¡‘‘~¡¡‘¡¡‘¡¡¡~¡¡¡¡¡‘¡¡¡¡¡¢¡‘¡¡¡¡‘¡¡¡¡¦¢¢¢¡¡££¡¡¢£¡¡¡‘¢¡¡£¡¡£¦¢¢¡¡£¢¡¢£¦¢¢£¦¦££¦¦¢¢¦£¡£££££¦¦££Ýþÿÿÿÿÿꫦ¦®¦®££¦©«®¦£®®®®©£®®®®®¦®©¦®©©©®®©£©®®®©©®®¯£®±®®®®®®®®®££®®®®®®®®¦£®®«®®¦®©¦¦®®®¦¦©®¦©¦¦££®«££££®¦££££££¢¡¦«¢¡¦¦£¦¢¡££££££¢£¢¡£¡¢¦£¢£¡¡££¢¢¡¡¡¢£¢¡¡¡¡¡¢¢¥Úÿÿÿû­¡¡¡‘¡¡¡¡¡¡¡¡‘¡‘‘§ëÿÿöÔ¡¡¤àýÿÿÿÿûÔ‘‘¡¡¡‘‘~~‘¡‘~~~~~‘‘¡¡~}‘‘~~àÿÿÙ~}~~~~~~~}~}}}}}}‘}}~}~}}}}}}~}}}}}}}}|p}}rv}}}rw}|}rv}p}}}}}}}rvv|}}v||p}}ppvp}}pppp|}pvpvvwýÊvpvžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷_!!!!!! !! !!!!!!!!!!!    qªéýýýýýýýýýýýþþüýüýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                 ÓÓúúüóüúüúüúüüúüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ¢}‘¡~¡¡‘~‘~~~~‘~‘¡¡¡¡¡¡~~¡¡¡‘€~‘‘‘¡‘‘‘‘¡¡¡‘¡‘‘¡¢¦£¡¢¢£¦¡¡¡¡¡¡¡¡£££¡¢¡¡£¦¦¢¡¡¢£££¢¡¡¢£¢¢¦£¢£¦££¡¢¡¢£¦¦££££¡¢¦¦££ìþÿÿÿÿÿ릢£¦©££¡£££«®£££££¦££¦¦©®®£££®¯®®¦®©®®®©¯®®®¦¦£®¯®££©®®¦®©£©®®®®®®®¦£©®¯®®©£¦®®®££££££££££££«®®¦®£££®¦££¦¦¦£¦®®£££®®«¢¢£££¡¢¢¢¦¦£¦£¢££¢¡Ÿ‘¢¢¡¢£¡¡¡£¢¡¡¢¢¡‘‘¥õÿÿÿí¦¢¢¡‘‘‘¡¡‘¡¡¡¡¢Úýÿþ椥Öûÿÿÿÿþॡ¡¡‘¡}~¡~¡‘‘‘‘¡‘~~~~~‘¡¡‘ÚÿÿÚ}}‘¡‘~}}‘‘~~~}}}~‘}r|}s}~~}}}}}}|}~~}}}~}}~~}|}}v}}}~~}}}|}|||||v}}|||}pv|}}|p|pp}}}}pp}v}}|vvýÓ}pp™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Cóÿÿÿÿÿ÷Z!!!!!!!!!!!!   !!  !!!!  !!!!   =p¥íýýýýýýýýýýýÿþýüýüýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                         Ó×üüúüúüúüúüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ Ÿ~~‘~‘‘~‘~~~~‘‘‘‘‘¡¡‘‘¡¡¡¡‘¡‘‘‘¡¡¡¡¡‘¡£¡¡¡¡¡£¡¡«¢¡¢¡¡£¡¡¡¢¢¢¡¢£¡¡£££¡¢¢¢£¦¦¡¡¢££¢¢££¡£©£¡¡£¢£¦££££¦£¢¢¦¦£¦åþÿÿÿÿÿê«££¦«¦£££¦£¦©¦¦¦¦££££®®£©££®¦®®®®££®®®¦©®©®¯©©®®®®©¦¯®£©®®®®®®¦¦®®®£®®®®®¦¦®££®®¦¦£©£££¦£££¦¦¦¦¦¦®££¦££®®££££££¦£££¦£¢¡£¦¢¡£¢¢¢£¢£¦£¢¢£¢¡¡¦¦¡¡¦£‘‘¢££¢¡¡¡¡¡¡¡¬ÿÿÿþÚ¡¡¢¡‘¡‘¡¡¡‘‘¢Ôõÿÿ÷Ô¡‘­íÿÿÿÿÿõÓ‘¡¡¡¡¡‘~‘‘~~‘‘‘¡~¡‘~‘~~‘‘‘~~ÓÿÿÚ~~~}}¡~}~}}}}~~}}}}}}}}}}}~}}~~}}}s}}}}}}|}}r}}}}}}}}}||v}}|}}vp}}|vv}}}pv}|p|}}}vpppp||vvý×wpp˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!@óÿÿÿÿÿ÷_!!!!!!! !!! !!!!  !!    =qšíüýýýýýýýýýýÿýüýüýýýýýýýýýýýýàÓ                                                                                                                                                                                                                                                                            ÓÓúúüúúüúúüúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ¢‘~~~¡‘~‘‘~~~‘‘¡¡~‘‘‘‘¡‘~~‘¡‘~~‘¡¡¡¡¢£¡‘¡¡¡~¡‘¡¡¡¡‘¡¡£¡¡£‘£¢¡¡¡¡¡¡¡¡¡¡¡¡¡£¢£¢¡¡£¦£¦£¢££¦£¡¡££¡£¦®¦£¢£¦£¦®¦£©¦¦£åþÿÿÿÿÿí«££££®®®®®¦£¦£¦®®®®£©®®£¦¦¦®®®®¦®©©®¯®®®®®®®¦®®¦¦£££®®¦£®®®¦®®££©¦¦©®¦££££®®®£££¦¦®®®£££££¦¦¦£££¢££££££¦£¢£¦££¡¢««£¢£¦££¦¦£¡£¦¦¢¡¢£¡¡¡££¢¢¦¢¡¦¦£¡£¡¡££¢¢¢¦¦£¦ëÿÿÿ÷¥¡¡¡¡¡¢£¡¡¡¥êþÿÿ륦­êþÿÿÿÿýà‘~¡‘~~~¡¢¡~‘~‘‘~~~}~¡‘‘~}}~~}}~Ôÿÿæ‘}}}}‘‘~}~~}~}~~~€‘}}s}~}}r}}}}|ps}r}}|}}}vv}~}||}|}|v||v||vvppr}pp|rvvrvvvvppv|vp|ppppppppp}ýàwppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!Bóÿÿÿÿÿ÷[!!!!!!!!! !!!!!!!!! !! !!!=}ªëýýýýýýýýýýýýÿýüýüýýýýýýýýýýýèÓ                                                                                                                                                                                                                                                                         Ó×üüúúüúúüúüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡‘}}‘‘‘‘~~~~~‘¡‘¡¡‘‘¡¡¡‘~¡¡‘‘‘‘¡¡¢¢¡‘¡‘¡¡¡¢¡¢¡‘¡¢¡‘¡¦¡‘¡¡¡¡¡¡¢¡¢¡¡‘££¡¡¢£¡¢¢¢¢¡¦«¦¦£¡££££¡¦¦¢£®«££££¦¦£¦££«¦®®êþÿÿÿÿÿꫦ¦¢¦®¦¦®®¦¢£®®¦®®¦¦«£¦¦¦©®®®®®¦©®®®¯®£®¯®©®£®±®¦©££©®©©®®®£®®¦¦®®£®®®££££«®®¦££©®¦£®®¦££¦¦££££££££££¦¦££££££££¢££¢¢£¦¦££¦¦£¡¦©£¡¢¦¢¡¡££££¢¡¡¡£¡£¦¡¡¡£¢¢¢¢£¢££­ûÿÿÿê¡‘¡¡¡¢¢¡¥ÚûÿÿûÝ¢¥Ýûÿÿÿÿÿõ§‘‘‘‘‘‘~~‘‘‘¡~~‘~~~‘‘~€‘~}‘~}~‘¬ÿÿê‘}}}}‘~~}}~~}}~}~~~~|}}}}}}~}}|}|}}}}}}}}pr}}}~}}}}|}}|vpvp}rpvvvpp}}p}pp}|v|v}}p}|ppppppvv||ýàwpp{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷_!!!!!!! !!!!!!!!         =qªíýýýýýýýýýýýÿýüýüýüýýýýýýýýýýàÓ                                                                                                                                                                                                                                                                                ÓÓúüúüúüúüúúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿþÚŸ‘¡~‘‘‘~~~~‘~‘¡‘~~‘~‘¡‘¡¢¡¡¡¡¡‘¡¡¡¡‘¡‘¡¡¡¡¡‘¡¡¡¢£‘¡£¢¦¡¡¡¡¡¦¦¡¡£¦¢¡¢£¡¡£¡¡¡¢¢¡¢¢¡¡¡¡£¦¦£¡¡££¡¡¢£££££¡¢££££åþÿÿÿÿÿꦦ®¦¦®®¦¦®®££¦££¦©®®©££®©®®¦©®®££¦©£«£©¯®©©££¦±®©®©¯®£©®®©£¦¯®®©£©©£££¦®®®®®¦¦££¦®¦££«®®®®¦£££££®¦¦££¦¦¦££¢£££¦£££¢¦£¦¦¦¢¡£¡¡¡££¡¡¦¦¢¢£¡¡¢££¢¡¡¡¢¡‘¡¡£¢¢¡¡‘¡¡Öÿÿÿý­¡¡¢¢¡¥Ôõÿÿÿô¨¥¬õÿÿÿÿÿýݦ¡‘¡‘‘‘¡¡‘‘¡¡‘~~~¡‘¡~~‘~~~~‘‘‘‘¡šÿÿë‘~‘~‘¡~~~}}~‘‘~}}|s}}}}~~~~~~~}~~~}}}}}~~}}~}}ppvvr}|s}}||}}}}vr}v}}}}v||pvvr}ppppppppp}}|ppppýæ}pv}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷[! !!!!!!!!!! !!! !!!       qªíýýýýýýýýýüüÿþýüýüýüüýýýýýýýýæÓ                                                                                                                                                                                                                                                             Ó×üúúüúüúüúüúüüúüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ‘‘‘¡‘~~~‘‘¡¡¡‘}¡‘~~‘¡¡¡¡¡¡¡‘‘‘¡‘‘‘‘¡¡‘‘¡‘¡¢¡¡¡¡¡¡¡‘¡¢¢¡¡£¡¡¡¢‘£¡£¡¢¦¢¡¡¢¡¢££¡¡¢¡¡¢££¢¡¡¢£¦£¢¢££¡¢¦¦¢£££¢£££££åþÿÿÿÿÿꦦ®®£¦®®®©¦££££¦¦¦®®©££©®®¦£¦®®©¦¦®££©®®®®®©££®®®©£®®©®¯®®££®®®®£©££££¦®¦£®¦¦¦¦®¦£©®¦£©®®¦£££¦££¦«¦£¢¦®¦£¢¡£¦£¦£££¦£¢£¦££¡¡¡¡¢¦£¡£¢¦¦£¢¡¢£££¡¡¡¢¡¡¡¡¢££¡¢¡‘¡¡~¡¥õÿÿÿõ¥¢¢¥ÔõÿÿÿýÚ¥¬íÿÿÿÿÿý륢¢¡‘~~‘¡¡‘~‘¡¡¡~~‘‘‘‘~‘~~‘~‘~~¡¡‘~™þÿè‘‘~‘~}~~}}‘~}~}|}}}~}}~}~~~~~~~}}}}}~}}}}~}p|}rvp}}}}s||}p}}|pp}}}}rvvvvrvvpp}|pppv|p}ppvpvúèwpvpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!Yóÿÿÿÿÿ÷Z!!!!!!!!! !!!!! !    !  9q¥éüýýýýýýýýýýÿýüýüýüýýüýýýýýýýæÓ                                                                                                                                                                                                                                                                   ÓÓúüúúúúüúúüúúüúüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ}~~~}~~~~¡‘‘~~¡}‘¢¡~~‘¡‘‘‘¡‘‘‘‘‘¡‘¡¡¡¡¡¡¡¡¡¢¢¡‘¡¡¡¡¡£¡‘¡¡¡¡¡£¦¢~¡¡¡¦£££¢££¦¢¡¢£¢¡¢¢£¡¡¢¢¢¢¡¢¢¢¡¢££££¦¦££¦£¢¡¢¡££åþÿÿÿÿÿë«£«®®®££££££®®®®®££¦®£®®®®®¦¦®®®®®®©£¦££©®®©£®¯®¯®®££©®©®®©¦®®¯±®¦£®®®±±¦£££¦®®®¦£¦®¦¢£¦¦¦©¦£¦®¦£££££®¦£¦¦¦¦£¢£¢¢¢¢£¢¢£¢£¦¦¦£¢££¢£¡¡££¢¢¢¢¢££££¦£¢¢¡¢¢¡¡¡¢£¢¡¡¡¢­þÿÿþê­Ú÷ÿÿÿÿøÔ­íÿÿÿÿÿþô¬¡¡‘¡‘¡¡¡¡~¡¡‘~~‘‘‘¡~~~~‘‘‘~~~‘~}~‘~€‘þÿë€}}}}~}}~¡‘}}~¡€}}~}}~~}}}}}}}}}}}~}}}|}r}}}}}p}}}}}}}pv}}}|}p}}vp}|vpv|r}v|vp|pp}vp}}|pppvpppûñ}pppþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!! !!!!!! !  =ŽªëýýýýýýýýüüýÿþýüýüýüüýüýýýýýýàÓ                                                                                                                                                                                                                                                                       ÓÙüúúüüüúúüúüüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽs‘‘~}~‘~‘¡‘‘‘‘‘‘~~¡¡¡‘‘¡‘¡‘~¡¡¡¡‘‘¡¡¡‘‘¡¡¡¡¡¢¡¡‘‘¡¡¡¡¡¡‘¡¡¡¡¡££¡¡¡‘¡¦¦£¦£¢¦£¡¡¢¦££¢£¢¡¢¦¢¡¡¡¢¡¡¢¢£¦££££££££¡¡¢¢¢£Ýþÿÿÿÿÿê«£«®®¦£££££¦®®®®®¦££®£®®®®®©¦®®££®®®£©®£®®®¦£®®®®®¦££®®®®®¯®¦©®®®®£®®®®®©¦££¦®¦©®©¦££££¦£¦¦¦¦¦®¦££££££££¦®«¦¢¢£££¢¢¢£¡¡¢¢¦¦£¡¢££££££££¢¢££¡£££££¦£¡¡££¡¡‘¡¢¡¡¢¡¡¥àÿÿÿÿÿÿÿÿÿÿúÚíþÿÿÿÿþõÔ¡¡¡‘¡¡‘¡¡¡¡‘‘~¡‘‘‘‘~~~‘¡~~‘~~‘‘~~þÿõ€}}}~~}}~‘‘~}}~~}~}}}}}}~}s|}~}}}}}}}|}|}}}}}}}}}}}}|}|v}}v|vp|pp||||}|}}p|pv}pppp}}|vppp|vpp÷ñwpopýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!$Cóÿÿÿÿÿ÷_!!!!!!! !!!! !!!!!!!!!!!   !   =}¬íýýýýýýýüýýýþþüýüýüýýüýüýýýýýæÓ                                                                                                                                                                                                                                                                    Ó×úüúúúúüúüúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘¡~‘‘~}~~~}~‘‘¡‘~~‘¡‘~~~¡‘¡‘~~‘¡¡¡‘¡¢¡¡¡¡‘‘¡¡‘¡‘¡¡¡¡‘¡¢££¢¡¢‘¡¡¢££¡‘¡¡¡¡¡‘¡£¢¡¢£¡¢££¢¡£«¦££¢¢¢¢¦¦«£££¢¢¢¢¦®¦¦«®®®åþÿÿÿÿÿ릢£££££££¦®®©¦©¦¦¦®££££®£¦¦¦¦®®££¯®¦©®±®¦©®®¦©®®®©£®©£®©££¦®££££®®®¦££®®®®®®®®©£££££¦®®®©£¦®®®¦£¦¦¦¦¦££¡¢¦¦£¦®®¦¦¢££¦£££¡¡££¢££¡¢¢¡¡¡¢¡¢¦£¡¡¡¡‘¡¢£¡‘¢¢¡¢¡‘¡¡¡£¡¢£¨ûÿÿÿÿÿÿÿÿÿûþÿÿÿÿÿúÚ¥‘¡¡‘~~‘¡‘¡‘‘¡‘~~¡‘‘¡‘~~}~~‘¡‘‘‘~~}~}}~~~ýÿõ‘¡~~~‘}~~~}~s}}~}~}~~~~}}~|}~~}vr}}~}}|}}}}vr}}p}}}v|||}|v}}}}|vv}|p|v|pv|}|ppp}|v|pppppppvvvõõ}pppúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷Z!!!$!! !! !!!!!!  ! !!   !  q¥íýýýýýýýýüüýÿþýüýüýüüýüýüýýýüæÓ                            $[=                                                                                                                                                                                                      @                            ÓÓüúúüúüúüúúüúúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŸ¡¡‘¡~~~~}~‘¡~‘¡~}~¡¡¡~}~‘¡¡‘‘¡~¡¢¡‘‘‘¡£¢¡‘¡¡¡‘~¡¡‘‘¡¡¢¡¡¡¡¡¡¡¡¢££¡¡¡¡¡¡¡¡¢¦£¡¢£¡£££££££¦«¦¢¢££¡¦«££££¢¡¢¦®¦¦¦®¦£êþÿÿÿÿÿê«££££¢£¦£¦®®¦£¦£¦©¦££©©£££¦¦®®®££®®£©®±®®¦®®®©£®¦£©®®£®®£££®®¦£¦®®®¦££®®®®®®®®£££££¦®¦¦£®®¦®®«¦££®®¦¦®£¡¢££¦¦£«®£££££££¢¡¡££££¡¡¡¡¡¡¦£¡¢¦£¡¡¡¡¡¢¢¢¢¡££¡¡¡¡¡¡¢¢¡¢£¢ÚÿÿÿÿÿÿÿÿÿÿÿÿÿýõÚ¥‘¡¡¡¡¡~‘¡¡‘~‘‘~~‘‘‘‘‘~}~~~¡¡~~}~~~‘‘‘~ûÿõ‘}~¡~~‘}}}}}}}~}}}~~}}}}s}~|v}}}}~~}|}}rv|}rv}|r|r|pppr|}r}}}}rv}}vp}}}|vpp|vppppvppppppv|õ÷wppp÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@÷ÿÿÿÿÿ÷_!!!!!!!!! !!! !!!!!!  q¥éüýýýýýüüýýýþþüýüýüýýüýüýýýýýæÓ                        $ƒÌ–!                                                                                                                                                                                                    !@_Y                           Ó×úúúüóüúüúüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿþÖŽ}~‘~~}‘‘~‘‘¡‘¡¡~¡¡¡~‘¡‘¡¡¡¡¡¡¡¡~‘¡¡¡~‘¡‘‘¡¡¡¡¡¡¢¦¢¡¡‘¡¢¡¡‘¡¡¡¡¡¢¢¡¢£¡¡¡¡¡££¡¡££¡¡¡¡¢£¢¡¢£¢¢£¦£¡¡¦£££££¡£££¢¢£¢¢¢åþÿÿÿÿÿ릦©¦¦¦®®®®£¦¦¦£££¦®£©®©£¦©®®¦¦®¦£©®®£¦®¦®¦®££¦®®®®¯®¦®±®®®®®®®¦£©®®®££¦®££££¦®®¦¦¦®¦£££££££££££¦¦¦£¢£¦¦¢¢¢£¦¦£¡¢¢£££££¦¦¦£¡¢££¡¢¢¢£¢¦£¡¡£¢¡¡¡¢¢¡¡¡¡‘¡£¢¢£¢¡¡¡¢¢¡¡¡¦ëþÿþþþþÿþýýûëÔ¡¡¡¡¢¡‘¡¡‘‘¡¡¡¡¡‘~‘¡‘‘‘¡‘‘¡¡‘~~‘}~~~}}‘¡‘~~~}õÿú‘}}}}~}}}~}}~‘~}~~‘}}}}}~}}}}~}r~}}}}}}v|}|}}}}}}}}}}}}}|}}}}}}pvvp}}ppv}pv|pv|ppvvv}}pvvppp|õúwvvvõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!@óÿÿÿÿÿ÷[!!!!!!!!!!!!!!!! !     =q¥ëýýýýýýýýüüýÿþýüýüýüüýüýüýýýýàÓ                             !ƒâÇZ                                                                                                                                                                                                 !Z–Z                           ÔÓüúüúüúüúüúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~}~‘‘‘‘¡¡¡¡‘‘¡¡‘¡‘‘‘¡¡¢‘¡¡¡¡‘‘~‘¡‘‘¡¡‘¡¡¢¢¢¢¢££¡¡‘¡¡‘‘‘¡¡¡¡¡¡¦£££¢¡¡¡¡££¡¡£¡¡¡¡£¢££¡¡¢¢£¦¦¢¡¢¦££££¢¡¡¡¡£££¢¢£Ýþÿÿÿÿÿë«®¦¦®®®¦«®¦£©¦£££®¦£®®££££®®®£¦¦££¦®®£¦®®®¢£¦¦®®®®®®£©®®®®©®®®££®®®®®£££££££¦©®¦£¦¦¦£¢££££££££¦®©¦£¡¢£¦¢£££¦¦££¡¡¢¢¢¢££¦¦££¢£££¢¡¢££¦¢¡¡¦¢¡¡¢£¢¢¡¡¡‘¡¢£¦¢£¡¡¢¢¡¡¡¡¡¥àÚæêêêÚÖ¬§¦‘¡¡‘‘¡¡¡¡‘‘¡‘¡¢¢¡¡¡‘‘‘‘¡¡¡~~‘‘‘~~~~}}}}¡¡‘}õÿ÷€}~}}}~~~}}}~}}~~}~~}}}~}~}}}~}}}~}r}}}r}}s|}~}s|v}}}}}}}}}}}}}pp}vp}vprv}}}v}|pp}}||vpppppv|ôú}v|vñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷Z!!!!!! !!!!! !!!!!!!!!  !  $qšíýýýýýüüüýýýþýüýüýüýýüýüýüýýýæÓ                        Bƒ_!                                                                                                                                                                                                  @@!                        Ó×úúúúúüóüúüúúüúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~~~‘~~~~~~~‘‘‘~~~¡¡‘‘¡¡¡‘¡¡¡¡‘¡¡¡¡¡‘¡‘¡£¡¡¢£¢¡¢¡¡¢¡¢¡¢¡¡¡¡£¡¢¡¡¢£¡¡¡¡£¢££¢¡¡¡¢£££¢¦£¡¡£££¢£¦¦¦££¦££¦®®åþÿÿÿÿÿꦦ££££££¦®¦££®®£¦®®££®®®®©£®®®¦®®®£®±®£®®®®®®®®¦©®¦¦£¦®£®®££®®©£®®¦£¦®®®®®®¦¦£££®®®®®£¦®¦£££££££¦¦®££«®¦£££££££¢¢¦¦¦£¢¡££££¢£¢£¢¡¡¢¡¢¢¡¡¢£¡¢¦¦¡¢¡¡¢¡£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡¢¢¡¡¡¡‘‘‘‘¡~‘‘‘‘‘‘‘‘‘¡‘~}‘¡¡~‘‘‘~‘‘‘¡~~~}}~‘~ëÿý‘‘~}~}}‘}}‘~~}}‘~s}}}||~}}}}~}}}}}}}}}|s}}}}s}}}}}p}~}||vv}vrp}}vvr}|ppv|p|}|pv}|pp|||pvvpv}ppèý{|ppèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷]!!!!!!!!!!!!!! !!!!  !! !q¥íýýýýýýýýüüýÿþýüýüýüüýüýüýüýýæ×                           !!                                                                                                                                                                                                                                             ÓÓüúüúüúüúúúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ}}~‘~}~‘~}~~~~‘~¡~~~‘~~‘¡‘~~‘‘‘¢¡¡¡¡¡¡‘¡‘‘‘¡¡¢‘‘‘¡¢¢¡¢£¦¢¢£¢£¡¡¡¡¡¡¡££¦£¡¢¢¡¡¢££¡¢£¡¢¢¢£££¢¡£££¢££¢£¢¦£¦¦¦£££¦«®êþÿÿÿÿÿꦣ¦®¦£¢££¦®££®®¦¦¦£££®®®®©£¦®®®®®®®®±®££®®±®®®®¦¦¦££©¦££®®££®®©®®®¦®¦®®¦¦®®®¦££¦®¦®®®®¦££££££©¦££¦«££«®¦¦¦£££¢¡¡£«®«¦£¢¢££¢¡££¦¢¡¡¡¡¢¢¡¡¢£¡¡££¢¡¡£¡£££¡¡¡¡¡¡¡‘¡¡¡¡¡¢¡¡¡¡¡¡‘¡£¢‘¡¡¡¡~~¡¡‘¡¡‘‘~~¡‘¡‘‘~~‘¡‘‘‘¡~‘~~~¡¡‘~}}~~~‘~èÿû‘‘~~~}}‘~~‘‘~}~~~}}|}}|}}|}}~}}}~|}~}}r}}}}}}}}}}}}}}}}}|||pppp}pv|}pppv|p|vpp}}vpv|ppprvp}~|pèÿvvvpæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$$!Zòÿÿÿÿÿ÷x!!$$!!!!$!!!! !!!! !!!! =q¥éüýýýüüüüýýýþþüýüýüýýüýüýüýüýàÓ                                                                                                                                                                                                                                                     Ó×úúúüóüúüúüúúüúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘‘¡~~‘‘‘~~~¡¡¡~~‘‘‘¡¡~¡¡‘¡¡¡‘‘¡¡‘¡¡¡‘~¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢£‘¡¢¡¡¡¡¡¡¡¡¢¡¢¢¡¢£¡¡¢£¢££¡¢¡¢¢£££¦¦¦¦££££¢¡££££££££åþÿÿÿÿÿí«££¦££«®®¦££¦®¦¦¦£©££®®¦©£¦££®¦®¦££¦®££®¦®®©£¦®©£®®¦®®£©±®¦£®®¦£©¦¦®¦¦££®©¦£¦®®¦£££££®¦¦¦¦¦££«¦¢£££¢¢¦¦¢¢£££¦£¢£¢£££££¢£££¢££¢££¡¢¢¡¢£¡¢¦£¡¡¡¡£¡¢£¡¡¢¢¡¡¢¢¡¡¡¡¢¡¡¡¡¢¡¡¡¡¡¡‘‘‘¡¡¡‘‘¡¡¡‘¡¡‘‘‘¡‘‘‘¡‘¡~~~‘¡‘¡‘~~‘~~‘‘¡}~¡‘~‘~~~~~~Úÿý‘‘}~~}~¡}}}~~}}}}~}}}~~~~}}~~}|}~}v}}}}}}}p}}}}|}r}}vv||s}}}}}}||p}v}}||pv|}ppv|rvpvp}pvppp}voßÿ}vpßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!!Bóÿÿÿÿÿ÷_!!!!!! !! !!!!!! !!$qªëýýýýýýýýüüýÿþýüýüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                                   ÓÓüúüúúüúúúüóüüúüúÿÿÿÿÿÿÿÿÿÿÿÿýÖ¢¡~~‘~‘‘¡‘¡~~‘¡‘‘‘¡‘¡¡¡~¡¡¡¡‘¡¡¡¡¡~~‘‘‘¡£¢¡¡¡~¡¡¡¡‘‘¡‘¡¢¢££¡¡¦¡¡¢‘¡¢¡¡£¢¡¡¡¡¡¡¢£¢¢¡¡¡¢££££¦¦£££££¢¢¡££¢£®®££åþÿÿÿÿÿê«¢¢££®®®®®¦£®©¦®¦£¦¦¦¦®££¦£©©¦£®££££¦££¦£®®¦£¦®®¦®¦££©¦®®®®¦£¦££££®®®©®¦®®£££®®®££££££®©®®¦¦¦¦£¢££££¢¢¡¢¢££¢¦£££££¢¢£££¢£££¦¦¡¡£¢¢£¡££¡£¦£¡¡¡¡¡¡¡££¡¡¡¡¦£‘¡¢¡¡££¡¡¢¢¡¡¡‘¡‘¡‘¡¡‘‘‘¡‘‘¡¡‘¡‘¡¡‘‘‘}~¡¡‘‘‘¡¡‘~}~‘‘¡~}~¡‘~‘‘¡‘}~‘Úÿý‘~~~}‘~}|}~‘‘~}}|}~~}~€‘}~‘}|}~}r|}}}~~}}|}}v}v}|pprv}}}}}}}}vv||}}}}vv|}}vp}vpppp|vvpvpp}|pàÿvppÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@÷ÿÿÿÿÿ÷Z! !!!!!!!!!!!!q¥íýýýüüüüüýýýþýüüüýüýýüýüýüýüýæÓ                                                                                                                                                                                                                                              Ó×úúúúúúüúüúüúúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ}¡¡~}‘‘‘~~‘‘‘~‘‘‘‘‘‘‘¡‘‘‘¡‘¡¡‘‘¡‘¡¡‘~¡¢¡¡¡¡¦¡¡¦¡¡¢¡¡¡¡¦¦¢¢¡¡¦£¡¡¡¢¡¢¢£¢¡¢£¢£¢¡£¡¡£¢¢¢££¡¢£¢¢£¦¦¦¦£¢££¢£åþÿÿÿÿÿ릢¦¦££££££¦££££®®£¦®®¦¦££®¦®©££®®®®®®©¦®¦¦®®¦®®®¦¦®®¦®®©££®®®®®£¦¦®®£££¦©®££¦®££¦¦®®®£££££¦¦¦£¦¦££££¦££££«®¦£££££¢¢££¢¢£¢¢¢¢£¢¡¢£¢££«£¡¡¢¡¡¢¢¢¡¡¢¡¡¡¡¡¢¦¡¡¡£¡¡¢¡‘¡¡¡¡¡¡¡‘‘¡¡¡¡¡‘‘‘¡‘¡¡¡¡~¡¡~¡¢‘~‘‘~¡‘‘‘}~‘‘¡}~‘~~~~€¡~}~Ôÿþ‘}~~~}~~~}}~~~}~~}~}r}}}~~}}}}}}}}}}|}~}}~}}r|}|}}}|vv}}}}||v}|vvv||rpvvv}pppp|}|vvpvvpppvppÙÿ˜ppp×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!! !! !! !9qªíýýüýýýýýüüüÿþýüýüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                  ÓÓüúüúüúúúúúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡}~~~‘‘‘~~¡¡~‘¡‘~~‘¡‘¡‘‘¡‘¡¡‘‘¡‘‘‘¡¡¡‘‘¢¡¡¡¢£¡¡¢¡¡¡¡¡¡¡¡¡¡¦£¡¢¢¢¡¡¡¡‘¢¡¡£££¢££££¢£¢¡¡¡¢£¢¢££¢¡¡¢£¦«¦¦¢¡££££åþÿÿÿÿÿꦦ¦¦££¢¢£££©®££¦®©®®¦£££®®®¦£¦¦®®®®®®®®®®¦®®¦®®®®©¦®®®®££££®®®¦££®®®¦£££¦®¦£®¦£¢¦®®®¦££££££®¦¦¦®¦££¦®©®¦£¦««££¦¢¡¡¡££¢£££¢¡¡¢¢¡¢£¢¡¦«£¡¡¢¡¡¦¦¡¡¡¦¡¡¡¡££¢¡¡¡‘‘‘¡¡¡Ÿ¡¡¡¡¡¡‘‘¡‘¡¢¡¡¡¡¡‘¡¡‘‘¡¡¡‘¡¡‘‘‘¡¡¡~‘¡~~~~}~‘¡¡~~~~‘‘~}~~~‘‘¡~}‘Ôÿþ}}~}}~}‘~~~}}‘‘~}~~}s}}}~~}}}~s|}|p}}}}~}~}}|}s|}}}v}rv|||vpp|}rvrppvvpprvvppv}}|pp|}rvoppppßÿ˜oopÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Y÷ÿÿÿÿÿ÷_!!!!!!!!!!!!!!!! !!!!!!!!!!sªíýüýüüüüüýýýÿýüýüýüýýüýüýüýüýàÓ                                                                                                                                                                                                                                        Ó×úúúúúüúüúüóüúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘¡~~~~~~‘¡~‘¡‘~‘‘‘~¡‘‘¡¡‘~‘¡¡‘‘¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡£¡¡¡‘¡¡¡¡¡¡¡¢¢¡¡££££¡¡¡¡¡¡¢£¢¢£££¢£¢£££¡¢££££¢¢££££¢£££¦£êþÿÿÿÿÿë«£££¦¦¦£££££££©£¦©¦®®¦¦££®®££®®®®¦£££©£¦®®©©£®©¦®©¦¦®¦®®®®££¦®£¦®«££££¦®®®¦£¦®£¢£®®¦¦£££¦¦¦¦¦££¦£¢£¦¦¦¦¡¢£££¢¦®£££¢£¦¢¢¢¢¢¢¦¦£¡¢££¡¡¦¢¡¡££¢¡¡¢¡¡££¡¡¢¢¡¡¢£¡‘¡¡¡¡¡‘¡¡¡¡¡¢¢¡¡‘‘¡¡¡‘¡¡‘‘‘¡¡¡‘‘‘‘‘‘¡¡~~‘¡¡‘‘‘~~¡‘~~~¡‘‘‘‘‘~~}}~~~§ýÿ‘}~¡~~~}~~~}~}}}~}~}}}}}}}}s}}}}}~~}|~}}s|}|}}}}}}}vr}}}|v|vr}|v}}}}|vv|vp||ppv|v}vpp|p|ppvppp×ÿœppwÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@óÿÿÿÿÿ÷x !!!!!!!!!!!!! !     !pªíýýüýýýýýüüýþþýüýüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                           ÓÓüúúüúúúúúúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ}‘‘~~}~‘¡}~‘‘~¡‘‘‘‘¡¡¡¡¡‘¡¡¡~‘‘‘~‘¡¡£¡¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡¢¡¡¡¡¡¡¡‘¡¡¡¡£££££¡¡¡¡¡¡¢¡¡¦£¢£¢£¦££¢¡¡¢¢¢£¦££££¢¢£¦£¡£Ýþÿÿÿÿÿꦢ££«®®¦££££¦£®®®£¦®®®®££®®¦¦®®®®©££¦¦££®®¦¦¦®®©®£££££®®©££££¦£¦®«£££¦®®®®¦©®¦¦££¦¦¦¦£¦££®®£¦£¢£¢¢£®®¦££¡££¢¡£¦®©£££¦¢¡¢¦¢£««¦¢¡¡£¡¡¦¡¡¡¢¦£¡¡¡¡¡¡¡¡££‘¡¢¢¡¡¢¡¡¢¢¢¡¡¡¡¡¢££¡¡‘¡‘¡¡‘‘¡¡¡¡‘¡~¡¡~~~¡¡¡‘‘‘~~‘‘~~‘¡¡¡¡‘~~~~~}}~¥ÿÿ€~~‘~~~~€~}~~}}}}}}}}~~}}}|}}}}}‘~|}}rv}}}}r}}~~}}}}}}pppp}}p}}}}}p|p|}|vvpp}v|}v|}}pppp}ppp×ÿžpvvžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@÷ÿÿÿÿÿ÷_! !!!!!!!!!!!! !!!!$q¥íüüýüüüüüýýýÿýüýúýüýüüýüýüýüýæÓ                                                                                                                                                                                                                                              ×ÓúüóüúüúúüúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~}‘‘~~~‘‘¡~~‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘¡¡¡¡¡‘¡‘¡¡¡¢‘‘‘¡¡¡¡¡¢¡‘¡¡¡¡¡¡¡¢¡‘¡£¢¡¡¡¡¢¢¡¡¡¡¡¡£¦¢¢¢¡¢¦¢¡¢¡¢£¢¢¢¢¢££££®¦¢£¢£££¦¦££åþÿÿÿÿÿ뫦£¡£¦¦®£¦¦¦£££££££®®¦¦££®®££©®¦£©©®®£¢®®®£©®££¦®«®®££®®££¦®®¦££®®®£©®¦¦¦££¦¦£¦¦¦¦¦®«¦£££¦¦££££¦¦££¦£££££££££¦££¦££££¢¡£«¢¡¡£¢¢¢¡¢¡¡¦£¢¢££¡£¡¡¢¢¡¡¡¡¢¦¡¡¡¢¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘¡¡‘‘‘‘¡‘~¡‘‘¡¡¡‘‘‘¡‘~‘~‘‘‘‘‘~~~~~~}~~~~}‘¥ÿÿ‘~}~}~‘~~}}}~~~~}~}}}}}}‘}~}}}|}~}p}}}p}~|}}|}}}p|}}v}}}rp}}vvrv}}v||vr}p}pvrp||vpp|ppv|ppvpÓÿÇvppžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷Z!!!!!!!!! !!!!!!!!!   9q¥íýýüýýýýýüüýþþýüýúýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                                     ÓÓüúúúúúúúüóüúüüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ¢~‘‘~}}¡‘‘‘‘~‘¡‘~~~~~~~~‘‘‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘~¡¡¡‘¡¡¡¡¡¡¢¡¡¡¡¢¢¡¡¡¡¢¡¡¡¡¡¡£££¦£¢¢¢¦¦¢¡¢¢£¢¡¡£££¦¦£¦«£¡¡£¦«£££££Ýþÿÿÿÿÿ£££¦£££¦¦¦¦££££££¦£®¦¢££¦£££¦£¦®®®®©¡®¦£«¦£££¦¦¦«®®£¦®¦«®®®®££®±®®¦©££¦££¦££©®®©¦®®®®¦¦®££¢¡£¦«¦¦¦££¦£££¢£¦¦£¢£££££¦¢££¡¡¡‘¡¢¢¢£¢¡£¦££¦¢¡££¢£¡¡¦¢¡£¢¡¡¡¢£¢¡¡¡¡¡¡¡‘‘¡¡¡‘‘‘¡¡‘‘‘‘‘¡¡£¡‘~~¡‘¡¡¡‘¡¡¡¡‘~‘¡‘~‘~~¡¡~}}}}~~~}}~~‘‘‘ÿÿ‘€}}}}}~}~~~}}~}}~~~}~}}‘~}~}}s}}||}~}|}}}}}p|||vp|vr}}~}}}}ppv}}vv}|pv}}|vpvvppppvp|}}pv}}vÓÿÇvp}™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!!      !!=q’éüüýüüüüüýýýþþüüýüüýüüýüýüýüýàÓ                                                                                                                                                                                                                                                          Ó×úúúúúüúúúüúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖŸ¡~~~~‘‘~~~‘¡‘‘‘‘‘‘~‘‘¡¡¡‘‘‘‘¡‘¡¡‘¡‘‘¡¡¡¡¡¡¡‘¢¥¡‘¡¡¡‘¡¡¡¢¢¡¡¡¡¦¢¡¢¡¢¡¡¡¡££¡¢¢¡¢¢¢¢¡¢¢¢¢¢¢£¢¢£££¡¢£££¡££££¢¢£¦åþÿÿÿÿÿ릣£«¦«£££¦¦¦¦®©¦¦££££®®£¦£¦££¦¦¦¦¦®£¦¦£¦¦®®¦®®¦®®®£¦®®¦¦¦¦¦¦®®££®®¦®£¦££¦¦«®©£©£¦¦¦¦££££¦®¦¦£¢£¦¦££££££¢¢££¦¦£££££££¡£££££¦£¡£££¡¢££££¡¡££¡¡¡¡¡¢¢£¡‘¢¡¡¡¡¡¢£¡¡¡‘¡¡¡¢¢‘¡¡¡¡¡‘¡¡¡¡¡¡¡‘‘¡¡¡¡¡¡‘‘~¡¡‘¡‘~‘‘‘‘‘‘~‘‘~~‘~~~~¡‘~~~}‘‘~}þÿ‘~}}~}~~}~}~~}}~~}}}}}}|}}~}}}}}}}s}~}~}p}~}|}v||s}|}}|}vr}}|v}}|vr}p}vp||v|v|p}|pvrpvppppp}vpÇÿ×vpp˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!@óÿÿÿÿÿ÷Z!!!!!!!!! ! !! !! $qªëüýüýýýýýüüýÿþüýüüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                      ÓÓüúúúüúúüúúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ Ÿ~~~~‘‘‘‘~}~‘¡‘~~~‘¡¡¡‘~‘‘~‘¡¡~~~¡¡~~~¡¡¡¢¡‘‘¡£¦¡‘¡£¡¡¢¢¡£¡¡¢£¢¡¢£¢££¢¡¡¢¡¡¡¡¡£¢¢¢¡¡££¢¢££££¢¡¡¡¡¢£££¡¢¢££¢¢£êþÿÿÿÿÿê«¢£¦®®¦¢£££££¦¦¦¦£®££®©¦¦®£¢¢£££££¦®®¦£££©®®®®®®®®¦¦®®®®©©¦««®®£££££££©£®©¦¦¦£®£££¦££¢¢¢¦®¦££¢£®®¦£££¢¢££££«¦££¦£¢£¢¡¢¡¢¦¦¦¦¦¦££¡¡¦¦£¡‘¡¢¡¡¡¡‘¢¦¡¡¡¢£¡¡¡¡¡¡¢¡¢¢¡¡¢¡¢¢¢¡¡‘¡‘¡¡¡¡¢¡¡‘¡¡¡‘¡¡¢¡‘‘¡‘‘¡¡~~¡~¡¡‘‘¡¡~}~~‘~‘¡~‘¡‘~~~þÿ‘}‘}}~~~}}}}~~}}~}}}}|}r}}}}rv}}}}}}}~}}}}}}}rvv}}}v}}vv|}}}v}}}vpv}pp||pp|}pvvvvvpp}ppppppprÓÿÙvpp˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!B÷ÿÿÿÿÿ÷]!!! !!!!!!!! !! !  ! !!  =}ªíýüýüüüüüýýýþýüüýüüýüüýüýüýüýæÓ                                                                                                                                                                                                                      Ó×úúüóúúúúüúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘~}~‘~~‘‘~‘¡~~‘‘‘¡‘~‘‘‘‘‘‘‘~¡‘¡‘¡¡‘‘¡¡¡‘¡¡¡‘¡‘¡£¡¡¡¡¡‘¡¦¢¡¡¡¢¢¡¡¢¢¡¡¡£¡‘¢£¢£¢¡¢¢¢££¢£££¡£¡£££¡¢£££££££¢£££¦££åþÿÿÿÿÿꦣ¦¦¦®¦££®££¦££¦¦¦©££®®££®®££«¦®®££«©¦®¦¢®®¦¦®¦©£¦®¦££¦¦®®¦©££®®«®£¦£££¦¦®£££¦¦©£££¦£¢£¢£®¦¦£¢£®¦££¦¦££¦¦¢¢¦¦£¡££¢¢£¢£¢£¦£¢¢¦£¡¢¡¡¦£¢¢‘¡¦¢¢£¡¡£¦¡‘¢¢¢¡¡¡¡¡¡¡¡¢¡‘¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘‘¡‘¡¡¡~‘‘‘‘~‘‘‘~‘¡‘~~‘‘‘¡‘~‘‘‘‘~~~~~}‘‘~}~~ýÿ‘}~~~‘~}~‘~~}‘~}~}~~}|}}}}}}~}|}~}}}}}~|}}|s}}}}r}}}rp}}}}|}|r}vr}|p}p}}ppv|v|vrp}ppp}vpppp|pvžþß}ppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!!! !!!!!! ! !  !=s¥èýýüýýýýýüüýÿþüýüüýüüýüýüýüýüæÓ                                                                                                                                                                                                                     ÓÓüúúúúüúúüóüúüúüúÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ~‘~}~~~~~‘‘‘~¡‘‘~‘¡~~‘‘‘‘¡‘¡‘¡¢¢¡‘¡¡¢¢¡¡¡¡¡¡¢¡¢¢¡‘¡£¡¡‘‘¡¡¡¡¢¡¡¡¡£¡¡¡£¢£¦¡¡££¦¦££¦£¢¢££££¢£¦®£¢¢££££¡¢¦¦£åþÿÿÿÿÿꦦ®¦¦¦££«¦£«¦¢£¦¦¦¦£®®®©¦®¦££¯®¦¦¦¦¦££®®££®®¦¦££®£¦¦£££©®®®£££®®®®®®©££¦¦®£££££££££¢££¢¢¢£®®®££¦£££££££££¢¡¢£££¡££¡¡¡¢¡£¦¦£¢¢¢¡¢¡¡¢£¢¡¡¢¦«¦¦¡¢¦¦¡¡£¢¡£¢¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡££¡¡‘‘‘¡¡¡~‘‘‘‘~~~~~‘‘~¡‘~~€‘~‘‘‘¡‘~‘~~~}~~~}}~~ûÿ™}~‘‘~~‘¡~~‘~}}}~}}|r}|}}}}~~}|}}}s}v|p}}p}}}p}}|v}rvvvp|vppv}|v}}}pp||v|}}}}pppp}pp}vvvvpžÿßwvp{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$!!B÷ÿÿÿÿÿ÷_!!!!!!!! !! !!!!!!!! =}¥éüüýüüüüüýûýþýüüýüüýüüýüýüýüýàÓ                                                                                                                                                                                                                            Ó×úúúüóúúúúüúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘‘~~~‘~¡‘‘~~~~¡‘‘~~‘¡‘¡¡~‘¡‘‘¡~~¡¡¡¡¡¢~‘¡¢£¡€¡¡¡¡¡¡£¡¡¡‘¡¢¡‘¡¢¡¢£‘¡¡¡¡¢¡£¡¡£¦¡¡¡¡¡£¢£¢¡¢£¢££¢££¡¡¢££¢¢¢¢££££££¦£åþÿÿÿÿÿ뫦¦¦££££¦¦¦®¦¢£©©£££¦¦©£¦®®££°®££¦©££¦®¦£¦¦©£¦£¦®®¦©£¦®©¦¦££¦¦«®¦£¦£¦©¦¦£¦¦£¦¦£¦¦«¦££¦¦£££¦®£££££¦£¢££££££¢£¢£¦¢£¢£¢¢¢¡£¦£££¡¢¢£££¡¡¢¢¢¢£¢¢£¡¡¢¢¡¡¢¢¢¢¡¢¡¡¡¡¢¡‘¡¡¡¢¡¡¡¡¡¡¡‘‘¡¡‘‘¡¡¡‘¡¡‘‘¡¡‘‘‘‘¡‘‘‘‘‘‘‘‘~‘~~‘‘¡‘~}‘‘~~~~~~}~úÿ¥~~~~}~}}~~~~}}}}~}~~~}}}}}}}~~}}}v}~}||s}}}}}}}}}vv|p}}rv|v|}vp}}rv|}|pv|pp|v|}v|vvvvpvvppppp˜ÿèvpvwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷Z!!!!!!!!  !  !=q¥ëýýüýýýýýüüýÿþüûüüýüüýúýüýüýüæÔ                                                                                                                                                                                                                          ÓÕüúúúúúüúúüóüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘‘‘~‘‘‘~}}~‘‘¡¡~}~‘¡¡‘‘‘‘¡‘¡¡‘‘¡¡‘¡¡~¡‘¢¡‘‘‘¡¢¡¡£¢¢¡‘¡££¢¦£¡¡¡¢¢£¡¡¡££¦¢¡¡‘¡¢¢£¡¡¡¡¡¢¢¡¡¡¡¡¡¢¡¡¢¢¢£££¦£££¢Ýþÿÿÿÿÿꮦ£££¡£££®®®¦£¦©¦££££££££¦®££®®¦¦®£££©®®£®®££££©®££££®®®¦£££££©®¦¦££®®®®£¦®«¦¦££©®®¦©®®¦¦¦£££¡¡¡¢£¢¡££££££¢¡¢££¦£¢¢¡¢££££¢££¢££££¦¢¡£¦£¡¡¡¡¢¡¡¢¡¡¢£¡¡¡¡¡¢¡¡¢¢‘¡¡‘¡‘¡‘¡¡¢¡¡¡‘‘¡¢¡¡¡‘~¢¦¡¡¡¡¡‘‘~¡‘~~~‘}~‘‘‘~}~‘‘~~~¡‘~‘‘~~õÿ¬€}~}}~}}}}}~}~~~~}}~~}~~‘~}~~}~~}r|}}}}||}}~}}}ppr}}}}}}}s}}r}vvvpvvv||ppp|ppvv}p|p}vrpvpppp™ÿèvppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!! !!!qšèýüýüüüüüýýýþýüüýýüýüýüüýüýüýàÓ                                                                                                                                                                                                                     Ó×úúúúúúúúúúüúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~‘~~‘¡~~‘~‘¡‘‘¡¡~‘‘‘¡‘¡¡‘‘‘‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡‘¡¢¡‘¡¡¡¡¡¡£‘¡¡¡¡¡¢¢¢¢¡‘¢£¢¡¢¢¡¡¢¡¢¢¡¡¡¡¢£¢¢¡¡¡¢¢£¢¢£¦¦££££££££åþÿÿÿÿÿ릣¦®£¡£¦££££££¦¦£££¦¦¦¦¦©£¦¢¢®®©£¦¦£®££®£¦®£££¦£©¦®£©¦©¦®®¦¦£¦¦£¦®££££®®£¢«®¦£££££¦®¦¦¦££££££££££¦£££££¢¢£££¢££¦¦££££££¢¡¢££¢¢£¢¡¡¡¡¦£¢¢¡¡£¡¡¡¢¡¡¡¢¢¡¢¡¡¡¡¡¡¡¢¡¡¡¡¡¡¢¡¡‘¡¡¢¡¡¡‘‘¡¡¡‘¡‘¡‘¡¡‘¡‘‘‘‘¡‘~‘‘~‘‘~~~~¡‘~~~~}~‘‘~}‘‘~}õÿÓ¡}~~~}}~~}}~~~~~~}}}}}}}‘}~}}}}}}s}}}}}}p}~}v}}}pp}}p}}}|v}}}}rpv||||vvppp|p|pp}v}|ppvvvrppp˜ÿ÷vppwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Còÿÿÿÿÿ÷Z!!!!!!!!!!!! =q¥íüýüýýýûýüüüÿþüüýúýúýüýýüýüýüæ×                                                                                                                                                                                                                               ÓÓüúúúúüóüóüúúüúüúÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~‘‘‘~~‘‘¡‘¡~~‘¡¡¡¡~‘¡‘~‘‘‘‘‘¡¡‘~~‘‘‘¡‘‘‘‘¡£¡¡£¢‘¡¢¡‘‘‘¡¢¦¢¡¡‘¡¢£££¢¡¡¢¡¡¢¢¡¢££¡¡¡¡¡¡¡£¦¢¢¡£¦£¦¦££«®«¦£££¢££åþÿÿÿÿÿê«£££££££¢££¢¢£¦¦®¦£¦£¦¦¦«££¢¢£®¦££®©®££££¦¦££¦££®®¦¦®©££¦®®®®®¦¢¦®¦£££¦®®£®®¦£¢¢£££®£££££££¦®¦®¦®®¦¦££¦¢¢£¦®¦¦£¦¦£¦£¡¡££¡¡£¢¡¢¢¡¡¡¡¢¢¡¡¢¡¢¢¡¡¡¢£¡‘‘¡¢£¡¡¡¡‘‘¡¡~¡¡¡¡¦£‘‘¡¡¢¢¡¡¡¡¡¡¡‘‘‘¡¡‘‘‘¡¡‘¡¡¡‘~~‘¡‘‘‘~~‘‘~~~~}}~‘‘}}~¡~~ëÿÓ¡}~~~~~¡~}~~}~~}}~}}|}}r~‘~}v|}s}}}~}~s}}}}}vr}~}|}}}vv}p|p|}}}pp}}}}|}}vvv|v|p|}}p|p|vv|vvpp˜ýüvvovÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!!!!! !!!!!! !  !! !!! =qªéýüýüüüüýýûýÿüüüüüýýüýüüýúýüýàÓ                                                                                                                                                                                                              ×ÓúúúúúúúúüóüóúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ}}~~~~~~~‘‘‘~‘‘¡‘‘~~‘¡¡¡‘¡¡‘‘¡‘¡¡¡¡¡‘‘¡¡¡¦¡‘¡¢¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¢£¡¡¢¢¡¡¡¡¢¡££¢¡¢£¢¢¢££££¡¢££¦£¡¢¦¦¦¦£¢££££åþÿÿÿÿÿí¦££¢£®£¢£££¦¦£¦®¦¦¦¦¦£¦£££¦¦®£¦££¦¦¦®££¦«¦£¦®©££®®££®®£££¦££®®££«®¦¦££¦¦¦©££££££££¦¦¦££©£¦¦¦¦£££££¦££¦££¡££«¦¦£££££¢¡£¦£¡££¢¢¢¢¢¡¢¢¢¡¡£¢¡¢¡¡¢¢¢¢¡¡¡¡¡¡¢¢¡¡¡¡¡¢¡‘¡¡¡¡¡¢¡¡‘¡¡¡¡¡¡‘¡¡¡‘¡¡¡‘¡¡~‘¡‘‘‘‘‘¡‘~‘‘¡‘‘~~¡‘~~~‘‘~~‘‘~~~}‘èÿÚ‘~}~~}~~}}}}~~~}}€~}}}}}}~~}}}v}}}}}}}r}}|}}p|}}v|}}r}|v|}pv|||p}}||vvr}|v}v|pp}|vppv}|ppppoýÿvpvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷Z!!!!! !!!!!!!!! !=q¥èýýüýýýýúýüüÿþýúýúüüüýúýüýúýüæÓ                                                                                                                                                                                                                    ÓÕüúúúúúúúúúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘~~~~‘‘‘¡‘‘‘~~~~‘~~~¡¡¡¡‘‘‘¡¡¡‘¡¢¡‘‘¡¡¡¡¡¡¡¡£¡¡¢¦¢¡¡¡¡¡¡¡¡¡¦£¡¡¡¡¡££¢£¡¡¢¢¢¢¡¡£¦¦¦¦¦¦¦¢¢¢££¢£¢££¢¢££££££¢¢£¦êþÿÿÿÿÿꫦ£¢£¦££¦£¦®®¦££££¦¦®¦¦££¦®®®®£££®®®®®¦£¦¦¦®®®¦¦®££®®¦£££££££££¦®®¦¦££££©¦£¢¢£®¦¦¦£©«£¦¦££¦¦££¢£¢£¦¦¦¦£¡¡¡¢¦¦££¦¦¦¢¡¡£¦£¢£¢¡¢¢£¡¡£¦¡¡¢£¡¡¡¡¡¡¡¢¢¡¡¢¢¢¡‘¡¡¡¡¢¦¦¢¡¢¡¡¡¡‘¡¡‘¡‘‘‘~¡¡~¡‘‘~‘~¡¡‘~~~}¡¡¡‘~‘~~~~‘‘‘¡}}}~‘‘~àÿÚ‘~}}~}~}s~~}}}~}}~~~~~~|}s}~}~|r}}}}}}}p|}rvrv}}vvr|vpppr}}vv|v|||pppp}v}vpvpp}}vpppop|ppppv}ÿÿvpwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@÷ÿÿÿÿÿ÷_!!!!!! !!!!!! !   =q¥éüüýüüüýýüýýýýüüüýüýüüýüýüýüýàÓ                                                                                                                                                                          Ó×óúüóüúúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~~~‘~‘‘‘‘~~~‘‘‘‘‘¡‘¡¡‘¡¡¡‘‘¡¡‘¡‘¡¡‘¡¡‘¡¡¡¡¡¡¢¡¡¦¡¡¡¡¡¡¡£¢¡¡¢¡¡¡££¢¡¢¢¢¡£¡¡¡£¦£££££¡¡££££££¡¢£¢££££££¢¡££åþÿÿÿÿÿ릦££¦«£¦£¡£®«¦¦££££££®¦££¦®¦®¦¦££¦£¦£®®¦£¦®©£¦£¦®££¦®£¦¦¦¦£¦££«®££¦¦¦©££¦¦££££¦££££®£££¦¦¦£¦£££££¦¦¦¦££¢£¢¡£¦£££££¢£¡£££££¢¡¢¢££¡¢¦£¡¢¡¡¢¢¢¢¡¡¡¢¡‘¢£¡¡¡¡¢¡¡¢¢¡‘¡¡‘¡‘¡‘¡¡¢¡¡¡‘¡¡¡~~‘‘‘‘¡¡‘¡‘‘¡‘‘~~‘‘¡¡‘‘‘~‘‘~~~~~‘~‘‘‘‘~~}}~~~}àÿè‘~}~‘}~}}~~}}}}}}}~}}~}}}|}~}}s}}}}v}~}p}}}s}p||s}}p}p|p}}}vp|}p|vp|pvvr}v|p|pv||ppppp|vpp|vvþÿ˜ppvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!!!! !!!!! =qšëýýüýýûýüýüýÿýüýüüüüüûüüüýüýüæÓ                                                                                                                                                    ÓÓüúúúúúúúúúüóüúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ Ž~~}~~~‘‘}~~~~~‘‘¡‘‘‘¡‘¡¡‘‘‘‘¡‘¡‘‘‘¡~¡¡‘¡~~‘¡¡‘~¡‘¡¡‘¡££¡¡¡¡¡¡¢‘¡¢¡¡¡¡¡¡¡¡££¢¡¡£¢¢¡¡¡¢¢¡¡¡¡££¢¢¢¡£¡¡¢£¡¡£¦¢¡££Ýþÿÿÿÿÿꦦ¦£¦®®®¦¢£¦££££££¦£¢¦¦¢¢£¦£¦¦©££¦£££®®¦¦¦©£¢£¦¦£¦®£¦£®®¦©¦®«£®¦£££¦¦©£¢£®¦®®«¦¦®©¦¦£¢£¦¦£££¦£££®¦£££¡¡£¦££¢££¢¢£¡£¦¢¢¡£¡¡¡¢£¢¢£££££¡¡¡£££¢£‘¡¡¢¡¡¢£¡¡¡¡££¡¡‘¡¡¡‘¡¡¢££¡¡‘‘‘¡¡¡¡¡¡¡¡‘‘‘‘~‘‘¡~~~~~‘¡‘‘~‘‘‘‘~~‘‘‘~~‘~~}~~}~Úÿë‘}~‘~~‘~}}}}}}}~~~}}~~}}}}|}}}}}}p}}~}}~}}}}p}|}}s|}}}}~~}}}vv}}||}}|vppp|v|pp|vvpppvpp|vppþÿžplvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@óÿÿÿÿÿ÷_ !!! !!!!!! !!    !q¥éüüýüüüüýúýýþýüüüüüüýüýýýüýüýàÓ                                                                                                                                                                      ×Óúóúúúúúúúúúúúúú÷ÿÿÿÿÿÿÿÿÿÿÿÿýÖ ~~~~~‘~‘~~~}~¡¡‘‘~‘¡‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘¡¡‘‘‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢¦¡¡££¢¡¡¢¢£¢¢¡£¢££¡¢¢¢¢¢££¢¢¢£¢¢££åþÿÿÿÿÿ릫£¢¦£¦®£¢£¦£¢£¦¦££¢¢«¦£¦£¦£¦¦¦££¦£¦¦¦®©£®¦£££®¦££®©££¦®££®®¦£®®££¦¦¦¦££¦¦¦¦¦¦¦££££¦£¢££¦££«¦£££¦££££¡¢£££¢££¢¢¢¢¢££¡¡¡¢£¢¦¢£¡¡£«£¡¡¢¢¡¢¡¡¢¢¡¡¡¡¡¡¢¢¡‘¡¢¡¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡¡‘‘¡¡¡‘‘~‘‘‘¡~~‘‘~‘‘‘}~~‘~}~~}~~~}~×ÿõ‘~}~‘~}~~}}~~|}~~~~s}}~}|~}s}}}}~}r}}}}}}}}}||p}}}}}v}}}}}}r}vrv}}||}}|v|pp}ppv|pvvppvpprppvwýÿÓvopÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!$!@óÿÿÿÿÿ÷Z!!!!! !!!! ! !!qªëýüýûýýýüýüüÿþúýüýúýúýüüüýüýüæÓ                                                                                                                                                                      ÓÔüüúúúúúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ¡‘~}}~~‘‘‘‘‘~~~‘~~‘‘~~~‘‘~~¡¡‘~‘¡¡¡¢¡¡¡¡¡¡¢¡¡£¡‘¡¡¡‘¢¡‘¢£¡¡¡¢¡¦£¡¢¦¢¡¡¢¡¢¡¡¡¦£¢¢¡¡¢£££££¦¦£¢££¢££¢¢£¦£¢¢¢¢££¦¦Ýþÿÿÿÿÿê«££££££¦££¦®£¢£¦«¦£¢¦®®¦®¦©£¢££££¦®®¦£££¢££¦£¦®¦¢£¦££®¦¦£¦®¦££¦®¦£¦¦¦¦¦£®®¦¦£££¢¢¡£¦®£¢¢¢¢£¦££¦¦£¡¢£¦£¦£¢¢¦¦£¢¢¢£¢£¡¡£¡¡¦¦¦¢¡£¡¡£¡¡¡¢¢¢¢¡¡¡££¦££¢¢¡¡¡¡¡¡¡¡¡¡¢¢£¡¡¡¡¡¢¢¡‘‘‘¡‘¡‘¡¡¡¡¡¡¡¡‘~~‘~¡¡‘¡¡¡‘¡‘~~}~‘‘~~~~€~~~~}}~~~~‘~~Ôÿõ‘~~~‘~}}}}~~~}}~~}}}|}s}}s}~~}}r}}}}~}}p}}}vv}}|}}~}p}prv}}p}v}pp}}vpp}|v|vvppppvv}rv||vppppv|ýÿà}puÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!$!!Zóÿÿÿÿÿ÷[!!!!!!!!! !   ! !=}ªèýûüüýúýýúýýþýýüüüýüüüúýûüüüýàÓ                                                                                                                                                                                             Ó×óúóúúúúúüúúúúüóüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘~~~~~‘~~‘‘‘}~~‘¡‘~~¡‘‘~‘~‘¡‘‘‘‘¡¡‘‘¡¢‘¡¡¢¡¡¡¡¡‘‘¡¡¡‘‘£¢¡¡¡¡¡¡¢¡¢£¡¡¡¡¢£¡¡¡¡¢£¡‘¡£¢¡£¢££££¢¢¢£¢¢¢¡¢£¢££¡¡¢£««åþÿÿÿÿÿ릢£¦£¢£££££¦££££¦®¦£££¦®®£¦£¢¦«££¦¦¦®£££¡££¦¦£®¦££«£££®£®¦¦¦££¦¦¦«££¦©££¦¦¦¦£¢£££¢££¦¦£¢¢££¦£££¦£¡¢££¦¦£¢£¦£¢££¢¢¢¢¢¡££¢££¦¢¡¢¢¢¢¡¡¡¢¢¢¢¡¡¡¡££££¢¢¡¡¡¡¡¡¡¡¡¡¢£¡¡¡¡¡¡¡£¡¡‘¡‘‘‘¡¡¡¡¡¡¡¡¡¡~‘‘‘‘~‘‘‘‘¡‘‘‘‘~~~‘~~‘~~~~~‘~}~~~~~~~Óÿû‘~}~~}~~}~~~}}}~~}~}}}}}}~}}}}}|}}}}}}||}}}rp}|s}~}}||}vr}}|v}||pv||vvv|}vvppp|p|ppvpv}pppvpppýÿè}vvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷Z!!!!!!!!! ! ! =sªíýüýýüýüüýüüÿþúýúýüüýüýüüüýýüàÓ                                                                                                                                                              ÓÓüúúúúúúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘¡¡‘‘‘‘‘‘~‘‘¡¡‘~¡¡‘‘‘‘‘¡¡‘~~¡¡‘¡¡¡¡¡¡‘¡¡¡¡‘¡¡‘¡¡¢¢¡¡¡¢¡¡¡‘¡¡¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡£¦¢¡¡£¡¢¢¢£££¢¢££¢¢¢¢¦«¢¡££££Ýþÿÿÿÿÿꦢ£££££££¢£¦®¦¦¢£«¦£¢¢£®¦££££®«¦¦¦¦¦®¦££¢£££¦£¦¦¦¦®®£££©®®¦£££¦££¦££¦££££¦££¢¢£®¦¢¢£¢£££¦££££¢¢¦¦£¦¦¢¢¢¢£¦¦£¢¢¢¡¢¢£¢¢£¦¦¢¡¡£¢¡¡¡¡¡¡££¡¡¢¡££¡¢¡¢¡¡¢¡£¢¡¡¢¢¡‘¡¡¡‘¡‘¡£¢¢¢¡Ÿ‘‘¡¡‘‘¡¡¡‘‘¡¡¡¡‘~~‘‘~~‘~~~¡¡¡‘~~‘¡‘‘‘‘‘~‘‘~~‘‘~}~~§ÿý‘}~}}}~~}}}~~~}}}~}~}}r|}~}}}}}s||}v}}}s}r||}}}|}}|p}}ppp}|pvv}p|}||rvpv|}}p}|}}vpppppv|pppvvvýÿ÷voÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷_!!!! !!!! ! !q¥éúýúýýüýüüýýþýüúýüýúüüüüýûüüýàÓ                                                                                                                                                                      Ó×óúúúóüóúúóüúúúúúÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~‘‘¡‘~~~~‘‘~‘¡¡‘~‘‘‘¡‘¡¡‘‘~‘¡¡~¡‘¡‘~¡¡¡¡¡¡¡‘¡¡‘‘¡‘¡¡¡¡¡‘‘¢¢¡¡¡‘¡‘¢¢¡‘¢£¡¡¡¡¡¡¡¡££¡¡¢¦£¡¢¡£££¢¡¢¢¢¢¢¢££¢¡££££åþÿÿÿÿÿ릢£££££££££¦¦®¦¢£¦¦££¢£¦£¦£¦£££®®££¦®£¢¦«£¢£®££¦©¦®®£££¦¦©®¦¢£¦£¦®££££££££¦££¢¦«¦££¦£¡£¦¦££££¢£¦¦££££¢¢¢£¦£££¢¢¢£¢¢££¢¢££¡¡£¦¢¡¢¢¡¡¢£¡¢¡¡¢¢¡¢¡¢¡¡¡¢£¡¡¡‘¡¦¡¡¡‘¡¡¡¡‘¡¡¢¡¢¡‘‘~¡‘‘‘‘‘¡¡¡‘‘‘¡¡‘‘~‘¡~‘~~‘‘¡¡‘~~‘‘¡‘‘‘‘‘‘~~‘‘~~}}šÿÿ™}~~}}~~}}}~~~~}~}}}}}}}}~~}}}}}}r}|s}}}}|||}}}}}}}v|}}}v||vr}}|v}}pvr}pv|||v|pv}pppvppvvppp}vüÿÿp™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷[!! !!! !!!!  !! 7qšëýýýýúýüüýüüÿýýüýúüüýüüüüüúýüæÓ                                                                                                                                                                             ÓÓüúúúúúúúüúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ ~~~~~~}~~~~~~~~~~‘‘~~‘¡¡‘‘‘¡‘¡¡‘‘¡¡‘‘‘~~‘¡¡¡‘¡‘‘¢¡¡¡¡‘¡¡‘‘¡¦¢¡¡¢¡¡£¢¡£¢¡¡£¢¡¢£¢£¡¡¡¡¢¡¡¡¢¡¡£¡¡¡¡¢££££¢¢£¦£¡£¦£¢£åþÿÿÿÿÿꦢ¦«¦¦£££¢¢£¢£££££££¦££¦¦«££¦££®¦£¢¦¦¦¦®®®¦®®®¢£¦£®®¦®¦£¦¦££££¦©®®¦££¡£££¦¦®®¦¦®££®®¦££¦£££¦£¢£¦£¢¡££¢¢¦¦¢¡££¢£¦£¡¡¢¢¢¡¡££¡¢£¡¢£££¢¡£¦«¦¡¡¡¡¡¡¡¢¡‘¡¡¡¢¢¡£¢¢¡¡¡‘‘¡¡¡‘¡‘¡¡¡¡‘¡‘¡¡¡¡¡‘‘¡~‘€‘‘‘¡¡¡¡¡¡¡¡‘~‘~~~~~~~‘~~~~‘‘€}}~~~~~}šÿÿ¥}~}~‘}~}}}}~}}}}|}}}}}~‘~~~}|}}}|}}~}}}}}}v|vvrv|p}}}}}}}v|ppppv|pp}pppvrv}ppp|vv}ppppvpop}wúÿÿžoÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Cóÿÿÿÿÿ÷]!!!!!!!!!!!  !!!  !9q¥éüüüüýüýüüýýýýüúüüüýüüûüüýýüýàÓ                                                                                                                          ÓÓóüóúúúüóúúúúúúúúÿÿÿÿÿÿÿÿÿÿÿÿþÖ ‘~}~~~~~~~~}~‘~~‘}‘‘¡¡‘‘¡¡‘‘¡¡~‘‘¡¡‘‘¡¡‘~¡~¡¡¡¡¡¢¡¡¡‘‘¡¡¡¡¢¢¡¡¡¡£¢££¡¡¢£¡¢¢¡££¡¡¡¢¢¡¡¡¢¡¢¡¡¢¢££££££¡££¢¢£££¢£åþÿÿÿÿÿꦣ¦®£££¦£¢£¢£¦££££££¦¢£¦¦¦¦¦¦¢£®®¢£¦¦¦©©£©¦¦®¦¢£®¦©¦¦®££«¦££¦¦££¦¦¦¦££££¦«¦¦¦£¦£££¦«¦¦¦¦£¢£«¦¡£¦¦¢¢££¢¢«¦¢¡£¦£¢¦¦¡¡¢£¢¡¡¢£¢¢¢¢££¡¢¢¡££¦¦¡¡¡¢¢£¡¡¡¡¡£¡‘¡¡¢¦¡¡¡¡¢¡‘‘‘¡¡¡¡¡‘¡‘‘‘¡¡‘‘‘¡¡‘‘¡¡¡¡¡¡‘‘‘‘‘‘~~~~~~~~~~~‘‘~~~~~~~‘~‘ÿÿÓ~}~~}~~}}}~~}}~}}}~}}}}}}}~}}}}}}}~}}}}}}r}}}pp}}v}}}}}}|}wvv}|vpvvvv|ppvpvppv|v}{˜˜žžÊ×àæþÿÿòžõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!! !!  =sšëýýýýüýüûýüýÿþüüûýüúýüüýüüúýüæÓ                                                                                                                                     ×ÙúúúúúúóúúúüúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ}~~~~‘‘€‘‘‘¡‘~~‘¡~~‘¡¡‘‘‘‘‘¡‘~‘‘‘‘¡‘¡¡¡‘‘¡‘‘¡‘‘¡¡¡¡¡¡¡¡‘‘¡¡‘¡¡¡¡¡¢£¢¡££¡¡¡¡¡¢¢¡¡¡¢¢¢£¢¡¡¡¢¢¢£¦£¢£££¢£¦¦££££¦êþÿÿÿÿÿꥢ£¦£££¦££¦£¦¦££¦£¦«¦££¦££££¦£¢£®«£¦££©¢¡£££®«¢££££££££££¦££¦¦££££®®££¦®®«£¢¢¢¢¢¢¢£©¦¦£££££¦¦££¦¦£¦«¦¢¡££¡¡¦¦¢£££¢¡¢£££££¢¡¡¡£¢¡¡¡¢¢¡¡¡¢¡¡££¡¡££¡‘‘¡¡‘¡¡¡¡£¡‘¡‘¡¢‘¡¡‘¡¡‘‘¡¡¡¡¡‘‘¡¡‘¡¡¡¡¡‘‘¡‘¡~~~~~}~~‘‘‘~~~~‘‘‘~}~~~‘‘~¡‘~}}~~‘‘¤ÿÿÚ‘}}~}}}~‘}}}}}~~~}}}~~~}}}|}}}v}~}}}}sv}}|}}}}|}~}|ppp}}vvwww™˜™™šžšžž§ÇÓÊÓ×ÙÙààèèõõ÷ýýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷x!!!!!!! !!!!  =s¥éüúýúýüýüýúýþýüüüúýüüüüüüýüüýàÓ                                                                                                                                                   ÓÓúóüóúúúúúóúúúúúúÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~~}¡‘€‘‘¡~~‘‘‘¡¡‘¡¡‘‘‘‘‘¡‘‘‘‘¡¡¡¡¡‘¡‘‘¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡£¢¡¢¡¡¡¢¢¡‘¢¢¡¡¡¡¢££¡¡¢¢¢¡£££¡¢£¦££¦¦££££¦åþÿÿÿÿÿ릢£££££££¦£££££££££®¦££©¦£¦£££££¦«®£££®£¡£££¦®££££££££££££¢£¦¦£££¦¦«££££«®¢¡££¢¢¢££¦¦©££££££££££££¦¦£¡¡£¢¢£££££££¢¢¢¢£££¦¢¢¡¢£¡¡¢¢¢¡¡¡¡¡¡¡¢¢¡¡££¡‘¡‘¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡‘¡‘‘‘‘~~~~~~‘‘‘‘~‘‘~¡}}~~‘~}~~‘‘‘ÿÿæ‘‘~€}|}‘~}}}}}}}}}}}}‘~}}}}‘‘¥™™™™™™š§§žž§ÓÒÓÓÓÓÓÊ×ÙÚàààààèëèôèõõõ÷÷÷úúüýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!@óÿÿÿÿÿ÷Z!! !!!  !! =sšëýýüýüýúýüýüÿýúüüüüûüüýüüúýüüæÓ                                                                                                                                             Ô×úüóüúúúúúúüúóüúüÿÿÿÿÿÿÿÿÿÿþÿûÖ‘‘~‘‘~‘~~~‘‘‘~~‘‘‘‘~~~~~‘‘‘¡¡‘‘¡¡‘‘¡¡¡‘~‘¡‘¡¡‘‘¡¡¢¡¡‘¡¢¢¡¡¡¡¡¡¡‘¡¡‘¡‘¡¡‘¡¡¡¡¡£¦¡¡¡¢¦«¦¢¢¢¡¡¢¢¡£££¡¡££¢¢¢¢¢¢£££¢¡Ýþÿÿÿÿÿꦦ¢¢¢¢£¦¦££££¦¦£¢£¦®¦£¦®¦£¦£¢£««£¦¦¢£®®¦£®¦£££¦®¦¦¦¦£££¦¦£¢£®¦¦£¦££¦¦££¢¦«£¢¦®«¦£¢£¦¦©£¢¡¢£¢¢££££¢¡¢¦¦£££¢¢¢¡¡¢¡¢££¢¡¢££¦¢£¢¡¡¡¡«¦£¢¡¡¡‘¢¡£¢¡¡¡¢‘¢¢¡£¦¢¡¡¡‘¡‘¡‘¡¡¡¡¡¡‘¡¡¡¡¡‘‘‘‘‘‘¡¢¡‘~~~~‘¡¡‘¡‘‘¡¡¡‘~‘¡¡¡‘}~~}~~~~~}}~~~‘}}}~þÿõ§§§§§§§ÓÓÒÓÔÓØÚØÚÙÙÚÚàæààèèèèèèëõëôõõõõõ÷úúûúûýýýýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!Cóÿÿÿÿÿ÷_!!!!!!!!!!!! !!!     !!q¥éüüýüýúýüýúýÿýüüüüüüýúýúýüüüýàÓ                                                                                                                                                     ÓÓóúúóúúúúúóúúúúú÷ÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘~~‘¡~~‘‘~~‘‘‘~‘¡‘~~~~~¡‘‘¡‘‘¡¡‘~¡¡¡¡‘‘‘¡¡‘‘¡¡¡£‘~‘¢¡¡¡¡¡‘‘¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¢¡¡£¦££¢¢¡¢¢¡¡¢££¡¡¢¢¡¢¢¢¢¢¢£££¢åþÿÿÿÿÿ릣£¢¢££¦¦£££££¦£££¦¦¦¦¦©££££¢£¦¦£¦¦££¦£¦¦«£££££¦®¦¦¦££¢£¦£¢£®¦©¦££££®¦£¢«®££¦¦«£££££££££¢££££££££££¡£¦£¦£¢£¡¡¡¡¢¢£¦¡¡¢«££¢¡¢¡¡¡¢¦¦£¢¡¡¡¡¢£¡¡¡¡¡¢¡£¡¡¢¢¢¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡‘‘¡‘¡‘¡¡‘‘¡¡¡¡¡‘~¡¡‘‘‘~¡¡‘‘‘‘‘‘¡¡‘~~}~‘~~}~}‘~~~~}}ýÿÿõ÷ø÷ú÷ûúûúûýýýþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@òÿÿÿÿÿ÷]!!!!!!! !!!! !!!=qšëüýüýüýüýüüýþýûúüýúýúýüýúýüüüæÓ                                                                                                                            ×ÕüúúúüóüóúúúúúúúüÿÿÿÿÿÿÿþÿÿÿÿûÖ¢}}~~~}}~‘~~}~‘~‘‘‘~‘¡‘~‘~¡‘~‘¡¡‘‘‘¡¡¡¡¢¢¡‘¡¢¡¡£¡¡¡¡¡¡¡¦£¡£¡¡£¢¡££¢¡¡¡¡¡¢£¦¦¡¢£¡¡¢¡¢¢¢¢¢£¢£¦¢¢¢£¦¦££¢¡¢¢¢£Ýþÿÿÿÿÿꫦ££££¦££¢£¦¦££¡£¦££££££¦£££¦®£¢¢¦®«£¢¡¢¦¦¦¦¦£¢££££¦££¢£©®££££¦¦£©£¢£¦¢¡£«¦££¢¢£¦¦¦£££££¦¦¦££¡¡¢¡£¦¢¡¢¢¢££¦£¦£¢¡¢£¦¢‘¢£¡¢¢¡¢¡¢¡¡¢¡£¢¡¡¢¢¦£¡¡¡¡¡£¡¡¡¡¡‘¡¡¡¡¢¡¡¡¡‘¡¡¡¡¡¡‘¡¡‘¡¡‘‘~¡¡¡¡¡‘‘¡‘‘¡¡‘~~~‘¡‘~~~~~‘‘~~}~~}~‘‘~}~~}~~‘}}}~‘‘¡ëõõõõõõõõõõõõõíõõíííõëíèèèèëèèèèèèæèèèèâèèõþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷Z!!!!!!! ! ! ! !9s¥éüüýüýüûüýüýÿýüüýúýúýüúýüüýúýàÓ                                                                                                                                Ó×óúóúóúúúúúúúúúúúÿÿÿÿÿÿÿÿÿÿÿÿþÖ ~~~~~~}~~~~}~‘‘‘~‘‘¡‘~‘¡‘¡‘~‘¡¡¡‘~¡¡¡¡¡¦¡~‘¡¡¡¡‘¡¢¡¡¡¡‘¡¢¢£¡¡¡¡¢¡¢¢¢¢¡¡¢¡¡¢¢£¢¡¢£¡£¡¡¡¢¢¢¢£¢£¦¢¢¢£¦¦£¢¢¡££¢£åþÿÿÿÿÿꦣ£¦££££¢¡£«£¦£¡£¦££££££¦¦£££¦£¢¢£¦®¦£££¦¦£¦¦£¢¢££¦£¢¢£¦®¦¦£££¦®££££¦¦£¢££¦«££¢¢¦«¦£¢¢££££££¢£¢¡¢£¦¦£¢¢¢¢¦££¦£¡¡¡££££¡¡¡£¢¢¢¡¢¢¡¢¢¢£¢¢¡£££¡¡¡‘¡¢¡¡¡£¡¡‘¡¡¡¢¡¡¡¡¡¡¡‘‘¢¡¡¡¡¡‘¡‘¡¡~~‘¡¡¡¡‘¡¡‘¡¡‘‘~}~¡‘~~~~‘~~‘~~~}~‘~~~}}~~~}~‘‘‘¥žš§§¥§§§šš§š™™™¥™™‘™š™‘™‘™‘™‘‘‘‘‘€ÓûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷Z!!!!!!!!!!     =q¥ëüýúýúýüûüúýþþúýúýúüüüüüûüüüüæÓ                                                                                                                             ÓÔüúúúüúúóüóúúúúóüÿÿÿÿÿÿÿÿÿÿÿÿûÖ}~~~‘‘~~‘~~~¡‘¡¡‘~~~‘¡~~‘¡‘‘¡~‘¡‘‘¡‘‘¡‘¡¡‘‘¡¡~¡¡¡‘¡¡¡¡‘¡¡¢¢¡¡¡‘‘¡‘¡¡¢¡¡¡¡¡£¡¡¢¢¡¡¡¡¢¢£¢¡¢£¢¡¢£¢¡¢¡¢£¢££¢¢¡£££££Ýþÿÿÿÿÿ륡¢££¢¢££¢¦¦£££¡¢¦«¦¦£££¢££¢¢££££«¦¦®££¦¦£¢£¦¦£©¦¦®¦¢£¦¦£¦¦£¡¡£®££££¦®¦¦¦£¦¦¦¦£¢£¦£££¢¢££¡££¦¦¦£££££¢¡¡¡¢¢¢¢¢¡¢££££¢££¡¡¡¡¡¢‘¡¢¢£¡¡¡¢£¡¡¡¢¡¡¡¢¦¢¡¡££¡¡¡¡¡¡¡¡¡¡¡‘‘‘‘¡¢¢¡¡‘~¡‘¡¡‘¡¡¡~~~‘¡‘~~‘‘‘‘~¡¡¡‘‘~~~~‘¡¡‘‘~‘‘‘‘¡‘‘~~~~‘~}}}}~~~~}}}}~~~}}‘~}}}}}}}}~}}~}}}}}~}}r}}}}}}™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$! @óÿÿÿÿÿ÷]!!!!!!! !!  !!   =sªèýüýýýüýüýýýÿýüúüúüýúýüüüüüüýàÓ                                                                                             Ó×óúóúóúúüóúúóúúú÷ÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ~~~~~‘~~~~‘~~‘‘‘¡‘‘‘~~~‘‘¡¡‘‘~‘‘‘¡¡‘‘¡‘~‘¡‘~¡¢¡¡‘‘¡¡¡¡¡¡¢¡¡‘¡¡¡¡¡¡¢¢‘¡¡¡£¡¡¡¢¢¢¡¡¡¡£¢¡¢¦£¡¢¢¢¡¡¢¢¢£¢£¢¡¢¢¦£££åþÿÿÿÿÿ릡£££¢¢££££¦£¢¢¢£¦¦¦¦£¢££££££¦©££¦¦¦¦£££¢£££¦¦£©£¦®¦££¦¦£££¢¢££¦¦£££££¦®£¢£¦£££¢£¦¦¦£¡¢££¡¢«¦¦££££¢¢¢¢¢¢¢¡¡¢£¢¡£¢££¢¢££¡¡¡¢¢¡¡¡¢¦¢¡¦£¢¢¡¡¡£¡¡¦£¢¢¢¢¡¡¡¢¡‘¡¢¡‘¡‘‘‘¡¡¡¡¡¡¡‘‘‘‘‘¡‘¡‘¡‘¡‘‘‘‘~‘‘‘¡¡‘~‘‘‘‘‘¡‘¡¡~~¡‘‘¡¡~~~~~‘~}}~}}~~~}}s}}~‘}~~}}}}r}~}}~}}~~}}}}~}}}}p}}|}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿóZ!!!!!!!!!!! !!!!  !=}ªëüýúüüüüýüüýþýüüüüúüüüüûüüýüüàÓ                                                                             ×ÓúúúúúúóúúúúúúúúüÿÿÿÿÿÿþÿÿþÿÿûÖ~~‘¡¡~‘}~‘‘~~~~~~‘‘¡‘‘~~‘‘¡¡‘~‘¡¡¡‘¡¡~¡¡¡¡¡¡¡¡‘¡¡¡‘‘¡¡¡‘¡¡¡‘¢£¡‘¡¡¡¢¡¡¡‘¡¢¡¡¡¢¡¡¢¡¢£¡¡¢¦¢¡¢££¡¡¢¢£¢¢¢¡¢££££¢¢Úþÿÿÿÿÿꢡ¦®££¢££¡¢£¦««££££¡¢£££££¦¦£¦®£¡£££®¦¦£¡££¦¦££¦£¦®«£¦®«£££¦¦«¦£££¦¦£¢£¦£££££££¢££££¢£¦£¢¡¢££¢¢£¢¢£¢¢££¦¦££¦£¡¡¡¢££¡¡¡£¢¡¢£¢¢£¢¡¦¡¡‘¦¢¢¢¡¡¡¡‘‘£¡¡¡¡‘¡¡¢¡¡¡¦¡‘‘¡¡¡¡¡¡¡¡¢¡¡¡‘‘‘‘‘¡‘‘‘‘‘~‘¡¡‘‘~~~~¡¡‘¡~~~~~~}~‘~}}‘~}~~~~~~~~‘~}}}}‘}~~}‘~}}}}|}~}~~}|}}}}}}|}}}pp}|}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ !!!@÷ÿÿÿÿÿ÷Z!!!!!! !! !! !!  $q¥èýüýýýûüüüûýÿýúýüûýúýúüüýúýúýàÓ                                                                                      Ó×úóúóúúüóüóúúúúóüþÿÿÿÿÿÿÿÿÿÿÿûÖ}}‘‘‘¡‘~~‘‘~~}~‘~}~~¡‘‘~~‘¡¡~‘¡¡‘‘¡‘‘¡¡‘‘¡¡‘‘‘¡¡¢¡‘¡¡¡¡¡¢‘¡¢¡‘¡¡‘¡¢£¡‘¡¡¡¢¡¢¡¢£¡¡¡¡¡¢£¢¡¢¢¢¢¡¢£¢££¡¡¡¢¢££¢¢åþÿÿÿÿÿꥢ£££££££¢¢¢¦®¦£££¢¢¢££¡£¦«¦£££££¢¢£¦®®££¢¢¦®££¦£¦®¦££®¦££¦©££££¦¦£¦£¡£©£££¢£££¡¢£££££¦££¡¡¢¢££££¢£¢¢£££¦¦££¢¡¡¡££¡¢¡¡¡£¦¢¢£¡¢£¢¡¡¡¡¢¢¡¡¢¡¡¡‘‘¢¡¢¢‘¡¢¡¡¡¡¡¢¡¢¡¡¡¡¡¡¡‘‘‘‘¡¢¡¡¡¡‘¡¡‘‘¡~~‘¡‘‘¡¡¡‘‘~~~‘‘‘‘~~~~}~‘‘~}~~}~~~~~}~‘~~~~}}~‘}~}~~}}}~~}|}}}}~|s}}}~}r}}}}}}}r}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@óÿÿÿÿÿ÷Z!!!! !!!!!! !!   =sªíüýüúüüûýýüýþýýúúüúüüýúýúýüüüæÓ                                                                                         ÔÓúüúúúóúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ}~~~~~‘~}~‘~}~¡¡¡¡‘‘‘¡¡¡~‘‘‘‘¡¡‘‘¡¡~~‘‘‘¡¡¡¡¡¡¡¡¡‘¡£¡¡¡¡¡¡‘¡¡£¡¡¡¦¦¡¡££¡¡¢¡¢£¡¡¡¡¢¢¢¡¡‘¡¢¢¢¢¡¡¡¢¢¢¡¡¡¢¢¢¢¢££¢£Ýþÿÿÿÿÿ뫦¢£¦¦¦¦¢££¢¢£¢¡£¦£££££££¦¦££¢¢££££¦£¦®«¦¦£¦®£££¡¢££¢£££££¦«¢¡¢£¦«££££¦££££¦««£¡£££®¦¦££££¦££¦£££££¢¢¢¢¢¢¢¢£¦¦¦¦¢¢¢£££¡¢¦¡¡¡¡¡£¢‘¡¢¢£¡¡¡¢¢‘¡Ÿ¡¡¢£‘¢¢¢¡¡‘‘¡¡¢‘¡¡¡¡¡¡‘¡¢¡¡¡¡‘¡€‘‘¡¡‘‘¡¡‘‘¡‘‘‘~~‘‘‘~~~~~‘~~~~}~‘~~}~~‘¡¡~~}}~‘~}~~~}~¡}}~}}~}~~}}}~}s}}}}s|}}~}}}}}}}}~}}~~§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@÷ÿÿÿÿÿ÷Z!!!!!! !!!! !!   !qªèüüýýýýüúýúýÿýüüýüüüúüüüüüúýüàÓ                                                                                                Ó×óúóúúúúóüóüóúúúóÿÿÿþÿÿÿÿÿþÿÿûÖ~~~~~~~~~‘~~‘‘~~}¡¡¡‘‘‘¡‘‘‘‘‘¡¡‘‘‘‘‘¡¡‘¡¢¡‘‘¡¡¡¡¡¡£¡‘¡¡‘‘‘¢¢¢¡¡¦£¡¡¢£¡¡£¡££¡¡¡¢¢£¢¡¡‘¡¡¢¢¢¡¡¢¢¢¡¡¡¡¢¢¢¢¢¢¢££Ýþÿÿÿÿÿ릢¡£££¦¦££¦££¡¢¦£¦££¢££¢£®££££££¢¢£¦££«®£¦«©££¦¢££¢£¢££££¢¦¦¢¢£¢¦«£¢£¦£¢£¦¦¦«®£¢¢¢££¦££¦¦££££¦£¡¢¦£££¡¡¢¢¢¢£¦¦¦¦£¢££££¢¡£¡¡¡¡¡¢¡¡¡¡££¡‘¢¡¡¡¡‘¡¡¢¢‘¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘‘¡¡‘‘¡‘‘‘¡‘‘‘~~‘~}~~~~~~}‘‘~~~~}‘¡‘‘‘~}}~~~~}~}~~}}}}}}~~~}}~}|}}}}}}}~}}||}}}}}}~}}~§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@óÿÿÿÿÿ÷Z !!!!!!!!  !!! qªëûýúüúüýýýúýþýüúüûüüüûüüüüüüüæÓ                                                                                                ÓÓúúúúóúóüóúúúúúúüÿÿÿÿÿÿÿÿþÿÿÿûÖ}}~}~‘‘~‘¡‘~€‘‘‘‘~‘‘~~~~‘¡‘‘‘~~~‘‘¡¡‘¡¢¡¡¡¡¡‘~‘¡¡‘¡‘¡¡¡¡¢¡¡¡‘£¡¡¡¡¡‘¡‘¡¡¡¡¡¡¡¢¢¢£¢¢£¢¡¡¡£££¦¦¢££¢¢£¢¢¢£££åþÿÿÿÿÿꦢ££¢¡£«££¢¢¢¢£®¦£¦£¦££££¦£¦¦¦£¢£«££££££¢£¦¢¢¦¦£¦¦£¦£¢¡¢¢£«£££¦£©¦¢¢£¦¢¡£¦¢££¦¦£££¢£££¦«£¡¡¡£¦«¡¢£¢£¦¢¢££¢¡££¡¡¡¡¡£¡¡¢¦££¢¢¡¡¡¡¢¢¢£¡¢¡¡¦¦¢£¡¡¢¡¢¢¡¡¡¡¡¡¢¡¡¡‘‘¡¢¡‘¡‘¡¡‘‘‘¡‘‘‘~~¡¡¡‘‘‘‘~~~‘~~‘‘‘‘‘¡‘~‘‘‘‘~‘‘~‘‘~~}~¡‘}}~~}~~‘}}‘~~‘}}}~~|}}~~~}}}~‘~}}}}}}}}}}}}}}|}}}|}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@÷ÿÿÿÿÿ÷[!!!!!!!! !   !sªèüüýýýýúýúýýÿýúüüüúýúüúýúýúýúàÓ                                                                                                   Ó×úóúóüóüóüóúúúóúúþÿÿÿÿÿÿÿÿÿÿÿþÖ}~~~}‘‘¡‘‘~‘‘¡‘~}~‘‘~~}~~¡¢‘~~¡‘‘}~‘‘¡¡¡¡¡‘¡¡¡¡€¡¡‘‘¡‘‘‘¡¡¡¡£¡‘¡¡‘£¡¡¡¢¡¡¡¡‘‘‘¡¡¡¢£££¡£¦¢¡¡£££££¦¦£££¡¢££¢£££åþÿÿÿÿÿꦢ¢¢¡¡£¦£¢£££££££££««££££££®®££¡£®£¢£££¢¢££¢£¦££¦®¦£¢¢¢¢¢£¦£££¦¦¦£¢¢¦£¢££¢£££££¦¦£££££££££¡¡¡¦¦¢¢¢¡£¦£¢¦£¡¡¡¡¢¢¡¡¡¢¢£££¦££¦¡¡¡¡£¡££¡¢¡¡¡£¦¡¡¦¦¡¢¢¢¢¡¢¡¡¡¢¡¡¢‘¡¢¡‘¡¡‘¡‘¡‘‘~~¡¡¡‘~~‘~~¡‘‘‘‘‘¡‘‘¡‘~¡~~¡‘~~~~‘‘~}}~}}~~~¡}}}}}}}~~}}}~}}~}}}~~}}}}}}p}~}r}}vr}}}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@óÿÿÿÿÿ÷_$!!!!!! !!!  !=sªëýúýúýúýüýúüþýýúýúüüüýüúýüüüüæ×                                                                                ×ÖúúúúúúóúóúúüóüúüÿÿÿÿÿþÿÿþÿÿþûÖŸ~~~~~~~~~~~~‘~‘¡~}~~‘‘‘¡¡~¢¢¡¡¡‘¡¡¡¡¡‘‘‘¡¡~¡¡¡¡¡¡¡¢¢¡¡‘‘¡¢‘¡¡¡¡¡¡¡¡¢¡¡¢£¡¡¢¢¢¡¢¢¡¢¡¡¡£¢¡£¡¡¡¡¢££¢¢¡¡¢££¢¡¡Ýþÿÿÿÿÿꥣ££¢¡£££¢¢¢£¦£££££«¦¢¢¡¡¢¡¦¦£££¡¦££¦£¦¢£¦«¦££¢¦£££££¦¦¦£¢££££££££¢¢£¦££¢¢£¦¢¢¢£¦¦£¢¢¢¢¡££¦££¦£¡¢¢¡££¡£¦£¢¢¡¡¦¦¢¡¢¢¢£¡¡¢¡¢«£¡¢¡¡¡¡£¡¢£¡¡¢¡££¡¡¡¡¡¡¡¡‘¡‘¡£¡‘¡¡¡‘¡¡¡¡‘‘‘¡¡‘¡¡‘‘‘¡‘¡¡¡‘~~‘¡‘~¡¡~‘~~~‘‘‘‘‘~}}¡‘~~~}~~‘‘‘~~}~~}}~~‘~}}~}~~~}}}~~}}}~}}}~~}|}}}}}}}}}rvvšûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!! @óÿÿÿÿÿ÷Z!!!!!! ! !!!  ! pªèýýüýüýüýúýýÿýúüúýúýúüúüüúýúýàÓ                                                                                         Ó×óúóúóúúúüóúóúúóúþÿÿÿÿÿÿÿÿÿÿÿûÖ‘~~‘‘~~~~~‘~~~~~‘‘‘‘~}~‘‘‘¡¡‘‘¡¡¡¡¡¡¡¡¡‘‘‘¡‘‘‘¡¡‘¢¢¢¡¡£¦¢¡¢‘¡¡¡¡¡¡‘¡¡‘¡¡£££¡¡¡¢¢¡¢¢¢¢¡¡¡¡¢¢¢¡¡¡¡‘¡¢¢£¢¢¢¢¡¢¡¡£¡¡Ýþÿÿÿÿÿ륢£££¢¢¢£¢¢££££¢£££££¦£¡¡¡¡£¢¦££¢¦££¦¦£¢¦®®©¦¢¡£¦£®££¦¦®£¢£¦£¦££££¢¡£¦££¢¢£££¢£¦¦¦££¢£¢¡¡£¦£££££¢¡£¡¡¡£¦¢¢¢¢¢¢¦££¡¡££¡¡¢¡¢¢£££¡¡£¡¢¡¡£¡¡¢‘‘¡¢¢¡¡¡¡¢¡¡¡‘‘¡¡¡‘‘¡¡‘‘¡¡¡¡‘‘¡¡‘‘¡¡¡~~‘‘¡¡‘~‘¡¡¡‘‘¡~}~‘~~}~‘¡‘‘¡‘~~~~}~}~‘‘¡~}~}}}}~¡}}}}~}}~}}~}}p}~}r}}~}}r}}}}}}}|p}}žûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–!!!@úÿÿÿÿÿóY! !!!!!!!!!    9q¥èýúýúýüûüýúüþýýúýúýúýúýýúýúüüàÓ                                                       ×ÓúúúúúóüóóúúúúúúüÿÿÿÿÿÿþÿÿÿÿÿûÖ‘‘€‘~}}~~‘~~~‘‘~‘‘‘‘‘‘¡‘}~~‘‘¡‘¡‘‘¡¡‘‘¡€¡¡¡‘¡¡‘¡¡¡¡‘¡‘¡¡¡¡¡¢¡¡¡¡¡¡¡‘¡¢¡¡¢£¡¡¡‘¡¢¡¡¡¡£¢¡¡¡£¢¢¢¢££¢¡¢£¢¡¡Öûÿÿÿÿÿõ°£££¢££¢£££¦£££¢¢£¢¡£®¦¡££££¢¦¦£¡£¦«¦£¢¦££¦£¦£¡£££¦££¦££¢£¦£££¢¢£¦££¦«¦££¡£££££££¢¢¢££¢¡£££££¡¢¦¦¢¢¢£¢¡¡¡££¢¢¢¡¢£¡‘¡¢¡¢¡¡¡¡¢£¡‘¡¢¡¡£¡¡¡¡¡¢¢¡¡¡¡‘¡‘¡¢¡¡¡¡¡¡¡¡¡¡¢¡¡¡‘¡¡¡‘‘‘¡¡¡‘‘¡¡¡‘‘¡‘‘~‘‘¡¡‘~¡¡‘~~‘‘~~~‘‘~~~~‘~~~}}~~}}~~}}~~~}~}}~~~~}~}~}}~}}}}}}}}p}}}p}r}w}~|||}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx!=!Zÿÿÿÿÿÿò!!!!!!!!! !!! ! q¥éüýýýúýüýúýýÿýúüúüúýúýúúýúýúýàÓ                                                                                                                     Ó×úóúúóúúúüóüóúúó÷ÿÿÿÿÿÿÿÿÿþÿÿûÖ}}‘~~~}}~‘‘~~‘‘‘¡‘‘‘¡‘~~}~~~‘~¡¡‘~¡¡¡¡~‘‘‘¡‘‘¡‘~‘¡‘‘¡¡¡‘¡¢¢£¢¦¡¡¡¡¡¡¡¡¡¢¢¡¡¢¡¡¡¡£¢¡¡¡¡££¢¡¡¢¡¢¢¢¢£¡¢£¢£¡¡­ûÿÿÿÿÿö­¢£££££¡£££¦¦££¡¢¦£¡£«£££¦££¢£¦£¢££®££¦£££££¦¦££¡¢¦£¢£¢£¦®®£¡¢££££¦£¦¦£££¡££££££¡¡¡¡¢££¡£®££¢¡¡££££¡££¡¡¡¢£££¡¢¢¢¡¡¡¢¡¢¡¡¡‘¡¢¡¡‘¡‘¡£¡‘¡¢¡£¢¡¡¡¡¡¡¡¡¡‘‘¡¢¡¡‘¡‘¡¡¡¢¢‘‘¡‘¡¡¡¡¡¡¡~~~‘¡¡¡‘¡‘‘~~¡¡‘¡‘‘¡¡‘‘~‘‘~~~~~€~}‘~~~~~}}}}}~~}}‘‘~}}}~‘~}~~~}~~}}}~~}s}|}}}r}}}}|r}}}|s}|žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_!!!!Zÿÿÿÿÿÿñ!!!!!!!  !!!!!     qšëúýúüýüýúýúüþýýúýúüúýúüýúüüüüæÓ                                                                                                                  ÓÓ÷üóúúúóúóúóüúóüüÿÿÿþÿÿþÿþÿÿÿúÖŽŽ~~~~~~~}~‘‘~‘‘‘~~‘‘‘¡‘~~‘‘~~‘¡~‘‘¡¢¡‘‘‘‘¡‘‘¡‘¡‘¡¡~¡¡¡‘¡‘¡¢¡¡¢¡¡¡¡‘¡‘‘¡¡¡¡¡¡¡¡¡¡¢¡¡£¢£¢¡¡£¢¡¡¢¢¦¦¡¢¡¢¦¦¢¡¢¢­øÿÿÿÿÿû­¢££¢¡¢¢£¦£¦£¢¢¡¡¦£¢£££££££££¦££¦£¡¦££¦£¢£¡£££¦¦¢£®¦¢£¢£¦££¦¢¡£¦£¡££££££¢¢£¦££¢¡£££££¦££¢££¡¢¡£¦£££¡¡££¢¢££¢¢££¢¡¢¡£¦£¢¡¢¡¡¡¡¢££¢¢¡¡¡¢£¢¡¢¡¡¡‘¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡~‘¡¡¢¡~‘¡¢¡‘‘‘¡‘¡‘¡‘‘¡¡‘‘~‘‘~~‘‘‘¡~¡~~~~~~~‘~‘~~}~~‘~‘~~}}~‘~}~~}~}}~~}~~}}}}~~}}}}~~}}}r}~}|}~}}|v}}}}}pšúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýB!!!!xÿÿÿÿÿÿá!!!!! !! !!! ! !!qªéýüýýúüüüüýýÿýúüúýúýüýúýúýúýúàÓ                                                                                                   Ó×úóúúóúúúúúúóúúóúþÿÿÿÿÿÿÿÿÿÿÿûÖŽ~}~}}}~~~}~‘‘~‘¡‘‘‘‘~~‘~~‘€‘¡~~~~~‘¡‘~‘¡¡¢¡‘‘¡¡¡‘¡¡~‘¡¡¡¢‘‘¡¡¡¢¡¡¢¡¡¡‘‘‘¡¡¡‘¡¡¡¡¡¢££¡¡¡£¦¦¡¡¡¢¡¡¡¢¦¦¢¡¡£££¢£¢£­õÿÿÿÿÿûÔ£££¡¡¡¢££¦££¢¢¡¡¢£¢¢¦¢¡¢£££££¢£¦£¡¦£¦®££¢¡¢£¡£®¦£¦££¢¢£¦£¡£¢¢¢££¢£¦££¢¡¢¡¦®¦££¡¡¢¦¦¦¦¦¦£¡¡¡¡¢£££¢£¦¢¡££££¢££¢£¢¢¢¢£¢£¢¡¢¡¡¡¡¢££¦¢‘¢¦¢¡¡¡¡¢¡¡¢¡‘¡¢¢¡¡¢¡¡¡¡¡‘‘¡¡¡¡¡¡¡¡‘~¡‘‘¡¡¡‘‘~‘¡~‘‘‘¡¡~‘‘¡‘~~~~~~~~~‘~}~‘‘~}}‘¡~~~~~}}~}}}~}}~~}~~~}|}}~~~~}}}}}}}}~}}}~~}vr}}s}}p™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý!!!!!‚ÿÿÿÿÿÿÏ!!!!!!!!! !!!  =q¥èúýüüýûýúýúüþýýúüúüúúúýüüúüüüæ×                                                                                                                  ÓØúúúóúúóúóúóüóúúüÿÿÿÿÿÿÿÿÿÿþÿûÖs}~~~~~‘~‘‘‘~}~‘~}~‘‘‘¡‘‘‘‘¡¡‘‘¡‘‘¡‘~‘¡¡¡¡‘‘‘¡¡¡‘¡‘¡¡‘¢¡¡¡¡¡¡‘‘‘¡¡¢¡¢¡¡¡¢¡¡¡¡¡¡¡¢¡¡¡‘¡¢¢¡¢¢¢¢¢¡¡££¡¡¢¢¡¡¢¢¡¡¦íÿÿÿÿÿþÝ«££¢¡¢£££¢£¢££¦¦£££¡¦¦¢¢££¢¢££¦®¢¡£££®££¢¡£¦£££¦££¦¦££¢¦¦¢£¦¦£¢££££¢¢£££££¦£££££¢¢£¢¢£££¡¡£££¢¢¢¢¢¦¦¢¢¡¡¢¡£¢££¡¡¡¡¢¡¢¡¢¢¢¢¡¡¢£¡££‘¡¦£¡¡¡¡¡¡¡¡¡¢‘¢¡¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¢¡¡‘‘¡¡~¡¡¡‘¡¡~~‘‘¡‘~~‘~~‘‘‘‘~~~~‘‘‘~~‘}~~}‘~}‘}}~~~‘}}}~~~~}}}}}}s}}}}}}}}r}}}s}~}}}}}}}v}}}}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ!!!!!–ÿÿÿÿÿÿÈ!!!!!!! !!  !!! =q¥éüüýûüüúýüüýÿýúüýúýüýüúüüüüûüàÓ                                                                                                                    ÓÓóóúúóüóúúúúóúúóúþÿÿÿþÿÿþÿÿÿÿûÖ}}}}~~‘~‘‘~}~~~‘‘‘‘¡¡‘~~‘¡‘¡¢¡‘‘‘‘‘‘¡¡¡‘¡¡¡‘‘‘‘¡¢¢¡‘¡¢¡~‘‘¡¢¡¡¡££¢£¢¡¡¢¢‘¡£¢¡‘‘¡¡¡£¡¡¢£¢££¡¡¡¡¢£¡¡¡¡¡¡¡¡¢ëÿÿÿÿÿÿꦦ¦£¡£«¦¢¢£¡¢¦¦¦£££¡¡£¦¢¢¢¢¢££¦¦£¡¢¡£«¦£¢¢£¦¦¢££¦¦£¦£¢££¦¦¦£££¡¢£££££££¦¦££££¦¦£¢¢¢¡¡¡£££¡¡£££¢¢¡¢££¢¢¢¢¡¡¢¢¡¢¢¢¡¡¡¡¡¡¡¢¢££££¢¡¡¢¡¢¢¡¡¡¡£¡‘¡¡‘¡‘¡¢¦¡¡¡‘‘¡¢¡¡¡¡¡¡¡¡¡‘~‘‘¡‘‘¡¢¡¡¡‘¡¡‘~¡¡~~~~~‘~~}~¡¡¡‘~}‘‘‘~~~}‘~~¡‘}~‘‘~}}}}}}~~~~}}}~}}}}}}r}}~~}}s}}}~}r}}|}~}pp}}~}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!@ÌÿÿÿÿÿüÆ!!!!!!!! !!!!   !q¥ëýúüýúýüüýúüþýüúúüúúúúüüûúüüüæÓ                                                                                                                         Ó×úúúóúóúúúóúüóúúüÿÿÿþÿÿÿÿÿÿþÿûÖ~~~~~~~~~}~~~~~~~~~~~‘‘‘¡~¡¡‘¡¡¡‘~~‘¡¡‘¡‘¡‘~¡¢¡¡¡~‘¢¡‘¡¡¡¡¡~¡¡¡¢¢¢¡¡¡£¡‘¢¦¡‘¡¢¢£¡¡¡£¡¡¡¢¢¢¢¡¡¡¡££¡¡¢£¢£¡¡¡Ýþÿÿÿÿÿõ­££¢¡£££¡¢¦£¡¢££££££¡£¦¦££££¢£££¢££¢£££¢£¦£¦£¢£¢£¢£¦¦££¡¢££¢¢££¦¦£££££££¦¢¡¢¢£¦¢¡££££¢¢£££¢¢££¡¢¢¢¡£¢¢¢¢¡¡¢£¢¢¢£¡¡¡£¢¡¢¢¢¡¡¡¡¡¡£¡¡¡¡¡¡¡¡¡‘‘££¡¡¡‘¡£¡‘¡¡¡¢¡‘¡¡¡‘‘¡¡¡¡~~‘‘¡¡¡‘¡¡~~¡¡‘‘~‘‘~~‘¡~~~‘¡‘~~‘‘~~‘~~~~}}‘‘}~‘‘}~}}‘‘~~}}}~~}~}}}¡~p}}}~~}}}}}|}~}}}s}}|r}|}}s|žûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ!!!!Cóÿÿÿÿÿüƒ!!!! !!  !!!!! !q¥èüýýúýüüûüüýÿýúüüúüüüýúýüýúýúàÓ                                                                                                        ÓÓúóóúúóúóúúóúúúóüþÿÿÿÿÿÿþÿÿÿÿûÖ~¡~}‘‘~~~~}}}}~~~~~~~~~}~~~~}¡¡~~~‘¡¡‘‘~~‘¡¡‘‘‘¡¡‘‘¡‘¡¡~~¡¢‘¡£¡‘~¡¢¡¡¡¡¡¡¡¡¡¡£¦¡¡£¦¦££¢£¢¡¡¢¢¢££¢‘¡¡¢¢¡¡¦«¦£¡¡¡­ûÿÿÿÿÿýÔ¡¢£¡¡¢¢¡¢«¢¡¡¡¡¡¡¢£££®¦¦¦££¢¢£¡¢«£¢¦£¡¡¢¦¦«¢¢¢¡¡¢¢¦£¡¢¡££¢¡¡¢£¦¦££¦¦£¢£¦££¡¡££¢¢¢¦¦££¡¡£££¢¢££££¡¡¢¢¡¡¡¡¢¦¦¦¡¡£¢¡¡£££££¡‘¡¡‘‘£¢¡¡¡¢¢¢¡¡‘¡££¡¡¡‘¡¡‘‘‘¡‘‘¡‘¡¡~¡¢¡¡¡‘¡‘‘¡¡~~~~}~~‘¡‘‘¡¡‘‘‘¡¡}~}¡~‘‘~}~‘~~}}}}~~~‘~}~~~‘~}}}~}~}}~}}}}}}}}}~}|}}~~}}}s}}}}}}}v|žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó!!!!xÿÿÿÿÿÿ÷Y!!!!!!!!!!! =qªëüúüüúýüüüüüþýüûúúýúúúüúúüüüüæÓ                                                                                               Ó×úúúóúúúúúóüóúóüúÿÿÿÿþÿþÿÿÿþÿûÖ  ~}‘}~‘~~~~~‘€~}~~¡‘~~‘‘~~¡¡~~‘‘‘‘¡¡‘¡~¡¡‘¡¡¡‘¡¡¡¡¡~¡£¡‘¡¡¡¡¡‘¡‘‘¡¢¡¡¡¡¡¡¡¡¢£¡¡¡¡¡¢¢¢¡¡¢¡¢¡¢¢¢££¡¡£¦¡¢¢¡¢¦íÿÿÿÿÿÿÝ¢¡¢£¢£¢¡£¦£¢¢¢£¢££££¢£££££¦¡¡£¡¦®¢¡£«£¢£££¦¦££¡¢££«¦¢£££¢£££££¢£¢¢£¢¢£££££¢¡£££¢¢¢¢¢¢¢¢¢£££¢¢££££¡¢¡¡££¢¢¢£¡¡¢¢¡¢¡¢¢¡¢£¢¡¡¦¡¡¡¡¡¡¢¡¡¢¢‘¡‘¡¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡¡‘¡¡‘~‘¡¡‘¡‘¡¡¡‘‘‘‘‘¡‘‘‘‘‘‘‘~‘‘‘‘~~}~‘‘‘~~~~‘~~~~~~~~~‘~~~}~}~~~}}~~}~~}}~~}~|}}}}}~}}r}}}}|v}}}}}}}}|pžûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ!!!!!Æÿÿÿÿÿÿá!!!!!!!!!!  !q¥èýüýûýúýúýûýÿýúüúýúýüýúýúýúüúàÓ                                                                                                            ÓÓóúóúóúóúóúóúúúóüþÿÿÿÿÿÿÿþÿÿÿûÖ¢¡}}}~~~~~~‘¡¡¡‘}}~€¡¡¡‘‘‘¡‘‘‘~‘¡‘~‘¡¡‘‘‘¡¡~¡¡‘~‘¡‘‘¡~¡£¡‘¢¢¡‘‘¡¡¢¢¢¡£¡‘‘¡¡¡¢¡¡¡¢££¢¡¡¢£¡¡£¦¦¦¢‘¡¢¢¡¡£¢¢¡åþÿÿÿÿÿõ¬¡¢¢£¢¢¡¡¦¦¢¢£¦¦¦£££¡¡¡¢£¢¦££££¦¦£¢£¦©£¦£¡¦«¦¢¡¢¦£¦¦£¦«¦£££¦¦¢¡¡¢¡¢¢¡¢££¦£¡¡¡¡¡££¡¡¡¢¦££¢¢¢£¡¢¢¡¢¡¢£¢£££¡¡¡¡¡¢¡¡¡¢¢¢¡¡£¢¡¢«¦¢£¡¢¡¡¡¡¡¢‘¡‘¡‘‘¡¡¢¡‘¢¢¢¢¢‘‘¡¡~‘‘~¡¢¡‘~¡¡‘¡¡‘‘¡¡¡¡~}~‘‘‘~~~¡¡¡‘‘¡‘~‘‘‘‘}~}~~~‘~~~}~~~}}}}~~~~}}~€}}}sp}}‘~}}||p}r}}}}}wrvr}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ_$!!!@áÿÿÿÿÿýÅ!!!!!!! !!!!!!!! !! ! qšëýúüüúýúýúüüþýüúýúúúúúýúüúüüüæÓ                                                                                                          Ó×úóúúúóúúúúúóúóúúÿÿÿÿþÿÿÿÿÿÿþûÖŸ~~~~~~~~~‘~}‘‘~~‘‘‘‘‘~~¡‘‘‘‘‘‘‘‘‘¡~¡¢‘~‘¢‘‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡¢‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¡¢¡¡¡¡¢¡¡¡¦£££¡¡££¡¡£¦¡¡ÔûÿÿÿÿÿÿÚ¢¢¢¢¢£¦££¢¡¢££££¢£££¡¢£££¢£££££¢£¦¢¡£¢£¢£¦££¢¢¢¦££¦££¦¦¢£¢£££¢¡£¢£¦¢£¢¡£¦££¢¡£¦££¢¡¢££££¡¢¢¢££¢¢¢¢¢¢££¡¡¡¡¢£¡¡¡¢¡¡¡¡¡¡¡¡¡£¢¡¡¡¡¡¢‘¡¡¡¡¡‘¡¡¡¢£‘¡¡‘‘¡¡¡¡¡¢¡‘¡‘¡¡‘~¡¡‘¡‘¡¡¡‘‘¡‘‘‘¡‘‘‘¡‘‘‘‘~~~‘‘~~~~~~~~~‘‘~~~~}~~~~~~}~}~}}~}~}~}}}~}}}¡~}}|}}}~~}}}}}}}}||}}r}}}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ=!!!!Yýÿÿÿÿÿ÷[!!!!!!!!!! !!=}’éúýüýüüýüüýýþýüúúüüýýüúüúýúûüàÓ                                                                                                           ÓÓúúó÷óúúóúóúúúúúúþÿÿÿÿÿþÿþÿÿÿûÖ}‘‘~}}}~~‘‘}~~}~‘‘‘‘~~¡~}~‘¡‘~~‘¢¡‘~¡‘‘¡‘¡¡¡~~¡¡¡¡¢‘~¡££¡~‘¡¢¡¡¡¡¡‘‘¡‘‘¡¡¢¦£¡¡¡¡¢¡¡¢¢¡‘¡¡‘¡¡¡‘¡¦£¡¢¢¢£¢¡¡££¢£­öÿÿÿÿÿÿö­¢¢££¢££¢¡¡¢¦¦£££¢¢¦¦£¦££¡¢£££¡¡¢¦£¢¡¡£¡£¦¡¡¢¢¢£¦®¦£¡¢£££¢¢££¢¡£¢¡¢¢¢¢¡£«¦£££¦¦¦££¢£¦¦¦¦¦¦¦£¦£¡¢¢¢¢£¦¦¡¡¡¡£¢¡¡¢¡¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¢¡¡¡‘¡¡¡¢¢¦¢¡‘¡£¢¡¢‘‘¡¢¡¡‘¡‘¢¡‘¡¡¡¡‘~~‘¡¡‘~‘‘‘~~¡‘‘‘~}~~‘‘‘~~~}}}}}~}}~}~~}~~}}~}}~~}s}~‘¡}s}}}~}~~~~}}}r}}p}}s|rp}}||}}}}|v}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüZ!!!!!–ÿÿÿÿÿÿñ!!!!!!!!!!!!    =s¥éüüüúýúýúýúýþýúüüúúúúúüüüúüüüàÓ                                                                                                     ÓÓúóúúúóúúóúúóúúóüÿÿÿÿÿþÿÿÿÿþÿûÖ~~~~~~~~~‘~}~¡‘~~~‘‘‘}~~~‘¡¡~¡¡‘‘~~¡‘‘¡‘¡‘¡‘‘‘¡¡¡~¡¡¡¢¡‘¡‘¡¡¡¡¡¡¡¡‘¢¢¡‘¡£¡‘¡¢¡¡¡¡¡¡¡¢¡¡¡£¢¡¡¢¡¡¡££¡¡¡¡¢¢¡¡££¡¡¦åþÿÿÿÿÿÿÚ¦¦¢¢¢¢¢¡¢¦£££¡¢¦¦¢¢¢¢¢¢£¢££££¡¡£¦£¦¢¡£¡£®£¡£¦£¡££££¢££££¡£££¢¡£¦¢£¢£¢¡£«£¢£££¢¢¢¢¢¢¢¢¢££¢¢£££¡¡¢¢¡¡££¢¢¡¡£¦¡¡¢£¢£¡¡¡¢¡‘¡¡¡¡¡£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡¡‘¡¡¡‘¡¡‘‘‘¡‘‘‘‘¡¡‘‘‘~‘~¡‘‘‘~‘‘‘~~~¡~~}~~~~~}~~~}~‘‘}}~~}~~‘}}~}~}~}~}}}}~}}}~}~~|}}}}}}}}}}}sv}~}}}v}ržúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ!!!$!@òÿÿÿÿÿþÈ!!!!!!!!! !!!!=qªëúýûüüýüýúýýýýüúúüüüüüúûüüúüúæÓ                                                                                                                  Ó×÷úóúóúúóüóúúóúúúþÿþÿÿÿÿþÿÿÿÿûÖ~~~‘~~}}~~}~‘¡¡¡‘~¡¢¡¡~~~‘¡‘¡¡‘¡‘~¡¡¡~~‘‘‘¡¡‘~¡‘‘‘¡¡‘¡¡£¡¡¡‘‘‘‘¡£¢¡¡¢¢‘‘‘¡¡¡¡¡¢¡‘¢££¡¡¡¢¡¡¢¢¢¢¢¢¢¦£¡££¡¡¢¦íÿÿÿÿÿÿûܦ¢£¢£¦¦«®¦¢¡¡¢¦£¡¡¡¢¢£¦£¦£¡£¢¡£¦£¦£¡¡¡¡£¡¡¦«¦£¡£¡¡¡£¡££¡¡¢£¢¡¢¦««¦££¡¡¢¡¡££¡¡¢£¡¡¡¢¢¢¢¡¡¡¢£¦£¢¢¢¡¡¡¡¢££¡¢£¢¢¦££¢¡¢¢¢¡¡¢¡¡¡¡¡¢¡¡¢¡¡££¢¡¡¡¡¡¡‘¡¡‘~¡£¡¡‘¡‘‘¡¡¡¡¡¡‘~~‘‘~‘‘‘¡¡¡~‘¡‘‘~~~‘€‘‘¡‘}‘¡¡‘~}~‘¡‘~}~~}~‘‘}s}~~}}~~}}}}}}}s}}||~}r}~}}}|~~~|p}}}~}}}pp}~~}}}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Z !!=ƒÿÿÿÿÿÿü !!!! !!!! !!  !!pšèýúüüüúýúýúüÿýúüüûúúûúüüûúüüüàÓ                                                                                                                                                                                             ××ú÷úóúó÷úóúóúúúóüÿÿÿÿÿþÿÿÿþÿþûÖ~~}~~~~~}}~‘~~~‘‘‘~~~‘‘‘‘~~~‘‘‘‘‘¡¡‘‘‘‘‘¡‘~‘‘¡¡‘‘¡‘¢¡¡‘‘¡¡¡¡¡‘‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡¢¡¢¡¡¡£¢¡¡¢¡¡¡¡¢¢¢¢¢¡¡¢¢¡¡¡£Úýÿÿÿÿÿÿõ«¢¢¢£¢££¢¢¡££££¢¢¢¢£¡££££¦¡¢£¢£¢£¢£¦¢£¢¡£¡£®£¢£££¡¢¢¢¦¦¢£¡¢¢¢££¦¦£¢¢¢¢¡¢£££¡¡¢¦£¡¢££¡¢£¢¡¡¢¢££££¡¡¢¢¡¡££¡¡¢¢¢¡¢¡£¦¢¢¡‘¡¡¡£¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¢¡‘¡¡‘‘‘¡¡¡¡¡¡‘¡‘‘¡¡¡¡¡‘¡‘‘‘¡‘‘‘~‘‘‘¡‘€‘‘~~~~‘‘~~~‘‘‘~}~¡‘~~~~}}‘‘}~}~~‘}}~~}}~~}}}~~|}s}‘}|}}}}}}}}}}}}~}}}}}}p}}}}p}}žûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ‚!!!!!@òÿÿÿÿÿÿç9 !!!!!!!!!!! !  =s¥ëüýüýûüüüüüýþýüúúüúýúýúúüüúýúæÓ                                                                                                                                                                                   ÓÓóúóúóúúóúóúóúóúóÿÿþÿÿÿþÿÿÿÿÿûÕ~}}~‘‘‘}~‘¡~~~~}}~~}~~~~~~~~~~~~}‘~~~~‘¢¢~~‘‘~¡~‘¡£‘¡¡¡¡¡¡¡‘¢¢¡¡‘‘¡¡¢££¢¢¡¡¢¡¡¡¢£¢¢¡‘¡£¦¢¡¡£¡‘¡¡¢¡¡¡¡££¢¡¡£¢¦íÿÿÿÿÿÿÿë«££¢¢¢¢¡£¡¡¡¢¢¢££££¢¡¡¡¡¦¦¡¡£¡¡¢£¦«¦¦¦¢£¢¢¦¦£¡££¢£¦£££¢¢¡¡£¢£¡¡¢¢¡£¦««¦¦£££¡¡¦£¢¦¦£¡¡¢¦£¢¡¡££¢¡¡¦£¡¡¡£¢¡¢¡¡¡£¢¡£¡¡£¡¡¡¡¢¢££¢¡¢¢¡¡‘¡¡‘¡¡¡¢¢¢¡¡£¡‘¡¡‘¡‘¡¡¡¡‘‘‘¡¢¢¡‘‘‘¡¡‘¡¡¢¢‘~~~~~~¡‘~‘¡~}~~‘‘~~‘~~~}}}}‘~~~~}‘‘}}}~}~~‘~}~}}~}~}}}|}}}}rp}}}~}}}}}v}}pp}||}}™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!!!!–ÿÿÿÿÿÿü‚ !! !!!!!! !!   ! !  =sªèüúýúüüüüûúýþýûúýúüúüúüüúúüúüàÓ                                                                                                                                                                   Ó×úóúúúóúúóúóüóüúüÿÿÿÿÿþÿÿþÿÿþûÖ~~~~‘‘~~~}~~}~‘~~~~~‘~~~~~‘~~¡‘~~‘‘‘‘~~¡¢~¡¡‘¡‘~‘¡¡¡¡~¡¡¡‘‘¡¡¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡£¢¡¢¡¡¢¢¡¡¡¡¡¡¡¢¢¢¡¡¢££¢¡¡££¡Ôûÿÿÿÿÿÿÿݦ¢¢¢¢¢¢¢£¢¡¢¢¢££¢¢££¡¢¢¢£££¦¡¡£¦£¦¢¢£¢£££££¢¢££¡¢«¦¡¢¢¢£¢¢¡££¡¡¢¢£££¦£¡¢¢¢¢£¦£¡¢£¢£¢¢¢£¢¡¡££¡¡¡¡££¡‘££¡¡¡¡¡¡£¡¡¢¡¡¢¦¢¡¡‘¡¦¡¡¡¡¡¢¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡‘‘¡¡¡¡¡~‘‘¡¡¡¡¡‘‘‘‘¡¡¡‘‘‘‘~~‘¡~~‘~~‘~~¡~~~~}~‘}~~~}~~~}~~~~}}}~~~~}}‘}}}}~~}~}r}}}~}}}}~}}}|}}rv}}}}|v}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ=!!!!@òÿÿÿÿÿÿá!!!!!!!!!!!! !!  !pªíûüüüýüûüüýýýýúüúüúüúýúûüüüüúæÓ                                                                                                                                                                              ÓÓóúóóúóúóúóú÷úóóúþÿþÿÿÿþÿÿþÿÿûÖŸ}}}}}~~~~‘‘~}}}~~}}~¡¡¡~}‘¡‘‘~~~¡¡‘¡¡‘‘‘¡¡‘~¡¢‘~‘¡¡¡¡‘¡¡‘‘¡¡~¡¡~‘~¡¢‘¡¡£¦¦££¡¡‘‘¡¡¡£¡¡¡¡¡¡¡¡£¦£¡¡¡¡¢¡¢£¡¢£¢¢£¢¢£¡¡¡¡¡¥ëþÿÿÿÿÿÿþÚ¢¡¡¢£¢¡¡££¡¡¡¢£¡¡¡¦££¢¡££«©¡¡¡££®££¦£¢¡¡¡¡¡¢£¢¡¢®¦¡¢£¡¢££¢£¦¦££¢¡¢¡¢¢¡£¡¡¢£¦¢¡¡¢¢¢¡¡¡¢£¡¡¢¢¡£¢¡¢¢¡¢££¢¡¡££¡¡£¢¡¡£¡¡£¡¡¡¡¡¢¡¡¡‘¡¡¡£¡¡£‘¡£¢‘~¡¡¡~¡¡¡¡¢¡¡¡‘‘~~~~¡¡‘‘~~¡‘‘‘~}~~~‘¡‘~~~~}}~}}}}‘‘~}~‘~‘‘~}~~~}}‘‘‘~}‘‘~}}}~~}~‘}}}}}~~}}~}}~}}}}}r~}}s}vr}}}}}rv}§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç@!!!!!!Æÿÿÿÿÿÿüx!!!!!!!!!!!!!   9qªèüüýúýúýúýúüÿýúúúüúüúüúüûúýúüàÓ                                                                                                                                                                                         ÙÓúóúúóúúúóúúóúúúüÿÿÿÿþÿÿÿÿþÿÿúÖ}~}~~~~}~~~~~‘~~~}~‘‘‘~~¡¡~~‘~~¡¡‘¡~~¡¡€~¡¡‘~‘¡¡‘¡¡¡‘~¡¡¡‘¡‘¡¡~¡¡‘¡¡¢¢¡¡¡¡¡¡¡¢¡¡¡‘¡¦¡¡¢¡¡¡¡¡¡¡¡¡£¢¡¡¡¡¢¢¡¢¢¡¡¡¢¢¢¡¡¡¦õÿÿÿÿÿÿÿþÝ¥¡¡££¢¡¡«¢¡¡¡¡£¢££££¡¢£££££¢¢¢£££££¦£¡¡££££¢£¡¢¦£¡¡££££¢£¢¡£££¢¢¢¢¢¢££¢¡¡££¢¢¢¢¢¡¢¢¢£¢¡¡¢¡¡¢¢¢¡¡¡¡¡¡¢¢¡¡¢¡¡‘¢¢¡¡¡¢¡¡¡¢¡¡¡‘¡£¡‘¡‘‘¡¡¡¡¡‘¡‘¡£¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘~~¡¡¡¡‘‘~‘‘~‘‘~‘¡‘~‘~}‘¡‘~}~~‘}}‘}~¡}}‘~}}‘~~~}}~}}}‘}}}~}|}}}}}~~~|}~~pr}}}}}}}}}v}}}}|p}}§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ@!!!!!@‚þÿÿÿÿÿÿÏ!!!!!!! !!!! !qªéýûüýúýúýúýüþýüúýúüúüúüúýúúüúæÓ                                                                                                                                                                        Ó×óúóóúóúóúúóóúóóóÿþÿÿÿþÿþÿÿÿÿûÖ~}~‘~}}}}~}}‘‘‘~}‘‘~~~‘~~}}‘~~‘¡¡‘‘~‘¢¢~~‘¡¡¡¡‘~‘‘‘¡¡‘¡~‘‘¢¦¡‘¡‘¡¡~‘¡¡‘¡£¡‘‘~¡££¡£¢¡‘‘¡¡¡¢££¡¡¡¢¢££¢¡¡¡¡¡¡¡¡£¢¢¡¡­ûÿÿÿÿÿÿÿÿê«¢¡¢¡¡¡¦«««£¢££££££¢¡¡¡¢¡¡¦¦£¢¢¡¢¢£¦¦¦¢¡¢££¡¡¡¢¦¢¡£¦«©££¢££¢¢£¦¦¦¦££¡¢££¡¡¡¡¡¢¢¡¡¡¡¢¡¢££¢¢¢££££¡¡¡‘¡¢¡‘££¡¢¢¡¡¡¡¢¡‘¢¦£¡¡¡¡££¢¡‘¡¢¡‘¡¢¡¢¡¡¡‘~‘‘‘¡¡¡~‘¡‘‘¡¡~~~~‘¡¡¡~‘¡¡~‘‘¡‘~‘}~¡‘¡¡‘‘¡¡‘~}~~~~‘}}~~}}}}}}~‘~~~}~~}||}~s}}}}}|}}}}}}}}}vvp}~}|}r|}}}}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ@!!!!]üÿÿÿÿÿÿü]!!! ! !!!!!!! !! !!!    !  !p’èüüüüüüüúýúýþýúúúûúýúüúúüúýúüàÓ                                                                                                                                                               ÓÓúóúúóúóúóúúúúúúüÿÿÿÿþÿÿÿÿÿþþûÖ }}~‘~~}}~~~~~~~~~‘‘‘~~}~‘~‘‘‘~‘‘‘‘¡¡‘~¡‘¡¡‘~‘‘¡¡¡~¡¡‘¡¡¡¡¡‘‘¡¡‘£¢‘¡¡¡¡¡¢¡¡‘¡¡¡¡¡£¡‘¡¡¡¡¡£¢¡‘¢¢¢¢¡¡¢¡¡¡¢¢¡¡¡¡¢¢¢¢Öûÿÿÿÿÿÿÿÿí­££¢¡¢¡¢«¦¡¢££¢¡££¢¡£¢£¢¢¢£££¢¢¢£££¦£¢£¡£££¡¡¢¢£¢¢¢££££££¡¡£¦£££££¢¢¢¢¡¡¡¡£¢£¢¡¡¡¡¢¢¢¢£¢¡¢¢¢¢¡¡¡¡¢¡¡¡¡¡£¢¡¡¡¡¡¡¡¡¡¡¢¢¢¡¡¡‘¢¢¡¢‘££‘‘‘‘¡¡¡¡¡¡¡‘~¡¡‘‘¡‘‘¡‘‘‘¡‘¡‘¡‘‘‘~}‘‘‘‘‘‘~~‘‘‘‘~~~‘¡‘‘‘~~‘}~~~~~~}~~~~}}~~~~~}~}}~~}}}}~}}}}}}}}}v|}}}~}}rv}~}}rv}}v|}|žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü‚=!!!!!!@ñÿÿÿÿÿÿÿÌ!!!!! !!!!!!  !q¥éýúýüûýûýüüýþýüúýúúúüúüüúýúýúæÓ                                                                                                                                                             ×Óóúóóúóúóúó÷óúóóóÿþÿÿÿÿþÿþÿÿÿûÖ¢}~‘‘‘‘~}‘‘~}~~~}}~‘‘‘~}‘¡¡‘‘‘‘‘~~~~~}~~~¡‘‘‘‘¡¢¡¡‘‘‘‘¡¢¡‘‘¡¡¡‘££¡~‘¢¡‘¡‘‘‘¢£¡¡¡¡¢¡¡‘¡££¡¦£¡¡¡¡¡¡¢¡¡¡¡¡££¡¡¡£¢¡‘¡¢¢¡¢¦ãþÿÿÿÿÿÿÿÿûÚ«¦¦¦£¢££¡¡¡¢¡¡¢£¡¢¦£¢£¦¢¡¢¡¢£¢¡¡¡££¢£££££¢££¢£¢£¢¢¡¡££¢¡‘¡¡¢¢££¡¢¢£¡¡¡¡¢£¦¦£¡££¢££¡¡¢££¡¡££££¢¢¢¡¡¡¢¡¡¡¡‘¡¡¡¡¡¡¡¡£¡¡¡¡‘¡¢£‘¡‘~~‘¡¡¢¢¡‘¡¡¡¡‘‘¡¡~¡¦¢¡‘~~~‘¡¡~~~~‘‘‘~‘¡¡‘‘¡~~}~€¡‘~~~‘¡~}}~~~~}}~}}~~}}}}~~}}}~~}~}}}}}~}~‘}}}~~~}}}}~r}}~~~}}~}~}p}}|}}}rpvžûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎx!!!=$=Îÿÿÿÿÿÿÿñ@!!!!!!! !  !!!! $ŽªèúýýúýúüüûüüþþúúúýúúüüúúüúúúüàÓ                                                                                                                                                             ÓÓúóúúóúóúóúúúóúúüÿÿÿÿþÿþÿÿÿþÿúÖ ¢}}}~‘~}‘~}~~~~~~‘‘~~}‘‘~~~‘~‘‘~~~‘¡‘~¡¡‘‘¡¡‘¡‘‘¡‘‘¡¡¡¡¡¡‘¡¡¡‘¡¡¡‘¡¢¢¢¡¡¡¡¡¡¡Ÿ¡£¡¡¢£¡‘¡¦¢¡¡¢¢¡¡¡¡¢¢¢¡¡¡¢¡¡¡¢¡¢£¢¢æþÿÿÿÿÿÿÿÿÿûÜ¢£££¢¡£¢¡£¡¡¢¢¢¢£¦¢¢£¢¡¦¢¢¢£¢¡¡££¢££££¡¢¢£¢¢¢££¢¡¡¢¢¢¢¢¡¡£¦£¡££¢¡¡¢¢¢¢¡¢£¢¡¢¦¢£¢¡¡¢£££¢£¢££¢¡¡¡¡¢£¡¡¡¡¡¡¡¡¡‘¡¡¡£¡¢¡‘¡¡¢‘¡¡¡‘¢£¡¡‘¡¡¡‘‘¡¡¡¡¢¡‘‘‘~¡‘‘~~¡¡~~‘¡¡‘~‘‘~‘¡~}~‘‘‘‘~~‘~}~~~~~}~}~~}~}~~}}~}‘}}~~}}}}}}~|}}~}}}}|}~}}}}}}}}}}}}|}}}}}}rvp}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáx=!!!!!!!$9Èÿÿÿÿÿÿÿú_!!!!! !!!!! !!!   =}ªéüüúüüüüüüüýþüúüúúúüúûüüúüüýüàÓ                                                                                                                                                                                 Ó×óúóóúóúóúóúóúóóúþÿþÿÿÿÿþÿþÿÿûÖ ~¡}~~}~}}~~~~‘¡¡¡‘¡‘~~‘‘~‘‘~~~~~¡¡¡¡¡‘‘¡~‘‘~~~‘¡‘‘¡¢£¡¡‘‘¡~~¡‘~~~¡¡¡¢¡¡‘¢¦¢‘¡¡‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡¡£¡¡¡¡¡‘¡¡£¢¡£¡¡¦¦£¡¡¢¢¢¡¡¦ÝýÿÿÿÿÿÿÿÿÿÿõÚ¦¡¡££££¢¡¡££¢¡¡£¡¡¢¦¦£‘¡¡£££¦£¡¡¡¡¡¡££¢¢¢¡££¢¡¡¡¡¢¡¢¢¢¢¡¡¡¡¢£¦¦©¦££¡¡¡¡¡¡¡££££¡¡¢¡¡¡¡¡¡¡¡¢£££¡¡£¡¡¢££¡¡‘‘‘‘¡¡¡¡¡£¡‘¡¢¡¢¦¡¡‘~¡¡‘¡¡¡~‘¡‘¡¡¡¢¡¡¡¡‘¡‘¡¡‘~‘¡~‘‘‘¡¡~~‘¡¡‘‘~~~¡‘‘‘‘‘}}~~‘‘‘~}~}~‘‘‘‘~}~‘~~}||‘}}~~~}}}}|}~}}}}~||}~}}|}|}}}p|v}~}||p}}}}}™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüáz@$!!$!!9ßÿÿÿÿÿÿÿþ‚!!!! !!!! !! !!!     $p’ëúýüûüüûúýúüÿýûúúüûúúüúúüúúúúæÓ                                                                                                                                                                                ×Ó÷÷úúóúóúóúó÷úúúüÿÿÿÿþÿþÿÿÿÿþûÖ~‘~}‘~}~~~~~‘~}‘¡¡‘‘‘~¡‘~~‘~‘‘¡¡¡¡¡¡~‘‘‘‘¡~~¡¡‘¡¡¡‘‘¡¡‘¡‘‘¡~¡¡¡¡¢‘¡‘¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡¡‘¡¡¡‘¡£¢¡¡¡¡¢£¢¡¡¡¡¡££¡¡¡¢¢¢¢¡£¦Öûÿÿÿÿÿÿÿÿÿÿÿþõå­££¢¢¡¢¢¦¢¡££¢¡££¦¢¢£¢¡££££¢£¢¢¢¡¡££££¡££¡¢¢¡¡£¦¡¡¦£¢¡¡¢¡£££¦£££¢‘¡£¡¡¡¢££¢¡¡££¡¡£¢¢¡¡¡££¡¡¡¡¡¡¢¦¡¡¡Ÿ¡¢¡¡¡¡¡¡Ÿ¡¢¡¡¡¡‘¢¡¡‘¡¡¡¡¡‘¡¡¡Ÿ~‘‘¡¡¡¡¡‘‘¡‘¡‘~‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘~~~‘€‘‘~~~€‘~~~‘}~~~~‘‘~~‘~}}‘€}~}}~€}}}}~‘}|}}}~}}}}}||}}}||}||}}vv}~}v|vv}}}||žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú΂C@=!!!!!!=@ðÿÿÿÿÿÿÿýÆ!!!!!!! !! !!  p¥èýüúüüûüýúýüþýúúýúüúýúûüúüüüüàÓ                                                                                                                                                                     Ó×úóóóúóúóúóúúóóóúþÿþÿÿÿÿÿþþÿÿûÖŽ~}}~~}~‘~}}~€~}~~}}}~}~~}~~~‘¡¡¡‘~~~~~}~~}~‘¡¡¡¡~~‘~~¡‘¡¡~‘£££¢¡‘‘‘¡¡¡¡¡¡‘¡¢‘¡££¢¡‘¡¡¡¡¡¢¡¡¢¡¡¡¡¡‘¡¢¦£¡‘¡£¡¢££¡¡¡¡¡¡¡­öÿÿÿÿÿÿÿÿÿÿÿÿÿÿþûöîêÝÝÝÚÚÚÝÝÚÝÝÝÝÝåÝÚÚÖÚÚÝÝÚÝÝÚÚÝÚÝÝÚÚÚÝÝåÝÚÝÝÝÝÝåÝÚÚÝÚÚÚÚÖÚÚÝÝÚÝååÝÖÚÖÚÖÚÖÚÚÚÚÝÝÖÚÚÚÚÖÚÖÚÚÚÚÝÝÚÚÚÚÚåÝÝÝÚÖÚÚÚÚØÖÚÚØÔÖÚÔÚÝÚÖÚÔÖÚÚÖÚÚÚÚÚÖÚÔÚÚÔÚÔÔÖÚÚÚÚÔÓÔÚÔØÖÚÚÔÓÓÓÔÔÓÓÔÔØÔÚÔÚÔÚÔÓÓÔÚÔÚÓÓÓÔÚÓÓÓÓÔÓÓÓÓÓÓÓÓÔÓÔÓÓÓÚÓÓÓÓÓÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÇÓÓÓÓÓÓÓÓ×èèèèèèèèèèëèèèèèèèèèèèèèèèèèèèèèèôèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèáèèèçèèèèèèèèèèèèâèâèèáèçèèèèçèèèèáèèáèèèèèçááâççèááèáçáççáèçááèçáçèááçáèááçááááááááááááááèçèáááááááááßáááçááááßááßßßáááááááááçááßááááááááßßßßáßáßßßßáááßßáßßßáßßáßßáßßáßÑßááááÎÌÆƒxZ@=!!!!!!!=!!=9u÷ÿÿÿÿÿÿÿÿá=$!!!!!!!! !!!!! ! !!!!!! ! !! =sªèûüüûüüüúüüüþþúúúûúúúúüúüúúúúæÓ                                                                                                                                                                                ÓÓ÷÷úúóúóúóúóúúúúúÿÿÿÿþÿÿþÿÿÿþûÖ~~}~~}~~~}~}~~~~}}}~~~~~~~~~‘¡‘¡¡~~~~}~‘}~¡¡‘‘~~‘‘~‘¡¡¢¡~£¢¡¡‘‘¡¡¡£¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡¡¡£¢¢¡¡¡¡¡¢¡¡¢¡¢¡¡¡¡­íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ™}}}}}}}}}}}w}}}vvv}}}}}vv}}}}}v}}vv}}vw}vpv}wvvvv}vvvvvvvvvvv}vvvvvuvvvvvvvvvuluvvvuovvvoouuuolovvolluuluulllltllluulllullooolCllCltllCCllllCCCCCCClCCCCCllCoCCCCCAACC@AClCCCACCCCA@CCCCCCC=CCCAA@ACCCCCCA@=@AA@=@>@>@=C=@=@=@==@==@==@=====@>====!=!!!!!!!!!!==–üÿÿÿÿÿÿÿÿñ@!!!!!!!!!!!!!!!  !!!   =sšéüüûüýúûüüúýþýúúüúýúýúúúûüüüüàÓ                                                                                                                                                                                                                          Ó×úóóóúóúóúóúóóúóúþÿþÿÿþÿÿþÿþÿúÔŽ~}~}~‘‘}}}~¡‘~~}~‘~~‘~~‘¡‘~}}~~~‘‘}¡¡~¡‘‘‘¡‘‘¡¡‘‘‘‘~‘‘~¡‘~‘~¡¡‘¡‘¡‘‘‘¡££¡¡¡¡¡¡¡~‘¡¢¢¡¡£¡¢££¡¡¡¡¡¢¡£¡¡¡¡¡¢£¢¡¡¡¢££¡¢¡£¡¡¢¡­õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷™}}}}|rvrp|}v|p}vrvvp}}ppvpppoppvvvv|}ppvpppp|vplppppplpppvplllpppllloopvppplllllllpllplovlllpllCllllCoollollllllllpllC??Cl?CCl?CCCCllll?>>CllC??>lC>CCCC>CClC>=>>C>=C>>=>CC>=C>=>=>A>=CC==>===================$===A========!$==========$!=!=$==!!!!!=$$!!$!=$!$$!!!_òÿÿÿÿÿÿÿÿÿñB!! !!!!!!! !!!!!   =}¥ëúüüüúýüýúüúÿýúúúúúúúüúúüúúúúæÓ                                                                                                                                                                                                                                 ÓÓ÷úúúóúóúóúóúúóúüÿÿÿÿýÿÿþÿÿþÿûÖŽ}‘~}¡~~~~}~‘~}~~~‘‘‘~~}~¡¡~}~~‘~~~‘~‘‘‘‘~‘‘~‘¡¡‘¡‘¡¡~~¡‘~~¡¡~¡‘¡¡¡¡¡¡¢¡¢‘‘¡¡¢¡‘‘¡¡¢¢¡¡¡£¢£¢‘‘¡¢¡¡££¡¡¡¢¡¡£¢‘¡¡¡£¢¡¡¢¢¢£¢¡¡¥Úûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷š}~}}}}}v||pv|||}vp}}|}vpppppppp||vvvppppppvpvppoopppvppppppllpvppplllopvppplpplllllllpooplllpolllllllopCClpllllllllllC>ClllClC?Col?CllC?CC>ClCC>>?CClCC>>=?lC>>=>C>>>>=>?=>>>>>>=>>>==>A>=>=>=======>============>>=======!!=====$====$!!==$===$$$!!==!!!!=!!!!$=Yßÿÿÿÿÿÿÿÿÿÿß@!!!!!!!! !!!!!!!! !!!! $qªèüüüûüüúüüûýþýúúúüúúüúûüúúüüüàÓ                                                                                                                                                                                                                             ÓÓóóóóúóúóúóúóóúóóþþÿÿÿÿþÿþÿÿÿûÖs}~}}}}}}~‘‘}}}~‘~~~~‘~~~~¡‘‘~‘¡‘~¡¡¡‘‘¡‘~~~¡¡‘¡¡‘‘‘¡¡¡~¡¦¢‘¦¢¡¢¡¡¡¡¡¢¡¡¡‘¡¡¡¡¢¡¡¡‘¡¡¡¡¡¡¢¦¢¡¡¡¡¡¡¢¢¡‘¡¢¢¡¡¢¦«¢¡¡¡¡¡¡¡£¦£¥êýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ˜v}|pppvpv}}|ppv}ppppp|}||pv|||pppppppv|vpppopvvvpplpvvvvpppppollppllvopplollloolpppllplllllollllClplClollpplllCCllllllCCllllll>?Cl??C?>?llC??C?lCC?>?l>C>>Cl>AC>>CC>>>ClC>>A>=>=>>A>>?=>=>AC?==>C>=>C===>>=============$$=======$!=====!===!!$$!!==!!=!!$!@=$!ZÌÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!!!!!!!!!!! !!!  !qªëüûúýúýúýúüüþüüûúúüûúüúúüúûúúàÓ                                                                                                                                                                                                                      ÊÓ÷÷÷úóúóúóúóúúóúüÿÿÿþÿÿþÿÿþÿþûä s}}~}}}~~}~‘~}}~~~~~~‘~}~}~~~¡¡‘‘~}¡‘‘¡¡‘~~‘¡¡¡¡~¡¡‘¡¡‘‘‘¡¡¡‘‘¡¢‘¡¡¡¡‘¡¡‘¢¡¡¡¡¡¡‘‘¡¢¢£¢¡¡¡¡¡¡¡¡‘¡£¢¡¡¡¡¡¡¡¢¡‘¡£¡¡¢¢¦¦¢¡¡¡¡‘¡££¢£¡¡¦Ôêýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷™ppvppp}}|v}}vpppppp|vvrv|vvvv|pppvvppvvvppvppvpp|vop}vpvvvppplpolllppllpllpllplllllllpplllllllllllplCllllollllllllllllll?Clllll>???C?>CCCCCC?>>CC??>CC>>>>CC>ll??>C>=?l>>CCC>==>>CA=?>=A>>>>===C>>=>A>========$========!$===========!!!====$=$=!9=!!==!!!$==!_Ìúÿÿÿÿÿÿÿÿÿÿÿÿ…!!!!!!!!!! ! !!! !!!   sªõúýüüüúýúýúýþýúúúúûúúúüúûüúüúàÓ                                                                                                                                                                                                         žÓóóóóúóúóúóúóó÷óúüÿÿÿþÿÿþÿÿþÿýÚ~}~~}~~~~}~~~‘¡‘‘~~~~‘~‘~~~‘~‘~‘‘¡~~‘‘‘~‘¡¢¡¡~~~‘¡‘‘¡¡‘¡¡¡‘¡~~‘¡¡¢~‘‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¢¡¢¡¡¡¡‘‘‘‘¡¡¢¡¡¡¢¢¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡££¢¡£­êûýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷š}}}}}}||ppp|}v|}}|pv|vv|vpvpppv|vv}vpppppp}}ppop|pllppllllopllopppppolpvolllpvvppllllvlllllllllllollllllCllCCClllC?llCClCCll?>ClCClC?CllC?lCClllCC??>lC?C??=>l>?>>C>CC>=>>>>?>=>>Cl>>===>>===>>==>==========@=9$9==============$!9!====$!!!!!!!!=!!!$$=Zxƒßüÿÿÿÿÿÿÿÿÿÿÿÿÿü_$!$!!!!!!!!!!!! ! !!!!!   ! =sªõüüûýúýúýúüýþýúýúúúúüûúúüûúúúàÊ                                                                                                                                                                                                                          žÓòúóúóúóúóúóúúóúúÿÿÿþÿþÿÿþÿþÿûä}}~~}}~~‘‘}}~¡‘‘~~~‘‘~}}~‘‘¡‘‘‘~~‘‘‘~‘‘~‘¡¡¡‘‘¢¡‘‘¡¡‘¢¡‘‘¡¡‘~¡¡‘‘~‘¡‘‘¡¡¡¢¡‘¡¡¡¡¡¡¡‘¡¡¡£¢¡¡‘¡¡¡¢¡¡¡¡¡¡¡¢¡¡‘‘¡‘¡¢¢¡‘‘‘¡£¢¡¡££¦¦¡¢¥­ÜÝêêêêæêêêêêêêêêêêêàæêêêêêêêêêêêêêêêêêæêêêêêêêêæêêêêêæêêêêêæêæàêêêêêêêàêêæêêêàãêêêæêêêêêêêæêêæêææêêêêæàêàêæààààêêàààêêêààêàÚàêààêààêãààêààààÚæàààêæàÚààææààãàãêêàêæààààààÚàààààÚààààÚàãàÚàÚàààÚàÚààààÚàÚÙÙàêÚàÚàÚÚàÚÚÙÚæÚàÚßÙàÚàÚÙÚÚÚÙÙÙßÚÚÙÙÚàààÚÙÙ×ÙÙàèëèèëèèèèèèèèèëèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèâèèèèèèèèèèèèèèèèèáèèèâèèèèèèèèáèáâáèèèáèèèèáèèáâááßçáèáâçááèáâèáááèèáèáèááâáâáâááßááááááâáááßááááßáááßááâáßáßáááßáßáßááááßáßáßßáßáßßßßáßßßáßáßßßáßßáßáßßßßßáßáßßßßßÏßßßßßßáñ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßB!!!!$!!!!!!!!! !!!!!!!! !!! =s¬õüüüúüüüúýúýþüúúúúúüúúúüúüúý÷àž                                                                                                                                                                                                                 ›Óòó÷óúóúóúóúóóúóúüÿÿþÿÿþÿÿþÿÿþê ‘‘~~}}~¡‘~~¡~}}~~}}}~‘‘‘‘}~‘~~‘~~~~~¡‘‘‘~~¡~~~~~‘‘‘¢‘‘~‘¡‘‘¡~‘‘‘¢£‘¡¡‘¡¡¡‘‘¡¡¡¡¢¡‘‘¡‘¡¡¡¡¡¡¡¢££¢‘¡££¡¡£¢¡‘¡¢¡¢¢¡£¦£¡£¦¢¡¢££¢¡¡¡¡¡¡¡£¢¡¡£¡£££¢¡¢£¡¡‘¢¡¢££¦¢¦£¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡¢¢¡‘¡¢¢¢¡¡¡¢£¡¡¡¢¢¢¦£¢¢¢¢¢£¢¡¡¡¢¢¢£¢¡¡¡££¡¡£¢¢¡¡¡‘¡¡¡‘¡¦¢¡‘¡¡¡‘¡¡‘‘¡¢¡¡¡¡‘¡¡‘‘‘¡¡¡¡‘¡¡¡¡~}¡‘~‘¢‘¡‘¡¡¡~~‘¡‘‘‘~¡¡~~~~‘~}‘‘~~~~~‘~‘‘~}~‘~}}~~}}}~‘‘~}}}‘~~}~‘~}}}}}}~}}}}}p}~}}}r}}}}~}}}}}}}r}}}pvr}}|w}||}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ[!!!!!!!!!!!!! !!! ! !! 7­õýûüüüûúýúüýþýúúüúúûúüúûúúúú÷Úž                                                                                                                                                                                                                ˜Óò÷ó÷óóóúóúóúúóúóþÿÿÿþÿþÿþÿÿþþæŸ~~‘‘‘~}~~¡¡‘~}~}~}~}}}~‘~‘‘‘~¡‘~~~‘‘‘~~~~~‘‘~}~~~¡¡¡¡¡¡‘~~~‘¢‘‘¡~~¡¡~¡¡¡¡¡~‘¡¢¡¡¡~‘¡¢¡‘¡¡¡¡¡‘¡¡¡¡£¢¡¡¡¢£¡¡¢¢¡‘¡¡¡¢¦¦¦¦¢¡£££¦¢¢¢¡¡¡¡¡¢¡¡£¢¢¢££¡£¡¡£¦¢¡¡¡¡£¡¡¦¦¡¡££¢¢¡‘‘‘¡¡¡¢¢¢¡¡¢£¢¡¡££¢¡‘¡¡¡¡£¦£¡£¦££¢¡¡£¢¡¡¡¡¢££¦£¢¡¡¡££££¡£¡‘¡¡¡¡‘¡¡‘¡¡¡‘‘¡‘‘¡¢¡¡¢¡¡¡‘‘‘‘¡¡‘~~‘¡¡£¡~‘¡¡¡}~~~‘‘‘¡~‘¡¡‘‘~~¡¡¡‘¡‘‘‘~}~~~~‘‘~~‘‘~¡}}}}~~}}‘}}~}~~~‘‘}}}~‘}}r}}}}}}}}~}v}}~~}}s|}}~}}}r}}}}}}}}v|p}}r}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú‚!!!!!!!!!!! !!! !!!!!!! =¬úúýúúýúýúýúýþüúúúûüúúúúúýúýú÷à                                                                                                                                                                                                                     ƒÓñóúóúóúóúóúóóúóúüÿþÿÿÿÿþÿþÿÿþ뎎}}~~~~}}}}~~~}~‘~~~~‘~~~~~}~‘~~~~‘‘‘‘‘~¡¡‘¡‘‘¡~~~¡¡~‘~~¡‘‘‘‘¢£~¡¢¡‘‘¡‘¡£¡¡¡¡¡¡¡‘¡£¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢¢¡¢¦¦¢¡¡¡¡¡¡‘¡¢¦¢¡¡¡¡¢¡¡¡‘¡¢¢¢¡££¡¢¡¡£¦¡¡¡¡£¦£¡¡£¡¡¡¢¡¢¢¡£¢£¡¡£¢¢¢¡¡¡£¢¢¢¢¡¡¡¢££¢¡¡¡¡‘¡¡¡¡¢¡¢¢¡¡¡¦£¡¡¡¡¡¡¡¡¡¡¡‘¢£¡¡¡¡¡¡¢¦¢¡¡£¡¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¡¡‘‘¢¡¡¢~¡¡¡¦¡~¡~~¡‘¡¡‘‘‘~‘¡‘‘¡~~~~‘‘~~‘‘~~~~~~~~}‘‘~}}~‘¡}~~~}}~‘}}}}~~}~}~}}}~}}}}~~}~}}}~~|}}}}}}}}r}}}~}}|}v}r}|}pp}}}||všúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÆ!!!!!!!!!!!!!!!!!!!!!!!      !? Öýúüüýúýúýúüýþüûúúúúúúüúúúúúú÷Ù›                                                                                                                                                                                                      {Óñóó÷óó÷óóúóú÷óúúüÿÿþÿþþÿÿþÿþÿëŽ}}}s}~}}}~~‘~‘‘~}}~‘~}~~~~~~~~~~~~~~~~‘‘~‘¡¡¡¢¡¡¡‘¡~‘~~¡¡¡~~¡‘~~¡¡¡‘¡¡¡~¡£¡‘¡¡¡¢¢¡‘‘~‘¡¢¡‘¡‘‘‘¡¡¡¡‘‘¡¡£¢¡¡£¢¡¢£££¢¢¡¡¡¡¡‘¡¡¡¢¢¡‘¡¦¢¡‘¡¡¡¦¢¢¢£¦£¢¦££¢¡¡£¦¦¡¡¡¡¡‘¡¡¡¢¢£¢¦¦¢¡£¢¢¡¡¡¡¡¡¢¡¡¡¡¦£¡£¡¡‘¡‘¡¡¡‘¡¡¡¢¡¡¢£¡‘¡¡‘¡¡¡¡£¢¡‘‘£¦¡¡¡¡¡¡££¡¢¢¡¡¡¢¡‘‘‘¡¡¡‘¡¡¡¡‘‘¡‘‘¡¡¢¡¡¡‘‘¡‘‘¡¡¡¡¡¡~~~¡¡~‘¡¡¡‘~¡¢}~}~~~‘¡¡‘~~~‘~}~~~}~~}}‘‘~~}~}~~‘‘~~~}}~}}~}}~}~~}~~~}}~~}}}~}|}r}~}}}}}}}}|}rvp|}}}}ppv}}vpvžûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýá‚=!!!!=! !!!!!!!!!!!! !!!! !!!  ! ?ÖúüüûúýúýúýúýþüúúúûúüúúûüúúûüõÚ˜                                                                                                                                                                                                                     zÓèóúó÷úóúóóúóóúóóüÿÿþÿÿÿþÿÿþÿþò¢ }s}}~~}~~~~~}~~}~‘€‘~~~~‘‘~~}}‘¡¡‘‘~~‘¡~~~~~~~~‘‘¡¡}‘‘¡‘£¡‘¡¢¡~~‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘‘¡‘¡¡¡¡¡¡‘¡¡¡¢¡¡¢¢¢£¢¡¢¦¢‘¡¦¢¡¡£¢¡¡£¢¡¡¢¡¡¡¡¡¡£¡¡¡¡¡¢£¦¢¡¢£¡¡¢¢¢¡¡¡¢¡¡¡£¢¢¡¡¡¡¢¡¡¡£¦¡¡¢£¡¡¡¡¢£¢¡¡¢¢¢¡¡¡¢¢¡¡‘¡¡¡¡¡££¡¢‘¡££¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘£¡¡¡¡¡¡‘‘¡¡‘¡¡‘‘¢¡‘¡¢‘~‘‘¢¡¡¡‘~‘‘‘‘¡~‘¡‘‘~~~~~~‘‘‘~~~‘~}‘¡‘~~~}~~}~~}}~~}~}}‘~~}}‘‘}}}|}}}}~~}}}|}r}}}~}r}}}}|}}}v~}}}vv}}}r}wr}}|šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÏ‚=$!!=!=!!!!!!!!!! !!!! !! ! !?ÓûúýúýúüúýúüþþýúúúúúûúúúúúüúúòÚ”                                                                                                                                                                                                   zÓè÷ó÷óóó÷÷÷óúúóúúüÿÿÿÿþþÿþÿþÿþõ’}}}}~}}~‘‘}~~~}}~}~~~~~~}}}}‘¡‘~~¡¡‘~‘‘‘¡‘~}‘‘~~‘~}~}~‘~}¡¡¡¡¡¡¡££¡}~‘¡‘‘¡¦¢¡¢¢¡¡‘‘¡¡‘¡¡¡¡¢£¢¡‘¢£¡¡¢¢¡‘¡¡¡¡¡‘‘¡¡¡¡¡‘¡¢¢¢£¦¦¦¦£¡£¦¡¡¢£££¢£¡¡¦¡¡¡¡¡¡¡¡¡¦£¢¡¢¢¦«¦¢££¡¡¡¡¡‘¡¢¡¡£¦£¢££¢£¡¡¡¡¡¡¡¡¡¡¡¢¢¢¦¦£¢££¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¢¡¡¡¡¡¢¡¢¢¡¡££¡‘‘¡‘¡¡¡¡‘¢¡¡¡‘¡¡¡¡¡¡~~~‘£¡‘~}~~‘¡¢¢¡~~‘~~¡¡¢‘~}¡¡¡‘~~€‘~‘‘~~~‘~~‘¡‘‘‘‘}~}~‘‘~~~~~~}~~¡¡€~}~}}~}}s}r}‘~}}r}v|}s}}|}~~}}}}rv}}~}p}}r}}}}}}}}p™÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüóçÏÆx======!!$$!!!!$!!!!!!!!! !!!!!!!!!!! !jÙüýúüúýúýúüüýýúúúûúúúúúüúúúúúõÙƒ                                                                                                                                                                                        ]Óèóúóúóúóóóúóóúóóúÿþÿþÿÿþÿÿþÿÿù¥Ž~~~~}~~~~}}~~~~~~}~~~~~~~~~~~~~~~~~~~‘¡~~¡¡~}‘¡‘‘~¡¢¡~~¡‘‘‘¡¡~¡¡¡¡~~¡¡‘¡¡¡¡‘¡‘¡¡¡¡‘¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¡¢¢¡¡¡¡¢¢¡¡‘¡¢¢¡‘¡¡¡¡¡¡¡¡¡¡¢¢¡££¡¡¡££¡¡£¢¡¡¡¡£¡¡¡¡¡¡¡¡¡¢£¡¡¢¦¢¡¢¡¢£¢¡¢¡¡¢¢¡¡¡¡¢£¡¡¢¡¢£¡¡¡¡¡¢¢¡¡¢¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¢¡¡¡‘¡¡¡¡¡££¡‘‘‘¡¡¡¡¡¡‘¡¡¡¡¡£¡¡£¡‘¡¡~‘£¡¡¡¡‘¡¡¡¡‘¡‘¡‘~‘¡‘~‘¡‘‘‘‘‘‘~~‘‘¡¡~~~‘‘~~‘~~~~~‘~}~~}~‘~~~}}}~~}}}~~}~s}}}}~}}}}~}}s}}}}~~}~}}|}}}}}}}}}}}r}}}|}}wv|v}p}}|vžÓÓÓÓÓÒÓÒÓÓÓÇÓžÓÇÇÓÓžÇÓÓÒžÓÇÊžÊÇÇÇÇÓÇÓÇÓÇžÇÊžÊÇÇžÇÇÇÇÊÇžžÇÇÇžÇÇÇÇÇÇǞǞžÇÇžžÓÇǞǞÇÇžÇÇž›žÇžžÇžžÆžžÇžžÇžžÇÇž›ž››››››››››››››››››››››››››››››››–››–›››–›››››–›–››››––››––›–––›–”––––––––––––––”–––”–––…–––––”–”–––”––”xZ=!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !o’àúüýúýúýúüûúÿþúúúúúûúúûúúüúúúõÙƒ                                                                                                                                                                                                         BÓà÷ó÷óóó÷úóóóúóúúüÿÿÿþÿþÿþÿþÿþú¬~}}~~~}~}}}}}~~~}}}~‘~‘¡~}}}~‘‘~~‘‘~}}¡€‘~~~‘‘‘‘¡¢ª¡‘‘~‘¡‘‘~~‘¡¡¡¡~~‘~‘~~‘‘¡‘‘¡¡¡¡¡‘¡‘¡¡‘¡¡‘£¦¢¡¢¡¢¢¡¡£¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢£¡¡¢¡¢¡¡££££¡¡‘¡¡¡¢¡¡¡‘‘‘£¦¡¡££¡¡¦«¢¡¢££¡¡¢¡¡¡¡¡¡¡££¦£££¡¡¡‘¡¢¡¡¡¡££¡¢£¡¡¢£££¢¡¡¢£¢¡¡¡‘‘¡¢¡£¢¡‘¡¡¡¡¡¡‘¡‘‘‘¡£¡‘‘‘¡¡¡¡¦¢¡¡£¦£¡‘¡¡¢¢¡¡¡‘¡¡~~~~‘¡¡‘‘¡¡~~~~‘‘‘‘~‘‘‘~~~‘~~~~‘‘‘}}~}}~‘¡‘~}~~}}}}}~~}~~}}}}|}~r}}}}}}}}}~}~~~}p}}}||}}|p}}}}~}}vvvrv}|v|}}}}}||pp|}}|p}}vp}}}|}}|pvppp|}|||pppv|ppppppploopoolllv|pppplllp|ppppvppllvolpvppplllpvolllllllpplllllpll?lllvllllClollllllllC?ClCCllC>?llC??>>>>>CCC>>>>CC>Cl=>>=CCC=>C>>==>?>>>>===>>>>>llA===>>=======>=====$==!====$$$=======$!!=$$$=!!$=====$=!!==!$$!!!$!!!!!!!!!!!!!!!!!!!!  !!!!!!!!!!!!!=q¥æüúúýúýúýúýüþýúúúúúúúúúúýúûüúèÚ]                                                                                                                                                                                                                 9ÓÙóúóúóúóóúóúóúóóóþÿþÿÿþÿÿþÿþÿûÚ~}~}~}}~}‘~}~~~‘~~~~~‘‘~}~~‘‘~‘~‘‘€‘‘‘‘~~~‘‘‘~‘¢‘~‘~¡‘¡‘~‘~¡¡‘¡¡‘¡¡¡¡‘‘¡‘¡¡¡¡¡¡¡¡¡‘¡£¡‘¡£¢‘¢¢‘‘¡¡¢¢¡¡¡¡¡¡¡¡¢¢¡¡¡¢¡‘¡¢¡¡¡¢¡‘¡¢¡¡¡¡¡¡¡¡¡£¡¢£¡¢¡¡¡¡£«¡¢¡¢¡‘¢¦¢¡¢£¢‘¡£¢¡¡¡¢¡¡¢£¡¢¡¢¡‘¢¡¢¡¡£¡¡¡¡¢£¢¢¡‘¡¢¡¢¡‘¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡‘¡¡¡‘‘‘¢¡‘‘¡¡‘‘‘‘‘‘‘‘‘¡‘¡‘¡‘‘‘‘~‘¡¡‘~‘¡‘‘‘‘‘‘~~~~~~~~~~~~~~‘‘~~}~~~~~}~‘~}~‘~}}~}}}}}~~~}}}~}~}~~}|}}}}}}}|}}}~}|}}~vv}}}}}}rp}|}~pp|r|}|||v|v|}}pp||pv}}ppppvvp|pvv|ppppvppvvvpppvpoppp}pppopppllvpppvpolllppolpvlllopplllllplloolllolllllllllllCllllClllCCClClllllCCCClCll?CCCCCCCll?C?CClCCC>?CCC>=>>>C>>A?>=>>>?>>>>=>=>=>>>=>C=====>>======>===A===================!====!=====$!$!!==!!!!$!!!=!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!! ! !  =s¥õûüýúüúýúüúüþýúúúúúúûúúúúúúúüè×]                                                                                                                                                                                                      ×Ùóó÷ó÷óúóó÷óóóúúúÿÿÿÿþÿþÿþÿþÿýæŽ~~}}}}}}}}~}~¡‘‘¡‘~~‘‘~~~~‘~¡¡~‘¡¡¡‘‘¡¡~~}~‘‘¡¡‘¡~¡~}~~‘¡~¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡‘‘‘¡‘¡¡£¢‘‘¡£¢¡‘‘‘‘¡¡£¡¡¡¡¡££¢¢¡¡¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡¡¡££¢¢£££¢¡£¢¡¡£££¡¡¢£¡¡¦«¦£¢¢¡¡¡¢¢¡‘¡¡¡¡¢£¢¡¢¡¡¡¡¡¢¡¡£¢££££¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡‘¡¡‘¡¡¡¡¢¡¡‘‘¡¡‘¢¢¡¡‘¡‘¡¢£¦¦¢~¡¡¡‘‘¡¡£¡‘~~‘¡¡¡‘¡¡~~¡¡‘¡¡¡¡~~‘£¢‘~‘¡‘‘‘~‘‘‘‘~}}~~~‘~}~~}}}~¡‘¡~}}}~~}}~~¡~}}}~|}}~~~}}~}}~¡~}}}}|}~ps}}}r}‘}|}~}~rvv}}p}}}}}}}}}}vvvpv|pp|pp}}pp|}vppppp|}}}}vpppp||ppppp|vppvoop}}}v|plolllpvvvvvollllllllplllllllllllopvvpppllllpllCClll?lllllClCCC>CC??Cll?CllCC>ClCC>>?>>>CC>ClllCllC>?ClC>>C>>C>ClC>ClCCC>CC====>>>>>=>==>>=========>===>====>>=========!=9$$====!$===!!$!!!!==!!$!!$==$!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! !!   ! =¬õüúüüûüúýúýýþýúúúúúúúúûúúüúúúàÓB                                                                                                                                                                                                                   ž×òúóúó÷óú÷ó÷ú÷óóúüÿþþÿþÿþÿþÿþÿí ~}~~}~~~}~‘~}~~~}~¡~}~}~€‘‘}~‘‘~~}~‘‘~~‘‘‘‘‘‘~‘~‘‘¡‘~‘¡‘~¡‘¡‘‘‘‘¡‘‘¡¡‘¡¡‘‘¡‘¡¡‘¡‘¡¡¡‘¡¡¡‘¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¢¡¢¡¡¡‘¡¡¡¢¡¡¡¢¡‘¡¢¢¡¡¡¡¡¡¡¡££¡¡¡¡¡¡¢¢¡¡¢¡¡¢¡¡¢£¡¡¦£¡¡¡¡¡¡££¡¡¢¢¡¡¡¡¡¡¡¡¢¡¢¡¡¡¢¢¢¡‘¡¢¢¢¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡‘¡¡¢¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡‘¡‘¡‘¡‘¡¡¡‘‘¡‘‘¡¢¡~‘¡‘¡‘~‘‘‘¡‘~‘¡¡~~‘‘~~‘¡~~~~~~‘‘‘‘~}~}~‘~}~~~‘~}~~~~}~~}}~~}}‘‘}}}~}}}~}v~~}}r}~}p}}}}}}}vp}}}}}}|}}}|}}p}v}}}v|r}v}||p}}}ppv|v|pp}}pp||vv|vppv|ppppvvpov}pppppvpppoplpppppppppplpppvloolpploolollppllplllllolllllllllllllllllllllllllCCCllCCCClCllCCClCCCCCCllA?CC>>Cl>>>>CCCC>>>C>?>=>C>>>>>>>>>>=>=>=>==>>>==>========>======================$===$$!=$=!$!$===$$$!!$!!!$!!!!!!$!$!!!!!!!!!!!!!!!!!!!!! !!!! !     ?Óüýúýúüúüüúüýþýúúúúúúúúúúúúûú÷àÊ9                                                                                                                                                                                                                                             ˜Óòóóó÷÷óóóúóóóúóúüÿÿÿÿþÿþÿþÿþÿõ¢’s}~~}~‘¡¡‘}}}}}~~~~~~‘‘‘~~~~~}}}~~~~~‘¡‘‘¡¡¡‘¡¡~}~¡¢‘~‘¡¡¡¡¡¡¡¡~¡‘¡¡¡‘¡‘~~~¡¡¡¡¡¡¦¡‘‘¡‘¡¡¡‘‘¡¢¡££££¡‘¡¡¡¡¡¡~¡¡¡¡¢¢¢¡¡¡¢¢¢¡¡¢££¢¡¡¢¡¡‘¡¡¡¡‘¡££¡¡‘¡‘¡¡¢¡‘¡¢¡¡¡¡¢£¡¡¡£¢¡¡¡¢¡¢¦£¡‘¡¦¦¡¡¡¡‘¡¡¡¡¡¡¢¢£¢¡¡£¡¡¢¦¦¡¡‘¡‘¡¢¡‘¡¢¡¡‘‘‘‘‘‘¡¡¡¡‘¡¡~¡¡¢¡‘‘¡¡~~~~¢¡‘~‘‘¡¡¡‘~~¡¡£¢‘‘¡‘~~}~‘~~}~¡‘~~~‘¡¡‘}~‘}~¡¡¡‘~‘~}}}}~~‘‘~~}}}~}}}}}}}~~}~~|p}~‘~}}}|}¡~}~|}}}p}~}}}}}r}}}spp}}pr}}|p|}rv|prvvp}rvv|}}ppp|}}pp|}~}}|vp}pppppvvpp|}|vpp}}}}p}}olppplpvvvpvopplloppppplpvvpoppollpvllll?ClllllllllllllClllCCllllllllllllCC??>CCllll>CCCCCllllll>>>>>CC?CC>>CClC>=C>====>=>>>=ACA>CCC>>>===CC==>>A>>>A>=============!$$=======C=$=$!==!!!$=======!!$!!!$$!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!  j’Õúúüúýúýúûüüýþúúúúúúúúúûúûúúú÷à›                                                                                                                                                                                                                                                          x×èúóúóóúóúóóú÷óóúúÿþÿþÿþÿþÿþÿþúª}~}}}}~~}~}}}‘~~}}~‘~}~~~~~‘~€‘}~‘‘~~~~‘¡~~‘‘‘‘‘¡~‘¡‘}‘¡‘‘‘‘¡~‘‘¡‘‘‘‘‘‘¡‘¡‘¡¡¡‘¡‘‘¡¡£¡‘¡¡¡¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡¡¢¢¡‘¡¡¡¡¡¡¢¦¡‘¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡¡¡¦£¡¡¡¡¡¡¡¡¡‘¢¢¡¦¡‘¡¦¡‘¡¡¡¢¡¢¡¡¡¢¢¡¡¡¡££¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡¢¡¡¡‘¡¢¢¡¡‘¡¢¢¡¡‘¡¡¡¡‘¡¡¢¢¡‘¡¡¡‘¡¡¡¡¡‘¡¢¡~¡‘¡¡¡¡¡¡¡¡~~¡‘‘‘¡¡‘~‘‘‘¡‘¡‘‘~‘~~¡‘~¡¡~~~‘‘‘‘~~~~‘‘~~~~~~~~~~~~~~~~}}‘~}}‘~}}~}~~~~}}}}}~}}}r~¡}v}}}~}}}}r|}}}}}}}}}r}}}r}}sp}|}}}}}p}pvrv|vv|v|pv}}|vv|pvpp|vpp|vv|ppv|pppoppvvpop}vlpvpopppppplvvllpvllppplloooopollplllplllpplllllllllllllolClllllllClllllCClllClCll?C?CC?CCC?ll>>ClC>>>Cl>>?????CC>C>?=>?>=>>=C>==>>>>>A==>>===>>==>=====================$=====$$$==$===!$!$=$$$$$!!=$!!!!!!!==!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!! !p’æüüûüúýúýüûüþþúúúúúúúúúúúúúüúòÚ”                                                                                                                                                                                                                                        ZÓàóóó÷úóóó÷÷óóúóóüÿÿýÿþÿþÿþÿþÿûÚ}}}~}}}}~}}}~~}}}}~~}~~}~~‘‘‘‘¡‘‘‘~~~‘~€~~¡~~‘~‘‘¡¡‘~‘¡‘‘~~¡‘¡‘¡¡‘~~¡¡¡‘¡‘¡¡¡¡¡¡¡¡¢¡‘¡¡¡¡‘‘~‘¡£££¢¡¢¢¢¡‘‘¢£¡‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¢¡‘¡¢¡‘¡¢¡¡¢£¦«¡¡¦¢¡¡¡¡¢¢¡¡‘¡¡£¡‘¡‘¡¡‘¡¡¢£¢¢¢¡¡‘¡¡¢£¦¢¡¡¢£¡¡¡¡¡¢£¦¦£¡¡¡‘¢£¡¡¡¡£¢¡¡¦£¡‘¡¡‘‘¡¢¢‘~~‘¡¡¡£¢¢¡‘~‘‘‘‘¡‘¡‘~‘¢¡¡¡~~~~~‘¡~¡¡¡¡¡}¡‘~~~~~¡¡¡‘~}}~}}}}~¡¡¡~}}}}}~~‘‘~~}~‘~‘‘}}~~~}}r}}}}}}~}}|p|}|v|}}s}svv|v|}~}}}}}}}}}}}}}|p|p|}}}}}}r}}}~}pp|pp|pppppppppppvpppp|vvpoopppplp}}pvvolplopolpppolvploppllllppopolollopoplppllpllCCCClloppolllllllCClCCllCCCCllolllCCCCCCCC>>C?>>>CC>>>=>C>>>>>>>CCCCCCC>C>>>>=>>>>C==>=>>>>>==>>==>===>>==>==$====!====$==!$======$====!===!!$!!=====$$=$!!==!!!!!!!!!!!!!!!!!!!!!!!!  !!!! !=}ªõüûüúýúýúüüúþýúúúúúúúúúúúûúúúëÙz                                                                                                                                                                                                                                 ;Óàúóúóóúóúóóúóóúóóÿÿÿþÿþÿþÿþÿþþí }}~~}}~‘}}~~~~~~}}~‘~~~‘~~~~}~~~~‘~~~}‘‘‘~‘¡‘~‘¡‘~‘~‘‘‘‘¡¡~¡‘‘‘‘¡‘¡~¡¢‘¡‘‘‘‘¡‘¡¡£¡¡¡¡¡¡‘¡¡¡¡¡‘‘¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡£¡¡¡¡¡¢¢¡¡¡¡¡¡¢¡¡¡¦£¡‘¢£¡¡¡‘¢¦¡¡¡¡¡¡¡¡¡£¡¡¢¡¡¢¢¡¢¢¡¢¡¡¡¡¢¢¡¡¡¢¡¡¡¡¡¡¡¢¢£¡‘¡¢¡¡¡¡¡¡¡‘¡¢¡‘¡¡¡¡‘¢¡‘¢¡¡¡¡¢¢¡‘¡¡¡‘¡¢¡~¡‘¡¡¡‘¡‘¡¡¡~¡‘¡¡‘‘~¡¢¡‘¡~‘~¡‘‘‘‘‘‘‘‘‘‘~¡}~‘‘~‘‘~~~~~~~~~~}~~~~~}~~}~~~}}~}~}~~}}‘‘}}}}}}~}}}}}}p}}}}}}}}vr}|}s~}}|}}|}}p}}}}vv}}|p}}|v}}}|v|p}|pppp}|ppv|ppppvvppvppppppppvpppppppppvpppopppppolppopplppplploplllpollppllllllpollllllClllllllllllCClllCClllC>CllClCCll?ClC>>lCC>CCCCCC>>>C?>AC>>?>>>>>>>C=>C>>>>=>>>=>A=>>?=>===>===>=============$=>==========$======$=$!====!!!=$=$!$=$!!!!!$!!!!!!!!!!$!!!!!!!!!!!!$!!!!!!! !  ? ¬úúýúýúüúúýúýþýúúúúúúúúúúúúúúúèÙ]                                                                                                                                                                                                                                     ÓÙóó÷óúóóó÷úóóúóúúüÿþÿþÿþÿþÿýÿÿíªŸ}}~‘~}~~}~‘~~~~~‘‘~~}}~~‘~}~~~~~~‘~‘‘~~~}~‘¡~~‘‘‘‘~~~~‘¢¡¡‘¡‘‘¡¢‘¡¡‘‘‘¡¡‘¡¢‘~~~~‘¡¡‘‘‘‘¡¡‘¡¡¡¡¡‘¡‘‘‘¡¡¡¡¡¡¦¡¡‘‘¡¡¡¡£££¦£¡¡¡¡£¢¡¢¡¢¢¡¡¡¡¢££¡¢¦¦¢¡‘¡¡¢¡¡¡¡¢¡£¢¡¢¡¡¡¡¢¢¡¡¡¦¦¦£¢¦£¡¡¡¡‘¡£££¢¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¢£¢¡‘¡¡¡¡¡¡‘‘¡‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡¢¢¡¡~¡£‘~‘¡¡‘~¡‘~~~~~‘~~~~‘¡¡~¡¡‘‘~}}}}~‘~~}}~~~‘‘~~‘‘~~}}~~}~‘¡¡‘}~~}~‘~}}~~~~}}}}~~~~~}rv}~}}r}}~~}‘~}}}}|}}}}}}pp}pp||pp|pp|}r}}}vppp|}}}pppppvvpppp}}v|}vpp|}}||vpolppopvpppplloloop|vpooplppllpploloppopplpplllpolppllllllllllpplllplllllllllCC?Clll?ClollC?ClC>?llC>CllCCl?>llCllCC??ll>CCC>>>CC==>>>=>>>>>C>=>===CC===?>=======>A>>=====>>============!!$!!===!$!!$=$!!!!=$$!$!$!!$!!!!$=!!!!!!$$!=!!!!$!!!!!! !!!!!!!! !! ! !!!!!!    o¢ÕüüúýúüûüüüüýþüúúúúúúúúúúúúúûúæÓY                                                                                                                                                                                                                                             ÓÓó÷ó÷óóú÷óóúó÷óóóüÿÿþÿþÿþÿþÿþþú¬Ÿ~}}~~}~}~~~}~¡~}}~~‘~}~~~~~~}}¡‘}~‘~~~‘‘~~‘¡~~‘¡‘~‘‘~‘‘¡‘‘‘‘¡¡‘¡¡‘¡‘~¡¦‘‘¡‘‘¡¡‘¡¡¡‘¡¡¡¡¡‘¡¡¡‘¡¡¡¡¡¡‘¢¢¡‘¢£¡¡¡‘¡¡¡¡£¡¡¡¡¡‘¡£¡¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¦¢‘¡¡¡¢¡¡¡¢£¡¡¢£¡¡¡¡¡‘¢£¡¡¡‘¡¡¡¡¡¡¡¢¢¢¡¡£¢¡¡‘‘‘¡¡¡¡¡¢¢‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡£¡‘¢¡‘¡‘¡‘‘¡¡¡¡~~¡‘¡‘¡¡‘~‘‘¡‘~‘¡‘‘‘‘~‘‘~~‘¡‘~~‘‘~~~~‘‘~~‘‘~~~~~~~~~‘~}}~~~}~}~~~~}~}}~}}~~}}~~}}}}~¡}s}}}}}r}~}|}~}}}|r}}}}}~v|}}pp|}r}}}|p}|||v}||vpv}|pv|}pvpv||ppppv|ppp|ppppv}ppppp}pppppvpppppppooppllvvlpllpvllolopollplllllvllllllloollllllllllllllllllllllCClllllCCCCCCllCCCC?CCCCl>>ll>>??CC?>C>>>>>C=>l?=>>A>>>>>=>>>=>C====>>>==>===>=======>=========$=A======!===$===!==!$$$!=$!!$!$$!!==!=$!!!!!!!$!!!!!!!!!!!!!!!!!!! ! ! !!9q’æúüüúýúüüûúúýþúúúúúúúúúúúúúúúúßÓ;                                                                                                                                                                                                                                            ˜×òóúóú÷óóúóó÷ó÷úóüÿþÿþÿþÿþþÿþÿûÚŸŽ~~}}~~~~}}~‘}}~~~~‘~}~‘€~~~~~¡¡~~~‘~~}~~¡¡¡~~~}}~}~~~~‘¡¡¡¡¡~~~~‘‘‘‘‘‘~‘¡‘~¡¡¡¡¢¢¡¡¡¡‘¡¡~‘¡¡¡¡¡‘‘¡¡‘‘¡¡‘¡¡¡‘‘¢¦¡¡‘¡¡£¡¡¡¡¡¡‘‘¡¡‘££¡‘¡‘¡¢¡¡‘¡¡¡¡¡¢¡¡‘¡¡¡¢¡¡¡£¦£¡£¡£¢‘¡‘¡¡¢¢¡¡¡¡¡¡¡¡¢¡¡¡¢¦¢¡‘¢£¢¢¡¡¡¢¡¡¢¡¡¡‘‘‘¡¡¡‘¡¡¡¡‘¢¢‘‘¡¡¡¡¡¡‘~‘¡‘~¡¡~‘~~¡¡¡‘‘¡¢¡¡¢¢¡~~¡¡¡‘~~~~~~}~~‘¡¡¡¡¡¡¢¡~}}}~‘‘~‘¡‘}}~‘‘¡¡‘~}|}}}~}}~}}}}}}}}}r}~}}}}}}}~}r}}}}}~}s|}~}}r}}~}}}}p}}}}}}~}w}}}}}|}|pv}|}}|ppp|}}}v|}}}}vp||pppv|vpppvvp|p|vplppv}v|vvvpplllllpoppppovvpvplpplpplovolollllllppoolllloppplll>llllC?lllllllllllC?CClllC>???CCCllC??CClC>>CC>>CC>CC>>CC>>>>>CCC>>>C>====ACCA=>=========>>>>>=======>==========$$=========$!$=$!$===$!!==!!!=!$$!!==!!!!$!!!!!!!!$!!!!!!!!!! !! !!   =¥õüüûüúýúûüýúÿýúúúúúúúúúúúúúúúõàž!                                                                                                                                                                                                                                      xÓè÷óóóóú÷óóúóúó÷óúÿÿþÿþÿþÿþÿþÿþé}~~~~~~~}}}~‘~}}~}~~~‘~~~~~~‘‘‘}~~~¡‘~~~~}¡‘~‘‘‘¡‘¡~‘‘~~¡‘~¡¡‘¡¡‘‘¡¡¡¡¡¡‘¡¡‘‘¡¡¡‘¡¡¡¡¡¡¡¢¢¡¡¡¡‘‘¡¡¡‘¢¢¡‘¡¡¢¡¡¡¡‘¡¢¡‘¡¡¡¢¡¡¡¡¡¡¡¢¢¡¡‘‘¡¡¡¢¡¢¡‘¡‘¡¡¡£¡‘¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¢£¡¡¡¡¡£¡‘¡¢¡¡¡¢¡¡¡¡¡¡¡¢¡‘‘‘¡¡¡¡¡¡¡¡¢¡‘¡£¡¡¢‘~‘‘¡¡¡¡‘¡~¡¡‘‘‘¡¡~¡¡~‘¡¡¡¡¡‘~‘‘~}¡‘‘~~~‘‘‘‘~~¡¡~~~~~~‘‘~~~~~~~‘~~}}~‘~}~}}~~}}~}}}}}~s}}~s|~}}}}~}}}}}}}}~|}}}}}}}vp}}|v}}}r}|}}}}}vs}}vr}|}ppp}}rv||||vp}|ppppv|vvppv|pvpvpppppppppvpppoplppoppppppoppppvllooopoloppplllllllllplllllolllllllllllCCllllllCCllllCCCClll?ClC?CCCClCCll>??>ll>>?CC=CC>CCCCA>C>CC>A>CA>=>>>>>>>===>===>>==>=>>==========>=======$========$===!==$!!!$==$$!$=$$$$!!!$$!=$!!!=!!!!!!!!!!!!!!!!!!! !!! !!! ?¢ÖúûúüúýúüüúüýþüúúúúúúúúúúúúúúúñÚ”                                                                                                                                                                                                                          BÓß÷÷úóúóó÷úó÷ó÷ó÷úüÿþÿþÿþÿþÿýÿþõª}s}}}~~}~}}~~~~~~}}}~~}~~~}}}~~~‘‘~¡¡~~~~}}¡‘‘¡¢¡‘‘~~~~~~¡¡‘~¡‘¡‘~‘¡~~‘¡¡¡¡‘‘‘‘‘‘‘¡¡¡¡¡‘¡‘‘¡¡¡¡¡£¢¡¡¡¡‘‘¡¡¡¡¡‘¡¢¢¢¢¡¡£¢¡‘¡¢£¢¢£¢¢¡‘¢¢¢££«¢¡¢¡¡‘¡¡¡¡£¢£¢¡¡¡¡£££¦¢¡¡‘¡‘‘¡£¢¡¢¢¡¡¡¢¢¡¡£¡¡¢¢¢¢‘¡¡¡‘‘¡¡‘‘¡¢¢¡¡¡‘‘¡¡¢¢¢¢¡‘¡¡¡‘¡‘~¡¡¡¡¢¡~~¡¢¡‘¡¡¦£¢¡‘¡¡‘€‘¡££¡¡‘¡‘~‘‘‘‘¡¡‘¡~¡¡‘‘‘¡¡‘~~‘~~~‘~~¡‘~‘‘‘‘~}}~}~}}}~~~}~‘‘}}‘‘~~}~~}}‘‘~~}}~~}}}}}}}~}}}}|}p}}~}|pp||}p}}rv}}}prpp}}ppr|}pv|pp||v}}}v}}pvp|vvpp|}}pppv|pppppv|ppppp|vpolopopppppvppvvvppoooppollplpllllllppllllllllllpplllllollCClllolllllllllCll?ClCCC??CCCClll??lC>>>>?Cl?C?>>CC??C>>>>C?>>>>>=>=?>C>>>C>======C>>CC>=>=========>>==========$=====$=$==$=======$$$!$==!!===$==!!!$!!$!!!=!=!!!$!!!!!$!!!!!!!!!!=!!!!!!!!!!!!!!!!   !!q’Ùúüüúýúýúûüúýþüúúúúúúúúúúúúúúúè×]                                                                                                                                                                                                                                                   Ó×óó÷óóóúóó÷óúóúóóúÿÿþÿþþÿþÿÿþÿýä~}}}}}~~~}}~}~}~~~~~~~~‘‘~~~}}~~~~~‘~‘‘~~~‘‘‘¡‘~~‘‘‘~¡‘‘‘‘‘¡¡‘~~¡¡‘‘‘~‘¡¡¡¡¡¡¡¡‘¡‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡¢¡¡¡¢¡‘¡¡¡¡¡¦¢¡¡¢¡¡¡¡¡¡¡¡£¡¡¡¡¡¡¡¢¢¡¡¡¡‘¡¢¡¡¡¡¡££‘‘¢¢¢¡¡¢¡¡¢£¡¡¡‘¢¡¡¡‘¡¡¡¡¡¡£¢¡¡¡¡¡¡¡¡¢¢¡‘‘¡¡‘¡¡¡¡¡¡¢‘¡¡¡¡‘~¡¡¡¡¡~‘£¡‘¡¡‘¡‘‘‘~‘¡¡‘‘‘¡¢‘~‘‘‘‘‘~‘‘‘~¡‘~~~~~~¡¡~~~~~~~~}~€~~~~~}}~~}~~~~}}}~~}~~~~~}}}}}}s}~}}}}|}~}p}}}}~}}|}|p}}}}||}|}}}}pp}|}p}}|}}vv}|p}}}|v}|v|p}vvpv}}vvv|ppvvppv|pppppppppppvpppvpppppppppoollvpplolpvllllopppoolllolllllpllllllllllllllllllllllllCCCClClC?lllCCllCCCCCCCC>CCCCC?>>CC>?>??C>C?>lC>>=>>>>>C>>>C>>>>==>>>>C>=>>=>===>=======================$!====$===$=$!$$$!!===!!$$$$!!$!!!!!$!$!!!!!!!!!!!!!!!! !!!!!!!! !!!!!!  ! =Žªõüüûüúýúüüúüþþúúúúúúúúúúúúúúú÷àÓ@                                                                                                                                                                                                                                      ›Óñ÷ó÷úóó÷úó÷óóóóúüÿÿþÿþÿþÿþþþýýèŽ}}}r}}}}}~~‘}~~~}}~~‘~~‘~}}}~}}~~~~~~‘‘‘¡‘‘~~~~‘‘~‘£¡‘‘‘¡‘~~~~¡¡¢¡‘~‘‘¡¡¡¡‘¡‘‘¡‘‘‘¡¡¡‘~‘¡¡¡¡¡‘‘‘‘‘¡¡¡¡‘¡¡¡¡¡¡~‘‘¢¢¡¡¡‘¡¡¡¡¡¡¡‘‘¢¡‘¡£¢¡¡¡¢¡¡£¡¢¡¡¡‘‘‘‘¢£¢¢££¢¡¡¡¢¢¡¡¡¡‘¡£¢‘¡¡¡¡¡¡¢£££¢‘¡¡¢¢¡‘‘£¢¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘‘‘¡¡¡¡¡¡¡¡‘¡¡‘¡£‘~¡¡‘~~‘¢¡~‘‘~‘¢¡¡¡¡¡¡~}~~¡¡¡‘‘‘~~}~~‘~}~}~~}~~‘¡¡¡¡‘~}~}}~‘~~~~}~}}}~~|}~~~~~}~~}}~}}}r}}}}}~}}s}r}~|p}s~}}}~}}p|}}}||v|vv|vpp}}|vv|vprv|||ppprvpv|prvpp|}}ppv}vppppoopvppppllp|plppppopppplpplpplpolpplllllllpoppolllllvplljlllpolClllllClllCCCCCClCllllllC>ClCClCC>>CC>>>>?>?ClCClC>>?>=>>>C>CC>C====>===>>>>=>>?>A>>=====>==>CA=>=?==$$=>>A===$=========$====!==$!!===$==!!$!!!!!=$!$!=!!!!!$!!!!!!!! !!!!!!!! !!!! !!!  ?Óúûüüúýúýúûüüþþúúúúúúúúúúúúúúúõà!                                                                                                                                                                                                                                           ]Óæóúó÷óúóóóóúóú÷óúþÿþÿþÿþÿþÿÿÿÿõª~}}}}~}}}~~~~‘~}}~}}~~~~~~‘~}}~}‘¡}~‘~~~‘‘‘~‘¡~~‘¡¡¡‘‘¡‘~‘‘‘¡¡‘‘‘¡¡‘¡¡¡‘¡¡¡‘¡¡‘~¡¢¡¡¡¡‘‘‘‘¡‘¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡‘¡£¡‘¡¡¡‘¡‘‘¡¡‘¡¢¢¡£¡‘¡¡£¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¢¢¡£¢¡¡‘¡¡¡¢¢¡‘££‘‘¡¡¡£¡¡¡¡¢¢¡¡‘‘¡¢¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡‘‘¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡~¡¡‘¡¡¡~~¡‘‘¡~~¡¡‘¡‘‘¡‘¡¡‘¡¡~~‘~~‘‘‘‘‘~~‘~~~~~}~~}~~~~~~}~}~~~}~~}~~}}~~}}}}}~}~}}}}}}~}}}}}}}}r}~}}}}}s}}}p|}}}}~}s}||}||vvvr||}|p}}|vr}p}}}v}}pvpp}}ppv|ppp||vvvp|ppppppppppoppppvvppppopllpppopvooploolppollopllovollllplllpllClllplllllllllCllCllClllCllllllC>>?ClllC??CC>>>?>CCCCCCl>>CC>>>>?C>>AC>=>=>C>=>>>=>>>=>A>>=>>>===>=>A>=========================$$===$$==$====$$!!!$$!$!!=!!$!$!!!!!!!$!!!!! !!!!!!!!!!! !!!!!!!! $s’æúüûúýúýúüüüýþüúúúúúúúúúúúúúúúèÙƒ                                                                                                                                                                                                                                                       ;ÓÙóó÷ó÷óóúúóó÷óóóúüÿÿþÿþþÿþþþþþýä ¡~~~~}}~}}~}~}}~‘~~~‘~}}}~‘~~~¡‘}}~‘‘‘‘‘~~~~~‘¡‘‘‘‘‘~~‘¡¡~~‘~~~‘~‘¡¡¡¡~‘¡¡‘‘¡‘‘¡‘~¡¡~‘¡¡‘‘~‘¡¡¡‘¡‘‘‘¡¢¢¡¡¡¡¡‘¡¢¢¢££¡¡‘¡¡¢¢¡¡¡¡‘¡¡¡‘¢£££¡¡¡¡¡‘¡¡¡‘¡¢¡¡£££¢¡¡¡‘‘¡¡‘‘¡¡¡¡¡¡¢£¢¡£¡¡¡‘¡¡¡¢¡¡‘‘¡¡¡¡¡¡¡¡¡£¢‘‘¡¡£¡‘‘‘¡‘‘‘‘‘~‘¡‘‘‘‘~~¡¡‘~‘¡~~£¢¡‘~¡¡‘~~~~~~¡¡‘‘~‘¡~}~~~‘~‘‘‘‘‘¡¡¡¡~~‘~}}}}~~}~~~~~~}}}~~~~~‘~}}}}}}~~~}}~~}~~}}~}}}}||}}}}}}vp}~}r|}rv}}}}}p}}}}}}}}}}ppprppvpp|vprv|pppv}vppp|v|vpllp}|pvvpppv|ppp}}vpppplppppollppvvvpllppvvppllpllpploplloplppllllClllpll?llllllllllllllpoC??ClC???Cllll>CCClllCllC?>?C>>CC>>CCC>?CC>=>>>C>>>AC>==>C>A>>>=====?C=>=>=====>>========$$=>===$$=!======$=$!!$=$!==!!!!$$=!$!!!===!!$!!!!$$$$=!!!!!!!!!!!!!!! ! !!!!! !!      =¢¬ùüüüüúýúýúûüýþúúúúúúúúúúúúúúúúèÓZ                                                                                                                                                                                                                                          Ó×óúóúóúó÷óúóóú÷úóüÿþÿþÿþÿýÿþÿþÿí¥Ÿ~~~~}}}~}}~~~}~~~}}~~‘~}~}~~‘}~~~}}‘‘~~‘~~~~‘‘‘‘¡‘~‘¡‘~‘¡~‘‘‘~~¡¡‘‘‘‘‘‘¡¡¡‘¡‘~‘¡‘‘¡¡¡¡¡‘‘¡¡‘¡¡¢¡¡¢¡¡¡¡¡‘¡¢¡¡¡¡¡¡‘¡£¢¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¢¡¡¡¢¡¡¡¡¢£¡¡¢¢¡¢¡¡¡¡¡‘¡¡¢¡¡¡¡¢¡¡¡¡¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡¢¡¡¡¢¡‘¡¡¡¡¡‘¡¡¡¡¡‘¡‘‘‘‘‘‘‘‘¡¡‘‘‘¡‘~¡‘¡¡~¢¢~~‘¡¡‘‘‘‘‘~~~‘‘¡¡~‘¡‘~~~~~‘~‘¡~~‘‘~‘~~‘‘}}~~}}~~}~~}}}~~~~~~~}~r}~~}~~}}}}~~}}}~~}}}v}}}}}r}}}}}~}pp}}}}|}}}|}|r}|}}}v||ppvp}pp}|ppp}}|vrp}pp|v}|pppppvppv}pop|popp|}vpppolpppppllppppppllppppppllopllpplllllpllolllllllllllllllClllllClllllllClCCCC>?ClllCClCllClCCCC???>C>CC>?CCC>C>CC>>>=>C>>>>>==C>>>>>>>=>=>>>>=>=>>===>>========================$!===$$$$$===!!!!$!!!=!!!$=!!!$!!$=!!$!!!!$!!!!!!! !!!!!!!  !!!!! !  o¢Úúýúûúýúýúüüüþýúúúúúúúúúúúúúúú÷àÓB                                                                                                                                                                                                                                             ”Óñó÷ó÷ó÷÷óó÷úóóóóúþÿýÿþÿþÿþÿýþþú¬s}}}~}}}}}}~~~}~}}~~~~¡‘~~~‘}~~‘~~‘‘~}~~‘‘~}~~~~~~~~~‘‘~~~~¡¢¡¡¡¡¡~‘~~‘¡¡‘‘‘~~¡¡‘¡¢¢¡‘‘‘‘~‘¡‘¡¡‘¡¡¡¡¢¢¡¡¡¡¡‘‘¡¡‘¡¡¡¡¡¡¡£¡¡¢¡¡¡¢¡‘¡‘‘¡¢¡¡¡‘‘¢¡¡¡‘¡¡¢¡‘¡¢‘‘¡¡¡¢¡¡¡¡¢¡¡‘¡¢¡¡‘‘¡¡¡¡‘¡£¡£¢¢¢¢¢¢¡‘‘‘‘¡¡¡¡¡¡‘‘¡££¡‘‘‘¡¡¡‘‘¡¢¢¡¡¡¡¡¡¦¦¡‘‘¡¡¡¢¡¡¡¡¡¡‘¡¡~~~¡‘~~¡¡~~¡~¡€~‘‘‘¡¡‘‘~~}~~~~‘‘‘¡‘~~~~‘¡‘~}‘~~}}}~}~~~~~}~‘~~~~~}}}}}~}~}~}}~}~}}}~}}}}}~}}~}}rw}~}~}v}}}}p}}vp|v}}}}v}|vrvvp}}vpvpv}}|pp|}|v}vpppp|ppppppv|||vp}}pppvpp||ppvppvplopplppovpppplllplolppoppolllplllplloploll?lllppolllllloolCllolllllC?ClllCllllCCCCCCCCCCCC?>>CC?>>>>>>CC>>C>>>>>>lC>>=>C>==>C=>CA====>>===========>======AC>A>======$$=====$!!$==$====$$$!!$!$=!$==$===!=!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!  !   ! 9sªèüúüüýúýúýúûýþüúúúúúúúúúúúúúúúõÚ›9                                                                                                                                                                                                                                            ZÓæóóúóúóóú÷óóúóúóóúÿÿþÿþýÿþÿÿþÿþè’}}~}}}~}}}~€~}~}~‘~}~‘¡}~~~~}}~~~‘‘~}~‘~~}~¡~}~‘}~¡‘}~¡‘~¡~¢¢~‘‘‘‘¡¡‘¡~~‘¡¡¡¡¡‘‘‘¡‘‘¡¡‘‘‘¡‘¡¡¢¡¡¡¡¡¡¡¡~¡¡¡‘‘¡¡‘¡¡‘¡¡£¡¡¡¡¡¡¡‘¡‘‘¡£¡¡‘¡‘¡¡‘¢¡¡¡¢¢¡‘¡£¡‘¡¡¡¡¡‘¡¢¡£¢‘¡¡¢¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢¡¢¡¡¡¡¡¡¡¡£¡¡¡‘¡¡¢¢¡‘¡¡‘¡¡‘¢¦¡‘‘¡¡¡¢£¡~¡¡¡¡£¡‘¡‘¡¡‘~¡¡‘‘‘‘¡‘¡~‘¡¡‘¡¡‘~~~~‘‘‘‘‘‘‘~~‘‘‘~~‘~~}~~}~€~~~}~~‘‘~}}~~~~}}~~~}~}}}~~~~}}}~}}}}}~}~}}}}}r}}}}r}}r}}}}}}||vvvr}}}}vvvppv}vvrpp}||ppv|||}|pppv|vp|vppppv|v|pvpppppvvvppppp}poploopvppvoppolloopppplppllplolloplClvllllllloollllllllollllllllllCClCCllCCllClCCC?ClClC>?CCCCCC?C>>>>CC>>C>?C?>ClC>>C>C>=>>C=>C>>=>>>>==>>=======A=========C>=====$=========$=======!$!=!!=$$!$$!$==!$$$$$!!!$!!!!!!!!!$!!!!!!!!!!!!!!!!!!  !! !! o¬úüýúúúýúýúüüþþúúúúúúúúúúúúúúúúèÙz                                                                                                                                                                                                                                          "ÓÙ÷÷óóóóúóóúóó÷÷÷óüÿÿýþÿÿýþýþþÿýõÕ  }~~~}}~~‘‘~}}}‘~}}~}}~‘‘‘‘‘~~}}~~}}‘‘~‘~~¡¡~}¡¡~}~~}~¡‘~~¡¡~~‘¡‘~‘‘¡¡~‘¡¡¡¡~‘¡‘‘¡¡‘¡¡¡‘¡¡¡¡‘~~‘¡‘¡¡¡¡¡¡‘¡¡¡‘¡¡¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¢£¡¡‘‘£¢¡‘¢¦¡‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡‘¡¡¢¡¡‘‘¡¡¢£¢¡‘‘¡‘‘¡¡‘¡¡¡¡¡¡‘‘¡¡¡¡¡¡¡¢¡¡¢¡‘‘¡‘~¡¢‘‘¡‘¡¡¡€¡¡‘~~‘‘‘¡¡‘‘~~‘~‘¡~~~~~‘‘‘‘‘~~~~~~~~~¡~}}~}~~‘‘‘~~}}‘~~}}~~~‘‘~~}}~~}~~}}}~}}~}}}~}}}s}~~}|}}rv}}}|}|}}}}}|}}}}}}~}~}r}}}}prvr}|}rp}||}}}}}}|vpppp|}}|vpp|vppppvpppppppvppppvppplpvvppopopvv|pllpvpoopoplplllpvppplllplllpolollllpllCloolClCllllCClClCClllClllC?>?CllA>>?ClC>?lllCCCCCCCCCClC?>>Cl>==?>=CC>CC>A>====>==>>=>==CA==C>=======>===$=============$$====$!$=$=!=======!$=$$!!$!!!!!!!=!!$!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!   =ŽªæüûúýýýúýúýúýþýúúúúúúúúúúúúúúúúæÓ]                                                                                                                                                                                                                                                             ›×ñóúóúóó÷÷óóúóóóúóüÿÿþþýÿÿÿþÿþÿþí¥Ÿ~}}~}~~~~~‘~}~~}}~~~~~}~‘‘}}~}‘~~~~~~‘~‘‘~~‘~~‘~~~~~~~‘~~‘~‘~‘¡‘~¡¡‘~¡¡‘‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡‘¡¡‘‘¡‘¡£¡¡¡¡‘‘¡¡¡‘¡¡¡‘¡¡¡‘‘¡¡¡¡¡¢¡¡¡¡¡¡¡¡£¢¡¦¡‘‘¡¡¡‘‘¡¡¡¦¡¡¡¡¡¡¡¡¡¡¡¡‘¢¡¡‘¡‘¡¢¡‘¡‘¡¡¡¢¡¡¡¡‘¡¢¡‘¡¡¡¡¡¡¡¡‘‘‘¡‘~‘£¡¡¡¡¡¡¡¡¡‘~¡¢¡‘‘‘€‘‘¡¡¡‘~¡‘~‘¡‘~‘¡‘~~‘‘‘‘¡~}‘¡~~}‘‘~~~~~~‘~~~~}}~~‘‘~‘~~}~~~}~~€~~~~~}}~~}~~}}}~~}}~}|~~~}}}}~~}r}}}r}}}v}}}}|}}~}}}~}}}}}}}}}}}}}pp}}}}pp}}}~|v}}}}vvvv|pv||ppppppppvvpppppvppppvvvppppppvpppppvvpppopvppopololpplvppvppolplllolllpplllllllplllllCllllllC?CllCCCllllCC?>llC?>>ClC>CllCC>??CCCllCCll>=CC>=>C>>C?>>>l>==>=>>=>>>=>>>>>==>==================>===>===$!=====!===!===!$==!!!!==!!=!!!!!!!==$!$!!$!!!!!!!!!!!!!!!!!!!!!!!!!  !!   !?¢Óúúüýúúúüúýúýýþúùúúúúúúúúúúúúúúõßž;                                                                                                                                                                                                                                                   ]Óàóó÷ó÷úóóúóó÷úóó÷üÿÿþÿÿýþþþÿýþþõ¬}~}}}}~}}~~}}~~~‘‘~}}}~~}‘¡~‘‘~~‘~}~~~}~}~‘~~‘‘¡¡‘‘¡¡‘‘¡‘‘~‘‘¡‘~~‘¡‘‘‘~¡‘~~‘‘‘¡‘€¡¡‘~‘¡‘¡¡¡‘¡¡‘¡¢¢¡‘‘‘¡¡¡‘‘‘¡‘‘¡¡¡¡¡¡¡‘¡‘¡¡¡¡¡¡¡‘¡¡‘¡¢¡‘¡¡‘‘¢¢¡‘¡¡¡¡¡¡‘¡£¡‘‘¡¡¡‘‘¡¡¡‘‘¡¡¡¡¡¡¢£¡¡‘¡¡¡¡¡¡¡¡££¡¡‘‘‘¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¢¡¡‘¡¡‘‘¡¡~‘¡‘‘¡¢¡‘‘¡‘‘~~¡¡‘~‘}¡¡‘‘~}¡}}}~‘‘‘~~~~‘‘~‘‘~~~~~~}~‘‘‘~}~‘‘~}}~}~}}}~‘}~~}}}~~}|}~}}}}}}pp}}}}~~}}}rv|~}}~}p}}|vv}}vv|pvv}}}}}||}}v|v}}vprvp|vpr}vp|vp|}}|||vv||vpvppppp|vpppppppoooopplloollppoppppploolllollloooollllopllloollllllol?lllCllllloolllll?llCCCllllCCllCl?Cll>?CCClCCC>>>?>>>CC>=>CC>CC>>==?=>CC>C>>>C===>======>==>>C>>=A=>=>>========!$=====$=$!$$===$$==!!==$===$=!!$==!$!!!=!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!    9s’æúüûüüüýûüúýúþýúúúúúúúúúúúúúúúúèÙ{                                                                                                                                                                                                                                                               ÓÙóúóúóóúóóóúóóóúóúþÿþþýÿþÿþýÿþÿþæ¢}~~}s}}~}}~~}}}~~~~~}~~~~‘¡~}~~~~}~~‘~}~‘~~¡¡‘¡‘‘‘‘‘¡‘‘~‘¡‘‘~‘~‘¡‘‘~‘~~¡¡¡¡¡‘‘¡‘¡¡¡‘‘¡¡¡¡¡¡¡‘¡¡¡¡‘¡~¡¡¡¡¡¡¡¡‘~‘¡¡‘¡¡¡¡¡¡¡¢¡¢£¡¡‘¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡¡¢¡¡¢¡¡¡¡¡‘‘¡¡¡‘¡¡¡¡¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡¡¡‘‘‘~‘¡¡¡‘¡¡‘¡¢¡¡¡¢‘~‘¡‘‘¢¡~‘¢¡¡‘~¡¡¡~~~~¢¡~~¡~‘‘‘¡~~~‘‘~~}~~~~‘~‘‘~‘¡~‘‘~~~~~~~‘}~}‘~}}~~}|}~~~~~}}}}}}}s}}~~s}}}}|}}}|~~}p}}}p}¡}}|}}|}vrv}rp}}rpp}}}}}}}}r}||}pp|pp}}pv|vvvvpp}pp}}vp|vrvppppppvvpppppvvpoloppllpollppllppppppolollllplpopplplplllloopollllllCCllClllllllllllClClC??llllCCllCCCCll??lCClCCCC>>?C>>?CC=>?CCCC>>>=?>>C?CC>=>>>===>>===>>==A>=>>>===>================$==$!==$==$$==!!!$!==!$$=$=$=!!!$!$=!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!    !l ¬úýúüüûúúüúüüýþýúúúúúúúúúúúúúúú÷àÓY                                                                                                                                                                                                                                                               ”×èóóó÷÷ó÷úóóúóúóóúüÿÿýÿþÿýÿþÿýþþõ¬}}}}}~~}}~}}}~~}~}~‘‘‘~}}~~~}~¡~~~~‘‘~‘‘~~~‘~}~‘‘}~‘‘~~‘~~‘~‘‘¡¡‘~‘‘¡‘¡~‘¡‘~‘¡¡¡‘¡¡‘¡‘‘¡‘‘¡¡¡‘‘¡¡‘¡‘¡¡¡‘‘¡‘¡¡¡¢¡¡¡¡¡¡¡‘‘¢¡‘‘¡¡‘¡‘¡¡¡‘‘¢¦¢¡¢¡¡¡¡¡¡‘¡¡¡¡¡£¡‘‘¡¡¢¡¡¡¢‘‘¡¡¡¡¡¡¢¢¡¡‘‘¡¡‘¡‘¡‘¡¡¡¡¡¢¡¡¡¡¡¡~‘¡£¡¡¡¡¡¡¡‘‘¡¡¡¡¡¡‘‘‘‘‘¡¢‘‘‘~‘¢¡~¢¡¡¡‘~‘~¡¢‘~~}‘¡¡‘~¡¡¡¡‘~‘¡‘~~~‘~}}}~~}~‘¡‘~}~‘~}}~~}}}~‘~~‘}}~~}}}}}r~~}}}}}}}~}}}~}}~~}}}}}p~~}v}}|p|}}p||}}p|}}}pp}v}|vvv|pppp}}}ppp|}vpp}}pvrvpppp}|pvvpvpv|vvpppppopoopppppv}ppvppop}vllololllllpppopplllllllllllCllllllCllllllllllllClCCCCllllllC?lCCCCC?lC>CC?CC?>CCCC>?>>>>C?>>??>>?>>>>CCCC=>>>>>A>=>C>=?>>>>=>>===>>=====================>==$======$$===!$!====$=$!=!!!$!$!=!!!!!!!$!!!!!!!!!!!!!! !!!!! !!!!!!!! !!!!!  =Ž¢æúüüûúüýüúýúýýýúúúúúúúúúúúúúúúúòÚ›;                                                                                                                                                                                                                                                                                @Óàóú÷óóúóóúóóóóúóóúþÿÿþþýÿþýÿþÿþþæ’s}}}~~}}~}~}}~}~~‘~~~}~~}}~~}~¡‘~~~~~¡¡~~‘~~~~~~}¡‘}~‘¡~¡‘‘~¡¡¡¡‘~‘¡‘‘¡‘‘‘‘‘‘~¡¡¡‘‘‘¡¡‘¡‘~‘‘‘¡¡¡¡‘‘‘‘¡¡¡¡¡¡‘‘¡¡¡¢¡‘¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¡£¦¡¡¡¡¡¡¡¢¡‘¡¡¡¡¡¢¢¡¡¡¡¡¡‘¡¡¡¡¢¡¡¡‘¡¢¢¡¡¡‘¡¡¡‘‘‘¡¡¡£¡¡¡¡¡‘¡‘‘‘¡¡¢¡‘¡¢¡¡‘¢¢¡¡¡‘¡‘¡¡‘¡‘~~¡¡‘‘¡¡‘¡‘‘‘‘~~‘¡¢‘‘~~~‘‘‘~‘¡¡¡¡‘‘¡¡‘~~~‘~~~}~}~~‘¡‘~}~~~~}}}}}~~~‘~}}~~}}~}}}}~}}}}}}}|}~~}~~}}}}}}~s|}~}}}}|pspv}|p}}p}}}}p}rp|vrv}|ppppp}}ppv|}}vvrv}pvpppp|pvv|v|p|vvvpvvppppppoppvpppvvpppoppppplllplllpppoppoplll?lplllllllllllllllllollllCllC>?lCClllllllCClCCC>?CC?CC>?CC??CC>C?>>?CC?>C>>>>?>>C>CC>C?=>>==>>=>l>=>=>>=>C>============>================$=====$$!!=!==!===$!==$$$!!!!!=$!!!!!!$!$!!!!!!!!$!!!!!!!!! !! !!!!!!! ! !! ! $p¢­úúýúüüúüûüýúýþýú÷÷úúúúúúúúúúúúúèÓz                                                                                                                                                                                                                                                                  žÙò÷óúóóúóó÷úóúóóúúüÿüÿþÿýÿþÿþþþþúÓŸ}}~~}}}~~~}}~}}~~}~}}~}~}~~~}‘¡‘‘~}~~‘‘}~~‘~~¡‘‘~}~¢¡~~~~}‘~~‘~¡¡‘¡‘‘‘‘‘‘¡‘~¡‘¡¡¡‘‘¡¡‘¡¡¡‘‘¡¡¡¡¡¡‘¡¦¢¡¡‘‘¡~‘‘‘~¡¡¡¦¢¡‘‘¢¡¡‘‘¡‘‘¡¡‘‘¡¡¡£¡‘¡¡¡‘¡‘¡¡¡¡¡¡¢¡‘‘¡£¡¡¡‘¡¡¡¡¡¢¡¡¢¡‘‘¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¡¡‘¡‘‘¡~¡¡‘‘¡‘~~‘¡‘‘¡‘¡‘‘~‘‘~~‘‘¡~~‘~‘¡~~~~‘‘‘‘‘~~~~~~~~‘‘‘~~}~}~~~~~~€~~‘‘‘‘}}~~}~~}}}~}}~}~~~~}~‘‘}}s|}}~~}s}r}}}~}}v}}||}}}}}p~}}}||}}|}}}pp}}|pp}p|}}|}pp||vvp||pp||v}p|vppp|pppppvpppp|pppppppppppoppoooppppllloopvvllppollplplplllpollopoolllllloollllllllllllllCCllllCCCClllllllCCCCClC?lCCC>>Cl>CC?>>CCCC>>?=>?>>>=>>>>A=>>A==CC>>====?>===C===>>====C======$==$================!=$!=$$=$$!=$$!!$=$$!!!!!$!!!!!!!==!!!!! ! !!!$!!!!!! ! !   =Žšèúýúýúûüüüúúüþþú÷úú÷úúúúúúúúúúú÷àÊB                                                                                                                                                                                                                                                                          zÓèó÷óúóóóúóó÷óóúóóúÿÿþÿþÿþþþýÿþÿþ襟~~~}~~~~~~}~}}}}}}}}}~}~~~€~~}‘‘‘}~¡‘}}~‘~}¡‘¡}~¡¡‘~~~~~‘~~‘~~‘¡¡¡‘‘‘¡¡‘¡‘‘‘‘~‘‘‘¡¡‘‘¡¡¡~‘¡¡‘‘‘~~¡¡¡‘¡~‘¡¡¡¡¢¢¡¡‘‘‘~¡‘‘¡¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡‘‘¡¡¡¢¡¡¡¡‘¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡¡¢‘¡‘¡¡¡¡¡¡¢££¢¡~¡¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡‘¡‘‘¡~~~~‘¡¡¡¡¡‘~~‘‘‘‘‘~‘~¡~~‘~~~‘¡‘‘‘~‘~}~~~~‘‘~~~‘‘‘}}~~~~~~~~~}~‘~¡¡}}}}}}~~}}~}}}~‘~}~~‘}}}}}}}}}}|}}}}}}r}|}}r}}}}}}v}}}|s}}}}}}pp}}}pppp}}}}pvv||vppp}ppvp}}pp}vpp|pppppppplppvvvvppplovplppllpppppllpppppvplopollllllollovollpplollllClpllllllllllllll?llllCClllClllllll??CC?CCCCCC?>>CC?CCC??>CCC>>>>=>>=>>==>>>>>>>>=A>CC==>C>=======>>>>=$=A>=========$==$$====!======$==$!!=$$==$!==$!=$!!!!!!=!!!!!!!!!=$!!!!!!!$!!!!! !! q‘Ùúýúýúüüûúüüüýþý÷ú÷÷ú÷úúúúúúúúúúñÚ”!                                                                                                                                                                                                                                                                                ;ÓÙó÷óóúóúóóúóúóóóú÷üÿþþþþþÿþÿýþþþúä¢}}}~~}}}~~}}}~~~~~‘‘€‘~~~‘~~}}~~‘‘~~‘‘~~~~‘‘‘}~‘‘¡‘}~‘~~~~¡‘‘‘~~‘‘~~¡‘‘‘~‘‘‘¡¡‘‘‘‘‘¡~~‘‘¡¡‘‘¡‘‘‘¡¢¡¡¢¡‘¢£¡‘‘‘‘‘¡¡‘‘¡¡‘¡¢¢‘¡¡¡¡¡¡¡‘‘¡¡‘¡¡£¡~‘‘¢¦‘¡¡‘¡¡¡¡¡‘¡¡¡~‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘~‘¡‘‘‘¡¡‘¡‘‘¡¡¡¡¢¡‘~‘¡‘¡¡¡¡¡¡‘‘~‘‘¡¡¡‘¡¡¡¢¡~‘‘‘¡‘‘‘‘‘‘‘‘‘‘~~‘‘‘‘~‘~~~~‘‘~~~¡‘~~}~~~~~~~~~~}~‘~}}}~~}}‘~~~}}}}~~}}}}}~~}}}}}~~}}~}~}}}}}}~~}}|}}}s|}}|vv|}}}||}p|v|}p}}|}|}vv}}|vv||pp||}|v}vpppp|}ppp||pppppp|vvpppvpppppppplv}pppvvplpppplpvppolpllpooppplloolllolloplllllollClolll?llllCCllC?llClllCCC?ClClCll?ClC????CClC?ClCC?>>?C>>>C>?>?CCC>>C?AC>>>A>>==>>C>=A>>=>==>>===>=A=========>=>=$===$=============!=!$==!!$$$!$=$!!$$!!==!!=!!==!!!!!!!!!!!=!!!!!!!!!!!!! ! ! j ªõüúýúýúûüýúûüýþúú÷úú÷ú÷úúúúúúúú÷æÓ_                                                                                                                                                                                                                                                                            ×òóúóóóóúóó÷óóú÷óóúÿÿþÿþÿþþýÿþÿþÿõ¬}}}~~}}}~~~~~‘~‘‘~~~~~~~}}~‘‘‘~¡‘}}~‘¡‘}}¡‘¡‘~~~~~‘}~¡‘¡‘~~¡‘~~‘‘¡‘¡¡‘‘‘¡¡‘~~‘‘‘~~‘¡¡‘‘¡¡~¡£¡¡¡¡‘¡¡¡¡¡‘‘¡¡¡‘~‘¡¡¡¦¢¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡~¡¡¢‘¡¡‘¡‘¡¡~¡¡‘~¡¡¡¡¡¡¡¡¡¡~~‘¡‘‘¡¡¡¡‘¡‘¡¡¡‘¡¡‘‘‘‘‘¡¡¡¡¡¡¡‘¡¡~‘¡¡¡¡‘¡¡‘~~~‘¡¡¡‘¡¡‘¡¢‘‘~~¡¡‘~~‘¡¡¡¡¡~¡‘~~‘¡‘~~~~‘~~~~‘¡‘~}‘‘‘~~~‘‘~~}~~~}~}~~‘‘~~~}}}~~~}~}}~}r}~~~~‘~|}s}}}~~}}}}vr}}s}~}}}}}}}|~}vrp}|}}}rp}}pp}v||}}}vr}}}}pp|vppvpv}}|}v|pp|pppvpvppvppppppppvpppppvvppppvvvppppppppppppppllolopplpvpollllllolllllllllllClllllllCCC??>llllllllllC?CCllllCCCCCCCCC?CCCCC?ClC>>>?CC>>>C?>C>CCCC?CCCC>>>>>==>=>C>=>A>==>=>C>==A>>>======$=====$===$$=======$$====!!!=$!!!!!!!==$!$!!==$==!!!=$!!!!!!!!!!!!=!!! !!!!!!!!!!       =Ž¥àüúýúýúüüúúüüýþýú÷ú÷÷ú÷úúúúúúúúúõàž@                                                                                                                                                                                                                                                                                       _Óßó÷÷úóúóóúóúóóóúóúüÿþþþÿþþÿýþþþýýæ’ŽŽ}}}}}}~}}}}}}}~~~~~~}}}}~~~~}~~~~€‘~~~}‘~~‘¡~~‘~‘‘‘}}‘‘~~‘‘‘‘‘‘~‘‘~~‘‘‘¡¡‘‘‘¡¡¡¡‘‘‘‘¡‘‘‘‘¡¡¡¡‘¡Ÿ¡¡‘‘¡¡‘‘¡¢¡‘‘¡¡‘‘¡‘¡‘¡¡¡¢‘‘¡‘¡¡¡‘¡¡¡¡‘¡¡¡¡‘¡‘¡£¡¡¡¡¡¡¡‘¡¡¡¡£‘‘¢¢¡‘¡¡¡¡¡¡¡~¡¡¡¡¡¡‘‘¡¡¡¡¡‘‘¡‘¡‘¡‘‘‘¡¡~¡¡¡¡‘¡¡‘~~‘¡¡¡‘~‘‘‘~¡¡~‘¡‘‘‘~‘‘¡‘~~~~}¡‘~‘‘‘~~~~~‘~~~~}~‘‘}}~~}~~~~~~}~}~}~}~‘~}}~~}}~~}}~}}}~}}}‘}}}}~}}}~}}}}}r}}}}}}r}}}|v~|vp}}vv||||}}pp}}p}vvvpp}||v}|vvpp}pppv|}pppppv||vppppvvppvpppppppolopploppppllpollppppllppllllllppoloplllllpoloopllollllCllllllllllllCCllCCCCClClC?CCC?C??CCCCC?C?CC>>CC>?>>CC>>>>>>>C>>>>>=>=>>>C>==>>>>>C====>>==>>======>=>$=============$$==$$====!==$$!=$$$==!$!!!$=!$!!!!!$!!!!!!!!!!!!$!!!!!!!!!!!! !!!! o Õúúýúüúýúûüüýúýýú÷ú÷úú÷ú÷÷úúúúúú÷è×z                                                                                                                                                                                                                                                                            žÙòóóóóóú÷óóóúóúóóóúÿþÿþþýÿþÿþÿþÿþúÕ~}}}}~~}}~~}}}~~~}}}~~~}}}~‘~}}~~~‘‘‘~}~~‘‘‘~}~¡‘¡¡¡~~‘‘‘‘‘‘‘¡¡}‘~~~~‘‘‘‘¡¡‘‘‘¡¡¡‘~~‘‘¡¡~¡‘‘¡¡¡‘‘‘~‘¡¡¡~‘¡¡‘¢¦¡¡‘€¡‘¡¡¡~~¡‘¡¡¡¡¡¡¡‘¡¡‘¡¢¡¡¡¡¡¡¡£¡¡¡¡‘¢¡¡¡¡‘¡¡¡¡¢¡‘¡¡¡¡£¡¡‘‘¡¢‘‘¡¡‘¡¢¢¡¡‘¡‘~~¡‘‘¡‘¡¡¡~‘¡¡‘¡¡¡¡‘~~~~~‘¡¡‘‘‘‘‘‘¡¡¡¡~~~‘‘‘‘¡‘~~‘‘~}‘¡‘~‘‘‘‘‘~~}}‘~‘‘~~‘‘~~~~~}~~}~~}}}}}}~~~‘‘}}}}}}~}}|}~~~}}}}r}}~~}}}}}}}}v}}~}}}}}}}~}svr}}v}|}|v||}p|pv}vpr}|pp|}pp|}vrpppvppp}}pppppp||vppv}vpvvppppppopooooppolpvpllplllpplllllpllllllppoolvlllllpoolpplplllllllllllllllCCCCCClCCl?>ClC???CC>?C?CllCCC?C?>>>C>>>?>C?=>C>==>C>>>=>>>====>C===>>=>>>>==>==>>====>=>=>================!==!$!$$=====!$$!===$!!!!=!!!!!!=$!!!$$!!!!==!!!!!!!!!!!!!!!!!! ?šëüüúýúýúüüûúúýÿý÷ú÷ú÷÷ú÷úú÷úúúúúõàÇB                                                                                                                                                                                                                                                                                            _׿ó÷úóúóóúóúóóóóúóúüÿÿþþÿýþþýþþþþþõª}}}}€‘}}~~}~‘~~‘}~‘~~}~~~~‘~~~}~‘~}}~~‘~~~}~¡‘~~~~~~‘‘‘‘‘‘~‘~}¡‘¡¡‘‘~~‘‘‘¡‘~‘‘¡‘¡¢¢‘¡¡‘~¡¡‘‘¡¡‘¡¡¡¢‘~¡¡¡¡¡‘¡‘¡¡‘¡¡¡¡¡¡~¡¡¡¡¡¡¢‘‘¡‘‘¡‘¡¡‘¡¡‘‘¡¡¢¡¡‘‘¡‘¡‘¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡‘¡‘¡¡¡‘¡¡¡‘¡‘‘¡¡¡‘‘‘‘¡¡¡~¡¡‘¡‘‘¡‘‘¡~~¡‘‘¡‘‘‘‘‘~‘‘~~~~~‘‘‘‘~~‘¡~~‘~~}~~~~~~‘}~~~‘~~}}~‘~~}}~‘~~~~~}~‘~}}~~}}~~}s}}~~}}}~}|}s}}~}}}}}}r}}|}}}s}}p}}}}}}}|p|vps}|vv}||}pp}}pp|}p|}}p|vvppp|||vpvvppv|vpppppppoppppvvpvppppooppplopolpvpllvvlppllopploplllpoopollllllllllCClllCllolllll?CCCClClllll?ClClClCCCC>?CCCCCCCCCCCC>=CCC?>>?CC>>CC>>C>>C=>C>>>=>>>=>>>==>=>>=====>=====>=============$$$===!=====$$$$!=$==!!=!!=!!===!!!!=!!$!!!$!!$! !$!!$!!!!!!!!!!!!!!!! >Ž’àüúûüúýúýúûüüýþýú÷÷ú÷úú÷ú÷÷úúúúúúèÙƒ                                                                                                                                                                                                                                                                                  ž×òó÷óóúó÷óóúóú÷óóóúüÿþÿþýÿýÿþþþþþþ襠~}|}~}}~~~~~~‘‘~}~~}~~~~~}~}}}~~~}}}‘¡‘~}~}~¡‘~‘~~~~~‘‘~~~¡¡¡~~~~~‘‘~¡¡¡¡¡¡¡‘‘¡‘‘‘‘‘‘‘‘¡¡¡¡‘¡¡¡~¡¡¡¡¡‘‘‘¡¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡‘¡‘‘~¡¡‘¡¡‘¡¡¡¡¡¢¡‘‘¡¡‘‘¡¡¡‘¡¡¡¡‘¡¡¡‘‘‘¡‘‘¡¡‘‘¡~¡¡¡¡¡‘¡¡‘~¡¡¡¡‘‘¡‘‘‘‘¡~¡¡‘¡¡‘~~~~‘¡‘‘¡~~~~~‘‘~~~}~~~~‘¡‘~}~¡¡‘~~~‘~~~~~~}~}~~~}~‘‘~}}~~~~~~~~~}}~~}}~~}}~}}}}}}r}~}}}}}}}}|}}|p}}}}vr}}||}p}}}}}}|}vr}pv}}pp|}r}pv|}}p}}vp}}|pppppvv}}|p|||ppvppv|pppppppppppp|vpppoppppllpolovpllvppvppllopppppllppllpolpllllllCllClllllllClCCCCC>lllClllCCCllCCCllCCC>>ClCCCCCCCCC>>CCCC==>lC>>CC>CC>CCCAC>>>=>=>>CC>>====>===========>A===$$=>===========$9!$====!!!!!$!==!!!!=======!!$!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!! !$q’Úúüüüûüúýúüüúüýþý÷÷÷÷ú÷÷ú÷úú÷÷úúúõàÊB                                                                                                                          !T                                                                                                                                                       _Ùæóó÷ú÷÷ó÷úóóóóúóúóüÿþþþþÿþþþþþÿýþüä¢}s}~~|s~~}~~}}~}~~~}~‘~}~~}}~~‘~‘~}‘~~‘~¡‘‘~~}~¡¡~‘~~‘‘‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘¡‘¡¡¡¡‘‘~¡¡~‘¡¡¡¡‘‘¡‘‘‘‘¡‘‘¡¡‘~‘¡‘¡¡‘‘‘¡‘¡¡‘‘¡¡¢¡‘~¡¡‘‘¡¡¡¡‘¡¡‘¡¡¡‘‘¡¡¡¡‘¡¡‘‘‘¡¡‘¡¡¡¡‘‘¡¡‘¡‘¡¢¡¡¡¡‘¡¡¡‘¡‘‘‘¡¡¡‘¡‘¡‘~~‘‘¡¡¡¡‘~~~¡£‘‘‘¡‘~‘¡‘~~‘‘¡‘~‘‘¡¡~~~~‘‘~‘~‘‘‘~~~‘‘~~}~¡‘~}}~~‘~}~~~~~~~~~~}~~~~~~}}}~}~~}~}~}}s}~~}}~}~~}|}}}}~}}|||~~}p}}}~}v}}}}}}||}}}pv}}}}|p}}vp}}}}vp|v|}v||pv}pv}||pprvpppppppppvvvpvpvppppppppvvploopppopppvplpppllpppolplpllpllllllplllpovllllllppolllllllllCllllCllllCllCCCCCCl?CCCCCll??CC?>??>>?CC?CCCC>>?C>=>C>>>>>=>>>?>>>AC==>===>>>>=>==>==>=====>=======>==================$===$$$$$$$$$==$!!$=!!$=$!$!$!!!!!!!! !!!!!!!!!!!!!! !!!!!    !!o¬õüúûüüúýúýúûüüþýú÷ú÷ú÷úú÷ú÷÷úú÷úúèÙƒ                                                                                                           @_Y@                                                                                                                                                             žÙòúóóóóúóóúóúó÷óóúóüÿýÿýþþþÿþþþþþþ÷Õ}}~~}}}~~~}}}}}}}~~~‘~~}}}}}}}}~~~~‘‘‘~~~‘‘‘‘~~~~‘‘‘‘‘~‘~¡¡~~‘¡‘¡‘‘¡¡¡‘‘¡¡‘‘¡‘¡¡¡‘¡‘‘‘‘‘¡¢¡¡‘¡‘¡‘~~‘¡‘‘¡~‘¡¡¡¡¡¡~~¡¡¡¢¢¢¡‘¡‘¡¡¡¡¡¢¡¡¡¡‘‘¢¡‘‘¡¡‘~‘‘‘‘¡¡‘¡¡‘‘¡¡¡¢¡¡¡¡‘‘‘¡¡‘‘‘‘‘~‘¡¡€¡¡‘‘~~¡‘‘¡¡¡‘~~¡¡¡¡¡‘‘‘¡‘~~‘¡¡~~~¡¡¡‘~~~‘‘‘}~~‘¡‘~~~‘‘~~}}~¡‘~}~~~}~~~~}~~~‘‘~~}}}~~~~}~~~}}~}~}}}}}~~}}~}~~}}|rv|}|}}}}}}vr}~}~~pv}}}~~}p|}rpps}}~}|}}rpp}}}}|pp|}pp|pv}||}}}vpvppvvpp}pp|p}pvpppvvpppopvvppopppopppppvplppplpllollpppollllllllllllooplllllppolllllllllllCCllllllClCCCCC?ClCCCC??lll?>???CC?>>?CCCCC>?>>CC=>=AC>>>>>===C>>C>>========>A>=>=>>>===>>>==================$$===========!$=====$==$!$$!!$!!!!!==$!!!!!!!!!!!!!!!!!!!!!!!!! !! !!  !ošëýúüüûúýúüúüüüýþú÷÷÷÷÷÷÷÷ú÷úú÷÷ú÷õàÊY                                                                                                                         !bZ                                                                                                                                                                  x׿ó÷÷úóóúóó÷÷÷ó÷úóóüÿÿüÿþÿþþþþþþþþþõªŽs~~}}~~}}}~~‘~}}~~~~}}}~€~~~~~~}~~~~~~~~}~‘‘~~}~‘¡‘~~~~~~¡¡‘‘~~~~‘¡‘‘~‘‘‘‘~~~¡¡‘‘‘‘¡‘‘¡¡‘‘¡¡¡¡¡‘‘~‘¡‘‘¡¡¡¡‘¡¡¡~‘£¡~‘¡¡‘‘¡‘¡¡¡¡‘¡¡¡¡¦‘‘¡¡¡‘‘‘‘¡¡¡¡¢¡¡¡¡‘‘¢¢¡¡‘‘¡¡‘‘¡‘¡¡¡‘¡¡¡¡¡¡¡¡¡‘‘¡‘‘‘‘¡‘¡¡¡‘~~¡‘‘¡‘‘‘‘‘~¡¡‘‘‘‘‘‘~~‘‘~¡‘~~‘‘~~~~‘~~¡‘~~~~~~~~‘~‘}~~~}~~~}}}}~~~~}~}~~}}~}}}~~}~}~}~}}}}}}}}}}}}}}}s}}~~}}|r}}}}}}}p}~}p}}}p}}}}}|p}v|v}||p}p}}pv|p||vpppv}|ppvppv|vpppp|vppppppp|ppppppppppolppppplpvppppplolppplollplpvlolllloooolllllllllllplllllllCCllllllCCl?lllllClll?ClCCCCCCCCC>CCCC???>>CCC??C>>>>CC>>CC>>>>CC>=>?>>>==>=C=>=>=>====>==>====>=======A====$====>A==$==$=$===$!$==!$!!!$!!$=!!$!!$!!!=!!!!!$!!!! !!!!!!!!!!!!!!!! !!! !!!    ?’àüúýúûüüúýúýúûüÿü÷ú÷ú÷ú÷ú÷÷ú÷÷úú÷úèÚ”                                                                                                                           !Y‚_T!                                                                                                                                                                  žÙòóóóúóóóúóóóúóóúó÷üÿþþþþþþÿþþþþþþþ蚎}~}}~~}~}~}}}}~}}~~}}‘~}}~}}~}}~~~~~~~‘~~~}‘¡¡‘‘~~~~}}‘¡¡¡‘¡}~~~‘¡¡‘~~~‘~~~~~‘¡¡‘~‘‘‘‘~~¡‘‘¡¡¡¢£¡¡‘~¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡‘‘‘‘‘~¡¢¡¡¡‘‘¡¡¡‘¡¡¡¡‘¡¡~~~~¡¡£¡¡¢¡¡¡¢¡¡¢¡¢¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘‘‘¡‘¡‘‘~¡¡~~‘¡¡‘‘~‘¡‘¡~¡¡}¡‘}~~¡‘~~~~‘~~‘‘}~‘~}}}~‘}~‘‘€‘~~~~~~~~~}~~}~}~~}}}}}}}~}}~}}~~~~}}rs}~~}}}}}~~}p}}~~~}vv}}}}}r}p}~|vvrp}}p}}}}v|}|pp}|v|vvv|||pp||pppvv|ppppvv|}|vppppppppvppvpoopppppppllppvvplopppovvppolppooooollpopllovooplpllllllllllllllCCll?looollllllllllollllllC??CllCC????ClC>>>>>CC>CC??>>>>>>>>C>>>>>CC>==>>>=>>=>>C==========>==>===>=====>>======!$=======!!!!===$=!!=!$$!!!!===!!!$!!!!$!!!$!===!!!!!!!!!!!!!!!!!! !!!! !!! !!!!!!!!!=}’Úûúýúüüûúýúýúüýþþú÷÷÷÷÷÷÷÷ú÷÷úú÷÷úõàÊ]                                                                                                                            !YT!                                                                                                                                                             ‚Ùæó÷÷ó÷úóó÷úóóúóó÷óúýÿÿýþþþþþþþþþþþýæª}}}}}}}}}}~}~~~€}}‘~~~~~~~‘~‘~}~~~~~~~‘‘‘‘~‘~~‘‘~~~‘~}‘~~¡~~‘‘‘‘‘‘‘‘¡‘~‘¡¡~¡‘¡¡‘‘‘‘‘¡¡‘‘‘¡¡‘¡¡¡¡¡~‘‘‘‘¡‘¡‘‘¡¡‘¡¡‘¡¡‘¡¡‘¡¡¡¡¡‘¡‘‘‘¡¡‘‘¢¡¡¡¡¡¡‘¡¡¡¡‘‘¡¡¡¡~¡¡‘¡¡‘¡¡¡‘‘‘‘‘‘¡¡¢¡‘‘‘~~¡¡‘‘‘‘¡‘‘‘‘‘¡¡‘‘‘‘‘~‘~‘~‘¡‘}~¡¡‘~‘~‘~~~~‘~~~¡~~~~~~~~~~~~‘‘‘€}~~}~~}}}}~~‘‘~}}}~~~}}}}}~}}}~~~}}}}}}|}}~~}}}}}}}}|}r}}}}w|}v}~}s|p}}}pv}}||}||v}|pp}pv||}p}pppp}}prvp|||vrpppppvvpvvppp|pppppppppvpopppppvpoppppppooplpppppoollpolplllvlllllplpllllllllollllllCClllllClCCCClllllC?llllCCCClCC>CCClCCC?ClC>?CC?CCAC?>>?>>>>>>>>>>>>A>==C>=>>>=>>C=>===>=====>>======>=======$$======$$======$$$$!$==!!$=!!$$!$=!$!!!!!!$!!!!!!!!!!!! !!!!!! ! !!    !!!=s’Öúüüúýúûüüúýúýúýýú÷÷÷ú÷ú÷ú÷÷÷ú÷÷úú÷èÙ”                                                                                                                              !                                                                                                                                                                  žÙòóóúóóóúóóúóóóúóúóüüÿþÿþþþþþþþþþþþý檟}}}}}|}}}~~~~~~}~~}~‘¡‘‘¡‘¡‘~}~~~}~‘¡‘‘‘‘‘~~‘~~¡‘}~~}}~¡¡‘¡‘~~~~‘¡~‘¡‘‘‘¡¡‘‘‘‘‘¡¡‘‘~~~‘¡¡‘‘¡~~‘¡¡¢¡¡¡~‘~~¡¡¡~~¡¡‘¡¡¡‘¡¡¡‘‘¡~¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘~¡‘~~~¡¡‘‘¡¡¡~¡¡¡‘‘‘‘¡¡‘‘~‘¡¡¡¡¡¡‘~~~‘¡¡¡‘~~¡¡¡~‘¡‘~‘¡‘~~~‘~~~~}‘¡}¡¡‘¡~‘‘~~‘¡‘~~~‘~~¡‘~~~}~~~~~¡¡¡}~~}~}}}}}~¡‘Ÿ~}}}~~}}r}~~}}~~~~}}~}}}r|}}~}r|}|s}ps}}~}}rv|p}|}}v|pp}vrpv|||vp|}}}v||p}ppppv|ppv|}}|ppv}}}ppppppp}vppppppppvvvvpppppppvvppvpppppppollolopppppplpplllolpplll?lppppllllllolpllClllCllCCClCCCCClllllC?CllllC?CllC?ClCCCClCCCCC>C>?l>>CC?CC>=>=====>C>>>C>A>==>=>>C>>CAC>=======>>>>=>===========$$$!========$!=$!==!==$$===!$$$!$=!!!!!!=!!!!!!!!=!!!!!!!! !! !!!!!! !!  =qÖ÷úûúýúüüûúýúüúýÿý÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷÷õàÊZ                                                                                                                                                                                                                                                                                           _×àóúóúóúóóúóóúóó÷óóúüÿþþþþþþþþþþþþþþúæ¥}}~}}~}}~}}}~}~~~~‘‘}}‘}}~~‘~}‘~}~~~~~~~~~~~‘‘~‘‘‘~~‘‘~~‘‘‘¡~}¡¡¡‘‘~‘¡‘‘‘~‘~‘‘‘‘¡¡‘‘‘‘¡¡~¡¡~‘¡‘~¡‘¡¡‘¡¡¡¡~‘¡¡‘‘‘‘¡¡‘¡‘¡‘‘¡¡¡¡‘~¡¡¡‘¡~¡¡¡¡¡~‘‘¡¡‘¡¡¡‘¡¡¡‘¡¢‘‘‘‘¡‘‘‘¡‘~‘¡‘‘‘¡‘~¡¡‘‘¡¡~‘¡¡‘‘‘‘¡¡~~¡¡‘~~‘‘¡~‘‘}‘‘‘¡‘~~~~‘~~¡~~~~~~~~~~‘~~~}~‘‘~~}~~}}~~~~~~~~~~~~}}~~}}}~}}~~}}}}~}}}}}}}}~~}}~}}}}}~}}}}}~}}}p}}}v}|}}}|}||}|}|}}p|}|p|}}||}}pp||}}}pvvvv|}vvvpp}vpv|vpppp}|ppppppppv|ppppppplpvppppppppopllpppopopllpplllplllplllllllolllllllllllllllCllllllClllClllCClClCCCCClClCCCCC?ClCCClC?C>?>?CCCC>>Cl?C>>>C>>>>>>>=>>>C>>>CC==AC==?>>C==>>========================$==$=====!!====!!=$$=!!$!!$!$!=$!!!!!!$!!=!!!!!$!!!!!!!!!!!!!!  ! !!!  =s’Óõúýüüúýúûüüúýúýþý÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷÷ú÷è׃                                                                                                                                                                                                                                                                                              ˜×èóóó÷óúóóúó÷óúóúóóúüÿýÿþþþþþþþþþþþþúÚ’Ž~~~~~~~~}~}~~~}}~~~~~}~}}¡‘~‘‘~}}‘~}~~~}¡¢‘}¡¡‘‘‘~}‘‘~¡¡¡‘‘‘¡¡‘‘~~~~~‘¡‘‘¡¢¡‘‘~~‘¡~~‘¡¡~¡¡‘¡¢¢¡‘¡‘¡¡¡¡¡¡‘¡¡‘‘‘‘‘~¡‘¡¢¡‘~¡¡‘¡¡‘~~¡‘~~‘¡¡¡¡¡¡¡¡~~‘¡‘¡¡‘¡‘~~‘‘¡¡~~¡‘‘‘‘‘‘‘¡‘~~‘‘¡~‘~¡‘~~~‘‘‘‘‘~}~‘~‘¡‘~~~}~‘‘‘~~~}~~}~}~‘~~~~~~‘‘~}}}}}~~}~~‘¡~}}~~}}}}}}}~}~}}~~}}}|}}~~~~}}~~~~}}~~}}p}~}}}v}}r|vr}~}}}}}}}}p}}|}p}pp}v|}}||pv|}}}}|r}}r}|ppv|ppppp|vppp|}vvpppvpp|vppppplolppplpolloppllovpooppolllppllpollpplllllllllllllllllllllollllllC?lllllllC???ClCC>CllllCCC??>?CCCCC?>>CCCCCC>>?CCC>>>CACCC>>C>=>>=>=CCC>==>>==>=====>C>=>============A>====A====$!$=$==!=====$===!$!$!!!!!$=$!!$=$!!!!!!!=!!!!!!$!!!$!!!! !!!! !!!! =q¬õüüüûúýúüüüûüüüþþú÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ñÚžY                                                                                                                                                                                                                                                                                                           BÊÙòúó÷óó÷úó÷óúóó÷÷÷óúüÿþþþþþþþþþþþþþþúÚ¢ Ž}~}}€~}~}}}~~~}~~}}~~~~}~~}~~~~‘~}~¡~~~}}~~¡¡~~}~¡~~‘‘~}‘¡‘~~~~‘‘‘~~‘‘‘¡¡‘‘‘‘‘‘¡¡~‘‘¡‘‘¡¡‘‘‘¢¡‘‘‘‘¡¡¡¡‘‘¡¡¡‘¡¡¡‘‘‘¡¡¡‘‘¡‘¡‘‘¡¡¡¡¡¡‘¡¡‘‘‘¡¡‘‘¡¡~¡¡‘‘‘¡‘¡‘‘¡¡~‘¡‘‘‘¡¡¡¡‘¡‘‘‘‘¡~~¡‘‘‘¡‘‘‘‘‘‘‘‘¡~‘‘‘~‘‘‘~~~~~‘‘‘‘‘~~~~~‘‘~‘‘~}~~~}¡}~‘}}~}~~‘‘}~}~~‘}}~‘~}}}~}~}}~}}}}}}}}}}}}}}}~}}}}}|}}}}}}}}}}}}|}}}}s||p}}}}}||v||v}r}|v||}pp|v}v||}p}pppv}pp|v|vpppppppvpppvpppvvpppvolppvvppoppoopolovplplopplolllllpllopollplllllllllplllllllllCCllllCClllllllllCCClCCCCllCClCCCCC>>>C>?C?CC>C??>>>>?>>>CCA>>C>=>C>=>>>=>C>=>=>==>>===>======>>===>===$=======$=====$===$====$$$$$$$$=$!=!$!!!$!!!!!!$=!!!!!!!!!!!!!!!!!!!! ! !!!!!!  ?s¬òúûüúüüúýúûüüúüýþú÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷÷÷æÓx                                                                                                                                                                                                                                                                                        ƒ×àó÷óú÷óóó÷÷óóúóóóúóüüÿþþþþþþþþþþþþþþúäª}}~}}~~~}}}}}}}}}}}}~~~}~‘}}}}~‘¡~}‘~‘~}}~}~~~~}~}~~~~‘¡~~~‘‘¡‘~}~~~}~‘¡‘‘‘‘‘~~~~~‘¡¡~~¡¡¡¡‘‘‘‘~~‘‘¡‘~~~¡¡‘¡‘¡‘‘¡¡¡¡¡¡¡¡¡£¡‘¡¡‘‘¡‘~~¡¡¡¡¢¢¡¡¢¢¢¡¡‘‘¡~¡¡‘‘¡¡¡~‘¡¡¡¡¡‘~‘‘¡¡‘‘¡¡¡¡‘‘‘‘¡¡‘~¡¡‘~‘‘‘‘‘‘¡‘‘¡~~‘¡¡‘~~‘‘~}}~‘~~‘‘~~¡¡¡‘‘‘‘‘‘‘‘‘~}}}~~‘‘}¡‘~}~}~~‘}}}~}~‘‘‘¡~~}}}}~}}~}~~}s}}||}}s}}}}}}r}}}}‘}}|}rp}}}s}}}}}vr}v|}}}}v|p}}ppvv}p||}}||pppppp}ppp|}}|v|v|}|v|ppppvpppvvppp}|poppppppvppppvpplllppopplllllllllpoolllllolloopllllllvvll?Cl?llllCClllllllllllllCC?CllCllC???CC?>>>>>>>CCClC?>?>>=>>>>>CCCA>>?>>>CC>>=>==========>>=>==>=====>>==>====$$=====$$!$==!====!!====!!!!!!==!=$!!$!!!!$!!=!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !>}¢Óõûüüüüûúýúüüúüüýþý÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷èÙ;                                                                                                                                                                                                                                                                                                        ;žÙñó÷óóúóúóóúóó÷úóó÷úüÿþýþþþþþþþþþþýýþúæª}~~}}~~}~~}}}~}~~}~}}~~~}~~~~~‘~‘~}~~~¡~}}‘‘~~‘‘~~~‘~~~‘¡~}¡‘~~‘¢¡~‘¡¡~¡¡‘‘‘¡¡~~¡‘¡‘‘‘~‘¡‘‘‘¡‘¡‘‘‘‘‘¡‘‘¡¡‘‘‘‘¡¡¡¡~‘‘¡~‘¡¡¡¡¡‘‘‘‘¡¡¡¡¡¡‘‘‘‘¡‘¡‘‘¡¡‘¡~‘‘¡¡¡‘¡~‘‘‘¡¡‘‘‘‘‘‘~¡¡‘‘‘‘~¡‘‘‘~~¡‘¡‘‘¡¡‘~‘¡‘}¡‘‘‘~~~~‘‘~}¡¡}~‘‘‘‘~~‘~~~~~~~‘~}~~~~~~~~~~~~~~~~~~~}}~~~~}}}}}}~}}}~~}~}}}}|}~}}}}}}}}}v}rv‘€}r}}}}}}}}}}}}v}}p}p|~}rv}}pp||||pp}}}|pp|pvvv}ppv}pppv|pv|vppppppvvpppppopppppoppplppppplppploppooppllpplplppplllplllolllllllllllolplllCllloolCllCllCllllllllC?CCC?CCClCCCCC?C?ClC>?>>CC>>>>>>CC>=?C?C>>?>>>>>>C>=>>==>>=>=>=>=>========>=======>=!==========!====$$$=====!!==$$!!==$$!!$=$!=!!!!!=!!!$!!!!!!!!!!!! !!! !!!!!!!!!!!!! ?s’Öõüüúýúûüüúýúûüúýþý÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷õàÇ]                                                                                                                                                                                                                                                                                                  ]Óàóóú÷óóóú÷óóúóóú÷óóúüÿÿþþþþþþþþþþþþýþú楒 }}~}}}~}~~}~}‘‘~~}~~‘~~~~‘‘‘~}}}~‘‘‘‘}}~¡¡‘‘¡¡‘‘‘}~‘~~}~~~~‘¡‘‘¡¡‘¢¡‘‘¡¡‘¡¢¡¡¡¡¡‘‘‘‘‘‘‘¡~¡¡¡¡¡‘‘¡‘‘¡¡‘‘¡~~¡¡‘‘~‘¡¡¡‘‘~¡¡¡¡¢¡‘~~~¡‘‘‘‘‘‘~~‘¡¡‘¡‘¡¡¡‘‘‘¡‘‘‘¡¡‘¡‘¡¡‘¡‘‘~~‘‘¡¡¡¡‘‘‘‘¡‘‘~~~‘¡¡‘‘‘‘~~‘‘~‘¡‘‘‘~}}~‘‘‘‘}~‘}}~~~}~‘~}~~}~}‘~~~~}}~~~}~~}}}~~}~‘‘~~}~}}}}}|}}~}}s}~~~~}}~}}v}‘}}|}}||}}r}}}~€}}}}}pr}}pp}r}}}}|vpr}}}p}|vpv}}}pp|}}}vpvvr}p}pp||pppppppppppp||vp}vppvpopopvvplllpplpppplpppvppoppplllppvppvpollllllllllllllllllpllpolllllolCCllCCl??CC?CClllCCCCCC??CCCCCCCClClC?>>>C?>>>CCCClC>>>>>=CCC>>?==>>>?>>>=CAC>=>=>A>>=>>>=>=======>====>===>>======$=!!=!=!$=$$==!==!===$!!$=$!===$=$!$!!!!!!!!=!!!!!!!!!! ! !!!!!!! !lŽÚõûúüüúüüûúýúüüüüþýú÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷èÓ”                                                                                                                                                                                                                                                                                                              ”Ùèóóóúóúóó÷úóóúóóúóóúüÿþþþþþþþþþýýýþþýü몢Ž}}~}}~~}~}}~~~~}}~~~~~}~~~~~~}~~~‘~~~~~~~~‘‘~~‘~‘¡~~~~~~~~~‘‘‘‘‘~‘¡‘~~‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘~‘¡‘¡¡‘‘¡‘‘‘¢¡¡‘‘¡‘~‘¡‘¡~~¡‘‘‘¡¡‘‘~¡¡‘¡¡¡¡‘¡~‘‘‘¡¡~~¡¡¡¡‘~‘¡¡¡‘‘‘~‘¡¡¡¡‘‘‘‘‘‘~‘‘‘‘‘‘‘‘‘‘‘¡~~¡¡‘‘‘‘‘‘‘‘‘~¡‘~‘¢‘~~‘‘~~‘‘~~‘‘~~~~~‘~}‘‘~}~}~~~~~~~~}~~~~}}~~~‘}}~~}}}}~}~}~~}}}}}~}~~}}~~r}~|}~~}r}}}}}v~~}|}}}p}}}p}}|}v|}||||v}}|pp}|}r}}vp}}pprvv}|}ppvp||vppvppppp|vppvp|vp|pppppppppppppollpvppolppppoopolpolpppllpplplplllllllllllolllllllpollCllllllllCC?CClCClllCC??ClC?CCllC?CCCCC??CC>>CC>>?>CCC?>?>?>=>>?C>>>>>=>>>=>==>>>>==>=>>====>>======>==$============$====$=!$$$=$==$$$=!$==$!$!$!$!$=$!!!!!!!!!!!!!!!$!!! !!!!!!!! !!!!!!!! !!oŽ’Ú÷üüýúûüüûüüúýúûüþþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òÙB                                                                                                                                                                                                                                                                                                              @ÇÙòúó÷óóóúóóúó÷óúóóúóúüÿþþþþþþþþþþþýýþýüò¬¢~~~}}}}}~}}}~~~}}}}~}}}}}}}~‘~}~~}}‘‘~~}}~~}~‘~~‘‘‘}~‘‘~}~}~‘‘¡~~~~~€‘~~~~¡‘~}~¡‘~‘¡¡‘‘¡‘~‘¡¡¡‘~¡‘‘‘‘¡¡¡‘¡¡‘¡¡¡¡‘~‘~‘¡‘‘¡¦¡~‘~~‘‘¡¡~~‘¡¡‘~~‘¡‘~~~¡¡‘~‘¡¢‘‘‘‘~‘‘¡¢¡¡~‘¡¡‘~~~~~‘‘‘¡~~‘¡¡¡‘~‘¡‘~‘‘¡¡¡~‘~‘¢¡¡‘¡‘~~~¡¡‘¡‘‘~~~~~‘}‘¡¡~~~~‘‘‘~‘‘~~}€‘~~}}~‘~}~~~}~~~~~~~}r}}}}}}~}}~~}}}}|}~~}}|}}|}r|}}}}~s|}~pp}~vr}pp|}}ppvp}}p}}}vv}|pp}vpv||v|v|pp|ppv|}|pppppppppvv|pppppppppppovvpppoopppppllpppololllvpllllllloppooollllllpllpllCllClllllCClllllllllCCCCClCCC?CC?llCCllCl?>?C>CC?>>>>>ll?>>ClC>>=?CC>>>>>CC>>>C>>=>=>>=>=>>=====>========>===========$==$$==$====$!===!!$!!$===$!!!$!!$$!!!!$!!!$!!!$!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!! !?q’æúûüúúýüûúüûúýúüüþþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õàÓx                                                                                                                                                                                                                                                                                            zÓàò÷óúóúóóúóó÷óó÷úóó÷üüÿþýþþþþýýýýþþýýþýõÚ’Ž~}~}}~~}}~}~~~~}}~‘~~}}~~}~}~‘~~~}~~}~‘}}‘¡~~~~~~‘¡~}‘‘‘}~~~~¡¡~~~~¡¡‘~‘¡‘‘~~~‘¡¡‘‘‘‘‘¡‘‘¡~¡‘¡¡‘‘‘‘¡‘‘~‘¡‘~‘¡¢‘~‘‘‘‘‘¡‘‘‘~‘¡‘‘¡¡‘‘¡‘‘‘¡‘~‘¡‘‘‘¡¡‘~‘¡~¡¡‘‘~‘¡¡~‘‘‘‘‘‘‘‘‘¡¡‘‘~‘‘~‘‘‘‘~‘‘~~‘‘¡‘‘‘~~‘‘~‘‘}~~~~~~~~~~~~}~~~~~~~~}}~}~~}~~~~~~~~}~~~}~~}}}}}}}}~}}}}}s}s}}}}}}}rv}}}}}|}}}}}}vp}~|}}p}}}p|||pv}|v|}vrv}}pppp|}pp|}pvv|vpp||vv|v|vppvppppppvpppoppvppppppoppplpppoovpppllpopplollpoloopllpvlllllllllllllolClllllCCllllllCllllCllCCClllC>ClC?CCllC>CCCCC??C>>CCC>?>>CC>=>>C>>C>=>C>=>>>>>==?>==>=>>>===>>=======>===>=======$===$=========$$==$!==$$!=!!$$!!$!9=!!!=!!!!!!$!!$!!!!!!! !!!!!!!!!!!!!!!!!!! jsŸ¬èúûüúýüúúüüúýúýúýýþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÓ”                                                                                                                                                                                                                                                                                                            "˜×èó÷óóóú÷óóúóú÷óóóúóóüüÿþþþþþþþþþýýýýýýýú暎}s}}~}~~~}}}~~}}‘‘~~~~~~~~‘¡~~‘‘‘~~~‘‘}~‘~~‘€¡‘~¡¡‘‘¡‘‘‘~~}~‘¡~‘‘‘‘~~~‘‘‘¡¡‘‘‘¡¡‘¡¡~~‘¡‘~~~~~~¡‘‘~~~~¡¢¡¡‘‘‘‘~~~~‘‘~‘‘‘~¡¡¡¢¡¡¡¡¡¡¡~‘¡¡¡¡~~‘¡¢¡‘¡¡‘¡¡~‘¡‘¡¡¡¡¡¡¡~}~‘¡¡‘~¡¡‘¡‘‘¡¡}~‘¡¡‘~‘¡¡~~‘‘~~~~~‘~~~~~~‘‘~¡‘‘~}~~}~‘~~~¡~~}}}}~~}~~~}~}~~~‘~~~~~}}}~~}}}~~}}~}}}}~}}~~}}}}}~~}}}}|v|vv~~}}|p}~}pv||}||p}}p|}}}vv}}}|}}pp||}|v}}}vs}}|pp}}}pp|}|||vpppppppv|ppvvpppppvpppoppvpppoopppppplopppppopplopvpplllopoloolllovoopollllllllpll?ClllllCClClCllClllC?C?>lllll???>>>CClC>?CCC?>CClC>CCCC>>>>>C>>=>>>>C>=>>=======C>=>A>===>===A>>==>=====>>==>=====>==!===$======$======$==!!!==!!$$$$!!!=!$=$$!!=!!!!!$!! !!!!!!!!!!!!!!!!!! !  m}’Öõýúüúýúûüüûúýúüúüýÿú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÚB                                                                                                                                                                                                                                                                                                ;ž×èóúóúóó÷úóóóóúóúóó÷úüþÿþþýýýýýýþýýýþýýýü謎Ž}}‘}}~~}}~}~~~~~~~~~~}~}~‘~}~~~~~‘~~~~}~~~‘‘~~‘‘¡‘~~~~~~‘‘~~¡¡~~~~‘‘~¡¡‘~‘¡‘‘‘~¡¡~‘‘‘‘¡¡~~‘¡‘¡‘~‘¡¡‘‘‘‘¡¡~~¡¡‘~¡¡¡‘¡‘¡¡‘¡‘‘‘‘¡‘~‘‘‘¡¡¡¡‘¡¡~~¡‘¡‘¡¡‘‘‘~‘‘‘‘‘‘¡¡¡~¡¡‘‘~}¡¡‘‘~~‘¡~~~‘¡~~~~‘‘~~‘~~‘~‘~‘~~~¡‘}~~}~~~~‘~~}~~~~}~}~~}~~~}~~~}~~~}}}~}~}}~~}}}}}}~~}}}~}}}r}}~~}}}}}}r|}~~}}s}}}||}s|}|||v}}|v}}rp}}}}}p|}vp||p}}p|v}}}pp|}ppv}||vppvppvvvpp|vpppppppvpppvppppppppopppppplppppplpppllppllplpoolpplllloplllllvlllClllllllolClllllllCllClolllCCClllCCCCCCCCCCCC?CCClC>?CCCC>>>?CA>>CC>>>>>=Cl>=>C>>>=>=>C>=>>>==>=>>=>==>==>=====>==============$========$$=$===$$!!!==$!$=!!$!!$!!!=$!!!$!!!!!!!!$!!!!!$!!!!!! ! !!!!    ?q’æ÷ýúüûüúüüúýúýúýúýýþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òàÇ_                                                                                                                                                                                                                                                                                                    ZÓÙòóó÷óúóóúóú÷ó÷óóúóóóüüÿþýþþþþþýþýýýýýýýýõÚª¢}Ž~}~~}~~~~~¡~}}~}}}~}}~}~~}}}~}‘€‘‘‘}~}}~‘~~‘¡~~‘¡~}~‘¡‘‘~}~¡¡‘}~¡¡¡‘‘¡‘~~~~~~~¡‘€¡‘~¡‘‘¡¡‘¡¡‘~~~~‘¡‘‘¡‘¡¡¡¡¡¡‘~~¡¢‘‘¡‘¡‘~‘‘‘¡¡‘‘~~‘¡‘‘¡‘¡‘‘‘‘¡¡‘‘}~‘‘~~~‘‘‘¡¡~~~¡‘‘¡¡~¡‘‘‘~~~}~}~¡‘‘¡‘~‘~~~¡~~~¡¡¡~~~}~~‘¡‘}}~~‘‘‘‘~}}~‘¡‘~‘‘}}}}~‘~}}~}}}}}}~~~~~~}~}}}~‘}}~~}}~~}}}~~~}|}}}}}~~~}|s}}}}~}}~}}s}}p}|}}rp}}|p}}vvpp|}p|}pvvpp||v|ppp}}|||||vpp|pppv|pp|vppp|pppvvpvppoppvppppvvpllopopoppppplllplpoolloppplooppllpolllllllllllClolllllllCllllllllCClllllllllllC>??ClllllCCCCCClll>Cl>>?>>>CCl?=?C>>CCC>>C===C==>CC==>>==>>=>>=>>C==>============!==========$$=!===$====!===$!!===$!!==$!===!!$!!!!! !$!!!!!!!!!!! !!!!!!!!!!! !     ?pŽ¢Óèúýúýúüüüûúýúýúüúüýÿü÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õàÓz                                                                                                                                                                                                                                                                                                        zÓàò÷ó÷óóúóóóóúóúóóúóúóüþÿþýýýýýýþýýýýýýýýýúëÕŽ}}}}~}~}~}‘‘}~~}}~~}~~~~~~}~~~‘}~‘~~~~}‘~}‘‘~~~¡~‘¡~~~~‘‘‘~~‘‘‘‘~~~¡‘~}‘¡¡~‘‘‘¡‘¡‘‘‘‘¡‘~‘¡‘¡‘¡¡‘‘¡‘~~¡¡‘‘‘~‘¡‘~‘‘¡¡~‘~‘‘¡‘¡‘‘‘‘‘‘¡¡~~¡¡‘~¡¡‘~‘‘‘¡‘‘~~¡‘‘‘‘‘~~~‘‘‘‘~}‘~~‘~‘‘‘~~~‘~~¡‘~~}~~~~~~‘‘~~}}‘‘~}¡~~~}~‘~}~~~}}~}~~}~~~}}~~}|~~~~}~~}}~}}}}}~}}s}}|}~~}}}}}}}}}}}}}}}}}|}}}}||}}}}|v}}rpv}}v}vvprvvvvvvvpvpv|vvvpppv}ppp|ppp|pppvp|ppppp|vppppv|pppppppppopvplpppollplovploloppllppllppoolllllllllllCllllllllllllllllClllllCllllCClCCl??lllClC??CCCCCll>?C?C>C>>>CC>>>>?CCCCC>=>>>C>=>lA==>>>=>>=>=>==C>==========================!!!==$!====$$==$!===!$!!$==!!!$$$!!$!!!!!$!!!!!!!!!!!!!!!!!!!!!!! !!! !!!! oŽªæõúüúýúýúûüüüúýúýúýýþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õèט#                                                                                                                                                                                                                                                                                 9”×èóúóúóóúóúó÷óóúóó÷óúóüüÿþþþþýýýýýýýýýýýýýýõ暟Ž}}~}~}}~¡‘~}~~~}~~}}~‘}~}~~~}}~‘~~~}‘¡‘~‘‘~~~}~‘¡¡¡¡~~‘‘‘‘‘‘‘~~~~‘‘‘‘~~‘‘‘‘‘~~¡‘‘‘~‘‘‘~€~~~‘¡¡¡¡‘‘‘¡‘~~‘‘~~‘‘¡‘‘¡¡~¡¢¡~‘¡¡¡¡‘~~~~¡‘‘~~~¡‘‘¡¡¡‘¡‘‘‘‘‘‘‘‘~~~~~~~‘¡¡~‘¡¡¡¡¡¡¡‘¡‘¡¡¡‘‘‘‘‘~~~~~}}}¢¡~~}}}~~~~‘~~‘‘}~~~~‘¡~}}}}~~~‘~}~~~~}}~~~}~~~}}}}}~}}~}}}~~}}}}}~}s}~}}}}}}}p}}}|v|p}}p}}}ps}}}}}||p}}}}||vv|v}}|v}}vr}}}|}pvvppppppvpp|}vppvppppvvppppppppvppvvpvpoppvpppppoloooppopplppplllpl?llplllolpllvplllllllllllllllllllClllClllllCllClC??CllCCCClC>>>?>CClCClC>>>??CClC>>>>>ACCC>=>CC>>>ClC=AC>=>?==>=>>=>===>C>>=>>===========$===$$!=============!!!$=====$$$$=$$$$!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!! !!! $os’Úëúýüûüúýúüüüûúýúýúýýÿú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÙž<                                                                                                                                                                                                                                                                                   ;žÙèó÷ó÷úóó÷÷ó÷úóóúóó÷óóúýÿýýýýýýýýýýýýýýýýýýüíÚ¢Ž}~‘}s~~~~~}~~~}~‘~}}}~~~}~}~~~‘~‘‘¡~~~}~~~~‘‘¡‘~‘¡‘~~~‘‘~~~‘~~‘‘‘‘‘‘‘‘‘~~‘¡‘~~¡~‘‘‘‘‘‘~‘‘‘‘¡‘~~¡¡¡¡~~‘‘‘‘¡‘~‘¡‘‘‘‘‘‘‘‘‘~‘‘¡¡~~‘‘‘‘¡‘‘‘¡¡‘‘‘‘~‘¡‘~‘¡‘~‘‘‘‘‘‘¡‘‘‘~~~~‘‘‘~‘‘‘~}~~~~~¡‘}~‘}‘}}‘~‘‘~‘~~~~}}~~~}}}~}~‘~}}‘~}~}s~~~}}}~~}~}}}s}}}}}}}}}}}}}~}}}}}}}p}~}|}}}||rp}~}}}rv}}p}~}p}|}}v}}vv}|r}p|v|vrv|v|}vvvrvpvppvrpp|}ppvppopvpppppppppp|popppppppvpppopvpoooopolpllppolllpplllollllllpplllllolllllllllllllll?CllCllCllllllCCCCllC?ClCCCCC?>>?lC??CCC>??CCCCCC=>??C>?C>>>>C>>>>C>>>=>==>>==>>=>A>==>>>=====>==============$$===========$!!=!$====$!$==!$!$=!!!$!$!!!$!!!!!!!!!$!!!!!!!! !!! !!!! !7lqŽ¢¬æúúýúüüúýúýúûüüüúýúýýýú÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òÚÇ]                                                                                                                                                                                                                                                                            YÊÙòó÷óóú÷óóúóó÷÷÷óúóúóóüüÿþýýýýýýýýýýýýýýýýýýúèÕ’}}}}}~~~}}~~‘‘‘~~~}~‘~~~}~~}}~~}}}~~~~~‘¡‘‘~}~~‘}~‘‘‘~~¡¡~~~~~‘‘‘‘¡‘~~‘‘‘‘¡¡‘‘‘‘‘‘‘¡‘€~~‘¡‘~~~‘¡¡‘‘‘‘¡‘‘~~~‘‘‘¡‘‘¡‘‘~~~¡¢¢¡‘¡‘¡¢‘~‘‘~‘‘~~~‘¡‘‘~~~‘‘‘‘‘~~~~‘‘~~~}~~~‘‘‘‘‘~~~‘‘~~~~~~}~‘¡¡~}~~~~¡¡‘~~‘~}}~~}~~‘¡¡~}}~‘‘‘~‘‘~}}~‘~~~~}}}}~}~~}}~}}~}}}~~~}}rp|s}~}~}}|pvr}p}~}}|}}~}}}}}}}}}}v||}}||}}vr}}|pr}}}}v}|}ppppp|r}ppvrpv}p}}}pv|}}|pppppppovvpvv|vppppoplloppopppvpopooopplllpplpvolpvoooplllplllpllllpolllpolllllCllllllllC??lllCCCCCllCClCCllCC?CCC>>?CC>>>>ClCCC?>>>C>=>?A>>>>=>>>>CC>>==>>>>>>==>>===>C=====>>>===>>>>====$=========!!=!=!!=!=!$===$!$!==!!==$!!$==!$!!!!$!!!!$!!!!!!$!!!!!!!!!!!!!!!!!!   !!?p¬æõýúýúüûúýúýúüüüûúüúüÿþ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òàÓz                                                                                                                                                                                                                                                                                         xÓßòóúó÷óúóó÷úóóóúóó÷÷÷óúüÿþýýýýýýýýýýýýýýýýýýü÷ëÕ’ Ž}}}}~~~~~}~¡~}~~~}~~~‘}~~~~~~~~~~~}}‘‘‘~}~‘~~~‘‘~‘¡¡~~‘~‘‘‘~~‘¡~~~‘¡‘‘‘‘‘‘‘¡‘‘‘~~¡¡~~~¡¡‘‘¡‘¡~‘‘¡~~¡¡‘‘¡‘~‘‘~‘‘¢¡¡‘¡‘¡¡~‘‘‘‘‘‘‘¡~~‘¡‘‘~~‘‘‘~~‘‘‘‘‘‘~~‘‘~‘‘‘‘~~~‘~‘¡~~~~~‘¡‘}~~~‘‘‘‘}}~~‘}}~‘‘‘~}~}~‘~~~‘~}}~~~~~}}~~}~~~}}~}~}~}}~}}~}}}}}|}}}~}}}}|}}}p}~~}}r}}}}}}s}|}}}rwv}}|}}p|}}}|v}p}}}p}}||ppp}}ppv|vvpp}|}|vpp}}}ppppp}popprvpvvpppppppppppoppppppppopolpooopppopollllooollllllollolllllllplllllClllllllllCCClllC?lClCCClllllCCCC?CC?>?CC>?>>CC>?CCCC>>>>>CCA>=>>>C>>Cl>==>>>>C>=>=>==>>=>===>=========>===========$=======$$===$!=====!!$$!$$!=!$$=$!!!!$!!!!!!!!$!!!!!!!!!!!!!!!!! !!!!!  ! !! =oqŽ ¬æõúýúýúýúüüúýúýúûüüüýüþýú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òæÓ”;                                                                                                                                                                                                                                                                                                  ƒÓàòóó÷óóú÷óóóú÷óóúóóóúóúüþÿýýýýýýýýýýýýýýýýýýýüúéÖšŸ}~}}}~~}}‘}}}¡~}}‘‘‘~~‘¡¡¡¡¡~~}~~~~}}~~~}~~~}~‘‘~~~~~}}~‘¡‘~‘¡‘‘‘~~~‘‘¡~~‘~~~~~‘‘~~~‘‘¡‘‘¡‘‘¡¡~~‘‘~~‘‘‘¡¡¡}‘~~~~~‘‘‘‘‘¡‘¡‘‘¡¡‘~~‘~~‘¡¡‘‘‘¡¡‘~¡‘¡¡¡¡¡‘‘‘‘‘¡¡‘~‘¡‘‘¡¡~}~~}~~~~~~~‘‘¡¡‘‘‘}}~€~~}}‘~~~¡~~~}}‘‘‘}}}~~~~~~‘~}~~}~~}~~~~}}}}s}~}}}}}}}~}}}}}~}}~~~}}}}s}~~~~}~}v}}}}vvv}}}|p}}}~}w}rp|||pp|}|}}||ppp|ppppp}}p}|pp}}p}}ppvp|ppppppvp|pp||pppvppppop|vpoopvpoopoollppppollopvpplllllpllllpllpolllllpllllllClplCClCllpllllllloolCll?>?CllCCCCCC?Clll??ClllC>CCllC>>>CCC>>>>>C>>>>>=>?C==>C>>CC=>=>>>C>===>=>==>>>>========>=$$=>=$==>===A>>A===!=$$=!!!$!=!!$=!!$==!!!!!!!!!=!!$=!!!!!!!!!!!!! !!!!!!! !!!!7?qŽ‘Ôèõüúýúýúüúüûúýúüúüüûúúüÿü÷õ÷÷õ÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷òæÓ›;                                                                                                                                                                                                                                                                                                ƒ×àòúóúóóóúóúóóúóó÷úóóóóúüþÿüýýýýýýýýýýýýýýýýýýüüúëÚ¬¢Ž}}}~}~‘~}}}}~~~~~~‘‘‘‘‘‘~~}~~~~~~~~~~~~~~~‘~~~‘‘}~~~‘‘‘‘~~‘‘‘‘~‘‘~‘‘‘‘‘~‘¡~‘~}~¡‘~~¡¡‘‘‘~~‘¡~~‘‘‘‘¡‘‘~‘¢‘}‘‘¡‘~‘‘¡‘‘¡~‘~‘¡¡~¡‘‘~¡¡‘‘‘‘¡¡¡‘‘‘‘‘~~¡‘~¡¡~~~‘€‘~~~‘‘¡‘~‘~}~}~}¡}~‘~~}~~‘}}~~~~~}~~~~~~}~~~~~}~~}}}}}}~}}}}}~}}}sr}}}}}}}}~}p}}}}}}}}}s}}}}sr}}}vv}}}}}}rv|}psppv}}}||vvvpppp|p}}pp}}}}p||}ppvv|vppvppppvvpp}pppvpppppppvppppppppopppoppolppoloppvpllllooplllpolplllllololCllllllljlllClllollllllolClCl??ClClCC?CCCClllCCCCCCCCCCCCC>>>C?C?>>>>>C>>>>>>>>>=>>>C>>>>>=>CA====>>==>>===========>=====================!==$$$$$=$!!=!!!$=!!=!!!!!$$!!!!!!!!!!!!!!!$ !!!!!!!!!!!!!!!!! 9?psŽ¥Úæõúýûýüüüüúýúüüúýúýüûüüþÿú÷÷÷ó÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷õè×Y                                                                                                                                                                                                                                                                                   9”Óàòóóúóúóóóúóóóúóóúóú÷óóüüÿýýýýýýýýýýýýýýýýýüýýüýúõëÖš  s}}}}~}~‘}}}~~‘~}~‘‘‘‘~}}~~}~~~~‘~}~~~}¡‘~~¡‘¡‘~~}}~~~~¡¡¡‘‘~~¡¡‘‘‘¡¡¡¡¡¡¡~‘¡‘~~~‘‘‘¡‘~}~¡~~}¡¡‘‘~‘¡‘¡‘~~~~¡¡~~‘‘~‘¡~~~¡¡¡‘¡¡‘~~~~‘‘~~~~~~~‘~‘‘~‘‘‘~~¡¡‘~~}~~~~‘‘‘¡‘}~¡¡‘¡¡}}~}}~}~‘~~¡}~~}}}}}}~~}}}}}}~}}}}}‘‘~}~}}}~~~}}}}}}}}~}r}|v}}}}}}s}}|r}}}s}}}}}vr}r}wr}}p}}}}}}}}r}}v|}}}r}}||p}p}}ppppp|ppvpppppppppppppppppppvpppppppppppppvpoopppoooppppllpppplllolppoplppooollllopoplloljlppppllllplCllClllCCCllC?CCClC?CClllCC?CCCCCCCCCC?>>??C?>C>>>?llCCCCCC>>CCCC>>>====?>=>>==>>>==>>>====>==>>=>=$===>=>====A=$!$===!=======$!!$!!!!$=$$=!!$!!!$==$$$=!!!!!!!$=!!!!!!!!!$!!!!!!!!!!!!!! !!   =?mps’Óæë÷üüýúüüûüüûüüüûúýúýúúúüÿþ÷÷÷÷õ÷õ÷÷÷÷÷÷÷÷õ÷÷÷÷÷÷õèÙžY                                                                                                                                                                                                                                                                                                     9–Ùæóó÷÷óóúóó÷úóóúóó÷óóúóóúüÿÿüüýýýýýýýýýýýýüýüüýýüýü÷íæÕ¥ s~~~}~}~}}~}~~¡~}~~~}~~~~}~~~~‘~}~~~~¡¡‘‘‘~‘‘‘‘‘¡¡¡¡¡¡‘~~‘¡‘~~~~‘‘‘~~~¡¢~¡¡}‘~¡‘~~‘¡‘‘‘~‘¡¡}¡‘~~~~~¡¡‘~‘‘~~~~‘~¡~}~}~~~~}~}}}}}}~~}}}~}}}}}}}s}~~}}}~}}~}~~}}}~}s}~}}}sr}}}}}}}}s}p}}~}}}}}}}}|}}}pp}}v|}~}}}}}}}||}}s|p}}}p}s|}vpp|vppppppppp}pppppppvpopppppppppppppppplp}pplpppooppppolopppopllppppplpppoojojlopppllllllloollllllplCllllllClClllCllCClCClClll>>CCljlllCC?CCC>>lCCC>>?Cl?>>CCC?>>>>CC>>>>==>?>>>=>=>>===C>>>======>>==================$===97====!=!=$$=$=!=$!$$$!!!=$!!$=!=!!!!!!!==!!!!!!!!!!!!! !!!!!!!!!!!!!! ==jpqs}’žäèõüüüúûüýúýüúýúýúûüüúýúýüýÿü÷÷õ÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷õèÙžY                                                                                                                                                                                                                                                                                       ;›Ùæóóóúóóú÷óóúóóóúóúóóúóóúüüÿþýýýýýýýýýýýüýüýýüüýüýüüüõíèÚ¬’sŸŽ~}s~‘‘‘s}}~~}~}~‘‘‘¡¡‘‘Ÿ~~‘¡‘~¡Ÿ~}¡~¢¡Ÿ¡¡¡¢¢}¡Ÿ¡~Ÿ‘¡¡‘¡¡~¡¢‘~~~‘¡¡¢Ÿ~¡}~}Ž}Ž~¢Ÿ}¡}}~}s}¢}~}‘Ÿ}}~~~}}}}}~~}s}Ž}}s}}}}}}}~~}}}~}}s}ss~}}}s}}s}}rq}}s}ps}qpq}sppqppsppwq}sppp}}ppspppppspps}s}qwqp}ws}}q}sppvrppp}ppppppppppp|poo}ppppoopppppplllpppppppllplllllooooopolpolllllloolllllllljolj?jlllll?l??Clll?llj?ljllll>??>??lC?>>>jl>>CCCj?C??>>>??>>?>=>>>?>=>??>?C>>==>==>>??>>=C??===>>>>===============>==!7============>===$==!$==!$!$$!$$!$$$!$!!!!!!!!===??mo}sssŽ’¥Öæëõúüüüûýüüúüüýúýúüúüüüúýúúüýÿú÷õ÷óõóõóõ÷÷÷÷õ÷÷÷÷÷÷÷÷÷èÙž_                                                                                                                                                                                                                                                                    @Ùèó÷÷÷÷óóúóó÷úóó÷óóúóóúóóüüÿþýüýýýýýýýýýüýüüýýüýüýüýüüüúõèèÖ¬š’ŽŽŸŽŸŸŽŸ ŽŽ Ÿ Ÿ    ŸŽŸ ŸŽŸŽ ŸŸŸŸs  ŽŽ Ÿ ŽŸ      Ž Ž Ÿ ŸŸŸŸŸ ŸŸŸ   ŽŸ ¢ŸŽ     Ž ŽŽ¢ŽŽŸ¢ŽŽ ŸŸŽsŸ ŽŽ  ŸŽŽŽ ŸŽŸŸŽ ŽŽŽŽŽssŽsŽŽs~sŽssŽsssŽŽŽsss~ŽssŽŽsŽss}sŽsssŽsŽs~ŽsŽssŽsŽssŽssŽs}s}s}s}Žss}ss}Žss~ssŽ}ssssss}ssŽŽ}ssssss}s~ssssssspss~ssss}ssssss}sssppss}ss}ssssssssssqs}sssqssq}s~s}sssqqs}ss}ss}ssssssqpsssq}ssspqs}sqqsqs}ssss}s}}qsssqqqqqssss}qpqqsqspqssqqsspqqsqssqpqsspnqsq}qqpnqqqsqqqpqqpsspnqqqqpqqsqqqqpnqqpnqsqqqqqpqqpqqqqqqqqqqpnqqq}ŽŽ}Ž š¥Óæèõõüúüüýûüüúýûüýûüüúüûüúûüüüüýÿý÷÷õó÷õ÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷÷÷÷èßÇx                                                                                                                                                                                                                                                                                     YžÙæóóóóú÷óóúóóóúóúóóóúóóúóúüþÿýýýýýýýýýüýüýýüüýüýüýüüýüüýüúúõõèëæÚÓ¬¥¥’¢’¢Ÿ   Ÿ Ÿ  Ÿ ŸŸ   ŸŸ Ÿ   Ÿ ŸŸŸŸ  ŸŸŸŸ   ŸŸ Ÿ ŸŸ Ÿ  Ÿ   ŸŸŸŸ  ŸŸ ŸŸ Ÿ Ÿ  Ÿ  Ÿ   ŸŸ Ÿ    Ÿ   ŸŸ Ÿ Ÿ ŸŸ  Ÿ   Ÿ  Ÿ  ŸŸŸŸŸ ŸŸŸŸ ŸŸŸŸŸŸŸŸ ŸŸ Ÿ Ÿ   ŸŸ ŸŸ   ŸŸ Ÿ  ŸŸ ŸŸŸŸ ŸŸŸŸŸŸŸŸ ŸŸ   ŸŸŸŸ ŸŸ      ŸŸŸŸŸŸŸŸŸŸŸŸŸ ŸŸ Ÿ Ÿ Ÿ  ŸŸŸ   ŸŸŸ ŸŸŸ Ÿ  ŸŸŸ  ŸŸ  ŸŸ         ŸŸŸŸŸŸŸŸŸŸ ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ ŸŸŸŸŸŸŸŸŸ Ÿ ŸŸŸŸŸŸŸ  ŸŸ ŸŸŸŸ Ÿ ŸŸŸ     ŸŸ Ÿ  ŸŸ Ÿ ŸŸŸŸŸŸŸŸŸ  ŸŸ  Ÿ     Ÿ Ÿ ŸŸŸŸŸŸŸŸŸŸŸ ŸŸ Ÿ ŸŸŸŸŸ Ÿ ŸŸŸŸŸ ŸŸ ŸŸŸ ŸŸ    Ÿ Ÿ Ÿ  Ÿ¢’¢¢¥¬¬Öæèëõõ÷úýüýúüýüúüýüüúüýúüûýýúüüüüûúúÿþú÷ó÷÷õ÷óõ÷÷õóõ÷÷÷÷÷÷÷÷÷÷÷èÚÊx                                                                                                                                                                                                                                                                                         YžÙæóóúóóúóóúóúóóó÷úóóóúóóúóúüÿÿüýýýýüüýüýüüýýüýüýüýýüýýüûüüýüýüúúõõõíííëèëèëèëèëèëèëèëèëèëèëèëèëèèëèëèëèëèëèëæëæèæææææææææææææëèêèêèêèêèêæêèêèêèêèææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææêèêèêèêèêææêæëæëææëèêææææææææææææèêèêèëèëèëèëèëèëëèëèëèëèëèëèëèëèëèëèëèëèëèíëèëèíëèíëëèëëëèíëíëëèíëëèííëííííííííííííííííííííííííííííõííííííííííííííííõííõíííõíííõõõíõíííõííííõíõíõíõíõíõíõõíõõõíõõíõõíõõõõíõõíõõíõíõõíõõõõõõíõõõõíõõõõõõõõõõõõõõõõõõöõùõùõùõùõøùõøùõùõøõùõùõùõùõùõõöõõöõõõõõõõõõõõõõõíõõõõõõõõõõõõõíõõõõõõõõíõõõõõíõõõíõíõõõõíõíííííõõõíõõííõõíõõíõõíõíõíõíõíõíõíõííõíõíõííõíõíõíõííõííõõíííõíííííõíõííííííííííõíõííõííõííííííííííííííííííííõíííõííõííõííííííííííííííííííëëëëëèëëèëëèëëèëëèëëèíëèëëèëëèííëëèííííõõõõúûýüúýúýúýúýýúýüýúýûýúüüüüúúýúûüúüþÿü÷÷÷õóõóõ÷÷õó÷÷÷÷÷÷õ÷õ÷÷÷õèÙÊx                                                                                                                                                                                                                                                                                          B›Ùæòóúóóúóó÷óúóúóóú÷÷ó÷÷÷óóóüüþÿüüýýýüýüýýüüýüýüýüúýüúýüýúüüüúýüüüüúýúýúýúüúüûúüúúýúüúúýúüûúüúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õóõ÷óõóõóóõõóõõó÷÷õ÷÷óõó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷ú÷ú÷÷÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúüûúúúúúýúüûúýúýúüýúýúüúýúýúýüüúüüüüûýüüýúýúýúýüýüýüüýüüüýüüüýýýýýýýýýýýýýýýýýýýýýýýýýþþþýýþþþþþþþþþþþþþþþÿþÿþþýþþþÿþÿþÿþÿýÿýÿýÿýÿþÿþÿþþÿþÿþþÿþÿþÿþÿþþþÿÿþÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿþÿÿþÿÿÿþÿþÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿýÿýÿþþÿþÿýÿþþýÿýÿýÿþÿþÿýÿþÿþÿþÿþÿýÿþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýþýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýýýýýýúýýýýúýüýúýüüúüýýýüýüüüúüüûúüüúüüüýúýúüýúüüúýÿýú÷õóõóõó÷÷ò÷÷÷õ÷÷÷õó÷÷÷÷÷õèÙÊ_                                                                                                                                                                                                                                                                              Y›Ùæòó÷÷óóúóúóó÷÷÷óóóúóóóúóúóúüþÿÿüüüýüýüüýýüýüýüýýüýüüýúýýüýüüüüüûüúýúüúýúüüüüúýúúüúûüúúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úú÷ú÷ú÷ú÷ú÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õó÷÷÷÷÷÷÷õ÷÷óõ÷÷óõóó÷õò÷õóõ÷÷õ÷õ÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷úúú÷÷úúúùúúúúúúúúúúúúúúúúúúúúûúúúúúúúýúûüúúúüúúúüúûúüúýúýúüüüúýúýüúýýüüúýüüüýüýüýüýüýüýýýýüýýýüýýýýýýýýýýýýýýýýýýþýýýýþýýýþþýþþþþþþþþþþþþÿýþþþþþÿýÿýþþþþþþþÿýÿýÿýÿýþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿÿÿÿþÿþÿþÿþÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿÿÿþÿþÿÿþþÿÿþÿÿþþÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿýÿþÿþÿþÿþÿþþÿýÿýÿýÿþþÿýÿþÿþÿþÿþþþþýþþýþýþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþýþýýýþþþýþýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüüüüüüüûýýúýüýüýüýúýýýýúýúüüüüûüýüüýýûýúýúûüúüûüüúýÿþü÷÷õóõóõóõóõ÷õóõó÷õó÷÷õóõ÷òèÙž_                                                                                                                                                                                                                                                                           ;”×àòóóúó÷óóóúóóóúóúóóú÷óóóúóóúüþþÿüüýüýýüüýüüýúýüýüýúüýúüúýúýúýúüüýúýúüúüýúúûúüúüúúüúúüúüúúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷óõ÷õ÷÷ò÷õ÷òóõóõõó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷ú÷úú÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúûúýúúúúúúüúúüúúüúýúüüýúüúüúýúýúüüüúýüüúýüýúýúýüýüýüýüýüüüüüüýüüüýýýýýýýýýýýýýýýýýýýþýýýþýþþþýýþþþþþþþþþþþþþýþþþþÿþþþÿþÿýÿþÿþÿýÿþÿþÿýÿþÿþÿþÿþÿþÿþþÿÿþþÿþÿþÿþÿÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿÿÿþþÿÿþÿÿþÿþÿþÿþÿÿþÿþÿþÿýÿýÿþþÿþÿýÿýÿýÿþþÿýÿþþþþþþþþÿþÿýÿýÿþÿþþþþÿýÿþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýýýýýýýýüüýüýüýüýúýýúýúýüýûýúýüýúýúýúüüýúýüúýúüüýÿþú÷óóõóõóõóõóõó÷÷÷÷õ÷÷õ÷÷÷÷÷òæÙžZ                                                                                                                                                                                                                                                                 ;ƒÓàò÷÷÷ó÷úóó÷úóó÷óóúóó÷úúóó÷úóúüýÿÿüüüüýüüýüüýüýúýüýýúýýýüýúýüüüúüüúýúýúúüüüüúýúýúúûüúûúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷úú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷óõ÷÷ó÷õ÷÷òó÷õò÷÷óõóõ÷õ÷õóõ÷÷õ÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷úúú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüúúüúûüúýúüúúüüúýúýúýúýúýúýüüûüüüüüüýüýüýúýüýüýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýþþþþþþþþþþþþþþþÿþÿþþþþÿýþþþÿýþþþþÿýþÿýþÿþÿþÿþÿþÿþÿþÿÿþþÿÿþÿÿþÿÿþÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿÿþÿþÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿþÿÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿþÿþÿþÿþÿýþÿýÿýÿþÿýÿýþþÿþÿþÿþþþþþýÿýþþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþýýþýþýýýþþþýýþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüýúýýúýýüýüýüûüýüúýüýüýúýúýúýúüüýúýúûúýúýüüüýÿýü÷÷÷÷õ÷õóõóõóõóõóõ÷õó÷õó÷÷õ÷òæ×Y                                                                                                                                                                                                                                                         ƒÓßñóóúóóóúóóúóóú÷óóúó÷óóúóóúóóúüüÿÿýüüüýüýýüýüýúýúüýúüúýúüüúýúýýúüúüúüüúûúúüúúúüúüúúúüúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõ÷÷óõõ÷÷òóõ÷õó÷õóõ÷÷÷÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷ú÷úú÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúûúúúúúüûúüûúüûúüüúüúüúüüûúüúýúýúüüüüüüúýüüüüýúýüýúýüýüýüýüüüüüüýüüýýýýýýýýýýýýýýýýýýýþýýýýþýþþþýþþþþþþþþþþþþýþýþýþýÿþýÿþÿþýÿþÿþþÿþÿýÿþÿþÿýÿþÿþÿþÿþþÿÿÿþÿÿþÿþÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿþÿÿýÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿýÿþþÿþÿþÿþÿÿþýÿýÿþþýÿýÿýÿþþþþþþÿýÿýÿþÿþþþþþþýÿþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýüýüüýýüýüüüýüýüýýüüúýúýúýúýüüûüüüüýüýüüúüýÿþú÷õó÷ò÷÷òóõóõóõóõóõó÷÷õ÷÷õó÷÷òàÓ@                                                                                                                                                                                                                                                            zÓÙèóó÷úóóúóó÷úóóúóó÷ó÷úóóúóóúóóúüüÿÿþüüüüüýüýüüüüýüüýüüüüúýúýúúüüüúýúûüüüúüúüúúüúûúúúûüúúûúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷úú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷÷õ÷÷÷õó÷óò÷õ÷ò÷õóò÷÷÷õ÷õ÷õóõ÷õ÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûüúúúúúüúúüúúüúüúûüúüüüúýúýüüúýúüüûüüúýüýüýüýúýüýüýüýüýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýþþþþþþþþþþþþþÿþÿýÿþÿýþÿþþþþÿýþþÿþÿþþÿýÿýÿýÿþÿþÿþÿþÿÿÿþþÿþÿÿþÿÿÿþÿýÿþÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿþÿþÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿþÿþþþýýþÿýÿýÿýÿýÿþÿýÿþÿþÿþþþÿþþþþþÿþþÿýþþþþþþþþþþþþþþþþþþþþþþþýýýþýþýýýþþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüýüýýüýûüýýúýýúýúýýûüýýüüüýüúýüýúýûüúüúýÿÿýú÷÷÷÷÷õ÷õó÷õóõóõóõóõóõóò÷õó÷÷õèÙÓ›;                                                                                                                                                                                                                                                                       xžÙàòó÷÷÷óóúóóú÷óóúóúóóúóóúóóúóóó÷úüþþÿüüüüüüüüüüüýúüûüüüüúýúüüüûúüúüüúúúýúüúüûúúúýúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õóõ÷õóóõó÷õ÷÷ò÷÷÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷ú÷úú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúûúüûúüûúüüúýúýúýúýúúýúüüûüüüýúýüýüüýúüüúýüýüýüýüýüýüüüüüüýüýýýýýýýýýýýýýýýýýýýýýýýþýþýþþþþþþþþþþþþþþþþþþýþþýÿþþþýÿýÿýÿþÿþþÿþÿýÿýÿýÿþÿþÿþÿþÿþþþÿÿþÿþÿÿÿþÿÿÿÿÿÿþÿþÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿþÿþþÿÿþÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿþÿýÿýÿýþþýÿþþþþþþýÿýþþþÿþþýþþýÿþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýüýýúýüýúýüýüüüýüúýüýúýúýúýúýúýúýúüüýÿÿþü÷÷õ÷÷óõ÷÷÷÷÷õóõóõóõóõóõ÷õ÷÷÷õ÷õèÙÓ”"                                                                                                                                                                                                                                                      Y›Ùàñóóó÷úóóúóó÷úóóóóúóóúó÷úó÷úóúóúúüüÿÿÿýüüúüüüüüüýüüúýüüüüüúüüüúýúúüüúüúúûúüúüúúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷÷úú÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õ÷÷õóõóõóõó÷÷ò÷õõóõóõóõ÷õóõ÷õ÷÷õ÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷ú÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüúúüúúúüúúúüúúüúüúüüüüüüüúýúüýúýúýüüüýýüüýüýüýüýüýüýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýþþþþþþþþþþþþþþþþÿþÿýþþÿþÿþÿýÿýþþÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿþÿÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿÿÿþÿþÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþþÿþÿþÿþþÿýÿþÿþÿþÿþÿþþþþþþþþÿþÿþÿÿþÿýÿþÿþÿþÿþÿþÿþþþþÿþÿþþþþþþþþþþþþþþþþþþþþþþþþýýýýþýþýýýþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüüüüýüüýýýüýüýúýýüüýüüýúýüýúýüüýüüüúýýÿþüú÷÷÷÷÷÷÷õ÷÷õóõó÷÷óõóõóõóõóòó÷õó÷òàמx                                                                                                                                                                                                                                                      ƒÓÙèóúóóúó÷óúóóúóú÷óúóóó÷óó÷óó÷óóúóúúüüþÿÿÿüüüüüüüüüüüúýúüúüüúúüúüüúúüúüúúüúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úúúúú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õóõóóóõóõó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷ú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüúúüüüüúüüúüúüüúüúüúüüüüúüüüüüüüüüüüýüýüýüýüüýýüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýþþýþýþþþþþþþþþþþþþþþÿþþýþýÿþþþþþýýÿýÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿþþÿþþÿþÿþÿþÿÿÿÿÿÿÿýÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿþÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿýÿþþþÿþþýÿþÿþÿþÿþþþýýýýýÿþþþþþþþþþþþþþÿþþþþýýýÿþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüýýýýüýýúüüýúýüüüüýûüýýúýüúüýúýúüýýÿÿÿýúú÷÷÷õ÷÷õ÷÷÷÷÷óõ÷õ÷õ÷òõóõóõ÷÷õ÷ò÷õèÙÓY                                                                                                                                                                                                                                                 _žÙæò÷÷÷÷ó÷óóúóóó÷óóúóúó÷úóóúóúóóó÷÷óúúúüüÿÿÿþþüüúúúúüúüüüúüüüúüúúüüúüúúüúüúúúúúüúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷úú÷÷÷÷÷÷ú÷÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õóõ÷õ÷÷óõ÷ò÷õ÷õõõóõ÷õ÷õ÷õ÷õ÷÷õ÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷ú÷ú÷÷úúúúúúúúúú÷úúúúúúúúú÷ú÷úúúúúüúúüúúúüúúúüúúúúüúúüúüúúüüüüüüúüüüüüüüüüüüüýüüýüýüýüýýüüýýýýýýýýýýýýýýýýýýýýýþþýýýýþþþýýþýþýþþþþþþþþþþþþþþþþþÿþÿýþÿþÿþÿÿþÿþÿþÿþÿþþÿýÿýÿþÿþÿþÿþþÿÿþÿÿþÿþÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿÿþÿÿÿþÿÿÿþÿýÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿÿþÿÿÿþþÿþÿÿþÿýÿþÿþÿÿÿþÿÿÿþÿþÿþÿþÿÿþÿÿÿÿÿþÿþÿþÿþÿýÿþþÿýþþþþþÿþÿýþþþþþþþþþþþþþþþþþþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüýüýúýûüýýýýýüüýýýûüüýúýýüýüüýýýÿÿýýý÷÷÷÷÷÷õ÷÷÷÷÷÷÷õóõ÷÷÷ó÷÷÷÷óõóõóò÷óõ÷òèÙÓƒ                                                                                                                                                                                                                                                                   Z›Óßñóóóúóú÷óúóúóúóóóóúóóú÷óóóú÷úóóúóúóúóúúüüþþÿÿÿÿýüüúúúúúúúüúüúüúúúúú÷úúúúü÷ü÷úúüúúúüüúúúüüúúüúúúúúüúüúúü÷ü÷ü÷úú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ó÷÷÷÷÷÷÷ó÷ó÷ó÷ó÷÷÷ó÷óóõ÷÷ó÷ò÷óóó÷÷óó÷ó÷óóóó÷óóó÷ó÷÷÷÷÷÷÷÷÷÷÷ó÷÷÷÷÷÷÷÷÷ú÷úúó÷÷úó÷÷÷ú÷÷÷÷ú÷ú÷úú÷ú÷üúüúúüúúúúüüüüüüüúúúúúúúúüüúúüüúüüüüúüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýüýüüüýýýüüüýüýýýýýþýþýþüýýýýýüýýýþþþýýÿþþýýýýýýýþþþþýÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿÿÿþÿþÿþÿþþþþþþþÿÿþÿþþþþÿþþþÿÿýÿþýÿýÿþþÿþþþþþþþýþýþýþýþýýþýýýýýýþþþþþþþþþýþýþýþþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýüüüüýüüüýüýýýýýýýýýýýýüýüýüýüýüýüýüýúýüúüüüýúúüüúýüýýýþþÿÿþÿýýúú÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷óõ÷õ÷õóõóõóõóõ÷ò÷òòà×Ê]                                                                                                                                                                                                                                                                 "ƒÓÙæòúó÷óóúóó÷óóúóúóóóúóóúóúóóóóúóúóúóúóúúóúüüüüüþÿÿÿÿÿÿÿÿÿþÿþÿÿþÿÿþÿÿÿÿþÿþÿþÿþÿþþÿþþþþÿþþþþþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿüÿüÿüþþþþþþþþþþþþþþþüÿüþüÿüþþþüüþþüþþþþþþþþþÿüÿüÿüþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþÿþþÿþÿþÿþÿþþÿþÿþþþþÿþþÿþÿþþþþþþþþÿþÿþÿþÿþþþÿþþÿüþþÿþÿþÿþþÿþÿþþþþÿÿüÿþÿþÿüÿþÿþÿþþþÿüÿüÿüÿüÿþÿýÿüÿþÿþÿÿþÿþÿþÿýþþÿþÿþÿÿþþÿÿÿþÿþÿþÿþÿþÿþÿÿÿþÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿþþýýûúú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷õ÷÷÷÷÷÷õ÷÷÷óõóõ÷õèÙÓ@                                                                                                                                                                                                                                                        _ž×Ùèóó÷÷óóúóúóó÷óóú÷ó÷÷÷óóúóúóóúóúóúóúóóúóóóúóúúúüúüüüüüüüüüüüüüüüüüüüüüýüüüüþüüþüþüüýüüüþüýüþüüþüüýüýüþüþýþüþýþüýýýýýüþüþýþþüþüþüþüþüþüþüþüþüþüþüþüþüþþþþþþþþþþþÿþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþþþþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿÿþÿþÿþÿÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿÿÿÿþÿþÿþÿþÿýÿýÿýÿýÿþÿþÿýÿýÿþþþþþþþþþþþþþþþþþþþþþýþþþþýþþýþþþþþþþþþýýþþþýþýýýýýýýýýýýýýýýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýýýýýýýýýýýûýüûúúúúúúú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõóõ÷÷÷õóõóõ÷èß×Ó‚                                                                                                                                                                                                                                           ‚Ó×ßòóó÷úóóó÷úóóúóóúóóóúóó÷÷÷ó÷óóúóúóúúóúúúóúúóúóúúóúúóüúúúúúúüúúüóúúúúúúúúüúúüúúúúüúüúüúüúüüúüúüüüúüúüüúüúüúüúüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüþüþüüþüþþüþüýýýüþýýýýýþýýýýþüþýüþýþüþýýþüþþþþþþüþþþþþýþýþüþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþþÿþþÿþþþþÿþþþþþþþþÿþþÿþþþÿÿþþÿÿÿþÿþÿüÿÿÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿþÿÿþþÿþÿþÿÿýþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿþÿýþþþÿýÿýþþþþþþþþþýþýþþÿýþþþþþþþþþþþþþþþþþýþþýýþýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýüýüýýüýüýüýýüýüýüýüýüýüýüüüýúýüüüüýýúýüüüüüüüüüüüúüúýúýúýüüúüüúüüúýüýúûüúúüúúüûúûúûüúûúûúûúûúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úúúú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷÷õ÷÷÷õóõóõ÷÷÷òàÙÓ˜;                                                                                                                                                                                                                                      Y›ÓÙèóó÷÷óúóóú÷ó÷÷óóú÷óóúóóóúóúóúóóúóóúóóóúóóúóúúóúúóúóúúúúóúóúúóüóüóüúúúóúúóúúúúúúúúúúúúúóüúüúúúúüúüóüúüúüúüúüóüúüúüúüúüüüúúüúüúüúüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüþüüüüüüüþüüýüüüýüýüüýüþüþüþýþüþüþüþþýþüþüþüþþþüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþÿþÿþÿþþÿþþÿþÿþüÿþÿþüÿþþÿþÿþüÿþÿþÿÿþÿþÿÿÿþÿþÿþÿüÿüÿÿÿþÿÿÿýÿþÿþÿþÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿÿþÿÿþÿÿþÿþÿÿÿþÿþÿþÿÿÿþÿþÿþÿþÿþÿýÿþÿþÿþþþþþþÿþÿþÿýÿýÿþÿþÿþÿýÿþÿþÿþþþþþþþþþþþþþþþþþþþþýþýýþþýþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýüýüýýüýüýüýüýüýüýúýúýüýüüýúýúüüüüüúýúýúýúýúýúüúüúüúûúüúúüúúüúúúúüúüûúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷ú÷ú÷ú÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷óõ÷÷÷÷÷õ÷÷õèÙÓÇ]                                                                                                                                                                                                                                                               _ž×Ùèóó÷÷óúóóúóó÷úóóúóó÷úóó÷óóó÷úóúúóúúúóúúóúóúúóúúóüóúóúúúúúóüóúúúóúóüúúúúúúúúúúúúúúúúüúüúúúúüúúúüúüúüúúüúüúüüúüúüüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüüüþüýýýüþüþþüþüþüþüþüþüþýþýýüþýþþþþýþüþýþýþýþýþüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþþþþþþþþþþþþþþþÿþþþÿÿþþþÿÿþÿþÿþÿÿÿþÿþÿþÿþÿÿüÿþÿþÿÿÿÿÿÿÿÿüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿþÿþÿÿþÿÿÿþÿþÿþÿþÿþÿýþÿþÿþÿþÿþþÿþÿþþþÿþÿÿþÿýþÿýþþÿýþþþþþýþþþýþþþþþþþþþþþþþþþþþþþþþþþþýþþýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýüýüýüüüüýüýüýüýüýüýüýüüüýúýüüüýüüúýüüüúýúýúüúüúýúýúýúüúüüúýúûüúúüúûúúúúûúüúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷úú÷ú÷ú÷÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õ÷÷óõ÷÷÷òòàÓÓƒ                                                                                                                                                                                                                                   9”Ó×àèóó÷óúóóóúóóúóóóúóóú÷óúóúóóúóóúóóóúóóúóúúóúóúóúóúúóúóúúúóüóúúúúüóúúúúúúúúúüóüúüóúúúúúúüúúúüúúúüóüüúúüúúüúüúüúüúüúüüúüúüúüüüüüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüüüþüüýüüüýüýüüþüýüýýüýýýþüþüýþýþüþüþþüþþþþþþþþýþþþýþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþþþþþþþÿþþÿþÿþÿþÿþÿþþÿþþÿüÿþþþÿþþÿþÿüÿüÿþÿþÿþÿþÿÿÿþÿþÿþÿüÿýÿÿÿþÿÿÿþÿÿþÿþÿÿþÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿÿÿþÿÿþÿþÿÿÿþÿþÿþÿþÿþÿþýÿþÿþþþþþÿþÿýÿþÿýÿýÿýÿþÿþÿýÿýþþþÿþþþþþþþþþþþþþþþþþþþþýýþþýþýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýüýüüýüýüýýýýüýüýüýúýüýüýúýúýüüüüûüüúýüüúýúýúýúýúýúýúüúüúýúüûúüúüúúüûúúúúüúúüúúüûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúúú÷ú÷÷ú÷ú÷ú÷÷÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷òòà×ÓY                                                                                                                                                                                                                             YÓ×àèó÷÷÷úóóúóó÷úóóúóóóúóóó÷úóúúóúúúóúúóúóúúóúóúúúóúúúúóúóüóúúóúüóúúúúúóüúúúúúúúúúüúúúúüúüóüúúüúüúüúúüúúüúúüüúüúüüúüúüüüúüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüþüüüþüþüýüýüþüþýüýüýýþüþüþüþýüýýýþþþüþýýüþüþþþþýþýþþýþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþÿþþþþÿþþþþþþþþþþÿþÿþÿþÿþÿþþÿþÿþÿþÿÿþÿþÿþÿþÿüÿÿþÿÿþÿÿÿÿÿýÿÿÿÿþÿÿþÿÿÿÿÿþÿÿþÿÿþÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿþÿþÿÿÿþÿÿþÿþÿþÿþÿÿþÿþþÿþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿþþÿþþþÿþÿþÿýþþþþþþÿýÿþþþþÿþþþþþþþþþþþþþþþþþþþýýþýþþýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýüýýüýüýüüüüüüýüýüýüýúýüýúýüüüüûüüýüüúýüüüüüúýúýúüúüúýúýúüúüüúüúúüúüúýúýúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúù÷úú÷ú÷ú÷ú÷ú÷÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷÷÷õòà×ÓÓ_                                                                                                                 _                                                                                     Y›ÓÓßèóóóúóóóúóóúóóóú÷óóú÷óóúóóúóóóúóóúóúóóúóúóúóüóúúóúúúóüúóüóúúúúóúúúóúúóüúúúúúúúüóüóüúüúúüúúúúúüúüúüúüúúüúüúüúüúüúüúüüúüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüüüüþüüþüüýüýüýüüüþüýþüþüýýþýþüþýþýþüþýþýþþþþþüþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþÿþþüÿþþÿþÿþÿþþþþþþþþÿþþÿþþÿþþÿþÿüÿþÿþÿÿþÿÿþÿþþÿþÿþÿþÿÿüÿþÿÿþÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿÿÿþÿÿÿÿÿÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿþÿþþþÿþþþþþÿþÿþþÿþþþþýÿýÿþÿþÿþþþþþþþþþýþþþþþþþþþþþþþþþþþýþþýþýýþþýþýýþýýýýýýýýýýýýýýýýýýýýýýýýüüýüýüýýýýýýüýüýüýüýúýüýüüüýüüüúýúýüüüüúýúýúýúýúýúýúüúýúüûúüúüúúûúúúúúûúüúúüúúýúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷ú÷ú÷÷÷÷ú÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õòàÓÓÇ_                                                                                                                 c                                                                                  Y›ÓÓßèóó÷úó÷óúóóúóóóúóóóúóó÷úóúúúóúúóúóúúóúúúóúóúóúúúúóúúóüóúúúúúúúúúúúúúúúóüúúúúúúúüúúúüúúúúüúüúúüúüúúüúüúüüúüúüüüúüúüúüúüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüüüüüüüþüýýüýýüþþüýüüüþýþüþüþüþüýüþþýýýþüþüþýþýþþþýþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿüÿüþþþÿþÿþÿÿüÿþÿþÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿÿÿÿþÿþÿÿÿþÿÿÿÿþÿÿþÿþÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿþÿþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþþÿþÿýÿýþþþþþþþÿýþÿþþÿþþþþþþþþþþþþþþþþþþýýþýþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüüüüüýüýüýüýüýüýúýüüüýüüýúýüúûüúüüüúýúýúüúüúýúüúüüúüúüüúúýúüüúúúûúûúúúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷úú÷ú÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ñà×ÓÇ_                                                                                                                                                                                                                                 Y›ÓÓÙèòóó÷÷óúó÷óúóóóú÷óóúóóúóóóúóóúóúóóúóóóúóúóúúóúóúóúúóüúóúóúúúúúúúúúúúúúúúúúúüóúüúúúúüúúüúúüóüúüúüúúüúúüüúüúúüüüüüüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüþüüýüüþüüýüüþýýýýüþüýýþýýýýþýþüþþýþþþýþþþþüþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþÿþþþþþþÿþÿüÿþÿÿþþþþÿþüÿÿüÿþþþÿüÿþþÿüÿþÿþÿþÿþÿþýÿþÿþÿÿþÿþÿþÿþÿÿþÿÿÿÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿþÿÿþÿþÿÿÿÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþþþÿþÿþþÿþÿþþýÿýÿýÿþÿþÿþþýþþþþþþþþþþþþþþþþþþþþþþþþþýþýýþþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýýýýýüýüýüýüýúýüýúýúýüüýúýúýýüüýúýúýúüüüúýúüúýúýúúýúüûúýúúúûúüüúúúúüúúúûúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúùúúú÷ú÷ú÷ú÷÷÷÷ú÷÷ú÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÚ×ÓÇZ                                                                                                                                                                                                                  ;›ÓÓ×àèóó÷÷÷ó÷ó÷úóóóúóóóúóú÷úóúúóúóúúúúúúúúúúúóúúúúúúóüóúúúúúúóüóúúúúúúúúúúúúúúúüúóüúúüúúúúüúúüúüúüúüúüúüúüúüüüúúúüúúüúüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüüüüüþüþüüýþüþüýüýüþüýýþüþüþýüþüþþþüþþüþþüþüþþþþüþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþÿüÿüþþþÿþþþÿÿüÿþÿþÿüÿÿþÿþÿÿþÿüÿþÿþÿÿÿÿþÿÿÿþÿþÿÿþÿÿÿþÿÿþÿþÿÿÿþÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿþÿþÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿÿþÿþþÿþÿýþÿþÿþÿýÿýþþþþÿýÿÿýÿþþþþþýþþþþþþþþþþþþþþþýþýþþýýþýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüüüüüüüýüýüýúýüýúýüýüýúüüüýúüúýúýúýúüúýúýúüúýúüúýúüúúüúúúüüúúúûúúüúúûüúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷úúú÷÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èà×ÓÓžY                                                                                                                                                                                                           !‚ÇÓÓÙàòóóúóúóóúóúóóúó÷óúóóúóóúóúóóúóúó÷óóóóúóóúúóúúóüóúóúúúúúúúúóúúúúúúüúúúúúúúüúúúúüúüúúúüúúúüúüúüúüúüúüúúüüüüüüüüüúüüúüüüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüþüüþüüüþüýüüüþüþüþüþüýýþüþýþýþüþüþýýþýýþýþýþþýþþþþüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþþþÿüÿüÿüÿÿþþþÿþþÿüÿüÿüÿÿþÿüÿþþÿüÿÿÿþþÿþÿüÿüÿÿüÿþÿÿÿþÿÿþÿÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿÿþÿþÿÿÿþÿþÿÿÿÿÿþÿþÿÿþÿÿþÿþÿþÿþþÿþÿþÿþþþÿþÿþþÿþÿþþþþýÿýÿýÿþþýþýþþþþÿþÿýÿþþþþþþþþþþþþþþþþýþýýþþýþýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýüýüýýýýýýýýýýüýüýüýüýüýúýüüüüýüüüüýüüüúüüýúýúýúýúüúýúüüúüüýúüüúûúýúýúüúúüúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷úú÷÷ú÷÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õèÙ×ÓÓ”Y                                                                                                                                                                                                                       Y˜ÓÓ×Ùèòóó÷÷ó÷óóúóó÷óó÷úó÷úóúóúúóúóúúúúúúúúúüóúúóúóúúúúúóúúóúúúúúóüóüóúúúúúúúúúúüúúúúúüúúüúüúüúúúúúüúüúüüüúúüúúúüúüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüþüüüüþýýüþüüþüþüþüýüüüþüþüþýýüþýþþþþüþýþüþþþþþþþþþþýþþþþþþþþþþþþþþÿþþþþþþþþþþþþþÿþþþþÿþþÿþÿüÿþþÿþþþÿþÿþÿÿüÿüÿÿþÿÿþÿÿüÿþÿÿÿþÿÿÿÿýÿÿÿþÿüÿÿþÿÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿÿþÿþÿþÿþÿþþÿþÿþþÿýÿþÿþÿþÿþÿþÿþÿþÿýþýþþþþþþþþþþþþþþþþþþþþþýþþýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüüüüüüüüüüüýüýüýüýüýüýúýüüýúýúýúýüüüúüüüüüüúýúýúüúûüúûúüúúýúúúúúúúûúúúúúúûüúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷úúú÷÷ú÷÷÷ú÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÚ×ÓÓ]                                                                                                                                                                                          ZÓÓ×Ùæèó÷ó÷÷÷÷úóú÷ó÷óúóúóúóóúóúóúóúóúóóóóóúúúúúúóúóúüóüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúüúúúúúúúüüúüüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüþüüüþüüüüþüüþüüþüþüþþþþþüþýýýýþþüþüüþþþýþþýþþüþþþþüþþþþþþþþþþþþüþþþüþþþþþþþþþþþþþþþþÿþþüÿþüÿüÿüÿþüÿþþÿþÿüÿüÿÿüÿüÿüÿýüÿþÿþýþþÿþýÿþÿþÿþÿÿÿþÿÿþÿÿþÿÿþÿþÿÿþÿþÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿþÿþÿÿÿþÿÿÿÿÿþÿþÿþÿþÿþÿþÿþþþþÿþÿþÿþÿþÿþýÿýÿýÿþþþþþþýþþþþþþýýÿýÿþþþþþþþþþýþýþýýýýýýýþþýýþþýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýýýýýýýýýüýüüüüüüüüüüüúýüýüýúýüûüüüýúýúýúýúüúýúüüúüúýúúýúüüýúýúýúüûúýúúúûúüûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷÷÷úú÷úú÷÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ñèÙÓÓÓÇx!                                                                                                                                                                                            ‚žÓ×Ó×Ùèñóóóóó÷óúóú÷úóúóúúóúóúóúóúóúúúüúúúóúúóúüúúóúúóúúóüóüóüóüúúúúúúúúúúúúüúüúúüúüúúüúüüúüúüüüüúüüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüþüüþüþüþüüþüüüüüüþüþüþüýýýýþþüþýþüþþüþþþüþþþþþþþþþþþþþþÿüÿüÿþþÿþþþþþþþþþþÿüÿþþþÿüÿþÿþÿüÿþÿþþÿüÿüÿÿýÿüÿþÿþÿþÿÿÿÿýÿÿÿÿþÿÿÿþÿþÿÿþÿþÿÿþÿþÿÿÿþÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿþÿÿÿÿÿÿÿþÿþÿþÿÿÿÿÿþÿþÿþÿýÿþÿþÿýÿýÿýÿþÿþÿÿþÿþÿþÿþÿýþþþÿþÿýþþþÿýÿýÿýÿýÿýÿýþþþýýþýþýþþýýýýþýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüüüüýüýýýýýýýýýýýüüüüüüüüüüýúýúüúýúýúýúýúüúýúýüúýúüúúúúúúúúúúúúúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úúú÷÷ú÷÷÷ú÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷òèÚ×ÓÓÓÓƒ@                                                                                                                                                                                     Z”ÇÓÓÓÓÙèñò÷óóóóó÷úóúóóúóúóüóúóúúó÷óóúóúóúúóúóúüóúúúúúúúúúúúúúúúüúüúüúüúüúúüúüúüúüüúüúúüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüþüþüþþþþþþþþþýþþþþþþüþþþþþüþþþþþþþþþüþþüþþþþüþüþüþüþüþýþüÿüþþþþþþþüÿüþþþüÿüþþüÿüÿüÿýÿüÿýÿüÿüÿýÿüÿýÿþýýÿýÿýýÿþÿýÿþÿÿýÿþÿÿþÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿÿþÿÿþþþþþþþÿþÿþÿþþþþþþÿþýÿýÿþþýÿýÿýÿýÿþþþþýþþýþþýýýþýÿýþýþüÿþþýýýýýýýýýýýýýýýýýþýþþþþüÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüüüüüüüüüüüüüüüüüüüúüüüüüüüüüüüüüýúüúüúúüúýúüüüüúýúýúýúýúúûúúüúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷úú÷úú÷÷÷ú÷÷÷÷÷÷÷÷õñèà×ÓÓÓÓ˜_;                                                                                                                                                                                                    Z”ÓÓÓÓÓÓ×àæèòóóúóú÷÷÷÷ó÷÷÷üóúúúúúúúúúúúúúü÷úúúúúúúúúúúúúúúúúúúúúúúúúúúüúüúüúüúúüúüüüüúüúüúúúüúúüúúúúüúüúüúúüúüüúüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüþüþüþüþþüþüþüþþþþþþþþþþþþþÿüÿüÿüÿüÿüÿýÿüÿþþÿþþÿýÿþÿþÿýÿÿýÿÿÿýÿýÿýÿýÿþÿþÿÿÿýÿÿÿþÿÿÿÿýÿÿÿÿýÿÿÿþÿþÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿþÿþÿþÿÿýÿÿýÿÿÿýÿþÿþÿþÿþþþÿýÿýÿýÿýÿüÿüÿüÿüÿüþýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüýüýüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüúüüúüúüúüúúüüúüúüüúüúüúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷÷÷ú÷÷÷÷õèèàÙÓÓÓÓÓÓ›_;                                                                                                                                                                                                        _{›ÊÓÓÓÓÓÓÓ×ÙÙßàßæèèèñèñèñèñèñèññèñèñèññññññññññññññññññññññññññññññññññññòñññññññòññòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòõòõòòòòõòõòòõòõòõòõòõòõòõòõòõòõõõõõòõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõ÷õõõ÷õõõõõõõõõõ÷õõõõõ÷õõ÷õõõ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷÷õ÷õ÷÷õ÷÷÷÷÷õ÷÷÷õ÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úùú÷÷úú÷÷÷÷÷ú÷÷÷ú÷úú÷ú÷ú÷÷úúú÷û÷÷÷÷û÷úúúúúûúúúúú÷ûúúúúûúúûúûúúúúúúúûú÷úúø÷úúú÷úúúú÷ú÷û÷÷ú÷÷÷÷÷ø÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷÷÷÷õ÷õ÷õ÷÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õõ÷õõ÷õõõ÷õõõõõõõõ÷õõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõòõòõòõòõñõõñõòôõñõñõñõñõñõòéòòôñõñôñôñôññôñôñôñôñôññëñôèõèôñôèñèôñèôèñèñèñèñèèèèèàààÙÙÙ×ÓÓÓÓÓÓÓžƒ];                                                                                                                                                                                                                        #Yx”žÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓ××ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ××Ó×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÕ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ××××ǘzY;                                                                                                                                                                                                     ;;@Y]Zxzzzzzzzzzzxzzzz‚zzzz‚zzzzzzz‚zzz‚zzx{‚zzz‚zzzzz‚zx‚zxxzzzzzz‚xzzzzzxzxzz‚xzzzzzz‚zxzzzz‚zzz‚z‚zz‚z‚x‚xzzzzz‚x‚‚zzzzz‚zzzzzzzz‚zzzx‚zz‚zzzzzxzx‚{zxzzzxzxzzxz‚zzzzxzzzxxzzzzzzzzzzzzzz‚z‚xzzzzzzzzxzxxzzzz‚xzzxz{zzzzzxzzzz‚‚xzzzzzz‚xzzzzzzzzxz‚zxxzzxzzzzzxz‚zzzzƒÆÇÆÇÆÊÌÌ×ÌÌÌ×ÌÌÌÌÌÊÌÌÌÌÌÌÌÌ×ÌÊÌÌÌÌÌÌÙ×ÌÌ×ßÌ×ßÙÌßÙßßßßßßßßßÌßÙß××ÌÌÌÌÌÊÌÌÌÊÌÊÆÊÆÆÆÆ›Æ–››››–›––––––”–‚”‚‚‚ƒ‚ƒ“‚ƒƒƒ‚ƒ‚”‚ƒƒ‚‚ƒ‚ƒzzzzzzxzzzzzzzzzxzxz‚z‚zx‚xzzzzzxzzzz‚z‚zxzzxz‚zzzzzzzzzzzzzzzzzzxzzzxzzzzz‚{zzzzzzzzzzzzzzzzxzzzzzzzzz‚zzzzzzzzzzzzzxzzzz‚zx{‚zzzz‚zzzxxxzzz‚zxzxxzzzzzxzzzzzzzzzzzxzz‚zzzzzxz‚xzzzz‚xzz‚x{zz‚{‚z‚‚zzz‚xxxzzzzzzzzzzzzzzz{zzzxzzzz‚x‚‚zzxzzzzx‚zzzzzzzzzzz‚zzzzz‚zzzzxxZYY;;                                                                                                                                                                                                                                           "chhÁÄÄÍÍÍÍÄÍÍÄÍÍÄÍÄÍÍÍÍÍÄÍÄÄÍÄÍÍÑÑÍÑÍÍÑÑÍÑÑÑÑÍÑÑÑÑÑÑÑÑðÑÑðÑððÑÍÑÍÍÍÍÍÍÍÄÄÁÁÁÁÁhÁhhhhhhhcccccXXXXTTTTTT                                                                                                                                                                                                                                                                     chÁÁÁÁÁÄÄÍÄÍÄÍÄÍÄÄÄÄÄÍÄÄÄÄÄÄÄÍÄÍÄÍÍÍÄÍÍÍÑÍÍÑÑÑÍÑÑÑÑÑÑÑðáððÑïÑÑÍÐÐÐÄÍÍÄÄÄÄÄÁÄÁÁÁhhhhhcccbccXXXXTXTXTT"                                                                                                                                                                                                                                                            dÁÁÁÁÁÄÄÄÄÄÄÄÍÍÍÍÍÍÄÄÄÄÍÄÄÄÄÍÄÍÍÄÄÍÍÍÍÍÍÍÍÍÍÑÑÑÐÑðÑÑÐðððïÑÑÑáÑÑÍÍÈÄÍÄÄÄÄÁÄÄÁÁhhÁhhhhccccXXXXXXXTTTTTT                                                                                                                                                                                                                                         "chhhhÁÁÁÄÍÍÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÍÍÄÄÍÄÍÑÍÑÍÍÍÍÑÑÍÑçðÑÑÑÑÑðÑÍÑÍÑÍÍÍÍÍÄÁÄÄÄÁÁÁÁhhhhcccccccbXXVXTTT"M                                                                                                                                                                                                                                           "chhhhÁÁÄÄÄÄÄÍÁÍÄÁÁÄÄÄÁÄÁÄÄÄÄÄÄÄÄÄÍÄÄÍÍÄÍÍÍÑÍÍÍÍÍÑÑÑÑÑÑðÑÑÑðÑÑÐÍÍÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhcccccbccXXXTTTX:T"                                                                                                                                                                                                                           chhhÁÁÁÁÄÄÁÁÁÁÁÁÄÄÄÁÄÄÍÁÄÁÄÄÄÄÍÁÍÍÄÍÄÄÍÍÍÍÍÍÍÍÑÑÑÑÑÑÑÑðïðïÑÑÍÍÍÍÍÍÍÄÄÍÄÄÄÄÁÁÁhÁÁhhhhhcbccXXXXTXTTTTT"                                                                                                                                                                                                                       cdhhhhÁÁÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÁÍÄÄÍÄÍÍÍÄÍÑÍÍÍÑÍÑÑðÑÑÑÑÑïáÑÑÐÍÑÍÍÍÍÄÄÄÄÄÁÄÁÁÁÁhhhchcccXcXXXXXXTTTTT                                                                                                                                                                                              chhhhhhÁÁÄÄÄÄÁÄÄÄÁÁÁÄÁÄÄÄÄÄÄÄÁÄÄÄÄÍÍÄÄÍÍÍÍÍÍÑÑÑÑÑáÑÑÑðÑÑÑïïÑÎÑÍÍÍÍÍÍÄÄÄÄÁÄÄÁÁÁÁhhhccccccXXXXXTTTTTT                                                                                                                                                                                                                bhhhhhhÁÁÄÁÄÄÄÁÄÁÄÄÄÄÁÁÄÁÍÁÁÄÍÄÍÍÄÄÍÍÍÍÍÍÑÑÍÑÑÑðÑÑÐÑÑÑóðððïÑðÑÍÍÑÑÄÍÍÄÄÄÄÄÁÄÁÁhhhhhcccccXXcXTTXXTTT""                                                                                                                                                                         ^hhhhh¾ÁÄÄÁÄÄÄÄÄÄÁÁÄÄÄÄÄÁÄÄÄÄÍÄÄÍÄÍÍÍÍÑÑÍÑÑÎÑÑÑðÑïðÑððððððÑððïÑÑÑÍÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhhhcccccXXXXXXTTTT                                                                                                                                                                             chhhh••ÄÃÁÄÄÁÄÄÍÍÄÄÄÄÄÍÄÄÄÄÄÄÄÑÄÄÍÍÍÍÍÑÑÍÑÐÑïÑÑððÑððóðóðððïððððÑÍÍÍÍÍÄÄÄÄÄÁÄÁÄÁÁÁhhhhhcccXXXXXXTTTTT"T                                                                                                                                                                    ccghhÁ¹ÁÄÄÄÄÄÄÄÄÄÄÄÄÍÄÄÄÍÍÄÍÄÍÄÍÍÑÑÍÍÑÍÑÑÑÑðÑððÑïóððððóïóòððïÑïÑÑÑÍÍÍÍÍÍÍÄÄÄÁÁÁÁÁÁhhhccccccbXXXXTT"M                                                                                                                                                                      chhhhÁÁÁÄÍÄÄÄÍÄÄÄÄÍÄÍÄÍÄÍÍÍÄÄÍÍÑÑÍÑÍÑÑÎïÑÑïðÑðððððóïðóðóóððóððððÑÑÑÍÍÑÍÍÄÍÄÄÄÄÁÁÁÁÁhhccccccXbXXTUTTTT                                                                                                                                                           "ch„ÁÁÁÁÁÁÄÄÍÄÄÄÍÄÍÄÄÍÄÄÍÍÄÄÍÍÍÑÑÑÑÑÑÑÍïðððððððóðóðóóóóóóóóððððÑïðÑÑÑÑÍÍÍÄÍÄÄÄÄÁÁÁhhÁhchcccccXXXTXTT"T"                                                                                                                                               cÁ¹•¾ÁÁÄÄÄÍÄÍÄÍÄÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÑÍÑÑðÑððáÑïðïðððóðóðóóóóóóóððóðïðððÑÑÑÍÍÍÍÄÄÄÄÄÄÁÄÁÁhhhhccccXXXXXTXTT"M                                                                                                                                                                                c•hÁÂÁÄÄÍÄÍÍÍÄÍÍÍÍÍÑÑÍÑÑÍÑÍÑÑÑÍÑÑððÑÑÑïÑïðððóðóðóóððððóóóððóòðððÑÍÑÍÍÍÍÍÍÄÍÄÄÄÁÁÁÁhÁhhhhccccXXXXXXTTT                                                                                                                                                                    c„Á¹ÁÄÄÄÄÑÍÍÍÍÑÍÍÍÍÍÍÍÍÍÑÑÍÍÑÑÑÍÑÑÑðÑððððóððóóðóðóóóóóüüüóóóðððïáÑÑÑÑÍÍÑÍÍÍÄÄÄÄÁÁÄÁÁhhhhccccXXbXXTTTT"                                                                                                                                                                  chÁÁÁÁÄÄÍÑÍÍÍÍÍÑÑÑÑÍÑÍÍÑÍÑÑÑÑÑÑÑÑÑÑðÑðððððððóóðóóóóóúóóóüúóðóððððïÑÑÑÑÍÍÑÍÍÍÄÄÄÁÁÁÁhÁÁhhcdcccXXXXXUTTTT                                                                                                                                                                                  "chÁÄÁÄÄÄÄÍÍÑÍÍÑÑÑÑÑÑÑÑÑÑÍÑÑÑÑÍðÑðÑÑðïðóòððóóóðóóðóóóóóóóóüóóóðððððïÑðÑÑÍÍÍÄÄÄÄÄÄÄÁÁÁÁhhhhccccccXXXXTTTTT                                                                                                                                                       dÁÁÁÄÄÄÍÍÑÑÑÑðÑÑÍÑÑÑÑÑÑÑÑÑÑÑðÍÑÑðððððððððððððððóóóóóóóóüóóóóðóðòïððÑÑÑÍÍÍÍÍÍÄÄÄÁÄÄÁÁÁhhhchcccXbXXXXTTTT                                                                                                                                                           cÁ¾ÁÄÄÍÍÍÑÑÑÑððÑÑðÑÑðÍÑÑÑÍÑÑðÑÑðÑððððððððððóðóðóóóóóóóóóüóóðóððóðððÑÑÑÑÍÍÍÍÄÄÄÁÄÁÄÁÁÁhhhccccccXXXXXTXTT                                                                                                                                                                             "fÁÁÄÄÄÑÍÑððÑÑÑÑÑÑÑÑÑÑÍðÑÑÑÑÍðÑÑðððððóððóðóðóðóððóóúüóüóóüóóóóðððïððÑÑÑÑÍÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhhdccXXXXXXTTTTTTT                                                                                                                                                        dÁÁÄÄÍÍÍÍððÑðÑÑðÑðÑÑðÑÑðÑÑÑÑÑÑÑðÑððÑððóððððóóðóóóóóóóóóüúóóóóððððððÑÑÑÑÍÍÍÍÄÍÄÄÄÁÁÁÁÁÁhhhcccbbXcXXTTUTTT"T                                                                                                                                                     hÁÄÄÄÄÍÑÍðÑðÑðÑÑÑðÑÑðÑÑÑÑðÑÑÑÑððÑððÑðÑðóïðóðóðóüóóóóóóüþüüúðóòððóðÑðÑÍÍÍÍÍÍÄÄÍÄÄÄÄÁÁÁÁhhhcccccccXVXTTTT"T                                                                                                                                         "cÁÁÄÄÍÍÍÑÑðÑððÑÑÑðÑðððÑÑÑÑððÑðÑðÑÑðððððóïóóðòððúðóóóóóóóóóóóóóðððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhhÁchcccXXXXTXTTTT"TT                                                                                                                        "fÁÄÄÄÍÍÑÑÑðÑóÑÑÑððÑÑÑðÑÑÑÑÑðÑÑÑðÑÑððððððððóóðóóúóóóóóóóüóóüóóðóððððÑÑÑÍÍÍÍÍÄÍÄÄÄÁÄÁÁhhhhhhccccbXXXXXTTT"MTTT"TT                                                                                                                          "hÁÁÄÄÄÍÑðÑðððÑðððÑÑÑÍðÑðððÑÑðÑÑððððððóððòóóóðóðóóðóóóúüóóóüóððóððððÑÍÑÍÑÑÍÍÄÄÄÄÁÄÁÄÁÁÁhhcchccXXXXXTTTTT""M"TTTT                                                                                                                       hÄÄÄÄÍÍÑðÑðððÑðððÑððÑðÑÑÑÑÑÑðÑðÑóÑÑïððððððððóðóóóóóóóóóüóóóóóóðððÑðÑÑÑÑÑÍÑÄÍÄÄÄÄÁÄÁÁÁÁhhhhccccXXXXXXTT:T"                                                                                                                 "hÂÁÄÍÐÍÑÑððÑÑÑððÑðððÑððÑÍÑÑÑðÑðÑðÑðÑððóðððððððóðóüóóüüóóóóóðððïððÑðÑÑÍÑÍÍÍÍÄÍÄÄÄÄÄÁÁÁhhhccccccXXXXXXXTTTTT                                                                                                   gÁÄÄÈÐÍÑÑÑðððÑððððÑÑÑðÑÑÑÑðÑðÑÑððððáðóððóðóóóóóðóóóüóüüóüüóóóóòððÑðÑÑÑÍÍÍÍÄÍÄÄÄÁÁÁÁÁhhhchhccccXcXTVTTTTTTTTTTTT                                                                                                            !ThÄÂÄÄÍÑÑÑððððÑÑÑðÑÑÑðÑÑðÑðÑÍÑÑÑÑððððÑðððóðóððóóóóóóóóóüóüóóóðóðððÑðÑÑÑÑÍÍÍÍÍÄÄÄÄÁÄÁÁhhhhhcccccXbXXXTTTTT"TTTT                                                                                             TY_T "hÁÄÄÍÄÑÑÑÑðððÑÑÑðÑðÑÑÑÑðÑÑÑÑÑÑÑðððððïðððóóóóðððóóóóóóóüüüóóóððððððððÑÑÑÑÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhchcccbXXXXTTTTTTTTTTT                                                                                                      !chY!   "hÁÄÄÍÍÍÑÑðððððððïÑÑÑÑÑðÑÑÑÑÑÑÑðÑÑÑðððÑððóððððóðóóóóóóóüóóüüóóðóïððÑÑÍÑÑÍÍÍÍÄÄÄÄÄÄÁÄÁhhhhhcccccXXXXXTXT"T:                                                                                                 ZXY   hÁÄÄÄÍÍÑÑðÑðððáððÑÑðÑÑðÑðÑÑððÑðððÑððððïóðóðóðóðóóóóóóüóóóüúðóóóðððÑÑÑÍÍÍÍÍÍÄÍÄÄÁÄÁÁÁhhhhhhccccbXXXXTTTTTTTT                                                                                                                 !dÁÄÄÍÍÍÑðÑððððïÑðÑÑðÑÑÑÑðÑÑÑðÑÑðððÑðÑððððóóóóóóðóóóðóüóóóóóóððððïðððÑÑÑÍÍÍÄÍÄÄÁÄÁÁÁÁÁÁhhcchccbXbXXXTTT:TTTTTT                                                                                         "dÄÄÄÄÍÍÑÑððððïÑðððÑÑðÑÑÑÑðÑÑÑÑÑóÑðððÑòðððòóððóóóóóóóóüüóüüóóóðóðððÑÑÑÍÑÍÑÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhccccXXXVXXTTTTT                                                                                         "fÄÄÄÄÍÍÑÑÑðððÑÑððÑÑÑððÑÑÑÑÑðÑÑðððððáððððððóðóóóóóóóóóúóóüóóóððóððïáÑÑÑÍÍÑÍÍÍÄÄÄÄÁÄÄÁÁÁhhhccccbXbXXXTTTXT":TTT                                                                                         "hÁÄÄÍÍÍÑðððððçðÑÑÑÑÑðððÑÑÑÑðÑÑÑïáÑðïððððððóðóðððóóüóüóóóóóóóóòððáÑðÑÑÑÑÍÍÍÄÍÄÄÄÄÁÄÁÁhhhhcchcccXXXXTXTTTTT"MT                                                                                                      dÁÄÄÍÍÐÑïððÑðïÑðÑðÑÑðÑÑÑÑÑÑÑÑððÑðÑðððððóððóðóððóóóóúóóóüüóóóóðððïðïÑÑÑÑÑÍÍÍÍÄÄÄÁÄÄÁÁÁhhhhcccccXcXXTTXTTT"TT                                                                                                hÁÄÄÄÍÎÑÑðÑïððÑðððÑÑÑÍÑÑÑðÑÑÑðÑïïïÑïóððððððóðóóüóóóóóóüüüúóóóóðððððÑÑÑÍÍÍÄÍÍÍÄÄÄÄÁÁÁÁhhhhhccccXXXXXXTT"TT"TTTTTT                                                                                                      "dÁÄÄÍÍÐÑÑððñðÑÑðÑÑÑððÑððÑÑÑÑÑÑÑðÑðáïóðóððóóóðóðóðóóóóúüóóóóóóóððððððÑÑÍÑÍÍÍÄÍÄÁÄÄÁÁÁhhhhhchcccXXXXXTTUT:M"TTT:                                                                                                     hÁÄÄÍÍÑÑÑððððÑððÑÑððÑÑÑÑÑÑÑÑÑÑÑðÑÑïðððððððóðóóðóóóóüóóóóóóóóóðóðððÑðÑÍÍÍÍÍÍÄÄÄÄÄÄÁÁÁhÁhhhhcccccXXXXTTTTTT                                                                                        "hÁÄÄÄÍÎÑáïïïððððÑðððÑÑÑÑÑÑÑðÑððððÑðáððððððòððóðóóóðóüóüüüóóóóðóððððÑÑÑÍÍÑÍÍÄÄÄÄÄÁÁÄÁÁhhhhchcbbcXXXTXTTTTTTTTT                                                                                                           hÁÄÄÍÍÍÐïÑïðððáðïáÑðÑðÑÑÑðÑðÍððððÑïóððïóððóðóóóðóóóóüóóóüóóóððòðððÑÑÑÑÑÍÍÍÍÍÄÄÄÄÄÁÁÁÁhhhhhcccbcbXXXXTTTTTTTT                                                                                                         hÁÄÄÍÄÍÐðÑçðððïïïÑÑÑÑðÑÑÑðÑÑÑðÑððÑððóðððððóóóóóóóóðóóóóóüóðóððððððÑÑÑÑÑÍÍÍÍÄÄÄÄÄÁÁÁÁhÁhhcccgcXcXXXTXTTTTT"TT                                                                                              hÄÄÄÍÍÍÑÑïððïñÑÑðÑðÑÑóÑÑÑððÑððÑÑÑðÑðððóððóððððóóóóóóóüóüüúóóóóððððÑðÑÑÑÍÍÍÍÍÍÍÁÄÄÁÄÁhhhhhcccccXbXXXTTTTTT"TTT                                                                   dÁÄÄÍÍÍÎÐððïáðïÑðÑððÑðÑðÍðÑÑÑðÑðÑððïÑðóðððððóóóóóóóóóüóüüóóóóððóðÑÑÑÑÑÍÑÍÄÍÍÄÄÄÁÄÁÁÁhhhhdchbXcXXbXXTTTTTM"TT                                                                       dÁÄÄÄÍÐÑÑððÑÑðððÑÑÑðÑÑÑðÑÑÑÑÑððÑÑððóððððóðððóóðóóóüüóóóóóóóóóðóðððÑÑÑÍÑÍÍÍÍÍÍÍÄÄÁÁÁÁhhhhgchcccbXXXXXTTTTT:TTT                                                                hÁÄÄÍÍÑÑÑððððóÑÑÑððÑððÑðÑððÑÑÑÑðÑððððððóóóðóóðóóóóóóóóúóóüóóóóðððððÑÑÑÑÍÑÍÄÄÄÄÄÁÄÄÁÁÁhhhchccccXbXXXVTTTT:T"TTT                                                                "hÁÄÄÄÍÑÑÑÑððððÑðÑððÑÑðÑÑðÑÑÑÑÑÑðÑðððóÑððóóðóðððóóóóóóóóóúüóðóóððÑðððÑÑÑÍÍÍÄÍÄÄÄÄÄÄÁÁÁhhhhcdccbcXXXXXTTTT"T                                                                                 cÁÁÄÍÍÑÑÑÑððððððÑÑðÑÑÑðÑÑÑÑðÑïÑðÑððÑðððïððòóóóóóðóúóüüúóüóóðóóððððÑÑÑÑÍÍÍÑÍÍÄÄÄÄÁÄÁÁÁhÁhhhcccbXXXXTTTT:TTT                                                                   hÄÄÄÄÍÑÑÑÑððÑðÑððÑÑÑðÑÑÑÑÑÑÑÑÑððÑðððððððððóóðóóðóóóóóóóúóüóóóóðððððÑÑÑÍÍÍÍÍÍÄÄÄÄÄÁÁÁhhhhhhcccbX^XXXXTTTT"MTTT:T                       @Y!                                               "hÁÄÄÄÍÑÑïÑððÑðððÑðÑððÑÑÑÍÑÑÑÑÑððáïðððððððóðóðóóðóóóóóóóüóóóóóðòððððÑÑÑÑÍÍÍÄÄÍÄÄÄÄÁÁÁÁÁhhhchXcbXXXXXTTTT:TT                 !c‚X                                             "hÁÄÄÄÍÍÑððððÑÑðÑÑððÑÑÑÑðÑðÑÑÑðÑÑïçÑððïóððððóðóóóóóóóóóüüüóóðóðððððÑÑÑÑÍÍÍÍÍÍÄÄÄÄÄÁÁÁÁhhhchccccXXXXXTTTTTTTTTT"TT                      T_cB                                               hÁÂÄÄÍÍÑÑððððÑððÑððÑÑðÑÑÑÑÑÑÑððÑðÑïððððððððóðóóóóðúóóüüóüóóóóððððïÑÑÑÍÍÑÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhcccccbXXXTTXTTTTT                             @T!                                    "hÁÄÄÍÍÍÑÑððððÑðððÑÑðÑððÑÑÍðÑðððÑóÑðððððóðððóðóóóóóóóóóóóüóóóóóóðððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhhcccccXXXXTTTTTTTTTT                                                              cÁÄÄÄÍÑÑÑððÑðððððÑðÑÑÑÑððÑÑÑÑÑÑÑðÑðððóðóðóðóóððóóóóóóóóüóóóóððððððÑðÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁÁhhchccccXXXXXXTTTTTT:T                                                              "hÁÄÄÍÍÑÑÑððÑððððÑÑðÑÑÑÑðÑÑÑÑðÑÑððððÑððððóðóóóóðóóóóüóóóüóóðóóóðððððÑðÑÍÍÍÍÄÍÄÄÄÄÄÁÁÁÁhhhchccccbXXXXXTTTTTTT                                                                                    hÁÃÄÄÄÑÑÑÑðððÑÑðÑÑððÑÑðÑÑÑÑÑððÑððððððððóðððððððóóóóóóóóüóóóóóóððïáïðÑÑÑÑÍÍÄÍÄÄÁÄÄÁÁÁÁhhhhchcccXXXXVTTTTT"TTT                                                                     "hÁÄÄÍÄÑÑÑððððÑÑððÑÑðÑððÑÑÑÑÑðÑððÑðÑðÑððòððóðóóóðóóóóóóóüüóóóóóóððððÑÑÑÍÍÍÍÍÄÍÄÁÄÄÁÁÁÁhhhhhccccXXXTXXVTTTTTTT                                                                             dÁÁÄÍÍÑÑáððððÑðððÑÑðÑÑÑðÑðÑÑÑðÑððÑÑððïðòïðóóóóðððóóðúüüüüóóóóóðòïððÑÑÑÍÍÍÍÍÍÍÄÄÄÁÁÁÁÁhhhhchccXbXXXXTTTT"T:T                                                                           "hÄÄÄÄÍÑÑÑðÑððÑðÑððððÑÑÑÑÑðÑÑÑÑðÑðÑðððòðððóðóðóóóóóóóóóóóóóóðóððððïðÑÑÑÍÑÍÍÍÄÍÍÄÄÄÁÄÁÁÁhÁhhccbccXXXXXTTTTTT:TTT                                                                                 hÁÄÄÄÑÍÑððÑðððïÑððÑðÑðÑÑÑðÑÑÑðÑÑðððÑðððððóòóðóóóóóðüóóóóüóóóóðððððÑÑÑÑÑÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhchccbbXXXXTXTM"TTTT                                                                           hÁÁÄÍÍÑÑÑððïððððÑÑÑÑÑðÑÑÑÑðÑÑðÑðÑÑðððððóððóóóðóðóóóóüóóúüüóóóòðòðÑÑÑÑÑÍÍÍÄÍÄÄÄÄÄÄÁÁÁÁhhhhchccccXXXTTTT":TTTTT                                                                  hÁÄÄÍÍÍÑÑðððÑóððððÑðÑÑðÑÑÑÑÑðÑÑðÑððÑððððððóóðóóóóóóóóóüúóóóóðóóððððÑÑÑÑÑÍÍÍÍÄÄÄÄÄÁÁÁhhhhhccccbbXXXXTXTTTTT                                                                         hÁÄÄÍÄÍÑððððÑðððóÑÑÑÑÑÑðÑÑÑÑððÑðÑðððÑððððððóððóúðóóðóüóüóóóóðóððððÑÑÑÑÑÑÍÄÍÍÍÄÄÄÄÁÁÁÁÁhhhccccXXXXXTVXTTTTT                                                                                      hÁÄÄÍÍÍÍððÑðÑðÑÑðÑÑðÑðÑððÑÑÑÑÑððÑóóðóðððóóððòóóóóóüóüúóóóóóóðóðïðððÑÑÑÍÍÍÍÍÄÄÄÄÄÁÁÄÁÁÁÁhhcccccccXXXTTTTTTTT                                                                                 "gÁÁÄÄÍÍÑÑðÑðððÑÑÑðÑðÑðÑÑÑÑÑÑÑðÑÑÑððÑðððóðóóðòóóðóóúóüüóüóóúóóðóðððÑÑÑÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhchccccbXXXVTTTTTTTT                                                                                                                    "fÄÁÄÄÍÍÑÑðððððððððððÑÑðÑÑðÑÑÑðððÑÑððððóðððóóððóóóóüúóóóüüóóóóóððððÑðÑÍÍÍÍÍÄÍÄÄÄÄÁÁÁhhhhhchhccXXXXXTXTTTT:TT                         CorsixTH-0.61/CorsixTH/Bitmap/mainmenu1080.dat000066400000000000000000077220001321660673500207170ustar00rootroot00000000000000                                                                                         "fÄÁÄÄÍÍÑÑðððððððððððÑÑðÑÑðÑÑÑðððÑÑððððóðððóóððóóóóüúóóóüüóóóóóððððÑðÑÍÍÍÍÍÄÍÄÄÄÄÁÁÁhhhhhchhccXXXXXTXTTTT:TT                                                                                    "gÁÁÄÄÍÍÑÑðÑðððÑÑÑðÑðÑðÑÑÑÑÑÑÑðÑÑÑððÑðððóðóóðòóóðóóúóüüóüóóúóóðóðððÑÑÑÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhchccccbXXXVTTTTTTTT                                                                                                 hÁÄÄÍÍÍÍððÑðÑðÑÑðÑÑðÑðÑððÑÑÑÑÑððÑóóðóðððóóððòóóóóóüóüúóóóóóóðóðïðððÑÑÑÍÍÍÍÍÄÄÄÄÄÁÁÄÁÁÁÁhhcccccccXXXTTTTTTTT                                                                                 hÁÄÄÍÄÍÑððððÑðððóÑÑÑÑÑÑðÑÑÑÑððÑðÑðððÑððððððóððóúðóóðóüóüóóóóðóððððÑÑÑÑÑÑÍÄÍÍÍÄÄÄÄÁÁÁÁÁhhhccccXXXXXTVXTTTTT                                                                    hÁÄÄÍÍÍÑÑðððÑóððððÑðÑÑðÑÑÑÑÑðÑÑðÑððÑððððððóóðóóóóóóóóóüúóóóóðóóððððÑÑÑÑÑÍÍÍÍÄÄÄÄÄÁÁÁhhhhhccccbbXXXXTXTTTTT                                                                      hÁÁÄÍÍÑÑÑððïððððÑÑÑÑÑðÑÑÑÑðÑÑðÑðÑÑðððððóððóóóðóðóóóóüóóúüüóóóòðòðÑÑÑÑÑÍÍÍÄÍÄÄÄÄÄÄÁÁÁÁhhhhchccccXXXTTTT":TTTTT                                                                       hÁÄÄÄÑÍÑððÑðððïÑððÑðÑðÑÑÑðÑÑÑðÑÑðððÑðððððóòóðóóóóóðüóóóóüóóóóðððððÑÑÑÑÑÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhchccbbXXXXTXTM"TTTT                                                                            "hÄÄÄÄÍÑÑÑðÑððÑðÑððððÑÑÑÑÑðÑÑÑÑðÑðÑðððòðððóðóðóóóóóóóóóóóóóóðóððððïðÑÑÑÍÑÍÍÍÄÍÍÄÄÄÁÄÁÁÁhÁhhccbccXXXXXTTTTTT:TTT                                                                                 dÁÁÄÍÍÑÑáððððÑðððÑÑðÑÑÑðÑðÑÑÑðÑððÑÑððïðòïðóóóóðððóóðúüüüüóóóóóðòïððÑÑÑÍÍÍÍÍÍÍÄÄÄÁÁÁÁÁhhhhchccXbXXXXTTTT"T:T                                                                          "hÁÄÄÍÄÑÑÑððððÑÑððÑÑðÑððÑÑÑÑÑðÑððÑðÑðÑððòððóðóóóðóóóóóóóüüóóóóóóððððÑÑÑÍÍÍÍÍÄÍÄÁÄÄÁÁÁÁhhhhhccccXXXTXXVTTTTTTT                                                                                  hÁÃÄÄÄÑÑÑÑðððÑÑðÑÑððÑÑðÑÑÑÑÑððÑððððððððóðððððððóóóóóóóóüóóóóóóððïáïðÑÑÑÑÍÍÄÍÄÄÁÄÄÁÁÁÁhhhhchcccXXXXVTTTTT"TTT                                                                   "hÁÄÄÍÍÑÑÑððÑððððÑÑðÑÑÑÑðÑÑÑÑðÑÑððððÑððððóðóóóóðóóóóüóóóüóóðóóóðððððÑðÑÍÍÍÍÄÍÄÄÄÄÄÁÁÁÁhhhchccccbXXXXXTTTTTTT                                                                         cÁÄÄÄÍÑÑÑððÑðððððÑðÑÑÑÑððÑÑÑÑÑÑÑðÑðððóðóðóðóóððóóóóóóóóüóóóóððððððÑðÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁÁhhchccccXXXXXXTTTTTT:T                  @T!                                    "hÁÄÄÍÍÍÑÑððððÑðððÑÑðÑððÑÑÍðÑðððÑóÑðððððóðððóðóóóóóóóóóóóüóóóóóóðððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhhcccccXXXXTTTTTTTTTT                     T_cB                                               hÁÂÄÄÍÍÑÑððððÑððÑððÑÑðÑÑÑÑÑÑÑððÑðÑïððððððððóðóóóóðúóóüüóüóóóóððððïÑÑÑÍÍÑÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhcccccbXXXTTXTTTTT                     !c‚X                                             "hÁÄÄÄÍÍÑððððÑÑðÑÑððÑÑÑÑðÑðÑÑÑðÑÑïçÑððïóððððóðóóóóóóóóóüüüóóðóðððððÑÑÑÑÍÍÍÍÍÍÄÄÄÄÄÁÁÁÁhhhchccccXXXXXTTTTTTTTTT"TT                    @Y!                                               "hÁÄÄÄÍÑÑïÑððÑðððÑðÑððÑÑÑÍÑÑÑÑÑððáïðððððððóðóðóóðóóóóóóóüóóóóóðòððððÑÑÑÑÍÍÍÄÄÍÄÄÄÄÁÁÁÁÁhhhchXcbXXXXXTTTT:TT                                                                 hÄÄÄÄÍÑÑÑÑððÑðÑððÑÑÑðÑÑÑÑÑÑÑÑÑððÑðððððððððóóðóóðóóóóóóóúóüóóóóðððððÑÑÑÍÍÍÍÍÍÄÄÄÄÄÁÁÁhhhhhhcccbX^XXXXTTTT"MTTT:T                                                                            cÁÁÄÍÍÑÑÑÑððððððÑÑðÑÑÑðÑÑÑÑðÑïÑðÑððÑðððïððòóóóóóðóúóüüúóüóóðóóððððÑÑÑÑÍÍÍÑÍÍÄÄÄÄÁÄÁÁÁhÁhhhcccbXXXXTTTT:TTT                                                                 "hÁÄÄÄÍÑÑÑÑððððÑðÑððÑÑðÑÑðÑÑÑÑÑÑðÑðððóÑððóóðóðððóóóóóóóóóúüóðóóððÑðððÑÑÑÍÍÍÄÍÄÄÄÄÄÄÁÁÁhhhhcdccbcXXXXXTTTT"T                                                                  hÁÄÄÍÍÑÑÑððððóÑÑÑððÑððÑðÑððÑÑÑÑðÑððððððóóóðóóðóóóóóóóóúóóüóóóóðððððÑÑÑÑÍÑÍÄÄÄÄÄÁÄÄÁÁÁhhhchccccXbXXXVTTTT:T"TTT                                                                            dÁÄÄÄÍÐÑÑððÑÑðððÑÑÑðÑÑÑðÑÑÑÑÑððÑÑððóððððóðððóóðóóóüüóóóóóóóóóðóðððÑÑÑÍÑÍÍÍÍÍÍÍÄÄÁÁÁÁhhhhgchcccbXXXXXTTTTT:TTT                                                                 dÁÄÄÍÍÍÎÐððïáðïÑðÑððÑðÑðÍðÑÑÑðÑðÑððïÑðóðððððóóóóóóóóóüóüüóóóóððóðÑÑÑÑÑÍÑÍÄÍÍÄÄÄÁÄÁÁÁhhhhdchbXcXXbXXTTTTTM"TT                                                                        hÄÄÄÍÍÍÑÑïððïñÑÑðÑðÑÑóÑÑÑððÑððÑÑÑðÑðððóððóððððóóóóóóóüóüüúóóóóððððÑðÑÑÑÍÍÍÍÍÍÍÁÄÄÁÄÁhhhhhcccccXbXXXTTTTTT"TTT                                                                                                     hÁÄÄÍÄÍÐðÑçðððïïïÑÑÑÑðÑÑÑðÑÑÑðÑððÑððóðððððóóóóóóóóðóóóóóüóðóððððððÑÑÑÑÑÍÍÍÍÄÄÄÄÄÁÁÁÁhÁhhcccgcXcXXXTXTTTTT"TT                                                                                                                       hÁÄÄÍÍÍÐïÑïðððáðïáÑðÑðÑÑÑðÑðÍððððÑïóððïóððóðóóóðóóóóüóóóüóóóððòðððÑÑÑÑÑÍÍÍÍÍÄÄÄÄÄÁÁÁÁhhhhhcccbcbXXXXTTTTTTTT                                                                                             "hÁÄÄÄÍÎÑáïïïððððÑðððÑÑÑÑÑÑÑðÑððððÑðáððððððòððóðóóóðóüóüüüóóóóðóððððÑÑÑÍÍÑÍÍÄÄÄÄÄÁÁÄÁÁhhhhchcbbcXXXTXTTTTTTTTT                                                                                                     hÁÄÄÍÍÑÑÑððððÑððÑÑððÑÑÑÑÑÑÑÑÑÑÑðÑÑïðððððððóðóóðóóóóüóóóóóóóóóðóðððÑðÑÍÍÍÍÍÍÄÄÄÄÄÄÁÁÁhÁhhhhcccccXXXXTTTTTT                                                                                           "dÁÄÄÍÍÐÑÑððñðÑÑðÑÑÑððÑððÑÑÑÑÑÑÑðÑðáïóðóððóóóðóðóðóóóóúüóóóóóóóððððððÑÑÍÑÍÍÍÄÍÄÁÄÄÁÁÁhhhhhchcccXXXXXTTUT:M"TTT:                                                                                         hÁÄÄÄÍÎÑÑðÑïððÑðððÑÑÑÍÑÑÑðÑÑÑðÑïïïÑïóððððððóðóóüóóóóóóüüüúóóóóðððððÑÑÑÍÍÍÄÍÍÍÄÄÄÄÁÁÁÁhhhhhccccXXXXXXTT"TT"TTTTTT                                                                                                                dÁÄÄÍÍÐÑïððÑðïÑðÑðÑÑðÑÑÑÑÑÑÑÑððÑðÑðððððóððóðóððóóóóúóóóüüóóóóðððïðïÑÑÑÑÑÍÍÍÍÄÄÄÁÄÄÁÁÁhhhhcccccXcXXTTXTTT"TT                                                                                              "hÁÄÄÍÍÍÑðððððçðÑÑÑÑÑðððÑÑÑÑðÑÑÑïáÑðïððððððóðóðððóóüóüóóóóóóóóòððáÑðÑÑÑÑÍÍÍÄÍÄÄÄÄÁÄÁÁhhhhcchcccXXXXTXTTTTT"MT                                                                                       "fÄÄÄÄÍÍÑÑÑðððÑÑððÑÑÑððÑÑÑÑÑðÑÑðððððáððððððóðóóóóóóóóóúóóüóóóððóððïáÑÑÑÍÍÑÍÍÍÄÄÄÄÁÄÄÁÁÁhhhccccbXbXXXTTTXT":TTT                                                                                      "dÄÄÄÄÍÍÑÑððððïÑðððÑÑðÑÑÑÑðÑÑÑÑÑóÑðððÑòðððòóððóóóóóóóóüüóüüóóóðóðððÑÑÑÍÑÍÑÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhccccXXXVXXTTTTT                                                                                                                 !dÁÄÄÍÍÍÑðÑððððïÑðÑÑðÑÑÑÑðÑÑÑðÑÑðððÑðÑððððóóóóóóðóóóðóüóóóóóóððððïðððÑÑÑÍÍÍÄÍÄÄÁÄÁÁÁÁÁÁhhcchccbXbXXXTTT:TTTTTT                                                                                                ZXY   hÁÄÄÄÍÍÑÑðÑðððáððÑÑðÑÑðÑðÑÑððÑðððÑððððïóðóðóðóðóóóóóóüóóóüúðóóóðððÑÑÑÍÍÍÍÍÍÄÍÄÄÁÄÁÁÁhhhhhhccccbXXXXTTTTTTTT                                                                                                 !chY!   "hÁÄÄÍÍÍÑÑðððððððïÑÑÑÑÑðÑÑÑÑÑÑÑðÑÑÑðððÑððóððððóðóóóóóóóüóóüüóóðóïððÑÑÍÑÑÍÍÍÍÄÄÄÄÄÄÁÄÁhhhhhcccccXXXXXTXT"T:                                                                                              TY_T "hÁÄÄÍÄÑÑÑÑðððÑÑÑðÑðÑÑÑÑðÑÑÑÑÑÑÑðððððïðððóóóóðððóóóóóóóüüüóóóððððððððÑÑÑÑÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhchcccbXXXXTTTTTTTTTTT                                                                                                             !ThÄÂÄÄÍÑÑÑððððÑÑÑðÑÑÑðÑÑðÑðÑÍÑÑÑÑððððÑðððóðóððóóóóóóóóóüóüóóóðóðððÑðÑÑÑÑÍÍÍÍÍÄÄÄÄÁÄÁÁhhhhhcccccXbXXXTTTTT"TTTT                                                                                                      gÁÄÄÈÐÍÑÑÑðððÑððððÑÑÑðÑÑÑÑðÑðÑÑððððáðóððóðóóóóóðóóóüóüüóüüóóóóòððÑðÑÑÑÍÍÍÍÄÍÄÄÄÁÁÁÁÁhhhchhccccXcXTVTTTTTTTTTTTT                                                                                                                      "hÂÁÄÍÐÍÑÑððÑÑÑððÑðððÑððÑÍÑÑÑðÑðÑðÑðÑððóðððððððóðóüóóüüóóóóóðððïððÑðÑÑÍÑÍÍÍÍÄÍÄÄÄÄÄÁÁÁhhhccccccXXXXXXXTTTTT                                                                                                                 hÄÄÄÄÍÍÑðÑðððÑðððÑððÑðÑÑÑÑÑÑðÑðÑóÑÑïððððððððóðóóóóóóóóóüóóóóóóðððÑðÑÑÑÑÑÍÑÄÍÄÄÄÄÁÄÁÁÁÁhhhhccccXXXXXXTT:T"                                                                                                                  "hÁÁÄÄÄÍÑðÑðððÑðððÑÑÑÍðÑðððÑÑðÑÑððððððóððòóóóðóðóóðóóóúüóóóüóððóððððÑÍÑÍÑÑÍÍÄÄÄÄÁÄÁÄÁÁÁhhcchccXXXXXTTTTT""M"TTTT                                                                                                                         "fÁÄÄÄÍÍÑÑÑðÑóÑÑÑððÑÑÑðÑÑÑÑÑðÑÑÑðÑÑððððððððóóðóóúóóóóóóóüóóüóóðóððððÑÑÑÍÍÍÍÍÄÍÄÄÄÁÄÁÁhhhhhhccccbXXXXXTTT"MTTT"TT                                                                                                                                    "cÁÁÄÄÍÍÍÑÑðÑððÑÑÑðÑðððÑÑÑÑððÑðÑðÑÑðððððóïóóðòððúðóóóóóóóóóóóóóðððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhhÁchcccXXXXTXTTTT"TT                                                                                                                                                hÁÄÄÄÄÍÑÍðÑðÑðÑÑÑðÑÑðÑÑÑÑðÑÑÑÑððÑððÑðÑðóïðóðóðóüóóóóóóüþüüúðóòððóðÑðÑÍÍÍÍÍÍÄÄÍÄÄÄÄÁÁÁÁhhhcccccccXVXTTTT"T                                                                                                                                            dÁÁÄÄÍÍÍÍððÑðÑÑðÑðÑÑðÑÑðÑÑÑÑÑÑÑðÑððÑððóððððóóðóóóóóóóóóüúóóóóððððððÑÑÑÑÍÍÍÍÄÍÄÄÄÁÁÁÁÁÁhhhcccbbXcXXTTUTTT"T                                                                                                                                                                          "fÁÁÄÄÄÑÍÑððÑÑÑÑÑÑÑÑÑÑÍðÑÑÑÑÍðÑÑðððððóððóðóðóðóððóóúüóüóóüóóóóðððïððÑÑÑÑÍÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhhdccXXXXXXTTTTTTT                                                                                                                                                                   cÁ¾ÁÄÄÍÍÍÑÑÑÑððÑÑðÑÑðÍÑÑÑÍÑÑðÑÑðÑððððððððððóðóðóóóóóóóóóüóóðóððóðððÑÑÑÑÍÍÍÍÄÄÄÁÄÁÄÁÁÁhhhccccccXXXXXTXTT                                                                                                                                                       dÁÁÁÄÄÄÍÍÑÑÑÑðÑÑÍÑÑÑÑÑÑÑÑÑÑÑðÍÑÑðððððððððððððððóóóóóóóóüóóóóðóðòïððÑÑÑÍÍÍÍÍÍÄÄÄÁÄÄÁÁÁhhhchcccXbXXXXTTTT                                                                                                                                                                            "chÁÄÁÄÄÄÄÍÍÑÍÍÑÑÑÑÑÑÑÑÑÑÍÑÑÑÑÍðÑðÑÑðïðóòððóóóðóóðóóóóóóóóüóóóðððððïÑðÑÑÍÍÍÄÄÄÄÄÄÄÁÁÁÁhhhhccccccXXXXTTTTT                                                                                                                                                              chÁÁÁÁÄÄÍÑÍÍÍÍÍÑÑÑÑÍÑÍÍÑÍÑÑÑÑÑÑÑÑÑÑðÑðððððððóóðóóóóóúóóóüúóðóððððïÑÑÑÑÍÍÑÍÍÍÄÄÄÁÁÁÁhÁÁhhcdcccXXXXXUTTTT                                                                                                                                                                         c„Á¹ÁÄÄÄÄÑÍÍÍÍÑÍÍÍÍÍÍÍÍÍÑÑÍÍÑÑÑÍÑÑÑðÑððððóððóóðóðóóóóóüüüóóóðððïáÑÑÑÑÍÍÑÍÍÍÄÄÄÄÁÁÄÁÁhhhhccccXXbXXTTTT"                                                                                                                                                                           c•hÁÂÁÄÄÍÄÍÍÍÄÍÍÍÍÍÑÑÍÑÑÍÑÍÑÑÑÍÑÑððÑÑÑïÑïðððóðóðóóððððóóóððóòðððÑÍÑÍÍÍÍÍÍÄÍÄÄÄÁÁÁÁhÁhhhhccccXXXXXXTTT                                                                                                                                                    cÁ¹•¾ÁÁÄÄÄÍÄÍÄÍÄÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÑÍÑÑðÑððáÑïðïðððóðóðóóóóóóóððóðïðððÑÑÑÍÍÍÍÄÄÄÄÄÄÁÄÁÁhhhhccccXXXXXTXTT"M                                                                                                                                                               "ch„ÁÁÁÁÁÁÄÄÍÄÄÄÍÄÍÄÄÍÄÄÍÍÄÄÍÍÍÑÑÑÑÑÑÑÍïðððððððóðóðóóóóóóóóððððÑïðÑÑÑÑÍÍÍÄÍÄÄÄÄÁÁÁhhÁhchcccccXXXTXTT"T"                                                                                                                                                       chhhhÁÁÁÄÍÄÄÄÍÄÄÄÄÍÄÍÄÍÄÍÍÍÄÄÍÍÑÑÍÑÍÑÑÎïÑÑïðÑðððððóïðóðóóððóððððÑÑÑÍÍÑÍÍÄÍÄÄÄÄÁÁÁÁÁhhccccccXbXXTUTTTT                                                                                                                                                           ccghhÁ¹ÁÄÄÄÄÄÄÄÄÄÄÄÄÍÄÄÄÍÍÄÍÄÍÄÍÍÑÑÍÍÑÍÑÑÑÑðÑððÑïóððððóïóòððïÑïÑÑÑÍÍÍÍÍÍÍÄÄÄÁÁÁÁÁÁhhhccccccbXXXXTT"M                                                                                                                                                                         chhhh••ÄÃÁÄÄÁÄÄÍÍÄÄÄÄÄÍÄÄÄÄÄÄÄÑÄÄÍÍÍÍÍÑÑÍÑÐÑïÑÑððÑððóðóðððïððððÑÍÍÍÍÍÄÄÄÄÄÁÄÁÄÁÁÁhhhhhcccXXXXXXTTTTT"T                                                                                                                                                                                       ^hhhhh¾ÁÄÄÁÄÄÄÄÄÄÁÁÄÄÄÄÄÁÄÄÄÄÍÄÄÍÄÍÍÍÍÑÑÍÑÑÎÑÑÑðÑïðÑððððððÑððïÑÑÑÍÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhhhcccccXXXXXXTTTT                                                                                                                                                                                                                    bhhhhhhÁÁÄÁÄÄÄÁÄÁÄÄÄÄÁÁÄÁÍÁÁÄÍÄÍÍÄÄÍÍÍÍÍÍÑÑÍÑÑÑðÑÑÐÑÑÑóðððïÑðÑÍÍÑÑÄÍÍÄÄÄÄÄÁÄÁÁhhhhhcccccXXcXTTXXTTT""                                                                                                                                                                                     chhhhhhÁÁÄÄÄÄÁÄÄÄÁÁÁÄÁÄÄÄÄÄÄÄÁÄÄÄÄÍÍÄÄÍÍÍÍÍÍÑÑÑÑÑáÑÑÑðÑÑÑïïÑÎÑÍÍÍÍÍÍÄÄÄÄÁÄÄÁÁÁÁhhhccccccXXXXXTTTTTT                                                                                                                                                                                                               cdhhhhÁÁÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÁÍÄÄÍÄÍÍÍÄÍÑÍÍÍÑÍÑÑðÑÑÑÑÑïáÑÑÐÍÑÍÍÍÍÄÄÄÄÄÁÄÁÁÁÁhhhchcccXcXXXXXXTTTTT                                                                                                                                                                                                                     chhhÁÁÁÁÄÄÁÁÁÁÁÁÄÄÄÁÄÄÍÁÄÁÄÄÄÄÍÁÍÍÄÍÄÄÍÍÍÍÍÍÍÍÑÑÑÑÑÑÑÑðïðïÑÑÍÍÍÍÍÍÍÄÄÍÄÄÄÄÁÁÁhÁÁhhhhhcbccXXXXTXTTTTT"                                                                                                                                                                                                                                                   "chhhhÁÁÄÄÄÄÄÍÁÍÄÁÁÄÄÄÁÄÁÄÄÄÄÄÄÄÄÄÍÄÄÍÍÄÍÍÍÑÍÍÍÍÍÑÑÑÑÑÑðÑÑÑðÑÑÐÍÍÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhcccccbccXXXTTTX:T"                                                                                                                                                                                                                                          "chhhhÁÁÁÄÍÍÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÍÍÄÄÍÄÍÑÍÑÍÍÍÍÑÑÍÑçðÑÑÑÑÑðÑÍÑÍÑÍÍÍÍÍÄÁÄÄÄÁÁÁÁhhhhcccccccbXXVXTTT"M                                                                                                                                                                                                                                            dÁÁÁÁÁÄÄÄÄÄÄÄÍÍÍÍÍÍÄÄÄÄÍÄÄÄÄÍÄÍÍÄÄÍÍÍÍÍÍÍÍÍÍÑÑÑÐÑðÑÑÐðððïÑÑÑáÑÑÍÍÈÄÍÄÄÄÄÁÄÄÁÁhhÁhhhhccccXXXXXXXTTTTTT                                                                                                                                                                                                                                                   chÁÁÁÁÁÄÄÍÄÍÄÍÄÍÄÄÄÄÄÍÄÄÄÄÄÄÄÍÄÍÄÍÍÍÄÍÍÍÑÍÍÑÑÑÍÑÑÑÑÑÑÑðáððÑïÑÑÍÐÐÐÄÍÍÄÄÄÄÄÁÄÁÁÁhhhhhcccbccXXXXTXTXTT"                                                                                                                                                                                                                                                                              "chhÁÄÄÍÍÍÍÄÍÍÄÍÍÄÍÄÍÍÍÍÍÄÍÄÄÍÄÍÍÑÑÍÑÍÍÑÑÍÑÑÑÑÍÑÑÑÑÑÑÑÑðÑÑðÑððÑÍÑÍÍÍÍÍÍÍÄÄÁÁÁÁÁhÁhhhhhhhcccccXXXXTTTTTT                                                                                                                                                                                                                                                  ;;@Y]Zxzzzzzzzzzzxzzzz‚zzzz‚zzzzzzz‚zzz‚zzx{‚zzz‚zzzzz‚zx‚zxxzzzzzz‚xzzzzzxzxzz‚xzzzzzz‚zxzzzz‚zzz‚z‚zz‚z‚x‚xzzzzz‚x‚‚zzzzz‚zzzzzzzz‚zzzx‚zz‚zzzzzxzx‚{zxzzzxzxzzxz‚zzzzxzzzxxzzzzzzzzzzzzzz‚z‚xzzzzzzzzxzxxzzzz‚xzzxz{zzzzzxzzzz‚‚xzzzzzz‚xzzzzzzzzxz‚zxxzzxzzzzzxz‚zzzzƒÆÇÆÇÆÊÌÌ×ÌÌÌ×ÌÌÌÌÌÊÌÌÌÌÌÌÌÌ×ÌÊÌÌÌÌÌÌÙ×ÌÌ×ßÌ×ßÙÌßÙßßßßßßßßßÌßÙß××ÌÌÌÌÌÊÌÌÌÊÌÊÆÊÆÆÆÆ›Æ–››››–›––––––”–‚”‚‚‚ƒ‚ƒ“‚ƒƒƒ‚ƒ‚”‚ƒƒ‚‚ƒ‚ƒzzzzzzxzzzzzzzzzxzxz‚z‚zx‚xzzzzzxzzzz‚z‚zxzzxz‚zzzzzzzzzzzzzzzzzzxzzzxzzzzz‚{zzzzzzzzzzzzzzzzxzzzzzzzzz‚zzzzzzzzzzzzzxzzzz‚zx{‚zzzz‚zzzxxxzzz‚zxzxxzzzzzxzzzzzzzzzzzxzz‚zzzzzxz‚xzzzz‚xzz‚x{zz‚{‚z‚‚zzz‚xxxzzzzzzzzzzzzzzz{zzzxzzzz‚x‚‚zzxzzzzx‚zzzzzzzzzzz‚zzzzz‚zzzzxxZYY;;                                                                                                                                                                                                                            #Yx”žÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓ××ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ××Ó×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÕ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ××××ǘzY;                                                                                                                                                                                                        _{›ÊÓÓÓÓÓÓÓ×ÙÙßàßæèèèñèñèñèñèñèññèñèñèññññññññññññññññññññññññññññññññññññòñññññññòññòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòõòõòòòòõòõòòõòõòõòõòõòõòõòõòõòõõõõõòõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõ÷õõõ÷õõõõõõõõõõ÷õõõõõ÷õõ÷õõõ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷÷õ÷õ÷÷õ÷÷÷÷÷õ÷÷÷õ÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úùú÷÷úú÷÷÷÷÷ú÷÷÷ú÷úú÷ú÷ú÷÷úúú÷û÷÷÷÷û÷úúúúúûúúúúú÷ûúúúúûúúûúûúúúúúúúûú÷úúø÷úúú÷úúúú÷ú÷û÷÷ú÷÷÷÷÷ø÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷÷÷÷õ÷õ÷õ÷÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õõ÷õõ÷õõõ÷õõõõõõõõ÷õõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõòõòõòõòõñõõñõòôõñõñõñõñõñõòéòòôñõñôñôñôññôñôñôñôñôññëñôèõèôñôèñèôñèôèñèñèñèñèèèèèàààÙÙÙ×ÓÓÓÓÓÓÓžƒ];                                                                                                                                                                                                Z”ÓÓÓÓÓÓ×àæèòóóúóú÷÷÷÷ó÷÷÷üóúúúúúúúúúúúúúü÷úúúúúúúúúúúúúúúúúúúúúúúúúúúüúüúüúüúúüúüüüüúüúüúúúüúúüúúúúüúüúüúúüúüüúüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüþüþüþüþþüþüþüþþþþþþþþþþþþþÿüÿüÿüÿüÿüÿýÿüÿþþÿþþÿýÿþÿþÿýÿÿýÿÿÿýÿýÿýÿýÿþÿþÿÿÿýÿÿÿþÿÿÿÿýÿÿÿÿýÿÿÿþÿþÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿþÿþÿþÿÿýÿÿýÿÿÿýÿþÿþÿþÿþþþÿýÿýÿýÿýÿüÿüÿüÿüÿüþýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüýüýüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüúüüúüúüúüúúüüúüúüüúüúüúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷÷÷ú÷÷÷÷õèèàÙÓÓÓÓÓÓ›_;                                                                                                                                                                                   Z”ÇÓÓÓÓÙèñò÷óóóóó÷úóúóóúóúóüóúóúúó÷óóúóúóúúóúóúüóúúúúúúúúúúúúúúúüúüúüúüúüúúüúüúüúüüúüúúüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüþüþüþþþþþþþþþýþþþþþþüþþþþþüþþþþþþþþþüþþüþþþþüþüþüþüþüþýþüÿüþþþþþþþüÿüþþþüÿüþþüÿüÿüÿýÿüÿýÿüÿüÿýÿüÿýÿþýýÿýÿýýÿþÿýÿþÿÿýÿþÿÿþÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿÿþÿÿþþþþþþþÿþÿþÿþþþþþþÿþýÿýÿþþýÿýÿýÿýÿþþþþýþþýþþýýýþýÿýþýþüÿþþýýýýýýýýýýýýýýýýýþýþþþþüÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüüüüüüüüüüüüüüüüüüüúüüüüüüüüüüüüüýúüúüúúüúýúüüüüúýúýúýúýúúûúúüúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷úú÷úú÷÷÷ú÷÷÷÷÷÷÷÷õñèà×ÓÓÓÓ˜_;                                                                                                                                                                                                      ‚žÓ×Ó×Ùèñóóóóó÷óúóú÷úóúóúúóúóúóúóúóúúúüúúúóúúóúüúúóúúóúúóüóüóüóüúúúúúúúúúúúúüúüúúüúüúúüúüüúüúüüüüúüüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüþüüþüþüþüüþüüüüüüþüþüþüýýýýþþüþýþüþþüþþþüþþþþþþþþþþþþþþÿüÿüÿþþÿþþþþþþþþþþÿüÿþþþÿüÿþÿþÿüÿþÿþþÿüÿüÿÿýÿüÿþÿþÿþÿÿÿÿýÿÿÿÿþÿÿÿþÿþÿÿþÿþÿÿþÿþÿÿÿþÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿþÿÿÿÿÿÿÿþÿþÿþÿÿÿÿÿþÿþÿþÿýÿþÿþÿýÿýÿýÿþÿþÿÿþÿþÿþÿþÿýþþþÿþÿýþþþÿýÿýÿýÿýÿýÿýþþþýýþýþýþþýýýýþýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüüüüýüýýýýýýýýýýýüüüüüüüüüüýúýúüúýúýúýúýúüúýúýüúýúüúúúúúúúúúúúúúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úúú÷÷ú÷÷÷ú÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷òèÚ×ÓÓÓÓƒ@                                                                                                                                                                                          ZÓÓ×Ùæèó÷ó÷÷÷÷úóú÷ó÷óúóúóúóóúóúóúóúóúóóóóóúúúúúúóúóúüóüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúüúúúúúúúüüúüüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüþüüüþüüüüþüüþüüþüþüþþþþþüþýýýýþþüþüüþþþýþþýþþüþþþþüþþþþþþþþþþþþüþþþüþþþþþþþþþþþþþþþþÿþþüÿþüÿüÿüÿþüÿþþÿþÿüÿüÿÿüÿüÿüÿýüÿþÿþýþþÿþýÿþÿþÿþÿÿÿþÿÿþÿÿþÿÿþÿþÿÿþÿþÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿþÿþÿÿÿþÿÿÿÿÿþÿþÿþÿþÿþÿþÿþþþþÿþÿþÿþÿþÿþýÿýÿýÿþþþþþþýþþþþþþýýÿýÿþþþþþþþþþýþýþýýýýýýýþþýýþþýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýýýýýýýýýüýüüüüüüüüüüüúýüýüýúýüûüüüýúýúýúýúüúýúüüúüúýúúýúüüýúýúýúüûúýúúúûúüûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷÷÷úú÷úú÷÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ñèÙÓÓÓÇx!                                                                                                                                                                                                                   Y˜ÓÓ×Ùèòóó÷÷ó÷óóúóó÷óó÷úó÷úóúóúúóúóúúúúúúúúúüóúúóúóúúúúúóúúóúúúúúóüóüóúúúúúúúúúúüúúúúúüúúüúüúüúúúúúüúüúüüüúúüúúúüúüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüþüüüüþýýüþüüþüþüþüýüüüþüþüþýýüþýþþþþüþýþüþþþþþþþþþþýþþþþþþþþþþþþþþÿþþþþþþþþþþþþþÿþþþþÿþþÿþÿüÿþþÿþþþÿþÿþÿÿüÿüÿÿþÿÿþÿÿüÿþÿÿÿþÿÿÿÿýÿÿÿþÿüÿÿþÿÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿÿþÿþÿþÿþÿþþÿþÿþþÿýÿþÿþÿþÿþÿþÿþÿþÿýþýþþþþþþþþþþþþþþþþþþþþþýþþýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüüüüüüüüüüüýüýüýüýüýüýúýüüýúýúýúýüüüúüüüüüüúýúýúüúûüúûúüúúýúúúúúúúûúúúúúúûüúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷úúú÷÷ú÷÷÷ú÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÚ×ÓÓ]                                                                                                                                                                                                             !‚ÇÓÓÙàòóóúóúóóúóúóóúó÷óúóóúóóúóúóóúóúó÷óóóóúóóúúóúúóüóúóúúúúúúúúóúúúúúúüúúúúúúúüúúúúüúüúúúüúúúüúüúüúüúüúüúúüüüüüüüüüúüüúüüüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüþüüþüüüþüýüüüþüþüþüþüýýþüþýþýþüþüþýýþýýþýþýþþýþþþþüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþþþÿüÿüÿüÿÿþþþÿþþÿüÿüÿüÿÿþÿüÿþþÿüÿÿÿþþÿþÿüÿüÿÿüÿþÿÿÿþÿÿþÿÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿÿþÿþÿÿÿþÿþÿÿÿÿÿþÿþÿÿþÿÿþÿþÿþÿþþÿþÿþÿþþþÿþÿþþÿþÿþþþþýÿýÿýÿþþýþýþþþþÿþÿýÿþþþþþþþþþþþþþþþþýþýýþþýþýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýüýüýýýýýýýýýýüýüýüýüýüýúýüüüüýüüüüýüüüúüüýúýúýúýúüúýúüüúüüýúüüúûúýúýúüúúüúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷úú÷÷ú÷÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õèÙ×ÓÓ”Y                                                                                                                                                                                                                 ;›ÓÓ×àèóó÷÷÷ó÷ó÷úóóóúóóóúóú÷úóúúóúóúúúúúúúúúúúóúúúúúúóüóúúúúúúóüóúúúúúúúúúúúúúúúüúóüúúüúúúúüúúüúüúüúüúüúüúüúüüüúúúüúúüúüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüüüüüþüþüüýþüþüýüýüþüýýþüþüþýüþüþþþüþþüþþüþüþþþþüþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþÿüÿüþþþÿþþþÿÿüÿþÿþÿüÿÿþÿþÿÿþÿüÿþÿþÿÿÿÿþÿÿÿþÿþÿÿþÿÿÿþÿÿþÿþÿÿÿþÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿþÿþÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿÿþÿþþÿþÿýþÿþÿþÿýÿýþþþþÿýÿÿýÿþþþþþýþþþþþþþþþþþþþþþýþýþþýýþýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüüüüüüüýüýüýúýüýúýüýüýúüüüýúüúýúýúýúüúýúýúüúýúüúýúüúúüúúúüüúúúûúúüúúûüúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷úúú÷÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èà×ÓÓžY                                                                                                                                                                                                                                Y›ÓÓÙèòóó÷÷óúó÷óúóóóú÷óóúóóúóóóúóóúóúóóúóóóúóúóúúóúóúóúúóüúóúóúúúúúúúúúúúúúúúúúúüóúüúúúúüúúüúúüóüúüúüúúüúúüüúüúúüüüüüüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüþüüýüüþüüýüüþýýýýüþüýýþýýýýþýþüþþýþþþýþþþþüþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþÿþþþþþþÿþÿüÿþÿÿþþþþÿþüÿÿüÿþþþÿüÿþþÿüÿþÿþÿþÿþÿþýÿþÿþÿÿþÿþÿþÿþÿÿþÿÿÿÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿþÿÿþÿþÿÿÿÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþþþÿþÿþþÿþÿþþýÿýÿýÿþÿþÿþþýþþþþþþþþþþþþþþþþþþþþþþþþþýþýýþþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýýýýýüýüýüýüýúýüýúýúýüüýúýúýýüüýúýúýúüüüúýúüúýúýúúýúüûúýúúúûúüüúúúúüúúúûúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúùúúú÷ú÷ú÷ú÷÷÷÷ú÷÷ú÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÚ×ÓÇZ                                                                                                                   c                                                                                  Y›ÓÓßèóó÷úó÷óúóóúóóóúóóóúóó÷úóúúúóúúóúóúúóúúúóúóúóúúúúóúúóüóúúúúúúúúúúúúúúúóüúúúúúúúüúúúüúúúúüúüúúüúüúúüúüúüüúüúüüüúüúüúüúüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüüüüüüüþüýýüýýüþþüýüüüþýþüþüþüþüýüþþýýýþüþüþýþýþþþýþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿüÿüþþþÿþÿþÿÿüÿþÿþÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿÿÿÿþÿþÿÿÿþÿÿÿÿþÿÿþÿþÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿþÿþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþþÿþÿýÿýþþþþþþþÿýþÿþþÿþþþþþþþþþþþþþþþþþþýýþýþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüüüüüýüýüýüýüýüýúýüüüýüüýúýüúûüúüüüúýúýúüúüúýúüúüüúüúüüúúýúüüúúúûúûúúúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷úú÷ú÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ñà×ÓÇ_                                                                                                                         _                                                                                     Y›ÓÓßèóóóúóóóúóóúóóóú÷óóú÷óóúóóúóóóúóóúóúóóúóúóúóüóúúóúúúóüúóüóúúúúóúúúóúúóüúúúúúúúüóüóüúüúúüúúúúúüúüúüúüúúüúüúüúüúüúüúüüúüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüüüüþüüþüüýüýüýüüüþüýþüþüýýþýþüþýþýþüþýþýþþþþþüþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþÿþþüÿþþÿþÿþÿþþþþþþþþÿþþÿþþÿþþÿþÿüÿþÿþÿÿþÿÿþÿþþÿþÿþÿþÿÿüÿþÿÿþÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿÿÿþÿÿÿÿÿÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿþÿþþþÿþþþþþÿþÿþþÿþþþþýÿýÿþÿþÿþþþþþþþþþýþþþþþþþþþþþþþþþþþýþþýþýýþþýþýýþýýýýýýýýýýýýýýýýýýýýýýýýüüýüýüýýýýýýüýüýüýüýúýüýüüüýüüüúýúýüüüüúýúýúýúýúýúýúüúýúüûúüúüúúûúúúúúûúüúúüúúýúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷ú÷ú÷÷÷÷ú÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õòàÓÓÇ_                                                                                                                                                                                                                              YÓ×àèó÷÷÷úóóúóó÷úóóúóóóúóóó÷úóúúóúúúóúúóúóúúóúóúúúóúúúúóúóüóúúóúüóúúúúúóüúúúúúúúúúüúúúúüúüóüúúüúüúüúúüúúüúúüüúüúüüúüúüüüúüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüþüüüþüþüýüýüþüþýüýüýýþüþüþüþýüýýýþþþüþýýüþüþþþþýþýþþýþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþÿþþþþÿþþþþþþþþþþÿþÿþÿþÿþÿþþÿþÿþÿþÿÿþÿþÿþÿþÿüÿÿþÿÿþÿÿÿÿÿýÿÿÿÿþÿÿþÿÿÿÿÿþÿÿþÿÿþÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿþÿþÿÿÿþÿÿþÿþÿþÿþÿÿþÿþþÿþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿþþÿþþþÿþÿþÿýþþþþþþÿýÿþþþþÿþþþþþþþþþþþþþþþþþþþýýþýþþýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýüýýüýüýüüüüüüýüýüýüýúýüýúýüüüüûüüýüüúýüüüüüúýúýúüúüúýúýúüúüüúüúúüúüúýúýúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúù÷úú÷ú÷ú÷ú÷ú÷÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷÷÷õòà×ÓÓ_                                                                                                                                                                                                                    9”Ó×àèóó÷óúóóóúóóúóóóúóóú÷óúóúóóúóóúóóóúóóúóúúóúóúóúóúúóúóúúúóüóúúúúüóúúúúúúúúúüóüúüóúúúúúúüúúúüúúúüóüüúúüúúüúüúüúüúüúüüúüúüúüüüüüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüüüüþüüýüüüýüýüüþüýüýýüýýýþüþüýþýþüþüþþüþþþþþþþþýþþþýþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþþþþþþþÿþþÿþÿþÿþÿþÿþþÿþþÿüÿþþþÿþþÿþÿüÿüÿþÿþÿþÿþÿÿÿþÿþÿþÿüÿýÿÿÿþÿÿÿþÿÿþÿþÿÿþÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿÿÿþÿÿþÿþÿÿÿþÿþÿþÿþÿþÿþýÿþÿþþþþþÿþÿýÿþÿýÿýÿýÿþÿþÿýÿýþþþÿþþþþþþþþþþþþþþþþþþþþýýþþýþýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýüýüüýüýüýýýýüýüýüýúýüýüýúýúýüüüüûüüúýüüúýúýúýúýúýúýúüúüúýúüûúüúüúúüûúúúúüúúüúúüûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúúú÷ú÷÷ú÷ú÷ú÷÷÷÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷òòà×ÓY                                                                                                                                                                                                                                                                  _ž×Ùèóó÷÷óúóóúóó÷úóóúóó÷úóó÷óóó÷úóúúóúúúóúúóúóúúóúúóüóúóúúúúúóüóúúúóúóüúúúúúúúúúúúúúúúúüúüúúúúüúúúüúüúüúúüúüúüüúüúüüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüüüþüýýýüþüþþüþüþüþüþüþüþýþýýüþýþþþþýþüþýþýþýþýþüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþþþþþþþþþþþþþþþÿþþþÿÿþþþÿÿþÿþÿþÿÿÿþÿþÿþÿþÿÿüÿþÿþÿÿÿÿÿÿÿÿüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿþÿþÿÿþÿÿÿþÿþÿþÿþÿþÿýþÿþÿþÿþÿþþÿþÿþþþÿþÿÿþÿýþÿýþþÿýþþþþþýþþþýþþþþþþþþþþþþþþþþþþþþþþþþýþþýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýüýüýüüüüýüýüýüýüýüýüýüüüýúýüüüýüüúýüüüúýúýúüúüúýúýúýúüúüüúýúûüúúüúûúúúúûúüúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷úú÷ú÷ú÷÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õ÷÷óõ÷÷÷òòàÓÓƒ                                                                                                                                                                                                                                                  Y›ÓÙèóó÷÷óúóóú÷ó÷÷óóú÷óóúóóóúóúóúóóúóóúóóóúóóúóúúóúúóúóúúúúóúóúúóüóüóüúúúóúúóúúúúúúúúúúúúúóüúüúúúúüúüóüúüúüúüúüóüúüúüúüúüüüúúüúüúüúüúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüþüüüüüüüþüüýüüüýüýüüýüþüþüþýþüþüþüþþýþüþüþüþþþüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþÿþÿþÿþþÿþþÿþÿþüÿþÿþüÿþþÿþÿþüÿþÿþÿÿþÿþÿÿÿþÿþÿþÿüÿüÿÿÿþÿÿÿýÿþÿþÿþÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿÿþÿÿþÿÿþÿþÿÿÿþÿþÿþÿÿÿþÿþÿþÿþÿþÿýÿþÿþÿþþþþþþÿþÿþÿýÿýÿþÿþÿþÿýÿþÿþÿþþþþþþþþþþþþþþþþþþþþýþýýþþýþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýüýüýýüýüýüýüýüýüýúýúýüýüüýúýúüüüüüúýúýúýúýúýúüúüúüúûúüúúüúúüúúúúüúüûúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷ú÷ú÷ú÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷óõ÷÷÷÷÷õ÷÷õèÙÓÇ]                                                                                                                                                                                                                                ‚Ó×ßòóó÷úóóó÷úóóúóóúóóóúóó÷÷÷ó÷óóúóúóúúóúúúóúúóúóúúóúúóüúúúúúúüúúüóúúúúúúúúüúúüúúúúüúüúüúüúüüúüúüüüúüúüüúüúüúüúüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüþüþüüþüþþüþüýýýüþýýýýýþýýýýþüþýüþýþüþýýþüþþþþþþüþþþþþýþýþüþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþþÿþþÿþþþþÿþþþþþþþþÿþþÿþþþÿÿþþÿÿÿþÿþÿüÿÿÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿþÿÿþþÿþÿþÿÿýþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿþÿýþþþÿýÿýþþþþþþþþþýþýþþÿýþþþþþþþþþþþþþþþþþýþþýýþýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýüýüýýüýüýüýýüýüýüýüýüýüýüüüýúýüüüüýýúýüüüüüüüüüüüúüúýúýúýüüúüüúüüúýüýúûüúúüúúüûúûúûüúûúûúûúûúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úúúú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷÷õ÷÷÷õóõóõ÷÷÷òàÙÓ˜;                                                                                                                                                                                                                                             _ž×Ùèóó÷÷óóúóúóó÷óóú÷ó÷÷÷óóúóúóóúóúóúóúóóúóóóúóúúúüúüüüüüüüüüüüüüüüüüüüüüýüüüüþüüþüþüüýüüüþüýüþüüþüüýüýüþüþýþüþýþüýýýýýüþüþýþþüþüþüþüþüþüþüþüþüþüþüþüþüþþþþþþþþþþþÿþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþþþþþþþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿÿþÿþÿþÿÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿÿÿÿþÿþÿþÿþÿýÿýÿýÿýÿþÿþÿýÿýÿþþþþþþþþþþþþþþþþþþþþþýþþþþýþþýþþþþþþþþþýýþþþýþýýýýýýýýýýýýýýýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýýýýýýýýýýýûýüûúúúúúúú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõóõ÷÷÷õóõóõ÷èß×Ó‚                                                                                                                                                                                                                                                                      "ƒÓÙæòúó÷óóúóó÷óóúóúóóóúóóúóúóóóóúóúóúóúóúúóúüüüüüþÿÿÿÿÿÿÿÿÿþÿþÿÿþÿÿþÿÿÿÿþÿþÿþÿþÿþþÿþþþþÿþþþþþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿüÿüÿüþþþþþþþþþþþþþþþüÿüþüÿüþþþüüþþüþþþþþþþþþÿüÿüÿüþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþÿþþÿþÿþÿþÿþþÿþÿþþþþÿþþÿþÿþþþþþþþþÿþÿþÿþÿþþþÿþþÿüþþÿþÿþÿþþÿþÿþþþþÿÿüÿþÿþÿüÿþÿþÿþþþÿüÿüÿüÿüÿþÿýÿüÿþÿþÿÿþÿþÿþÿýþþÿþÿþÿÿþþÿÿÿþÿþÿþÿþÿþÿþÿÿÿþÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿþþýýûúú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷õ÷÷÷÷÷÷õ÷÷÷óõóõ÷õèÙÓ@                                                                                                                                                                                                                                                                            Z›Óßñóóóúóú÷óúóúóúóóóóúóóú÷óóóú÷úóóúóúóúóúúüüþþÿÿÿÿýüüúúúúúúúüúüúüúúúúú÷úúúúü÷ü÷úúüúúúüüúúúüüúúüúúúúúüúüúúü÷ü÷ü÷úú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ó÷÷÷÷÷÷÷ó÷ó÷ó÷ó÷÷÷ó÷óóõ÷÷ó÷ò÷óóó÷÷óó÷ó÷óóóó÷óóó÷ó÷÷÷÷÷÷÷÷÷÷÷ó÷÷÷÷÷÷÷÷÷ú÷úúó÷÷úó÷÷÷ú÷÷÷÷ú÷ú÷úú÷ú÷üúüúúüúúúúüüüüüüüúúúúúúúúüüúúüüúüüüüúüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýüýüüüýýýüüüýüýýýýýþýþýþüýýýýýüýýýþþþýýÿþþýýýýýýýþþþþýÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿÿÿþÿþÿþÿþþþþþþþÿÿþÿþþþþÿþþþÿÿýÿþýÿýÿþþÿþþþþþþþýþýþýþýþýýþýýýýýýþþþþþþþþþýþýþýþþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýüüüüýüüüýüýýýýýýýýýýýýüýüýüýüýüýüýüýúýüúüüüýúúüüúýüýýýþþÿÿþÿýýúú÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷óõ÷õ÷õóõóõóõóõ÷ò÷òòà×Ê]                                                                                                                                                                                                                                                     _žÙæò÷÷÷÷ó÷óóúóóó÷óóúóúó÷úóóúóúóóó÷÷óúúúüüÿÿÿþþüüúúúúüúüüüúüüüúüúúüüúüúúüúüúúúúúüúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷úú÷÷÷÷÷÷ú÷÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õóõ÷õ÷÷óõ÷ò÷õ÷õõõóõ÷õ÷õ÷õ÷õ÷÷õ÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷ú÷ú÷÷úúúúúúúúúú÷úúúúúúúúú÷ú÷úúúúúüúúüúúúüúúúüúúúúüúúüúüúúüüüüüüúüüüüüüüüüüüüýüüýüýüýüýýüüýýýýýýýýýýýýýýýýýýýýýþþýýýýþþþýýþýþýþþþþþþþþþþþþþþþþþÿþÿýþÿþÿþÿÿþÿþÿþÿþÿþþÿýÿýÿþÿþÿþÿþþÿÿþÿÿþÿþÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿÿþÿÿÿþÿÿÿþÿýÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿÿþÿÿÿþþÿþÿÿþÿýÿþÿþÿÿÿþÿÿÿþÿþÿþÿþÿÿþÿÿÿÿÿþÿþÿþÿþÿýÿþþÿýþþþþþÿþÿýþþþþþþþþþþþþþþþþþþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüýüýúýûüýýýýýüüýýýûüüýúýýüýüüýýýÿÿýýý÷÷÷÷÷÷õ÷÷÷÷÷÷÷õóõ÷÷÷ó÷÷÷÷óõóõóò÷óõ÷òèÙÓƒ                                                                                                                                                                                                                                                    ƒÓÙèóúóóúó÷óúóóúóú÷óúóóó÷óó÷óó÷óóúóúúüüþÿÿÿüüüüüüüüüüüúýúüúüüúúüúüüúúüúüúúüúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úúúúú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õóõóóóõóõó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷ú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüúúüüüüúüüúüúüüúüúüúüüüüúüüüüüüüüüüüýüýüýüýüüýýüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýþþýþýþþþþþþþþþþþþþþþÿþþýþýÿþþþþþýýÿýÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿþþÿþþÿþÿþÿþÿÿÿÿÿÿÿýÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿþÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿýÿþþþÿþþýÿþÿþÿþÿþþþýýýýýÿþþþþþþþþþþþþþÿþþþþýýýÿþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüýýýýüýýúüüýúýüüüüýûüýýúýüúüýúýúüýýÿÿÿýúú÷÷÷õ÷÷õ÷÷÷÷÷óõ÷õ÷õ÷òõóõóõ÷÷õ÷ò÷õèÙÓY                                                                                                                                                                                                                                                    Y›Ùàñóóó÷úóóúóó÷úóóóóúóóúó÷úó÷úóúóúúüüÿÿÿýüüúüüüüüüýüüúýüüüüüúüüüúýúúüüúüúúûúüúüúúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷÷úú÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õ÷÷õóõóõóõó÷÷ò÷õõóõóõóõ÷õóõ÷õ÷÷õ÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷ú÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüúúüúúúüúúúüúúüúüúüüüüüüüúýúüýúýúýüüüýýüüýüýüýüýüýüýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýþþþþþþþþþþþþþþþþÿþÿýþþÿþÿþÿýÿýþþÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿþÿÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿÿÿþÿþÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþþÿþÿþÿþþÿýÿþÿþÿþÿþÿþþþþþþþþÿþÿþÿÿþÿýÿþÿþÿþÿþÿþÿþþþþÿþÿþþþþþþþþþþþþþþþþþþþþþþþþýýýýþýþýýýþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýüüüüýüüýýýüýüýúýýüüýüüýúýüýúýüüýüüüúýýÿþüú÷÷÷÷÷÷÷õ÷÷õóõó÷÷óõóõóõóõóòó÷õó÷òàמx                                                                                                                                                                                                                                                                      xžÙàòó÷÷÷óóúóóú÷óóúóúóóúóóúóóúóóó÷úüþþÿüüüüüüüüüüüýúüûüüüüúýúüüüûúüúüüúúúýúüúüûúúúýúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õóõ÷õóóõó÷õ÷÷ò÷÷÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷ú÷úú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúûúüûúüûúüüúýúýúýúýúúýúüüûüüüýúýüýüüýúüüúýüýüýüýüýüýüüüüüüýüýýýýýýýýýýýýýýýýýýýýýýýþýþýþþþþþþþþþþþþþþþþþþýþþýÿþþþýÿýÿýÿþÿþþÿþÿýÿýÿýÿþÿþÿþÿþÿþþþÿÿþÿþÿÿÿþÿÿÿÿÿÿþÿþÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿþÿþþÿÿþÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿþÿýÿýÿýþþýÿþþþþþþýÿýþþþÿþþýþþýÿþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýüýýúýüýúýüýüüüýüúýüýúýúýúýúýúýúýúüüýÿÿþü÷÷õ÷÷óõ÷÷÷÷÷õóõóõóõóõóõ÷õ÷÷÷õ÷õèÙÓ”"                                                                                                                                                                                                                                                              zÓÙèóó÷úóóúóó÷úóóúóó÷ó÷úóóúóóúóóúüüÿÿþüüüüüýüýüüüüýüüýüüüüúýúýúúüüüúýúûüüüúüúüúúüúûúúúûüúúûúúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷úú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷÷õ÷÷÷õó÷óò÷õ÷ò÷õóò÷÷÷õ÷õ÷õóõ÷õ÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûüúúúúúüúúüúúüúüúûüúüüüúýúýüüúýúüüûüüúýüýüýüýúýüýüýüýüýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýþþþþþþþþþþþþþÿþÿýÿþÿýþÿþþþþÿýþþÿþÿþþÿýÿýÿýÿþÿþÿþÿþÿÿÿþþÿþÿÿþÿÿÿþÿýÿþÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿþÿþÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿþÿþþþýýþÿýÿýÿýÿýÿþÿýÿþÿþÿþþþÿþþþþþÿþþÿýþþþþþþþþþþþþþþþþþþþþþþþýýýþýþýýýþþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüýüýýüýûüýýúýýúýúýýûüýýüüüýüúýüýúýûüúüúýÿÿýú÷÷÷÷÷õ÷õó÷õóõóõóõóõóõóò÷õó÷÷õèÙÓ›;                                                                                                                                                                                                                                                         ƒÓßñóóúóóóúóóúóóú÷óóúó÷óóúóóúóóúüüÿÿýüüüýüýýüýüýúýúüýúüúýúüüúýúýýúüúüúüüúûúúüúúúüúüúúúüúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõ÷÷óõõ÷÷òóõ÷õó÷õóõ÷÷÷÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷ú÷úú÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúûúúúúúüûúüûúüûúüüúüúüúüüûúüúýúýúüüüüüüúýüüüüýúýüýúýüýüýüýüüüüüüýüüýýýýýýýýýýýýýýýýýýýþýýýýþýþþþýþþþþþþþþþþþþýþýþýþýÿþýÿþÿþýÿþÿþþÿþÿýÿþÿþÿýÿþÿþÿþÿþþÿÿÿþÿÿþÿþÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿþÿÿýÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿýÿþþÿþÿþÿþÿÿþýÿýÿþþýÿýÿýÿþþþþþþÿýÿýÿþÿþþþþþþýÿþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýýýüýüüýýüýüüüýüýüýýüüúýúýúýúýüüûüüüüýüýüüúüýÿþú÷õó÷ò÷÷òóõóõóõóõóõó÷÷õ÷÷õó÷÷òàÓ@                                                                                                                                                                                                                                                            ;ƒÓàò÷÷÷ó÷úóó÷úóó÷óóúóó÷úúóó÷úóúüýÿÿüüüüýüüýüüýüýúýüýýúýýýüýúýüüüúüüúýúýúúüüüüúýúýúúûüúûúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷úú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷óõ÷÷ó÷õ÷÷òó÷õò÷÷óõóõ÷õ÷õóõ÷÷õ÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷ú÷÷úúú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüúúüúûüúýúüúúüüúýúýúýúýúýúýüüûüüüüüüýüýüýúýüýüýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýþþþþþþþþþþþþþþþÿþÿþþþþÿýþþþÿýþþþþÿýþÿýþÿþÿþÿþÿþÿþÿþÿÿþþÿÿþÿÿþÿÿþÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿÿþÿþÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿþÿÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿþÿþÿþÿþÿýþÿýÿýÿþÿýÿýþþÿþÿþÿþþþþþýÿýþþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþýýþýþýýýþþþýýþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüüüýúýýúýýüýüýüûüýüúýüýüýúýúýúýúüüýúýúûúýúýüüüýÿýü÷÷÷÷õ÷õóõóõóõóõóõ÷õó÷õó÷÷õ÷òæ×Y                                                                                                                                                                                                                                                                      ;”×àòóóúó÷óóóúóóóúóúóóú÷óóóúóóúüþþÿüüýüýýüüýüüýúýüýüýúüýúüúýúýúýúüüýúýúüúüýúúûúüúüúúüúúüúüúúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷óõ÷õ÷÷ò÷õ÷òóõóõõó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷ú÷úú÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúûúýúúúúúúüúúüúúüúýúüüýúüúüúýúýúüüüúýüüúýüýúýúýüýüýüýüýüüüüüüýüüüýýýýýýýýýýýýýýýýýýýþýýýþýþþþýýþþþþþþþþþþþþþýþþþþÿþþþÿþÿýÿþÿþÿýÿþÿþÿýÿþÿþÿþÿþÿþÿþþÿÿþþÿþÿþÿþÿÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿÿÿþþÿÿþÿÿþÿþÿþÿþÿÿþÿþÿþÿýÿýÿþþÿþÿýÿýÿýÿþþÿýÿþþþþþþþþÿþÿýÿýÿþÿþþþþÿýÿþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýýýýýýýýüüýüýüýüýúýýúýúýüýûýúýüýúýúýúüüýúýüúýúüüýÿþú÷óóõóõóõóõóõó÷÷÷÷õ÷÷õ÷÷÷÷÷òæÙžZ                                                                                                                                                                                                                                                                              Y›Ùæòó÷÷óóúóúóó÷÷÷óóóúóóóúóúóúüþÿÿüüüýüýüüýýüýüýüýýüýüüýúýýüýüüüüüûüúýúüúýúüüüüúýúúüúûüúúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷úú÷ú÷ú÷ú÷ú÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õó÷÷÷÷÷÷÷õ÷÷óõ÷÷óõóó÷õò÷õóõ÷÷õ÷õ÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷úúú÷÷úúúùúúúúúúúúúúúúúúúúúúúúûúúúúúúúýúûüúúúüúúúüúûúüúýúýúüüüúýúýüúýýüüúýüüüýüýüýüýüýüýýýýüýýýüýýýýýýýýýýýýýýýýýýþýýýýþýýýþþýþþþþþþþþþþþþÿýþþþþþÿýÿýþþþþþþþÿýÿýÿýÿýþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿÿÿÿþÿþÿþÿþÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿÿÿþÿþÿÿþþÿÿþÿÿþþÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿýÿþÿþÿþÿþÿþþÿýÿýÿýÿþþÿýÿþÿþÿþÿþþþþýþþýþýþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþýþýýýþþþýþýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüüüüüüüûýýúýüýüýüýúýýýýúýúüüüüûüýüüýýûýúýúûüúüûüüúýÿþü÷÷õóõóõóõóõ÷õóõó÷õó÷÷õóõ÷òèÙž_                                                                                                                                                                                                                                                                                                  B›Ùæòóúóóúóó÷óúóúóóú÷÷ó÷÷÷óóóüüþÿüüýýýüýüýýüüýüýüýüúýüúýüýúüüüúýüüüüúýúýúýúüúüûúüúúýúüúúýúüûúüúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúúú÷÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õóõ÷óõóõóóõõóõõó÷÷õ÷÷óõó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷ú÷ú÷÷÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúüûúúúúúýúüûúýúýúüýúýúüúýúýúýüüúüüüüûýüüýúýúýúýüýüýüüýüüüýüüüýýýýýýýýýýýýýýýýýýýýýýýýýþþþýýþþþþþþþþþþþþþþþÿþÿþþýþþþÿþÿþÿþÿýÿýÿýÿýÿþÿþÿþþÿþÿþþÿþÿþÿþÿþþþÿÿþÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿþÿÿþÿÿÿþÿþÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿýÿýÿþþÿþÿýÿþþýÿýÿýÿþÿþÿýÿþÿþÿþÿþÿýÿþþþþþþþþþþþþþþþþþþþþþþýþýþþþýýýþýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýýýýýýúýýýýúýüýúýüüúüýýýüýüüüúüüûúüüúüüüýúýúüýúüüúýÿýú÷õóõóõó÷÷ò÷÷÷õ÷÷÷õó÷÷÷÷÷õèÙÊ_                                                                                                                                                                                                                                                                                     YžÙæóóúóóúóóúóúóóó÷úóóóúóóúóúüÿÿüýýýýüüýüýüüýýüýüýüýýüýýüûüüýüýüúúõõõíííëèëèëèëèëèëèëèëèëèëèëèëèëèèëèëèëèëèëèëæëæèæææææææææææææëèêèêèêèêèêæêèêèêèêèææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææêèêèêèêèêææêæëæëææëèêææææææææææææèêèêèëèëèëèëèëèëëèëèëèëèëèëèëèëèëèëèëèëèëèíëèëèíëèíëëèëëëèíëíëëèíëëèííëííííííííííííííííííííííííííííõííííííííííííííííõííõíííõíííõõõíõíííõííííõíõíõíõíõíõíõõíõõõíõõíõõíõõõõíõõíõõíõíõõíõõõõõõíõõõõíõõõõõõõõõõõõõõõõõõöõùõùõùõùõøùõøùõùõøõùõùõùõùõùõõöõõöõõõõõõõõõõõõõõíõõõõõõõõõõõõõíõõõõõõõõíõõõõõíõõõíõíõõõõíõíííííõõõíõõííõõíõõíõõíõíõíõíõíõíõíõííõíõíõííõíõíõíõííõííõõíííõíííííõíõííííííííííõíõííõííõííííííííííííííííííííõíííõííõííõííííííííííííííííííëëëëëèëëèëëèëëèëëèëëèíëèëëèëëèííëëèííííõõõõúûýüúýúýúýúýýúýüýúýûýúüüüüúúýúûüúüþÿü÷÷÷õóõóõ÷÷õó÷÷÷÷÷÷õ÷õ÷÷÷õèÙÊx                                                                                                                                                                                                                                                                                  YžÙæóóóóú÷óóúóóóúóúóóóúóóúóúüþÿýýýýýýýýýüýüýýüüýüýüýüüýüüýüúúõõèëæÚÓ¬¥¥’¢’¢Ÿ   Ÿ Ÿ  Ÿ ŸŸ   ŸŸ Ÿ   Ÿ ŸŸŸŸ  ŸŸŸŸ   ŸŸ Ÿ ŸŸ Ÿ  Ÿ   ŸŸŸŸ  ŸŸ ŸŸ Ÿ Ÿ  Ÿ  Ÿ   ŸŸ Ÿ    Ÿ   ŸŸ Ÿ Ÿ ŸŸ  Ÿ   Ÿ  Ÿ  ŸŸŸŸŸ ŸŸŸŸ ŸŸŸŸŸŸŸŸ ŸŸ Ÿ Ÿ   ŸŸ ŸŸ   ŸŸ Ÿ  ŸŸ ŸŸŸŸ ŸŸŸŸŸŸŸŸ ŸŸ   ŸŸŸŸ ŸŸ      ŸŸŸŸŸŸŸŸŸŸŸŸŸ ŸŸ Ÿ Ÿ Ÿ  ŸŸŸ   ŸŸŸ ŸŸŸ Ÿ  ŸŸŸ  ŸŸ  ŸŸ         ŸŸŸŸŸŸŸŸŸŸ ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ ŸŸŸŸŸŸŸŸŸ Ÿ ŸŸŸŸŸŸŸ  ŸŸ ŸŸŸŸ Ÿ ŸŸŸ     ŸŸ Ÿ  ŸŸ Ÿ ŸŸŸŸŸŸŸŸŸ  ŸŸ  Ÿ     Ÿ Ÿ ŸŸŸŸŸŸŸŸŸŸŸ ŸŸ Ÿ ŸŸŸŸŸ Ÿ ŸŸŸŸŸ ŸŸ ŸŸŸ ŸŸ    Ÿ Ÿ Ÿ  Ÿ¢’¢¢¥¬¬Öæèëõõ÷úýüýúüýüúüýüüúüýúüûýýúüüüüûúúÿþú÷ó÷÷õ÷óõ÷÷õóõ÷÷÷÷÷÷÷÷÷÷÷èÚÊx                                                                                                                                                                                                                                                                         @Ùèó÷÷÷÷óóúóó÷úóó÷óóúóóúóóüüÿþýüýýýýýýýýýüýüüýýüýüýüýüüüúõèèÖ¬š’ŽŽŸŽŸŸŽŸ ŽŽ Ÿ Ÿ    ŸŽŸ ŸŽŸŽ ŸŸŸŸs  ŽŽ Ÿ ŽŸ      Ž Ž Ÿ ŸŸŸŸŸ ŸŸŸ   ŽŸ ¢ŸŽ     Ž ŽŽ¢ŽŽŸ¢ŽŽ ŸŸŽsŸ ŽŽ  ŸŽŽŽ ŸŽŸŸŽ ŽŽŽŽŽssŽsŽŽs~sŽssŽsssŽŽŽsss~ŽssŽŽsŽss}sŽsssŽsŽs~ŽsŽssŽsŽssŽssŽs}s}s}s}Žss}ss}Žss~ssŽ}ssssss}ssŽŽ}ssssss}s~ssssssspss~ssss}ssssss}sssppss}ss}ssssssssssqs}sssqssq}s~s}sssqqs}ss}ss}ssssssqpsssq}ssspqs}sqqsqs}ssss}s}}qsssqqqqqssss}qpqqsqspqssqqsspqqsqssqpqsspnqsq}qqpnqqqsqqqpqqpsspnqqqqpqqsqqqqpnqqpnqsqqqqqpqqpqqqqqqqqqqpnqqq}ŽŽ}Ž š¥Óæèõõüúüüýûüüúýûüýûüüúüûüúûüüüüýÿý÷÷õó÷õ÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷÷÷÷èßÇx                                                                                                                                                                                                                                                                                    ;›Ùæóóóúóóú÷óóúóóóúóúóóúóóúüüÿþýýýýýýýýýýýüýüýýüüýüýüüüõíèÚ¬’sŸŽ~}s~‘‘‘s}}~~}~}~‘‘‘¡¡‘‘Ÿ~~‘¡‘~¡Ÿ~}¡~¢¡Ÿ¡¡¡¢¢}¡Ÿ¡~Ÿ‘¡¡‘¡¡~¡¢‘~~~‘¡¡¢Ÿ~¡}~}Ž}Ž~¢Ÿ}¡}}~}s}¢}~}‘Ÿ}}~~~}}}}}~~}s}Ž}}s}}}}}}}~~}}}~}}s}ss~}}}s}}s}}rq}}s}ps}qpq}sppqppsppwq}sppp}}ppspppppspps}s}qwqp}ws}}q}sppvrppp}ppppppppppp|poo}ppppoopppppplllpppppppllplllllooooopolpolllllloolllllllljolj?jlllll?l??Clll?llj?ljllll>??>??lC?>>>jl>>CCCj?C??>>>??>>?>=>>>?>=>??>?C>>==>==>>??>>=C??===>>>>===============>==!7============>===$==!$==!$!$$!$$!$$$!$!!!!!!!!===??mo}sssŽ’¥Öæëõúüüüûýüüúüüýúýúüúüüüúýúúüýÿú÷õ÷óõóõóõ÷÷÷÷õ÷÷÷÷÷÷÷÷÷èÙž_                                                                                                                                                                                                                                                                                                      9–Ùæóó÷÷óóúóó÷úóóúóó÷óóúóóúüÿÿüüýýýýýýýýýýýýüýüüýýüýü÷íæÕ¥ s~~~}~}~}}~}~~¡~}~~~}~~~~}~~~~‘~}~~~~¡¡‘‘‘~‘‘‘‘‘¡¡¡¡¡¡‘~~‘¡‘~~~~‘‘‘~~~¡¢~¡¡}‘~¡‘~~‘¡‘‘‘~‘¡¡}¡‘~~~~~¡¡‘~‘‘~~~~‘~¡~}~}~~~~}~}}}}}}~~}}}~}}}}}}}s}~~}}}~}}~}~~}}}~}s}~}}}sr}}}}}}}}s}p}}~}}}}}}}}|}}}pp}}v|}~}}}}}}}||}}s|p}}}p}s|}vpp|vppppppppp}pppppppvpopppppppppppppppplp}pplpppooppppolopppopllppppplpppoojojlopppllllllloollllllplCllllllClClllCllCClCClClll>>CCljlllCC?CCC>>lCCC>>?Cl?>>CCC?>>>>CC>>>>==>?>>>=>=>>===C>>>======>>==================$===97====!=!=$$=$=!=$!$$$!!!=$!!$=!=!!!!!!!==!!!!!!!!!!!!! !!!!!!!!!!!!!! ==jpqs}’žäèõüüüúûüýúýüúýúýúûüüúýúýüýÿü÷÷õ÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷õèÙžY                                                                                                                                                                                                                                                                                      9”Óàòóóúóúóóóúóóóúóóúóú÷óóüüÿýýýýýýýýýýýýýýýýýüýýüýúõëÖš  s}}}}~}~‘}}}~~‘~}~‘‘‘‘~}}~~}~~~~‘~}~~~}¡‘~~¡‘¡‘~~}}~~~~¡¡¡‘‘~~¡¡‘‘‘¡¡¡¡¡¡¡~‘¡‘~~~‘‘‘¡‘~}~¡~~}¡¡‘‘~‘¡‘¡‘~~~~¡¡~~‘‘~‘¡~~~¡¡¡‘¡¡‘~~~~‘‘~~~~~~~‘~‘‘~‘‘‘~~¡¡‘~~}~~~~‘‘‘¡‘}~¡¡‘¡¡}}~}}~}~‘~~¡}~~}}}}}}~~}}}}}}~}}}}}‘‘~}~}}}~~~}}}}}}}}~}r}|v}}}}}}s}}|r}}}s}}}}}vr}r}wr}}p}}}}}}}}r}}v|}}}r}}||p}p}}ppppp|ppvpppppppppppppppppppvpppppppppppppvpoopppoooppppllpppplllolppoplppooollllopoplloljlppppllllplCllClllCCCllC?CCClC?CClllCC?CCCCCCCCCC?>>??C?>C>>>?llCCCCCC>>CCCC>>>====?>=>>==>>>==>>>====>==>>=>=$===>=>====A=$!$===!=======$!!$!!!!$=$$=!!$!!!$==$$$=!!!!!!!$=!!!!!!!!!$!!!!!!!!!!!!!! !!   =?mps’Óæë÷üüýúüüûüüûüüüûúýúýúúúüÿþ÷÷÷÷õ÷õ÷÷÷÷÷÷÷÷õ÷÷÷÷÷÷õèÙžY                                                                                                                                                                                                                                                                                               ƒ×àòúóúóóóúóúóóúóó÷úóóóóúüþÿüýýýýýýýýýýýýýýýýýýüüúëÚ¬¢Ž}}}~}~‘~}}}}~~~~~~‘‘‘‘‘‘~~}~~~~~~~~~~~~~~~‘~~~‘‘}~~~‘‘‘‘~~‘‘‘‘~‘‘~‘‘‘‘‘~‘¡~‘~}~¡‘~~¡¡‘‘‘~~‘¡~~‘‘‘‘¡‘‘~‘¢‘}‘‘¡‘~‘‘¡‘‘¡~‘~‘¡¡~¡‘‘~¡¡‘‘‘‘¡¡¡‘‘‘‘‘~~¡‘~¡¡~~~‘€‘~~~‘‘¡‘~‘~}~}~}¡}~‘~~}~~‘}}~~~~~}~~~~~~}~~~~~}~~}}}}}}~}}}}}~}}}sr}}}}}}}}~}p}}}}}}}}}s}}}}sr}}}vv}}}}}}rv|}psppv}}}||vvvpppp|p}}pp}}}}p||}ppvv|vppvppppvvpp}pppvpppppppvppppppppopppoppolppoloppvpllllooplllpolplllllololCllllllljlllClllollllllolClCl??ClClCC?CCCClllCCCCCCCCCCCCC>>>C?C?>>>>>C>>>>>>>>>=>>>C>>>>>=>CA====>>==>>===========>=====================!==$$$$$=$!!=!!!$=!!=!!!!!$$!!!!!!!!!!!!!!!$ !!!!!!!!!!!!!!!!! 9?psŽ¥Úæõúýûýüüüüúýúüüúýúýüûüüþÿú÷÷÷ó÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷õè×Y                                                                                                                                                                                                                                                                                                     ƒÓàòóó÷óóú÷óóóú÷óóúóóóúóúüþÿýýýýýýýýýýýýýýýýýýýüúéÖšŸ}~}}}~~}}‘}}}¡~}}‘‘‘~~‘¡¡¡¡¡~~}~~~~}}~~~}~~~}~‘‘~~~~~}}~‘¡‘~‘¡‘‘‘~~~‘‘¡~~‘~~~~~‘‘~~~‘‘¡‘‘¡‘‘¡¡~~‘‘~~‘‘‘¡¡¡}‘~~~~~‘‘‘‘‘¡‘¡‘‘¡¡‘~~‘~~‘¡¡‘‘‘¡¡‘~¡‘¡¡¡¡¡‘‘‘‘‘¡¡‘~‘¡‘‘¡¡~}~~}~~~~~~~‘‘¡¡‘‘‘}}~€~~}}‘~~~¡~~~}}‘‘‘}}}~~~~~~‘~}~~}~~}~~~~}}}}s}~}}}}}}}~}}}}}~}}~~~}}}}s}~~~~}~}v}}}}vvv}}}|p}}}~}w}rp|||pp|}|}}||ppp|ppppp}}p}|pp}}p}}ppvp|ppppppvp|pp||pppvppppop|vpoopvpoopoollppppollopvpplllllpllllpllpolllllpllllllClplCClCllpllllllloolCll?>?CllCCCCCC?Clll??ClllC>CCllC>>>CCC>>>>>C>>>>>=>?C==>C>>CC=>=>>>C>===>=>==>>>>========>=$$=>=$==>===A>>A===!=$$=!!!$!=!!$=!!$==!!!!!!!!!=!!$=!!!!!!!!!!!!! !!!!!!! !!!!7?qŽ‘Ôèõüúýúýúüúüûúýúüúüüûúúüÿü÷õ÷÷õ÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷òæÓ›;                                                                                                                                                                                                                                                                                              xÓßòóúó÷óúóó÷úóóóúóó÷÷÷óúüÿþýýýýýýýýýýýýýýýýýýü÷ëÕ’ Ž}}}}~~~~~}~¡~}~~~}~~~‘}~~~~~~~~~~~}}‘‘‘~}~‘~~~‘‘~‘¡¡~~‘~‘‘‘~~‘¡~~~‘¡‘‘‘‘‘‘‘¡‘‘‘~~¡¡~~~¡¡‘‘¡‘¡~‘‘¡~~¡¡‘‘¡‘~‘‘~‘‘¢¡¡‘¡‘¡¡~‘‘‘‘‘‘‘¡~~‘¡‘‘~~‘‘‘~~‘‘‘‘‘‘~~‘‘~‘‘‘‘~~~‘~‘¡~~~~~‘¡‘}~~~‘‘‘‘}}~~‘}}~‘‘‘~}~}~‘~~~‘~}}~~~~~}}~~}~~~}}~}~}~}}~}}~}}}}}|}}}~}}}}|}}}p}~~}}r}}}}}}s}|}}}rwv}}|}}p|}}}|v}p}}}p}}||ppp}}ppv|vvpp}|}|vpp}}}ppppp}popprvpvvpppppppppppoppppppppopolpooopppopollllooollllllollolllllllplllllClllllllllCCClllC?lClCCClllllCCCC?CC?>?CC>?>>CC>?CCCC>>>>>CCA>=>>>C>>Cl>==>>>>C>=>=>==>>=>===>=========>===========$=======$$===$!=====!!$$!$$!=!$$=$!!!!$!!!!!!!!$!!!!!!!!!!!!!!!!! !!!!!  ! !! =oqŽ ¬æõúýúýúýúüüúýúýúûüüüýüþýú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òæÓ”;                                                                                                                                                                                                                                                                        YÊÙòó÷óóú÷óóúóó÷÷÷óúóúóóüüÿþýýýýýýýýýýýýýýýýýýúèÕ’}}}}}~~~}}~~‘‘‘~~~}~‘~~~}~~}}~~}}}~~~~~‘¡‘‘~}~~‘}~‘‘‘~~¡¡~~~~~‘‘‘‘¡‘~~‘‘‘‘¡¡‘‘‘‘‘‘‘¡‘€~~‘¡‘~~~‘¡¡‘‘‘‘¡‘‘~~~‘‘‘¡‘‘¡‘‘~~~¡¢¢¡‘¡‘¡¢‘~‘‘~‘‘~~~‘¡‘‘~~~‘‘‘‘‘~~~~‘‘~~~}~~~‘‘‘‘‘~~~‘‘~~~~~~}~‘¡¡~}~~~~¡¡‘~~‘~}}~~}~~‘¡¡~}}~‘‘‘~‘‘~}}~‘~~~~}}}}~}~~}}~}}~}}}~~~}}rp|s}~}~}}|pvr}p}~}}|}}~}}}}}}}}}}v||}}||}}vr}}|pr}}}}v}|}ppppp|r}ppvrpv}p}}}pv|}}|pppppppovvpvv|vppppoplloppopppvpopooopplllpplpvolpvoooplllplllpllllpolllpolllllCllllllllC??lllCCCCCllCClCCllCC?CCC>>?CC>>>>ClCCC?>>>C>=>?A>>>>=>>>>CC>>==>>>>>>==>>===>C=====>>>===>>>>====$=========!!=!=!!=!=!$===$!$!==!!==$!!$==!$!!!!$!!!!$!!!!!!$!!!!!!!!!!!!!!!!!!   !!?p¬æõýúýúüûúýúýúüüüûúüúüÿþ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òàÓz                                                                                                                                                                                                                                                                                ;žÙèó÷ó÷úóó÷÷ó÷úóóúóó÷óóúýÿýýýýýýýýýýýýýýýýýýüíÚ¢Ž}~‘}s~~~~~}~~~}~‘~}}}~~~}~}~~~‘~‘‘¡~~~}~~~~‘‘¡‘~‘¡‘~~~‘‘~~~‘~~‘‘‘‘‘‘‘‘‘~~‘¡‘~~¡~‘‘‘‘‘‘~‘‘‘‘¡‘~~¡¡¡¡~~‘‘‘‘¡‘~‘¡‘‘‘‘‘‘‘‘‘~‘‘¡¡~~‘‘‘‘¡‘‘‘¡¡‘‘‘‘~‘¡‘~‘¡‘~‘‘‘‘‘‘¡‘‘‘~~~~‘‘‘~‘‘‘~}~~~~~¡‘}~‘}‘}}‘~‘‘~‘~~~~}}~~~}}}~}~‘~}}‘~}~}s~~~}}}~~}~}}}s}}}}}}}}}}}}}~}}}}}}}p}~}|}}}||rp}~}}}rv}}p}~}p}|}}v}}vv}|r}p|v|vrv|v|}vvvrvpvppvrpp|}ppvppopvpppppppppp|popppppppvpppopvpoooopolpllppolllpplllollllllpplllllolllllllllllllll?CllCllCllllllCCCCllC?ClCCCCC?>>?lC??CCC>??CCCCCC=>??C>?C>>>>C>>>>C>>>=>==>>==>>=>A>==>>>=====>==============$$===========$!!=!$====$!$==!$!$=!!!$!$!!!$!!!!!!!!!$!!!!!!!! !!! !!!! !7lqŽ¢¬æúúýúüüúýúýúûüüüúýúýýýú÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òÚÇ]                                                                                                                                                                                                                                                                                9”×èóúóúóóúóúó÷óóúóó÷óúóüüÿþþþþýýýýýýýýýýýýýýõ暟Ž}}~}~}}~¡‘~}~~~}~~}}~‘}~}~~~}}~‘~~~}‘¡‘~‘‘~~~}~‘¡¡¡¡~~‘‘‘‘‘‘‘~~~~‘‘‘‘~~‘‘‘‘‘~~¡‘‘‘~‘‘‘~€~~~‘¡¡¡¡‘‘‘¡‘~~‘‘~~‘‘¡‘‘¡¡~¡¢¡~‘¡¡¡¡‘~~~~¡‘‘~~~¡‘‘¡¡¡‘¡‘‘‘‘‘‘‘‘~~~~~~~‘¡¡~‘¡¡¡¡¡¡¡‘¡‘¡¡¡‘‘‘‘‘~~~~~}}}¢¡~~}}}~~~~‘~~‘‘}~~~~‘¡~}}}}~~~‘~}~~~~}}~~~}~~~}}}}}~}}~}}}~~}}}}}~}s}~}}}}}}}p}}}|v|p}}p}}}ps}}}}}||p}}}}||vv|v}}|v}}vr}}}|}pvvppppppvpp|}vppvppppvvppppppppvppvvpvpoppvpppppoloooppopplppplllpl?llplllolpllvplllllllllllllllllllClllClllllCllClC??CllCCCClC>>>?>CClCClC>>>??CClC>>>>>ACCC>=>CC>>>ClC=AC>=>?==>=>>=>===>C>>=>>===========$===$$!=============!!!$=====$$$$=$$$$!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!! !!! $os’Úëúýüûüúýúüüüûúýúýúýýÿú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÙž<                                                                                                                                                                                                                                                                                                       zÓàò÷ó÷óóúóóóóúóúóóúóúóüþÿþýýýýýýþýýýýýýýýýúëÕŽ}}}}~}~}~}‘‘}~~}}~~}~~~~~~}~~~‘}~‘~~~~}‘~}‘‘~~~¡~‘¡~~~~‘‘‘~~‘‘‘‘~~~¡‘~}‘¡¡~‘‘‘¡‘¡‘‘‘‘¡‘~‘¡‘¡‘¡¡‘‘¡‘~~¡¡‘‘‘~‘¡‘~‘‘¡¡~‘~‘‘¡‘¡‘‘‘‘‘‘¡¡~~¡¡‘~¡¡‘~‘‘‘¡‘‘~~¡‘‘‘‘‘~~~‘‘‘‘~}‘~~‘~‘‘‘~~~‘~~¡‘~~}~~~~~~‘‘~~}}‘‘~}¡~~~}~‘~}~~~}}~}~~}~~~}}~~}|~~~~}~~}}~}}}}}~}}s}}|}~~}}}}}}}}}}}}}}}}}|}}}}||}}}}|v}}rpv}}v}vvprvvvvvvvpvpv|vvvpppv}ppp|ppp|pppvp|ppppp|vppppv|pppppppppopvplpppollplovploloppllppllppoolllllllllllCllllllllllllllllClllllCllllCClCCl??lllClC??CCCCCll>?C?C>C>>>CC>>>>?CCCCC>=>>>C>=>lA==>>>=>>=>=>==C>==========================!!!==$!====$$==$!===!$!!$==!!!$$$!!$!!!!!$!!!!!!!!!!!!!!!!!!!!!!! !!! !!!! oŽªæõúüúýúýúûüüüúýúýúýýþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õèט#                                                                                                                                                                                                                                                                                                      ZÓÙòóó÷óúóóúóú÷ó÷óóúóóóüüÿþýþþþþþýþýýýýýýýýõÚª¢}Ž~}~~}~~~~~¡~}}~}}}~}}~}~~}}}~}‘€‘‘‘}~}}~‘~~‘¡~~‘¡~}~‘¡‘‘~}~¡¡‘}~¡¡¡‘‘¡‘~~~~~~~¡‘€¡‘~¡‘‘¡¡‘¡¡‘~~~~‘¡‘‘¡‘¡¡¡¡¡¡‘~~¡¢‘‘¡‘¡‘~‘‘‘¡¡‘‘~~‘¡‘‘¡‘¡‘‘‘‘¡¡‘‘}~‘‘~~~‘‘‘¡¡~~~¡‘‘¡¡~¡‘‘‘~~~}~}~¡‘‘¡‘~‘~~~¡~~~¡¡¡~~~}~~‘¡‘}}~~‘‘‘‘~}}~‘¡‘~‘‘}}}}~‘~}}~}}}}}}~~~~~~}~}}}~‘}}~~}}~~}}}~~~}|}}}}}~~~}|s}}}}~}}~}}s}}p}|}}rp}}|p}}vvpp|}p|}pvvpp||v|ppp}}|||||vpp|pppv|pp|vppp|pppvvpvppoppvppppvvpllopopoppppplllplpoolloppplooppllpolllllllllllClolllllllCllllllllCClllllllllllC>??ClllllCCCCCClll>Cl>>?>>>CCl?=?C>>CCC>>C===C==>CC==>>==>>=>>=>>C==>============!==========$$=!===$====!===$!!===$!!==$!===!!$!!!!! !$!!!!!!!!!!! !!!!!!!!!!! !     ?pŽ¢Óèúýúýúüüüûúýúýúüúüýÿü÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õàÓz                                                                                                                                                                                                                                                                                                   ;ž×èóúóúóó÷úóóóóúóúóó÷úüþÿþþýýýýýýþýýýþýýýü謎Ž}}‘}}~~}}~}~~~~~~~~~~}~}~‘~}~~~~~‘~~~~}~~~‘‘~~‘‘¡‘~~~~~~‘‘~~¡¡~~~~‘‘~¡¡‘~‘¡‘‘‘~¡¡~‘‘‘‘¡¡~~‘¡‘¡‘~‘¡¡‘‘‘‘¡¡~~¡¡‘~¡¡¡‘¡‘¡¡‘¡‘‘‘‘¡‘~‘‘‘¡¡¡¡‘¡¡~~¡‘¡‘¡¡‘‘‘~‘‘‘‘‘‘¡¡¡~¡¡‘‘~}¡¡‘‘~~‘¡~~~‘¡~~~~‘‘~~‘~~‘~‘~‘~~~¡‘}~~}~~~~‘~~}~~~~}~}~~}~~~}~~~}~~~}}}~}~}}~~}}}}}}~~}}}~}}}r}}~~}}}}}}r|}~~}}s}}}||}s|}|||v}}|v}}rp}}}}}p|}vp||p}}p|v}}}pp|}ppv}||vppvppvvvpp|vpppppppvpppvppppppppopppppplppppplpppllppllplpoolpplllloplllllvlllClllllllolClllllllCllClolllCCClllCCCCCCCCCCCC?CCClC>?CCCC>>>?CA>>CC>>>>>=Cl>=>C>>>=>=>C>=>>>==>=>>=>==>==>=====>==============$========$$=$===$$!!!==$!$=!!$!!$!!!=$!!!$!!!!!!!!$!!!!!$!!!!!! ! !!!!    ?q’æ÷ýúüûüúüüúýúýúýúýýþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òàÇ_                                                                                                                                                                                                                                                                                                             "˜×èó÷óóóú÷óóúóú÷óóóúóóüüÿþþþþþþþþþýýýýýýýú暎}s}}~}~~~}}}~~}}‘‘~~~~~~~~‘¡~~‘‘‘~~~‘‘}~‘~~‘€¡‘~¡¡‘‘¡‘‘‘~~}~‘¡~‘‘‘‘~~~‘‘‘¡¡‘‘‘¡¡‘¡¡~~‘¡‘~~~~~~¡‘‘~~~~¡¢¡¡‘‘‘‘~~~~‘‘~‘‘‘~¡¡¡¢¡¡¡¡¡¡¡~‘¡¡¡¡~~‘¡¢¡‘¡¡‘¡¡~‘¡‘¡¡¡¡¡¡¡~}~‘¡¡‘~¡¡‘¡‘‘¡¡}~‘¡¡‘~‘¡¡~~‘‘~~~~~‘~~~~~~‘‘~¡‘‘~}~~}~‘~~~¡~~}}}}~~}~~~}~}~~~‘~~~~~}}}~~}}}~~}}~}}}}~}}~~}}}}}~~}}}}|v|vv~~}}|p}~}pv||}||p}}p|}}}vv}}}|}}pp||}|v}}}vs}}|pp}}}pp|}|||vpppppppv|ppvvpppppvpppoppvpppoopppppplopppppopplopvpplllopoloolllovoopollllllllpll?ClllllCClClCllClllC?C?>lllll???>>>CClC>?CCC?>CClC>CCCC>>>>>C>>=>>>>C>=>>=======C>=>A>===>===A>>==>=====>>==>=====>==!===$======$======$==!!!==!!$$$$!!!=!$=$$!!=!!!!!$!! !!!!!!!!!!!!!!!!!! !  m}’Öõýúüúýúûüüûúýúüúüýÿú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÚB                                                                                                                                                                                                                                                                                           zÓàò÷óúóúóóúóó÷óó÷úóó÷üüÿþýþþþþýýýýþþýýþýõÚ’Ž~}~}}~~}}~}~~~~}}~‘~~}}~~}~}~‘~~~}~~}~‘}}‘¡~~~~~~‘¡~}‘‘‘}~~~~¡¡~~~~¡¡‘~‘¡‘‘~~~‘¡¡‘‘‘‘‘¡‘‘¡~¡‘¡¡‘‘‘‘¡‘‘~‘¡‘~‘¡¢‘~‘‘‘‘‘¡‘‘‘~‘¡‘‘¡¡‘‘¡‘‘‘¡‘~‘¡‘‘‘¡¡‘~‘¡~¡¡‘‘~‘¡¡~‘‘‘‘‘‘‘‘‘¡¡‘‘~‘‘~‘‘‘‘~‘‘~~‘‘¡‘‘‘~~‘‘~‘‘}~~~~~~~~~~~~}~~~~~~~~}}~}~~}~~~~~~~~}~~~}~~}}}}}}}}~}}}}}s}s}}}}}}}rv}}}}}|}}}}}}vp}~|}}p}}}p|||pv}|v|}vrv}}pppp|}pp|}pvv|vpp||vv|v|vppvppppppvpppoppvppppppoppplpppoovpppllpopplollpoloopllpvlllllllllllllolClllllCCllllllCllllCllCCClllC>ClC?CCllC>CCCCC??C>>CCC>?>>CC>=>>C>>C>=>C>=>>>>>==?>==>=>>>===>>=======>===>=======$===$=========$$==$!==$$!=!!$$!!$!9=!!!=!!!!!!$!!$!!!!!!! !!!!!!!!!!!!!!!!!!! jsŸ¬èúûüúýüúúüüúýúýúýýþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷èÓ”                                                                                                                                                                                                                                                                                                               @ÇÙòúó÷óóóúóóúó÷óúóóúóúüÿþþþþþþþþþþþýýþýüò¬¢~~~}}}}}~}}}~~~}}}}~}}}}}}}~‘~}~~}}‘‘~~}}~~}~‘~~‘‘‘}~‘‘~}~}~‘‘¡~~~~~€‘~~~~¡‘~}~¡‘~‘¡¡‘‘¡‘~‘¡¡¡‘~¡‘‘‘‘¡¡¡‘¡¡‘¡¡¡¡‘~‘~‘¡‘‘¡¦¡~‘~~‘‘¡¡~~‘¡¡‘~~‘¡‘~~~¡¡‘~‘¡¢‘‘‘‘~‘‘¡¢¡¡~‘¡¡‘~~~~~‘‘‘¡~~‘¡¡¡‘~‘¡‘~‘‘¡¡¡~‘~‘¢¡¡‘¡‘~~~¡¡‘¡‘‘~~~~~‘}‘¡¡~~~~‘‘‘~‘‘~~}€‘~~}}~‘~}~~~}~~~~~~~}r}}}}}}~}}~~}}}}|}~~}}|}}|}r|}}}}~s|}~pp}~vr}pp|}}ppvp}}p}}}vv}|pp}vpv||v|v|pp|ppv|}|pppppppppvv|pppppppppppovvpppoopppppllpppololllvpllllllloppooollllllpllpllCllClllllCClllllllllCCCCClCCC?CC?llCCllCl?>?C>CC?>>>>>ll?>>ClC>>=?CC>>>>>CC>>>C>>=>=>>=>=>>=====>========>===========$==$$==$====$!===!!$!!$===$!!!$!!$$!!!!$!!!$!!!$!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!! !?q’æúûüúúýüûúüûúýúüüþþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õàÓx                                                                                                                                                                                                                                                                                                            ”Ùèóóóúóúóó÷úóóúóóúóóúüÿþþþþþþþþþýýýþþýü몢Ž}}~}}~~}~}}~~~~}}~~~~~}~~~~~~}~~~‘~~~~~~~~‘‘~~‘~‘¡~~~~~~~~~‘‘‘‘‘~‘¡‘~~‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘~‘¡‘¡¡‘‘¡‘‘‘¢¡¡‘‘¡‘~‘¡‘¡~~¡‘‘‘¡¡‘‘~¡¡‘¡¡¡¡‘¡~‘‘‘¡¡~~¡¡¡¡‘~‘¡¡¡‘‘‘~‘¡¡¡¡‘‘‘‘‘‘~‘‘‘‘‘‘‘‘‘‘‘¡~~¡¡‘‘‘‘‘‘‘‘‘~¡‘~‘¢‘~~‘‘~~‘‘~~‘‘~~~~~‘~}‘‘~}~}~~~~~~~~}~~~~}}~~~‘}}~~}}}}~}~}~~}}}}}~}~~}}~~r}~|}~~}r}}}}}v~~}|}}}p}}}p}}|}v|}||||v}}|pp}|}r}}vp}}pprvv}|}ppvp||vppvppppp|vppvp|vp|pppppppppppppollpvppolppppoopolpolpppllpplplplllllllllllolllllllpollCllllllllCC?CClCClllCC??ClC?CCllC?CCCCC??CC>>CC>>?>CCC?>?>?>=>>?C>>>>>=>>>=>==>>>>==>=>>====>>======>==$============$====$=!$$$=$==$$$=!$==$!$!$!$!$=$!!!!!!!!!!!!!!!$!!! !!!!!!!! !!!!!!!! !!oŽ’Ú÷üüýúûüüûüüúýúûüþþú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷òÙB                                                                                                                                                                                                                                                                                                  ]Óàóóú÷óóóú÷óóúóóú÷óóúüÿÿþþþþþþþþþþþþýþú楒 }}~}}}~}~~}~}‘‘~~}~~‘~~~~‘‘‘~}}}~‘‘‘‘}}~¡¡‘‘¡¡‘‘‘}~‘~~}~~~~‘¡‘‘¡¡‘¢¡‘‘¡¡‘¡¢¡¡¡¡¡‘‘‘‘‘‘‘¡~¡¡¡¡¡‘‘¡‘‘¡¡‘‘¡~~¡¡‘‘~‘¡¡¡‘‘~¡¡¡¡¢¡‘~~~¡‘‘‘‘‘‘~~‘¡¡‘¡‘¡¡¡‘‘‘¡‘‘‘¡¡‘¡‘¡¡‘¡‘‘~~‘‘¡¡¡¡‘‘‘‘¡‘‘~~~‘¡¡‘‘‘‘~~‘‘~‘¡‘‘‘~}}~‘‘‘‘}~‘}}~~~}~‘~}~~}~}‘~~~~}}~~~}~~}}}~~}~‘‘~~}~}}}}}|}}~}}s}~~~~}}~}}v}‘}}|}}||}}r}}}~€}}}}}pr}}pp}r}}}}|vpr}}}p}|vpv}}}pp|}}}vpvvr}p}pp||pppppppppppp||vp}vppvpopopvvplllpplpppplpppvppoppplllppvppvpollllllllllllllllllpllpolllllolCCllCCl??CC?CClllCCCCCC??CCCCCCCClClC?>>>C?>>>CCCClC>>>>>=CCC>>?==>>>?>>>=CAC>=>=>A>>=>>>=>=======>====>===>>======$=!!=!=!$=$$==!==!===$!!$=$!===$=$!$!!!!!!!!=!!!!!!!!!! ! !!!!!!! !lŽÚõûúüüúüüûúýúüüüüþýú÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷èÓ”                                                                                                                                                                                                                                                                                                          ;žÙñó÷óóúóúóóúóó÷úóó÷úüÿþýþþþþþþþþþþýýþúæª}~~}}~~}~~}}}~}~~}~}}~~~}~~~~~‘~‘~}~~~¡~}}‘‘~~‘‘~~~‘~~~‘¡~}¡‘~~‘¢¡~‘¡¡~¡¡‘‘‘¡¡~~¡‘¡‘‘‘~‘¡‘‘‘¡‘¡‘‘‘‘‘¡‘‘¡¡‘‘‘‘¡¡¡¡~‘‘¡~‘¡¡¡¡¡‘‘‘‘¡¡¡¡¡¡‘‘‘‘¡‘¡‘‘¡¡‘¡~‘‘¡¡¡‘¡~‘‘‘¡¡‘‘‘‘‘‘~¡¡‘‘‘‘~¡‘‘‘~~¡‘¡‘‘¡¡‘~‘¡‘}¡‘‘‘~~~~‘‘~}¡¡}~‘‘‘‘~~‘~~~~~~~‘~}~~~~~~~~~~~~~~~~~~~}}~~~~}}}}}}~}}}~~}~}}}}|}~}}}}}}}}}v}rv‘€}r}}}}}}}}}}}}v}}p}p|~}rv}}pp||||pp}}}|pp|pvvv}ppv}pppv|pv|vppppppvvpppppopppppoppplppppplppploppooppllpplplppplllplllolllllllllllolplllCllloolCllCllCllllllllC?CCC?CCClCCCCC?C?ClC>?>>CC>>>>>>CC>=?C?C>>?>>>>>>C>=>>==>>=>=>=>=>========>=======>=!==========!====$$$=====!!==$$!!==$$!!$=$!=!!!!!=!!!$!!!!!!!!!!!! !!! !!!!!!!!!!!!! ?s’Öõüüúýúûüüúýúûüúýþý÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷õàÇ]                                                                                                                                                                                                                                                                                         ƒ×àó÷óú÷óóó÷÷óóúóóóúóüüÿþþþþþþþþþþþþþþúäª}}~}}~~~}}}}}}}}}}}}~~~}~‘}}}}~‘¡~}‘~‘~}}~}~~~~}~}~~~~‘¡~~~‘‘¡‘~}~~~}~‘¡‘‘‘‘‘~~~~~‘¡¡~~¡¡¡¡‘‘‘‘~~‘‘¡‘~~~¡¡‘¡‘¡‘‘¡¡¡¡¡¡¡¡¡£¡‘¡¡‘‘¡‘~~¡¡¡¡¢¢¡¡¢¢¢¡¡‘‘¡~¡¡‘‘¡¡¡~‘¡¡¡¡¡‘~‘‘¡¡‘‘¡¡¡¡‘‘‘‘¡¡‘~¡¡‘~‘‘‘‘‘‘¡‘‘¡~~‘¡¡‘~~‘‘~}}~‘~~‘‘~~¡¡¡‘‘‘‘‘‘‘‘‘~}}}~~‘‘}¡‘~}~}~~‘}}}~}~‘‘‘¡~~}}}}~}}~}~~}s}}||}}s}}}}}}r}}}}‘}}|}rp}}}s}}}}}vr}v|}}}}v|p}}ppvv}p||}}||pppppp}ppp|}}|v|v|}|v|ppppvpppvvppp}|poppppppvppppvpplllppopplllllllllpoolllllolloopllllllvvll?Cl?llllCClllllllllllllCC?CllCllC???CC?>>>>>>>CCClC?>?>>=>>>>>CCCA>>?>>>CC>>=>==========>>=>==>=====>>==>====$$=====$$!$==!====!!====!!!!!!==!=$!!$!!!!$!!=!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !>}¢Óõûüüüüûúýúüüúüüýþý÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷èÙ;                                                                                                                                                                                                                                                                                                         BÊÙòúó÷óó÷úó÷óúóó÷÷÷óúüÿþþþþþþþþþþþþþþúÚ¢ Ž}~}}€~}~}}}~~~}~~}}~~~~}~~}~~~~‘~}~¡~~~}}~~¡¡~~}~¡~~‘‘~}‘¡‘~~~~‘‘‘~~‘‘‘¡¡‘‘‘‘‘‘¡¡~‘‘¡‘‘¡¡‘‘‘¢¡‘‘‘‘¡¡¡¡‘‘¡¡¡‘¡¡¡‘‘‘¡¡¡‘‘¡‘¡‘‘¡¡¡¡¡¡‘¡¡‘‘‘¡¡‘‘¡¡~¡¡‘‘‘¡‘¡‘‘¡¡~‘¡‘‘‘¡¡¡¡‘¡‘‘‘‘¡~~¡‘‘‘¡‘‘‘‘‘‘‘‘¡~‘‘‘~‘‘‘~~~~~‘‘‘‘‘~~~~~‘‘~‘‘~}~~~}¡}~‘}}~}~~‘‘}~}~~‘}}~‘~}}}~}~}}~}}}}}}}}}}}}}}}~}}}}}|}}}}}}}}}}}}|}}}}s||p}}}}}||v||v}r}|v||}pp|v}v||}p}pppv}pp|v|vpppppppvpppvpppvvpppvolppvvppoppoopolovplplopplolllllpllopollplllllllllplllllllllCCllllCClllllllllCCClCCCCllCClCCCCC>>>C>?C?CC>C??>>>>?>>>CCA>>C>=>C>=>>>=>C>=>=>==>>===>======>>===>===$=======$=====$===$====$$$$$$$$=$!=!$!!!$!!!!!!$=!!!!!!!!!!!!!!!!!!!! ! !!!!!!  ?s¬òúûüúüüúýúûüüúüýþú÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷÷÷æÓx                                                                                                                                                                                                                                                                                               ˜×èóóó÷óúóóúó÷óúóúóóúüÿýÿþþþþþþþþþþþþúÚ’Ž~~~~~~~~}~}~~~}}~~~~~}~}}¡‘~‘‘~}}‘~}~~~}¡¢‘}¡¡‘‘‘~}‘‘~¡¡¡‘‘‘¡¡‘‘~~~~~‘¡‘‘¡¢¡‘‘~~‘¡~~‘¡¡~¡¡‘¡¢¢¡‘¡‘¡¡¡¡¡¡‘¡¡‘‘‘‘‘~¡‘¡¢¡‘~¡¡‘¡¡‘~~¡‘~~‘¡¡¡¡¡¡¡¡~~‘¡‘¡¡‘¡‘~~‘‘¡¡~~¡‘‘‘‘‘‘‘¡‘~~‘‘¡~‘~¡‘~~~‘‘‘‘‘~}~‘~‘¡‘~~~}~‘‘‘~~~}~~}~}~‘~~~~~~‘‘~}}}}}~~}~~‘¡~}}~~}}}}}}}~}~}}~~}}}|}}~~~~}}~~~~}}~~}}p}~}}}v}}r|vr}~}}}}}}}}p}}|}p}pp}v|}}||pv|}}}}|r}}r}|ppv|ppppp|vppp|}vvpppvpp|vppppplolppplpolloppllovpooppolllppllpollpplllllllllllllllllllllollllllC?lllllllC???ClCC>CllllCCC??>?CCCCC?>>CCCCCC>>?CCC>>>CACCC>>C>=>>=>=CCC>==>>==>=====>C>=>============A>====A====$!$=$==!=====$===!$!$!!!!!$=$!!$=$!!!!!!!=!!!!!!$!!!$!!!! !!!! !!!! =q¬õüüüûúýúüüüûüüüþþú÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ñÚžY                                                                                                                                                                                                                                                                                            _×àóúóúóúóóúóóúóó÷óóúüÿþþþþþþþþþþþþþþúæ¥}}~}}~}}~}}}~}~~~~‘‘}}‘}}~~‘~}‘~}~~~~~~~~~~~‘‘~‘‘‘~~‘‘~~‘‘‘¡~}¡¡¡‘‘~‘¡‘‘‘~‘~‘‘‘‘¡¡‘‘‘‘¡¡~¡¡~‘¡‘~¡‘¡¡‘¡¡¡¡~‘¡¡‘‘‘‘¡¡‘¡‘¡‘‘¡¡¡¡‘~¡¡¡‘¡~¡¡¡¡¡~‘‘¡¡‘¡¡¡‘¡¡¡‘¡¢‘‘‘‘¡‘‘‘¡‘~‘¡‘‘‘¡‘~¡¡‘‘¡¡~‘¡¡‘‘‘‘¡¡~~¡¡‘~~‘‘¡~‘‘}‘‘‘¡‘~~~~‘~~¡~~~~~~~~~~‘~~~}~‘‘~~}~~}}~~~~~~~~~~~~}}~~}}}~}}~~}}}}~}}}}}}}}~~}}~}}}}}~}}}}}~}}}p}}}v}|}}}|}||}|}|}}p|}|p|}}||}}pp||}}}pvvvv|}vvvpp}vpv|vpppp}|ppppppppv|ppppppplpvppppppppopllpppopopllpplllplllplllllllolllllllllllllllCllllllClllClllCClClCCCCClClCCCCC?ClCCClC?C>?>?CCCC>>Cl?C>>>C>>>>>>>=>>>C>>>CC==AC==?>>C==>>========================$==$=====!!====!!=$$=!!$!!$!$!=$!!!!!!$!!=!!!!!$!!!!!!!!!!!!!!  ! !!!  =s’Óõúýüüúýúûüüúýúýþý÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷÷ú÷è׃                                                                                                                              !                                                                                                                                                                  žÙòóóúóóóúóóúóóóúóúóüüÿþÿþþþþþþþþþþþý檟}}}}}|}}}~~~~~~}~~}~‘¡‘‘¡‘¡‘~}~~~}~‘¡‘‘‘‘‘~~‘~~¡‘}~~}}~¡¡‘¡‘~~~~‘¡~‘¡‘‘‘¡¡‘‘‘‘‘¡¡‘‘~~~‘¡¡‘‘¡~~‘¡¡¢¡¡¡~‘~~¡¡¡~~¡¡‘¡¡¡‘¡¡¡‘‘¡~¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘~¡‘~~~¡¡‘‘¡¡¡~¡¡¡‘‘‘‘¡¡‘‘~‘¡¡¡¡¡¡‘~~~‘¡¡¡‘~~¡¡¡~‘¡‘~‘¡‘~~~‘~~~~}‘¡}¡¡‘¡~‘‘~~‘¡‘~~~‘~~¡‘~~~}~~~~~¡¡¡}~~}~}}}}}~¡‘Ÿ~}}}~~}}r}~~}}~~~~}}~}}}r|}}~}r|}|s}ps}}~}}rv|p}|}}v|pp}vrpv|||vp|}}}v||p}ppppv|ppv|}}|ppv}}}ppppppp}vppppppppvvvvpppppppvvppvpppppppollolopppppplpplllolpplll?lppppllllllolpllClllCllCCClCCCCClllllC?CllllC?CllC?ClCCCClCCCCC>C>?l>>CC?CC>=>=====>C>>>C>A>==>=>>C>>CAC>=======>>>>=>===========$$$!========$!=$!==!==$$===!$$$!$=!!!!!!=!!!!!!!!=!!!!!!!! !! !!!!!! !!  =qÖ÷úûúýúüüûúýúüúýÿý÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷÷õàÊZ                                                                                                                               !YT!                                                                                                                                                             ‚Ùæó÷÷ó÷úóó÷úóóúóó÷óúýÿÿýþþþþþþþþþþþýæª}}}}}}}}}}~}~~~€}}‘~~~~~~~‘~‘~}~~~~~~~‘‘‘‘~‘~~‘‘~~~‘~}‘~~¡~~‘‘‘‘‘‘‘‘¡‘~‘¡¡~¡‘¡¡‘‘‘‘‘¡¡‘‘‘¡¡‘¡¡¡¡¡~‘‘‘‘¡‘¡‘‘¡¡‘¡¡‘¡¡‘¡¡‘¡¡¡¡¡‘¡‘‘‘¡¡‘‘¢¡¡¡¡¡¡‘¡¡¡¡‘‘¡¡¡¡~¡¡‘¡¡‘¡¡¡‘‘‘‘‘‘¡¡¢¡‘‘‘~~¡¡‘‘‘‘¡‘‘‘‘‘¡¡‘‘‘‘‘~‘~‘~‘¡‘}~¡¡‘~‘~‘~~~~‘~~~¡~~~~~~~~~~~~‘‘‘€}~~}~~}}}}~~‘‘~}}}~~~}}}}}~}}}~~~}}}}}}|}}~~}}}}}}}}|}r}}}}w|}v}~}s|p}}}pv}}||}||v}|pp}pv||}p}pppp}}prvp|||vrpppppvvpvvppp|pppppppppvpopppppvpoppppppooplpppppoollpolplllvlllllplpllllllllollllllCClllllClCCCClllllC?llllCCCClCC>CCClCCC?ClC>?CC?CCAC?>>?>>>>>>>>>>>>A>==C>=>>>=>>C=>===>=====>>======>=======$$======$$======$$$$!$==!!$=!!$$!$=!$!!!!!!$!!!!!!!!!!!! !!!!!! ! !!    !!!=s’Öúüüúýúûüüúýúýúýýú÷÷÷ú÷ú÷ú÷÷÷ú÷÷úú÷èÙ”                                                                                                                      !Y‚_T!                                                                                                                                                                  žÙòóóóúóóóúóóóúóóúó÷üÿþþþþþþÿþþþþþþþ蚎}~}}~~}~}~}}}}~}}~~}}‘~}}~}}~}}~~~~~~~‘~~~}‘¡¡‘‘~~~~}}‘¡¡¡‘¡}~~~‘¡¡‘~~~‘~~~~~‘¡¡‘~‘‘‘‘~~¡‘‘¡¡¡¢£¡¡‘~¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡‘‘‘‘‘~¡¢¡¡¡‘‘¡¡¡‘¡¡¡¡‘¡¡~~~~¡¡£¡¡¢¡¡¡¢¡¡¢¡¢¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘‘‘¡‘¡‘‘~¡¡~~‘¡¡‘‘~‘¡‘¡~¡¡}¡‘}~~¡‘~~~~‘~~‘‘}~‘~}}}~‘}~‘‘€‘~~~~~~~~~}~~}~}~~}}}}}}}~}}~}}~~~~}}rs}~~}}}}}~~}p}}~~~}vv}}}}}r}p}~|vvrp}}p}}}}v|}|pp}|v|vvv|||pp||pppvv|ppppvv|}|vppppppppvppvpoopppppppllppvvplopppovvppolppooooollpopllovooplpllllllllllllllCCll?looollllllllllollllllC??CllCC????ClC>>>>>CC>CC??>>>>>>>>C>>>>>CC>==>>>=>>=>>C==========>==>===>=====>>======!$=======!!!!===$=!!=!$$!!!!===!!!$!!!!$!!!$!===!!!!!!!!!!!!!!!!!! !!!! !!! !!!!!!!!!=}’Úûúýúüüûúýúýúüýþþú÷÷÷÷÷÷÷÷ú÷÷úú÷÷úõàÊ]                                                                                                                           !bZ                                                                                                                                                                  x׿ó÷÷úóóúóó÷÷÷ó÷úóóüÿÿüÿþÿþþþþþþþþþõªŽs~~}}~~}}}~~‘~}}~~~~}}}~€~~~~~~}~~~~~~~~}~‘‘~~}~‘¡‘~~~~~~¡¡‘‘~~~~‘¡‘‘~‘‘‘‘~~~¡¡‘‘‘‘¡‘‘¡¡‘‘¡¡¡¡¡‘‘~‘¡‘‘¡¡¡¡‘¡¡¡~‘£¡~‘¡¡‘‘¡‘¡¡¡¡‘¡¡¡¡¦‘‘¡¡¡‘‘‘‘¡¡¡¡¢¡¡¡¡‘‘¢¢¡¡‘‘¡¡‘‘¡‘¡¡¡‘¡¡¡¡¡¡¡¡¡‘‘¡‘‘‘‘¡‘¡¡¡‘~~¡‘‘¡‘‘‘‘‘~¡¡‘‘‘‘‘‘~~‘‘~¡‘~~‘‘~~~~‘~~¡‘~~~~~~~~‘~‘}~~~}~~~}}}}~~~~}~}~~}}~}}}~~}~}~}~}}}}}}}}}}}}}}}s}}~~}}|r}}}}}}}p}~}p}}}p}}}}}|p}v|v}||p}p}}pv|p||vpppv}|ppvppv|vpppp|vppppppp|ppppppppppolppppplpvppppplolppplollplpvlolllloooolllllllllllplllllllCCllllllCCl?lllllClll?ClCCCCCCCCC>CCCC???>>CCC??C>>>>CC>>CC>>>>CC>=>?>>>==>=C=>=>=>====>==>====>=======A====$====>A==$==$=$===$!$==!$!!!$!!$=!!$!!$!!!=!!!!!$!!!! !!!!!!!!!!!!!!!! !!! !!!    ?’àüúýúûüüúýúýúûüÿü÷ú÷ú÷ú÷ú÷÷ú÷÷úú÷úèÚ”                                                                                                                   @_Y@                                                                                                                                                             žÙòúóóóóúóóúóúó÷óóúóüÿýÿýþþþÿþþþþþþ÷Õ}}~~}}}~~~}}}}}}}~~~‘~~}}}}}}}}~~~~‘‘‘~~~‘‘‘‘~~~~‘‘‘‘‘~‘~¡¡~~‘¡‘¡‘‘¡¡¡‘‘¡¡‘‘¡‘¡¡¡‘¡‘‘‘‘‘¡¢¡¡‘¡‘¡‘~~‘¡‘‘¡~‘¡¡¡¡¡¡~~¡¡¡¢¢¢¡‘¡‘¡¡¡¡¡¢¡¡¡¡‘‘¢¡‘‘¡¡‘~‘‘‘‘¡¡‘¡¡‘‘¡¡¡¢¡¡¡¡‘‘‘¡¡‘‘‘‘‘~‘¡¡€¡¡‘‘~~¡‘‘¡¡¡‘~~¡¡¡¡¡‘‘‘¡‘~~‘¡¡~~~¡¡¡‘~~~‘‘‘}~~‘¡‘~~~‘‘~~}}~¡‘~}~~~}~~~~}~~~‘‘~~}}}~~~~}~~~}}~}~}}}}}~~}}~}~~}}|rv|}|}}}}}}vr}~}~~pv}}}~~}p|}rpps}}~}|}}rpp}}}}|pp|}pp|pv}||}}}vpvppvvpp}pp|p}pvpppvvpppopvvppopppopppppvplppplpllollpppollllllllllllooplllllppolllllllllllCCllllllClCCCCC?ClCCCC??lll?>???CC?>>?CCCCC>?>>CC=>=AC>>>>>===C>>C>>========>A>=>=>>>===>>>==================$$===========!$=====$==$!$$!!$!!!!!==$!!!!!!!!!!!!!!!!!!!!!!!!! !! !!  !ošëýúüüûúýúüúüüüýþú÷÷÷÷÷÷÷÷ú÷úú÷÷ú÷õàÊY                                                                                                                            !T                                                                                                                                                       _Ùæóó÷ú÷÷ó÷úóóóóúóúóüÿþþþþÿþþþþþÿýþüä¢}s}~~|s~~}~~}}~}~~~}~‘~}~~}}~~‘~‘~}‘~~‘~¡‘‘~~}~¡¡~‘~~‘‘‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘¡‘¡¡¡¡‘‘~¡¡~‘¡¡¡¡‘‘¡‘‘‘‘¡‘‘¡¡‘~‘¡‘¡¡‘‘‘¡‘¡¡‘‘¡¡¢¡‘~¡¡‘‘¡¡¡¡‘¡¡‘¡¡¡‘‘¡¡¡¡‘¡¡‘‘‘¡¡‘¡¡¡¡‘‘¡¡‘¡‘¡¢¡¡¡¡‘¡¡¡‘¡‘‘‘¡¡¡‘¡‘¡‘~~‘‘¡¡¡¡‘~~~¡£‘‘‘¡‘~‘¡‘~~‘‘¡‘~‘‘¡¡~~~~‘‘~‘~‘‘‘~~~‘‘~~}~¡‘~}}~~‘~}~~~~~~~~~~}~~~~~~}}}~}~~}~}~}}s}~~}}~}~~}|}}}}~}}|||~~}p}}}~}v}}}}}}||}}}pv}}}}|p}}vp}}}}vp|v|}v||pv}pv}||pprvpppppppppvvvpvpvppppppppvvploopppopppvplpppllpppolplpllpllllllplllpovllllllppolllllllllCllllCllllCllCCCCCCl?CCCCCll??CC?>??>>?CC?CCCC>>?C>=>C>>>>>=>>>?>>>AC==>===>>>>=>==>==>=====>=======>==================$===$$$$$$$$$==$!!$=!!$=$!$!$!!!!!!!! !!!!!!!!!!!!!! !!!!!    !!o¬õüúûüüúýúýúûüüþýú÷ú÷ú÷úú÷ú÷÷úú÷úúèÙƒ                                                                                                                                                                                                                                                                              ž×òó÷óóúó÷óóúóú÷óóóúüÿþÿþýÿýÿþþþþþþ襠~}|}~}}~~~~~~‘‘~}~~}~~~~~}~}}}~~~}}}‘¡‘~}~}~¡‘~‘~~~~~‘‘~~~¡¡¡~~~~~‘‘~¡¡¡¡¡¡¡‘‘¡‘‘‘‘‘‘‘‘¡¡¡¡‘¡¡¡~¡¡¡¡¡‘‘‘¡¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡‘¡‘‘~¡¡‘¡¡‘¡¡¡¡¡¢¡‘‘¡¡‘‘¡¡¡‘¡¡¡¡‘¡¡¡‘‘‘¡‘‘¡¡‘‘¡~¡¡¡¡¡‘¡¡‘~¡¡¡¡‘‘¡‘‘‘‘¡~¡¡‘¡¡‘~~~~‘¡‘‘¡~~~~~‘‘~~~}~~~~‘¡‘~}~¡¡‘~~~‘~~~~~~}~}~~~}~‘‘~}}~~~~~~~~~}}~~}}~~}}~}}}}}}r}~}}}}}}}}|}}|p}}}}vr}}||}p}}}}}}|}vr}pv}}pp|}r}pv|}}p}}vp}}|pppppvv}}|p|||ppvppv|pppppppppppp|vpppoppppllpolovpllvppvppllopppppllppllpolpllllllCllClllllllClCCCCC>lllClllCCCllCCCllCCC>>ClCCCCCCCCC>>CCCC==>lC>>CC>CC>CCCAC>>>=>=>>CC>>====>===========>A===$$=>===========$9!$====!!!!!$!==!!!!=======!!$!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!! !$q’Úúüüüûüúýúüüúüýþý÷÷÷÷ú÷÷ú÷úú÷÷úúúõàÊB                                                                                                                                                                                                                                                                                          _׿ó÷úóúóóúóúóóóóúóúüÿÿþþÿýþþýþþþþþõª}}}}€‘}}~~}~‘~~‘}~‘~~}~~~~‘~~~}~‘~}}~~‘~~~}~¡‘~~~~~~‘‘‘‘‘‘~‘~}¡‘¡¡‘‘~~‘‘‘¡‘~‘‘¡‘¡¢¢‘¡¡‘~¡¡‘‘¡¡‘¡¡¡¢‘~¡¡¡¡¡‘¡‘¡¡‘¡¡¡¡¡¡~¡¡¡¡¡¡¢‘‘¡‘‘¡‘¡¡‘¡¡‘‘¡¡¢¡¡‘‘¡‘¡‘¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡‘¡‘¡¡¡‘¡¡¡‘¡‘‘¡¡¡‘‘‘‘¡¡¡~¡¡‘¡‘‘¡‘‘¡~~¡‘‘¡‘‘‘‘‘~‘‘~~~~~‘‘‘‘~~‘¡~~‘~~}~~~~~~‘}~~~‘~~}}~‘~~}}~‘~~~~~}~‘~}}~~}}~~}s}}~~}}}~}|}s}}~}}}}}}r}}|}}}s}}p}}}}}}}|p|vps}|vv}||}pp}}pp|}p|}}p|vvppp|||vpvvppv|vpppppppoppppvvpvppppooppplopolpvpllvvlppllopploplllpoopollllllllllCClllCllolllll?CCCClClllll?ClClClCCCC>?CCCCCCCCCCCC>=CCC?>>?CC>>CC>>C>>C=>C>>>=>>>=>>>==>=>>=====>=====>=============$$$===!=====$$$$!=$==!!=!!=!!===!!!!=!!$!!!$!!$! !$!!$!!!!!!!!!!!!!!!! >Ž’àüúûüúýúýúûüüýþýú÷÷ú÷úú÷ú÷÷úúúúúúèÙƒ                                                                                                                                                                                                                                                                            žÙòóóóóóú÷óóóúóúóóóúÿþÿþþýÿþÿþÿþÿþúÕ~}}}}~~}}~~}}}~~~}}}~~~}}}~‘~}}~~~‘‘‘~}~~‘‘‘~}~¡‘¡¡¡~~‘‘‘‘‘‘‘¡¡}‘~~~~‘‘‘‘¡¡‘‘‘¡¡¡‘~~‘‘¡¡~¡‘‘¡¡¡‘‘‘~‘¡¡¡~‘¡¡‘¢¦¡¡‘€¡‘¡¡¡~~¡‘¡¡¡¡¡¡¡‘¡¡‘¡¢¡¡¡¡¡¡¡£¡¡¡¡‘¢¡¡¡¡‘¡¡¡¡¢¡‘¡¡¡¡£¡¡‘‘¡¢‘‘¡¡‘¡¢¢¡¡‘¡‘~~¡‘‘¡‘¡¡¡~‘¡¡‘¡¡¡¡‘~~~~~‘¡¡‘‘‘‘‘‘¡¡¡¡~~~‘‘‘‘¡‘~~‘‘~}‘¡‘~‘‘‘‘‘~~}}‘~‘‘~~‘‘~~~~~}~~}~~}}}}}}~~~‘‘}}}}}}~}}|}~~~}}}}r}}~~}}}}}}}}v}}~}}}}}}}~}svr}}v}|}|v||}p|pv}vpr}|pp|}pp|}vrpppvppp}}pppppp||vppv}vpvvppppppopooooppolpvpllplllpplllllpllllllppoolvlllllpoolpplplllllllllllllllCCCCCClCCl?>ClC???CC>?C?CllCCC?C?>>>C>>>?>C?=>C>==>C>>>=>>>====>C===>>=>>>>==>==>>====>=>=>================!==!$!$$=====!$$!===$!!!!=!!!!!!=$!!!$$!!!!==!!!!!!!!!!!!!!!!!! ?šëüüúýúýúüüûúúýÿý÷ú÷ú÷÷ú÷úú÷úúúúúõàÇB                                                                                                                                                                                                                                                                                     _Óßó÷÷úóúóóúóúóóóúóúüÿþþþÿþþÿýþþþýýæ’ŽŽ}}}}}}~}}}}}}}~~~~~~}}}}~~~~}~~~~€‘~~~}‘~~‘¡~~‘~‘‘‘}}‘‘~~‘‘‘‘‘‘~‘‘~~‘‘‘¡¡‘‘‘¡¡¡¡‘‘‘‘¡‘‘‘‘¡¡¡¡‘¡Ÿ¡¡‘‘¡¡‘‘¡¢¡‘‘¡¡‘‘¡‘¡‘¡¡¡¢‘‘¡‘¡¡¡‘¡¡¡¡‘¡¡¡¡‘¡‘¡£¡¡¡¡¡¡¡‘¡¡¡¡£‘‘¢¢¡‘¡¡¡¡¡¡¡~¡¡¡¡¡¡‘‘¡¡¡¡¡‘‘¡‘¡‘¡‘‘‘¡¡~¡¡¡¡‘¡¡‘~~‘¡¡¡‘~‘‘‘~¡¡~‘¡‘‘‘~‘‘¡‘~~~~}¡‘~‘‘‘~~~~~‘~~~~}~‘‘}}~~}~~~~~~}~}~}~}~‘~}}~~}}~~}}~}}}~}}}‘}}}}~}}}~}}}}}r}}}}}}r}}}|v~|vp}}vv||||}}pp}}p}vvvpp}||v}|vvpp}pppv|}pppppv||vppppvvppvpppppppolopploppppllpollppppllppllllllppoloplllllpoloopllollllCllllllllllllCCllCCCCClClC?CCC?C??CCCCC?C?CC>>CC>?>>CC>>>>>>>C>>>>>=>=>>>C>==>>>>>C====>>==>>======>=>$=============$$==$$====!==$$!=$$$==!$!!!$=!$!!!!!$!!!!!!!!!!!!$!!!!!!!!!!!! !!!! o Õúúýúüúýúûüüýúýýú÷ú÷úú÷ú÷÷úúúúúú÷è×z                                                                                                                                                                                                                                                                                ×òóúóóóóúóó÷óóú÷óóúÿÿþÿþÿþþýÿþÿþÿõ¬}}}~~}}}~~~~~‘~‘‘~~~~~~~}}~‘‘‘~¡‘}}~‘¡‘}}¡‘¡‘~~~~~‘}~¡‘¡‘~~¡‘~~‘‘¡‘¡¡‘‘‘¡¡‘~~‘‘‘~~‘¡¡‘‘¡¡~¡£¡¡¡¡‘¡¡¡¡¡‘‘¡¡¡‘~‘¡¡¡¦¢¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡~¡¡¢‘¡¡‘¡‘¡¡~¡¡‘~¡¡¡¡¡¡¡¡¡¡~~‘¡‘‘¡¡¡¡‘¡‘¡¡¡‘¡¡‘‘‘‘‘¡¡¡¡¡¡¡‘¡¡~‘¡¡¡¡‘¡¡‘~~~‘¡¡¡‘¡¡‘¡¢‘‘~~¡¡‘~~‘¡¡¡¡¡~¡‘~~‘¡‘~~~~‘~~~~‘¡‘~}‘‘‘~~~‘‘~~}~~~}~}~~‘‘~~~}}}~~~}~}}~}r}~~~~‘~|}s}}}~~}}}}vr}}s}~}}}}}}}|~}vrp}|}}}rp}}pp}v||}}}vr}}}}pp|vppvpv}}|}v|pp|pppvpvppvppppppppvpppppvvppppvvvppppppppppppppllolopplpvpollllllolllllllllllClllllllCCC??>llllllllllC?CCllllCCCCCCCCC?CCCCC?ClC>>>?CC>>>C?>C>CCCC?CCCC>>>>>==>=>C>=>A>==>=>C>==A>>>======$=====$===$$=======$$====!!!=$!!!!!!!==$!$!!==$==!!!=$!!!!!!!!!!!!=!!! !!!!!!!!!!       =Ž¥àüúýúýúüüúúüüýþýú÷ú÷÷ú÷úúúúúúúúúõàž@                                                                                                                                                                                                                                                                                  ;ÓÙó÷óóúóúóóúóúóóóú÷üÿþþþþþÿþÿýþþþúä¢}}}~~}}}~~}}}~~~~~‘‘€‘~~~‘~~}}~~‘‘~~‘‘~~~~‘‘‘}~‘‘¡‘}~‘~~~~¡‘‘‘~~‘‘~~¡‘‘‘~‘‘‘¡¡‘‘‘‘‘¡~~‘‘¡¡‘‘¡‘‘‘¡¢¡¡¢¡‘¢£¡‘‘‘‘‘¡¡‘‘¡¡‘¡¢¢‘¡¡¡¡¡¡¡‘‘¡¡‘¡¡£¡~‘‘¢¦‘¡¡‘¡¡¡¡¡‘¡¡¡~‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘~‘¡‘‘‘¡¡‘¡‘‘¡¡¡¡¢¡‘~‘¡‘¡¡¡¡¡¡‘‘~‘‘¡¡¡‘¡¡¡¢¡~‘‘‘¡‘‘‘‘‘‘‘‘‘‘~~‘‘‘‘~‘~~~~‘‘~~~¡‘~~}~~~~~~~~~~}~‘~}}}~~}}‘~~~}}}}~~}}}}}~~}}}}}~~}}~}~}}}}}}~~}}|}}}s|}}|vv|}}}||}p|v|}p}}|}|}vv}}|vv||pp||}|v}vpppp|}ppp||pppppp|vvpppvpppppppplv}pppvvplpppplpvppolpllpooppplloolllolloplllllollClolll?llllCCllC?llClllCCC?ClClCll?ClC????CClC?ClCC?>>?C>>>C>?>?CCC>>C?AC>>>A>>==>>C>=A>>=>==>>===>=A=========>=>=$===$=============!=!$==!!$$$!$=$!!$$!!==!!=!!==!!!!!!!!!!!=!!!!!!!!!!!!! ! ! j ªõüúýúýúûüýúûüýþúú÷úú÷ú÷úúúúúúúú÷æÓ_                                                                                                                                                                                                                                                                     zÓèó÷óúóóóúóó÷óóúóóúÿÿþÿþÿþþþýÿþÿþ襟~~~}~~~~~~}~}}}}}}}}}~}~~~€~~}‘‘‘}~¡‘}}~‘~}¡‘¡}~¡¡‘~~~~~‘~~‘~~‘¡¡¡‘‘‘¡¡‘¡‘‘‘‘~‘‘‘¡¡‘‘¡¡¡~‘¡¡‘‘‘~~¡¡¡‘¡~‘¡¡¡¡¢¢¡¡‘‘‘~¡‘‘¡¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡‘‘¡¡¡¢¡¡¡¡‘¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡¡¢‘¡‘¡¡¡¡¡¡¢££¢¡~¡¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡‘¡‘‘¡~~~~‘¡¡¡¡¡‘~~‘‘‘‘‘~‘~¡~~‘~~~‘¡‘‘‘~‘~}~~~~‘‘~~~‘‘‘}}~~~~~~~~~}~‘~¡¡}}}}}}~~}}~}}}~‘~}~~‘}}}}}}}}}}|}}}}}}r}|}}r}}}}}}v}}}|s}}}}}}pp}}}pppp}}}}pvv||vppp}ppvp}}pp}vpp|pppppppplppvvvvppplovplppllpppppllpppppvplopollllllollovollpplollllClpllllllllllllll?llllCClllClllllll??CC?CCCCCC?>>CC?CCC??>CCC>>>>=>>=>>==>>>>>>>>=A>CC==>C>=======>>>>=$=A>=========$==$$====!======$==$!!=$$==$!==$!=$!!!!!!=!!!!!!!!!=$!!!!!!!$!!!!! !! q‘Ùúýúýúüüûúüüüýþý÷ú÷÷ú÷úúúúúúúúúúñÚ”!                                                                                                                                                                                                                                                                    žÙò÷óúóóúóó÷úóúóóúúüÿüÿþÿýÿþÿþþþþúÓŸ}}~~}}}~~~}}~}}~~}~}}~}~}~~~}‘¡‘‘~}~~‘‘}~~‘~~¡‘‘~}~¢¡~~~~}‘~~‘~¡¡‘¡‘‘‘‘‘‘¡‘~¡‘¡¡¡‘‘¡¡‘¡¡¡‘‘¡¡¡¡¡¡‘¡¦¢¡¡‘‘¡~‘‘‘~¡¡¡¦¢¡‘‘¢¡¡‘‘¡‘‘¡¡‘‘¡¡¡£¡‘¡¡¡‘¡‘¡¡¡¡¡¡¢¡‘‘¡£¡¡¡‘¡¡¡¡¡¢¡¡¢¡‘‘¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¡¡‘¡‘‘¡~¡¡‘‘¡‘~~‘¡‘‘¡‘¡‘‘~‘‘~~‘‘¡~~‘~‘¡~~~~‘‘‘‘‘~~~~~~~~‘‘‘~~}~}~~~~~~€~~‘‘‘‘}}~~}~~}}}~}}~}~~~~}~‘‘}}s|}}~~}s}r}}}~}}v}}||}}}}}p~}}}||}}|}}}pp}}|pp}p|}}|}pp||vvp||pp||v}p|vppp|pppppvpppp|pppppppppppoppoooppppllloopvvllppollplplplllpollopoolllllloollllllllllllllCCllllCCCClllllllCCCCClC?lCCC>>Cl>CC?>>CCCC>>?=>?>>>=>>>>A=>>A==CC>>====?>===C===>>====C======$==$================!=$!=$$=$$!=$$!!$=$$!!!!!$!!!!!!!==!!!!! ! !!!$!!!!!! ! !   =Žšèúýúýúûüüüúúüþþú÷úú÷úúúúúúúúúúú÷àÊB                                                                                                                                                                                                                                                                                      @Óàóú÷óóúóóúóóóóúóóúþÿÿþþýÿþýÿþÿþþæ’s}}}~~}}~}~}}~}~~‘~~~}~~}}~~}~¡‘~~~~~¡¡~~‘~~~~~~}¡‘}~‘¡~¡‘‘~¡¡¡¡‘~‘¡‘‘¡‘‘‘‘‘‘~¡¡¡‘‘‘¡¡‘¡‘~‘‘‘¡¡¡¡‘‘‘‘¡¡¡¡¡¡‘‘¡¡¡¢¡‘¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¡£¦¡¡¡¡¡¡¡¢¡‘¡¡¡¡¡¢¢¡¡¡¡¡¡‘¡¡¡¡¢¡¡¡‘¡¢¢¡¡¡‘¡¡¡‘‘‘¡¡¡£¡¡¡¡¡‘¡‘‘‘¡¡¢¡‘¡¢¡¡‘¢¢¡¡¡‘¡‘¡¡‘¡‘~~¡¡‘‘¡¡‘¡‘‘‘‘~~‘¡¢‘‘~~~‘‘‘~‘¡¡¡¡‘‘¡¡‘~~~‘~~~}~}~~‘¡‘~}~~~~}}}}}~~~‘~}}~~}}~}}}}~}}}}}}}|}~~}~~}}}}}}~s|}~}}}}|pspv}|p}}p}}}}p}rp|vrv}|ppppp}}ppv|}}vvrv}pvpppp|pvv|v|p|vvvpvvppppppoppvpppvvpppoppppplllplllpppoppoplll?lplllllllllllllllllollllCllC>?lCClllllllCClCCC>?CC?CC>?CC??CC>C?>>?CC?>C>>>>?>>C>CC>C?=>>==>>=>l>=>=>>=>C>============>================$=====$$!!=!==!===$!==$$$!!!!!=$!!!!!!$!$!!!!!!!!$!!!!!!!!! !! !!!!!!! ! !! ! $p¢­úúýúüüúüûüýúýþýú÷÷úúúúúúúúúúúúúèÓz                                                                                                                                                                                                                                                              ”×èóóó÷÷ó÷úóóúóúóóúüÿÿýÿþÿýÿþÿýþþõ¬}}}}}~~}}~}}}~~}~}~‘‘‘~}}~~~}~¡~~~~‘‘~‘‘~~~‘~}~‘‘}~‘‘~~‘~~‘~‘‘¡¡‘~‘‘¡‘¡~‘¡‘~‘¡¡¡‘¡¡‘¡‘‘¡‘‘¡¡¡‘‘¡¡‘¡‘¡¡¡‘‘¡‘¡¡¡¢¡¡¡¡¡¡¡‘‘¢¡‘‘¡¡‘¡‘¡¡¡‘‘¢¦¢¡¢¡¡¡¡¡¡‘¡¡¡¡¡£¡‘‘¡¡¢¡¡¡¢‘‘¡¡¡¡¡¡¢¢¡¡‘‘¡¡‘¡‘¡‘¡¡¡¡¡¢¡¡¡¡¡¡~‘¡£¡¡¡¡¡¡¡‘‘¡¡¡¡¡¡‘‘‘‘‘¡¢‘‘‘~‘¢¡~¢¡¡¡‘~‘~¡¢‘~~}‘¡¡‘~¡¡¡¡‘~‘¡‘~~~‘~}}}~~}~‘¡‘~}~‘~}}~~}}}~‘~~‘}}~~}}}}}r~~}}}}}}}~}}}~}}~~}}}}}p~~}v}}|p|}}p||}}p|}}}pp}v}|vvv|pppp}}}ppp|}vpp}}pvrvpppp}|pvvpvpv|vvpppppopoopppppv}ppvppop}vllololllllpppopplllllllllllCllllllCllllllllllllClCCCCllllllC?lCCCCC?lC>CC?CC?>CCCC>?>>>>C?>>??>>?>>>>CCCC=>>>>>A>=>C>=?>>>>=>>===>>=====================>==$======$$===!$!====$=$!=!!!$!$!=!!!!!!!$!!!!!!!!!!!!!! !!!!! !!!!!!!! !!!!!  =Ž¢æúüüûúüýüúýúýýýúúúúúúúúúúúúúúúúòÚ›;                                                                                                                                                                                                                                                           ÓÙóúóúóóúóóóúóóóúóúþÿþþýÿþÿþýÿþÿþæ¢}~~}s}}~}}~~}}}~~~~~}~~~~‘¡~}~~~~}~~‘~}~‘~~¡¡‘¡‘‘‘‘‘¡‘‘~‘¡‘‘~‘~‘¡‘‘~‘~~¡¡¡¡¡‘‘¡‘¡¡¡‘‘¡¡¡¡¡¡¡‘¡¡¡¡‘¡~¡¡¡¡¡¡¡¡‘~‘¡¡‘¡¡¡¡¡¡¡¢¡¢£¡¡‘¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡¡¢¡¡¢¡¡¡¡¡‘‘¡¡¡‘¡¡¡¡¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡¡¡¡¡¡‘‘‘~‘¡¡¡‘¡¡‘¡¢¡¡¡¢‘~‘¡‘‘¢¡~‘¢¡¡‘~¡¡¡~~~~¢¡~~¡~‘‘‘¡~~~‘‘~~}~~~~‘~‘‘~‘¡~‘‘~~~~~~~‘}~}‘~}}~~}|}~~~~~}}}}}}}s}}~~s}}}}|}}}|~~}p}}}p}¡}}|}}|}vrv}rp}}rpp}}}}}}}}r}||}pp|pp}}pv|vvvvpp}pp}}vp|vrvppppppvvpppppvvpoloppllpollppllppppppolollllplpopplplplllloopollllllCCllClllllllllllClClC??llllCCllCCCCll??lCClCCCC>>?C>>?CC=>?CCCC>>>=?>>C?CC>=>>>===>>===>>==A>=>>>===>================$==$!==$==$$==!!!$!==!$$=$=$=!!!$!$=!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!    !l ¬úýúüüûúúüúüüýþýúúúúúúúúúúúúúúú÷àÓY                                                                                                                                                                                                                                                     ]Óàóó÷ó÷úóóúóó÷úóó÷üÿÿþÿÿýþþþÿýþþõ¬}~}}}}~}}~~}}~~~‘‘~}}}~~}‘¡~‘‘~~‘~}~~~}~}~‘~~‘‘¡¡‘‘¡¡‘‘¡‘‘~‘‘¡‘~~‘¡‘‘‘~¡‘~~‘‘‘¡‘€¡¡‘~‘¡‘¡¡¡‘¡¡‘¡¢¢¡‘‘‘¡¡¡‘‘‘¡‘‘¡¡¡¡¡¡¡‘¡‘¡¡¡¡¡¡¡‘¡¡‘¡¢¡‘¡¡‘‘¢¢¡‘¡¡¡¡¡¡‘¡£¡‘‘¡¡¡‘‘¡¡¡‘‘¡¡¡¡¡¡¢£¡¡‘¡¡¡¡¡¡¡¡££¡¡‘‘‘¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¢¡¡‘¡¡‘‘¡¡~‘¡‘‘¡¢¡‘‘¡‘‘~~¡¡‘~‘}¡¡‘‘~}¡}}}~‘‘‘~~~~‘‘~‘‘~~~~~~}~‘‘‘~}~‘‘~}}~}~}}}~‘}~~}}}~~}|}~}}}}}}pp}}}}~~}}}rv|~}}~}p}}|vv}}vv|pvv}}}}}||}}v|v}}vprvp|vpr}vp|vp|}}|||vv||vpvppppp|vpppppppoooopplloollppoppppploolllollloooollllopllloollllllol?lllCllllloolllll?llCCCllllCCllCl?Cll>?CCClCCC>>>?>>>CC>=>CC>CC>>==?=>CC>C>>>C===>======>==>>C>>=A=>=>>========!$=====$=$!$$===$$==!!==$===$=!!$==!$!!!=!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!    9s’æúüûüüüýûüúýúþýúúúúúúúúúúúúúúúúèÙ{                                                                                                                                                                                                                                                                    ›×ñóúóúóó÷÷óóúóóóúóüÿÿþþýÿÿÿþÿþÿþí¥Ÿ~}}~}~~~~~‘~}~~}}~~~~~}~‘‘}}~}‘~~~~~~‘~‘‘~~‘~~‘~~~~~~~‘~~‘~‘~‘¡‘~¡¡‘~¡¡‘‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡‘¡¡‘‘¡‘¡£¡¡¡¡‘‘¡¡¡‘¡¡¡‘¡¡¡‘‘¡¡¡¡¡¢¡¡¡¡¡¡¡¡£¢¡¦¡‘‘¡¡¡‘‘¡¡¡¦¡¡¡¡¡¡¡¡¡¡¡¡‘¢¡¡‘¡‘¡¢¡‘¡‘¡¡¡¢¡¡¡¡‘¡¢¡‘¡¡¡¡¡¡¡¡‘‘‘¡‘~‘£¡¡¡¡¡¡¡¡¡‘~¡¢¡‘‘‘€‘‘¡¡¡‘~¡‘~‘¡‘~‘¡‘~~‘‘‘‘¡~}‘¡~~}‘‘~~~~~~‘~~~~}}~~‘‘~‘~~}~~~}~~€~~~~~}}~~}~~}}}~~}}~}|~~~}}}}~~}r}}}r}}}v}}}}|}}~}}}~}}}}}}}}}}}}}pp}}}}pp}}}~|v}}}}vvvv|pv||ppppppppvvpppppvppppvvvppppppvpppppvvpppopvppopololpplvppvppolplllolllpplllllllplllllCllllllC?CllCCCllllCC?>llC?>>ClC>CllCC>??CCCllCCll>=CC>=>C>>C?>>>l>==>=>>=>>>=>>>>>==>==================>===>===$!=====!===!===!$==!!!!==!!=!!!!!!!==$!$!!$!!!!!!!!!!!!!!!!!!!!!!!!!  !!   !?¢Óúúüýúúúüúýúýýþúùúúúúúúúúúúúúúúõßž;                                                                                                                                                                                                                                              "ÓÙ÷÷óóóóúóóúóó÷÷÷óüÿÿýþÿÿýþýþþÿýõÕ  }~~~}}~~‘‘~}}}‘~}}~}}~‘‘‘‘‘~~}}~~}}‘‘~‘~~¡¡~}¡¡~}~~}~¡‘~~¡¡~~‘¡‘~‘‘¡¡~‘¡¡¡¡~‘¡‘‘¡¡‘¡¡¡‘¡¡¡¡‘~~‘¡‘¡¡¡¡¡¡‘¡¡¡‘¡¡¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¢£¡¡‘‘£¢¡‘¢¦¡‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡‘¡¡¢¡¡‘‘¡¡¢£¢¡‘‘¡‘‘¡¡‘¡¡¡¡¡¡‘‘¡¡¡¡¡¡¡¢¡¡¢¡‘‘¡‘~¡¢‘‘¡‘¡¡¡€¡¡‘~~‘‘‘¡¡‘‘~~‘~‘¡~~~~~‘‘‘‘‘~~~~~~~~~¡~}}~}~~‘‘‘~~}}‘~~}}~~~‘‘~~}}~~}~~}}}~}}~}}}~}}}s}~~}|}}rv}}}|}|}}}}}|}}}}}}~}~}r}}}}prvr}|}rp}||}}}}}}|vpppp|}}|vpp|vppppvpppppppvppppvppplpvvppopopvv|pllpvpoopoplplllpvppplllplllpolollllpllCloolClCllllCClClCClllClllC?>?CllA>>?ClC>?lllCCCCCCCCCClC?>>Cl>==?>=CC>CC>A>====>==>>=>==CA==C>=======>===$=============$$====$!$=$=!=======!$=$$!!$!!!!!!!=!!$!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!   =ŽªæüûúýýýúýúýúýþýúúúúúúúúúúúúúúúúæÓ]                                                                                                                                                                                                                                            ZÓæóóúóúóóú÷óóúóúóóúÿÿþÿþýÿþÿÿþÿþè’}}~}}}~}}}~€~}~}~‘~}~‘¡}~~~~}}~~~‘‘~}~‘~~}~¡~}~‘}~¡‘}~¡‘~¡~¢¢~‘‘‘‘¡¡‘¡~~‘¡¡¡¡¡‘‘‘¡‘‘¡¡‘‘‘¡‘¡¡¢¡¡¡¡¡¡¡¡~¡¡¡‘‘¡¡‘¡¡‘¡¡£¡¡¡¡¡¡¡‘¡‘‘¡£¡¡‘¡‘¡¡‘¢¡¡¡¢¢¡‘¡£¡‘¡¡¡¡¡‘¡¢¡£¢‘¡¡¢¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢¡¢¡¡¡¡¡¡¡¡£¡¡¡‘¡¡¢¢¡‘¡¡‘¡¡‘¢¦¡‘‘¡¡¡¢£¡~¡¡¡¡£¡‘¡‘¡¡‘~¡¡‘‘‘‘¡‘¡~‘¡¡‘¡¡‘~~~~‘‘‘‘‘‘‘~~‘‘‘~~‘~~}~~}~€~~~}~~‘‘~}}~~~~}}~~~}~}}}~~~~}}}~}}}}}~}~}}}}}r}}}}r}}r}}}}}}||vvvr}}}}vvvppv}vvrpp}||ppv|||}|pppv|vp|vppppv|v|pvpppppvvvppppp}poploopvppvoppolloopppplppllplolloplClvllllllloollllllllollllllllllCClCCllCCllClCCC?ClClC>?CCCCCC?C>>>>CC>>C>?C?>ClC>>C>C>=>>C=>C>>=>>>>==>>=======A=========C>=====$=========$=======!$!=!!=$$!$$!$==!$$$$$!!!$!!!!!!!!!$!!!!!!!!!!!!!!!!!!  !! !! o¬úüýúúúýúýúüüþþúúúúúúúúúúúúúúúúèÙz                                                                                                                                                                                                                                         ”Óñó÷ó÷ó÷÷óó÷úóóóóúþÿýÿþÿþÿþÿýþþú¬s}}}~}}}}}}~~~}~}}~~~~¡‘~~~‘}~~‘~~‘‘~}~~‘‘~}~~~~~~~~~‘‘~~~~¡¢¡¡¡¡¡~‘~~‘¡¡‘‘‘~~¡¡‘¡¢¢¡‘‘‘‘~‘¡‘¡¡‘¡¡¡¡¢¢¡¡¡¡¡‘‘¡¡‘¡¡¡¡¡¡¡£¡¡¢¡¡¡¢¡‘¡‘‘¡¢¡¡¡‘‘¢¡¡¡‘¡¡¢¡‘¡¢‘‘¡¡¡¢¡¡¡¡¢¡¡‘¡¢¡¡‘‘¡¡¡¡‘¡£¡£¢¢¢¢¢¢¡‘‘‘‘¡¡¡¡¡¡‘‘¡££¡‘‘‘¡¡¡‘‘¡¢¢¡¡¡¡¡¡¦¦¡‘‘¡¡¡¢¡¡¡¡¡¡‘¡¡~~~¡‘~~¡¡~~¡~¡€~‘‘‘¡¡‘‘~~}~~~~‘‘‘¡‘~~~~‘¡‘~}‘~~}}}~}~~~~~}~‘~~~~~}}}}}~}~}~}}~}~}}}~}}}}}~}}~}}rw}~}~}v}}}}p}}vp|v}}}}v}|vrvvp}}vpvpv}}|pp|}|v}vpppp|ppppppv|||vp}}pppvpp||ppvppvplopplppovpppplllplolppoppolllplllplloploll?lllppolllllloolCllolllllC?ClllCllllCCCCCCCCCCCC?>>CC?>>>>>>CC>>C>>>>>>lC>>=>C>==>C=>CA====>>===========>======AC>A>======$$=====$!!$==$====$$$!!$!$=!$==$===!=!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!  !   ! 9sªèüúüüýúýúýúûýþüúúúúúúúúúúúúúúúõÚ›9                                                                                                                                                                                                                                       Ó×óúóúóúó÷óúóóú÷úóüÿþÿþÿþÿýÿþÿþÿí¥Ÿ~~~~}}}~}}~~~}~~~}}~~‘~}~}~~‘}~~~}}‘‘~~‘~~~~‘‘‘‘¡‘~‘¡‘~‘¡~‘‘‘~~¡¡‘‘‘‘‘‘¡¡¡‘¡‘~‘¡‘‘¡¡¡¡¡‘‘¡¡‘¡¡¢¡¡¢¡¡¡¡¡‘¡¢¡¡¡¡¡¡‘¡£¢¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¢¡¡¡¢¡¡¡¡¢£¡¡¢¢¡¢¡¡¡¡¡‘¡¡¢¡¡¡¡¢¡¡¡¡¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡¢¡¡¡¢¡‘¡¡¡¡¡‘¡¡¡¡¡‘¡‘‘‘‘‘‘‘‘¡¡‘‘‘¡‘~¡‘¡¡~¢¢~~‘¡¡‘‘‘‘‘~~~‘‘¡¡~‘¡‘~~~~~‘~‘¡~~‘‘~‘~~‘‘}}~~}}~~}~~}}}~~~~~~~}~r}~~}~~}}}}~~}}}~~}}}v}}}}}r}}}}}~}pp}}}}|}}}|}|r}|}}}v||ppvp}pp}|ppp}}|vrp}pp|v}|pppppvppv}pop|popp|}vpppolpppppllppppppllppppppllopllpplllllpllolllllllllllllllClllllClllllllClCCCC>?ClllCClCllClCCCC???>C>CC>?CCC>C>CC>>>=>C>>>>>==C>>>>>>>=>=>>>>=>=>>===>>========================$!===$$$$$===!!!!$!!!=!!!$=!!!$!!$=!!$!!!!$!!!!!!! !!!!!!!  !!!!! !  o¢Úúýúûúýúýúüüüþýúúúúúúúúúúúúúúú÷àÓB                                                                                                                                                                                                                                                        ;ÓÙóó÷ó÷óóúúóó÷óóóúüÿÿþÿþþÿþþþþþýä ¡~~~~}}~}}~}~}}~‘~~~‘~}}}~‘~~~¡‘}}~‘‘‘‘‘~~~~~‘¡‘‘‘‘‘~~‘¡¡~~‘~~~‘~‘¡¡¡¡~‘¡¡‘‘¡‘‘¡‘~¡¡~‘¡¡‘‘~‘¡¡¡‘¡‘‘‘¡¢¢¡¡¡¡¡‘¡¢¢¢££¡¡‘¡¡¢¢¡¡¡¡‘¡¡¡‘¢£££¡¡¡¡¡‘¡¡¡‘¡¢¡¡£££¢¡¡¡‘‘¡¡‘‘¡¡¡¡¡¡¢£¢¡£¡¡¡‘¡¡¡¢¡¡‘‘¡¡¡¡¡¡¡¡¡£¢‘‘¡¡£¡‘‘‘¡‘‘‘‘‘~‘¡‘‘‘‘~~¡¡‘~‘¡~~£¢¡‘~¡¡‘~~~~~~¡¡‘‘~‘¡~}~~~‘~‘‘‘‘‘¡¡¡¡~~‘~}}}}~~}~~~~~~}}}~~~~~‘~}}}}}}~~~}}~~}~~}}~}}}}||}}}}}}vp}~}r|}rv}}}}}p}}}}}}}}}}ppprppvpp|vprv|pppv}vppp|v|vpllp}|pvvpppv|ppp}}vpppplppppollppvvvpllppvvppllpllpploplloplppllllClllpll?llllllllllllllpoC??ClC???Cllll>CCClllCllC?>?C>>CC>>CCC>?CC>=>>>C>>>AC>==>C>A>>>=====?C=>=>=====>>========$$=>===$$=!======$=$!!$=$!==!!!!$$=!$!!!===!!$!!!!$$$$=!!!!!!!!!!!!!!! ! !!!!! !!      =¢¬ùüüüüúýúýúûüýþúúúúúúúúúúúúúúúúèÓZ                                                                                                                                                                                                                                               ]Óæóúó÷óúóóóóúóú÷óúþÿþÿþÿþÿþÿÿÿÿõª~}}}}~}}}~~~~‘~}}~}}~~~~~~‘~}}~}‘¡}~‘~~~‘‘‘~‘¡~~‘¡¡¡‘‘¡‘~‘‘‘¡¡‘‘‘¡¡‘¡¡¡‘¡¡¡‘¡¡‘~¡¢¡¡¡¡‘‘‘‘¡‘¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡‘¡£¡‘¡¡¡‘¡‘‘¡¡‘¡¢¢¡£¡‘¡¡£¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¢¢¡£¢¡¡‘¡¡¡¢¢¡‘££‘‘¡¡¡£¡¡¡¡¢¢¡¡‘‘¡¢¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡‘‘¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡~¡¡‘¡¡¡~~¡‘‘¡~~¡¡‘¡‘‘¡‘¡¡‘¡¡~~‘~~‘‘‘‘‘~~‘~~~~~}~~}~~~~~~}~}~~~}~~}~~}}~~}}}}}~}~}}}}}}~}}}}}}}}r}~}}}}}s}}}p|}}}}~}s}||}||vvvr||}|p}}|vr}p}}}v}}pvpp}}ppv|ppp||vvvp|ppppppppppoppppvvppppopllpppopvooploolppollopllovollllplllpllClllplllllllllCllCllClllCllllllC>>?ClllC??CC>>>?>CCCCCCl>>CC>>>>?C>>AC>=>=>C>=>>>=>>>=>A>>=>>>===>=>A>=========================$$===$$==$====$$!!!$$!$!!=!!$!$!!!!!!!$!!!!! !!!!!!!!!!! !!!!!!!! $s’æúüûúýúýúüüüýþüúúúúúúúúúúúúúúúèÙƒ                                                                                                                                                                                                                                      ›Óñ÷ó÷úóó÷úó÷óóóóúüÿÿþÿþÿþÿþþþýýèŽ}}}r}}}}}~~‘}~~~}}~~‘~~‘~}}}~}}~~~~~~‘‘‘¡‘‘~~~~‘‘~‘£¡‘‘‘¡‘~~~~¡¡¢¡‘~‘‘¡¡¡¡‘¡‘‘¡‘‘‘¡¡¡‘~‘¡¡¡¡¡‘‘‘‘‘¡¡¡¡‘¡¡¡¡¡¡~‘‘¢¢¡¡¡‘¡¡¡¡¡¡¡‘‘¢¡‘¡£¢¡¡¡¢¡¡£¡¢¡¡¡‘‘‘‘¢£¢¢££¢¡¡¡¢¢¡¡¡¡‘¡£¢‘¡¡¡¡¡¡¢£££¢‘¡¡¢¢¡‘‘£¢¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘‘‘¡¡¡¡¡¡¡¡‘¡¡‘¡£‘~¡¡‘~~‘¢¡~‘‘~‘¢¡¡¡¡¡¡~}~~¡¡¡‘‘‘~~}~~‘~}~}~~}~~‘¡¡¡¡‘~}~}}~‘~~~~}~}}}~~|}~~~~~}~~}}~}}}r}}}}}~}}s}r}~|p}s~}}}~}}p|}}}||v|vv|vpp}}|vv|vprv|||ppprvpv|prvpp|}}ppv}vppppoopvppppllp|plppppopppplpplpplpolpplllllllpoppolllllvplljlllpolClllllClllCCCCCClCllllllC>ClCClCC>>CC>>>>?>?ClCClC>>?>=>>>C>CC>C====>===>>>>=>>?>A>>=====>==>CA=>=?==$$=>>A===$=========$====!==$!!===$==!!$!!!!!=$!$!=!!!!!$!!!!!!!! !!!!!!!! !!!! !!!  ?Óúûüüúýúýúûüüþþúúúúúúúúúúúúúúúõà!                                                                                                                                                                                                                                                   Ó×óó÷óóóúóó÷óúóúóóúÿÿþÿþþÿþÿÿþÿýä~}}}}}~~~}}~}~}~~~~~~~~‘‘~~~}}~~~~~‘~‘‘~~~‘‘‘¡‘~~‘‘‘~¡‘‘‘‘‘¡¡‘~~¡¡‘‘‘~‘¡¡¡¡¡¡¡¡‘¡‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡¢¡¡¡¢¡‘¡¡¡¡¡¦¢¡¡¢¡¡¡¡¡¡¡¡£¡¡¡¡¡¡¡¢¢¡¡¡¡‘¡¢¡¡¡¡¡££‘‘¢¢¢¡¡¢¡¡¢£¡¡¡‘¢¡¡¡‘¡¡¡¡¡¡£¢¡¡¡¡¡¡¡¡¢¢¡‘‘¡¡‘¡¡¡¡¡¡¢‘¡¡¡¡‘~¡¡¡¡¡~‘£¡‘¡¡‘¡‘‘‘~‘¡¡‘‘‘¡¢‘~‘‘‘‘‘~‘‘‘~¡‘~~~~~~¡¡~~~~~~~~}~€~~~~~}}~~}~~~~}}}~~}~~~~~}}}}}}s}~}}}}|}~}p}}}}~}}|}|p}}}}||}|}}}}pp}|}p}}|}}vv}|p}}}|v}|v|p}vvpv}}vvv|ppvvppv|pppppppppppvpppvpppppppppoollvpplolpvllllopppoolllolllllpllllllllllllllllllllllllCCCClClC?lllCCllCCCCCCCC>CCCCC?>>CC>?>??C>C?>lC>>=>>>>>C>>>C>>>>==>>>>C>=>>=>===>=======================$!====$===$=$!$$$!!===!!$$$$!!$!!!!!$!$!!!!!!!!!!!!!!!! !!!!!!!! !!!!!!  ! =Žªõüüûüúýúüüúüþþúúúúúúúúúúúúúúú÷àÓ@                                                                                                                                                                                                                           BÓß÷÷úóúóó÷úó÷ó÷ó÷úüÿþÿþÿþÿþÿýÿþõª}s}}}~~}~}}~~~~~~}}}~~}~~~}}}~~~‘‘~¡¡~~~~}}¡‘‘¡¢¡‘‘~~~~~~¡¡‘~¡‘¡‘~‘¡~~‘¡¡¡¡‘‘‘‘‘‘‘¡¡¡¡¡‘¡‘‘¡¡¡¡¡£¢¡¡¡¡‘‘¡¡¡¡¡‘¡¢¢¢¢¡¡£¢¡‘¡¢£¢¢£¢¢¡‘¢¢¢££«¢¡¢¡¡‘¡¡¡¡£¢£¢¡¡¡¡£££¦¢¡¡‘¡‘‘¡£¢¡¢¢¡¡¡¢¢¡¡£¡¡¢¢¢¢‘¡¡¡‘‘¡¡‘‘¡¢¢¡¡¡‘‘¡¡¢¢¢¢¡‘¡¡¡‘¡‘~¡¡¡¡¢¡~~¡¢¡‘¡¡¦£¢¡‘¡¡‘€‘¡££¡¡‘¡‘~‘‘‘‘¡¡‘¡~¡¡‘‘‘¡¡‘~~‘~~~‘~~¡‘~‘‘‘‘~}}~}~}}}~~~}~‘‘}}‘‘~~}~~}}‘‘~~}}~~}}}}}}}~}}}}|}p}}~}|pp||}p}}rv}}}prpp}}ppr|}pv|pp||v}}}v}}pvp|vvpp|}}pppv|pppppv|ppppp|vpolopopppppvppvvvppoooppollplpllllllppllllllllllpplllllollCClllolllllllllCll?ClCCC??CCCClll??lC>>>>?Cl?C?>>CC??C>>>>C?>>>>>=>=?>C>>>C>======C>>CC>=>=========>>==========$=====$=$==$=======$$$!$==!!===$==!!!$!!$!!!=!=!!!$!!!!!$!!!!!!!!!!=!!!!!!!!!!!!!!!!   !!q’Ùúüüúýúýúûüúýþüúúúúúúúúúúúúúúúè×]                                                                                                                                                                                                                                   xÓè÷óóóóú÷óóúóúó÷óúÿÿþÿþÿþÿþÿþÿþé}~~~~~~~}}}~‘~}}~}~~~‘~~~~~~‘‘‘}~~~¡‘~~~~}¡‘~‘‘‘¡‘¡~‘‘~~¡‘~¡¡‘¡¡‘‘¡¡¡¡¡¡‘¡¡‘‘¡¡¡‘¡¡¡¡¡¡¡¢¢¡¡¡¡‘‘¡¡¡‘¢¢¡‘¡¡¢¡¡¡¡‘¡¢¡‘¡¡¡¢¡¡¡¡¡¡¡¢¢¡¡‘‘¡¡¡¢¡¢¡‘¡‘¡¡¡£¡‘¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¢£¡¡¡¡¡£¡‘¡¢¡¡¡¢¡¡¡¡¡¡¡¢¡‘‘‘¡¡¡¡¡¡¡¡¢¡‘¡£¡¡¢‘~‘‘¡¡¡¡‘¡~¡¡‘‘‘¡¡~¡¡~‘¡¡¡¡¡‘~‘‘~}¡‘‘~~~‘‘‘‘~~¡¡~~~~~~‘‘~~~~~~~‘~~}}~‘~}~}}~~}}~}}}}}~s}}~s|~}}}}~}}}}}}}}~|}}}}}}}vp}}|v}}}r}|}}}}}vs}}vr}|}ppp}}rv||||vp}|ppppv|vvppv|pvpvpppppppppvpppoplppoppppppoppppvllooopoloppplllllllllplllllolllllllllllCCllllllCCllllCCCClll?ClC?CCCClCCll>??>ll>>?CC=CC>CCCCA>C>CC>A>CA>=>>>>>>>===>===>>==>=>>==========>=======$========$===!==$!!!$==$$!$=$$$$!!!$$!=$!!!=!!!!!!!!!!!!!!!!!!! !!! !!! ?¢ÖúûúüúýúüüúüýþüúúúúúúúúúúúúúúúñÚ”                                                                                                                                                                                                                                            ˜×òóúóú÷óóúóó÷ó÷úóüÿþÿþÿþÿþþÿþÿûÚŸŽ~~}}~~~~}}~‘}}~~~~‘~}~‘€~~~~~¡¡~~~‘~~}~~¡¡¡~~~}}~}~~~~‘¡¡¡¡¡~~~~‘‘‘‘‘‘~‘¡‘~¡¡¡¡¢¢¡¡¡¡‘¡¡~‘¡¡¡¡¡‘‘¡¡‘‘¡¡‘¡¡¡‘‘¢¦¡¡‘¡¡£¡¡¡¡¡¡‘‘¡¡‘££¡‘¡‘¡¢¡¡‘¡¡¡¡¡¢¡¡‘¡¡¡¢¡¡¡£¦£¡£¡£¢‘¡‘¡¡¢¢¡¡¡¡¡¡¡¡¢¡¡¡¢¦¢¡‘¢£¢¢¡¡¡¢¡¡¢¡¡¡‘‘‘¡¡¡‘¡¡¡¡‘¢¢‘‘¡¡¡¡¡¡‘~‘¡‘~¡¡~‘~~¡¡¡‘‘¡¢¡¡¢¢¡~~¡¡¡‘~~~~~~}~~‘¡¡¡¡¡¡¢¡~}}}~‘‘~‘¡‘}}~‘‘¡¡‘~}|}}}~}}~}}}}}}}}}r}~}}}}}}}~}r}}}}}~}s|}~}}r}}~}}}}p}}}}}}~}w}}}}}|}|pv}|}}|ppp|}}}v|}}}}vp||pppv|vpppvvp|p|vplppv}v|vvvpplllllpoppppovvpvplpplpplovolollllllppoolllloppplll>llllC?lllllllllllC?CClllC>???CCCllC??CClC>>CC>>CC>CC>>CC>>>>>CCC>>>C>====ACCA=>=========>>>>>=======>==========$$=========$!$=$!$===$!!==!!!=!$$!!==!!!!$!!!!!!!!$!!!!!!!!!! !! !!   =¥õüüûüúýúûüýúÿýúúúúúúúúúúúúúúúõàž!                                                                                                                                                                                                                                             ÓÓó÷ó÷óóú÷óóúó÷óóóüÿÿþÿþÿþÿþÿþþú¬Ÿ~}}~~}~}~~~}~¡~}}~~‘~}~~~~~~}}¡‘}~‘~~~‘‘~~‘¡~~‘¡‘~‘‘~‘‘¡‘‘‘‘¡¡‘¡¡‘¡‘~¡¦‘‘¡‘‘¡¡‘¡¡¡‘¡¡¡¡¡‘¡¡¡‘¡¡¡¡¡¡‘¢¢¡‘¢£¡¡¡‘¡¡¡¡£¡¡¡¡¡‘¡£¡¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¦¢‘¡¡¡¢¡¡¡¢£¡¡¢£¡¡¡¡¡‘¢£¡¡¡‘¡¡¡¡¡¡¡¢¢¢¡¡£¢¡¡‘‘‘¡¡¡¡¡¢¢‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡£¡‘¢¡‘¡‘¡‘‘¡¡¡¡~~¡‘¡‘¡¡‘~‘‘¡‘~‘¡‘‘‘‘~‘‘~~‘¡‘~~‘‘~~~~‘‘~~‘‘~~~~~~~~~‘~}}~~~}~}~~~~}~}}~}}~~}}~~}}}}~¡}s}}}}}r}~}|}~}}}|r}}}}}~v|}}pp|}r}}}|p}|||v}||vpv}|pv|}pvpv||ppppv|ppp|ppppv}ppppp}pppppvpppppppooppllvvlpllpvllolopollplllllvllllllloollllllllllllllllllllllCClllllCCCCCCllCCCC?CCCCl>>ll>>??CC?>C>>>>>C=>l?=>>A>>>>>=>>>=>C====>>>==>===>=======>=========$=A======!===$===!==!$$$!=$!!$!$$!!==!=$!!!!!!!$!!!!!!!!!!!!!!!!!!! ! ! !!9q’æúüüúýúüüûúúýþúúúúúúúúúúúúúúúúßÓ;                                                                                                                                                                                                                                 ÓÙóó÷óúóóó÷úóóúóúúüÿþÿþÿþÿþÿýÿÿíªŸ}}~‘~}~~}~‘~~~~~‘‘~~}}~~‘~}~~~~~~‘~‘‘~~~}~‘¡~~‘‘‘‘~~~~‘¢¡¡‘¡‘‘¡¢‘¡¡‘‘‘¡¡‘¡¢‘~~~~‘¡¡‘‘‘‘¡¡‘¡¡¡¡¡‘¡‘‘‘¡¡¡¡¡¡¦¡¡‘‘¡¡¡¡£££¦£¡¡¡¡£¢¡¢¡¢¢¡¡¡¡¢££¡¢¦¦¢¡‘¡¡¢¡¡¡¡¢¡£¢¡¢¡¡¡¡¢¢¡¡¡¦¦¦£¢¦£¡¡¡¡‘¡£££¢¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¢£¢¡‘¡¡¡¡¡¡‘‘¡‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡¢¢¡¡~¡£‘~‘¡¡‘~¡‘~~~~~‘~~~~‘¡¡~¡¡‘‘~}}}}~‘~~}}~~~‘‘~~‘‘~~}}~~}~‘¡¡‘}~~}~‘~}}~~~~}}}}~~~~~}rv}~}}r}}~~}‘~}}}}|}}}}}}pp}pp||pp|pp|}r}}}vppp|}}}pppppvvpppp}}v|}vpp|}}||vpolppopvpppplloloop|vpooplppllpploloppopplpplllpolppllllllllllpplllplllllllllCC?Clll?ClollC?ClC>?llC>CllCCl?>llCllCC??ll>CCC>>>CC==>>>=>>>>>C>=>===CC===?>=======>A>>=====>>============!!$!!===!$!!$=$!!!!=$$!$!$!!$!!!!$=!!!!!!$$!=!!!!$!!!!!! !!!!!!!! !! ! !!!!!!    o¢ÕüüúýúüûüüüüýþüúúúúúúúúúúúúúûúæÓY                                                                                                                                                                                                                               ;Óàúóúóóúóúóóúóóúóóÿÿÿþÿþÿþÿþÿþþí }}~~}}~‘}}~~~~~~}}~‘~~~‘~~~~}~~~~‘~~~}‘‘‘~‘¡‘~‘¡‘~‘~‘‘‘‘¡¡~¡‘‘‘‘¡‘¡~¡¢‘¡‘‘‘‘¡‘¡¡£¡¡¡¡¡¡‘¡¡¡¡¡‘‘¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡£¡¡¡¡¡¢¢¡¡¡¡¡¡¢¡¡¡¦£¡‘¢£¡¡¡‘¢¦¡¡¡¡¡¡¡¡¡£¡¡¢¡¡¢¢¡¢¢¡¢¡¡¡¡¢¢¡¡¡¢¡¡¡¡¡¡¡¢¢£¡‘¡¢¡¡¡¡¡¡¡‘¡¢¡‘¡¡¡¡‘¢¡‘¢¡¡¡¡¢¢¡‘¡¡¡‘¡¢¡~¡‘¡¡¡‘¡‘¡¡¡~¡‘¡¡‘‘~¡¢¡‘¡~‘~¡‘‘‘‘‘‘‘‘‘‘~¡}~‘‘~‘‘~~~~~~~~~~}~~~~~}~~}~~~}}~}~}~~}}‘‘}}}}}}~}}}}}}p}}}}}}}}vr}|}s~}}|}}|}}p}}}}vv}}|p}}|v}}}|v|p}|pppp}|ppv|ppppvvppvppppppppvpppppppppvpppopppppolppopplppplploplllpollppllllllpollllllClllllllllllCClllCClllC>CllClCCll?ClC>>lCC>CCCCCC>>>C?>AC>>?>>>>>>>C=>C>>>>=>>>=>A=>>?=>===>===>=============$=>==========$======$=$!====!!!=$=$!$=$!!!!!$!!!!!!!!!!$!!!!!!!!!!!!$!!!!!!! !  ? ¬úúýúýúüúúýúýþýúúúúúúúúúúúúúúúèÙ]                                                                                                                                                                                                                                              ZÓàóóó÷úóóó÷÷óóúóóüÿÿýÿþÿþÿþÿþÿûÚ}}}~}}}}~}}}~~}}}}~~}~~}~~‘‘‘‘¡‘‘‘~~~‘~€~~¡~~‘~‘‘¡¡‘~‘¡‘‘~~¡‘¡‘¡¡‘~~¡¡¡‘¡‘¡¡¡¡¡¡¡¡¢¡‘¡¡¡¡‘‘~‘¡£££¢¡¢¢¢¡‘‘¢£¡‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¢¡‘¡¢¡‘¡¢¡¡¢£¦«¡¡¦¢¡¡¡¡¢¢¡¡‘¡¡£¡‘¡‘¡¡‘¡¡¢£¢¢¢¡¡‘¡¡¢£¦¢¡¡¢£¡¡¡¡¡¢£¦¦£¡¡¡‘¢£¡¡¡¡£¢¡¡¦£¡‘¡¡‘‘¡¢¢‘~~‘¡¡¡£¢¢¡‘~‘‘‘‘¡‘¡‘~‘¢¡¡¡~~~~~‘¡~¡¡¡¡¡}¡‘~~~~~¡¡¡‘~}}~}}}}~¡¡¡~}}}}}~~‘‘~~}~‘~‘‘}}~~~}}r}}}}}}~}}|p|}|v|}}s}svv|v|}~}}}}}}}}}}}}}|p|p|}}}}}}r}}}~}pp|pp|pppppppppppvpppp|vvpoopppplp}}pvvolplopolpppolvploppllllppopolollopoplppllpllCCCClloppolllllllCClCCllCCCCllolllCCCCCCCC>>C?>>>CC>>>=>C>>>>>>>CCCCCCC>C>>>>=>>>>C==>=>>>>>==>>==>===>>==>==$====!====$==!$======$====!===!!$!!=====$$=$!!==!!!!!!!!!!!!!!!!!!!!!!!!  !!!! !=}ªõüûüúýúýúüüúþýúúúúúúúúúúúûúúúëÙz                                                                                                                                                                                                                                                         x×èúóúóóúóúóóú÷óóúúÿþÿþÿþÿþÿþÿþúª}~}}}}~~}~}}}‘~~}}~‘~}~~~~~‘~€‘}~‘‘~~~~‘¡~~‘‘‘‘‘¡~‘¡‘}‘¡‘‘‘‘¡~‘‘¡‘‘‘‘‘‘¡‘¡‘¡¡¡‘¡‘‘¡¡£¡‘¡¡¡¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡¡¢¢¡‘¡¡¡¡¡¡¢¦¡‘¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡¡¡¦£¡¡¡¡¡¡¡¡¡‘¢¢¡¦¡‘¡¦¡‘¡¡¡¢¡¢¡¡¡¢¢¡¡¡¡££¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡¢¡¡¡‘¡¢¢¡¡‘¡¢¢¡¡‘¡¡¡¡‘¡¡¢¢¡‘¡¡¡‘¡¡¡¡¡‘¡¢¡~¡‘¡¡¡¡¡¡¡¡~~¡‘‘‘¡¡‘~‘‘‘¡‘¡‘‘~‘~~¡‘~¡¡~~~‘‘‘‘~~~~‘‘~~~~~~~~~~~~~~~~}}‘~}}‘~}}~}~~~~}}}}}~}}}r~¡}v}}}~}}}}r|}}}}}}}}}r}}}r}}sp}|}}}}}p}pvrv|vv|v|pv}}|vv|pvpp|vpp|vv|ppv|pppoppvvpop}vlpvpopppppplvvllpvllppplloooopollplllplllpplllllllllllllolClllllllClllllCClllClCll?C?CC?CCC?ll>>ClC>>>Cl>>?????CC>C>?=>?>=>>=C>==>>>>>A==>>===>>==>=====================$=====$$$==$===!$!$=$$$$$!!=$!!!!!!!==!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!! !p’æüüûüúýúýüûüþþúúúúúúúúúúúúúüúòÚ”                                                                                                                                                                                                                                            ˜Óòóóó÷÷óóóúóóóúóúüÿÿÿÿþÿþÿþÿþÿõ¢’s}~~}~‘¡¡‘}}}}}~~~~~~‘‘‘~~~~~}}}~~~~~‘¡‘‘¡¡¡‘¡¡~}~¡¢‘~‘¡¡¡¡¡¡¡¡~¡‘¡¡¡‘¡‘~~~¡¡¡¡¡¡¦¡‘‘¡‘¡¡¡‘‘¡¢¡££££¡‘¡¡¡¡¡¡~¡¡¡¡¢¢¢¡¡¡¢¢¢¡¡¢££¢¡¡¢¡¡‘¡¡¡¡‘¡££¡¡‘¡‘¡¡¢¡‘¡¢¡¡¡¡¢£¡¡¡£¢¡¡¡¢¡¢¦£¡‘¡¦¦¡¡¡¡‘¡¡¡¡¡¡¢¢£¢¡¡£¡¡¢¦¦¡¡‘¡‘¡¢¡‘¡¢¡¡‘‘‘‘‘‘¡¡¡¡‘¡¡~¡¡¢¡‘‘¡¡~~~~¢¡‘~‘‘¡¡¡‘~~¡¡£¢‘‘¡‘~~}~‘~~}~¡‘~~~‘¡¡‘}~‘}~¡¡¡‘~‘~}}}}~~‘‘~~}}}~}}}}}}}~~}~~|p}~‘~}}}|}¡~}~|}}}p}~}}}}}r}}}spp}}pr}}|p|}rv|prvvp}rvv|}}ppp|}}pp|}~}}|vp}pppppvvpp|}|vpp}}}}p}}olppplpvvvpvopplloppppplpvvpoppollpvllll?ClllllllllllllClllCCllllllllllllCC??>CCllll>CCCCCllllll>>>>>CC?CC>>CClC>=C>====>=>>>=ACA>CCC>>>===CC==>>A>>>A>=============!$$=======C=$=$!==!!!$=======!!$!!!$$!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!  j’Õúúüúýúýúûüüýþúúúúúúúúúûúûúúú÷à›                                                                                                                                                                                                                         ž×òúóúó÷óú÷ó÷ú÷óóúüÿþþÿþÿþÿþÿþÿí ~}~~}~~~}~‘~}~~~}~¡~}~}~€‘‘}~‘‘~~}~‘‘~~‘‘‘‘‘‘~‘~‘‘¡‘~‘¡‘~¡‘¡‘‘‘‘¡‘‘¡¡‘¡¡‘‘¡‘¡¡‘¡‘¡¡¡‘¡¡¡‘¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¢¡¢¡¡¡‘¡¡¡¢¡¡¡¢¡‘¡¢¢¡¡¡¡¡¡¡¡££¡¡¡¡¡¡¢¢¡¡¢¡¡¢¡¡¢£¡¡¦£¡¡¡¡¡¡££¡¡¢¢¡¡¡¡¡¡¡¡¢¡¢¡¡¡¢¢¢¡‘¡¢¢¢¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡‘¡¡¢¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡‘¡‘¡‘¡‘¡¡¡‘‘¡‘‘¡¢¡~‘¡‘¡‘~‘‘‘¡‘~‘¡¡~~‘‘~~‘¡~~~~~~‘‘‘‘~}~}~‘~}~~~‘~}~~~~}~~}}~~}}‘‘}}}~}}}~}v~~}}r}~}p}}}}}}}vp}}}}}}|}}}|}}p}v}}}v|r}v}||p}}}ppv|v|pp}}pp||vv|vppv|ppppvvpov}pppppvpppoplpppppppppplpppvloolpploolollppllplllllolllllllllllllllllllllllllCCCllCCCClCllCCClCCCCCCllA?CC>>Cl>>>>CCCC>>>C>?>=>C>>>>>>>>>>=>=>=>==>>>==>========>======================$===$$!=$=!$!$===$$$!!$!!!$!!!!!!$!$!!!!!!!!!!!!!!!!!!!!! !!!! !     ?Óüýúýúüúüüúüýþýúúúúúúúúúúúúûú÷àÊ9                                                                                                                                                                                                     ×Ùóó÷ó÷óúóó÷óóóúúúÿÿÿÿþÿþÿþÿþÿýæŽ~~}}}}}}}}~}~¡‘‘¡‘~~‘‘~~~~‘~¡¡~‘¡¡¡‘‘¡¡~~}~‘‘¡¡‘¡~¡~}~~‘¡~¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡‘‘‘¡‘¡¡£¢‘‘¡£¢¡‘‘‘‘¡¡£¡¡¡¡¡££¢¢¡¡¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡¡¡££¢¢£££¢¡£¢¡¡£££¡¡¢£¡¡¦«¦£¢¢¡¡¡¢¢¡‘¡¡¡¡¢£¢¡¢¡¡¡¡¡¢¡¡£¢££££¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡‘¡¡‘¡¡¡¡¢¡¡‘‘¡¡‘¢¢¡¡‘¡‘¡¢£¦¦¢~¡¡¡‘‘¡¡£¡‘~~‘¡¡¡‘¡¡~~¡¡‘¡¡¡¡~~‘£¢‘~‘¡‘‘‘~‘‘‘‘~}}~~~‘~}~~}}}~¡‘¡~}}}~~}}~~¡~}}}~|}}~~~}}~}}~¡~}}}}|}~ps}}}r}‘}|}~}~rvv}}p}}}}}}}}}}vvvpv|pp|pp}}pp|}vppppp|}}}}vpppp||ppppp|vppvoop}}}v|plolllpvvvvvollllllllplllllllllllopvvpppllllpllCClll?lllllClCCC>CC??Cll?CllCC>ClCC>>?>>>CC>ClllCllC>?ClC>>C>>C>ClC>ClCCC>CC====>>>>>=>==>>=========>===>====>>=========!=9$$====!$===!!$!!!!==!!$!!$==$!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! !!   ! =¬õüúüüûüúýúýýþýúúúúúúúúûúúüúúúàÓB                                                                                                                                                                                                                 9ÓÙóúóúóúóóúóúóúóóóþÿþÿÿþÿÿþÿþÿûÚ~}~}~}}~}‘~}~~~‘~~~~~‘‘~}~~‘‘~‘~‘‘€‘‘‘‘~~~‘‘‘~‘¢‘~‘~¡‘¡‘~‘~¡¡‘¡¡‘¡¡¡¡‘‘¡‘¡¡¡¡¡¡¡¡¡‘¡£¡‘¡£¢‘¢¢‘‘¡¡¢¢¡¡¡¡¡¡¡¡¢¢¡¡¡¢¡‘¡¢¡¡¡¢¡‘¡¢¡¡¡¡¡¡¡¡¡£¡¢£¡¢¡¡¡¡£«¡¢¡¢¡‘¢¦¢¡¢£¢‘¡£¢¡¡¡¢¡¡¢£¡¢¡¢¡‘¢¡¢¡¡£¡¡¡¡¢£¢¢¡‘¡¢¡¢¡‘¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡‘¡¡¡‘‘‘¢¡‘‘¡¡‘‘‘‘‘‘‘‘‘¡‘¡‘¡‘‘‘‘~‘¡¡‘~‘¡‘‘‘‘‘‘~~~~~~~~~~~~~~‘‘~~}~~~~~}~‘~}~‘~}}~}}}}}~~~}}}~}~}~~}|}}}}}}}|}}}~}|}}~vv}}}}}}rp}|}~pp|r|}|||v|v|}}pp||pv}}ppppvvp|pvv|ppppvppvvvpppvpoppp}pppopppllvpppvpolllppolpvlllopplllllplloolllolllllllllllCllllClllCCClClllllCCCClCll?CCCCCCCll?C?CClCCC>?CCC>=>>>C>>A?>=>>>?>>>>=>=>=>>>=>C=====>>======>===A===================!====!=====$!$!!==!!!!$!!!=!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!! ! !  =s¥õûüýúüúýúüúüþýúúúúúúûúúúúúúúüè×]                                                                                                                                                                                                       BÓà÷ó÷óóó÷úóóóúóúúüÿÿÿþÿþÿþÿþÿþú¬~}}~~~}~}}}}}~~~}}}~‘~‘¡~}}}~‘‘~~‘‘~}}¡€‘~~~‘‘‘‘¡¢ª¡‘‘~‘¡‘‘~~‘¡¡¡¡~~‘~‘~~‘‘¡‘‘¡¡¡¡¡‘¡‘¡¡‘¡¡‘£¦¢¡¢¡¢¢¡¡£¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢£¡¡¢¡¢¡¡££££¡¡‘¡¡¡¢¡¡¡‘‘‘£¦¡¡££¡¡¦«¢¡¢££¡¡¢¡¡¡¡¡¡¡££¦£££¡¡¡‘¡¢¡¡¡¡££¡¢£¡¡¢£££¢¡¡¢£¢¡¡¡‘‘¡¢¡£¢¡‘¡¡¡¡¡¡‘¡‘‘‘¡£¡‘‘‘¡¡¡¡¦¢¡¡£¦£¡‘¡¡¢¢¡¡¡‘¡¡~~~~‘¡¡‘‘¡¡~~~~‘‘‘‘~‘‘‘~~~‘~~~~‘‘‘}}~}}~‘¡‘~}~~}}}}}~~}~~}}}}|}~r}}}}}}}}}~}~~~}p}}}||}}|p}}}}~}}vvvrv}|v|}}}}}||pp|}}|p}}vp}}}|}}|pvppp|}|||pppv|ppppppploopoolllv|pppplllp|ppppvppllvolpvppplllpvolllllllpplllllpll?lllvllllClollllllllC?ClCCllC>?llC??>>>>>CCC>>>>CC>Cl=>>=CCC=>C>>==>?>>>>===>>>>>llA===>>=======>=====$==!====$$$=======$!!=$$$=!!$=====$=!!==!$$!!!$!!!!!!!!!!!!!!!!!!!!  !!!!!!!!!!!!!=q¥æüúúýúýúýúýüþýúúúúúúúúúúýúûüúèÚ]                                                                                                                                                                                     ]Óèóúóúóúóóóúóóúóóúÿþÿþÿÿþÿÿþÿÿù¥Ž~~~~}~~~~}}~~~~~~}~~~~~~~~~~~~~~~~~~~‘¡~~¡¡~}‘¡‘‘~¡¢¡~~¡‘‘‘¡¡~¡¡¡¡~~¡¡‘¡¡¡¡‘¡‘¡¡¡¡‘¡¡‘¡¡¡‘‘¡¡¡¡¡¡¡¡¢¢¡¡¡¡¢¢¡¡‘¡¢¢¡‘¡¡¡¡¡¡¡¡¡¡¢¢¡££¡¡¡££¡¡£¢¡¡¡¡£¡¡¡¡¡¡¡¡¡¢£¡¡¢¦¢¡¢¡¢£¢¡¢¡¡¢¢¡¡¡¡¢£¡¡¢¡¢£¡¡¡¡¡¢¢¡¡¢¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¢¡¡¡‘¡¡¡¡¡££¡‘‘‘¡¡¡¡¡¡‘¡¡¡¡¡£¡¡£¡‘¡¡~‘£¡¡¡¡‘¡¡¡¡‘¡‘¡‘~‘¡‘~‘¡‘‘‘‘‘‘~~‘‘¡¡~~~‘‘~~‘~~~~~‘~}~~}~‘~~~}}}~~}}}~~}~s}}}}~}}}}~}}s}}}}~~}~}}|}}}}}}}}}}}r}}}|}}wv|v}p}}|vžÓÓÓÓÓÒÓÒÓÓÓÇÓžÓÇÇÓÓžÇÓÓÒžÓÇÊžÊÇÇÇÇÓÇÓÇÓÇžÇÊžÊÇÇžÇÇÇÇÊÇžžÇÇÇžÇÇÇÇÇÇǞǞžÇÇžžÓÇǞǞÇÇžÇÇž›žÇžžÇžžÆžžÇžžÇžžÇÇž›ž››››››››››››››››››››››››››››››››–››–›››–›››››–›–››››––››––›–––›–”––––––––––––––”–––”–––…–––––”–”–––”––”xZ=!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !o’àúüýúýúýúüûúÿþúúúúúûúúûúúüúúúõÙƒ                                                                                                                                                                                                      zÓè÷ó÷óóó÷÷÷óúúóúúüÿÿÿÿþþÿþÿþÿþõ’}}}}~}}~‘‘}~~~}}~}~~~~~~}}}}‘¡‘~~¡¡‘~‘‘‘¡‘~}‘‘~~‘~}~}~‘~}¡¡¡¡¡¡¡££¡}~‘¡‘‘¡¦¢¡¢¢¡¡‘‘¡¡‘¡¡¡¡¢£¢¡‘¢£¡¡¢¢¡‘¡¡¡¡¡‘‘¡¡¡¡¡‘¡¢¢¢£¦¦¦¦£¡£¦¡¡¢£££¢£¡¡¦¡¡¡¡¡¡¡¡¡¦£¢¡¢¢¦«¦¢££¡¡¡¡¡‘¡¢¡¡£¦£¢££¢£¡¡¡¡¡¡¡¡¡¡¡¢¢¢¦¦£¢££¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¢¡¡¡¡¡¢¡¢¢¡¡££¡‘‘¡‘¡¡¡¡‘¢¡¡¡‘¡¡¡¡¡¡~~~‘£¡‘~}~~‘¡¢¢¡~~‘~~¡¡¢‘~}¡¡¡‘~~€‘~‘‘~~~‘~~‘¡‘‘‘‘}~}~‘‘~~~~~~}~~¡¡€~}~}}~}}s}r}‘~}}r}v|}s}}|}~~}}}}rv}}~}p}}r}}}}}}}}p™÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüóçÏÆx======!!$$!!!!$!!!!!!!!! !!!!!!!!!!! !jÙüýúüúýúýúüüýýúúúûúúúúúüúúúúúõÙƒ                                                                                                                                                                                                                        zÓèóúó÷úóúóóúóóúóóüÿÿþÿÿÿþÿÿþÿþò¢ }s}}~~}~~~~~}~~}~‘€‘~~~~‘‘~~}}‘¡¡‘‘~~‘¡~~~~~~~~‘‘¡¡}‘‘¡‘£¡‘¡¢¡~~‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘‘¡‘¡¡¡¡¡¡‘¡¡¡¢¡¡¢¢¢£¢¡¢¦¢‘¡¦¢¡¡£¢¡¡£¢¡¡¢¡¡¡¡¡¡£¡¡¡¡¡¢£¦¢¡¢£¡¡¢¢¢¡¡¡¢¡¡¡£¢¢¡¡¡¡¢¡¡¡£¦¡¡¢£¡¡¡¡¢£¢¡¡¢¢¢¡¡¡¢¢¡¡‘¡¡¡¡¡££¡¢‘¡££¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘£¡¡¡¡¡¡‘‘¡¡‘¡¡‘‘¢¡‘¡¢‘~‘‘¢¡¡¡‘~‘‘‘‘¡~‘¡‘‘~~~~~~‘‘‘~~~‘~}‘¡‘~~~}~~}~~}}~~}~}}‘~~}}‘‘}}}|}}}}~~}}}|}r}}}~}r}}}}|}}}v~}}}vv}}}r}wr}}|šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÏ‚=$!!=!=!!!!!!!!!! !!!! !! ! !?ÓûúýúýúüúýúüþþýúúúúúûúúúúúüúúòÚ”                                                                                                                                                                                                    {Óñóó÷óó÷óóúóú÷óúúüÿÿþÿþþÿÿþÿþÿëŽ}}}s}~}}}~~‘~‘‘~}}~‘~}~~~~~~~~~~~~~~~~‘‘~‘¡¡¡¢¡¡¡‘¡~‘~~¡¡¡~~¡‘~~¡¡¡‘¡¡¡~¡£¡‘¡¡¡¢¢¡‘‘~‘¡¢¡‘¡‘‘‘¡¡¡¡‘‘¡¡£¢¡¡£¢¡¢£££¢¢¡¡¡¡¡‘¡¡¡¢¢¡‘¡¦¢¡‘¡¡¡¦¢¢¢£¦£¢¦££¢¡¡£¦¦¡¡¡¡¡‘¡¡¡¢¢£¢¦¦¢¡£¢¢¡¡¡¡¡¡¢¡¡¡¡¦£¡£¡¡‘¡‘¡¡¡‘¡¡¡¢¡¡¢£¡‘¡¡‘¡¡¡¡£¢¡‘‘£¦¡¡¡¡¡¡££¡¢¢¡¡¡¢¡‘‘‘¡¡¡‘¡¡¡¡‘‘¡‘‘¡¡¢¡¡¡‘‘¡‘‘¡¡¡¡¡¡~~~¡¡~‘¡¡¡‘~¡¢}~}~~~‘¡¡‘~~~‘~}~~~}~~}}‘‘~~}~}~~‘‘~~~}}~}}~}}~}~~}~~~}}~~}}}~}|}r}~}}}}}}}}|}rvp|}}}}ppv}}vpvžûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýá‚=!!!!=! !!!!!!!!!!!! !!!! !!!  ! ?ÖúüüûúýúýúýúýþüúúúûúüúúûüúúûüõÚ˜                                                                                                                                                                                                                  ƒÓñóúóúóúóúóúóóúóúüÿþÿÿÿÿþÿþÿÿþ뎎}}~~~~}}}}~~~}~‘~~~~‘~~~~~}~‘~~~~‘‘‘‘‘~¡¡‘¡‘‘¡~~~¡¡~‘~~¡‘‘‘‘¢£~¡¢¡‘‘¡‘¡£¡¡¡¡¡¡¡‘¡£¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢¢¡¢¦¦¢¡¡¡¡¡¡‘¡¢¦¢¡¡¡¡¢¡¡¡‘¡¢¢¢¡££¡¢¡¡£¦¡¡¡¡£¦£¡¡£¡¡¡¢¡¢¢¡£¢£¡¡£¢¢¢¡¡¡£¢¢¢¢¡¡¡¢££¢¡¡¡¡‘¡¡¡¡¢¡¢¢¡¡¡¦£¡¡¡¡¡¡¡¡¡¡¡‘¢£¡¡¡¡¡¡¢¦¢¡¡£¡¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¡¡‘‘¢¡¡¢~¡¡¡¦¡~¡~~¡‘¡¡‘‘‘~‘¡‘‘¡~~~~‘‘~~‘‘~~~~~~~~}‘‘~}}~‘¡}~~~}}~‘}}}}~~}~}~}}}~}}}}~~}~}}}~~|}}}}}}}}r}}}~}}|}v}r}|}pp}}}||všúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÆ!!!!!!!!!!!!!!!!!!!!!!!      !? Öýúüüýúýúýúüýþüûúúúúúúüúúúúúú÷Ù›                                                                                                                                                                                                                 ˜Óò÷ó÷óóóúóúóúúóúóþÿÿÿþÿþÿþÿÿþþæŸ~~‘‘‘~}~~¡¡‘~}~}~}~}}}~‘~‘‘‘~¡‘~~~‘‘‘~~~~~‘‘~}~~~¡¡¡¡¡¡‘~~~‘¢‘‘¡~~¡¡~¡¡¡¡¡~‘¡¢¡¡¡~‘¡¢¡‘¡¡¡¡¡‘¡¡¡¡£¢¡¡¡¢£¡¡¢¢¡‘¡¡¡¢¦¦¦¦¢¡£££¦¢¢¢¡¡¡¡¡¢¡¡£¢¢¢££¡£¡¡£¦¢¡¡¡¡£¡¡¦¦¡¡££¢¢¡‘‘‘¡¡¡¢¢¢¡¡¢£¢¡¡££¢¡‘¡¡¡¡£¦£¡£¦££¢¡¡£¢¡¡¡¡¢££¦£¢¡¡¡££££¡£¡‘¡¡¡¡‘¡¡‘¡¡¡‘‘¡‘‘¡¢¡¡¢¡¡¡‘‘‘‘¡¡‘~~‘¡¡£¡~‘¡¡¡}~~~‘‘‘¡~‘¡¡‘‘~~¡¡¡‘¡‘‘‘~}~~~~‘‘~~‘‘~¡}}}}~~}}‘}}~}~~~‘‘}}}~‘}}r}}}}}}}}~}v}}~~}}s|}}~}}}r}}}}}}}}v|p}}r}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú‚!!!!!!!!!!! !!! !!!!!!! =¬úúýúúýúýúýúýþüúúúûüúúúúúýúýú÷à                                                                                                                                                                                                                 ›Óòó÷óúóúóúóúóóúóúüÿÿþÿÿþÿÿþÿÿþê ‘‘~~}}~¡‘~~¡~}}~~}}}~‘‘‘‘}~‘~~‘~~~~~¡‘‘‘~~¡~~~~~‘‘‘¢‘‘~‘¡‘‘¡~‘‘‘¢£‘¡¡‘¡¡¡‘‘¡¡¡¡¢¡‘‘¡‘¡¡¡¡¡¡¡¢££¢‘¡££¡¡£¢¡‘¡¢¡¢¢¡£¦£¡£¦¢¡¢££¢¡¡¡¡¡¡¡£¢¡¡£¡£££¢¡¢£¡¡‘¢¡¢££¦¢¦£¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡¢¢¡‘¡¢¢¢¡¡¡¢£¡¡¡¢¢¢¦£¢¢¢¢¢£¢¡¡¡¢¢¢£¢¡¡¡££¡¡£¢¢¡¡¡‘¡¡¡‘¡¦¢¡‘¡¡¡‘¡¡‘‘¡¢¡¡¡¡‘¡¡‘‘‘¡¡¡¡‘¡¡¡¡~}¡‘~‘¢‘¡‘¡¡¡~~‘¡‘‘‘~¡¡~~~~‘~}‘‘~~~~~‘~‘‘~}~‘~}}~~}}}~‘‘~}}}‘~~}~‘~}}}}}}~}}}}}p}~}}}r}}}}~}}}}}}}r}}}pvr}}|w}||}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ[!!!!!!!!!!!!! !!! ! !! 7­õýûüüüûúýúüýþýúúüúúûúüúûúúúú÷Úž                                                                                                                                                                                                                             žÓòúóúóúóúóúóúúóúúÿÿÿþÿþÿÿþÿþÿûä}}~~}}~~‘‘}}~¡‘‘~~~‘‘~}}~‘‘¡‘‘‘~~‘‘‘~‘‘~‘¡¡¡‘‘¢¡‘‘¡¡‘¢¡‘‘¡¡‘~¡¡‘‘~‘¡‘‘¡¡¡¢¡‘¡¡¡¡¡¡¡‘¡¡¡£¢¡¡‘¡¡¡¢¡¡¡¡¡¡¡¢¡¡‘‘¡‘¡¢¢¡‘‘‘¡£¢¡¡££¦¦¡¢¥­ÜÝêêêêæêêêêêêêêêêêêàæêêêêêêêêêêêêêêêêêæêêêêêêêêæêêêêêæêêêêêæêæàêêêêêêêàêêæêêêàãêêêæêêêêêêêæêêæêææêêêêæàêàêæààààêêàààêêêààêàÚàêààêààêãààêààààÚæàààêæàÚààææààãàãêêàêæààààààÚàààààÚààààÚàãàÚàÚàààÚàÚààààÚàÚÙÙàêÚàÚàÚÚàÚÚÙÚæÚàÚßÙàÚàÚÙÚÚÚÙÙÙßÚÚÙÙÚàààÚÙÙ×ÙÙàèëèèëèèèèèèèèèëèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèâèèèèèèèèèèèèèèèèèáèèèâèèèèèèèèáèáâáèèèáèèèèáèèáâááßçáèáâçááèáâèáááèèáèáèááâáâáâááßááááááâáááßááááßáááßááâáßáßáááßáßáßááááßáßáßßáßáßßßßáßßßáßáßßßáßßáßáßßßßßáßáßßßßßÏßßßßßßáñ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßB!!!!$!!!!!!!!! !!!!!!!! !!! =s¬õüüüúüüüúýúýþüúúúúúüúúúüúüúý÷àž                                                                                                                                                                                                         žÓóóóóúóúóúóúóó÷óúüÿÿÿþÿÿþÿÿþÿýÚ~}~~}~~~~}~~~‘¡‘‘~~~~‘~‘~~~‘~‘~‘‘¡~~‘‘‘~‘¡¢¡¡~~~‘¡‘‘¡¡‘¡¡¡‘¡~~‘¡¡¢~‘‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¢¡¢¡¡¡¡‘‘‘‘¡¡¢¡¡¡¢¢¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡££¢¡£­êûýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷š}}}}}}||ppp|}v|}}|pv|vv|vpvpppv|vv}vpppppp}}ppop|pllppllllopllopppppolpvolllpvvppllllvlllllllllllollllllCllCCClllC?llCClCCll?>ClCClC?CllC?lCClllCC??>lC?C??=>l>?>>C>CC>=>>>>?>=>>Cl>>===>>===>>==>==========@=9$9==============$!9!====$!!!!!!!!=!!!$$=Zxƒßüÿÿÿÿÿÿÿÿÿÿÿÿÿü_$!$!!!!!!!!!!!! ! !!!!!   ! =sªõüüûýúýúýúüýþýúýúúúúüûúúüûúúúàÊ                                                                                                                                                                                                                   ÊÓ÷÷÷úóúóúóúóúúóúüÿÿÿþÿÿþÿÿþÿþûä s}}~}}}~~}~‘~}}~~~~~~‘~}~}~~~¡¡‘‘~}¡‘‘¡¡‘~~‘¡¡¡¡~¡¡‘¡¡‘‘‘¡¡¡‘‘¡¢‘¡¡¡¡‘¡¡‘¢¡¡¡¡¡¡‘‘¡¢¢£¢¡¡¡¡¡¡¡¡‘¡£¢¡¡¡¡¡¡¡¢¡‘¡£¡¡¢¢¦¦¢¡¡¡¡‘¡££¢£¡¡¦Ôêýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷™ppvppp}}|v}}vpppppp|vvrv|vvvv|pppvvppvvvppvppvpp|vop}vpvvvppplpolllppllpllpllplllllllpplllllllllllplCllllollllllllllllll?Clllll>???C?>CCCCCC?>>CC??>CC>>>>CC>ll??>C>=?l>>CCC>==>>CA=?>=A>>>>===C>>=>A>========$========!$===========!!!====$=$=!9=!!==!!!$==!_Ìúÿÿÿÿÿÿÿÿÿÿÿÿ…!!!!!!!!!! ! !!! !!!   sªõúýüüüúýúýúýþýúúúúûúúúüúûüúüúàÓ                                                                                                                                                                                                                             ÓÓóóóóúóúóúóúóóúóóþþÿÿÿÿþÿþÿÿÿûÖs}~}}}}}}~‘‘}}}~‘~~~~‘~~~~¡‘‘~‘¡‘~¡¡¡‘‘¡‘~~~¡¡‘¡¡‘‘‘¡¡¡~¡¦¢‘¦¢¡¢¡¡¡¡¡¢¡¡¡‘¡¡¡¡¢¡¡¡‘¡¡¡¡¡¡¢¦¢¡¡¡¡¡¡¢¢¡‘¡¢¢¡¡¢¦«¢¡¡¡¡¡¡¡£¦£¥êýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ˜v}|pppvpv}}|ppv}ppppp|}||pv|||pppppppv|vpppopvvvpplpvvvvpppppollppllvopplollloolpppllplllllollllClplClollpplllCCllllllCCllllll>?Cl??C?>?llC??C?lCC?>?l>C>>Cl>AC>>CC>>>ClC>>A>=>=>>A>>?=>=>AC?==>C>=>C===>>=============$$=======$!=====!===!!$$!!==!!=!!$!@=$!ZÌÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!!!!!!!!!!! !!!  !qªëüûúýúýúýúüüþüüûúúüûúüúúüúûúúàÓ                                                                                                                                                                                                                                 ÓÓ÷úúúóúóúóúóúúóúüÿÿÿÿýÿÿþÿÿþÿûÖŽ}‘~}¡~~~~}~‘~}~~~‘‘‘~~}~¡¡~}~~‘~~~‘~‘‘‘‘~‘‘~‘¡¡‘¡‘¡¡~~¡‘~~¡¡~¡‘¡¡¡¡¡¡¢¡¢‘‘¡¡¢¡‘‘¡¡¢¢¡¡¡£¢£¢‘‘¡¢¡¡££¡¡¡¢¡¡£¢‘¡¡¡£¢¡¡¢¢¢£¢¡¡¥Úûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷š}~}}}}}v||pv|||}vp}}|}vpppppppp||vvvppppppvpvppoopppvppppppllpvppplllopvppplpplllllllpooplllpolllllllopCClpllllllllllC>ClllClC?Col?CllC?CC>ClCC>>?CClCC>>=?lC>>=>C>>>>=>?=>>>>>>=>>>==>A>=>=>=======>============>>=======!!=====$====$!!==$===$$$!!==!!!!=!!!!$=Yßÿÿÿÿÿÿÿÿÿÿß@!!!!!!!! !!!!!!!! !!!! $qªèüüüûüüúüüûýþýúúúüúúüúûüúúüüüàÓ                                                                                                                                                                                                                       Ó×úóóóúóúóúóúóóúóúþÿþÿÿþÿÿþÿþÿúÔŽ~}~}~‘‘}}}~¡‘~~}~‘~~‘~~‘¡‘~}}~~~‘‘}¡¡~¡‘‘‘¡‘‘¡¡‘‘‘‘~‘‘~¡‘~‘~¡¡‘¡‘¡‘‘‘¡££¡¡¡¡¡¡¡~‘¡¢¢¡¡£¡¢££¡¡¡¡¡¢¡£¡¡¡¡¡¢£¢¡¡¡¢££¡¢¡£¡¡¢¡­õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷™}}}}|rvrp|}v|p}vrvvp}}ppvpppoppvvvv|}ppvpppp|vplppppplpppvplllpppllloopvppplllllllpllplovlllpllCllllCoollollllllllpllC??Cl?CCl?CCCCllll?>>CllC??>lC>CCCC>CClC>=>>C>=C>>=>CC>=C>=>=>A>=CC==>===================$===A========!$==========$!=!=$==!!!!!=$$!!$!=$!$$!!!_òÿÿÿÿÿÿÿÿÿñB!! !!!!!!! !!!!!   =}¥ëúüüüúýüýúüúÿýúúúúúúúüúúüúúúúæÓ                                                                                                                                                                                   ÓÓ÷÷úúóúóúóúóúúúúúÿÿÿÿþÿÿþÿÿÿþûÖ~~}~~}~~~}~}~~~~}}}~~~~~~~~~‘¡‘¡¡~~~~}~‘}~¡¡‘‘~~‘‘~‘¡¡¢¡~£¢¡¡‘‘¡¡¡£¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡¡¡£¢¢¡¡¡¡¡¢¡¡¢¡¢¡¡¡¡­íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ™}}}}}}}}}}}w}}}vvv}}}}}vv}}}}}v}}vv}}vw}vpv}wvvvv}vvvvvvvvvvv}vvvvvuvvvvvvvvvuluvvvuovvvoouuuolovvolluuluulllltllluulllullooolCllCltllCCllllCCCCCCClCCCCCllCoCCCCCAACC@AClCCCACCCCA@CCCCCCC=CCCAA@ACCCCCCA@=@AA@=@>@>@=C=@=@=@==@==@==@=====@>====!=!!!!!!!!!!==–üÿÿÿÿÿÿÿÿñ@!!!!!!!!!!!!!!!  !!!   =sšéüüûüýúûüüúýþýúúüúýúýúúúûüüüüàÓ                                                                                                                                                                            Ó×úóóóúóúóúóúúóóóúþÿþÿÿÿÿÿþþÿÿûÖŽ~}}~~}~‘~}}~€~}~~}}}~}~~}~~~‘¡¡¡‘~~~~~}~~}~‘¡¡¡¡~~‘~~¡‘¡¡~‘£££¢¡‘‘‘¡¡¡¡¡¡‘¡¢‘¡££¢¡‘¡¡¡¡¡¢¡¡¢¡¡¡¡¡‘¡¢¦£¡‘¡£¡¢££¡¡¡¡¡¡¡­öÿÿÿÿÿÿÿÿÿÿÿÿÿÿþûöîêÝÝÝÚÚÚÝÝÚÝÝÝÝÝåÝÚÚÖÚÚÝÝÚÝÝÚÚÝÚÝÝÚÚÚÝÝåÝÚÝÝÝÝÝåÝÚÚÝÚÚÚÚÖÚÚÝÝÚÝååÝÖÚÖÚÖÚÖÚÚÚÚÝÝÖÚÚÚÚÖÚÖÚÚÚÚÝÝÚÚÚÚÚåÝÝÝÚÖÚÚÚÚØÖÚÚØÔÖÚÔÚÝÚÖÚÔÖÚÚÖÚÚÚÚÚÖÚÔÚÚÔÚÔÔÖÚÚÚÚÔÓÔÚÔØÖÚÚÔÓÓÓÔÔÓÓÔÔØÔÚÔÚÔÚÔÓÓÔÚÔÚÓÓÓÔÚÓÓÓÓÔÓÓÓÓÓÓÓÓÔÓÔÓÓÓÚÓÓÓÓÓÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÇÓÓÓÓÓÓÓÓ×èèèèèèèèèèëèèèèèèèèèèèèèèèèèèèèèèôèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèáèèèçèèèèèèèèèèèèâèâèèáèçèèèèçèèèèáèèáèèèèèçááâççèááèáçáççáèçááèçáçèááçáèááçááááááááááááááèçèáááááááááßáááçááááßááßßßáááááááááçááßááááááááßßßßáßáßßßßáááßßáßßßáßßáßßáßßáßÑßááááÎÌÆƒxZ@=!!!!!!!=!!=9u÷ÿÿÿÿÿÿÿÿá=$!!!!!!!! !!!!! ! !!!!!! ! !! =sªèûüüûüüüúüüüþþúúúûúúúúüúüúúúúæÓ                                                                                                                                                                              ×Ó÷÷úúóúóúóúó÷úúúüÿÿÿÿþÿþÿÿÿÿþûÖ~‘~}‘~}~~~~~‘~}‘¡¡‘‘‘~¡‘~~‘~‘‘¡¡¡¡¡¡~‘‘‘‘¡~~¡¡‘¡¡¡‘‘¡¡‘¡‘‘¡~¡¡¡¡¢‘¡‘¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡¡‘¡¡¡‘¡£¢¡¡¡¡¢£¢¡¡¡¡¡££¡¡¡¢¢¢¢¡£¦Öûÿÿÿÿÿÿÿÿÿÿÿþõå­££¢¢¡¢¢¦¢¡££¢¡££¦¢¢£¢¡££££¢£¢¢¢¡¡££££¡££¡¢¢¡¡£¦¡¡¦£¢¡¡¢¡£££¦£££¢‘¡£¡¡¡¢££¢¡¡££¡¡£¢¢¡¡¡££¡¡¡¡¡¡¢¦¡¡¡Ÿ¡¢¡¡¡¡¡¡Ÿ¡¢¡¡¡¡‘¢¡¡‘¡¡¡¡¡‘¡¡¡Ÿ~‘‘¡¡¡¡¡‘‘¡‘¡‘~‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘~~~‘€‘‘~~~€‘~~~‘}~~~~‘‘~~‘~}}‘€}~}}~€}}}}~‘}|}}}~}}}}}||}}}||}||}}vv}~}v|vv}}}||žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú΂C@=!!!!!!=@ðÿÿÿÿÿÿÿýÆ!!!!!!! !! !!  p¥èýüúüüûüýúýüþýúúýúüúýúûüúüüüüàÓ                                                                                                                                                                                 Ó×óúóóúóúóúóúóúóóúþÿþÿÿÿÿþÿþÿÿûÖ ~¡}~~}~}}~~~~‘¡¡¡‘¡‘~~‘‘~‘‘~~~~~¡¡¡¡¡‘‘¡~‘‘~~~‘¡‘‘¡¢£¡¡‘‘¡~~¡‘~~~¡¡¡¢¡¡‘¢¦¢‘¡¡‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡¡£¡¡¡¡¡‘¡¡£¢¡£¡¡¦¦£¡¡¢¢¢¡¡¦ÝýÿÿÿÿÿÿÿÿÿÿõÚ¦¡¡££££¢¡¡££¢¡¡£¡¡¢¦¦£‘¡¡£££¦£¡¡¡¡¡¡££¢¢¢¡££¢¡¡¡¡¢¡¢¢¢¢¡¡¡¡¢£¦¦©¦££¡¡¡¡¡¡¡££££¡¡¢¡¡¡¡¡¡¡¡¢£££¡¡£¡¡¢££¡¡‘‘‘‘¡¡¡¡¡£¡‘¡¢¡¢¦¡¡‘~¡¡‘¡¡¡~‘¡‘¡¡¡¢¡¡¡¡‘¡‘¡¡‘~‘¡~‘‘‘¡¡~~‘¡¡‘‘~~~¡‘‘‘‘‘}}~~‘‘‘~}~}~‘‘‘‘~}~‘~~}||‘}}~~~}}}}|}~}}}}~||}~}}|}|}}}p|v}~}||p}}}}}™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüáz@$!!$!!9ßÿÿÿÿÿÿÿþ‚!!!! !!!! !! !!!     $p’ëúýüûüüûúýúüÿýûúúüûúúüúúüúúúúæÓ                                                                                                                                                                 ÓÓúóúúóúóúóúúúóúúüÿÿÿÿþÿþÿÿÿþÿúÖ ¢}}}~‘~}‘~}~~~~~~‘‘~~}‘‘~~~‘~‘‘~~~‘¡‘~¡¡‘‘¡¡‘¡‘‘¡‘‘¡¡¡¡¡¡‘¡¡¡‘¡¡¡‘¡¢¢¢¡¡¡¡¡¡¡Ÿ¡£¡¡¢£¡‘¡¦¢¡¡¢¢¡¡¡¡¢¢¢¡¡¡¢¡¡¡¢¡¢£¢¢æþÿÿÿÿÿÿÿÿÿûÜ¢£££¢¡£¢¡£¡¡¢¢¢¢£¦¢¢£¢¡¦¢¢¢£¢¡¡££¢££££¡¢¢£¢¢¢££¢¡¡¢¢¢¢¢¡¡£¦£¡££¢¡¡¢¢¢¢¡¢£¢¡¢¦¢£¢¡¡¢£££¢£¢££¢¡¡¡¡¢£¡¡¡¡¡¡¡¡¡‘¡¡¡£¡¢¡‘¡¡¢‘¡¡¡‘¢£¡¡‘¡¡¡‘‘¡¡¡¡¢¡‘‘‘~¡‘‘~~¡¡~~‘¡¡‘~‘‘~‘¡~}~‘‘‘‘~~‘~}~~~~~}~}~~}~}~~}}~}‘}}~~}}}}}}~|}}~}}}}|}~}}}}}}}}}}}}|}}}}}}rvp}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáx=!!!!!!!$9Èÿÿÿÿÿÿÿú_!!!!! !!!!! !!!   =}ªéüüúüüüüüüüýþüúüúúúüúûüüúüüýüàÓ                                                                                                                                                              ×Óóúóóúóúóúó÷óúóóóÿþÿÿÿÿþÿþÿÿÿûÖ¢}~‘‘‘‘~}‘‘~}~~~}}~‘‘‘~}‘¡¡‘‘‘‘‘~~~~~}~~~¡‘‘‘‘¡¢¡¡‘‘‘‘¡¢¡‘‘¡¡¡‘££¡~‘¢¡‘¡‘‘‘¢£¡¡¡¡¢¡¡‘¡££¡¦£¡¡¡¡¡¡¢¡¡¡¡¡££¡¡¡£¢¡‘¡¢¢¡¢¦ãþÿÿÿÿÿÿÿÿûÚ«¦¦¦£¢££¡¡¡¢¡¡¢£¡¢¦£¢£¦¢¡¢¡¢£¢¡¡¡££¢£££££¢££¢£¢£¢¢¡¡££¢¡‘¡¡¢¢££¡¢¢£¡¡¡¡¢£¦¦£¡££¢££¡¡¢££¡¡££££¢¢¢¡¡¡¢¡¡¡¡‘¡¡¡¡¡¡¡¡£¡¡¡¡‘¡¢£‘¡‘~~‘¡¡¢¢¡‘¡¡¡¡‘‘¡¡~¡¦¢¡‘~~~‘¡¡~~~~‘‘‘~‘¡¡‘‘¡~~}~€¡‘~~~‘¡~}}~~~~}}~}}~~}}}}~~}}}~~}~}}}}}~}~‘}}}~~~}}}}~r}}~~~}}~}~}p}}|}}}rpvžûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎx!!!=$=Îÿÿÿÿÿÿÿñ@!!!!!!! !  !!!! $ŽªèúýýúýúüüûüüþþúúúýúúüüúúüúúúüàÓ                                                                                                                                                          ÓÓúóúúóúóúóúúúúúúüÿÿÿÿþÿÿÿÿÿþþûÖ }}~‘~~}}~~~~~~~~~‘‘‘~~}~‘~‘‘‘~‘‘‘‘¡¡‘~¡‘¡¡‘~‘‘¡¡¡~¡¡‘¡¡¡¡¡‘‘¡¡‘£¢‘¡¡¡¡¡¢¡¡‘¡¡¡¡¡£¡‘¡¡¡¡¡£¢¡‘¢¢¢¢¡¡¢¡¡¡¢¢¡¡¡¡¢¢¢¢Öûÿÿÿÿÿÿÿÿí­££¢¡¢¡¢«¦¡¢££¢¡££¢¡£¢£¢¢¢£££¢¢¢£££¦£¢£¡£££¡¡¢¢£¢¢¢££££££¡¡£¦£££££¢¢¢¢¡¡¡¡£¢£¢¡¡¡¡¢¢¢¢£¢¡¢¢¢¢¡¡¡¡¢¡¡¡¡¡£¢¡¡¡¡¡¡¡¡¡¡¢¢¢¡¡¡‘¢¢¡¢‘££‘‘‘‘¡¡¡¡¡¡¡‘~¡¡‘‘¡‘‘¡‘‘‘¡‘¡‘¡‘‘‘~}‘‘‘‘‘‘~~‘‘‘‘~~~‘¡‘‘‘~~‘}~~~~~~}~~~~}}~~~~~}~}}~~}}}}~}}}}}}}}}v|}}}~}}rv}~}}rv}}v|}|žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü‚=!!!!!!@ñÿÿÿÿÿÿÿÌ!!!!! !!!!!!  !q¥éýúýüûýûýüüýþýüúýúúúüúüüúýúýúæÓ                                                                                                                                                                    Ó×óúóóúóúóúúóóúóóóÿþÿÿÿþÿþÿÿÿÿûÖ~}~‘~}}}}~}}‘‘‘~}‘‘~~~‘~~}}‘~~‘¡¡‘‘~‘¢¢~~‘¡¡¡¡‘~‘‘‘¡¡‘¡~‘‘¢¦¡‘¡‘¡¡~‘¡¡‘¡£¡‘‘~¡££¡£¢¡‘‘¡¡¡¢££¡¡¡¢¢££¢¡¡¡¡¡¡¡¡£¢¢¡¡­ûÿÿÿÿÿÿÿÿê«¢¡¢¡¡¡¦«««£¢££££££¢¡¡¡¢¡¡¦¦£¢¢¡¢¢£¦¦¦¢¡¢££¡¡¡¢¦¢¡£¦«©££¢££¢¢£¦¦¦¦££¡¢££¡¡¡¡¡¢¢¡¡¡¡¢¡¢££¢¢¢££££¡¡¡‘¡¢¡‘££¡¢¢¡¡¡¡¢¡‘¢¦£¡¡¡¡££¢¡‘¡¢¡‘¡¢¡¢¡¡¡‘~‘‘‘¡¡¡~‘¡‘‘¡¡~~~~‘¡¡¡~‘¡¡~‘‘¡‘~‘}~¡‘¡¡‘‘¡¡‘~}~~~~‘}}~~}}}}}}~‘~~~}~~}||}~s}}}}}|}}}}}}}}}vvp}~}|}r|}}}}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ@!!!!]üÿÿÿÿÿÿü]!!! ! !!!!!!! !! !!!    !  !p’èüüüüüüüúýúýþýúúúûúýúüúúüúýúüàÓ                                                                                                                                                                                           ÙÓúóúúóúúúóúúóúúúüÿÿÿÿþÿÿÿÿþÿÿúÖ}~}~~~~}~~~~~‘~~~}~‘‘‘~~¡¡~~‘~~¡¡‘¡~~¡¡€~¡¡‘~‘¡¡‘¡¡¡‘~¡¡¡‘¡‘¡¡~¡¡‘¡¡¢¢¡¡¡¡¡¡¡¢¡¡¡‘¡¦¡¡¢¡¡¡¡¡¡¡¡¡£¢¡¡¡¡¢¢¡¢¢¡¡¡¢¢¢¡¡¡¦õÿÿÿÿÿÿÿþÝ¥¡¡££¢¡¡«¢¡¡¡¡£¢££££¡¢£££££¢¢¢£££££¦£¡¡££££¢£¡¢¦£¡¡££££¢£¢¡£££¢¢¢¢¢¢££¢¡¡££¢¢¢¢¢¡¢¢¢£¢¡¡¢¡¡¢¢¢¡¡¡¡¡¡¢¢¡¡¢¡¡‘¢¢¡¡¡¢¡¡¡¢¡¡¡‘¡£¡‘¡‘‘¡¡¡¡¡‘¡‘¡£¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘~~¡¡¡¡‘‘~‘‘~‘‘~‘¡‘~‘~}‘¡‘~}~~‘}}‘}~¡}}‘~}}‘~~~}}~}}}‘}}}~}|}}}}}~~~|}~~pr}}}}}}}}}v}}}}|p}}§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ@!!!!!@‚þÿÿÿÿÿÿÏ!!!!!!! !!!! !qªéýûüýúýúýúýüþýüúýúüúüúüúýúúüúæÓ                                                                                                                                                                             ÓÓóúóóúóúóúóú÷úóóúþÿþÿÿÿþÿÿþÿÿûÖŸ}}}}}~~~~‘‘~}}}~~}}~¡¡¡~}‘¡‘‘~~~¡¡‘¡¡‘‘‘¡¡‘~¡¢‘~‘¡¡¡¡‘¡¡‘‘¡¡~¡¡~‘~¡¢‘¡¡£¦¦££¡¡‘‘¡¡¡£¡¡¡¡¡¡¡¡£¦£¡¡¡¡¢¡¢£¡¢£¢¢£¢¢£¡¡¡¡¡¥ëþÿÿÿÿÿÿþÚ¢¡¡¢£¢¡¡££¡¡¡¢£¡¡¡¦££¢¡££«©¡¡¡££®££¦£¢¡¡¡¡¡¢£¢¡¢®¦¡¢£¡¢££¢£¦¦££¢¡¢¡¢¢¡£¡¡¢£¦¢¡¡¢¢¢¡¡¡¢£¡¡¢¢¡£¢¡¢¢¡¢££¢¡¡££¡¡£¢¡¡£¡¡£¡¡¡¡¡¢¡¡¡‘¡¡¡£¡¡£‘¡£¢‘~¡¡¡~¡¡¡¡¢¡¡¡‘‘~~~~¡¡‘‘~~¡‘‘‘~}~~~‘¡‘~~~~}}~}}}}‘‘~}~‘~‘‘~}~~~}}‘‘‘~}‘‘~}}}~~}~‘}}}}}~~}}~}}~}}}}}r~}}s}vr}}}}}rv}§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç@!!!!!!Æÿÿÿÿÿÿüx!!!!!!!!!!!!!   9qªèüüýúýúýúýúüÿýúúúüúüúüúüûúýúüàÓ                                                                                                                                                                        Ó×úóúúúóúúóúóüóüúüÿÿÿÿÿþÿÿþÿÿþûÖ~~~~‘‘~~~}~~}~‘~~~~~‘~~~~~‘~~¡‘~~‘‘‘‘~~¡¢~¡¡‘¡‘~‘¡¡¡¡~¡¡¡‘‘¡¡¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡£¢¡¢¡¡¢¢¡¡¡¡¡¡¡¢¢¢¡¡¢££¢¡¡££¡Ôûÿÿÿÿÿÿÿݦ¢¢¢¢¢¢¢£¢¡¢¢¢££¢¢££¡¢¢¢£££¦¡¡£¦£¦¢¢£¢£££££¢¢££¡¢«¦¡¢¢¢£¢¢¡££¡¡¢¢£££¦£¡¢¢¢¢£¦£¡¢£¢£¢¢¢£¢¡¡££¡¡¡¡££¡‘££¡¡¡¡¡¡£¡¡¢¡¡¢¦¢¡¡‘¡¦¡¡¡¡¡¢¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡‘‘¡¡¡¡¡~‘‘¡¡¡¡¡‘‘‘‘¡¡¡‘‘‘‘~~‘¡~~‘~~‘~~¡~~~~}~‘}~~~}~~~}~~~~}}}~~~~}}‘}}}}~~}~}r}}}~}}}}~}}}|}}rv}}}}|v}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ=!!!!@òÿÿÿÿÿÿá!!!!!!!!!!!! !!  !pªíûüüüýüûüüýýýýúüúüúüúýúûüüüüúæÓ                                                                                                                                                                                            ÓÓóúóúóúúóúóúóúóúóÿÿþÿÿÿþÿÿÿÿÿûÕ~}}~‘‘‘}~‘¡~~~~}}~~}~~~~~~~~~~~~}‘~~~~‘¢¢~~‘‘~¡~‘¡£‘¡¡¡¡¡¡¡‘¢¢¡¡‘‘¡¡¢££¢¢¡¡¢¡¡¡¢£¢¢¡‘¡£¦¢¡¡£¡‘¡¡¢¡¡¡¡££¢¡¡£¢¦íÿÿÿÿÿÿÿë«££¢¢¢¢¡£¡¡¡¢¢¢££££¢¡¡¡¡¦¦¡¡£¡¡¢£¦«¦¦¦¢£¢¢¦¦£¡££¢£¦£££¢¢¡¡£¢£¡¡¢¢¡£¦««¦¦£££¡¡¦£¢¦¦£¡¡¢¦£¢¡¡££¢¡¡¦£¡¡¡£¢¡¢¡¡¡£¢¡£¡¡£¡¡¡¡¢¢££¢¡¢¢¡¡‘¡¡‘¡¡¡¢¢¢¡¡£¡‘¡¡‘¡‘¡¡¡¡‘‘‘¡¢¢¡‘‘‘¡¡‘¡¡¢¢‘~~~~~~¡‘~‘¡~}~~‘‘~~‘~~~}}}}‘~~~~}‘‘}}}~}~~‘~}~}}~}~}}}|}}}}rp}}}~}}}}}v}}pp}||}}™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!!!!–ÿÿÿÿÿÿü‚ !! !!!!!! !!   ! !  =sªèüúýúüüüüûúýþýûúýúüúüúüüúúüúüàÓ                                                                                                                                                                                         ××ú÷úóúó÷úóúóúúúóüÿÿÿÿÿþÿÿÿþÿþûÖ~~}~~~~~}}~‘~~~‘‘‘~~~‘‘‘‘~~~‘‘‘‘‘¡¡‘‘‘‘‘¡‘~‘‘¡¡‘‘¡‘¢¡¡‘‘¡¡¡¡¡‘‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡¢¡¢¡¡¡£¢¡¡¢¡¡¡¡¢¢¢¢¢¡¡¢¢¡¡¡£Úýÿÿÿÿÿÿõ«¢¢¢£¢££¢¢¡££££¢¢¢¢£¡££££¦¡¢£¢£¢£¢£¦¢£¢¡£¡£®£¢£££¡¢¢¢¦¦¢£¡¢¢¢££¦¦£¢¢¢¢¡¢£££¡¡¢¦£¡¢££¡¢£¢¡¡¢¢££££¡¡¢¢¡¡££¡¡¢¢¢¡¢¡£¦¢¢¡‘¡¡¡£¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¢¡‘¡¡‘‘‘¡¡¡¡¡¡‘¡‘‘¡¡¡¡¡‘¡‘‘‘¡‘‘‘~‘‘‘¡‘€‘‘~~~~‘‘~~~‘‘‘~}~¡‘~~~~}}‘‘}~}~~‘}}~~}}~~}}}~~|}s}‘}|}}}}}}}}}}}}~}}}}}}p}}}}p}}žûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ‚!!!!!@òÿÿÿÿÿÿç9 !!!!!!!!!!! !  =s¥ëüýüýûüüüüüýþýüúúüúýúýúúüüúýúæÓ                                                                                                                   Ó×÷úóúóúúóüóúúóúúúþÿþÿÿÿÿþÿÿÿÿûÖ~~~‘~~}}~~}~‘¡¡¡‘~¡¢¡¡~~~‘¡‘¡¡‘¡‘~¡¡¡~~‘‘‘¡¡‘~¡‘‘‘¡¡‘¡¡£¡¡¡‘‘‘‘¡£¢¡¡¢¢‘‘‘¡¡¡¡¡¢¡‘¢££¡¡¡¢¡¡¢¢¢¢¢¢¢¦£¡££¡¡¢¦íÿÿÿÿÿÿûܦ¢£¢£¦¦«®¦¢¡¡¢¦£¡¡¡¢¢£¦£¦£¡£¢¡£¦£¦£¡¡¡¡£¡¡¦«¦£¡£¡¡¡£¡££¡¡¢£¢¡¢¦««¦££¡¡¢¡¡££¡¡¢£¡¡¡¢¢¢¢¡¡¡¢£¦£¢¢¢¡¡¡¡¢££¡¢£¢¢¦££¢¡¢¢¢¡¡¢¡¡¡¡¡¢¡¡¢¡¡££¢¡¡¡¡¡¡‘¡¡‘~¡£¡¡‘¡‘‘¡¡¡¡¡¡‘~~‘‘~‘‘‘¡¡¡~‘¡‘‘~~~‘€‘‘¡‘}‘¡¡‘~}~‘¡‘~}~~}~‘‘}s}~~}}~~}}}}}}}s}}||~}r}~}}}|~~~|p}}}~}}}pp}~~}}}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Z !!=ƒÿÿÿÿÿÿü !!!! !!!! !!  !!pšèýúüüüúýúýúüÿýúüüûúúûúüüûúüüüàÓ                                                                                                     ÓÓúóúúúóúúóúúóúúóüÿÿÿÿÿþÿÿÿÿþÿûÖ~~~~~~~~~‘~}~¡‘~~~‘‘‘}~~~‘¡¡~¡¡‘‘~~¡‘‘¡‘¡‘¡‘‘‘¡¡¡~¡¡¡¢¡‘¡‘¡¡¡¡¡¡¡¡‘¢¢¡‘¡£¡‘¡¢¡¡¡¡¡¡¡¢¡¡¡£¢¡¡¢¡¡¡££¡¡¡¡¢¢¡¡££¡¡¦åþÿÿÿÿÿÿÚ¦¦¢¢¢¢¢¡¢¦£££¡¢¦¦¢¢¢¢¢¢£¢££££¡¡£¦£¦¢¡£¡£®£¡£¦£¡££££¢££££¡£££¢¡£¦¢£¢£¢¡£«£¢£££¢¢¢¢¢¢¢¢¢££¢¢£££¡¡¢¢¡¡££¢¢¡¡£¦¡¡¢£¢£¡¡¡¢¡‘¡¡¡¡¡£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡¡‘¡¡¡‘¡¡‘‘‘¡‘‘‘‘¡¡‘‘‘~‘~¡‘‘‘~‘‘‘~~~¡~~}~~~~~}~~~}~‘‘}}~~}~~‘}}~}~}~}~}}}}~}}}~}~~|}}}}}}}}}}}sv}~}}}v}ržúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ!!!$!@òÿÿÿÿÿþÈ!!!!!!!!! !!!!=qªëúýûüüýüýúýýýýüúúüüüüüúûüüúüúæÓ                                                                                                           ÓÓúúó÷óúúóúóúúúúúúþÿÿÿÿÿþÿþÿÿÿûÖ}‘‘~}}}~~‘‘}~~}~‘‘‘‘~~¡~}~‘¡‘~~‘¢¡‘~¡‘‘¡‘¡¡¡~~¡¡¡¡¢‘~¡££¡~‘¡¢¡¡¡¡¡‘‘¡‘‘¡¡¢¦£¡¡¡¡¢¡¡¢¢¡‘¡¡‘¡¡¡‘¡¦£¡¢¢¢£¢¡¡££¢£­öÿÿÿÿÿÿö­¢¢££¢££¢¡¡¢¦¦£££¢¢¦¦£¦££¡¢£££¡¡¢¦£¢¡¡£¡£¦¡¡¢¢¢£¦®¦£¡¢£££¢¢££¢¡£¢¡¢¢¢¢¡£«¦£££¦¦¦££¢£¦¦¦¦¦¦¦£¦£¡¢¢¢¢£¦¦¡¡¡¡£¢¡¡¢¡¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¢¡¡¡‘¡¡¡¢¢¦¢¡‘¡£¢¡¢‘‘¡¢¡¡‘¡‘¢¡‘¡¡¡¡‘~~‘¡¡‘~‘‘‘~~¡‘‘‘~}~~‘‘‘~~~}}}}}~}}~}~~}~~}}~}}~~}s}~‘¡}s}}}~}~~~~}}}r}}p}}s|rp}}||}}}}|v}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüZ!!!!!–ÿÿÿÿÿÿñ!!!!!!!!!!!!    =s¥éüüüúýúýúýúýþýúüüúúúúúüüüúüüüàÓ                                                                                                           Ó×úóúúúóúúúúúóúóúúÿÿÿÿþÿÿÿÿÿÿþûÖŸ~~~~~~~~~‘~}‘‘~~‘‘‘‘‘~~¡‘‘‘‘‘‘‘‘‘¡~¡¢‘~‘¢‘‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡¢‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¡¢¡¡¡¡¢¡¡¡¦£££¡¡££¡¡£¦¡¡ÔûÿÿÿÿÿÿÚ¢¢¢¢¢£¦££¢¡¢££££¢£££¡¢£££¢£££££¢£¦¢¡£¢£¢£¦££¢¢¢¦££¦££¦¦¢£¢£££¢¡£¢£¦¢£¢¡£¦££¢¡£¦££¢¡¢££££¡¢¢¢££¢¢¢¢¢¢££¡¡¡¡¢£¡¡¡¢¡¡¡¡¡¡¡¡¡£¢¡¡¡¡¡¢‘¡¡¡¡¡‘¡¡¡¢£‘¡¡‘‘¡¡¡¡¡¢¡‘¡‘¡¡‘~¡¡‘¡‘¡¡¡‘‘¡‘‘‘¡‘‘‘¡‘‘‘‘~~~‘‘~~~~~~~~~‘‘~~~~}~~~~~~}~}~}}~}~}~}}}~}}}¡~}}|}}}~~}}}}}}}}||}}r}}}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ=!!!!Yýÿÿÿÿÿ÷[!!!!!!!!!! !!=}’éúýüýüüýüüýýþýüúúüüýýüúüúýúûüàÓ                                                                                                          ÓÓóúóúóúóúóúóúúúóüþÿÿÿÿÿÿÿþÿÿÿûÖ¢¡}}}~~~~~~‘¡¡¡‘}}~€¡¡¡‘‘‘¡‘‘‘~‘¡‘~‘¡¡‘‘‘¡¡~¡¡‘~‘¡‘‘¡~¡£¡‘¢¢¡‘‘¡¡¢¢¢¡£¡‘‘¡¡¡¢¡¡¡¢££¢¡¡¢£¡¡£¦¦¦¢‘¡¢¢¡¡£¢¢¡åþÿÿÿÿÿõ¬¡¢¢£¢¢¡¡¦¦¢¢£¦¦¦£££¡¡¡¢£¢¦££££¦¦£¢£¦©£¦£¡¦«¦¢¡¢¦£¦¦£¦«¦£££¦¦¢¡¡¢¡¢¢¡¢££¦£¡¡¡¡¡££¡¡¡¢¦££¢¢¢£¡¢¢¡¢¡¢£¢£££¡¡¡¡¡¢¡¡¡¢¢¢¡¡£¢¡¢«¦¢£¡¢¡¡¡¡¡¢‘¡‘¡‘‘¡¡¢¡‘¢¢¢¢¢‘‘¡¡~‘‘~¡¢¡‘~¡¡‘¡¡‘‘¡¡¡¡~}~‘‘‘~~~¡¡¡‘‘¡‘~‘‘‘‘}~}~~~‘~~~}~~~}}}}~~~~}}~€}}}sp}}‘~}}||p}r}}}}}wrvr}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ_$!!!@áÿÿÿÿÿýÅ!!!!!!! !!!!!!!! !! ! qšëýúüüúýúýúüüþýüúýúúúúúýúüúüüüæÓ                                                                                                  Ó×úúúóúúúúúóüóúóüúÿÿÿÿþÿþÿÿÿþÿûÖ  ~}‘}~‘~~~~~‘€~}~~¡‘~~‘‘~~¡¡~~‘‘‘‘¡¡‘¡~¡¡‘¡¡¡‘¡¡¡¡¡~¡£¡‘¡¡¡¡¡‘¡‘‘¡¢¡¡¡¡¡¡¡¡¢£¡¡¡¡¡¢¢¢¡¡¢¡¢¡¢¢¢££¡¡£¦¡¢¢¡¢¦íÿÿÿÿÿÿÝ¢¡¢£¢£¢¡£¦£¢¢¢£¢££££¢£££££¦¡¡£¡¦®¢¡£«£¢£££¦¦££¡¢££«¦¢£££¢£££££¢£¢¢£¢¢£££££¢¡£££¢¢¢¢¢¢¢¢¢£££¢¢££££¡¢¡¡££¢¢¢£¡¡¢¢¡¢¡¢¢¡¢£¢¡¡¦¡¡¡¡¡¡¢¡¡¢¢‘¡‘¡¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡¡‘¡¡‘~‘¡¡‘¡‘¡¡¡‘‘‘‘‘¡‘‘‘‘‘‘‘~‘‘‘‘~~}~‘‘‘~~~~‘~~~~~~~~~‘~~~}~}~~~}}~~}~~}}~~}~|}}}}}~}}r}}}}|v}}}}}}}}|pžûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ!!!!!Æÿÿÿÿÿÿá!!!!!!!!!!  !q¥èýüýûýúýúýûýÿýúüúýúýüýúýúýúüúàÓ                                                                                                         ÓÓúóóúúóúóúúóúúúóüþÿÿÿÿÿÿþÿÿÿÿûÖ~¡~}‘‘~~~~}}}}~~~~~~~~~}~~~~}¡¡~~~‘¡¡‘‘~~‘¡¡‘‘‘¡¡‘‘¡‘¡¡~~¡¢‘¡£¡‘~¡¢¡¡¡¡¡¡¡¡¡¡£¦¡¡£¦¦££¢£¢¡¡¢¢¢££¢‘¡¡¢¢¡¡¦«¦£¡¡¡­ûÿÿÿÿÿýÔ¡¢£¡¡¢¢¡¢«¢¡¡¡¡¡¡¢£££®¦¦¦££¢¢£¡¢«£¢¦£¡¡¢¦¦«¢¢¢¡¡¢¢¦£¡¢¡££¢¡¡¢£¦¦££¦¦£¢£¦££¡¡££¢¢¢¦¦££¡¡£££¢¢££££¡¡¢¢¡¡¡¡¢¦¦¦¡¡£¢¡¡£££££¡‘¡¡‘‘£¢¡¡¡¢¢¢¡¡‘¡££¡¡¡‘¡¡‘‘‘¡‘‘¡‘¡¡~¡¢¡¡¡‘¡‘‘¡¡~~~~}~~‘¡‘‘¡¡‘‘‘¡¡}~}¡~‘‘~}~‘~~}}}}~~~‘~}~~~‘~}}}~}~}}~}}}}}}}}}~}|}}~~}}}s}}}}}}}v|žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó!!!!xÿÿÿÿÿÿ÷Y!!!!!!!!!!! =qªëüúüüúýüüüüüþýüûúúýúúúüúúüüüüæÓ                                                                                                                        Ó×úúúóúóúúúóúüóúúüÿÿÿþÿÿÿÿÿÿþÿûÖ~~~~~~~~~}~~~~~~~~~~~‘‘‘¡~¡¡‘¡¡¡‘~~‘¡¡‘¡‘¡‘~¡¢¡¡¡~‘¢¡‘¡¡¡¡¡~¡¡¡¢¢¢¡¡¡£¡‘¢¦¡‘¡¢¢£¡¡¡£¡¡¡¢¢¢¢¡¡¡¡££¡¡¢£¢£¡¡¡Ýþÿÿÿÿÿõ­££¢¡£££¡¢¦£¡¢££££££¡£¦¦££££¢£££¢££¢£££¢£¦£¦£¢£¢£¢£¦¦££¡¢££¢¢££¦¦£££££££¦¢¡¢¢£¦¢¡££££¢¢£££¢¢££¡¢¢¢¡£¢¢¢¢¡¡¢£¢¢¢£¡¡¡£¢¡¢¢¢¡¡¡¡¡¡£¡¡¡¡¡¡¡¡¡‘‘££¡¡¡‘¡£¡‘¡¡¡¢¡‘¡¡¡‘‘¡¡¡¡~~‘‘¡¡¡‘¡¡~~¡¡‘‘~‘‘~~‘¡~~~‘¡‘~~‘‘~~‘~~~~}}‘‘}~‘‘}~}}‘‘~~}}}~~}~}}}¡~p}}}~~}}}}}|}~}}}s}}|r}|}}s|žûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ!!!!Cóÿÿÿÿÿüƒ!!!! !!  !!!!! !q¥èüýýúýüüûüüýÿýúüüúüüüýúýüýúýúàÓ                                                                                                                  ÓÓóóúúóüóúúúúóúúóúþÿÿÿþÿÿþÿÿÿÿûÖ}}}}~~‘~‘‘~}~~~‘‘‘‘¡¡‘~~‘¡‘¡¢¡‘‘‘‘‘‘¡¡¡‘¡¡¡‘‘‘‘¡¢¢¡‘¡¢¡~‘‘¡¢¡¡¡££¢£¢¡¡¢¢‘¡£¢¡‘‘¡¡¡£¡¡¢£¢££¡¡¡¡¢£¡¡¡¡¡¡¡¡¢ëÿÿÿÿÿÿꦦ¦£¡£«¦¢¢£¡¢¦¦¦£££¡¡£¦¢¢¢¢¢££¦¦£¡¢¡£«¦£¢¢£¦¦¢££¦¦£¦£¢££¦¦¦£££¡¢£££££££¦¦££££¦¦£¢¢¢¡¡¡£££¡¡£££¢¢¡¢££¢¢¢¢¡¡¢¢¡¢¢¢¡¡¡¡¡¡¡¢¢££££¢¡¡¢¡¢¢¡¡¡¡£¡‘¡¡‘¡‘¡¢¦¡¡¡‘‘¡¢¡¡¡¡¡¡¡¡¡‘~‘‘¡‘‘¡¢¡¡¡‘¡¡‘~¡¡~~~~~‘~~}~¡¡¡‘~}‘‘‘~~~}‘~~¡‘}~‘‘~}}}}}}~~~~}}}~}}}}}}r}}~~}}s}}}~}r}}|}~}pp}}~}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!@ÌÿÿÿÿÿüÆ!!!!!!!! !!!!   !q¥ëýúüýúýüüýúüþýüúúüúúúúüüûúüüüæÓ                                                                                                                     ÓØúúúóúúóúóúóüóúúüÿÿÿÿÿÿÿÿÿÿþÿûÖs}~~~~~‘~‘‘‘~}~‘~}~‘‘‘¡‘‘‘‘¡¡‘‘¡‘‘¡‘~‘¡¡¡¡‘‘‘¡¡¡‘¡‘¡¡‘¢¡¡¡¡¡¡‘‘‘¡¡¢¡¢¡¡¡¢¡¡¡¡¡¡¡¢¡¡¡‘¡¢¢¡¢¢¢¢¢¡¡££¡¡¢¢¡¡¢¢¡¡¦íÿÿÿÿÿþÝ«££¢¡¢£££¢£¢££¦¦£££¡¦¦¢¢££¢¢££¦®¢¡£££®££¢¡£¦£££¦££¦¦££¢¦¦¢£¦¦£¢££££¢¢£££££¦£££££¢¢£¢¢£££¡¡£££¢¢¢¢¢¦¦¢¢¡¡¢¡£¢££¡¡¡¡¢¡¢¡¢¢¢¢¡¡¢£¡££‘¡¦£¡¡¡¡¡¡¡¡¡¢‘¢¡¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¢¡¡‘‘¡¡~¡¡¡‘¡¡~~‘‘¡‘~~‘~~‘‘‘‘~~~~‘‘‘~~‘}~~}‘~}‘}}~~~‘}}}~~~~}}}}}}s}}}}}}}}r}}}s}~}}}}}}}v}}}}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ!!!!!–ÿÿÿÿÿÿÈ!!!!!!! !!  !!! =q¥éüüýûüüúýüüýÿýúüýúýüýüúüüüüûüàÓ                                                                                                      Ó×úóúúóúúúúúúóúúóúþÿÿÿÿÿÿÿÿÿÿÿûÖŽ~}~}}}~~~}~‘‘~‘¡‘‘‘‘~~‘~~‘€‘¡~~~~~‘¡‘~‘¡¡¢¡‘‘¡¡¡‘¡¡~‘¡¡¡¢‘‘¡¡¡¢¡¡¢¡¡¡‘‘‘¡¡¡‘¡¡¡¡¡¢££¡¡¡£¦¦¡¡¡¢¡¡¡¢¦¦¢¡¡£££¢£¢£­õÿÿÿÿÿûÔ£££¡¡¡¢££¦££¢¢¡¡¢£¢¢¦¢¡¢£££££¢£¦£¡¦£¦®££¢¡¢£¡£®¦£¦££¢¢£¦£¡£¢¢¢££¢£¦££¢¡¢¡¦®¦££¡¡¢¦¦¦¦¦¦£¡¡¡¡¢£££¢£¦¢¡££££¢££¢£¢¢¢¢£¢£¢¡¢¡¡¡¡¢££¦¢‘¢¦¢¡¡¡¡¢¡¡¢¡‘¡¢¢¡¡¢¡¡¡¡¡‘‘¡¡¡¡¡¡¡¡‘~¡‘‘¡¡¡‘‘~‘¡~‘‘‘¡¡~‘‘¡‘~~~~~~~~~‘~}~‘‘~}}‘¡~~~~~}}~}}}~}}~~}~~~}|}}~~~~}}}}}}}}~}}}~~}vr}}s}}p™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý!!!!!‚ÿÿÿÿÿÿÏ!!!!!!!!! !!!  =q¥èúýüüýûýúýúüþýýúüúüúúúýüüúüüüæ×                                                                                                                ÓÓ÷üóúúúóúóúóüúóüüÿÿÿþÿÿþÿþÿÿÿúÖŽŽ~~~~~~~}~‘‘~‘‘‘~~‘‘‘¡‘~~‘‘~~‘¡~‘‘¡¢¡‘‘‘‘¡‘‘¡‘¡‘¡¡~¡¡¡‘¡‘¡¢¡¡¢¡¡¡¡‘¡‘‘¡¡¡¡¡¡¡¡¡¡¢¡¡£¢£¢¡¡£¢¡¡¢¢¦¦¡¢¡¢¦¦¢¡¢¢­øÿÿÿÿÿû­¢££¢¡¢¢£¦£¦£¢¢¡¡¦£¢£££££££££¦££¦£¡¦££¦£¢£¡£££¦¦¢£®¦¢£¢£¦££¦¢¡£¦£¡££££££¢¢£¦££¢¡£££££¦££¢££¡¢¡£¦£££¡¡££¢¢££¢¢££¢¡¢¡£¦£¢¡¢¡¡¡¡¢££¢¢¡¡¡¢£¢¡¢¡¡¡‘¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡~‘¡¡¢¡~‘¡¢¡‘‘‘¡‘¡‘¡‘‘¡¡‘‘~‘‘~~‘‘‘¡~¡~~~~~~~‘~‘~~}~~‘~‘~~}}~‘~}~~}~}}~~}~~}}}}~~}}}}~~}}}r}~}|}~}}|v}}}}}pšúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýB!!!!xÿÿÿÿÿÿá!!!!! !! !!! ! !!qªéýüýýúüüüüýýÿýúüúýúýüýúýúýúýúàÓ                                                                                                                      Ó×úóúúóúúúüóüóúúó÷ÿÿÿÿÿÿÿÿÿþÿÿûÖ}}‘~~~}}~‘‘~~‘‘‘¡‘‘‘¡‘~~}~~~‘~¡¡‘~¡¡¡¡~‘‘‘¡‘‘¡‘~‘¡‘‘¡¡¡‘¡¢¢£¢¦¡¡¡¡¡¡¡¡¡¢¢¡¡¢¡¡¡¡£¢¡¡¡¡££¢¡¡¢¡¢¢¢¢£¡¢£¢£¡¡­ûÿÿÿÿÿö­¢£££££¡£££¦¦££¡¢¦£¡£«£££¦££¢£¦£¢££®££¦£££££¦¦££¡¢¦£¢£¢£¦®®£¡¢££££¦£¦¦£££¡££££££¡¡¡¡¢££¡£®££¢¡¡££££¡££¡¡¡¢£££¡¢¢¢¡¡¡¢¡¢¡¡¡‘¡¢¡¡‘¡‘¡£¡‘¡¢¡£¢¡¡¡¡¡¡¡¡¡‘‘¡¢¡¡‘¡‘¡¡¡¢¢‘‘¡‘¡¡¡¡¡¡¡~~~‘¡¡¡‘¡‘‘~~¡¡‘¡‘‘¡¡‘‘~‘‘~~~~~€~}‘~~~~~}}}}}~~}}‘‘~}}}~‘~}~~~}~~}}}~~}s}|}}}r}}}}|r}}}|s}|žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_!!!!Zÿÿÿÿÿÿñ!!!!!!!  !!!!!     qšëúýúüýüýúýúüþýýúýúüúýúüýúüüüüæÓ                                                         ×ÓúúúúúóüóóúúúúúúüÿÿÿÿÿÿþÿÿÿÿÿûÖ‘‘€‘~}}~~‘~~~‘‘~‘‘‘‘‘‘¡‘}~~‘‘¡‘¡‘‘¡¡‘‘¡€¡¡¡‘¡¡‘¡¡¡¡‘¡‘¡¡¡¡¡¢¡¡¡¡¡¡¡‘¡¢¡¡¢£¡¡¡‘¡¢¡¡¡¡£¢¡¡¡£¢¢¢¢££¢¡¢£¢¡¡Öûÿÿÿÿÿõ°£££¢££¢£££¦£££¢¢£¢¡£®¦¡££££¢¦¦£¡£¦«¦£¢¦££¦£¦£¡£££¦££¦££¢£¦£££¢¢£¦££¦«¦££¡£££££££¢¢¢££¢¡£££££¡¢¦¦¢¢¢£¢¡¡¡££¢¢¢¡¢£¡‘¡¢¡¢¡¡¡¡¢£¡‘¡¢¡¡£¡¡¡¡¡¢¢¡¡¡¡‘¡‘¡¢¡¡¡¡¡¡¡¡¡¡¢¡¡¡‘¡¡¡‘‘‘¡¡¡‘‘¡¡¡‘‘¡‘‘~‘‘¡¡‘~¡¡‘~~‘‘~~~‘‘~~~~‘~~~}}~~}}~~}}~~~}~}}~~~~}~}~}}~}}}}}}}}p}}}p}r}w}~|||}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx!=!Zÿÿÿÿÿÿò!!!!!!!!! !!! ! q¥éüýýýúýüýúýýÿýúüúüúýúýúúýúýúýàÓ                                                                                         Ó×óúóúóúúúüóúóúúóúþÿÿÿÿÿÿÿÿÿÿÿûÖ‘~~‘‘~~~~~‘~~~~~‘‘‘‘~}~‘‘‘¡¡‘‘¡¡¡¡¡¡¡¡¡‘‘‘¡‘‘‘¡¡‘¢¢¢¡¡£¦¢¡¢‘¡¡¡¡¡¡‘¡¡‘¡¡£££¡¡¡¢¢¡¢¢¢¢¡¡¡¡¢¢¢¡¡¡¡‘¡¢¢£¢¢¢¢¡¢¡¡£¡¡Ýþÿÿÿÿÿ륢£££¢¢¢£¢¢££££¢£££££¦£¡¡¡¡£¢¦££¢¦££¦¦£¢¦®®©¦¢¡£¦£®££¦¦®£¢£¦£¦££££¢¡£¦££¢¢£££¢£¦¦¦££¢£¢¡¡£¦£££££¢¡£¡¡¡£¦¢¢¢¢¢¢¦££¡¡££¡¡¢¡¢¢£££¡¡£¡¢¡¡£¡¡¢‘‘¡¢¢¡¡¡¡¢¡¡¡‘‘¡¡¡‘‘¡¡‘‘¡¡¡¡‘‘¡¡‘‘¡¡¡~~‘‘¡¡‘~‘¡¡¡‘‘¡~}~‘~~}~‘¡‘‘¡‘~~~~}~}~‘‘¡~}~}}}}~¡}}}}~}}~}}~}}p}~}r}}~}}r}}}}}}}|p}}žûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–!!!@úÿÿÿÿÿóY! !!!!!!!!!    9q¥èýúýúýüûüýúüþýýúýúýúýúýýúýúüüàÓ                                                                                ×ÖúúúúúúóúóúúüóüúüÿÿÿÿÿþÿÿþÿÿþûÖŸ~~~~~~~~~~~~‘~‘¡~}~~‘‘‘¡¡~¢¢¡¡¡‘¡¡¡¡¡‘‘‘¡¡~¡¡¡¡¡¡¡¢¢¡¡‘‘¡¢‘¡¡¡¡¡¡¡¡¢¡¡¢£¡¡¢¢¢¡¢¢¡¢¡¡¡£¢¡£¡¡¡¡¢££¢¢¡¡¢££¢¡¡Ýþÿÿÿÿÿꥣ££¢¡£££¢¢¢£¦£££££«¦¢¢¡¡¢¡¦¦£££¡¦££¦£¦¢£¦«¦££¢¦£££££¦¦¦£¢££££££££¢¢£¦££¢¢£¦¢¢¢£¦¦£¢¢¢¢¡££¦££¦£¡¢¢¡££¡£¦£¢¢¡¡¦¦¢¡¢¢¢£¡¡¢¡¢«£¡¢¡¡¡¡£¡¢£¡¡¢¡££¡¡¡¡¡¡¡¡‘¡‘¡£¡‘¡¡¡‘¡¡¡¡‘‘‘¡¡‘¡¡‘‘‘¡‘¡¡¡‘~~‘¡‘~¡¡~‘~~~‘‘‘‘‘~}}¡‘~~~}~~‘‘‘~~}~~}}~~‘~}}~}~~~}}}~~}}}~}}}~~}|}}}}}}}}}rvvšûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!! @óÿÿÿÿÿ÷Z!!!!!! ! !!!  ! pªèýýüýüýüýúýýÿýúüúýúýúüúüüúýúýàÓ                                                                                                 Ó×úóúóüóüóüóúúúóúúþÿÿÿÿÿÿÿÿÿÿÿþÖ}~~~}‘‘¡‘‘~‘‘¡‘~}~‘‘~~}~~¡¢‘~~¡‘‘}~‘‘¡¡¡¡¡‘¡¡¡¡€¡¡‘‘¡‘‘‘¡¡¡¡£¡‘¡¡‘£¡¡¡¢¡¡¡¡‘‘‘¡¡¡¢£££¡£¦¢¡¡£££££¦¦£££¡¢££¢£££åþÿÿÿÿÿꦢ¢¢¡¡£¦£¢£££££££££««££££££®®££¡£®£¢£££¢¢££¢£¦££¦®¦£¢¢¢¢¢£¦£££¦¦¦£¢¢¦£¢££¢£££££¦¦£££££££££¡¡¡¦¦¢¢¢¡£¦£¢¦£¡¡¡¡¢¢¡¡¡¢¢£££¦££¦¡¡¡¡£¡££¡¢¡¡¡£¦¡¡¦¦¡¢¢¢¢¡¢¡¡¡¢¡¡¢‘¡¢¡‘¡¡‘¡‘¡‘‘~~¡¡¡‘~~‘~~¡‘‘‘‘‘¡‘‘¡‘~¡~~¡‘~~~~‘‘~}}~}}~~~¡}}}}}}}~~}}}~}}~}}}~~}}}}}}p}~}r}}vr}}}}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@óÿÿÿÿÿ÷_$!!!!!! !!!  !=sªëýúýúýúýüýúüþýýúýúüüüýüúýüüüüæ×                                                                                               ÓÓúúúúóúóüóúúúúúúüÿÿÿÿÿÿÿÿþÿÿÿûÖ}}~}~‘‘~‘¡‘~€‘‘‘‘~‘‘~~~~‘¡‘‘‘~~~‘‘¡¡‘¡¢¡¡¡¡¡‘~‘¡¡‘¡‘¡¡¡¡¢¡¡¡‘£¡¡¡¡¡‘¡‘¡¡¡¡¡¡¡¢¢¢£¢¢£¢¡¡¡£££¦¦¢££¢¢£¢¢¢£££åþÿÿÿÿÿꦢ££¢¡£«££¢¢¢¢£®¦£¦£¦££££¦£¦¦¦£¢£«££££££¢£¦¢¢¦¦£¦¦£¦£¢¡¢¢£«£££¦£©¦¢¢£¦¢¡£¦¢££¦¦£££¢£££¦«£¡¡¡£¦«¡¢£¢£¦¢¢££¢¡££¡¡¡¡¡£¡¡¢¦££¢¢¡¡¡¡¢¢¢£¡¢¡¡¦¦¢£¡¡¢¡¢¢¡¡¡¡¡¡¢¡¡¡‘‘¡¢¡‘¡‘¡¡‘‘‘¡‘‘‘~~¡¡¡‘‘‘‘~~~‘~~‘‘‘‘‘¡‘~‘‘‘‘~‘‘~‘‘~~}~¡‘}}~~}~~‘}}‘~~‘}}}~~|}}~~~}}}~‘~}}}}}}}}}}}}}}|}}}|}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@÷ÿÿÿÿÿ÷[!!!!!!!! !   !sªèüüýýýýúýúýýÿýúüüüúýúüúýúýúýúàÓ                                                                                         Ó×óúóúúúúóüóüóúúúóÿÿÿþÿÿÿÿÿþÿÿûÖ~~~~~~~~~‘~~‘‘~~}¡¡¡‘‘‘¡‘‘‘‘‘¡¡‘‘‘‘‘¡¡‘¡¢¡‘‘¡¡¡¡¡¡£¡‘¡¡‘‘‘¢¢¢¡¡¦£¡¡¢£¡¡£¡££¡¡¡¢¢£¢¡¡‘¡¡¢¢¢¡¡¢¢¢¡¡¡¡¢¢¢¢¢¢¢££Ýþÿÿÿÿÿ릢¡£££¦¦££¦££¡¢¦£¦££¢££¢£®££££££¢¢£¦££«®£¦«©££¦¢££¢£¢££££¢¦¦¢¢£¢¦«£¢£¦£¢£¦¦¦«®£¢¢¢££¦££¦¦££££¦£¡¢¦£££¡¡¢¢¢¢£¦¦¦¦£¢££££¢¡£¡¡¡¡¡¢¡¡¡¡££¡‘¢¡¡¡¡‘¡¡¢¢‘¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘‘¡¡‘‘¡‘‘‘¡‘‘‘~~‘~}~~~~~~}‘‘~~~~}‘¡‘‘‘~}}~~~~}~}~~}}}}}}~~~}}~}|}}}}}}}~}}||}}}}}}~}}~§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@óÿÿÿÿÿ÷Z !!!!!!!!  !!! qªëûýúüúüýýýúýþýüúüûüüüûüüüüüüüæÓ                                                                                        ÔÓúüúúúóúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ}~~~~~‘~}~‘~}~¡¡¡¡‘‘‘¡¡¡~‘‘‘‘¡¡‘‘¡¡~~‘‘‘¡¡¡¡¡¡¡¡¡‘¡£¡¡¡¡¡¡‘¡¡£¡¡¡¦¦¡¡££¡¡¢¡¢£¡¡¡¡¢¢¢¡¡‘¡¢¢¢¢¡¡¡¢¢¢¡¡¡¢¢¢¢¢££¢£Ýþÿÿÿÿÿ뫦¢£¦¦¦¦¢££¢¢£¢¡£¦£££££££¦¦££¢¢££££¦£¦®«¦¦£¦®£££¡¢££¢£££££¦«¢¡¢£¦«££££¦££££¦««£¡£££®¦¦££££¦££¦£££££¢¢¢¢¢¢¢¢£¦¦¦¦¢¢¢£££¡¢¦¡¡¡¡¡£¢‘¡¢¢£¡¡¡¢¢‘¡Ÿ¡¡¢£‘¢¢¢¡¡‘‘¡¡¢‘¡¡¡¡¡¡‘¡¢¡¡¡¡‘¡€‘‘¡¡‘‘¡¡‘‘¡‘‘‘~~‘‘‘~~~~~‘~~~~}~‘~~}~~‘¡¡~~}}~‘~}~~~}~¡}}~}}~}~~}}}~}s}}}}s|}}~}}}}}}}}~}}~~§úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@÷ÿÿÿÿÿ÷Z!!!!!! !!!! !!   !qªèüüýýýýüúýúýÿýüüýüüüúüüüüüúýüàÓ                                                                                             Ó×úóúóúúüóüóúúúúóüþÿÿÿÿÿÿÿÿÿÿÿûÖ}}‘‘‘¡‘~~‘‘~~}~‘~}~~¡‘‘~~‘¡¡~‘¡¡‘‘¡‘‘¡¡‘‘¡¡‘‘‘¡¡¢¡‘¡¡¡¡¡¢‘¡¢¡‘¡¡‘¡¢£¡‘¡¡¡¢¡¢¡¢£¡¡¡¡¡¢£¢¡¢¢¢¢¡¢£¢££¡¡¡¢¢££¢¢åþÿÿÿÿÿꥢ£££££££¢¢¢¦®¦£££¢¢¢££¡£¦«¦£££££¢¢£¦®®££¢¢¦®££¦£¦®¦££®¦££¦©££££¦¦£¦£¡£©£££¢£££¡¢£££££¦££¡¡¢¢££££¢£¢¢£££¦¦££¢¡¡¡££¡¢¡¡¡£¦¢¢£¡¢£¢¡¡¡¡¢¢¡¡¢¡¡¡‘‘¢¡¢¢‘¡¢¡¡¡¡¡¢¡¢¡¡¡¡¡¡¡‘‘‘‘¡¢¡¡¡¡‘¡¡‘‘¡~~‘¡‘‘¡¡¡‘‘~~~‘‘‘‘~~~~}~‘‘~}~~}~~~~~}~‘~~~~}}~‘}~}~~}}}~~}|}}}}~|s}}}~}r}}}}}}}r}}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@óÿÿÿÿÿ÷Z!!!! !!!!!! !!   =sªíüýüúüüûýýüýþýýúúüúüüýúýúýüüüæÓ                                                                             ×ÓúúúúúúóúúúúúúúúüÿÿÿÿÿÿþÿÿþÿÿûÖ~~‘¡¡~‘}~‘‘~~~~~~‘‘¡‘‘~~‘‘¡¡‘~‘¡¡¡‘¡¡~¡¡¡¡¡¡¡¡‘¡¡¡‘‘¡¡¡‘¡¡¡‘¢£¡‘¡¡¡¢¡¡¡‘¡¢¡¡¡¢¡¡¢¡¢£¡¡¢¦¢¡¢££¡¡¢¢£¢¢¢¡¢££££¢¢Úþÿÿÿÿÿꢡ¦®££¢££¡¢£¦««££££¡¢£££££¦¦£¦®£¡£££®¦¦£¡££¦¦££¦£¦®«£¦®«£££¦¦«¦£££¦¦£¢£¦£££££££¢££££¢£¦£¢¡¢££¢¢£¢¢£¢¢££¦¦££¦£¡¡¡¢££¡¡¡£¢¡¢£¢¢£¢¡¦¡¡‘¦¢¢¢¡¡¡¡‘‘£¡¡¡¡‘¡¡¢¡¡¡¦¡‘‘¡¡¡¡¡¡¡¡¢¡¡¡‘‘‘‘‘¡‘‘‘‘‘~‘¡¡‘‘~~~~¡¡‘¡~~~~~~}~‘~}}‘~}~~~~~~~~‘~}}}}‘}~~}‘~}}}}|}~}~~}|}}}}}}|}}}pp}|}}šúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ !!!@÷ÿÿÿÿÿ÷Z!!!!!! !! !! !!  $q¥èýüýýýûüüüûýÿýúýüûýúýúüüýúýúýàÓ                                                                                         Ó×óúóúóúúüóúúóúúú÷ÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ~~~~~‘~~~~‘~~‘‘‘¡‘‘‘~~~‘‘¡¡‘‘~‘‘‘¡¡‘‘¡‘~‘¡‘~¡¢¡¡‘‘¡¡¡¡¡¡¢¡¡‘¡¡¡¡¡¡¢¢‘¡¡¡£¡¡¡¢¢¢¡¡¡¡£¢¡¢¦£¡¢¢¢¡¡¢¢¢£¢£¢¡¢¢¦£££åþÿÿÿÿÿ릡£££¢¢££££¦£¢¢¢£¦¦¦¦£¢££££££¦©££¦¦¦¦£££¢£££¦¦£©£¦®¦££¦¦£££¢¢££¦¦£££££¦®£¢£¦£££¢£¦¦¦£¡¢££¡¢«¦¦££££¢¢¢¢¢¢¢¡¡¢£¢¡£¢££¢¢££¡¡¡¢¢¡¡¡¢¦¢¡¦£¢¢¡¡¡£¡¡¦£¢¢¢¢¡¡¡¢¡‘¡¢¡‘¡‘‘‘¡¡¡¡¡¡¡‘‘‘‘‘¡‘¡‘¡‘¡‘‘‘‘~‘‘‘¡¡‘~‘‘‘‘‘¡‘¡¡~~¡‘‘¡¡~~~~~‘~}}~}}~~~}}s}}~‘}~~}}}}r}~}}~}}~~}}}}~}}}}p}}|}žúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿóZ!!!!!!!!!!! !!!!  !=}ªëüýúüüüüýüüýþýüüüüúüüüüûüüýüüàÓ                                                                                                                              ÓÔüúúúüúúóüóúúúúóüÿÿÿÿÿÿÿÿÿÿÿÿûÖ}~~~‘‘~~‘~~~¡‘¡¡‘~~~‘¡~~‘¡‘‘¡~‘¡‘‘¡‘‘¡‘¡¡‘‘¡¡~¡¡¡‘¡¡¡¡‘¡¡¢¢¡¡¡‘‘¡‘¡¡¢¡¡¡¡¡£¡¡¢¢¡¡¡¡¢¢£¢¡¢£¢¡¢£¢¡¢¡¢£¢££¢¢¡£££££Ýþÿÿÿÿÿ륡¢££¢¢££¢¦¦£££¡¢¦«¦¦£££¢££¢¢££££«¦¦®££¦¦£¢£¦¦£©¦¦®¦¢£¦¦£¦¦£¡¡£®££££¦®¦¦¦£¦¦¦¦£¢£¦£££¢¢££¡££¦¦¦£££££¢¡¡¡¢¢¢¢¢¡¢££££¢££¡¡¡¡¡¢‘¡¢¢£¡¡¡¢£¡¡¡¢¡¡¡¢¦¢¡¡££¡¡¡¡¡¡¡¡¡¡¡‘‘‘‘¡¢¢¡¡‘~¡‘¡¡‘¡¡¡~~~‘¡‘~~‘‘‘‘~¡¡¡‘‘~~~~‘¡¡‘‘~‘‘‘‘¡‘‘~~~~‘~}}}}~~~~}}}}~~~}}‘~}}}}}}}}~}}~}}}}}~}}r}}}}}}™úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$! @óÿÿÿÿÿ÷]!!!!!!! !!  !!   =sªèýüýýýüýüýýýÿýüúüúüýúýüüüüüüýàÓ                                                                                                                                  Ó×óúóúóúúúúúúúúúúúÿÿÿÿÿÿÿÿÿÿÿÿþÖ ~~~~~~}~~~~}~‘‘‘~‘‘¡‘~‘¡‘¡‘~‘¡¡¡‘~¡¡¡¡¡¦¡~‘¡¡¡¡‘¡¢¡¡¡¡‘¡¢¢£¡¡¡¡¢¡¢¢¢¢¡¡¢¡¡¢¢£¢¡¢£¡£¡¡¡¢¢¢¢£¢£¦¢¢¢£¦¦£¢¢¡££¢£åþÿÿÿÿÿꦣ£¦££££¢¡£«£¦£¡£¦££££££¦¦£££¦£¢¢£¦®¦£££¦¦£¦¦£¢¢££¦£¢¢£¦®¦¦£££¦®££££¦¦£¢££¦«££¢¢¦«¦£¢¢££££££¢£¢¡¢£¦¦£¢¢¢¢¦££¦£¡¡¡££££¡¡¡£¢¢¢¡¢¢¡¢¢¢£¢¢¡£££¡¡¡‘¡¢¡¡¡£¡¡‘¡¡¡¢¡¡¡¡¡¡¡‘‘¢¡¡¡¡¡‘¡‘¡¡~~‘¡¡¡¡‘¡¡‘¡¡‘‘~}~¡‘~~~~‘~~‘~~~}~‘~~~}}~~~}~‘‘‘¥žš§§¥§§§šš§š™™™¥™™‘™š™‘™‘™‘™‘‘‘‘‘€ÓûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷Z!!!!!!!!!!     =q¥ëüýúýúýüûüúýþþúýúýúüüüüüûüüüüæÓ                                                                                                                          ×ÕüúúúüóüóúúúúúúúüÿÿÿÿÿÿÿþÿÿÿÿûÖ¢}}~~~}}~‘~~}~‘~‘‘‘~‘¡‘~‘~¡‘~‘¡¡‘‘‘¡¡¡¡¢¢¡‘¡¢¡¡£¡¡¡¡¡¡¡¦£¡£¡¡£¢¡££¢¡¡¡¡¡¢£¦¦¡¢£¡¡¢¡¢¢¢¢¢£¢£¦¢¢¢£¦¦££¢¡¢¢¢£Ýþÿÿÿÿÿꫦ££££¦££¢£¦¦££¡£¦££££££¦£££¦®£¢¢¦®«£¢¡¢¦¦¦¦¦£¢££££¦££¢£©®££££¦¦£©£¢£¦¢¡£«¦££¢¢£¦¦¦£££££¦¦¦££¡¡¢¡£¦¢¡¢¢¢££¦£¦£¢¡¢£¦¢‘¢£¡¢¢¡¢¡¢¡¡¢¡£¢¡¡¢¢¦£¡¡¡¡¡£¡¡¡¡¡‘¡¡¡¡¢¡¡¡¡‘¡¡¡¡¡¡‘¡¡‘¡¡‘‘~¡¡¡¡¡‘‘¡‘‘¡¡‘~~~‘¡‘~~~~~‘‘~~}~~}~‘‘~}~~}~~‘}}}~‘‘¡ëõõõõõõõõõõõõõíõõíííõëíèèèèëèèèèèèæèèèèâèèõþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷Z!!!!!!! ! ! ! !9s¥éüüýüýüûüýüýÿýüüýúýúýüúýüüýúýàÓ                                                                                                                                                   ÓÓóúúóúúúúúóúúúúú÷ÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘~~‘¡~~‘‘~~‘‘‘~‘¡‘~~~~~¡‘‘¡‘‘¡¡‘~¡¡¡¡‘‘‘¡¡‘‘¡¡¡£‘~‘¢¡¡¡¡¡‘‘¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¢¡¡£¦££¢¢¡¢¢¡¡¢££¡¡¢¢¡¢¢¢¢¢¢£££¢åþÿÿÿÿÿ릣£¢¢££¦¦£££££¦£££¦¦¦¦¦©££££¢£¦¦£¦¦££¦£¦¦«£££££¦®¦¦¦££¢£¦£¢£®¦©¦££££®¦£¢«®££¦¦«£££££££££¢££££££££££¡£¦£¦£¢£¡¡¡¡¢¢£¦¡¡¢«££¢¡¢¡¡¡¢¦¦£¢¡¡¡¡¢£¡¡¡¡¡¢¡£¡¡¢¢¢¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡‘‘¡‘¡‘¡¡‘‘¡¡¡¡¡‘~¡¡‘‘‘~¡¡‘‘‘‘‘‘¡¡‘~~}~‘~~}~}‘~~~~}}ýÿÿõ÷ø÷ú÷ûúûúûýýýþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@òÿÿÿÿÿ÷]!!!!!!! !!!! !!!=qšëüýüýüýüýüüýþýûúüýúýúýüýúýüüüæÓ                                                                                                                                            Ô×úüóüúúúúúúüúóüúüÿÿÿÿÿÿÿÿÿÿþÿûÖ‘‘~‘‘~‘~~~‘‘‘~~‘‘‘‘~~~~~‘‘‘¡¡‘‘¡¡‘‘¡¡¡‘~‘¡‘¡¡‘‘¡¡¢¡¡‘¡¢¢¡¡¡¡¡¡¡‘¡¡‘¡‘¡¡‘¡¡¡¡¡£¦¡¡¡¢¦«¦¢¢¢¡¡¢¢¡£££¡¡££¢¢¢¢¢¢£££¢¡Ýþÿÿÿÿÿꦦ¢¢¢¢£¦¦££££¦¦£¢£¦®¦£¦®¦£¦£¢£««£¦¦¢£®®¦£®¦£££¦®¦¦¦¦£££¦¦£¢£®¦¦£¦££¦¦££¢¦«£¢¦®«¦£¢£¦¦©£¢¡¢£¢¢££££¢¡¢¦¦£££¢¢¢¡¡¢¡¢££¢¡¢££¦¢£¢¡¡¡¡«¦£¢¡¡¡‘¢¡£¢¡¡¡¢‘¢¢¡£¦¢¡¡¡‘¡‘¡‘¡¡¡¡¡¡‘¡¡¡¡¡‘‘‘‘‘‘¡¢¡‘~~~~‘¡¡‘¡‘‘¡¡¡‘~‘¡¡¡‘}~~}~~~~~}}~~~‘}}}~þÿõ§§§§§§§ÓÓÒÓÔÓØÚØÚÙÙÚÚàæààèèèèèèëõëôõõõõõ÷úúûúûýýýýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!Cóÿÿÿÿÿ÷_!!!!!!!!!!!! !!!     !!q¥éüüýüýúýüýúýÿýüüüüüüýúýúýüüüýàÓ                                                                                                                                                     ÓÓúóüóúúúúúóúúúúúúÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~~}¡‘€‘‘¡~~‘‘‘¡¡‘¡¡‘‘‘‘‘¡‘‘‘‘¡¡¡¡¡‘¡‘‘¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡£¢¡¢¡¡¡¢¢¡‘¢¢¡¡¡¡¢££¡¡¢¢¢¡£££¡¢£¦££¦¦££££¦åþÿÿÿÿÿ릢£££££££¦£££££££££®¦££©¦£¦£££££¦«®£££®£¡£££¦®££££££££££££¢£¦¦£££¦¦«££££«®¢¡££¢¢¢££¦¦©££££££££££££¦¦£¡¡£¢¢£££££££¢¢¢¢£££¦¢¢¡¢£¡¡¢¢¢¡¡¡¡¡¡¡¢¢¡¡££¡‘¡‘¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡‘¡‘‘‘‘~~~~~~‘‘‘‘~‘‘~¡}}~~‘~}~~‘‘‘ÿÿæ‘‘~€}|}‘~}}}}}}}}}}}}‘~}}}}‘‘¥™™™™™™š§§žž§ÓÒÓÓÓÓÓÊ×ÙÚàààààèëèôèõõõ÷÷÷úúüýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!@óÿÿÿÿÿ÷Z!! !!!  !! =sšëýýüýüýúýüýüÿýúüüüüûüüýüüúýüüæÓ                                                                                                                                       ×ÙúúúúúúóúúúüúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ}~~~~‘‘€‘‘‘¡‘~~‘¡~~‘¡¡‘‘‘‘‘¡‘~‘‘‘‘¡‘¡¡¡‘‘¡‘‘¡‘‘¡¡¡¡¡¡¡¡‘‘¡¡‘¡¡¡¡¡¢£¢¡££¡¡¡¡¡¢¢¡¡¡¢¢¢£¢¡¡¡¢¢¢£¦£¢£££¢£¦¦££££¦êþÿÿÿÿÿꥢ£¦£££¦££¦£¦¦££¦£¦«¦££¦££££¦£¢£®«£¦££©¢¡£££®«¢££££££££££¦££¦¦££££®®££¦®®«£¢¢¢¢¢¢¢£©¦¦£££££¦¦££¦¦£¦«¦¢¡££¡¡¦¦¢£££¢¡¢£££££¢¡¡¡£¢¡¡¡¢¢¡¡¡¢¡¡££¡¡££¡‘‘¡¡‘¡¡¡¡£¡‘¡‘¡¢‘¡¡‘¡¡‘‘¡¡¡¡¡‘‘¡¡‘¡¡¡¡¡‘‘¡‘¡~~~~~}~~‘‘‘~~~~‘‘‘~}~~~‘‘~¡‘~}}~~‘‘¤ÿÿÚ‘}}~}}}~‘}}}}}~~~}}}~~~}}}|}}}v}~}}}}sv}}|}}}}|}~}|ppp}}vvwww™˜™™šžšžž§ÇÓÊÓ×ÙÙààèèõõ÷ýýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷x!!!!!!! !!!!  =s¥éüúýúýüýüýúýþýüüüúýüüüüüüýüüýàÓ                                                                                                                      ÓÓóüóúúúüóúúúúúúúúÿÿÿÿÿÿÿÿÿÿÿÿþÖ ‘~}~~~~~~~~}~‘~~‘}‘‘¡¡‘‘¡¡‘‘¡¡~‘‘¡¡‘‘¡¡‘~¡~¡¡¡¡¡¢¡¡¡‘‘¡¡¡¡¢¢¡¡¡¡£¢££¡¡¢£¡¢¢¡££¡¡¡¢¢¡¡¡¢¡¢¡¡¢¢££££££¡££¢¢£££¢£åþÿÿÿÿÿꦣ¦®£££¦£¢£¢£¦££££££¦¢£¦¦¦¦¦¦¢£®®¢£¦¦¦©©£©¦¦®¦¢£®¦©¦¦®££«¦££¦¦££¦¦¦¦££££¦«¦¦¦£¦£££¦«¦¦¦¦£¢£«¦¡£¦¦¢¢££¢¢«¦¢¡£¦£¢¦¦¡¡¢£¢¡¡¢£¢¢¢¢££¡¢¢¡££¦¦¡¡¡¢¢£¡¡¡¡¡£¡‘¡¡¢¦¡¡¡¡¢¡‘‘‘¡¡¡¡¡‘¡‘‘‘¡¡‘‘‘¡¡‘‘¡¡¡¡¡¡‘‘‘‘‘‘~~~~~~~~~~~‘‘~~~~~~~‘~‘ÿÿÓ~}~~}~~}}}~~}}~}}}~}}}}}}}~}}}}}}}~}}}}}}r}}}pp}}v}}}}}}|}wvv}|vpvvvv|ppvpvppv|v}{˜˜žžÊ×àæþÿÿòžõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!! !!  =sšëýýýýüýüûýüýÿþüüûýüúýüüýüüúýüæÓ                                                                                                                                                                      ÓÓüúúúúúúúüúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ ~~~~~~}~~~~~~~~~~‘‘~~‘¡¡‘‘‘¡‘¡¡‘‘¡¡‘‘‘~~‘¡¡¡‘¡‘‘¢¡¡¡¡‘¡¡‘‘¡¦¢¡¡¢¡¡£¢¡£¢¡¡£¢¡¢£¢£¡¡¡¡¢¡¡¡¢¡¡£¡¡¡¡¢££££¢¢£¦£¡£¦£¢£åþÿÿÿÿÿꦢ¦«¦¦£££¢¢£¢£££££££¦££¦¦«££¦££®¦£¢¦¦¦¦®®®¦®®®¢£¦£®®¦®¦£¦¦££££¦©®®¦££¡£££¦¦®®¦¦®££®®¦££¦£££¦£¢£¦£¢¡££¢¢¦¦¢¡££¢£¦£¡¡¢¢¢¡¡££¡¢£¡¢£££¢¡£¦«¦¡¡¡¡¡¡¡¢¡‘¡¡¡¢¢¡£¢¢¡¡¡‘‘¡¡¡‘¡‘¡¡¡¡‘¡‘¡¡¡¡¡‘‘¡~‘€‘‘‘¡¡¡¡¡¡¡¡‘~‘~~~~~~~‘~~~~‘‘€}}~~~~~}šÿÿ¥}~}~‘}~}}}}~}}}}|}}}}}~‘~~~}|}}}|}}~}}}}}}v|vvrv|p}}}}}}}v|ppppv|pp}pppvrv}ppp|vv}ppppvpop}wúÿÿžoÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Cóÿÿÿÿÿ÷]!!!!!!!!!!!  !!!  !9q¥éüüüüýüýüüýýýýüúüüüýüüûüüýýüýàÓ                                                                                                                                                                          Ó×óúúúóüóúúóüúúúúúÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~‘‘¡‘~~~~‘‘~‘¡¡‘~‘‘‘¡‘¡¡‘‘~‘¡¡~¡‘¡‘~¡¡¡¡¡¡¡‘¡¡‘‘¡‘¡¡¡¡¡‘‘¢¢¡¡¡‘¡‘¢¢¡‘¢£¡¡¡¡¡¡¡¡££¡¡¢¦£¡¢¡£££¢¡¢¢¢¢¢¢££¢¡££££åþÿÿÿÿÿ릢£££££££££¦¦®¦¢£¦¦££¢£¦£¦£¦£££®®££¦®£¢¦«£¢£®££¦©¦®®£££¦¦©®¦¢£¦£¦®££££££££¦££¢¦«¦££¦£¡£¦¦££££¢£¦¦££££¢¢¢£¦£££¢¢¢£¢¢££¢¢££¡¡£¦¢¡¢¢¡¡¢£¡¢¡¡¢¢¡¢¡¢¡¡¡¢£¡¡¡‘¡¦¡¡¡‘¡¡¡¡‘¡¡¢¡¢¡‘‘~¡‘‘‘‘‘¡¡¡‘‘‘¡¡‘‘~‘¡~‘~~‘‘¡¡‘~~‘‘¡‘‘‘‘‘‘~~‘‘~~}}šÿÿ™}~~}}~~}}}~~~~}~}}}}}}}}~~}}}}}}r}|s}}}}|||}}}}}}}v|}}}v||vr}}|v}}pvr}pv|||v|pv}pppvppvvppp}vüÿÿp™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷[!! !!! !!!!  !! 7qšëýýýýúýüüýüüÿýýüýúüüýüüüüüúýüæÓ                                                                                                                                                                  ÓÓüúúúúúúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘¡¡‘‘‘‘‘‘~‘‘¡¡‘~¡¡‘‘‘‘‘¡¡‘~~¡¡‘¡¡¡¡¡¡‘¡¡¡¡‘¡¡‘¡¡¢¢¡¡¡¢¡¡¡‘¡¡¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡£¦¢¡¡£¡¢¢¢£££¢¢££¢¢¢¢¦«¢¡££££Ýþÿÿÿÿÿꦢ£££££££¢£¦®¦¦¢£«¦£¢¢£®¦££££®«¦¦¦¦¦®¦££¢£££¦£¦¦¦¦®®£££©®®¦£££¦££¦££¦££££¦££¢¢£®¦¢¢£¢£££¦££££¢¢¦¦£¦¦¢¢¢¢£¦¦£¢¢¢¡¢¢£¢¢£¦¦¢¡¡£¢¡¡¡¡¡¡££¡¡¢¡££¡¢¡¢¡¡¢¡£¢¡¡¢¢¡‘¡¡¡‘¡‘¡£¢¢¢¡Ÿ‘‘¡¡‘‘¡¡¡‘‘¡¡¡¡‘~~‘‘~~‘~~~¡¡¡‘~~‘¡‘‘‘‘‘~‘‘~~‘‘~}~~§ÿý‘}~}}}~~}}}~~~}}}~}~}}r|}~}}}}}s||}v}}}s}r||}}}|}}|p}}ppp}|pvv}p|}||rvpv|}}p}|}}vpppppv|pppvvvýÿ÷voÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷_!!!! !!!! ! !q¥éúýúýýüýüüýýþýüúýüýúüüüüýûüüýàÓ                                                                                                                                                                                         Ó×óúóúúúúúüúúúúüóüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘~~~~~‘~~‘‘‘}~~‘¡‘~~¡‘‘~‘~‘¡‘‘‘‘¡¡‘‘¡¢‘¡¡¢¡¡¡¡¡‘‘¡¡¡‘‘£¢¡¡¡¡¡¡¢¡¢£¡¡¡¡¢£¡¡¡¡¢£¡‘¡£¢¡£¢££££¢¢¢£¢¢¢¡¢£¢££¡¡¢£««åþÿÿÿÿÿ릢£¦£¢£££££¦££££¦®¦£££¦®®£¦£¢¦«££¦¦¦®£££¡££¦¦£®¦££«£££®£®¦¦¦££¦¦¦«££¦©££¦¦¦¦£¢£££¢££¦¦£¢¢££¦£££¦£¡¢££¦¦£¢£¦£¢££¢¢¢¢¢¡££¢££¦¢¡¢¢¢¢¡¡¡¢¢¢¢¡¡¡¡££££¢¢¡¡¡¡¡¡¡¡¡¡¢£¡¡¡¡¡¡¡£¡¡‘¡‘‘‘¡¡¡¡¡¡¡¡¡¡~‘‘‘‘~‘‘‘‘¡‘‘‘‘~~~‘~~‘~~~~~‘~}~~~~~~~Óÿû‘~}~~}~~}~~~}}}~~}~}}}}}}~}}}}}|}}}}}}||}}}rp}|s}~}}||}vr}}|v}||pv||vvv|}vvppp|p|ppvpv}pppvpppýÿè}vvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷Z!!!!!!!!! ! ! =sªíýüýýüýüüýüüÿþúýúýüüýüýüüüýýüàÓ                                                                                                                                                                    ÓÔüüúúúúúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ¡‘~}}~~‘‘‘‘‘~~~‘~~‘‘~~~‘‘~~¡¡‘~‘¡¡¡¢¡¡¡¡¡¡¢¡¡£¡‘¡¡¡‘¢¡‘¢£¡¡¡¢¡¦£¡¢¦¢¡¡¢¡¢¡¡¡¦£¢¢¡¡¢£££££¦¦£¢££¢££¢¢£¦£¢¢¢¢££¦¦Ýþÿÿÿÿÿê«££££££¦££¦®£¢£¦«¦£¢¦®®¦®¦©£¢££££¦®®¦£££¢££¦£¦®¦¢£¦££®¦¦£¦®¦££¦®¦£¦¦¦¦¦£®®¦¦£££¢¢¡£¦®£¢¢¢¢£¦££¦¦£¡¢£¦£¦£¢¢¦¦£¢¢¢£¢£¡¡£¡¡¦¦¦¢¡£¡¡£¡¡¡¢¢¢¢¡¡¡££¦££¢¢¡¡¡¡¡¡¡¡¡¡¢¢£¡¡¡¡¡¢¢¡‘‘‘¡‘¡‘¡¡¡¡¡¡¡¡‘~~‘~¡¡‘¡¡¡‘¡‘~~}~‘‘~~~~€~~~~}}~~~~‘~~Ôÿõ‘~~~‘~}}}}~~~}}~~}}}|}s}}s}~~}}r}}}}~}}p}}}vv}}|}}~}p}prv}}p}v}pp}}vpp}|v|vvppppvv}rv||vppppv|ýÿà}puÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!$!!Zóÿÿÿÿÿ÷[!!!!!!!!! !   ! !=}ªèýûüüýúýýúýýþýýüüüýüüüúýûüüüýàÓ                                                                                                                                                                          ×Óúóúúúúúúúúúúúúú÷ÿÿÿÿÿÿÿÿÿÿÿÿýÖ ~~~~~‘~‘~~~}~¡¡‘‘~‘¡‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘¡¡‘‘‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢¦¡¡££¢¡¡¢¢£¢¢¡£¢££¡¢¢¢¢¢££¢¢¢£¢¢££åþÿÿÿÿÿ릫£¢¦£¦®£¢£¦£¢£¦¦££¢¢«¦£¦£¦£¦¦¦££¦£¦¦¦®©£®¦£££®¦££®©££¦®££®®¦£®®££¦¦¦¦££¦¦¦¦¦¦¦££££¦£¢££¦££«¦£££¦££££¡¢£££¢££¢¢¢¢¢££¡¡¡¢£¢¦¢£¡¡£«£¡¡¢¢¡¢¡¡¢¢¡¡¡¡¡¡¢¢¡‘¡¢¡¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡¡‘‘¡¡¡‘‘~‘‘‘¡~~‘‘~‘‘‘}~~‘~}~~}~~~}~×ÿõ‘~}~‘~}~~}}~~|}~~~~s}}~}|~}s}}}}~}r}}}}}}}}}||p}}}}}v}}}}}}r}vrv}}||}}|v|pp}ppv|pvvppvpprppvwýÿÓvopÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!$!@óÿÿÿÿÿ÷Z!!!!! !!!! ! !!qªëýüýûýýýüýüüÿþúýüýúýúýüüüýüýüæÓ                                                                                                                                                          ÓÓüúúúúúúúúúüóüúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ Ž~~}~~~‘‘}~~~~~‘‘¡‘‘‘¡‘¡¡‘‘‘‘¡‘¡‘‘‘¡~¡¡‘¡~~‘¡¡‘~¡‘¡¡‘¡££¡¡¡¡¡¡¢‘¡¢¡¡¡¡¡¡¡¡££¢¡¡£¢¢¡¡¡¢¢¡¡¡¡££¢¢¢¡£¡¡¢£¡¡£¦¢¡££Ýþÿÿÿÿÿꦦ¦£¦®®®¦¢£¦££££££¦£¢¦¦¢¢£¦£¦¦©££¦£££®®¦¦¦©£¢£¦¦£¦®£¦£®®¦©¦®«£®¦£££¦¦©£¢£®¦®®«¦¦®©¦¦£¢£¦¦£££¦£££®¦£££¡¡£¦££¢££¢¢£¡£¦¢¢¡£¡¡¡¢£¢¢£££££¡¡¡£££¢£‘¡¡¢¡¡¢£¡¡¡¡££¡¡‘¡¡¡‘¡¡¢££¡¡‘‘‘¡¡¡¡¡¡¡¡‘‘‘‘~‘‘¡~~~~~‘¡‘‘~‘‘‘‘~~‘‘‘~~‘~~}~~}~Úÿë‘}~‘~~‘~}}}}}}}~~~}}~~}}}}|}}}}}}p}}~}}~}}}}p}|}}s|}}}}~~}}}vv}}||}}|vppp|v|pp|vvpppvpp|vppþÿžplvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@óÿÿÿÿÿ÷_ !!! !!!!!! !!    !q¥éüüýüüüüýúýýþýüüüüüüýüýýýüýüýàÓ                                                                                                                                                                   Ó×óúüóüúúúúúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~~~‘~‘‘‘‘~~~‘‘‘‘‘¡‘¡¡‘¡¡¡‘‘¡¡‘¡‘¡¡‘¡¡‘¡¡¡¡¡¡¢¡¡¦¡¡¡¡¡¡¡£¢¡¡¢¡¡¡££¢¡¢¢¢¡£¡¡¡£¦£££££¡¡££££££¡¢£¢££££££¢¡££åþÿÿÿÿÿ릦££¦«£¦£¡£®«¦¦££££££®¦££¦®¦®¦¦££¦£¦£®®¦£¦®©£¦£¦®££¦®£¦¦¦¦£¦££«®££¦¦¦©££¦¦££££¦££££®£££¦¦¦£¦£££££¦¦¦¦££¢£¢¡£¦£££££¢£¡£££££¢¡¢¢££¡¢¦£¡¢¡¡¢¢¢¢¡¡¡¢¡‘¢£¡¡¡¡¢¡¡¢¢¡‘¡¡‘¡‘¡‘¡¡¢¡¡¡‘¡¡¡~~‘‘‘‘¡¡‘¡‘‘¡‘‘~~‘‘¡¡‘‘‘~‘‘~~~~~‘~‘‘‘‘~~}}~~~}àÿè‘~}~‘}~}}~~}}}}}}}~}}~}}}|}~}}s}}}}v}~}p}}}s}p||s}}p}p|p}}}vp|}p|vp|pvvr}v|p|pv||ppppp|vpp|vvþÿ˜ppvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!!!! !!!!! =qšëýýüýýûýüýüýÿýüýüüüüüûüüüýüýüæÓ                                                                                                                                                                                                              ÓÕüúúúúúúúúúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘~~~~‘‘‘¡‘‘‘~~~~‘~~~¡¡¡¡‘‘‘¡¡¡‘¡¢¡‘‘¡¡¡¡¡¡¡¡£¡¡¢¦¢¡¡¡¡¡¡¡¡¡¦£¡¡¡¡¡££¢£¡¡¢¢¢¢¡¡£¦¦¦¦¦¦¦¢¢¢££¢£¢££¢¢££££££¢¢£¦êþÿÿÿÿÿꫦ£¢£¦££¦£¦®®¦££££¦¦®¦¦££¦®®®®£££®®®®®¦£¦¦¦®®®¦¦®££®®¦£££££££££¦®®¦¦££££©¦£¢¢£®¦¦¦£©«£¦¦££¦¦££¢£¢£¦¦¦¦£¡¡¡¢¦¦££¦¦¦¢¡¡£¦£¢£¢¡¢¢£¡¡£¦¡¡¢£¡¡¡¡¡¡¡¢¢¡¡¢¢¢¡‘¡¡¡¡¢¦¦¢¡¢¡¡¡¡‘¡¡‘¡‘‘‘~¡¡~¡‘‘~‘~¡¡‘~~~}¡¡¡‘~‘~~~~‘‘‘¡}}}~‘‘~àÿÚ‘~}}~}~}s~~}}}~}}~~~~~~|}s}~}~|r}}}}}}}p|}rvrv}}vvr|vpppr}}vv|v|||pppp}v}vpvpp}}vpppop|ppppv}ÿÿvpwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@÷ÿÿÿÿÿ÷_!!!!!! !!!!!! !   =q¥éüüýüüüýýüýýýýüüüýüýüüýüýüýüýàÓ                                                                                                                                                                                                                ×ÓúúúúúúúúüóüóúúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ}}~~~~~~~‘‘‘~‘‘¡‘‘~~‘¡¡¡‘¡¡‘‘¡‘¡¡¡¡¡‘‘¡¡¡¦¡‘¡¢¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡¢£¡¡¢¢¡¡¡¡¢¡££¢¡¢£¢¢¢££££¡¢££¦£¡¢¦¦¦¦£¢££££åþÿÿÿÿÿí¦££¢£®£¢£££¦¦£¦®¦¦¦¦¦£¦£££¦¦®£¦££¦¦¦®££¦«¦£¦®©££®®££®®£££¦££®®££«®¦¦££¦¦¦©££££££££¦¦¦££©£¦¦¦¦£££££¦££¦££¡££«¦¦£££££¢¡£¦£¡££¢¢¢¢¢¡¢¢¢¡¡£¢¡¢¡¡¢¢¢¢¡¡¡¡¡¡¢¢¡¡¡¡¡¢¡‘¡¡¡¡¡¢¡¡‘¡¡¡¡¡¡‘¡¡¡‘¡¡¡‘¡¡~‘¡‘‘‘‘‘¡‘~‘‘¡‘‘~~¡‘~~~‘‘~~‘‘~~~}‘èÿÚ‘~}~~}~~}}}}~~~}}€~}}}}}}~~}}}v}}}}}}}r}}|}}p|}}v|}}r}|v|}pv|||p}}||vvr}|v}v|pp}|vppv}|ppppoýÿvpvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷Z!!!!! !!!!!!!!! !=q¥èýýüýýýýúýüüÿþýúýúüüüýúýüýúýüæÓ                                                                                                                                                                                                                             ÓÓüúúúúüóüóüúúüúüúÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~‘‘‘~~‘‘¡‘¡~~‘¡¡¡¡~‘¡‘~‘‘‘‘‘¡¡‘~~‘‘‘¡‘‘‘‘¡£¡¡£¢‘¡¢¡‘‘‘¡¢¦¢¡¡‘¡¢£££¢¡¡¢¡¡¢¢¡¢££¡¡¡¡¡¡¡£¦¢¢¡£¦£¦¦££«®«¦£££¢££åþÿÿÿÿÿê«£££££££¢££¢¢£¦¦®¦£¦£¦¦¦«££¢¢£®¦££®©®££££¦¦££¦££®®¦¦®©££¦®®®®®¦¢¦®¦£££¦®®£®®¦£¢¢£££®£££££££¦®¦®¦®®¦¦££¦¢¢£¦®¦¦£¦¦£¦£¡¡££¡¡£¢¡¢¢¡¡¡¡¢¢¡¡¢¡¢¢¡¡¡¢£¡‘‘¡¢£¡¡¡¡‘‘¡¡~¡¡¡¡¦£‘‘¡¡¢¢¡¡¡¡¡¡¡‘‘‘¡¡‘‘‘¡¡‘¡¡¡‘~~‘¡‘‘‘~~‘‘~~~~}}~‘‘}}~¡~~ëÿÓ¡}~~~~~¡~}~~}~~}}~}}|}}r~‘~}v|}s}}}~}~s}}}}}vr}~}|}}}vv}p|p|}}}pp}}}}|}}vvv|v|p|}}p|p|vv|vvpp˜ýüvvovÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!!!!! !!!!!! !  !! !!! =qªéýüýüüüüýýûýÿüüüüüýýüýüüýúýüýàÓ                                                                                                                                                                                                                     Ó×úúúúúúúúúúüúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~‘~~‘¡~~‘~‘¡‘‘¡¡~‘‘‘¡‘¡¡‘‘‘‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡‘¡¢¡‘¡¡¡¡¡¡£‘¡¡¡¡¡¢¢¢¢¡‘¢£¢¡¢¢¡¡¢¡¢¢¡¡¡¡¢£¢¢¡¡¡¢¢£¢¢£¦¦££££££££åþÿÿÿÿÿ릣¦®£¡£¦££££££¦¦£££¦¦¦¦¦©£¦¢¢®®©£¦¦£®££®£¦®£££¦£©¦®£©¦©¦®®¦¦£¦¦£¦®££££®®£¢«®¦£££££¦®¦¦¦££££££££££¦£££££¢¢£££¢££¦¦££££££¢¡¢££¢¢£¢¡¡¡¡¦£¢¢¡¡£¡¡¡¢¡¡¡¢¢¡¢¡¡¡¡¡¡¡¢¡¡¡¡¡¡¢¡¡‘¡¡¢¡¡¡‘‘¡¡¡‘¡‘¡‘¡¡‘¡‘‘‘‘¡‘~‘‘~‘‘~~~~¡‘~~~~}~‘‘~}‘‘~}õÿÓ¡}~~~}}~~}}~~~~~~}}}}}}}‘}~}}}}}}s}}}}}}p}~}v}}}pp}}p}}}|v}}}}rpv||||vvppp|p|pp}v}|ppvvvrppp˜ÿ÷vppwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Còÿÿÿÿÿ÷Z!!!!!!!!!!!! =q¥íüýüýýýûýüüüÿþüüýúýúýüýýüýüýüæ×                                                                                                                                                                                                                        ÓÕüúúúúúüúúüóüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘‘‘~‘‘‘~}}~‘‘¡¡~}~‘¡¡‘‘‘‘¡‘¡¡‘‘¡¡‘¡¡~¡‘¢¡‘‘‘¡¢¡¡£¢¢¡‘¡££¢¦£¡¡¡¢¢£¡¡¡££¦¢¡¡‘¡¢¢£¡¡¡¡¡¢¢¡¡¡¡¡¡¢¡¡¢¢¢£££¦£££¢Ýþÿÿÿÿÿꮦ£££¡£££®®®¦£¦©¦££££££££¦®££®®¦¦®£££©®®£®®££££©®££££®®®¦£££££©®¦¦££®®®®£¦®«¦¦££©®®¦©®®¦¦¦£££¡¡¡¢£¢¡££££££¢¡¢££¦£¢¢¡¢££££¢££¢££££¦¢¡£¦£¡¡¡¡¢¡¡¢¡¡¢£¡¡¡¡¡¢¡¡¢¢‘¡¡‘¡‘¡‘¡¡¢¡¡¡‘‘¡¢¡¡¡‘~¢¦¡¡¡¡¡‘‘~¡‘~~~‘}~‘‘‘~}~‘‘~~~¡‘~‘‘~~õÿ¬€}~}}~}}}}}~}~~~~}}~~}~~‘~}~~}~~}r|}}}}||}}~}}}ppr}}}}}}}s}}r}vvvpvvv||ppp|ppvv}p|p}vrpvpppp™ÿèvppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!! !!!qšèýüýüüüüüýýýþýüüýýüýüýüüýüýüýàÓ                                                                                                                                                                                                                           Ó×úúúüóúúúúüúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘‘~~~‘~¡‘‘~~~~¡‘‘~~‘¡‘¡¡~‘¡‘‘¡~~¡¡¡¡¡¢~‘¡¢£¡€¡¡¡¡¡¡£¡¡¡‘¡¢¡‘¡¢¡¢£‘¡¡¡¡¢¡£¡¡£¦¡¡¡¡¡£¢£¢¡¢£¢££¢££¡¡¢££¢¢¢¢££££££¦£åþÿÿÿÿÿ뫦¦¦££££¦¦¦®¦¢£©©£££¦¦©£¦®®££°®££¦©££¦®¦£¦¦©£¦£¦®®¦©£¦®©¦¦££¦¦«®¦£¦£¦©¦¦£¦¦£¦¦£¦¦«¦££¦¦£££¦®£££££¦£¢££££££¢£¢£¦¢£¢£¢¢¢¡£¦£££¡¢¢£££¡¡¢¢¢¢£¢¢£¡¡¢¢¡¡¢¢¢¢¡¢¡¡¡¡¢¡‘¡¡¡¢¡¡¡¡¡¡¡‘‘¡¡‘‘¡¡¡‘¡¡‘‘¡¡‘‘‘‘¡‘‘‘‘‘‘‘‘~‘~~‘‘¡‘~}‘‘~~~~~~}~úÿ¥~~~~}~}}~~~~}}}}~}~~~}}}}}}}~~}}}v}~}||s}}}}}}}}}vv|p}}rv|v|}vp}}rv|}|pv|pp|v|}v|vvvvpvvppppp˜ÿèvpvwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷Z!!!!!!!!  !  !=q¥ëýýüýýýýýüüýÿþüûüüýüüýúýüýüýüæÔ                                                                                                                                                                                                                       ÓÓüúúúúüúúüóüúüúüúÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ~‘~}~~~~~‘‘‘~¡‘‘~‘¡~~‘‘‘‘¡‘¡‘¡¢¢¡‘¡¡¢¢¡¡¡¡¡¡¢¡¢¢¡‘¡£¡¡‘‘¡¡¡¡¢¡¡¡¡£¡¡¡£¢£¦¡¡££¦¦££¦£¢¢££££¢£¦®£¢¢££££¡¢¦¦£åþÿÿÿÿÿꦦ®¦¦¦££«¦£«¦¢£¦¦¦¦£®®®©¦®¦££¯®¦¦¦¦¦££®®££®®¦¦££®£¦¦£££©®®®£££®®®®®®©££¦¦®£££££££££¢££¢¢¢£®®®££¦£££££££££¢¡¢£££¡££¡¡¡¢¡£¦¦£¢¢¢¡¢¡¡¢£¢¡¡¢¦«¦¦¡¢¦¦¡¡£¢¡£¢¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡££¡¡‘‘‘¡¡¡~‘‘‘‘~~~~~‘‘~¡‘~~€‘~‘‘‘¡‘~‘~~~}~~~}}~~ûÿ™}~‘‘~~‘¡~~‘~}}}~}}|r}|}}}}~~}|}}}s}v|p}}p}}}p}}|v}rvvvp|vppv}|v}}}pp||v|}}}}pppp}pp}vvvvpžÿßwvp{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$!!B÷ÿÿÿÿÿ÷_!!!!!!!! !! !!!!!!!! =}¥éüüýüüüüüýûýþýüüýüüýüüýüýüýüýàÓ                                                                                                                                                                                                                  Ó×úúüóúúúúüúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘~}~‘~~‘‘~‘¡~~‘‘‘¡‘~‘‘‘‘‘‘‘~¡‘¡‘¡¡‘‘¡¡¡‘¡¡¡‘¡‘¡£¡¡¡¡¡‘¡¦¢¡¡¡¢¢¡¡¢¢¡¡¡£¡‘¢£¢£¢¡¢¢¢££¢£££¡£¡£££¡¢£££££££¢£££¦££åþÿÿÿÿÿꦣ¦¦¦®¦££®££¦££¦¦¦©££®®££®®££«¦®®££«©¦®¦¢®®¦¦®¦©£¦®¦££¦¦®®¦©££®®«®£¦£££¦¦®£££¦¦©£££¦£¢£¢£®¦¦£¢£®¦££¦¦££¦¦¢¢¦¦£¡££¢¢£¢£¢£¦£¢¢¦£¡¢¡¡¦£¢¢‘¡¦¢¢£¡¡£¦¡‘¢¢¢¡¡¡¡¡¡¡¡¢¡‘¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘‘¡‘¡¡¡~‘‘‘‘~‘‘‘~‘¡‘~~‘‘‘¡‘~‘‘‘‘~~~~~}‘‘~}~~ýÿ‘}~~~‘~}~‘~~}‘~}~}~~}|}}}}}}~}|}~}}}}}~|}}|s}}}}r}}}rp}}}}|}|r}vr}|p}p}}ppv|v|vrp}ppp}vpppp|pvžþß}ppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!!! !!!!!! ! !  !=s¥èýýüýýýýýüüýÿþüýüüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                    ÓÓüúúúüúúüúúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ Ÿ~~~~‘‘‘‘~}~‘¡‘~~~‘¡¡¡‘~‘‘~‘¡¡~~~¡¡~~~¡¡¡¢¡‘‘¡£¦¡‘¡£¡¡¢¢¡£¡¡¢£¢¡¢£¢££¢¡¡¢¡¡¡¡¡£¢¢¢¡¡££¢¢££££¢¡¡¡¡¢£££¡¢¢££¢¢£êþÿÿÿÿÿê«¢£¦®®¦¢£££££¦¦¦¦£®££®©¦¦®£¢¢£££££¦®®¦£££©®®®®®®®®¦¦®®®®©©¦««®®£££££££©£®©¦¦¦£®£££¦££¢¢¢¦®¦££¢£®®¦£££¢¢££££«¦££¦£¢£¢¡¢¡¢¦¦¦¦¦¦££¡¡¦¦£¡‘¡¢¡¡¡¡‘¢¦¡¡¡¢£¡¡¡¡¡¡¢¡¢¢¡¡¢¡¢¢¢¡¡‘¡‘¡¡¡¡¢¡¡‘¡¡¡‘¡¡¢¡‘‘¡‘‘¡¡~~¡~¡¡‘‘¡¡~}~~‘~‘¡~‘¡‘~~~þÿ‘}‘}}~~~}}}}~~}}~}}}}|}r}}}}rv}}}}}}}~}}}}}}}rvv}}}v}}vv|}}}v}}}vpv}pp||pp|}pvvvvvpp}ppppppprÓÿÙvpp˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!B÷ÿÿÿÿÿ÷]!!! !!!!!!!! !! !  ! !!  =}ªíýüýüüüüüýýýþýüüýüüýüüýüýüýüýæÓ                                                                                                                                                                                                                                                             Ó×úúúúúüúúúüúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖŸ¡~~~~‘‘~~~‘¡‘‘‘‘‘‘~‘‘¡¡¡‘‘‘‘¡‘¡¡‘¡‘‘¡¡¡¡¡¡¡‘¢¥¡‘¡¡¡‘¡¡¡¢¢¡¡¡¡¦¢¡¢¡¢¡¡¡¡££¡¢¢¡¢¢¢¢¡¢¢¢¢¢¢£¢¢£££¡¢£££¡££££¢¢£¦åþÿÿÿÿÿ릣£«¦«£££¦¦¦¦®©¦¦££££®®£¦£¦££¦¦¦¦¦®£¦¦£¦¦®®¦®®¦®®®£¦®®¦¦¦¦¦¦®®££®®¦®£¦££¦¦«®©£©£¦¦¦¦££££¦®¦¦£¢£¦¦££££££¢¢££¦¦£££££££¡£££££¦£¡£££¡¢££££¡¡££¡¡¡¡¡¢¢£¡‘¢¡¡¡¡¡¢£¡¡¡‘¡¡¡¢¢‘¡¡¡¡¡‘¡¡¡¡¡¡¡‘‘¡¡¡¡¡¡‘‘~¡¡‘¡‘~‘‘‘‘‘‘~‘‘~~‘~~~~¡‘~~~}‘‘~}þÿ‘~}}~}~~}~}~~}}~~}}}}}}|}}~}}}}}}}s}~}~}p}~}|}v||s}|}}|}vr}}|v}}|vr}p}vp||v|v|p}|pvrpvppppp}vpÇÿ×vpp˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!@óÿÿÿÿÿ÷Z!!!!!!!!! ! !! !! $qªëüýüýýýýýüüýÿþüýüüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                                ÓÓüúúúúúúúüóüúüüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ¢~‘‘~}}¡‘‘‘‘~‘¡‘~~~~~~~~‘‘‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡‘~¡¡¡‘¡¡¡¡¡¡¢¡¡¡¡¢¢¡¡¡¡¢¡¡¡¡¡¡£££¦£¢¢¢¦¦¢¡¢¢£¢¡¡£££¦¦£¦«£¡¡£¦«£££££Ýþÿÿÿÿÿ£££¦£££¦¦¦¦££££££¦£®¦¢££¦£££¦£¦®®®®©¡®¦£«¦£££¦¦¦«®®£¦®¦«®®®®££®±®®¦©££¦££¦££©®®©¦®®®®¦¦®££¢¡£¦«¦¦¦££¦£££¢£¦¦£¢£££££¦¢££¡¡¡‘¡¢¢¢£¢¡£¦££¦¢¡££¢£¡¡¦¢¡£¢¡¡¡¢£¢¡¡¡¡¡¡¡‘‘¡¡¡‘‘‘¡¡‘‘‘‘‘¡¡£¡‘~~¡‘¡¡¡‘¡¡¡¡‘~‘¡‘~‘~~¡¡~}}}}~~~}}~~‘‘‘ÿÿ‘€}}}}}~}~~~}}~}}~~~}~}}‘~}~}}s}}||}~}|}}}}}p|||vp|vr}}~}}}}ppv}}vv}|pv}}|vpvvppppvp|}}pv}}vÓÿÇvp}™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!!      !!=q’éüüýüüüüüýýýþþüüýüüýüüýüýüýüýàÓ                                                                                                                                                                                                                                        ×ÓúüóüúüúúüúúúúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~}‘‘~~~‘‘¡~~‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘¡¡¡¡¡‘¡‘¡¡¡¢‘‘‘¡¡¡¡¡¢¡‘¡¡¡¡¡¡¡¢¡‘¡£¢¡¡¡¡¢¢¡¡¡¡¡¡£¦¢¢¢¡¢¦¢¡¢¡¢£¢¢¢¢¢££££®¦¢£¢£££¦¦££åþÿÿÿÿÿ뫦£¡£¦¦®£¦¦¦£££££££®®¦¦££®®££©®¦£©©®®£¢®®®£©®££¦®«®®££®®££¦®®¦££®®®£©®¦¦¦££¦¦£¦¦¦¦¦®«¦£££¦¦££££¦¦££¦£££££££££¦££¦££££¢¡£«¢¡¡£¢¢¢¡¢¡¡¦£¢¢££¡£¡¡¢¢¡¡¡¡¢¦¡¡¡¢¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘¡¡‘‘‘‘¡‘~¡‘‘¡¡¡‘‘‘¡‘~‘~‘‘‘‘‘~~~~~~}~~~~}‘¥ÿÿ‘~}~}~‘~~}}}~~~~}~}}}}}}‘}~}}}|}~}p}}}p}~|}}|}}}p|}}v}}}rp}}vvrv}}v||vr}p}pvrp||vpp|ppv|ppvpÓÿÇvppžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷Z!!!!!!!!! !!!!!!!!!   9q¥íýýüýýýýýüüýþþýüýúýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                     ÓÓüúúüúúúúúúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŸ}‘‘~~}~‘¡}~‘‘~¡‘‘‘‘¡¡¡¡¡‘¡¡¡~‘‘‘~‘¡¡£¡¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡¢¡¡¡¡¡¡¡‘¡¡¡¡£££££¡¡¡¡¡¡¢¡¡¦£¢£¢£¦££¢¡¡¢¢¢£¦££££¢¢£¦£¡£Ýþÿÿÿÿÿꦢ££«®®¦££££¦£®®®£¦®®®®££®®¦¦®®®®©££¦¦££®®¦¦¦®®©®£££££®®©££££¦£¦®«£££¦®®®®¦©®¦¦££¦¦¦¦£¦££®®£¦£¢£¢¢£®®¦££¡££¢¡£¦®©£££¦¢¡¢¦¢£««¦¢¡¡£¡¡¦¡¡¡¢¦£¡¡¡¡¡¡¡¡££‘¡¢¢¡¡¢¡¡¢¢¢¡¡¡¡¡¢££¡¡‘¡‘¡¡‘‘¡¡¡¡‘¡~¡¡~~~¡¡¡‘‘‘~~‘‘~~‘¡¡¡¡‘~~~~~}}~¥ÿÿ€~~‘~~~~€~}~~}}}}}}}}~~}}}|}}}}}‘~|}}rv}}}}r}}~~}}}}}}pppp}}p}}}}}p|p|}|vvpp}v|}v|}}pppp}ppp×ÿžpvvžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@÷ÿÿÿÿÿ÷_! !!!!!!!!!!!! !!!!$q¥íüüýüüüüüýýýÿýüýúýüýüüýüýüýüýæÓ                                                                                                                                                                                                                                             Ó×úúúúúüúüúüóüúúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘¡~~~~~~‘¡~‘¡‘~‘‘‘~¡‘‘¡¡‘~‘¡¡‘‘¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡£¡¡¡‘¡¡¡¡¡¡¡¢¢¡¡££££¡¡¡¡¡¡¢£¢¢£££¢£¢£££¡¢££££¢¢££££¢£££¦£êþÿÿÿÿÿë«£££¦¦¦£££££££©£¦©¦®®¦¦££®®££®®®®¦£££©£¦®®©©£®©¦®©¦¦®¦®®®®££¦®£¦®«££££¦®®®¦£¦®£¢£®®¦¦£££¦¦¦¦¦££¦£¢£¦¦¦¦¡¢£££¢¦®£££¢£¦¢¢¢¢¢¢¦¦£¡¢££¡¡¦¢¡¡££¢¡¡¢¡¡££¡¡¢¢¡¡¢£¡‘¡¡¡¡¡‘¡¡¡¡¡¢¢¡¡‘‘¡¡¡‘¡¡‘‘‘¡¡¡‘‘‘‘‘‘¡¡~~‘¡¡‘‘‘~~¡‘~~~¡‘‘‘‘‘~~}}~~~§ýÿ‘}~¡~~~}~~~}~}}}~}~}}}}}}}}s}}}}}~~}|~}}s|}|}}}}}}}vr}}}|v|vr}|v}}}}|vv|vp||ppv|v}vpp|p|ppvppp×ÿœppwÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@óÿÿÿÿÿ÷x !!!!!!!!!!!!! !     !pªíýýüýýýýýüüýþþýüýüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                              ÓÓüúüúüúúúúúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡}~~~‘‘‘~~¡¡~‘¡‘~~‘¡‘¡‘‘¡‘¡¡‘‘¡‘‘‘¡¡¡‘‘¢¡¡¡¢£¡¡¢¡¡¡¡¡¡¡¡¡¡¦£¡¢¢¢¡¡¡¡‘¢¡¡£££¢££££¢£¢¡¡¡¢£¢¢££¢¡¡¢£¦«¦¦¢¡££££åþÿÿÿÿÿꦦ¦¦££¢¢£££©®££¦®©®®¦£££®®®¦£¦¦®®®®®®®®®®¦®®¦®®®®©¦®®®®££££®®®¦££®®®¦£££¦®¦£®¦£¢¦®®®¦££££££®¦¦¦®¦££¦®©®¦£¦««££¦¢¡¡¡££¢£££¢¡¡¢¢¡¢£¢¡¦«£¡¡¢¡¡¦¦¡¡¡¦¡¡¡¡££¢¡¡¡‘‘‘¡¡¡Ÿ¡¡¡¡¡¡‘‘¡‘¡¢¡¡¡¡¡‘¡¡‘‘¡¡¡‘¡¡‘‘‘¡¡¡~‘¡~~~~}~‘¡¡~~~~‘‘~}~~~‘‘¡~}‘Ôÿþ}}~}}~}‘~~~}}‘‘~}~~}s}}}~~}}}~s|}|p}}}}~}~}}|}s|}}}v}rv|||vpp|}rvrppvvpprvvppv}}|pp|}rvoppppßÿ˜oopÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Y÷ÿÿÿÿÿ÷_!!!!!!!!!!!!!!!! !!!!!!!!!!sªíýüýüüüüüýýýÿýüýüýüýýüýüýüýüýàÓ                                                                                                                                                                                                                                                Ó×úúúúúúüúüúüúúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ}¡¡~}‘‘‘~~‘‘‘~‘‘‘‘‘‘‘¡‘‘‘¡‘¡¡‘‘¡‘¡¡‘~¡¢¡¡¡¡¦¡¡¦¡¡¢¡¡¡¡¦¦¢¢¡¡¦£¡¡¡¢¡¢¢£¢¡¢£¢£¢¡£¡¡£¢¢¢££¡¢£¢¢£¦¦¦¦£¢££¢£åþÿÿÿÿÿ릢¦¦££££££¦££££®®£¦®®¦¦££®¦®©££®®®®®®©¦®¦¦®®¦®®®¦¦®®¦®®©££®®®®®£¦¦®®£££¦©®££¦®££¦¦®®®£££££¦¦¦£¦¦££££¦££££«®¦£££££¢¢££¢¢£¢¢¢¢£¢¡¢£¢££«£¡¡¢¡¡¢¢¢¡¡¢¡¡¡¡¡¢¦¡¡¡£¡¡¢¡‘¡¡¡¡¡¡¡‘‘¡¡¡¡¡‘‘‘¡‘¡¡¡¡~¡¡~¡¢‘~‘‘~¡‘‘‘}~‘‘¡}~‘~~~~€¡~}~Ôÿþ‘}~~~}~~~}}~~~}~~}~}r}}}~~}}}}}}}}}}|}~}}~}}r|}|}}}|vv}}}}||v}|vvv||rpvvv}pppp|}|vvpvvpppvppÙÿ˜ppp×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!! !! !! !9qªíýýüýýýýýüüüÿþýüýüýüüýüýüýüýüæÓ                                                                                                                                                                                                                                                                  ÓÓüúüúúüúúúüóüüúüúÿÿÿÿÿÿÿÿÿÿÿÿýÖ¢¡~~‘~‘‘¡‘¡~~‘¡‘‘‘¡‘¡¡¡~¡¡¡¡‘¡¡¡¡¡~~‘‘‘¡£¢¡¡¡~¡¡¡¡‘‘¡‘¡¢¢££¡¡¦¡¡¢‘¡¢¡¡£¢¡¡¡¡¡¡¢£¢¢¡¡¡¢££££¦¦£££££¢¢¡££¢£®®££åþÿÿÿÿÿê«¢¢££®®®®®¦£®©¦®¦£¦¦¦¦®££¦£©©¦£®££££¦££¦£®®¦£¦®®¦®¦££©¦®®®®¦£¦££££®®®©®¦®®£££®®®££££££®©®®¦¦¦¦£¢££££¢¢¡¢¢££¢¦£££££¢¢£££¢£££¦¦¡¡£¢¢£¡££¡£¦£¡¡¡¡¡¡¡££¡¡¡¡¦£‘¡¢¡¡££¡¡¢¢¡¡¡‘¡‘¡‘¡¡‘‘‘¡‘‘¡¡‘¡‘¡¡‘‘‘}~¡¡‘‘‘¡¡‘~}~‘‘¡~}~¡‘~‘‘¡‘}~‘Úÿý‘~~~}‘~}|}~‘‘~}}|}~~}~€‘}~‘}|}~}r|}}}~~}}|}}v}v}|pprv}}}}}}}}vv||}}}}vv|}}vp}vpppp|vvpvpp}|pàÿvppÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@÷ÿÿÿÿÿ÷Z! !!!!!!!!!!!!q¥íýýýüüüüüýýýþýüüüýüýýüýüýüýüýæÓ                                                                                                                                                                                                                                               Ó×úúúüóüúüúüúúüúúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘‘‘¡~~‘‘‘~~~¡¡¡~~‘‘‘¡¡~¡¡‘¡¡¡‘‘¡¡‘¡¡¡‘~¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¢£‘¡¢¡¡¡¡¡¡¡¡¢¡¢¢¡¢£¡¡¢£¢££¡¢¡¢¢£££¦¦¦¦££££¢¡££££££££åþÿÿÿÿÿí«££¦££«®®¦££¦®¦¦¦£©££®®¦©£¦££®¦®¦££¦®££®¦®®©£¦®©£®®¦®®£©±®¦£®®¦£©¦¦®¦¦££®©¦£¦®®¦£££££®¦¦¦¦¦££«¦¢£££¢¢¦¦¢¢£££¦£¢£¢£££££¢£££¢££¢££¡¢¢¡¢£¡¢¦£¡¡¡¡£¡¢£¡¡¢¢¡¡¢¢¡¡¡¡¢¡¡¡¡¢¡¡¡¡¡¡‘‘‘¡¡¡‘‘¡¡¡‘¡¡‘‘‘¡‘‘‘¡‘¡~~~‘¡‘¡‘~~‘~~‘‘¡}~¡‘~‘~~~~~~Úÿý‘‘}~~}~¡}}}~~}}}}~}}}~~~~}}~~}|}~}v}}}}}}}p}}}}|}r}}vv||s}}}}}}||p}v}}||pv|}ppv|rvpvp}pvppp}voßÿ}vpßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!!Bóÿÿÿÿÿ÷_!!!!!! !! !!!!!! !!$qªëýýýýýýýýüüýÿþýüýüýüüýüýüýüýüæÓ                             !!                                                                                                                                                                                                                                             ÓÓüúüúüúüúúúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ}}~‘~}~‘~}~~~~‘~¡~~~‘~~‘¡‘~~‘‘‘¢¡¡¡¡¡¡‘¡‘‘‘¡¡¢‘‘‘¡¢¢¡¢£¦¢¢£¢£¡¡¡¡¡¡¡££¦£¡¢¢¡¡¢££¡¢£¡¢¢¢£££¢¡£££¢££¢£¢¦£¦¦¦£££¦«®êþÿÿÿÿÿꦣ¦®¦£¢££¦®££®®¦¦¦£££®®®®©£¦®®®®®®®®±®££®®±®®®®¦¦¦££©¦££®®££®®©®®®¦®¦®®¦¦®®®¦££¦®¦®®®®¦££££££©¦££¦«££«®¦¦¦£££¢¡¡£«®«¦£¢¢££¢¡££¦¢¡¡¡¡¢¢¡¡¢£¡¡££¢¡¡£¡£££¡¡¡¡¡¡¡‘¡¡¡¡¡¢¡¡¡¡¡¡‘¡£¢‘¡¡¡¡~~¡¡‘¡¡‘‘~~¡‘¡‘‘~~‘¡‘‘‘¡~‘~~~¡¡‘~}}~~~‘~èÿû‘‘~~~}}‘~~‘‘~}~~~}}|}}|}}|}}~}}}~|}~}}r}}}}}}}}}}}}}}}}}|||pppp}pv|}pppv|p|vpp}}vpv|ppprvp}~|pèÿvvvpæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$$!Zòÿÿÿÿÿ÷x!!$$!!!!$!!!! !!!! !!!! =q¥éüýýýüüüüýýýþþüýüýüýýüýüýüýüýàÓ                         Bƒ_!                                                                                                                                                                                                  @@!                        Ó×úúúúúüóüúüúúüúúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~~~‘~~~~~~~‘‘‘~~~¡¡‘‘¡¡¡‘¡¡¡¡‘¡¡¡¡¡‘¡‘¡£¡¡¢£¢¡¢¡¡¢¡¢¡¢¡¡¡¡£¡¢¡¡¢£¡¡¡¡£¢££¢¡¡¡¢£££¢¦£¡¡£££¢£¦¦¦££¦££¦®®åþÿÿÿÿÿꦦ££££££¦®¦££®®£¦®®££®®®®©£®®®¦®®®£®±®£®®®®®®®®¦©®¦¦£¦®£®®££®®©£®®¦£¦®®®®®®¦¦£££®®®®®£¦®¦£££££££¦¦®££«®¦£££££££¢¢¦¦¦£¢¡££££¢£¢£¢¡¡¢¡¢¢¡¡¢£¡¢¦¦¡¢¡¡¢¡£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡¢¢¡¡¡¡‘‘‘‘¡~‘‘‘‘‘‘‘‘‘¡‘~}‘¡¡~‘‘‘~‘‘‘¡~~~}}~‘~ëÿý‘‘~}~}}‘}}‘~~}}‘~s}}}||~}}}}~}}}}}}}}}|s}}}}s}}}}}p}~}||vv}vrp}}vvr}|ppv|p|}|pv}|pp|||pvvpv}ppèý{|ppèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷]!!!!!!!!!!!!!! !!!!  !! !q¥íýýýýýýýýüüýÿþýüýüýüüýüýüýüýýæ×                         !ƒâÇZ                                                                                                                                                                                                 !Z–Z                           ÔÓüúüúüúüúüúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~}~‘‘‘‘¡¡¡¡‘‘¡¡‘¡‘‘‘¡¡¢‘¡¡¡¡‘‘~‘¡‘‘¡¡‘¡¡¢¢¢¢¢££¡¡‘¡¡‘‘‘¡¡¡¡¡¡¦£££¢¡¡¡¡££¡¡£¡¡¡¡£¢££¡¡¢¢£¦¦¢¡¢¦££££¢¡¡¡¡£££¢¢£Ýþÿÿÿÿÿë«®¦¦®®®¦«®¦£©¦£££®¦£®®££££®®®£¦¦££¦®®£¦®®®¢£¦¦®®®®®®£©®®®®©®®®££®®®®®£££££££¦©®¦£¦¦¦£¢££££££££¦®©¦£¡¢£¦¢£££¦¦££¡¡¢¢¢¢££¦¦££¢£££¢¡¢££¦¢¡¡¦¢¡¡¢£¢¢¡¡¡‘¡¢£¦¢£¡¡¢¢¡¡¡¡¡¥àÚæêêêÚÖ¬§¦‘¡¡‘‘¡¡¡¡‘‘¡‘¡¢¢¡¡¡‘‘‘‘¡¡¡~~‘‘‘~~~~}}}}¡¡‘}õÿ÷€}~}}}~~~}}}~}}~~}~~}}}~}~}}}~}}}~}r}}}r}}s|}~}s|v}}}}}}}}}}}}}pp}vp}vprv}}}v}|pp}}||vpppppv|ôú}v|vñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷Z!!!!!! !!!!! !!!!!!!!!  !  $qšíýýýýýüüüýýýþýüýüýüýýüýüýüýýýæÓ                         $ƒÌ–!                                                                                                                                                                                                    !@_Y                           Ó×úúúüóüúüúüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿþÖŽ}~‘~~}‘‘~‘‘¡‘¡¡~¡¡¡~‘¡‘¡¡¡¡¡¡¡¡~‘¡¡¡~‘¡‘‘¡¡¡¡¡¡¢¦¢¡¡‘¡¢¡¡‘¡¡¡¡¡¢¢¡¢£¡¡¡¡¡££¡¡££¡¡¡¡¢£¢¡¢£¢¢£¦£¡¡¦£££££¡£££¢¢£¢¢¢åþÿÿÿÿÿ릦©¦¦¦®®®®£¦¦¦£££¦®£©®©£¦©®®¦¦®¦£©®®£¦®¦®¦®££¦®®®®¯®¦®±®®®®®®®¦£©®®®££¦®££££¦®®¦¦¦®¦£££££££££££¦¦¦£¢£¦¦¢¢¢£¦¦£¡¢¢£££££¦¦¦£¡¢££¡¢¢¢£¢¦£¡¡£¢¡¡¡¢¢¡¡¡¡‘¡£¢¢£¢¡¡¡¢¢¡¡¡¦ëþÿþþþþÿþýýûëÔ¡¡¡¡¢¡‘¡¡‘‘¡¡¡¡¡‘~‘¡‘‘‘¡‘‘¡¡‘~~‘}~~~}}‘¡‘~~~}õÿú‘}}}}~}}}~}}~‘~}~~‘}}}}}~}}}}~}r~}}}}}}v|}|}}}}}}}}}}}}}|}}}}}}pvvp}}ppv}pv|pv|ppvvv}}pvvppp|õúwvvvõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!@óÿÿÿÿÿ÷[!!!!!!!!!!!!!!!! !     =q¥ëýýýýýýýýüüýÿþýüýüýüüýüýüýýýýàÓ                            $[=                                                                                                                                                                                                      @                            ÓÓüúúüúüúüúúüúúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŸ¡¡‘¡~~~~}~‘¡~‘¡~}~¡¡¡~}~‘¡¡‘‘¡~¡¢¡‘‘‘¡£¢¡‘¡¡¡‘~¡¡‘‘¡¡¢¡¡¡¡¡¡¡¡¢££¡¡¡¡¡¡¡¡¢¦£¡¢£¡£££££££¦«¦¢¢££¡¦«££££¢¡¢¦®¦¦¦®¦£êþÿÿÿÿÿê«££££¢£¦£¦®®¦£¦£¦©¦££©©£££¦¦®®®££®®£©®±®®¦®®®©£®¦£©®®£®®£££®®¦£¦®®®¦££®®®®®®®®£££££¦®¦¦£®®¦®®«¦££®®¦¦®£¡¢££¦¦£«®£££££££¢¡¡££££¡¡¡¡¡¡¦£¡¢¦£¡¡¡¡¡¢¢¢¢¡££¡¡¡¡¡¡¢¢¡¢£¢ÚÿÿÿÿÿÿÿÿÿÿÿÿÿýõÚ¥‘¡¡¡¡¡~‘¡¡‘~‘‘~~‘‘‘‘‘~}~~~¡¡~~}~~~‘‘‘~ûÿõ‘}~¡~~‘}}}}}}}~}}}~~}}}}s}~|v}}}}~~}|}}rv|}rv}|r|r|pppr|}r}}}}rv}}vp}}}|vpp|vppppvppppppv|õ÷wppp÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@÷ÿÿÿÿÿ÷_!!!!!!!!! !!! !!!!!!  q¥éüýýýýýüüýýýþþüýüýüýýüýüýýýýýæÓ                                                                                                                                                                                                                                                                     Ó×úüúúúúüúüúúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘¡~‘‘~}~~~}~‘‘¡‘~~‘¡‘~~~¡‘¡‘~~‘¡¡¡‘¡¢¡¡¡¡‘‘¡¡‘¡‘¡¡¡¡‘¡¢££¢¡¢‘¡¡¢££¡‘¡¡¡¡¡‘¡£¢¡¢£¡¢££¢¡£«¦££¢¢¢¢¦¦«£££¢¢¢¢¦®¦¦«®®®åþÿÿÿÿÿ릢£££££££¦®®©¦©¦¦¦®££££®£¦¦¦¦®®££¯®¦©®±®¦©®®¦©®®®©£®©£®©££¦®££££®®®¦££®®®®®®®®©£££££¦®®®©£¦®®®¦£¦¦¦¦¦££¡¢¦¦£¦®®¦¦¢££¦£££¡¡££¢££¡¢¢¡¡¡¢¡¢¦£¡¡¡¡‘¡¢£¡‘¢¢¡¢¡‘¡¡¡£¡¢£¨ûÿÿÿÿÿÿÿÿÿûþÿÿÿÿÿúÚ¥‘¡¡‘~~‘¡‘¡‘‘¡‘~~¡‘‘¡‘~~}~~‘¡‘‘‘~~}~}}~~~ýÿõ‘¡~~~‘}~~~}~s}}~}~}~~~~}}~|}~~}vr}}~}}|}}}}vr}}p}}}v|||}|v}}}}|vv}|p|v|pv|}|ppp}|v|pppppppvvvõõ}pppúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷Z!!!$!! !! !!!!!!  ! !!   !  q¥íýýýýýýýýüüýÿþýüýüýüüýüýüýýýüæÓ                                                                                                                                                                                                                                                                         ÓÙüúúüüüúúüúüüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽs‘‘~}~‘~‘¡‘‘‘‘‘‘~~¡¡¡‘‘¡‘¡‘~¡¡¡¡‘‘¡¡¡‘‘¡¡¡¡¡¢¡¡‘‘¡¡¡¡¡¡‘¡¡¡¡¡££¡¡¡‘¡¦¦£¦£¢¦£¡¡¢¦££¢£¢¡¢¦¢¡¡¡¢¡¡¢¢£¦££££££££¡¡¢¢¢£Ýþÿÿÿÿÿê«£«®®¦£££££¦®®®®®¦££®£®®®®®©¦®®££®®®£©®£®®®¦£®®®®®¦££®®®®®¯®¦©®®®®£®®®®®©¦££¦®¦©®©¦££££¦£¦¦¦¦¦®¦££££££££¦®«¦¢¢£££¢¢¢£¡¡¢¢¦¦£¡¢££££££££¢¢££¡£££££¦£¡¡££¡¡‘¡¢¡¡¢¡¡¥àÿÿÿÿÿÿÿÿÿÿúÚíþÿÿÿÿþõÔ¡¡¡‘¡¡‘¡¡¡¡‘‘~¡‘‘‘‘~~~‘¡~~‘~~‘‘~~þÿõ€}}}~~}}~‘‘~}}~~}~}}}}}}~}s|}~}}}}}}}|}|}}}}}}}}}}}}|}|v}}v|vp|pp||||}|}}p|pv}pppp}}|vppp|vpp÷ñwpopýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!$Cóÿÿÿÿÿ÷_!!!!!!! !!!! !!!!!!!!!!!   !   =}¬íýýýýýýýüýýýþþüýüýüýýüýüýýýýýæÓ                                                                                                                                                                                                                                                                   ÓÓúüúúúúüúúüúúüúüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ}~~~}~~~~¡‘‘~~¡}‘¢¡~~‘¡‘‘‘¡‘‘‘‘‘¡‘¡¡¡¡¡¡¡¡¡¢¢¡‘¡¡¡¡¡£¡‘¡¡¡¡¡£¦¢~¡¡¡¦£££¢££¦¢¡¢£¢¡¢¢£¡¡¢¢¢¢¡¢¢¢¡¢££££¦¦££¦£¢¡¢¡££åþÿÿÿÿÿë«£«®®®££££££®®®®®££¦®£®®®®®¦¦®®®®®®©£¦££©®®©£®¯®¯®®££©®©®®©¦®®¯±®¦£®®®±±¦£££¦®®®¦£¦®¦¢£¦¦¦©¦£¦®¦£££££®¦£¦¦¦¦£¢£¢¢¢¢£¢¢£¢£¦¦¦£¢££¢£¡¡££¢¢¢¢¢££££¦£¢¢¡¢¢¡¡¡¢£¢¡¡¡¢­þÿÿþê­Ú÷ÿÿÿÿøÔ­íÿÿÿÿÿþô¬¡¡‘¡‘¡¡¡¡~¡¡‘~~‘‘‘¡~~~~‘‘‘~~~‘~}~‘~€‘þÿë€}}}}~}}~¡‘}}~¡€}}~}}~~}}}}}}}}}}}~}}}|}r}}}}}p}}}}}}}pv}}}|}p}}vp}|vpv|r}v|vp|pp}vp}}|pppvpppûñ}pppþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!! !!!!!! !  =ŽªëýýýýýýýýüüýÿþýüýüýüüýüýýýýýýàÓ                                                                                                                                                                                                                                                             Ó×üúúüúüúüúüúüüúüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ‘‘‘¡‘~~~‘‘¡¡¡‘}¡‘~~‘¡¡¡¡¡¡¡‘‘‘¡‘‘‘‘¡¡‘‘¡‘¡¢¡¡¡¡¡¡¡‘¡¢¢¡¡£¡¡¡¢‘£¡£¡¢¦¢¡¡¢¡¢££¡¡¢¡¡¢££¢¡¡¢£¦£¢¢££¡¢¦¦¢£££¢£££££åþÿÿÿÿÿꦦ®®£¦®®®©¦££££¦¦¦®®©££©®®¦£¦®®©¦¦®££©®®®®®©££®®®©£®®©®¯®®££®®®®£©££££¦®¦£®¦¦¦¦®¦£©®¦£©®®¦£££¦££¦«¦£¢¦®¦£¢¡£¦£¦£££¦£¢£¦££¡¡¡¡¢¦£¡£¢¦¦£¢¡¢£££¡¡¡¢¡¡¡¡¢££¡¢¡‘¡¡~¡¥õÿÿÿõ¥¢¢¥ÔõÿÿÿýÚ¥¬íÿÿÿÿÿý륢¢¡‘~~‘¡¡‘~‘¡¡¡~~‘‘‘‘~‘~~‘~‘~~¡¡‘~™þÿè‘‘~‘~}~~}}‘~}~}|}}}~}}~}~~~~~~~}}}}}~}}}}~}p|}rvp}}}}s||}p}}|pp}}}}rvvvvrvvpp}|pppv|p}ppvpvúèwpvpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!Yóÿÿÿÿÿ÷Z!!!!!!!!! !!!!! !    !  9q¥éüýýýýýýýýýýÿýüýüýüýýüýýýýýýýæÓ                                                                                                                                                                                                                                                                                ÓÓúüúüúüúüúúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿþÚŸ‘¡~‘‘‘~~~~‘~‘¡‘~~‘~‘¡‘¡¢¡¡¡¡¡‘¡¡¡¡‘¡‘¡¡¡¡¡‘¡¡¡¢£‘¡£¢¦¡¡¡¡¡¦¦¡¡£¦¢¡¢£¡¡£¡¡¡¢¢¡¢¢¡¡¡¡£¦¦£¡¡££¡¡¢£££££¡¢££££åþÿÿÿÿÿꦦ®¦¦®®¦¦®®££¦££¦©®®©££®©®®¦©®®££¦©£«£©¯®©©££¦±®©®©¯®£©®®©£¦¯®®©£©©£££¦®®®®®¦¦££¦®¦££«®®®®¦£££££®¦¦££¦¦¦££¢£££¦£££¢¦£¦¦¦¢¡£¡¡¡££¡¡¦¦¢¢£¡¡¢££¢¡¡¡¢¡‘¡¡£¢¢¡¡‘¡¡Öÿÿÿý­¡¡¢¢¡¥Ôõÿÿÿô¨¥¬õÿÿÿÿÿýݦ¡‘¡‘‘‘¡¡‘‘¡¡‘~~~¡‘¡~~‘~~~~‘‘‘‘¡šÿÿë‘~‘~‘¡~~~}}~‘‘~}}|s}}}}~~~~~~~}~~~}}}}}~~}}~}}ppvvr}|s}}||}}}}vr}v}}}}v||pvvr}ppppppppp}}|ppppýæ}pv}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷[! !!!!!!!!!! !!! !!!       qªíýýýýýýýýýüüÿþýüýüýüüýýýýýýýýæÓ                                                                                                                                                                                                                                                                         Ó×üüúúüúúüúüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡‘}}‘‘‘‘~~~~~‘¡‘¡¡‘‘¡¡¡‘~¡¡‘‘‘‘¡¡¢¢¡‘¡‘¡¡¡¢¡¢¡‘¡¢¡‘¡¦¡‘¡¡¡¡¡¡¢¡¢¡¡‘££¡¡¢£¡¢¢¢¢¡¦«¦¦£¡££££¡¦¦¢£®«££££¦¦£¦££«¦®®êþÿÿÿÿÿꫦ¦¢¦®¦¦®®¦¢£®®¦®®¦¦«£¦¦¦©®®®®®¦©®®®¯®£®¯®©®£®±®¦©££©®©©®®®£®®¦¦®®£®®®££££«®®¦££©®¦£®®¦££¦¦££££££££££¦¦££££££££¢££¢¢£¦¦££¦¦£¡¦©£¡¢¦¢¡¡££££¢¡¡¡£¡£¦¡¡¡£¢¢¢¢£¢££­ûÿÿÿê¡‘¡¡¡¢¢¡¥ÚûÿÿûÝ¢¥Ýûÿÿÿÿÿõ§‘‘‘‘‘‘~~‘‘‘¡~~‘~~~‘‘~€‘~}‘~}~‘¬ÿÿê‘}}}}‘~~}}~~}}~}~~~~|}}}}}}~}}|}|}}}}}}}}pr}}}~}}}}|}}|vpvp}rpvvvpp}}p}pp}|v|v}}p}|ppppppvv||ýàwpp{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷_!!!!!!! !!!!!!!!         =qªíýýýýýýýýýýýÿýüýüýüýýýýýýýýýýàÓ                                                                                                                                                                                                                                                                         ÓÓúúüúúüúúüúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ¢‘~~~¡‘~‘‘~~~‘‘¡¡~‘‘‘‘¡‘~~‘¡‘~~‘¡¡¡¡¢£¡‘¡¡¡~¡‘¡¡¡¡‘¡¡£¡¡£‘£¢¡¡¡¡¡¡¡¡¡¡¡¡¡£¢£¢¡¡£¦£¦£¢££¦£¡¡££¡£¦®¦£¢£¦£¦®¦£©¦¦£åþÿÿÿÿÿí«££££®®®®®¦£¦£¦®®®®£©®®£¦¦¦®®®®¦®©©®¯®®®®®®®¦®®¦¦£££®®¦£®®®¦®®££©¦¦©®¦££££®®®£££¦¦®®®£££££¦¦¦£££¢££££££¦£¢£¦££¡¢««£¢£¦££¦¦£¡£¦¦¢¡¢£¡¡¡££¢¢¦¢¡¦¦£¡£¡¡££¢¢¢¦¦£¦ëÿÿÿ÷¥¡¡¡¡¡¢£¡¡¡¥êþÿÿ륦­êþÿÿÿÿýà‘~¡‘~~~¡¢¡~‘~‘‘~~~}~¡‘‘~}}~~}}~Ôÿÿæ‘}}}}‘‘~}~~}~}~~~€‘}}s}~}}r}}}}|ps}r}}|}}}vv}~}||}|}|v||v||vvppr}pp|rvvrvvvvppv|vp|ppppppppp}ýàwppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!Bóÿÿÿÿÿ÷[!!!!!!!!! !!!!!!!!! !! !!!=}ªëýýýýýýýýýýýýÿýüýüýýýýýýýýýýýèÓ                                                                                                                                                                                                                                                                       Ó×üüúüúüúüúüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿþÖ Ÿ~~‘~‘‘~‘~~~~‘‘‘‘‘¡¡‘‘¡¡¡¡‘¡‘‘‘¡¡¡¡¡‘¡£¡¡¡¡¡£¡¡«¢¡¢¡¡£¡¡¡¢¢¢¡¢£¡¡£££¡¢¢¢£¦¦¡¡¢££¢¢££¡£©£¡¡£¢£¦££££¦£¢¢¦¦£¦åþÿÿÿÿÿê«££¦«¦£££¦£¦©¦¦¦¦££££®®£©££®¦®®®®££®®®¦©®©®¯©©®®®®©¦¯®£©®®®®®®¦¦®®®£®®®®®¦¦®££®®¦¦£©£££¦£££¦¦¦¦¦¦®££¦££®®££££££¦£££¦£¢¡£¦¢¡£¢¢¢£¢£¦£¢¢£¢¡¡¦¦¡¡¦£‘‘¢££¢¡¡¡¡¡¡¡¬ÿÿÿþÚ¡¡¢¡‘¡‘¡¡¡‘‘¢Ôõÿÿ÷Ô¡‘­íÿÿÿÿÿõÓ‘¡¡¡¡¡‘~‘‘~~‘‘‘¡~¡‘~‘~~‘‘‘~~ÓÿÿÚ~~~}}¡~}~}}}}~~}}}}}}}}}}}~}}~~}}}s}}}}}}|}}r}}}}}}}}}||v}}|}}vp}}|vv}}}pv}|p|}}}vpppp||vvý×wpp˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!@óÿÿÿÿÿ÷_!!!!!!! !!! !!!!  !!    =qšíüýýýýýýýýýýÿýüýüýýýýýýýýýýýýàÓ                                                                                                                                                                                                                                                                                  ÓÓúúüóüúüúüúüüúüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ¢}‘¡~¡¡‘~‘~~~~‘~‘¡¡¡¡¡¡~~¡¡¡‘€~‘‘‘¡‘‘‘‘¡¡¡‘¡‘‘¡¢¦£¡¢¢£¦¡¡¡¡¡¡¡¡£££¡¢¡¡£¦¦¢¡¡¢£££¢¡¡¢£¢¢¦£¢£¦££¡¢¡¢£¦¦££££¡¢¦¦££ìþÿÿÿÿÿ릢£¦©££¡£££«®£££££¦££¦¦©®®£££®¯®®¦®©®®®©¯®®®¦¦£®¯®££©®®¦®©£©®®®®®®®¦£©®¯®®©£¦®®®££££££££££££«®®¦®£££®¦££¦¦¦£¦®®£££®®«¢¢£££¡¢¢¢¦¦£¦£¢££¢¡Ÿ‘¢¢¡¢£¡¡¡£¢¡¡¢¢¡‘‘¥õÿÿÿí¦¢¢¡‘‘‘¡¡‘¡¡¡¡¢Úýÿþ椥Öûÿÿÿÿþॡ¡¡‘¡}~¡~¡‘‘‘‘¡‘~~~~~‘¡¡‘ÚÿÿÚ}}‘¡‘~}}‘‘~~~}}}~‘}r|}s}~~}}}}}}|}~~}}}~}}~~}|}}v}}}~~}}}|}|||||v}}|||}pv|}}|p|pp}}}}pp}v}}|vvýÓ}pp™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Cóÿÿÿÿÿ÷Z!!!!!!!!!!!!   !!  !!!!  !!!!   =p¥íýýýýýýýýýýýÿþýüýüýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                               ××üüúúüúüúüúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ¢~~~~~~‘‘‘‘‘~‘¡‘~~‘‘¡‘‘~¡¡‘¡¡‘¡¡¡~¡¡¡¡¡‘¡¡¡¡¡¢¡‘¡¡¡¡‘¡¡¡¡¦¢¢¢¡¡££¡¡¢£¡¡¡‘¢¡¡£¡¡£¦¢¢¡¡£¢¡¢£¦¢¢£¦¦££¦¦¢¢¦£¡£££££¦¦££Ýþÿÿÿÿÿꫦ¦®¦®££¦©«®¦£®®®®©£®®®®®¦®©¦®©©©®®©£©®®®©©®®¯£®±®®®®®®®®®££®®®®®®®®¦£®®«®®¦®©¦¦®®®¦¦©®¦©¦¦££®«££££®¦££££££¢¡¦«¢¡¦¦£¦¢¡££££££¢£¢¡£¡¢¦£¢£¡¡££¢¢¡¡¡¢£¢¡¡¡¡¡¢¢¥Úÿÿÿû­¡¡¡‘¡¡¡¡¡¡¡¡‘¡‘‘§ëÿÿöÔ¡¡¤àýÿÿÿÿûÔ‘‘¡¡¡‘‘~~‘¡‘~~~~~‘‘¡¡~}‘‘~~àÿÿÙ~}~~~~~~~}~}}}}}}‘}}~}~}}}}}}~}}}}}}}}|p}}rv}}}rw}|}rv}p}}}}}}}rvv|}}v||p}}ppvp}}pppp|}pvpvvwýÊvpvžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷_!!!!!! !! !!!!!!!!!!!    qªéýýýýýýýýýýýþþüýüýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                   ÓÓúúüúüúüúüúüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿþÖŸ~}~‘~~}~‘¡¡¡‘~~¡‘~~~~‘¡¡¡~‘‘‘‘¡‘¡¡‘¡¡¢¡¡¡¡‘¡‘‘¡‘¡¡¡¡£££¡¢««¡¡¢¡¡¡¡¡‘¡¦¢¡¢¦£¢¡¡££¡¢¡¢£¢¦«¦££¦«£¢£¡¡¡£¦¢¡¢£££åþÿÿÿÿÿ릣®®©££®®®¦£££®®±®®®®¦£®®®¯®®¯®®®®¦®©£©®®££©¯¯±¯¯®®®©©¯¯®©£££££¦©®®®£££££®®®¦¦¦¦©®®®££®®®¦£££££¦£¦®«£¡¢££££¡¡££¡¢¦£¡¡£¦£¢£¦£££¡¡¡¢¡¢££¡¡¡£¡¡¡¡¡¡¡£¢¡‘¡¢£¡¡¦°ýÿÿþê¡‘¡¢£¡¡¡¡¡¡‘‘‘¡Óûÿþ륡¡­íÿÿÿÿÿ륡‘¡‘‘¡}~‘¡~~~~~~~‘¡‘~¡‘}~èÿÿÓ~~}}}~~}}}}}}~}}~€¡¡~}~~~}s}}s}}}r}}}vrppv}}vv}}pp}vp}}}|s}}v}}|vrv}}}}vp}}}ppp|vppp}}vppp}þžvppÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý螘èÿÿúžßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_!!!!!! !!!!!!!!  !  ! !! !!!   $p’ëýýýýýýýýýýýÿþýüýýýýýýýýýýýýýàÔ                                                                                                                                                                                                                                                                         ÓÓüüúüúüúüúüúüüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘¡~~~~‘~~¡¡‘~~‘‘¡¡¡¡‘‘‘¡¡¡‘¡‘‘¡¡¡¡¡‘¡£‘¡¡¡¡¢¡¡¡¡¡‘¡£¡‘¡¡¡‘£¡‘¡£¢¢¢¡¡£¢¦¦¡¡££¢¢¢¡£¢£¦¦¢¢¢£¦£¡£«£¡¢££££®«££££¦¦åþÿÿÿÿÿꫦ¦®¦¦¦££©¦¦©££®¦¦¦®®¦®®¦£©¦¦®®£©®¦®¯¦£®£®®®®©¯®©®®®©®®®©®®¯®®®®©¦®®®®®¦®®®®¦®¦¦¦¦¦¦®£¦®¦¦¦£¦££¦¦¦¦££¦¦¦£££££®®££¢£¢¡£®¢¡¢¢£¦£¢££¢¡¢££¢£¦¦¡¢£¢¢£¢¢¡£¡¡£¡‘¥ëÿÿÿõ¢¡¡¢¡¡¡‘¡¡¢¡¡¡¡¡¡¡¡¡¡¡¥êþÿûÔ¡‘‘ÓûÿÿÿÿýÚ‘‘‘‘‘‘‘‘‘‘~~~‘‘‘‘}}‘~~ûÿÿÓ‘‘~~~~~~~~~~~~}}}}~~}|~~}~}~}}}}}}}}}r}}}}}}r}}}p}~}||}|pp}}pp}}pvpp|p|||vp}pp||w}vppppppvpÿœvppÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú×ylllúÿÿ̘õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!Bóÿÿÿÿÿ÷] !!! !!!!!  !! !! !!! ! !! ! !=sªéüýýýýýýýýýýþþüýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                           Ó×úúüúüúüúüúüúüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ‘¡‘}}~}}~~}~~‘¡~~~¡‘~~~¡¡‘‘¡¡¡¡¡¢¡¡¡¢£¢¡‘¡¢¡¡¡¢¡¡¡‘¡¡¢¡¡‘¡‘¡£¢¡¢££¡£«££¦¢¡£££££¢£¦¦£¢¢¢¡¢®¦£¡¡££££¦«£¦¦£®®êþÿÿÿÿÿí°¦££¦¦£££®®©¦££££££¦®®±®££££®®®¦®¦£¦®®£©©®®®®©®©£®¯®®¯¯®®¯®¯®®©®¯®®®®¦©®®±®®®®®®£££®®££®¦©®«®®¦®«®¦£«®®®®££¦««¦®£¢£¡¡¡¢¡¢¡¢£¦¢£®¦¢¡¢£¦¦£¦£¡¢£¦¡¢¢¡¡¡¡¡‘¡¡¡¬ÿÿÿþÔ¡¡¡¡‘¡¡¡¡¡¡‘‘¡¡¢¡¡¢¡‘¡¡¬õÿÿë¥~¥êþÿÿÿÿõ§‘‘¡‘‘~~~~‘~~~‘}}}~~}§þÿÿÓ¡}}}~}‘‘~}~~}r~}}}}}}}}}}‘¡~~}}}~~}}wr}}p}~}}}‘~}}~~|pp}}p|r}v|v|}|pppp}|pp}}}~}}}vpp||}vpvþ˜}vlÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷žullllClßÿÿè{ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!===!@òÿÿÿÿÿ÷_!!!!!!!!! !!!!!!!!!! !!!!!!!  !   !!!   ! !   9qªíýýýýýýýýýýýÿÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                   ÓÓüüúüúüúüüúüüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~‘‘‘‘¡¡‘~}‘‘¡¡¡‘‘~‘¡¡‘¡~¡¡‘‘‘‘¡¡¡¡‘¡¡‘¡‘‘¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¦¡¡¢¡¡¡¡£¢¡¡££¡¡£¢¡¡¡¡££££££¢¡££¢¡£¦¦¦£¢£¡¢¦¦££¦¦¦££££¦åþÿÿÿÿÿꫦ¦£¦®¦£¦®«¦¦£©®®®®¦¦®®¦®®®¦£©®©®¦¦®®®®©£®¯®®®®®£©¯®®®©®®®©©®®©£®®©¦©¦®¦®®¦¦©©¦®¦£¦®¦£¦®®®¦££££¦£¦¦¢£¦¦££¢£¦¦¢¢££¦¦£££££¦£¡£¦£¡¢££¢¢¡¡£¢¦£¢¢£¦¡¡¢¢¡¡£¢¢¡¢¥öÿÿÿê¡¡¡¦¢¡¡¢¢‘¡¡¡¡¡¢¡‘¡¡¡‘‘‘¤ÚýÿûÚ¡¡‘¥ëÿÿÿÿþê¤~~‘~~~‘‘¢‘~~~‘‘~~‘‘Úÿÿÿ¬€‘~~~}~¡~~~~~}~}~}~r}~~}}}}~~||}}}~}}}}}}}}}}}p}}}p}}}p}}}pr}}vv}}}}pp}}}|prvvppp}pvpppppvpvv˜þ˜vpvÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõžvllllllll˜õÿÿƒõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷]!!!!!!! !! !!  ! ! !    !qªíýýýýýýýýýýýþýüýýýýýýýýýýýýýýà×                                                                                                                                                                                                                                                                          Ó×úúüúüúüúüúüúüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~}~‘¡‘~~~~~¡¡¡¡¡¡~¡¡¡‘~~‘‘~‘‘~¡¡¡¡~¡‘‘‘~¡¡¢¢¡‘¡¡£££££‘¡¦¢¢¦¢¡¡¡¡£¡¡¡¡¢¢¦¢¡¡¡¡£¦¢¡¡£¦£¢££¡¡£®¦¡¡¡¡£¦¦¦£££££¡¡¢¢Ýþÿÿÿÿÿꥣ£¦®®®££«¦®®®®®®±®££££©®®®£££®©£®©©¦©¦©¯¯©©©¦®®®®®®®®£©®©£©®®©£¦¦¦®®±¯®®¦£¡¢££®®®®±®££¦¦®¦££¢¦¦££¦¦¦¦££¦£££¢¢££¢¢¦®¦£¡££¡¢££££¡¢¦£¦¢¡¢¢¡£¦£¦¡¡¢¦¡¡¢£¦£¦«Ýÿÿÿû¤¡¦«¦¢¡¡¡¢¢¡¡¢£¢~‘¡¡‘‘~¡¡¡¨ëÿÿõ§‘‘ÓûÿÿÿÿûÓ‘~~}~¡¡~‘‘}~¡~‘Óýÿÿÿž~‘‘~¡‘‘}}}}}}‘~}}}~~}}}}||p}||}r}|}~}~}}}}pp}r}pv|pppppv}p|p}}}vpv||vvvpvppppppv|pppppvpp˜þ™|ppßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷vuvulooooollÌÿÿà{×þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Cóÿÿÿÿÿ÷[!! !!!!! !!!!! !!!!!!!!  !!!    }ªëýýýýýýýýýýýÿþýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                     ÓÓüüúüúüüúüüüüúúúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~~~‘‘~€~‘~‘‘¡‘‘‘‘‘‘‘‘¡¡¡¡¢¢‘¡¡¡¢‘¡‘‘¡¡¡¦¡‘¡‘¡¡¡¡¡~¡¦¢¡¡¡¡££¢¢¡¡¡¡¢¢¢¢¡¡¡¡¢£¢¡£££¡£¡¢£££¢££££££¢¢¦¦££¦¦££££êþÿÿÿÿÿꫦ¦¦¦¦¦¦¦£©©¦©¦££®®££®¦®¦®¯©®©®¦¦®®®®®®®¯©£®®®©©¯®©®¯®©©®®®©®¯©¦®®®®®®©¦®®¦¦©£¦¦¦¦®®«¦¦£¦¦«®¦££¦¦££££¦£«¦£¦£¢¦¦£¦£££¦¢¡£££®£¡¢£££¢¡¢¡¡®¦‘¡¢¡££¡¡¡¢¡¡¢£¡¡§þÿÿþÚ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘¡¡¡¡¡‘‘‘‘ÔûÿýÚ¡‘‘æþÿÿÿÿ륑‘‘‘¡‘~~~~~~~¡àÿÿÿÿÿ™~‘~}~}~‘~~~‘~|}‘~}~~}}}}}~~}}}}}~}}}}}}}}}}}}}p}~}}}}}p}}}}|}}p}}}p}r}p}p|pp|}pp|pv}p}vppppvp™þ™wppæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷›ooolllllllllll{ñÿü›{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Bóÿÿÿÿÿ÷_!!!! !! !!!!  !!!!! !  !  !! =q¥éýüýýýýýýýýýþþýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                              Ó×úúúüúüúüúüúüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ¡‘~‘‘‘‘¡‘~‘¡¡~}}~‘‘¡¢¡‘‘¡¡¡¡~‘¡¡¡~‘¡££¡¡¡¡¡¢‘‘£¦¡¡¡¡‘‘¡¦«£¢¡¡¢¢¦¢¡¡£¦¡¡¡¡¢££¡¡¡££££¢¡¡¢¢¡¢££¡¡££££¦£££¦¦£££¡¢££åþÿÿÿÿÿë°®®££¦®®®¦¦£¢££££®®£¦®®¦£®±®©®©££©®¯®®®¯¯©®±±¯££©©£©¯®£©®©£©®®©®®®®¦£££££¦¦¦®®®£¢£®©£¦®®¦®®¦£¢¡¢¢¢¡¢££¦£££££££££££¡¡£££¦®®£¡¡¡¢¦¦£¡¡¢¢£«¢‘¢£¢¢£¡¡¢¦¢¡¡¡¥ëÿÿÿõ¡¡¡¡‘‘‘‘‘~¡¡¡¡¦£¡¡‘‘¡¡£¡‘¡¡‘‘êþÿõ­¡‘§õÿÿÿÿýÝ¥¡¡‘~~~~~¡‘~~‘€æÿÿÿÿÿÿ‘}~‘}|}}~~~~‘}}‘¡‘}}}}}~}}s}‘‘}~}s}}~~}p}}}}p}|p}}}rp}~~}rppv|}}}vvv|vpp}}}|vpppppvrp|}|vv}˜ÿplpèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷olllollC?llllllllÊýÿÌuÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!@óÿÿÿÿÿ÷Z!!!!!!!!!!!!!!!!!!!!  !  !!! ! pšíýýýýýýýýýýýÿÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                    ÓÓüüüüúüüüúüüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘‘~~‘~~‘~~‘¡‘‘¡‘‘¡‘~‘¡¡‘‘‘¡¡¡¡¡¡‘¡¢¡¡‘¡‘¡¡¡¡¡¦¡‘¡¡¡¡¡£¢¡¢¡¡¡¡¢¡¡¡£¢¢¡£«¢¡¢¢£¦¢¡¢¡£¦£¢¢¢£££¦¦££££££¦¦¢¢£££©åþÿÿÿÿÿê®®«¢£¦¦®©¦¦©¦£©®«¦¦£©¯®¦©®®¦£®®®®®¦®®®©®±©£®¯®©®®®®®¯®©®®®©¦®®®®®®®®¦¦©¦®®®©®®®¦®¦££¦®©¦¦©¦££££¦¦£¦¦£¦¦£££££££££££¦£¦£££¢¢¢£¦£¡¢¦¢¡£¦£¡¢¡¡¦¦¡¡¡¡¡¡£¦¡‘¢Ûÿÿÿý­¡¡¡¡¡¡¡¡¢¢¡¡‘¡¢¢‘‘¡¡‘¡‘¡¡‘¡¡‘¡¡‘~¡ÔõÿþÚ¥¡‘‘Úýÿÿÿÿõ­‘~‘~~~¡‘~~ëÿÿÿÿÿÿÿ‘}~}~~~~~~~}}¡~}}€~}}}~~~}|}}~~}}}~}|}}}r}~}s}}}r}}}}}v|}}}}v}}rvps}p}v|vp||v|vv|}rpvvvvpvp|pžþvppõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷žvlllolllllllolllllluèÿõ”uñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!Bóÿÿÿÿÿ÷_!!!!!!! !!!!!!!!!!   !  !9qªíýýýýýýýýýýýþýüüýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                            ÓÓüúüúüúúüüúüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ}~¡‘~~‘~~‘¡‘‘¡¢¢£¡¡¡‘‘‘‘¡‘~¡¡¡¡‘¡‘¡¡~~~‘¡¡‘¡¡‘‘¡¡¡‘¡¡¡‘‘‘¡¡¡¡‘¡¡¡¡¡¡¡£¦£¡¢¦¦¢¡¡¡£¢¡£¦£¢¡£¦£¦©£¢£®££££££®£££êþÿÿÿÿÿí°¦££¦®®¦¦££¦®££¦££££®±¦¦®®££®®®©©£©®®®£©®®®©®®®®®±®©®¯®¯±±¯¯±¯®®®££¦¦¦®®©£¦¦¦¦£¦®¦£¢¦®¦£¢¢££®©£®±®®®©¦£¢££¢¡¦®®¦¦®¦££££¡¢¢£«««¢¡¢£££«®¡¡¡¢¡¡¡£££¦¡¢«£‘¥ûÿÿÿê¡¡¡¡¢¡‘¡¢¦£¢£¢¡¢¦£¢¡‘‘¡¡‘‘‘‘‘‘¡‘~~‘Úýÿõ§‘‘‘šëÿÿÿÿÿê¥~¡‘~‘‘~~‘ýÿÿÿÿÿÿÿ¡}}|}~‘‘‘}}~~}}}||~}}|s}~}~~}}}||}}~~~}pv}~}}}}}}}}||}}}ppv}}}}}}v|}p}}}|pppv|}p}}}|pppppp|}vžÿvpv÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷žollllovplClCllllllllllžúÿÌlÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!==!!Cóÿÿÿÿÿ÷Z !!! !! ! !!!!!!!!!!!!!! !  !!!   !! !!!!! ! =}ªíýýýýýýýýýýýÿþýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                            Ó×üüüüúüüüúüüúüúüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~‘~~‘‘‘¡‘‘~~‘‘‘‘‘‘¡¡‘‘‘¡‘¡¡‘‘¡¡~¡¡¡¡¡¡¡¡¡¡¡¡£¡¡¡¡¡¡¢¡¡¡¡¡¡¢¡¡¡¡¢£¡¡¢¡££¢¢££¢¡¢£¢¡£¢£«£¡¢££¦¦££¢£££££££¦¦££åþÿÿÿÿÿꮦ££«®«¦££¦¦¦¦¦®®¦©£©®¦®®¦©®®®®©¦®£®®®®®®®¯©®®¯®©®®©¯®®®¯®®¯©®©¦©¦®®©¦®®¦£©¦®®©¦¦£££®®®££®¦¦¦££®¦¦¦££¦¦£¢«¦££¦«£££®£¡£®£¢¢£¢¢£¢¢£¢¢¢££¡¡££¡¡££¡¡¡‘£¦¡¡Ýÿÿÿû¡¡¢¡‘¡¢¡¡¡¢¡¡¡¡‘‘¡¡¡¡¡¡¡‘¡‘¡¡‘‘¡‘¡‘‘‘‘¡¥ëÿþ楡~‘ÓûÿÿÿÿúÔ‘‘~~‘~Úÿÿÿÿÿÿÿþ‘‘‘~|~‘~‘~|}¡~}~}}~~~~|}}~~~}|}}}}}}}~}|}s}}}}}}}}}}s|}||p}}s}}}}pp}|pprv}}p|}}ppp|v}vpp}rppvvÓýwpppýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ooolllloolllllllllClollluèÿñ{uèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!$Yóÿÿÿÿÿ÷_!!!!!!!!!!!!! !! !!  ! !! !  ! !q¥íýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                       ÓÓüúüúüüúüüúüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘¡‘~~~‘¡¡¢¡~}~~¡¡‘~~~‘¡¡¡‘¡¡¡¡¡£¡~~~¡¡¡¡¢¡¡¡¢¢¡¢¡¡‘¢«£¡¡¢£¦¢¡££¦¢¡£¢¦¦££¡¡¡£¢¢£¡¢£¦¦£¦¢¡¢¢¡¡££££¦£¢¡¡¢£¦¦££¦®©åþÿÿÿÿÿ뫦¦£££££¦®®®¦©®®®®¦¦£££¦¦¦®©®®®®®®©®¯®©®®£®®©©¯¯¦©¦®¯®©£®¯®®££££©®®®©¦®®£¦®®®®®®££¦££¦¦£¦®®®£¢¦®¦£¢¡¢££¦®®®¦¡¢£¡¡¡££¦¦££¦¦¡¡¡¡¡¢££¡££¡¡¡£¦¢£¦¢¡‘¡¡¡¡¡§þÿÿþ¬¡¦£¡¡¡¡¢¢¢¢¡‘¡~¡£¡¡¡¡¡¡‘¡¡~‘¡¡¡¢¢¡Ôûÿ÷¬‘¡¡¥ëþÿÿÿÿ뚀‘‘¡¡‘õÿÿÿÿÿÿÿý‘~}}‘‘}}}}}~}~~~}}}}~~~~||}}s}}}}}|}~|}~~~~}}pr}r}||}}}~}}}|pp}}ppvrppppp|}pp|ppp|}}p}}}plppp×üplpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷vpvvvolllllllooolllllClllCC˜÷ÿÇužüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!Bóÿÿÿÿÿ÷_!!!!! !!! !! ! ! ! !! !!!   !   pšíýýýýýýýýýüýþÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                                        Ó×üüúüúüüúüüúüúüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ‘~‘‘~}‘‘¡‘‘‘‘‘‘‘¡¡¡¡‘¢¡‘¡¡¡¡¡¢¡¡¡¡¡‘¡¢¡¢¡‘¡‘¡¢¢‘¡¢¡¡¢¡¡¢¡££¢£¡¢¡¢¡¡¢¢££¢£¢£¢¢££££¢¢£££££¢£¦¦££¢¢¦¦¦¦££££åþÿÿÿÿÿꫦ¦¦££££©®®¦¦¦©®®£¦®©®®£©®®££®®®®®®®±©£®®®¯®©®¯®©®¦©¯®©®®¯©®©®¦®®®®£¦¦®©¦©¦¦¦®®±®®¦£££¦¦¦¦¦¦£££®«¦£££££®®£££££££££££¦£¡£¦£¢£¦£¢¢££¡¢£¢¡¢££¡£¡¡¢¡££¡¡¥íÿÿÿí¡¡¡¡¡¢¡¡¦¢¡¡‘¡¡¡¡‘‘¡¡¡¡¡¡‘‘¡¡¡¡‘‘‘‘¡¡‘‘‘‘¡¥êýÿ॑‘~¬ûÿÿÿÿýÚ¤~~‘‘ýÿÿÿÿÿÿÿú~~~}~~~}~~}~}~~~~}}}}~‘}}}}}}}}}s}s}‘}}}|}}}}}}}v}}|}}}|p|}}v|}}p}|vvp}|}}p}ppv|vvppv||pvpp|v×üvoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÇvllopoolllloplCoplllClolllllll×ÿñ{uèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷]!!!!!!!!! !! !!!!!    !!  !  !qªíýýýýýýýýýýýÿýüýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                ÓÓüúüúüúüúüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~}}}~}}‘¢¡‘~~~‘‘¡¡‘¡¡¡~~~~‘¡¡~¡‘~~¡‘~‘¡¡£¢¡¡¡¡¡¡£¢‘‘¡¡¡¡¡¢¢¡££¡¡‘¡¡¡¦¦¦¢¡¡‘¡¡¡¡Ÿ¡¡¡¡£¦¢¡‘¡¡£¦£¦¦££¦££¦£¢¡£¦««®®¦£££åþÿÿÿÿÿꦣ©®®®®®¦©££®¦¢¦®®®®£®®®¦®®¦£££££®®¯®££©®®®®©®®®®®©©®®¯®©©¦©®®¯®®®£®®®®®®®®££¦¦¦££££®¦¦¦®®££¦££¦®¦®®£¢¢££¢¡¡£¦¦£¦®¦£¢¡¡¡¡¡£¦¦¡¢¦£¡¡¡¡¢¢£¢¢¡¡¡¡¡¢¦£¡Ôÿÿÿý«¡¡¡¡¡££‘‘¡¡¡£¢¢¦¦¦¦¡‘~~‘‘‘‘¡¡¡¡¡‘¡¡¡‘‘~}~}~¡‘§õÿúÓ‘~‘¡àýÿÿÿÿõ§}~¥ýÿÿÿÿÿÿÿõ‘¡‘~}~~}‘¡¡~~‘~}}‘~‘~‘}}~~}}~}~~‘€}}}}vpvrvr}}}r}}}}}r}|v}}}pp}}v}}}}|v|}}}|pp|||ppp|vp}}}v}vÙúvvžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÇollllllloooploolClloopplopolCCCl{òÿÇC˜÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!@óÿÿÿÿÿ÷_!!!!! !! !!! !!! !!! ! !  ! ! ! !!qªíýýýýýýýýýýýþÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                                          ÓÓüüüüüüüüúüúüúüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ~~~~‘¡¡~~‘¡‘‘¡‘~‘‘‘‘‘‘¡¡‘‘‘¡‘¡¡¡¡¡¡¡‘¡¡¡£¡¡¡¡£¡¡¢¡¢¡¡¡¡¢¡¡¡¡¢¢¡¡¢£¡¢¡¡¡¡¢¢£«¢¡¢¡£££¡¢¦£¡£££££¢¢¦¦£¢¦®¦£££åþÿÿÿÿÿꦦ¦«¦¦©£¦®¦£¦¦¦®®©®©¦©©®©©®©©¦®££®¯©©®¯©®®©®®®©®¯®®®©®¯®£©®¯©®®©®®®©®®©®¦£®©®®¦£££©¦¦¦££¦¦¦®¦¦¦££££¦¦¦¦¦¦¢¢££¦¦£££££¢¢¢¢££¦£¢¢¢£¡£¢£££££¡¢¡¡¢¡¡¡¢¢¡¥ûÿÿÿÝ£¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¢¡¡¡‘‘¡¡¡¡‘¡¡¡¡‘¡¢¡‘‘‘~~¡‘‘Ôûÿ륑€­õÿÿÿÿÿà¥Úÿÿÿÿÿÿÿÿõ‘‘}~}~~}¡~~~}~}}~~}~}}~}}}}}}}}}~‘}}}|}}}~}}}}}p}}}}}pv}}}}rv|}}}rv|}|}v|ppp|vp|vp}p}vpv}vpv}vß÷‘woÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌvoollppllllpplllollllllovllllllllllÇýè{uáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷Z!!!!!!!! !!! ! !! ! ! ! !   !q¥íýýýýýýýýýýýÿýüýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                          ×ÓüúúüúüúüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~‘~~~~~~~€‘~~‘‘~¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡¡¢¡¡¡¡‘‘~‘¡~¡¦«¦¡‘‘¡¡£¦£¡¡¡¡¡¢¢££¦£¡¢¡¡£¢¢£££¢£££££¢¢££¦£¡¢¢£¢¢¦®£¡¢£¢¡£££åþÿÿÿÿÿî°¦¦¦¦£¢¢£¦©£££®®£¢£¦®®®®®®®®¯®®©©®¯®®¯±¯±®©®¯¯¯¯®®©¯¯®©®£©¯®®£¦®®®®®®®®®®¦«®®®¦¦®®®®©©®®¦¦®®®®®£¢¢££«®®«¦££®¦®®¦¢¢££¦®«££¦¦££«¦¦¢¢££££££¡¢¢¦£¢¡¢££¢êÿÿÿõ¡¡¡¢¢¢¡¡‘¡¡¢¡‘‘¡¡‘‘¡‘¡¡¡‘¡¢£¡~~~~‘¡¡¡¡~‘¡‘‘€~‘æýýØ¡¡¢¡Úýÿÿÿÿýþÿÿÿÿÿÿÿÿí‘}~‘}}~‘‘~}~}}}}~}}~}}}}}r}}}}}v|}r}}rpvr}pv}~}|s}}}}|vrppvv}}r}}vvrp}}}}}pvv|v}}}}}v}||vpppvvß÷‘}pßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü×wppovooplllollllllopvolllllllCllovolCuèÿl˜÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!==9Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!! !!!!! !!!  ! !!! !  ! ! !!!!!  ! !!  ! =}ªíýýýýýýýýýüýþÿýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                     ÓÓüüüüúüüüúüúüüüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~‘~~~~~‘‘‘‘‘‘¡‘‘¡‘‘‘¢¡‘‘‘¡¡‘‘¢¢‘‘¡¡¡¡¡¡¡¡¡‘¡¢¡¡‘¡¢¡‘¡¦¢~¡¡¢¡¡¢¡¢¢£¢¡¢¢£¡¡£££¡£££££¡£££¢¢¢££££££££££££££¢£¦êþÿÿÿÿÿ£££¦£££®©£££¦®«££¦¦®®®®®®©®©£®©®±©®®©®±®£®¯®¯®©®®®¯®©©£©®¯®®®®©¦®©®®®®®®¦¦©¦©®££££¦®®®®££®¦¦¦££¦£££®«¦£££¦¦¦¦£¡£®£¢¦¦£££¢¢££££¡££¢£££¢££¢£¡¡¡¢¢£¨þÿÿþ­¡¡¡¢¡¡¡¡¡‘¡£¢¡¡¡¡¡¡¡¡‘‘¡¡¡¡¡‘¡¡‘‘‘‘‘¡¡‘~‘‘‘‘~~‘¬õþí§¡‘~¥õÿÿÿÿÿÿÿÿÿÿÿÿÿè}‘~~~~~‘~}~}~}~}~~~}}}~}|}~}}sr}}}}}}}}}|}r}}}}}}}rv}}v|}}}}pw}}}}v}}}pvpp|}|}v}|v|pv}vppvvvvè÷vvòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýßwoovopplloololloolllloplllllllllllllllCCÇüèyCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!9!!!!!!!!! !! !!!  ! ! ! ! !!qªíýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                            ×ÓüúüúüúüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~‘‘~‘¡¡‘~‘‘~~‘‘~~~~¡‘¡¡‘¡‘¡¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¡¡££¡‘¡‘¡£¡¡‘££¡¡£¢¡¡¡¡¡¡££¦£¢¦¦¦¦£¡‘¡¢¢£¡¡¢¦«££££¦®®®¦£££¢££££¦®£Ýþÿÿÿÿÿ릣®¦¦®®£®®¦¦®®®®®££££©£££®®¦££®¯®¯¯££££®®©£©®©©¦£®¯®®©£®®£®®©®±®©££¦©¦¦®¦¦£££®®®®®¦££££®®£££¦£££¦®¦¡¡££¡¡££¦£¦«£¡¦¦£¡¢£££¡¡££¡¡¡¡£££¡¡¡¢¦£££¡£¦£¡¥õÿÿÿê«£¢¢¡‘‘¢¡‘¡¦¦¡¡¢¡‘‘¡¡‘¡£¢¡~‘¡¢¡¡¡¡¡‘¡‘¡¡¡¡~€¡‘~‘¡¡¡ÚýýÚ¤~}‘Úýÿÿÿÿÿÿÿÿÿÿÿ怀‘‘‘}}~~~~~‘}}}}~~}~‘}}}}~~}}}}}}}}}}r}}}}~}v||p}}}}}|}||pv}}}pppppv}}}vpppopppvppvppppè÷pvýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýß{polooollllpvvooololoollllllllCCllClolCCCluèýl{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷_!! !!! ! !!!!!!!!!!!!     ! !=q¥íýýýýýýýýýýýþÿýýýýýýýýýýýýþýýæÓ                                                                                                                                                                                                                                                    ÓÓüüúüüüüüúüüúüüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~~‘‘‘¡‘‘~‘‘¡‘~~~‘¡¡‘‘‘‘¡¡¡¡‘¡¡¡~¢¢¡¡¡¡¡¡¡¡¡‘¡¡¡¢¡‘¡¡¡¡¡¢¡¡¡¡¢¡¡¢¡¡¢¢¡£¢¢££¦££¢¡¢¢¢£¢¢¢£¦¦¦¦£¦¦¦¦££¦££££¢¦«£¢åþÿÿÿÿÿ릣¦£®®«££®©¦®¦¦®¦®©£££©££®®££®®®®¯®©£®®©¦®®®®®©©£®¯©©®©©®®©®©©®®®®®®¦£®£®¦¦¦®®®¦®©¦££¦¦««¦£££££®¦££¢£«¦¢££¦££¦®£¢£££¢£¦£¢¢¡££¢¢¢¢£££¡¡¡¡¦££¢¢¡££¡Ôÿÿÿû¦¦£¡¡¡¡¡¡¡¡£¢‘¡¡¢‘¡¡¡‘‘¡¡¡¡¡‘¡¡¡¡‘¡¢‘¡¡‘‘¡‘‘¡‘‘~~‘‘‘¥ëýõ¬‘€~§øÿÿÿÿÿÿÿÿÿÿà‘~}~‘~}}}~‘}~~~~}}~~}~}~~}}}|}~}~}}s|}}}}}v}}~}}}}}}}}}}pp}}p}p}}}v|pp|v}}}pvvpppwvvv}vppppñýv˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýàoovpoooooploopollloooooolllolllllllClolClllCüául×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@÷ÿÿÿÿÿ÷_!!!!!!!!!!!! !!!!  !  !! =}šíýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                    ÓÓüúüüüúüúüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ‘‘~€‘~‘‘~‘~‘¡¡¡‘‘¡‘~‘¡¡¡¡‘‘‘‘¡¡‘¡¡~~‘¡¡¢¡¡¡¡‘‘¢¡¡‘¢¦£££¡¡¢£¡¡¡££¢¡¡¢¡¦¦¡¡¡¡¡¢¡¢¢¦¦££¦£¡¡¡¡£¢¢¢££££¦¦¦££¦£¢£êþÿÿÿÿÿ릢£«®®¦££¦®¦££¦©¦®©£©®®®®®®¦®®©®®®®©®¯®¦®¯¯¯¯±¯±®£©®®®©©®¯®®©£©££©£££¦®¦©®®®¦®££¦©¦£¦®¦££££¦¦££££££¦£®¦££££¢¡¢¢¢£¦¦¦£¦¦££¦£¡¢£££¢¢¡£££¡¢¡¡¡¢¢¡¢£¥ûÿÿþÖ¢¢‘¡¢£¢¢¢¢£¢¡‘¡¢¡‘¡¡¡¡¡¡‘¡¡¡¢¢¡‘‘‘~‘¡~‘~~‘¡¡¡¡¡¡¡~}‘‘€~Ô÷ý륑‘‘æþÿÿÿÿÿÿÿÿà€}}~}}~~}r}‘‘‘~~}}~}}}}}~~}}~}~~}}}~}}}p}~}}p}p}pvr}}}}}}pv}}p}}ppvw}vv}}}}pp}}vpv}}ppvvpv}võýp×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜ooopvpolopllllllllooolloovolllllloopollllloooluèþC{õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!$!!! ! !! !  ! ! !! !! =q¥íýýýýýýýýýýýþÿýýýýýýýýýýþýþýýæÓ                                                                                                                                                                                                                                                          Ó×üüüüúüüüüüüúüüúüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ¢~~~~‘¡~~‘‘~~‘‘¡‘‘‘‘~‘‘‘‘‘‘¡¡¡¡‘‘¡¡¡¡¡‘¡¡‘¡¡¡¡¡¡¡¡¡£¡¡¡¡¡££¡¡¢¡¡¡£¢¡¢££¡¡¢£¡¢£¡¡£¡¡££¡¡¢£££££££¢¡££££¦££££££¦¦££££åþÿÿÿÿÿꦦ¦®«¦¦£££©®¦¦¦¦¦£¦££®®®©¦¦©¦®®®¯®®®¯®£®¯®®¯®¯¯¯¯®£©®®®©®®®®®¦©¦££®¦®®®¦¦®®¦¦¦££®¦®®¦¦¦££££©£££¦¦££££¦¦£££¢££¢¢£¦£££¢¦¦£¢¦®¢££¡¡££¡¢£¢¢£¢¡¡¡¢¡£¡êÿÿÿí£££¡‘¢¦¢‘¡£¢¡¡¡¡¡¡¡¡‘¡¡¡‘¡¡¢¢¡¡¡¡‘‘‘‘~‘¡‘~~¡¡‘‘‘¡‘~~‘¡~~~‘àýøØ‘‘}ÚýÿÿÿÿÿÿÿÚ}~‘~~}}~~}}}‘‘~€}}~}}}~~}~~}}s~}~}}}}~}}}s}}}p}}}}}rw}}}}}p}r}vv}}}v}}rvp}}}v}|vpppv}pvppvpppvõÿwvúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜vplovvpploppllllopllloolllloollloolllolllloolllol›úáyl×ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=$!Bóÿÿÿÿÿ÷x!!!!!!!!!!!!!!! !!!!!  !!     ! 9qªíýýýýýýýýýýýÿýýýýýýýýýýýýýýýýæÓ                                                                                                                                                                                                                                                ÓÓüúüüüüüüúüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖŸ¡~~‘‘¡¡‘}¡‘‘‘~‘¡‘‘¡‘‘¡¡¡‘¡¡‘~~¡¡¡¡¡¡‘‘~¡¢£¢¡¡‘‘‘¡¡¡¢¢‘¡¡¡¢£¡¡¡¡¡¡¢¡¡¢¢¦¢¢£¦£¡¡¡£¦£¢¡££¡¡¡¡¢¡£¢££¢¡¡£££¡££££¦®¦££¡£åþÿÿÿÿÿë°®®®££¦®®£££¦¦£®®®®®¯®£¦®®®®®®®®®£©©®©©®®££¦£££©®¯®¯¯®¯®®®®®©©®¯¯¯®®®®©®¦¦£©®®©££¦¦®®®£££©®®¦£¦®®®¦¢£¦®®®£££¦££¦«£££¢¢¦¦¢¢£¢¢£¢££¢¡¡¡£¡¡¡£¢¡¡¡¢­ÿÿÿý¨¡¡¡¡¡¢¢‘¡¢¡¡¡¡¢¡¡‘¡¡¢¢¡¡¡‘‘‘‘‘¡¡¡¡¢¡¡¡¡¡¡¡~‘‘~~~~}‘¡~‘‘‘¡§õýë§€~ÚýÿÿÿÿÿÿÚ~~~}~}}~¡~}‘}}}|rs}}~~}}}~}|}}}}}}}~}|}}}}}}}}}}}}}}vsp}}}}}}}p}}}pv}v}}vpvv}}}}|}}}p}vpvvppúÿÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜lppollpoloovvvooolppoooloollllllolllllCllCllCllClullâý›v{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!=!!!Cóÿÿÿÿÿ÷] !!!!!! !!!!!!!!!!! !!!!!!! !! ! ! ! !  =sªíýýýýýýýýýýýþÿýýýýýýýýýýþýýýþæÓ                                                                                                                                                                                                                                                           Ó×üüüüúüúüüüüúüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŸ~‘‘‘¡‘~~¡‘~‘‘‘‘‘¡‘¡¡¡‘‘~¡¡~~¡¡¡‘‘¡¡¡¢££‘‘¡¡¡¡¢¢¡£¡¡¡¡¡‘¡¢¡¡¢‘¡££¡¡£¢£¦¢¡¢¡££££¡¢££¢¢¡¡¢££££¢¢£££££¦££££©¦££££Ýþÿÿÿÿÿê««¦¦££¦®¦¦££¦¦££®¦¦®®¦£®®®®®®®®£®¦©®®®®®£©©©©©£©®¯¯¯®¯®®£©®¯¦¦¦®®¯®®®®©¦¦£¦¦®®££®£¦®®¦£££¦®££®¦£¦©¦£££¦®¦¦¦£££¢¦®£¡¦££¦££¢¡¡££¢¡¡££¡¡¡¡¡¢¢¢¢¡¡¥õÿÿÿ墡¡¢¡¡¡¡¡¡¡¡¡¡¢¡‘‘¡‘‘¡£¢¡¢¡¡¡¡‘¡¡¡¢¡~¡¢¡‘‘~~~~~¡‘}~‘¡‘¡Ô÷ûÚ™‘àÿÿÿÿÿÿØ‘}}}}~~~¡~~~}~}}~}}}}}}~}}}~~}}}}~}}}}}}}}}}}}}~}p}}}}}v}}}wvv|}}}}}vp}}}}|}}vpvwp}vppvvpv}|pvýÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜lovolooovploppvppollopoooooplllollollllCllCllCCllCllll›úèylÊýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Zóÿÿÿÿÿ÷_!!!!! !!!!!!!! !!! !!! ! !    ! =qªíýýýýýýýýýýýÿýýýýýýýýýýýþýýÿüæÓ                                                                                                                                                                                                                 ÓÓüúüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~}~‘‘~~~~‘‘~~‘‘¡~}~~~¡¡¡‘¡‘‘¡¡‘‘¡‘‘¡‘‘¡¡‘¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¡¡¢¢¢£¡¡£¢¡‘¡¡¡¡¡¡££¦¦£££¡¢£¦¦£¢¢¦££££££££££££££¢£¦®®¦®êþÿÿÿÿÿë«£¦¦££££¦®®®®®®®®®¯®¦££®®£®®©©®¦®¦¦£¦©¯®®¯®©®¯©¯®©©®©©©®®£®®¦®®£©©®££££®®®®££®®©£¦¦¦££¦©®®®®®®¦££¦¦¦®¦¢¢£££¢£¡¡£££¡££££¡¡¢£«¦££¦¢¡£¦£££¢¦£¢¢¡¡Üÿÿÿõ¡¡¡¢££¢¡¡£¢¡¡¡¡¡¢¡¡¡¡¡¡¡¡‘‘¡‘‘¡‘~~~¡¡‘¡‘‘¡‘‘¡€¡¡‘‘‘¡‘¡¡‘~~‘‘‘~~‘¡Úûõ§¥ýÿÿÿÿÿÚ‘~‘‘~~}}‘}}|}‘}~~~~}}}w|}~}}}~}~~}}}~~}}}}}}pv}}|}}}}}}}}s}pppp}vppppppvppp}v}|v}}}}pvvp™ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜popvvvlloppplllllllpooplllllopllpolllollllopollllolCClCClßü›luñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!$Aóÿÿÿÿÿ÷[! !!!!!!!!!!!!!!! !!!  ! !!!!    =p¥íýýýýýýýýýýýþÿýýýýýýýþýýýýýýþæÓ                                                                                                                                                                                                                        Ó×üüüüúüüúüúüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~‘~‘~~~‘‘‘‘‘‘‘¡~}~‘‘¡¡¡¡~¡¡‘¡‘‘‘‘¡¡‘¡¡¡¡£¡¡‘¡¢¡‘‘¡¡¡¢¡¡¡¡¡¢£¡¢¦£‘¢¢¡¡¡£¢¢¦££¦¡¡£££¦£¢¢££¡¡¢££££££££££¢£¦¦¦¦£åþÿÿÿÿÿꫦ¦¦£££££®®®®®®¦¦®®®¦££®®£©®®¦©¦©«¦¦©®®©®®¯®®®©®¯©¦®®®£®©¦®©®®®£®®¦£¦®£©®¯©££®®¦£©££££¦®®¦®¦¦¦¦¦¦£££¦¦£££££££¢¡¢£££££¢¡¡¢¢¦¦£¢¢£¡¡£££¢£¢¡¡¡¡¡¦ýÿÿþ­‘¡¢£££¡¡¡¢¦¡¡¡¡¡¡¡¢¡¡¡¡¡‘¡‘¡¡‘‘‘‘¡~‘‘‘‘¡¡‘‘‘¡‘‘‘¡¡‘‘~~‘¡~~‘‘‘¥ëúôýÿÿÿÿÿà‘~‘}~}‘}}‘}}}~‘~}~}~}~}}}|}}}}~}‘}}}}}}}}}|v}}}}}}}}wp}}}v}v}w}ppppvpvp}}ppwvpp}}v}vpv}žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜ooopvppvpopolopololloollollloolloolllCllolllovllllolllllCll›÷áuCÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷_!!!!!!!!!!!!! !!!! !!!!!!! !   !    !!qªéýýýýýýýýýýýÿýýýýýýýýýýýýþýýýæÓ                                                                                                                                                                                                                         ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ¢‘~~~}~‘¡¡~~~‘‘~‘¡¡‘‘‘‘‘~‘¢¡‘‘‘¡¡¡‘¡¡‘¡¡¡¡‘¡¢¡‘¡¡‘¡¢¡¡¡¡¡¡¢¢¢¢¢¡¢£¡¡££¡¡¢¡¡‘¡¡¢£¢¡¢£¢¦¦£¦££¢£££¦££¢£¡¢£¢¢££££££åþÿÿÿÿÿî«££¦®¦££¦¦£¢£©££«®©£©©®®®££®®®®®®®®®©¦©®®©®¯®©£©®®¦©®®¦£¦®®®®®®®¯®®®®®®£®®££®®®©®®®®®££®¦£¢£¦¦£¦¦£¦¦£¦¦££¦¦¦¦££££¦¦¦¦¦¦«¦¦££¡¢¢£¦£¡¡¡¡££££¦¦¦ëÿÿÿë¡¡£¡¡¡‘¡¢¡¡£¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¡¡‘‘¡¡‘¡‘‘‘¡~~¡¡‘‘‘‘‘¡‘¡}‘‘‘~}~‘¬õþÿÿÿÿÿè‘‘~}}~~}‘‘}}}~}~~}}~}~}}}}}}}}}}}}}}}sp}}}p}}}}}}}~}}}p}p}}p}p}p}vp}|}vvp}}|v}}p}}vpppppvpov×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜vooppvvplllpvvllppopooopolpppoovlllolllllllllllplllllCCCloulllßü›luèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!$@óÿÿÿÿÿ÷[!!!! !!!!!! !!!   ! !!!!!! !! !!  ! !      !!!!qªíýýýýýýýýýýýþÿýýýýýþýþýýþýþþþæÓ                                                                                                                                                                                                           Ó×üüüúüüüúüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ ‘~~}~~¡‘~~‘‘‘~~‘¡‘¡~~‘‘‘¡¡¡¡~¡¡¡¡¡¡‘‘¡¢¡‘¡¡¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡££¢¡¡‘¡£¢¡‘£¢¡¡¡¡¡¡¡£¢¦¢¡¢£¢££££££££¦¦¡£¦£¢¢££££££¦£££åþÿÿÿÿÿî°¦£¦¦£££¦®£££¦¦£©££®©®®©¦©£®®¦£®®¦®®®©£©¦£®¯¯©£©®©¦©£©©¦®®££¯®®®®±®®®£¦®®®¦£®®®®®®®®©«££¦©£¡£®¦¦££«¦££££®£££££¦¦£¦®£££¦®«££¢¢£¡£«£¡¡¡¡¡¢£¢¦«Ûÿÿÿû®¡¡¡¡¡¡¡¡£¡¡¡¡¢¢¡¡¡¡¡¢¡¡¡¢¡¡‘¡¡¡¡¡¡¡~‘¡¡¡~~¡¡¡‘‘¡‘~~~‘¡‘‘‘‘‘‘¡‘~‘¡‘~}}~¡‘Ôúÿÿÿÿõ¡‘~}‘~}}}‘}}}~}}}}}€~}}}}}~~}}}~}}|}|v}|}}}}}s|}~}}}}}}}sv}}p}p}pp}}}vpppv}}p}wv}pwppvpvppppæÿÿÿÿÿÿÿÿÿÿÿÿÿÿýè˜vpopooopvooopoppollovpllpopvoollvllllllllllllllllllluvlCClllllCl˜÷á{oüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!!Cóÿÿÿÿÿ÷_!!!!!!!!! !!!!! !!!!!!!!  !  !!! !!! !qªíýýýýýýýýýýýÿýýýýýýýýýýþýþýýýæÓ                                                                                                                                                                                                                                   ÓÓüúüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~‘¡¡~~¡‘~}~~‘‘~‘¡¡~‘¡¡~¡¡¡‘‘‘¡¡‘‘¡¡¡‘¡¡¡‘~¡£¡¡¡¢¡¡¡¡¡¡¡‘¡¡¢¡¡¦£¡¢¦£££¢¡¢¡¡¢¢£¢¡££¢¢¡££¡¢£¦¦£¡¡£¦££¦££¦£¢££££åþÿÿÿÿÿꦣ£££«®®®®££¦®®¦£¢¦®®®®¦¦®®®®£®¯®¦®®®££®®¯®£¦©£®®¯®®¦£¦®±¯®®®©£¦®©¦®££¦¦¦®®£®®¦£££¦¦©®®¦¦®¦££¦«¦©®¦¦£¦¦££¢£££¦¦£¢£¦£££¢¡£¢¢£££¡¢¦£¡£¦££¢¢¡£¦õÿÿÿÚ¦¡¡££¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡¡¡¡¡‘‘‘‘¡¡¡¡¡‘¡¢¡¡¡‘¡¡‘¡¡‘¡¡¡‘¡‘¡¡~~~‘‘¡¡‘~~~~‘~~~‘¡õÿÿÿÿ§}~‘¡‘}‘~}‘~}}~~~}~~}}~~~}}~}}}}}}}}~}}}}}}}}|}}}pp}}rvvv}}}}}|v}wpp}w}}p}}}pppppvvv|}}v}}vòÿÿÿÿÿÿÿÿÿÿÿÿýè˜vppopppplopppopvpolpllpplopovvoollloopvlvlllolluvllllCllolllllCllllßüžlláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!$!!@óÿÿÿÿÿ÷_!!!!!!!! ! !!!! !!! !! !    !!  !!pªíýýýýýýýýýýýþÿýýýýýþýýýýþýþþþæÓ                                                                                                                                                                                                                    Ó×üüüüüúüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖs‘‘‘‘‘~~~~~~‘~‘‘¡¡~¡¡‘‘‘¡¡‘¡¡¡¡¡¡‘‘¡£‘¡¢¦¡¡¢¢¡¡¡¡¡¡¡¡¢¡¡¡£¢¡¢¦£¦¦¡¡¡‘¡££¢¢¢£¢¢¡¡££¡£££¦£££££££¦££¦£¡££££åþÿÿÿÿÿꦣ¦©©®®®®¦¦¢¦®¦££®®¦¦®®££®®©£©®®®¦®©£¦®©¦®®£©£®©®®®¯®££©±±®®®¦£©®£¦¦®®©£®®©®®¦¦¦££¦®®®¦££¦£££«®¦¦¦®£££££¢££££¦££¢£¦££¦¢¢¢¢£££¢££££¡£«¦¦£¡¡¢Ýÿÿÿõ¡¡¡¡£¢¡£¡¡¡¡¡¡££¡¡¢¢¡‘¡¡¡¡¡¡¡¡¡‘¡¢¡¡‘‘¡¡‘‘¡¡¡‘~¡‘~‘~~‘‘¡‘~~}¡‘~~~~~‘~‘¥úÿÿÿè‘‘‘‘‘‘~}~~}}}~~}~}}}}}~~}~}}~~}r}}~~}}}}}}}}}v}}}vp}}}pv}}~}}wp}pppppp}pp|vvpppv}}p|}vvv|üÿÿÿÿÿÿÿÿÿÿüè˜opvpoppovpoopoopopplpollooopvoovplllolvollllltppollllllCllovollCCllllƒõèuC˜úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!!B÷ÿÿÿÿÿ÷_!!!! !!! !!!!!!!!!!!! ! ! !  !  !!!!q¥íýýýýýýýýýýýÿýýýýýýþýýÿýýþýýýæÓ                                                                                                                                                                                                                     ÓÓüüúüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~‘‘~~€~~‘‘~~‘¡‘‘¡¡¡‘~‘‘~‘¡¡‘~¡¡‘‘¡¡¡‘¡¡‘¡‘¡¢£¡¡¡‘¡¡‘‘¡¡¡£¡¢¡¡¡¡¢¢¢¡¡¡¡‘¡¡¢¦¡£¢¡££¡¢££¢¢£¢£«£¡££££¢£¦¦£¡¡££¦£¡¢¦¦££åþÿÿÿÿÿë«£¦¦¦¦£¦¦¦®£¦®®®®®¦£¦®®¦®¯®£¦®®¦®®®£©¯¯®£©®®®®®®®©£©®®¦®±®©®¦®¦¦£®®®®®¦£©©££££©®¦£¦¦¦®®¦¦¦¦£¦©¦££££££¦¦¦¦®¦£¢£¢££¦¦¦£¡¢£££¢¡¡£¦¢¡¢¡¡¦¢£¦¡¢°ýÿÿþ«£¢¡¡¡££¦¡¡¢¢¡‘¡¡¡‘¡¡¢¡¡¡¡¡¡¡¡¢¡¡¡¡‘¢¡¡¡‘¡¡¡‘¡¡¡¡‘‘‘~‘‘¡‘¡¡¡‘~}~~~¡‘~~‘‘~~}}}Óþÿÿÿà¥}}}}}~~}~~~~}}~}~}}‘‘}}}|}~}}}}}|v}}}}}}pp}}}}}}}p}}}}vpv}s}}}}}}}}v}}}|}}vp}pp}vpppvp{àÿÿÿÿÿÿÿÿÿúߘpppppoovvvppopvpppoovvvvlppvlllolllpolloppllllpolllllllllllllllClCllllllßü›tlßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!!!!!!  !!  !!!! !!!  =qªíýýýýýýýýýýýþÿýýþýýýýýýýþýþþþæÓ                                                                                                                                                                                                                                Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ~~~‘‘~~~~‘‘‘¡‘‘¡‘¡¡¡‘‘¡¡¡¡~‘‘‘¡¡¡¢¡¡¡¡¡‘¡‘££¡¢¡¡£¡¡£¢¡¡¡¡‘¡¢£¢¢£¡££¢££££¢£¢¢¦£££££¡¡£¦«¦£¡££¦£££¦¦£©êþÿÿÿÿÿê««¦£®«¦££©®¦®®®®®¦£¦¦¦¦®®®®®®©£®®®®¦®®®®©¦®®©®®®©£¦®®®©®®©¦®££££®®®¦®®®®®®££¦¦®®®£¦«¦¦®®®££¦¦£¦£££¡©«£££®¦¦¦¦¢¡¡¢¦¦«£¢¡¦¦¢¡¡¢£¢¡¢¢££¢¡£¦££ëÿÿÿÝ¥¡¡£¦¡¡££¢££¢¢¡¡¡‘¡¡¡¡¡‘¡¡‘¢¢¡‘‘¡¡‘¡¡¡‘‘~¡¡‘¡¡¡‘‘‘‘~~‘¡¡¡¡‘~~~~~‘‘~~~}~~~~}~ëÿÿÿÿ॑}~~}}}‘‘€}}}}}~}}‘‘~}}}}}}}}}}}}}}|}s}}sp}}}p}}}}vv}}}p}p}}}|}ppp}wpppw}}pp}ppv}}ppvwÙÿÿÿÿÿÿÿþúÙopvolpvpopvvvvpvvpvplppvwppvlopoollolovolvplllolpplllllllllllCllClCClllClC{÷èyCƒ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Z÷ÿÿÿÿÿ÷x!!!!!!!!!! ! ! !!!!!!!!   !!!!!!!!  ! ! =qªíýýýýýýýýýýþÿýýýýýýýþýýþýþýýþæÓ                                                                                                                                                                                                            ÓÓüüúüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ~‘¡‘‘~~~‘¡‘‘‘‘‘‘‘~€‘¡¡‘‘‘‘‘‘Ÿ¡¡¡¡‘¡¡¡‘¡¡¡‘‘‘¡¡¡¡¡¡¡¡¢¡¡¢¡¡¡¡£¡£¡¢£¡£¡¡¡¡£¢¢£¢¡¢£¡¢¡¡¡¡¡¡¦¦¢££¢£¢£££¡¢££££©¦££®¦££åþÿÿÿÿÿë«®£££©¦££££££¦¦®¦££¦®¦¦®¦©®®®¦¦®®®®®®©¦®©®®®®®®®®®®®®®£¦®®®®©©®©®®££¦££¦®©££££¦®££¦®¦££©££¦®¦££££££««£££¢¢¢¦®£££¢£¢£«¢¡¢¦¦££££££¦££¢¡¢¢¢¡­ÿÿÿû¢¡¡‘¢¦¡¡¢¡¢¡¡¡‘¡£¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘¡¡¡¡‘¡¡¡¡¡‘¡¡‘‘¡¡‘‘‘¡‘¡‘‘‘~~‘€€€~‘‘‘‘‘‘~~‘‘‘‘~‘‘~€šýÿÿÿÿüÚš‘~}}}}~}}~~‘‘}}~~}}}}}}}}~}}}}}}~}}}}}}}~}}}}}}}rp}}}}}vv}qw|q}p}}w}}ppp}p}pv}vov}™àÿÿÿÿÿÿÿúÙvvvvvppvpvvvvplplppvppllppvvoolloopvvlllooolllpllllolllovulllllllllllCltlllClÌü›olßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷_!!!!!!!!!! !!!!!!!!!!!!! ! !! !! !!9q¥íýýýýýýýýýýýÿÿýýýýýþýþþýþýþþþæÓ                                                                                                                                                                                                                    Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡¡‘~~~~~‘¡¡¡~‘‘~¡‘‘~‘¡¡¡‘~~¡¡‘¡¡¡‘~~¡¡‘¡¢¡‘¡‘¡¡¡¡¡¡£¢¡¡¡‘‘‘¡¡¦¢¡¡¡£¦£¢¡¡¡¢¢£¦£¢¡¡¢¡¡¡¡¡¡£¦¦¢¡¡¢¡£¦¦¢¡¡£¦¦¦¦£¢£¦£££åþÿÿÿÿÿ¦®¦¦¦¦£££¢£®¦£££££®®¦«££®®®®®®®®©©®¦©¦£©®®®®®®¯®£®®®££©®®®®®®®¦££££££©¦££££££¦¦£®®¦££©¦©¦©¦££££¢£«¦£££¢¢¢¦«¦££¢¡¡£££¡¢¦¦¦£¢£«¦¦¦¡¡¡¡¢¡¡õÿÿÿÔ¡¡¡¡¡¦¢¡¢¡¡¡¡¡¡¡¡¡£¢¡¡¡¡‘¡¡£¡¡‘‘¡¡¡¡¡‘‘‘‘¡¡¡‘¡¡¡¡‘‘‘¡‘‘~~~~~‘‘~~~~~‘‘~‘‘~~~¡¡}~‘‘}}}êÿÿÿÿÿÿõž}‘}}}}}}~‘‘‘}}}}}}~}}}}}}}s}}~~}}}}}}}~}}}}}v}}v}}~~}}p}|v}}}pvp}}}pv}}wpp}}pv˜ßüÿÿÿÿÿÿýà|vvvvpvvpvvvv|}vpllopppolvpppooolllolppllollllpvvolplllllupllllollCllvlllollCCC{õè{l{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!! !!!!!!! !! !!!! !   !  !!!!q¥íýýýýýýýýýýýÿýýýýþþýþýýþýþþþþæÓ                                                                                                                                                                             ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~~~‘‘~‘¡‘‘¡‘~~¡~¡‘‘‘¡‘¡¡¡~~¡¡¡¡‘¢¢‘¢¢¡‘¡¡¡¡¡¡¡¡¡¡‘¡¡¢¢¢¡¡¡£¢‘¡¡¡¢¢¡¡¢¢¡¡¢¡¡¢£¢£¦£¦¢¡¢£¢¢£££££££££¢£££££¢££££¦¦£åþÿÿÿÿÿ릡£©£££¦®£¦£¦®®£©®®££££®®¦£®®¦©¦©££¦®®®®®®¦®®®¦¦®®¦®®®££¦©®¦®®®®£®®®¦©®®££®®®®®®©©¦£££¦®¦£¦¦¦©¦¦¦££¦¦¦¦£££££££¦£££¢£¦££££££¢¡¢£¢¢¢¡£¢££¢Öÿÿÿí£¡¡¢£¢¡¡‘££¡¡¡¡¡£¡¡¡¡¡¡¢¢¢¡¡‘‘‘¡¡¢¡‘‘¡‘‘‘‘‘¡¡¡‘¡~~‘¡¡¡¡‘‘‘‘‘‘‘~~‘‘¡‘€‘‘}~‘‘}~‘¡~™ýÿÿÿÿÿÿûÓ¤~}~}}~}~}}}}}‘~}}~}}}}}}}|}}}}}}}}}}}}}s}}}vrp}}}}}p}vvvvvvv}}}}}pvs}vvppv™Ùúÿÿÿÿÿÿÿèžvpvpv||ppvpppppppppppvopopvlvoppvlvvpplllppplloolllllllllpllllllltlllClllClllllllCÌütl×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!CóÿÿÿÿÿúZ!!!!!!!!!! ! ! !!!!!!  !! ! ! !  !!   ! $pªíýýýýýýýýýýýþÿýýýýýþýþþýþþþþýèÓ                                                                                                                                                                                                             Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖŽ}~~‘¡‘‘~‘‘~‘¡‘‘¡‘~~¡‘¡¡¡¢¡~~~¡¡¢¡¡¢¡¡¡¡¡¢¡‘¡‘¢¢¡¡¡~‘¡¡¢££¢¡¡¢¡¡¡¡¡¡¢¡¡¦¢¡¢¢¡¡¡¢¢£««¦¢¡¢¢¡£¦££¦¦£¡¢¢¡¢££££¢£¦£¢£¦¦Ýþÿÿÿÿÿê«¢¢¢£¢££«®¦££®®®®®®¦£££®®££¦®¦£¦®££©®®®®®®®¦¦®®££®®®¦©££®®®£¦®®¦£©®¦¦®®®£®®®®®®¦®®®£££¦®££¦®®«¦®®£¢££££££®¦£¢£¦¦¦¦£¢¢¢£¢¦££¡¡¡¢¡¡¡¡£¡££¥ûÿÿþ¦¡¡¡¢£¡¡¡¡¢£¡¡¢¢¡¢¢‘¡¡‘¡¢¦¢¢¢‘‘¡‘‘¡¡‘¡‘‘¡~‘¡¡‘‘¡~‘¡¡¡¡‘‘‘‘‘‘~~‘~‘¡‘‘‘‘‘~}‘€‘‘¡‘~}}ëÿÿÿèõýÿÿÚ‘}~}}~}}}}}|}~}}}}~}~}}}}}}rw}}}}}}}}}}pvv}p}v}}}p}}p}prvp}p}}}}}vv}}v|pv}˜ßúÿÿÿÿÿÿÿýßppvvp}|vvvvpppolooovppvvolvpvpppvlppvpllllvollvlpllllllllltplllllllllllllllClClllllvòèyl{óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷_!!!!!!!!! !!!!!!!!!!!  !  !!!!!!!!! ! !!!!qªíýýýýýýýýýýþÿýýýþþþýþýýþþþþþþæÓ                                                                                                                                                                             ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ~‘‘~~‘¡‘~~~~‘~‘~‘¡‘~‘¡¡¡¡‘‘¡‘~‘‘¡¡‘‘‘¡¡¡‘¡¡¡¡¡~¡¡¡¡¡¢¡¡¡¡¢¢¢¢¢¡¡‘¡£¦¡¡¡¡£¢£¢¡¢¡¢¢¡££¢¡¡£££¢¡£«¦££¦£¦¦¢¡£«££¦®åþÿÿÿÿÿë«««££¦¦¦¦®¦£¦¦¦«¦£¦®®¦¦®®££®£®¦®®©®¦¦¦¦®®®©®£©®®£©®©£®®®®®¦®®¦®®®£®®®¦©®¦¦¦¦¦¦££¦®¦£££«®®££££££¦«£¦¦£££££¦¦££££¢££¦£¢£¦££¢££¢£££££¦£‘¡¢êÿÿÿê‘¢¡¡¦¦¢¡¡¡¡£¡¡¡¢¢¢¡¡¡¡¡‘¡¡¡‘¡¡¡¡¡‘‘¡¡¡¡‘¡¡¡¡‘¡¡‘‘¡‘~‘‘‘¡‘¡‘‘¡‘‘‘‘¡‘‘~¡‘~~‘‘~~‘‘‘‘~}~‘~}§ÿÿÿš‘Úûÿÿèš~}}‘‘}}~~}}~}~}}~}~}}}}}}}}}}}}}}}|s}}}}}}}}v}pp}}vvwwr}pv|v}}rppvvvv}˜Ùýÿÿÿÿÿÿÿÿý×vvvv}vopppppppvvvpvlvvplp|voovovovllooplpopoploppllllvolllvlllvlllltlllllCllClllllllClÌü›lCÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!=Còÿÿÿÿÿ÷_ !!!!!!!!!!!!!!  ! ! !!!!!!!  ! !   ! ! =q¬íýýýýýýýýýýýþÿýýýýýþýþþþþþþþþæÓ                                                                                                                                                                                                Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~‘‘‘~‘‘¡¡‘~~}~~‘‘~~‘‘‘¡‘‘¡¡‘‘~¡‘¡‘‘¡¡~‘¡¢¡¡‘¡¢¡‘¡£¡¡¡¡¢¦£¡¡¡¢¡¡££¡¡¦¦¦£¡¡¢¡£¢¡££¡¡¡¡££¡¡£««££¦£¢££¢£¦¦¦¦¦êþÿÿÿÿÿê®®®¦®®®¦£©¦¦®¦££¦£®®®¦¦®®££££©¦£©©®¦££££¦®®©£©®©¦©©©®®¦¦®®¦®£©®®®¦®®®¦£©¦¦¦£££¦¦£¦££££®®®®¦££££¦®¦¦¦¦£¦£¢£¦¦££¢¡¡£®£££¦£¢¡£¦«££¦¦«¦¡¡‘­ÿÿÿû¦‘¢£¦£¦¢¡¡¡¡¡¡¡¡¡£¡¡¡¢¡‘¡¡¡‘‘¡¢¡¡‘‘‘¡¢¡¡¡¢£¡‘‘¡¡‘‘‘‘~~~‘‘‘‘¡¡¡‘¡‘¡¡¡~‘‘‘~~‘¡‘‘‘~€‘}}}~~}‘õÿÿè‘}¬÷ÿÿõ§‘}‘}}}~}}}}}}}~~}~}}~}}sp}}r}}}}p}}}}}}vrvv}}rvvp||vv}ppvpvvvpv|žõÿÿÿÿÿÿÿÿÿ÷ž}vpvvvppppoppopv}vvplvvpppvvvpvpopollpvlllpolopvololltpvllloollvpllllvlllClCCllClllllllyõèyCuòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!$Yóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! !!! !!! !!! !!!!!!!! ! =}ªíýýýýýýýýýýþÿþýýþþþýþýýþþþþþþæÓ                                                                                                                                                                                                    ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ ~}‘~~~~~~~‘‘¡¡‘~~‘‘‘‘‘~~¡‘¡‘¡¡€¡¡¡‘¡¡‘‘¡¡‘‘¡‘¡¡¡¡¡¦¡¡¡¡¡¡¡¡¡£¢¡¡£¢¡¡¡¡¡¡¢¢¡¢¡‘££££¡¡¢¢£££¢£££¢¦¦£¢¢£££¢¦¦££££££åþÿÿÿÿÿ뫦££¦®£££¦¦¦¦£££©¦££¦££®®®®££©®¦£©®®£®®®¦¦®®£¦®©¦©¦©®®££®®®®££®®¦®¦«££®®¦®®®£¢¦®®®¦£¦¦£££®¦¡£¦¦©£££¦¦££££¢£££££££¦£¢¢£¦£¡£££«£¢¢¡¡¢£¡¢öÿÿÿÖ¦¢¢¢£¡¡¡¡¢¦¡¡¢£¡¡¡¡¡¡¡‘¡¡¡¡¡‘¡¢¢‘¡¡‘¡¡‘‘¡¡‘¡‘‘¡¡‘‘¡¡‘‘¡‘¡¡¡‘‘‘‘~~‘‘¡‘~~‘‘~‘‘~~~~~‘‘~~~~‘~€§úÿÿב¡¥õÿÿýØ‘~}}~~}‘}}}~}}}}}}~}}}}}}}}}}}}vr}}}}}}}}s}|}}}}vv}}}}|v||v||p}™àýÿÿúèÙüÿÿÿõ™vvpv|vpvvpvpvvvvvppvolpvpvplopoppllpvplpplovvlloolllllloolllllllolllllllllllllllCCllCCCClÇüÆtlÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷Z!!!!!!! !!!!!!!!!!! !!!! ! !! !   !! =q¥íýýýýýýýýýýýþÿþþýýýþýþþþþþþþþæÓ                                                                                                                                                                             Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ }~~~~}~~~~}~~‘¡¡¡‘~~~~~‘‘‘‘¡¡¡‘¡¡¡¡¡¡¢¡‘‘¡¡¦¢¡¡¡‘¡¢¡¢¢¡£¡¢¡¡¢¡¡¡¢¡¡¢¡¡¢£¦£¡¡¢¢£«£¢££¦£££¡¡¡£¦£¢££££££¢¢åþÿÿÿÿÿê«¢£¦®¦£££¦£©£££©¦¦££©¦££©®±®¦©®®¦¦®®®®®¯¦££¦¦¦¦¦®«£¦®£££®®®®®®®®¦£¦¦££®®«¦¦££££®®®¦£¦¦£¢£££££¦«££££¦¦££®¦¢¢¦®££¦££¦¢¡¦¦¦¢£¦¢¢¢¢¢¡¡¢£¢Öÿÿÿí¡£¦¦¢¡¡‘¡¦¢£¦¢¢¡¡¢¢¡¡¡¡‘¡£¡¡¡‘¡¢¡¡‘¡¡¡¡‘‘‘‘‘¡‘‘¡¡¡¡¡¢¡¡¡¡‘¡¡¡‘€~~‘‘€‘‘‘¡¡‘~‘€}~~~~~‘‘~~‘‘~~§ûÿþÓ¡‘‘èþÿÿæ™}}~‘~~~~}}~}}}}}}}}~~}~}~}~}}v}}~‘~}}}}}v|}}}}}p}}~}}pv|||v|Çõÿÿýèžv{õÿÿ÷žwvpppvppv|vpp}}|}vvopolppvolplllpllppvplvpovvlllplllllllllllollllllllCllltlllllllClCCCCCCCuñè{luòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!! ! ! ! !!!! !!!!!! !   !! !   !!!=q¥íýýýýýýýýýýþÿþýýþþþýþþþþþþþþþæÓ                                                                                                                                                                                        ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘‘~~~~~‘‘‘‘‘‘~~‘¡¡‘¡‘¡‘‘‘‘¡¡¡¡¡~~¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¢¢¡¡¡¡££¡¡¢¡££¡¡¡¡¢¦£¡¡¡¢¦£££££¢¢¢£¢¢£££££££££¦££åþÿÿÿÿÿ릣¦®¦¦££¦£¦¦¦£¦£¦£®®©£®££®®£®¦¦®®©£®®¦¦¦®©£®®®®®®®£©¯®®©¦©®®¦©£¦¦¦®®«¦®®££¦£¦©¦«¦¦£££¦£¦¦¦¦®®££¢£¦£¦££¢¦¦££¦¦£¡¦£¦¦£¢££¢¡¢¦¢¡£££¢£££¥ûÿÿþ¨¢¡¦¦¡¡¡¡£¦¡‘¡£¡¡¢£¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡‘‘¡‘¡¡¡¡¡¡¡¡¡‘‘‘‘‘‘‘‘‘‘¡‘~‘‘‘‘‘‘¢¡~~€¡‘}~‘‘~~‘‘~}‘¡}}~‘~€¬ýÿýÓ€~‘Úûÿÿëž}}}}}~}~}}~}}}}}}}}}}}~~}}}~}p}}}}}}}}}v}}}}}}}|v}|||||}|v}™àþÿÿõÓwvÙþÿúž}vpvpvppppvvpl}vpvoppoppppppvvplpvvloolllvvpolvlvlolooplllllllollullClllllllllllllllllllllClÇüÇtCýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!!!! !  ! !!!!!  ! !  !!!!  9p¥íýýýýýýýýýýýþÿýþýýýþþþþþþþþþþæÓ                                                                                                                                                                                                 ××üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~}~‘¡‘¡‘‘‘~~~~~~¡¡¡¡¡¡¡‘‘‘¡¡¡¢¡¡‘~~‘¡¡¡¡¢£¢¡‘‘¢£¡¡¡¡‘‘¡¡¡¡£¡¡¡¡¡‘¡¡¡¡¦£¡¡¡£¡¡£¢¢¡¡¡££¢¡¡¢¢¢£¦£¢¡¡££¢¢¡¢¦¦¢£¢¡££££êþÿÿÿÿÿꥣ®®££®®¦¦£££©¦¦£¦®©££®¦£¦¦£¦®®®®¦££¦£££¦¦¦®®®®®®©®®®®®¦®¦¦¦¦££¦®®®®®¦®®££££®®¦££££££££©®®®®«¦£¢££££¦¡££¦£¢¦¦££¦®¦¦£££¢¡‘¡£¢¢¦¦££¦«¦êÿÿÿ桦¢¡¢¡¡‘‘£¦¡¡¡¡£¦¦¡¡¢¢¡¡¡¢¡¡‘‘¡¡¡¡‘‘‘‘¡¢¡¡¢¡¡¡¡¡‘¡‘‘‘‘‘¡¡‘~~~€¡‘‘‘¢¡‘‘‘~~}}}~~~‘‘~}~‘~}}¡‘}~‘Óýÿúš€‘}ÓõÿÿúÓ€}}}}~~}}}}}}}}}rvr}}~}}|}}}}}}p}}|}rvp}}}}}|}|vv|v||}}}™Ó÷ÿÿúà˜vv˜èÿÿúžvvpppv|}ppppppv}pppopolvvvpvvpvvopvplolllpvvllplvvlllvvpollloplvllollCllllClllllllllCClCllloluñò{ClèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!$!@÷ÿÿÿÿÿúx!!!!! !!!!!!!!!!!!!!!  !!  !  !! !  !! !! !!qšíýýýýýýýýýýþÿþýýþþþþþþþþþþþþþæÓ                                                                                                                                                                 ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ~~‘~~~‘¡‘~~~‘‘‘~‘‘‘¡‘¡~~¡‘¡¡¡‘¡¡¡¡‘¡¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡£¡¡¢¡¡¡¡¡¢¢¢¡¡¡¡¢£¢¡¢££¡¢££¢£¢¢¢££¢¢£££££££¡¡¦«¢££££££©åþÿÿÿÿÿꦣ«®£¢¦®¦£££¦®®£££££¦©¦¦¦©®££®®®®¦¦¦®®®££¦¦®«®¦©®©®®¦¦¦®®®¦¦®®®¦®®£££¦¦¦®£©¦¦®®©¦££££®«®¦££¦£¢£¢£¦£©®£££¦££¦£££¦¦£££¦¢£¡¡£££¡¢£¢¡¡¦­ýÿÿû¥¡¦¦¡¢¡¢¡¡¦£¢¢¡‘¡¦¡‘¡¢¡¡¡£¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘‘¡¡‘‘¡‘‘‘¡¡‘‘‘~‘¡¡¡‘~‘‘‘~‘‘‘~‘‘‘‘¡~‘‘‘‘‘~~~~‘‘}}€¡€Úþÿú¬}}~¥íþÿþà¥~}}~~|}~~~~}}}}}}}~}}}s}p}}}r}}}pw}}||}}v||v|p}}||}vÓèÿÿûèž}pwžëÿÿõžvv|vvvvp|vvvpppppovvpvvlpvpppwppplpvpoppppvlollvlvvlpllllppllvvollllllllllllllllllClllllCCllllCüÇul›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!!! !!!!!!!! !!!  !  !!  !!! !=q¥íýýýýýýýýýýýþÿþþýýþþþþþþþþþþþæÓ                                                                                                                                                            Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ‘¡~}}~‘}~¡¢¡‘~~~~~¡‘‘¡‘‘¡¡¡‘¡¡¡‘‘¡¡‘¡‘¡¡‘¢¡¡‘¡¡¡¢¡¡¢£¡¡£¡¢£¡¡¡¡¢¡¡¢£¢££££¡£¢¢£¢¢£¢£¢¢££££££¢¡£¦¦££¦®£¡£¦åþÿÿÿÿÿê«««¦¦£££££££®®¦£££££©©¦©®¦®££©££®®£®®®®££®£®®£¦®®®®©££®®®¦«®®®®¦£«£££££®®®®®¦®®¦£££££¦®®¦¢¢££¢£¢¢£¦¦«®¦¦¦¦¦¦¦¦£££¢£¦¢¡£¢£¦¦¦¡¡£¢¡¡¥íÿÿÿÜ¡£¦¢¡¢¡£¢¢¦¢¡¡¡‘¡¢¡‘¡¡‘¡¢¢¡¡¡‘¡¢¢¡¡¡¢¢¡¡¡‘‘¡‘~~‘¡¡¡¡‘‘~‘‘¡¢¡‘~~~~~~~‘‘‘¡¡‘‘‘‘¡¡¡‘~‘~~~‘‘}}}‘}ÚýÿýÓ~€€‘àûÿÿõÓ‘}~~}}~‘‘~~}~~}}}||}|||}~|vv|}}}}}p}}}p}}p|v||}}‘ÇèþÿýëÓvpwÇ÷ÿþèvvvvvppppvv|}vpooopvpv|vlpppvvpppllvvplpvvvpollpollopvollvvppopvllllllllllllllulllllllollCCCllCClèó˜olèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!!Zòÿÿÿÿÿ÷_!!!!!! !!!! !!!!!!!!!!!!!!! !! ! !!    =wªíýýýýýýýýýýþÿþýýþþþþþþþþþþþþþæÓ                                                                                                                                                           ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~‘~~‘‘~~¡¡‘‘‘‘‘}¡¡‘‘‘‘¡¡‘¡¡¡‘‘¡¡¡‘¡¢¡¡¡¡¡¡¡¡¢¡¡¡¢¢‘¡£¢‘¢¡¢£¡¡¢£¡£¡¡¡¡¢¡££££¢¡¢¡£¢¢£¢¡¢¦£¡¢¢¢££££¡¡¦¦£££¦Ýþÿÿÿÿÿ뫦£££®£££©¦££¦¦¦¦££®¦¦¦®®¦©££®®®©££®¦®®®¦©£©®®£¦®®®®£¦®®£¦®®££¦£¦©££©®¦¦®®¦¦¦£¦¦¦©£££££¦¦£¦¦¦££¦¦¦¦££¦¦¢¢££££¦¦£££¡¢£¦££¢£¦¡¡¢¦¢¡¡Ôÿÿÿõ¦¡¡¢¢¢¡¡¡¡¡¢£¢¡¡¡¡¢¡‘¡£¡‘¡¡¡¡¡‘¡£¡‘¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘‘‘¡¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘~‘~~‘‘‘~~‘‘~~‘¡€‘~}~~~~}~‘}}}ÖûÿýØ‘}~‘ÓõÿÿýÙ™‘~}}}~}}}~}|}}‘}}}|}}}~}p}}|}s}}vp~}pp}}}}vvÇèýÿþõÊ}vv×ýÿüßvv}|ppvvvvvvvvvvoopppppvpovlvvolppplpvploooppopoooppllollpllloulllolllllllllllllllllllllllCClCllCC›üÌvlƒüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Cóÿÿÿÿÿ÷]!!!!!!!!!!!! !!!!!!!!!! !!!!! ! !!!!   !9q¥íýýýýýýýýýýýþÿýþýþþþþþþþþþþþþæÓ                                                                                                                                                             Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~‘~~~¡‘‘‘‘¡‘‘‘‘~‘¡¡€~‘¡¡¡‘¡¢¢¡‘¡¡‘¡¡¢¢£¡£¢‘¡¡¡¢¢¡¡¡¡¡¢¦¡¡¡¢£¡¡¢¢¢££¢¡¡¢¢¡£££¡¡¡££¢¡¡¡¢¢¢¡¡¢£££¦££¢¢££££££Ýþÿÿÿÿÿê°¦£¢££££¦®®©¦£¦®®«£®®££®®®®¦¦®®®¦££®®¦®¦©®££®©®®¦®®©¦®®¦£¦®££££¦¦¦¦®®®¦¦©¦£¦®££¦®®®¦£££££¦®¦¦£¦®¦®®¦¢¢¦£¢¡£££¦¦¦£¡¡¡£¦¦¡¢¢¦¡¡¢¢¡¡¦ûÿÿþ­£¡¡£¦¢¡¡¡¡¡¡£¢¢¢¢¢¢¢‘¡¡¡‘‘¡‘¡¡‘‘¡¡‘‘¡‘‘‘‘¡¡¡‘‘¢£¡¡¡€‘‘‘‘‘‘~~‘¡‘‘¡¡~‘¡‘€~}~~}~~~~~}~‘¡¡~}}}‘~}}}}~¡§õÿþב~~}™æûÿÿ묑~}~}}}}}}|}}‘‘}}}}}}}}}}}}}}|}}rw}}||}rv}}žàýÿþõÙwvv}™èþÿúÓw|vv~}v|p|}v|||ppvppvvvpvplvplpplpoplooplllolppopllovplopolvllvppllllooovoluuoollllollCllClllllCCllllèúƒClßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!!=Zóÿÿÿÿÿ÷_!!!!!!!!!!!! !! !!!!  !! !!!!! !   !  !$q¥õýýýýýýýýýýþÿþýýþþþþþþþþþþþþþæÓ                                                                                                                                                                    ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ}‘‘‘‘~~~~‘¡‘‘‘~‘‘~¡‘¡‘‘‘~‘¡¡¡‘~¡¡‘‘¡¡¡¢¡‘¡‘¡¢¡¡¡¡¢¡¡¡¡¡¡¡¢¡¡¡¢¢¡¡¢¡¡¡¡£¡£¢¡£¢¡¢£££¢£¡¢¡¢¢£¦£¡¢££¢£¦££££££¦¦¦£¢åþÿÿÿÿÿ뫦££££££¦¦¦®¦£«®®££®®££®®£¦¦¦®®¦©££®®££®£©¦©®¦®¦££¦¦©¦®®££®®¦¦®¦®¦®®¦¦¦£¦¦¦¦¦¦¦¦¦¦¦®¦££¦¦®¦¦¦££¦¦¦¦£¦££¦¦££¢¢¢¢£¦££¢£¢¢£¡¢£¢¦£¡¢¦êÿÿÿꢢ¡¡££¡¢¡¢¡¡¡¦¡¢¡¡¡¡¡¡¡¡¡‘¡£¡¡¡¡¡¡¡‘¡¡¡‘¡‘¡¡‘‘¡¡‘‘‘‘‘‘¡¡‘‘‘~‘¡‘~‘¡‘~€¡‘~‘‘~‘‘~~~~‘‘‘‘~}}€‘~~~€‘~™ëÿÿà¥~~}€Óõþÿýà™}~}~~}}}}}}}}}}}}}~}||s}}}}}}}}}}}|vvw‘žàúÿÿ÷à™}}|v×õÿÿõžvpvvv}vvvppvvvvvppvvpvvpppvpvpoppvppppvvlplovoopoplloooooollovoloolllllllolllllllllullllCllllllCCCClll›ü×uC{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!$Bóÿÿÿÿÿ÷[!!!!!!!!!!!!!! !! !!!!!!!!!  !! !  ! ! !=q¥íýýýýýýýýýýýþÿþþþþþþþþþþþþþþþæÓ                                                                                                                                                             Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖŽŽ‘‘‘~~~~‘‘~~~‘¡‘‘¡¡¡‘¡~¡‘‘‘~‘‘‘‘‘¡¡‘¡¡‘~¢¢‘¡‘‘¡¡¡¡¡¡¡¡¡¡£¢¢¡¡¡¢¡¡¡¡¡¢¢££¡¢££¢¡¡¢¡¡££££¡¢££££¦¦££££¦¦£¦¦£¢åþÿÿÿÿÿꫦ¦¦£®¦©¦¦®®®¦¦®¦£¦®©¦®¦£££££©£££©¦©®¦®®£®®®¦¦££££¦£££¦¦££®®±®®®®®®¦£££¦£¦®¦£¦®¦££¦¦®¦¦¦®¦¦£¦£££¦¦¢£¦¦¦®¦££¡¡¡£¢¦¦¦£¡¡¢£¡¡£¢¦¦£¦Üýÿÿû«¥¡¡¡¡¡¡£¡¡¡¡¡¢¡¡¡¡¡‘‘¡¢¡¡¡¡¢£¡¡¡¢¢¡‘¡¡¡€¡¡‘¡€~‘¡‘‘‘‘‘‘¡‘‘¡¡‘‘‘~~~‘‘‘‘‘~~‘~}‘¡‘‘}~‘~}~~~}}~~~‘¡‘~‘‘~}‘èýÿõÓ‘}}~™àúÿÿõÓ™}}‘~}}~~}}}}}}}}}}v}}|}}~~}}|}}|v}˜Óèýÿÿúàš}}vvžèþÿýè˜vvppppvppvpppvppppvvvv|vppvvpvvppvvvpppvvvvppvoooppollllooloovppllllllClllllllllllllpolCCClllllCCllCllClèú”lCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$!!=!@÷ÿÿÿÿÿ÷_!!!!!!!!!!!     !!!! !!!!!!!!!!! ! ! !  =qªíþýýýýýýýýýþÿþýþþþþþþþþþþþþþþæÓ                                                                                                                                        ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~~~~~~‘‘‘~~‘‘¡¡‘‘‘‘‘‘‘‘~‘¡¡¡‘‘‘¡¡¡¡¡‘~‘¡¡‘¡¢¡‘¡¡¡¢¡‘¡¢¡¢¢¡¢¡¡¡¡¡¡¡¡¡¢¡¡¡¡¢¢¢¢¢¢¢¢¢¡¢££££¢£¢£££££¢£££££¢£££¦¦¢£åþÿÿÿÿÿ££¦££££¢¦®¦¦£¦¦£¦££®®££®©£¦££®¦®¦¦®¦®©£®¯¦£©¦¦¦¦©¦¦¦£©££®®®®££®®®©££¦¦££¦©££¦®¦¦¦£¦¦¦¦¦¦¦¦£¢£¦£¦¦¦¦¢¢¦¦£¦¢¡£££¢£££££££¢¢£££¢¢¦íÿÿÿÝ¢¢¢¡¡¢¢¢¦¡¡¡¡¡¢¡¡¡¢¡¡¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¢¡‘‘¡¡¡‘‘‘‘‘‘~‘¡‘¡‘‘‘~‘‘‘¡‘‘‘‘~‘‘~~‘‘‘‘}}¡¡~~~€~~}~¡}}~‘}~}‘àûÿýÚ™}}~~¬ëýÿþè§}~}}}}}}}}}}~}}}p}}}|}}}}|}|}™×èýÿÿ÷à§vvv}™ßúÿÿõ×|}vpv}|vvppvvpppppvpppp|vppvvpopvppppppvppppoopploppopoollooovollolllllollollllllllllolllllllllllCCllClCC›ýßvly÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!=!@óÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!!! !!!!!!! ! !  !! ! !!   !  !q¥íýþýýýýýýýýýÿÿþþþþþþþþþþþþþýÿæÓ                                                                                                                                            Ó×üüüüüüüüüüüüüüüýÿÿÿÿþÿÿÿÿÿÿÿûÖ}}~}~~~‘‘~‘‘‘~~‘¡¡~~~‘¡¡‘¡¢‘‘‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡‘££¦¦¡¢¢¡¡¡¡¡¡¢¢¡¡¡¡¡¢¡¡£¢¡¡¡¡¡£££¦¦£¢¦¦«££¢¡¢££¢¡¡¡£¦££££åþÿÿÿÿÿ£¦¦££¦£££££¢¢¦«¦©£¢£¦¢£®®¦®£££®®®£®®¦©«¦®¦£®®®®®®©¦¦¦¦¦©®££¦¦£®®¦®®®®®¦£¦¦¦¦®®¦¦£¢£¦®¦£¦¦£¢¢¢£¢£¦®¦¡¡££¦¦¢¢¦£¢£¢£¢¦¦££¦£¦¦¦¡¢Ôþÿÿõ«¢¡¢£¦£¡¡£¢¢¡¡£¢‘¡¡¢¦¦¢¡¡¡¥£¢‘‘¡¢¡‘¡¡‘¡£¦¡¡¡¡~¡¡¢¡‘‘‘‘~~‘‘‘¡¡‘‘‘‘‘‘¡~‘~‘‘‘~~‘}¡¡‘‘‘€‘‘‘~~}~‘}}~}‘‘‘‘Óõÿÿè§~~‘}‘Ú÷ÿÿúÚž}}}~}}}}}}}}}}}}}r}|v|||}}žßõÿÿþõà§vvvv‘Óòþÿúà™}v}}}v}}|vvpp||ppp|}vpploppvvv}olp}voopvvpooopooopoooopppollllpolllolllopolooolllllCClClllllCCCCCCClllCCllllçý›llÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Y÷ÿÿÿÿÿ÷x!!!!!!!!!!!!!!!!  ! ! !! !!! ! !!!!   !!!!! ! !  !=q¥õýýýýþýýýýýþÿýýþþþþþþþþþþþþþþæÓ                                                                                                                                                    ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿýÖ~~~~~~‘‘~€‘‘~~~‘‘‘‘‘‘‘‘‘¡¡¡¡¡¡¡¡‘‘¡¡‘¡¡¡‘~¡¡¢¡‘¡¡¡¢¡‘¡£¡¡¢¡¡¡¡¡¢¡¡££¡£¡¡¡¡¡¢¢¦¢¡¡¡¡¡¢£¢¢¢¢¢¦¦££¡£¢¢£££££££¦££¦©åþÿÿÿÿÿë«££¦£££©£¢£¦£££¦¦¦¦££¦¦¢£®®¦®££¦¦®®¦¦¦£®®¦£®£©®®®©¦«¦¦£¦¦¦¦¦¦¦¦¦®®¦£®®¦¦¦¦££¦¦¦®¦¦¦£¦¦¦¡£¦¦¦££¦¢££¦«¦¡¢£¦££¢¢£££££¢¦¦¢¡¦¦¦¢¦£¢¦ûÿÿþ­¦¢‘¡¦£¡¢¢¡¢£¡‘¢£¡¡¡‘¢¦¡‘¡¡¡£¡‘¡¢¡¡¡‘‘‘‘¡¡¡¡¡‘¡‘¡¡¡‘‘‘¡¡‘‘‘¡¡‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘~~‘~~‘‘‘‘}~~~~~~~~~~}~‘~}~~‘æýÿúב~€}}§æûÿÿ÷àÒ‘}}s}~}~}}s}}~}v}}}}}}˜Óæúÿÿýèךv}vv}žàýÿýèž}}vp|}vvvvv|vpvvvppvvvvppvpppvpvvpovvpopppppooppopoppopooopplllloolloolllooolllllllvllllllCvolllCllClllCClCClC˜üçuCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷_!!!!!!! !!!!!!!! !!  !!!! !   !!!!! !!=s¥íýýýýýýýýýýýþÿþþþþþþþþþþþþþþþæÓ                                                                                                                                              Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ¡‘~~‘¡¡‘‘‘~~~~~~}~~‘~~~~‘¡¡¡¡¢¡‘~~‘‘¡¢¢¢¡‘¢£¡¡¡‘¢¡¡¡¡‘¡‘‘‘¡¢¦¢¡¦£££¢£¢¡¡£££¡¢¢¢£¡£¡¢¡¡¢¢£¢¡¢¢£££££¦®¦£££££¦£åþÿÿÿÿÿꦣ¦¦££££££¦££££¦£££®®®¦£«®®«¦££®£©®££££¦«££®¦£¦£¦¦®®¦®¦¦©¦¦©®®¦£¦¦££¦®¦££¦¦¦¦£¦¦¦¦¦££££¡£¦¦£¦¦¦¦££¦¦¦¢££¦¦¦¢£¦¦¦¦££¦¦£¢£¦¦¦£¢¢êÿÿÿꢦ¢‘‘¢¢¡£¢¡¡¡‘¡¡¢¢¡¡‘¡¢‘¡‘¡¡¡¡¡¦¡¡¡‘‘~‘¡‘‘¡‘¡¡‘‘‘‘‘¡¡¡¡¡¡‘¡¡¡¡¡‘‘¡‘~~‘‘‘‘‘‘‘€~~‘~‘‘}}}~‘‘~~‘‘‘‘¡‘}~~~}}}}€×úÿÿæ§‘}}}‘ÒèýÿÿûèÓ™}}~}~}ppp}~~}~~}‘žÙëýÿÿúèÓ}vv}}™×÷ÿþõÓvw}vv|vvppvp||vvvppvppvvpvvvvpvppppovvlvvvoopoopoovvvpvvpopvvvpoloplloooollooolllllopolluollpoCloolCllollllCCCCCèý˜CCÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!!!Z÷ÿÿÿÿÿ÷_!!!! !!!! ! ! !!  !!!!!  ! ! ! ! !! !   !p¥íýýýþýýýýýýþÿþýþþþþþþþþþþþþþþæÓ                                                                                          ÓÓüüüüüüüüüüüüüüüüÿþÿÿÿÿÿÿÿÿÿÿþÖ‘‘~}‘~~‘‘‘~~~~‘¡~‘‘‘‘~~‘¡¡¡‘¡‘¡¡¢¡¡‘¡¡¡‘¡£¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡£¢¢¢¡¡¢¢¢¢¢¢¢£££¢¡¢¡¢££££¡¡££££¢¢£££££££¦£¦Ýþÿÿÿÿÿ릣££¦¦£££®££££¦¦££¦©«©¦£¦®¦®®££££¦©¦£¦£¦£¦¦®®¦¦¦¦©®®¦®®¦®«£¦®¦¦¦¦¦®®¦¦¦£¦£¦®¦£¦¦¦¦£££¦£¦¦¦£¢£¦¦¦¦£¢¦£¦¦££¦¦¢¢££¦¦£¡¦¦£¦¢¢¢£££­ûÿÿû¥¡¢¢£¡£¢¡¢¢¡¡¡¡¡¡‘¢¦¡‘¡¦¡‘¡¡¡¢¡‘¡¦¢¡¡¡¡‘¡‘¡¡‘¡¡¡‘¡¡‘‘‘‘‘‘¡¢¡‘‘¡¡¡‘‘‘‘‘¡‘~‘¡¡‘‘~‘~~‘‘‘~‘‘~~~}‘¡~}~‘~}‘¡~~~}}}}}}~§ëýÿúב}}}}‘ØõþÿÿþõÚ§™‘}}}}}}}™šÓÚèúÿÿþõà§v}}vvžÚõÿÿ÷Ú˜vvpv|v|vv|vvpvvv|vvvppppvvvvppvpppvvpovvpvvpvlppovplopooovploppoolloplloooolllolllllllolllllClllllolCCllllllCCCCCC˜üñuCuòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!$!!Bóÿÿÿÿÿ÷]!!!!!! ! !!!! !!!!!!!!!!!!!!! ! !!   ! !!      ! 9q¥íþýýþýýýýýýþþÿþþþþþþþþþþþþþýÿæÓ                                                                                                                                        Ó×üüüüüüüüüüüüüüüþÿÿÿÿÿÿÿÿÿÿÿÿûÖŽ‘}~‘~~~}~~~‘¡‘¡¡¡¡‘‘‘‘‘~~~~‘‘‘‘~¡¡¡‘¡¡¡‘‘¡¢¡¡¡¡¢¡¡‘‘¢£¡¡¡¡¢¢¡‘¡¡¡¡¢¡¡¡¡££¢¡¡¢¢£££¦¡¢¡£¦£££¡¡££££¢£££¢£¦£¡¡¡¢åþÿÿÿÿÿꦦ¦¦¦©¦££¦¦£¦£©®®£¦¦££®£££¦®®£©¦¦£¦¦¦¦££®®££®®®®©®®¦¦®©®®®©£¦¦£¦¦£®®££¦«¦¦®¦¦£¦¦¦££¦¦¦¦¦¦¦£¢£¦¦¦«¦£££¦¦££¦£¢¢¢¡£¦¢¡¡£¦¢¡¡¡¡¡¦íÿÿÿÚ¡¡££¦¦£¢¡£¡¡¡¡¢¢¡‘¡£¢¡¡¢¢¡¡¡¢¢¡¡¡¢¡‘¢¡¡¢¡¡¡‘¡‘¡‘¡¡‘¡¡¡‘‘~‘¡¡¡~‘¡‘‘‘‘¡¡¡¡‘~‘¡¡‘‘‘‘‘‘¡¡‘~~~}‘‘}~~~}~~~}}~}}}}}~~‘}~~‘‘×õÿýæ§‘}}}šÚõþÿÿÿúèàÙÓ§ÓÓÓÓàèõúÿÿÿýíÙš}}}|v}žÙõÿÿõàž}vvvvvvvvpp|vpv|pppv|v}vppvpvpv}vppvvvop}}vvpvvppvvvoooollloolllllooopolloopvlllllolovoollCllllClCClll?llCCCCCCllllluèÿ›lCþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!$!@óÿÿÿÿÿ÷_!!!! !!!!!!!!!!!!!!! !!!!! !! ! !  !!!!!!  !!!=qªíýýýþýýþýýýþÿþþþþþþþþþþþþþÿýþæÓ             !                                                                                             ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿþÿÿÿÿÿÿûÖŽ}‘‘~~~~‘~~~~‘‘¡‘¡¡‘~¡‘‘‘‘‘¡¡‘¡‘‘¡¡‘‘‘¡¡¡¡¡¡¡¡¡‘¡¡¡¡¡¡£¡¡¡¡¡£¡‘‘¡¡¢£¡¡¡¡¢£¡¡¢¢¢¢¢££¢¢¡£®££¢£¡¡¢£¢¢£££££££££¢¢åþÿÿÿÿÿ뫦¦¦££¦£££¦®¦¢£®«££££«¦¦££¦®®¦¦¦¦££®®¦¦¦®©£¦®®®®¦¦®®¦¦¦¦®¦®¦¦¦££¦£¦®¦£«®¦¦¦£¦¦¦¦¦£¦¦¦££¦¦££¦¦¦¦£¦£££¦¦¦¢¢¦¦£¦¡¡¦«¢¡£££¢£¢¢¡¢Üþÿÿö¦¡¢¢¢¦¦¡¡£¦¡¡¢¡¢¢£¡¡¢¡¢¡‘¢¦¡¡¡¡¡¢¡¡¡¡¡¡¡¢¡¡¡¡‘¡‘¡¡¡¡‘¡¡¡‘‘¡¡¡‘‘¡‘‘‘‘¡‘‘‘‘‘‘‘‘¡‘‘‘~~~~‘‘~~~‘‘~}~‘~}}}}}}}~‘~}}‘}}šàúÿõÚ¥}}}}}™Úë÷ÿÿÿÿÿýýûýýÿÿÿÿÿüõæÓ™}}}}v|žß÷ÿþõßž}vpv|}||v|vvvvvpv}vpvvp}wpppvvov}plvvvvpovpvvpovpoppoppooolooooooollooollooooplllllplllollCllClllllCColClCCllClCClllll˜üòultñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!$!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! !!!!   ! ! !!    !  ! !!  =qªíþýýýýýýýýýþþÿþþþþþþþþþþþþþþÿæÓ                                                                                                      Ó×üüüüüüüüüüüüüüüþÿÿÿÿÿÿÿÿÿÿÿÿýÖ¡‘~~~‘¡¡‘~}~‘‘‘~~~~‘‘¡‘¡‘¡¡‘¡‘¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡‘‘¡¡¡‘¡‘‘¡¢¡¡£¢¡¡‘‘£¦¡¡¡¡£¦£¡¡¡¡¡¡¡¡¢¢¡¡¡¡¡££¦«£¡¡¡¡¡¡£¢¡¡£££¡££¦«¦¢Úþÿÿÿÿÿꫦ££¢£¦¦£¦®®¦££¦£¡££¦®¦£££¢¦®¦¦«®£®®®®®®¦££¦¦£¦¦¡£®®¦£¢£¦¦¦¦¦¦£¦££¦®¦£¦®«£££¦¦£¦¦¦¦£££¦¦¦¦®¦¦¦¦£¢¢£¦¦¦£¢£¦¦«®£¢¦¦¡£¦£¡£¦¦¦¢¦÷ÿÿþÖ¢¡¢¦¢¢¡¡¡¦¡¡¡¦££¦¦¦¢¢¡¦¡¡¡¦¢¡¡‘¡¡¡¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¡‘~‘‘‘‘‘¡‘‘~~~‘~~~~}}~¡‘‘~~€‘‘‘~}~~}}}~‘}}}}~~}~‘~}}‘}}}Óèýÿôך€}}}~‘žÙèõ÷ûýÿÿÿþýúõèàÓ™}}}}}}}Çà÷ÿýõÙ™}}}pv}}}}v}}}w|vv}}}}vvpppvvvvvvppvvoovvvvooopvvpolooppoooooooooopvvpollloopolloolollovlllllllCllCllllCllolCClllllC>ClClCCçÿÇul›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$=!!@óÿÿÿÿÿ÷_!!!!!!!!!!!! !!! ! ! !! ! !! !! ! !! !!!!! ! !  =}ªíýþýýýþýýþýþÿþýþþþþþþþþþþþÿýþàÓ                                                                                                                                         ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~‘~‘~~‘‘~~‘‘‘‘~~‘‘¡‘~‘‘‘‘¡¡¡‘‘‘¡¡¡¡‘¡‘¡¡¡¡¡‘¡¡¡‘¡¡¡‘¡£¡¢¡¡¡‘££¢¡¡¡¢¢£¢¢¡¡¡¡¢¢¡£¢¡¡¡¡¢££¦£¡¡££¢¢££¢¡¡£££¡£¦¦££åþÿÿÿÿÿí¦££££¦¦¦¦¢¦¦¦«¦¦¦¢£¦¦®¦££££«®££®¦¦¦®®©¦®¦¦®¦£¦£¦¢¦®®¦£¢£¦¦£¦£¦©®££¦®¦£¦¦¦¦££¦¦¦¦¦¦¦£££¦«¦¦¦££¦¦¦£££¦¦£££¦¢£¦¦£¢£¢¢££¦¢¢£¡£¥Ýÿÿÿë¡¢¢¢¦£¡¡¡¡¢¡¢¢¦¦¢¢¡¢¡¢¡¡¡¡¡¡¡‘¡¡¡¡‘¡¡¡‘¡¡‘¡¡‘¡¡¡¡¡¡¡¡‘‘¡¡¡¡‘~‘‘‘¡‘‘‘‘‘‘}‘‘~~‘~~‘‘‘}~¡‘‘‘~~~‘~}~~~}‘‘~}~~~‘~}~~~}}~}~~}}‘×õÿþíב}}}}}™§žÓ×ÚààÚÓ§ž‘v}}}}}}§×èûÿýõÙ™}ww}}vp}}vvvp}}vvvpv}vvvpvvppvvvvvppvpoovvppvoppppvvplpoopoloppoploppppllolopoolloooolCoplllllllllllolllllllllllllllCCllCCClƒüóyCuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Bóÿÿÿÿÿ÷_!!!!!!!!!!! !!!!!!!! !! !  ! !  !     !=}ªíþüÿýýþýýýýþþÿþþþþþþþþþþþþþþÿæÓ                                                                                            Ó×üüüüüüüüüüüüüüüýÿÿÿýÿÿÿþÿÿÿÿûÖ¢Ÿ~~~€‘‘~~‘‘‘¡‘‘‘~~‘¡‘‘‘~~‘‘‘¡‘‘‘¡¡¡‘¡¡‘‘¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡£¡¡¡‘¡¡¡¡¢¢££¡££¢¢££¡¡¢¡¡¡¡¡¡¡£££££££££¢¡¢££¡¢¢¢£åþÿÿÿÿÿê«¢£®®¦£¦¦¡¢¦¦®®¦¦¦¦««®¦¦¦®®®¦¢£¦®¦¦¦®¦££®®®®¦££¦¦¦«££¦£¦®¦¦«®®®©£¦®¦£££££££¦¦¦£¦¦¦¦£££¦¦¦¦£¢¢££¦¦¦£££¦¦£¢¢££¢¡¢¡¢££¢¢¡¡¡¡£¨ûÿÿû§¡¢¦¢¦¦¡¡¡¢¡¡£¢¢¢‘¡¡¡¡¢¦¢¡¡¡‘‘‘¡¡¢¢¢‘‘¡¡¡¡‘¡¡¡‘‘‘~‘‘‘‘‘¡‘¡‘‘‘¡~~~‘¡¡‘‘~‘‘~‘¡‘~}~~~‘‘~‘~~¡‘~}~~‘‘‘¡‘~~¡‘}}}}}~€~¡‘~~}}šàûÿýèÓ}}~~~~~}}}€‘}}}}}wv|vvžàõÿÿýõÚ™}w}}ppvvw}}vvvpv}pvpppvvpppp}vpopvpopvvvpoppopvooppoovvpvvpvvopoopoloolooooolooolooopoollvoollollllollllllollllCllCCClllllCllCCèÿÇoCƒýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!$!!Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!! !!!! !!!! !!! ! !!!!!! !=q¥íþþýýýýýýýýþÿþþþþþþþþþþþÿþþþþæÓ                                                                                                               ÓÓüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿþÖ‘‘~~~~~}~‘¡‘~‘‘~~~‘¡‘~~‘‘¡‘¡‘‘¡‘¡¡~¡¡¡¡¡¡¡¡¡¡‘¡‘¡¡¡£¡‘‘¡¡¡¡£¡¡¡¡¡¡¡¡¡¢¡¡¡¡¢£¢¡¡¢¢£¢¡¢¡¡£¢££¢£©£¢¢¦£¡¢¡¢££¢££¦åþÿÿÿÿÿ릣£¦¦££®¦¡£¦¦®«£¦¦¦®¦¦¦££®®¦¦££¦¦¦£¦®¦£¦®«®¦¦¦£¦®¦££¦¦£¦¦¦¦®«®®¦££¦¦£¦¦££¦¦¦¦£¦¦¦¦¦££¦¦££¦¦¢££££¦¦¦¢£¦¦¢¢£¦¢¢¢£¢¡££¢¢£¢¢¡£êÿÿÿꢡ¢¦¢¡¦¢¢££‘‘¢¡¢£¡‘¡¡¡¡¢¢¡‘¡¡¡¡¡¡¢¦¡‘¡¡¡¡‘‘¡¢¡¡¡‘‘‘‘¡¡‘‘‘‘¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘¡~~~‘‘‘~~~‘‘~}~~‘¡‘€~~~}€¡€}}}}~~~}~~‘€}}}‘§æûÿýæ§}}~~}~}}}}}}}}v}}}ž×èúÿÿ÷æÓ™}}}p}}vwp}}pvv|vpp}vvvpp|vpvvv}wvpvvoovvvpvppppvpopppvopppvppvpopooooloolovooploplloplollllolovlllllllolCllllllCllClCCllllCCllCCCƒüú{CláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=9!!!Bóÿÿÿÿÿ÷_!!!!! !!!!! !!!  !! ! !!!!! ! !   !!!   !!!=}¥íýýýýýýþýýýýÿÿþþþþþþþþþþþþþÿþæÓ                                                                                                             Ó×üüüüüüüüüüüüþüüþÿÿÿÿÿÿÿÿÿÿÿÿúÖ ~~~~~~~~¡¡‘‘~}~~~~‘~¡¡¡€¡‘‘‘‘‘¡‘‘~‘¡‘‘‘‘‘¡¡‘¡‘¢‘‘¡¡¡¡¡¡¡‘¢£¢¡¡¡¡¡¡£¢¢¡¡¡¡£¢¡¡£¢£¦¢¢£¢¡£££¡¡¡¦£¢£¦£¡¡££¦¦¦£®«åþÿÿÿÿÿꫦ¥¡¢¡¦®¦££¦¦¦¦¢£££¦£¦¦££¦¦¦®¦£¦®®¦®¦¦¦¦¦¦¦¦¦®¦¦®®¦®®¦¦¦¦©¦®®¦¦¦££¦¦¦¦«¦¦®¦£¢£¦¦¦£¢£¦¦¦¦¦¦¦£¦«¦¦¦¦£¢¢¦¦¦¦«¦¡¡£¦¦£¦££¦¦¦¦¢­ýÿÿõ¦¦¢£¦¢¡¡‘¢¦«¡¡¡¢¡¢¡¡¡¡¡¡¡¡¡¡¢¡¢¢¢¡‘¡¡‘¡¡¡¡¡¡¡‘‘¡¡¡‘¡¢‘‘‘‘‘¢¢‘‘¡‘‘¡¡~‘¡¡‘‘¡‘‘~‘€~‘‘~~~}~~}~‘‘~}~‘}~}}~}~~}}}}~‘}}}}}}~}~~}}‘Óèþÿ÷Ú™}|w}}}v}~~}}}}™Óæ÷þÿýõÙžvv}w}}pp}}}}}vppp|v}}wpvv}}pvvvv}}v}vvppvvppvvvpvpvpvvppooolopppppooppoololvolllpoolloollllllCllllllCCCloolCllllllCCClCloollCCCCCCCCçÿ×ZC{ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿúx!!!!!!!!!! !!!!!!!!!!! ! !!   !! ! ! ! ! !!! !!! !!!!!  !!=qªíþþþþýýþýýýþÿýýþþþþþþþÿþþÿþþþæÓ                                                                                                                   ÓÓüüüüüüüüüüüüüüüüÿÿÿþÿÿÿÿÿÿÿÿþÖ ‘~}~~~~~‘¡‘~~~~~~‘‘~~‘¡‘‘‘‘‘‘¡‘¡¡~¡¡‘‘Ÿ¡‘‘¡~¡¡‘¡~¡¡‘¡¡¡¡¡¢¡¡¡¡¢¢¡¡¡¡¢¡¡£¡¡¡¡¢¦¡¢¢¢¡¡£¦¢¡¢¢¢¡£¦¢¡¢££¢££££¢¢¢«¦££¦«êþÿÿÿÿÿ릣£££¢¦¦¦¦¦¢¦¦£££££££¦¦¢£¦£¦«¦¢«®««¦¢¦®¦¦¦¦¦¦«¦¦¦®¦««¦¦¦¦®¦¦¦«£¦££¦©£¦¦¦¦®¦¢£¦¦«¦¦££££¦¦¦¦¦¦¦¦¦¦¦¦£££¢¦¦¦¦£¢¡¢£¦¦£¢¢¦¦¦££íÿÿþÖ¢¢£¢¦¢¡¡¡¢¦¦¡¡¢£¡¡¢¢¢¡¡¡¡¡¡¢¡¡¢¢¢¡¡¡¡¡¢‘¡‘¡‘‘¡¡‘¡¡¡‘‘¢¢‘‘‘‘‘‘‘¡¢¢‘‘‘¡‘¡¡‘~‘‘‘~‘¡¡~~‘‘~‘~~~~~~~~~‘~‘}~‘~}~~~‘~}}}~}}~}~}}}}}}~~}}}™Úõÿþèž}}}}}}}}}}ÓàõýÿÿúæÓ™}vv|vp}}}wwv}v}}v}vpw}vvvvvvv}vpv}vvvvvvpvv|vppvvpoppvpvvvopvooopvopopoooopooooollpplloooolllllllllllllllClolClClllClllllCCouCCCCCCClC?ƒüý{CCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!@óÿÿÿÿÿ÷x!!!!! ! !!!!! ! !!! !!!!!!!!! !!   ! !  !! !q¥õýýýýþýþýýýýÿÿþþþþþþþþþþþþþþÿæÓ         !  !                                                                                          Ó×üüüüüüüüüüüþüüüþÿÿÿÿÿÿÿýÿÿÿþûÖ}‘€€~~‘‘~~~~~‘¡¡¡‘~~‘¡¡¡‘¡~‘¡¡¡¡‘~¡¢¡‘‘¡¡¡¢¢¡‘¡¢¡¢¡¡¢¢£¡¡¡¡££¡¢¡¡¡¡¡¢£¢££¢¡¡¡£¢¡¢¢¢¢¡¦¦¢¡¦¦£¡¢££¦£¢¦¦¡¡££Ýþÿÿÿÿÿꫦ¦¦¦££¦¦®¦¢¡¢¢¦££¦¦¦¦¦££¦£¦¦££®¦¦£¢¢¦®¦£¦©¦££££££¢££¦¦£¦¦£¢£¦¦¦££¦®¦£¦¦®®¦££££¦¦¦¦¦¦£¢¦¦¦¢¢¢¢¢£¢£¦¦£¢¡¡¢¢£¢££¢£¦¡¢¦¦¢¢¢Ôýÿÿ릥¡£¢¦¢¡¡¡¡¢¡¡¢¦¢‘¡¡¢¢¦¦¢¡¢¡¡‘¡¡‘¡¡¡¡¢¢¡¡‘‘‘¡¡¡¡¡¡‘~¡¥¢‘¡¢¡‘¡‘‘¡‘‘‘~‘~‘‘‘~‘‘~‘¡‘~~~~~‘‘~‘~}}}}~}‘¡}}~}~¡‘}~}~‘‘‘~}}}~‘~}}~~}žæýÿõÓ}~}}}}}Êèúÿÿýõמ}vw}}}}}}}}}ppvpvpp}}}}}}}vv}v}}}ppvvppppppvvvvppppppvopoppovvvoopvoooooopolopoopollvvollllovvuolllloloolllllllClllllCllllCllllCCCCCllllClèÿßuC{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Y÷ÿÿÿÿÿ÷_!!!!!!!!!!    ! ! !  !!! !!  !!     !!   ! !p¥íþþþþýþýýýþýÿýýþþþþþÿýÿþþþþÿýæÓ        !                                                                                 ÓÙüüüüüüüþüüüüüüüüÿÿÿÿþÿÿÿÿÿÿÿþÖ~~~~~~‘‘~~‘‘‘‘‘‘‘~‘‘~‘‘¡¡¡‘‘¡‘¡‘‘¡¡¡¡~¡¡‘¡¡¡¢¡¡¡¡¢¡¡‘‘¡¡¡¡¢¢¡¡¡£¡¡££¡¡‘¢£¢¢£¢¡¡¡¢¢¢¢¡¢£¡¡££¢££¦¢¡¢¦¦¢¢££¢¢¢£åþÿÿÿÿÿ릣¦¦¦¦£®¦¦¦¢¢££¦¦¦¦®¦££££¦¦¦®£¢¦¦¦¦£¢®®¦£¦®¦££££¦¦££¦¦®££¦¦¦£¦¦¦££¦®¦£¦¦«®¦££¢£¦¦¦¦¦¦£££¦¦£££££¢£¢£¦£££¢¢¢££¦¦£££¢¡¦¦¢¢£íÿÿý­¦¦¢¢¢¡¢¡¢¡¡£¢¡¢¢¢¡¡¡¡¢¢¢¦¢¡¢¡¡¡¡‘¡¢¢‘¢¡¡¡¡¡¡¡¡‘‘¡¡‘‘‘¢¡¡¡¢¡‘~‘¡‘¡‘~‘‘‘‘‘‘‘‘‘‘‘‘~~‘‘‘‘‘‘}~‘~‘~}~~‘~}~}~€‘}‘‘~~}}~‘‘}}}}‘~~~}}}}}}ÓõÿúÓ}}}}}˜àûÿÿúæÓ™}}v}}}}}}}}}}}}vp}}}ppv}}}pv}|vvpv}vpv}vopvpppvvvvvvvpvvplpppppvvpoppopoolooopoppooopolopolllopooplollulllolllllollllllCllClClllCCllClllClCCl”üþƒCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Bóÿÿÿÿÿ÷_!!!!!!!!! ! !!!! !!!!! ! !   ! !  ! !  !9q¥íýýýýþýýýýýýÿÿþþþþþþýþþþÿþþýÿèÓ                                                                                     ÓÓüüüüüüüüüüüþüüüþÿÿÿþÿÿÿÿÿÿÿÿúÖŽ~~~‘‘~~}}‘¡‘¡¡‘~~~‘‘¡¡‘‘‘‘‘~‘¡¡¡¢¡~¡¡¢‘‘¡¡‘¡¡¡¡¢¡¡‘¡‘¡¡¡¡¡‘‘¡¡¡¡£¡¡¡¡¢¡‘¡¢¢£¡¡¡¡¢£¢¡¢¢¢¡¡¡£¦¢¡££¢¡£¦£¡£¦£¢¢¢¢¢£¦êþÿÿÿÿÿꦢ¦¢£¦¦¦¢¢¢¡£¦¦®¦¦¦¦¦¡£¦«®®®¦¢¢¦¦®¦£¢£®¦¦£¦¦©¦¦®®¦£¦®¦¦¦¦¦¦¦££££££¦«¦£¦¦¦¦¢£¦¦¦££¦«®¦£¦£¢¦¦¦£¦¦££¢¡¦««¦£¦¦¢¢£¢¢¢£¢¡¡¦£¢ÖþÿÿÚ¢¡¦¢¢¡¡¢¡¢¡¡¢¡¡¡¢¢¢¢¡¡¡‘¢¢‘‘‘¡¡‘¡¡¡£¡¡¡‘‘‘¡¡¡¡¡¡¡¡¡‘¡¡‘¡‘‘‘¡‘‘¡¡‘‘‘‘‘¡¡¡‘¡¡‘‘¡¡¡¡‘‘¡‘‘‘‘~~~~‘~~~‘~~}‘‘‘~~}}~‘}~‘}}}}}~}~~}}}}}}}}}}}žõÿõ™p}}Úÿÿýæž}}wv}}}}}ppvvpp|}pp}}}}}vpwpvvvvvppvvvvv}vppvwvpppppv}ppv}opppppppooppolloooooovppoooooooollllloolllClovvolloolllloovolllllClllCllCCllllllCCCCCuèÿèuCzúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Z÷ÿÿÿÿÿ÷_!! !!!! !!!!!!! !!! ! !! !    ! !!!  !!  !   =qªíþþþþýþþýýþþÿýþþþþÿýÿþþþþþÿýÿàÓ                                                                                   Ó×üüüüüüüüþüüüþüüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ~~~‘‘~~~~~‘‘‘‘¡~}‘‘‘¡¡‘‘¡¡~‘¡‘¡¡¡‘~¡¡¢¡¡~‘¡¡¡¡‘¡¡¡£¡‘¡¡¡¡¡¡‘¡¡¡¡¢¢¡‘££¡¡¡¡£¦¡¡¡¡¡¡££¡¡¢£¡¡¢££¢¢¡¢¡¡¦¦£¡¢££¢¢¢££££åþÿÿÿÿÿ릢£££¦¦££££££¦¦¦¦££¦£¢£®®¦¦®«££¦¦¦¦£¢¦£«®¦£¦®¦¦««¦£¦¦¦©¦¦¦¦¦£££¦£¦¦¦£¢¦££££¦¦¦¦¦£¦¦«£¢£¦£¦¦¢£¦¦£££¢¦«¦¦¦¦£¢¢¢£¢¢¢¢¡¢¦¢¦öÿÿöª¢¡¢¢¡¡¢¢¢£¡¡¡¢¡¡¢¢¢¢¡¡¡‘¢¦¡‘‘¡¡¡¡‘¡¢¡¡¡¡‘¡¡¡¡¡¡‘‘¡‘‘¡¡¡‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘¡¡‘¡‘‘‘¡¡‘€‘‘‘‘‘‘~‘‘‘~}~‘‘‘~~‘~}}~‘€‘~}}}~¡}}~‘~}}~}~}}}}}}}}}}}}}ÓþýÓ}}}§üÿúÓ}wv}}p}}}}}}}vpv}p}}v}}}v}pv}v}vp|}vpvv|vv}pov|vvp}vppvvvpvvvvpovppvpopoopolovpppooooooooopoololloollllllopollllllllllvulCllCllollCCCClllloCCCllllƒüÿ›CCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!=Cóÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! ! !!!! ! !  !!! !! ! !!   =}¥õýýýýþýýþýýýÿÿþþþþþþþþÿþýÿýþþæÓ           !   !                                                                                Ó×üüüüüüüüüüüüüüüüÿÿÿÿÿÿþÿÿÿÿÿûÖŸ~~~~~‘¡~}~~~‘¡¡‘~~‘~~‘‘~~~~‘‘¡‘¡¡¡‘¡¡¡‘¡¢‘¡¡¡‘¡‘¡¡¡¡¡¡¡¡¢¢¡¡¦¦¡¡¡‘¡£¡¡¦¦¢¡¡¡¡¡¢£¢¢¢£¢¡¡¢¢¡¢¢¡¢££¡¡£¦¦¦¦¦¢Úþÿÿÿÿÿꥢ£¦££¦¦««££¦¦¦¦¦¡£¦¦¦¦®¦¢¡£¦£¦¦¦£¦¦¦¦££«¢¡£¦¦¦¦£¦££¦¦¦¦¦¦¦¦¦¦®®®«¦¦££¦¦££¦¦¦¦££££¦««¦¦¦¦¦¢¢£«£¢¢¡¢¦£¢¢££££¢¢££¢¡¢¢¦¢¡ÚÿÿÿÖ¦¢¦¦£¢¦¦¢¢¢¡¢¢¢¡¡¢¦¦¦¡¡¢¡¡¢‘¡¡¢¢¡¡‘¢¢¡¢¡‘¡¡¡¡¢¡‘‘¡¡¡¡‘‘‘‘¡¡¡‘‘¡~‘‘¡¡¡~~‘‘‘~~}‘~‘~‘‘~}‘‘~‘¡¡‘‘¡‘‘¡~}~‘‘~€‘~~}}}}~}}}~}}}}~}}}}}}}}}}}}}}}™íýÚ}}}Óÿÿæ}w}}}~~}pvp}}qvp|}}}}p}|vpppv}}ppppv}pppvvvpvvpv}vvv}}popopvvppvopvvvvvvppvvppvvvooovopvooopooovvolopooppollllouolltlllullClllllCCClolCCCCCClllCCCCCCßÿòt>uúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!9=Yóÿÿÿÿÿ÷_!!!!! !!!! !!  !  ! ! !!!!!!! ! !   !!!!!!!! !  !=}ªéýþþþýþþýýýýÿýýþþþþÿþþþþÿýþÿþæÓ                                                                            ÓÙüüüüþüüýüþüüþüüüÿÿÿþÿÿÿÿþÿÿÿþÖ~}~}~‘¡¡~~}~~‘‘‘‘‘‘~‘~‘‘~~¡‘~~‘‘~‘‘‘¡¢¡¡‘‘¡¡¡~‘¡¡‘¡¡¡‘¡¢¡‘¡¡¡¡¡¡¡¢¢¡¡¡¢¡‘¡¢¡¡¢¦¢¡¡¡¡¡¢¡¢¢¢£¢¢¢££¢¢¡¡¦¦¢¢¡¢££¦¦££Ýþÿÿÿÿÿ릡£¦£¢£««¦¦¢¦¦¦¦£¢£©¦¦¦¦££¢¦¦¦¦¦££¦¦¦¦¦£¢£¦£¦¦¦¦£¦¦£¦®¦¦¦£££¦®¦¦¦®¦¢¦¦«¦£¢¦®¦££¦¦¢£¦««¦¦¦£¢¢£¦¦¢£¢£££¢¢£££¦¢¢£¦£¡¡¡£¥¦øÿÿí¦¢¢£¦£¢£¢¡¡¡¢¢££‘‘¢¦¢£¡¡¢¢¡¡¡¡¡¢¢¢¡¡¡¡¡¡¡‘¡¡¡¡¡¡¡‘¡‘¡¡‘¡¡‘‘‘‘‘‘‘¡¢‘~‘‘¡‘~~~‘‘~~‘‘~~~‘¡‘~‘‘¡‘‘‘‘¡‘}~~‘‘~‘€~~~}~~}}~}}}}}~}~~}}}}}}}}}~}}}æþà}}}Óÿý×v}}v}‘}v}}}p}v}|wpw}}v}|}vpvv}}wpwvpvvvvvvpvvvpw}vpp}}povpvvvooppvvovvppvoppvvpvpooopoppoovoplovpooopolvvlllllopulllolllllClllClClllooCCCCllClllCCCCC{üÿCCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!=!!Bóÿÿÿÿÿ÷]!!!!!! !!!! !!!!!! !!!! ! !!!!  ! !!  !  !!   =s¥íþýýýþýýþþýþþÿÿýÿþþþþþÿþýÿþýÿèÓ                                                                                                 ÓÓüüüüüüüüüüüüüüþþÿÿÿÿÿÿÿÿÿÿÿÿúÖ Ž‘~‘~~‘~~~~~‘~~~‘‘¡¡‘~‘¡‘¡¡¡~‘¡¡¡¡¡¡‘¡¡‘¡¦¡‘¡¡¡‘¡¡¡¡¡¡¡‘¡¢¢¢¢¡¡¢¡‘‘¡¢¡¡£¢¡¡¡¡¡¡¦¢¢¡¡¡¢£¦£¢¢££¢¢£¡¡¦¦¦£¢¢¡¡£¦¦¦êþÿÿÿÿÿꦦ¦«¦¢¢£¢¦¦££¦¦£££¦®¦¦¦¢£££¦¦£¦£¢£¦®¦¦®«¦®®¦£¦¦¦£¢£¦¦¦£¦£¦¦¦¦¦¢£¦£¢¢«®¦¦¢¡¦®«¦«¦£¢¢¢¢£¢£££¦¢¢££¦¢¢¢££¢£¦¦¦¦££££¢¢¢¢£¦êÿÿý­«¦¡¡¢¢¡¡¡£¢¢£¢¢¢¡¡¢¢¡¢‘‘¡¢¢¡¡¡¡¢¢‘¡‘¡‘‘¡‘¡¡£¡¡‘‘¡‘‘¡¡¢¡‘¡¡‘‘‘‘¡‘~~¡‘~~‘¡¡¡‘¡‘~¡¡~~‘‘€‘‘‘‘}}~~}~~~}~}}~~~‘€~}}}}‘‘~}‘}}~~~}}~~}}}~}~}}}}~}‘Úÿà}}}Ùÿúž}}}}}~}p|}}}}}}}}}ppv}vvvp}}}}}vvv|vpv}|}vpp}pppvvoovpopvvvvovvvvvolopopplollpoppovvllloovopollolvooolllllllloolllCllllllluuollllllCllCClCCClCCCCCClClèÿ÷uCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Bòÿÿÿÿÿ÷_!!!!!!!!!!! !!! !!! !!!! !! ! !!!  !! ! ! !!  ! =w¥íýþþþýþþýýþþÿÿýýýþþþþÿýþÿýþÿýàÓ                                                                                      ÓÙüüüüüüýüýüüþüüüüÿÿÿþÿÿþÿÿÿÿÿþÖ ~~‘‘~}~~~~‘~~~¡~~~~‘‘~‘¡¡‘~‘‘‘¡¡‘‘¡¡‘¡¡¡~‘¡¡¥¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¢¢¢¢¢¡¡¡¡¡¡¢¢£¡¡¡‘¡¦¡¢¢¡¡¡¡¦¦¢£¢¡£¦¢¢¢£¡¡¢¦£¢¢£¡¡£¦¦¦êþÿÿÿÿÿ뫦¦¦¦¢££££¦¦£¢£¦£¦¦¦¦¦¦¢£££®¦££¦¦£¦¦¦¦®®®«¦¦£¦©¦£££££££¦¦¦¦¦«¦¢££¢¢£«®¦££¢£««£««¦¦£¢¢¢¢£¢¢££¢¢£¦¦££¢£¢¢¦¦¦¦¦¦£¢¢¦¢¡¦°ûÿÿꦫ¦¡¢¢¡¡¡¢£¢¢¦¢¡¡¡¢¡‘¢¢¡¡¡¢¢¢¡‘¡¢¡¡¡‘¡¡‘¡‘¡¢¡¡¡¡¡‘‘‘¡¡¡‘‘‘¡¡¡¡‘‘‘‘‘~‘¡‘‘¡¡‘~€¡‘~~‘‘‘‘€‘~~}~~~~~~}~}}‘‘}}~}~‘}~€~}~‘}~~~~}}}}~}~~}}}}~~}}}Óÿæ}}Ùÿõš}}}}}}}}}p}pv}}}}vv}}|v}pvp}}}}}pwvvppv|v}ppvvppvpppppopv|vvppvvvvoopvoopvolooovpopoloooooovopuooovoollollllllvlllCCllllllvolClllllCCCCllCCCllCCCCCCCCƒüÿÉCCÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉ!=!!Bóÿÿÿÿÿ÷_!!!!9!9!!! !!!  !  ! !!! ! !  !! !   !!   ! !=q¥íþýýýþýýþþýýþÿþþÿþÿþþýÿþýÿþýÿæÓ       !                                                                                           ÓÓüüüþüüüüüüþüüüþüÿÿþÿÿÿÿÿÿÿÿþûÖ‘‘~~~~~‘‘~‘‘¡¡‘‘‘~~‘‘‘‘¡¡‘‘¡¡¡‘¡‘‘~‘‘‘¡¡¡¡¡¡‘‘‘‘¡‘‘¢¡¡‘¡¡¡‘‘‘¡¡‘‘¡¢¢¢¡¡¡¡¡¡¦£¡¡¡¢¦¡¢¦¢¡¡¡£¦¡¢¢¡¡¡££¡¢¢£¢¡¡£¢¡¡Ýþÿÿÿÿÿꥦ¦¦¦£££¦£¢¦«£¦¦¦¦¦£¦¦¦¢£££®®£¢¦®£¢£¢£¦£¦¦£££¦£££¦¦¦¦¦¦££¦£¦«®«¦££¦¢¦«¢¢¦¦¦¦¢¢£¦««¦¦¦£££¦¢££££¢£¦«¦¦£¡¡¢¢¢¢¢£¢¢£¦¢¡¢ëÿÿø¦¢¢¡¡¡¢¢¢¦¢¢¡¡¦¢¡¡£¦¡¡££¢¡¢¢¡¢¢¡¢¢¡‘¡‘‘¡¡¡‘‘‘¡¡¡¡‘¢¡¡¡¡‘‘¡¡¡¡‘¡‘‘¡¡‘¡¡‘‘‘‘~‘¡‘~‘¡‘~‘‘~‘~~}~‘‘‘~~‘‘‘}~~~‘‘}~}~‘~~}}}}~€‘~}}}}}}}~€‘}}}}}}}}}}Óÿæ}}àÿõ™}}vp}}}}}}}}}}}p}qv}}v}p}p}}}ppp}}}}v|vvvppv}popvvvvvppovvvvooolpvpovvvppvvvvpovvpllovoollloolollooloollllooovvllllouolllllllllolCCllllClllCllCClllCCCCßÿúyCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!! !!!!!! ! !  !!!!!!!!!!! ! ! ! !!! ! ! !!!! !!  ! !  =}ªõýþþþýþþýýþþÿÿýþþþþþÿýÿýÿýþÿýæÓ                                                                            ÓÙüüüüþüüþüüüüþüüüÿÿÿÿÿþÿÿþÿÿÿýÖŸ¡‘‘~}~‘€~~‘‘‘‘‘‘~‘‘¡¡~‘€‘‘‘~¡¡¡‘‘‘~‘¡¡‘¡¡¡€‘¡¡¡¡‘¡‘‘£¡‘¡¡¡~‘¡¡¡¡¡¡¡¡¢¡¢¢¡¢¡¡£¢¡¡¢¢£¡¢¢¢¢¡¡¢£¢¢¢¢¢¡¢¡¡¢¢¢¡¢¢££¡¢Ýþÿÿÿÿÿꦦ¦£¦¦£¢¦¦¢¦¦¦¦¦¦¦£¢£££¦£¦¦®®¢¢¦¦¦£¢¢¦«¢¦£¢¦¦£¢¢£¦¦«««¦¢£¦¢£«¦®«¢£«££¦¢¢£«¦£££££¦¦£¦¦£££¦¦£¢££¢¢£¦¦¦£¢¢££¢¡¢¢¢¢¢¦¢¢­ûÿÿû§¢¢¡¡¢¢¡¢£¢£¡¢¡¡¡¢¦¦¢¢¢¥¢¡¢¢¡¢¡‘¢¡¡¡¡¡¡¢¡‘¡¡‘¡¡¡¡¡¡¡¡¡¡‘¡‘‘‘‘‘¡‘‘€‘‘‘¡¡¡¡‘~‘‘‘~‘¡‘~‘‘~~~~~}~¡¡‘~‘‘~~~‘~‘‘~~‘}}‘‘‘‘€~~~~}~}}~}}}}}}}}~}}}}}}}}}}Óÿè}}‘àÿõ}}}}p}}}}}}}}}vv|}v|}vv}}}vvvvvvp}|}}vvpppvv}vpp|vpvppvpppvpoopopvpov}popvvvvpplvvolovvlloooooooloooooolllvulupllllootllllllloolCCllClCCloCllCClluCCCCC{ýÿÎCC›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Aóÿÿÿÿÿ÷_!!!! !!!! ! !!! !! !!!! !!! !  !! !!   !=}ªíþýýýþýýþþýþþÿýÿþþþþýÿýþýÿþýÿæÓ                                                              ÓÓüüüüüüüüüüþüýüþþÿÿÿÿþÿÿÿÿÿÿÿûÖ ‘~~}~~~~~}~‘~‘‘‘‘‘‘‘‘¡‘‘~~‘‘‘~¡‘‘‘‘¡¡¡¡‘~¡¡~¡¡¡¢¡¡¡~¡¢¡¡‘¢£‘¡¢¡¡¢¦¢¡‘¡¡¡¡¡¡¡¡££¡¡¢¢¡¡¢¡¡¡¡¡¡¢¢¢¢¢¢¢¢¡¢¦¦££¦¦¦£¢¢êþÿÿÿÿÿꫦ¢¡¡¦¦¢¢¦¦££¦¦¦¦¦£¡¢£¢£¦££¦®¦£®®«¦®¦¦«££¦£¦®¦£¦«¦¦¦¦££««««£¦£««££«®««£¦«¦¦£££¢¡£¦¦¦¢¢£¢¢¦£¡£«¦¢¢¢¢¦¦£¦¦¦¡¢¢¢¡¢££¢¡­ûÿÿÿíÔ«£££¦¦¦¢¡¢¡¡¡¡¢¡£¢‘¡¡¡‘‘¢¢¡¡¡‘¡‘¡¢¡¢¢¢¢¡¡¡‘‘‘¡¡¡‘¡¡‘¡‘‘‘‘¡¡‘‘‘‘‘‘¡¡‘‘¡‘‘‘¡¡‘‘~‘‘‘~‘‘‘‘‘‘‘‘‘‘~~‘€€~~~‘‘‘}}‘‘}}}}}~}}‘‘~~}}}~‘~}}}}~}}}}}}}}}}‘Óÿõ~}™æÿè}}}p}}}wvppvp}}vvv}}}v}}}ppv|v}pppvv}vvvpvppvvvv}vpppvvvvppvppvpvpvpovllooopooollpvov}vllvpopvpooooollvoooolCloollllllllllClulllCCllClCCClCCCllCClClClCCáÿý{CCóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Yóÿÿÿÿÿ÷x!!!!!!!!!!!!! !!!!!  !!!! !!!!!!! !!     ! ! !!   ! !!!!!!   $qšíþþþþýþþýýþþÿÿýþþþÿþÿýþÿþþþÿýæÓ         !  !                                                              Ó×þüüýüþüþüüüüüüüüÿþÿÿÿÿÿÿþÿÿÿýÖ ~}}~~~}~‘‘‘‘‘‘~~‘‘¡¡‘¡‘‘€¡¡‘~~‘‘~‘‘‘¡¢¡‘~‘‘‘‘‘‘¢¥¡¡¡‘‘¡¡‘¡¡¡¡‘¦¢¡¢¥¢¡‘¡¡¡¡¡¡¡¢¢£¡¡¢¡¡¢¢¢¡¡¡¡¡£¢¢¢¢¢¢¢¡¡¦¦¢¢¦¦££¡£åþÿÿÿÿÿ뫦¢£¡£¦¢¢££££¢¦¦¦££¢¢¢¢£££¦¦«¦«¦¦®®¦¦£¦£¦¦£«®£««££¦«¦££«««®«££££££¦«¦¦¦««£££¢£¢¢¢££¦£££¢¢¢£¢£¦¦¢¡¦¦¢¢¦¦¦¢¡¢£¢¢¢¢¢¢¡¢êÿÿÿÿûݦ¦¦¦£¢¢¢¢‘‘¡¡¢¢¡¡‘¡¡¡‘¡¡¡¡¡¡¡‘¡¡¢¢¢¢¢¢¡¢¢¡‘¡¢¡‘‘¡‘‘¡‘‘‘‘¡¡¡~‘‘‘¡¡¡‘‘‘¡‘‘¡¡‘€‘~‘~~€€‘¡‘‘‘¡‘~}‘‘~~~}~~‘‘~‘~}}}}}}~~}}‘‘}}}}}}‘€~~}}}}}}}}}}w}‘×ÿõ~}æÿè}}p}}v}}}}vvs}}}wpp|v}}p}}||v}pvvvvp|}|pppvvpv}pv|vpvvvvvvppvvo}wplvvppolopplpoooolvov}volvvolppooolovllooolllloullClllClClllllCCllCCllCCllllClCCCCllCllC{þÿáC>›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_$!!!!!!!!!!!!!  !! !!!!!! !!!!      !    !  !9p¥íþýýýþýýþþýþþÿþþýÿýþýÿþýÿþÿýÿæÓ                                                             ÓÓüüüüüüüüüüþüþüþüÿÿÿÿþÿÿþÿÿÿÿúÖ}}‘¡~‘‘~~‘‘‘€~~~~~~~‘‘‘‘~‘‘¡¡‘‘¡¡‘‘‘‘¡¡‘¡¡¡¡¡‘¡£¡¡‘‘¡£¢¡¡¡¡‘¡¦¡‘¡¡¡¢¡¢¡¡¡¢¢¡¡¡¢¢¡¡¡¢¢¢¦£¢¢¡¢¦¦£¢¡££¢¡£¦¦£¢¦¢¢¢¢¡Ýþÿÿÿÿÿꦥ££¢¢¡¢££££¢¢¢£££¦££££¦¦¦¢£££¦¢¢¢££®««¦£¢¢£¦«®£¡¦¦££¦¦£¢¢¦¦¢£¢¢££££¦¦££¢¢£¦¦¦£££«®¦£££¢£¦¦££¦¦¢¢¦£¡¡£¢¢¦¦£¦¦££¢£££¢­íÿÿÿÿýꥡ¢¦¢¢¢¢¡¡¢¢£¡¡¢¢¡¡££¡‘¡¡¡¡¢¢¡‘¡¡¢¡‘‘‘¡¢¡‘‘¡‘¡¡¡¡¡‘¡¡‘¡¡‘¡¡¡‘¡¡‘¡€‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘~~‘‘‘~~‘}}¡‘~~‘‘€~}~}}}~‘‘‘‘‘~}~}}~}}~}~}~~}}}}}~}}}}}}}‘Ùÿõ}wèÿè~}}}}}}}}|p}}|}}v}}}}vvvvv}}}}vv|v|vv}vvv|}vv}vppvvvpvvvvpvvpppv}povvvvvvvvoloppvvpollpollvplllloooovolllllolllllllllollCllllllCCuollllCClCClCCCCCCCCCCCClèÿÿƒClòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷]!!!!!!!! !!!! !! !!  !  !!  !!    ! ! !   !  ! !=}ªíþþþþýþþýýþþÿÿýþÿýþÿýÿýÿýþþÿýæÓ                                          Ó×üüýüþüüþüüýýüýüüÿÿÿÿÿÿÿÿÿÿÿÿûÖ}}‘‘~~‘€‘‘~~‘~}~‘‘~}}‘¡‘‘‘€¡¡¡‘¡¡~‘‘‘‘¡‘¡£¢¢‘~‘¢¡¡‘¡¡¡¢¢¢¡¡‘¡¢¡‘¡¡¢¡¡¦¡¡¡¢¢¡¡¡¢¢¡¡¡£¢¡¡£¢¢¢¡¢£¢¡¡¢¢¢£¦¦£¦¦¢¢¢¢¡¢Ýþÿÿÿÿÿ릣£¢£¡¡¢¢¢¢¢¢£¢¡¢¦¦¦££¦¢¦¦££££¦£¢¢¡¦®¦«®¢¢¢¢¦¦¦£¡¦®££«¢¢££¢¢££££££££¦«£¢£¢£¦¦«¦££¦«¦¢¢£¦¦¦£¢£¦¦££¦¢¢¢¡¢£¦¦£¦£¦¦¦¦£££¢¦êÿÿÿÿÿõ§¦£¡¢£¢¡¡¢¢¢¡‘¢¦¢¡¢£¡¡‘¡¡¡¢¢¡‘‘¡¢‘‘¡¡¡¡¡¡‘‘¡¡‘¡¡‘‘‘¡¡¡‘‘¢¡‘¡‘¡‘‘¡¡‘‘¡¡‘€‘‘‘‘‘~~}‘‘~}‘‘}}~‘}~‘‘}}}~}~}‘‘‘‘~‘‘}€‘}}}~~}~‘}}~}}}}}}}}}}}}}‘Ùÿò}vèÿæ}}}}p}}}}}pv}}v}}}}}vv}v|v}}vpv|v}vp|vvvv}}pv}|ppvvppvvvpvpvvvvv}pppvvvvvvvooooovvpplloollooolooooooolloollolllllolCllllllllCllCCulCClCllCCllCCCCCCACllCCC{ÿÿòCC˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_ !=!!!  !!! !! !   ! ! !!  ! ! !   ! ! !!    !  !  !9ŽªõþþýýþýýþþýþþÿþþýÿþþþþþýÿþÿýÿèÓ          !                                                   Ó×üüüýüüüüüþüüýüýþÿÿþÿþÿÿÿÿþÿÿúÖŽ}~‘‘}~~‘‘~‘¡‘~~‘‘‘‘‘‘~‘‘‘‘‘‘¡‘‘~‘¡‘¡¡¡~~¡¡‘¡‘~¡¡‘‘¡¡¡‘‘‘¡¡‘‘¡¡¡¡¡¡‘¡¡£¦¡¡¡¢¡¡¡¢¡¢¡¡¡££¡¡¡¢¦¦¦¢¢£¢¡¡¡¢¢¢¢¦¦¢¢¢¢£¢åþÿÿÿÿÿꦣ££££¦¦¦£¦¦¦¦¦¢£¦¦¦¦««¢¢¦¦¦¦££¢£¦¢¦«¢£¢¢¦¦««¦®¦¢¢®¦£¦¢£®«£¦««¦¦£££¢£¦¢¢¦¦¦¦¦¦£¦¦¢£¢£¢¢¦¦£¢¢¢¢¢¢¢¢£¦¦£¢£¦¡¢¡¡¢£¢¢¡¡¢¢¡¥àþÿÿÿÿøÜ¢¡¡¡¡¡¢¢¡¡¡¢¡¦¦¡‘¡¡¡¡¢¡¡¡¡¡¡‘¡¦¡¡¡¡¢¡¡¡‘‘¡¡‘‘¡¡¡¡¡¡‘‘¡‘‘‘‘¡¡¡‘~‘‘~~‘‘‘~‘‘‘‘‘‘‘¡‘~‘‘‘~‘‘~}‘‘‘‘‘~~}~‘‘~‘}}}}}~}~}~~}}}‘~}}}}}€~}}}}}}Ùÿõ}}™õþà}}}}v|}}}}w}‘}|vvp}vpvv|}}}}vv|}vvvpv}|vv}vov}vpvvvpv}vpvvvvvvvppoovopopvpvvppvvvoloooppovopoooooolollvllllulloololllllllllClllCClllCClltlCllCCCCCCCCClCCCCñÿÿÆCtòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ$==9@÷ÿÿÿÿÿ÷_!!!!!! !!!!!!!!!!! !!! !!!!!! ! !  ! ! !!!  !  !q¥íþþþþýþþýýþþÿÿýÿýÿýÿþÿþÿýþþÿýàÓ                                                 ÓÙüýüüüüþüýüýüýüüüÿÿÿÿÿÿþÿÿÿÿÿûÕ~}~‘‘~}~€‘‘~~‘~~€‘‘¡‘~‘~‘‘€¡‘‘‘‘‘‘~~‘¡‘‘¡¡~~€‘‘‘¡‘‘‘~¡¢¡¡‘‘¡‘‘¡¡¡£¢¡‘‘¢¡££¡¢¦¡¡¡¡¢¡¡¡¡¦¢¡¡¡¢¢¢¦¦££¢¡¡¢£¡¢£¥¦£¢¢£££Ýþÿÿÿÿÿꥦ¢¢¢£¦®¦¢¦«¦¦¦££«¦£¦®«¢¢£¦¦¢¦¦£¦«¢££¢¢¢¦«£«£¦««¦¢¦£££¢¦±®¦«««¦«£££¢£££¦¦¦££££¦¦¦¢£¦£¢¢¢¦£¢¡¡¡¢££¢££¦¦¢££¢¡¢¡¢£¢¡¡¢¡¡¡¡¥Ýýÿÿÿÿýঢ¡¡‘¡£¡¡¡¡¢¥¢¡¡¡¡¢¢¦¡¡‘¡¡¢¡¡¡‘‘¡¡¡¡¡¡¡¡¡‘‘‘‘¡¡‘¡¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘}~‘‘~€‘~¡‘‘‘‘‘~~‘¡‘‘‘€‘}}‘‘~‘‘}~‘}~‘}~~}}~~}}}~}}}‘‘}}}}}}}}~}}}}àÿõ~~šõþÚ}}}}}}}}v}}~}}v}vvv}||vv}}|vvv|vvvvvw}}vvvvpv}vop}vvvvvppvvpppoppppvvppooovvpvvvvplpolooopoovvlloolloovoClllllovlluluoououllCClCClllCCCloCCllCCCCCllCCCACCCƒÿÿúxC›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!@óÿÿÿÿÿ÷_!!!! !!!!!!!!!! !!!9!!! ! !   ! ! ! ! !! !   =p¥õþþþýþýýþþýþþÿþýÿýþþþþýÿþÿþþÿèÓ                                                                  ÓÓüüüþüþüüüþüüýüþüÿÿÿþÿþÿÿÿÿþÿûÖŽ}‘~~~~~‘~~‘‘‘‘‘‘~~~~‘‘‘~‘€‘‘‘‘‘‘¡¡‘¡¡¡¡¡¡¡¡¡¢¡‘‘‘¡¢¡¡¡‘¡¡¡‘‘‘¢¡‘¡¢¡¡¡¡‘¢¦¡¡¡‘¡¦¢¡¡¡¡¡¡¦£¢¢¡¡¡¢¢¢¡¡¡¢££¡¡¡¢£¦¦¦êþÿÿÿÿÿꫦ¢¢£¢¦¦¦¢¢¦¦¡¢¢¢¦£¢£«¦¢£¦¦¢£®«¦£¢£¦¦¦¦£«¢¢£¢£££¦¦«¦£¦££®¦¢££¦£¦£¢£¢¦«¦££¦¦££££¦¢¡¦®¦¦££¢£££££¢«¦¦£¢¢¢£¦¦¢¡¢£¦¦££¦¦¡¢¢££¥Ôöÿÿÿÿþö­¡¢¡¡£¢¡¢¢¡¡££¡¢¡¡¡¡¢¢¡¡¡¡¡¡¡¡¡¡¦¡¢¢¢¡¡¡‘‘¡‘¡¢¡¡‘‘¡¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘}~‘‘}}‘€~~‘‘~‘€~}~~‘}}}~}}}}}‘~€~}}}}}}~~}}}}}}}}~}}}àÿô}}™õýÓv|vp}|}}vvvv}}}|vp}|}|vv}vvv}|vv||v|vvpv|vvpvvvpv}vvvpvvp}}ppvppvoopvoopoppllovpoollopvvoolopplopplllolllllllluplllCllllClllllCllllClllClCCllClllCCCCCCClCAlèÿÿßCl÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9=!!Yõÿÿÿÿÿ÷_!!!!!!!! ! !!!!!!! ! !!! !!  !! !  !!   ! ! !!!! !    ! !=}ªíþþþþýþþýýþþÿÿýþþþÿþÿþÿýÿýÿþþæÓ                                                ÓÙüüüüüüüþüýüýýüüüÿÿÿÿÿÿÿþÿÿÿÿþÖ~€~~}‘~~~}}~¡¡‘‘‘‘‘‘~~~‘‘‘‘~‘‘‘‘¡‘~¢¡‘‘‘¡¡¡¡¡¡‘¡¦¡€¡¢¡¡‘¢¢‘¡¢¢¡‘‘‘¡¡¡¢¢¡‘¡‘¡¡¡¡¡¡¡¡¦¦¢¡¡¡¡£¦£¦¢¡¡££¢¢¡¡¡¡¡¡¡¢¢¡¢¢¦¦åþÿÿÿÿÿ뫦¢¢££¦«¦¢¢¦¦¢¡¢¢£¦££¦££¦¦¦¢£«®£¡£¦¦¦®®££¢¡£¢¢¦££«¦££¦¦««¦¡¢¢££¦¦££££¦¦££¦¦£££££££¦¦¦£¦¢¢£¢£¦¢¢¦«¦£¢¢¡£¦¦££¢££¦«¦¦¢¢££££¢¡­êþÿÿÿÿûড¢¡¢¡¡¦¢¡¢¢¢¦¦¡‘¡¢¦¡¡¡¡¡‘‘¡¢¥¦¡¢¦¡¢¢¡‘¡¡¡¡¡¡¡¡‘¡¡‘‘‘¡¡‘~~‘‘‘‘‘~‘¢¡‘‘~~‘‘¡‘‘~~~‘‘~}~‘~‘‘¡‘‘~~~€~~}‘}}}~}}}~‘€}~~}}}}}}€}~}}}~}}}~vàÿò|vš÷ýÇvv|vp}}}vrpvvv}}vvv}}}|pppvv}}vvvv}}}vpv}vvvv|v|}vvvvvvvvvvvvpvpppoppopopvlolopopooollvvvolloolouvolllolloulllllllCCCllClllloClCllCllCCCCClttltlClCCCCCCCCCC”ÿÿÿ›CÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Zóÿÿÿÿÿ÷]!!!!99!! ! ! !! !!!!!! !! !!   !  ! !!  ! ! ! !! !=}ªõþþþþþýýþþýýÿþÿýÿþþþþþýÿþýÿþÿæÓ  !     !                                         Ó×üüþüüþüýüüýüüýþþÿÿÿþÿþÿÿÿÿÿÿúÖ ~€~‘‘‘‘‘‘~~‘~‘‘}~‘‘¡¡¡¡‘~~‘‘‘¡‘‘¡‘‘‘~‘¡¡¡¡‘¡¡‘¡¦¡~¡¢¡¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¡¢¡¡¡¡¢¢¡£¢¡¡¦¢¡¡¡¡£££¦£¢¢¢£¢£¦åþÿÿÿÿÿꦦ¦£££¢¢¢¢£¦££¦¦¦¦£¢¢¦¦££¦¦¢¢¦¦¢¢¦«£¢«®¦¦¦¢££¦«£¢££¦££¦£££¢£¦¦¢¢£££¦¦££¢£¦¢¢£££¦£¢¢££¢¢¢£«¦£¢¢£¦££££¢¡¡¢¢¢¢¢¢¢¡¢¢¢¢¦¦¢¢¡¡¡¡¢­õÿÿÿÿþö­¦¡¢‘¡¢¢¡¡¡‘¢¦¡¡¡¡¡¡¡¡¡¦¡¡¡¡¡¡¡¡¡‘‘¡¡‘‘¢¢‘¡‘‘‘‘¡‘¡¡¡‘‘‘‘‘¡¡¡¡‘~‘¡‘‘‘‘‘‘‘€~~~~€‘~‘‘€~}~}‘‘}}‘‘€‘€‘}}~‘~‘~}}‘~}}‘‘}~‘}}}}}}}}}‘}|}€}èÿõ}}žúû§|}}}}}}}}}v}}}}}v|}v}}v}v|}}}vvp|vv}vp|vvppvpvvvvopvvpvvvplvvpvopppvvvvvvooploppvppollplllooppllooooooloolloolloollllvlCloltlollllltlltllCCllCCCCCCllltlCCACC÷ÿÿõZlýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!!Bóÿÿÿÿÿ÷_!!!!!=!!!!!!!! !!!! !  ! ! !! !  !     !! !! ! !qªíþþþþþþþýýþþÿÿýÿýþþÿþÿþÿýÿþþþæÓ       !                                   ÓÙüüüüüýüýüýüþüüüüÿÿÿÿÿÿþÿþÿÿÿûÖ¢‘~}‘¡¡‘‘‘‘‘‘‘~~~‘‘~~~‘¡¢¡‘‘‘‘‘‘~¡¡~~~~‘‘‘‘‘‘‘¡‘‘¡¡‘‘¡¦‘‘¢‘‘¡¢¡¡¢¢¡¡¡¡‘¡¢¡¡¡¢¡¡¢£¡¡¡¡¡¡¢¡¡¡¢¡¡¡¡¡¢¦¢¡¡¡¢£¦¦¦£¢¢¦¦¦££êþÿÿÿÿÿ榦¦¢¦¦£¢¢¢¦¦£¦¦¦¦«¦¢¢«®¦£££¢¢£¦£¢£«£¢««¦£«¦£¦¦¢£¢££¦¦£¢¢¢¢£¦¦£¢¢¢¢£®«¦£¢¢¡¢£¦££££¢¢¢£¢¢¡£««¦¢¡¦«£¢¢¢¢¡¡¡¡¢¢¢¢¡¡¡¡¡¡¦£¢¡¡¡¡¡¢¡¦êþÿÿÿÿûꦡ¡¡¡¢¡‘‘‘¡¡¡¢¡‘¡¡¢¡‘¡¢¢¡‘‘¡¡‘‘‘‘¡‘‘‘¡¦‘‘‘‘‘‘¡¡¥¢¡‘‘‘‘‘‘¡‘‘‘‘‘~~‘¡¡‘‘~~}~€~~‘‘‘~~}}~}}}}‘‘‘~~~~~}}‘~‘}}}~}}‘€}‘‘}}|v}}|}}‘}}}}}‘èÿñ}}§ûúž}}~}~~}}}}vv}}}}|}vvv}v}vvv}vv|}}vvvpv}|pppppvpvpopvppvvvplopopopvvvvpvppovpooovvvlllollllvollolovlouvullolluolllllllvvlllooouuCCluoullltlCCCCllCCClultCCCCCCÿÿÿÌCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!==!Cóÿÿÿÿÿ÷]!!!!!!!!!! !! !! !!   ! !!!! ! ! !!    ! !  !q¥íþþþþþþýþþýýþÿþþþÿþþþýÿþþÿþÿÿæÓ        !                                           Ó×üüþüþüýüþüýýüþüþÿÿýÿþÿÿÿÿÿÿþýÖŸ‘Ž}~€~~~~~‘‘‘‘‘‘~‘‘~‘¡‘‘‘‘~‘‘‘¡~~¡‘‘‘‘‘¡¡¡‘‘¡‘¡‘‘‘‘‘¡¡¡~¡¢¡~¡‘¡¡¡¡¢‘‘¡‘£¦‘¡¡¡¡¡¢£¡¡¦£¡¡¢¡¢£¢¡¢¢¢¡¢¦¢¡¢¢¡¢¢££¡¢¢¡¦¢¢¡Úþÿÿÿÿÿꫦ¥¢£¦£¦¢¢¢¢£¦£¢£¦£¡¢«¦¢¢¢£££¦¦££¦®£¢£¦£¢¦«¦®¦¢¦££¦¦«£¢¢£¦¦¦£¦¦£¢£¦¦££££££¦¦££¦¦£¢¢¢££££¦®«¦£¡¢¦£¡¢¦¦¢¢££££¢¢£¦¢¡¢¢¢¢¢¦¢¡¢¢¡¡¡¥Üöÿÿÿÿþí¨¢¦¡¡¡¡£¡¡¡¡¢¡‘¡‘¡¡¡¡¡¦¡‘‘¡¡‘‘¡¡¡¡¡¡¢¡‘‘‘‘¡¡‘‘¡¡‘~‘‘¡‘‘¡‘‘‘‘‘‘}‘¡‘~~‘‘‘‘‘‘~‘‘}~~~‘‘}~~~‘‘~~~}}¡‘}}}}‘‘}~‘‘}}}}‘€}}}~~}}}}}}}}}}™èÿè|}žúú¥}}}}}}v}}|}|}}}v}|v|}}}v||}}vpv}vpv}vpvvvvvvv|vpvvvvvpppppvvpvvpoppvvpopovvvlvpoooovvovolvvvlllovolllllluulllluullltoolClllllllCCtlClClCllllllCCCCCllCllCCCCluúÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@!!Yóÿÿÿÿÿ÷_!9!!!!!!!!!!!! !!! !!!! !!!! !!  !!  !!     !  ! !=q¥õþþþþþþþýýþþÿÿýÿþþÿþÿýÿþþÿþþþæÓ      !                                Ó×þüüüüýüüýüýüüþüüÿÿÿÿÿþÿÿþÿÿÿûÕ~}}}}}}}‘‘‘¡‘‘‘~‘‘¡‘‘‘~‘‘‘~‘‘‘~~‘‘‘¡‘~¢¡¡‘~~‘¡¡¡¡~‘¡¡¡¢¡‘¡¡‘¡¡¡‘¢¡‘‘‘¡¡‘¡¡¡¡¡¢¢¢¢¦¦¢¢£¦¢¡¡¡¢¢¡¡¡¢¢¢¢£¢¡¡¡¡¢¢¢¡¡¡¡¢Ýþÿÿÿÿÿ릦£££¢¦¦¢¢¢¦¦£¢¢£¦¢¢£¦¢¡¢¢£®¦¢¢¦¦¦££££¢££¢£«®£¦¦£££¦¦¢£¦£££££¦¦££¦¦¢¢£¢£¦£¦«¦¦¦¦¦£¢¢¢£¦««««¢¢¡¡¢¢¢¢£¦£¢¦¦£¢¢¢¢¦£¢¦¦¢¡¡¡¦¦£¢¡¡¡¢¦­êþÿÿÿÿûꦡ¡¡¦¦¡‘‘‘¡‘¡¡‘‘¡¡‘¡¢£‘‘¡‘‘¡¡¡¡£¢¡¡¡‘¡‘‘¡¡‘~‘‘~~~‘‘¡¡¡¡‘€‘‘¡‘~~‘‘}~~‘‘‘‘¡‘€‘‘~}‘€‘‘}‘‘}~‘~~}}}‘‘}}}}€‘€€‘‘€}}}~}}‘‘‘}}}}}}}}~}}‘èÿèv|žý÷™}}vv}vv|}}v}}||}}}vv}}}}vv}}vvvwvvvvvppvvvvv|}vpvvppvvpoppvvpvvvolopvoplovvppvoopvvvpoovppvvlllloolollllollllvvollooolllCCClCltClCCCCCCllltCllCltoClCCCCCCCCCCÇÿÿÿüñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$!!@óÿÿÿÿÿ÷x!!!!!!!!!!!!!!!  !! ! !  ! ! ! ! !!!! !!!!!!!!  !!!  =q¥íþþþþþþþþþýþþÿþþýÿþþþþÿþþÿþÿÿæ×                                           ÓÓüüþüþüýüýýüþüþüþÿÿþÿÿþÿÿÿÿÿÿúÖ}~~~~‘~€‘‘~~~}‘‘‘‘~~‘‘‘~‘‘‘‘‘¡¡‘~‘¢¡¡¡‘‘¡¡‘‘¡¡‘¡‘‘‘¡¡¡¡¡‘¡¡¡‘¡¡¢¡¡¢¡¡¡¡¢¡¢¡¡¡¡¡¡¡¡¡¢¢¡¡¡¢¢¢¢¢¢¡¡¡££¢¢¢¢£¦¢¢¢¢¦£åþÿÿÿÿÿꦥ££¢¡¢££¢£¦£¢¢¢¢£££££¦¦£¢¢¦«¢¢£££¢¦«£££¦£¢£¦¦«¦¢£££¦¦««¢££££¦¢¢¦££¦¦¦£¢££¦¦¢¢£¢£¦£¢¢¢£¦£¦¥¢££¢¢£¦¦¥£¡¢«¦¡¢¦¥¦¦¡¡£¦¢¢¥¡¢«¢¡¢¢¢¢¢¢¥Ôöÿÿÿÿþõ¦¡¡¡¡¢¡¡¡¡¡¡¡‘¡¥¡¡¡‘¡‘¡£¡‘¡¡¡‘¡‘¡¡¡‘¡~~¡¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘~‘‘‘~‘~~‘‘‘‘¡‘~€}~~‘‘‘~~}~‘‘}‘~}€‘}}~‘~}}~}~}‘~}‘}}}}}€}}}~}}}}}}}ñÿè}}žýõ™}w}}}}v}}}|v}|}}}}vv|v|vv||vv|}}p|v|vvvvv}vvvvvpvvvvvvvpvppppvvpvppooppplpvppolovpoolvvvlvlllluouoololuolluluollllllllltlCltlllllCClClllCtlCCCCClClCCCAClCAClCuþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Y÷ÿÿÿÿÿ÷_!!!!! !! !!!!!  ! !!!!! ! !!!  !    !  !!!!!  !   =}ªõþþþþþþþþýþþÿÿþÿþÿýÿþÿýþþÿþþýæÓ       !                                        ÓÙüüüýüþüüýüýüýýüüÿÿÿÿÿÿÿþÿþÿÿýÖ }}}}~}~~~~~}‘‘~}~‘‘~~¡¡‘‘‘‘‘‘¡¡‘‘‘¡¥¢¡¡¡¡¡‘‘~¡¡¡¡‘‘¡¡¡‘‘¡¡¡¡¦¢¡¢¢¡¡¢¡¡¢¡‘¡¡¡¡‘‘¡¡¢£¢¡¢¢£¦£¢¡¡¡¢¦¢¢¦¦£¢¢¢£¦¦¦Ýþÿÿÿÿÿë«£¢¡¡¡¢¢¢¢¢¦£¢¢¡¢¢£««¦«¦£¦¦££¢¦££¢¢¦¦¦¦£¢¢¡¡£«¦¢¢««¦«®«¢£¦££««¦£¦¢£¦««£¦¦¦¦¦¢£¢¡¡¢¦¢¢¢¦¢¢¢¢¢¦£¢£¦£££¡¡¢¦¢¡¦¦£¦£¡¡¢«¦¦¦¢¡¢¡¡£¦¦¢¡¦¦¡¥êÿÿÿÿÿûÚ¡‘¡¥£££¡¢¢¡‘¢¦¢¡‘‘‘‘¡¢¡‘‘¡¢‘‘¡‘‘¡‘~~~‘¡¡¡‘¡‘‘¡‘‘~‘‘}~~~~‘‘‘‘‘~‘¡‘~}~~€‘~}}}~€¡¡‘}}€‘‘}‘‘‘~}}}}‘‘~}}‘}}}‘‘‘}}v}}}}}}}}}v}}||˜èÿë}}§þ÷‘}}}}}}vvv}}v}}}v}}|vvvvv}|vvvvvvv}}|vv}}|vvvpvvvvv|vvvv}vvopvvvvpvoploooolooppooluvvovvouooululllvuouuolulloollllCllllllullvulCCClCCltCllllClCClCCCCCCCCtCCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ==!=$Bóÿÿÿÿÿ÷_!!9!!! !  !!! !!!!!!! !!!!!!  !! ! !  ! !!!!!!! !  !!  ! =}ªíþþþþþþþþþýþþÿþþþýÿýÿýÿÿþÿþÿÿæÓ       !                                      ÓÓüþüýüüýýýüþüþüýþÿÿþÿþÿÿÿÿÿÿþûÖ~~~~‘‘‘‘€‘‘€~}¡‘}~‘€~‘‘‘‘‘~‘‘¡‘‘‘‘‘¡‘¡¡‘¡‘¡~‘¡‘¡¡¡~¡¡‘¡¡¡¡¡¡¡¡‘£¡¡¡¡¡¡‘¢¡¢¦‘‘¡¢¡¡¡¡¡¢¢£¢¡¡¡¡¢¢¢¢¡¢¦¢¡¢¦¦¡¡££¢¢¢¢Úþÿÿÿÿÿê«£¢¢££¢¢££££¢¢££¢¢£«£¢¢££««¢¢¦¦¢£¢¢£¦£¦£¢¦¢£££¦£¢£«¦¢¦£££¦¢¢¦¦¢¢£¢¦¦¦¦£¢£££¦£¦¦¢£¢£¦¦¦¢¢¢¢¢¦£¦£¦¦¢¢¢£¢¢¦¦¢¢¡¡¦¦¡¡¢¢¢¢¢¢¢¡¢¡¡¦¡¡¡£¡‘¡¦Ôûÿÿÿÿý륢£¡¡¡‘¡¥¡‘¢¦¡‘¡¡¡‘¡£¡‘‘¡¡‘¡¡¡¡‘¡‘¡‘‘¡¡¡‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¡‘€‘~‘~‘~€‘‘‘‘‘‘~~‘~‘‘~€‘€€}~}‘‘€}~‘~‘}}}}}~~}}}}}}}}}}}}~}}}}}}}}™õÿë}}žÿõ}vv}}}}}}v}}}vvv|v}}vv||}}vv|}vvvvv|ppv}vvvvvpvppvvvvppvvppvvpvpopvoovvvvvovuppvlovpoollvoooopoulloloollluollolllllllltllllllllllCllCllllCClCCAltCCClCCClCCCACCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Y÷ÿÿÿÿÿ÷_!!!!!!!!!!!!!!!!! ! !!    ! ! !      !!  !        !   =}ªíþþþþþþþþþþþÿÿýÿþÿýþþÿýþþþÿýþæÓ                                ÓÙüýüýüýüüýüüþüþüüÿÿÿÿþÿþÿþÿÿÿûÕŽ¡‘~‘‘¡¡‘‘‘€‘‘~}}‘~‘~~~~‘¡‘‘‘‘~~¡‘‘‘~~~‘‘~~‘¡‘~‘‘¡¡¡¢¡¡¡‘¡‘¡¡¡£¡‘¡¡¢¡‘‘‘¡¢¡¡¡¢¡¢££¦¢¡¢¡‘¡‘¡¡¢¦¢¢¢£¢£¦¦¢¢¢¦¢¡¡¡¢åþÿÿÿÿÿ릣¢£¦£¢££¦¦¦¢¢¦¦££¦«£¡¢¢£¦®¦££¢¢¢£¡¢££££¦¦¢£¢¢¦¢¡¡¢¢¢£¢¦¦£¦£¢¢¢¢¢£¦¦¦£¢¢¡¢¢£¦««¦£¦¦««¦¢¡¡¡¢¦¦¡¦¦¦¢¢¢¢¡¡¦¦¦¥¡¡¡¢¡¡¡¡¡£¦¢¡¡¡‘¡¦¡‘¡¡¡¡¥¦£­êÿÿÿÿÿûÚ¦¢‘‘‘¡¡¢¡¢¡‘¡¡‘‘‘‘¡¡‘‘‘‘‘¡¡‘¡¡¢¢¢¡¡‘¡¢¡‘¡‘‘¡¡¡¡‘‘‘‘¡¡‘‘‘‘‘‘‘~‘‘€~~~‘¡¡‘€€‘‘~}}‘‘}~}‘~}‘~}‘‘‘~}}}}}€‘€}}}}}}~‘€€‘‘€‘‘~}}}~šõÿè}}Óÿõ‘~}}}}}}}vvv}v}pvv}}}}|v}€}}vvv}pvpvvvppvvvvvppppvpvvvplpvpv}}ooppvovvovvvvvooouvoovvvlluvoloouvvvvuulllloouvotllutlCllllllCCCCCoulllovtltlltlCAClCCCCCACCllCCƒáýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=!!!!Cóÿÿÿÿÿ÷_!!!!!!!!! !  ! !!    ! !  !! !! !!!! !    !  =}ªõþþþþþþþþþþþþÿþýÿýÿþÿýÿÿþÿýÿÿæÓ      !                           ××üüýüýüþüþýýýüýüþÿÿþÿÿÿÿÿÿÿÿþúÖ‘‘~~~~‘€~~~}‘¡~~‘‘‘‘~~‘‘‘€‘‘‘‘‘~‘‘¡‘¡¡‘‘‘¡‘‘‘‘¡¢‘¡¡¡¡¡¡‘¡¡‘¡¡‘¡¡‘¦¢¡¡¡¡‘¡¡¡¡¡¡¢¡¢¡¢¡¡¡¡¡¢¡¡¡¡¡¡¢¦£¡¢¢¢¦¥¡¢¡¢¢¦¢¢¢¢Ýþÿÿÿÿÿꥡ££¢¢¢££¢£¦£¢¢¦¦¦£££¢¢¦¦¢¢¢£££¢¢¦¢¦¦¢£¦«£¡¦¦¢«¦¢£¦£¦¦¢£¢£¦¦¡¡¦¦¦££££¦¢¢¦¦¢¡¦¦¦¦¦¢¦¥£¢£¢£¢£«¦¡¡¦£¦¦££¡¢¡¢¢¡£¡¦¦££¢¡¢¢¡¡¢¡¢¡¡«¢‘¡¡¡¡¡¢¢¢¦¬ûÿÿÿÿý륡¡¡¡‘¡¡¡¡¡¢¡‘¡¡¡¡¡¡¡‘¡‘‘‘‘¡‘‘¡¡¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘~‘‘‘‘‘}}¡‘€~‘‘}}~}‘‘}€}}‘‘}}}~~}}‘}~}}}}~}}}}}~}}}€}}}}}™õÿè}}Óÿè}}|v}}}v|}}}v||}v}}|}v}v|||vv||vvv}vvvvvvvvvvvpvppvvpvvvpo}}lovvvovvvvvovvvlvvovooololovvoooolluulloolllllolllululllullCllCCllullCClllllCCllCCClClCCCCCCCCxßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Zóÿÿÿÿÿ÷_!!!!!!!! !!!!!!!!!!!!! !! ! !  !     !!! !!  !   !!     =qªíþþþþþþþþþþþÿÿþÿýÿýþþÿýþþþÿþþæÓ      !                  Ó×üþüýüýüýüüþüýþüüÿÿþÿþÿþÿþÿÿÿýÖ‘~}~}}}‘‘~}}~€‘‘‘¡¡‘~}‘¡¡‘~~}~}‘~‘¡¡‘‘~‘‘‘¡¢¡‘¡¡‘¡¢¡‘‘‘¡¢¡‘‘‘‘¢«¡‘¡¡¡¦£¢£‘¡¡¡¡¡¡‘¡¢¢¢¢¢¢£¢¡¡¢¦¡¡‘¡¢¡¡¡£¢¢¢¦¦¦¦åþÿÿÿÿÿ릢¡¡¡¢¦¦¦¢¡¢£¢¢««¦£¢¢¢£««£¢¢««¢¦£¦£¦¦¢£¦¦¢¡¦¦£¦«¢£®«®¦¦¦¢¢¦¢¡¢¦¦¢¢¢¢£¦¦¦¦¦¦¡¡¡¡¢¢¡¡¡¢££¢££¢¦¦¦¡¢¢£¦«¦¡¡¡¡¢££¢¢¢¢¦¦¢¡¡¡¦£¢¡¡¢¥¡¡¡¢¦¡¡¢¢¢¦¢­êÿÿÿÿÿûÔ¦¦¡‘‘¡¡¡¦¢¡¡¡‘¡¡‘‘¡¡¡‘‘‘¡¡‘~~‘‘¡¡‘~‘‘‘‘€‘¡‘‘‘‘‘‘~~~‘‘¡‘‘‘‘€‘‘‘‘¡‘}}}}‘¡‘‘~€~}~‘‘¡‘~}}‘‘~}}€~}}‘}}}|}}€}}}}}}}v}}v}~€}˜õÿè}~Óÿõ}}}||v}}}}}~}}|v}vvvv}}}vvvvv}vv}vp}}}vvvv}}p}vvvvvv}vvvvvvvvvvolvvvvvvvvullollvvvllllullovuvollolollluvllClllllloollotlllltlllltCClCCClCCCCClCllulCAClluCuÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!=Cóÿÿÿÿÿ÷_!!!!!!!! !!!!!!!!!!!  !  ! ! !  !!! !!!   !! ! ! !!  =q’õþþþþþþþþþþþþÿþýÿþÿþÿýÿÿÿþÿþÿèÓ                              Ó×üüýüþüýýýýýüþüþþÿÿÿÿÿÿÿÿÿÿÿþûÖ~~‘}~‘~~~~~~~€‘‘‘~~~‘¡‘‘~¡¡€¡¡~¡‘¡‘¡‘¡¡¡¡‘‘‘‘¡¢‘‘¡~‘¢¡¡¡¡¢¡¢¢‘‘¢¡¡¡¡¡¡¢¡¢¡¡¡¢¡¢¦¢¡¡¡¢¦¢‘¡¢¢¡¢¡¢£¢¢¡¢¢¢¡¦¦¢¢Úþÿÿÿÿÿꦦ¢¢¢¢¢¢¢¢£¢£¢¢«¦¦¢¢¢¡£¦¢£££¦¢¡¦££¢¦¦¦¦£££¢¦®¦¢¦¡¦«¦¦¦¦¦¢¢¢¢£¢««¢££¢¦¦¢¢¦¢¢¢¦¦£¢£££££¦£¡¢¦¦¥£¢¢¢¢¢¢¦¦¢£¦¦¢¢¢¢¢¦¡¢¡¡¢¡£¦¢¡¢¡¡¡£¦¢£¡¡¡¢¡¢¡¡¢¡¬ûÿÿÿÿýí­¡¡¡‘¡¡¡¢¡¢¡¡¢¡¡¡¡¡‘‘‘¡¡¡‘‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘}‘‘‘‘‘~€‘‘‘€‘‘~‘‘‘‘‘‘‘}~}~‘‘~€}}€~}‘}}~‘}}‘~}}}}€~}}}~v|}}}}}}}}}™÷ÿè}}Óÿè}v|}}}}v}v}}}}}}vvv}}}}vv|vvvv|}}vpv}vvvpv}vpvvvvvvv}vvvppvvpovvvov}oopvopoovpvuuooouvooopoolllvvlllllluolulllllltolllllllllllllllllCCtlCCCClCCllCCCCACltÇ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!!!!!!!! !!!! !!! ! !  !!! !   !    ! ! ! !    !!  !! ! !=wšõþþþþþþþþþþþÿÿýÿýþþÿýÿýþýþþÿþæÓ                                 Ó×üþüýüüýüüþüýýüüüÿÿþÿüÿþÿýÿÿÿûÖ}‘‘~}}~}}~‘‘~~~~~}~‘~~~~~~‘¡‘‘‘‘‘¡‘‘~‘¡¡‘¡¡¡¡‘‘¡¡‘¡¢£¡¡‘¡¡¡¡‘¡¦¦‘¡¦¡¡¡‘¡¡‘¡¡¡¢¢¢¢££¡¡¢¢¢¢¢¢¢¡¡¡¡‘¡¡¢¦£¢¢¢¡¡‘‘¢¢¡¢åþÿÿÿÿÿ榦£¦¦¡¢¦£¢¢¢¡¢¢¢¡¡¢££¢¡¢¡¡¢¢¢£¦¦¢¢¢¢£¦¦¦¦¢¢£«¦¦¦¢¦¦¢¡¡¡¢¢¢¦«¦¢¢¦¢¦¦¦¦¦¦¡¡¡¦¦¦«¦£¦««¦¦¢¡¡¡£¦£¡¡¢¦¢¡¡¡¡¢¥¦¢¡¡¡¢¦¦¢¦¦¦¢¡¢¦¡¡¦¡¡¡¢«¦¢¡‘¡¡¡¡‘¡¡¡¡­êÿÿÿÿÿûÖ££‘‘‘¡¡¡¡¡¡¥¦¢¡¢¢¡¡‘~~‘¡‘¡¡‘‘¡¡‘‘‘‘‘¡‘‘‘~‘¡¢¢‘€‘~}~‘‘‘~}~~€‘‘‘‘‘¡¡‘‘}}‘€~‘‘‘‘}}}~‘}~}~}‘‘}}€‘}}}}~~}}}}}}}~}}}}|}}s™úÿè}vÓÿèvvvv|}}}}}vvvv|}}vv|v||vvvppvvv}}|v€}}}||vvpovv|wpvvvvoppvpoooopolpvvvooopoopvvvlvvvvouvvvulllluooullulluvvlllllllltllClullllllllltllClCCCClCCCCCCCCCCC›óýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷] !!!!!!!!!!!!!!!!!  ! !!!  !!!!!   !! !!! !   !!!!! !  !!!  =q¥íþþþþþþþþþþýÿþÿýÿþÿýÿýÿþÿþÿþÿæÓ                                    Ó×ýüüþüþüþýüþüþüþþÿÿþÿÿÿÿÿÿÿÿþúÖŽ~‘~~‘‘~~~‘~~}‘‘‘~~~‘¡‘‘‘‘‘¡¡‘‘~¡¡‘¡‘‘‘¡‘¡‘‘¡¡¡‘‘¡¡¡‘¡‘£¡‘‘¡¡¡‘¢¡¡¢‘¡¡¢¡‘¡¡¢¡¡¢¡¢¢¢¢¡¢¡¡¡¢¡¢¡¡£¢¡¢¢¢¡¡¢£¢¢¢¡Ýþÿÿÿÿÿꫦ¦¢¢¡¢«£¡¢££££¢¢¢¢«¦¢¢££¢¢¢¡¦«¢¡¦¦£¢¦¢¦«£¢£«¦¦¦¡£¦¢¢¢££¦£¦¦¢¢¦£¢¢¦¦££¢¢¦¦£¦¦¦¢¡¦¦¦¦¢¢¢¢£¢¦¢¢¢¢¦¦¦¢¡¢¢¢¡¢¢¡££¢¥¢¡¢¦¡‘¢¦¢¢¡¦¡¡¡¦¥¡¡¡¡‘¡‘¡£¢¡¡¢¦Óûÿÿÿÿþ륡¡¡¡¡¡¡¡¢¡‘¡‘¡¡¡¡¡‘‘¡¡‘‘‘‘¡‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘~‘‘‘‘‘€‘‘‘‘€~€€‘‘‘~‘€€}~€~‘‘€~}€}}}}~~€}}}‘}}~}~}}‘}}}}~}}}}}v~‘}˜ûþæ}}Óÿè}}}}}vv}}}}}}v|}v|v}|}}v|vvv||v}}vvv}vvvvvvv}vovvvvvvvvvvvopvpvvpovvpvolvvvlvloouopvvllvloooollpoollluvllollltulllllulClullCllClClllllllCCllCCCCClCCl›ñýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ==!!!Cóÿÿÿÿÿ÷_!!!!!!!!! !!!! ! !  !!!  !! !   ! !      !   !    !!  ! !=qªõþþþþþþþþþþþÿÿýÿþþþÿýÿýÿþÿþÿþæÓ                              Ó×üþüýüþüüþüýýýþüüÿÿÿÿþÿþÿýÿÿÿûÖ}}€‘‘‘‘~~‘¡‘‘}~‘‘‘‘¡¡¡‘‘‘~‘‘‘¡‘‘~~‘¡¡¡¡¡‘¡¡‘¡¡‘¡¡‘‘¡¢‘‘‘‘‘¡¡¡¡‘¡¢¢¡‘¡‘‘¡¡¢¢¡‘¡¡¢¢¡¢¦¦¢¡¢¦¦¢¡¡¢¢‘¡££¢¢¢£åþÿÿÿÿÿë««¦¢¢¡£¦¡¡¦«¦¦¦£¦£¡¢¢¡¢¦¦«¦£¦«¦¡¡¦«¦¡¡¢¢«¦¢¡¦¢¡¢¢£¦®¦¦£¢¦««¦¢¦¦¦£¢¢¢¢¡¡¡¢¦¢¢¢¢¢¡¡¡¡¢¢¢££¥¢¢¢¢£¦¦¦¦¦¦¢¢¢¡¢¢¡¡¡£¡¢¡¡¡¡‘¡¡¡¡¡¢¦¢¡¡‘¡¦¦¡¡¢¡‘¦¡¡¡‘¡¡¥êÿÿÿÿÿøÔ¢¡‘¡‘¡¡¡‘‘¡‘€€€‘¡‘‘¡‘‘€‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘~€¡¡‘‘‘‘‘~‘¡‘‘€‘~}}}}}~}}}~€}}}}~~}}}}}€}}}}~}~}}~€‘}}}}€‘~‘‘}}‘~}}}}}}šûÿà}×ÿæ}}}}vvvvv}|v}}}}}}vv}}}v}}}}vv}}}vpvvvv}vpv}}}vvvvvvppvpvvovvvvvvvvolvwov}vvpvlvvvolllloooouuovwvuolouolllllllouuluvolllltlCCllCCllCllulCltutlCAClC›ñüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zóÿÿÿÿÿ÷]99! !!!! !  !!!!! !!!!!!         !! !!      !!! !=q¥õþþþþþþþþþþýÿþÿýÿþÿýÿýÿýÿþÿþÿèÓ      !                           Ó×üüþüýýüþüþüþüþýþÿÿþÿþÿÿÿÿÿÿþûÖ}}~~~}‘¡~}‘‘‘¡~}~¡‘~~‘‘‘~‘‘‘‘‘¡‘‘‘‘‘‘‘¡¡‘‘‘¡‘¡‘¡‘¡¦¡‘¡¡¡¡‘‘¡¡‘¡¡¡‘‘¡¢¡¡¡¡¡¡¡‘¢¢¡¡¡¡¢¢¡‘¡¢¡¡¢¦¢‘¡¢¢¢¢¡¡¢¢¢¢££¡¢¦¦Ýþÿÿÿÿÿꦥ£¢¢¢¢¢¢¢£¦¦¢¢¢£¦£££££¢£¦¦¢¦¦¦¡¡¦«¢¡¦¦£¦¦¢£¦¢¡¢¦£«¦¦¦¢¢£¦¦¦¢£££¦¦¢¢¦£¢¡££¢¦£¦¢¡¢¢£¦¦¢¥¡£££££¦¦¢¢¦¦¢¢¢¢¢¢¢¦¡¢¡¡¦¦¡¡¡¡¡£¡¦¡‘¡«¢‘¡‘¡¦¡¢¢‘‘¦¡¢¡‘‘¢¡¥Ôûÿÿÿÿýꥡ¡¡‘¡¢¡¡¡‘‘¡‘‘‘‘‘¡¡‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘~‘‘‘‘‘‘‘}‘‘‘‘‘‘‘}~€€~€~~‘€‘‘}}}~€€~}}~~}~}}‘}‘}}~}}}}~}}}}~}}}€}}}}}}}žýþà}×ÿà}|}}}|}v|}}}|w}}}}}}}}vvv}vvv}vvvvvv}vvvvvwwwvvpvv}vovvvppvvpvoovvvvopvovvvlvvovuoovulouluooolovvlluollllltlullovlllllltllllultlCCllCCtlCCllllCAlƒèüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zòÿÿÿÿÿ÷_!!!!!!!!!!!! !!!!!!! ! !! ! !! !  !!  !! !!   !  !!  ! !  ! =wªíþþþþþþþþþþþÿÿýÿýÿýÿýÿýÿþþÿþÿàÓ  !!                  ÓÙüþüýýüþüýýýýýþüüÿÿÿÿþÿþÿýÿÿÿýÖ~}}}}}~‘~}}~~‘‘~‘‘‘~~~}~~~~‘¡‘‘¡¡¡¡¡‘‘‘‘¡‘‘‘~~~~~‘‘¡¡~~¡¡¦¢¡¡¢¡‘‘‘¦¢‘¡¢£¢¦£¡‘¡‘‘¡¦¦¢¡¡¡¡¢¡¡‘‘‘¡‘¡¢¢¡¡¡¡¢£¦¦£¦¦£¡¡¢Úþÿÿÿÿÿ楡¡¢£¢¢£¦¦¢¦¢¢£¡¦¦¦¦¦¦¦£¡¢¦¢¡¡¦¢¡¢££¡¦«¦¦¦¦¦¦£¢¢¦¢¦¦¢¡¡¢¢¢¢¦¦¢¦««£¢¡¢¢£¦¦¦¦£¢¢¡¢¦¢¢¦¦¦£¦¦£¡££¢¡¡¡¡¡¡¢¢¢¡¡¡¢£¢¡¡¢£¡¡¦¦¦¦¦¦¦¢¡¦¦¢¦¢¡¡¡¢¢¡¥«¦¡¦¢¡£¥¢¢¥àÿÿÿÿÿ÷Ô¡¢¡¡¡¡¡‘‘¢¢¡¡¡¡¡¢¡¡‘¡¥¡‘‘€€‘¡‘~~~‘‘‘‘¡¡‘€‘¡¢¡‘}}}}}€~‘‘‘‘‘‘~‘‘‘‘}}}}‘}}€€‘¡~}}‘~}~}‘‘€‘}~}}}}}‘€}}|}}v}}}}}}™ýÿàwÙþßvvv}}}}}}}}}}|vpp}}}wv}}}v}vv}}}|}vvvvpoovvpppppvvvvov}vvvvvovoovvovvolllolllvvlloovvvvvoovoollloloollluvvooulClllllltlCClllllllCCCCCCllCCCCClC{áüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9===!@óÿÿÿÿÿó]!!!!!!!!!!!!! ! !   ! !!! ! !!   !!! !  ! ! !!! !! !! ! !!! !=}ªõþþþþþþþþþþýÿþÿýÿýÿýÿýÿþÿþÿþÿèÓ        !                     Ó×üüüþüýüþüþüþüýýþÿÿýÿþÿÿÿÿÿþÿúÖŸ}~~}~~‘~}~~~‘‘‘~~~~‘¡‘~~~‘‘¢¡‘‘‘¡¡‘‘‘‘‘¡¡‘‘‘‘‘‘‘¢¡‘‘¡¡‘¡¢¡¡¡‘¡‘¦¢¢¡¢¢¡¡¡‘¡¡¢¢¡¡¡¢¡‘¡£¡¡¡¡¡¡¡¡¢¡¡¢¢¡¡¢¢¢¡¦¥£¢¡¡Úþÿÿÿÿÿꦢ¡¡£¦¢¢¢¢¢¦¢¦¢¡¢¦£¢£¦¦¡¢££¢¢¢¢¦¦¢¢££¦«¢¦¥£¦¦¦¡£¦¢££££¡¢¢¢¦¦¢¢¦¦¥¡££¢¢£¦¢¢£¦¢¢¢£¢¢¢¢£«¦££¡¢¦¦¡¢¢¦¢¢¡¡¡¡¢¥¡¢¡¢¢¢¢¢¡¡¢¦¢¢¡¡¥¦¡¡¢¡¡¦¡¡¡¢¢¡¡¦¥¡‘¥¡¡¡¢£‘‘Ôûÿÿÿÿýꥡ¡‘¡¡¡¡¡¡‘‘¡¡‘‘¡¡¡‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘}‘¡‘}‘‘‘}‘‘‘‘‘‘‘}~€~‘‘‘€}}~}‘€~‘}~€~}}‘€}}~~€€}}}€}}}}}~}}}}}}}}}}}}šýþÙ}àþÚ}|}}}|}}}v}}w}vvv}}v}vv|vvv}w}}vwvpvv|wvpvvvvvvvpvvvvvpvvpvvvvoovvvvvvplvvlouvolovvlovooovolloluoovluluoolClooltlllllllllltlCCtlllCCllClCCCCl{ßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!9!!!!!!!!!!!!!! !! ! !!!   !   !  !  ! !   !      !  =}ªíþþþþþþþþþþþÿÿýÿýÿýÿýÿþÿþÿþþÿàÓ                       ÓÙüþüþüþüýýýýþüþýüÿÿÿÿþÿþÿþÿÿÿûÖ ~‘~~‘‘~}}~‘‘~‘¡‘~~~‘~~‘‘~~‘¢¡¡‘~}‘‘‘¡¢¡‘¡¡‘¡¡¡¡¡¢¡¡¥¦¡‘¡‘‘¡‘¡‘‘¡¢‘‘¡‘¡‘¡¡£¢¡¢¡‘¡¢¡¡‘‘¡¢¢¦£¢¢£¢¡¡¢¦¦¢£¦¢‘¡¡¡¡¢¡£êþÿÿÿÿÿ릢¢¢¡£¦¢¡¡¡¡¢¢¢¢¡¦¦¢¦¢¦¦¦«¦¦¢¡¡¢¦¦¢££¡¦£¡¡¢¡¢¦¡¡¦¦¦¦¦«¦«¦¦¡¡¡¡¢£¢¦¦£¦¦«¦¢¡¡¦¦¦¦¢¢¢¦¢¡¢¢¢¡¡¡¦¢¢¢¦¦¦¢¡¢¦¦¦£¡¦¦¢¢¡¡¡¡¡¥¡¢¦£¡‘¡¡¡‘‘¢¦¡¡¦¥‘‘‘¡¡¡‘¡‘¡¢¢¢‘‘«­êÿÿÿÿÿõ§‘‘‘¢¡€‘‘‘‘€‘‘‘‘¡¢‘€~‘¡¡‘‘¡¡‘‘¡¡‘‘€€‘¡‘~€‘}‘¡¡‘€‘‘¡‘€}}}~‘¡‘€‘~¡‘‘‘‘€‘€}}}}}}€‘‘‘}}}}}}~€~‘‘}}~}}}}}}}}}}}žþþà}™àþÚ}}}}}}}}}vpv}}}}}v|vvvpvw|vv}vvvpop}wvvvpv}}vvvvopvvvvlovvvvvvoouvplovvvvvvopvollvollllovvuloulllovulllllllllClluuultlllllllClllllClltlCCClxßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!$9!Z÷ÿÿÿÿÿ÷x!!!!!!!! ! !! !!!!!!!!!!   ! !!!!!!!! !!!  ! !! ! !   ! !! 9}ªõþþþþþþþþþþþÿþÿýÿýÿýÿþÿþÿþÿþÿèÓ     !                    Ó×üüþüýüþýýýýüþýüþÿÿüÿþÿÿÿÿÿþÿúÖŸ~~}~~~~~~~‘‘‘‘~~~~~~‘¡‘~‘‘‘‘‘~~‘¡¡¡‘¡~~¡¢‘¡‘‘¡‘¡‘‘¡¡¡¡¡‘¡¡‘‘¡¢‘¡¡¡‘‘‘¢¡‘‘¢¦¡¡¢¢¡¡¡‘¡¡¡¡¡¡¢¢¡¡¡¢¡¡¡£¢¢¢¦¦¢¢¡¡¢¢¢£Ýþÿÿÿÿÿꥡ¥¦¢¡¢¦¢¢¢¢¢¢¢¦£¦¥¢¦¢¦¡¢¦¢¦¦¡¡¢¦¡¡¦¦¢¡¢¡£®¢¡£££¦¦¢¦¢¦¦¦¦¦¢¡¢¢¢¢¦«¢¡¦¦¦¦¢¡£¦¦¦¢¡¢¦¢£¢¡¢£¢¢¢¡¢¢¢¢¦¥¢¡¢¡¡¦¡¢¢¢¡¢¡¡¢¢¦¡¡¢¦¢¡¡‘¡¡¡¢¢¢¡¢¥¡¡¡¡¡¢¢¢‘‘¡¡¢¡¡¡¢¦¢§õÿÿÿÿýà¡¡¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘€‘‘~}‘¡‘‘‘}‘‘‘‘€}~‘‘~€~‘‘~}‘‘}€}}}~~}}~}}}}}}}}€~}}€}}}}}~}}}}}}}}žÿýÚ}æýÙ}}}}}v}}}vv}}}}}}vv}}vvvvv}}}w}vvpvv}vvvpvvvvvvvpvvvvvlo}}vvppvovpuopvvovvopploluvovoluooolltpolooollvllullllllllovlllCltlllllllltCCllllCuÌúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!9!Bóÿÿÿÿÿ÷_!!!!!!! !!!!! !! !!!!  ! !!! ! !  ! !       !    =qªíþþþþþþþþþþþÿÿýÿýÿýÿþÿýÿýÿþÿþæÓ                      ÓÙüþüþüþüýüþýþüþþüÿÿÿÿþÿýÿþÿÿÿûÖ¡‘~}}~‘¡¡‘~}~¡¡€~}}~~‘¡~~‘‘~~~~~~~‘‘‘‘~~~}‘¡‘~~‘‘~‘~~‘¡¡¡¡¡¡¡¡‘¡¢¡‘¡¢¡‘¡‘¡¡¡‘¡‘¢¦££¢¢‘¢¦¡¢¢¡¡¢¦¢¡‘¢¢¦¦¡¡¦«¦¢Ýþÿÿÿÿÿꥡ¦¦¡¡¡¦¦¦¦¦¦£¢¦¦££¢¢¡¡¡¢¦¦¦«¦££¢¢¦«®¦¦¦¢¦«¢¡¡¢¦¦¡¡¡¡¡¢¢¦£¢¦¦££¦¦¦¡¡¡¢¢£¢¡£¢¢¦¦¢¢££¦¦£¡¢¦¦¦£¥¢¦¡¡¡¢£¢¦¢¢¦£¡¡¥¦«¦¦¥¡‘‘¡¡¡¦¦¢¥¢¡¡‘¢¦¡¡¡¢¡‘¡‘‘¡‘‘¥¢¢¢¡‘‘‘‘‘¦êþÿÿÿÿõ¬¡‘~‘¡¡£¥¡‘‘¡¥¥¡¡¥¡‘‘‘€€~‘‘‘€~‘¡‘~}}€‘‘‘‘‘‘~‘‘€}‘}~‘‘~€}}~‘‘€}}‘‘€~~~‘€‘‘~}~~}}}}}}}}}}}}}}v}}‘€~}}}}€}žÿþÙ}™æý×}}}|v}vvvv}}}}v}}|v}}}}}}vv|vvvv}}vv}vvvvvvvvvvvvvvvvvoovvlpvvvvvvvvwvllpvvovlvvpvvvuloolloollovullllltlloulvuullllloullvtlCCCtuulCCluuyÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!Cóÿÿÿÿÿ÷_!!;9!!!!!!  !!!!  !!! ! !!  !  ! !! !! !   !!! !!!!! !! ! ! =}ªõþþþþþþþþþþýÿþÿýÿþþÿþÿþÿþÿþÿÿæÓ    !          Ó×üüþüþüþýþýüþüþüþÿÿþÿÿÿÿÿÿÿþÿúÖ¢~~~~‘‘~‘‘}~‘~~€~‘~~~‘‘‘~~~~~‘‘‘‘‘~‘‘‘~~‘‘‘‘~¡‘‘¡~‘‘¢¡‘¡‘‘‘¡‘‘¡¡¡¡‘¡¢¢‘‘¡‘¡¢¡¡‘¡¡¡¢¦¡¡¡¡¡¢¢¡¢¦¢¡¡¢¢¡¡¢¦¢¥¡¡¦¦¢¡Úþÿÿÿÿÿꥡ£¢¢¦¢¦¢¢¢¢¢£¢£¢¢¢¦£¢¢¡¦¢¦¢¢¦¦¡¡¦¦¢¢¦¦¦¢£¦¢£¢¢£¦£¢¦¢¢¡¢¦¦¦¦¢¢¢¦¢¢¢¡£££¢¦¦¢¡¦¦¢¡££¢¢¦¢¢¢¢¦¥¡££¢¦¢¡¢¡¡¦¦¡¢¢¡¡¡¦¦¦¥¡¡¡¡¡¡¢¦¢¢¡‘¡¡¢¥¡‘¡¢¡¥¡¡¢‘‘¡‘£¦‘‘¡‘¡¡‘‘¡¥¬õÿÿÿÿýà¡‘‘‘¡¥¡¡‘‘¡¡¡¡‘¡¡‘‘‘€‘‘‘¡‘€‘‘‘‘€‘‘¡‘‘€‘‘‘€~€~~€€}‘‘‘}~}~€}€‘}}‘‘}}~€‘~€¡}~}}}|}}~}}}~}}}}}}}}}}}}}}}~}§ÿýÓv‘èýÓ}v}v}}}}}vv}}vv}}vv}}wv}}w}}wvvvv}vv}vpvvvov}vppvp}vopvvvvvvvvpovvvpv}oovvooolvvolovlouolltplolvlltlllllluolllllllllullltllllluollCCluÇ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Yóÿÿÿÿÿ÷]!9!!!!!!!!!! !!! !! !!! ! !!     !   ! !!    !  !!!  =ŽªíþþþþþþþþþþþÿÿýÿýÿþÿþÿþÿþÿþÿþæÓ                    ÓÙüþüþüþüýüþþýýþüüÿÿþÿüÿüÿþÿÿÿûÖŸ}}~‘~}}~‘‘~}~¡¡¡¡‘‘‘‘~~¡‘‘‘‘~~‘‘¡¡‘‘‘‘‘¡¡¡¡‘¡¢¡‘‘‘‘¢¡¡¡‘¡¢‘¡¡¡¡¢££¡‘¡‘¡¢£¡¡¡¦¦¢‘¡£¡¡‘‘¢¡‘¡¢¢¢¡¡¡¡¡‘¡¢¢¡¢¡¡¡¡¡¢«¥¢£êþÿÿÿÿÿꦢ¡¦«¦¢¢¢¡¡¡¡£¦£¢¢¦¦£££¡¡¡¡¡¦¦«¢¡¦¦¡¡¢¡¡¡¡¦¦«¦£¢¦¢¢¡¡¢¡¢¥¦¦¢¡¦¦¡¡¡¢¢¦¦¡¢¢£¡¡£¦£¦¦¦£¡¡¡¢¢¢¢¡¡¡¢¢¦¦¦¦¡¡¥«¦¦¢¦¦¡¡¡¡¡¢¡¢¢¢¡¢¦¡¡¡¡¢¡¢¢¡‘¡¡‘¡¢¦¢¢¢¡‘¡¡‘¡¡‘‘¡¡‘¡¡¡¥Úþÿÿÿÿõ§¡‘~‘‘‘¡¡‘‘~}‘‘‘~‘¡¡‘¡¡¡‘¡¡‘~~‘€‘‘€‘‘‘€}~}~‘‘‘‘‘}‘‘‘}‘€‘‘‘~}}€}}}}}}}‘}}~‘‘~‘‘}}‘‘}}}}}}~}}}v}}}}}}}žÿý×}™èûž}}}vv}w}}v}}vvv}}v}}}vwvvvvvvvvvppvv}vvw}}vvvvv}wvvvoovwvvovoolvollovvlloovvvolvullpvvoouvvvvvlovvlllovvlluulllCCllllCClltClClllCCluÆ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=9!!!@óÿÿÿÿÿ÷_!!! !!! !!!!! !!!   !!! !   !!  ! !   !!!!! ! !    !  !  !! !=qšõþþþþþþþþþþþÿþÿýÿþþÿýÿþÿþÿþÿÿæÓ          Ó×üüþüþýþüþþüþüýþþÿÿþÿÿÿÿÿÿÿþÿúÖ~€~~~‘~~‘~~‘‘~‘‘~~‘~‘‘¡‘~~‘¡¡¡¡~~¡¡¡‘‘‘¡¡¡¡‘‘‘¡‘¡‘‘£¡‘¡¡¡¡¦¢¡¡‘¡¡¡¡¡¡¡¡¢¥¡¡¢¡‘‘¡¡¡¡¡¡¡¢¡¢¡¡¡¡¡¢¢¢¢¢¡¡¡¡¢¦¦¢£Ýþÿÿÿÿÿꦥ£¦¦¡¡¢¥£¢¡¡¦¦¦¢¦¦¡¦¢¢¡¢¡¡¢¦¦¦¡¡£¦¢£¢¡¢¦¡¢£¦¢¡¢£¢¡¢¢¢¡¢££¦¦¡£¢¡¦¢¢¢¦¦¡¡¦¦¢¡¡¡¢¦¥££¦¢¡¡¡¢¢¡¢£¢¢¦¦¥¢¡¡£¦¦¥¢¦¢¡¡¢¡¡¦¢¢¢¡‘¥¦¡‘¢¦¢‘¥¢¡¢¥¡‘‘¡¢¡¦¦‘‘¡‘¡¢‘‘¡¢‘¡‘‘¡¢‘¥õÿÿÿÿýÚ‘‘‘‘¡¡‘‘‘‘‘‘¡‘~‘¡¡‘‘‘‘‘‘‘‘€‘€~€‘‘‘‘¡‘€~‘‘‘€~‘‘‘~‘‘€‘}}‘¡~}}~}~}~}}}‘}}}€‘‘}}}}‘€}}}}}}€}}}}}}}}}}}žÿûÓ€™èú§}}vw}v}}}vv}}v}}v}}vvv|vvv}}w}wvvvvv}}vv}vvvvvv}v|vpopvvvvvpvpovolvvvooluvoovuoppoooooollvvlolllollvvlloolllllllulllClullllCCClltu›òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!! !!!! ! !! ! !! !  !  !   !!   !   ! !! ! !   ! 9qªíþþþþþþþþþþþÿÿýÿþÿþÿþÿýÿþÿþÿþæÓ                Ó×þýýýýüþüþüþýýýþüÿÿÿÿüÿþÿþÿÿÿûÖ‘‘‘~~~~}}}~}~}~‘‘‘‘~‘‘~~~¡¡‘}‘¡‘‘‘~~~‘‘~‘‘‘¡‘‘¡‘¡¡¡¡‘¡¢¦¡¢¡‘‘‘¢‘‘¡‘‘¡¡¡¡¡¦¡‘‘¡‘‘‘¡£¡¡¢¡‘¡¢¢¡¢¦¢¢¡¡¡¡¡¡¡¢££¡¡‘¢¢£¥Ýþÿÿÿÿÿ楡¢¢¡¢££¢¦¢¡¢¢¡¢¢¡¡‘¡¡£¢£¢¢¦¡¡£¢¥«¦¡¢¡¡£¦¦£¢££¡¡¦¦«««¦¦££¡¦«¦¡¡¡¡¢¢¢¢£¡¡¡¦¦¦¦¢¡¡¡¡£¦¥¢¦¦¢¦¦¦¡¡¥¦¡¡¢¥¢¢¡¡¡¡‘¡¢¢¥¡¡¢¢¦¦¥¡¡¥¡‘¡¥¡‘¡¡¡¡¡‘£¡‘‘‘¡¥¡¢¢¢¦¢‘¡¥¦¡¥¢€‘¦¥‘¡Úýÿÿÿÿõ§¡‘¡‘‘‘¡¡~~‘¡¡€‘¡‘‘€}~€‘¡¡¡‘‘‘‘~}€‘‘‘‘‘€~}€€~}€‘‘‘‘}}~}}‘‘‘‘~}}}}‘‘€}}}}}€}‘‘}}€€}}~€}v}€~}}}}}}}§ÿýÓ}˜ëúžw}}}|}}}}}}|}}}}}vvv}w}}}wvvvvvvvw}}vpvvvvvvvvvvvvvvvvvvlopov}}vllvvluvppvollvvvovvvolllovvlllouulovvuoullllluuuvuutlluuouuullll˜èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Cóÿÿÿÿÿ÷_=! ! !!!!!!!!!!!!!!!!! !!!     !!! ! !! !     !!  !    =}¬õþþþþþþþþþþþþÿþÿþÿþÿþÿþÿþÿþÿÿæÓ                     ÓÓüüýýýþýþýþýüþüþþÿÿüÿÿÿÿþÿÿþÿúÖ~}‘€~~~‘~~~}}~‘‘‘‘~‘¡‘~~‘‘‘~‘‘‘‘‘~~~‘‘~~¡¢¡‘‘¡‘‘¡¡¢‘‘‘¢¡¡¥¡~¢¢¡‘‘‘‘‘¢¦‘‘¡¡¡‘¡¡¡¡¡¡¡‘¡¢¡‘¡¦¢‘¡¦¢¡¡¡¡¢¦¡¢¦¢¡¡¡¡¢¦¢¢Ýÿÿÿÿÿÿꥣ¡¢¢¢¢¡£¢¡¢¢¡¡¢¢¢¡¡¢¡¡¦¦¡¡¡¢¢¢£¦£¢¡¡¢¦¢¢¦¦¢¡¡¡¡¢¦««¦¦¢¢¦¢¡¢¦¢¡£¡¢¢¢¡¡¡¡¢¦¦¦¦¢¢¡¡¢¦¦¡¡¢¦¢¢¢¢¡¢¦¦¦¡¡¦¦¡¡¡¡¡¡¦¦¢¢¢¦¡‘¥¦¢‘¡¡¡¡¡¡¡¡¡¡¡‘¡¢¥¡¡‘‘¡¡¡¡¡¢¡‘¡‘¡¢¡¢¡‘¡¦¡¡‘‘¥õÿÿÿÿûÚ‘¡‘€€‘‘‘‘‘‘‘€‘‘‘‘‘€~}‘¡‘‘‘‘‘~‘‘~}‘¡‘€~‘€‘‘~}‘‘‘‘‘€~}}}~‘‘‘}}}€}}}}~‘}‘}}}‘‘~}}}‘}}}}}}}~}}}€€}}ÓÿýÓ}™õúž}v}}}}}v}}v}}}}}}w}vwvv|v}vvvvvpv}}}vvpv}vvvvvvvvvvv}vpvooopovvvolvvpvooooolovolovvvlooouvvllulvoltvvlulllClluoovlllllloloollCƒèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Zóÿÿÿÿÿ÷x!!! !!!!!! ! !9!!!! ! ! ! !     ! ! ! !! !!!     !  =}ªíþþþþþþþþþþÿÿÿþÿþþÿþþÿþÿþÿþÿþæÓ                 ××þüþüþüýüþüýþþüþüÿÿÿüÿýÿÿþÿÿÿûÖŸ~}}}~~~‘‘~~}~‘~~~~~~~¡‘‘~}~~‘‘‘‘‘‘‘‘‘¡¡~‘¡~‘‘~~‘~‘‘‘~‘¢¡~‘¡‘‘¡¡¡¡¡¦¡‘‘¡‘‘¡¢¢¡¡¡¢¡‘¡£¢¢¡¢¡‘¢¦¡¢¦¦¥¦¡‘‘¡¡‘¡¥¡¡‘¡¡Ýþÿÿÿÿÿ릣¢¢¢£¢¡¡¢¦«¦££¢£¦««¦¢¦¦£¡¢¦¦¦¦¦¦¡£¦£¦«¦¡¢«¦¢¦¦££¢¦¥¡¢¡¢¦¦¢¡¦¦«¦¦¦¦¦¦¦¢¢¦¢¢¥¢¢¢¡¦¢¢¦¦¢¢¦¦¢¢£¥¢¡¢¡¡¡¦£¡¡¡¡¢¡¥¦¡¡¡¡‘¡¢¢¡¡¦¢¢¢¡¡¢¥¡¢¦¡¡¡¡‘¡¢¥¢¡¡¡¡‘‘‘¡‘¡¢¡‘‘‘¡¥‘¡¢‘¡¥Úþÿÿÿÿõ§¡‘¡¡¡‘‘‘‘‘‘¡¡¡‘‘¡¡‘¡¡‘‘‘‘~}€‘‘~}€}}€‘‘‘€}‘€}}~}}‘‘‘~}}}~¡‘‘}}}}~‘¡‘}}}}}}}}}~~}‘‘}}}}}v}w}}~ÓÿúÓ}šõúžvvv}}}}vpvvvwv}v|}vv|vvv}}}}vvv}pvvpvvvvvpvvvvvvvpvvvvvvvvvpvoovoovvvvvvvvvlvvvoovllooooouullovvvullollltvouoooullloutlCCCll{ßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ@=!$=Bóÿÿÿÿÿ÷_!!!!!!!!!9!!!!!!!!! !!! !!!!!!!!!! !    ! !!  !   !  !!!!  ! ! !! 9q¥õþþþþþþþþþýýÿþÿþÿþÿþÿþÿþÿþÿþÿèÓ                Ó×üþüþýýþýýþþüþýþþÿÿþÿÿÿÿýÿÿÿüúÖŽ}}}~~~~~}}~‘¡~}~~‘‘‘‘‘~~}~¡‘‘‘‘‘¡‘~~¡‘¡¡~‘¡‘~‘‘~‘‘‘~‘‘‘‘¡¡‘‘¡¡¡¢£¡¡‘¡‘¡¡¦¦¡¡¡¡¢¡‘¡¡¢¢¡¡¡¦¦¢¢¦¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡¢êþÿÿÿÿÿꥡ¡¢¦¡¢¢¡¡¢¦£¦£¡£«¦«¦¡¢¢¡¡¡¦«¦¦£¢¢¢£¦¢¦£¡¦««¢¦¦¢£¢¢£¡¢£¦£¦¦¦¡¢¦¦¦¢¥£¦£¢¡¦¦¢¢¢¡¡¡¢¢¢¦¦¢¢¦¥¦¦¥¡¡¢¡¡¡¢¡¡¢¡¡¡¢¢¡¢¡¡¡¡¡¢¡‘‘¡¢¢¡¡¡‘¥¢¡¢¥¡¡‘¡‘¡¥£¡‘¡‘¡‘‘‘‘‘‘‘‘‘‘‘¡¢¡¡¢‘¡¡‘§õÿÿÿÿû¬‘¡¡‘‘‘‘€‘¡¡‘¡‘‘‘‘‘¡¡‘~‘‘‘}~‘‘~}~~}~‘¡‘‘‘‘}}~€}~‘}‘€€}}}~‘‘‘€}}}}‘‘‘}}}}}€}v}}‘}}}}}}}}}}}}§ÿú§}šõ÷™vv}}}}}}vvv}}}}v}}w}}vp}}vv}}v}vvvvvov}vovv}v|vvvovvvvoovvooooovoov}ovvvvoovoovovvoluluvooouovvuvvoollluvollvuulllluullllluÎýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Bóÿÿÿÿÿ÷_!!!9!9!!!!!!!!! ! ! !! !! !!!  !    !  !      !  !  ! !  ! =p¥íþþþþþþþþþþÿÿÿþÿþÿþÿþÿþÿþÿþÿþæÓ   !          ÓÙüýþüþüþüþüýþþüþüÿÿÿþÿþÿÿüÿÿÿúÖ}}}‘‘‘~~~~~€‘}~}}‘‘‘‘¡‘¡‘‘‘‘‘‘‘¡¡¡‘~~¡¡‘‘¡‘~‘¡¡¡¢¡‘‘¢¡‘‘¡¡‘‘¡¡¡¡¡¡‘¡¡¡‘‘¡¡‘¡‘¡¡¡‘¡¢¡¡¡¡¡¡‘‘¡¡¡¡¡¡¡¡¢¢¢¦¢¢¡¢££¢¡Úþÿÿÿÿÿ릣¥¡¡¡¡¦¡¡¢¢¢¢¡¡¡¢¡¢¦¢¢¦¦¢¢¦¢¢¡¡¡¡¡¢¦¢¢¡¡¡¢¡¡¡«¦¦¦££¢££¢‘¡¢¢¡¡¦¦¦¦¢¡¢¦¦¢¢¦¢¢¢¦¦¦££¥¦¡‘¡¢¡¡¡¡¦¦¥¦¦¢¡¢£¥¦¡¡¢¥¦¢¥¢¢¥¦«¥¡¦¦¡£¥¢¢¡¡¢¢¦¢¢¢¡¡¡¢¦¢‘¡¡¡¡¥¢¡¡¡¢¡¡¡¡‘‘¡‘€‘‘‘¡‘‘¥êÿÿÿÿþà‘‘¡¡‘‘‘¡‘€‘¡‘‘~€‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€}‘‘€~~‘}€‘‘‘‘€}}~}‘}}€‘‘}}}€}}~}~}}}~}}}}}}}}}~}}}}}}}žÿýÒ}™õ÷ž}}}}}}v|}}}}vvvvvv}}vvv}}ppv}}vvvvvvv}}vpvvpopppp}vvpvoo}vvvvvvvvovvulvolovvvolllvuovvlolllovvllCllluuloullvvlltllClllCCvÌüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ9!!9!Cóÿÿÿÿÿ÷_!!!!!! !! !!!!!!! !!  ! !!  !!!  !  !!  !! ! !!! ! ! !! ! !  !  =ŽªíÿþþþþþþþþþüÿÿþþÿþÿþÿþÿþÿþÿþÿæÓ           ÓÓýüþýþüþüþýþþüþþþÿÿüÿþÿÿþÿÿÿþûÖ}}¡‘~~~~~}}~~~~~€‘‘~‘¡¡‘‘‘€‘¡‘‘¡¡‘‘¡¡‘‘~‘¡¡‘‘~}¡¥¢¡¡‘¡¢¡‘‘¡¡‘¡‘¡¡¦¡¡¡‘‘‘‘¡¡‘¡‘¡¡‘¡¢¡‘¡¦¥¡¡‘¡¡¡¡¡¢¡‘¡¢¢¢¢¦£¡¡¦¦¢¢Úþÿÿÿÿÿꦡ¡¡¡¡¡¡¡¢¡¢¢¢¢¡¡¢¡¢¦¢¢¦¦¦¥¡‘¢¢¡¡¡££¢¢¢¡¡¡£¡¡¡«¦¦«¦¦¥¡¢¥¡¡¡¡¢¦¦¦¦¦¡¢¢¦¦¢¡¡¡¢¢¦¦¦¢¢¢¢¡¡¢¢¢¢¢¡¢¦¦¦¡¡¡¡¥¦¦¡‘¡¢¡¢¢¢¦¦¦¦¢¢¢¢¢¦¢¡¢¢¢¡¢¦¦¡¡¡‘¢¦¡¡‘‘‘‘¢¦¡‘‘‘¡¢‘‘‘¡‘€‘‘‘¡¡‘‘¡‘¡Óûÿÿÿÿëš‘‘‘‘‘¡‘€~‘‘‘‘‘‘¡‘‘‘‘‘‘¡‘}€‘‘‘~}‘‘}€‘‘}}~€‘}~‘‘~}}}‘‘€~‘‘€‘‘}}}~}}‘}€}}~€}}}}}}v}}‘‘}}}v}Óÿúž}™ú÷¥}vv}vvvw}}}vv}}vvv|vv}}}vov}}}|vvvvv}vpvvvpoovpvv}vovvvvvpvvv}voovvlovuoovvvlloovoovvvlllltpuolllluullvvllvlltoolCClluÆ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=!!=Yóÿÿÿÿÿ÷_!!!!!! ! ! !!!!!!!   !!!!  !!  !!    ! ! !!   ! !! ! !  !!   !!  =ެíþþþþþþþþþþÿÿþÿþÿþÿþÿþÿþÿþÿþÿæÓ                 Ó×þþüýýýþþüþýþþüþüÿÿÿÿþþÿÿÿýÿÿúÖ Ÿ~}~~}}‘‘€~~‘~~}~‘~~‘~}}~~‘~~‘‘~}‘‘~}‘‘¡¡‘~‘¡‘‘‘‘¡¡‘‘¡‘¡¡‘‘‘¡‘‘¡¡¡‘‘¡¡‘¡¡¡¡¡¦¦¡¡¢¡¡‘¡£¡‘¡¦¡¡¡‘‘¡¡¡¡¦¢¡¡¢¢¡¡¡¡¡¡¥¢¡¡Ýþÿÿÿÿÿꥢ¦£¢¦¢¦¦«¦¢¢¡¢¡¢¦¦£¡¡¡¥¢¦¦¡¡¦«¦¦£¢¢¢¢¦¢¡¦¦¢¢¦¦¡¡¡¡¡¢¦¦££¥¡£¥¡¢¡¢¦¦¥¢¡¡¢¦¦£¥¢¢¡¡¢¢¢¦¥¢¢¦¥£¥¡¡¢¡¦¦¢¦£¡¥¢¡¢¦¢¡‘¡¡¡¡¡‘¡‘¢¡¡¥¢¡¡¡‘‘‘¢‘‘¢¢£¥¡‘‘¡¢¡¡¦¥‘¡¢¡¥¦¡‘¡¢¡¡¡‘‘‘‘~¡¡‘‘¡¨íÿÿÿÿýÔ¡‘€‘¡¡‘‘‘‘‘‘¡‘€€€€~~‘¡‘‘‘¡‘‘‘}}‘‘‘}~‘‘‘‘~}}‘‘‘¡€€‘}}€}}}}}‘‘}}€}}}}}}}€}}~}}}}}}}}}€}}}v}Óÿûž}žû÷™|}}w}€}}}}vv}vv}}v}vv}vvwvv}vvvvvvvvvvv}}vvvovvvvvvvuvvv}voovovvolovvovvvvvvllvvvvvvuooouvvllluuvuullCClulClllllltluu›õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_!!!!!!! !!!!!!! !!!!! !  !!!!!   !! !   ! ! !  !    !   !   >}¥íÿþþþþþþþþþýÿÿþÿýÿþÿþÿþÿþÿþÿÿæÓ                   Ó×üüþýþüþüþþþýþýþþÿÿüÿþÿÿþþÿÿþúÖ‘~~}~}~¡¡~}~}~~~~‘‘‘‘‘‘~}}~~~~¡¡‘~~}~‘~~‘‘¡¢¡~‘‘~¡¡¡€‘¡¡¡¡¢‘~‘¡¡‘‘¢¡‘‘¡¡‘¡‘¡¡¡¦¢‘¡¢¡‘‘¡¢¡¡¡¡¡‘‘‘‘¡¢¦¦¡¡¡¦£¢¡¡¡¡¡¡¡¡‘‘Úþÿÿÿÿÿ楦¦¦¦¡¡¦¦¦¦¥¢¡££¢¢¦¦¡¢¦££¢¦¢¡¢¦«¦¦¥£¢¢¦¢¢¡¡¢¥¦¢¡¡¡¡¡¢¦¦£¢¡£¦¢¢¢¡¡¦¦¢¡¡¦¦¦¥¢¡¢¢¢¢¢¢¢¢¢¡¥££¦£¦¢¡¥£¥¢¦¢¡¡£¢¢¦¢¡‘¡¡‘¡‘¡¡¡¢¡¡¡¡¦¡‘‘‘‘¡‘¥¦¥¡¢¡‘‘¡¢¥¦¡¡¡¡¢¦¢‘‘¢¡‘¥¡‘‘‘‘‘‘¡‘‘¡¡¡¡ÚÿÿÿÿþÚ‘‘¡‘‘‘‘€}‘‘¡‘‘‘~}‘‘‘¡‘€‘¡‘€‘}‘€}~}}}‘‘}}}€‘‘‘‘‘}}€}}}}~€‘€}}}~~}}}‘}}‘}}}}}}}v}}}}}}}Çÿú§‘§úõš}}}v}}}}v}vvv}}}}vvvv}vv|}}}}wvvvvvvvv}}vvvvpvvplovvvwvvvvvovupuoouvvoopvvvvolouovvvvovvvuolCloovolllCllpoltvlCCluv˜ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!=!Zóÿÿÿÿÿ÷x!!!! !!!  !!  !!!  !!  !! !! !      ! ! !    !!!  !=qªõþþþþþþþþþþþÿþþÿþÿþÿþÿþÿþÿÿþÿæÓ            Ó×þþüýýýþýýþüþþüþüÿÿÿþÿþÿÿÿþÿÿûÖ¢‘‘‘~~}}~‘~}~~‘¡‘‘€‘€~}~‘‘‘~~~‘‘~‘‘‘¡‘~‘‘‘‘‘~‘‘‘‘~‘‘‘~‘¡}‘¢‘~¡¦¡~‘¢¡¡¡¡¡¡¡‘¡¡‘‘¢¡¡‘¡¡‘¡¡¡¢¢¢¡¡¡¡¡¡¡¡¡‘¡¦¡¡¡¡¡¡¡¢¢£¦¢£åþÿÿÿÿÿꦦ¢¡¡¡¢¦¡¡¡¡¡¡¡¢¢¡¡£¥¢¢¡¢¡¡¡¢¦¢¡¢¢¢¢¡¥¦¥¦¦¢£¢¢¥¦¦¢¢¦¦¦¢¥¢¦£¥¡¢¢¥¦¡¡£¥¢¥¦¢£¢¢£¥¢¡¢¦¦¦£¢¡¡¡¡¡£¦¡¡¡¢¡¡¡¡£¡¥¢¡¥¡¢¥¦¢¥¢¢¡‘¡¡¡¡¡¦¥‘¡¡¡¢¡¢‘‘¡¡¡¡¡¥¡¡¡‘‘‘‘¡¢‘‘¢¢‘~¡¥¡‘¡¡‘‘‘‘‘‘‘‘‘¥Ýþÿÿÿÿà¡‘‘‘¡¡‘~‘‘‘‘‘‘€‘‘‘€‘~}€‘‘€‘‘€‘‘‘‘‘‘‘‘‘€}~‘}}}€~~‘‘‘}€}}}}}€}}~}}}}}}~}}}}~}~}}}}}~}}}}}Óÿúš}žûõ™w}v}v}}v}}}vv|vv}}}vv|}vvv}vvvvvvvvvvvvvvvvvvv}vvvvvvvlovvvvvvvvvvvvvpulvoovulvvuvollllloovlovuuollouvuullllotlul{áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!! !!!!!!!! !!!!!  !   ! !!! !   !!    ! !  ! !    !! 9qªíþÿýÿþþþþþþþÿÿþÿþÿþÿþÿþÿþÿþÿÿæÓ    !        Ó×üþüþýýþýþüþþýýþþÿÿüÿÿþÿþþÿÿþúÖ ‘‘‘‘}}~‘‘~~¡¡¡¡‘~~‘~}~‘€~}}}‘‘~~¡‘‘‘‘¡‘~}~‘‘‘~}~‘‘‘‘‘~~‘‘‘¡¡‘¡¡‘¡£¡¡¡¡‘‘‘¡¡‘¡¥£¡¡‘~‘‘¡¥¢¡¡¡¡¡¡¡‘¡¡¡¢¦¥¡¡¡¡¡¦¡¡¡¢¦«êþÿÿÿÿÿꥢ¢¥¡¡¢¢¡¡¡¡¡¡¡¡¡¡¡¡¡£¡¡¡£¢¢¢¥¡¡¢¢¦¢¡¡¢¦«¦¦¥¡¡¢¦¦¢¦¦¦¦£££¦¦¡¡¦¦¦¦¢¡¦¢££¢¢¢¢¢¦¦¢¡¡¢¥¢¢££¢¢¢¢¦¦¢¡¡¡¥¡¡¢¡¡£¢¢¡¦£¡¦¦¦¢‘‘¡¡¡¡¡¡¥¦¢¡¡¡¡¡¢‘¡‘¡¡¡¡¦¡‘¡‘¡¡¡¡¡‘‘¡‘¡‘‘¡¡¡¡‘¡‘‘‘‘‘€‘‘¢¦ëÿÿÿÿûÔ‘‘‘¢¥‘‘‘‘¡¡‘~€‘¡€}‘}~‘‘‘}‘‘‘‘‘‘€‘‘‘€}‘}}€‘}€}}‘‘}~}}}}}€}}}}}}}‘}w}}}}‘€}}}}‘€}}}}Óÿ÷™}žýõ™}}}v}vvv}}w}}vvvvv|}}}vvvvvvvvvv}}}vvvpppvvvpv}vvv}voooovwpovvovvvvvolovvoovpovvlllllulltlolluopulluvvvolCClllo{ßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yòÿÿÿÿÿ÷_!!! !!!@!!! ! !!!!!!!! !! !!!!! ! !  !!  !   !    ! !!!    !!   ! =qªõþþþýþþþþþþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿæÓ           ÓÙüýþüýþüþþþüþþüþüÿÿÿÿþÿÿþÿþÿÿûÖ}}}€‘~~~~}}‘‘~}}}€‘‘‘‘~‘¡‘‘‘‘~€}‘‘‘~~‘‘‘¡~‘¡¡‘‘¡‘¡‘‘‘¡¢‘‘¡¡¡‘‘‘‘¦¢~‘¡¡‘‘¡¡¡‘¡¡¡¡¡¡‘¡¡¡¡¡¢£¡¡¡¡¡‘¡¡¡¢¡¡¡¦¡‘¡¡¥¢¢¡¡¢¡¢¢Úþÿÿÿÿÿꦢ¦¦£¢¢¦¢¡¡¢¥¦¦¦¦¢¢¡¢¦¦¦¢¥¢¢¢¢¢¦¢¥¦¡¢¦¡¡¢¡¢¢¡¢¢¢¦¥¦¢¡¢¡¢¡¡¡¢¢¡¡¢¡¦¥¢¢¡¡¡¢¥¢¡¡¥¢¢¦£¢¢£¥¡¡¡¡¡¡¡¡¢¡¡¢¢¦¦¡¡¡¡¡¡¦¦¢¡¡¢¡¡£¥¢£¥¡¡¡‘¡¢¢¡‘‘¢¢¡‘¦¡¡‘¢¦¡‘‘‘‘‘¡¡¡¡¡‘¡¡¡‘¡‘‘‘‘‘‘‘‘¡¡¡‘‘™àÿÿÿþæ‘‘‘€‘‘‘‘‘‘‘‘€€‘‘~€‘‘‘€‘‘‘‘‘‘€}}‘‘}‘}€~€‘‘}}‘‘~‘}}}‘€~~}~}~‘€~‘}}}}‘~}}€}}}}}}}}}}v}}}Óÿú™}žýõv}|}wv}}v}}}}vv}}}}vwvv}ww|v}vvvvvvv}vvvvvvvvvvvvv}vvvvvvvlovvvuvvovvovoouvvvlovvvvlovvvvoullvuvoloolllllouuu{×ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!=9!Bóÿÿÿÿÿ÷_!!!!! !!!!! !!!!!!! !    !  ! ! ! !! !!! !! ! ! !  !!!q¥õþþÿýÿþþþþþýþÿÿþÿþÿþÿþÿþÿÿþÿÿæÓ             ÓÓüþþüþþþþüþþþýþþþÿÿüÿþÿüÿÿþÿÿúÕs}~}~‘‘‘~}}~}}}~‘‘¡¡¡~~‘‘‘~‘‘~~~€‘‘‘€}~‘‘~~‘¢¢‘¡¡¡¡~~¡¡¡‘~‘¢¥‘‘‘‘¡¦‘‘‘¡‘¡¡¢¡€‘‘‘¢¢¡¡‘¡¡¢¦¢¢¡¡¡¡¡¡‘¡¡¢¡‘¡‘¡¡‘¡¡£¡¦¦¦¡¡¢Úþÿÿÿÿÿë­«¦¢¦¦¢¢¥¡¡¢¦¦¢¢¦¦¢¡¦¦¦¥¡¡¡¡¦¡¢¦¦¢¡¢¢¢¡‘¡¡¡¢¡¢¢¦¦¦¡¡‘¡¢¢¡¡¡¡¢¡¡¡¢«£¢¡¡¡¡¢¢¡¡¢¢¢¢¢¢¡¢¡¢¡¡¡¡¡¡¡¡¡¥¢¢¢¢¦¢¢¡‘¡¡¦¥£¡¡¡¡¢¢¢¢¦£¡‘¡‘‘¢¥¡‘‘¢¦¡¡‘¡‘‘¢¦¦¡‘¡‘‘¡¡‘¡¡¡¡¡‘‘¡¡¡¡¡‘‘€‘‘‘‘‘§íÿÿÿýÚ‘‘¢€}~‘‘‘‘‘€€~‘¡‘€~‘‘‘‘‘¡‘‘€}~}~‘‘‘‘‘‘~‘€}~}}}‘‘}}}‘€}‘}}}‘}¡~}€~}}‘‘}‘}vv}}}}}}vv}vw}}×ÿ÷‘}§ýõvv}}}w}}vw}}}v}}}}}}vv}}}vvvvvvvvov}vvv}}vvvvvv}vv}vv}}vplovvvvvvoolvvwvovuovolvuvtlovvvlllouvllllvullluvul{ÌúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=@=!Bóÿÿÿÿÿ÷_!!!!!! ! ! !!!!  !   !!       !!! ! ! !  !!!!  !!!=qšíþþþþýþþþþþÿÿÿþþÿþÿþÿþÿÿþÿþÿþæÓ       Ó×þýþýþüþþýþüþüþþüÿÿÿÿþÿÿÿþÿþÿúÖ~‘}}}}~€~‘€~}~~~}~‘‘~~€‘€‘‘‘‘‘‘‘~€¡‘‘‘~‘‘‘¡¡‘‘‘¡‘‘‘¡‘‘‘‘¡¡‘~‘¡¡¡‘‘‘¡¡¡‘¡¡‘‘¡¡¡¡¡¡‘¡¡¡¡¡¡‘¡¡¡¡¡‘¡¡¡£¥¢¡‘‘¢¦¢¡¡¡¡¡¡¡¡¡Ýþÿÿÿÿÿꥢ¡‘¢¦¥¡¡¡¢¡¡¦¦‘¡¦¥¢¡¢¢¡¢¢¢¦¦¡¡¥¢¢¡¢¦¢¦¢¢¦¥¢¦£¥¢¦£¢¦¡¡¦¦¢¢¥¦¥¢¡¡¦¦¡¡¢¢¢¢¦¦¦¢¢¢¢¥¡¡£¥¢¦¢¡¡¡¥¢¥¡¡¢¢¢¢¢¡‘¡¡¡¢¡¡¡¡¢¡¡¡¢¡¡¡¡¡‘¢¦¢‘¡¦¢‘¢¡‘¡¡‘¡¡‘¢‘¡¢¡¡‘‘¤¡¡‘¡¡¡¡¡‘‘¡‘¢¡‘‘‘‘‘‘§ëÿÿÿÿõ¬‘‘¢¡~‘¡‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€‘‘~€‘€}~‘€‘€}}~€‘‘‘‘~~‘~}~}}}‘‘‘}|‘}‘}w}‘}}}}€‘}}}}}}}}}}}~}}Óÿú™vžÿõ™}}}}}vv}}}w}vvv|v}}vvvpw}vv}vv|vvvov}vwvvvvv}vopvvvvoovvovvvvvvvovulovoovvpllooovvvllvoouvvooouuuollluluvu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!!!!!!!!!! !!!!! !!!!!!!!! !! ! !! !!! !    !  ! !   !!  !!     =q¥íÿþþþÿýÿþþþüÿÿþÿþÿþÿþÿþÿþÿþÿÿèÓ   !      ÓØüüþþýþþüþþýþþþþþÿÿüÿþÿüÿþÿþÿúÖŽ~}~~}~‘‘~‘‘}}~}‘‘~‘‘‘‘‘¡¡‘¡¡‘}‘¡¡~‘¡¡‘¡‘‘¡¡‘€‘¡¡‘‘‘¡¦‘~‘‘¡¡‘‘¡¡¡¥¡¡¡¡¡¡‘¢¡~‘¡¡¡¡¡¢‘‘¡¡‘‘¡¡¡¡¡¡¡¦¦¡¡¡£¢¡‘‘‘¡‘¡¡¥ãþÿÿÿÿÿ梡¡¡¡¥¦£¡¢¢¡¡¢¦¢¢¢£¢¡¢¡¡¡¢¦¢¢¢¡¡¦¢¡¦¦¡¡¢¢¦¦£¦¦¦¡¢¢¢¦¢¢««¦¦¡¦£¡¡¡¢¥¡¡¢¢¡¥¦¢¢¢¢¢¦¦¡¡¡¦¢¡¡¡¢¥£¢¡¡¦¡¡¡¡¡¡‘‘¡¡‘‘¡‘¡¢‘¡¢¥¡¡¡‘‘¡¦¦¥¡¡¡¥¦¢¡‘¡¥¡¡¡‘‘‘‘¡¡‘‘¡¡¡¡‘‘¡¡¤¡‘‘‘‘¡¡‘‘‘¡§æþÿÿÿýÚ¤¡¡‘‘‘~‘¡‘‘‘‘‘‘‘‘€‘€€‘¡‘‘}}}}~~‘€‘‘}}}‘‘‘‘€}€‘‘‘}}}}}}}}~}}‘‘}}}}}€‘€}v}€‘‘‘}}}w}}}}}}}€‘×ÿ÷™}žÿõ‘}ww}vv}}}}}vppvvvvvvvvvv}vv}vv}vvvvvvvvvvvvv}}voppvvvouvp}}vvvvvooooooovvuollllulvllllllvvvoluvvvllluolu›òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yòÿÿÿÿÿ÷_!!!!!!!!!!!!!!! ! !!!!! ! !   !  ! !! ! ! !  !  !!!  ! ! 9pªõþþþþþþýþþþÿÿþÿþÿþÿþÿþÿÿÿþÿÿþæÓ          Ó×þþüþüþþýýýþüþþþüÿÿþÿþÿÿÿþÿÿÿûÖ}}~}~}}‘‘~~€‘}}~‘‘‘~}~‘‘~~~€~~¡¡}~¡¡€‘‘‘€~‘‘¡‘~~‘‘‘‘‘~¡¡‘~¡¡¡~‘¡‘‘‘‘‘¡¡¡¡‘¡‘‘¡¦‘‘¡¡¡‘¡¡¡‘¡¢¡‘¡¡¢¦¢¡¡¡¡¡¡¡¡¡¡¢¢¡¡¢¡£¡Úþÿÿÿÿÿꥡ¢¦¡¡¡¡¢¦¢¡¢¢¡¢¢¡¢¡¡¥¢¦£¥¢¢‘¦¦¦¦¡‘¦«¥¢¢¡¥¢¢¢¡£¢¡¢¡¡¢¢¦£¥¦¢¡¢¢£¥¦¦¡¡¥¦¢¢¡¢¢¦¡‘¢¦¢¡¥¦£¥¡¡¡¡¡¢¢¦¢¡¡¥¢¥¢¡¡¦¦¡¡¡¡¦¦¢¡¡¡¢¡¡¡¥¡¡¡¡¥¡‘‘¢¡‘‘¦¡¡¡¡¥¡¢‘‘¡¡¡¡‘‘¡¡¡¡‘¡‘‘¡‘‘‘‘¡¤¥Úýÿÿÿÿõ¬‘¡‘€‘‘‘‘‘¡¡‘‘‘‘€~‘‘‘‘}‘‘‘€‘‘‘‘‘}~~‘¡‘}}¡‘}~}~‘‘}€}}€‘€‘}~}~€}}}}}}€}}}}}v}‘}}}}}}}}}}€}}}w×ÿõ}žÿõ}v}}}}vv}}}v}}}vv}}vvvv}}vvv}vwvvvvvv}vvvvpvvvvvvvvvvvvvuovvoovvoovvvvoooovvvovvuuvouuuuovulllllvlluou˜èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!9!!Zóÿÿÿÿÿ÷_ !!;!!!!!!!!!! !! ! !!!! ! !!! !!  !  ! !  !  !  !!  !! !!!    ! !!=}ªõþþÿþÿýÿþþþýÿÿþÿþÿþÿþÿþÿþÿþÿÿæ×    !          Ó×üþüþþþþüþþýþþþþþÿÿþÿþÿüÿþÿþÿúÖs~€~~}}~‘‘}}~}}~‘‘~~}}}‘~}}}~~}~‘~}‘¡~‘¡~‘¡‘~‘‘‘‘~~‘¡¡‘‘‘‘‘‘~~‘¡‘~¡¡‘¡‘‘‘‘¡‘‘‘‘¡¡‘¡‘‘¡¢¥¡¡¢¦¥¦¥¦¢¡¡¡‘‘¡¡¡¢¥¢¢¦¡‘Úþÿÿÿÿÿ楡¡‘¡‘¡¢¦¢¢¥¢‘¡¡¡¥¦¦¢¢¦£¦¦¢¢¢¦¢¡¡¡£¦¦«¢¢¡¦¦£‘¡¢¦¢¥¦¡¡¡¢¦¢¢¢¦¥¢¦¦£¡¡¡¡££¢¡¢¦¢¡¡¡¡¡¢¦£¢¢¢¢¢¡¡£¦¥£¥¦¦£¦¢¡¡¥¦¢¡¢¡¦¦¥¢‘¡¡¡¡¡¦¢¡¡¡¡£¡¡‘¡‘‘¢¡‘¥¦¢¢¦¡¡¡¦¦¥¡‘¡¡‘€‘‘‘‘‘¡¡‘€™ÚûÿÿÿÿûÚ¡‘¡‘‘€€€‘‘‘¡¡‘‘‘‘~‘‘‘‘‘€‘~}}}€‘¡‘‘}}‘‘‘‘}€‘}~€}€‘}}}}}}‘‘‘‘€‘}}}€€}}‘‘}}}}}}}}v}}}v}€‘‘}}}}Ùÿõvžÿôvv}}vvvv}}}}}}}}vvvvv}wvp}}w}vvvv}}}v|vpvvvpv}}vooovvvvoovlllovovvovvoovvvoopoopoovpvvullCllluvououÇúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!@!Zóÿÿÿÿÿ÷_!!!=!! !!!! !!!! ! ! ! !!!  ! !  !  ! !! ! !!!!!   ! ! !  !!!  =ެõþþþþþþþþþþÿÿþÿþÿþÿÿÿþÿþÿÿÿþÿæÓ ==      Ó×þþýþüþþþþüþþýþþüÿÿþÿþÿÿÿÿþÿÿúÖ}‘¡}}~}~€‘‘}~~~~‘‘~‘‘‘~~€‘‘‘~‘‘¡‘~~¡‘‘‘‘‘~~‘¡¡¡‘~‘¡‘¡‘¡¡‘‘‘‘‘¡¡~‘¢¢‘‘‘‘¡¡¡¡¡¡¡‘¡¡¡¥¡¡¡¡¡¡¡¢¡€¡¡¡¡¡¢¢¡¡¢¥¡¡¡¢¢¢¡¡Ýþÿÿÿÿÿꦦ¢¡¢¦¢¢¡‘¡£¥‘¢¦¢¢¡¢¥¡¢‘¡¢¢¢¢¢¥¢¢¢¦¡‘¢£¥¢¢¢¡¡¢¥¢¡¢¦¦¡¢¦¥¡¢¢¢¡¡¢£¢¢¢¦¢¡¢¥¢¡¢¢¢¢¢¡¦¦¢¡¡¦¡¥¡‘¡¦¢¡¡¡¡¡¡¢¥¡¡¢¢‘‘¡¡¦¥¡¢¡‘¡¡¡¡¡¥¡¢¡‘¡¡¡‘¡¡¡¥¡‘‘¡¡¡¡‘‘‘¡‘¡‘‘¡¢‘€¡¡¡‘¡¡‘¤Ô÷ÿÿÿÿýॡ‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘~€€‘‘‘€‘~‘‘‘€‘‘‘~€~€‘~‘‘‘‘}}‘‘~~~~€€}}}}}€~}}‘}}}~}}}}}}}}}}}}}}}}}}}}}}vÚÿ÷}Òÿõ‘}v}}}v}w}}wvv}vvvvv}}vvv}vv}}vvvvvvvvvvvvvvvpuvvvvpvoovpvvvvvvoooovvuvooulovvlovuvvoolovvlouuuooolu{ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!@óÿÿÿÿÿ÷_!!! !!!!! ! !! !!! !! !  !!! !!   !  !   !  !  !   !    !   !=qªíÿþþþýÿþþþýýÿÿþÿþÿýÿþÿþÿþÿþÿÿæÓ  7ZCB>!      Ó×þüþýþþþüþþþþþþþþÿÿþþÿþÿüÿüÿþúÖs~~}~}~}~¡¡‘‘~}}~‘‘‘‘‘‘~~‘¡‘¡¡~}~‘¡‘‘‘‘¡‘‘‘~~}¡¡¡‘‘~‘¡¡¡‘¡‘‘‘¡¡‘¡¡‘‘‘‘‘‘¡‘¡¢¡¡¡¡¢¡‘‘¡¡¡¢¡¦¦¡‘¡‘‘‘‘‘‘‘¡¢¢¡¡¦¦¡‘‘¡¢¡¡¥ãþÿÿÿÿÿꦦ¥¦¦¦¦¢‘‘¢¦¡¡¡¦¦¡¡‘¡¡¢¡¡¥¢¡‘¢¦£¡¦¦¡‘‘¡¦¦¡‘¡¡¢¦¡¢¢¢¡¡¦¦¢¡¡¡¡¡‘¢¦¡¢¢¢¦¦¦¢¡¢¡¡¦«¦¥¦¦¡¡¢¢¡¡¢¡¢¦¢¡‘‘¡‘‘¡¢¢¢¥¡‘‘¡¥¦¡‘‘‘¢¡¡¥¢¥£¡‘‘‘‘‘‘‘‘¡¢¡¡‘‘¡¡‘¡‘¡¡¡‘‘‘‘¥¡‘‘‘¡‘¢¦¨Ôõÿÿÿÿþ륑¡‘‘‘‘€¡¡¡¡¡‘€‘}}~‘‘‘‘~}}‘¢¡‘‘‘‘‘}}‘‘‘}}~‘‘}~‘‘€}}€‘}}}‘}‘‘~}}~}}}}€‘}}}}}}}‘‘€€}}}€‘}v}v}}vvv}‘ßÿõ‘‘Óÿñ}}}v}w}|vvvvvvvvvv|}}wv}}}}vv}vvvvwvvvvvvvvvpopoovoopvoooov}vvupouvovvvooollvlluvvvolovvvvvvvvuuuoo˜òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!B÷ÿÿÿÿÿ÷_!9! !!! !!!! !! !!!    ! !!   !! !    ! ! !!! ! ! ! !   =wªíÿýþÿþþþþÿýÿÿÿþÿÿþÿþÿþÿÿþÿÿþÿæÓ  =Z†–†C   ÓÙüþþýýýþþüþýþýþþüÿÿÿþþÿþÿÿÿÿÿúÖ~~€‘}}~~~}~€‘‘‘~~~~‘~~‘~~€¡‘~‘‘€‘‘¡~~~‘‘‘‘~‘‘‘‘‘‘‘‘‘¡‘¡‘‘¡¡¡‘¡‘‘¡¡‘¡‘‘‘¡¡¡¡¡¢‘‘¡¢¡‘¡‘¡¢¡¡¡¡¡¡¡¡¡¡¡¥¡‘¡£¥¡¡¢¡¥¢¢¢Ýþÿÿÿÿÿ襢£¥¡¡¡¢¢¡¡¦¢¡¥«¥¢¢¡¢¡¢¡¡£¢¢¡¥¦¡¡¦«¢¢¢‘¢¦¢¡¢¢¢¦¢¢¢¢¢¢¢¢¢¡¢¡¡¢¢¦¦¢¢¢¢¡¡¢¢£¥¢‘¡¦¡¡¡¥¢¡¢¢¢¡¡¢¡¡¡¢¢¢¡¢¢¡¡¡¡¢¢¢¢¡¡¡¢¡¡£¥¡‘¡¡¡¢¡¡¡¡¡‘¡¡¡¢¡¡‘¡¡¡¥¡¡‘‘¡¡¡¡‘‘¡¡¡‘¡‘‘¥§õÿÿÿÿþõ¬¡‘¡‘‘‘¡¡‘‘€€¡¡€€‘‘‘‘‘‘‘~‘‘‘€‘‘€‘€~€€‘~€¡‘}~€€€€‘‘}}€}‘‘€€‘‘}}}‘}€}}}}}~}}€}}~~}}}}~}}}}}v}}}}}}}€Úÿ÷}Óÿèv}}}}}}}vv}}vv}}}w}}vvvv}}vvvvvvvvvvvpv}vovvvvvpvwvuvvvvvvovvppvvvvolvvvovuuvvvovooullvulollolllolužúýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Bóÿÿÿÿÿ÷_99!!! !!! ! !!!! ! !!! !! !!!!   !        ! !!!  !!   !  =}¥õþþþþþþþþþýýþÿÿþÿþÿÿþÿþÿÿþÿÿÿèÓ    8ƒÇèÄ_>       ÓÓüþüþýþüþþþþþþþþþÿÿüÿþÿþÿüÿüÿúÖŸ~}~}}~€}}}}~‘‘‘‘‘‘~~‘€€~‘}}~‘‘‘~‘~~‘¡‘‘‘}~~¡¡‘~~‘‘¡‘‘‘‘‘‘‘‘¡¥¡‘‘‘‘¡¢¥‘‘¡‘‘~‘¦¥¡¥¥¡¡¡¥¢¡‘‘‘¡‘‘¥¢¡¡¡¡¦¦¢¡¡¡¢¦£¢¥¡¡¡¡¡¡Úþÿÿÿÿÿ楣¦¡¡¡¡¡¦¦¢¢¢¢¦«¢¡¡¡¡¥¢¢¡¦¦¡¡¦¦¦¦¥¢¢«¦‘¡¢¦¡¢¢¦¦¡‘‘¢¦¢¡¦¥¢¢¡¡£¢¦¥¢¦¥¢¡‘¡¥¦¦¦¡¡¡¡¡¡¡¡¡¥¦¦¡‘‘¡¡¡¥¦¦¢¥¦¢‘‘¡¡¢¦¦¡‘¡¢¡¦¦¢¡‘¡¡¡¡¡¡¡‘‘¡¢¡¡¡¡‘‘¡¡¢¡‘‘‘¡‘¤¡¡‘~‘¡¥¡¡¥§ëÿÿÿÿÿõÔ¡¡¡¡¡‘‘‘¡‘‘‘‘‘‘‘~‘‘‘‘¡¡‘}€‘‘~}~€}~}}~‘‘}‘‘€}}}‘‘‘}}}}}‘‘‘‘‘}}}}}}}}‘}‘}}€‘‘}€‘}}|}}}}}v}}|}}~€wv}}ßÿõ}Òÿèwv}}vvvvv}}vv}}|vv}vv}vvvvpv}vpvvv}vpvvvpoov}}wvpvvvv}vvvoovvoovvvvvopvvvvvoovvuvolollollllltoluloltuƒßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!9!Y÷ÿÿÿÿÿ÷x!!!!!! !!!!!!! !!! !  ! ! ! !! ! !!  ! !  !!! !  !   !   =wªíÿþÿþÿþÿþþÿþÿÿþÿþÿÿþÿþÿÿþÿÿþÿàÓ   >B–×™_    Ó×þþýþþþüþþþýþýþþüÿÿþÿþÿþÿÿÿþÿúÖ~}}~‘‘~~~}}~€~~€‘‘‘~~~€~~~‘‘~‘‘~~‘‘~~‘‘‘‘‘‘‘‘‘~‘¡‘€‘¢‘~‘¡‘¡¡‘‘‘‘‘‘¢¡€¥¡‘‘¡¢‘‘¡¡¡¢¡‘¡‘¡¡¡¡¡‘¡¡¡¡¡¡¡¡¡‘¡¢¡¡¡¡¡¡¡¢¢¡¥Ýþÿÿÿÿÿꥡ¡¢¡¥¡‘¡¦¢‘¢¢¢¢¥¢¢¡¢¡¢¡¡¦¦¡‘£¥¢¦¡¡¥¦¡¡¥¢¢¡¢¢¢¢¢¢¢¦¥‘¡¢¢¢¢‘¡£¥¡¡¦¦¡¥¢¡¢¡¡¡¢¢¢¥¢¥¢¡¡¡¡¥¢¢¥¢¥¡¡¡¡¢¢¡¡¢¡£¥‘¡¢¥¡¡¢¥¡¡‘¡¡‘¡¥¡¡¡¡¡‘¡¦¡‘¡¡¡‘¡¡¡¡‘¡¡¡¡‘‘¡‘‘‘‘‘¡¡§ëþÿÿÿÿûÚ¡‘¥¡‘‘‘‘‘‘‘‘‘‘‘‘~}‘‘‘‘€€‘‘‘~‘‘‘‘‘‘~‘€€‘‘‘‘‘€‘~€‘€€‘}€~~‘}}‘}}‘‘}}}}~€}}}}}‘}}}}}}}}}}}}}v€}}}}}}}àÿõ}}Óÿô}}w}v}}v}v}}vvv}}}}}vvvv|vwvvvvvvvv}vvvvvvvvvvvpvvvvvvvvvouvvuovvlvoouoouvvulopovvoooouuuuoovullulovvuo{ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!9!!!Bóÿÿÿÿÿ÷_!!9! !!! !! !!! !!  !!!!!! ! !  !!!  ! !    !!  !  !!   !   !9qªõýþþþþþþþþþýÿÿÿþÿþÿþÿÿþÿþÿþÿÿèÓ    $jƒƒ_j!   Ó×þüþýýüþþþþþþþþþþÿÿþÿþÿþÿüÿÿþúÖ}}~}‘‘€}~‘‘}}‘‘€~~~}}}‘‘‘~‘‘~~‘‘~~‘}}}}‘‘‘~}~‘¡‘‘‘‘~¡¡€~‘¡‘~€‘¡¡‘¡¡‘‘‘¡¡£‘‘‘¡€‘¡¡‘‘¡‘‘‘¡¡¡¡¡‘¡¡¢¥¡‘‘¡¡¢¥¡‘‘‘¡¡¡¡¦¦¦£êþÿÿÿÿÿꥡ‘¡¡¡‘‘¡‘‘‘‘‘‘¡¡¡¡¦¦¦¡¡¢¦¥¡¡¡¡‘¡‘¡¡¢¡¡¦¢¡¡¦¥¢¢¥¢¢¦¡¡‘¢¡¡¢¡‘¡¡¡¡¦¢¦¦¦¦¦¥¡¡‘¢¥¡¡£¦¦¢¡¡¢¢¥£¦¦¦¥¡¡¡¡¡‘‘¢¥£¢¡¥¡¡‘¡¢¡¡¡‘‘‘¢£¢¡¡¦¥¡¥¡¡¢¦¡¡¡¥¢¡‘‘¡¡¡‘‘€‘¡‘¡¡‘¥æþÿÿÿÿûॡ¢¡¡‘‘‘}€‘¡‘¡¡¡‘‘~€‘‘‘‘‘~~‘€‘‘€}‘‘€}~‘‘‘€}€€}}}‘‘~}}‘¡‘‘‘~}}‘€}‘€}‘‘‘‘‘}|}}~‘}}€}}}}}}}}}}v}‘}}€€}}‘}ßÿõv}Óÿè}vvw}}}}vvv}w}}}}}}}v}vvv}}}vvvv}}vvvvvv}}}vovvvv}vpovvvvvvuoovvvvollvoolo}vlovvvlouvupollovvolllltvʘvv˜ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ===!!Yõÿÿÿÿÿ÷_ !!!!!!!!!!! !! !   !! !!!!!  ! !  !! !!   ! !  ! ! !! ! !! !  !pšíÿþÿýþþþþþÿþÿÿýÿþÿþÿÿþÿÿÿþÿÿþæÓ$$8>        Ó×üþýþþþþþýýþþüþþüÿÿÿþþÿþÿÿþÿÿúÖ~}}}~€~~€~~}~~€‘~~‘}~~€‘‘‘‘}~‘‘~~‘‘‘‘‘‘~~‘‘‘‘‘‘‘¡‘}‘¡‘¡‘¡‘~‘‘‘¡¡¡¡‘‘¡¡‘¡‘¡‘‘¡‘¡¡‘‘¡‘¡¡¡¥¡‘¡‘‘¡¡¢¢‘‘¢¢¢¢‘¡¡¡¥¢¡¡¡¢‘¡Ýþÿÿÿÿÿ榢¢¢¢¡¡¥¡‘¡¦¢¡¡¢¢¢¢¢¢¥¢¡¡¡¢¢¢¢¢¢¢¡¡¡¦¡¡¢¢¢¡¢£¡¡¡¦¢¢¡¡¡¦¥¢¡¢¢¢¦¡¡¡¡¢¢¥¦¡¡¢¦¢¢¢¢¢¢¡¡¢¡¡¦¢¡¡¡¡¦£¡¡¥¢¢¢¡¡¡¡¡¡¡¡¡¡¡¡¢¢¡¡¡‘¡¡¡‘¡¦¡¡¡‘‘¡¡‘‘¡¡¥¡‘¡¥¡‘‘¡¡¡¡‘‘§Úýÿÿÿÿý륑‘¡¥‘‘‘‘‘~‘¡‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘~‘‘‘‘‘~€~‘€€€‘‘‘‘€}~€€¡‘}‘‘€€}}~~}€}}€‘}€}}€}}}}‘}}}}}}~v}}}}}}}}}}}}}}}€àÿõ}}Óÿè}}}w}}wwvw}}vv}}vvvv}wvvwv}vvvvww}vpvvv}vvvpvvvvvvvlvvvvvvvvvvovvvuvovvulvwoluvvouloopuvlllloouotlouvÇçÇ{voƒáýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Yóÿÿÿÿÿ÷_!!!!! !! !!!! !!!!!!!! !!!   ! !   !  !  ! !!  !   !   ! !=qªõýþþþÿþÿþþþýÿÿÿÿþÿÿþÿÿþþÿÿþÿÿèÓ       Ó×þþþýþþþþþþþüþþþþÿÿüþÿþþÿþþÿþúÖŽ}~‘€~}}}~~}}}}}}~‘‘~}}~~€‘‘~~‘¡‘€‘¡¢¢¡¡‘}~¡‘¡‘¡¡¡¥¡‘¡¢¡¡¤‘‘¡‘~¡¡¡¡‘¡‘¡‘¡¡¥¡‘¡¡¡‘¡¡¥¢¥¦¡¡‘‘‘‘¡¡¡¢¡‘‘¡¥¡‘‘¡‘‘¢¡‘‘¢¥¡¡Úþÿÿÿÿÿ뫦¦¦¦¢¢¡¡¡¡¥¢¡¡¡¡¢¢¢¡¡¡¡¢¢¡‘¥£¢¡¡¢¢¢¡‘‘¡¡¡¡¡¡¡‘¡¢¥¦¡¡¢¢¦¡¢¦¦¦¦¢¡¡¢¡¡‘‘¡¢£¦¦¥¦¦¦¡¡¡¡¢¥¡¡‘‘¡¡¡¡¡¢¦¢¥¡‘¡¡¡¡¡‘¡¡¢¥¢¡¥¡¡¥¡‘‘‘‘‘‘¡¡¡¡¡‘‘‘¡¡‘‘‘‘¡¦£‘‘¡¥¡¡šÚûÿÿÿÿþõ§‘}~‘¡‘‘‘‘‘‘‘¡‘€€‘‘‘‘‘‘‘‘‘}‘¡¡‘}€‘¡¡‘‘}‘‘}~~‘‘€‘~}€‘~€~}}€€€‘}‘}€~}}~~}~}}}}€‘}}}‘‘}}‘~}}}}}}‘}v}}}}}vvvw}‘àÿè}vÊÿë}}}}}}}v}}}vvvvvppvv}}}wvvvvv}vvvpvvvpvvvpvwvvvvvvvpvvvlvvvvvvvoloopv}vovvoovvllvovvvvlluoltuvoovvvul{çèuluñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Zòÿÿÿÿÿ÷_!!! ! ! ! !!! !! !!! !   ! ! !!    !! !   ! ! !   !! =ެíÿþÿþþþýþþÿþÿÿþþÿþÿþÿþÿÿÿþÿÿÿàÓ   Ó×þüþýþýþþüþþþþþþüÿÿÿþÿþÿþÿÿþÿúÖ~~~~‘~}}~€‘~}~~~~~~€~~}~‘€‘‘‘‘}~‘‘‘‘‘‘‘‘‘‘€~‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘¡‘‘‘¡¡‘‘¡¡¡¡‘‘¡¡‘‘¡¡‘‘¡¡¡¡¡¥¡‘¡¡¡‘¡¥¢‘¡‘¡¡¡¢¢¢¡‘‘¡¥¡¡¡£¡¡Úþÿÿÿÿÿꥡ¡¢¡¢¡¡¡¡¢£¢‘¡¥¢¡¢¡¡£¢¥¦¡¡¡¡¡¢¡¡¥¦¡¡¢¡¢¢¢¦¢‘¡¡¡¢¡¦¢¢¥¢£¡¡¡¥¡¡¢¡¥¢¢¢¡‘¢¦¥¢¡¡¡¢¡¡¡¡¢¢¢¡¡¡¡¢¢¡¡¡¡¢¡£¥¡¡¢¡¡¡¡‘¡¡¢¢¡¡¡‘¡¦¡¡¡¥¡‘¡¡¡¡‘¡¡‘‘¡¡‘¡‘‘¡¡‘‘¢¦¥Ô÷ÿÿÿÿþõÖ¡‘‘‘‘¡‘‘‘‘‘€‘¡‘~‘¡‘‘‘‘‘€‘‘~}‘‘‘~€€‘€‘¡‘~€~€‘‘‘‘}‘}‘‘€~~}}€€‘‘}~~}}}‘‘}}}}}}}}‘}€€€‘}v}‘}}}}}‘}}}}}}}}}}}}v}}àÿèw}Óÿè}wv}}}}vvv}}}v}vvv}v}wvvvvvvvvvvvvv}vvvvvpvvvovvvlvwvovoovvvvoovvoovvovvuovuououuoluvvloputllloououloulvÌ÷ߘul{×÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!99!Zóÿÿÿÿÿ÷_!!!!! !!!!! ! ! !! !! ! !! !!! ! ! !  !   ! !  !  !  !      !=}¥õýþþýÿþÿþþþþÿÿÿÿþÿÿÿÿÿþþÿÿýÿÿèÓ $    Ó×þüþþþþþþýþþþþþþþÿÿüÿþÿþþÿþÿÿúÖ}}}~‘¡‘~}}~‘‘‘‘}}}}~~€‘‘€‘€}}‘‘~}}}}}‘¡‘}‘~€}‘‘‘€~‘¡‘~€€‘¡‘‘‘¡‘‘‘}‘‘¡¡‘‘‘‘‘‘¡‘‘‘¡‘‘¡¡¡‘‘¡¥¡‘¡¡¢¡¡¡¢¡¡¥¦¥¡‘‘¡££¢¡¡¡¡Úþÿÿÿÿÿê¡‘‘¥£¥¦¢¢¢¢¦¦¢¢¦¦¢¢¥£¦¦¦¢‘¡¥¢¢¢¡‘¡¦¢¡¢¡¡¢¥«¦¥¦¡¢¦¢¦¦¦¦¦¥¡¢¦¡¡¡¡¡£¢¢¦¢‘¢¦¡¡¡‘¡¡‘¡¡¡¥¢¡¡¡¡¢¦¡‘‘‘¢¡¡¡¦¢¢¢¡¡¢¢¢¢¡¡¢¡‘‘‘¢¥¡¡¢£¡¡¡¡¡¡¡¥¡‘¡¡‘‘¡‘‘¡¡¡§ÔõÿÿÿÿÿûÚ‘¡¥¡¡¢¡‘‘€‘‘¡‘¡¡‘€‘¡¥‘~€‘‘‘¡‘}}‘‘€€~€‘‘‘‘}‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘€€€~€‘}~}~}}€}}€‘‘~‘‘}}}‘}}}}}}‘}}}~‘}}}}}}}}w}}}v}}™æÿè}}×ÿè|vpv}vvvv}}}}}vvvv}}vvpvpv}vvvvvvv}}vvvvvvvvvvvvvvovvollv}wvvvvvovvvuvlllooollupoollolluuoloouooolllllllo›ñ÷Ì{uu”ßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!@==Yòÿÿÿÿÿ÷]!9!! !!!!@!!!!!!!!!!!!! !!!  !!    ! !!! !  !   ! !   !!  !=qšíÿþÿþþþýþþþÿÿÿþþÿÿþþÿþÿÿÿÿÿÿþàÓ   Ó×þþþþýþüþþþþþþþþüÿÿÿÿþÿþÿþÿþþûÖ~‘~}}~€€}~~~~‘‘‘}}~€‘‘€€~~~€~}¡‘~}‘‘‘€€€‘€‘‘‘€‘¡‘~‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘¡¡‘¡¡‘¡¡¡¡‘‘¡¦¡‘¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥¡¡¡¥Ýþÿÿÿÿÿ楑¢¦¢¡¡¢¡‘¢¢¢¡¡¢¢¡¡£¥¡¥¢¢¡¡£¢¡¡¢¡¢¦¡¢¡¡¢¡¢¦¢¢¡¡¡¦¢¡¢¢¢¡¢¡¡¢¢¥¦‘‘¢¢¢¥¡¡¡¦¢¡¡‘¡¥¡¡¡¢¡¡¢¢¡‘¢¢¥¢¢¢¡¢¡¡¡¡¡¡¡¡¡¢¥¡‘¡¡‘‘¡¡¡¡¡¡¡¡¡¡¡‘¡¡¡‘¡¡¡¥¢‘‘¡¡‘‘¥Üíÿÿÿÿÿû॑‘‘¡‘‘¥‘‘‘¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘~‘‘€€‘}€‘‘~€‘‘€‘‘‘€‘‘‘‘}~€€}}€}}~}}~‘}}}}}€}}}~}}}}}}}}}}}}}}}}}}}}}}v}}àÿè}Óÿè}w}v}}vv}}vw}}vvvv}}vvwvpvv}vvw}vvvvvvwwvvvvvvvovvvuvvvlo}vvvpvllvwlvouovouvouooouooouooooououlullllululll{×÷òž{ouñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ==!!!Cóÿÿÿÿÿ÷_!!!!! !!!!!! !!! !! ! ! !! ! ! !!  !  !  ! !   !  !  ! !  ! ! =qªõþþýÿþÿþÿþþýÿÿþÿþÿÿÿÿþÿþÿþÿÿÿèÓ$      ××þüþþýþþþþþüþþþþþÿÿüþþÿþÿþÿþÿúÖŸŽ~‘‘~}}}}}€~}}}}~~€‘‘‘‘‘‘~€‘‘}~‘~}€‘¡‘‘¡‘€~¡‘‘‘‘‘‘€‘‘‘¡¡‘¡‘¡‘‘‘¡‘€‘¢¡€€€‘‘¡¡‘‘¡¡¢‘‘¡‘‘‘‘¡‘‘¡¢¡¡‘‘¡¡¡¡‘‘‘‘¡¡¢¢¡‘¡¡¡‘¦¦àþÿÿÿÿÿꥡ¡¡¡¡¢¢¡‘¡¡‘‘¡¢¡¡¢¡¡¡¡¡¢‘‘¡¡¥¦¥£¢¢¡¥¢¢¦¡¡¢¡¡¡‘¡¥¦¥£¡‘‘‘‘‘¡¡¡¡¡¡¢¦¦£¡¡¦¡¡¡‘‘£¦¢¢¢¢¡¢¥¢¡¡¢¦¢¢¢¢¡¡¦¥‘‘‘¡¥¢¡¡¡‘¡¢¢¡¢¢¢¢‘¡¡¢¡‘‘‘¡¡¡¤‘¡¡¡¦‘‘¡¡¡™§ëÿÿÿÿÿý륡‘€‘~~~‘‘‘‘‘‘¡‘‘‘‘‘‘~‘¡‘‘¡¡‘€€‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘€~}}~‘‘}}}}‘‘¡‘¡‘‘}~‘€}€€‘}}}‘€‘‘}€}‘‘}}}}}}‘€}}}}}v}}‘}}}}‘}}}}}}àÿæ}}×ÿà}}|}}vvvvv}}}vv}v}}}}}}}vpvv}vvvvpoppvwvpvvvvvvpvvvpvvvov}povloouwvvoloopvvpoouvvoovuvvvluvvvvvluouuuoluuuou˜èüß”tC{×÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!!!!!!! !! ! !!!!!    !!!  !!!  !! !  ! !!   ! ! !!  ! ! !  !!9}ªíþþÿýþýþýþþÿÿÿÿþÿÿþÿþÿÿÿÿÿÿþÿàÔ!$  Ó×þþþþþþþþþþþþþþþþÿÿÿþþÿþþÿþÿÿúÖ}}€€~}~}~‘‘€}}}}‘€€~‘‘€~}~~€‘‘~‘~€}~‘‘‘‘¡‘~~‘‘‘‘€~‘‘‘‘‘¡‘€‘‘‘¥‘‘‘¡‘‘‘‘‘‘‘‘¡¢‘‘¡¤‘‘¡¥¡‘‘‘¡¡¡¡¡¢¡‘‘¡¡¡¡‘‘¡¡¡¡¡¡¡‘¢¢‘‘¢¥Ýþÿÿÿÿÿꤡ¡¡¡¢¡¥¡¢¢‘¡¥¡¢¢¢¢‘¡¢¦¡¡¡¡¡¡£¢¡¦¡¡¢£¢‘¢¡¡¦¡¥¡¡¡¡¢¢¥¡¡¡¡¡¡¡¡¢¢¡¡¡¢¥¢¡¡¡¡¡¡¡¡¥¦¢¡¥¡¡¡¡¥¢¡¡¥¡‘¡¥¢¡¡¡¡‘¡¢¢¡¡¡¡¡‘¡¡¡¥¡¡¡¡‘‘¡¥¡‘¡¥¡¡¡¡¡‘‘¡¡¡¡¡­àþÿÿÿÿýõ§‘¡¡‘€‘¡‘‘‘‘‘¡‘‘‘‘‘¡‘‘‘~‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘~‘‘~€‘~€€€‘‘‘‘‘‘€‘}€}}~}€~~}}}€€}~}€}}}}}}}‘}}}}}}}}}}}}}}€}}}w}v}}æÿà}×ÿàwv}}v}v}vv}vvv|v|v}}vvvvvvvv}}vvvvvvvvvvvvvvvvvvvvvpvvvovwvovoouvvvvvuoulvvvuvloovvolovvllvuouoloulooullouolo{Ì÷÷Ê{ulƒßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!9!Cóÿÿÿÿÿ÷_!!!!!!! !!!! !! !!! !  ! ! !! !!  !       !  !   !! !q­íÿþýÿýÿþÿþþýþÿþÿÿþÿþÿþÿþÿþÿÿÿèÓ!!!  ÓÙüþþýþüþþýþþþþþþþÿþþþÿþÿþÿþÿþúÖŽs}}}}~‘‘‘‘‘}~}~~~~€‘‘~}~‘‘‘‘€~‘‘¡‘‘‘~~‘¡‘€~€‘‘¡¡~‘¡‘~‘¡‘€‘~€¡¡€‘‘¡‘‘‘¡‘¡‘‘¢¢¡¡¡‘‘‘¢¡‘¡¡¡¥¡‘‘‘‘‘¡¥¢¡¡‘¡¡¢¥¢¡¡‘¡¡¡‘‘¡¡Úþÿÿÿÿÿꥢ¡¡¡¢¡¢¡¦¥¡¡¦¢¦¦¥¡‘¡¡¢¢¢¡¥¢¦¥£¦¦¡¥¢¢¡‘‘¡¢¥¡¡¡¢¦¢¡¡¡¡¦¦¢¢¢¢¡¥¢¥¦¢¡¡¡¡¡¡¡¥¦¡¡¦«¥¡¡¡¡‘¡¢¢¡¡¡¡‘‘¡¡¡‘¡¡¡¢¦¡¡¡¡¡‘¥¦¥¢¡‘‘‘‘‘‘‘¢‘¡¢£¡‘¡‘‘‘‘¡¡¥¨ÚûÿÿÿÿþõÔ¡‘‘‘¡‘‘¢¥¡¡¤‘‘‘‘‘¡¡¡¡¥‘‘‘‘‘‘‘‘€€€€‘‘‘€~}‘‘‘‘‘‘€}~€~~‘‘‘}}}~}€}}}}}}}}}}~€}~‘‘€‘‘}~}~€}}}}~}}}}}}}}}}}}}vvv}}}vv}}}}}™æÿà}‘Ùÿß}}}}wvvvvvvvv}}vv}wvvvv|}}vvvvvvv}}}vvpvvvvvvpooovv}wvvoovvovovvoovvvovvoolllvvuvoluluvlouupolllllllllultolllloƒèüèvluñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿúx!!!!! !!! !!!!! !!! !! ! ! !   ! !!!  !  !  !!  !! !  ! !!   !  =qªõþþÿýÿýÿýÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿþÿàÓ Ó×þþþþþþýþþþþþþþþþÿÿÿþþÿþÿþÿþÿúÕ}~‘}}}}‘‘€€~}~}€}}~€‘‘€}‘€‘‘‘}‘‘‘‘‘‘€‘‘‘€‘‘‘‘‘¡‘~‘¡‘}‘¡‘‘‘~‘‘‘‘€‘‘¡‘¡‘‘¡‘‘¡‘¡‘¡‘¡¡‘¡¡‘¡¤¡¡¡‘‘¡¡‘¡¡¡‘¡¡¡¡¡£¢‘‘¢¡¡¡‘¡¡¡Úþÿÿÿÿÿꥢ¡‘¡¥¡¡¡¡¢‘¡¢¡¥¢¢¡¥¡¡¡¢¢¡¢¡¢¡‘¦¦¡¢¡‘¢¡¡¡¡¡¡¡¡¡¡¦¡‘¡¢¡¥¡¦¦¡¡¡¢¡¡¢¡¡¡¡¢¡¡¢¦¡¡¢¦¡¡¡¡¡‘¡¦¥‘‘¡¡¡¡£¥¡¡¡¡¡¡¡¡¤¡¡¡¡¡¡¡¡¢‘‘¡¡‘‘¡¢¡‘¢¡¡¡¡‘¡‘¡€¥ÖõÿÿÿÿÿøÚ¥‘¡‘¡‘‘‘¡¡¡¡¡¡‘‘‘‘‘‘‘‘‘¡‘‘¡‘€‘‘‘‘‘~‘‘¡€}‘€‘}‘‘‘‘‘}~‘‘}€€‘‘}~~}}€~}}‘~}}~}}}€}~€}}‘‘}}}}‘}|}}}‘}}~}}}}~}v}}}}}}}}}vv}}}}‘æÿà}Ùþà}}}}}}}v}vvv}}v}vvw}vvvv}vvvvvvvv}vvvvv}vov}vpvovvvwwvuvoovovvvpovpvvuvvvoouluvovvlooooouoouoolllulCouoolulllulluÇ÷ú߃ulvÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_!!! !! ! ! ! !!! ! !!! ! !  !   !  !    !  !   !! =w¥õþþþþþýýýþþýÿÿþÿþÿÿþÿþÿþÿþÿÿÿèÓ  ÓÓþüþþüþþþþþþþþþþþÿþþþþÿþÿþÿþÿúÖs~‘~}~}€€}}~€€€‘‘~€‘‘}}~}}}}‘‘‘‘}}}~‘‘€}~‘‘¡‘¡‘‘}‘¡¡‘‘¡¡‘‘€‘‘‘¡‘‘‘€‘‘¢¡¡¡‘‘‘‘€€‘¢¡¡‘‘‘‘‘¡¡‘¡¡¡¡¡‘¡¡¡‘‘¢¢¡‘¡¡‘‘¡¥¡¡¡¢¢¡Úþÿÿÿÿÿꥢ¡‘¡¡¡¢¥¡¡‘¦«¦¢¡¡¦¦¦¡‘‘¡¡¡¡¡¡¡¢¢¡¡‘‘¡¡¥¦¡¡¥£¦¥¡¡¡¡¡¥¢£¢¦¥¢¦¥£¡¡¡¢¡¢¢¡¡¡¥¦¢‘¡¡¡¡¢¢¡¢¢¢¢¡¡¡¡¢¢¢¡‘‘¡¡¡‘¡¡¡¡¥¦¡¡‘‘¢¥£¡¡¡¡‘¢¦¥¡‘‘‘¡¥¡¡¡¥Ôëÿÿÿÿÿûê‘‘¡‘‘‘¡‘¡¡¡‘‘‘€‘‘¡¡‘‘‘‘‘‘€‘‘¡¤‘‘‘‘‘‘‘‘¡¥‘‘‘‘‘~‘‘‘‘€‘‘‘€€‘‘€}‘‘‘}‘‘‘~‘‘‘‘¡‘¡‘}}‘‘€}}}}}}}}}}}}}}‘‘}}}}}}}}v}~}}}}}}vv}}}vèþßvÙÿÙ}}vv}}v}}}}v}}vvvvv}}}}wv}}vvvv}}}vopvwvpovvpuvvvvvvppvvovpvooooooovvolllouollovvllvuolllllllluvuoltuoolllltuolCllƒàüòÇuuCƒßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=9!!!Yóÿÿÿÿÿ÷_!! !!!!!!!!!! !!! !!!!!! ! ! !!!   !  !  !  !!  !!  !! !! ! !!=qªíÿþÿþÿþÿÿýþÿÿÿþÿÿÿþÿÿÿÿþÿÿÿþÿæÓ  Ó×þþþþþþþþþþþþþþþþÿÿþÿþþÿüÿþÿþúÖ}~€€~}~}}}‘‘€~}~}}€‘~€~}~~~‘‘‘‘~~€~€‘€~‘‘€€¡‘‘€€‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘¡‘¡¡~‘‘‘‘¡¥¡‘‘‘‘‘¡¡‘‘¡‘¡¥¡¡¡¡¡‘‘¡‘¢¡‘‘¡¡¡¡¡¡¡¥¡¢Ýþÿÿÿÿÿꥢ¡‘¡¡¡¢¢¡¡¡¥¦¥¡¡‘¡¡¡¡¡¢¡¡¡¡¢¡¢¡¡¡¡¡¡¡¡¡¦¡¡¢¡¡¦¡‘‘¡¡£¢¢¥¢¢¢¢¡¡¡¡¢¢¢¡¡¡£¦¢¡¡‘¡¡¡¡¡¡¥¦¢¡¢¦¢‘¡¢¢¡¡¡¡¡¡¡‘¡¡¡¡¡¥¡¡‘‘¡¡¢¡¡¢¡‘¡¢¡¡‘¡¡‘¡¥¥­ëÿÿÿÿÿûꬡ‘‘‘‘¡‘‘‘‘¡‘¡¡‘‘‘€‘¡‘‘‘¡‘€€‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘€‘‘~‘¡‘}€‘€}~€‘‘€}}€‘}~‘€€‘}€¡‘€‘€~}~}}‘‘}}}€}}}}}}}}}}€}}}}}}}}}}}}}}}wv}}w}}vèþß}Ùýàv}vw}}vw}}vv}}}v}v}wvv}}vv}}vvv}wvvvvw}vvopvvpvvvvvpvvvvopuovoovvoouvuoooopulooupoouvuoulloullloulpllluulllolullllluÇõüá˜vouÇñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!9!!!Bóÿÿÿÿÿ÷_!!!! !!!!!! !!! ! !!!!!  !!!!    !!! ! !      ! !  ! !!   !9q¥õþþþþþþýýÿþýÿÿÿÿþÿÿþÿþÿÿÿþÿÿÿèÓ    ××þüþþþþþþþþþþþþþþÿÿþþþþÿÿþÿþÿúÖ~}~}}}}}}~‘~€‘‘}~~€‘‘~~}‘‘‘€~}‘‘~‘‘‘‘‘‘}~€~}‘¡~‘‘‘¡‘}‘‘‘¡‘~~~¡¦¡‘‘¡¡¥¡‘‘‘¡‘‘¡¡‘‘¡¡‘‘‘¡‘‘‘‘¡£¡‘‘¡¥¡‘‘¡¡¡‘‘¡¡¡¡¡¡¡¡¡¥ãþÿÿÿÿÿꦡ¡¥¢¦¦¦¢¡‘‘‘¡¡¡¥¡¡‘¥¦¥¦¦¥¡¡¡¡¡‘¡¥¦¦¡¡¡¦¦¦¢¢¡¡¢¡¡¥¡¡¡¡¡¡¡¦¢¡‘¡¡¡¥¢¡¥¡¡¥¦¡¡¡¡¡¢¡¡¡¥£¦¢‘‘¡‘‘¡¡¡‘¡¥¦¡¡¡¡¢¢‘‘¡¡¡¡¡‘¡¡¡¡¥¢¡‘‘‘‘‘¡¡¡‘‘§ãýÿÿÿÿýë§‘‘‘¡¡¡¡‘‘‘€‘€‘‘‘‘‘€}‘¤¡‘¡¡‘€‘‘‘‘‘‘‘€}€‘‘‘‘€€‘¡¡‘‘‘‘}‘‘‘}}}}‘~}‘€}}}€€€}}}‘‘}}}€}}}}€‘€~‘‘}}}}}}}~}}}v}~}~}€}}}}}v}}}}}}}€}}ëþÙ}‘ßþÙvvv}€}v}wvv}}wvvv}}vpp}}}v}vvv}vvvvvwvpvwwvv}uoppupvvvvvvvvvvvvvvloloovuuvuoovulooolooolouvulullllluuolluluoooltltlouƒßú÷Ì{uCƒßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!==;=Zóÿÿÿÿÿ÷_!;!!!!9;!! !! ! ! !!  !! !  !    !!    !!  !    !     !! =}ªõþÿþÿþÿþÿýþÿÿÿýÿþÿÿþÿÿÿþÿÿÿÿþæÓ    Ó×þþýþþþþþþþþþþþþüÿÿÿÿþþþþÿýÿþúÖ~~}~}}}~}}}}€‘~}~}}}€‘‘‘‘}}¡‘~€€‘‘‘‘‘¡‘~}€‘~‘}}‘‘€€‘¡‘‘€}‘¡‘~‘‘‘¥¡‘¡‘‘¡‘¡‘‘‘‘‘¡¡‘‘¡¡‘‘‘‘‘‘‘¡¢¡¡‘‘‘¡¡¡¥¢‘‘‘‘¡¡¡¡¡¡¡‘¢¢Ýþÿÿÿÿÿ륡¡¢¡¢¢¥¢‘¡¡¡¡¡¡¢¡¡¡¡¥¦¡¡¡¡¢¢‘¡¡¦¡¡¥¡¡¡¡¢¢¥¡¦¡‘¡¢¢¡¡¡¡¡¡¡¡¥¡¡¡¡¡¢¥¡¢¡¡¡¦‘‘¡¡¡¥¡¡¡¢¢¢¢¡¡‘¡¡¡¡¡¡¡¡¥¡¡‘¡¡¥‘‘¡¡¡‘¡‘¡¡‘¡¡¡¡¡‘‘‘¡‘‘¢­ÚúÿÿÿÿýíÔ‘‘‘¡‘¡‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘~‘¥‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€~€‘‘‘‘‘‘‘€}€‘€~}}~€€~‘~}}}~~~}‘‘€}}€€}}}}}‘€‘~}}}}~}}}}}‘}}}}}}}}‘~}}}}}}}}}}€}væÿÙ}àþÙ}vw}}v}}}vv}}}}wvvvvvv}ww}vv}vvvvvvvvvvv}vwvpvvvovvvuvvvvvvvpvpoulovovopolulovoooulvuoulloooulllulloulllllultlllllullužñýèvllñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@!!Zóÿÿÿÿÿ÷x!!!!!!!!!#!!! !! ! ! !!  ! ! !!   !    !!!!   !   !  !  !=qªíþþþþþþþýÿþýþÿÿÿÿþÿÿÿþÿÿÿþÿÿÿèÓÓ×þüþþþþþþþþþþþþþþÿÿüþþÿþÿþÿþÿúÖ}}}}}~€‘~}}}}}€€}~‘‘‘‘}‘‘}~‘€}}~}‘‘‘‘‘‘}‘‘€€‘~~¡¡‘‘‘‘‘‘~~‘‘¡¡¡‘~¡‘€€}€‘¡¡¡‘‘‘‘‘‘¡¡¥¡¡¡¡‘‘‘¡¡‘¡‘‘¡‘‘‘¡¦¥¡¢¡¡¡¥¡¡¡¤‘‘¡¢àþÿÿÿÿÿæ¡¡¢¥¡¡‘¡‘¡¢¡‘¡¡¢¡¡¢¡¡¡¡‘¡¡¢¥¦¢¥¦¡‘‘¡¢¦¢¡¡¡¡¡¦¦¡¢¢¡¡¥£¢¡¡¡‘¡££¡¡¢¦¢¢¢¡‘¡¥¡‘¡¢¥£¡‘¡¡¡‘‘‘¡¡¡¥¡¡¡¡¡¡‘¡‘¡¢¥¡¡‘¢¥¡¡¡¥¡¢‘‘‘¡¡¥¢¥¡¡‘šÓöÿÿÿÿþöÚ¡‘‘¡¡‘¡¥‘‘‘‘‘¡¡¡‘‘¡‘‘¡¡‘‘¡‘€‘‘‘¡‘‘‘‘}€‘‘‘¡¡‘‘}€~}}€€‘‘‘‘‘‘‘€‘€~‘‘‘‘‘‘€}‘€€€}}}€‘}€‘€}}}~}}}}}€‘‘‘€}€‘‘‘}v~}}}}}}}}}}}v}}}}}}}v}™èýÙvàþÙv}}}}vvw}wvvvv}vvvv}}vvvvvpvvvvvvvvvvvvvvvvvvvvvvvvvvovoovvvwvvoopovvvvpooovvvvuouooooovouvuoollvvuollCClllllllltllllCCl{Ùú÷΃uly×÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yòÿÿÿÿÿ÷_ !!!#!!!!!!!#!!!! !! ! !!!! !!  !  !!   !  !! !  !  ! !!! !   $q¥õÿþÿþÿþÿýÿýÿÿÿþÿþÿÿþÿÿÿþÿÿÿÿþæÓ   Ó×þþþþþþþþþþþþþþþüÿÿþÿþþþÿþþÿþûÖ}}}}}€‘}}~~~}}}~‘‘}€€‘€~}‘~}€}~‘~€‘‘‘‘€€~~~‘‘€€‘¡‘€‘‘€}‘¡‘‘‘¢¡‘€‘‘‘‘‘€¡¢‘‘‘‘‘¡‘‘¡¢¡¡¡‘¡¡‘‘‘¢‘¡‘‘¡¡‘€‘¢¢¡¡¡¡¡¡¡‘¡¡¡‘¡¦Ýþÿÿÿÿÿ楑¡¡¢¡¡‘¡¢¢‘¡¡¡¥¡¡¢¡‘¡¡¡¡¡¡¢¢¢¢¢¡¡‘¡¢¥¡¡¢¡¡¡¥£¥¢¡¢¢¢¡¢¥¡‘‘¡¢¦¥¡¥¡¡¢¥¡¡¡¡¡¢¡¡¡¢¡‘¡¥¡‘¡‘¡¥¢¡¤¡¡¢¢‘‘¡¡‘¡¢¢¡¡¢¡¡‘¢¢¡‘‘‘¡¡‘¡¡¦¡¥ÔëÿÿÿÿþøÚ¥¢‘‘¡¤‘¡‘¡‘‘‘¢‘‘¡‘‘¡‘¡‘‘¡‘‘‘‘€€‘‘¤¡‘‘~~‘‘¡¤‘‘¡‘~~~~~}‘‘‘€€‘‘~}}‘‘‘‘‘‘‘‘‘}~‘€‘€}}}€}~‘~}}€€}}}}}}‘‘‘}}‘€}}}}}}}}}}}}}}}}}wv}}ww‘èþ×}àþ×v}}}vvv}w}}vvvv}vvv}}vvvvppvvv}}vvvvpvvvvvvvvvvvvvvovvooovvvvpuovovvvvuouloupuvvvvullloulvoltluvvvutllllttlltlClltltllClu›èýòÆutC˜èýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_! !!! !! !!!!!! !! !!!! ! ! !!  !  !  !  !  !   !  !!   ! !! !$p¥íþþþþþþþþþþýÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿèÓ    Ô×þþþþþþþþþþþþþþþþÿÿþþþÿþÿþþÿÿúÖŽ~€‘}}}‘‘‘‘‘}‘‘‘€}~}‘‘€}~‘‘€~‘‘€€€}}}‘‘‘‘‘‘‘‘~‘‘~}~‘‘‘¡¢‘}€‘~~‘‘‘‘‘‘¢‘‘‘‘¡‘‘‘‘‘‘‘~‘‘¡‘‘¥¢‘¡¥¡¡¢¡‘‘¡‘¡¡¤¡¢‘‘‘¡‘‘¡¡¡Úþÿÿÿÿÿꥡ‘‘¡¢¡‘¡¦¡¡¡¥¡¢¡¡¡¡¢¦¦¢¡‘‘¡¡¡¡‘¥£¢¢¢‘¡¡¢¡¡¢¡¡¡¡‘¡¡¡¡¡¡¡‘¡¡¡¥£¢¡¡‘¡¡¡¡¡¡¡¡¡‘¡¢¢¡¡£¡¡¡¡¢¦¡¡¡¡¢¥¡¡¡¡¢‘‘‘‘‘‘¡¡‘¡¥¢¡¡¡‘¡¡¡‘¡¥Ôæýÿÿÿÿúꥥ¡‘‘¡¦¢¡‘‘¡‘‘‘¤‘€‘‘‘¤‘‘¡‘‘‘‘‘€‘‘‘¡¡‘‘‘‘‘‘‘‘}}‘‘‘‘‘€‘‘‘¡€‘‘‘€~}}€‘‘€€‘‘‘‘‘‘‘‘‘~€}}}}}€~€‘‘€}}€€}‘€}}}}}€}}‘}}}}}}}}}}}}}}}}‘}w}}}}˜èýÙ}àý×vvwv}w|}}}}vvvv}}vvv|vvvwvovv}vvvpppvvwvvvvvvvovpvouvvovvuvulvpvvvvvoooooluooooulovloltooouoououlllluuluvloltlCtuollltltlly×÷úߘutxÊõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!=@=!Yóÿÿÿÿÿ÷_!!!!!!!! !!!!! ! !  !!!!  !    !  !  !!! !!!! ! !! ! !!!! 9qªõÿþÿþÿþÿþÿþÿÿÿþÿþÿÿþÿþÿÿþÿÿÿþæÓ  Ó×þþþþþþþþþþþþþþþþÿÿþÿþþþÿþÿþþúÖŽ}}‘~~}~}€‘‘‘‘€~‘‘€~}~€€€€}€€€~‘‘‘€~~~}~‘‘‘‘€~~‘‘‘~}€‘‘¡¡‘‘~~€~‘‘‘‘¡¡‘‘‘‘‘‘‘‘¡¡‘‘‘€‘‘‘~¡¥‘¡¡¥¡‘¡¡¡¡¡¡‘‘‘‘¡¡¡¡¡‘¡‘¡‘¡‘‘Úþÿÿÿÿÿꥑ¡¡‘¢¡‘¡¥¢¡¡¢¢¡‘¡¡¡¥¡¡¦¢‘‘¥¢¡¡¡¢¥¡¦¢¡‘¡‘¡¥¢‘¡¡¡¡¡¡¡¥¡¡¡¡¡¡¡¢¢¢¡¡¡‘¡¡‘¢¢‘¡¡¡¡¡¡¡¡¡¡¥¡¡¡¦¥¢¡‘¡¡¡¢¥¡‘¡‘¡¡¡¡‘¢¡‘¡¡¡¥¡¡‘¡¡¡§àûÿÿÿÿûꥑ¦¡‘‘‘‘¥¥¡¡‘‘‘¡‘¡‘‘‘‘‘‘‘¡‘‘€‘‘‘‘~‘¡‘‘‘‘€‘‘‘‘‘‘~~€‘‘~}€‘¡‘~~€‘‘‘~}}~‘‘€}€‘‘‘‘€‘‘€€‘}}}}}}€‘‘‘}}}‘}}€‘}}}}}}}}}}w}}}}}‘}}}‘}}}}}}}}‘èýבàýÓ|vvvv}}}v}}}|vv}vvvvw|vvvvvvvvvvvvvvvvvvpvvvvvpvvvvvlooovvoooovvvovvoououoooovvvulvlulovvlloouvulllovtlooulullllouuCClullClu˜çüóÊ{ulƒßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!@Cóÿÿÿÿÿ÷x9;!! ! !!! ! ! ! !! ! !       ! !  !  !   ! ! !!  ! !q¥íýÿþþþþþþþþýÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿèÓ!   Ó×þüþþþþþþþþþþþþþþÿþþþþÿþÿþþÿÿúÖŽ‘~}}}}}}}}}}}}}}}}~}~~€~€~~~}}‘‘‘‘€‘€‘‘‘‘‘€€‘‘‘‘‘~‘‘‘‘‘}€€‘€‘‘‘¡¡¡‘~‘‘¡¡¡¡‘‘‘‘‘‘‘¡¢‘‘¡¥¡~‘¡‘‘¡¡¡‘‘‘¡¡‘‘‘‘‘¤¡¢¢¢¥£¥¡‘Úþÿÿÿÿÿæ¡‘¡¡¢¡¡‘‘¡¡‘¡¡¡¢¥¡¡¡‘‘¡¢¢‘‘¢¢¡¥¡¡¡‘¡¢¡¡¥£¡£¡¡¡¡¡¢¢‘¡¡¡¡¡¦¥¡‘¡¡¡¡¡¢¢¡‘¡¡¥¡¢¥¢¡¢¢¥¢¡¡¢¢‘¡¡¡¡¢¡‘¡¡¥¡¡¡¡¡¥¥¡¥¢¡‘¡¡¢¥¡‘¡¡¥¥Ôõÿÿÿÿý묑€‘¢¡~‘¢¡¡‘‘‘¡¡¡¤¡‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘}‘‘‘¡¤€€}}~€€‘‘€€¡‘~~}}}}‘€}}‘€}}}}}}}}}‘‘}}}‘}}}‘}}}}}}}}€}}}}w}}ww}}}w}}}}}˜ëýÓvâý×}}}vv}}}vvvvv}}w}}}}}}wwv|vvvvvpvvwvvvvvvvvvpovupvvovvvvv}voooouooovvoopoouvuoollooolouuvvluuuolllllulllltlllullullllCltltulCluÇòýè›uCuÇñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Zóÿÿÿÿÿ÷_! !!!!!!!! ! !! ! !!!  ! !  ! ! !   !! ! !!! !!  !!!  !   !!=}ªõÿýÿþÿþÿþÿþÿÿÿþÿþÿÿþÿþÿþÿÿÿÿÿàÓ!    Ó×þþþþþþþþþþþþþþþþÿÿþÿþþþÿþþÿþûÖ€€}}}}~}}}}}}}}~~}}‘~}}‘€}}€~~}~‘‘~€€‘‘‘‘‘‘€‘‘‘‘~‘‘‘‘‘‘‘~~‘‘}‘‘‘¡‘¡‘€€‘¢¢¥‘~‘‘¡‘‘‘¡‘‘‘¡¢‘‘‘‘¡‘¡‘¡¡¡‘¡‘‘¡‘€‘¡¡¢¢¢¢¢¢¡‘Ýþÿÿÿÿÿꥑ¡¥¡¡¡‘¡¡¡¡¡¡¡¡¡¡¡‘‘¢¡‘¡¡¡¡¡¢¦¡‘‘‘¡¥¡¡¢¢¢¡¡¡¡¡¡¢¥‘‘¡¡¡¡¢£¡¡¡¢¡¡¡¢¥¡¡¡¡¢¡¡¢¤¡¡¡¢¡¥¡¡¤¡¡¡¡¡¥¤¡¡¡¡¡¡¤‘¡¡¡¢¡¥¡‘‘¢¡¢¡¡¡¡¥ÚýÿÿÿÿõØ‘‘‘~‘¢¡~‘¥¡‘€‘¡¥¥‘¡¡‘~‘¤¡¡¡‘‘‘¥‘‘‘‘‘‘‘¡‘~€‘‘¡‘€}€‘¥¡‘‘~€€‘‘‘¡‘‘~~}‘‘‘‘}‘‘‘‘€}}}}}}€‘‘€€‘‘}}}}}}}}€}}}€}}}}‘}}}}}}}}}}}}}v}}}}€}vvw}}}}}™èýÓwæýÓ}}vv}}}}}}vvvv}}vvww}}}}vvv}vvvvvv}}vvvvvovpovpov}vovvvvwvooovvllvvopouoovovoouulovulooouvolvootlulltllllluvulutlulCllClloltCCCoƒßü÷̃lC{ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!9!!Bóÿÿÿÿÿ÷[!!!!!!#!!!! !! !! ! ! !! !  !!! ! !!  ! !! ! !  !   !!!9sªíýÿþþþþþþþþýÿÿÿÿÿþÿÿÿÿÿÿþÿþÿÿèÓ$!    Ó×þþþþþþþþþþþþþþþþÿþþþþÿþÿþþÿþúÖ }}~€‘€}~‘€}}~~‘¡‘}‘‘€}‘‘‘~~‘‘~~‘‘~‘‘‘‘€}€}~‘€‘‘~}‘‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘¡¡¡‘‘‘‘‘¡‘‘¡¡¡‘€‘‘‘‘‘‘¡¥¡‘‘¡¡¡‘‘¡‘‘‘‘Úþÿÿÿÿÿæ‘‘¡¦¢¡¡¡¢¢¡¡¡¡¥£¢¡‘‘¡¥¢‘¡¡¥¡¢¡¡‘¡¢¢¡¡¡¡¡¡¡‘‘¡¡¡¡¥¡¡¡¢¢¥¦¦¡‘¡¥¦¥¡¡¡¡¡¥¥¢¥¡¡¡¡¥¡¡¡¡¢¡‘‘¡‘‘¡¡‘¡¡¢¤¡¡¡¡¡¡¡‘¡¡¡¡¡‘‘‘¡¡¡‘¬ëÿÿÿÿûꥡ¡¡¡‘‘¥‘‘¡¦‘‘‘¡‘¡‘€‘‘‘‘‘‘‘‘¡‘‘‘¡¡‘‘‘¡‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€€}~‘‘€‘‘‘‘‘}‘‘‘‘}}}‘}‘‘~€€~}}}€}}‘}}‘‘‘€}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}w}vw}}wèýÒ}èýÓv}w}}v}vv}vvvv}wvvvvvvvvvv}}vvvwvvvvpvvvvpvvvvvvv}vovvvpvlvvvvvoov}vuovouvolvuvlolvllluovllultllvoollvuulllullllltlCtltllllClCtlluñýñÆuluèþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@!!Bóÿÿÿÿÿ÷_!!!!! !!! ! !!! !!!!!! !! ! !!!!   !    ! !     ! ! !  ! qªõÿýþÿþÿþÿþþÿÿÿýÿþÿÿÿþÿþÿÿÿÿÿÿàÔ      Ó×þþþþþþþþþþþþþþþþÿÿþÿþþþÿþÿþÿúÖ~}}€‘‘‘}~‘€~}€€€¡‘~‘‘}}~‘‘}€¡‘€‘}‘‘‘‘€~€€~‘‘~‘‘‘€~~€‘¡‘‘‘‘¡¢‘‘‘€‘€€¡‘‘‘‘€~€‘¡¡¤‘¡¡‘‘‘‘¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¡¡¡¡‘‘¡¤¡‘‘‘‘‘‘‘Úþÿÿÿÿÿꤑ¡¡¥‘¡¦¢¥¥‘¡¡¡¦¥¡¡‘‘¡¡‘¡¡¡¢¥¡¡¡‘¦¢¡¡¡¡‘‘¡¡‘¡¢¡¡¡¡¡¡‘¡¦¦¥¡¡¡¡¤¦¢¥¡‘¡¦£¢¢¡‘¡¢¢‘¡¥¡¡¡‘‘¡¡‘‘¡‘‘‘¡¡¡¡‘¡¢¤¡¡‘¡‘‘¤¡‘‘‘¡¡¥ëÿÿÿý묡¥¡‘¡¡‘¡¡‘€¡¥‘~€¥‘€‘‘¡‘‘‘¡‘€‘‘‘¡‘‘‘‘‘‘¡¡‘‘‘‘‘¡‘‘‘€‘‘‘‘‘}€}€‘‘€~‘~‘‘}‘‘‘€~€}}}~}€}‘}}}‘}}}€‘}}€‘‘}‘‘}}}}}}}}}‘}}}}}}}}}}}}}}v}w}v}vw}}}™èýÇw™èüÇ}v}}w}}}v}vvvv}}vvvvvvpvvvv}vvvvwvvovovvpvv}vvv}vvvuvvouoovvvvvuvvvvuvovovuovvouuloulluvuooolltvluuCuvulullluultlllllotClCCCClllCCC{×÷üß›ulxÌ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_9! !!! !! !! ! !! !!! !!!  ! !!  !        !!  !  !  9s¥ëÿþÿþþþþþþþýÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿèÓ$   Ó×þþþþþþþþþþþþþþþþÿþþþþÿþÿþþþÿúÖŽŽ}}}}}~}}}}}}~}~€}}}}€}}~}}‘¡‘€€}}}~‘‘‘~~}‘‘‘~‘‘‘‘‘€‘‘‘€€€€‘‘~‘‘‘€‘¡¡‘‘¡‘¡‘¡‘‘¡‘‘‘€‘‘¡¢¡‘¡‘¡¢¢¡¡‘¡¡¡‘¡¡¡‘‘¡‘¡¡¡¡¡¡¢¢¡¡Úþÿÿÿÿÿꥡ¡¡‘‘¡¡¡¡¡¡¢¡¡¡¡¡¡‘¡¢¢¢¥¡¡¡¡‘¡¡‘¡¥¡¡¡¥¡‘¡¥¡¥¡¡¥¡¡¢¥¡‘¥¡¡¡‘¡¡¡¡¡¡¢‘¡‘¡¡¢¡¡¤¢‘¡¢¦¢¢¡¡¥¡¡‘¡¥¢¢¡¡¤¡¤‘‘¡¡¡¡¥¡‘¡¡¡¤¡¡¥¡ÚýÿÿøÚ¢‘‘‘‘¡¥¡‘‘¡¡‘‘‘¡‘‘¦¥¡¡¡‘‘€¡¢‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€‘‘‘‘€€‘‘‘‘€~€‘‘‘‘€~‘‘€}}€‘‘€‘‘‘€€‘‘€}€}€‘‘€‘‘€‘‘‘}}‘‘}}}€}}}‘}}}}‘}}}}}}}‘‘}}w}}}}}}}}}}véý§}™æûÊ}vvv}v}wvvvwww}}v}vvwwvvv}vvv|vvw}vvvvvvvovvvlvvvovpovvvvvulovvvvlulpouvvllupllovuvoluvulltlllvulClluulllllllllllCtotllllttuulCCCCClt›èüòÇ{CC›áýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!9Zóÿÿÿÿÿ÷_!!!!!!! !!!! ! ! ! !     !! !!!!!! ! !  ! ! !! ! !  ! ! =q¥õþþþþÿþÿþÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿÿþÿæÓ!      Ó×þþþþþþþþþþþþþþþþÿþÿþþþþþÿþÿþûÓ}}}}}}}}}}€}~€}}~}}}}}}~}~‘‘‘‘~~~}€}~€€€}‘‘‘‘‘}‘‘‘‘‘‘‘~€}€‘‘‘‘~‘‘‘‘‘‘‘¡¡¡¡‘‘‘‘‘¡‘‘€‘¡¡¡¥¡‘‘¦¥¡‘¡¡¡¡‘‘¡¡¡¡‘¡¡‘¡¡‘‘¢¥¥¦Ýþÿÿÿÿÿ楢¢‘‘‘‘‘¡¢¡¢¥¡‘¡¡¡‘¡¡¥¢¢¢¡¡¡¡‘¡¡¡¡¢¢¡¥¢¡¡¡¡¢¥¡¡¢¡‘¡¥‘‘¡¡¡¥¡¡¡‘‘¡¡¡¡‘¡‘¡¡¡¡¡‘¡¡¡¡¥¥¡¡¡¡‘¡¡¡¥¡¥¡¡¦¡‘‘‘¡¢¢¡‘¡¤¡¡¢¡¡¡¡êþÿõ­¡‘¡‘‘‘¡¥¡‘‘‘¡‘‘¡¡‘¡¥¢¡¥¡‘‘¡¤‘‘‘¡€‘‘‘‘‘‘‘‘‘‘‘‘€~}‘‘€‘€‘‘‘€~€‘‘‘‘}~}€€‘‘}}‘‘‘‘€}‘‘‘}‘€€‘€€‘‘‘‘‘‘‘}€€‘}}}}}‘‘}}}}}}}€}}v}}‘€}w}}w}}€wv}}}}˜èüÓ}™èüžvv}vw}vvvvv}vvvw}}}vvvvvvvvvvv|vv}vvvvvvvpvvuopvvvvuovvovupoovvvlvooooouvulovouvoolvulvvllllllolllCloolllltlCtllCllullCllvllltCCCCCCCCxÌ÷üç›uCuÊòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9==!Cóÿÿÿÿÿ÷_!#!!!! ! !!!!!! !! !!!      !!!! !   !  ! !!  !  !!! 7p¥õþÿýÿýÿþþþþýÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿæÓ   Ô×þþþþþþþþþþþþþþþþÿÿþþÿþÿþÿþþÿúÖ }}}}}}}}~‘~}~€‘€}}~‘‘‘‘‘‘‘~}}}‘‘‘‘‘‘€‘‘}}‘‘‘‘}~‘¡‘‘‘‘~}‘‘‘¡‘‘‘‘‘¢‘‘‘€~€‘‘‘‘‘‘‘‘¡‘¡‘~‘‘‘¡‘€‘¡‘‘‘‘‘¡¡‘¡¡¡‘¡¡¡¡¡¡¡‘‘¡¡¡¡Úþÿÿÿÿÿꥡ¡¡¢¦¡‘‘¡¡¡¡‘¡¡¡¢¥¢¡¡¡¡¢‘¡‘‘¢¡¡¡¡¢¡‘¡¡¢¢¡‘¡¡¢¢¡¡¥¡¡‘¡¢¢¥£¡¡¤¥¡¡¢¥¡¡¡¡¥¥¢¢¡¡¤¢¡‘¡¡¡‘¡¡¡¤¢¥¡¡¡‘¡¢¡‘¡¡‘¤¡‘¡¢¡‘‘¡¥¡¡‘ÓýÿÔ‘‘¡¡¢‘~‘¡¡¡¡‘‘‘‘¡¡}€‘‘‘‘‘€¡‘‘¡‘‘‘‘‘¡¡¡‘‘‘‘‘‘‘¡‘‘‘¡‘‘‘€€‘‘‘‘‘‘‘}‘‘‘‘‘‘‘}‘‘}€‘‘‘}}‘}}€‘€€}}}}}}}}}}}}}}}€}}€‘}v}}}}}}}w}}}}}}}‘w}}v}}v}}}ww™ëý¬vèûÒ}}}}}vv}vv}vvv}vvvvvwvvvvwvv}}vvvvvvvovwvvvvvovvvvupvwvovvvvuvvououovvovvvovvuouuullloulluvuuuuuoolltooltuluulltlCtllClCtllCCCoutCCCClCl”ßý÷̃tC”ßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Yóÿÿÿÿÿ÷_!!!!!!#!! !!!! ! !  !!! !!! !! ! !!   !!   ! !  !  !!  !! qªíÿþÿýÿýþÿþÿþÿÿþÿþÿÿÿÿþÿÿÿÿþÿÿæÓ  Ó×þþþþþþþþþþþþþþþþÿÿþþþþþþþÿþÿúÖ¢}}}}‘~}}}}‘€}~~}}}}¡‘‘‘‘€€~}~}}‘‘€‘‘‘€}‘‘‘€}€‘¡‘¡‘~€¡‘~‘¥‘}‘¡¢¡¡‘‘‘}‘€‘‘‘‘‘€€‘‘‘‘‘‘¡‘‘~‘‘‘‘¡‘€‘¡¡¡¤¡‘¡¡¡¡‘‘¡¡‘¡¡¡¡¡Úþÿÿÿÿÿꥑ‘¡¡¦¥¡‘¡‘‘‘‘¡¡¡¢¥¦¡¡‘¡¥¡¡¡¡¢¥‘¡‘¡¥¡‘‘¢¥¡‘‘¡¢¦¡‘¡¢‘‘¡¢¥¡¤¢¡¡¦¢¡¢¦¢¥‘‘¡¦¥¡¡‘¡¤¡¡‘¡¡¡‘¡¡¡¡¢¡‘¡‘‘¢¢¡¤‘‘¡‘¡¤¡¡‘‘¡¢¡¡¡¡úÿꙑ‘¡¡‘€‘¡‘¤¡¥‘‘‘‘‘€‘‘‘~~~€‘¡‘¡‘€‘¤¡‘¤¡‘‘‘‘‘‘‘¡‘€€‘‘‘‘‘‘‘‘‘‘‘‘~}‘‘‘‘‘¡‘‘‘€}€‘‘€€}}}‘‘‘}}}}}‘}w}}}}}‘}}}}‘€|}}}}~€}}wv}}}‘}}v}}}}}}}}}w}v˜õü§wèúž}vvv}wwvvvvv}wvvvvvw|vvv}wvvv}wvvovvvovwwwvvwwvvupovvvvouvvvvlvoooluvolvvvvuvoopvvllltlulluvulvvuullllullouluotltlltllCCCltCCClultCCllCCCuÇõþñÇxClÆñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ@!!!!Zóÿÿÿÿÿ÷_!!!! !!!! !! !! !!!!!! ! ! !!! !   !! !!  !  !  ! !      pªõþþþýÿýÿþþþþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿèÓ!!     Ó×þþþþþþþþþþþþþþþþÿþþþÿþÿþÿþþþúÕ}~}}}~}~}}~}~~}€‘‘}}€~~€}~}}‘‘~€}€‘‘‘‘‘‘}‘‘€‘‘€‘‘}‘¡€}‘¡‘€‘¢‘}‘€~‘‘¡‘‘€‘‘¡¡¡‘‘‘¡‘¡¡‘‘¡‘‘‘¡¢‘‘¡¢¡¡‘‘‘‘¡¤¡‘‘‘¡¡‘‘‘‘‘Úþÿÿÿÿÿê¡‘¡¡¡¡¡‘¡¢¡¡¡¡¡¡¡¡¡¡¡¡¡‘¡‘‘¡¡¥¢‘¡¡¡‘¢¢¡¡¢¡¡¢¡¡¦¥‘‘¢¢¡¡¡¡‘¡‘¢¢¢‘‘¡‘‘¡¡¡¥¢‘‘¡¡¡¥¡¡¡¡¡¡¤¥¢¡¡¥¡‘‘‘‘¥¡¥¡¡¡¡¡¡¡¡¡‘‘¡¡‘‘‘‘ëÿý¬¡‘¡¥¡‘‘¡‘¡‘¡¡‘‘¡¡‘‘‘¡‘‘‘‘‘‘‘¥€€‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘€‘‘‘}‘‘}}‘‘‘‘€~€€€€‘€€}‘€}~‘€}}}}‘€}€}}€}}€}}€}}‘}}}}}}}}}}}}‘v}}}}}}}}}vv}}}}}wõúžv˜èû§}}}}}}}vv}v}v}vvvvv}wwvvvvpv}vvvvvvwvpv}vvvlvwvvvvvvuvuvvvvovovvvoovwuluuoloouolooouuvvoluollloolultolllulllllllluulCCtutllllCCCllllCZlCCCCƒßüüß”tC{ßúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!!!!! !!!!!!!#! !!!! !  ! !!! ! !!!  ! ! !!    !!  !!qªõÿþÿþÿýþÿþÿþÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿàÓÓ×þþþþþþþþþþþþþþþþÿÿþþþþþþÿþÿÿúÕŽ}}‘~}}}}€~}€~}}€~}~€}€~}€€~}}~~}€€}€‘~‘‘‘‘‘€‘‘}~}€‘€}‘¡~~‘¡‘‘‘‘‘‘‘~€~‘¡‘‘‘€‘¡¢‘‘‘‘¡¡¡‘‘¡¢¡‘¡¡¡¡‘¡¤¡¡¡‘¡‘‘¢¡‘‘‘‘¡¡‘‘‘‘Úþÿÿÿÿÿꥑ‘¡¢¢‘‘¡‘¡¢¡¡¤‘‘¡¡‘‘¡¡¡‘‘‘¢¥¡‘¡¡¥¡‘¡¢¥¡¡¢¥¥¡¡¡¥¡‘‘¢¦¡‘‘¡‘‘¡¢¥¡¤‘‘‘‘¡¡¢¡‘‘¥¢¡¡¥¡¡¤¢¡¡¦¥¡¡¡¡‘¡‘¡¡¡¡¡¡¤¡‘¡¡‘‘¡‘‘‘‘‘‘¡Ôýÿ楑¡¢¥‘‘‘‘‘‘‘‘‘‘¥¡‘‘‘‘€‘¡‘‘¡‘€€‘‘‘‘‘‘‘‘€‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘€}‘‘}‘‘€€}‘‘€}€‘}€‘‘}}‘€€}€}‘€}}}}‘}}‘}‘€}}‘‘}}}}}}}}}}}}v}}}}}w}}vw}}}}}}™ñûžv˜èúž}}}}vv}vwwvv}}w}vvvw}wvvvvvv}vvw}}vvvvv}wvuvpvvvvvvoouvvvvvuoovuvvvvvvloolllovvlloooouvullulltluolooutltllCCClltllltCllulCCltCCCClttCCCCtCCCuÆñÿ÷Ìzll›èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!! !;!!!!!!!!!! !!! !!   !! ! !  !! !! !     !!!!!=p¥íþþþýÿýÿþþþþÿÿÿÿþÿþÿþÿÿÿÿÿþÿÿèÓ!     Ó×þþþþþþþþþþþþþþþþÿþþþÿþÿþÿþþÿúÖŸ}}}}}€€€€€‘~}}~‘€}}‘‘€€€‘‘}‘‘‘‘‘€€‘€}}‘‘‘‘‘~}}‘‘‘‘~€‘¡‘‘‘}‘~~‘‘‘‘‘‘€‘¡¡‘¡‘~‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¢‘¡‘‘‘¡‘¡‘¡‘‘‘¡¡‘‘‘‘¡¡‘¡‘‘Úþÿÿÿÿÿæ‘¡¡¥¡¡¡¡¡‘‘¤¡¡¡‘¥¥¢‘¡¥¥¡¡¡¡¥£¡¡¥¢¢¥¡‘¡¦¡‘¡¡¡‘‘‘¡¡¢¡¤¦¥¡‘¡¡‘‘¥¡‘¡‘¡¡¡¥¢¡¡¡‘¡¡¡‘¡¡¡¥‘‘‘¡¡‘¡¡¡‘‘¡¡¡¢¡¡¡¡‘¡¡¡‘‘¡¡¡¤‘‘¡‘¥õÿý§‘‘¡‘‘¡‘‘¡‘‘‘‘‘¡‘‘‘¡¥‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘€‘‘‘‘‘‘€‘‘‘‘‘‘‘‘€‘‘}}}‘‘}~‘‘‘‘‘}‘€}€~‘‘}}€}}}‘‘}}}}}}}}}‘}}}}€}}}}}}}v}}}}}}}}}v}}v}}}˜íûž}èûžvwvwv}}}}wvv}vvvvvvvvvvvvwvvvwvvvvvovovvvvvvvovvvvvoovvuvuvovuooovuoooovvvluvouvuuuollvoluouvvollltllllllltluulllllClllllCltlCltlCCCClltCltllCƒßúþèut{Ì÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@!!Yóÿÿÿÿÿ÷_9!! !!!! #! !!! !#! !  ! !! ! ! !   ! !!!  !  9sªõÿþÿþÿýÿýÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ7    Ó×þþþþþþþþþþþþþþþþÿÿþþþþþþþþÿþúÖ }}}}}}‘‘}€‘~}}}‘€~}‘€~}}‘‘‘‘‘‘‘}€~~}~}}€‘‘¡‘‘~}‘~‘‘€‘‘‘‘‘~~}}€‘‘‘‘‘‘‘‘¡¡‘‘‘}€~‘¡‘€€‘‘¡‘‘‘¡¡‘‘‘¡‘¡‘‘‘‘‘¡¡¡¡‘‘‘‘‘‘¡¡‘¡¡Úþÿÿÿÿÿꙡ¢¡‘¡‘¡¥‘‘¡¡¡‘¡¡¦¢¡¡£¥¡‘¡¢¦¢‘¢¢£¥¡‘¡‘¡¥¢¡‘¡‘‘¡‘¡¥¡¡¡¢¥¡‘¡¡‘¡¡¡‘¡¥‘¡¡¥¡¡¥¡‘‘‘‘‘¢¢¡‘‘‘¡‘‘¡¢¤¡‘¡¡¡¡¥¢¥¡‘‘¡¡‘‘‘‘¡¡‘‘¡‘¡Úþÿà‘‘‘‘‘¡‘‘‘‘¡¡€‘¡¡‘‘¢¥‘‘‘¤‘‘‘‘‘¡¤‘‘‘‘‘‘¡‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘}€‘‘€}‘‘~}}}‘€}}‘€‘‘€‘}‘‘}€€€}€~}}‘‘‘€}}}}}}}}}}}}}}}}}}‘€}}vv}}}}}}}}}vw}}}™õúžv˜èúžwvvv}}}}}w}}}vv}vwvvpvwvw}vvvwvvvvoovvuvuvvvuvvovvvoovvovvvvupoovvvvulvuvvlvvoovvvlouolulluvuuulullullltlloouvtlCCCClClttlCllClttlCCCCltlCltCCAuÇñÿüß”CC˜áýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!@=!Bóÿÿÿÿÿúx!!!!!#!!!!! ! !!!!!! ! !  !! !   !   !  ! !      !=sªíþÿþþýÿýÿýÿýÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿèÓ!  ÓÓÿüþþþþþþþþþþþþþþÿþþþÿþÿþÿþÿþúÖ}}~~}}~€}}}}}}‘‘~}}~}}€~}‘€}}‘‘€~‘‘€‘‘€‘}€}‘‘‘€~~¡‘‘¡‘}‘‘‘‘‘~‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘¡‘‘‘¡‘€‘‘‘¡‘‘‘¡¡‘‘‘‘‘‘‘‘¡¡¡¡‘‘¡¢Úþÿÿÿÿÿꥢ‘‘¡¥¡¡‘‘¡¡‘¢¡¡¡¡‘‘‘¢¡¡¡¥¡¡¥¡¡‘‘‘¡¡¡‘‘¡¥¢‘¡‘¡¦¥¡¡‘¡‘¡¢¢¡‘‘‘¥¡¡¡¢¢‘‘¡¡‘‘¡¢¢¡¢¡¡¥¡¡¡¡¡¡¡¥¡¥¡‘¡¥¡‘‘‘‘¡¡‘‘¡‘¡¡‘¡¤¢‘‘‘¢‘¥ûÿû§¡¡‘‘‘‘¤¡‘¤‘‘‘‘‘€€¡‘‘‘‘‘‘‘‘‘‘€‘‘‘¡‘€‘¤‘‘‘€‘‘¤¡‘‘}‘‘‘‘‘€‘‘€‘‘‘‘‘‘‘€~}‘‘‘‘‘}}‘‘‘}}}‘‘}}‘€€}}}}}}}}}‘}€}}}}}}}}}}}}}}}}}w}}}}}vv}v}}v}}}vw˜õúž}˜ë÷ž}}}}wwwwvw}wvwwvvwvvvvwwvvvvvvvov}vvvvvovvvvvvvuvvvovvvlovouvvvvoooovovooolu}ullulluvlolluoolllllullluullltluvlltllltlltlllCZCCllCltlCCllCCCCCCltƒÌüÿòÇzCxÇóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!!Y÷ÿÿÿÿÿ÷_!!!! !!!! !!!! !!!  ! !!  !!! !!  !  !   !qªõþÿþÿþÿýþþþÿÿÿþÿÿÿÿþÿþÿÿÿÿÿþÿæÓ  Ó×þþþþþþþþþþþþþÿþþÿÿþþþþþþþÿþÿúÖ‘}}}}~}}~€~}}~‘€€}€}}}}‘€}~€€}‘‘~€‘‘€‘‘}~}€~}‘‘‘}¡¢‘‘€}€‘‘~‘}‘‘‘‘‘‘‘‘‘‘¡¡¡‘‘¡‘¢¡€‘¡‘‘‘‘‘¡¡‘‘‘‘‘€‘‘‘‘¡¡‘‘‘‘¡‘¡¢¥‘‘‘‘¡¥Ýþÿÿÿÿÿ릡¡¡¡¢¥¡‘¡¤¡¡‘¡¡‘‘‘‘‘¢¢¡¡¢‘¡¡¡¢¡‘‘‘¡¥‘‘‘¡¦¡¡‘¡¦¢¡¡¡‘¡¡¡¡¡¡¡¡¡¥‘‘¡¥¡‘‘¡‘‘¡¡¥¢¥¢¡¡¡¥¦¥¢¥¡¡¡¢¥¡¡¢¥‘‘‘‘¡¡‘‘¡¤‘¡¡¡¡¡¡‘‘¡¡‘ÚÿÿÚ¤‘¡‘‘¡¡¥¡‘‘€‘¡‘‘‘‘‘~‘‘‘‘‘‘¡‘}€‘¤‘‘€¡‘‘‘€‘‘¡‘¤‘‘€}}‘‘‘‘‘€€‘¥‘‘‘‘€‘}€‘‘‘‘}~€€€}‘‘‘}‘‘}}€}}}}}}}}‘‘‘}}}}}}w}}}}}w}}}}v}}vvv}v}}vv}}}v}v™õúž}™õ÷ž}}}wvv}}vw}}}wvvwvvvvvvvwvvppovvvvwvvvvvvvpvvuvvvvvovvooouvovvvuoluoouvoullvvvllolllvulooootllllulllovptlluoooultlltltClltlllCCltClCuClZCtCCCltlCCu›èÿÿè›tlƒßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=9!Cóÿÿÿÿÿ÷_ !!! !!!!!!!#! ! ! ! ! !! !! !! ! !!!!! ! !  !   !  qªíÿýÿþþýÿþÿýýÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿèÓ   Ó×ÿüþþþþþþþþþþþþþþÿÿþþÿþÿþÿüþÿúÖ}}}~}}}}€‘}}~€}}}‘€~}}}~‘‘€}~€}~~‘‘}}}~‘‘‘‘‘‘~‘‘}‘‘‘‘‘€€‘€}‘}~‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘¡¥‘‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘¡¡‘¡‘‘¡¡¡‘‘¡¢‘¡‘¡‘¡Úþÿÿÿÿÿ楑‘‘‘¡‘‘¡¥¡‘¡¡¤¢¡¡¡‘¡¥¡‘‘¡¡‘‘¢¥¡¡‘‘¡¢¡¡¡‘‘¡¤¡¡¥¡‘‘¡¡¡‘‘¡¥¡¡¡¡¢¡¡¢¡¡¥¡¢¡¡¡¡¡‘¡¥¡‘¡¡‘¡¡¡¡¡¡¡¡‘‘¤¡‘‘¡‘¡‘‘‘¤¡¡¤¡¡‘‘‘‘¥¡‘‘§ûÿû¥¡‘‘‘‘‘¡¡€‘‘¤‘‘‘‘‘‘‘‘‘€‘¤¤¡‘‘‘‘‘‘€‘‘‘‘‘€‘‘‘€‘‘€‘‘‘‘‘‘€‘‘‘‘‘}‘‘‘‘‘‘}€‘‘‘‘}}}}}}‘}}}}}}}}}}€€}}}}}}}}}}}}‘}}}}}}}‘}}}w}}}}v}}}}}w}}w}wv™õúš|˜èú™w}}ww}}wvv}vvvvwvwwvvwvvv}vvvvvvvvvwvvvovvvvvopvuvuvuuvvvvvouvvlovvuovvvvlluvulvvuluoouuuoloolltlulluulllllllllllltllllCCtlllCltlCClZlCClllCCClCCCCCƒÌúÿúß”ltÆòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!;!!Yóÿÿÿÿÿ÷_!!!#!! !!!! !!! ! ! ! ! ! ! !! !! !!   ! ! ! !   !!pªõþÿýÿþÿþÿýÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿæÓ  ÓÓþþþþþþþþþþþþþþþþÿÿþþþþþþÿþÿþúÕ}}}}}€}~}~€}€}~}}}€‘€}}}}€‘‘‘}}}‘‘€€€}}€‘~‘‘‘‘}‘‘‘}‘‘‘€‘€~€}‘€~‘‘‘‘‘‘‘€‘‘}}}‘¡¡‘¡¡€‘‘¡‘‘‘‘‘‘‘¡‘‘¡¡¡¡¤¡‘¡¥¥¡‘€‘¡¥¡¡¡‘‘‘Úþÿÿÿÿÿꙡ¡‘‘‘‘‘¡¢¡‘¡¥¡¡¡¤¢¡‘¡¡¡‘¢¢‘‘¡¢¡¡‘¡¢¦¥‘‘¡‘‘¢¡¢¦‘‘‘¡¥¡‘¡¢¡¡¥¡¡¡¡¤¡¡¡¢¢¥¡¡¥¢‘‘¡¢¡¡‘‘‘‘‘‘‘¡¡¡‘¡¡¡¡‘¡‘¡‘¡¡¡¡¥¡¥‘‘‘‘‘¡¡¡‘‘‘ëÿÿÚ™¡‘‘‘‘‘‘‘‘¥¥‘‘‘‘¡¤‘¡‘€‘¥¡‘‘‘‘‘‘‘‘‘€‘‘¡‘‘‘‘}€€‘‘‘‘‘¡‘‘}‘‘‘‘‘‘€}}‘‘‘‘}‘€‘‘}}‘}}}‘}}}}}}}}}}}}}}}}}}}}}}}}}}}€}}w}}}‘}}}}}}}v}}}}ww}}vv}}˜õúžwô÷™w}w}}}}vvwvvvwv}wv}wvvvvv}vvvvvwvvvvwvvopvvvpovvvovvvvwvvvooovvlvvvvovvvvlloollvvvolvvovuuulultlllluuullltlllCClulltlCtlCllttCCCCClClCClClZCZCCCCCllCZ›çÿÿ÷Ì{CƒßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!@óÿÿÿÿÿ÷_!!!;!!! !!!!! ! !! ! !!! !! ! ! !  !       ! !  !$p¥íÿýÿýÿþþþýÿýÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿèÓ  Ó×ÿþþþþþþþþþþÿþþþÿÿþþþÿþÿþþþþÿúÖŽ}}}}}}}}€‘€~}}}}~~}€}}}‘~}~€€}}‘‘}}‘‘‘‘‘‘‘‘}~‘}‘~€‘}‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘€‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘¡‘‘¡¥‘‘‘‘‘‘‘¡¡‘‘‘‘¡¡‘¡‘‘¡¡Úþÿÿÿÿÿ楢¡‘¡¡‘‘¡¡¡‘¡¥¡‘¡¡¡‘‘¡‘¡¡¤¢‘‘¡‘‘¡¡¡¡¡‘¡¡¥¡‘¡¡¡¥¡‘¡¡¡¡¡¡‘¡‘¢¢¡¡¡¡‘‘¡¡¡¡¡‘¡¢‘‘¡¢¡‘¡¡¡¡¡‘¡¡‘‘‘¡¡¡‘¡‘¡¤‘‘¤¡¡‘¡¡‘‘‘¤‘‘‘¡¡¤‘§ûÿõ¥‘‘‘¤‘‘‘‘‘¦¡€‘‘‘¥¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘€€‘‘‘€‘‘‘‘‘‘€‘‘€}‘‘€}€}}‘}}€‘}}‘€}‘}}‘€}‘}}}}}}}}}}}}}}}}}}w}}}‘}}}}}}wv}}}}}w}vv}}™õûž}˜èúš}www}vwwvvvwwvvvvvv}vv}}wvvovvvvvvvpvvvvvwvvuvvwvovuvuvovuvvovvuouvoluoouuouooluvtluvollolllluouuouolllttllltlttltlllllCltltlCtCltlCCCCZlllllCCCCCZCCCA{ÌúÿÿñÆu]ÊóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!99Y÷ÿÿÿÿÿ÷_!!!!! !!! ! !#! !! ! ! !   ! ! ! ! ! qªõþÿýÿýÿþÿþÿýÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿæÓ ÓÓþþþþþþþþþþþþþþþþÿþþþþþþÿþþÿþúÖ}~~‘}}}}}}‘‘}~}}}}}}~~}‘}‘€~}}}‘~}€‘‘‘‘‘‘‘‘}}‘‘}}~‘~}‘‘‘‘~‘¡‘‘‘‘}~€¡¡¡‘‘‘¡‘‘‘‘‘‘~‘€€‘‘‘‘‘‘¡¤¡¡¡‘€‘‘‘‘‘‘‘‘¡¡‘‘‘¡¤¡‘¡¥Ýþÿÿÿÿÿ榥¤¡‘¡¡‘¡¡‘‘‘¡¤¡¡‘‘€‘‘¡¥¡‘¡‘¡‘‘‘‘‘‘¢¡‘¡¡¢¢‘‘¢¡‘‘‘¢¡‘¡¥‘‘‘‘¡¥¡¥¡¥‘‘‘‘‘‘‘‘‘¡¡‘¡¡‘¡¤‘¡¡¡¡‘‘‘‘‘¡¤¡¡‘¡¡¤¡‘¡¤¡¡‘‘‘‘‘‘¤‘‘‘¡¥¡‘ëÿÿÚ‘‘‘¡¡‘‘‘¡‘‘€‘‘¤¡¡‘‘‘‘‘€‘‘€‘‘‘‘‘€‘‘€‘‘‘‘¡‘€‘‘‘€‘€‘‘¤‘‘€€‘‘€‘‘€}}}}~}}‘}}}}}}€€}}‘€‘}}€‘}}‘‘}‘‘€‘€}}}}€}w}}}w‘‘}vvw}}www}}}v}}}}}}}šõûž}˜ô÷œ}wvwvvvvvvvw}vvvpvwv}}}}wvvvvwwwvvpuvvvvwwvvpvvvvooovvvoovvvvvvvoovuoolovollluovullvvuuultlolououuoulouootuullltllCltltllClltltlCltuCClCCltlCCCCCCCCCCCCu›èÿÿýáxƒòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!9Cóÿÿÿÿÿ÷_!!!!!!#!! !!!! !! !!  !!! !     !    ! !  !!=q¥íÿýÿýÿþþýÿýÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿèÓ  Ô×ÿüþþþþþþþþþþþþþþÿþþÿþþÿþþþÿýúÖ}}}‘}}}}~~}}}‘~}‘‘}}~}‘‘€‘~}}~€‘‘~~‘‘€~}€€~}}€‘}~‘‘‘‘‘‘€~€}‘‘‘€€‘‘€‘‘‘‘‘‘‘‘€‘‘‘‘€‘‘‘‘¡‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘¤¡‘‘‘¡Úþÿÿÿÿÿ楡¡¡¡¥¡‘‘¡¡¡¡¡‘¡¡¡¥¡¡‘‘¢¢‘‘¡¥¡‘¡¡¡¡¤¡¡¢‘¡‘€¡¦¤‘¡‘‘¢¡¡¡‘‘¡¡¡¡¡¡¢¢¡¡¡¡‘‘¡¡¡¤¡‘¢¡¡¤¡‘¡¤¡¥¡¡¡‘‘¤¡‘‘¡¡¤¡¡¡‘¡¡¤¡‘¤¡‘¡‘‘‘‘‘¤¡¡Óýÿõ¥‘¡¤‘‘‘¤‘‘‘‘‘¡¤‘‘‘‘‘¤‘€‘‘‘€‘‘‘‘‘‘‘€‘‘‘€‘‘‘‘‘‘€‘}€‘‘‘€€€€‘‘€€‘‘€}}‘~‘€‘}€}}}}}}‘€€}}}}}}}‘‘}}}}}}}}}}}}}}}}}}}}}}}}}}}}}wv}}}}w˜õú™}˜ô÷™}}w}vwwvvvvv}}vvvvvvwvvvvvvvvvvvvvvpvvvwvvvvvovvvvvovvvvuvvuvllvlvvlooouvuuvuovlluuolloolooultlloouollllllloCCuulllCltlltCCulllCllCtlCCCCZlCCltCCZlCCCCCCC{ÌúÿÿúáÇçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@Yóÿÿÿÿÿ÷_!!!#!!!! !;! ! ! ! ! ! !  !   !!  !  !  !! !=qªõþÿýÿýÿþÿþÿýÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿæÓ! ÓÓÿþþþþþþþÿþþþÿþþþÿÿþþþþþÿþþþÿúÖ }}}}}}}}}}}}}~€‘‘‘~}‘€€€~}}}}~‘¡‘‘‘‘‘~€}}}}}~~}~}‘‘‘‘€€~‘‘}}‘‘~€‘‘€‘¡‘}€~}€‘‘‘‘‘‘‘‘‘¡¤¡¡¡‘‘‘€‘‘‘¡¡¡¡¡‘¡¡¡¤¡‘‘‘‘¡¡‘‘‘¡Ýþÿÿÿÿÿꥡ¡‘¡¢¡‘¡‘¡¤¡‘‘‘¡¢¡¢¢‘‘¡¡‘¡¥¢¡¡¤¡¡¥¡¢¡‘¡¡‘‘¡¥¥¡¡‘‘¤‘¡¡¡¢¥¢¢¡‘‘¡¡¡¡‘¡‘‘¡‘¡¡¥¡¤¡¡¡‘‘‘¡¥¡¥¤‘‘‘¡‘‘¡‘¡¥¡¡¥¥¡¡¡¥¥¡¤¤‘‘‘‘‘‘‘¡¥¡õÿÿÓ‘¡¤‘‘‘¡‘‘‘¡¡‘‘‘‘€¡‘‘‘‘€‘‘¤‘¡¤‘‘‘‘‘€‘€‘‘}}€‘€€‘‘}}}}}}‘‘€~}‘‘¡‘}}}}‘‘‘}}}€}}}}€€‘}}}}}}}}}w}}}}}v€‘}}vwwvw}}‘}}}}}}w}}}}˜õú™p˜õ÷™ww}}}vvvvvvvv}}}vvvwvvvvvvvvwvvvwvvvwwvvoovvvulvwvovwvooouoluooluuluooovvovvululuvtlouuloullluloooulCltlllllluullltCllotCCllttttCClZClCClCCCCZlllCCClCtCCCC›çÿÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ@9!!!Bóÿÿÿÿÿ÷_!!!!!!!!! !!!!! ! ! !!!! ! ! !! !  ! !   ! ! !!!!  }ªíÿýÿýÿýÿþýÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ  Ó×þþþþþþþþþþþþþþþþÿþþþþÿþþþþÿüúÖ}}}}}~}}}‘}}}}~}}}€}}}‘€€€‘‘€~‘‘}}€‘‘}~€‘‘‘}}‘}‘¡‘‘‘}‘‘‘}‘‘‘‘‘‘‘€‘‘‘€‘‘}‘‘‘¡€~‘‘‘€‘¡‘‘‘¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘¡¡‘‘¡‘àþÿÿÿÿÿ椑‘‘¡¤¡¡‘‘¡¡¡¡¡‘‘¡¡¥¡‘¡¡¡‘‘¡£¡¡‘‘¢¢‘¡‘‘¡¥‘‘¡¡¡¡¡‘‘¢¡¡¡‘¡¡‘¡‘‘‘‘‘¡¤¡¤¡¡¡¤¡¡¡‘¡¡‘‘¡‘‘‘¡¡¡¡¡‘¤¡¡¡‘‘‘¡¡‘‘¡‘‘‘¡¡‘‘‘¡‘‘‘‘‘‘‘¢‘Óþÿõ‘‘¡‘‘¡™¡€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘}‘‘‘€~€‘€€~€‘‘‘‘‘€‘}‘‘‘}}‘€}}‘€}}}}}‘‘}}}}}}}}}}v‘}}v}}}}}}}vw}}}}}}}}wv}}v}˜õûš}™õõ™wvvw}}vvvvwv}vvvvvvvwvvvvvvv}wvpwwvov}vovpv}vvouv}voovuovvvoovvoovvuvouuouuouololuooouuolluuuolltluultuulltltllllCtllCtllllCtlCllClCClCCCCCCCCCCCCCZCCCCCCCCC{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Zóÿÿÿÿÿ÷_!9!!! !! !!!! !! ! ! !!    !  !  ! !q¥õþÿýÿýÿýÿþÿþÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿæÓ Ó×þþþþþþþþþþþþþþÿþÿþÿþþþþÿþþþÿúÕ}}}‘~}}}}}~}}}}}~}}~~}}~}‘€~‘‘~}}}}}}~‘‘~~‘‘€~}‘€}€‘‘‘‘}~€€‘‘‘€‘‘¡‘€‘‘‘~‘‘‘‘¡¡‘€‘‘‘‘‘¡¡‘‘¡¡¡¢¤¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘¡¡¡¥‘‘‘¡¡Úþÿÿÿÿÿꤑ‘‘‘¡‘¡¡‘‘¤¡¡¥¡‘‘‘¡‘¡¡¡¡‘‘‘¡‘¡€‘¡¡‘¡¡‘¡¡‘‘¡¡‘¡¡‘‘¡¡¥‘‘‘‘¡‘¡‘‘‘‘‘¡¢¦¥¤¡¡¡‘‘‘‘¡¤¡‘‘‘‘€¡¤¥¡¡¡¤¡¤‘€‘¡¤‘‘‘‘‘‘‘‘€€‘‘¡¤¡¤‘‘‘¡‘‘õÿÿÓ‘‘¡¡¡‘‘‘‘‘‘¡‘‘‘‘‘€€€‘‘‘€‘‘€€€¤¥‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘€}‘€}‘‘‘~~€}}}‘‘‘‘}‘‘‘€}‘‘}€‘‘€}}‘‘}€‘}}}}€}}}€}}}€}}ww}}}}}}vv}}}w}}}}vvvv™õúž}™õú™wvvvw}}}v}}}w}vvvvwww}wuvvvwwvvvvvvvvvvopov}vvvvvvvuooooovvuoloouvuvvovvoovoluuulllooooullovvtllullooutvutltllltClltllCCCltlltCCCCttCtCCCCtCCCCCCCClCACCCtCClláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@!Bóÿÿÿÿÿ÷_!! !! !! !! !! !!    !!!! !   !! ! !!   p¥íÿýÿýÿýÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ Ó×ÿþþþþþÿþþþÿþþþþþÿþþþþþþÿþþÿþúÕŽ}}}}~€}}}€}}~}~}}}€~~}}}}~~‘‘}}~€}~€€€€}~‘‘€€‘‘€}‘€€‘€€‘}‘‘‘~‘¡‘‘‘‘‘}€‘‘‘‘‘‘‘‘‘¡‘‘‘€‘¥‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘¡¡¡‘‘‘‘Úþÿÿÿÿÿ椑¡‘‘¢¡‘‘‘‘¤¡‘¡¡¡¡‘‘‘¡¡¡¤¡¡¡¡¡¥‘‘¡¡¡¡‘‘¡¥¡¡¡‘‘¡¡¡¡‘‘¡¡‘‘¡¡¡¡¤¡¤¡¡¡¤¡¡¡‘¡¡¡‘‘¡‘‘¤¡¡‘‘‘¡¡¡‘‘‘‘‘¤¡‘‘¤¡‘‘‘‘¤¡‘‘‘‘‘‘¡¤¡¡‘‘‘¤‘‘Ôþÿõ™‘‘¤‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€€‘‘}€‘‘€‘‘€}~€€€€}‘‘€€€}}€‘‘}}€}}€}}‘}}}}}}}}}}}}}}}}}}}}}w}}w}}w}v}}}}v}}˜÷ú™}˜õ÷™wwvww}}wvv}}vvvvvv}wvvvvvvvvvvvvvvvvvvvouvv}vvvuvovouvvuvvvvvuuvuolvvuuoluvolovoluouuuolltuulltluluuuolllllllCtlltltlClCuulCCllClCCllllCCtlCCCCCCCCCCCCCCCCCtC÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!!Zóÿÿÿÿÿ÷_!!!#!!!!!! ! ! ! ! ! !! ! ! !   ! ! ! ! ! !!qªõþÿýÿýÿýÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿàÓ7!ÓÓþþþþþþþþþþþþÿþþþÿÿþþþþþþþÿýÿúÖŽ}}}}}€~}}€€~}€€€~€}~}‘~}}}}‘€}}}€‘€}‘~}‘}‘¡‘‘¡‘~}€‘}~€‘‘‘}€€‘‘‘‘‘‘¡‘}‘¡‘‘‘¡‘€‘‘€‘‘‘‘¡¤‘}‘€‘‘‘‘‘‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘¡Úþÿÿÿÿÿꥡ‘‘¡¥‘‘‘‘‘¡‘‘‘¡¥¡‘‘‘¡‘¢¦¥¡¡¤¡¡¢¤¡¡¥¤‘¡¡¡¡¡¡‘‘‘¤¡¤‘‘¤¡‘‘¤‘¡¤¡¢¦¤‘‘¡‘‘‘‘¡¥¥¡‘‘‘‘‘¡¥¤‘¡¡‘‘‘‘‘‘‘¡¥¡‘¡¤¡‘‘‘¡¥¡¢¤¡¡‘¡¥¤¡¤‘‘‘‘¡¥õÿÿÔ‘‘‘‘€‘‘‘‘¡‘‘‘€‘‘‘¡‘€‘¤‘‘‘‘€}€€‘‘‘‘€€}}‘‘‘‘‘‘‘‘‘‘‘€‘‘€}€‘}}}‘‘‘€€‘€€}}}}€}}‘€}}€€}}}€}€€}}vv}}}}}}}}}}v}w}vvvw}}}šõ÷˜võ÷˜wvv}}}}}vwvvvvvv}wwvvvvvwvvvoovvvvvvvvpuvvwvuvovvloouwvvvulovvvvvulluouuluuulvvtllouvuulououluoooullllCClluuullulCCttltllutCCtlClZCCCltClltCCtlZCCCClZCCAACCCxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!=Zóÿÿÿÿÿ÷_!9!! !#!!!! ! !!! ! ! !!!  !!  !!   ! !! !9sªíÿýÿýÿþþÿþþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ$Ó×ÿþþþþþþþþþþþþþþÿÿþþþþÿþþþþþþúÖŽ}}}}}}}}~~}}}€~}~}‘}}}}~}}‘€}}‘~‘‘}~‘€}~}~‘‘€‘‘€€~‘‘€~‘‘‘€€~~‘‘€€}}¢‘~‘‘¡¡‘‘€‘‘‘‘~‘‘‘‘‘¡‘€‘€‘¡‘€‘‘‘‘¡¡¡‘‘‘‘‘‘‘€‘‘¡¡‘‘Úþÿÿÿÿÿꙑ‘‘‘¡¡‘‘¡‘‘‘‘‘¡¡¡¡‘‘¤¡¤¡¡¡¡¡‘‘¥¦‘¡‘¡¡‘‘¡¡¡‘‘¡¡¡¥¡‘‘¦¡‘¡¡¡¥¢‘‘¤¡‘‘¤¡‘‘¡‘¡¡‘‘¤¡‘‘‘¢¡‘¡¤¡¡¡‘‘‘‘¡¡¡¡‘‘‘¡‘‘¥¡‘‘‘‘¡¡¤¡‘‘¡‘‘‘‘‘‘Óþÿ÷™‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¤€}‘¡‘€‘‘‘}€‘‘¡‘€}€€‘‘€€‘‘€‘‘€€€‘‘‘‘}€€€€€€€€€€€}}€}}}}€€}}}}}€}}}}}}}}}}w}}}}}}}}}}}w}}}}}w}}}w}}™÷û™v˜òõ™ww}vwwvw}wvvwvvvvvwvvvvwvvvvvvvuvvvvvvvvvovvvvvvvouoowvuvoouvvvouoovvvvoooooouuouuluuouuuoolultluolluultlCtullllCClulClCtulCllCCCllCCtCCCZCCCtCClCZCCCCCCCZC@ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!9!;Zòÿÿÿÿÿú_!!!!!!!! ! ! !! !! !!! !  ! !!! ! ! ! !  }ªõÿþþÿýÿþÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!7ÓÓþþþþÿþþÿþþÿþþþþþÿÿþþþþþþÿþÿÿúÖŽ}}}}}‘‘}}}}}}}‘€}}‘‘}}}€~€‘€}}‘‘‘}~‘€}}}~}€‘‘}}€‘‘‘‘‘‘‘‘€~‘‘‘~~}}‘‘~‘‘‘‘‘‘‘‘‘‘€€€‘‘€‘€‘‘‘‘‘‘‘‘‘€‘‘‘¡‘¡¤‘‘‘‘‘€‘‘¡¡¤¡‘Úþÿÿÿÿÿê‘‘‘‘‘‘‘‘‘¡¡¡¡‘¡¥‘‘¡¡¢¡‘‘‘¡¥¡‘€€‘‘‘‘‘‘‘‘‘¤¤‘¡¡¤¡‘¡¡‘¡¤¥¡¤¡¢¢¤‘‘¡¤‘‘¡¥‘‘¤¡‘‘¡¡¡¤‘‘‘¡¤¡¡¢¥¥¤¤¡¡¡‘¡¡¤‘€‘™‘¡¡¡‘‘‘‘¤¡¡‘€€‘¡¥¤¡‘‘‘õÿÿÚ¥¡¤¡‘‘¤‘‘¡™‘‘‘‘‘‘¡¡‘€‘‘€‘¡¡‘€}‘¤‘~€€€‘‘‘‘‘€‘}€‘‘€‘€}}‘‘‘€€‘‘‘‘€}€‘}}}}}}}}}}€€}}}‘€}}}}}}}}}}}}}}}w}}}€ww}w}}}v}}}}v}}}}}wvvvvvw™÷÷v˜õ÷˜}}}}vvvvv}vvwvvvvvv}}wwvvw}vvovvw}wvuvvwvuuovvvvvuvouvulvuvvvvuoouvuvvvuloovvovuvullloooluluououlotllouvtClltllluClllCClouuulZCCClCCCltCCCCCCltCCClCACCCCClC{ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!;!!!Bóÿÿÿÿÿ÷_ ! !!! !!!!! !!! ! !!! ! ! !  ! !!!! ! !!  !=s¬íÿþÿýÿýÿþþýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓÓ×ÿþþþþþþþþþþþþÿþþÿþþþþþþÿþþþþúÖ}}}}}€}}}~}}~‘}}}}}}}‘€}}¡‘}}}}‘€}}‘‘‘‘~~}}‘‘}~‘‘‘‘¡‘‘‘~‘€‘‘‘}‘~‘‘‘‘‘€‘€‘€€‘¡‘‘‘€‘‘‘‘‘‘‘€‘‘‘‘¡‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘¡‘¡¡Úþÿÿÿÿÿ椑‘¡‘‘¡‘¡¡¡‘‘¡¡¢¡‘¡¡¡‘‘‘‘¤¡¡¡¡¡‘‘¡‘¡¥‘€‘¥¡‘¡¥¡‘¡¤¡‘‘¡¡¡¡‘‘¤¡¡¡¡¡‘‘¡¡‘‘¤¢‘‘¤¤¡‘¡‘‘¡¡‘¡¤¡¡¡¡‘¡¤¡‘¤¡‘‘¡¡‘‘¡¡‘€‘¡‘‘¡‘‘€‘¡¡¡‘‘‘‘Ôÿÿú¥‘‘¤¡€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¤€€‘‘‘‘‘}‘¢‘‘‘‘‘‘‘‘€€}€€€‘€‘€€‘‘‘}‘}}€€}}}}‘}}}}€}}€€}}}}}}}v€}}}w}}}}}}}w}}}w}}}}}}w}}}}w}}w}wvv}}™úõ˜v™õ÷™}v}vvvwvvvvvvvvvwwvvvvvvw}vvvvvvvwvvvuvvvpuovvvuvuvvvvvoovvoovuoovvuuvuoououvoooooltvuuolloolluollloltuulCltltltllttltlCtllulCllCtlCCulCClCCCtlCCCCCACZCACuCðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!$!!!Yóÿÿÿÿÿ÷_!!!!! !!! !! ! ! ! ! ! ! ! !  ! !!     !!qªíÿþþÿýÿýÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿæÓ!$Ó×þþþþþþþþÿþþþþþÿþÿþþÿþþþþþþÿþúÖ}€€}}}}}}€}}}}}‘}}}}€}}‘€~}}}}€‘~€‘‘‘‘‘‘}‘‘‘}}‘}}}‘}}}‘‘‘‘‘~}‘‘‘‘‘‘¡‘€}€‘‘¡‘‘‘‘~‘¡¡¢¡€‘‘‘‘‘¡¥‘‘¡¤¤‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘Úþÿÿÿÿÿꥑ¡¡¥¡¡¡¤¤‘‘¡‘¡¥‘‘‘‘‘‘‘¡¡¡‘‘¥¥¡‘¡¥¥¡¡‘‘¡¡¡‘‘¡¡‘‘¡‘‘‘‘¡‘‘‘‘‘‘‘¤‘¡‘¡¡¡¡¡¡¤‘‘¡¡¡‘‘¡¤‘‘‘‘‘‘‘¤‘‘¡¤¡‘‘‘‘‘‘‘‘‘‘‘€‘¤‘‘‘‘‘¡‘¡¡‘¡¡‘‘€‘õÿÿÚ‘€‘‘€‘‘‘‘¡‘¤‘‘‘‘‘‘‘¡‘€‘‘‘‘‘‘¡¥‘‘‘‘‘‘‘‘‘‘‘€~}€€‘€‘‘€€}}}}}}}}}‘}}‘‘€}}€€‘}}}}}}}€}}}‘}}wvw}}}}wv}}}}}€}}vvv}}}w}}}™û÷}˜õõ™vvwvv}}wwvvwwvvvw}vvvvvvvvvuvvvvvwwvvpvvooooooooovvwvvvvloulloouovvolovuvvuolluuuvoovvvutltCllllCuuullllCCllllllCCluullCCCClllCtlllZlCCCCClCCCCCCCCCACCCACl›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Cóÿÿÿÿÿ÷_;!#! !!#! !!!! ! ! ! ! !! !  !!=q¥íÿþÿýÿþþÿþþýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿèÓÓ×ÿþþþþÿþþþþþÿþþþþÿþÿþþþþþþþÿþúÖŸ}}}€}}}}~‘}}}}}}}€}}}‘}}}}~}~~~}€‘‘}‘‘‘€€~€€‘€‘€~}}‘€~}€‘‘‘‘‘‘€¡‘‘‘€‘‘€‘€‘‘‘‘‘¡‘}‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘¡¡‘}€¡‘¡¡‘‘‘‘‘¡¡¡‘‘Úþÿÿÿÿÿæ‘‘‘¡¡¡‘‘¡¤¡¡‘‘¡¡¡‘‘¡‘‘¡‘¡‘‘¡¡¡¡¡¡¡¡¡‘¡‘¡‘¡¤¡¤‘¡‘‘‘¥¡¡¤‘¡‘‘¡¡¡¡‘‘¤¤‘‘¤¡¡‘¡‘‘‘‘‘¤¥¡‘‘€‘‘‘¥¡‘‘‘¡¡‘‘‘‘¡‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘¤¡‘™‘‘‘‘‘Óÿÿú™‘‘‘‘‘‘¡€‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘‘‘‘€€‘‘‘€‘‘€€€}‘€}€€€€}}€€}}€‘}}‘}}~€}}}€}}}}}w}}}‘}}}w}€}v}}}}}}}}w}}ww}w}}wvwv}}™úú™}˜õ÷˜vv}wwvvv}vvv}vvvvvvvvvvvvvvvvvvvvvvvvvvuvuvvvvuvuuvvvuuvvvvoouvoouuoluvuuvvulovololuuuuooolluululluulllllltltltlCCuullCCCCCtlCtllCtllCCCCttCCCCCCCZCCCtC@CZòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!#!!Yóÿÿÿÿÿ÷_!!!!!!!!!!!#! !!!! ! !! !! ! !!   !   =q¥õÿþÿþþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!!ÓÓüÿþþþþÿþþþþþþÿþþÿþþþþþþÿþüÿþúÖ¢‘}w}}}}~}‘€}}€~~}}}}}‘€~}}}}}}}}€}€‘‘~}~}}}}}}}€‘€‘‘‘‘¡~‘‘€}}‘‘‘‘‘‘‘€~}€‘‘‘‘‘‘}‘¡‘€‘¡€‘€€‘‘€‘‘‘‘‘¡¡€‘‘‘‘¡¥¥¡¡‘€€‘‘‘‘‘‘Úþÿÿÿÿÿꤡ¤‘‘‘¡‘‘¡‘¤¡‘‘‘¤¤‘‘‘¡¥¡‘‘€¥‘‘¤¡‘‘¡‘‘¡¡¤¡‘¡¡¤¡¡¥¡¡¡¥¤¦¥‘‘‘¡¤‘‘¡¡¤¡‘‘¡¡‘‘‘¡‘‘‘‘¡¤‘‘‘‘‘‘‘¡‘‘¡‘‘‘¡‘‘‘‘‘¡¤¡™‘‘‘‘‘‘‘‘‘¡¡¥¢¡‘¡‘¡‘‘‘õÿÿÚ¥‘‘€‘¤‘‘‘‘‘‘‘€‘‘€‘‘€‘‘‘€}€€€‘‘‘€}€€}}‘‘‘‘‘}€€‘€€~€‘}€}}€‘}}€}}}}}}€}}}€}}€}}€}}}v}w}‘}}}}‘}}w}}}}wvv}}}}}}}}žÙý÷‘}˜õýæž}vvvv}}vvv}}v}vvvwwvvvwwvvvvvwvvvvuvvvvvvvvvvvvoouvouvvvvvvvvvloouuvolllvvlovotlloulllluvvuouulCltllClCCllloutllllCCCCClCltllutCCCCCttltCCCZCCCCCCCCCCCCÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!@!@óÿÿÿÿÿ÷_!!!!#!!#!!!!!!# !!!#!!! ! ! !   !  ! !!  =sªíÿþÿþÿýÿþþýÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ$!!××ÿüþþþþþþþÿþþþþþþÿþþÿþþÿþþþÿþúÖ ‘}}}}}}€}}}}}}}‘}}}~}}}~}€}‘~}}‘‘}€€~€}€~~~}~‘€~€‘€€‘}€€€€~‘‘‘‘€‘‘‘~€€‘‘€‘¡€~‘‘‘}¡¢‘€‘~‘‘‘‘‘}‘‘‘¡‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘¡‘‘Úþÿÿÿÿÿ椑¡‘‘‘‘‘‘¡‘¡‘‘‘¡¡¡¡¡‘™¡‘‘‘‘¡¡¡¤‘‘‘¡‘¡¤‘¡¥¡‘¡¤¡¡¤¡‘¡¡¡¡¡‘¡¡¥¡¡¡™¡¡¡‘¡¡¡‘‘¡¤‘‘‘‘¡¡¡¡‘‘‘‘‘¡‘‘‘‘‘¡‘¤‘‘‘‘‘¤¡¡¡‘‘‘¤‘‘‘‘‘‘¡¡‘‘‘‘‘¤‘€Ôÿÿý¥€‘‘‘¡‘€€‘€‘¤€‘‘‘‘‘€‘‘‘‘‘€€‘‘‘€‘‘€‘‘€€‘‘‘‘€€€€€€€€}}€}€€}}€~€€€}}}}€}}‘‘}}}}}€}}}}}}}}}}}}v}‘}}}}}}}}}}}}w}ww}}}˜×õ÷ýÿ÷™w˜õÿÿúòàžv}vvvvv}}vvvvvwvvvwvvvvvvvvvuvvvvuvvvvwvvvvvouvuvvovuuvvvvulvvovoluluuuluoovlluvlllltuuCluollultltttulCtllllulCCtlCttlCllZolCCCCClClCCCZCClZCCCCCCCCu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Yóÿÿÿÿÿ÷_!!!!!!!!!!!#!!!! !!!!! !! !! ! ! !    pªõÿþÿþþÿýÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!ÓÓþÿþþþþþþþþþÿþÿþÿÿþþþþþþþþüÿþúÖŸ}}}}€‘}}}}~€~}‘‘‘€€~}}€€}}~€€‘‘}}}}‘€~}}}‘¡‘‘‘}}‘‘}}}}}~€€‘‘€‘‘}}‘‘‘€~~}}‘¥‘€€‘€}‘‘€€}€‘‘‘‘‘‘‘‘‘‘‘}€‘¡¡‘€€€‘‘‘‘‘¡¤‘€Úþÿÿÿÿÿ椑‘‘‘€‘‘¡™‘‘‘‘¡‘‘‘¡¤¡¡‘€‘‘‘¦¡¥¡‘¤¡¤¡‘¡¡‘‘‘‘‘¡¡‘‘‘¤¡‘‘‘‘‘¡¡¡¥‘¡¡‘€‘¥¤‘‘‘‘¡¤‘¡¤‘‘‘‘‘‘¡¤¡¡¥‘€‘‘‘¤¡‘¤‘¡¤¡¡‘‘‘‘‘‘‘€‘¤‘‘€‘‘‘€‘‘€‘‘‘™õÿÿà‘‘‘‘‘‘€‘‘‘‘‘‘‘¤‘‘‘‘‘‘‘‘}‘‘‘‘}‘‘‘‘€‘‘‘‘‘€}}}}}}€‘‘‘‘‘}}}}‘€€‘€}}€‘€‘‘‘}}}}}}}}€}}}}}}€€}}}}}w}vwwv}vwvv}}}wvwwÙõýÿÿÿÿ÷}™õÿÿÿÿÿúñ׆vv}vvwv}vvvvvw}wvuvvvwvvuvvvuvvuvvvvvvvvvuooovullouuouvolvvvuluooptlluuluulluvulllulCCluClllouolluuuotCluvuuultllvtCClltllZCttttCCCllCClllZCZCCZCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=;!!!@óÿÿÿÿÿ÷_!#!!!#!! !!!! !! !!!! !  ! ! !  !! !p¥íÿþÿþÿýÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!77Ô×ÿüþþÿþþÿþþþÿþþþþÿþþþþÿþþþÿþÿúÕ}}}}}}}}}}}}€}}}€‘}}}}~~}‘~}}‘‘}}~~~~€€}}‘‘‘€€}}€‘~~~~€}‘€€‘‘€€}‘‘‘‘~‘€~~‘¡‘‘€}‘‘‘€‘‘‘€‘‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘¤¡‘€Úþÿÿÿÿÿ楡‘€‘‘‘‘‘¡¡‘‘¤‘‘‘‘¤‘¡‘‘‘¡‘‘¤‘¡¡‘¤¡‘‘‘¤¦‘‘‘‘‘¡‘‘‘‘¡¡¡‘‘€‘¡‘¤¡¡‘¡¡‘‘¡¡‘‘¤¤¡‘¡‘¡‘‘¡‘¡‘¤¡‘¡‘¡‘‘€‘¤¡‘‘‘‘¤¡‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘Öÿÿý¥‘‘‘‘‘‘‘‘¤€‘‘‘‘‘‘€‘‘‘‘€‘‘€‘‘‘}‘‘€}€‘‘€‘‘‘‘€}}‘€}}€€}€€€€}€}}€}€‘}}‘€€€}}€}}}}}}}}}}}}}}}}}}ww}w}}}wwv}}}ww}žñþÿÿõßèÿõwœõ÷Ó×à÷ÿÿýèÓ}vvvvvvvvvvv}vvvvvvvwvvvuvvvvvovvuuvvvvvvvoovvouvvllvvulvuuouvuuuloluvoooluvullulvulluultlluulllltlllltttllllCtlulCCulCCtlClllCCCZlCCZCCtlCCCCC{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Yóÿÿÿÿÿ÷_!!!!#!! !!! ! !#! ! ! !  ! !    !$qªõþþÿþÿþÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!775Ó×þÿþþþþþþÿþþþþÿþþÿÿþþþþþþþüþþúÕŽ}}}}}}}}}€~}}}}}}}}}}}}‘‘‘}€‘}}‘‘}}}}~}~‘€}‘‘€€€}€‘‘‘‘‘‘‘‘‘}}}¡‘‘‘‘‘‘€‘‘~‘‘‘‘¡‘‘‘¡‘‘‘‘‘‘‘‘‘‘¡¥‘‘‘‘‘‘‘‘‘‘‘¡¥¡‘‘€‘Úþÿÿÿÿÿड‘‘¡‘¡‘‘‘¡¥¥¡‘‘‘¡¤‘‘‘¡¥¥‘‘‘‘‘¡¡¡‘‘‘‘‘¦¡¡¥¥¡¤¡¡‘‘‘‘‘¡¥‘‘‘¡¡¡‘€¡¥¡‘¡¡‘‘‘¡¡¤‘‘‘‘¡¤¤¤¡¡‘‘‘‘‘¡¥‘¢¦¤‘€€‘‘€‘‘¤‘‘¡¤‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¥¡‘õÿÿè‘€‘‘€‘‘‘‘‘‘‘€€‘‘™‘‘‘‘‘‘¢‘‘‘‘€}‘‘€‘‘}}‘‘‘‘}€‘€€}}}}€‘‘‘}€€}}}‘€}}}}}}}}}}}}}}}}}}}}}}w}w}}}}}}}}}}}}}}}}ÙúÿÿõÓ˜žý÷w™èß‘™Óèüÿüè™w}vvvvvvw}vvvvuvvvvvvuvpvwwvouovvouvuvuuuuvvvuvvvllvulluooulooulluoooooullullouluvuuullullultluClllltlllCCCCCCCtCCCZCClltCCCCCCCCtlCCCCCCCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!;!9@Cóÿÿÿÿÿü_! !!=#!!#!!! ! ! !! ! !! ! ! ! !  !!=q¥õþÿþÿþÿþÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×7!Ó×ÿüÿþþþÿþþþþÿþþþþÿþþþþþþþÿþÿþúÖ}}}}}}}}}}}‘}}}}}}}}}‘€}}€€}~€}~‘}}~}}€}}‘€~‘}}‘‘~}€~‘‘‘€€}‘‘‘€~}~¢‘‘‘€‘}}¡‘€€‘€‘¡‘€‘¡‘‘‘‘‘‘‘‘‘‘¡¡‘¡‘‘‘‘‘‘‘¡‘¤‘¡‘‘‘‘Úþÿÿÿÿÿæ¡‘¡¥¡‘‘‘‘‘‘¡¡¡‘¡¡‘¡‘¡‘‘¡¡‘‘‘‘‘‘‘‘‘¡‘€‘¤¡‘¡¡¡‘‘¤‘‘‘‘¡¤¡‘€¡‘¤¡‘‘‘¡¡‘‘¤‘‘‘‘¡¤¡‘‘¡¤‘¡¡¡¡‘‘‘‘‘‘¡‘¡¥¡‘‘‘‘‘‘‘‘‘‘¤¡‘‘‘‘‘‘‘‘‘‘‘™‘‘‘‘‘¡‘‘Øÿÿþ¥‘‘‘‘‘‘‘‘‘‘€€‘¡‘‘‘‘€€‘€‘‘‘‘‘‘€}‘‘€€€}}€‘€‘€‘‘€€}}~}€‘‘}€€€€}}}€}}}}}}}}}}€}}}}}€}}}w}€}v}}}}}v}}ww}}ww}}}™èýÿõÓ™€vvžý÷w˜èÙvvww˜žàýþèžwvvvvvvvvvvvvvvvuvvuvvvvvvvvuvovuvoovvvvvvvvoovvuuuovuolvvolupooouoluloltooltuollvulloululllullCCtulCtllCZCllllCtlCCttCCCCCZCCCCtlCCCCCBCCCZ”üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Yóÿÿÿÿÿ÷_!! !!!!!#$! !! ! ! ! ! ! ! !   !  !q¥õÿþÿþþÿþþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!$!7ÓÓþþþþþþþþÿþþÿþÿþÿÿþþþþÿþþþüÿþúÖ¢}v}}}€~}}}}}€}}}}}}~}€‘‘~}}}}}}}‘}}~‘‘‘~}}}‘€‘‘}}~‘‘‘}}€€‘‘}€‘‘‘‘‘‘¥‘}‘~‘}}€‘€~‘‘‘‘‘‘‘‘‘€‘‘€‘€€‘‘€‘‘‘‘‘€€‘¥¤‘‘‘‘€‘‘‘ÚþÿÿÿÿÿꙀ‘¡‘™‘‘¡‘‘‘‘‘¡¤¡‘‘‘‘‘¡¡¤¡‘‘‘¡¤¤¡¡‘‘‘¡‘‘‘‘¡‘‘‘‘‘‘¡¡¡¡‘€‘¤‘¡¥¤¥¡€‘‘‘¡¡¡‘‘‘¡¡‘¡¡‘‘‘‘¡¤‘‘‘¤‘‘‘€‘¡¡‘‘‘‘¡‘‘‘‘‘‘¤¡¤‘‘™‘‘‘‘‘‘¡¤¡‘‘‘€‘¡÷ÿÿ뤑‘‘€‘‘‘‘‘€‘‘€€€‘‘‘}}‘€€}€‘‘€}‘‘€€‘‘‘‘}}€‘‘‘‘‘‘€€‘‘}}€€}}€€}}}}}‘‘‘}}}}}}}}‘}w}w}}v}}}}}}}}}}vww}}w}˜òÿþÙ˜w}}vvšÿõw™ñÙwvvvvvvÊõÿõžvvvvvvvvvwvvvvovvvvvwwvvvuvvvvvvvuvwvvuvvuuluvvuvuovvuouvuovvuvuvvuuuuuvulCloutlluluullllCtltuClltCCCCCloulZCtlltltlCClZulllZCClZCCCCACCCCvñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!9!!9Zóÿÿÿÿÿ÷_!! !#! !!! ! !!!!! ! !!!!  ! ! !!   !  qªõþÿþÿþÿþÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!!$!!7Ó×ÿþþÿþþþÿþþþþþþþþÿþþþþþþþþÿþþúÖŽ}}}}}}}}}}}}}}~}}}}€‘‘€}}}}}}}~}‘€‘}}}}‘‘}}‘‘}}‘‘‘‘}€¡‘}€‘‘}‘€‘¡‘€‘‘€‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘‘€‘‘‘‘‘€€‘‘‘‘¡¡‘‘‘‘‘€‘‘Úþÿÿÿÿÿæ‘‘‘‘‘‘¡‘™¡‘‘‘¡‘¡‘‘‘¡¡‘‘¡¡‘‘‘¡‘¡¡‘‘‘‘¤‘‘‘‘‘‘‘‘‘‘‘¡¤‘¡‘‘€‘¡‘‘¡¡¡¡‘‘¡‘‘¤¡‘¤‘‘‘‘¤¤‘‘‘¡‘¤‘‘‘¥¡‘‘€‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘¤¡‘¡¡‘€‘¤‘‘‘‘‘€‘€‘¤‘×ÿÿÿ§‘‘‘€‘€‘‘‘€€‘‘‘‘‘€}‘¡}€€€€€€‘‘€}‘€‘‘‘€€}}‘‘‘‘}}}‘€}}}}€}}}€}}€}}}w}}}}}€}}}}}}}}}}v}w}}}v}}v}}}èÿû×}}wv}Êÿ÷™vžúè}wvvvv}v{žèýò›vvvvvvvvvv}wvuvvv}vvvvvovvvwvvulv}vuuvuoovvvvuoolvvuuouoououvoouluuouolltluuoolltoulttlllltllCultulCZltulCltltlCllCCCllCCCCCCCCCCZCCCCCZÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!9!Zòÿÿÿÿÿ÷_!!!!! ! ! ! !!! ! ! !#! ! !   !  !qªõþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ!!ÓÓþþþþÿþþþþÿþÿþÿþþÿÿþþþþþþþüÿþúÕ~}}}}}}}}}~}}}}‘‘}}}}}}}}}~€‘‘‘‘€}~}}~}}‘‘}}‘‘‘}}}}€~}}‘}}}‘€}}}}‘‘}‘‘‘‘‘‘‘‘}‘‘‘‘‘¥‘‘‘‘‘‘}‘¥‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡Úþÿÿÿÿÿꥡ‘‘‘‘¡¡‘‘‘‘¡¥¡‘‘€‘¥¤‘‘‘‘‘‘¢¥¤¡‘‘‘¤£¥‘‘‘‘‘‘¡¡¡¡¡¤‘‘‘‘‘}‘¡¡¡‘‘‘‘‘¥¥‘‘¡¥‘‘€€‘‘¡¡‘‘‘¡‘¡¤‘¡¢¤‘‘€‘‘‘‘‘‘‘‘‘¡¤‘‘‘‘€‘€‘¡‘‘€‘¤¡‘€‘‘‘‘€‘¥‘¡÷ÿÿô‘¤‘‘‘€‘¡‘‘‘‘‘}€‘‘€‘€‘‘€}€‘‘‘‘€€}}‘‘‘‘}}‘‘‘‘‘}}}}}‘}‘‘€‘}}}}}€}}}}}}}}}‘}€}}}}}}}}vvv}wvv}}vvàþý×vvvvw×÷ÿÿàžàÿ÷˜vvv}}vvvw™èþè†}wvvvvvuuov}vvvv}wvuvvvuvvvvuvvvv}oovvvououououuluvovvuvllllvulllouuvtlotluoltlllululultullutltlltCCoClltltultCCCCutlCZCCCCCCZCCCClZCCC{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@!!!!@óÿÿÿÿÿ÷_!!;! ! !!!!!! !!! !  !!!  !! !!  ! !$p¥õþÿþÿþÿþÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ757Ó×ÿþþþþþþÿþÿþþþþþÿÿþþþþþþþþÿüÿúÕ}~}}}}}}}~}}}}}}~}}}}}}}}€€}~}}€€}~‘~}€}}€€~~}‘~}}}‘‘€}}¡€}~}€}~‘‘‘€‘‘‘‘‘‘}}‘¡‘‘¡‘€‘¤‘€}‘¡‘¡‘‘‘€‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘Úþÿÿÿÿÿ楡‘‘‘‘¡¡‘¡‘€‘¥¡‘‘‘‘¥¡‘‘‘‘‘‘¤¡¡¡‘¡‘¡¡‘‘€‘¡‘‘‘¤‘¡‘¥¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘¢¥‘‘¤¢‘‘‘‘‘¤‘‘‘‘‘¤‘‘‘¡‘¤¡¡‘‘€‘‘‘‘‘‘‘‘¥¡‘‘‘‘€€‘‘‘‘‘‘‘‘¡‘‘€‘¥€‘¡‘‘Úÿÿÿ¬‘‘‘€‘€‘¤€}‘‘‘‘€‘~€‘‘€€€‘‘‘‘€€€}€€€‘€‘‘‘€€}}€€}}}}‘€€€}€}}}}€}}w}}}}}}}}}}}}}}}wwwwww}vw}v}}v}ÌýýÓ}}vv˜àõýÿÿÿþúýÿÿè™v}wvv}v}w˜õý×vvvvvvvvuvvwvvvvvuovvvvvuvuuvvuvvuuvvuoooououvlloouuuououuuluooluouvoluooltlltluulllluulltlllltlClulCCulullllCCCZltCCCCCCZltClCCCtCCCCçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=!!!!Yóÿÿÿÿÿ÷_!!#!! !! !!!#!# ! !  !! !  !  pªõþÿþþþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!!ÓÓÿþþþÿþþþþþþÿþþþþÿþþþþþþþüÿþþúÕŸ}}}}}}}}}}}}}}}}}}}}}}€}}~‘}}}}}}}}}€‘‘‘}}}~‘€}}}‘}€‘‘€‘€€‘€€‘‘‘}}}€‘€‘‘‘‘‘‘‘‘¤‘‘‘€‘‘‘€‘¡¤‘‘‘‘‘‘‘¡‘€¡¤‘‘¡‘‘‘‘‘Úþÿÿÿÿÿत‘‘‘‘‘‘‘‘‘€¡¤‘‘‘€€¡‘€‘‘¤‘‘¡¡¤‘‘‘‘‘‘‘¡¤¡¥‘‘€‘‘‘‘‘‘‘‘‘¡¡¤‘‘¥‘‘€€‘¡‘€‘¡‘‘¡¤¡‘‘‘¡¥¡‘‘€‘‘‘‘‘‘¤‘¡‘‘‘‘™‘‘‘¡¤‘¡¥¡€‘‘‘‘‘‘‘‘€‘‘€€¥‘€¡¥‘‘¡÷ÿÿõ‘‘‘‘‘€‘‘}¡™‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€€€€€}€€€}‘}}}€€}‘‘}}}‘}}}}}€‘}}}}}}}‘‘}}‘}w}w}w}}}}}}}}}}}}}}wvúÿ×wvv{×úþÿÿÿÿÿÿÿÿÿÿÿõžvvvv}}}wwÇú÷žvyvvw}wvwvvvvvvvvouvvvvuoovvvolovwvvuvvvvvououuvvovvooluvvvooutlluouuouutlluuuouulluClutllttlulttClltCCCCCCCZltlCClZCCulClCCCCCCCCCC@ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ;!!9!Cóÿÿÿÿÿ÷_!!!!#!#! ! !! ! !!!! !!   ! !   !q«õþÿþÿþÿþÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ!!!!Ó×ÿüÿþÿþþÿþÿþÿþþÿþÿþþþþþþþþÿüÿúÖ}}}}}‘}}}}}}}}}}v}v}}~}}}}|}~€}}}}}‘‘‘~}}‘‘}‘}}‘‘‘‘€€€€‘}€‘‘€‘‘‘‘‘‘}€‘‘€‘‘¤‘€€€‘€€‘‘‘‘‘‘¡‘‘‘‘‘‘¤‘€‘€‘¡‘‘¤‘‘‘‘Úþÿÿÿÿÿ楡¡‘€‘‘‘‘‘‘‘‘‘¡‘€€‘‘‘‘¡¤¡‘‘¡¡‘‘‘‘¤‘‘¡¥¡‘‘‘€‘‘‘‘€‘¤¡¡‘‘‘¡‘‘¡‘‘‘‘‘‘‘‘‘‘‘¤¤¡‘‘‘‘¤¡‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘¡‘‘‘‘‘¡‘¡‘‘‘€‘‘‘™‘‘™‘‘‘‘¡¡€¡¡‘€‘ÚÿÿÿÓ‘‘‘‘‘€‘€€‘‘€‘‘‘‘‘€‘‘‘‘‘‘€‘€‘‘}}‘‘€‘}}}€‘€}}€‘}}€}}€‘}}}}€}}}}}}}}}‘}}}}~ww}w}}}€}w}}}}w}}w}}}w}}Êÿ÷vwv™òþÿþõßÓÓž×àñûÿÿÿõžvvw}wvvÙýàw}v{}vvvvvvuvvvuuovvvvvovuuuouuvvvovvvvvvoooovvtlvvoluuvvuuuoluuvulluullluuulluulltltullllltlllllttlCCCuCCCCCllCCCCCltCCCCCZCCCCBA@u÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!;Zóÿÿÿÿÿ÷_!! !!9!!! ! !! ! !      !q¬õÿþÿþÿþþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!!!ÓÓþþþþþþþþþþþþþþþÿÿÿþþþþþþüÿþþúÖŽ}}}}}}}}}}}€€‘‘}}}}}}}€}}€‘}}€‘‘‘‘‘}}}}‘€}}‘‘‘}}‘‘€‘‘‘‘‘}}‘‘‘‘‘‘‘}}}€}}‘‘‘‘€}‘‘€}€€€‘‘‘‘‘€€‘‘€‘‘‘€‘¡‘‘€‘‘‘‘‘‘‘Úþÿÿÿÿÿड‘‘‘‘‘¡™¡‘‘‘€‘¡‘‘¡¡‘‘‘‘€‘‘‘‘€¡¥¥¤‘‘¡‘‘‘¡¡‘¡¥¤‘‘‘‘¤¥‘‘‘‘‘‘‘¡¡‘‘‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘¤¥¤‘‘¤‘‘‘‘‘¤¡‘‘¡¥¥‘€‘‘‘‘‘‘‘€€~‘¡¢¡‘€€‘‘¡€‘‘‘‘÷ÿÿ÷‘€‘‘‘€€‘‘‘‘‘‘‘€‘‘€‘‘‘‘}€‘€}€‘‘‘‘‘€}}‘‘‘}}}‘‘}€}}}‘‘}}}}}€€}}}}}}}}w}‘}}v}}}vv}}}}}w}vvw}w}}õþÓ}}žúÿýàž}{}}{™Óèÿÿ÷Çwvvvvvvvœ÷÷ž}vvvvvvvvvuvvvvvvvvvuvvuvvvvvvooulvvuuvvuovuovvuuvvuuvultlluuuuuvlluvotullouClluCCllllluutltCCuuulltuCltttltluCCZluCCluCZCCllZtCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9#!!!@óÿÿÿÿÿ÷x;!! !!!!!!!!!!! ! !! ! !!  ! !! ! q¥íÿþÿþÿþÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!7$!777Ó×ÿþÿþÿþÿþþÿþÿþÿþÿÿþþþþþþþþþþþúÖ}Ž}}}}}€€}}}‘}~}}}}}}}~}}}}€}}}€‘‘€}}}}}‘€}€}}~€€€‘‘‘‘‘€€}‘‘‘‘¤¡}‘}}~‘‘‘¡€€‘€}‘€‘‘‘€‘‘€€‘‘‘‘}‘‘‘¡‘‘‘€€‘‘‘‘€Úþÿÿÿÿÿ椑‘‘‘‘‘‘‘€‘¡‘‘‘‘‘‘¡‘‘¤¡‘€‘‘¡‘}¡¦¡¡¡€‘¡‘‘¤¥‘¡¤‘¡‘€‘‘¡‘‘‘‘‘™¡‘‘™‘‘‘‘‘‘¤‘‘‘‘‘¤‘‘‘¡‘¤¡¡‘‘‘‘‘‘€‘‘‘‘‘‘‘¤¡‘€‘‘‘‘‘‘‘€‘¥¡‘€‘‘‘‘‘‘€‘‘€‘€ÓÿÿÿÓ€‘‘¤‘€‘‘}}‘‘‘‘‘‘€‘‘‘‘€}‘‘‘€€‘‘}€~€‘€}}}€}€€}}‘}€‘}}}}}~}}}}}}w}}}}‘‘ww}v}ww}v}‘}v}v}}}}}}}žÿôžüÿõž}wvv}vwvvw}˜Ó÷ÿõœvvvwvvwàþßvvvvvouvupvvvuvvvuuvovuvvvvvvuuovvuvvvuuovuuuovvuluvvluvluuvuoooltouoolotullCuulltllCuutlltllutolCtlCCullCCtllCllCtCCCtlCCuCulCCC–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!=!!Bóÿÿÿÿÿúx!!!!!!! #!!!!#! ! ! !     !=q¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!7!ÓÓþþþþþþÿþþþþþÿþþþÿþþþþþþþþþÿþúÕ}}}}}wv}}}v}}}}}}}‘‘‘}€‘}}}‘}}€}}}~€}}}}€‘‘€}}‘}}}}}}}~}€}}}}¡‘}}‘¡‘‘‘‘‘‘}}‘‘€‘‘‘¡¡‘€‘‘‘‘‘‘‘€‘‘¡¡‘‘‘‘‘¡‘‘¡¡¤¡¡‘Úþÿÿÿÿÿॡ¤¡‘¤¡‘‘‘‘‘‘‘‘¡‘‘‘‘¡‘€€¡¤¥¢€€‘¡‘€€€‘‘‘€‘¢¤‘‘‘‘‘¡¡¤¡‘‘‘¡¡¡‘‘€‘¡¡¡¤¡‘‘‘‘¡¤¡¡‘€‘¥‘‘‘‘€‘‘¡¥‘‘‘‘‘‘‘‘€‘‘‘¤‘‘‘‘‘¡‘‘‘¡¡‘‘‘‘‘‘‘‘‘€€‘‘‘‘ûÿÿ÷€‘‘‘‘€‘‘‘€‘€‘€€}}}‘‘‘‘‘}€‘€€‘}}}}}‘€}€}}}}‘‘}}}}}}}}}}}‘}w}}}}}}€}}w}}w}}}w}v}}èÿÓ}wõÿ÷™wwvw}wwv}vvvvvžõÿèww}wvvwžúñ˜vvvvwvvvvvvvvvvvwvvvuoovuvuvvvvvvuouvulvuvoluluvtluulooullloouuuuvtlluvuuuullutlututCllltluCCClCtlluCoutltCCCCCCCltCCCCCBCCCCCCCuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!;!!@óÿÿÿÿÿ÷_! !! !!#!! !!! ! !! ! ! !  !    $}ªíÿþÿþÿþÿþÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!7!!Ó×ÿþÿþÿþþþþÿþÿþþþÿÿþþþþþþþþþþþúÖ}}}}}}}}w}w}‘}}}}}}}‘}}‘€}}}}}}}}}}}}‘‘}‘‘}€}}‘~}}}}}}‘‘}}~}‘‘‘€‘¡‘‘‘‘‘‘€€€‘‘‘‘‘€‘‘‘‘¤¡‘‘‘‘‘¤‘‘€€‘‘¤‘‘¤¡‘¡¤¡Úþÿÿÿÿÿ椡¡‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¤¡‘‘‘‘¡¥¡‘‘€‘¡‘~‘¡‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘¤‘‘€‘‘‘‘¡‘‘€‘‘‘‘‘€‘‘€‘¡¤¡€‘‘‘‘¤‘€‘‘€€¡¡‘‘‘‘™¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘€~‘ÓÿÿÿÓ}~€€‘}‘‘‘‘‘€‘}€}€‘‘€}€€}}}‘€‘‘‘‘}}€€€}}}}}€}‘}}}}}}}}‘€}}}}}€}w}w}}}}}‘}v}}}w}}}}wvw}úý˜}Çÿý§}wvvv}vv}}vvvvvw{Êýü×wvvwvvèýÊvvvvvwvvvvvvvvvvwvvvouovvvuvuvvvvuvvouvvvvuluovuoooluuuuoCtuuvulvuoluuvooullZlllllulCuulllllCCCtutltlullCCCCCCZCCCtCCCCCCCCuCCCZÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ=9!!!Yóÿÿÿÿÿ÷_! !! ! !! !! ! ! !!   !!   qªõÿþÿþÿþþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!75Ó×þþþþþþÿþþþÿþÿþþÿÿþþþþþþþþþÿþúÕ}}v}€€}}}}}}}}}}}}}}}}}}}}‘€}‘‘}}}‘}‘‘}}}}‘‘€}€}‘}}‘‘‘‘‘¡‘}‘‘€}‘‘‘‘‘‘€‘‘‘‘‘€€€‘€‘‘‘‘€‘‘‘€‘‘‘‘‘¡‘€€‘‘‘€‘‘Úþÿÿÿÿÿꙑ€‘¤‘‘‘‘‘¡‘‘‘™‘‘‘¤‘€‘‘‘¡‘€‘‘‘¤¡‘‘¡¥‘‘¡¤¡‘‘‘‘‘‘‘¥‘‘‘‘‘¡¥‘‘‘‘‘‘¡‘‘‘‘¤¡¥¤‘€‘‘‘‘‘¡‘¤‘‘‘‘‘‘‘¡‘‘‘¤‘‘‘‘‘‘‘€‘¢™‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡¡‘úÿÿû¤‘‘€€}€‘‘€}‘€‘‘‘‘‘‘‘‘€}‘‘‘‘€}‘€}‘}€‘}‘‘‘‘‘€}}}}}}}~€}‘€}}}}€}}}}}}v}}}}}}}}}}}‘}v}}v}v}}wv}}}vÿüv}˜õÿõv}}v}}wvv}}}}v}}vÙÿñ˜vuvvvvvßÿ×vvvuvvvwvvvvvuvvvvvvuvuvvvvuouuuuouvlovvuullvuuvluvluvvvvlououllluvllltClouuuuulultCCltlttlZutllulCCCCCZlutuCCCCCClttCCCCCZCCCCƒúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;!!!!Bóÿÿÿÿÿ÷_!!!;!!!!! ! ! !!! !!! ! ! ! !! p¥íÿþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!7ÓÓÿþÿþÿþÿþþÿþþþÿþÿÿþþþþþþþþþþþúÕŽs}v}‘}}}}}€}}}}€}}}}}}}}}‘}}‘€‘}}€‘}}}}}€}€€€‘}}‘‘‘‘‘‘‘}}‘}}‘‘}€‘‘‘‘‘‘‘‘€‘‘‘‘€€€‘€}}‘‘€€‘¡¡‘€€‘‘‘‘‘Úýÿÿÿÿÿæ‘‘}‘¡¡‘€‘‘‘‘‘€‘¡‘‘‘¡‘‘‘¤¡‘‘€‘‘‘¡¡¡¤‘¤¡‘‘¡¡‘‘‘‘‘‘¡¡‘€‘‘¥¡‘‘‘‘‘‘‘¤‘€‘¡¥¡¡‘€‘¤‘‘‘‘‘¤¡‘‘‘‘‘‘‘¡¡¤¡‘€€€‘‘‘€‘¥‘‘‘‘‘‘¡€€‘€€‘‘‘‘‘‘‘‘¡‘‘‘×ÿÿÿÚ‘‘}€€}€‘‘‘‘}‘¡‘‘‘‘}}‘‘€}‘‘}}~€}}‘}‘}‘‘}‘‘}€}}w}}}‘‘€}}}}}}}}}}}}}}}}}}}}}w}}}wvv}}ww}}wv˜ÿôv}˜ÿýÇww}}vv}vv}v}}}wvvv˜ñýÓvvvv}vv×ýßvvvvvvvvvvvvvvvuovvvvlvvvvvuooovuuvluwvoluuvvouoovuouvvvououvlCluvltllultuoooulCtllCullltolluultllCCClCCltlCCCCCCZlCCCCZCCCCZtèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!;Zóÿÿÿÿÿ÷_!!#!!!#!#! ! ! !! !! !    !! qªõÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!$Ó×þþþþþþþþþÿþÿþþþþÿþþþþþþþþüÿþúÖ}}}}}}}}}€‘}}}}}}}‘}}}}}}}}€}}}}€€‘}}}}‘‘‘}€‘‘}}‘}‘‘}‘‘‘}‘€}‘‘‘}€‘‘‘€}}‘‘‘}}‘‘‘‘€‘€‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€Úþÿÿÿÿÿꙑ‘‘‘‘‘‘‘¤¡‘‘‘‘‘‘‘‘¥‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘}¡¥¡¥¤‘‘¡¥‘‘‘‘‘¥‘¤¤¡‘€‘‘‘€‘‘‘‘‘‘‘¤‘‘‘¡¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘¡™‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘€‘ûÿÿý‘‘‘‘¡‘}‘‘‘¥€‘‘‘‘‘€}‘‘}‘‘}‘‘}}}}‘‘}‘‘‘‘‘}}~‘}}}}}}w}}}}}}}}}€ww}}vv}w}ww}w}}}}}}}}vw}w}žÿà}Óÿ÷wwvv}}}vvvvvvv}vvwvwÓÿà{vw}vvwÇúñ˜vvwvuvvvvuuuvvvvvvuvvuuuuuvuvvuvvvullvvllvovvuvulluullulluvluutultluutuuululoullouuuoullltCCCCCCCtCCCttCClCuCCZCClCCCtCouCCCCÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@! !!Bóÿÿÿÿÿ÷_!!!! !! ! !#!!# !!! ! !  =q¥íþÿþÿþÿþÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!77Ô×ÿþÿþÿþÿþÿþþþþÿþÿÿþþþþþþþþþÿüú¬}}}}}}‘‘‘}}}v}}}}}}€}}}}}}‘€}}}}‘}}}‘‘}}}€}‘‘€}}€}‘‘‘‘}}}€}€¡‘‘€‘‘}}‘‘€}}€€€‘‘‘‘}€‘‘€‘‘‘‘‘‘‘‘¤¡‘‘€‘¡‘‘‘‘‘Ùþÿÿÿÿÿæ‘‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘¡¡‘‘‘‘‘‘‘‘€‘€‘‘‘‘€‘¡¡¢¡‘‘¤¡‘‘‘‘¤¡¡‘‘‘‘‘‘€‘‘‘‘‘¡‘‘‘‘‘‘¤¡‘‘‘‘‘‘‘‘‘‘€€€‘€‘¡¡‘€‘‘¡¡‘‘‘€‘‘‘‘¡‘‘¤‘‘‘}€‘‘‘‘‘‘‘àÿÿÿÚ‘‘¤‘€}‘‘}}‘¡‘€€€‘}}‘‘}€}}‘‘}}}}‘‘€‘‘‘}}}€~}}}}}}}}}}}}}}€}}}}}wvvww}w}}w‘vww}}w}}}}vÓÿ×}èÿ×}}vvwvvvvvvvvvwvvw}wž÷÷œvwvvv}ž÷÷œv}vvuuvvuouvvvuuwvvvvuoovvvuvuuuvuuouuuuuvuuvvuuouuulltlluvuoouvlluvuvuuluotlultuvlltllZlCCCCtCCZCCCCCtlCCCCCCultCCCZtltlCCZx÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!9Yóÿÿÿÿÿ÷_! !!! !#!;! !#! ! !!  !  =pªõÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5!77ÓÓþþþþþþþþÿþÿþþÿþþÿþþþþþþþþþüÿúÕ¢}}}}}w}}}}}}}}‘€}}}}€}}}}}}}}}}}}}€}}‘}€€‘}}€‘}}‘‘‘}‘}‘‘}€‘‘‘€}}¥¡}}‘‘‘‘‘}€‘‘€‘‘€‘}‘‘‘‘‘‘‘‘€€€€‘‘€‘‘‘‘‘‘‘‘€€ÚþÿÿÿÿÿꙀ‘¤‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘€€‘¢™‘‘‘‘‘‘‘‘¡¥‘‘‘‘‘‘‘¡¤‘‘‘‘¡‘‘¤¤‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘¤‘‘‘‘‘‘™‘‘‘€‘™‘‘‘‘‘‘‘‘‘‘‘‘‘€€€‘‘€‘‘‘‘‘‘‘¤‘€€‘‘‘‘‘‘‘€‘¥ûÿÿþ™‘‘€‘‘‘€}‘€‘‘€€‘‘‘‘‘‘‘‘‘‘‘}}‘‘‘‘‘}€}}}}}}}}‘}}}}}}}}}}}}}w}}}}}}}}}}}}}}}v}ww}}}w}}ww}vw×ÿ×vúýž}}}wvvw}}v}wvwvvvwvèý×vvvvvv˜õúÇ}vuvvvw}|vvvvvuuvvuvvvvvuuuvvwvuvvvuvuoolvvuullouoououvuluvuluotlllltllllllllCClttCltllutluClulllltCtlCCutttttllZClCClCCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!=Zóÿÿÿÿÿ÷_!;!#! ! !!!!! !! ! !  !  qªíÿþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×7Ó×ÿþÿþÿþÿþÿþþþÿþþÿÿþþþþþþþþþÿüúÖ¢Ž}}}}}}}w}v}}‘}}}}}}}}}€}}}}‘}}}}w}}}}}}}‘‘‘€}€‘‘‘‘€}‘}€‘‘‘}€}}‘¡¡€}‘€‘‘€‘‘‘‘‘‘€}}‘‘€€€‘‘‘€‘‘€}‘€€‘‘‘‘‘‘‘‘‘€Úýÿÿÿÿÿæ‘€€‘¡‘™¡‘€€¤‘€‘¤¡‘¥€€€‘‘‘‘‘‘™‘‘‘¥‘‘¡¥‘€€‘‘‘¥‘‘‘€‘¡‘‘¡¤‘€€‘‘‘‘‘‘‘‘‘‘‘¥¡‘¡‘‘‘‘€€‘¡‘‘€‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘€€€€‘‘‘¤‘‘‘‘‘‘‘}}‘‘‘€‘‘‘}‘‘Ôÿÿÿæ}‘€‘}€‘‘‘‘‘‘‘‘¤‘‘‘‘‘€‘‘‘€}}€‘€‘‘‘€}}}}}w}}}€}}}}}}€€}}}}}}}}vv}}v}}w}}}}v}vv}}v}w}wvvvwßÿÙv˜ÿýžvw}vvv}˜Êž}vvvw}vvv{ßÿßvvvvvv˜õúžvvvvvuvvvw}vvuvvvuvvuuvvvvuvvvvvvuuvvvluluuolluvvuulluvtotouuoulltltllluCltlulCCllCCluuvuulCZlCCtlCCtlCtllluultlCltCCtlCCCC›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!! ;!Yóÿÿÿÿÿúx!!;!! ! !!!! ! ! !!    !s¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ$5!Ó×þþþþÿþþþÿþÿþþÿþþÿþþþþþþþþþüÿúÕŽ}w}}}ww}}}}}}}}}}}}}}}}}‘}}}}}}}}}‘‘‘€}}}}}}}}}}€‘€€}€‘}‘€‘}€€}‘€‘‘€‘‘€€}‘‘‘¡‘}€€‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘Úþÿÿÿÿÿæ‘‘‘‘‘~€‘‘€‘¤‘€€¥‘‘‘€‘‘‘‘‘‘‘‘‘‘‘¡¡€‘¡‘‘‘‘‘€‘€‘¥‘‘‘¥¡€‘‘‘‘‘‘‘¤‘‘‘‘‘¡¤‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€‘÷ÿÿÿ¥‘‘‘‘‘‘}‘€‘‘‘€‘€}}}‘‘}}}€}}}}‘}}€‘}}}}}}}‘‘}}}}}}}}}}}}}}}ww}v}‘}v}}}w}}v}}Úÿà}™ÿý™vvv}}v}žúÿýàvwvvv}vvvÇýèwvvvvvžõýÇvvvvvvvvvuvvuuuvuvvvvvvuvuvvuovuoovvuuvuuvvuvuvtvloulvwouullotluooulltltlluluttluuullCCllllllulCCltlCtltCCCllCCCtCCCClZCCCxòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷_ !!#!!!!! !! !!  !=q¥íÿþÿþÿþÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ7Ó×ÿþÿþþþþÿþþþþÿþþÿÿþþþþþþþþþÿüúÕsv}}}w}}}}}}}}vv}}}}}}}}}}}€}}}}‘‘€‘€‘}}}}}}}}}}}}}}}‘‘‘‘€}}‘€€‘}}}‘}‘‘‘€‘‘€‘‘‘‘¡€}}‘‘¤¡‘€€‘‘€}‘€‘‘€€‘‘‘€€€‘Úþÿÿÿÿÿæ‘‘¤¡‘}‘‘‘¡‘‘‘¡‘€€‘‘€‘‘‘¡¡‘‘‘‘€‘‘¤‘¤¥¤€€‘‘‘‘€¥¦¥‘‘‘¡‘‘‘‘‘‘‘‘‘‘¥¥‘€‘€€‘‘‘¤¡‘‘€€‘¥¡‘‘‘‘€‘¤¥‘‘‘¤¥¤¤¤¡‘‘‘€‘™‘‘‘}‘‘‘‘¤‘‘‘€€}}}§ÿÿÿõ€‘€€‘‘‘‘€‘€}}‘‘‘}‘€€}}}}}}‘‘€€€}€}‘‘‘€‘}}}}}}€}}}}‘}}}w‘}}}}}}}‘}wv}}w}wv}}w}}wvv}}Óÿè™ÿý˜vv}}wvÙÿÿÿ÷œvwvvw}vvžýèvvuvwžõúžvvwvvvwwvuuvovvvvuw}vvtvvuououvvluvuuvlovuluuvvuuluouvvuvvllllluuulullCttlulllouuuoCCCCCCtltttlCCtlCCtllCCCZlCCCCtCCCCCCZCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ!!#!!Yóÿÿÿÿÿ÷_ !!!!;;! ! ! !;!   !   !  !=q¥õÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77!!!75ÓÓþþþÿþÿþþÿþÿþþÿþÿÿþþþþþþþþþþþúÕŽwv}}}}}v}}}}}}}}}}}}}}€}}}}‘}}}}}}}~}}}‘‘‘€€}}}}}}‘‘}€}}}‘€‘}}‘‘€€‘‘}}‘€‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘€‘‘‘‘‘‘‘Úþÿÿÿÿÿæ‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘¥‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘€€~‘¡‘€‘‘‘¡¡}‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘€‘‘¡¡‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘™‘¡‘‘‘‘‘‘‘‘‘‘‘õÿÿÿ§‘‘‘‘‘‘}€}€‘‘‘}‘‘}}‘}}}‘‘}}}}}‘}}}€}}}}}}}}€}}}ww}}}}}}}}}w}}w}}vw}}w}vw}}v}}ww}žÿòvþý™wv}vvÙÿÿÿú˜wvvvvvvwvžýñvwvvvžúúžvvvvvvvvuvvvvuvvvuvvuouuouvvvouovvvllvvvuuuoouvouuluooultluuuullvulluulllltutluollltuuuultCCllttltttlZCCZCltlZCCCCZtZCCll”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=;!!!Bóÿÿÿÿÿ÷_!!! ! !! !!!! !   qªíþþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777!$7!$!Ó×ÿþÿþþþþÿþþÿþÿþþÿÿþþþþþþþþþþþúÖŽvv}€}}wv}}€‘}€‘}}}}‘‘}}‘‘}}}}}‘}}}‘}}‘‘‘‘‘‘‘€}}}}}~}}‘‘‘}}}}‘¡‘‘€}€‘€‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘¡‘‘‘Ùýÿÿÿÿÿà‘€€€‘‘¥¡¥¡‘‘™‘¡¡¤¥¡‘‘‘€‘¤¡‘€¤‘‘¤‘€}}}€‘}€€‘¡‘‘€€‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘¡¥‘‘€‘‘€€€‘‘‘‘‘¤¤‘‘‘‘‘‘‘¡¤¤¡‘€‘‘}‘‘¤‘‘}‘‘‘‘™‘‘‘‘‘‘‘‘‘‘‘‘žÿÿÿõ}}}~}}}}‘‘}}}‘‘‘‘‘€€~‘‘}‘}}}}}}}}}‘}}w}‘}}}‘‘}}v}‘‘}ww}}}}}}vv}v}w}vvwvwv}}‘}}v}}}}}}w}˜ÿû}òþÓ}vv}w}ž÷ÿýÙvvvvvvvvvwÓýßvwvvvÇýò˜vuvvuvvuvvvvvwvvvuvulooouovvuuluvvvlluvuuolvuvvulvuuuuuoltluvuullltltllCCCouvuulCCCtluuuullttluullllllllCltullCCCtllCC@CuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@!!;!Yòÿÿÿÿÿ÷_!! ! !  !! ! pªõÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!57Ó×þþÿþÿþþÿþþþþÿþþÿÿþþþþþþþþþþþúÕ}}w}}}}}}}}}}}}}}}}}}}}}}}}}‘}}}}}}}‘‘‘}}‘‘}}}}~€~}€€‘}}€‘‘}‘‘€€€‘€}€}‘‘‘‘‘‘€‘€€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘Úþÿÿÿÿÿ晑‘‘‘‘‘€€‘‘‘‘¡‘€‘€¥‘‘‘‘‘‘‘‘¡‘‘¡¡‘¡‘‘‘‘‘‘‘¤‘‘‘‘‘¤‘€‘‘‘¤‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘}‘€‘‘‘‘‘‘‘‘‘}‘‘íÿÿÿÓ‘‘€‘‘‘‘€}‘¡€}‘‘€‘}}‘‘€}‘‘‘‘}}€}}}}}}‘}}}}}}}}}}}}v}}}}‘w}}}}}w}}}www}v}}w}vv}}vvòÿž}Ùÿñw}wvwvvv˜wvw}}vyvvv×ýÙvvwwvvÙÿávvvvvvuovvvvwvvuuovvvvvvvouvvvvluuvlovuvluuvuuulluoooluuollluuuuClouluuuuutlllltutuutlllltCllCltCCCltuCCllZCCCCCCtlCCCCCÊýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ=9!!!Yóÿÿÿÿÿ÷_!#!! !!! ! !! !  ! =qªíÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ7!!!!77Ó×ÿÿþþÿþþÿþþÿþÿþÿÿþþþþþþþþþþþÿú¬Ž}}}}}vv}}}vvvvvvv}}}€}}}}}}v}}}}}}}}}‘‘‘}€}w}}}}}}}}}}}‘‘€€‘‘}€€‘}‘‘‘¡‘€}€‘~‘‘‘¥¡‘‘‘‘€€‘‘‘‘‘‘‘™‘‘‘€‘‘‘™¡‘‘¡àþÿÿÿÿÿꥑ€‘‘‘€€}}‘‘‘€}}‘‘¡‘‘€€‘‘‘¤¤€€‘‘¡‘‘¡‘¡‘¡¤‘‘‘€€€‘€‘‘‘‘¤¥‘‘‘¤¡¤¡‘‘¤‘‘‘™¡¡‘‘€‘¥¤‘‘€‘‘¤¡¤¡‘‘™‘€‘‘€‘‘‘‘‘‘‘‘€‘‘‘‘}}‘}‘‘‘‘‘‘‘‘¡‘™ÿÿÿû‘}€‘¡‘‘‘‘‘}}}}}‘‘‘¡‘€‘‘}€}}}}}}}}}€}}}}}}}}}}€}w}}}}}w}‘§èÙw}€}wvvv}vvvvww}€}v{àÿÙv›ÿúwww}wvvvw}}vvv}}vvßüÓvvw}v{èÿÙwwvvvvvvuvvwvwvulvvuvwwvuuoluuvulouuuuoluluvvluolClllllulllCluullluuuvuuulollCtltlouvoCCtCCtlZCCClZttulCCttCCCCCZCCC@CCZ{óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!Bóÿÿÿÿÿ÷_!#!!!#!! !!    $p¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7$!7$7!$777ÓÓüÿþþÿþþþÿþþÿþÿüÿÿþþþþþþþþþýþúÖ}}}}}}}}}}}}}}}}}}}}‘}}}}}}}}}}}}}}‘‘}}}}}}}}€‘}‘‘€}€}}€€€€‘€‘‘}}€‘€}‘‘‘€€€‘€€€‘‘€€€€¡‘€‘‘‘‘~‘‘‘~Úþÿÿÿÿÿæ‘‘‘‘‘€‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¤‘‘‘}‘¢‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘~‘‘‘‘‘‘‘¡‘‘¤‘‘‘‘‘‘‘‘‘¡‘€€‘¤‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘€€‘‘}èÿÿÿÚ‘‘‘‘‘‘}}‘‘}}‘‘€}‘€}‘‘}}‘€}}}‘‘}}}}}}‘}}}}}}}}}w}}}}žõþÿý™}}}}}w}}}}}w}w}}}}vwvw}žÿ÷}èÿ×}vvw}vvwwwwvvw}wvvvvž÷õ˜uv}vvžõýÇvvvvvvuvvwvvvvvvuuvvovvvluuvvvvvoovovvulvuvvluluuuutuvuvuluuuvllutltluluultttlltlllotttlltCCCltttllllCCCCCCtCCZlltCCCCltáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;!#! Bóÿÿÿÿÿ÷_!!!!!!!! !!     $qªõþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7!57!7ÓÙÿþÿþÿþþÿþþÿþÿþÿÿÿþþþþþþþþþþþúÖ Ž}‘}}€‘‘‘}}}}}}}}}}}}}€‘}v}}}}}v}‘€€}}}}}}}‘‘‘}}‘‘‘‘‘‘‘‘‘‘}}}}‘‘€€€}€}}}€€}€‘‘‘}}€‘‘}‘‘€‘‘}~‘‘€‘‘€‘‘}‘‘×þÿÿÿÿÿæ‘‘‘¤‘‘‘¥¡€‘‘¥‘€€‘‘‘¡‘‘‘‘‘€‘¢‘€‘‘‘€‘‘€‘‘‘‘‘¢‘‘‘¤‘‘‘‘‘€‘¤¡‘‘‘™¡¤¤¤‘}‘‘™‘€‘‘‘‘¡‘‘‘€€‘€€‘‘€}‘‘¥¢¡‘‘‘‘€€‘‘‘‘‘‘}}‘‘‘‘‘¤‘‘‘‘‘‘‘}‘ÿÿÿý™‘‘‘‘‘}€‘}}‘}}}‘‘‘}}}}€}}}}}}}‘‘‘‘‘}}‘‘€}}}w}}}w}‘}}}}}}wÓ÷ÿÿÿÿÿ™}‘wvw}}}v}‘‘}vw}w÷þžÓÿú˜w}}vvv}vvvvvvvvvvuv×ÿßvvvuvvÙÿèuwwwwvvuouvuvuuvuvuoltuvvvovuvuulollvvuovuuuuuulvvllvvvuluvvuutuvvullClluoluullltuCCCCCCCCCCltuulCCCCCCCZCCCttllutCtuuuÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9!!!Yòÿÿÿÿÿ÷_! !   !     !  !qªõÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ!!7!7ÓÓþÿþþþÿþþÿþþÿþÿþþÿþþþþþþþþþþþúÕ}}}vv}}}}w}w}€}}}}}}}}}}}}}}}}}}}}}}}‘‘}}}}€‘}€}€€€€}€€€‘‘}}€‘‘€‘€‘‘€€€}€€€‘€‘¤‘‘‘‘}‘‘‘‘‘‘‘‘‘‘€‘‘Úýÿÿÿÿÿꙑ‘‘‘‘¡‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€‘¥‘}‘¥‘‘¥‘€‘‘‘‘¤¡€€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘€€‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘}‘‘€æÿÿÿæ‘€€‘‘}€‘€}€€}}€}}€€}}}}‘}}}}‘}}}}}}}}}}}}}}}™àüÿÿÿÿÿÿÿž}}}}wv}}w}}wv}}w}vw}}v}Óÿñvèÿñwvwvvvvw}vwvvv}vvž÷õ˜v}vvv˜òþÌuu}wvvuvvvvvvvulvvvvvvvvuvuouvvuvuuvvuvllvvouotulvvuluvuluutuuloltlluultotlluultCltutluutltttClllCtltlZCClCtltCCCtCCCllxòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ9!!!!Yóÿÿÿÿÿ÷_!!! !!!! !!!!qªíÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ$7557Ó×ÿýÿþÿþþÿþÿþÿþÿþÿÿþþþþþþþþþþþú¬s}}}v}}v}}}}}}€‘€}}}}}}}v}}}}}‘‘‘}}}}}€‘‘‘€}}€}}€}}}}}}}}€‘¡‘‘‘}‘¡‘€€}‘‘‘}}‘‘‘‘}‘‘}‘‘}‘¡‘}‘‘€‘¡‘‘€‘‘}€€‘¥Úþÿÿÿÿÿæ‘‘‘‘‘€‘€‘‘‘‘‘™¡‘‘‘‘‘¡‘‘‘¤‘‘¤¥‘‘€‘‘‘€‘‘‘‘‘‘‘‘€¡¡‘‘‘€‘‘‘€€‘€€}}}‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€}‘¡‘™‘}}}€‘€‘‘‘¤‘‘‘‘‘‘‘‘‘€}‘‘‘¥ÿÿÿþ™}}}}‘¡‘}€‘‘‘}}€‘‘‘}}}}€}}‘‘}}ww}}}}}}}}}}‘‘}}}}}}€‘™èýÿÿÿÿÿýÿÿÿÊwvw}‘v}€}}}vv}wvvvvv}vvwúýžv˜ûþà}wwvvv}}vw}vu˜ñý×vvwwvv×þñuvvvuuvvwwwvvvuouvvvuvvvuvvuoovvvuvvuulluv{vltluvuvultulluuuuluuulCCuvuvuCCCtlClCCClltuvultllCCCCttuullltCZlulCCCtCCCCCÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!#9Zóÿÿÿÿÿú_! !!  !      ! =s¥õÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77!7!7ÓÓþþÿþþÿþÿþÿþÿþþÿþÿþþþþþþþþþþþúÕ}}}}}}v}}}}}}}}}}}}}}}}}}}}}}}}w}€}€‘}}€€}}}}}‘}‘‘€‘}€€}‘‘€€‘‘}€€‘‘‘}‘‘}€‘‘}€‘‘‘€‘‘‘‘‘‘‘‘‘‘Úýÿÿÿÿÿꙑ€‘‘‘¡‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘}€‘‘‘‘‘€‘‘‘‘‘‘‘‘‘€‘‘€‘‘¤‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘€€‘‘‘‘‘‘‘}‘‘‘‘€€‘‘‘€‘‘}Ùÿÿÿë}€€‘‘€}}€‘‘€}}}}}‘}}€}}}‘}}€}}}}‘}}}}}}}wšèþÿÿÿÿÿúÓ‘÷ÿÿ×}}w}}w}}}w}}vw}w}}w}w}wwžÿõwžÿýß}wvvw}vvvvvvvv˜èÿè{vvvvv÷þÊvvvvvuvvvvvvvuovvvuuvvuuvvuvvuuuvuvuvvluuuvvuuoulvuluuuvtlulululluulluuotllutuulttltulCotltluCCZCllllZCCtlCCltlZCCtCZCC”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷_ ! ! !! =}¥íÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ557=777!7××ÿÿþþþÿþþþÿþþÿþÿþÿþþþþþþþþþþþúÖ¢Ž}}}vv}}}}}}}€‘€}}}v}‘€}}}}}}}}‘€}}w}}}w}€}}€‘‘}€‘}€}}w}‘‘€€‘‘‘‘‘‘‘‘‘€~‘‘€}‘¡€}}}€}}}€€}}}‘‘‘€‘¡‘‘‘€€×þÿÿÿÿÿæ‘}}‘‘¡‘}}€‘‘€€}€‘¥¥‘€‘‘‘€€‘‘€‘‘€‘¤¤‘‘¥¡¤¡‘‘‘‘‘¤¥‘‘‘€‘‘‘‘¡¤¡¤¡‘‘‘‘‘‘‘‘‘¥¥¡‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘}€‘‘‘€€‘‘‘‘‘‘€‘}‘€€}‘‘¥‘‘}}}€}‘}‘þÿÿÿ™}}‘‘‘}‘}}‘‘‘‘‘‘‘}}}}€}€}}}‘‘‘}}}}}‘‘}}}}‘‘‘‘}™èýÿÿÿÿÿúØ‘}æÿÿàw}wvvvvvvwvwv}w}v}}w}ww}èÿàw}žýÿõ˜vvvvvwwvvvu˜õÿõ™vvwwv˜èÿà{}wvvovuuuvvvoluvoluwwuuuulluvvòýßuvuuvwvollvuouulltvuolluululltlulttlCCCtuollullluulttlClutlCllCZCCCCltlCtCCCltlCCCC]ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@@!!Yòÿÿÿÿÿ÷_ !! !!!!!!!!   !=ެõÿÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777557777ÓÓÿþÿþþÿþÿþÿþÿþÿþÿÿþþþþþþþþþþþúÕ¢‘wv}}}}}}}v}}}}}}}}}w}}}}}}}}€}}}}}}}}}}}}€€€}}}}‘€}}}€}‘‘€€}‘‘}}€‘‘€‘€‘€}€}€‘‘€‘‘‘}€€‘‘‘‘€‘€‘‘‘‘‘‘‘Úþÿÿÿÿÿ晑‘€‘‘‘‘‘‘‘‘‘‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘¤‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘™‘‘‘‘‘‘‘‘‘‘‘}‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘€}€‘‘‘‘}€‘‘‘‘}‘‘×ÿÿÿõ‘}}‘‘‘€}}}}‘€€€}}‘}}}}}}}}}}}}}™èþÿÿÿÿÿû×}vÙþÿß}}}}}}}w}}}w}v}vw}}}vvwv}v˜÷ÿ×w}žúÿýÙ˜vvvvvwv†èþÿáwvvvw{×ÿñ˜vvvvvvuuvvvuvvvvvvuovwvuvvvvuuvÇýÿÿþßvvluvvluuuuuuvlCuvlluouvutuuulutluuCluluuCltuCltulllltlltCCttCClttCClZCCCZCCulZCCCÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷[!   !  qªíþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5!77!Ô×ÿþþÿþÿþÿþÿþÿþÿþÿÿþþþþþþþþþþþúÕ}q}}}}}vvvvw}}vvvv}w}w}}}}}€‘€}‘‘}}}‘€}€}}}}€}‘‘€}}}}‘€}}‘‘‘€}‘‘‘}}}€‘€}}}}}}}‘‘¡‘‘‘‘‘€‘‘‘‘€}€‘‘‘}€¡¤‘×þÿÿÿÿÿà‘‘€}€€‘‘‘‘¤¤‘‘€€}~‘€‘‘‘‘‘‘‘‘‘‘™‘¡€€‘‘€€}‘‘¥¤‘‘‘‘‘‘‘™‘‘€}}‘‘‘‘‘‘¤‘}}‘¡¢¡‘‘‘‘‘‘‘€‘‘‘‘¤¡‘‘‘‘‘‘}‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘}€‘}}€ýÿÿÿÓ}}€€€}}}‘‘}}}}‘‘‘‘‘€}}}}}}}}}}}}€€}}}}‘}w}}v˜æþÿÿÿÿÿýÚ‘}vv}wv×ÿÿÙwwvw}}}}w}wvvw}}www}w}ww}™úþÙw}˜àÿÿÿýèÌÊàõýÿÿý×vvwvvv{ßÿ÷ž}}vvuvwvovvvuuvvvvvvuvvuvuvvvvvußÿÿÿÿÿú›uuvulvvuouvuulvuuuulluuuvuulCluvCCCuvwvtCtvutuuuCtltlZCCCCtlCtullZCCCCCllCCCCCu›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !!!!Yóÿÿÿÿÿ÷[!!! !!    !!!pšõÿÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75777!57775777ÓÓÿþþþþÿþþÿþþÿþÿþþÿþþþþþþþþþþþúÕŽ}}}}}}v}}}}}}}}v}}}}}}}}v}‘}}}}}}€€}}}}€}}€}}}€}}}}€‘€€‘}€€€‘}€€}‘‘€}‘‘‘‘‘€}‘‘‘€€‘‘‘‘€€‘‘‘€Úþÿÿÿÿÿæ‘€€€€‘‘‘€€‘‘‘‘‘‘€‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¥‘‘‘‘‘‘€€€‘™‘‘‘‘‘‘‘‘‘€‘¡‘€‘‘¤‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€}}€€‘‘‘€€‘‘‘€~}‘€€€‘Óÿÿÿ÷€‘€}‘‘}}}}€}}}}}}}}}‘}}}}}}}}™æþÿÿÿÿÿý×}}}}}}}vÓþÿÙ{}}w}w}ww}}}vw}}}}vw}}vwwwvwžýÿèv}™æýÿÿÿÿÿÿÿÿèžvvvwww˜èÿ÷žvvvvvvvvvvvvuuvvvvvvuuuuvvuuvuvvoèÿýúÿÿÿÿç{vvlluvuluuuluuoluuovoCovuCtlluutlltuullltllltltltCClttClCltCllCCCCCZCCttCCCCuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!@óÿÿÿÿÿ÷[!!!! !=qªíÿþÿþÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77775!7$57Ó×ÿþÿþÿÿþÿþÿþÿþÿþÿÿþþþþþþþþþþþú¬Ž}vvwvw}‘€}w}w}}}}‘‘}}}}}}}}}v}‘}}}‘¡‘‘‘}w}}€‘‘}}}}}€€}}}}}}}}€€€}}}‘‘€‘‘‘}}€‘‘‘€€‘‘‘‘‘‘‘‘}€‘‘‘¡‘‘Úþÿÿÿÿÿæ‘‘‘‘¤‘‘‘™¡¡¤‘‘‘‘‘‘‘‘‘¡‘‘‘¤‘‘‘‘‘¤‘}€‘‘‘‘‘‘‘€‘~‘‘‘‘‘~‘¡¡¥‘‘‘‘¡‘‘¤‘€‘‘}€‘‘€‘€‘‘}€€‘‘‘¡¤‘‘¤¤‘‘‘‘€‘‘}}‘‘‘}}}}‘¡‘‘¡‘‘¥ûÿÿÿÓ€€‘}}}}‘‘}ww}‘‘}€‘}}€€}}}}}}}}w€šèþÿÿÿÿÿýÙvvvwwwÓýÿ×w}}v}}vv}}wvvvw}}vwwv}}wvvv}}}w˜õÿüÊw}ž×Ùßß×›wvvvvvwwž÷ÿõ˜vuuvvvvvvvvwvuvvvvvvuvoouvwvvulluu÷ÿ›{úÿÿÿÿýÇvtuvullllluvvuuuuuuoCtvuouuluvuutClCCttlCtlCClttlCllltuttlttCZluuCCCtuCCtCCÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!;9!!Yóÿÿÿÿÿ÷_      !!  =}ªõÿÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777!!7757ÓÓþÿþÿüÿþÿþÿþþÿþÿþÿþýþþþþþþþþþúÕ}}}w}}}}w}}}}}}}}}v}}}}}}}}}}}}}}}€€}}‘}€}}}}€€€}}}€}}€€}€}}‘‘}‘‘}€‘~€}‘‘€€‘‘€}‘‘€‘€‘€€‘‘‘€Úþÿÿÿÿÿæ‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘€‘‘‘}‘‘‘‘‘‘‘‘‘‘}€¡¡€‘‘‘‘‘€‘‘‘‘‘~€€‘¡‘}€€‘‘‘€‘‘‘‘€~‘‘‘‘‘‘€€‘‘‘‘€‘‘€‘‘‘‘‘}}‘€‘‘‘‘}‘€€‘€™‘€Óÿÿÿü‘€}€‘}}‘}}}}}}}€}€}}}}}}}}}}}}}}™àýÿÿÿÿÿýÙ}}}}}}vw}žýÿ×ww}w}wvw}}www}vwwwwv}vwv}wvv}wæÿÿúÇwvwww}vvvuvvvv{Ó÷ÿÿè˜vvvvwwvvwwvvvvvuvvvvuuuvvvvuvvuluuýú{oèÿÿÿÿÿÿò{uuuulvuuuuluvlollulluuvutultlltlttluCCtltuCltlltCCltlltCCllClttCCClZClZCƒ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!!!!Bóÿÿÿÿÿ÷[!! 9sªíÿþÿÿþÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77!5!75757××ÿÿþþÿÿþÿþþÿþÿþÿÿÿþþþþüþþþþþþúÖŸ}w}}w}}}vvvw}}}}}vv}}}}|}ww}v}}€}}}€‘}vv}}v}}}}€€}}}}}}‘‘}€€}}}€‘‘‘}‘}}€}‘‘‘‘}}}€‘}€‘€€}}€‘‘‘‘‘‘‘€€‘‘Úþÿÿÿÿÿæ‘‘‘‘‘‘‘‘‘}‘‘™‘€‘€€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¥¥¡‘‘€‘‘¥‘‘‘€€‘‘€‘‘‘‘‘¤¡‘‘‘‘¥¥¡‘}‘}€‘‘‘‘‘‘‘‘‘‘‘‘‘€}}}}}}‘‘‘‘€}‘‘€‘‘‘‘‘‘‘‘‘€}}}€}÷ÿÿÿà€€€}‘}‘‘‘‘‘‘€‘‘}}}}}}}}}€}‘‘‘}}˜àþÿÿÿÿÿýÚ™}vw}‘}w}vv}}}žýÿ×}}wvww}€}}}}vv}v}}wvvvv}wvvv˜èÿÿüߘvwww}}v}{žÙúÿÿ÷Ç}wwvvvvuuuvvuvuvv}vvuuvvvvvuovvwvvvwžýè{vßÿÿÿÿÿÿÿÿ×uultvvllluvuuoCCCutlCllulCltlCluvutttlltCCClCCCuullCCtlCZCCCCCuCCllCCtèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ! !!!Yòÿÿÿÿÿ÷[!! !! !!    p¥õÿþÿþÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ775!577!77ÓÓüÿþÿüÿþþÿþÿþÿþÿþÿþþþþþþþþþþþúÕ}w}w}vw}}}}}w}w}}}}}}}}}}w}}}}}}}}}}}}}}}}}}}}€‘}}}€}w‘}‘}}‘€}‘‘}}}€€}‘‘}€€‘}}‘‘€}}‘€‘‘‘‘}}‘‘€‘‘‘€‘‘‘‘Úþÿÿÿÿÿ晑‘‘‘‘‘‘‘‘‘€‘}‘‘‘‘‘‘‘‘€‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€¤‘‘‘‘‘‘€‘‘‘‘‘€€‘‘‘‘‘}‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘€‘€€‘™‘‘€€€}‘‘‘‘‘‘€}€‘‘‘‘‘‘}‘‘}}€‘§ÿÿÿý™}}}‘}‘‘}‘}}}}}}}}}}}}}}}˜àýÿÿÿÿÿýÚ™}}}}}}}}}}w}}}}™ýÿÊww}}}}wwv‘wv}}ww}vw}}wvwvw}vvvwwwv}˜èþÿÿüèæßßÙà÷ÿÿÿÿ÷×vvvvvvvvvvvuuvvvvwwvuvvvvvuvvuvvvvuvwÊýßwvÙÿÿÿÿÿÿÿÿÿú›uluvtluvuoutuuutlltttlutlluCllluulutCtlltlZtClCtlZCltCCllZCClZCCtZCCÌüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!@óÿÿÿÿÿ÷_!  ! =q¥íÿÿþÿþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ577!77577777Ó×ÿÿþÿþÿþÿþÿþÿÿþÿþÿþþþýþþþþþþþú¬Ž}}}}}}}}}€}}}}}w}}v}‘€}}}}}}‘‘}w}}}€‘€}}}}‘‘}}}}}}}‘‘‘}}}‘‘}v‘€€}}‘¤‘‘}}€€‘‘‘€‘€‘‘‘‘}€‘‘‘€}€€‘€Ùþÿÿÿÿÿà‘‘‘€}}‘‘‘‘‘‘‘‘‘‘‘‘‘€}}‘¤‘‘‘}€‘¤‘‘€‘‘‘‘™‘}‘‘€‘¥‘}}€‘‘‘‘‘‘™‘‘‘‘‘€}}€‘‘‘‘‘¤¤‘‘‘}‘‘‘‘‘‘‘‘‘€}‘¤‘‘‘‘‘¥‘‘‘}‘€‘‘‘‘‘‘‘}}õÿÿÿæ}‘€‘‘‘}}}‘‘€}}}}}v}‘‘‘}}}}}}}™àýÿÿÿÿÿýÚ}}}}}}v}}}}}}všýÿבvw}}}}vv}w}wwwvvwwvvwv}wvvvvvvßèýÿÿÿÿÿÿÿÿ÷æžvvvuvuuvvvvvvvvvvuuuvulouvvulluuoolltuvvÌþÊvtÌÿÿÿÿÿÿÿÿÿÿÿßvuutltulCltvuuuuuluvlllttlttutllCCltoltlClluutCCllttlCCZllutCCCCCC”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!! @óÿÿÿÿÿ÷Z!! !  !! !! !p¥õÿþÿÿÿþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7777777777ÓÓÿþÿþÿþÿþÿþÿþÿþÿÿÿþþþþþýþýþþþúÕŽ}v}}}}}}}}}}}}}}}}}}}}}w}}}€w}}}}}}}}}€€}}‘}}}}€}‘}‘}}}€‘€€}}}}‘‘€€€€‘€€‘¡‘‘€‘}‘€€€€€‘€}Úþÿÿÿÿÿà‘‘‘‘}€‘‘‘‘‘‘‘‘‘‘€‘€€‘‘€‘‘‘€‘‘¡€‘‘‘‘‘‘€‘‘‘€€}~‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘‘‘}‘€‘‘‘‘‘‘‘‘‘‘‘€€}™‘€‘€‘€€€‘‘‘‘‘‘€€€‘¤‘‘‘€€}‘‘‘€}}‘žÿÿÿýš‘}}}‘}}}}}}}}‘}}}w}}}˜àýÿÿÿÿÿýà™}}}}}w}}}w}}wwšýÿבwvw}}‘wvw}}vvwvv}vv}wvv}}}}vvvvvwvvvvw˜ž×מ›vwvuvvvvvvvvvwwvvvvvvvuuuuuvvvuuvuvuuuuouvu×ÿÇvuÊÿÿÿÿÿÿÿÿÿÿÿÿüÇvlloutltluluvultloutuuClllutuCtltltCClttCClllZClllZuCCCCluCCZCCuáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! !!@òÿÿÿÿÿ÷Z!!  $pªíÿÿþÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×75577777777775Ó×ÿþÿþþÿþþÿþÿþÿþÿþÿþþþüþþýþþýþúÕŽv}}}vvv}}}}w}}}}}}}}}}}v}}}vw}€}w}‘‘}}}‘‘}w}‘‘€‘‘‘}}€‘‘‘‘€€}}}‘‘‘‘€€}}}‘}}}}‘‘¡¤¡‘‘‘‘‘‘‘‘‘‘‘€Úþÿÿÿÿÿà‘‘‘‘€‘‘€‘‘‘}€‘€‘‘‘¤‘‘‘¡¡‘}‘¡‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘€‘€‘‘}‘€‘‘‘‘‘‘€‘‘‘}€}}¡¢‘‘}€‘‘‘‘‘‘‘‘}€‘‘€€‘€€‘¤‘‘‘èÿÿÿè}}‘‘‘}}‘}}}‘‘‘‘}}‘}}‘žàýÿÿÿÿÿýà™}}}w}}}}}}}}vv}}}ww}žýÿÓvv}}}wv}}vwvv}wvvv}}wvvvvvvwwwvwwvvvvvvwwvuvvwvvvvv}vvvvvvuouuovvvvvvwvvuovwvuvvvuvvulußþ˜vvÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿò{uvulllllllulluultllulltlllClulllClututlCCZCluCCCllCCCZltlCtlZÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!!YóÿÿÿÿÿóZ!!    ! !=sªõÿþÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ775!5777777777ÓÓÿþÿþÿþÿþÿþÿÿþÿÿþÿþþþþýþþþþþüúÕ}}v}}wwww}}}}}}}www}}}}}}}}}}}}}}}}}€}}}}‘}}}}‘€‘}}}‘€€‘€}‘‘‘}}‘‘}}‘‘‘}‘€€‘}}€‘}€}}}€‘‘‘‘‘‘‘‘‘€‘‘‘‘Úþÿÿÿÿÿà™‘‘}‘‘€‘‘‘‘‘}‘‘‘‘‘¤‘‘‘‘‘}‘‘‘‘‘‘¡‘‘‘‘‘‘‘‘‘‘‘‘}~‘‘‘‘‘€}€}€‘‘‘}‘‘}‘‘€‘‘‘‘}‘‘}‘‘‘€‘‘‘‘‘‘‘‘}‘}€‘‘€}‘‘‘‘}}§ÿÿÿÿž}‘}‘}}}‘‘}}€‘}}}}}™àýÿÿÿÿÿýà}}}}}}}}}}}}}}}}wwvw}}všýÿÇ{vv}}vw}}wwwwvw}wvvvwvwvvvvvwvv}wvvvvw}vvwvvvvv}wvvvuv}wuvwvvvuouuvuvvuvvvuuuvvupuuvuvvoooßÿ˜uvÊþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌyvttlZltlutluulCltltlttltlCuuCtCClltlZlltltlZCtCZCZlltCCZCCƒòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!!@óÿÿÿÿÿ÷Z!   !  9q¥õþÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7777!77577ÓÓÿþÿþÿþÿþÿÿþÿþÿþÿÿþüþþþþüþþþþúÖ Žvv}}v}}}wvvw}}}}}}}ww}w}}}}}}}}}}}}}}}}}}ww}}}}}}‘€}}}}}}}}v}‘‘}}}}}}}}}€€}€€}}‘}}‘‘‘}}}‘}Ùþÿÿÿÿÿ॑‘€‘™¡‘‘‘‘‘‘¡‘‘‘€€€€‘‘‘‘‘‘‘‘‘‘}‘‘}‘™‘‘‘‘‘‘‘‘‘‘}‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘¡‘‘‘‘‘€‘‘‘‘‘‘‘€€€‘‘‘‘‘‘‘€‘‘}‘¥‘‘€}€‘€€€€}}€‘}}}€‘‘‘€€‘æÿÿÿõ‘‘¤‘}€‘€}}}‘w}}}‘}w}}™àýÿÿÿÿÿýàš}}}}}}}}}}}}}vvvw}}}}w}}w™ýÿÓ}}wvvvv}vwww}wvw}}vw}}vwwvvvvuv}}vvwwwvovwwwwvvvvvvuvvvvv{vvvvvvvw}vvvuvvvwvuovvvvvvuouuuáü{uuÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú›vuoluvuulllultuullCtlultuvvtllZtCltltltCCCCltuuulCCCCtlluáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@òÿÿÿÿÿóZ! ! ! =sªõÿÿþþÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ757777777!57777557777ÓÓÿþÿþþÿþÿþÿþÿþÿþÿÿþþüþþþþüþþýúÖ}}vvv}}}vvw}}}}}}v}w}}w}}}}}}v}}}}w}}€}}}}}}}€}}‘‘}}}}}}}w}}}}}‘}}‘}}}}‘}}€}€}€}€}}€}}}}‘‘}}}‘‘}}Úþÿÿÿÿÿ晑}‘‘‘‘‘‘‘€€‘‘‘‘‘¤‘‘‘}€‘‘‘€‘‘€‘‘‘‘€‘‘‘}€‘‘‘‘€‘‘‘}‘‘‘‘}}‘‘‘‘‘‘‘‘‘¤‘‘‘‘¤‘€€€‘‘€‘‘‘€€‘‘‘‘¡™‘‘‘‘}}‘¡‘‘}€}‘‘}‘}‘}€‘‘‘}}‘™þÿÿÿב‘‘€€}}}}}}‘}}}}}€}w}™àýÿÿÿÿÿýæ™}}}}}}w}}}}w}ww}}w}wvw}w˜ýÿÇ}}vvv}vwwvw}}wv}vvvv}v}}wvuvvvvv{vvvvvvvvwvvvvvvvvvuvuvvwvvvv}wvvwvvvvvvvvvvvuvvuvuuvuuvoè÷vužþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá{uullulltlulluluClltluluutlZCltClultlZCtCClltulZCCCCCtCÆúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷Y  !!!!=q¥õþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ77757577!57!5!!777777557777Ó×ÿþÿþÿÿþÿþÿþÿÿþÿÿþþþþþþþþþþþþúÕ}w}}}}}v}}}}}wwvvv}}}}}}}}}}}}}}€}}}}}}}}}}}}}}}}‘‘}}}}}}}}}}‘‘‘}}‘‘‘‘‘}‘‘‘}‘‘‘‘€‘‘€‘‘‘‘‘‘‘‘‘‘‘‘€‘€€€‘‘‘‘Úþÿÿÿÿÿà‘‘‘€€‘€€‘‘‘‘‘‘}€€‘‘‘‘€‘‘‘€‘‘‘‘™‘‘‘‘‘¡‘€€‘‘‘‘‘‘‘‘€‘‘‘™‘‘‘‘€€‘‘}‘‘€€‘‘‘‘€‘€‘‘‘‘‘}}‘‘€‘‘‘€‘‘‘‘‘‘‘}}‘‘}‘€àÿÿÿú‘}}}}}¤‘}}}}}}šàýÿÿÿÿÿýàš}}w}}}}}ww}}}}w}w}}}}}w}}}žýÿž}}v}wwww}vvvv}}vvw}vvvv}}v}wvvv}wvwvvww}wvwvvvvvvvvvvvvouvvvvuuvuuuuuuuvuuvvvuluuvvouluñõ{luÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÇvuulCuuluuutltltuuulCCZluoutlltullClltCCZCCCCCCZCCZtƒòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@òÿÿÿÿÿ÷Z!!!!  !qªõÿÿþÿþþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ577757575!557775777777777757ÓÓþÿþþÿþÿÿþÿþÿþÿþÿÿþþýýýþþþþþüúÖ}vv}vwv}}}w}}}wwwvw}}v}}}}}}}}}}}}}}}}}}v}‘‘}}}w‘}}}}}}}}}}‘‘}}}‘€}}‘€‘€}‘‘‘€‘€‘‘‘‘‘}‘‘}‘}€‘‘‘‘‘‘Úþÿÿÿÿÿà™‘‘‘}}‘‘™‘‘‘€}‘‘€‘‘‘‘‘‘‘‘}‘‘‘™‘¡™‘‘‘‘‘}‘‘‘€€‘‘‘‘¡‘‘‘€€}‘€}}€‘‘€‘‘‘‘‘‘‘‘‘‘‘}}€€}‘‘‘‘‘‘}‘‘‘€‘}}‘‘€}}}‘‘€}ýÿÿÿß}}}}}}}}}‘‘‘}}}}}™àýÿÿÿÿÿúà˜}w}}‘}}}}ww}}}}ww}}ww}}w}w}}žýÿžwww}w}wvww}v}wvww}vvwvvwvw}vwvv}vvvwwvvvv}{vvvvvvvvvvvuvvvuvuvvuolvvuuuvuuvvuuouuouoouõò{lv›ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ”uutluululoutClvvttlllotluuCCtltuZClZCCCZCtCClutClZ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿ÷Z !   =sªíÿþÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7755575577=577777577Ô×ÿÿþÿÿþÿþÿþÿÿþÿþÿÿþüþþþþþýþýþúÕ}wvvvww}}w}}}}}}w}}vw}}}}}}}}}}}w}}}}}}}}}}}}}}}‘‘}‘}}}}}€‘‘‘}}}}€€}}€}‘‘€}}}‘‘€}€‘‘‘‘‘Ùýÿÿÿÿÿà‘‘}‘‘‘‘}‘‘‘‘‘‘}‘‘‘‘‘€€€‘‘‘}}‘‘€‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘}‘‘™‘‘‘‘‘‘‘‘‘‘€‘‘‘‘‘€‘€€‘‘‘‘€€‘€‘‘}}}}}‘‘‘‘™}}‘€‘}‘€‘‘Úÿÿÿýš}‘‘‘}}w}€‘§àýÿÿÿÿÿûà™}}€}}}}v}}}wvww}‘}ww}žýÿžw}ww}}}}}v}wvvvvwvvvvwvvvvvvvvvwvvvvwvvvvuvvvvuuvvuuvvvuvvuvvuvvvvvvuuvvvuuvvuvvvvvuvu÷èuo›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÌyuuvlltCtuoCtulCCCCtCCltlCCCCtlluuulttlltCCZlCCtúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@óÿÿÿÿÿ÷Z!  !qªõÿÿÿþÿÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75757777757!577757!5!7557557555775777755557ÓÓþÿþþÿþÿþÿþÿþÿÿþÿÿþþüþüþýþþþüùÕ}vvvvvvw}}}}}w}}}}v}}wv}}}}www}vw}}}}}}}}}}}}}}}}}}}}}€€}}‘}}w}}‘}}}}}}}}}‘‘‘‘‘€‘}}€}€€‘‘}€‘€¡‘‘‘}€}}}×þÿÿÿÿÿà}‘‘‘}‘‘}‘‘}‘‘}€‘‘‘€‘‘‘‘‘‘‘‘‘}‘‘~}‘‘€¤‘€‘‘‘‘‘‘‘‘‘‘}‘‘‘‘‘‘‘€€‘‘‘‘€€}‘‘‘‘‘}‘‘‘€‘‘€‘€€‘‘‘}}}}‘¡‘}‘‘‘€}‘€‘}}‘™õÿÿÿè‘}}€}}}}‘žàýÿÿÿÿÿúà™}}}}}€}}}w}}w}}}}w}‘€}w}žýÿžww}vv}wwww}vvvv}wvw}vvvvuvvvvvwvvvwwvwvvvwvvuvvvuuvvvuvuvuuvuuvuuvvvvvvvuvvvoouvvuvvuuuvúè{vu›þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷›wulZlllltllZCZltClZltCCtZCCZCuutlltlltCultCCl{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@òÿÿÿÿÿ÷Z! !  ! =sªõþþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÔ57775575777!555577757777777777777Ó×ÿÿþÿÿþÿÿþÿÿþÿþÿÿÿþýþþþþþþþþþúÕ }}}}}}}}vv}}wwwww}}}}}vw}}}}}}}}}}‘‘}}}}}}}}‘}}}}}‘}}}}€}~}‘‘}‘‘€}}‘}}‘‘}}€‘}‘}‘}}€‘}Úýÿÿÿÿÿæ‘‘‘‘}‘‘}‘€‘‘‘‘}€}‘}‘¡‘€‘~‘‘}‘¤€‘™‘‘€‘‘}‘€€‘‘‘‘‘‘‘¤€€‘‘‘¤‘‘‘‘€€‘‘‘‘‘‘‘‘‘‘‘€€€€€}‘‘€‘‘‘‘‘€}}}}}}€}‘‘žÿÿÿþÓ€}w}€}}˜àýÿÿÿÿÿúÙ}}}}}}}w}wvv}w}}}vw}}}vvwwvv}žýÿž}}vv}}wvvvw}vwvwvvvvvww}wvvvvwvvvvvvvvvvv}vvvvvvvvvvvvvvvwvvuvvvvvvwvuuvuuuuuvuoovvvuvwúáwuuþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿß{uoluttluulltltuuuuuttuultlCClCCZlCtCCCCCCZtÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@óÿÿÿÿÿóZ!!     !qªõÿÿÿþÿÿýÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7777777777!55!7777!77577777777777775ÓÓÿþÿþÿþÿþÿþÿþÿÿüÿÿþþüþüþüýþüýúÕ¢‘}ww}}}}}vv}}}}vw}}w}}}}}}}}v}}}}}}}}‘‘}}}}}}}}‘}}}}}‘€}}‘}}}}‘‘‘}‘‘}}}‘}}}}}€‘}€‘‘}}‘‘€~}}}}‘‘}}}€Úþÿÿÿÿÿà‘‘‘‘}‘‘€€‘‘‘}}€‘‘}}€}}}¤‘}‘‘‘}}€¡€‘‘¡‘€}‘‘€}‘‘‘‘‘‘‘€‘‘€‘‘€‘¥¡‘‘€€‘‘‘‘€€‘‘‘‘€‘‘‘‘}€‘€€‘‘‘€‘€}}}€}}ww}}€€}èÿÿÿõ}w}}}w}žàýÿÿÿÿÿ÷Ú™}w}}}}}}}}vw}v}‘}wv}‘ww}}wwvvvw}žýÿžw}wvwvvv}vvvvwvw}{vvv}wwvwvvwvv}wvvuvvvv}wvvuvvw}wvuvwvuuvvwwulvuuuvvwvuvvouvuuoluvuvuvv{úßvulÇþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÇxulultuuttlloluuuuootluuZCCCltCClZCCZCtCl›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿóY!    !  $p¥íÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7577775777555775!57575777577777577Ö×ÿÿþÿþÿÿþÿþÿþÿÿÿÿÿüþþþþþþþþþþúÕww}}}w}}wvw}}}}}}}}}}vv}}v}}}w}}}}}}}}w}w}}}}‘‘}}}}}}}}€w}‘}}€}}‘}}‘€}‘‘€}}}}€‘}‘~‘‘€€}‘‘‘‘‘€Ùþÿÿÿÿÿæ‘‘}}€€‘€‘‘‘‘‘‘‘‘‘€‘‘‘‘‘‘‘‘€‘‘‘‘‘‘¥‘}‘‘‘‘‘€‘‘‘‘}‘‘‘‘€€‘‘‘‘‘‘€‘‘}€‘‘‘€‘‘€‘‘}€€‘‘}}}€€‘€}‘‘}€‘‘}}‘‘€}}}}}žþÿÿÿÙ}€‘™Óëþÿÿÿÿþ÷×}‘}}}}}ww}}}}}w}ww}}www}v}}}}}}}žýÿ˜vw}}}}v}wvvv}}wvvvwvvvw}w}vvvvwvvvvw}vuvvvvvuvwvvvvv}wvvvuvvvvvwvuuuuvuvuvvvvvuuvvuuuuo{úÙ{vvÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè˜vlllullllCZlllCCCCCCltlllZltlCZllClCCC{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@òÿÿÿÿÿ÷Z!  =sªõÿÿþÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777555755577775757777777777777777775ÓÓþÿþÿþÿþÿÿþÿÿüÿþÿÿþüþüþüþýþþýúÕ}v}}w}}wwvvv}}}}}}w}wvv}}w}}}ww}}}}}w}w}~}v‘‘}w}}}}}}}}‘}}€}}}}}}}}}}}‘‘€}}‘‘‘}}}}‘‘}}‘‘€‘‘‘}}‘‘‘€Úþÿÿÿÿÿà™‘€~€€}}‘‘‘‘‘‘‘€‘‘‘}~™‘‘‘€€}‘‘‘‘‘}‘‘¡¡‘‘‘¤¡™}‘‘‘‘€€€€€‘‘‘‘‘}‘‘€}‘‘€‘€€‘‘‘€}}€‘‘}}}}‘}}}‘€€‘‘}}‘€‘‘}}}}}‘‘Ùÿÿÿýž}‘™š×õÿÿÿÿÿÿõÙww}}ww‘w}}}}}w}}wvw}}ww}}}wvvw}}}}}žýÿ˜ww}w}wwvvvwvv}vvvwvvvwvvvvvvvvvvwvvuuvvvvvvvvvvvvvvvvuvuvuvvvvvuouuvvuuuuvvvouuoouvu†üÌvvÊþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÌ{ttotlZlllZCCttCClZCtCuutllZCCCtutCCtÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ  @óÿÿÿÿÿóZ!!!      =Ž­õþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75777777777575!757!7575$!75777575777Ó×ÿÿÿüÿÿþÿþÿÿþÿÿÿÿÿþþþþþýþýþþþúÖŸwpvv}}}}}}}w}}wvw}}}wv}}}}€}}}}}}}}}ww}}}v‘}}‘w}}}}‘}}}}}‘}}}}‘‘€}}}}‘€‘‘}}}}}}€‘}€€Úýÿÿÿÿÿæ‘‘‘‘‘€}}‘}}}‘‘‘€‘‘‘¡‘}‘‘‘‘‘‘‘‘‘€‘‘€‘‘‘€‘‘}€€€€‘‘‘€€‘‘€‘‘‘‘‘}‘‘‘‘‘‘‘€}}‘‘€‘‘‘‘€}}}‘‘}}}}‘€‘€‘˜úÿÿÿõ˜™Óèýÿÿÿÿÿþõב‘}}}}}}}}}w}}}}}w}}}}w}}}}w}wvw}wœýÿ˜}}wvvvvvwww}wvvwvvw}vvwwvvvwvv}vvwwvuvvvwvvvwvvvvvvvuvvvvvvvvvvuuuvuvuvvuvvvvuuuvvvuvuu˜ýÊvvuÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ”uultlltuolCullttllCtCCCCCCllCttCCt›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@òÿÿÿÿÿ÷[qªõÿþÿÿþÿÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77575557777!7!!75!77777777557775757ÓÓÿþÿÿþÿÿþÿþÿÿþÿüÿÿþþüþüþýþüþüúÕ’vvvvvwwww}}wvv}vw}}vvvvw}‘‘v}}}}}w}}}}}w}}}}}}}€‘‘‘‘€}}}}}}}}}‘}}‘€€}}}}}}}€€€‘‘}}}}}}}}}}€‘}}‘‘}}}Úþÿÿÿÿÿꤑ‘‘‘}}}}}‘‘‘™‘‘‘‘‘‘‘‘‘™‘}‘‘€‘‘‘‘€‘‘‘‘‘‘‘™‘‘‘}€€‘‘‘‘€}‘‘}}‘‘‘}‘‘‘€‘‘}}}‘‘‘}}}€€‘‘}}‘}‘‘‘€}}}}w}‘}‘}‘}‘‘ÓÿÿÿÿíõÿÿÿÿÿÿþõÓ™‘€}}}}}}}w}}w}}w}}}}}vwvwwww}vwvžýÿ˜w}}wvvvvv}}wvv}vvwvvw}{vvvvv{wvvvvwvvwvuvvvvvwwwwvuuvvuuvvwvvuvvvuovvouvvvuuvvvvuuuvvuuoožýÇyvuÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÌxulttllttClZlutCClutCZCtlttCCCCC{èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!@óÿÿÿÿÿ÷[!!      9qªíÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ777577777775777557757777757777777777777777757Ó×ÿÿþÿþÿþÿÿþÿÿþÿÿÿÿüüþþþþþüþþþúÕ}pv}}}v}}}}w}}}}}}}}}}}}w}}}v}}}}}}w}}}}}}}}}}}w}}}}‘}}}w}}}}}‘}}}}‘‘}}}‘}‘‘‘}}}‘‘}}€‘‘€€}‘€‘‘}€}×þÿÿÿÿÿæ‘€‘‘‘€€‘‘}€~€€‘‘‘‘‘‘‘}‘¡€}‘‘‘}‘‘‘}‘‘‘‘‘‘}}}‘‘}‘‘‘‘€€}‘‘‘‘€‘‘‘€‘‘}‘‘€}‘‘‘€}¡}‘‘}‘‘}}‘}}€‘}}}}}}™ëÿÿÿÿÿÿÿÿÿýõÓ}}}}}}}}}w}}}}w}}w}w}}}}v‘ww}w}}}}}}}vv}wvžýÿ˜vwwwwwwvvw}v}wvvwvv}vvvv}wvwvvvvvvvvwvvwvvuvvvvvvvvvvuvvvvvvvvuuvvuuuvuvvuvuuuvvuvuuoouužüÇuuu×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ{ulCtlultlllCCtCtlCCltCCCCZlZtÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ! @òÿÿÿÿÿ÷Z! ! =sªõÿþÿÿþÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77775557577775!7777!5577777777777777ÓÓþÿþÿÿþÿþÿÿþÿþÿþÿÿþþüýýþþüþüýúÕ}vv}}vw}}}}v}}}}}w‘}}v}}ww}}}}}}}}}}}}}}€}}}}}}w}€€}}}}}}}}‘}}}}}}}}}‘}}‘‘‘‘}w}}‘€‘‘‘‘‘}}€‘}}‘}}×ýÿÿÿÿÿà™€}}}‘¤‘‘‘‘‘€}}}€‘‘‘}€€}}‘‘‘‘}}}‘‘‘‘‘}€‘‘}}}}}}‘™‘‘}}‘™‘}}€}}€‘‘‘‘}}‘‘‘€}}}‘‘‘‘‘‘€‘‘}}}}‘‘}v}}}}ww‘§úÿÿÿÿÿþúèž}}w}w}}w}}}}}}}}w}ww}‘}}vw}}wwwwwwww}vžýÿ˜}}vwvvvwwvwvw}ww}vvvvvwvwvuvvvvvwwvwvuvvvvuuvvvvuouvuvuvvvuvvvvouvuvvuvvuouvvuooououÇýuuu×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ߆utCuutuulZtlZCCtCCCCCZCClCu›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ  @óÿÿÿÿÿóY   !  !   sªíÿÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7775775777577!557757575757777777775777Ô×ÿÿÿþÿþÿþÿþÿÿÿÿÿÿÿüþüþþýýþþþþúÕŽww}wvw}}}wvvvw}vw}}wvw}}}vw}w}}}}ww}}}}}}}}}}w}}}w}}}}}‘}}v}‘~}}}}}‘}}}}}€€€€€‘}€‘‘}€€‘‘‘Úþÿÿÿÿÿà‘‘€‘‘€}‘‘‘}}‘‘€‘€€€‘‘‘‘‘‘‘‘‘‘‘‘‘€€€‘™€‘€‘‘‘‘}}€}‘‘‘‘‘‘‘‘‘}‘€‘‘}€€‘‘‘}‘‘}}€‘}‘‘‘‘}}}w‘}}ÓýÿÿýõÙ™}}}‘}}}}}}}}}ww}wv}w}vww}ww}}vw}}w}}}vœýÿwvvww}}vvw}vvvvvwwvvvwwvvvvwwvvvvvvwvwvvvvvvvuv{vvvvvuvvvwvvvvvuuvvvvuuuuvvuouvuouvuuuuvvvÊý›uuoßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ç{ulClltCCllCCtultCZllltCC{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@òÿÿÿÿÿ÷Z =sªõÿÿÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77757777575757777757757777777ÓÓÿþÿþÿþÿÿÿÿþÿþÿþÿÿþþþüþþþüþüüùÕ}w}vvw}}vvv}vvwvwvvvw}}vv}}}vvvvw}}}wv}v}€}v}}}}v}w}‘‘‘}}}}}}}w}}}}‘‘‘‘€}}}‘}‘‘‘‘‘‘‘‘€}}‘‘‘‘€}‘‘‘‘‘‘Úþÿÿÿÿÿà™}€€€‘‘‘}‘‘‘€}€‘‘‘‘€‘‘‘‘‘‘‘}}‘‘‘€}}‘‘‘‘€}‘‘€€‘‘‘™‘‘‘}}}}}}‘‘‘‘‘‘‘‘€}€}‘}‘‘‘‘‘}}w}‘‘}}}‘‘‘}}}}‘‘}wÙëÚž}w}‘‘€}}}}ww}w}w}}}ww}}}}}wwwvw}€}ww}}w}}}w™ýÿ˜vvwv}}}vvvvvvv}}wvwvwvvvwvvvvvvuvvwwvvv{vvuvvvvvvuvuuuvvw}{uvvvvuvvvvuouvvvvuooouolvvvvvvvÌþ›vll×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè›uCtClZlttlCltutllZlCZtuÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿ÷Z!!!   ! ! !q¥íÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7575777777!577557777777755ÓÓÿÿþÿÿÿÿþÿüÿÿþÿÿÿÿüþüþþüþýþþþúÕpvw}vv}}w}wv}}v}}}}}w}}vww}}}}}w}}}}}}}}}}}v}‘}}}}}}}}}}w}}}}}}‘}}}‘}}}}}}}}}‘}}€€}}‘‘}€×þÿÿÿÿÿà‘}‘‘‘‘€}€€}‘‘‘‘‘‘}‘‘‘‘€‘‘}‘€‘‘‘}}}‘‘‘‘‘‘‘€}‘‘‘‘€€‘€€€€€}‘‘€€‘‘‘}}}‘}‘‘}}€}}}‘}}}}}}}‘}w}}}}}}}}}w}}}}w}wvw}}}}w}}w}}v}}w}wv}wwžýþww}wwwwvvwv}vvvwvvw{}wvvvvwvwvvvvvv{vuvvvvvvvvvvvvvvvvvuvvvvvvvuvvvuvvvuuvuuvuuuvuouvuuouu×þ™ulußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌ{uCZllllttCCCCCZltlCtÆúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!!@òÿÿÿÿÿ÷Z  $qªõÿÿÿþþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7775777557575775777!557577775557ÓÓÿþÿüÿþÿÿÿÿÿÿþÿþÿÿþüþüþýþþüþüúÕ}pvwvvvw}w}}wwvvv}}}}w}}vvw}w}}}vw}}}}ww}}}}}}w}}€}}}‘}w}}}}w}}€‘‘‘}}}}w}}€}}}}}}}ww}}‘}}}}}}×þÿÿÿÿÿà‘™‘‘‘‘‘}}}‘‘‘‘}}€€}‘‘‘‘‘‘}}‘}}‘}}‘‘‘€‘€€}€‘‘‘‘‘‘€}}‘‘‘‘‘‘‘‘‘™‘‘€}}}}‘‘}}‘}}‘‘}}}‘‘‘www}}}}w‘‘w}}}}}}}}}}}w‘}wwwvwvvwvw}}www}wwww}wžýÿ˜vw}}wwvvw}{vuvwvv}}w}{vv}{vvv{vvvvvwvvvvvvvuv{wvv{vvuuuvvvvuuv{vuuvvvvuuuuuovvvuvvultluÙÿ˜ouvßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè›ulttCClutCClultlZC{ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!9óÿÿÿÿÿ÷Z !!  s¬íÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ7775755775755777!7!5!7755$77555!75775777777777777Ó×ÿÿþÿÿÿþÿüÿþÿþÿÿÿÿüþþýþþüþþþüúÕŽwvw}wv}vvw}w}}}}www}}}ww}}}}}w}w}}}}}}}}ww}}}}}}}}}}w}v}€}}}}}}}‘}}‘}}w‘}}‘}}€}€}}}‘‘}}}‘‘Úþÿÿÿÿÿà‘‘}€€}‘‘‘‘€‘€€€€€™‘€€‘‘‘}€‘‘}‘‘‘€}€}€€€‘‘‘€‘‘‘}‘}€‘€‘‘}€€‘}‘w}‘€}}}w‘}}}}}‘v}}}w}}w}}}wv}}ww}}w}w}}}}}}w}www}}}}wwww}wwžýþv}}vvwwwwvwv}vvvvvvvvvvwvvvvvwvvvwvvvvvvwvvvvvvvvvvvvvvuvvvuvuuvvvvuuvuvvuvuvouuvuluuuvuoußþƒouußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü̃utCCuZlCZCZllCCußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿóY  !pªõÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7775777575555!57!577759755755$7!55!5!7757577777757577755577ÓÓþÿÿÿþÿÿÿÿÿÿÿþÿþÿÿþþüýüþþüþüþúÕ¢}}vv}}}vvvvv}}}}vvv}}}}}}}}}}}}‘}}}}}}}}}}}}}}wwvv}w‘}}}w}‘‘‘‘}‘‘‘}}}‘}€}}}€‘}}}‘}€€}€}×ýÿÿÿÿÿà}}}‘‘}}}‘‘‘€‘‘‘}‘‘‘}}‘‘}€‘‘}‘€}}€€‘™‘‘‘‘‘‘‘‘€}€‘‘‘‘€‘‘‘‘‘}‘€‘‘‘‘‘‘€‘€}}}}‘}}‘‘}}‘‘}}}€}}}}w}}}v}}}‘‘‘‘}ww}}}}}}}}}wvw}}}vw}www}vvw}}w}wvv}ww}}w}v}}wvwvžýþ˜wwwvw}wwvvvvvvvvuvww}vv{vvv}vvvwvvvvvwwyvvvwvuvvuuuuvuuuvuuvvuuvulvvvvvvvuuvvllouuvulußþ†uvlçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòžxZCClZClClZCCZÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!@òÿÿÿÿÿ÷Z!! p¥õþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7775757577575575757775555777575777577757575!5775755557775577777777577777757555Ó×ÿÿþÿþÿþÿüÿþÿþÿÿÿÿüþüþþýþýþþýúÕŽsw}vv}}w}}}v}}wvw}}w}w}w}}}ww}wvw}}}w}}}}}}}}}}}w}}}}}w}}‘w}}}w}}}}}}}}}}€}}}‘}}}€€}}€‘€}€Úþÿÿÿÿÿà‘}}€‘‘€‘€‘‘‘€€€}‘}‘€€‘}‘}‘‘‘‘}€‘€‘‘}€€€€€€‘‘‘}‘‘€€}}‘‘}}}}‘‘}}€}w‘v‘}}}}}}}}}}}}}}}}}}w}}www}}}wv}}v}wwwwv}www}}žýý™}w}ww}wwwvvvwvvwwvwvvwvvv}vvv{}vvvwvv{wvvvuvvvyvvvuvvvvvvuvvvvouvuuvuuvvuuvvuouvuvuluvuvuluàýƒouuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüß”vlZllCZllCZ”õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ @óÿÿÿÿÿ÷Z!=}ªõÿÿÿÿþÿþþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5575775575775777557777777!55$77577757557577777777777575755775555ÓÓþÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿþýþüþüþüþüýú¬s}v}}w}}}}v}vvv}w}vw}w}}wvv}}vvwvw}}}}wv}}w}}wwv}}}}}w}‘}}}}}}}}w}}}}v}}}}}}}}€‘€€€}}}}‘‘‘€}}€‘‘}€€€‘Úþÿÿÿÿÿ晑‘€}}}‘‘‘‘}}‘‘}‘‘‘}}‘}}}}‘‘‘¥‘}}}}}‘‘}‘€}‘‘‘‘‘}€€€€€}}‘‘‘‘‘™‘‘}‘}€‘‘‘‘}}}‘€}}}}‘}‘‘‘‘‘}}}}}}}}w}}}}ww}€}}}}}}www}}w}}www}vw}}vvvwvww}}žýý˜}wwwvvvvwvwvvwvvvvuuvwvvvvvwvvv}vuuuouuuvuvvuouvwvuvvuvuuououuouvuoouuvuvuvulouvououuèû˜uuvèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ì{uCtlltllyßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@òÿÿÿÿÿóZ ! =ŽªõþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÔ5777557757555775775857557!55=577775775757757777577757777775557757757777557777Ó×ÿÿþÿÿÿüÿþÿþÿÿþÿÿÿüþýýýþüþþþþúÕŽvvvvwwwwww}w}wwv}}}v}}wvw}}}}}}vw}}}}}}}}wv}}}}}}}}}}}w}}}}}}}}}}}€}}}}}}}}}}}‘}}}‘‘}Ùþÿÿÿÿÿà‘€}}}‘€‘€€€€€‘‘}‘}‘‘€€¡€}€‘}‘‘‘}‘‘}‘‘‘‘‘}‘€€}‘€€€}€}‘‘}}}}}‘}}‘}}}}}}w}}}}ww}}}}w}w}}}v}}}}www}w}}}w}w}vww}ww}wvvwvžýývwv}vwvvwvvvwvvvwvvwvvwwvvvvvu{}vvvvwwvvvvvvvvvvuuvwvouvvvvuuvuvvuuvvuuuvuuuuuvuuuvuouuuèú˜uluñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÆylCZlCuÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !@óÿÿÿÿÿ÷Y ! =sªùÿÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ55757757775557577757777757777775775557577755777777777777775577555Ó×þÿÿüÿÿÿÿÿÿÿÿÿþÿÿÿþüþüýýþüþüüúÖ¢}vvvvvvvvvvvv}}}v}}}w}}}vw}}}}v}}wv}ww}vv}}}‘}‘}}}}}}}€}}}}‘‘‘}w}}}}}w}€‘}}}}}}‘‘}}}}‘}×ýÿÿÿÿÿà‘}}‘‘}}}}‘‘‘‘‘‘}}‘‘‘‘‘‘}‘‘}™‘‘‘‘‘}}‘‘‘‘‘}}‘‘}‘‘‘‘‘‘‘‘€€‘}}}}€€€}}w€}}}}}}}}}}€‘}w}‘ww}}}}€wvw}}}}}}w}w}ww}w}}}ww}v‘vw}}}}}www}ww}}wvwvwwvvwvžýý˜vvvvwwvww}{wvw{vvvvwvwvvvvvv}}vvvvw}wvw}w{vvuvvuvuuuvvvvvvvvvvuuouvuuuoovvvuuouulouvuèú{oulñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýß–uCCC”÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z!!!   =q¥íþÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ55557557557775575777755777577777557557Ô×ÿÿÿÿÿþÿþÿüÿþÿÿÿÿÿüþýþýýüþýþþúÕ Žw}vvvv}}vvvv}}vv}}}w}vvw}w}}w}w}w}}}vw}}}}v}}}}}}}}w}}}}}}}}}}}}}€}}}}}}}}}}}€}}}}}€}}}Ùþÿÿÿÿÿà‘€‘}}}}‘€€‘€‘‘‘€}€€‘}‘™‘‘}€‘‘‘‘‘€€€‘}€€€}}‘€€}}}}€}€‘}€}}}}}}}}}}}}}v}}}}}}}}}}}w}}}}wv}ww}wv}}}w}ww{}wwvw}vvvÇýú‘vvvwvwwwvw}w}wvvvvvv{vwvvvv{vuwuvvv{}vvuvvvvvvvuuvvuvuvvvvuvuvuuvuvvuuvuvvuovvuuouuuuuuvuñ÷{uvuòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ìzu‚çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ! @óÿÿÿÿÿ÷Z ! =qšùÿÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ777777577555757755775777775757577575777757775777777577575ÓÓÿüÿþÿÿÿÿÿÿÿÿÿüÿÿÿþüýüýþýþüüüúÖ’}vvwwvw}}}vvwwvvw}}}}}}w}w}wvw}wv}}}}€}}wvw}}}}}}}w}}}w}}}}}}}w}}}}w}w}}}}‘‘}}}}}}}‘}}}}}}€}}‘‘×þÿÿÿÿÿà‘‘}‘‘}}}€}‘}}}}‘}}€€‘‘‘‘‘‘‘}‘‘}w‘‘‘‘‘‘‘}‘‘‘}}€‘‘}}}}}€‘‘‘}‘‘‘‘‘}‘}}}}}‘‘}}}}w}}}‘}}w}‘}www}w}}}w}}}}ww}w}wvwwwvw}{v}w}}}wvvwww}wžÿú˜{vvvvvvvvvvvvvvvvvvvv}vuvwvuuvvvvuuvvuvuvvuvvvvvuvvvvvvuvuuuuvvvvuvvvuuuuuouvuvvvuouoò÷{luo÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÇßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y     q¥õþÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75557775777557555!7575$7755!755775575$7577777557757777757777757557777Ó×ÿÿÿÿÿþÿüÿþÿþÿÿÿÿÿüþþýþüþüþþþúÕŽvvwwvv}wvvwwww}}ww}}w}}}wwww}}}}ww}}}}}}}}}}w}}w}}w}‘}}}}v}}}}}}}}}}}}w‘}}}}}‘}}}}}}‘}}‘}}}}}‘‘Ùýÿÿÿÿÿà‘‘}€}‘€}}€}}}‘‘€}}}‘‘}}‘¤}}€‘‘‘}‘}}‘€}}}€‘‘‘}}‘}‘}}}}}‘‘w}}}}}‘}w}}}}}}}}}www}www}}}www}w}}}v}‘v{}www}}}}vwww}{wÓýúww}wwvvwvvyvvvvvvvwvwvvvvvwwvvvwvvvvvvvvvuvvvuvuvuvvvuvvuvuuuuuvvuuvuvvvvuuvvoouvuuuvuuuvoõõ{uouúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿóZ!=qªõÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ77757775577577575557777555755775777!577=775=55557755757577577777755755755775575777ÓÓÿüÿþÿÿÿÿÿÿÿÿÿÿþÿÿþýüþüþýþüüüúÕ}vv}}v}}w}wvv}}wwvvvvv}}}w}ww}}w}}}}wvvvww}}}}wvwv}w}}}}}w}}}}}}}}}‘}}}}w}‘‘}}}}}‘‘}}}}}}}‘×þÿÿÿÿÿæ™}}€‘}‘‘}}}}}}‘}}}‘¡€‘‘‘}}‘‘‘€}€€}}‘}}}‘‘‘}‘‘‘‘}€}}}}‘‘}‘‘‘‘}}}‘‘€}}}}}}w}}w}}}}}}}w}‘}‘}w}}}}w}}w}}}‘}ww}}}}wwwww}w}}}}}}{}vv}}w}vww}wvvvvv}Òÿúvvwvvvv}vvv}{vwwvvw}{uvuvvvvvvvvvvvvvvvvvvwuuvvvuvvvvvvwvuuvuouvuouuuuvuuoouuuvvuuuuuuvvu÷õ{ouvüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿ÷Z!!   =}ªíÿÿþÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5775575555777577555575757757577577555775557577577555757555775555777575755775Ó×ÿÿÿÿÿþÿþÿþÿÿþÿÿÿÿüüþüþþüþýþüúÕ}vvwww}wv}}vv}}wvv}}}vvw}}w}w}}}w}}}}}w}w}w}w}}}}}w}v}}}w}}}}}€}v}}}}}}}}w}}}}}}}}}}}}}}}€}}}}}}Ùýÿÿÿÿÿà‘‘}}}€€€}€}}‘}}‘‘€‘€‘€‘}}}}‘‘€‘€‘}€}€}}‘€}}}}}}}}w}}}}}}}}w}}vw}w}}}}}w}}}w}}}w}ww}wwv}w}vwwww}}ww{ww}}wwwÊþ÷vwvuw}w{wvv}vvvv}vv{wvwvvvvvvwvvvvwvuvvvuvvv{vvvvvuvvvvvvvuuvuuuvuvuvvuuuuuuuouvuuuuuvuuuuu÷ò{uuuüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ@óÿÿÿÿÿóY  =sªõÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ55577577557555775757775557577557777757577557775777755555575ÓÓÿþÿþÿÿÿÿÿÿþÿÿÿþÿÿþþüþüþüþüþüùÖ}vwvvwwvvw}vv}}vvvw}}wvvww}}wvw}}www}}ww}ww}}}}}w}}w}}w}}}‘‘}v}}w}}€}}}}w}‘}}}}}}}}}}w}}}}}€}}}}×þÿÿÿÿÿ߀}€€}}‘‘‘‘}w‘‘€‘w}€‘‘‘}}‘‘€}‘€€‘‘‘€}‘‘‘‘‘‘‘‘‘}}‘}}}}‘‘}‘‘}}}}‘}}}}}}}‘}}}wwww}}}ww}}}‘€}}w}ww}w}wwwww}{}w}wvvvwwwvww}wvww}vvww}wvÇþ÷ƒvwvvv}}wvvvvvvwvvw}vvwvvvuv{wvw{vvvuuuvuvwvvuvuvuvyvvuuuvvvuuvvvuvvuvvuvvuuvulluuuvuoluu÷è{vvvüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z! ! p¥íÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ577777575757557777575575757577777757$7757!75777755557557555775577557757577777557Ó×ÿÿÿÿÿþÿýÿþÿÿÿþÿÿÿüüýýþýþýþýþúÕŽw}vvw}vvwwvvwwvw}}wwww}}w}vw}}}}vw}}w}}}ww}}}w}}w}}}}}}}w}‘}}w}€}}w}}}}}}}}}}}}}}}}}}‘}}}}}‘€}}}‘}}‘}}Ùþÿÿÿÿÿà‘}}‘‘€}w€‘}}€‘}‘‘€‘}‘‘‘}‘€‘}€}}€€}}‘‘}}}}‘}}}}}}}w}}}}}}}}}www}}wwwww}ww}}}}w}}}wwwww}www}vw}wwwwvw}wvÊþ÷vwvvvw}vvw{vvvv{}v{vvvvvv{vvvvwvvvvvvuuvvuvvvvvvuvvvuvvvuuvvvvvvvvuuuvuuuvvvuvuuuuoovvuuuovúè{uu{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@óÿÿÿÿÿóY!!!!   !qªõÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ55557575757777557755777777757877777775575755775575555757555575757ÓÓÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿþýýüüýüýýüüúÕŽ}}}vw}vvvv}ww}}}}}ww}}wv}wv}}wv}}}}}}}}}}}wvww}vw}ww}v}}}€}w}}v}}}}}}}}}}}}}}w}€}‘}}}}‘}‘‘×ýÿÿÿÿÿà}}‘‘‘‘‘‘‘‘€€‘}}‘‘‘€}‘‘€‘}}w}‘€‘‘‘‘}‘}}}}}‘‘}}}}}‘}‘™}}}}}}‘‘‘w}}‘‘‘}‘}}}}w}}}w}}}}}vww}}}w}}w}ww}w}wvwww}}wwwvwwvvvw}ww{}}}}wwvvwvÓþ÷˜}w}wwvvvvvvvvvw}vvvuvvvuvvvuvvvvvvvvwvvvvvvvvuuuuvvvouuvuvuuvuuvvuoouvuouuuvuoouvuuuvulootyúèyou{ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!;òÿÿÿÿÿóZ!  =qªíÿþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ555577555575755555775777575555575777577575775755577557555775575775777555777Ó×ÿÿÿÿÿþÿþÿÿÿþÿÿþÿÿüýüþýþýþüþþúÕŽ}wvv}}vwvv}wvv}}}}w}w}wvw}wv}}ww}wv}}}}w}}}}}}}}}}w}}}w}}}}w}}w}}}ww‘v}€}}}}}}}}}}}}}}}}}‘}}‘}}}‘}×þÿÿÿÿÿà‘}}}‘‘}‘‘‘}‘‘}€}‘‘‘}‘‘}}}}}}}€€}}}}}‘}}}‘}€}}}}}}}}v}}}w{}w}}ww}w}}}ww}}wwwwwww}}wwwwww}w}ww}}}w{}wwwww}vÌþõ‘www}vvvvvvvvvwvvvvvvvvuvwvvvuvvvvuvvw{vvuvvvvuvvvvuvuouvuuuvuvvuuuuvuuuvuuuuuuvuouvuluuuo{úâuuu˜ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ @óÿÿÿÿÿ÷Y=sªõÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5555775775775775755575777777577577775555577755755755777755ÓÓÿþÿþÿÿÿÿþÿÿÿÿÿÿÿÿþýüüýüýýþüüõÕ}vvvvv}}wvv}}}wvwvvvw}}wvww}vvw}v}}wvww}w}wvw}w}w}}}}}}}wv}‘}}}}}}}vv}}}}}}}}}}}}}‘‘}}‘}}}}}}‘‘€Úþÿÿÿÿÿà™€}}}‘‘}}}€‘€}}‘}}}}}}}€‘‘}}‘‘}}}}w}‘™€}€€‘€}}}}‘‘‘}}}}}}}‘€}}}}}}}}}w}}}‘€}}}}}ww}}}vwww}}}}w}}w}ww}w}}}w}}}}wwvvvwvvvvvw}w}}wwwvÓÿóvv}{vvvvwvuvwvwwvvvvwwvvv{wvwvuv{vvw}wvuvvvuvvvvvvvvvvuouvvvvvvuouvvvvouvvvuouvvuuvvouuvvuüßxlv˜ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ@óÿÿÿÿÿ÷Z ! =}ªõÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè×5755757557577577755555777=7777557557575775575577575755555755575Ó×ÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿüýýýýýýüþüþúÕvvvvw}vvwwwwwwwwvvv}}}www}}vw}w}}www}w}w}wv}w}}}ww}}}}}v}}}}}}}}}}}}}}}w}}}}}}w}}}}}}}}}}}}}×þÿÿÿÿÿà‘}}}}}‘‘}}}‘‘}}‘‘}}w}€€‘}}‘€‘}}}}}}}‘€}‘‘}}}‘‘€‘}}}}€€}}}}}}}ww‘w}}w}w}}}}}ww}}{w}}}}w}ww}w}w{}ww}ww}wvwww}{}}wvw}wvvwvvwvvw}w×ÿè{w}vvv{vvvvvwwvwvvvvvvvwvvvvvvuvvvv{wvwuvvuvyvvvvuvvvuuuvuuvvvvuuvuvvuuuvuvouvuuouvuuvuuuu˜üßvuv›ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@òÿÿÿÿÿóY  !=sªõÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ555577775575575777557755577775775577777577557755557577557575755757557575575577ÓÓþÿýÿÿÿÿþÿþÿÿÿÿÿÿÿþüüüþüýþüþüúÖ }vvvvw}w}}vvvw}vwvvw}}}}}}}}ww}w}ww}}}w}}ww}‘}}}vvw}}}ww}wwv}}}}}ww}}}}}}‘}}w}}}}}}}w}}}}}}}}}}Úþÿÿÿÿÿà‘‘€€‘‘}}‘w}w}‘‘‘}}‘‘}}‘‘}}€}}}€}}}}}}‘}}€‘}}}}}}}}‘}w}}}}}w‘‘}w}w}}wwwww}w}}w}}{}}vwww}wvw}}}vw}ww}vvwvvvv}ww}}wwvv}wvvvvvwvvÌÿõ}vvvvvvvvvvww}{vvvv{vvvvw}{vuvvvvv}vvvwyvvvvvvuuvv{vvvvuvvvuvvvvvuuuuuuuuuuvuuouuououlllo˜üß{uvžþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!9óÿÿÿÿÿ÷Z!=qªõþÿþÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ775557577757775777555777555775777755775777557557757557755577575577755ÓØÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿüüþþüýüþüþüúÕ}vvvvwww}wvvwwvwvwv}}www}}}}}}wwwww}}}w}}}vv}}}}}wv}}w}}}vwww}w}}w}}}w€‘}}}}}}}w}}}‘}}}}}}}}}}Ùþÿÿÿÿÿà}‘€}}}}}}‘‘w}€‘}€}}‘‘}}}}}}‘}}}€}}‘}}}}€}}}}‘}w€}}w}}}‘}}‘w}vv}wv}w}w}w}w}‘}}}}ww}w}}vw}vvw}}w}wwwwwww}}ww}w}v{wwwvwvvvw}vvv×þñ{vvw{}wvvywwv{vvvvvvvv{w{vwwvvvvvuvvwvuvvwvvvvvvuuuvvvuvvuvuvvvuuvuvuuovuvvlouvouuuuuuuoltu˜üÙ{ovÆþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;óÿÿÿÿÿ÷Z    =qªõÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ777775575555755777777777555==7777777757557777775777777755777555575775555757ÓÓÿÿüÿÿÿþÿÿþÿÿÿþÿÿÿþýüþüþüþüþüùÕ}}}vvvvwwvvwv}}}ww}}}vvvvw}w}}vvvww}}w}w}ww}wvvvvv}}ww}w}}}}}}}}‘}v}v}‘‘w}}w}}}}w}‘w}}}‘‘}}}}}}}Ùþÿÿÿÿÿà‘}w}}}}}}}}}}‘}}}€‘‘}}}€}€‘‘}‘}}}}}}}}}}}}}}w}}}}‘}w}‘‘w}}}}wvvw}v}‘}}}}}}}}}}wvw{w}vw}www}vw}w}w}}}}ww}}vvwwwvv}}ww}{vvv×ÿòvuvv}}w}wwvvvv}{wuvvvvvvvvuvvv{vvvuvvvvvvuvyvvvvvvvuvvvvuvvuuuuuvvvuouuouvvuvvuoouuuuuvuuu›üÌvulÇþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿóY   =sªíÿÿþÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÓ557755577555555557775755575757555777557757557775777777757777757777755777577755755557557555757557555555557555555575555575575555755555555577755555555Ó×ÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿüüþüýüþüþüþúÕsw}vvvvwwvvvv}}wvw}wvvvw}}w}wwv}ww}}}}wvw}}}wwwww}}}}}}}}w}}}}}w}ww}}}w}}}}}w}}‘}}}}}}}}}}}×þÿÿÿÿÿà}}}‘}}‘}}w}}}}€}}}}€}}}}€}€€}‘}}}}}}}}}}}}}}}€}}}}}w}}}www}}}www}}w}w}}}v}}}w}wwww}wvvw}}w}w}wwvwwww}vvvw}w}{}wwwvvvwßÿëvvvvvwvwwwvuvwvwwvuwvvvwwvvvvvvvvvvv{vvvuuuvvvvvvuuuvvvvuvuvvuouvuuuuuuuouvuvuvuuouuuuvvuo›üÌwulÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !@óÿÿÿÿÿ÷Z  =s¥õÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ55575775557555557555775775557575575557775575777=755775775775575775757575775577775555555577755775557557575755557577557757555755755555555575757577755555555755ÓÓÿÿþÿÿÿÿþÿþÿþÿÿÿÿÿþüüþüýüþüüþõÕ}vwvvw}v}vv}}}vvvvvwvvw}wwvw}}}vwv}}}}vw}w}}}}}}vwv}}}}}w}}vw}}w}}}‘}}}ww}}}}w}}}w}}}}}}}}}w}w}}w}‘}}×þÿÿÿÿÿß‘}}‘}}}}}}‘‘‘}}‘}}}}€‘}}}}}}}}}‘}€}}}}}}€‘‘}‘‘}‘}}€}}w}}w}w}w}ww}w}}w}ww}}w}w}w}wwvvvw}wv}vwvwwvvwwvvwvvvwvw}Ùÿñ{v{vvvvvvvwwwvwvwwuvwvvvvvvvvvvuuvuvuvvuvvuuvuuuvvuvvvvuuuvvuvuuuvvvvvvuuutuuuuuluoooluvuužýÙuuCÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@òÿÿÿÿÿóZ!qªõÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5555755555575555555557575755755777577777557757757555=77777755777777777755557755557557555577755575555775557555555567557555555555755555555557775557755557555755Ó×ÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿüüþüþüþüþüüúÕ}pvvv}}vvvv}wvvwvvvvv}}wwvv}}}vww}w}ww}ww}}}vvw}w}}v}w}wwvw}}w}}}‘}ww}}}w}w}}w}}}}}}}}}}w}}}}w‘‘w×þÿÿÿÿÿà‘}}}w}‘€‘}}}}€}}}}€}}}}}}€}‘}}‘}‘‘}}}}‘}}}}‘€}}}ww}}}}}}w}w}}w}}}}}}}ww}}ww}}w}}}wwvwwvvwwwwvvvv{}v}wwwvwwwvvww{ßþèvvvvvw{vvvvvwvvvwvvvwwvuvv{vvvvvvvuuuvvvuvovvvuuvuvvuvvvuuvvuuvuuuvvuuuuuulluultouuuuuuuuuÆýÌwtlÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!@óÿÿÿÿÿ÷Y! qªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ55557555775555775757775557757775755575757577575$5577777777557777557777757777777757577755577555775755555555555777555555555755555555557555555557577555575ÓÓÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿþüüýüþüýýþüùÕ}vvvvvvvpvvv}vvv}}vv}}}}vvw}vw}}}}w}vvw}}}ww}vv}w‘www}}}}}}}}www}}}ww}}}}w}}}}}}}}w}}}}}}}}‘}}}}}Ùþÿÿÿÿÿ߀‘}}}}}‘‘}}}}}€‘}w}}}‘}‘}}}‘}}}}}‘}‘}}‘}}w}}}}}}}}w‘}w}}}}w}}wwwww}w}vwwwvww}wvvvwvvvvv}}w}}ww}www{vvvwvvwwwww}{vvvvvßÿñww}{vwvvuwvvvvvvv{vvvvuvwwuuuvvvuvvuvwvvuuvwvvvvvvuuuvvvvvvtluvuuuvuuouvvuouuouvvuuuuololÇýÇvoZ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z =sªõÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5555755577775855777555575557557755755555577577787!7755577575575577775757575555775577557557575575555555775755755555557555555775755777755755575555Ó×ÿÿÿÿÿÿþÿÿÿþÿþÿþÿÿüüþüýüýýüýüúÓŽsvv|vvvpvvvvvvvv}wvv}w}wwwvvwvw}ww}}}vv}w}}}}www}}w‘wwv}}}}w}{}vw}}www}}}}}}w}w}}}}w}}}w}‘}}‘}}×þÿÿÿÿÿà‘€‘}}}}}}}}}}€€}}}}‘}}‘}}‘€}}‘‘}}}‘v‘‘‘}}}}w}}}}}}}}}}}‘}}w}w}€‘}}ww}}}ww}}wwvww}wwwwww}w}wvwwww}wv}wwww}}vvw{}wvvwvwwvwwvwvvvàÿè{vv}wvwwuvvvvv{vvuvvwwvvuvvvvvuvwvuuvvvwvuvuvvvvuuvvuvvvuuuvuouuvuouuuvuuvvvulluvuuuvuououuÊýÇuuláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z !=qªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ75577755557557777577755577755$755775775775757777775757777775777757577557555557777777575555557777555757557575555757755555577555555555777757555575775575ÓÓþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþýüþüýüýüþüùÖ}ppvvppvv}}}vvv}vvvwwvvvvwvv}}vvvwvv}ww}ww}}vv}wwwv}}}}}vww}}}vv}}}}}‘}}w}}}}}w}}}}}€w}}w}}}}}×ýÿÿÿÿÿß™‘}w}}}‘}‘‘‘}}}}}‘‘‘}}}}}}}}}€}‘}‘}}}}}}}}}w}w}}}‘‘}}}}}}w}}}}}}w}w}}{w}}}}vwvvw}vw}}ww}www}}ww}vv{vvwwvvvw}{vvwwv{}w{vvvw{vvv}}{wwvßÿèvvvvw{vvvyvvvv}yvvvvvvvvvv{vvvvvyvvuvvvvuuvvyvvvuuuuvuuuuouuvuvuuuuvuvvvvuuuuuuvvulouuuuutoÌþÆutuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!;òÿÿÿÿÿóZ !sªõÿþÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ555575555775775755555557577555755575777577557757555757577575757577575777575577785775577777755775757557555755755775555577575555557775755777755555557575555Ó×ÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿüüýüýýüþýýý÷Õ}qvppppw}vvvvvvvvvvv}vvvv}wvwvvvwwvv}}}wvwwvvw}}}}}vv}ww}}}}}}vwww}ww}‘€}}}}w}}w}}w}‘v}}}}}}w}}}}}×þÿÿÿÿÿà‘‘}w}}}€}}‘}‘w}‘‘}}}}}‘}}‘‘}}}}}}€}w}}}w}}€€}}‘}}}}}w}}}}ww}ww}w}}‘}}www}wwwww}w}}ww}}}}}wwvv}}{}vw}}}wvwwwv}vvwww}|}vvv{wvvvv{}ww}wvßÿâv{vvwvwvuvvvvvvvwvvvuvvvv{vvvvuvvvvvvvvvvvuvvvvuluvuuuuouvvuvuuoouvuuvvuuultuvvultuuouuuuu×þuoo÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!;óÿÿÿÿÿ÷Z! !!q¬õÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ577555555577577555757555557557557578755775755755577777577777777777577777557777577757575775557575755555575757555557755757555557575555557555757555555555555ÓÓÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿþýüýüýüüýüüùÕqppppvv|vppvvv|vvpvvw}vvvvw}}www}}}}w}wwvww}vwwvwww}ww}v}}w}}wv}w}wwwv}}wv}}wvww}}}}v}}}}}}}}}}}Úþÿÿÿÿÿß}}}}}}}w}}w}}}}‘w}}w‘‘}}‘€}}€}}}}}w}}}}w}}}{}w}w}}w}wv{ww}}}www}}}}{vww}w}wwv}}}}{vw}{wwvwwvww}{v}vv}vww}}vvvvwvàÿè{vv{wvwvvvwvv{wuvvvvuvw{vvvvvuvvvvvuvvvuuuvvvvvvvuvvvuvwvvuuuvvouuuuuotuouuoouuuuuvvululuou×ÿÇuttúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y! pªõÿþÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5555575577575555557577577577777757757777557775577775777777757=75777777757577775777557777577577575755757555757557575555775555777555555577777555555555577575555755575555555557Ó×ÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿüüýüýüýýýýþú¬Žppppwpvvvpopvv}vpvvv}vvv}vv}vvvv}}}}}}wwv}}wvwvvwwvww}www}}ww}}ww}}}}wv}w}}ww}}w}}w}}}}w}}}}}}w}}}×þÿÿÿÿÿà}}}}}}}}}}}}}}}}‘}}}w}}‘‘‘‘}}‘€€w€v}}}}w}}}}}w}}}ww}}}}w}}}wwwwww}€}w}}w}}}{}w}ww}}ww{}vv{}wwv}w}wvvvwwwwwww}wvvvv}wwwvv{vvvèÿè{vv}vwvvvuwvvvvuvwyvvv{}vvvvuvvuvvuvvvuuvuvvuuvvv{vuvvvvvvuvvuuuouvuuuoltltluuuuuuvuuuluouußÿuouüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿóY!qªõÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5555557777575777557577777757577777755577777777757$777757777777777775575577575557755755755755577755575555557775757555777557ÓÓÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿþüüþüüüýüüüùÓŽqppvvpppvvpppvvpvvvvvvo}}}vvv}v}}vvwwwv}w}vww}}wwv}v}}vwwwv}}ww}w}}w}w}vvw}}wv}}}}}}}w}}}w}}}w}}}}}}}w}×ýÿÿÿÿÿà}‘}}}}}}}}w}}}}}}}ww}‘}}}{}}w}}}}}}w}}}}}}}}w}www}}}}}}w}www}}}}}ww}w}}www}}}wvv}}w}}{wv}wwwwvvw}wvvwwwwwvwwwwvwvw{vwvvvvww}{wwâÿõvvvvvvwwvvvv{vvwvvvvvwwvuvvvuvyvvwvvw{vvvvuvuuuuvvvuvvuuuuuuvuuouvuuuvvvvvvuvvvultluluuuuuoßþÆuu{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Z  =sªõÿÿþÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5557757775757577555575757577757757757777757777777877=7777777777755=7777577757555775555577575777555755555575755755555555555557555555575557555575555577Ó×ÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿüüþüüýýüýýþ÷ÓŽsppppp|ppvvpvppv|vpvvvv}}vvv}vw}wvvvwvvv}wvww}w}}}w}}v}vwww}}vv}}}ww}w}vwwwv‘wv}}}}}}ww}w}}}}}}}w}w}wwv×þÿÿÿÿÿà}}}‘}}}w}}}}ww}}}w}}}}}}}}www‘}}}v}}}w€}}}}}{}}}w}w}w}w}}}}}w}}ww}www}}wvw}ww}w}wvwvw}w}}w}wwwwvvw{}wwv{}w}{}w}wv{}}vwvv{}vwvvvwv}vwèÿõvvwvv{}wyvvvvvv{vvvvvvvvwwvvvvwwvvv{vvvvvvvuuuuvvvvuvuuoouuvuuvuuvuuvvvuuuuuvuvuooultuuoluußÿuu˜ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY !=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5755555575555575757557575557577757557757777757755777777777775577777757777557577777575557557755557555775555555575557555575755775557555557557757555755757555775755757577ÓÓÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþüüýüýüýüüüùÖ~ppvpvppopvvvppv}vpv}vpp}}pvvvvv}}vvvvvvv}}}}}wvvwwvvw}}}ww}}v}w}vw}w}}w}}}v}}}}w}w}}}}}wwv}}}}×ýÿÿÿÿÿßw}}}}w}}}ww}}}}}w‘}}}}}‘vw}w}}}w}}w}w}}w}}w}v}w}}w}}wv}}vw}w}wwww}}w}wvww}}wwvww}{w}}ww}}}}www}wvwwwwv}{vvvw}wvv{vv{wvvv}}èÿ÷†w{wvvvvv{vvvwvvvuvvyvvvvvuuvuvvuuuvuuv{vvuuvvvvuuuuuvvuvuvuuvvuuuuuuuuuuuvuuutluvutluvuuuoçÿÇuu›ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ! @óÿÿÿÿÿ÷Z    q¥íÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ557555577757557557555555775577557777575777575=777=577757=7757777775777777775755555575557557555575775777755575577755575557555555557555555577755757555557555577Ó×ÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿüüüþüüýüýýþ÷ÓŽppvvppppppvvpppvv|}pvvpvvvpvv}v}}vvvvvvvw}w}w}www}wvvw}}}w}v}}w}vw}}}}}€}w}}}}w}w}}w}w}}}}wwwww}}}×þÿÿÿÿÿà}}ww}‘w}}}}}}}{}}}}}}}‘}}}‘}}}}}}‘}w}}}w}}}}}}w}}}}}}w}}}w‘}w}}w}wv}www}w}}wwwww}wwvwww}v{}wwwww}{}w}vwwwwwww}ww}www}}wvww}vvvw}vvv}wvwwvvv{wèÿúvwvwvvvvv}v{vvwvvvuvwvvvvuvvvuvuvuuuouvwvuuvvvvuuvuuuvvuvwvuovuoluvvuuulluvuluouuuuluuuuuuuèÿÆvuÇþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y! !  =qªõÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ55575557755575557555757557575775575757775777775577777557577777767777777775777577775575577557777557575555575555555755557577557555555555575575755755557555ÓÓÿýÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþüüýüýüýüüüùÕqoopppppvpppppopvvvppppppppvpvvvvvvvv}vvvvvwvvvww}}}}}}wvvwvv}}vww}}}w}}}wvv}wvwv}}}}}w}}w}}}wvv}w}}}}Ùþÿÿÿÿÿß}}}}w‘‘}}}}}}}}}}}‘}w‘}}}w}}}}}}}}}}}}}}}}}}www}}}}w‘w}}v}w}}w}w}w}ww}}}w}www}}}wwwwwwvvw}}wwvv}{v}w}vvvwww}{vvvvww}{vwvvw}}v{}vvvèÿÿ˜vvvv{w{vvvvvvvwvvvuvvvvvuvvvvvvvvvvvvuvvuvvvuuvuvvvuvvuuuvvouuuluuvvvvuluvuuuuuuvuuvuuuulluõÿÇulßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!@óÿÿÿÿÿóZ !sªõÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75557755778775555557777757775577777577775578757757777777557757777777$777777757777777757575775777555755555555575777578555755775577555557555555757555555775755775575555775Ó×ÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿüüþüüýüüýýüú¬Žppppppoppppvvppppvvpppppppvvvvvpvvpp}}v|ppw}vvvv}}}}wwwwvv}vv}vvv}}ww}wwv}}}wvvvwww}vwwww}}www}}}}}}}×þÿÿÿÿÿà}}ww}w‘}}}‘}}w€}ww}}‘w}‘wwvw‘‘}w}}}}{}}}}ww}w}w}w}}}}}w}}www}}ww}}‘wvwwwwwww}w}w}}wwwwvv}{}wvw}w}}w}wwvvwwwvwvvvvww}}{vv{}vw}vvvñÿÿÓ{wvvv}}vvvuvvvvvvvuvvvuuvuyv{wvvvvvvuuuuvvvvuuvuvuuvvvvuuuuuuuluuvvuvvuluvuuvuvvuCuuvluultu÷ÿÇuuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Z ! !$s­õÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5755755555575577557575775777777775777575$75777777777577777757777777=77777777777777775755775777757755575555577577755555555557757557557755557557575557575557775555555ÓÓÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþüüþüüýüýüü÷ÖŽ}v|pppppvpppvpppppvvvpoppv}}|vpppppv|vv}vp}}vvvvw}vv}vv}wwwww}}vv}}vv}vw}}}w}w}}}}}wwww}}}}w}}}}}w}www}×ýÿÿÿÿÿà‘}}}}}w}}w‘w}w‘}}}w}w}}}}}w}}w}}}}}}}w}€}}}}w}}}www}www}}}}}w}}{}}wwwwv}w}wwwwvw}wwv}}www}}}wwwvvvwvvwwvw}{wwwvwwvw}{vvvvvvwvvvvv{vvv}èÿÿ÷מ˜vvv{vuvuvvvvyvvvvvvuuuuvvvvvuvvuvvuvvvyuvuuvvvuvuuuuuuuuuvvvuuuuutuuuuuuuuuutuuuuuullluv÷ÿÌv{úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;óÿÿÿÿÿ÷Z  !qªíÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿèÓ557777575575555757777775777577757757577575777775775777755775777757=777777777777775557=55777777775557555755557555755775557555555575775557557555555575575555575575555555557557575555555555777555575555555555755557775555555ÓØÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿüüüüüýüýüýýú¬s}}vpvvppvpppppvvvpppppppp}}pppvpppvvv}}pvv}}vvv}vw}vvv}wv}}}w}vvvvvwww}vww}}w}vww}w}}{}}}v}}w}}}}}{×þÿÿÿÿÿà}}}}}}w}}}www}}}‘‘w}w‘{}}w}w‘}}}ww}w}}w}}}‘‘}}}}}www}ww}w}}}}w}}vw}}}ww}wvvwwwwwvwv}v{wvw}ww}wvwwvvvwvvw}w}wv{}ww{}vvvvvwwvvvvuvwvvvvvòÿÿÿþúõèßÊž˜{vuvvuyvwvyvvvuvuuuuvuvvyuuvuvvuvvuuuvvyuuvuuuvvuoluvvvvuuuuotuuuuuuouultuulluluuuzúÿßvÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–!@òÿÿÿÿÿ÷Z!   pªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÓ5755555557555555557557555575757555777755775777577577577$77757757777755777755=777755557777777775777777775775557757575575755555755557555757557575555557555557777555575555557755755755555557775555555777555555557555775575777777755555ÓÓÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþüýýüüüþüüüùÓspvpppppppppppvpppppvvppv|}vpp}pvp}vppv|v}pvpv|vpv}}vvv}wvv}}}}w}}}ww}w}}wv}}ww}vv}}w}w}w}}}ww}}}}w}ww×ýÿÿÿÿÿàwww}w}}}}}w}{w}{}}}}w}ww‘}w}}}}}w}w}w}wv‘w}{}}}ww}w}w}w}w}vww}}}wv}wwwwvwwwwvw}wvv}vvvvw}{vvvww{wwvvww{vvvvvvvvwvvvvvvw{wvv}{vvvvvñÿÿÿÿÿÿÿþýúõñèß×›vvv{vvuvvvvvvvvvuuvvvvuuvuuvvvvuuvuuuouvuuvuvuuuuuvuuuuvuuuoooluuuluuttltuvu{úÿòÇ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ@òÿÿÿÿÿóY  qªõÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿèÓ77577755557575557775755775757777775777777=77557575775577577777777777757777775777757757777757557757557577577777775577777755575755577557555755775775575575555777757557555775775555755775577757555557775755555775575557557775577577577555555775555775555775557577Ö×ÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿüüüüüýýüüþü÷ÓŽspppppvppppppppppppp|}ppp}|ppvvppvpvppvvv}vpp}}pp|v|v|v}v}wv}}}v}}v}vw}}vw}vvwvvw}vwww}}w}}}}wwwv}}×þÿÿÿÿÿàv}}w}ww}}w}w}}}w}}€‘}}}}w}w‘}}}}}}}w}}}}}}}}w}}wwww}}w}}w}w}}www}}{}w}{vw}}}vw}www}vww}w}}wvvwww}w}wwvvwwwvw}w}www{}}wvvwvvvwvvwvv{}vvvvvv}}vvvvvvvvž×æñ÷ýÿÿÿÿÿÿÿÿÿü÷èžv}}vvuv{vvvvvuuuuvv{vvuuuvvvuuuuvuoltuvuuvvvuuuuuvuluvuvultluuluvuuulllluuu˜üÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y    =qªõÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿæÓ55557557577775757777757755775757755777755575757575757577577755777777557577777757777777775557775757577875577757577755777775755775755755557555555775557577775755757575575575575777755755755575555755557777555575555757555555555755755575775555557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüýüüüýüüüõÕqpppvvppppvppppppppv|ppppppvvppv}}pppppp|vppppppv}vpvv|vv}vvv}vvv}}w}vvwvw}}}vvw}}}}v}ww}v}}ww}w}w}w}www}}}}×þÿÿÿÿÿßww}wwww}}}}}}}}w}}}w}}}}}}w}w}v}}}}}ww}ww}w}www}}}w}}}w}}{}}}}}}ww}wvwvv}ww}wwwwwwvwv}{}{vvvvwwwwvvwww{vvwvvw}{vvvvvvvvv{w}{uvwwvvvvv{˜™žÇ×è÷ÿÿÿÿÿÿÿÿúÌ{vvvuvvvw{vvuvvuvvvvvvvuvvuuvuvvvvuuuvuuuuuuuvvuuuvuuuuuuuuvuuluvuuutuCuuuýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿóZ   7}ªõÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÔ55755577555757557557575575557577575775777757777575777777777777557777777775777575775777777757755777777777555775777777775757575755755775577775555575555555555577575555555557575577555555577555555775557557575755777555777557575777557775555577Ó×ÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿüüüþüüþüýýýúÕsolpp|vpopppvpppppppvppppppv|pp}}vppppv}pppppppp}ppppv}}vvvppvv}wv}}}vv}vv}}wvw}}w}ww}vvwvw}}}wwwvw}}www}}w{}Ùþÿÿÿÿÿà{}ww}w}}w}w}‘}}ww}w}w}w}www}}w}wv}w}}}}}}}}}w}www}‘wvw}www}}w}wvwv}}}‘}www}wwvvwv}www}wwwwvvwvw{}}}vwwvww}wwwvvwvv}vvvvwvvvvvv{w{}}wvvv{wwwvvuuvvv{wv{›ž×ñÿÿÿÿÿÿý×vvuvuvw{|vvvvvvvvvyv{vvvvvuuuuvvuvuvuuuvulouuvuuuvvuluuvuvvvuuulluuulltu{ßþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!@óÿÿÿÿÿ÷Z!   !! =wªõÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿæÓ7557575575577577557575775577557755777775577557755757777757577557777777777777777777775778755777777757757777575575775777555575755575555755557555555555557775557557777555557775557575557555555555775755755555757755775575755577555575755575555557575575ÓÓþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕ}pppppppvpppppoppv|vvppvvppp||vpvppppv||ppppvvppv|pvvpp|vvvpv|p}}vvv}vv}}wwvvww}}vv}}}}w}}}}w}}w}}}}}}{}}}}}}}}}×ýÿÿÿÿÿà}}}w}}}ww}w}}w}www}}}w}}w}}w}ww}}}}}{}}{}}}}w}ww}}w}w}}www{}‘}w}}w}}}{}w}ww}{vv}{}wvww}wv{}{wvwwvw}}}ww}vv{www}w}{wvvwww{vvvy|yvvvwvvvv{vvvvvww{w{vvvvwwvvvvvw{˜Çèÿÿÿÿÿývvvvvvvvuuvuvuvvuuvvvuvuvvvvvuvuvuuuuvuuuuuuuvuuuuullvultuuuvy{”˜›ÇÇÌßòýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Y!=qªõÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7557755557555557757555775755777587575775775575757777=7555777577777577575=7775777777757757778577775577757757557757557775777575775555755755755577557557755577555755555575575557757575555575757775575757755575557557577757757775555757555775577575557577575755577ÓÙÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿüüüüþüüþüýý÷ÓŽsppppopvvvppppoppp|v||v|pppv}|pppp}}}}}ppvp|prvp}vppppp}ppvvvvv}vvpvvvv}}}vpv}}}}wvvw}wv}}}wwvvvww}}}wwww‘}}wv×þÿÿÿÿÿà‘‘ww}ww}wv}vvwwww}}}w}ww}w}wvw}w‘w}}}}}}ww}ww}w}www{}}ww}}}www€www}wwww}{}ww}wvwvv}v}}vwwwvw}}}}wwww}}vwwwvwwvv}}wwv{}wwvvvvwvv}}}vvvvvw{}wwvvvvvvvvvvvw}vwvwwvvwvv{vw{vvv˜žòÿÿÿÿ÷{uvvuuuuv{vuuvuuuuuuuuvvv{wvvuvuuuvvvvllvvvuouullultuuultty×òó÷÷÷úýüüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY   =q¥õÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿæÓ57577755555577757575777755757777755777755777577775777775757557775777777555757757777777575777577777777757777575757777757557555755755555757557555577755777577575575577555775557577555555555575555575555777757775757757577557557555575775557557757577757755555757775555575555575557755575777755ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþüüýüüüüüüùÕppppppppppppppppppvpvpppppppvvppvppppppvvvv|vvppp}|pppv}vprvv}v|v}vpv|w}}v}vvvvvw}}vv}}}}w}}w}}}}}}v}}v}}w}wv}×ýÿÿÿÿÿß}w}}}}}}w}www}}}}w}w}}}}w}ww}}}}}ww}}}}}}}}}}wwv}}ww}vw}ww}}}}}www}wv}w}wwwvv{w}wvw}}wvvw}wwwwwwwwvw}wvw}}{vvwwww{vwv{vvw}vvv{w{w{vvwyvvv}{vvwvyvwwvvvuvvvvvvv˜àÿÿÿÿâv{vuvuuvvvuvvuuvuvvvuuuvvvvuuuuuvvuvuutuuvuuuuuuuuuouuuuouÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y !  =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿè×55575757555575777777775557757575577775575757777775775557777777585755757757577577757777757757775577577557777577577775777577557785555755557755555777577555575575755575557565575775555555555577575575577755577555775555557577577555757557755555577757755755555555575557575757575557577575557Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüþüüþü÷ÕŸsppvvvolpppvvpvvppoppoppopvppppvppppppp}}}v|ppppv|v|}p}}pv|v}}ppv|v}}|}}vpv}v}}vvvvv}}}}}vw}w}}w}www}}w}}vvw}}vw×þÿÿÿÿÿàwvw}}wwvww}‘}w}w}}w}vwwv}}ww}vv}}}www}}wwwwww}wwww}vv}}wvvw}wwwwvwwvwvvwvvvwwvvvv}wvw}w{}vvv{}wvwwww}vwww{}wvv}}w{}wvvv{}}wwvvvvvv}}vvv{vvuvvvw}{wvwwvuuuvvw{vvvv{×ÿÿÿþ›vwwwvuvuuvw{}vuvvuuuuvutuuuuuuvvuvuuuuvvvuuuuuuvvoluuuuulÊüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !@óÿÿÿÿÿóY      q¥õÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿàÔ555575577555775555777575557575775775775777777777757555777557777757757777775777577757777775=777775777777777777755777757757575575757757557577577555577557555777755757555775755577557775555755755755555777577555755757755555555557575575755557777555557577555557577577755757555557777555555555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüýüüüüüü÷Õ}opppppppplpppvpppoppppppp|vpppppppp|pppppppvvpppv|ppppvv}vppvpvpvp}}pp}}pp|}}}vv|v}}vv}}ww}}vvv}}}vw}}v}}w}ww}ww}}×ýÿÿÿÿÿß}w}w}}w}}}}vw}ww}w}}w}vww}}www}w}ww}}ww}w}}}ww}}}}w}w}}w}wwwwwwwww}w}}}{}wvvww}{w}wwwv}wwwww}}wwwwwwwwww}wwvv{vv{www}vvw}wwwvvvv{vvwwwwvwvvvvvvwvvvvvvvvvvvvvvvvvvvv{ÊÿÿÿõvvvvuvvuvvvvvwuuvuvvvvuouuuluuuuuvvuuuuuuuuuuluvvuuuuuuluáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y !  !qªõÿÿÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ557555755557575775777775777757757577777577777757775777775777775775=7777777777577757577777777577777557755555577777777577557577755555577575777555557557575555575575575555557755755757775557555555575777575777555575577555777775557757575555575555577757755755575575Ó×ÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿüüüüüüýüþüüú¬sqooppopvplloopppp|pvv|ppppppvpvppppp}vppppopv||pp||vv|pp|}popv}ppp}}pppppppvvvvpv|}|vpvv}}}}vvpvw}vvvw}wwv}}}}}}}}}}×þÿÿÿÿÿà{}w}}w}wvww}}www}w}ww}wwww}ww}wwww}}w}}wwwwv}www}wwwv}wwwvww{vv}wwvwvw}}vw}}}vvv}}vw}w{}ww}wwwvwwwvw}wvvwvwwvwv}vvvvv{vvwww{www{wvwwww{}{vvvvvvuuvyvyvvvvw{vvuuvv{àÿÿÿ›uuuuvvuvvuuvuuvvvvuuuuuvuouuuuvvvuuoouuouvuuuvuuvvvuuu›÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY =}ªõÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿàÓ75755555555875555757757577777777775557777575777775757777577777557777777777757775577755777577777877775777787777775757555575777777577577755577777555557557557575555775555555577575575777555575555777555557775555555577577557555775557575555577557585575775557755775555575755ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüýüüüüýüõÕppppppppppvpppppvpppvppppppppppppppp}vpppppppp|vvpppp}vpp}pppp|pp}p|pppp}p}ppvv|}vvvvv}vpvp}}}vv}}vv}}v}vwv}vwvvw}}}×þÿÿÿÿÿßw}}}}w}w}}w}}}}w}ww}{}w‘}}}}}}}w}ww}{}}}}}}w}wwww}}wwwwwww}w}w}}}}wwww{vwwwww}vw}{vv}wwvw}}}wvw}}{vw}{}wwv{vvvv}{wwvv}{vvvwwwwwwvvwvvvvv}wvvwvwwvvvvuvuvvvuvvwvvvvvuvvvvvuvvv˜õÿÿòuvuvv{vuuvvuuuuuvuvuuuvuvuouvuuuuuuuuuvuuuuuuuuuuuuuuou×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;óÿÿÿÿÿ÷Z! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿèÓ5775575575555757575555755775757777575757777757757757777577=577775577787557777577757777777777=5777777757775777777575755577557555557577577755557775577755775555557555777777557575555557757577577575557577775555755555757777555787755777575575775555755775557775557555577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüýüüüüúÕspvppllllp|vvppvpppppplpppppppppp}|vvvpp}vppvppv|pppv}}v||vppprpv|p|}}}}vppp}}p}}pvpp}}}vpv}}}}}}vv}}}}}v}vvvw}}vvvvvw×þÿÿÿÿÿàw}wwwwwwvww}}}ww}}}wwvw}}vvvv}}ww}}}}}ww}{}ww}}wwwwwwwvw}ww}}‘}www}}vwvw}wvv}vww}wvvv{}}ww}{vw}w}vvwwvwwww}}wvvyvvwvvwwvww{}{}vwwwvvvvvuvvuuvwvvvvvvvvvv{wvvv{vvvv{vuvvuuyv{vvvžÿÿþ{vuuuvwvuvuuvvuuvuvvvwvvuvuouvuuuluvvuuuuuuuuuuuuuuuou{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y  ! !!o¥õÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿàÓ77575777557777777777777777777775777575675757777577775577777777777757577577577777775775777577775775757777575777777775557755785755775557755575555555757557777577575575777557755577755555557575555557757557557775575557755577755577755775777755775757557755577757557775775575555755557757775657555755555557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüýüüþüüüõÕpvvplpppppwppplpvpppppopppvpppppppvvppppv|vvppppppppppvpvvp|pvvpp|v|vrp|}vvpprpp}||vvv}v|vpvv}}}|vvvvvv}|v}wvv}wv}}vw}×ýÿÿÿÿÿßvww}}}w}}w}}www}ww}}}}}w}wwwwvvwwwww}}w}{}}w}w}}}w}w}w}www}{w}{wv}}}vw}vvwwwwwwvww}vww}}w}{v}wvw}}wwww{vvwwwwwwwwvwvv}}vvvvvvw{vvvvvwvvvvvw{uv{vvvvwvvvvv}{vvvvvvvvvvvwvuvv{õÿÿ×vvvvvvuuvvvuvuvuuuvvvvuuuuuvuuuuuuuvvouuuuuuuluuuoluuÊüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ9óÿÿÿÿÿ÷Y   !qªõÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ77575555577777557575775777775557757575757557577777777777557757777777775755777577777575777777757757777777757777777775755757755757755775757755777775575777557775555555757557577755777555755757755575755777575555555757755775575557577575775755755555577575777755555777757757555555555557555755755575577555577757775557555755577757557557Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüú¬Žppppppppopppppopppoopvppv}vpppppppppppppppppp}}vpp}p}ppppppp|ppppvppppv|}p}vpv}}v|ppp|pp}}ppvv|vvv||v|vvvvvvvvv|v}vv}vÓþÿÿÿÿÿßvvvv}}ww}}}w}wwwwww{}www}ww}ww}}vw‘v}v}}ww}w}vvvvwwwwww}}wwwwww€wwwvw}vwwvvwvw}wwwwvvvvvw{}}w{}wvvvvww}{wvvvv{wvvvv{vvvw{}{wvvv{}vvv{vvw{{vvyvv{}wvvuuvvvywvvuuv{wÊÿÿõvuuuuuuuvvvuuvuuuuuuuulluvuuouwvuvuuuulllouuuouuuZluçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ! ;òÿÿÿÿÿóY !  !!qªõÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿþæÓ55555557575555557577575777777775577555755755775777577777777777577577577777757777777777=57777775777787757775777777775757577557577575557575755557557557757575577557777755557575575757575755575577577775575575557577557557577777777755555555777775555755777757755557557755555555575555755555557557755557577777777557555757575557577557575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüþüüùÕsppvppoopppppppppppppppvpvppppppvppppppvvpppppvv|ppppp|ppppppvvp|v||ppvvv|v|ppp}pp}||p||vvvpv}vvvpv}v}vv|v|||vv}}|vvvv}×ýÿÿÿÿÿß}}vw}}}}}}w}v}}}wvw}}ww}}}}w}ww}w}}w}}{}}}{}www}}{}w}}}www}}w}}}w}{www}w}}ww}ww}w}wvwwv}{}{}wwvvvw{w}wwwwwwwwvw}wwwvwv{wwvv{vvvwwv{vvvwvvvvv}{vvvwwvv{vvvwvvvvvvvvvwvvuw}uvvvvuvuvvuvvuvvvvv{þÿý{vvuvvuuvvuvuuvvuuuvuuvuuuuuuuvvuouvuuuuuouuuluuuouu÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;óÿÿÿÿÿ÷Y ! =qªõÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ75775557757757757757757555575757577775757775777777757577757775575777775777577757777557777557777757777757775777557755575775755555775575755557775575575757557755555575555555755775557557775577555557557775555757557777557757557577555555757557575755575557577555575755575577757557757757775757577755757555775755755557577557557757755555755777555775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷¬sqpplpploppppppoopvppppp|vplp}}}v|vpppopppp|pvppppppv|pppv|vppvv|||ppv}ppp|ppv}|pp}}}vvpp}ppr}pp|pppvvv|}}}}pppv}}}v|}}×þÿÿÿÿÿß}wv}wv}v}}ww}w}}wvv}}vwwwww}}vvw}wvv}}}ww}www}w}}wvwww}wvvw}www{}}}vvvw{ww}wvwvvvww}wwv}wvvvvwvvwwvwwwwvv{vvw}wwwvw}wvw}wwvv{}wv{vvw}}vv{vvwvwvvvw}wwy}vvvvuvwvvvvuvwwvvvwvvuuw{vluvuuuuuuuvõÿÿ˜vuvwvvvvvuuuvvvvvvwuuvvvuuuuuuuutuuuuuuuuuuuCluollußÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóY   !!pªõÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿÿæÓ575777555575757577757775777777775777757577755777577775577775777755777757777777757777777757775777777777755576577775775575577577757557577775755575755755777577755757755777777555577577555555575775755575575755777557557557577555555755755757757575775557557557755575577775757555555775555555555755755557755775755577757555757557577757775557755557555575777775577575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüþüüüüüùÓsppoppopppppppppppopvpppppopvvppvpvvppppppvpvvppppp}ppp}pppppvppvppppvrpp||ppv}ppv}pvrvp}ppv}|pv|v|vvv|vpp}}|vwp}}pv}}Óýÿÿÿÿÿß}wv}v}}}w}v}w}ww}}ww}}ww}}}ww}}}}}w}}v}vwv}}w}wwwwwwww}}w}}w}w}}}wwwv}w}}}wwww}w}}{w}ww{wv}{v{w}vw}vw{vvvwvvwwvwwwvww{wwv}{wvv}}{wvvvvvwvvw}yvw{w}vvvvvvvvwvvvv{vyvuvvvvv{vvvvvvvv{vvvuvwvuvvvvvuvuuvßÿÿÇvuu{vuvuuuuvyuuuuvvuuuvuuuvuuuuuuuuuuuouluuuuotuuuuèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ9óÿÿÿÿÿ÷Y   qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ55757577775757577775577775575777777575777757777775777777557775777757577777777777577777577775577575777757775775777777755777757577775777775777775777557557557575557757557775755555557557775755777577555577775755557575577775577575757777755775777575757555577555557575555575555755577775755557757557575757557575555577775575577557555755775557755555555557775555757575775557××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüþü÷Ópppppopopppvvppppppppoloppplppolppppov|vpopp}pppppp}ppp|p|vpp}}vppvpppvvpvvpp}pppp}|v}}vpppp}|vp|v||||}|ppv|}}}}}}ppvpÓýÿÿÿÿÿàvvv}}v|vvvvv}}wvv}}}}w}}}}w}vvvvwvw}vv}‘w}wv}‘‘wwwwww}wvww}wwwww}{}vvw}vww}}}}w}}}{vvvvv}wwv{}vwww}wwwvvvwvvv{vvvwwvvvww{}}wwvvvv{vwvvv{vvvvvwvvy{vvvuvvvvvvwwvvuvvvvvuuuvvvuuvv{vvu{vvvvwvÌÿÿÙuuuvvvuuuuuuvvuuuvuuuvuuluvvvvvvuoluuvuuuoouuvvuuu˜óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y!!  ! $wªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿÿÿàÓ55555555757755757557577757777757577775757777777777775757777777577775557775755$77775=7775777757777777=775777575777777777577577757777755777575777577577757755775577577757757575575577777755757575575577555557757757577557755757577557777555555557575757557577755575557757755555755575555757577557557557775575557557575777777555755557755575555557757557756555757775755575555757557557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüù¬Žsllppppplpppvpopppvpopppppop}pppppppppvvpppp|vppvpvvppppp|ppp}|ppvppppp|vvrpvpp|pv}vpv}vpppvv|v|pvv|pp}}vvppv|vpvv|||vÓýÿÿÿÿÿà|vvv}|vv}vvv}}w}vww}v}}}vv}}}}www}wv}}ww}}ww}}v{}}}v}w}vw}{}wv}v{}w}}ww}v}{wwwwwwvw}}}}vw}ww}vwww}ww}w{wwv{vvv}{vvw}wvw}{vvvwwv}}vvwyvvvv}vvwvvv|{vwyvv{vvvvvwwyvvvvwuvvvw{vvvvvvvvvuvvuvvuvvvvuvwvvvuvv›ÿÿßvvvuvvvuuvuuuvuuuuuuuuuuuuuuvuuuuuuuouuouutloutlooÇúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@óÿÿÿÿÿóY   !q­õÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿèÓ75557555557557577777777777577577777777577777575777557577777777775577777757757776=57777777777775575757777777557577775777757775757577777577755555757777775557755555755776575557775557775757755775555757775755555775755575775577755757555577577555775557575775775555755555755557555777775757755557755555757757775557575575577557775757755575777775555775757755575775775757775555757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüþüü÷Õ}pllopvpllooplllppppppppppppv|pvvvppppppvvvpv}vppvv}pppp}}pp}volp}}}pp|vpp}vppppv|pppp|pp}}}pppp|}pvpp|vp}}}}pppp}|ppvÓýÿÿÿÿÿßwppp|}}}}}}|}}}v}}}}}}}}}vw}ww}w}‘}wv}}}w}}vw‘w}wvwwvv}www}}w}ww}ww‘}}vvwwvvv{vwwwvv}}wv}wvvwwwwvvvw}ww}vvvw{vvww}vvvw}wwvvwv}vwwv}wvvv}{vv{}vvv{vvvv{}vvvv{vw}}wvvvvvvvvwvvvvw{wvvyv}w{vvuvyw{w{vvvvuuuvvuuvvvvuuuu˜ÿÿèvvuuuuuuuuuultuuuuvuuluvuoltuuluuvvuuoouuvvulllCltÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!;òÿÿÿÿÿ÷Z!!   pªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿàÔ575577575577755755777557775775777775777757577777575777577778777777777777777775755777777757577775777$7757777775777777575575777755775555755557557577757575755575757577755777557587555575775557575757777555557577557557757577577775575555555775555555575557577577775755555755757777555775555577775555577577557555777757877757775775557755755575777557755577577577557775777555555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕpppopppooolpppppopppvpppppppvvpppp|vvpppvpvvppvvpppvpppppvp}|pppp}}pvvvppvvvpppp}ppp|p|v|ppp|ppp||pppp}}vrpp}}ppv}vpvvÓýÿÿÿÿÿà}pv|v|vv}}}v|}|pvv}€}}v}}v}vv|vw}}}}wvvv}wv}}w}w}}w}}wwwvww}w}w}w}ww}w}}{wvw}v}ww}wwwvw}{}{w}{}w{w}w{wwww}v}{ww}}}{vv}{vvvvvw}vv{wvwwv{vvvvvwvw{vvvwvwwwvyvvvvwv{vv{vvvv{vyvvv{vvvwyvvvv{wwwvyvvvvvvvvyvvuvuvvv{vuuvvouv›ÿÿèuvuvuuuuvuuuuuuvvuvuluouvuloouuooulouulloouullloCC×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!;óÿÿÿÿÿóZ  $qªõÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿèÓ77755757757757555757577577777575777577577777777=57777557577777777777777757775777777777775775757777757777557775775577775777757757755577557775777755555555775575755555775755557775757755755757777755755577557557575575757577855755775555757577577557555757755757555757757755557577757555555577555577575757777777755575555577555555755555785775777577575557575575757757755777775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüúÕŽqpppoopppoop|vpoppolpolppppplllploppppollpp}pppvvpppppplp||vpp|}||pp|||p}}}pv|||vppv}|v}}|vvpv}}}|ppp|}|pppv||p}}ppv}}×ýÿÿÿÿÿß}v}pv|vpp}}wvppppppvvppv}vvpv|}}vvvv}}}vvv}vv}vvvvvwww}}}}}w}w}}}}}vw}wwwvvvwwvvw}www}}}ww}wvv}vw}}}}ww}ww}}}}wvvvv{}}wwvv{}vvvvvvvv}www}}}wwv{}wvv{w{}}wwvvvvvv{}vvvuvvvvvvvvvvvvvvvuvwvvuuvuuuvvuuuuvuvuuvvvuuvžÿÿèuvw{vuvvvvvvvvvuuvulluluvvuuuoullCllullulClllluullßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y !!=s¬ùÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿþÿàÓ775575555757577575555777777757777575757777777577777777777777777=7777775775777777777577577777575777575775=7775775777757757557777777577557777557575557575577777755757755757755577775575775557577577577757577757555755557775557555557557577575775577555557557775755555775757777577575575577757575557575557585555775755775757555575755777777757775575777ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕ}opolopppoooppppvpoolppppppplplovppppppplppvvppv|vppppppp}vppop}vop}|ppvv|}ppv}ppppp}|pv}vpp|pv}pp|vpp|v|vv|ppp}|pprvvÓþÿÿÿÿÿÙ}p}|v|vpp|p}}pwpp|p}ppvp}|v|}vvv|v}vv}vv}vpv}w}w}vvv}w}}wv}}vw}vw}ww}wv}wv}}wwww}}wv}{ww}w}{w}ww}vvwww}wwwvwwwwwv{w}ww}vwvwww}{v}wv{v}{wvvvvwwvw}{wvwvvvv}{wv}w}v{vwvwvvuvvv{vvvvvvvuvvvwyvuvvvvuvyvvvvvuvuuvvvwvuvvvuuuvvuuÇÿÿ×uvvvuouvvuuvvvvuouullulouulllloullllluClulClullllCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y   sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿèÓ575575755555557775757577777777777777=5555777777575577777575557577777577577577777777777577777777777777755577777777577755557777577777757557757775777555557555555575757777555777757755557757755775755557775577777777755775577775757775757777575575777557575757557577575775557577557555757557555755755757557777575577557757555575557577575775755777555775777575555755575577755575577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüýú¬soolpvolpvppllppvppvppooopvvvvppv}vpp|vvpppppppplppppopppvolppv}ppp}|pppppppp}}pp}ppvpp||pp|}}|pp}||vpppvppppv}pp}}vppÊýÿÿÿÿÿÙvvp}}}pp}pppppv}}}}v}}}ppppv}}p}}v|}}vv}~}v}}v}vvvvv}}}}vw}}v}}vvvvvw}€}v}}}wv}}}vv}vvw}w}vvwvv}}wvwww}}wwwwwvwwvw}vvvv{vwwvvvvw{}}wvvwv}{}{}wvyvvvvuwwwvvvuvvvvvvvvvvv{vvv{w}wvv{{wvvvyvyvuvvuvvuuvuvywvvvouv{vuvwvuvuuuvvÌÿÿÇuvuluuuuuoouolulluvvuuvuulCuvvvuuutltllluvlCllCCClçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿóZ  ! q¥õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿþÿÿæÓ557775575575577777777577777757777577775757775755775777577777775=777775777775577777577757777777777775577757777757577775755757755755555577555557777557555755557557557557755557757577775775575775575555555555555757775757557555757555575755755575755575777555557577555757755777557757757757555777575755575555757557775555575557575575755555775555577775757557755575557555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕpooopvplppppplopvppppooopppp}vplpvppvvvplopppvpopppvpppppoppppvvppvpvvpppppv}pvppvpp|vv|pppp}||v|vpv}|pppppppppp|}}}poÓýÿÿÿÿÿßwpv}|p|pv}v|ppp}}vvpv}|ppv}pppv}}vp}}|vv}}p}vvvppv}p}}v}vv}}}vwwvvvv}}}}}vvw}vw}}}vvwwwvw}}vw}ww}}w}}vvv}}wvvw}wvvvwvvwvwvwwvvvvw{vwvw}vvwwwwwvwwv}vvw}wvvvvvw}{vvvvvvvwvvvvvvvvvvv}{wv}vvvyvvwvvwvuvuvvvvvuvvvvuvvuuuuv{vuvuu}ulovuvàÿÿ˜uvuoouvoollotolulllulovolllouulolllllllllllCllllCláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ ;òÿÿÿÿÿ÷Z!   !  !!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ555557575777757555575777577577777757777757757777777777777777575775777557777777775777777777775777575575777757777575757777777777757577575755577755777755775555575755757775557555755555575755555577775757577575775577755557575555575775555555755555575755557777557577557555555775755575777785775575577557555757775557577575775557557555577555755555755555557557555575757855757555577575755777557775777777577555557555557557575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÕŽsppollpollloopololllpvpplpoppolppplppplpppvppvpoppv}vv|}vp}pppppppppop|vvpp}}ppppp}|pppppp}}}}p}pppp|}}|}}|}}|pprpppppÓýÿÿÿÿÿÙwp}}ppp|}}p}}p}}|p}pp}|v}}}vvpp|}ppp}v}vpppp}|}}}}}}}vvpp}}vp||v|}vv}vvw}}}vvw}}w}}}}}w}}wvvv}}vvvvvvwvw}vv}vvvvww}vwvwvwww}vwvw{}wwwwvuvwwvvw}vvvw{wvvvwwvuvvvvwwwvvvuvvvvvv{}vuuvw}{vuvvvvvvvvvvwvvvvv{vuuvvv{}vuvovvoluuuvuovuuvúÿÿ{lvvouvvvvuluvvuoolllllllluololllllllllllCCCllCllCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y  !=qªõÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿþÿþÿÿþÿÿþÿþæÓ5775575557575755755757777577778575777777777777577777777575=777777777777777777775557777755757777775775777757777777777755575755575757557557575575557555757577777775557577757775755555755557557575575757757555775755575575755777757555575777577557787555755577755557557755557575775555775555577575555777555757557755577555575555777555575575557555557777775755755755557575757557777575777575577555575775755757757775757557577755755777575755775577575575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüù¬Ž}llloopllloplpopppllpppppopppplpvpploooppppppppppppvvpp|vp}pp|ppplppppp}pppvv|ppov||pplppv|vr|vvppoppv}}pv}||vppvpppppÓýÿÿÿÿÿà}pp}pppv|pv}|}}|pppp||p}}pp}}ppp|pvppp}}pvpvv}}}p}}}|vpv}vvv|}vvw}vvvvvvv}v}vv}}}wvv|wvvvw}}vvvvvvvvwwvvv}v}vvvwww}}wwvw}vvv}vvvvv}vvwvw}}vwvvvvwwvvvvvvwwvvvvvvv{vvvvvvvv{vvvvvvuwwvvvuvvvwwvuuv{vvvvvuv}{vvuvwvvovvvvvvvvuoovulppooouuouuÿÿýullolovvoovlllooouollllllllllllClllllllCCllCCClllllßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y!  !=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ7777755775775757577777757775577577575577577777777775575777877777777>57757777777757777577775775777787577777777777577577755777777777577757755557757557777577577555557757557557575777755775555755577577757555775577757757557577755777755577757575575575777755557775577575555575778755755755757557577577775555557555777575577557555757577757757555755775755775577775775575755755575755755755575775775755575577575777555577555775557577557555555575777775757557575ÓÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷Õ¢}oopppoopvplllppvppv|poppppppppppplppppppoppvvpppopvpppppplppvpv|ppvvlpppolpppvvppvpvvp|vpvpppppp}}pvp}rvpppv}vv||}}}vÓýÿÿÿÿÿà}pp|vp}|p|}}p|ppp|}}pp}}pp|}}}p}v}}}pv}ppppv|vvpppvppvvv}}}pv|vp|vv|}}}pw}vvvpv}vvvvv}}}}vvv}vvw}}}}}v}vv}}}vvvvvvvvvwvvv}}vwvvvvvvv}wvvvvvvw}wvw}vvvvvvvvwvuvvvwvvvvvvvvvvuv}{vvuv{}vvvuvvuvvvvvvvvvuvuouvopvuluoluvvlououvoovvllvvuouvvopÿÿ÷lvooololllllooooolooluollllllllllllllllllolCllCllllÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóZ  !!s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿþÿÿàÔ75755557555557555777755775577777755757577577757778877777757777775777777775777$77577777757575777757757777777777757757757777757775777577575575577755577577787555555777775577557577755757757555777577775777757575577557557575757557555757757775577577575575577775555777577557557557575575757757757775757557577755577755775775575755757577755777757777757755757575757755555577577775577777757555575775557755575577577775755555775777755555775577577755577757555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüüüüüüüüüõÕŸ}lpppollpppppllopppp}vpppppoop}ppoooppopplpppppvplp||ppppopppp|pvvpppplppppppp||pppvppvppppvopppp}}}pppvppppp}|vvv|vvvÓýÿÿÿÿÿß}ppppv|}|p|}v}vpppr}}pp}|pp}}}}pp}}}rvp}pp}p|}p|vv}vp|vv|}}|v}|vvvvvvv}}v||v|vv|vpv}}}vvv}vvv}}ppvv}}vvw}v}vv||vvvvv}wvvv}}v}vvovvvvv}}vvvvvvvv}}vvvvwvvuvvvw}vvvvvvvvvvuvwvvvpv}vvvvvvvouvvovvoovvvovvvuoovooooouooouolvuvvooloolovulooolpvvloàÿÿèlollllllllllouopllollolllllllllCCClllpllllCCllCllllÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Y ! 7s­õÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿèÓ57757577557555557555575557757777777757777777775775775777=575577777757777775777777777777575577757755777777755777577775777575575757775575775555555577755755777558757555557555775577777575757757557575757775757775755575757777555557777775777557577575557757558555777557557757585577757777587757777555775757577777575775757557755575575755577575577777775777775577577755557575575755555755755575555575777555577755557577755555757577577577555557757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽpolpplppoppopoolllopppooloppoopppvpp|vppppvvppppolp|pvvppppvvpppp||pppv}|pv|}vppvpopv|||}}|ppp}vvppppppppvp}pppppppvvvÓýÿÿÿÿÿÚww}p}ppppppvp|vp}ppvvpp}}vpppp}pppvpv}pv|}}vpppprp}rppvpvpp|vpp}v}rwppvpvvvvvp}|vpv|pvvv|}}p}}ppw}v}vpw}}vvvpvvvv|v}}vvppvwvvvvvvv}vvv}wvvvvvvvpvwvvvvvvvpvvvwpvvwvvwvvvvovwvvvvwwvvvvvvvvv}vvovvvvvvvvvvvvvuvvvvvvvvvvpllvvpvuooppvvvpvpvoloollvýÿÿ×ullloovlopllllllClloollllllllollllCClloCCCllClolCCC›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿóY  ! !!pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿþÿàÓ75577775555755755755575555777777777777757777757775577577777777777875775577577777577755775777777575755575577877775777755577775755775777757775555777755555577757557757757577757775557557555777555775557775575757757775777555555757557775575555755577777775775575775757557775855557575757555755777555577755575775557775555577755557557577575555557577757555777775757757575557575775757577577755757777777557577557757575575575757575757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÕŽpllopoloppooolplllppplppppvpoplpv|ppvpopppppvpppppvvpp|}ppv||vpppppppppvv}|vvvpo|pop}ppv}}vppv}}ppppppppppv|vpp|ppvvppÓýÿÿÿÿÿß}p|}||ppppp|||p||vp|}pppp}ppppppppppp}vp|||p|ppv|vppp}pppp|}pppppv}}|pppppv}|pp}|vvvvv}}vpv}}vvp}}vvvv}}}}vpppvvvv}}|vppppvvovpvvvvvv}v}vp}}vvpopvvvvpopvvvovvvv}vvvvvvoopv}wvv}}vvuvovvvpvwvvvvvvwvvpopvppopovvlvvpvpoollopovplovv|vouvovooplloÌÿÿÿƒllolooollpoolllll?lpllllollllllllll?lollCCC?ClolCCl{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ@òÿÿÿÿÿ÷Y!!!! !  mªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ775575775757757775775787777557775757777757777777557577777577777577577855775777757755777775777757557577775757777757575775575577777577555755577575557775555575755577577755755555557777555575555775777775757575575777575555775557777757757555755775557555775757575555557557777557775575575757575777775777755775757575575757755577775575575555557757557755757557757575775555777575775577555577855757555577757555577775757775757557575775757757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽsplpppopllppvppppppllopoolpppolopplppppoppvvpvpopop|ploppoppopppppvvvppvppvpppv|vppp}plpvppppp|ppp}pv|vv|}ppppvrpp|}ppÓýÿÿÿÿÿß}vpvv|v|}vv|vpppppp}pp||p|}}~p|}}}|pppp}|vp|}vp|}pp|}pp|}|}|p|v|ppv|pvp|}||}pp}|pppp|vpppopppvv|pp|vvvppppvppvp|||vpppvvvvvvppvvvv}||vpoov}vpvppwvvvvwwv}vvpvvvvpovvvvvvvvpvplovvovppppvoppoolooopvopoooppopovvvlooopppvvvvpllllvlovlllloololClvüÿÿ÷olooollllolllCllolCoplCCClllllClllllCClCCllllClCCllluèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Z  q¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿþÿþÿþÿÿàÓ77777757557777777557757577777577777575777577777777777777575757757755777777755755557775777775777577777755777577757777575755775557575755575575757557577555555757757755575777775775757575575755777757777755775777577755577777755577775555577575557575557555775755557557577555575577575775557555777777785575557755757557755755775555577757757575775757757555755755775755777755755557757577558575757577577777775777775557755555575775577757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÕplllopppplpvvppvvppllppllollollpplllppppopppppopvpoppplpvpooppppvv||pv|ppoppop}}vpppp||pppvvpppplv|pvvpp|vvvpppv|vp}|pÊýÿÿÿÿÿàpp|ppvpv}pvvpppp}vppv|}|p}}}||}}}|pppppv|vpvrv}pppvvpp}||||pp}}pppp|pp}}|ppp}}|pppppppppppppp}vpppv}ppvvpppvppv|vppvppvpppv}ppvvv}vvvppp|vvpppo|vpv}|}}}vvv}vppopvvvvvvplpvvolppppvpopppoppllopooloopvvov|vvpvpopvpplpvppollllopllllllolllplllÇÿÿÿ×llloopllplllllllCllllC?C??llllCllll>llllllllCCllCCCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷[     !q«õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ755575575775777575775775757777777777755777777777557777777777757777777757757755777777577755777577577775777577777777777777555775557575757555775577555757777775757757577575775577557755555575777777555557777585585757577575557857757577755557757777755557757755557755755757777757777757777755757575557755757577577557577557775575555755755555757777555757575755755575555577757577757755555777575555577757577755577557577757555577777577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽsppolloppollpolppplllovvpppppppopvpoppppllpppppppvvppvplpppppppvppopvpppvpopp|ppppvvpp}vppppp|}vppv|}ppp}vppp|pp|}vppvÓýÿÿÿÿÿÙvvv|v|ppp|pppp|pp~}pvppvppppppopvp}vprw}pp}}}vvvpvpp|p}vppvvpp}}vp|p}}vppp}v|vppvv}|vv|}}||v}vpppp}}|pp}ppp}}pvppppv}vvvvvpp}vpppp|vvpvvpvppvvpp}}vpoopppppoopvvvooppvpvvpoppopvvpoopvpppppoopppppoooppollvpoloollollpvllolpololllppoolollpplCvüÿÿÿvlllpllloollllllC?lllllllllllllClllClllllllll?lllllCClüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY !q¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿàÓ75755577755575575777575775577777757777777775757777755=7575775577775777757577557577777777577757757756757575777575757757775775577757577575577557577555577757555577775577575755777575775757577757775557555757775555555757755777757777777757777777757577775575555555577575757775755758555777557555777777577557575575577577577757575577777777777757775775755575755775585555557567755575775777557757775577755577775557555775575755775757755ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüù¬qpppllpoopllpvplolppllppppoopvllppllvppllppvppppvvpppvvpllopvvv}volopvpp}pppp|pppp|volp}vvpp|vv|vppv|pp|vrpv}}pp|}vppvÓýÿÿÿÿÿÙvop}}|ppppppppvppv}|ppppppp|vppv|p|}}vp|}v}}}vv|vp}vpppv|}pv|pp}}}ppp}vppv}|v|p||p}}|pp}}}}|}vpppv}}|v|vppppvvpvpoppv||ppvpppvop}pppppppppopvvvvv}vplloopvpopvv}vooppvvpvppoppvvoooovpppvvvvvplllpplllplllpppollplllloplllooollloplllplllvplloÇÿÿÿñolpplllllllCClllCCllCCllllllllCllCCopolCCllCllllCCCCC?{òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!!!!! ! =}«õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÓ5755757755755577555555777=777777775=5777777875577778755557577777577575777777777777777577777775777777775777777577577575757555755757577577775555755577557555775757777555777575775555557577577757555755757585577577777757777755757575777575577755755775757755755757755577575555755757577577557755775757775755757777575777777755777755757777777557777775577755777777757757555577575757757777555577575755777775555557775555755758Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÓqlooppollloollpllppplppolopppplp|vlpvvoppppppopplppppppppppppoo|plpppvpppppppvvvvppppvvppppvppppvpppvppppvvpvvppvvppppÓýÿÿÿÿÿß}v|pppv}ppvp|}|v|vppp||}|pp}}po|}pppvppv|pppppppp}}}pvvp|ppp|v|pv}p|}|ppppppv}v}ppp|pppvppppppp|p}ppppppp}}|vpppp|vvppvppp}pvppp}}p|pvpvvvooppppvppvppvpv}poppppplpvpppppppoopoppppppolpppooplpppvwpoppplpllpplopoloolpploppoollpvllolpllplCllúÿÿÿÇoollllllllllollllllllllllClolClllCllllC>lllCClClllClllláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z ! 9qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿÿþæÓ577775777755577755577777777775777777777577777777787=7757775=777777557777757777757575775777777777775757757575555555757785555777757577557557775777757757677757577577777777755755557775557577555767557577777575577777757757775575577877575577577577577755777765575777575577757757575775575755575777557577777555777557575777757557777557775557775775777777575755557775777757777555775777775775755577777557558755577575755757855558577755777775775755777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÖ }lloppllloppllllllllopllppooolllvppppppvploppppplopvppolpvvppllppp}}|pvpolppv|p}}vpop}ppppppppvpppppppppvvpppppop}}pvvÊýÿÿÿÿÿà}vpppp|ppppp}}pp}ppv}pv}ppppppppppppppv}}pv|pppv}}}rv|ppppv|}vppv||}}p|vppp}pv|}vppvppppppop|}pv|ppppppv||vpppppv}poppppppvp}vpv}v}}|vpppolpoppp}vpoo|}vppoopppppppppplpppllooppv}vvplopllllllv|vppplpopolllopvopplllopllppoppllpolplllll?ll˜ÿÿÿþulpvlllppplpollllllllppolllllCllol?lolCC?lllllllllllClllÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY  !!!      !! qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿèÓ7777777777775576757775777777777775875775777777777777557$7577555777577775777757775775775757777757757577757777777757775565755757577555775755757577757555757775757755777777577777557577785777777557775757755757757575555775775755777757775775577575777757757577575777555777575575777577757577755577875777777557755555555575757557777775757555777575557557775757777757557557577757757575578775757557577577777577777775755777777757755555757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷ÓŽpollloppoolpllppppppoopvplppplpppppppppopppllppvpp|ppopppppplp|pppoppppppppploppppvpppppppppp|vpppp}vpp||ppppppvppp|vÓýÿÿÿÿÿÙwvppppp|}||p|}ppprvppvv}ppp|v}}p|vpvvvpv}pop}|v|pppppp|v|vpp|pp|ppppppvrpp}vpppppppppp|v|vppp}|pp||ppvpv|vvppvppp|vvpvvvp|}pppp|ppoppppvvvppv|povppppovvplppp|popopppvpoovpppopoppplloopppop|ppppllpppppppoollvolllpppvpllvplplpllllloplpppll÷ÿÿÿèllllllllllloplllllolClllllllllllol>CllllCCCCCClC?CCCCCCCvñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@òÿÿÿÿÿ÷Y  !!pªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿþæÓ57777757777575577557777777577778777577777777787577775787755757787775775777777777777777777757777755777777777777577777587758775757755757557757757577777757777777775775775757577777575755575777777777777777777557575555577555777557777775575577785775557757575775777775775755775777557775575775555775777555757577577775755577775557777777777777777755775777777555777757577577577755577557877575767777577557775757555777577ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüù¬Ž}pppllppllpllooopppploppvppppllloopppppllppplllooopvvollppvvoopppplpplplpp}vpoopllp|pooop}}plppppvppppppppppop|p|povppÊýÿÿÿÿÿßvpppppppv~}}}|pvvvpppp}}vpvvrp}v}}}pp|pp|}p}}}}p}pppppppppppppv}vppppppvvvvvppvpppvppp|}}ppppvvpppppppppppp|}||vv}}p|v|vpp||pppvvpplopppv||vp}vppoppppvploppvvppppop}|pppppvpplllpplolllppvppvplllopvvvollpvplllllloppvpopplolllllllllppvvvv˜ÿÿÿÿ˜pllllCll>lloolllllllllllClClllllC??Cllll?Cll??CC>>>CClCClÊýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ  !óÿÿÿÿÿ÷Z   !      7p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿèÓ557577775577557755577777577777757777777777777777575777757887777757775577777577757777777777757777775755775775757775777577575555575777757575857577777758777575555755577777557777577875775557777577777575777775577757575577575777577757575777557777777577755777777555777777757755777575777757775557577557775775557777777777757757578777777755775777775577777755577777575877777755577755777777775777555ÓÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõÕpllppllllppopppolopolllppppppppppppploppppppppppppvppppppppppopppppvpvpvppplppppvpppvppppp}popvvvvvpv|vvpppppppp}}ppppÓýÿÿÿÿÿÙ}vvvvvppv|vpppp||pvppvppp|p||vvppp|plrv||pvppplppp}p}|p}pp|p}|vppp||vvv|v|ppppp}pvppvvvvpppvvvppvvppp||pppp|vppppvpvvppppvvpppvppppvpppppppvpppppovvvvplpppppppvpvvlooppoppvvlpppv|ppppppppllpvplpollppolpoloppppollpploppllpopooolllllllllp÷ÿÿÿèClllplllClolllllllllllllllllCClplClllllCCCCllClllCCllCC>?lxñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿþÿþæÓ577757777777777575577775575777777775=78777887777787775777577775777777777777575577775777757577775757577777775555777777777775577777757557557777777575757577757777777777577777757755777777777877577575757775575757577757577755775577777777775757777777777755555777555775757577777777555577577577775577777777757557757775755575777755577775577785775777777757775577757577775777557577757575757577577777757775757775775757777777777777777777557775ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÕŸplllollllpopolllllppllpplllllvvvpooolpv|vpllvvppp}vplopovvllpvlovpop}|vv}pplppppppp|p}}vpoopppv|v||v|vvppp}}}|pppppppvÓýÿÿÿÿÿß|p|p|vvppp}pp|vp|vrppppppvv|vppopppopp|ppppvrppv}pp|}}}||pppppppo}}pppp||pp|pppvrvv}|v|vpv}|||vppv|ppvvppppplpppppppppp|}ppv}}popv}pppv|vp}vpopvov|ppopopvplppvppvppollop}|vppvppvvpopvvplllollolllllpolpplplpvpllolllllllllloplplopllllllÇÿÿÿÿ{lllooolCClllClloollllCC>lllCj>lolllllC?ClCCC>ClolClCCCl>>CCÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóY  ! !  !s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿèÓ558767777777775577577777777877777557757777775777777777777777757775777777777777775777757777777777757757775777555577775777575757775757755555577575767777555557575557775555577777755757575777757577577775575777755777777577755777577757777555775557777777575775777557557657777577775777577777557777777777755775777777775777777777757557575577757777777577757777777757758775775577775755757577757777777577777777758557577555677575777777777777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷Õsllpplllllloppoolpvplopoopppooooppppllvvppllp|llvvpoppplp}plp|vpplpvpppppppv|oopppoppp|pppppvvppppppppppppvpppppppppppÓýÿÿÿÿÿÙwvv}vpp|pop}vppppvvvvpp}|v|pvpvpppvpvvvvvppp}ppv}ppvvvppvvppv||}pp}}ppppv|ppp}pp||vppppvpppvppppp|p|vpp|vppppvppppp||ppp|plp}ppppp|pppppvpppppppplpvpppvplpvpopvplpppppppppooopppllpplopppppplpppppplppploopvplllpvpllpoplllllplpolllloollvüÿÿÿßllllllllllllllllllClllllllolClClllClllllllll>llCCCllCCll?ClluñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿþæÓ77757577577757557775775757757755=577777777777777877>77775=7755775777777777555777777777777775775775775777575777755777577777777775577757775577757777777777555775757757575777777777757777777775557757557575575775777675755777775757777577777755778577575757777777575757555777757757777775577557577757557787555557575777777775777575757777757575777757577755777675777557775777857777777777575575575777777775777757555777775555557577577777777575775577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬s}ppv|vvpllllooollloloollovvv}ppooopollopollllpopopllpvpllpopppv}plppooppllp}popvpppppvvv}}pv}}ppolpppppppv|vplpv|pppvvÊýÿÿÿÿÿÙvppppv}}}|v|ppoppploppp}}}pvv||p|vpvvp||p|vpppp|pppvpppppppv}}vppp}}ppvpppvppv|}||vpppppvpp|vppp}}vp|}}}}vpp}}popppvpppopllppopppvvppppppvplpplpllppv}pppplopplpllopppppvvopllloppplpllpplpvpllppppvpovplllv|plllo|vpllpllllllpvvpplloppllßÿÿÿýolooolllllllollllllClolll?lollllllClllllllC?ClllCClCCCCllCCClCÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @òÿÿÿÿÿ÷Y! !!! p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿè×7577757777775757757555777=5787757=5777=5=577777577575777577877777777777777775757775757555777577777777775775775555555757775777557575757575577555577577777777777775777575775777777757755757777755577575575757755577777557577755775777577555755777757775775557757655777757577777577777577775758575757755577777755777555777557755555577777777757757577775775577777775575757557577855787757577557557777777775577555757777777777777755775757777757755575577777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüü÷Óqlllpopllopooolppplppploploopplopopplppplppppppvooolpvplppppplp|poppppvoppppvpppppppppppppop|pppvvpppppppp|vppvvpppp}}ÓýÿÿÿÿÿÙwvppprpppvppp}ppp|vpvop|vpppp||v|ppp}p|pov}vpvvppp}|ppppppppvpvpppp|pprvppp|pppppppvppppppp}vvppppppppppppppppvpppppvvppppppppvpvpvppvpvopoo|vpvpoppp}olpppppppppvppppploopppolpppppolpppolpppopoppllppollpovpllllpollpplolooolllllllllpl{ÿÿÿÿÇllolllllllllllllllllllllC?lllllCllllC>lll?CllClCClCCClCCCll??Cuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ– @óÿÿÿÿÿ÷Z =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿþæÓ7575777775587777557577575777757775=77777775777577777775757777777755775777557577787575775757777775775777557575777555577777777775775577577557777575755777557777577757777777777777777755757757555578755755777557777775775577775757757555577777777777557557577777757777777757777777775557557777755555777757577777577787757757775557757777775757777557777775775577657755577557577577575775755577775777757577777575777757777577775777577577775777877757757777775577557577557577577757777857577777ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬Žpjlllllllpvplpplppllpvvpllllllllppppopopppv|ppv}pplpvvpvvvppppopppppvpppplpvvvvvv|vppoopplpvpllpppppv}}}pppvpppppvvvv}×ýÿÿÿÿÿÙwvvvvpppppplpv}}}}|v}|v}}pp|pv|v}pppv}vpmpv||pppppppppp||pppppp}pppp|vv||ppvpppppppp}}|pppppppppppp|ppppvp}}popv|vopp||vvpp}vpppvvpplpllppll}}vpopvvpplp|vpvvpp}}pooppvplopppppvpooopollpppopppllllloppppllppolpollllpvolpppolllllllpllllèÿÿÿ÷lopolllllllllllolll?CCl>CC?Cl?CCC>?Cll>>lCCllClCCCCC???llC?CCCCCÇüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y    !=pªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿèÓ5775857757757557775777777755775777777775777755777777757787775757577777757777557877777777777777577775775757775757577577777777775755557775777775555555555575777575557775677775755777777577555555557757777555757777777775775575757775577577777577577775757777757757577757575777577775555775777575777777578577557555777775777555757755577777775777757777755777755575775755757757777777587577777777777777777577777775777777778575777777777775777777775757777577777777757577777557775777757755777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüó¬slllllllloplllpollooppllllppllpppppppolloopvolppppolpopppppoppplovppplov|oopppppopvpppppvpppppppppppppvpppvpppppppppppÊýÿÿÿÿÿÙwpppppvvpppvppppppppppp|vppvvppppp}ppp|popppppppvppppppp|vv|op|}ppppv}ppppp|ppppvvppp}pvpppppvrvpppppvppppppppppvpppvpppvpppppppppppppppv|lp|vpppvpvplpppvppplpvpopppppppppllpppvplpvllpopvopopolplopppooollllolllvplllollllllllpplllllp›ÿÿÿÿƒlvllllllllpCClllllllllllllllllllllClll>lllCCClllCCCCCC??llCCCCCCuñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóZ   ! !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿþÿþÿþæÓ7775777777775775775775557777575$775777575777775777777778757777777777777757775575777777757775777775755755777777577777777777577575777557555775577575557757775577775777575555777577775777777775777775857775577577775755575775775757757777775777777755575777577757755555575777777777777775577777555777775557777777777557577777757577577575577777575757555775777777577775777755787777777575855577757775775777775557777777577777757775755755775757875757577777757757575775757777775576775577557777757577557777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüùÕŸpllloolooloppopppolllllllp}vlovvpppolopllloplllolppolpoplppollollppppolpvpoppplllopppppvppppo|}}vpoppplpppplpp|pp|ppopÇýÿÿÿÿÿß}vppppvvppppppoppppppppppoppppppppppppvpp}|}vpppv|pp}|vv}}}}ppp}plppp}}pppv|vpvvpv}vv}}pppvpv}}|vpppp|}|poopp}|vpplppplpppppp|v||ppppp|}vplp}plovppplppolppllloppoppppllppllpvpvpppvppppppolllpppploppolppllpplllolllllppllllloopollllluúÿÿÿèlvplClCllllll?lllovlllopplllllllClllllClClllllllllCClll?>ClCCllC??ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ#òÿÿÿÿÿóY!!!!!  q­õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿèÓ7775777777775575775777577787775777577757775778575777757757777575778577777577577775777777757577757577777757757777777577775575575755577755755777775787757577555777777777777755555757755777757777755777777777555777777757755557777777557577775757757577757777775587757557777775775775775575757775777577777775775575557777777775777777555777755775777577575557775757775777757777775757777777777775757785577777777777757575777777777757555757777755777577775777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÓpoplollpplloplllollollpllovpllvpllppopppppllllpppoplppplpppppopppopvppppppppvpplopppvppppppplpvpppppvpop}vppppppvpppppÓýÿÿÿÿÿÙwvppppp|vvpppppppppvvppppvpvpppppppppp}p|ppppppppppv}ppppppvpppvppppppv}ppppppv|ppppvppppvpppvvppppppvvppppppv|ppolpppvpppppvpppvpvplpvpopppvppoppppppppppppppppppplovpppllppppoopvlpplppolpoppolooppoolollopolllollllollollplpolllllllÌÿÿÿÿyplllllllpoCllllllllllllllClllClllClol>lll>lllllClCClClC??ll??CCCCClèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y  !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿýÿþæÓ777777577777775756577787777777777777757757787777777557775777777775577577777757577777777575577757777755777577777777755777575775557757755775777777575777757757777777777557775555777775777777577557575777557777575577777577775777777775777777577577575777575757775555775577777757577755777777577777577775777777577757757777777777775755557777777775777777577777775777577777857777557557777575775777775777577777777577757775577777775775577775777755755777577777777777775577ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬splllllllopllllllllpppvpppppllloollpvpppolvppopollooplllplpp|vvppplovpppoopppppppp}popoppv}vppp}vppp|}}ppvvppvpv|||ppppÊýÿÿÿÿÿß}}}pop}}|v||vpv}vpv|pooopvp}}}|vpppvp|}ppplp||pv}}}pvvpppppppv|ppp}}ppoppv}vpppvppppppop}}pppppopvvvvppppvvpopvvppoppp|vppooppllpvv|ppppllplpvppolpv|vppvpppppvvvpollloplplllolpopolllppplopplllllppplllollllllllllpolppppllloplllllllýÿÿÿÙvoCClllllll?>llpvlCCC?Cll?lCCl?>lllClC?ClllClC>>?>>CllCCClClC>ClCCC>›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !óÿÿÿÿÿ÷Y!    7pªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿÿÿèÓ75555777777555777775775587777757775777775575575777755577777755577577777577577777757555757777757577777577777755775577555775777755557777757877777777775777757557777577777777755577557777777777575755775777577757755777777777577775777757576757757575777777757777777565775575557775757777755557777557777577777577555877577777777577775757775777577777777757577777575755577775777577777777575777777777777577775577777757757777777757777775777557775777777775557777777777777575575775777××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÕqolllpllllllpopollolpoppooplllpolloploppppplppllppppolpppopppvppplppppppooppopppppppppppppoppvppppppvvppppvvppppppppppÓýÿÿÿÿÿÙwpppppv}pppvppp}vppvpppppppv|vppvpppov}ppppp}plpvppvppvvppppppppppv|ppppppppvvpppppopppvpppopv|pppppppopp}vpppppppppppvpppppvpppvppppvpoppvpppopolpvppppplppppppooppplpppppllpopppooopoppoollllloooopllpoppollllplllllllpolllllollllllèÿÿÿúulllllClvllClllllllllll?llllCClllClllClCCllCCCC?ClCClll??lCCC??ll>>CCláÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿóZ !wªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿþÿþæÓ777775575757777777555578777787777775877575775777777877777777777777577777777777777757777777777775755577757775557777575757757777777777775555775785777557575577575577757557777775757577777755777577777757777776777755757557775775777777777777777777777777777777577555757757777775555777777775777757777777577777777777777757777577577757775775775777777557777777775557775757577577777577577577577577577777577775557777757577775785775777777777757777557575775575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüüüüüüüüõ¬}llplllllllppvvpplollpvplllllppoloppllovvolpv|pppppplpvvvppolpppvllpoovvpplllppooopvvpplllllpppoppppppplpv|ppvvppplp|vÓýÿÿÿÿÿ×vlloppppppv}plppplpp|vvpopppppppvppvv}}popv}}vpppoplpppvpp}ppvppppp}|}v}vppvvppppppppp|}ppppp}vppppvvpoplppppollo}}vvvpopvpv|pppppppvplvpppopvp}pppllolllllpppllllopvppvvpvpolllppplloolloolppploppopllllllllvvppppploollpllplllllpol˜ÿÿÿÿllllolllllllppolCCCllllClllol?CllllCCClllC>?CCCClllC>CC>Cll>>>>?C>>>CC˜÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿ÷Y!    !!  =Ž­õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿÿÿæÓ77587755775777775777557577878777777757777777777877777777777777757557777777777577775775777775777775577577777577775555777555777555775777555575778777777577557557757578757575757777577577777777777756775777775577777577777557575577777575557775777777575757575757557577775777787775575757775577577757557777757577777777757755777775557577757557777775777577576575575575877777577755775777775775777775775577557577757777777777555775777777567757575557755577777557775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüúüüüüüòÕqlllplllolllvllplolppoplllllooolpplollppplllpvoopopooopppvplopoppllvplovplpppoppopopvppppppppplpppvppplpppvppppppoppv}ÊýÿÿÿÿÿÙvvppppppppppppppppp|vppppppppppppppp|vvpppvvpvopvpppvpppppvpvpppppppvvppplp}ppppvvppppp|vopppvvppvprvopppppppppppppppppppppppp}pppop}ppvpvolppppppooplplppolppoppppppppplvpppllpopplopvllppopollpppololooolloppollplllllpollpplllCllvòÿÿÿèlllllllplllllllllClllllC?lllllCllllC?CClll?CCClClllCCCCCCCCCCCCC?>>>CCCCßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿýÿþÿæÓ7775777775757777777777777777777777775777777777577777777777757777757777777575777777577575777775757777777777757777757577775775555577777575577777557777775777777577575575777777777775757777777577555775775757755555575757555757577777777757775777577577775577577777577557757775755755777777755557757557575555775775575577775757557757777557756575557577757555775775777775775557555775757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüõ¬plllllpvollvpllllpolollolpopooppppolllopllllpplloplopolllollvvppplovpllppoolpppppolpvpppppppppopvvppppllllp}ppppppvpppÊýÿÿÿÿÿßvvppvpppvppp|ppppvv}vpppp}}vvpp|}popop|vv|plplopv}pp||pppp|||vpppppppppoopvvlopv}}}vplpvvpppppppvvpppopvvvvvvvvvppppppoploopppvplllopppppplpvppplvvvplplpvppooppppoollllllpvpopplopppvplllloppppllolpopplppplllpollllloplllllpplllloÇÿÿÿývCCollllllC>CllCllC?CllllllCllCClllllllllllClllCC>>???lll?ClllCllC?CClC>?{õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!;óÿÿÿÿÿ÷Z   !   pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿæÓ7775775577777577577575587778777777775757777777577777877777777777777777777777777777577777577575757575757777777755577777577575776757577755777577777775755755575775775577777755575577777757775777777575777755575775575577775775575577755755567577775557755577777575777777755577755575766775757777777575577757775777555757555557775577777775575757577777575777777557777777757775755575755755777755577777777775777777757777677577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüúüüüüüüòÕŽpolllllllllpllollllpoollvpllllppoopppplollllppoopvolopollpolppooplopopoppppppopppplp|plv}pppopop}pppooppopppvpppppvpppÊýÿÿÿÿÿÙwvpopppppvpvpppppvpppppopppppppvvppppppvpppp|ppppvppvvpppvppppppppppp}oopmv|ppv|vpppppvvpppppoppppppppppvpop|ppv|plpvpoppppoopvpppppopppppllvpolpvpppoolpvplplpwplpoollvppppooollppoopplllppopplollpppolllplllloolllllpolllplllllllüÿÿÿÇolCllllllllllllCllllllllllllCllCCCClllCCClC?lllCCCClC?CCC?CCCCCll?>CCCC?>CÌýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY $qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿþÿÿÿþÿþÿæÓ75575575757777777777777887777777777775777777777777577777577777755777777775757777775777575757777757655775757777755777757757777775777575575755557577777775777755777777757577757757777755575755577575577655775775777777757557577777857775775775577577557577577777777775775577777575775575775777757775777777575777777777577777756575775757775775578557577577575575775755575777777557777778Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüüüüüüüüù¬ŽplpplpllllllppvollloppllollplllloppoppppppolpplloplpvpplpvvppvoppplpvppppppvvvppppppvllovpppllloppopopvvpopppppppppvpoÓýÿÿÿÿÿÙwppoppvvvv|voppppppppvpppppppplppvvpppvplpppvp|vplpv}vppppppppp}}}|pvppppp}}}vppppoppppplpv}|pvppppvpppppplpvpop|pppppppvvppoopppppollppppllpppoplloplpppvpppppvllppplopvollopploppollppopppllolllllploolllolpollllollllllpllllloovßÿÿÿñoll?lllllC?lopl?lollllllCCClClloollCCCCC>?CCCllCCl?>Cll??>>>?>?ClC>CCC>lC>>uñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z!! qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿþÿþÿÿÿèÓ775577775555577575755555777757775755777777777787877777777777777755577777777775757577777755755557777757575757777555875777775777577577777777577767577577777577557855777577577777777577555777787775757575755775755577577777757758777757755757777757757575577777775777777755557577755577777777777777755575757775777575555775575775757575776777577577755777577575567557775577757557757757757758577577777777777657775777777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüúüúüüüòÕqollllplolllpolllllplollllpllloolopppplppplooplpolppppolpvpppoppplppvplppoopppppvpppppppppppppopopppppopvvoolopvpppvppÓýÿÿÿÿÿÙvvppplp|ppvpppvppppppppppvppppopp|}plpvplppppp|popppvpppppppppvvv|povvppppv|v|popppppppppppvvvppopppvpppppppppppvpoppppppppppoppppvppoppppppppllpooppooppppppvppolppopolpplplpolooollpplplollpoollloollpllllllplllplllllllpollllol˜ÿÿÿþ{lolllllllllClll?CllollClllllCCllol?ClCCC?ClCClCCllCC>ClC?C??>?ClCCClCC>>C>>CÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿóY   !!pªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿþÿàÓ777577777777777775757775777777787777777777777777777777577777777777775577578775777775777777775775775777577755777757757778557757777777575777777755575777577777777575755777557577777777775757755775577777755577755777575777577557755757555577577757557777577557557775575777557577557777577777757777757777577577877555577755577777757555757775757775575577757777777755577777777575775775757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüüüüüüüüõ¬Žplpllpoolllllllllolllllolpopollplllllllllploppppploolollppllloppllppplpppploopppllpllppppppplopvpvppvvpv|vppoppppvppooÓýÿÿÿÿÿßwppvpopplplp}|vpvpppppvpoppvvpvvppvppv}plpvvpv}plpvppoppvvpppvvppplp}}vvplopppppp}ppppppppopppplpppvppppppvpplovpopvppoppppvppplllpvvpoollpppvppppvpppppolllopopppppvpplllpvvvpollllllllopplloppplllppllllolllplllpoloppplpll?lCluñÿÿÿ×llplllllllllllllllllllCCClll?ll?CC>CllClCClllCCCCClClCCCCCCCCCC?>CCC?>CC?>?ClvèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ#òÿÿÿÿÿ÷Y !   =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿÿþÿþÿèÓ575757777757777575757777777777777777777778777777777777777577777777577785755777777777777577755777777577777777775777775575777777575557755557557575757775775777557765577775577777575775777577776777757575755777755757577557767757575775577555777777757777577577775777755577555777555757775577757757778757557755577757777575577557755775775775775777777557578575757577757577775ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüüüüòÕŽpllllllllllllpllolpolllollllppllllpooollllppooppolpoppolpplloppolpppplpooplpppvlloplpovpooppppppvpppvpppvvpoppppvvpoppÊýÿÿÿÿÿÙwpopppolplpvvvp|poppppppppppp|vpopvpov}poppppvvpppvvppop}vppppvpppppvvpppppppppvvppppppvvpoppppopv|pppopppp|pllvppvpoplpvpvvlppooppvvppplloopppvllpppppvplopopolpvpopolplopppoloollppllpplplllploollppollllllllllllllollpplllllllÊÿÿÿ÷uCoolllllvllllCllllllCCllC?llCCll?>CllCl?CCCllCCCCCClClCCCCl?CCC>>ClCC>>lC>>ClC›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY ! =qªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþþÿþÿÿþÿÿàÓ57777775777757757757777777777777755777777777777777775777575757777777777757757555777777577577777777775777777777577577777757777777555577577755775777557775777575575757755785577777577755777755555777775757777777777577755755775557775757755777757775757757775577777777555555757777755555577577577757756577775777777557777577677777777575757777775575767757577577777777777775577577555775577777577755777757777555577757757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúüüüüüüõ¬splllllllllppolllllllllpppllppppllpplolopooplllpllpopppopppppoopvpopppolloopoppllv|ppppooppppppppollppplopopppppppplooÇýÿÿÿÿÿßwpppoppppppppplpvpv|vppppppvppppppppppvppvvppppppp}|pppppplppppppppppvppplpppplpppppppppplpppvvppvppplovvvpopppppppopppppopllovppppopvpllpppvpppooppllppolpvppllovvollopolllllpppolpplpppllllllopllpplllplllllllplllllCllllllloo†üÿÿÿ›llpvlllClll?CCllClllollllllolCllllllCClClClll?>CllC??ClCClllCCClC>CCCC?>>C>>Cl>AßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z!   =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿèÓ7757775777775567757557775777777877757777577777555777775777575577577757775777777555577555555575775577577757755775755757575575775775557775577575777775567557575757777585577775775757777557777577777577777557575777777767777777575775777755757767777777775775757557555577775775557777757577757577777557757777777777777577577757557755757557575757755777777775858777575755577777775757757777577777757755777757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüúüüòÕqllllpllllllollllllllllppollppoolloploppllppolllpvppolppovppolplppopppplloopopplpppvpoopppppoppppolpppppppppppppppooolÊýÿÿÿÿÿÙ}vppoopppppppppopppvpvppppvppoopvppvppppvppplpppvpvvpppovppvpopppppopppppoopvpplpppoppppppplppv|vppppopppvpooppppppoovpppooooppppvopppllpppvppppppppllopplpvppolllppllpoollooppoolppplplllllllppplllvollolllllllllllllCCpplllllvèÿÿÿßllloololllllCCllllCllllClllllllllllClClll?C>llCClllCCClCCClCCCClCCC>?C?CC>>>?CCC>ƒ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y !!!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿÿþÿÿàÓ557757575777557555777778777757777757777775557777755775775777757577775777577777575775557777557777757577557577577775577777757775777777757777775577757767777757775577775575577777777577777757777757777777577577777577757557575557577575775577775577755777757777755757777777577557755777757577575777775777777557775775757777757555775577877777778577755577777757757777757775577757777575777757577755577755777775575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúüúüüüüüõÕplllllpllllllllollplllllpllllllllppoplolllpplpollolllllllpololvlllopllplopolpppppppopppoppollloopvppoopvvppploppppppppÓýÿÿÿÿÿßwvvoopvvvvvppvploplppp}pvvppvpppvolpppppppppppopvpppllpp|vvppppppopppvpppppppvvpppppopppvvpopppppllpvplopppoppooppplloppppppppvvpplppppv}voollpopoopllpoppvvoppppllopppvvllpppolllllpooooplpppllllllolloppplpplpllllollllllllllÆÿÿÿú{lllClllllllllllllllClCCllC??llC>CC??ClllCClCClllCClCC>>CCC>>>?ClC?C>>>>?C>CC?CCCCC×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z =s¬õÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿþÿÿþÿèÓ77755777577775575777777785775777777877577777577575777775777777775777777775777575557787777757557557775777775575775757577757777757755777577577557575577575767757777757757575777575757577577577555555777557575577555755557757577575757777778757577775757557755577777555777555775757777575775757757575555757777775757757557555755757757777757777555575777775757757557577757757555877755575755575555577777787557775557757755777575755857577557777575757777555557757755557577555777755775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüúüòÓqjClllolllllllllllplllpllolllllloplplppollllooollplllllllpolllppollplpplplplopvplvpooppoooolllppvpppoppvppooooppoopvpoÊýÿÿÿÿÿÙvvpopvvppvppvvppoolpppvvvppppvpppplpppvpppppvplpvppolpopvpppvpppoppopppvolvpppvpoooooopppvppvppolplpppoolppploppppooopppoppppppppoppoopvvpllloppppololopopvppoppllllplvppolppopllllllppppllopolllolllllollplloolllllplllllllll{úÿÿÿÇlllClllplllllllplllllCClllC??llCC?CC?llCCllClCCllClC??CCCC?>>?>ClC>>?>>>>>CC?>?CClCxòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y     =sªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿþÿÿþÿþÿÿàÓ775757777775777557577757577777777777787777577857757577777777777777577777787757757777757777555757777575557775555757565557777577777755757555576757555755575777565757777557577757777757575755777555755775755757775577775555757575757757755577575777575757556575577757577777777755775775757755757575775775575557575755555775757577775555557775777575757777775765575555777777775755575775577755776575577557575557855575777777755557757775757557775555776777577777557757777758Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúüúüúüüüüõÕqllppllllllolllllllllllollopppplpllllllpolllopoppplllpppppppplllpppppvpopoppppollppllpppppvvppppppppplplopppppppllppppÊýÿÿÿÿÿÙvoppvvplpvpoppplppp}}ppppopooopvvpppvw|ppplp}povvpoppppppppoppooppppppvvplpppopvvppppppppppvppooppvpplpppv|ppppppoppppppoppppplloopooppplpopllpopppppppolllplllppvvpplllllopllpplpppvpolllllolllllopplllllpppllpllllllvplCloloßÿÿÿèuoolCClllCClllllllllll>?llClCCClCllC??CllCCllll>>?C??>ClllC?CCC>>CCC?CCCCCCCC>>>>>>>?ÇýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!!óÿÿÿÿÿóZ! !s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿÿÿþÿèÓ77777757575577575557757557757775777577577777777777577787777777577555775777577775575577777557775775577755575777757555567575575555755755575777757785577575777575777777557777577567575757775755757575755755757757577757775757557755557557575775755775757777755677557557775557755555767557755557777577757767777577757755775577775557777755575577577557557555556755577755757755775557556557557575777775777577577757577757577577755777757555757777557575577775577757657777555775555777757775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüòÕ}llvplllllllllplllllllllolopooolplllllllplllllllpooplpppplppppllpvvppooloopvvllllpoloopppppvpppppppppollpvpppppopplpopÓýÿÿÿÿÿ×uopvppoppppolppopppvvvollppoplpvp|vpvvvplpppvpoppppopvpppppolpopvvppvppppoppoloppvpooppvplpvpoooppvvvplpppvppvvoopppvpoppplppoloppoppppploplploppppvvpollpllllpppppolllpllollppppllpppolllllllolllllllllllllppllpllCllpplllolþÿÿý{lppC?llllCCllllllCllCCClCllCClCCCCC?CCClCCllCClC?C??CllllCCCC>>?>CC>?CCCCCC?>>>>>>C>?uñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Z $sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþþÿÿàÓ57555575575775757757755775777755757777775775777557777757775577777555757775777778777777775577577557757577757557767775755775755755777775777557577557757755577755555557757555577775757577777777777775577755775755575777557757577555575557575577775577557557757757767675577775575555777775557575775757777555757775557557757557757757575557777577577577557657775775757577578557775577775755777775775777777555757577775557575557575557757755577575575555555575577775555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúüúüúüüù¬wlCllllllllpppplllllllooplllllpopplllollllpppopllllvpllllllooppllpplolplpplpplppolpplpooppplloppooolppppplopvpooppllplÊýÿÿÿÿÿßwppppppvpppopppppvvpoppppvvppllolp}pplpplpopppopopvv|ppvppppppplpppopppppppvpppvvvpppopppllppoppppppplppvpplpppllpppploopolpopopvppppolpopppppplllopllplpplppppopllloloppooollllppolollloopollopvppllllllplllllloollllllClllyõÿÿÿÌullollloCllCCll?CClllCllllCClll?llCClCllCCClllC>?ClCCCCC?>??lC?ClCClCClCCCCC>>?CCCCC>>>›úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóY   9pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿÿþÿÿÿþÿèÓ757757577577777555757557777875777777775757777757775757777577777777777775757777777577777577555777757575757775557575577755575777757777557767675777777577557777557777757577575575755577577575555755757577575577775557577557575557557777777757777757565757775757757755755755757557557555577557757575777775575557575577757555757777577558575757577755575575755575755757757557557777557757557577577557777777557557755577575755585757777577777757577557755577557577575577755776557777××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúüüüüüüüòÓŽqjCllllppllppollplllllplllllllppolllpolllllppoplllloppllllllppvllplollolopplplpplopplollppolpppvpplopvpoplppppooppopppÊýÿÿÿÿÿßwppppppvvpoppoppv|pvpllppvvpplloop}ppoppppooppplppvvppppvpppvpppppvpoooppppvppv|vppppooppooppppppllppllpppllpppopppppolppppploopppppvllppvllpplllplplplloollopollollopppolllllllollllppopppllllpppllllllllllplllllpollllllloßÿÿÿòvoollCCllllClCll?CllCCllllCCCllCCllClCCCllCCClllC?lClCCC?>?CC?CCClC??llCCCCC>>>?CCCC>>>>Cßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ– @óÿÿÿÿÿ÷Y! pªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿþÿþÿþÿþÿàÓ5755755757577557577757675777777777778777757757775777777777777777777557777775777755557757575757575775557755775565755555555557777555557757775575757575755755775777555757777577575757577777577755757775577577777775777557555675755575777577557555777757877575577775557757577757577557757757575777777777575757577575575755577755777777755775575557557556557755557577777775557555757777555757555775555555575557575577775557757777555755555757777775775575557575757577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúüúüúüüüõÕqlllllllppllllllppllllloloplllllllllpppollollllpppploplplollllllloooppollpplpooloppllpopolpvvpollllpppoppppppllovvvppvÓýÿÿÿÿÿÙvoooppppolpvppppopppvppppppp|pppppvloppooppp|vpploppoooopooloovvplppppppppvvppppoppopppvvppppppppopvvppppppoopppopppppooolopppppvoolpvplpllopvllppopopllopppppooopollollpplppllllllllollllllllllllllplllllllpllllllllplllll˜üÿÿý˜lloCllllllllllllClll?lllllCllC?CllCClllCCCC??>>C?>>C?>?CC>?llCC?>Cl>>>>>>lC>>>???>C>>>>?>{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóZ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿÿÿþÿþÿÿèÓ775777777777577755775775577877575577777757757757755757575757777757785557757777677575777777575775577777755577575757775757577577677765577575577855757777757757577755777755775777785655775577577577557775557555555555555555777557777757555775577555575557577555677757557777775775757775776755577777777577575777777575555557757777577775558775755757575857575777757757775575775755777577757757777555775575757775577775755755775775777777557755775555777577757575557575757ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüüúüòÕŽpllllolllollllllloopllllllpolloollppolllllpllllpoollppllllllppollollpvolloooolpopppoopplloppvvplplllvoopppppplpppvvvpvÓüÿÿÿÿÿ×ulopooppoopvvpppoopv|ppoppppvplvvppolpolpvpp}vvpolpppppploloolpvppoppv|pv}vpvppoopppoppvvpppppoopppvpppppppppppppppolpppolopvvpvplplppplllllppllpooppollllpvpoolllllollolllppollllloppllllloplolllllpplllllllllCllllloolllvñÿÿÿ×uCollllllllllClllolCCllllCCCClC??llClllCCC?C??C?>>?>>>CCC?>>llCC>>ll?>>>?CCC>?????>>=>>>?>CÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z!   !  !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþæÓ7757577777575587857777777785775757577875777777577577777577557777577757757557777575577777775557555757777775575757755755757577575555577777787557777555577577577777777577775757555577775757777577775577755777555757557775575557757757577777877577785557557557575757777757775757577577757777577775777755777757557757575575777575755775577557755775775757575775775755555555777577575557777755757777757585577575575575575577577777557557577577777777577578Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúúúüüüüüüõ¬splllllllCllllllllllllpllllolllplllllllppllopllpplpollpplpppolpllpppllppllppppolopllpopppopllllpppplpvppoooopopppopopplÇýÿÿÿÿÿßwpvpppppploppoppooopppplopppplov}popoppploopvppplpvpppppopppppppooppvpolpppllooppppoppppppppoopollpppoppppppollooloploppvplovllllo|vlolppppppppopppolpplplovolllppppolllollopppllpopllllllllppplllopvlllllllolllppllllllluÌþÿÿñvlClllllllllClllCCll?llCCCCCl?llllll?>llCC??CClllCClC>ClllC>CCCC???CC>C>>C>CCC?CCCC>CCC?>>ACvòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z!=s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿþÿþÿÿþÿÿæÓ575577767775777775777557575757575877777577777777775577757757575757757577757557775777757555775775757577585557755557777775575757775757777557577775558575555775557575557777757575777777775577557775775777777577777775755777557565777557575577557757775557575577575555575777577577757575777757555775775777575555775775558755557557575757775577755555777757775757575777757577757775557577575777577755576777755777576775577755775775555575557557775755777557755755555Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüúüüòÕp?lllllllCllolllClloloplClllllllll?lllvpollolopolplllppopvvllllopoppllppplpoploppllopopppollpplpplpvvppoololopvploooooÇýÿÿÿÿÿÙwvvvpoolllppvvploolpplpopoppolpp}ppolppppooolppplpppppppoppvpppolpvvpplopplollppvpppppolopppppllloppoloooppolpplloplllpvvvplpplloopvplpppvvppppppppllllppllopllppolllllllllppppllpplllpllpllpppolpvplllllllllllpoplllllll˜úÿÿý”llllolCCCllCClll?ClCCllC>CCll?ClClll?ClClCC??CCllClC??CllCC?CllCC?>>>>CCC>>?lC>>CA>>>ClC>CCCC›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷[     !  =q¬öÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþÿæÓ575577555575575557577577757577755777775775777777757777777777555757775757585577577575775557577757777755755757657777777755775575777775755767757777575775757577777775757557577777575577577557755757577575557757777577777755775577755575557777757557775555775575757577677775775777757577775577577757555557757775577777775757557757777757577777577777757557577565577555557857775777755757777755775757755775777777557777777775757575577777777577ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüüüòÕ}lClllllllllllllllplClollloollllpllllllplpollllllolloolllpllplploolpploppoollllopllopllopplopllpppplpplplooopopvopplopÇýÿÿÿÿÿÙvlppppppppppppplpppvplopppppppopplppopopvpppopvpoovpooppppppppppolppoopppppppopplloppvvpplooppppppoopplpoppopppllpvplpllplopplllppollpvpllllolololopppolllolllopooplpppolllllllllvvllopllllolllllopllllpllolllllCllllllluèÿÿÿ×uCllllCllllllllllCllllClllClCllllCCCCCCCCCllllCllCCCCCCCCCCCCCC???CC>?C>C>>?CC>>?>>>C>?C>>>>>=CáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ ;óÿÿÿÿÿ÷YqªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿÿæÓ57575775757557755757757775755775575787757787775757757775577577558575577787577575777755778576775577755775775557555755775575577755775575575557555555757777575757555577557757777787575757777777757777757757577777755777777557577755757555775755777575757777755755777575775555757575757757757755777777757575775775575557755577577577557575577555775757557557777577577767575677557755757777776575777757577555777775757757777777775775757577777577557575555577575756577757575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüúüüòÕ }ollllloollllClollplllllllllpllllllllllllpplllllllopplllllollloopplllopopllollolllpopllpllolllppvvolpollpppoolopppplllÇýÿÿÿÿÿÙuolpoppvpopvllllpvvpolpvpvvopllppopppppv|pppppoppoppllvvppvppppplppplppppoppppollplpppppollpppvpvppppllppoppppppppplppllllpppollpppllovollllllppllovpolllplollpvppplopopllllllllpvvolllllllllllllllllllooppolllllCCllllCÇýÿÿñvllllCllllooolClllll?llllllCClllllC?llClC?CCllClllC>CllC>>?CCCC>>CC>>??>?>>>CC>>>CC>>CC>>>>=C>=={÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY!      =s¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿýÿþþÿþÿþÿæÓ7777757557557577577577577555777777775777775757777777777777577575575775755755777775577557775577575777755777777778575557557777777757775777557557757575775557557575757757757557577777775775757775775575557757557577575757757575758557757757755777755555557777577575775557575755777575777777777577557557775777755775757555757557777757577777577577777557755577557577555777577575557777575775577777575777575557757575557777577557575777777755777757577757775755775757775765757757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúúúúúüúüüù¬pCllllllllCllllllovlllllllllllllllolllpllllllllopopllllpplplppplllooopolpllppppllpppppolopppppolppllopooplllppplopopopÊýÿÿÿÿÿßvppoolppplovplpoppplopoppppopplppoloppopvolpppllvppplpvpllppoopppoooppppolppppllpppppopppppppppplpoppooppppoolllopopvpoplppopplppooollppllppplpvllpvlllloopppllpllllllopollpppolllllllllllplllllllllllllllllllllollllll{÷ÿÿý˜CllllllllllCll?llCllClllCCClCCCl>CCCllCl?>?>?CCACl?>CCCCl>>CllC>?CCCCCC???>?>?CCCCC?>?C>=>>CC>>>>ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y  =}ªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿþÿÿæÓ7555777777577577677777777557757577777577757575777777757877575555777777575775577777757577577777777777575757777755757757555557777575857775757557775757757757777577555767757777755777775775757575755555777777757777577757777577777577777775757777775777555777575777757575577775775775557755757777777775775757557577777577555777777857555555775757777757755777777755757777557767755567755557577575757775575755777577775757775755777755757755775755555775575755757577755755××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüúüòÓq?ClpllllCllollllpplllllllllllllllllllplllllolllpvlllplpppolpvpllllppollllllpplllpvpollpppvppolppllloopoolooppollllovpÓýÿÿÿÿÿ×wpoolloppooppppplpolplppoloopolopolloppoplloolllppppplpplppollpvpploppooooppoolloppppoopplpvvppllpppppvppvplllllppppvppplpvpppoovpollllpppppppovplppllllovvppppllolppppplllppllpllllllllllpolpllllllllllClllClpppol?oouàÿÿÿ×tCCClllllCCCCClll>?llllACC?CC?>CCCCClCC?>???>?CCCC>>??lllCCCllC???llC?CCCCCC>>>llC>CCC>>>>>>>>?>>>tñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿ÷Y  !! ! !  =}ªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿþþþþþÿþÿæÓ55777755557557777557577557757575577757757777577777577777757857777775775575755557775775575757777777555775775777577757557757577757577577576757557775557577575555555775757557757575575755777757555775777757755557757575577777577575577757557555777575757775775775776777577775577775577575557775775757755577775577757555777755777757575575757557757755757777777755756655575775755777577557557755577775777577755777757777777777775757558757557775755557755757577575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúúúüúüüú÷¬sllollClllllllClllllllllllplllpolllllllplllllppllolClvlllllllplpllolplplolloplopooplpolllopppploppllplooopppppolopolppÊýÿÿÿÿÿßvppppoppoppoooploppppoplpooppopppppplpoppplpppppppplppplplppppppolpopppppppppppppvpooloopop|plolovpllppllppopppllooppopllpplllllvopplollploopvlllllpololpvlllplllplllpllllloolllllolppllllllllllllllllllllplllolll?Cpoüÿÿò{lllClllllCllllllCClllCl>CllllCCllCCCCCCCClllCllClC?CCC?>>?CCCC>??>CCCCC>>>CC>>A>>C?>CCC>>>>>>>>?>>>›üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ9óÿÿÿÿÿ÷Z!!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿþÿÿÿÿÿÿÿþÿÿæÓ757577757575757755758777775757877775777777755777557577757757775777777577757557775557575757757557575557557757577755757577577577757777757785785757777555775555775575557557555777857577757777775777577755757555777577577577777575777557557757777775775557575575557777575757777777755575777577555557555757777557755775755557775775555575775777775757777775557555777555758757577557577575757775577557757757555557777558777555577575557575577755777577577575557757556577777775575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüúüúüüòÕŽpllolllCCCllolll?llllllllllpllpollpllllollllllolllljlpollllllplpolpllllplllooopvpllllollllppplopppopplllppvppolpppollpÊýÿÿÿÿÿ×ulllppppppppolllppoppllloloppppppppoloploppoplpplooloppooopppopplopppopppppppppppppolllppovvpllppvplllolllppppooplppllpllpoloollolpvpllollopopollllopvpppllllolllpllllllollllllllllvplllplllloppplllloplllolllllllCll{÷ÿÿý›plllCllClCClCCllCClllCCCCCCllllCCCCl?>llCClllCllCllCCCl?>>>?>>>?CC>>CllC>=>?CC>>>>CC>>CCCC>>=C>>C>>>Cßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóZ  $pªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþþþÿþþÿÿýæÓ7577755757755577575557557575757587755775787577755777558557757775677775775778557777757575578755777575555777755777555755857577777577557585757557777777757777777755567777775757757575757775567755575755777577575755777757777755755557777557757557775558575755757775775755557775557755757557775757557775577777777577777755557575775577757777777555555775655787775755575777777775777577557757557757575775555555755585777577777575777757577775557575685557577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüüúüüù¬plllllllllllllll?lllllllllllllplCllplllolllllllllvoloolllllllllplpllllllppplplplppppollppopllollllllvpllpploplppoollpoÇýÿÿÿÿÿßvoploppppoplpppppppppllppppvpooploopopvolopp}ppplppppplooppoop|pplpooooppppoppoopoppplppplloooopppppooplpplpplopvppllppppllopplpllpllppllllolplllpllopopllllpplllolllllplolllpollolllllpplllllllllllllllllplllClllllußÿÿÿÌulllC?lllClClllCClllCllCClC?>lCllllll?>ClC?C>CCClC>CClCCCC>CCC??C?CCC>CC>?>>CCCCCC>>?C>>>>>>>>>?>C>=A>x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;óÿÿÿÿÿóY $pªõÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿþÿÿÿþÿÿÿýÿÿèÓ757555587575555578777578777577575757775777777857557775777777585757775777755556775755575577777577575755775755577575575757877775575775777757755575755757755775575777755577555775777777877557786775575575755577757775577575775758785775775777775577578578787775575577777757575577777558557757675575755775555555775775555675575575757577575775575775757557556755557757557755777575777757575577575777777775755875657777575775557577777755575777775776Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüúüúüúüúòÕsllCClllll?lllllCllllllloll?CClllllppllplopol?lllpppollllppllpllllllllolppppllllpppvploppllllllollllpvppplooooppollppoÇýÿÿÿÿÿ×uloolopppolppvvpvppvpppppvpppoolllloopplllpvppppolppppooooolpv}vopoplllloppppvpooopvpppllllopooppppolpolplpppoppvpplloppollpplolplpllppllllllllllppplpolllllppllllllplplpppllllllppllllppolpllllllClllllClollClllCClÇýÿÿèy?CClCCllCClll?llCllCCllC?CC?C?CCClllCCCCCl?>???>?>??CCCCC?>>ClCC>>CC?>>>CCCCCCCCCCC>>CC>>>=>CC>>>>>>>>>ÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY!! ! pªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþþÿÿþþÿÿýàÓ775557577777578575577757557767757755778787775577757577757577557757577557557555755555555877555777777575777755778575555575557575775567585758577755775757577857755555757775577777757777785577555757577777557778575577557777775555755857575577775765785785757755555777555555575575575755777575755587785755575775777755777578765757557758577578557757787577575557587755755775757577755755777575555576555775557755655775755555777585555777577777575556575757777575565557575577577755775775755777575557577775575875557ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüüüò¬plClllllllllllllllplllllllllClplllpllloolllolllplllllllllplllollplloppllllloplpllllloolpvpolllplllppllllopllopppoppollÊýÿÿÿÿÿßvoopppopoloppppopllooppolpvoplplploppppoopvolppplpplvplpppllpopvoplppvplooooppppoloppoolopplooopplolovpppllopllppopllpooppllpplppppooplpppllopllolppllllllllollplppvlllllpllllllllllllllllllolllllllllllllllCllllll˜÷ÿÿý›ollCClllClCllC?llC>l>lll>ClllCCClClCCCll??CCCCClCCCCCCC?CC??CCC>>>>CC>?>?CC>>A>>>>>CC?>>=>>>>>CC>>=>C>=>CñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ9óÿÿÿÿÿ÷Y qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿÿþþÿÿýÿÿèÓ555575775577557575577657575577577576755875777875575757775777757755757775575555557555577577577555555577575757557555577757557757775757575757557575777577555557775755855555775558757558577755755555555757775577777875557755785757557755577777755775585575757757555757575775755755555575568757577775755775575557575775575557575757557775777575857785757855755755577577757577775755557557557675555657575757577757757575775555775775757555777557757775655557557757755777577555775757757577557575555555557755855557555557775575575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüúüüúüúó¬Žo?Clllllllllllllllpollllllll?loollllllolllopllopollllololll?lolllllpppplllollopollllopllpplolllpppllplllllllpppoopppopÊýÿÿÿÿÿÙwolppllooloppvplllplolpolvpllpllpopppoopppoolpllppllpoppppoollppooppvvppllpppolollppoolloplppllolppoppvpoloppoooolloovolpooppopvppvplpppopoopplpplllllllllopplllppppllllllllllllllllpllllCllplllllllllCCClllllllllvçÿÿÿÌolllllClllllCllClC?CC?ll>?CCllC>Cll>>lllCl>CllCCClCC?>CCC>>?CC>>>>>CCCCCCCC>>>>>===>>lCC=>>>>>>CCC>=A?>>C>”üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóZ  =s¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿÿÿýÿþþàÓ55555757775555777557887575577777557575778767575755875557577757555575775855575775555575575555775755777555575575755575757555755777758577575557575775575855577775575757775577557557557575757575757575755557877777575657775755855655775575577575585755777557657555777755577777557555775855755577755775775775557577557557755755577555778557575557575557555575777777755757555577757557575755675577575577555757557577555577755575757577775757575757777787555557755775775775755555787577755565757755577575777755778757757758577557757777777775577655Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüüüõÕŽpCClllllllllll>llllllllllllllllllllllllllllllloolllplllolllloloppllvpoplllplllllllpllollplllpplopplpppllopplllopolpoopÊýÿÿÿÿÿßvpppoloollpppppoppppllloovvloopppllppoopvplplplo}plooopppplpolooolllppppplpplllopoopplllloppplopopollpoopllpoolpplllplpoplololllllpplloolpllpplolollpplllllolllllllllllllllollllllllllllllllllllllllllllClllllllClÌýÿÿè{lllCllllCClClClllllllClolllCCllCCll>>ClCClCCCC??>??CCC?ClC?Cl?>>?>>>?>lC>>>>C>>??>C>>A>>>=>>>>>>>>>=>>>>>=CßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ#òÿÿÿÿÿ÷YqªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþÿÿþÿýÿÿþÿÿèÓ555777557557577557555757757575757778857575555555775578757787777555555575755775587757755557775777557755757557575577587555775555777557555577557557775778777755755775775557577775557575575755558557575555775777757577877575577777557577755775578577575757577555777757557578555577555575555755775777567775575777757577775555765675555777777757555587757575577777757775587575757555777557555577775577777657575755775775755555575555757775575775555755575777577558557775555577777757577755555777575557577575777775755557757755775577555Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúüúüüúúüò¬ql?l?>CllllllCCCCllCCllllllolllC?lllll?llpllllpollollpllllppolpolppppoolpopplllllppppppolllloooppllppllppppollppplllplÊýÿÿÿÿÿ×vopollpolpppooopovvolppllpppppoppollplpvvppllllovpopoopooolpollplllllolppopollloppolllollopvplppplloloploollplllllllllpplllpllllllpllllllopploolpllpllopolollllllollplloollopllploollllllllllllllllllllllClllCCCl›÷ÿÿü˜olCClllllllCCCClllloolCllllllCllClloC?CClllCCl????>>>CCC?CCCCC?>lC?>>>>?C>>>CCCCCC>CC>>>=>>>CC?>>=>>>>=>>==>x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y!         =wªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿÿýþÿþÿàÓ5755557575757757567855757757755557777557557577577575577757555787758755755577557757757757555578757775558575777557557557777577875575775757755775777777777557765575777558875775555775557557757775777758575757557575555555775575775875755557877755755575757575777575585757555775755575757575557577777575575757757775557557757757775575757775755575555757755677565577757555575757575557877577757777777755577865775755775755575555857765775557757757557575775775757757757758557757775577575557775777555557557757575575755758555575575755777555575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúüúüüüüòÕpCCllCCClllClllllCllllllllllllllllllCllllllllllolllllolllllvlllllvolllllllloplllplplllllllloplllpplolpolllppllppllllooÇýÿÿÿÿÿßvoopoloppoopllloopplpvpplllpoplpopoppopplopplplpvooplopvppllloppoppppplpllopppllovplplopploppllppllolpollpppollpopplllpplpllolplllloplllllopllollloplllllpollplllolllllplllpllllplllllllllllllolllllClllllllllll{èÿÿÿÌulllCllllClllClCCllllllCCClCCCClllCllCl??CC??llCCCC?>CCC?>>?CCCA>ClC>>>>CC?>>>A???>>CCCC=>>C>>>>>=>=>>>=>C>=>>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y   !q¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿýÿÿþÿþÿèÓ758555757775555757555557555557575755875577875775575755757577557577555577755777777775577755555775777575775555557755755575775755777757555577577557755785575755555577557755575775577558555755757775755775555577575587575577575577557877556778757775755557575755577577557777775675557575575755577755775775555757785777755557755855575758757575558757757575755557577775787555575557575555577587555755577775775577557575577577755557577555555775775575577785557755575775757577755575757555777775775557557775555555777777555577677575558Ô×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüúüòÕslClllCllllClllllllllllllCCClloplllllllllolColllllllopllpolpllllplllllllllllolopollllllllplpolllpppllpolllopolpllloppoÇýÿÿÿÿÿÙvllllppoppolllllpllopvvollllpppllpppopllllpppppv|olllpvvvplplppplppppplllopppollpppppppopolpooopllllplplllollllpppplllppoollllplppllpollllllllllopllllllllppplpCllllllploloollllpollClllllllllllllllClllllollllv×ÿÿÿè{lCCCCCC?Cllplllll?ClCCC?C>?>ClCllll?>?lC>C?>ClCCClC?CCCC?>>>CCC?CCCCCCC?>CC>=>>CC>=>CCC>=>>>>>C>==>>C==>>C>==>tèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!9óÿÿÿÿÿóZ !    qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿÿÿþþÿþÿþàÓ5557557557777555777755758775777577857557577777575755757577555855778755555557555777577755757755557575575755757555575575755777755757577575577757555757776557558575555558755555557577755587555875757575555755867787755855557557767775755555585577577577575775577757755557757777758578755757757557577757758757575575587575555775555775777757855557577577755577757585575777557757555755775755755857555555757577755577555577557577777557557755755755785577575755557557577555757777775575757555757555757875555755775Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúüúüúúüüõ¬pllllC?llCllllllllllllllllllClllllllClllolllpllllllllolllplllllplll?lplllpplpollolllllllpllopolloopoplllllpplolplpllppÇýÿÿÿÿÿÙvpllpplllpolppollpoopppppplllvvolppplplplopopplovplolopoppopllpvoloopppoplloooplovplooooooollllopllpollplppllppopoplllplplpllopopplllllppllllllloplllllllllvlllllplllplllplllpplllllllllllllllllCllllllllllllll›úÿÿü›lllllCCCCllllCCllC?lllCCCCCCCCCClCCl>CCCC?CCC?CCC?CCClC>?CC???CCC>CCCCCCC>>lC>>C>>>>CCC>>>?>>>C>>>>>C>==C>>>=>>>ƒüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóY !q«õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþýÿÿþÿþÿÿèÓ5555757755577575775787577567577785575757577555555577577575575777855775557557575557577555757755577777577775755777555557577777755577777775558575757557577577777575875755785755777775757676757555755757755577555775557757575577755775755775875575855557857557755557557575557755775877558777775557577757577577778557557757575557875755577757556575775555577775575775557555577577877778555557777555577557777785556755775575557555775575575555557777555557577557755755877657757555755557577556775757555755577775555557577557557757Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüúüò¬Žp?lllC?ClCCllCCCllllolCCllllllClllllClopoollpllllll?llpolllllllllllllolllvvooolllllllolpppopvpllpllllllloplllpppvplllpÊýÿÿÿÿÿ×ulllpppllollppllplllllllpppllpvpllolpopplpvollllppollllllollllpolllopvppllllllpopploppolooollllppoololplpoplvppolppllpllpoopppolplllllpppolllllplllllpllolllllllllllllllpplllppllClllllllllllllCCClloplCllCCll{ñÿÿÿ×vlllllll??llllC?CC?ClllClllCllCllCC>?>>CCCCCll?CC>>>CClCCCCllCCCC>A>?CC?CC>>CC?C>>==?>?CC>CC>>A>>>>CC>==>C>=>>>>>>Ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿóY  =q¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿÿþþÿþÿþþæÓ755775557757577555575575757757777787855557755775757765557855757757857757555755775775575775557575765775577567558757777755755577557575585787555575755567555775575555675877767755575557555777577775755777577755585575777785555775755576557755557765577555777567576756575776757577555557778775575857555755557575757555775555555557575555578866777785775757575577777575577855775755555578758577757558557755555557757557557775757555758757557857755778755775757757575555575757775775775777775577557877558775587875587557565575ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüúúüúüúüüò¬ŽpCCllllllllllllllllllllllllllClCllolCllllllllllllllllllplllllllllllllllplpplllolllolllllllllolploollolllooppooloppllolÇýÿÿÿÿÿÌvppllolloppoolopoppopllllvpllopllpoovplllpvollplolppplpplollpploplpploplplplplolopopllollopppllooppploplollpppplllvllolopollplllplpplllplllllplplllllplllllllllolllllllllllllllllllllllllllCllllllllolllllllCoßþÿÿèyllllllllCCllC?C?lCClllCCClC>CCClClC?C>?llCC?>?>Cl>CCCC>C??CCCCC>>C??>?>>CC>>>CC?>>C>>>>>>C>>>=>>>>>C>>>=>C>=>=>==@u÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;òÿÿÿÿÿ÷Y =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿÿæÓ7557567575775555757557787655577555778757875577575775577557557655557776555557775776575575578558577557555777755577757775557555758657576557755755758775567555775557777557575577555555775757555557786588758577575565577575877575575875755755557775875757775577557575556757757575555755875755555575856755555577578757577878557557557777555585555685575755575577775777875676775675575557555575557575577557558775855557555677557555757555777757555557575777755877765755757775577575777585757577755575555587755577757557577755587557557577577Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúüúüúüòÕp??CCllllllllClCCC>llpollllllCCllCllllllllCCllllppllllllCloollllplClllplllollloplpplllllllllllllllllpolppoppppllllllllÇýÿÿÿÿÿÙvvpllllpppplllppppplollllppoplllppoopllllv|olllloplpppppplllooppoopplllopopppllplpollllllpppolppplopolllppppplllllpllllpplllpllllopllppplllppllolllpppollloplpppplpvplllCllC?llllllollpollll?lllllllllllllCllüÿÿú˜CCCllllllClllC??CCCllC>?CCCC>?ClllCCCC?Cl?CC>>?C?>?ClC>>>CC>>C>>>>CCC>>>>>>=>?C?>>>CC>>>>=>>>>>>=>>>>>CC>AC>=>===>>>›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z  !  $qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþþÿþÿþÿÿþÿàÓ5557555585757757777855577857577588577775755575775755785776577875577755577857675575557775575777775558585755787755877557887577555765555755775776555555755555558555577657875777776555577765578575657555775755575755555777787575777577575757577555557577575757757555767875575557775577577555757577555575577555568757558775775755577555755857556775755757577587577575758575557755587577575757765555578756577557577577575587757777775576577755757778755557577558758787575555755555787768757555555785755575557775557757778555577575Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúüúúüúüúüõ¬qCClCllllllClllllCClllollllllllllllllllllllllllllolllllllplllllllllllllllpoCllloolplllllllpllllollloppolllooppllllolllÊýÿÿÿÿÿßvllloppoollplpplovplpllpplplpllllplplplolppplpplpollvplplololoppolppllllllpvllopplppoppllppplploollopplolllppoolllolllloplllpllllllpllopllolllollllplllpllllollllllplllllolllllCllllolllllllClllllllClllllll{òÿÿÿ×ulll?CllllClClCCCCllClC?ClC>C?CCClC?CCCCC?>ClC>Cl>>CCCC?>ClC>C??>?C??>?>>CCCCC>>>>>>CC>>>>>>>=>A>=>C>=>>>=>>=>>>>==>>AáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿóY  =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿÿþÿþÿþÿþÿèÔ57577775775578565857575777675577775775575755557775775557575877677585777575575777577757555778575875577555775555757555787557577755775575575775575757577775557575755575777557555785757675757557555576575585855677585577757777585575755757555577757875755755577585755875556775565775575787555777555575576755557575787557877577565575785557577555858758557558557577775787755555757555755578557787555557775755885755575755555577855555575577557657577775575778777777775567756778577755577776577755777757555758575575558778ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúüúüúúüúúóÓŽqClCCCllCllllllllllCCClllCCClllCClloll?ClllClllCllollllllolllllollllolllpplllllllppoolllplllppoppploplollllppolopoopppÊýÿÿÿÿÿ×ullllppplllppplllplollppllplplllolppllllllpolplpppllpolllpppvvpopppoppllllppllppppppooppolllpopplllpvolpllloppoloopplplvpllpvolplllplppllollllpllllolllllllplllCC?lllCllllolllllllClllllllllllClloll?llCCllußÿÿÿè{ullll>CC>CllCC?lCCllllCClC??lC?llCC>CCCCCC?ClC?ClAllC>>>>ClCC?>>CCC?>>CCCCCClC>=>>>>CC>?CC>>>>>>==>CC>>==>>==>>===>>C={üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y   !=p¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿþÿþþÿþÿàÓ75558557577587555557755555775875775575875577755555675757575757875557557755765787657565755555587568555755557757577655576755577557785555555555757775567875555777555555585575555555785575755557577557855775575585565575575755757587555775555585555775558757575756555756575557575577655575775777575855557557755555775555776776775757575557555775857555575555567555855785558775555555557555576755577575655555555765555565757758575558575557575755778557555575575786765577765558765575565576575577565757855587777Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúúüúüúüúòÕplClClCllCClllllCllllCClllClllCCllllllllllllll?llllllolllllllClollolllllllllloolllplplplllllolllppllololllllllolppolopÇýÿÿÿÿÿÙulllolplploppolllolpooploooopooplllpplplllpololopollppppllooppllppllpvlllplllllpollollpppolooolllllpplllllloolllpollllopolloolololllllllpollllpolllllllllllllllllllllllpllllllllllllllllllCllllllllllC>llloÇüÿÿü›ollllCCllCCllClClCCC>llClC>ClClCCCCC>?Cl>CCCC?CCCCCCC?>>?>ClC??>CCCCC>>>CCC>>lC>>>>>>CA>>>>==>>>=>>>>>>>>>>>==>>==>=>>==ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿóY! =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿþÿþÿþÿþÿþÿèÓ755555555557555778557757555757855555555755555565575575557555587555555755875555575575876757755555655575855575575557575575575555875658655555557555555577556755858775755775755557557865558577755755587655875675765555875755857565576575555555855757657685588755875855555555555555555578555777557577765557555567555555575555555557585555575677556555867587555758555755756565555655775757875855655876575556555877555555578755855555555557757555555565558756767555855555755557655755765585577755555758875555755765555755556585585755555557667675855787778558555ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüúúüúüúúüúüòÕslllllCClC??llC?CllllllCllllllClClllllllC?llolllllCllllClollllllppollllllllllpolClllpplplloppllllllppllllllllllllppoolÇýÿÿÿÿÿÙwoooplllllplllplppopppooppppopplllllppppllpllollpollplpllolllolllolopplppoplpopollllllloploplllllllpllplopplllollllllplllllolllllplpplllooolplloopllllllllllllplpvpllCllplllCllllllllllllC?lllllllllCC?Cll˜óÿÿÿ×uClC?C>CllClllClllClCCCCCl>?lllCllC?C?Cl>>?CCC>CCCCCC>?>>>ClC>>>>CC>CCC>>>>>>>CA>CCCC>>>>>=>>>>>=>>CA>=>>=CCC>>>==ACC?===ZñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y   9s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿþàÓ65565865585685875668585657675555575655575555557555755758555558575557555855655585575555577555758857678778757675656555555565775566557575757755587585576755575586555577555785575557555755565757555555555878555557585758755565565556557556555555856585555787855566557567555675557565555555558775875555555887555565575555858557755655565655557555557555575757585555578575556857575575587555765685776755556555556585576577575576575555557555555565577876765755555778557565757755875575755557555556555785767555555557575655855656557785755557558757575556555575555675555575557675555775576755Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúúúüúüúúüõÕplCClCClllCCllCC?lllllCCCCllCllllllllllllCllllllllCllllllpllollllllClplCllollollllllpllllplpllllllllplpllllolloloooollÇýÿÿÿÿÿ×vvollllpoolpoplllllolpopplollpvllollppoollllpollpollllpoopllllllolopllplllloloololllolllplllpllllllllppllvplllplllllplllplolllllplllvp?lplllolllpolllllllolllolllpollllplllllllllllllllllCCllllCCllllClllvßÿÿÿè{CCCllC?llllll?llCCllClC>llCCllCCClC>CCCCC?C?CC?ClCCClC???C>Cl>>?>??>>CCC=>C?>>C>>>>>>>>>CC>=>>>>>>>>>>>=>=>C>>>=>=>>>>=>>=ƒýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿóY ! q­õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿÿèÓ55855765555585555585765557557558555777575555677555875676555585555755555855555585675577555557675575557555765555755765855655555555567775787558655585585555757855555765555555585577556557555556577555555565575856755558757755875757557558755775756758555555565555757555577557585576575555576755555557575755555675557555776587555755756555575555557555575558585757575557575758567555585885556755677578555557575855555576755855558555755755575555557575557555575555655556555555575555555556558556557775555587557575655585555565556758757555555655557555575555675555556575775557755755855575ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿüúúüüúüúüúúò¬qll>?CClCClllCllCllllCClllClCClllllllllllllCllpolll?llllllpllppollll?lllllplllplllllllllllpllllllllllllplppopppllpolllÇýÿÿÿÿÿ×uvlollppppololllplplllloolllloploplpllopopppplloollplllpolllolpopoplolllllllllollppppppllllppoppoloppppllvvplpllllpppllllpllllloppllll?CllllpolllllClpoplllllllllllllllllllllllllllCClllllllollC?lCCClClvÌýÿÿúlClClCC?CllCC?CClCCll?llCClllC>CCllCCC>llllC?>>CCCClllCClCC>>?CCC>?CC>>>>?>C>>>>>>=>==>=>C>>>>>=?C>A>A>=>=====>>=>==========ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z ! =pªùÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿþÿþÿþÿþþàÓ57555585555555565787575575555577555557557655575575655587555585755755555685785785557575557575558555555555875576555775767575756555875555675555577555775565585576755676555755555767575855556755555775557555756557555565555585575557578556555556768556855857587755557575655555557555565785575555755755775575555568557576655655575555555555675575555555555555555557575555555676565555577765655555567757555558687585555556655567558555885557576855657555555555555557555575555555555558575757566555555675755555558555555755757587555565575567576565665558758557555555755556Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüóüúüúúüüò¬pllCCClCllClClllCCClll?ClllCllllCllllllllllllllllllllllplllllllllllllolllollllplllllllllllllllllllllpollolllllppolllooÇýÿÿÿÿÿÌvllplllpppollllololplllplllllooolplpolpolpllplplpololloplplpllpplplllpllplllplllopopollllllppllppllolplllvvlollllllpllllloolplllolllllllpplllllllolllolplllllClllllClllolClllllllllCClllllllllllClllllCl˜÷ÿÿÿ×ulCCCClCClllCClClCCCll?CClC>llC>ClCCCCC>?llCl>>CC?C?CCCCCCC?>>>?C>>Cll>>=>???A>>>C=>>>>>>>>>>>>>>>>>>>>C>>=>>>=>>====>>=>====ZóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóY !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿèÓ555585565758755756555585855758755555556555565555565555558555565585586565577755567575555575656585575558656758658557558755575555585555675555556575785565765755855575557555556556765575655665855555555555556555857558655555885655575576755557655677585556588565876555685577655785555587585566766655555555578755585557576588655758556855557556585575555657575555555587558755557557555585555558755755557555655558765556587675556757555767558568565776855555557757655555765556656865555565658566557555555757765655555555578785755565585576556576755575885556557575755568558555855ÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúúúüúúüüúúòÕp?ClClllCCC??lollllolC?lolCllClllClCllCCClCllllllll?lllpolollClllllllllllplllllllollllllllpplllooploolllllllllllollllpÊýÿÿÿÿÿ×ulllllpllpllllplllllpppllppplllplllpppollloplppvolpplpppollllloplllClllopvppllllpolpplllppollllppppllllllllllllpollllllollplpllllllllppoolllllllpplClllolClllllllll???llllllllllCllllllCCCCCCllCllllllluçÿÿÿè{Clll>?CllClClCllllCCllC??CC>Cll>>C>?C??>CCCCCCCClC>?>>>>>>>>>>=>>>>>CCCC>>CCCC?>CC>>>>CC>=>>CACCC>==>==CC=========A>>C=>>=C?==ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y ! =s¬ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿþæÓ65578856558555555555577655765558688556555557576575557578557558558767566575755675755566556855555855555766755665856555757565666565685555575555865565556586555755576587565687585566555565555555556555557655555576586567555557555558555565655565855675555585655585865558765555558555576585676578565565555655556575586576758585658556555555865555757555655556555655555585585658555875558557565675655765587566556555565755755755575765575655577655678585556785656555855555557556758755657565765555756655765855557556555555758755555585656755857555767855855578555655655655575555Ó×ÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿüúüúúüúúúüüòÕŽpCCCllllCClCClllCllllCllolClllllll?ClllllllCllCClllClllplolllll?lpollllllllpllllllolllllllvlllolllllolllollllllollllloÇýÿÿÿÿÿÌvllllplllollllollllpppplllpppllllloolpolllpollvpllpolollolplllpolllllpllopollplllllllplllpolllllopollllllllllllllpllllloolvlllllClpplllllllllllpllollllplllllllolllllllllllCCllllllllllCCllllCClllllCloÌýÿÿú›lClllCCllCCllllCCllClCC?CC?ClCCC?CC?>C>CCCCC>CCl?C>>C>C?>>>C>>>>>C>>CA>C?=>CC??>>>>>>>>CC>=>>>>>C>>>>>==A>>>=>==>>==>=>>=>=>>==CßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!óÿÿÿÿÿóY!   7}ªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿæÓ6578555558555576655675565555785555767566655567655555586555556585656665655555565756556555555557858575556558576555565757555758855778567555556855855585557576755585555567555675877558855575567555558555565765575655555555575555858578857675556576556555585558576758855675555575555565555768755755556675865555755765755556556778555785585555755786575655855755555665555555667685555567565875555855555556555556876755855755855677557557575665565555765576565655655757767656556885658555567558768555565557576555775755565585575586556666655765758556765555575668756575567567557575675765ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿüúúúüúúüüúúòÕŽpjClllC>>CClCClCCClCll?ClllllllACllCllllllClpvl?lllllllllllllllClllColplllllllCllloplpopvppllplllpllloplollllloollppplÇýÿÿÿÿÿÙvollllllllopllllllllllllllllpllolpllopppooplllolloplppopllllploppppppolllllovpolllpolllllppvpolllpllllllllplpoollllpllllllplllllClvllllllopllllllCllllllllllllllloollllllllClllllllCCllllllllCllllllll›÷ÿÿÿÌulCClllllCC?CClC>>CCC>>lC>>>>C>>>>CCC>?ClC?>?>>>?>>>>CCClCCCCl>ClClCCC?C?>=>CC>>>>>==>>>C>=>?>>>>=>>>C>=>>==>C>>AAA===>====>===>AuüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!   =q¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿþæÓ855656758676675577565655555555867588565755785585555585555555657575875556575858755557566575558555585555555555557765755585755655865555657857655558557657655655675555855565557557555555675855578585555575566557778555555555556555565568566555655658756556755555775556766757655576866877555555575655658555587658555555566856555557765555675556658756565555585565555655767677786657655565655565758555555855755885555655655565656655555655855876557558575555655555655557675555567555585877555555588555768585855585555557555555565755765757656675657576755657557655658757556585ÓÓÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿüúúúúüúúúüüò¬qClCClCCC??llCCCCCAlllCCll?lllllCClClllllllllllClllolllCC?lllllll?llolllCllllllllllollloplllllllollllllllllllplllllollÇýÿÿÿÿÿÞvllllllllllolplClolplllolllopllllppoploollvl?lpllpllopllplllppllppllpllllllpooollllpllllollppplllpollllllllllpplllllplllllllllllClpllllloploCllllllllllllllllllllllllllllll?lloClllCllllllllllllllllCyèÿÿÿè{lllC>Cll>lCC?ClCCCCl?>Cl?>CC??C?>C?CC?C>CC>CC>>>>>C>>ClCCCC>>CCClCACC>>AC?=>C>>>>>>>>>>>CC==CC>>>=>>>>>>====>A>>>>>==>==>===>=>=>=ÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;óÿÿÿÿÿóZ    !qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿþÿèÓ57675576556556558568555657556555565556556557575675565556756556755555657576585555655575775557557555558575585765556556655766658556765556575558756555556756755757578576556755556758557685765575566855585656856566555566555555655776676685757565785555775585557555855785865555765855555856555655556756555858867555555575857557585855676555755855875875556765555575565675575555567555655655755676565656756756555656576755565875575558555765576765555566556556765656755575565575555575575556766555575855858555568555656555687557665575555565558576765556768765555655557585855755865568875Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúüúüúúüúúúòÓqCCC>>llolClllllClllllCCCC??lllClC?lllCllllllCCllllolllClCllllollllllClClllllloovlllllllllllplllllllllplllpoplllllllllÇþÿÿÿÿÿ×ulllpploplppvvpoloopolllplppollllollllllovvlllplplllllllppllloollollllplpoppllllllllllllllllllllloollllllpplllollllllllllooloolllovpollCllllClollplllol>llClllllllCllllCCClllolllllllllolCCllC?llCCClÌýÿÿú›olCCC>?lllClllCCCClCC>>lC>ClllllClllCCClCl>llC?CCCCC>>>?>>>>?>=>>C>>>>>>>>>=>>>>>>>>>>>>>>>==CC>>=>>>===CC>>==>A>>===>>A>=>>C>=====AñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y !=qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿàÓ5655855655555555576755857555585565855555655577555576555565875555765575555555885556555667856555585555557556555587675555775766565565757885557557655657657565657555555555875558758855655858567585555558655555565585585575565775555575785755855658875757555556755556657555558555855755765557565765788>875656567575556556556757765657755655556555555585767565556555555855565857755855755757656775655555577555755555585555555655555557858555576555557675655555755755678675865765688776885575667785556555885577655768576575558558555567666855777856585555686855555ÓÓÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿüúúüóüóüúüüõ¬pCCC?CCllllllllC?CllllllCC?Cll?CllCCllCCllllCClllClllll?CllollllClollCClllllllllllllClllllllllllllllllppllllplllCCllllÇýÿÿÿÿÿ×ulllppollploolovpllplllllllplllllpllllClvollllplplllllolollllllloplllllpllppollllllllpllllllllllloollpolloopllllllllllllllolplllloplpolllllllllllolCllllCl?ClllClClCCllll?loolllllClllllllCllC?lllCC›÷ÿÿÿÌtlCCClCCClCCClllCC?CC?CCClCCCCllClC>Cl?CClCCCCC??CClC>>C??C>>??>>>>>>>>C>>>>>>=>>>>>>A>A==>>>>>C>=>>>>>>=>>>===>>>=>====>>=>=>A==>===zÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9óÿÿÿÿÿóZ !    =qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿýÿþÿþÿèÓ558586555556567665565575755555556765655675555655575755555558657587575556585588566675756677555685855868655755555555575567585555585875555855557585857558565586875657555567855576755565755555876775555576567555688655567655555755665665755765765555555557555555575655575555657555555585655565877855558>ikCj6867755756555567557656585675555578575656555685855585656775555865665585565655655555576556765555557767555586565678655685555555655788555556556875755555555555767557655556585685755678566755855557658555657558557556755555556557558755575756555878555757675576555555555555ÓØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüúúúúüúüúúúòÕŸql?>?llllAC??ClCClCCCClCCClllllllCClllllCCllllllllllCllCll?ollCCplllllllloppopplllllllllllllllllllolllllllllllplllplllÊýÿÿÿÿÿ×ullllllllllllllplllppolpllllplllllppolllplllllolplllllplpplllllloollppollloplllollpopvpllllpoolllplllppllllllllllllllppppollll?lllClollClllllCllolC?llllllollollllllllllllllll>CCCllCCCClllClC?lllC{èÿÿÿè{??lllllll>CllCC>?lCl>?CClllCC>>C??>=CCClCCC>>>>>>>>CC?>C?>CC?CCC>C>A?>>>>>=>CC>>CC>>>>>>=>=>CC>=>>C>==>====>=>>====>CC>======>===A==A=Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ– ;òÿÿÿÿÿ÷Y! }¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿàÓ565575556566755556776758657555655555755575678675855755678885885555657686555575885555565576855657555855855556556676588585858555568885555565765857557556555675588555575585576558555765875555557575555576876565655557755655576755878655557576657557565565755575555865555555555678565585578jl†‚n>5655765676558755556765555567558777675785575675555565765586758556556787586755558575555755855855555575575555565557557556556657855787555556565855656556655665765556765755555755558557876555856755875657755585557576875887875855555575575555585555558575565575857866555555756ÓÓÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿüúüúúúúúüúüòÕplC?>CCllC>CCClClCC?Clll?CllllllCClllllCC?lllCllllllCllll?lol?llllCClpollooopollllllll>lllllllllClllllllll?lllollllpllÇýÿÿÿÿÿÌvllllllllolllllllpllpllpolllllllloooplCllllllllllllpllpllopllllollllplplloopplllplolpppllolllplllplllvllllClllllllllllpoolllllllClCllllllolllCllool?lllllllllllllll?lllllllllCCCCllCClCCCllClClCllu×ýÿÿú›lCClllCllCClllC>?CClC?>lCllCCC??C?C?=?lClC??>>>?>>>>>C?>CC>>CC>CC>>C>>>>>>>C>>>C?CC=>C>>>>>=>CC>>=>>>>=>>>>==>>>====>>>===========>==>=]úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;óÿÿÿÿÿóZ ! ! 9q«õÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿþÿèÓ5555557655558757765555855587555555575555555575557655567556586685655678575855855555657555565678565555585656655657558555575755555678565756675576555555555555755555565656875676755556685556757675665555856555658755658567585587587587565585555555758767555567565555565555655555565876765558757788>{†™Zj685675558558857875658577857555555655585765575555555578676755587557576855876555587675685658858557675556757555557687556855756555565755766875676555767555567655767575655556555587557555657555555656767558868555666855856556757555555555558555555555676576557Ó×ÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿüúúúüúüúúúúò¬so?olCllCC?CC>CllCC???CCCClol?>ClllllCCClCClllllCllCllllllllplllllClllolClllllllCClllllCllpllClllllllolllppllllllllplllÇýÿÿÿÿÿÙvloollollollllllCopllllovlllpllpllllllloollloplllllllpvvpllpllpplCllllllllllllplllllllllllllllllllllllllllollllllllllllllllllppllCllllopolllllllll?Cloppl?lClolllol?CllllllCCllllllCCllllClllllllC›÷ÿÿÿÌvllClC>C>>>?llCC?llllCClCCClC?CCllCll>CCClC>C?llC>CCC?>>>Cl?>?CCA>>lCClC>>ClCC>>=>>>==>C>>CC>>>>==>==>==>>>>CA>>==>=====>A=>>=======>====›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿ÷Y!qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþþÿþÿþÿàÓ855555555555585558585555555555785558556565555767665565555565567655576656657557686555856766855657656567558557685558868876585555585575855855555555858556557558578656555555855655765565585585557785558557655765557558755855655675755655558888765767655657558657665565688857586558585855586865576765557555685675656558555656jZrƒp65555555556557566555576555565555585566768576765867576556555555557555767587876555555765758656555565567675587656555585565855555555675765856556755865655555555555555565757856558558555585755555565556558588755656767557657555558575587855767555577556575557675555855676566688555565555855655756558655ÓÓÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿüúúúúúúúüúüõ¬spCllClCCCClC>?ClCCCC?ClCllllCCCCClllll?lllCCllC>ClCllllClllllllllClllllllllCClllllllllllpllCllllCloollllppllllllllllloÇýÿÿÿÿÿÞulpplllllllppllllloll?lloplllllollollllollplllllllllllvpollloopplllpllllllllllpllllllllllllllllpolllllllllllolllllllllllllCloollllllllpollll?ClClllllllll?lllllllllClllllllCCCClllll?llllllC?CllCvßÿÿÿè{llllC?>?lC>?llCCCllCCCllll?CC??>ll>>CCCCCl?>CCCCCCCCC>=>>>>CC>>>>>CC>CCC>>CCC?>>==>>>=>>?>ACC>==>>=>==C>=>>=>>==>==>>===>>==A==>A=>======CèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Y! ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿýÿèÓ656885556567557566587765555855556558858665555565686755865565558856555555558865585557555556555555556566755588586555875856875565556566555565565586555555565568676556575665555585575865667865658555555855867665856855755657655655555555555587656686655555766656557565576665875685855758556758555555555576876858555856858jCn855565765555667586675866855555688565785555858755575575565755565586758565755555655575565655555567558656855667655658685556565686557555555565555758656565565555755587555556586555557855655675655566558585665555768867566756755555855865556566586588555665667555568668656565656685658765585565556565658555655658865767585Ó×ÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿüúúüúüúüúúúòÕp??>CCCllll>?ClCllllC?lllCllollllCCClCCCllllllC?llllllllllllCllll?llllCCClllllllolllll>llllpplplllplllllllllllllllllllÇýÿÿÿÿÿ×ullollllllllllloolllllllllolllllppplllllllpllllplllllllllllllllllllllllppplllplllllllllllllllllollllllplopolllllllplllllll?lllClClvlllllClllllllllllllllllllllC?lllllolClllllC?lllCClllCC?CCCClClÇüÿÿülCllCClCCCC>llC>ClC>>>>Cl>lCC>?C?Cll>CCCCClC>>CC?C??>CCCCCCCCC>>?>>>=>>>=>CC>>>>>=>C>>>>>=>>>>C>=>>>>>=>CC===C>=>==>>==>===>====>====>=====xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿóZ =qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿýÿþþæÓ76687755556575555556875765555758566565555656557655658567675655565585575855655685686758675555557655565556755568868685575675555555558676578556685566865555555556556555585567565585685555876568675765855555765865655558586555655555665575566565655575558655858555565786565867656755657556858555656555665556555556558566565585655556858888655555575565655555756786555856656558655556658556886588856756556578585555575565555667855588588855565765565655556856686685555586688687665568558868575665867676885578656755555685675768656555666567865585555555667565555585675555788585558578865865765585567876877865676558665558566565565565ÓÓÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿüúúúúúúúüúüòÕ}?>CCCClllC?CC?ClClCCCllCCClolCCll?CllClCllClll?lplllllllCllClllllCllllCClllllClplllllll?CoplpolllllllllllllllllllllloÇýÿÿÿÿÿÙuCllllllllllllolplllllolllllllllllllllpllopllllovllllllllllllpllllllllllppllollllllllllllllllllplllpopolpllllllllooplllllllClClCClvoll??lllllllllllllClllClvlCj>CllllllCllllllCllCClll?ClCClClClxèÿÿÿßuCCCCCCllCCC?lll>ClC>??>Cl?ClCCCCClCCC?>ClC>CC??C?CC>?CCC>CCCC>>>>>>>>=>C=>CC>=>>>=>>>>>>=>=>>=>>=>C>>>==>>A>=>C======>=>==C>==$=>=!$=>=$===AÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿ÷Y!  ! =qªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþÿýÿþÿþÿÿæÓ558865656575556565555555557658576555758685555756556556658556555557885655665675758567665585556755855686555555556565685586665555588856786675565655858565587867665858655555585886568775556557555568558556688886556866758655556658578857788556665655868555567655766875685868588556755685567555588566656866658755666866755868867667575765865658566788665676585566585556858856665565556555755788555676755558568656568567566875555667586885555656555755856887667676565565566768555585557558858558665667575867556556565565655667655555655676855755556877558658555567675755566555565565665655655555565655555665556555868585575855665556555565756Ó×ÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿüúúúüúüúúúúòÕ }??lCCC?A>?lll??CllllllC?C?ClC?CooC?lllClCClllClpllClAAllCClllClCClllllllllll??lllClolllllollllollllllplCllllpllllllllÇýÿÿÿÿÿ×ullllplllolllpllllllplllollpllvlllllvlllllplllllpolllCllllllpllllllllplCllllllllllppllllllllllllolllllllllllllplCllCllllollllloolllllCClllCCllllllllCClolllollC?lllCllC??lCllCllll?ll??lllllllllÊýÿÿ÷˜llCCCC?CllllC>CCCCCllllClC?>?C?CC>>ClC>?CC>>>?C??>>>>>>>>?>>>>CC?CC>>>>>C>=>?>>>C>>>>C>>>>>>C>===>CA=>=?>======>=>>>>======>=====A>==>====>==C÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY    =s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþþÿþþþæÓ7556557665767576765678555565656655785857556576566855568656557885758855675575555567565555658556756557685855585786568655558855567867677855576558665568566565565555855685565658688565556557658555785675655557655685685555885586865555565568555566555566755557675866755565575557585685567767876755555676856585557558858667555865676855585566765565558655556586585557586657685658588656785655566575588865555855555766555555565556576766565675567655568678555585657665565585668555555588655588768678876855556776568578766575566555565585855555588658556585558555675655556575655765556755655556567655888855576ÓÓÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿüúúúúúúúüúüòÕ}??lC?CC??CClC?ClCCllllCll>?llCllll?llCClllCllllll?lll>ll?CCCllCCClClllllllC?lClllllllllllplCllolll?llpl?llloollolCCClÇýÿÿÿÿÿÌuolllllloplllll??lllllllplopllpplCloplllllllllllplllClllllllolllllpplllClllllllllllllCllollplllpllllCll?lClplllllllCllllllClllplllllCCllplCCCllloll>llllllllC?lClllCCll??CCClllllllCCC?lolCClC?ƒòÿÿÿÊulC?>?CCCClllCC?CllClCCll>?CC?CCCCACCC>?CC>>>CCC>?C>>>>>??>>>>>C?>>>>>>>>C>=>>C>>>C==>>>>=>>>>>>=>?>>>>=>C>==>>=====>>====>=======>>>====>==A==–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z !     $}«õÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþþÿþÿþÿþÿþÿÿæÓ575558586556556555556555566586767557655855658557567565865565555855876557556656655555566585555567675665665767556765555585555655656565686555855586858565758655585565655665555565856888575555765555555676555758665766765686858665585565655556888566685557665555575655586676865565556575765855875677555558655885555565588555555556786657655588656555555565658556555655656555556585676755556756565757657566557868558567566655756875855856756555555856776676775655655555558656855566555586557555857655766758667558556555555555556885656656765675566768565655655555566768766555655655885685658665558555556556556568555586565555557ÓØÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿüúúúúúüúúúúòÕq?>lllC?CCCCC??llC>?CC?Cll>ClC??>?>CllCCllC?CClCllllCllllAlllolCllllCllllCllClllllllllllllplllClCllollllllllllllopllllÊýÿÿÿÿÿÌvplClllllolllClllplolllllllCllllllClolClplooloplolllllplllllvololloolllllplolllll?llllolllllollllllCClpollClpllCClplClllllllllllllllllllolCll?llllllllllCClllClClllCllllllllCll>>ClllCCllCClCCl×ÿÿÿè{CCC?ClllCCCC?>>>?llCC>?CCC>CC>>?>>>?C??Cl>>ClCCC>>??>C?>CCCC?CCC>>CCC>CCCC>>>>==>>>>CC>>>>===>A>>>>==>>=>=>==>=>>>==>>>>==>>==>>======>==A=$===CáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!    9qªùÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿþþÿþÿþþÿýþæÓ5568556666755856556867555555558655858856586866585788555655586686857876557576755555556658555556655855658555855576555555656565658565655555565656558688567656555766766766556665657555656585856555858555785857657555555755656555655677655555866568555558555576675658576585655555555856656567655655565555556575578656558655655585565868565755856675555555565655656555868886555865577656858885855557555555685855855558858655658855555566757687676555555655567555765755555685658565555555565656856565655568556655578655656855576588555665656565555555555685677556555655865566586657585658655567855665565655565767568555556565558558865ÓÓÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿüúúúúúúúüúüò¬p?ClCCCClCCC>>CCClC??CCllCCCC???CC??ll?llClClllCCllllCClllCClllllllllllol?CllCllllolllplllollllC?CllClllllllCCllllplllÇýÿÿÿÿÿÌvollCllllplll?lllppllllllCl?llllllllllllopvololpllllllpllllppllpllllllollolloplllCCllplllppllllpoll?lloolllllllllllllCllllllllCCCllllpllllClCCllClllllCC??CClCClCCCCCllllllCllCCCCClC?CllC?ClC”÷ÿÿüÇul?CCClllCClC>>?>>lllC>>ClC>>>CC>?>C?>>lCC?>ClC>CC?=>CC>>CCC>ClC>>>Cl>>>C?>>C>==>=>>>>?>=>C>>>=>>>=>>=>A>>===>=>>=====>=>>=>====A======>========CxýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóY  ! qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿýÿÿæÓ68565578858565765586575886686885655585656857556855857585855576557586566578556555555655568856765567656555885687656568555655566758765658565867665658865758565555585565685555885555555655658566755585655655855555656655555655666565565655565676755568555655658865856565555555685655856558856856768655555558655685685665556555765557556556556565865655855555555556675665555755655556678556786656668555578755565557658585556587685555655556586768575567675655665858556568566575556568565857585566665655667856565685855666755855555555658855755567585658655565755865556656765856855656565556655767555555566858675675585555558565565656568675656865565585ÓØÿÿÿÿþÿÿÿÿþÿÿÿÿÿþÿüúúúúüóüúúúò¬q??>C??llCCCCllC>>CllCC??CllCCCllC?ClCC?CClllC>?Clll>ClCClllCllllAllCCCll??lollllllCClolCllllllllllllllllllCCloollllllÇýÿÿÿÿÿÌuollllllllllllollplllllolllllllllpvlCllllllllllllllllllolllllllllllpllllpplllllllllpollllpllllllllllllllllllplllllllllllllllllllloplllCCllollllll>lllllllllllllllllllllClllCCCCllllClllllllllußÿÿÿßulC?CCllCCClC?CCCllCC>C?>CC?CCCClCCCC>=Cl?>?>>CC>>??=?C>>CC>>CC>>>>=>C>>>C>>>>>>>CCA>>>>>==>=>>>=>>>===>=>=>>>>====>==>===>>=======>==$======>=$=A=Æÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@òÿÿÿÿÿ÷Z !=q¥ùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþþÿþÿýþæÓ5865655776685855755558558858565567657565655575586556655656555656855576765865566565655555555555585558755655555585555658585755856586555658556655655655586767568555865565558555685555788587665555665556655867857668766586585555568655565555557686855565858565555665585676767555587655655675655885656855657557558858585658656666585556568555555657558857675585556555565767555686758555568576686856655556665557676756565755676856765685867556786586556766586558555565665788555556555855758555655556755865586558587655565565566866876587555588655568567665688685766855655678585555656856567866555765577678885855676557568565585555755577555588555766ÓÓÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿüúúúúúúúüúüò¬Žp?>C?>>llC??CllC>>Clll??CCllClClCCC??Cl?lCCCl?C?ClC?C??l?ll?lllCC?lllCCCCClClClllllClllCCll>llllllCAllCCllllClllC?lllCÇýÿÿÿÿÿÌulppllllllllopollllllllllllllllllovollCllll?llllpol?llllplCClpll>llllClloolllllClllpplllllllCCCllllllllClllpollllllClllopllllCClvpllolCllpllolllllClllCloolClClllllllllCCllllCCClllCCllCClCllžúÿÿü›CCCCCClCCll>>ll>CllC??CC>?>CCCCCl?>Cl>>?l>C?>>>C?>>>>CC>CCl>?C?=>?==>>>>?>>>>>>>C>C?>=>>>>>==>>>>>>>==>>>===>>>=>==>>=A===>=>======>=========>>A===Z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ!óÿÿÿÿÿóZ   ! ! !!!9qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿþÿþÿþþýÿÿæÓ86565565565766555555555565557565565767668655565565555565885866556757565866555657558556666565655856855656565558555558555555558685868655585555556555665558667675668865758658565676557555655558776755575586585555558558885655556557655655768765565555655566585676788685655675858585556576758855565555568855555655675555855555555765565766587658686758655655555668575565655585887565865586655555555685565668565585585555675585558587555575555768585658676555556585575755555585855556585685585555555565556655555568685566556555666858755675655856765555555655655556857855587575855767556655565566585687665555555555556656655885755555656558565755655656558585565756855Ó×ÿÿÿþÿÿÿÿÿÿþÿÿÿþÿþüúúúúúüúúúúòÕqCCCC?>?C?>?CCllllCCC>??CllCClCCCCllCCCCllll?ClllllClllllCC?ClllllCCllllloolllClollCClCl?lllllllllllplllllllllpollllllÇýÿÿÿÿÿ×ullolllllllllolllllollllllllClllllllllCllllpllllllCllllllllClllllllplllllllllllllloolllllllllllllllllllllllllCClolllllllllClllllplCCllllllClllC?llCClllCllCCCClClllCClCClllCCCClClllClCCC?CCuáÿÿÿñ{C?CllCCCClC>Cll>>lC>????CC?llCCCl>=?CC=?CCC?>CC>>?>CC>>>C>>?CC>=ClCC>>>C?C>>>>>A===>=>>==?>=>A>>?>>=>>====>>========>>>===>==>========>>==========$=–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿýÿþÿþþÿþÿþýæÓ8585555667557656555655585665567686585555655685667855885765855686555565856765568867676685565556858565558658656576666555656576568865585586655658855556856586>5555656556865566556568558555556886755855566868755586558566555555686585655566565565655865685558558685755556556565666585668655555666558556555555655875686658856656565667655685555668567555558585886586565555585675658755555655855658678556586656858685676566556876666556556566877855557657685666585756765666566687868655656568865565655656685555685585667685585655566658755565667556865655556556865855665865888556576656866665866856555668656656565665556658556855556658766ÓÓÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿüüóüóüóüúúüòÕpllC>>>?C????lClll?>CCC?CllCCCC>ClCCllCClllllCCClllCClllll??lCllloC>loolloplllCllllCCClllCllllolllllvpllClolllvpolllloÇýÿÿÿÿÿ×uClpolollllllllllllllCCllllCCloollClClllplppolClC?llllllll?lllllllpllllllllllllllllllllll?>llllpollllllolllllllpllllllClllClpllllC??Clllll?Cll?ClClClllC?lCCCCllCClC?ClCClClC?llCClllCCCCCClÆüÿÿÿáu??ClllCClC?>?ll>>CC?>CC>C?>ll??ClC>>CC>>C>?CCC>>>>ClC>>>>>>CCC==>CC>>>>>C>>>>=CC>=>=>==>====?>>>C>=>>=====>>========>====A=A>===>====>=>==C>==$=$!$=C÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿ÷Z    ! pªõÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþÿþÿýÿýÿÿèÓ568676557676685568656655768657655555556855556658655856655856676656555876556568568566866658567567576555676668667865556555555756656656886775556565575656568†™p66556558685566558555558556658886556655755756555765586556556656856555686855568655685868556656655568566665555655588668556576556655556566867668566556886888667566568675566656566865568865576588658656655858685867656556567685886568558656655577655655586565688685857676556655865686655686655865658656855578865555868866555675688656666866868856556865768586565855855586556856856756556555855856556786585685556676586585558655867855555586558686868885555555567566758567565566565555667885Ó×ÿÿÿþÿÿþÿÿÿþÿÿÿþÿÿüóúúúúúúúüúò¬Žo?C>>C?ClCCC?>?CC?>CllllCCCCCl?lllCCCC?CCCCC?ClClCCClCCCCllol>lAlol>?llCCllClClllCllClllllll>lllCl>lolllllllClllllllooÇüÿÿÿÿÿ×uClllllllllllllClllllllppllllollplllllCllllllllllpllllpllllllllllllllllClllllplllClllolllllllllllllllClllllCClllllllolClll?lllllCllllCCCllCClllClllllClllllllClll?CllllClllClCCCllClCCClClo›÷ÿÿÿÿßuCCClCCCC??C>>lCCCCCCCCC>?>?ll?>?>>>CCCCCCCC>?C>>=?lC=>CC>=?>>>>>CC>C>=>=>>>C>=>C?>>>>>>C>>A>=>=>>==>>==?>C>======>=>===>A=======>>===============$===–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z!q­ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþþÿþþÿýÿýýàÓ576558656756856575876656568586565885875555656568558665766558565555555865555768765575656565566586658556658585885555565657866865856856555668656656565655565j™ý68665855865856666558685568666856658655665686856856655685685656858657565765557856565588656888588578855865565656766557885655865858865665756665656678685655755768555877866768876665855685768556665658656656556555676566558565557666565856565787685688556755867786658766688556578556886556585668656588876555865555655755767665576556556785656865555888676555555675866556555888565566565866565675556865665555566765587675766866586655585866566666558566ÓÓÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿüüúúúúúúúúüò¬sl>>>?CCCl?>???>>>>>?CCllC?llCCllCC?C?>?C>>CC??lCCl?ll????lllC?llCCl?>C?llCC?>?CCCClll??llllC>CC??>llllllllllCCCCClllllÇýÿÿÿÿÿÌullC?lllllC?CCCollllllllollllpllvlllllllllCCllllppvoopppllllllCllllllplCCClollollCllollllpplllllllllllClllllllllllllllllllClollCClllC??llllCllClopollllllllllllC???ClllClllC?l?CllC>CCClloÇúÿÿÿÿÿßul>CCCllC>??>>CC>?C?CCC>>C?Cll???>>ClCC>ClC?>>?>>CClC>>>C?=>>>C=>CCC>>>>==>>>>==>CC>>>?CA>>>====>===>>>=>C>==>==>>>?=>==>===$=>>====$==$=$=====$======ZüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿóZ!!     $s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþÿþÿýÿýÿÿæÓ56765658658855676676576558765586656656565656688856556865768586556855856865668566665655655865856556786586658556665658656655655568785566558655656886668855555655656675pj57655656656555666866768676656558587567556655558655568555655676558767658555568656586556588668658885678876578655856656765566855678655678868555766858558666558566655685565655655666565556875588656556756568566655576865865688567586755686555666577658865668558656656676865555886867675867655885568685686556585566856656565658676558576676565658676565865858568676685567855865655866556865667576555765556586756556566785558555655656566585656685658556565556655558585866558575Ó×ÿÿþÿÿÿþÿÿþÿÿÿÿþÿþüóúúúüúüúúúòÓŽp??C?CCCCCCCC?>?ClCC?CCCCClC>?ll??CCCCllCCCCC?llllCCC?lllClllCCllCl?ClCooll?ClllllllllClllllllllllllllllCClllllllllCooÇýÿÿÿÿÿÌvol?lllllolllllpllllllllllllllllllllllplllllllllllllllCllllloollloCClllllllllllll?lllllllllllllllllCClllllllClllllClllllllCllCllllllClllCl>llllClllCClCCllllllC?llCClol>?ll>CCllClllCCCl{ßüÿÿÿÿÿÿáx?CClC??>CCCCCCCCClCll>?lC>>CCCCCC?C>?>>?CC?C>>>CC>C?>?>>>>C>CC>A>>>>>>?>A>>A>>>=>C>=A>>>>>>==>>>>=>>>=>>>==>>=====C=========$==>===============!=>=$=CÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y =qªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþþþÿýÿýþæÓ65686665555685565685686655765666758765685556685886585556567586655655588856565656586657667556556866755556576565886786686658665686565566588558568676656558655555568658665656766555686857565685566568656756855568766685768566666556866765686765866556656566668865768656865565686857667666785668585658568556655667665556585655655655655665567686558585658555686886555686565656665575568555686755665787556755658568685556676658555668556865566575556655565655585586758666567565865658665565665885565566565676665586576868655666866576858665655856566556865558566756857688686556555555565666567656ÓÓÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿüúúüóúúóúüúò¬sp?CCC>>>>CCllCC??lllC>CllllllCCC>lCCC?llllCCClC?CC?l?ClllCllC?ClC?CCClClplCClpplClC>CllllCllpollllllClClC>?CC?lllCllpoÇýÿÿÿÿÿÌuolClllCllpplClolClllpollllolllllCllClollCCpollllC?CllCClplClpllplC?llllllllCCClllCCCllllCCllllClllllllCClllCllC?lllC>ClllllC?ClCClllllCC>?llllCCC?CC>??ClCllCCClllCllC>>>>?llCClllllCCòÿÿÿÿÿÿÿÿõƒlCCl??>?>CllllCCllClCCllCC>?lCCC>?C>>?>?lCCCCCCCC>CCC>>>>>CC>CC?>=>?ClCCCCCCAC>=>=>>=>=>>====CC>=>=>>>=A>>========>==========$=A>==>===!====$>=$====9=ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;òÿÿÿÿÿóY       7p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþÿþÿþÿýÿýÿÿæÓ5576758765765686876765556558555765565666586765565585856865667556785586765586655585655675755566555678665565567556678568555556565766585656685558666555556556685686685558855665655565856656567656556555566756558585658555665685568665558655565555756557655866555556857558655656856878575876765558575658566856855555556565556685587656865865565555766676585685575556585565658868686558557657855856568565568567676855555676566556566557566856587556765856565667566555565655586588586568568585855665668686886555558555575655685865865586867556565666668665755675575865655656586656785656757688688656556558558555656568568675556585Ó×ÿÿÿÿþÿÿÿÿÿþÿÿÿþÿþüúúúúúüúüúúòÕqC?ClCCCCCCCCClC>ClClC??CC>>CCCCC?ClllCCll??llC?llllC?Cll?CCllClllllClCllClllClC?lllllllll>lllllCllllllCllllllllllCClCÇýÿÿÿÿÿÌullClllllllllClllllCllllllllllllllll?lolllClllll?lllollllllllllllolllllllllllllClllllClllClllllllCCClllllCllllllClllllllClllllll>lllll?CllllCCllllllCllllllCC?lolCC?ClClClllCCClCClCCCÇüÿÿÿÿÿÿÿÿÿú˜>>ClC?CCC?CCCCCCC>>C?CC>>C?CC>C>>CC?>>??CC>?>>>>>>C>>>?C==CC>>>?>=>>>>>>>=>>>>C>>=>>A=>>>=>=>CA==>=====>A=A=>=====>==>====>==========================!Cýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Y  =qªùÿÿÿÿÿÿÿÿÿÿÿÿÿýþþÿþÿþþÿýÿýÿýýæÓ8565555586686565586576568676555676565786658666558666688566558566555565588556556566556586665586557686565556667585576857657656558556586656865556767655785768856865665655565655556657665565655578658655655565686558556855655555558556555788586865586586556865856568656556767686685555565676556665755555565868565655656558565555656857656565656655566588558866555686588587558656665565558585865585665555668556665856566585576568565565556655666555556866656658586655686665556875585565567668655568565656556555556868556856856588685688656856565555656865668556865555576655856555655576765866556688685557685757668865666565655555866565656766658558685556568565565866556585555558586556656586ÓÓÿþÿÿÿÿÿþÿÿÿÿþÿÿÿÿüóúúúúúúóüúòÕpCCCllClCC>CCCClCClCClC>>>>>>>CClClllClCCC?ClllllllllCCCC?CllllllCllC?llClll>C?>>ClClllll?CCCCllllollllllCllClollllC??Æýÿÿÿÿÿ×ulClppoolCCCl>?lllC??llCClllllllCllCCllllllCllllllllolll?ClllCCClllCllllCllllClCClllC?ClCClolollllC??lllll?ClllClll?lllCCClCCCCC?llloC>loollllClClCCClllCCClClllCCCCC?lCllpol?CCCCC>?›úÿÿÿÿýüÿÿÿÿÿÆ>>>Cl?>CCllACCC?>>>CClC>>C>>>>>?>lC>>>>>>>CC>>=>C>=>=>>>?=>?C?>>>>>>=>=>>==>CC?>==>CCC===>==>C>=>===>>==>>>===>>==AA>=C>=>=====$=====>>===$==$======!@óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!óÿÿÿÿÿóY ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþÿþÿýÿýÿýÿÿèÓ5565685556785656868666655588858555675665868866655555585565575655685865565558886865656568685686676558655755856665675586867856566555688685566555855655855667556856888565565865556588855586555856555585858565856855556566556566858567585576567655556555885566856555767755558556666756586768555666556555655676676658866566656565555566557555868676568558566555767585556656656567655555576868585558586755867666556656575555558855555555686567565656686567885686666586558585558555565568866686675666856785565566666865556556655585755565675567657555556665686556865556655557656755555567555855656657566676555555758665856556555875555556676655865655866588555556ÓØÿÿÿÿþÿþÿÿÿþÿÿÿþÿþüúúúúúúúúúúòÕqCC?>>>CC??CCCC??CCC???CCCCC?C?CCCCC>AllCCllCCClClC>ClClCCllCllCl?CllCClCCl>?lllllol?CllllolllClAlllAlllCllllClllClCllÇýÿÿÿÿÿ×ull?lllllllllllllllllllllllCClllllllllllllllllllllllolllCClllllllllllllll?lllClllllllllClllllollCllClllllCllllllClllllllllllClClll>Col??llClClClCCCClllCl?llCCCCllCCCCClCllll?CC?lCC{èÿÿÿý×{uÆúÿÿÿ×l?CC??CCClA>>CCCC>>CClC>>?CCCC>>>>CC??>C>>l>?>=?CC=>?C>>CC>>>>>=>=C>>C>>=>>=>C>>>=>>>>>>=>=>=>>>===A>=>=====>=>======>>====>===============!====$!=A=$C÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y!!!sªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿýÿýÿýþàÓ6656565567856568555555585556585565556886568665655556565685658576865556685656565657566766868866886855566657576688655665667555558865656558686585768655656856555658856655658555555886656565866666885655558656555685666658756555556868855855565656558768568565656656555557685655556566656656565658676868656665587665565865565555555558856586685556665656865565556866576558685556656565868566686565585667866656557655656665555655856665688866865656556585555586876558585665555676856665565686686565655686565568686855565686655658655665678586855586565556666556565565556557666558676856685565655665856565865655556686656558665565665565565686686556566655858666556665556668665658676555565765688556688ÓÓÿÿþÿÿÿÿÿþÿÿÿþÿÿÿÿüüóúúúúúúüúò¬solC>>>>>?CC?C?C>>>>CC>Cll??CCllC>>?CCCC?>?llCCC>>???>CCCCClCClCC??lllllC?C?>>lllollC???ClllC?C?llClC>>>?>lllCCllllC?llÇýÿÿÿÿÿßvll?ClllllllCllolllollllClCClpolllllllllllllll?>?AlovlopolopolppplllolllCClplloollCllloolllllllCCCCCllplllCllllC?CllCCClllClCClllll?lll?ll>C?lll?CCClC?llCCll????lllCClCll>>CCCCl??>›ÿÿÿüÇtC?lÌÿÿÿáuCCCCClllC>>>CCC??>CCCl>>>>lllC>>>CCC>>>=Cl>=>>>>>>CClC>>>>==>>>C==>>>>==>>====>>=====>AC>=>=======>==>>==========$==>>=======>>=====>=====$=====$====ZýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿóZ  ! !!!!=p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿþÿýÿýÿýÿÿæÓ56585656565565655685555668565656556565865556565665675667565555565566676886568655566555665567555556875658556565656566666555555658666856555656568565666686656656655865688555665555665655686667666565558566566858658667656566866665675656558688566656565665855555888585565856555565558676685656685656868665568558555868686566568685565586558585668688656666555568555686556656886565565556585656556585555565856555565566856665866566655656866586556576556755655566555585655655565586556566556555565558566565665656865686555558858656856555656656665658885656667586856656655666656565658568555686556666765586866665566765556688656556555656566666556758655676566867686656888ÓØÿÿÿÿÿþÿþÿÿþÿþÿÿþÿüóúúúúúúúúúò¬Žo?CCCCC>>?CCCCCC>>?ClC>CCC?CCClC>>llCl>?C?CClCCCllC?CClCCCC>CllCl?ClCll?ClClClCloCClClClClllllCCllClllllCllllllCllClllÇýÿÿÿÿÿ×uCCClllllClllllll?CplCCllllllllllC?lllClvlClllClllllllllllllCClllllClllllllllllllllClllllllllClll?lllllllCClllllllllClllolCl?llCClCllClColClClClClC?C?llCCCCCCCCCCClllC?CCCCClllC??ußÿÿþÌoCCCC{ñÿÿòƒCCCCCC>A>CCCCC>CCC??>?>>C>CCCC>>C?CCCCA=>l?=>lC=>CC>>>>>>>>CA>>>>CC=>>>>>==>=AC>>>>>=>>>=>==?>==>>=>=>===>>>===========$=>=>============$===>===!====–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Z!  !qªùÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþþþþþÿýÿýÿýýæÓ6756856668658556685655568656565565558656556666656565565556686665857685568556565565585567686665686586665586655666556656568686566586666558566565565655556865866586765555886558855868666688655568665555658655665556656588676555556585665566655655665555666685676765666658658668655656655666565556655656565655665666555656557655655686666556655657656885656768686585565665655856658686565866665566556556558658676865856868565556686585565766686656585556665565566558865688566865568566868568556585665565665656668666556865566655565858688868558555665658685556565686585668566865586565655686685666557665676655665655885866556856868566556868555555555686588568685665568557685655ÓÓÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿüúúúúúúúúúúòÕo>>>>>>>>>CCCllCCC>CCC>>ClC??>>>>?C?ClllC>>>>>>CClClCCllllCCllllCClCCCCllCl?lllllCCClllllCllllllllllllloolllCCllCCClovÇýÿÿÿÿÿÌClllClC>??Clollll??llCClppol?CC?lCllolloollllClolC?>lllC?CCC?lllCl?ClC>ClllolClllCCllllClCCCC?CllllllCC>?>llCllpllC>ClollllCllll?>lllC?Clool???Clll??CClllCCClllC>>lllC>>lll??CC?>C”÷ÿÿñ{?>>CCCÇýÿþCCCCCC?>>?lC?CCCCl?>=>=>C>>>>>CC>=>CCll>=C?ClC>=>?===>CllC>CC>==CCCA>==>C=>>=>C=>CCC>=====>==>>>>>C=>==>>=======>=========>==A=$====$$==$======$$$!!=ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY      ! !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿþÿýÿþþÿþÿæÓ86586688586886666666887565555556556566566555665655885856685655565675566688685656566886856656655668556565865676855686656656676558686766558675555668685655856565655686565678856765665866685665888555555566686568678666565575678585855568865555666655566556556565786768655858688755565666586565588558565685566655556756568655885667655686666868558686665666556656558655556586556665865865856656865566558888556866667655666586558568656855565556555676555566866686568558685656758555658886556675565585655656865688586556558586565656585855668585658667558655565556585868686666556566686556666658665858686585666565688658666555656568656568666566566656856656685556856658565555656666756556667565665868656588886565658668666Ó×ÿÿÿÿÿþÿþÿþÿþÿÿÿþÿúóúúóüóüúúúò¬Žm??>C?C?>C??>CCCC?>?lA>>CCCCCC?CCCCCCCCC??CC??CClCClC?ClClClC>CllllCl>?llllCCCCllCllllClllClClCClCllClClllCl>lllCCl?llÇýÿÿÿÿÿÌullClll?lllllClllllllllllllCClllClllllllClllllllllClllllCClllllClll?lllClllllClolClllllCCllllllllCCllllClCCllllllC?l?lplClll?lll?lClll?ClCllCCC?lCCCllllllCCllCCC?ClllC??CClCCClClCþÿÿÇCCCClCCußÿÿßuCCCC???>ClC>>CCCC>>C??>CC?>>>Cl>=CCCl>=?>>C?>>>ACC=>C>CC==CC==??>?>=>=?>>>==>>>=>>>==>>=>=>=>======A>>>========>C===========C=$===$==========!=====xÿÿÿÿÇxÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y!!q¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýþþþÿþþÿþþÿýæÓ55666558666565856655666685888565866856565555565858668868558555566565868555656568658566856686658556655686556658655765555666556665556858865568676885655568685565555555865885686855565885556855556565858655865855685586556868565655585666566565658585666555655558566555676555565568656865665676585566855565688866565565585655656865688588555556586565665858555665658586665865567655658588656865656568686655858676665586566558765555865658556565656885656566566566855888567686656565668555865656565568586856587655658665565555566866666655865656666656558586865585555655555556855665655655657655585765656656765856655555666565658565668665586568555586766786656655556865655858688855686855556566865586855855666768665586765ÓÓÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿüúúúúúúúúúüò¬spCCC?CCCCCC?>>ClC>=>ll>CClClllClllllC??CCClllllCC>>CC>>>?C??>>>lll>>??lll?lCCCCCCCCC>>llollC>>>C?CClCCC?lollpoll>llCl?Æýÿÿÿÿÿ×ul>Clol?lllllC?CCllllolllCC?llllllC?l?CC>>llCllClll?lllllCCllC?CllllllllllllClCCllllClC?ClllllllllCllllC?llClCCClCllllllC>C?CllCCll?CC???Cll???>>???lllC>ClllCCClCCC?>C?>>>CCC>Clllþÿò”llCC?lllzèÿü–ClC>?ClC>ll>>??CC>>ClC>>?CCC>>C>=>>>>=>C>>>>=>ClCCC?>==>=>C?==A>>>=>>C>>>C=>CC>====>=CCC>=>>==>>>=>========>>>==>>============$=A=$$A==A==!$====>==ÌÿÿÿçA==ƒüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!óÿÿÿÿÿóZ    p¥õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿþÿþÿþþÿýÿæ×6665676885688568656566565686768656656566765658665856856765685665566665686668558686585886576568678676555656668656578676566656656856556685556685665856555565676556565566655656656686556588867566556668566656568665565688866576568685666855665668855568656565555855566566858565558568566665586856878665665656555586655656568586856586855666555655566866566655566556666565655858686568555655855585865558555668565566558665655565666656685686666656558568555555656585665566665676558555566565666566855666555666565676668688855555585565686565657855665658668656655655555686855588686555568585856668586556556868666566566556555558676556675555556555558565555655658585866556565656555855665656886656656555856655586565555676566658Ó×ÿÿÿÿÿÿþÿþÿþÿÿÿþÿþüúúúúúúóüúúòÓp???C???C?C>=CCCC?>ClC??CC?ClCCC>?lCCC??Cl>?CCC?CCllC>C?ClCCC?Cll>ClCCClClCllCCCCll?>llCllCClClCllllCCClCllllll?lCllCCÇýÿÿÿÿÿÌull?lllClllll?CllllClllllllCClllllllolClllllCllllllCllolll?ClllllllCllllCClClolCCClllllClllClllllClllll?llCllC?lllllllClll?l>llllllClCllCl?lCClCllC?ClClC>lll?CCCllCC>?lCCCCl>CCCCCþÿòƒl>C?>CCCCuÌýÌllC>?CC>>CC>>CCC?>>CC>>>>?>C>?>>C>=CC>>C>>>C>>C?=>CC>>>>>=>>>>>>>?==CC==>>>=>>>>>=>===>>>==>=>=>==>==>>=======>=========>=!========$>============!Aüÿÿüu=!==xúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–@óÿÿÿÿÿ÷Y  !qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýÿýþþþþÿþþÿýæÓ8856586556665665658656555585676567676556555555875865655655686555857656565665565856855555666565658565668665567656855558676665686576555556868658586888555686865556566865586865855666588565586765886558555856655565658658556655866655665665657655686886665558688555665565565656556886566558555568665566656855866556688565766668868665565576865865676678556656556868656666658586656856588665868656885767656655586885765768656556885566656565686555866565565865566668686588688656567685656555556556558665865665685656585866786565686656865856665686858565685667556685685666766855865585566655586656555566566665686568686586866665566666668876558866588685555556886565858657656665566558655656ÓÓÿÿþÿþÿÿÿÿÿÿþÿþÿÿÿüúúóúúüóúúúò¬Žo>ClC>>>>?>>>?C>>CACC>>CC>>>CC?C>>CC?>>?ClC>>CCCClllC>CCClll???llllllC>AllCCCClllllC>Cl?>>?CCllolCCCCllllC>>CC?llCClCCÇýÿÿÿÿÿÌvllCClClpvllCCllCll>>CClllllllCCllCllCCClol>ClllpllllCllllllllllollllllpollCllClllCllpolllC>>ClC???ClCClClClollllllC?>>>>CllllC?CCCClllllC???lCllllCCClCC>CllCllCllC?>>CllCClClllCC›ýÿüžC?lC?>>>>Clƒ˜vC>?C>>?lC>>CCCCC>Cl?=CCll>>CCC?CC>>ClC>CCCAClC>>>>==>>>>>>>>===>?===>>==>?>=>CA====>===CC======CA===>>>>>>==========$======>=$$==!===$!!===!!!=xÿÿÿ–=$!!$@{üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;òÿÿÿÿÿóZ!!  =sªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿýÿÿÿÿþÿýÿýÿæÓ656588565656865685565565656565585586565565568685665588685555588688555568588565665865556686866656656855655555867665675555555655555585555556556586658565565656655685565667688656565655856655586565666765666588586556856565676556686568855856566556768655856686565686565565655566556655886556566685855666866588688565656856765565565565667686556566675566586566658568656656858865785866555688856556858556866866765686655666686666558686865666668685865566555868566856555TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTMTTTTTTTTTTTTTTTTTTMTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT76866555676558858658566566656666686688858856656668Ó×ÿÿÿÿÿÿþÿþÿþÿÿÿþÿþüóúúúúóüúúúò¬p?>CCCCC?CC>>?C>?>>?CC>C>?>?CCCCCC>???CCCCC?CCCCClC>C?ClC>ClCCCClClll>?lClCC?llCClClCClCCClllC?llCClllllllllCCllC?llClÆýÿÿÿÿÿ×ulCClll?lllClllClCCClllllllCClClllClllllClllll?lolClllllCllCllCClllCllllllC>lllllllCllllCCClClCllllCCllllC?llllC?lllCllC?lllll>lllCCll?CllClClCCCCllCCCCC?llCCllCCC>CCCCCCCCC>?ll>>˜÷ÿÿè{CCC?>>CCCCClCACCC>>lC>>CC>>C>?>lC>>CC>>?C>>>C>=?>A>Cl>>>?A=>C?=>CC==>=>=CC=>>>>>==>>=>>>=A=>===>>====C>====>>>>=====>=====>=====$===$=====$=========$$==!=$===ƒÿÿß=====!$=ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Yq¥õÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýýýþþþþÿýàÓ865565565656776556866658556665555885568685665856656556685568565756568555585656566665558665655565656665568666868665566686665566666668686658666588666655668865666588576566665665865676566855655566886555586585766665865666666566565666866685566668656586686658585586555666566885568568656588585655555668685658566658568666766865658666556655668685665686656566866565886586656665856856565655686566555686658666885658658655865866568586656556665688556556586XXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=6886666866855658666655686685665686865665665556676666655ÓÓþÿþÿþÿÿÿÿÿÿþÿþÿÿÿüüóúúüóúúúúò¬Žo>>>CC?>ClC?>>>CCC>>CCC?CllllCllllCCCClC?>>CllCllC>?lClll>>llll?>>>>C>?lCll?ClC?>CllllClCCllll?>?ll>>???C>llllCl?ClpllÊýÿÿÿÿÿÌlClCll?>?llCCvpllllCCllllCl??lll?>llllllCClCCC>ll>>?llllllllll>>Cl?CllllCl??Clll>llC???ClllllllCClC??lllllllC>>>>AlllCllllolC>>CC>?llC>?ClllllCll?>lllCC?>CC>>>lllC>lllCC?llC>>>CC>tßÿÿÿèyCC>>>CC>?CC>>ClC=>CCCllC=>>>??ClC?>>=>>?>ClC>>C>C>=CC===>>>C>===>=>>>=>CCA>>CCCC===>====>C?C>>===>>=======================>====>C>==>===========$!=!=====A=!=–ÿ÷@!=!!$=$@ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóY      ! =s¬õÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿýÿÿþÿþÿþÿýÿèÓ655656665586856686566685666686656866665665565668665666668666566666555666666856656568666685676556656656886656686656686665686755565665867666665675566656666585688886666865666656766685685556556566666585688566756886686766556768685685866667578566865655568566665888655566865666566658656865586655565856565566566666856665565668656565558586886756565565856665566685665566668666555666658566588558655565566567855668665656688656656668656TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT8566565655656668665588868658656566865568556656558566566Ó×ÿÿÿÿÿÿþÿþÿþÿÿÿþÿþüóúúúóúúúúúòÕŽm>>C>C?>>CCC?>>?CC>?C?>CCCCC>?lCCCCCCCCC>>CClCC?ll?C?>ClC>ClCll>?lCCC??llCC?>llC>llCCCCClCllCClCCllCCCClCCllCCllCClllCÇýÿÿÿÿÿÌuCCCllCClllClolCllCllClCCllCCloC>lClplClCCllllClll?CCllCCllllCCCllllC?llllC?CCCClll?CllCllllllC>?ll?CllCCllCCCCllCCloCCCllll?ClCCCCllCllClCClCClCl?>lCllC?ClClC>llC?ClCCC>???CCC?CCC”÷ÿÿÿçx?C>>llCCC?>>?CCC?>???CC>>??CC=>C?C>>>>>>CCC>>>C>>>C>>>>>lC=>>C=>==>>>C>=>>==>>>>=>===>>>>=>>====>A>==>>======>=A========>===$=A===========!=>=====$$=======!u÷‚$===!===!=‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿóY  !!=qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýþÿýþþþþþþþÿýàÓ6856856556566566655655656565565665865658686867866666656666565555666656865856656567686656865566665655655688886655686668867655685855856688656668656567858665568688568568686566565555656686666566565665665566856556665865565675568666685865686565555655566768568686655666888568658656565886566585666866666886665678668676865655656568666766676866655668666656656668558566865556665565666665556686658688656565556665686588886666656856666656865568TTTTTTTTTTTTTT"TTTT:TTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTT:TTTTT:TTTTT:TTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTT:TTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTT6666855688858568565568555566656865856666666666865865665568ÓÓÿÿþÿþÿÿÿþÿÿþÿþÿÿÿüúúúúúúúúúúò¬ŽpC>?C>C>=>C?ClC?>>CClCC>>=>>>>>>>>>CCCCCC>lCllC>>llC>>CCC>ClllC>CllC???C>?C?>?C?>CllllClllCllCCl>>CClllCClll?ClllCCC>>ÆýÿÿÿÿÿÌullooplC??>>?C?>CllpolC?llll?Cl??llll?CCllllllCCCl?lllllC>CllllllllC??CCClllloppol??ClllClClllllllllllll?>CClllCClCCC?>?>Cl?Clllll?>?CCCCC>CCCl?CC>>??CllllCC?>>>CC?Cll??CClllC>>???CÇþÿÿÿ÷›ollll?>>>>>CC>>C>>>ClClCCCllA>>>?C?CC>>>>>>>A>>>>>=>C>>C==CCC>>>>>CC>==>CC====>CCC==>>>====>=>==>A=>A===>========$=>=>>========$===!=====!=====>=!===!!=$!$==!===$!===@›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!;òÿÿÿÿÿ÷Y !! !   pªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿþÿþÿþÿýÿèÓ65866556568665555868556866656865866556888666668688688866856868666566555556568866586668665685566566568556666685866866665685666686656856585655656655656566656888686865556555865568556666555855565665555676565666665565658665866885666555656686588658666666586666666665566865656568666868656886855556688656688586686566XTXTXTXTXTXTXTXTXTXTXTXTXTTVTTXTUXTTTXTTXTTTTVTTTTXTTTTUTTTTTTVTTTTTTTUTTTTTUTTTTTTTTXTTUTTTTTTTTTTUTUTTTTTXTTTTTTXTTTXTTVTTTTTTTTTTTTTTTTUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUTTTTTTTTTTXTTXTTXTXTUXTTXTTXTUXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTØ×ÿÿþÿÿÿþÿÿþÿþÿÿþÿþüóúúúúúúóüúòÕŽp??CCC>>>CC>>CC>>?CC>>>C>CCCCC>>>CCC>?CC>>llCl?>C>ll>>ClC>CClCC>>pl>?CC>>CC??CCCl?>llClCClCl>ClC>CllCllClllC??lllCCCCCÇýÿÿÿÿÿÌuClplClCllC>CCCCCllllCl?CllllCClCllC?CCl?llCClllCC?Cllll?CClllC?llllC?CllCllllllllCClllCCClCCCllllCllCCllCl??llCCClC?C?CClllClClCCC?lC>?CCCl??C?llCCC?llACC?CCCCC?CCC?C>>ClllCC?>>>CCCÆýÿÿÿÿç{ClC>>>CCCC?>>>>>CC>CCCCClCCC=>????>>>=CCAl>>>>>>>?>>C=>C?==>>CA>>>C==>A===>==>>>>>===>>=>===>=>>===>==============================$======$$==>==!===!======!===$====u÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY   $qªõÿÿÿþÿÿÿÿÿÿÿÿþþÿýÿýÿýÿýþþþþÿýàÓXXXVXXXXXVXXXXXXXXVXXXVXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXWXXX66586666585658585688666586856655666566868566856856865656666566568656566565556866566686656666865686868568565556855556665568658566666656858668656655685665855588656658666586566565686558666556665666865665666866665655566856665668556868656566586568666576586856656665668565565856XXXXXXTXXXTXXXTXXXTXTXTXXTXXXXTXXTXTXTXTXTXTXTXXXTXTXXTXXTXXXTTXVTXTXTXTXTXTXTXTWTXVTTTXTXTXTVTXTXTXTXTXTXTTXTTXTTTTXTTXTTXTWTTTTXTTXTTTXTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXÓÓþÿÿÿþÿÿÿþÿÿþÿþÿÿÿüüóúúóúüóúúò¬l=>??=?C>>C>=>>CC>??C>>>?>CCClClC>>?>>CC>ClC>C?CCCCllC>CC?>>>CC>>Cl>CllCClllClllll>ClCllCCC>CCCC>llllCCllCCC>CC>?lllC?ýÿÿÿÿÿÌl?CCCCCClllllllllCCll?CC?CCClllCllvllllCllll?>lllllolCAllll>llllllClClllllCCCCC?>?ClllllllCCll>?Clool?Cllll?ClllllC>CllllCCC?>>ClllCollllCCC>?CClplC>>>CllCClooplClllCC?Cl>>>>>>?ClllC?ƒõÿÿÿÿüÇCCCCllCC>>CCC>??>>=>>>=>>>>>?CCCCCCCC?>>C==>CC>>>=====>>=>>==CC>=>==>>==>>=====A>===>C>=>=>A========>=>?==>=>>=>======$$=======>=========$!!$$!========$!$!=$$!!!@áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!òÿÿÿÿÿ÷Z! !!  ! $q­õÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþþþýÿýÿÿýÿýÿæÓXTXXTXTXXXXTXXTXTXXXTXXXXXTXXXXTXXWXTXWXTXXXWXTXVXTXXXTXWXTXXXTX5856667666666586655655666586556686656585556866786868676558656686688658666655666866566656885565667686568665666668666866755658866656865685655656666566856568558558586866556666858666576556665655665655885668668868686866655568658565856676868566566566868686656666556686T:"TTTTTTTTT:TTTTTTTTTTTTTTTTTTTT"TTT"T""T"""T"""TTTTTTTTT"TTTT:TT:TT"TT"T:TT"T"T"TTT"T"TT:"T:"M"T"TT:"M"T"TT:"T"TTT:"T0T"TT:"TT:"T:"××ÿÿÿþÿÿþþÿÿþÿÿÿþÿþüóúúúúúúúúúòÕm>C>=?C?C>>>>>>??>>>?>>C?>>>CClC>>???CCC>ClCCCCClC>ClC?>?lC>>CC>?CCCC?C??CC?>lCllC???ClCCC>lll?CCClClCllCCl?ClCCClll?CÇýÿÿÿÿÿ×u?ClCll?llCClClllCCllCCllClCCl?C?lolllllllClCCll>CllCCCCllllllC?llClCllllCC?llllClClllClllllllC?CllllllCClCCllllll?CCC>loCClCC>Cll>?llll>CClCCC>lll?C>CClll>llllCClllC?CClC>>>C>A?Cll?>?{èÿÿÿÿÿúÇuCCCCl?=?lC?>>>>>lC>>>>>>>C>>>CC>CC>>>C>>CCC=>C>=>C>==>>>==>CC==>=>>=>>=====>C>====C===C>===>====A>======>========$=========C=======A>!!=$=$$=!$======$$!$$!$!=$ZñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿóY  ! qªùÿÿÿÿÿÿÿÿÿÿÿÿÿýÿýþÿþÿýÿýýÿýþþæÓTTTTTT"TTT:TTTTTTT"TTT"TTT""TTT"TT"T"TT"TT"TTT"TTTT68665556686665565665676865558566656856565585555688856586686656655656585688567666666867868666585866568565655856866565865668556656568666655588566565656665666656566656856656566856665656665556657655688566866585585686856565665676588668658556568685855565666665858665655TTTTTTTTTTTTTTTTTTTTTTTT""""T"""""T"""TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓÓÿþÿÿþÿÿÿþÿþÿþÿþÿÿüüóúóúúóúúúò¬pCC>>CC?CCCCC>=>??>CCC>>?CClC?>>=CCCCCClC>>C?>>>CC>>>?lCClllllllllCllCCClllC>?>AlCClCC?>?CCClCCll?>CCCCllCCllllllCCCllÇýÿÿÿÿÿÌllllll?>?lllCClllllll??lolC?C>llCllCCClCCCCllllC?llC>llllACCllCClllCC?ClCC?>>CllllllCCC?>>?C?llCCCCAC?C>?>llCCClC?lollCllC>>llCCll>lollCClll>>>CoC>ClCllCl>>>C>>>>=>>?CCCCCCllCCll>>CCCC>tÌýÿÿÿÿÿüßx>>C?=>CCClCC>>>>>A>>>CCC==C>==>>=>CC>==>==ClC>=>C>>>==C>==>===?CCC>>CC>>>>A=====>>==>==>===>==CC==>?========>=========$!$==!!$=!!==!========$!!!!==========xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @òÿÿÿÿÿ÷Y    !s¬íÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿýÿþýÿýÿýÿþÿæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT568565556656565885585656666565855685556556556686655666656656865665656566656565858685855585866666565656586866865666656565666566565666658656666665665865666866656566665668866666688856665688668686686668565656666655666665686858656665666658565855556556665655656866865565856655565886686666565TTTTTTTTTTTTTT:"""TTT""TTTTTTTTTTT:T:TTTTTT"TTTTTT"TT"TTTTTT"TTTTTT"TTTTTTTTTTTT"TTTTTTTTTTTTTTTT"TTTT"TTTTTT"TTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓ×ÿÿÿþÿÿþÿÿþÿÿÿþÿþÿúóúúúúúúúúúòÓŽmCl>=>A>CC>C>>>>>>=>C?=>CCCClC>>>C>>llCCl?Cl?>>C?>C>>CC>?ClllCClC?ClC????CClC>>llCC?>lC>?lCClC?ClC>CllllCClC?CllCCCCCCÇýÿÿÿÿÿÌuClCClC??CC?ClllCl?Cl??Cll?ll?CllC?Cllll>CCloC?CClCC?Cll>?lllCllllClC?lClC??lllClolCCCCCC?CllCllC?Cll????CCllClC?ClllClCCCCCll>ClCCCllCCClCC?>CllC>l>>ClCC>>ClCCC>>>?ClCC>>CCC?lCCCC>>C?>Clyßýÿÿÿÿÿÿè”CC?>>>lC?CCC>>?C==?C>>>>>>==>>>>CC>>>=>>C>AC>=>>===>>==>=>=>C==>>=>>=>=>A====>===>>==>===>A>==>=>========================$$=$!$========!==!=$==!!!===$$$@ÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Z   ! =}¬ùÿÿÿÿÿÿþÿÿÿÿÿþþþþþÿýÿþÿýþþþþþæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT65565566686565666665685686656656866666668668686666566558666866866865666685566666866656656556665666586665556665566586686665656556666656655666686868667668665856866565655868686656566666566866566668566565565656666686686566666666566666665866668665685866566858686866565686TTTTTT"0TTT:TT"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓÓÿþÿÿþÿþÿþÿÿýÿÿþÿÿüúúóúóúúúúúò¬soCC=>llC>>>>>CCCllCllC>?CC>=>>>lCC>ClC>=>>CC>?C>>CCCll>>lC>C>>>>C?>>?>?CCC>ClC?llCl?>?llCC??ll??llC?llC>>CllC>Cl>?>CCCÆýÿÿÿÿÿÌulCClllClllCCCCCClllllll??lol?>lpl??l?C??lClolCllllllllll?llC?CCllC???ClllllCl>>ClCClCllllCCC??CC>?llllllllClC>>AllCC??>?CllCC>lC>>CCC>?ClCC>?C>ClCC?>Cl>>C>CllC?>C??C>?lCC>>>>>?CC?CCC>>C?>>xßýÿÿÿÿÿÿóuCCCC>=>CC>>C>>CCC>>=CCC>=C>>>=>>>>>C>==>CC>>CC?CCC>>>>CC>>==>AC===>>Cl=>CC>>>===>==>>=========>===========>=========$====>========$==$$==$$=====$!==ZèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;òÿÿÿÿÿ÷Z  q¥õÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿþþþþýÿþÿþÿþÿæÓTTTTTTTTTTTTTTTTTTTTTT6685666665666665686686566666866566666676666565666686865656656886686568568666565685665656668556668666686668566586565686586685686886568868665568566688666668866866686686656656655865686586856868865665665665866866866665656656565868666656865656588656668685865566868688686686"M"""T"TTTT"""TT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:"TTTTÓ×ÿÿÿþÿÿÿþÿÿþÿþÿþÿþüóúúúúúúóúúò¬sp?C==CClC>CCC?>C>ClC>>>>lC=>A?>>lCllACCC>=>>>>lC?C?>ll>>lCC=>C>>?lCCC>>ll>>CCC?CCCCC>ClllC>>?CCC?ClClllCClCl??lC>>CCC?ÇýÿÿÿÿÿÌuCCCClCCClC??ClllClllllCCCll???lol?ClC>llClCllCCCClCll>ClCllCC??Clll?CCCllllC>ClCCCCCllllCC??lC??llllllCColCCCC?>lll>CCCCClCCCClC>>C?>lCllCCC>C?Cl>???>>?CCC??C>>?C>>?>?lC>?>>>>>llCCC>>>CC??>>{ßþÿÿÿÿÿÿüÌxCC>>>CC>>C>>>C=>>=>C>>>>>==>C>=>>>?>C>=>>CCA>CC>>>>>>>==>=>=>===>>CA>>>=>======>A>==========================!==========@>=!$===!==$===!!$======9CÈþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷[ !   qªõÿÿÿÿÿÿÿÿÿÿÿÿþþÿýÿýÿþÿýþþþþþþæÓ6586666685568658686566866556656656555686586855558886586856856656558665665666666655566866666865668865666856565568656665656566685656656855855668686865666668686655666565566566556656566686866666656566658666566666656586556685656686686668666568688565666568655565685656866586556656666556866866T":TTT"T:TT"T"M"TTTTT  "T"TTT"""ÓÓÿþÿÿþÿþÿÿþÿþÿþÿÿÿüúúóúóúúúúúòÕp?C>>>>=>>>>>>>>>?C>>C>>CC>Cll>>>>C>>>?C?ClCC>>CCC?=>lC=>C>>All>>lC?lCColC?lC??>>CllCCC>>>ClllllC?CCC>Cl?CCCCCllllllllÇýÿÿÿÿÿÌllClCCCCllllllClC>C>>ClllCC>ClCll?CllC?ll???>C?lCCllll>>lllC?ClllC?llllllllllC?CCClClllC?Clllll>CCC>>CC>Clol?ClllooC>?lCllll?CCCllC?>ClCCC?C?Cl?ClC>CllCllCC?>>?CCCCCClC>>CCClCCACC>>>>>>?C??>>>CuÌõÿÿÿÿÿÿÿúߘuCC>=>>CCC>A>C>=>?>CCC>>>>==>>?>=>>=>>==>======>=>C>======?>=====>=====>=>=====>==========>=========>======>=$=!!$==$=====$!$$$==$====!!$$=ZÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y  !!!=pªõþÿÿÿÿÿÿÿÿÿÿÿÿþþþýÿýÿýÿþÿþÿþÿæ×TT"TT""M"TT:TT:6656665668668865665666866565865865665566856668665666566865656656586656565555685666868665665655885865665686855556665686855686656556555586566868666568556555665688665i865656666886686656556665566556686668688666666666656565656655588668666566668656685555585866566655665656566868666885668668656656586686665666TT TT"TT"TTTTTTTT"T"TT:T"T:TTT:T"TTTT"TTTTרÿÿÿþÿÿÿþÿþÿÿþÿÿþÿúóúóüóüóúúúò¬Žo?>>>>>>>?>>>>>>>>C>>>>>>>>>llC?>>CC>>>l?>Cl>>>>CC>>>>>>>??>>CC>>>>Clolllll>>CC>?CClCCC>>?Cl?ClllC?C?>CCCCCCllllllCCl?ÆýÿÿÿÿÿÌlCCClCCllCClCCllCCCC>?llCCl?CllCCClllC?llC>?Clllll>ClCl?ClC?CCCllCCllllllllllCC???ClClClC>Clol>?CC?ClC?CllllCCllllllCClCllllClllClC>>?lC>>ll>>CC?C?>CCCllCC>>>>CC>?lCClC?>C?ClC>>CC>>>??>>C>>CC>CCCCƒßúÿÿÿÿÿÿÿüèÆuCCC=CAC>>>>>>>>>>>AC>=>=CC>C>==>C>=>C====>C>>=>=======>======A>===C==>>============>=A==>>=$=====A=!====$$$==!=====$==$!$$$!!==!=====xáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿóY  ! ! =pªõÿÿÿÿþÿÿÿÿÿÿÿþÿþÿþÿýþÿýþþþþþþæÓ"TTTT"TTTTTTT556568665556588586666866865665666566665686686656886686686566665565668686665686556665658665665866886665866665665665565666565686856565585657665586566886665865656865658666665655866655668656866856666686666568666658565556868558666686686586655566666666868686666668668686566658666656566566656555658665566565656655565665658TT  TTTÓÓÿþÿÿþþÿÿþÿþÿÿýÿþÿüüóüóüóüóúúòÕo>?>CCCC>CC>>>>>>>C>>?CC>>CCC>>>>?CC>?C>=>CCCCCCCCC???llCCCCClC>CllC>CC>>>C?>llCCC>>?ClllCl?>CCC?CCCCCllC?>?CC?>ll?>?lÇýÿÿÿÿÿÌullllllCC>CllCAllClClC>ClllCClllCCCCCC?llllllllCCC>CC?ClllCClllC?CCCC>?C>CA>CClllCCCCCllC>ClC>llllCCCCllC??>C?>>>CC>?Cl?>>>>>?C?>>?lC>ll?>ll>>CCllCCCCC>>?>?CClll?ClC>>>?C??>ClC?CCClCC?CCC>>>CCC>>??>l›èüÿÿÿÿÿÿÿÿ÷ÌzCCC?C?>>>>ACC>>CC=>>==>>A>=C>==AC===>>C>=C>>>>>>=>CC>==========>>====>=========A===$!=====>=$=>=$==AC====$!$====!=======!===@A‚ÎüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Y ! 7sªõÿÿÿÿÿÿÿþÿÿÿÿÿþþýÿýÿþýÿþÿþÿþÿæÓ:TT"TT"T""TT""5665886686566568558555656656655568685665i685666856858667865685556656565555688656555686668558568665568666868865586666686568666566586665665656566668566566556558665665685686556885865865866868558655588658666656855656866655668556658666566865565666556566655665666566856666655686686866555865856666885556  Ó×ÿÿþÿþÿÿþÿþÿþþÿþÿÿúóúóúúúóúúúò¬p>>?CCCCACC>>>>>>>C>=CCC>CACC>=>?C>>?ClC>>>CCCCCC>>>>>ClCCC>C??C?Cll>>C>CCC>>Cllll??C>>lC?CCC?C?>?Cl>ClC??>?CClC????llÇýÿÿÿÿÿÌollllll?>lClllCCC>ClC>>llllll>CC>?llCCllClllllCCC?CCC>?lCCCClCll>>llC>>>ClC>>ClCllC??lCC>?CllC?CllC>CllC???C?>>???>?C?>>>Cl?CCC?>>Cl?>CC?>llll>>lC?C>>??>>>>ClCCC>CCC>>>>>CC>CCCCCCllll?CCC>>>=>>>>C>>C>=u–ßúÿÿÿÿÿÿÿÿüá›{uCCCCC>>>>>C>>?C=>C=>=>>==>C==>===>=>C>==>>>>>>>=>===================>>=$===>==$$=>=====$$===$=>=====$$====$!$======!=@C–ßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY            !p­ùÿÿþÿÿÿÿÿÿÿÿÿþþÿþÿýþþÿýþþþþþþæÓ6656566866656586668668665866856665655666866886666556685656666865656656665665855656666568656566666585665555666586656686556568666768686656655855556865666665686565656666566565665655656656666566666665i8556555688656566565668665566656566566868665656666666686556668666855688656865566865668666856768666565658    ÓÓÿþÿÿÿþÿÿþÿÿÿÿþÿþÿüúúúóúóüóúúò¬p?C==>>====>>>CC>CCC>>C>>>>>?CCCCC=>>>CC>>CC>C>C>CClC>Cl>??>C>CllCC>lC?>>>CCClC?>>?ClC?ClC??CClC>Cl?>CllllCCCC?C??CCllÆüÿÿÿÿÿÌl>>>ClCCClC>>>CCl??ll?ClC>>CllCCClCClClACCCCC?>CllllllllCCCCCCll?Cll??llllClllllCC?>CllllCCllClC?ClCClC?CCC?CC?lCCClllCl?ClCC??C>ClC>ClC>>CCCl?>ClCCCCCClllCll?>?>>CCCCCC?>CC>>>?>>>>>>>>?>CCCCCC>>>>CCC>?>>C{Æñüÿÿÿÿÿÿÿÿýòß›xZtCC>==>>>==>C>>>C>=>>===??>>CC====>=======>>==>>=====>=>=>>====>===>======>=========$$===$==$====$==$=!$===@CZƒÌñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ;òÿÿÿÿÿóZ  qªíÿÿÿþÿÿÿÿÿÿÿÿÿÿýÿýÿþþýÿþÿþÿþÿæÓ5686566666666656558666856566666866666655655556566565566866656866665665666656566686665668658i8666666666565565665866666666555666856655666656668656565866565686666656568666686565566866566655685656666686565686665665566568665i6656866656556565686668566668665685556668665666668665666686665666666655666666666666655666  KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKÓ×ÿÿþÿýÿÿþÿþÿýþÿþÿÿúóúóúúüóüóúò¬Žp?>=>>>>=>=>>>>CCCCC>>>>>=??C?>CC?>>==>>=>?>??>>CClCCC>>>>>C?>CllCCClC?>>?CllC?>>CC?ClClACC?lC??Cl??>ClCCClC?>????CCl?ÆýÿÿÿÿÿÌC>>CCllCC???>??lC??CC>?lC>>ClllCllCllCCCCl>>?>>?lllllllCCCllC?CCClll?>CCClCClllll?>?ClllC??llll??llllCCCl?>CClC?>ClCCllCll>CC>CC>llC>llC>>?>>lC>?C>CC>CllClllC>=?>>?CClllCC>>>>CC>>>>>>>>?CCllll>>>>=>C>>C?>>>==u˜Î÷ýÿÿÿÿÿÿÿÿÿþò߯zZCCClA=>CA>=>=>C===>C>>CC>>=>C>=>>=========A==>=>==>=>===============C>===>======!=====!!!=>=$=!===@BuÂÎ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷Y  !  ! =pªõÿÿÿÿÿÿÿÿÿÿþÿþþýÿýþÿþÿýþþþþþþàÓ6856686686865866666566566665666566565655686866866656656566568566686565666686656655656666566566665656666666665868686568665666866656856568666665655666666666568866665666586666686665666865868556666566656566565656866686686866655666656556668665656866666666668565865686566568866566866566566586566568 KKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKKKK³KKK³KKK³KKKKKKKKK³KKKKK³KKK³KKK³KKKKKKKKK³KKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKKKKKKKK³KKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKKKKKKKKKK³KKK³KKKKKKKKKKKKK³KKKK³KKK³KK³KKKKKKKKKKK³KKÓÓÿþÿÿþÿþÿþÿþÿÿþÿþÿüúúúóúóúúúúò¬o>>>>>>>>>C>>>>=>>>>>>>A>AC>CC?>=>>>CCCCCCC??C?>>C>?ClC>C>CCC>>l>>C>>>C?CC>Cl>?>CClC>??>>ClClCCllCCC>>CC?>CllCCCCCCCCCÇýÿÿÿÿÿ×uClClCCClCllllClC?CllClolCClC?CCCCCClCCCC?CllllCCC>>CCClCCll>>lllCCC??lllC??ClC?>?CCCCCllCCCACC?CCllC>ClC?C?>CCllll?>CCCC>>ClllC>Cll>?ClCCCCCA>CClC??>ll>>>C>CC>>CCC>C>CC>>>?>>Cl>C?>CC>>>>C>>>>>C?>=?CC>>CC>>>>A>>Cu˜Ìèúýÿÿÿÿÿÿÿÿÿþò߯”xCZCCCCC>====>=>>====>>========>A=>===>>==A>=>==========>>========$$=========!=!$=====@=CCZx–ÌñüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ@òÿÿÿÿÿ÷Z qªõþÿÿÿþÿþÿÿÿÿÿÿýÿýÿþþþýÿþÿþÿþÿèÓ866568686668686666666686686566668666565686656658666686556566656656565568666656666656666668568686558656566565666856666556665666866666665565556668568666866565565656666666566665865668656665666566656656665666665686666668656868666666668666866568666886565556656686865686866668565666866666656666665568666855iKKKKJKKKJKJKKKJKKKKKKKJKJKJKJKJKJJJKJJJJJJJJJJJJJJJKJJJJHJJHJJJHJJJHJHJHJHJHJHJHHJHHJHHJHHJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFHHFTGHHFHGHGHFTFHFTFHGFFHFFFGFFFFF KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFGFFGFGGFHGFTFHFTFHFTFHFMFHFTFHFTFHFTFHFTFHFTFHHGHHGHHGGHGHGGÓ×ÿÿþÿÿþÿþÿþÿþþÿþÿÿúóúóúúúúóúóòÕo=>C====>CA>>>==CC>>CA=>>>C>>>>>>=>C>CCCAlC>>>>>=CCCCll?CC>>?>>>>>ClC>CCC?>CC>>CCClC>C??C?>CCCllCC???CCCC>CllCllC??CCCÆýÿÿÿÿÿÌuCCllC>>CllCllllC?llCllplClC???CClllllCCCClllllC?>>??>CllCllCCClCCClCCllCl?CCC>?>>?C?>>lCCCC>>CllllCC?CCCCC?>ClC?ll>>ClC>>CllllC?lC>>?llllC?CC>>CC>C>ClCCCC>?ClCCClCC>>>>>>>C?>lC>CCCCCC>>>>>=>=>>>>CCCC=>CCCC>>>==CCCA>Au›Ìèüýÿÿÿÿÿÿÿÿÿÿÿ÷ñßÌÆƒuZCCCA@>A===C======>=============>>>==A=========A==========$=>=====CC@@@CCBZx”ÆÌçóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ!!;óÿÿÿÿÿóY!     !!!qªõÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿþþþþþþþýàÓHHJHHHJHHJHHJHHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJHJJJHJHJHJJJHJ5666666656666556656658665665666856686656686656868656886866686665666868666666666666568656665665666866656566666568656666865568665686866568665i66666685866868666566666866868665656686656665566665666685666586656665656656665656665658656856686666665666656686686558665666866666668686566686688656656686666ººººººººººººººººººººººººººººººººººº¸ººº¸º¸º¸º¸¸º¸º¸¸¸º¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸¸¸·¸·¸····¸··¸·········³······³·K·³·K·K·KKKKKKKKKKKKKKKKJKKKKKKKJKKKKJJKJJJJJJKJJJKJJJJJJJJJJHJJHJHJGHGGGGGFFFFFFFKK³K³K³KKK³K³K³KKK³K³K³K³K³K³K³KKK³KKK³K³KKK³K³K³K³K³K³K³K³K³K³K³K³KKK³K³KKK³KKK³KKKKK³K³K³KKK³K³KKK³KKK³KKKKK³K³K³KKK³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³KKK³KKKKK³K³K³KKK³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³K³K³KKK³KKK³KKKKK³K³K³K³KKK³KKKKK³K³K³K³K³K³KKK³KKK³KKKKK³K³K³K³K³KKKKKFFFFFFFFGFGFGGGGGHGHHGHHJHJHHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJÓÓÿþÿþÿÿþÿÿÿþÿÿþÿþÿüúóúúóúóüúúò¬Žp>=>>CC>>>C>>>>CC>=>C?=>C?CCCC>?CCCCC?>?C>>>>CCCCC>>>>>=>CC>?CClCl>>?>>CC>>CC??Cl>>>>CCClCCCCCC>>?CC>>CCClC?>ClC?CCC>?ÇýÿÿÿÿÿÌlClCCCCCCCC>CCCClC>>?CCllCC>>CClCCl>>>>C?ClC>CClllClCCl?CCC>CCCCCCCC??C>llC>CCllC>llllClCCCCCCClC>>?CC?CCCl>>llC>ClC>ClC>C?ClCC??>>CC>C>CC>?lC?ClCllCC>>?C>=CC>CC>>?>>>??CCCC>Cll>>>>>>?CCCCC>>>>CCCC>>==>C>=>>>??>>>>>A==CC=?z›Ìá÷üüþþÿÿÿÿÿÿÿÿÿÿýóñßÌ›ƒutZuuZClZCCCCCCCCAAAAA=AAAA===AA@ACCCC@CCC@CBCZCCZCCuZuxƒ–ÆÆÌÎßçò÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿ÷Z !s­íÿÿþÿÿÿÿÿÿÿÿÿÿþÿþÿþþþþÿþÿþÿýÿæÓ³·³·³³·³³··³·³·³·³³³³³·³·¸·³·¸·³·¸·³¸¸·³¸³¸³¸³¸³¸³¸¸¸·¸·¸¸¸¸¸¸¸¸58686666866865668666568666866866666666666665566656868665556866566665665665565866656668586865686656666665656868686666866566568565686565656566665i66686656568565666665655658656665866666656555686556685666566666666866665668656866866665566676666556565566665586865566686656865665656665866855666665ººººººººººººººººººººººººººººººººººººº¸ºº¸º¸º¸ººº¸ºº¸º¸ºº¸¸º¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸··¸·¸·¸···¸···³····³··³·K·³K·³·K³K·K³K·KKKKKKKKKKKKKKKKKKJKJKJKKJKKJKJJ·JJKJJJJKJJJKJJJJJJJJHJHJHGHGGGGFFFFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFGFFGFGGGGGGHGHJGHGJGHJGJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþþÿþÿýÿþþÿþÿþüóúúúúúúóúóò¬Žm>>>>>>>=AAC>>=>C>=>>>CC>=>CA>>>>>lC>>>C>>>>>>ClC>>?=>>=>>>>?lCCCC>>>>C?CCC>?>CC?>?>>ClCClllClC>>?CC?>ClClC>CCC??Cl>>>ÇüÿÿÿÿÿÌCCClC?CCCC>?C?>llC?>>?>CCCC>>??CCCCC?>>>??lC>>ClllClCll>C>C>>CllCC????ClClCCClllCClllCC>CllllCC?>>>>?lC?CCC??Cl>>>ClCCC?C>>>lA>>>>>CC>>>>>CCl>?llCClll>>CC>CC?>>>>>>=?>>?lllCCllC>>==>CC>>CC?>>>CCllC>==>>>>>>>=>>====>==>C>==>>=>?Cx›Çßñúüýþÿÿÿÿÿÿÿÿÿÿÿÿÿþü÷òñçáßÌÉÆÆÆÆ››–––”–›”ƒ‚‚ƒ–›ÆÆÆÌÌÌÞÏßßááçèñòó÷üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–  @óÿÿÿÿÿ÷Y  !    =ެõÿÿÿÿÿþÿþÿÿÿÿþþþþþþÿþÿýþþþýþýæÓ·³³³·³³³³³³·³³³³¸³³³¸³¸³¸³·¸¸³·¸¸³·¸³³¸³¸³·¸³¸³¸³¸¸³¸¸¸¸¸³¸¸¸¸¸¸6668686666865656666668656668686586666656568666686668666656666655656656656656665865865666565665656566656565658565688686656656666665558666686686668665656666556666666566565686656586666565558665658666668665566566656666i6556686568566656865655556565686666866685586668666666668666666565666666856566566656666ººººººººººººººººººººººººººººººººººº¸ºº¸ºººº¸ºº¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸···¸·¸³¸·³·³·³·³·³·K·³³³³³K³K³³K·KKK·K·K·K·K·K·J·J·KJ·J·KKK·JKJKJ·JJJJJJJKJJJJJJJJJJJJJJJJJHJGJGHGGGGFGFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFGFGGGGGGHGGHGHGJGHHGJHHJHJJHJHJHJJHJJJJJJJJJJJJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿÿÿþÿÿþÿþÿÿþÿÿüóúóóúóúúúúò¬so?C=>>>>>>>>C>=Cl>>>>>C>>>A>>>>C=>CC>>??C>>CC>>>>>Cl?>>CCCC>>??>?CCCCC??>Cl?CCC>>CC?>ll?>??>>>CC?CCC>ClC??>?lC??CC?CC?ÆýÿÿÿÿÿÌl>CC?>CllClCC>ClCCCClCCCCllCCCCClCCClCClCCCCCCCClC>C>CCCCClllCClCCCCC>ClCCC?C?ACC>ClClC>ClC?>>>??CCCCll?CC?CCCCCCC>CCCCClC>ClCCCCCC?C?ll>>CC?Cll>>C>CC>>CCC>>>C>CC?>ClC>>CA>>>=CC??>>CC>>C>>C>>>>>>>>>>?C>>>>>>C>>>>>>CC==>>>>>>>>==?C>===uƒÇÌçñ÷üüüýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ;òÿÿÿÿÿóZ =sªíÿþÿÿÿÿÿÿþÿÿÿÿÿþÿþþþþýÿþÿýÿþÿæÓ³³³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³³³³³³³¸³³³¸³¸³³¸³¸³³³¸³³¸³¸³¸³¸³¸56866i5666686865686868666856666665686666685656866656668866665665665665666685655668666656566566558665665666666686665668656665665665568666686566866568665665666566666556686665556686666586566556856656666666856566668666666865586658686666566865866666668868668655656586556865666655656685666866ººººººººººººººººººººººººººººººººººººººº¸º¸º¸ººº¸º¸ºº¸º¸º¸¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸·¸¸····¸··¸··¸·······³··K··³·³·K³K³K·K·K·KKK·KKK·J·J·J·JKJKJ·JK·J·JKJKJ·JKJJJKJJKJJJJJJJJJJJJJJHJGGGGGGFGGFFFFDKKK³KKK³KKK³KKKKK³KKKKKKKKKKKKKKK³K³KKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKK³K³K³KKKKKKKKK³KKKKKKKKK³K³K³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³K³K³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³K³K³KKKKKKKKK³KKK³K³KKKKKKKKKKKKKKK³KKK³KKK³KKKKKKKKKKK³K³K³DFFFFFGFFGFGGGGHGHGHHGJGHHJHJHHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿÿþÿþÿþþÿþÿþþÿþÿ÷úóüóüóúúóúò¬}p?C==CC>>C>=>CCCC>>>>CC>>AC>>>>C>=>>>>>>>C?C?>>>>=CC>>>C??C>>>>>CllCC>CCCClCCCC>>ll?ClC>>>>>=?lC>>C>CCC>>>CCCCCCCC?>lCÇýÿÿÿÿÿÌCC??>?lllllC??CllCl?lC>CC?CllCCllC>>>ClCCCClCllClCCCCllC>?lllllllC?lC>CllllCC>>??CC>CCC??C?>>>>?>?lllC>?C?ClC>>C?CC?CC??CCC>CCCllC>?>?Cl>>>>CCC>>>CC=>>>>>?>>>>ClC>>>CCCC>>===>>C>>>>>>>CC>>CC>?>>>>>>ClCC>>>>>CC>=C>>C?>=>=CC>CA===>CA=>===ACCCC=Cu{ƒÉÌáñò÷úúüüüüüýýýþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;óÿÿÿÿÿ÷[ !!     =pšõÿÿÿÿþÿÿÿÿÿÿÿþýþþÿþÿþÿýþýÿýþþæÓ³³³³³³³³³³³³³³³³³¸³¸³¸¸³¸³³¸·¸³¸³¸¸¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸668666685668666565686568868686668665866665866686558658568666666865565656666656666658666656666i66665655656655666565565865666686665656666686656686568866656566876665666665656656666855656866668666588565656666555566665865655665865686566666i585666665656565666666565665655666686666656866566665556866766668ºººººººººººººººººººººººººººººººº¸ºººº¸ºººººº¸ººº¸º¸¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸·¸·¸···¸¸···¸···³··³··K·K·³³·K³K·K·³···K··KKK·KK·K·J·J·J·J·J·JKKWKJKJKJ·JJJKJKKJJJJJJKJJJJJJJJHJHJGJGHGGGGGFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFGFFGGGGGGGHGHGJGHHJGJHHJHJHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþÿÿþÿþÿÿþÿÿüóúóóúúóúúúò¬o?>>=>>>=>C>=>>>>>A>=>C>>>>>>>>>>>CCC>>>C>>>>>CCC>CCA>?CC>?>?C>?>CC>C>>?>CC>>??A>AlCC>>C???C?ClCCCCCC?>ClCCC>>CCClC?CCÇüÿÿÿÿÿ×lCCCC??>ClC?C??lC?C>??CCC?Cll>>Cl?CC>loC?C?C?CCClCCCCCCl>>lCCC>??CCl??lCC>>?>>ClllC>?CCCCCCCC?Cll?>CC>Cll?>ClC>CCllC>CCC?ClC>?>CCCCCCCCC>>C?CC?C>>ClCCCC>>>>>CC?>>CCCCC>>>CCC>>??>?C?CC>>>>>=>>>>CC>=>>>>>=>C>>>>>>>>>>>??>>CC>==>>=>>>>>>>==C====>@===>===>A=ACZuxzƒ”››ÆÆÌÌßßáòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Z qªíÿþÿÿÿþÿÿÿþÿÿÿÿþþþþýþýÿþþþþþþæÓ³·³³³³³·³³³³³³¸³¸³³³³³³¸³³¸³³¸³³³·³³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸³¸¸¸¸66565i66666666666555666565i686866656666556666686666665656666666566668686856666656656666666566666i666555666666666665656686686665656666666666668668668566568666866666656665666886666665i666565i55i66666666565666668i566666666565686665666665586656566866866686866666665668656665866666556866656656666ººººººººººººººººººººººººººººººººº¸ºº¸º¸ººº¸¸¸º¸¸¸º¸º¸¸·¸·º·º·º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸····¸··³·³··³·³³··³³K³K·³³K³K·KKKK·KKK·KKKKKJ·J·JKKKKKJ·JKJKJ·H·JJJJJJJJJJJJJJJJJJJJJJJHJHJHJGHGGGGFFFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEFFFFFFFFGFGFGGGGGGHGHGJGGHGJGHJGJHJJHJHJJJHJJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿÿþÿþþÿþÿþþÿþÿú÷úúúúóúúúóòÕp=?=>>>>===>>==>C>====>>=>>>>>CCCCCC>CC>>>>>?>>>C>>>>CCCCC>=?C?>>?>>CCC>CC>>>>>>>>CCC>>?>>?ll?CC?CClC??CC?CC>>>lllllCCÇýÿÿÿÿÿ×uA>?CCC?>CCCCC?????>>>Cll>?CC?>?CCCllloC?ll>>>>CClC>>>Cl?>>>?C>>>?ClllCC>>>??>?Clll??llC?CCClllll?>CC?llCCCCllClllC>CC??ClC>>>CC?>?lllC>>>>C>CC>?>ClCCC>>>>>>?C>>>CCClC>>ACC>>=>>>CCCC>>>=>===>>CCC>>=>=>>>C>CC=>>CC?CC=>ACCC>>==>>>>==C=========>==>=======C>=A>>=>=>==>>====={÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @óÿÿÿÿÿóY    !!! ! $qªõÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿþÿþÿýþþþÿþÿàÓ³³³³³³³³³³³³³³³³³³¸³¸³¸³³³³³³³³¸³¸³¸³³³¸³³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸³¸³6666886566666666665i666666686665665666866686566666866656866666666565666566686666666866566566668666666666686866556566656686666866666656666i66665656666666566666666666665668666686656i65666866666686656686666866686666666666666665i86556666i656666566665666666686668668666665686666686685868666i5666666658ººººººººººººººººººººººººººººººººººººººº¸º¸ººº¸ººº¸¸º¸º¸º¸º¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸¸·¸·¸·¸··¸········³··³··³·K³·K·K·K··KKK·KK·KKKJ·J·KJKKJKKKKKKKJ·J·J·JKJKJKJKJJKJJJJJJJJJJJJGJGHGGGGGGFFFFFF³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKK³KKK³KKK³KKKKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKK³KKK³KKK³KKK³KKK³KKK³KKK³KKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFGFFGFGGGGGGHGHGJGJGHHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓÿþÿþÿþÿþÿÿþÿÿþÿþÿüóúóúóúúóúúò¬p>=>=>=>>>>CC?=>>>=>>>C>>>>>>A>>>>>>>=>>>>>>CC>>CCCCCC>=>CC=>CCCCCC>CCC>?>C>CC>CCC>CCCC?>C?ClC>?C??CCC>???CCCCCC>>Cl>>ÆýÿÿÿÿÿÎC?CCCCCCCCC?ClCCC?C?CC?llCC>?CCCC?>CCCl?>Cl?>C??C?CC?CCC?C?Cll?>CCC??CC?CCCCC?lCCCC>CCCClCC>>lCCCC>llCC>>CC>>CCCl>>Cl?>C??CC>?lC>CCCCC?C>CCC>>?CC?CC>>??CCCCC>>>>>>>>C>>>lC>>>>CC?>>>>>?CCCC>>>>>>>>>>>AC>>>>=C>==C>==>>>>>>===>>?====>l==>=>C==>C>==>===A>========>===>=======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y!9qªõÿþÿþÿÿþÿÿÿÿÿÿþþÿýþýþýÿþþþþþþæÓ³³³³³³³³³³³³¸³¸³³³³³³¸³³¸¸³¸¸³¸³³¸³¸¸¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸688i66666685666666565666665666866668566666686665i8866566655666666656656666866668666566666868565666666566686i66666666656665566566866568666668666865666868856656566666666666566i5668668656666566866656656886686666686656868656665686566685665i8665566656666668668686866566556655666666668668665668666666655668ººººººººººººººººººººººººººººººº¸ºº¸ººº¸ºººº¸º¸ºº¸º¸º¸¸º·¸¸º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³·¸·¸·¸·¸····¸·¸··³···³··³·K·K·³K³·K·K··K·KKKKKK·KKK·KKK·KKKJ·KWKKKWKKJKKJKJJJJJKWJJJJJKJJJJJJJJJJHJHJGJGGHGGFGFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKDFFFFFFFGGFGGGGHGHGHGHGHHHGJHJGJHJHJJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþÿþÿþþÿþþÿýÿÿúóúúóúóúúúóò¬q?>=?>>>CCCClC==>=>>C>>C>>>CCC>>>>>===C>>>>>ACC?CCCCCC>=>ClC>>CCCCCl>C>>CC?>???>C?>=>>?CCCCClC?????C?>>>>CCCllllC>>CC>ÇüÿÿÿÿÿÌlClCCC>?CCCC?CllC?CC?>>CCC?>Cll?>>>>>CCC>CC>???ll?>Cll???CCCll??Cll?>>>>>>C??CCClC>ll>>lllC>>>>AlCACCCC>>>>>>>>??>CCC>>C?>>?llC>>C>>>=>>>lC?>>>>CC??>>?lll?>CC>>?=>>>>>=>??>>>?lCC=>C>=>>llCC>>C>===>>>CA>A>==>>===>==>C>=CA===CC==>==>CA>>=>>===C==>>===>=====>==>============zóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY  ! !  qªõÿÿÿÿÿÿÿÿÿþÿÿþþþþþÿþÿýþþþþþþÿæÓ³³·³³³³³³³³¸³³³³¸³¸¸³³³¸³³·³³·³¸¸³³³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸³³¸¸¸¸³665686566865655868655666855656666666666568665656666666666i6866566686566668668666655686666668666666566666686865865566666568666666555666656665656656566686655666i66666666656666566665665656668666866656665666656566666658666856656665666666656666566565665656666665665556668655686655556586668656565656666656656568666666566ºººººººººººººººººººººººººººººº¸ºº¸ººººº¸¸º¸º·ºº¸¸¸º¸º¸¸¸º¸¸·º¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸·¸¸·¸···¸¸³··³·³··³·³·³·³·³³³³³K·K·K³KK·K·K·KKKK·KKKKKKK·KKKKKKKKKH·H·JKJJKJKJJJKJJJJJJJJJJJJJJHJHJHHGGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFGFGGGGGGHGHGHGJGHJGHHJHJHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿÿþÿþÿþÿÿÿþÿþÿþÿüúóóüóúúóúúòÕp=>>>>==>==>>>>>>>=>CC=>=>C>>>>>C>>?>>>CCC>>CC>>>>>>>>?>?C>C?>>C>=>C>CCC>>CC??CCC>>?CCC?>?>CCC>?CCC?>>CCC>??CCCCCC>>??ÆýÿÿÿÿÿÌlCCCCC?>CCCCC>ACC>>ClCCC?CCC>ll?CC?CCCCC?ClClC?CCC>?lC>C?C>?ll?CCCCCCC>>CCClCCC>?lCC?>?CCCCCC?CCC>C?>Cl??>>lC>>CCCC??>>?CCCCl?>C>?C??CC?CC>>???>Cl>?>>CC?C?>C>AC>>>lC>>>>C>>>>>CC>>>>>>>>CC>>>=>=?CCC>==>>>>=>C>>>>>>=>>==AC=>>>>=>?==AA>A===C===>=>=A>==>>=>>====>=======>====z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!óÿÿÿÿÿ÷Z    =qªíÿþÿþÿþÿÿÿÿÿÿÿþÿýÿýýÿþÿþþÿþþþæÓ³³³³³³³³³³³³³³³³³³³³¸³³³³¸³¸³¸³³³³¸³³³³¸³¸³¸³¸³¸³¸¸³¸³¸³¸³¸³¸¸³¸8666666556858686666666655656666666865655686565566855566866865666666666655666566668665668666685i68668i6866556565566656666656666686666666666665686666856556866566666656566666i6666566666655666666568666666866665566556666668655566666655655568566666556666566666566656656i65665666566656666866586666658566666665656566668688666566585ºººººººººººººººººººººººººººººººººººººº¸ººº¸ºº¸º¸ºº¸¸¹¸º¸¸¸º¸º¸¸º¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸·¸·¸¸····¸¸·¸·¸·¸······K··K····³K··K·K·K·KKK·KKKK·KK·J·JKKJKKJ·J·J·JKJKKJKJ·JKJJKJJJKJJJJJJJJJJJHJHHGHGGGGFFGFFFFK³K³KKKKKKK³KKKKK³KKK³KKK³KKK³KKK³KKKKK³KKKKK³KKK³KKK³KKKKKKKKKKKKKKK³KKK³KKKKK³KKKKKKK³KKK³KKK³KKK³KKK³KKKKKKK³KKK³KKK³KKK³KKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKK³KKK³KKK³KKKKKKK³KKKKKKKKKKK³KKKKK³KKKKK³KKK³KKKKK³K³EEFFFFFGGFGGGGGGHGHGJGHHGJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿýÿþÿþÿþþþÿþÿýÿþüóúúóúóúúúúò¬Žm=?>>==>==>>>=>CCCCCCC>>CCC>>>>>A>>CC>>CCCCCCC>>=>>?CCC>CC>>C=>>>>>>>>>C>>CCC>?ClCCCCC?>C??>C>>CCll?>Cll>>?>>>>>ClC>>?ÇüÿÿÿÿÿÌlC>?CC>??C>>>?>?>>>CllCCCllCCCC>?lllC>Cl>ClllllC?>?CC?>?>?CClCCCC>??CCCClCllllCCC>>CC>>?>>>>>??>>?CC>CCC?>?CC>>ClCC>?>>CllllC>>CCC>>>ClC>==CCC?>CC>>>>??>>CCCC>>>>CllC>=?CCCC>=>CCA>=>>>>>>=?>==>>CCC>==>>>==>CC>CC>==>>==>>>?C>==A>>>CA==>===>======>C===C>=A=======>==>==>===z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY! !  !qªùÿÿÿÿÿÿÿÿþÿÿÿþþþþþþÿýþýþþþþþþæÓ³³³³³³³³³³³³¸³³¸³¸¸³³¸³³¸³³·³³¸³¸¸¸³¸¸¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸56558665666666566665656865656568666665656666666666665666658666666666665666666666566666568665686666686556558566556566568666566566665886685556566555658868865666656686688666666865i5665656666556655668i566666556656666655655566666666565656666656566665866566666i5566686666565866566665568i5656866565666666566865866666668656665665658666655655656666ºººººººººººººººººººººººººººººººº¸ºº¸º¸ºº¸¸º¸ºº¸º¸º¸¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸³¸·¸·¸··¸·¸···¸··³···³···³····K·KK·³·K·K·KK·K·KKK·KK·JKKKK·J·J·JKKJKJ·JJ·H·JJJJJJJJJJKJJJJJJJJJJJJHJGJGHGGGFGFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEFFFFFFFFFGFGGGGHGHGHGHGJHGJHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓÿþÿþÿþÿþÿÿþÿþÿþÿÿüóúóúóúóúóúò¬o>?==>>>>>=>C>==>>>>>=>=A>>A==>>?>>>>>>>>>A>?>>>>>>>?>>>Cl>>?=>C>?C>>>>CC>>CC>>>>>?>>?>???CC?CC>>?CC>?lC>>ll>>C?ll?>??ÆýÿÿÿÿÿÌlC>>??CC?CC>ClC?C>C>>AClCCC???C?>Cl?C?C>>ClCCCCC>Cll>CCC??CCCCCC>>CCCCCC?>A>ClCC>>CCCCC>?CCCCCC??C????C?CC????>CCC?CCC>?CCCCCC>>CC>?>>lC>?C?Cl>???C>>>CC>>>>>??>?>>C?>>>>C>>>C>C>>>>>>>>>>>>>>>>>>C>>>>=>>C?=>?>==C?==>>=>==>>=>==>=>>>>===>>==>==>==C===>===>==A>===>==>===>==z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿ÷Y !qªõþÿþÿÿþÿÿÿÿÿÿÿÿþÿþþþþþþÿþþþþÿæÓ·³³³³³·³¸³³³³¸³³³³³¸³³¸³³¸¸³¸¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸55666666686566656566566565665666i668666668656555665656665668565665666666556558865558656656688668668666665566666666566656656688666655666566665665665668i58666656665666665656665556666566655666666686666665i5656666565566565686868686656565586665856565668665555i65866668656665i6686665666865666666566565566686666666866568586856866668656656666566566655ººººººººººººººººººººººººººº¸ºº¸ºº¸ºº¸º¸ººº¸º¸¸¸º¸¸º¸º¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸··¸·¸·¸·¸·¸³¸·³··³³··³³··³K·³³³³³K³K³KK·K·KKKK·K·KKK·J·J·JKK·JKKWKJ·HKJ·HJJJ·JKJKJJJJJJJJJJJJJJHJJHJGHGGGGGFFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEFFFFFFGFFGFGGGGGGGHGHGHGJGHHJGJHJGJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿþÿþÿÿþþÿþþÿþÿþúóúúóúúóúúóò¬m=?>==>C>>>====>=>>=>==>?>>C>===>CA>>C>>==>C>>>C>=>C>CA>lol>>>>C>>>=>>CCCC>=>>>>=>???>>>>??CC?>?>>>C??>?>>ClCCCCCC>ClCÇýÿÿÿÿÿÌlCA>>>C>>>>>CC?CCCC>>CllClC>>>>C>?C>?>>>>Cl>>ll>>llCCCClC>C?>>>C?CCCllllC?>>>CC?>?CC?ClCCClllC?CClCCC>>>CCCllC>>CCC>C>>?>>>>CCC>>>CC>Cll>ClllC>CCClCCC>CC>>=>CCC?>CC>>>>>>>>>CCA>>>>>>?>=>>>>=?ACC>===>=>CCC>==>=>===>>>==>====>>===>====>=>>AC>C====>==>======>>=============>{÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿóY  !!$sªõÿÿÿÿþÿÿÿþÿÿÿþþþþÿýÿþÿþþþþÿþþæÓ³³³³³³³³³³³³³³³¸³¸³³³¸³³¸³³³³³³³³³³³³³¸³¸³¸³¸³¸³¸³¸³¸³¸¸³¸¸³¸¸¸¸68666656656656556666655666666665565586666868666i68666665666666666565555666666665656555555668666686665566566565656655i66565566856656665666866666658656665666665666565666i66686566566656565568666566568586656866666665665665655665666656666666666656656666666866568666666666656666658666666655668668666665556556666865686866566666566556666666565666ºººººººººººººººººººººººººººººººººº¸ºº¸ºº¸º¸ººº¸º¸ºº¸º¸º¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸³¸¸·¸¸·¸·¸·¸···¸··¸·¸········³··K··K·³·K·³·K·K··KKKKKK·KKK·J·J·JKKKKKJKKKKKKK·JKJJJJJKJKJJJKJJJJJJJJHJJHJGHGGGGGGFFFFF³KKKKKKK³KKKKK³KKKKKKKKK³KKKKKKKKK³KKKKKKK³KKKKKKKKKKK³KKK³KKK³KKK³KKKKKKKKK³KKK³KKK³KKK³KKKKK³KKKKKKKKK³KKK³KKK³KKKKKKKKKKKKK³KKK³KKK³KKK³KKKKKKK³KKKKK³KKK³KKK³KKKKKKKKKKKKK³KKK³KKK³KKK³KKK³KKK³KKK³KKK³KKKKKKK³KKKKK³KKK³KKK³KKKKKKKKK³KKK³KKKKK³KKK³KKKKK³KKKKK³KKKKKKK³KKK³KKKDFFFGFFFFGFGGGGGHGHGJGJGJHHJHHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþÿþÿþÿþÿþÿÿüóúóúúóüóúúò¬Žo=>>>>=>>>A>=>>>=>>>=>>>>>>>>>>>>>>>>>>>>>CC>=?C>=>C>=>>AC>=>>>C???>?CC=>CC>>Cl?=CCCCC?>??>CCC>CCC>>CC>>CC????C>lC>>ACýÿÿÿÿÿÌC>CC??CCC>C?CCClCCC>>lC>>CC>>?>CCCCC?CCCCClC>CCCCC>?CC??>?lCCC?>Cl?>C?CC???>?CCCClCCCCC????C?>??CCC?C>>C??>Cl>>?>CCCC?>C>>?C>ClC>>lC>>CC>>lC>>>>C>Cl>C>>>>>>?C?=>C>>>>>CC>>=>>>CC>>>>>>>>AC>=>>>>>?>>>>>=>>>A>>=>=>>==>>A?=>==A=>=>===>=>>===>=======>=>====>===>===>=======>==z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !óÿÿÿÿÿ÷Y!9qªíÿþÿÿÿþÿÿÿÿÿÿÿþþþýþþþþþþþþþþþæÓ³³³³³³³³³¸³¸³³³³³³³¸³·³³·³¸¸³¸¸³¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸6566566656666566666868665i666566566666686666566686665656666658666666i666656666566665656666666665866i655566666666666666566665666556665856i666656866655665686656556566666655656666666666656685656i5566665686655566666656666666666866666686665686666665666686666866666666685666665565666668666666666666676866656656666ººººººººººººººººººººººººº¸ººº¸ºº¸ºº¸ººº¸ººº¸º¸º¸º¸¸¸¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸··¸··¸¸··¸··³··³··³·K·K·³³³·³·K·K·K·K·KKK·K·K·KKKK·J·JKKKWKKK·J·J·HKJJKJJK·JKJKJJJKJJJJJJJJHJHJHHGJGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFGGFGFGGGGGHGHGHHHGJHHJHHJHJHJJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþÿþÿþÿþÿþÿþþÿúóúúóúóóúóúò¬o====>==>C>=>>>=>>=>>>>>>====>>C>=>CCC>>>>C>=>>>=>>>====>C>=>>CCClCCllC==>C>>ClC>CCCC>?CCC>>CCCClC?>ClCCCCC>>?C>>?>>>>ÆýÿÿÿÿÿÌuClllllCCll>>lClCCl??lC>>??>>C>?lC????lllCCC?>>C?C>>>C>>>ClCCClCC?>>?C?>??>>CCCllCCCCC>>>?C?>>C?>>>lCCCC>CCCCCCCCClCC>>?>?CCC>CC=>??>>>>?>C>>>>>=>>lC>>==>?CClC>>>>>>>CCC>=>>?CC?>>>>>>>>CA>>>>>>>>CCCCA>=>>>C>>>=>>>=>>CCA>=>C>=>======A>=========>==>>==>====>C======>>======x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ;óÿÿÿÿÿ÷Z!   pªõÿÿÿþÿÿÿÿþÿÿÿþÿýÿþÿýþþþÿþþþþÿàÓ·³³³³³³³³³³³³¸³¸³¸³³¸³¸¸³¸³³³¸³¸³¸³¸³¸¸³¸¸¸¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸56566666586665666666565686666686i6686556666566865565666665656666666656656666665566556565666666668566666666666666656666865666666666666665665666666666566688666566668666666666i66668666658666566686688666566666886566566666665666656665686865566668656566666666666666666686566i566566566666666666866566656666666686668666666666i666656566665666ººººººººººººººººººººººººººº¸ººº¸ºººº¸ººº·º¸º¸¸º¸¸º¸º¸º·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸·¸·¸·¸··¸···¸³··³·³³·³··³·³·³³K³K³K·K·KKK·K·KKKKKKKK·KKJ·K·JKKKKJKJKKH·J·JJJKJJJJJJJJJJJJJJJJJJJJJJHJGJGGGGGFFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKDFFFFFFFFFFGGGGGGGHGHGHGJGGJGJGJHJHJHJHJJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþÿþÿþÿþÿþþÿüúóóúóúúóúúò¬p>===>A>=>>>>==>>>==C>>>=>>>>>>>==>>C>>>>>?C>=>?>?>>>>>>>C>=>C>>>CC=>CC>>?>>>CC?>CCCCCA>CC>>>??CCC???C>>CC??>>>>C>>>CCüÿÿÿÿÿÌC>CCCCC>?lC>>lC>?C?>>CC>>CC?>?CCC?>CCCCClC>CC>>?CC??CC?>CCCC>???CC>>Cl?>CC>>?>CCC?CCCCC?CCC>>>>?>CClCCC>>ll>>>?>>?CC>??C??CC?>CC>>>?CC>>CC>>CC>>>>CC>>>?>>>lAC>>>=>>>A>CC>>CC>>>=>>>>>>>>>>>>>=>?==>C>=>>>=>=>>>=>>>=>==>>>>==CC>====>>=>>>>====>==>===A=======>===============x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ;òÿÿÿÿÿóZ! !qªíÿþÿÿÿþÿÿÿþÿÿÿýÿýþþþÿþþþþÿþþýèÓ³³³³³³³³³³¸³³³¸³³³¸³³³³³³³¸³¸³³¸³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸³¸³¸³³¸¸¸¸¸¸666686666568566656666665666i66565566856i6666656686i586666666656666565666666666665666656i5556565666666665656566688586566665666686686666666688665656666666568666656i666666566666666666686665666666666666666656666566666688666656666656668666666666666658856666566665656685i565656666666666666856666686566666586666665666658666665566566668566866ºººººººººººººººººººººººººººººº¸ºººº¸ººº¸ººº¸º¸º¸º¸¹¸¸º¸¸¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸·¸¸·¸··¸·¸·¸·¸·¸········³··K··³·³·³K··K·K·KK·K·K·K·J·J·JKKKKJ·J·J·J·JKJ·J·JKJKJKJKJKJJJJJJJJJJJHJJHJGGGGGGGFGFFFFFK³KKKKK³KKKKKKKKKKK³KKKKKKKKK³KKK³KKKKK³KKKKKKK³KKK³KKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKK³KKKKK³KKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKK³KKKKKKK³DFFFFFFFFGGGGGGHGHGJGJGJHHJGJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿþÿþÿþþÿþþþþÿþÿ÷óúúúúóúúóúò¬so==>==>====>>A>>C>==>C>=>>>>>>==>>>=>>>>=>>>>>CCCCC?C>>>>>=>CC>==C>=>>>>CC>>C?>=?l>>C>>lC>>>>=>CC>>C>>>>>>?>>>>CCC>CCCÆýÿÿÿÿÿÌlC>>>>>CCC>>ClC>>>>>ClCCCClCCllCC>?Cll>>C>>>?C?CCCClCCCCCC>>>???C>>>CllCCC>>>>>>>>>CCC?>CC>>>>>>>>CCC>>=>ClC>??CCClCCCC??C?>>>?C>>>CCC>>>>>?CCCCC?>C>>ClC>C>=>>CC>>?CCA>>>CC>=>=>>>>>CC>>>>>>=>=>>>>===>C>>>>===>AC>=>==>==>=>>==>>=>>>==A>===C====>>==>=>=>>===========!======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;óÿÿÿÿÿ÷Y!!  !!=sªõÿÿÿþÿÿÿþÿÿÿÿýýþþþþþþþþþþþþþþæÓ³³³³³³³³¸³³³³³³¸³¸³³³¸³¸¸³³¸³¸³¸³¸³¸³¸³¸¸¸³¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸³¸¸³86668666666566666666666666656586666556686666666866666656666666586565555665666556665666665666866665666666666656666556565658666665666666665666i66i665668666665666668656566866865566665566666656666565666666555665666766856666686566666866665666566666586656866666666656566866666666666666565658666666666665666656656668666866665666666665656666566666ººººººººººººººººººººººººº¸ºº¸ºº¸º¸º¸ºº¸º¸ºº¸ºº¸º¸¸¸º¸º¸¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸·¸·¸··¸···¸····³··³···³·K·³³·K³·K³K·³K··KK·KKKKKKKKK·KKK·JKK·JKJ·JKWKKKJKJJJJWKJJJJKJJKJJJJJJJJJHJHJGHGGGFGFFFFFFEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFGFGFFGGGGGGGHGHHGHGHJHHJHJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿÿþÿþþÿþÿþÿþÿýÿÿüúóóúóúúóúúò¬so==>>>>===>>>>=>>>=>=>>>>>>>>>>=>>>>==>>>>>C=>>C>C>>>=>>>>>C?=>>>C>>>>>CC>>CC>>>>C>Cl?=CC?>AC>=>lC??>>C?>??C>>?CCC>>CCýÿÿÿÿÿÌlC?>>>ClCCC>>C>C>>>CCCCCC>C>>Cl>>>>ClC>Cl>>?C?C?>C?C?>CC?C>>CC>>CCCC>>CCC>CC>>?CCCC??CC>AlC?CCC>>?>CCCC>>CC?>>>>?CCC?Cl>>>>>>C>CCC>>CCC>>CCC>>CCCC>=C>Cl>>>>>>>CC>>?>>>C>>C>>>>>>>>=>>?>=>=>>>>>=>C>>>>>>>==>>>>==CA==>=A>>C====>>=====>=>===>===>=========>>==========$$======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@òÿÿÿÿÿóY =}«íÿþÿÿþÿÿÿþÿÿÿÿþÿþþþÿþþþÿþþþþþæ×³³³³³³¸³³¸³¸³¸³³·³¸¸³³·³³¸³³¸³¸³¸³¸³¸³¸¸³¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6566666556656668666666666556566566665665i666665686655566688656566566666666i56666665656685666668865656586666566668566558558656566656666666656666i666566866656566666686666686666666566665666866666666868866666565666666666568665566668656666666666666566656665665666666666666566568666666665668666665666666666556685666666666668656666ºººººººººººººººº¸ººº¸ººº¸ºº¸ºº¸º¸ººº¸º¸º¸¸º¸¸¹¸¸º·¸º·¸¸¸¸º¸º·¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸·¸··¸··¸·¸³·¸³·³³¸³·³··³·³K·³³³K·K·³KKKKK·KK·K·K·KK·JKKKKK·JKJ·J·JJKJKJJJ·JKJJJKJJJJJJJJJJJJJJHJJGJGJGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKDFFFFFFFFFGFGGGGGGGHGHGHGJGJHGHHJHJHJHJJHJJHJJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿýÿþÿþÿþÿþþÿþÿþÿ÷óúóóúóúúó÷ò¬o?>CC>>==CCC>>>===>>====>>>>>?>=CC>>=>>>C>=>==>>>===>=C?CC>>>=>=>C>>C==C>=>CC>C>=>CCC>=>?=>CCC>>>>>C>>>>>>CCCC>>ClC?CCÇüÿÿÿÿÿ×ulC>llClCCC?>>?>C>>lCC?CCCCC>ClC>>>?C>>lCC?CCC>>>>>>>>C>C>>CCC>>>CCC>>>???CCC?CllCCCCCC?>>CCClCCC>>?CCCCCC?>>>>?>>>>C??>>>>>CC>=>CCC?>>>>>>===>>Cl>>>CCC==>=>>>C=>CC>>>>=>>>>C>AC>>>>?>==>>>>>>>>>>=>C>===>=>==>===>>C>=>>C>===C>======>===>>====>>=====>>>===>================z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ@óÿÿÿÿÿ÷Y  qªõÿÿÿþÿÿþÿÿÿÿÿþþþþþþþþþþþþþþþþæÓ³³³³³³³³³³³³³³¸³¸³³³³¸³¸³³¸³¸³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸¸¸³¸³¸¸³¸¸¸¸¸¸¸6566666556656666656666656856666656666866666666656665666666666666566686565666666656668666666666666666666665666i66665i668665666666666666566686665666666668665666666866666668666665666658666668658665666666655656666666566686866666666666566666665656665668666666666566566656686686556656665566665i866866668686666586666666566666666666ººººººººººººººººººººººººººººº¸ººº¸ºº¸ººº¸ºº¸º¸º¸¸º¸¸º¸º¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸·¸··¸·¸··········K·³··K···³·K··K··K·KKKKKKKKK·KK·J·J·JKKJ·J·J·K·JKJKJ·JKJKJKJJKJJJJJJJJJJHJJHHGGGGGGGFFFFF³KKKKK³KKKKK³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKK³KKKKKKKKK³KKKKKKKKKKKKKKKKKKKKK³KKKKK³KKKKKKKKKKKKK³KKKKK³KKKKKKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKK³KKKKKKKKK³KKKKKKKKKKKKKKK³KKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKK³KKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKK³KKKKKKK³KKKKKKKKKKK³KKKFFFGFFFGGFGGGGHGHHGJGJGJGJHHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿþÿþÿþÿþÿþÿþþþþÿüúóúúóúóóúúò¬p>>>>====>C>=>C>>=>>===>A>A>=>>=>>>>=>>>>>>>>=>C>>>>>=>>>l>>>>>>>C>>>>>>>>>Cl>>>>>>>>>>CC>>?C>>>>>>?>>>>>>CCCC>>CC?CCCüÿÿÿÿÿÎuCC>ClC>>C?CC>>>>?CCC>?CCCCCC>>CC?>C>CCClACC>>CC>>>>C?>CCC?CCC>=?CCC>>>??C?CC?ClCCC>???C??>CC?CCC>>Cl>>CCC?>?>>CC>>CCCC>>>?>>>>>=>C>>>>>>??>>>>C>C>>>C>>>=>>>=>C>>>>>C?==C>>>>>CC=>=>>>>>>>==>>=>>>>>>>>=>>>==>>====C>=>==>>>>=>===>>==>=>===$=C======>=>======================x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–;òÿÿÿÿÿóZ  !!=sªíÿþÿÿþÿÿÿÿþÿÿÿÿþþþÿþÿýÿþþþþþþæÓ³³³³³³³³³³³¸³³·³³¸³³¸³³¸¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸³¸¸¸¸¸¸³¸³¸³¸¸66686656666656666656566666666666656866565655656666656666565686566656666866656666i6665665566566656668656656656666666866666866686666656666668866566866565666565665566665666566665566665666565688656666666566656666668665666656666865656685666656866668668668568666886666656665666656656656656666666666666665665656866565i686566665868666686ººººººººººººººººººº¸ººº¸ºº¸ººº¸ºº¸ººººº¸ººº¸º¸º¸º¸º¸º¸¸·º·¸¸º·¸¸¸¸¸¸¸¸¸¸·¸¸¸¸³¸¸·¸·¸·¸····¸···¸³¸·····³³··³K³·³³K³³·K·K·K·KK·K·K·K·J·KJ·JKKKKKWKKKJKKJJJJJJ·HJJJJKJJKJJJJJJJJJJHJHJHGGHGGGGFFGFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFDFFFFFFGFGFGGGGGGHGHGHGJHHHJHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿÿþÿþÿþÿþþÿþÿþÿþÿ÷óúóóúóúú÷úò¬Žo===>==>>>>==>CC>>>>>>>>>>>>==>>>>>>A>>=>>>>=>>>>>CCC>>=>CC>>=C?>>CC>>>>>==?C>>>=>>>>>>>C?=>?>>CCC>>>CCCCC>>>>==>C?>>?›úÿÿÿÿÿßZ>>>CC>=>>=>CC?>CCCl>>?CCC??l?>>CC>?CC>>CC?>=llCCCCClC?CllCCCC>>CCCCC>?>>CC?>>>C?>>?>>=?CC>CC>>>>>?C>=>?C>>>CCCCCC>Cl>>>>?CC?>>>>>>>>>>CC>>>>CC>>>==>C=>C?>>>>>C>=>=>>>=CCC>==>>C>>C>CCC>AC>>>A>=>A>==>==>>==>>==>>>>==>>=CA>>=>==AC>=>>==C>===CA====>=>===>>==========>C==$$==z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚@óÿÿÿÿÿ÷Y $pªõÿÿÿþÿÿþÿþÿÿÿýýþþþþþþþýþþþþþþæÓ³³³³³³³³³¸³³³¸³¸¸³³¸³³¸³³¸³³¸³¸¸³¸¸³¸³¸³¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸86666856666666656666666686656668666656668665666666666666656666666666666656666666656666i65666666666656556656865666668i666865655666666668666665566666665686i5686566666666865566666656666666566i666566566685665665656666666665666656666668666656656666656666656656866656656566866566666665666668665866666686656866666566665665666666656666ººº¸ººººººº¸ºº¸º¸º¸ººº¸ºº¸ºº¸º¸ººº¸º¸º¸¸º·º¸¸º¸¸º·¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸·¸·¸·¸··¸¸·¸·³¸·³³·³³·³·³··³³³·K·K³K³K·K³KK·KKKKKKKKKK·J·KK·JKKKKKJ·JKJ·J·JKJJJKJKJJJJJJJJJJJJJJHJJHJGHGGGFGFFFFFFFTXXXXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXWXXXXFFFFGFFFFFGFGGGGGGHGHGHGJGHGJGJGJHJHJHJJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿþÿþÿþÿþÿþþýÿüÿÿüúóúú÷óúóú÷ò¬Žo>==>==>>==>>=>>A>>===>>=>>===A>>>>>>>C?==A>>C==>>Cl>>>=>>>>>>>>>>C>>>C=>>>>>CC==>>>>CC>>>>>CCC?>>>>CC>C?>C>>>>>>>CC>>”÷ÿÿÿÿÿáu>>C>>>?>>?>CCC>CCCC?C?>?C>Cl>=??CC?C?>>C>>>>>CClC=?l?>>CCCC>>?>CCC?>C??>CCC>>C>??CCC>>>CCC?CC>>?>>CC?>>C>=CACCA>>>CC>>>>>CC>?=>?>>>>>>CC>>?>C>=>>>>>C>=Cl=>>>>?>>>=>>=C>>>>>>=>>>>>C=>>>>>==CC>==C>==>>==>>>>>>==>===>===>A=>====>C===>==>====>>=====>====>============>=====$x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_;òÿÿÿÿÿ÷Z $pªíÿþÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþþýÿþþþþþþæ×³³³³³³³¸³³³¸³³³³³¸³³¸³³¸³³³¸³³³³¸³³¸³¸³¸¸³¸³¸³¸³¸¸¸¸³¸³¸¸¸¸¸¸¸¸¸6666666666666656566565666566668665655666666666856666666686656666666666656566666566666566866656656665686566666666666666666565666586686666565656666666666i6666566666666656666666566666666866665i65i6566666866668666866566865666668666656566666566666668566665656666666666666666666566656556566666656666656686666566666i66866566666665686656i665666666666565666i5i666665656666655665666ºººººººººººººººººººº¸ººº¸ºº¸ºººº¸ºº¸ººº¸ººº¸º¸¸¹¸º¸¸º·º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·····¸··¸··········K··K··³··K·³·K·K·K·K·K·K·K·KJ·J·JKKKWKKJ·JKKWJKJKJKJ·JKJKJKJJJJKJJJJJJJJHJHJGJGGGGFGFFFFFFTXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXHFFFFFFGGFGGGGGGHGHGJGHGJHHJGHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþÿþþþÿþþÿþÿþÿþÿóóúóóóúúúóúòÓm=========>>>===>>=>=>>==>=>>>?C>>>>==>CC>?CC>===>CC>C?>>C>CC>>>CCC>>CC>>CCC=>>=>CA>?C>C=>>>CCCC>C>>>?>>>?CC>>?>C>?C>>{òÿÿÿÿÿñ{>>>>>>ClCCC>CC>>>>>CCC?>>>C?>>C>ClC>>>>?>ClCCCC?>=?CC>>?C??>>>?C>>ClCC?C>?>>CCCC>>>>>?>>>>>>>>>>>>ClCC>>>>CC>A>>>=>CA>>=CCCC>>CC>?>CCC>>>>C>>>>AC>>CC>>>C>>>>CCCC=>>ACC?>==>>>>==>C=====>>>=>>==A>>=?>====>A>>A>>?>=>>=>======>==C>=>C>======>==$==>>===$========>=========$$$xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@!óÿÿÿÿÿóY  qªõÿÿÿþÿþÿþÿþÿÿþýþþþþþÿýþþþþþþþæÓ³³³³³¸³³¸³³³³¸³¸³³³¸³³¸³³¸³¸³¸³¸³¸¸³¸¸¸¸³¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸³¸¸¸¸¸³6666568666666556666666656666665666686665666655566656665856668866665666666566665666656686566i666656566866568566666656666666665i65668656565i8666666666686665566666686666865568656566665666666666666666665668666666656666666566666656665i55666655566666665656566556556666866656666666566656666665666566656586666666566666566666666866666565656666666666665666i556656666656686665666658XXXXXXXXXXXXXXXXXXXXXXXXXX^XXbXbXbVbXX^X^XX^XXXXXXXbVbVXXXXXXXXXXXXXXXXXXWXXXXXXXXWXXXXXXXXXXXXXXXXXXXVXXVXXVXVXXXVXVXVXVXVVVVVVVVXVXXX:VVXXXVXTVVXTXUXVVX:XTVVVVXUXXTXTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXTXTXTXTXTXTXTXTXTXXTXXTXXTXXTXXTXÓÓþÿþÿþÿþÿþÿýÿýÿþþÿüúóúúúóóóúóò¬}j=>===>==>>==>=>=>>=>=C>>===C>>>>=>A>>=>CC>>>>>=>=>>>>?=>>>C>C>=>CC=>lC=>C?>>>>>>AC>C>>>>>>>>>C>C?>>CCC>>>CC>>?C>>C?>>zñÿÿÿÿÿõƒ>C>>C>>>lC>>>?>>>>CC>??>>>CC=>C>CCC>>C?>?=CCClC?>>C>?C>C?>>C?>>C??CCC>>???C???>?C>>>??C>?C=>CC>>CC>CC>CC>?CC>>>>>>>?>C>>>CCC>>C>>C>>>C>>>>>C>>=CC>>C>>C>=>>>>>CC>>CC>>>=>>>C>>>>==>>>>==>A>>=>>=>?==>>>>===>>=>>=>>==>>=>========>>=C===>=========C>=======>=$==>=============x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ!;òÿÿÿÿÿóZ! qªõþþÿÿÿþÿÿÿÿÿÿÿþþþþþþþþþþþþþýÿæ×³³¸³³³³³³¸³¸³³¸³³¸³³¸³³¸¸³¸³¸³¸³¸¸³¸³¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸³¸³¸¸¸6666666566666666666566666666666656656666566665656685668688666856666555665655666665665666566566666666686566566566666666665666566566566666666666566568655566566665655665666666656666665666656666566666668668668656666656666666656666566666566666666665666666666665665656666666665666665666665655668i8668666565656666685656666566656565566i665688666656686565666666666666656666656TTXTTXTTXTTXTTTVTXTXTXTVTXTTTTUTTTTTTVTTTTTTTTTTXTTUTTTTVTUTVTTUTTVTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"T:T"TTTTTTTTTTTTTT"TT"TTTTT"TTTTTT"TTTTTT"TTTTTT"T"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT:TT:TT:TT:TT:TTÓ×ÿþÿþÿþÿýþþÿýÿýÿþÿúóúóóóúúúóúò¬so>>==CC>====>>>===>>=>A>===>CC====>==>>==>>>>>>>>=>>>>=>C>>>>>>=>>>==>>==>>>>>>>=>?CC>>>>C>>=>CCC>>CCCCC>>CC>?CC?>>>>?uèÿÿÿÿÿúƒ>>CCCC>>>>=>>>>>>>>>>>>>>>?>>?lCCC>>>CCCC>>??C>>CC>>>CCCC>>?C>>?CC??C>=>?CCC>>>>>C>CCC>A>C>>lC>>CC?>>CCC>>?CC?>>>>C>>>>=>>=?C>>>A?C>=CA>>CCC>>>??>>==>>>=>A>>>>==CC>===>>>C>=>>>=>>C>>>>>>>>>====>===>>>>>>>=====>>>>>===>C>>=======>==CC====>=>>>>===============$==A========z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷;óÿÿÿÿÿ÷Y !! $sªõÿÿÿþÿÿÿþÿþÿÿþþþÿþÿýÿýþþþþþþþæÓ³³³³³³¸³³³³³³¸³³¸³³¸³³¸³³³³¸³¸³¸³³¸³¸³¸³¸³¸³¸³¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸666665i656666686866i6556666686666666656866666665666666666666566666666666666665666566655665666556566656666665i5666666666656665665665666i5665666666666666666566666666666666656566666566665665666666556665665665666666668666866666656666666565666666666666586656566665666666556658i6666665666665686666666866666655666666666i66665565566565666666i86565666666566566666668655i686665666566666TTTTTTTTTTTTTTTTTTT:TTTTTT"T"T"T"TTTTTTTT""T""T"T""""""TT""T":TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTM ÓÓÿþÿþÿþþÿþÿýÿýÿþþÿüúóúúúóóóúúò¬so=>===>>>===>>>>==>==>>>>>>=>>====>>==>>==>A==>C>>>=>>=C?>=>>=>?>==CA=>>=>>>C>>>>>>CC>>>??>>=>>CACC??>CC>>>>CC>C>>>>>CußÿÿÿÿÿÿC??>>>>>C>=>CCA>>>CC=>CC>>>>>ClC>C>?>>CCCC>CC>?=CC>>>CCC??>Cl>?>CC>CC>>>CCC>>CC>>>C?C>C>>>>>Cl?>CC>>?C>>>>?CCC>>>C>C>>>=>>>CC>>C?>>>>CC=>CC>>>C>>?>>=>>>>>>>>>>>=>C>>>>>>C=>>>>>A=>>>>>>=>?C>==>=>==>=>>>>>==>====>>===>>=>>>======>===>>>======C>======>====>============$$==zóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ @óÿÿÿÿÿóY !=sªíÿþÿþÿþÿÿÿþÿÿÿþþýýýýþþþþþþþþþæÓ³³³³³³³¸³³¸³¸³³·³³¸³³¸³³¸³¸³¸³¸³¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸³¸³¸³¸¸¸¸¸¸¸¸66666656666666665656666i86666566666665566565666i6665666556666556666565i8666666i66666666566666665665665655566666666566566666i6665665666i665666655666656656666666665666666666656566556666665656665666i686666666866866665666665666666666556686566566i666566666666686666686666665656666666666666686556666565666566686566656565665666668666666866666666666666656656666666668666665656666TTTTTTTTTTTT"":TT"T"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTÓ×ÿþÿþþÿþÿþÿýÿýþÿþÿóóúóóóúúúóóò¬Žo>>==>===>=====>=>========>==>=>CCC?=>=>===>===AC>>>=>=>===>>=CC>=>lCCA>=C>CC>C>>>==C>>>>>>CCC>=>>>>>>>=>>>>>>>=>CCC>>CÌÿÿÿÿÿÿßu>>>=C?ClCCCCCC?=>lC>>lC>?CCC>>CCCACCCCC>>>>>>?>>CC>>C>>C>>CCCCC=>>CCCCC>>>>>>C>=>?CCClC?>=>?>=>>>>?CC>>>>>>>C>>>>CC>>C>CCCCC>>>>>>>>C>==>>=CCC===>>>>CACC>>>=?>>>=>>>>>>======>CC>====>==>>=>C>>A>>=>>C>>===?>=====>=>======>=>===A>=======>===>================A============x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@üÿÿÿÿÿó@ !  ! =s¥õÿÿþÿÿÿÿþÿÿÿÿþþþÿýÿýÿýÿýþþþþþæÓ·········³··³··············³··········³···³³·³··³··¸·¸·¸········856666666665886666565665656566666666566666666665586665666565566666566566i56656566656666666i666666566666666666666666666655658i5666666666i666556656566665666566565666865666666566i6666666666566866666656666656566665866566668655666686586688666666666666666665i565666666656686656866666666666666656666666566656665666665666566666565i6565565666666565686656566666666665666665656666666656TTTTTTTTTTTTTTTTTT"TTTTTT"TT"TT"TTTTTTTTTTTTTTTTTTTTTTTT ÓÓÿþÿþÿþþþýÿþÿþÿþþÿüúóúúúóóóúúò¬Žl>>===>==>>===>===>====>=>==>==>>>>>=>>====>===>>A>>===>>=>>C=>>>==CCCC>>>>>C>>>=>>>>>C>=>>CC>>>>>>>>?>>>C>>>>>>>?CC>=Aüÿÿÿÿÿò{>?>>?>CCClC>CC>>>C>>CCl>?CC>=>C?>?CCCCC?>>>>?>>>?C=>C>CC>>>CCC>=CC>>Cl>>>?>>?>>>>C?>?lC>>=>>>=>C>>>C>>C>>>>=>>>>>CCCA>=>lCC>>>>>>>=>C>>=>>>>C>>>=>>A>>>>C=>>>C>>>==>CA>>>=>>>>>C?===>=>===>>>>A>>>>==>>>>>==>>====>>==>====>=>===A=====A======>====$=>===========A==!$=======xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü#Yÿÿÿÿÿÿñ!!!=qªõþÿÿþÿþÿÿÿþÿÿÿþþýþýþýþþþþþþþþæÓXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXbXXbXX65655665665656666656566656666666656665656666566666666666686565566666666556688566i6666686666665666666665665665656666666i666566566566668665666666568666566666656666665566566566656i5665666665665666665666666665666666866665655666666666866656565668866666666566656666666565655668866866i566665565655i6666666656666666666656666566656656665685666566666666666666665566566"T""TTTTTT T"TTTT""TT"TTT""TT""TT"""TTTT""TT""TT"""TTTT""TT""TT"""TTTT""TT""TT""TT""TT""TT""TT"""T" Ó×ÿþþþþÿþÿÿþþþþþÿþÿúó÷óóóúúúóóòÓo=>>=>>====>=>>==>CC>>A>=>>>>>==>=>=>>>CC?C>>>>=>>=>=>>>>>CC>=>>>=>>>===>>>CC>>>CC>>>>C>>>=>>>=>>>=>>=>>C>>>>>>CC>>>>>C{ñÿÿÿÿÿþ›CCC>>>?>?C>>=>?>>>CC>?>>>??>=C?>=?CC>=?>>CCCC>>?>>=???C>>CC>>>>=?C>>CC>>>>>>ClCCCC>=>>>>>??CC>>>C>>>>C>=?CCC>>C>=>C>>>=>>=>>>>>>>C>>>>>>CC>=>=>>>>>C>>=>==>>>C>>C>A>>=>>>>==>>=>>>>>>>>?>>>>====A>>>====>=>>>==>==>>>>>===>>===$>>=====>============$==========$$=====$$=====x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá[ÿÿÿÿÿÿñ   p¥õÿÿþÿÿþÿÿþÿÿÿþþþÿýÿýþþþþþþþþþæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT66656666656666665665666656686666656665666665666665666666666i66666565666556686i66666566656i666656665566565666666666565656i66655665666666656666666566666666666666666666656565656656656666656665665665666666666556556i56666666656656656565656666666656665686666i556556566666656i56658665685665666666665566686666566666656666656665666666656666665666666565666568866566665666656666TT""T"TTTTTTTTTTTTT"TTT"TTTTTTTT"TTTTTTTT"TTTTTTTT"TTTTTTTTTTTTTTTT ÓÓÿþÿþÿýÿþýÿþÿþÿþþÿü÷óúúúóóóúúò¬p==>========>==>=>AA>A>>=>==>>=>=>=>==CC>>>>>>==>>=>=>C=>?CC>>>>C==>>>==>>>C>>=CC>=A>>>>=>>>=>C>>>?>==CC>>>>>=>>CC>C>>CußÿÿÿÿÿÿÎuC>>>>CC>>>>>>>>>>?CC>?=>??C>>C>>>CCC=>>?C>C?>>>>>>?>>>>>>C>>>>>>>>>>>>>>>>CCClCC?>=>>>=>CCCC=>C>?>>>>>>CCC>>>C>=>CCC>>>==>=C>>>=C>>=>C>CC>=C>=>>>>>>===>>=>>>>AA=>C>>>=>CC==>=>>>?>===CC==>>=>>>>=>C>====>=>==>==>==>>===>=>=$=>>===>=====$=======$=====$===================x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„!ÿÿÿÿÿÿá!  =q¥íÿþÿþÿÿþÿÿþÿÿÿþþýþþþþþþþþþþþþæÓTTT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TT:TTTT:TTTT:TTTTT"TT:TT66666666666656556666656666666656566666656666666666666666656656666566666666668666665i66666656666656686666666666665666665666686666666666566666568666656666665666668665666566656i6665666666565656666666666666666665666668666666i656666666666666668566666i66666655656666666566666666686886666656666666665666666666566666666666656666566666666666666666666566666665666566565566666666666656666T:TTM""TT  TTTTM""TTTTM""TM""TM"TTTTM""TM""TM"TTTTT"TM""TM"TTTTM""TT"TT"TM""TM""TM""TM"T  Ó×ÿþþÿþÿýÿþÿþþþþÿþÿ÷óúóóóúúúóóò¬q===>>>>>==>>===>=====>>===>A>==>>>>=========C>=>>=>C>>=>>=>=>C>>=?C>=CC>===?>>>C=>CC>>>>CC=>>CC>CC>=>C>=>C>>>>>C>A>>>A>Æýÿÿÿÿÿ÷”CC>CC>>>>>CC>CC>>>>>>>>=>?>>CC>>C>>C>>>>>>>>?>CC???>CC>C>??>>>>?>>>>>?C>>CC>>>>>>>>CC?>CCCC?=>>CCA?CCCC>>>>>>C>>>>=>>>?=>>?C>C>=>>C>=>>=>==CCC>>>>C>=>>>>>lC=>>===>>===>>>===>=>A>=>>=>>====>>=>==>>===>=>=============>====A===========>>====>=====>====================!$$z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò; –ÿÿÿÿÿÿÏ=}ªõÿÿþÿÿþÿÿþÿÿÿþþþþþþþþþþþþþþþþæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT8686666656666666666665656665666686686i6566666666666666566666i666666566665666666666666666i65656666666656666665668666866666666i6656656666666666566666666668666666566666566666666i6666665666656656666668666666666666i565666665566668666666666665666666666666866666566666666656666i5665666666666666666666666666666566666666666666665666565666566666666666i666666566666688656866666666TTT"TT  TTTT""TTTT""TT""TT""TTT""TT""TT""TTTTTT""TT""TTT""TTTTTT""TT""TT""TT""T  ÓÓÿþÿþþýÿýÿþÿþÿþþþÿüóóóúúóóóúúò¬q==>=>A==>=>===>======>>>===>>>>=>==>>====>>=>>=>>>CC>>>>>>>=>C>>>A>>>AC>>=>C>=>>>=AC>>>=>>>>>C>>CC>>>?>=>>C>>>>?C>>>C>>{òÿÿÿÿÿÿßu>CC>>>>>>CCCC>>CC=>>?>>?>>>C?>AC>>?>>>>>=>CC>C>>CC>>C>A>>>>>>CCC==>>>>C?>>>>>>>>>CCCC>>C>CC>>AC>>>?CCA?A?==>>>>>>>>>>>>>=>C>A>>>=>C>>>==?>>A>>>=C>>>>>>=ACC=>=====>>>====>>>>=>>A=>>>====>=>>>=>>>====>=>>=====>============>==============>=======A=$====>======$======$!$z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ… !ÎÿÿÿÿÿÿÌ  $}ªíþÿÿþÿÿþÿÿþÿÿÿþþþþþþþþþþþþþþþæÓ6656566666665666668666666666i866i666666866666566856666668566566666665665666666666666666i666656666666865666566666666i8556666666668666666666666686656686666666666656666666665666665666566665666666656665666656666866666666666666666866666656666666666665656565i656665656668i66666i56666565656666656666666688886666666665666666666666666665666666666666866656666666i665686i8i66566666"T     ÓÓÿþþÿþÿýÿýþþÿýÿþÿþúóúóóóúúúóóò¬o===>========>==>=>>>>>==>==>===>===>>>>=>AC===>>>>>====>>>=>>==>=>CC=>>>=>C>==>>=>>C>>==>C>>CA>==>>>>CC>=>?CC>>>>==>>>>tßÿÿÿÿÿÿú–A=>>>>C>>C>>>>Cll>>>C>>?C>=>>>>>CCC>>>>>CCCC>>>C>>==>C?>CCCCC?>C>>CCCCCCC>>?>>>=>>>C>=>=>>>>?C>>>??>>>>>>=?>=>C?>>?>=>>A=>CCC>==>>CC>C==CC>===>=>C>A>>===C==>=>>>>>>>>>>>>>=====A>>>==>>==>>>>==>==>=CC>>>=>>====>>====>=======A======>=====================$$!=====!==$===x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ! @üÿÿÿÿÿü !q¥õÿÿþÿÿþÿÿÿÿÿÿýþþþþþþþþþþþþþþþæÓ668666566666666665666666666866665i6i6666666668666665666665666666656566666666566666666666656866666565668666665666568i6665666566656665666866666666666i8666666666656666566666666666666666656666666566666666666666666666686666866666i8866668666566566565666666668666666566566666666866566665666656666666666666865666656666655666666666666666666566656666666666666666656665666566666666666566   ÓÓÿþÿýÿýÿýÿþþýÿþþþÿü÷óúóúóóóúúò¬Žo==>=====>====>>====>==>==>>===>>>==A>>>==CC===>>=>C>=>>=>>=>?=>=>=CC>===>=>>=>=>>>>C>===>C>>AC>>>=>>>CC>>>>>>C>>>>>>>>>>›úÿÿÿÿÿÿßu=>CC>>>>>>=>CCCC>>CAC>>C>>>>>>>CC>>>>>>CCAC>>>C>>>=?C>>>CCCCC>>C>>>CCCC>?>>?>>>>>>>>>>>>>>?>>>>?CCC>>>=>>>>>=C>=>CA=>>>>=CCC>>=>>=C?>A>>C>=>=CC=>>>?=>>>==>>==>C>===>>>A>=>====>>>>>==AC==>>>==A==>=>C==>C====>==>>==>========>=>=>====$!=>=======!====$=========$$=======xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx !ÿÿÿÿÿÿü‚ !   $pªíÿþÿþÿÿþþþþÿÿÿþþþþþþþþþþþþþþþæ×TTTT""TT""TT""TTT""TT"TT"TT"TT666566666666668i66656666656656666566656656666665656665656666666566665666686566666566666566i66666666666666666666686i66666666666666656i666656656656666666566666666568666686665656665666668656666665666665666686666666666656656666666666666i6666666666666666666i6666666666665666666666666i665665666656666665666666666666666656686666666666666666566666566666666666666866666666       Ó×ÿþþÿýÿýÿþÿþÿýþÿþÿúó÷ó÷óúúúóóò¬m=========>==========>A>==A>==>===>>>A>>==CC==>A==>C>=>>>A==>>>=>==>==>>>>>CCC>C>>=>>>>>>>C>==>>=>>C>>>>C>>>>>>>>>>>>>>>>tßÿÿÿÿÿÿýÆC>C>>>>>C>=>C?=>>>>>>CC>>>>>CC>>=>CC>?CC>=>>>>>>>=>CC=>C>>>>>>>?>C>>>>>>>>>=>>C>>>>>>>>>>A>>>>>>>>>>>>>>>>=>C>==C>>=>C>>C>>>>=>C>====>>>>=>C=>CC>==>==>>>?C>=>?=====>>>>===>=>=>======>C>======>>====>====>=>A========C=>>===>====>====>$=============$$==$=====$======!=={óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!Ëÿÿÿÿÿÿó;!qªõÿÿþÿþÿþÿÿÿÿÿýþþþþþþþþþþþþþþþæÓTT66666886665666665665666656666568666665665656556686666866666566666666656668656666666666666566665666666666656665666666666i56666868666i6666586666666665686566656666685666566666668666665i6665665666656666566666686666656i6566666666666666666586566666656686666665i86666586565656666666866566666656666666665666666668665665866666666566566i66666656668686668665666566666568656866656566686566656668668666666565668666668       ÓÓÿþÿýÿýÿþþþþýÿþþþÿüóúó÷óóóóúúò¬Žl=====>====>=========>C>==>A>==>==>>=>>>>>>>==>l===C>>>=A>>>>>=>>==>==>C>=>CCCCC>>>=>>>C=>>>==>>>>?CC>==>C=>>>AC>>C>>>>=>>”÷ÿÿÿÿÿÿ÷–C>>==>>>>>C>>>=>?>=>C>>>>>CCC>=>C>C>>C>>>>=>=>C?=>lC>=>>>?>>>C?>>>>>>>>>>>=>CCC=>>>>>=>?>=>>>>>>>>C==CC>>>>A>=>AC>=>C>>>>=>=>>>=>>=>=>CC==C=>C>>=>>>==>=>?>>>=>====>A>===>=>>=====>==>C=============>>======C========>==>==>===$=====C======================$==$!=====!$=z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç;@óÿÿÿÿÿÿá $qªíþÿÿþÿÿÿþÿþÿÿÿþþþþþþþþþþþþþþþæ×"T"TTTT"TTTTTTTTTTT5668686655656666666665565666656666566666665566666666566666666666666866686666686666566656566656656668666666666656i566i6668656656566666665666666656686566686666666666666666666656666i66656i6i66566668666666566685666666566656656566665666666566665668666666566656566566666668566566566665668666565666656668666656666666668566656666566565666566566656666665666666656666i666566666566666666666566566565666566686866    HHHHHHHHGHHHHHGHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHGHHHHHHHHGHHHHHGHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHGHHHHHHHHGHHHHHGHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH     ÓÓÿþþÿýÿýþþÿþÿýþÿþÿúóóóúóúúúóóò¬Žl=====>=>>==>===>=============>===>===========CC==>>=>===>>C==>>>=>>>==>>>>>=====>A?>>>>>>=>=?C>>>=>>C>>>>==>>>>==>CCC=>?>CßÿÿÿÿÿÿÿñƒC>>>>>>>>>>>>>?C>>>>=>=>C>>C==>CCl>>?>>>>CC>>??=>CC>>>>>>>>C>=>>>>CCCC>>>>>>C>>>C>C>>>?>>=CC>===CC==AC>=>>>>C>>>>>?C>=>=>lC>>=??>=>=>>>=>>CA>=>C>=>>>>=>>>C>==>CA>>>=>=>>ACC==>=>====>==>===>=>======>==>==>============>=>======>==>=========!=====$=========!$=!==$$==xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóY!„ÿÿÿÿÿÿü !  qªõÿÿþÿþÿþÿÿÿÿÿýþþþþþþþþþþþþþþþæÓTTTTTTTi66666666666656565666566665666566i666566666566668666666656666655566665666656665666666666656566666565656686666666686686656666566665665666666686665666666665665656666666666665666656656666656666665656666666i66666656666565666656665666565666666666666665666666665656566665i65666655666666i66866656566665666666i866686665666666666666656666666i666656666566666666666565656566i665666666666666666656666666666656565JJJJKJJJJJJJJJJJJJJJJJJJJJJKJJJJJJJJJJJJJKJJJJJJJJJJJHJJHJJHJHJHJHJHJHJHJHJHJHJHJHHJHHJGHHJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHFHHHFHGTFHGTFHFHFGGHFHFGFGFFFFFFDFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFEFDFFFFFFGFGFFGFFFFGFGHFGFGFGFGGHFHGFHFHGFHFFHFHFGHFGHFHFTÓÓÿþÿþþýÿþÿýÿýÿþþþÿüóú÷óóóóóú÷ò¬Žo=====>=>===>>========================>=>=====CC==>===>>==>C>=>=>>>>>===>C>>>=>=>>?>CA>>>C=>=>CC>>>=CC>=>>>>=>>>>>=>A>>=AC>ƒóÿÿÿÿÿÿÿèxC>>>>>>>=>>>>>>>?>==>>C?=>>>=>>>CCCC>>>>CC>>>?=>C>CC>>>=>>>>>>>=>CCCCC>C?=>CC>CCC=>>C>>==CC>>==CC>=>C>=>>=>>>>C>>>>>>>CA>C>>C>>>==>>==>>>>>>=>C>=>>>=>>>>>=>=>ACC===>>>>>C>>=====>====>====>==>>====>>==>=======>==>==>A=======>=========A=$======!$=========$==$!==!==x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü‚;ñÿÿÿÿÿÿú_  =sªíÿþÿþÿÿþÿþþÿÿÿþþþþþþþþþþþþþþþæÓ656656666666566i6666666666666656665666666666666666666666686866666556566556656666666866566665656666666666666666666666666566686666566666666666666666666666666i56665665666566686885666i66668i666665666666666568666566566666666656666666666656666666666656666666866i666566566656666566666666666666656666565666666666666666666666i56666666665666665666566666688665666666665666666566666656666566666666668656668665666568566666¸º¸º¸º¸¸¸¸º¸¸¸¸¸º¸º¸º¸¸¸¸º¸¸¸¸¸¸º¸º¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸·¸·¸·¸·¸··¸··¸···¸··············³····³··³³·³K·³K·KK·KKKKKKKKKKKKKKKKKKKKJKKKJKJKKJJJKJJJKJJJKJJJJJJJJJJHJJJHJHJGHGGGFFFFFFEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KEFEFFFFGFGGGGGGHGHGJGHGHHJHHHHJGJHJJHJJHJJJHJJJJJJJJJJJJHJJHJJJHJJJJJJHJJJJJHJJJJJJJJJJHJJ××ÿþþÿþÿýÿýÿýþþþÿþÿóóóóúóúóúóúò¬Žo=>===>===$=====CAA===A>A>====>=>>=>==>>=>=>===>====>>==>==C=>>==>A>>==>====>C>>>>>====>=>==>>>=>>=>C>>>>>>>>>C>>C>>>>>=>>>CÌýÿÿÿÿÿÿÿßxCACCC>=>>>>>>=>>>ACC>C=>>>>>?>>A>>>=>>?l?>>>>=>>>>?=>=>>=>CCl>A?=>=>>A>==>C>==>>=>>==>ACC>C>==>>>>>>>>?>?>>>>C>>>=>>=>>=>=>>A=?>>>>==>>==>>====>C>=>>==>=>>>>>====>==>======C>==>>>=>===>===>>===>>====A>=======>==================$$=!=>=!=====$===$!=======!!====!==x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷– –ÿÿÿÿÿÿÿñ!  !9q¥õÿÿþÿþÿþÿÿþÿÿýþþþþþþþþþþþþþþþæÓ6666666586666666666665665656666566666666666656666655666666656866666656666666865666666656666666656666666566656666666666666666666656666656656668666665666666656656666i666i6656568666566666666686656666666566666i56666666666566666666866586665666666666i666666666566666666666686668666666666666666665666666665666865666566566566666686666666666666665666665866666666665666666656666666666666666666665i6666666666666566ºº¸ºº¸ºººº¸ººººº¸º¸º¸ººº¸º¸ººº¸º¸¸º¸º¸¸¸¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸··¸·¸··¸·¸··³·³·³·³·³·³·K·³K³K³³K³K³K³·KKKKKKKKKKKKK·KKKKKKKKKJKKKJKJKJKJKJKJJJKJJJKJJJJJJJJJJJJJJHJJGJGHGGGFGFGFFEEFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFGFGGGGGGGHGHGJGJGHHJGJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJJJJJÓÓÿþþþþýÿþþþþÿþþþþÿüóúóóúóóóúóò¬o====>=========>A>>===>AC=====>>A>=>==CA=>==>==>=>=>>===>>===>=>>=C>>>====>==CC=>AC===>==>>>=>>==>CC>>>>==>>>>>>>CC=?C>=>C>=ußÿÿÿÿÿÿÿÿèƒCCCCC>>=>CC===>>>C>C>>>>=CC>C>>==>C>=CCC>>>>=>>=>A==>>>=>CCCC>>=>>==>>>=>>>>=>>>>>>=>CC>>>>>==>=C>>>C>>CCCC>>>>==>>=>=>C=>>>>CA>>=>>>=>==>====>CC==>>=>>>>>C>========>=>>=>>====C=====>==>=>====CA====>>>=======>=!$==========$$=====$$==$==========!======$!$=======xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð‚  !@óÿÿÿÿÿÿÿÎ! !qªíýÿÿþÿÿþÿþÿÿÿÿþþþþþþþþþþþþþþþæÓ666666665665666866666666656666686666668666656665665666666666665666666666665666666668666666666666566686665666666565666665665666666666666666666866i66665656i6665666566566666665i66i6666665666566666866666665666566656566666666566665656666666666666566685686865666666666666666666668666666566i66665666668666866656666666666566666i6866665668688i6666666i6666665666666656666566668666666685665656666668i66666666656¸¸º¸¸¸º¸¸º¸º¸¸¸º¸¸º¸¸¸¸º¸¸ºº¸¸¸ºº¸º¸¸º¸º¸¸¸º¸º¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸·¸·¸¸···¸··¸·¸·¸··¸·········³····³·³·K··³K·K·K····K·K·KKK·KK·J·J·J·JK·J·J·J·J·JKKJKJJKJJJKJJKJKJJJJJJJHJJHHGGGGGFGFFFFFK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKK³K³KKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKK³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³K³KKKKFFFFFFFFGFGFGGGGHGHHGHGJGHHJHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿþÿþÿýÿþÿýÿþÿþÿúóó÷úóóúóóúò¬m==>========>=$====>=>==========>>====C>====>=>=>>>>==>==C>==>>CC====>>>>>>>=>>==>>=>C>>>>=>=>>>==>>==>>=>CC=>>>>>==C>=?CC>==zèÿÿÿÿÿÿÿÿò›C=C>>>>>C>>C>>>>>=>>>C==>C>>==>=>C==>A>=AAC>=>>C>>>>C=>A>>>>>>=>lA>AC>?>>>>>?>?C???A?>=>>>>>C>>>==C>==>>>>===>==>=>>=C==>>=>==>==C>A>=>>C>=>==>==CA===>=>=>>==>>>=>===C>=>==>>===>>=>=====>=>==>================>=========$========$==========$$==$===9=!==!=====!$!x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáZ!Èÿÿÿÿÿÿÿ÷[   =qªõÿÿýÿþÿþÿÿþÿþþþþþþþþþþþþþþþþþæÓ65666666666566666566666666666566866666656668666666666666i6866566666656568666666i566866656665666666666666666666566666666668666666656566656668i66i686665666666666656666666666666666666656666665666656666566566656666666666666666666666665656886666666666666656686666666686(%%8666656666666566656566556665666666656665666666666656666866i666666666565666566666666666665665686666666666666665656666665666ºº¸ºº¸ºº¸º¸º¸ºº¸ºº¸º¸º¸º¸¸¸¸º¸º¸¸¸¸º¸¸¸·º·º¸¸¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸·¸·¸¸··¸¸··¸··¸···³··³···³···³·K··K·K³³·K³K·K·K·K·KKKK·KK·KKKKJ·J·KJ·KKJKKKJKKJ·JKJ·JKJKJKJJJJJJJJJJJJJJJHJGJGHGGGGFFFFFDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³K³K³K³K³KKKKK³J³K³K³K³KKKKK³K³K³J³K³KKKKJ³K³K³K³K³KKKKK³J³K³J³K³KKKKJ³K³J³K³K³KKKKK³K³K³J³K³³KKKK³K³K³K³K³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK³KEFFFGFFFFGFGGGGGGHGHGHGHJGHHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþýÿýÿþþþþþþýþþþÿüú÷óóú÷óúóóò¬Žo==========>======>=>=>====>====>A====CA====>==>==>>==>C>>C====CC>==>=>>>=>>==>====>>C>>=>>>=>>>=>===>====CC>>=>C>==>C>>A>>>>=ƒòÿÿÿÿÿÿÿÿ÷Ìx=>AC>>>>>C>>CA>=>>>>=>=>>>>=>>>C>=>>=>CCC>=>A>>=>>>>=>>>>>>>=>CCA>>CCCC>=>?CCC>>C>C>>>>>>>CC>=>=>C=>>>=>=>=>===>>=>=>=>=>===>==>>CC==>CC=>>===>>>>==>===A>>=>>>>====>=>=========>>=======>=====$=$==========================>>>=!=====>======$==!===$$!==!=$$===$=xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÈ@ „üÿÿÿÿÿÿÿÎ    =}¥íþþÿþÿÿþÿþÿÿÿÿþþþþþþþþþþþþþþýèÓ³³³³³³³³³³³³³³³³³³·³³¸³³¸³¸³¸³¸¸³¸¸³¸¸¸¸¸³¸¸¸¸³¸·¸¸³¸¸³¸¸¸³¸·¸¸¸66666666666656666i56566666666656666665666666665666666666566665666i6665656666666666566666656i6666566666655666666666666666666686666666666666656665656655666566666665666566666686666666666656566666666566668i668666556666i8656566656565686666666656668566666666666665565665% %(( 666666666666666666656666i665i6666668656665666666566666666666566666666666666666656666666666566i666666686666666666566i665656666666¸º¸¸ºº¸¸ºº¸¸º¸¸¸º¸º¸¸º¸º¸¸º¸º¸¸¸¹¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸·¸·¸·¸···¸··¸··¸···¸³¸³·³·³··³³³³·³³K·³³K·K³K·K·K·K·KKK·KKKKKKK·J·J·JKKKJKKWKJ·JKJJKJKJJJJJJJJJJJJJJJJJJJJJJJHHGJGGGFFFFGFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK++++++++++++++++++++++++++1+1+1+1+1+1+1+1+1**********1+1************1************1+111**********1+************1+11*********1+*************1+***********1+K††K³KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKEEEFFFFFGFFGFGGGGGGGHGJGHGJGJGHHJGJHJJHJHJHJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿýþþþÿþÿþÿþÿýÿþúóóúóóóúóóúò¬o===========>>>========>>>======>==>===>=>====A>===C===>====>=>>==>>=>>A>====>>>>>>>>====>>>==>>>>>=>>>>>>CCC>==>>=>CA==>=>>>>C›÷ÿÿÿÿÿÿÿÿýèÆuC>C>>>>===>>>>>>>>>>>?>>>>?>=CC>>=>C>?>>>CC>>>>C>==>=>>=>>>A?>>==>>>>==>C>>>=>>>>>=>>>>>>C=>=>>>>=>=>>>>=>>=>C>A>>>>>==>>====>=>A==>===>>>>>A====>====>==>>>>===>==>=>==>>>>======>===>=====>========>==>===============================!!$=====!$$=$$$====!$$==x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü΂!  _÷ÿÿÿÿÿÿÿ÷[=q¥õÿÿÿÿþÿþÿÿþÿÿþþþþþþþþþþþþþþþþæÓ³³³³³³³³³¸³³¸³³¸³³¸³³³³³³³³³¸³³³³¸³¸³¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸66566565i6566668666566666666666666666665666666666666666666666666666666665666666666666666566566656666666666666666666666656665666668i6666666666666565666566666665666666666565666666566666666666566666656656666666686666666656666665666666666665666666666856%%%%666% %% % %%6666666666666666666666666656666666665666666658666666656666666666666666666666i666666686666666656666666665665666656666i666666666ºº¸º¸¸º¸º¸º¸º¸º¸ºº¸º¸¹¸¸º¸¸¹¸º¸¸¸º¸º¸¸¸º¸º¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸·¸··¸··¸·¸···¸···············³·³K·³·³·K·K·K··KK·K·K·KK·J·KK·KKWKKKKJKJ·JJ·JKJKJ·J·JKJKJJKJJJJJJJJJHJJGJGHGGGFGFFFFEKKK³KKKKKKKKKKKKKKK++++++++++++++++++++++++++++++OOOOO0O202020202020202022*ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŠŠŠŠŒŠŒŠŒŠŠŠŠŠŠŠŠ‡Š‡Œ‡‡Š‡‡‡Š‡‡Š‡‡Š‡Š‡QЇ‡‡‡*‡‡‡‡‡‡‡‡‡‡‡‡4‡‡‡‡‡4‡‡‡4‡4‡‡‡‡‡4‡‡‡‡‡4‡‡4‡4‡4‡4‡2‡4‡44‡44444424*++++++++++++++++++++++++++++++++++++++++++++++++++++++++KKKKKKKKKKKKKK³KKKFEFFFFFFGFGGGGGHGHGHGJGJGJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþÿþÿþÿþþþýþýþþþýÿü÷óóóúóóú÷óòÓŸp============>>>=>==$===AA===>>===>>====>=>===>>====>=========>===>C>=>>>=>====>>>>>>==>==C=====>C>>=>>>=ACCC>==>C==>>>>===>CCAC÷ÿÿÿÿÿÿÿÿÿüçxCC>>>>==>>>C>=>>CC>=>CC>C>=CCC>==>>CC>CC?>>>C?=>=>=>>=>>>>A==>=>>>===>>>>>>>>=>>>>=>=>AC>=>===>>=>>=>=>C>=>lC>>>>>>>>>>=>=======>C====>>>C>>==>=========AA====>===>>>=>>=====>===========>>>>=>>==>=>=======>=========$$=======$====!=$$$=>=$$$=!$$$=$==$=!=$$xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÏ‚;YñÿÿÿÿÿÿÿÿÎ!  !   !  q¥íþþþþÿþÿþÿþÿÿÿþþþþþþþþþþþþþþþæÓ³³³³³¸³³¸³³³¸³³·³³¸³¸¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸66666666665666668666665668866666666666566666656566566666666666666566686666666666666665666666566666668868666668666i6666666656566686666666866686666666666666666665666556656686665566866666566666666656665i6666566666666666666566666666666666666666666i66666565666666565%%% 68%% %%% % % 66566666656565666666666566666666666666665666666666i65686566668665686666665656556666666666666666666i666666566666685665668868¸º¸¸º¸º¸¸º¸¸¹¸º¸¸¸¸¸º¸¸¸º¸º¸¸¸º¸º¸¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸··¸······¸··¸··¸··¸³··³··³··³·K·K··K·K·³K·KKK·K·K·KKKKKKKKKKKKKKKKKJ·JKKKKK·J·J·JKJ·HKJJJJJKJKJJJJJJJJJJJJHJHGHGGGGGFGFFFFFKKKKKKKKKKKKKKKKKKK+O‡OOO‡OOOOOOOOOOOOOOOOOOOOOOOOO042O2O22222222222222220*ŒŒŒŒŒ‹ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŠŠŠŠŠŠ‡ŠŠ‡Œ‡Š‡ŠŒ‡Š‡Š‡Š‡Š‡Š‡‡‡‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡‡‡4‡‡‡‡4‡‡‡‡4‡‡‡‡‡‡4‡‡‡‡44‡‡4‡‡‡4‡4‡4‡4‡4‡4‡44‡4‡444Q4*++++++++++++++++++&+++&++&+++&+&+&+&+&+&+&+&+&+&&+&&+&&+KKKKKKKKKKKKKKKKKKEEFFFFFFFFGFGGGGHGHGHGHGJHHHHHJGJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýþþÿýþþÿþÿþÿýÿþÿúó÷úóó÷÷óó÷ò¬o=======>===============>=========A>====>======>>>===>>=>>=>>===C==C>====>>=>===A==>>>A=>?CA>>>>>>>>>>>>>===>>==CC>>>=>=AC>=>>==C–òÿÿÿÿÿÿÿÿÿÿüèÌ›xC>>C>C>>>==>=>C>=>C==>>>C>>===?>C>=>=>=>=>>>>>>>>>>>>>>>=>>>>=>>?>=>>>>C>=>A>>>==>=>>=>>A>=>>>=>>>>>>>==>==>>====>>>===>>A>>>==>====>=====>>===>>=>==>>=>===========>=>>=====>>>===================================$=============$$===$==$$====$!=$======!!x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷áÂ;Báÿÿÿÿÿÿÿÿ÷Y  $qªõÿÿÿÿþÿÿþÿÿÿþþýþþþþþþþþþþþþþþæÓ³³³³³³¸³³³¸¸³³¸¸³¸³³·³¸³¸³¸³¸³¸³¸³¸¸¸¸³¸¸¸¸¸¸¸³¸¸¸³¸¸³¸¸¸¸º¸³¸¸º6566656666666666665666i66666666656666666566566666686666656666666566566666666666656666666666666666666666686665686656686666666i8666565666i666666666666566666668666666656656666i6665i8668668866665656666i666665666665865666666666666666666666666666666686666666666(%% % %%%% %%%%%% %%(65666666665666868666665666586666i56666i66i66665666565666666666666666866666666666666666666666665666668666686666666666666666666666¸º¸º¸¸º¸¸º¸¸¸¸º¸º¸º¸¸º¸º¸·¸º¸º¸¸º·º¸º·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸·¸¸¸·¸··¸··¸·³··³³·³·³··³·K·³·³·³³·K³K³³K·KK·KKK·K·K·K·K·J·J·J·KKKKKKJ·JKJKJKJKJJJ·JJJKJJJJJJJJJJJJJJHJJHJGJGGGGGFFFFFGFKKKKKKKKKKKKKKKKKKK+‡O‡O‡O4O‡O4O4OOOOOOOOOOOOOOOO2OOOO2O2422222222222220231ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŒŠŠŠŠŠŒŠŠŠŠŒ‡Œ‡Œ‡‡Š‡Š‡Š‡Š‡‡‡Š‡Š‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡‡‡‡‡4‡‡‡‡4‡‡‡‡4‡4‡‡‡‡‡44‡‡44‡44444‡444‡44444‡44‡444444*++++++++++++++++&+++&+++&+&+&+&+&+&+&+&+&+&&+&+&+&&+&+&+KKKKKKKKKKKKKKKKKKFFFFFGFGFFGFGGGGGGHGGHGHGJGJGHHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿýÿþþÿþýÿýþþþþþÿüúóóóúó÷óúóò¬Žo==>=========$======$=====$=====$=>>====A>>====>>====>>==>==>==>>==>>====?==>>==>>>==CC>=ACCC>>>C==>=>>>>===>>>=CCC>>===>>?>=>>==>ƒáÿÿÿÿÿÿÿÿÿÿÿÿúñßÇ›”{xuxuuuuuuxuuuuuuxuxuuu]uuuxuuuuxuuu]uxuxuuxuxuuxuuu]uxuuuxuxuu]uxuuuxuuxuuxuuu]uuxvxuuuuuuuxuuxuuuuZuxuuu]uxuxuu]txu]uuZuxuuuuuZuu]u]uuZuuxuuu]u]uuuu]utZuZZuu]u]uuu]uu]uxutZZuxuZuuZZ]u]uZCZZ]uZ]uuZ]uZu]uuZZZuZ]ZuZZuuZZZZZZZZ]]uZZZ]uZZZZZZZZZZZZZƒñüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüúóñáÏÌ–d@ ! [ÑÿÿÿÿÿÿÿÿÿÈ!!qªíþþþÿþÿþÿþþÿÿÿþþþþþþþþþþþþþþýæ×³³³¸³³³³¸³³³¸³³³³³¸³¸³³³³¸³¸³³¸³¸³¸³¸³¸¸³¸³¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6666686666666666666666568666666i6666668666666666656666666665666666566666666666666666666666666666665666665666666666666i6i86656666666666666666666666666666666666668666666666666666666666666i86666i656665666665665666666666666666666686666666666666665666%%%%%% %%% %%%%%%% %% %(66866666666666i666666666666i6566666666656666656666666666666568i666668666656666666566566666666666666666566666666666666666i8¸º¸¸¹¸º¸¸º¸º¸º¸¸¹º¸¸¸º¸¸º¸º¸¸¸¸º¸º¸¸¸º¸¸º¸º¸º¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸·¸¸¸·¸·¸···¸·¸··¸··¸·¸·¸··¸·······³······K³·³·K³³³K·K·KKKKKKKKKK·KK·J·JK·JKKWKKJ·J·JKJ·JKJKJKJKJKJJJKJJJJJJJJJHJJHGJGGGGFGFFFEFEK³KKKKKKK³KKK³KKK³K+2‡2O4O‡O4O‡OO4OOOOOOOOOOOOOOOOO2O2O2222222222222222220*Œ‹Œ‹Œ‹‹ŒŒŒŒŒŒŒŒŒŒŒŒŒŠŠŠŠŠŒŠŠŠŠ‡Œ‡Œ‡Š‡Š‡Š‡Š‡Š‡Š‡Š‡‡Š‡‡‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡4‡‡‡‡‡‡1‡‡‡‡1‡‡‡‡‡‡1‡‡4‡‡4‡4‡‡4‡4‡4‡4‡4‡44‡444444444‡4*++++0++(++(+&0&+(++&0&+&0&+&0&+&+&+&+&+&&+&+&&&&+&&+K³K³KKK³KKKKKKKKK³DFFFFFFFGFGGGGGGHGHGJGHGJHHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýÿýþþþþþþþÿýþþÿþúóóúóó÷óúóóò¬}m==============$$==============>==A=====>>========>>====>A>>===A>===>>>===>>>>>>==C==>C=====>===>>=>>>>>==>=?>==>>=>==>>>>>>==>>>A>xÞýÿÿÿÿÿÿÿÿÿÿÿÿÿüüú÷ññèñçðñððññèðñððèñèññçðèðèðèñðñðçèððèñèñèñññèñçñèðñðèèñèððèñèñðèñèðèðèñðèñççñðçèðèññèñðñðððñññññèððçñèèðèðèðèðèèðèðèñèñðçèðèððçðèñðèðèðèðèðèñðçççèðèððèðççççèñðèðèðñðèðñèðççççèñççðèðèèèñèðèðççèèðèèðçèðèññçðèçèçèçèèççèðèçèèèèèèèèðççèèççèçèèçèèçèçèáß–ƒ”ƒƒƒƒƒƒƒƒƒƒ‚ƒƒƒƒƒƒƒ‚ƒƒ‚‚ƒƒƒƒ‚‚ƒƒƒƒƒ‚ƒƒƒ‚ƒƒ‚‚ƒƒƒ‚ƒ‚ƒ‚ƒƒƒ‚‚‚‚ƒ‚‚‚‚ƒ‚‚ƒƒ‚‚ƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚x‚‚x‚‚‚_‚‚xdz‚_‚‚x_‚____‚x_x_dx__‚‚xdx_‚x__dxdx____dx_dx___d_ZY@; ‚ñÿÿÿÿÿÿÿÿÿá; !qªõÿÿÿþÿþÿþÿÿÿÿþþþþþþþþþþþþþþýþæÓ³³³³³¸³³³³¸³³³¸³¸³³³¸³¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸º¸¸¸68666i6668666656i6i66i6666666666666666666566666668656566666666656666i6656666666666666666666666666666666666666i6565666i6666666666666668666656556666666666666656666i668666656666i66666i88666566666666666666i666i666666666666666665666i886566666666666666665% %% % % % % % % %% % %% %%6666666666666666666666666666666666666666656666666665666i66666666666666566666666656666666656666666666666566666666i66i5666¸º¸¸¸¸º¸º¸º¸¸º¸¸¸º¸º¸¸º¸¸¸º¸º¸¸º¸¸º¸¸º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸··¸·¸·¸¸··¸··¸··¸·¸··³··³······³·K·K··³·K³K³·K·K·K·K···K·K·K·KKKJ·J·KKKKKKJ·JKKJKKJKJ·JJJJKWJJKJKJJKJJJJJJJJJJHJHGHGGGGFFFFFEKKKKKKKKKKKKKKKKKKK+‡4O‡O‡2‡O4O4OOOOOOOOOOOOOOOOOO2O2O2O2222222222222222031ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŠŒŠŠŒŠŒŠŒŠŠŠŒ‡Œ‡Œ‡ŠŠ‡‹‡Š‡Š‡Š‡Š‡Š‡Š‡‡‡Š‡‡‡‡‡‡‡‡*‡‡‡‡‡‡‡‡‡‡1‡4‡‡‡‡4‡‡‡‡‡1‡‡‡‡‡4‡‡4‡4‡44‡4‡4‡4‡4‡44‡444‡44444444*+++0+++0+++0&++(+0&+&++&+&++&+&+&+&+&+&+&+&+&+&&+&+&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFFGFGGGGHGHGHGJGHHGJHHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýÿýÿþÿþÿýÿþþþþþýÿüó÷óúóúóóúóò¬Žj$!$========>=$==$=======>A>===>=>?>======>====C=>=======>A====>=====>=====CA>C>==>>==>>>=======>==>A=>C>==>=>>========>>===>=>CC>>=uÆòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò_===!!=$!!!=!!===!!=!!!!!!!!!!!!!!!!!!!=!!!=!!$!!!$!!!!!!!!!!!!!!!!!   Â÷ÿÿÿÿÿÿÿÿÿñY =q¥íýÿþÿþÿþÿþþþÿÿþþþþþþþþþþþþýþýæÓ·³³³³³¸³¸³³³¸³³¸³³¸¸³³³¸³¸³¸³¸³¸¸¸¸¸¸³¸³¸³¸¸¸¸¸¸³¸¸³¸¸¸¸¸¸³¸¸¸¸¸66i668666i6666666666666666i866668866666666666666666i666666666i86i6666666566656666666666666686666666666666666666666666686656656666656i666666666666666566666666656i6666666666666666666666666666665666i6i566666i68i66668666666i66665666i6i666666666(%(65%%%%%%% %%%% %%%% %% %%%%% %%% (666656656i6686666656i66665666666666666665666686656666666666666666665666666666666666666666666666566666666666866666666866668¸¸º¸º¸º·º·º¸¸º¸º¸¸¸º¸¸¹¸¸º·¸·º·º·¸º·º¸¸¸¸¸º·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸··¸··¸·¸··³··³·³··³·³·³³·K·³³K³·³K·³K³K·K·K·KKKKKKKKKKKK·KK·JKJ·JKJ·JJ·H·JJ·HKJKJKJJJKJJJJJJJJJJJJJJHJHJGHGGGGGFFFGFEFDKKKKKKKKKKKKKKKKKKK+O‡O4O4O4OOOO4OOOOOOOOOOOOOO2OOO24222222222222222022032*ŒŒ‹11**11**1***1*11*111*111111*11*11*11*111*111*11*1111*111‡‡*‡‡*****)***1*****)*****11*******)***)********************44444*+++++(++(++&++&0++&++&0&++&+&+&+&+&+&+&+&+&&+&+&&&++KKKKKKKKKKKKKKKKKKFFFFFFFFGFGFGGGGGGHGHGJGHGJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýþþþþþþÿýþþÿþÿþÿúóóúóóó÷úóóò¬Žo=$====================================>======>>====>==>>===>=>>===>>>>====>>==>=>>===>===?>>==>C>==>>>==>C>=>=>>=>>>>>=>>>>=>>>>>===C{Ì÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ]$=$!$==!===!!$!$!!!!!!$!$!!!!!!!!$$$=!$!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!! !!!!! !!!!!!!!!! Îüÿÿÿÿÿÿÿÿÿó_  =q¥õÿÿþÿþÿÿþÿÿÿÿþýþþþþþþþþþþýþýþæÓ³³³³¸³³³³³¸³³³¸³³³³³³³¸³³¸³³¸³¸³³³³¸³¸³¸¸³¸¸³¸¸¸¸¸¸¸¸¸³¸³¸¸¸¸³¸¸66i6666666i8666666666666666666666665666666666666666666566666666i6666686666666666666666666668666i66666666666668666666666666666666668666666666666666666666686666666666666686666666566666666i6666666665i666666665666666i686i6666666666666666666866686i66( %%%%%% % %%% % %%% % % %%% % % %%6666ii666566666666666666566i6666i6666666666666666866666666666666666666666666i6665i66666666666i6666666656666666¸º¸¸¸¸º¸º¸¸º¸¸¸º¸º¸º¸¸¸º¸¸º¸º¸¸º¸º¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸·¸¸¸¸¸¸¸¸··¸··¸··¸···¸·¸··¸·¸··········K··³·K·³K··K·KK·K·K·K·K·K·K·KK·J·J·KKKWKKKKKKKJKKJ·JKJJ·JKJJKJKJJJJJJJJJJJJHJJGJGHGGGFGFFFFFKKK³KKKKKKKKKKKKK³K+42‡O4+++++++++++++++++++++++++++++++++++++++++++++++++1Œ‹ŒŒ1óóðóñðóööõöööñöõöõöõöôìôìëñâðòðòðçðÑñïðáðáïáððñððáðáðð*‡‡*‡‡*ÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÍÑÍÑÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍËÍÖÚËÍÓÍÄÍÄÍÄÍ*44444*++++++0++++++++++0++++++++++++++++++++++++++++++++&&+&&+³KKKKKKKKKKKKK³K³KFFFFFGFFFGFGGGGGGHGJGHGJGJHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþÿþÿýÿþþþþþþþþýÿüúóóúóúóóúóò¬sj===$$$=========>=============>==============>A>===>===>====>==A==>==A=>>>=========>====>>>>===>CC>==>==>=CC>==>CC=>==>===CC>==>>>=====CƒÌúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò]$=!!!=====$$$$!!!!!=$!$$!!!=!$!!!==!!!!$!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!! !!!!!!!!!!!!!! !! ! _Îóÿÿÿÿÿÿÿÿÿÿü„ !=qªíþþÿþÿþÿþÿþÿÿÿþþþþþþþþþþþþýþýæ×³³³³³³³³¸³³¸¸³·³¸·¸³¸³³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸66666666866i666666666666866666666666i66665656666666i66666666666666666i866666866866666666i666666666666666666666666666656666668i66666666666i66666666666666566i6566666666666666666666665666665666666566666666666ii66666666666565668i866666i566( %%%% %%%% %% % %%%%%% %%%% % %% % 666666668666666666666666666i6566666666666666i666666666866666666666666666666666i666666668666666666866866666666666665¸º¸º¸º¸¸º¸¸¹¸¸º¸¸º¸¸º¸º¸¸º¸¸º·º¸¸¸¸·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸³¸···¸·¸·¸··¸··¸¸·¸······³···³·³·³·³····³³³K·³·K·K·KK·KKKKKKKKKKKK·J·J·JKKKKJ·JKJ·J·JKJKJKJJJKJKJJKJJKJJJJJJJJJHJHGJGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKK+4O4O4+óüüüüþþüüÿüüþþüþþüþþüüüüüüüüüüüüüüüüóóóüóúóúüúúó1Œ‹ŒŒ1óðóóóóðööúöööñöñöõöõìëöñëëððððóððððððððððððððððððððððð*‡‡*‡‡*ðïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÍÑÐÑÍÍÍÍÍÍÍÍÙÜÍÍØ×ÍÍÍËÍÍ*44444*Í­°ØÍËÍËÄÄÄÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄ×°°ÆÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÁÁ¦+&&+&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFGFGGGHGGHGJGHGJHHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþþÿýþþÿþþþþþÿþúóóúóóó÷÷óóò¬}j=========!=========>============$=====>====>>=====>===========?=====>>>>>A======>==>>=>===>=>>>>==>>>===>A>=>==AA==>=>>=>CC>=>=>>>=>=?C>u”Ìèüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòx==!!$$!$$!!$$!!!$!!$$=$!=$!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!! !! !!!!   !! ! !  #_ËóÿÿÿÿÿÿÿÿÿÿÿüÂ! !q¥õÿÿþÿþÿþÿþÿþÿýýþþþþþþþþþýýþýþæÓ³³³¸³³¸³³³¸³·³¸³¸³³¸³³¸³¸¸³³¸³¸³¸³¸³¸¸¸¸³¸¸¸¸¸¸³¸¸³¸¸³¸¸¸¸¸¸º¸¸¸656666666666666656666566666666666666666865866666666566666666i665i66666656666666666666i6666686665i6656666666666686666666666666666666666656666666668i86666666686666668i86666688666656566666566666666668666666666i666666666666666666566656666656666566656668666668656666655% %%%%%% %%%%% %% %% %% % % %%% %66656666666666566666686666665i66666666666666666668666666668666666666566666666866666566668665i66656666566666666656665666666666º¸¸¸¸¹¸·º¸¸¸¸¸¸¸¸¹¸¸¸¸¸¸·º·¸·º·º·º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸·¸·¸···¸··¸·¸··³··³¸·³·³·³·³·³·K·K··K³KK³K³³K·KK³·KKK·K·K·K·KK·J·J·J·J·KJ·KJ·J·JKJKH·JJJKJJJJJKJJJJJJJJJJJJJHJJGJHGGGGGFFGFFFDKKKKKKKKKKKKKKKKKKK+O‡O‡O+üüüþþþþüüüüüþþþþþÿþþüüúüüüúüüüüüüüüüüúüúóúóüüüóú*‹ŒŒŒ*óóóòóóóööõöööõöõöõöõöñëëëëðóðóóóðððððððððððððòðððððððð*‡‡*‡‡*ÑïÑðÑïçÑðÑïðÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÍÐÍÐÍÐÍÝÝÍÐÝÍÍÍÍÍÍÍ*44444*ÍØ°ØÍÍÍÍÍÍÍÍÍÍÍÄÍÍÄÍÍÍÄÍÄÍÆ­°°ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÈÇ+&+&&+&+KKKKKKKKKKKKKKKKKKDFFFFGFFFFGGGGGGGGHGHHGHGHGJGJHHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþÿþþýÿþþþþþÿþþüÿü÷óóúóúóóúóò¬?=======$$=======>=======>==$$==$===$======>A=========>================>>>CA====>===>>==>====>>====>A>==>=>>=>>=>>>>====>A>A=>C>>>=>>===>AACxƒÆá÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñx$=$!$$!!!!==$!===!$$=!!!$=$=!!!!!!$!!!!$!!!!!!!!!!!!!! !!!!!!!!!!! !!!!! !!!!!!!!!!!!!! ! ! !   @‚Èçóÿÿÿÿÿÿÿÿÿÿÿÿó–!!!      q¥íýÿþÿþÿþÿþÿÿÿÿþþþþþþþþþýþþýþýæ×³³³³³³³³³³³³¸³³³³³³³³¸³³³³³¸³¸³³¸³¸³¸³¸³¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸666566666666666666666666666668i6686656668665666666666666666666665656666666856666666666565656666566666666566565i566656866666566566566666666666668i66666i6566i5686666666i6566656666666668666666686666666666666666656666856566i6656666666565666666666666666666666i6666565 % %% %% %%%%% % %%%%%%%% %%( 6666668i66666656856i6665666666688666666666i6565666666666656666666666666666566666666656666656565i666666666666666666666i66656¸¸º¸º¸¸¸º¸º¸º¸º¸º¸¸¸º¸º¸º¸º¸º¸º¸º¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸³¸¸¸¸¸¸·¸·¸·¸·¸··¸···¸·¸·¸····¸·············³··³·K·³K·³³K·K·KKKKKKKKKK·KKKKKKKKJ·JKJ·JKJK·J·JKJ·JKJ·JJJJKJKJJJJJJJJJJJHJHGHGGGGFGFFFFFFK³KKKKK³KKK³KKKKK³K+4O4O‡+üþþþþþþþþþüüþþüþÿüþþüüüüüúüüüüüþüüüóüüóóúóüüüóüó1ŒŒŒ‹Œ1òóóóóóóõî÷îööõöòöõöõöõëòëìðëðóóóðóððòðóððððððððóðòðððð*‡‡*‡‡*ðÑðÑÑÑðÑïÑððÑáïÑÑÑÑÑÑÑÑÑðÑÑÑÑÑÑÑÑÑÍÑÑÑÑÍÍÝÝÑÍßÞÍÐÍÐÍÍ*44444*ÍØ­ØÍÍÍÍËÍÈÍÈÍËÍÍËÍËÍËÍÄÍÄḬ́°×ÄÍÄÍÄÄÄÄÄÄÄÄÄÄÄĦ+&&&&&&+K³KKK³KKK³KKKKKKK³FFFFFFFFFFGGGGGGGHGJGHGJHHJGJHJHJHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþÿýÿýþþþÿþþþþþÿúó÷÷óóóúó÷óò¬o=======!=============================>>=>=>===========>=>===>>=>=====>=>====>>=>==>>==>C=>====>>=>=====>>==>=>===>===>>C>==>>===>>=>=>>=C>=>=Cuƒ–ÆÌ×ßçñóõó÷÷ò÷÷÷ò÷÷ò÷÷÷÷÷÷òóõ÷÷÷÷÷÷÷÷ò÷õóõ÷÷ò÷÷òó÷÷õóõó÷÷õó÷÷÷÷÷÷÷÷÷òó÷÷÷÷õó÷÷ò÷óõó÷÷õó÷ò÷ó÷÷÷òó÷÷õó÷ò÷ó÷÷÷ò÷÷÷÷÷ò÷ó÷÷ò÷ò÷÷÷÷òóõ÷ó÷òóò÷ò÷òóõó÷òóò÷÷÷ò÷ò÷ò÷òóõóõóòóõó÷òóò÷ó÷ò÷òóòóõóòóòó÷õó÷òóõóòóòóòóõóòó÷óòóõóòóòóòóò÷òóòóòóòóòóòóõóòòóòóòóòóòóòòóòóòóòóòóòçÆ”ƒƒ–”–ƒ–”ƒƒ––ƒƒ––ƒƒ–”––ƒ––ƒ–ƒ…ƒƒ–ƒƒ––ƒ……ƒ–ƒ……ƒƒ…–ƒ‚ƒ…ƒ…ƒ…ƒ…ƒ„‚…‚……ƒ‚…‚ƒ…ƒ‚„‚…ƒ‚‚ƒ‚ƒ‚„‚ƒ„ƒ‚‚…‚‚…‚„‚„‚‚ƒ‚„ƒ‚„‚‚„‚‚‚‚‚‚ƒ…ƒ‚‚‚‚‚‚‚„‚‚„‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚„–ÆÈÎáð÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿá_!   $qªõÿþÿþÿþÿþÿþÿþþýþþþþþþþýþýýþýþæÓ³³³³³¸³³¸³¸³¸³¸¸³¸¸³¸¸³³¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸³¸º³666666666666656i566666666i6656666665665666666566666666666666665666666666665666665665666666666666666656666666i66665666i666666666i6666665666i66666566665666668666666666656666656656i666666566665665665666666565666566866666i5566i6i6666666666666665665666566665656656666666 % % % % %%%%% %%%%% %% % %%% %(66666666666665i666666666666666i86656666866666i666666666i65665i6866666666568i66666666666666565666666666656666666i66666666i66¸º¸¸¸º¸º¸¸¸º¸¸º·º¸º¸º·º¸¸¸·¸¸·º·¸º·¸·º¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸¸¸¸¸¸³¸³¸·¸¸·¸·¸··¸·¸¸··¸·¸···¸···³··³·³·³··K···K·³·K··K·K·K·K··K·K·K·KKK·J·J·KK·JKKKKJ·J·JKKH·JH·JJJJKJKJJJJJKJJJJJJJJHJJGJGHGGGGFFFEFEKKKKKKKKKKKKKKKKKKK+‡4O‡O+þþüÿþþþþþþüþüþüþþþþþüüüüüüþüþüþüþüüüüüüóüüþüüüüü1ŒŒŒŒŒ1óóóóóóóööõöööõöõöõö÷ö÷ìõëëóëóóóóóðòðóðóóóóóóóóóððððððð*‡‡*‡‡*ððððððððððððððððïðÑÑïðïðÑïÑðÑïÑÑÑÑÑÑÑÑÑÑÑÝÝÑÑßÑÑÑÑÑÑÑ*44444*ÍØÝ×ÑÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ×°°ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÄÄÌ++&&+&&+KKKKKKKKKKKKKKKKKKFFFFFFFGGFFGGGGHGHGHGHHGHHHHJHHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþýÿýþþþþþþþþþþþýÿüúó÷óú÷ó÷÷óò¬Žo========$====$=========!$====>>==>CAA>=>>=============>>C==CCA>>===>=========>>>>>==>>>>=>======>=======>>>=>>==>=====>>>===>=>>A====>===>>>=A>>>>ZCZ]xxz{x{zx{zz{{{x{{ƒ{{xx{{yx{z{{ƒ{xx{z{z{xz{xx{z{xxz{zxx{{{{xxxxxx{{{{{{xxyx{xx{{{xz{x{{{x{xz{xxzxyƒ{{{xxxxzz{{{xzxxxz{xxxxxxxzxxxxz{{xxx{xxxz{xxxxx{xxzx{zxxxx{{zxxx{zxz{xxxxxxxxxxzz{zxxxzxxxxxxxx{zz{xxxxxxxxxxz{xxxxxxxxxxxzxx_xxxxxxxxxxxxxxxxxx_xx–ñüúú÷ú÷ü÷úúúú÷úú÷ú÷ú÷ú÷úú÷÷÷÷ú÷ü÷÷ü÷÷÷ú÷÷÷÷úú÷ü÷÷÷úú÷ü÷ú÷÷ü÷ú÷÷ú÷ú÷÷ü÷ú÷ú÷ú÷ú÷úúú÷úúú÷ú÷ú÷ú÷÷ü÷÷ú÷ú÷ú÷ú÷ú÷ú÷ú÷÷÷÷ú÷ú÷÷ú÷úú÷úú÷÷÷ú÷ú÷úúú÷÷÷ú÷ú÷ú÷ú÷ú÷úú÷÷÷÷÷÷÷÷÷ó÷÷÷ó÷÷ú÷÷÷÷÷÷ó÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úú÷ú÷÷÷÷÷÷óó÷÷÷ó÷÷÷÷÷ó÷÷÷÷÷÷÷÷÷÷÷óú÷÷÷÷÷÷÷÷÷÷ó÷÷÷óü÷÷óüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈY  ! $p¥íÿþÿþÿþÿþÿþÿÿÿþþþþþþþýþýþþýþýæ×·³¸³³³³¸³³³³³·³³¸³³³³¸³¸³¸³³¸³¸³¸¸³¸¸¸³¸¸³¸¸³¸³¸³¸³¸¸³¸¸¸¸¸¸¸¸¸¸6666666565666i5666566666656666i6866666666666656i6856666666666666666666666866556666666665565668666666666666666666i6656686665666566666i656668666666666i656686i6656i6666i566666566566666665666665656i65666666666666666566666666866566566666i6666666666666666665i66665666665% %%% %%%%%%% % % %% %% %%% %% 6(6i86665666666556666665666666666656666685686666656666666666666566565i6666665666668i866666666666666666666566655666i66666656¸¸¸º¸º·º·º·º¸·º¸¸¸¸¸¸¸º¸¸¸¸¸º¸¸¸¸¸º¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸³¸·¸·¸···¸··¸··¸··¸³··³¸··³·³··³·³³³·K³³·³·K·K³K³KK³K·KK·KKKKKKKKKKK·JKKKKKJKKKWKJ·JJKJKJKJKJJJJKJJJJJJJJJJJJJJJJHJJGJHGJGGGFFFFGFFFFKKKKKKKKKKKKKKKKKKK+O‡OO4+þþþþþþþþþþþþüüþüüþþüþüüüüüüüüþþþüüüüüüüüþþüüþüüü1ŒŒŒŒ1úúóúóóóööýöööõöõëõöõöõöõööðöóóóóóðóðóóðóóóóóóðððóðóðóð1‡‡*‡4*ððððððððððððððððððïðððððððïÑððÑðÑÑðÑÑðÑÑÑÝÝÑÑÑÑÑÑÑÑÑÑ*44444*ÑØÝØÑÑÑÍÐÍÐÍÐÍÐÑÍÐÍÐÍÐÍÐÍÐÍÍÍ®°°ÍÍÍÈÍÍËÍÈÍËÍÈÍÍÄ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFFGFGGGGGGGGJGGJGHHGJGHHJHJHJHJHJJJHJJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþÿþÿþÿþþþþþþÿþúóóú÷óóúóóúò¬o=====================>=======A===>=>========>=======$=>=====>=====>>==>=>=>=>>===>=======>>>>=>A===>>===>>>>===>=>>=>>=>>=>>>===>==>>>=>>=A>=>==CA======>>>===A>=>=A==>>>=>=>=A=>==>>==>===>=>>==>>>===>>==>>A>==>>>=>>==@C>====>=>=CA=>==>C===>>>==>=>C====>=>>==>==>>==>A=>==>=>>====>A===>==============>=====>====$$=>===>=$=============$$>====$==========$=$!=$===$$$=$===!$$$===$=$!$==!!$$$$$!$$!!x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ„;! ! 9qªõþÿþÿþÿþÿþÿþÿþþþþþþþýþýþýýþýþæÓ³³³³³³³³³³³¸³¸³¸³³³¸³³³³³³¸³¸¸³¸³³³³³¸³¸³¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸66i65665665656656665666666566666666666666566666666666666665666665666666666666566656666566666i866666666666666666566666668i6666666666i66666666866656i56666666568i66865666666666666656666666666666i666666666666666666666656666665666666666666666666i56666666i666666665666i(%%% %%%% % %%%%% % % %%%% %%%%(6666666656666666566666566666688666666666666i65666i666666666665666666666666666666866656666666565i6i5686666666666666666656i6666º¸¸º¸¸º¸¸¸º¸º¸º¸¸º¸º¸¸¸º¸º¸¸¸º¸º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸·¸¸·¸¸·¸··¸··¸··¸·¸·····················³·³·³··K·K·K·K·K·K·K·K·KKK·K·J·K·JKKKKJ·KWKKWKKKJ·J·J·J·JKJKJKJJJJJJJJJJHJJGJGHGGGFGFFFFDK³KKKKKKK³KKKKK³KKK+O4O4O+þþþþþüþþþþþþþüüüþþüþüüþþþþþüüþüþþüóüüüþþüþüüüüüü)ŒŒŒŒŒ+úóúóóóóööõöõöõöõöõö÷öõöõöõóõóóóóóóðóóðóóðóóðóðóðóððóðñ*‡‡*‡‡*ðððòðððððððððððïðððððððððÑðððïðïáÑÑðÑÑÑÑÑÝÝïÑßÑÑÐÑÎÑÑ*44444*ÑØ°ßÑÑÑÑÑÐÍÑÍÑÍÍÍÑÎÍÍÍÐÎÍÍÎÍÍͰ°­ÍÍÍÍÍÍÍÍÄÍÍÍÍÍÄ+&+&&+&+³KKKKKKKKK³KKK³K³KFFFFFFFFFFGFGGGGGHGHHGJHHGJHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþÿþþþþþþýÿþþþþýÿü÷óóóúóóúóóò¬l=$=!$==============$===$$!$==>=$=====$$==>=>==>===>>============>=A=====>==>===$===========AA>>C===>>>ACACA>>=>>>=>>=>>>>>==>=>=====>>>===>=C>>>AC>>>>>>CC>>==l==>========CA=>C>>=====>>>=>C>>>==>>==>>==>=>>>=>=>=>>=====>C>=>==A>=>>===========>>>C>>>====>=>>>====CC=>CC>=A>>>===>>==>==>>==$===>========$$==>=====$$==$===========>>==========$$===$$!========$==$=!====$!=$===!$===$=$=!$$==!$$!!$$!$!xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð–Y !  ! =sªíÿþÿþÿþÿþÿþÿÿÿþþþþþýþýþýþþýþýæÓ³³³³³³¸³³¸³³¸³³·³³¸³¸¸³¸¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸666666656666666666i6666566666666666866i666666666566665656i6666666666666666666666666666666665i6666i66665666666666666666666566666566666666666666666566665666666i666i666666666666666i66i66666i6666666666666666666666i68668i6666666666656665666686668668666666i66666668655% % %%% % % %% % % % % % % %%%6668656666i6666666666666665666i666666666i68666666666666666666666666666566668566665666666666i66666666666656656666566666i666665¸¸º·¸¸¸¸º¸º·¸¸·º¸º¸·º¸¸¸·º·º·º·º·º·º·º¸¸¸¸¸¸¸¸·¸·¸·¸·¸¸¸¸¸¸³¸·¸·¸··¸··¸·¸··¸··¸··¸·¸··¸···³··³·³·K·K··KK·³KK·KK³·K·K·K·KKKKKKKKJ·KKKKKKKJKK·JKKKJKKKKJKJ·HKJJJJJJJKJJJJJJJJJJJJJJHJHGHGGGGGFGFFFFFKKKKKKKKKKKKKKKKKKK+4O4O‡+üþþþþþþþþþþþþþüþþþüüþþüþÿüþüþüüþüþþüþüþþþüþüüüüó1ŒŒŒŒŒ1üóúóúóóöö÷öýöõöõöõöõö÷öõöõóö÷úóóóóóóóóóóðóóóóóóóóóóóóó1‡‡*‡4*ððóóðóðððððððððððððòðððððððððððððïðïðïðÑïÝÝèïêÑÑáÑïÑÑ*44443*ÑÝÝÝÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑ×°°ÞÍÍÍÍÐÍÍÐÍÍÍÍË×+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFGGGGGGGGHGHGHGJHHGJHJHJHJJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýÿýþþþþþþþþþþþÿþúóúóúóóúóó÷ò¬Žj=!========================================>===C===================>>=>$=A>==>=====>>=$==>>>====>=====A>>>====>=====>===>>==>>===>==>C==>=>==C=>=>>=>==>=>>====>=>=>>>=>C==>>=C=>==>====C>=>=>>>==>>==>>=>>>>=>==>=>>C>====C>==>>>>==>===>>=====>===C=>===>=====>=>=$=>>=>====>>===>==>=>====>============>=====>===================>=$=============$=>==$==$!====$!====$$$=$=====!=!===!!=$$=!$$$$!$$$$==$=xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá‚Y!    !qªõÿþÿþÿþÿþÿþÿÿýýþþþýþýþýþýýþýþæÓ³³³³³³³³³³¸³³¸³¸³¸³³·³³¸³³³¸³¸³¸¸¸³¸¸³¸¸¸¸³¸¸¸³¸¸¸¸¸³¸¸³¸³¸¸¸³¸¸66666666566ii6668666666666i666666656666666666666666666i66665665666666666666666666666666666666i666656666666655666666666666656666666566666666666656i666666i6666666666666686i666i666i666i656666666666666i66i8666666i6566666666566i66666i5i66666i66666666666656666666i666((%%%% % % %% %% %% % % %% %%% %%% 66566666666666i566666666666i6666i666686i666666666i666666666i56666666666i56686566666666666666666665666666666666666566666i666¸¸¸º¸¸¸¸¸·¸¸º·º·¸·º¸¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸³¸¸¸¸·¸¸·¸·¸·¸··¸··¸·³¸·³··³····³·³³K·³·³·³·³³³³·K³³K·KKK·KKKKK·K·K·K·K·KK·KK·J·KJKKWKKKKJKJ·JKJKJ·JKJKJJJJJJJJJJJJJJJJHJGJHGGGGGFFFFFFDKKKKKKKKKKKKKKKKKKK+O‡O4O+þþþþþþþþþþþþþþþþþþþþþþüÿüÿþþüþþüþþþþþþþüüüüþüüüü1ŒŒŒŒŒ1úóüóúóüööýöýö÷öõöõöõöõöõööúöóúóóóðóóóðóóóóóðóóóóóóóóòó*‡‡*‡‡1ððóðóðóóðóðóðóðóðòðððððóððððððððððïðÑððÑðÝÝïðßèðïÑÑïÑ*444431ÑÝÝØðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÑÑ­°°ÑÍÑÍÑÍÑÐÍÐÍÍÍ­+&&+&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFGFFGFGGGGGGHGHGHGHGJHGJGHHJHJHJJJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýþþþþþÿþÿþþþþþþýÿüóóóó÷÷óóúóò¬Žl$$=$==$========!$==A>============>============>===>=>==>C==>=======>>===CA==>>=>>>=>===>==>=====>=>===========>=>>=>>===>==>AA>=>>>C>=>>======>>===>=>C===>=>=>=A>=CC>>>C>==========>===>====>>>==>>==>>>CC>===>CA>=>>>>>>>==>>>=>===>==>CCCC>=>A>C==>=====>>===>>=$=>=======>===>>>============>>====>=>========================$===$=$$==$$===$=$$=A====!!===$==$===!=$!$!===!!=$!!$=!!!$==!!!==$=======z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüñË‚@! qªíÿþÿþþÿþÿþÿþÿÿþþþþþýþýþýþþýþýæÓ³³³³³³³³³³³¸³³³³³³¸³¸³¸³³³¸³³³¸³³³¸³¸³¸³¸³¸¸³¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸666666i5i6666i66666i66656666656666666566666666666666666666656666866i666i865666i6666666665666666565666666666666666666566666666i666656665666i666666666666(%%666666i8668666566i5668666i666i66666i66686866i66666i66566i66666666666666666656866666i666666666666666666i %% %%% % %% % % %%% %% % % %% 5666666666666666666666656i866666566666666i66656666566666866665656666666666666666666i6866666i666i6666666666666666666566i6¸º¸¸¸º¸º¸º¸º¸¸º¸º¸º¸¸º¸¸º¸º¸º¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸¸¸·¸·¸·¸·¸··¸··¸··¸··¸·¸····················K··³·K·K³·K·K··K·KKKKKKKKKJ·KJ·J·JKKKKKKKJ·J·JJKJ·HKJKJKJJKJJKJJKJJJJJJJJJJJHGJGGGGFGFFFFFFKKK³KKK³KKKKKKKKKKK+4O‡OO+þþþüþþþþþþüþþÿüþþþþþüþþþþÿüþþþþüüþþüþþþüüüüüüüüü+ŒŒŒŒŒ1÷üóüóúüöüöö÷öýöõöõëõöõöõöõóöóóóóóúóóðóóóóðóóóóðóóðóðóð1‡‡*‡4*ðóððóððóðððððððððððóðòðððððððððððïÑðÑðÑðÑÝÝðÑêèÑïÑðÑá1P4O44*áØÝßÑÑÑÑÑÑÑÑÍÑÑÑÑÑÐÑÐÑÐÑÎÑÐÑÍÑÍ×°°­ÍÍÑÍÍÍÍÎÍÐÍÍ­+&&&&+&+K³KKKKK³KKKKKKKKK³EEFFFFFFGFGGGGGHGHGJGHHHJGHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþÿþþþþýþþþþþþÿþúóúóúóóúóó÷ò¬Žo==$======$=====$========================!=======>=======C=$=====$=======C>==>A=====A=>===>=====>=======>=====>===>>=======>=>>===>>=>====>>==>>=>=>>==>>=>===>==>=>C>>==>C=>>==>===>=>=?>====>>=>===>=>=>>>====>>>>>===>==>=>======>==>==>==>>==>>===C=====>=====>====A===$==>A===>=======A=====>======>============================$$====$==!=====$====>==!===$!===!===$$!=====!$==!$$!==!$$$==!$$=!!==!!$=xóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþñÎ…_B;   !! $sªõþþÿþÿþÿþÿþÿÿþýþþýýþýþýþýýþýþæÓ³³³³³³¸³¸³³³³³¸³¸³³³¸³³¸³¸¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸66666666666666666666666666566666666i5i666666666666566666566666566i6686i66665i66i65666666665666i66666i66568666i5656566666i665666i66666666666666665(%(66665%'%(((((i86i56666666666i66666666i6i666566666i666666666666666566666666666666666666i66666666666686666666666i666%%% %% %%%% % % % % % % %% % 66666i66i66568i6666666665ii6666666666i8i666666666666666666666666666656666666666666666i666666566866656666666666666686666666¸º¸¸º¸·º·¸¸¸¸¸·¸·º·º·¸¸¸·¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸·¸···¸·¸·¸··¸·¸··¸··¸··¸····¸·····³³··³·K·K··K³·K·³³³K³·K·K·KKKKK·K·K·K·K·J·KKKKKK·JKJ·JKKJ·J·JJJ·JJJJJWKJKJKJJJJJJJJJJJHJHJHHGGGGGGFFFFEKKKKKKKKKKKKKKKKKKK+O4O4O+þþþþþþþþþþþüþþþþþþþþþþþþþþüÿþþþüþþþþþþþþüüüüóüüü1ŒŒŒŒŒ1üüüüüüüüöýöýöõöõöõöõöõöõö÷úõüóúóóóóóóóóóúóóóóóóóóóóóóó*4‡)‡‡*óóóóðóóðóóðóóðóðóðóððððððððððððððððððððððêÝððãèðððððï*4444P1ïÝÝßáðÑðÑÑÑÑðÑÑÑÑÑÑÑÑÑÑïÑÑÑÑÑÑÑÑ×°°×ÑÑÑÑÑÑÑÑÑÑÍÔ++&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFFFGFGGGGGGGHGHHGHGJGJHJHJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþÿþþþþþþþþþýÿü÷óóóúóóú÷óò¬so=!$======!====$!===$$===>==$!===@==$=>>==========>======>====>=======A=======>====>=====>======>>=>=>===>=>=====>=>====>>A=====>>>>======ACC>=========>AC=>>=====>AC====>A==>=>CC>>C?==>>>>>==>>>>==>>=======>=====A>======>=>=>=>>>>CC>C=====>=====>>=>>=>>======>======$=>====$==>====>>>==>>========A=>>===============>=======$======$===$$====!!=!====$$=====$!$=====$==$!!==$$=!$=!=!!==!==!!!!$!ZÉááááááßáßáßááßáááááááßáááááááßáßáááááááßáßááÏáßáßááááßáßáßáßáááßáßáßáßÑßáßÑßááßÑßááßÑßáßáßÏßááßáßÏáßÏáßÑßÏßÏÏÏÑßáßáßÏÏßÑßÏÏÏÏÏßÑßÏÑßáßÑßÏÏÏÏßÏÏÏÏÏÏÏÏÏÏÏßÏÏÏÏÏÏÑßÏÏÏÏáßÏÏÏÏÏÏÏÏÏÑßÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÑßÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏßÏÏÏÏÏÏßÏÏÏÏßÏÏÏÏÏÏÏÏÏÏÏÏßÏÏÏÏÏÏßÏÏÏËÆ–„‚x_Y!  !   =qªõþÿþÿþÿþÿþÿþÿÿþþýþþýþýþýþþýþýæÓ·³¸·³³³³³³¸³¸³³¸³¸¸³³¸³³¸³³¸³¸³¸³¸³¸¸¸³¸³¸¸¸¸¸¸¸¸¸³¸¸³¸¸¸³¸¸¸¸¸¸6686666656666666666666666666666666666666i6665i666666666666666666666666666i866i56666666666566666666i6666666666666656666666566666666666666666666665%%%%665%%%%%%%%%%55666i66666666666566666666666665666566666666i66i666666666666665665666666666666666666866666666666%% % %% % % %%% %% %% % %%%6666666666666666666666666566ii8ii6666666668666666666i6666i656666666666666666666666656668686866666666666666666566666666666666¸¸·º·º·¸¸¸º¸¸¸¸¸º·¸¸¸¸º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸··¸·¸¸¸·¸··¸··¸·¸³¸·³¸·³·¸³¸··³··³³·³³·K·³·K·³³K·³KKK·KK·K·KK·K·KKKKKKKJ·JKKJ·J·JKWKKKKKJKJKJJKJKJJJJKJKJJJJJJJJJJJJJJHJJHJGHGGGGGFFFFFEFFKKKKKKKKKKKKKKKKKKK+4O4O4+þþþþüÿüþþþþþþþþüüþüþþþþüüþþþþüþþüüþþþþþþüþüüüüüü1ŒŒŒŒŒ+üüüüüüüöýîýöö÷öõöõöõëõöõööóö÷óóúóüóóóóóóóóóóóðóóóóóðóó*‡‡*‡4*óðóððóðóóðóðððòóðóðòðóðòðòðòðóðóðððððððððêÝððÝððððÑðÑ*44443*ïßÝßïïðÑïÑðÑÑÑðÑðÑïÑÑðÑÑÑÑÑÑÑÑÑÑÑ­°°ÑÑÑÑÑÑÑÑÑÍÍ­+&&+&&++KKKKKKKKKKKKKKKKKKEFFFFFFGFFGFGGGGGGGHGHGJGHJGHGJHJHJJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þÿþþþþþþþþþþþþþÿýúóóúóóúóóóúò¬o=$===>=========$=====$==============================>===============>>=====>=====>===>==>==>===C===>===>=>=>=====>==>==>=>>====>C===>=>==>>===?=====>==>==>A===>=C=======>=>=>>A>=>>>===>=>=>===>==>>==>=>====>=>==>====A>==>=======>>==>>====>>===>===>=====C>$=C>=>=======>=>=====>===C======================================$=$=$========!==!$==$===$$$$==$$===!==$==!=$===$$$===!$====!!==9=!$!$!=!$$!==CYCYCZ@ZZZBBZZZCYCBBZZCYBBZZ@BBYBBCZZBBBBYBZ@@BZBBB@@ZBBB@B@BBB@BBB@B@BBB@@@CBBB@@B@@@@@B@@B@@@@@B@@@@@@@@@@@@@@@@@@@@@@@;@@@;@@@@@@@@@;@;;@@@@;;@;;;;@@;;;;;;@@@@;;;;@@;;@@;;@@;;@;@@@;@;@;;@@;;;;;@@@;;@@@@;;;;@@;;@@;;;;@@;;@@@;@;;;;@@@@@;;;;;@@;@;@;;@@!! !     wªõÿþÿþÿþÿþÿþÿÿþýýþýýþýþýþýýþýþæÓ³³³³³³³³³³³³³³¸³³³³³¸³³¸³³³³³³¸³³³¸³³³³¸³¸³¸¸³¸³¸¸³¸¸¸¸¸³¸¸¸¸¸³¸i56666656666666666666666666666666666666666i6656i66666i66666666666i66666666666666666666666666665666666668666566666i666665666666666666666666566655%%%%'6%%'%%'%%%%%%6i666666666656666656666666666666666666666666666i66666666566666666666666666686666666i6i66666666566%%% % %%% %% %% % % %%% % %%%%% %%65(5666666i66666665666666666i866666686i666666666656666666566666665666i666666665666i86666i6666666i566666666566666666666i66º¸º¸º¸¸º¸¸·º¸¸¸¸º¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸·¸¸·¸·¸¸·¸·¸·¸··¸··¸·····¸··¸·······¸····³·········³··³····K·³K·K·KKKK·K·K·K·KK·KK·J·J·KKJ·J·J·J·JKKKJKJ·J·JJJKJKJJJKJJJJJJJJJJJHJGHGGGGFGFFFFDK³KKKKKKKKKKK³KKK³K+4O4OO+þþþüÿþÿþþþþþüþüþþþþüþþþüüüþþþþþüþüþþþþþüþüüüüþüý*ŒŒŒŒŒ1üóüüüüüüöúöööõö÷öõöõëõöõöõ÷÷óóóóóóóóóóóóóóóóóóóóðóóðóð*4‡*‡‡*ðóðòðððððóððóðððóðððððððóððððððððððððððððêÝïðßèÑðÑïïÑ*44434*ÑÝÝØÑÑïáÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÑÑÞ°°­ÍÑÍÑÍÍÑÍÎÍÔ+&&&+&&+³KKKKK³KKKKKKK³KKKEFFFGFFFFGFGGGGGHGHGJGJGHJGJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþÿþþþþþþþþþþþüÿüúóóú÷óóúóóò¬j!======!!==$$===========$!$======$==========$===9=$=>==========A>=====$$==>=====>===>======>==>>>=========>=>====A>>====>=>C>===>======A>=====>C>>>=======>>==>>>>=>>====>>>A>=C>==>>=>=====>>>>==>>C>==>=>>==>>>=======>CA>>>>=============>>====?==$=======>=$=>>>====>==C>>=>>==>====>====$====>>====$===========$====$========>========>>>=======>>=======!!$$$==$!!$==!===!!!!!$====$!!$===$!!!$!!!!!!!==$$==!!!!!!!!!!$!!!!!!$!!$!!!!!!!!!! !!!!!!!! !!!!! !!!!!!!!       !  =}ªíþþÿþÿþþÿþÿþÿÿýþýþþýþýþýþþýþýæÓ³³³³¸³³¸³³³³¸³³³¸³³¸³³¸³³¸¸¸³¸³¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6i6666566i66i6666666656i666666666666i6666666i6656i6566i8666666666668666666666666666668i6666665666666666666566656666666666666666666666666666565%%%%%'%%)%%%'%%%%%'%%%%66i66666666666666i6666668665666666666666666i6666666666666666666666666666666666666666666ii66( % %%%%% %% % % %% %% % % % % % %56% (666566666656i666i66666666i65i66666666666566666668656665666666666666666666666566666i666i665665668666i666665666666666¸¸¸¸·¸¸º·º¸¸¸¸¸¸º·º·º·¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸·¸¸¸¸¸¸¸³¸·¸¸·¸·¸·¸¸·¸¸·¸·¸¸··¸¸·¸·¸¸·¸··¸··¸·¸····³·³·³··K··K³·K·³K³K³·K·K·KK··K·KKKKKJ·KKKK·J·JKKJKKKJ·JKKWKJ·HKJ·HJJJKJKJJKJKJJJJKJJJJJHJJHJGGGGGGFFGFFFFKKKKKKKKKKKKKKKKKKK+O4OOO+þþþþÿþÿþþþþþþþþþþþþþþþþþþüþþþþþüüþþþþþþþþþþüþüüü1ŒŒŒŠŒ1úüüüüóüöýööööýöúöõöõöõëõööó÷÷óóóúóúóóóóóóóóóóóúóóóóóóó*‡‡*4‡)óóóóðóóóóðóðóðóðóóóóóðóðððòðóðòððòðððððððÝÝððêâðððððð*43444*ïݰÝïáïÑïïÑÑÑÑÑðÑÑÑÑðïÑÑÑÑÑÑÑÑÑÑÑÑØ°¦ßÑÑÑÑÑÑÑÑЭ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFGGFGFGGGGGHGHGHGJGHHHJHJHJHJJJHJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþþþþþþþþþþþþþÿóóóúóó÷÷ó÷÷ò¬Žo==$=$==$===$=======$$9===$======================>=======================================>=>=======>=====>=>>====>>==>>====>>===>===>===>=>===>=>>====>>===>==>=>A===>===>>===>>=====>>=>==>>====>A====>C>>===>======>====>====>>=======>======>=>==========>>========>====>===>>=================>====$=$=========$====$$=====!========$!=============$$==!==$$$$=$!=!$=$=$==!==!=$$$=$!$!!=$!$!!$!!!$=!!$!!$!!!$!!!!!$!!$!!!!!!!!!!!!$$!!$=!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!    =sªõÿþÿþþÿþÿþÿþÿþýýþýýþýþýþýýþýþæÓ·³³³³³³³³³¸³³¸³¸³³¸³³¸³³¸³³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸³¸³¸¸¸¸³¸¸¸¸¸³¸³¸¸656666i665666666666666666665665666666666666665666665i6i66668665656666666666666666666i66666666i666666666666666666666666666666666656666i8666(%%('%%'%'%'%%'%%'%%%%'%%%%%6556666i66666666666666666666666566666666666666666666666i6666666666666666666i666666i666666(% % %%%% % % % %% % % %% % % %% % % %% % i6666666666666666656666666666666i666666666656666666666666666666668666666866666566i6666666666666666656666666666i86666i86¸º¸¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸·¸¸·¸¸¸¸·¸··¸···¸····¸····¸·³·¸³··³·····³·³·K³·K·³·K³·K³³³³³K·KK·KKK·KKKKKK·K·K·KJ·KKJ·KKK·J·JKKWKJKJKJKKJJJ·JJJJJJJJJJJJJJJJJJJHJJHJGHGGGGGFFFFFFDKKKKKKKKKKKKKKKKKKK+4OO4O+þþüÿþÿþÿþþüþþþüþþþþþþþþþþþüþþþþþüþüþþþþþþþüþüüüú1ŒŒŒ‡Œ1üüüüüüüüöüöýö÷öõöõöõëõöõö÷óóóóóúóóóóóóúóúóóóüóúóóóóðóó)4‡*‡‡1óóðóóððóðóðóðððóðððóðóðóðóðððððóðððòðòðððêÝððãèðððððð*44434*ð°ÝÝïÑïïÑÑðÑðÑÑÑðÑðÑÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÔ°°ÐÑÑÐÑÑÑÑÍÔ+&+&&+&+KKKKKKKKKKKKKKKKKKFFFFFFFFFFFGGGGGGGHGHGHGHGJHGJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþþþýÿüú÷óóúóóúóóòÕo=!=!$=!!$=!=$!$==============$=====!=====$=====>C=$=======>======>AA====>=>>>===>=>=>C>==========>=>=>A>==>AA>>==============>=>>>>>====A>=========>=>>==>>====CC>====>>>>=====>=====>A>====>=>===>===>A>====AA>>===>==>>======>>=====A>=C=====A================>>==>C>=====>===>==$$==>========$==>==$========$=>=>==========$!====$!!$==!=$!!!!====!=!!$==!!===>=!!$=====!!=$!!===$!!==!!!==$=$!!!=$!!$======$!!!!!!!!!$=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!! !!!!!!!  !!!!!!!! ! !    !  $qªíþþÿþÿþÿþÿþÿÿÿþþýþþýþýþýþþýþýæÓ³³³³³³³³³³³³³³³³¸³³¸³³³¸³³¸³³³³³³¸³³¸³¸³¸³¸³¸³¸³¸³¸¸³¸¸¸³¸¸¸¸¸¸¸666656666666666666666666666666666i5666666i6666666i6566666666i6666665666666666666665666566666686686666666666666566i66i666666656666666%'%%'%%'%%%'%%%'%%%'(%'%'%%%'%'%%%%%66656666i56666656666666666i666666566666666665656566666666656666666666i6666666666686%% %% %% %% %% % % % % % % % % %% % % %%666665656566666666666666666666i66666666665666666i66666666666666666666666666666565666666666666666666666666666i666i5666i¸¸¸¸¸¸¸¸¸¸¸¸¸º¸¸¸¸¸·¸º¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸·¸··¸·¸·¸¸·¸·¸·¸¸··¸¸···¸··¸··¸·················³··³··K³·K·³K·K·K·K·K·KKKKKKK·J·J·J·JK·JKKJ·JKKKKKKJ·HKJJKJKJKJKJKJJJJJJJJJJJJHJHJGHGGGGFGFFFFFFK³KKK³KKK³KKK³KKKKK+O4OO4+þÿüþÿþÿÿüþüþþþþþþþþþþþþþþþüüþüþüþüüüüüþþþüþüüóüü1ŒŒŒŠŒ1óüóüüóüöö÷öööúöõöõöõöõëõöîüõóóóóóóóóúóóüóóóóóóóóóóóðóð1‡‡*4‡*òðóðóðòðððòððóððòðóððððððððððððððððððððððÝÝððÝððïðÑÑï*43443*ÑݰØÑáÑÑáïÑÑÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ×°¦°ÑÐÍÑÍÍÍÍ­+&&&&&&+K³KKKKKKKKK³KKKKK³EEFFFFFFFFGGGGGGHGHGJGJGJHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþÿýþþþþþþþþþþþþÿ÷óóúóóúóóúóò¬o$=!$===!=====!==========$$=====!===$============>=====>=$=>=======>>====>>===>=======A===>======>==>=>>====>>=======>====>====>=====>==>>=====>===>=======>====>======>=======>=>====A>====>>=>===>===?=======>====>==>==>====>>=====>>=======>A=$=>===========>=====>>=====>================================================$=$===$=======!===$===$$==$===!!$=====$$==!!=====!$$=$!$!!=$!!$=!!$=!!!!!!$$!$!!!!$!!!!$!!!!!!!!!!!$!!!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!    !    !=s¥õÿþÿþþÿþÿþÿþÿýýýþýýþýþýþýýþýýæÓ³³³³³³³³³¸³³¸³³¸³³³·³³¸³³¸³³¸¸¸¸¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸666666666666656666666666666666666666666i6i6666666666666566666666i665i666668i66666666666i6666666666666666666686666666666666666i666666665%%%%%'%'%'%%%%%%%%'%%%%%%%'%%%'%'%%'%%666666666656666666666665666666666656666656666666666i666666i8656666666i66666666i566( %% % % %% % % % %% % %% %% % 666i6666666i6656665666666566666666i666666666665i666666668i6666666666686666665666i6666666666866666666666666666666666666666¸¸¸¸¸¸¸·º¸¸¸¸¸¸·º·º¸¸¸¸¸¸·¸·¸·¸·¸·¸·¸¸¸¸¸¸¸·¸·¸¸·¸¸¸¸·¸·¸·¸·¸·¸····¸···¸·¸·¸··¸·····³····³··K·K·³K³·K·K³³·K³³K···K·KKKKKK·K·K·KK·JK·KKKK·J·JKKJ·J·H·JKJ·KJKJJJKJJJJKJKJJJJJJJJJHJJHJHHGGGGGGFFFFEKKKKKKKKKKKKKKKKKKK+OO4OO+þþÿüÿüþþþþþþþþþüþþþüþþüÿüþþüþþþþüþüüüþüüüþüüüüüü+ŒŒŠŒŒ+üüüüüüüöýööüöõöõöõöõöõëõöõüõóóóóóóúóúóóúóúóóóóóóóóóóóó*4‡)‡‡*óóóóóðóðóóðóððóóðððððóðòðððððòðððððððððððêÝððâèðððððð*44344*ðÝÝÝïïïïÑïðÑïÑïÑÑÑðÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑØ°°×ÑÑÑÑÑÑÍÔ++&&+&&+KKKKKKKKKKKKKKKKKKEEFFFFGFGFFGGGGGGGHGHGHGHGJHHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýþþþþþþþþþþþþþþýÿü÷óóúóóú÷óóò¬so==========$$$===9====$!!=$$=========$=====!$==========A==>=>=========$$===========>====CCA>========>============>>====>==A>========>>====>>===>C==>C==>===>>=>===>>>>>>====>>>=>========CC=>====C===>C==>CC>====>>==============>>>>=========>>===C>>>======CCA==========$===>==>>>====$===================$====>===!$!!=>======>===========$!!!==!==$!!!====$!!!$=!$==!!$$!!!=$!=====!$$$=$!!!!!!$$$!!=!$$!!!!!!!$!$$$$!!!=$$!$!!!!!!!$!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !   !! !!q¥íþþÿþÿþÿýÿþÿÿÿýþýþþýþýþýþþýýýæÓ³³·³³³¸³³³¸³³¸³³³¸¸³¸³³·¸³¸³³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸³¸¸66666666666i666666i686666666666666i66666666666666666666666666666666666666i686666i8i6666ii666666666i6666666666i66666666666666666666666'(%%%%%%%%%%'%%%%%%%%%%%%%%%%%'%%%%%%%%6666666666666i6666i66666666666666i666666666666i666666665i66666i6i666666666666i6666666% % % % %%% % % % % % % % %%% % %5666666666i6ii6666666666666i666666i666665666666666666666i66666666666ii6666666666666i6666666668i666665i666666i6i66666666i¸¸·º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸¸¸³¸¸¸·¸·¸·¸·¸··¸·¸··¸··¸·¸··¸·¸··³¸·³··³··³·³·³·³·³·³·³³K³³K·³³³K·³KK·KKKKKK·K·K·KKKKJ·JKKKKKKKJKJ·JKKJ·HKJKJKJJJKJJJKJJJJJJJJJJJJJJJJHJHJHGJGGGGFFFFFFFDKKKKKKKKKKKKKKKKKKK+O4OOO+þþþþþþþüüþþþþüþþþþþþþþþþþþþüþþþþþüüüþüþüüüüþüüüü1Œ‡ŒŠŠ1üüüüóüüõöýöööýöõöõöõöëëõëöüöüóóóüóóóóóüóóóóóóóóóóóðóóó*‡‡*‡4*óóðóóóðóðóðóðóððóðóðóððððóðóððóððóðððððððÝÝððèðððððïð*43443*ïÝÝßðÑáÑïÑÑÑïáïÑðÑÑÑðÑÑðÑÑÑÑÑÑÑÑÑÑÑÐÑÔ°°ÑÑÐÑÑÍÍ×&&&+&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFFFGFGGGGGGGHGHGHJGHGJGHJGJHJJHJHJHJJHJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ÿýþþþþþþþþþþþþþþÿúóúóó÷úóó÷úò¬Žo7=!!===$==!====!========$!========================$=========>===========$$=========C====>>>==>==================>========>>==========>=>===>====>=>=>>=====>===>===>==>==>==?==>====>>===>====>=>====>>===>=====>=>=========>==========>=============>=====$=A==>======>====>=====>===============$$=========$===A==$=$$=======$=====!$====>=!$==!$==$$$$==$!=$$$$=!!==$=$$=$$=!==!!!!$!==!!$=!!!==!!!$!!$=!!!!!!!!!!$!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!  !!!   !     !=q¥õÿþÿþþþÿþÿþÿÿýýýþýýþýþýþýýýýýèÓ³³³³³³³³³³³³³³³¸³³³³³³¸³³³³¸³³³³¸³¸³¸³³³³³³¸³¸³¸³¸³¸³¸¸³¸¸³¸³¸¸¸6i666i56666666666666666666666666i6666i8666666666666666666666666i66i6666566666666i666666i66666666666i66668666666666666666666666666666666%''%%%%%%%%'%%%'%'%%'%%%'%%%%%%%%%%%%%%66666666666666666666666666666666666i666666i66666i66666666i6i666i66666666i6i6666666666%%%% %%% % % % % % % % (666666666666i6666666666666666666666668i66665666i6666666i666666666666666666i666666666666666666i6666666i6666666666666666666º·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·º¸¸·¸¸¸¸¸¸¸¸¸¸¸·¸·¸¸·¸·¸¸¸·¸¸¸·¸·¸·¸·¸·¸·¸··¸··¸·¸·¸¸··¸·¸·¸··¸··············³··³···K·K·K···K··KKKKKKK·K·KK·K·J·J·J··JKKWKKJ·KKJ·J·JKJKJ·JWKKJKJJJKJJJJJJJJJJJHJHGGGGGFGFFFFFFKKKKKKKKKKKKKKKKK³K+4OOOO+þþþþþüþþüþüþþüþþþþþþþþþÿþþüþüþþüüþüþþüüüóüüüüüüú1ŒŒŠŠŠ1üóüóüóüööîöýö÷öõöõëõìõëëöõü÷úúúóóóóóóóóóóóóóóóóóðóðóðó*4‡*‡‡*óðóðóðððððòðððððððððððóðððððððððððððïððððÝÝððððïðïÑÑÑ*344331ÑßÝàÑïïÑïáïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÞ¦°­ÍÑÍÍÐÎÍ+&&&&&&+³KKKKK³KKKKKKKKK³KEGFGFFFGGFGGGGGHGHGJGHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþþþüÿüóóóúóóóúóóò¬so!$=!==========$!$=$!==========$$======$======!$==!==$======$===============>=================>========>===>>=>AA=>=>=>==========>=>=>===>>===>=>A>==>========>C>=>===$===>C===============>====>>==>=CA========>>>A====>==>=>>=>C>======>===>======>>>====>==>=====$=======A=$==$==$=================$=======$==============$$!!$!$$$$====$======!!$$=====$$!======$===!=!!==!!$!!$==$!$===!!!!$$!==$=!!!!!!!$!$==!!!$!!!!!=$!!!$!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   !  ! =s¥íþþÿþÿþÿþÿþþÿÿþþýþþýþýþýþýýýýæÓ³³³³³³³³³³³¸³³³³¸¸³¸³³¸³¸¸³³³¸³¸³¸³¸³¸³¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸6666666666i6666666666666666666666666666i66666i66666666666666666666666666666666666666666866666666i66i666i66i66i66i6666666666666666666('%%%%%%%%'%(%%%%'%%&%%%%%%'%%%%%%%%%%%%(666666666i66666666666666666666666666666i5i6666666666i666i6666i6666666666i6666666 %%% %% % % % % % ((666666666666666656666666666666666666666i6i66666i6666666666666i666666666668i6i666666666666666666666i66666666666666666666¸¸·º¸¸·¸¸¸¸¸·¸¸¸·¸¸¸·¸¸¸¸¸¸¸·¸¸¸·¸¸¸¸¸¸¸¸¸¸¸¸·¸¸·¸¸¸¸·¸···¸···¸¸··¸·······¸·······³··³···³·³··K··K·³·K·K··³K·K·KKKK·K·K·K·KKK·KKKKKK·JKKJKJ·JKKKKJJ·JKH·HJJ·HJJKJJJJJKJJJJJJJJJHJHJGHGHGGGGFFGFFDKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþüþþþüüþþüþþþþþþþþþþþüþþþþþüþþþþþþþüüüþüüüüüü1ŒŠŠŠŒ1óüüüüüüööúööö÷öõöõëöëõëõëöüîüóüóóúóóóóóóóóóóóóðóóóóóóó*‡‡)‡4)óóóóóóóðóðóóðóðóóðóðóððððóðððòðððððððððððÝÝððèððððððï134443*ðÝÝßððïðÑïÑðÑðïÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑØ°¦ØÑÑÑÑÍÍ+&+&&&&+KKKKKKKKKKKKKKKKKKDFFGFFFGFGFGGGGHGHGHGHGHHHGJHJHJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþþþþþÿ÷óúóó÷úóóó÷ò¬Žo=!$$$===$======$===!======$$===$$=$$===========$$=$=========$====$==$======>===>===$=================>=>======>>====>>==========>===A==>==>=====>======>=>=$=C=====>=$===>===>===========>>====>>===>>>===========>==>==>>===>==>==$>>==>>===>======>========$==========>=$>===$!=======>===$=>===$==========================!==$!$======$$$!===$!$!===$==$!$$!=====$=!=!$!!==!!!$$=!$!=$=!!$!$=$!!=$!$$!!!$!!$$!$$!!!!!!!!!$$!!!!!!!!!!!!!!!!!!! ! !!!! !!!!!! !!!!!!! ! !!       =s¥õÿþÿþþþþþÿþÿÿýýýþýýþýþýþýýýýýæÓ³³·³³³³¸³³¸³³¸³¸³³¸³³¸³³·³¸³¸¸³³³³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸³6i666666566666666666666666666666666i8666666666666666666666666666666666666i6666666i6666666i66666666i666666666666668i66666666666i666666%%(%%%%%%%% %%'&%%%%'%%%%%% %%%%%%'%%%'%%%(566666666666666i6666666666666666666666666666666i6666666666666666666666686666666666% % % % % % % % % % % %% 66666i6666666i66i6i6666666666666666666666668666666666666666666666666i8666666666666666666666666666666666666666666666¸·¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸¸·¸¸¸¸¸¸¸·¸¸¸·¸··¸¸·¸··¸·¸·¸·¸·¸·¸···¸·¸¸·¸·³··³··³·³··³·³··³·K·K³³K³³³K³·K³K³K·K·KK·K·KKKKKKK·KKK·J·J·JKKWKKKKJ·JKJ·JKJKJKJKJJJKJJJJJJJJJJJJJJJJJJJHJJGJGGGGGGFFFFFFKKKKKKKKKKKKKKKKKKK+4OOOO+þþþþþüþüþüüüþüþþþþþþþþþþþþüüþþþþüþüþþüüüþüüüþüüü1ŠŒŠŠŠ1üüóüüüüööööüöúöõëöëõëõëõö÷óöüóóüóóüóúóüóóóóðóóóóðóðóðó*4‡*‡‡1ðóóðóðóðóðóððóðóðððððóðòðððóðððóðððððððððÝÝðïãèððððÑð*43434*ïÝÝßðÑðÑðïÑïÑÑÑçÑÑÑðÑÑÑÑÑÑÑÑÑÎÑÑÑÑÑÑÑÑѦ°°ÌÑÍÑÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFFFEFGFFFFFGFGGGGGGHGHGJGHGJHGJGHHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþþþþýÿü÷óóúóóúóúóò¬o!!===!!!=$$!=$!$=$!===!===========$$====!!$====$=$$========$$==========>=A===>=====>==$==============>=>====>===>====A>>A=====>>>==========>=======>>>=>===C===>>=>>=>=>A=$=>==>=A>=A=======A=>=======>>>=>===CC>=>====>===A=======>>=$=>>=>====>==$=>====>======>C>$===!$=======>=$==>A===$====$$$================!$$=======>========$!!=!=!=$=$=$$====!!$$$$=!$=!$!!$===$=!!==!!$!!$!!$$====!!$!!!$=!!$$!!!!!!!!!!!$==!!!!!!!!!!! !!!!!!$!!! !!!!!!!!!! !!!!!!!!!  !! !     !!  ! =q¥íþþÿþÿÿÿþÿþþÿÿýþýþþýþýþýýþýýýæÓ³³³³³³³³³³³³³³³³³³³¸³³¸³¸³³³³³¸³¸³³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸³³¸¸¸6666666566i66666666666666666i666666666i66666668666i6666666666666666666666666666666i666666i66666666666666666666666666666666i666666666%%'((%%%%%%%%%%%'%%%%%&%%%%%%%%%%%% %%%%%&%%(i66666666i666i6666666666666666668i6i6666i666666666i6666666666666666666i6i6666i666 % % % % % % % %% % % % % 66666666666i6666666666i66666666666i6i66ii68i666666666666666666i666i66666666666i666666666666666666666666666666666666666¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸·¸¸¸·¸¸¸·¸¸¸·¸¸¸·¸·¸¸·¸·¸·¸···¸·¸·¸·¸·¸····¸·¸·¸··¸·¸···············K··³··³·³·KK·K³K·K·KKK·K·K·KKKKKKKK·J·J·KKKJK·JKKWKJ·JJKJKJ·JKJKJKJKJJJJJJJJJJJJJJJHJHGJGGGGFGFFFFFFK³KKK³KKKKK³KKKKKKK+OOOOO+þþþþþüüüüüüüüþüþþüþüþüþþþüþüþþüüþüþþüüüüüüüüüþüü+ŠŠŠŠ‡1üóüüóüóõöýöõöýöõöõëõëëöõëîüõúóúóóóúóóüóóóóóóóóðóððóððð*‡‡*‡4*ððððððððóððòððóððóðóððððóðððððððððððððððïÝÝððÝèïðÑÑðÑ*44343*ÑÝÝÝÑïÑáïÑÑáïÑÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÍÑÍÑͰ¦ÔÍÍÍÍÔ+&&&&&&+K³KKKKKKKKK³KKK³K³EFFFFFGGFGGGGGGHGHGJGHHJGHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþþþþþÿ÷óóúó÷÷óóóóò¬m=!$!$$!$$$$!==!$$$$==!$!===============$$!$======$!===========!=C===@======>======>========$=====$===========>===>===>>=========>=>=========================>=====>=>C>==C=====A>=>========>>>C=======>=A==>>==>C=======>====>===>==========>>===========>===>====>A>=========$=====!=A======$===========$======$$==$==$==!======>=$!$==$==!$$==!=!=!===$!!==$=$!!!==$=!$==$!$!$!$$$$!!!=!$!==!=!!!$!!!!=!!$!!!!!!!!!!!!$!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!! !!!!     !! $s¥õÿþÿþþþþþÿþÿÿýýýþýýþýþýýýýýýþæÓ³³³³³³³³³³³³³³³³³¸³·³³¸³³¸³¸³³³¸³¸³¸³³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸66566666666666666666666666i66666666666i666686666666666666666666666665666i6666666566666666666666666666666666666i666666666666i66666666%%%(%%%%'%%%&%% %% '%&%%%&%%%&%&%%%%% %%%%%%%6666666666i66666686i666666666i6666666666668i6666i5666i66666666i6666666i86666666666 % % % % % % % % % % %%56666666666666666666i666666666666666666666666666i66666666665i666666666i666666666i6666665666656666i666i666666666666666¸·¸·¸·¸·¸·¸·¸·¸·¸·¸·¸·¸¸¸¸¸¸¸¸¸¸¸¸¸·¸·¸¸·¸·¸¸³¸¸·¸¸·¸¸·¸·····¸···¸·¸······¸···³·········³·³K³·³·K·³K³K·····K··KKK·KKKKKKK·K·KK·KKJ·KKKJ·J·JKKKKKKKJK·J·JJJJJJJKJJJJKKJKJJJJJJJJJHJHJHGGGGFGFFFFFDKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþüüüüüüþþþþþüþþþüþüþþþþþþþüþþþþüüüüüüüüüüþü1ŠŠŒ‡Œ+üüüüüóüööîöýö÷öõöõëìëõìõööóöóüüóüóúóóóóóóóóóóóóóóóðóóó)4‡*‡‡*óóðóóóðóóðóððóóóðððððóðððððòðððððððððððððÝÝðïãèðððððð*43434*ïÝÝÝððïðïðïïÑïïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÏÑÑÑÑÑÑ×°¦ÞÑÑÍ­+&+&&&&+KKKKKKKKKKKKKKKKKKFFFFFGFFFFGFGGGGHGHGHGHHGHJGJHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþþþýÿüúóóúóóú÷úóò¬ŽC==========$$$=======!==========!!====!====$===========$=======$$==$$==$=$$===$=======!=======>================>=$=====$===>==============>A===>=====>>======C===>========>===>=A>====>>A====================>>=======>================>=============>=$$=>===================$==>===$=>========$$=>=>==$!$$$=$==$$====$======$$!==$$========$!========$=$$===!$!$!!$!$$!$=$!!=$=$!$=!!!!!!==!!!$!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!! !!! !!!!       =p¥íþþÿþÿþÿþÿþþÿÿþþýþþýþýýýýþýýýæÓ·³³³·³³³³³¸³³¸³¸³³¸³¸³³¸³³¸³¸¸³¸³³¸¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸¸¸¸¸³¸¸¸¸¸¸66666666666i666666666666666666666666i6666666i666666666566666666666i666666656666665666666i666i666666666666i66566666666666666666i6665(%%%' %%%%%%%%%%%%%%%%%%%%%% %%%%% %%%&% %%((66666666666666666i666666666665i566666i66666566666666i666i666i66666i6666566i66666666 % % % % % % % % % %%666666666666i8i66666656i666656666856666i666666666666666666666666666i66i6666666666i666666666i66666i666666666666666i6i66i·¸¸¸·¸¸¸¸¸¸¸·¸¸¸¸¸¸¸·¸¸¸¸¸¸¸¸¸·¸¸¸·¸¸·¸·¸·¸·¸··¸¸········¸·¸···¸¸·¸·¸·¸¸·³·³·³·³·³··³·³··K³³³³K·³³K³K·K³KKK·KKKK·K·K·K·K·KKKK·JKKKKJKKKKKKJ·J·HKJKJJWJJJKJ·JKJJJJJJJJJJJJJJJJJHJJHJGHGGGGGFFFGFEFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþþüþüþþþþþüþüüþþþüþüüüþþþüþþüþþüþüóüüüüüþüþ1ЇŒŠ‡1üüüüóüóööõöúöúöõöõöõëõëöööúöóúóóóóóüóüóóúóóóóóóðóóóðóó1‡‡*44*óðóðððóðóððóóððððóðóðððóðóðððóðóððòððððððÝÝððÝððððïðÑ133434*ÑÝÝßïÑðÑÑïÑÑïÑáïÑðÑðÑðÑÑÑÑÑÑÑÑÑÑÑÐÑÑÐÐÑÐÑ­°¦ÞÐÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFGFFGFGGGGGGGHGHGJGHJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ÿþþþþþþþþþþþþþýþÿóóóúóóúóóó÷ò¬sj======$=$!==$!=!====!=====$====!====!=!===$===$======$$=====$=======$=============$===!=>==========>========>A=====>====================A>===>>====>=====>>=====A===$=====>===C>====>========>===========$=>================A==>=====A=====$======>=============>======================$===!==!=========!====!$$!=====$=====!$=$=!==!!$====$!========!======9!=!!$$!!!$!$$!!$=$$!!!!=$!!!=!!!$!!!!!!!$!$!!$$!!!$!!!!!!!!!!!!!!!!!!!!!!!!!  !! !!!!!!!!!!!!!!!!!! !!  !     $qªõþÿýÿýÿýþþÿþÿýýýþýýþýýýýýþýýýæÓ³³³³³³³³³³³³³³³³³³³¸³³¸³³³³³³³³³³¸³³³³¸³¸³¸³³³³³³³¸³¸³¸³¸¸³¸³¸³¸66666666666i66i6666665666666666666i6666666666i66666i666665i6ii86666666666666656666666666666666668666666i6666666666666666666i66666665'%%%&%%'%%%%%%&%%&%%%%%%% & & %%&%%%&%%%%% %66666i6666666666666666666666666666i6666i86666666666i666i5666666666866i6666i6666i6i6i6 % % % % % % % % (6666666666666666666666i6666666i66i6666666666666666666666666i66666666i6666i666666666i666666i6i6666566666666666i666666i6·¸·¸¸¸¸¸·¸¸¸¸¸·¸·¸·¸¸¸¸¸·¸·¸·¸·¸·¸¸¸·¸·¸¸·¸¸·¸·¸··¸·¸·¸·¸·¸·¸·¸····¸······················K··³··³·K··³·K···KK·K·KKKKKKKKK·KKK·K·J·J·KKWKJ·JKJKK·J·KKJ·JKJKJJKJKJKJJKJJJJJJJJJJJJJJHJGHGGGGFGFFFFEKKKKKKK³KKKKKKK³KK³+OOOOO+þþþþþþþþþþþþþþþüüþþüþþüüüüüþüþüþüþüüüüüüüüüüüüüü*ŒŠŠŠŒ1óüüüüóüööõöõöõöõöõëõëöëõöõó÷óóüóüóóóóóóóóðóóðóóóóðóóóó*4‡*4‡1ððððóððòðððððóðòððððóðððððóððððððððððððïðÝÝïðßèïðÑÑïá*34343*ïØÝßáÑïáïáïáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÏÑÑÐÏÑÍÑÍÍÞ¦°ÔÍÍ­+&&&&&&+³KKKKK³KKKKKKKKK³KFFFFFFFFFFGFGGGGGHGJGHJGHJGHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþþþþþýýýÿüúóóúóóúóúóò¬o==!$!!==$$===!!$======$!!=$!$$!$==$$=================$=!====$>======>===>=$=====$===>==========>===============$==A>=$==>A>===>==============C=====>C===$=====>>====!=====>=======>==>>====>=====>===>>======$==>==========>=====>>===A==============>>=$=====$==========>AA=======$=====>=======A==$=$$============!$!$==$$$==========!!$!=$$$$!!$!!!=!!!!$$$==!$==!==$=$!$==!!!==$$!!!!$!!$$!!!!$!!$$!!!!!!!!==!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !$!!!!!!!!!!!!!  !  !!!!!! !   =}ªíþþÿýÿýÿþÿþÿÿÿýþýþþýýýþýýýþýýæÓ³³³³³³³³³³³³¸³³¸³¸³³³³³¸³¸¸³¸³¸¸³³¸¸¸³¸³¸³¸³¸¸¸¸¸¸¸¸³¸¸¸¸¸¸¸¸¸¸¸665i6666666665666666666666i5i8666i66666i66666666i66666666666666i666666i566666i666666i66566666666666668i6666666i6666656i66666666i65'%%%%%% %%%%%%%%%&%%%& &%&%%%% %&% %% %%%%%%66666666i6666666666666666666666666666666ii6666666666566666i666i66i66666666i665666%% % % % % 666686566566666i66i66666666666i66666666566i6666666666656666666666i6666666666i6666666666i6666666i666i6i666666666686i6i666¸¸¸¸¸·¸·¸¸¸¸¸·¸¸¸¸¸¸¸·¸·¸·¸·¸¸¸¸¸¸·¸¸¸·¸·¸·¸·¸¸·¸¸¸··¸·¸···¸···¸·¸····¸··¸³···³·······³·³·³³K·K·³K···K···K³K··KKK··K·K·K·KKK·JKKK·JKKKKKKKKJ·J·JJ·HJKJKJKJKJJJJJJJKJJKJJJJJJJJJJHJHHJGGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþþþþþþþþþüþþþþþþþþüüüþþüþþüüþüþüþüüþüþüüüüþ1‡Œ‡Š‡1üüüóüüüööööööýëõëööõöëëõööúõ÷úóóóóóüóóóóóóóóóóóóðóóóðó*‡‡)‡‡*óóóððóðóðóðóðóððóðððððóðððððòððððððððððððÝÝððÝâðððððð1P3434*ðÝÝßðïðÑïÑÑïïÑïÑáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÑÑÑÑÑÑØ¦°­Í­+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFGFGFGGGGGHGHGHHGHJHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþþýþþýÿ÷óóúóóúóóó÷ò¬Žo==$!!!$$=====!$=!=$!$=$!$$$=$=!$==$!=$==>=========A=$==$!===$$=>=$=======>=======$=>=========>==>==========>============$=>=========>===C====>==$=C>=>=>========>====$=====C=$==============>========>=======$=====$=$==>=====$$=>==>====>=======$===>>A===$===$$====$====A======$$==$$==============$===$==========!$$$$=!=!===!$======!$!!!==!$=$=!=$!!!!=$$=!!=!!$=!$=!!$!!==!$=!$$!!!!$=$!!!$!$=!!!!!!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!! !! !!   !!  !        !  =sªõÿþÿþþÿþÿýþÿþþýýþýýýýýýýýþýýýæÓ·³³³·³³³³³³³³³³³³³¸³¸³¸³·³³¸³³·³³¸³³³³³¸³¸³¸³¸¸³¸¸¸¸³¸¸³³¸³¸¸³¸³656665666666665666666666666666666i6666656666665666666666666666666i866666666666666666i666666i66666666666666666i8666666666666666666666%%% %%%%%% %% %%%%%%%%%% %% %%%%%%% % %%%& %%5666i666i6i66666666666666i66666i666668666666666666i66i666666666666666666666655666( % % %  %666i65666666666i6666565666666i666666i5666666666666666666666666i6666666666i666i6666666i5666666i66i66666666666i6666666666¸···¸·¸¸¸¸·¸¸¸·¸·¸·¸·¸¸¸¸¸·¸¸·¸··¸··¸·¸·¸¸··¸··¸····¸···¸¸···¸··¸·³··³··³·³·³··³·³·K·³K·K³³³³³³³³K³K³K·KK·KKKKK·KKKKKKKKK·KKK·J·JKK·JKKJKKWKKJ·JKJKKJKJJJJJJ·JJJJJJJJJJJJJJJJJJHJHJHGGGGGGFGFGFFFKKKKKKKKKKKKKKKKKKK+OOOOO+üþþþüþþþþüþþþþüüþþþþþüþþüþüüþüüþþüþüüüüüüüüþüüüü1ŒŒ‡Œ‡+üüüüüóüõöõöööõöõöõëõöõëõöõúóúóüóüóóóóóóóóóóóóðóóóóóóóó*4‡*2‡*ðóóðóððóððóðóðóððóðóððððóððððóðððððòðððððêÝðÑãèððÑðÑï*34343*ïÝÝÝÑðÑÑïáïÑÑïÑïïÑðÑÑÑÑÑÑÑÑÑÑÑÐÑÏÐÑÐÐÐÑÑÑÑদ×Ô+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFGFGFFFGGGGGGGHGHGJGHGJGHJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþþýþýýüÿüúóó÷÷óóú÷óòÕl!$!!====!$!!!=============!=====$==$=!==!$$!$==!==$$==$=======$=====$=====$============$===============================>==$=>===>=>==============================>==>==$=>=$=>====>==>A==A==$=>======>=>========$==>==>A===>====$================$=========C=============$======$======$!$====!$$$$===========$==========!=!==$==$!$=======!!=!==$!$$=$!=!=!!===$!!$==!===!!$!!$=$!!$=!!!!!$!=$!!$!$$!!!!!!!!!!!!!!==!!!!!!!!!!!!!!!!!!!!!! !!!!!! !!!$!!!!!! !!!!!q¥íþýÿþÿþþýÿþÿÿÿþþýþýýþýþýýýýýýæÓ³³³³³³³³³³³³³³³¸³³³³³³³³¸³³³³¸³¸³³³¸³¸³³¸³¸³¸³³³¸³¸³¸³¸³¸¸³¸³¸³¸6i6666666666i6i66666i6666666666i6668i6666i6666i6i66666666i66i66666666666666666i66666666666i66666666i66666666666ii666666i666666666666(i5%%% %&% &% %%% &%% %%% % %% % %%% % %%%%86666666i86666666i66i666i6666666666i668666666i66666666666666666666i6i6666666ii566i % % % %  % % 666666666666666666666666666665666666i66ii666666666666i666i6i66i666i66666i66666i6i6666666i66666666i6666666666666i6i66666i6¸¸·º·¸·¸¸¸¸¸··¸¸¸¸¸¸¸·¸·¸·¸·¸¸·¸¸·¸·¸·¸¸··¸·¸·¸··¸¸···¸····¸¸·¸···¸·¸···¸·················³··K³·K··³··³·KK···K·KKK·K·K·K·KKK·KKK·J·KKJ·J·JKKKJ·JKKKJ·JKJ·J·JJJKJKJJJJJJJJJJJJJJJJHJGJGGGGGGFFFFFFD³KK³KKKKKKK³KKKKKKK+OOOOO+þþþþÿüþþþüþþþüþüþþþþþüþþþþüþüüüþüþüüüüüüüüóüüüüó1‡Œ‡ŠŒ1üüüüóüüööõöööõëõöõöõëõëöëöóúóóóóóóóóóóóóóóóóóóóóðóðóðó*‡4*‡4*óðóðóðóððóððððððóððððððððððððððððððððððððÝÝððÝÑÑÑðÑáï*43334*ÑݰØÑÑðÑïÑÑÑÑÑáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÐÑÑÑÏÑÑÍÑÍÍͦ°¨Ô+&&&&&&+K³KKK³KKKKK³KKKKK³EFFFFFFFFGGGGGGHGHGJGHGJHHHJHHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþýþýþþÿþúóóúóóúóóó÷ò¬?$!!$!$==!!$$$!!===$!======!=!=!$==!==!!====$!!!===!$!$=$==!=A==$!=!===$$==!$$==$===============!$=========!==$$==================>>>>=$==========$==$$=====>=======C=====$==========A=>=>=========>=$===>>=>=>==>============>>===$=============>=$===$==================$!===$=>==$==A==!$$!==$$$$$$$==>>==$$=$!$=======$!==!==$$!!$$$===$!$====!$=$=!==$$!!!!!==!==!!==!==$$!!!!!!!!$!!!$$!$!!!!!!!!!=!!$===$!!!$$!!!!$==!!!!!!!!!!$!!!! ! !!!!!!!!!!!!!!!!!!! !!!!!  !   !   !!    ! ! ! !sªõÿþÿýþÿþÿýÿþÿýýýþýýýýýýýýþýýýæÓ³³³³³³³³³³³³³³³³³³³³¸³¸¸³³¸³¸³³³¸³¸¸³³¸³¸³³¸³¸³¸³¸³¸¸¸³¸¸¸¸¸¸¸¸¸66i6666666666666ii6666i6i666666666i6666666666666666666666666666666i66666i666i6666i66666i66666i66666666666666666i6666666666666666666i(66(%&%%&%% &% &% % % % %& %% %% %%&%%%((5(6666666666666666666666666i6666666i6666ii6i66666666i6666i666666i6666666i6666i666 % % %  % %66i6i666666666i8666666666666i6i66i666i66666666i66i666666666666i66666i666666i6i6i66666i6i6i66i66666666i6666666666666666i66¸·¸·¸·¸·¸·¸·¸¸¸·¸·¸··¸·¸¸¸¸¸·¸¸·¸·¸¸·¸··¸¸·¸···¸···¸·¸·¸¸·¸··¸··¸·······³···³·····K·³·³··K·K³·K³³·K·K·K···KKK·K·KKKKKKKKK·KKJ·KKKJK·J·JKKKKJ·JKKWKJKJKJJJJJJKJJKJJKJJKJJJJJJJHJJHJHJGHGGGFGFFFFFEKKKKKKKKKKKKKKKKKKK+OOOOO+þþþüÿÿþþþþþþþþüþþþþþþþþþþþþþþþþüþüþüþüþüüüüüüüüü1ŠŠ‡Œ‡1üüüüüüüööõöööõöõöõöõöõëõö÷úóóúóüóóóóóóóóóóóóóóóóóóóóóó*4‡*4‡*óóóóóóóóðóðòóðòððððóððòðòððòððððóððððððððÝÝððßèðïðððð*3O343*ðÝÝÝðÑïïáÑÑïïÑïÑÑÑÑÑïÑÑÑÑÑÑÑÑÑÐÑÑÏÐÐÑÐÑÑÑÑÑÑØ¦°¦+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFFGGGGGGGHGJGHGHGJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþþþþýþýþýýüÿü÷óóú÷óúóúóò¬s?===$$!!==!=====$$!!!!$$$!!======!$===$===$$===$===========!=>===$=====!==============$===A=====$=======$=========!====================$=C>========A====A=A=========>===>=========>=====$=$=>=========>==$===========>===========>=====$==>======$$=====$=====$=>=$=======$===!$=====!=====>======!========$$!$==$!$$$$==$===$$$==$$$====!=!=$!!$!$$$===!$!!===!!!$$!=$!!$$$$!!$!=$!$$!!!$$$!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!   !  =q¥íþþþþÿýÿþÿþþÿÿýþýýþýþýþýýýýýýæÓ³³·³³³³³³·³³³¸³³¸³¸³³³³³¸³³·³¸¸³³¸³³¸³¸³³¸¸³¸³¸³¸³¸³¸³¸¸³¸¸¸¸¸¸¸66666i6666666666666i66686666i666i66666666i66666i66666666i666666666666666666i66i666i6666666666i6i6666666666i66666i66666i6i6666666i666'%% & % %%% %%% %%% % % %&% % %%&%% %% %%% %%5'%%666666666666666666i6666666666i6i666i66666666666666666666666i66866666i66656666% % %  % % 6666i66i6666666i6666666i66666i6i6666666i6i6656666666666666i66666666666666666666666i66666666666666i666666i666i666i66666666··¸·¸·¸··¸·¸··¸·¸··¸¸·¸·¸··¸··¸·¸·¸··¸·¸·····¸·¸·¸··¸······¸³·¸³··³··³···³³··³·³·³³·K·³K··³³³KK·K³K·K·KKKKK·KKKKK·K·K·KKKKJ··J·JK·KJKJ·J·JKK·H·HKJJJ·HKJKJJKJJJJJJJJJJJJJJJJJJHJHJHGHGGGGGFFFGFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþÿþþÿÿüþþüþþþþþþþþþþÿþþþþüþüþüþüüüþüüüüüüóüüü+‡ŠŠ‡Š1üüóüüóóöööööëõöõöõöõöõìõëîüõóóóóóóóóóüóúóóóóóóóóóóðóóð*‡4*‡4*óóóóððóððððððóððóðóððòðððóðððóðòðððóðððððÝÝððÝðÑðÑðïð*34334*ïݰÝÑÑÑÑÑïïÑáïïÑðÑÑÑáïÑðÑÑÑÑÑÑÑÐÐÑÑÑÐÑÏÑÐÐÑÐÍÔ¦°(&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFFGFGGGGGGGHGHGHGJGJGHHJGJHJJHJHJHJJHJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþþþýþýýýÿþúó÷÷óó÷óóóóò¬so$!9!!!$====!=!=!!$$=$!!!======$!===============$!$=>===A===!=$$$===>>===!=>==========$=A>>A>>>=================================$=>=====>>=======>=====>C>==$=>>=A======>>>==>=$>>=$=$=$===$=>>=========$$=======>======>==$======>=$!=$=====A==$!=>====$========$==!!=============!=!===>A====$!$==!==$=!=$!!=$!$$=$!!$!!==!=!$!!$!$====$$!==!!$======!!$==!!!$=$!!!!!!!=!!!$!!=$!=!!!!=!!!!$!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!  !!! !!!!    !qšõþÿþÿýÿýþþÿþÿýýýýýýýýýýýýýýýýæÓ³³³³³³³³³³³³³³³³³³³³³¸³¸³³¸³¸³³³¸³³³¸³³³³¸³³¸³³¸³¸³¸³¸³¸³³³³¸³¸³666666666666666666666i66i66666i666666666666666666i66i66666i66666666i66666666666666666666i666666i666i66i666i66666666i666i66666666666%%%&%% %%% %%%&% %%% % % % & &%& %% % % %%% %% % (i6666i6i6666i6666666666i6i666666666i6666i666666i666666i6666i6666666666666665%% %    % 66666666i6666666666666666666666666666666i66666666i6666666666666i666666i6666666666666i6666666666i6666666i666666666666i6666¸¸·¸·¸¸¸·¸·¸¸¸·¸·¸¸··¸·¸··¸·¸¸·¸·¸·¸··¸··¸¸·¸·¸·¸··¸··¸¸·¸··¸·····¸·¸·¸···················K³··³·³·³··K··K·K·K·K·KKKKKKK·K·KKJ·KKJ·J·KKJKKWKJKKJ·J·JKJ·JKJ·KJJKJKJJJKJJJJJJJJJJJJJJJGJGHGGGFGFFFFDKKKKKKK³KKKKK³KKK³K+OOOOO+ÿþþüÿÿÿþÿþþþþþþþüþþþþþüþþüþþþüþóüüüüþüþþóüüüüüóü1Œ‡‡Š‡+üüóóóóúööõöööõöõöõöõëõö÷öõóõóúóóóóóóóóóúóóðóóóóóóóóðóó*‡‡*4‡*ðóðóðóðððóðóðððóððððððððððððððððïðððððÑïÑê°ïÑèÑðÑðïÑÑ*433431ÑÝÝØïïáïÑÑÑïïáÑÑÑÑÑÑÑÑÑÑÑÑÑÐÏÐÑÏÑÐÐÑÐÑÍÑÍÑÍÐÍɰ¦+&&&&&&+³KKKKKKKKKKKKKKK³KFFDFFFFFGGFGGGGHGHGHGJGJHJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþþýýþýþýýüÿüúó÷óúóú÷úóò¬o!!$$==!!!===!=!======$!=$!==$$$$==$!!$=$!!====!====>=!=====!=====$!=$$======!===========!===============!=>>>>===========$=========!==================================$=====>======$=====>===>===$============>==$=====================AA=======$===$=======$===$$>===$!=====!=!$====!=$$==!$=======$$=====!=======$===$!=========$!!==!==!!==$!$!$!!==$$!!$==!$$!!$=$$=!!=$!$=!!$!!!!=$=!!!!$!!!$!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!! =q¥íÿýÿýÿýÿþÿþÿÿÿþýýýþýþýýýýýýýýæÓ³³³³³³³³³³³³³³³³³¸³³¸³³³³¸³³·³³¸³³¸³³¸¸³¸³¸³¸³¸³¸³¸³¸³¸³¸¸¸¸¸¸¸¸666666666i6666i6i6666i666666i6666666666666666666666666666i66i66666666i6i6666666666666ii666666i66666666666i6i666666i6i8666i66i6666665%%&%% % &% % % %%& % %&%%&% %% &% %&%%% % %5666666666666666i6666666666i6i666666666666666i666i6i6666666i6666666i666i6666% % %    % %566666i66666i6i66666666666666666666i6666i66i6666666666666i6665i6i66666666566i6666666666i6i66666666666666666i66666666666i6·¸·¸·¸·¸·¸¸···¸·¸·¸¸¸·¸·¸¸¸··¸¸·¸·¸·¸·¸·¸····¸···¸··¸·····¸··¸··¸···········³·³·³·K··K·K·³·³K³·³·KK·K·K·K·KKKKK·KK·K·K·JKKKK·KJKKKKKJKK·JKKKKKKKJKJKJJJJ·HJJJJJJJKKJJKJJJJJJJJJHJHJHGGGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+ÿþþþþþþÿþÿþþþþþþþþþüþþþþþþþþþþþüüüþþþüþþüþüüüüüü1‡ŒŠ‡Š1üüüüóüóööööööõöúöõëöëõëöëöüöóóóúóóóóóüóúóüóúóóóóóóóóóó'‡4*‡4*óóóóóóóóðóðóððóóðóðóðóðóðððððððððððððððððÝÝðððððððððï*34334*ðÝÝØïÑÑïÑïÑáïÑïïðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÏÑÑÑÑÑÑÑÑÐצ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFGFFFFFGFGGGGGGHGHHGJGHHJGHJGJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþþþýþþýþýþþþÿóóóú÷óóóóó÷ò¬Žj!!=!==!!!=====!$====!!==!!!$!=====$!!$$!==!!$=======$$=$!$$=>==!$$$=====$!==$$==$=>=$$$!$!=====$==>>===>A>==========>$$===========$$$!===>=========$!!===$===>=!========9=>=======>>=>==$====$==A>==>=$!$============A>>=>A>=====!==A==>>>=>=====$$==$$=$!!$===$=====$===$!!$!=>=$==!$=!!====A=$!$===========$!===$$=$=!=$!$=$!!=====!!!!==$!=!$!!!$=$!!$=!!!!!=$$!!!!==!!!!!!$!$!!!!!$=!!!!!!!$!!$!!!!!!!!$!!!!!!! !!!!!!$!!!!!!!!!!!!!!!!!!!!!!! ! !!!!   !! !    !       !       !! !!! =sªíþþþþþÿýÿýþÿþýýýýýþýýýýýýýýýýæÓ³·³³³³·³³³³·³³³³³³³³³³¸³¸³·¸³¸¸³³¸³³¸³³¸³¸³³¸³¸³³¸³¸³¸³¸¸³¸¸¸¸³¸666666i66i8i66i86i6666666666ii6666666666666666666i666i666666666666666666i666666666i6i666665666666666i6i6i66666666i6666i666666666i666 %%%% %% %&%%%&% % %%%%% % &% % & &% %%%% %6666666i6666666666666666i6666666666666666666i666i66ii6666666666666666i665666 % % %    % % %66666i66666i6i666i666666666i666666i6666666666666i66666666666666i6666666i6i6666666666666666666666666i66666666666666i6i6666¸···¸·¸·¸··¸·¸·¸···¸··¸·····¸····¸···¸··¸·¸¸··¸·¸··¸··¸¸·¸·····³···³····³··³·³·K·³·K³³³³K³³³·K³K·K·KK·KK·KK·K·K·KKKKKKKK·J·JK·J·KWKKKWJKKJ·H·H·JJKH·J·JJJKJKJJJJJJJJJJJJJJJJJJJHJHJGHGGGFGFGFFFFEKKKKKKKKKKKKKKKKKKK+OOOOO+ÿþÿþþÿþÿþÿþþþþþþþüþþþþþþþþþþþþþüþüþþþþþüüüüüüüüü1Ї‡Š‡1üüüóüóúööõöööýöõëöìõëõìõî÷óö÷óóóóóóóóóüóóóúðóóóóóóóóóó144*4‡'óððóóóóðóðóððóððóðððððððððóððððððððððððððÝÝððèðððððïÑ*433O3*ðØÝßïÑïáÑïïÑïáÑïÑÑðÑÑÑðÑÑÑÑÑÑÑÐÐÑÐÑÐÑÐÐÑÐÐÐÑÑÍÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFGFFFGFGGGGGGHGGHGHGHGJGHHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþþþýþýýþýþýýýÿüúóóóúóú÷÷óò¬l=$!$$$$$==!!$$!===!!$===$$$==!$$==$=====$!===$==$===!===$=======$====$====$!=======!$======$===$$$$=$===========================!========================>===========>=!======================$=======A=======>===============================$===============$>===$!======$=====$$=======!==$!===!!=$$=====!!=====$!=====$!=$===!==!!!!=$$!!===!!!$$!!===!==$!!!$=!!$$$!!!!$$$$!$$!!!!=$!$!!!$!!!!!!!!!=!!!!!!!!!!!!!!!!!!! !!!!! !!!!!! !   !!!!!!      !!q¥íÿþÿþÿýÿýÿþÿÿÿýýýýýýýýýýýýýýýæÓK³³³³³³³³³³³³³³³³³³¸³³³³³³¸³³³³³³³¸³³¸³³³³¸³³³³¸³³¸³¸³³³³¸³³¸³¸³6666i66666666i6i666i6i6i666i6666ii666666i66666i6i6i666666666666666666666i6i666ii666i666i6666666i6666666666i6i666666666666i66666666i6 % %% %%% % % %& &% %& & % % % % % %&6i666666i6666666666666666i66666i6i6i66i6666i6i66666666666666i6666i66666666665%%% % %    % % 666i66666666666666i6666i666i666i666666ii66666666666666666666666666666666666666666i66666i6666i666666i666666666666i6i66666i66¸·¸·¸··¸·¸··¸·¸··¸¸··¸·¸¸¸·¸·¸·¸···¸¸··¸·¸···¸···¸··¸·····¸·¸··¸··¸···¸··³···············³·K·³·K·K·K·K·K·KKKK·KKKK·K·K·K·KK·KKKKJ·KKJKKKKKKKJ·JKKWKJKHJJ·JKJJKJKJJJJJKJJJJJJJJJJHJHJGJGGGGFGFFFFFFK³KKK³KKKKKKKKKKKKK+OOOOO+ÿüþþüÿþÿþþþþþþþþüþüüüþþþþÿþþþþüüüþþüüþüüüüüüüóüü+‡Š‡Œ‡*úüüüóóóööõööö÷öõëõëõëöëõëöúëóóóóóóóóóóóóüóóóóóóóóóóóðó*‡4*‡41ñððóðóðóðððòðððòððóððòððððððððððððïððððïÑÝÝèïßâïÑÑÑÑð*34333*ÑÝÝØÑÑáÑïÑÑÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÍÑÍÑÍÎÑÍÎÑÍÍÍÐÇ+&&&&&&+K³KKK³KKK³KKK³KKK³EFFFFFFFGFGGGGGGHGHGJGHGJHHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþþýþýþþýþýþýýÿ÷óóúóóúóóóúò¬Žj==$==!$==$!!!$===!!===$==$$=$==!!===$==$!$===!!$!!$========!!>>=>==!======$==>=!!!====$!!=$==$=!$!$$!!==$=======$$=====>>=====!$===>>======$=======>=$>>====$==>=====$$==>=====>>=$!$$========>=>=========>A==C>=====$!!!$=!!$=====$$!====$=$=============>=!=>==$$==$$==$!=========!==!!$$$=!$!$$$!===$$$======$!!=A======!!!$=!!$!$!$=!!==!$==!!!==!$!!!$$=!!!!!!!!!!$!!=!=!!=$$$==!$==!$!!!!!!!$=$!!! !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! !!!!!!!          !  !  !    !pªõþþþþþþþÿýþÿþýýýýýþýþýýýýýýýýà׳³³³³³³³³³³³³³³³³³³³³³¸³³³³³¸³¸·¸³¸³³¸³¸¸³³¸³¸¸¸³¸³¸³¸¸¸³¸¸¸³¸¸¸666666666i66666i6666666i6666i666666i666666i666666666i8i66666666666i66i6666666666i6666666i66666666666i66i6i6666i6666666666666666666i6% % % %% %%& %&% &% % % % % % % & &% % %& %% %6666i6666666i6i6666666i6666i666666i6666666666i66666666666i6i6666666i66i66i66 %      i666666666666i6i6i66i66666666666666i66666i6665i6666666666i666666666666666666666i6666666i6i66i6666i66i6666666666666i6i66i666666·¸··¸·¸·¸·¸·¸¸·¸·¸·¸¸·¸···¸·¸·¸·¸¸····¸···¸·¸·¸·¸··¸···¸¸···············³·³·³·³·K·³·K·K·K·³·K·³·K·K·K··K··K·KK·K·KKKKKKKKKK·J·J·KJKKK·JKKWJKKKKKJKJKJKKJJJJJJJJJKJJKJJJJJJJJJJHJJHJGHGGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+üÿþþþÿþÿÿüÿþþüþþþþþþüþþþþüÿþþþþþüþþþþüüüþüüüþüüü1ЇЇŠ1üüóüúúüööýöõöõëõëöëõëõöõö÷óöóóóóóóóóóüóóóóóóóóóóóóóóóó*4‡*441ðóóóóóóóóóóððóðóððððððóððòðððóðððððððððððÝÝððãèððððÑï*43343*ïÝÝØÑïïÑÑÑáÑïÑáÑðÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍ­+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFGFGFGGGGHGHGHGJGHJGJHHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþþýþýþýýþýþýýüÿüúóóúóó÷úóóò¬ŽC!=!!$$=!$$!$!==$$$$!$$!!=$!$===!!$=!===!!=$===$$==!====$==!===$!====$=======!==$$===================>>=$=================$===========A=!=============$$A>=$===$===$=======>===$==================================$===>========================$=$=====$=====$===$===================$!===$===========$!==$$==$$$=$$$!==$!!$!!==$$$$$=$$$=$!$=$==!!$$!=$!!!$!=$!!!$$$!$!!!$$!!!!!!$!!!!!!!!$!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!! !!!!!!!!    !=q¥íÿþÿþÿþÿýÿþÿÿÿýýýýýýýýýýýýýýýæÓ³³·³³³·³³³³³³·³¸³³³³¸³³³¸³¸³³¸³³¸³³¸³³·³³¸³¸³³³³¸³¸³¸³¸¸³¸³¸³¸³¸6666666i66666i666ii66666i666i6i66i566656666666666i666i66666666666666i666666666i66i666666666666666666666666666666i66666i6i6i66666668%% % %% % % & % % & % %% % %%&&%%56i66ii6i66666666666666i6666666i6666i6666666i666666i66i66666666i66666i666i665( % %       i6666666i666666666666666i666666i6666666666656666666666666666666i66666666666666666666i6666666666666666i6i66i6666666i66666i66666···¸··¸····¸····¸······¸·¸··¸··¸··¸·¸···¸··¸···¸·¸···¸···¸·¸···³·³·³·³·³·³·³·K·³·³K·³³³³³K·K·K·K³K·KK·KKKKK·KKKKKKK·K·J·KKKJ·JKKJ·J·JKJ·JKKKJ·HKJJKJ·JJJJKJKJJJJJJJJJJJJJJJJJJJHJHJGGGGGGGFFFGFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþÿÿÿþÿüþþþüþþþþüüþþþþþþþþÿüþþþþþþþüþüüüþüþüüþü1‡Š‡Š‡1óóóóóüó÷öîöúöõöëìõëöëõëööîüë÷óóúóóóðóóóóóóóóóóóóóóóðóð144*4‡1óððóóðóóóððóðóóðóðóðóðððòððóððððòððððððððÝÝððÝÑðïÑðÑÑ13O334*ÑݰÝÑáÑïÑðÑïÑïÑïÑÑðÑðÑðÑÑÑÑÑÑÑÑÐÐÐÐÐÐÑÐÐÑÑÐÑÐÎÍÔ&&&&&&&+KKKKKKKKKKKKKKKKKKFEFFFFFFFFGFGGGGGGHGHGJGHGJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþþýþýþýþþýþýýýÿþúóóúóóúóó÷úò¬}?9=!!!!!!!!$=!!!=!!==!$!$==!!==!!$!$=!!====$=======$=!======!!==!!!!=$!===$!!==$====>$$==>===========$==>==$====!$=>=$!$==$!!$=>===========$======>>==>=$=C======$$>=$=====$$====!!===>==!$=A=>===$=====!======!$$!$!!=>>>=========$==$!$==$$==!!$$==>====$$=!!===!!=>C>=====$!==$==$!$!!!=$===!=$========!!!!===!!!!!$$!!!!!!$$!!!$==!!!!!==$==!$=$!!!!$!!!!$=$!===$!====!=$!!==$!!!!!!==!!!!!!!!!$!!! !!!! !!!!!!!!!!!!!!!!$! ! !!!! !!!!! !!!!!!!!! !    !!  !    !  !  !!=}ªíþþþþþþþÿýþÿþýýýýþýýýýýýýýýýýæÓ³³³³K³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³¸³³¸³¸³³³³³¸³¸³¸³¸³³³³³³¸³³³¸³6666666i6i66i66i66666666666666666666i6666666i66666i66i666666i66i6i66666666666666666i6666666ii66i6i6i66666666666i6i66666i66666666666i%&%% & % %% % %&% & & & % % && % & &% &%%6666666i666i6666i66666666i6i66i6ii6666ii6666i666666666i66i66666i6i6666i66( (% %       666666666i66i66666666666666666666666i66666i666i66i6ii6i66ii6666666666666666i666666666666i6i666i6666666i666666i666i6666i666666¸·¸··¸··¸¸··¸·¸··¸¸·¸¸··¸·¸··¸···¸···¸·¸·¸··¸¸································K···³··K··³·³·³·K··K·K·K·K··KKK·K·K·KKKK·J·K·KKK·KKJKJ·JKKKJ·JKJ·JK·JKJKKJKJJJKJKJJKJJKJJJJJJJJJHJJJGJHHGGGGFGFFFGDKKKKKKK³KKKKK³KKK³K+OOOOO+þüþþþÿþþþþþüþüþüþüþüþüüþüÿüÿþþþþüþþüüüüþüþüüüüüü1ЇЇŠ+üóüóúóüööõööëõëõëõëõìõëõöõóîóóóóðóóóóóóóóóðóóóóóóðóððð*4‡*‡31ðòðððóðóðóóðððððððððððóðððððððððððïðÑïÑïðÝÝÑðØèÑÑÑïïá*333331ÑÝÝØïïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÏÐÑÑÎÑÎÑÍÎÑÍÍÑÍÍÍÍ­+&&&&&&+³KKKKKKKKKKKKK³KKKEFFFFFGFFFGFGGGGGGHGJGHGJGJHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþþþþýþýþýýþýýýýüÿü÷óóúóóú÷óóò¬j=$!!=$$$!$=$$$=$!!$===!!$==!!$$$$!===!=$!!==$!==$!$!===$$$=$$C===!===$!=$====!!====$$=========!=$===$$======$$====$$===============$===================$$=====$=====!=C===================>======================$=======!=>===========>=$========$=======$=$=>===!!====!!==$====!========!$==!==$=$========$$$$=======!$$==$!$==!$=$!$===$=$!!$$$!$!$!!==$!!=!=!$!!$!!$!!=$!!!!!!!!!!!!$!$!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!    !    !=s¥õþÿþÿþÿþýÿþÿÿÿýýýýýýýýýýýýýýýàÓ³K³³³³³³³³³³³³³³³³³³³³³¸³³¸³³¸³¸¸³·³³·³³³¸³¸³³¸³³¸³¸¸¸³¸¸¸³¸³¸³¸666i66666ii666666ii6i6ii5i6i666i666ii666666666666666i666i66i66i6i66i666i6i66666i6666i6i6ii6666i6i666i66i66666666i66666i66666i666i6666 %% %%&% & % % & % %% & & & % %& & % %&%& i6666i66666i666666i666666666i6666i6i666666666666666i66i666666666i6666666%(      666i6666i666i6i66666666i666i66ii66i6i6i6i66i666666i666i666666i666i6666i66i6666666i666i666666666666i6ii666i66i6666666666666i···¸··¸····¸·¸·¸·······¸···¸··¸·¸··¸¸·¸···¸···¸·¸··¸·¸·¸······³··³······K·³·K···K···K··K·K·K·KK·K·K·KKK·KK·K··KKKKKK·KK·KJ·JKKJKK·J·J·J·J·J·J·JJJKHJJJWJJKWKJKJJKJJJJJJJJJJJJJJHJHJHGJGGGFGFFFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+ÿþÿÿþþþüþþþþþþüþüþüüþþþþþþÿüÿüþþþþþüþüüþþüüüóüüü+‡Š‡‡‡1úóóüóüüööööõöõöõöõöõëööõööúöóóóóóóóóóóóóóóúóóóðóóóóóóó1‡2*4‡*óðóóóóóóóðóðóðóðóðòóðóðððððððððððððððððððÝÝððÝèïðððïð10Q333*ðÝÝßÑÑáïÑÑÑÑÑïÑÑïÑÑÑÑÑÑÑÑÑÑÏÑÐÑÐÏÑÑÐÑÑÑÑÑÑÑÑÑÑÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFGGGFGGGHGGHGJGHGJHHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýþýþýþþýýýýýþÿ÷ó÷úóóúóóúóò¬Ÿo!!!====!!!===!$$===$!!!!$==!$=!!!!!$===!$!=>A=!$=$$=====$==========!$===$===$$!!=========!$!!$==$$$===$======$====!$=CA=$==$$========!======!!$!==!====$===>==>=======>=========$=$!=$============$==$$!$====$!=>=====!$==========$==!=$$==>==C==!!=>==$=!!=$$====$$=$!!$!==!==$========!$!$======!!==$$====!!!$$$$!=!!!!!$==$$==!!!$!=!$===$$==!!==!$!!=!!!!!$!!=$!!!!!!! !!!!!!$=!!!!!!!!!!!!!!!!!!!!! !!! !!! !  !!!!! !!! !! !!     !   !!  !  !!!  =}ªíÿýþþþþÿþÿýÿþýýýýýýýýýýýýýýýýèÓ³·³·³·³·³³³³³³³³³³¸³³³¸³³³³³³³³³·³¸³¸¸³¸¸³¸³¸³³¸¸³³³¸³³³¸³¸³¸³¸³i6666i66ii666666i66666666666666666i666ii666666666666666666666666666i6i6666i666666i666666666i6666666666i6i66i666666i6ii66i6666666666i65% %% % % % &&& & % % % % % % % %6i6i66i66i66i6ii666i66i6i66i666i66i6666i6i6i6666i6i6666ii6666i6i6666666655(        ( % 6666666ii66ii66666i6i6i6i666i66666666i666666i66i6666i666666i66666666i666i66666ii6666i6i6ii6ii6i6i66666i6666i666i666666666i6¸·¸··¸··¸·¸···¸··¸·¸¸·¸··¸··¸··¸··¸··¸··¸³··³···³··³···³··³·³·³·³··³·³·³·K³³·³³³³³K³³³³··K··K·KKKK·K·KK·KKKKK·K·K·KKKKKJ·KK·J·KKJKKJ·JKJKJKJKJKWKJKJKKJKJJJJJJJJJJJJJJJJJJJJJJHJJGJGHGGGGGFGFFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþþþþþþþþþþüüüüüþüþüüþþþþüÿþþþþüþþüüüþþþüüüüüüü1‡Š‡ŠŠ1üüüóüóüööõöööõöõöõëõëõëõëõóõóóóóóðóóóóóóúóóóóóóðóðóóóð*4‡*‡31ðóððóðóóðóðóðóððððððððòðóððòððððóððððððððÝÝððØèÑðïððá*33333*ðØÝßïïÑÑðÑðÑïáÑðÑÑðÑÑÑÑÑÑÑÑÑÐÑÑÑÐÐÑÑÐÐÑÑÐÑÑÑÑÍÍ­+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFGFFFFGGGGGGGGHGHHGHGHGJGJHHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýþþýþýþýýýýýýýüÿüúóóúóóúóó÷ò¬o!!$!!!!!=$$$!!!$$=$!!!!=$!$$==$=$$$!$===$$=$$$$=$=$!$=$$===!=!====!=======$$=!===$=!=========$=======$===$=====$$=================!============A=$$=============!===========$=======$===$$======$$=====$===============$==========!===========!================$$==$!======$!=====$====$!!====!!====!!$$!!$$$!=====$!$$!====$!$!==$=$!!!!$$$$=$!!!==!!!$=!!!=!!!!!!=!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!! !!!!  !!!!!!  !!!!!!!!    ! qªíýÿþÿþþþþþþþÿÿýþýýýýýýýýýýýýýàÓ·K³K³K³³³³³³³³³³³³³³³³³³³³¸³³³¸³³¸³³³³³³³³³³³¸³³³³¸³³³¸³³³³¸³³³³666i6i6i6666i66666i6666666666666i66666666i6i666i6666iii66i666i666i6i666iii66i666i66666i66666i666i66i6666666666ii666i666i666i66ii6666i6 %% % %& % & & & & & % & & %% %% %%6666666i6i6666666i666i666i66666ii66i6i66i66ii6666666i66i6i6i6666666i66666(         (% 6666iii666666666i666666i666i66i6i6ii6ii6666i666i6666666666i6666i66ii666i6iii66666i6i66666666i66i666i6666i66666i66i666666666···¸··¸··¸··¸··¸··¸····¸··¸··¸···¸··¸··¸···¸·¸···¸··¸···················³·³·K··K··³··K··³·³K·K·K···K·K·KK·K·KKKKKKK·K·K·J·J·JK·J·J·J·JK·J·J·JKKJKJ·JKJ·JKJKJJKJJKJJKJJJJJJJJJJJHJJHJGGGGGGGFFFGFFFK³KKKKKKKKKKKKKKKKK+OOOO2+þþÿþþþþþþþþüüþüþüüþüþüþþþþþþþüþüüüüüüüþþüüüüóüóü1Ї‡Š‡1óóóüóóúõööööëõöõöõëööõëöööóóóóóóóóóóóóóóóóóóóóóóðóðððð1‡4*4‡*ñððððóðóðððððððòðóðóðóïðððððððððððððïðïÑðÝÝÑÑÝÑïÑÑÑÑï133333*ÑØÝØÑÑÑïÑÑÑÑÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÐÐÍÑÍÑÎÑÍÍÑÍÍÍÍÍÍÍÍѦ+&&&&&&+K³KKKKK³KKK³KKKKK³DFFFFFFFFGGGGGGGHGJGHGJHHJGJHJHJHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýþýþýýýýýýþýþÿóóó÷óóúóóúóò¬Žo===!!$==!!=$!==!!!$!!!!!!$!$======!=$====$!!=$!!!=!!==$===$$$!==$$!!==!$$========$===!$===!=======>=!!==>=====$==A=======$$===$======$$!=$$==!!$==!$=$======!====$$!!====>=!======A=$$>CA===$$=!$========>A>=====$!!============!====!=========!!!!====$!=>====$====!!==$==$$====$=$!=$$!$!$$!!$$==$$!$====!!!=$===!==>=$!!=!!!=!$!!==!!!!!!!$==$!!$!!!!!!!!!=$!!=!$!!!!===!!!!!!!!!!!!!!! !!$!!!!!!!!!!!!! !!!!!!!!!!!! ! !!!!!       ! !  ! !   =p¥õþþþýÿþÿþÿþÿÿýýýýýýýýýýýýýýýýæÓ³³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³³³¸³³¸³¸¸³¸·¸³¸³¸³¸³¸³³¸³¸¸¸³¸³¸¸¸ii666i6i66i6666i6666i6ii6666ii6i6i6i6i66666i66666i6666i6666666i66666i66666666ii666i666i6i66i66666666666666i6i66666ii6666666666i6666666 & &% % & % & % & % % % %& % %66666666666666666i6i666666666i6666666666i6i6i66i66666i66i6i6666666666i6i6%           i6666666666i666i66666i66i6i6i6iiii66666666i6666666i666666i66666666i66666666666i6665iii66i666i666i666666666666666i6666i6i66i¸·¸··¸··¸··¸··¸··¸··¸·¸··¸··¸·¸·¸··¸··¸·¸·¸···¸······¸···¸·····³··³········³·³··K··K···K·³K·³³··KKK·K·K·K·K·KK·K·KKKKK·J·JKKJ·JKJKJKJ·JKJKJ·JKJ·JKJKJJJKJJJJJJKJJKJJKJJJJJJJJHJJHJGJGHGGGFGFFFFFDKKKKKKKKKKKKKKKKKKK+OOO2O+üÿþþþþþþüþüüþþþþþþüüþüþþþþþþþþþþþþüüüþþþüüüóüüüü1‡Š‡‡Š1üüüóüóüööõöëöõöõëõëõëõöõëõóóóóóóóóóóóóóóóóóóðóóóóðóóðó*‡4*‡21ðóðóóðóóóóðóòðóððððóðððððððððððððððððððððÝÝððÝèðððïðï*333331ÑÝÝØÑïÑÑÑÑáÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍ­+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFFGGGGHGHGHGHHGHHHHJHHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýþþýþýýýýþýýýýüÿüóúóúóóú÷óóò¬Žl!!!$!!$!!=!!=$!!$$=!$$$$$$$$$=!!$$$$!!$$====!!$!===$$==!$!=$=!===$==!==!==$==!=$=====!===!=!=====!=========!=$===$!==========$!=========!=========$===$====$=====!=============!=A=!=====$$=============$=========$=============$=$$==$$====$=====>=$====$!=!=========!!=====!===!===!=!$====!$=$$!=====$!!$!=!$=!$$!==!!!!=!==$!$!!=$!=!=$=!!$!!$$!!!!$$!!=!!!=!!!!$$!!!!$!!!!!!!!!$!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!   !!!!!!    !  $q¥íþÿþþþþþþýÿýÿÿýýýýýýýýýýýýýýýæÓ³³·³·³³·³·³³³³³³·³³³³·³³³³¸³¸³¸³³¸³³¸³³¸³³·³³¸³³³¸³¸³¸³³³¸³³³³¸³6i666i6i6i6ii66666i666i6666ii6666666i66666666666666i6666i6i6ii6i66i66666i6666i66ii6i66666i66666666i6666iiiii66i66i66666ii6i6666i666666%%%&% % & & & & & & & & %&% %&66666i66i66i666i6i6i6666i6666i666666666666666666666i66666666666666666i665 % %%        ( 66666iii66i6i6i666666i6i6i666666666666i66i66i666i666ii6666i666666i66666666666i666i66i666i66i666i6666i6666i66i666666i666666i···¸··¸··¸··¸··¸··¸··¸·¸·³¸·³¸·³·¸··¸·····³····³··³··³···³··³³³³³³·³·K³·K³·³·K·³³³K·³³KK³K·KKK³KK·KKK·KKK·KKKKKKKKK·J·JKKKKK·KKJ·J·J·JJ·J·H·HKJJKJKJJJJJJJKJJJJJJJJJJJJJJJJJJJHJHGJGHGGGGGFFFGFFFFKKKKKKKKKKKKKKKKKKK+OOOOO+þþþüþþþþþüþüþþþþþþüþüþþþþþþþþþþüþüüüþüþþüüüüóüüü+‡Š‡‡‡1üóüóüüóööööööõëõëööõöõìõöëúõóóóóóóóóóóóóóóóóóóóóóóðóðó*2‡*4‡1óðóðóóóðóððððððððóóððóððððððóðòððððððððððÝÝððÝâïÑðÑÑá133333*áݰÝÑáïÑðÑïïÑáïÑðÑÑÑÑÑÑÑÑÑÑÑÑÐÏÑÑÑÐÐÑÐÑÐÑÑÑÑÍÍÍÔ&&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFGGFGGGGGGGGJGGJGHHGJGHHJHJHJHJHJJJHJJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýþýýýýýþýýýýþÿúóóóóúóóóúóò¬?$$!!!==!!$!!===!!======!===!!!!=!!$====!!!==$!=$!=!!$$==!=$!!!!$!$$!=====$!$!$$$=========$!$$$======!!===!=$$======$$$=====$$$$======$=====!=>===>===!!==!$===========$=!====!!$=$=A=!!$==========!$====$=======$!$!==>==!!$==!==>=====!$$=$=>C==!$=!$=!!!===!=$$$$!===$==!$==$===!==$=====!!!$!$==$!$===!!!$!!$=$!!!====$=!!!!!=!!======!!!!!!!!!!!=$!!$$!!!=!!!!!!!$!!!!!!==!!!!!!!!!=$!!!!!!!!!!!!! !!!!!!!!!!!!! !!!!!!! !! !!   !    !  ! !!! q¥õþþþÿþþÿþÿýÿÿýýýýýýýýýýýýýýýýàÓ³³K³³K³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸³¸³³³¸³³³³³³³³¸³³¸¸³³³666ii6666i6666i66ii66i6i6i66666666i666i6i6i6i666i66i66666i66666i66i666i666i66666iii66i66666i6i66i66iii6i6i66ii6i566666666i6i66i66ii6i % %&% &%&& & % & & & & & && % %% (ii6i6666i6i6666i6i66i6666i66i66i666i6i66i6i66666666i66666666iiii6ii6666666(%        i55666i66666i66666i6ii66666666i66666666ii666i666i666666i6i66666666i666i6i66i666666666666666666i6666i666666i66i66666i66666i6i6i¸·¸··¸··¸··¸··¸··¸·¸··¸··¸·¸···¸··¸··¸···¸··¸·········¸·················³·K·³··K··³···³···K·K·K·K···KK·K·KKK·K·K·KK·KK·KK·JKKWKKJ·JKKKKJKJKKK·JKJKJ·J·JKJKJJKJJKJJJJJJJJJJJJJJJHJJJGJGGGGGGFFFFFEK³KKK³KKK³KKK³KKK³K+OOO2O+þþþþþþþþþþüþþüÿþþþþüþüþüþþþþþþüüüþüþüþþüüüüóüóüü1‡‡Š‡Š1óüóóóóúööõöööõöõìõëõëõëõëöóëóóóóðóóóóóóðóóóóóóðóðóðððó*‡4*‡31ðòðððððóðóðóðóðòðððððððððððððððððððððïðÑïÝÝÑïßèÑðÑïïÑ*333301ÑÔ°ØïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÑÐÑÑÑÑÍÑÎÑÍÍÑÍÍÍÍÍÐÍÍ­+&&&&&&+³KKKKKKKKKKKKK³KKKFFDFFFFFFGFGGGGGHGHHGJHHGJHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþýþþýýýþýýýýýýýüÿüóú÷÷ó÷÷÷óóò¬Ž?==!!!!!!$=!!$=$!!$!!!=$!!=!!==!!=!$=$!$$$!===$$==!!====!=!$==$=!=$$==$$==$!====$!===========!$====!=====$$$====!======$=$!=========$=====$=============$!===>$==!=======!=========>@A@=@=@=@=====$=====$==$!=====$$$=====$===!$=====!=$===>9==!=====$=$===!======$===$===$!==$$===!===!=$$=$!$$$$====$$!==$!$=!!=$$$$!=!$!$!==!!==!!!!!!=$!!!!=$!!!$!$$$!!!!!$!$!!=!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!! !! !! !!!!   !     ! qªíþþþþþþþþþþýÿÿýýýýýýýýýýýýýýýæÓK³³³³·K³³³³³³³³³³³³³³³³³³³³³³³³³¸³¸³¸³¸³³¸³³¸³³³¸³¸¸³¸¸³¸³³¸³³¸³66iii6iii6i6i66iii6i6ii6666iii6ii6i66666666i6i66i6iiiiii66i666i6i6i6i666ii6666i666666i6iiii6ii66i666i66666666666666666i6666i6i66i6666( % & & &%  & %& & % % &66666ii66iiii666i666666i6666i6666iii666666666ii6ii6666666666i6666666i66ii666i6         6i6666i66i666iii66i666666i6666i6i6i66i666i6666i6i66i6i6ii66i66666ii666666666i666ii6666i6i666i66666i6666i66i66i66666i6i6iii6i666···¸··¸··¸··¸··¸··¸··¸··¸···¸·¸·¸··¸····¸·····¸················³···³······³·K·³··K·K·KK·³K·K·KK·KKKK·K··J·K·KKKKKK·J·KKJKKKKKKKKKKKJ·JWKK·JKJKJ·JJJJJJJJJKJKJJJKJJJKJJJJJJJJJJHJHJHHGGHGGGFGFFFFFFKKKKKKKKKKKKKKKKKKK+O2OOO+þþþþþþüþþþþþþþþþüþþþþþüþþþþþþþüþüþþüþþüþüüüüüüüü1Ї‡‡‡*üüóüüüüööõöööõöõö÷öõöõöõööóë÷óóóóóóóóóóóúóðóðóóóóóóóóó*4‡*4‡1óóóóóóóóóðóððóððóóðóððððððððòððóðððððððððÝÝèðâïððððïð*333331áݰÝÑÑïÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÐÑÑÐÑÑÐÑÑÑÑÑÑÑÑÑÑÍÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFDFGFFFFGGFGGGGGGHGHGHGJHHGJHJHJHJJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýýýýýýýýýýýýýÿóóóóúóóúóúóò¬Ž?==!!$$$!!!$==!!$!!$=!!!$=$!!!!=$!$=!$!!!!$=$!!==!===!===!!$=!$$!$========!!$!====$======!$!!$$$==$!!!$=====$!$$$=$===!$==$==$!$$$$==!!======$$!====$=$====>>=========AAC_ƒÈßñüüýÿÿÿÿÿü÷òßÌ–u@========$$==>====$!=============>===>====$!!==!===!!!$!$=====C=!!$!!==$!==$!!!===!!$!!!$!$=$=!!!!!===$=!!$$$!!==$!$==!!===!$!!!!!$==!!=!!!!$==!$!!$==$!!!!!=!$!!===!!$!!!!!$!!!!!!!!!!!$!!! !!! !!!   !!!!!!!!!!! !  !!! ! !        ! !!  !!q¬íÿþÿþÿþÿþÿþÿÿýýýýýýýýýýýýýýýýæÓ³³³K·³·³³·³³³³·³³³³·³³³³³³³¸³³¸³³³³³³¸³³¸³³¸³³¸¸³·³³¸³³³³³¸³³¸³¸66666666i666i6i6i6666666ii66ii6ii6666i66i6i66i6i6666666666666i6i66666ii66ii6i66666ii66i666i6666iii6i66666666666ii66i666i66i666i666i6ii6i(& & & & & &  % & % %66666666666666i6666666i6ii666i6666666666666i66666666666ii66666666ii6i6i66666666            666i666i666666666i666i6i6i66666i66i6i66i6666ii6i6i6666i6ii6i6i6iii6i6666iii6666666i66iii6i66i66i6i6i666666ii6ii6i66i666i666i666·¸···¸³··³··³···¸·······³¸¸³··³···³·¸³···³·³·³·³·³·³·³·³·³·³³³³·K³³³K·³K³K³³³³K³·³·K·K·KKK·K·KKK·K·KKKK·KKKKK·K·KKJ·J·KK·J·JKKKWKKWKKJKJKH·H·HKH·JKJJJKJJJJJJJJJJJJJJJJJJJJJHJJHJGJGHGGGFGFGFFFFDKKKKKKKKKKKKKKKKKKK+OOOO2+þþþþþþþþþüþüÿþüÿþþþþþþþþþüÿþþþþüþüþþþþþüüóüóüüüü1‡‡‡‡‡1üóüóüüüööööööõöõöõöõöõöõëõóëóóóóóóóóóóóóóóóóóóðóóðóðóó*‡4*‡3*ððóðóðóðóððóððððððóððóððððóððòðððððððððððÝÝïðððïððÑðï*333331áݰØÑðÑðÑÑïÑðÑðÑÑÑÑÑÑÑÑÎÑÑÐÑÑÑÑÏÐÑÑÑÐÑÑÑÑÑÑÑÍÍÐÍ+&&&&&&+KKKKKKKKKKKKKKKKKKFGFFGFFFFGFGGGGGGHGHGHGHGJHGJGHHJHJHJJJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýþýýþýþýýýýýýýüÿüóúóóúóóóóóò¬s?==!!$$$!!$!!!!$!$!$$$!$!!!==!$!!=!==!=!=!==!==$!=!$=$$==!====!!==$=!==$$$==$==!!!==$$$=!===9===!$========$$==$!=======$=!=====$=====$=>=$=====$$====$$=======$=$===@zÇðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüçÆxC=!=========!===============$$=$>===!$===$$==!=!=====$=$====!$==$==$=!=$=$=!==$!==$!===!!$!$=$$$$$!=!==$!!=!!=$$=!$=$$=!!!=!!$$!=$!!!=!$$!!$$!!!$=!!$!!!!!!!!!!!!$!!!!!=$ !!!!!!!!!!!!!!!!!!!!!!!!  !!!! ! !!! !!!!!!!!!!  ! !   !!qªíþþþþþþþþþþýÿÿýýýýýýýýýýýýýýýæÓK³³³³³³³K³³³³³³³³³³³³³³³³³³³³³³³¸³¸³³³¸³³¸³³¸³³³³¸³³³¸³¸¸³³³¸³³³ii6i6i6i66ii66i6ii6i66i66666666i6i6i6i6i6666666666iii6i66i6i6i66i6i66i6i6i66i666i66666i6iii6ii6ii66i6i66666666666666ii66ii666666666666i6% % % & & %& &  & % & & & & & & %(666666666666i66i666i6666i666666i6666666666666666666i6i66i66iiii66i66i6i66i66666         6i66i6666i6666i6666i6666i6i66i6i66i6666i66666666i66666iii6i6i66666i6666i6666666ii6i666i666i66i66i6i6i6666i6ii6i66666i6i66i666i·······¸·¸·¸···¸·¸·¸···¸····¸··¸·¸·¸··¸·¸································³···K·³·K·³·³·³·K·K·K···KK·K·KK·K·K·KKKKK·KKKKJKKKKKJKKKKKKKKKKKKKKJKJ·JKJK·JJKJ·JJJKJJJKJJJJJJJJJJJJHJHJHHGJGGGGGFFFFFFFKKKKK³KKKKKKKKKKKKK+OO2OO+üüþþþþþþüþþþþÿüÿüþþþüþþþþþþþþüþüüþüþüþþüüüüóüüüü+‡Š‡‡‡1üüüüüóóööõöööõöõöõöõöõöõöëóë÷óóóóóóóóóóóóóóðóóóðóððóðó*4‡*44*ðóððóðóððððððòðóðððòððððððððððððððððððððïÝÝèÑèÑÑÑÑðÑÑ1333331áØÝØáÑÑÑÑÑáÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÏÐÐÑÑÍÑÍÑÍÍÍÍÍÍÍÍÑÍÍ&&&&&&&+K³KKK³KKKKK³KKKKK³DFFFFFFFGFGGGGGHGHGJGHHHJGHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þþýýýýýýýýýýýýýýÿúóó÷úóóú÷úóò¬sl==!!$!!===$!$$=!!!=!$===!$==$==$$$!!!!!===!!!!!$$!=!!!$!$=$==$===!=!$=!===!$!!!$=$=9!!$==========!$!!!$$======!$======!!$$=>A>==!=====!=====$$=!=====!!!=!==@ƒßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌx@===!!!$!=========!!$=!!!!!!=$$====!=$$=========!!=$=$!======!!$$!$==$!$$==$!=$$==!$====!!$$!!!$!!!!=$!==!$!$=!!!$!!!$=$!$=$!!!!!!$=!!==!$!$=!!$!!=$!!!$!!!=!!!!!!!$=$!$=!!!!!!!!!$!!!!!!!!!!!!!! !!!! !!!! !!!!!!!!!! !!!!!!!!  !!!       !! !      !pªíþþþþÿþÿþÿþÿÿýýýýýýýýýýýýýýýýàÓ³³³K³³K³³³³³³K³³³³³³³³³³³³³³³³¸³³³³³³³³³³³³³·³¸·¸³¸³³·³³·³¸³³³¸³6i66666666666666i6i666iii666666666ii6666666666i6i666i66i6i66ii666ii666i66i6i6i666666i666666i666666i66666666666666i6iiiii6666ii6i66ii6i6i &  & &  %& & %66iii66i6i66666i66ii6i6i6ii6i66i66666i66666i66ii6666666666i6666i666666666i666i66            66i66i6ii666i6666i6i666i666i6i66i666i6666ii6iiii666i6i66666i6666i6ii66i6ii6ii6i6666i6666i66i666i6i6i666666i66666i66i6i666i6i6i··¸·····¸····¸····¸··¸·····¸·¸······¸·····································K·³·K·³·K·³K·K·K·K·KK·K··KK·KKKKKKK·K·K·J·J·K·KWKJ·KKKJKJ·J·JKJWKJ·JKH·JKJJKJJJJJKJJKJJJJJJJJJJJJJJHJJJHJGHGGGGGFGFFFFFFKKKKKKKKKKKKKKKKKKK+2OOO2+üþþþþþüþþþþþÿüÿþþþþþþþþþþþþþþüüþüþþüüþþþüüüüüóüü1‡‡‡‡‡+üüüüóüüööööööõöõöõöõöõëõëöóëóóóóóóóóóóóóðóóóðóóóðóóóóó*‡4*‡4*óóóóóóóðóðóóððóðóðóððððððððððòðððððððððððÜÚððßèðïðððð*333301Ñß°ßÑïáÑïÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÑÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÍÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFGFFGFGGGGGGGHGHHGHGJGJHJHJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓþýýþýþýýýýýýýýýüÿüú÷óóú÷óóóóò¬Žj!!==!!!!$!!!!$==!!!!!=$!!==!==$$!!!!$=!$$$$!==$!$$$!$!!$$$$$$==!!=$!$=$$$$!$$=!==$=====$$$$$!======$===$$=======9===!========$$====$!=======!$====!=!!=====!====]Ìúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Æu==$=====$===!$==!$!=$====$!===$!=$=====!$!=!=====!!=$=$!===!!$!=$==$!==$!==$$!$=!$$$=$!$$$!$$!==$!$!==!!!=$!$$!!$=$!!!!!!=!=!!!$!!!!!!!!!=$!!!!!!!!!!!!!!!!!!!=!!!!!!!!!!!!!$!!!!!!!!$!!!!!!!!!!!!!!!!!!  !!!!! !!!! !!!!!!!!    !   =qªõþÿþþýþþþþþýÿÿýýýýýýýýýýýýýýýæÓ³³³·K³·³·³·³·³³·³³³³³³³³·³³³³³³³³³³¸³¸³¸³¸³¸³¸³³·³³¸¸³¸¸³¸³¸¸³³³i6i6666ii6ii6666i666666666i666i666i66i6i6i6666i6i6i6666666666i6i666i666i666i6ii6i66i66i6iiii6666i6i66i666i66i6666666i6666i6i6666i6666(5% 5( & & &&& & & & && & &6i66iiii6i66i6i6ii66iii6666i6i6i666i66i6ii6i66666666i66i666ii6i6ii6666i6i6ii6666(         6665 i6ii66ii6666i666i6666i6i66666666i6ii66ii6666666iii6ii6ii6i66iii6i6i66i6i66666666i666666i66ii6i6i666666666i66i6iii66i666i6i666i········³···³·····³··³··³·³··³·····³·····³·³·³·³·³·³·³·³·³·³·K³K³·K³·KKK³K·³KK·K³K³KK·KK·KKKKK·KKKKKK·KK·K·K·KKJ·JKKKKJJ·JKKKJKWK·J·HKJKKJJKJJJKJJJJJKJJJKJJJJJJJJJJJJJJJJJJJJHJGJGJGGGGGFGFFFFFFKKKKKKKKKKKKKKKKKKK+OO2O2+þüüþüþþüþþþÿþÿüþþþþþþþþþþÿüþþüþüþþþþüþþüüüüüüüüü1‡‡‡‡‡1üüóóüóüööõöööõöúöõöõöõöõööóö÷óóóóóóóóóóóóóóóóóóóóóðóóð12‡*44*óóðóóðóððòðððóððððóðóðððòðððððóððððððððððÝÝððÝðÑðïÑðÑ103333*çÝØßáÑïïÑïÑáïïÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÐÑÏÑÐÐÐÏÑÐÑÑÑÑÍÍÍÎÔ+&&&&&&+KKKKKKKKKKKKKKKKKKEEFFFFFFFGGFGGGGGGGHGHGJGHJGHGJHJHJJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýýýýÿ÷óóúóóóúóúóò¬}?!!!!!!!!!!!!=!!!!!=!!!!!======$!!!!$==!!!======A=====9$$$$!!=====$=!!$==$=$!!$$====!===!==$!=======!!==>=$!=!!!!$===$!!$==$!===!=!!$=====$=====>==>CxßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÌx@======!!$!========$>>====$=!$!$====!$===$!=$=!$!!$$!$=$===$$!=====!!!=!=!!$==!!======!!$==!!=$$!!!$!$$!!$!!!!=$=!$!$=$$=$!$!!!==$!!!!$!$=!$=!!$!!!!=$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  !  !!!!!!! !!!!!!!!!!!! !!!!! !!! !!!   !   ! !!  !!!!!!!!!!   !!! !!!! !!  !!!!  ! ! $q¥íþþþþÿýÿþÿþÿÿýýýýýýýýýýýýýýýýæÓ³³K³³³³K³K³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸³³¸³¸³³³³³³³³³³³³¸³66666i6666iii666666666i6i6666ii6iii6666666i66i6666666666i6i6i6i66i66i666i6i6i66ii66ii66i66666ii666666ii6i66666i6iii6666i6i66i6666i66i% (666ii6 &  &   & & & & % & (6i6556666ii666i666666666i6i6666666666666666i6i6ii6i6i6i66i66i6i66666666666ii6ii665         666666i666666666ii66i6i666666i66i66666ii6i66666666i66666666ii666i66666iii6i66666i6666i6666ii66i66i6ii6ii66i6i6666666i6666i6i666i6666···¸··¸···¸··¸··¸······¸··········¸······························³······³····³·³··K···K·³·····KK·K·KKK·KKKKKKK·KKK·KK·KKKK·J·KKKJKKJ·KKJKK·JKJ·JJ·J·JJJKJJJKJJJJJKJJJJJJJJJJJHJJHJHJGHGGGGFFFFFGEK³KKKKKKKKK³KKKKK³K+OO2O2+üþüþüþüþþüÿüÿþþþþüþþþþÿþþþþüþüüþüþüüþþþþüüóüóüüó1‡‡‡‡‡1üóóúóúóööööööúöõöõöõëõëõëõóëóóóóóóóóóóóðóðóðóðóððóðóóó*‡4*431ððóðóððóðððóðððóðòðððððððððððïðððïððÑïÑïÑÝÝÑðØèðÑÑðïç*333331ÑØ°ØïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÐÑÏÐÑÑÐÑÍÑÎÍÑÍÍÑÍÍÍÍÐÐͦ+&&&&&&+³KKKKKKKKK³KKK³KKKEFFFFFFGFFGFGGGGGHGHGJGJGHJGJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýþýýýýýýýýýýýüÿü÷óó÷÷÷ó÷óóò¬Žl!!!!!!$$!!!!!!!!!$!!$!!!!!!=$!!!!$=!!!$!!$$!!$=!$!$$!==!===!$$!$$=$$$$!$=!=!==$!$!=$$==$$!=!=$===!==$$$====!=======!====$$$=$!===!===$===!===!======$===$=$=@xáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÌxA=$=====$$$!$===!=====$!=$===!=====!!===$=$==!!=$$=!!==!!==$=!=!=$$=!$$!$$!!$$$!$!9$$=!!==!==!$$!$$!!!!!$!!!!$!!!!$!$!!=!!!$!!!$$!!!!!!!!=!!!!!!!!!$!!!!!!=$!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! _„„„„„„„…„„„……„„……„„„„„„„„…•„„…„………„„………„„„…„„„……„„„„„„„„„„„„„„„„„„„‚„„„„„„„…„„„„„„„‚„–‚_„„…„„„„„„‚„„„„„„„„„„„„„…„…„_9Y‚‚„„…„„„……„„„„„„………„„„„„„„„„Y  ! !$q¥íþþþþýþýþþþýÿÿýýýýýýýýýýýýýýýæÓK³³³K³³³³³³³·K³³³³³³³³³³³³³³³³³³³³³¸³³³¸³³¸³³³³³³³¸³³¸³³¸³¸·¸³·³666i6666i66i66ii66i6666ii666i6i66i6666666i66i6666i6iii6i6i6666666666i6i666666i6666i6666i66i6i66666666666i66ii6ii66iiiiii6i666ii6666i66(i6666i &  & &  && % % ii666666i6666ii6i666666i66i66i66iii6666666i66i666i66666666i6i6666666i6ii6i66i666i66        i66i66ii6i666i6iii6666ii6i6i666666666666i6i6666i6i6i66i66ii6i666666i6i666i6666ii666666iii6666i66666ii66i66666666666i6666i6i6i66ii6i66i······················¸··¸···¸·············³················K·K·K··K···K··K··KK·KK··K··K·K·K·KK··KKKK·KKK·K·K·KKK·JKK·JK·JKJ·JKKKKJ·JJKJ·JJJKKJJKJJJJKWKJKJJJKJJKJJJJJJJJJJJJJHJHJHGJGGGGGFGFGFFFKKKKKKKKKKKKKKKKKKK+O242O+þüþþþþþþþþþÿþþþþþþþþþþþüþþþþüüþüüþþþüþþþüóüüüüüü1Q‡‡‡‡1óüóüóóüõöõöõöõöúöõöõööëõöëúë÷óóóóóðóóóóóóóóóóóóóóóóóóó*2‡*44*óóóóðóðóððóðóðóððóðóðððððððððððððððððððððÝÝððÝèïððððð*333331ðݰÝÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÐÑÑÑÑÑÑÑÑÑÑÑÑÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFGFGFGGGGGHGHGHGJGHHHJHJHJHJJJHJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýþýýýýýýýýýýýýÿ÷óúó÷óúóóúóò¬Ž?!!!$!$=====!!$==!$$!!$$==!$==$!!!$!$$$!!$$=======$!!$!!!!$!!!======!!!$=$!$=$!!$=$==!$$===!!$=$===!!!!$!!!!$====$$$==============$!!==$==$!$!===!=!=BÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÆC!!!$$!!!=====!!==!!$===!!!$$!$$====!====!!=====!$=$!==$$!!!!======$==$!==!!!!$$==$!$$!$$!!====!!$!======!$!!!$===!!!$$!!!!!!!===!!!!!!!!!!!!!!!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ     !p¥õþÿþÿþÿþÿýþÿÿýýýýýýýýýýýýýýýýàÓ³·³³³³K·³K³·³·³·³³³³·³³³³³³³·³³³¸³³³³³¸³³³³³¸³¸³¸³³³¸³³¸³³·³³¸³¸666666i666i6i6ii66666ii6i6i66ii666i66i66i6i66i66i6i6i6i6666666i66i6i6i666iiii6ii666i6i6666i66i66666ii66ii666i6i66i6i66666i666i6666i6i6666ii66& & & && &   & & & & & & & %666666i6i66666ii66ii666i6666i6666i66666i6i666666666i66i666i6666i666666666i66i666666i5  (       6666666i66i6666i6666i66i6i66i66666666ii666ii666i6ii6i66666666666ii66666666ii666i66i666i6iii66666i6i66i6ii6i666i66i666i666666ii666i6666·························³·³·³·³·³·³·³·³·³³³·³³³·³K·³K·³K·K³³³³·³K³³³K³³³³K·K³K·K·KKKK·KKKKK·KKKK·K·K·K·KKKKKKKKKKK·JKKKJ·KJKKJ·J·J·JKJKH·J·JJJWKJJJJJJJJJKJJJJJJJJJJJJJJJJJJHJGJGJHGGGGFGGFFFFEDKKKKKKKKKKKKKKKKKKK+2O2O2+üþþþþþþþþüÿþÿþþþþüþþþþþþþþüüþüþþþþþþüþþþüüüüóüüü1‡‡‡‡‡1óúóóúóúîöööõöúöõöõöõëõöõëöóëóóóðóóóóóóóðóóðóðóóðóóðóòó*44*44*óðóðóðóðððóðððóóðððððóðððððððððððððððððïðÝÝðïÚèððïðÑï*33330*ÑÔÝØÑïáÑðÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÐÑÑÑÑÐÑÑÑÑÑÍÍÐÞ¦+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFFFGGGGGGGHGHGHGHGJHGJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýýýýýýýýýýýýýýÿüóóóúóóú÷óóò¬Ž?!$!!!!!!$!!!=!!=!!!$$$$!!$!!===!!=!$!!$!!!=!$$!=@=$$!!==!$!!$=$!$=!$$$$$!!==$!===!!!$$$!$==!===!==!=$$$!===!$$$$====!=!=!=========$$=!=$$==$===$=======@ƒ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñƒ@=!$==$$$====$!$=!!$!===$$$===$====$$!$$!$$!$$==!==$$!$=$$$$!$=$===!!$$==$!=!!!!==!!$$!$==!$!$=!!$$!!!==$$!!!=!!!!!!!$$$$!$!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!! !!!!!!!!!!!!!!!! !!! !! !!!!!!Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   =q¥íþýþþþýþýÿþýÿÿýýýýýýýýýýýýýýýæÓ³K³K³³³³³·K³³K³³³K³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³³¸³¸³³¸³³³¸³¸³³³³666iiii6i66i6i6i6i6i6i6i66i6ii6666i666ii666ii6666i6666666iii6666i66i66i666i6i66i666i6666i6i6666666i6iii666i6666i6i66iii6i6i66i666iii666ii6666      & & & & & 6i5666i666i6iii6i6i66i6iii666666i6i66i666666i666i66ii666666i6666ii66i6666i6ii6i66666ii  66       i66iiii66666i66i66666iiiii6ii6666i66i666i66i6i6i66ii6iiiii6ii6ii6i66i6666ii6i6i6666i666666iii6iii6i6i6iii6iii6i666ii666i6i6i66ii6ii666············································³···············K··K··³··³··········³·³K····K·K·KKK·KKKKKKKKKK·J·K·J·J·J·JK·J·JK·JKWKKJKJKKJ·JKJKKJKJKJ·JKJJJJJJJJKJJJJJJJJJJJJJJJJJHJHGJGHGGGFGFFFFFFKKK³KKK³KKK³KKK³KKK+O2O22+þüþþüþþþþÿþÿüþþþüüüüþþþþþþþþþþþüþþþþüüþüüüüóüóóü+‡‡‡‡‡1úóúóüóóööõöúöõöõöõöõöõëõöëóõóóóóóóóóóóóóóóóðóðóððóóóóð144*44*ðóðóðóððóðððóððððòðóððððððïððððïðÑðÑðÑïÑÑÝÝèïÝÑÑÑÑÑðÑ*33333*çØ°ßÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÐÍÑÍÍÍÑÍÑÍÍÍÍÍÍÑͦ¦+&&&&&&+K³KKK³KKKKKKKKKKK³FFFFFFFFGFGGGGGGHGHGJGJGJHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýýýýÿ÷óúóó÷úóóúóò¬}?==!!=!!!!!!$!$!!!!=$!!==!!$=$!$!===$$$$!!!!$!!$=$$$$=!!!===!!!!!$!$==!$=!==========!!=!$=@===!!!!================$!!!!=!====$$$==!!$$$!$!==ZßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÏu=======!======$!$========!$$=!=!!!$===!!$!$!==!$==!!$!$$=$!==!!!!!$==!==$!$$$===$$=$!!!!!!!!$$$!!=!!!$$!!!$!!!!!!!!!!!==!!!!!!!!$$!!!!!!!!!$!!!!!!!!!!!$$!!!!!!!!!!!!!!!! !!!!!! !!!!! !!!!!Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ! ÃüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !  qªíþþþþþÿþþþþÿÿýüýýýýýýýýýýýýýýæÓ³³³³³³K³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³³³³³³³³³³¸³¸³³¸³¸¸6i66i6i6ii666i6666i6666i6i6ii6ii66i6i6i6i6i6ii666666i6ii66iii666ii6i66666ii66i6i6666ii66ii66i6i666i666i66ii666666666ii66i6ii66i6iii6iii66i6ii ii &  & &   &  & & & & 566566iii6ii6ii66ii66i6iii66i6i66i66666i6i6i66i6ii6ii66ii6i66i6i6i6i666666ii6i6ii6666i6i%%5       66i66i6i66ii66666666i6ii666i66i6i6i666iiii6iii66ii6i66ii6666666666666iii66i66i66ii666ii66666666ii6iii6i6i6i6ii66666iiii66i6iii6666ii6i6···········································³·················³··K··K··K·K·K···K·K·K··K·K···K·KK·K·K·K·K·KKK·KKKKK·KKKKKKJ·KJKKKKJ·J·J·JKJ·JKJKJKKJJJJJKJJKJJKJJJJJJJJJJJJJJJJHJHJHJGHGGGGFGFFFFGEKKKKKKKKKKKKKKKKKKK+2O2O2+üüþþþþüÿüÿþÿþþþþþüüþþþþþþÿþþþþþþþþþþþüüþþüüüüóüü1‡‡‡‡Q1üüüüóúüööööööõöúöõöõìõöõëöóõóóóóóðóóóóóóðóóóóóóóóóóóóó*‡4*44*óóóóóóóóóóóðóóóóóððððððððððððððððððððððððÝÝððÝèðððððð*33333*ïØÝßÑðÑÑÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÔ°¦+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFGFFFGFFGGGGGGGHGHGHGHGJHHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýþýýýýýýýýýýýýýüÿü÷óóúóóú÷óóò¬Žj!=!!!!!!!!$!=$!!!$!!!!$!!!!!!!$!$!$=$!$!!!$$!!!!!$$!!!===!$!$===$!=$$!!$=$!=$!==$===$==!!====$$=$$$$=========!=====$$!$==$$!$===$===$$=$$$!=$====z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüü÷óòñò÷üüýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòƒ@======!=====$!!==$$====$$===!$!!==!$=$!$!!!!!$==!$!!!!==$$=!=!=!$=$$=$$!$$!$!==!=$!$!!!!$$$$!!!!$!$!!!!$!!!=$!!!!!=$!$!!!!!!!!!!!!!$!!$!!!!!!!!!!!!!!!!!!!! !!!!!!!!! !!!!!! !!  ! !!!!!  ! !! Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   !qªõþþþþþþýÿþþýÿÿýýýýýýýýýýýýýýýæÓK³³K³³·K³³³K·K·³³·³³·³³³³·³³³·³³³·³³³³³³³³³³³¸³¸³¸³¸³¸³³³³¸³³³·³66i666666i66i666i66i666ii666666ii6i6666ii6666666666i6666i66i666666i6i6iii6666i66i6i6666iiiiii66ii666iii66iii6i66666i666666i6i66ii66i666i666ii666i66  &    &  & & (5666666i6ii6i66i6iii6ii6i66ii66i6ii6ii6i66i66i666666i6666i666i6666i6iiii6i6666ii6i6ii66      6i66i6666i6ii6666i6i6i66i66iii66666ii66i66i6666i6i6ii6i6666i66i6ii6iiii6666ii6666i6i6iii666i66666ii66ii66i6i66i666i66i6ii666iii666iii6iii······³·³·³·³·³·········³·³·³·³··³·³··³··³K·³³·K³·KK·KK·KK·K·³K·³³K³³K·K·³K·KK·KK·KKK·KKKKKK·KKKKKKKKKKKKK·KKK·J·JKKJ·J·J·JKWKKKKJ·JJJJJKJJJ·H·JJJKJKJJKJJJJJJJJJJJJJJJJJJJJHJHJGJGHGHGGGGFFFGFEFEKKKKKKKKKKKKKKKKKKK+O2222+þþþþþþþþÿþÿüþüþþþüüüüþþþþþþþþþþþþþþþþþþüüþüüüüóó1‡‡‡‡‡1üüóüóüóööúöööúöúöõöõëöëõëëóóóóóóóóóóóóúóóóóóóðóóóðóðóó*24*44*ððóðóðóðóðóðóðóðóððóðóðððððððððððððððððððÝÝððÝâïðððïÑ133333*ÑØÝØáïÑáïÑÑÑÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÐÏÑÐÑÑÐÑÐÐÑÑÑÑÍצ¦¨+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFFGFFGFGGGGGGGHGHGHJGHGJGHJGJHJJHJHJHJJHJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýýýýÿóó÷úóó÷óó÷úò¬s?!!!!!!!$$!!!!!!!!==$!!$!!!!$!!$!$!!$=!!!$=$!==$!!$$=!!=$!!!=!==$!!$========!!====$$!!!=$!!!$!!!$==!$===$!!!!!!!!$!!!!!======$$!!!$=====$!$=!=====@Æýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü÷߯ƒxC=====$$=CxƒÆß÷üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÉZ=$===!!!!!$======!!$!$!$!$!$$===!$=========$==$=======!!==$!!$$!$$$!!!!=!!!!==$!!!$!!$$!!!!!$!$$!!$==$!!!!!!$!!=!!!!!!!$!!!!!!!!$!!!!!!!!!=!!!$$!!!!!!! !!!!!!!!!!!!!! !!!!!!!!!!  !!!!!!Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóxÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ =}¬íþþþþþþþþþþÿÿüýýýýýýýýýýýýýýýàÓ³·³³³K³³³³K·³³³³³³K³³³³³K³³³³³³³³³³³³³³³³³³³¸³³³³³³³³³³¸³¸³³³¸³¸i666i66i6i66i6i66666i6iiii6ii6i6iiii6i66i66666i6ii6ii6i6666666i666ii66i6ii666i6i66i66i666iii6i6ii6ii6666i66i666ii66666i66i666i6ii66ii6i6666iii666ii  &    & &  && % 6ii666i6i66666ii6i6i666i666i6ii6666i6666i66i666i6666i6ii6i66i66i6ii66i666i6ii6ii6i6666i66i     i66ii6i6i666i6ii66i6i66i666i6i6i6iiii6i6ii6666i6666i66ii66i6i6i666i666666iii66ii66i66i66i6i6i666666666ii66i666666ii666666i66i66i6i66i6i6ii····························································³··K··³·····K·····K······K·K··K·K·K·K·K·K·K·KKK·JKKKK·KK·JKKJKKKKKWKKJKKK·JKJ·JJKJKJ·JJJKJJJJKJKJJJJJJJJJJJJJJJJJJJHJHJGJGGGGFGFFFFFEKKKKKKKKKKKKKKK³K³K+22O22+ÿþþþþþþþþÿþþþüþþüþüüüüüüüüþüþüþþþþþþþþüþüóüüüóóú1‡‡‡‡‡+üüüóüóüööööööýöõöõöõëõëëëëóòóóóóóóðóóóóóóóðóóóðóóóóóóð*Q4*431òðððððððððððððððððððððððððððïððððððððððÑïÝÝÑïØâïÑïÑïá*33333*ÑݰØÑÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÑÑÐÑÍÑÍÑÍÍÍÍÍÎÍÍÍÍÍЦ¨¦­+&&&&&&+³KKKKKKKKKKKKKKK³KFFFFFFFFFFGFGGGGGHGHGJGHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýýýýýýýýýýýýüüÿüúóóóú÷óúóóò¬s?!!!!!!!!$!!!!=!!=!!!!$!$!$$!!!!$!!!!$=!!=!$=!!!!!=!=$!$!!!$==$!$$====$$===!!=$!$=$!$!$$!$$!$!$=!!==!!==!!!!$=$=$$$!$!$$===$$$$$!!=====!$==$====CÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüèÆx@$!!!=$==!!==@===!==xÆèúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßx===$$$=$$==!==!==!=$!$!$!$=!=====!$$!=!!=$!!$!!=!====$=!$$!!!$==!$=$!===$!!!$=$!$$!!==$!!!$!$$!$$!!!=!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!=!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !  !!! !!!! !!  Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿód ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !!  =}ªíþþÿýÿþÿþþþýÿÿýýýýýýýýýýýýýýýæÓ³³K³³³³K³³³³·K³K³³·K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸³¸³³³³³³³¸³³³³666i666i66666i666i6i6i6i666i6666iii6i66i6i666666i6666ii66iiiii6i6i666i6i66i66666i66i66i6i66i6i6i6ii6666i666i6i66i66i6666i66ii66iii6i66i666i66ii6ii66 & D     &( 6i6i6i6i6ii66i666i666iiiii6i666i6i66i6ii6ii66i66i66666i6i6666i666ii666666i6i6i6ii6i66iiii6i66i     6666666i6i6iiiii66i6ii66i66666666i6i66666ii66i666666iiii6iii6i6i6ii66ii6666i6i6iii6i66i6i6i666ii6666iiii6i666i6iii66i6666666666iiiii6ii66i66······························································K··³··K·K····K·K·K·K·KK·K·KK·KKKKKKKKKKKKKKKKK·K·J·JKKJKK·J·J·JKKKKK·JWKJKKJKJKKJKJJJKJKJKJJJJJJJJJJJJJJJJJJJHJJHJHJGJGGHGGGFFGFFFDKKKKKKKKKKKKKKKKKKK+04222+ÿþÿüÿüÿþþÿüþþþüþþþþþüüþüüþüüüþüüüþþþþþþþþþüüüüüó1Q‡‡‡‡1üüüüüüüööõöööõöýöõöõëõëõìëóë÷óóóóóóóóóóóóóóóóóóóóóóðóó*44*441ðóðòðóðòðóðóóðóðóòóðóððððððððððððððððððððÝÝððßèðððððð103333*ÑݰØÑÑÑÑÑÑÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑצ¦­­+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFGFGGGGHGHGHGHGHHHGJHJHJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýýýþÿóóóúóóóúóó÷ò¬m!$!!$$!!!!!!$$=!!!!!!!!$$!==$$!!!!$!!$=!!!!!!=!$$$$!!!=$$==$!!$!=!$!$=!!!$$=$!!$!$=!=!$$===!$=!!$==!=$!!$$$=!$$$$$=$!!===!======!!!!$$$==$!!$=ZáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýòÆZ==$$$==$===$$====!$!!!$=_Æñýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ=!!===!!===$!!!===$$===!===!!!!==!$$===$!$===$!!!!!====$$!!!!!!!!!=!$!!!!!!=!!!!!!!!!!===$!!!!==!!!==!!!!!!!!!!!!!!!==$!!!!!!$!!$!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!!! !! !!!!!  !Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   q¥íþþþþýþýþþþÿÿýüýýýýýýýýýýýýýýæÓ³³³³K³³³³K³³K³³³³K·³³·³³³³·³³³·³³³³³³³³³³³³·³³³¸³³³³³¸³³¸³¸³³¸³¸6i666iii6i6666ii66ii6666iii6i666ii6i6iii66666i66ii66ii6ii6ii6i6i66ii6i6666ii6666666i66ii666iii66i666i66i6i6666iiiiii6i6i6i6666ii6i6i6666iii6i6i66666EDDD     & & i& i66i6i6ii6i66ii6ii66ii666666i6i6i666666666i666i666ii66ii6666i6i666ii6i6ii6666iii666i6ii6i666iii5    66ii6i66666iiii6iiiii66ii6i6666i66i66ii6iii6i66i6i66i6i6666i6i6i66iii6i66i6i66666666ii66i66ii6666666i666i66ii6i66i6i666ii66iii6666ii6i6ii6666·····³··³·³·³··³·³··K·³·³·³·³·K··³··K··K·K·³K·KK·KK·KK·K·K·³K³³³K·K·K·K·K·K··K·KKKKK·KK·KKK·K·K·K·K·K·KK·J·JKJ·J·J·J·JKJKKJKKKKJJJKJKJKWJJJJJJJJJJKJJJJJJJKJJJJJJJJJJJJJJJJJJHJHJGJGHGGGFGFFFFFFFFKKKKKKKKKKKKKKKKKKK+O2222+þÿþÿüÿþÿüÿþþþüüþþþþþþþüþüþþþüüüüüüüüüüþüþüþüüüúü1‡‡‡‡‡1üüüüüóüööööööúöõöõëõìõëöëíóëóóóóóðóðóóúóóóóóðóóóðóóóóð*44*Q31óðóðóðóðððððððóðððððððóððððððððððððððððððÝÝððâðÑðÑðÑð1333331Ñ­°ÝðÑðÑðÑÑÑÑÑðÑðÑÑÑÑÑÑÑÑÐÑÑÏÐÐÑÑÑÑÑÑÑÑÍÑÍר¦ÔÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFGFGGGGGGHGHGJGHGJHGJGHHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýýýýýýýüÿüú÷óóúóóóúóò¬?!=!!!9!!!!!!!!!!!!!!!!=!$!=!!!!!!=!!!$!!$!!$!$!!$!!!=$!=$=$!!!!==!===!=!!$$!$=!$$!!!!!==$!$=!!!$$$$$!!=!==!==!==$!==$$======$!=$!!====!!=Zçÿÿÿÿÿÿÿÿÿÿÿÿÿÿüñ–@$==$$!==!!===!!==$$!$$!$!$===C›èüÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷…=$=$$=!==$$$!$=!$=$!!=$===$!$!!!=$!!==!!=$!$!=$!!!==!!!=$$!!!!$!!!!!!!!!===!!!!$!!$!!!!!!!$=!!$!!!$!!!!!$!!!!!$!!$!!!!!!!!!$! !!!!!!!$!!!!!$!! !!!!!!!!!!!!!!!!!!!!!!!! ! !!!  ! !!!!!!!! ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóx   ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !   qªõþþþþþþýÿþþýÿÿýýýýýýýýýýýýýýýæÓK³³K³·K³³³³³³·K³³³³³³³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³i66i6666i66666666ii66ii6i66666i6i6ii6i66iii6iiii6i6i666i66i6i6ii666i6i666iii6i6i6i6i66ii6i6i66i6666666i66666i6iiii6ii66i6iiiiiii66iii666i6i6i6666iiiEEDED & & E6  & i6 6i6i66ii6i666i666666ii6i6666i66ii6666666i666666i6i66i6666i6ii6i6666i66ii6666ii666i666ii6i6i666iii6666i  666ii666ii666i6i6i666i66ii6ii66666666iiiii6666i66i6i66iii666666i66iiii6666i6i6i6ii6ii6i66666666iii6i6i666i666666iii6i6ii666i6666666iii6iiii6i6i································································K·········K··K·K·K···K·K·K·K·KKKKKKKKKKKKK·KK·J·J·J·JKK·J·J·JKWK·KK·JKKKKK·J·J·J·JKJJKJKJKJJJJJJJJJJJJJJJJJJJJHJHJHHGJGGGGFGFFFFEK³KKK³KKKKK³KKKKKKK+2O222+ÿÿþÿþÿþþþþþüüüüüüþþüþþþþþþþþüüüüóüüüüüüüüüüüüüüó1‡‡‡‡‡*óüóóóüóööúöööööõöõöõöëëõëöóëòóóóóóóðóðóóóóóóóóóðóóóððð134*44*ðóðóðððóðóððððððððððððððððððïððïðïðïððïÑïÝÝèÑïÑïÑáïÑÑ*33333*áÔ°ØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÏÍÑÍÎÍÍÍÍÍÍÍÍÑÍͦ°¦ÉÍÍ+&&&&&&+K³KKKKK³KKK³KKKKK³EEFFFFFFGFGGGGGGHGHGJGHHJGHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýýýýÿóóó÷úóóúóóóò¬so=!!!!!!!!!!$!!!$!!$$$!!!!!!!!$!===!!!!!!==!=!!$=$$=!!!!!!!=$!$!!!=$!=$!$!!$$====$!===!!==!====$$$====$$=====$!!===$=!!!$==!==!$=====$!$=$Zñÿÿÿÿÿÿÿÿÿÿÿÿÿÿò–=$=!==$!$!$=$!==$!==!!==$==$!!!==@…èýÿÿÿÿÿÿÿÿÿÿÿÿÿñx!!!!!=$$=!$$$!!==!!$=$!===$!===$=!!$===$!!=$==!!$=!========$$$$$$!!!!$=!$$!!===$$==$!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!$=!!!!!!!!!!!!!!!!!!!!! !!!!!!! ! !!!!!!!!!!Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    =sªíþþþþþþÿüþþÿÿüýýýýýýýýýýýýýýýàÓ³³K·³³³³³K·K³³³³³K³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³¸³³i6i66666i666i6ii6i666ii666ii6i6i66666666i6ii6666i6ii6666iii666ii6666666666666666i6666i6i6i66i66ii66iii6i666i666666666666ii66iii6i66666666666i6i66666EGD 6ji6 66i& 6i666i6i6ii6ii66i666i666666i666666i6iii6666iii6ii6666i6i6i666i6i6ii6666i6i666ii666i66i666666666i6i6i66 6iiii6i6ii6666666i6i6i666ii666ii666i666ii66666i666i6ii666666666ii6666ii666666iii6i6ii6i66666iii6666i6i666666i66ii6666iii6iiiii6666iii6i666666666···························································K·K·³·K···K·K·K··K·KKKKK·KKK·J·K··K·K·K·K·K·KKKKJ·J·J·KKKKWJKJ·JKKKJKJKJJ·JKJJJKJJJJJJJWKJWKJJJJJJKJJJJJJJJJJJJJJJHJHJHJGHGGGGFGGFFFFDKKKKKKKKKKKKKKKKKKK+22222+þÿþÿþÿÿþÿþþþþüþüþüüþþþþþþþþþþþüüüóüüüüüóüüüüóüüü*‡‡‡‡‡1üóüóüóüööööööõöõöõëõëõìõëë÷ëóóóóóóóóóóóóóóóóóóóóóóóóóñ144*44*óðóðóóóóóðððòðòðððððòððððððððððððððððððððÝÝððèÑðïððÑï*333301ÑݰØÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÔ°¦ÞÍÍÍ+&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFGFFFGFGGGGHGHGHGHHGHJGJHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýýýýýýýýýýýýüüÿüóúóóú÷ó÷úóò¬Žo!!!!$$!!!!!!=$!!!!!!$!!!!$!!$!!!==$!$$!!!!$!!!!!=!!=!!!==!!$!!!!!!!$$!=$=$!!==$==$!==$!!=$!!===$!!$!===$==!=$=$===!==$!$!======!$!!====!$=ZçÿÿÿÿÿÿÿÿÿÿÿÿÿúÆ@===$!$=$!$!==$===!==!!$!$!==$$!!$==!@ÆòÿÿÿÿÿÿÿÿÿÿÿúÆ@$!$$!!!!==!$=$$!!===!==!$==$!$==$!!$$!!=!!=$!==!!=$!==$!!==$====!!!!$$!!$=$!!$$!$9!==$$$!!!!!$!!!!!!=$!!!!!!!!!=!!!!!!!!$$!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!  !!!! ! !Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      =}ªíþþþþþþýÿþþýÿÿýýýýýýýýýýýýýýýæÓ·K³K³³K³³³³·K³³K³³³³³·³·³·³·³³³³·³³³·³³³³³·³³³³³·³³³¸³³³³³³¸³³³³i66666i6i66666ii66i66i6i6i66i66ii66i6i666iiiii6i6666i6i6i6i66i66i6666i6i66i6ii666666666ii6i6i66i66iii666iii66ii6i66666i66ii6i6666iiii6666666i6i6ii6iEDD66ii8i6i &6i6665666iiiii66i6i6iiii666i66i6i6iiii66ii6ii66i666i66i666i6iiiii66iiiii66666i6iiiiiiii6i66ii6ii66i66i6ii666D66666666i6iii6i666i66666666i6i6iiii6i6ii666i6i666iii6i6i6666i6666i6i66i66i6i66i66666666ii6iii6iiii6i66ii66ii66666i6i6i66iiii6ii666iii666ii66666i³··K··K··K·K··K··K·K··K·K·K³·KK·KK·KK·K³·KKK³KK·K·K·K·KKK·KK·K·KK·KKKK·KK·KK·KK··K·KKK·K·KKKKKKKKKKKKKJ·J·KKK·JKJKKKKKKKKKJJ·H·JKJ·JJKJ·JJJ·HKJKJKJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJGJGHGGGGGFFFFFFFFKKKKKKKKKKKKKKKKKKK+22222+ÿüÿþÿþÿüÿüþþüþüüüþüüüþüþþüþþþþüüüüüüüóüüüüüüüüüü1‡‡‡‡‡*óóúóóüóööõöööõöõöõöõöõööëöóöóóóóóóóðóóðóóóóóóóóóóðóðóð1P4*44*ðððððððóðóðóðððóðóðóððððòððððððððïððïððððݰðïÝðÑðÑðÑð*3333M*ðØÝØáïÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÑÑÑÑÑÑÑÑÑ̦¦­ÍÐÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFFFGFGGGGGGGHGHGJGHJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýýýýÿ÷óóó÷óóúóó÷òÓo!!!!$!!!!!!!!!!!!$$!!!!!$!!!!!!!!!!!!$!!$!$$!!$$==!!$@=!$!!=!!$$=$$=!!===!!!!===!!!$!!$$!$=$!$!!==$=!=!!$$$$=!!!$$!!!$$=$!!$!==!=$!!!Zßÿÿÿÿÿÿÿÿÿÿÿÿÿçu!=$$==!$!$==!$=$!!=!$===!$===!!=====$$!$==uÎüÿÿÿÿÿÿÿÿ÷›@====$$=$$==$!!====$!===!!$=!!$!!!=!==$$$=!==!!==!==!!!!!!!!!!!!=!$=!!!!!!!!!=!!!!!!!$!!$!!!$$!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!@ZZ[Z@!! !!!!!!!!!!!!! !!! !!!!! Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ =qšíþþþþþþþþþþÿÿýüýýýýýýýýýýýýýýæÓ³³K·³K³³K·³³³³³³³³K³K³³K³K³K³³³K³³³³³³³³³³³³³³³³³³³³³³³³³¸³³³³³³6ii666666666i6666i6iii6i66i6666iii6i6i6i6i6i66i6iii6i666ii66iiiiii6i6666i6666i6i6i66i6i6i66ii6i66i6666i66i6i6ii66666iii6i6i66i6ii6i66iii6ii666iiiii66EGEiiiEE8iii656666ii6ii6i66i6iii66i666i6i6iiii666ii666i6666i6i666iiii6i6666ii6i6ii66iii66i66ii6iiiiii666iiiii66i6i66i666i6i6D66i66i66iiiiiiiiii6i6ii6ii6666666666i66i6i6ii6ii666i666iii6ii666666i6i66666ii666i66i6i6i6iiiiii66iii6iii666i66i6i666iiiiii66i6iii66i66i6iiii66i6··········································³··³··³··³·······³·³·³·³····K··K··K·KKKK··K·KK·K·KK·K·K·KK·KK·JK·KKKK·K·J·KKJ·J·KKKJ·J·J·KKJKJKKJJ·JJKJJJKJKJJJJKJJJJJJJJJJJJJJJJJHJJJHJGJGHGGGFGFGFFFEKKKKKKKKKKKKKKKKK³K+22222+þþÿþÿÿüÿþþþþþþþþþüþüüüüüüüüüþþüüüüüüüüüóüüóüüüóü*‡‡‡‡‡1úóüóüóúööööööõöõöõöõëõëõëõóëñóóóðóóóðóððóóóðóóóóóóóððð*44*4Q1ðóðóðòðððððððððððððððððððððïððïðïÑÑïÑÑÑÑÑÝÝÑÑØáðÑïÑÑÑ*333331ÑÜÔßÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÍÑÍÍÑÍÍÍÍÍÍÍͦ¨¦ÐÍÍͦ+&&&&&&+³KKK³KKKKKKKKK³KKKEFFFFFFGFGFGGGGGHGJGHJGHJGHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýýýýýýýüÿüúóúóú÷óóúóé¬l!$!!$!!!!!!!!$!==$$!!$$!!!!!!!!!!!!!!!!!$=$!$$==$$!!$$$!$==!!!!==$$$==$!!!=$!=$!!=$$!$!!!==!!$!!!==!==$!!!=!$!!!$$$!!!!$=$!!!!$@ÎÿÿÿÿÿÿÿÿÿÿÿÿüÌ@==!=$!==!===!$!=$!$!====!=$$!!====!$$===!@–òÿÿÿÿÿÿòƒ===$=!!$==!!$==!!==!!====!!$$!!$!====!!==!$!!!!!=!!!!!$$!!$$!!!!!=!$=$!!!!!!$!!!!!!!!!!$$!!$!!!=!$!!$!!!!!$!!!!!!!!!!!!=!!!!!!$!!!!!!!! !$!!!!!!!!!@zÎóýÿ÷á–@! !!!!!!!!!!!!! !!!!!! !!!! Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ !! p¥íþþþþþþþþþþýÿþýýýýýýýýýýýýýýýàÓ³³³³·K³³³³K³³K³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³66ii66iii6i6iii666ii66i6ii666iii6666666i66iiiii6ii666666i66ii6i66i6ii666666i66iii6666666666i6iii66iii666ii6ii6i6i6i66ii6i6ii66i6i66i6ii6ii6iii6666666DDD666E66i666iii6666i66i6666ii6i6666i6i6i6666iii6i6666ii6iiii666i66666666i6ii66ii66ii6ii6i6ii6i66ii6666iii6i6i66666i6666iii6D i666i66iii66666ii6i66i6iiii666i66i6666iiii6i66i6i6ii6i666ii6i6iii66666i666666ii666i6i6i6iii6666i6i66ii6666ii6i66iii6iii6666666i6ii6666ii6666ii6i············································K··³··K··K·K·³·KK·K·KK·KK··K··K·KK·K·K·K·J·K·J·K·KKKKKK·KJ·KKKKKJK·JKJKJKJ·JKWKJK·JJKJJKWKJ·JKJJJKJJKJKJKJJKJJJJJJJJJJJJJJJJJJJJJHJHJHJGHGGGGGFFFFFEFEKKKKKKKKKKKKKKKKKKK+22222+þÿüÿþþÿýÿüþþþþüþþþþþüþþüþüüüþþþüüóüüüüóüüüüüüüüü14‡‡‡4*óúóóóóóöëöëööõëõöõöõöõöõöëúöóóóóóóóóóóóóóóóóóóóðóóóóóó134*44*ñóðððððóóðóððòðððððððððððððððððððððððððððݰððÝèïðÑðïð133333*ÑØÝØïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÑÑÑÑÑÑÑÑÔ¦°ÞÍÑÍÐÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFGFGFGFGGGGGHGHGHHGHJHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýýýýýýýýÿóóóóóóó÷÷óóò¬o!!!!!!!!!!!!!!!!!!!!!$$!!!!!!!!!!$!$!!!$!$$=!!!!!!!!!====!==!!$!!!!!!!=!!$=!!!!=$!$$!!===$===!!$!!==!$$=!!!=$$$$$!$=====!$====!!=====@Éþÿÿÿÿÿÿÿÿÿÿÿ÷–!!!!==!!$$=$$==!==$===$!!$!!$=$=!$!$$!==$$!!$===záþÿÿÿè‚!!==!!!==!!$!!!!==!$!!$!$$!$$=$$!!!!$=$!$!!=$!!!!!$=!$$!=====!!!!$!!$!$$!!!$!!!!!!!$$$!!!!$!=!!!!!=!!!!!!=!!!!!!!$!!!!!!!!!!!!!!!!!! !$!!!!!!!!!@ÆüÿÿÿÿÿÿýÎY!  !!!!!!!!!!! !Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  qªíþþþþþþþþþþÿÿþýýýýýýýýýýýýýýýæÓK³K³K³³³K³³³³³³³³K·³K³K³³³·³·³³·³³³³·³³³·³³³·³³³³³³³³³³³·³³³³³³³i66i666i6ii6ii66ii6666i6i6i6iii6iiiiii66iii66i6i66ii6iii6i6i66666iiii6i6i66i6i6iii6i6i666i6ii66i6i6666ii6ii6iii6i666666i66i6i66ii6i666iiiiii666i6i66iEEDDi66i6i66i666iii6666i6ii6i666ii6iii6ii66i6ii6ii66ii666i6i66666i66i6i6iii6i66i6i6i6i66i6ii6iii666i6iiii6ii6iii6iiiii66i66Dii6i6ii6ii6666iiiii6666iii666ii6i6i6iii666666ii66i66i666ii6666iii6i6iii666iii6iii6i6i6i66i66i6i66i6i666i6i6i66iiiii6i66i6iii66i666ii6ii6i6iii666·K··K··K··K·KK·K··K··K··KK·KK·³K·KK·KK·K·³K³·K³KK³³³³K·K³K·K·K³·K··KKK·KKKK·K·K·KKKKK·K·K·KKKK·K·KJ·J·J·J·KKKJ·J·J·J·JKKKJ·JJJ·J·JKJKJJJJJJJJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJGJHHGGGGFGFFFFFFEKKKKKKKKKKKKKKKKKKK+22222+þþþþÿÿüÿþþþþþþþþþüþþþþüüüüþüþþüüüüüüüóüóüóüüüüúü*‡4‡‡‡1óúóüóúúëööööëõöõöõöõëõëõëöóëóóðóðóóðóóóóóóðóóóóóóðóóóó*44*421óððóðòðððððóððóðòðððððððððððððððððððïðÑðÑÝÝÑïØèðÑðÑðá*333331ÑݰØÑÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÐÑÏÐÑÐÑÑÑÑÑÑÑÑÞ¦£ÔÑÎÐÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFFFGGGGGGGHGHGJGHGJGHJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýýýýýýýýýýýýüüÿüóú÷úóúóóú÷ò¬ŽC!!!!!=!$!!!!!!!!!$!!!!!!!$!!!!!==$!!!!!!!!!!!$!!!$=!!==!=!!$!!!=!!==!!!=!!=!!$!===!!==$!!!!!!=!!!$!!==$!!!!!==$!!$==$!!!$====–üÿÿÿÿÿÿÿÿÿÿÿóx$$=!$!$!$======$$!!==$!$!!$!$$!==$!!!!!==$=$!!==$ZÌüÿáx$!!!!=$===!!!!$$$!!!!!=$!$=$!$=!==!!!!!!=!!$$!!!!!$$$!!=!!==$!!!!$!$$$!!!!!!!!!!!!$$=!!$9!!!!!!!!!!!!!!!!!!!!!!!$!$!!!!!!!! !!!!!$$!!!!! @Æÿÿÿÿÿÿÿÿÿÿá@!!! !!!!!!!!!!! ! !!Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!!    $p¥íþþþþþþþþþþüÿÿýýýýýýýýýýýýýýýæÓ·K³K³³K·³K³K³³K³³³³³³³·K³K³K³K³³³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³666i6ii666i666iiii6i6i6666i6i6666666i6i6666i66ii66i6i66iii6i66i666iii6iii66ii66i66iii6i6ii6ii66ii6666i66i666i6i6666i6iii666i66ii6iiii66666ii6ii6i6666EGDD6i6i6i6ii66i66666iiii6i66iii6ii66iii666666iii6iii6i6i66i6i66i6i6ii66ii6ii666ii66iii66iii66i66i66666i6iiii6iiii6i666ii6iD i6i6666i6ii6ii6ii6i6iii6i66i66666ii66i6i6ii666ii6i6iii66ii66i6i666i66iiii6i6i6i6i666i6666ii66i6i66ii6666iiiii66666i6666666666iiiii66i66i66666ii6·········································K··³···············³·³·³K····K··K·K·KK·KK··K·K·JKK·K·KKKK·J·KK·J·J·J·JKKKKKJ·J·J·JK·J·JKJ·JJ·JK·J·JKJKJKJJKJKJJKJJKJJJJJJJJJJJJJJJJJJJHJHJGHGGGGGFGFGFFFFK³KKK³KKK³KKK³KKKKK+02222+þþÿþÿüÿüþÿüþþþþþþþüþüüþüüüüüüüþüüüüóóóóüüüüóüóüü1‡‡‡‡4*úóúóóúóöëöëõëõöõöõëõöõëõëëóëòóóóóóóðóóðóóóóóóðóóóóðóóð134*4Q*ððóðððóðòððððððððððððððððððððïðïðÑÑÑÑÑðÑðݰïÑÝÑÑïÑðÑï10333M*áÔÝÔÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÍÑÍÍÍÍÍÍÍͦ°¦ÍÍÍÍÍͦ+&&&&&&+K³KKKKKKKKK³KKKKK³EEFFFFFFFFGGGGGGHGHGJGHGJHHHJHHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýýýýÿ÷óóóó÷ó÷úóóò¬s?!!!!!!!!!!!!$!!!!!!!!!!!!!!!$!!!!!$!$!!$!!!!$$!!!$!!$!!!$!!!!!$$$$!$$!==!!=$!!$!!$$=$$=!!=!==!!=$$$==!$$!==$!$=!$$$$!$==!=!!$=!=!$!!xóÿÿÿÿÿÿÿÿÿÿÿñx$!$=!!$!$!=!!=!!$$$!==$!====$=$$$===$$====$=$$!=!!==@ÆÌ]!$==!=!$$!!$====!$!====$!!!!=!!!$=!!==!$=!$$==!!=$$=!$!!!!$!!=!!$!!!!$!!!!$$!$!$!$!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!! !!!!!!!üÿÿÿÿÿÿÿÿÿÿýÆ!!!!!!!!!!!!!! Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  ! =sªíþþþþþþþþþþÿÿüýýýýýýýýýýýýýýýàÓ³³³³³K·³³K·³³K·³³K³³K·³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³i666i66i6i666i66iiii6i6i66i66i6iii666iiiii66i666iiiiiii6666i66ii6i6i66666i6i666i6i666ii66iii6ii66ii66i66i6ii66i66666i666i66i666iiii666i66iii6i6i66i66DDDDDi6i666i66ii666666i66i6iiii666ii6i6iii666i6ii66ii666i66i6i66ii6iiiiiiii66ii66i6i666iii6ii666i6ii6ii666ii66i666ii6iii66iiD66ii6i6iiiii666iii6666iiiii6i6i666iiii66i6iii6iiii66i66666i6i666i66i666666i666i6iiii6i6i6666666i66i66i66ii66i66iiii666i666i6i6ii66ii66i6i6ii6ii6··K·······································K···K·K·K·K···K·K·KKK·K··K···K·K·K·K·K·K·J·K·K··KKKKK·KKKKKKKKKKKKJK·J·J·JKKJKJKKJKJ·JKJ·JKJJJJJJJKJWKJKWJJKJJJJJJJJJJJJJJJJJJJJJJHJHJHJGHGHGGGFGFFFFFDKKKKKKKKKKKKKKKKKK³+22222+þþþþþÿþþÿüÿþþþþþþþþþþþþþþþþüüþþóüüüüóüüüüüüüüüüú*‡1‡‡‡1óüóóüóúëööööëõöõöõöõëõëõëëóëóóóóðóóóóóóðóóðóóóóðóóóóóó*44*321óðóòðóðððóððòððððððððððððððððððððððððððððÝÝððØèÑïððÑð*333001ïܰØÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÑÑÑÑÑÑÑÑÑÑÑÔ°¦ÞÑÐÑÍÑÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKEEFFFFGFGFFGGGGGGGHGJGHGHGJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýýýýýýýüÿüóúóúó÷óóúóò¬s?!!$!!!!!!!!!!!!!$!!!$!!!$!$$$=!!===!!!!$$!$!!!!!!!$!!!!!!$!!!=!!$==!=!!==$=$!!==$!!!!!==$!!$!!!==$==!==$!!!!!!$=$!!$$!!===!!!$@áÿÿÿÿÿÿÿÿÿÿÿñZ=!!=$!!==!=!=$!!======$=$$$=!$==!!=!$$=======$!!$=$=$=$!==$=$=$!$====$!$$===$!$!!!!!$!$=!$==$!!!==$=$!$!=!!=!!!!!!!!!!!$=$!!!$!!!!$!!!!!!!=$$$$!!!!!!!!$=$!!!!!!!!!!!!!!!!!! !!!!! !!!!!!!!!!!!!!!@ßÿÿÿÿÿÿÿÿÿÿÿÿñ_!!!!!!!! !!!! ! ! Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÃüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!! !!!qªíþþþþþþþþþþýÿÿýýýýýýýýýýýýýýýæÓK·K·K³K³³³K³³³K³·³K³³³K³³·K³³K·³³·³·³³·³³³·³³³³³·³³³³³³³·³³³³³³³6iiii6666iii666i6i66iii66iii6i66iii6i6ii6i666ii6i66ii66666i66i6ii6i6ii6ii6ii666ii6iii666i66ii6666i6i6666i666i6i66i666iii6666666ii66ii66ii66i6i66i6666DEDDD8666iiiiii6ii66i6i666iii6i66i66iiiii6iiii66i6iii66ii6i666666iii6ii666i6666iiii6ii6i66ii6i66ii6i66i6ii66iii6i66ii6i6i666iiDi6i6i6ii66iii66ii6ii6i6i6i6iii666ii66i6i6666i6i6i6i6i6i66ii6ii66iiii6i6i6i6iii6iiiiiii6666ii6i6i6ii66iii66i666ii666iiii66i6ii66i666i666i66i6i666·····K·K··K·KK·K·K·K·K·K·K·K·K·K·K·K·K·K·K··K·K·K·K·K·KK·K·K·K··KKKKKKKK·KK·K·KK·KK·KKKK·KKK·J·KJ·J·J·JKKKKJ·J·JKJKKJ·J·J·H·J·JJJKJKJ·JJJ·JKJJJJJJJKJJJJJJJJJJJJJJJJJJJJJHJJHJHJHGJGHGGGGGFFGFFFFFKKKKKKKKKKKKKKKKKKK+22222+þþþþÿþþÿþÿüþüþþþþþþþþüþþþþüþüþüüüüüóüóüóüüóüüüüü1‡‡‡‡4*óóóüóóóöëöëõëööõöõëõëöìõëëóòóóóóóóóóðóóóóóóóóóðóóóðóðó*44*4Q*ðóðóðððóðððóðððððððððððððððððððððððïððððÑÝÝÑðÝÑïðÑïÑð*33M33*áØÔàÑáïÑðÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÏÑÐÑÑÑÑÑ̦¦­ÑÍÑÍÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFGFGFGGGGGGGHGHGHGJGJGHHJGJHJJHJHJHJJHJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýýýýýýüýÿ÷óó÷ó÷úúóó÷ò¬Ž?!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!$$!!!!$=!$!!=!!=!!!!$!!!$!!!=!!!$$!!!$$!!!!$===!!!!$=!$$$!!!!!!$=$$=!!!!$!$=$!$=$!=!===Ìþÿÿÿÿÿÿÿÿÿÿò]$$!$$$$!=!$$!$!$!$=$!!!!!$!!=$!==!$$$=$$$!!!!==!==$!!===$!!!$!$=!!$!!!!!=!!!!$=$$!!$=!!!$$!!!$!=!!!!$$!==!!$!!$$$$$!!$!!!$==!!$!!$!!!$=!!!!!!!!!!!!!$!!!!!!!!!!!!!!!$!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!Zóÿÿÿÿÿÿÿÿÿÿÿÿú‚!!! !!! !Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!qªíþþþþþþþþþþÿÿýüýýýýýýýýýýýýýýæÓ³K·K³K·K·K³K·K³³³K·³³³³³³K³³³³³³³³K³K³³K³K³³³³³³³³³³³³³³³³³³³³³³iii66i66iii6i6i666i6iiiiiiii666666i6ii666ii6666i6i6ii66i6i6i6i666i6666iii6i6ii6i666ii66i66666i6666ii6iiii666i66i6i666ii6i66666666ii6iiii666i6ii6i666iDEDD$i66iiii6i6iii6ii6ii66ii6i66ii666666i66iiii6i666i6i6ii6i666ii6666666i6i6ii66i66i6iiii6i6i666i66666i6i6i6i666i66ii6i6i666ii6DDD6666i66i6iiii6ii666i6iii66ii666i666ii66i6i66i66i6ii66iii6iiii666666iiiiii6ii6666ii66666iiii666i666666666i6ii6i6i6i66i6ii6iiii6ii6i6ii6i666i6iii6························K·³···K···········K··········K·····K·K·K····K·K·K·K·K·K··KK·K·KKK·KK·K·J·KK·J·KK·KK·JKKK·J·J·JKKJKKKJ·J·KKJKJKJ·JJJJJKJKJKJJKJJKJJJJJJJJJJJJJJJJJJJJJHJJHJGJGHGGGFGFFFFFEKKKKKKKKKKKKKKK³KKK+22222+üþþüÿþþþþþþþþþþüþþþþþþþüüüþüüþüüüóóóóüóüüüüóüóüú*‡‡‡‡‡1úúóóüóúöëöëööõöõöõöõëõëëëëóóóóðóóóóóóðóóðóððóóóóóóóðóð*44*341òðððóðððóððððððððïððððððððððððððïðïÑÑïÑÑÑݰïÑØèÑÑðÑðÑ*303331ÑØÝØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÐÑÑÍÑÍÑÍÍÑÍÍÍÞ¦°¦ÍÐÎÍÐÍÍÍ­+&&&&&&+³KKK³KKK³KKKKKKK³KEGFGFFFFGFGGGGHGHGHGJGJHJHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýýýýýýýýýýýýüüÿüóúó÷óóóú÷óò¬Ž?!!!!!!! !!$$$$!!!!!!!!!!!!=!!!!!!!!!$=!!!$$==$!!=$!=!!!$!$!!!$!$!!!!!=$!==!$$$!!!==!!!!$!=!!!$$!!$=$!!$$!!!=!=$!!!!=$=$$z÷ÿÿÿÿÿÿÿÿÿÿó_=!!$$!!!!!==!$!!!$$!!!==!=!!$=!!!!$=====!!!!!=====!!!!$$$!!!=!!!=!=$!=$$!!!$$!!!==$$!!$$!$$!=!$!==!=!$!!!=!!!==$===!!$!!!!===$!!$$$$!==!!!!!!!!!!!!!!!=!!!!!!!$!!!!!!!!!!!!!!!!!!$ !!!!!!!!!!!!!!!!!!!! !!![ýÿÿÿÿÿÿÿÿÿÿÿÿþÆ! !! !!!!!!Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   ! !!!sªíþþþþþþþþþýýÿþýýýýýýýýýýýýýýýæÓ³³³K³³³³³³³³³·K³³³³K³K³K³³·K³K³K³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³i66ii6i66666i6666iiiii66ii66i66i6666i666i66i6i6i6i6i6i6i66i66i66666i66i6ii6iiii6666ii66ii66i66ii6iiii6i6iii66666iii666i6666i66iiiii6i6ii66666ii66i6i6DDD666ii66i6666666i6i6iii6ii66i6i6iiii66i6i6ii6i6666iii66666i6iii6ii6ii6i6iiii6ii66666ii6i66ii66ii6i66i6666ii666ii66i6ii666i6iDDD6iii66iii6i6iii666ii6ii66i666666ii6iiii66iii6i6i6666i66ii66i6ii66i6iii6ii6ii6i6iii6ii6i66ii66iiii6ii6iii66iii6i6i66ii6i66iii6ii6iiiii6iii6iiiii6·······K··················³·K··K···K·······K····K··K···K··K···K·K·K·K·K·K·K·KKK·JK·KKKK·KKKKKKK·J·J·JKKJKKJ·J·JKWKKJ·JKWKKKJKKKJJJKWKJ·HKJKJKJKJKJKJJJKJJJJJJJJJJJJJJJJJJJJHJJHJHHJGHGGHGGFFFFFFFFKKKKKKKKKKKKKKKKKKK+22222+þþÿþÿþÿÿþÿþþþþþþþþüþþþþþþüþüþüüüüüóüüóüüüüóüüüüü14‡4‡4*óóüóúóóöëööööúöõöõëööõëöëëóõóðóóóðóóóóóóóóóóóóóðóóóóðó*43*43*óðóðóððóððòððððððððððððððððððððððððððððððÝÝðïÝèïððïðÑ13333M*áØ¨ßÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÑÑÑÑÑÑÑÑÔ¦¦ßÑÑÑÍÑÍÐͦ+&&&&&&+KKKKKKKKKKKKKKKKKKDEFGFFFGFGFGGGGGGHGHHGJGHHJGHJGJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×þýýýýýýýýýýýýüýýÿúóó÷úóúóóóúò¬s?!!!!!!!!!!!!!!!!!!!!!!!!$!!!!=!!!!$$!!!!!!!=$!!!!!!!!=$!!!$=!$!!$!!$!$!!!$$!!$!!!!!!$!!!!$!$$!!==!$=!!!!$==!!==!$$==!$!==$$$!!!!@áÿÿÿÿÿÿÿÿÿÿüz=!!$=$$$$$=!==$!$$!!$=!$$$!$==!!===!!=!!$!!$!=!!!!=!=$!$===!!!!$!!!!=!!!$!!$$!$$!!!!!$===!!!=$!!!!!==!!!=$!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!!!!!!! !!!!! !!ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ =pªíþþþþþþþþþþÿþÿýýýýýýýýýýýýýýýàÓK·K·K³K³K³K³K³³³³K³³³³³³³³K³·³³³³K³³³·³·³·³³³K·³³³·³³³·³³³·³³³³³6iiiii6i6ii666i6i66ii6ii6ii6i66i666ii6iiiii6iii66i6i666iiii6iiiii66ii6666666666i6ii6ii6iii66iii66i666ii6i6iiiii6iiii666i6iii6i66i66ii66iii6i66i6i6i66GGEDDii6iii6ii6i6ii6i666i6i666i66ii6iiiiii6i66i666iiiii6iiii6i6ii66i66i6i66666ii6i6ii6666666i6i66i6i6ii66i66iii66i6i66666iiii66iDi666i66ii66iii6i6i6666iii66i6ii6i666ii6ii6ii6i6666i6i666ii6i6ii6i666i66i66666i666ii6i6i666i6i66i6i6iiiii6ii666i6i66i666i66ii66i6ii6i6iii6i6ii6iiK·J·K·K··K··K·K·K··J·KK·K·K··K·KKK·KKK·KKK·K·KK·K·KK·KK·KK·KK·K·KKKKK·KK·KK·K·KKKKKK·KKK·J·KKKKJ·JKKK·J·J·JKJKKKKKKJKKJKJWJ·JH·J·JJJJJJKJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJGJGHGGGGFGFGFFFFDKKKKKKKKKKKKKKKKKKK+22222+üÿþÿþþüÿüþþþþþþþþþþþþþþþþþüüüþüüóüóüóüüüüüüóüüúü*‡‡‡‡‡1úúóüóúúööõöööõöõöõöõëöìõëëóëóóóóóóóóóóðóðóóðóóóóðóðóóó*44*431ðóðóðóðððððòððððððððððððððððððððððððððððïݰÑðÞèÑðÑðïá*M33001ïݰØÑÑÑÑðÑÑðÑÑÑÑÑÑÑÑÑÑÑÏÑÏÐÑÏÐÑÑÑÐʰ¦ØÍÑÍÑÐÍÍÍÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFGFFFFFGFGGGGGGHGGHGHGHGJGHHJHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýýýýüýüüþüó÷óóóóóúóóò¬s?!!!!!!!!!!!!!!!!!!=!!$$!!!!!$!!!=!!!!!!$!!=!!!$!!==$$!$!=!!$$!!!!!=!!!$=$!!$!!!$!!$!=!$$!!!=!!!!!$!!!!==!=!===!!!!==$!!!!–üÿÿÿÿÿÿÿÿÿÿ–=$$!!!!===$==!!==$!!$!!=$!!$$!!$$$$==!!!!!!$$$==$!=!!!=$=!$$!!!!!!!$!$!!!$!!!!$!!=!$!==!!!!$=!!$$!=!$=!!!!!==!$!!=!!!!!!!!!!!!!!=$!!!$$!!!!!!!!!!!!!!!!!!$!$!!!!!!!!!!!!!!!!!! !!!!!!!!!!!  !!!!!Z÷ÿÿÿÿÿÿÿÿÿÿÿÿú–!!!!!  !!!!Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !   !p¥íþþþþþþþþþþýÿýýýýýýýýýýýýýýýýæÓ·KK·K·K³K·K·KK³K·K³K³³·K³³³³³·K³³³·K³K³³K³³³³³K³³³³³³³³³³³³³³³³³ii666666i66ii6i6iii6i6i6iiii6i6i6i6iii66666ii6i66i666iii66i6i66ii6iii6i66i6i6iiii6i666666i6ii66i6i6iii6iiiiii66i66iii6i6i66ii6ii6i6i6iii6i6ii6666i6i6FDIED!666i6666666ii666i6i6iiii666iiii6ii66ii66i6i666666iiiii6666iii6ii6iiii666ii6ii666i66i6i6i66iii6i6ii6ii6666i6ii66666i6i66666i 6i6ii6ii6666i6iii6ii66ii6ii6i66ii66i6iii6i6ii6i6iiii6iiii6i6iii66666ii666iiiii6i66666i6iii66ii6i66666iii6i66i6iiii6i6i6i66ii6i6i6i6ii6iii66ii6i6·························K···············K···K·K·K··K·K·K·K·K·K·KK·K·K·K··KKKKK·K·K·KKK·KKKKKK·KKK·J·J·J·JKK·J·JKJ·J·J·J·KKKJ·JKJKJ·JKJKJKJJWKJJKJJJKJJJJJJKJJJJJJJJJJJJJJJJJHJHJHJHGJGGGGFGFFFFFFK³KKKKK³KKKKK³KKKKK+22222+ÿÿþþþÿÿþþþþþþüþþþþüüþþþüüþüüüüüóüóóüóüüüóóóüüüóü14‡4‡11úóóúóóóööõöööõöõëõëõìëëõëëóëòóóóðóóóóóóóóóóóóóðóóðóðóð133*441ñððððððòðóððððððððððððïðððððððïððïÑÑïÑÑÑÑÝÝÑðèÑïÑïÑÑÑ103M33*Ѩ°ØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÎÑÑÑÍÑÍÑÍÍÑÍͦ¦°ÍÍÍÍÍÍÎÍÐÍœ+&&&&&&+K³KKKKKKKKKKK³KKK³DFFFFFFFGFGGGGGGHGHGJGHGJHHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýýýüýüýýÿúó÷úóúóúó÷÷ò¬}?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!=!!!!!!!!!!!!!!!!!!!!!==!!!$!$!!!!=$!!!!$!=$!!!=!!!$!!$!$$$$$!!!$==!$$=$!!!$$!ZñÿÿÿÿÿÿÿÿÿÿÌ=!==!$!!$$!!=$!=!!$$=!$==!$==!$==!!=!!$!!$!$$!!=!!!$$!!=$!!!!!$!!$=$$$$$$!$!!$=$$!=$$$!!!!!!$=$!!$!!==!!!!=!!!!$!!=!!$!$!$!!$!!!!!=!!!!!==!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !@áÿÿÿÿÿÿÿÿÿÿÿÿñ_!! !! !  !!ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ =qªíþþþþþþþþþþÿþÿüýýýýýýýýýýýýýýàÓK·³K·³³³³³³³³³³³³³³³³³K³³³K³³K³³³K³³³³³K·³³K³K¸³³³³³³K³³³³³³³³³³6iiiiiii6i66i66i66i6ii666i66iii666i6666i6iii66i66i6i66iii6i6ii6ii6i6i6i666iiii66iiiiii66iii6ii6ii6i66i66ii6i6i6iii6i6i6iiiiii6iiii6i6i66iiiiiii6i6i66DGE666i6ii6666iiiii66ii666ii6i6iiii6i6i6iiiiiii6iii6ii6ii6iii666i66i6666i6ii66666ii666666ii6i6i6i6i6i6iiiiii66666i6ii6ii6666i6DD6ii6ii66iiiii6i6i6666iii66666i6ii666i66i666i6i6i66i6i66iii6666666ii6ii66666i6ii6i666ii6i66ii6iiiii666ii6ii6666666i66ii66ii6i6ii6i6ii6i66iiiiiii6········K·····K············K··K··K··K··K··K·K·K··K·K·K·K·K·KK·K·K·K·K··J·K·K··KKKKKK·KKK·KK·KJ·KKKKKKKKKKKWKJKJ·JKKJ·JKKKJ·JKJ·JKJJ·JJKJWKJKJKJKJJKJJJKJJJJJJJJJJJJJJJJJJJJJHJJHJHHGHGGGGFGFFFFFEKKKKKKKKKKKKKKKKKKK+22222+þüÿþþÿþþþþþþþþþþþþþüüþþüþüþüþüüüóüóüóüüüüüóüüüüü*‡‡‡‡Q1óüüóúüúööööëöõöõìöëõëõëõëöóëóðóóóðóðóóóóóóðóóóóóóóóóóó*34*3P1óóðóðóðððððððððððððððððððððððððððððððððððÝÝðððáðïðïðç*330M3*ïݰØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÔ°¦ÞÑÑÑÑÑÐÑÍÍÍÍ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFGFFGFGGGGHGHGHGJGHJGJHHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýýýýýýýýüýüýüüþüúóóúóóóúóóò¬?!!!! !!!!!$$$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=$!!==!!!!!!!$=!$=!$=$!!$$!$!!!$!!=!!!!!!!$$!!=$!!!!!$!ÆýÿÿÿÿÿÿÿÿÿñB!=!=!!$!$=!!=!$!!!$!!=$!!$$========!!!!!!!$=!!!!!$!!=!!!$=$!!!!=$!=====!=!!!$!!==$$==!!$$!!!!===!!!!$!==!!!!!$!$$!=$!$!!$!!!!$!!!!=$$$!!!$=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!…ýÿÿÿÿÿÿÿÿÿÿÿÌ@! ! !!!!!!!!! !! Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !! !$}ªíýþþþþþþþþþýÿþýýýýýýýýýýýýýýýæÓK·K³·K³K·K³K³³·K³K³·K³³·K³³³³·K³³³³K³³³³K³³·³·³³·³·³·³³·³³³·³³³³i66ii66iiiii6i6ii66i6ii6i6i6i666i6i6iii6i666i6i6i6ii6i666i666ii666ii6i6ii6iiii66i6i66i66666ii6ii66i6ii6ii6666666ii6iiii66i66i6i66666ii6i66i666ii6i6iiDDDi6iiiiii6i6ii6i6ii666i6ii666ii6i6i6ii666ii66iiiii6666i6i666ii666i66i666666ii6ii6ii666i66i666i666666ii6i6iii6i66iii66i66i666D i6i6i66i6i6666i66i6ii6i66iii6i6i6ii6ii6i6ii666666i6iiii6ii6666i6iii66666i6ii6i66ii6666i6i6i6i6i66ii6i66iii6i6iiii66iiiiiiiiiii6i66i66ii6i666iiiiK·K·J·K·K·KK·J·K·K·K·K·K·K··K·K·K·KK·KK·K··K·KK·KKK·K·KK·K·K·KKKKK·KKKKK·KKK·KKK·KKKKKKKKKJKJ·JKKKJ·J·JKKKKKKK·JKKWKKKJKJKJKJJJJJJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHHJGHGJGGGGGGFFFGFFDKKKKKKKKKKKKKKKKKKK+22222+þþþþÿüþþþþþþþþþþþþþüþüüþüüóüüüüóóóüóüóüüóóüóüüüü1‡4‡‡‡*óóóóóóóööõööëõëöëõëöëõëöëöóëòóóóóóóóóóðóóóóóóðóóóðóóðó*43*43*ððððóðððóððððððððððððððððððððððððððððïððïݰðïßðÑïÑïÑï*3M330*áÔ°ÝÑïáÑïÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÐÑÑÑÑ̦¦­ÐÍÑÍÍÍÑÍÍÐÎÍ+&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFFGGFGGGGGGHGHGJGHGJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýýüýüýüýýÿúóóúóóúóó÷÷ò¬Ž?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=!!$!!!!!!$!!!!!!!!$$!!!!!!!!!!!$$!$!!=!!!$$$!$!!!$!$$$!!!$$!$$!$!!!!$=!!!$$$!Bñÿÿÿÿÿÿÿÿÿý‚=!=!$!$!!$!!!$!!=$!$=$!!!!=$!!!$!$!!!!$$$!!$$!$$==$$!!!!=!!==$!!=!!!!!!!!==!!!$!!$!!!=!!$!!!!!$!!!$!!!$=!!$$!!!=!!!$!!!!$$!!!!!!$!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!@ÎÿÿÿÿÿÿÿÿÿÿçZ   ! ! !!–ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏßÑßÏÏÏñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷áÏÏÏÏÏÏÏÏßááÏÏÏÏÏÏÏÏÏÏÏÏÏßÏÏÎ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ q¥íþþþþþþþþþþÿþþýýýýýýýýýýýýýýýàÓKKKKK·K³K·K³K³KK·K·K³K³³³³³K³³³³K³³³³³K·³³³K·³³K³K³K³K³³³K³³³K³³66i66ii6i6ii6ii6ii6ii66i6iiii66iiiii6i6ii6ii6i6ii66i66iiiiiii6ii66i6ii6iii6i6ii6666iii666i66ii6i6i666iiiiii6iiii66iii66iiiii6i6i6ii6i666ii6i6i6ii6i6i5EDED i6666i66i6iii6iii6ii66666i66i6ii666iiii6i6i6666i6i6i66666i6i6i666i6ii6i6iii6i6iiiii6i666i6i6iiiii666i66ii6i6ii6i6ii6i66iiiiDi66ii666i6i6i6iiii6i6i6ii6iii666i6666i6iii6i6iii66ii6ii6i66i6ii66i6i66ii6ii6i66iiiiii66i6i666ii6iii6i6ii66i6i666i6666i6i6666i66ii6ii6i6i666iii66·······K··················K····K·K·····K·K·K·K·K·K·K·K·K·K·K·K···KK·K·KKK·KKKK·KKK·KK·KK·K·K·J·K·J·JK·J·JK·JKJKKKKKJ·J·J·J·J·KWK·J·J·KJKJKJKJKJJJKJJKJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHGHGGGFGFFFFFFFKKK³KKK³KKKKKKKKK³K+22222+þþÿþþþþþüÿþþþþþþþüüþüüóüüüüüüüóüüóüóóüüóóüóóóóóü*‡‡4‡‡1üóüóüóúööööëöõëõëõëõöõöõöõóëóóóðóóóðóóóóóðóóóóðóðóðóðð*34*331òðòððóðððððððððððððððïððïððððïðÑðÑïÑïÑÑÑÑÝÝðÑÝÑïáÑïáÑ*30403*ÑݰØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÐÐÑÑÍÑÍÍÐÞ¦°¦ÍÐÍÍÍÑÍÍÍÍÍÍÇ+&&&&&&+³KKKKK³KKKKKKKKKKKFFFFFFFGFFGFGGGGGGHGJGHGJGJHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýýüýüýüýüüþü÷óóú÷óóúóóò¬Žl!!!!!!!!!=!!! !!!!!!$!!!$$!!$!! !!!$!!!!!$$!!!!!!=$!!!!=!!$$=!!$!=$$$!!$!$!!!!$!$$!!!!!!!!!=!!!!$$=!!!$$!!====$!$$$!!!!!===!›üÿÿÿÿÿÿÿÿÿÎ@$!!$=$$=!==$!=!!$!!!$=!!=!!$=$!!!!!=$$!!$$!!$!!===!!!!!$!!==$!!==!!!!==!=$!!!!!$$$!!=!!!!!!$$!!!!=!$$!!!!!!!!!!!=!!!!!$$!!!!!!!!=!!!!!!!!!!!$!$!!!$!!!!!!!!!!!!!!!!!!!! !! !!!! !! !!!!Záüÿÿÿÿÿÿÿç‚   !! !  !!  ‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  !  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !    p¥íýýþþþþþþþýþÿþýýýýýýýýýýýýýýýæÔK·K³³K·K³K³·K³³³³³³³³·K³³K³³³K³³³·K³K³³³K³³³K³³³³³³³³·K³³³³³³³³³i66iiiii66i6iii6i66ii6666666ii6i6666i6i666i6ii66ii66i66666666666iii666iii6ii6666iiii66iiii6666ii6666iii6ii6iii6iiii6i6i66i66ii6ii6ii66iii666ii666iii66EDD6iiiii66i6ii66i66i6i666i6i6i6i666iii6i666i6i6ii66i666ii6i66ii6i6i6i6iii666iiii666i6iiii666i6i6666iiii6666iiii6ii666i6i666iiDD 6iii6i6iii6ii6i666ii66i6ii6iii6666i6i6i666666ii6iii6ii66iiii666i66ii66ii6i6ii6i666666i6ii666i6iii6ii6ii66iiii6i666i6i66i66i666iii6i66ii6i6ii6i66·········K··K·K··J··K·K··K···K··K·K·K·K·K·K·K·K·K·K·K·K·K·K·KK·KK·KKK·KK·J·K·KKKKK·J·J·J·KJKKKKKKKJ·JKJ·J·JKJ·J·JKKJ·JKJ·JJKJKKJJKJJJJJJKJKJKJJKJJKJJJJJJJKJJJJJJJJJJJJJJHJJJHHJHJHGJGGGGGFFGFFFF³KKKKKKKKKKKKKKKKKK+02222+þþþþþÿüÿþÿüþþþþþþþþþüþüüüüüüóüóüóüüüüüüüóüóüóüüü14‡‡‡4*óüúóóüóöööööëõöõëöëõëööõöëúëòóóóóóðóóóóðóóóóðóóóóóóóóó133*431ñððóðððððððððððððððððððððððððððððððððððððÝÝèïÝèïÑïÑïï133T33*ÑØ°ßÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÏÑÐÑÑÑÑ­°¦ÞÑÑÑÑÑÑÍÑÍÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFGFGFGGGHGGHGJGHGJHHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýýüýüýüýüýýÿúóúóóóúóó÷úò¬s?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!$$$!!!!!!!!$!$!!!!!$!!!!!$!!$!!!!!$$$=!!$!!!!!!!!!!$!$!$$$!@çÿÿÿÿÿÿÿÿÿú]==!!!!!!$$=!!$$!$$!!!!!$$!$!!!!!!$!$$!$!$!$!!$!$=!!$!$!$$!!!!!!$$!$!!!!$$!!$$!!$$!$!!!!!!$!!!$!!!!!!!!!!!$=!!!!!!!!!!!!!!$!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!  !!!!!! @Æñ÷üÿ÷ñËZ! ! !!!!! ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóxÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !qªíþþýþþþþþþþÿÿþýýýýýýýýýýýýýýýàÓ·K·K·K·³K·³K·K·KK³³KK³³³K·³³³³³³K³³³³·³³³³K·³³³K·³³³·³³·³³³·³·³·i6666ii6i66i6i6iii666i6iiii6i6ii6i6i66iii66666666iii66i66ii6iiii6i6i6iii6i6i66i66i6iiii666i66i6ii66iiiii6i6i6i6i6i666ii6ii6ii6i6ii6i6i666ii66i66i6i666EGDD6i6i6i6i6i6iii6i6i66ii6i66i666666i6ii6i6ii6iii6iii66iiii6i6ii6iii666iii6ii6i6ii666iii66i6ii6iiii6i666666iii66i66iiiii6ii6i6D66ii6i6ii66i666ii6ii66ii666i6i6i666ii6ii6ii666i66iii6iiiiii66iii6ii6i66i66i6i6iii6666ii66i6i6i6ii6i6i6i6i66ii66iiii6666666iiiii666iii6i6ii6iiii6·K·K·K·K·K·K·K·KK·KK·K·KK·K·K·KK·K·K·K·K·KK··KKK·KKK·KK·KKK·KK·KKK·KK·K·K·J·KK·KKJ·J·J·J·KKKKKJ·JKKJ·JKKJ·J·J·J·J·JJ·H·JJJ·JJKJKJJKJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJGJHGHGGGGFGFFFFFFFFKKKKKKKKKKKKKKKKKKK+22222+üÿþþüÿþüþþþþþþþþþþþüþüþüóüüüüóüóüóóüüüüóüóóüóóóü*‡‡‡‡‡1úóüóúóúööõöööõëõìõöõöõëõëöóëóóðóóóóóðóóóðóóóóðóóðóóðóð*34*3P1ðòððððóððððððððððððððððððððððððððððððÑðïðݰïðØèÑðïáÑá*M30M31ÑØÝØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÑÐÑÐ×°¦×ÑÑÍÑÍÍÍÎÍÍÑÍÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFFFGGGGGGGGHGHHGHGHGJGJHHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýýýýýýüýüýüýüüÿüóóóúóóú÷óóò¬ŽC!!!$$!!!!!!!!!!!!!!!! !! !!$$!!!!!!$$!!!!!!!!!$!!!!!!=!=!!!!!!!!=!!!$!$=!!!=!!!!!==!===!!!!!!$!!!!!!=$$=!$!$‚úÿÿÿÿÿÿÿÿÿÆ=!$!!=!=!!!!!!$!!!$!$!!$!$=!!$!==!$$!$!$!=!$$!!!!!!!$!!!$$!!$!!$$$$$!!!!!!!$!!$=!!!!!!=$!$$!!@Zxxƒ‚ƒ‚‚x_ZY@=!!!=$!$$!!!!!!$!!!$!!===$!!!!!!$!!!!!!!!!!!!!!!!!!!!!  ! !!!!!!!!!!!!!!!!!!!!!!! !!!!!Z‚ÂÆ…_! !!! !!! !  !_ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! !  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó   ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      pªíýýþþþþþþýýýÿþýýýýýýýýýýýýýýýæÓK·K·K·KKKKKKK³K·K·K³³K³K³K³K³³K³³³K³³K³K³³³³³K³³³³K³³K³³³K³K³K³³66i66ii6i66ii6i6i66ii6iii6ii6i6iiiiii6iiii6i6ii66i6666iiiiiii6iiii666666i66i6i666ii6i66ii6i6iii6666666ii6i6i6666iiiiiii6i666ii666i66ii6i66666i6i66ii66GFDiiiiiii666ii6i6i6i6i6ii6ii6i6ii6ii66i6i666666i66i6i666i6iii6iiii6i66i66i6iii6i66ii6iiii6iiii6666i666i6i66ii666iii66i66iii6iDi6ii66666ii6666666i6i66iiiiii6iiii66i66i6i66i666ii6ii6i6ii66ii6i6666i6i6i66666ii6iiiii666iiiii666i6i6ii6ii66i6iii6i6i6i6i666ii6666666666i66ii66i·······K····K····K·····K·K·K·K·····K··K·K····J···K···K·K·K·KKK·KK·K·KKK·J·K·J·KKK·KKKKKK·J·KJ·J·J·J·KKKJ·JKKJKJKJ·J·JKKJK·H·J·JJ·JJJJKJKJKJKJKJJKJJJJKJJJJJJJJJJJJJJJJJJJJJJHJHJHJHJGGGGGGFGFFFFFKKK³KKKKKKKKK³KKK³K+22220+þþþþþþþþþþþþþþþþþþþþüüóüüüóüóüóüóüóüüüóóóüóóóúóú14‡1‡‡*óóóóóüóôöööööõöëöõëõìõëöëëóëñóðóóóóóóóóóóóóðóðóððððóðð133*43*ðððððòðððððððððððððïððïðÑïÑðððïÑÑïÑÑÑðÑÑÑݰïÑÝÑïÑÑïÑï10030U*ÑØ­ØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÑÍÑÍÑÍÍÑͰ¦­ÍÍÍÍÍÐÍÎÐÐÍÍÍͦ&&&&&&&+K³KKKKKKKKK³KKK³K³DFFFFFFGFGGGGGGGHGJGHGJHHJGJHJHJHJJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýýüüýüýüýüýýÿ÷óúóó÷úóóúóò¬Žl!! !!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!$=!!!!!$!!!!!!!!$!!=!!!$!!!$!!!!$$!!!$!$!!!$!!Ìÿÿÿÿÿÿÿÿÿú]$!!$$!!!!$$!!$=$$$!!$$!$$!!$!$$!!==!!!!=!$!$$$!!!!$$=!$!$!$!$!!$$=$!$!!!!$$$=$$!!!!==!!!!!!!!!!!=!!!$Z_ƒÅÌáñ÷úüýüü÷óèÏÆ–‚Z@!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!! ! !! !!!! !!! !!! !!! _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  sªíþþýýþþþþþþþÿþýýýýýýýýýýýýýýýàÓ·K·K·K·³·····K·K³³³³K·³³³K·³K·³³³K³³³³³³³³K³³³³³K³³³³³³³K·³³³³³³6iii6ii6666iii66i6iii6i6i6666ii666i6ii66i6ii6ii6iiiiii6i66iiiii6666i66iiii66666ii6ii666iii6ii6iii66i6iiiii666i66iiii6i6i6i6i6iii6iii6i66ii6i6ii6iiiii6DDDDi6iiii6ii6666ii6i6i666666iii6i6iii6i6iii66i6i6ii6ii6i6i6i6i66i6i6iiiiiiiii666i6i66ii6ii6i6i66ii6i6ii6iiiiiii6ii6ii6i6666i66D!66ii6ii66i6ii6i66ii66ii6i66i6i6i6i6ii6ii6i6i66ii6ii6666ii6ii6i6iii666i66666i6i6iiii6iii666i66i666i6i66666ii66i6666666i666iii6ii66i66iiii6iii66i6·K·J··K··K·K··K·K·K·K·K·K··K·K·K·K·K·K·K··J···K·K·K·J·K·J·K·K·K·J·K·K·K·KKKKK·K·J·J·K·J·J·JK·J·J·J·JKJ·J·J·J·J·JKJKJ·J·JKJKJJKJJJKJKWJKJWJJJJJJKJJKJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHHHGHGGGFGGFFFFFDKKKKKKKKKKKKKKKKKKK+22222+þþüüþþüþþþþþþþþþþþþþþüüüüüüüüüüüüóüüüüüüóüóüüúóó1‡‡‡‡41üóüúóóúööõöööõëõëõöõëöëõëëóëóóóóðóóóóðóóðóóóðóóðóóóóóó134*431óðóððððððððððððððððððððððððððððððððððððððÝÝððØèðÑðÑïá*03M301áØ°ØÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÑÐÑÑÑÑÑѦ°¦ÑÑÑÑÑÑÑÐÑÍÑÍÍÍËÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFGFFFGFFGGGGHGHGHGHHGHHHHJHHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýýüýýüýüýüýüüÿüóóú÷óó÷óóóò¬}?!!!!! ! !!!!!!!!!!!!! !!!!$!!!!!!!!!!==$!!!!=!!!!!!!$=!!!!!!!!!!!!!!!!!!!!!$!!!!!$!!!!!$!$!$!!===$!!!!!!!$@ñÿÿÿÿÿÿÿÿÿÌ@$=!!==!!!$=!$=$==$$=$==$$!$$$!!!==$!$!!!$!===$!$!=$$!!$!!!!==!!!=$$=!!!!===!!!=$$=!!$!$==!$$!!Ax›Îñüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷èÈ‚Z!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!=!!!!! !!!!!!!!@_x‚‚__@!!!!!!!!!      ! ! ! _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ!  ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   ! !!!$sªíýýþþþþþþþþýÿþýýýýýýýýýýýýýýýæÓKKK·KK·KK·K·K·K·³K·K³³K³³³³³³³K³³·K³·K³·K³³K³K³³³·K³K³K³³³³³³³K³66666i6i6iiiii66i6i6ii6i6i66ii66i6ii66i6iiii666i6i6iii666i6iiii6iii666666iii6iiiii666i666iiii6i66i666iiiiiiiiiii6ii6i6i666i6i6i66iii66ii6i6ii666ii6i6iDEDDii6i6iiiiiii6i6ii66i6iiii666i66i66iii6iiiii666i66666i6i6ii6i6iii666ii6iiiii666i6iii66iii6i66i6iiiii66i6i6iii6ii6666666ii6i6DDi6i6i66i6i6i6iiiii6ii6iiii666i6i666iiii666ii666iii6i6i6ii66ii6666666iii6ii6i66ii6i6i6i6ii6i666iii66i66666ii66i66iiiii6i6i666i666i66666i6ii66ii66K·K·KK·K·K·K·J·K·K·K·J·K·KK·K·K·KKK·KK·KKK·K·JKKK·JK·KKK·KK·KK·J·J·KKJ·KKK·J·JKKKKKKKJKKKKKKJ·JKKKKJKKWKKJKJ·J·JJ·JKKHJJJ·HJJ·JJKWKJJJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHGJGGHGGGGGFFFFFFFKKKKKKKKKKKKKKKKKKK+22022+þþþüþüþüþþþþüþþþþþþüþüüüüüüüóüüóüüüüüóóüüüüóüüóú14‡‡2‡1óóóóóüóööööõëõöõëöëõëõëõêöóëóóóðóóóóóóóóóóóððóðóðóðóðó*33*341ñðððóðóðððððððððððððððððððððððððïðïðÑðÑðÑÝÝÑðÝèÑðÑïÑï13U030*áÔ°ØáÑïÑÑðÑÑÑÑÑÑÑÑÑÐÑÐÑÐÐÐÑÐÒ°¦ØÑÐÑÐÑÍÍÑÍÍÍÍÑÍЦ+&&&&&&+KKKKKKKKKKKKKKKKKKEEFFFFFGFFGFGGGGGGGGJGGJGHHGJGHHJHJHJHJHJJJHJJJJJJJJJJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJÓ×ýýýýüýüüýüýüýüýýÿ÷óúóóúó÷úóúò¬sj!!!!!!!!! !!! !!!!! $!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!$!!!!$!!$$!!!!$$$!!!!!!!!!!!!$!$!!$!!!!$!!!!=!ƒúÿÿÿÿÿÿÿÿý]!!!$!!!!$!$=!!!!=!!$!$!!$!$!!!!$!!!$=!$!$!!$!!!!!!!$$!!!!$!=$!!$!!!!!$!!!!!!!$!!$!$=!!!!!!@ƒÌóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüáÅ_=!!!!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!! !!!!!!! !!!@‚ÅÎñóúü÷óñΖ_;!!!!!!!!! !!!!!!!! ! !! ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÃüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!!  $q¥íþþýýýþþþþþÿþþýýýýýýýýýýýýýýýàÓK·K·KKKK·KKK·KK·KK³K³K³K·K³K³K³K·K³³K³³³³³³³³³³³K³³³³³³³³K³³K³³³i6ii6ii666ii66666ii6ii6ii6i6i6ii6i666ii666iiii6iii6i666i666ii6ii666ii6ii66i6i6666i6i6ii6i6i6i66iiii66i6iiii6i6iiiiii666ii6i666iii6i666i6i6i666i6ii6i66EDDF6i6iii6666666ii66i6iiiii6i6ii6iii6ii6i6i66i66i66iiiii6i6i66i66666ii66ii6ii6ii6i6iii66i66i6i6ii6iii6i6i6i6i66i6ii6i666iii6iiD6i66iii6ii6i6666iii66i666ii6i66ii66iiiii66i6iii6iii6i66iiiiiiii66666ii666iii66ii6ii66i6i66i6ii666ii6ii6i666i6i6ii6666iii6i666i666ii666ii66i666ii·K·K··K·K·K···K·K·K···K·K·K·K·K···K·K·K·K·K·K··K···K···K·K·K·K··K·KK·KK·KKKKK·K·KKK·K·K·K·J·KK·J·J·KKKKJ·J·JKJ·J·J·KKK·JKJ·JKJKKJJJKJKJJJJKJKJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHHJGHGGGFGGFFFGEKKKKKKKKKKKKK³KKK³K+22222+þþüþüþüüþüþüþþþþþþþþüüüüüóüüüóüüóüüóóóóóüóüüóóüó1‡4‡‡41úóüóóóóööööõöõöõìõëõëëìëëëóóòóóóóóóóóóðóóðóóðððððððððð*34*Q01ðòððððððððððððððððïðððððððïðÑïÑïÑÑÑÑðÑÑðÑÝÝïÑÝÑÑïáÑïá*304031ÑݰØÑÑÑÑÑÑÑÑÑÑÑÑÍÑÑÍÑÍÑÎÍÑÍÞ°¦ÔÍÍÎÍÍÍÐÍÍÍÑÍÍÍÍͦ+&&&&&&+³KKKKK³KKKKKKKKK³KEEFFFFFFFFGFGGGGGHGHHGJHHGJHJHHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýüýüýýüýüýüýüüÿüóóúóóúóóóóò¬}?!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!=!$$!=!==!!!!!!!$=$$$!$===$$!!!!!!!$$!!$=!!!!!$!!==!$!Ìÿÿÿÿÿÿÿÿÿá@=!!!=$=!!!!!!!!!!!!!$!!!!!!!$!!=$!!!!!!!!!!!$$=$$!!!!$!!!!!$!!!!!$!$!$!!!!!$$@‚ÌúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÆ_!!!!!!$!!!!!!!!!!$!!!!!!!!!!!!!!!!!!B!!!!!!! !!!ÌúÿÿÿÿÿÿÿÿÿÿÿóÆ_!!!!!!!!!!!! !!!!!!! ! !!!!ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    =s¥íýýþþþýþþþýýÿþýýýýýýýýýýýýýýýæÓ·K·K···K·K³³K³³K³³³³·K³³³³K³·K³³³³³³·K³³K³·K³·K³³³³K³·K³³³³³·K³³6i666i6666i6i66ii666i6iiiiii6666666iiiii66iii6i66i666i66iiiiiii6iiii6i6ii6i666i66666i6666i6ii6i6i6iiii6iii66i66iii66666i666iiiii6i66i6i66iii66iii6i666EDDD666iii6iiii666666iii66ii66i6666ii6i6iii66iiiii6ii666ii666iii6iiii6i6i6ii6ii666666i6iii6ii6ii66666i6i666i6i6i666i66iii666iiDi6i6i66i66666iiiii6i6i6ii6i6iii6iii6ii66iiii6i6666i66i6i6i666iiiii66ii6i6i6iiii6ii6iiii6i66666i6iiii6iiii6ii6i6666i6iiiii6ii6i6iiiiii6666i6iii6iK·K·K··K·K·K···K·K·K·K·K·K·K·K·J·K·J·K·K·K·J·KK·K·J·KKKK·KKK·KKKK·KK·KKKKKK·KKKKKJ·JKJ·JJKJKJKJKKJKJKJ·J·JKKKWKKJKJKWKJKJ·JKJKJJJKJJKJJKJKJJJKHJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHJHJGHGGHGGFFFFGFFKKKKKKKKKKKKKKKKKKK+22220+þþþüüüþþüþüþþþþÿüþþþþüüüóüüüüüüüüüüüóüüüüüüüüüóü14‡4‡‡*óúóóóóúööõöõëõöõöõëöëõëöëëóóóóóðóóðóóðóóóóóóóóóðóòóðóó133*341ñððððòððòððððððððððððððððððððððððððððïðÑðݰðïÝèÑðÑðÑÑ103030*áØÔßÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÔ¦°ÞÑÑÑÑÑÑÑÑÍÑÍÑÍÍÍÍ­+&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFGFFGFGGGGGGHGHGHGJHHGJHJHJHJJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüýüýüüýüýüýüýýþúóúóóúóóúóúò¬Ž?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!$!!!!!!$$!!!$=!!==ðÿÿÿÿÿÿÿÿÿ–=!=$!!!$!!!=!!$!$$!=$!!!!!!$!!!$!$!!!!!!$!!!!!!!$!!$!!!!!!!!$!!!!!!!!!!!!!=!!!!!!!=!!!!!!!=xËúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç–B!!!!!!!!!!!!!!!!!!!!!;[‚‚x‚‚xZ!!!!!!!!@ÅÎ!!!!!!!!!!!YÆ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò–;!! !! !!!YxdxxxxZ! !!Yx_dxd@!!!!![________!! _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  =q¥íþþýýýþþþþþÿþþýýýýýýýýýýýýýýüàÓK·KKK·K·K·K·K·K·K·K·K³K·KKK·³³K·³K³³³³³K·³³³³³³³³K³³³³³³K³³K³³³³i6i66iii666ii66ii66i6iii66i6ii6666ii6iii6i66i66iii66iiii666i6i6i66i666i6i66iiii6i6ii666i6i666i666666ii6i6i666iii6ii6i66iii66ii6ii6i6i66i666i66i6ii6ii6EDDDii6i6i6i6iiii66666i66i666i66ii6ii666iii66666i66iii66i66i6ii6666i666i6iiii6ii6ii6666i6ii66iiiiii6i66i6ii66iiiiii6i66i66ii66DD66ii666ii66ii6iii6ii6ii6i6ii6ii66ii66ii666i6iii6ii66i66i6iiiii6i6ii6i66i6666ii6iiii6i6ii6i6iiii666ii66666iii6ii6i66i6iii6iiii6i666i6iiii666ii6ii·K·K·KK·K·KKKKK·K·K·K·K·K·J··KK·KKK·K·J·K·K·K·KKK·KK·KKKK·KKKK·KKKKKJ·KK·KKKK·J·KKK·KKJ·KK·J·WKKKKWKKKJKJKKKJKH·KJKJKJKJJJJJJJKJKJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJGJGHGGGGFGFGFFFGFKKKKKKKKKKKKKKKKKKK+22202+üþüþüþüþþüþþþÿüÿþþþþüüüüüüüüüüüüüüüóüüóüüüüüüóüó144‡441úóüóúóüööööööõëõëõìõëëëëëëóõðóóóóóóóóóóóðóðóððóððóðóðó*34*431ðóðóððóððóðóðððððððððððððððððððððïððÑðÑðïÝÝÑðØèÑïÑïïá*303031ÑØÝØÑÑðÑÑÑÑÑÑÑÑÑÏÐÑÐÐÐÐÑÑÐØ¦°×ÑÐÑÑÑÍÑÍÍÑÐÍÍÑÍÐͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFDFFFFFFFFFGFGGGGGGHGHGHGHGJHGJGHHJHJHJJJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýüýüýüýýüýüýüýüüÿüóóú÷óóúóóóòÕl!!! !!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!=$!!!!!!!!$!!!!!!$$!!!!!$!!$!!!!!!!!!!$$!!!!!$=!!$!!!!!!=$!!!!]óÿÿÿÿÿÿÿÿúZ=!!!!!=!!=!!!!$!!$!======!!!!!!=$!!!!!!!!!$$!!!!!!!!!$!!!!!!!!!!$!!!!!!!!!!$!!B–ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÎx$!!!!!!!!!!!!!!!!$]Ï÷÷÷÷÷÷÷óÆ@!@‚Ìóÿÿá@!!!!!!!!!ZÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÆ@!!!!! !!@Æó÷÷óóóó÷Î@!–ñ÷ó÷ó÷ó÷÷÷ÎY!! –ñ÷óóóóóóóóá; _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó…@@;;;@@@@;;;;@;;;;@@@@@@;;;;@;ÈýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! !=qªíýýþþþýýþþýýÿþýýýýýýýýýýýýýüýæÔK·K·KKK·K·K·KKK·KKKK·KK·K·K³K³K³K·KK³K³K³K³³K³K³³³·K³K³³³³³³³³K³66iiii6i6ii66i66i666ii6i6ii6iii666iiii6iiiii6iiiii666ii6iii666666iiiiii66i6iii66i6666666ii6ii6iiii66666ii6i66iii66i6i6i666i66i6i66i6iiii6i6iii66i6ii66DEDDDi6666i66i6i66i6ii6i6i666iiiiiiii6i66iii6i6iiii6666i66666ii6i66i666ii6i66ii6i6i6i66ii66i6i66i6ii666ii66i66i6ii6ii66iii6666i 6iii6ii66iii6i6i6i6iii6ii6i66666ii666i66i6i6i66ii66i6i6i6ii66i6ii6i6i6iiii6i66i6i6ii66i666ii6ii6ii66i6iii6iiii666iii6i6i666i666iii6i6i66ii6i66i6K···K··K·J····K·K·K··K·K·K···J·K·K·K·K·K·K·KK·KK··J··KK·K·J·K·KKK·K·K·KK·JK·J·KKKK·JKKK·KJK·JKKKJ·JKKJ·K·J·J·J·JKJ·KKKJ·H·J·J·JJJJJKJJKJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHHHGJGGGGFGFFFFFFK³KKK³KKK³KKKKKKKKK+22032+þüþþüüüüþþüþþþþþüüüþüüóüüþüüóüüóüóüüóüüüóüüüóüóü1Q‡‡‡‡1óóóóúüóööõöëöõìõöëö÷ëëìëêöóëóóóóðóðóðóóðóðóðóðððóðððòð133*3Q*ñððððððððððððððððððððððððïðïÑïÑïÑÑïÑðÑÑðÑݰïÑØÑïÑïÑáï*03040*ÑØ­ßÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÏÍÑÎÑÍצ°¦ÐÍÍÍÍÍÍÍÍÑÍÍÎÐÍÍÍÍÇ(&&&&&&+K³KKK³KKKKK³KKKKK³EFFFFFFFGGGGGGGHGHGJGHHHJGHHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüýüýüüýüýüýüýüÿúóúóó÷úóóúóò¬o!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!$$!!!!$!!$=!!!!=!!!!!–üÿÿÿÿÿÿÿÿáC!!!!!!!$!$$!!!=!!$!!!!!!!$!!!$!=!!!!!!!!!!!!!!$!!!!!$!!!!$$$!!!!!$!!!$!!!!!$!!!!!!!!$!!!ZÉüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñƒ@!!!!!!! !!!!!!!!!xñÿÿÿÿÿÿÿÿÌ@!!#‚Ìüÿÿÿÿü–9!!!!!![áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉ! !!!!!!@Îÿÿÿÿÿÿÿÿð@ZáÿÿÿÿÿÿÿÿÿÿÈ@_óÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýðÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!qªíýþýýýþþýþþÿÿýýýýýýýýýýýýýüýüàÓKKK·K·K·K·K·K··K³·³·K·³K·³³³³K·³³³³³³³³³³K³K³³³³³K³³³³³³K³K³K³³³i66iii66i6i666ii6i66i66ii66i66i6i666ii6i66ii66ii6i666i66i6ii6i66iiii666666i6ii6iii666iiiiii6i6666i6iii66666ii66ii6i66i6ii666i6i6666i6iii6i66i6ii6iiii6GEDD6ii6i66i6iii6ii666iiii6ii6i6i6ii66i66ii66i666iiii66ii6ii66iiiiii6i6i666i66i6666i66iii6i6i666ii66i666666i66666i66666666i6i6D6i6ii666i66666i66i6iii66i66666iii6i6i666i6ii6iii66i6iii6iiii6iiiiii6ii6iiii6i66iiiiii6iii6i6iii66i6ii6iii6666ii666iiiii6ii66i66iiii66i6i6i66ii66K·K·K·K···K·K·K·K·K·K·K·K·J···K·K·K·K·K·J·K·KK·J·J·K·KK·KK·KKKK·JKJ·KKKJ·KKJ·J·J·JKK·JKKJ·KKJ·JKKKJ·J·JKJKKJKKJ·KJKH·JKJJJJJJWKJKKWJKJJKJJKJJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHHJGHGGGGFGFFFFFDKKKKKKKKKKKKKKKKKKK+02202+üþþþüþþþþüþþüüüüþüüüþüüüþüþüüüüüüüüüüüüüüüüüüüüó*4‡‡441óüüüüüúöööëöëõöõë÷ìîëõëëëëóëóóóóóóóóóóóóóóðóóðóóóóðóóó134*401ðððóðóððòððððððððððððððððððððððððððððððððÝÝðïèðÑðÑïïÑ*03030*ÑݰØÑÑÑÑÑÑÑÑÑÑÐÐÑÐÑÑÑÑÑÑÑÔ°¦ÐÑÑÑÑÑÑÑÍÑÑÍÑÍÑÍÍÍÍ×+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFGFFFGFGGGGGGGHGHHGHGJGJHJHJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýüýüýüýýüýüýüýüüÿü÷óóúóóú÷óóò¬Žl!!!!!!!!! !!!!!!!!!!!!!!!!!!!$!!! !!!!!!!!!!!!!!!!!!!!!!=!!!!=!!!!!!!!!!!!!!!!!$!!$!!!!!!!!$!!!$=!!!$!!ÉýÿÿÿÿÿÿÿÿÆ@!=!$$!$!!!!!!!!!!!!!=$=!=!$!!$$!!$=====!!!!!!$!!!!!!$=!!!!=!!!!$=$!!!$=$!!!!!$$!!xßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÆ@!!!!!!!!!!!!!!_ñÿÿÿÿÿÿÿÿÎ@!!ZÆóÿÿÿÿÿÿÿñZ!!!!!!!!!ZáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂ! !!!@ÎÿÿÿÿÿÿÿÿçY!!!!‚óÿÿÿÿÿÿÿÿÿú…!!!;áÿÿÿÿÿÿÿÿÿÿÑ!!!dýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !   !  =sªíýýþþþýýþýýüÿþýýýýýýýýýýýýýüýæÓ·K·KKK·KK·KK·K·K·K·K³·K·³K³K·K³K³K³K³·K³³³³·K³·K³³³³·K³³³³³³·K³³ii6iiii6iii66ii6ii66i6666iii66i6i6i66iii666666i6i66i6i66ii66ii6ii6ii6i6ii6i6i6i6666i6i6i66ii6i6iiii66i6iiiii666ii6iiii6i6i6iiii66i666ii6iiiii6ii6iii66EEDD6ii6i6i6i6iii666ii66ii666i6i6i66ii66iiiii66iii66i66666i6i66666i6iiiii6iiii6i6iiii6ii6i66iiiiiii6666iiiii666iiii66iii66iii6DD6i6i6i66iii6iiii6666i6ii6iii6i6i666i6ii6ii666ii6ii666666ii66iiii6i6i66i66i66i6i66ii6iiii6iiii66iiii666i6i6iii66iiii666ii6iiii6ii6i666i6i6ii6iiiiK··J·K·K·K·J·KK·KK·KKK·KK·K·KKKKK·KK·KK·K·KKK·K·K·KJ·KKKKKKKK·J·K··KJK·KKKJ·J·JKKKKK·JKK·JKJ·JKKWKKKJ·HKJ·H·JKJ·HKJKJJJKJKJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJHJHJGJGHHGGGGGGFFFGFFFFKKKKKKKKKKKKKKKKKKK+22220+üþþþþþþþüþþþüüüüüþþþüüüþüþüüüüüüüüüóüüüüüüóüüóüó1‡2‡‡41÷üüüóóóööööëöõëööõëõìëëõêëóëóóóóóóóóóóóðóóóðóóðóððóðóð*43*341ñòðððððóððòðððððòðððððððððððððððððÑððððÑðݰðïÑÑïÑïÑÑá1303+3*ç­°ÝÑðÑÑðÑÑÑÑÑÑÑÑÏÑÐÐÑÐÐ×°¦ØÑÍÑÍÑÍÑÍÑÍÍÑÍÑÍÍÐÎÍÍ&&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFFFGFGFGGGGGGGHGHGJGHJGHGJHJHJJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüýüýüüýüýüýüýüÿóóóúóó÷óóúóò¬Ž?!!!!!!!!!!!!!!!!!!!!!! !! !!!$!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!áÿÿÿÿÿÿÿÿÿz!$!!!!!!$!!!!!$!!!!!!!!!!$!!!!!!=$!!!!$!!!!!!!!!!!$!!!!!!!!!!$!!!$!!!!!!!!!!!!!!!!=!xçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÆB!!!! !!!!!!!!!!_ñÿÿÿÿÿÿÿÿÌ@=‚ßüÿÿÿÿÿÿÿÿÿÆ=!!!!!!!Ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüx !!!@Îÿÿÿÿÿÿÿÿð@!;Æýÿÿÿÿÿÿÿÿÿñ_ !Èþÿÿÿÿÿÿÿÿÿ÷Y xþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!q¥íýýýýýþþýþþÿþþüýýýýýýýýýýüüýüàÓKK·K·KKKKKKK·KKKKKKKKK³KK³K·K·K³K³K³K³K·K³K³K³K³³K³K³³³K·³K·³³³Kiiiiiii666666666i6iiii6ii666i66i6666666iii6i666i6ii666i66i66i666i66iiii6ii6iii6iiiiii6ii6ii66i6i6iiii6666i666i6i66iiiiii6666iii6i66i6ii6i6i66i6666666iEDEDDi6i6i6i6666iii66i6iii6i666i6iii6ii6i6i6i666iiii6i6iiii6ii6666i6i666i6ii6i66i6i66ii66866i6i66ii66iiii6iii66i6iiiiii66i66i66D6ii666ii6i666i86iiii6‰ii666iii66i6i6i6iii666666i666ii6i6i6i666i6ii6iiiii66i6i66ii6ii66i66i66iiiiii666666i6i66ii6i6i6i6ii66ii6666666i66i6i6ii66i6·K···K·K·K·K·K·K·K···K·K·K·K···K·K·K·K·J·K·KKKKKK·J·K·J··K·KK·KKKKK·KK·K·J·K·J·K·JKKJ·KJK·JKKKKKKJ·JKKKWKKJ·J·JKKWJ·JKWJ·J·JKJKJKJJKJKJKJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJJHJHJGJGHGGGFGFFFFFEKKKKKKKKKKKKK³KKK³K+20202+üüþüþþþüüþþüüüüüüþþüóüüþüüüóüóüüóüüüóüóüüüóüóüúó*‡‡4‡41óóüóüóúöëöëöëõöõëõë÷ëëëëëëóëñóóóóóóóóðóððððóððóððóðððð*43*4M1ððóðóðððððððððððððððððððïððÑïÑïÑïÑðÑðïÑðÑÝÝÑïßáÑïáïïá*03030*Ѱ°ØÑÑÑÑÑÑÑÑÑÐÑÑÍÑÍÑÍÑÍ×°¦ÔÍÍÍÍÍÍÐÍÎÍÍÐÍÐÍÍÍÍÍÍÍ+&&&&&&+³KKKKKKKKKKK³KKK³KDFFFFGFFFGFGGGGGHGHGJGJGHJGJHJHJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓüüýüýüýýüýüýüýüüÿüú÷óóúóú÷óóò¬Ž?! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!$!!!!!!==!!!!!!$!!!$!!!!!!!!!!!!!$$$!!!$=!!!!!!!!!!!@ñÿÿÿÿÿÿÿÿüZ!!$!=!!!!!!!!!$!!==!!$!=!!!!!$!!!!$!!!!!!$=!!!!!!!!!!!!$$$!$!!!!!$!!!!!!!!!‚ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ñçÏÏÎÎÎáçòüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÌB!!!!!!!!!!!_ñÿÿÿÿÿÿÿÿÌZ…ñÿÿÿÿÿÿÿÿÿÿÿ÷_!!!!!!!‚üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ;!! !!!@ÎÿÿÿÿÿÿÿÿñB  YáÿÿÿÿÿÿÿÿÿÿÎB ‚üÿÿÿÿÿÿÿÿÿÿ–!!!!_þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   7p¥õýýýþþýýþýýýÿýýýýýýýýýýýüýýüýæÓ·KKKK··K···K·K···K·K··K³·K³K³K³³³·K³³³³³³·K³³³³·K³³³K³³³³³³³K³³³ii6i666i6iiiiiiii6i6i6i6iii66666i6ii66iii66i66ii66i666ii6i6ii66i6iii6i6ii66i6iii66666iiii6i666i666i666i66i6ii66ii6i6i6iiii6iiiii6i6ii666ii66ii6i6i66ii8EDDEi66i6i66i6666Š666ii666666i66EGDDi666i6i6666ii66i‰6i66i86½ii666‰i<66666i6656<½i666i6i566½5iˆŠ‰6ˆ666Q‰66666‰6‰6‰5ˆŠ6i66666ii6ˆ666i6666Q6666Ni6i6ii6i68i5iii6iii666i66i66iiiN68iiii86iiiii66ii6i6iiKK·K·J·J·KK·K·KKKK·KK·K·KK·K·K·KK·KKKKKKK·KKK·J·K·J·J·J·J·KKKKKJ·KJ·KKJKKKJ·KKKKKJ·JKKKWKKKKJ·J·JKWKKJKJKJH·JJKJKJJKJKJJKJKJJJJJJJJJJKHKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJJHJHJGJGHGGGGFGFGFFFFFKKKKKKKKKKKKKKKKKKK+20220+üüüüþþþüþþüüüüüüþþþþüüþüþüüüüüóüüüüüüþüüüóüóóüüó1‡4‡441óüüüóúúëöëöööõöõöõöõëöëõêëóë÷ðóóóóóóóóðóððóððóððóðóððñ143*O31ðóðóðóðóðòðððððððóðððððððððððððïððïðððÑðÑÝÝÑÑØèÑïïÑïá*33030*Ñ­°ØÑïÑÑÑÑÑÑÏÐÑÑÑÑÐÑÏÐÔ°¦×ÐÑÑÍÑÍÑÍÑÍÍÍÍÍÎÍÍÐÎÍЦ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFFGFFFFGGGGGGGHGHGHGHGJHGJGJHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýýýüýüýýüýüýüýüüÿüóú÷ó÷úóúóóò¬l!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!$$!!!!!x÷ÿÿÿÿÿÿÿÿß@!!$!!$!!!$!!!!!!!$$!!!!!!!!!!!=!!==!!!!!!!!!!=$$$=$$!!!!!!!!!!$!!!!!!!!!!!xçÿÿÿÿÿÿÿÿÿÿÿÿÿüçÆx@!!!!!=$!!=ZƒÌóÿÿÿÿÿÿÿÿÿÿÿÿÿüÆ@!!!!!!!!!!!!!!xñÿÿÿÿÿÿÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿü‚!!!!‚üÿÿÿÿÿÿÿÿÿÿóÎÆ–ÈÎüÿÿÿÿÿÿÿÿÿÿð ! !!!!!@ÎÿÿÿÿÿÿÿÿðB !!!!Âüÿÿÿÿÿÿÿÿÿ÷d! !ÎÿÿÿÿÿÿÿÿÿÿóY !dýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! ! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍ!!qªíýýýýþýýþýýýÿýýýýýýýýýüýüýýüýæÓ·KKKK·KKKK·KKK·KKK·KKKKKK·KK·KK·K·K·KK·K·K³K·K³K³K·K³³K³K³K³K³K³iii6i66i66ii66i6i6iiiii6iii6666i6ii66iii6iii666i66ii66ii6i66i66i6iii66iiii6ii6ii6iiiiiii66iiiii6ii6iiii66iii6i6ii8iii6ii6ii6666i66666866‡‰j¿6ˆ66ˆˆˆ28ii<<666ˆˆˆˆˆˆˆ0iiiNˆ66ˆˆˆ666ˆ6655Sˆˆ6ˆˆ5Nˆii56ˆNˆ66ˆˆSS666iˆˆ>ˆˆ6iN<<5i6Q6ˆ<ˆ5i66ˆNˆi66i<6i>66ˆi<6i6i666i66i6iiiˆ6QNiK··J·K···K·K·K·J···J·K·J·K·J·K·J·KK··K··KKK·K·KKKKK·KK·J·KK·K·K·KK·J·K·KK·K·JKK·J·KKKJ·JKKJ·J·JKKJ·JKK·J·J·JKKWKKJ·JJJKJKJWKJKJKWKJKJJJJKJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHJGHGGGGGFGFFFFFDK³KKK³KKKKK³KKKKKKK+22202+üüüüþþüüþþüüóüüüüüþüüüüüüüüüüüóüóüüóüþüóóüóóóóóú144‡‡41óúóóóóúôöööööõöõöõöõöõìëëëóëóóóóðóóóðððððóððððóðððððóð10Q*331ñðððððððððððððððððððïððïðïðÑðÑÑÑÑïÑðÑÑðÑïݰÑðÝÑÑïÑáÑï*00+00*ÑÚ°ØÑÑÑÑÑÑÑÑÑÑÍÑÍÑÍÍÑ̦°­ÐÍÍÍÍÍÍÍÍÍÍÑÍÐÎÐÐÐÍÍÍͦ+&&&&&&+K³KKKKKKKKKKKKKKK³DFFFFFFFFGGGGGGHGHGJGJGJHJGHJHJHJHJHJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýüüýüýüüýüýüýüýýþúóóóúóó÷ó÷úò¬Ž?!!!!!!!!!!!!! !!!!!!!!  !!!!!!!!!!!! !!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!…üÿÿÿÿÿÿÿÿË@!!!!!!!$!!!!$!!!!!!$!!!!!!!!$!!$!!$!!=!!!$!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Záÿÿÿÿÿÿÿÿÿÿÿÿÿñ–Z=!!!!!=!!!!=!9‚Ìúÿÿÿÿÿÿÿÿÿÿÿÿü–$!!!!!! !!_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ@!!!!!!áÿÿÿÿÿÿÿÿÿÿßx@!;–ñÿÿÿÿÿÿÿÿÿü@ !@Îÿÿÿÿÿÿÿÿç@!@ÎÿÿÿÿÿÿÿÿÿÿáY!–üÿÿÿÿÿÿÿÿÿþ‚_þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    ! !qªíýýýýýþþýýþþÿýýýýýýýýüýüýüüýüàÓKK·KK·KK·KK·K·K·K·K·K····K·K·³K·K·³K·³³³³³K·³³³³³³³³³³³³K·³³K·³³i66666i6iii6ii66iiiii66i6i66iiii6iiii6i6i6666ii6iii6iii66ii6i6i666iiii6ii6i6iii6666i666i6>ii666i666i6Ši6‡666iii6666i66i6iiii66¿6i½66666¿¿i6‰6ˆiNˆˆ<ˆˆSNˆˆN666ˆj8ˆ6iNˆˆ6ˆ66ˆSSˆˆˆNˆˆˆNiNN6ˆˆNSˆ5iˆSˆˆ=825SS!!!! !!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!$!!=$!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!$!!!!!!$$$–üÿÿÿÿÿÿÿÿ–=!!!!!!!!!=!!!!!!$!!!!!=$!!!!==!!!!!!!!!!!!!!!!!!!!!!$!!!!!!$!$!$!!!!!!!@ÌýÿÿÿÿÿÿÿÿÿÿÿüÌ_!!!!!$!!!!!!!!!!@–çÿÿÿÿÿÿÿÿÿÿÿÿó‚!!!!!!!!!!!xñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüñΖ@!!!@óÿÿÿÿÿÿÿÿÿÏY!!!!_üÿÿÿÿÿÿÿÿý‚!!!!@Îÿÿÿÿÿÿÿÿð@!!_ñÿÿÿÿÿÿÿÿÿÿÈ;_óÿÿÿÿÿÿÿÿÿÿË! _þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ# áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !p¥íýþýýýýýþþýýÿýýýýýýýüýüýüýýüýàÖKK·KKKKKK·KK··K··KK·KK·KK·K·K·K·K·K·KKK·K³·³K³K³K·K³KK³³³³³³³K³³6iii666ii666ii6ii6666iii6i6iii6ii6666iii66i6ii66i6iiii66i6ii666i6i666ii666ii66i666ii66Ài‡Àiiiii6i6i666½66¿Q6666¿¿56iii8666¿‡¿¿¿½¿¿¿666‰<6½ˆ‡665ˆŠ½i‰‰6EDDDDF½,,,,, ,NQi‰65‰ˆ½ˆ‰ˆ‰ˆˆ‰½ˆ‰‰‰ˆˆˆˆ‰ˆ½‰ˆˆˆ8‡‰ˆˆˆˆ½ˆ½ˆ½ˆˆˆˆˆˆˆ½ˆ½ˆˆˆˆiˆ‰ˆˆˆO‰‰ˆˆ½ˆˆ<ˆˆˆˆˆˆˆSˆˆˆ½ˆˆˆˆˆˆˆˆ5ˆSS2ˆNˆSˆˆˆˆˆˆˆˆDDLˆNNˆˆˆˆˆˆˆˆˆˆˆSˆˆˆSˆNˆ66ˆ6ˆˆˆˆSˆNˆˆˆˆˆ6ˆNˆˆi2ˆˆˆ!‰ˆN<ˆNˆNˆˆˆˆˆˆˆNˆiˆSˆˆNiˆNˆˆˆSˆSNˆSˆˆˆ54NˆˆˆQNiSˆ6SN‡NˆN6NN2ˆNNˆ<ˆ63$6ˆˆNˆOˆ!!  !!!! !!!!!!!!!!!!! !!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!$!!!!!!!!!$!!!!!!!!!!!!!Æüÿÿÿÿÿÿÿÿ‚!!!!!$!!!!!!$!!=$!!!!!!!!!!!!!!!=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!_ñÿÿÿÿÿÿÿÿÿÿÿñ‚!!!!!!!!!!$!!=!!!!!!!!=@ÆüÿÿÿÿÿÿÿÿÿÿþÈ!!!!!!!!!!_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÌ‚@!!! !!!–üÿÿÿÿÿÿÿÿÆ!!!!YÿÿÿÿÿÿÿÿÿÈ!! !@Îÿÿÿÿÿÿÿÿð@  ;Ëÿÿÿÿÿÿÿÿÿÿñ[!  Èýÿÿÿÿÿÿÿÿÿü‚  xþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ; ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! =qªíýýþýýýýþþýýÿýýýýýýýüýüýüýýüüæÔK·KKKKKKK·KKK·K·KK···K···K·K···K·K···³·K··K³·K³³³³³³³³·K³³·K³³³³6666iii6iiiii6ii66iii6ii6666666i6ii6ii6666i6ii6i6iii666i6666‡66ii6i6i6665i<нii6<½À¿¿¿À6¿Š¿½¿½½½66½<‰½ŠP¿‰‰½½½¿¿½¿¿<½½‰‰‰‰ˆ½½‰½‰ˆ½½‰‰‰‰<ˆ½‰½ˆ½ˆˆ‰ˆIFDDD,, ‰‰‰‰‰‰‰‰‡ˆ½ˆˆˆˆ‰ˆ‰ˆ½‰ˆˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½Sˆˆˆ½ˆˆˆ<ˆˆˆˆˆˆSˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆSSˆˆˆˆˆˆSˆˆˆˆSˆˆˆˆˆˆˆˆSSSˆSˆˆDNˆN6ˆNˆˆˆ3ˆˆˆSˆˆˆˆˆSNSNˆSˆSˆˆSSˆNˆSˆˆˆˆˆˆSSSˆSSSSSSˆˆˆNSSˆˆˆNˆˆNSNˆNSNNˆNNSNˆS8ˆˆˆNˆSSˆSNNNNNNˆSSNSNSSˆNSNNN<ˆSNˆNNSN6iSˆ6NˆNNNNLSNNSSSNSSSNKKK·J·K·K·J·J·K·KK·J·K·J·J·K·J·J·JKJ·J·J·KKK·KKJ·J·J·KKKKJ·JKKKKKJ·J·JK·KKKJKJKJKJ·JKJ·JKKWKKJJKJKKKKKJ·HKJJ·HJ·JJKJJJKJKJKJJKJ·JKJJJKJJJJJKJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJHJHJHJHHJGHGGHGGFFFFGFEEKKKKKKKKKKKKKKKKKKK+20204+üüþþþþþþþüþüüþþþþþüþüþüþüþüüóüüüüüüþüüüüüüüüüóüü13‡4‡4*óúóúóüóööööõöõëöìõëöëõëëëëóòóóóóðóóóðóóðóðóóóóóóóóððóó134*331ñðóððòððððððððððóððððððððððððððððïððððððïÝÝðïÝÑÑïÑðÑï*03003*Ñ­°ØÑÑÑÑÑÑÑÑÑÏÑÑÑÑÑ­°¦ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÍÑÍÐÍÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFFFFFGFGGGGHGHGHGHGHHHGJHJHJHJJHJHJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüüýüýüýüýúýüýýÿúóóó÷óúóúóúò¬s> !!!!  ! !! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Æÿÿÿÿÿÿÿÿÿz!!!!$!!!!!$!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!@Îÿÿÿÿÿÿÿÿÿÿÿçx!!!!!!!!!!!!!!!!!!!!$!!!!@Æüÿÿÿÿÿÿÿÿÿÿ÷‚!! !!! !!_òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç…@!!!!!ÈÿÿÿÿÿÿÿÿÿZ !!÷ÿÿÿÿÿÿÿÿÈ!@Îÿÿÿÿÿÿÿÿç@ ![ðÿÿÿÿÿÿÿÿÿÿÎ;‚üÿÿÿÿÿÿÿÿÿÿÈ!!‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !q¥íýýýýýþýýýþþÿýýýýýüüýüýüýüüýýàÓKKK·K·K·KKKK·KKK··JKK··KK···K·K·K·KK·K·K·K·K··K·KKK·K³K·K·K³K·K³iii66ii666i6ii666i6ii666i666i66i85i6iiiiÀi6¿666i66ii‰Q6iÀ‹Q¿Àii6À6666¿ÀQ‡½66i6>½ˆ½Q½‡Œ¿½½½‰¿½‰‰‰Q‰‰‰‰½¿½½½¿½<½‰½½½½‰ˆ½ˆˆ½½‰‰‰½ˆˆ½½ˆˆˆ½‰‰½ˆ‰½ˆˆ‰½NGDD,,LS½ˆ½ˆˆˆ½ˆˆˆˆˆ‰ˆˆ½ˆˆ½½ˆˆS½ˆˆˆˆˆˆˆˆˆ½ˆ½ˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆˆˆˆˆˆˆˆˆˆSˆˆNˆˆSˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆSˆSˆˆˆˆˆSˆSˆˆˆSSNSˆˆˆSˆˆSSSˆˆSDLˆˆNSˆˆˆˆ<ˆˆˆˆSNˆˆNˆˆSˆˆˆˆˆˆSSˆˆˆNˆˆˆSSNˆNˆSSNˆˆˆSˆSˆNSNNSˆˆSSˆSˆNSˆˆSSNSNNˆNNˆˆNNˆˆˆSSSˆˆˆSNSNNˆˆˆNSNNNSSNNNNˆSNNˆNNNNˆ!ˆSNNNNˆNNNˆNˆSˆNNSSNN·J·KKKKJ·J·J·J·KJ·J·J·J·K·J·J·J·K·J·KK·J·KJ·J·KKJ·JKKJKKKKKKKKWKKKJKKKJKJ·J·J·J·KKJ·KKKKKKKKJ·J·JWKJJKJKWKJJKJJJJJKWKJJJJJJJJJJJJHKJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJHJJJHJHJJHJHJGJGHGGGGFGFGFFFFKKKKKKKKKKKKKKKKKKK+03030+üüþþüþþþþüþüþþüþþüüþüþüþþüüüüüüþüóüüóüüüüüüüóüó÷1‡4‡441üóóúóóúöëöëõëõëõëöêõìëìëëëóóóðóóóóðóóóðóðóððóóóóðóððóñ133*301ðððóððóððððóðððððððððððððððððððïðÑðÑðÑïÑïݰÑðØèÑÑïïáÑ*330+0*ÑݰØÑÑÑÑÑÐÐÑÐÐÑÑÐÑØ¦°ÞÑÐÑÑÑÑÑÑÑÑÍÑÍÍÍÑÍÐÍÍÍÐÐÍÍÔ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFFFGFFFFFGFGGGGGGHGHGJGHGJHGJGHHJHJHJJHJJHJJJHJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJÓÓýüýýüýüýüýüýúýúüÿüóúóúóóúóóóò¬s?!!!!!!!!!!! !!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Èýÿÿÿÿÿÿÿÿx!!!!!!$!!$!!!!!!!!!!!!!$!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!ƒúÿÿÿÿÿÿÿÿÿÿñx=!!!!!!!!! !!!!!!=!!=ÆýÿÿÿÿÿÿÿÿÿÿÏ@!!! !!!_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ_!!!!! !Æÿÿÿÿÿÿÿÿÿ@!!!!Îÿÿÿÿÿÿÿò…!;Îÿÿÿÿÿÿÿÿð@ ! !!–÷ÿÿÿÿÿÿÿÿÿýÂ;Zñÿÿÿÿÿÿÿÿÿÿç@!  _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ;  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    q¥íýýýýýýýýþýýÿýýýýüýýüýüýüýýüüæÕK·KKKKKKK·KKK·KKK·K·KKKKKKKKKKKKKKKKKKKK·KK·KK·K·K³K·KK³K³KK³K³Ki6666i6666iiii6ii666i6iii66ii6À6<¿<66i66i¿6iÀii6i6iŠŠÀ6À¿6‰½¿6iˆ65½½¿¿¿¿‰½½¿½½¿½½½½½¿‰¿½‰‰½½½‰½¿½½‰‰‰‰½‰‰½½8‰<½½½½½½½½½‰‰‰‰½‰½‰‰‰½‰ˆ½ˆˆˆ½ˆˆ½ˆˆ½‰½ˆˆˆLIDDLˆˆ½ˆ½‰‰ˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆ½ˆˆˆ½ˆˆˆˆ½ˆˆˆˆˆ‰ˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSˆˆˆˆˆˆˆˆNˆˆSSˆˆSˆˆˆˆˆˆSSSSSDDDLSSSˆˆˆˆˆˆˆˆNˆSSSˆˆSSˆˆSˆˆSˆˆˆSSSˆSSˆNSSSˆˆˆˆNSˆSˆSˆSNSˆNSNˆˆSNNˆˆˆNˆˆSSSNˆNSNˆˆˆSNˆˆˆˆNˆSSˆSNNSNNSSNSNˆNNSSNNˆNNSNNˆSNNNNNSNSNSSNNNSNNSS$ˆNSNSNN³J·K·J·K·K·KKK·KKK·K·K·KKJ·K·K·KKK·J··J·KKKKKKK·KK·KK·K·KK·J·J·KKK·K·J·KK·J·JKKJKWKKJKWKJ·JKKJKKKKKJ·JKKJKJ·J·JKJ·JJJKJKWKJKJKJKJKJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHGJGGGGFGFFGFFDK³KKKKKKKKK³KKK³KKK+20202+üüüüþþþþþþüþüþþþüüüüþüþüüüüóüüüüüüóóóóüüüóüóóóúó1P44‡41óóúóúóúööëëõìöëõëõëëëëëëëìóñóðóóóðóðððððððóðóððóðððóðð103*33*òòððððððððððððððÑððððððïðÑïÑïÑÑÑÑðÑðÑïÑðÑݰïÑÝßÑðÑÑÑÑ100+00*ÏØ­ØÑÑÑÑÑÑÑÏÑÍÑÍÑצ°ÔÍÍÑÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÎÐÍÍÍÍÍͦ'&&&&&&+K³KKK³KKKKKKK³KKK³DFFFFGFGGGGGGGGHGHGJGHHJGHHJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüüýüýüýüýüýüýüÿóóó÷óóúóóúóò¬}?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Èýÿÿÿÿÿÿÿÿx!!!!!!!$$!!!!!!!!!!!!!!!!!!$!!!$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!;áÿÿÿÿÿÿÿÿÿÿóx9!!!!$!!!! !!!!! !!!!!!!!!@Èÿÿÿÿÿÿÿÿÿÿ÷ƒ!! !!!!!_ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌZ!!!!!ÈýÿÿÿÿÿÿÿÿZ!! !!–ÿÿÿÿýáÆ_@!!!!@Ìÿÿÿÿÿÿÿÿç@!!!;Ëÿÿÿÿÿÿÿÿÿÿ÷‚ ;Îÿÿÿÿÿÿÿÿÿÿü_ _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !    !pªéýýýýýþýýýþþÿýýýüýúýýüýüýüüýýàÓKKKK·K·K·KKK·KKK·KK·KK··K···K···K···K··K·K·K·³K³³³K·K·³K·³³³K·³³i6666ii6i66iii6Ši6i6j8À<6i666½Š‰iÀ¿À6¿6i<À6666½¿5<½6½À¿½<¿½½¿¿¿½½¿½½‰¿¿¿¿½‰‰‰¿½½‰‰‰½¿ˆ½‰½½ˆ½ˆ½‰½½½½‰‰‰‰‰‰ˆ½½½‰½½‰½½‰=‰‰‰½‰ˆ½ˆ½½ˆ½ˆˆ½ˆ½ˆ½½ˆ‰½ˆ½ˆˆˆ½ˆˆˆˆLDDDLˆˆˆˆ½ˆ‰ˆ½½ˆˆˆˆ½ˆˆˆˆˆ½ˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆ½ˆˆˆˆˆNˆˆSˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆSˆˆˆˆˆˆˆSNˆˆˆSSSSSLLLLSˆNSSSˆˆˆˆˆˆˆSSSSˆˆNSNˆˆˆˆSSSSSˆNˆˆˆSˆˆNNˆˆˆˆˆNNSˆSˆNNNˆˆNSNSSSNNNSSSˆˆSSSNNSNNˆˆNˆSNˆˆNNSSSSˆNNˆSSˆNNSSˆNNNNNSˆNSNNSˆNNNNNNSNNSSNNNSNSSSSNˆSNNNNJ·KK··J·J·KK·J·J·KKJ·JKK·J·JKJKKK·J·JKKKK·KK·KKJ·JKKJKJKJKJKKKJKKJKJKJKJKJKKKWKKKKKKKKKKKJ·J·J·JKJJ·H·JJ·JJJJJJJJJJKJJKJJKJWKJJKJWKJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHHGHGGGGFGFFFEFFKKKKKKKKKKKKKKKKKKK+04020+üüüþþþþþþþüþþþþþþþüüüþüüóüüüüüüüüüüüóüüüüþóüóüóü*‡4‡4Q1óúóóóúóöëöëëëëëõëöëõêõêõêëóëòóóðóóóóóóóóðóðóðóóóóóðóð÷*43*331ðððóðòððððòððððððððððððððððððððððððððÑðÑð­ÝÑðØÑÑÑÑïÑç*00+30*ÑØÔØÑÑÑÑÑÑÑÐÑÑÑÑѰ¦°ÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÑÑÑÐÑÍÍÎÍÍÍͦ+&&&&&&+KKKKKKKKKKKKKKKKKKFFFGFFFFFGFGGGGHGHGHGHHGHJGJHJHJHJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓüüüýüýüýüýúýüýüúÿüóúóúóóú÷óóò¬Ž?!!!!! !!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Æüÿÿÿÿÿÿÿÿ‚!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!ƒ÷ÿÿÿÿÿÿÿÿÿü–9!!!!!!!!!!!!!!!!!!! !!!!@ßÿÿÿÿÿÿÿÿÿÿá@ !! _ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿáZ!! !!!!!!–üÿÿÿÿÿÿÿÿ–!! !ZÿÿóÎ…Y! !!;Îÿÿÿÿÿÿÿÿð@YçÿÿÿÿÿÿÿÿÿÿáY Âüÿÿÿÿÿÿÿÿÿÿ  _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!! !!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !pªíýýýýýþýýýýýÿþýüýýýüüýüýüýýüüæÓ·K·KKKKKKK·KKK·KK·KK·KK·KKKK·KKK·K·KK·K··K·K·K·K·K·K·K·K·K·K³·K³À6i6ii<6ÀiiiiŠ5\6¿‡86ˆ<ŠÀ½ˆŒ¶‰¹»»c‰À½¿½5¿¿ˆ½¿½¿¿½¿¿¿½¿¿¿½i‰‰¿¿½8½¿½½½¿‰½¿½½‰‰‰½½‰¿‰½½‰ˆ½½½‰½½ˆˆ½‰½½½½½‰‰‰‰ˆ½½½½½‰ˆˆ½ˆ½ˆ½ˆˆ½ˆ½½‰½‰ˆ½ˆˆ½ˆˆˆˆˆˆ½ˆ½ˆˆ½ˆˆˆˆˆNDDDDSˆˆˆ‰‰ˆˆˆˆ‰ˆˆˆˆˆ½ˆˆˆ½ˆˆ½ˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆSˆˆSˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSSˆNSSˆNSˆˆˆˆSˆˆˆNSNSSSSSˆSˆSSˆˆˆˆˆNˆˆˆˆSSˆˆˆSNˆˆSˆˆˆNSNNˆˆSˆNˆˆNˆˆSSˆˆNNSNSSSˆNˆˆNNSˆSSSNNNSSSˆNSSSNSNSNˆˆˆSSNNNNSSSNNNNˆSˆˆNNˆNNSNNNˆNNSSSNNSNNSNNSNNNNSNNNNNSNˆNNNSSSNSSKKJKJKK·J·J·J·JKK·J·JKKKK·JKKK·J·J·JKK·JKKJKJKJ·JKK·J·J·J·KKWKKKKWKK·J·J·KKKKKKKKJKJ·JJKJ·HKJJJJJKJJKJJJJJKJKJKJ·JKJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHJGHGJGGGGGGFFFFFFFDKKKKKKKKKKKKKKKKKKK+20304+üüüþþþþþþþüþþþþþþþþþþüüüüüüüüüóüüüüüüóüüóüóóüóüó14‡4‡4*úóúóóóüëöëëëêõêöìõëöëëëëêëóêòóóóóóðóðóðóððóðóðóðóðóððó133*331ñóðððððóðòððððððððððððððððððððïððïðÑðÑáïÑݰïÑàÑðÑïáïÑ*03000*ÑØ°×ÑïÑÑÑÑÑÐÑÐÐШ°¦ÞÐÑÐÑÑÑÑÑÑÑÑÑÍÑÍÍÍÍÍÍÍÑÍÐÐÍÍÌ+&&&&&&+KKKKKKKKKKKKKKKKKKDFFGFFFFFGFGGGGGGGHGHGJGHJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýýüüýüýúýúýüýúýüÿúóó÷ó÷úóó÷úò¬s? ! !! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!Åüÿÿÿÿÿÿÿÿƒ!!!!!!!!!!!!!!!!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$! !!!!!!!!$$!!!!!@ßÿÿÿÿÿÿÿÿÿÿÌ@!!!!!!!!! !!!!!!!!!!!!!xóÿÿÿÿÿÿÿÿÿ÷‚! ! !xñÿÿÿÿÿÿÿÿÿÿÿÿÿç_!  !!! !‚üÿÿÿÿÿÿÿÿð@!!!!;çÆ_@!@Îÿÿÿÿÿÿÿÿç@‚óÿÿÿÿÿÿÿÿÿÿÈ;xóÿÿÿÿÿÿÿÿÿÿÏ;!‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !ÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  ! !qªíýýýýýýýýýýþÿýüýüüýýýüýüýüüýýàÓKKJ·J·K·K·KKK·KKK·KK·KK·KK·KKK·KKKK·K·KKKKKKKK·KKK·KK·KKKK·KKK·K6i¿6i6ÀŠi86i5À¿½¹cc¶»¶»º»º¶º¶º¶º¼º»‰¿¿½½¿¿¿¿½¿¿¿¿½¿¿½‰½¿<½½‰<½½½½½½½½½½½½½ˆ‰‰‰‰½‰‰‰½½ˆ½‰½½ˆ½½½ˆˆ½‰½ˆ½ˆ½ˆ½ˆ½ˆ½½½ˆ½ˆˆ½ˆ½ˆ½‰½ˆ½‰½‰½½ˆ½½ˆˆˆˆˆˆ½ˆˆ½ˆ½ˆˆˆ½ˆˆˆˆˆSSˆˆSˆˆˆˆ½ˆˆˆˆˆˆ½‰ˆ‰ˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆ‰ˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆNˆˆˆ‰ˆˆˆSSˆSˆˆˆˆSSˆˆ‰ˆˆˆˆˆˆNˆSSˆSˆˆˆˆˆˆˆSˆˆˆˆNSSSNSSSSSSˆˆSˆˆSNˆˆˆSˆˆSˆNSˆˆˆNSˆˆSˆSNˆSSSSˆSSˆSSˆSNNSNSSSNSSˆSNNˆˆNNˆSNNSNˆNSNSSNNNSNˆSSSNNSNNNNˆSNSˆSˆSˆNSSNNNNNNˆNSSNSSNSSNNNNSNNNSNNSNSˆNSNSNNSSNNNKK·K·KKJ·J·KKK·KKJ·J·K·K·J·KKKKK·KJ·JKK··J··K·KK·JKKJ·J·J·KKJ·KKK·J·J·JKKW·JKJ·J·J·J·KKKJ·J·J·K·J·JK·J·J·JKWJJJJJJJKJKJJKJKJKJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHGHGGGFGGFFFFFKKKKK³KKKKKKKKKKK³K+03020+úüþüþþþþüüþþüþþþþüþþþüüüüüüüüóüóüüóüóüóóüüóóüóúó*‡4‡421óóóóóóóöëöëëëìëõëõëõêëêëëãóêðóðóóððððððððòðððóðóððððóñ133*301ððððððððïðððððððððïððÑïÑðÑïÑÑïÑÑÑÑÑïÑïïáÑݰÑïÑÑÑÑÑÑÑÑ*30+30*ÑÔ°×ÑÑÑÑÐÐÑÏÑÑÎÞ°¦ÔÎÍÍÑÍÍÍÍÍÍÍÍÍÍÍÑÍÐÎÐÍÍÍÍÍÍÍÍÍ+&&&&&&+³KKKKKKKKKKKKK³KKKFFFFFFFGFFGFGGGGGHGJGHJGHJGHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓýüüýüýüýýýüýüüüüþüóúóúóóóúóóò¬sC! !!!  ! !!!!! !!!!!!!!!!!!!$! !!!!!!!!!!!!!!$$!!!!!!!!!!!! !!!!!!!!!!!!!–üÿÿÿÿÿÿÿÿ–=!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!!!!! !!=!!!!!!!!!!!!_óÿÿÿÿÿÿÿÿÿò_!!!!!!!!!!$!!!!!!!!!!$!!!!!9–ÿÿÿÿÿÿÿÿÿÿÎ! !!!!!!xñÿÿÿÿÿÿÿÿÿÿÿÿò‚!!!!!!!!!! !!Y÷ÿÿÿÿÿÿÿÿÿÈ!!Y! !! !@Îÿÿÿÿÿÿÿÿð@!Æýÿÿÿÿÿÿÿÿÿü‚ @áÿÿÿÿÿÿÿÿÿÿ÷[!xýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! ! =sªíýýýýýýþýýýþþÿýüýýüüüýüýüýýüüàÖK·KK·KKKKKK·KKK·KKKKKKKK·K·K·K···K·K·K·K·K···K³·K·K·K·K··K³·³³K³6<6Ài<<½66iiÀÀ‰‚ccc¸¼º¼¼¼¼¼¼¼¼¼¶¼¼¾½½½¿½½½½½½½¿6½½½¿½‰½½½½¿½½½½‰½½‰½‰½‰½½‰ˆ½½½‰½‰‰‰½½‰ˆ½½½½ˆ½½ˆ½½½½½ˆ½ˆˆˆ½½ˆ½ˆˆ½½ˆˆ½ˆˆˆˆˆˆ½ˆ½ˆ½ˆ½ˆˆ½ˆˆˆ‰½ˆ½½‰½ˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆSSˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆSˆˆˆˆˆSˆˆNˆˆˆˆˆˆˆˆˆNSˆSSSSSˆˆˆˆˆˆˆˆSˆˆSSSˆˆSˆˆˆˆˆNSSSˆˆˆSSSˆˆSNNˆˆNSSSNˆSˆSˆSSSˆˆSNSNˆSNSˆˆNˆSˆˆSNˆNSNSSNˆˆNNNˆSNSSNSSSNNSˆSSNSSNSˆˆˆNSNSNNSˆSSNNNˆNNSNSNNNNˆSNˆSSNNˆNNNSNSNSSSSSNNNSSSNNNNNˆNNNNSNNNNNNSNSNNNS·JKKJ·J·KKKKK·J·J·KKK·JKJ·KKK·K·JK·J·J·JKKKJJKKJ·KKK·JKKKJKKKKJKKJKKJKKKWKKKJ·JKJ·JKJKWKKKKJJ·HJKJ·HJJJKJJJKJKKWKJKWKJKJKJJKJJJKJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHJHGJGGGGGFFFFFFFFKKKKKKKKKKKKKKKKKKK+20303+üüüþþþþþþþþþþþþþþþþþþüüóüüóüüüüüüüüüüóüüóüóüóüóü12‡4‡41óóóóóóóëöëëìêöëëëëëõêëêìêëóãóóóóóóóóóóóóðóðóðóóóðóóðóó+33*33*òðòðððððððððððððððððððððððððððððððïÑðÑïÑïݰïáèÑïÑïÑáÑ*00+<0*Ñ­°­ÑÑÑÑÑÑÑÐÐÐѰ¦°ÑÐÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÑÍÐÍÍÍÍÍËÍ&&&&&&&+KKKKKKKKKKKKKKKKKKEEFFFFFFGFGFGGGGGHGHGHHGHJHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×üýüüýüýúüüýúýúýüÿúóóóó÷÷÷óó÷ò¬}?!! !!! !! !!! !!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!$!!!!!!!!!!!!!!!!!!!!!!!=!!…üÿÿÿÿÿÿÿÿÆ@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!$! !!!!!!!!!! Æýÿÿÿÿÿÿÿÿÿ–=!!!!!$!!!!! !!!!!!!!!!!!!!!!YçÿÿÿÿÿÿÿÿÿñZ!!!!!!_ñÿÿÿÿÿÿÿÿÿÿÿýÆ=!!!!!!!!çÿÿÿÿÿÿÿÿÿüÆ= !!   !@Îÿÿÿÿÿÿÿÿç@!Báÿÿÿÿÿÿÿÿÿÿñ‚Ëþÿÿÿÿÿÿÿÿÿÿ„ ! dþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   !=}ªíýýýýýýýýýýþÿýüýüüýýýüýüýüüýýàÓKKKKKK·K·K·KKK·KKK·K·K·K·KKKK·K·JK·KKKK·K·K·K·K·K·K·KK·KK·KK·K·Ki¿½¿68½½½ÀŒ66!!!! !!!!!!!!!!!!!!!! ! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!$ !!!!! !!!!!!ÎÿÿÿÿÿÿÿÿÿÌ@!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!!!! !!!! !!!!!!‚÷ÿÿÿÿÿÿÿÿá@! !!!!!!!!!!!!!! !!!!!!_ÿÿÿÿÿÿÿÿÿá!!!_ñÿÿÿÿÿÿÿÿñ_!!!!! !!! @Âüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ!@Îÿÿÿÿÿÿÿÿð;!Ëÿÿÿÿÿÿÿÿÿÿÿü_ _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ;   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !q¥íýýýýýýýýýýýÿþýüýýýúüýýýýúýüýàÖKKKJ·J·J·J·J·J·KJ·KKKKKKKK·KKKKKK·K·K·K·KKKKKK·K·K·KK·KKK·KK·KKK½½½½ˆ½½½ˆ½ˆ½ˆˆ½‰½½ˆ½ˆˆ½½ˆ½ˆ½ˆ½½½ˆ½½½½ˆˆˆ½½ˆˆˆˆ½‰ˆˆˆˆˆˆˆ½ˆˆ½‰ˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ½ˆ½ˆ‰SS‰Sˆˆ½ˆˆˆˆˆSSSˆˆSˆˆˆˆSˆˆˆˆSSˆSˆˆˆˆˆˆˆˆˆˆSˆˆˆNˆˆˆSSSˆˆˆˆˆNˆˆˆˆˆˆˆSˆˆˆSˆˆˆˆSNSˆˆNˆSˆˆˆNSNSˆˆNˆNˆˆˆNˆSSSSˆˆˆˆNSNSNNSSNNSNNNSˆˆSˆSˆNNˆNNˆˆˆSˆNNNNNNSNNˆNSNNˆˆNNNˆNSSSNSNSSSSNSˆNNNSSNNNNSNNSNNSNSSNSSNSSNNSSSNNNSSNNNNSSNNNNNSNSNNˆNNSNNNNNSNNNNNNNNNNNNNNNNNNSNNSNNNNNNNSSNNNLLNNNNLNNNNLNNNNLNNLNNNNNNNNNNLNNNLNNNLLNLNNNNLNNNLNNNNNNNNNNNNNLNNNLNLM·KKKKKKKKKKKJKWKKKKK·J·JKKKJKJ·JKJ·J·J·JKJ·J·HKKJKJJ·H·JJJKJJ·HJ·H·JJJJ·JKWKJJJJJJWJKJKJJJJJKJJKJJJKJJJKJJKJJJJJJJJJJJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJJHJHHHHGJGGGGGGFFFGFFFFKKKKKKKKKKKKKKKKKKK+03000*üüþþþþþþüþüüüüüüüüüüóüüóüüüüüüüóüóüüüüóóóóóóüóúó1P‡44Q*óúóúóüóöööëõëõìëëëêõêëêõêìòòóóóóóóðóðóððóðóðððóððòððòð103*331ñðððððððððððððððððððððÑððïÑðïÑðÑðÑïÑÑðÑðÑݰïÑáÑáÑáÑÑï*03+0**ÑÚ­ØÑÑÑÑÔ°¦ÞÑÐÑÍÑÑÑÐÑÍÑÍÐÍÐÍÍÍÐÍÐÍÎÍÍÍÎÍÍÍÎÐÎÍËÍ+&&&&&&+KKKKKKKKKKKKKKKKKKEEFFFFFFGFGFGGGGGGHGHGJGHGJGHGJHJHJHJHJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýúýúýüüüýúýüüýúýþúó÷óóúóóúóóò¬s? !!!  !!!!!! !!! !!!! !! !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!›üÿÿÿÿÿÿÿÿúZ! !!!!!!!!!!!!!!!!$!!!!!! !!!!!!!!!!!! ! !! !!!…úÿÿÿÿÿÿÿÿÎ@!! ! !!!!!!!!!!!!!  !! !Zÿÿÿÿÿÿÿÿÿá! _ñÿÿÿÿÿÿÿÿáZ!!!!_áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó–@Îÿÿÿÿÿÿÿÿç@!!Zñÿÿÿÿÿÿÿÿÿÿà ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÅüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !!  sªíýýýýýýýýýýþÿýüýüüüýýýúýúýüýúæÓKKJ·JKKKKKJ·JKKJ·J·J·J·J·J·J·J·K·KKKKKKKK·K·K·KKKKKKK·KK·KKK·KK·‰½½½½ˆ½½ˆ½ˆ½½ˆˆ‰ˆˆ½ˆˆˆ½ˆ½ˆ½ˆˆ½½ˆ½ˆ½ˆ½ˆˆˆˆˆ‰ˆˆ½ˆˆˆˆˆˆˆˆˆ½ˆˆˆ½½ˆˆˆˆˆˆˆ½ˆˆˆˆˆSˆˆˆˆˆˆˆˆSˆˆˆ½ˆˆ½SˆˆˆˆˆˆˆˆˆˆˆSSSSˆˆˆˆˆˆSˆˆˆˆˆˆˆSSSˆˆˆˆˆˆˆˆSˆˆˆˆˆSˆˆSNˆSSˆSSNˆSSˆˆSˆˆˆˆSˆˆˆˆSSSˆNSSNˆˆSˆNSSNˆˆˆˆNSˆˆSSSSSNˆˆˆˆNSNSNSNSNSNSNNNSˆˆˆˆNNˆˆNNˆSSSNSNNNNNSNSSˆNNˆSˆSNNNNNSSSˆNˆˆSNNSSSNNSNNNSNNSNNNˆNNˆNNSSˆNNˆNSSNNNNNNNNSNNNNNNNNNSNNNˆNNNNNNNSSNNNNNNNNNNNLNLNNNˆNSNNLNNNNNNNNNNNLLNLNNLNNNLNSNNNNLNLLNNNNNNNNNNNNNNLNNLLNLLNLLLNNNNNLNNNNNNNNNNLLNLLNLcKKJ·J·J·J·JKKKKKJ·JKJKJ·J·J·JKKWKKJ·JKJ·J·JKJ·J·J·KJ·JKK·J·KJ·KKKKJ·J·KJKKJK·J·KKJKJ·JKJ·JKJKJKJKJKJWKJKJKJJKJKJKJKJKJJJJKJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJHJHJHGHGGGFGFFFFFEKKKKK³KKK³KKKKKKKKK+00400+üþüþþþþþüüüüüüüüóüüüüüüóóüóóüüüóóóóüüüóüüóüóóóúó*444421óúóúóóúöëöëëëõëëëëëëêìêëêëêêêããêãêêêêêêêêêêêêêêêêÝëÝãÝ*33*301ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝݰݰÝݰÝݰݰݰݰݰ°Ý°Ý°°°°°°°°®*000+0*°°°°°°°°°¦°°¦°¦°¦°¦°¦°¦°¦¦¦¨¦¦¦¦¦¨¦¦¨¦¨¦¦¨¦¦¦¦¦¦+&&&&&&+³KKKKKKKKKKK³KKK³KEFFFFFGFFFGFGGGGGGHGJGHGJGJHHJHJHJHJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓüýüüüýúýúýúýúüüüÿü÷óúóóúóóúóò¬s?! !!!! !! !!!  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!! !Zóÿÿÿÿÿÿÿÿÿ–!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!! !!!–üÿÿÿÿÿÿÿÿÌ@!!!!!!!!!!!!!!!!!!!!! !!!!!Züÿÿÿÿÿÿÿÿá!!!!!!_ñÿÿÿÿÿÿÿÿÑB!!!!!!!!!!  !@…óÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÆ!;Îÿÿÿÿÿÿÿÿç;_óÿÿÿÿÿÿÿÿÿÿÈ! xýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÃüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   7p¥íýýýýýýýýýýýÿþýüýýýúýüýüýüýüýàÓ·K·J·KJ·K·KKK·K·J·JK·K·K·KK·K·KKKK·K·K·KKKKKKK·K·K··KKKKK·KKKKKK½‰½½‰‰‰‰½‰½‰‰ˆˆ½‰½ˆ½ˆˆ½ˆ‰‰½ˆ½½ˆ½ˆˆ½ˆ½ˆˆˆˆˆˆˆ½ˆˆˆ½ˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆ½ˆ½ˆˆˆˆˆˆSˆˆSˆSˆˆSˆˆˆˆˆˆˆSˆˆˆSˆˆˆˆˆˆˆSˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆˆˆSˆˆSˆˆˆˆSSˆˆˆSˆSSˆNˆˆˆSˆˆˆˆSˆˆˆSSSNSNˆNˆˆNˆˆSNSSNˆSˆSNˆˆSSNSSSˆˆˆNSSSNˆNNˆNNSSNSNˆˆSNˆSNNSNNˆNNSNSNNNSNˆNSSˆSNSSSSˆSNNNNNSNSNSˆSNNˆNSSNˆNNNNˆNNNNNNSNNSNSSNNNSNNNNNNNNNNNNNSNNNNNNSSNNNNNNNNNNNSNNNNNLNNNNLNNNNLLNNNNSNLNNNLNNNSNNNLNNLNNNNNNNNNNNNNNLLNNNLNNNSNLNNLNNNNLNNNNLNLNNLNNNNNNNLLNNLNLL,L,LMcÁK·KKJ·JKJKKJ·JKKJ·J·J·J·JKKJ·JKKKKKKJ·J·JKKJ·JKJKKJKKKJ·JKJKJJKJWKJJKJKH·JKJKJJKHKJJJJJKJJJJJWJJJKJJKJJJJJWKJKWJJJJKJJKJKJJJJJJKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJHJHJHJGHGHGGGGFFGFFFFFKKKKKKKKKKKKKKKKKKK+033+0*üüüóþþüüüóóóóóóóóóóóóóóóóóóóóóðóóóóóóóóóóóóñóðóó13444Q*òððóðóðöëëëëìëëëëèëêêêëêêßßßßßàÞàÞàÞØßàÞàÞØàßßßàÞàØ××Þ*33*33*Ø×Þ×××××Þ××××××××××××××ÌÇ××Ç××Ç×ÇÇÇÇÇ×ÇÇÇÇÇÇÇÇÇÇÇÇÇÇœ*0*03(*™­¦¦–œ™°¦¦™†œ™™†œ†œ†œœœ††††œ††††††††††††††††r††pM&&&&&&+KKKKKKKKKKKKKKKKKKEFFFFFFFGFGFGGGHGGHGJGHGJHHJGJHJHJHJJHJJJHJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJÓ×ýüüüüüüýüýüýýúýüþúóúóóúóóúóóò¬}?!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!Îÿÿÿÿÿÿÿÿÿò;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   !!!!…úÿÿÿÿÿÿÿÿÌ@!!!!!!  !!!!!!!!!!!!!!!!!!Zþÿÿÿÿÿÿÿÿç=!!!!_ñÿÿÿÿÿÿÿÿÌ@ ! !!!!!YÆüÿÿÿÿÿÿÿÿÿÿÿÿÿü‚!!@Îÿÿÿÿÿÿÿÿð@! Îÿÿÿÿÿÿÿÿÿÿÿü_    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ    áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      !=qªéýýýýýýýýýýþÿýüýüüýýýûýüüýüýúæÓKJJKKKKKJ·J·J·JKKK·J·JKJKK·KKKK·J·KKKKKKK·K·K·KKKKKKKK·K·KKK·K·Kˆ½ˆ‰‰ˆ‰‰ˆˆ½½ˆˆ½ˆ½ˆ‰½ˆˆˆˆ½ˆ½ˆˆˆ½ˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSSˆˆˆˆˆˆ‰ˆˆˆˆSSˆˆˆˆSˆˆˆSˆˆˆSSˆˆSˆˆˆˆˆˆSˆˆˆˆSSSSSSˆˆˆˆˆNˆˆSSˆˆSSˆˆˆSˆˆSSSˆˆSˆˆSˆˆSSˆˆNSSNSSSSSNˆSSNˆSNSSSNˆˆNSSSSSSSˆˆSˆNSSˆSNSNNNNNSSNNNSˆNNSNNSSNNSNSSNNˆNNSNNNNSSˆNNNNNSNNNNNNNNNNNSNNNNNˆNNNSNSNˆNNNNNˆNSNNSNNSNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNSNNNNNNNNLNLLNNNNNNNNNNNLNNNNNLNNNLNNNLNNNNNNNNNLNNNNNLNLNLNNNNNNLLNNLNNNLLNNNNNLLLLNNLNLNNLNNNLLLNLNL\hÄÁKJKKKJ·J·J·J·J·JKJKJ·JKKKWKKJ·KJKKWKKKJKKWKJ·JJ·JJJWJJJWJJKWKJKJKKJ·JJJJJJJKJKJWKJKJKJKJKJKJKJKJKJJKJJKJJKJJJJJKJJHKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJHJJHJJHJHJHHGJGHGGGFGFFFFFFEKKKKKKKKKKKKKKKKKKK+30000+üüüüþþþþúúóóóóóúóúóóóóóóóðóòóóóóóóóóóóóóóóóóðòñð*444441òðòðòððöööëöëëëêëëêëêêêââàâßßßÞàâßàÞàßâßàÞàÞßàâÞàÞÞ×Þ×133*33+Þ××ÞÊ×É×××ÉÊ×ÉÊ×É×ÉÊ×É×ÇÊ×ÇÉÇמÇ×ǞמÇ×ǞǞ×ÇÇÇÇÇÇÇÇž*000+01œ¦°Çœ™¦¦°™™™™œ–™†™†™™›™œœ™†œ††œ††œ††††††††††††‚†&&&&&&&+KKKKKKKKKKKKKKKKKKDFFFFGFFFFGGGGGGGGHGHHGHGHGJGJHHJHJHJJHJJHJJJJJHJJJHJJJHJJJHJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJÓÓúýüýüüüüúüûúüüüüÿüóóúóóúóóúóò¬Ž? !   !!!!!!!!!!!!!!!!  !!!!!!!!! !!!!! !!!!!!!!!!! !!!!!!!!!!!!…üÿÿÿÿÿÿÿÿÿ„!$!!!!!! !!!!!!!!! !!!!!!! !!!!! !!!!!!!!!!!!!!ƒ÷ÿÿÿÿÿÿÿÿÎ@!!!!!!!!!  !!!!!!!!!!!!!!Yÿÿÿÿÿÿÿÿÿá !!_ñÿÿÿÿÿÿÿÿÌ@!  !!  9_áÿÿÿÿÿÿÿÿÿÿÿÿÿ÷_!;ÎÿÿÿÿÿÿÿÿçY‚óÿÿÿÿÿÿÿÿÿÿÿÿÎ;ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! ! 9qšíýýýýýýýýýýýÿþýüýûüüüüüüýüýüýàÖJ·KK·JKKKKKKKKKKKKJKKKK·J·JKKKKKK·J·J·KKKKKKKKK·K·K·KKKKK·KKKKKKˆ½ˆˆˆˆ½ˆ½ˆˆ½ˆˆˆ½ˆ½½ˆˆ½ˆ½ˆˆˆˆ½ˆ½ˆˆ½ˆˆˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆ½ˆSˆˆˆˆˆ½½ˆˆˆˆˆˆˆˆˆˆˆSˆˆˆSˆˆˆSˆˆˆˆSˆˆSˆˆˆˆˆˆSˆSˆˆˆSˆˆˆˆˆˆˆSSSNSSSSSSˆSSSˆSSSSˆˆSSSˆSSSˆˆˆˆSNˆSˆˆˆNNˆˆˆNˆˆNSSNSˆSˆNNˆˆˆNSNSNSNNNSˆSNSNNSSˆNNˆSNNSNNˆSNNˆNNSSNSNSSNSNSNNNSˆNˆNNNSSSNNNˆSSSSNNNNNNNNNNNSNNNNNNNNSNSNNSNNNSNSSNNNNSNNNNNNNNNˆNNNNLNNNNNNSNNNNNNNNNNNNNLNNNNNNNNNNNNNNNNNNNNNNLNNLLNNNNLNNLNNNNNNLNLNNNLNNNNNNNLLLLLLLLLLNLLLNLLLLNNLLLNLLLNNNNLLNNNLNLLNLNLNNLNLLLLMcÁÄÄÄX\^X^X^X^X^X^X^X^bbX^X^X^XXbX^Xb^XXbX^bbYXXbVXV^VbXbXX^XXX^XXX^XXV^VXXX^XXX^VXVbXXVXVXVYXXVXXXXVXVXVXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXTXXTXTXTXTXTXTXTXTTXTTTXTTXTTTTTTTTTTTTTTTTTKKKK³KKK³KKK³KKK³KK+003+<+üüüüþüþóüóúóúóúóúóúóúó÷÷óóóóóòóòòòñóñóóóóòòðòððò134444*ðñðõðòðöëëöìëëëìêëëêìêâàâèâßßàßßâßâàâßâßâàâßßâßßßßÞØÞß*03*33*××××Þ××Ê×Ê××××É×××××××Ê×מ×Ç×ÇÇÊÇÒÇÇÇÇœ×ÇÇÇÇÇÊÇǞǙÇÇ*0*0*0*Ò¦°¦™™°°¨…œÇ™™™™œ™™†™†™™™†™†™††™†™†™††œ†††††††††+&&&&&&+KK³KKK³KKK³KKK³KKKTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXTTTTTXTTTXTTTXTTXTXTTXTTXTXTTXTXTXTXTXTXTXTXXTXTÓ×ýüýúýúýüüýüüüüúýþúóúóóúóóúóóò¬Ž?!!  !!!!!!!! !!!  !!!!!!!!!! !!!! !!!!!!!!!!!!! !!!!!!!!@ñÿÿÿÿÿÿÿÿÿñ@!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!  !!!‚÷ÿÿÿÿÿÿÿÿá@!!!!!!!!!!!!!!!!!!!_ÿÿÿÿÿÿÿÿÿÏ!!![ñÿÿÿÿÿÿÿÿÌ; !!!  !!! BÅüÿÿÿÿÿÿÿÿÿÿÿÿñ#!!Îÿÿÿÿÿÿÿÿç@;Ñÿÿÿÿÿÿÿÿÿÿÿÿÿý !!‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ; !!! !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóx ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! p¢éýýýýýýýýýýýÿýüýüüýýýýýýüýúýúæÓX^X^X^X^X^X^X^X^X^X^X^XXXXX^X^X^XXX^XX^X^X^X^XXXX^XXX^X^XXX^X^XXˆ½ˆˆˆˆ½ˆ½ˆˆˆ½ˆ½ˆˆ‰ˆˆˆˆ½ˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆ‰ˆˆˆˆˆˆˆˆˆˆSˆˆSˆSˆˆSˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆSSSˆˆˆSˆˆSˆˆˆˆˆˆSˆˆSˆˆˆˆˆˆˆˆˆˆNSˆSˆSSSNSSˆˆSˆSNNˆˆˆˆSSˆˆˆˆSSˆˆNNˆSˆSˆNSNˆNSˆSNSSNNSSˆˆˆˆSSSˆNSNNSSNNNSSNSˆNSSSSSˆNSNNSSˆSNNˆNˆSSNNNNNNNSˆNNSNNSNNSNNSSSNSNSNSNNNNNNNNNNNNNNNSNNNNSNNNNSNNNNNNNNNSNNNNNNNNNSNNNNLNNNNSNNNNNNNNLNLNLNLNNNNNNNNNNNNNLNLLNNNNNLNNNNNLNLNNLNNNLNNNLNNLNNLNNNNNNNNNNLLNNLNNLNLLNNLNLLLNNNNNLNNNNLNNNLLNNLNNLLLNLNNLLL,LNbgÁÄÄÄÁXXXXXXTXXXTXXXXXVXVXXXXXXXXXXVXXVXXXVXVXWXXXXXXXXXVXXXXXXXXXXXXXXXXXXVXXXVXTXXXTXXXXXTXTXTXTXTXTXTXTXTXTXTXTXTXTTUTUTTTTTUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTVTTTXTTVTTTXTVTTTTTTTTTTXXXXXXXXXXXXXXXXXXXX+*0000+üüüóüüúú÷ó÷úú÷óú÷óú÷÷÷÷ú÷óòòóòóóóóóñòòóñòóóòñóðñ1444431èðððððòìëëöëëëëèìêëêãàßâßââââßàßßâßÞßâàâÞâßàßßßßàÞÞàØ×*33*331×Þ×ÞÞ×Þ×××ÒÞ××××Ê×Ò×Ò××Ê×ÒÇÊÇž×ÇÇÊÇžÇÇÊÇלǞǞǞǞǙž*+0(0++™°°¨Ç¦°¦™Ç™™Ç™™™Ç™™œ™†™™†™™†œ™œ††œ††™††™†††††††+&&&&&&+XXXXXXXXXXXXXXXXXXXTTTTTTTTTTTTTTTTTTTTTXUTTVTXTTTXTVTTTVTTTXTTVTTTTVTTVTTTTVTTTTTTTTTTTTTTTTTUTT×Õúýüüüýúýúüüýúýüúÿüóóúóóúóó÷÷ò¬}?!!!!! !! !! !! !!!!!!!! !!!!!!!! !!!! ! !!!!!!!!!!!!ÈýÿÿÿÿÿÿÿÿÿÆ!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!! ! !!!!!  !!!!!!!_óÿÿÿÿÿÿÿÿòY!!!!!!!!!!!!!!!!!!!!‚ÿÿÿÿÿÿÿÿÿÎ!!_ñÿÿÿÿÿÿÿÿÍ!! !!!!! !!_áÿÿÿÿÿÿÿÿÿÿÿÿÈ!;Îÿÿÿÿÿÿÿÿð@ –üÿÿÿÿÿÿÿÿÿÿÿÿÿÿð@!‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9 !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!q¥íýýýýýýýýýýýÿþýüýýúüüüüúýüýýýàÓXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX‰‰ˆˆˆ½ˆˆˆˆˆ½ˆ½ˆˆˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆ½ˆˆˆˆˆSˆˆˆ½‰ˆˆ‰ˆˆˆˆˆˆˆSˆˆNˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆNˆˆˆˆˆSSˆNˆNˆˆˆˆˆSSˆˆSˆˆˆˆˆˆSˆSˆˆˆˆNSNˆˆNˆˆSSSNNˆˆSNˆˆSNSSSˆˆSˆSNSNNSSˆˆSˆSNˆNNˆˆSSNNNNˆˆˆSSNSNNNNSSˆNSNNNSSNNNSSSSSSNNSNSSSSNNSNSSSˆˆNNNNSNNSSSSNNSNNSSSNSNNSNSNSNNNNSSNNSNNNNNSNNNNNNNNNNNSNSNNNNNLNNSNNNNNNNNNNNNNLNNNNNNNSNNLNNNNLNNNLNNLNNNNNNNNNNNLNNNNNLNLNNNSNLLNLNLNNNNNLLNNLNNNNNNLNNNLNNLNLNNLNNLLNLLNNLNLNLLLLLNLNNLLLLLLLNNLNLLNLLLNLLLM\hÁÄÄÄÄÄTTTTTTTTT"TT:"TT"T"TT"T"TT"T"TT"T"T"T"T""T"T"T"T""TT""""""""""""":::"0"T::"T:T:T:T"TTXXXXXXXXXXXXXXXXXXX+03030*ýüüüúúóóóóó÷÷úó÷ú÷ú÷ú÷ú÷úóóóòúó÷òòóóóòòðòóòòóñòð1P4444*ðèóòðíñëöëëöëëêëãëêêàâÞßâàâââââßßßßàßßâßâââßßßߨߨßÞߨ133*331ß×ß×ß×ÞØÞÒ×ÞØ×Ò×Ì×××Ç××Ç××Ç×××Ò××Ç×Ç­ÇžÇ×Ç×Ç×ÇÇÊÇÇÇÇ™*0+0*0*Ǧ°­¦°°™™™™™™™™Ç™™™™™™†™™†™™†™™†™†™†œ††™††††††††+&&&&&&+XXXXXXXXXXXXXXXXXXX"T""T"T:T:T:"T"Ö×ýüüüýúýüýúýúýúûüÿúóúóóúóóúóóò¬s>! !!!!!!!!!!! !!!!!!!!!!!  !!!!!!!! !!!!!!! !!!!!!!!!!Zóÿÿÿÿÿÿÿÿÿ÷Z!!!! ! !!!!!!!!!!!!!!!!!!!!! !!!  !! ! !!!!!!!ZñÿÿÿÿÿÿÿÿüZ!!!! !!!! !!!!!!!#ÅÿÿÿÿÿÿÿÿüÆ _ñÿÿÿÿÿÿÿÿË!!!!!!!! !!!!!!!;Æÿÿÿÿÿÿÿÿÿÿÿ÷B!;Ìÿÿÿÿÿÿÿÿç;Yðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…! ! ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! !  !Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      !qªíýýýýýýýýýýýÿýüýüýýýýüýýüýúüüæÓTTT"T:T"TTT"TTTTTTTTTTTTTTTTTT:"TTTTTT:TT"TTTTTTT:TTTTTTTTTTTTTT½ˆ½ˆˆ½ˆ‰ˆˆˆˆˆˆˆ½½ˆˆˆˆˆ½ˆˆ½ˆˆˆˆˆ½SˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆSSˆˆNˆSˆˆˆˆˆˆSˆˆˆˆˆˆSˆˆSˆˆNSˆSSˆSˆSSSSSˆˆˆˆˆNˆˆSSNNNSNNˆˆSˆNˆˆˆSSˆSSNSˆˆNNˆNSˆNSNSˆSˆˆˆSˆNSSSNSNSNNSNNSNSˆNSSNSSNSNNSSNNNNSNNSSSNNNNNNNSSSNSNNNSSNSNNSSNNSNNSNNNNNNNNNNSNSNNNSNNNNNNNNNNSNNNSNSNNNNNNNNNNLNNNNNNNNSNNNNNNNNNNNLNNNNNNLNNNNNNNLNNNNNNNLNNLNNNNSNNLLLN,NLNNNNLNLLNNLNLLNNLNNLLNLLNLNLNLLLLNLNLLNNLNLLLLLLNNLLLNNLNLNLLLLNNLLLLMcÄÄÄÄÄÄÄÄT:T"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT""0"""""TTT"TTT TT"TTTTTTTTTTTTTTT"*00+00+üüúüúúú÷÷ú÷÷ó÷úó÷ú÷úúúúúú÷óò÷ó÷óóòóóóóòóñóñóñòóõ*4444P1ðððõððòëìëöëìëëêìêãßÞßàâàáèëèâãââãßâßßàââãßßߨàßߨßߨÞ133*33+ØßØßߨ××ÞØÞØÞ××ÞØ×Ê×Êל×Òרœ××ÇÒ×ÒÇÊ×ÇלÇÇÒÇל×ÇÇמÇÇ**0+0+*ǰ°¦°¨­™™ÇÇ™™™™™™™Ç™™™™™™œ†™™™™™™†™™™™œ††œ††††††+&&&&&&+TTTTTTTTTTTTT"TTT"TÓÓüüûüüýúüüüüüüüüüþüóóúóóúóóúóò¬s>!!!!!!! !! !!!!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!ÈþÿÿÿÿÿÿÿÿÿÎ!!!!! !!!!!! !!!!!!! !!!!!!!!!!! !! !!!!! !!9çÿÿÿÿÿÿÿÿÿx! !!!! !!!!!!!!!!!!!!!!@ßÿÿÿÿÿÿÿÿü–!!  _ñÿÿÿÿÿÿÿÿÍ!!!!‚ýÿÿÿÿÿÿÿÿÿÿÌ;Îÿÿÿÿÿÿÿÿð@ÆþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóY   _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ; áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !  !=qªíýýýýýýýýýýýÿþýüûýúýúýüüûüýýüàÓTTTT"TTT"TTTT":T"T"T:T"T:T:T"TTTTT"TT"TTTTTT:TT"TT"T:T"TT":T"T:Tˆˆˆˆˆˆˆˆˆˆˆˆ½ˆˆ‰ˆˆ½ˆˆ½Sˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆ½ˆˆˆˆˆˆSSˆˆˆSˆˆSˆˆˆˆ‰ˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSSSSSˆˆˆˆSˆNˆˆˆNˆˆˆˆˆNˆˆNˆˆNSˆNˆˆˆSˆˆNSNˆSSSˆˆNNˆˆSSˆˆˆˆNSˆNˆSˆSNNˆSNSNNˆSSNSNNNSSˆSSNNNNNNNSNSNˆSNNSSSSSNSNNNˆSNSNNˆNNˆNSSSSNNSNNNNNNˆSNNSNSSNNNSNˆSNNSNNNNNNNSNNNNNNNNNNNNSNNLNNNNNSNNNNNNNNSNNLNNNNNNNNNNNNNNNNNNNNLNNNLLNNLNNNLNNNNNNNNNLNNNLNNNNNLNNLNNNNLNLLLNLNNNNNNLNNNLNNNNNLNNLNNLLNLLNNLNNLLNNLLNNLLLLNLLNNNNLLLLNLLNLLNLLLLLchÄÄÁÄÄÄÄÄÄTT"TTTTTTTTTTTTTTTTTTT""""""""TTTTTTTTTTTTTTT:TT:TT:TT"TT+00303+ý÷üúúúóúú÷úó÷÷÷ú÷úúúúúúúúó÷÷ó÷÷÷òúò÷÷òóòóòóñóòð÷*44444*òñèóðòðëëëëöëëëìêêàßàßßââââèëèâöââàãââßãßâàãàßßߨߨßàØ*03*33*à×ßߨר×Êß×ßרÞÊ×Þ×××ר×××××××Ê×××Ç­×ל××Ç­Ç×ÊÇ­žÇ­Çž+0+0*0*Ǧ°°°¦™ÇÇ™ÇǙǙ™Ç™™Ç™™™™™™™™™™™™™†™™™™†™††™™††††+&&&&&&+T:T"TT"TT"TTTTTTTTT××ýüüüýúýûüüúýúüúýÿúóúóóúóóúóóò¬s?!! ! !!!!!! !!!!!! !!!!! !!!!!!!!!!!!!!!!!!!! !! Z÷ÿÿÿÿÿÿÿÿÿÿ–!! !!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!ÏÿÿÿÿÿÿÿÿÿÆ@ !!!!!!!!!!!!!!!!!! !!!Y÷ÿÿÿÿÿÿÿÿóx!!! !_ñÿÿÿÿÿÿÿÿÌ9 !!!!_üÿÿÿÿÿÿÿÿÿó! ;Ëÿÿÿÿÿÿÿÿç;!_óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  ‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!!  ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ       =}ªíýýýýýýýýýýýÿýüûüüýüýüýüüýüüýàÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTˆ½½ˆˆˆ½ˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSSˆˆˆSSSSSSˆˆSˆˆˆˆˆSSˆˆˆˆˆˆˆˆSˆˆˆSˆˆˆˆNˆˆSSˆˆˆˆSSSSSSSSˆˆSSNSˆˆSNˆˆˆˆˆSˆˆˆSˆˆSSSSˆNˆˆSSˆˆˆNSˆNˆSNˆˆˆˆNSSˆSSˆSNˆSˆNˆSSNˆSˆSSNNSSNNNSSNNNNNNNNSNSNSSSNNNˆNNˆNSˆNNSNNSNSNNNNNNSNNSNNNNNNNNNSNNNNNSNNNNSNSNNNNNNNNNNNSNSNNNNSNNNNNNNNSNNNNNSNNNNNNNNNNNNNNNNNNLNLLNLLLNNNLLLLLLNNLNNNNNLLNNLNNNNNLLNNLNLNNLNNLLNNNNLLNLLNLLNNLLLLNNNLLNNNNLLNNLLNLLLLNLNNLNLNLLLNLNLLNNNNLLLNLLNLLNLLLLLLLLMchÄÄÄÄÄÄÄÄÄÄTTTTTTTTTTTTTTTTTTTTTTT:TTTTTTTTTT:+0+300+üüúúú÷ú÷÷óò÷óóóúúóúóóúóú÷÷÷÷÷÷ó÷ó÷úú÷óòóòóóó÷óóò*444441ðòððòðòëëëöëëëëêãßßßßßâÞñâèëââãâââêâàâêßßßßßßÙߨßߨß×à*33*33*ØßØß×Þ×ß×ߨÒß×ߨÊ×Òר×Ê×Ê×Ê×Ò××ל××Ç­ÇÊ×ÇÒÇ×ÇÇ×ÇÒÇžÔÇ*+0+0+*™­°°¦­ÇÇÇ™™ÇǙǙ™Ç™™™Ç™™™™™™™™™™™™™™†™†œ†™††™†††+&&&&&&&TTTTTTTTTTÓÓüüýúüüüüýúýúýüüüþüóóúóóú÷ó÷÷ò¬? !!!  ! !   ! ! !!!!  !!!!!!!!!!!!!! !!!!!!! !!!!!!!!Èþÿÿÿÿÿÿÿÿÿü_!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! !!!!!!Èýÿÿÿÿÿÿÿÿç@!!!!!!!!!!!!! ! !ÿÿÿÿÿÿÿÿÿñY_ñÿÿÿÿÿÿÿÿÌ;! !! xÿÿÿÿÿÿÿÿÿýd;Îÿÿÿÿÿÿÿÿç@!Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü_ !_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ =s¥íýýýýýýýýýýýÿþýýüýüýüýüüýüúýüæÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT‰‰ˆˆˆ½ˆˆˆˆˆˆˆˆ½ˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆSˆˆˆˆˆSˆˆSˆˆˆˆSˆˆˆˆSSSˆSSSˆˆSSˆSSˆNˆˆˆSSSSSSˆSˆˆSSSNSSˆSNSNSSˆˆˆSˆˆSˆˆˆˆˆˆˆNˆSSNSNSˆˆSˆˆˆNSˆSSNNSˆNˆSˆNSˆˆSSSSSSNSNNNSˆSNNNNSNNNNNSNˆNNNSNSSSSNNSNNNNNNNNNSSNNNNNNNSˆSNNNNNNNSSNNNNNNNNNNNNNNNSNNNSNSNNSˆNSNSNNNNNNNNNSNSNNNNNNNNNNNSNNNNNSNNNNNNNNNNNNNNNNNNNNLNNNNNNLNNLNNNNLLNNNLNLNLLLNNLNNLLNLNNNLLLLLLNLNNLLLLLLNLLLLLLNNLLNNLNNNNNNLLNNLLLLLNLLNNNLLNLLLLLN,NLLLLNNNLLLLLLLNLLL\gÄÄÄÄÄÄÄÄÄÄÄÄTTTTTTTTTTTTTTTTTTTTTTTTTT""TTTTTTTTTTT+0330++üüüüúó÷óó÷÷òóú÷÷úó÷ó÷÷ó÷ó÷ó÷òú÷÷ò÷÷úóóòòóòòñóòòò*44434*òðóòòðñëëëìëöìëêàâßßßàãâêâââëñèëâëâêâêâàãßàãßàÝߨߨØßØ*33*33*ߨØßØØØØß×ß×רØß×ר×××××ר×××××ÊØ××Ê××××­Ç××­×Ò×­ÇÇǨ0++0*+*ǰ°°­™Ç™­ÇÇÇ™™™Ç™ÇǙǙ™™™™™™™†™™™™™™™††œ™†œ††™††+&&&&&&+TTTTTTTTTTTTÓ×ýúüýûüüüüüüüüúûüÿúóúóóúóó÷óóòÓ?!!!!!!  !!!! ! !! !!!!   !!! !!!! !! !!!!!!!!!!Bñÿÿÿÿÿÿÿÿÿÿò@!! !!!!!!!!!!!!!!! ! ! !!!!   ! !!!!!‚÷ÿÿÿÿÿÿÿÿÿ_!!!!!!!!!!!!!;Ìÿÿÿÿÿÿÿÿÿá![ñÿÿÿÿÿÿÿÿÌ;!!! !!!!!! !! ËÿÿÿÿÿÿÿÿÿÌ;Îÿÿÿÿÿÿÿÿç@!„üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ9  ‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! !    ! =qšíüýýýýýýýýýýÿýüüýüýüýúýûüýýüýàÓTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT½ˆ½ˆ½ˆSˆˆˆˆˆ½ˆˆˆˆˆˆˆ½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆSˆˆSSˆˆˆSSˆˆˆSˆˆˆˆˆˆSSSNˆNSˆSSˆˆSSSˆSˆˆˆˆˆNNNSˆˆˆNˆSSˆˆˆSSSNSˆSNSˆˆˆNˆˆSˆˆˆSˆNˆSSNSˆSNˆˆˆˆˆˆSˆˆNSSNSNˆSSNSNNSSSSNNNSSSNSSNNNSNSˆNSNNNSˆNNNNSSNSNNNNˆNNNNNNNNNNNNNNNSNNNSSNNNNNNSSNNNNNNSNNNNNNNNNSSSNSSNSNNNNNNNNNNNNNNSNSNNNSNLNLNNNNNNLNNNNNNNNNNNNLLNNNNLNLNNLLNLLNNNLLNNNLNLNNNNLLLLNLLNLLLNLLLNLNNNNNLLLLNNNLNNLNNNLLLLLNLLLNNNLNNLNLNLNLNLLLLNLLNNNNLNLNN,LLLLLNLLLLLLLLNLLLLLL.MLchÄÄÄÄÄÄÄÄÄÄÄÄÄTTTTTTTTTTTTTTTTTTTTTTTTTT"++0000+úúúüüú÷÷óòó÷óúúó÷÷÷÷÷úò÷ú÷÷óú÷÷óú÷ú÷óòóóòóòó÷÷óò*444431ðòñóòðòëëëêöëëèããêêããêêêãëâêâãëãìããöãêêãßêßêãêãÝÝÝÝÝÝÝ*33*M3*ÝÝÝÝÝÝÝØßÒÝÝÝÝÝÝÝݰÝÝ×××­Ýݰݰݰݰ­×Ò×­°­°°°­°­°­­Çצ*0++0+*°°°°£ÇǦ¦°¦°¦°¦¨¦¦¦Ç™¨¦¨¦¨¦¨¦¨¦¨™™™™¨¦¦¦¦¦¦¦¦¦™†+&&&&&&+TTTTTTTTTTÓÓüýüüüýúüüúýúüüüüþüóó÷÷óóúóú÷鬎?!!  !! !!! !!!!!!!!!!!! !!!!!!!!!!!!! !!!!!„üÿÿÿÿÿÿÿÿÿÿá;!!! ! !!!!!! !!!!  !!!! !  !!!!!!!!!YñÿÿÿÿÿÿÿÿÿÈ@!! !!!! !!! ! !!!ZüÿÿÿÿÿÿÿÿüÆ !!_ñÿÿÿÿÿÿÿÿÎ$!!;ÿÿÿÿÿÿÿÿÿñ;Îÿÿÿÿÿÿÿÿð@@áÿÿÿÿÿÿÿÿÿÿ–çÿÿÿÿÿÿÿÿÿÿ‚‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÃüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! !   =s¥íýýýýýýýýýüýÿýýýüýúýüýüüýüúýüàÓˆ½ˆSˆˆˆˆˆˆSˆˆSˆˆˆˆˆSˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆSSˆˆSˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆSSˆˆSSSˆSˆSSˆˆˆˆˆSˆSˆˆˆˆˆˆSSˆNˆˆSNSNSNSˆˆˆˆSˆSSˆNSNSSSSSˆNNSNˆˆSˆNNSNNˆNNNˆNNSNSSNNSSSNSSNSNNNSNSNˆNNSSNNSNNSˆNNNˆSSNˆNSˆNNNSNNNNNSNNNNSNNNNSNSSNNNNNSSNNˆNNNNNNNLNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNLNNLNLNNLNNNNNLNNNNLNLNLNLNLNNNLNNNLLNLNNNLNLNNNNNNLNLNLNLLNLLLNLLLNLNNLNLNNLLLLNNNNLNLLNLNNLLLLLLLNLNLLLLLNLLLLLLLLLLLLLLNLNLLLLLNLLLLLLLLLLLLLLLLLLLLLMhÁÄÄÄÄÄÄÁÄÄÄÄÄÁÄT0"TT:TTTTTTTT TTTTTTT+003+3+úúüúüüúúúú÷úúúóúó÷ó÷÷÷÷ó÷òú÷úúò÷÷úòóñ÷ð÷óòóòòóòó*43443*òôòððòðöëìëëëèâêëêãêêêãêêêâãèêêëëãöãêãêãàâßêÝãÝêÝÝÝãÝÝ*3M*33*ÝÝÝÝÝÝÝרßÝÝÝÝÝÝÝÝ­Ý­Ø×ÒÝ­Ýݰݭݰݭ×××­°­°Ý°­°°­­Ç­ž­*+0*++*°¦°¦Ç­Ç¦¨¦°¦¨¦°¨£¦™Ç™™¦¨¦¦¦¨¦¦¦¨™™†¨¦¦¨r¦¨r¨¦¨r†+&&&&&&+TTTTTT  Ó×ýúýúýüüúýüúýúýúýÿúóúóóúóó÷óóò¬ŽC!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!! !!!! !ÑÿÿÿÿÿÿÿÿÿÿÿÎ!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!Ïÿÿÿÿÿÿÿÿÿü]!!!!!!!!!!! !!!@Æÿÿÿÿÿÿÿÿÿó_ !!!![ðÿÿÿÿÿÿÿÿË!!!!! !!!!Y–Ï–!! çÿÿÿÿÿÿÿÿú;Îÿÿÿÿÿÿÿÿç@ ÂüÿÿÿÿÿÿÿÿÿÎ@‚óÿÿÿÿÿÿÿÿÿñ;   xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   !!q¥éüüýýýýýýýýýÿýüüýúýüýúýýúýýüýàÓˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆˆˆˆˆˆˆSˆˆˆˆSˆSˆˆˆˆˆSˆˆˆˆSˆˆSˆˆˆSˆˆˆSSˆNˆˆNˆSSˆˆSˆSSˆˆNSˆˆˆˆˆSˆSˆˆˆSSˆˆNSˆNSSSSNNSSSSˆSNˆˆNSSSSˆˆNSSˆˆˆNNSSˆNNSSNSˆNˆˆSNSSNSˆNSNSNNSˆNNSNSNSNNNNNNSNSNNSSNSSNNSSNNNSNNNNSNNNNNNSNNNNNSNNSNNSSNNNNNSNNSNLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNLNNNNNLNNNLNNNNNNNLNNLNNNLNNNNNLNLNLNNNLNNNNLNNLNNNNLNNLLNLNNLNLLNNLNLLNNNLLNLNNNLNLNLLLNLLLLLLLLLLLLLLLLLLLNLLNLLNLLLLNLLLLLLLL.LLLLLLNLLLLLLLLLLL\gÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄ:TTTTT"TT0T:T"T"TTTTTTT(30000+üüúúóúúúúúúúúúó÷÷úúóú÷ó÷óò÷÷÷÷÷òóúó÷òóòòó÷óòóò÷÷*44434*òñóòõðòëëëëèâèââàâàâßßàââëâèêâãâãââêàêßâêßßßàßßßßßàߨß*33*331ÞØØßØ×ØßØ×רררÒררר××Ò×Ê×Ò××Ê××­ÇÒ×Ç×Ò×ÇÇ××Ç­ÇÇÔÇ*0++++*°°¦Ç­™ÇÇÇÇ™™Ç™™™™™™™™™™™™™™™™™™™™™™™†™†¦††¦†††œ†+&&&&&&+TTTTTTTÓÓýüüüüüûüüúýúýúüüþüóóú÷óóúóúóò¬Žl !!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!! !!!!!!!YóÿÿÿÿÿÿÿÿÿÿÿÎ!!! !  ! !!! !!!! !!!!! !! !!!!!!!!–úÿÿÿÿÿÿÿÿÿÌ@  !!!!! !!!Zúÿÿÿÿÿÿÿÿÿá!!!_ñÿÿÿÿÿÿÿÿÌ#!!Y…ÎóüüÿÎ!!Æÿÿÿÿÿÿÿÿü!;Îÿÿÿÿÿÿÿÿð;[ðÿÿÿÿÿÿÿÿÿü_ !ÎÿÿÿÿÿÿÿÿÿÿÂ!_ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ!  áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    pªíýýýýýýýýýýýÿþúýüýüûýüýüüýúýüæÓTT"T:T:TTT"T:TTT"T:TTT"TT0T"T"MT"TˆˆˆˆˆˆˆˆˆˆˆSSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSˆSˆSˆSˆˆNˆˆˆˆˆˆˆˆˆˆˆˆˆNSˆˆˆˆSˆSSSSˆˆˆˆSNˆˆNNˆSSˆˆˆˆSˆNˆSˆNSˆˆSSSNSSSNNSSNNSSˆSSSSˆˆˆNNNSNNSSSNSNNSNNNNNSSSSNNˆSNSSSNSSNˆNNSNSSNNNNSNSNSSNNSNSSNNNSSNNNNNNNNNNSNNNNNSNSNNNNNNNNNNNSNSNNNNNNNNNNNLNNNNNLNNNNNNNNNNNNNNNLNNNNNNNNNNLNNLLNNNNNNNNNNLNNNNNNNNNNNLLNNLLLNLNLNNLLNLNNLNLNNLLNLLNLLNLNLLLLNLLNLLLN,LNLLNLLNLNLLLNLLNLNLLLLLLLLLLLLLLNLLLLLLNLLLLLLLLLLLLLLL,LLLLLLLLLLLLLLMdÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ""""TTTTT:TT: TTT+0303++üüüúúúúúúúúúúóó÷úúúúó÷ó÷ñ÷ó÷úòó÷ú÷÷òúó÷ò÷ò÷÷ò÷òó+44443*òðóòòðòëëêëëëêêãëãêãêêããêëãêãëëãëãëãêãêãêÝêêÝãêÝãÝãÝãÝ*33*33*ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ­Ý­ÝÝÝÝ­Ý­ÝÝ­Ý­°­­­Ý°­­°­­°­­­°­¦­¦¨1++0++*°¦¦­¨¦¦£¦£¦¨¦¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¨¦¦¨¦¦¦¨¦¦¦¨r¦¦¦&&&&&&&+TTÓÓüüúýúüüüúýúýúýúýÿúóúóó÷úóóóúò¬s?!! !! !!!!!! !!!!!!!!!!! !!!!!! !!!!!!!!!!! !‚üÿÿÿÿÿÿÿÿÿÿÿÌ! !!!!! !!!!!!!!!!_‚@! !@ñÿÿÿÿÿÿÿÿÿý_!!! ! !!!!!!!!#ÎÿÿÿÿÿÿÿÿÿüÆ  !![ñÿÿÿÿÿÿÿÿË!!!!ÈñüüÿÿÿÿÿÎ !!!‚ÿÿÿÿÿÿÿÿüY!;Ìÿÿÿÿÿÿÿÿç@ !ËÿÿÿÿÿÿÿÿÿÿË@ ZóÿÿÿÿÿÿÿÿÿüB  !dþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóx  ÆýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    ! !p¥éüüüýýýýýýýýÿýýüýüýüüýúýûüýüûàÓ"""ˆˆˆˆˆˆˆSSˆˆSSSˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆSSˆSˆˆˆˆNSNSSSˆˆˆSˆˆˆˆSSSˆSˆNSˆNNSNSˆˆˆNNNˆSNNNNNˆSSˆˆˆˆSˆNˆˆNˆSˆSSˆSSSSSSSˆSNNSSNSˆˆNSNSSNSSNNNNˆSˆNNSNNSNNNNNSSSNSNSNSSSˆNSSNNNNSNNˆNSNNNNNNNNSNNSNNNNNNNSNNNNNNNNNNNNNNNNNNLNNNNNNNSNNNNNSLSNNNNNNNNNNNNNNLNNLNNNNNNNNNNNNLNLLNNNNLNLLNNLLLLNNNLNLNNNNNLNNLNNLLNNLNNNLLLLLLLNNLNNLNLLNLLNLLLLLLLLNNLLLLLLLLLLLNLLLNLLLNLLNLNLLLLNLLLLNLLLLLLLLLLLLLLLLNLLL,L,LNLLLLLL,LLL,,LLLLLLLLLLLbcÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄT:TT""TT0T "T:TT"00+3000+úüüüóúúúúúúúú÷÷óúúú÷÷÷÷÷÷÷÷ó÷÷÷óúòúó÷òóóòóóó÷ñòò*43434*óòòóòðñëëëëëëãìãããêãöãìãêìãöãêãìããããêêêãÝãêãêÝÝêÝãÝêÝÝ*33*03*ÝÝÝÝÝÝÝÝÝÝÝÝݰÝݰݰÝݰݰݰ°Ý°Ý°Ý°°Ý°°Ý°°°°°°°°°°°°°°°*+++++1°°°¦°°°°¨°£°¦°¦¦°¦°¦¨¦¦¦¨¦¦¦¦¦¦¦¦¨¦¦¨¦¦¨¦¨¦£¦¨¦¦+&&&&&&+TTT:T: Ó×ûýüüüüüûüüüüüüúüþü÷óóúóóóúóóò¬s?   !!!! !!!!! !!!! ! !!!!!!!!!  !!!!!Æÿÿÿÿÿÿÿÿÿÿÿÿß@!!!!!!!!!  !! !!!!!!! !!–óüÆ@!!!!!Èþÿÿÿÿÿÿÿÿÿñ@! !!!! !!!‚ÿÿÿÿÿÿÿÿÿÿòZ!!_ñÿÿÿÿÿÿÿÿË;!! !ðÿÿÿÿÿÿÿÿð!‚ÿÿÿÿÿÿÿÿüB;Îÿÿÿÿÿÿÿÿç;xóÿÿÿÿÿÿÿÿÿó_ÆýÿÿÿÿÿÿÿÿÿË xþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!  q¥íýýýüýýýýýüýÿýüýüýüüûüýüüýüýüæÓT"MTTT"MTT"MTT"T"TTTˆˆˆˆˆˆNSˆˆˆSˆˆSˆˆˆˆˆˆˆˆˆˆˆSSSSˆSSSSˆˆˆˆˆSˆˆSSSNSˆˆSˆˆˆNSˆˆSˆSSSˆSNSNSSˆNSSNNˆNSˆNSNSˆSSˆˆSˆSSSSˆˆNNSNNNNNˆNNNNSˆSSˆˆNNSNSNNNNNNNSSNNNSNNNSNNNNNSNSNNˆNNSNNNNNNNNNNNNSNNSNNSNNNNNSNNSNˆNNSNNSNNNNNNNNNNSNLNNLNNNNNNNNNNNSNNSNNNNNSNNNNNLNNNNLNNNLNNNNNNNLNNLNLNLLNNNNLNLLNNNLLNNNNNNLNLLNNLLLLLLLLLNLNLNLLLNLLLLLNNLNNNLLNLLNLLLNLLLLLLLLLLLLLL.L.LLLLNLNNLLLLLLLNLLLLLLLLLLLL.LLLLLNLLLLLLL,LLL,LLLLL.L,LLL,LL,LLLLL.LLMc¾ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁT"TTTTTT"TTTT:000+03+üúüþýüüúúóúúúúòúúúúúúóúúúú÷÷÷òú÷÷÷ó÷÷÷ò÷òòð÷òóóò*44344*òóòóðóòòëëëìêëêôêöãöããêìêëëêãêìëãëãìãêãêêêêêêãêãêÝãÝãÝ*3M*3M*ÝêÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ­ÝÝÝÝ­Ý­ÝÝÝ­ÝÝ­Ý­Ý­­Ý­­­­­­­°Ô¨10++++*°­¦­¦­¨­¦¦°¨­¦¨°¦¨¦£¨£¦¨£¦¦¨¦¨¦¨¦¨£¦¨¦¦£¦¦£¨¦¦r¦+&&&&&&+::"T  ÓÓüüúýúýúüüúýúúüúüÿúó÷úóóúóó÷úò¬s? !!! !!!!!!!! !! !! !!!!!!!!!!!! !!!!!!!!!!9áÿÿÿÿÿÿÿÿÿÿÿÿá;!! !!!!!!!! !!! !!!!!@ÆüÿÿÿÌ@!! !!! !!YóÿÿÿÿÿÿÿÿÿÿÎ@  !! !!!ZüÿÿÿÿÿÿÿÿÿÿÈ!![ñÿÿÿÿÿÿÿÿË9! !!!!! !ñÿÿÿÿÿÿÿÿü; Âÿÿÿÿÿÿÿÿü;  ;Îÿÿÿÿÿÿÿÿð@!Îÿÿÿÿÿÿÿÿÿÿ– ;ñÿÿÿÿÿÿÿÿÿÿY _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!!! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ         =qªéüüüýýýýýýýýÿýüüýúýüüýüýýüûüýàÓ"TTT"TT"TTTTTTTˆSˆˆˆSˆˆˆˆSˆˆˆˆˆˆˆˆˆSˆˆˆSSˆNSSSSSSSSˆˆˆˆSNSˆˆˆSSˆSˆNˆSˆˆˆˆNˆˆSNSSˆNNNSˆSSSˆNNˆNSSSNSNˆSNˆˆSNSSˆNNˆNSˆNNNNSSNNNNNˆˆSNNNNSNSNNNNNSNNSSNNNNˆSNSSSNSNˆSNNNSNNNNNNNNNNNNNSSNNNLNSNNNNNNNNNNNNNSLNSNLNNNLNNNNNNNNNNNNLNNLNNNNNNNNNNNNNLNLNNLLLLNNLLLNSNNSLNLNLNNLLLNLNNLNNNLNLNNLNNNLNLNNLNLNNLLLNLLLLLLLLNNNNLLLNLNLLNLLLLLLNNNLNNLLLLLLLLLNLLLLLLLLLLLLLLLLLLNLLLNLLLLLLLLL,LLL,.LLLNLLLLLLLLLL,,L,LL,L.L,LLLL,LLLLLLL.L,LMcÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄT"TTT TT":"0*30300+úúüüþüüüúúúúúóóóóúúúúúúúúúó÷ó÷÷÷÷ó÷ó÷óóóó÷òòóòòò*34434*óòñðóñòðòðóèðèòâòâðâòçðâñðòðâðâðâðâðâòâðâçâââðèâââïàÑè*33*03*ßáßâáÞáÞÑÞÑÞÑÞÑÞÎÞÑÞÞÎÞÍ×Ñ×ÍÞÎßÉ×Ñ×ÎÞÞÉÌÉÞÍ×Í×Í×Í×Í×É*++++++ÍÌÉÄÉË×ÄÌÆÉÆÌÉÃÇÆËÆÇÆÇÆÄÆÄ™ÄÆÇÃÇÆÇ–Æ––™ÆÅ–Æ–Ä™–+&&&&&&+TTT  ÓÓüüüüüüüýúýúüýúüüþü÷óóúóóú÷óóò¬}?   ! !! !!!!!!!!!!!!!!! !!!!!!! !Bñÿÿÿÿÿÿÿÿÿÿÿÿ÷_!! ! !!!! !!!!!!ZßÿÿÿÿÿÿÏY!!!!!ÈÿÿÿÿÿÿÿÿÿÿÿÆ$ !  ! !Yñÿÿÿÿÿÿÿÿÿÿó[ _ñÿÿÿÿÿÿÿÿÌ#!ðÿÿÿÿÿÿÿÿÿYÏÿÿÿÿÿÿÿÿü;Îÿÿÿÿÿÿÿÿç@ „üÿÿÿÿÿÿÿÿÿáY –üÿÿÿÿÿÿÿÿÿá!  ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ!   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_!!ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! =s¥íýýýüüýýýýýýÿþúýúýüýýúýúüýüüüàÓTTTTTSˆˆˆSˆˆˆˆˆSˆSSSˆˆˆˆˆˆSSˆˆSNSNSSˆSSSˆˆˆˆSˆSNˆˆˆSNNNSSˆˆˆˆˆˆSSˆˆSSNˆSNSSNSˆNNˆSSSNNNNSˆˆSNSNNNNNNNNNSNNNNNˆSNNNNˆˆNˆSSNˆNNNSNNNNNNNSSSNNNˆSNNSNNNNNSNNNNNNNNNLNNNNNNNNNNNNSNNNNNNNNNNNNNNˆNSNNNNNNNNNNLNLNNNLNNNNLNLLNNNNNNNNLLNNNNLNNLLNLNNNLLLNNLNNNNNNLNLLNNLLNLNLNLLNNNNLNLLLLNNLNLNLLNNLLLLLNLLLNLNLLNLLNNLLLLLLNNNLNLLLLLLLLLLLLLLLLNLLLLLL.LLLLNLLLLLLL,LLLLLLL,L,LLLL,,LLL,LNLLLL,L.,LL,,L,LLL,LLLLL,L,,,,L.L.L\hÄÄÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄTTTTTT   """0003+0*üúúüüþýýüúúúúúúúúúóúúúúüúúú÷÷÷ó÷ò÷÷÷ó÷òò÷òòóòòóò133443***11***1*1*11+1+1+1*1+1*11+110*1+10*1+1+1+1+1*1+1*1+1**33*33**1+1+1+1*1*+0**1+1+*+1*10*1++1+1+1+1+1+1*0**+******+1*+++++*ÌÈÉÌÈÄÉÉÈ×ÄÉÈ×ÉÍ™ÍÇÍ™ÄÇÃ™ÆÆÆ™ÄÆÄ™ÄÇÆ™ÄÅÃ™ÄÆ–ÄÅÆ–&&&&&&+""TM"T  ÓÓýüúüúüúüüúýúüüúýÿúóúóó÷úóóúóò¬Ž?!!!!!!!! !!!!!!!!!!!! !! !!!!!! !!!!!ZóÿÿÿÿÿÿÿÿÿÿÿÿýÅ!! !!!!!!!!!!!!!!!„óÿÿÿÿÿÿÿÿß[!! Yñÿÿÿÿÿÿÿÿÿÿþ…!!!!!!!!!!!!! !!YðÿÿÿÿÿÿÿÿÿÿýÈ! [ñÿÿÿÿÿÿÿÿË!!ßÿÿÿÿÿÿÿÿÿ–!! !üÿÿÿÿÿÿÿÿó ;Îÿÿÿÿÿÿÿÿç;!@áÿÿÿÿÿÿÿÿÿþ‚ áÿÿÿÿÿÿÿÿÿÿ‚! !! !!‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!     áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóx !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   !! !=}¥éüüüýýüýýýýýÿýüýýüýúýüýýûüýúýàÓTTTTTTTTTT:TˆˆˆSSˆˆˆˆˆSSSSSˆSˆSSˆˆSSSˆˆNSNSSSˆNˆˆˆSSSˆˆˆˆˆˆSNSSSSNˆNˆˆˆNNˆNˆˆSˆNNSSˆNˆNSˆNSNSNNNSSSNNNˆSSSNSNˆNNNNNNSˆNNˆNSNNSNSSSSNNˆNNNNSNSSNNNNSNSNNNNNNSNSNNSNSNNSNNNNNNNNNNNˆNNNNNSSNNLNNNNNNNNNSNNNNNNNNNLNNNNNNNNNLLNLLLNNNNNLNNNNLLLNNNNLLNLNNNNNNNNNNNNNLNLNNLLLNLNNNNLLNNLNLLLLLLNNLLNLNLLLNNLLLLLLNLLNNLLLLNLNNLLLLLLLLLLNNLLNLLLLLLLLL,NLLLLLL.L,L,LLLLLLLLLL.L...LL,L,LLLLLLLLLLL,LLLL,.LL,,LLLLLL,,L.LLL.,.,LLLL,McÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄ TTTTT"0(30300+þüúúüüüýüüüúúúúúóúúúúúúóúúúóúòúò÷÷ò÷÷÷÷÷ó÷òòóòðò*34434343334333333033333P0333\03333333333333333333303330333333M3*303M3030303030030000000000000000000000000000+0+0+0++0++++++++++ÉÌÉÆ×ÈÌÃׯÆ×ÄÆ×ÃׯɯÉÄÌÆÄÆÄ™ÆÄƙęęęÆÄ›ÄÅÆÅÅ–+&&&&&&+TTT""  ÓÓýúýúýüüüûüüúýúúüþüóóóúóó÷óóóò¬Ž?!! !  ! !!!! !!  !!!!  !! !!!!!!!_úÿÿÿÿÿÿÿÿÿÿÿÿÿçZ !!!!!! !!!!!! !!!ZÎýÿÿÿÿÿÿÿÿÿÿñ_!!! !!–üÿÿÿÿÿÿÿÿÿÿÿÂ!!!  !!! !!@ñÿÿÿÿÿÿÿÿÿÿÿñ@ _ñÿÿÿÿÿÿÿÿË!Âüÿÿÿÿÿÿÿÿó! –ÿÿÿÿÿÿÿÿÿÎ  ;Îÿÿÿÿÿÿÿÿð;ÂýÿÿÿÿÿÿÿÿÿÎ;_÷ÿÿÿÿÿÿÿÿÿó@ dýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!  !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    =q¥íýýýüüýýýýüýÿýüýúýúýüûüüüûüüüæ×T::TT:TT:TT"ˆˆˆˆˆˆNˆˆSSSSSSˆˆˆˆˆSˆˆˆˆˆˆˆˆˆˆNSSSNˆˆSˆˆNSˆˆNSNNˆSˆNSNˆNˆSNˆSNNˆSNNˆSˆNSˆNNSNNNNNNSNNNSSSSSSSNNNNˆSNNNSNNNˆSSSNNNNˆNSNNSNNNNSNˆSSNNNSNNNNNNNNNNNNSNNSNNNNˆNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNLNNNNNNNNNNNLNLNNLLNNLNLNNNNNNNNLLNNNLLNNLLNNNNNLNLNLNNNLNNLLLLNLNNNLNLLLNLLLLLLNLNNLLLNLLNLLNLNLLLLLNLLLNLLNLLLLLLLLLLLLLLLLLLLLNLLLLLNLLLLLL,LLL,LLLLLLL,LLLLL,LLLL,,LL.,LLLLL,L,LLLLL,N.,,,,L.LLL,LL,,L,,,.,,L,LXcÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄ  TTT003+03+ýüüúüüüþüüúüúúúúó÷úóúúúúúúúúóú÷óòóúòúó÷ó÷ò÷óòòõð13343443434343433433334333Q333333333333333333333333333M333M33330*3M030M3030U00303030303003000303003030*00+0*0*0++0+++++++++++++1ÉÍÈ×ÄÇÄ×ÄÉÄÆÉÆÄׯÉÄÆÄÌ›ÆÄÆ™ÄÆÂÆÆÅÆÄÆÄÆ™ÄÆ›Ã†Æ–Ȇ+&&&&&&+TTT   Ó×üüüýúûüúüüúüúýúýÿúóúóó÷úóúóúòÓ?!!!!!!!! !!!!!!!!! !!!!!!!!!!!!!!!!!!! !!!!_üÿÿÿÿÿÿÿÿÿÿÿÿÿüÉ@!!!! !!!!!!!!@Æúÿÿÿÿÿÿÿÿÿÿÿÿÿñ_!!!!!!;áÿÿÿÿÿÿÿÿÿÿÿÿÉ@ !! !! _óÿÿÿÿÿÿÿÿÿÿÿü‚ ![ñÿÿÿÿÿÿÿÿË!!!!!_÷ÿÿÿÿÿÿÿÿÿ‚;üÿÿÿÿÿÿÿÿý‚@Îÿÿÿÿÿÿÿÿç@! _ñÿÿÿÿÿÿÿÿÿú_! Îÿÿÿÿÿÿÿÿÿÿ   xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    !  !!q¥éüüüýýüüýýýýÿýüüýýýúýüýüýüüýúàÓˆSSˆSNSNˆˆˆSSˆNˆNˆˆNNˆNˆSˆSˆSˆˆˆSSNSˆSˆˆˆˆNNNSˆˆNSSˆSSNSNNNNˆSˆNNˆSNNˆSˆSSSNNNNSNNNNNNSNSˆˆNSSSNNNNSˆNNSˆNNSSNNNNSSNSSNSNNNNNNSSSNNNNLNNNNNNNNNNNNSNNNNSNNNNNNNNNNNNSNSNNNNNNNNNLNNNNNLNNLNNNNNNNNNLNNNNNNNNNLLNLLLLLNNLNNNLNNNLLLNNNLLNNNLNNNLLLLNNLNLLNLLLLNNNNLLLLLLLNNLLLNLNLLNLLNLNLLLLLLLN,N,LLLLLLN,LLLLLLLLNLLLLL,LLLLLLLLLLLLLLLLLLLL,L,,,,,LL,LLLLLLL,,,LNLL,LLLLLLLL,,LLLLL,LL,LL,LLLL,,L,,,,,LL.,L,.Mc¾ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄ *00300++++++++++++++-++-+++-+-++-++++++++++++++++++++0+*3434434343434334334333343333333333333333333333333M333333333M3M3*303033030303003+300+0+300+30+0+300+0000*0(0+0++0++0++++++++++0*+0+&0&00&0++++++0++++0++0+++++0++++++0++&&&&&&+ ÓÓüûúüüüüüýúüúüüúüþüóóú÷óóóóóóò¬Ž?! !! !!  !!! !!!!!!!!!!!!!! !_úÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÅ#  !!! !!!@ÂòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ@!!!YòÿÿÿÿÿÿÿÿÿÿÿÿðY!!!!!!!–üÿÿÿÿÿÿÿÿÿÿÿÿË!  !_ñÿÿÿÿÿÿÿÿË!!! ñÿÿÿÿÿÿÿÿÿüY!ñÿÿÿÿÿÿÿÿÿü;;Îÿÿÿÿÿÿÿÿð@!ÌÿÿÿÿÿÿÿÿÿÿÃ! @óÿÿÿÿÿÿÿÿÿü@ _ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! =q¥ëýýýüüýýüýýýÿýýýúüüýüýúýúýúüýæÓˆˆˆˆSNSˆˆSˆˆSNSSˆˆNˆˆˆˆˆˆNˆSˆSˆSSNSNSˆˆNSSˆNSSˆˆNSˆSˆSNˆNSNSSSSNˆˆSNˆNNNSNˆNNNNNNNNNˆNSˆNNSNNSˆNNNNNSSNNNNSNSSNNNSSNNNˆNNNNNNSNNNNNNNNNNNSNNNNNNNSNNNNNNNNSNNNSNNNLNNNNNNNNLNNNNNNNNNNNNNLLNNNNNLNNNNNLNNNNLLLLLLNNNNNLNLNNNLNNNLLLLNNLNLNLNLNLLLNNLNNNNLLNLLNNLNLNLLLLNLLLNLLLLLLLLNLLNLLNLNLLNLLLLLNLLNLLLLLLNLLLLLLLLLL,LLLLLLLLLLL,LLLLL,,,,L,LLLLLL,LLL,LNL,L,,NLLL,L,LLLL,LLL.,LL.L,,,,LL.L,L,,.,L,,,,,.,\bÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁ    +003+03000000000000000000000000000000000000000000000000*43434434343O33433333433333333333333333333333333M333M333M3330<3M*0300Q0300303303+30+30003+0003+003+0*0*00*0*0++0+++++++++++++++*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+    ÓÓýüüüúüüúúüúýúûüüÿúóúóóúóú÷úóò¬s?! !!!!! !!!!!!!!! !!!!!!!!!!!!! !Z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÆ@!!!!!!!!!!!!YÈ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÂ!!!!!‚üÿÿÿÿÿÿÿÿÿÿÿÿü–!!!!! !! !Zðÿÿÿÿÿÿÿÿÿÿÿÿÿá!!!_ñÿÿÿÿÿÿÿÿÌ;Èÿÿÿÿÿÿÿÿÿÿ÷_ ;ñÿÿÿÿÿÿÿÿÿÿá;Îÿÿÿÿÿÿÿÿç@ ‚÷ÿÿÿÿÿÿÿÿÿñ[ÆýÿÿÿÿÿÿÿÿÿÎ!  ! dþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ9!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ   =}ªéüüüýýüüýýýýÿýúýüýûüýúýýüýýûüàÓNNSˆSˆSˆˆˆˆSSˆNSNˆˆSNNSˆˆˆNSSˆˆˆˆNSNˆˆNˆNNNNNSSˆˆˆNˆNSSˆNNSˆNNNNNSSˆNˆNNNSNSNNNNNSNSSNNNNNSSNSNSSNNNSSSNNˆNNSNNNNNNNNSNˆNSNNNNNNNNSNNNNSNSNNNNNNNNNNNNNSSNLNNNSNNNNNNNNNNNLLLNNNNNNNLNNNNLNNLNLNNNNNNNNLLNLNLLNLNNLNNNLLLNNNLNLNNLNLNNNLLNLNNNLNLLLLLNLNNNLLLLLLLLNLLLLLNNLLLLLLLNLLLLLNNLLLLLNNLLLLLNLLLL,,LLLLLLLLLLLL.LLLLLLLLLLLLLL,LL,L,L.,LLLL.LL,LLLL,L,LL,L,L.L,LLLL.L,L,,,,LL,LLL,L,,,,,,LL,,,LLLL.,LchÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄ  +3030+0300030003000003003000300300030003000300303030+20*34344343434334334333333333333333333333333333333333333333M33M303*:40303330030+0000000+30+33+0<+30+300(30+0+0+*0++0+++++++++++++*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+  ÓÓüüúýüýúüýúüüüüúúþüóóúóó÷óóó÷ò¬l  !! !!!  !!!  !!!!!!Bóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð…!!!!!!!!;–çýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷‚!!!!!!Æýÿÿÿÿÿÿÿÿÿÿÿÿÿó„!!!!YÎüÿÿÿÿÿÿÿÿÿÿÿÿÿóY  [ñÿÿÿÿÿÿÿÿÌ9!@óÿÿÿÿÿÿÿÿÿÿÿÈ; !Âüÿÿÿÿÿÿÿÿÿÿü[;Îÿÿÿÿÿÿÿÿð;;Ïÿÿÿÿÿÿÿÿÿÿ– !ñÿÿÿÿÿÿÿÿÿÿ[  _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ;! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      =s¥íýýýüüýýüüüýÿþýúýüüýüýýúýúüüüæ×NSSNNSSNNˆˆSSNNSˆSSSNˆˆˆˆˆNNSˆSˆˆSSSˆSSˆSSNSSNSSNSSSSNˆSSNNSSNSSNNNNNNˆSNSNNNNNˆNSSSSNNˆSˆSSNNSSSNNNNSSNNNNNSNSNNNNNˆNNNSNSNNNNNLNNNNNNNNNSNNNLNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNNNNNNNNNNNNLNNNNLNLNLLLNNNNNLLNNNLNNNNLNNNNNNNLNNNLNLLNNLLNLLLNNLLLLLNLLLNLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLNLNLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL,LLL.,LLLL,LLLL.L,,LLLLLLLL,LLLLLLL,LLL,LL,LL,,L,,,L.L,.,.L.,L.L,,,L,,,,,,,L,,,L,,RcÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄ +000+00003+003+003+30+03+03+0+0+03+00*00+03+0*0+0(0+0+0*434344343O33433333433433333333333333333333333M333M333M333M330<0*03030:0033+03303+33+0<+00+0000003(0+00(0*0++0+++++++++++++++++*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+     Ó×üúýúûúüúúýúúüúüüÿúóúóóúóúóúóò¬?!!!!!!!!!!!!  !! !!!!!!!! ! !! @áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýñÈ@!!!!@xÈñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ_!!! !!!Ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ËZ!#…çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷_!_ñÿÿÿÿÿÿÿÿË;!Æýÿÿÿÿÿÿÿÿÿÿÿüç‚‚ÂÏüÿÿÿÿÿÿÿÿÿÿÿÿá;Îÿÿÿÿÿÿÿÿç@–üÿÿÿÿÿÿÿÿÿáY„üÿÿÿÿÿÿÿÿÿð!  !!ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ!!ÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóxÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ      p’éüüüýýüüýýýýÿýúýüýûüýúúýúýûüüàÓˆSˆNSSSSNSˆˆSNSSˆSNˆSˆSˆˆˆˆNˆSSNNˆSSNSNNˆˆNNˆNSNNSSSSNSSSSNNNSSNSSˆNSNSˆNNSSNSNSSNSSSNNNSSSSSNNNSSNNNNSNSNSNNSSNNNNNSNNSNNNNNNNNNNNLNNNLNNNNLNNNNNNNNNSNNNLNNNNNNNNNNLNNNNNLNNLNNNNNNLNNNNLNLNNLNNNNNNNNLLNNNLLNNLLNNLLNNNNNNLNLNLLNLLNLLNLLNNNLLLLNNLLNNLLLLLLLLL.LLL,LLLLLLLLLLLLLLLLLLLLLNLL,LLLLLLLLLLLLLLLLLLLLL,LLLLLLL,N,,L.LLLLL,,LLLLL.L,LLL,,.LLLLL,L,L,,L,L,L,LL,L.L,,,,L.,,.L,L,,,,L,.,,,,,,,,LWdÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄ++30330*00+3000+300+30+00+00303000+300030+300000303(300********************************************************************************************************************************&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+  ÓÓûüüüüüûüüüúýúüúúþüóóúóó÷óóó÷ò¬? !! !!!  !! !!!!ÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüñÏÈÆÂ–––ÅÈÎñúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÈ@!!!!! ÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüáÆ…_[ZZZdÂÎóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü_ñÿÿÿÿÿÿÿÿÍ!! ;óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüY;Îÿÿÿÿÿÿÿÿç@ Yáÿÿÿÿÿÿÿÿÿü‚ áÿÿÿÿÿÿÿÿÿÿ„ !_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ     !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÆüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ !  !    $qšëýýýüüýýüüüýÿýýúýüüûüýýüüüüýüàÓˆˆNˆSNNNSNSNNSˆˆˆSNˆˆNNˆSˆNNSˆˆNNSSSNNSNSNNNNSNˆSNSSNNˆSˆNNNSSSSNSSNSSSSSNNˆSSNNNSNSSNNNNSSSNNˆNNNNNNSNNNNNNNˆNSLNNNNNNNNNNLNNNNNNNNNNLNLNNNNNNNNNLNNNNNNSNLNNNNLNNNNNNLNLLLNLNNNLNNLNNNNLLNLNNNNNNLNNNNNNLNNNNLNLNNNLLLLNNLNNLNLLNLLNLLLLLNLLNLLLLNL,LLLLLLLLLNNLLLLLLLLLLLLL.NLLLLLLLLNLL,LLLLLLLLLL.LLL,,L,.L.LLLLLLLL.,L,LLLLLLL.LLLLLLL.L.,LL,LLL,,,L.LLLLL,,L,,L,,.,,.LL.L,,,L,,,,,,,,,.,L,L,L,,,,,McÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄ   +000+0+00030+03+003+00033+<03+03+03003+03+0(03+*0+00+0*+00+        +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+   Ó×üüüúüúüüúúýúüúýüÿúóúóóúóúóúóò¬s> !!!!!!!!!!!!!!!!!!!! !!!! !!! _úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó‚!! !!!!!!!! !!!Îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷_!!!![ñÿÿÿÿÿÿÿÿÌ!! _üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„;ÎÿÿÿÿÿÿÿÿðBÆÿÿÿÿÿÿÿÿÿÿË!_úÿÿÿÿÿÿÿÿÿ÷;!  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà   áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  ! =}ªéüüüýýüüýýýýÿýüýüýüüýúüúýúýüúæÓSNˆˆSˆNSNNˆNSNNˆSNˆNˆˆNSSNNNNSSSSNSSˆNˆNSNˆNNˆSNSNˆSSNSSNNNNNNNSSSSSSˆSNSSNNNNNˆNNNNˆNNNNSˆNSNˆNSNNNSNNNNNNNNSNNNLNLNNNNNLNNNNNNNNNNNNLNNLLNLNNNNNNNNNLNNNNLNNNNNLNNNLNNNNNLLNN,NLNNLLNNLLLLNN,NNNNNNNNLNNLLLLLNLLLLNNLNLNNNLNNNNLLLNLLLLNLLLNLNLL,LLNLLLLLLLLLLLLLNLL,.L,LL,.LLLLLLLL,LLLLLLLLLL,LLL,LLL,L,,LL,L,LL.LLLL,,,LL,LLLL.LLLLLL,,,,,L,,L,LL..,.L,.L.LLL,,L,,,,L,,,L,L,,,,,L,L,,,,.,,.,,,.,,,LMcÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÁÄÄÄÄÄÄÄÁÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhgddfhhdhhddhhhhhdhhhhchhhdchhdhcgfhhdhghcdhchdhgcchchhcghchhchccdhchchcchccchchccccccchcccccchccccccccchcccccccccccccccccccccccccccccdccgfcccgcccccccdcccccXcc*0+3300<+30+30<+3000<0+000+0+30+30(30+300003000000+30+00+0+       +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+XcXcccccbcccccccccccccccccccccccchchcccchccccccccchcccccdccccccccchcccccccccccccccccccccccccÓÓýúýüúüüúüüúýúûúúþüóóúóó÷ó÷óóò¬Ž?!!!!!!!   !!!!!   !! 9ÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÌ@ ! !!Èþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó[ ! [ñÿÿÿÿÿÿÿÿÎ;–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË@ÎÿÿÿÿÿÿÿÿçB_òÿÿÿÿÿÿÿÿÿó_  ÎÿÿÿÿÿÿÿÿÿÿÆ!! ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ     áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóxÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !   !!!s¬íüýýüüýýüüüüÿýýüúýúýüüûýúýúýüàÓchddhchhfhhhgddghhhghdhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhSSSˆˆNˆNNSNSSNˆSˆNNˆSNSNNNNSNNNNSˆNNSNNNNSNSSNˆNNNNˆSNSSNNNNNˆSNSSSNNSSNNSNNNNSNNNSSSSNNSNSNNNSNNSNNNNNLNNNNNNNNSNLNNNNNNNNNLNNNNNNNNNNNLNNNNLNNNNLNNLNLLLLLNLNLNNLLNLLLNNLNNLNNLNLNNLNNLLNLNNNLNNN,LNNNLLN,LLNNLLNLNNLLLNLNL,NLLNLLLNLLLLLLLLLLLL,LLLNLLLL,LLLLLLLLLLLL,LL.L,LLLL,LLLL,L,,,L,LLLL,,L,,,LLLLL,LL,L,LL,LL,,.,LLL,L.L,,L..,L.,.,LL,,L,L.,,,LLL,,L.,L,,LL,,,,.,L,,,,.,,,,L,,,,,,,,,.,,.,,M\hÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÁÁÄÁÄÁÁÁÁÁÄÁÄÁÄÁÄÁÄÄÁÁÁÄÄÁÁÄÁÁÁÄÁÁÄÁÄÁÁÁÁÄÁÁÁÁÄÁÁÁÁÁÁÁÁÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁhÁÁhÁh&0++((++++(++(+++(++*(++++++++(++(+0(++(+*++(*(*+*(+++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++cÁÁhÁhÁÁhhhhhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁÁÁÁ¹ÃhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁ×Óúüúúüúýüúûüúüüüüÿú÷÷óóúóúó÷úòÓŽ? ! !!!!!!!!!! !!!!!!!!  !!! [óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç_ !!!!–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ@!!!_ñÿÿÿÿÿÿÿÿË!Ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá ;Îÿÿÿÿÿÿÿÿç@!ËÿÿÿÿÿÿÿÿÿÿÂ! ;óÿÿÿÿÿÿÿÿÿÿ@!þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ !áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!     $q¥õýüüýýüüýýýýÿýúýýüýúýüüüüüüüúàÓÄÁÄÁÁÁÁÄÁÁÁÁÁÄÁÄÁÁÄÁÁÄÁÁÁÁÄÁÄÁÁÁÄÁÄÁÄÁÄÄÄÁÄÄÄÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÁÁÄĈˆˆSNˆNNSNNNSSNˆSSSNNNSSNSNNSNˆSSSNNNNNˆNSSNSˆNSNSNNNSSSNNNSNSSNNSSNNNSNNNNSNNNNNNNNNNSNˆNNNSNNSNNNNNNNNNLNNNLSNNNLNNNNNNNNNNNNNNNNNNNNLNLLLNNNNNNNLLNNNLNLLLNNNNNNLLLNLNNNNNNNNLNLLNNNNNLLLLNLNLNNNLLNLLLNNLLLLLLLLLNNLNNLNLNLNLLLLLLLLL.LLLLLNNLLLLLLLLLLLLLLLNLLLLLL,L,,LLN,LLLLL,LLL,L,L,LLLLLLL,.,LLLL,LLLL,L,,LLN,L,.,,.L,.LLL,,L.,,,L,L.,,,,,.LLLLL,LLL,,L,,,,,,,,,,,,,.,L,,,,.,,,L,,,,.,.,.,,MbÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÁÄÄÁÄÄÄÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÄÁÄÁÄÄÁÄÁÄÄÄÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÁÁÄÄÁÁÁÁÄÁÄÁÄÁÁÁÁÁÁÄÁÄÁÁÄÁÄÁÄÁÁÄÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁhÁhhÁÁhÁÁhÁhÁhÁÁhÁÁÁÁ•ÁÁÁÁÁ•ÁÁÁ„Áh•hÁÁ•ÁÁÁÁ•Á•ÁÁ„ÁÁÁÁÁÁÁ„ÁÁÁ„•ÁÁÁÁ•ÁÁÁh•ÁÁ•ÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhÁhÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁhhÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁhhÁÁhÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁ•ÁÁÁÁÁÁhÁhhÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÓÓúúüýúýúúüüúüúúúúþüó÷óúóóóúóóòÕs?!!!  !! !!!!!!!!!!!!!!!!–üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó‚!ZóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ! [ñÿÿÿÿÿÿÿÿÍ! –þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌ;Îÿÿÿÿÿÿÿÿð@‚üÿÿÿÿÿÿÿÿÿçY!ÂýÿÿÿÿÿÿÿÿÿÑ!‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ!!áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ  !      =q¬õüüýüüýýüüüýÿýüüüûüýúüýúýüûýúà×ÁÁÁÄÁÁÄÁÄÁÄÁÁÁÄÁÄÁÁÁÄÁÄÄÄÄÁÁÄÄÄÁÄÁÄÄÁÄÁÁÄÁÄÄÁÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÄÄÁÄSˆNNNSSSNˆNSNSSNSNNNSˆNSSSNNSNNSˆSNNNNNSSNˆNNSNSSNNNNNSNNSNNNNSNNSSNNNSNNNNNNNNNNNNNNˆNNNNSSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNLNNNNNLNNNNLNNLLNNNNLLNNNNLNNNLNLNNNNNLLLNNNLNNLNLLNLNLLLNNLLLLLLNNLNNLLLNNLLNLLLLLLLLLNLNLNLNLLNLLLNLLLLL.LLL.L,LL...,LLLLLLLLL,LLLLL,LLLL,LL,,LLLL,,,LLLLLLL,L,L.LLL,,,LLL,LLLL,LL,L,,,LL,L,.,.LL,L.,L,L,,LL,,,,,L,.,.LL,L,L,,,L,.,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,.,,\cÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÁÄÄÁÄÁÄÄÁÄÄÄÄÄÄÄÁÄÄÁÄÄÄÁÁÄÁÄÁÄÄÁÄÄÁÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÁÄÁÁÄÁÄÁÁľÁÄÁľÄÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁľÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁľÁÁÁÄÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁhhÁhÁÁÁÁÁhÁÁÁhÁhhÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁÁÁhhÁÁÁÁhÁÁÁÁÁÁhhÁÁÁhÁhÁhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁhhÁhÁÁÁÁÁÁÁÁÁhÁhhÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁÁÁhhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhhÁhÁÁÁÁÁÁÁÁÁhhhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhhÊÓ÷ýúúüúüüúúüúýüüüþü÷ú÷ó÷÷÷óóúòÙ?!!! !!!!!!     !!! !!!!!!!!Âüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò‚!!!! !!!!!!!!!!!;Ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú‚ !!!!!  _ðÿÿÿÿÿÿÿÿÌ!!!‚üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–9Îÿÿÿÿÿÿÿÿç; ;Ïÿÿÿÿÿÿÿÿÿÿ„ñÿÿÿÿÿÿÿÿÿÿ[! ‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ    !!!=¬õüýüýýüüýýýýþýüýúüüüüýúýúýüüúàÓÁÁÁÁÁÄÁÄÁÁÁÄÁÄÁÁÁÁÄÄÁÄÁÁÁÄÁÄÁÁÄÄÁÄÁÄÁÄÁÄÄÄÄÁÄÁÄÄÄÄÁÄÁÄÄÁÄÄÁÄÄÁÄÁNNˆNSˆSSSSNNNSSNNNNNSˆSSSNSNˆNSSNNNNSNNSSNNˆNSNNNNNˆNNNSNNNSNNSSNNNSNNNSSNSNNNNNLNNNSNNNSNNNNNNNNNNLLNNNNNNNLNNLLNNNNNNNNNNNLNLLLNLNLNNNNNNLLNNLLLLNNNNNNNLNNNLNNLLLLNLLNLLNNNLNNLNNLLNLLNLNLLNLLLLNNL,NLLLLLLLLLLLLNNLLLNLNLLLLLNL,LLLLLLLLLLLL,LNLNLLLLLLL,L,,L,LLLLLLLL,L,.L,,.,LLLLLLL,,N,LLL,,,L,,.L,,L,L,,L,LL.,L,,L,L,,L,,,,LL.,L,,,L,,,,,,,L,L,,,L,L,,,,,L,,,,,,.,,,,,,,,,,,,.,,,,,,,,,,,MWhÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÁÄÁÄÄÄÄÁÄÄÁÄÁÄÄÄÄÁÄÁÄÄÁÄÁÄÄÄÁÄÄÄÁÄÁÄÄÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÁÁÄÄÁÁÁÄÁÁÁÁÁÄÄÄÁÁÄÁÁÁÁÄÁÁÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁhÁhÁhhÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁhÁÁhhÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁhÁÁhhÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁhÊÔ÷úüýúüúýúýúüúúúúÿüóóóóúó÷óú÷òÙj!!!!!! !!!!!!!!! !!!!!‚óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð_!!   !!!!!![ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË9!!ZñÿÿÿÿÿÿÿÿË9! YÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñY  ;Ìÿÿÿÿÿÿÿÿç; –ýÿÿÿÿÿÿÿÿÿÏ@ ‚üÿÿÿÿÿÿÿÿÿó!    ‚þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ! ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó! !ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ     !!!?Öúýüýüüýýüüüýÿýûüýýüüûüüüüýúý÷àÊÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÄÁÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄNNNSSSSSSNNSNNNNNNSNSSSSNSNSSNNSNNSSNNSNSNNNNNNˆNNNNNNˆNNNNNSNNNNNNNNNNNNNNNNLNNNNLNNNNNNSNSNNNSNNNLNNNLLNNNLNNNNNNNSNNLNNNNNNNNLLLNNNNNNLNNLLLLLNLLNNNNNLLNNLLNLLLNLLLNNLLLLLLNLLLLLNLLLLLNLLLLLLLLLLLLNLLLLLLLLLLLLLLLLNLLN,LNLL,L,LL.,NLL,L.LLLLLLLLLLLLLLLLL,,,LLLLLL,L,,.,,,,.,LLLL,L,LL,,L,,.L,.L,L,.,,,LL,,,,,,L,.,LL,.,,,L,,,,,,L,L,,,,,,,,,,,,,.,L,,,,.,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,0\¾ÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÁÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁľÄÁÄÁÄÁÁÄÄÁÁÄÁÄľÁ¾ÁÁÁÁÁÄÁÁÁľÁÄÁÁÁÄÁÁÄÄÁÁÁÄÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁÁhÁhÁÁÁhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÁÁhÁÁÁÁÁÁÁhÁhhhhÁÁhÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhhÁÁÁhÁhÁÁÁÁhÁÁhhhÁÁÁhhhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhÁhÁhhhÁhÁÁÁÁhhhÁhÁÁhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÁÁhÁÁÁÁÁÁÁhÁhhhhÁÁhÁhÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhhÁÁÁhÁhÁÁÁÁhÁÁhhhÁÁÁhhhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhÁhÁhhhÁhÁÁÁÁhhhÁhÁÁhhÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÁÁhÁÁÁÁÁÁÁhÁhhhhÁÁhÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhhÁÁÁhÁhÁÁÁÁhÁÁhhhÁÁÁhhhÁhÁÁhÁÁÁÁÁÁÁhÁhÁhhÁhhhhÁhÁÁÁÁhhhÁhÁÁhhÁÁÁÁÁhhÁÁÁÁÁhÁÁhÁÁhhhÁÁÇ×õüûüüúûúýúúûüüúýýüúúóúóóú÷óóóæŸq!!!!!!!! !!!!!!! ! YÆúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÂ@!!!!!!ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÌ;!_ñÿÿÿÿÿÿÿÿË;Yçÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ ;Íÿÿÿÿÿÿÿÿç@Zðÿÿÿÿÿÿÿÿÿú‚ áÿÿÿÿÿÿÿÿÿÿ–  ‚ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ! ! áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_  ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ!   ! 7}¬úüýüýüüüýýýþÿüüüüüúýüüýúýúýú÷ÚÊÁÄÁÁÁÁÁÁÁľÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÄÁÁÄÄÄÁÄÄÁÄÄÄÁÄÄÁÄÁÄÄÁÄÁÄÄÄÁÄÄÄÄÁÄÁÄÄÁNSNNSNSSSNSSNNNNNNNNSSNSSNNˆNNSNNNNSNNSˆNNNNNNNNˆNNNNSNNNNNNNSNNNNNNSNSNSNNNNNNNNNNNNNNNNSNNNSNNNNNNLNNNNLNLNLNNNNNNNLNNNNLNNNLNNNNNNLNNNLNNLLLLLLNLNLLNNLNLNLNLLNLNNLNNLNLNLLLNNLLLLNLLLLLLNNLLLLLNLLNLLNLL,LNLLLLLLLLLLLLLLNLLNLLL,LLLL,L,L.LLLLLLLL,LLL,LLLLLLLL.L.LLLLLL,.,L,,L,LL,LL,LLL,L,,L,LL,LL,.,,L,,LL.,L,L,,,,,,L,L,,,,,.,,.,,,,,,L,,,,,,,,,,.,,..,,,,,,,,,,,,,,,,,,,L,.,,,,,,,,,,,LcÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÁÄÄÄÄÁÄÄÁÄÁÄÄÄÄÄÄÄÁÄÁÄÁÄÁÄÄÄÄÄÁÄÁÄÁÄÁÄÄÁÄÄÁÄÁÄÄÄÁÄÄÁÄÁÄÁÄÁÄÁÁÁÄÁÄÁÁÄÁÄÁÁÁÁÄÁÁÁÁÄÁÄÁÁÄÁÁÄÁÁÁÄÁÁÁÁ¾ÁÄÁÁÁÁÄÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁÁÁÁÁÁhÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁhÁhhÁhhÁÁÁÁhhÁhÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁÁÁhÁhÁhÁhÁhhhhÁhÁhÁÁÁhÁÁÁÁÁhhÁÁÁÁÁhÁhhÁhhhhhhÁÁÁÁhÁhhhhÁÁÁhhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁhÁhhÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁÁÁhÁhÁhÁhÁhhhhÁhÁhÁÁÁhÁÁÁÁÁhhÁÁÁÁÁhÁhhÁhhhhhhÁÁÁÁhÁhhhhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁhÁhhÁhhÁÁÁÁhhÁhÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁÁÁhÁhÁhÁhÁhhhhÁhÁhÁÁÁhÁÁÁÁÁhhÁÁÁÁÁhÁhhÁhÁhhhhÁÁÁÁhÁhhhhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁ¹ÇÓõüüûúüüüúúüüúúúúýþóóóóúóóúóúòæ’q!!! !!!! !!!! !  !!!!!!!ZÆçþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüá–B! !! !!_Ïýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Æ; !_ñÿÿÿÿÿÿÿÿË! !   @–çþÿÿÿÿÿÿÿñÆ@  !  ;Ìÿÿÿÿÿÿÿÿá@! !ÂÿÿÿÿÿÿÿÿÿÿÈ!Y÷ÿÿÿÿÿÿÿÿÿü!   xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ ! !    áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎ ! !   ! !     =ެúýüýüüýýüüüýþýýüüûüýúýúýýüüýõßÊÄÁÁÁÁÁÁÁÄÁÁ¾ÄÁÁÄÁÄÁÄÁÄÄÁÁÄÁÄÁÄÁÁÄÁÁÄÄÁÄÁÄÄÄÄÄÁÄÄÁÄÁÄÄÁÄÄÄÁÄÄÁÄÁÄNˆSSSSSNNSNNNNNNNNNNSSSNSSNNNNSNNNNˆSNNSSNSNNNNNNNNNNSNNNNNNˆNNNNNNNNNNNNNNNNLNSNNNNLNNNNNNNLNNNSNNNLNLNNNNLLNNNNNNNNNLLNNLLNNNLNNNLLNNLNNLLLLNLNLLLNNNLNNLLLLNLLLLNNLLNNLNLLLLLLLLLLNLLLLLLNLLLLLLLLNLLNLLLLLLLLLLL,LL,LNLN,LLLLLLLLL,LLLL,,LL.LLLLLL,,LL,L.L,L,LLL.L.,LL,,,,.,,L,,LLL,LL,,,,L,.,,LL,,LL,L,,,,,,L,,,LL,,,,.L,.,,,,,.,L,,L,,,,,,.,,,,,.,,.,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,0\ÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÁÄÁÄÁÄÁÁÁÄÁÄÄÄÁÄÁÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁľÁÄÁÁÄÁÄÁÁÁÁÄÁÄÁÁÄÁÁÁÁÄÁÄÁÁÁÄÁÄÁÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÄÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁhhÁÁÁÁÁÁÁhÁhÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÁÁÁhÁhhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁhÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁhÁÁÁÁÁhhhhhhÁÁhÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁhhhÁÁhhhhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÁÁÁhÁhhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁhhÁhÁÁhÁÁÁhÁhÁhÁhÁhÁhÁÁhÁÁÁÁÁhhhhhhÁÁhÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁhhhÁÁhhhhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÁÁÁhÁhhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁhÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁhÁÁÁÁÁhhhhhhÁÁhÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁhhhÁÁhhhhÁÁÁÁÁÁhhÁÁÁÁÁhÁÁhhÁÁÁhÁÁÁhhÁÁhÁhÁhhÊÕòúüüüúûúüüúúúüúýþüúóúóó÷úóó÷óæq  ! ! !! !!!!!!!!!!!!!!Z–ÎçúÿÿÿÿÿÿÿÿÿÿÿÿúðÌ–Y!!!!!! !!    !‚ßüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÈZ!!!YYYZZZ[ZZ@ @__@! @YZYYZYZ_Y  @ZYZ[ZYZ[ZY! YZZZZ[ZZYZY!! ‚üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð_ÂüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË    ?ÕýüýúýüüüýýýþÿüúûüüüüüýüüúûüúõàÇÁÁÄÁÄÁÁÁÁÄÄÄÁÁÄÁÄÁÄÁÄÁÁÄÁÁÄÁÄÁÄÄÁÄÄÁÄÁÄÁÄÁÄÄÄÁÄÁÄÄÄÄÁÄÄÁÄÁÄÁÄÄÄÁNNˆNNSSSNˆNNNNSNSSSNNNSSNSSNNNNNNNNNSNNNˆNSNNNNNNNNNNLNNNNNNNNNNNNNNSNNNNNNNNSNNSNNLNNNNSNNNNNNNNNNNNNLLNNNNNNNLLNLNNLLLLNNNLLLLLNNLNNNNLNLNLLLLLNNNLLNNLNNLLLNLLLNLNLLLLNNLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLL.LLLLNLNLLLLLLLLLLL,LLLLLLL,,LLLLLL.L,LL,LL,,,LLLL,L,,,..L,.LL,L,L,,L,.,L,,,LL,L.,,,L,,,L,L,,,LLL,L,.,,,,,,,,,.,,,,,,,,,,,,,,L,,,,,.,,.,,,,,,,.,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,cÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÄÄÁÄÁÄÄÄÁÄÁÁÄÄÁÄÄÁÄÁÄÄÁÄÄÁÄÄÁÄÁÄÁÁÁÄÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÁÄÁÄÄÁÁÄÁÄÄÁÄÁ¾ÄÄÁÁÁÁÁÁÁÁÄÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhÁhhÁÁÁÁhÁÁÁÁÁÁhÁÁhhÁhhhÁÁÁÁÁhhhÁhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhhÁhhÁÁhÁhÁÁhÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhÁhhÁÁÁÁhÁÁÁÁÁÁhÁÁhÁhÁhhÁÁÁÁÁhhÁÁhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhhÁhhÁÁhÁhÁÁhÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhÁhhÁÁÁÁhÁÁÁÁÁÁhÁÁhhÁhhhÁÁÁÁÁhhhÁhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhhÁhhÁÁhÁhÁÁhÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhhÁÁÁhÁÁhÁÁÁhhhÁÁhÁÆÓëüúúúüüüúýúýúúúüüÿóóóú÷óóúóúóæq    !!!!!  ! !!!!!!! @BY__x_ZB;!!!! ! !!!!!!!!!! @xÂÎçñóú÷òðáË…[             !!           !    !        ! !!! !!! !mÓüýüýüýüýüüüþþýüýúýúýúüúýüüýüõÚÌÁÁÁÄÁÄÁÄÁÁÁÄÁÄÁÁÁ¾ÄÁÄÁÄÁÄÄÁÄÁÄÁÁÄÁÁÄÁÄÁÄÁÄÄÁÄÄÄÄÄÄÄÁÄÁÄÄÁÄÁÄÁÄÁÄNSNNSNNSNNSNNNNNNNNNSNSNNNNNNNNNNNNNNNNNNSNNNNSNNNNNNNLNNNNNNNNLNNNNLNNNSNNNNNNNNNNNLLNNNNNSNLLNNNLNNNLLNNNNNNLLLNNNNLNLNNNNLLNLNLLNLNLNLLNLLLLNLNLLNLNLLLLLLLLLLLLL,LLLNN,LLNLLLNLLL,LLLLNLLLLL.LLLLLLLLLLLLNLLLLL.,,LLLLLLL,,LLL,LLL,,LLLL.L.,,LLLL,L,LL.L,,,LL,.,L,,,,,L,,,,L,L,.L,L,,,L,,,,,,,,,,,.,,L,,,,,.,.,,.,,,,,,.,,,,,,,,,,,,,,,,.,,,,.,,,,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,bÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÁÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÁÁÄÁÄÁÄÄÁÄÄÄÁÄÁÄÄÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÄÁÄÄÁÁÄÁÄÁľÄÁÄÁÁÄÁÄÁÄÁÁÁÁÄÁÁÄÁÁÁÁÁÄÁÁÄÁÁÁÄÁÁÄÁÁÄÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhhÁÁhÁÁhÁhhÁÁÁÁhhÁÁhÁÁÁÁÁhhÁÁhÁÁhhhÁÁÁhhÁhÁhÁhhhÁhhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhhÁhhÁhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhhÁÁhÁÁhÁhhÁÁÁÁhhÁÁhÁhÁÁÁhhÁÁhÁÁhhhÁÁÁhhÁhÁhÁhhhÁhhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhhÁhhÁhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhhÁÁhÁÁhÁhhÁÁÁÁhhÁÁhÁÁÁÁÁhhÁÁhÁÁhhhÁÁÁhhÁhÁhÁhhhÁhhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhhÁhhÁhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁÁhhÁhÁÁÁhÁhÁhhÁhhÁhÁÁÆÓèüüüüúúúúúúúúûüúýÿó÷÷óóúóó÷ó÷ç’q!!!!! !! !! !!!!!! !!!!!! !!     !  l’ÙúýüüýüýüýýýÿþüüüüýüüýûýúýúüüõÙÊÁÄÁÁÁÁÁÄÁÄÁÁÁÁÄÁÁÄÁÄÁÄÁÄÁÁÄÁÄÁÁÄÁÄÄÄÁÄÄÁÄÁÄÁÄÁÁÁÁÄÁÄÄÁÄÄÁÄÄÄÁÄÄÁNNNNNNNNNSNNNNNNSSNNˆNNNNNSNNNNNNNNNNSNSNNNNNSNNSNNNNNNNNNNNNNNLNNLNNNNNNNNNNNNLNNNNNLLNNNNNNLLLNLLNNNNNLLNLNNNNNLNLNLLLNNNNNLLNNLLLLLLLLLNLLLLLLLLLLNLLLLLNLL,LLNLLLNLLNLLLLLLNLLLLLNLLLLLLL.L,LLLLL,LLNLLLLLL,LLL,L,,LLLLLLL,,L,,,LLLL,,,,LLLLL,LL,,,,,L.LL,,L,,,,,.,L,L,.,,,,,.,,L,,L,,,...,,,L,,,,.,.,,,L,.,,,,,,,,,,,,,,,,,,,,,,,,L,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ThÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÁÄÁÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁ¾ÄÁÁÁÄÁÁÄÁÁÁÁÁÁÁÄÁÁÁÁÁÁ¾ÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁhhhhhÁÁhÁhÁÁhÁÁÁhÁÁhhÁhhhÁhÁÁÁÁÁhÁÁhÁÁhÁhhhÁÁhÁhÁÁÁÁÁÁhÁÁhhhÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁhhhhhÁÁhÁhÁÁhÁÁÁhÁÁhhÁhhhÁhÁÁÁÁÁhÁÁhÁÁhÁhhhÁÁhÁhÁÁÁÁÁÁhÁÁhhhÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁhhhhhÁÁhÁhÁÁhÁÁÁhÁÁhhÁhhhÁhÁÁÁÁÁhÁÁhÁÁhÁhhhÁÁhÁhÁÁÁÁÁÁhÁÁhhhÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhhÁÁÁÁhÁhÁÁÁÁhhÁhÁhÁÁhÁÆÓèúúúûüüüüýúüúüúúúÿóóóú÷óóúóúóéšs= ! !!    !!! ! !!!!  ! !!!! !!!! !!!!!!!!   !! !   !!  !   !!        !!    !!!!  ! !  q¢äýüüýüýüýüüúÿþýúüüüûüüüúüûüýúòÚÆÁÁÁÁÁÄÁÁÁÄÁÄÁÁÄÁÄÁÁÁÄÁÄÁÄÁÁÄÁÄÄÁÄÁÁÄÄÁÄÁÄÄÄÁÄÁÄÄÄÁÄÁÄÁÄÄÁÄÁÄÄÁÄÁNNSNNNNNNNNNNNNNNNNSNNNSNNNNNSNNNNNNNNNNNSSNNNNNSNNNNSNNNLNNNNLNNNNNNNLNNSNNLNNNLLNNNLLNNNNNNNNLLNLLNNNLLNNLLNNNNLNNNLLLLNLNNLNLLLLLLNLLLNLLLLNLLLNNNLLNLLLLNLLLL,LLLLLNLLNLLLNLLNLLNLLLLLLLLL,LL..L.LL,LLNL,LLL,,NLL,LLLLLLLLL,,L,LLLL,,LL,L..LL,L,,L,L,,L,LLL,L,.,.,.,,.,,.,L.,,L,L,.,,,,,,,,,,,,,,.,,,.,,,,,.,L,,L,.,,,,,.,,,,,,,.,,,,,,,,,,,.,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,0cÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÁÄÁÄÄÁhcccccccccXcXXXbXbXXXXXXXWXXWTXWXWXWXXXXXXXXWXXXXXXWXWXWXXWXWXWXXWXXWWXWXXWXWXWXXXXXXXWXWXXXXXXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXhÁÁhÁÁhÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁhÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhhÁÁhhhÁÁÁhhÁhÁhÁÁÁÁÁhÁÁÁhÁhhhÁÁÁhhhÁhÁÁÁÁÁÁhÁÁhhÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁhÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhhÁÁhhhÁÁÁhhÁhÁhÁÁÁÁÁhÁÁÁhÁhhhÁÁÁhhhÁhÁÁÁÁÁÁhÁÁhhÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁhÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhhÁÁhhhÁÁÁhhÁhÁhÁÁÁÁÁhÁÁÁhÁhhhÁÁÁhhhÁhÁÁÁÁÁÁhÁÁhhÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁÁhhÁhÁÁÁhhÁÁhÁÁhÁÁhhhÁÁ–׿üýüüúúúúúúûüúúýýÿ÷÷óóóúóó÷óóò¬}? !!!!!! !!!!!  !!      !}ªèüýüüýüýüýüýÿýüüýûüüüüüýûüüúýëÙÆÁÄÁÄÁÁÁÄÁÁÄÁÄÁÁÄÁÄÁÄÁÁÁÄÁÄÁÄÁÁÁÄÁÄÄÁÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÄÄÁÄÁÄÁÄÁÄÁÄÄNNSNˆNNNNNNSSNSSNNNNˆNNNNNNNSNNNNNLSNNNNNNNNNNNNNNNNNNNNLNNNNNNLNNNNNSNNNNNNLNLNNLNLNNLNNNNNNNLLNNNLLNNNLLNLNNLNNLLNLLNNLLNLNNLLNLNNNLLLNLLNLLLNLLLLNLLLLLLLNLNLLLLNLLLLNLLLLLNLLLLLLLLL,,LLLLL,LLL,LLLLLLLL,L,LL,L,LL,LLLL.LL,,LLL,,LL.,L,L,,LL,,,L,,,L.,.LL,,.,,L,L,,,.,,L,,,L,,,L,.,..,,L,.,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,WÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄccXhchchccccccccccXccXcXcXXXcXXcXXcXXXXcXXXXcXXXcXXXXcXXcXcXXXXcXXcXXXcXcXXcXXcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXThÁÁhÁÁhÁÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁhhÁÁÁhhhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhhÁhÁÁÁÁÁÁhhhhÁÁhÁhÁÁÁhÁhhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁÁhÁhhhhÁhÁhÁÁhhÁÁÁÁÁÁhÁÁhÁhÁhÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁhhÁÁÁhhhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhhÁhÁÁÁÁÁÁhhhhÁÁhÁhÁÁÁhÁhhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁÁhÁhhhhÁhÁhÁÁhhÁÁÁÁÁÁhÁÁhÁhÁhÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁhhÁÁÁhhhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhhÁhÁÁÁÁÁÁhhhhÁÁhÁhÁÁÁhÁhhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁÁhÁhhhhÁhÁhÁÁhhÁÁÁÁÁÁhÁÁhÁhÁhÁÁÁhhÁhhÁhhÁÁhÁÁhÁÁhÁÁÁÁ•ÓÚúúúúüüýúüúüûúúú÷ÿüúóú÷óóúóúóòÓsl!!      !!! !!!!!!!!!!!!! !!  !!!!  !!!    !     !!       !        !!      !=ެõüüüýúýüýüüüÿýýúüüüüüûúüüüûüüèÙÆÁÁÁÁÄÁÁÄÁľÄÁÄÁÁľÄÁÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄÁÁÁÄÁÄÁÄÁÄÁÄÁÁNNNˆNSNNSNNNNNNNNNNSNSNNNSNNNNNNNLNNNNNSNNNSNNNLSNNNNNNNNLLNNNNNNNNNNNNNNNNNNLNNLNNNNNNLLNNNNNNNNNNNLNNLLLNLNLLLNLLLLLNNLNLNLLLLLLNLNLLLN,LLLLNLNLLLNNLLLLLLLNLL.L,LLLLLLLLLNLL,LLL,LLLLL,,NLLLL,LLLLLLLLLLLL,LL,LLLL.,,,LLL..LLLL.,,,L,,,L,,L,,L,,L,.LL,L,,,,.,,,.LL,,L,,,,,.,,,,,,.,,,,,,,,,,,,,,.,,.,,,.,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,cÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÁhXÁhhhhchchcchcccccXcXcXXXXcXXXcXXcXXXXcXXcXXXXcXXXcXXXXcXXcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXTXXXTXXXcXÁhÁÁÁÁhhÁhÁhÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhhhÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhÁÁÁÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁÁhÁhÁhhhÁÁÁÁhÁhÁÁÁÁÁÁÁÁhhÁhÁÁhhÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁhÁhhÁÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhhhÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhÁÁÁÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁÁhÁhÁhhhÁÁÁÁhÁhÁÁÁÁÁÁÁÁhhÁhÁÁhhÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁhÁhhÁÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhhhÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhÁÁÁÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁÁhÁhÁhhhÁÁÁÁhÁhÁÁÁÁÁÁÁÁhhÁhÁÁhhÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁhÁhhÁÁÁhÁÁhhÁÁhhÁhÁÁhÁÁhh××üüüüúûúúúúúüúüúýýüóóóó÷úóóó÷óÙŸp!! !  !!!!!  ! !    ! ! !=¬úúýúýüüýüýüýÿüüüýúýúýüüýúýüüúæÓÆÄÁÁÁÁÁÁÁÄÁÄÁÁÁÁÄÁÄÁÁÄÁÁÄÁÁÄÁÄÄÄÄÁÄÁÄÁÄÄÁÁÄÁÄÄÁÁÄÁÄÄÁÄÄÄÁÄÁÄÄÄÁÄÄNNNNNNNNNNNNSNNNNNNNNNNNSNNNSNNLNNLNNSNNNNNNNNNNNNNNNNNNLLNNNNNNLNNNNNLNNNLLNNNNNLNNNLNNLLNLNNNLLNNNLNLLNLLLLNNLNLLNLL,NLLNLNLLL,LLLLLLLLLLLLLLLLLLLLLLLNLLLNLL.LL,LLLNLLLLLLLLLLLLN,LLL,,LL.LLLLLLLLL,L,LL,L,LLL,LLL,LL,,L.LLL,,LLL.,,,.,,.,LL,L.,,L,,,,,LL,.,,,,,,,,,,,,.,,,,,.,,.,,,,.,,,L,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,LcÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÁcXccccccccccccccccXXXcXXXXbXXXbXXbXbXbXbXbXXXbXXXXbXXXXXXXXXXXXXXXXXXXbXbXXXXbXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWXTXXXXTXXXTXXXXXXXTXXXTXXXXXXWXÁÁhhhÁÁÁhhÁÁhÁÁhhÁhhÁhhÁhhhhhÁhÁÁhÁhhÁÁhhÁÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁhhÁÁhÁÁhÁhhhhhÁhhÁhhÁhhhhhhÁhÁhÁÁÁhhÁÁhÁhhhÁÁÁhhÁÁÁhhhÁhÁhÁhÁÁhhÁhÁÁhhhÁÁhhhÁhhÁÁhhÁhhÁhhÁhhhhhÁhÁÁhÁhhÁÁhhÁÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁhhÁÁhÁÁhÁhhhhhÁhhÁhhÁhhhhhhÁhÁhÁÁÁhhÁÁhÁhhhÁÁÁhhÁhÁhhhÁhÁhÁhÁÁhhÁhÁÁhhhÁÁhhhÁhhÁÁhhÁhhÁhhÁhhhhhÁhÁÁhÁhhÁÁhhÁÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁhhÁÁhÁÁhÁhhhhhÁhhÁhhÁhhhhhhÁhÁhÁÁÁhhÁÁhÁhhhÁÁÁhhÁhÁhhhÁhÁhÁhÁÁhhÁhÁÁhhhÁÁhhhÁhhÁÁhhÁhhÁhhÁhhhhhÁhÁÓÓ÷úúúüúýúýúüúûúúüþüóúóúóóúóúó÷æ q!!  !!  !!!!!   !! !!!   !!!!  !! !!!!  !!        !!  ! !      !!!!!    ! ?Ÿ¬üýüýüýýüýüüþþýúýúýúýüüûúýüúýúàÓÃÁÁÄÁÁÄÁÁÁÁÁÄÁÁÁ¾ÄÁÁÄÁÄÁÄÁÄÁÄÁÁÁÁÄÄÁÄÄÁÄÄÄÁÄÁÁÄÄÄÁÄÁÄÁÁÄÁÄÄÁÁÄÁÄÁNNNNNSNNNNNNNNNSNNNNNNSNNNNNNNNNNNNLNNNNNNLNNNNNNNNNNNNNNLNNNLNNNNNNNNLLNNNLNNLNNNLLLNLNNLLLNLNLLLNNNLLLLLLLLNLLNLLNLLNLNNLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLL.LL,LLLLLLLLLLLLLLLLLLLLL,,LL,LLLL.LLL,,,LL,LL,LLL,,,,LLL,,,,L.,,,LLL,.,.,.,,,,,L,,L,,,.,L,,,,.,,,,,.,,,,,,,,,.,,,,,,,L,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,cÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÁXXXXXWXXTXXWXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXWXXXXTXWXTXWXTXXTXWXTXTXXXXXTXXXXTXXXTXWXTXXXTXXXTXUXXTÁÁÁhÁÁÁhÁÁhÁhhÁÁhhhÁÁhÁÁÁhhÁhÁÁhÁÁhÁhhÁÁhÁÁÁÁÁÁhÁhhÁhÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁÁÁhhhÁhÁÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁhÁhÁhhÁÁhhÁhÁÁÁhÁhÁhÁÁÁÁhhÁÁhhhÁÁhÁÁhÁhÁhhÁhÁhhhÁhÁhÁhÁÁhÁÁhhhhhÁhÁhhÁhhÁhhhÁÁÁÁhÁÁhhÁhhhhÁhhÁhhhÁhhhhhhhÁÁÁhÁÁhhÁÁhhÁhÁhÁÁÁhhhhhhhÁhhÁÁhhÁhÁÁÁhÁhÁhÁÁÁÁhhÁÁhhhÁÁhÁÁhÁhÁhhÁhÁhhhÁhÁhÁhÁÁhÁÁhhhhhÁhÁhhÁhhÁhhhÁÁÁÁhÁÁhhÁhhhhÁhhÁhhhÁhhhhhhhÁÁÁhÁÁhhÁÁhhÁhÁhÁÁÁhhhhhhhÁhhÁÁhhÁhÁÁÁhÁhÁhÁÁÁÁhhÁÁhhhÁÁhÁÁhÁhÁhhÁhÇ×õüýüúúúúúúûúüúúúüÿóó÷óóúóóó÷óè’q9  !!!! ! ! !!    !o’Úüüüüýüüýúýüþÿüüýüýüúýúýüüûýú÷àʾÁÁÁÄÁľÄÁÄÁÄÄÁÄÁÁÄÁľÄÁÄÁÄÁÄÁÄÄÁÁÄÁÁÄÁÁÄÁÄÄÄÄÁÄÄÁÄÁÄÄÁÄÁÄÄÄÁÄÁÄNNNNNNNLNNNNNNNNNNLNNNNNNNNNNNNNLNNLNNNNNNNNNNNLNNLLNNNNNLNNNLLNNNNNLNNLLNNNLNNLNNLLNNLLNNLLLNNLLLNLNLLNNNLLLLLLNLLLNLNNLLNLLLLLLL,LLLLL.LLLLLLLLL,LLLLLLLLL,LLL,LL,LLLLLL,,LLL,LL,,.LLLL,L.L,,LL.LL,L,L,,LL,,L,.L,L,L,,L.,,,,L,,,L,L,,,L,,,,,L,L,,,,,L.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,McÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÁÄXhhÁhÁhhhhhhhhÁhÁhhhÁhÁhÁÁhÁhÁhhhÁhhhhÁhÁhhÁhhhhhhÁÁhÁhhhhhÁhÁhhhÁhÁhhÁhhhÁhhÁÁhhÁh„Áh„hhhhhhhhhÁhhÁhÁhhhhhhhhÁhhÁhhÁh„hÁÁhÁhÁhhhÁhhhhÁhÁhhÁhhhhhhÁÁhÁhhhhhÁhÁhhÁhÁhÁhÁhhÁhXhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchÁhhÁhÁÁÁhÁhÁhÁÁhhÁhÁhÁhhÁÁÁhhÁhÁhÁhÁhÁÁÁhhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁhhhÁhhhhhÁhÁhÁÁhÁhÁhÁÁÁhÁÁhÁhhÁhhhÁhhÁhhÁÁhhÁhhÁhhÁÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁhhÁhÁÁÁhÁhÁhÁÁhhÁhÁhÁhhÁÁÁhhÁhÁhÁhÁhÁÁÁhhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁhhhÁhhhhhÁhÁhÁÁhÁhÁhÁÁÁhÁÁhÁhhÁhhhÁhhÁhhÁÁhhÁhhÁhhÁÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁhhÁhÁÁÁhÁhÁhÁÁhhÁhÁhÁhhÁÁÁhhÁhÁhÁhÁhÁÁÁÆÓèúúûúýúýúüúúúúúúüÿóúóúóóúóúóóéšs> !!  !!!! !!! !!!!!!!!   !!!!!!   !!!    !!  !   !!           !  ! =q’æüüüüüúýüüýüþýýúüúüûýúýúýúüüüõÙÌÂÁÄÁÁÁÁÁÄÁÄÁÁÁÁÄÁÄÁÁÄÁÁ¾ÄÁÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÄÄÁÄÁÄÁÄÁÁÄÁÄÁLNNLNNNNNNLNNNNLNNNNNNLNNLSNNNNNNLNNLLNNLNNNLNNNLNNLLNLNNLLNLNNLNNNNNLLNLLNNLLNLLNLLNNNLNLLLNLLLLNLNLLLLLLLLLLLNLLLLNLNLLLLLLLLL,LL,NLL,LLL,NLLLLNLLLLLLL,LLLL,L,,LL,,LL.,LN,LLL,LLL,,,LL,,L,L,,LLLLL,,L,,L,,,,.,.,,LLL,L,,L,L,,,L,,,,,,.L,L,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MchhÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁXhÁhÁhhÁhhhhÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁÁhÁhÁhhÁhhÁhÁhhÁhÁhhhhÁhhÁhhhhhÁhÁÁhÁhhÁhÁhÁhhhÁhhÁÁhÁhhhÁhÁhhÁhhhÁhÁhhÁhhhhÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁÁhÁhÁhhÁhhÁhÁhhÁhÁhhÁhhÁhÁhhhhhÁhÁhÁhÁhhÁhÁXWWXWXWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMM0M0MM-L-MTMM-M000M00000M-0M0M00,,,0,0XhÁÁhhÁhÁÁÁÁhÁÁhhÁhhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁÁÁÁhÁhhhhhhÁhhhÁÁÁÁhhÁÁhhhhhhÁÁÁÁhÁÁhhÁhÁhÁÁhhÁÁhÁÁhhÁÁÁÁhÁhÁÁhhÁhÁhÁhhÁhhhhhÁÁhÁhÁÁÁhÁÁhhÁhÁÁÁÁhÁÁhhÁhhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁÁÁÁhÁhhhhhhÁhhhÁÁÁÁhhÁÁhhhhhhÁÁÁÁhÁÁhhÁhÁhÁÁhhÁÁhÁÁhhÁÁÁÁhÁhÁÁhhÁhÁhÁhhÁhhhhhÁÁhÁhÁÁÁhÁÁhhÁhÁÁÁÁhÁÁhhÁhhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁhÁÁ¹Æ×èüüúüúúúúûúúüúûüüÿóó÷óóúóó÷óúòÕŽj  !!!!   ! !     !!   =ŽªòüýúýüýüýýüýÿþüüýýûüüüúýúýûüüõÙÆÂÁÁÄÁÄÁÁÁÁÁÁÁÄÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÄÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÁÄÁÄÁÄÄÁÄÁÄNLNNNNNNNNSNNNNNNNNLNNNNNNNNLNNNNNNLNLLNNLNNNLNNNNNLNLLNNLLNLLNNLLNNNNLLNLLNLLNNLLLNNNLNLNLLLLLLLNLLLLLLNLNLNLLNLLLLLLLNLLLLLLLL,LLLL.LLLLLLLLLLL,L.L.L.LLLLLLLLNLLL,,.L,L,L,,LLLLL,L,,LL.,,.,L,,,,.L,,,L,,LL,L,,,,L,L,L,,,,.,,,,LL,,.,,.,,,,,.,L,,,.,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MM\XXWbb\XW\WWWWXWWWXXWWWXÁhhhÁhhÁhhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhÁhhÁhhÁhÁhhÁhhÁhÁhhhhÁhÁhÁhÁhÁhÁÁhÁhhhhÁhhhhÁhhhÁhhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhhÁhÁhhÁhÁhhhhÁhÁhhÁhhÁX,,chÁhÁÁhÁhÁÁhhÁhÁhhÁhhÁÁhhÁÁhhhÁÁÁÁhÁhÁhÁhhÁÁÁhÁÁhhhhÁhhhhÁhÁhÁhÁÁhhhhÁÁhÁhÁhÁÁhÁÁhhÁhhhÁhÁhhÁhhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhhÁhÁÁhhÁhÁÁhÁÁhÁhÁhÁhÁhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhcccccccccccccccccccccccccccccccccccccccccccccccccccccccccc„Óàúúüúûúüúüúúúüúúúþüúóúóóúóúóóóào     !  !! !! !!!!!!! !           !! ! !!     !!!!!  !  !! =ÓûúüýüýúýüüúüÿþúýúüüúýûýüüüüýúèׯÁÄÁÁÁÁÁÄÁÁÄÁÁ¾ÁÁÄÁÁÁÄÁÁÁÄÁÄÁÄÁÄÁÄÁÄÁÁÄÄÁÄÄÄÁÄÁÄÁÄÁÄÄÁÄÄÄÄÁÄÁÁÄÁÁÄNNNLLLNLNNNNNNLNNNNNLNNNNNNNLNNNNNNNLLNNLLNLNLLNNNNNNNLLLNNNNLLNLLLNNNLNLLLLNLNLNLLLNLNLLLLLLNLLLLLLLLLLLNLLNLLLLLLLNLLNLLL.LLLLLL,L,,L,LLLN,LL,LL,L,,LL.LLL,LLL,LLL,.LL,L,LL,LLL.,LLL,,,,L,L,,.,,,.LL,,L,,,,,.L,.,,L,L,,.,,,,L,,,,,,,,,,,.,L,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,XhhÁhÁhhhÁhÁhÁÁhÁÁhÁhhÁhÁÁÁhhhhÁhhÁhhÁhÁhhÁhhhhÁhÁÁhÁhÁhhhhhhhhhhÁhÁhÁhhÁhÁÁhÁhÁhhÁhÁhhhhÁhhhhhÁhhhÁhÁhhhÁhÁhhÁÁhÁhÁhÁhÁhÁÁhhhhÁhhÁhhÁhÁhhÁhhhhÁhÁÁhÁhhÁhhhhÁhhhÁhhÁhÁhhhhÁX,,,,,,,,"dÁÁÁhhÁÁÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁÁhhÁÁhhhhhÁhhÁhhÁhhÁhhÁhhÁÁhÁhÁhhÁhhÁÁhÁÁÁÁÁhhÁÁhhÁhÁÁÁÁhÁÁhhhhÁhÁÁhhÁÁhhhhÁhÁhÁhÁhÁhÁhÁhÁhÁhhhÁhhhÁhÁÁÁhhhcXWXWXWXWWXWXWWWWWXWTWWWWMMMMMMMMMMMMTMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0MM0M-M0T0LMT"L"--0M-000LMM00M-M00M0F0M0000M00F,MÓÚúúûüúüúúúúúûúúúüþüóóóúóó÷óóúóèq!  !!!  !! jÖüüýüüüüüýüýþþýüüüûüüúüúýúýúúüèÓÂhhhh¾hhhhhhh¹•hhhhh¹•hh¹•hÁhhhhhhhhh¾hhhhhhhÁhÁhÁhhÁhhhhhhhÁ¾hÁ¾hNNNNNNNLNNNNNLNNLNNNLLNNNNNNLLNNNNNNLLNLNNNLLNLLNNNLNNNLLLNLNLLLNLNNLNNLNLLLLLLNLNLLLNLNLLNLLLLLLNLLLLLLLLLLLNLLLLLLLLLLLNLLLLLLLLLLLL,LLLL,L,LL,LLL,LLLLLLL,,LLL.LL,,,L,LL,,,,,.LL,,LL,.,L,L.,,LL,.LL.,,.,,L,,,L,,,,L,.,,,L,,,,,L,,,,,,,,,,.,,,,,,,,,,.,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhÁhhÁÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhÁhhÁhÁhÁhÁhÁhhÁhhÁhhÁhhÁhhÁhhÁhÁhÁhhÁhhÁhÁhÁhhÁhhÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhhhÁhhÁÁhÁhÁhhÁhÁÁhÁhÁhhÁhÁhhÁhÁhÁhÁhÁhÁhÁhhhhÁhhÁhhÁhhÁhhÁhÁhhÁhhÁhhÁhÁhhÁhX,,,,,,,WhhÁhhÁÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁhÁhhÁhÁÁhÁhÁhhÁhhÁhhÁhhhÁhÁhhÁÁhhÁhhhÁhhÁhÁhhÁhÁhÁÁÁÁhÁhhÁÁhÁÁhhÁÁhÁhhÁhÁhÁhhhhhhhhhhhÁhÁhÁhÁhhhhÁhhÁÁhÁhÁhhÁÁdÊÓúüúúüûúûúüúúüúúúüÿú÷÷óóúóú÷óóéšs= !  !!!! !!!! !! !!! !!!!! !         !!   !!! !  !!! =qšæúüüüüýúýúýüþÿüüûüüýûýûýúýúüýúàÓeMRM\MRMMRMM\RMMRMR\RMRUMRMMMMMTMMRM\MMRMTRMMMMMMRMRMRMMMR\WMMRMMMNNNNNNLLNNNNLNLNNNLNNNNNNNNNNLNNNLNNNLNNLNNLNNLNNNLLNLNLNLNNNNLLNNLNLNLNLLLLLLNLNLLLLNNLLLLLNLLLNLLLLLLL,L,LLLLL,LLLLLLLLLLLLLLNLL,LLL,,LLLLL,,LLL,LLL,LLLL.,,L.L,L.,,.L,LL,LL,L,L,,,.,,.,LLL,,,.L,.L.LL,,.,,,.,.,.,,,,.,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhÁhhÁhhhhhhÁhhÁhhÁhhÁhhhhhhhhhÁhÁhÁhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhÁhhÁhhhhhÁhÁhhhhhhhhÁhhhhhÁhÁhhhÁhhÁhhÁhhhÁhhhhhÁhhhhÁhÁhhÁhhhhhÁhÁhÁhhhhhh„¹•hhÁhhhÁhhÁhhhhh„¹•hÁhhÁhhhhÁX,,,,,,,,,,,,,,ghhhhÁÁhhhÁhÁÁhÁhÁhhÁÁhÁhÁhhÁhÁhhhÁhÁhÁhhÁÁhÁhhÁhÁhÁhhhÁÁÁÁhÁÁhÁÁhhÁhÁhÁhhÁhhÁhÁhÁÁhÁÁÁhhhÁÁhhhÁÁÁhhÁhhÁÁhÁhhhhÁÁhhÁhÁhÁhÁhhÁhhÁhhhhhÁÁhhW,–Óõúüúúúüúüúúúúúúúýÿóóóúóóóóó÷÷òÙm!  ! !!    !   ! =ªõüýúýúüüüýüýþþúýüüúüüüüüúýüúú÷àÆPLLLLLLLL,LLLLLLL,LLLNLLLLLLLLL,LLL,LL,LLLLNNLL,-LLELNLNNNNNNLNNLNNNNNNNLNLLNNNNLNNNNNNNNNLLNNNLNLNNLNNNNLLNLLLLNNLNLLLNLNLNNNLLLNNLNLNLL,NLLLNLLLLLLNNLL.L.LLNLL,LL,LLLLLLLL,,L.LLLLLLLLLLL,,LL,LLLLL,L,.L,LL.L,,LLLLL.LL,,,LL,,,,L,,LL,.,L,,,,LLL,,,,,L,,L,.,,,.,.,,,,,,L,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XÁhÁhhhhhhhhhÁhhÁhhÁhhÁÁhÁ•¹„hhhÁhÁhÁhh¹„hÁÁhÁhÁhhhhhhÁhhÁhhhhhÁhÁhhÁ„hÁhhÁhÁhhhhÁhÁhhùhÁhhhÁhÁhhÁhhhhhhhhhÁhhÁhhhÁhÁhÁhhhhhhhÁhÁhÁhhhhùÁ•hhÁhhÁhhhhÁ•¹h•¹¾ÁhÁhhùhÁhÁhX,,,,,,,,,,,,,,MhhhhÁhÁhÁhhÁhÁÁhhhÁhÁhhhÁhhhÁhhÁhhhhÁÁhÁÁhhÁhÁhhhhÁhÁÁhÁÁhhÁÁÁÁÁhÁhhÁÁhhÁhÁhhÁhÁhhÁhÁhhhÁÁhÁhhhhhÁhhhÁÁÁÁÁhÁhÁÁÁhhÁhhhÁhhÁhhÁhÁÁhhÁhÁhhÁhh,,,aÓèúúýúúúúúûúüûúúúúþü÷óóú÷úóúóúóà p! !  !! !!! !!         !  ! !!       ?¬üûüýüýüýüüúýÿýýúüûýúýúýúüüûýüõÚ•P,,LLDMLL,LLLLLLLLLLNLLL,LNLLLLLLLLLLLLLL,LLLLLLLLLLLLLL.LNNNNNNNLNNLLNNNNNNNNNNNNNLNLLLNNNNLLLLLLLNNNLNNNLNNLLNNLNNLNLNLLLLLNLLNLNLLLLNLLL,LLLLLNNLLLL,LLLLNLLLLLLLLLLLLL,LLLLLLL,LLL,L,L.,LLLL,,LL,,,LL.LLLLL.L,L,L,.,L..,,,,,,,,LLL,LLL,LL,,.,.L,.,L,,,,,,,,,,,L,,,,,,.,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhhÁh„¹•¹•hhhhhhhhhÁhhÁhhh•¾hÁhÁhÁhÁhhhÁ¹•hhhhÁh„¹•¹•hÁhhhhÁhhhhÁhhÁ¹•hhhhhhhÁhhÁhhhhhÁ•hÁh„¹•Áh¹•ÁhhhÁhhhhhhhhhhÁhhÁhhhhhÁhh„ÁhÁhhhhh¹•¹•hhÁhhhÁhhhh•¹Ã„¹•hhÁhÁ•Á¹•W,,,,,,,,,,,,,,,,,,chhhÁhÁhÁhÁÁhhhhhÁhhÁhhhhÁhhhhhÁhÁhhhÁÁÁÁhÁhhhÁhÁhÁhÁhÁÁhÁhhhhÁhÁÁÁÁhÁÁÁÁhhhÁÁhÁhÁÁhÁhhÁhÁhÁhhÁÁhÁhhhÁÁhhÁhÁhÁhÁhÁÁhhÁÁÁhhÁÁhÁhÁhhhhÁhÁhÁhhM,,,,,,MÓàúûúúúûüúúüúúúúûúýüúóúóóó÷óó÷óèšs=  !!!!!!     !     p’ÙüüüüúüüüüýüýþýúýûüüüúýúýúýüúúèÓeL,L,LL,LLL,LLLLL,LLLLLL,,DLLLLLLL,LLL,LLLLLLLLLN,LLLLLL.LLNNNLNLNNLLLNLNNNNLNNLNLLNNNNNNLNLLLLLLLLNNLLLNNLLLLLNLLNLLNLLLLLLLLL,NLN,LLNLNLNLL,LLLLLLLLLLL,LL.LLLLL,LL,,.LL,LLLLLLL,.LLL,,,LLLL,L,LL,L,L,LL.L,LL,L,,,.,,.L.,.,,.,,,,,L,,,LL,,,,.,,,.,,,,,,,,,L,,,L,,,,,L,,,,,.,,.,,,,,,,,,,,,L,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XÁhhÁh¾Á•hhhÁhhhÁhhhhhÁhhhhhhhÁhhhhÁh•¹Á¾•hhhhÁ•¹Á••hÁh•¹„hhhhhh¹„¾••¹•¹„Áhhhhhhh•¹Áhh•¹h¾•hÁ•hÁÁhÁhhhÁhhhÁÁhhhhhÁhh•¹h•¹Á¹hhhÁ•¹•¹•Áh•¹Á„¾hÁhhÁhÁ•¹•h¾hÁhÁhhhÁ¹•hhX,,,,,,,,,chÁhÁhhÁhÁÁÁÁhhhÁhÁhÁÁhhÁÁÁhhhhÁhhhÁÁÁÁÁÁÁÁÁÁhhhhÁÁÁhhhhÁhÁÁÁhhÁÁhÁÁÁhhÁhhhhhÁÁÁÁÁÁÁhÁÁÁhhÁhhÁÁhÁÁhÁÁhhhÁhhhÁhhhÁhhÁÁhÁhÁÁhhÁhÁhÁhÁhÁhhÁhÁhX,,ÓØúúúüúúúúúúúúúúúüüÿó÷óóúóúóúó÷òÕŽj !!     !!  !    !         !!      !  !  ! 7ŽšõüüúýüûüüüüüþÿüüüüüüûýúýúýúúýúàÓ\,,,,LLLL,,L,,LLLL.LLL,,LLLLL,,LLL,LLLLLLLLLLLLLLLLLLL,LLLL.LNNNNNNNLLNNNNLNNNLLLLLLLNLNLNLLNLLLLLLNLLLLLLLLNLLLLLNLLLLLLNLLLLNLLLLLLNLLLNLLLLLLLLLLLLLLLLL,LLL,LLLLLLL,LL,,LLL,LL.LLLL,LL,L,LL.L.LL,,LL,L,,L.,,,,,,.,.,,L,.,,,.,,,,,,L,,,,,L,,,,,L,.,,,,.,,,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,LD,L,D,DL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhÁÁh„¹•¹•hhhhhhhhhÁhhhh¹•ÁhhhhhÁhhhhh•„Á¹•hh¹•h•¹•hhhhhh¾¹•hhÁ¹•hh¹••¾¹•¹•hh¹•ÁhÁ¹•hh•hhhh¹Á¹•Áhhhhhhhhhhhhhhhhhhhhh•Áh•¹••Áhh¹•Á•h¹•¹•¹•¹•hhhhhhh¹•h¹•ÁhhÁhh•h•hX,,,,,,,,,,,,XhÁÁhhhhhhhhÁhÁhÁhÁhhhÁÁÁhÁhÁÁhÁhhÁÁÁhhhhhhhhhÁhÁÁhÁhÁhÁhÁhhhhhhhhÁhÁÁÁhhÁhÁÁhhhhÁÁhÁhÁhhÁhhhÁhhhhhhÁhÁhhÁhhhÁhÁhhÁhhhhÁhhÁhÁhhhhhÁÁhhhhhhhÁc0,,,–Óõúüúúúüúúúûúûúúúüÿ÷ó÷úóóó÷ó÷óóâ’p9    ! ! !  !  ! !!!CÕüüúýüýüüýúýüÿýúûüúýúüüüüüúýúýõàR,,,LLLLL,L,LLL.L,L.,,LLLLLL,L,LLL,LLLLLLL,LLLLLLLLLLLLLLLLLLL.NNNLNNNNLNLNLLLNLLLLLNLLLLLLNNLNLNLNLLLLLNLLL,NLLLLNLLNLLLLLLLLL,LLLLLNLLLL,LLNLLLLLL,LLLLL,LLLLLLLL,LL,,LL,,L,,LL,L.LL,LL,L,,,LLL,,LL,,,LL,,L,,.,,.,,.,,.,.,L,L,.,,.,L,,L,,,,,,,,,,,,,,.,,,,,,,,,,,,,,L,,,,,,,,.,.,,,,,,LD,LL,DL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhÁhhÁh•hhhhÁhÁhhhhh•¹••¹hhhhhhhhh•¹Á¹•¹•hÁh•Á¹h•¹Á•¹„•hh•¹Á„¾••¹¹•¹„••¹•hhhÁ•hhhh•¹hh•••ÁhhÁhhhhhÁhhhùh•¹h•¹hhhhh•hh•¹•hhÁ¹h••h•¹•Á•hÁh•¹hh•¹•hh•hhhhÁhhhhhhhX,,,,,,,,,chhÁhÁhÁhhhhhÁhÁhhhhhhÁhÁhhÁhhÁhhÁhhhÁhhhhhhhhÁhhÁhhhhhÁhhÁhhhhhhhÁhhÁhÁhhÁÁhÁhÁhÁhÁhÁhhÁÁÁhhÁÁÁÁhhÁhÁhhhhhhhhhÁhhhÁhhhhÁhhÁhÁÁhÁhhÁhÁhÁhhh•¹X,,,,,^Óèúûúûúúüûúúúúúúúúþüúóóúóúó÷úóúèª?!   !!   !    ! !!     !9Ž¥æúüüüúüüûüüüüÿýüüûýúýúýúýúýúýúõÙOL,,,,,,,LLLL,,.L.LL,LLL,,LLLL,LLLLLLLL,,L,,LLL,L,,LL,LLLLLLL,LL,.LNLNNNNLLNNNLNNLLNNLLLLLNLLLNLNLLLLNLLLLNNNNLLLLLLLLNLLLLLLLLLLL.LLLLLLLLLNLLLLLLLLLLLLLLLL.LLLL.LLLLL,LLL,LL,,L,LLL,,,LL,,,L,L.,,,LLL.,,LL,,.L,,.L,,,,,.,.,,L,.,,,,L,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,LD²D,D,DL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhhÁhhÁ¹•¹•hhhhhhhhÁhhh•¹•h•hhÁhhÁhÁhh•¹••¹••¹•hhhhÁhh•hh•¹•hhh•h¹•¹•h•¹•¹•¹••¹•hhhhhhh¹•h•hhhhhÁhhÁhÁhhhhhhhh•¹•¹•Á¹•hhhhhhh•Á¹•h••hhhhh¹•hhhhh•¹••hhhhhhh¹Âhh¹•h¹V,,,,,,,,,,,McÁÁhÁhÁÁÁhÁhÁhhhhÁhÁÁhhÁhhhhhÁhÁhÁhhhhÁhhhhhÁhhÁhÁÁhhhhhÁhhhhÁÁhÁhhÁhhhhhhÁhÁhhhhhÁhÁhhÁhhhhÁhÁhÁhÁhÁÁhÁhÁhÁhÁÁhhÁhÁhhÁhÁhhhÁhhÁhÁÁhÁhÁÁÁhÁhhc,,,,,0ÓÚüúúüúúúúúúúúúúúúýÿóóúóó÷óúó÷óóÙŸo !   !  ! !    ! !  ! ?¢¬õüüúýüýúüüüýþþüúýüüüýúýúûüúýúüèÓeLL,,L,L,L,L,L,,LL.,L,,L,,L,,,LLLLLLLLL,LLLLLL,,L,LLL,,LL.LLLL.LL.LNLNNLLLNNLNLNNLLNNLLLLLLNLLNNLLNNNNNLLLLLLNNLNL.LLLLLLNLLL.L..LLL.NLLLLLLLLLLLLLLLLLL,LL.L.L.L,,LLLL,LLLL,L,.,L,,LLL,L,L.,L,,LL,,,,L,,,L,.,L,L,,.L,,,,,,,,.,.,,,.,.,,,,,.,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,LD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhh•h•hhhhhhhhhhhhh•hhhhhhhhhh•¹hhÁ•hhh•¹h•¹h•¹hhhh•¹h•¹hh•¹•hhh•¹Á„¾Áh•¹hhhhh•¹•hh•¹•¹hhhhhhhhh•¹„¾hhÁ•¹••¹•hh•h•¹h•¹h•¹h•hÁhh•¹hh•¹•hh•¹hh•¹•hh•¹h•¹hÁ•¹•hh•hX,,,,,,,,,,WhÁhhhÁÁhhhhÁhÁhhÁhÁÁhÁÁÁhÁÁÁhhÁÁÁÁÁÁhhhÁÁhhhÁhhhÁÁhÁÁhÁhhÁhÁÁÁÁÁÁhhhÁhÁhhÁhÁhhhhhhÁhhhhhhÁhhÁhhhÁÁÁhhhÁhÁÁhhÁhhhÁhÁhhÁhhÁÁhhÁhhhÁÁhhhÁÁhhÁhhÁhM,,,,Ê×÷úúúüúûúúûúúúúúúúÿú÷óóúó÷óúóúóæ’q= !          !     ! !     !    !  ! m’Úüüûüüúüýüýüüþÿûüüúüûúüüüüûüúý÷àÊ\,,,,,,L,L,L,L,.,,LL,L,,,L,LLL,L,,L,,LLLL,,LLL,L.,,LL,LLL..LL,,LL,LLNNLLNLLNLNLNLNLNLNNLNNLLLLLLNLLLNLNLLLLLLLNLLNLNLLLLLLLLLLLL.LL.L.L.LL,LLLLL.LLLLLL,LL,L.LL,LL.L,LL,L,,LLLL,,.L,L,LL,,LL,,,.LL,,LL,L.,,L,,L,,.,,L,L,,.,,,,,,,,,,.,L,,.,,,,L,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,LL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhh¹•¹•hhhhh¹•hhÁhhhhhhhhhhh¹•hhhhh•¹•hhhhh•¹•h•hh•hhhhh•¹•h•hhh•¹•hhhh•hhhÁ¹•h•¹•h¹•hh•¹•hhh•Áh¹•hhhhhh¹•hhhh¹•Áhhhhh•hh•hh•hhhhh¹•Áhh•hhhh•¹•¹•hh•hh•hh¹•¹•hhhX,,,,,,,,,,,,,,,chhhhhÁhhÁhÁhhhÁhÁÁÁhhÁhÁhÁhÁhÁhhhhÁhÁhhhÁhhÁÁÁhhÁhhhÁhhhÁhÁhÁhhÁhhÁhÁhhhÁhhhÁhhÁhhhhhhÁÁhhÁhÁhhhhhhhÁhhÁhhÁÁÁhhhÁÁhhhÁÁhhÁÁhhhÁhhhhhÁÁhhhÁÁhhhc,,,,,,,,,,–Õõúúúúúúúúúúúúúúúúýüó÷÷ó÷óúóóó÷ò¬Ž?!!    !  !      =s¥èúüüüüüüüúüúþÿüüúýýûüüýúúýüúýúõàO,,,,,,,LL,,L,L,,.L,L,,L,L,,LLL,LL,,,LL,,,LLLLL,,,L,L,LLLLL..,LL.L,LNNLLNLLNLLNLLNLLNLLLLLNNLLLLLLLNLNLLLLLLL,LNLLLNLL.LLLLLLLL.LL.L,LLLLLLLLLLL,,LLL.LL.L,,LLL,.LL,L,LL,.,,.L,L,,,LL,,,L,,,,.,L,L,,LL,,.,,,.,.,,,.,,,,L,,.,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XÁ¾„•h•¹•¹••¹hhhhh•¹•¹h•¹•h•¹hhh•¹•h•¹hh•¹hhhhhhh•¹hh¾hh•¹h•¹hhhhhhhhhh•hhh•hh•hh•¹•¹h•¹•¹hh•hhÁhhh•¹••¹hh•¹••¹hhhhhhhhhhhhhhhhhh••¹hhhhhhhh•¹••¹•hhhhhhhhh••¹•h•¹hhX,,,,,,,MchhhÁhhÁÁÁÁÁhÁhhÁhhhhhhhhÁhhhÁhÁhhhhÁhÁÁhhÁhhhhÁhÁhÁÁhÁhhhÁÁhhhhhÁhÁhhÁhÁhÁhhhÁÁhÁhhÁhÁhhÁÁhhÁÁÁhhhhÁhhÁhhhhÁhhhhhhÁhhhhhÁhhÁhhhÁhhhÁhhÁÁÁÁhÁhhgM,,,\Óæúüûúúúûúúúúúúúúúüÿúóúóúóó÷÷÷óóà’q= !    !     !  !!     o¢ÕúýúüúýúýúýýüþþýûýúüüýúýúýúúüúýñÙ“L,,,,L,,,,,,L,,L,,,L,LLLL,,,,LL,,,,L,,LLL,,,LL,L,L,LLL,L.L,L,LLLLLLLNLNNNLNLLNLLNLLNLLNLNLLNLLLLLNNNN,LLLLLLLLLLLNLLLLL.LLL,LLLLLLL,LL.L,LLL,LLLLLLLLL.LLL,.,LLL.,,,.,,,.,.,LLL,,,L,LL,LL,.,L,,,L,,,,,,LL,.,,.,,L,,.,L,,,.,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,D,DDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhh¹•¹•hh•h¹•h•¹•h¹•••hh•¹hhh•¹•hh•hh•¹••¹•hh¹•hhh••hhÁhhh•hh•¹•h¹•¹•hhhhhhhhhhhhhhh•¹•¹•¾•hhhhhhhh¹•¹••hhh•hh•hhh¹•¹hhhh¹•h¹•¹•¹h•hhhh¹•¹•hhhh¹•h¹•h¹•hhhh•h¹••X,,,,,,,,,,\hhÁhhÁhhÁhÁhhhÁhÁÁhÁÁhhhÁhÁÁhÁhhÁÁhhhÁhÁÁhhhhÁhhhhhhhhhhhÁhÁhhÁhhhÁhÁhhhhÁhÁÁhÁhhhÁÁÁhhÁhhhÁhhhÁÁhÁÁhhÁhhhÁÁhhÁhÁhhhÁhhhhhhhÁÁÁÁhhÁhhÁhhÁhÁhhÁhhX,,,,,0ÓÙúúúúúúúúúúúúúúúúüþúóóóó÷úóúóúóè¬?  !          !! =ªèüüüûüüüüüüüýþþüüüüûüúüúýúýýûüúæÓ\L,,,,,,,,,.,,L,L,,L,L,,,L,,,,,LL,L,,,,,,,,L,LLL,,LL,LL,,LLLL,,L.LL,LLLLNLNLLNLNLLLLNNN,LLNNNLLL.NN,NLLLNLLLLLLLLLLLLLLLLLL,LLL,LL..LLLLLL,LLLLL.L,LLL.L,.LL,,LL,,L,.,,L,,L,,,.L,L,LL,L,,,.,,,..,L,L,.,,,,,,,,,,,,,.,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DLL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhÁhhhhhh•hh•¹•hh•h•¹ghh•_c_h•¹•hhhhhh•¹•hh•hhh••¹hh•¹hhhhhhhhhh•hh•••¹h•¹h•¹h•¹h•¹hhh•h¹••¹hh•¹hh•¹h••¹•h•¹hhhhhhhh••h•h•¹•hh••h••¹hhhhhh••hhhh•¹•hh•hh•h•¹hhhh•h•¹hX,,,,,,,,chÁhÁhhhhhhhÁhÁhÁhÁhhÁÁhÁÁhhhÁhhhhÁhhhhÁhhÁhÁÁhÁhhhhhhhhÁhhhÁÁhhÁhhhhhhhÁhhhÁhhhÁÁhÁhhÁhhÁhhÁhhhÁhÁÁÁhhhÁÁhÁhhÁhÁhÁhhÁÁÁhÁhhhhÁhÁhÁhÁhhhhhhhÁ•¹ÁÁgM,,Óõúúûúûúúúúúúúúúúúüþóúóúóóóó÷ó÷óæ’q!      !!!      !        !o¢ÕúúüüüúýúýúýúýÿýúýúüüüüûúýúúúüüõàÆ\,,,,,,,,,,.,,,,L,,.,.L,,,L,.,,,,L,,,L,.,,L,,,LL,L,LLLL,L,,,,,L.L.L,LNLLNLNLLLLLLLLLNLNLLLN,NLLLLLLLLLNLLL,LN,LLL.LLLLLLLLLL,LLL,LLLLL,LLLLL.L.LL.,,LLL.L,,L,.,,,L,,,LLL,.,,,L,LLL,L,,,,,L,,,,L,,.,,,,,,,L,.,,.,,,,,,.,,,,.,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDD,DDDDD,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhh¹•hhhhhhhhh•hhhhhh_@$$$$>Y‚hhhhhhhh¹•hhh¹•h•hhhhhhhhhhh¹•hhhhh¹•h•hh•hh•hh•hh•¹•hhhhh•hhh•¹••¹•¹•hhhh•hhh¹•ZYYYYYBYCYZYZ_YYYYh•_=@>hhh¹•¹•hhhh•h=$hhh•¹•¹•hh„X,,,Mg¹ÂÁÁhÁÁÁÁhÁhhhÁhÁhhhhÁhhÁhÁhhhhhÁhhhÁhÁhÁhÁÁhÁhÁhÁhÁhÁÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁhÁhÁhÁhhhÁhÁhhhÁÁÁhÁhÁhÁhhÁhhhÁÁhhÁÁhhÁhhÁÁhhÁÁhÁhÁÁhÁhhhhÁÁÁhÁÁÁÁhÁhÁh•ÁhW\Óàúúúüúúúúúúúúúúúúýÿúóóó÷úóúóúóó謎?  !      ! ! !       !! =’éúüúýúüúýúüüüþþúýúýúýúûüüúýüýúûèÚ/,,,.,,L,,,,,.,,,,,,L,,.,L,,,,,,,,,,,L,L,,,,,.,LLL,L.,,,,L,,L,LL,L,,LN.LLN,NLNLLLLLLLLLLLLLLLLLLLL.LLLLLNLLLLL,.LLLLLLLLL,LLLLL,LLLLLLL,,L,.L.L.L.,,LLL,,L,LL,,,,L.,,,L,L,L.,,LL,,L,,.,.,,,,,,,,,,,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,DDIDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhh•h•¹•¹hhhhhhh•¹hh_$$$=hhhhh•¹•hhhhhhhhhhhhhhhh•¹••¹h•¹•hhhhhhhhhhhhhhh•¹•hhhhhhhhhhh¹•h„¾hhhhhhh•¹•hh$$!$$$$hhY_hhh•hhhhhhhh@$hh•¹h•hhh¹hX,,,bhÁÁhÁhhhhÁhhÁhhÁhhÁhÁhÁhhhhÁhhÁÁhÁhhhhhÁhÁhhhhhÁhhÁÁhÁhhÁhÁÁhÁhÁÁÁhÁÁhÁhÁhhÁÁhhhhhhhÁhÁhhÁhÁÁhhhhhhhÁÁhhhÁhhhhÁhhhÁhhhhhÁhÁhhhÁhhÁÁhÁhhhhÁhhhhÁhhg,0ÊÚ÷úúúúúúúúúúúúúúúúüüóú÷óóúóóóú÷óÙ’}!!  !!  !!!   !    ! !! o¬úýúüüüûüúýúüýÿýýúýúýúüüýúüúûúüúàÓ\,,,.,,,,,,,,,,,L,,,,,,L,,,,,L,,,,L.,,,L,L,LL,,L.L,LL,L,LL,,L,LL,,L.,LLL.LLLNNLLLLNLLLLNLLLNLLLLLNLL.LLLLL,LLLL,,LLLLLLLLLLLLLLL,,L.LLLL,LLLL.,,L,L,L,L,L,.,,,,.,,,L,.L,,LLL,,,,,LL,,L,,,,,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhh••hhhhhhhhf>$$$[hhhgh•hhhhhhhhh¹•hhhhhhhhh¹•¹•¹•ghh¹•h¹•h¹•h¹•hhhhhhhhhh¹hhh¹•¹•¹•hhhhhhh•¹hh$$$$‚hYchhhhhhh¹•hhh>$hhhh•hhhhhhX,,,,,,,Ldh¹•hÁÁÁÁhhhÁhÁhhÁÁhÁhhÁhÁhhÁhÁÁhÁhhhÁhhhhÁhhhhhhhhhÁhÁhhhÁÁhhhhhhhÁhhhhÁhÁÁhhhÁhÁhhÁÁhhÁhhÁhÁhhhhÁhhÁÁhÁÁÁhhÁhhhÁÁÁhÁhÁÁhÁÁhhÁhÁÁhhhÁÁÁÁhhhÁhhhhÁÁhM ,“Óèýúúúúúúúúúúúúúúúýÿ÷óóúóó÷÷÷óó÷謠?      !  !  !            =}’æüúüúúýüüüüüüþÿúýüúýúýúýúýúýüüûõÚ—M,,,,,L,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,L,,L,L,,,,,LL,,,,,,,,LL,,,LLL,,LLLLL.L,LLLLLLLLLL,LLLLLLLLLLLLLLLLLLLL.L,,LL.LLL,LLLL..LLLL,.LL,,LLL,L.L,,LL,,,,,L,LLL,L,,L,,,,,,,,,,L.,,,,,,.,,,,,,.,,,.,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDLD,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Thhhhhh¹hhhhhhhhhh_!@Y_c_[@$@hhhhhhhhhhhhhh•hhhhhhhhhh•hh••¹•hhh•hhh•hh•hh•hhhhhhhh•¹••hhhh•hh•hhhhhhhhhh•hhh@_@[>@$@>YZYZhhZ$_hhhhh•hhhhhh$hhhhhhhhhhhhX,,,,,MhÁhhhhhhÁÁhhhhÁhÁhhÁhhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhhhÁÁhhÁhhhhÁÁhhhhÁhhÁhhhÁhhhhhÁhhÁhhhhhÁhhhhÁhhhhÁhhÁhhÁhhhÁhÁhhhhhÁhhhhhÁhhhhÁhhhÁhÁhÁhhhhhhhÁh•¹ÁhÁhhhhX UÓàúúúúúúúúúúúúúúúúúþüúóó÷óúó÷óúúóà¢s=   !!!      ! !o¢ÕúúüûüüüúýúýúýþýýúúýúýúüúûúýúúüüèÙ-,,,,,,,,,,L,,,,L,,,,,,,,,L,,,.,,,,,,,,,,.,L.,,.,.LL,,L,,.,L,.,LLL,,,LLLNLLLLLLLLLLLLLLLL.LLL,LLNLLL.,L,LLLLL.L,LL,LLLLLLLLLL.LL,,LL.,.,,,L,L.,,LL,,L,.,,,,,,,L,,,,.,.,,,,,,,,,,,L,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,DDDDDDDDDD,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhh¹•hhhhhh_$>hd¹hhhhhh_X„hghdhhhhhhhhhhh¹•hhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhB$>hhhhhhhhhhhhhhhhhhhhhhhhhhhdhh>$hhhhhhhhhB$chhhhhhhhhhhh@hhhhhh¹•hhhhX,,,c„hÁhhhhÁhhÁhhhhhhhhhhhÁhhhhhhÁhÁhhhÁhhÁhhÁhhÁhhÁhhÁÁhhhÁhhhhhhhhhhhhhhhÁÁhhhÁhhÁhhhÁhhhÁhÁhÁhÁhÁhhhÁhÁhhhhhhhhhÁhÁhhÁhhhÁhÁhhhhhhÁhÁhÁhÁhhÁhh•Áhhhhhc0 Ê×õúúúúúúúúúúúúúúúúüÿóóúóúóóú÷óóóòÓm!  ! !  !     !   !  !=Žªèúüúüüúúüüüúýýÿüüüýúýúýúýüüúýüû÷àÊ\,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,L,,,,.,,,L,,,,.LL.,.,,LNLLL,.LLLLLLLLL.L,LL,LLLLL.L,LL,LLLLL.LL,,,,,LLL.L,,L,,L,L,,L,L,.,LLL,LL,.LL,,L.,,L,L,,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Whhhhhhhhhhhhhhhd$chhhfhhhhhhhghhhdhhhchhchhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhh_$Chhhhhhhhhhhhhhhhhhhhhdhhdhhhd@hhhhhhchhZ$[hhhhhhhhhhhh>$hhhhhhhhhhhhX,,,0chÁhÁÁhÁhhhhÁhhhhhhÁhhhhÁhÁhhhhÁhÁhÁhÁÁhhhÁhhÁhhhÁhhÁÁhhhhÁhhÁhhÁhÁhÁhÁhhÁÁhhÁhÁÁhhhhhhÁhhhhhhhÁhÁhhhhhhÁÁÁhÁhÁÁhhhÁhhÁhhhhÁhhhÁhhhÁhÁhÁh•¹hÁhhhhh•¹•¹W  , fÓèúúúúúúúúúúúúúúúúüýüúóóóúóóóú÷÷óâ’}>!   !  !  !  !!$q’ÚúýúüüúüüúýúüüþýúüûúýúýúúüûúüüúüõÙ“M,,,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,LL,.,,,,,,.,L.L.,LL,LLLLLL,LLLLLLLL,LL,,L,L,LLLL.L,L,L.L.LL.LL,LL,LLLLL,,,,.,,,,,,.,L,,,LL,LL.,L.,,,L,.L,,,,,,,,,,,.,,L,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDDDDL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhchhhhhhhhhh$hhhhhhhhdhdhhhhhhghhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhchhhhC$Y¹hhhchhhhhhhhhhhhhghhhhhhhhhd>hhhhhchhhC$xhhhhhhhhhhhd@hhhhhhhhhhhhX,WhhhhhhÁhhhhhhÁhÁÁhhhhhhhhhhÁhÁhhhhÁhhÁhhhhhhÁhhhhhÁhhÁhhhhÁhhÁhhÁhhÁhÁhÁhhhÁhhhhhhÁhÁhhÁhhÁÁhhhÁhhÁhhhhhhÁhhhÁhÁÁhÁhÁhÁhhÁhÁÁhÁhÁhÁhhhÁhhhh•Á¹•Áh¹••c0      0ÔÚúúúúúúúúúúúúúúúúúüþ÷óúóó÷úó÷óóúòÕq !        !     ! ! ! ! !         l¬òúúüúûüúýúüüýþÿüüýüüúýúýüûüüûüüúèÓ`,,,,,,,,,,,L,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,,,,.,,,,,,,,,,,L,,,,,.L,LLLLL,L.LLLLLLLL.L.,,L,LLLLLLLLLL,LLL.L,,L,,,LLL,,LLL,L,,,,,,,,,LLL,,L,.LL,,.,L,,L,,,,,,,,,,.,,.,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhchhhhfhhhh•¹C$$>gdhhhhdhhghhhhdhhhdhhhhhhchchhhhghhhchchhhhhhhhchchghhhhhchghhhhhhhhhhg„$8hfhhhhhhhchhhhhhhhhdhhhghhhhg„$hhhhhhhghY$[dhchhhhhchdh>$hhhhgfhdhhhhX,,,,,,c¹Á„¾hhhÁhhÁhhhÁhÁhÁhÁhÁhhhhhÁhhÁhhhÁhhÁÁhhhhhhhÁhhhÁhhÁhhÁhhÁhÁhhhhÁÁhÁhhhhÁhhhhhhhÁhhÁhhÁhÁhhhhhÁhhhÁhhÁhhhÁhÁhhhhÁhÁÁhhhhhhhhhhÁhhhhhhhh•¹•ÁhÁ•ÁÁ•¹hhM    , ×õúúúúúúúúúúúúúúúúúÿüúóóúóóúóúóúóç¬l     !   !  =s’æúüýúüüúüúüýúüþýýúúýúýúúüúüúüüúüõàžP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,.,,,,,,,,,,,,,,,,,,,,.,.,L.,,,,L,,L,L,LL,LLLLLL,LLL,L,.LL,LL,LLLLLLLL.LLL,.LL,L,,L,L,L,,LLL,L,.,.,,L,,,,LL,,,L,,,,,,,,,.,L,,,.,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DIDDDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhgghghhhhchhhhhhhchhhghhhhhhhhghhhchhhhchhdhhchhhchhhhhhhhhhdhchhhghhhhchhghhgghhhghdhhhhhhhchhhchhhhhhhhhhhhhhhdhh>$$hdhhhhchgYchdhhhchhhhgh>hhhhhghgdhhhW,,,,McÁ•h¹•hÁhhhÁhÁhhÁhhhhhÁhÁÁhÁhhÁhÁhÁhhhhhhhhÁhÁhhhÁhhhhhhÁhÁhhhhÁhhhhhhÁhÁhhhÁhhhÁhhÁhÁhÁhÁhÁhhhÁhÁhhÁhÁhÁhhhÁhhhhÁhhhÁhÁhÁhÁÁhhhhÁÁhhhÁhhh¹ÁhÁhÁhhhhhhÁc^Óàúúúúúúúúúúúúúúúúúüþóóúóóúóó÷÷óó÷à’s=     !   !!     ! !     !!!oÕúúúúüúûüúýúúüþÿüüüýúýúýüûüúýúûüúë×/,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,,,,,,,,,.,,,,,,,,L,L,LL,,LLLLLLNLLL,L,,L,L,LL,,L.L.LL.L,.LL,LL,.,,L,L,,,,L,LL,,L,.,.,,,,,,,,,,,,,,,,,,,,,,,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,D,DD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhdhdhhhh_$Zhhhhghhhhhhhhhhhhhhhdhhchhhchhhhhghhhhhhhhhhhhhhhhchhhhhhdhhdhhhhdhdhdhghdhdhhhhhhhhhchhhhhhhhhhhhhhdhhhhh>hhghhhhhhC$[hhhhhhchhhdd@hdhhhhdhghhhX,,,,Whhh•hhÁhÁhhhÁhÁhÁhhhhhhÁhhhÁhhÁhhÁhÁhÁhÁhhhhhhÁhÁhÁhhhÁhÁÁhÁÁhhhÁhÁhhhhhhhÁhhhÁhhÁhhhhÁhhhhhhhhÁhhhÁhhhhhhhÁhhhhhÁÁhhÁhÁhhhhÁhÁhÁhhhhhÁÁ••hÁhÁhÁhhh•¹•¹cM -×õúúúúúúúúúúúúúúúúüþüóóú÷óóúóúóúóòÓp$   ! !   !         !jŽšéúüüüúüüúüúüüýþýúüûúýúúüúüúýüüüú÷àÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,.,,,,.,L,.,,,N,L,NL.,L.L,L,LL,,.,L,,.LL,,LL,L.L.LL.,,,,,LLL,,LL,.,,,,,,,,.,,L,.,,,,,.,.,,,,,,,,,,,.,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhfghhdhhh8chdhhdhdhhhdhdhchchhhhhhhhhch_B_B__hhhchchBBB_hh[B$j@hhhhghgh[CYB_chhhghdZBY_hhhh[c_c‚hhchhc_c[hhhhhhhdghh>@hhhhdhhdhB_hhchhhhhhghh>$hhhhhdhhdhhdX,,,,,,chhÁhhhhÁhÁhhhÁhhÁhÁhÁÁhhÁhÁhhÁhhhÁhhÁhhhhhhÁhÁhhÁhÁhhÁhhhÁhhhÁhÁhÁhÁhÁhhhÁhhhhÁhÁhÁhhhhhhhhhhhhhhhhÁÁhÁhhhÁhhhhhhhhhhÁÁhÁhhÁhhÁhhhÁhh¹•Á¹ÁhhhÁhÁhÁhÁ¹••Á•^,,, ,,,`Óàúúúúúúúúúúúúúúúúúüÿúóóóúóó÷ó÷óó÷èšm     !!!   !   !    ! =Ž’æúúúúúüúûüúýúýýÿüüüüüúýüûüûýúûúýúëÙ“-,,,,,,,,,,,,,,,,,,,.,,,,,.,.,,,,,,,,,,,.,.,,,,,,.,,,,,,,,L,,LLLLL,,L,,,L,,,LL,.,,,LLL,,LL,,,.L.L.L,,,LLLL,LL,,LL,,,,L,L,,,,,,,,,,,,,,L,,,,,,,,,,,,,L,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DD,,,,,,,,,,,,,,,,,,,,,,,,,,,Thhhhghdhghhdg$>hhhhhhhghghhhhhhhhhghhchhh‚@$Bhhhhh@‚@hhchch@>hchh_Bhhhh_$_hhhcchdhhghhhhh@>hdhhhhhghZchhhhhhchhdhh>hchhghhghhghX,,MdhhhÁhÁÁhÁhhÁhhhÁhhhhÁhhÁhÁhhÁhhhhhhÁhÁhhÁhÁhÁhhÁÁhÁhÁÁhÁhhÁhhÁhhhhÁhÁhÁhhÁÁhhhhÁhhhhhhhhhÁhÁhÁhhÁhhhhÁhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁ•ÁÁ•ÁhhÁhhÁhhhh•ÁhhÁhg0,0Úõúúúúúúúúúúúúúúúúúüüú÷÷óóúóúó÷úó÷â’}?   !   !   ! !=q‘Úúúýúüýúüüúüúüýþýýúüûúüúüüúüúüüüü÷àÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,.,,,L,L,L,,LL,,NL,,.,L,,L,L,,,.L.,,,,.L,,,.,LL,,,,.,L,L,,L,,L,,,,,,,,,.,,,,,.,,,,,,,,,.,,,,,,,,,,,,L,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Xhhhhhhhhdhhh[Chhhhhchhdhdhgdhdhghdhhhhd_$$>fhch>@@hhhhhd@chdhcCghchh>$>hdh>_hhghhdhhgdh>>hhdhchhhc_hhhgdhdhhhdhT,,,, ,bhhh¹•ÁhÁhÁhhhhhÁhhÁhÁhÁhhhhhhhhhÁhÁhhhhÁhhÁhhhhhhÁhhÁhÁhÁhhhhhhÁhÁhhhÁhhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhhhhÁhhÁhÁhhhÁhÁÁhhÁhhÁÁhhhhhÁhÁhhhhhÁÁhhhÁhÁhÁhhhhhÁhÁhhhhÁhhhhW ,,, ^Óàúúúúúúúúúúúúúúúúúüÿüóóúóó÷ó÷ó÷óóòÙ’q= !       !   !!        !   ! !  o¬òúüúúûúüúúýúýüþþüúüûüüûüúýüúýúûüúëÙ“0,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,.,,.,,,,LLL,LL.,LLLL,,L,.L,LLLL,L,,,,.,L,L,,,L,,L.,,.,.,L,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,.,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD,,,,D,,,,,,,,,,,,,,,,,,,,,,,,WhghdghdggdghY_hhchdhhghdghdhgghdhhhhch_>___C$>ghh$$hchch__c_>[hhgh_BhhhhdhCgC>dhhdhhgdhdhf>>chghhhchhCchhghdhdghghX,c¹••hhhhhÁhÁÁhhÁhhhÁhÁhhÁhhÁhÁhhhhhÁhhhhhÁÁhÁhÁhÁhhhhhhhhhhÁÁhÁhhÁhÁÁhhhÁhhÁhÁhÁhhÁhÁhhÁÁhÁhÁÁhhÁhÁhhhÁhhhÁhhhhhÁhhÁhÁhhÁhhÁhhhhhhh•hhhhhÁhÁ„¾hhhhhùhhhÁh•¹e ,  ,0žÙõúúúúúúúúúúúúúúúúúüüú÷óóúóúóúó÷úúòÓ p=!     !!  !jšéúüúúüúüúúýúúúýÿýúýúüúüüúýúûüüüüü÷àÊ\,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,.,,,,,,,,,,,,.,,,,,,.,..,LLLLLL,,LLL,,LL,,.,L,,,,,,,,L,L,L,,,,,L,,,,,,,,,,,,,,.,,,,,,,,,.,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD²IIID,,,D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XddghdhghdhhhB$[hhhghghdhghghgdhdhghchhd_hdhghhCCgdChhhhdhghhB_hhdhchhchd$Zhggdhd[_hhhchgddhghhg>@hhdhhchhhBhhchdhhhgdhcX,Mhh•ÁhhhhhhhhÁhhhhhhÁhhÁhhhÁhhhÁhÁhhhhhhhÁhÁÁhÁhhhhhhhÁhhhÁÁhÁhÁhhhhhhhhhhÁhhhhÁhÁhhhhÁhhhhÁÁhhhhhhÁhhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁÁhhhh¹•Áh¹•hhhhhÁ¹•hÁhhhh•Áhh¹Á„hM `Óæ÷úúúúúúúúúúúúúúú÷üþüóúóó÷ó÷ó÷óúóóè¬q=! !!  !    !    !    !   !  ! ?¥æúúúýúúüúüüúüüýÿýúüüüûüúýúüüüúýúúúëÙ“M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,.,.,,,,,,L,L.LL,,,,.,L,.,,L,,L.,,L,L,L,.,,,,.,.,,,,,,,,,,,,.,,.,,,,,.,,,,,,.,,,L,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DIID,,D,,,,,,²D,,,,,,,,,,,,,,,,,,,,,,,,,,,XhhdghddghdgfZ[hchdhdghhdgdhdhghchghhh__chdhdggh>hh_ghdhghdhch>Zhdhdhhdhhh_Bhhdhdhh>[hchhdhghhdhdh>>dghchhhhhY__c__c__c__c_>chhgghghdhhhX,XhhhhÁ•¹ÁhhhhhÁhhhÁhÁhÁhhhhhhhhhhhÁhÁÁhhhhhhhÁhÁhÁhÁhÁhhÁhhhhhhÁhÁhhhhhhhÁhhÁhhhhhhÁhhhhhhhhhÁhÁhhhhhÁhhÁhÁhhÁhhÁhÁhhhhÁhÁhhhhù•ÁhhhÁ•¹Áhhhh•ÁhhhÁhÁÁ¹•ÁhhhX,  0ÇÙõúúúúúúúúúúùúúú÷úúüþüóóúóúóúúó÷ó÷ó⚎o   !  !       ?Ž¢äúúúúúúüûúúúüúüýþüýúýúüúýúýüûúýúüý÷æÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,LL.,,L,,,.,,,,L,.L,,,,,L,L,,,.,,L,,.,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DDDDDDDDD,,DD,DD,,,,,,,,,,,,,,,,,,Xedhdhhhghgdh_Zhhhghhdhghhdhghdhhgdhch>dhhhhhdhgc_dCghggdhdhghh]>_hhghchggccCghghghch>hfhghghdhchhhd>jhdhhhchchC_hhhdhhdhhghh>hhchdhchghdgW  cÁhhhh¹••Áh•¹Á•ÁhhhÁhÁhhhhÁÁhhhÁhhÁhhÁhhhÁhhhhhÁhhhhhÁhÁhÁhÁhhhÁhhhhÁhhÁÁhhÁhÁhÁhÁhÁhhhhÁhhhhhÁhhÁhhhhhhÁhhhhÁhhÁÁhÁhhhhÁhhhhhhhÁ•hhhhhÁÁhh¹ÁhÁhhÁhhÁ¹•hÁ¹•hc0      aÓæ÷úúúúúúúúúúúú÷ú÷÷úþüúóó÷óóóóóóúó÷óàšŽl !       !    ! !   !      !  !  !>}¢ä÷úúúýúýúúüúýúüýÿýüúüúýúýúýúûüüúýúúëÙ–0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.L,L,,.,,,L,L,.,L.,,.,,,L,,.,,.,,.,,,,,,,,,,,,L,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD²IDDIID,,DDD,DDD,D,,,,,,,,,,,,,,,,,,,,,,Xhgghgdgdhdhh_>hdgdgdghdhghchdhchdhhhhBhchgdghdhh>Bh_hdhdhghchchc>>[dhhdhh_Bhchdhdhh_cgghdgdgghhchdhj>ghchghhhc_chdghchghdhdf>chhghdhhdghdX,ThÁ•¹•hhhhÁ•ÁhhÁÁhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhÁÁhhhÁhhhÁhhhhÁhhhhhÁhÁhhhhhhhhhhhhÁhhhhÁhhhhÁhÁhÁhhhhhhhhhhÁhhhhhhÁh•¹•¹h•¹ÁÁhÁ¹hh•¹•¹Á••ÁhhÁh•¹h••¹hÁ•h•¹hX    0Ç×õúúúúúúúúúúúúú÷úúúúþüúóúóú÷÷ú÷óúó÷òÙ¥Žl     !     ?s’Õúúúúúúúúúüûúúúýþýýúýúýúýúýúüüûúýúý÷àÊ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,L,,,L,L,,,,,,,,LL,,,,,,,.,,,.,,,,.,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DII²I²IIDDDDDDDDDDDID,,,,,,,,,,,,,,,,,,,Xdgdhdhhchhghdchdhhhdhghdhchghhhghccc_chghghghgh>Cg>hghghgdhhhhhh__hghc_Zhhhghghcc>>hhdhghhdhdhhhgh>>fdhghcchgY_hghdhghdhdhg>hhchdhgghdhgX,Xhhhh•¹•hhhhhhhÁhÁhhhhhhÁhÁÁhhhhhhhhÁhhhhÁhhÁhÁhhhhÁhhhhhhhhhhhÁhhhÁÁÁhhhÁhhhhÁÁhhhÁÁhÁhhhhhhÁhhhhhhhhhÁÁhhhhhÁÁhhhhÁhhhh•Áhh•h¹ÂhÁ•¹•h•h•¹¹Áhhhhh•hhÁ•hÁhhh•c               ^Óà÷úúúúúúúúúù÷÷ú÷÷÷úüþüóó÷óóó÷ó÷ó÷óúóÙ¥Ž?!!  !  !!    ! !    ! !  !!      ! =q’Óõúúúúüúúûüúúüúýþþüúüúýúüúýúýúûüüúý÷ëד0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,LL,,,L,L,.L,.,,,,,,.,,,,,,,,,,,.,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DI²I²I²I²I²²I²ID²I²DD²DIDDID,,,,,,,,,,,,,,,,XghcdhchdhgdhgC>ghgdghhdghchdcgdgdhhh_Bhdhdhchcdf>Bh>hdhdhdhchchchhc>cdhh_BchchchchC[hdhddghgghchdd>>ghhdhhhchC_dhchhcggghdh>chhchdhdhdhdX 0cÁhhh•f¹hùhÁhhhÁhhÁÁÁhÁhhhÁhÁhhÁhhhhhÁhÁhhhhÁhÁhhhhÁhÁÁhÁhhÁÁhhhhhhhÁhhhhhÁhhÁhÁhhhhhÁhhÁhhÁÁhhhÁhhhhÁÁhÁhhÁhÁhÁhhh•¹hÁ•¹hh¹h••¹•¹hhhhÁ¹Á„•hhÁhÁhÁhÁhhhÁhh•¹„M        –Óèúúúúùúúúú÷úú÷úúú÷úüþúúóú÷úóúó÷úó÷÷òÙ’s?  !!    ?s¬òúúúúúûúüúúüúúüýÿýúýúýúýúýúýúüüûúüüõÙU,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,L,,,,,,,,L,.,L,,,,,.,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,I²I²I´²²I´I²²I²²DI²I²I²²IDDDDII,,,,,,,,,,,,,,,,,,,,,,,,Xhchhchchdhghhc_hdhdhchdhhchgchhdhcccCghgghchhhc_c>fhcchhghhhghdhhfh_Chgd[Chghcchh[hchcchhdhdhghh>>hcdhdcchc__hhhchdhdhghd>hhccchgdhgghX WhhhhhhÁh•hh•hhhhhhÁhhhÁhhhhhhhÁhhhÁhhhhÁhhhÁhhhhÁhhhhhÁhhhhhÁÁhhhhhhÁhhhhhhhhhhhhhÁhÁhhhhhhhhhhhhÁhhÁhÁhhhhhhhhhhÁh¹ÁÁ¹••hhh•hh¾•h•Áhhh••h¹¹•hÁhhhÁhhhhhhhÁh•c           VÓÙõúúúúúúú÷ú÷÷ú÷÷÷ú÷úýüúóóóóó÷óúó÷óóúòÙ’}?     !  ! !!!   !   !       !  ! !   ?Ž¢¬òúúúúúýúúúúûúüüýÿüúýúýúýúýúûüüúûüüû÷æÓe-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,L.,L,,,,,.,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,I²I²²²²I²²²´I²²²I²III²I²²²I²I²D,,,,,,,,,,,,,,,,,,,,,,,,XcdhcghdghdhchhY[hghdhhghchhdhchcghhhhhdhdhhchZ_h>hdhhcgchchdhgghghghh>dhh_Bhchchhc>>>hhchcdhgghdfdj>chghchhchB_cgdhghchchdhjchhhhchcdhdeX, XhhhÁhÁhhÁhhhh•¹hhÁhhhÁhÁhhhhÁhhÁhhÁhhhhhhhhhhhhhhÁhhhhhÁhÁhhhhhÁhÁhhhhÁhhhhÁhhÁhhhhÁhÁhhhhhhhhhhÁÁhhhhhhhhÁhhhhÁ¹••Áhhh•h¹hhÁh¹hhÁhÁh•Á¹hh•h•hhÁ•¹hÁh•¹hhhhÁhÁ¹cM    fÓæõúúúúú÷ú÷úú÷úúú÷ú÷üþüúúóúóúóóúóúóó÷òÙ¥o!        ! !      ?Ž’ÕéúúúúúúúüúúüúúúýþýûüúýúüúûúüüüûüüúüüèÙ–M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,,,,L,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DII²IDI²²I²²I²²²²²²²²²²²²²²²²²²²I²²I´IIDD,D,,,,,,,,,,,,,,,,Xhchchchdhgghchc_chchchchchch[>chdchBjgdcchccc>hd>fchchccchhhchBhcgchcChgd[_chchchB>h[hchchchchggh>jhchchgchcCj_hchcchchhdhg>hhchchccchdhXMchhÁh¹•hhhhhhhhh••¹•hhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhhÁhhhhhhhhhhhÁhhhÁhhhhÁhhhhhhhhhÁhhÁhhÁhhÁhhÁhhhhhÁhhÁhÁ•hhhh¹•h¹ÂhÁ¾hh„Á¹•hhhh•h¹•¹•hhhh•hhhh••¹•hhh•X             0ÇÙòúúúú÷ú÷ú÷÷ú÷÷÷÷÷÷÷üþüóóóúóó÷ó÷óúó÷óòäšm  !          !!                ?}¢ÕòúúúúûúûúúúúúúûýþþüüúýúýúýüüúýúüüúüúõàÇ\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,.,,.L,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DII²²I²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²I²DDD,,,,,,,,,,,,,,,,,,,,,,,Xchchcchghcccghc‚>[chhchhch_C[hhc‚jcchcc_[eh>chchcchccchhB>[hchcj>chh_>Bhchch_cc_chchcchchdgf>>chchhdhgh_[hcchchdgghdhjhchchcchchcdXX•¹Á••¹h•¹hhhhh•¹•¹hhhhhÁÁhhhhhhhhhhÁhhhhhhhÁhhhhÁhhhÁhhÁhhÁhÁhhhÁhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhÁhÁhhhÁhhhhhhhhÁh•¹hhh••¹•¹„h•¹•¹Á•h•¹hh•¹hÁh•¹hhhhhhhhhÁ•hhhh•¹hh    \ÓÚõúú÷ú÷ú÷úú÷úú÷ú÷ú÷úüþüú÷óóúóúóóó÷úóúòäšp=   !    ! js’ÚõúúúúúúúúúúûúüúüýÿüýúüúýúýúýúýúüûúüýúèÙ‚-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD²²I²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²I²²²IID²I²²ID,,L,,,,,,,,,,,,,Xhchchdhchccdhdccc>>[__[C>>chch_>>>jhhdjcchcchchchc>>>ChchZjZfhchc>__ccC>hccchchcchcjhchcchchcZ‚cchchchdhdhg>jchchcchchchcX  , 0bÁh•¹•¹••hÁ•¹•¹•hÁhÁ•hÁhhhhhÁhhhhhhhhhhÁhhÁhhÁhÁhhhÁhhÁhhhÁhhhhhhhhhÁhhhhÁhhhhÁhhhÁhhhhhÁhhhhhhÁhhhhhÁhÁhÁhhÁhhhhÁ•hh¹•hÁhÁ¾¹•Á•¹•hÁ•hÁh•hh¹•hÁ•¹•hhÁhhhhhhh¹•h•hW       ”Ùè÷úú÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷úüþüóóúóó÷óú÷ó÷÷óóóàªq?  ! ! !    !       !       !! ! $o}‘ÙúúúúúúúúúúûúúüúýþÿüúúýúýúüúýúýúýúüüûúõÚM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,²I²DD²I²²²I²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²I²²I²IDD,,,,,,,,,,,,,,,,,,,Wchchghchccchchhhhcj>ccchch_Cchch>chhhhccchch_jccch_Ychchj>chchcj_hchchcdhhcj>dhhchchhc__chchghdhghcf>jhchchhccchchX,MhhÁ•¹hÁhh•¹••Áhh•¹ÁhhhhhÁhhhhhhhhÁhhÁhhhhhhhhÁhhhÁhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhÁhÁhÁhhhhhÁhhhhhhhhhhhhhhhh•Áhhh•¹Á„h•¹Á•hhhÁhhhhh•Áh•¹Áhhh•¹Á•¹•¹•hhhhhc      MÇÙõ÷÷ú÷ú÷úú÷ú÷ú÷ú÷ú÷÷úüüüóóúóúóóúóúóú÷óó謒}l! !      !!>qšäúúúúúúúúúúúúúúúüýþüýúýúýúüûüúûúýúýúüü÷æÊ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD²D²²I²²²²²²²²²²²²²²²´²²´²²²²´²²´²²²²²²²²²²²²I²²²²I²²²²,,,,,,,,,,,,,,,,,,,,Xccchcchchchcchchccc_jjj_chdhchch[jjj_hchchjhcdccccdchcc‚>jj>cchcc_j_ccc_j_cccch_jchchchcchcjhfchchchcBk_hchgchghchhcjhcchcccccchcW,Xhhhhh•¹•hh¹•hhhhhhh•hÁhhhhhÁhÁhÁhÁhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhÁhhhÁhhhhÁhÁhÁhhÁhhhhhhhhÁhhÁhÁhÁhhhhhÁÁhhhhhhhhÁhh¹•hh¹•ÁhÁhÁ•Á¹•hhhhhhhh¹•h¹•hhh•¹•Áhhh•hÁhÁ•Á¹ÁhhhhM         aÓàõú÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷ú÷úýüüóó÷óó÷ó÷óó÷ó÷ó÷èÓ¢Ÿp=  !  ! ! !! !     !  !! !o¬æúúúúúúúúúúúúúúúûýÿýúüüúýúýúüúýüüúüúýú÷ëד0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D²I²IDD´I²²²²²²²²²²²²²´²²´²´²´²´²´²²´²´²²´²²²²²²²²²²²²²²I²²I,,,,,,,,,,,,,Xhchhchccchcchchhhhchc_jjjC[hchhchchchchcx>_C_[hhchchcB_C_ccchcchccchccc‚_>jZC_hchccccj>>_chhB_C_Cdchgcch_C_>_hcchchcchj_C_chcchcdhc__YCcchchchdhdhcc_>_CcchcchchccccX  chhhÁÁ•¹•hhhhhhÁhhhÁhhhhhhhhhÁhhhhhÁhhÁhhhÁhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhÁhhÁhhhÁhhhhÁhhhhÁhhhÁhhhhhhhhhhhhhhh•¹•hhh•hhhÁhh•¹Á•hhh¹h•¹•hh•hhhÁh•hÁhhhhhhhhhÁ•hhhÁhX      0“Óè÷ú÷ú÷ú÷÷ú÷ú÷ú÷ú÷÷÷÷úþüúúóúóúóúóúóúóúóóòàªq=      !  !=p’ÚòúúúúúúúúúúúúúûúüüÿýüüûúýúýúýúüüûúüýúýûñÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD²IID²²²²²²²²²²²²²²´²´²´²´´²´²´²´´²²´²´²´²´²²´²²²²²²²²²²²²²²L,,,,,,,,,,,,,,Xchchccchcccccchccchcccccc‚__chcchcccchchchchchchchchcghcccccchcgcdcchccgcccdchchchgcccccgccchcdcchchgcggcccccchgchccccccchcccccchccgchcchchchchchchchchchchcchcgcchcccchccX      M„¹•hhhÁ¹•h¹•hhhh¹•ÁhhhhhÁhhh¹•hhÁhhÁhhhÁhÁhhÁhhÁhhÁhhhhÁhhhhÁhhhhÁhhÁhhhhhhhÁhhÁhhhhhhÁhhhhhhÁhÁhhhÁhhhhhÁhhhÁhhhÁ•Áhh¹•hhhhÁhhÁhhhhhÁ¹•¹•hhhhhhÁhhhhhÁhhhhhhhÁ¹•Áhhhc0               MÙè÷ú÷ú÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷úþüúóó÷óó÷ó÷ó÷óóúóóó笒}p= !!!!       !  ! !!   ! !!  ?p’æùúúúúúúúúúúúúúúúúýÿýúúúüüúýúüûüûüüüûúüúõàÇ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DII²I²²²²²²²²²²´²´²´²²´²´²²´´²²´²´´´²²´²´²´²´²²²´²²²²²²²²²²ID,,,,,,,,,,,,ThccchchchchhcccchccchchdcccchchccchccccccchcccccchchhcccchcgcccchchchchhdchchchchccchchcdchcchcchcchcchchchcchcchccchchccccchchccchcccchchcchcccchchccchccccccchchcchhhchcX,      X•ÁhhhhÁh•hhù••Á¹hhÁhÁhh••hhhhhhhhhhhhhÁhÁhhhhhhhhÁhhhÁÁhhhhhhhhhhÁÁhhhhhÁhhhhhÁhÁhhÁhhÁhhhhhhÁhhhÁhhhhhhhhhhhhh•¹•Áhhhhhhh•¹Áh¹h•¹•h••¹Áh•¹hÁhhhÁhÁhhhhhhhh•hhhh•¹hW         VÊÚõ÷ú÷ú÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷üþýúúóúóúóúóúóú÷óúó÷èÙ’sl!      ! !!  !   >qŸÕèúúúúúúúúúúúúúúúúüýþýúýüýüûüúýúüúüûúüüüý÷àÓf0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD²²²²I´²²²²²²´²´²´²´²´´²´´²´²´´´´²´²´´´´²²´²²´´²´²²²²²²²²I´D,,,,,,,XccchcccccccccchhccccccchcchcccccgcccgcchhchccchchcccccchccghcchcccchchccccccccchcccfccchccchcchccccchccccccdccccccchccchchcccgccgcccchccchhccchccchchccchcchcchcccchchchccX     0c¹•hhhhhh¹•Áhhh•¹•hÁ•Áhhhhhh¹•hÁhhhhÁÁhhhhhhhhhhhhÁhhhÁhhhhÁhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhÁhÁhhhÁhÁhhhhhhÁhhhhh¹•h•hhh•¹•h•hhÁh•hhh•Á¹Áhhhhhhh¹•ÁhhhhÁhhh•c                 aÓàõ÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýüúóóúóóó÷ó÷óó÷ó÷óóò謒q?!    !       !!!!        !     =psªàòúúúúúúúúúúúúúúúúûýÿýüüúûúúüúýúýúýúüüúýúúèד0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDDDD²II²²D²´²´²´²´²´²´´²´´´´²´²´´´´²´²´´´´´²²´²´²²´²²²²²²²ID,,,,,,,,,,,,,,,,,XhcccchcchcchccccccchchcchcccchccdcgcdcccchchhcccchchgchcchcccccchccchcchchchcchcdcgdgchcchcchhchchcccccgdcgchchchcccchcchchcchcdcchcccccchchgccchcccccchcchccccchcchcchcccX          ThÁ¹•hhh•hhhÁh•hhhÁhÁhhhhhÁ•ÁhhÁhÁhhhhhÁhhhhÁhhhhhhhhhhhhhhhhÁhhÁhhhhÁhÁhÁhÁÁhÁhhhÁhÁhhÁhhhhhhÁhhhhhhÁhhhhÁhhhÁhÁhh•¹•¹hùÁ•hÁhhhÁ¾hhhhhhhÁhhh•¹ÁhÁhhh•¹Á•ÁhhÁ¹hhhhhhhhhM             “׿÷÷ú÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷üýþü÷ó÷úóúóúóúóúóúúóóòæªso=!        !js’ÙéúúúúúúúúúúúúúúúúúúýÿüüýúüüüýúýúýúýúüýúýúúôÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,DIDD²²DD²I²DD´²´²´´´´´´²´´²´²´´´²´²´´´´´²´²´´´´²²´²²´²²²²²²²²DD,,,D,,,,,,XcchccccccccccchcchccccchccchccchccdcchcccccchcchcchchccchcccdgcdcchcccccccccchccccccchccccdcccccccchcdcccgccccccccchccchcccccccdcgccchchcccchcchcchchchcchccchcccchccccchcX   Xhh¹•ÁÁ¹•hhhhhhhhhhÁhhhÁhhhhhhÁhhhhhhhhÁhÁhhhhhÁhhÁhhÁhhhÁhÁhhhhhhhÁhhhhhÁhhhhhhÁhhhhÁhÁhhhhhhÁhhhhÁhhÁhÁhhhhhhhhhh¹•Á•hÁ•¹Á¹hÁhhhhÁÁÁhhhhhhhh¹•h•Áhh•Áhh•hhÁh••¹•¹•Áhhc                 0žÙè÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüóóó÷óóó÷ó÷ó÷óó÷ó÷óèÕ’}sp? !      !    ! !! !!  ! !! !      !! !?pŽÕæúúúúúúúúúúúúúúúúúúýþÿüüúúýúýúûüúýúýúýúúýúýõàÇ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DI²I²²,DDDDD´´´´´´²´²´´´²´´´´´²´´´²´²´²´´´´²´²´´²´´²´²´²²²²²²²D,,,,,,,XccchccgcdechcccccccchccchccchcccgccgccchccccccccccchccdcchcdcccgccchcchcchcchccgcgdcccchcchchccchccccgcdcchcchcchccchcccccgdcgcdccchccchcdccchccccchcccccchccccgccccchccccX      0cÁ••¹•¹•hhÁ•¹•Á¹hÁhhhhhhÁ¾hhÁhÁhhÁhhÁhhÁhhhÁhhhhhÁhhhhhhhhhÁhhhhhhhÁhhÁhhhhhhhÁhhÁhÁhhhhhhhÁhÁhhÁhhhhhhÁhhhÁhhhÁ•¹•hÁhhhhh••ÁhhhÁhhhh•¹hhÁhhhÁ•hÁhhhhhhÁhhh¹Á•¹ÁhhÁhÁhhhg0                  VÇÚôú÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüóúóúóúóúóúó÷úó÷óóóò⬒Žp?   ! !!  ! !   $jެæòú÷úúúúúúúúúúúúúúúúúýÿüýúýüúýúüüûüúýúýúýüûú÷àÓf-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,DDD,DDDDDD´²´²´´²´´´´´´´´´´´´´´´´´´²´´²´´´²´´²´²´²´²²²²²IDD,,,,,,,,,XcchcccdcdcdccchchcchcccccccgccchccdccdchhchcchccchhcccgccccgcdcccdcccccccccccchccccdcgcccccccchcccchcccgcdccccccccchccchccdcccdcgcdccchcccgcdcccchhccchcccccchcdcchccccchcX     Xhhhhh•h•hhhh¹•Á•hhÁhhhhÁ„¹•ÁhhÁhhÁhhÁhhÁhhhhhhhhhhhhÁhhÁÁhÁhhhhÁhhÁhhhhhhhhhhhhhhhÁhhÁhÁhhhhhhhÁhhhhhhÁhhhÁhhhÁh•¹•hÁhhhhhhhhÁhhhhÁhhh•hhhh¹•hÁhhhÁhhhhÁhhhÁ•hÁÁÁhhÁhhÁhhX                        aÓÚò÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþü÷óóúóó÷ó÷óúóóú÷úóúóòçÕšŽo?!  ! !     !   ! !!  !=pq’¬æéú÷úú÷úúúúúúúúúúúúúúýÿýýúúýúûüúýúûüüúúýúüúûü÷æÓ“0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,²DD²,DDDD,D,DI²´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´²´´´²²´²²´²²²²²DD,,,,,,,,, XccccdcgcgcchcccchccchchccdcchcccccgcgcchccccchhchcccgcccgdcccgcdcgcchchcchchcccdcgcgcdcchcchcccchcccgcdcccchcchchccccccchcchccgcccchccchcdccchhchcchcccccchcccdcccccchccccX       chh•¹•¹hhhhh•¹•hÁ¹hhhÁhh¹Á•¹hhhhhhhhhhhhhÁhhÁhhhhÁhhhhhhhÁhÁhhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhÁhhhhhhÁhhÁhhhhhhÁhÁhhhh•hhhhhhhhÁhhhÁhhhhhhhhh•¹••hhhÁhhhh•¹•Á¹hÁhhh•¹hhhhhhhhÁhhh                   fÓàõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþþúóóúóúóúóóú÷óóóúó÷ó÷òèÕ’Žso>   !! !   !!    !=lqsŸÕæòúú÷ú÷÷úúúúúúúúúúúúúúýþýüýúýúüüúýúüüüûüýúýúüü÷è×M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,DD,D,,DD´´´´´´´²´´´´´´´´´´´´´´´´´´´´´´´´²´´´´²´²´²²´²²²²²²²IDDD,,,,,,,XcchccgccccdccchccccccccccgccccchcccdccccccgcccccccccdcdcccgcdcdcgccccccccccccchcccdccdcgcccccchcccchccgcchcccccccchcchccccccccccddccccgccgcdcccccccccchcchccchccdgcchccchcX         MchhhhÁÁh¹•¹Á•hhh•Á•¹•hh¹•Áh•¹•ÁhhÁhhÁhhhhhhhhhÁÁhÁhhhÁhhÁhhÁhhhhhhÁhhhhÁÁhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhÁhhhhhhhÁhhh¹•¹ÂhhhÁhhhhhhhhhhhhh•ÁhhhhhÁh¹Á•hh••hÁhhhh•ÁhhÁhhÁhhhhW                     0‚Óàõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýþüóó÷óóó÷úóóúóúóóóúóúóòèÙ¬’sp?=!    !      ! ! !   !!    CpsšÕæò÷ú÷÷ú÷úú÷÷úúúùúúúúúúúþÿýýüúüúýúûüúýúûüüúüúûüû÷èØM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,D,D,,D²´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´´´´´²´²´²²²²²²²I²²II,,,,,XcccdccdcgcchccccchcchcccdccchcccddcchcgcdcchccchcchccgcgcchcgcgccccchcchccchccccdccgcdccchchcccchcccdccccccchcchcccccccdcgdcgdcgcgfcdccdccgcgccchcchcccccchccccgccccchccccX       XhhhÁ•¹hhh•Á¾hhhhhh•h•¹•¹•hÁ¹hÁ¹•hhhhÁhhhÁhhhhÁhhhÁhhÁÁÁhÁhhhhhhhhhhhhhhhhhhhhÁhhhÁhÁhhhhÁhhhhhhhhhhhhhhhhhhh•¹•¹hh•¹•h•hhhhhhÁ•hhÁh•¹•¹hÁhhhhhhh¹••hhhhhhh•¹ÁhhhhhhÁhhhhhhhhc                     0“×àõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüúúóú÷óóú÷óóóúóú÷óóúóóóèæÕšsspC=  !   ! !>opq’¬æèõ÷ú÷÷ú÷÷ú÷÷úú÷úúúúúúúúúÿþýúüúýúýúüüúýúüüûúýúüüýúèÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDI´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´´´²´²´²´²²´²²²²²²²²I²ID,,,XcchccgcccdcccchcccccccchccdgccchcccdccccgccccchccccccdcccdccccccdccccccccchccchcgccccgcgcccccchcccchccgchcchcccccchchccgcccccdccccgcgccccgccccdgcccccchchccchccccdcccccchcX               XÁhhhÁhÁ•ÁhhÁhh¹•hÁhhhhh•Á¹•h•Á•hhh¹•hhhhhhhhhhhhhÁhhhhhhhhhÁhhhÁhÁhÁhÁhhhÁhhhhÁhhhhÁhhhhÁhhÁhÁÁhhÁhÁhhhhÁhhhh•Á••¹Áh•h¹•¹•hh¹•Áh¹•ÁhÁ•Á•hÁhhhhhÁ•hhhhhÁhh¹•h•Áhhhhhhhh¹•¹•hhhM                  0–׿÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷üþüúóóóúóóó÷úóóúóó÷úó÷úó÷óòèæÓ’ŸŽqpj>=! !  !! !! !     !   =>lpqs  ’¬äèò÷ú÷ú÷÷ú÷÷ú÷úú÷÷úúúúúúúúýþþýúüýüúýúýúûüúýúûüüüüûúúëÙ\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,,,D,´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´²´´´´²´²´²²²²²²²´²I,,,,,XccccccddcgchcccchccchcccgccchccccgcccccccccccccchccgccdcgcdcgcdcgcccchchccccccccccddccdccccccccchccccdccccccccchcccccdccgchccgcdcccccccdccccgcccchchccccchccchcgccccchccccX            Mh•¹hhhÁhhhhhhÁ•hhhÁhhhhh•¹•h•¹•¹h•¹••hh¾hhhÁhÁhhÁhhÁhhhÁhhÁhhÁhÁhhÁhhhhÁhhhÁhhÁhÁhÁhÁhÁhhhhÁhhhÁhhhhhÁhhÁhhhhhhhhhÁÁhh•Á„¾••hhh•hhhÁhhhhhhÁ•¹hhÁhhhhh•¹•hhh•¹•¹h•¹•Á•ÁhhhhX                      0–׿÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýþüúóóúóúóóú÷óóúóó÷óóúó÷úóóòèæÙ¬’ŽŽ}ssp??>===!!!!   !    !!!!!! !! !!!! !!! !!!==?lpwqqŽŽ‘¬Ùæèòõ÷÷÷÷÷÷ú÷÷ú÷÷ú÷÷úú÷÷úúúúúýÿýýüúýúúýúýúüýúýúüüüúýúüúõÙž\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD´´²´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´²´²´²´²²²²²I²´²,,,,,XcchccdcgccccccccccccccchccchccchcccdccccccccccchccccdcccccgccdcgccccccccccccchcchccgcgccdcchcchccccgccgcdcgccccccccccgcdcccccccgcccdcccccccccccgccccccchccccccccdccccccchcX       chhh•ÁhhhÁh¹•hhhhhhhÁhÁhhhh•hhhh•¹•hÁhhÁ„¹•hÁhhÁhhhhhhÁhhhhhÁhÁhhÁhÁhhhhÁhÁhÁhhhhhhhhhhhÁhhhÁhhÁÁhhhÁÁhhhhhÁhh¹•h¹•¹Áh¹•hh¹•h¹„Áhh¹•ÁhhÁhhhhhhhh••hÁhÁhh¹••¹•hhhh•hÁ¹•Áhh¹•¾„¹Âc                      VÚæ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úüþüüóó÷óóúóó÷÷óóúóúó÷úóó÷ó÷óóóòèæÙ¬¥’Ÿ’Ž}sppppppppppps}qqopppppppppppppq}q}}qwsssqs}qppsq}qpqpqppqqqpqq}}}pppppppqqp}}}qppp}qpppqqppqw}ppp}}popp}}pqsqpmp}}}}qpq}qq}}}qppq}}qppqsppppqppqps}}ppqpqwqpqpppppq}qpps}w}qpqppppqs}pmpqq}}qqpppqoopppoppsqq}qpps}}}}qp}qpsq}qpp}qqqppq}qqqqpppqqq}}}qpqqpq}}qppqpppqsqqpppoopqppoppqqpq}qppq}wooppqq}qppoppqpq}}qpppppq}qpp}pqps}}}ppppsqpqqqqpqppqqpqpppppsqqpqqspqw}}ppppqppp}}qqs}ppqpppps}spp}}qppqpppppspq}}}w}}pqq}qpopppppq}}ss}}qqpppswpq}}q}}qqppqqpqpppqqppq}}}pppqqpppq}sppssppnwŽ}}}}qqppppq}pqŽpq}ppmq}qppp}}}}}ppqsq}}qpqwŽ}}qppppppppppppqwqppppppopppppppp}qq}qqws}qqwsppqwq}qqpqppqqqqpqq}Žwopqppppsqp}Ž}qppq}pqppqppqp}sppq}spppq}qqqqppmp}}}}qp}wqq}}qqpp}}}sqs}ŽsŽ’¬Õææéò÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷úú÷÷úúúúúúÿþüüúúýúýûüúûüúúýúüûüúýúý÷õÚÇ^,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,D²D´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´²´´´´´²²´²²²²²²²I²IID,,,,XcccccgcccccccchccccccccchcccdcccccccccccchccccccccccgccccccdcgccdccccccchccccccccdcccdccgccccccccdccccccccccccecccccccgcchcdgccccccccccccdcccccdcccchcccccchcdccccccccccccX         0chhhÁhhhhÁ•hhhhhÁhhhhhhÁhhhhhhh•¹•hhhh•Á¹•hhhhhÁhÁhhhhhhhÁhhhhÁhhhhhhÁhhÁhhÁhhÁhhhÁhhhÁhhÁhhÁhhhhÁhÁhhhhhhÁhh••hh•h•hh••¹h•hhÁ•¹hÁ•hÁhhhhùhhhhhÁ¹hhhhhÁ•hhhh•¹•¹•¹hh•hÁhh•h•¹hhhW                 \×èõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýþüúóú÷óóúóúóúóóóúó÷óúóúóú÷÷óóóòñéèææÙÕ¬ª¥’’ŸŸŸ ŸŸŸŸŸ ŸŸŸ Ÿ   Ÿ Ÿ  Ÿ Ÿ Ÿ Ÿ      ŸŸŸ Ÿ      ŸŸŸ   Ÿ  Ÿ  ŸŸŸ ŸŸŸŸŸŸ  Ÿ  ŸŸ        ŸŸ        Ÿ  Ÿ    ŸŸ Ÿ Ÿ Ÿ  ŸŸŸ  Ÿ ŸŸŸ   Ÿ    Ÿ  Ÿ ŸŸŸ  Ÿ   Ÿ Ÿ        Ÿ    Ÿ   ŸŸ ŸŸŸŸŸ Ÿ  Ÿ    ŸŸŸ ¢ŸŸ   Ÿ  Ÿ   ŸŸŸ  Ÿ Ÿ      ŸŸ         Ÿ ŸŸŸŸ     Ÿ Ÿ Ÿ  Ÿ   Ÿ ŸŸ   ¢    ŸŸ ŸŸŸ Ÿ       Ÿ  Ÿ       ŸŸ Ÿ Ÿ       ŸŸ  ŸŸŸ ’      Ÿ  Ÿ¢Ÿ  ŸŸŸŸŸ     Ÿ   Ÿ  ’  ŸŸŸŸŸŸ   Ÿ ŸŸŸŸŸŸŸŸŸ       Ÿ      ŸŸ   ¢ ŸŸ ŸŸ’  Ÿ     Ÿ  ŸŸ Ÿ   ŸŸŸŸ ŸŸ        ¢’’¢¥ª¬Õäæèèèò÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷÷úú÷÷úúþþýýúýüýúüúüúüüûýýúýúüûüúýúõÙÊ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,I²´´´´´´´´´´´´´´´´´´´´´´¼´´´´´´´´´´´´´´´´´´´´´²´²´´´²²I²²DD²D,,Xcchccccc cccccX               ThhhÁhhÁhhhÁhhhhhhÁh¹•hhh¹•hh¹•hhhÁÁhhÁhÁ•hhhhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhÁhÁhÁhhhhhhhhhhÁhhhhhhhhÁhÁhhÁh•¹•hhÁhhhÁ•¹•hhÁ•hhhhhhhhhhhhh•Á•Á•hÁhÁhhhhh•¹•hc                V׿õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷üþþüóó÷úóóó÷óóúóó÷óúóó÷ó÷óó÷úúóúóóóóòòòèèèèèèèæææèææææèèèæææææææææèæææèæèèæèèèèèèèèèæèæèèèèèèæèæéæèèèèèèèèæèæææèæèèèéèèèèèæèèèèæéèèèèèèèæéæèéæèèèéèèéèéèééèéèèééèéèééèéèéééèéèéééèéééééééééééééééíéééééééíéíéíéíééééééééííííííííííííííííííííííííííííõíõííííõõõíõíõõíõõíõíõíõõõíõõõõõõõíõíùõõõõõõõõõõõíùõõõíùíõõõõõõùíùíùõùíùõõùõùõõõõõùùõõùíùõùõõùùõùùõùùùùùùùùùõùùõùùùùõùùùõùùùùùùõùùùùõùùùùùùùùùùùùùùùùùùøùùùùùùùùùùùùùùùùùõùùùùõùõùùõùùùùùùõùõùùõùùõùùõùùõùõõùùõõõõõíùíùõõùõõõùõõõõíùíõõõõõõõõõõíõõõõíõíùíõõííùíõíõíõíõííííõííõííííííííííííííííííííííííííííííííííííéííííííííéííííéëéíëééëéíéééííéèíèííëééæéæééæíèëéíèéèëéèíèëèèëèéæéèèíèéæéæèèëèèèèèæèæëææêèææéæèæææææææææææææææææææææææææææææææææææææææææææææææææææææèèèèéèòòòó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷÷úúþÿþýüúýúûüüúýúýúûüúúüúýúüúý÷ëÙÇ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,L,,,´´D´´I´´´´´´´´´´´´´´¼´´¼´´¼´´´´´¼´´´´´´´´´´´´´´´²I²´´´²´´²´´²´IDI²D,,,XccccddcccccccW                XhhhhhhhhhhhÁ•¹Á•¹••¹Á••¹••¹h•¹•¹hhhhhhhhhhÁhhhhhhhhhÁhhhhÁhhhÁhÁhhhÁhhhhÁhÁhhhhÁhhhÁhhhhhhÁhhhhhhhhhhÁhh•¹hhÁhÁhhhÁ•¹ÁhhÁhhh•¹•hhhhhhhÁ¹Á•hÁhh•¹hÁ•¹•¹hhhhhhhhhhhhhhhh•¹Áh•¹„M                       U×àõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷úüÿüüóó÷úóúóúóóúóúó÷÷úóúóúóó÷óóúóú÷úó÷óúóú÷÷óúóúúóúóúó÷úóúóúóúóúóúóúóú÷÷óú÷÷úó÷÷÷÷óú÷úó÷÷÷÷÷ú÷ó÷ó÷÷óó÷÷÷óúóúúúúúú÷úó÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúüüúüúüúúúúüúüüúüüüúüúúúúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüýüýüýýüüýüýýýýýýþýýþþýþþüýþýþþþþýüýþþþýþþýþþþþþþþþþþþþþþþþþÿþþþþþþþþþþþþþþÿþÿþþÿþÿþÿþÿþþþÿþÿþþþÿþÿþþÿþÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿþÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþþþþÿþþþþþÿþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýýýþþþþþþýýýýýýüýüýýüüýüüüüüüüüüüüüüüüüüüüüúüúúúúúúúúúúúüûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúùúú÷÷ùóùúõúõúõõúõóõóõòúòõóõ÷÷÷õúõ÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷úúýÿþýüüûüüüüûúüûúýüüúüüûüúýúýúèÙÇ`-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,²´´´´´´´´´´´´´´¼´´¼´´´´´´´´´´´´I´´´´´´´´´´´´´´´´´´´´´´²´´I²´D²´D,,,,,,,XccccgccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX            0ghÁhhh¹•hhhhhÁh•ÁhÁ¾Áh•¹•¹•ÁhÁh•hhÁh•hÁhhhhh¹•ÁhÁhhhÁhhÁhÁhhhhhhhhhhhhhhhhÁÁhhhÁhÁhhÁhhhÁhhÁhhhhhhhhhÁhhÁhhhhh•¹•hhhhhhh•hhhhh¹ÁÁ¹•¹•hhh•Áh¹Á¹ÂhÁ•¹••ÁhÁ¹•hhÁhhhÁhhhhh¹•Á•Á¹•c               U–×àò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷úýþüüóó÷óóó÷úóóó÷óúóó÷úóó÷óúó÷úóóó÷óúó÷óóóúóúóó÷óúó÷ó÷ó÷ó÷ó÷ó÷ó÷÷óúóóóúóóó÷÷óúóóúóó÷÷óúóóúóó÷ú÷ó÷÷úóóóúó÷úóóó÷óóóúóúóúóúóúóúóúúóúúúúúúúúúúúúúúúúüúúúúúüüüüúüüúúüúüúüüüüüüüúüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüýüýüüüþüýüýüüýüýýýüþüýüþýþýýýüþþþüþþþüþþüÿüÿüÿüþþÿüþþþþÿýþþÿþÿþÿÿþÿþÿþÿþÿýþÿþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿÿÿÿþÿþÿþÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿþÿþÿþÿþþþþÿþþþþþþþÿþþþþþþþþþþþþþþþþýýþþþýþþýýýýýýýýýýýüýýýýýýýýüýüüýýüýýüýüþüýüýüýüüüüüüúýüüüüýüýüýûüýúýüüúýúúüüüúýúúýúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúùúúõ÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷õõ÷óò÷óòõ÷÷÷õóòó÷óõóóõ÷óõóõóõóõóò÷õó÷ò÷÷õó÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷úýÿþýúüúýüüüúüüüûüüúûüüûüüúýúý÷èÚ\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D´´²´´´´´´´´´´´´´´´´²´¼´´´´´´D,´´D,D´´¼´´´´´´´´´´´´´´´´DI²´D,,,,, XcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX                 Xhh•¹••hhÁ•¹hhhhÁ•¹„hh•¹hhhhhh•¹hhhhhhh•¹•ÁhÁhhhÁhhhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁh•¹hh•¹•hhhhÁhhhhhÁ•¹•h•¹Áh•hhÁ•¹•¹h•Á•hhh•¹•h•¹hhh••¹hhhhhhhh•¹•ÁhÁhh•h•¹c0                         M”Óàõ÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷õ÷õ÷÷óõ÷÷÷úüÿüüóúóúóóóú÷úó÷óúóóóúóúó÷óóú÷úó÷óúóúóú÷ó÷óúóúóúóúóúóúóúóúóúóóúóúóú÷÷úóúóú÷ó÷óúóúó÷óóú÷óúóóóúóóóúóú÷÷ó÷óúúóúúóúóúúóúóúóúúúóúúóúóúóúóúúúúúúúúúúúúúúúúúúúüóüúúúüúüúúüúüúüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüüýüüþüüýüþüþüþüüýþüþüþüþüþüþþüþüþüþüÿüþþþüþýþþþþþþþÿþþþþþþþþþüþüþþþþýÿüÿüÿþþþýÿüÿüÿþÿþþÿþÿýÿþÿþÿþÿÿþÿþÿþÿþÿÿÿþÿþÿÿÿÿÿÿþÿþÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþþþÿþþþþþþÿþÿþþþþþÿþÿþþþþþþþþþþþþþþþþþþýþþýýýþýýýýýýýýýýýýýýýýýýýýýýýüýýüüýüüýüýüýüýüýüýúýüûýüüüýúüúýúúüüûúüúúúüûúýúúûúúúûúúûúúúúüûúúúúúúúúúúúúúúúúúúúúúúúùúúú÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷õóõóõóõóõ÷ó÷õ÷÷õ÷÷õ÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷úýÿþýýúýûüûúýúýúúüüýúüüúüüûúüúý÷è×\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,ID´´D´´´´´´´´¼´´´´´´¼DD´´´´´¼²,DDD´´´´DD´´²D´´´´´´IDIDD,,,,,,,,XccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX             chhhh•hhhhÁh••hhhhh•h¹•hh•¹•hhhhh•hhhhhhhhh•hhÁhhhhhhhÁhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhh¹•h•¹•¹•hhhhhh¹•hhh•¹•hhh•h¹•hhÁh•hhhhhhhhhhhhh•hhhhh•hhhhh¹•hh•hhÁhhh¹•h•X               0“ÓÙñ÷÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷÷÷÷÷õó÷õ÷÷÷úüÿüúóó÷÷úóóó÷óúóóúó÷óó÷óúó÷óó÷óúó÷óúóóúóúóó÷÷óó÷ó÷ó÷óúó÷óúó÷÷÷óúóóóúóóóóó÷óúó÷ó÷óúóóó÷óóú÷÷úóúó÷óóóúóúóúóúóúóúóúúóúúúóúóúúúúúúúúúúúúúóúúúúúúúúúúüúúúúúüúúúüúúúúüúúúúúüúüüúúüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüþüþüüýüüþüüýüýüýüþþüþüþþüþüþþþþüþþþþþþüþþüþþþþþþþþþþþþþþþþþþþþþÿþÿþþÿþþþÿýÿüÿþÿþÿþÿþÿýÿþþÿþÿþÿþÿþÿþÿþÿþÿÿÿþÿÿþÿþÿÿÿþÿþÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿþÿýþþÿþÿþþþþþþþþþþþþþþþþþþþþþþþýýþþþýýýýýýýýýýýýýýýýýýýýýýýüýüüýýüýýüýüýüýúýüýúýüüüüüýúüüýüúüüýúüüüüüüûüüúüüüüúýúüúüúûüúúúúûúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷õ÷÷÷÷÷÷õóõ÷óõóõóõóõ÷õóõ÷÷ó÷÷÷÷õ÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýÿýýüúýüüüüüüúýúýüûüúüûüüûüüüûü÷æÓU,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D²´´´´DD´´´´´´´´´´DD´´´²´I´´DD,DD,D´´´´,I´´´´²´DDDD,,,,,, XccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX                   MchhhÁhhhhÁh¹hhhhh•¹ÁhhhhhÁhhhhhhhhh•¹•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhÁhhhhÁhhhÁhhhhhhÁh•¹•h•¹Á•hhÁhhhh•¹•ÁhhhÁhhhhhÁhhhÁhhhhhhhhhhÁ•¹hhhÁhhhhhhhh•¹••hhhhhhhhhh•hh•¹c                       0fÓÚè÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõ÷÷÷õ÷óõ÷÷õ÷úüÿþüúóóóú÷úóóóúóóúóúó÷óúóúóúóóúóóóúó÷ó÷÷÷óúó÷úóúóúó÷óúóóúóóúó÷óúóóúóúóúúó÷÷óúó÷ó÷úóúóúóóóó÷ó÷ó÷ú÷óúóúóúóúóúóóúóúóúóúúúúóúóúóúóúúúúúúúúúúúúúúüúóüúúúúúúüúúüúüúúüúüüúüúúüüüúüúúüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüüüüüüþüþüüþüüþüþüüþüþüþüþüþüþüþþþþüþþþüþþþüþþþþþþþþþþþþþþþþþþþþüþþþþüÿþþüÿüÿþþþþþþÿþþþÿþÿþþÿþÿþÿþÿþÿþÿÿþþÿþÿþÿÿþÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿÿÿÿþÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþþÿþÿþþþþþþþýÿþÿþþþþÿþÿþþÿþÿþþþþþþþþþþþþþþþþýýýþýýýýýýýýýýýýýýýýýýýýýýýüýýüüýüüýüýüýüýúýüýúýüýúýúýúýúüýúýúüýúüúúüüúúüúúúúúúüúûúüúúüûúúúúúûúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷÷ú÷÷÷÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷óõóõóõ÷÷õóõóõó÷õ÷÷òó÷óõ÷õóõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ýýÿþýýüûüýúýúýúýúýúüúüúýúüýúüúúüüõàÓM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDD´´´´´DI´´´´´´´D´I´´DD,²´DDDD,DD´´D´D,,,,,XccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccX             WhhhhhÁhhhhhh•Áhhhhh•¹•hhhhh•hh¹Âhhhhhh•Á••¹•hhÁ¹•¹•h¹•hh¾„¹•hhhhhhhhhhÁhhÁhhhhÁhhhhhhhÁhhhhhhhÁhhhhÁhh•¹•hh•h¹•hhhÁhhh•¹•Áhhhh¹•hhhhÁ¹•hhhhhÁhhhhh¾h¹••hhh¹•h¹Âhhhhh•hÁhh¹•hhÁhhhhhhhW                       aÓÙèõ÷÷÷÷÷÷÷õ÷÷õ÷÷õ÷óõó÷÷õ÷÷÷ó÷õ÷÷üýÿüüóóóó÷úóó÷úóó÷óú÷ó÷óúóóúóóú÷óóóúóóúó÷úó÷ó÷úó÷óúóúó÷óúóúó÷óúó÷óóúóóóúóúóóú÷ó÷úóóóóúóúóúóúóóóó÷óóúóúóúóúúóúóúóúóúóúóúúúúúúúúóúúúúúúúúúúúúúúúúúüúüúúúüúúüúüúüúúüúüüüúúüúüüüüüüüüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüþüüüþüüüüüþüüþüýýýýýüþüþýþýþýþýþýýýþþþýþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþþþþÿüÿüÿþþþÿþÿþþÿþþþþþÿþÿþÿþÿþÿþÿüÿÿÿÿÿþÿþÿÿÿÿþÿýÿþÿþÿÿÿþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿþÿÿþÿÿÿþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿþþÿþÿÿÿþÿþÿþþþÿþþþþýþþþþýþþþþþþþþþþþþþþþýþþþýþýýýýýýýýýýýýýýýýýýýýýýýüüýýüýýüýüýüýüýüýüüüýúýüüüýúýúüüúýúüüúýüúúüüûüüüüüúúüúüúúúúúüúúúúúúúúúúúúúúúúúúúúúúúúúúúùúúúúúú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷õ÷÷÷÷÷÷óõó÷÷õóõò÷ò÷÷õ÷õóõó÷÷÷÷õ÷õ÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýÿþþýýüüúýúüüúýúüúýúýúýúýúýúúüûüýúõÚ×–M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD´´´´´´´´´´´´´´´I²´´´,DDDD,DD´DDD,DDDD,,,  WccccccccccccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccX          chhÁhh•¹hhÁhhhhÁhÁhh•hhhhhÁ•¹h•hhh•¹hhhÁh¹Á•¹Á„Á•hh••Á¹„hÁ•¹hhhh•¹hhhÁhhhhÁÁhhhhÁhhÁhÁhÁhhhhÁhÁhÁhhhhh•hhhhh•hhhhhhh•¹hhhÁhh•hhhÁhh•hhhÁhhhhÁh¹„h•hhhhÁ•hh•hhhhhhhhÁh•ÁhÁÁ¹•¹hhhhhÁc                                   \ž×àò÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷òõ÷òóõ÷ó÷úüþÿüúúóóóúóóóúó÷óóúó÷óóúóóúóó÷úóóú÷óúóóúóúóóúó÷óóóúó÷óóóúóóóúóú÷óóú÷óóóú÷óóúóóóú÷÷÷ó÷óó÷ó÷ú÷úóú÷óúóúóúóóúóúúúóúúóúúúóúóúóúúúúóüóúúúúúúúúúúüúúúúúúüúúüúúüúüúúüúüúúüüüüúüúúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüüþüüþüýüýüüüþüþüþüþüþüþýþýþüþüþþþüþþþþþþüþþþþþþþþþþþþþþþþþþþþþþþþþüÿþÿþÿþþþþþþÿþÿþÿþþþþÿþÿþÿþÿþÿÿþþþþÿÿÿÿüÿýÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþþþýÿþþÿþÿþþþÿþÿþÿþþþÿþþþþþþþþþþþþþþþþýýýþüÿýþýýýýýýýýýýýýýýýýýýýýýýüüýüüýüýüýüýüýüýüýüüüýúýúýüüýúüüüýúüüûüüüúüúúúûúýúúüûúýúúúúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷÷ú÷÷÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õ÷õ÷÷õ÷õóõóõóõóõ÷ò÷÷÷õ÷õ÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ýþÿþýýýüúüûýüüýûýüüûüüûúýúüûúýúýúüû÷èÙÊ0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D´²´´´´´´´´´´´¼´´´²,´ID,D´I,D,,,, XccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccW             MchhhÁhhh••Áhhhhhhhhhhhhh¹Ãghh•hhhhhhÁ•hhÁhÁ•¹•¾h¹•ÁhÁhhh•¾hhh••¹•¹•••hhhhhhhhhhÁhÁhhhÁhhhÁhhhhhhÁhÁh¾ÁhhÁhh¹•hÁhhh¹•hh•¹•hhÁhhhhhhÁhhhhhÁhhhhhhhh¾hhhhÁhhhhhhhhhhÁ¹•hÁhÁ¹•hh•h••ÁhÁhhhM                      U›×Úè÷÷÷÷÷÷õ÷õ÷õóõ÷õ÷÷÷õó÷óõ÷õóõ÷õó÷÷üýÿüüüóó÷úóó÷óúó÷óú÷úóóúóóúó÷úóóóúóó÷óóó÷úóóú÷úóó÷óúóúóóú÷óóóóúóóó÷úóóóúó÷óúóóóúóúó÷úóúóóóó÷óóúóúóúóúúóúó÷óúóúóúóúúúúúúúúóúúúúúúúúóüúúúúúúúúüúüúúúúúüúüúüúüúüúüüúúúüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüýüüüþüüüüüüþüýüüþüþüþýýýýþýýþüþýýþüþþþþýþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþþþþþþþÿþÿþÿþþþÿþÿþÿþþÿþþþÿþÿüÿÿÿÿÿþþÿþÿÿÿýÿüÿþÿþÿÿÿÿþÿþÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿþÿþÿÿþþÿþÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿýÿþþþþþÿþþþþþýþþþþþþþþþþþþþþþþþþþþþþþýþýýýýýþýýýýýýýýýýýýýýýýýýüýýüýýüýüýüýúýüýüýúýüüüýüýúýúüüýúüúýúýüúüúüúýüýüúüúúúüúúúúûúüúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷ó÷ó÷÷õó÷÷÷óõó÷ò÷òó÷õóõóõó÷÷õó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úýýÿþþýüüüüüüýüüúûüüüúûüüúüüúýúüüúýúýú÷àØÇ\-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DI´´´´´´²D´´´´´´´´´´´,DDDD,D,,D,,,  XccXccXcccccccccccccccccccccccccccccccccccccccccXccccccccccccccccccccccccccccccccccccccXcccccccccccXccXcccccccccccccccccccccccccccccccccccccccccXcccccccccccccccccccccccccbX                   Xhhhhhh•¹ghhÁhhhh•¹•¹•¹•hhhhhhhhhhhhhhhhhhhh•¹hÁ•¹hhhhhh•¹hhhh••¹hhhhhhhhhhÁhhhhhhhhÁhhhÁhhhhhh•¹„•¹hhhh•hhhh•¹Áhhhhh•hhhhhhhhhhhhhhhhhhù•¹h•¹•¹hhhhhhhhhhhhhh•hh•¹„hhhhhhhhhhhhhhhX                           0fÓÙèò÷õ÷÷÷÷÷ó÷÷÷óõóõóõ÷õ÷÷òóõ÷ò÷÷õ÷÷÷úüüþÿþüúúóúóóúó÷óóóúóó÷÷óúóó÷úóóóúóúóúóóú÷óóóúóúó÷óóú÷óóúóú÷óúóúóóóúóóúó÷óóú÷óóóúóóóó÷úóúóú÷óóóúóúóó÷÷óü÷úúóúüóúóúóúóúúúúúúóúúúúúúúúúüóüúúúúúúüúüúúüúúüúüúúüúüüüüúüúüúüüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüþüüþüüüýüþüüýüýüýüüüþüýýýýýýýþýýýýþüþþýþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþÿþþþþþþþÿþþÿþþþÿþÿþÿÿþÿþÿþÿüÿýÿþÿÿþÿýÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþþÿþþþþþþþþþþþþþþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýüüýüüýüýüýüýúýúýüýúýüýúýüüüýúýúýúýúýúúýúýúüúúúúüúýúüûúýúüúúúúüûúúûúúúúúúúúúúúúúúúúúúúúúúúú÷÷÷ú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷õ÷õ÷ó÷õóõ÷õó÷õ÷õ÷õóõ÷÷÷÷÷õó÷õ÷÷õ÷÷÷õ÷÷÷÷÷üýþÿþþýýüüúýúýúýúúýüüýúüüüûúýúýúýúýúýúüúõÚÓ–U,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD´´´´´D´´´DDD´²D,DDD,,D,, ,XcccccccccccccccccccccccccccccccccccccXccXccccccccXcccccccXccXccccccccccXccXccXcccccccccccccccccccccccccccccccccccccccccccccccccccccccXccXccccccccXcccccccXccXccccccccccXccX              chÁhhhhhÁ„Áhhhh¾„¹••h•Á¹•hhhhh¹•¹ÂhhhhÁhhhhhhhÁhhÁh•hh¹•¹•Á„¾Áhhh¹•h•hhhÁhÁhhhÁhÁhhhÁhhhhhhhhhhhhhhh•¹••hh¹•hÁhhhh•ÁhhhhhhÁhhhhÁh¹ÃhhhhÁhÁhhh•hÁ¹•h••Áh¹•hhhh¹•¹Âh¹•¹Áhh¹•hhÁh¹Á¹•¹•hhc                                     ^ž×àñ÷÷÷õ÷÷÷õ÷õ÷÷÷÷õóò÷ò÷÷õóò÷òõó÷õ÷õ÷÷úúüýÿþþüüúóóú÷úóó÷úóóúóóúóóúóúó÷óóó÷úóóúóúóóó÷óúóóóúóóúóó÷óóó÷úóóúóó÷úóúóóúóúóóú÷úóóúóóóó÷úúóúóúúóú÷÷óóúúóóúóüóüóúúúóúúóúúúúúúúúúúóüúúúúüúüóüúúúúüúüúúüúüúúüúúüúüúüúüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüþüýüüüþüýýýüþýþýýþýüþüþüþþýþüþþýþþþþþýþþþþþþþþþþþþþþþþþþþþþþÿþþþþÿþþþþþþþÿþÿþÿþþþÿþþÿþþÿþþÿþþþÿþÿÿÿþÿÿÿþÿÿÿÿýÿþÿÿþÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿÿþÿÿÿþÿþÿÿþÿÿþÿþÿþÿþÿþþÿþÿþÿþþþþþþþþþþþþþþþþþþþýþþþþþþþþþþþþþþþþþþþþþýþþþýýþýýýýýýýýýýýýýýýýýýýýýýüýýüýüýüýüýýýüýüýüûüüüüúýúýúýúýúýúüýúüúýúýúýúýúüúúúüúúûúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú÷ú÷ú÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õó÷÷ò÷÷õóò÷óõ÷òóõ÷õ÷÷÷÷÷÷÷÷÷÷÷÷úüýÿÿýþýüüýüüüýüüýúýúýýúûüúýúûüüüúüúýúýúýúý÷ë×Ê‚0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D´´DD,D²I,,DD,,,,    XcccccccccccccccXccccccccccccccccccccccXcccccXccccccccccXccXccccccccccccccXcccccccccccccccccccccccccccccccccccccXccccccccccccccccccccccXcccccXccccccccccXccXcccccccccccccccX                 MhÁhÁhhhhhhhhhhÁhÁ•¹hhhh•Á•¹•¹•hhh•¹•¹hÁhh•¹„hhÁh•¹•h•¹hhhhÁh•hhhhhhÁhhhÁhhhhhÁhhhhhhhhhÁhhhhÁ•¹hh•¹••hhhhhhhhhh•¹•¹hhhhhÁh•hÁhhhhhhhhhhÁhÁ•hhhhh•Áhh•¹••hhÁh••¹Á•hh•¹•ÁhÁ•hhhhhW                        U–×Úèõ÷÷óõ÷óõóõóõ÷óõ÷óõóõóõ÷÷÷óõó÷ó÷÷÷õ÷÷÷÷úüþüÿÿÿþüüúúúóúóóúóó÷÷ó÷óóúóú÷óóú÷óóóúóúó÷óóúóóú÷óóúóúóúóóúóóú÷óó÷ó÷÷óóó÷÷óóóú÷ó÷úóúóóóúóúóóóúóúúúúóúúóúóúóúúóüóúúúúúúúóúúúúüúóüóüóúúüúúúüúúúüúüúúüúüüúüüüúüüüüúüúüúüüüüüüüüüüüüüüüüüüüüüüüüüüþüüüüüþüüüüýüýüüýüüþüüýüýüýýþýþýýýüþþþüþþüýþýþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþþþÿþþþþþþþÿþþÿþþÿþþþÿþþÿþÿþÿüÿþÿüÿþÿüÿýÿÿÿÿþÿÿÿÿÿþÿÿÿþÿþÿþÿÿþÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþþÿþÿÿÿÿÿþÿþÿþÿþÿþÿýÿþÿþÿþþþþþþþþþþþþþþþþþýþýýýþýþýýýýýýýýýýýýýýýýýýýýýüýüüýüýüýüýüüüýüýüüüüüûýýüýüüüüüüüüýúýúüúüúýúüúüúýúüúýúüúúüúúúýúúûúúúúúúúúúúúúúúúúúúúúúúú÷÷÷ú÷ú÷ú÷ú÷ú÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷õ÷÷÷÷õ÷÷÷òóõ÷õ÷õóõ÷÷ò÷óõ÷÷÷÷úüýýÿÿÿþýýýýýüýüüúýúüúýúüýúýúüýúüüüüüûúüýúüûúüûú÷à×Ç\-,,,,,,,,,,-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD´DDDDDD,,,,,,,XccccccccXcccXcccccXcccccccccccccccccXccXcccXccccccccccccXccXcccccccXcccXccXccccccccccccXccccccccccccccccXcccXcccccXcccccccccccccccccXccXcccXccccccccccccXccXcccccccXcccXccX           cdhhhÁhhhhhhhhhhhhhhhÁhhhhhh•„¹•h¹•hÁ•„¾Áhhhh•¹•¹Áh¹•¹hÁhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhÁhhhhÁhh¹••¹•hhhhhÁhhhhhhhhhh••hhhhhÁh¹•gÁhhhhhhhhhhhhhhhÁhh¹hhhhh•hhh¹•¹•h¹•h•hhhhh•¹•hÁhh¹•hhhc                                   0‚ÓÙàòõ÷÷÷÷÷÷÷÷÷ò÷óõ÷ò÷óõóõóõ÷÷õ÷õ÷õ÷÷÷÷÷÷÷÷÷÷÷÷úüüþÿÿÿÿÿÿÿþÿþÿþÿþÿþþÿþþÿÿüÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿÿþÿÿþþÿüÿþÿÿþÿþÿþþÿþþÿþþÿþþÿþÿþþÿþþþÿþþÿþÿþþÿþÿþÿþþÿþþÿþÿþþÿþÿþþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿþÿþÿþÿÿþÿÿþÿÿÿÿþÿÿþÿþÿÿþÿÿÿþÿþÿþÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿþÿþþþþþþþþþþþþþþÿÿÿþÿþÿþÿþÿþÿþÿÿþÿþÿþÿþÿþÿýÿýÿýþþþþþþþþþþþþþþþýýÿýþþþþþþþþþþþþÿÿþÿÿÿÿÿÿþþþýüüúýüüüúüüüúýüüýûýüýûýúýýûüüûüúúüüüûúýúüüúúèÚÓM,,,,,,,,,,LXcbccRKRLM,-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DDDD,,,D,,,, , WcccccccccXcccccccXccccccccccccccXccXcccccccccXccccccccccccccccccXccccccccXccccccccccccXccccXcccccccccccccXcccccccXccccccccccccccXccXcccccccccXccccccccccccccccccXcccccccXcX         chhhhhhÁhhhhhhhhhhhhhhhhhhhÁ•¹hh•h¹•¹¹hhhhÁh•¹h••¹„ÁhhÁhhhhhhh¹hh•hhhhhhhhhhhhhhÁhhÁhhhhhhh¹h•hh•hhhhhhhhhh•¹hhh•¹•¹Áh•¹hhhhhhhhhÁhhhhh•¹hhhhhhhh•hhÁhhhhh•hh•¹hh•¹hÁhhh•hhhhhÁhhÁhhhM                        \ÓÙèòõóõóõ÷õ÷÷õõóõ÷õ÷ò÷ò÷óõ÷÷÷÷÷óõóõóõ÷÷÷÷÷÷÷÷÷÷ó÷÷÷÷÷÷úúúüúüúüúüüúüüúüüúúüüúüüüüüüüüüüüüüüüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüüüüüþþüüþüþüüþüþüþþüþþþþüþþüþþþüþþþþþþþþþþüþþþþüþþþþþþþþþþþþþþþüÿþþþþþþüÿþüÿüþþþþþüÿüÿüþüÿüÿüÿþþþþþþþþþþþþþþþþÿüÿþÿþÿþÿüÿþÿþþÿþÿþþÿþþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿþÿþÿþÿþÿþþþÿþÿþÿþÿþþþþþÿþÿþÿþÿþþþþþþýÿþÿþÿþþÿýÿþþþþþÿþþÿþÿþþÿýþýÿýÿþÿþþþþþýÿýýýýþýÿþÿþþþþþÿþÿþÿþÿþÿþÿþýýýþþþþþþþþþþþþýþýþýþýýýýýþýþýþþþþþþþþþþþþþþþþþþýþþþþþýÿþýþýýýüýýüüüüüüýýüýýýüüüûýüýúýüüûüüüüûúüýúýúüüüüûüýúüúüýúüûúõà×Êf0,,,,,,,,,0XXXXcXh¹¶¶»¶»¶»»»»·¶¹µRJRKM0L0M,,,,,,,,,,,,,,,,,,,,,,,D²D,,,,,,,,,,  XcccccXcccccXcXcXcXYXccccccccXcccccccXcXccXcccXcXccYccXcccXXccccccXcccccccccccXcccccXccccXcccXccccccccXcccccXcXcXcccXccccccccXcccccccXcXccXcccXcXcccccXcccXcX$ccccXcccccccXX             Xh„¹•hhhhhhhhhhÁhh¹•hhhhhhhhh¹•Á¹•Áhh•h•¹•hh¹•h•h¹•h¾hhhÁhhhhÁhh•hh¹•hhh¹•¹•hhhhhhhhhhhhhhhhh•„¾¹•hhhhh¹•hh¹•h¹••¹•hÁh•hh••¹•h¹•hhhhhhhhhhh•¹•hhhhhh¹•hhhh¹•hÁhhh•¹•hh•hhh¹•hhhhhhhhhÁhhc                                  0‚ÊÓàè÷÷õ÷ó÷óõóóõóò÷ò÷õ÷÷õó÷õóõóõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷ú÷÷ú÷÷úú÷÷ú÷ú÷÷úú÷úúú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúúúúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüüüüþüýýüüýýýüþüýüþýýüýþþýýüýüüüÿüÿüÿüÿüÿüÿþþÿüþþþüÿüÿüÿüÿüþÿüÿüÿþÿþÿüÿþÿþþÿþÿþÿþÿüÿüÿüÿüÿüÿüÿüÿýÿÿýÿþÿþÿþÿÿýÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿþÿÿþÿþÿþÿþÿþþÿþÿÿþþÿþÿÿþÿÿþþþþÿþÿýþþþþþþþþþþþþþþþþþþÿþþÿýþÿýþÿþÿýÿýÿýÿýþþÿþÿýþþþþþþÿþÿþÿþþþþþÿýþÿþÿþÿþþþþþþþþþþýþþþþþþþþþþýþþýþþþýþýþýýþýýýýýýýþþýþýýýýýþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüüýüüüüýüýýüýüýüýüýúýüüýüüüýûýüüüúýúýúüüüüüüüýúýúýúýúúüüúýúýúúüú÷æ×Ó–M,,,,,,,,,MbcXbXXXcc¹¶¶¶¶¶¶¶¶¶¶¶¶»¶»¶»¶»»»»»»¾T,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D,,,,,, , XcccXcccXccccXccb$$$@cccXcccccccXcccccccccccXcc@$cccX$$XcX@$XcccXcccXccccccccXcXccccXcXcccccXcccXccccXcXcccXccccccXcccccccXcccccccccccXcccccXccXcXccYcccXccccccXccX            c¹hhhhÁhhhhhhhh••hhhÁhhhhhÁ•¹•hÁhÁhhh•¹••¹•hhÁh•h•¹„ÁhhhhhÁhÁh•¹hÁ•h•¹•Á•hhÁhhhhhhhhhhhhhh•¹h¾„h•¹•¹••¹•Áh•h•¹•h•¹h•¹hhhhÁhh•hhhhÁhhh•¹hh•¹•hhhÁhhh„hÁ•¹•hÁhÁhhÁhhhh•¹•Áh¹hhhhÁhhhhÁhc                              :–Ó×àñ÷÷õò÷ò÷õóõ÷÷÷õóóõ÷÷õ÷÷÷÷÷÷÷õ÷õ÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷÷÷÷÷ú÷÷ú÷÷÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúüúúúúúúúúúúúúúüúúüúúüúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýüýüþüüþüüýüýýýýýýýýüþüýýýýýýýýþþýýýýýýýýýþþýÿþýüýýþýþþþþþþüþþþþþþþþþþþþþþýÿüÿüÿüÿüÿýÿþüÿþÿüÿüÿüÿþÿýÿÿþÿþÿÿþÿÿÿþÿýÿÿþÿÿþÿÿýÿÿþÿÿþÿþÿÿþÿþÿþÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿþþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþþýÿýÿýÿþÿþÿþþÿþÿþÿþÿþþþþþþþÿþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþþþþýþþýýþýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýýýýýýýýýýüýýýýüýüüýüýüýüûüýüüýüüûýüüüýúýüýüýüüýüûüüûúýúýúýúüüûúýúüûüýûèÚÓÇ\-,,,,,,,,,,,XXXXXXXcXch¶¶µ·µ¶¶·µ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶»c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , XccccXccccccXcXc$@XcbY@ccccXccXcXccXccccXcXcccX@$YcXccc@$bY@$c@Yb@XccccXccXcccccccXcXccXcc=XcXccccXccccccXcXccXccXcXcccccXccXcXccXccccXcXcccXccXcccccXcXcY$XcccccccccccXX        0c„•¹•ÁhhhhhhÁhhhhh¹•hhhhhhhhh¹•hhhhhhÁhhh•hh•¹•hhhhhhh¹•Áhhhhhhhhh•hÁhhhhhh¹•hh¹•hhhÁhhhÁhhÁhhh•hhh¹•h•h¹•h•¹•hÁhhhhÁhh•hh•hhhh¹•hhÁhhhhhhh•¹•h•hh¹•hhh¹hhh•¹•hhhhÁhh¹•h¹•h•¹•hhh•h¹•hÁhhhhhX                        0^ž×Ùèò÷÷õ÷÷óõóõóò÷÷õ÷÷õóõ÷õ÷÷õó÷÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷úú÷úú÷úúú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúûúýúúýúúúûüúýúúüúüüúüüüúüüúüúüúúüúüüúüüúüüüüüüüüüüüüüüüüüýüýüýüýüýüýüüýüýüýýüýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþýýþýüþþþþþþþþþþþþþÿýÿýÿýÿýÿýÿýþÿþÿýþþþþþÿýÿýÿþÿþþÿþÿþÿýÿþÿþþÿýÿþþÿþÿýÿþÿÿýÿÿþÿþÿÿÿýÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿþÿþÿÿÿþÿþÿþÿþÿþÿþþÿÿþÿýþÿþÿþÿÿþþþþÿþÿýÿýþþþþþþþþþþþþþýþÿþÿþÿþÿþÿþÿÿýÿýÿýÿýÿýþþÿýýÿýÿýÿþÿþÿþþþþþþÿýÿýþþþþÿþÿþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýýýýþýýþþýþþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýüüüüüüüüüüýüüüüýüýýüýüýüûüýüýûüýúýüûüüüüüûüúüúýúûüüûüüüýúýúýúûüüúýúüúõà×Óf0,,,,,,,,,,,McXbXbbXXXchº¶µ¶µKµ¶³KL³Jµ³K¶µ¸¶¶¶¶¶¹\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  VcXcccXcXccXcXc@ccXcc@$XccccXccXccXccXccccccXccYccXccYXXcbY$@ccb$@ccccccXccccccccXcXcY@cX@XcccXccccXcXcc@@ccXccXccXcXccccXccXccXccXccccccXcccXccXccccccXYccXcXccccccccX             Wh¾hhhhhhÁhhhhhhh•hhh¾hhÁhhh•hÁhhhhhhhÁhhg•¹hhhhhhhh¹•hhhhhhhhhhhhÁhh•¹hh••¹•hhhhhhhÁhhhhhhhÁhhh•hhhh•h•¹hhhhhhhhhhhhhh•¹h•¹•hhhhhhhhÁhh•¹•hh•¹hh•¹•hhhhÁhhhhhhhÁ•hh•h•¹hhhhhh•hhhhhhhhÁd                                     0‚ÓÓÚèòóõòõó÷ò÷õóõóõó÷÷÷÷óõó÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷÷ú÷÷ú÷÷ú÷÷ú÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúüûúúúüûúúúüúúúüûúýúüúüüüüýúýúüüüüúýúýúýüýüýüýüýýüýüýüýüýüýüýýüýüýüüýüüýýýýýýýýýýýýýýýýýýýýýýýýýýþýýýýýþþýþþýýþþþþþþþþþþþýþýþýþýþþþþþÿýþýÿþÿþÿþýÿýÿþþÿþÿþþþþþþÿþÿþÿþÿþÿÿþÿþÿþÿýÿÿþÿþÿþÿýÿÿÿÿþÿýÿþÿÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿþÿþÿÿÿÿÿþÿþÿÿÿÿÿþÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþþþþýÿýÿýÿþþÿþÿýÿþÿþþýÿþþþþþþÿþÿþþýÿýÿþÿþþýþýþýþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþþýþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüýýýýýýýýýýüýýýýüýüüýüýüýüýúýüüýüýüýüúýúýüüýýûýýüüúüüýúûüüúýúüüüûüüúõæ×ÓU,,,,,,XXXXXXbcXcXc¹µ¶Kµ GµKµµ³µµµ¶µµ³¶µ¶¶¶¶¶¹,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , XbcXcccXcXccXcX=@cccXcX$A@YccYYcc@@YcX_@Y@YccXcYX@@YXcY$bcXc$@$YXcc@=ccccXYY@@YccXcY@@YY$$Yc@XcX@Y@ccYYY@YX=XcX@@YcXXXXcX@@XcXcY@@Xc@Y@@Y@cXX@ccY@@XcccX@@@$XcXccXcXccccXX        chhh¹•hhhhhhÁhhh¹¹•hhh„¹•hhhhhhhhhhÁhhhhhhh•hÁhÁhhhÁhhhhhhh¹•hhhhhhhhhh•¹•hhh•¹•hh¹•¹•hÁhhÁhh¹•ÁhhhhhhhhhhÁ•¹•hhÁhhh¹•h¹•hhÁ•h•hhhhhhhhhhÁhh•hhhh•h¹•h•¹•hhhhhhh¹ÁhhhhhhhhhÁ•ÁhhhÁhhhhhhhÁhhhW                            UÓÓÙèò÷÷÷õ÷õó÷÷õ÷÷õ÷õóõ÷÷õ÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷úú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúûüúúüúúüúúúüúýúúüüüúýüüúüüüüúýúýúýúüúýúýúýüüüýýúýúýúýüüüüýüýüýüýüýüýüüýüýüýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþýýþýýþþþþþþþþþþþþþþþþþÿýÿþþÿþþþþÿýÿýþþþÿýÿýþþþÿþþÿþÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþþÿþÿþÿÿÿþÿþþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿþÿþÿþÿÿÿÿÿþÿþÿþþÿÿÿþÿþÿÿÿþÿþÿýÿÿþÿþþÿþÿÿÿþÿþÿþþþþþþþþþýþÿþÿþþÿþÿþþÿþÿÿÿýÿýÿýÿþÿþþÿýþþÿýÿýþþÿþÿþþþþþþÿýþýþþþþÿþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýýýýþýýþþýþþýýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýüüüüüüüüüüýüüúýûüýúüýúýúýüýüýúýúýúüüýüýúýúüúüüúýúýûüüüüüúýúýúûüüúõàØÓž\,,,,,,,,,,XXbXXcXXXbcc¹¶µµKµµKµ³µµµ³µµKµµGKµFµ¶¶¶»M,,,,,,,,,,,,,,,,,,    XXccXcXccXcXcXc$YccXcXc$@Y$cY$XX!@$$c@$=XcXcbY$$@B$$cYcXXc@XccX@$cXccc@$$@$=cX@$@$@$Yb$Yc$=@$@c@$=$Y$$YXB$@@cXccXc$=@YXc@$@@X$=YX$Xc=@c@$@@XXY$$$cXccXcXccXcccW            ch„•hhhhhhhhhh•Á„Áhh•¹hhhhhhhh•¹•¹hh•¹•¹hhhhhhhhhhhhhhh•¹••¹„¾hh¹hhhh•hhÁ¹h•¹••ÁhÁhhhhh••hhhhÁh•¹•¹hhhhhhhhh•¹•¹•hh•hÁhhhhhh•¹hhhhhhhhhhhhhhÁhh•h•¹hhhhh•¹••¹h•¹hhhhhhhhhhhhhhh•¹„¾hhhhhhc                                       U–ÓÓÙèòò÷òó÷õ÷óõ÷÷ó÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷ú÷÷ú÷ú÷ú÷÷ú÷÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúüúúúûúúúúüúüûúúúüúúúüúûúüúüúúüúýúüúýúýúýúüüýúýúüüýüüýúýýúýúýüýüýüýüýüýýüýüýüüýüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýýýþþýþþþþþþþþþþþþþþþþþþþýþþþþþþþÿþþþýÿþÿþýÿýÿþÿþÿþÿýÿþýÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿÿÿþÿþÿþÿÿÿÿþÿþÿþÿÿÿþÿþÿÿþÿþÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿþÿþÿÿÿþþÿÿþÿþÿþÿÿþÿÿþÿþýÿþÿþÿþÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþþþýýÿýÿýÿþþÿþýÿþÿþýÿýÿþþþþþþþÿýÿþþþýÿþþþþýþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþþþýþþýýþýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýýýýýýýýýýüýýýüüýüýýüýýýúýúýúýüýüýûüüûüüýüýüüûýúüüüúýúýúýúýúüüúõà×Óž\0,,cXXbcXbcXcXc¹µµµµµµµµµµ¶µ¶µ¶µ¶µ¶µ¶µ¶µ¶¶b,,,,,,,,,,,,,,,,,,,,,,,,,,,       XcXcXccXcXcXccX@XXcXcX@X$Y@$c@cXXX@$YccXcXcY@cbcYY$XcXc$@$YXXc$@XcXcX@$bcYYXXcX$@@$ccY@ccYX@$cX$@@cX=$bcXcXccX@YccXYbc$@$@cXc=@Y$XXYcX>@c=@Xc@XcXcXXXcXcXcXX            Xhhh¹•Áh¹•¹•hhh¹•h¹•¹•hh•¹•hh¾„¹•hh•h•hhh•Á•¹•hhhhhhhhÁhhhh•¹•h¹•hhh•¹•hhhhÁÁhh•¹•ghhhhhhhhh¹•hhhhhh•Á•hhhhhhhhh•h•¹•hhhhÁhhhhh•Á•¹•¹•hh¹•h¹•hhhhhhh•¹•hhhhh•¹•h•hh••¹•hhhhhhhhhhÁhh¹•hÁhhhhM                                   U–ÓÓÙèò÷÷õóõ÷÷óõ÷õ÷÷õ÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷ú÷÷÷ú÷úú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúúüúúýúûúüúúüúýúüüûüüüüúýúýüûüüüúýüüúýúýúýúýúýýúüüýüüüýýýýüýúýüýüýüýüüýüýüýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþýýþýþþþþþþþþþþþþþþþþþþÿýÿþþþÿþþþÿþÿýþþÿýÿþþÿýþþþþÿýþÿþÿþþÿýÿþÿþÿþÿþÿþÿþÿÿþþþÿÿÿþÿÿþÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿþÿþÿÿÿÿþÿýÿþÿþÿÿþÿþÿÿÿþÿÿÿþÿþþÿÿþÿÿþÿÿþÿþÿþÿþþþþþþþÿþÿþÿþÿþþþþþÿþÿÿÿýÿýÿýþþþþÿýþþÿýÿýþÿþÿþÿþÿýÿýþþÿþþþþÿþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþþýýþýþýýýýþýýþþýþýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýüüüüüüüüüüýûüýüýüýüüýúüúýýýýýûýúýúüüüüüýúýúýúüüüûýúýúýúýúýúüúõàÓÓž\,,,,,,,,cXXcXcXXcXcX¾µµµµµµµµµµµµµµµµ¶µ¶µµµ¶µµµ¶h,,,,,,,,,,,,,,,,,,,,,,,,,,, ,    XXcXcXXcXcXccXc@$cXXcbYXc@$Xb@$$YB$XcXcXcXX$YXcc$YXYXcXY$@ccX@Xcccc@ccc$YY$cbc$B@$cXX$$$$c@>Xc=@Y$XcX$$cXcXccY$@XY$$YYXcXY@cY$YX$@cbYXccXcXcXcXcXcX          X•¹hhh••h•¹•h•hhÁhhhh••¹h•¹hhhhhhhhhÁ¹hÁh•¹hhhhhhhhhÁh•hÁ•¹•hhÁh•¹Á•¹hh•¹hhhh•hhhhhhhh•¹„¾•¹hùhh•¹hhhhhhhhÁhh•¹•¹hhhhhhhhhhhhhhh•h•¹••hh•Áhh•¹hhh¾•¹hhh•¹hh•¹Á¹Áhhhhhhhhhhh•¹Á•hhÁhÁhhhX                                  M–ÓÓÙàñõ÷÷÷õ÷÷÷÷÷÷÷õ÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷ú÷÷ú÷ú÷ú÷÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúýúúúúúúüúýúúúúüúüúúüúúúúüúüúüüúýúýúýúüüýúýüüýüüüüýúüüýýüüüúýüýüýüýüýüýýüýüýüüýýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýýýýýþþýþþþþþþþþþþþþþþþþþþþýþþþþÿþþÿþþþýÿþÿýÿþþÿýÿÿÿþÿýÿþÿþÿþÿýÿþÿþÿþÿþÿþÿþÿþÿÿÿÿþÿþÿÿþÿÿÿþÿþÿþÿÿÿþÿþÿþÿÿÿþÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿþÿþÿÿÿÿþÿþÿÿþÿÿÿþþÿÿþþÿþÿÿÿþþÿþþÿþþÿþÿþÿþÿÿÿÿþÿþÿþÿþÿþÿþÿÿþÿýÿþýýÿýÿýÿþÿþÿýÿýÿýÿýÿþþþþþýÿýþýÿþþþþþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþþýþýþþþþýþþýýþýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýýýýýýýýûýüüýúýüýüüûüýýýúüúüüýúýüüýúýúýúýúýúýúýúýúýúýúýúýúúèÚÓÓ\-,,,,,,,cXcXXXcXcXcc¾»»»»¶¶¶µµµµµµµµµµµµµ¶µµµµ¶µ,,,,,,,,,,,,,,,,,     XcXcXccXXXcXccXX=@bcXY$@ccY$Xc@$YbXXc@$cXcXXXcXB$cX@$Yc@$Yb$$X@Yb@XcXcXc@$XcYXXYcX@@cXY@XbYXb@$XX@@@$cbYcY$XccccXYc@bX@XXYXYcXcXXbX$@bcYcX@Xc@bXcXcXbcXcXccX                Mhhh•¹•hhhhÁh¹•hhh¹Á¹•hhhhh•hh•¹Âhhh¹Á•¹•Áhh¹•h•¹•¹•h•¹•hh¹•hÁ¾„¹•hh•hhÁ•¹••hhhhhhhhhhhhhh¹•¹•hh•¹••hhhhhh¹•hhhhh•¹•hÁhhhhhhhhh¹•hhÁh¹•hhhhh¹•h•¹•h¹••hÁh•¹•Áh•¹••¹•h¹•¹•¹•¹•¹•h•h¹•hhÁhhhc                                :”ÊÓ×Ùèòò÷÷÷÷õóõ÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷ú÷ú÷ú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûüúúúúûüúûúüúúýúýúüúüüúýüýýúýúýúüüüüúýúýúýúüüýúüüýúýüüýýúüýúýýüýüýüýüýüýüüýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþýýþþþþþþþþþþþþþþþþþþÿþÿþþÿýþþþþþþÿþÿýþþþÿþÿþþþþþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿþÿþþÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿþÿþÿþÿþÿÿÿþÿýÿÿÿþÿþÿþþÿÿÿþÿÿþÿþÿþÿÿÿþÿÿþÿþÿþÿþÿþþþþÿþÿþþÿþþþÿþþþÿýÿýÿþÿýÿýÿþþþþþÿýÿýþþþþþþþÿþÿýþÿýþþþþÿþÿþþþÿýþþþþþþþþþþþþþþþþþþþþþþþþþþýþýýþýþýýýýþýýþþýýýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýüýüýýüüüüüüüüüüýýýüüýüýúýüüüýýýýýûüýüûüüýüýúýúýúýúýúýúýûüüüúúõàÓÓÓ\,,,,,,,,,,XcXcXbbcXcchhÁÁÁÁÁÁÄÁÁÄÁÁ»¾»»»¶»¶¶¶¶µµµ¶h,,,,,,,,,,,,,,,,,,  XXcXXcXcXcXccXccY$$$@cXcX$@cXX$$>XA=XcXbXcXcX$@cXc$YbX@YXcXXXc@$@cX@$$@@$cb$Yc$@cA@Xc@A$cX$$cXcXcY$$@Xb@$Y$YXcXbY=XcbY$$XcY$cXcXcXcXcbXXcX          XhhÁ•hhhhhh•¹•h•¹••h•hhhhhh•¹„¾h•¹•hh•hhhÁh•hh•¹„••¹h•hhÁhhh•¹•¹hhhhh•¹hhhhhhhhhhhhhhh•¹•h•h•¹hh•¹•hhhhÁhù•h•¹hhhhhhhhhÁhhhh¹•hhhhhhÁ•¹hhhh•hhhhhh•h•¹Á¹hh•hh•¹hhÁhh•••h•h•hhhhÁhhhhhhÁhhW                                          0`žÓÓ×àèòõó÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷ú÷ú÷÷ú÷ú÷ú÷÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúüúûúúüúúúüúüúûúúúúüúüûúýúúúúýúüüúýúüûüüüüüüýüûüüýüüýúýüüüýýüýüüýüýüýüýüýüýýüýüýüýýýýýýýýýýýýýýýýýýýýýýýýþýþýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþÿýÿþÿþþýÿþÿþÿþþÿþÿÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþÿÿÿþþÿþÿþÿÿþÿþÿþÿÿÿþÿþÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿÿÿÿþÿþÿþÿÿþÿþÿýÿþÿþþÿþÿþÿþÿþÿÿÿþÿþþÿþÿþÿþÿþÿþýÿýÿýÿýÿýÿýÿþÿþÿýÿýÿþÿþÿþÿþþþýÿýÿþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþþýþýþþþþýþþýýýýýþýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýüýüýüüýýýýýýýýýýüüüýýüýüýüýúýúüúüüüüüüüýúüúüýüýúýúýúýüüüüúýõæ×ÓÓÓ“M,,,,,,cXXcXccXccchÁÁÁÁÄÁÁÁÁÄÁÄÁÁÄÁÁÁÁÁÄÁÁÄÁÁľg,,,,,,,,,,,,,,,,,,,,,,     XXXcXbcXcXcXcccXccYYYXcXcXbYXbXXbYYXXcXYdXbXcXXbcXYYcXXcbcYYXbXcXYYbXcXcXcb@$XYXcXcXYYYXYXYcXYXbcYYXXcXYcXb[bXccXYYcXXccXXXYXXXXXXYYcbYcccXXXYcXcXcYYcXXcXYYXYXcXcXcXXcXcXcX                     chhhhhhhhÁhhh¹•hhhÁhhhhhhh¹•hh¹•¹••¹•hhhhhhÁhhhhh¹•¹••hhhhÁhhhÁh•hÁhhhhhh•¹•hhhhhhhhhhhhhhhÁhhhh¹•h¹•h¹•Áhh¹•h•hhhhh¹hhhhhhh¾hhhhhÁhhhh¹••hhÁhhhhhhhhhhh•h•h¹•hhh•hhhÁhhh¹•¹•hh¹•¹•hhÁhhhÁhhhhc                                       U‚ÊÓÓÙàòõ÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷÷÷÷ú÷ú÷ú÷úú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúúúüúúúúûúüúúüüúýúûüúüúúüýüýúüúûüüüûüüúýúýúüüüüüüüûüüüýûýüüýüýýüýüýüýüýüýüüýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýÿýþþþþþýþþþþþþþþþþþþþþþþþÿþþþþÿþÿþþÿýþþþÿþÿýþþþþþÿþþýþþÿþÿþÿýÿþÿþÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿÿÿÿÿÿÿþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿÿÿþÿÿÿþÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿþÿþÿþÿÿþÿþÿÿÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿþÿýÿýþÿþÿþÿýÿþÿþÿþÿþÿþþÿýÿýÿýÿýÿýþþþþÿýþþþþþþþþÿýÿýýþýþþþþþþÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýýþýþýýýýþýýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüüýüýüýýüüüüüüüüüüûýüüüýúýúýúýýýûýýýüüûüüüüýýûüüúýúýûýúûüú÷ëÙÓÓÓ–\,,,,,,,McXcXcXcXcc¹¶µ¶¹¶¹¹¾»¹ÁÁÁÁÁÁÁÄÁÄÁÁÄÁÁÄÁ¾J,,,,,,,,,,,,,,,,,,,       XXcXXcbXXcXccXccXcXcccXcXcXXXcbXXXXbcXcccXcXbXcXbccXcbcXXXcbXXXXbXcXcXcbXXcA$cXXcXcbccbcXcXcXccXcXbXcXcXXccXcccXcXccXccXXcXXbcXbXbbXXXcXcXcbXXXXXccXcXcXbcXbXbXXXXcbcXcXXcXX         Thh•¹hhhhhhÁ•¹•hhhhhhhhhhhh•¹•Áh•¹h•¹hhhhh•¹Á¹Á•hÁhhhhhhhhhhhhhhhhhÁh•¹Áhhhhh•¹hhÁhhhhhhÁ¹hh•¹•h•¹•hh•Áh•¹h•hhhhhhhÁ••hhh•¹„hh•¹hhhhhÁhh•hhhhhhhhhhhhhhhhhÁhh•hhh•¹hhhh•¹•Áh•¹Á•hhhhhhhhhhhhhh„M                                  \–ÓÓÓ×àèòõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷ú÷ú÷ú÷ú÷ú÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúûúýúüúúüúúúüúüüúýúüüúúúúüüüüúüüüýúüüüüýúýúýüüüüüüýüüüüýúýüüýüýüýüýüýüýýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýþýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþýÿþþýþþþþþþÿþÿþýÿþÿþÿÿþÿþÿÿþÿþÿþþÿþÿþÿþÿþÿþÿþÿþÿþþÿÿÿþÿÿþÿþÿþÿþÿÿþÿÿÿþÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿþÿÿþÿþÿÿþÿþÿÿþÿþÿÿþÿÿþÿþÿþÿÿþÿÿþÿþÿþÿþÿþÿýÿþÿþÿþÿþÿþÿþþþþþþþÿþÿýÿýÿýÿþýÿýÿÿýÿýÿþÿþÿþÿþÿýþþýÿýÿþÿþÿþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýþþýþýþþþþýþýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýýüýüýüüýýýýýýýýýýüüýúýúýýýýüûüüýúýúýüüýúýúüüüüûýúýüüüúõæÚÓÓÓ^-,,,,XcXcXcXcchµµµµµµµµµµµµµµµµ¶µ¶»º»¹»¾¹ÁÁ¾0,,,,,,,,,,,,,,,,,,,,,,,,, ,       XXXcXcXcXbcXcXcXcXcXcXcXXbXcXbcXXbcXXcXcXcXXbXXcXXXcbcXXXbXcXXbcXcXcXcXXcXb@=XcXbcXcXcXXXcXXcXXcXcXcXcbcXXXcXcXcXcXccXXcXbcXXXcXXXcXXcXcXcXXXXcXcXXcXcXcXXcXXXXcXcXcXcXcXXcX               chhhh•¹Á•hh¹•¾hhhhhhÁhhhÁhhhhh¹•hhh•¹••¹•hhh•¹••hh¹•hhhhhhhhhhhhhhhhh¹•hh•h¹•hhhhh•¹•hhÁhhhÁ•hhh•hhh¹Áhhhhh•hhhhhh¹•hÁhhhhhh•¹•hh•Áhhhhhhhhh¹•hhÁhhhÁhhhhhhhhhhhh¹••hhhhh•h¹•¹f•¹•hhhhhhhhhhhhhhhX                                ^ÓÓÓÓÙàèò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷÷ú÷ú÷ú÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúûúüúüúúüúúúúûüúûüúýúüúúüúýúûüüüýúúüüüüúüüüýúýüúýüýüúýüüüýüýüýüýüüýüüýüýüýüýüýüüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýþýýÿüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþÿþÿþÿýþþþÿýþþÿýþþþÿýþþÿþÿþÿþþÿþÿþÿþÿþÿþÿÿþÿÿÿþþÿÿþÿÿþÿÿÿÿÿþÿÿþÿÿÿþÿÿþÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿÿÿÿþÿÿÿÿÿÿþÿÿþÿþÿþÿÿÿþÿÿÿþÿþÿÿþÿÿþÿÿþÿþþÿþÿÿþÿþÿþþþÿþÿþÿþÿÿþÿþÿþÿýÿýÿýÿþÿþÿÿþÿþÿýþÿýÿýÿýþÿýÿýýÿýþþþþþþþþþþþÿþÿýþþþþþþþþÿýþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýþýýþýþýýýýþýýýýþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüüýüýüýýüüüüüüúýúüýüüýýýüúüúýüýüüýüýúýúýüýüûüüüüüüúõæÚÓÓÓÓÇf0,,,,,,,,,,0cccXccchºµµµµµµµ¼µµµ¼µµµµµµµµµµµµµµµµh,,,,,,,,,,,,,,,,,,,,,,,,,,,  ,          XcbXcXXXcXXcXcXcXcXcXcbcXXXcXcXXcXXXXcXcXcXXbXbXXcXXcXbXcXcXcXXXcXcXcbXcXcXcbcXXcXcXcbXcbXcbXcXcXXXXcXXXbXcXcXcXcXcXcXcbXXXcbcXcbXXXcXcXcXXbXbXcbXXXcXXXXXcXcbXXcXcXcbXbXcXX       0cÁhh•¹•hhhh••¹„hhhhhhhhÁhhhhhhh•hhhhhhh¹•hhhh•hh•¹hhhhhhhhhhhhhhhh•¹•hhhhhh•hhhhhg•¹•hhhÁhhhhhhhhhhhhÁ•hhÁhhhhhÁhhh•hhhhhh¹„¾hh•¹•¹•¹•¹•¹•¹•hhhhhÁhhhhhhhhhhhhhh•hhhhhhhhhh••¹hhhhhhhhhh•¹•¹h•¹hd0                            UfžÓÓÓÓÙàèèõ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷ú÷÷ú÷ú÷ú÷ú÷ú÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúüúúúúúúúúúýúüúúüúúüúüúüüûúúüüüúûúüýúýúýüüúýúýúýüüýúýýüýúýüýúýüýüýýüüýüýüýüýüýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýþýýýýýýþýýýýþþþþþþþþþþþþþþþþþþþþÿþÿþþÿýþþþþþþþÿþÿþÿþÿýÿÿþÿýÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿþþÿÿÿþÿÿþÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿþÿÿþÿþÿÿÿþÿþÿþÿÿþÿþÿÿÿÿýÿÿþÿþÿÿþÿþÿþÿþÿýÿþÿþÿþÿþÿþÿþþþþþýÿþþÿþÿýÿþýÿþÿþýÿýÿþþÿþÿþÿþÿýÿýÿýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþýþýþýþþýþýþþþþýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýüýüýýüýüýüüýýýýýýýüýýüýýúýúýýýýüüýúýüûüýúüüúúüüýúõëèÚÓÓÓÓÊ“\0,,,,,,,ccccc‚¶µµµ¶¶µ¶µµµµµµµµµµµµµµµµµµ¼µµ¾,,,,,,,,,,,,,,, ,      XXXXbXbXbXXbcXXXXXcXXXXXbXcbcXcXbXbbcXcXcXbXcXXbXbXXXXXcXXXcXXXbXXbXXXXbcXbXcXXcXXcXXXXXcXXcXXbXcXbXbXXbXXXXcXXXbXXcXXXXXbbcXcXcXXXbXcXcXcXbcXXbXXbXbXbXcbXcXXXbXXbXXXXcXbXX                  XdhÁhhhÁ•hhh¹•hh¹•¹•¹•hhhÁhhÁhhhhhhhhhh¹••hhh¹•hhhh„¾hhhhhhhhhhhhhÁ¹•hhhhhhhhhhhÁhhhhh•hhhhhhhhhh¹•ÁhÁhhhÁhhhhhhhhhh¹Á¹•hhhhhh¹•ÁhhhÁ•h••h•h•„¹•hh¹•hhÁhhÁhhhhhh¹•hhhhhh¹•hhhhhhh•hhhhhhhhhhhh•Á•hh•hX                                            \‚ÊÓÓÓÓÓÓÙàèèò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ú÷÷÷÷÷÷÷÷÷úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúüúúúúúûüúúúúúûúüüüúúúüüüúüüúüúúýüúýúüüúýúüüúüúýüúýüüýúýüüüýüýüýüýüýüýüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýþþýýýýýýýýþþþþþþþþþþþþþþýþþþþþþÿþþÿþþþþþþþþÿýþþþÿýþþþþþþþÿþÿþÿþÿþÿþÿþÿþþÿÿþÿýÿþÿþÿþÿþÿÿþÿþÿþÿÿþÿþÿþÿÿþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿþÿÿþÿÿÿÿÿþÿÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿýþÿÿÿþÿþÿÿþÿþÿþÿÿÿþÿþÿþÿþþþÿþþÿýÿþþÿþÿþÿþÿýÿýþþþþþþþþÿýÿþÿÿþÿýÿþÿýþÿýþÿýþýÿýÿýýÿýþþýþýþýþýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýýýýýýýýýþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüüüüúýúýúýýüýüýüüýüýüýýüüúûüúýúýüúüüüüýúýúúýúüýúûüüúýú÷õëæÚ×ÓÓÓÓÓÊ”\0,,,,,,,0XcM³,IN¼»¶¶µ»»¶¶µ¶¶¶»¶»»Í»»¶¶µµµ¹M,,,,,,,,,,,,,,        XXbXXbXXbXcXbXbbXbXbcXbXcXXcXcXcXXXXXcXcbXcXcXcXXbXcbXcXXcXXcbXcbXXXbXXcbXXcXXcbXcXcXXcXXbXXbXcXbXXXXbXXcbXcXbXbXbXbXcbXcXcXcXcXbXbXcXcXcXXcXcbXbXXXXcXcXXcXcXXcbXbXbXcXXcXX              cÁhhÁhhhhÁh•Áh¾Áh•Á•hhhhhhhÁhhhhhh•¹•h•h•¹hh•ÁhhhhhhÁhÁhhÁhhhÁhù••hÁ¹hhhhhhÁhhhhhhhhh•¹hhhhhh•¹••f¹hhhÁhhhhh•¹hhhh•Á••hh¹hh•¹•hÁhÁhhhhÁ•¹ÁhhÁ¹•¹•hhhhhhÁh•¹hh•h•¹h•¹••hhÁhhhhhhÁhÁhhÁhhhÁhÁhhhhhÁhhd                                        0Va–ÓÓÓÓÓÓÓÓ×ÙÚÚàààèèëèèëèèëèèëèèëèëèëèèëèëèèèëèèèèèèèèèèèèèèëèëèëèëèëèëèëèèëèëèëèèëèëèëñèèëõèëôèíèèëèõèëèëèëèëíèëèèõèëíèëèõèëííèíèëñèíèõèíèíèëèõèíñíñíñëõíõõõõõõõõõèõèõñõñõòõñõõôõõôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõ÷õõ÷õõ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õ÷õõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõôõõõõõõõõõõõõôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõôõõõëõõõõôõõõõõõõõõõõôõõôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõôõõõôõõõôõõôõõôõñõñõèõèõèõèõôôôíñëíñëõõõõõôôôôëôëôëôëôôèëèëèëíèëèëèèëííñíèëõèëõèëèëèõèíèëèèæààÚÚÚ×ÓÓÓÓÓÓÓÊ–f\M,,,,,,,LJNMµ·µ¶»¶»»»»¶µµ¶¹M,,,,,,,,,,,,,,,,,,               XXXbXXbcXXbXXXbXXbXXXXbXXbcXcXbXbXbbXbcXXcXcXcbXbXXbXcXXbXcbXcXXXXbXbXbXXXcXbcXcXXcXbcXbXbcXbXXXbXbXbXXbXXcXXbXXXXXbXXXXbXcXcXbcXXXbXcXbXbcXcXXXXbXcbXcbXcXcXcbXXXXbXbXbXbcX             TchhhhÁhhhh¹•hhÁhhhhh¹•hh¹•hh¾„¹•¹•hhÁ¹•hÁh•hhhhÁhÁhhhÁhÁhhhhhhhhÁ¹•hÁ•¹ÁhÁhhh¹•hhhhÁhh•hh¹•¹•h¹Áh•hhhÁhhhhhh••ÁhÁhhhhhhh•¹•¾hhhÁhhhh¹•h•Áhh•¹••¹•hhh¹•hhhh•¹•hÁhh•hÁ¹•hh¹ÃhÁhhhÁhÁhhhhhhhhÁhhhhhÁhhW                                   0T^‚ÊÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓ×ÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓ×Ó×Ó××ÓÓ×ÓÓØÓÔÓÔÓÔÓÔÓÓÔÓÓÓÓÔÓÓÓÓÓÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ×ÓÓ×ÓÓÓ×Ó×ÓÓ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÊÓÓÊ“`U0,,,,,,,,,K2,,,,,,,,,,,         XXbXXXXXXbXbXbXXXXbXbXbXXcbXbXcXbXXXcXXbXXcbXXXbXXXbXXcXXcXXcbXbbXXbXXbXbXbXXXXXcXbXXXbXXXXXcbXbXXXbXbXbXbXXXXbXbbXbXbbXXXXbXcXbXbXXbXbXXcbXXbXbXbXXXbXXcXXXcbXXbXbXXXXXXXXX                   Xhhhhhh•¹•hhhhhhh•¹•¹•h¹„hhh•hÁhhhÁhhhhhhhhhhhhhhhhh•¹„¾hÁhh•¹•h•¹•¹•hÁhhhh••hh•¹hhhh•¹•••¹¾„•hÁhhhhhhhhhh•¹hhhhhhhhhh•¹••¹hhhhhhhhh•hhhhhhh•¹hhhh•h•¹•¹„hÁhhhÁhh•¹•hh•hhhhhhhhhhhhÁhÁhhhh•¹•¹hhhhÁc                                              00UVV\^^^^^`^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^`^^^^^^`^^^^^^`^^^^^^^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``^`^^^^^^^^^^^^^`^^^^^^^^^`^^^^^^^^^^^f–Â›ÆÆÆÆÆÇÆÌÌÌÌÉÌÌÌÌÌÌÌÌÌÌÌÌÌÌÎ×Î×Þ×ßßßßßßßßßæßßßàâàßàáâèèèßèßßßßßßßßÎÌ×ÌÌÌÌÌÌÉÈÇÆÆÆÆÆÆÆÆÂ–––––––…–‚‚‚‚‚‚‚‚‚‚_‚‚x‚_zdz_‚_‚x‚‚‚‚^^^^^^^^^^^^^^^^^^^`^^`^^``````````^^`^`^^^^^^``^`^^^`````^````^```^^```^`^^^`^``^^`^^^``^^``^^^^^^^^^^^^^^^^^`^`^``^``^^^`^^^^^^^`^^^^^^^`^^`^`````^^``^^```^```^`^^^`^`^^^^`^^^`^^^`````^````````^``````^`^`^``^``^^````````````^`^``^^^``^`````````^`^```````e`````^\VUM000,,,,,,,,,,,,,,,,,,,,,,,      XXXXbbbXbXXXbXXbbXbXXXXbXXXcXXXbXXbXbXXcXbXXcXbXXbXXcXbXcbXXbXXXXXXbXbXXXbXXcbXbXcXbXbXbXbXbXXXXbXXXXXbXXXbXbXbXXXXXbXXXbcXbcXXbXXbXcXXcXXXXcXbXXXbXbcXbXbXbXXXbXbXXbbbXbXbX           cghhhhhhh•¹•hhÁhhhhhÁhÁ•¹•h¾¹•Áh¹•hhhhhhÁhÁhhhhhhh¹•hhÁhh¹•hhhhhÁhh•hÁhhÁhhhh¹•hÁh••¹•¹•„¹•¹¹•hhÁhhhhhÁhhÁÁh¹•¾„¹•h¹•hh¹•¹•hhhhhhhhhhhhhÁhh¹•¹•hÁ¹•hhhhhÁ•hhhhhhhhÁhÁ¹hhhhhhhhhÁhhhhhhhh¹•Á••Á¹•hM                                                      \chhh•ÁÁÄÄÄÍÄÄÄÍÄÄÄÍÍÄÑÍÐÍÍÍÍÑÑðððïðððÑòððóððóóóóóðóðóúóóúúóòóðÑÑÑÑÑÍÑÑÐÍÍÍÄÄÁÃÄÄÁÁhhhfcccccXbXXXTTT ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,       XXbXXcXbXbXbXXbXXXXbXbXXbXbXbXbXXXXXbXbXXbXXXbXXXbXbXXbXXbXXcbXbbXbXXXbXbXXbXXbXcXbXXXcXcbXcbXbXXbXbbcXXbXXbXXXbXbXbXXbXXbXXbXXbXXXXbXbXbbXbXbXXbXXbXXXXXbXXcXbXXXXXXXXbXXXX                    McÁhhhh•Á¹•¹hhhhh•¹„hhhh•Á¹„•hhh•hhÁhh•hhhhhhhÁ•¹••hhhÁg¹•h•¹Á•¹•¹hh•¹hÁhhhhh•hhhÁhhh•h¾Áh••hhh•¹Á¹hÁhhhh•ÁhhhÁhhh•ÁhÁ••¹„hhÁhhhhhùh•¹h•¹•Á•hh••hhÁhh•¹hhhhhÁhhhhh•¹h•hÁh•¹„¾hhÁhÁhhh•¹Á¾„h•¹¹•¹•ÁhhX                                                                                                                                    bhghhÁÁÁÄÄÍÄÍÄÍÍÄÍÍÍÍÍÍÍÍÑÑÍÍÑÑÑÑÑÑÑÑðððððððððððóóóóóóúóóóóóóðóððçðÑÑÍÑÍÍÍÍÍÄÄÄÄÁÁÁhhhhhhcccbXXXTTTTTT             ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,        XXXXbXXXXXbXXXXbXbXbXXbXXbXXXbXXbXXbXbXXbXXbXXbXbXbXbXXbXXbXbXXXXbXXbXXbXXbXbXXbXbXXbXXbXXXXXXXbXXbXXXXbXbXXbXbXXXbXXbXbXXbXXbXXXXbXXXXXXXXbXXXbXbXXbXbXbXbXbXbXbbbbXbXXbXXX          bhhhhhhhhh•¹••hh¹•Áh•Áhhhhhh•¹•hhhhhhhÁh¹•¹•Á¹•hhh¹•hhhhhÁ¾hh•Áh•h•hÁh•¹•Áhh•¹•hhh¹•hhhÁ¹•h¹•¹¹Á•¹•h•h••¹•hhhhhhÁhÁhhhhÁhhhh¾hhhhhhhhh•hh•hhhÁ¹•Áhhhhhhh¹••h¹•hhhÁhh¹•hÁ•hhhhh•h¹•hhhÁhhhh•Áh¹•h„Á¾„h•Áhc                                                                       bchhhÁÁÄÄÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÑÑÑÑÍðÑÑÑÑÑðïóóðððóððóóóóúóóóóóðóóðóðððÑÑðÍÍÑÍÍÍÍÄÄÄÄÄÄÁhÁÁhhhccccXXXXTXXTTTT       ,,,,,,,,,,,,,,,,,,,,,,,,,,,,           XbXcXbXbXbXXbbXXbXXXXbXXbXXXbXXbXXbXXXXbXXbXbXXbXXXXXbXXbXXbXXbbXXXbXXbXXbXXXXbXXXXbXcXXXbXbbXbXbXXcbXbXXbXXXbXbXbXXXXXXXbXXbXXbXbXbXbbbbXbXbXbXXbXXXbXbXXXXXbXXXXXXXbXXbXXX                  c•¹„hhhhhÁ•hhhÁ•hhhÁ¹hÁhhh•¹h•¹hhÁhhhh•Á•hh••¹•Á¹•hÁhhhh•¹ÁhhÁhhhhhhhhh•hhh•¹hhhh••¹hÁ¾„hh••h•hùhhhhÁ¹hÁh•¹„hhhÁhÁhhhhhhÁ¹„hhhhhhhhhÁhhhhùh¾„ÁhhÁ•¹•¹•hhh•hÁhh•¹•ÁhhhhhhhÁ•¹„Áhhhh•¹ÁhhÁhÁ•¹•¹hhhh•¹hhW                                                                                                                Xhhh•¹ÄÍÄÍÄÄÍÍÍÍÑÑÑÍÑÑÍÍÑÑÍÍÑÍÑðÑïððððððÑðïòðóóóóððóüüóüýüóóóðòóððÑÑðÑÍÍÍÍÍÍÍÄÄÄÁÁÁÁhhhhchccccbXXXTTT                ,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,       XXXbXXbXbXXbXXbXXbXbXXXbXbXbXbXXXXbXXbXbXXbXXXXXXXbXbXbXXbXXbXXXXbXXbXXbXXbXbXXbcbXbXXbXbXbXXXXXXbXXXXXbXXbXXXXXbXXbXXbbXXbXXbXXXXXXXXXXXXXXXXXXXXbXXXXXbXbbXXbXbXbXbXbXXbXX      Thhh•¹•¹•hhÁhÁhÁhÁhhh••hÁ¹•h•¹•h•¹Á•¹•hhhhÁhÁhÁh•h•hhh¹•¹Á•Áhhhhhhhh¹•¹•hhhhÁ•¹•h¹•hh•hÁhÁ¹•h¹•¾hhÁhÁhhÁ•¹•Áhh¾¹•hÁhhhhhhhh•Á¹•hh•¹•hhÁhÁhÁhÁ„¹•hhh¹•Á•¹•hhhhhÁhhh•h¹Á•ÁhÁhhhhh¹•hÁ•ÁhhhhhhhÁ•¹•¹••Ác                                                                                               cghhÁÁÄÄÄÍÍÍÍÑÍÍÍÍÑÑÑÑÏÑÑÍÑÍÑÑÑÑÑððÑðððóðððóóðòðóóóóóóóúúüóðóðððððÑÑÑÍÍÍÍÍÄÍÄÄÄÁÁÄÄÁhhhhccccccXXXXTTTT             ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  ,,,            XbXXXbXXXXXbXXbXXXbXbXbXXXbXXXXXbXXXXXXXXbXbXXXXXbXbXXXXbXXbXXbXbXXbXbXbXXXbXbXXXXXXXbXbXXXXXbbbXbXbXbXXXXXbbbXbXXbXXbXXbXXbXXXbXbXXXTTTXbXbXXXXXXXbbbXXXXXXbXXbXXXbXXXbXXXX               X•¹Á•ÁhhÁhÁhhhh•¹Á¹•¹Á•hhÁh•¹Á„h•hÁhhhhhhÁhhhhhhÁ•••hhh•¹hhhhÁ•Áh•¹hÁhh•hh•hhhhÁ•¹•hhhhhh•¹hh•¹•hh•hhhÁ¹„•hhhhÁhÁhhhhhÁ¹••¹Áh••¹hÁhÁhh•¹•Á¹hÁùhhÁh•¹hÁh•¹hhÁh¾•hhhÁh•¹•¹Á¹•hhhhhhhhhh•¹Á¹Áh¾hhÁhÁ„M                                                                               0bchÁÁÄÄÄÍÑÍÍÑÑÑÍÍÑÍÑðÑÐÑÑÍÍÑÑðÑÑÑÑÑÑððóðððóððóðóðóüúóóüóóóðóóóðïðÑÑÑÑÑÍÑÍÍÄÄÄÄÄÁÄÁÁÁÁÁhhhccccXXXXXVTTTT                  ,, ,,,,,,,,,,,,,,,,,,,,,,,,,,            XXXXbXbXXXXXXbXbXXXXXbXXbXXbXbXXXXXbXbbXbXXXXXXXXXXXbXbXXXXbXbXXXbXXXXXXbXXXXXbXbbXbXbXXXXbbXXXXXXXXbXbXXXXXXXXXbXXbXXbXXbXXbXXXXTXXXbXXXXbXXXXXXbXbXXbXXbXXXbXbXbXbX        chhÁ•¹Á¹Âhhhhhh¹•¹••hÁh•¹•hhÁ¹•h•Á¹ÁhhhÁh¹•¹•hÁhhh¹ÁhÁh¾¹„¹•hhh••¹•hÁhhÁ¹••hhhhhhhhhhhÁhh•¹•hÁhhh¹••hhh¹•Áhhhh•¹•hhhÁhhhhh¹•hh•hÁ•hÁ¹Ã¾„¹•hhh¹•Áhhhh•hhÁhh•Á¹••hhÁhhhhhhÁhh•hÁÁÁhÁhhhhhhÁhhhh•Á•hÁhÁhhhhhc                                                                                                          chÁÁÃÄÄËÍÍÑÑÍÍÍðÑðÑÍÑÍÑÑÑÑÑÑðáÑÑðÑðððððïððóðóóðúóúóóóóüóóóüóóððòðóðÑÑÍÑÑÍÍÍÍÄÄÄÁÄÄÁÁhhhhhcccccXcXXXTTTT           ,,,,,,,,,,,,,,,,,,,,,,,    XXXXXXXXXXXXbXXTFFTXbXbXXbXXbbXbXXXXbXXXXbXXXbbbXXbXbXXbXXXXXXbXbbXbXXbbbbXXXXXbXbXXXXXXXXXXXXXXbXXbXXXXXbXbXbXXXTF"bXbXXXXbXXXXbXbXbXXbXXXbXXXXXXbXbXXXXXXXX                XhhÁhh••hh•¹hhh••hhhÁh•¹•h•¹h•hÁ¹h•hhhhh•Á•hhh•¹•Áhh•¹„¾hÁhh•¹Áhh•¹h•hÁh•¹h•¹h•¹hÁhh•¹hhÁhh•ÁhÁhù•hh•¹•¹•¹•hhÁhÁhh•¹••ÁhhhhÁhhÁhh•¹•¹h•¹••¹Á•¹hhhhhhhhÁ•¹•hhhhh•¹h•¹hhhhhhÁhhhhh•¹hÁhhhhhÁhhhhhhhÁhhhhhc                                                                                         0chÁ¾ÄÄÄÍÍÑÑÑÑÑÑÑðÑÑÑÑÑÑÑÑÑÑÑÑðÑðÑððððððáóðððóóðóóúóðóóüüóóóóóðóððððÑÑÑÍÑÍÍÍÄÄÄÁÄÁÁÁÁÁhhhhchccccXXXXXTT          ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,       FFFFHEXbXXbXbXXXbXbXXXbbXXXXXFFTbXXXXXXXXXXXXbXXXXXXXXXbXXXXXXXbXbXbXXTTTTbXXXbXXXXXbXXXbTFEVXXXXXXXbTF"TTXXTTTTTT"FTbXXXXX         bhhhhhhhhhhh••¹•h¹•¹•hhhhÁ¹••hhh•¹•hhh¹•hh¹•hhhÁ•¹•hhhÁ•¹•¹•hhÁh•¹•h¹••hhhÁhh•hhÁ¹••¹•hh•¹•hhÁhÁh¹•hgÁÁÁhhÁ•h•h¹Á•hhhhh•hhhhhhhhhhh¹•hh•¹••hh•hh•hh•Áh¹•hhhh¹•h¹•h¹•h•hh••¹Á•¹•hhhÁhhh••¹•ÁhhhhhhÁhh„¹Á•¹•hhX                                                                                                          b¹•ÄÁÄÍÄÍÑÑÑÑÑÑÑÑÑÑÑðÑðÑðÑÑÑÑÑÑðÑóðððïððòððóóðóóóóóðúüüóóüóóóððððïðÑðÑÑÍÍÍÄÄÄÄÄÄÄÁÁÁÄÁ¹hfghhbXcbXXXTTTTT      ,,,,,,,,,,,,,,,,,,,,,,,,             ETXXXXTFETbXXXbXXXFTTXXbbbbXXXbXXbXbXbXXXXbXbXXXXTFE"bXXXXbXbXXbXTFTXXXXbXTTXX           0chhhhhhhhh•¹Áhhh•hÁ•¹•¹„¾„h•¹h•¹Á••¹Á•hhh•h•¹hhÁh•¹•¹h•h•¹hhh•ÁhÁ•ÁhÁhhÁhhhhhÁh•Á•ÁhhhÁ•hh•¹hhh•hhhhhÁhhhÁhhÁ¹•hÁhhhhÁhhhh•¹hhhhhhh•h•¹•ÁhhhhhhÁhhhhh••hh¾hh•Á•¹•Áh•hhhh•¹h•Á•hhhhhhhhhh•hhhhÁhÁhÁh¹•Áh•¹hÁd                                                                                           MeÁÄÁÄÄÍÍÑððÑÑðÑÑÑÑÑÑðÑÑÑÑÑÑðÑÑðððÑðððððððóòððóóóóóóóóóüüóóóóðòðððáÑÑÑÍÍÍÑÍÍÍÄÄÄÄÄÄù••hhgcccccXXXXXXTT:TT"                 , ,,,,,,,,,,,,,,,,,,,,,                   FTTFTTXXbXXXXbXXbXXXXXbXXbTFXbXXXXXXbTTXXXXXT           bhÁhhÁh¹•¹•¹•Á¹•ÁhhhÁh¾„¹¹Á•hh•ÁhÁ•¹•ÁhhhhÁh•¹•Áhhh•hÁhhhh•¹•hhÁhhhhÁh¹•h¹•hhÁhhhÁhhÁhhhhhh•¹•hhhhhhhhhhÁhh•hhhhhh¹•¹•h¹•h•¹•Áh¹•hhh¹•hhÁ¹•hÁh¹•hh¹•hÁ„¹•hÁhÁ¹•Áhhh¹••h¹•¹Áhhhh•¹•hh¹•hhh¹•ÁhhhhÁ¾„¹•h•hhW                                                                                                         cÁÄÁÄÄÍÍÑðððóðÑÑÑðÑÑðÑÑÑÑÑðÑÑððÑóÑÑòóðððóóóðóðóóóüüóóóóüúóüóððóððïïÑÍÍÍÍÍÍÍÄÄÍÄÄÄÁÁÁ•hhhccdccXXXXXTXTXTT                     ,,,,,,,,,,,,,,,,,,, ,,                 FTTTXXXXXXXXXXXXXTFTXXXXXTXXXTF               chhÁ¹••h••¹„ÁhhhÁh•¹Á¹Áh¾•Áhhhhh•¹h•¹hÁ¹hhh•¹•hhhhhhhhh•¹Á¹„hhhhhÁ•¹Á•hh•hhhhhhhÁhhÁhh•¹hh•¹•hh•¹hÁhhhhhhhÁhhhÁ•¹••h•hh•hh•¹•Á¹•hhh•¹•hÁhh•Áhh•Áhhh•hÁ•¹hhhh•¹•hhhÁ•Áhh•h•hhh•¹h•hhh•Á•¹••¹hùÁ¹•¹hhhhhÁc                                                                                          McÁÁÄÄÍÍÑÑÑÑÑÑððÑÑÑðÑðÑðððÑÑðÑÑïÑððÑïÑððïóðóðóóðóðððóóðóóóóúóóðóóððáÑÑÑðÍÍÍÍÍÍÄÄÄÁĹhhhhhhgccccXXTXXTT"TT                  ,  ,,,,,,,,,,,,,,,,,  ,                    MdÁhÁ•„¹Áhh¹•Á¾hhÁhÁhh•Á•hÁhhÁ¹•hhh¹•hÁhh•Á•ÁhÁh¹•h¹•hhhhhhÁÁÁ¾hh¹•hhh•¹Á¹•hhhhÁhhhhhhhhh¹Á•¹•Á¹•h•hÁhÁh¹•hhhhhhhÁ¹•hhhhhhhhÁ•h•¹Á¹•hÁ•hhhÁhÁhhhÁhhÁhhÁh•¹•h¹•h•hhh¹ÁhÁ¹Áhhhhhhhh•hhhhÁhhÁ•¹•hhh•¹•Á•Áhh¹Á•hM                                                                                        gÁÁÄÄÍÍÐÑÑÑÑðÑððÑðÑÑÑðÑÑÑÑÑÑÑÑÑðÑðððïððóðððóðóðóóóóóóóóüóóóóóðóððïÑÑÑÑÑÍÍÍÍÍÄÄÄÁÄÁÁÁ•hhhhcccccXXXXXTTTTT                     ,,,,,,,,,,,,,,,,                              XhÁh•¹•hhÁh•¹hÁhhhhhhhÁhhÁ•¹h••¹hh•hhhh•¹•¹hhÁ•¹Á•ÁhÁh•¹hhhhhh•¹•¹••¹hh•h••hh•¹hhhhÁh•¹hÁ•Á•¹••¹h•hhhhÁhh•ÁhÁh•¹hhh•¹•hÁh•¹hÁhÁhhhh••¹•hhh•¹ÁhhhhhhhÁhhÁhhhhh•hh•hhhhhh••h•Á•hÁhÁhÁhhhh•¹hhhhhhhh•¹hhh•hh•¹•¹••hhhhX                                                                                          0hÁÁÄÍÍÍÑÑðÑðððÑððÑðÑÑðÑÑðÑÑÑÑÑÑÑÑÑïðáÑóððððððððüóüüóúüþüþüóóððóððÑÑÑÑÑÑÍÍÍÄÍÄÄÍÄÁÁÁÄÁÁÁhcdccbbcbXXXVTTTTTTT"                         ,,,,,,,,,,,                             chhÁhh¾„¾h¹•h•hhh¹•¹•hhhhhhÁ•hhh•hhhhhÁhhÁ•hhhÁ•hÁhhÁhh•Á¹•hhhÁ•„Á¹••hhhÁhhhhÁ•¹•¹•Áh•hhhh¹•¹Á•hÁhhh¹•h¹•hhhhh••¹•h•hhhhÁ•hhhÁhhhhhhÁ•hhhh•hh¹•hhhhhhh¹Âh¹•hhhhhhhÁh¹•¾¹•hhÁhhÁhhÁh¹•hÁ•¹•¹Á•hÁh•¹•hÁhhh•ÁhhhhÁc                                                                                                     gÁÄÄÄÍÍÍÑðððððÑÑððÑðÑðÑÑðÍÑÑÑðððððððððððóðóðóóðóóóóðóóüóóóóóðóððððÑÑÑÑÑÍÍÑÍÄÄÄÄÄÄÁÁÁÁhhhhhccccbXXXXXTTTTTT                 ,,,,,,,,,,,,,,,,,,, ,                        Mchh•¹•¹•¹„•hhhhhÁ••hhÁhhÁhÁhhhhhhÁhhhh•¹•¹h•¹hhhhhhhhh•¹•¹••¹hhh•¹ÁhÁh•¹hhh•¹hh•¹•Á•hhhhÁh•¹Ã¹h•hhh•¹••hh•hhhhhhhhhÁhhh•¹hhh•¹h•¹Á•¹hhh•¹hhhhhÁ•hhhhÁhhÁ•Á••¹hhÁ•¹hhh••¹„hhh•¹h•¹•¹•hhh•¹„Á„hhÁhÁ¹•hhhhhhhhhhÁhÁhhW                                                                                               gÁÁÄÍÄÍÑÑóÑððÑððÑððððÑÑÑÑÑÑÑÑÑðððáðððóóððððóóóðóóóóóóóóóóóóðòððððððÑÑÍÍÍÍÍÍÍÍÄÄÄÄÁÁÁÁhhhhchcccbXXXTXTTTTTTTT"                 ,,,,,,,,,,,,,,                             chh„¹Á•h•h¹•hhh¹•hh¹•¹•hhhhhÁhh¹•hÁ¹Ãh¾hhÁh•hh•hhhhhhhhhÁhhhÁ•hhh¹•¾„Áhhh•¹•h¹•hÁhh¹•h•hhÁ•hhh¹•Á¹•ÁhhhhhhhhÁhÁhÁhh•¹•h•hh•hÁ•¹•h•hh¹•hhhhh¹•hhhhhÁ¹h•Á¹Á••¹•¾h•hhhhh•hh•„¹•hh¹•Á¹•¹•hhhÁ•¹•hh¹•hhhhhhhÁc                                                                                                           MgÁÄÄÍÍÑÑÑðÑÑððððÑðÑÑÑÑðÑÑÑðððÑÑÑÑÑïòðððÑððððòóðóóóóüóóóüóóóóóóóðððÑÑÑÑÑÑÑÄÍÍÄÄÄÁÁÁÁÁhhÁhhccccbXbXXXTTXTTTTTTT                   ,,,,,,,,,,,,, ,,,,                              cÁ¹•hhhh•¹•h•¹••hhÁh•hÁhh•¹hhhÁ•hhh•ÁhhhhÁhhhhÁ¹hÁhhh¾hhÁhÁ•¹hh•¹•¹•h•¹•¹Áhhh•¹h•¹•hhÁhÁ•hh•¹hhhhh••¹h•hhhh•¹•¹ÁhhhhhhÁh•¹•hÁhhhhhh•¹•hh•¹••hhh¹•Á•¹•¹„¾Á•¹•¹•ÁhhhhÁh•¹hÁhhÁh•¹•¹ÁhÁ••¹h•¾hhh•¹hh•Á¹••¹•¹hhhhhhhT                                                                                                 0gÁÄÄÄÍÍÑÑðððóÑðÑÑóðÑÑÑðÑÑÑÑðÑðÑððÑïðóððððòðóðóðúðóóóóóüüóóóóððòððÑðÑÑÑÑÍÍÍÍÄÄÄÄÄÄÄÁÁÁhhhhhcccbbXXXTXTTTTT               ,,,,,,,,,,,,,,,,,                                Xhhh•hhhÁhh¾hh¹•hhÁhhhhh¹ÂÁhhÁhhhhhhÁhhhhÁhhhÁ•h¹•hh„Á¹•hhh•¹•Áh•h¹•hh•hÁhh¹••¹•ÁÁhhhÁhhhhh•¹•hh¹•hh•ÁhhhhhhÁ•Á•h¹•hhÁhhh¹Áhh¹•h¹•Á¹•hh¹•hhhÁ•¹•hhÁ•¹•¹Á¹•h•hÁhhhhÁh•hÁhhhhhhÁÁhhhhh•hÁh¹•h¹••h¹•Á•¹•h••ÁÁ¹•ÁX                                                                                                     hÁÁÍÍÄÍÍÑðóÑÑÑÑÑÑðïÑðððÑððÑÑÑÑððÑðððóÑðóóóóóðððóóóóóóüüüüóüüóðððÑÑððÑÑÑÍÍÍÄÄÍÄÄÄÄÄÁÁÁhhhhchccbbbXXXTTTT"TT:T                      ,,,,,,,,,,,                                     XhhhhÁh•¹•¹„hÁÁh•¹hhhh•¹•hÁhhhhh•¹hhhhhhhhh•¹•hhh•hh•¹h•hhhhh•hhhÁ•¹•hhhhhhh•Áhhh•¹•¹hhhhh•¹h•¹•¹•hhhÁh•¹h•¹hhhhh••¹hhÁhÁÁ•Áh••¹Áh•¹•h•¹Á„h•¹h•¹hh•¹hÁ•h••¹•hhhhhhhhhhhhhhhhhhh•¹hhhhhhhh•¹„Áhh•hhh••¹hÁhÁ¹¹•¹•hhhh                                                                                                  MgÁÄÄÄÍÍÑÑðððððððÑðÑðÑÑÍÑðÑðÑÑÑÑóÑððððððððððóóóóóóóóóóóóóóüóóóðððððÑÑÑÑÑÍÍÍÍÍÄÍÄÁÄÁÁÁÁhhhchcccbXXXXXXTTT"TTTT                  , ,,,,,,,,,,,,,,,,,,                                        chhhhhhÁh•h¹•Áhhh•Áhh¹•Á¹•hhhhh¹•hÁ•¹•hhhhhhh•h¹•hhhhh•hhhhÁhhhhhhhh¾„¹ÂhhhÁhh¹•hh••Áhh¹•h•hh•¹••Á¹•hhhhh•hhÁÁhhhhhhh•ÁhhhhÁhhÁhh•hÁÁh¹•h•Á¹•h•Áh•¹•Áh•hhhhhh•hÁhhhhhhhhhhhh¹•¹•h¹••hhhhÁh¹•h¾„¹•hhhÁhh•Áhhhh•h•h•ÁhhhX                                                                                                          gÁÄÄÍÍÍÑÑðÑðÑðððÑðÑÑðÑÑÑðÑÑÑÑððððÑðòïððððóðòðóóóóóóóóóóüóóüðóðððððÑÑÑÑÍÍÑÑÍÄÄÄÄÄÄÁÁÁhÁhhhhccbcXbXXTXTTTTTTT"                ,,,,,,,,,,,,,,,,,,, ,                                             XhÁhhhhhhhÁÁhhhhÁhh•¹•Áh•hhh•¹•Áhhh•ÁhhÁhÁhhÁhÁ••¹hhhÁhh•¹h•¹hÁhÁh•¹•¹„¾Á¹hh•¹Á•ÁhÁhhÁh•Áhhhhh•h•¹h•hh•¹hhÁ¹hh•¹•¹hhhhhhhÁhhhhhh•¹hhhhÁÁhg•¹Áhhhhh•Áhhh•¹hhhÁhhhhÁhhÁhùhÁ•ÁÁ•hhhÁhh•¹•¹••¹Áh¹hhhhhÁh•¹hhÁhÁhÁhhÁhhhÁc-                                                                                                  MhÁÄÄÍÍÍÑðÑÑðððððÑÑðÑððððÑÑÑÑÑÑÑðÑïðïÑðóððððððóððóóóóóóóüóóóóóóððððÑðÑÑÍÍÍÍÍÍÍÄÄÄÁÄÁÁÁhchhcccccbbXXXVTT:TT:TTTT                   , ,, ,,,,,,,,,,,,,,,,,,  ,                                                                XhhhÁh¾„¹ÁhhÁhhhhhhhh•Áhhhhhh¹•ÁÁhhhhhhhhÁhhhÁhhÁh•hhhhh¹••hh•ÁhhhhhÁ¹•hÁ•¹•Á¹•hhÁhhhhÁhhh¹•hhh•hhhhh•¹••¹•Áh•Á•¹•h¹•hhhhhhhhÁ•hhhÁhhÁhh•¹•hhhhÁhhhhhh•Á¹•hhhh¹•hhÁh•hÁhhÁ¹•hhhhhhh•Á¹Á••hh•¾„¹•¹•Áhh•hÁhhhhhÁhhhhhhT                                                                                 gÁÄÄÍÄÑÑÑÑðððððÑÑÑðððÑÑðÍðÑÑÑÑïáïððÑóðððððóðóóóóóóóúóóüüóóóóðóððððÑÑÑÑÑÑÍÍÍÄÄÄÄÄÁÁÁÁÁÁhhhchccbbXXXTTXTTTTT                 ,,,,,,,,,,,,,,   ,                                                               c•¹„h•¹•hhÁhhhhhhÁhhÁhhh•¹•h•¹hÁhh•¹„¾hhùhhÁhhhhhhhhh•hhhhhhhhhÁ¹•¹hÁhhh•¹hh¾„hhhh•¹hÁh•¹•hhhhhh•¹hh•¹•hÁhhhÁ¹hh•hÁ•hÁhh•¹•¹hhhhhhhh•Á¹„¾•¹ÁhhÁhh•¹h•¹•¹•hÁ•¹••¹hhÁhhhÁhh•hhhhhhhh•¹h•hhhhÁh•¹•Áhhhhhhhhhhhhh•¹hÁhhÁd                                                                                                  MgÄÁÄÍÍÑÑÑððððððÑÑÑÑðÑÑÑðÑÑÑÑÑÑïÑñïïðóðððððóðóðóüóðóüóóüüüóðóóðóððÑðÑÑÑÑÍÍÍÍÍÄÄÄÄÄÄÁÁÁÁhhhcdccbXbXXXTTXTT:TTT                         , ,,,,,,,,,,,,                                                                       Xhhh¾¹•Á¹Á•hhÁh¹•¹Á•¹•hhhh•¹•hh•hÁhhhÁ¹•ÁhÁ•hhhhhhh¹•Áhhhhh¹•hhhhÁ•Á•Áhh¹•„¾Áhh¹•hhhh•Áhhh•Á¹•h¹•h¹••¹•h•¹•Áhhh•Á•hhhÁhhhh¹•••¹•hÁ¹ÁhhÁ¹•¹••Áhhhhhh•hh¾„hhÁh•¹ÁÁ•ÁhÁh¹•hhhhh¹•Áh¹•h•hhhhhhÁhhhÁ¹•hhhhÁhh¹•hh¹••Áhhhh                                                                                  hÄÄÍÄÄÍÑÑðððððÑðÑóðÑÑÑÑÑÑÑÑðÑðÑÑðïðÑðððððóðóóóóóðóóóóüüóóóóúóóðððÑÑÑÑÑÑÍÍÍÄÄÍÄÄÄÁÁÁÁÁhhhcdcccbXXXXXXTTTTTT              ,,,,,,,,,,                                                                          chÁ¹•Á„h•hhhhÁhÁÁ••hÁh•¹h•¹ÁhhÁhhhhÁ•¹•hÁÁhÁ•¹Á•¹•Á•¹•Á¹••¹hhÁhÁ¹hhhÁ•hhÁÁhh••¹ÁhhhÁhhhhÁ•hÁ•hh•h•¹„Á•¹hhhÁhhÁ•¹hhÁ•¹hÁ••¹Á•¹•Áhh••h•¹Á••hhhhhÁhhhhh•¹Â¹hÁhhhhÁ•hhhÁhÁ•ÁhhÁhhÁ¹•ÁhhhhhhhÁhÁh•¹•ÁhhhhÁ•¹••ÁhÁ•hhÁ•¹hhhX                                                                                              gÁÄÄÍÍÍÑÑððððÑððÑðÑÑÑÑÑÑðÑÑðÍðÑÑðáðððððððððóóóóðóóóóóüüóóüúðóðððððÑðÑÑÍÍÍÍÍÄÄÄÄÁÄÁÁÁhhÁhhgcccbcXXXVXTTT"TT                            ,, ,,,,,,,,,,,,,,,                                                             TdÁh•h¹ÁhÁhÁh¹•hÁhh¹•hhhÁ•hÁ•Á¹Áhhhhhhhh•hh¹•¹•hh•Áh•¹•hÁhÁ•Á¹••¹ÃhÁÁ•hhÁ¹•¾hhhhÁhÁhÁhÁhhh¹•¹•hhhhÁhhhh¾hÁ„ÁÁ¹•ÁhhhÁ•hhhÁ•¹•hhÁhh¹ÁhÁhÁh•hhÁhhh¹•hhÁ¹•ÁhÁÁ•¹•hhhhh¹•hhhhhh¹Á•hhhhÁ¹•hhÁhÁh¹•ÁhÁÁh•hÁhhÁ¹•hÁhÁhÁhÁhhh•Ác                                                                                    0gÁÁÄÄÍÍÑðððððÑððÑÑÑðÑÑðÑóÑÑðÐÑðÑððïððÑðóóððððóóðóüóóóüóüóóóððóððÑïáïÑðÑÍÍÄÄÍÍÄÁÄÁÁÄÁÁÁhhhchccbcbbXXTTTTTT:T                   ,,,,,,,,,,,,,                                                                     bhÁhhÁÁhÁhÁ•hhÁhÁ•hÁhhhhÁhhhÁùÁ„¾hhhhhh•ÁhhÁhÁ•¹hhhÁ¹Á•¹••¹ÁÁhhÁhhÁ¹•ÁhhÁhhÁhhÁÁhhhÁ•Á•hÁ•¹hhhhÁ¹Áhh•¹Á•hÁhÁhhhhÁhÁhÁ„hhÁÁhÁ¾„•hÁhÁhhhhÁhÁ•Á•¹•Áhh•¹hÁ••¹hhhh•hhhhh•¹Á•Áh•¹hh•ÁhÁh•¹Á•ÁhhÁhhÁhhÁh•Á•¹ÁhhÁhÁhhhÁ•Á¹hÁÁ\                                                                                        MhÄÄÄÄÍÍÍðððÑÑÑððÑðÑððÑÑÑðÑÑÑÑðÑïððððÑððóððóðóðóóüóóðóóóüóóüóóóðóððÑÑÑÑÍÑÍÍÍÍÄÄÄÄÄÄÁÁÁhhhdhcccbXXXXXTTTTTTTTTTT"                        ,  ,,,,,,,,,,,,,,                                                            c¹•hÁhÁÁ¹•hh¹•¹ÁhhhhÁhhhÁhÁhÁhhÁhÁ•h¹•h¹•h¹Áhh¹•hÁhhÁ•Á¹•hÁ•ÁhhÁ•hÁh¹Ãh•hhÁhhhhhhh¹Á•¹•hÁhÁ¹ÁhÁhÁ•ÁhÁ••h¹•hÁ¹•hÁhhhhÁhhhÁhh¹Á¹•ÁhÁÁ¹•hhhhhÁhhh¹Á¹•hÁÁÁhÁhhÁ•¾¹••h¹•hhÁh¹•h•ÁhhÁhÁ•¹•ÁhÁhh•Á¹•ÁhhhÁhhhhhÁhhh•hhhhÁhhhhÁhÁ•Áhc                                                                                                   hÄÄÄÍÍÍÑÑðÑððÑðÑÑðððÑÑÑÑðÑÑÑÑÑðáððððÑóðóððððòðóðóóóóóóüüóóóóóðóððÑÑÑÑÑÍÑÍÍÍÍÄÄÄÁÄÄÁÁÁhhchhcccbXXXXTTTVTTTTT                      ,,,,,,,,,,,,,,,                                                                      Xhhhhhhh•hhh•h•ÁhhhhÁhÁhÁhhhhhhÁhÁhh•hh•hh••hÁ•hhhhhhhh•hÁhÁhhùÁhh•¹Á•hhÁ•¹Á„h•¹hhh•Á„h•hhhÁh•ÁhÁhÁhÁhÁhhh•hhÁ¹•hÁ•¹•¹hhhhhhhhÁÁ•hhh•¹hhh•¹hÁhhh••hÁhÁhhhhhhÁhÁ„•¹•¹•hh•¹•Áhhhhhhh•¹hÁhÁhhÁhÁ•hhhÁhhhùhÁhhhhhhhhÁhh•¹hhÁhhhhÁhM                                                                           McÁÁÄÍÍÍÑðÑÑÑðððððððÑððÑÑððÑÑðÑÑïðððððòðóòðóðóóóóóóóüüóüþüóóóóóðððÑÑðÑÑÑÍÍÍÍÍÄÄÄÁÄÁÁÁhhhhcghcccXXXXXXTTTTTT"T                      ,,,,,,,,,,,,                                                                            XhhhhhhhhhhÁÁhÁhÁhÁÁhhÁhh¹•hhhhhhÁhhÁhhhÁhÁhÁhÁhÁhhh¹•hhÁhhhhhhhÁ•¹•hÁ•Áhh¹•¹•¹••Á¹•h¹•hhÁhÁhhhhhÁhhhhhÁh¹ÁhÁh•hhÁhÁ••¹•Áhhhhh¹•hhhhh•¹•ÁÁhÁ•ÁhÁÁhhÁhhhhhhh¹•hÁhhÁ¾ÁhÁhÁÁhÁh¹•¹•h•ÁhhhhhhhÁhhhhÁhÁhhh•¹•¹•hhÁhhhhhh•ÁhÁhhhhhc                                                                                      0hÁÄÄÍÄÍÑÑððððððððÑÑððÑïÑðÍÑÑðÑÑÑðððÑððððððððóóóóóðóóóóóóüüóðóóðððÑððÑÍÍÍÍÍÍÍÄÄÄÄÁÄÁÁÁhhhhcccccXbXXXTTTTTTTTT                         ,,,,,,,,                                                                            chhùhhhhhhÁhhhÁhÁÁhh•¹•h•¹ÁhhhhÁhhhhÁhÁÁhÁhhÁh•¹••¹hÁhÁÁhÁh•¹ÁhÁ•¹¹•Á•¹•¾•¹Á¹•hÁhhÁÁhÁhhhhhh•Á¹hhÁh••hÁhhÁhh•¹hhh•hÁhÁhh•ÁhhÁhhhh•hhÁhhhÁhÁÁhhhhhhhhhÁ•hhhÁ•¹•¹ÁhÁÁhÁ•¹Áhh••hh•¹ÁhÁ¹ÁhhhhÁhÁh•¹hhÁ•¹•h•hhÁ•¹hÁhhhÁÁhÁhhhhhhc-                                                                                   MhÁÁÄÍÍÍÍðÑðððÑÑðÑÑðÑðÑÑÑÑÑÑÑðÑÑÑÑðððÑððððóòððóóðóóóóóóóóüüóóóóóðððÑðÑÑÍÍÍÍÄÍÄÄÄÄÁÄÄÁÁÁhhhdcccccbXXTXTTTTT:T                       ,,,,,,,,,,                                                                              X„Á¹•h•Á¹Ãh¹•ÁhhÁhÁhÁhhÁÁhhÁ•ÁhhÁhhÁhh¹ÂhhÁhÁhhÁhh•¹•hÁhÁhhÁhÁÁh•¹•hÁh•hÁ¹••hÁ¹••Á•hÁ¹•hÁhhhh¹ÃhÁhhh••¹•hÁhhhhhÁh¹••h¹•hÁhhÁhÁhÁhhhh¹ÃhÁhhhÁhhÁhÁhÁhhÁhh•Á¹ÁhhÁhhÁ•„ÁhhÁhÁh•ÁhhhhhhÁhÁhhÁ•ÁÁh¹•hhÁhh•ÁhhÁ¹Áhhh¹•••Áh¹•Áhhhh¹ÃhÁhX                                                                                     gÁÁÄÄÍÍÑÑððððÑðððÑÑððÑÑÑððÑÑÑðÑÑÑððÑððððóóðóððóðóóóóóóóóóóóóððððððÑÑÑÍÍÑÍÍÄÄÍÄÄÁÁÁÁÁÁhhhhgccccbXXXXXTTTT:"TT"M                         ,  ,,,,,,,,,,,,,                                                       chÁÁ¹•¹•hh•hhhÁhhhhÁhhhÁhhhhhhhÁhh•¹•hhhhhÁ¹hhÁhÁhÁhhhÁhÁhhÁhÁh•hÁhhÁhhÁÁhÁh—¹¹ÁhÁh•hÁ•¹•¹•hhÁhÁhhhÁhÁhhÁhhÁh•ÁhhÁ•hÁ•¹hhhÁhh•¹Á•hhhhhhhhÁhhhhÁhhhÁ•¹h••hhÁh•¹•¹¹hhhhÁhhhÁhÁhÁhhhÁhÁhhÁÁ•hhÁhhÁhhhÁhÁÁÁhÁùÁhh•Áhh•¹•hhÁhÁd                                                                                                MgÁÄÄÄÍÍÑÑðððÑðÑðÑðÑÑÑÑÑÑðÑÑÑÑðððÑððððððòðððóóóóóóóüóóóüóóóúóóóðððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÄÄÁÁÁÁhhhhhccccXXXXXXTTT"TT"MT""                    ,,,,,,,,,,,,                                                         MchhÁh¾Á•ÁhhÁhhhÁhhhhhÁhhhhhhÁhÁhÁÁhh•¹•hÁhhhÁùÁ•ÁhhhhhhhhhhhhhhhhÁhhhhhh¹•¹•hÁ•ÁÁh¹•Áhhh•„¹•hhhhhhhÁhhhhhhÁhhhhÁhÁhhhhh•Áh¹•hhÁ•¹•ÁhÁhhÁ¹•hÁh¹•hhÁh¹•h•h¾hÁhÁÁh¾•¹•Á•¹•ÁÁhhÁhÁhhhhhhhhhh¹•¹•hhÁhhhh¹•hhhh¹ÁhhhÁ¾„Áhhhhh•¹•hhhhhW                                                                              0gÁÄÄÍÍÍÑÑððÑÑððððððÑÑÑðÑÑÑÑÑÑÑðóÑðððóðððïðóóóóóðóóüóóóüóúóüóóóððððÑÑÑÑÑÑÍÍÍÄÄÄÄÄÄÁÁÁÁhhhhhcccXXXXXXTTTTTTMT:T"T                  ,,,,,,,,,,,,                                                                            Xhhh•¹„hhhhhhh•¹„¾hhhhÁhhhùhÁhhhÁÁh•¹hh•¹h•¹h•hÁhhhhÁhhhÁhÁ•¹hÁhhhÁhhh•Áh•hhh•¹hhh•Áhh•¹•¹ÁhÁhÁ„Á¾hhhhhÁhh•¹ÁhhhhhhÁÁhÁhhÁ••¹•¹h•¹hh•¹•h•¹•h•¹Á•hÁhhÁhhhÁÁ•¹„h•h•¹hh•¹hhhÁ•¹hhÁhhhÁ•ÁÁhÁ•¹Á¹•hÁhhh••hh•¹•¹Áh•¹h•¹ÁhÁhÁhÁhc                                                                                        MhÁÄÄÍÍÍÑðÑðððððÑððÑÑðÑÑÑÑÑÑðÍïÑÑÑðïðÑðóóðóðóïóóðóóóóúóüüóóüðóðððððÑðÑÍÑÍÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhdccccccXXTXTTTTT""TT                           ,,,,,,,,,,,                                                              dhhhhhh¾„Á¹•h¹•h¹•hÁÁhÁhhÁh•¹•hÁhhhÁ•Á¹•h•¹•h•Á¹•ÁhÁhhÁ¹•hÁhhÁ•hÁhhÁhh¹•hÁhÁhh¹••hhhhÁhhhÁÁ¹•ÁhÁ¹Á„¹•h¹ÁÁhh•¹•ÁhhÁhÁhhÁhhhh•„¾¹••Áhh•¹•hh•¹•hÁ•Á¹•¾„¹•¹•hÁhhhÁÁ¹•h•¹•hhÁ•¹ÁhÁ••¹Á•hhÁhhÁ¹•Áh•Á•„¹•hÁhÁhhhhhh•h•Áhh•hh•Á¹•ÁhÁhÁh                                                                                   0hÁÄÄÍÍÍÑðÑððÑððÑððÑÑðÑÑÑÑðÑÑÑÑÑðððððððóðóððððóððóóóóóüóüüüüóððððóðÑÑÑÑÑÍÍÍÄÄÄÄÄÄÁÁÁÁhhÁhcccccXcXXXXTXTTT:TT                    ,,,,,,,,,,                                                                                        MhhÁhhÁ•¹h•¹Áh•¹•hÁhhhÁ¾hhh•¹ÁÁhhhhÁÁ¹Á„¾•ÁhÁhÁ•hÁh¾Â¹Áh•hÁhÁhhhhùhhhÁÁhhhÁhhÁ•hhhÁhÁhhh•¹Á¹Á•Á•¹•ÁÁÁ•¹••Áhh•¹•hhhhÁhÁhhhhhÁ•¹Á¹•Áhhh•¹Áhh•¹ÁhhhÁ••¹hh•ÁÁhhhhÁùÁ„¾•ÁhÁhÁh•ÁhÁÁhÁ•hhÁhÁhh•hÁhh•¹ÁÁhhhÁhhÁ•¹hhÁhÁ¹hhhhÁhÁ•ÁhhÁhÁÁhX                                                                                  MhÁÁÄÄÍÑÑÑððÑððÑðÑðÑððÑððÑÑÑÑðÑÑððððððòððððóðóóóóóóóóóóóóüóúóóððððððÑÑÍÑÑÍÍÍÍÍÄÄÄÄÁÁÁhhhhhhcccbXXXXXTTT""TTTTTT                          ,,,,,,                                                            bhÁhÁhhhÁ•hÁ•h¾ÁhÁ•hÁhÁhh„Á¹Á•Áhh¹•hh••Á¹Á¹Á•¾ÁhÁhhhhhÁ•Áh¹ÁhhhhhÁhhÁ•¹Ã¹ÃhhÁhÁhÁhhhÁhhÁhÁÁ••Áhhhhh¹Á¹•ÁhÁhhhÁhh¹•hhÁhÁhhÁ¹•¹•Áh•¹•ÁhhÁ•¹•ÁhÁ•¹ÁÁhhhÁ•ÁhhÁhh¹•hhh•Á¹Á¹Á•ÁhhÁhhhhhÁhÁhhÁhhhhhÁhhÁhhÁ•hÁhhÁhÁ¹••¹Á•hÁ•ÁÁhhÁhhhhhÁhhhc                                                                                 gÁÁÄÍÍÑÑÑðÑðððððÑÑðÑðÑÑÑÑÑÑððÑðáðððÑðððóððóðòðóóóóóúóóóóóóóóóðóðððïÑÑÑÑÍÍÍÍÄÄÄÄÄÄÁÁÁÁÁhhhcccccXcXXXTVTTMTT                          ,,,,,,,,                                                                                   0cÁhhÁhhhhhÁhÁ„ÁhÁhÁÁhÁ•Á¹Á•Á•¹Á•ÁÁhhhhhÁ•Á•hhÁhhÁhÁhÁhÁhÁ•Á•hÁ¾hÁhhhÁ¾hÁhhÁÁhÁhhhhÁ•¹hhhÁhhÁhhhhhÁ¾„•ÁhhhÁh•Á¹hhÁÁhÁhhÁhhÁ•Á•hÁ•¹Á•hhhhÁhÁ•Á¹ÁÁùÁhÁhÁhÁhhÁhÁÁhhhhhÁ•Á•hhÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhhhÁhhhÁÁhÁ•h•¹Á•hhhhÁhhÁhhh•¹hhhÁhhhW                                                                                                  hÁÄÄÍÍÍÑÑðÑðÑðððÑÑÑðÑðÑÑÑÑÑððÑïïÑððÑÑðððððððóóóóóóóüóóüóóóüóóóððððÑÑÑÍÑÍÍÍÍÍÄÄÄÄÄÁÁÄÁhhhhhhcccbXXXXTXT""TTTTT                              ,  ,,,,,,,,,                                                                 ThhhÁhÁh¹•hhÁhh¹Á¹•hÁhhhÁ•hÁhhÁhÁ•hÁhÁhhhÁhhhhÁhÁhhhÁhhÁhhhhÁÁ„ÁÁhhÁh„Á¹ÁÁhhÁÁhhh¹•hÁh••¹ÁhhhhhhhÁÁÁhÁhhÁhhhhÁÁ•ÁhÁÁhhhÁÁhhhÁÁÁÁ¹•Á•ÁhhhhhÁhhhÁ•h¹•Á•h¹ÂhhÁhhhÁhÁ•hÁhÁhhhÁhhhhÁhÁhhhÁhhÁhhhhÁÁhÁÁh¹Á•¹ÁhÁhh¾ÁÁhhhhh•ÁhhhhÁhh¹•h¹•ÁÁÁ•¹Á•¹c                                                                             MgÄÄÍÍÍÍÍÑðððÑðððððððÑÑÑÑðÑÑÑÑÑðÑÑðÑððòððóóðóóóóðóóóóóüüóüóüðóðððððÑðÑÑÍÍÍÍÍÄÄÄÄÄÁÁÁÁÁhhhccccXcbbXXXTTTTTTT:"                    ,,,,,,MMM0-M0MLM0LM000-M-M0MLM-M-M-M0LM-M0-M0-M-M0LMMLM0-M00-M-M00-M0MLM-M000000000LM000MLM000-M000-M0000-M0-M-M000000-M0MLM000-M-M00000-M0-M00000000-M0000000000000000MM000-M00000M00-M00000-M00-M00000000000000000000M00000000000000M000000000000000-000000000000000-M00000MM0000M00M00000M000000000M00M00M000M000M00M00MM000MMM00M00M0M0000000000000M000000M00-M0000M00M0000-000M0000-00M0000MchÁÁhÁÁ„¾•Á¹•Áh•Áhhhhhhhhhh•¹ÁÁhÁhhÁ•¹hhhÁhÁhÁhhÁhhÁÁhhÁhÁhÁhÁ¹ÁhÁhÁ•¹Á••hÁÁhhÁh•ÁhhhÁhhÁ•hÁhÁhhÁÁhhhÁhh¹hhÁhhhhhhÁhÁhhÁhÁÁhÁhh•ÁÁhÁ•¹hÁhÁhhÁhhÁ•hhhh•hhhhhhÁÁhÁhhÁh•¹hhÁhÁhÁhhÁhhÁÁhhÁhÁhÁhÁhÁhÁ•Áh•ÁhhhÁÁhhÁhhÁhhhÁhhÁhhÁ•Áh•ÁÁhhÁÁÁÁ„hX000M0M00M000-0--0000-M0000M0000-0000M000M0-000M00M0M0M00-M0000-M0-M0M0000MM0M0MM00-0000000000000M0-0M0000000M00000M0MhÁÄÄÄÍÑÑðÑððÑÑðððÑðððÑðÑÑðÑÑÑðÑÑððððïðððïòðóóóóðóóðóóóóüóóóóóóððððÑÑÑÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhhhhccXXbXTXXTTTTT"TT0M00000000MM0000M00000000M000MM00000000000000-000000000000000-M000000M000000000000000000000000-M0000-M000000-M00000000-M00000000000000000MM000-M00000M0-M-M000000000LM00MLM000-M000-M0000-M0-M-M000000-M0MLM000-M-M00000-M0-M0000000000-M-M00-M-M000000-M0-M0LMMLM-M-M00-M-M-M-M-M0MLM-M-M-M-M0MLM-MMLM0LM-M-M-MMLM-M-M-M-M0LM-M00LM00LMMLM0MLMÁhh„¾ÁÁ¾hÁ„ÁÁÁÁh¹„ÁÁÁ¾hhÁÁÁhÁÁhÁÁ„ÁÁh¾Áh¾¹ÁhÁÁÁ„¹•ÁÁÁÁ¾ÁÁhhhÁh¾Áh¾hÁÁhÁ¾ÁÁÁ¹ÁhÁÁhÁÁh¹Áh„Á¹Á¹ÁÁh¹ÁhÁhÁ¹ÁÁh¾Áhhh¾ÁÁ¹Á¹ÁhÁ¾„ÁhÁ¹ÁÁÁh¾hhÁÁÁh¹ÁÁÁÁ¾¹Á¹•¹ÁÁÁhh¾ÁÁ¹ÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁÁhÁhÁÁÁh¾ÁÁhÁhÁhÁÁÁÁhÁÁh¾ÁÁÁÁhÁhÁÁh¾ÁhhÁh¾¹ÁÁ¹ÁÁh¹ÁhÁ¹ÁhÁÁhÁÁ¹•¹ÁÁÁhÁ¹•¹•¾Á¹ÁÁhÁÁÁhÁÁÁÁÁÁÁ¹ÁÁÁÁÁÁÁ¹•¾ÁÁÁ¹•¾ÁÁ¹ÁÁÁÁÁÁÁÁ¹ÂÁhÁhÁ¹ÁÁhhÁ¹ÁhÁÁÁÁÁÁ¹•¾¹ÁÁÁÁhÁÁh¾ÁÁÁhÁÁ¹ÁÁÁÁÁ„¹ÂhÁhÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁ„¹•ÁÁÁhÁ¹•ÁÁÁÁ¹Áh¹ÁÁÁhÁh„ÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁ¹•¾ÁÁ¹ÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁ¹ÁÁÁÁÁÁÁhÁÁÁhÁÁ„ÁÁÁÁ¹ÁÁÁÁÁ„ÁhÁÁ¹ÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁ¹Â¹ÂhÁÁÁÁÁÁÁ¹ÁÁÁÁÁÁhÁÁÁÁhÁ„¹Â¾ÁhÁ¹•ÁÁÂÁÁÁÁÁÁ¹ÂÁÁ„ÁÁÁÁ¹ÁÁÁhÁÁÁÁÁÁÁ¹ÂÁÁÁ„ÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁhÁÁÁ¹•ÁÁÁÁÁÁÁÁÁ„ÁÁÁhÁÁ¹Á„ÁÁÁhÁÁÁÁÁ¹Á„¹ÂÁÁÁÁÁÁÁÁÁÁhhhÁÁÁhÁ•ÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁ•¹•ÁÁhhÁ•ÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁÁÁÁÁ•ÁÁhÁÁÁÁhÁhhÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁhhhÁÁÁhÁhhÁÁÁ¹ÁÁhÁhÁhÁhhÁÁhÁhÁÁÁÁÁÁhhhÁÁÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhhhÁÁh¹ÁÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁh„ÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁhhhÁÁÁhÁ¹•ÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁ¹Ãh¹ÂÁÁÁÁ„ÁÁÁ¹ÃÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÂÁÁÁÁÁÁÁÁÁÁÁ¹ÂÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁ„¹•ÁÁÁÁÁÁ„ÁÁÁÁÁÁ¹ÂÁÁÁÁÁ„ÁÁÂÁhÁÁÁÁÁÁÁÁÁÁÂÁÁÁ„ÁÁÁÁÁÁÁÁÁÁÂÁÁÁ¹¹ÂÁÁÁÁhÁÁÁÂÁÁÁÁÁ„¹•ÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁÁÁÂÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁÁÁ¹•ÁÁÁÁÁÁÁÁÁÁÁ„Á¹ÂÁÁ„ÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁ„¹•ÁÁÂÁÁ„ÁÁ¹ÂÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁ„ÁÁÁÁÁÁÁÁ¹¹ÂÁÁÁÁÁÁ„¹ÂÁÁ„ÁÁÁÁÁÁÁ„Á„ÁÁÁÁÁÁ„¹ÂÁÁhÁÁhÁhÁ¹ÁhÁhÁÁ¹ÁhÁÁÁÂÁÁÁÁÁÁÁÁ¹•„ÁÁÁÁÁ„ÁÁÁÁÁÁhÁÁÁÁ¹ÂÁÁÁ„ÁÁÁÁÁÁÁ¹ÂÁÁÁÁÁÁÁÁ¹Á„ÁÁÁÁÁÁÁ¹ÁÁÁÁÁÁÁ„ÁÁhÁÁÁÄÍÍÑÑðÑððððÑÑðÑÑÑÑÑðÑðÑðÑÑðÑÑñðÑòÑððððóðóóððóóóóóóóóüüóóóóðóðððÑÑÑÑÍÑÍÍÍÍÄÄÄÄÁÁÁÁÁÁÁhhcchc^XXXXXTXTTTThÁÁÁ„Á¹ÁhÁÁ¹ÁÁÁ¹ÁhÁhÁÁÁÁÁÁÁhÁ¹ÁÁÁhÁ¹•ÁhÁÁ¹ÁhhÁÁÁhÁh„ÁÁÁÁÁÁÁÁÁÁÁ¹•¹ÁÁÁÁ¹•¾ÁÁ¹ÁÁÁÁÁÁÁÁ¹ÂÁhÁhÁ¹ÁÁhhÁ¹ÁhÁÁÁÁÁÁ¹•¾¹ÁÁÁÁhÁÁh¾ÁÁÁhÁÁ¹ÁÁÁÁÁhÁÁ¹ÁhÁÁhÁÁh¹ÁhÁhÁÁÁÁÁÁÁ¹•¹ÁÁÁ¹ÁhÁ¹ÁÁh¾¹ÁhÁÁÁh¾¹•¹ÁÁh¹ÁÁÁÁÁ¹Áh¹ÁÁÁÁhh¾ÁÁ¹ÁÁhÁÁÁÁÁ¹ÁÁhÁhÁhÁÁÁhÁhÁÁÁh¾ÁÁhÁhÁhÁÁÁÁhÁÁh¾ÁÁÁÁ¹ÁhÁÁhÁÁhhÁh„¹ÁÁ¹ÁÁh¹ÁhÁhÁ¹ÁÁh¾Áhhh¾ÁÁ¹Á¹ÁhÁ¾„ÁhÁ¹ÁÁÁh¾hhÁÁÁh¹ÁÁÁÁ¾¹Á¹•¾ÁÁÁ¹•ÁÁÁh¾ÁhÁÁ¾ÁÁ¹ÁÁhÁh¾¹ÁÁÁ„¾hÁÁÁÁÁ¾Á¹ÁÁhÁÁhÁ¹ÁÁhÁÁÁÁÁÁhÁÁh¹ÂÁhÁhÁ„ÁÁÁhÁÁhÁÁhhÁhÁÁÁhÁÁhhhÁÁÁhÁ¹•ÁÁhÁhÁ„¹ÁhÁhÁÁÁÁ„ÁhÁ¹ÁhhÁÁÁÁÁÁhÁhhÁhÁhhÁhÁÁ¹hÁ•¹Á„Á•ÁÁÁh¾„ÁhÁhÁhhÁÁÁÁhÁÁÁ•¹„ÁhÁhÁhÁÁÁ„ÁÁÁÁhÁhÁÁÁhhÁÁ•ÁÁÁÁhÁÁhÁÁhÁ„ÁhÁÁÁÁhÁ•ÁÁhÁhÁÁÁÁÁ„hhhÁÁÁÁhÁhÁÁhÁhhÂÁÁÁÁÁhÁ¹„ÁhÁ•hÁhÁÁhhÁhhÁhÁhÁÁÁhÁhÁhÁhÁ¹„ÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁhÁÁÁhÁhÁÁÁ¹•ÁÁ•ÁÁÁ•ÁhÁÁ„ÁhÁhÁ¹ÁÁÁÁÁhÁ•ÁÁÁhÁ„ÁÁÁhhhhhÁÁÁÁhÁÁ•ÁhÁhhÁÁÁÁÁÁhÁ„hÁhÁh„ÁhÁÁ¹hÁ•hÁhÁhÁÁÁhÁhÁÁÁÁhhÁÁÁÁhÁÂÁhhÁhÁhÁÁhÁhÁÁ•ÁÁÁhÁhÁÁÁhhÁÁhÁÁÁhÁhÁÁhÁhÁhÁhÁÁÁÁÁhÁ•ÁÁhhÁÁÁÁÁÁhhhÁ¹ÁÁÁÁÁhÁ¹Á„hÁÁÁÁÁÁ„Á•hÁhÁ•hÁÁhÁhhÁhhÁhÁhÁÁÁhÁhÁÁ„ÁhhhÁÁÁÁhÁÁÁ•¹ÁÁhÁ•Á„ÁÁ„Á¹ÁÁÁ•ÁhÁÁÁhhÁÁhÁÁÁhÁhÁÁ••¹ÁhÁhÁhÁÁÁÁhÁhÁÁhhÁÁÁÁÁÁhhhhÁÁÁ¹ÁÁhÁh¹„ÁÁÁÁÁÁ¹Áh•ÁhÁhÁhÁhÁhhÁhÁhÁ¹ÁÁÁÁÁhÁÁhÁhhhÁÁÁÁ¹ÁÁÁ„hÁÁhÁ•ÁhÁÁ„ÁhÁÁÁhÁhÁÁÁ•¹ÁÁhÁÁÁhÁ„ÁÁ„ÁhÁhÁhÁhÁÁÁÁhÁ„ÁÁ•¹ÁÁÁhÁÁ•¹h•ÁÁÁÁhÁÁhÁhÁhhÁÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁhhÁhhÁhÁhÁÁÁÁÁhÁhÁÁhhhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁÁhÁÁ•¹ÁÁhÁhhÁÁhÁÁÁhÁÁhÁhÁhÁhÁhÁhÁÁhÁÁÁhÁÁ•hÁÁÂÁÁhhhÁhÁÁÁÁhÁÁhÁÁÁhhÁÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁhhÁhhÁhÁhÁÁÁÁÁ•ÁhÁÁhhhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁÁhÁÁhhÁÁhÁ•¹ÁÁhÁÁÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁhÁ•ÁÁhhÁÁÁÁ¹h„ÁhÁÁÁÁÁÁÁhÁh¹ÁÁÁÁÁÁh¹hÁhÁ•ÁhÁhÁhh¹„ÁhÁhÁÁÁhÁhÁÁ¹Á„•¹ÁÁÁÁhÁÁ¹„ÁÁÁ¹Á„ÁÁÁÁhÁÁ¹ÁhÁÁÁhhÁÁhÁÁÁhÁhÁÁhÁhÁ„ÁhÁÁÁÁÁ„ÁhÁÁ¹hÁÁÁÁÁh•¹hhÁÁÁÁ¹ÁÁ¹Á„ÁÁhÁÁÁÁÁÁhÁhh¾„ÁhhÁhÁÁhhÁhhÁÁ•ÁÁÁhÁ„ÁÁhÁ•¹„ÁÁÁÁhÁÁÁ¹„Á¹ÁhÁÁhÁÁ„ÁhÁÁÁhÁhÁÁÁhhÁÁ„ÁÁÁhÁhÁÁhÁhÁ„ÁhÁ•ÁÁÁÁ„ÁhÁ–¹–¹ÁÁÁÁÁh•¹ÁhÁÁÁ„ÁÁ¹ÁhÁÁhÁÁÁÁÁ¹ÁhhÁ¹ÁÁhÁh¹hhÁ„ÁhÁhÁÁÁ„Á¹ÁhÁhÁ„hÁÁ„ÁhÁÁÁ„hÁÁ¹ÁhÁÁÁÁhÁ•ÁÁÁhhÁÁ„Á¹•ÁÁ¹ÁÁÁhÁhÁÁhÁ¹ÁhÁhÁhÁÁÁÁhÁhÁÁ¹„ÁÁÁÁÁ¹Á„ÁÁÁ„Á¹ÁÁhÁhÁhhÁÁÁÁÁÁh¹hÁ¹ÁhhÁhÁ¹„ÁhhÁhÁ¹ÁÁÁ„ÁhÁÁhÁhhhÁÁÁÁ„ùÁhhhÁ¹„ÁÁhÁhÁ•¹ÁÁÁhhÁÄÁÄÍÍÍÍðÑðððððÑðÑðÑÑðÑÑÑÑÑÑÑððÑïÑðóððððððððóððóóóóóóóóüóóóóóðóðððÑÑððÍÑÍÍÄÍÄÄÄÄÁÄÁÁhhhhcccccbbXXXTTTTTT"TTT„hÁÁÁ•hÁÁhÁÁÁ•ÁhÁÁhÁhÁhÁhÁhÁÁÁÁhÁ•ÁÁ•¹ÁÁÁÁÁÁhhhhÁ¹ÁÁ¹ÁÁhÁhÁ¹„ÁÁÁÁÁ–¹Á„hÁhÁh„ÁhÁÁ¹hÁ•hÁhÁhÁÁÁhÁhÁÁhÁÁhhÁÁÁÁhÁÂÁhhÁhÁhÁÁhÁhÁÁ•ÁÁÁhÁhÁÁÁ„hÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁ•ÁÁÁÁhÁhÁÁ„ÁhÁÁÁÁÁhhhhÁÁÁÁÁ•ÁÁhÁhhÁÁÁÁÁÁhÁ¹„ÁhÁ•hÁhÁÁhhÁ„hÁhÁhÁÁÁhÁhÁhÁhÁ¹„ÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁÁhÁhÁÁÁhÁhÁÁÁ¹„ÁÁ•ÁÁÁÁhÁÁhÁÁhÁ„ÁhÁÁÁÁhÁ•ÁÁhÁhÁÁÁÁÁ„hhhÁÁÁÁhÁhÁÁhÁhhÂÁÁÁÁÁhÁhhÁhÁ•¹ÁhÁÁ•¹„ÁhÁhÁhÂÁÁ„Á¹ÁÁhÁhhhÁÁÁùÁhÁhhÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁÁhÁhÁÁhÁÁÁhÁhÁÁÁhÁhhÁhÁhÁÁÁÁhÁ•ÁÁhhÁÁÁÁÁÁhhÁhhÁÁÁhÁÁ¹ÁÁÁÁhÁÁÁÁhÁÁhÁhÁhhhÁhÁÁhÁ•hÁh•hÁ¹•ÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁhhÁhÁhÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁh¹ÃÁÁhÁÁ¹ÃhÁ¹ÁhhÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁ„ÁÁÁhÁ•Á¹•hÁhÁÁhÁhÁhÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁhÁhÁhÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhÁhÁhÁÁhÁhÁ•ÁhhÁhÁhÁhÁÁ„ÁÁÁÁÁÁÁhhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁ¹Á„¹•ÁhÁÁhÁ•ÁhÁhÁhÁhÁÁÁhÁÁhÁÁ¹ÁhÁhÁ„ÁÁhhhÁhÁhÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhÁÁÁhÁÁhÁhÁhÁ¹•ÁhÁhÁhÁÁhÁÁÁÁÁÁ„Á¹•hÁÁÁhÁÁhÁÁÁÁ¹ÁÁÁÁÁÁÁ¹ÁhÁhhhÁhhÁhÁhÁhÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁ¹ÁhÁhÁ¹ÁhÁÁ•ÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁhÁÁ•ÁhÁhÁhhÁ„ÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁ•ÁhÁhhhÁhhÁhÁÁhÁ¹•ÁhÁ•ÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁ„¹•ÁhhÁhÁhÁhÁ¹ÁÁhÁÁÁhÁÁÁhÁÁÁÁ„ÁÁhÁhÁ¹ÁÁÁÁhÁhÁhÁhhÁhÁhÁ¹ÁÁ„ÁÁÁÁÁÁhÁ•hhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhhÁhÁÁhÁhÁhÁhhÁhhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhhÁhhÁÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁhÁÁhhÁÁÁhÁÁhÁhÁhÁhhÁhhÁÁhÁÁhÁÁÁÁÁÁÁh„¹•ÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁÁhÁÁhÁhhÁhÁÁhÁhÁhÁhhÁhhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhhÁhhÁÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁÁÁ¹ÁÁhhÁÁÁhÁÁhÁhÁhÁhhÁhÁhÁhÁÁhÁÁhÁÁÁÁ„¹•hÁÁÁhÁhÁÁÁÁÁ•ÁÁÁÁÁÁhÁÁ¹•hÁhhÁhÁhÁhÁÁhÁhÁÁÁhÁÁhÁÁÁ¹ÁÁ•ÁhÁÁhhhÁ¹ÂhÁ•ÁhÁhÁÁÁhÁÁ•ÁÁÁhÁÁÁÁhÁÁÁhhÁhÁÁÁÁhÁ¹ÁhÁ¹•ÁhÁ¹Á„ÁÁ•ÁÁhÁÁÁÁh•„hÁÁÁÁ•ÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁ¹•¹Á„ÁÁhÁhÁhÁhÁ¹ÁhÁÁÁhÁÁ¹ÁÁÁhÁÁ¹Á•ÁÁhh„ÁÁ•ÁhÁhÁÁ¹ÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhhÁhÁÁÁÁhÁ¹ÁhÁhhÁhÁ¹ÁhÁÁÁÁÁÁÁÁhÁh•ÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁhÁÁÁ¹ÃÁ„Á¹•ÁhÁÁ•h¹•ÁhÁhÁÁÁhÁÁ•ÁÁÁhÁÁ¹ÁÁÁhhhÁhhÁ•ÁhÁhÁhÁÁÁhÁÁhÁÁÁÁÁÁÁhÁ•ÁÁhhÁ„ÁÁÁÁ•ÁhÁhÁhhÁhÁhÁhÁÁ•ÁÁÁÁÁÁ•hhh¹ÁÁÁhÁ•ÁÁÁÁÁhÁÁÁÁhÁÁhÁÁ•„ÁhÁÁhÁhÁhÁhÁhÁ•ÁÁÁ¹ÁÁhÁÁÁhÁÁhÁhÁ¾Á•hÁhhÁ•ÁhÁÁÁhÁÁ•ÁÁÁhÁÄÁÄÍÍÍÑÑÑðððÑððÑðÑÑðÑÑÑðÍÑÑÑðÑÑÑðððóïðóððóðòóóóóóüüóúüüóóóóðóðððððÑÑÑÑÍÍÍÄÍÄÄÄÄÄÁÁÁhhhhchccccbbXXXTTTTT:TTTM"ThÁÁÁhÁÁÁÁhÁÁÁhhÁÁÁhÁÁhÁhÁhÁh„ÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁ•ÁÁhÁÁÁÁ•ÁÁÁÁÁÁ•Á¹Á•hhÁhÁÁhÁ•ÁhÁhÁhÁhÁÁÁhÁÁhÁÁhÁhÁhÁ„ÁÁhhhÁhÁhÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁ¹ÃÁÁÁÁÁhÁhÁhÁhhÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁ„ÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁ¹•hÁhÁÁhÁhÁhÁhÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhhhÁhÁhÁhÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁh¹ÃÁÁhÁÁ¹ÃhÁ¹ÁhhÁhÁhÁhÁÁhÁÁÁÁÁÁhÁhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁhÁhhhÁ•ÁÁhÁhÁÁhÁhÁhÁÁÁhÁÁ„ÁÁÁhÁÁhÁhÁÁÁhhÁhÁhÁhÁhÁhÁÁÁhÁÁ¹ÁÁÁÁhÁÁhÁhÁÁhhÁhÁhÁÁÁhhÁhÁhÁhÁhÁÁhÁÁhÁÁÁÁÁÁhÁhhhÁ¹Á•¹•Á„ÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁÁ¹ÁhhÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁhÁ„ÁÁÁhÁÁhÁÁhÁÁ•ÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁhhÁhÁhÁhÁÁhÁÁhÁÁÁhÁÁhÁÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁhhÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁhÁ„ÁÁhÁÁhhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁhÁhÁhhhÁhÁhÁÁÁhÁhÁÁÁ•ÁÁÁÁÁhÁhÁhÁhÁhÁhÁÁhhÁÁhÁhÁ•ÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁhÁhhhÁÁ•ÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁhÁhÁÁhhÁÁhÁhÁhÁÁÁhhÁÁÁÁÁÁÁÁÁÂÁÁÁÁÁ•ÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁhhhÁhÁ¹ÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁhÁÁ•ÁhhÁÁhhÁÁhÁhÁhÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁhÁÁhÁÁÁ•ÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁhhhÁhÁhÁÁhÁhÁÁÁÁhÁÁhÁÁÁhÁhÁhÁhhÁhÁÁÁhhÁÁhÁhhÁÁÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁhÁÁhÁhÁÁÁÁhÁÁhÁÁÁhÁhÁhÁhhÁhÁÁÁhhÁÁhÁhhÁÁÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁ•ÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhhÁhÁhÁhÁÁÁ¹ÁhÁÁÁ¹ÁÁhÁÁhÁÁÁhÁÁh¹ÁhÁhÁhÁÁhÁhÁ•ÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁ•ÁÁ•ÁÁÁÁhÁ•ÁÁhÁÁÁhÁÁÁÁÁÁÁ¾hÁhÁÁhhÁhÁhÁhÁÁÁhÁhÁÁÁhÁÁ•ÁÁÁhÁhhÁÁhÁhÁ•ÁhÁhÁÁhÁ•ÁhÁÁÁÁ•ÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁ•ÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁ•ÁÁhÁÁÁÁhÁ•ÁÁhÁÁÁÁhÁÁÁÁÁÁÁhhhÁÁ¹hÁ•ÁhÁhÁÁÁÁÁhÁÁÁ•ÁÁhÁÁÁÁÁhÁhÁÁÁhÁÁhhÁÁhÁhhÁÁÁÁh•ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁ•ÁhÁÁhhÁhÁhÁhÁÁÁÁÁhÁÁÁhÁÁ¹ÁÁÁhÁhÁhÁhÁhÁhÁÁhhÁÁ•ÁhÁhÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁÁÄÄÄÍÑÑÑððððÑÑðÑðÑððÑÑÑðÑÑÑÑÑðÑÑðïððððóóóóðóóóóðóóóóóüüüüúóóðððððÑÑÑÍÍÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhhhhcccbXXXVXTTTTTTTT"hÁhÁhÁÁhÁÁhhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁ„ÁhÁÁÁÁÁÁÁ•ÁÁhÁ„hhÁhÁhÁÁÁÁÁhÁÁÁ•ÁÁhÁÁÁhÁhÁhÁhÁhÁhÁÁhhÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁ„hÁÁ¹hÁhÁhÁhÁÁhÁÁhÁÁùÁÁhÁÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhÁhhÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁ•ÁÁÁÁhÁhÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁhhÁhÁhÁhÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁhÁhÁ•¹hÁhÁÁhhÁÁhÁhÁhÁÁÁhhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁcXc^cXdcXcXcXcXcXcXcXcXcXcXXcXcXcXcXcXcXcXcXcbc^cXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXccXcXcXcXccXcXcXcXcXcXcXccXcXXXcXcXXcXcXcXcXcXcXcXcXcXccXcXcXcXcbcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXccXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXcXcXcXccXcXcXcXc^ccXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXXcXXcXcXcXccXcXcXcXccXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXccXcXcXcXcXccXcXccXcXXcXcXXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXccXcXcXcXcXcXcXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXcebcXcbc^cXcXcXcXcXcXc\dXcXcXcXcXcXcXc\cXcXcXcXcXcXcXcXcXcXcXcXcXcXXcXcXcXccXcXcXcXcXcXcXcXcXcXccXccXcXcXcXcXXcXcbcXcXcXcXcXcXcXccXcXcXcXcXcXcXccXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXXcXccXXcXfXcXcXcXcXcXcXcXcXcXcXcbcXcXcXcbcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXccXcXccXcXcXcXcXcXcXcXcXcXc\cXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcchÁÁÄÍÑÍÑÑðÑÑððððÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑððððÑóðóðððóóðóóðóóóóóóüüóóóóóððððÑÑÑÍÑÑÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhhcccbXXXXXTTTTTTTTTcXcXcXcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXcXcXXcXcXcXc\dXcXcXcXccXcXcXcXc^cXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcbcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXXcXcXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcc^cXcXcXcXcXcXcXcXccXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXccXcXcXccXcXcXcXcXcXccXccXcXcXcXcXcXcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcÁÁÄÄÍÍÍÑÑððÑðððÑðÑððÑÑðÑÑÑðÑðÑÑÑðððÑððððððïóóóóóðóóüóóóóóóóóóóððððÑÑÑÑÍÑÍÍÍÄÍÄÄÄÄÁÄÁÁhhchchcccXXXXXXVT"TTTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXchÁÁÄÄÍÑÍðÑÑððððððÑÑÑðÑÑðÑðÑÑðÑðÑðððððððððððóðóóðóóóüóóóóóóóóðððððÑðÑÑÑÑÍÍÄÍÍÄÍÄÄÄÁÁÄÁÁhhchccccccXXTXTTTTTTTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXbXXXXXbXXbXXXXXXXXbXXXbXXXbXXXXbXbXbXXbXXXXXXXbXXXXXXXXbXXbXXbXbXbXbXbXbXXbXbXbXbXXbXXXbXbXbXbXbXbXbXbXXbXXXXXXXXbXXXXXXbXXbXXXXbXbXbXbXXXbXbXbXbXbXbXbXbXbXbXbXXXbXXXbXXXbXXXXbXXXXXXXbXXXXXbXbXXbXXbXbXXXbXXXXXXXXbXXbXbXXbXXbXXXXbXXXbXXXXXbXXbXXbXbXbXbXbXbXbXbXbXXXbXXbXXbXXXXXXXbXbXbXbXbXXXXbXXXbXXbXXXXbXXXXXXXbXXbXXXbXXXbXXXXXXXbXXbXXXbXXbXXXbXXXbXXbXXXXbXXbXXXXXXXXbXbXXXXXXXbXbXbXbXbXXbXXXXXbXbXXXXbXXXXbXXXbXbXbXXXbXXXbXXXbXXbXXXXXXXXbXXXXbXXXbXXXbXXbXbXbXbXbXXXbXbXbXbXXXbXXbXXbXXXbXXXXXXXbXXXXXXXXbXbXbXbXbXbXbXXbXXXXXbXXbXbXbXbXbXXXbXXXXXXbXXbXbXbXbXbXbXbXbXbXXbXXXbXbXXXbXbXbXXbXbXbXbXXXbXXXXXbXXXbXbXXXbXXbXXXbXXXXXXbXbXXbXXbXXbXbXbXbXXXbXXXXXXXbXXbXXbXbXXbXXXXXbXbXXbXbXXXbXbXbXbXXXXbXXXXXbXXbXXXbXXXbXXXbXXbXXXbXXXXXXXbXXXbXXXbXXXXXbXXXXXbXbXXXXX^XXXbXXbXXXXXXXXXXXXXXbXbXbXXbXbXbXXbXXXXXbXbXXbXbXbXbXbXbXbXXXXbXXXXXbXXbXXXbXXXbXXXbXXXbXXbXXXXbXXXbXbXXbXXbXXXbXXXXXXXbXXXXXXXXXXXbXXXXbXbXbXbXbXbXbXXbXXXbXXbXbXbXXbXbXXXbXXXbXXbXXXXbXXXXXbXbXbXbXXXbXXXXXbXXbXXXXXXXXXXbXbXbXbXbXXXbXXbXbXXbXXXXXXXXbXXXbXXbXXXXbXXXbXXbXbXXbXXXbXbXbXbXXXXXXbXbXbXbXXXXXXXbXXXbXXbXXbXXXXXbXXXXXbXbXbXbXbXbXbXbXbXbXbXXXbXXXbXXXbXXXXXbXXXbXXXXXXbXbXXXbXXXXXXXXXXXXXbXXbXXXbXXXXXXXXbXXXXXXbXXXXXXXbXXXXXbXXXXXXXXXXXXXbXXXXXXbXXbXbXbXXXbXbXbXbXbXbXXXbXXXbXXXXXXXXXXbXXbXXXXXXXXbXXXXXXXXXXXXXXbXbXXbXXXbXXXXbXbXXbXbXbXbXXbXbXbXXbXbXbXXbXbXbXbXbXXXXXXbXXbXbXXXbXbXXXXXX^¹ÂÄÍÄÍÍÑðÑððððððÑÑÑðððÑÑÑðÑÑÑÑðÑðÑððÑððïóðóúðóóóóóóóóóóüóóóóóóóððððÑÑÑÑÍÍÍÍÍÍÄÁÄÁÄÁÁÁhhhhhccXccXXXXXXTTT:TT:XXbXXbXbXbXXXbXbXXbXXXbXXbXXXbXXXXXXXXXbXXXXXXXXbXXbXXbXbXXbXXXbXXXXXXXbXXXbXXbXbXbXbXXXXbXXbXbXXbXXbXXXXXXXXbXXbXXXbXXXbXXXXXXXXXXXXXXXXXXXbXXbXXXbXXXXXXbXXXbXXXXXXbXbXbXXXbXXXXbXXXXbXbXbXXbXbXXXbXXXXbXXbXbXbXbXbXXXbXXXbXXXbXXXXbXXXXXXXbXXXXXbXXXbXbXbXbXbXXXbXXbXXbXbXbXbXbXbXbXbXbXbXXbXXXXXXXXbXXXXXXbXXbXXXXbXXbXbXXbXbXbXbXXbXXbXbXXXbXXXXXbXXXbXbXbXbXbXXXbXXXbXbXXXbXXXbXXbXbXXbXXbXbXbXbXbXXXbXXXbXXbXXbXbXbXXXbXXXXXXXbXXXXXXXXXXXXbbXbXbXbXXXXXXXXXXXbXXbXXXbXbXbXXbXXXXXXbXXXXXbXXXXXXXXXbXXbXXbXXXXXXbXXXbXXXXbXXXXXXbXbXbXbXXXbXXXXXbXXXbXXbXXbXXbXXbXbXXbXXXXXXXXXXXXXXXbXbXbXXXXXXXbXXXbXXXbXXXbXbXXXXXXXXXXXXbXXXXXbXXXbXXbbXXXXbXbXbXXXXXbXbXbXbXbXXXXbXXbXbXbXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXbXXXXXXbXbXbXbXXbXXbbXbXbXXXbXXXbXXbXXXbXXXbXbXbXXXXbXXcXXbXbXXXXXXXXXXXXbXXXXXXXXXXXbXXbXbXbXbXbXXXbXXXXXXXXbXXbXXXXbXXbXbXXbXXXXXXXXXXXbXXbXXXXbXXbXXXbXbXXbXXXXbXXXXXXXXXXXXXXXXXXbXXXbXXbXXXbXbXbXbXXbXXXbXXXbXbXbXXXXXXbXbXbXXXXXXXXXXXXbXXbXXbXXXXXbXXXbXbXXXXbXXXbXXXbXXXXXXXXXXXbXXXbXXXbXXbXXXbXXbXXXbXXXXXXXXXbXXXbXXbXXXXbXXXbXXXbXXXXXXXbXXbXXbXbXXXbXXXXXXXXXXXXXXXbXbXXXXXXXXXbXXXXbXXXbXXbXXXXXbXXbXXbXXXXXXbXXXXbXXXbXbXXXbXbXXbXXXXbXXXbXXXbXXXXbXXbXXXXXXXXXXXbXXbXXXXbXXXbXbXbXXXbXXXXbXXbXXXXXXbXXXXXXXXbXXXXbXXXXbXXXXXbXXXbXXbXbXXXXXbXXXXbXXXbXbXXbXXXbXXXbXXXbXXbXXXbXXXXbXXbXXXXXXXXXXXbXXbXXXXbXXXbXXbXbXXXXXXXXXXXbXXbXXbXXbXbXXXXXXXXXXXXXXbXXbXXXXXbXXbXbXbXXbXXbXbXXXbXXXXXXXXXXXbXXXXXbXXXXXbXXbXbXbXbbXbXbXbXXbXXbXXbXXXXbXXXXXXbXbXbXXbXbXbXXXXbXXbXXXXXXXXXXXXXXXXXXXXbXbXXXXXXXXXXXXbXbXXXbXXXbXXXbXXbXXbXbXXXXXbXbbXbXXXbbXXXbXXXbXXXbXXXbXXXbXXbXbXbXXXXXXXXbXXXXXXXXXXXXXXbXXXbXXXXbXbXbXXbXXXbXXXXXXXXXXXXbXXXXXbXbXXXXbXbXXXXbXXbXXXXbXXXXXXbXXbXbXXbXXXXbXXXbXbXbXXXbXXXbXXbXbXbXXXXbXbXbXXbXXXXXXXXbXXbXXbXbXXXbXXbXXXbXXXbXbXbXbXbbXXXXXXbXXXXXXbXbXXXXXbXXXXXXXbXXXXXXXbXbXXbXXXbXXbXbXbXXXbXXXXchÄÄÄÍÍÍÑÑðððÑÑððÑÑððÑÑÑðÑðÑÑÑððÑððððððððóòóóóðóðóóóóóóóüóóóóóóðððÑÑÑÑÑÍÍÑÍÍÄÍÄÄÄÁÁÁÁhhÁhhcccccXXXXTTTTTT"TTTTXXXXbXXbXXbXbXXXXbXbXbXbXbXbXbXXXbXXbXXbXbXXbXXXXbXXXbXXXXXXXbXXXXXXXbXXXbXXXbXXbXXXbXXbXXXXXXXbXbXXXXXXbXXcXXbXbXXXXXXXXXXXXbXXXbXXbXXXbXbXXXXXXXXXXXXXbXXXbXXXXbXXbXXXXXXXbXXXXXXXXbXXXXXXbXbXXbXXbXXbXbXbXXbXXXbXXbXXXXXXXXXXXXXbXXXXXbXXXbXXbbXXbXbXXbXXXXXXbXXXXbXbXbXXXbXXXbXXXXXbXXXbXXbXXbXXbXXbXbXXbXXXXXXXXXXXbXXXbXbXXXXXXXXbXbXXbXbXbXbbXbXbXbXXXXXXXXbXbXbXbXXXXXXbXXXXbXbXXbXbXbXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXbXXXbXXXXbXbXXbXXXbbXXbXXbXbXXXbXXbXXXXbXXXbXXXXXXXbXbXbXXXbXXXXXXXbXbXbXbXXXbXXXXXXbXbXXXXXXXXXXbXbXbXbXbXbXXXbXXXXXXXbXXXXXXbXbXXbXXbXbXXXXXbXXXbXbXXXbXbXbXbXbXbXXXXbXXbXXbXXbXXbXXbXXXXbXXXXXXXbXbXXXXbXXbXbXXXXXbXXXXbXbXXbXXXXXXbXbXbXbXXXXXXXXXbXXbXXXXXbXbXXXXXXbXXbXXbXXXXXXXXXXbXXbXbXbXbXXXbXXXXXXXXXXXXbXXbXXXXXXbXXXXbXbXXbXXXbXXbXbXXbXXbXXXXXXXbXXbXXXXXXbXXbXXXbXXXXXXXXXXXXXXbXXXXXXXbXXXbXXbXXbXXXXXbXXbXbXXXXXbXbXXbXXbXbXXbXbXXbXXbXXXXbXXXXXXbXXXbXXXbXXXXXXXXbXXXXXbXbXbbXbXXXXXXbXbXbXXXbXXXXXXXXbXbXXXXXXXXXXbXXXXXXbXXXXXXbXXbXbXXXXXXXXbXXXbXXXXXbXXbXbXbXbXXbXbXXXXXXXXXbXbXXXbXXXXXXXXXbXbXXXXXXbXXXXXbXXXbXbXbXbXXXbXXXXXXXbXXbXbXXXXbXXXXXXXXXXXXbXXXXXbXXbXXbXXXXXbXXXXXXXXXXbXbXXbXXXbXXXXbXXXbXXXbXXXXXXXbXXbXXbXXXXXXbXbXXXbXbXXbXXXbXXbXbXXXXXbXXbXXXXbXXXXbXXXbXXbXXXXXXXbXXXXXbXXbXXXXXXXXXXbXXXXXXXXXbXbXbXXbXXXXXXbXXXXbXXXbXXXXXXXbXbXXXbXXXXXXbXbXXXXXXXbXXXXXbXXbXbXXbXXXXXXXXbXXXbXXbXbXXbXXbXXXXXXbXbXbXXXXXbXXXbXXXbXXbXXXXXbXbXXbXbXXXXXbXXXXbXbXXbXbXXXbXXXbXXXXXbXXXXXbXXXXXXbXbXXbXXbXXXXbXXXXXbXXXXXXXXbXXXbXXbXXbXXbXbXXbXXXXbXbXXXbXbXXbXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXbXbXXXXXXXXbXbXXbXXXXXXXXbXXbXbXXXXbXbXXbXXbXXXbXXXbXXbXbXXXXXXbXXXXXXXXXXXbXXXbXbXXbXXbXbXXXbXXXXXXXbXXbXXXbXXbXXbXXbXXXXbXbXXXXXXXbXXXbXXbXbXXXbXXbXXXXXXbXXbXXXXXbXXXXXXbXXXXXXXXXbXXXXXXXXXbXXXXXXXbXXXXXbXXXXXbXXXXXXXbXbXXbXbXXXXXXXXbXXbXbXbXXXbXXXbXXbXXXXXXXbXXbXXbXXbXXbXbXXchÁÄÄÄÍÍÑðÑðððÑðÑððððÑÑÑÑÑÑÑðÍðÑÑÑðððÑðÑððððóðóóðóóóóóóóüüóúóóóððððÑðÑÑÑÍÍÍÄÍÄÄÄÄÄÁÁÁÁhhhhhhcccXbXXXXTTTTT"XbXXbXXXXbXXXXXbXXXbXXbXXXXXbXXbXXXXXXXXXXbXXXbXXXXXXXXXXXbXXXbXXbXbXXbXXXXbXbXXbXbXXXbXXXbXbXXXXXXbXXbXXXXXXbXXXXbXbXXbXXbXXbXbXXbXXbbXXXbXbXXbXXbXXbXXXXXXXXXbXXXXXXXbbXXXXXXXbXXbXXXXbXXbXXXbXXXXXXXXbXXbXXbXbXXbXXXXbXbXXbXXbXXbXXbXXXXbXXXXXXXXbXXbXXbXXbXXXXbXbXXXXXbXXXXXXbXbXbXbXbXbXXXbXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXbXXbXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXbXXXbXXXXXXXXXXbXXbXbXXXXbXXXbXbXXXXXXXXXXbXXbXXXXbbXXXXXXbXXbXbXXXXXXXXXXXbXXXXbXXXXbXXXXXXbXXbbVXXbXbbXXbXbXXXXbXXXbXXXbXXXXXbXXbXXXbXbXXXXXXXXXbXXXbXXXbXXXXbXXXbXXXXbXXXbXXXbXXXXXXbXXbXXXXbXXXbXXXXXXXbXXXbXXXbXbXbXXXXXXXbXXXXbXXbXXXbXbXbXXXXXXXXbXXbXXbXbXXbXXXXbXXXbXXbXXbbXXXXXXXXbXXbXXbXXXbXbXXXbXXXbXXXXXbXXbXbXXXXXXXbXXbXXXbXbXXXXXbXXXbXXXXXXXXXXXXXXXbXbXXbXXXbXXbXXXXbXXXbXXXbXXbbXbXXbXXXXXbXbXXbXXbXXXXXbXXXbXXbXXXXXXXXXbXXXbXXXXbXXXbXXXbXXXXbXXXXXXXbXbXXbXXbXbXXbXXbXXXbXXXbXbXbXbXXXXbXbXXXXXXXXXXbXXXbXXbXXXXXbXbXXbXbXbXbXXXbXXXbXbXXbXXXXXXbXXbXbXXXXbXXXXbXXXbXXXbXXXbXXXXbXXbbXXXbXXXbXXXXXbXXbXXbXXXbXXXbXXXXbXXXXXXXXXXXXXXbXXbXbXXXbXXXbXXbXXXXXXXbXXXbXXXbXXXXbXXXXbXbXXXbXXXXbXbXbXbXbXXXbXXbXXXXbXXbXXXbXXbXXXbXbXXbXXbXXXXbXXbXXXXbXXXXXXXbXXXbXXXXbXXbXXXXXXXbXXXXbXXXXXXXXXXXbXbbXXXXbXXbXXbXXbXbXXbXbXXXbXbXbXXbXXXXXbXXbXXbXXXXbXXbXXbXXXbXbXXXXXbXbXXbXXbXXXXbXbXbXXXbXXXbXXXbXXXbXXXbXXbXXXXXXXXXbXXXXXbXXXbbXXbXbXXXXXbXXXXbXXbXbXXbXXXbXXbXXXXbXXXXXXbXXXXXXXXXXbXXbXbXXbXXbXbXXXXXbXXXXXbXbXXXXXXbXXXXbXbXbXbXXXXbXXbXbXXXXXXXbXXXXXbXXXXbXXbXXXXXXbXXXXXXXXbXbXXbXXbXXbXbXXbXXXXXXXbXXXbXXXXbXXXbXXXbXXbXXXXbXXXbXXXXXXbXbXXXXbXXXXXXbXXXbXXXbXXXXXbXbXXXXbXXXXbXbXXXbXXXXbXXXbXXbXXXXXXbXXbXXXXXXXbXXXXXXXXXbXXbXXXXXXbbXXbXXXbXbXXXXbXbXXbXXXXbXXXXbXbXbXXbXbXXXXXXXbXbXbXXbXXbXXbXXXXXbXXbXXXXXXXbXXbXbXXbXXbXXXbXXXbXXXXbXXbXbXXXXXXXXXXbXXXXbXXbXXXbXbXXbXXXbXXbXXbXXXXXXchÁÄÄÍÍÑÑÑÑðððÑðÑðððÑÑðÑÑÑÑÑðÑÑÑÑÑðððÑðððóððóðóðóóóóóóúóóüóüóóððððÑððÑÍÍÑÍÍÄÍÄÄÄÄÁÁÁÁÁÁhhcccccXcXXXXTTTTTTTTTXXXbXXbXbXbXXbXXXXbXXXXbXbbXXbXXXXbXXbXXXXXXbXXXXXbXXXXbXXbXbXXXXXXbXXXXXXbXXXbXXbXbXXXXXbXXXXbXXXXXXXbXXbXXXbXbXXXXXbXXXXbXXXXbXXXXXXXXbXXXXXXXXbXXbXXXbXbXbXXbXXbXXbXXXXbXXXbXXXXXXbXXXXbXXbXXXXbXXbXXXbXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXbXXXXXXXXXXXbXXXXXbXXXXXXXXXbXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXbXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXÁÄÁÄÍÍÑÑÑÑððÑðÑðÑÑÑÑÑðÑÑÑÑÑÑðÑðððÑððððóðóððóóóóóðóüüóúóüüóóðóóóððððÑÑÑÍÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhccccccXXXXVTTTT::TT"TXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXchÁÄÄÄÍÑÑÑððÑðððÑÑÑððÍðÑÑðÑÑÑðÑÑÑðððóðððððòðóðóðóðóóóüóóüóóóóððððððÑÑÑÑÍÍÍÍÍÍÄÄÁÄÁÁÁÁÁhhhchcccXXXXXXTTTT"TTTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXTXXXTXXXTXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXVXTXXXXXXXXXXTXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXTXXXXXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXTXTXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXTXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXTXXXXXXXXXTXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXTXXXXXXTXXXXXXXXXTXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXTXXTXXXXXXXXXXXTXXXTXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXTXXXXXXXXXXXXXTXXXWXTXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXVXXXTXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXTXXXXXXXTXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXTXXXVXXXXXXXXXXXXXTXXXXXXXTXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXTXXTXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXTXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWXTXXXXXXXXXXXXXXXXXTchÄÁÍÄÍÍÑððððððððÑðððÑÑððÑÑÑÑððÑðÑððððððððóðóðóðóóðóóóóüóóóóüóððððÑÑðÑÑÑÍÍÍÍÍÍÄÄÄÁÄÁÁhhhhhhhccccXXXXTXTTTMM"TT"WTXXXXXXXXXXXXXXXXXXXTXXXXXXXWXTXXXXXXXXTXXXXXXXXXXXXTXXVXTXVXTXXXTXXTXXXTXXTXXXTXXTXTXXXXXTXXXXXXXTXXXXXXTXXXTXTXTXXTXXTXXTXTXTXXTXXTXVXXTXWXTXTXTXTXXTXXXTXTXTXTXTXTXXXTXXTXXTXVXTXXTXXTXXTXXTXXTXTXXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXXWXTXXTXTXXTXXUXTXXTXTXWXTXWXTXXTXVXTXXWXTXWXTXWXTXWXTXXTXTXTXTXTXXTXXTXVXXXXXTXTXXTXXXXTXXXTXXTXXTXTXTXTXTXXTXXTXXTXTXTXXTXWXTXXWXTXWXTXXTXWXTXTXTXTXTXTXTXTXTXWXTXWXTXXTXXWXTXWXTXWXTXTXTXWXXTXXXXWXTXXTXXTXTXTXTXTXTXTXTXXXXTXXTXTXTXTXTXXXXXXXXXXXXTXTXTXTXTXTXXXXXTXXTXXTXTXXTXTXTXXTXXXXXTXXTXTXTXXXTXTXTXTXTXWXXXXTXTXTXTXXTXTXXTXWXTXXTXXXXXTXTXTXTXTXTXUXTXTXTXXXTXTXTXXTXTXTXTXTXTXTXTXUXTXTXXXTXTXTXTXTXXTXTXTXTXTXXTXTXXXXXXXTXXTXXXTXTXXTXXXXTXTXTXTXTXWXTXXTXTXTXXTXXXXXTXTXTXXXTXTXXTXTXTXTXTXTXTXTXTXTXXXXXTXTXTXTXTXTXTXTXVXTXTXTXTXTXXXTXTXTXXTXVXTXXXXTXXTXTXXXXTXTXTXTXTXTXTXTXTXTXVXTXTXWXTXXXVXTXTXVXXXTXTXTXTXTXXTXTXXTXXXXXTXTXXXXXTXTXXTXTXXTXTXTXTXTXTXTXUXXXXXTXTXXXTXTXTXTXXXTXTXXXTXTXXTXTXTXTXTXTXXTXTXXTXXXXXTXXTXTXTXXXXXTXTXXXXTXTXTXXXXXTXTXTXTXTXXXXTXTXTXTXXTXUXTXTXTXTXTXTXWXTXTXTXTXTXTXTXUXTXTXTXTXVXTXTXXXXTXTXTXTXTXVXTXTXWXTXTXTXTXTXTXTXTXXXXXTXTXTXTXTXTXTXXXXTXTXTXXXXTXTXXTXTXUXXTXTXTXXXXXXXTXTXTXWXXXXXXXXXXXTXTXTXTXTXTXTXTXTXTXTXVXTXTXTXTXXTXXTXWXTXXTXXTXXTXTXTXTXTXXXTXTXTXVXTXTXTXTXTXTXTXTXTXXTXTXXTXXTXTXTXWXXXXXXXTXTXTXTXTXTXXXTXXXXXTXTXUXTXXXXTXTXTXXXXTXTXTXTXTXTXTXXTXXTXTXTXTXXTXTXTXTXTXTXTXTXTXTXTXTXXXXXTXTXTXXTXTXTXTXTXTXTXTXWXTXTXXXXXTXTXXTXTXXTXTXVXTXTXTXTXTXXXXXTXXXXXXXTXTXTXTXTXTXTXTXTXXTXVXTXXTXUXTXXXXTXTXVXTXTXTXWXXTXTXTXTXXXXXTXXXTXTXXXXXTXTXTXTXTXTXXXTXXTXTXXTXTXTXTXTXTXXXTXXTXTXTXXTXTXTXXXTXXTXXXXXXXXTXWXTXWXXTXXTXXTXVXTXTXTXXXXTXTXTXTXXXXXTXTXTXXTXTXTXTXTXTXTXVXXXTXTXTXTXXXTXTXTXTXVXTXTXTXTXTXTXTXXTXXTXTXXXTXXXXXXXXTXVXTXTXXXTXTXXTXTXTXTXXTXXTXXXXXTXXTXTXXTXXXTXTXTXXXXTXTXUXTXTXTXTXTXTXTXTXVXTXTXTXXXXXTXTXTXTXTXTXTXXXXhÁÁÄÍÑÍÍÑðÑðððÑððððÑððððÑÑÑÑÑÑðÑÑððððððððððóóóóóóóóüóóóóüüüóóóóððÑÑÑÑÍÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhÁhhcccXcXXXXXTTTT"T"TTTTMXXXXTXTXTXTXTXTXXTXTXXXXTXTXTXXXXXTXTTXTXXVXTXTXTXTXTXXXXTXXXXXXVXXXXXXXTXXXXXXTXXXXXXXVTXTXXXTXTXTXXXTXTXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXTXXXXXXXXXXXTXXXXXXXXXXXXXXTXXXXXVXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXTXXXXXXXXXXTXXXXTXXXTXXXTXXXXXXXXXXXXXXXXXXXXTXTXXXXXXXXXXTXXXTXXXXXXXXXXXXXXXXXXXXXXXWXXXXXXXXXXTXXXXTXXXXXXXXXXTXXXXXXXXXXXXTXXTXXXTXTXXXTXXTXXTXTXXTXXTXTXTXXXTTXTXTXTXTXXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTWTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTWTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTWTXTXTXTXTXTXTXTXTXTTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTXTTXTXTTTTXTXTTXTTXTXTXTTXTXTTXTXTTXTTXTTXTTXTXTXTTXTTXTTXTXTTXTXTXTTXTTXTXTXTXTTXTTXTTXTXTTXTXTXTTXTXTTXTTXTXTTTXTTXTTXXÁÁÁÄÍÍÍÑÑðððÑðÑÑðÑðÑÑðÑÑÑÑÑÑÑððÑÑðÑÑóðððððóðóðóóóóóüóúóóüóóóóóððððÑðÑÑÍÍÍÄÍÍÄÄÄÄÄÁÁÁÁÁÁchhccccXbXXXXTT"T"TTT""XTTXTXTXTXTXTXTTTTTXTTXTXTTTTXTXTTXTTXTTXTXTTXTTXTTXTTXTXTTXTTXTTXTXTTXTXTTXTTXTTVTXTXTTXTTXTTTXTXTTXTXTXTTXTXTTXTTVTXTTXTXTTXTTXTXTTXTXXTTXTXTTTTXTXTTXTXTTXTTXTTXTTTTTXTXTTXTTXTTXTTXTXTTXTTXTTXTXTTXTXTTXTTXTTXTXTXTTTXTTXTTXTXTTXTXTXTTXTXTTXTTXTXTTTXTTXTTXTXTTXTXTXTTXTXTTTXTXTTXTTXTTXTTXTTXTTTTTTTTTTTTTXTTTTTTXTTTTTTTXTTTTXTTTTTTTTTTTTTTTXTTTTTTTTTTTTTTXTTXTTTTTTTTTTTTTTTTTTTTTXTTXTTXTTTXTXTTTXTTXTTXTXTTXTTXTXTXTTTXTTXTTTXTXTTXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXUXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXÁÄÂÄÄÍÍÑÑðððÑðÑÑðÑÑðÑðÑÍðÑÑÑÍðððÑððÑóððóðòððóóðóóóðóóóóúóóóóóðððóÑÑððÑÑÍÍÍÄÄÄÄÄÄÁÁÄÄÁÁhhccccccbbXTXTXTTTM"T"XXXXXXXXXXXXXXXXXXXXXXXXXXX^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXWXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXXXXXXXXXXXXXVXXXXXXXXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXhhhhchhdhhhhhhchhdhhhdhhhhhhhfhhhdhhhdhdhhhhcfhhhdhchdhhhfhdhhhhchhhchhhchhdhhhdhdhhhdhhhhhhchhchhgfhhhdhdhhhfhhhchhgfhhhdhhhhhdhhhhdhhhfhhhfhhhchhhhdhhdhhhhhdhhhfhhhchhhhchhhhfhchdhhhfhhhfhhhhhhhfhhhfhhhdhhhfhhhfhhhdhfhgfhhdhhhhhfhhhfhhhhhhdhhhchhchdhhhfhhhhhchhhchhhhhchhdhhhdhhhhhhhhhhhfhhhdhhhhhhcdhhhhchchhdhhhhhdhhchhhchhhchhdhhhdhhhhhdhhhfhhchhchhchhdhhhdhhhfhhhchhhdhhhdhhhhhhhhhdhhdhdhhhdhhhchhhdhhhhhdhhhfhhhdhhhchhfhhdhhhfhchdhhhhhfhhhhhhhhhfhhhdhdhhhfhhhdhhhhhfhhhchhgfhhhhhfhhhfhhhhhhchhhchhchdhhhchhhhhchhchhdhhhgfhhhdhhhhhhhdhhhfhhhfhhhdhhhhcfhhhhchchhdhhhfhhhhgfhhchhhchhhhfhhhhhdhhhfhhhhchhchhhdhhhdhhhfhhhdhhdhgfhhhfhhhhhhhhhdhhfhhhfhdhhhchhhchhhhhdhhhdhhhfhhhchhfhhdhhhhchchhfhhhdhdhhhfhhhdhdhhhhhhhfhdhhhhhhhfhhhdhhchhhhhhdhhhfhhhhhhchhhchhchdhhhdhhhhhchhchhhhhhchhhhdhhhhhhhhhhhhhhhfhhhdhhhhcdhhhhchchhdhdhdhhhhchhhchhhchhdhhhdhhhdhhhhhdhhdhhdhhchhdhhhfhhhfhhhchhhdhhhfhhhhhhhhhdhhhhdhhhhhchhdhhchhhhhdhfhdhhhfhhhchhhhchhhhhchchhdhhhfhhhfhhhdhhhfhhhfhhhdhhhfhhhfhhhdhhdhhdhfhhhhhfhhhhhhhhchhhchhchdhhhchhhhhchhchhhhhhchhfhhhdhfhhhdhhhdhhhdhhhdhhhhcdhhhhchchhdhhhdhhhchchhchhhchhfhhhfhhhdhhhfhhhhchhchhhdhhhdhhhdhgfhhchhchhhchchhhchdhhchgfhhhchhchchhhcchhdehchgfhhchhchhdhchhhchdhhchgfhhhhchgfhhhhchhchdhdhchhhhchchhchhchhhfhchhhhdhhhchhdhhfhhhdhdehchchgfhhhdhchhhdhdhhhfhhhchhhhcchhhfhchchhhdhhchhchfhhhchhfhhdhchchgfhchdhhdhhhchhhhdhdhhhhhhÁÄÄÄÍÑÑÑÑðÑÑððððÑÑÑÑðÑððÑÑÑÑóÑðÑïðÑððïóððóóóðóóóóóüóüóüúóóóóóððððÑÑÑÍÑÑÑÍÍÍÍÄÄÄÁÄÁÁhhhÁhhcccXbbbXXTTTT"TTTcdhhgfhhhfhchchhhhhhhchhdghggfhchgfhhfhhchchchfhchhfhchcdhhchhchchdghchchchghchhhdhhchchdhhhchhchchdhchhhchchhfhchcchdhhgdghchhchddhhdhhhchchdhhhchdhfhhchhchhhchchgfhhhchchchdgcdhchchcdhhchhhchchghcgdhchgfhchchhchchcchchchhhchddhchchchchdhhchcchdhhchdgdhdhchdhhddhhchdhchhhchdhhchhchhhcchchchchchhfhchhhhchhhhchchhhhhhchchhchchhhhfhhcfhchhhchccdhfhchhhhcdhdhchdhdhchchchchfhhhhcfhchhchchchdhchchfhchdhchchhhgfhchcchhcfhfhdhfhchchhchÁhÁÁÁÁhÁÁÁ•¹•ÁÁÁÁÁÁÁhÁÁÁ„hÁÁ•¹ÁÁ•ÁÁÁhhÁÁÁ•¹ÁÁÁÁÁ¹ÁÁÁÁÁÁÁ„¾ÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁ•h¹•ÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁ„¾ÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁ¾ÁhÁÁ¾ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁ„¾ÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁ„¾Á¾ÁÁhÁhÁÁhÁhÁhÁÁ¹•ÁÁÁÁ„¾ÁÁ¹ÁÁÁ„¾hÁÁÁÁÁÁ¾hÁ„¾ÁÁÁ¹•ÁÁ¹•ÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁhÁÁÁÁ„¾ÁÁÁÁÁÁÁ„¾ÁÁ„hÁÁÁ„¾ÁÁÁÁÁÁhÁÁÁ„¾ÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁ„¾hÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁ„¹ÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁ„¾ÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁ„h¾ÁÁÁhÁÁÁÁ„¾ÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁ¹•ÁÁÁhÁÁÁÁÁÁ¾ÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁh„¾Á„h¾hÁhÁÁÁÁÁÁhÁÁÁhÁÁÁ•¹•ÁhÁÁÁÁÁÁÁhÁhÁÁÁÁÁ¹ÁÁÁ„¾hÁÁÁÁÁÁÁÁhÁÁhÁ„ÁÁÁh•¹ÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁ¹ÁÁhÁÁÁÁhÁÁÁÁÁ¹•ÁÁÁÁÁÁÁÁÁÁ¾hÁÁÁÁhÁhÁhÁÁÁÁÁ¹ÁÁÁhÁÁÁÁÁ„¾ÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁ„¾ÁÁ¹•ÁÁÁÁÁÁÁÁhÁ¾hÁhÁÁ•h¹ÁÁÁhÁ¹•Á¾ÁÁÁÁÁÁÁÁÁÁÁÁ•h¾ÁÁ„¾ÁÁ„¾ÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁ¹•ÁÁÁhÁhÁÁhÁhÁhÁ•¹•Á¹•Á¾ÁÁÁ•¹•Á¹ÁhÁhÁÁÁÁÁhÁ„¾ÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁh„¾ÁÁhÁÁÁÁ•¹•ÁÁÁÁhÁÁÁhÁÁhÁÁ•¹•Á¹•ÁÁ¾hÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁ„¾hÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁ¹ÁÁhÁÁÁÁÁÁÁÁhÁ¾hÁ•¹•ÁhÁÁÁÁhÁÁÁÁÁ„¾ÁÁÁÁÁÁÁÁÁÁ•h¾ÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁ„¾Á¹•¹ÁÁ•hhÁhhÁ¹•ÁÁ¹•ÁÁÁhÁÁÁ¹ÁÁÁhÁÁÁ¾ÁÁÁhÁÁÁhÁÁhÁhÁ„¾hÁÁÁÁhÁÁÁÁhÁÁhhÁÁÁÁhÁÁÁÁhÁhÁÁ„¾ÁÁÁÁhÁÁhÁÁÁÁhÁÁÁÁ„¾ÁÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁ„¾hÁÁÁÁÁhhÁhhÁÁÁÁÁÁÁ¹ÁÁhÁÁÁÁ¹ÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁhÁhÁÁÁhÁÁÁÁhÁÁhhÁÁÁÁhÁÁÁÁhhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhhÁhhÁhhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁ¹ÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁhÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁÁhhÁ¹ÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁÁ¾ÁÁÁÁÁÁÁÁÁhÁÁhÁÁhhÁhhÁhÁÁÁhÁ•¹hÄÁÄÄÑÑÑÑÑððÑóðððÑÑðÑÑÑðÑÑÑÑÑðÑÑðÑðáïððóððóðóðóóðóóüóóüüóóóðóððððïðÑÑÍÑÍÍÍÍÄÄÄÄÄÄÁÁÁÁhhhhhcccXbbXXXTTTTTTThÁhÁÁÁÁhÁh¾hÁÁhÁÁhÁ•¹•ÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhÁÁÁÁhÁÁÁÁhhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁÁhhÁÁÁÁhÁÁhÁhÁhÁhÁhhÁÁhÁÁÁÁÁÁhÁÁÁhhÁhÁÁhhhhhÁhÁÁÁhÁÁÁhÁÁhÁÁhÁhÁÁÁhÁhÁhhÁÁÁhÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhÁÁhÁhÁhÁÁhhhhÁhÁÁÁÁhhÁhÁÁhhÁhÁhÁhhÁÁhhÁÁhÁÁhhhÁhhhÁÁhÁÁÁhÁÁhÁÁÁhhhÁhÁhhhhhhÁhÁhÁhÁhÁhÁhÁÁhÁhhÁhÁhÁhÁhÁÁÁhhÁhÁhhÁhhhÁÁÁhÁhÁhhhÁhhÁÁhÁhÁhÁ•hhhhÁhÁÁÁÁÁhÁÁÁÁhhÁh¾hÁhÁhÁÁhÁhhÁÁhhhÁhhhÁ•ÁhÁÁhÁhÁÁÁÁhhÁhÁÁhhhhhhÁÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁÁÁhhÁhÁhÁhÁhhÁhÁhÁhÁhhhÁhhÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁ•ÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁ•ÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁ¾ÁÁÁÁÁÁÁÁÁÁÁ¾ÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁ¾ÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁ¾ÁÁÁÁÁ•ÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁ¾ÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁhÁh¾ÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁ•ÁÁÁhÁÁÁÁÁÁÁ•ÁÁhÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁÁhÁÁhÁÁ¾ÁÁhÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁhÁÁÁÁÁÁÁhÁhÁhhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁhÁhÁÁÁhÁÁhÁÁÁhÁhÁÁÁÁh•ÁÁhÁhÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁhÁhhÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhhÁhÁÁhÁ•¹ÁÁÄÄÍÍÍÑÑÑóðïïÑÑðÑðÑÑÑÑÑÑÑÑÑÑÑÑÑðððððððððóððóóóóóóóóóóóüüóóóóóðððáðÑðÑÍÍÍÍÍÍÄÄÄÄÄÄÁÁhhhhcccccbbXXXXTXTTTTTTTThÁhÁhÁhÁÁhÁhhÁÁÁhhÁÁhhÁhÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁhÁÁhÁÁÁhÁhhÁÁÁhhÁÁhÁhÁÁÁhÁhÁÁÁhÁhÁhÁÁhÁhÁÁÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁhÁhÁhÁÁhhÁhÁÁhÁhhhÁhÁhÁhhÁhhhÁhhÁhhÁhhÁÁÁhÁhÁhhÁhhÁhÁÁhÁhÁÁhÁhhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhhÁÁÁhÁhhhÁhÁhÁhÁÁhhÁhhÁÁhÁÁhÁhhÁhhhÁÁhÁÁhhÁhÁhÁÁhÁhÁhhhÁhÁhÁhÁhÁhhÁhÁhÁhÁhhÁhÁhhhÁhhÁhÁhÁÁhÁhÁÁhÁhhhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhhhÁhÁhÁÁhÁhhÁhhÁÁhÁÁhÁhhÁhhhÁÁhÁhÁhhÁhÁhÁhÁhÁhhhhÁhÁhÁhhÁhhÁÁhhÁhÁhhÁhÁhhhÁhhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhhÁhÁÁÁÁÁhhÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁhhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁhÁhhÁÁÁÁhÁhÁÁhÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁ•ÁhhÁÁÁÁhÁhÁÁhÁÁhÁhÁhÁÁhhÁhÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁÁhÁhhhhÁÁÁhhÁÁhhÁÁÁhhÁhÁÁhÁÁÁÁÁÁhÁhhÁhÁhhÁhhhÁÁhÁhhhÁÁ•ÁÁhhÁhhÁhhhÁhÁÁhÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhhÁhÁÁhÁÁÁhÁÁhÁÁhhÁhhhÁÁÁhhÁÁhhÁÁÁhhÁhÁÁhÁhÁÁÁÁhhÁhhÁhÁhÁhÁÃÁÄÍÍÍÑðÑðððáïÑðÑÑððÑÑÑÑÑÑÑÑÑððÑððððððóðòðóðóóðóóóóóóüóóóüóóðððððïÑÑÑÍÑÍÍÄÄÄÄÄÄÁÁÁÁÁÁhhchcccbXXXXXTTTTTTTTT¹•hÁhÁÁhhhÁÁhÁÁhhÁhhhÁhhÁhÁhhÁhÁÁhÁÁhhÁÁÁÁhÁÁhhÁÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁhhÁhÁhÁhÁhÁÁhÁhÁhÁhhhÁhhÁÁÁhhÁÁhhÁÁhÁhhhÁhÁhÁÁhÁÁÁhhhhhÁhhÁhÁhÁhÁÁhhhÁhhÁÁhhÁhhhÁhhÁhÁhhÁhÁÁhÁÁhÁhÁÁhÁÁÁÁhÁÁhhÁhÁhÁhÁhÁhÁhÁÁhÁÁÁhÁhhÁhÁhÁhÁÁhÁhÁhÁhhhÁhhÁÁÁhhÁÁhhÁÁhhhÁhÁhÁhÁÁÁÁhÁhhhhhÁhhhÁhhÁhÁhÁhhÁhhÁÁhhÁhhhÁhhÁhÁhhhÁÁÁhÁÁhÁhÁÁhÁÁÁÁhÁÁhhÁhÁhÁhÁhÁhhÁÁÁhÁÁÁhÁhhÁhhÁhÁhÁÁhhÁhÁhhhÁhhÁÁÁhhÁÁhhÁÁhÁhhÁhÁhÁhÁÁÁhÁhhhhhhhhhhhhÁhhÁhhhÁhhÁhhhÁhhhÁhhhhÁhhÁhhÁhÁhhhÁÁhÁÁhÁhhhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁÁÁhÁÁhÁÁÁhÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁhÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁhÁÁÁÁÁhhÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁÁhÁÁÁÁÁhÁhÁhÁÁhÁÁhÁhÁhÁÁhÁÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhhÁÁÁhhÁhÁÁhÁÁhÁhÁÁÁhhÁhÁÁhÁÁhÁÁÁÁÁÁhÁhhhÁhÁhÁhÁÁhÁÁÁhÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁhhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁhÁhÁÁhÁhhÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁhhÁÁÁhÁhhÁÁhÁÁhÁhÁÁhÁhÁhÁÁhÁÁÁhÁhÁÁÁhÁhhhÁhÁÁhhÁhÁhÁÁhÁhÁÁhÁhÁÁÁÁhÁhÁÁÁÁhÁhhÁhÁhhÁÁÁÁÁhÁÁhÁÁÁÁÁÁhhÁhÁhÁhhÁÁhhhÁhÁhÁhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhÁhÁhÁÁhÁÁhÁhÁÁhhÁhÁÁhÁÁÁÁÄÄÍÍÑÑÑðÑððððÑðÑÑðððÑÑðÑÑÍÑÑðððÑÑÑððððóððððóóóðóóóüóüüúóóóóðððððÑÑÑÑÍÍÍÍÍÄÄÍÄÄÄÁÁÁhÁhhhhcccbcXXXTVTTTTTTTTT::hhhÁÁhÁhhÁhhÁhhhÁhÁhÁhhÁÁhÁhÁhhÁhÁhÁÁhÁhÁhÁÁhÁhhhÁhhÁhÁÁÁhÁhÁhhÁÁÁÁhhÁhhhÁhhhÁhhhÁhÁhÁhhhÁhÁÁhhÁhÁhÁhhÁhÁhÁhhÁÁÁhÁhÁhÁhÁhhÁhhÁÁhÁhhÁÁhÁhÁhhhÁhhhÁhÁhÁhhÁhÁhhÁhÁhhÁÁhÁhÁÁhÁÁhÁhhhhÁhhÁhÁÁÁhÁÁhhÁÁhÁÁhhÁhhÁÁhhhÁhhhhhÁhÁhÁhÁhÁÁhhÁhÁhÁhhÁhÁhÁhhhÁhÁhÁhhÁhÁhhÁhhÁhÁÁhhÁhÁÁhhÁhhhÁhhÁhÁhÁhhÁÁhhÁhÁhhhhÁhÁhhÁhÁÁhÁhhhhÁhhÁhÁhÁhhÁhhhÁhÁÁhhhhhhÁhhhhhhhhÁhhÁhhhÁhhÁhhÁhhÁhhhÁhÁhhhhÁhÁhÁhhhÁÁhhhÁhhÁhhÁhhÁhÁÁhhhhhhhhhÁhhÁhhhÁhÁhhÁhhÁhÁÁhÁhÁhÁhÁhÁhhhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁhÁÁhÁÁÁhhÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁhÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁhÁÁhhÁÁhÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁhÁÁÁhÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁhhÁhhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁhÁÁhhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁhÁÁÁÁÁÁhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhhÁÁhhhhÁhÁÁhÁÁÁÁhÁÁhÁhÁÁhÁÁhhÁÁhÁÁÁhÁÁÁÁhhhÁÁhÁÁÁÁÁÁÁhhhÁÁÁÁÁhhÁÁÁÁhhÁÁÁÁhÁÁhhhÁÁÁhhhÁÁÁhÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁhhÁÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhhÁhÁhhÁhÁhÁÁhÁhÁÁhÁhÁÁÁhÁÁÁhhÁÁhÁÁhÁÁÁÁÁhhhÁhÁÁÁÁÁÁÁÁhhhÁÁÁÁÁhÁhÁÁhÁhÁÁÁÁhÁhÁhhÁhÁhÁhÁhÁhÁÁÁÁhÁhÁÁhÁÁhÁhÁhÁhhÁÁÁhÁhÁÁhÁhÁÁhÁÁhÁhhÁhÁhhÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁhÁhhÁhÁhÁhÁÁhÁÁhhhÁÁhÁhÁÁÁÁhhhhÁÁÁhÁhhÁhÁhÁhhÁÁÁhhÁhhhÁhÁhhhÁhÁhÁÁÄÄÄÍÍÑÑðððÑðÑððÑðÑÑÑÑÑðÑðÑððÑðÑÑóÑððóðóðóóóðóðóóóóóóóóüüóóðóðòðïÑÑÑÍÑÍÍÍÍÍÍÄÄÄÄÄÁhhhhhhcccccbXXXXXXTTTTTT:hÁÁhÁÁÁÁhhhÁhhÁÁhhhÁhÁÁhÁhhÁÁhÁhÁÁhÁhÁhÁhÁhhÁhhhÁhÁhÁÁhÁÁÁhÁhÁÁhÁhÁhhÁhÁhÁhÁÁhÁÁhhhÁhÁÁÁÁÁÁhÁhhhÁhÁhÁhhÁÁhhÁhhÁhÁhÁhhhhÁhÁhhÁhhÁÁÁhÁhÁhÁhÁhÁhhÁÁhhhÁhÁÁhÁhhÁhhhÁÁhhÁhhhhhÁhÁhhhhÁÁÁhhÁhÁÁÁhhÁhÁhÁÁÁhhÁhhÁhÁhÁhÁhhhhÁhhÁhÁhÁhÁhhhÁhÁhÁhhÁhÁhhÁhhÁhhhÁhhhhÁÁhhÁhhÁhÁhÁhhÁhhhhÁhhhÁhhhhhÁhÁhhhhÁhÁhÁÁhÁhhÁhhhhhhhhhÁhÁhhÁhÁhÁhhhÁÁhÁhÁhhÁhhÁhhÁhÁÁhhhhÁhhÁhÁhÁÁhhhhÁhhÁhhhÁhhhÁhhhÁhhhÁhhhÁhÁhhhhhÁhÁhÁhhhÁhÁhhhhhÁhhhhhÁhÁhhhÁhhhhÁhhÁhhhhhhhhhhhhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁhÁÁhÁhÁhÁhÁhÁÁhÁÁÁÁhÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁÁÁhhÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁhÁhhÁÁÁhÁÁÁhÁhÁÁhÁÁhÁÁhÁhÁhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁÁhhÁÁhhÁÁÁhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁhhÁÁÁhÁÁhÁÁÁhhÁÁhÁhÁÁhÁhhÁhÁhhÁhhÁhhhÁhÁhÁÁÁÁhÁhÁÁÁÁÁhhÁÁhÁÁhÁÁhÁÁhÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhhhÁhÁÁhÁÁÁhÁhÁÁhÁÁÁhhhÁÁhhÁÁÁhhÁhÁhÁhhÁÁhhÁhÁhÁhÁhhÁÁhhÁhÁhhhÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁÁÁhÁhhÁÁhÁÁÁhÁÁÁhÁÁhÁÁhÁhÁhÁÁhÁÁhÁhÁÁhhhÁhÁhÁÁhÁÁhhÁÁhÁÁhÁhhÁÁhhÁÁÁhhÁhÁhÁhhÁÁhÁhÁÁhÁhhÁhÁhÁhhhÁhhhÁhÁhÁÁÁÁhÁhÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁhÁhhÁhhÁhÁÁhÁÁhÁhÁhÁhÁhÁhÁhhhÁhÁhÁÁhhhÁhÁhÁhÁhÁhhÁÁhÁhÁhÁhÁÁhhÁÁÁhÁhhÁhÁhhhÁhhÁhÁhÁhÁhÁhhhhÁhhhhhÁhÁhÁÁhÁhÁhÁÁhÁhÁhhÁÁhÁhhÁhÁÁÁhÁhhhÁhhÁÁÁÁÁÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁÁÄÄÄÍÍÑÑðÑððÑðððÑðÑððÑÑÑÑÑÑÑðÑððððÑðððïððóóðóóóóóóðúóóóüóóóóóððððÑÑÑÑÑÍÍÍÍÍÄÄÁÄÄÁÁÁÁÁhhchccccbbXTXXTTTTT"hÁÁhhhhhÁÁÁhÁhÁhhÁÁhhÁÁhhÁhÁhÁhÁÁhhhÁhÁhhhÁÁhhÁhÁhhÁhhÁhhhhhhhhhhÁhÁhhÁÁhhhÁhÁÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhhÁhÁhÁÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhÁhhhhhhhÁhÁhÁhhhÁhÁhÁhhÁhÁhhÁÁhhhhhÁhhhhÁhhhÁhÁhÁhhhÁhhhhhhhhhhhhÁhhÁÁhhhhÁÁhÁÁhhhÁhÁhhÁhhÁhÁhhhhhhhhÁhÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhÁhhÁhhhhhÁhÁhÁhÁhhhÁhhhÁhhÁhÁhhhÁhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhÁhhhhÁhhhÁhÁhhÁhÁhÁhÁhhÁhÁhÁhÁhhÁhhÁhhhhÁhhhÁhÁhÁhÁhÁhhÁhhÁhhùhhÁhhhhÁhhhhhhÁhÁùÁ„¾hÁhÁhÁhhhÁhhhÁÁhhhhhÁhhhhhÁhhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁhÁhÁÁhÁhhÁhÁhÁhhÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁhÁhhÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁhÁhÁhÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁhÁhÁÁÁhÁhhÁÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁhÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhhhÁÁÁhÁhÁÁÁÁhhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁÁhhÁÁÁÁhÁhÁhÁÁÁÁhÁÁhÁÁÁhhÁÁhhÁÁhÁhhhhÁhÁhÁhhÁÁhÁÁhÁÁhÁÁÁÁÁhhÁhhhÁhhÁÁÁÁhÁÁhhÁhhÁhhÁÁhhÁhÁhÁÁhÁÁÁÁhhÁhÁhhhÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁhÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁÁhhhÁÁhhhÁhÁhÁÁÁhhÁÁÁhÁÁÁhÁÁÁÁhÁhhhÁhhÁhhÁÁÁÁhÁÁhÁhhhÁhhÁhÁhhÁÁhÁhhÁhÁÁhhÁÁhÁhhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁhÁhÁÁÁÁhÁhÁÁhÁÁhhÁÁhÁhÁÁhÁÁhhhÁÁhhhÁhhhÁhÁhhÁÁhÁhÁÁhhÁÁÁhÁhhÁhhhÁhhÁhÁÁhÁhÁhÁhhhÁhÁhhhhhÁhÁhhhÁhÁhhhÁhÁhhÁhÁÁÁhÁÁÁÁÁhÁhÁhÁhÁhÁhÁhhhhÁÁhhhÁhÁÁÁÁÁhÁhhÁÁÁÁhhÁhhhÁhÁhhhhhhÁhÁhhÁÁhÁÁhÁhhÁÁÁhÁhhhhÁhhhhÁhÁhÁÁhhhÁhhÁhhÁhÁhhÁhÁÁhhhÁhÁhhÁhÁhhhhhÁhÁÁhÁÁÁÁhÁhÁhÁhÁhÁhÁhhÁÁÄÄÍÍÑÑÑðÑðÑðÑÑÑððÑÑðÑÑðÑÑÑÑÑÑðÑÑÑððððððóðóðúóóðóóóóüóüüóðóóðóððÑÑðÑÑÑÍÍÍÍÄÄÄÄÁÄÁÁÄÁhhhhccccXXbXXXTTTTT:T:TTM"hhhÁÁhÁhhÁhÁhÁhÁhÁhhÁhÁhhÁhhhhÁhhhhhhhÁhÁhhhÁhÁhhÁhhÁhÁhÁhhhhhhhhhÁhÁhÁhÁhhhhhhÁhÁhhhhhÁhhÁhhÁÁhhhhÁhhhhhhÁhÁhÁÁhÁhhÁhÁhÁhÁhhhÁhhhhÁhÁhhhÁhÁhÁhhÁhhhÁÁhhhÁhhhÁhhhhhhhhÁhÁhhÁhhÁhhÁhÁhÁhhhhhhhhhhhhÁhÁhÁhhhÁhhhhhhÁhhhhhÁhhÁhhÁhÁhhhÁhhhhhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhÁhhhhÁhÁhhhÁhhÁhÁhhÁhhÁÁhhhÁhhhÁhÁhhhhhhÁhÁhhhÁhÁhhÁhhÁhÁhhhhhhhhhhhÁhÁhÁhÁh„¹•hhÁhÁhhhhhhhhÁhhÁhÁhh¹•hhhhhhÁhÁhÁhÁhÁhÁhhÁhhÁ•¹ÃhhÁhÁhÁhÁhhÁhhÁ•hÁ¹•hÁhhhhÁ¹•h¹•hhhhhh¹•ÁhhÁhÁhhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁhÁhÁÁÁhÁhÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁhÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁÁÁÁÁhÁÁhhÁhÁÁhÁhÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁhÁhÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁÁhÁhÁhÁhÁhÁÁÁÁhhÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhhÁÁÁÁÁÁhÁÁÁhÁhÁÁhÁÁÁÁhÁhÁÁÁhÁhÁÁhhÁhÁÁÁÁhÁhÁÁhÁÁhÁÁÁhÁhÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁhÁhÁhÁhÁÁÁÁhhÁÁhÁhÁÁÁÁÁÁÁÁhhÁÁÁÁhÁÁÁhÁhÁÁhhÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁhÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁhhÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁÁhÁhÁÁhÁhhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁÁhhÁhÁÁhÁÁhÁhhÁÁhhÁÁhhÁhÁÁhÁÁhÁÁhhÁÁhÁÁhÁÁÁhÁÁhÁhÁhhÁÁhÁhhÁÁÁÁhÁhÁhÁhÁhÁÁÁhÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁhhÁhÁÁÁhÁhÁhhÁhhÁÁhÁhÁhÁhÁhÁhÁÁÁÁÁÁhÁhÁhÁhÁÁhÁhhÁÁhhÁhÁhÁhÁÁhÁÁhÁÁhhÁÁÁÁÁhÁÁÁhÁhÁÁhhÁhÁÁhÁhhÁÁÁÁhhÁhÁÁhÁhÁhÁÁhÁhÁÁhÁÁhÁhÁÁhÁhÁÁÁhhÁhÁÁÁhÁhhÁhhÁhÁhÁhÁhhÁhÁhÁhÁÁÁÁhÁhhÁhÁhÁhÁÁhhhÁhÁhÁÁhhÁhÁÁhÁÁhÁÁhhÁhÁhÁhÁhÁhhÁhhÁhhhÁÁhhhhÁhÁÁhhhÁhÁhÁhhÁhÁhÁhÁhÁÁhÁhhÁhÁhÁhÁÁhÁhhÁhÁhhhhhhhhhÁÁhÁhhhÁhhhhÁhÁhÁÁÁhhÁhÁhhhÁÁhhhhÁhhÁÁhhhhÁÁhÁÁhÁÁhhÁhÁÁhhÁÁÁhhÁhÁhhhhÁÁhhhhÁÁhÁhhhhhÁÁhhÁÁhÁhhÁÁhhÁÁhÁhÁhÁhÁhÁÁhhhhÁÁÁhhhhhhÁhÁhÁhÁhhhÁhhÁhÁhÁÁÁÁÁhhÁhÁhhÁhÁhhhÁÁhhÁÁhhhhÁÁhÁhÁhÁhhhÁhÁÁhÁhÁhhÁhhÁhhhÁÁhhhhÁÁhÁhÁhÁhÁhÁhhÁÁhÁhÁhhhÁÁÁhÁhÁhÁhÁÁhÁhhhÁhÁhhhhhhÁhhÁhhÁhhÁhhÁÁÄÄÄÍÍÑðÑðÑðððÑÑðÑðÑððÑÑÑÑðÑðÑððÑÑóððððóðóóóððóðóóüóóóóóüóüóððððððÑÑÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhccccXXXXXXXTT:TM"ThÁhhÁhÁhÁhÁhhÁhÁhhhÁÁhhhÁhhhhÁhhhhÁÁhÁhhhÁhÁhhÁhÁhÁhÁhhÁhhhÁhhhÁhhhhhÁhÁhhhÁhhÁhhhÁhÁhhÁhhÁhÁhhhÁhÁhhÁhÁhhhÁhÁhhhhhhhhhhÁhhÁhhhhhhhhÁhhÁhÁhhhhhÁhhÁhÁhhhÁhhhhÁhhhÁhÁhÁhhhÁhhhÁhÁhhÁhÁhhhÁhhhÁhhÁhhhhhÁhÁhhhhhhÁhhÁhÁhhhhÁhhhÁhhhÁhÁhÁhÁhhhhhÁhÁhhhhhÁhhhÁhhÁhhhhhhhhÁÁhÁhÁhhhÁhÁÁhÁhÁhhhÁ•hhhÁhhhhÁÁhÁhhÁÁhhÁhhÁhhÁhhùhÁÁhhÁhÁhhhhhhhÁ•¹¾hhÁhhhÁhÁ•¹hÁh•¹hÁh•¹••ÁhhÁÁhhhhhhÁhhhhh•¹hhhÁh•¹•hhhhhhhÁhhÁhÁhhhhÁh•hhù•¹Á•hh•Á•¹•¹Á••ÁhhÁhhhÁhÁhÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁhÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁhÁhÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁhhÁÁÁÁÁÁhÁhÁÁhÁÁhÁÁhhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁÁhÁhÁhÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁÁÁÁÁÁÁÁhÁhhÁÁÁÁÁÁhÁhÁhÁhÁhÁÁhhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁhÁhÁÁhhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁÁÁÁhÁhÁhÁhÁÁÁhÁÁÁÁÁhÁhÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁhhÁhÁÁÁÁhÁhÁhÁÁÁhÁÁhhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁhÁhÁhhÁhÁÁhÁÁhhÁÁhÁhÁÁÁÁhÁhÁhhhÁhÁhÁhÁÁhÁhÁhÁhÁÁÁÁÁhÁhhÁÁÁhÁÁÁhÁÁhhÁÁhhÁÁÁÁÁÁÁhÁÁhhÁhÁÁÁÁhÁhhÁhÁÁhhÁhhhÁhÁhÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁhhhÁhhÁhÁÁÁhÁÁhÁhÁÁhhÁÁÁhÁhÁhÁhhÁhÁhÁhÁÁhÁhÁhÁhÁÁÁÁhÁhÁhhÁÁhÁÁÁhÁÁhhÁÁhhÁÁÁÁÁhÁhÁÁhhÁhÁÁÁÁhÁhhÁhÁÁhhÁhhhÁÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁÁÁhÁÁhhhÁhÁhÁhÁhÁÁÁhÁhÁÁhhÁÁÁÁhÁhhÁhhÁhÁhÁhÁÁhÁhÁhhhÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁhÁhhÁÁhhÁhÁÁhÁÁhÁÁhhÁhhÁÁÁhhhÁhhhÁhhÁhhhÁhÁhÁhÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁhÁhhÁhhÁhÁhhÁÁhhÁhÁhhÁÁÁhÁhÁhÁhhÁhÁhÁhÁhÁhhhhÁhhÁÁÁhÁhÁhhÁÁhÁÁhÁhÁhhÁÁhhÁÁÁÁhÁÁhhÁhhÁhhÁÁÁhÁhhÁhhÁhhÁhhhÁhÁhÁÁhÁÁhÁhÁhÁhÁÁÁhÁhÁÁhhhhhhhÁÁÁhhÁÁhhÁhÁhhÁhÁÁhhÁhÁhhhhÁhÁhÁhÁhhhhhhÁÁhÁÁÁhÁhhÁhÁhÁÁhÁÁhhÁÁhhÁÁÁÁhÁhÁhÁhhhÁhÁÁÁhÁhhÁhhÁhhÁhhhÁÁhÁhÁhÁhÁhÁhÁhÁhÁÁÁhÁhÁhhhhhhhÁÁÁhhÁÁhhÁhÁhhÁÁhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhhÁhhÁhÁhÁhÁhhÁÁhÁhÁhÁÁhhÁhhhÁhÁhhÁhÁhÁhhhÁhÁÁhhhhhhhhÁhhhhhhhÁÁÄÄÄÑÍÑÑÑððððÑÑððÑðÑðÑðÑÍÑðÑðÑððððòïððóðððóðóóóóóóüóóóóüüóóóóðïððÑïÑÑÍÍÍÍÄÄÄÄÄÄÄÁÁÁÁÁhhhccccXXbXXTTTTTTT""TTT"hhhhhÁhÁhhÁhhhÁhhÁhÁhhhÁhhhhÁhhhÁhhhÁhhhÁhhhhÁhÁhhhÁhÁhhhÁhÁhhÁhhhhhhhhhÁhÁ„Á¹•hhÁhÁhhÁhÁhhhÁhhhÁhÁÁhhÁhhÁhhÁhhÁÁhhhÁhhhhÁhÁhhÁhÁhÁhhÁhÁÁhÁhÁhÁhhÁhÁhhhÁhhhÁÁhhhÁhÁhÁhhhÁÁhhhÁhÁÁhhhhhhhÁhÁhÁhÁhhhÁhhhhhÁhÁÁÁhÁhhÁ¹•ÁhÁ¹•ÁhhÁhhÁhÁhÁhÁhhÁhÁhhhhÁhÁhhhhhhhÁhhhhhhhÁhhhÁhhÁhÁhÁhÁhhÁhÁhhhÁ¹•¹•¹•hhÁhhhÁhhhhhhhhhÁhÁhÁhhhh•¹•hhhhÁhÁhhÁhhhÁ•ÁÁhh¹•hÁhhÁh••¹Á••hÁhhÁhhÁhÁhhhÁhhÁhhÁhÁhhh••¹•hhh¹•hhÁhhhhhhÁhÁhhÁhhhhÁhh•„¾¹•hhhhhÁ•¹ÁhhhhÁhhhhhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁhÁÁÁhÁÁÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁÁhÁhÁhÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁÁÁhÁhÁhÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁÁhÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁhÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁÁhÁhÁhÁhÁhÁÁhÁÁhhÁÁÁhÁhhÁÁhÁÁÁhhÁÁÁhÁÁhÁÁÁÁhÁhÁÁhhÁhÁÁÁhÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁÁhÁÁhhÁhÁhÁÁÁÁhÁhhÁÁhÁÁhÁÁhÁhÁÁÁhÁÁhÁhÁhÁÁÁÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhÁÁÁhÁhÁÁhhÁÁÁhhÁhÁÁÁhÁÁhÁÁhÁhhÁhÁÁÁhÁhÁhÁhhÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁÁhÁhÁÁhÁhÁhÁhÁÁÁhÁhhhÁhÁhÁÁhÁÁhÁÁÁhÁÁhÁhÁhÁÁÁÁÁhÁÁÁÁÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁhhÁÁÁhhÁhÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁhÁhÁhÁhhÁÁhÁÁhÁÁhÁhÁhÁhÁÁÁhÁhÁÁhhÁhÁhhhhÁhÁÁhhÁhhhÁhÁhÁÁhhÁhhÁhÁhÁhhÁhhhÁÁÁÁhÁÁhÁÁhhÁhÁÁhhÁÁhhÁhÁhÁhÁhhÁhÁhÁhhÁÁhÁhÁhÁhÁhhhhÁÁhÁhÁhhÁÁhhÁhhÁÁhÁhÁhÁÁhhÁhÁÁhÁhÁÁhhÁÁhhÁhhhÁÁÁhhÁhÁhÁhhÁhÁhhÁhÁhÁhÁÁhhÁhhÁhÁÁÁhÁhÁÁhÁhhÁÁÁhhÁÁhhÁhÁhÁhÁhhÁhÁhhhÁhÁhhÁÁhhÁÁhhhÁhÁhÁhÁhhÁhhhhÁhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁÁhhÁhÁhhÁhhÁÁÁhhÁhhhÁhhÁhÁhÁhhÁhÁhÁÁhhÁhhÁhÁÁÁÁÁhÁÁÁhÁhhÁÁhhhÁhhÁhÁhÁhÁhhÁhÁhÁhhÁÁhhÁÁhhÁÁhhÁhhÁhÁhÁhhÁhhhÁhÁhÁhÁhhÁhÁhhÁhÁhÁhÁhÁhhhÁhhhhhhÁÁÁhhÁhhhÁhhÁhÁhÁhhhÁÁhhÁhhhhhÁhÁhÁhÁhÁhÁhhhÁhÁhÁhÁhhÁhhhhÁhhhhÁhhhhhhÁhÁhÁhhhÁhhÁhhÁhÁhÁhhÁh•¹ÁÁhÁhhÁÁÄÍÄÍÍÑÑÑÑððððððÑÑðÑÑÑÑÑÑðÑÑðÑÑÑÑðïÑðóððððóððóóóóóóóóóóóðóððððððÑÑÑÍÍÑÍÑÍÍÍÍÄÁÄÁÄÁÁÁhhhhhchcccXXXXVTTTTTTTTÁhhÁhÁhhhÁhÁhÁhhÁhÁhÁhhhhÁhhÁÁhhÁhhhÁhÁhhÁhÁhhÁhÁhÁhhhhhhhÁhÁÁÁhÁÁÁÁhhÁhh¹h•ÁhhhhÁhhÁhhhÁÁhhÁhhhÁhÁhÁhhhÁhhhhhÁhÁhÁhÁÁhhhÁhhÁhhÁhÁhÁhhhÁhÁÁhÁhhÁhÁhÁhhÁhhhhÁhhÁhhhhhÁhhÁhÁhhhhÁhhÁhhhhhhhhhÁhÁhÁhÁhhÁhhÁhhhhÁ•¹••¹Á•hhhÁhhhhhÁhhhÁhhhhÁhhÁhhhÁhhhhhÁhÁhhhhÁhhÁÁhhÁhhhÁhÁhhÁhhÁhhùh•Áh•Á•¹•hhhhhÁhhÁhÁhhÁhÁhhÁhhh•¹•ÁhhÁhÁhÁhÁhhhhhhhhh•ÁhhhhhhhÁh•hhhh•¹hhÁhhÁhhhhÁhhhhhhùhhhhh•¹h•¹•ÁhhÁhÁhhÁhhhhhÁhhhÁhh•¹ÁÁ¹„•¹hÁhhhhhÁh•¹hÁhhhhhÁhÁÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁÁÁhÁÁÁÁÁÁÁÁÁÁÁhhÁÁhÁÁÁÁhÁÁÁÁÁÁhhÁÁhÁÁÁhÁÁÁhÁhÁÁÁÁhÁhÁhÁÁÁÁÁÁhÁÁhhÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁÁhÁÁhhÁÁhÁÁÁÁÁÁÁÁÁÁhhÁÁÁhÁÁÁhÁÁÁhhÁÁÁÁÁhÁÁhÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁhÁhÁÁÁÁÁhÁÁhÁÁhÁhÁÁhÁhÁÁÁhÁÁhÁÁÁÁÁÁhÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁhÁÁÁÁÁÁÁÁÁÁhhÁÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁhhÁhÁÁhhÁÁhÁÁÁÁhÁÁÁÁÁÁhÁhÁÁhÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁhÁhÁhhÁÁhÁÁhhÁÁhÁhÁÁhÁÁhÁhÁÁhÁhÁhhÁhÁhÁÁÁhÁÁÁhÁÁhhÁhÁÁÁhÁÁÁÁhhÁÁÁÁÁhÁhÁhÁÁÁÁÁhÁÁhhÁÁhÁhÁhhÁhÁÁÁÁhÁÁÁhÁÁhhÁÁhhÁhÁÁÁhhÁhÁÁÁÁhÁÁÁhÁhÁÁÁhhÁÁÁhÁhhÁÁhÁhÁÁhÁÁhÁhÁhÁhÁhhhÁhÁhÁÁhÁÁÁÁhÁhÁhÁhÁhÁÁhÁÁÁhhÁÁÁhÁhÁhÁhÁhÁÁÁhÁÁhhhÁhÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁhhÁhÁhÁhÁhÁhÁhÁhÁÁÁhÁhÁÁhÁhÁÁhÁhÁhÁÁhhÁÁhÁÁhÁhÁÁhÁhÁÁhÁhÁhhÁhÁhÁÁÁhÁÁhÁÁhhhÁhÁhÁhhÁÁhhhhÁhÁÁhhÁhhÁhÁhÁhÁÁhhhÁhhÁhÁhÁhhÁÁÁhÁÁhÁÁÁhhÁhhhÁhÁhÁhhÁhhÁÁhÁhÁÁhÁhÁhÁhhÁÁhÁhhhÁÁhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhhhÁÁÁhÁÁhÁÁhhÁÁhÁhÁhhÁÁÁhhÁÁhÁÁhÁhhÁÁhÁhÁhhÁhhhÁhhÁhhhÁhhÁÁhÁhÁhÁÁÁhhÁÁhhÁhhÁÁhÁhhhÁhÁhÁÁhÁhhÁhÁhhÁÁhÁÁhhÁÁhÁhÁhhÁÁhÁhhÁhÁhhhÁhhÁhhÁhÁÁhÁÁhhhhÁhÁhÁhÁhÁhhhÁhÁhÁhhhÁhÁhÁhÁhÁhÁhhÁhhÁhhhÁhhÁÁÁhÁÁhÁÁhhhÁhhhÁhÁhÁhhÁhhÁhÁhÁhÁhÁhhÁÁhhÁÁhÁhhhhÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhhhÁhÁhÁhÁÁhhhhÁhÁhÁhhÁhÁhhhÁhÁhhhhhhÁhÁhÁhÁhhhhÁhhÁhhhÁhhÁÁhhhÁhÁhÁhhÁhhhÁhhÁhhhÁhhhÁÁhhÁhÁhhhhÁhhÁhÁhÁhhhÁhÁhÁhhÁhhhÁhhhÁhhhhÁhhÁhÁhÁhÁhÁhhhhÁhhÁhhhÁhÁhhhÁhÁhhhÁhÁÁhÁhÁhhÁhhhÁhhÁhhhhhhÁhÁhÁhhhÁhhhhÁhhÁhhhhhhÁhhÁhÁhhÁhhhhhhÁhÁÁhh•Á¹•¹ÂhÁÁÄÄÄÍÍÑðððððÑððððððÑÑðÑÑÑÑÑðÑððÑððððòðððóðóðóóóóóóóóóóóúóüóóóððððÑáÑÑÍÑÍÍÄÄÄÄÄÄÄÁÁÁÁhhhcccccccXXXTXTT:TTTTThhÁhhhÁhhÁÁhhhÁhhhhÁhhÁh•ÁhÁhÁhÁhhhÁhhhÁhÁhÁhhÁhÁhhÁhhhhÁhhÁhÁhÁhhhhhhÁÁhhh•hhÁhÁhhÁhÁÁhhhhÁhhhhÁhhhhhhhÁÁhhÁÁhhhhhhÁhhhÁhhÁhhhÁhhhÁhhhÁhhhhhhÁhÁhhÁhhhhÁhhÁhÁhÁhhhhhhhÁhhÁhÁhÁhÁhhÁhÁhhhÁhÁhÁhhhhhhhhhÁhhhhhhhÁ•¹•Á„¾Áhhh¹•h¹•hhÁhhhÁhhÁhhhhhÁhhhhÁÁhhÁhhÁhÁhhÁhhhhhhhÁhhhhhhhhhhhhh•hhh¹ÁÁhhÁh¹•hhhhÁhhhÁhhhhÁhhÁhhhh¹•ÁhhhhhhhhhhhÁhhhhhhhÁhhhÁhhÁhhhhÁhh•¹•hÁhhhhhhhÁhhÁhhhh•¹•hhh•hÁ•hhhhhhÁhhÁhhhÁhhhÁh¹•hh•hh•¹¹•¹•¹•hhh¹•h•¹•ÁhhhhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁhÁÁhhÁÁÁÁÁhÁÁÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁhÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁÁÁhÁÁÁhhÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁÁhÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁhÁÁhÁhÁhÁÁhÁÁÁhÁÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁÁÁhÁhÁÁhhÁhÁÁÁhÁÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁhÁÁÁhÁÁhÁhÁÁÁÁÁhÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁÁhhÁÁhÁÁÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁÁhhÁÁhÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁhhÁhÁÁÁhhÁÁhÁhÁhÁÁÁhÁhÁhÁÁÁhÁÁhÁÁhhÁÁÁÁÁhÁhhhÁÁÁÁhÁÁhÁÁhÁÁhÁÁhhÁÁhÁÁÁhÁÁÁÁhÁÁhÁhÁÁhÁÁhÁhÁÁhhÁÁÁhÁhÁhÁhhÁÁhÁÁÁhÁhÁhÁÁhÁhÁÁÁhÁhÁhÁhhÁhÁÁÁhhÁÁhÁhÁhÁÁÁhhhÁhÁÁhÁÁhÁÁÁhhhÁÁhÁhÁhhhhÁÁÁÁhÁÁhÁÁhÁhÁÁhhÁhÁÁÁÁÁÁÁÁhÁhÁÁÁhÁÁhÁÁhÁhÁÁhhÁÁÁhÁÁhhÁhhÁÁhÁÁÁhÁhÁhÁÁÁhhÁÁÁhÁhÁhÁhhÁhÁÁhhhÁhÁhhÁhÁhÁhhÁhhhÁhÁhÁhÁÁhhhÁÁhÁhÁhhhhÁÁÁÁhÁhhÁhhÁhhÁhhhÁhÁÁÁÁhÁÁhÁhÁhÁhÁÁhÁhÁhhÁhhhÁÁÁhÁhÁhÁhhÁÁhÁÁÁhÁÁhÁÁhÁhÁÁÁhhÁÁhhÁhhÁhÁÁhhhÁhÁhhÁhÁhÁhhÁÁhhÁhÁhÁhÁÁhhÁÁhÁÁhÁhhhÁhÁÁÁhÁhhÁhhÁhhÁhÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁÁhhÁhÁhÁhhÁhÁhhÁhÁhÁhhÁÁhhÁÁhÁÁhhÁhÁhhÁÁhhÁhhhÁhhÁhÁÁhÁhÁhhhhÁhÁhÁhhÁhhhÁÁhÁhhÁÁhhhÁÁhÁhÁhhhÁhÁÁhhÁhhÁhhÁhhÁhÁhÁhÁhÁÁhÁÁhÁhÁÁhhÁÁhhÁhÁhhÁhhÁÁhÁhÁhhÁhhÁÁhÁhÁhÁÁhhÁhÁhhÁÁhhhÁhhÁhhÁhhÁhhhÁhhhhhhÁhÁhhÁhhhÁhhÁhÁhÁhhÁhÁhÁhÁhhhhÁhÁhhÁhÁhhhÁhhÁhhÁhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhÁhhÁhhhhÁhhÁhhhhhhÁhhÁhÁhhÁÁhÁhÁhÁhÁhhÁhhhÁhhÁhhÁhhhÁhhhhÁhhhÁhhÁhhhÁhhÁÁhhÁhhhÁhÁhÁhhhhÁhhÁhhÁhhÁhÁhhhÁhhhhÁhÁhÁhÁhhÁhÁhhhhÁhÁhÁhhÁhhhÁhhhhÁhhhhhÁhhÁhÁhhÁhhÁhÁhÁhÁhÁÁhhhÁhhÁhhÁhhhÁhhÁhÁhÁhÁhhÁhhhÁhÁhÁhhÁhhhhhÁhÁhhÁhhhhÁhhÁh••ÁhhÁÄÁÄÄÍÍÍÑðððððÑÑðÑðÑÑððÑÑÑÑÑðÑððïçðÑóððððòóóóóóóðóüóóüóüüóüóóðððððïÑÑÑÑÍÍÍÍÄÄÄÄÁÄÄÁÁhhÁhchcccbbXXXXTTTTTT"TThÁhÁhhhÁhÁhhÁhhÁÁhÁhh•¹hÁhhÁhhÁhhhÁhÁhÁhhhhhhÁhhhhÁhÁhhhhÁhhhhÁhÁhhhÁhhhhhÁhhhhÁÁhhhhhhÁhhhhÁhhÁhhÁÁhÁhhhhhÁhhhhÁhhhhhÁhhÁhhhhÁhhÁhhhhÁhhÁhhÁhhÁhhÁhÁhÁhhhhhÁhÁh•¹hÁhhÁhhhhhhÁhhhhÁhhÁhhÁhhhhhÁhhhhhÁhhhÁhÁhhhÁhh•¹h•¹hÁ••hÁ•hÁhhhÁhhhÁhhhÁhÁhhÁhhhhhÁhhÁhhhhhÁhhÁhhhhhhÁhhhhhhhhhhhhhhÁ•hhhhh•¹•hÁhhhhhhhhhhhhhhÁh•¹h•¹•hhhhÁhhhhhhhh•¹•¹hhh•¹hh•¹hhhÁh•¹hh•Áhh•¹hhÁÁhhhhh•¹hhh•¹•ÁhhhhhhhhhÁhhhhhhhÁhhÁ•¹•¹•hhhh•¹h••¹Á•hhhh•hh•¹•hhhÁhhhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁhÁhÁhÁÁhÁÁÁÁhÁhÁÁÁÁhhÁÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁhÁÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁhÁÁÁÁÁÁÁhÁÁhÁÁhÁÁÁhÁhÁÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁÁÁÁhÁhÁÁÁÁhÁhhÁhÁhÁÁÁÁhÁhÁÁÁÁhÁhÁÁÁÁÁÁÁÁÁÁhÁÁÁhÁÁÁhÁÁhÁhÁhÁÁÁhÁÁÁÁÁÁhÁÁÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁÁhÁÁÁhÁÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁhÁhÁÁhÁÁhhÁÁÁÁÁÁhhÁÁhÁhhhÁhhhÁhhÁÁÁhÁhÁÁÁhÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁÁhÁhÁhÁhhÁhÁÁhÁÁÁÁÁÁhÁhÁhÁÁÁÁÁÁhÁÁhÁÁhÁÁhÁÁhÁÁÁhÁÁhÁhÁÁÁhÁhÁhÁÁhÁÁÁhÁhÁhÁÁÁhhÁÁÁÁÁÁhhÁÁhÁhhhÁhhhÁhÁhÁÁhÁhÁhÁhÁhÁÁÁÁÁÁhÁhÁhÁhÁÁhÁhÁhÁhhÁhhÁhÁÁhÁÁÁÁÁÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁhÁÁhÁÁhÁÁÁhÁÁÁÁhhÁÁÁhÁhhÁÁhÁÁÁÁhhÁÁÁhÁhÁÁÁÁÁÁÁhhÁÁhÁhhhÁhhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁhÁhÁhÁhÁhhÁhÁhhÁhhÁhhÁhÁhÁÁÁÁÁhÁhhÁhhÁÁÁÁÁhÁhhÁhhhÁhÁÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhÁÁÁhhhÁhÁÁhhÁÁÁhÁÁhhhÁhÁÁhhhÁhhhhÁhÁhÁhhÁhÁhÁhhÁÁhÁÁhÁÁhÁhhÁhhhÁhÁhhÁhÁhhhÁhÁhÁÁÁÁÁhÁhÁhÁhÁÁÁÁhÁhÁhÁhhÁhÁÁÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhÁhÁhhÁhÁhÁÁhÁhÁÁÁhÁhhÁhÁÁhhhÁhhÁhhhÁhÁhhhÁhÁhhhhÁÁhÁÁhÁhÁhhÁhhhÁÁhhhÁhhÁhhÁhÁhÁÁhÁÁhhÁhÁhÁhÁÁhÁhÁhhÁhÁhÁhÁÁhÁhÁhhÁhÁhÁhÁhÁhhhÁÁhÁhÁhhhÁhÁhÁhhÁÁÁÁhÁhhÁÁhÁhhhÁhhhhhhÁhÁhhÁhÁhhÁhÁhÁhÁÁhÁhÁhhhÁhhÁhÁhhÁhhÁhhhÁhhÁhÁhÁhhÁhhÁhÁÁhÁhhÁhhÁhhhhhhÁhhÁhhhÁhhÁhhÁhÁhhhÁhhhÁhÁhhhÁÁhÁhhÁhÁÁhÁhhÁhhÁhhhhhhhÁhhÁhÁhhÁhÁhhhhhÁhÁÁhÁhhÁhhhhhhÁhÁhhÁhhhhhÁÁhhÁhÁhÁhhhhhÁhhÁÁhhhhÁhhÁhhÁhhÁhÁhÁhhÁhÁhhÁhÁhhhhÁhhÁhÁhhhhÁhhÁhhÁhÁhÁhhhÁhhÁhhhÁhÁhhhhÁhhhhhhÁhÁhhhÁÁhÁhÁhÁhhhÁhhhÁhÁhhÁhhÁhhhÁÁhhÁhÁÁhhhhÁhhÁhÁhhhÁhÁhÁhÁÁhhÁhÁhÁÁhÁhhÁhÁÁhÁhhhÁhhÁhÁhhhhÁhhÁhhhÁhÁhÁhhÁhÁÁhhhhhhhhhhÁhhhhÁhÁhÁhhhÁÁhÁhÁÁÁhhhÁhhhÁhÁhhÁhhh¹•¹ÁhhÁÄÄÍÍÑÑÑóðïÑððÑÑðÑÑÑÑÑÑÑÑÍððÑÑðÑððïóðððóððððóðüóóóóúóóüóóóóóóóóððÑÑÑÑÍÍÑÍÍÄÄÍÍÄÄÄÁÁÁÁhhhhccccXXXTXXXT"TTTTThhÁhÁhÁhhhhÁhÁhhÁhhhh¹••hhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhÁhhhÁhhhhhhÁhhÁhhh¹Á¹•hhhhhhhhhÁhÁhhhhhhhhhÁhhÁhhÁhhhh¹•hhÁhÁhhhÁhhhhhhÁhhÁhhÁhhhhÁhhhhÁhhhhhhÁhhhhhhÁhhh••¹•hhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhh¹•hhhh¹••hÁ¹•hhhhÁh¹•hhÁhÁhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhÁhÁÁh¾„¹•¹•¹•Á¹•¹•hhhhhhhh¹•h•h¹•h¹•hhhhhhhhhhhhhhÁ¹••hhh¹•h¹•¹•¹Ãhh•h••¹•h•¹•¹••¹•Áhh•¹•hhhh••¹•hhhhh¹••¹•h¹•h¹•h¹•hhhhÁhhhhhhhhhhh•„¹Á¹•hh•¹ÁhÁh¹•¹•h¹•hhhh¹•hhhhhÁhÁÁhÁÁÁÁhhÁÁÁÁhÁÁÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁhÁhÁÁÁÁhÁÁÁÁhÁhÁhÁÁÁÁÁhÁhÁÁÁÁhÁÁhÁÁÁÁhÁÁhÁhÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁÁhÁÁÁÁÁÁÁhÁhÁhÁÁÁÁhÁÁÁhÁÁÁÁÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁÁhÁÁhÁÁÁÁÁÁhhÁÁÁhÁhÁÁhÁhÁhÁÁÁÁhhÁÁÁhhÁ¾hÁÁÁhÁhhhÁÁÁÁhÁÁhÁÁhÁhÁÁÁhhÁÁÁÁÁÁhÁhÁÁhhÁhÁhÁÁhÁÁÁÁÁhÁhÁhÁhÁÁÁÁhÁÁhhÁÁÁÁhÁÁÁhhÁÁhhÁÁÁhÁhÁÁhÁÁÁhÁhÁhÁhÁhÁÁhÁhÁÁhÁhÁhÁÁÁÁhhÁÁÁhhÁhhÁÁÁhÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁÁhhÁÁÁÁhÁhÁhÁhÁhÁhÁhÁÁhÁÁhÁÁhÁhhhÁhÁhÁÁhÁhÁhÁhÁÁhÁÁÁhhÁÁhhÁÁÁhÁhÁÁhÁÁÁhÁhÁhÁhÁhÁÁÁhÁhÁÁhÁhhÁÁhÁhhÁÁÁhhÁhhÁÁÁhÁhhÁhÁÁÁhÁÁÁhÁÁhÁhÁÁhÁhÁÁhÁÁhÁhÁhÁhÁhÁhÁÁhÁhÁhÁhÁhhÁhhÁÁhÁÁhÁhhÁÁhÁhÁÁhhÁhÁhhÁhÁhÁhhÁÁhÁhÁhÁhÁhhhÁÁhÁhhÁhÁhhhhÁÁhÁhÁhÁÁhhhhhÁhÁhÁhÁhhÁÁhhÁÁhÁhÁhÁhÁÁhhÁhÁhÁhhhÁhÁhhÁhÁhhÁhÁhÁÁhÁhÁhÁhhÁhÁÁhÁhÁhhÁÁÁÁhÁÁhhhÁhÁhÁÁhhhÁÁhÁhÁhÁÁhÁhhhÁÁhÁhhÁÁhÁhhhhÁÁhÁhÁhÁhhhhhÁhÁÁhhhhÁÁhÁhÁÁhÁhÁhhÁhÁhhhÁÁhÁhhhÁhÁhhhhÁhÁhÁhÁhÁhÁhhÁhhhÁhÁÁhÁhÁhÁhÁÁÁhÁÁhhhÁhÁhÁÁhÁhÁÁhÁhÁhÁhÁÁhhhÁhhÁhhÁhÁhhhhhÁhÁhÁhÁhhhhhhhÁÁÁhhhhhÁhÁhÁhÁhÁhÁhÁhÁhhÁÁhÁhÁhhÁhÁhhÁhhÁhÁhÁhÁhhÁhhhhhhÁhhÁhhÁhhÁhÁhÁhÁhhhhÁhhhÁÁhhÁhÁhhÁhhhhÁhhhhÁhhhhhhÁhÁhhhhÁhÁhhÁÁhhhhhhhÁhÁhhhhhÁÁhhhÁhhÁhhhhÁhhhhhÁhÁhhhhÁhhhhÁhhÁhÁhÁhÁhÁhhhhhhhÁhÁhÁhhhhÁhÁhhÁhhhÁÁhhhÁhhhhhÁhhÁhÁhhÁhhhhÁhÁhhhhÁhhhhhhhÁhhhhÁÁhhhhhhÁhÁhhhhÁhÁhhÁhhhÁhhÁhÁhhhhhÁhÁhhhhhÁhhhhÁhÁÁhhÁÁhÁhhhhhhhhhÁhhÁhhÁhÁhÁhhÁhhhhÁhhhÁhhhhhÁhhÁhÁhÁhÁhhhÁhÁhhhhhÁhhhhhÁÁhhÁhÁhhhhhhhÁhÁhhhhhÁhÁhhÁhhÁÁhhÁhhhÁhhÁhÁhhhhhÁhhhhhÁhÁhhhÁhÁhhhhhhhhhhÁhÁÁhhhhÁhhhÁhhhÁÁhhhÁhhhhhÁhhÁhhhhÁÁhhhÁhhhhhÁhhhhhhhhÁhhhÁhhhÁhhhÁhhÁhhhÁhÁhhhÁhhhhh•¹Á„¾hÁÁÁÄÄÍÍÍÑÑðððððÑÑÑðððÑÑÑðÑÑÑðÑÑÑðÑðïððððïóðóðóóúðóóóóóóüóóóóóðóððððÑÑÑÑÍÍÍÍÍÄÄÍÄÄÁÁÁÁÁhhhchccccXcXXTXTTTTTThhhÁhhhhÁhhhhhÁhhÁh•ÁhhÁ•¹hhhhhÁÁhÁhÁhÁhÁhÁhhhÁÁhhÁhhhhÁhhhhhÁhhÁhÁhhhÁ•¹••¹•hhhhhÁhhÁhhhÁhhhÁhhhhhhhhÁhhhhhh•Á•¹hhhhhhhhhhù•¹„hhÁÁhhÁhhhhhÁhhhhÁhhÁhhhhÁhhhhhhhhh•hhhÁhhÁhhhhÁhhÁhhhÁhÁhhhhhhhhhÁhhÁhhh•¹••hhhh•¹•hhh¾Á•¹h•¹•hhhhhÁhhÁhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhh•¹•••¹•Á•h•¹hhh•¹•hhhh•hh•h•¹•¹Á•¹Á„¾hhÁhÁh•hh•¹•Áhh•••hhhhhhhh•¹•h•h•¹••¹hh•¹hh•¹hh•¹hh¹•h•h•¹•h•¹•hh•hh•hh•¹„¾hhÁÁhhhhhh•¹•¹••¹•hhhh•h•¹hh•Áhh•h•¹h•¹•hÁhhÁhhhÁÁÁÁhÁÁÁÁÁhÁÁÁhÁhÁÁhÁhÁÁhÁhÁÁÁÁhÁÁhÁÁÁhhÁÁÁÁÁÁhhhÁÁÁhÁÁÁÁÁhÁhÁÁÁÁÁÁÁhÁÁhÁhÁÁÁhhÁÁhÁÁÁhÁÁÁÁÁÁÁhÁhhÁÁÁÁÁhÁÁÁhÁhÁÁhhÁÁhÁhÁÁÁÁÁÁhÁÁhÁhÁÁhÁhÁhÁhÁÁÁhhÁhÁhÁhÁÁhÁhhÁÁhhÁÁhÁÁÁhhÁÁÁÁÁhÁhhÁÁÁhÁhÁhÁhÁhÁhÁÁÁÁhÁhÁhÁhÁÁÁhhÁÁhÁÁÁhÁÁhÁÁÁÁhÁhhÁhÁÁhÁÁÁhÁÁhÁhÁhÁÁhÁÁÁÁÁhÁÁhÁÁhÁhÁhÁhÁhÁhÁÁÁÁhhÁhÁÁhÁhÁhÁhÁhÁhhÁÁhÁÁÁhhÁhÁÁÁhÁhhÁÁÁhÁhÁhÁhÁhhÁÁÁÁÁhÁÁÁhhÁhÁhÁhÁÁhÁhÁhÁÁÁhÁÁÁhÁhhÁÁÁÁhÁhÁÁhÁhÁÁhhÁÁhÁÁÁÁÁÁÁÁhÁÁhhhÁhÁhÁhÁhÁhÁhhhhÁhÁhÁhÁhÁhhÁÁhhÁhÁhÁÁhhÁhÁÁhÁhhhÁÁÁhÁhÁhÁhÁhhÁhÁÁhhÁhhÁhhÁÁhÁhÁÁÁhÁÁhhÁÁhÁÁhhhhhÁhÁhÁhÁhÁhhÁÁhhhÁhÁhÁhÁÁÁhÁhÁÁhhÁhÁhÁhÁhhÁÁhhhhhhÁhÁhÁÁhhhhÁÁhhÁhÁÁÁÁhhÁhÁÁÁhÁhhÁÁÁhÁhÁhÁhÁhhÁÁÁÁhhhÁhhhhÁÁhÁhÁhÁÁÁÁhhÁÁhÁÁhhÁhhhhÁhÁhÁÁhhÁhÁhhhhÁhÁhÁÁÁhÁÁhÁhhhÁhÁhÁhhÁhÁhÁhhhhhÁhÁhÁÁhhhhÁÁhhhÁhÁÁÁhhÁÁhÁÁhÁhhÁhÁhÁhÁhÁhÁhhÁÁÁhÁhhÁhÁhhÁhÁhÁhÁhÁhÁhhÁhÁÁÁÁhhhhhhÁÁhÁhÁhÁhÁÁhÁhhÁhÁhÁÁÁÁhÁhÁhhhÁhÁhÁhhhhhÁhhhhhhÁhhhÁhhhhhhÁhhÁhhÁÁÁhhhÁhÁÁhÁhhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁhhhhÁhÁhhÁhÁhÁhÁhÁhÁhÁhÁhhhhhÁhÁhhÁhhhÁhÁhhhÁhhÁhÁÁhÁhÁhÁhhhÁhhÁhhhhhÁhhhhhÁÁhhÁhÁhhhhhÁhhhÁhÁhÁhhhÁhÁhhÁhhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁhhhÁhÁhÁhÁhÁhhÁhhhÁhÁhhÁhhhhhÁhÁhhÁhÁÁhÁhÁhhÁhhÁhÁhÁhÁhhÁhhhhhhÁhhÁhÁÁhÁhhÁhÁhhhÁhÁhhhhÁhÁhÁhÁhÁhhhÁÁhÁhÁhhÁhÁhhÁhÁhhÁhhhÁhÁhhÁÁhhhhhÁhhhÁhÁhhÁhhÁhÁhÁhhhhhhhÁhÁhhÁhÁhÁhÁÁhÁhÁhÁhÁhÁhÁhÁÁhhhÁhhÁhhhÁhÁhhhhhhÁhhhÁÁhhÁhhÁhhhhhÁhÁÁhhÁhÁÁhÁhhÁÁhhhÁhhÁhhÁhhÁhÁhhhhÁhhhhÁhhhhÁhhÁhÁhhÁhhÁhÁhhhÁhÁhÁhhÁhhhhÁÁhhhÁhhÁhÁhÁhÁhÁÁhhhÁhhhhhhhÁhhhhhhhÁhhhÁhhhhhhÁhÁÁhhÁhÁÁhhÁhÁhhÁhhhÁhhÁhhhÁhhhhhÁhhÁhÁÁhhh•¹ÁhhÁhÁÁÄÄÄÑÑÑðÑððððÑððððððÑðÑðÍÑðÍðððÑÑðððððÑóððððóððóüóðóüüóóóóóóóóðïÑÑÑÑÑÑÍÍÄÍÍÍÄÄÄÄÁÁÁhhhhhcccdcXXXXTTTVTTTTTTTTThÁhhhhhÁhhhhhhhhhhhhhÁhhhhÁ•¹•¹•hhhhhhhhhÁhhhÁhhhhhhhÁhhhhhÁhhhhhhhhhhhhh•hh•hhhhhhhhhhhhhhÁhhhhÁhhhhhhhhÁhh¾hhhÁÁ•¹•h¹•hhhh•¾ÁhÁhhhhhÁhÁhhhhhhhhhhÁhhhhhhhhhh¹•hhhhhhÁhÁhhÁhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhh•hhhhh¹•¾hhh„¹•Á•Áh•¹•hh¹•hhhhhhhhhhhhhÁhhÁhhhhhhÁhhhÁhÁhhhhhÁÁ¹•¹•¹•hhhhÁ•¹•h•¹•hhhhhhhhhh•ÁÁh•¹•h¹•hhh¹•hhh•hhh¹•¹•¹•hhh¹•hhhhh¹•¹•hhhh•hÁh•¹••¹•h•¹•h¹•hhh¹•hÁ•hhhhhhhhh¹•hhhhhÁhh¹•h¾„¾h•hhh¹•hhh•hhhh¹•hhhh•hh•hhhhhhhÁhÁÁhÁhÁhÁÁÁhÁhÁhÁhÁÁÁÁÁÁÁhÁhÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁÁhÁhhÁÁhhÁhÁÁhÁhhÁÁÁÁhhÁhÁhhÁÁÁÁhÁhÁÁÁhÁÁÁhÁÁÁhÁhÁÁhhhÁhÁhÁÁhÁÁÁhÁhÁÁÁhÁÁhhÁhÁÁhÁÁhÁhÁhÁÁhÁÁÁÁhÁhÁhÁÁÁhÁhÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhÁÁhÁÁhÁhhÁhÁhhÁhÁÁÁhhÁÁÁÁhÁhÁÁhhhÁhÁÁhÁhÁÁÁhÁÁÁhÁÁÁÁÁhÁhhÁhÁhhhÁÁÁhÁÁhÁhÁÁhhÁhÁhÁhÁÁÁhÁhÁhÁhÁÁhÁÁhÁhÁhÁhÁÁÁhÁÁÁÁÁhÁÁhÁÁhÁÁhÁhÁÁhÁhÁhÁhÁhhhhÁhhÁÁhÁhhhhÁÁhÁhhhhhhhÁhÁÁhÁhÁÁÁhÁÁhhÁÁhÁhhÁÁhhhÁhhÁhÁÁhÁhhÁhÁhÁhÁhÁhhhÁÁhhÁhÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁhÁhÁhÁhÁhÁhhÁhhÁhhÁhÁÁhÁÁhÁhhhhÁhhÁÁhÁhÁhhÁhÁÁhhÁhhhhÁhÁÁhhÁhÁÁhÁÁhhÁÁhÁhhÁhhhhÁhhhÁhÁhÁhÁhÁhÁhÁhÁhhhÁhÁhhÁhÁhÁhhÁhÁÁÁhÁhÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁhhÁhhÁhÁÁhÁÁhÁhhhhÁhhhÁhÁhhhÁhÁhÁhÁhÁhhhÁhÁÁhÁhÁhÁhÁÁhhÁÁhÁhhÁhhhhÁhhhhÁÁhÁhhÁhÁÁhhÁhhhhÁhÁhÁÁhÁhÁhhÁhÁÁÁhÁhhÁhÁÁhÁhÁhÁhÁhÁhÁhÁhÁhhhhÁhhÁÁhÁhhhhhÁhhhhÁhÁhhhhhÁhÁhhhhhhhhÁhÁhÁhhÁhÁhÁhhÁhÁhhhÁhhhhhhhÁhÁhÁhhhhhhÁhhÁhhhhÁhÁhÁhhhÁhhhhÁhÁÁhhhhhhÁhÁhÁhÁhÁhÁhhÁhhÁhhhhhÁhhÁhhÁhhÁhhÁhhhÁhhÁhhhÁhÁhÁhhhhhhhÁhÁhhhÁhhÁhhÁhhhÁhÁhhÁhhhhhhhÁÁÁhÁhhhÁhÁhhhÁhhhÁhÁhhÁhhÁhhhÁhhÁhÁhhÁhhhhhÁhÁhÁhhÁhÁÁÁhhÁhhÁhÁhhhÁhhÁhhhhhhhhhÁhhÁhhhÁhÁhÁhhÁhhhhÁhhÁhhÁhhÁhhÁhhÁhÁhhhÁhhhhhhhÁhÁhhÁhÁhhÁhhhÁhhhhhÁhhÁhhÁhÁhÁhhÁhÁhhhhhhhhÁhÁhÁhhÁhÁhÁhhÁhhÁÁÁhhÁhÁhÁhhÁhhhhhhhhÁhhÁhhhÁhÁhhhhhhhÁhhÁhhhhhÁÁhÁhhhhÁhhhhÁhhhhhhhhÁhÁhhhhhÁhhhÁhhhhhhhhÁÁhÁhÁhhhhÁhÁhhhhhhÁhhÁhÁhhhhÁhhÁhhÁhhÁhÁhhhÁhÁhhhhhÁÁhhhÁÁhhhhhÁhhÁhÁhhhhÁhÁhÁÁhhhhÁhhhÁhÁhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhÁhhhhhhhhhhhhÁhÁÁhÁhÁhhÁhhhÁhhhhhÁhhhÁhhhhhhÁhhhhhhhÁÁhÁhhhhÁhhÁhÁhhhhhhÁhhÁhhhhhhh•ÁhÁhhhÁÁÄÄÍÍÍÑÑÑðÑððÑÑÑÑÑÑÑÑÑÑðÑÑÑÑðÑÑððÑððððïóóðóóóóóóóóóóóóóüóóóððóððððÑÑÑÑÍÍÍÍÄÄÄÄÄÁÁÁÁÁhhhhhhcccXccXXXTTTT:ThhhhÁhhhhÁÁhÁhhh•¹hhhhhhhÁÁ•hhhhÁhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhÁhhh•¹•¹hhhhhh•¹•¹hhhhhhÁhhhh•¹Áhhh•¹•¹•¹hhhÁ„hh•¹Áh„¾h•h•¹„¾Á¹•¹hhhhhhhhhhhhÁhhÁhhÁhhhhhhù•¹•¹•hÁ•¹hhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhh•¹hh••¹h•¹„¾hhhhhh•h•¹•hhhhhhÁhhhhhÁhÁhhhhhhhhÁhhhhhhhhhhhhh•hÁh•¹••¹•¹hh•hÁ¹h•¹•¹h•¹hhh•¹hhh•¹•hh•hhhh•hhhhhhhh•h„¾h•¹•hhhhh•h•hhhhhhhhh•¹•h•¹•h•¹h•¹•hh•¹¾„Áhh•¹h•¹h•¹h•¹•hhh•¹h•¹••¹•¹hhhh•¹•hhhhhhhhh••¹hhhhhhhh•¹hhÁhhÁÁhÁÁÁhhÁÁÁÁÁhÁhÁhÁÁhÁÁhÁÁÁÁÁÁhÁhÁÁhÁhÁhÁÁhÁhhÁÁÁhÁhhhÁhÁÁhÁhhÁÁÁhhhÁÁhÁhÁhhÁhÁhÁÁhÁhÁÁhÁhhhÁÁhÁhÁÁhhÁÁhÁhhÁÁhÁÁhÁÁhÁÁhÁhÁhÁhÁhhÁÁÁhÁÁhÁÁÁhÁhÁhÁÁhÁhhÁÁÁhÁÁÁhÁhÁhÁhÁhÁhÁhÁhÁhhÁÁÁÁhhhhÁhÁÁhÁhhÁhÁhhÁhÁÁhÁÁhhÁhÁhÁhhÁhÁhÁhhhhÁhhhhÁÁhhÁÁhhhhÁÁhÁhhÁÁhÁhÁhhÁhhÁhhÁhÁhÁhÁhhÁÁhÁhÁhÁÁhÁhhÁÁhÁhÁhÁhhÁhhÁhhÁhhÁÁhhÁhÁhÁÁhhhhÁhhÁhÁhhÁÁhhhhÁhÁhÁÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhhÁhhhÁÁhhhhÁÁhÁhhÁÁhÁhÁhhÁhhÁhÁhÁÁhÁhÁhhÁÁhÁÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhhÁhÁÁhÁhhhhhÁhÁhÁhhÁhÁhhhÁhÁhÁÁhhÁhÁhÁhhÁhhÁhÁhhhÁÁhhhÁhÁhhÁhhhhÁÁhÁhÁhÁhÁhhÁhÁhhÁhhÁhÁhÁhÁhhÁhÁhÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhhhhÁhÁhhhhhhÁhÁhÁhhÁhÁhhhÁhÁhÁÁhhÁhhÁhÁhhhhÁhÁhhhÁÁhhhÁhhhhÁhhhhhÁhhÁhÁhhÁhhÁhhhhÁhhhÁhhhÁhhhÁhÁhÁhhÁhhhÁhhÁhÁhÁhÁhhÁhhÁhhÁhhÁhhhhhhÁÁhhÁhhhhÁhhhÁhhÁhhhhÁhhÁhÁhhhÁhhhÁhhÁhÁhhhhhÁhhhhÁhhhhÁhhhhÁhhhÁhhÁhhÁhhÁhhhÁhhhÁÁhhÁhhhÁhhÁhhhÁÁhhÁhÁhÁhÁhÁhÁhhÁhhÁhÁhhÁhhhÁhhÁÁhhhhhhhhÁhhhhÁÁhhhhÁhÁÁhÁhhhhÁhhhhÁhÁhhhhhhÁhhhhÁhÁhÁhhhhhÁhÁhÁhhÁhhÁhhÁhhhÁhhhÁhÁhÁhhhÁhÁhÁhÁÁhÁhÁhhÁhÁhÁhhÁhhÁhhhhhhhÁÁhhÁhÁÁÁhÁhhhÁhhÁhÁhhÁÁhhÁhÁhhÁhÁhhhÁhhÁhhÁhhÁhhhhhÁhhhhhhÁhhÁhÁhhhÁhhhhÁhhhÁÁhhÁhhÁÁhhÁhÁhhhhhÁhhÁhhhhÁhhÁhÁhÁhÁhhÁhhhÁhhhhÁhhÁhhhhhhÁhhhhhÁhhhÁhÁhhhÁhÁhhhhhhhÁhhhhÁhhÁhhhhÁhhhÁhhÁhÁhÁhhhhÁhhÁhhÁhhhhhhhhhhhhhhÁÁhhhhÁhhhÁhhÁhhhÁhÁhÁhhhhhÁhhÁhhhÁhhÁhhhhhhhÁhhhhhhÁhÁhhhhhÁhÁhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhÁhhhÁhhhÁÁhhÁhÁhÁhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhhhhhÁhhhhhÁhhhÁhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhh¹•¹•hhhhhÁÁÁÍÄÍÑÑÑÑðððÑÑðÑÑðÑÑðÑÑÑðÑÑÑÑÑðÑðððððððóððóóóóðúóóóóüóóüüóððóóðððÑðÑÑÍÑÑÄÄÍÄÄÄÄÁÁÄÁÁÁhhhccccbbXXXXXXTTTTThhhhhhhhhhhhhÁhÁhh••¹•h¾„¹•¹•¹•hhhhhhÁhhhhhhhhhhhhhhhhhhhhÁÁhhhhhhhh•Á•Áh¹•hh••¹•hhhhhhÁhh••¹•hh•Á••¹•h¹•hh•hhh¹•¹•hh¹•„¾•„¹•hh¹•ÁhÁhhÁhhhhhhhhhhhhh•Á•¹•hhh•¹•hhhhhhhhhÁhhÁhhhhhÁhhhhhhhhh¹•h•¹•¹••¹•h•hh•h¹•hhhhhhhh•¹•hhh¾„¹•h¹•¹•hhhhhhhhÁhhhhhhÁhhhhhÁhhhhhÁhh¹•h¾Áhhhhh•Áhh••hh••¹•h•hhhh¹•hhhhhhhhh¹•h¹•¹•hh¹•¹••¹•hhhhhhh¹•¹•hhhhh¹•hh¹•hhhh•¹•h¹•hh•hh¹•hh•hh•hh•hh•hhhhh•hh•¹•hh••hhhhh•¹•hhhhh¹•hhhh•hh¹•h¹•hh••hhhÁhÁhÁhÁhÁhÁÁhÁhÁhÁÁhÁhÁÁÁhÁhÁhÁhÁÁÁÁhÁÁhhÁÁhÁhhhÁÁÁhÁhÁÁÁÁÁhÁhhÁhÁÁhÁÁÁÁÁhÁhhÁhÁhÁhÁÁÁÁÁhÁÁhÁÁÁÁhÁhÁhhÁÁhhhÁhhÁÁhÁhhÁhÁhÁhÁhÁhÁhÁhhhhÁhhhhÁÁhhÁÁhÁÁhÁhÁhÁhhÁhhÁhÁÁÁhÁhÁhÁhÁhÁhhhÁ„ÁhÁhÁÁhÁÁhÁhhÁhÁhhÁÁhÁÁhÁhhÁhÁhÁhÁhÁÁhhÁÁÁhÁÁÁhhÁhhhhÁÁhhhhÁhÁhÁhhÁhhÁhhÁhÁhÁhÁhÁhÁÁhhhhÁÁhhÁÁhÁÁhÁÁhÁÁhhÁhhÁhÁÁhÁÁhÁhhhÁhÁhhÁhÁÁhhÁhÁÁhÁhÁhhÁhÁhhÁÁÁhÁhÁhhÁÁhhÁhÁhÁÁhÁhÁhÁhÁÁhhÁhhhÁÁhhhhhÁhÁhÁhhÁhhÁhhÁhhÁhÁhhÁhhÁhhhhÁÁhÁhÁhÁÁhÁhÁÁhÁhÁhhÁhÁÁhÁÁhÁhhhÁhhhhhÁÁhÁhhÁhÁhÁhÁhhÁhÁhhÁÁÁhÁhÁhhÁhhÁhÁhÁÁhÁhÁÁhÁhÁÁhhÁhhhÁÁhhÁhhhhÁhÁhhÁhÁhÁhhhhÁhÁhhhhhÁhhhÁhÁhhÁhÁhÁhhhhÁhÁhhhhÁhÁÁhÁhhÁhhÁhhÁhhhÁÁhÁhhÁhÁhÁhÁhhhhÁhhhÁhÁhhÁhhhÁhhhhÁhÁÁhhhÁhhÁhÁhhÁhhhhÁhhhhhhÁhhhhÁhhhhhÁhhhhhÁhhhhhÁhhhhhÁhhÁhÁhÁhhÁhÁhhhhhhÁhÁÁhÁhhÁhhÁhhhhhhÁhÁhhhÁhÁhÁhhhhhhÁhhÁhÁhÁÁÁhhhÁhÁhhÁhÁhhÁhÁhhÁÁhhÁÁhhhhÁhhhhhhÁÁhÁhhÁhhhhÁhhhhhÁhhhhhÁhhhhÁhhÁhÁÁhÁhhhhÁhhÁhhhÁhhÁhÁhhÁÁhÁhhÁhhhÁhÁhÁhÁhÁhÁhÁhhhhÁhhÁhÁhÁhÁhhÁÁhÁhÁhÁhÁhÁhÁhhÁÁhhÁhhhÁhÁhhhhhhÁhhÁhhÁhhhhÁhhhhÁhhhhhhÁhÁhhÁhhhhhÁhÁhÁhhÁhhÁhhhÁhÁÁhÁÁÁhhhÁhhhhhhÁhÁhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhÁhÁhÁÁhÁhhhhhÁhhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhÁhhhhhÁhhÁhÁhhÁhÁhÁhhhhhÁhhhÁhÁhhÁhhhÁÁhhhhhhÁhhhhÁhhÁhhhhhhhhhhhÁhÁhhÁhhÁhhhÁhÁhÁhhhhÁhhhÁhhhhÁhhhhhhhhhhhÁÁhhhÁhhÁhhhhÁhhhhhhhÁÁhhhÁhÁhhhÁhÁhÁhhhÁhhhhhhhhhÁÁhhÁhhhÁhhhhhhhÁhhhhÁhhhÁhhhhhhÁhhhhÁhhhhhhhhhhhhhÁhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhÁhhhhÁhÁÁhhhhhhhhÁhÁhÁhhhÁhhhhÁhhÁhhhhhhhhÁhÁhhhhh•¹•¹Á••hhhhhhhÁÁÄÄÍÍÑÍððóðóððÑðÑððÑÑÑÑÑÑÑðÑðÑðÑÑððððððððððóóððóúóóóóúüóóóóóóðïÑÑÑÑÑÑÑÑÍÍÍÄÍÄÄÄÄÁÁÁÁhhÁhhccXcXXXXTTTTTTTTTTThhhhÁhhhhhhhhhhh•¹h•hhÁhh•hh•¹hhÁhhhhÁhhhhhhhÁhhhhhÁhÁhhhhhhhh•¹hh•¹hÁhh•hh•¹•¹Á•Áhhhhhhhhhhh•hÁh•¹•¹¹•hh•hhhhhhh••hh•¹Á„¾¹h•¹•¹••hhhhhhhhhhhhhÁhhhhhh¹•¹hh•¹hh•¹••¹hhhhhhhhhhhhhhhÁhhhÁhh•¹•¹•hh•¹h•hh•¹•hhhhhhh•h•¹•¹•¹hh•h•¹h•¹h•hhÁ•hhhhÁhhhhhhhhhhhhhhhhhhhhhhhhh•¹••¹hhhhhhhhhh•¹•¹hhh•¹hhhhhh•¹••¹h•¹•¹•¹•hh••hhh•Áhhh•¹•¹•¹hh•Áh•¹•¹•hhhh•hh•¹„¾h•¹•hhh•¹•hhhhhhhhhhhhhh•¹hhhh•¹hhhhhh•¹hhhh•¹hhhh•hhhhh•¹••hh•hhh•¹hhhhhÁhÁhhÁÁhÁhÁhÁÁhÁÁhÁÁÁhÁhÁhhÁhÁÁhÁhhÁhÁÁhhÁhhÁhhÁhhÁÁÁhÁhÁhÁhÁhhhÁhÁÁhÁhhÁÁÁhhÁhÁhÁhÁÁhÁhhÁÁhÁhÁhhÁhÁhhÁÁÁhhÁhhhÁhhÁhÁhÁhhÁhhhhÁhÁhÁhhÁÁhÁhhhÁhhÁÁhÁhÁÁÁhÁhhÁhÁhÁhÁhÁhÁhhhÁhhÁhhÁÁhÁhÁhÁhÁhhÁÁhhhhÁhÁhÁhÁhÁÁhhÁhhÁÁhÁÁhÁhhÁhhÁhÁhÁhÁÁhhÁÁÁhhÁhhhÁhhÁhÁhÁhhÁhhhhÁhhhhhhÁhÁhÁhhÁhhÁhÁhÁhÁhÁhÁhÁhhÁhÁhÁhÁhÁhÁhhhÁhhÁhhÁhÁhÁhÁhÁhÁhhhÁÁhÁhhÁhhÁhhhhÁhÁhÁhÁhÁhhÁÁhÁhÁhhÁÁhhhÁÁÁhhhhÁhhÁhÁhÁhÁhhÁhhhhÁhÁhhhhÁhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhÁhhÁhÁhhÁhhÁhhÁhhÁhhhÁhhÁhhÁhÁhhhÁhhhhÁhÁhhÁhhÁhhhÁhhÁhhÁhÁhhhÁhhÁhÁhhhÁhÁhÁhÁhhhÁhhhÁhÁhhhhhhÁhhhhhÁhhhhhhÁhhÁhhÁhhhÁhhÁhÁhhhÁhÁhhÁhÁhhÁhhÁhhÁhhÁhhhÁhhÁhhhhÁhhhÁhhhhÁhÁhhhhhÁhhhhhhÁhhÁhhÁhhÁhhhÁhhhhÁhÁhÁhÁhÁhhhhhÁhhhhÁhhhÁhhhhÁÁhhÁhhhÁhhÁhhÁhhhÁhhÁhÁhhÁhÁhhhÁhÁhhÁhhÁhhÁhÁhÁhhÁhhÁhhÁhÁhhhÁhÁhhÁhhÁhhhhÁhhÁhhhhÁhÁhÁhhhÁhhhÁhhhhÁhhÁÁhÁhÁhhhhhÁhÁhhÁhhhÁhhhhÁÁhhÁhhÁÁhhÁhhÁhhhÁhhÁhÁhÁhÁÁhhÁÁhÁhhÁhhÁhhÁhhhhhhÁhhÁhhhhhhÁhhÁhhhhhhÁhhhhhÁhhhhhhÁhhÁhhhhhÁhhÁhhhhÁhhhhÁhhhhhhhhhhhhÁÁhÁhÁhÁhhÁhhÁhhhÁhhhhhhhÁhhÁhhhÁhÁhhhhhhhÁhhÁhhhhÁhhÁhhhhhhÁhhÁhhhhhÁhhÁhhhhÁhhÁhhhhÁhÁhhhhhÁÁhhÁhhhhÁhhhÁhhhÁhhÁhhÁhhhhhhhÁhÁhhhhhhÁhhhhhhhhhhÁhhhhhhhÁhhhÁhhhhhÁhhÁhhhhÁhÁhÁÁhÁhhhhhhhÁhÁhhhÁhhhhÁÁhhÁhhhhÁhÁhhhÁhÁhhhhhhhhhhhÁhhÁhÁhhhÁhhhhhhhhÁhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhÁhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhÁhhhhhhhhhhhhÁhÁhhhÁhhhÁhÁhhhÁhhÁhÁhhÁhhhhhhhhÁhhhÁhhÁhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhh•ÁÁhh¹•¹•h¹•hÁÄÄÄÍÄÑÑÑÑððÑððððÑÑðÍððÑðÍÑÑÑððððÑðððððóððóðóðóóóóóóóóóüüóóóóóðñðÑðÑÑÍÑÍÍÍÄÍÄÄÄÄÄÁÁÁhÁhhhchcccXXXXTXTTTT"ThhhhhhhÁhhhhÁhhhhh¹•hhÁhh¹•¹•h•hhhhhhhhhhhhÁhhhhhhhhhhhhhhhhh¹•h•¹•¹•h¹•hhhh•h¹•h¹•hhÁhhhh¹•hhhhh•h•h¹•hhh¹•hh¹•hhhhh•¹•h•hh¹•hhhhhhhhhhhhhhhhhhh¹•h•h•h¹•h•hhh¹••h•¹•¹•¹•hhhhhhhhhhhhhhh•Á¹•hhh•hhhhhh¹•h¹•h¹•hh•h•h¹•hh•hh•hhhhh¹•hhhhhhhÁhhhhÁhhÁhhhÁhhhhh¹•hhhh•hh•hhhhhhhhhhhh•h¹•h„¾¹•h¹hhh•hh•hh•¾•„¹•hhh¹•¹•hhh¹•hhh•h••¹¹•¹••„¹•hhhhhhhh¹•¹•h¾hh¹•hh¹•h¹•h¹•h¹•h¹•hh••¹•¹••¹•hhh¹•h•hhhhh•hhhhhhh¹•¹•hhhhhhhh¹f•hhhÁhÁhÁhÁhÁhhhÁhÁhÁhhhÁhÁÁhhhÁhÁhhÁhÁÁÁhÁhÁÁhÁhhÁÁhÁhhÁhÁhÁhÁhÁÁÁhÁhhÁhÁhhÁÁhÁÁÁhÁÁhÁhÁhhhÁhhhhhÁhÁÁhÁhÁhhÁhÁhÁÁhÁhÁÁhhÁhÁÁhhÁÁhÁhÁhÁhÁhÁhhhÁhÁhÁhÁhhhÁÁhÁhhhÁhÁhÁhÁhÁÁhhÁÁÁhÁhhhÁhhhhÁÁhÁhÁhÁhÁÁhÁhÁhÁÁhÁhÁÁhÁÁhÁÁhÁhÁhhhÁhhÁhhÁhÁhhhhÁhÁhÁhÁhÁhÁhÁÁhhÁhÁÁhhÁhÁhÁhÁhÁÁhÁhhÁhhÁhÁhÁhhÁhÁhÁhhhÁhÁÁhÁhÁhÁhhÁÁhhÁhhhÁhhÁhÁhÁhÁhÁhÁhÁhÁhhÁhÁhhÁÁhÁhÁhhÁhhhÁhhhÁhhhhhhÁhÁhhhÁhÁhhÁhhÁhhÁhÁhhhÁhÁhhhÁhÁhhÁhÁhhhhhhhhhhÁhÁhhhhÁhÁhhhÁhhÁhhhÁÁhhhÁhÁhÁhhhÁhhhhÁhÁhhhÁhÁhÁhÁhhÁhÁhhÁÁhÁhÁhhÁhhhhhhhÁhhhhhhÁhÁhhÁhhhÁhÁhÁhhÁhÁhhhÁhÁÁhhÁhhÁhÁÁhÁhhÁhhhhhhhÁhÁhhhhÁhÁhhhÁhhÁhhÁhÁhhÁhÁhhÁhhhÁhÁhÁhÁhÁhhhÁhÁÁhÁhhhÁhhÁhÁhÁhÁhÁhhÁhhhhhÁhhhhhÁÁÁhhhÁhhhÁhÁhhÁÁhÁhÁÁhÁhÁÁhÁÁhhÁhhÁhÁhhÁÁhhhhhhÁhÁhhhhÁhÁhhhÁÁhÁhhhhÁÁhÁhÁhhÁhhhÁhhhÁhÁhhhÁhÁhhÁhÁhÁhÁhhÁhÁhhÁhhÁhhhhhhhÁhhhhhhÁhÁhhhÁhhhhÁhhhÁhhhÁhhhÁÁhÁhhÁhhhhhÁhÁhhhhhhÁhhhhhÁhhhhhhÁhhhhhhÁhhhÁhÁhhhÁhhhhhhÁhhhÁhhÁhhhhhhÁhhhÁhhÁhhÁÁhÁhÁhhÁhhhhhhhÁÁhhÁhhÁhÁhhhÁhhÁhÁÁhÁhÁhhÁhhhhhhÁhhhhhhhÁhhÁhhhhhhÁhhÁhhÁhÁhÁhhÁhhhÁhhhhhÁhhÁhhhÁhhÁhhhhhhhÁhhhÁhhhhhhhÁhhhhÁhÁhÁhhhhhÁÁhhhhhhhÁhhhhhhÁhhhhhÁhhÁhhÁÁhÁÁhÁhhhhhÁhÁhhÁÁhhÁhhhhhhhhÁhhhhhhhhhhhhhÁÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhÁÁhhhhhhÁhhhhhÁÁhhhhhÁhhhÁhhhÁhhhhÁhhhÁhhhhhhÁÁhhhhhhhhhhhhhÁhÁÁhhhhhhhhhÁÁhhhhhhhhhÁhhhhhÁhhÁhÁhhhhhhÁhhhhhhhhhhhhhhhÁhhhhÁhÁhhÁhhhhhhhÁhhhhÁÁhhhhhhhhhhÁhhhÁhhhhhÁhhÁhhhhhhÁhÁhhhhhhhhhhhhhhÁhÁhhhhhhhhÁhÁhhhhhhhhÁ•¹hh•¹hh•¹•Áhh•hÁhhÄÄÄÄÍÍÍÑÑððÑðÑððÑðÑÑððÑðÑðÑÑÑðÑóðÑðððóðóòóðóðóðóðóüüóóüüóóóðóðóðððÑÍÍÍÍÍÍÍÄÍÄÄÄÄÁÁhhhhhchcccccXXXXXXTTTTTTTThÁhhhhhhÁhhhhhÁh•¹•hhhhhh•ÁhhhhhhÁhhhhhÁhhhhhhhÁhhhhhhÁhh•¹•hh•¹•¹•hh•hh•¹•¹hh•hh•hhhhhhhh•h•¹hhhhh•¹¾„h•¹•hhh•hhhh•¹hhhhh•¹•hhhh•¹hhhhÁhhÁhhh•¹•¹•hhhhhh•hh•¹h•¹•hhhhh•Á•h•¹h•¹•¹„¾hh•¹hh•¹Á•¹hhhhhhhh•¹•hh•hh•h•¹•¹h•¹h•hhhhhh•¹hhhh••¹hhhhhhhhhhhhhhhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhhh•¹•h•¹h•hh•hhhhhhhhh•¹hhhh•¹h•hhhhh•hh•¹•¹•¹•¹„¾„•h•¹¹hh•¹hhh•¹¾„•hh•¹„hh•hhÁhh•hh•hh•hh•hhh•¹h•¹h•¹•hhhhhhhhhhhhhhhh•Áhhhh¹h•¹•ÁhhhhhÁÁhÁÁÁÁÁhhhÁhÁhhhÁhÁhÁhÁÁÁhhÁÁÁhÁhhhÁÁhhÁhÁhÁÁhhÁhÁÁhÁhÁhÁhÁhhÁÁhÁhhÁhÁhÁhÁhÁhÁhhhhhhhÁhÁÁhhÁhhÁhÁhhÁhÁhÁhÁhÁÁhÁhhhhÁhhÁhÁÁhhÁhÁÁÁhÁÁhÁÁhhhÁhÁhhhÁhÁhhÁhÁÁhhÁhÁhÁhÁhÁÁhhÁhÁhÁÁhhhÁhÁhÁhÁÁhÁhhÁhÁhÁhhhhÁhÁÁhÁhÁÁhhhhhhhÁhÁÁhhÁhhÁhÁÁhÁhÁhhhÁhÁÁhhhhhhÁhhhÁÁhÁhÁhÁÁhÁhÁhÁÁhhhhÁhÁhhÁhhÁhÁhÁÁhhÁhÁhhÁhhÁhhhÁhÁhÁhhhÁhhÁhÁhÁhÁhhhÁhÁhÁhhhhÁhÁhÁhÁÁhÁhhhhhhÁhhÁhhÁhhhÁhhhÁhhhhhÁhÁhhÁhhhhÁhhÁhÁhÁhÁhÁÁhhÁÁhÁÁhhhhÁhÁhhÁhÁhhhÁÁhhhÁÁhÁhhhhÁÁhhÁhÁhÁhhÁÁhhÁhhÁhÁhhhhhhÁhÁhhhhÁhhÁhÁhÁhÁhhhhhhhhhÁhhÁhhhÁhhhhÁhhhhhÁhÁhÁhhhhÁhhhÁÁhhÁÁhÁhÁhÁÁhÁhÁhÁhÁhÁhhÁhÁhhÁhÁÁhhÁÁhÁhhhhÁhÁhÁhÁhÁhhhÁhhÁhhÁhÁhhÁhÁhÁhÁhhÁhÁhÁhhhÁÁhÁhhÁhhhhhhÁhhÁÁhhÁhÁhhÁhhhhhÁhÁhhhhhhhhhhhÁhhÁhÁhÁhhÁhÁhÁhhhhÁÁhhhhhÁÁhhÁhÁhhhÁhhÁhhhÁhhhhÁhhÁhhÁhhÁhhhhÁhhhhhhhhhhhhhhÁhÁhhÁhÁhhÁhhÁhhhhhÁhÁhhhhhÁhhhÁhhhhÁhÁhhhhhhhhhhhÁhhÁhÁhÁhhhhÁhÁhhÁhhÁhÁhhhhÁhÁhhÁhhhÁhÁhhÁhhÁhhhhÁhÁhÁhÁhhhhhhÁhhhÁhÁhhÁhhhhhhÁhhÁhhhÁhhhhhhhhhhhÁhhhhhhhhhÁhÁhhhhÁhhÁhhhhÁhhÁhhÁhhhhÁhhhÁhhÁhÁhhhhhhhÁhhhhhhhhhÁhhhÁhÁhhhhhhhhhhhhhhhhÁhhhhhhÁhÁhÁhhÁhhhhhhÁhhhhÁhÁÁhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhÁhhhhhhÁhÁhhhÁÁhhhhhhÁhhhhÁhhhÁhhhhhhÁhÁhÁhhhhÁhhhhhÁhhÁhhhhÁhhhhÁhhhhhÁhhhhhhhhhÁhhhhÁhÁhhhhhÁhhhhhhhhÁhhhÁhÁhhhÁhhhÁhÁhhhhhhhhhhhÁhhhÁhhhÁhhÁhhhhhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁÁhhhhhhhhhhhhhhhhhhhÁÁhhhhhhhhÁhhhhÁhhhÁhhhhhhhhhhhhÁhÁhhhhhhhhhhhÁhhhÁhhhÁhhÁhhhhÁhhhhhhhhhÁÁhhhÁhhhÁhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhh•¹••hhh•¹•hÁhhhhhÁÁÄÄÍÑÑðÑðððððÑðÑÑÑÑÑðÑððÑÑÑððÑðÑðððððÑðòïðóóóóóóðóóóóüóóóóðóðïðððÑðÑÑÍÍÍÍÍÄÄÄÄÁÁÄÁÁhhhcccccXXbXXTTT"TTTTTTThhhhhhhhhhhhhhhhhh•hhhhhhhhhÁ¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹•h¹••¹•¹•hhhhhÁ•hhhhhhhh¹•hhh¹•hh•¹•hhh•h¹•h•¹•hh¹•hh¹•h•¹•hhh¹••hhhh¹••¹•hhhhhh¹•h•Áhhhhhhhhhhhhhh•hhhhhhhh¹•hh•hh•¾„hhhh•¹•h„¹••hhh¹•¹•¹••hhhhhhhhhh•hhh•hhhh¹•hhh•¹•hhh•hhhhÁhhhÁhhhhhhhhhhhh•¹•hhÁhhhhhhhhh„¹•¹•h¹•hhh¹hh•hhhhhh¹•¹•h¹•h•h¹•¹hh•¹•hhhhhhhhhh•hhh¾„¹¹•h•¹•Á¹•h•hhhh•h¹•hhh¾¹•hhhh¹•hhhhhhhhhhhhh¹f•h¹•h•¹•hhhhhhhhhhhhhhhhhh¹•h¹Áhhh••hhhh¹•hhhÁhÁhÁhÁhÁÁhhÁhÁhÁhÁÁÁhhÁhÁhÁhÁhÁhhÁhhhÁhhÁhÁhÁhÁhÁhÁhhÁhÁhÁhhhhÁhhÁhhhÁÁhÁhÁhÁhÁhhhÁÁhhÁhhÁhhhÁhhÁhÁÁhhÁhÁhÁÁhhÁhÁhÁhhÁhÁhÁhÁhhÁÁhhÁÁhÁhÁÁhhÁhÁhÁhÁhÁhhÁhÁhÁhÁhhhÁhhhhÁhhhÁhhÁhhÁhÁhÁhhhhhÁhhhhÁhhÁhhhÁhÁhhhÁhhÁhhhÁÁhhÁhhÁhhhÁhhÁhÁhhhhÁÁhhÁhhÁhÁhÁhhhÁhhÁhhhhhÁhhhÁhhÁÁhhÁhÁhhÁÁhÁÁhhÁhhÁhhÁhÁhhhhhhÁhhhÁhhÁhhhhÁhÁhhhÁhÁhhhhÁhhÁhhhÁhÁhhhÁhÁhhhhhÁhhÁhhÁhhhÁhhÁhÁhhÁÁhÁhhÁhhhhÁhÁhhÁhhhÁhhhÁhÁhhÁhhÁÁÁhhÁhÁhhÁhÁhÁhhhhhÁhhÁhÁhÁhhhÁhhhhÁhhÁhhhÁÁÁhÁhhÁhÁhÁhhÁhhÁhhhÁhÁhhhÁhÁhhhÁhÁhhÁhhÁhÁhÁhÁÁhÁhhÁhÁhÁhÁhÁhhÁhÁhÁhÁhhÁhhhÁhÁhhhÁÁhÁÁhhÁhÁhhhÁhhÁhhÁhÁhhhhhhhÁhhhÁhhhhhhÁÁhhhhÁhhÁhhhhÁhhhhhhhhhhhÁhhÁhhhhÁhhhhÁhÁÁhhÁhhhhhhhÁhÁhhhÁhÁhhÁhhÁhhhÁhÁÁhhhÁhhhhÁhhhhÁhhhÁÁhhÁhÁhhÁhÁhhhhÁhhhÁhhhÁhhhhÁhhÁhÁhhÁhhhhÁhÁhhhhhÁÁhhhÁhhhhhÁhÁhhhhhhÁhhhhÁÁhÁhÁhhhhÁhhhhhÁhhhhÁhhÁhhÁhhÁhÁhhhÁhÁhhhhhhÁhhÁhhhhÁhhÁhhhhhÁhÁhhhhhÁhhhÁhhhhhhhÁhhhhÁhhhhhÁhÁhhhhhhhÁhhhhhhhÁhhhhhhhÁhhÁÁhhÁhhÁhÁhhhhhhhhÁhhhÁhhhhÁhhÁhhhhhhhhhhhhhhÁhhhhÁhÁhÁhhhÁhhhhÁhhhhÁhÁÁhhhhÁhhhhÁhhhÁhhÁÁhhhhhhhhhhÁÁhhhhhhhhhhhhhÁhhhhhÁhhhhhhhÁhhhhhhhÁhhÁhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhÁhhhÁhhhÁÁhÁhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhÁhhhhhhhÁhÁhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhÁhhÁhhhhhÁhhhhÁhhhÁhhhÁhhhhÁhhhÁhhÁÁhhhhÁhhÁhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhÁhhÁhhhhÁhhhhhÁÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhÁhhhhhhhhh•¹•¹hh•¹•hhhh•¹hh•¹hhhhÁÁÄÄÄÍÍÑðÑÑððÑððÑÑÑÑðÑÑÑðÑÑÑÑáïððÑðÑóððóðóðððóóóóóóóóóóüüüðóóðóðïððÑÑÑÍÍÍÍÍÍÄÄÄÄÁÄÁÁÁhhhhhccccXbXXXXTTTTT:ThhhhÁhhhhÁhhh•¹hhh•¹hh•¹hhhh••¹hhhhhhÁhhhÁhhhÁhhhhhÁhhhhh•¹h•hh•hhh•¹„hh•¹h•¹hh•¹hhh•¹•h•¹•hhh•¹••¹hhhh••¹h•¹•hhh•hhh•f¹hh•hhh•¹•hhh•hhhhhh•hh•¹hhhh•¹•¹hhhhhhhh•¹•¹hhhh•hhhhh•¹•¹hhhhh•¹•hh¾hhh¹••h•hh•¹hh•¹hhhhhhhhhh•¹••¹hh•¹•hhhh•¹•¹hhhhhhhhhhhhhhhhh•¹„hhhhhhhhh¹•¹•¹¾••hh••¹h•¹•hhhhhhhh•¹•h•hh•hhhh•h•hh¾hhhhh•¹hhhhhh•¹•¹•¹•hh•¹„¾hhhhhhhhh•hhh•¹Á„hhhhh•hhhhh•¹hhhh•¹•Áhhhhh•hhhhhhhhhhhhhhh¹•¹hh•hhÁhhhhh•¹•¹h•h•¹hhhÁhÁhhhÁÁhÁhÁhhÁhÁhÁhÁhhhÁÁÁhhhÁhÁhhhÁhhhhÁhhhÁhÁhÁhhhhhhÁhÁhÁhhÁhhÁhhhhÁhhhÁhÁhÁhhhhhÁhÁhhÁhhhÁhhÁhÁhÁhhÁhÁhhhhÁhÁhÁhÁhhhÁhÁhÁhÁhÁhhhhÁhÁhhhhhhhÁhÁhÁhhhhÁhÁhhÁhhÁhhÁhhhhhÁhhÁhÁ¹Á•¹•ÁhhÁhÁhhÁhÁhhÁhhhÁhÁhhhÁhhhhhÁhhhÁhhhÁhhhÁhhÁhÁhÁhÁhÁhhhhhÁhÁhÁhÁhhhhÁÁhÁhhÁhÁhhhhÁhÁhhhhhhhÁhÁhhhhÁhÁhhhÁhhÁhhÁhhhhhÁhhÁhÁhÁhhhÁhhÁhÁhÁhhÁhhÁhhhhÁhhhhÁhhÁhÁÁhhhÁhhhÁhhÁÁhhÁhÁhhhÁhÁhÁhhÁÁhhÁhÁhhhÁhÁÁhhhhÁhÁhhhÁhÁhhhhhhhÁhÁhÁhhhÁhÁhhhÁhhÁhÁhÁhÁhhÁhÁÁhÁhÁhhhhhhÁhÁhhhhhhhÁhÁhhhhhhhÁhhhÁhÁhhÁhhhhhÁhhhhhhhÁhhhhÁÁhhhhhÁhhhhhÁhhhhÁhÁhhhÁhhhhhhhÁhhhhhhÁhÁhÁÁhhhhÁhhhÁÁhhÁhhhÁhhhhhhhhhÁhhÁhhhhhÁhhhhhhhhhÁhhhhÁhhhÁhÁhhÁhhhhhÁhhhÁhhhÁhhhhhÁhhÁhÁhhhhhhhÁhhÁhhhhhÁhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhÁhhÁhhhÁhhhhhhhÁhhhhhhhhhÁhhhhÁhhÁhhhhhhÁhhÁÁhhhhhÁhhhÁhhhhhhhhhÁhhhÁhhhÁhÁhhÁÁhhÁhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhÁhhhhhhÁhÁhÁhhhhhÁhhhhhÁhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhÁhhhÁhhÁhhhÁhhhhhÁhhhÁhÁhhhhÁhhhÁhhÁhhÁhhhhhhhhhÁhÁhhhhhhhhhhhhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhÁhhhÁhhhhhhhhhhhÁhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhhhÁhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhhhÁhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhÁhhhhÁhhÁhhhhhhÁhhÁhhÁhhhhhhÁhhÁhhhhhÁhhhhhhhhhhhhÁhhÁhhhÁhhhhÁhhhhhhhhhhhhÁhhhÁhhhhhÁhhÁhhÁhh•Á•¹•¹•h¹•h•¹•hh•¹•ÁÄÄÄÍÍÑÑÑÑóððÑðóðÑðÑððÑÑðÍÑðÑÑÑÑÑÑðÑðÑððððóóððóóúóðóüüóüóóóóóðóðÑÑÑÑÑÑÑÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhhcccccXXXXXXXTTTTTThhhhhhhhhhhhhhh•¹•h•¹••¹•hhh•h¹•hhhhhhhhhhhhhhhhhhÁhhhh•hhhhhhhhh•hhhh•hh•hhh•¹hh•¹hhh•¹•hh¹•hhhh•¹hhhh„¾¹•h¹•hhhhhh¹•h•¹•hhhh•h¹•hhhhhhhhh¹•hhh•hhhhh•h•¹•hhhhhhh••¹•hhhh¹•hh•h•hhhh¹•¹•hh¹•hhhh¹•h¹•¹•h•hhh•hhhhhh¹•h•¹•h•hhh¹•h¹•hh•hhhhhhhhhhhÁhhhhhhh¾hhhhhhhhh••„¹•¹•hhhh•hh•hhhhhhhh¹••hhhhhhhhhhhhhhh„¹•¹•hhh•¹•hhhh•hh•h¹•hhh•¹hh¹•hh¹hhhhhhhhhhhhhhhhhhhhhhhhh•¹hhh•hh¹hhhhhhhhhhhhhhhhhÁhh•••¹•hhh¹•hhhhhh•hhhh•hÁhÁhÁhÁhÁhÁhÁhÁhhhhhhÁhhhhÁhÁhÁhhhÁhÁhhhhhhÁÁhÁhhÁhÁhÁhÁhÁhÁhÁhhhÁhhÁhÁhhÁhhhÁhÁhhhÁhÁhhÁhÁhÁhhhhÁhhÁhhÁhÁhhÁhhhhhÁhÁhhÁhhÁÁhÁhhÁhÁhÁhÁhhÁÁÁhhÁhhhhhhhhhÁhÁhhÁhÁhhÁhÁh•¹hhhh¹•—¹ÁÁhhhÁhÁhÁhhhhhÁÁhÁhhÁhhÁhhÁhÁhhÁhÁhhÁhhÁhÁhÁhhhhhÁhhhÁhÁhÁhhhhhÁhÁhhÁhÁhÁhÁhhhÁhhhÁhhÁhÁhhÁhÁhhhhÁhhhhhÁhÁhÁhhhÁhÁhhÁhhÁhÁhhÁhhÁÁhhÁhÁhhÁhÁhhhÁÁÁhhhÁÁhÁhhÁhÁhhÁhÁhÁÁhhhÁhhhhhhÁhÁhhhhhÁhhhhhhhÁhhhhhhÁhÁhÁhhhhÁhhÁhhÁhÁhÁhÁhhhhhhÁhhhhhhÁhÁhhÁhhÁhhhhhhÁhhÁhhhhÁhhÁhÁhhhÁhhhhÁhÁhhÁhÁÁhhhhhÁhhhhhÁhÁÁhhÁhhhhhÁhhÁhhhÁhÁhhhhhhÁhÁhhhÁhhhÁhhhhhÁhhhÁhhhhÁÁhhÁhhhhhhhhhhhhÁhhÁhhÁhhÁhhhÁhÁhhhÁÁhhhÁhhÁhÁhhÁhhhhÁhhÁÁhhhhÁhhhhhÁhhÁhhhhÁhhhÁhhhhhÁhÁhhhhhÁhhhÁhhÁhÁhhhhÁhhhÁhhhhhÁhÁhÁhhhÁhhhhÁÁhhhhhhhhhÁhhÁhhhÁÁhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhÁhhhhhhÁhÁhhhhhhhÁÁhhÁhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhÁhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhhhÁhhÁhÁhhhÁhhhÁhhhhhhhhhhhhhhÁhhÁhhhhÁhÁhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhÁhhhhhÁÁhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhÁhhhhhÁhhhhhhhÁhhhhhÁhhÁhhhhhÁhhhhhhÁhÁÁhhhhhhhhhhhhÁÁhhhhhhhhhhhÁhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhÁhhhhhhÁhhhÁhhhhhhhhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhÁhhÁhhhÁhhÁhhhhhhÁhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhh•¹•hh•hhh•hhh•¹•hhÁÁÁÄÄÍÍÑïÑðððÑÑÑÑÑÑðÑðÑÑðÑÑÑÐÑïððððÑóððóóððóðóðóóóóüóúóóüóóóðóóððððÑÑÑÍÍÍÍÍÄÍÄÄÄÄÁÁÁÁhhhhhhcccbXXXVTTTTTTTThhhhhhhhhh•¹hhhhhhh•¹•h•¹•hhh•¹•¹•hhhhhhhhÁhhhhhÁhhhhh•¹hhhh•¹h•¹hhhhhhhhhhhhhhh•¹•hh•hhh•¹hhh•hhhh•¹h•¹hhÁh•hhhhhhh•hh•¹•hhhhh•¹hhhhhhhhhhh•¹hhhh•¹hhhh•¹•hhh•¹hhhh¹••¹•¹•hhhhhh•¹hh••¹•hhh•hhhhh••¹•hhhhhhh•¹h¹•¹•¹Áh•¹•hhhhhh•¹•hh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hh¹•hhhhhhhhhhhh•¹„¾hhh•hhhhhhh•¹hhhhhh•¹hh•hhh•¹h„hhhhhhhhhh•hhhhhh•h•¹•h•¹•¹hhhhhhhhhhh•¹hhhhhhg•¹•hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhh¹„hhhh•hh•¹h•¹hhhhhh•¹hhhÁhÁhhhÁhÁhhhÁhhhhhhÁhÁhhhhÁhÁhÁhhhÁhhhÁhhÁhhhhÁhhÁhÁhÁhhÁhhhhhhhÁÁhhhhÁhÁhhhhÁhhhÁhÁhÁhhÁhÁhÁhÁhÁhhhhÁhÁhÁhhÁhÁhÁhhÁhhÁÁhhhhhhhhÁhÁhhhÁhÁhhÁhÁhhhhhÁhÁhhhÁhÁhÁhhhhÁhhhÁ••Áhhh¹••ÁhÁhÁhhÁhÁhhÁhhhÁhhhÁhÁhÁhhhÁhÁhhhhhÁhhÁhÁhÁhÁhÁhÁhhÁhÁhÁhhÁhÁhÁÁhÁhhÁhhhhhhÁÁhhÁhÁhhÁhhÁhhÁÁhhhhhhhÁhhhhhhÁhhhÁhhÁhhhhhÁhhhhÁhhÁhÁhÁÁhÁhhhhhhhhÁhhhÁhhhhhhhÁhhhhhhhhhÁhÁhÁhÁhhÁhhhhhhhhhhhÁhhhÁhhÁhÁÁhhhhhhhhÁhhhhhhÁhÁhÁÁhhÁhhÁhhÁhhhÁÁhÁÁhhhhhÁhhhhhhÁhhhhhhhÁhhhhÁhÁhÁhhhÁhhÁhhhhhhhÁhhhÁhhhhÁhhhhhÁhhÁhÁhhhhÁhhhhhhhhhÁÁhhÁÁhhhhÁhhhhhhhhhhhÁhhhÁhÁhhÁhhÁhhhhhÁhhhhÁhÁhhhhhhÁhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhÁhhhhhhhhhhhhhÁhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhÁhhhhhÁÁhhhhÁÁhhÁhhhhÁhhhÁhhÁhhÁhhhhhÁhhhÁhhhhhhÁÁhhhhhhÁÁhhhhhhÁhhhhhhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhhhhhhhhhhÁhhÁhÁhhÁhhhhhÁhhhhhhhÁhÁhhhhÁhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhÁhÁhhhhhhhhhhhÁhÁhhhhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhÁhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhÁÁhhhhhÁhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhÁhÁhhÁhhhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhÁhhhhhÁhhhÁhhÁhhhhÁhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhÁhhhhhhhh•hhhh•hhhhhhhhhh¹•hh¹ÃÄÍÍÄÍÑððÑÑÑÑÑðÑðÑðÑÑÑÑÑÑÑÑÑÑðððÑÑðððóððððóðóóððóðóóüóüóóóðóðððððÑðÑÍÑÑÑÄÍÄÍÄÄÄÁÁÁÁÁhÁhhhchccXXbXXTTTTTTTThhhhhhhhhhhh•¹•hhhhh¹•hh•hhhh•h•¹•hhhhhhhhhhhhhhhhhhh•¹•¹••hh•hhhhhhhhhh¹•h¹•hh•hhhhhhh•¹•hhhhhhhh•¹•¹••hhh¹hhhh¹•h¹•hhhhhhhh¹hhh•¹•hhhhhhhhhhh•hhh¹••¹•hhh•hh¹••hhhh¹•hhhÁ¹•hh¹hhhh•¹•h¹hhhhhhhhhhh¹•hhhhhhhh•f•h•hhhhhhhhhhhhh•hhhhhhhhhhhhhhÁhhhhhhhhhhhhh¹•hhhhhhhhhhhh¹•hhhhhhhhhhh•hhhhhhhhhhhhhh•¹hhh¹••h¹•hhhhhh¹•ghhhhhhhhhhhhh¹hhhhh•¹hhh••hhhhhhh¹hhh•hhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¾hhhhhhhh•hhh¹•hh¹f•hÁhÁhÁhhhÁhÁhhhhÁhhhhÁhÁhÁhÁhhhhhÁhhhhÁÁÁhÁhhÁhhhÁhhÁhÁhhÁhÁhÁÁhhÁhhÁhÁhhhhÁhhhÁhÁÁhhhhhÁhÁÁhÁÁhÁhhÁÁhÁhÁhhhÁÁhhÁÁhhÁhhÁhhhhhhhÁhÁhÁhÁhhÁÁhhhhhhÁhÁhhhÁÁhÁhhhhhhÁÁhhhhhÁ•¹Áhh•¹•hÁhhhhÁhhhhÁhhhhhÁhhhÁhhhhÁhÁhÁhhhÁÁhhÁÁhÁhhhÁhÁhÁhhÁhÁhhhhhhÁhÁhhhhÁhhÁÁhhÁhhhÁhhÁhhÁhhÁhÁhhhhhhhÁhhhÁÁÁhhÁhhhhÁhhhhhhÁhÁhhÁhhhhÁhÁhhhÁhhhhhÁhÁhÁhhhÁhhhhÁhÁhÁhhhÁhÁhhÁhhÁhhhÁÁhhhhÁhÁhÁhhhhÁhhÁhÁhÁhhÁhhhhhÁhhÁhÁhÁhhhhÁhhhhhhhhhhhhÁhÁhhhhhhhÁhhhhhhÁhÁhhhÁhhhÁhhÁhÁhhhhÁÁhhÁhÁhhhhhÁhhÁhÁhÁhhhÁhhhÁhhÁhhhhhÁÁhhÁhhÁhhhÁhhÁhhhhhhhhhhhhÁhhÁhhÁÁhhhÁhhhhhhhhhhhÁhhhhhÁÁhhhhhhhÁhhhhÁhhÁhhhÁhhhhhhhhÁhhhhhhÁhhhÁÁhhhhÁhhÁhhhhÁhhÁÁhhÁhhÁhhhhÁÁhÁhhÁÁhÁhÁhhÁhÁhhhhhhÁÁhhhhhÁhhhhhhhÁhhÁhÁhhhÁhhhhhhhhÁhÁhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhÁhÁhhhhhhhÁhÁhÁhhhhÁÁhhhhhhhÁhhÁhhhhhhÁhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhÁhÁhÁhhhhhhÁÁhhhhhhÁÁhhhhÁhhÁhhhhÁhhhhhÁhhhhÁhhhhhhhhÁhhhÁhhÁhhÁhhhhhhhÁhÁhhÁhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhÁhhhÁhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhhÁhhhhhhhhhh•¹hhhhhhhhhhh•¹•¹hhh•h•¹ÁÁÁÁÄÍÍÍÑÑÑðóððóðððððÑÑÑÑððÑÑáÑÑÑððððïóððððóóóððóóóóúóóóüóóüóóóðððÑÑÑÑÍÍÑÍÍÍÍÍÍÄÄÄÁÁÁÁÁhccccccXXbXTXUTTTTT:TTThhhhhhhhhhh•¹•hhhhh•¹•hhhhhh•¹•¹•¹hhhhhhhhhhhhhhhÁhhhh•¹h•hhhhhhhhhhhhhÁh•hh•hhhhhhhhhhhhhhhhhhhhhh•h•hhhh•hh•¹•hh•hhhhhh•¹•hhhhhhhh•¹hhhhhhh•¹••¹hhhhh•¹hh•hhhhhh•hhhh¹„h•¹•hhh•¹•hhh•hhhhhhhhhhh¹•hhhhhhhhh¹•¹hhhhhhhhhhhh•¹hhhh•¹hhf¹•¹•hhhhhhhhhhhhhhhhh••hhhhhhhhhh•¹hhh•hhhhhhhhhhhhhhhhhhhhhhhhhhh•¹h•hh•hhh•hhhhhhh•hhhhhhhhhhhhhhhh•hhhhhhhhhh•¹hhhhhhh•¹•hhhhhhhhhhhhh•hh•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhh•hhhÁhhhhhÁhhhhhhÁhhhÁhÁÁhÁhhÁhhhhhhÁhÁhÁhhÁhÁhhhÁÁhÁhÁhhÁhÁhhhhhhÁhhhÁÁhÁhÁhhÁhÁÁhÁhhhhhhÁhÁÁhhhhhhhhhhÁhÁhhhhhhhhÁhÁhhhÁhÁhhhÁhhÁÁhhhhhhÁhhhÁhhÁhhÁÁhÁhÁhhhhhhÁhhhhÁhhhhÁhÁh¾„¹•ÁÁ¹•h¹•Áh¹•¹•hÁhhhÁhÁhÁhhhhÁhhhhÁhhhhhhhhhhhÁhhhhhhhÁhÁhhhhhhhhhÁhhhhhÁhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhÁhhÁhÁhÁhhhhhhÁÁhhÁhÁhÁhÁhhhhÁhhhhhhÁhhhhhÁhhhhhhÁhhÁhÁhhhÁhhhÁhÁhhhÁhhÁhÁhÁhhhhhhÁhhÁhhhÁhhhhÁÁhhhhÁhhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhÁhÁhhhÁhhhhhhhhÁhÁhhhhhhhhhhhhhhhhhhÁhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhÁhhhhhhhhhhhhhhhÁhÁhhhhhhhÁhhhhÁhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhÁhÁhhÁhhhhhhhhhhhhÁÁhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhÁhhhhhhhhhhhÁhhhhÁhhhhhhhÁÁhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhhÁhhhÁhhÁhhhhÁÁhhhhhhhÁhhhÁÁhhÁhhÁhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhÁhhhÁhhhhhhhhhhÁÁhhhhhhhhhÁhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhÁhhhhhhhhhÁhhÁhhhhhhhhÁhhÁhhhhhÁhhhhhhhhhÁhhhhhhhhhhhÁhhhhÁhhhhhhhhhhÁhhÁhhhhhÁhhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhÁhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhÁhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhh•¹hhhhhhh¹•h••hh¹•hhhÁÁÄÄÄÍÑÑÑÑðððÑðÑðÑÑðÑÑððÑÑÑÑÑïÑððððððððððððóðóóóóðóüóüúóóúóóóóðððÑÑðÑÑÍÑÍÍÍÄÄÄÄÁÁÁÄÁÁÁhhhhcccccXXXXXTTTTTTThhhhhhhÁhh¹hh¹•hhhhh•hhhhhhhhh•hh•hhhhhhhhhhhhhhhhhhhhhh•h¹•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹•¹•hhhhhhhh•¹•hhhhhh¹•hh•¹•hhhh¹•hhhh•¹•hhhhh•¹•h•hhhhhh•hhhhhhhhhhhhhh¾hhhh¹•¹hhh¹•hhhhhhhhhhhhhhhhhhhhhhhhh•h¹hhhhhhhhh¹••hhhhh•¹•h•hhhÁhhhhhhhhhhhhhhhh¹•hhhhhhhhhh•hh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhh¹•¹•hhhhhhhhhhhh¹•hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhÁhÁhhhhhÁhhhhhhÁÁhhÁhhhÁÁhhhÁhhhhÁhhhÁhÁhhhhÁhhÁhhhhhhÁhhhÁÁhhhÁhhhhÁhhÁhÁhhhhhÁhhhÁhÁhhhÁhhÁhhhÁhhhÁhÁhÁhhhhÁhhhhhhÁhhÁhÁhhhhÁhÁhhhhhhhÁhhÁhÁhhÁhÁhhÁhÁhhh•¹Á•¹Á•¹h•hÁ••¹•Á•hhh•¹hhhÁhhhÁhhÁhhhhhhhhÁhhhhÁhhÁhhhÁhhhhhÁÁhÁhÁhhhhhhhhhÁhhhhÁhhÁhhhhhhhhhÁhhhhÁhhhhhÁhÁhhhhhhhhÁhhhhhhÁhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhÁhÁhhhÁhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhÁhÁhhhÁhhÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhÁhhÁhhhhhhhhhÁhhÁhhhhhhhhhÁhhhÁhhhhhhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhÁhhhhhÁhhhhÁhhÁÁhhhÁhÁhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhÁhhhhhÁhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhh•¹hh•hhhhhh•hhÁ¹¹•hhhhhhÁÄÄÄÍÑÐÍÑððÑòÑÑððÑÍÑðÑÑÑÑÑðððÑÑðÑðððóðððóðóóððóóóóóóüóóóüüóðóóðððððÑÑÑÑÑÑÍÍÍÍÄÁÄÁÁÁhhÁhhhhcbccXXXXXXXTTTTTTTTThhhhhh•¹•hh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hh•hhhhhhhhhhhh•hh¹hhhh•hhhhhhhhhh••¹hhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•h•hh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhh¾„hhhhh•¹h•hhhhhhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hh•h•hhhhhhhhhhh¹•hh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhÁÁhhhÁhhhhhhÁhÁhhhhhÁÁhhhhÁhhhÁhhhhhhÁhhÁhÁhhhhhhÁhÁhÁhhÁhhhÁhhhÁhhhÁhhhhhhhhÁhhhhhÁhhÁhhhÁhhÁhhÁhhhhhhÁhÁhhhÁhhhÁhhÁhhÁhhhhhhÁhhhhhÁÁhhhhhÁÁhÁhÁhhhhhÁhhhÁhhhhhÁhhhh•hh•¹Áh•h¹•hÁh¾Á¹•Áh¹•Á•¹•hh¾„ÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhÁhhhhhhhhÁhhÁhhÁhÁhhhÁÁhhÁhhhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhÁhÁhhÁhÁhhÁhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhÁhhhhhhhhhÁhhhhhÁhhÁhhhhhhÁhhÁhhÁhÁhhhhÁhhhhhhhhhhhhÁhÁhhÁhhÁhhhhhhÁhhÁhhhhÁhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhÁhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhÁhÁhhhhÁhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhÁhhÁhhÁhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhÁhhhhÁhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhhÁhhhhhÁhhhhhhhhhÁhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhÁhhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhÁhhhhhhhÁhhhhhh•hhhhhhhhhhhhh„¾„¹hhhhhhhÁÁÄÄÍÈÑðóÑðððððÑÑðÑóÑððÑÐÑÑÑÑððÑððÑððÑðóððððúóóóóúðóóüóüóüóóóïððÑðÑÑÑÍÍÍÄÍÄÄÄÄÄÄÁÄÁÁhhhhccccccXXXTXTTTT:TT:Thhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhh¹•hh¾„hhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhh•¹•hhhhhhhhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhh•h¹•ghhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhÁhÁhhÁhhhÁhhhhhhÁhhÁÁhhhhhÁhhhhhhhÁhÁÁhhÁhhÁhhÁhhhÁhhÁhhhhhhhhhhÁhhhhÁÁhÁhhhhÁhhhhhhhhhÁhÁhÁhÁhÁhhhhhhhhhhhhhÁhÁhhÁhhhÁhhhhhhhhhhhhhhhÁhÁhhhhhhhhhhhhhhhhhÁh•¹h•hhh•hhh•¹„h•hhh•hhh•hhÁ•¹•¹hhÁhhhhÁhÁhhÁhhÁhÁhhhhhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhÁÁhhÁhhhhhhhÁhhÁhhhhhhhhhhÁhhhhhÁhhÁhhÁhhÁhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁÁhhÁhhÁhÁhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhÁhÁhhhhhhhÁhhhhÁhhhhhhhhhhhhÁhhhhÁhhÁhÁhhhhÁhhhÁhhÁhhÁhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhÁhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhÁhhhhÁhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhÁhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹•¹hhhhhhhhhhhhhhhhhhhhhhhh¹•hhhhhhhÁÁÄÄÄÍÍÑððÑððððÑðÑÑÑðÑðÑÐáÑðÍðÑðÑÑððÑððððððóðóóðóóóóóüüóüóüðóòðððÑðÑÑÑÍÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhhhhcccXXXXXTTTT:TcÁhhhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhh•¹•hh„¹hhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh„hhhhhhhh•¹hhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhchhhÁhhhhhhhÁÁhhhhhÁhÁhhÁhhhhhhhhhhÁhhhhhÁhhhÁÁhhhhhhhhhhÁhhÁhhhhhhhhhhhÁhhhhÁhhhhÁhhhhhÁhhÁhhhÁhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhhhhhhhÁhhhhhhÁÁhhhhhhhhhhhÁhhhhhhÁhhhhh¹•hh•¹•hhhhÁhh¹•Á¹Áhhhhh¹•hhhhh••¹•h¹•hhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhÁhhhhhhhhÁhhÁhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhÁhhÁhÁhhhhhhhhhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhÁhÁhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhÁhhhhÁhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh••¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÄÍÑÐÑÑïÑÑðÑððÑÑððÑÑðÑððïÎÐïáðÑððÑððóóðóóóðúóüóóóóóüóóóóððóóóðððÑÍÍÍÍÑÍÄÄÍÄÄÄÄÄÁhhÁhhccccccXbXXXXTTTTTTTTTTThhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhh•¹•hhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhchhhhhhedhhhhhhhhhhhhhhhÁhÁhhÁhhhhhhhhhhhÁhÁhÁhhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhÁhÁhhhÁhhhhÁhhhhÁhÁhhhhhhhhhhhhhhhhhÁÁhhhÁhhhhhhÁhhhhÁhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhÁhhhÁh•¹h•¹h•¹•hh•¹hh•¹hhhh•h•¹Á•¹h•¹¾„h•¹hh•¹¹•hh•ÁhhhÁhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhÁhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhÁhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhÁhhhÁhhhÁhhhÁhhhhhhhhhÁhhhhÁhhhhhhÁhhhhhhhhhhhÁhhÁhhhhhhÁhhhhhhÁhhhhhÁhhhhÁhhhhÁhhhÁhhhhhÁhhhhÁhhhhhhhÁhhÁhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhÁhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhÁhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhÁhhhÁhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhh•¹¹•¹„hhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhÁÁÄÍÄÍÑÑðÑðððððÑðÑðÑïðÑÑÍïÑÑððÑÑðððïòððððóóïðóóðóóóóüóóóüúúóóóððððÑÑÑÑÑÑÍÍÍÍÍÄÄÄÁÁÁÁÁhhhhcccccbXXXXTTTTTTTThhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh„hhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhghhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhdhhhhhhhchhhhhchhdhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhhÁhhhÁhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhÁÁhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhÁhÁÁhhhhhhÁhhhhhhhhhhhh•Áh•¹•¹•hhh•Á¹•h•¹•hhhh•h¹•Á•h•h¹•Á•hhh•¾„¹•hhhhhhhhÁhÁhhÁhÁhhhhhhhhhÁhhhhÁhhÁhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhÁhhÁhhhhhÁhhhhÁhhÁhhhhhhhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhÁhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhÁhhhhhÁhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhÁhhÁhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhh•hhhhhhhhhhh•¹•hhhhhhhhhhhhhhhhhhhhÁÁÍÍÍÑáðððÑÑÑðððÑðÑÑÑÑÑÍÑÑÍÑðÑïÑóððððòððóððóððóóððóóóóóóüóðóððïððÑððÍÑÑÍÍÍÍÄÄÄÄÄÄÁÁÁhhhhhccccXXXXTUXT"TTT"TTchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhghhhhhdhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhchhhhchhhhhhhhhhhhhhhhdhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhÁhhhhÁhhhhhÁhhhhhhhhÁhhhhhhhhÁhhhhhhhhhÁÁhhhhhhhhhhhhhÁhhhhÁhÁhhhhÁhhhhÁhhÁhhÁhhhhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhh•¹hhhhh•¹Á••¹h•¹h•hh•¹••¹hhhhh•hhhhhh•hh•¹hh•¹•¹hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhÁhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhÁhhhhhhhhhhhhhÁhhhhhÁhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhÁhhhhhÁhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhhhhhh¹„hhhhhhhhhhhhhhhhhhhhhÁÄÄÄÍÄÍÐÐÑððóðÑÑðÑðÑððððððÑÑÑÑÑóïÑðððððóóïðóðóóóðóóüóóóüüüóóðóððððÑÑÑÑÑÑÑÍÄÍÄÄÄÁÁÁÁÁhÁhhchcccXbbXXXXTTTTTTTTT:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhghhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhchhhhhhdghhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhÁhhhÁhhhhhhhhhhhÁhhÁhhhÁÁhhhhhhhhhhhÁhhhhhhhhhhÁhhÁhhÁhhhhhhÁhhÁhhÁhhhhÁhhÁhhhÁhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhh¹••¹•¹•h•h¹•h•hh•hhhhh¹••hhhhhhhhhhhhhhhh•hhhh•„¾¹•¹•¹•hhÁhhhÁhhhhhhÁhhÁhhÁhhhÁhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhÁhhhhhÁhhhhÁhhhhhhhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhfhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÍÍÍÑÑðððððÑÑóÑÑÑÑðÑáÑÑÑïÍÑÑðððïðððððòðóóðóóðóóóóóóóóüüóóóðððððÑÑÑÑÑÍÍÍÍÄÄÄÄÁÁÄÁÁhhÁhcchcccXbXXTTTTT0"TTTchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhchhhhhhhhfhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhghhchhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhÁhhhÁhhhh•¹•¹•h•¹„•hhhh•hhhhhhh•¹h•¹•hh•¹hhhhh¹•¹•¹hhhhhhhhh•¹„•¾•hhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhÁhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÍÑÑððóðððððððÑððÑÐðÑÑÑðÑðÑÑÑððÑððóïðóóðóðóðüóóóóóóóóóóóðððÑððððÑÍÍÍÍÍÍÍÍÍÄÍÄÄÁÁÁhhhhhcccccXXXXXTTTTTTTchhhhhhhhhhhhhhhhhhhhhhfhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhÁhhhhÁhhÁÁhhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhÁhhÁhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhÁhhhhhhÁhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhÁhh¾hh•Á¹•gh¹•¹•hhhhhhh¹•h¹••hh•hhhh•¹•h„h•h••¹hhh¹•¹•hh¾¹•h¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhÁhhhhÁhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhÁÁÄÄÍÍÍÑÑÑïÑÑðÑðÑÑÑÑóÑðÑÍÑÑðÍðÑóÑÑðÑððððððòðóóóóðóóóüüüþüóóóóóðóððÑÑÑÍÑÑÍÍÄÄÄÄÁÄÁÁÁÁÁhhhhccccXXcXXXTTTTTTTThhchhhhhhhhhhhhhhhhhhhhghhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhchhhhhhhhhhhhchchhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghdhhhhhhhhhhgdhchhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhchhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhghhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhÁhhhhhhhhhhÁhhhhhÁhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhÁhhhhhhh•¹„hh•¹hh•¹Á•hhhhhhhhh•hh•hhhhh•¹hh•¹•hhhh•¹hhh•¹••hg„h„•¹„hhhhhhÁhhhhhhÁhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhÁhhhhÁhhÁhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÁÄÄÄÍÍÑÑÑðÑððÑïððÑÑÑñïïÍðÑÑðÑÑðÑðÑðððïòðððóððóóóóúóüüóüüóóóóóóðððÑÑÍÑÑÍÍÍÍÍÄÄÁÄÄÁÁÁÁhhhhcccccbXXTTTXTTTTTThhhhhhhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhÁhhhÁhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhÁhhhhhhhhhhhhÁhhhhhhÁhhhhhhhhhhÁhhhhÁhhhÁhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhh•¹•hh„h¹•hhh¹•hhhhhh¹•hhhhhhhh¹•h•hhh•hhh¹•h•hhhhh•h¹•¹•¹•¹¹•¹•hh¹•hhhÁhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhghhhhhhhÁÄÍÍÍÍÍðððððÑÑÑÑðÑÑÑÑÑÑÑÑïáÑÑÑóðððóðÑóóïóðóðòóóóðúóóðóüóóóóðððïðÑÑðÑÑÑÍÍÍÍÄÄÄÄÍÄÁÁÁÁhhhchhccXbXbbXXTTTTTTTTThhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhchhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchghhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhÁhhhÁhhhhhÁhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhh¾hh•¹h•hh•h•hhhh•¹•hhhhh•¹hh•hg•¹hhh•¹•hhhhhhhhhhh•h•¹hÁ•¹••¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhÁhhÁhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhchhhhhhhhhhÁÁÄÄÄÍÍÑÑðððððððÑðÑððÑÑÑïÑÑïÑÑðÑÑððððððòïðóóðóóóóóóóóóüüúóóóóðóððððÑÑÍÑÑÍÍÍÄÄÄÄÁÄÄÁÁÁhhhhcccccbXXVXTTTTTT:TTchhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhehhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhÁhhhhhhhhhhhhÁhhhhÁhhhhÁhhhhhhhÁhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhÁhhÁhhÁhhhhhhhhhhh¹•hhhhhhh¹•hhhhhh•¹•hhh¹•h•¹•hhh•¹•h•¹•hhhh¹•hhhhhhhh•hhh¹•¹•hh¹hhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhÁhhhÁhhhhhhhhÁhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁÄÄÍÍÑðÑððÑððóððððóðððÑðÑÍÍÑÑðÑÑÑðððóïïÑððóóóóðóüóóóüóóóóóóóóóðïðÑÑÍÍÍÍÍÍÍÄÄÍÄÄÁÄÁÁÁhhhhdgcccXXXTXXXTTTTT:TTTTThhhhhhhhhhhhhhhhhhhhhchhdhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhchhchdhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhdhhhchhhhhhhhhhdhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhhchhhhhhhhhhhhhhhehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhfghhhhhhchhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhÁhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹hhh¹hhhh•hh•¹•hh•¹hhhh•¹h„h•¹hhhhh•hhhhhhhhhhhhh•hhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhchhhhhhhhhhhhÁÁÄÄÄÄÑÑÑÑÑðÑðÑÑÑÑðÑÑÍÑðÑÑðððÑÑðððððïïðóóðóðððóóóóðóóóóüüüüóðððððððððÑÑÍÍÄÍÍÄÄÄÄÁÄÁÁÁÁhchchcccbbXXXTTTT:TTTchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhchhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhÁhhÁhhhhhhhÁhhhhÁhhhhhhhhhÁhhhhhhhhhhhhÁhhhhhhhhhÁhhÁhhhhhhhhhhhhÁhhhÁhhÁhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhh•hhhh•hhhhhhhh•¹•ghhhhhhhh¹•¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹hhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhchhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhÁÁÄÍÄÍÑÑÑÑðððÑÑðÑðÑÑðÑÑðÍÑÑðÑÑÑðÑððÑñððóðððóðóóðóóóóóóüüüóóóóðóððÑÑÑÑÑÍÑÍÍÄÄÍÍÄÄÄÁÁÁÁhhhghchcXbbXXTTUTTTTchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhdhhdhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhdghhhhhhhhhhchhhhhhhhdhhchhhhhhhhhhchhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•¹hhhhhhhhhhhhhhhhhhhhhhhhh¹Áhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh••hhÁhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhchhhhhhhhhhhhhhhhhhchhhhhhhhchhhhÁÄÄÍÍÑÑððððóððÑÑÑÑÑÑÑÑðÑðÎÑÑÑÑóÑÑðÑÑóðóðóðóóóðóððóóóóóóüóóðòðððððÑÑÑÑÑÑÑÍÍÍÄÍÄÄÄÁÁÁÁÁhhhhcccbbXXXXXTXTTT"T:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhghhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhghhdhhhhdhhhhhhhhhhhhhghhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh¹••hhhhhhhhhhhhhhhhhhhhhhhhhhhh¹•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhchhhhhhhchhhhhhchhhchhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhh¾ÂÄÄÄÄÍÑÑÑððððÑððÑðÑðÑðÑÑÑïÑðÑðððÑïóÑððððððóóðóóóóóüóüóóüóóóóóóððÑðÑÑÑÍÑÍÍÍÍÄÄÄÄÁÁÁÁÁÁhhhccccbbXXXTTTT"TTT"TM"hhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhdhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhchhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhh•hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhÁÁÄÄÄÍÍÍÑððððÑððÑÑÑÑðÑðÑÑÑðïóÑðÑðÑÑòððððóóðóóóððóóðüüóüóüóóóðóóðÑÑðÑÑÍÍÑÍÍÍÍÍÄÄÁÁÁÄÁÁhhhhcccbccXXVXXTTTTTT"TThhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhchhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhdhhhhghhghhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÁhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhchhchhhhchhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhÁÁÄÍÍÑÑÑÑððÑÑÑÑððÑðÑððÑÑÑÑÑÑÑÑÑðððððÑðóððïðóðóüóúðóúóüüóüóóóððððóòððÑÑÍÍÍÍÄÄÄÁÄÄÄÁÁÄÁhhhchchcbXXXXTXXTTTTMTThhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhÁÁÄÄÍÍÑÑÑÑððððÑÑððÑððÑÑÑðÑÑÑÑðÑðÑðððÑðððóððððóóóóóúðóóóüúóóóóððïðððÑÑÍÑÍÍÍÍÍÄÄÄÄÁÁÁÁÁhhhhchcccXXXXXTTTTT""TchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhÄÄÄÄÄÍÍðÑÑðóðÑðððððïððÑðÑÑÑÍÑÑÑÑÑðÑððóðððóðððúóóóóðóóúóóóóóóóóððÑÑÑÑÑÑÍÍÍÍÄÄÍÄÄÄÄÁÁhhhhchccbXccXXXTTTTTTTTTTT"TTT:"Thhhhchhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhh•¹ÁÄÄÄÑÍÑððððÑïçðÑÑïÑÑðÑÑÑÑÑðÑÑððððððððððóóðóðóðóóóóóóüüóóóðóðòóðïðÑÑÑÑÑÍÍÍÍÄÍÄÄÁÁÁÁÁÁÁhhchccccXXXXXTVTTT"ThhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhdehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhchhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhÃÄÄÄÍÍÑðððÑðÑððÑððÑÑÑÑÑÑÑÑÑÑÑðÑðÑððððððòðóððóðüóóóóóüóóóüóóóóóððÑÑðÑÑÍÍÍÍÄÍÄÄÄÄÁÁÁÁÁhhhhcccccbXXXXTTXTTTTThhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhchhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhÁÁÄÄÄÍÍÑÑÑÑðððððÑÑððÑÑðÑÑÑÑÑððÑðóððóðÑðïððóðóóðóðóóüóóüüüüóóððóððððððÑÑÍÑÍÍÍÄÄÄÄÄÄÁÁhhhhhhcccbXcXXXTTXTTTT0TchhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhhhhhhhhchhhhhhhhhhhhhchhhhhhhchhhhhhhhhhhhhhhhhhCorsixTH-0.61/CorsixTH/Bitmap/mainmenu1080.pal000066400000000000000000000014001321660673500207060ustar00rootroot00000000000000                                               ! $ ! " '#$' *( #&'!$"%(),*, "%#$) "(#)%  + - *!.$.!" &""!&$'!*"-%.")#+$*%-#/$0"0$2%4#/&1&6&1'3'7(2(7)1)4)8+:)9,:&",,.!%#),2 #, !&0)5!!! #'!$'%%% #("%) &-$'*$'+"(.&(+%)-***(*-*,.--+--- '0"*1!*4!+3",4$*1$+4&,2%-5 +7!,8$-8(+/*-2).4,.1+/3(/8'/6'/9*05.02-15.37*09-3:,3;.48,4;11/111025246566/37159/5<56837;37;68969<99::;<;; ".. "") print("Converts a bitmap which contains multiple glyphs (arranged in a ".. "grid) into a sprite sheet (.tab and .dat) and a palette (.pal).") return end package.path = (debug.getinfo(1, "S").source:match("@(.*[" .. package.config :sub(1, 1) .. "])") or "") .. "lib_" .. package.config:sub(5, 5) .. ".lua" .. package.config:sub(3, 3) .. package.path require "bmp" require "spritesheet" local bitmap_name, cell_width, cell_height, space_width = ... cell_width = assert(tonumber(cell_width), "cell width must be a number") cell_height = assert(tonumber(cell_height), "cell height must be a number") space_width = tonumber(space_width) or cell_width local bitmap = assert(bmp.open(bitmap_name)) local ncells_x = bitmap.width / cell_width assert(ncells_x % 1 == 0, "Bitmap width must be a multiple of the cell width") local ncells_y = bitmap.height / cell_height assert(ncells_y % 1 == 0, "Bitmap height must be a multiple of the cell height") local filename_base = bitmap_name:match"^(.*%.)[^.]*$" local ss = spritesheet.open(filename_base .. "tab", filename_base .. "dat", true) local pal = assert(io.open(filename_base .. "pal", "wb")) pal:write(bitmap.palette) pal:close() ss:writeDummy() for y = 0, ncells_y - 1 do for x = 0, ncells_x - 1 do if x == 0 and y == 0 then ss:write(space_width, 1, bitmap:getSubPixels(0, 0, space_width, 1)) else local x, y = x * cell_width, y * cell_height local w, h = cell_width, cell_height while h > 1 do local is_empty = true for d = 0, w - 1 do if bitmap:getPixel(x + d, y + h - 1) ~= "\255" then is_empty = false end end if is_empty then h = h - 1 else break end end while w > 1 do local is_empty = true for d = 0, h - 1 do if bitmap:getPixel(x + w - 1, y + d) ~= "\255" then is_empty = false end end if is_empty then w = w - 1 else break end end if w == 1 and h == 1 and bitmap:getPixel(x, y) == "\255" then ss:writeDummy() else ss:write(w, cell_height, bitmap:getSubPixels(x, y, w, cell_height)) end end end end ss:close() CorsixTH-0.61/CorsixTH/Bitmap/mkraw.lua000066400000000000000000000037751321660673500177330ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] if not ... then print "Usage: lua mkraw.lua " print "Converts a bitmap into a raw .dat file and a .pal file" return end package.path = (debug.getinfo(1, "S").source:match("@(.*[" .. package.config :sub(1, 1) .. "])") or "") .. "lib_" .. package.config:sub(5, 5) .. ".lua" .. package.config:sub(3, 3) .. package.path require "bmp" local filename = ... if not filename:match("%.bmp$") then print("Error: Extension must must be .bmp") return end local filename_base = filename:match"^(.*%.)[^.]*$" local dat, pal = filename_base .."dat", filename_base .. "pal" local bitmap = assert(bmp.open(filename)) dat = assert(io.open(dat, "wb")) pal = assert(io.open(pal, "wb")) -- palette pal:write(bitmap.palette) -- image data dat:write(assert(bitmap:getPixels())) if bitmap.pal_size ~= 256 then print("Warning: palette size is " .. bitmap.pal_size .. ". Currently only palettes of size 256 will work in CorsixTH.") end CorsixTH-0.61/CorsixTH/Bitmap/mksheet.lua000066400000000000000000000053601321660673500202420ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] if not ... then print "Usage: lua mksheet.lua " print "Converts a number of bitmaps into a sprite sheet using the given spec" return end package.path = (debug.getinfo(1, "S").source:match("@(.*[" .. package.config :sub(1, 1) .. "])") or "") .. "lib_" .. package.config:sub(5, 5) .. ".lua" .. package.config:sub(3, 3) .. package.path require "bmp" require "spritesheet" local specfile = ... specfile = assert(loadfile(specfile)) local spec = {} setfenv(specfile, spec)() assert(type(spec.sprites) == "table", "spec is missing sprite list") local required_fields = { palette = { ["from bitmap"] = true, }, complex = { [true] = true, -- [false] = true, -- Not yet supported }, rnc = { -- [true] = true, -- Not yet supported [false] = true, }, output_tab = true, output_dat = true, } for field, options in pairs(required_fields) do assert(spec[field] ~= nil, "spec is missing '" .. field .. "' field") if options ~= true then assert(options[spec[field]], "spec field '" .. field .. "' is invalid") end end local ss = spritesheet.open(spec.output_tab, spec.output_dat, spec.complex) for i = 0, table.maxn(spec.sprites) do local filename = spec.sprites[i] if not filename then ss:writeDummy() else local function err(msg, ...) error("Error processing " .. filename .. ":\n" .. msg:format(...)) end local bitmap, e = bmp.open(filename) if not bitmap then err(e) end local width, height = bitmap.width, bitmap.height if width > 0xFF or height > 0xFF then err "Image too big (maximum size is 255x255)" end ss:write(width, height, bitmap:getPixels()) end end ss:close() CorsixTH-0.61/CorsixTH/Bitmap/readme.txt000066400000000000000000000021471321660673500200750ustar00rootroot00000000000000Almost all graphics resources are loaded from the original Theme Hospital data files, which is why there are only a few files in this directory. build_room_dialog_close.bmp : this sprite is missing from the game's REQ09V.DAT map_cell_outline.bmp : there is no nice outline tile in the game's VBLK-0.DAT flag_*.bmp : used as debug overlays fullscreen_border_*.bmp : used as borders as 640x480 "fullscreen" backgrounds bootstrap_font.bmp : a homemade bitmap font which can be used for drawing text before the original data files are loaded. aux_ui sprite sheet (main palette) #01 - build_room_dialog_close.bmp #02 - map_cell_outline.bmp #03 - flag_passable.bmp #04 - flag_travel_north.bmp #05 - flag_travel_east.bmp #06 - flag_travel_south.bmp #07 - flag_travel_west.bmp #08 - flag_hospital.bmp #09 - flag_buildable.bmp #10 - fullscreen_border_topleft.bmp #11 - fullscreen_border_top.bmp #12 - fullscreen_border_topright.bmp #13 - fullscreen_border_left.bmp #14 - fullscreen_border_right.bmp #15 - fullscreen_border_bottomleft.bmp #16 - fullscreen_border_bottom.bmp #17 - fullscreen_border_bottomright.bmp CorsixTH-0.61/CorsixTH/Bitmap/tree_collapsed.bmp000066400000000000000000000023361321660673500215640ustar00rootroot00000000000000BMÞ6( ÄÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/tree_ctrl.dat000066400000000000000000000003341321660673500205500ustar00rootroot00000000000000JQQQQQQBJQQQMQQBJNBA@@@@A@BMQBJNBA@A@@A@A@BMQBCorsixTH-0.61/CorsixTH/Bitmap/tree_ctrl.pal000066400000000000000000000014001321660673500205470ustar00rootroot00000000000000?????CorsixTH-0.61/CorsixTH/Bitmap/tree_ctrl.spec000066400000000000000000000005441321660673500207350ustar00rootroot00000000000000-- Bitmaps to create sprite sheet from sprites = {} sprites[ 1] = "tree_level.bmp" sprites[ 2] = "tree_leaf.bmp" sprites[ 3] = "tree_collapsed.bmp" sprites[ 4] = "tree_expanded.bmp" -- Palette options palette = "from bitmap" -- Compression options complex = true rnc = false -- Output filenames output_tab = "tree_ctrl.tab" output_dat = "tree_ctrl.dat" CorsixTH-0.61/CorsixTH/Bitmap/tree_ctrl.tab000066400000000000000000000000361321660673500205450ustar00rootroot00000000000000  D ’ CorsixTH-0.61/CorsixTH/Bitmap/tree_expanded.bmp000066400000000000000000000023361321660673500214060ustar00rootroot00000000000000BMÞ6( ÄÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/tree_leaf.bmp000066400000000000000000000023361321660673500205250ustar00rootroot00000000000000BMÞ6( ÄÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/Bitmap/tree_level.bmp000066400000000000000000000023361321660673500207250ustar00rootroot00000000000000BMÞ6( ÄÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCorsixTH-0.61/CorsixTH/CMakeLists.txt000066400000000000000000000204541321660673500174240ustar00rootroot00000000000000# Sanity check IF(CORSIX_TH_DONE_TOP_LEVEL_CMAKE) ELSE(CORSIX_TH_DONE_TOP_LEVEL_CMAKE) message(FATAL_ERROR "Please run cmake on the top-level directory, not this one.") ENDIF(CORSIX_TH_DONE_TOP_LEVEL_CMAKE) # Project Declaration PROJECT(CorsixTH) # Basic platform dependent stuff IF(UNIX) IF(APPLE) # fruit goes here add_subdirectory(SDLMain) ELSE(APPLE) # regular unix/linux ENDIF(APPLE) ELSE() IF(WIN32) # Win32 specific IF(MSVC) # We want to bind against the very latest versions of the MSVC runtimes add_definitions(/D "_BIND_TO_CURRENT_VCLIBS_VERSION=1") ELSE(MSVC) IF(MSYS) # MSYS stuff ELSE(MSYS) # What's left? MINGW? CYGWIN? BORLAND? ENDIF(MSYS) ENDIF(MSVC) ELSE(WIN32) # other OS (not UNIX, not 32/64 bit Windows) ENDIF(WIN32) ENDIF(UNIX) # Modify the config.h based upon our selection of options CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/CorsixTH/Src/config.h.in ${CMAKE_BINARY_DIR}/CorsixTH/Src/config.h) INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/CorsixTH/Src/) # Generate source files list # Note: Done after generating config.h FILE(GLOB_RECURSE corsixth_source_files ${CMAKE_SOURCE_DIR}/CorsixTH/SrcUnshared/*.cpp ${CMAKE_SOURCE_DIR}/CorsixTH/SrcUnshared/*.c ${CMAKE_SOURCE_DIR}/CorsixTH/SrcUnshared/*.h ${CMAKE_SOURCE_DIR}/CorsixTH/SrcUnshared/*.hpp ${CMAKE_SOURCE_DIR}/CorsixTH/Src/*.cpp ${CMAKE_SOURCE_DIR}/CorsixTH/Src/*.c ${CMAKE_SOURCE_DIR}/CorsixTH/Src/*.hpp ${CMAKE_SOURCE_DIR}/CorsixTH/Src/*.h ${CMAKE_SOURCE_DIR}/CorsixTH/Src/shaders/*.psh ${CMAKE_BINARY_DIR}/CorsixTH/Src/config.h ${CMAKE_SOURCE_DIR}/CorsixTH/Lua/api_version.lua ${CMAKE_SOURCE_DIR}/CorsixTH/CorsixTH.rc ${CMAKE_SOURCE_DIR}/LFS/*.c ${CMAKE_SOURCE_DIR}/LPEG/*.c ) # Declaration of the executable IF(APPLE) add_definitions(-DIS_CORSIXTH_APP) set(corsixth_icon_file ${CMAKE_SOURCE_DIR}/CorsixTH/Icon.icns) set_source_files_properties( ${corsixth_icon_file} PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) set(MACOSX_BUNDLE_ICON_FILE Icon.icns) add_executable(CorsixTH MACOSX_BUNDLE ${corsixth_source_files} ${corsixth_icon_file}) set_target_properties(CorsixTH PROPERTIES LINK_FLAGS_MINSIZEREL "-dead_strip") set_target_properties(CorsixTH PROPERTIES XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/../Frameworks") #Add an extra step at the end of the build process to copy the resources into the bundle. add_custom_command(TARGET CorsixTH POST_BUILD COMMAND rsync -rv --include-from ${CMAKE_SOURCE_DIR}/CorsixTH/RequiredResources.txt ${CMAKE_SOURCE_DIR}/CorsixTH/ \${TARGET_BUILD_DIR}/\${FULL_PRODUCT_NAME}/Contents/MacOS COMMAND rsync -rv ${CMAKE_SOURCE_DIR}/CorsixTH/Icon.icns \${TARGET_BUILD_DIR}/\${FULL_PRODUCT_NAME}/Contents/Resources/) target_link_libraries(CorsixTH SDL2main) INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/CorsixTH/SDLMain/) ELSE() add_executable(CorsixTH ${corsixth_source_files}) ENDIF() # Add an extra step to copy built DLLs on MSVC IF(USE_VCPKG_DEPS) INCLUDE(CopyVcpkgLua) ENDIF() # Finding libraries # Find SDL IF (MSVC AND USE_VCPKG_DEPS) FIND_PACKAGE(SDL2 CONFIG REQUIRED) TARGET_LINK_LIBRARIES(CorsixTH SDL2::SDL2) TARGET_LINK_LIBRARIES(CorsixTH SDL2::SDL2main) ELSE() FIND_PACKAGE(SDL2 REQUIRED) IF(SDL_FOUND) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) IF(SDLMAIN_LIBRARY STREQUAL "") message(FATAL_ERROR "Error: SDL was found but SDLmain was not") message("Make sure the path is correctly defined or set the environment variable SDLDIR to the correct location") ENDIF(SDLMAIN_LIBRARY STREQUAL "") # No need to specify sdlmain separately, the FindSDL.cmake file will take care of that. If not we get an error about it TARGET_LINK_LIBRARIES(CorsixTH ${SDL_LIBRARY}) message(" SDL found") ELSE(SDL_FOUND) message(FATAL_ERROR "Error: SDL library not found, it is required to build. Make sure the path is correctly defined or set the environment variable SDLDIR to the correct location") ENDIF(SDL_FOUND) ENDIF() # Find Lua FIND_PACKAGE(Lua REQUIRED) IF(Lua_FOUND) TARGET_LINK_LIBRARIES(CorsixTH ${LUA_LIBRARY}) INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR}) # Special link flags needed on OSX/64bit, according to: http://luajit.org/install.html # If these are not specified, luaL_newstate() returns NULL and we get this: # Fatal error starting CorsixTH: Cannot open Lua state. IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND LUA_INTERPRETER_TYPE STREQUAL "LuaJIT" AND CMAKE_SIZEOF_VOID_P EQUAL 8) TARGET_LINK_LIBRARIES(CorsixTH "-pagezero_size 10000" "-image_base 100000000") ENDIF() message(" ${LUA_INTERPRETER_TYPE} found") ELSE(Lua_FOUND) message(FATAL_ERROR "Error: Lua library not found, it is required to build") ENDIF(Lua_FOUND) # Add threading library find_package(Threads) target_link_libraries(CorsixTH ${CMAKE_THREAD_LIBS_INIT}) # Find SDL_mixer IF(CORSIX_TH_USE_SDL_MIXER) FIND_PACKAGE(SDL2_mixer REQUIRED) IF(SDLMIXER_FOUND) TARGET_LINK_LIBRARIES(CorsixTH ${SDLMIXER_LIBRARY}) INCLUDE_DIRECTORIES(${SDLMIXER_INCLUDE_DIR}) message(" SDL_mixer found") ELSE(SDLMIXER_FOUND) message(FATAL_ERROR "Error: SDL_mixer library not found, even though it was selected to be included") ENDIF(SDLMIXER_FOUND) ENDIF(CORSIX_TH_USE_SDL_MIXER) message( STATUS "CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}" ) # Find FFMPEG IF(CORSIX_TH_USE_FFMPEG) FIND_PACKAGE(FFmpeg COMPONENTS AVFORMAT AVCODEC AVUTIL SWSCALE SWRESAMPLE REQUIRED) IF(FFMPEG_FOUND) TARGET_LINK_LIBRARIES(CorsixTH ${FFMPEG_LIBRARIES}) INCLUDE_DIRECTORIES(${FFMPEG_INCLUDE_DIRS}) IF(APPLE) TARGET_LINK_LIBRARIES(CorsixTH libz.dylib) ENDIF() message(" FFmpeg found") ELSE(FFMPEG_FOUND) message(FATAL_ERROR "Error: FFmpeg library not found, even though it was selected to be included") ENDIF(FFMPEG_FOUND) ENDIF(CORSIX_TH_USE_FFMPEG) IF(CORSIX_TH_USE_LIBAV) FIND_PACKAGE(LibAV COMPONENTS AVFORMAT AVCODEC AVRESAMPLE AVUTIL SWSCALE REQUIRED) IF(LIBAV_FOUND) TARGET_LINK_LIBRARIES(CorsixTH ${LIBAV_LIBRARIES}) INCLUDE_DIRECTORIES(${LIBAV_INCLUDE_DIRS}) IF(APPLE) TARGET_LINK_LIBRARIES(CorsixTH libz.dylib) ENDIF() message(" LibAV found") ELSE(LIBAV_FOUND) message(FATAL_ERROR "Error: LibAV library not found, even though it was selected to be included") ENDIF(LIBAV_FOUND) ENDIF(CORSIX_TH_USE_LIBAV) # Find Freetype2 IF(CORSIX_TH_USE_FREETYPE2) FIND_PACKAGE(Freetype REQUIRED) IF(FREETYPE_FOUND) TARGET_LINK_LIBRARIES(CorsixTH ${FREETYPE_LIBRARIES}) INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS}) IF(APPLE) TARGET_LINK_LIBRARIES(CorsixTH libz.dylib) TARGET_LINK_LIBRARIES(CorsixTH libbz2.dylib) ENDIF() message(" FreeType2 found") ELSE(FREETYPE_FOUND) message(FATAL_ERROR "Error: FreeType2 library not found, even though it was selected to be used") ENDIF(FREETYPE_FOUND) ENDIF(CORSIX_TH_USE_FREETYPE2) # Find msinttypes for MSVC IF(MSVC AND NOT CORSIX_TH_HAS_INTTYPES_H) FIND_PATH(MSINTTYPES_INCLUDE_DIRS "inttypes.h" NO_DEFAULT_PATH) MESSAGE(STATUS "Adding include directory: ${MSINTTYPES_INCLUDE_DIRS}") INCLUDE_DIRECTORIES(${MSINTTYPES_INCLUDE_DIRS}) SET(CORSIX_TH_HAS_INTTYPES_H 1) ENDIF(MSVC AND NOT CORSIX_TH_HAS_INTTYPES_H) IF(MSVC AND CORSIX_TH_USE_VLD) FIND_PACKAGE(VLD REQUIRED) IF(VLD_FOUND) TARGET_LINK_LIBRARIES(CorsixTH ${VLD_LIBRARY}) INCLUDE_DIRECTORIES(CorsixTH ${VLD_INCLUDE_DIR}) message(" VLD found") ELSE(VLD_FOUND) message(FATAL_ERROR "Error: VLD Library not found, it is required to build when USE_VLD is set") ENDIF(VLD_FOUND) ENDIF(MSVC AND CORSIX_TH_USE_VLD) # Declaration of the install process IF(APPLE) #Just use the prefix as it's sufficient to just set the prefix to /Applications on Mac. install(TARGETS CorsixTH BUNDLE DESTINATION .) # Fix the OS X bundle to include required libraries (create a redistributable app) install(CODE " INCLUDE(BundleUtilities) SET(BU_CHMOD_BUNDLE_ITEMS ON) FIXUP_BUNDLE(${CMAKE_INSTALL_PREFIX}/CorsixTH.app \"\" \"\") ") ELSE() install(TARGETS CorsixTH RUNTIME DESTINATION CorsixTH) install(DIRECTORY Campaigns Lua Levels DESTINATION CorsixTH PATTERN "*.svn" EXCLUDE) install(DIRECTORY Bitmap DESTINATION CorsixTH FILES_MATCHING REGEX ".*\\.(tab|pal|dat|png)$" PATTERN "*.svn" EXCLUDE) install(FILES CorsixTH.lua ../LICENSE.txt CorsixTH.ico DESTINATION CorsixTH ) ENDIF() CorsixTH-0.61/CorsixTH/Campaigns/000077500000000000000000000000001321660673500165615ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Campaigns/ChrizmanTV.campaign000066400000000000000000000043571321660673500223200ustar00rootroot00000000000000--[[ Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.--]] name = "ChrizmanTV and beyond" description = "Hello and welcome to the first CorsixTH Custom Campaign, created by Chris Wilkinson! " .. "Do not lose your patients as you play through 12 levels of hospital hysteria and " .. "comedic challenges. Starting at Coffalot, you will be introduced to the basic " .. "functionality of CorsixTH before finally progressing to the last challenge " .. "at Royal Hospital. The Ministry of Health will be monitoring you along the way, " .. "as you will be met with bizarre illnesses and a multitude of sick patients who need " .. "your attention. Have fun!" levels = { "coffalot.level", "holby.level", "writhe.level", "greyhamgardens.level", "snuffitsands.level", "upperpukington.level", "fourcorners.level", "wishinwell.level", "hoppalong.level", "tufflook.level", "dethsdaw.level", "royalhospital.level", } winning_text = "Exceptional work! You have made it to the top! The mansion is yours, and public money galore is flowing into your Swiss bank account as we speak. Now you can relax - your days of running hospitals is finally over. Thanks for playing!" CorsixTH-0.61/CorsixTH/Campaigns/Coffalot.map000066400000000000000000005001541321660673500210220ustar00rootroot00000000000000?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????£?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?´?¤???????????????????????????????????????????????????????????????????????????????????????????????????²?????????????????????????????²???????????????????????????????????????????????????????????????????????????????????????????????????²??¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶??²???????????????????????????????????????????????????????????????????????????????????????????????????²??¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹?¶?¹??²???????????????????????????????????????????????????????????????????????????????????????????????????²?????????????????????????????²???????????????????????????????????????????????????????????????????????????????????????????????????²?????????????????????????????²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?Axy<Az<A|<Ax<Az<A|<Ax<Az<A|<Ax<Az<A|<Ax<Ax<Az<A|<Ax<Az<A|<Ax<Az<A|<Ax<Az<A|<Ax<q?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<q?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<q?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<q?²???????????????????????????????????????????????????????????????????????????????????????????????????²? ? p? r? t? p? r? t? p? r? t?=p?Ay<A<A<A<A<A<q???????¾?¼?›?›?²???????????????????????????????????????????????????????????????????????????????????????????????????²?›?›?¾?¼? ?Axy<Az<A|<Az<A|<Ax<A<A<A<A<A<A<Ax<Az<A|<Az<A|<Ax<q?¼?¾?›?›?²???????????????????????????????????????????????????????????????????????????????????????????????????²?›?›?¼?¾? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?¾?¼?›?›?²???????????????????????????????????????????????????????????????????????????????????????????????????²?›?›?¾?¼? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?¼?¾?›?›?²???????????????????????????????????????????????????????????????????????????????????????????????????²?›?›??? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<>q???›?›?²???????????????????????????????????????????????????????????????????????????????????????????????£?´?´?´?­?›?›? ?Axy<Ax<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<Ax<Ax<q?›?›?¢?´?´?´?¤???????????????????????????????????????????????????????????????????????????????????????????²?¼?¾????? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<>q?????¾?¼?²???????????????????????????????????????????????????????????????????????????????????????????²?¾?¼? ?Axy<Az<A|<Ax<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<Ax<Az<A|<Ax<q?¼?¾?²???????????????????????????????????????????????????????????????????????????????????????????²?¼?¾? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?¾?¼?²???????????????????????????????????????????????????????????????????????????????????????????²?¾?¼? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?¼?¾?²???????????????????????????????????????????????????????????????????????????????????????????²??? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<>q???²???????????????????????????????????????????????????????????????????????????????????????????²? ?Axy<Ax<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<Ax<Ax<q?²???????????????????????????????????????????????????????????????????????????????????????????²? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?²???????????????????????????????????????????????????????????????????????????????????????????²? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?²???????????????????????????????????????????????????????????????????????????????????????????²? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<q?²???????????????????????????????????????????????????????????????????????????????????????????²? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?²???????????????????????????????????????????????????????????????????????????????????????????²? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?²???????????????????????????????????????????????????????????????????????????????????????????²? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<q?²???????????????????????????????????????????????????????????????????????????????????????????²? ?A{<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<s?²???????????????????????????????????????????????????????????????????????????????????????????²? ?A}<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<u?²???????????????????????????????????????????????????????????????????????????????????????????²? ?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<q?²???????????????????????????????????????????????????????????????????????????????????????????²? ? p?=p?Ay<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A>A>A<A<A>A>A>A<A<A<A<A<q?¢?¯?¤?º?£?¯?­??²???????????????????????????????????????????????????????????????????????????????????????????²????§?·?§??? ? p? p? r? t?=p?:Ö>;>Ô>;>Ô>>>? ?>>>?¾???????¢?¯?­????²???????????????????????????????????????????????????????????????????????????????????????????²?????????????¼? ?>>>? ?>>>?¼?????????????²???????????????????????????????????????????????????????????????????????????????????????????¢?´?´?´?´?´?´?´?´?´?´?«?¼?¾? ?>>>? ?>>>?¾?¼?ª?´?´?´?´?´?´?´?´?´?´?­???????????????????????????????????????????????????????????????????????????????????????????????????????¾?? ?>>>>? ?>>>>??¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>>>>>>>?¼???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>>>>>>>?¼???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>><? ? ?=?>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>?¹?¹? ?>>>?¼???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>?¹?¹? ?>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>??? ?>>>?¼???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>>>>>>>?¼???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ? ? ?=?>>>><? ? ? ?¼???????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¼?¾?¼? ?>>>>?¼?¾?¼?¾??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>?¾?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¼? ?>>>>?¼?????????????????????????????????????????????????????????????@-CorsixTH-0.61/CorsixTH/Campaigns/Dethsdaw.map000066400000000000000000005001541321660673500210300ustar00rootroot00000000000000???????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§??????????????????????????????????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­? ?>>>>>>?¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤?????????????????????§??????????????????????????????N?;?;?:????????????????? ?>>>>>>>?????????????????N?;?;?:??????????????????????????????§?????????????????????§??¶??¶??¶????????????????????????M?DF?DH?@? ?xyz|z|z|z|z|xq>>>>>>>>>>>>xyz|z|z|z|z|xq?M?DH?DG?@????????????????????????¶??¶??¶??§?????????????????????§??????????????????????????????M?DG?DF?@? ?{s>>>>>>>>>>>>{s?M?DF?DH?@??????????????????????????????§?????????????????????§??¶??¶??¶?????? ?xyz|z|z|z|z|z|z|xq?L?C?C?O? ?}u>>>>>>>>>>>>}u?L?C?C?O? ?xyz|z|z|z|z|z|z|x>q??????¶??¶??¶??§?????????????????????§??????????? ?xy>q????? ?ys>>>>>>>>>>>>{>q????? ?yx>q???????????§?????????????????????§??¶??¶??¶???? ?xyxz|z|xu>>>><? ? ?=?>>>>}xz|z|xx>q????¶??¶??¶??§?????????????????????§????????? ?xyq>>>>?¹?¹? ?>>>>yx>q?????????§?????????????????????§???????? ?xy>>>>?·?·? ?>>>>:Û>q????????§?????????????????????§?? ?xyz|z|xq?º?º?º?º? ?y;>>>>>?¹?¹? ?>>>>;>q?º?º?º?º? ?yxz|z|xq??§?????????????????????§?? ?{>q????? ?yÕ>>>>>?·?·? ?>>>>Ù>q????? ?ys??§?????????????????????§?? ?}xz|z|xq>>>>?¹?¹? ?>>>>yxz|z|xu??§?????????????????????§?? ?{q>>>>?·?·? ?>>>>ys??§?????????????????????§?? ?}>>>>?¹?¹? ?>>>>:Û>>>>>?·?·? ?>>>>;>q?º?º?º?º? ?yq??§?????????????????????§?? ? p? r? t? r? t?=p?y>q????? ?yÕ>>>>>?¹?¹? ?>>>>Ù>q????? ?y>>>?·?·? ?>>>>yxz|z|x>>>>??? ?>>>>{>>>>>>>>>>>}>>>>>>>>>>>{s????? ?{>>>>>>>>>>>}u???¸?? ?}s??¶?¶?¶??M?D?D?DG?@??§?????????????????????§??M?DH?D?D?@??¶?¶?¶?? ?}s???¸?? ?yq>>>>>>>>>>>>yq??¸??? ?{u??¶?¶?¶??M?DH?D?DF?@??§?????????????????????§??M?D?D?DF?@??¶?¶??? ?yu??¸??? ? p? r? t? r? t? r? t? r? t? r? t? p?=?>>>>>>>>>>>><? p? r? t? r? t? r? t? r? t? r? t? p? ???¸?? ?}>q???¶?¶??M?DF?D?D?@??§?????????????????????§??M?DF?DG?DH?@??¶??? ?xys???¸??????????????? ?=?>>>>>>>>>><? ???????????????¸??? ?{x>q???¶??M?DG?D?DH?@??§?????????????????????§??L?C?C?C?O???? ?xyu??¸????»??»??¾??¾??¾????? ?=?>>>>>>>><? ?????¾??¾??¾??»??»????¸?? ?}x>q????L?C?C?C?O??§?????????????????????§????????? ?xys???¸????????¾??¾??????? ?=?>>>>>><? ???????¾??¾????????¸??? ?{x>q?????????§?????????????????????§???????? ?xyu??¸?????»?????¾????????? ?>>>>>>?????????¾?????»?????¸?? ?}x>q????????§?????????????????????§?? ?xyz|z|xs???¸????????¾??¾???????? ?>>>>>>????????¾??¾????????¸??? ?{xz|z|xq??§?????????????????????§?? ?{u??¸????»??»??¾??¾??¾??????? ?>>>>>>???????¾??¾??¾??»??»????¸?? ?}s??§?????????????????????§?? ?}q???¸?????????????????? ?>??????????????????¸??? ?yu??§?????????????????????§?? ?{s??¸?????»????????? ?xyz|z|:Ú>;>Ø:Ú>;>Øz|z|xq?????????»?????¸?? ?{s??§?????????????????????§?? ?}u???¸???????¾??¾??¾?? ?{s??¾??¾??¾???????¸??? ?}u??§?????????????????????§?? ?ys??¸????»??»???¾??¾??? ?}u???¾??¾???»??»????¸?? ?{q??§?????????????????????§?? ? p? r? t? r? t?=p?yu???¸?????????¾???? ?{s????¾?????????¸??? ?}>>>>?·?? ?=p?ys??¸????»??»???????? ?}u????????»??»????¸?? ?{>>>>?§?????????????????????§? ?>>>>>?¹??? ?=p?yu???¸????????????? ?y>q?????????????¸??? ?}>>>>?§?????????????????????§? ?>>>>>?·???? ?{s??¸?????»???????? ?xyx>q????????»?????¸?? ?{s????·? ?>>>>>?§?????????????????????§? ?>>>>>?¹???? ?}u???¸??????????? ?xyx>q???????????¸??? ?}u????¹? ?>>>>>?§?????????????????????§? ?>>>>>?·???? ?yq??¸????»??»????? ?xyxq?????»??»????¸?? ?yq????·? ?>>>>>?§?????????????????????§? ?=?>>><? ?¹???? ?=p?:Ö>;>Ô>;>Ô>;>Ô>;>Ô>>><? ?§???????????¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­?¹? ?>>>?¹?·?¹?·?¹?·? ?>>>?¾?¾?¾?¾?¾?¾? ?>>>?????????????? ?}u?????????????? ?>>>?¾?¾?¾?¾?¾?¾? ?>>>?·?¹?·?¹?·?¹? ?>>>?¹?¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯????????????? ?>>>>??????? ?>>>>??????? ?>>>>?????????????? ?y>q?????????????? ?>>>>??????? ?>>>>??????? ?>>>>?????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:Û>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;>s?¹?¹? ?{;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Ùu?¹?¹? ?}Õ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:Û>s?¹?¹? ?{:×>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;>u?¹?¹? ?};>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Ù>q??? ?yÕ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?yxz|x<q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹? ?>>>>?›?¼?¼?›?¼?¼?›?¼?¼?›?¼?¼?›?¼?¼?›?¼?¼?›?¼? ?{s?¼?›?¼?¼?›?¼?¼?›?¼?¼?›?¼?¼?›?¼?¼?›?¼?¼?›? ?>>>>?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯???????????§???????????????·? ?>>>>?¼???????????????????? ?}u????????????????????¼? ?>>>>?·???????????????§?????????????????????§? ?xyz|z|z|z|z|xq?¹? ?>>>>?¼???????????????????? ?yq????????????????????¼? ?>>>>?¹? ?xyz|z|z|z|z|xq?§?????????????????????§? ?{s?·? ?>>>>?›???????????????????? ?=p?y>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>?¼????????????????????? ?=p?y>>>?¹? ?}u?§?????????????????????§? ?{s?·? ?>>>>?¼?????????????????????? ? p? r? t?=p?y>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>?›?????? ?xyz|z|z|x>q??????????? ?=p?yq??????›? ?>>>>?¹? ?}u?§?????????????????????§? ?{s?·? ?>>>>?¼????? ?xyx>q??????????? ?=p?yq?????¼? ?>>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>?¼???? ?xyx>q??????????? ?:Ö>;>Ô>:Ö>;>Ô>??????????? ?xyx>q????¼? ?>>>>?¹? ?}u?§?????????????????????§? ?{s?·? ?>>>>?›??? ?xyx>q?????????? ?>>>>>>?????????? ?xyx>q???›? ?>>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>>??? ?xyx>q????????? ?>>>>>>>????????? ?xyx>q??? ?>>>>?¹? ?}u?§?????????????????????§? ?{s?·? ?>>>>>>>:Û>:×>>>>>>>>>>>>>>>>>>>>>>>>>:Û>:×>>>>>>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>>>>;>;>>>>>>>>>>>>>>>>>>>>>>>>>;>;>>>>>>>>?¹? ?}u?§?????????????????????§? ?{s?·? ?>>>>>>>ÙÕ>>>>>>>>>>>>>>>>>>>>>>>>>ÙÕ>>>>>>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>>>>:Û>:×>>>>>>>>>>>>>>>>>>>>>>>>>:Û>:×>>>>>>>>?¹? ?}u?§?????????????????????§? ?{s?·? ?>>>>>>>;>;>>>>>>>>>>>>>>>>>>>>>>>>>;>;>>>>>>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>>>>ÙÕ>>>>>>>>>>>>>>>>>>>>>>>>>ÙÕ>>>>>>>>?¹? ?}u?§?????????????????????§? ?{s?·? ?>>>><? ? ?=?y<q? ? ? ? ? ? ? ? ?=?>>>>>><? ? ? ? ? ? ? ? ?=?y<q? ? ?=?>>>>?·? ?{s?§?????????????????????§? ?}u?¹? ?>>>>?»?? ?=p?y>>>>>????????? ?=p?y>>>?¹? ?}u?§?????????????????????§? ?yq?·? ?>>>>?¾??? ?=p?y>>>>>??¸??????¸?? ?=p?y>>>?·? ?yq?§?????????????????????§? ? p? p?=p?:Ö>;>Ô>:Ö>;>Ô>>>>?¾???? ?=p?y>>>>>???¸??¸??¸???? ?=p?y>>>?¹? ? p? p?=p?:Ö>;>Ô>:Ö>;>Ô>>>>>>?¹?·?¹?·? ?>>>>?»????? ?=p?y>>>>>????¸??¸?????? ?=p?y>>>?·?¹?·?¹? ?>>>>>>?¶??¶?§?????????????????????§??¶?? ?>>>>>>>????? ?>>>>?¾?????? ? p? r? t? r? t? r? t? p? ??????¸??¸??¸??? ?>>>>>>???¸??¸??¸?????? ? p? r? t? r? t? r? t? p? ??????¾? ?>>>>>????? ?>>>>>>??¶??§?????????????????????§?¶??¶? ?>>>>>>>>>>>>>>>>?¾??????????????????????¸??¸???? ?>>>>>>????¸??¸??????????????????????¾? ?>>>>>>>>>>>>>>>>?¶??¶?§?????????????????????§??¶?? ?>>>>>>>>>>>>>>>>?»?????????????????????¸??¸??¸??? ?>>>>>>???¸??¸??¸?????????????????????»? ?>>>>>>>>>>>>>>>>??¶??§?????????????????????§?¶??¶? ?>>>>>>>>>>>>>>>>?¾????????????????????¸??????¸?? ?>>>>>>??¸??????¸????????????????????¾? ?>>>>>>>>>>>>>>>>?¶??¶?§?????????????????????§??¶?? ?>>>>>>>>>>>>>>>>?¾???????????????????????????? ?>>>>>>????????????????????????????¾? ?>>>>>>>>>>>>>>>>??¶??§?????????????????????§?¶??¶? ?>>>>>><? ? ? ? ?=?>>>>?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?? ?>>>>>>??»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»?¾?»? ?>>>><? ? ? ? ?=?>>>>>>?¶??¶?§?????????????????????§??¶?? ?>>>>>>?¹?·?¹?·? ?>>>>>????????????????????????????? ?>>>>>>>????????????????????????????? ?>>>>?¹?·?¹?·? ?>>>>>>??¶??§?????????????????????§???? ?>????¹? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?·???? ?>????§?????????????????????§? ?ExyExEx:EÚ>;E>EØ:EÚ>;E>EØExExExq?·? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¹? ?ExyExEx:EÚ>;E>EØ:EÚ>;E>EØExExExq?§?????????????????????§? ?E{EEEEEEEEEEEs?¹? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?·? ?E{EEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEu?·? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¹? ?E}EEEEEEEEEEEu?§?????????????????????§? ?E{EEEEEEEEEEEs?¹? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>><? ? ? ? ? ? ? ? ? ?=?>>>>>><? ? ? ? ? ? ? ? ? ?=?>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?·? ?E{EEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEu?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?? ?>>>>>??·?¹?·?¹?·?¹?·?¹? ?>>>>>>?¹?·?¹?·?¹?·?¹?·?? ?>>>>>?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹? ?E}EEEEEEEEEEEu?§?????????????????????§? ?E{EEEEEEEEEEE>q???????????????????? ?>>>>>>>????????·? ?>>>>>>?·???????? ?>>>>>>>???????????????????? ?EyEEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEExEzE|EzE|Exq??›?¼?¼?›?? ?xyz|z|xq>>>>xyz|z|xq?¹? ?>>>>>>?¹? ?xyz|z|xq>>>>xyz|z|xq??›?¼?¼?›?? ?ExyEzE|EzE|ExEEEEEEEEEEEEu?§?????????????????????§? ?E{EEEEEEEEEEEEEEEEEs??¼?¼?¼?¼?? ?{xqxys?·? ?>>>>>>?·? ?{xqxys??¼?¼?¼?¼?? ?E{EEEEEEEEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEEEEEEEu??¼?¼?¼?¼?? ?}:Ú>;>Ø:Ú>;>Øu?¹? ?>>>>>>?¹? ?}:Ú>;>Ø:Ú>;>Øu??¼?¼?¼?¼?? ?E}EEEEEEEEEEEEEEEEEu?§?????????????????????§? ?E{EEEEEEEEEEEEEEEEEs??›?¼?¼?›?? ?{s?·? ?>>>>>>?·? ?{s??›?¼?¼?›?? ?E{EEEEEEEEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEEEEEEEu??????? ?}u?¹? ?>>>>>>?¹? ?}u??????? ?E}EEEEEEEEEEEEEEEEEu?§?????????????????????§? ?E{EEEEEEEEEEEEEEEEEs??????? ?{s?·? ?>>>>>>?·? ?{s??????? ?E{EEEEEEEEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEEEEEEEu??›?¼?¼?›?? ?}u?¹? ?>>>>>>?¹? ?}u??›?¼?¼?›?? ?E}EEEEEEEEEEEEEEEEEu?§?????????????????????§? ?E{EEEEEEEEEEEEEEEEEs??¼?¼?¼?¼?? ?{s?·? ?>>>>>>?·? ?{s??¼?¼?¼?¼?? ?E{EEEEEEEEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEEEEEEEu??¼?¼?¼?¼?? ?}u?¹? ?>>>>>>?¹? ?}u??¼?¼?¼?¼?? ?E}EEEEEEEEEEEEEEEEEu?§?????????????????????§? ?E{EEEEEEEEEEEEEEEEEs??›?¼?¼?›?? ?{s?·? ?>>>>>>?·? ?{s??›?¼?¼?›?? ?E{EEEEEEEEEEEEEEEEEs?§?????????????????????§? ?E}EEEEEEEEEEEEEEEEEu??????? ?}u?¹? ?>>>>>>?¹? ?}u??????? ?E}EEEEEEEEEEEEEEEEEu?§?????????????????????§? ?EyEEEEEEEEEEEEEEEEEq??????? ?{s?·? ?>>>>>>?·? ?{s??????? ?EyEEEEEEEEEEEEEEEEEq?§?????????????????????§? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ??›?¼?¼?›?? ?}u?¹? ?>>>>>>?¹? ?}u??›?¼?¼?›?? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ?§?????????????????????§??????????????????????¼?¼?¼?¼?? ?{s?·? ?>>>>>>?·? ?{s??¼?¼?¼?¼??????????????????????§?????????????????????§??º??º??º??º??º??º??º??º??º????¼?¼?¼?¼?? ?}>>>>>?¹? ?}>>>>>?·? ?y>>>>>?¹? ? p? r? t? r? t? p? ?¾?¾?¾?¾?¾?¾? ? p? r? t? r? t? p? ?????????º??º??º??º??º??º??º??º??º??§?????????????????????§?????????????????????????????????????????????????? ?>>>>>>??????????????????????????????????????????????????§?????????????????????§???»????»????»????»????»????»????»????»????»?????»????»????»?? ?>>>>>>??»????»????»?????»????»????»????»????»????»????»????»????»???§?????????????????????§?????????????????????????????????????????????????? ?>>>>>>??????????????????????????????????????????????????§?????????????????????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤? ?>>>>>>?£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­??????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>>>?§????????????????????????????????????????????????????????????                                  ACorsixTH-0.61/CorsixTH/Campaigns/Four Corners.map000066400000000000000000005001541321660673500215740ustar00rootroot00000000000000??????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????N?;?;?;?:? ?>><? ? ?=?>>?N?;?;?;?:?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?D?DF?DG?@? ?>>?¹?¤? ?>>?M?DH?DF?DG?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?D?DG?D?@? ?>>?¢?­? ?>>?M?DF?D?D?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DF?D?D?@? ?>>?¹?¤? ?>>?M?D?D?DH?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DG?D?DH?@? ?>>?¢?­? ?>>?M?D?DG?DF?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?D?D?DF?@? ?>>?¹?¤? ?>>?M?DF?D?D?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?D?DG?D?@? ?>>?¢?­? ?>>?M?D?D?DG?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DF?D?DH?@? ?>>?¹?¤? ?>>?M?DG?D?DF?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????L?C?C?C?O? ?>>?¢?­? ?>>?L?C?C?C?O?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>??? ?>>>???????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????? ?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>????????????????????????????????????????????????? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>?¾?¾?¾? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>?¾?¾?¾? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾????????????????? ?>??¾?? ?>??????????? ?>??¾?? ?>?????????????????¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?xyz|z|z|z|z|z|z|x:Ú>;>Øxq?¾? ?xy:Ú>;>Øxz|z|z|z|z|x:Ú>;>Øxq?¾? ?xy:Ú>;>Øxz|z|z|z|z|z|z|xq?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>>?? ?y>q?? ?y>q?? ?y>q?? ?>>>????????????????????????????????????????????????? ?>>>>>:Û>:×>>:Û>:×>>:Û>:×>>>>>>????????????????????????????????????????????????? ?>>>>>;>;>>;>;>>;>;>>>>>>????????????????????????????????????????????????? ?>>>>>ÙÕ>>ÙÕ>>ÙÕ>>>>>>????????????????????????????????????????????????? ?>>><? ?=?y<q? ?=?y<q? ?=?y<q? ?=?>>>????????????????????????????????????????????????? ?>>>?¾? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t?=p?:Ö>;>Ô>;>Ô>;>Ô>;>Ô>>>????????????????????????????????????????????????? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>?¼?¹?¼? ?>>>?ª?¯?¯?¯?¯?¯?¯?¯?¯?«? ?>>>?¼?¹?¼? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾????????????????? ?>??¼?? ?>??????????? ?>??¼?? ?>?????????????????¾? ?>>>????????????????????????????????????????????????? ?>>>>?? ?xyz|z|z|z|z|z|z|x:Ú>;>Øx>q?? ?xy:Ú>;>Øxz|z|z|z|z|x:Ú>;>Øx>q?? ?xy:Ú>;>Øxz|z|z|z|z|z|z|x>q?? ?>>>????????????????????????????????????????????????? ?>>>>>:Û>:×>>:Û>:×>>:Û>:×>>>>>>????????????????????????????????????????????????? ?>>>>>;>;>>;>;>>;>;>>>>>>????????????????????????????????????????????????? ?>>>>>ÙÕ>>ÙÕ>>ÙÕ>>>>>>????????????????????????????????????????????????? ?>>><? ?=?y<q? ?=?y<q? ?=?y<q? ?=?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¨? ?{s?¨? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?§? ?}u?§? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?§? ?{s?§? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?§? ?}u?§? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?§? ?{s?§? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?§? ?}u?§? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?§? ?{s?§? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?§? ?}u?§? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?§? ?{s?§? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?©? ?}u?©? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>>?? ?y>q?? ?y>q?? ?y>q?? ?>>>????????????????????????????????????????????????? ?>>>>>:Û>:×>>:Û>:×>>:Û>:×>>>>>>????????????????????????????????????????????????? ?>>>>>;>;>>;>;>>;>;>>>>>>????????????????????????????????????????????????? ?>>>>>ÙÕ>>ÙÕ>>ÙÕ>>>>>>????????????????????????????????????????????????? ?>>><? ?=?y<q? ?=?y<q? ?=?y<q? ?=?>>>????????????????????????????????????????????????? ?>>>?¾? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t?=p?:Ö>;>Ô>;>Ô>;>Ô>;>Ô>>>????????????????????????????????????????????????? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>?¼?¹?¼? ?>>>?ª?¯?¯?¯?¯?¯?¯?¯?¯?«? ?>>>?¼?¹?¼? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾????????????????? ?>??¼?? ?>??????????? ?>??¼?? ?>?????????????????¾? ?>>>????????????????????????????????????????????????? ?>>>>?? ?xyz|z|z|z|z|z|z|x:Ú>;>Øx>q?? ?xy:Ú>;>Øxz|z|z|z|z|x:Ú>;>Øx>q?? ?xy:Ú>;>Øxz|z|z|z|z|z|z|x>q?? ?>>>????????????????????????????????????????????????? ?>>>>>:Û>:×>>:Û>:×>>:Û>:×>>>>>>????????????????????????????????????????????????? ?>>>>>;>;>>;>;>>;>;>>>>>>????????????????????????????????????????????????? ?>>>>>ÙÕ>>ÙÕ>>ÙÕ>>>>>>????????????????????????????????????????????????? ?>>><? ?=?y<q? ?=?y<q? ?=?y<q? ?=?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?{s?¾? ?{s?¾? ?{s?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?}u?¾? ?}u?¾? ?}u?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ?yq?¾? ?yq?¾? ?yq?¾? ?>>>????????????????????????????????????????????????? ?>>>?¾? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t?=p?:Ö>;>Ô>;>Ô>;>Ô>;>Ô>>>????????????????????????????????????????????????? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>?¾?¾?¾? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>?¾?¾?¾? ?>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>????????????????????????????????????????????????? ?>>>>?????????????????? ?>>>>???? ?>>>>??????????? ?>>>>???? ?>>>>?????????????????? ?>>>????????????????????????????????????????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>><? ? ?=?>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????N?;?;?;?:? ?>>?¹?¤? ?>>?N?;?;?;?:?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DG?D?DF?@? ?>>?¢?­? ?>>?M?DF?DG?D?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DF?D?DH?@? ?>>?¹?¤? ?>>?M?DH?D?DF?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?D?D?D?@? ?>>?¢?­? ?>>?M?D?DF?D?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DH?DF?DG?@? ?>>?¹?¤? ?>>?M?D?D?DG?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?D?D?D?@? ?>>?¢?­? ?>>?M?DG?D?DH?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DG?D?DF?@? ?>>?¹?¤? ?>>?M?D?DH?DF?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????M?DF?DH?DG?@? ?>>?¢?­? ?>>?M?DF?DG?D?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????L?C?C?C?O? ?>>>??? ?>>?L?C?C?C?O?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>>>>>????????????????????????????????????????????????????????????                        A4CorsixTH-0.61/CorsixTH/Campaigns/Greyham Gardens.map000066400000000000000000005001541321660673500222250ustar00rootroot00000000000000??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤?????????????????????????????????????????????????????????????????????????????????????§???????????????????????????????????????????§?????????????????????????????????????????????????????????????????????????????????????§????????????????? ?xyz|z|z|xq?????????????????§?????????????????????????????????????????????????????????????????????????????????????§????????????????? ?{s?????????????????§?????????????????????????????????????????????????????????????????????????????????????§? ?xyz|xz|xz|xq????? ?}u????? ?xyz|xz|xz|xq?§?????????????????????????????????????????????????????????????????????????????????????§? ?{s????? ?{s????? ?{s?§?????????????????????????????????????????????????????????????????????????????????????§? ?}u????? ?}u????? ?}u?§?????????????????????????????????????????????????????????????????????????????????????§? ?ys????? ?{s????? ?{q?§?????????????????????????????????????????????????????????????????????????????????????§? ?{u?»?»?»?»? ?}u?»?»?»?»? ?}s?§?????????????????????????????????????????????????????????????????????????????????????§? ?}>q????? ?y>q????? ?yu?§?????????????????????????????????????????????????????????????????????????????????????§? ?yxz|z|xxz|z|xq?§?????????????????????????????????????????????????????????????????????????????????????§? ?{s?§?????????????????????????????????????????????????????????????????????????????????????§? ?}u?§?????????????????????????????????????????????????????????????????????????????????????§? ?yq?§?????????????????????????????????????????????????????????????????????????????????????§? ?{q??????? ?{s?§?????????????????????????????????????????????????????????????????????????????????????§? ?}u?????? ?xyx>q?????? ?}u?§?????????????????????????????????????????????????????????????????????????????????????§? ?yq????? ?xyx>q????? ?yq?§?????????????????????????????????????????????????????????????????????????????????????§? ? p? r? t? p? r? t? p? r? t? p? ??? ?xyxxxq??? ? p? r? t? p? r? t? p? r? t? p? ?§?????????????????????????????????????????????????????????????????????????????????????§?¶?????????????? ?{s??????????????¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶?????????????? ?}u??????????????¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶??·?¹?·?¹?·?¹?·?¹?·???? ?yq????·?¹?·?¹?·?¹?·?¹?·??¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶??·?¹?·?¹?·?¹?·?¹?·???? ?yq????·?¹?·?¹?·?¹?·?¹?·??¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶??·?¹?·?¹?·?¹?·?¹?·???? ?{s????·?¹?·?¹?·?¹?·?¹?·??¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶??·?¹?·?¹?·?¹?·?¹?·???? ?}u????·?¹?·?¹?·?¹?·?¹?·??¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶??·?¹?·?¹?·?¹?·?¹?·???? ?yq????·?¹?·?¹?·?¹?·?¹?·??¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶??·?¹?·?¹?·?¹?·?¹?·???? ?yq????·?¹?·?¹?·?¹?·?¹?·??¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶?????????????? ?{s??????????????¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶?????????????? ?}u??????????????¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶?????????????? ?y>q??????????????¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶???¾?¼?¹?¼?¾?? ?xyzzzxx|||xq??¾?¼?¹?¼?¾???¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶???¼?¾?¼?¾?¼?? ?{s??¼?¾?¼?¾?¼???¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶???¹?¼?¾?¼?¹?? ?}u??¹?¼?¾?¼?¹???¶?§?????????????????????????????????????????????????????????????????????????????????????§?¶???¼?¾?¼?¾?¼?? ?yq??????????????? ?y>q??????????????????¶?§???????????????????????????????????????????????????????????????????§?¶???¼?¼?¼?¼?¼?¼?¼?¼?¼?????? ?xyxz|xxz|xxz|xxz|xxq??????¼?¼?¼?¼?¼?¼?¼?¼?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼????????¼?¼?¼?¼?¼?¼? ?}s?¼?¼?¼?¼?¼?¼?›?›?›?›?›?›?›?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?>>>>>>??????? ?}s?N?;?;?;?;?;?;?;?;?;?;?;?:?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?>>>>>>>>>>>>:Û>s=M?DF?D?D?DG?D?D?DG?D?DF?D?DH?@?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?>>>>>>>>>>>>;>q=M?DG?D?DH?D?D?DF?D?D?D?DG?DF?@?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?>>>>>>>>>>>>Ùu=M?D?DH?DF?D?DG?D?D?DH?D?DF?D?@?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?>>>>><? ? ? ? ? ? ?=?{u?L?C?C?C?C?C?C?C?C?C?C?C?O?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ? ? ? ? ? ? ?¼?¼?¼?¼?¼?¼? ?{u?¼?¼?¼?¼?¼?¼?›?›?›?›?›?›?›?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¼?¼?¼?¼?¼?¼?¼?¼?¼?????¹? ?yq?¹?????¼?¼?¼?¼?¼?¼?¼?¼?¼???¶?§???????????????????????????????????????????????????????????????????§?¶????????????????¼? ? p? r? r? r?=p?yq??????? ?y>q??¹?????¼?¹???????????¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?xyz|xxz|x>q??¹?¼?¹?¼?¹?¼? ?xyxz|z|z|xxq?¼?¹?¼?¹?¼?¹?? ?xyz|xxz|xq?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?{x>q??????? ?y>q??????? ?xys?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?}xz|z|z|xxz|z|z|xu?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?yq?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?yq?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?{q??????¼?¹? ?{q?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?{u?¼?—? ?>>>>:Û>:×>>>>>?—?¼? ?}s?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?}q?¹?—? ?>>>>;>;>>>>>?—?¹? ?yu?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?yq?¼?—? ?>>>>ÙÕ>>>>>?—?¼? ?yq?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?{s?¹?—? ?>>><?=?y<q?=?>>>?—?¹? ?{s?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?}u?¼?—? ?>>>? ?{s? ?>>>?—?¼? ?}u?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?yq?¹?—? ?>>>? ?}u? ?>>>?—?¹? ?yq?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?yq?¼?—? ?>>>? ?yq? ?>>>?—?¼? ?yq?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?{s?¹?—? ?>>>? ? p? r? t? p? r? t? p? r? t? p? r? t? p? r? t? p? ? ?>>>?—?¹? ?{s?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ?}u?¼?—? ?>>>?¾?¾?¾?¾?¾?????????¾?¾?¾?¾?¾? ?>>>?—?¼? ?}u?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼? ?yq?¹?—? ?>>>?¾?¾?¾?¾?? ?>>>>>>>??¾?¾?¾?¾? ?>>>?—?¹? ?yq?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???¹? ? p? r? t? p? p? r? t? p? ?¼?—? ?>>>?¾?¾?¾?? ?>>>>>>>>>??¾?¾?¾? ?>>>?—?¼? ? p? r? t? p? p? r? t? p? ?¹???¶?§???????????????????????????????????????????????????????????????????§?¶???¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?—? ?>>>>???? ?>>>>>>>>>>>???? ?>>>?—?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼???¶?§???????????????????????????????????????????????????????????????????§?¶???????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????¶?§???????????????????????????????????????????????????????????????????§?¶???????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????¶?§???????????????????????????????????????????????????????????????????§?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶? ? ? ? ? ? ? ? ?=?>>>>>>>>>><? ? ? ? ? ? ? ? ?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?§???????????????????????????????????????????????????????????????????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤?¾?¾? ?=?>>>>>>>><? ?¾?¾?£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­?????????????????????????????????????????????????????????????????????????????????????????§?¾?¾?¾? ?=?>>>>>><? ?¾?¾?¾?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?¾?¾?¾?¾? ?=?>>>><? ?¾?¾?¾?¾?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?N?;?;?;?:? ?>>>>?N?;?;?;?:?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DG?DF?DH?@? ?>>>>?M?DF?D?DH?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?D?DF?@? ?>>>>?M?D?DF?DF?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DH?D?D?@? ?>>>>?M?DG?D?DG?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?D?DG?@? ?>>>>?M?D?D?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?DF?D?@? ?>>>>?M?D?DF?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DG?D?D?@? ?>>>>?M?D?D?DH?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?DH?D?@? ?>>>>?M?D?DG?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?D?DF?@? ?>>>>?M?D?D?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?D?D?@? ?>>>>?M?DF?DH?DF?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?DG?DH?@? ?>>>>?M?D?DG?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DF?D?D?@? ?>>>>?M?DG?D?DH?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DH?D?D?@? ?>>>>?M?D?D?DF?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?D?DF?@? ?>>>>?M?DH?D?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?D?DG?@? ?>>>>?M?D?D?DG?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DG?D?DH?@? ?>>>>?M?D?DF?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?DF?D?@? ?>>>>?M?DG?D?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?D?D?D?@? ?>>>>?M?D?D?DH?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DH?D?DG?@? ?>>>>?M?DF?D?D?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?M?DF?D?D?@? ?>>>>?M?DH?D?DG?@?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????©?L?C?C?C?O? ?>>>>?L?C?C?C?O?©????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>>>>??????????????????????????????????????????????????????????????Á-©"CorsixTH-0.61/CorsixTH/Campaigns/Holby.map000066400000000000000000005001541321660673500203420ustar00rootroot00000000000000???????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º??????????????????????????????????????????????????????????????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«? ?>>>>>>?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤????????????????????????????????????????????????????????????????????????????????§?????????????????????? ?>>>>>>>???????????????????§????????????????????????????????????????????????????????????????????????????????§? ?xy<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<x<q<>>>>>>>>>><xy<z<|<z<|<z<|<x<z<|<z<|<z<|<x<q?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>>>>>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>>>>>>>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>>>>>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>><? ? ?=?>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<q<>>>?½?½? ?>>><y<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<>:×>>>>?½?½? ?>>>>:Û><<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?y<<<<<<<<<<<<<<<<<>;>>>>?½?½? ?>>>>;><<<<<<<<<<<<<<q?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<>Õ>>>>?½?½? ?>>>>Ù><<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<q<>>>?½?½? ?>>><y<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>??? ?>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>>>>>>>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>>>>>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>>>>>>>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?y<<<<<<<<<<<<<<<<<<q<>>>>>>>>>><y<<<<<<<<<<<<<<<q?§????????????????????????????????????????????????????????????????????????????????§? ?=p?y<<<>>>>>>>>>>>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¾?¾?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<u?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼? ?>>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¹?¤?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?{<<<>q????????????? ?>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¢?­?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<x<|<|<|<x<q? ?>>>>>? ?>>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¹?¤?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?{<<<<<<<<s? ?>>>>>? ?>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¢?­?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<<<<<<u? ?>>>>>? ?>>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¹?¤?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?{<<<<<<<<s? ?>>>>>? ?>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¢?­?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<<<<<<u? ?>>>>>? ?>>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¹?¤?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?{<<<<<<<<s? ?=?>>><? ? ?>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¢?­?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<<<<<<u?¼? ?>>>>?? ?>>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¹?¤?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?{<<<<<<<<s?¼? ?>>>>>>>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¢?­?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<<<<<<u?¼? ?>>>>>>>>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¹?¤?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?{<<<<<<<<q?¼? ?>>>>>>>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¢?­?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¹?¤?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?{<<<s?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼? ?>>>>>>>>>>>>?·? ?{<<<<<<<<s?¾?¢?­?¾?§????????????????????????????????????????????????????????????????????????????????§?¾? ?}<<<u?¹?¹?¹?¹?¹?¹?¹?¹?¹?¹?¹?¹? ?>>>>>>>>>>>>?·? ?}<<<<<<<<u?¾?¾?¾?¾?§????????????????????????????????????????????????????????????????????????????????§?? ?y<<<>q????????????? ?>>>>>>>>>>>>>?? ?y<<<<<<<<>q?????§????????????????????????????????????????????????????????????????????????????????§? ?xy<<<<x<z<|<z<|<z<|<z<|<z<|<z<|<x<q<>>>>>>>>>><zy<x<|<<<<<<<<<x<z<|<x<q?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>>>>>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>>>>>>>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>>>>>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>><? ? ?=?>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<q<>>>?½?½? ?>>><y<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<>:×>>>>?½?½? ?>>>>:Û><<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?y<<<<<<<<<<<<<<<<<>;>>>>?½?½? ?>>>>;><<<<<<<<<<<<<<q?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<>Õ>>>>?½?½? ?>>>>Ù><<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<q<>>>?½?½? ?>>><y<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>??? ?>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>>>>>>>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s<>>>>>>>>>><{<<<<<<<<<<<<<<<s?§????????????????????????????????????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u<>>>>>>>>>><}<<<<<<<<<<<<<<<u?§????????????????????????????????????????????????????????????????????????????????§? ?y<<<<<<<<<<<<<<<<<<q<>>>>>>>>>><y<<<<<<<<<<<<<<<q?§????????????????????????????????????????????????????????????????????????????????§? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ? ?=?>>>>>><? ? ? p? r? t? r? t? r? t? p? r? t? r? t? r? t? p? ?§????????????????????????????????????????????????????????????????????????????????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«? ?>>>>>>?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­?????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>>>>>>?º????????????????????????????????????????????????????????????¸%µCorsixTH-0.61/CorsixTH/Campaigns/Hoppalong.map000066400000000000000000005001541321660673500212140ustar00rootroot00000000000000???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?·?·?·?·?·?·?·?·?·?·?·?·?·?·?·?·?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?¸?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¸?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?·?¼????????¾?¾?¾?¾?¾?¼?·?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?¸?¼? ?>>>>>>??????¼?¸?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?·?¼? ?>>>>>>>>>>?¼?·?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?¸?¼? ?>>>>>>>>>>?¼?¸?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?·?¼? ?>>>>>>>>>>?¼?·?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?¸?¼? ?>>>>><?=?>>>?¼?¸?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?·?¼? ? ? ? ? ? ? ? ?>>>?¼?·?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?¸?¼?¼?¼?¼?¼?¼?¼?¼? ?>>>?¼?¸?§???????????????????????????????????????????????????????????????????????????????????????????????????????????????§?·??????=== ?>>>>??·?§?????????????????????????????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­?¸? ?Kxy<Kz<K|<Kz<K|<Kz<K|<Kx<:KÚ>;K>KØ>Kx<q?¸?¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤???????????????????§?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<s?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?§???????????????????§?¸????????????????????????????????????¹?¹?¹?¹?¹?¹?¹?¹?¹?¹?¹? ?K}<K<K<K<K<K<K<K<K<K<K<K<u?¹?¹?¹?¹?¹?¹?¹?¹?¹?¹?¹????????????????????????????????????¸?§???????????????????§?·? ?Kxy<Kz<K|<Kz<K|<Kz<K|<Kx<Kz<K|<Kz<K|<Kz<K|<Kx<q??????? ?Kxy<Kz<K|<Kz<K|<Kz<K|<Kz<K|<Kx<>q???????????? ?Ky<K<K<K<K<K<K<K<K<K<K<K<>q???????????? ?Kxy<Kz<K|<Kz<K|<Kz<K|<Kz<K|<Kx<q??????? ?Kxy<Kz<K|<Kz<K|<Kz<K|<Kx<Kz<K|<Kz<K|<Kz<K|<Kx<q?·?§???????????????????§?¸? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s??????? ?K{<K<K<K<K<K<K<K<K<K<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<K<K<K<K<K<K<K<K<K<K<K<K<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<K<K<K<K<K<K<K<K<K<K<s??????? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¸?§???????????????????§?·? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u??????? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u??????? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?·?§???????????????????§?¸? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s??????? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s??????? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¸?§???????????????????§?·? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u??????? ?K}<K<K<K<K<K<K<K<K<K<q??????? ?Ky<K<K<K<K<K<K<K<K<K<s?¹??????????? ?K{<K<K<K<K<K<K<K<K<K<K<K<s???????????¹? ?K{<K<K<K<K<K<K<K<K<K<>q??????? ?Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¸?§???????????????????§?·? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<Kx<Kz<K|<Kz<K|<Kz<K|<Kx<K<K<K<K<K<K<K<K<K<K<u?¹??????????? ?K}<K<K<K<K<K<K<K<K<K<K<K<u???????????¹? ?K}<K<K<K<K<K<K<K<K<K<Kx<Kz<K|<Kz<K|<Kz<K|<Kx<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?·?§???????????????????§?¸? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¹???º?º?º?º?º?º??? ?Ky<K<K<K<K<K<K<K<K<K<K<K<q???º?º?º?º?º?º???¹? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¸?§???????????????????§?·? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u??? ?K}<K<K<K<K<K<K<K<K<K<K<K<s?¹???¾?¾?????????¾?¾? ?K{<K<K<K<s?¾?¾?????????¾?¾???¹? ?K{<K<K<K<K<K<K<K<K<K<K<K<>u??? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¸?§???????????????????§?·? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<Kz<K|<Kz<K|<K<K<K<K<K<K<K<K<K<K<K<K<u?¹???¾?¾? ?Kxy<Kz<K|<Kz<K|<Kx<q?¾?¾? ?K}<K<K<K<u?¾?¾? ?Kxy<Kz<K|<Kz<K|<Kx<q?¾?¾???¹? ?K}<K<K<K<K<K<K<K<K<K<K<K<Kz<K|<Kz<K|<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?·?§???????????????????§?¸? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¹????? ?Ky<K<K<K<K<K<>q??? ?Ky<K<K<K<>q??? ?Ky<K<K<K<K<K<>q?????¹? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¸?§???????????????????§?·? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K>K>K<K<K<K<K<K<q?¸?M?D?DF?@?¸? ?Ky<K<K<K<K<K<K>K>K>K<q?¹??? ?Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<q???¹? ?Ky<K>K>K>K<K<K<K<K<K<q?¸?M?D?DH?@?¸? ?Ky<K<K<K<K<K<K>K>K>K<K<K<K<K<K<q?¸?§??????????¯?¯?¯?¯?¯?¯?¯?¯?¯?­?·? ? p? r? t? r? t?=p?:Ö>;>Ô>;>Ô>???¹? ?=p?:Ö>;>Ô>;>Ô>>>?¸?·?¸?·?¸?·?¸?·?·?·?·?¸?·?¸?·?¸?·?¸? ?>>>?¹?¹?? ?><<Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<q<<>>??¹?¹? ?>>>?¸?·?¸?·?¸?·?¸?·?·?·?·?¸?·?¸?·?¸?·?¸? ?>>>?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?????????????????? ?>>>>??????????????????? ?>>>>??? ?>><>:KÛ>K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K>:×><>>>??? ?>>>>??????????????????? ?>>>>??????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>;K>K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K>;><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>KÙ>K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K>Õ><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>:KÛ>K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K>:×><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>;K>K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K>;><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ?=?>><>KÙ>K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K>Õ><>><? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸? ?>>>?¸?·?¸?·?¸?·?¸?·?·?·?·?¸?·?¸?·?¸?·?¸? ?>>>?¹?¹? ?=?><<Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<q<<><? ?¹?¹? ?>>>?¸?·?¸?·?¸?·?¸?·?·?·?·?¸?·?¸?·?¸?·?¸? ?>>>?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?·?¸?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤?·??????? ?>>>>???????·?N?;?;?:?·??????? ?>>>>??¹?? ?=?<<Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<q<<<? ??¹?? ?>>>>???????·?N?;?;?:?·??????? ?>>>>???????·?£?¯?¯?¯?¯?¯?¯?¯?¯?¯??????????§?¸? ?Kxy<Kz<K|<Kz<K|<Kx<:KÚ>;K>KØ>Kx<Kz<K|<Kz<K|<Kx<q?¸?M?DH?DF?@?¸? ?Kxy<Kz<K|<Kz<K|<Kx<:KÚ>;K>KØ>Kx<q?¹??? ?Kxy<Kx<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<Kx<Kx<q???¹? ?Kxy<:KÚ>;K>KØ>Kx<Kz<K|<Kz<K|<Kx<q?¸?M?D?DF?@?¸? ?Kxy<Kz<K|<Kz<K|<Kx<:KÚ>;K>KØ>Kx<Kz<K|<Kz<K|<Kx<q?¸?§???????????????????§?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?M?D?DG?@?·? ?K{<K<K<K<K<K<K<K<K<K<s?¹??? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s???¹? ?K{<K<K<K<K<K<K<K<K<K<s?·?M?DG?D?@?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?§???????????????????§?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?¸?M?DF?DG?@?¸? ?K}<K<K<K<K<K<K<K<K<K<u?¹??? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u???¹? ?K}<K<K<K<K<K<K<K<K<K<u?¸?M?DF?DG?@?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?¸?§???????????????????§?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?L?C?C?O?·? ?K{<K<K<K<K<K<K<K<K<K<s?¹??? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s???¹? ?K{<K<K<K<K<K<K<K<K<K<s?·?L?C?C?O?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?§???????????????????§?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?¸?·?·?·?·?¸? ?K}<K<K<K<K<K<K<K<K<K<u?¹??? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u???¹? ?K}<K<K<K<K<K<K<K<K<K<u?¸?·?·?·?·?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?¸?§???????????????????§?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<>q??????? ?Ky<K<K<K<K<K<K<K<K<K<s?¹??? ?Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<q???¹? ?K{<K<K<K<K<K<K<K<K<K<>q??????? ?Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?§???????????????????§?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<Kx<Kz<K|<Kz<K|<Kz<K|<Kx<K<K<K<K<K<K<K<K<K<K<u?¹??? ? p?=p?Ky<K<K<K<K<K<u??? ?K}<K<K<K<K<K<K<K<K<K<K<K<s?¹???º?º?º?º?º?º??????? ?Ky<K<K<K<>q???????º?º?º?º?º?º???¹? ?K{<K<K<K<K<K<K<K<K<K<K<K<>u??? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?§???????????????????§?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<Kz<K|<Kz<K|<K<K<K<K<K<K<K<K<K<K<K<K<u?¹???º?º?º?º?º?º??? ?Kxy<Kz<K|<Kx<K<K<K<K<Kx<Kz<K|<Kx<q???º?º?º?º?º?º???¹? ?K}<K<K<K<K<K<K<K<K<K<K<K<Kz<K|<Kz<K|<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?¸?§???????????????????§?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?¹??????????? ?K{<K<K<K<K<K<K<K<K<K<K<K<s???????????¹? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?§???????????????????§?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<q???????????? ?Ky<K<K<K<K<K<K<K<K<K<K<K<>q???????????? ?Ky<K<K<K<K<K<K<K<K<K<s??????? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?§???????????????????§?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u??????? ?K}<K<K<K<K<K<K<K<K<K<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<K<K<K<K<K<K<K<K<K<K<K<K<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<Kz<K|<Kx<K<K<K<K<K<K<K<K<K<K<u??????? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?¸?§???????????????????§?·? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s??????? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s??????? ?K{<K<K<K<K<K<K<K<K<K<K<K<K<K<K<s?·?§???????????????????§?¸? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u??????? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u??????? ?K}<K<K<K<K<K<K<K<K<K<K<K<K<K<K<u?¸?§???????????????????§?·? ?Ky<K<K<K<K<K<K<K<K<K<K<K<K<K<K<q??????? ?Ky<K<K<K<K<K<K<K<K<K<>>>>>?·???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????½? ?>>>>>>?½???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????·? ?>>>>>>?·???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????½? ?>>>>>>?½???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????·? ?>>>>>>?·???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????½? ?>>>>>>?½???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????·? ?>>>>>>?·???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????½? ?>>>>>>?½???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????·? ?>>>>>>?·???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????½? ?>>>>>>?½??????????????????????????????????????????????????????????????????????£?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¤?·? ?>>>>>>?·?£?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¤?????????????????????§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?½? ?>>>>>>?½?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?????????????????????ª?¯?°?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?­?·? ?>>>>>>?·?¢?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?°?¯?«?????????????????????§?¾?§??????????????????????????????¼?¼?¼???????????????½? ?>>>>>>?½???????????????¼?¼?¼??????????????????????????????§?¾?§?????????????????????ª?¯?«? ?ExyEzE|Ex:×>>>>>>>>>>:AxÛ>AzA|AzA|AzA|AzA|AzA|Axq?N?;?:? ?xyz|z|z|z|z|xq?·? ?>>>>>>?·? ?xyz|z|z|z|z|xq?N?;?:? ?AxyAzA|AzA|AzA|AzA|AzA|Ax:×>>>>>>>>>>:ExÛ>EzE|Exq?ª?¯?«?????????????????????§?¹?§? ?E{EEE;>>>>>>>>>>;A>AAAAAAAAAAAs?M?DF?@? ?{s?½? ?>>>>>>?½? ?{s?M?DF?@? ?A{AAAAAAAAAAA;>>>>>>>>>>;E>EEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEÕ>>>>>>>>>>AÙAAAAAAAAAAAu?L?C?O? ?}u?·? ?>>>>>>?·? ?}u?L?C?O? ?A}AAAAAAAAAAAÕ>>>>>>>>>>EÙEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEE<q? ? ? ? ? ? ? ? ? ? ? p?=p?AyAAAAAAAAA>q???? ?y>q?? ?>>>>>>>?? ?y>q???? ?AyAAAAAAAAA>:Û>:×>>>>>>>>>>>:Û>:×>>:AxÛ>AxAAAAAAAAAAs?º?¾?º?¾?º?¾?º?¾?º?¾?º? ?E{EEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEu?¾?º?¾?º?¾?º?¾?º?¾?¹?¾? ?A}AAAAAAAAAAA;>>;>;>>>>>>>>>>>;>;>>;A>AAAAAAAAAAAu?¾?¹?¾?º?¾?º?¾?º?¾?º?¾? ?E}EEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEE>q?????????º?¹?º? ?AyAAAAAAAAAAAÕ>>ÙÕ>>>>>>>>>>>ÙÕ>>AÙAAAAAAAAAAAq?º?¹?º????????? ?EyEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEExEzE|EzE|EzE|Exq?¾?¹?¾? ? p? r? t? r? t? r? t? r? t? r? t? p? ? ? ? p? r? t? r? t? r? t? r? t? r? t? p? ? ?=?>>>>>><? ? ? p? r? t? r? t? r? t? r? t? r? t? p? ? ? ? p? r? t? r? t? r? t? r? t? r? t? p? ?¾?¹?¾? ?ExyEzE|EzE|EzE|ExEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º?¾?º?¾?º?¾?º?¾?º?¾?º?¾?º?¾?º?¾?º?¾???????????????? ?>>>>>>????????????????¾?º?¾?º?¾?º?¾?º?¾?º?¾?º?¾?º?¾?º?¾?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEEEEEEEu?¾?????????????????º? ?xyz|xz|xz|xz|xq? ?>>>>>>? ?xyz|xz|xz|xz|xq?º?????????????????¾? ?E}EEEEEEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?xyz|z|z|z|z|z|xq?¾? ?{s? ?>>>>>>? ?{s?¾? ?xyz|z|z|z|z|z|xq?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEEEEEEEEu?¾? ?{s?º? ?}u? ?>>>>>>? ?}u?º? ?{s?¾? ?E}EEEEEEEEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?}u?¾? ?{s? ?>>>>>>? ?{s?¾? ?}u?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEEEEEEEu?¾? ?{s?º? ?}u? ?>>>>>>? ?}u?º? ?{s?¾? ?E}EEEEEEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?}u?¾? ?{s? ?>>>>>>? ?{s?¾? ?}u?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEEEEEEEEu?¾? ?{s?º? ?}u? ?>>>>>>? ?}u?º? ?{s?¾? ?E}EEEEEEEEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?}u?¾? ?{s? ?>>>>>>? ?{s?¾? ?}u?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEEEEEEEu?¾? ?{s?º? ?}u? ?>>>>>>? ?}u?º? ?{s?¾? ?E}EEEEEEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?}u?¾? ?{s? ?>>>>>>? ?{s?¾? ?}u?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEEEEEEEEu?¾? ?{s?º? ?}u? ?>>>>>>? ?}u?º? ?{s?¾? ?E}EEEEEEEEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?}u?¾? ?yq? ?>>>>>>? ?yq?¾? ?}u?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEEEEEEEu?¾? ?{s?º? ?y>>>>>? ? p? r? t? r? t? r? t?=p?yq?º? ?{s?¾? ?E}EEEEEEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?}u?¾? ?{s?¶?¶?¶?¶?¶?¶?¶?¶? ?>>>>>>?¶?¶?¶?¶?¶?¶?¶?¶? ?{s?¾? ?}u?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEEEEEEEEu?¾? ?{s?º? ?{s?¶???????? ?>>>>>>????????¶? ?{s?º? ?{s?¾? ?E}EEEEEEEEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs?º? ?}u?¾? ?{s?¶? ?>>>>>? ?>>>>>>? ?>>>>>?¶? ?{s?¾? ?}u?º? ?E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEEEEEEE>u?? ?y>q?? ?yq?¶? ?>>>>>? ?>>>>>>? ?>>>>>?¶? ?y>q?? ?y>q?? ?E}EEEEEEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs>>>p>:Ö>;>Ô>p>r>t>r>t>p>:Ö>;>Ô>p>>>>p>:Ö>;>Ô>p>?¶? ?>>>>>? ?>>>>>>? ?>>>>>?¶? ?p>:Ö>;>Ô>p>>>>p>:Ö>;>Ô>p>r>t>r>t>p>:Ö>;>Ô>p>>>>E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEEEEEEEEu>>>>>>>>>>>>>>>>>>>>>>>>>?¶? ?>>>>>? ?>>>>>>? ?>>>>>?¶? ?>>>>>>>>>>>>>>>>>>>>>>>>>E}EEEEEEEEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEs>>>>>>>>>>>>>>>>>>>>>>>>>?¶? ?>>>>>? ?>>>>>>? ?>>>>>?¶? ?>>>>>>>>>>>>>>>>>>>>>>>>>E{EEEEEEEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEEEEEEEu>>><? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>>>>>>?¶? ?=?>>><? ? ?>>>>>>? ?=?>>><? ?¶? ?>>>>>>>><? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>E}EEEEEEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEEEEq>>>?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼? ?>>>>>>>>>??? ?>>>>?? ?>>>>>>>?? ?>>>>??? ?>>>>>>>>?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾? ?>>>EyEEEEEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEE;>Ô>>>>?¼???????????¾? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¾???????????¼? ?>>>:Ö>;>Ô>>>>>>?¾? ?KxyKzK|KzK|KzK|Kxq?¼? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¼? ?KxyKzK|KzK|KzK|Kxq?¾? ?>>>>>>?¹? ?E{EEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEu?·? ?>>>>>>?¼? ?K{KKKKKKKs?¾? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¾? ?K{KKKKKKKs?¼? ?>>>>>>?·? ?E}EEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEs?¹? ? ? ?=?>>>?¾? ?K}KKKKKKKu?¼? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¼? ?K}KKKKKKKu?¾? ?>>><? ? ? ?¹? ?E{EEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEEu?·?¹?·?¹? ?>>>?¼? ?K{KKKKKKKs?¾? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¾? ?K{KKKKKKKs?¼? ?>>>?¹?·?¹?·? ?E}EEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEE>q????·? ?>>>?¾? ?K}KKKKKKKu?¼? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¼? ?K}KKKKKKKu?¾? ?>>>?·???? ?EyEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEExExExq?¹? ?>>>?¼? ?K{KKKKKKKs?¾? ?>><? ? ?=?>><? ? ? ? ? ? ? ? ?=?>>>>>><? ? ? ? ? ? ? ? ?=?>><? ? ?=?>>?¾? ?K{KKKKKKKs?¼? ?>>>?¹? ?ExyExExEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEs?·? ?>>>?¾? ?K}KKKKKKKu?¼? ?>>?¼?·? ?>>?£?¯?¯?¯?¯?¯?¯?¤? ?>>>>>>?£?¯?¯?¯?¯?¯?¯?¤? ?>>?·?¼? ?>>?¼? ?K}KKKKKKKu?¾? ?>>>?·? ?E{EEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?E{EEEEEEEEu?¹? ?>>>?¼? ?K{KKKKKKKq?¾? ?>>?·?¼? ?>>?§?N?;?;?:?¾?¹?§? ??§?¹?¾?N?;?;?:?§? ?>>?¼?·? ?>>?¾? ?KyKKKKKKKs?¼? ?>>>?¹? ?E}EEEEEEEEs?§?¾?§?????????????????????ª?¯?«? ?E}EEEEEEEEq?·? ?>>>?¾? ?K}KKKKKKK>q?? ?>>?¼?·? ?>>?§?M?DF?DG?@?¾?¹?§? ?:AÚy>;A>AØ:AÚ>;A>AØq?§?¹?¾?M?DF?DG?@?§? ?>>?·?¼? ?>>>?? ?KyKKKKKKKu?¾? ?>>>?·? ?EyEEEEEEEEu?ª?¯?«?????????????????????§?¹?§? ?E{EEEEEEEEs?¹? ?>>>?¼? ?K{KKKKKKK:×>>>>>?·?¼? ?>>?§?M?DG?DF?@?¾?¹?§? ?AyAAAAAq?§?¹?¾?M?DG?DF?@?§? ?>>?¼?·? ?>>>>:KÛ>KKKKKKKs?¼? ?>>>?¹? ?E{EEEEEEEEs?§?¹?§?????????????????????ª?¯?«? ?E}EEEEEEEEu?·? ?>>>?¾? ?K}KKKKKKK;>>>>>?¼?·? ?>>?§?L?C?C?O?¾?¹?§? ?AyAAAAAq?§?¹?¾?L?C?C?O?§? ?>>?·?¼? ?>>>>;K>KKKKKKKu?¾? ?>>>?·? ?E}EEEEEEEEu?ª?¯?«?????????????????????§?¾?§? ?EyEEEEEEEEq?¹? ?>>>?¼? ?KyKKKKKKKÕ>>>>>?·?¼? ?>>?§?¾?¾?¾?¾?£?¯?­? ?AyAAAAAq?¢?¯?¤?¾?¾?¾?¾?§? ?>>?¼?·? ?>>>>KÙKKKKKKKq?¼? ?>>>?¹? ?EyEEEEEEEEq?§?¾?§?????????????????????¢?¯?­? ? p? r? t? p? p? p? r? t? p? ?·? ?>>>?¾? ? p? r? t? r? t? r? t? p? ? ?=?>>?¼?·? ?>>?§?¹?¹?¹?¹?§??? ?AyAAAAA>q???§?¹?¹?¹?¹?§? ?>>?·?¼? ?>><? ? ? p? r? t? r? t? r? t? p? ?¾? ?>>>?·? ? p? r? t? p? p? p? r? t? p? ?¢?¯?­???????????¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹? ?>>>?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾? ?>>?·?¼? ?>>?¢?¯?¯?¯?¯?­? ?AxyAxAAAAAAAxAxq?¢?¯?¯?¯?¯?­? ?>>?¼?·? ?>>?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼? ?>>>?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?·?¹?????????????????????????? ?>>>>????????????? ?>>>??? ?>>>??????? ?AyAAAAAAAAA>q??????? ?>>>??? ?>>>????????????? ?>>>>??????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:AxÛ>AxAxAxAxAAAAAAAAAAAxAxAxAxAx:×>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;A>AAAAAAAAAAAAAAAAAAA;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AÙAAAAAAAAAAAAAAAAAAAÕ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:AÛ>AAAAAAAAAAAAAAAAAAA:×>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;A>AAAAAAAAAAAAAAAAAAA;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AÙAAAAAAAAAAAAAAAAAAAÕ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ?=?>><? ? ?=?>><? ? ? p? p? p? p?=p?AyAAAAAAAAA><? ? ?=?>><? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼? ?>>>?¹?¼?¹?¼?¹?¼? ?>>>?¹?¼?¹?¼?¹?¼? ?>>?·?¼? ?>>?£?¯?¯?¯?¯?¤? ?AyAAAAAAAAAq?£?¯?¯?¯?¯?¤? ?>>?¼?·? ?>>?¼?¹?¼?¹?¼?¹? ?>>>?¼?¹?¼?¹?¼?¹? ?>>>?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹?¼?¹???????????£?¯?¤?¹?½?½?½?½?½?½? ?>>>?½?½?½?½?½?½? ?>>>?½?½?½?½?½?¹? ?>>?¼?·? ?>>?§?¹?¹?¹?¹?§? ? p?=p?AyAAAAA>?·?¼? ?>>?¹?½?½?½?½?½? ?>>>?½?½?½?½?½?½? ?>>>?½?½?½?½?½?½?¹?£?¯?¤?????????????????????§?¾?§?¼??????? ?>??????? ?>??????¼? ?>>?·?¼? ?>>?§?¾?¾?¾?¾?¢?¯?¤? ?AyAAAAAq?£?¯?­?¾?¾?¾?¾?§? ?>>?¼?·? ?>>?¼?????? ???????? ?>???????¼?§?¾?§?????????????????????ª?¯?«?¹? ?xyz|z|x:Ú>;>Øxz|z|xq? ?:Úy>;>Øxz|xxq?¹? ?>>?¼?·? ?>>?§?N?;?;?:?¾?¹?§? ?AyAAAAAq?§?¹?¾?N?;?;?:?§? ?>>?·?¼? ?>>?¹? ?xyxz|x:Ú>;>Øq? ?xyz|z|x:Ú>;>Øxz|z|xq?¹?ª?¯?«?????????????????????§?¹?§?¼? ?{s? ?{s?¼? ?>>?·?¼? ?>>?§?M?DG?DF?@?¾?¹?§? ?AyAAAAAq?§?¹?¾?M?DF?DG?@?§? ?>>?¼?·? ?>>?¼? ?{s? ?{s?¼?§?¹?§?????????????????????ª?¯?«?¹? ?}u? ?}u?¹? ?>>?¼?·? ?>>?§?M?DF?DG?@?¾?¹?§? ?AyAAAAAq?§?¹?¾?M?DG?DF?@?§? ?>>?·?¼? ?>>?¹? ?}u? ?}u?¹?ª?¯?«?????????????????????§?¾?§?¼? ?yq? ?yq?¼? ?>>?·?¼? ?>>?§?L?C?C?O?¾?¹?§? ?:Ö>;>Ô>:Ö>;>Ô>?§?¹?¾?L?C?C?O?§? ?>>?¼?·? ?>>?¼? ?yq? ?yq?¼?§?¾?§?????????????????????ª?¯?«?¹? ?{q? ?yq?¹? ?>>?¼?·? ?>>?¢?¯?¯?¯?¯?¯?¯?­? ?>>>>>>?¢?¯?¯?¯?¯?¯?¯?­? ?>>?·?¼? ?>>?¹? ?yq? ?ys?¹?ª?¯?«?????????????????????§?¹?§?¼? ?}q? ?yq?¼? ?>>>??? ?>>>????????? ?>>>>>>>????????? ?>>>??? ?>>?¼? ?yq? ?yu?¼?§?¹?§?????????????????????ª?¯?«?¹? ?ys? ?{s?¹? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¹? ?{s? ?{q?¹?ª?¯?«?????????????????????§?¾?§?¼? ?{u? ?}u?¼? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¼? ?}u? ?}s?¼?§?¾?§?????????????????????ª?¯?«?¹? ?}>q? ?y>q?? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?? ?y>q? ?yu?¹?ª?¯?«?????????????????????§?¹?§?¼? ?y:×>:Û>:×>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:Û>:×>:Û>q?¼?§?¹?§?????????????????????ª?¯?«?¹? ?{;>;>;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;>;>;>s?¹?ª?¯?«?????????????????????§?¾?§?¼? ?}ÕÙÕ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ÙÕÙu?¼?§?¾?§?????????????????????ª?¯?«?¹? ?y>><? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>>>><? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ? p? r? t? r? t? r? t? p? ? ? p? r? t? p? p? p? r? t?=p?yq?¹?ª?¯?«?????????????????????§?¹?§?¼? ?{s?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾? ?>>>?£?¯?´?¯?´?¯?¯?´?¯?´?¯?¤? ?>>>>>>?£?¯?´?¯?´?¯?¯?´?¯?´?¯?¤? ?>>>?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾? ?{s?¼?§?¹?§?????????????????????ª?¯?«?¹? ?}u?N?;?;?:?????????????????? ?>>>?©???????????©? ?>>>>>>?©???????????©? ?>>>??????????????????N?;?;?:? ?}u?¹?ª?¯?«?????????????????????§?¾?§?¼? ?ys?M?D?DG?@? ?xyz|z|z|xz|z|z|xq? ?>>>>?? ?xyz|z|z|x>q?? ?>>>>>>>?? ?xyz|z|z|x>q?? ?>>>? ?xyz|z|z|xz|z|z|xq?M?DG?D?@? ?{q?¼?§?¾?§?????????????????????ª?¯?«?¹? ?yu?M?DF?D?@? ?{s? ?>>>>>:Û>:×>>>>>>>>>>>:Û>:×>>>>>>? ?{s?M?D?DH?@? ?}q?¹?ª?¯?«?????????????????????§?¹?§?¼? ?ys?M?DH?D?@? ?}u? ?>>>>>;>;>>>>>>>>>>>;>;>>>>>>? ?}u?M?DH?DF?@? ?{q?¼?§?¹?§?????????????????????ª?¯?«?¹? ?{u?M?D?DF?@? ?{s? ?>>>>>ÙÕ>>>>>>>>>>>ÙÕ>>>>>>? ?{s?M?D?D?@? ?}s?¹?ª?¯?«?????????????????????§?¾?§?¼? ?}s?M?D?DG?@? ?}u? ?>>><? ?=?y<q? ?=?>>>>>><? ?=?y<q? ?=?>>>? ?}u?M?D?DG?@? ?{u?¼?§?¾?§?????????????????????ª?¯?«?¹? ?yu?M?DG?D?@? ?{s? ?>>>?¨? ?{s?¨? ?>>>>>>?¨? ?{s?¨? ?>>>? ?{s?M?DF?D?@? ?}q?¹?ª?¯?«?????????????????????§?¹?§?¼? ?{s?M?DF?DH?@? ?}u? ?>>>?§? ?}u?§? ?>>>>>>?§? ?}u?§? ?>>>? ?}u?M?DH?DF?@? ?{s?¼?§?¹?§?????????????????????ª?¯?«?¹? ?}u?L?C?C?O? ?{s? ?>>>?²? ?{s?²? ?>>>>>>?²? ?{s?²? ?>>>? ?{s?L?C?C?O? ?}u?¹?ª?¯?«?????????????????????§?¾?§?¼? ?ys?¸?¾?¸?¾? ?}u? ?>>>?§? ?}u?§? ?>>>>>>?§? ?}u?§? ?>>>? ?}u?¾?¸?¾?¸? ?{q?¼?§?¾?§?????????????????????ª?¯?«?¹? ?{u?¾???? ?y>q? ??§? ?{s?§? ?>>>>>>?§? ?{s?§? ?>? ?y>q????¾? ?}s?¹?ª?¯?«?????????????????????§?¹?§?¼? ?}>q?? ?xyxxxx:Ú>;>Øs?²? ?}u?²? ?>>>>>>?²? ?}u?²? ?:Ú{>;>Øxxxxx>q?? ?yu?¼?§?¹?§?????????????????????ª?¯?«?¹? ?y:×>>:Û>u?§? ?{s?§? ?>>>>>>?§? ?{s?§? ?}:×>>:Û>q?¹?ª?¯?«?????????????????????§?¾?§?¼? ?{;>>;>q?§? ?}u?§? ?>>>>>>?§? ?}u?§? ?y;>>;>s?¼?§?¾?§?????????????????????ª?¯?«?¹? ?}Õ>>Ùs?§? ?{s?§? ?>>>>>>?§? ?{s?§? ?{Õ>>Ùu?¹?ª?¯?«?????????????????????§?¹?§?¼? ?y<q? ?=?yu?§? ?}u?§? ?>>>>>>?§? ?}u?§? ?}<q? ?=?yq?¼?§?¹?§?????????????????????ª?¯?«?¹? ?{s?¾? ? p? p?=p?y;>Ô>?²? ?{s?²? ?>>>>>>?²? ?{s?²? ?:Ö>;>Ô>>>?§? ?}u?§? ?>>>>>>?§? ?}u?§? ?>>>? ?{s?¾?¸?¾?¸? ?}u?¼?§?¾?§?????????????????????ª?¯?«?? ?y>q????¸? ?}u? ?>>>?§? ?{s?§? ?>>>>>>?§? ?{s?§? ?>>>? ?}u?¸???? ?y>q??ª?¯?«?????????????????????§?¹?§? ?xyxxxq?¾? ?{s? ?>>>?²? ?}u?²? ?>>>>>>?²? ?}u?²? ?>>>? ?{s?¾? ?xyxxxq?§?¹?§?????????????????????ª?¯?«? ?{s?¸? ?}u? ?>>>?§? ?{s?§? ?>>>>>>?§? ?{s?§? ?>>>? ?}u?¸? ?{s?ª?¯?«?????????????????????§?¾?§? ?}u?¾? ?{s? ?>>>?©? ?}u?©? ?>>>>>>?©? ?}u?©? ?>>>? ?{s?¾? ?}u?§?¾?§?????????????????????ª?¯?«? ?{s?¸? ?}u? ?>>>>?? ?y>q?? ?>>>>>>>?? ?y>q?? ?>>>? ?}u?¸? ?{s?ª?¯?«?????????????????????§?¹?§? ?}u?¾? ?{s? ?>>>>>:Û>:×>>>>>>>>>>>:Û>:×>>>>>>? ?{s?¾? ?}u?§?¹?§?????????????????????ª?¯?«? ?{s?¸? ?}u? ?>>>>>;>;>>>>>>>>>>>;>;>>>>>>? ?}u?¸? ?{s?ª?¯?«?????????????????????§?¾?§? ?}u?¾? ?yq? ?>>>>>ÙÕ>>>>>>>>>>>ÙÕ>>>>>>? ?yq?¾? ?}u?§?¾?§?????????????????????ª?¯?«? ?{s?¸? ? p? r? t? r? t? r? t? p? r? t? r? t? r? t? p? ? ? ? ? ? ? ?=?y<q? ?=?>>>>>><? ?=?y<q? ? ? ? ? ? ? ? p? r? t? r? t? r? t? p? r? t? r? t? r? t? p? ?¸? ?{s?ª?¯?«?????????????????????§?¹?§? ?}u?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸? ? p? r? t? r? t? r? t? p? ?¾? ?>>>>>>?¾? ? p? r? t? r? t? r? t? p? ?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾? ?}u?§?¹?§?????????????????????ª?¯?«? ?yq?¸?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸? ?>>>>>>?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?›?¸? ?yq?ª?¯?«?????????????????????§?¾?§? ? p? r? t? r? t? r? t? r? t? p? ?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾? ?>>>>>>?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾?¸?¾? ? p? r? t? r? t? r? t? r? t? p? ?§?¾?§?????????????????????ª?¯?°?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¤?¸? ?>>>>>>?¸?£?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?¨?¯?°?¯?«?????????????????????§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¾? ?>>>>>>?¾?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?¾?§?¹?§?????????????????????¢?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?­?¸? ?>>>>>>?¸?¢?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?©?¯?­??????????????????????????????????????????????????????????????????????¾? ?>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¸? ?>>>>>>?¸???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¸? ?>>>>>>?¸???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¸? ?>>>>>>?¸???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¸? ?>>>>>>?¸???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¾? ?>>>>>>?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¸? ?>>>>>>?¸????????????????????????????????????????????????????????????                                               @ 8CorsixTH-0.61/CorsixTH/Campaigns/Snuffit Sands.map000066400000000000000000005001541321660673500217340ustar00rootroot00000000000000D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DH?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?DF?D?D?D?D?DF?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?D?D?D?D?D?D?DG?D?D?D?D?D?DH?D?DG?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?DG?D?DF?D?D?D?D?D?D?D?DG?D?D?D?DG?D?D?D?DF?D?D?D?D?D?DH?D?DG?D?D?DH?D?D?DG?D?DH?D?DF?D?D?DH?D?D?D?D?D?D?D?D?DH?D?D?D?D?DF?D?D?D?DH?D?DF?D?D?DG?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?DH?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?DF?D?DH?D?DF?D?D?D?DF?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?DG?D?DF?D?DG?D?D?D?D?D?D?DG?D?DG?D?D?DG?DF?D?D?DH?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?DF?D?D?D?DG?D?D?DG?DF?D?D?DF?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DH?D?D?DG?D?D?D?D?D?D?DF?D?D?D?D?DG?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?D?D?D?DG?D?DG?D?D?D?DG?D?DG?D?D?DG?D?D?D?D?D?D?D?DF?DG?D?D?DG?D?D?D?DF?D?D?D?D?D?DF?D?DG?D?D?D?D?D?D?DG?D?D?D?DF?D?D?D?D?D?D?D?D?D?DG?D?DG?D?D?D?DG?DF?D?D?D?D?D?D?D?D?DG?D?D?DG?D?DG?D?D?D?DG?D?D?D?DG?D?D?D?D?DF?D?D?D?D?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?D?D?D?D?DG?D?D?DG?D?D?D?DF?D?DH?D?DF?D?DG?DG?D?D?DG?DF?D?D?D?D?D?DF?D?D?D?D?DH?D?D?DG?D?D?D?DG?D?DH?D?DG?D?D?DG?D?D?D?D?D?DG?D?D?DH?D?D?D?DG?D?D?D?DG?D?D?DH?D?D?DG?DF?DG?D?D?D?DG?D?D?D?DH?D?D?DG?D?D?DG?D?DF?D?DH?D?DF?DG?D?D?D?DH?DF?D?D?DF?D?D?DG?D?D?D?D?DG?D?DF?D?D?D?DG?D?D?DG?D?D?DF?DG?D?D?DG?D?D?DH?D?DF?D?D?DF?D?D?DF?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?DH?D?D?D?D?D?D?DG?D?D?D?D?DF?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DH?D?D?D?D?D?D?DH?D?D?D?D?DH?D?D?D?DF?D?D?DH?D?D?D?D?D?D?DF?D?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?????????????????????????—?¹?¹?¹?¹???????????????????????????????¼??????????????????¹?¾???????????????????·????·???????????????????????????????????????????????????—?£?¤?¤?¹? ?ExyEzE|ExEzE|ExEzE|ExEzE|Exq?¼???????????????¼??????????????????¾?¹???????????????????·??»??·?????????????????????????????›??¾??›??¾??›??¾??›??¾??›??????—?¢?­?§?¹? ?E{EEEEEEEEEEEEs?¼??£?¤?¤?£?¤?¤?£?¤?¤?£?¤?¤??¼???? ?ExyEzE|ExExEzE|ExExEzE|Exq?¹?¾? ?ExyEzE|ExEzE|ExEzE|ExEzE|ExEzE|Exq?·????·???????????????????????????????????????????????????—?¢?¯?­?¹? ?E{EEEEEEEEEEEEu?¼??¢?­?§?¢?­?§?¢?­?§?¢?­?§??¼???? ?E{EEEEEEEEEEEs?¾?¹? ?E{EEEEEEEEEEEEEEEs?·????·?????????????????????????????¾??›??¾??›??¾??›??¾??›??¾??????—?¹?¹?¹?¹? ?E{EEq?????¹? ?E{EEs?¼???????????????¼???? ?EyEEEEEEEEEEEq?¾?¹? ?EyEEEEEEEEEEEEEEEq?·????·?????????????????????????????›??¾??›??¾??›??¾??›??¾??›??????—? ?ExyEzE|ExEEEExEzE|Exq?¾? ?E}EEu?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼???? ?E{EEEEEEEEEEEs?¹?¾? ?E{EEEEEq???????????????????? ?E}EEEEEEEEEEEu?¾?¹? ?E}EEEEE>u??? ?E}EEEEEu?·??»??·???????????????????????????????????????????????????—? ?E{EEEEEEEEEEu?¾? ?E}EEExEzE|ExExEzE|ExExExEzE|ExExEzE|Ex>q??? ?EyEEEEEEEEEEEq?¹?¾? ?E{EEEEEEzE|EzE|EEEEEEq?·????·???????????????????????????????????????????????????—? ?E{EEEEEEEEEEq?¹? ?E{EEEEEEEEEEEEEEEEEEEExEzE|ExEEEEEEEEEEEEs?¾?¹? ?E}EEEEEEEEEEEEEEEs?·????·???????????????????????????????????????????????????? ?EyEEEEEEEEEEq?¾? ?E}EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEu?¹?¾? ?EyEEEEEEEEEEEEEEEu?·??»??·???????????????????????????????????????????????? ?>>>:EÛ>EEEEEEEEEEs?¹? ?E{EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEq?¾?¹? ?E{EEEEEEEEEEEEEEEq?·????·???????????????????????????º?º?º?º?º?º?º?º?º?º?º?º?º?º?º?º?º?º?º?? ?>>>>;E>EEEEEEEEEEu?¾? ?E}EEEEEEEEEEEEEEEEEEE>>>>EÙEEEEEEEEEEq?¹? ?E{EEEEEEEEEEEEEEEEEEE>q??????????????????? ?EyEEEEE>u??? ?E}EEEEEu?·??»??·???????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>EyEEEEEEEEEEq?¾? ?E}EEEEEEEEEEEEEEEEEEEExEzE|ExExEzE|ExExEzE|ExExEzE|ExExEzE|ExEEEEEEEzE|EzE|EEEEEEq?·????·???????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>E{EEEEEEEEEEs?»? ?E{EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEs?·????·???????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>E}EEEEEEEEEEu?»? ?E}EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEu?·????·???????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>EyEEEEEEEEEEq?¾? ?E{EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEq?·????·??????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ?=?>>>>>:EÛ>EEEEEEEEEEq?¹? ?E}EEEEEEEEEEEEEEEEEEE>>?º?º? ?=?>>>>;E>EEEEEEEEEEs?¾? ?E{EEEEEEEEEEEEEEEEEEE>q?????????????????¹?¾? ?E{EEEEE>u??? ?E}EEEEEu?·????·?????????????????????????????????????¨?? ?>>>>??¨?? ?=?>>>EÙEEEEEEEEEEu?¹? ?E}EEEEEEEEEEEEEEEEEEEExEzE|ExExEzE|ExExEzE|ExExEzE|Exq?¾?¹? ?E}EEEEEEzE|EzE|EEEEEEq?·????·?????????????????????????????????????§? ?>>>>>?§??? ? ? ? ?=?EyEEEEEEEEEEq?¾? ?E{EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEs?¹?¾? ?EyEEEEEEEEEEEEEEEs?·??»??·?????????????????????????????????????²? ?>>>>>?²??????—? ?E}EEEEEEEEEEq?¹? ?E}EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEu?¾?¹? ?E{EEEEEEEEEEEEEEEu?·????·?????????????????????????????????????§? ?>>>>>?§??????—? ?E}EEEEEEEEEEs?¾? ?E{EEEEEEEEEEEEEEEEEEE>>>>?§??????—? ?E}EEEEEEEEEEu?¹? ?E}EE>>>>?²??????—? ?EyEEEEEEEEEEq?¾? ?E{EEs?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼???? ?E}EEEEEEEEEEEu?¹?¾? ?E}EEEEE>u??? ?E}EEEEEu?·????·?????????????????????????????????????§? ? ? ? ? ? ? ?§??????—? ? p? r? t?=p?EyEEq?????? ?EyEEq?¼??£?¤?¤?£?¤?¤?£?¤?¤?£?¤?¤??¼???? ?E{EEEEEEEEEEEs?¹?¾? ?E{EEEEEEEEEEEEEEEs?·??»??·???????????????????????????????????????????????????—?£?¤?¤?¹? ?E}EEExEzE|ExEzE|ExEEEs?¼??¢?­?§?¢?­?§?¢?­?§?¢?­?§??¼???? ?E}EEEEEEEEEEEu?¾?¹? ?E}EEEEEEEEEEEEEEEu?·????·?????????????????????????????›??¾??›??????????????????—?¢?­?§?¹? ?E}EEEEEEEEEEEEu?¼??¢?¯?­?¢?¯?­?¢?¯?­?¢?¯?­??¼???? ?EyEEEEEEEEEEEq?¹?¾? ?EyEEEEEEEEEEEEEEEq?·????·???????????????????????????????????????????????????—?¢?¯?­?¹? ?EyEEEEEEEEEEEEq?¼???????????????¼???? ? p? r? t? p? p? r? t? p? p? r? t? p? ?¾?¹? ? p? r? t? p? r? t? p? r? t? p? r? t? p? r? t? p? ?·??»??·???????????????????????????????????????????????????—?¹?¹?¹?¹? ? p? r? t? p? r? t? p? r? t? p? r? t? p? ?¼???????????????¼??????????????????¹?¾???????????????????·????·???????????????????????????;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?D?DG?D?D?D?D?D?D?DH?D?D?D?D?D?DH?D?D?D?D?D?D?DH?D?D?D?D?D?D?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?D?D?D?D?D?D?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DH?D?D?D?DF?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?D?D?D?D?DF?D?D?D?D?DG?D?D?D?D?D?DH?D?D?D?D?DG?D?D?DG?DH?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?DH?D?DF?D?D?DH?D?D?DF?D?D?DH?D?D?D?D?DF?D?D?D?D?D?D?D?DG?D?DH?D?D?DH?D?DG?D?D?D?D?DG?D?DH?D?DG?D?D?D?DG?D?DF?D?DH?D?D?D?DF?D?D?D?D?D?D?D?D?D?DG?D?D?D?DG?D?D?D?D?DG?D?D?D?DG?DG?D?DH?DF?D?D?DG?D?D?D?D?DH?DF?D?D?DG?D?D?D?D?D?D?D?D?DF?D?DG?D?D?D?D?DG?D?DG?D?DF?D?D?D?D?DG?D?D?D?D?DG?D?D?DH?DG?D?D?D?D?D?D?DG?D?D?D?D?D?DG?D?D?D?DG?DG?D?D?D?D?D?DG?DG?DG?D?D?D?D?D?DF?D?D?D?D?DG?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?DG?D?D?D?D?D?D?D?D?D?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?D?DG?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?DH?D?D?D?D?DF?D?D?D?D?DG?D?DG?D?D?D?D?D?D?D?D?D?DH?D?D?D?D?DH?D?DF?D?D?D?D?D?D?D?DG?D?D?D?D?D?DG?D?D?D?D?D?D?DG?D?D?DH?DF?D?D?DG?DF?D?DH?D?D?D?D?D?D?D?D?DH?D?DF?D?DH?D?D?D?D?D?DF?D?D?DH?DH?D?D?D?DH?D?D?D?DH?D?DF?D?DG?D?D?D?DH?D?D?D?D?D?D?D?D?DH?D?D?D?D?D?DF?D?D?DH?D?D?D?D?D?DG?DG?D?D?D?D?D?D?D?DH?D?D?D?D?D?D?D?D?DF?D?D?D?DH?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?DH?D?DF?D?D?D?D?D?DH?D?D?D?D?D?DH?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?DF?D?D?DH?D?D?DF?D?D?D?D?DH?D?D?D?D?D?DF?D?D?D?D?D?DF?D?D?D?D?D?DF?D?D?D?D?DH?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?DH?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?˜ Ž#CorsixTH-0.61/CorsixTH/Campaigns/Tufflook.map000066400000000000000000005001541321660673500210560ustar00rootroot00000000000000?????????????????????????????????????????????????????¾?¹??????? ?>>>>???????¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾??????? ?>>>>???????¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹??????? ?>>>>???????¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾?N?;?;?;?;?:? ?>>>>?N?;?;?;?;?:?¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹?M?D?D?DF?D?@? ?>>>>?M?DF?D?DG?D?@?¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾?M?D?D?D?D?@? ?>>>>?M?D?D?D?D?@?¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹?M?D?DG?D?DG?@? ?>>>>?M?D?D?DH?D?@?¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾?M?D?D?D?D?@? ?>>>>?M?DG?D?DF?D?@?¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹?M?D?DF?DH?D?@? ?>>>>?M?D?D?D?D?@?¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾?M?D?D?D?DF?@? ?>>>>?M?D?DF?D?DH?@?¾?¹????????????????????????????????????????????????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«?¾?¹?M?DF?D?D?D?@? ?>>>>?M?D?D?D?DF?@?¹?¾?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤?????????????????????????????????????????????????????????????§???????????????????????¹?¾?M?D?D?D?DG?@? ?>>>>?M?D?D?DG?D?@?¾?¹???????????????????????§?????????????????????????????????????????????????????????????§? ?Exy<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<q?¾?¹?M?D?DG?D?D?@? ?>>>>?M?D?DF?D?D?@?¹?¾? ?Exy<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<q?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¹?¾?M?D?D?DF?D?@? ?>>>>?M?DG?D?D?DF?@?¾?¹? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¾?¹?M?D?DH?D?D?@? ?>>>>?M?D?D?DH?D?@?¹?¾? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¹?¾?M?DF?D?D?D?@? ?>>>>?M?DF?D?D?D?@?¾?¹? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¾?¹?M?D?D?DG?D?@? ?>>>>?M?D?D?DG?D?@?¹?¾? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¹?¾?M?DG?D?D?D?@? ?>>>>?M?D?D?D?D?@?¾?¹? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¾?¹?M?D?D?DF?D?@? ?>>>>?M?DG?D?DF?D?@?¹?¾? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?¹?¾?M?D?D?D?D?@? ?>>>>?M?D?D?D?D?@?¾?¹? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¾?¹?M?D?DF?D?DG?@? ?>>>>?M?D?D?DG?D?@?¹?¾? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¹?¾?M?D?D?D?D?@? ?>>>>?M?D?DF?D?D?@?¾?¹? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¾?¹?M?DG?D?DH?DF?@? ?>>>>?M?DG?D?D?DG?@?¹?¾? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§??????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¹?¾?L?C?C?C?C?O? ?>>>>?L?C?C?C?C?O?¾?¹? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤???????????????????????§???????????????????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¾?¹?›?›?›?›?›?? ?>>>>>??›?›?›?›?›?¹?¾? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s????????????????????§???????????????????????§? ?Exy<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<q?? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¹?¾?›?›?›?›?? ?>>>>>>>??›?›?›?›?¾?¹? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?? ?Exy<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<q?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?¾?¹?›?›?›?? ?>>>>>>>>>??›?›?›?¹?¾? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?? ? p? r? t? p? r? t? r? t? p? r? t? r? t? p? r? t?=p?Ey<E<E<q?¹?¾?›?›?? ?>>>>>>>>>>>??›?›?¾?¹? ?Ey<E<E<>>>>>>>>>>>>??›?¹?¾? ?E{<E<E<s??????????????????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u??????????????????? ?E}<E<E<u?¹?¾?? ?>>>>>>>>>>>>>>>??¾?¹? ?E}<E<E<u??????????????????? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q??????½?·?½?·?½?·?½??????? ?E{<E<E<s?¾?¹? ?>>>>>>>>>>>>>>>>?¹?¾? ?E{<E<E<s???????½?·?½?·?½?·?½?????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q?????·?½?·?½?·?½?·??????? ?E}<E<E<u?¹?¾? ?>>>>>>>>>>>>>>>>?¾?¹? ?E}<E<E<u???????·?½?·?½?·?½?·????? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q?????½?·?½?·?½?·?½??????? ?Ey<E<E<>q??? ?>>><<<<<<<<<<>>>>??? ?Ey<E<E<>q???????½?·?½?·?½?·?½????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q????·?½?·?½?·?½?·??? ?Exy<Ez<E|<Ex<E<E<E<Ex<Ez<E|<Ex<:EÚ>;E>EØ>Ex<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<:EÚ>;E>EØ>Ex<Ez<E|<Ex<E<E<E<Ex<Ez<E|<Ex<q???·?½?·?½?·?½?·???? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q????????????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q????????????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q??????????? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q??????????? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q??????????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q??????????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E>E>E<E<E<E<E<E<E<E<E<E<E>E>E>E<E<E<E<E<E<E<E<E<E<E<q???»? ?E{<E<E<E<s?»??? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<;>Ô>p<r<t<r<t<r<t<r<t<p<:Ö>;>Ô>>>>>>>>>>>>>>>>???¼?¼?¼?¼????????»? ?E{<E<E<E<s?»???? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>>>>>>>>>>>>>>>???¼?¾?¹?¼????????? ?E}<E<E<E<u????? ?=p?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?????»? ?Ey<E<E<E<q?»????????¼?¾?¹?¼??? ?=?>>>>>>>>>>>>>><? ???¼?¹?¾?¼????????»? ?Ey<E<E<E<q?»????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?????? ?E{<E<E<E<s?????????¼?¹?¾?¼???›? ?=?>>>>>>>>>>>><? ?›???¼?¾?¹?¼????????? ?E{<E<E<E<s?????? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?????»? ?E}<E<E<E<u?»????????¼?¾?¹?¼???›?›? ?=?>>>>>>>>>><? ?›?›???¼?¹?¾?¼????????»? ?E}<E<E<E<u?»????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?????? ?E{<E<E<E<s?????????¼?¹?¾?¼???›?›?›? ?=?>>>>>>>><? ?›?›?›???¼?¾?¹?¼????????? ?E{<E<E<E<s?????? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?????»? ?E}<E<E<E<u?»????????¼?¾?¹?¼???›?›?›?›? ?=?>>>>>><? ?›?›?›?›???¼?¹?¾?¼????????»? ?E}<E<E<E<u?»????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?§???????????????????????§? ? p? r? t?=p?Ey<E<E<E<E<E<E<E<>>><? ?›?›?›?›?›???¼?¾?¹?¼????????? ?E{<E<E<E<s?????? ? p? r? t?=p?Ey<E<E<E<E<E<E<E<>>>?????????¼?¹?¾?¼????????»? ?E}<E<E<E<u?»????????? ? p?=p?Ey<E<E<E<q?????????¼?¹?¾?¼????????? ?>>>>?????????¼?¾?¹?¼????????? ?Ey<E<E<E<>q???????????? ?E{<E<E<E<s?£?¯?¯?¯?¯?¯?­?????????????????????????????§? ?E}<E<E<E<u??¸???????? ?Exy<Ex<E<E<E<E<Ex<Ex<>q???????¼?¾?¹?¼?¼?¼?¼?¼?¼?¼?¼?¼? ?>>>>?¼?¼?¼?¼?¼?¼?¼?¼?¼?¹?¾?¼??????? ?Exy<Ex<E<E<E<E<Ex<Ex<>q????????¸?? ?E}<E<E<E<u?§???????????????????????????????????§? ?E{<E<E<E<s??¸?????? ?Exy<Ex<E<E<E<E<E<E<E<E<Ex<Ex<>q?????¼?¹?¾?¼????????¼? ?>>>>?¼????????¼?¾?¹?¼????? ?Exy<Ex<E<E<E<E<E<E<E<E<Ex<Ex<>q??????¸?? ?E{<E<E<E<s?§???????????????????????????????????§? ?E}<E<E<E<u??¸?? ?Exy<Ez<E|<Ex<E<E<E<E<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ex<q?¼?¾?¹?¼? ?>>>>>?¼? ?>>>>?¼? ?>>>>>?¼?¹?¾?¼? ?Exy<Ez<E|<Ex<E<E<E<E<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ex<q??¸?? ?E}<E<E<E<u?§???????????????????????????????????§? ?E{<E<E<E<s??¸?? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¼?¹?¾?¼? ?>>>>>?¼? ?>>>>?¼? ?>>>>>?¼?¾?¹?¼? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s??¸?? ?E{<E<E<E<s?§???????????????????????????????????§? ?E}<E<E<E<u???? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¼?¾?¹?¼? ?>>>>>?¼? ?>>>>?¼? ?>>>>>?¼?¹?¾?¼? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u???? ?E}<E<E<E<u?§???????????????????????????????????§? ?E{<E<E<E<>q???? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¼?¹?¾?¼? ?>>>>>?¼? ?>>>>?¼? ?>>>>>?¼?¾?¹?¼? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q???? ?Ey<E<E<E<s?§???????????????????????????????????§? ?E}<E<E<E<Ex<Ez<Ez<Ez<Ex<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¼?¾?¹?¼? ?>>>>>?¼? ?>>>>?¼? ?>>>>>?¼?¹?¾?¼? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<E|<E|<E|<Ex<E<E<E<E<u?§???????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¼?¹?¾?¼? ?=?>>><? ?¼? ?>>>>?¼? ?=?>>><? ?¼?¾?¹?¼? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¼?¼?¼?¼?¼? ?>>>?¼?¼? ?>>>>?¼?¼? ?>>>?¼?¼?¼?¼?¼? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q?????? ?>>>>??? ?>>>>>??? ?>>>>?????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????????????????§? ?E}<E<E<E<:×>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:EÛ>E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;E>E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s???? ?E{<E<E<E<s?§???????????????????????????????????§? ?E}<E<E<E<u??¸?? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E>Õ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>EÙ>E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u??¸?? ?E}<E<E<E<u?§???????????????????????????????????§? ?E{<E<E<E<s??¸?? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<<q? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>><? ? ? ? ? ? ? ? ? ? ? ? ?=?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q??¸?? ?E{<E<E<E<s?§???????????????????????????????????§? ?E}<E<E<E<u??¸?? ? p? r? t?=p?Ey<E<E<E<E<E<E<E<E<E<E<E<>>>????????????? ? p? r? t?=p?Ey<E<E<E<E<E<E<E<E<E<E<E<>>>??·?½?·?½?·?½?·?½?·?½?????? ? p?=p?Ey<E<E<E<E<E<E<E<>>>??½?·?½?·?½?·?½?·?½?·???????? ? p?=p?Ey<E<E<E<q???????????»? ?E{<E<E<E<s?»???????????????????? ?>>>>????????????????????»? ?E{<E<E<E<s?»??????????? ?Ey<E<E<E<>q???º?º?º?º?§???????????????????????§????? ?Exy<Ex<E<E<E<E<Ex<Ex<>q?????????? ?E}<E<E<E<u?????????¹?¾?¹?¾?¹??›?›?›?›?›?? ?>>>>>??›?›?›?›?›??¹?¾?¹?¾?¹????????? ?E}<E<E<E<u?????????? ?Exy<Ex<E<E<E<E<Ex<Ex<>q?????§???????????????????????§? ?Exy<Ez<E|<Ex<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ex<q?????»? ?E{<E<E<E<s?»????????¾?¹?¾?¹?¾??›?›?›?›?? ?>>>>>>>??›?›?›?›??¾?¹?¾?¹?¾????????»? ?E{<E<E<E<s?»????? ?Exy<Ez<E|<Ex<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ex<q?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?????? ?E}<E<E<E<u?????????¹?¾?¹?¾?¹??›?›?›?? ?>>>>>>>>>??›?›?›??¹?¾?¹?¾?¹????????? ?E}<E<E<E<u?????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?????»? ?E{<E<E<E<s?»????????¾?¹?¾?¹?¾??›?›?? ?>>>>>>>>>>>??›?›??¾?¹?¾?¹?¾????????»? ?E{<E<E<E<s?»????? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?????? ?E}<E<E<E<u?????????¹?¾?¹?¾?¹??›?? ?>>>>>>>>>>>>>??›??¹?¾?¹?¾?¹????????? ?E}<E<E<E<u?????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?????»? ?Ey<E<E<E<q?»??????????????? ?>>>>>>>>>>>>>>>???????????????»? ?Ey<E<E<E<q?»????? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q?????? ?E{<E<E<E<s??????????????? ?>>>>>>>>>>>>>>>>??????????????? ?E{<E<E<E<s?????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q????»? ?E}<E<E<E<u?»?????????????? ?>>>>>>>>>>>>>>>>??????????????»? ?E}<E<E<E<u?»???? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q????? ?E{<E<E<E<s??????????????? ?>>><<<<<<<<<<>>>>??????????????? ?E{<E<E<E<s????? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q???»? ?E}<E<E<E<u?»??? ?Exy<Ez<E|<Ez<E|<Ex<Ez<E|<Ez<E|<Ex<:EÚ>;E>EØ>Ex<Ez<E|<Ez<E|<Ez<E|<Ez<E|<Ex<:EÚ>;E>EØ>Ex<Ez<E|<Ez<E|<Ex<Ez<E|<Ez<E|<Ex<q???»? ?E}<E<E<E<u?»??? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q???? ?E{<E<E<E<s???? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q???? ?E{<E<E<E<s???? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q??»? ?E}<E<E<E<u?»?? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<q??»? ?E}<E<E<E<u?»?? ?Exy<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q??? ?Ey<E<E<E<>q??? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>q??? ?Ey<E<E<E<>q??? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ex<E<E<E<E<Ex<Ez<E|<Ex<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<Ex<Ez<E|<Ex<E<E<E<E<Ex<Ez<E|<Ex<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E>E>E<E<E<E<E<E<E<E<E<E<E>E>E>E<E<E<E<E<E<E<E<E<E<E<q????·?½?·?½?·?½?·??? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<;>Ô>p<r<t<r<t<r<t<r<t<p<:Ö>;>Ô>>>>>>>>>>>>>>>>?¾?¹? ?E{<E<E<s????????·?½?·?½?·?½?·???? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<>>>>>>>>>>>>>>>?¹?¾? ?E}<E<E<u????????½?·?½?·?½?·?½???? ?=p?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s??????????????????? ?E{<E<E<s?¹?¾? ?=?>>>>>>>>>>>>>><? ?¾?¹? ?E{<E<E<s??????????????????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u??????????????????? ?E}<E<E<u?¾?¹?›? ?=?>>>>>>>>>>>><? ?›?¹?¾? ?E}<E<E<u??????????????????? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s??????????????????? ?Ey<E<E<q?¹?¾?›?›? ?=?>>>>>>>>>><? ?›?›?¾?¹? ?Ey<E<E<>q??????????????????? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§???????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?? ?Exy<Ez<E|<Ex<Ez<E|<Ez<E|<Ex<Ez<E|<Ez<E|<Ex<Ez<E|<Ex<E<E<E<q?¾?¹?›?›?›? ?=?>>>>>>>><? ?›?›?›?¹?¾? ?Ey<E<E<Ex<Ez<E|<Ex<Ez<E|<Ez<E|<Ex<Ez<E|<Ez<E|<Ex<Ez<E|<Ex<q?? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§???????????????????????§? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¹?¾?›?›?›?›? ?=?>>>>>><? ?›?›?›?›?¾?¹? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?§???????????????????????§? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ?? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¾?¹?›?›?›?›?›? ?=?>>>><? ?›?›?›?›?›?¹?¾? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ?§???????????????????????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¹?¾?N?;?;?;?;?:? ?>>>>?N?;?;?;?;?:?¾?¹? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­??????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¾?¹?M?DG?D?D?D?@? ?>>>>?M?D?D?D?DH?@?¹?¾? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¹?¾?M?DF?D?D?DG?@? ?>>>>?M?D?DG?D?D?@?¾?¹? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¾?¹?M?D?D?DF?D?@? ?>>>>?M?D?D?D?DF?@?¹?¾? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?¹?¾?M?D?DH?D?D?@? ?>>>>?M?D?D?D?D?@?¾?¹? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¾?¹?M?DG?D?D?DG?@? ?>>>>?M?D?DF?D?DG?@?¹?¾? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¹?¾?M?D?D?DF?D?@? ?>>>>?M?D?D?D?D?@?¾?¹? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¾?¹?M?D?D?D?D?@? ?>>>>?M?D?DG?D?D?@?¹?¾? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¹?¾?M?D?D?DG?D?@? ?>>>>?M?D?D?D?DF?@?¾?¹? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?¾?¹?M?DF?D?D?D?@? ?>>>>?M?D?DF?D?D?@?¹?¾? ?E{<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<s?§?????????????????????????????????????????????????????????????§? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?¹?¾?M?D?D?D?DF?@? ?>>>>?M?D?D?D?DG?@?¾?¹? ?E}<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<u?§?????????????????????????????????????????????????????????????§? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?¾?¹?M?D?DG?D?D?@? ?>>>>?M?D?DG?D?D?@?¹?¾? ?Ey<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<E<q?§?????????????????????????????????????????????????????????????§? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ?¹?¾?M?D?D?D?DG?@? ?>>>>?M?DF?D?D?DF?@?¾?¹? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ?§?????????????????????????????????????????????????????????????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«?¾?¹?M?DG?D?DF?D?@? ?>>>>?M?D?D?DG?D?@?¹?¾?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­????????????????????????????????????????????????????????????????????????????????????¹?¾?M?D?D?D?DH?@? ?>>>>?M?DG?D?D?D?@?¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹?M?DF?D?D?D?@? ?>>>>?M?D?D?D?DF?@?¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾?M?D?D?DG?DF?@? ?>>>>?M?D?DF?D?DH?@?¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹?M?D?D?D?D?@? ?>>>>?M?D?D?D?D?@?¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾?M?DG?D?DF?D?@? ?>>>>?M?DH?D?DG?D?@?¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹?M?D?DH?D?D?@? ?>>>>?M?D?DF?D?DG?@?¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾?L?C?C?C?C?O? ?>>>>?L?C?C?C?C?O?¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹??????? ?>>>>???????¹?¾???????????????????????????????????????????????????????????????????????????????????????????????????????????¹?¾??????? ?>>>>???????¾?¹???????????????????????????????????????????????????????????????????????????????????????????????????????????¾?¹??????? ?>>>>???????¹?¾??????????????????????????????????????????????????????                                                                                 @18CorsixTH-0.61/CorsixTH/Campaigns/Upper Pukington.map000066400000000000000000005001541321660673500223170ustar00rootroot00000000000000?????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶? ?>>>>?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>??????????????????????? ?>>>>>??????????????????????? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?>>>>>>?¼????????????????????? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ??¼????????????????????? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?:AÚy>;A>AØ:AÚ>;A>AØq?¼????????????????????? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?A}AAAAAu?¼????????????????????? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?A}AAAAAu?¼????????????????????? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼? ?A}AAAAAu?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼?????????????????? ?AyAAAAA>q??????????????????¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AxyAzA|AxAxAzA|AxAxAxAzA|AxAxAzA|AxAAAAAAAxAzA|AxAxAzA|AxAxAxAzA|AxAxAzA|Axq?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAA>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAs?·?·? ?A{AAAAAAAAAAAs?·?·? ?A{AAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAu?·?·? ?A}AAAAAAAAAAAu?·?·? ?A}AAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAAq?·?·? ?AyAAAAAAAAAAAq?·?·? ?AyAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAs?·?·? ?A{AAAAAAAAAAAs?·?·? ?A{AAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAu?·?·? ?A}AAAAAAAAAAAu?·?·? ?A}AAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAAq?·?·? ?AyAAAAAAAAAAAq?·?·? ?AyAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAs?·?·? ?A{AAAAAAAAAAAs?·?·? ?A{AAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAu?·?·? ?A}AAAAAAAAAAAu?·?·? ?A}AAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAA>q??? ?AyAAAAAAAAAAA>q??? ?AyAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAAxAzA|AxAAAAAAAAAAAAAxAzA|AxAAAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ? p? r? t? p? p? r? t? p? r? t? p? r? t? p? p? r? t?=p?AyAAA>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?? ?A{AAAs?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«? ?A}AAAu?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?A{AAAs?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾?????????????????????? ?A}AAAu??????????????????????¾? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?AxyAzA|AxAzA|AxAzA|AxAzA|AxAzA|AxAzA|Ax>q? ?AyAAA>q? ?AxyAzA|AxAzA|AxAzA|AxAzA|AxAzA|AxAzA|Axq?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAAxAxAAAAAxAxAAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAA>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAs?¹?¹?¹?¹?¹?¹? ?A{AAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAu?¹?¹?¹?¹?¹?¹? ?A}AAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAA>q??????? ?AyAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAAxAzA|AzA|AzA|AxAAAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>?? ?AyAAAAAAAAAAAAAAAAAAq?? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>p:Ö>;>Ôp;>Ôp>>>>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>>>>>>>>>?¾? ?A{AAAAAs?N?;?;?;?;?;?;?;?;?;?;?;?;?;?;?:? ?A{AAAAAs?¾? ?>>>>>>>>>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>?¾? ?A}AAAAAu?M?DF?D?D?DG?D?DH?DF?D?D?DG?D?DH?D?DF?@? ?A}AAAAAu?¾? ?>>>>>>>>>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>?¾? ?A{AAAAAs?M?DH?D?DG?D?DF?D?D?DG?DH?D?DF?D?DG?D?@? ?A{AAAAAs?¾? ?>>>>>>>>>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>>>>>>>>>?¾? ?A}AAAAAu?L?C?C?C?C?C?C?C?C?C?C?C?C?C?C?O? ?A}AAAAAu?¾? ?>>>>>>>>>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>?? ?AyAAAAA>q??????¹?¹?¹?¹?¹?¹?????? ?AyAAAAA>q?? ?>>>>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>><? ?=?Axy:AÚ>;A>AØAxAzA|AxAAAAAAAxA|A|A|Ax>q??????? ?AxyAzAzAzAxAAAAAAAxAzA|Ax:AÚ>;A>AØAx<q? ?=?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAAxAzA|AzA|AzA|AxAAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAA>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAs?¹?¹?¹?¹?¹?¹? ?A{AAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAu?¹?¹?¹?¹?¹?¹? ?A}AAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAA>q??????? ?AyAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAAxAzA|AzA|AzA|AxAAAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?A{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ?AyAAAAAAAAAAAAAAAAAA>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¾? ? p? r? t? p? r? t? p? r? t? p? r? t? p? r? t? p? r? t? p? ? ?A{AAAs? ? p? r? t? p? r? t? p? r? t? p? r? t? p? r? t? p? r? t? p? ?¾? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?A}AAAu?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾?¾? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«? ?A{>A>A>A>s?ª?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼? ?A}>A>A>A>u?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼??????????????????? ?AyAAA>q???????????????????¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AxyAzA|AxAxAzA|AxAzA|AxAzA|AxAxAzA|AxAAAAAxAzA|AxAxAzA|AxAzA|AxAzA|AxAxAzA|Axq?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAA>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAs?·?·? ?A{AAAAAAAAAAAs?·?·? ?A{AAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAu?·?·? ?A}AAAAAAAAAAAu?·?·? ?A}AAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAAq?·?·? ?AyAAAAAAAAAAAq?·?·? ?AyAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAs?·?·? ?A{AAAAAAAAAAAs?·?·? ?A{AAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAu?·?·? ?A}AAAAAAAAAAAu?·?·? ?A}AAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAAq?·?·? ?AyAAAAAAAAAAAq?·?·? ?AyAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAs?·?·? ?A{AAAAAAAAAAAs?·?·? ?A{AAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAu?·?·? ?A}AAAAAAAAAAAu?·?·? ?A}AAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAA>q??? ?AyAAAAAAAAAAA>q??? ?AyAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?A{AAAAAAAAAAxAzA|AxAAAAAAAAAAAAAxAzA|AxAAAAAAAAAAs?¼???? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼? ?A}AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ?AyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq?¼???? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>????¼? ? p? r? t? p? p? r? t? p? p? p? r? t? p? p? r? t?=p?AyAAAAA>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>????¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼? ?A{AAAAAs?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼?¼???? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?A{AAAAAs?¼????????????????????? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?A{AAAAAs?¼????????????????????? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?AyAAAAAq?¼????????????????????? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?:Ö>;>Ô>:Ö>;>Ô>?¼????????????????????? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?????????????????????¼? ?>>>>>>?¼????????????????????? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>>?????????????????????? ?>>>>>>>?????????????????????? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶? ?>>>>?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶?¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????????????????????????????»?? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>??»??????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>????????????????????????????????????????????????????? ?>>>1>*>(>2>9>>>>?¶?????????????????????¶? ?>>>>?¶?????????????????????¶? ?>>>1>*>(>2>9>>>>???????????????????????????.!CorsixTH-0.61/CorsixTH/Campaigns/Wishinwell.map000066400000000000000000005001541321660673500214120ustar00rootroot00000000000000?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤???????????????????????????????????????????????????§?????????????????????????????????????????????????????????????????????????????§???????????????????????????????????????????????????§??»??»??»??»??»??»??»??»??»??»??»??»??»??»??»??»??»??»?????»??»??»??»??»??»??»??»??»??»??»??»??»??»??»??»??»??»??§???????????????????????????????????????????????????§??¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾???????????????????????????????¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼??§???????????????????????????????????????????????????§??¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾???????????????????????????????¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼?¾?¼??§???????????????????????????????????????????????????§????????????????????????? ?xy<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<x<q?????????????????????????§???????????????????????????????????????????????????§??????????????????????º?º?? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<s??º?º??????????????????????§???????????????????????????????????????????????????§? ?xy<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<x<q??º?º?? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<u??º?º?? ?xy<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<x<q?§???????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s??º?º?? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<s??º?º?? ?{<<<<<<<<<<<<<<<<<<s?§???????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u??º?º?? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<u??º?º?? ?}<<<<<<<<<<<<<<<<<<u?§???????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<s??º?º?? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<s??º?º?? ?{<<<<<<<<<<<<<<<<<<s?§???????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<u????? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<u????? ?}<<<<<<<<<<<<<<<<<<u?§???????????????????????????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<>q????? ?y<<<<<<<<<<<<<<<<<<<<<<<<<<>q????? ?y<<<<<<<<<<<<<<<<<<s?§???????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<x<z<|<z<|<x<<<<<<<u??? ?}<<<<<<>u??? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<s?§???????????????????????????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<>>>>><<q?·????????????????????? ?}<<<<<<<<<u?§???????????????????????????????????????????????????§? ?{<<<<<<<<<s?????????????????????·? ? p?=p?:Ö>;>Ô>:Ö>;>Ô>>>>>>?·?·?·????????????????????? ?}<<<<<<<<<u?§???????????????????????????????????????????????????§? ?{<<<<<<<<<s???????????????????????·? ?>>>>>>?·??????????????????????? ?{<<<<<<<<<s?§???????????????????????????????????????????????????§? ?}<<<<<<<<<u???????????????????????·? ?=?>>>><? ?·??????????????????????? ?}<<<<<<<<<u?§???????????????????????????????????????????????????§? ?y<<<<<<<<<q???????????????????????·?·? ?>>>>?·?·??????????????????????? ?y<<<<<<<<<q?§???????????????????????????????????????????????????§? ? p? p?=p?y<<<>>>?·???????????????????????? ? p? p?=p?y<<<>>>?·???¼??¾??¼???????????????????? ?{<<<s????§???????????????????????????????????????????????????§??·?? ?}<<<u??½?½?½?½?½?½?½?½?½?½?½?½?½?½?½?½??????????·? ?>>>>?·??????????½?½?½?½?½?½?½?½?½?½?½?½?½?½?½?½?? ?}<<<u??·??§???????????????????????????????????????????????????§??·?? ?{<<<s??½?½?½?½?½?½?½?½?½?½?½?½?½?½?½?½???¾??¼??¾???·? ?>>>>?·???¾??¼??¾???½?½?½?½?½?½?½?½?½?½?½?½?½?½?½?½?? ?{<<<s??·??§?????????????????????????????????????????£?¯?¯?¯?¯?¯?¯?¯?¯?¯?­???? ?}<<<u???????????????????????????·? ?>>>>?·??????????????????????????? ?}<<<u????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤???????????????????????????????§?????????????? ?y<<<>q???????????·?·?·?·?·?·?·???¼??¾??¼???·? ?>>>>?·???¼??¾??¼???·?·?·?·?·?·?·??????????? ?y<<<>q??????????????§???????????????????????????????§??¾?¹?¾?? ?xy<z<|<z<|<z<|<x<<<<x<z<|<z<|<z<|<z<|<x<>q???????·??????????·? ?>>>>?·??????????·??????? ?xy<z<|<z<|<z<|<z<|<x<<<<x<z<|<z<|<z<|<x<q??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?{<<<<<<<<<<<<<<<<<<<<>:×>>>>>>?·???¾??¼??¾???·? ?>>>>?·???¾??¼??¾???·? ?>>>>>>:Û><<<<<<<<<<<<<<<<<<<<s??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?}<<<<<<<<<<<<<<<<<<<<>;>>>>>>?·??????????·? ?>>>>?·??????????·? ?>>>>>>;><<<<<<<<<<<<<<<<<<<<u??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?{<<<<<<<<<<<<<<<<<<<<>Õ>>>>>>?·???¼??¾??¼???·? ?>>>>?·???¼??¾??¼???·? ?>>>>>>Ù><<<<<<<<<<<<<<<<<<<<s??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?}<<<<<<<<<<<<<<<<<<<<<<q? ?=?>>>?·??????????·? ?>>>>?·??????????·? ?>>><? ?=?y<<<<<<<<<<<<<<<<<<<<<u??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?{<<<<<<<<<<<<<>>?·??????????·? ?>>>>?·??????????·? ?>>>?¸? ? p? r? t? r? t? r? t?=p?y<<<<<<<<<<<<<s??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?}<<<<<<<<<<<<<q????????¸?¸? ?>>>?·?·?·?·?·?·?·?·?·?·?·? ?>>>>?·?·?·?·?·?·?·?·?·?·?·? ?>>>?¸?¸?¸?¸?¸?¸?¸?¸?¸? ?y<<<<<<<<<<<<<u??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?{<<<<<<<<<<<<<s? ?>>>>>>??? ?>>>>???????????? ?>>>>>???????????? ?>>>?¸?N?;?;?;?;?;?:?¸? ?{<<<<<<<<<<<<<s??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?}<<<<<<<<<<<<<u? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¸?M?D?DH?DF?DG?DH?@?¸? ?}<<<<<<<<<<<<<u??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?y<<<<<<<<<<<<<q? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¸?M?DF?D?D?D?D?@?¸? ?y<<<<<<<<<<<<<q??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?{<<<<<<<<<<<<<s? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?¸?M?D?DG?D?DH?DF?@?¸? ?{<<<<<<<<<<<<<s??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?}<<<<<<<<<<<<<u? ?>>>>><? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ?=?>>>><? ? ? ? ? ? ? ? ? ? ? ?=?>>>?¸?L?C?C?C?C?C?O?¸? ?}<<<<<<<<<<<<<u??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?{<<<<<<<<<<<<<q? ? ? ? ? ? ? ?¸?¸? ?>>>?·?·?·?·?·?·?·?·?·?·?·? ?>>>>?·?·?·?·?·?·?·?·?·?·?·? ?>>>?¸?¸?¸?¸?¸?¸?¸?¸?¸? ?y<<<<<<<<<<<<<s??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?}<<<<<<<<<<<<<>q?????????¸? ?>>>?·??????????·? ?>>>>?·??????????·? ?>>>?¸????????? ?y<<<<<<<<<<<<<u??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?{<<<<<<<<<<<<<x<z<|<z<|<z<|<x<>q?? ?>>>?·??????????·? ?>>>>?·??????????·? ?>>>>?? ?xy<z<|<z<|<z<|<x<<<<<<<<<<<<<<s??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?}<<<<<<<<<<<<<<<<<<<<>:×>>>>>>?·???¹????¹???·? ?>>>>?·???¹????¹???·? ?>>>>>>:Û><<<<<<<<<<<<<<<<<<<<u??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?{<<<<<<<<<<<<<<<<<<<<>;>>>>>>?·??????????·? ?>>>>?·??????????·? ?>>>>>>;><<<<<<<<<<<<<<<<<<<<s??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?}<<<<<<<<<<<<<<<<<<<<>Õ>>>>>>?·?????¹?????·? ?>>>>?·?????¹?????·? ?>>>>>>Ù><<<<<<<<<<<<<<<<<<<<u??¹?¾?¹??§???????????????????????????????§??¾?¹?¾?? ?y<<<<<<<<<<<<<<<<<<<<<<q? ? ? ? ? ? ?·??????????·? ?>>>>?·??????????·? ? ? ? ? ? ?=?y<<<<<<<<<<<<<<<<<<<<<q??¾?¹?¾??§???????????????????????????????§??¹?¾?¹?? ?=p?y<<<<>>>?·???¹????¹???·?·?·?·?·?·?·? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t?=p?y<<<<>>>?·????????????????????????????????? ?{<<<<s???¾?¹?¾??§???????????????????????????????§??????? ?}<<<<u????????????????????????????¹?????·? ?>>>>?·?????¹???????????????????????????? ?}<<<<u???????§???????????????????????????????§??????? ?y<<<<>q?????????????????????????????????·? ?>>>>?·????????????????????????????????? ?y<<<<>q???????§???????????????????????????????§? ?xy<z<|<z<|<x<<<<<x<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<x<q????¹????¹???·? ?>>>>?·???¹????¹???? ?xy<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<z<|<x<<<<<x<z<|<z<|<x<q?§???????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<s???????????·? ?>>>>?·??????????? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<s?§???????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<u??????¹?????·? ?>>>>?·?????¹?????? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<u?§???????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<s???????????·? ?>>>>?·??????????? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<s?§???????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<u????¹????¹???·? ?>>>>?·???¹????¹???? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<u?§???????????????????????????????§? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<s???????????·? ?>>>>?·??????????? ?{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<s?§???????????????????????????????§? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<u??????¹?????·? ?>>>>?·?????¹?????? ?}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<u?§???????????????????????????????§? ?y<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<q???????????·? ?>>>>?·??????????? ?y<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<q?§???????????????????????????????§? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ???????????·? ?>>>>?·??????????? ? p? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? r? t? p? ?§???????????????????????????????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¤? ?>>>>?£?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?­????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§? ?>>>>?§?????????????????????????????????????????????????????????????ÀCorsixTH-0.61/CorsixTH/Campaigns/Writhe.map000066400000000000000000005001541321660673500205270ustar00rootroot00000000000000?????????????????º?¨? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾?¾? ?>>>?·?¹?·?¹?·?¸?¸?·?¹?·?¹?·? ?>>>?¾?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾?¾? ?>>>?¹?ª?¯?¯?¯?¯?¯?¯?¯?¯?«?¹? ?>>>?¾?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???¼??›??¼??›??¼????¾?¾? ?>>>?·?¹?·?¹?·?¸?¸?·?¹?·?¹?·? ?>>>?¾?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾?? ?>????????????? ?>??¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???›??¼??›??¼??›????¾? ?xy:Ú>;>Øxz|xz|xxz|xz|x:Ú>;>Øxq?¾????›??¼??›??¼??›??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾? ?{s?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???¼??›??¼??›??¼????¾? ?}u?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾? ?{s?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???›??¼??›??¼??›????¾? ?}u?¾????›??¼??›??¼??›??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾? ?{s?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???¼??›??¼??›??¼????¾? ?}u?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾? ?{s?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???›??¼??›??¼??›????¾? ?}u?¾????›??¼??›??¼??›??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾? ?{s?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???¼??›??¼??›??¼????¾? ?}u?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾? ?yq?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾? ? p? r? t? p? p? r? t?=p?y>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾?¾?¾?¾?¾?¾?¾?¾?¾? ?yq?¾?¾?¾?¾?¾?¾?¾?¾?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>???????????????????????? ?y>q???????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>:xÛ>z|xxz|xxz|xxz|xxz|xxz|xxz|xxz|xxz|xxz|x:×>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>;>;>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>ÙÕ>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>><? ? ? ? ? p? r? t?=p?y>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????? ?yq???????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??»?????? ? p? r? t?=p?y>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??¨?????????¾? ?{s?¾?????????¨?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??§??N?;?;?;?;?:??¾? ?}u?¾??N?;?;?;?;?:??§?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??²??M?DG?D?D?DF?@??¾? ?yq?¾??M?DF?D?DG?D?@??²?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??§??M?DF?D?D?DG?@??¾? ?{s?¾??M?D?D?D?DF?@??§?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??§??M?D?D?D?D?@??¾? ?}u?¾??M?D?DH?D?D?@??§?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??²??M?D?DH?DF?DH?@??¾? ?yq?¾??M?DG?DF?D?DH?@??²?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??§??L?C?C?C?C?O??¾? ?{s?¾??L?C?C?C?C?O??§?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??©?????????¾? ?}u?¾?????????©?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??»?????????? ?y>q??????????»?? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????? ?xyz|xxz|xq???????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>???????? ?y>q???????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>:xÛ>z|xxz|x:×>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>;>;>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>ÙÕ>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>><? ? ? ? ? p? r? t? p? p? r? t? p? p? r? t? p? p? r? t? p? p? r? t?=p?y>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾?¾?¾?¾?¾?¾?¾?¾?¾? ?yq?¾?¾?¾?¾?¾?¾?¾?¾?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>???????????????¾????????? ?y>q?????????¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?½?½?½?½?½?½?½?½???¾? ?xyz|xxz|xxz|xxz|xq?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½????????½???¾? ?{s?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½? ?>>>>>?½???¾? ?}u?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½? ?>>>>>?½???¾? ?{s?¾????›??¼??›??¼??›??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½? ?>>>>>?½???¾? ?}u?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½? ?>>>>>?½???¾? ?{s?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½? ?>>>>>?½???¾? ?}u?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½? ?=?>>><? ?½???¾? ?{s?¾????›??¼??›??¼??›??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?¹? ?>>>?¹?½???¾? ?}u?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?—? ?>>>?—?½???¾? ?{s?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?—? ?>>>?—?½???¾? ?}u?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?—? ?>>>?—?½???¾? ?yq?¾????›??¼??›??¼??›??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?—? ?>>>?—?½???¾? ?=p?:Ö>;>Ô>;>Ô>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?—? ?>>>?—?½???¾?¾? ?>>>?·?¹?·?¹?·?¸?¸?·?¹?·?¹?·? ?>>>?¾?¾????¼??›??¼??›??¼??? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?—? ?>>>?—?½???¾?¾? ?>>>?¹?ª?¯?¯?¯?¯?¯?¯?¯?¯?«?¹? ?>>>?¾?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>????½?¹? ?>>>?¹?½???¾?¾? ?>>>?·?¹?·?¹?·?¸?¸?·?¹?·?¹?·? ?>>>?¾?¾??????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>?????? ?>>>>??????? ?>>>>????????????? ?>>>>????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?²? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????º?©? ?>>1>*>(>2>9>>1>*>(>2>9>>>>??????????????????????????????????????????????????????? ?>>>?????????????????????????????????° ¬(CorsixTH-0.61/CorsixTH/Campaigns/coffalot.level000066400000000000000000000243321321660673500214130ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Coffalot" %MapFile = "Coffalot.map" %LevelBriefing = "In the cosy town of Coffalot, some very ill patients are in need of medical attention. Luckily, you have been recruited by the Ministry of Health to operate a chain of hospitals in the nation. You have the job of running this quaint clinic on their behalf. To win the level, cure 50 patients, have a bank balance of $25,000, treat 50% of your visitors and have a hospital worth $50,000. We wish you the best of luck!" %LevelDebriefing = "Good work! The Ministry of Health thinks that you have done extremely well in handling your first hospital, but now, a managerial position has opened up at a new location. Would you be interested in running Holby Hospital?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 30000 300 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 100 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 0 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 0 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 0 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 0 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 0 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 0 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 0 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 0 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 0 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 0 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 0 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 0 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 0 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 0 13 0 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 0 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 0 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 0 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 0 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 0 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 0 12 0 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 0 0 0 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 0 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 0 10 0 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 0 I_ELVIS #visuals[3] 0 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 0 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 0 I_BROKEN_BONES #visuals[8] 0 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 0 I_SPARE_RIBS #non_visuals[3] 0 I_KIDNEY_BEANS #non_visuals[4] 0 I_BROKEN_HEART #non_visuals[5] 0 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 0 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 0 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 0 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 0 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 0 I_GUT_ROT #non_visuals[18] 0 I_GOLF_STONES #non_visuals[19] 0 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 10 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 18 20 1 #quake_control[1].StartMonth.EndMonth.Severity 30 32 2 #quake_control[2].StartMonth.EndMonth.Severity 42 44 3 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 2 1 25000 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 3 1 50 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 4 1 50 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 6 1 50000 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 5 1 50 1 0 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN CorsixTH-0.61/CorsixTH/Campaigns/dethsdaw.level000066400000000000000000000320061321660673500214160ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General ------------------------- %Name = "Dethsdaw" %MapFile = "Dethsdaw.map" %LevelBriefing = "The end is almost in sight, but first, some of the residents of Dethsdaw are coming down with a wobbly kind of illness. As always, the pinnacle of medical technologies are available to you as top scientists have created a new invention called the Atom Analyser. To move on to the final level, we want 900 cures, 90% treated, $450,000 in the bank, $750,000 worth of hospital and a reputation of 900. The Ministry expects total perfection!" %LevelDebriefing = "Exemplary! On the eve of your final mission, you've received a note from the Ministry of Health saying that they're putting you in charge of the largest and most complex hospital of them all! A country mansion awaits you... after you've finished Royal Hospital." #town.StartCash.InterestRate 80000 1400 #gbv.StartRating 70 When a drug is researched, what effectiveness does it have #gbv.DrugImproveRate 5 #gbv.StartCost 100 #gbv.MinDrugCost 50 #gbv.LandCostPerTile 45 Cost to buy a single map square #gbv.RschImproveCostPercent 10 How many percent of the original research points that are required to improve the machine. #gbv.RschImproveIncrementPercent 10 How many additional percentage points are added to the above value for each upgrade. #gbv.MaxObjectStrength 20 Maximum strength value an object can be improved to (by research) #gbv.ResearchIncrement 2 Increase object strength by this amount when researching #gbv.AutopsyRschPercent 33 % of research completed for an autopsy #gbv.AutopsyRepHitPercent 25 % rep hit for discovered autopsy ---------------------- Diseases ------------------------- The following table contains all diagnoses and treatments that shows up in the drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 #expertise[2].Known.RschReqd 1 40000 #expertise[3].Known.RschReqd 1 40000 #expertise[4].Known.RschReqd 1 60000 #expertise[5].Known.RschReqd 1 60000 #expertise[6].Known.RschReqd 0 60000 #expertise[7].Known.RschReqd 1 40000 #expertise[8].Known.RschReqd 0 60000 #expertise[9].Known.RschReqd 1 20000 #expertise[10].Known.RschReqd 1 40000 #expertise[11].Known.RschReqd 1 40000 #expertise[12].Known.RschReqd 0 40000 #expertise[13].Known.RschReqd 1 40000 #expertise[14].Known.RschReqd 1 30000 #expertise[15].Known.RschReqd 1 40000 #expertise[16].Known.RschReqd 1 20000 #expertise[17].Known.RschReqd 1 60000 #expertise[18].Known.RschReqd 1 20000 #expertise[19].Known.RschReqd 1 20000 #expertise[20].Known.RschReqd 1 20000 #expertise[21].Known.RschReqd 1 20000 #expertise[22].Known.RschReqd 1 40000 #expertise[23].Known.RschReqd 1 60000 #expertise[24].Known.RschReqd 1 40000 #expertise[25].Known.RschReqd 1 40000 #expertise[26].Known.RschReqd 1 40000 #expertise[27].Known.RschReqd 1 40000 #expertise[28].Known.RschReqd 1 40000 #expertise[29].Known.RschReqd 1 20000 #expertise[30].Known.RschReqd 1 20000 #expertise[31].Known.RschReqd 1 40000 #expertise[32].Known.RschReqd 1 20000 #expertise[33].Known.RschReqd 1 20000 #expertise[34].Known.RschReqd 1 20000 #expertise[35].Known.RschReqd 1 20000 #expertise[36].Known.RschReqd 0 40000 #expertise[37].Known.RschReqd 0 50000 #expertise[38].Known.RschReqd 1 20000 #expertise[39].Known.RschReqd 0 30000 #expertise[40].Known.RschReqd 0 60000 #expertise[41].Known.RschReqd 1 20000 #expertise[42].Known.RschReqd 1 20000 #expertise[43].Known.RschReqd 1 20000 #expertise[44].Known.RschReqd 0 0 #expertise[45].Known.RschReqd 0 0 #expertise[46].Known.RschReqd 0 0 | Diseases available | Value property to be determined | Comment #visuals[0] 1 #visuals[1] 1 #visuals[2] 1 #visuals[3] 1 #visuals[4] 1 #visuals[5] 1 #visuals[6] 0 #visuals[7] 1 #visuals[8] 1 #visuals[9] 1 #visuals[10] 1 #visuals[11] 1 #visuals[12] 1 #visuals[13] 1 #non_visuals[0] 1 #non_visuals[1] 1 #non_visuals[2] 1 #non_visuals[3] 1 #non_visuals[4] 1 #non_visuals[5] 1 #non_visuals[6] 1 #non_visuals[7] 1 #non_visuals[8] 1 #non_visuals[9] 1 #non_visuals[10] 1 #non_visuals[11] 1 #non_visuals[12] 1 #non_visuals[13] 1 #non_visuals[14] 1 #non_visuals[15] 1 #non_visuals[16] 1 #non_visuals[17] 1 #non_visuals[18] 1 #non_visuals[19] 1 #visuals_available[0] 0 #visuals_available[1] 12 #visuals_available[2] 3 #visuals_available[3] 12 #visuals_available[4] 18 #visuals_available[5] 6 #visuals_available[6] 0 #visuals_available[7] 6 #visuals_available[8] 12 #visuals_available[9] 0 #visuals_available[10] 18 #visuals_available[11] 0 #visuals_available[12] 0 #visuals_available[13] 6 ---------------------- Objects ------------------------- | Objects available | Available from the start | Strength | Available for this level | Comment #objects[1].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[2].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[3].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[4].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[5].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[6].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[7].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[8].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[9].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 8 1 40000 #objects[10].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[11].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[12].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[13].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 13 1 20000 #objects[14].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 12 1 40000 #objects[15].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[16].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[17].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[18].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[19].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[20].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[21].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[22].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 9 1 60000 #objects[23].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 0 60000 #objects[24].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 11 1 20000 #objects[25].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 8 1 40000 #objects[26].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 40000 #objects[27].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 12 1 30000 #objects[28].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[29].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[30].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 12 1 20000 #objects[31].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[32].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[33].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[34].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[35].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[36].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[37].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 0 1 20000 #objects[38].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[39].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[40].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 1 1 30000 #objects[41].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 1 1 30000 #objects[42].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 50000 #objects[43].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[44].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[45].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[46].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 8 1 40000 #objects[47].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 1 40000 #objects[48].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[49].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[50].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[51].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[52].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[53].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[54].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 60000 #objects[55].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[56].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[57].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 57 1 0 #objects[58].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[59].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[60].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[61].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 ---------------------- Staff Configuration ------------------------- The minimum salary for each staff type #staff[0].MinSalary 60 #staff[1].MinSalary 75 #staff[2].MinSalary 30 #staff[3].MinSalary 30 Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 #gbv.SalaryAdd[4] 25 #gbv.SalaryAdd[5] 75 #gbv.SalaryAdd[6] 50 #gbv.SalaryAdd[7] 120 #gbv.SalaryAdd[8] 30 Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 0 8 8 3 2 10 10 10 10 3 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 3 7 5 5 3 10 10 10 10 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 5 5 8 7 4 10 10 10 10 3 #gbv.TrainingRate 45 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 25 Skeleton #gbv.TrainingValue[2] 30 Bookcase ----------------------- Emergency Control -------------------------- #emergency_control[0].Random 0 ----------------------- Quake Control -------------------------- #quake_control[0].StartMonth.EndMonth.Severity 10 12 6 #quake_control[1].StartMonth.EndMonth.Severity 22 24 7 #quake_control[2].StartMonth.EndMonth.Severity 34 36 8 #quake_control[3].StartMonth.EndMonth.Severity 46 48 7 #quake_control[4].StartMonth.EndMonth.Severity 58 60 6 #quake_control[5].StartMonth.EndMonth.Severity 70 72 6 ----------------------- Population Growth ---------------------------- #popn[0].Month.Change 0 4 #popn[1].Month.Change 1 1 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Cure count 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 900 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 450000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 90 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 900 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 750000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 450 1 500 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -40000 2 -20000 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 20 3 10 CorsixTH-0.61/CorsixTH/Campaigns/example.campaign000066400000000000000000000005441321660673500217200ustar00rootroot00000000000000name = "Example campaign" description = "This is an example campaign where you get the chance to play " .. "through some of the levels shipped with CorsixTH. Happy gaming!" levels = { "finisham.level", "avatar.level", "confined_v5.level", "st.peter's.level", } winning_text = "Congratulations! You have successfully completed all the levels." CorsixTH-0.61/CorsixTH/Campaigns/fourcorners.level000066400000000000000000000247451321660673500221750ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Four Corners" %MapFile = "Four Corners.map" %LevelBriefing = "New advances in technology has allowed for improved research - you now have access to the Computer. Also, there is a tragic new condition involving gleaming foreheads and a new piece of diagnosis equipment to research. Your hospital, too, is strange since it is made up of nine cubes, so you will have to deal with it as best you can. Cure 600 people, treat 75% of them, have $200,000 in the bank, have a hospital worth $300,000 and a reputation of 750 to win." %LevelDebriefing = "Spectacular! The Ministry of Health is in good standing with the public thanks to you, but they feel as though one hospital is not moving forward enough. There is a hair-raisingly good opportunity available to you at Hoppalong Hospital, will you take the offer?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 50000 1000 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 80 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 1 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 1 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 1 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 1 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 1 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 1 60000 BROKEN_WIND #expertise[18].Known.RschReqd 1 20000 SPARE_RIBS #expertise[19].Known.RschReqd 1 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 1 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 1 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 1 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 1 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 1 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 1 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 1 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 1 20000 GUT_ROT #expertise[34].Known.RschReqd 1 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 1 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 1 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 1 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 1 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 1 I_ELVIS #visuals[3] 1 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 1 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 1 I_BROKEN_BONES #visuals[8] 1 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 1 I_BROKEN_HEART #non_visuals[5] 1 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 1 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 1 I_GOLF_STONES #non_visuals[19] 1 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 30 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 10 12 4 #quake_control[1].StartMonth.EndMonth.Severity 22 24 5 #quake_control[2].StartMonth.EndMonth.Severity 34 36 6 #quake_control[3].StartMonth.EndMonth.Severity 46 48 5 #quake_control[4].StartMonth.EndMonth.Severity 58 60 4 #quake_control[5].StartMonth.EndMonth.Severity 70 72 4 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 750 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 200000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 75 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 600 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 300000 1 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 5 1 25 2 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN CorsixTH-0.61/CorsixTH/Campaigns/greyhamgardens.level000066400000000000000000000256411321660673500226220ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Greyham Gardens" %MapFile = "Greyham Gardens.map" %LevelBriefing = "Dr Greybags, a local scientist, has invested his time and effort in researching new machinery to combat the strange new afflictions in this rural area. He has kindly donated his expertise to you in the hope that you can cure more people. You now have access to the research room and training, among other rooms. Victory shall be yours if you cure 250 patients, amass $100,000, treat 60% of patients and have $125,000 worth of hospital value. We are confident you can do it!" %LevelDebriefing = "Brilliant! In an ever changing world of comical afflictions, the Ministry of Health deems you a valued employee. You now get to go to the beach... to run your next hospital. Will you fill the job vacancy going at Snuffit Sands Hospital?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 40000 600 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 95 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 0 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 1 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 1 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 1 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 1 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 0 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 1 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 0 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 0 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 0 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 1 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 0 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 0 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 0 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 0 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 0 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 0 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 0 I_ELVIS #visuals[3] 1 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 0 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 0 I_BROKEN_BONES #visuals[8] 0 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 0 I_BROKEN_HEART #non_visuals[5] 0 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 0 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 1 I_GOLF_STONES #non_visuals[19] 0 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 20 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 18 20 2 #quake_control[1].StartMonth.EndMonth.Severity 30 32 3 #quake_control[2].StartMonth.EndMonth.Severity 42 44 4 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 2 1 100000 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 3 1 60 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 4 1 250 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 6 1 125000 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 5 1 40 1 0 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN ----------------------- Emergency Control -------------------------- #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 6 3 5 16 60 1000 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 8 10 4 6 32 60 1500 #emergency_control[2].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 12 14 4 6 11 60 2000 #emergency_control[3].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 16 18 4 6 13 60 2000 #emergency_control[4].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 20 22 4 6 23 60 2000 #emergency_control[5].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 24 26 4 6 25 60 2000CorsixTH-0.61/CorsixTH/Campaigns/holby.level000066400000000000000000000251441321660673500207350ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Holby" %MapFile = "Holby.map" %LevelBriefing = "Your next mission is to treat the City of Holby. The odd diseases are travelling fast and it is up to you to cure 100 people, stockpile $50,000 in the bank, look after 50% of patients and have a hospital worth $75,000. You have been given a hospital which has the ability to be expanded in size, so use this to your advantage. Efficient planning and a well-run clinic will help in the event of an emergency. Make us proud at the Ministry!" %LevelDebriefing = "Great job! Now that you have your own office, the Ministry of Health is expecting bigger and better things. It's just a shame you're not getting any bigger and better cash bonuses to quench your lavish tastes. Will you be able to cope at Writhe Hospital?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 30000 400 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 100 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 0 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 0 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 0 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 1 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 1 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 0 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 0 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 0 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 0 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 0 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 0 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 0 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 0 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 0 13 0 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 0 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 0 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 0 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 0 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 0 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 0 12 0 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 0 0 0 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 0 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 0 10 0 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 0 I_ELVIS #visuals[3] 0 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 0 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 0 I_BROKEN_BONES #visuals[8] 0 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 0 I_SPARE_RIBS #non_visuals[3] 0 I_KIDNEY_BEANS #non_visuals[4] 0 I_BROKEN_HEART #non_visuals[5] 0 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 0 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 0 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 0 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 0 I_GOLF_STONES #non_visuals[19] 0 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 10 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 18 20 1 #quake_control[1].StartMonth.EndMonth.Severity 30 32 2 #quake_control[2].StartMonth.EndMonth.Severity 42 44 3 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 2 1 50000 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 3 1 50 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 4 1 100 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 6 1 75000 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 5 1 50 1 0 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN ----------------------- Emergency Control -------------------------- #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 6 8 3 5 17 60 500 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 12 14 4 6 31 60 1000 #emergency_control[2].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 18 20 4 6 16 60 1000CorsixTH-0.61/CorsixTH/Campaigns/hoppalong.level000066400000000000000000000317561321660673500216150ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General ------------------------- %Name = "Hoppalong" %MapFile = "Hoppalong.map" %LevelBriefing = "A strange disease which makes people hairy is running rampant around the city of Wishinwell. According to our top scientists, it can only be removed by electroconvulsive therapy. Aside from that, you may find yourself out of room and out of cash, so plan ahead carefully. To win the level, cure 700 patients, treat 80% of visitors, amass $250,000 in the kitty, have a hospital worth $400,000 and gain a reputation of 800." %LevelDebriefing = "Perfect! Though you've done well here, a recent emergency has led to the creation of a makeshift hospital and your new boss, Mr B. Hind, is desperate for someone to run it. Don't let the public down! Will you take the challenge at Tufflook Hospital?" #town.StartCash.InterestRate 60000 1100 #gbv.StartRating 75 When a drug is researched, what effectiveness does it have #gbv.DrugImproveRate 5 #gbv.StartCost 100 #gbv.MinDrugCost 50 #gbv.LandCostPerTile 35 Cost to buy a single map square #gbv.RschImproveCostPercent 10 How many percent of the original research points that are required to improve the machine. #gbv.RschImproveIncrementPercent 10 How many additional percentage points are added to the above value for each upgrade. #gbv.MaxObjectStrength 20 Maximum strength value an object can be improved to (by research) #gbv.ResearchIncrement 2 Increase object strength by this amount when researching #gbv.AutopsyRschPercent 33 % of research completed for an autopsy #gbv.AutopsyRepHitPercent 25 % rep hit for discovered autopsy ---------------------- Diseases ------------------------- The following table contains all diagnoses and treatments that shows up in the drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 #expertise[2].Known.RschReqd 1 40000 #expertise[3].Known.RschReqd 0 40000 #expertise[4].Known.RschReqd 1 60000 #expertise[5].Known.RschReqd 1 60000 #expertise[6].Known.RschReqd 0 60000 #expertise[7].Known.RschReqd 0 40000 #expertise[8].Known.RschReqd 0 60000 #expertise[9].Known.RschReqd 0 20000 #expertise[10].Known.RschReqd 0 40000 #expertise[11].Known.RschReqd 1 40000 #expertise[12].Known.RschReqd 0 40000 #expertise[13].Known.RschReqd 1 40000 #expertise[14].Known.RschReqd 0 30000 #expertise[15].Known.RschReqd 0 40000 #expertise[16].Known.RschReqd 1 20000 #expertise[17].Known.RschReqd 1 60000 #expertise[18].Known.RschReqd 1 20000 #expertise[19].Known.RschReqd 1 20000 #expertise[20].Known.RschReqd 1 20000 #expertise[21].Known.RschReqd 0 20000 #expertise[22].Known.RschReqd 1 40000 #expertise[23].Known.RschReqd 1 60000 #expertise[24].Known.RschReqd 1 40000 #expertise[25].Known.RschReqd 1 40000 #expertise[26].Known.RschReqd 1 40000 #expertise[27].Known.RschReqd 1 40000 #expertise[28].Known.RschReqd 1 40000 #expertise[29].Known.RschReqd 1 20000 #expertise[30].Known.RschReqd 0 20000 #expertise[31].Known.RschReqd 1 40000 #expertise[32].Known.RschReqd 1 20000 #expertise[33].Known.RschReqd 1 20000 #expertise[34].Known.RschReqd 1 20000 #expertise[35].Known.RschReqd 1 20000 #expertise[36].Known.RschReqd 0 40000 #expertise[37].Known.RschReqd 0 50000 #expertise[38].Known.RschReqd 1 20000 #expertise[39].Known.RschReqd 0 30000 #expertise[40].Known.RschReqd 0 60000 #expertise[41].Known.RschReqd 1 20000 #expertise[42].Known.RschReqd 1 20000 #expertise[43].Known.RschReqd 1 20000 #expertise[44].Known.RschReqd 0 0 #expertise[45].Known.RschReqd 0 0 #expertise[46].Known.RschReqd 0 0 | Diseases available | Value property to be determined | Comment #visuals[0] 1 #visuals[1] 1 #visuals[2] 1 #visuals[3] 1 #visuals[4] 0 #visuals[5] 1 #visuals[6] 0 #visuals[7] 1 #visuals[8] 1 #visuals[9] 1 #visuals[10] 0 #visuals[11] 1 #visuals[12] 1 #visuals[13] 1 #non_visuals[0] 1 #non_visuals[1] 1 #non_visuals[2] 1 #non_visuals[3] 1 #non_visuals[4] 1 #non_visuals[5] 1 #non_visuals[6] 1 #non_visuals[7] 1 #non_visuals[8] 1 #non_visuals[9] 1 #non_visuals[10] 1 #non_visuals[11] 1 #non_visuals[12] 1 #non_visuals[13] 1 #non_visuals[14] 1 #non_visuals[15] 1 #non_visuals[16] 1 #non_visuals[17] 1 #non_visuals[18] 1 #non_visuals[19] 1 #visuals_available[0] 0 #visuals_available[1] 12 #visuals_available[2] 3 #visuals_available[3] 12 #visuals_available[4] 18 #visuals_available[5] 6 #visuals_available[6] 0 #visuals_available[7] 6 #visuals_available[8] 12 #visuals_available[9] 0 #visuals_available[10] 18 #visuals_available[11] 0 #visuals_available[12] 0 #visuals_available[13] 6 ---------------------- Objects ------------------------- | Objects available | Available from the start | Strength | Available for this level | Comment #objects[1].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[2].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[3].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[4].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[5].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[6].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[7].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[8].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[9].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 8 1 40000 #objects[10].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[11].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[12].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[13].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 13 1 20000 #objects[14].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 12 1 40000 #objects[15].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[16].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[17].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[18].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[19].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[20].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[21].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[22].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 9 0 60000 #objects[23].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 0 60000 #objects[24].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 11 1 20000 #objects[25].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 8 1 40000 #objects[26].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 40000 #objects[27].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 12 1 30000 #objects[28].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[29].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[30].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 12 1 20000 #objects[31].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[32].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[33].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[34].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[35].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[36].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[37].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 0 1 20000 #objects[38].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[39].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[40].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 30000 #objects[41].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 0 30000 #objects[42].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 50000 #objects[43].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[44].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[45].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[46].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 8 1 40000 #objects[47].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 0 40000 #objects[48].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[49].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[50].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[51].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[52].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[53].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[54].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 0 60000 #objects[55].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[56].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[57].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 0 #objects[58].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[59].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[60].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[61].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 ---------------------- Staff Configuration ------------------------- The minimum salary for each staff type #staff[0].MinSalary 60 #staff[1].MinSalary 75 #staff[2].MinSalary 30 #staff[3].MinSalary 30 Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 #gbv.SalaryAdd[4] 30 #gbv.SalaryAdd[5] 50 #gbv.SalaryAdd[6] 40 #gbv.SalaryAdd[7] 100 #gbv.SalaryAdd[8] 20 Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 0 8 8 3 2 10 10 10 10 4 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 3 7 5 5 3 10 10 10 10 4 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 5 5 8 7 4 10 10 10 10 4 #gbv.TrainingRate 45 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 25 Skeleton #gbv.TrainingValue[2] 30 Bookcase ----------------------- Emergency Control -------------------------- #emergency_control[0].Random 0 ----------------------- Quake Control -------------------------- #quake_control[0].StartMonth.EndMonth.Severity 10 12 6 #quake_control[1].StartMonth.EndMonth.Severity 22 24 7 #quake_control[2].StartMonth.EndMonth.Severity 34 36 8 #quake_control[3].StartMonth.EndMonth.Severity 46 48 7 #quake_control[4].StartMonth.EndMonth.Severity 58 60 6 #quake_control[5].StartMonth.EndMonth.Severity 70 72 6 ----------------------- Population Growth ---------------------------- #popn[0].Month.Change 0 4 #popn[1].Month.Change 1 1 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Cure count 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 800 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 250000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 80 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 700 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 400000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -50000 2 -30000 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 25 3 10 CorsixTH-0.61/CorsixTH/Campaigns/royalhospital.level000066400000000000000000000321001321660673500225000ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General ------------------------- %Name = "Royal Hospital" %MapFile = "Royal Hospital.map" %LevelBriefing = "This is your final assignment. The Ministry has granted you $100,000 to set up and operate the largest and most demanding hospital in the world. This is going to be a huge task, but we are certain that you'll succeed. We expect nothing less than perfection - gain a reputation of 950, amass $500,000 in the bank, have a hospital worth $1,000,000, treat 90% of all patients and cure 1000 visitors to finish. Good luck!" #town.StartCash.InterestRate 100000 1500 #gbv.StartRating 70 When a drug is researched, what effectiveness does it have #gbv.DrugImproveRate 5 #gbv.StartCost 100 #gbv.MinDrugCost 50 #gbv.LandCostPerTile 50 Cost to buy a single map square #gbv.RschImproveCostPercent 10 How many percent of the original research points that are required to improve the machine. #gbv.RschImproveIncrementPercent 10 How many additional percentage points are added to the above value for each upgrade. #gbv.MaxObjectStrength 20 Maximum strength value an object can be improved to (by research) #gbv.ResearchIncrement 2 Increase object strength by this amount when researching #gbv.AutopsyRschPercent 33 % of research completed for an autopsy #gbv.AutopsyRepHitPercent 25 % rep hit for discovered autopsy ---------------------- Diseases ------------------------- The following table contains all diagnoses and treatments that shows up in the drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 #expertise[2].Known.RschReqd 1 40000 #expertise[3].Known.RschReqd 1 40000 #expertise[4].Known.RschReqd 1 60000 #expertise[5].Known.RschReqd 1 60000 #expertise[6].Known.RschReqd 1 60000 #expertise[7].Known.RschReqd 1 40000 #expertise[8].Known.RschReqd 1 60000 #expertise[9].Known.RschReqd 1 20000 #expertise[10].Known.RschReqd 1 40000 #expertise[11].Known.RschReqd 1 40000 #expertise[12].Known.RschReqd 1 40000 #expertise[13].Known.RschReqd 1 40000 #expertise[14].Known.RschReqd 1 30000 #expertise[15].Known.RschReqd 1 40000 #expertise[16].Known.RschReqd 1 20000 #expertise[17].Known.RschReqd 1 60000 #expertise[18].Known.RschReqd 1 20000 #expertise[19].Known.RschReqd 1 20000 #expertise[20].Known.RschReqd 1 20000 #expertise[21].Known.RschReqd 1 20000 #expertise[22].Known.RschReqd 1 40000 #expertise[23].Known.RschReqd 1 60000 #expertise[24].Known.RschReqd 1 40000 #expertise[25].Known.RschReqd 1 40000 #expertise[26].Known.RschReqd 1 40000 #expertise[27].Known.RschReqd 1 40000 #expertise[28].Known.RschReqd 1 40000 #expertise[29].Known.RschReqd 1 20000 #expertise[30].Known.RschReqd 1 20000 #expertise[31].Known.RschReqd 1 40000 #expertise[32].Known.RschReqd 1 20000 #expertise[33].Known.RschReqd 1 20000 #expertise[34].Known.RschReqd 1 20000 #expertise[35].Known.RschReqd 1 20000 #expertise[36].Known.RschReqd 0 40000 #expertise[37].Known.RschReqd 0 50000 #expertise[38].Known.RschReqd 1 20000 #expertise[39].Known.RschReqd 0 30000 #expertise[40].Known.RschReqd 0 60000 #expertise[41].Known.RschReqd 1 20000 #expertise[42].Known.RschReqd 1 20000 #expertise[43].Known.RschReqd 1 20000 #expertise[44].Known.RschReqd 0 0 #expertise[45].Known.RschReqd 0 0 #expertise[46].Known.RschReqd 0 0 | Diseases available | Value property to be determined | Comment #visuals[0] 1 #visuals[1] 1 #visuals[2] 1 #visuals[3] 1 #visuals[4] 1 #visuals[5] 1 #visuals[6] 1 #visuals[7] 1 #visuals[8] 1 #visuals[9] 1 #visuals[10] 1 #visuals[11] 1 #visuals[12] 1 #visuals[13] 1 #non_visuals[0] 1 #non_visuals[1] 1 #non_visuals[2] 1 #non_visuals[3] 1 #non_visuals[4] 1 #non_visuals[5] 1 #non_visuals[6] 1 #non_visuals[7] 1 #non_visuals[8] 1 #non_visuals[9] 1 #non_visuals[10] 1 #non_visuals[11] 1 #non_visuals[12] 1 #non_visuals[13] 1 #non_visuals[14] 1 #non_visuals[15] 1 #non_visuals[16] 1 #non_visuals[17] 1 #non_visuals[18] 1 #non_visuals[19] 1 #visuals_available[0] 0 #visuals_available[1] 12 #visuals_available[2] 3 #visuals_available[3] 12 #visuals_available[4] 18 #visuals_available[5] 6 #visuals_available[6] 0 #visuals_available[7] 6 #visuals_available[8] 12 #visuals_available[9] 0 #visuals_available[10] 18 #visuals_available[11] 0 #visuals_available[12] 0 #visuals_available[13] 6 ---------------------- Objects ------------------------- | Objects available | Available from the start | Strength | Available for this level | Comment #objects[1].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[2].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[3].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[4].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[5].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[6].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[7].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[8].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[9].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 8 1 40000 #objects[10].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[11].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[12].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[13].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 13 1 20000 #objects[14].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 12 1 40000 #objects[15].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[16].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[17].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[18].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[19].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[20].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[21].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[22].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 9 1 60000 #objects[23].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 1 60000 #objects[24].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 11 1 20000 #objects[25].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 8 1 40000 #objects[26].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 40000 #objects[27].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 12 1 30000 #objects[28].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[29].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[30].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 12 1 20000 #objects[31].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[32].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[33].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[34].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[35].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[36].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[37].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 0 1 20000 #objects[38].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[39].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[40].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 1 1 30000 #objects[41].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 1 1 30000 #objects[42].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 50000 #objects[43].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[44].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[45].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[46].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 8 1 40000 #objects[47].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 1 40000 #objects[48].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[49].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[50].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[51].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[52].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[53].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[54].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 60000 #objects[55].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[56].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[57].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 57 1 0 #objects[58].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[59].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[60].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[61].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 ---------------------- Staff Configuration ------------------------- The minimum salary for each staff type #staff[0].MinSalary 60 #staff[1].MinSalary 75 #staff[2].MinSalary 25 #staff[3].MinSalary 20 Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 #gbv.SalaryAdd[4] 30 #gbv.SalaryAdd[5] 75 #gbv.SalaryAdd[6] 50 #gbv.SalaryAdd[7] 100 #gbv.SalaryAdd[8] 25 Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 0 8 8 3 2 10 10 10 10 3 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 3 7 5 5 3 10 10 10 10 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 5 5 8 7 4 10 10 10 10 3 #gbv.TrainingRate 45 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 25 Skeleton #gbv.TrainingValue[2] 30 Bookcase ----------------------- Emergency Control -------------------------- #emergency_control[0].Random 0 ----------------------- Quake Control -------------------------- #quake_control[0].StartMonth.EndMonth.Severity 5 10 10 #quake_control[1].StartMonth.EndMonth.Severity 15 20 10 #quake_control[2].StartMonth.EndMonth.Severity 25 30 10 #quake_control[3].StartMonth.EndMonth.Severity 35 40 10 #quake_control[4].StartMonth.EndMonth.Severity 45 50 10 #quake_control[5].StartMonth.EndMonth.Severity 55 60 10 #quake_control[6].StartMonth.EndMonth.Severity 65 70 10 #quake_control[7].StartMonth.EndMonth.Severity 75 80 10 #quake_control[8].StartMonth.EndMonth.Severity 85 90 10 #quake_control[9].StartMonth.EndMonth.Severity 95 100 10 #quake_control[10].StartMonth.EndMonth.Severity 105 110 10 #quake_control[11].StartMonth.EndMonth.Severity 125 130 10 ----------------------- Population Growth ---------------------------- #popn[0].Month.Change 0 4 #popn[1].Month.Change 1 1 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Cure count 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 950 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 500000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 90 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 1000 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 1000000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 450 1 500 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -30000 2 -15000 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 20 3 10 CorsixTH-0.61/CorsixTH/Campaigns/snuffitsands.level000066400000000000000000000262571321660673500223350ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Snuffit Sands" %MapFile = "Snuffit Sands.map" %LevelBriefing = "You are now highly regarded in the hospital community for your excellent services and care, so you now have a reputation to maintain as well. Also, your surgeons may see a couple of new merry maladies to take care of in the operating theatre. Hopefully, you can accomplish these goals for the cheery land of Snuffit Sands. Cure 300 patients, treat 70% of patients, accumulate $125,000 in the bank, have a hospital worth $150,000 and maintain a reputation of 600." %LevelDebriefing = "Wonderful! Things have become hectic since you've been away. The Ministry has immediately assigned you to your next task in a dilapidated old clinic, and watch out for the tongues! Can you help the sick people of Upper Pukington Hospital?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 45000 700 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 90 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 1 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 1 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 1 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 1 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 1 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 1 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 1 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 0 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 0 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 0 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 1 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 0 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 0 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 0 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 0 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 0 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 0 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 1 I_ELVIS #visuals[3] 1 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 0 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 0 I_BROKEN_BONES #visuals[8] 0 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 1 I_BROKEN_HEART #non_visuals[5] 0 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 0 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 1 I_GOLF_STONES #non_visuals[19] 1 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 25 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 18 20 3 #quake_control[1].StartMonth.EndMonth.Severity 30 32 4 #quake_control[2].StartMonth.EndMonth.Severity 42 44 5 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 600 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 125000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 70 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 300 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 150000 1 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 5 1 30 2 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN ----------------------- Emergency Control -------------------------- #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 6 4 6 2 70 1000 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 8 10 5 8 16 70 2000 #emergency_control[2].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 12 14 5 8 22 70 2500 #emergency_control[3].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 16 18 5 8 13 70 2500 #emergency_control[4].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 20 22 5 8 23 70 2500 #emergency_control[5].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 24 26 5 8 29 70 2500 #emergency_control[6].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 28 30 5 8 17 70 2500 #emergency_control[7].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 32 34 5 8 11 70 2500 #emergency_control[8].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 36 38 5 8 4 70 2500CorsixTH-0.61/CorsixTH/Campaigns/tufflook.level000066400000000000000000000320201321660673500214400ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General ------------------------- %Name = "Tufflook" %MapFile = "Tufflook.map" %LevelBriefing = "Disaster! A nuclear meltdown at the local power station has rendered a curious new form of radiation sickness to develop within the city. The Ministry has set up this hospital, filled with all the latest equipment, to help you cure them of their ailments. To succeed, cure 800 and treat at least 80% of patients, gather $300,000 in your account, construct a hospital worth $500,000 and gain a sterling reputation of 850. We are confident you can do it!" %LevelDebriefing = "Marvellous! You've come a long way since your humble beginnings, but the Ministry thinks that it is time to bring you back to earth and back to work. There's a job with a jelly... sorry, jolly good salary for you at Dethsdaw Hospital. Will you go for it?" #town.StartCash.InterestRate 70000 1250 #gbv.StartRating 75 When a drug is researched, what effectiveness does it have #gbv.DrugImproveRate 5 #gbv.StartCost 100 #gbv.MinDrugCost 50 #gbv.LandCostPerTile 40 Cost to buy a single map square #gbv.RschImproveCostPercent 10 How many percent of the original research points that are required to improve the machine. #gbv.RschImproveIncrementPercent 10 How many additional percentage points are added to the above value for each upgrade. #gbv.MaxObjectStrength 20 Maximum strength value an object can be improved to (by research) #gbv.ResearchIncrement 2 Increase object strength by this amount when researching #gbv.AutopsyRschPercent 33 % of research completed for an autopsy #gbv.AutopsyRepHitPercent 25 % rep hit for discovered autopsy ---------------------- Diseases ------------------------- The following table contains all diagnoses and treatments that shows up in the drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 #expertise[2].Known.RschReqd 1 40000 #expertise[3].Known.RschReqd 0 40000 #expertise[4].Known.RschReqd 1 60000 #expertise[5].Known.RschReqd 1 60000 #expertise[6].Known.RschReqd 0 60000 #expertise[7].Known.RschReqd 1 40000 #expertise[8].Known.RschReqd 0 60000 #expertise[9].Known.RschReqd 0 20000 #expertise[10].Known.RschReqd 0 40000 #expertise[11].Known.RschReqd 1 40000 #expertise[12].Known.RschReqd 0 40000 #expertise[13].Known.RschReqd 1 40000 #expertise[14].Known.RschReqd 1 30000 #expertise[15].Known.RschReqd 0 40000 #expertise[16].Known.RschReqd 1 20000 #expertise[17].Known.RschReqd 1 60000 #expertise[18].Known.RschReqd 1 20000 #expertise[19].Known.RschReqd 1 20000 #expertise[20].Known.RschReqd 1 20000 #expertise[21].Known.RschReqd 1 20000 #expertise[22].Known.RschReqd 1 40000 #expertise[23].Known.RschReqd 1 60000 #expertise[24].Known.RschReqd 1 40000 #expertise[25].Known.RschReqd 1 40000 #expertise[26].Known.RschReqd 1 40000 #expertise[27].Known.RschReqd 1 40000 #expertise[28].Known.RschReqd 1 40000 #expertise[29].Known.RschReqd 1 20000 #expertise[30].Known.RschReqd 1 20000 #expertise[31].Known.RschReqd 1 40000 #expertise[32].Known.RschReqd 1 20000 #expertise[33].Known.RschReqd 1 20000 #expertise[34].Known.RschReqd 1 20000 #expertise[35].Known.RschReqd 1 20000 #expertise[36].Known.RschReqd 0 40000 #expertise[37].Known.RschReqd 0 50000 #expertise[38].Known.RschReqd 1 20000 #expertise[39].Known.RschReqd 0 30000 #expertise[40].Known.RschReqd 0 60000 #expertise[41].Known.RschReqd 1 20000 #expertise[42].Known.RschReqd 1 20000 #expertise[43].Known.RschReqd 1 20000 #expertise[44].Known.RschReqd 0 0 #expertise[45].Known.RschReqd 0 0 #expertise[46].Known.RschReqd 0 0 | Diseases available | Value property to be determined | Comment #visuals[0] 1 #visuals[1] 1 #visuals[2] 1 #visuals[3] 1 #visuals[4] 1 #visuals[5] 1 #visuals[6] 0 #visuals[7] 1 #visuals[8] 1 #visuals[9] 1 #visuals[10] 0 #visuals[11] 1 #visuals[12] 1 #visuals[13] 1 #non_visuals[0] 1 #non_visuals[1] 1 #non_visuals[2] 1 #non_visuals[3] 1 #non_visuals[4] 1 #non_visuals[5] 1 #non_visuals[6] 1 #non_visuals[7] 1 #non_visuals[8] 1 #non_visuals[9] 1 #non_visuals[10] 1 #non_visuals[11] 1 #non_visuals[12] 1 #non_visuals[13] 1 #non_visuals[14] 1 #non_visuals[15] 1 #non_visuals[16] 1 #non_visuals[17] 1 #non_visuals[18] 1 #non_visuals[19] 1 #visuals_available[0] 0 #visuals_available[1] 12 #visuals_available[2] 3 #visuals_available[3] 12 #visuals_available[4] 18 #visuals_available[5] 6 #visuals_available[6] 0 #visuals_available[7] 6 #visuals_available[8] 12 #visuals_available[9] 0 #visuals_available[10] 18 #visuals_available[11] 0 #visuals_available[12] 0 #visuals_available[13] 6 ---------------------- Objects ------------------------- | Objects available | Available from the start | Strength | Available for this level | Comment #objects[1].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[2].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[3].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[4].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[5].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[6].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[7].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[8].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[9].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 8 1 40000 #objects[10].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[11].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[12].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[13].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 13 1 20000 #objects[14].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 12 1 40000 #objects[15].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[16].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[17].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[18].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[19].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[20].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[21].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[22].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 9 1 60000 #objects[23].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 0 60000 #objects[24].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 11 1 20000 #objects[25].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 8 1 40000 #objects[26].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 40000 #objects[27].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 12 1 30000 #objects[28].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[29].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[30].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 12 1 20000 #objects[31].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[32].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[33].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[34].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[35].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[36].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[37].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 0 1 20000 #objects[38].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[39].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 20000 #objects[40].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 30000 #objects[41].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 0 30000 #objects[42].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 50000 #objects[43].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[44].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[45].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[46].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 8 1 40000 #objects[47].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 7 0 40000 #objects[48].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[49].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[50].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[51].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[52].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[53].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[54].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 60000 #objects[55].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[56].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[57].StartAvail.StartStrength.AvailableForLevel.RschReqd 0 10 1 0 #objects[58].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[59].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[60].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 #objects[61].StartAvail.StartStrength.AvailableForLevel.RschReqd 1 10 1 0 ---------------------- Staff Configuration ------------------------- The minimum salary for each staff type #staff[0].MinSalary 60 #staff[1].MinSalary 75 #staff[2].MinSalary 30 #staff[3].MinSalary 30 Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 #gbv.SalaryAdd[4] 30 #gbv.SalaryAdd[5] 50 #gbv.SalaryAdd[6] 40 #gbv.SalaryAdd[7] 100 #gbv.SalaryAdd[8] 20 Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 0 8 8 3 2 10 10 10 10 4 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 3 7 5 5 3 10 10 10 10 4 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 5 5 8 7 4 10 10 10 10 4 #gbv.TrainingRate 45 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 25 Skeleton #gbv.TrainingValue[2] 30 Bookcase ----------------------- Emergency Control -------------------------- #emergency_control[0].Random 0 ----------------------- Quake Control -------------------------- #quake_control[0].StartMonth.EndMonth.Severity 10 12 7 #quake_control[1].StartMonth.EndMonth.Severity 22 24 8 #quake_control[2].StartMonth.EndMonth.Severity 34 36 9 #quake_control[3].StartMonth.EndMonth.Severity 46 48 8 #quake_control[4].StartMonth.EndMonth.Severity 58 60 7 #quake_control[5].StartMonth.EndMonth.Severity 70 72 7 ----------------------- Population Growth ---------------------------- #popn[0].Month.Change 0 4 #popn[1].Month.Change 1 1 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Cure count 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 850 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 300000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 80 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 800 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 500000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -50000 2 -30000 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 25 3 10 CorsixTH-0.61/CorsixTH/Campaigns/upperpukington.level000066400000000000000000000247271321660673500227200ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Upper Pukington" %MapFile = "Upper Pukington.map" %LevelBriefing = "The Ministry of Health has recently acquired this old hospital in Upper Pukington, but has found it to be unsatisfactory in standards. There is a new tongue swelling disorder going around too, so watch out! Whilst you will not be dealing with emergencies, the layout is somewhat archaic, but we are sure you can reach the targets of 400 cures, 70% patient treatment, $150,000 in the kitty, $200,000 hospital value and a reputation of 650. Good luck!" %LevelDebriefing = "Excellent! The Ministry sees that your climbing the ranks in this career, but watch you don't fall and break a leg! You wouldn't want to ruin your new Italian shoes now... so could you assist the ill patients in need of treatment at Wishinwell Hospital?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 45000 800 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 90 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 1 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 1 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 1 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 1 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 1 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 1 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 1 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 1 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 0 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 1 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 1 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 1 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 1 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 0 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 0 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 0 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 1 I_ELVIS #visuals[3] 1 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 1 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 0 I_BROKEN_BONES #visuals[8] 0 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 1 I_BROKEN_HEART #non_visuals[5] 0 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 0 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 1 I_GOLF_STONES #non_visuals[19] 1 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 25 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 10 12 3 #quake_control[1].StartMonth.EndMonth.Severity 22 24 4 #quake_control[2].StartMonth.EndMonth.Severity 34 36 5 #quake_control[3].StartMonth.EndMonth.Severity 46 48 4 #quake_control[4].StartMonth.EndMonth.Severity 58 60 3 #quake_control[5].StartMonth.EndMonth.Severity 70 72 4 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 650 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 150000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 70 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 400 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 200000 1 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 5 1 30 2 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN CorsixTH-0.61/CorsixTH/Campaigns/wishinwell.level000066400000000000000000000265041321660673500220060ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Wishinwell" %MapFile = "Wishinwell.map" %LevelBriefing = "There are a couple of new conditions in the town of Wishinwell which require your attention, and you’ll be dealing with broken bones, so do not forget to prioritise research to cure rooms. You will also be dealing with a fair share of emergencies too. To win, gain a reputation of 700, treat 500 patients, cure 75% of your visitors, amass $175,000 in the bank and have a hospital worth $250,000. We at the Ministry wish you the best of luck!" %LevelDebriefing = "Outstanding! Now that you're on first name terms with your new boss, Mr I. Leggitt, you've been given a new project. He has noticed that you constantly stare at all four walls of your office, so do you think you can operate Four Corners Hospital?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 50000 900 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 85 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 1 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 1 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 1 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 1 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 1 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 1 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 1 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 1 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 1 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 1 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 1 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 1 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 1 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 1 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 1 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 1 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 1 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 1 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 1 I_ELVIS #visuals[3] 1 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 1 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 1 I_BROKEN_BONES #visuals[8] 1 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 1 I_BROKEN_HEART #non_visuals[5] 1 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 1 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 1 I_GOLF_STONES #non_visuals[19] 1 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 30 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 10 12 4 #quake_control[1].StartMonth.EndMonth.Severity 22 24 5 #quake_control[2].StartMonth.EndMonth.Severity 34 36 6 #quake_control[3].StartMonth.EndMonth.Severity 46 48 5 #quake_control[4].StartMonth.EndMonth.Severity 58 60 4 #quake_control[5].StartMonth.EndMonth.Severity 70 72 4 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 700 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 175000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 75 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 500 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 250000 1 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 5 1 25 2 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN ----------------------- Emergency Control -------------------------- #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 6 4 6 2 80 2000 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 8 10 5 8 16 80 2500 #emergency_control[2].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 12 14 5 8 22 80 3000 #emergency_control[3].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 16 18 5 8 13 80 3000 #emergency_control[4].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 20 22 5 8 23 80 3000 #emergency_control[5].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 24 26 5 8 29 80 3000 #emergency_control[6].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 28 30 5 8 17 80 3000 #emergency_control[7].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 32 34 5 8 11 80 3000 #emergency_control[8].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 36 38 5 8 4 80 3000CorsixTH-0.61/CorsixTH/Campaigns/writhe.level000066400000000000000000000256301321660673500211220ustar00rootroot00000000000000Copyright (c) 2013 Chris "ChrizmanTV" Wilkinson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Writhe" %MapFile = "Writhe.map" %LevelBriefing = "The Ministry has, so far, been impressed by your hospital running abilities and has issued you another challenge. Here at Writhe, the citizens of this small town are in desperate need of a new, efficient hospital. There are a couple of new ailments that will require the attention of your psychiatrists, so keep your wits scalpel sharp! To succeed, cure 200 patients, accrue $75,000, see to 60% of your customers and have a $100,000 hospital value. We are counting on you!" %LevelDebriefing = "Superb! People at the Ministry speak glowingly of you now that Mr L. Bow, your boss, has promoted you. Just don't overdo the top hat and tails, the public need you! There's a job at Greyham Gardens Hospital with your name on it, will you accept?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 40000 500 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 100 The following table contains all diagnoses and treatments that shows up inte drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 0 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 0 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 0 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 1 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 1 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 0 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 1 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 0 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 1 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 0 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 0 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 1 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 1 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 1 20000 HEAPED_PILES #expertise[33].Known.RschReqd 0 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 0 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 0 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 0 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 0 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 0 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 0 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 0 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 0 12 0 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 0 0 0 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 0 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 0 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 0 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 0 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 0 10 0 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 0 I_HAIRYITUS #visuals[2] 0 I_ELVIS #visuals[3] 0 I_INVIS #visuals[4] 0 I_RADIATION #visuals[5] 0 I_SLACK_TONGUE #visuals[6] 0 I_ALIEN #visuals[7] 0 I_BROKEN_BONES #visuals[8] 0 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 0 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 0 I_PREGNANT #visuals[13] 0 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 0 I_SPARE_RIBS #non_visuals[3] 0 I_KIDNEY_BEANS #non_visuals[4] 0 I_BROKEN_HEART #non_visuals[5] 0 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 0 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 0 I_GOLF_STONES #non_visuals[19] 0 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 30 Handyman #staff[3].MinSalary 30 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 50 Surgeon #gbv.SalaryAdd[6] 40 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 10 #gbv.TrainingRate 50 #gbv.AbilityThreshold[0] 80 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 50 Researcher #gbv.TrainingValue[0] 30 Projector #gbv.TrainingValue[1] 30 Skeleton #gbv.TrainingValue[2] 30 Bookcase #quake_control[0].StartMonth.EndMonth.Severity 18 20 2 #quake_control[1].StartMonth.EndMonth.Severity 30 32 3 #quake_control[2].StartMonth.EndMonth.Severity 42 44 4 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 2500 #awards_trophies.CansofCokeBonus 5000 #awards_trophies.Reputation 2500 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 2 1 75000 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 3 1 60 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 4 1 200 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 6 1 100000 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 5 1 50 1 0 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN ----------------------- Emergency Control -------------------------- #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 6 3 5 17 60 1000 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 10 12 4 6 22 60 1500 #emergency_control[2].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 16 18 4 6 24 60 2000 #emergency_control[3].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 22 24 4 6 26 60 2000 #emergency_control[4].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 28 30 4 6 31 60 2000 #emergency_control[5].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 34 36 4 6 33 60 2000CorsixTH-0.61/CorsixTH/CorsixTH.ico000066400000000000000000004057721321660673500170750ustar00rootroot00000000000000 ô|v€€ (j}@@ (B’…00 ¨%ºÇ  ¨bí ˆ þ h’‰PNG  IHDR\r¨fsRGB®ÎégAMA± üa pHYsttÞfx|‰IDATx^í½¸dU™5ÜoêDGºÉ APrFš$ˆ  HP M†&·d$ƒJf@QDeÐÑÓÌcý`PtæcÌ(I1ÁeFçÇŸý¯µÏÙ§Þ³kŸsö nÓý<û©ÛUuëÖ=·Þõ®w½iÚ´Õÿ^±W`½õÖ3g޲Ïk¬¡ÒÎìÙ³UÒ™5k–r™3g*×™1c†²ÏôéÓ•}&&&”}ÆÇÇ•}ÆÆÆ”<£££Ê>###Jžv»­ìÓjµ”<ÍfSÉÓh4”<õz]ÉS«Õ”<ø©ŠÏ x½Ÿà| çnœƒqÆ_±æÕ¿xþ+ª‚² @P(„, LA°Aåð)øœóVÇ+î æÎ«Ìq±0ÈËÊA?ÙÀ`IÌ‚@ðÚž|¨Ä›àx Îç@÷¾ ÷+œp^äÁý‰åE×ÁíÅ´ƒé‹igÞ¼y/úžùóç¿XõY°`Á‹¾§êŸÍ×óýÝù`À!ð¹> ÀçdÏ>>•@ Æ/_ó?øÁOvÝu×·@àëø;7ÀèOÁù«4~xíÿÝqÇ~þùç?ð…/|áÛ>úèðxH;)î›Ìsð‡œ,rð!™¬òàC?9l§Ê߯ÅëŒÛßn²É&“®³dɒɤ³ñÆO&6ÚhÒ>n¸á¤ë¼öµ¯´Ï«^õªIûl°Á“öYýõ'íMcRžu×]w2ïYgu&åY{íµ'í³ÖZkMš³xñâIyVÉpŸtød‰óìÎ;ïü£ .¸àÛ_üâ€çì¿øÅ_-`ùËŠ+hôR#øP.€Ñß`{ýåË—?„ÎóYïë1²(hÒãÏ<óŒªâ<ûì³jªž ~ÿ•YŒ*- K ß\!_žÔ¡Oʰhº0+U˜7M8 )Bü'¿õ­o}×fúЇ˜&” p’àp’4~ íóáß ¿ì~ªzž÷ó­”¡DQ0H‚$ÝǾµ>u>Y‚,`Ú0O­À0€ Àƒ?ÿùÏ_@pÆg|K€…Áפ‚.òvøƒ¼dþ(|ð#¤öiÆß+Ÿócy gU}nÆõ‹€/$±‚A([4”U0T ~áÂ!„ Ï|ÿûßÿ•Ûn»í£âg|* j€ÿ0ÆØëyÿsIÆ?l†ßKCžœœT½>½|ÿ0XI2MPLcUA•l  U04L ™ÀüÇüTÀËøzK'€ö*éØ<ð¯eŒ?OŒ_ÔÛWi4½6ð2¯_åï^k òƒAA‘ H qZ8Pe±P•L€á€ Ž8∇Åë: ~là„NøŽËø}¼~¯ ¿ c(cŒÃò½%¯C0è5øŠ„Eµ¬^‚a^ö HaÙü 0\´yÁIË€êuÅýU^_òÃÞsú>  ó­\¸paf±S$…yAQ ¨*KW¨Š ô«yˆÙ™"DŠóÁöŒÿ=&&Ûi§“Þ*þ0ä ßC h'­(© ð ‹jE: Wu`€ .¼ðÂï ¸Í€/™ Ï"YÆïK÷óxüœž,Êå÷Âàž{î9ÕïÓ‹ßÃqM»À€Á €À‡ ø„« T¥|éK_zÀÀW¿úUY!øÏ1€ñÿ_¬ðË2|>^µñ1üªŒ¥ßF^äçUõ»†×yåšk®©xl&àà ò0WXP%(dµgÕ  ǫ̀X1hà{ßûÞÏÄkþÈf¿'‰‘BøQ ÚðËBãÖï)q-"6 °Ù€OHÐoȪ,:P¤jQeÃ~üãÿNÀlø³¹ð¬íOã÷¥ûy<~‰zß)ü Á"Çuêi¬ )^¥ñçˆ]KÇôUã ^⬺ࢠԑ'©Ž]~¬:éÌ“Ôò³—«³Î;K{ѹêÂK/T—]q™ºêš«Ôu7\§n¼ñFuóÍ7«[n¹EÝzë­ê¶ÛnSwÜq‡ºóÎ;Õí·ßþ•ô¸4D·Kã5tŸÆŸ&– Š€ß^]   "3Pvºp!àÀˆ4˜j†?cíÅÏüÆ7¾¡êºš¶ z¼—àl„óZœWã¼ g}œuqÖÆY gÑ4U[³¦ê 몱 ¡šó›ª5#¯çâ¬ÑRµ1Œ¯n×Ô´ž[Ë9ºÏç‡ÓÐVãÉŒØEêK¥œFCzMcµK$´ HHP%èU¡Pš(Xe(øH€ªŒß×㥽½0@ùšÏ?ÿ¼*{ò¾GÔg¨öŒ¶jžÔR£×«öµ8Wã\sù¨j_†sé¨j]„Û 0êú¼ÕzÎ œ³ÚªuFK5OÃ9¯Ñ8¡©Çâó†spCÕö««ÚÞ8» v@l‹³%b3‚ÏÆ!ðtÖÃYg1ΜøžžoQÔ`a}¾«ûpUªÒƒU@.0è›YÆïë÷ÒðóTÚóËwßo¿¿ûï¿?ðâ猨ÑN$ž<6òžñà¼\Êsþý˜á¹Nœkñõ5cªmÎÕ’«p® NëJÉe8—„.l«Æ¹’8gáœ9¥©êÇDÞ –²}È(¶&(LÓ @Òšl (ô2ÈÃÒ@ MôÕòd*€,ÃçãYÆß+ïÂè«0Ö~¼ÆºS{ÚöÅØxs#à&qøs,pÁ‚òA‹@p@à}8—À,xÞ‹s)B ‚ÃÅí€9Ðû0I@P„ d‰ƒý ÒÒƒEëª`¹€ɲŒ?Ëðù¸ñç¥úe ¿ÆÚ‹ŸqåµWêä ¬ÀºyBxº€ÀÜgYƒ.VWƒH6‚K /0l˜àÜ´hˆ.‘° ] — PUzpP (kü>†Ïçä1þ"†ß cÄk®¸`…š¶Á45Џìæéá ä±™ÿï`&LÐáÙ€¾µ€€aŽ+,Ð!‚Ë h«i[š@ýè†ÖfΞõø "É ²v– ǫ̀*3à»{0oV 0¤¿½þ0ýþðUõñ“–Ÿ 0Òñ; þVÏ-Ž£ÁA€‚d00¬ Wh õ¡ Ø!A3 ¦½!ÈDP`VbÖìY™­ÇYl +CP%¨ ªÐÊ„…€³ã“ Ëø}¼¾¯ÇÏkø¾†”õ¼ª ¼ÌëÉ÷zøÑ‡«in„ß6#q $0X`… ¶f ƒH0Ä„BÉ´8×Ó^dÇޤqú̘* & öZÈS ”øH€²Æ?Œ†_Æ8ûý½û¿}ÿ×^ÿ¶öIb.0pˆ‡:4ˆe ºÃgH`Âd tºiÂÆñ„¤ì®&£"º@/™@žB¡^ƒ@Y\`Ð×ÃfüY^<éñ~m•?oé¾KUm³š»ÆŸtÀ ‚*0ЬÀ "}èbŽt¡IšZÆ €¹Hê4ÌÒz© Ø]„i PTT(à @ÕhN¼ iÆŸEù«öúE ¿J#äkm»Ë¶ª¶eMß1£ûÜ& 6 00·60`*Qפ°$]€ ¡ ÙŠ€ÙÓôò¬NÃUÒDAß!"¾U‚>‚`)è‡×÷óó~Õ†ú /¨^Ÿ¬÷¼ä KT}û†ÿ€<xŸùÚ ’€ÀÎ „5¬#èh !A˜*l] `‰2*YmXCu =¸«í8Kè§&ÆÒDÁ~†yÁÜ@&èµñ«á÷ÚÈ‹¼¾†u_½®jìÒTãwÎ¸Ž„;H‚ { "6 ª !Ö­K,[i¯é>€¤¶ãA‚@žB¡^ƒ€ï! Y‚ 7¡£9ñÜŽ[”öûP~ãÏãñ³ Ø€Ðìº;Uغ )ÀÚ®`,jNÓ)@ ®™ý<…BU€€ojзWÀ7¨ †Éøózü*ŒÏ~½öÚ+êx#:Ï?Wí±ÇêÃþ°ž“ðâ‹/:OÑ÷BðdËnó ß>$0„,¡‹ti¡ph€ÀQGЄ%Å‘. ‹ÚPýWÛ«ŽÆ Þ7ãÿÅ‹g‚€%ÈJ–ai Ðk=À7+PVÌí Íø« ü¾t?á54ûû\†|ß}÷uoo…qŽ7õý¼ŽØÍžIà`îw½÷'žxB¿vë°¶šøð¬Îù¾ÖÇ…;`x0CMð¾˜~Ð ãAX[ ë dHÀ”¡K A …Vd]øÀ¼oz|@pm0’âà0ƒ@/CPÊU”¿_†Ÿe˜|œƒR°bI5Zh{Ýðí0lc^ð!×}ñˆ}Íàÿɬ¾ûÝïù~þíßþM¿fóh $˜¯m@`iRDìh8Ù€qP2æ°ú¯~®ÑÛºÀEB‚¢ V2Ük= H(P†xžmŠ1  —Æïãõ{mø>o?çì³ÏŒ5ù#ïSã·ÎPm ܨïŒxô½O›Iõôw1ºàHÙ[MuÆgè ËE~žùž¯ýëªV¯©æ‰€»áñc"àÝá±! º€ÀN!Šj䀺€Zç¢-À#ûãºàz­µÖZ0LÀ‡ ¤-)±S„¬5 ­§ZO /+ó4ù‚@Y"µRÌb¹€1`ÆïkøEh~#üþ÷¿¯ØÖÙœÙTÍc‹‹üû€ yúà7‚á·×µ-Œ`nàiÿøÇ ƒÀg>óÕÁ0SGÔÄGBà­9.@è&V CK,ì°°¢0,Š2pÑ´5ñ»/C “…„üý{4tRm¦Ää° Þç ½Öd(P„PLêLJ òZäS¨+²bþ²Sv|Œ?¯á—1zù½o|ãõ¬¶ÊqÑ£@§ÚLn†½nB5ß-`>` œp6˜è yä‘Ü@p×]w©öt´Ûž9ª&>:["@p0°‚HD”@émÀ \  ƒ­sÀ0 q<€cÅÀ\ $Až û³'2|²¯ Î7ä|D\oÒýªAÀ7+à[ TDôeÞ€‹mŠI€4ãÏŠ÷³(¿áó9yŒ¿ Ãÿ¯ÿú/ÅsÏ=÷èT}Q]µß3>Eµ@\ƒÑˆX»}m4ÎÏÛ=¸m¶›šE`S«”b^_ÞºÞ÷²eËT{VáÆ¨šþÑYúLt !( (h@À{ ˆV:±K( ÀÔH`Xͳ›§`0ÈN€FM­½öÚ• ?òøœ:Ĩ;â°.ÍØŒ4‚éI¸ÖiÍCU辡@A°HZPUƒ6~_Ã/cô.cä}Ü”LEãmìBíùCE]>”xªñÆÈÆoAXðngÒ;qNÞÁ Öô×¼æ5 Û[ ßËC=¤?Äí9m5rþŒq.Ï=slP á“)8Äl èd B–“ZgY€ærÀ6(jÖ5”Æü4"íá[!°îÛ£qN ϸ^o‚À€1} à›Lk* ø„ ä~ÐmÐ+ã÷ñú½6ü$£—÷/_¾< þˆï9ÇÇøQ.ˆÕG¯˜P¥ASŒ¦¦{à`X&µ¾îᇮ˜æs½—Ï}îsz¬¶NÎǨíKÆÕôÁøÍ¹‡@ 1@ 3péLX„µºÙ( EØ<=š§á–ýȘ(4|Òimø(*¢[;ÌâD|ÐOÇírê©!œŒÛ]Â0€“ŒÁÀ(Ä’5L¥PÀw„XR(P5þ*(¿ññø>Fožóï|'_fã׎Åûåמ_äæñïKãõnŸ6¢j›àÃ:+€i{â fž³þ)Bqyùþ^ýêWGÂVsaS^> ] 2*hV`¥Èz†N]À‘!á@óä–žÐà-Âþ~Æ{R÷Æú‘ásw® ¿~ Ò¯gÃøÏÄ9pš2wã É6äi¯Xãö¢ PuV Ÿ,×Ðo7 5#Ä0(ãï…áç1zùÜwÜQ{žúŽuôÔ‡ah¿Eù#¯/Å8-Ø1;éúøÍ3Të FÖ <¨ ~mÌ ²;ì°ƒzøá‡5<øàƒ1U»¾f]^À½ðúæHF`ÙaY@ÕHm , ÒÍGRt@P'À]ÓæY½¨Äìoiˆi Ðeø˜ƒXÛ†jC5ÞƒÑã+^<ç,€ƒȲ¨ì„ô”6Èô ¯P$("VÁ¼ùÖ «ñçñøEÞ|•wMýת©6bï ¤FzIïÇŒßÄ߯ðCã×TŠ[zòÆ®0zf 8?oo,Üh´±ÁŒƒõgžyfÜx@«Ç®ŸÞ1| üš¯mnmPpÔl‘Ð ´Ð™fààðÞ…ßõ(j%…ÌùkO  ñ²Ÿ`?ôpçÀXdrnϼ'€4@]€Ú ™”â5)ÖeöîA 2+PD,’ôÕ :'“ hš/+Þ¯Òë5ü?þñÊLFÖ-¬ÍQ|èj7~-Òu _ÆïèÚ§#[À°€l!ãWú@à9ãfÀÈõùøúL¿×‹¸ÀÀ ް€l È"a0¬A ¾_0¨öVxç‰xnž×T¿î2|°†Ú›QôtÂ.ìh^„ø…€óñ· $°€iÔŒÈÛ}q(R#¡8föÑd(0UX€úW„§®7 €ÕYI0(ã÷õúE _½üú„0—Þ „?äö£4_í§ )¶¡ûõñÈÒSk¾†š¸u¦j½#Ìpçé+ho×¾>„ c€éÇ÷‰3_ë‚B ’€€à¥EÆ@² ˆ …½õ7¢ø‡J1¿müÆëÛT<2ÌÀ{Óp1¾o< øeÊ*vk Bš1"†ïŸ¡¦NÏÏïõÿ;¯“ ¶P¨Sм@l Ó~Ü­ Hà\¦þt‡‚„ïדŸ/¿ËðÙ8Ô\ƒç`QlÒãÅÃmC©,àì¸ÐÅÀ{@£–fG¨Ž3î/ ‹¤“J„ó 1@ÊðGY™½0þ,Êïãõó~–Ñ›Çùš[o½u°ùvWHyµ?1æ·„>§×—†¯=µðâÆ q;àhŸ°`S·þÒƒ ¿~†šçÙ'…‚רABˆƒ tÕ „©ÂèÎÈô  ΔØ8l&EŸª>R¢õêŠÍCãÖÚ1‹¤jL ÚãñsȪ¸¼”Œï‰LÄt&…ý{ÍJÀT7~_Ã7Ï»å–[ê¿NM\ŒfÑgUÑÉ4Ÿ4~å7Âh¹íñï2èOn ÃÄý¦Ôµ¶%Ègàq} ȯ#Fg p…Q-Ua(ˉmM@7…ÅPaOA€Ó…õ@PAý©Àwþ ÕÂܽœÔLWy±ˆ ŠÌ@ Œ2[ xÞK„Y-ÈìKX"ÜëP@ ‚ƒb{ì±?Zý¸á?ÃX«-C€$HËó—Á•åù}½~^ÃçóŸ~úiM›c þ‡„£·Âé;^Æ/龈Á3 ß°mÔø?‹ˆê[u­ˆow vˆ@ ¦¸jd‰qTJl1fB ˆqc#(”2uø1“ºFý >—›b¬X4IȬ‹x²Š&#À” ëì Š'â°€ëËwÅA†)¶,ÀÏ‚dR¨Rì% ȦQÃ@??Ëðí™$ ÈkøúÓŸ”9'žxbàý_áïÆøM‘¨î‹ ~ôüNã·¼~h1Ï-ß´¹½/ðô£ëÝ‹€Z€Ö1èü›YjFøxÄ,& YB¤ÄÂG-ɤ‚€¨ „éÁÑk'TmOaK(ÿÆðn¨ö{Çtû0G›5d$°€–Ù7ˆ…£‘@1²2€$ÅaÅ@Vc†%ÂY EÒ‚ý`ve   ˆ3 Ãdü>^?áK£7_ï{ßÓùw¶ï¶P±×÷Çh šM9–ñKÊOoÅúew¾Ë ÃçqÛùÁ%C©o}â„ò{ìïgˆ`±„@< õ46 ÅAÙr,‹…ÂðˆaIó¨ ê¯ÖÆ–`¹œËLã J£1ãf”X 0ëÇ©0fç‡u¾)Á“`ôlbuàn8()¦ –ƒfeçxªW`/p^(Jû³<–ñ—5|»ï¾»n[­/­#¿ ¢±G×õ‹ÒÞÈømµ?4ªHä³½¾ŒÛ¥Ç7ÆËÛèÌÁ×Á¿efðCÛÁA$dw 6rùý6“°DCè÷)Ó†>Â`l‰n¼ ï³8ù7¢ü,âØ:g´³ÀÔŒ‡ˆTÂ’ ƒ\b Y…, ÅUæó³@ W, lu`RF@²€ÜÀülY·•¦ö÷Ëø]_Þ÷éO:øð¢rläÒPø“õý–èåù‹¿mœ’î‡ÆnŒ¾sxó°&­»îºêu¯{Þ¸[_€àˆ6˜ŸC°^?A «ÑȃaŠ@xÊ™Ï@Çâj¾i<ÑáÓt€(€‘kPlš†D•`4\To —ø°™¼Ø. a€.³Ëñ7•…Alb&€¡K°1¸Å”û¡”I ±ëB #Š¿W'0 úiüUyý,Ãçãü½^õªW©Ö8>T‡…#·Am£”_,îëúMuŸ€XnßÐþîT],V7^[{ûާïxÜÿ·BŸñÃ7·Gu”îUoì ÏÅbÓåg{Sæ+{Dm¿Î­SL“ôÚeh1º§ø4|§ÑßûgâöY2‚ñb˜h€ºS%ÊpÛ' Àƒw±;$3 ’ Œß~m xöéÐÚ-=Ò‹tŸ¬ƒÆBÂFÝ)i’ÈÚÔÄz¤`Ö‘‹Uc],À* ê„VJÐ4Éš€´0€ °‹ƒÈ0ÍY6  ’´€*;‹°Ñr@^ê?ã/bøöÚóbPYEš*+í¢±'¤þºÌ64þTè2þÀà» ß2ö™ø¿f¼5'üÿôÌV­·#¶½î æ©-·ÜRèæ›o®æ/D'#&±·ÀLJ“.Ä-S‹ÍCÔÞ(Ú GÚjÍEkêñe dÒjØ‹ÀÜ¿.’’¥Â¢6 U Œh1 `ô†¤¥“ú\5®¢ # Ãg&Œ=S™¤er›5¨ä5þ´ijíÏòüYÆo{|ùÞhM‡'A+Öã/½¿îð³„?ÙÕ§Ë{Þ_æß#±/TèÃ8?ÍðcÆ. ?áëÑKQ(„`tæ¨Z²él²É&Ú`GFÑX3u[a˜)Z)Nÿ0XAøYPÄÙ­S°Û½,•¥gŸ>®€Bãg¬?}&}Úðú(”âÜ?-”Æ:Ã]….àÒ p¬8ŽÊe£á¦á6X€s…ÐHd`Æ…ÉŒ€ÑØ(DM¢fR»p•Z@RypRJ°ì¬Ð˜VÍ"äý{aüY†ÏÇÓŒÿÞ{ï „?¬¯Ö㽑Ö"èRþÃZ]Þ?,ö‰¨?»ú’èäù;Š~ÌøCo½‹ö§ÝG£n£L¸¾87X[m³Í6Úhu¦s) µ&àÙû¢`‡±¯žZÌâyÁä^þì5fëØžFϳþúë†Ïê>TÐ5ß À„²TBŠÔ`œQ×` èÒ"%˜8* eGâ°Iˆ×#œ&\F Æ” †Lša5`¨À0'È÷ÂøÓ ŸqÐÉ⵫ÆBÄÙ˜±/›}¢’ß°èGzÿ˜ç;ìì¸?Õó;(¿eü.Ïbö÷ŒÁ›×·i¨ÑÙ£êU¯~•ªõ›m¶™öælÅ¿C6'Æu1ÑÌÙ3õ}4tãéÉ(s±èéºÍcÐý´"GHÅ|Á¼,ÀŒgQPWaP0@dº¦¥…VrhÈRô {14$I åÁ’ä“Âo€À“ «‚ñ.¾øb-’5öð§G{‡óüMÕŸUòëŽý¨¬¨Gæ„_äùá À÷Kºÿ)Äÿ®c… ¨ ´ß ãÇGÆF´G'à­ùš`Àû¼·€…k.Ô%Çš`JÕ|Óï‚þaÏŒ†‰€˜®A‹DhyP0–&ætY°, ÊÓ`ÂEɲ®²d· Rœ½`>b`/*áØµh3­Éý€¢1íÏòú|üÿý¿ÿÇ:&f -»ìôŒ?WÙžkÏòsNê/?;æOñú‘·§±Ó¸C£×†¯cG<®Ÿ'ÀÀÁصô)àDcÒx²æ–FOo?cR‹-|(0Ž«±/Äe> ‰¥e©°2šÅDa3 H« ḦÞ3-ÈôDƒB3l-€ÃBØ´Ä‘l V% cÁ¢ (üØ!@UÞÆO8äCTk&„¿£ƒœu—÷§3…?a3L÷p‡÷ïêâ3•}AÜßåùCc5†3|zhðbFnØ€aâÿòyúuðÞFÞƒ½yîÆfŒéP€tŸÀOAí§Þ<4ÿƒ8"º £Ô k ±d¦mØÊȱâ]…A%ž' ‹‚¢iAv‡`‘t Áà8ÎJ}$Ü)ÐOÐË0 Ðøm¨ÊøÓÚyÓÔþ2žŸFoÎ7¿ùÍ fãªÆn‚ð' &þɆ;ïofîiåßQðkⱌŸa€ÃKwyn—1§Ñ ò{-aÝ@ýõu51cBÓ}Vj/a¯uÒˆšþ!Ö X݃¦>ÀŒ3MC, Ú=è#Šš¯l@Ú¸0×Ô`£ØžßüŸ=¤ÿlbÚ‡Óˆ=´€2³’¦W éß¯ÊølþúÍu/=WyëRUMÿmõ¿#þE ?VŸWÑO’÷· {’ŒßÐ|Ûx…ÑwÑÿ0ˆës£0€Ïú“ŒÍÓ±>˜ÀËüÀSÜÓ=¦bÐÑ@”Å¢…š˜Á!Ž”`V‘ èê ˆZ„EsPR=€=*ÌÓ)È1⬠,ÀfƒL& ¦ \i3€ª¼?_z}ó5çûë½~û¡D–µêf¡g×´ŸNËo’ø×Uñg”ÿ4ï/Šyb´_ÄøÁˆm@H-€è€Að.9ŽóÆÕ’%K4ú3<Ј2]i˜€(ÒEN²u8Üo C¤Œ”`°OG€èpf2Š‚Â¡¡™ÍAfHˆO=Á€,€ÃB8ÇËD õ‚ô;P9äÍ÷‰û‹z~—ñó¾¥K—ªörä[ƒ\À;ւû‡E-&÷/é¿-þúïôþÉq¿Ëøci>§gOÈ8€!2zW÷i˜;®é? …^®Í\4ÞÑ( ¤±=`TÌ”Ý‚Öø°®0@Ìtf(Ê¢ öØUEu=+†ðþÃq8͘£ÃÂvaÃ|†‡ú4qþ€¼a@RQÜ d§ À ¼ÕÆOøüç?¯'Áêâ¤Æ(vQ‰î*þ±Õ›þ˪?{¢£àG{V—à'=¿Tû½ýÜ®,€d Î¡Ì „¯Ko?¶Æ˜®¼\[Í=Pû;="uéb2# ¯==È3 èj6•©Uá¼@—àÚ Ö‡9Ûƒ% pjw6r6 ƒ Œ23R´I(o@/Ä@˜0À°™„YTåý“D¿^?àþçE@ŽwÒ#µf 4–5òWŽw–zš\¶Ký7£³\ ?Ñ$žPù·Tãá¥Qt;•çA÷ÝÆÞ º7iG¼örú,¦€†ž—kó!ˆ^®Aùžó°€.1Ъ ýÎl@¸HD c6@ö¸††:Ë‚EcÙdtî4ëò„@‡ÁðÙ*ÌF!¡HÈL ªŠô3 (æ IÕ~yãþ^? _®GÚ{cášÜ¡þÔ´£ãm….räWÿËŽ¿h–^¨þ;[|»é?ÀN÷Ũz•/ VئÛgŽª‘‰ 0…@/³†‹Fâ]ˆŽÉBa™³Y@LÎPk1Ù£„ÃBtQPW:0ÔìIA®z€®Y ÃB³* „ÍA:--€S˜úÑ!8p@ïÏã€Ayÿ´"Ÿ¤˜ßx}Ìÿï¸ãêš ÌÅæÍM ™ÌüK*þ‘-¿’þKñOô°T“Ó˜€ü)|!p°i´°p¤5Ú2e¿/³nâfĤˆ$ C3ßЈ±ñaÕhú:ºÂ±\4š` ‹M N( Nía¡i D“ôNž†á’¦ü†’6 çby ×Þ¿ÆOøóŸÿ¬«9” À¼µÍPözz ÄâÿP·~bô?‡÷ 2¦Ô{;;…î§fæªört¢ð‡g°€—Y0ãÅCˆ˜€Ô3¬Ù™¡èÊÈÒ`ל€¤t`XÐ%B lëîÀQÕfg`’È LE ³G€Zæ2]j¶ Mµ0¾Q)0+åÀИ€ª°•IP…÷Ï÷÷Âøiøò n¾ùf=ÞÊÌÜoÒV·£e66ïÏŒÒΦÿ‘ ñ/¦qÎËàý3Ý,¢;¥¨[~ú„ç—9wúݳuý@7 0©Á°8È' `:Ð!Þ¥#Ã'I!Pê¦=˜p¥%úVúd ÃY€˜¸^xAåý‹Ò~Ûøåÿö³Ÿ©]vÙ%ؾƒá õmÑ[®:½ìëúZ ð´òþã—ÞßÍ5&¬(˜.l!TC²ÞcíuÖÖ*7=ºB-À1P´ÓOÐÍA¬0“‚ÌŒ] „@WAXÍèE&`Œ~ôD°&€×KŽïEà3# hw`nÀ:q© “÷ï…ñV®\©™Á>ð`‡ÿðëA <ltVNý‰mõ‰5ýÄkþ»Ä?GZ.9öÅ?þñ§i60 1åŠ]uQ`WþßLú±@ÖþÓc{åûE  «– –RÌL%v˜„n†GÓ+º¯©çýÉ E\ pdºfZ:@T`ÒŽ²à$!™ÃLg Ç„yf[ƒ­T`œc?ËMô\þݱ1ˆ¢ ßœa² i³ O=õ”nöÒ$˜ Þ¿Jã7`À×¼îºëôEÖ 3°y2f8`S–þêq_HŒÿ eÏ4Öx ¿³† £“0-£Ð>lDO"X¸h¡ªízkêu±lÄÖLU « X6P$H¡ïªü ÆŒVñšÛt¢ãÉX[bNÞæ ~ÔØ ×ßá3ÀÓ%Òø‹@ž¼^ïŸDý{aü^zé%õ£ýHm¿ýöÁ‡ÃŒÛÆTœhÁ‡«úÏ•þ‹Šqâ ~wì/O»j äÏËÚo²dóÎÓkÐÒÀÒBðK­Hõ䥰 +Ü&ì]s“J‚“†pq¨n ¶‡²à”³äw‹°Ø'¬ aœ¿páB}\PUÀŸ#«,¸Êz€Ê ýÏ£ü'Qÿ~? _†×^{­$Ââ,j#ŸÎb˜X‰ŸC°«îßt†‘jP°Œ?û†¦ÄX–Û3$0@Ó>pDOù%Ì™?õh0pér÷ aQYp†Ø518å´àØ€¤T «'€ÍLYÊZŽ ?ÆÏ_®cY8Â!ÆÞÆðû,v@’PvLXaÈCÿ‡Éû§©ý®˜_z|ÛøåÿøÃªí¶Û.`s0egt²ˆ†!€£ÈÙøã«ÞÛ´\ü_‚ƒ¿kN˜ö[Fôœ?À¬9³TóÌ”•Š`ìA“ a@Ð(¶#»ƒì1aa@¦“zìÙ]µ€®á ŽZ€Ú±0|úàbPæöñ_ôôœ‡È#A — / ä»1È®”!€ †Ýû÷Êø ùË_t¦àšk®Ñê0ç Ö6B7Ý9h§¥qH`•ÿæÓ¼¿cÆ€/ #hïƒY÷­G€ÍƂϣÛq:@ðû¤—GíÁ®Š@Wg '/k°RöÖ Ô¦ °(¬H€úɈs÷€ñsæ ‡ œ“’y ø€€§Š`€B EÀD  PEìŸ÷÷Êøiøö!ØvÛmƒ*¹ Õ<°ÌÚOèþó€0þ·4„ÈÀ›ƒ"Ên§ X@{Olž1]3€ñ™˜ |âH~°2:˜ìZ€4(P T?cÎÞÃ÷š”ãx”ÆFÆŸòê>íÁ½]`@ &€²ô¿ªØ?OªÏ—ö»ŒßÜÇŸwÕUW)R®æ8º ±µ—c³]í¿2ëþ¶'°k®`JÐZÚÒÃ?õÈï TÔ¡2ÐÌŒ½ï¨/ ;˜X U©@³/ÀY äê d1Û‚óÀ¹-U{²6¨p4¹|þ}è­iøæïßk`V ä©ðMævбȆþçõþEcþ4Ãw±zT-. lTÈØ<.ÌuÚŽ“ÄÀ$ ¹sSÍZc–v¶0",ÄpÓ„ž€\Å@ ÌòPçt «0 t[°(¾Ã^Þ ÃÇþ‚Ú<˜Òc÷òH, O—ä€^=€²Þ?iƒOå¿jÏïcüÿû¿ÿ«äù÷ÿ÷ ^€qææ¨®£Bn yÙ£¾B€p`" p „ !@s‡¦Zcî8!‰Ýý€®¶à´rà,¸ ZÌñˆó±áI÷ï3$C~›†g6]°A ‹L!Ч¨ïЫÔ_UÞ?MéÏ2~ÛðùŠ+|` bôöè{'ºâjWJ.kŠ-î¹À5k k”¸ƒÆ¶ 5gÞÝ Ä¶`ÎjàÒЄ ±qþŽ0üÙá€I·á—€¼õÃT$3•@YúŸGüë¥÷/jü.ÃöÙgÕ9çœhÓQt‚ã·½õf›o§÷_äö}j÷i@{™¨müöÄ!ÀpAèÜysõ@¹hc5šëu:³Jh¦ (œ Ó˜(4ÏE93•}Îí sùÌ«ÓÛÕvŠ2€¼´@4·' I( f[Œ­ôòˆy¼RÜ_•ñ3ì¹òÊ+µšÞh~²Lø8¬ÏºÇ Œ·gU†¥ÀI©À”ž€Ø$€Líõ55oþ<½€]œ˜‰i@W V vŠÁ ]"`h.ÇrS®óæäÞ°fŸn¦Y#$éyŠòÖ0Mm@`¨{xžxâ LÌ䀲ñYÈû'@í—žŸ?ïöÛo×#Í᢭·c“½>K‚³¥QF~> ©ÐêXq¿÷'#`Ý;ƒr'`{¢­§¹,$OÐÕ왨í%ŒõM^Ÿq°¼ÍÃ!®’P6þ/Kÿózãçsî»ï>½iWÇš ꪹ7Fˆ]ƒašíÀ]Ã@rT¦5% M ð JÀtÀùˆUššƒŒ–àÂ…@ëj€ús\7X@­¨ý&þgª¯($¥!V Lbd]ue€ \ñYïŸÔæ›|Œÿ+_ùŠÚb‹-¢f úXšyñx§#ÐÔÈû–›Œ¸G|Éž€XJP¤}=¿ó´%ÓÔ‚… ôTàö̶åNG7`×h°²½² D%`û"Äÿo†ásy®Õ©ð#°dÖhyÀ0@Õ©ÀÒ0ŒñúŸ—ú“ö?ôÐCj·Ýv âÌ —lŽ (æX»" ªl ¶A kˆPâcÄLMË•é9É4Ì\"@ôD‚£="Ü·0¡$õˆ¹€¹ö  q¼ØŒÞçG0àï 0 H6P$ ƒ˜ §ÀGèbH ­t1€~@?é’÷ôÑGÕÁx|¬›öZÀ2Lºq~ÒBPk&€Ü¬¿–eºÆóó>_-@Îp”üú%pHk1\µg²t é€UTz. »ØYƒA›çµUm+°üôü~µ:a…3²A¿2ýJææÍò€KìEü_Vý÷õþÏ<óŒ:í´Óô$=l-|oà q¬Ê6óï»–‚ºv&’fz²¯† ¦^°‡ŸSop3P{¶#aîaì½ÅÚS zTšÝ höæ"{òÌ@!Pýpdb°Í—XÂY~¦Õ{« È*(”Íÿ»ÀEÿ‹ÆþÔ"®¿þz]9f{»!ο|<˜ ,&Gs]{=Ö‚ùLö{¨‹MدÅ÷OX¸æBÍZs[jìŠÒ追2\«ÿá”d¹.\/ µ…æ ¦„Èí@øZ¯ËÞ Ð<aÚ¶ðþÔvÂárOîø ÃÆÕ,ÿÍ[ 8j¦”«€O}êS:®=ŪÊÞ€8…1:fàn€ü ÐNt?YŒuÚ†´æµÔèUÈdÈÚ‚¬a]³:Š€dpl ˆs$XPè­÷¢¬™ý‡#MH6ÀÁžÌŒ@À˜—áÏ š‚úU äš 8t  _Dÿ|ðAµãŽ;?,äa_üø­3:ëÁ|¶™%!¦Iư9Äj–S{ÒZ„Ë€€Ëøõ.ÂÀœ7 9?HeÊ‘à™KBÃÍ@Ú—õ`Ï¡ ­‹9C\O‡vÃaÿxCàË=ø7' êowö² _@6`@ «¨”è«ø¦]`ÕñÿÓO?­ÞñŽwè1Pº„t¶ïßT£×LÄ„êõ`•B€¤ýE÷š)ÁB ,côI‚bç5±]‚Ùš‹h,À´ãëâÐ¥þKúŸ6ØlrÍÌJÞ†%!ö^3¸èXp,­‘ °dxç04Ãj=öl€^À ª i±)dÀ7þ7sým@2€/ùËún†{Öwª«öcÁÂJ¶¨b}•¦þ¬[7û ׊0©10©&À°QÅgvì9I Ùß³,Äü‚‚ùñqàFùÇ­k)ˆ¬4 ÿÇ@Ìðj6'Íàr¹!˜‹Ax.MØ p @€£ÀØ0dÂÔB˜Yd4üAÍèe5à+²Àx@wŠ5ÇàЭ×:…å»Óƒ±TÀ¯ï’PiüŽš€XJЪãwUf· û¥¥ç7«Èg †ƒ2øa§X_X˜8ƒºÄ¿Ðø»fjà±ÔÌLÚ (V„ÛóGÌj0{ã f7 X€^ rº4 Ó…,#~=ή!3µæõQ ´ ÂS𠊀ûZ³ uÿ:¤On&ÒrE•žOGïd@³" pí ´…ÚZ@B€¬¼K,õ͕곖‰Xõ ¸P@mÍš¿õ ö¨1½ç ÁûÛé?É ¸fdÅzðD0O ð}Ž  Èå .9 ÃZNØ-ÌP`EB.ÿDê×L¶‡„ö²¸—`Šr‹€S-p1Iÿ .Ó×@çÞÞˆyob/½ަ&¤„]Ù~à9\® ·Y@TdØN˜(äÑa4â4ª{Ì)f@†3 ¹ëžžŽ•€µÅN5v)ÿ¶÷7ñ?W³!…×^_˜ûÃa Î!$xlâC`Â-^¤ëjëÔÔÄmX|šÕù'¼¿Nÿ%Vÿ…×L €ñA ýO["âÿ®a f)ˆ DkÁÀȸñƒÆ/€[ ˜àÜ´YÈ(riYBÃV3€U€ì»ß¾ª¾êÿù£þa€K S‚z&é°¬èÍÏîy]%¸ £½µB†]ß#ï73¬YFåŸ~׬°çCÀí!¸Ú~ÍTQùåþefDVÿIõßžNøF+Ád+þ751Aÿkõßm°ƒÖàíñ8oÂáîá(ñ-qf UŒ¹\äa@ êe¡SR˜Š €ðÏÿüϺ ¾µ€PÐZ@Gèù65’ØZ€I &‰va™p@¬yÈf6 Ý€Vìo Ÿ~'1\ ®`ÝäL;íçãý³ÔIÿÁôZðØ Ðñ¿€KD ÐÎkÁÀWƒÞ‰ÃÂ!†Ô8yhQ˜…¡« dƒ*ò͸ª)¾æµ¯ XÀyd¡hÄ@~P]5, è´˜@,# 7[LÀî´zý»ÀÀf Öÿ£œ¾cbÐ`ý¸ŠTwâ¶pµ™Ùpl­ÿb¡©ûïòþÎÚúŸØíª¼:Üt÷Ê€  ÌHÿɤ÷·¿æªðý:†oÖ…M`5L ±»@àž{îÑ4/ƾ,Þ.* 2,À4ƸÁHÈ9L4mˆmä®ÿ˹æñ‰;0z=>k½u5èÀ6~Ñ`[ù7•]Þ?ÔP ¥D3Ͳ­4ú/×¥UÐ@8—d,e P €i`cå ˜6DÃg°¦8A¬¿Áúª¾&YÀˆ`¦& ƒ˜Œ€© 0%Â&-˜T!+ê,µ'ýÚ´]NN3üÈàî¥"Ó¤ýzbκëèp ‚ŽËûG…?aÛ¯lý5±´¨ãýYY©ë+˜b-Í¢ÿ¦p\p%8ORüŸRØ%æf.•„SQxÅTú”6ÀA wß}wÀ– - ‹„a@T`Á(HÒl„’€ T |øú4v k­!ë¬H0"fõwôý{xÿ$õ?•þßј'þ7)@f\ ‹ 0h`:_Q`¯sõôC`m€o?@V1¾æz믰̘ïhôXô\–Œòâ’Âcl±agœxXS€3é¿UÕ½ÞÏÆq’1ŸSríh]×Þ_¼ç(î—ÔßåýÁtÙ´HýEÞ?ÿÄ&`aéb,[ý÷ ÿîü¿güŸ% XÃgÏ@Hÿ™¿¯: Ȭ‚9½Ìfƒ€^”§Mºë®»€á¬ ˆ*m- ª ›„d£50DWÒûÛ¢ è*fªPì+óœ`àØl—òê°Á<†Ƙjl‰ Æ ‘G-„™œ«;"g5òC0ýèF4‰vßXÎßYõæý °~BÄþ©¹ÿ°û/^ý'èZú¯+ÿ @§ÿì °8­ôŸíýOÆãœ!¶ Ó€ª*ZÝü§?)ÓܯyIB ò ÆÁlˆi½G²€xypRZÐ 8Z†SkºBn0ˆvhàæ>×cã·ÎTÍ}°ýÃ?ÇQÙ¶Šèy\ ¶ZÛ‚¹(¤ÙBÕÜkp-NÇ‚“¤q_]Ÿ§÷7¥¿Æû'­ÏRÿå2ЬüR`šÈ¢ ö„ÞŸ%ÁS ¦Ä@< A}C€¼:AàŽ;îfÊ¿±ÞÅô[Ó$äì4BÖÌ€.HHÊ|{hVƒÔ5áAé½úÖu526¢6Üh#õ¦ýߪ:ôý6°ãN;«Ë®¼Z]zùꇮ§7çƒRcj×°Søc bóO¶÷é¿öþáø/Sûò_Ýý— þÇè¿]ÿ/€L O¦ÿØ?gîñZ•†æô’ õH0 ¦¡ R ¡"®YÀ9 ,@¶ Ëy©3†!“´§ »B‚®t¡èÉtƒP­Oý?úþÑöË=…££j«­·QûüvuÐ;Ç×[ëwVnP`-ÀåW]£n½ãNuÛßÜ¥ÞsÞú¾Æ:èš¼z">ìSüÐC?EÙ¯5ö»£ü‹Æ_ïoæÿ%©ÿ’þËô_R O€Â»9% cÅM@^è×Tà¥08„À´0€,àÖ[o XÀ®‚ÄZ…AÐÝ.Ît LÀ+;àd¢9' %0¸¿æþ.ýxš¼ù­«]Þ¸›ödœ‰À¾÷X¤É9oê=ïÿàMêö;?¤®{ÿê¨cŽUsÌUõ}z£uDªõSš=QK‰Õý;¼?…¿,ñOÿø”ÿ²øÇÐßüÿ‘0üµãŸñþÃ=ß €‹Ý PVÌ ÈNè9+`i‚ ˜djÞCo¨Ç‡Ù C.E6©¸ë¯íÑbrO"d0ò1õ›oS—\~¥:ñÔ3ÔN»ìª×im»ÝvêÚ>¨.¼ô}ê]G£fÏì  ½ð»±'B§ü¤ê/~˜>ÕVLÓ=õGÆþÒûûŠIêúÿvÿôØ'ÂJ¿~Í  ëJ®r»Ëêeë’Â|•­YÀY‚„¡€> úçciB­ÄóïHJÚ¡‚õÿìú=ªvßs/½2{=Äô§žy–ºé¶;Ôß}öÔgþáóê£÷~RƒÀ—^®–´\m¾ùæúƒxúYç¨ .¹L¸üt­LÃ*ñÈøá[Ưsþ²ê/Fý­ª?3÷_¶ýbö_×è/Ñú+½3«û/‰þ/OHÿ±â[…ÄîïOèåj°) dýZšg?`|ðƒ ¼–Kp" £Ã\z@ tU â`0UwvñPCHy^ûŒ51kBèÝàýÏ>ïBuã­·«¿ûûÏ©¯ó[ês_ø’úÈÇ>¡®Ç?ó=ç«ý!òC·+´‚s/ºT|ÚY:eØÚ°¥=zäõ]?®’_»æ?ú!˜Ø?Íû»zÿ™þ3â_YúÏ aΟS‚íQ`y㦠󈀽,òÙ ê@ÁyC€^yt€¤0 I H†$Lqv`óx¬ÌbÜj††„eÂQj°K” „ARgY,Íèd ºÂ‚04ˆÂƒ¤¹ƒ6Ÿ×>]r#-µç›öÑBß^ÐN;ç\uB€ó/¼H³‚Ýv[ªîÿ»Ïª[î¸KSþws‚ž‘¿´€sλHwòiÈl¬ZëbsЧÇi8èÃNùi€ Ç}uæý9ªþbÞß,þ@Ý¿=û?KüÃügñoûï0~N9ÿ^@/S€ÔwЦÀ4] H `Ð:@ž0 0Ð=dKÀ°+@³©È*AÙ6lÒƒbšp¤ ˆG‹nBA'[ÐÑŒV »ò’<¿©ÞcÕV—ÍSÛm¿ƒ.úY àøåg¨+®½A-]º»þý˜âºñæ[Ô]Ð.¿êZu<¾PtÚÙ窣?Yqf ÓÝ¥¾N¿XÜ©þbà‡(ú‘Uzî_˜÷ïnû£¿eçŸöþVïÒôÓüã¢ÿÌù³ï_äü{¹``Ê€y‹pnò©§žR¼ùx?9@Ô1D46;@‚€9G€ˆ±–b!Á€ 2r>ºáÞ3ÌìÀBЮÛéÙ»aºY4¢6^²DSÚ­·ÙF½kÙñê|Äöçœw¾ÚtÓMÕAØ~üÿøE\yÝûµ¸&2!›l²©ƒÃZ†¢ u|<~K¸-Éxþ˜èæ#S~f؇Týí¢›ú£ñÇËû‡ÁöŸ°ô×%þÉæŸ$õ¸.Œ©Qiü>€Œÿù5©^úŸ$rOA Ëû÷ʆy²I, oF -øô§?xôÊ·/ÅQN®1©Áhz˜ ”Æ CN6`ë8“°½bLÕ·Ã.ƒyØe€Þqlð!(ÄYB0ˆÄܯÃ÷66 êý7ƒ¸ÇÙoÚïuÊ™çhc¿ûž«ÏñKê¿ôu÷Ç>®®ºîêˆw¥ „vÛ}µìÄSÕ¾û¨Zm,ÛÄò”X“eüv­&õU‰3ÿ®öôþrôW$þ‰Úÿ¤æŸ£ð·åȯÐûÓ;bÀ+òdz­¤ÀÖ¨˜«7êÁqì ôÄì€h#΂ ÌìkŸ5ªê[Áðç`¿]ØŽÚBy®ÎÉëM¼Yg¶j !p µçÞ{£¼wÚ5‡¼óHuÎù©ëPôCÃÿûÏý£N ^xéešú/[8r٠ꈣS›m¶¹jÌhè÷b†{ÆbþXŸPí?<þèá´ßPõ¨¿ôþ²å×TýÙySøãüáýåšþkçü¹ 4~ eƒÚ”ŠbÔÌj0ÿçÕzäeiz@pv ® `»0‹ƒÂP ˜@¬NÀÖ\l & -´–èíÄÍÙáï¸ÓŽê«_ýª:è ƒt3Ûvƒ BÊ uIs‹`¾ýÎ;ï¬sÛ,:Å?+.¸X]÷›Ôß|ø#ê¬sV(Žç‡k/ˆ†Gw²Ú,€ýµíÀ:n7«½eÌ/‡|Xƃ¯€ ClÞiž !•@Àußy„?£ü§ÅþÆûËÑß–øçìý?8žó§2(~Mꟗþû€}€^…I,  °téÒ¶¯iÁ\ ނր]´N‚±m†ue3[úçm¿ýöêŸþ韢qfgœqF¤˜ñõö´Ökiï¾Ï¾ûêþ¦µ(öQç È›¸•ÆOêÏŒ?TÍÁ|PP¤Ç£Ë<¢çD¿‘÷G 6js0€cwìa¸h´Sîëþ xÿhókôw’øw4Œ_ôùÓèhü½€A€28tPEPò2ý× (8:@ž0 ‰ üà?Ð(©Ó‚‡PÔÊXÙpX04†š‚Ö;Û:­Ö  tê}îsŸK4|Ó¶ü™Ï|Fµç0Æ<è5`q‘u¢>Ó Öt1ÔÀRP²ÆMÕÚ¨¥FׯHôùH/®ƒåšðøõ=17ë>åêûÃ<—ñ‡#¾GA¿¨íú?ZÓá5z6-¼-Äcû õúB4¹¨¿øQÆûÛ©?R°Yî[Ôû÷º8‰”{S¤Õø0ÃŽ<òÈ(-8´ )kå‡Þ¤»š‡‚`äò1Õ<`s$÷XwÿÙÏ~6Óð 0-Ùž‹õº?íDBcPCõì‹:~ÔØõPêÁ x«K}å(/»¶ß4÷ÄŒ?HêHÌ÷k p>t“wa74z.†<¬4ä8²i ㆠŽÄ¤¢÷Á뛊?R{Þ¿YùmçýíØ_{ÇÜ‹ú³øE^ú_ô«˜L 7P42!ÀTfU€Àc=¦©U½‰´ zäõ$Î4L (C0¹ÞöÍ0äïõ‡†¿¨79-ý(gš!§:˜@-r|¿6mËfh§(èé2|3‰”ß”öŠÖÞ(Õg·÷†é¾ú[ñ»b“NãhÔ.èÑ ð–5 üðë°j:XÂö ~ãOJû™šSõg–~åßÄþ¶÷?`3ÑñþŒß D.úŸÔ(wLÅø( I È+Ѳ@À‡ œwÞyQZPÏ 0¡@ð„øº¡Ž Gê‹á°SŽt¶åÒãç5| º u&ÌØÃý4xÛè¥Àgšy"…ßÌñï ôˆS~1ØCLöeºCD8X£± °F°SÏEGsØiȦ¦å‹oAÝÃùðViÔßÎû»†~ÈØŸ?(æ2ÔŸlDÿ ¼Uñ¿o Ð&þwŠ€¾ ) ”–( üè½tZpÌ €š­™ Å-­3ÁP5×X•æwÜÑ©ê'­,s5ç}÷ß¿j-\L9ë6Ñ¥=¼<2Æ—†¯Çw‹^~ÓÒÛUÛ4Óßú„¹þúnu½y¨qªgÕt7¢ ¨ ðz2E¦Ù@`¹ ®íÑhÇÝoIá¯Ëû‡Ò¼¿òþ-øA§Á¯JàSLã7@Ј€™@`! ªò²€"‚`YHc_þò—;iÁ¡f#Õ<Šþ6A¹®ñ4¬øÚ×¾æŒñ“Œ<íþ¿ýÛ¿Õã¼Y ØeÐI†nî >öŒÑÇZx…áºVöEk¼d¼o4Ëø9Ú«¶# )À²7Î:“r” €`ÙcU}ýf vEØ´¢+ã~¿]ôcÒ~vÕŸôþÆ©?ß߇þ÷³¸×@=€¼, oZpP ‡vX”¬aX[‡áï³Ï>êÛßþ¶¦úU™H²Ï‰¥ðÄtcš4Þ^Sþpz4ü¯¯ÅOCùe‰¯˜ìSÛ¯y"1>cf¤ñ“ð°û”l€y4ƒu¯½ Àºk‚úwÖ}ÅkþcUõ§‚nÿ+‰þçb¨[IïïbÃÆÒô€,&à˜a#Ò˜ýë_G´•†?sÖLµlÙ2õÝï~·R£7?“ïá¾ûîS5 ãÁpÒ0µè4ró¸yŽõ‚I½BÜÓ4_Äù¶á ¯§üVyoXßÏjI–O[80QÓmÇIžß„ÈHmuX kƒÐ ¢O=ËûŸˆŸ¿}§àÇtú­€µ&]!¯®uç_¨Š© èH0¸óÎ;QQ·úÄ'>¡ç$VéíùZö”£O~ò“º'aä½cJCièÑ׬B Œ\ž¸šo¼~¸ÝP}¹¸Ã¦ûFð´)¿¬ïK|§m ãÛ pL:Æð  àaŠé63µX×ì]SõSëÖ´_GÕß[ñóÇ;§ód¿OûoU鿪@ß àø€ aki)Á¼ àfîsíH Ê‚@6 ³JÃOmÆû µE5Ô€0gŸr‚"$Aí#/zz“Ë7·zUw8¼C¾ÈíKÊ.ñˆºúÆ?‚9~Ó6†±n‰þDdPDã2à¢þÒûK ðsÈY‡\ÔÉ×>@À|¿+íÇÑÞBõgù³1þUIüË£þ—€çž{.&V EÁ2 àŸ¹„ižõ™Fz"‘eä]Fzw=Æ,hÓöFm» FÏ¢W¬/;ú åÇ0OÖöG}ýWPéÈ.ÂÆñ€vM+ïY` ßxSŠÎ[½¾ â?ôZkaŸÁÎøÇ †€9#üê¶ùòƒoTÿ,Ptþÿ €ôˆ¾I¤äeà UA–g=þñ\çÊÙi³ î±ûŒÑKÃè½0z—·O3|z|áõõ8/3Ì“c½i¿±;ºíj» f?Ъiã%äõþÆøÅÏ#E]TE‘©ÆiœêÃÑ^ì÷? Cýɨ=”ñþ²øgØè_àùçŸ×•€®“§G ©6` àËÌNÂ,íåã|¾ûúŖ « å §ïšû:oÑz=ÜÔÐ{Añ·—i=ç»èþ(½~—ñ£§}í‹Ð 졯 q  Qӣťñ»„?›ú`ŒŸ·N9ŠÂ‚Qý8lô! „ÞŸÙþÜ2@£7gªVÿúÏòg—@Ð)š‹Mªdi¢`V8¥ ä~‚½ õŽ¿ÁST×€b“Š=ŽŽå-c7uûÒàcq>f€êǦ÷…?æõuK/ŽiéEcOë<ÞgýÍø`½;(¦Á&yIýmúï2~ ¤÷QX ¶ùRó5þ©(þñþ¹o¥ «2‚*ÁµýXÞwÓ-7év#W‚#ö½5= 6½Jxƒ”^4µÇÐ|‘Û _LðÕ”?ðúº£`ëó  ~ànª¿Kù·cIÿ¥ñTx8à„@@¥Ÿ‚cr¿/Tûóç÷k p_€×h4þ* H(P– ø°²@eÄe¿áƒ7¨ië†`¼wÚ­,ÖéŠë;ßeøÒø¹ªÛ¾ëk¯o³üšgØ ˆŽÀúþ:¿¬?G†¤¥ýò¿‚1|_ãFïOc¿‚ÝûŸ´8©ÿßt20ã¿íÀÐÿ®€ À¯  \uíU:ƹ @·Ï×&}zùÅ7o‰{]†OªŸàõG8Ä““|›ËQ¹àtAb°€^ÜŽûÓ¼¿¤þ2ö7ñ¿ôþ.ã÷€¼Þ_ŽþžJêaà…6€aU‚€k©¨¹¯H€© ·Ï:ÆÈ}oËxï²ßË÷xÙ—éüöèUФ!{~­Õ{©â˯»b|¡î'~Hù;Æž~Lóiœ„~ˆ™Äÿ¬ç'0¶¯šúOïO!’E?æô»ÿ_ €¶€öö?f2€ª ˆ(˜–È |ÄA¾ ŸWÖ }¾ß~_^z¡(2ˆ³4l××&ŽO1xííCU?ÚÒc¶õ˜8ߢû‘ákÏ?ûù™ûç–] ¨p@VÎß÷ûz©ú)üÆÔŸý·€ãO RN‡IP% HÓÊ‚@¯À6RöŸã @+.X¡óëªÉŽ»\'Œåièúp¯ˆí»^|¶á›½–áëaåU?ÂßàHÜ¢÷§©þ¾ÔбÿTÿL±4*– «,å? “ø'é/B2 P%ð }¶ÊçyÅV€mÐIÿ ½ãáê=Q¹§ãúÈÛ‡)=iô†êÃðe¬/½~KLòÑ©¿v¯C=>\ƒþ†ÕûËÖß^Mÿuyÿp š?YÉŠ@‘*Á^ƒ@6P&<¨ÒèåkzÖ©jÚk0ÊB›.½Ís¤‘Ûoòø¶ª/ _ |¡È×eøàÉ~ã…I>õ# üµàœœVëŸVð“”ö3Âß+Ùûû¨ÿ’þKxâ‰'T&0™€† t¤ Áa"@0hfÀŸæ9`Ì ÔVß$µôæösLᎌ볼½Ãð Ý—†ßâÚ®Ë1Rýûè h¶šQ¯žj¿2Æ?hï?lâŸÙlB dhÎÀ€" à*N[-FŲtŸ O¶ )›Ð+OÏ×uýÌsÏ=W7µ138Áb¤ÃÇÃc<»ËËñèc¼}¢á‡S{CÍï#`mwm?>Bò`ÝóѾÕ~iq¿¯êŸfüeóþ½Jýùäþ‹ÿÈà¥`U¢Œ -ÍèYiJûñ+V¨Ö<uœÉÀÆpmã¶½¹yž}kŒ=4øD£•ýÀã Ã7ÆO£ ŸÆÏ~µ=!(q)È›3°He¹IªZ¾?Mõ÷¥þE&þ”mú¤÷wÿØ@ïŸÉpáVº@É ¤¥«`yØ@/€ ¯‘§=ÿÌ3ÏÔ[„¸µ‡]v­³±#à2lI2r)Þ¥¼ôô"½Œñ¥áƒîGÆ)¾¾$ØÜSÛ%€Ý‚Æz®a£þeçýU©üKù§ ïD”`èW@`5AÀh4~sªÔ²@`@0Œ`°|ùò¨Ó­5 XŠ Q°¾#áØZt:˜B´<‘€ç¢öÆà…§y{#î¥>'÷^‚ÁÞIsÿœ Hà<©Çß'ß?(ê_¤ê¯Þ_Š>¹ÿ‚€ Š„i¢`¿@ /#S‰ªôæy_‹ïãÙgŸUßúÖ·G‘rÊ)œMëk£…¢›µ0€‹8âŠ}X¤CC7‡Ænh= >ÕÛ›ý’îÓã[†¯çõaНnÍ [réY“˻ǿhÜŸVîëKý‹ý”õþýNýIÀÀ0‚€@˜5r,i™}^#Îó|Ÿ÷À߃ëÃ:ê¨Î–n B)ndàCï{P¸£•|ÛÓ‡Fß4FoâüÈðÁ@8îë­PwåßFÏMÀè¬Å?ôN4ĪŒ?-î÷Uý}©ÿ ½¿¬ü«Šþ“$@ØR ¨¥:àçÑiÀ¤Óïp ª * H3V—ÑûwÞç<úè£ÚÐô9¹tS‹v±#Œ]¼Tó]Þ^‹{Ý¿¶C`èòðCƺwkí·=Qѯ¨êß/ïßÂ)þÙ¹¹ü£0 !(7¤‰‚Yá@!A6Ð0ÈkÔ¾Ï7ïý§?ý©îºkM‡wF5^—g§¡ÛÆžäécFñu¬.:þ8ù7=½½oãï5õ_U½?\ <Έ¬†¦*‚2Z¯á–y^R§äO~òÝû]{–•pµ \Cé‚ß•Æ3ž>0z¾†÷š#nèáê..üà‡‡i³´<VÌŸÇó5þ*¨ÿ0ÅþyÅ?²€B@```AÀ'$ði1Nk?4 d½7ùø.»ì¢óªq2R…2†·^ÞáéãF®å _¯ç†÷Ãø©zWiüiŠ¿mü½¦þEŠ~ÊÎûïUìoÚ~s3€<P´F k̸Oå o¡œ?Ǩ’ž[Æ‹'}oÙ÷uÙe—õ\°iŒ<2ôÐÃk?ôò"…y{¼0ú&×rñ`-w}9š}P’Ì©|U´ß6þ¢¢_Zµ_ZÜïKý9ö‹ÀgŽO¿Yå¿LêÏx›üâ¿ø£¥átBP¦•¦¯Úfi,`@ #(”5Ò^}?Ÿx@Ì®R\{ŒÒ;è½eôÚðÏ ¿q^pêGc!è?Å­¤Ÿ¼´¿Œñ§¥üÒ¨¿oÅŸ/õ&ï/S…À,TpÀT¼@0UÁÀžªôÈ#ëË÷ÆRÍ$ƒ7^<è}ÇÓǾq.ŒŸ¹þÚáHýa·‰ýí4ßT7~_ê_¤è§HÕ_UÞ_2€Ç\e2O”²Ÿ, ŠAšA/½|Ú(µÏ|æ3ì†n{hð’ÞKO/^ù¬€„¥œµƒøß'ÇŸ¥öWéù‡…úIûUû'yÿÂðÌ3ÏÄD@)ö|R…ý‚ABš±»»úê«u~íP€0òÈÐ%­Ô^S|áé¥Ñ×iü<çPüC §Lšâë2|[íÏ2þ<Š/Œ?úOEïo€Þ?“@,Yiÿt0é)Ê5î+æ ‹ˆ…>X…·÷ù9>Ïášòö,ôå…¸9a oby§ÁÃÃO/ž†_?sþqjï@c §s óè…ñçQü‹ÆýUPÿAxÿ´Â9ô3\•6é DU‚€€2 PVìèøi¯žÃßi³Í6S…0Ø`ÌÆ£Ë[Òù胇ñ'}ý,?·ñN£0´ùÚí¼>”?¯çï•ñW¡úû ƒŽý …€  — ¥ ø‚@Þ°  ­ WíóºòýþóŸ×ô¼¶ zÎ2†yäÙièÒØCj¯½¼ðôÒèõn®ã>Æ4À‚N0k}—.ë2|;ÕW&×o{þ¢)¿*¨¿oÚ¯lìŸÇû Üæc.4ä‚2`PF<ô1ܢϑo½ë®»ñÿþµŽ77ñ»ˆã;ÆÞ¡öšâ O3úÓaøl Ÿ@0(–fìöcßøÆ7õMÀ±0æÈ£ÓÈ-C—ÆR{mðÒÓK£§á/‡áóœ ãß³3ìÃÌî“·Òë¡üehÏŸ÷§üTMýËvü¥)ÿrè‡7 R¥@YÈÒ|A /”eYF™Ç³g½VžÇ÷Ûo¿€þctÝxóȫۆ{HíÁOo= ÿ”ð¼;hýåÏ£Á¹xºÖwùxý*?­ØÇ6þa§þ¾Òó›Øß€@!øýﯳI'-;Å|@ —@Ðk0ÈcÀežûµ¯}M‹<õ¹0æwÁ[Ǽ¹‰ßCCg/ÝeðÆÓK£7ÆonwÔƒ¡Ÿ>)¾*Œ?OºÏ6þ4ѯ¨ñWMý‹ýøzÿ°qËO0 €,€Ài4SŠ0‚"©Ä2[å÷ò÷Ýb‹-‚Ø·0N· \9=»9†ÖKƒO3z G0õ—,W•bŸ]ÞkÂѤež6í´ñ§©þE„¿*¼.ÀT‡²@ !A6P†ìQë·ÜrKЗšµe¡qà³›£c÷èà¹4rslÏžçÿûàu˜ýä$ÊïãùM͉¹5/oûaüEãþ*Tÿ^{ÿÜ@Tµ`X@ /Tƒ…´½ |ìW¿ú•ö¾Í Ìâ{«eØÒÈ}½zãçs—…£À@4¹±ÇeøYi>—ç—†Ÿ•êËòüyD¿´j¿*¨¿¯ðW•÷/ÐøÍI ª`¾Ú@ ¨ ² ÔEõ³¾'Ïã'Ÿ|r üm‚éòr™ç¿?¿…º 0“¤}¼¾-öõÛø{÷WAý}Ó~ybÓöë-2 ñ'€d‰ƒ>a¯ Ÿ`ǰ}žûðÃk£«/`uÞ€ŒŸÀqÎÆÀô˜™%)oí•Ý«Šñ÷“úç-ú+¿¢ÑmÞªäY!AU Ð ˜j`°téRÕh¢9gwxÿ“ƒÀF‘…@É)=yšñÛñþ0{þ´|šñ§üTMýe¿¿ö³‡¶æÆSd¿ùÍot í” ªf¾Fi‹Mó6#ùxí²Ï1ïéž{î P£¸°ñ~l°Ò`W¬ïãõí4_Õ1¿Mûóˆ~iqÿ0RÿpÛOljsn ÐÀž€¡°ÖY·â6gBø;pŒßèo À¤ ~ðh¸6íÏ«ô¯êÆï«úûRÿ,ïŸKd@ã· ,ø„¾l (ó€C/Ÿ{ÐAÂß6 þ'ð½lÙ)6P„ò÷Ûø‹*þ¶çï5õ/"üÉ0À›€*%@dé¾ ^)`pï½÷õþ‹ ü1DÆoXÀaxOs K)âõ‡Ùø{÷W¡úûxÿ\ €Àü²‹ø„> 0l@P¥nÐ ÀAü{4G@ýÙŒS&u׫ï¥É­ÀBoefJøTö¹ ?o…_V}¿óçñü¶ñûÓ¨¿oÎ?ðW˜x¤`Œß|€À'Sµ˜$ïÚ²¤ufEÖœõÂØ]¯ù¶·½-êõŸvìåhœW,€F3UŒ?âßoã÷¥þ.á¯4üú׿ŽD@| +K‡ ä ²VšçûùU@Ò{ùÄ'>Pÿù þ‡±ñfq4б@$kI*é5U~¦æÄÜýIÞ‡dnéíå¡Â/½½l @PF/( E¾ŸÔŸ†Ñlc$÷Có÷ ˜ ׄóƒîjæ)Jùí®¾²´¿ŒñýÒŒ?Mõ/Jý /¬€~‚@¿€`*€Á!‡25¨¿ ¬NÄè0~øèq³jú}âýa6þ´.¿¢qUÔ¿0  ˜Ó/6І¶†PÄS÷â{î»ï¾©Eý%P g„»é5Øtßeø>M=½öüyÿ~¿¯ê_¸!€‰¯\Ðo6Pªƒ^kIÀñÄOhƒi´Qî;U¨¿ÍX¥øš€ÐHª2~;ÞϪðËó÷ÊøEý 1^Ô$àË|j|µ#$æÉøl5NÛiPä±NêOÕ|JSÞ X³S–Þs~‘x¿,í/ãù‡ÑøsUIW`À|´a‚a…Ã?|Õ þ6ìÀø0z1SeÚ+Ê?UŒ¿_Ô?7 NI@aU°‚"{}<|Ús>õ©O­:ÔßV/n°zȬ—×/ï—¥ýyrý¶ç¯Jô+Ký A@2S z EI×÷‘ú³ƒn•¢þ6 exÚôNm@RUŸå/ïÛ~Y1¿müyÒ}yŒ?-ß_•ñç @¡4H€*A OXà3Ž,«ô¸Jí굎<òÈU“úK8 Æ¿]üÐÛå¼¾^ªZ“O¿Œ?70ŽÊ€ªÃ‚~AÙÔbUÆÿ•¯|%Xì1Ujý}Ê“žÃ­B‹ ‡M«ç÷¡üEâý~zþ<ÆŸVê›7åg§ /.FOOþö·¿ÕñÚIÊØ÷gUú6¹z²<žÇ«2î¬×á5]²dɪMým0xS òCí*êq¾Ëë1~ªûö!ÉCª/S|æ0Η‡T_¼<úä¡Ç7‡/k¡§k¸§Ë¸}îóÂÀtOðß°À7[0,``G–Qçyü¢‹.Zõ©† ˜·“ÏeøEľ¬‰>eb~ÛóçQü«Œû µãb: jèÍ"äa EŸûýï_{“ú¼)Òæ[†úÛßû6°€‰  ñVéõ«ûziüýŒû ÿ(2 ñË“äaý‚*Ä¢Æîú¾ÝvÛmxF{WiÜ>¯Å Á­;‚>U}>”¿ÆŸ§ÐÇöüyŒ¿Š¸¿dPz EDä¹U¶ÏkÝyçÃ5ÚÛÇh«~+ÖaÒqöðŽ¢”¿¬Øç*ïªÆŸKŠ®¤ñg€6Ðk ¨ zÍ~ñ‹_óý¦‡;ýª6¬©ôz{°fœbXQ¡ÏÇëç÷³jûí<VÌo{þ^+þ¥²^TÀ/ùËǏћ ô ªÌ:,[¶,þ^?d£½læ‚“°eXzã„ä-?—ö¡§—§¬Òßoãï•èW¸Ð/´€A‚@žöã¢s }FšUñœ|P§4ì „Ñ ÛÏäfãÑ -h´'Ûø} ßEù‡Ýó÷Ëøs‡æ‚K T yCƒ¼‚á0½õÖ êýÑÃz«×€3—,€Ôº*ã·óûY¥½«ªçÏÝ $Õ!€Í ø‚€oÚ0OEaÑÂ"Ÿ¤*<|Òk\xá…º˜DÒ²Õ @ »ÉŠÀLøéòúUÅûvšoÐÆ_µâ_J ˜˜Êņªb. ( W^yePÿ>ê2ØæhLÛg˜Ö{ 24xG˜>~þ²bý¢”ÿ•hü¹B€<',è#¨B/ða ¾@‰JZ jŽc¬7WyŠ " `mü oX~6v p£ñ\TÉ¿("ôùPþW‚çÏàÂÇ?ÄÒë'}”pÝï›:,äXTÔðӾﳟýlÇÛ3Ö¥Á½ g}A€pðj˜Æ ÂoŸógu‚@ã·ëù}¼~V?ÙTŸ-øõƒö*"˜T C€9ƒ‚"¢a™1feAᓟüdÛî`)þÜð³6îß~u&@³ …8Mœ7âpnÀ†Ðè ø¤÷\^µñ×Ò»( |Ù@¡0ohw0‰o§b/t„ï|ç;ºÈ¥¶†Îí¹’r“ ðÃ>,4|Pïƒ`8†ÃÒàãÂëqn±c°Ö¨i(jü²“Ï·£¯ê"ŸA{þÜ!P4‘äey`˜À ªŒÃ±Ç°‚Àþø`›P`P7l?w®É®8\,jÞ‡‡ìx.zu >é=—×/ïOuÚ_( ˜‹n‡ò„ý‚*Ä<ì!鹫¦Ž9æ˜@á¦È @ªÞ« ™ý(1>¬V¯Ubüv¿O¼¿*®ÀAÀz eXAU"b@pûí·«õ×_?‚YH2 Hõ›å°Ãæ•õ~ŠoÁ™xÒqW5Ÿo¬ïÓÐãCù³ºúìÚþa¡ý¥€z0—ç/Ê0‚¼=Y™†*Œ:ïkðw¸÷Þ{ÕÎ;ïk˜àú/.Ô41ð  pP?—õüý·Äé€U¿=ÁÇÇøåŸi>Ãhü¹â§•Œ¡$zÃ` ßüæ7ÕG¡•n¦„šshŒ©í08$Œ‰™"”QöúçÒè)ö±$z3œ0ýG"E¯2Ö¯Šòguõ «ñ‚Ccüò¶Œ  T&d1†^i ?ùÉOÔ¥—^ª–.]ª?ô²j°¶y-h" 0k0•é= ¡ôïBÑocn j¿ÞH6ü^S~Ÿx*å—äIæ­.,Ûžìcøýz¯ÓW¿úUõ¾÷½Oí½ÏÞj欙Q¨Ð˜ßPÓ6Cx@a¯Ž½(aXØ=;лs苨è3·?‡ù~–B£ò¯Ñlè8ß0Î^{}Ê_$ÞfÏŸ; áD‡i  È+é9H«Fì—Wýsxàõþ÷¿_rÈ!jý ÖW­v+b ­¹-U[`uµmÔ =-³ ̳ó°q6ƒÆÉCfÁbzh.Ór(ù5ïçóø}|¾=9gûQÈd3Ï8›ãÐÐ×Ãaqi=~è4(}<½­¡ø&½çkø¾é½¢”U5þ\ €`Š&žzê)gP&,(eÄ¢cͪ6ê2¯Çßá‘GQ_øÂÔm·Ý¦Î;ï€G,,ROPE/BÊ{ˆÊ ßGxõ¸¤“Fï³Ôü4oßKÃwåõ}cýUÑø‘|Âß_ <ôÐC?ð“à? Às¦.üøã˜`ŽÍTýfƒ4bߟ’ží€²FßÃ_íõ“é¾­`øÌ÷Œñóöî»ï~X<ç[6L‚ž/Cþå_þ%yAÞZÉ òÖ¤=ß×XV…çå¸nQûw–á'åí“FnËaœ®q\æ>rÚ·ò3˜Ô¨$GvÑËۇž}èåí“UH3UÇTêïJãç×»ì²ËSâ÷¹± pÇ.ìoÌE_¸páó&l  TUŒ4h°ÈaèIÝœ©PÆèÓh~Þ?É㯦ûÉL`Á‚“?ÿùÏ_ðãÿø7Iû¸`žôv^\pÀ$@?Ã^±ƒ,C”¡g½¯ F_$¾ORõ«0üU9½—ÄL`üÏ}ï{ßû¡4~è/£@zÿ?ÓÙ;€w>`(ÿ`/0ž°YÀ YÁ ¡Ãóš¯Ð«Ÿ#®[Ôþfø®Ùúö}Eh~U†ÿJùl8ᄾc{~ÁG>ò‘³žû‘Dã€ý7¿,ã,ÁqÇ÷ý,6P4<("”iPê•¡ Ëë¦df ¬Ñ§ÑüAþª¨ðKƒž7oÞ$õ:;æçÿ1|ö×Ðx˜ó7ôÿ%|½^„D q“=Ž—·Ür˧N;í´‡>ýéOÿäôÄO<‹3é:l,*r8“ êÃiÇ«êÉ{­ðáøíºë®;™ç¬³Î:“igíµ×žL:k­µÖdÒY¼xñ¤ë,Z´hÒuãfvÁ­¢çY–÷²ÂE>0Ï/S}vÜÿ†7¼á7–÷¿ÙÇø£ç Ž:œÂ  IJ­©%HRxM¹qmôñ@|NVÌšôx–ê=•/z 0h¥Íò¦zíçg…ˆöãp ì<õ:p.Ê縼à+í>ÆüýèGÿ¯åùɘÍá“™¸çׯ”$0HóX˜öd_@( Æ†Ñø‹yZšÎ@¿ž àkôæy>†Ïç¼Ò Ýõûþô§?}f=öø¥C$ü5î[TÄøå÷Ô;@x¹·ÿvðÜ>‡³’@x`ð+³N8“€s O8ºŒÃK¼O8ñ˜1oÏN¸Y‰ÊzâéåÏ7¯í{]Pü_0Æ—ŠæKEŒô¥<ð—|t©—^‰‚ßÿÀàuô~ìcû·½öÚë—tÆãÿî[§¬ñ¯þþUë Œf±/— ¦¥ò’òøIª~RJoUø’Ò}ž÷ÿÏûNkÕúè®þmª¸NèµÑ1üWb>ßÓÀ]Þž÷­Ä¹gÝ*>(«_cÕ¼| >-ug€KÊ*×5å»®²]sß+©|·€Ñ3½÷ÎÏpþÎ 8ûâLø|dÿÔ¸èÌ[„ÉîIEND®B`‚(€ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÈœY/_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxŒŒŒÄŒŒŒÄŒŒŒÄŒŒŒÄŒŒŒÄ‹‹‹Ä‹‹‹Ä‹‹‹Ä‹‹‹Ä‰‰‰Ä‰‰‰Ä‰‰‰Ä‰‰‰ÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄ‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡ÄuuuÇ;;;Ù ùÿÃ-Šùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿáááÿàààÿàààÿàààÿàààÿàààÿàààÿàààÿàààÿßßßÿßßßÿßßßÿßßßÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÛÛÛ÷€€€Éÿ÷()Ôÿ___˺ººÉØØØáßßßøßßßøßßßøàààøàààøàààøàààøàààøàààøàààøáááøáááøáááøáááøáááøáááøáááøáááøáááøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøâââøáááøáááøáááøáááøáááøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø---áiiiÈÁÁÁËÜÜÜÿÜÜÜÿÃÃÃÒÿÇÔñ½½½Çßßßÿßßßÿßßßÿàààÿàààÿàààÿàààÿàààÿàààÿàààÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaaaÇÛÛÛñÜÜÜÿ‚‚‚Êÿcƒÿ¾¾¾Æßßßÿßßßÿàààÿàààÿàààÿàààÿàààÿàààÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbbbÅÜÜÜÿÜÜÜù ùœ÷aaaÇßßßÿàààÿàààÿàààÿàààÿàààÿàààÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿâââÿâââÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÃÃÉÜÜÜÿ<<<ÚÈ0ÿ¾¾¾Åàààÿàààÿàààÿàààÿàààÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkkkÄÜÜÜÿwwwÇòdÿÚÚÚààààÿàààÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿãããÿãããÿãããÿãããÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ...ÛÜÜÜÿ‡‡‡Äÿÿààà÷àààÿáááÿáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÜÜÜÿ‡‡‡Äÿ€ÿáááøáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿäääÿäääÿäääÿäääÿäääÿäääÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿáááøáááÿáááÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿäääÿäääÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿáááøâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿÔÔÔÿ¶¶¶ÿ—˜—ÿioiÿCMCÿ3?3ÿ/;/ÿ+9+ÿ'6'ÿ#3#ÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿâââøâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿÜÜÜÿ¦§¦ÿZaZÿ'0'ÿÿ $ ÿ 0 ÿ<ÿLÿ\ÿ`ÿaÿaÿbÿcÿcÿdÿeÿeÿbÿ`ÿYÿOÿFÿ<ÿ4ÿ+ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿâââøâââÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿÞÞÞÿŠŠŠÿ),)ÿÿ2ÿNÿ`ÿfÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿiÿbÿJÿ,ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿâââøãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿ×××ÿadaÿÿ - ÿMÿfÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ`ÿ/ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿãããøãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿÞÞÞÿ'-'ÿ5ÿcÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿhÿ]ÿjÿ9ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿãããøãããÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿfhfÿ9ÿiÿMÿYÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿbÿÿWÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿãããøäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿyyyÿ0ÿOÿÿaÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ € ÿäääøäääÿäääÿäääÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿÙÙÙÿ.1.ÿ ÿ % ÿiÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ €ÿäääøäääÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿÞÞÞÿ###ÿ - ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿbÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ €ÿåååøåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿ¾¾¾ÿÿbÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ-ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿåååøåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿgigÿ5ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿVÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿåååøåååÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿãããÿ"ÿTÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿhÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿæææøæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿªªªÿ $ ÿgÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿFÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿæææøæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿJMJÿ>ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿæææøæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿÛÛÛÿÿYÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿ¡¡¡ÿ ( ÿhÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿEJEÿDÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ'ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿÛÛÛÿ"ÿ_ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿžŸžÿ - ÿiÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿèèèøèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿAHAÿJÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿèèèøèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿÜÜÜÿ%ÿbÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿèèèøéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿîîîÿîîîÿšœšÿ2ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ2ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿéééøéééÿéééÿéééÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿ/8/ÿOÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿéééøéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿïïïÿïïïÿïïïÿïïïÿïïïÿ¿¿¿ÿÿeÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿiÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿéééøêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿïïïÿLNLÿ8ÿmÿmÿmÿmÿlÿlÿkÿjÿjÿjÿjÿjÿjÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿêêêøêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿÐÐÐÿ  ÿ\ÿpÿpÿpÿoÿoÿnÿmÿmÿlÿkÿjÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿêêêøêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿðððÿðððÿðððÿðððÿcdcÿ=ÿtÿsÿsÿrÿrÿqÿqÿpÿoÿnÿmÿSÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿêêêøêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿÜÜÜÿ.ÿvÿuÿuÿuÿuÿtÿtÿsÿrÿqÿpÿ>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿêêêøëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿ$9$ÿpÿyÿxÿxÿwÿwÿvÿuÿuÿtÿsÿ,ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿëëëøëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿñññÿñññÿñññÿGNGÿbÿ|ÿ{ÿ{ÿzÿzÿyÿxÿwÿvÿuÿ.ÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿñÝÝÝÿ‡‡‡Äÿ€ÿëëëøëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿ7@7ÿlÿ~ÿ}ÿ}ÿ|ÿ|ÿ|ÿ{ÿzÿyÿxÿHÿÿ!!!ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿñÝÝÝÿ‡‡‡Äÿ€ÿëëëøëëëÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿòòòÿòòòÿòòòÿòòòÿëëëÿ%ÿyÿ€ÿÿ€ÿÿÿ~ÿ}ÿ|ÿ|ÿ{ÿgÿÿÿ!!!ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿñÝÝÝÿ‡‡‡Äÿ€ÿëëëøìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿíííÿACAÿ A ÿ„ÿƒÿƒÿ‚ÿÿÿ€ÿ€ÿÿ~ÿ|ÿvÿÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿìììøìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿóóóÿâââÿ¹¹¹ÿmnmÿÿ + ÿÿ†ÿ…ÿ…ÿ„ÿ„ÿ„ÿƒÿ‚ÿÿ€ÿÿ~ÿkÿRÿ=ÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿìììøìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿ.3.ÿ 1 ÿ F ÿhÿ‚ÿ ˆÿ ˆÿ ‡ÿ ‡ÿ ‡ÿ ‡ÿ†ÿ…ÿ„ÿ„ÿƒÿÿ€ÿÿ~ÿ|ÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿìììøìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿôôôÿôôôÿôôôÿôôôÿ)4)ÿwÿ Šÿ Šÿ Šÿ Šÿ Šÿ Šÿ ‰ÿ ‰ÿ ‰ÿ ˆÿ ‡ÿ ‡ÿ†ÿ…ÿ„ÿƒÿÿÿÿ$ÿ0ÿÿ!!!ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿìììøíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿ+8+ÿzÿ Œÿ Œÿ Œÿ Œÿ Œÿ Œÿ Œÿ Œÿ ‹ÿ Šÿ ‰ÿ ‰ÿ ˆÿ ‡ÿ†ÿ…ÿ„ÿ‚ÿÿ(ÿ=ÿÿ!!!ÿ!!!ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿ,;,ÿ}ÿ Žÿ ÿ ÿ Žÿ Žÿ Žÿ ÿ Žÿ ÿ Œÿ Œÿ ‹ÿ Šÿ ‰ÿ ˆÿ ‡ÿ†ÿ„ÿƒÿ,ÿCÿÿ"""ÿ!!!ÿ!!!ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿõõõÿ->-ÿ ÿ ‘ ÿ ‘ ÿ ‘ ÿ ‘ ÿ ÿ ÿ ÿ ÿ ÿ Žÿ Žÿ ÿ Œÿ ‹ÿ Šÿ ‰ÿ ˆÿ ‡ÿ…ÿ1ÿJÿÿ"""ÿ"""ÿ!!!ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿ.A.ÿ ƒÿ “ ÿ ’ ÿ ’ ÿ “ ÿ ’ ÿ ’ ÿ ’ ÿ ‘ ÿ ‘ ÿ ÿ ÿ ÿ Žÿ ÿ Œÿ ‹ÿ ‰ÿ ˆÿ ‡ÿ6ÿQÿ  ÿ###ÿ"""ÿ!!!ÿ!!!ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿöööÿöööÿöööÿ/D/ÿ …ÿ ” ÿ ” ÿ ” ÿ ” ÿ ” ÿ ” ÿ ” ÿ “ ÿ ’ ÿ ’ ÿ ‘ ÿ ‘ ÿ ÿ ÿ Žÿ ÿ Œÿ Šÿ ‰ÿ<ÿTÿ  ÿ###ÿ"""ÿ"""ÿ!!!ÿ!!!ÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ/F/ÿ ˆÿ – ÿ – ÿ – ÿ – ÿ – ÿ • ÿ • ÿ • ÿ ” ÿ ” ÿ “ ÿ “ ÿ ‘ ÿ ‘ ÿ ÿ Žÿ Žÿ Œÿ ‹ÿCÿQÿ  ÿ###ÿ###ÿ"""ÿ"""ÿ!!!ÿ ÿ ÿÿÿÿÿ8ÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ-E-ÿ Šÿ— ÿ˜ ÿ˜ ÿ— ÿ— ÿ— ÿ — ÿ – ÿ – ÿ • ÿ • ÿ ” ÿ “ ÿ “ ÿ ‘ ÿ ÿ ÿ Žÿ ŒÿJÿIÿÿ$$$ÿ###ÿ###ÿ"""ÿ!!!ÿ!!!ÿ ÿÿ ÿ!ÿ^ÿmÿiÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿîîîÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿöööÿ=?=ÿsvsÿæææÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿ÷÷÷ÿ+A+ÿ ‹ÿš ÿ™ ÿš ÿ™ ÿ™ ÿ ™ ÿ ˜ ÿ˜ ÿ— ÿ — ÿ — ÿ • ÿ • ÿ ” ÿ “ ÿ ’ ÿ ‘ ÿ ÿ ŽÿRÿBÿÿ$$$ÿ$$$ÿ###ÿ"""ÿ"""ÿ ÿÿÿHÿsÿrÿoÿlÿcÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿšššÿ- ÿ H ÿ$ÿY]YÿÔÔÔÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿøøøÿ*=*ÿ ‹ ÿ› ÿ› ÿ› ÿ› ÿš ÿš ÿš ÿ™ ÿ™ ÿ ˜ ÿ˜ ÿ — ÿ — ÿ • ÿ ” ÿ ” ÿ “ ÿ ‘ ÿ ÿ[ÿ8ÿ ÿ$$$ÿ$$$ÿ###ÿ###ÿÿ ÿ.ÿoÿxÿvÿtÿqÿnÿkÿLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿîîîÿÿ jÿ “ ÿ ‰ÿ Q ÿ%ÿ@D@ÿ¾¾¾ÿùùùÿùùùÿùùùÿùùùÿøøøÿøøøÿøøøÿ)8(ÿ ‹ ÿœ ÿœ ÿœ ÿœ ÿœ ÿœ ÿ› ÿ› ÿš ÿš ÿš ÿ ˜ ÿ˜ ÿ — ÿ – ÿ • ÿ ” ÿ ’ ÿ ‘ ÿdÿ2ÿ ÿ%%%ÿ$$$ÿ"""ÿ  ÿÿ\ÿÿ|ÿzÿwÿtÿrÿoÿlÿjÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ ÿíííøïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿøøøÿøøøÿ{|{ÿ 3 ÿ ’ ÿ ” ÿ • ÿ – ÿ ÿ Z ÿ(ÿ-1-ÿµµµÿùùùÿùùùÿùùùÿùùùÿùùùÿ&3&ÿ ‹ ÿž ÿž ÿž ÿž ÿ ÿ ÿ ÿœ ÿœ ÿ› ÿ› ÿš ÿ™ ÿ ˜ ÿ— ÿ — ÿ • ÿ ” ÿ ’ ÿnÿ+ÿÿ%%%ÿÿÿAÿÿƒÿ€ÿ~ÿ|ÿyÿvÿtÿqÿnÿkÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ ÿíííøïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿøøøÿùùùÿáááÿÿ uÿ ” ÿ • ÿ – ÿ— ÿ ˜ ÿ™ ÿ • ÿ d ÿ,ÿ.3.ÿ···ÿùùùÿùùùÿùùùÿ#-#ÿ ‹ ÿž ÿž ÿž ÿŸ ÿŸ ÿž ÿ ‘ ÿ?ÿ(7'ÿ1@0ÿ'ÿNÿ” ÿ™ ÿ ˜ ÿ— ÿ – ÿ • ÿ ” ÿyÿ#ÿÿ  ÿ'ÿtÿ ˆÿ †ÿ„ÿ‚ÿ€ÿ}ÿ{ÿxÿuÿrÿoÿlÿjÿMÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€ ÿîîîøïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿøøøÿùùùÿùùùÿ]^]ÿ : ÿ ” ÿ • ÿ – ÿ˜ ÿ™ ÿš ÿ› ÿœ ÿœ ÿš ÿ k ÿ/ÿ.5.ÿºººÿùùùÿ'ÿ Š ÿ  ÿ  ÿ  ÿ  ÿ  ÿ n ÿ3;2ÿ++*ÿ443ÿ322ÿHFEÿ330ÿ/ ÿ– ÿš ÿ™ ÿ˜ ÿ – ÿ • ÿ ÿÿÿXÿ Œÿ Œÿ ‰ÿ ‡ÿ†ÿ„ÿÿÿ|ÿyÿvÿtÿqÿnÿjÿjÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€ ÿîîîøïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿøøøÿùùùÿùùùÿÍÍÍÿÿ ~ÿ • ÿ – ÿ˜ ÿ™ ÿš ÿ› ÿœ ÿ ÿž ÿž ÿŸ ÿž ÿ q ÿ2ÿ080ÿ!ÿ ‘ ÿ¡ ÿ¡ ÿ¡ ÿ¡ ÿ ÿ&2&ÿ,,,ÿMKIÿŠÿ—•“ÿ))(ÿUROÿ00,ÿKÿ› ÿš ÿ™ ÿ˜ ÿ – ÿ • ÿjÿ ˆÿ ‘ ÿ ÿ ÿ ‹ÿ ‰ÿ ‡ÿ„ÿ‚ÿ€ÿ}ÿ{ÿxÿtÿrÿoÿlÿjÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€!!!ÿîîîøïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿùùùÿùùùÿùùùÿ@A@ÿ B ÿ • ÿ – ÿ˜ ÿ™ ÿš ÿ› ÿœ ÿ ÿž ÿŸ ÿ  ÿ  ÿ¡ ÿ¡ ÿ  ÿ v ÿ G ÿ¢ ÿ¢ ÿ¢ ÿ¢ ÿ¢ ÿNÿ"""ÿ;97ÿ€~yÿ}}|ÿ¬«¨ÿyurÿ221ÿc`Zÿ&ÿ› ÿ› ÿš ÿ™ ÿ— ÿ — ÿ • ÿ “ ÿ ’ ÿ ÿ Žÿ Œÿ Šÿ ˆÿ†ÿ„ÿÿÿ|ÿyÿvÿtÿpÿmÿjÿjÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€!!!ÿîîîøïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿùùùÿùùùÿùùùÿ³³³ÿÿ †ÿ — ÿ— ÿ™ ÿš ÿ› ÿœ ÿž ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ¢ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ£ ÿ£ ÿ£ ÿ£ ÿ:ÿ%%%ÿVTOÿ}yÿ333ÿžœ™ÿrpkÿ+++ÿqojÿ$ÿ “ ÿœ ÿ› ÿš ÿ ˜ ÿ— ÿ – ÿ ” ÿ ’ ÿ ‘ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿ€ÿ}ÿzÿwÿuÿrÿnÿkÿjÿiÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€!!!ÿîîîøïïïÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿùùùÿùùùÿùùùÿúúúÿ)*)ÿ J ÿ – ÿ— ÿ ˜ ÿš ÿ› ÿœ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ@ÿ775ÿECAÿ¢¡œÿ°¯¬ÿ’‹ÿA@>ÿ221ÿxtpÿ(ÿœ ÿ ÿœ ÿ› ÿš ÿ ˜ ÿ — ÿ • ÿ ” ÿ ’ ÿ ÿ Žÿ Œÿ Šÿ ˆÿ†ÿ„ÿ€ÿ~ÿ|ÿxÿuÿsÿoÿlÿjÿjÿ_ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€!!!ÿîîîøïïïÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿùùùÿùùùÿùùùÿ±±±ÿ ÿ ‹ÿ — ÿ ˜ ÿš ÿ› ÿœ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ¤ ÿ£ ÿ¤ ÿ¥ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿmÿ01/ÿ++*ÿ[YYÿ{zwÿYXVÿ""!ÿƒÿa_\ÿ1ÿŸ ÿž ÿ ÿœ ÿ› ÿ™ ÿ˜ ÿ – ÿ • ÿ “ ÿ ‘ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿzÿvÿtÿqÿmÿjÿjÿjÿ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿñßßßÿˆˆˆÄÿ€!!!ÿîîîøïïïÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿùùùÿùùùÿùùùÿúúúÿ363ÿ T ÿ — ÿ˜ ÿ™ ÿ› ÿœ ÿ ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ¥ ÿ˜ ÿ+ÿFC@ÿ322ÿÿÿccbÿމÿ"(!ÿ ‚ ÿ  ÿŸ ÿž ÿœ ÿœ ÿš ÿ™ ÿ— ÿ – ÿ ” ÿ ’ ÿ ÿ Žÿ Œÿ Šÿ ˆÿ…ÿƒÿÿ}ÿ{ÿwÿuÿrÿnÿkÿjÿjÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿñßßßÿ‰‰‰Äÿ€!!!ÿîîîøðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿùùùÿùùùÿùùùÿÁÁÁÿ%ÿ ÿ˜ ÿ™ ÿš ÿœ ÿ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ¦ ÿ¦ÿ¦ÿ¦ÿ¦ ÿ¦ ÿŽ ÿ&ÿ653ÿ,,+ÿ666ÿ==;ÿ#ÿ [ ÿ¢ ÿ¡ ÿ  ÿŸ ÿž ÿœ ÿ› ÿš ÿ˜ ÿ – ÿ • ÿ “ ÿ ‘ ÿ ÿ ÿ ‹ÿ ‰ÿ †ÿ„ÿÿ~ÿ|ÿxÿuÿsÿoÿlÿjÿjÿjÿTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿñßßßÿ‰‰‰Äÿ!!!€!!!ÿîîîøðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿùùùÿùùùÿúúúÿÿš ÿ¦ ÿ§ÿ§ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ§ ÿ§ ÿ§ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ ÿ-ÿ+,+ÿ_ÿ§ ÿ§ ÿ¦ÿ¥ ÿ¤ ÿ£ ÿ£ ÿ¡ ÿ  ÿŸ ÿž ÿœ ÿš ÿ ˜ ÿ — ÿ • ÿ ’ ÿ ‘ ÿ Žÿ ‹ÿ ‰ÿ ‡ÿ„ÿÿ~ÿ{ÿjÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€ ÿíííøïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿøøøÿùùùÿùùùÿøøøÿŽÿ!ÿc ÿ¤ ÿ¦ ÿ¦ ÿ§ÿ§ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ§ÿ§ ÿ§ÿ§ ÿ§ ÿ§ ÿ§ÿ¨ÿ¨ÿ¨ÿ0ÿ-.-ÿWÿ§ ÿ§ ÿ¦ÿ¥ ÿ¥ ÿ£ ÿ¢ ÿ¢ ÿ  ÿž ÿž ÿœ ÿš ÿ ˜ ÿ – ÿ • ÿ ’ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿÿ~ÿ{ÿxÿuÿ_ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñßßßÿˆˆˆÄÿ€ ÿíííøïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿøøøÿøøøÿøøøÿØØØÿ595ÿ/ÿ‹ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ÿ§ ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ§ÿ§ÿ§ÿ§ÿ§ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ2ÿ-.-ÿPÿ§ ÿ§ ÿ¦ ÿ¥ ÿ¤ ÿ£ ÿ£ ÿ¡ ÿ  ÿŸ ÿ ÿœ ÿš ÿ™ ÿ – ÿ ” ÿ “ ÿ ÿ ÿ Œÿ ‰ÿ †ÿ„ÿ€ÿ~ÿ{ÿwÿuÿqÿmÿVÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿøøøÿ“““ÿÿ N ÿ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ§ÿ§ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ§ÿ§ÿ§ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ4ÿ...ÿJÿ§ÿ¦ ÿ¦ ÿ¥ ÿ¤ ÿ¤ ÿ¢ ÿ¡ ÿ  ÿž ÿ ÿ› ÿš ÿ˜ ÿ – ÿ ” ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ†ÿƒÿ€ÿ}ÿzÿwÿtÿqÿmÿjÿiÿPÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿÝÝÝÿ>@>ÿ%ÿ w ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¥ ÿ¦ÿ§ ÿ§ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ6ÿ...ÿCÿ§ ÿ¦ ÿ¥ ÿ¥ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿŸ ÿž ÿ ÿ› ÿ™ ÿ— ÿ – ÿ ” ÿ ’ ÿ ÿ ÿ ‹ÿ ˆÿ†ÿƒÿ€ÿ}ÿzÿvÿtÿpÿlÿjÿjÿjÿhÿFÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿžžžÿÿ ? ÿ” ÿŸ ÿ  ÿ¢ ÿ¢ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ¦ÿ§ ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ9ÿ---ÿ>ÿ§ ÿ¦ ÿ¥ ÿ¥ ÿ£ ÿ£ ÿ¡ ÿ¡ ÿŸ ÿž ÿœ ÿ› ÿ™ ÿ˜ ÿ • ÿ ” ÿ ‘ ÿ ÿ ÿ Šÿ ˆÿ…ÿ‚ÿ€ÿ|ÿzÿvÿsÿpÿlÿjÿjÿjÿjÿ6ÿÿ ÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿíííøîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿðððÿLMLÿÿ d ÿ› ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ ÿ§ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ§ ÿ;ÿ---ÿ:ÿ¦ ÿ¦ ÿ¥ ÿ¤ ÿ£ ÿ£ ÿ¡ ÿ  ÿž ÿž ÿœ ÿš ÿ ˜ ÿ — ÿ • ÿ “ ÿ ‘ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿyÿuÿsÿoÿlÿjÿjÿjÿdÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøîîîÿîîîÿîîîÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿNTNÿ 4 ÿ ‡ ÿš ÿ› ÿ ÿž ÿŸ ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ÿ§ ÿ¨ÿ§ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ§ÿ¨ÿ=ÿ...ÿ6ÿ¦ ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿž ÿ ÿ› ÿš ÿ˜ ÿ — ÿ ” ÿ “ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿÿ~ÿ|ÿxÿuÿrÿnÿkÿjÿjÿjÿ4ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿõõõÿõõõÿY_Yÿ U ÿ— ÿ™ ÿ› ÿ ÿž ÿŸ ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¨ ÿ¨ÿ§ ÿ3ÿ---ÿ.ÿ¦ ÿ¥ ÿ¤ ÿ£ ÿ¢ ÿ¢ ÿ  ÿŸ ÿž ÿœ ÿ› ÿš ÿ— ÿ – ÿ ” ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ†ÿ„ÿ€ÿ~ÿ{ÿwÿuÿqÿnÿjÿjÿjÿbÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿæææÿ&ÿ ‡ÿ™ ÿš ÿœ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ ÿ§ÿ¨ÿ§ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ ÿ¨ÿ§ÿ§ ÿq ÿ ' ÿ!!!ÿ  ÿ<ÿ ‹ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿŸ ÿ ÿœ ÿš ÿ ˜ ÿ — ÿ • ÿ “ ÿ ‘ ÿ ÿ ÿ Šÿ ˆÿ…ÿƒÿ€ÿ}ÿzÿwÿtÿpÿmÿjÿjÿjÿ2ÿ&ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿŠŒŠÿ ; ÿ ˜ ÿš ÿ› ÿ ÿž ÿ  ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ§ÿ“ ÿ8ÿ).)ÿ***ÿ"""ÿ"""ÿÿÿ-ÿ vÿ  ÿ¡ ÿŸ ÿž ÿ ÿ› ÿ™ ÿ˜ ÿ — ÿ ” ÿ “ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿyÿvÿsÿpÿlÿjÿjÿ`ÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿòòòÿ#,#ÿ nÿ™ ÿ› ÿœ ÿž ÿž ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ§ÿ§ÿ§ ÿ§ ÿ§ ÿ§ ÿ§ ÿ§ ÿ¤ ÿ_ÿ / ÿ444ÿ131ÿ#/#ÿ+ÿ  ÿÿÿ!!!ÿÿ " ÿbÿž ÿž ÿœ ÿš ÿ™ ÿ˜ ÿ • ÿ ” ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ ‡ÿ„ÿÿ~ÿ|ÿxÿuÿrÿoÿkÿjÿjÿ/ÿ(ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿ¸¸¸ÿ)ÿ ’ ÿš ÿœ ÿ ÿž ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ÿ¦ ÿ§ ÿ§ ÿ§ÿ¦ÿ¦ÿ§ÿ ÿ4ÿ252ÿ111ÿ%ÿQ ÿ‘ ÿ£ ÿž ÿ tÿ6ÿÿÿ"""ÿÿ1ÿ ‘ ÿ› ÿš ÿ˜ ÿ – ÿ • ÿ “ ÿ ‘ ÿ ÿ Œÿ Šÿ ˆÿ…ÿƒÿÿ}ÿ{ÿwÿuÿqÿnÿjÿjÿ_ÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿñÞÞÞÿˆˆˆÄÿ€ÿìììøìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿôôôÿCHCÿ R ÿ™ ÿ› ÿœ ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ¦ÿ¦ ÿ¦ ÿ¦ ÿ¦ ÿŠ ÿ)ÿ222ÿ!ÿ3ÿ‘ ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ£ ÿ¢ ÿ™ ÿkÿ#ÿÿÿ  ÿhÿ™ ÿ˜ ÿ • ÿ ” ÿ ’ ÿ ÿ Žÿ Œÿ ‰ÿ ‡ÿ„ÿ‚ÿÿ|ÿzÿvÿtÿpÿmÿjÿjÿ-ÿ)ÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿìììøìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿÕÕÕÿÿ „ ÿš ÿ› ÿ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ¦ ÿ¦ ÿ¦ ÿˆ ÿ%ÿ...ÿÿX ÿ¡ ÿ¥ ÿ¤ ÿ¤ ÿ¤ ÿ£ ÿ¢ ÿ¢ ÿ¡ ÿŸ ÿ› ÿYÿÿÿ  ÿIÿ • ÿ • ÿ “ ÿ ‘ ÿ ÿ ÿ ‹ÿ ˆÿ†ÿ„ÿ€ÿ~ÿ|ÿxÿuÿrÿoÿlÿjÿ]ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿìììøìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿrsrÿ 8 ÿ™ ÿ› ÿœ ÿ ÿž ÿŸ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ¥ ÿ¥ ÿ¥ ÿ  ÿ)ÿ%&%ÿ*ÿ‚ ÿ¥ ÿ¤ ÿ¤ ÿ£ ÿ¤ ÿ£ ÿ¢ ÿ¡ ÿ  ÿ  ÿŸ ÿ ÿ ÿ ÿ;ÿ ÿÿ5ÿ ‹ÿ ’ ÿ ÿ Žÿ ‹ÿ ‰ÿ ‡ÿ…ÿ‚ÿ€ÿ}ÿzÿwÿuÿqÿnÿjÿjÿ+ÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿëëëøìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿóóóÿéééÿÿ j ÿš ÿ› ÿœ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¤ ÿ¤ ÿ] ÿ ÿJÿ› ÿ¤ ÿ¤ ÿ£ ÿ£ ÿ£ ÿ£ ÿ¢ ÿ¡ ÿ¡ ÿ  ÿž ÿž ÿ ÿ› ÿš ÿ™ ÿ ‚ÿ&ÿÿÿWÿ ‹ÿ ÿ ‹ÿ ‰ÿ †ÿ„ÿÿÿ|ÿyÿvÿsÿpÿlÿjÿ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿñÝÝÝÿˆˆˆÄÿ€ÿëëëøëëëÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿžžžÿ'ÿ ‘ ÿš ÿ› ÿœ ÿž ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ£ ÿ£ ÿ  ÿ ` ÿÿ ; ÿ£ ÿ£ ÿ£ ÿ£ ÿ£ ÿ¢ ÿ¢ ÿ¢ ÿ¡ ÿ  ÿŸ ÿŸ ÿž ÿœ ÿœ ÿš ÿš ÿ˜ ÿ – ÿ ŽÿÿÿÿÿUÿ…ÿ ‡ÿ…ÿƒÿ€ÿ}ÿ{ÿwÿtÿrÿoÿkÿjÿ)ÿ+ÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿñÝÝÝÿ‡‡‡Äÿ€ÿëëëøëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿ585ÿ M ÿ™ ÿš ÿ› ÿœ ÿž ÿž ÿŸ ÿ  ÿ¡ ÿ¡ ÿ¢ ÿ¢ ÿ¢ ÿ ~ ÿ9ÿ ÿÿ F ÿ£ ÿ£ ÿ¢ ÿ¢ ÿ¢ ÿ¡ ÿ¡ ÿ  ÿ  ÿ  ÿŸ ÿ ÿ ÿœ ÿš ÿ™ ÿ˜ ÿ — ÿ • ÿ ” ÿÿÿÿÿ ÿÿRÿ€ÿÿÿ|ÿyÿvÿtÿpÿmÿjÿ[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿñÝÝÝÿ‡‡‡Äÿ€ÿëëëøëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿñññÿòòòÿòòòÿËËËÿÿ ÿš ÿš ÿ› ÿœ ÿ ÿž ÿž ÿ  ÿ  ÿ¡ ÿ” ÿ F ÿ,ÿ ÿÿÿH ÿ¢ ÿ¢ ÿ¢ ÿ¡ ÿ¡ ÿ  ÿ  ÿŸ ÿŸ ÿž ÿž ÿ ÿœ ÿš ÿ™ ÿ™ ÿ — ÿ • ÿ ” ÿ ’ ÿ)ÿÿÿÿÿÿ ÿÿOÿyÿ{ÿxÿtÿrÿoÿlÿjÿ(ÿ*ÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿñÝÝÝÿ‡‡‡Äÿ€ÿêêêøëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿkmkÿ 5 ÿ— ÿš ÿš ÿ› ÿœ ÿ ÿ ÿž ÿ› ÿ _ ÿ+ÿ+ÿÿŠŠŠÿMMMÿÿ E ÿ¡ ÿ¡ ÿ¡ ÿ  ÿ  ÿ  ÿŸ ÿž ÿž ÿ ÿœ ÿ› ÿš ÿ™ ÿ™ ÿ — ÿ – ÿ ” ÿ “ ÿ ‘ ÿ0ÿ*ÿÿÿÿÿÿÿ ÿÿHÿrÿtÿqÿmÿjÿZÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿêêêøêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿçççÿÿ e ÿ˜ ÿ™ ÿš ÿ› ÿœ ÿ ÿ } ÿ0ÿ,ÿ " ÿGJGÿØØØÿñññÿÆÆÆÿÿ@ ÿ  ÿŸ ÿ  ÿŸ ÿŸ ÿž ÿž ÿ ÿ ÿœ ÿ› ÿš ÿ™ ÿ˜ ÿ — ÿ – ÿ ” ÿ “ ÿ ‘ ÿ ÿ8ÿ<ÿ ÿÿÿÿÿÿÿÿ ÿÿ@ÿjÿlÿjÿ%ÿ!ÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿêêêøêêêÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿñññÿñññÿ¢¢¢ÿ$ÿ Ž ÿ˜ ÿ ™ ÿš ÿ ‘ ÿ E ÿ%ÿ+ÿ#ÿ­­­ÿñññÿñññÿñññÿðððÿmmmÿ=ÿŸ ÿž ÿž ÿž ÿž ÿ ÿ ÿœ ÿ› ÿš ÿš ÿ ™ ÿ˜ ÿ — ÿ • ÿ ” ÿ “ ÿ ‘ ÿ ÿ Žÿ<ÿMÿ  ÿÿÿÿÿÿÿÿÿÿ ÿÿ:ÿRÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿêêêøêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿ9;9ÿ H ÿ – ÿ– ÿ f ÿ ÿ%ÿÿoqoÿèèèÿðððÿðððÿðððÿðððÿðððÿÈÈÈÿ9ÿ ÿ ÿœ ÿ ÿœ ÿœ ÿ› ÿš ÿš ÿ™ ÿ ˜ ÿ— ÿ – ÿ • ÿ ” ÿ “ ÿ ‘ ÿ ÿ Žÿ ÿ;ÿRÿ  ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿéééøêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿÌÌÌÿÿ P ÿ , ÿÿ  ÿ:<:ÿÍÍÍÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿÚÚÚÿ5ÿœ ÿœ ÿ› ÿ› ÿ› ÿš ÿš ÿ™ ÿ ˜ ÿ˜ ÿ — ÿ – ÿ • ÿ ” ÿ ’ ÿ ‘ ÿ ÿ Žÿ ÿ Œÿ:ÿUÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿéééøéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿðððÿqqqÿÿÿÿSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿéééøéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿ3ÿ™ ÿ ˜ ÿ ˜ ÿ˜ ÿ˜ ÿ˜ ÿ — ÿ – ÿ • ÿ • ÿ ” ÿ ’ ÿ ’ ÿ ‘ ÿ ÿ Žÿ ÿ ‹ÿ ‰ÿ ˆÿAÿNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿèèèøéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿîîîÿîîîÿ7ÿ˜ ÿ — ÿ — ÿ – ÿ — ÿ – ÿ • ÿ ” ÿ ” ÿ “ ÿ ’ ÿ ‘ ÿ ÿ ÿ Žÿ Œÿ ‹ÿ ‰ÿ ˆÿ †ÿFÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿèèèøèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿ:ÿ • ÿ • ÿ • ÿ • ÿ ” ÿ ” ÿ ” ÿ ’ ÿ ’ ÿ ‘ ÿ ÿ ÿ Žÿ ÿ ‹ÿ Šÿ ‰ÿ ‡ÿ†ÿ„ÿIÿBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿèèèøèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿ=ÿ “ ÿ ” ÿ ” ÿ “ ÿ ’ ÿ ’ ÿ ’ ÿ ‘ ÿ ÿ ÿ Žÿ Žÿ Œÿ ‹ÿ Šÿ ‰ÿ ‡ÿ†ÿ„ÿ‚ÿMÿ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿ!B ÿ Ž ÿ ’ ÿ ‘ ÿ ‘ ÿ ‘ ÿ ÿ ÿ ÿ Žÿ Žÿ Œÿ Œÿ Šÿ ‰ÿ ˆÿ ‡ÿ…ÿ„ÿ‚ÿÿQÿ6ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿ(G'ÿ ‰ÿ ÿ ÿ ÿ ÿ Žÿ ÿ ÿ Œÿ Œÿ Šÿ ‰ÿ ˆÿ ‡ÿ†ÿ„ÿƒÿÿ€ÿ~ÿVÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøçççÿçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿìììÿìììÿìììÿìììÿ6J6ÿ ~ÿ Œÿ Šÿ ˆÿ …ÿ ƒÿÿ~ÿ{ÿxÿtÿmÿdÿ\ÿTÿMÿFÿ?ÿ9ÿ2ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿçççøçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿqxqÿ@ÿ@ÿ!A!ÿ#A#ÿ'B'ÿ)C)ÿ-C-ÿ/C/ÿ3D2ÿÿÿÿÿ  ÿ  ÿ  ÿ  ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿ€ÿæææøæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿêêêÿêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÜÜÜÿ‡‡‡Äÿÿæææ÷æææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿêêêÿêêêÿêêêÿêêêÿêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÜÜÜÿ†††Äÿcÿáááßæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ///ÙÜÜÜÿaaaÉá0ÿÃÃÃÅåååÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿéééÿéééÿéééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlllÃÜÜÜÿ'''â¯ôjjjÇåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÃÃÉÛÛÛóþ|sÿÆÆÆÆåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿèèèÿèèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbbbÅÜÜÜÿÃý4 ÉñÃÃÃÅåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿèèèÿèèèÿèèèÿèèèÿèèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbbbÅÛÛÛñÎÎÎÓýÃÿ```ɽ½½ÄÞÞÞÛäääðãããñäääñäääñäääñäääñäääñäääñåååñåååñåååñåååñåååñåååñåååñæææñæææñæææñæææñæææñæææñæææñæææñæææñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñçççñæææñæææñæææñæææñæææñæææñæææñæææñæææñæææñ!!!ñ!!!ñ!!!ñ!!!ñ ñ ñ ññññññññññññññññññññññññññññññññññññññññññññññññð---ÚlllÃÃÃÃÉÜÜÜÿÍÍÍÒåÛ } ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÿçççÿçççÿçççÿæææÿæææÿæææÿæææÿæææÿæææÿåååÿåååÿåååÿåååÿåååÿäääÿäääÿäääÿäääÿäääÿãããÿãããÿãããÿãããÿâââÿâââÿâââÿâââÿáááÿáááÿáááÿáááÿàààÿàààÿàààÿàààÿßßßÿßßßÿßßßÿßßßÿÞÞÞÿÞÞÞÿÞÞÞÿÝÝÝÿÝÝÝÿÝÝÝÿÝÝÝÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÜÜÜÿÛÛÛóŠŠŠ¼üØ. '[wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx•••Ä•••Ä”””Ä”””Ä”””Ä”””Ä“““Ä“““Ä“““Ä‘‘‘Ä‘‘‘Ä‘‘‘Ä‘‘‘Ä‘‘‘ÄÄÄÄÄÄÄÄÄÄÄÄÄÄŒŒŒÄŒŒŒÄŒŒŒÄŒŒŒÄŒŒŒÄŒŒŒÄŒŒŒÄ‹‹‹Ä‹‹‹Ä‰‰‰Ä‰‰‰ÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄˆˆˆÄ‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä‡‡‡Ä†††ÄaaaÊ&&&ãÿþ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàªu2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøðàÀÀÀÀÀ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÀÀÀÀààðüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(@€ € 9@@@@@@@@@@@@@@@@@@@@@@@@@@@GGGÖGGGÖGGGÖGGGÖFFFÖFFFÖEEEÖEEEÖCCCÖCCCÖCCCÖBBBÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖAAAÖÞÁ< –ë|||ÁŽŽŽÀŽŽŽÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ¢¢¢À¢¢¢À   À   À   ÀŸŸŸÀŸŸŸÀŸŸŸÀžžžÀžžžÀžžžÀœœœÀœœœÀœœœÀ›››À›››À›››À›››À›››À›››À›››À›››À›››À›››À›››À›››À›››ÀªªªÁÚÚÚë¿¿¿Ì(((à:˜–––¿ÞÞÞ÷àààÿàààÿàààÿáááÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿâââÿâââÿâââÿâââÿâââÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷’’’¿¿¿¿Ì¿ìààà÷àààÿàààÿáááÿáááÿáááÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÚÚÚëÝ9}}}Áàààÿáááÿáááÿâââÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿãããÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÁAAAÖ@Àáááÿâââÿâââÿâââÿãããÿãããÿãããÿãããÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿåååÿäääÿäääÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@ÀâââÿâââÿãããÿãããÿãããÿäääÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿæææÿÀÄÀÿv‹vÿGnGÿ*]*ÿPÿOÿPÿ2ÿ0ÿ/ÿ-ÿ+ÿ)ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ @’’’Àãããÿãããÿãããÿäääÿäääÿäääÿåååÿåååÿåååÿæææÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿçççÿ¿À¿ÿBYBÿCÿUÿgÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿbÿ;ÿ"ÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ @’’’ÀãããÿäääÿäääÿäääÿåååÿåååÿæææÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿÃÄÃÿCÿ^ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿMÿ&ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ @“““ÀäääÿäääÿåååÿåååÿæææÿæææÿæææÿçççÿçççÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿèèèÿèèèÿéééÿéééÿËËËÿ2ÿ ? ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@”””Àåååÿåååÿæææÿæææÿæææÿçççÿçççÿçççÿèèèÿèèèÿèèèÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿéééÿ©©©ÿ?ÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿXÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@–––ÀåååÿæææÿæææÿçççÿçççÿçççÿèèèÿèèèÿèèèÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿEZEÿeÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ%ÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@–––ÀæææÿçççÿçççÿçççÿèèèÿèèèÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿÛÛÛÿDÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿHÿ  ÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@———Àçççÿçççÿèèèÿèèèÿéééÿéééÿéééÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿ……ÿSÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿhÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@———Àçççÿèèèÿèèèÿéééÿéééÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿíííÿ/H/ÿhÿjÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ7ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@˜˜˜ÀèèèÿèèèÿéééÿéééÿêêêÿêêêÿëëëÿëëëÿìììÿìììÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿÆÆÆÿAÿjÿjÿjÿjÿjÿjÿjÿjÿjÿ_ÿ  ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@˜˜˜ÀéééÿéééÿêêêÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿîîîÿîîîÿakaÿYÿjÿjÿjÿjÿjÿjÿjÿjÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿ›››ÀAAAÖ@šššÀéééÿêêêÿêêêÿëëëÿëëëÿìììÿìììÿíííÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿïïïÿæææÿ";"ÿiÿjÿjÿjÿjÿjÿjÿQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿ›››ÀAAAÖ@›››Àêêêÿêêêÿëëëÿëëëÿìììÿìììÿíííÿíííÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿðððÿ¦¦¦ÿ F ÿoÿnÿmÿlÿjÿiÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿ›››ÀAAAÖ@›››Àêêêÿëëëÿìììÿìììÿíííÿíííÿîîîÿîîîÿîîîÿïïïÿïïïÿðððÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿñññÿðððÿ4U4ÿuÿtÿsÿrÿpÿYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿ›››ÀAAAÖ@›››ÀëëëÿìììÿìììÿíííÿíííÿîîîÿîîîÿïïïÿïïïÿðððÿðððÿðððÿñññÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿòòòÿñññÿñññÿlwlÿrÿzÿxÿwÿuÿJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿœœœÀAAAÖ@œœœÀëëëÿìììÿíííÿíííÿîîîÿîîîÿïïïÿïïïÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿóóóÿòòòÿòòòÿòòòÿXpXÿ~ÿÿ~ÿ|ÿ{ÿgÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿœœœÀAAAÖ@œœœÀìììÿíííÿíííÿîîîÿîîîÿïïïÿðððÿðððÿñññÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿóóóÿóóóÿàààÿeneÿOÿ„ÿ„ÿƒÿÿ€ÿ|ÿ.ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿœœœÀBBBÖ@žžžÀíííÿíííÿîîîÿîîîÿïïïÿðððÿðððÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿóóóÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿôôôÿBÿ qÿ ‰ÿ ‰ÿ ˆÿ ‡ÿ†ÿ„ÿ‚ÿ€ÿDÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿžžžÀBBBÖ@žžžÀíííÿîîîÿîîîÿïïïÿðððÿðððÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿôôôÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿõõõÿWÿ Žÿ Žÿ ÿ Œÿ Œÿ Šÿ ‰ÿ ‡ÿ„ÿKÿ!ÿ!!!ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿžžžÀCCCÖ@ŸŸŸÀíííÿîîîÿïïïÿïïïÿðððÿñññÿñññÿòòòÿòòòÿóóóÿóóóÿôôôÿôôôÿõõõÿõõõÿõõõÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿöööÿ]ÿ ‘ ÿ ‘ ÿ ‘ ÿ ‘ ÿ ÿ Žÿ Œÿ Šÿ ˆÿUÿ0ÿ"""ÿ!!!ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿžžžÀCCCÖ@ŸŸŸÀîîîÿïïïÿïïïÿðððÿñññÿñññÿòòòÿòòòÿóóóÿôôôÿôôôÿõõõÿõõõÿöööÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿöööÿ bÿ • ÿ • ÿ • ÿ ” ÿ “ ÿ ’ ÿ ÿ Žÿ Œÿcÿ4ÿ###ÿ"""ÿ!!!ÿÿÿ &ÿ!ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿžžžÀCCCÖ@   Àîîîÿïïïÿðððÿðððÿñññÿòòòÿòòòÿóóóÿôôôÿôôôÿõõõÿõõõÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿ§ª§ÿôôôÿøøøÿøøøÿøøøÿøøøÿ÷÷÷ÿ dÿ ˜ ÿ ˜ ÿ˜ ÿ— ÿ – ÿ • ÿ ” ÿ ’ ÿ ÿzÿ'ÿ$$$ÿ"""ÿ!!!ÿÿ8ÿkÿWÿ  ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿžžžÀCCCÖ@   Àïïïÿïïïÿðððÿñññÿñññÿòòòÿóóóÿóóóÿôôôÿõõõÿõõõÿöööÿöööÿ÷÷÷ÿ÷÷÷ÿøøøÿ¥«¥ÿX ÿ!Q!ÿk{kÿéééÿùùùÿøøøÿøøøÿcÿ› ÿ› ÿ› ÿš ÿ™ ÿ™ ÿ – ÿ • ÿ “ ÿ Šÿÿ$$$ÿÿ)ÿbÿxÿsÿmÿ5ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿŸŸŸÀCCCÖ@   Àïïïÿðððÿðððÿñññÿòòòÿòòòÿóóóÿôôôÿõõõÿõõõÿöööÿöööÿ÷÷÷ÿøøøÿøøøÿùùùÿ*V)ÿ ” ÿ — ÿ … ÿPÿ\o\ÿçççÿùùùÿcÿž ÿž ÿž ÿzÿ)W'ÿ a ÿ™ ÿ— ÿ • ÿ ‘ ÿÿ(ÿLÿƒÿ€ÿ{ÿuÿpÿiÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿŸŸŸÀCCCÖ@¢¢¢Àïïïÿðððÿñññÿñññÿòòòÿóóóÿôôôÿôôôÿõõõÿöööÿöööÿ÷÷÷ÿøøøÿøøøÿùùùÿ—¡–ÿ t ÿ – ÿ™ ÿ› ÿ ÿ ÿWÿ]s\ÿ`ÿ  ÿ¡ ÿmÿCFBÿfedÿ441ÿKÿš ÿ˜ ÿ • ÿ@ÿ ÿ Œÿ ‡ÿƒÿ~ÿyÿsÿmÿXÿ  ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àïïïÿðððÿñññÿòòòÿòòòÿóóóÿôôôÿõõõÿõõõÿöööÿ÷÷÷ÿ÷÷÷ÿøøøÿùùùÿøøøÿ&Z%ÿ – ÿ™ ÿ› ÿž ÿŸ ÿ  ÿ¡ ÿ— ÿ‹ÿ£ ÿ¢ ÿ1>/ÿ`_\ÿ‰ˆ‡ÿB@>ÿ6B2ÿœ ÿš ÿ— ÿ • ÿ ‘ ÿ ÿ ‰ÿ…ÿ€ÿ{ÿuÿoÿjÿ/ÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿðððÿñññÿòòòÿóóóÿóóóÿôôôÿõõõÿöööÿöööÿ÷÷÷ÿøøøÿøøøÿùùùÿˆšˆÿ ~ ÿ ˜ ÿ› ÿž ÿ  ÿ¡ ÿ¢ ÿ£ ÿ£ ÿ¤ ÿ¤ ÿ¥ ÿ4E2ÿ[ZXÿ|zÿQPNÿ9G6ÿž ÿœ ÿ™ ÿ — ÿ ” ÿ ÿ ‹ÿ ‡ÿƒÿ}ÿwÿrÿkÿdÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿðððÿñññÿòòòÿóóóÿôôôÿôôôÿõõõÿöööÿ÷÷÷ÿ÷÷÷ÿøøøÿùùùÿøøøÿ!^!ÿ— ÿš ÿ ÿ  ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ¦ ÿxÿ472ÿÿNPLÿ{ÿ  ÿž ÿ› ÿ ˜ ÿ • ÿ ’ ÿ ÿ ‰ÿ„ÿÿzÿtÿmÿjÿ<ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿñññÿñññÿòòòÿóóóÿôôôÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿøøøÿùùùÿ|”|ÿ … ÿ™ ÿœ ÿŸ ÿ¡ ÿ¢ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ§ ÿ¦ÿ§ ÿ¦ ÿˆÿ$ÿ ÿ£ ÿ¡ ÿŸ ÿœ ÿš ÿ — ÿ ” ÿ ÿ ‹ÿ †ÿÿ|ÿuÿoÿjÿiÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿñññÿñññÿòòòÿóóóÿôôôÿõõõÿõõõÿöööÿ÷÷÷ÿøøøÿøøøÿöööÿbÿ— ÿ› ÿ ÿ  ÿ¢ ÿ¤ ÿ¥ ÿ¦ÿ¦ÿ§ ÿ§ÿ¨ÿ§ÿ§ ÿ¢ ÿ&ÿ  ÿ¤ ÿ¢ ÿ¡ ÿž ÿ› ÿ™ ÿ • ÿ ‘ ÿ Œÿ ‡ÿ‚ÿ|ÿvÿpÿjÿ`ÿÿ  ÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿñññÿñññÿòòòÿóóóÿôôôÿõõõÿõõõÿöööÿ÷÷÷ÿøøøÿøøøÿn‹nÿ ‹ ÿ™ ÿœ ÿž ÿ¡ ÿ¤ ÿ¥ ÿ¦ÿ§ÿ§ÿ¨ÿ¨ÿ¨ ÿ¨ÿ¨ÿ¤ÿ&ÿ¡ ÿ¥ ÿ£ ÿ¢ ÿŸ ÿœ ÿ™ ÿ – ÿ ’ ÿ Žÿ ‰ÿ„ÿ~ÿxÿqÿFÿÿ  ÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿñññÿñññÿòòòÿóóóÿôôôÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿøøøÿÍÑÍÿ3_2ÿ{ ÿ ÿ  ÿ¢ ÿ¤ ÿ¥ ÿ§ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¦ÿ&ÿŸ ÿ¥ ÿ¤ ÿ¢ ÿ  ÿ ÿš ÿ — ÿ ’ ÿ Žÿ ‰ÿ„ÿÿjÿ5ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿðððÿñññÿòòòÿóóóÿôôôÿôôôÿõõõÿöööÿ÷÷÷ÿ÷÷÷ÿøøøÿùùùÿúúúÿˆ•ˆÿ!S!ÿ“ ÿ£ ÿ¤ ÿ¦ÿ§ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ§ÿ&ÿœ ÿ¦ÿ¤ ÿ£ ÿ¡ ÿž ÿ› ÿ˜ ÿ ” ÿ ÿ Šÿ„ÿWÿ"ÿ  ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àðððÿðððÿñññÿòòòÿóóóÿóóóÿôôôÿõõõÿöööÿöööÿ÷÷÷ÿøøøÿùùùÿùùùÿúúúÿëëëÿ^u^ÿiÿ£ ÿ¦ ÿ§ÿ¨ÿ¨ÿ¨ÿ§ÿ§ÿ§ÿ¨ÿ¨ÿ&ÿ˜ ÿ¦ ÿ¥ ÿ£ ÿ¡ ÿž ÿ› ÿ— ÿ ” ÿ ÿ ‹ÿ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿŸŸŸÀEEEÖ@¢¢¢Àïïïÿðððÿñññÿòòòÿòòòÿóóóÿôôôÿõõõÿõõõÿöööÿ÷÷÷ÿ÷÷÷ÿøøøÿùùùÿùùùÿúúúÿúúúÿÜÞÜÿÿgedÿXWUÿbÿ ÿ™ ÿ • ÿ ‘ ÿ Œÿ…ÿÿwÿoÿgÿÿÿÿÿÿÿÿ ÿ ÿÿ,,,Þ€€€Åpêêêäðððÿñññÿòòòÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿùùùÿÐÖÐÿsÿš ÿž ÿ¡ ÿ£ ÿ¥ ÿ¥ ÿ¦ÿ¦ ÿ¦ ÿ!rÿ,3+ÿ(V%ÿ¢ ÿŸ ÿœ ÿ˜ ÿ “ ÿ Žÿ ˆÿÿzÿqÿjÿCÿÿÿÿÿÿÿ ÿ ÿÿ,,,Þ€€€Åpêêêäðððÿòòòÿóóóÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿùùùÿ@x?ÿ˜ ÿœ ÿŸ ÿ¢ ÿ¤ ÿ¦ ÿ§ ÿ§ ÿ§ÿ§ÿ§ÿ9ÿ¢ ÿ£ ÿ  ÿž ÿ™ ÿ • ÿ ÿ Šÿƒÿ|ÿtÿjÿYÿÿÿÿÿÿÿ ÿ ÿÿ,,,Þ€€€Åpêêêäðððÿòòòÿóóóÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿãåãÿgÿš ÿž ÿ¡ ÿ£ ÿ¥ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ ÿ§ ÿ ; ÿ¢ ÿ¤ ÿ¢ ÿž ÿ› ÿ – ÿ ‘ ÿ Œÿ„ÿ}ÿsÿAÿ ÿÿÿÿÿÿÿ ÿ ÿÿ,,,Þ€€€Åpêêêäðððÿñññÿòòòÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿùùùÿ©¶©ÿ)d'ÿ” ÿ¢ ÿ¤ ÿ¦ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ"<"ÿŸ ÿ¥ ÿ£ ÿ  ÿœ ÿ— ÿ “ ÿ Œÿ†ÿmÿ/ÿ # ÿÿÿÿÿÿÿÿ ÿ ÿÿ,,,Þ€€€Åpêêêäðððÿñññÿòòòÿóóóÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿùùùÿôôôÿl†lÿpÿ¤ ÿ¦ÿ¨ÿ¨ÿ¨ ÿ§ ÿ§ÿ¨ÿ%<%ÿœ ÿ¦ ÿ£ ÿ¡ ÿ ÿ™ ÿ “ ÿ ÿ\ÿ ÿÿÿÿÿÿÿÿÿÿ ÿ ÿÿ,,,Þ€€€Åpêêêäðððÿñññÿòòòÿóóóÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿùùùÿùùùÿúúúÿæçæÿ*O*ÿ¤ ÿ¨ ÿ¨ÿ§ÿ¦ ÿ§ÿ¨ÿ(@'ÿ” ÿ¦ ÿ£ ÿ  ÿ ÿ ˜ ÿ “ ÿ ÿ~ÿEÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿ,,,Þ€€€Åpêêêäðððÿñññÿòòòÿóóóÿôôôÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿøøøÿèèèÿB^Bÿ…ÿ§ ÿ¨ ÿ¨ÿ§ÿ¦ ÿ§ÿ¨ÿ+F+ÿ‰ ÿ¦ ÿ¤ ÿ¡ ÿ ÿ™ ÿ “ ÿ ÿ †ÿÿYÿ+ÿÿÿÿÿÿÿ ÿ ÿ ÿÿ,,,Þ€€€Åpêêêäïïïÿðððÿñññÿòòòÿóóóÿôôôÿõõõÿöööÿöööÿ÷÷÷ÿºÁºÿ)c'ÿž ÿ¥ ÿ§ÿ¨ÿ¨ÿ¨ÿ§ÿ¨ÿ¨ÿ-K,ÿ  ÿ¥ ÿ£ ÿ  ÿœ ÿ— ÿ “ ÿ Œÿ…ÿ~ÿuÿlÿKÿ ' ÿÿÿÿÿ ÿ ÿ ÿÿ+++Þ€€€Åpêêêäïïïÿðððÿñññÿñññÿòòòÿóóóÿôôôÿõõõÿõõõÿs‘rÿuÿ  ÿ¢ ÿ¥ ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ ÿ/N.ÿ w ÿ¤ ÿ¢ ÿŸ ÿ› ÿ – ÿ ‘ ÿ ‹ÿ„ÿ|ÿuÿkÿiÿ ÿÿÿÿÿ ÿ ÿÿÿ+++Þ€€€Åpéééäîîîÿïïïÿðððÿñññÿòòòÿòòòÿóóóÿôôôÿóóóÿ%e$ÿš ÿž ÿ¢ ÿ¤ ÿ¦ ÿ¦ÿ§ÿ§ÿ¨ÿ¨ÿ¢ ÿ3G2ÿ B ÿŸ ÿ¡ ÿž ÿš ÿ • ÿ ÿ ‰ÿƒÿ{ÿsÿjÿCÿ*ÿÿÿÿ ÿ ÿ ÿÿÿ***Þ~~~Åpéééäîîîÿïïïÿïïïÿðððÿñññÿòòòÿòòòÿóóóÿôôôÿœªœÿ~ ÿœ ÿ  ÿ£ ÿ¥ ÿ¦ ÿ§ ÿ§ ÿ§ ÿ}ÿ-?-ÿ2K2ÿ1ÿ#ÿO ÿš ÿ˜ ÿ “ ÿ Žÿ ‡ÿ€ÿyÿpÿiÿ"ÿÿÿÿÿ ÿ ÿ ÿÿÿ***Þ~~~Åpèèèäíííÿîîîÿïïïÿïïïÿðððÿñññÿòòòÿòòòÿóóóÿóóóÿ;g;ÿ› ÿž ÿ¡ ÿ£ ÿ¤ ÿ¥ ÿ¦ ÿiÿ*=*ÿ„ÿ¤ ÿ£ ÿ’ ÿ:ÿ # ÿ ‡ ÿ ‘ ÿ Œÿ…ÿ~ÿvÿmÿ?ÿ ÿÿÿÿÿ ÿ ÿÿÿÿ***Þ~~~ÅpçççäìììÿíííÿîîîÿïïïÿïïïÿðððÿñññÿñññÿòòòÿòòòÿÌÎÌÿiÿœ ÿŸ ÿ¡ ÿ£ ÿ£ ÿƒÿEÿž ÿ£ ÿ¢ ÿ  ÿž ÿ› ÿ yÿÿLÿ „ÿ‚ÿ{ÿsÿhÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿ***Þ}}}Åpçççäìììÿìììÿíííÿîîîÿîîîÿïïïÿðððÿðððÿñññÿñññÿñññÿ^x^ÿ ÿœ ÿž ÿ– ÿOÿ(ÿ\ÿ¢ ÿ  ÿŸ ÿž ÿ› ÿ˜ ÿ ” ÿÿÿ ' ÿHÿsÿoÿ:ÿ  ÿÿÿÿÿ ÿ ÿ ÿÿÿÿ)))Þ}}}Åpæææäëëëÿìììÿìììÿíííÿîîîÿîîîÿïïïÿïïïÿðððÿðððÿðððÿèèèÿ$\#ÿ— ÿXÿ8ÿŸ¥ŸÿÞÞÞÿWÿž ÿž ÿœ ÿš ÿ— ÿ ” ÿ ‘ ÿ9ÿÿÿÿ " ÿ>ÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿ)))Þ}}}Åpåååäêêêÿëëëÿëëëÿìììÿíííÿíííÿîîîÿîîîÿïïïÿïïïÿïïïÿðððÿ”Ÿ”ÿ)@)ÿt„tÿíííÿðððÿðððÿ&a$ÿ› ÿš ÿ ˜ ÿ — ÿ ” ÿ ÿ Œÿ6ÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿ(((Þ}}}Åpääääéééÿêêêÿëëëÿëëëÿìììÿìììÿíííÿíííÿîîîÿîîîÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿïïïÿîîîÿ0r/ÿ — ÿ – ÿ ” ÿ ’ ÿ ÿ ‹ÿ ˆÿ0ÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿ(((Þ}}}Åpääääèèèÿéééÿêêêÿêêêÿëëëÿëëëÿìììÿìììÿíííÿíííÿíííÿíííÿíííÿîîîÿîîîÿîîîÿíííÿíííÿ6w6ÿ ’ ÿ ‘ ÿ ÿ ÿ Šÿ ‡ÿƒÿ+ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿ(((Þ}}}ÅpãããäçççÿèèèÿéééÿéééÿêêêÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿìììÿUTÿ!m ÿ$k"ÿ&j%ÿFÿAÿ<ÿ7ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿ(((Þ}}}ÅgßßßÝçççÿçççÿèèèÿèèèÿéééÿéééÿêêêÿêêêÿêêêÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿëëëÿêêêÿêêêÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿ000ØsssÄ ›››¼æææÿæææÿçççÿçççÿèèèÿèèèÿéééÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿéééÿéééÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿ”””¿Ã!!!z———»ÛÛÛØßßßÞßßßÞáááÞáááÞâââÞâââÞâââÞãããÞãããÞãããÞãããÞãããÞãããÞãããÞãããÞãããÞãããÞâââÞâââÞâââÞ:::Þ:::Þ999Þ888Þ777Þ777Þ555Þ444Þ333Þ222Þ111Þ000Þ///Þ---Þ,,,Þ***Þ***Þ)))Þ(((Þ(((Þ000Ø’’’ÀŠŠŠÀT hppppppppppppppppppppŠŠŠÅŠŠŠÅŠŠŠÅ‰‰‰Å‰‰‰Å‡‡‡Å‡‡‡Å†††Å†††Å………Å„„„Å„„„Å‚‚‚ÅÅ€€€Å€€€Å~~~Å}}}Å}}}Å}}}ÅsssÄÃRÿÿÿÀ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Àÿÿÿ( @ Neee…jjjˆlllˆlllˆnnnˆnnnˆnnnˆnnnˆnnnˆnnnˆnnnˆnnnˆnnnˆnnnˆqqqÄqqqÄoooÄoooÄnnnÄmmmÄkkkÄkkkÄkkkÄkkkÄkkkÄkkkÄkkkÄqqqÂŠŠŠªNPÛÛÛäàààÿáááÿáááÿâââÿâââÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿãããÿâââÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿ'''áŠŠŠ©ggg…áááÿâââÿâââÿãããÿãããÿäääÿäääÿåååÿåååÿåååÿåååÿåååÿåååÿäääÿÞÞÞÿ  ÿ  ÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿqqqÂpppˆâââÿãããÿäääÿåååÿåååÿæææÿæææÿæææÿæææÿçççÿvŽvÿbÿaÿ^ÿ a ÿhÿrÿuÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿkkkÄrrrˆäääÿåååÿåååÿæææÿçççÿçççÿèèèÿèèèÿèèèÿèèèÿS|Rÿ Žÿ Žÿ Žÿ Œÿ Šÿ ‡ÿ„ÿ*ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿkkkÄtttˆåååÿæææÿçççÿèèèÿèèèÿéééÿéééÿêêêÿêêêÿêêêÿT€Sÿ “ ÿ “ ÿ ’ ÿ ‘ ÿ ÿ ÿ ‰ÿ>ÿÿÿ ÿ ÿÿÿÿÿÿÿÿkkkÄtttˆçççÿèèèÿèèèÿéééÿêêêÿÀÁÀÿéééÿëëëÿëëëÿìììÿSƒRÿ˜ ÿ˜ ÿ— ÿ – ÿ ” ÿ ‘ ÿ ŽÿFÿÿÿ  ÿ0ÿ]ÿÿÿÿÿÿÿkkkÄvvvˆèèèÿéééÿêêêÿëëëÿר×ÿ[ÿ#b"ÿo…oÿäääÿíííÿR„Pÿœ ÿœ ÿ› ÿš ÿ˜ ÿ – ÿ ’ ÿFÿÿ $ ÿPÿyÿrÿ[ÿÿÿÿÿÿkkkÄxxxˆéééÿêêêÿëëëÿìììÿPuOÿ ” ÿ˜ ÿ’ ÿ!eÿl†kÿL‚LÿŸ ÿ  ÿ3a3ÿ@I?ÿ>ÿ— ÿ – ÿQÿ;ÿÿ„ÿ}ÿvÿnÿ<ÿÿÿÿÿkkkÄyyyˆêêêÿëëëÿíííÿÐÒÐÿmÿ ˜ ÿ› ÿž ÿ  ÿ› ÿwÿ£ ÿ‡ÿPPNÿ™—•ÿ??<ÿ y ÿ™ ÿ – ÿ ’ ÿ ÿ ‡ÿ€ÿzÿrÿiÿÿÿÿÿkkkÄyyyˆìììÿíííÿîîîÿEtEÿ— ÿ› ÿž ÿ¡ ÿ¢ ÿ£ ÿ¤ ÿ¤ ÿŒÿEGDÿZZXÿRSOÿ ~ ÿœ ÿ ™ ÿ • ÿ ÿ Šÿ„ÿ|ÿuÿlÿOÿÿÿÿkkkÄ{{{ˆíííÿîîîÿÆËÆÿtÿš ÿž ÿ  ÿ£ ÿ¤ ÿ¥ ÿ¦ ÿ¦ ÿ¦ ÿ$m ÿ,5+ÿ iÿ¡ ÿž ÿ› ÿ — ÿ ’ ÿ Œÿ †ÿÿwÿoÿjÿ#ÿÿÿmmmÄ}}}ˆîîîÿïïïÿ;t;ÿ˜ ÿœ ÿ  ÿ¢ ÿ¥ ÿ¦ ÿ§ÿ§ÿ§ÿ§ÿ§ÿ9ÿ¥ ÿ£ ÿ  ÿœ ÿ ™ ÿ ” ÿ Žÿ ˆÿÿyÿqÿiÿ/ÿÿÿnnnĈîîîÿäåäÿ`ÿš ÿž ÿ¡ ÿ¤ ÿ¦ ÿ§ÿ¨ ÿ¨ ÿ¨ÿ¨ ÿ§ ÿ:ÿ¦ ÿ¤ ÿ¢ ÿž ÿš ÿ • ÿ ÿ ‰ÿƒÿ{ÿaÿ(ÿÿ ÿÿnnnĈïïïÿñññÿÍÑÍÿ:m8ÿ…ÿ¢ ÿ¥ ÿ§ ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ¨ÿ9ÿ§ ÿ¥ ÿ£ ÿŸ ÿ› ÿ – ÿ ‘ ÿ ‹ÿƒÿLÿ#ÿ  ÿ ÿ ÿÿnnnĈðððÿñññÿóóóÿôôôÿ›¨›ÿ,q*ÿŸ ÿ§ÿ¨ÿ¨ÿ§ÿ§ÿ§ÿ¨ÿ8ÿ§ÿ¥ ÿ£ ÿ  ÿœ ÿ — ÿ ‘ ÿ Œÿ:ÿ  ÿÿÿ ÿ ÿÿoooĈðððÿòòòÿóóóÿõõõÿöööÿêêêÿ(J(ÿ¥ ÿ¨ÿ¨ÿ§ ÿ¦ ÿ§ÿ¨ÿ 7 ÿ§ ÿ¥ ÿ£ ÿ  ÿœ ÿ— ÿ ’ ÿ Œÿyÿ@ÿÿÿ ÿ ÿÿoooĈðððÿòòòÿóóóÿõõõÿÌÎÌÿ/[.ÿ—ÿ§ ÿ¨ ÿ¨ÿ§ÿ¦ÿ§ ÿ¨ÿ$;#ÿ¤ÿ¥ ÿ£ ÿ  ÿœ ÿ — ÿ ‘ ÿ ‹ÿ„ÿ|ÿTÿ)ÿ ÿ ÿÿoooĈðððÿòòòÿóóóÿˆ›ˆÿlÿ£ ÿ¥ ÿ§ÿ¨ÿ¨ÿ¨ÿ§ÿ¨ÿ¨ÿ(>'ÿ  ÿ¥ ÿ£ ÿŸ ÿ› ÿ — ÿ ‘ ÿ Šÿƒÿ{ÿsÿjÿKÿÿÿoooĈðððÿñññÿIpHÿ ÿŸ ÿ¢ ÿ¥ ÿ¦ ÿ§ÿ¨ ÿ¨ ÿ¨ÿ¨ÿ§ÿ*A*ÿœ ÿ¤ ÿ¢ ÿž ÿš ÿ • ÿ ÿ ‰ÿÿzÿqÿjÿFÿ ÿÿoooĈðððÿñññÿ7j6ÿš ÿž ÿ¡ ÿ£ ÿ¥ ÿ§ÿ§ÿ¨ÿ¨ÿ¨ ÿÿ7=7ÿAÿ ÿ  ÿ ÿ ˜ ÿ ” ÿ ÿ ‡ÿ€ÿxÿoÿiÿ%ÿ ÿÿoooĈïïïÿñññÿÈÌÈÿlÿœ ÿ  ÿ¢ ÿ¥ ÿ¦ ÿ¦ ÿ¦ÿ¥ÿ+]*ÿ.A-ÿ%\#ÿEÿ(ÿAÿ • ÿ – ÿ ‘ ÿ Œÿ…ÿ}ÿuÿmÿCÿ!ÿ ÿÿnnnĈîîîÿðððÿñññÿWuVÿ“ ÿž ÿ¡ ÿ¢ ÿ¤ ÿ¥ ÿ¥ ÿ!G ÿ&V%ÿ¡ ÿ£ ÿ¢ ÿ ÿN ÿ#ÿ {ÿ ÿ ‰ÿ‚ÿ{ÿsÿiÿÿ ÿ ÿÿnnnÄ}}}ˆîîîÿïïïÿðððÿåååÿ ^ÿ› ÿž ÿ  ÿ¢ ÿž ÿSÿ]ÿ¤ ÿ£ ÿ¡ ÿŸ ÿ ÿ™ ÿ ~ÿÿ?ÿvÿÿwÿoÿ>ÿÿ ÿÿÿnnnÄ{{{ˆíííÿîîîÿïïïÿðððÿˆ—ˆÿ~ ÿ› ÿž ÿnÿ>ÿJNJÿjÿ¡ ÿ  ÿž ÿœ ÿ™ ÿ — ÿ ÿÿÿÿ<ÿeÿjÿÿ ÿ ÿÿÿmmmÄyyyˆìììÿíííÿîîîÿïïïÿðððÿ4_4ÿv ÿ7ÿUhUÿçççÿÝÝÝÿcÿž ÿœ ÿ› ÿ ˜ ÿ – ÿ ’ ÿ Žÿ4ÿÿÿÿ  ÿ&ÿÿ ÿÿÿÿkkkÄyyyˆêêêÿìììÿíííÿíííÿîîîÿÆÈÆÿdodÿØÙØÿðððÿñññÿñññÿhÿ™ ÿ ˜ ÿ — ÿ • ÿ ’ ÿ Žÿ Šÿ*ÿÿÿÿÿÿ ÿ ÿÿÿÿkkkÄxxxˆéééÿêêêÿëëëÿìììÿíííÿîîîÿîîîÿïïïÿïïïÿïïïÿïïïÿ%t#ÿ • ÿ ” ÿ ’ ÿ ÿ ÿ ‰ÿ…ÿ!ÿÿÿÿÿ ÿ ÿÿÿÿÿkkkÄvvvˆèèèÿéééÿêêêÿëëëÿëëëÿìììÿíííÿíííÿíííÿíííÿíííÿ(r'ÿ ÿ ÿ ÿ ‹ÿ ‡ÿÿzÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿkkkÄooo…çççÿèèèÿèèèÿéééÿêêêÿêêêÿëëëÿëëëÿëëëÿìììÿìììÿ…Ÿ…ÿa‹`ÿdŒcÿg‹fÿ + ÿ % ÿ  ÿ  ÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿmmmÁMàààáæææÿçççÿèèèÿèèèÿéééÿéééÿêêêÿêêêÿêêêÿêêêÿêêêÿêêêÿéééÿéééÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿ(((ÝmmmŽJooo…tttˆvvvˆvvvˆxxxˆxxxˆxxxˆxxxˆxxxˆxxxˆxxxˆxxxˆxxxˆxxxˆzzzÄxxxÄxxxÄwwwÄvvvÄuuuÄsssÄrrrÄqqqÄoooÄnnnÄmmmÄkkkÄmmmÁkkk‘&À€€À(0 "ŽŽŽ†¦¦¦˜§§§˜§§§˜©©©˜©©©˜©©©˜©©©˜©©©˜©©©˜©©©˜UUUÌSSSÌRRRÌQQQÌNNNÌMMMÌMMMÌMMMÌMMMÌMMMÌfff¿[[[r‡áááÿâââÿâââÿãããÿãããÿäääÿäääÿäääÿäääÿäääÿãããÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿfff¿©©©˜ãããÿäääÿäääÿåååÿæææÿæææÿæææÿ ° ÿ6z5ÿ*u)ÿ pÿXÿXÿ*ÿ ÿÿÿÿÿÿÿÿMMMÌ«««˜åååÿæææÿæææÿçççÿèèèÿèèèÿèèèÿn”nÿ ÿ ÿ ÿ ‹ÿ ‡ÿ>ÿ ÿ ÿ ÿÿÿÿÿÿMMM̬¬¬˜æææÿçççÿèèèÿéééÿêêêÿêêêÿëëëÿp™pÿ – ÿ • ÿ ” ÿ ‘ ÿ ÿQÿÿÿ  ÿAÿÿÿÿÿMMMÌ®®®˜èèèÿéééÿëëëÿ`†`ÿ3s2ÿ›ªšÿíííÿl˜lÿ› ÿ› ÿ™ ÿ— ÿ ” ÿUÿÿ3ÿfÿpÿ.ÿÿÿÿMMM̰°°˜êêêÿëëëÿÞßÞÿrÿ™ ÿ ÿ1w0ÿ@r?ÿ  ÿ$r#ÿFNEÿ#H ÿ ˜ ÿjÿUÿ ‡ÿÿuÿbÿÿÿÿMMM̳³³˜ìììÿíííÿWˆWÿ˜ ÿ ÿ  ÿ¢ ÿ  ÿ£ ÿ/E-ÿ•’‘ÿ?F<ÿ ÿ˜ ÿ ’ ÿ Œÿ„ÿzÿoÿCÿÿÿNNN̵µµ˜íííÿÙÜÙÿ}ÿœ ÿ  ÿ£ ÿ¥ ÿ¦ ÿ¦ ÿ„ÿ,5,ÿ+o*ÿŸ ÿ› ÿ – ÿ ÿ ‡ÿ}ÿsÿiÿÿÿNNN̶¶¶˜îîîÿQPÿ™ ÿž ÿ¢ ÿ¥ ÿ§ ÿ§ÿ¨ÿ§ÿGÿ¥ ÿ¢ ÿ ÿ ˜ ÿ ’ ÿ ‰ÿ€ÿuÿaÿ#ÿÿPPP̸¸¸˜ïïïÿg“fÿ€ÿ  ÿ¤ ÿ¦ ÿ¨ ÿ¨ÿ¨ÿ¨ÿ Gÿ¦ÿ£ ÿ  ÿš ÿ ” ÿ Œÿ‚ÿSÿ(ÿ ÿÿQQQ̸¸¸˜ðððÿòòòÿÇÎÇÿB@ÿ—ÿ§ ÿ¨ÿ¨ÿ§ ÿ¨ÿ!F ÿ§ ÿ¤ ÿ  ÿ› ÿ ” ÿ Œÿ@ÿ  ÿÿ ÿ ÿRRR̸¸¸˜ñññÿóóóÿõõõÿìììÿ9b8ÿ¦ÿ¨ÿ§ÿ¦ ÿ§ÿ#H#ÿ§ÿ¤ ÿ¡ ÿ› ÿ • ÿ Œÿsÿ<ÿÿ ÿ ÿRRR̺ºº˜ñññÿóóóÿÅÎÅÿ.o,ÿ¡ÿ§ ÿ¨ÿ§ÿ§ÿ¨ÿ'M'ÿ¤ ÿ¤ ÿ  ÿ› ÿ ” ÿ ‹ÿ‚ÿwÿRÿ.ÿ ÿRRR̸¸¸˜ñññÿ†§…ÿ~ÿ¡ ÿ¥ ÿ§ÿ¨ÿ¨ÿ¨ÿ¨ÿ+Q+ÿŸ ÿ£ ÿž ÿ™ ÿ ’ ÿ Šÿ€ÿuÿjÿBÿ ÿRRR̸¸¸˜ðððÿgŒgÿ— ÿ  ÿ£ ÿ¦ ÿ§ ÿ¨ÿ§ ÿ‡ÿ5B5ÿ8ÿ€ ÿ ÿ— ÿ ÿ ˆÿ~ÿsÿfÿ*ÿ ÿRRR̸¸¸˜ïïïÿíííÿ%n%ÿ ÿ¡ ÿ£ ÿ¥ ÿ¦ ÿ%h#ÿ*P)ÿŒÿ x ÿ6ÿ A ÿ “ ÿ Žÿ…ÿ{ÿpÿ=ÿÿÿQQQ̶¶¶˜îîîÿðððÿšªšÿˆ ÿž ÿ¡ ÿ£ ÿqÿ_ÿ¤ ÿ¢ ÿŸ ÿ› ÿ mÿ ÿfÿ€ÿwÿgÿÿ ÿÿPPP̵µµ˜íííÿïïïÿðððÿ@u?ÿš ÿ… ÿPÿeoeÿsÿ  ÿž ÿ› ÿ— ÿ ‘ ÿ!ÿÿ8ÿ\ÿ4ÿ  ÿ ÿÿNNN̳³³˜ìììÿíííÿîîîÿÏÑÏÿ*V*ÿXqWÿåååÿïïïÿoÿ› ÿ™ ÿ — ÿ ’ ÿ ÿ4ÿÿÿÿ  ÿ ÿÿÿNNṈ±±˜êêêÿëëëÿìììÿíííÿîîîÿïïïÿïïïÿïïïÿwÿ • ÿ ” ÿ ÿ Œÿ ‡ÿ)ÿÿÿÿ ÿ ÿÿÿMMMÌ®®®˜èèèÿéééÿëëëÿëëëÿìììÿíííÿíííÿíííÿ!lÿ v ÿ p ÿdÿ\ÿTÿÿÿÿ ÿ ÿÿÿÿMMMÌ–––†æææÿèèèÿéééÿéééÿêêêÿêêêÿëëëÿëëëÿÞßÞÿÞÞÞÿâââÿÿÿÿÿÿ ÿ ÿÿÿÿÿWWW¸ ———…®®®˜®®®˜°°°˜°°°˜°°°˜°°°˜±±±˜°°°˜°°°˜°°°˜]]]Ì\\\Ì[[[ÌZZZÌXXXÌUUUÌSSSÌQQQÌNNNÌMMMÌTTT¸JJJR€€(  NNN^ÈÈȱËË˲ÌÌ̲ÌÌ̲ÌÌ̲ÌÌ̲ÌÌ̲888Ù666Ù333Ù111Ù000Ù000Ù222ØPPPŸÉÉɱãããÿäääÿåååÿæææÿÆÎÆÿWŽWÿHˆHÿMÿ6ÿ ÿÿÿÿÿ222ØÎÎÎ²æææÿçççÿèèèÿéééÿ‘¬ÿ ‘ ÿ ÿ ŒÿXÿ ÿ ÿ ÿÿÿ000ÙÑÑѲéééÿäääÿS…RÿÈÏÇÿ’°’ÿš ÿ ˜ ÿ • ÿhÿÿPÿRÿ ÿÿ000ÙÔÔÔ²ëëëÿh“hÿ ˜ ÿ‹ÿ2€1ÿ ÿHSFÿ!Rÿ ƒ ÿsÿ‚ÿtÿ?ÿÿ000ÙÕÕÕ²äåäÿÿž ÿ£ ÿ¥ ÿ£ ÿ9E8ÿ)f&ÿœ ÿ ” ÿ ˆÿzÿdÿÿ222ÙØØØ²i˜hÿ› ÿ¢ ÿ¦ ÿ§ÿ¨ÿ\ÿ¥ ÿ  ÿ˜ ÿ Œÿ~ÿVÿ"ÿ333ÙÙÙÙ²èéèÿZYÿ’ÿ§ÿ¨ÿ¨ÿ![ÿ¦ÿ¡ ÿš ÿ ŽÿIÿ  ÿ ÿ666ÙÙÙÙ²òòòÿìììÿ@x>ÿ§ ÿ§ÿ§ÿ$["ÿ¥ ÿ¢ ÿ™ ÿ Žÿoÿ2ÿ ÿ666ÙÙÙÙ²»Ì»ÿ)‚&ÿ¤ ÿ§ ÿ¨ÿ¨ÿ'^%ÿ¡ ÿ¡ ÿ™ ÿ ÿÿmÿ9ÿ666ÙÙÙÙ²¥»¤ÿŽ ÿ¢ ÿ¦ ÿ§ ÿŒÿ-E,ÿ5ÿz ÿ • ÿ ‰ÿ{ÿ`ÿ(ÿ666ÙØØØ²ðððÿEƒCÿž ÿ¢ ÿ‹ÿ^ÿ£ ÿŸ ÿ V ÿIÿÿuÿ<ÿ ÿ333ÙÕÕÕ²îîîÿÕÙÕÿyÿdÿuŠuÿÿž ÿ™ ÿ ‘ ÿ ) ÿ+ÿTÿÿÿ222ÙÔÔÔ²ëëëÿíííÿ½Ã½ÿéêéÿðððÿ|ÿ • ÿ ‘ ÿ Šÿ*ÿÿÿ ÿÿ000ÙÐÐбéééÿêêêÿëëëÿìììÿìììÿ9€8ÿ*)ÿ XÿNÿ  ÿÿ ÿÿÿ111×VVV^ÏÏϱÑÑѲÒÒÒ²ÔÔÔ²ÔÔÔ²ÔÔÔ²ÒÒÒ²AAAÙ@@@Ù===Ù:::Ù777Ù222Ù111×vvvƒ€€CorsixTH-0.61/CorsixTH/CorsixTH.lua000066400000000000000000000067461321660673500171020ustar00rootroot00000000000000---- CorsixTH bootstrap code ------------------------------------------------- -- This is not a configuration file and should not be edited. See config.txt -- for CorsixTH configuration options. -- Basic sanity check that the file hasn't been invoked by the standard Lua -- interpreter (as then various packages would be missing and SDLmain would not -- have run). if (package and package.preload and package.preload.TH) == nil then error "This file must be invoked by the CorsixTH executable" end -- Parse script parameters: local run_debugger = false for _, arg in ipairs({...}) do if arg:match("^%-%-connect%-lua%-dbgp") then run_debugger = true end end -- Redefine dofile such that it adds the direction name and file extension, and -- won't redo a file which it has previously done. local pathsep = package.config:sub(1, 1) local base_dir = debug.getinfo(1, "S").source:sub(2, -13) local code_dir = base_dir .. "Lua" .. pathsep for _, arg in ipairs{...} do local dir = arg:match"^%-%-lua%-dir=(.*)$" if dir then code_dir = dir .. pathsep end end local done_files = {} local persist = require "persist" local save_results if table.pack then -- Lua 5.2 save_results = function(t, k, ...) t[k] = table.pack(...) return ... end else -- Lua 5.1 save_results = function(t, k, ...) t[k] = {n = select('#', ...), ...} return ... end end function dofile(name) if pathsep ~= "/" then name = name:gsub("/", pathsep) end if done_files[name] then local results = done_files[name] return unpack(results, 1, results.n) end done_files[name] = true return save_results(done_files, name, persist.dofile(code_dir .. name .. ".lua")) end -- Load standard library extensions dofile "utility" -- If requested run a Lua DBGp Debugger Client: if run_debugger then dofile("run_debugger")() done_files["run_debugger"] = nil end -- Check Lua version if _VERSION ~= "Lua 5.1" then if _VERSION == "Lua 5.2" or _VERSION == "Lua 5.3" then -- Compatibility: Keep the global unpack function unpack = table.unpack -- Compatibility: Provide a replacement for deprecated ipairs() -- NB: It might be wiser to migrate away from ipairs entirely, but the -- following works as an immediate band-aid local rawget, error, type = rawget, error, type if not pcall(ipairs, {}) then local function next_int(t, i) i = i + 1 local v = rawget(t, i) if v ~= nil then return i, v end end function ipairs(t) if type(t) ~= "table" then error("table expected, got " .. type(t)) end return next_int, t, 0 end end else error "Please recompile CorsixTH and link against Lua version 5.1, 5.2 or 5.3" end end -- -- A DBGp debugger can debug this file if you start a CorsixTH DBGp client & connect -- it to a running server, using this CorsixTH startup arg: -debugger -- Enable strict mode dofile "strict" require = destrict(require) -- Load the class system (required for App) dofile "class" -- Load the main App class dofile "app" -- Create an instance of the App class and transfer control to it strict_declare_global "TheApp" TheApp = App() TheApp:setCommandLine( "--bitmap-dir="..base_dir.."Bitmap", "--config-file="..dofile"config_finder", -- If a command line option is given twice, the later one is used, hence -- if the user gave one of the above, that will be used instead. ... ) assert(TheApp:init()) return TheApp:run() --[[!file ! Application bootstrap code ]] CorsixTH-0.61/CorsixTH/CorsixTH.rc000066400000000000000000000031041321660673500167060ustar00rootroot00000000000000// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "WinResrc.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.K.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""WinResrc.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_CORSIXTH ICON "CorsixTH.ico" #endif // English (U.K.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED CorsixTH-0.61/CorsixTH/Graphics/000077500000000000000000000000001321660673500164175ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Graphics/file_mapping.txt000066400000000000000000000022261321660673500216140ustar00rootroot00000000000000--[[ Copyright (c) 2013 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- This table specifies the custom animation files to load. file_mapping = { "plant_anim.dat" } CorsixTH-0.61/CorsixTH/Icon.icns000066400000000000000000002727201321660673500164370ustar00rootroot00000000000000icnsuÐTOC @is32s8mkil32 äl8mkit32ˆðt8mk@ic08˜‚is32,),*,2420.,($%ÝæééðãÜk  !-èáäéÍóJ  *ìçðí*L0 ,òâÿc -ñéù™& -òîöéG-ôéÿ=  -õçÿ­$"2 -ñëõí—Í" ,îéñïÿï7 ,ëæëòÜü‹+éâêæóä"  (ãàçáìN  +ãÛàâ×Q*ÎÙÚÙáãçp (,),)+122/-,($%Ýæéèòæâu" !-èáäéÏå“pg  *ìæò怄¢q&C-ðæ÷™›pgi{u3 -ñëõ¹¡›iœ„pB-òíøå’™””ŠM.óí÷‰’£’o™m8 -ôéÿÄt•|Nƒys. -ñêöì³Ôƒ‰^(@ ,îéñïÿï~J ,ëæìðá÷¢V' +éâêæòâ\\; (ãàæãèuL_`& +ãÛàâÖwiOE'ÎÙÚÙáÞäp(,),*,2420.,($%ÝæééðãÛk  !-èáäéÍôE  *ìçðí$H*  ,òâÿa  -ñéù– -òîöêB  -ôéÿ;  -õçÿ«3 -ñëõí”Í ,îéñïÿï2 ,ëæëòÛüˆ+éâêçóä (ãàçáìL  +ãÛàâ×K! ÎÙÚÙáäçp (s8mkJXUWS\H¯ÿ÷ÿþøÿ»JÿùÿþÿÿÿþþþþþÿûÿWÿïûö÷÷öûÿÿÿÿþÿûVÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿWÿöÿýþþþþÿÿÿÿÿÿýWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿþWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿþWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿþWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿþWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿþWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿþWÿ÷ÿþÿÿÿÿÿÿÿÿÿÿþWÿöÿýþþþþÿÿÿÿÿÿþUÿ÷ÿþÿÿÿÿÿÿÿÿÿÿÿWÿñýøùùøüÿÿÿÿþÿüGÿùÿþÿÿÿþþþþþÿüÿil32 ä‰&D=?=<;:976323.9±³·¶·¸€¹)¸¸º°¼t9E?@?=<<:966/FW²úåðíïïððòóïôïÿo ƒ OµæÛâà€âãàÛäÝID+ >¹òãêèêëëìõúôÐ   AºïáéçéëèîScïÚ   ?»ñäìéïäÿŽ/Y    A¼òåííëóÚ !€  B½ôçíðéÿo€2  C¿õçòëùÍ  CÀöé€ñdó˜   DÀöêóðõôþçQ  DÁ÷ëóòôúûÊN EÁ÷ëôñùÞ\ €  EÁ÷ëöîÿÅ   EÁ÷ëòõïÿ] #  EÁ÷ëòôðÿ #:`  EÀöêòðöïÿ[†q#!  DÀöéñïóðýÑ{ÙÿŠ   D¾õçðïðòòôÿñÿ| C½óçîíïðñïìèÿ„  C¼òåíëíîïðôóëó†7  B»ñãëêììííìñçÿ« @ºïâéèê€ë;ìíéð6  ?·îáèæçèéèîäü†   ?¶ìßç䀿éãëÅ     ?´ëÝäâäååçâøE€ s  ?³èÛâßááåÜñr  >±êÜäâãâæáì“+ A°ÝÑØÖØÙÙÚØéÛº˜‘B   =£÷ãìéê€ë ìåèøðÿn ƒ Y%Ž–——˜˜€™ œ™–—g@ICDCB@€?>A:Xl‰%C<>=<;:976323.9±³·¶·¸‚¹(º³Àw=I@@?=<<:966/FW²úåðíïïððñóðôéÿi‚OµæÛâàââãââÜãÛ{ƒbBC$ >¹òãêèêëëíð÷ùÍz†ƒ‚„:  AºïáéçéêêéstæÝx”‰‚~?   ?»ñäìéîæýœvtc]–ˆˆ–0.R+   A¼òåííêöÓq™šžX[£šf3cvlR B½ôçîïìú•€—’˜«`IkELŒ‡tgd1 C¿õçòêûÉc¢•›“¬u/…›‹€{n`R CÀöéòðñò¥l•žœœža©‹‡{rhW DÀöêòñõôÿგ –¤‚W ’‘†}nA DÁ÷ëóòôúöΈ‘ –£…`¥‘…~( EÁ÷ëôñùà‡t”š£_¢…}g1  EÁ÷ëöîÿÆl¢”™š•¦…a£…zrfA EÁ÷ëóôóü‹‘’ŸŸ[?‡yj`R EÁ÷ëòôðÿÅr–††‰AG^”…ƒpgb  EÀöêòðõòüns¢‘ŒmL…y4lrj;  DÀöéñïóðýÓ×ÿ¯}•‰ŒoAQ D¾õçðïðòòõÿ÷ú¢†|g C½óçîíïðñïîéÿ_„t}W C¼òåíëíîïñóóîî—du] B»ñãëêëìííìðçý´QpH @ºïâéèê€ë;ììëé]WZY   ?·îáèæçèéèíåù“IaT_C   ?¶ìßç䀿éãíÃH^X[V^'   ?´ëÝäâäååæåñgQYTYY[P ?³èÛâßááåÜñy;eY`ZZWb3 >±êÜäâããåáêžZTNMTYVR5 A°ÝÑØÖØØÙÙØæÖ»¢ S!   =£÷ãìéê€ë ìæêøîÿl ƒ Y%Ž–——˜˜€™ ›™–‘™iBJDDCB@€?>A:Xl‰&E=?=<;:976323.9±³·¶·¸€¹)¸¸º°¼s9E>@?=<<:966/FW²úåðíïïððòôïôðÿp ƒ OµæÛâà€âãàÛäÝE?'  >¹òãêèêëëìöûóÐ  AºïáéçéëèîPbðÚ    ?»ñäìéïäÿ+X    A¼òåííëóÚZ    B½ôçíðèÿl  C¿õçòìùÍ    CÀöé€ñeó–    DÀöêóðõôþèN     DÁ÷ëóòôúûÊJ    EÁ÷ëôñùÞW€  EÁ÷ëöîÿÅ     EÁ÷ëòöïÿ[ "    EÁ÷ëòôðÿ =h  EÀöêòðöïÿZ„n  DÀöéñïóðýÑzÙÿ‡  D¾õçðïðòòôÿñÿy  C½óçîíïðñïìèÿ‚  C¼òåíëíîïðôóëô…6 B»ñãëêììííìñçÿª  @ºïâéèê€ë;ìíèð2   ?·îáèæçèéèîäü…  ?¶ìßç䀿'éãëÄ   ?´ëÝäâäååçâøC€9  ?³èÛâßááåÜñr >±êÜäâãâæàì’$„1A°ÝÑØÖØÙÙÚØêܺ–@   =£÷ãìéê€ë ìåèøðÿn ƒ Y%Ž–——˜˜€™ œš–—g@HCDCB@€?>A:Xll8mk*3122222223/9!¥ÿ÷ÿýþþþþþýÿûÿÈ!¢ÿûÿþÿÿÿÿÿÿÿÿÿÿýüüüüüüüüüüüýúÿç+ÿûýüüüüüüüüüüüüýÿÿÿÿÿÿÿÿÿÿÿþÿûû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù2ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü3ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû3ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû2ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû3ÿúÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿú(þþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþ÷Œ÷ò÷õõõõõõõõõõôøýüüüüüüüüüüüüúøit32ˆð‚´ ‚€€¡…‡ ‚ € ¢  6?<€=ƒ<;;ƒ:€9„877665322ˆ/.!… ‚€…› ¾ÿôþƒú‚ùø÷öõôóñ€ð‰ïîá·\ VŠª§„©„ª‡«­…«¬¨±`?IEFƒE‚DCC€BAA€@„?€>=<€;9987‚896H‚·ô­! GËíë‚íƒî€ïðð€ïððññ•òññððîòéþ@ ƒ‚€XའFìâÙ‚ÚƒÛƒÜ݉މ߇ÞÝàØéG €ƒ‚‚ƒ€ €  „ =îŒ ÉãÙåâ€ãƒä‚åææ†ç‘èƒçæêáôD €€ ‚ ‚  ‚ ƒ€€† ~å% VîÚåÞßß‚àáââ„ã˜ä‚ãáåÜïF€€ƒ‚ € ƒ  ƒ,ìd ‹íÚáß‚á‚âãƒä†å’æ‚è çëâõH‚ƒ ‚  ƒ  „ Ì› «îÙãà€á‚âã‚ä„å–æäàà€ßÝáÙìE€€‚ ‚  ‚  €‚²§ ¨íÛäàááâã‚äƒåˆæ‹çææåë‚õô÷îÿL€€€‚  ‚  €€²ª ªïÛäà‚â‚ä‚å…æ‘çéäî½\fgmqv{x„' € €‚  ‚  €€±ª ªïÛäá€âãä‚儿‰ç…è ççæêáöŠ‚ ‚  ‚  €€²© ªîÜåáââä‚åƒæ…çŽèçëâ÷~!‚‚ €€  ‚  €€ ²© ªïÜåâã€ä‚åƒæƒç’èçëá÷i ‚€ƒ  €  ƒ  €€²© «ïÜåã€ä傿ƒç†èéêéƒêéíâ÷^ƒ€‚ €  ‚  €€²© «ïÜæãää傿‚ç„è„êéêíééêéíãùT€€‚   ‚  €€²© «ðÞçã傿‚çƒè‡êëéãääæîìê€ëéíäùK‚€‚    ‚  €€²© ­òÞçä€åæ‚ç‚èé„ê‚ëêîüúú÷æèîëêëêîåúD„€ €€ ƒ  €²© ­ñÞèäååæç‚èé‚êƒëêíèõÃ7=V±øòäìîêêîåø<…€€  €€ €  ‚  €²© ®òßèäæ‚çèé‚ê„ëìëîèôFTÑýêçïíìêî/ …    €  ‚  €‚ ²© ®òßè倿çèéê„ë€ìëïåü˜!ƒìøåëïëà) ‚ƒ€       €²© ¯óßèåææçèéê‚ëƒìíëîá 1´ûòá÷ˇƒ   €€ €  ‚  €€ ²© ¯òàéåæç€èéê‚ë…ìðçým bÝþä6€ƒ‚    €€ €  ‚  € ²© ¯óàéå€çèé€ê‚ëƒì ííìïé÷¿‚ ¨”ƒ‚‚      ‚  € ²ª ¯ôàéæçç€èéé€êë‚ìƒíïëõ?€ ‡‚   €  €€ €  ‚  € ²ª °óàêæç€èéêëì„íòèÿ”€‚ †‚  €   € € ‚  € ²ª °ôáêæ€èé€êë‚ì‚í ïïðîòß „ …‚  €  € €  ‚  € ²ª °ôáêçèèé€êëì‚í€ï îòéÿk„ „    € € ‚  € ²« ±õáêçèé€êëìíî€ïîòìúÄ €„‚  „  ‚  € €  ‚  € ²« ±ôáëçè€êë€ìíîï ðïòëùI„ƒ  ‚  € €  € € ‚  € ³« ±õâëçéêêë€ìíî€ï ððïóêÿ¦ƒ†   €€  € €    ³¬ ±õâëèêêë€ì€íîïðññî*ƒ‡    €€  €  € € ‚   ³¬ ²öâëéêê€ë€ì€íî€ïð ïõêÿ„ƒ‰  €€  €€ €    ³¬ ²öâíéê€ë€ì€íî€ï‚ð òïõÛ‚‹  €€ €  € €  ‚   ´¬ ²õãíé€ë€ì€íî€ïð ñðôëÿa‚Ž  €€ €€ € ‚  ´¬ ²öäíé€ë€ì€í€ïð ñðóíü» ‚   €€€  € €   ´­ ²÷äíêëë€ì€íîïïð ññðõëÿh!‚ €€€ €  €€ €   ´­ ³øäíêë€ì€íîïïðñ óòôß>€‘€€€  € € ‚  ´­ ³øäîêë€ì€í€ï€ð€ñ€ò óóù÷€‘€€€  € €   ´­ ³øåîê€ì€í€ï€ð€ñ€ò óóôñòÿÇ4‘ ‚€€€  €  € €  € ´­ ³øåîê€ìííîïï€ð€ñ€òó€ô ö÷îüö| ‚€€€ €€ € € ´­ ³øåîëìì€í€ï€ð€ñ€ò€ô õõôøòóÿÅ2 ‚‚€€€  € € ‚  ´­ ³øåîëììííîïï€ð€ñ€ò€ô‚õ øöðýõy ƒ€€€€€ €   ´­ ´ùåîëì€í€ïðð€ñ€òóôôõ ööõöúóôÿÄ1‚€  €€ €   µ­ ´ùåîëì€íïï€ð€ñ€ò€ô€õ€ö ÷÷öúøôÿóq ‚  €€€  µ­ ´øåïë€í€ï€ðññ€ò€ô€õ€ö÷ øýúðòÿ}€   €€€ €  µ­ ´øæïë€íïï€ð€ñ€òôô€õ€ö ÷÷ö÷üùòùÿáj€  €€€€ € ƒ µ­ ´øæïë€íïï€ð€ñòò€ô€õ‚ö úûòøÿꀀ €€€€ € ƒ µ­ ´øæïëíí€ïðð€ñ€ò€ôõõö øúóöÿó‘ ‘ €  €€€€ €  ‚ µ­ ´ùæïëíí€ïðð€ñ€òôô€õ€ö úóóÿú¤( ‘ €‚€  €€€€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ôõõö òüÿ½; ’ €‚€€€  €€€€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ôõõöö÷÷ÿÔS‘€‚€€€ €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõ ÷ôû–’€‚€  €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õööõò&"„‘‚€€€ €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõùïÿu€‚‚€€€   €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõøòÿÍ €‚ƒ€€€ €€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õöõúñÿO‚Ž ‚€€€ €   €€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õ öõùòÿ»€ƒŽƒ€€  €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€ò€ôõõ€öúòÿJƒŒ ‚€€  €€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ô õõööõúñÿ»ƒ‹ ' €€ €€€ €  ‚ µ­ ´ùæïìíí€ïðð€ñòòóôô€õ€öùòÿG€…†  #/ Y€€  €  €€€ €  ‚ µ­ ´ùæïëíí€ïðð€ñ€òôô€õ ööõúñÿ¸…€€ %,K3 ee €€ €  €€€ €  ‚ µ­ ´øæïëííîïï€ðññ€ò€ôõõöùòÿE‚… "†²ˆEh€€ € €€€ € ƒ µ­ ´øæïë€íïï€ð€ñòòóôô€õ ööõùñÿ¸‚‚ 4r5soO' ‚€€ € € € ƒ µ­ ´øåïë€í€ïðð€ñ€ò€ô€õ€öúòÿN‚  €'c6€H €€ € €€ €  µ­ ´øåïëìííîïï€ð€ñòòóôô€õ ööõùòÿÄ€€  ;…¢H"D€ €€€ €  µ­ ´ùåîëì€íïï€ð€ñ€òóôô€õ(ööõùñÿ\ LØp'0%<   €€€ €   µ­ ´ùåîëì€í€ï€ð€ñ€ò€ô€õ%öõøòÿÏ QÉøÿˆ #‚ €€€ €   ´­ ³øåîëìì€íïï€ð€ñ€òó€ô€õ$öõùïÿiOÄýÿëÿŒ ‚ € €€€€ € ‚  ´­ ³øåîëìì€íîïï€ð€ñ€òó€ôõ÷ôûÜ QÃþþñõòÿ‰€€   €€€ € ‚  ´­ ³øåîê€ì€í€ï€ð€ñ€òó€ô€õôùîÿ WÇþþññøûîÿ‰‚‚€ €€€€ €  € ´­ ³øäîê€ì€íîïï€ðñ€òó€ôõ÷òù<mÉÿýððøùôøïÿ‡‰  €€€€ €  € ´­ ³øäíêë€ì€í€ï€ðñ€òóô õõöóúàáÿûðñùø€õøîÿ‡‡€  €€€€ € ‚  ´­ ²÷äíêëë€ì€í€ï€ðñò‚ôõõôùøìñøøôôõõôøîÿ„…€€ €   €€ € ‚  ´­ ²öäíêëë€ì€íî€ï€ðñòóôóõóóù÷ôôõôøíÿ}‚‚ƒ   €€€ €   ´­ ²öäíé€ë€ì€íî€ï€ð‚ñòó€ôóõõóóƒôó÷íÿx„„  €€€€€€ €   ´¬ ²õãíéê€ë€ì€íî€ïðñƒòóˆôó÷íÿs€†  €€€€€ € ‚  ´¬ ²öâìéê€ëì€íî€ïð‚ñ†òóô óòñõëÿn‡‚ €€€€€ €    ³¬ ²öâëéêê€ëì€íî€ï‚ðƒñŠòñõëÿh„„  €€€ € ‚   ³¬ ±õâëç€ê€ëìíï‚ð„ñ‡òñõêÿq!€†  €€€€ €  ‚   ³¬ ±ôâëçè€ê€ëìíî€ïƒðŒñ ðôêÿf †‚  €€€€€€ €    ³« ±õáêçèé€ê€ëìíîï„ðŠñ òïöÅ|J ‚ƒ € ‚  € ³« ±ôáêçèèé€ê€ë‚ìí‚ï‰ðññƒð ïøÿøÓC„ €€€€ €     ²« °ôáêæ€èé€êëì‚íƒïð ëéêøï)€€ ‚€€€ ‚  € ²« °óáêæç€èé€êë‚ì‚íî…ï‡ð€ï ññõäþz € ƒ€€€ €    ²ª °ôàéæçç€èé€êëƒìƒí‘ïíñéü˜ ‚€€€ €  ‚  € ²ª ¯ôà鿀çèêëƒì…í‹ï ííìðåýw €  €€ €   € ²ª ¯óàéåçèé€ê‚ëƒì“íìðèøJ ‚  €€€€ €  ‚  € ²ª ¯òßéåæçèéê‚ë…ìŽíìîèöÀ ‚€  €‚€€ ‚  €  ²© ¯óßè倿çè‚êƒëˆìƒí‚ìëïåú[ ƒ  €€€ €  ‚  € ²© ®òßèäæçèé‚ê„ëìëîç÷º ƒ  ‚€ €  ‚  €²© ®ñßèäåæç‚èé‚ê†ë‹ìêíèð> †   ƒ  €€²© ­òÞçäå傿ç‚èéƒêëêîäû˜ ˆ    ‚  €€²© ¬ñÞçãåæ‚çƒè…êëêíÞ ˆ    €  ‚  €²© «ïÝçãä傿‚ç„èêéíäø` ‹   €  ƒ  €²© «ïÜæãää‚傿‚ç…èé‹êéíäø¦ ‹   ‚  €€²© ªðÜåâäåƒæƒçˆèééƒê ééèêÞ Ž  €  ‚  €²© ªïÜåáâã€ä‚åƒæ„çèçëâõ` Ž  ‚  ‚  €²© ªïÛäáââãä‚儿†ç‡èçëãõ§  €  ‚  €€€²© ªîÛäàâãä‚å…æçèæèÝ  ‘  €  ƒ  €€€²© ©îÛäàá‚â‚äƒå†æˆçæêáõb ‘  ‚  ƒ  ²© ©îÚãà€áâã‚ä„åæåéáó§ –  €‚  ƒ  €€‚²© ©íÚãßá‚âã‚ä†åŒæá% ”  ‚  ƒ  €ƒ²© ¨íÚãßà‚áƒâƒä‰å‚æåéßöq –  ‚€  ƒ  €€ƒ²© ¨ìÙâ߀à‚áƒâ…ä‰åäçãí¼ ™    ‚  ƒ  €€„²© §ìÙâÞ‚à‚á„â‡ä…åæÞì> —   € ƒ  €…²© ¦ëÙâÞß‚à„á„âã‰äãæßûŠ ›   ‚ € ƒ  €†²© ¦ê×áހ߃àƒá‡â…äåâéw œ  ‚  „  €‡²© ¦ê×àÜÞ߃à„áŠâ áåÞî©  ›   € „  €ˆ²© ¦é×àÜÝ݂߄à†á…â áåÛñƒ € ˜   „ € €‰²©¦éÖßÜ݃߄à‰á€âãàçÅ€ „ ‘   …  ⩦éÖßÛ܂݃߅à‰á àâÞéÀC ‚ Œ   „  ‹²©¦èÖßÛÜ܃Ýރ߇à…áàâÞçí·_€  ‡   ƒ € Œ²©¦èÕÞۂ܃݅ßà âÞÚéðÍ¥p> „  ƒ  €€²©¤èÕÞÚۃ܄݆߉àßáãÜÙäîîíαšzX@0!€ € ƒ € €Ž²©¤çÔÞڀۃ܅݊߃à ßßâãÞÚÙÙãì€í îãÐÌÊÀÌ7 „  ƒ  €‚±ª¤çÔÝقۄ܆ݎßÞÞà€âÞÚÙÙØØÜààäÜñB €  „ € ²©¤çÔÝÙÚڃۄ܉ÝÞ‰ßÞß‚à ÞÜÚÞÕç? € ‡ € €’±ª›æÓÜÙÚƒÛ†Ü—Ý‚Ü ÝÞÝà×ê@ ‡ € €ƒ• »§içÕÛ׃ڄۈܕÝÜÚßÖé? † € €ƒ‚“!ßœ4àÑÞÛÙØ„Ù…Ú ÛÚÞÕè? ƒ € € HîŠ ˆíÌרÜÛÛÜÜ€ÝÜ€ÝÞÝ݂ޕßÞÝà×ë< €ƒ‚˜¶èR€¢çàØÒ€ÔÓ€Ô€ÕÔÕ‚ÖÕÕ•Ö ÕÕÖÖÕÙÐâB€€€ƒ ƒ  –’ä° f²Îåã„冿žçæéàô9¯D¸äÚ8'…;€<„=Ÿ><@6™¿´¹¶·¶µµ´µµƒ´³³œ²±»ßïè±5ƒ± „»«²¯¯°¯¯®€¯®„­¬ƒ«˜ª¨ŒT „´·‚´ ‚€€¡…‡ ‚ € ¢  6?<€=ƒ<;;ƒ:€9„877665322ˆ/.!… ‚€…› ¾ÿôþƒú‚ùø÷öõôóñ€ð‰ïîá·\ VŠª§„©„ª‡«­…«¬¨±`?IEFƒE‚DCC€BAA€@„?€>=<€;9987‚896H‚·ô­! GËíë‚íƒî€ïðð€ïððññ•òññððîòéþ@ ƒ‚€XའFìâÙ‚ÚƒÛƒÜ݉މ߇ÞÝàØéG €ƒ‚‚ƒ€ €  „ =îŒ ÉãÙåâ€ãƒä‚åææ†ç‘èƒçæêáôD €€ ‚ ‚  ‚ ƒ€€† ~å% VîÚåÞßß‚àáââ„ã˜ä ããäããâåÜïF€€ƒ‚ € ƒ  ƒ,ìd ‹íÚáß‚á‚âãƒä†å’æ‚èçëâõH‚ƒ ‚  ƒ  „ Ì› «îÙãà€á‚âã‚ä„å–æäß ÞÝáØëD€‚‚ ‚  ‚  €‚²§ ¨íÛäàááâã‚äƒåˆæ‹çææåëõõ€öõùðÿO €‚  ‚  €€²ª ªïÛäà‚â‚ä‚å…æ‘çéäî½blkpruyu€# ‚  ‚  €€±ª ªïÛäá€âãä‚儿‰ç…è"ççæêßø…'cNSMKGEAHH@:51-)%# ‚  ‚  €€²© ªîÜåáââä‚åƒæ…çŽèçëáø~W™†ŽŒŒ‹ŠŠ„ƒ‚€~|xvpsY €  ‚  €€ ²© ªïÜåâã€ä‚åƒæƒç’èçëáølRŠw||{zy{zyxvusrrnuW&' € €  ƒ  €€²© «ïÜåã€ä傿ƒç†èéêéƒêéíâøb]“€ˆ……„„ƒ‚€~|zxxrzX)'  €  ‚  €€²© «ïÜæãää傿‚ç„è„êéêíééêéíãùYa’ˆ……„ƒ‚‚€}|{yxr|W*'   ‚  €€²© «ðÞçã傿‚çƒè‡êëéããåæíìê€ëêíäùRf”ƒŠ€‡†„„ƒ‚€~}|{u~V-% €  ‚  €€²© ­òÞçä€åæ‚ç‚èé„ê‚ëêîþüøøæèîëêëêîåùKi”…Œ€‰ˆ‡…„ƒƒ€}}v€T/# € ƒ  €²© ­ñÞèäååæç‚èé‚êƒëêíèôÄ1:[®÷óäìîêêíåöFo•ˆŒ‹€Š‰ˆ‡†„ƒ‚y‚T2 ƒ€ €  ‚  €²© ®òßèäæ‚çèé‚ê„ëìëîèõB UÎþëæïí€ë=x“ŠŽŒŒ‹‹Š‰‰ˆ†…ƒ‚z„S6€ €  ‚  €‚ ²© ®òßè倿çèéê„ë€ì-ëïåý• ŒXéùåëïíÜ;“ŽŒŒ‹ŠŠ‰‡…„‚ƒ|†S7€  €   €²© ¯óßèåææçèéê‚ëƒìíëíãUŽ‚’v?9¯ûóàùÇ$Œ‘€$ŽŽŒ‹ŠŠ‰ˆ†„„~ˆT85 € €  ‚  €€ ²© ¯òàéåæç€èéê‚ë…ì<ðåÿh’‡Ž‰’b/cÚþæ2’“’’‘‘ŽŽŒ‹Š‰ˆ†…ˆR6#L]c. €€ €  ‚  € ²© ¯óàéå€çèé€ê‚ëƒìCííìïé÷¿sŽŠŽŽš„N%¥•-“”““’’‘ŽŒ‹Š‰‡‡€ŠM, "OheZ[O  ‚  € ²ª ¯ôàéæçç€èéé€êë‚ìƒíïéø8;—‡Ž‘’Ž–™tC )˜“•””€“ ’‘ŽŒ‹Š‰‰‚ŒD!!QnmcaaY^5 €€ €  ‚  € ²ª °óàêæç€èéêëì„íóçÿ‘ Љޑ‘’•“‘œ’f3)””˜”•€”$“’‘Ž‹‰‹…Š8 #Uttjhhda\[R" € € ‚  € ²ª °ôáêæ€èé€êë‚ì‚íFïïðîñáZ•ˆ‘‘’“”•–’–ž‡T!••˜•–••”“’’Œ‰„’1%Zz{qnolheb_X_9  €  ‚  € ²ª °ôáêçèèé€êëì‚í€ïFîòçÿf#•‡‘‘“””••–˜—•˜£^K•œ“˜—–••””’‘’‘Œ‰’d']‚wtusolifd`\ZU% € € ‚  € ²« ±õáêçèé€êëìíî€ïGîòìúÃwŒ‘‘““”•––—–˜š˜”œ)1„£“–™—•””••‘Œ’–i- W‡‡}z|yuspmkgea^X^>  €  ‚  € ²« ±ôáëçè€êë€ìíîïðïóêýB<™‡’’””•––——€˜2›˜žxi¡š“–˜˜•’•›€9vŽ€|yvtqolifc^[YW( € € ‚  € ³« ±õâëçéêêë€ìíî€ïððïóéÿ¢ŒŠ‘’“”•–——˜˜™€š1›˜¢l?‹£š”“–œˆR 'z„‡„}{wurpmjgd`]X^B  €    ³¬ ±õâëèêêë€ì€íîïðñðï)[—ˆ’“”•––—˜˜™€š3›šœ˜£{'!\ž ”zI <‡ˆ‹‡„‚€~|yvspnkhdb][XY(€ € ‚   ³¬ ²öâëéêê€ë€ì€íî€ïðïõéÿ~$—†‘’“”•–—˜™€š›1š˜¡–L68( .l˜Ž‹Œ‰ˆ…ƒ}zwtroliec^\V_@ € €    ³¬ ²öâíéê€ë€ì€íî€ï‚ðóîöÛ u‹’“”•–—˜˜šš…›™œ¤v-€% >p–›Ž‹Šˆ†„‚€}{xurpmjfd_\ZYY$ € €  ‚   ´¬ ²õãíé€ë€ì€íî€ïðñðôéÿW>š…‘’”•–—˜˜™š‚›œ0›œ›˜£™XO’“ŽŒ‹‰‡„‚€~|yvspmkgea\[V_= € € ‚  ´¬ ²öäíé€ë€ì€í€ïðñðóìþ·)ˆ†Ž’“”•–—˜˜šš€›„œ-›œš˜­Q~¦›”’••’‘‹Šˆ…ƒ|zwtqnlhdb]ZYYX €€ €   ´­ ²÷äíêëë€ì€íîïïðññðõêÿdŽŽˆ’’“•–——˜šš€›œ›…œ.›Ÿ— a-“––™˜•”“‘ŽŒŠ‰†ƒ‚€}zwtroliec^ZZV`: € €   ´­ ³øäíêë€ì€íîïïðñóòôß:g™‹•”•–—˜™š€›‰œ)ž˜¦\ /“œ™––•”“’‘ŽŒ‹‰‡„‚€~{xurpljfc_[YYXZ€ € ‚  ´­ ³øäîêë€ì€í€ï€ð€ñ€òóóøù~8“––—–˜˜™š›‡œ›ž˜¤Z6€™%——–•”’‘Ž‹‰ˆ…ƒ~|yvspmjgd`\Y[W\;  € €   ´­ ³øåîê€ì€í€ï€ð€ñ€òóóôòñÿÈ-w ”™—˜šš€›ˆœ/›ž˜¥V<™›˜—–•”“‘ŒŠ‰…ƒ}zvtpmkgd`]ZWY_R € €  € ´­ ³øåîê€ìííîïï€ð€ñ€òó€ô ö÷îûøxH™€š€›„œ›-œ›ž˜¥RB¡˜›˜˜–•”“’‘ŽŒŠˆ‡„}zwtqnkhfb[X^X6€€ € € ´­ ³øåîëìì€í€ï€ð€ñ€ò€ôõõôùòñÿÅ+¤’—œ›‚œ„›.ž˜¤OG¡˜œ˜˜––•“’ŽŒŠ‰‡ƒ‚}zwtqnlic`b[; € € ‚  ´­ ³øåîëììííîïï€ð€ñ€ò€ô‚õ ø÷ïü÷u O¡˜€›‚œ…›,ž˜¤MM¢˜œ˜——–•”’ŽŒ‹‰‡„‚€}zwtrpjfjdB €€ €   ´­ ´ùåîëì€í€ïðð€ñ€òóôôõ ööõöûóòÿÃ,!…¡€›‚œ€›+šš››šž™£JV¢˜œ™˜—–•““‘Ž‹‰‡„‚€}{xvplpmL €€ €   µ­ ´ùåîëì€íïï€ð€ñ€ò€ô€õ€ö ÷÷öúøóþõip›šƒœ0››šš™š›šž™£HZ£—œ™˜—–•”“‘‹Š‡„‚€}{wrvuW$€€€  µ­ ´øåïë€í€ï€ðññ€ò€ô€õ€ö÷ ùýûîðÿyŽ››œ*››šš™š›šž™£E\£—œ™˜—–•”“‘‹‰‡…‚}{x|b-‚€€€ €  µ­ ´øæïë€íïï€ð€ñ€òôô€õ€ö÷÷ö÷ýùðùÿàb(q›šƒœ€›)šš››šž™£C]£—œ™˜—–•”“‘‹‰‡…‚€}|q8 €€€ € ƒ µ­ ´øæïë€íïï€ð€ñòò€ô€õ‚öûûñ÷ÿêy<‰¡šœ››‚œ„›$ž™£A`£—œ™˜—–•““‘ދЇ„‚{B€€€€ € ƒ µ­ ´øæïëíí€ïðð€ñ€ò€ôõõö ùûóõÿô‹)~§œ—€›ƒœƒ›%œž™¢>c£—œ˜——–•”’‘Ž‹‰‡„‚€|}d3€€€€ €  ‚ µ­ ´ùæïëíí€ïðð€ñ€òôô€õ€öúóòÿûŸ%m£œ—›š››…œ››€œ#ž™¡=e¢—œ˜˜––””’ŽŒ‹‰‡„‚€}z{l@ €€€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ôõõöòûÿ»6ZŽ“š˜™š›ˆœ)™¡=h¢—›˜˜–•”“’ŽŒŠ‰‡ƒ‚}zuvtR* €€€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ôõõöö÷÷ÿÔNA——–˜™šš€›ˆœ&š ;j¢—›˜—–•”“’ŽŒŠˆ‡ƒ}zxsptc9 €€€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõ÷ôû•)~š‹‹”•”•–—™™š€›ˆœ(šŸ:m¢—š——–•”’‘‹Šˆ…ƒ}zvtqlmkK& €€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õ€öð-[›ˆ‡Ž‘‘’”•–—˜˜šš€›œ›…œ)šŸ9n¡–š—––•“’‘ŽŒ‰ˆ…ƒ~|xvspnjej[2 €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõùïÿvQƒŽ‘’“”––—˜™š‚›„œ.›œ™8p¡–™—–•”“’ŽŒ‹‰‡„‚€~{xuspmjgbaaE" €€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõøñÿÇ!ŠˆŠŒŽ‘“”•–——˜™š‚›4œœ›œœ››œ™Ÿ8u¡”™–•”““‘ŒŠ‰†„‚€}{wurolifd_Y^W3 €€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õöõúðÿLK–ƒŽŽ’“”•–—˜˜€š‡›-œ›™5n–˜••”“‘‘‹‰ˆ…ƒ}zwtqolifc^\WY^J €€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õöõùñÿ·Ї‹ŒŽ‘’“”•–—˜™š„›#šœ•¤9~¢˜••”’‘ŽŒŠ‰‡…‚~|yvtqnkhdb^€ZTa$€€ €  ‚ µ­ ´ùæïìííïï€ðññ€ò€ôõõ€öúñÿEK–„ŽŒ‘‘“”•––—™˜™š‚›.š›¡w" E‹••”“‘‹Šˆ‡„‚€~{xuspmjgea]YZX]F €€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ôõõööõúðÿ¶Ї‹Œ‘’“”•–€—˜™™…š-˜B&X™’”’‘ŽŒ‹‰‡…ƒ}zwtroljfc`\YYXY€€ €  ‚ µ­ ´ùæïìíí€ïðð€ñòòóôô€õ€öúñÿCJ–„ŽŒŽ‘’“”••––—˜€™,š–ŸA5 ]ƒgœ“Ž‹Šˆ‡„‚€~|yvtqnlifc_[ZW^6€€€ €  ‚ µ­ ´ùæïëíí€ïðð€ñ€òôô€õööõúðÿ³‰†‹ŒŽ‘““”•‚–0™š˜˜š•Ÿw*,K6 kd&‘‘Œ‹‰ˆ…ƒ}{xuspmkgea][YZQ€€€ €  ‚ µ­ ´øæïëííîïï€ðññ€ò€ôõõöúñÿ@H•ƒŒŒŽ‘‘’“”€•7–™–’––™“ \%ˆµIm s˜‹Œ‹Šˆ…„‚€~|zwtqoljfd`\ZW]"€€ € ƒ µ­ ´øæïë€íïï€ð€ñòòóôô€õMööõúñÿµ„‡Š‹ŒŽ‘’““•˜•Ž– ˜•˜“[;u5usT'c™‰ŽŠŠ‡††ƒ€}{xvspnlhec^\W]A€ € ƒ µ­ ´øåïë€í€ïðð€ñ€ò€ô€õ€öDúðÿG8•‚ŒŠŒŽ‘’•“”¥‘[…™–“h,f8‚†Me˜‰Šˆ‹†€ƒ~|zwtromjgda][YV€€ €  µ­ ´øåïëìííîïï€ð€ñòòóôô€õDööõùòÿà w‰‡‹‹Œ’‹’¢D% Zž•–ˆ#C‰¦H(DŠŒ‹‹ˆ‹v{‹}~~zwusqnlifc_]W_-€€€€ €  µ­ ´ùåîëì€íïï€ð€ñ€òóôô€õFööõùïÿV)’‚ЉŒŽ‹‡ŸŠBFÖlK¢Œ—›b)3(:f“ˆŒŠ†‰(_„€xzwtromjgeb_Y]F €€€ €   µ­ ´ùåîëì€í€ï€ð€ñ€ò€ô€õDöõøòÿÐgЇŒ‡„Ž›„?KÆ÷ÿ‚L¡‹”“—e($&g“‰‹‰‡‰z& 1n‚vstpnkifda]YX€€€ €   ´­ ³øåîëìì€íïï€ð€ñ€òó€ô€õ>öõùîÿe‹}‚Œ˜|6HÁþÿèÿˆMŸŠ“‘—‰mdhˆ“ˆ‹ˆ‰…‰r-Gvxoomjgeb_Y^.€€€ € ‚  ´­ ³øåîëìì€íîïï€ð€ñ€òó€ôõA÷ôúßU“u, KÀþþðôòÿ…O‰’ŽŽŠŽ•“•‹‡Šˆˆ‡‰l. #Zvniifca[]F €€€ € ‚  ´­ ³øåîê€ì€í€ï€ð€ñ€òó€ô€õ<ôùíÿ‰ g QÆÿýððùüíÿ†P›‡ŒŒŽŒˆˆ†‰Šˆ‡„…€ˆg-$ 2foddc^[W€€€€ €  € ´­ ³øäîê€ì€íîïï€ðñ€òó€ôõ9÷òø=fÉÿýïðùùôùîÿ„P™†ŽŠ‹‹Š‹Œ‹Š‰‡†„ƒ„~ˆc.%Gie^Z^,€€€ €  € ´­ ³øäíêë€ì€í€ï€ðñ€òóô õõöóúàâÿûïñùù€õ øíÿ„Q˜„ŒŠŠ€‰ˆ‡††…„ƒ‚‚|‡^/$$Wa^F €€€€ € ‚  ´­ ²÷äíêëë€ì€í€ï€ðñò‚ô8õöôùøëñøøôôõõôøíÿƒR•‚Ї‰ˆˆ‡‡†…„ƒ‚€€z…X1# 7T€€ € ‚  ´­ ²öäíêëë€ì€íî€ï€ðñòó‚ôõóóú÷ôôõôøíÿ~S“€‰††……„„ƒƒ‚€€~xƒS4€€€€ €   ´­ ²öäíé€ë€ì€íî€ï€ð‚ñòó€ôóõõóóƒô ó÷ìÿyS‘~†„„€ƒ‚‚€~|}w€M3€€€€ €   ´¬ ²õãíéê€ë€ì€íî€ïðñƒòóˆôó÷íÿtT|„€‚€€€~~}|zzt~I1€€€ € ‚  ´¬ ²öâìéê€ëì€íî€ïð‚ñ†òóô óòñõëÿpV{‚€€€~}|{zwxr{F-€€€€€ €    ³¬ ²öâëéêê€ëì€íî€ï‚ðƒñŠòñõëÿkN„w~}}|{zyxwuvq{A*€€€ € ‚   ³¬ ±õâëç€ê€ëìíï‚ð„ñ‡ò ñõêÿoU•z{{|€{zzxwvvussmt:"€€€€ €  ‚   ³¬ ±ôâëçè€ê€ëìíî€ïƒðŒñ ðôêÿcPe€yy€xwvvutsrqrnx8€€€€€€ €    ³« ±õáêçèé€ê€ëìíîï„ðŠñòïöÅwG p€vuutssrqpok_Y"€€ ‚  € ³« ±ôáêçèèé€ê€ë‚ìí‚ï‰ðññƒðïøÿøÕ;%|pusrrqpopkr9 €€€€ €     ²« °ôáêæ€èé€êëì‚íƒïðìèèøð,Uxnrpoonmmjj‚€€€ ‚  € ²« °óáêæç€èé€êë‚ì‚íî…ï‡ð€ïññöâÿu5}hpmmlklhnO „€€€ €    ²ª °ôàéæçç€èé€êëƒìƒí‘ïíñèÿ’*yfmkjjhidl= €€€ €  ‚  € ²ª ¯ôà鿀çèêëƒì…í‹ïííìñäÿq/vckhggefak8€€€ €   € ²ª ¯óàéåçèé€ê‚ëƒì“íìðçùH=qag€e cd_f=€€€€ €  ‚  € ²ª ¯òßéåæçèéê‚ë…ìŽíìîç÷¾^€dcbb`_\`L €‚€€ ‚  €  ²© ¯óßè倿çè‚êƒëˆìƒí‚ìëïäýVm[c__^]]\\X\ €€€ €  ‚  € ²© ®òßèäæçèé‚ê„ëìëîç÷¹ W€] \\[[ZYZW]E‚€ €  ‚  €²© ®ñßèäåæç‚èé‚ê†ë‹ìêîæó9,eU\…Y ZW]! ƒ  €€²© ­òÞçäå傿ç‚èéƒêëêîäý” _UZ†Y ZX\I  ‚  €€²© ¬ñÞçãåæ‚çƒè…êëêíÞB^WZ‡YZW^& €  ‚  €²© «ïÝçãä傿‚ç„èêéíãú[dT[ˆYZX[M €  ƒ  €²© «ïÜæãää‚傿‚ç…èé‹êéíäø¤XW‹Y ZV_.  ‚  €€²© ªðÜåâäåƒæƒçˆèééƒê ééèéß9`VZYW   ‚  €²© ªïÜåáâã€ä‚åƒæ„çèçëáø\cU[ŒYZW]@‚  ‚  €²© ªïÛäáââãä‚儿†ç‡èçëâö¤WXZŽY ZW]!  ‚  €€€²© ªîÛäàâãä‚å…æçèççß8`VZYX[N €  ƒ  €€€²© ©îÛäàá‚â‚äƒå†æˆçæêà÷^cT[YZW_2‚  ƒ  ²© ©îÚãà€áâã‚ä„åæåéáô¥ WXZ“YXY€‚  ƒ  €€‚²© ©íÚãßá‚âã‚ä†å‹æåâ#7`V[’YZW]B‚  ƒ  €ƒ²© ¨íÚãßà‚áƒâƒä‰å‚æåéÞølcT[”YZW^# €  ƒ  €€ƒ²© ¨ìÙâ߀à‚áƒâ…ä‰åäçâîºS™Y[N € ‚  ƒ  €€„²© §ìÙâÞ‚à‚á„â‡ä…åçÜî9.cU[–Y ZW_1  € ƒ  €…²© ¦ëÙâÞß‚à„á„âã‰äãçÞý‰ZWZšYW € ƒ  €†²© ¦ê×áހ߃àƒá‡â…äåâévSZ™YZV^3  „  €‡²© ¦ê×àÜÞ߃à„áŠâ áåÞï¨=A_WZ—YZW^6 € „  €ˆ²© ¦é×àÜÝ݂߄à†á…â áåÚó x41]Y\Z–Y ZW^(% „ € €‰²©¦éÖßÜ݃߄à‰á€â ãàçÆ$^b\UTUXZ€[ZZ‹Y‚ZXV9^Q …  ⩦éÖßÛ܂݃߅à‰áàâÞê¾B'ObdaZUTTUUWXX€Y‚ZYX€WXZ^aM ƒ  ‹²©¦èÖßÛÜ܃Ýރ߇à…áàâÞèî´[ ,@Saecca^[ZZYXW€X YZ\]^_\RC'  ƒ € Œ²©¦èÕÞۂ܃݅ߌàßâÝÚëòË nC+%39ALSTVWY€[\[ZXWSMG?-  ƒ  €€²©¤èÕÞÚۃ܄݆߉à'ßâãÛÙåððíˬ•x[G=2.,)'  € €Ž²©¤çÔÞڀۃ܅݊߃à$ßßâãÞÙØÚäíðîííßÍÉǼÇ4   ‚  €‚±ª¤çÔÝقۄ܆ݎßÞÞà€âÝÙ€ØÙÝáâæÞóD   ƒ € ²©¤çÔÝÙÚڃۄ܉ÝÞ‰ßÞàááààßÞÛÚÝÔæ> Š € €’±ª›æÓÜÙÚƒÛ†Ü—Ý‚Ü ÝÞÝáØë@ † € €ƒ• »§içÕÛ׃ڄۈܕÝÜÚßÖé? † € €ƒ‚“!ßœ4àÑÞÛÙØ„Ù…Ú ÛÚÞÕè? ƒ € € HîŠ ˆíÌרÜÛÛÜÜ€ÝÜ€ÝÞÝ݂ޕßÞÝà×ë< €ƒ‚˜¶èR€¢çàØÒ€ÔÓ€Ô€ÕÔÕ‚ÖÕÕ•Ö ÕÕÖÖÕÙÐâB€€€ƒ ƒ  –’ä° f²Îåã„冿žçæéàô9¯D¸äÚ8'…;€<„=Ÿ><@6™¿´¹¶·¶µµ´µµƒ´³³œ²±»ßïè±5ƒ± „»«²¯¯°¯¯®€¯®„­¬ƒ«˜ª¨ŒT „´·‚´ ‚€€¡…‡ ‚ € ¢  6?<€=ƒ<;;ƒ:€9„877665322ˆ/.!… ‚€…› ¾ÿôþƒú‚ùø÷öõôóñ€ð‰ïîá·\ VŠª§„©„ª‡«­…«¬¨±`?IEFƒE‚DCC€BAA€@„?€>=<€;9987‚896H‚·ô­! GËíë‚íƒî€ïðð€ïððññ•òññððîòéþ@ ƒ‚€XའFìâÙ‚ÚƒÛƒÜ݉މ߇ÞÝàØéG €ƒ‚‚ƒ€ €  „ =îŒ ÉãÙåâ€ãƒä‚åææ†ç‘èƒçæêáôD €€ ‚ ‚  ‚ ƒ€€† ~å% VîÚåÞßß‚àáââ„ã˜ä‚ãáåÜïF€€ƒ‚ € ƒ  ƒ,ìd ‹íÚáß‚á‚âãƒä†å’æ‚è çëâõH‚ƒ ‚  ƒ  „ Ì› «îÙãà€á‚âã‚ä„å–æäàà€ßÝáÙìE€€€‚ ‚  ‚  €‚²§ ¨íÛäàááâã‚äƒåˆæ‹çææåëöõ ô÷îÿL€€‚  ‚  €€²ª ªïÛäà‚â‚ä‚å…æ‘çéäî½[egmrv{y„' ‚ €‚  ‚  €€±ª ªïÛäá€âãä‚儿‰ç…è ççæêáöŠ‚‚€‚  ‚  €€²© ªîÜåáââä‚åƒæ…çŽèçëâö~ ‚  €€  ‚  €€ ²© ªïÜåâã€ä‚åƒæƒç’èçëá÷i ‚ ‚  €  ƒ  €€²© «ïÜåã€ä傿ƒç†èéêéƒê éíâ÷]  € ‚  ‚ €  ‚  €€²© «ïÜæãää傿‚ç„è„êéêíééêéíãùS ‚ ƒ €    ‚  €€²© «ðÞçã傿‚çƒè‡êëéãääæîìê€ëéíäùJ ‚  ‚ €  ‚  €€²© ­òÞçä€åæ‚ç‚èé„ê‚ëêïûùú÷æèîëêëêîåúC ƒ € ‚  € ƒ  €²© ­ñÞèäååæç‚èé‚êƒëêíèõÂ7>V±øòäìíêêîåø< „ €  ‚€ €  ‚  €²© ®òßèäæ‚çèé‚ê„ëìëîèôFSÒýêçïíìêî. …  ‚ ‚ €  ‚  €‚ ²© ®òßè倿çèéê„ë€ìëïåü˜ƒí÷åëïëà( €„ €        €²© ¯óßèåææçèéê‚ëƒìíëîá  0µúòâ÷Ì …ƒ €   € €€ €  ‚  €€ ²© ¯òàéåæç€èéê‚ë…ìðçým  aÝþä7 …‚ €  € € €  ‚  € ²© ¯óàéå€çèé€ê‚ëƒì ííìïé÷¿ €  ¨” ‡‚ € €   ‚  € ²ª ¯ôàéæçç€èéé€êë‚ìƒíïëô@ ‚ ‹ €€€ €  ‚  € ²ª °óàêæç€èéêëì„íòèÿ• † €‡€   € €€ € ‚  € ²ª °ôáêæ€èé€êë‚ì‚í ïïðîòß … ‚‡  €€€ €  ‚  € ²ª °ôáêçèèé€êëì‚í€ïîòéÿl „ƒ „   €  € € ‚  € ²« ±õáêçèé€êëìíî€ïîòìúÅ ……  ‚  €€€ €  ‚  € ²« ±ôáëçè€êë€ìíîï ðïòìùJ ƒ†  €      €€ € ‚  € ³« ±õâëçéêêë€ìíî€ï ððïóêÿ¦ „‡     €  €    ³¬ ±õâëèêêë€ì€íîïðññî* ‚Š       € €  € € € ‚   ³¬ ²öâëéêê€ë€ì€íî€ïðïõêÿ„ ‚‹     € € €    ³¬ ²öâíéê€ë€ì€íî€ï‚ðòïõÛ ƒŒ    € € € €  ‚   ´¬ ²õãíé€ë€ì€íî€ïð ñðôëÿb ‚    €  €  € € ‚  ´¬ ²öäíé€ë€ì€í€ïðñðóíü¼ „  ƒ  €  €‚ € €   ´­ ²÷äíêëë€ì€íîïïð ññðõëÿh ’  €‚ € ‚€ €   ´­ ³øäíêë€ì€íîïïðñ óòôß>  ”  ƒ€ € ƒ € € ‚  ´­ ³øäîêë€ì€í€ï€ð€ñ€ò óóù÷ ” ‚  €  ƒ€€ €   ´­ ³øåîê€ì€í€ï€ð€ñ€ò óóôñòÿÈ4 ‘ ƒ€  € ƒ€ €  € ´­ ³øåîê€ìííîïï€ð€ñ€òó€ô ö÷îüö|  ƒ‚ €  €€€€ € € ´­ ³øåîëìì€í€ï€ð€ñ€ò€ô õõôøòóÿÅ2 ‘ ƒ‚ €  € € € ‚  ´­ ³øåîëììííîïï€ð€ñ€ò€ô‚õ øöðýõy  „ƒ€ €  € €€ €   ´­ ´ùåîëì€í€ïðð€ñ€òóôôõ ööõöúóôÿÄ2 ‘  … €  €€ €   µ­ ´ùåîëì€íïï€ð€ñ€ò€ô€õ€ö ÷÷öúøôÿór   … €   €€€  µ­ ´øåïë€í€ï€ðññ€ò€ô€õ€ö÷ øýúðòÿ~   „ € €  €€€ €  µ­ ´øæïë€íïï€ð€ñ€òôô€õ€ö ÷÷ö÷üùòùÿáj   „ €   €€€€ € ƒ µ­ ´øæïë€íïï€ð€ñòò€ô€õ‚ö úûòøÿë€   „ €€€€ € ƒ µ­ ´øæïëíí€ïðð€ñ€ò€ôõõö øúóöÿó’   ƒƒ€  €€€€ €  ‚ µ­ ´ùæïëíí€ïðð€ñ€òôô€õ€ö úóóÿú¤'   ƒƒ€ € €€€€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ôõõö òüÿ½; ‘  ƒ‚ € €   €€€€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ôõõöö÷÷ÿÔS ”  ‚ƒ €  €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõ ÷ôû–  “  ƒ‚€  €   €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õ€öñ' €“  ‚  €  €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõùïÿu  ‚‘  €ƒ€  €   €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôôõøóÿÍ ƒ‘  €ƒ € €€€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õ öõúñÿO  ƒ ƒ  € ƒ €€ €  ‚ µ­ ´ùæïìííïï€ðññ€òôô€õ öõùòÿ¼ ƒ   ƒ  €  €‚€€ €  ‚ µ­ ´ùæïìííïï€ðññ€ò€ôõõ€öúòÿJ …Ž „‚ € ‚ €€ €  ‚ µ­ ´ùæïìííïï€ð€ñòò€ô õõööõúñÿ» „) ‚  € ‚€€€ €  ‚ µ­ ´ùæïìíí€ïðð€ñòòóôô€õ€öùòÿG †‰ '3]…  € €  €€€ €  ‚ µ­ ´ùæïëíí€ïðð€ñ€òôô€õ ööõúñÿ¸  …‡ (,O7 hk ‚  €  € €€€ €  ‚ µ­ ´øæïëííîïï€ðññ€ò€ôõõöùòÿE  † "#Œ¸‘Kp ‚ €€€ € ƒ µ­ ´øæïë€íïï€ð€ñòòóôô€õ ööõùòÿ¹ € …  8z5wwV+ € € € €  € € € ƒ µ­ ´øåïë€í€ïðð€ñ€ò€ô€õ€ö úòÿO  ‚  *l8ƒ‰O! ‚ ‚  €€€ €  µ­ ´øåïëìííîïï€ð€ñòòóôô€õ ööõùòÿÄ     @¨K$K €€€€€ €  µ­ ´ùåîëì€íïï€ð€ñ€òóôô€õ(ööõùñÿ\    LØp   (2&B €   €  € €€€ €   µ­ ´ùåîëì€í€ï€ð€ñ€ò€ô€õ&öõøòÿÏ  QÉøÿˆ "%    €€€€ €   ´­ ³øåîëìì€íïï€ð€ñ€òó€ô€õöõùïÿj  OÄýÿëÿ €   €  €€€€€€ € ‚  ´­ ³øåîëìì€íîïï€ð€ñ€òó€ôõ÷ôûÜ QÃýþñõòÿŠ €   € €   € €€€ € ‚  ´­ ³øåîê€ì€í€ï€ð€ñ€òó€ô€õôùïÿŽ WÈþþññøûîÿ‰  €  €€€€€ €  € ´­ ³øäîê€ì€íîïï€ðñ€òó€ôõ÷òù<mÉÿýððøùôøïÿˆ „ € €   €€€ €  € ´­ ³øäíêë€ì€í€ï€ðñ€òóô õõöóúàâÿûðñùø€õøîÿ† † € €   €€€€ € ‚  ´­ ²÷äíêëë€ì€í€ï€ðñò‚ôõõôùøìñøøôôõõôøîÿ„ ƒ ‚  €€€€ € ‚  ´­ ²öäíêëë€ì€íî€ï€ðñòóôóõóóù÷ôôõ ôøíÿ~  € ƒ  €  €€€ €   ´­ ²öäíé€ë€ì€íî€ï€ð‚ñòó€ôóõõóóƒôó÷íÿx ‚ …  €€€€€€ €   ´¬ ²õãíéê€ë€ì€íî€ïðñƒòóˆôó÷íÿr ˆ ‚ €€€€ € ‚  ´¬ ²öâìéê€ëì€íî€ïð‚ñ†òóô óòñõëÿm † ‚ €€€€€ €    ³¬ ²öâëéêê€ëì€íî€ï‚ðƒñŠòñõëÿh „ ƒ € €€€ € ‚   ³¬ ±õâëç€ê€ëìíï‚ð„ñ‡ò ñõêÿq ‡  €€€€ €  ‚   ³¬ ±ôâëçè€ê€ëìíî€ïƒðŒñ ðôêÿf ƒ ‚   €€€€€€ €    ³« ±õáêçèé€ê€ëìíîï„ðŠñòïöÅ|I  „ € ‚  € ³« ±ôáêçèèé€ê€ë‚ìí‚ï‰ðññƒð ïøÿùÔD  €  €€€€ €     ²« °ôáêæ€èé€êëì‚íƒïð ëéê÷ï(  € ‚€€€ ‚  € ²« °óáêæç€èé€êë‚ì‚íî…ï‡ð€ï ññõäþ{€ƒ€€€ €    ²ª °ôàéæçç€èé€êëƒìƒí‘ïíñéü™ €€€ €  ‚  € ²ª ¯ôà鿀çèêëƒì…í‹ï ííìðåüw‚‚€€ €   € ²ª ¯óàéåçèé€ê‚ëƒì“í ìðèøJ ‚ €€€€ €  ‚  € ²ª ¯òßéåæçèéê‚ë…ìŽíìîèõÁˆ‚€€ ‚  €  ²© ¯óßè倿çè‚êƒëˆìƒí‚ìëïæú\  €€€ €  ‚  € ²© ®òßèäæçèé‚ê„ëìëîè÷»€€‚‚€ €  ‚  €²© ®ñßèäåæç‚èé‚ê†ë‹ì êíèð?†  ƒ  €€²© ­òÞçäå傿ç‚èéƒêëêîäû˜Š  ‚  €€²© ¬ñÞçãåæ‚çƒè…êëêíÞ‰  €  ‚  €²© «ïÝçãä傿‚ç„èêéíä÷`Œ €  ƒ  €²© «ïÜæãää‚傿‚ç…èé‹êéí並ހ  ‚  €€²© ªðÜåâäåƒæƒçˆèééƒê ééèêÝ€  ‚  €²© ªïÜåáâã€ä‚åƒæ„çèçëâöa‚  ‚  €²© ªïÛäáââãä‚儿†ç‡èçëãõ§’ €  ‚  €€€²© ªîÛäàâãä‚å…æçèæèÝ!”€  ƒ  €€€²© ©îÛäàá‚â‚äƒå†æˆçæêáõc”‚  ƒ  ²© ©îÚãà€áâã‚ä„åæåéáó¨˜ €‚  ƒ  €€‚²© ©íÚãßá‚âã‚ä†åŒæà&˜‚  ƒ  €ƒ²© ¨íÚãßà‚áƒâƒä‰å‚æåéàõq˜‚€  ƒ  €€ƒ²© ¨ìÙâ߀à‚áƒâ…ä‰åäçãí¼›  ‚  ƒ  €€„²© §ìÙâÞ‚à‚á„â‡ä…åæÞì>š € ƒ  €…²© ¦ëÙâÞß‚à„á„âã‰äãæßûŠœ  ‚ € ƒ  €†²© ¦ê×áހ߃àƒá‡â…äåâéwŸ ‚  „  €‡²© ¦ê×àÜÞ߃à„áŠâáåÞ € „  €ˆ²© ¦é×àÜÝ݂߄à†á…â áåÜñ„ €œ „ € €‰²©¦éÖßÜ݃߄à‰á€âãàçÅ‚ƒ” …  ⩦éÖßÛ܂݃߅à‰á àâÞéÀC› „  ‹²©¦èÖßÛÜ܃Ýރ߇à†áâÞçì·`€Ž ƒ € Œ²©¦èÕÞۂ܃݅ßà âÞÛéïΦq=” ƒ  €€²©¤èÕÞÚۃ܄݆߉àßáãÜÙäíîíα›{X?.€€ € ƒ € €Ž²©¤çÔÞڀۃ܅݊߃à ßßâãßÚÙÚâë€í îãÑÌËÀÌ8 ƒ †  €‚±ª¤çÔÝقۄ܆ݎßÞÞà€âÞÚÙÙØØÛààäÜñB € ‡ € ²©¤çÔÝÙÚڃۄ܉ÝÞ‰ßÞß‚à ÞÜÛÞÕç? € ‡ € €’±ª›æÓÜÙڃۆܗ݂܀Ýà×ê@ ‡ € €ƒ• »§içÕÛ׃ڄۈܕÝÜÚßÖé? † € €ƒ‚“!ßœ4àÑÞÛÙØ„Ù…Ú ÛÚÞÕè? ƒ € € HîŠ ˆíÌרÜÛÛÜÜ€ÝÜ€ÝÞÝ݂ޕßÞÝà×ë< €ƒ‚˜¶èR€¢çàØÒ€ÔÓ€Ô€ÕÔÕ‚ÖÕÕ•Ö ÕÕÖÖÕÙÐâB€€€ƒ ƒ  –’ä° f²Îåã„冿žçæéàô9¯D¸äÚ8'…;€<„=Ÿ><@6™¿´¹¶·¶µµ´µµƒ´³³œ²±»ßïè±5ƒ± „»«²¯¯°¯¯®€¯®„­¬ƒ«˜ª¨ŒT „´·t8mk@¿ÿøÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿóÓ‚0:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<9@0Îÿøÿüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýúóü÷š0¬æþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýøíïèÿá2uÿþòÞíïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïðíòöõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõôöëè÷ûâîî#rÿåçýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþöæÿá÷Ã/üäôÿýÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãüäÿ^¦ÿåÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿ÷íðÿ¾âòúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿóðòá2ÿÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿìêòó<ÿìÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ÷÷úý>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿïÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿùùúþ=ÿîÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿøøúþ>ÿïÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿùùúþ9ÿãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿðñüý*÷áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿììüûÓüôÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿñûêõ~ÿßÿýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþûüÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýþÿñîüôãÖûàþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿòæÿëÿ¼.çÿèíåðññññññññññññññññññññññññññññññññññññññññññññññññññññòïôùøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø÷ùðïðîÿöæÿQ!¶ÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøùñìûýìçÿ 6„°½¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾½À¹íÿüÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿíõþÿ¢¿ÿ÷ÿýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýûöä½Mic08˜‚‰PNG  IHDR\r¨f$iCCPICC Profile8…UßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ‹mÇ6°nÆ¶ÂøØ¯±-ümR;`zŠ–¡Êðv x#=\Ó% ëoàYÐÚRÚ±£¥êùÐ#&Á?È>ÌÒ¹áЪþ¢þ©n¨_¨Ôß;j„;¦$}*}+ý(}'}/ýLŠtYº"ý$]•¾‘.9»ï½Ÿ%Ø{¯_aÝŠ]hÕkŸ5'SNÊ{äå”ü¼ü²<°¹_“§ä½ðì öÍ ý½t ³jMµ{-ñ4%ׯTÅ„«tYÛŸ“¦R6ÈÆØô#§v\œå–Šx:žŠ'H‰ï‹OÄÇâ3·ž¼ø^ø&°¦õþ“0::àm,L%È3â:qVEô t›ÐÍ]~ߢI«vÖ6ÊWÙ¯ª¯) |ʸ2]ÕG‡Í4Ïå(6w¸½Â‹£$¾ƒ"ŽèAÞû¾EvÝ mî[D‡ÿÂ;ëVh[¨}íõ¿Ú†ðN|æ3¢‹õº½âç£Hä‘S:°ßûéKâÝt·Ñx€÷UÏ'D;7ÿ®7;_"ÿÑeó?Yqxl+@IDATx콸%Gu.Z'ì“&ÏhFYå,„BBÙÂ`lL4øúüüÞ÷¾gã¶Œ–m²¹¶yïÚ¾Ã5áa®Ø\Ìþ(”4Š£0£ÑÄ“ö ïÿWת½ºNUwï}Ι êœÞµj媮U]]úÜOÓOl zè¡#“““qÌÏÏǨÆåœlŸRœâMáR²1.%ãâr¬ƒå¹¹¹:àb333¶LÀNèÝê·û‘Û×°ckœúsþ”ñi×¹ÀV4îØ–V§äR¸œŽoŸÓ£øX..“/…Syæá `Ý#ÌÁœƒÀ_cûlµ©¿–ã§ ?Ñ-Ð××çtë¦!R2)\NgŽ—ø^R,—ÒóÄvúû«Ã%–ŒU,wy^‰í;ؾˆí$l•©§Ö\±bÅé¨ì¯@ó¹ÈÇÈy8àÕØjõå1n¼J¯Änä»áM˜:(QuG/ë´ò¢ƒN_wÝuk,°Òc|®\wd´rMu7á«ã©£Wù]%[Ec]«èU4ÛN5ðüôôôž‰‰‰'üñ}W_}õÄg?ûÙc¶nÝzd$×Fù2lœ$SmÀ©~þÿŽày p§æ‚(‡7zJ`·üV¸©lS>«û©7éhS×_ýpU]›è±òMù«‚Oõ5ÑUdzzUº{¥iÝ{É÷îÝûã~ðƒñ‹_|>äítåã(ÿ66¥Ôh@à_Œ ú¯<;L9|Éš)t˯¢Mäšð¨¾Ÿ”<Õ!› Ú>)y¥¥ò¦üuAFÝMtUñTÑêô×ùW¥;GËáSíØ nÏž=·ýÖoýÖäM7Ýt®‘¿ð/a›6¸ú)ûÊ•+9r0ø4°0Ÿ9úè£ï½ð þóŸ?wæ™g®ß&T¬4 (¿5Xw˯ºz•Sù8?çn± ÊK½ªÌNˆvk_rÉ%­ÆjU8EKár&R—’oŠËÙÉác½q9–‹éq9UŸXGåyÄßã\pÁÄ_ÿ‰'žxØèèèqÐŒ®ö_ýÕ_}û“Ÿüä îc€ÿ/S®ÔÿÌo±öË¿üËW¿ç=ï9ƒÀz«(†­LL³å¦|V†p¯r±žÜšDÌw0–— sM}öÙKz  í‚âSyŠ7…‹eS<)\,—c™ºr,_·b}K=˜ÓŸµk×nûô§?}ïqÇ÷ëßW¾ò•¯_vÙe?opoüß´\:b+’9‚ÿ·ýNv|êSŸºó¤“NºÐòŰòÇø¸Ü”ÏÊõ"cåŸÊÁnëQ×uÆHvêÏxFâŽñ6šŠ[™:}u¼Måc¾¸líäà”ŒÅY8¥£®Ýcùåè׫^õªï^~ùåg`»VýüÀ>pÕg>ó™‹}™ë§c»›åä€à‚íÛ ‘é¼óλñ#ùÈ‘­Vk#Ë©Ô48›ò©nùUŽùOBÀÛú¦àšŽY¬|Üa›Ò,ŸÂUº”Góo §üš§xR8åOå)~‹³pJ¾¦­  Ë5lذá±+®¸â±7žíýœzÍk^sßí·ß~Š/ù¯N }n@à=ƒ €w\uÕUsþCXŽSÓmʧú»åW¹å ú^}Rßšäu¬‰ŽO¢ƒfÕQåOMåmÞ”?Å—ÂYÝ„S<)\,gË)þ—­|¢-yË9\yå•Ã:صk×í]tÑiÞÞêy¶ëí¥¡!à]‚Ÿˆ¿ÿû¿¿c1ÁÏ i8ÊÛ”_ƃ^7Åõš[b¸WÝÈÅ6m¹=)^m£nÉ*ûJKÙJášò§øR¸ØFЇ¸nÒbuÔµmìÏr-8?ñć¾ë]ïú‘Ö}Íš5§½øÅ/þ¡/³QÞJxÁÜŸÀô¢½èû§vÚs‹Rç7ÕHj5áQ™nxU¦—ά²š«]›+í`Ì­Ÿ ÷ê§¶_7ò9›9|N7ù›¤_ ëŠyârÌŸ*Ç2¶lá”l·ƒ@JÇRàp?ÀE[¶lùêú³?û3{Ó/ —,ôñŸ3XATböýïÿ *¬y]åÉׄGùšò’_;m]“7•hËn)ž§ÎÖ§›¶Ôzö*“’S_TwUÞ”7Å—²ÛŠyRzb™¸œÒ¡<1MñšwÓG—k@_Þð†7?‹D³ûS6mÚôa¤•Ø.) pú¥Z±cŽ9f‹]ôkÒ€Mxh¹)y™Ø˜Ý4h!Õ±Ó­=•*æZWÍ›ÔAy™w“T.–Éác>–›òƾ5‘‹eÔ^Ê.ÖaËNÉWõÙXv¹;wnÄ-Ã[Ô¿W¾ò•÷)Œü%¥½Tàp“Á£Ê;«xÍI¯ã!oS>òjÐW5"ùâ¤6šøËæÊVçþ‚s¾t‹·þ6‘Uþ&¼Ê““ÉáUÎæä­K)žÎêIÑS8+Ã1¿-[8–c¹ªÿƲË5ÜsÏ=!–_øÂÚ¿N, pè­ï𣃱“J×¼ŽÞ-Ÿ¾Ê5ÉÕϦ¾ätZ=Îñ/'ÞÚ·ðbl¦ô(.Ö«xæM“ÊÄüMuää­¾Oþ^d¬M± [¶p,ÇòxOýZ¿~ý˜ÂÈ, ¸¼Á§ú$uÖYµwúÕUœŠÈÓ„¯ÛÀW½Mt5*ÿZy…ËgI}µy/žª¼ÊÆeÅ3¯¢Y>…Sü)œòÇ9yëRÌ—Sò1O\NÉX\ÍêHÁ‹‘Mé‹qßÿþ÷C,cÀ.–†»‡° ¸)V¤å&“§ _7¯:›èU_5·²½È«žƒ1_ʺY]q]•ãsåT;7Õ‘’íÄ+»Ô§>ø`ˆe¬ë­0~­+Íà„z-,2$—YŒ*6á!k/¿ÐZ5F}©ó¹ZK÷TkWáîµô.¡6[oÕ{’ÃÇ|,çx›ø–“µvb=½ÊXUpÊžåé–V7XÞ%B,ÇÓ^ò•%©J¤pÖaÂMxºi„&úzñ!–©+÷âG¬³[Uw›Åº«ÊÖn¯:UG,ŸÃ§üIñ¦p9ÙØ¶åKé!®NÆÒëøc{U²UºØÿsw Ær–ëNA­Ï‚€NÄ)…³ñ÷Ÿp}GÎ8>Ñáx‡ ~›‰ÊƒÀ÷ñlïké#<ï—~æ\kjfÊ9Þ'F™/Œ®AÒóÕ¸¹ÿ‰Ó~@>ûÎ ÒâA€æ,.6¯6êx,=¶“ÒÙ ¿•uÛ²…­L·ðrÙ ÊIV¬.éN¯âk¢‡òMùb[½ÊÅzrå¥Ðo;^ÎŽÅã½on`xÀ =Û‰ƒn^‚w>ä2 ˜ <$ ë€0ƒèŸ¯â ;4?T𞟃^5?]Àóm¼ß¸9ÚáÆ×Ý“—ƒ ËÔ=7ã¨Z`âøÒ)êÁØ"‰½ r¸²THcÆm‰óSÇÓã²Q%`LË1¿-WñVÑ#z= ë€ªJ:ðëü«ò=¦-¥®X·–ëlÄÁ÷½¹ùÖœë_‰]‡ÿ>Ùƒ8²‹Âhß0(5Y˜8–Å‚¶4,‚^ Áh÷<’!˜e°à@ ƒ ˜e`€>Ò8x`˜ÞÒví[kˆñà!øš|ú¼3ÀÛº²]lYݱyOLËVᘗc~[¶¼NéµrÝ Vn©`é>M”±Ru©.ø›è ¦|êO·ü*gó¥Ðaõ-ûµs÷N7=Øvc£ØuÜ%v·Ø@&li„•®4ìSžðGŽè„õ°b?¤‰üó4=àeùH&Ý-N1ˆš¹Óðö¯m6L%ÖÕ½ÖÝâb¹X¦Ž¾Ôü±=-×ÙQ¾nòå8ÐÝ]òC^‘qYñš3ð—"øi§Î–ÚdÞ-Jv1:¬¾ýo{‘„½Ö?Œ¶B.ñ©Æm{–›ÅfRõ§Îwåkš7õ³©¾_U|f#x«SÜìŒ8â¸é ¹D!Êv@ÐÙø‚­x `]Ô§zæl@æÅ ´;óÂp÷¡,G»ƒTZNlÓàHq¹Ì½Þ-•¾:]V¶Þœ\•öÝÜ©€Õ·ØYw}6Õ+P•šÐëx¨Ÿ×€eQaæÜÃÜO²¯³ìÑÍËwš¯gW¼aÝÄë>QšÈ_ÐdÐàQ‡½-™öR)ÆÇåX&¦Çå:þ˜nËUºbZ\¶z,óÙ²…­LÜ‹LNw[HV1G–ªdyc>Òªè䯣+O>òjÐ÷øê¯æÔw°%õmr€|° J°9cKâËÆ˜î]Åi€Sp4(›(’}"C^¿‘‰0`Ù?*¨¼,sÖ€­O^A €ƒAE=†— IÀ˜—ëø-=–ËU¼–VWéÌÉUõe«¯.Vsú‰×]YÅS¢Ñ°5^"¢PE#o|Sò1ià¥f¿êƒæÍ¤®é©ḭÛ|&àäT^‘9étYqº§= ;¢ r §Ü·rC—¨P*K½Æ¶ìsåQ¼xG 6á£l&Åô¸‹Åô¸\Çoé±l\ÎñVñY™¶rŽùªËÛë  ÝÂêÊÂUŽRh±ô&:Ô¹nŸ¾é¦:›ÿÒ/ý’Ãe;âˆ#܉'Ÿèðù%÷‰O|Âá]ìÁžÚÕ¼W»|; y{­%sÝD/Ë>u)`Á` ¬9(cfÁG1Ķ ð°Ê#—;O]øœPßb4©ÌÃrUŠéq9–­¢WÑb=¶ÜT®Š¯ŠfmY¸+OxÁ@¥)Å)œ*ËÉ(y•¼ÒëxÈ×Mà«_MôRw.Y= þóŸw×\sMá‹5vMîr7ß~³{ë[ßêÎ9ç÷ñ<Ð- :ªr˯ðŽ;ìbÄ™M"²RÍ=)¬ êà Š[aó€Ä7 'ý™À^ŽJTž0øƒ]θðLJ 90‰ºë’åÑvÊÉX^òÄåX®Šni®ÓQÅke-Ÿ…-O /ç,`Ág¹ÊÑ*šÊ6áIÙµ¸^ßÊ7…ék¼Å²¼^t­á–>gÐ Ÿ7ò¬ÅÉ.ÎíUm7ˆ—«ó±ÝË.»Ì]rÉ%îÆoŒUÔ–cXÞ¾}{!‡@)i2°tCd*È\rƥ¼,¨¼tAdg… ‘±½GmøA@ßAÐ7Bâ)@Ö§.ÅíÛÍ6N¾üòË_Í5¿±íV\2äVÿçQ7öj ÏÀÂ)nÔ›Áݺîx »ùæ›Ý/¾äÝïÿþï;¾Ìc1 _|-ÞÀE@ Ús¾í7<~$ТÁ@e“H§éþnCÁ]‡ø•AÃË*g¼ ˆîŒ"k@ŠdÚî^:™Õõ+D^^Räå3ÎÈü'ñ,K€«ôÆ´¸”DÀRóYõqÛYš…»] ( ªH+¢¹âm^E#ßbéMŸvt³þUÁÊ_çcJÇ-·ÜâþñÿѵVµÜȳ‡ÝÀ&<邸:iЭzͨ[õ’×Âóïíû Îß:½È?ó™Ï¸g?ûÙýlJm#¾P®§k°ñ€ü烂ÕÇqÁ ëaj¯-9t1˜16#ŒÙðS9Ì‘¬¸ö?of©6OáDØÿXº…-ƒ~jjÊíÚµËíÞ½Ûq–Æ—A.åt‘¿ŠfõÅ|qÙòæ`+cá˜?7TÉÄ:âò‚@•i °\E«£S¶N>WQëK=)þ:ÛV&ÿÁüt´¾cÚnärËâGæ‘gµÜêׯpcç·ÜÌÿ&ð¶NpnçÄN÷æ7¿ÙýÂ/ü‚»ãŽ;Rê+q<èÀ{öh–{ŽOÙ1×½‚8pÁÙ™žÆLÙŠct¨ øDyF¼=% ÎãEž,ôAñÌ9ð>ÊkÅÌUåÔ¾«Û/–nañ5ðy›´[ÛþÓ<#ÎÞhj)Y]% –fá*¾˜–+/µ>k§›Y€v+_ ×9^G¯RÞÍQ¿J¥ÑŸ*Ÿ,oVŸúÔ§ä|¾uÈ {î(¦·èé¾Óó*A„r?¾·²âe#n-fCè„Ówƒ†£`ÿ©8-8 §·Þì^ð‚¸w¼ãÅ`â}T;9ñ‰§"¨0x³—¹'uÓLLå"äC]à‚!1Ф†Ù€ð!J ýàÿˆ“ÞÍ<+ã_@Þý7Ht8ýë—•OsK×ÀÇ×oÝø4§[Cg97vf]Ç}Ãȱ^Âb)’µ_¥¯¾¦2¹ƒcSùØoÙ…12W®2RE£¾:z®bÖê¨Ó£¶šòZý±¬ÕÁiå{ßû^YøkÞ‡#º?¤ùŽ-ý0ƒI6L—‡Ni¹5¯_åV¾½A0u'høøZÿé8?]3å>ò‘¸óÏ?ß}ík_‹Ýzª}æ×_½ûÖ·¾%Ago© öhZ¸•¦@TFP–‹ ¦.òyJGñ>Ø‹Ü<…˜úf) óE£ƒA‘O7"IÂf B]/x@^ð1‰= ˜ëL@ñ‘ì<Þ ø‚P¹Á¨À,øÛ=.S€Ì{+ž|òI7Þ.ôàŸ‹ï!‹×¯À#~![ÙÚ×áÌq€ïáNNãÊRe€7©)m)øŒÙJŸ,Ÿ…sË*߬¼…}“YÔB¸Jq­Šž«ˆõ J^ùÈÓ„Où™«L9}¯¸â ×ZÍ…¿7°aò^›Ï‹2 JÀb™ÆpÿBl?‡À?y3+oO|€Aù7³€•8ø¾@ g`\\ÌZ€õ Ú²©)ŸUЋL.~ºÕ¥]Iü‰…ãrS§«ä¨#ç¼ê¯“¯£«æÝðZ9…?úѺ[o½U®é^„ÏláèÍ0 AF æBAN$’?ÿÖ¢âÖõ¹/rCg¸ñoM»É{p•G+™ <âÜ]wß%·ó´ >wm÷Ïàî:ôè ´0ÊÞ…ÂIC#¿oŽ@|PGèøa$âä{¸ G^™^"Àë8º³eµ]¢2X—câ7d°(Êïðð°|ÊÌ Èúò_f<èƒ8‡çwCÛ¯„=¾~ŒÎ0!s@Kb®4€GBîA,ÂâÌJfwâ;ÈùµÜ•PBcé×Ò,\bŠ Mù¬˜•±°åi ×ÍJ€UZ¤t*—ªhU:©¯JVí5áiªKuÚÜúÈsþ~ðƒ®5Š£ÎYXÔ;~ BѶˆƒ_ŽL¨“8ã¹mÜ‚¾ÕÇŒºáëÝøw&ÜÔ½8j¡Óίk»ù--÷ÿðÁL —|´ã‹àV[šSaS×!§_ +žØ#Æ`„ <2€ ŸrîÅs{ ÒÜ^ä“d줱1œ”G‰G|øîPíø­p´_ÍÑŠŽB:ñ""ØÖ\td™-ð#N?NŽGé:põÅ­Á,`ß”cP°õ2@KmªÒîE†}5>@PJW GÞä@æ\ê•f+¥»J/ùë誳)Ÿò3ÏùÆ{ú¹èÔÚŒÎxÁŠâàb›FÛIƒ_”ñþêT‰Ú™±ž8òÌNtßn»É›-8ÀœŒµ‡Ñy;³ÿBû¸êŒ7 ~‰^$OÐTÖú6ád …#<´^¹A€ºD¼2P†H¨Ù€gwàòîŽÔ4::Žþ @=Ç/ñqkõ‰n`-HŠPÆA€m.¹×¨(oWÈZ°ð^€Y\"œÆÌª…A ý£™ á¦û—ŽUYš…c¾\ÙÊX8Çß+~Á@c¹Ô+-`j§J/yêèMyÔó:Ÿ®¾új÷/ÿò/ÅÂß®-zš&4$l6v<$iAmF+(æW™$ŸÇå+œ¼œ§ýnü›ÀT·…s×þ‡ÝÔ8VÒB‚í£óK€B`0*XÆø<Ž*GØ'e/HAàG뺾˜µ¨—'啃@ï„ó“|,ÎùÇÈÆ#/¿È¤çø¥ÀÇÝ”- „k Ï@+܇E9⋨Ø“:  ClçÄ,€#ñ&¬™B ƒÛ€›ƒž—AˆýJƒÙkY-0hÊgerðrë¢þ8•€ƒ ôJ« ´*´[GoÊ£u¨òEy˜ó¨Ä…?>~;Œëý#g¡™lÛiCjp– ~«ÔÊ&‹žŽ#î$ÜŒç ®-N x mv=‚ߟS‹J™J:YB¢°äüÁ&|žÊ i"]ÙSJ’àñC?lPT:ŠcNðCñ?äö_|Â`›¦U«VIÀq!P³¡['ã3æ§¶|àcð ÍŠb”dB¿¼A©'íxÍÂë],̧5¾ú7ÁN)¦1£Â)Ö4îà•®E°åõ;ΛÊX> Çúre+caËÏ>: °Þñ' x¹Çès15]ã#œ‚l ~žZȰ’½H¤jt¸¥C£ššzüQ‹t…‡Nǥȳ!ßëà D¸³æßúÜôm·ñr¢òѯ>#¯ú©ªã‰ú¥_V´º ²¢(_<±ˆHA?· OåÝŠÅËë¦Ü ‚ û"áÈ;†›§†ÏÆ`……Î0cðdfìà‡.©nšâæœøb`Ò2 °ül¿Äb °®Ï  ×°0|<&)X äZgU‰}%7C¨’Sš•·°Ò—"ÏÍRýÜÚcs%S`Jè@?íVÙ¶¾²^¹ºýÑý‘kãÉ•pÇßœû}1D+{#;¤O €%×G;¨l*Y>KD‡Ä½ÁÎÎ\7Ò)Žò ³×M\ƒC“•/0Ag‚è¤Rn,KÔ,3 ¾ÈU —ûƯšv»>»üþ Áÿt‡΢ּ/Kù9¼7§3’ToQò8 ‰÷,j[ì A—¶_Á+x¯ÄÀOGmÐIðµ6´¹}Å ×%¸ØË”ë…Dú×ÊX8ÍÝkuåàæÚòœ•3€”˜uÆÒ«0'Cù*Zz•]ë_¾ãïºë®“;ÏxÇŸÃBœt&éitÔ :*ûœ’Bp †Ž*œ¤„Tè Å2@všŠð›úñâ¬\?9'+ØëÖ­sÛŸØîÆ¿8áf·Î»¿îTL%µYÈH‚L`4̹½õyXÔÙîÈ›ºeÆoµôuJçpîÎñ%ðWS‰?‚ 1'mfš”Í%Õ6ˆ_"Þ™áºÇ£,(ÕÅœ sQˆÜ$yPèù·`p fÛŠµ€º;æØöY€©f ¬Š‘®€\UÈÉÐÃ^i”­²Iº¦*ÊÃ;ÐþüÏÿÜ »ÁsûGG¡³wEÁðª€9ù$±GjÏ H%úA%;G=Ûa­˜…!¶ò%ÃnדnÇí;d{Ãú nÏÞ=n÷·w»ÙÇÇq‹ñ®^øJe5h!¯ñn< õôþ3ó¤Cu{ Gý©{päÄe¾µk׺•‡¬”wNNºÏrcÏÃHÄÞÅ †ýv©Wu,¼ ^³ A,¼3‡þˀⳠeô¿`ë”Í@ }ðX [áÖ.¸ˆ…Áö}[„Ù_º t+ca±·ˆ«+[õŒ‰nÙÜH¥ª@ÌÉPO¯4ÊVÙ$‰ú«l\Åï_üÅ_È7sGLáaÞ&JyQâÙˆ`¹(ú¬ƒ³üïåX¶-N}V6²(¹nÄ›ÄKf«_3âúŽŸw=úìð±Ñ1·qõF7s‹s»>¶ÇMüÇ´<…t«MŸký¤ŽÔM[Z9DE2Òf{ÿç¤{òsãnꆷbv…ãëÐykï;žp“­I7Š7"]ŒàÇÂ_G/SuêÌÊÓµžžL;ÁÈtHg£1/2É \LyšÀZÏÞÏ…6#ðñŒÀù¸0Oê¿iòfdVÞ ÷#¢Ô49§rø*?«dz¥Ñ^]ðSw•~õYùø¤ÝÇ>ö1¼Çoùé_…KS¾ ¯v61Þés¡ó©BA¨ {aA`ÔM0<³ÕI7ì'LÕ?8¯þU¼m7)=òØ#²ŠÍv9òð#]ëÉ17þå·û85Ç¡TíxbÍÁ7¡{&©³ÂpK ßo»ÿ7ðàÈ?ºgÔz衎§ šmÛ¶¹‰nÕ ‡ÝÊ_Âàdç•T£½Ì« >Då°ß”ŸŒäQ>q¶@ *”Á"|Êmc²'ÒÀQ@"ðçpe…—¹ O(?r9”•±p޹ðuñA»ötÇ}Ê«j€^i9[Öé*ÝÊóüñÿ±›œšÄË;ñ°Î[¥#‘¹P;¥écª³ÈÍQ' *,#õØÀÏê3B žÁcúÝšßs{¯˜pÜñˆÛ¸Ž‡2çÝt¨Ül³ãÆn×Ã{ÝØÏŒºÑ‹ð3of¢]Ú7§”‘SmOëævâÈø£¶›¸vÂÍoÅuûö°[·vu¸ƒŽ¯>ß¹w§<§¿8†Ë•xX 6d¥Ï´'9~ümÂr”EÃÈZý Iy­œÇ« m7¶ë<)®Y(* ì7)’N>vóò |Pˆ³€©[‘Ÿ2®\LON‡[„ÙOR3‚ºNMtYžÜİ•µüµS)9~êè•–³¥~Ué­âùÞ÷¾W¼ŽkÓ ‚‡œúk0ˆœ=ÒU¦¹"¤ÐÑ2m¥ì|¾Ÿ†ŽˆP½DqÐ3pN^?êöýë”{ìÆÇdJ¾iã&éÄG}´{rç“nïW÷ºé»P¿çáÆ&ÜrÛׂrêçæº­õ¦{3÷ã‘ÜÛ~¬ã9<#ûŠ•nd Žî`æ‘rÇή=ÔvÃgâ…cíd#M WõVWÅ–¯·Ú}ðxõ§D'“"ÔgËoa¥ûAEļ~ÉßÀaпKc€A¬­X·å|Pˆí—XXÕ‘’€”æ±cuó³œÓUG«³U¥·N÷[Þò70<àZçâɳÃí[~ØeDºÈ⣿’öÄ‚=ù«G~Ê–ä wO–˜æË}xF~å½xÏà¾Ûë|xÊm:d“¬ ¬^µZ…íwlwû°Ð5¾iZ^HÒÂE|¶ž/5e ÌîžÇkÊfÝÌ£xµ6î-˜zGKÜ)76<æ6¬^% ;-·»vº}í}0k0»æs|]¸ŽP¶) º3³Ò62 P~ò ?~8𲽸È$ø‡i‹w5¯Ù€°å0àZy¯†Y?Æüác8ËA~x•Øôxg`XK ûÜ bkÛÂÖAÆLÝb OxÚ³`¨ (k(†s²9<å«hUÁ_%§~Uñ|ò“Ÿt?úÑð..Y‡U!vô+v"Izô÷eE«îNn{pôUüyå…5ï°ã»ñ&¾>í¶^û°[;¸ÎmX³AÞ‘Ø¡‡É—Švß»ÛM>8çv­Úãðy¹dÈóu^ç›sf˜£:«Ç0pl\Ö[ØQx¥?¸W"ÎÆRxNŸ/è`âQW.!"GÅ%°‰×¦!LV¶ƒ?BšÖ]ñäU9¥¡L0\¥Dí»ØÓšâÛ˜ÜýkøÒ¬ ´oëÌØ–#Э^ ÓŸTj“’‹qÔ§€2¤˜IËeŽ?‡§®*ZÎN\:?ñž÷¾Çµ6àŽ¿‹p4Ä‹;ÙçŠöÑFBN–‰°!8"Ø;• Ørq?a®âšûŠWám;§¸Ý_Ûéöb `ÝJÜþ†Ä'ßxZÀ;ßøª­¹iíwL¹Ù¹Y72„;õZC{ð¶Xvz¶?WÆ÷îÃFxUM^ùÌ< œzHBÕÙn!qÐÔ@‘¾‰ls¿Ë‰‚Å‘Gùæ`’"”ƒ“‘ eƒ1_–L a.~úq?Õ0î”YžtàÆww6¬%PêPr² [¼…KÂQ¡4Ð᪔ Êœ\OU´œ:¹&tò¼ûÝïv»vîrƒçáþt<.ûQ«Î\þdFRR1J¸…½¯À‡&ÔƒYtªœÏU©vt-Gl¡˜£«|`D°˜ÙÂKHÇ¿Ñvÿ`«Ü9âÖ­Y'oÜapó—íÏgóuªH¼î.ŠîÙ·ÇÍà=ˆÇán¾ 0ÕÇ}üòNÚ16%æYW™®{'¡[gÄHûªŒ!ËZ§G¨8èõ¼ªCl¨G !gRÝ8K¦Î_&³€GÐv€§ñƒ®°M–cб×ذ<9Øêd é¾%*ñ4 4¤˜–—sˆ¶z þ*ZòlÙ²Å}ò¿ÒÍojc»_ô£¢LCÔ V4s Sq¦qI ¢2‚Ä-[Xé̉׎̲…YfŠqÚáAâô|ÅËðH1niÿ_Snû·»¡¹!·ñáš·~;mÎ?19!¯ÏžY‹EÃs1;: A‘v€r 8cDœð?Á_å+ð¥Á•(W~âb8æóea3¼Òô(Û›‚JÏPÎ",'ï Â,`škœ`¶3þäòÎØ—{`IT5 òJK©`ÊfŠ—Ê»ÅS&g£J_t&õçÒK/ÅU¡yÿ]?\ó/ÈÅ/;—¤”bUHžW’,P…pñ«äŽª—­ a¥‹”5·xå#ÎÚÑ²æ ·NpkŽs“×c‘ðÊ}ø¨é¼;lÓar©mÂA`ûŽí®ÝGuñ⌑g`šÿÌQÜmî‡PjLõ3G ³Éõ¨ŒŠè¡ £Ò‹ÙF~¶ :ɇÄ&–Á£(–žV˜÷ ÉK;q‚ݽ|9PÕóRæôý8À‚2 À-Âûs ~ìï|Á bÉfŠ—r9¼ÕÃ9uúêlYú7¾ñ wå•Wâ%èèÏİŸJì(àžÈNÄds…²`‘_5ø~™b1Ü A+§°æä¶Ϥ8ËWPŠ_ìe¾Ž¼uüj·ëïÇå$kW¯•BxÛ8ãV?ƒ"Õ]ezŽMÕ(fhPÕ,@m² é²… ÛÈNû)gËbòÔcàt‰z ¨„"uó8±Oœ—QV×¼‹€Ó·ƒËƒ|ñøöúY€Ê/6g?­›Xžlý`Léi€Å[X»«Å-lƒÑÙÁÏÆ½ô/ÅB× þð~·^;‹uF»Z†dIðe=4y<;YHrô%‹'*.«ñvc/å¦üš+¿æ*Ê@XÙˆÎÅ»Q~Õ‰ûç€ó38"Žàc/ð¯Ý6RªWÀ{@}²6Ø›/VàŽÊExOîdJ'¿ÕIŽdH‘á Âó0פz´ÌœŒ¹š|LǾ4D®ÇY€ˆ–CPñ¹~ŸÃw´/díæš#XΧU˜t‹Ïé§Îœ®&´XöÃþ°{ð¡]ë4ÜñÇóZì\ݧ’kÊ™ÌQP‚Š8v d&":œ­©-Ú! Èj0˜žP Ñ1”cù‚»æJD66E~ªŒ+?\’„ñ`ðï´ò™z0€‹ö7áQFà¼ßCFQM~•-‹±ä=!Ð(ôŠl¡©£Ï–«þ…6U˜XSŒT„"Ÿä An;¼ãKCpJÄÖ™ƒ‚§  Ýµ+×ãàRánñ*—ÊsºÈÛ íŸþéŸäÓÚ³Ûçñ}>œ¢ã†Î­ÈÔÕl§açѤ¹v|”CGÕ£¿å§:•ÑÜ›x¯«&-(S/9+9ݨ"²ÍN-‹€¸oΕ¤~S΀¡nd žIu)¿Å y” ø¤¤(ÊiÏ#NõX:qÁá(©NA{A‘1|ªWP1Ñð)–Ö1(ð† ¬ àÞª³e[®¼ª_§lvËŸÒ¡»!E«\”K t‰Ìý«*Ö+íMoznGǵí;ð‰ª/àußÅÇ7ðÕš0EUßÙOl«h¿ÑΩQ¼tì€äT_.õ²¬¸¤LŠ˜Âya«O}$Žç†QW¹=XmªJ¶o‡0P ?TˆÜê,dÊ€Ü§ÐÆÄG´Ò“  ¿÷CÔž *jq¡ [sá«áW„.ÎáMÌ\ ˜žÅt)×÷šà›ðˆ‘šŸnõÔŘmÚÓ¹[rüuŽ¥œÉé"oôW¿úÕîsŸûœ[³f›Á½ßSߘu{¾€aãlíAÈ}§VŒ– õ½6†¶¢ e ŠŠbò· OpÄjPƒÄe”(ZYùi-ù¼? e L^7‹äOÍ<‹˜³bED§¤ ‰?ð!” ˜D²ª :. HËóù:Ëîò|1;El"ok30XlßæÁ'Û¸N¢o ²¼OX»î‚ºÔ”Èñæðû3øiKíýüÏÿ¼ûîw¿ëÎ?ÿ|×ÞÛv³·Ì»=ÿ8.—È´³K‡ò_êh{ŒÂ¶c‘‰üÚ’Ê#ÂûóÇ;•2i|ªŸ :˜¡ßÆòZÔ:U:Š“GÊKœ…¥ Ÿ .x¨ôK‘rb1¯,N’D¥ÑK#®„4Ì^P3S/EÙ¼o­ŸàÖ詇¸F‚|vʲ” êýª‘„:Øå‘_7Îúya aY|D.jt±òÂ呲ç‰Ûψ H^ËOdc\,Ѳ:ëˆxð‰7 ~¨Of¼RŒÇ„ùšµöD[N›rý­ ~1<ÖI«Ç–§)ÜÕRšs ‡O%õæøsø*ÒrvHcâ—8xÖ³žå¦wâ•P×âíVŸÅ£³x.$í?6X¥·Á/ [ãy”?(H%>ž_Õ¤'ôŠoøÁý™ò žXÛZ?à|ÕËA¯uö&µ˜ÛcÄâ´}Ωž R§¦(¹RòÆ…”µ>.ŒÄ·sé`-ŠÑ~r±R…/5KŽ‘¾TÑšúš Êœî¾ÎŸœ•S½'žx¢»êª«Üå—_\û|Çò Ü1÷•éâã–Ú§Bg„ Á`§ÿMbQ|t@«Sd'/Ïÿñ;[Ès5Θ,»…}/ 3¥)‚eÅQÛÄ–Qö. @“b<Ë1Žì·€#X¸PCeâwä¾<2ì8ûÇ©SU¿ªTvK@·~j År9|Ì×k¹JÕNJÉǯç;ßqgŸ}6Þ¹ŸïλݟÆ+µ¶pЧ¨ïhßW²ä–‡p*NoyKJl!ÁÔMü§@GÖ­¹y|É}Á€º ¾2 ‘ W”L` ¢ø¡ŒíU¼h«A8” Øû òËz>ƒ/ÉGxS0'ÏÃyEâw Û÷á5h· W˜V®\)ïE œêGMñ9YʈdwU°;—c@.0sº»ÅÓ•œ ÒrúHc:õÔS¿üö·¿11à¦ð\øîÏísãøÊ o )îTlÁT S æe9ÇKþR2Ì”ÑMy´ÜX_!ÈE@M\àë¾Ã}JˆóT/ u @¹¾”1$ªä"§úNdI·`É’5cÌÛ¼(.~¸Ÿù]ƒ)|Cp §„<ÿç:¯ñۆ˙lÿ´p›Ýò[¥æ·„:8g4‡OéËñæð)Šë5øiKí1ç;ßé¾õ­o¹3Î8oÈÁ5à/f3vf¥#¡?:.è„tÌ';%˹ÎIþRòÂVG‰n µ<&Büã~mXSu uW›–Ÿ8le¼ì,šI&Ëèõý*˜Ñ'¢V^••pP’Ó«úÉ‚];‹`Ÿº Â?Ä €›€†û‡ÝêÕ«å«AU}˨ٯ öÙØh·øÚ §06\U^ªÌùR¥?'Cs´3Ï<Óýà?p|ah?®“Íàrá®OáÅßÁá WÐ) u­wF–}‡¤ýÚ´d¼FªÀ£ëÎA _ï¬r†â¾®r'o\7ÅY¼˜µ2!%PYø¸íwGû‰«±k@ÛÌáóì|¾êœ/GÉ¥\ßÉñ¬ø]x1ëF6ÇÛ-~©ƒ_wõòc!œ œ|òÉrT˜ÀåB® ÌâÝy’˜-hAà}PŸ‘é¼¢O~RÂj%dâ<Ç'§ìüˆd¬à @õùp¨‹Ît ¸Tb·É_ÂùB g¼´x­GÀÀ”Añ)bKá(Å…Ð9Üé7}#ÿ{8ß¿ ~íA9Ï_µjUç9‰² 4#Ô‚b·ýw‚ýŒHußZr•L VhÌŸÓ›ÃWéÎÉÐfMéÊÃ…Ák®¹Æñ»í×¾³OàãWcmÀ¯¦Çõ²vb%jçÔ€Qü‚Ü Æòʧxͯy¯tøÜÏ$™ð©È¦ b ªNPH‰—èY¥£ÎfJoN&É«HÍ!Œ¶™Å×€¦n—þp¸Ù‡oFâQ¿×·çÜÊáµoÅt‹·pÌ·”åÄnê¨ïƉåâíxÓªò¥Ž–¢s y×»Þå¾õMÌN:Ynšø¼(ó³ø®?4š~&žÆe"‰KáE áÊkÞPLÙ8Г—ûÆ¢.À$¥›l¾ªª«ÄW7ð @dÒàK¶"W•ÖŒ‘ŽY~½øf¼ùÛxé'W÷÷à­Ç˜æóã&\èKíwÕ°æÖg wão©I›(i£hGÓrUžÓ›Ãçtçøi»WšúýÌg>Sf|xÿf8wÜõñ=nòœXwÖ•½œ›¾Y&$J9^âã-!^¹Î€€í ‹€|!j)EÅR—mÁ0p˜'.ðÏ\C€¢){F|~ÿ&ÜÛñ­™ò;|ìDŸŸ·ýÈö u%° OI`?r~¥ð¥`ø—r¢[»v§YÙ*ݽҨŸöÔ&Ÿ£ï{ß+k¼‘¨ýf‘_h»ÝÿcÒÍ¡³-.Õôæœò.Ìò´…mÁMfübP—)Lå»°»ÀD7fkx˜ŸwÓ·M»=ßÄw°ºïðéyÄç ûs_5ˆª~¤¢Mx”÷@çK2,¶Â9ù¾ÛF«ÒSE£\GálàÚk¯u|Ç`ÿ^ªù¼oßã›y(ž'wãmEDåHÄ/ˆ€ ›˜©°Î2ÀSr#P7ò9Õ9)| G½1>WçœÄãïöçÜÄ•xý9®çóZ>_‰._0ÆÍe<8)Þnp9½9ßrxÚ¬¢ÑNΖúËÙÀûßÿ~¹˜ïߟ½— ÷¸)|VkYǘÇ™ùœ÷ûC¸L¼óWº_…dïòjÜ&ÀÕ§ÆF£Á‚kíûæÜø¿Oá<¿-7ôà-ˆrøâyº¶×رÅ1Z¿,¼8­yéª]”—2”nœÜß¼UöªhuÏêS^·sÏ=×]qÅÒ¡Û÷á#;_Ãk¤ì݃¦½ªÁ¨W+3Å’¸×zÜs¼ö­uçà/¨¥ý’wí–ÀÂöónß×'Ý>|íßš-®åó¨oWöµÞUV›ðTÉ?Õh5{«N“RÍÝ4x7zU*¯²Yg#%{Ï=÷¸?ùÓ?‘ÀjûÆßˆo°±œrJpæhyªd«hV‡‡y œuzÆK‚ÿ€£X¿T³7óȬ›¾yÚMݞݸ–ÙØê1™ò/…ßl'ž*ÅÉâ-óí²µoᦶT¾˜ÔüRðætäð¬[Uð§äüq¹u˜oškáÑÚ³ü¯XåðN}é´q“i_ŠñqÃ’®¼1Í–ëôX^…ý½ ¬ëÏ#¼¯Jß9»R"®Ò–í0»sÞMÞ0á¦înèaâÃ:\Õ×ý” Ü‚sÿüÒíC“š.´›/–§Áû‘Ó›ÃS¾J,·gÏy¡ÈG?öQ7ÝÆ AÚnìÂQ7z1>¹5eì´qpjG–T ´ÜEŠuæD+øæfg$HX'ÞÔ7PÁœÓß_µNA³=4ÃÌC³¸‰Ÿ-¿¿p‚ |<Ç×ýw°Û}ø˜³÷å@Ó}K¾XY7²KÁ»Töµó¤|²6øBˆ¿þë¿vúЇ܎Ý;äK¹#g ðGÜÀ&I«bIi<ô)œ2¨8ò¤„¸&òª'Îy `Àíž“õ1å+çð¤ù¦A1uB­¯@IDAT>cŽû÷5ÉL÷î•€ÝÜo)oaÕ÷“–/jH5–Ý )zÎ\oŠž“Ïá«üUv¤}ìcî}ï{ŸÛºu«k­Ç¹æ³ðí¼ŸÅuÇ2:;y]`j ,&xYá:ù,^ö³Geòfùi Iý.J*3äz0'ãé[„ë›qçá¾+|ЈOí9\pá׎98ó4À.úÕ;’æà~O iîÞ±ûËN•‡‹ÿ«ô–hH™ÂYº…«‚Ôòu WéUÿ¾ð…/8>ø»¿û»nÛÞmnøÌ–[ùÚ!·êÃ{ãü ¨º RÇ´CG:« ©^«_á9ŒÂW1 ½R?NZR—øe¬gÜ[õ5àŒá{gà:Ðè>wïá}}+q}ÿLâCžL|ÉÉÎø$:fû#x «Ëó«}Ú-¼ÖÍ–Û‰^*ÖOÝðj£ó)@¾)è†npÃc8ÒŸ€[HŸ7è†ÏÁ£´¹wè±£Ú@PØV8Ó¡ ÒDG"Éß!(e+=@3º)Í5iUz8€€HÉEeâ”ÂÅ<, xRÒìvà~|õxô¹£n§S7M»!¼·o~&@ îï—Ùð‰¯ýÓd·‰}ç©> TÕ¹ÑP¥`)iÝjl»ùÜÑÿ¶Ûn“»û¾ùÍoºÖpË …Fžß‡k®*>œ™ŠªY@Ñ¿ WÖ ® 6[9å“€±ÀJ‹Ð©¢]y—¶¢l¿Q`À ¯69P°žHVOIüzÞ@Q=”È.+„ : ïm:lÄM|kÒÍ㉾á“án÷m?‚mª-³ÞòË`9’,¼¶–SgÏ@*ØrAµ˜ ,VgÊÏ”?=ö˜»ì²Ë§ü\XÄÔrèì~7ú<\ÖÛè#ƒPl)Êz4 Sc¡GÚã Rž‰%‹½ÈÈa¢GíÓô5ºˆvs­ÓcB|ç€Qz@ GxòÄ|¡s|‘œ ¬øÅQ7u'ô¹¡íúë<-à»üy °Î¸6¾…èíý4+Z ç i6 À¦úÈ—Ò™ÂåtÚAerrR÷þîïþÎíÞ½ÛµÖbqï lãFÒã|ó°C2ØÙÙƒ}YŠ4ÂŽ©Siå%ÞÂ,kR¼æŠï)÷>eeiÄ'†¶¢hì·aÏ«ª“<æ·eq&YEWâRD/Õç ¸Á#úÝäÕSnê ܇ƒ†|p{wÛ=ù䓲@¸¿ûe;ì§Ë>èþµyè€yàO|âîÝï~w±²?†€? çù?ƒó| áűÚwµ²ìq¥åݯuQÇ%kÌ®§U¾GG^±D~Õ¥¹i—ZoT&Åhu§è Üfc?7âïÅݘ p`“Ó‚'1<ŒÛ³±8È™gò „ë‹F-f 9 À¢kÜPAn á—ø†Ÿ[o½µ8Ï?Šž?àFÎË!ÆÐû|G3ì¨, 鏸ñ‡4@È£ü"œ(+þ@äâ;«RTp¾é €þxzpMëBvÔQ¦ðJdAøñ£õ–²g`›Ø²ÊÙ<¦³ãÈãJŽ ?Z'ôã{~Cx ·ß2f<-˜Å%ÃöãÙo bÿXLð–®ßnësÐ ©`µSõ¥hæ‡zȽñot_ÿú×E¿ùÖ:Áá œóãzXSìxŠSX_öã@G†ò–±éR7¼i ±¨ˆ|¤Ã.WçR—ÉB¿4ùŽu•@Sš"´L~Â: JY…ÎX å%”‹*«h Fi!Ÿ<Ú$Ìý«°h{ápñN¼ d ‹ƒCGcÃþž¾³Ý{åJ Äl Û ª¾¤Åä`ƒÑÂKj¹Ge½úó¥/}ÉýÎïüŽœ¶V·\ÿæy7zÑÎó5ðÙ¥¤úÜ;¨hµ'–û´… ìÌ<¢Z•‹U+ê$ß²%5 ZO"R¨«(èáÀ«ê¬ï„µÌ6° €À«¬²¼,ùóä@ЉåNˆæGAÎlÆwO°¦3u{ÛMß‹2ïÀÕ‚ÙíX(|ëO§œ ü¤¦äðTkŒºA—ô~ý×OèõáÎ=çFŸ3à†OGÕýÛpÅÙñÐñçщ„Æ2;=7öJ)Hö¿òž­àgÁ'‘×rª`*Tð’ÿj´B± J±cV_ˆW؈–â,Àhy)jËR°JÄh³S}*—‰q,{œÜ0ôL\Î=³Í`0À¬‹„C8-˜¾³ÅÚ/ÚÙûÔÁ¾€§M²˜üi1Ô5Àý÷ßïÆpÝø¼97zÁ \ÏgdC ›ô3t–Äœ©‰I˜G‡H«´Ë5":HÑaƒŸ$U©lqYñš“®<Ö®ÂJy”®n)Ýê% |8ºiP”Uÿ½\0ÂçsO¾²L:S4ˆê˜QÈ,_«<Ñ1lËBBpéÙƒh^ #ØðÓS¡s1À†wˆÊGCðùÇb60ŒÙÀ¾]OëSÝý¡AžÎÀï¿ù÷]{ûŒ›¼‹_ÚÉÙAâNÂF`¶4 ‡FRðE^ @§IƒQí)Þò(.ÎE7ªCeXÖÍò(]ó”>ŠÚ£>yTaã'ëW}2#Q´`Rø| ´-4uQ;ä'»×È(’xåUq6Ù2a-{ŸÅ¶ÇIfõ½Ká<òËlwƒ:|>¬}fc€àºÀÓu&ÐÓŽhŸ§RzéK_êŽ<êH7»ïŽS;ößI´EgÑ„œttÁhg%³²Ñ Uª6:,…å§26ù´le-lecØóÉ>”º¡²ê'd4`Cð ŸæÔ+eŸ³ÌÀR],kR>–…Î º2Gð”.«Óø+hËoa+£p"ï_ÙÀ3qcØy bM@^;†GŒ™ž® ƒ= E“Ü¿©AŠ‹—xé³€ë9 @/ÑŽÂ\a­Zj ´S¨Ü¥_[] ²¤lPåµ0iK˜x# mÉÓ÷t’>él€0é>•ôêT¹žÂ ”RU6ÌžT—Èh˜éBH Ø¢„% …ã—e Ê `¿W$¾ e—‡°. ‹„|’ðéz³ÐÓvÈíãßüÍßt‡~˜›½×Ì<³v#éT¡w¢ã€à.ÄŸ‚ó9X@¢BƒŠ9õOqCy”Ô %ßMJñ{Ý¢ÚÓ%”Ô–æÞýÕ¶É)÷z¥>¬“•ÇOÿQTL¨›Ö_U’Á´Iœ Z8Ð:Dñ58¬v•µGÙ‰ßt˜Ã}šøáS1¥‚q=ž@“ŠjÅ9š_ú—ºöX ¸¶< (:’rú\gZŒÈ¢F:ÿ}ÿÓ\øØ•-LGƒ@”ó²RVþˆ-[´ü‘.ëKh³èÃä G‘ÇÕC˜‰9lIÑö¢¨½¯ÊAHа?ª ,Ü/%¼ä‰ùre¶CŽæÍä²Y¼K`æñ‚ÊKÈKñf¡œ­·».ø:0 û àÇ+ã´þüöoÿ¶;ô°CÝì}˜Üï×"C,!bГؙÔ¶s‰,y4úÊÄ F[Û²•Y;^¯[[©L¤—ŸÎšÙŠâMpLß=S|ÔuS?‹ºÓ”*1êÚa™í"¬ÊïÂÊ«¹’Énà`†|ÄÃ\‰.x#`@’$Yœ;uñ.ê>T¹(ŸÇ”æ^ ñD1¿5°Ôi)úðRù¤]r©ôõ¬g5 ŽèrEÀÏøÅÜÐ ÙyLXÛ#(ZKå-!|tG=XŠì|ºQF㊸ C•›ÜÚ©ƒAþÄàV×ÿgÜíûñÖœ'ñNCþá0Ï·êîúü„Ûñïv»¿8éf§#šÔ!uxkÛàH±øè¯üBó?sþ{Q ò¨ ÂLš+ìË’ZÜöÉЂ¯%£*A~æÎÑŸçýO÷7 4@Õ~é•V5¨ðÉÀM‡nr³÷gfè E û^¥[‹±SÄËÆß)=/YÚ šoÚÉ[7¨\ܽçÓãnòK³nàÁ–Û0¼Q>‘Mq‡lÜèŽZs”[¹o­k_7þø„›¸'ÀÁo8ÇF`9à 㥢“8ú“¤äB<”K¢, ©ñˆ<ê˜ yù%¡ØgÅŽ#§×¡ô•ûÃå?yNÀOÅsÿª>Ÿª÷ºu2åxŒëV'G÷7ýÞ›üZïD'Ñ~‚<œÓPèPžA;¦áþ'üŒl¼,³’NРO ª_y›æ›Ý6çvfÂÍÝ4à6®ÝäÎ:÷wšÔ©yb>:. |O%Ìÿh[P?ê±›e ó¦øçÇçÝ^Léûh¹cŽÞìŽ9ñ$7:2ê¶>°Åñˆ¼©…ÐØ¾íq™ lÚ´É=ÿâŸu¯ü•׸õÃëÜäwg‹û$`¶T7ú (í9âWÇéí¦~‹¤}ö_ÖBèØñm%X#+¦å§p@ìhc)žB¶¾Ú@b ó#o z¨(óñézÙ¯SãÒÝãkË© ÔÀªî‚a±:S~ªyNñøÁ¹" Ï ›°§øN$¢ç‘z*à•xì£[é‡êUû¥\;§<ÅŒhðKô‚–ËAš¼±íæîêwGy”;äÐÃÝ^¼óæë¯q÷â+Æ |¾ïÑG•íŸ>÷Y7‰/ë§›Üyç_àÆ¦ÇÜÄwÌ©€Úòf‘u&­T‘B’™eBBAëGœÒ47¸ &æW^2¬ˆ'_ÈzºG ³Àùóÿ9<8É£?&>Lö#£æéûÛó°MR¬Mìu#¯Ë›ßüf·aÃ7wŸŸh‡B×!:a- 'ˆI“bK\ "c#YDä‡$Ý:X@Ü+TÎM„ªœúÚørî5m·vÅZ·vÃ!îáûïuwßu§[·n{É/¿Ô½ä¥/w/xÑ‹Ýs/zž;ꨣÜöíÛÝg?ýîÉ;ÄÌÑÇnvÇ}¬sw àqY mûªOßOƒpÈð|” ´ÄÑ_éÊ£¹â%7Hvôz)Zð“ŠÒ‰¾Êª¿¿ìÇàorÙÏö5 §­¼ØFÀrTp±:»‘ÏñràçeÁöŽ6î ÀZ¶3qß¡:5iÑ©€gaÖ Ü¢T袰ŠÀ,+b›1D”ßBð³ë"¬[G´ƒ# iæa ¸5«×¸Ù™Y ðSO;Íýê~ƒ{!ÿ¬³Ïqgœy¶;ùÏûYwêi§ Ïÿ÷Õ¯ˆs¸;ò¨c6»ÖÌ›ø¿FÅ꯷CTÑß9> /ùE?ºò¯4›Ö$ €‚Úð:Te ¶…è)¦*õY`Õ©J|Î~¦ïë ã…¿\ßéH,=dmZxé-uº×rè:[ =Z…K \zé¥ný†õnîAÌîáa½Çt 1Gq¡W±«{>ß¹„L–dgSª„HG–*”DYŸˆËv\ê×M|>·gÎõ·ûÝ* [¼ß­\µÊ|ú®54ˆé?®lXç6¬_çÖ®]'u>þ”ÓÝa‡æ|à¼ýaØœscv³%ÑkþªÏÖyõÙû"<¶-DF§ê^‡ê¢¬Êi®º=ô#a‚òºêÖó*|™o>J$Þñׯ»ÜÞ‚ÈW†óE´‹í¯ S-J/Kæàbƒu±Ÿ“Ïáé/W|ßø[o”YÀır>ɎÞ„ä;T[)+­fðl¥žM½:PåjG vL ZMQ¬f#ÿܼçOf(ÅWs8òH,hS ë7Hà¯[·Ö­F ¯^µÒqìf¡ßzóMníÑâ±605ìæÑüÞ·¢.Æ)३’16:æÖ¬Z'§B;v|5ˆ‰3À§Û¹ØŠñ €¢I÷› ÖØp•…¥àÍéÈáéùæ ÷8^vαx%½–J:¹<,}.t<ÃË :! %‡)iJ—2ÉÔÝVô§nÁ[lù©+òXÄÿ£:ÁÓ¿ç°Csnï¾½rÉoßÞÝn¯·â /Ï>÷\·yóf÷ŒsÎqÇŸp":=Þ”Œ‡£æ1âóî#¸W `zzÊ탌Ãëòøe±Kû¬#“…‹Y‘ºïIBO-ü©š_Á*xAš"ÃVpȾSTHy|ó Jˆ0‹iûÁ¢ÌÀïö~ÿª>¤Všð(ïbrkÇÂMuâ](‹K4ÊkȽ¦nä9°¤¾Ôú™ãç{áßñŽw8>2< ž ?ç‡"úÑ›XGíTÚÙˆ"‰¡a¾¬mRðhÉçªKÑ,S–ÿ¸=u;žVÄm¹ó÷¹9¼šj`#¾p{¤£ -ÌÖõ»¹58êï™pkÖ¬q{ðÁÓ'¶mâàjwÄᇻß~ÓàTçœçc ÀŸ Ø»g§œ.³y3‚ÚíÞ¹ÓcÀ8j_Üõ• × ~ñUë¡9‘r†o ÅùœûBø(CœlôÌ'kâÛNÛAx| ©RË…¬·¯B!ïð Jõ«nQTüÌáfŸé-D·SÿŽäâ¡\ß³x /ÞbZâO¨–Ž.Çi@No·§9=9ß_ö²—¹sq¾|ýõ×c€WBÕïú‡ü©‚ãv0…‘³öùi|é”@e8è,¼ó¸d7uËŒ›¸vÂõ?>ìÚxÿÜé§Ÿä.¿ür÷ò—¿œî¹þçvî:;6}1—õá6£/h¹‰/MÊ¢ß)§žêî¹ûn÷#\æ»ëöÛär§ú¸˜éŒ³ÎvG½ ƒ÷»ß~»›?|Ö­zéJù”šF©Æ[¨7ë¯màó¹'çÜÄm8üoiÛ¤|xcô9£8}ÑJ[6­#…ÜãX–­ ¶ÙЊ/rÁ«cd•A€üsÔ¤@‘æPÕÔ5¥ï|t·õX’ £UÁØžny«ì¦hï{ßûÜ‹_üb<(Ôç¦q>>|6ž£ç¢ ×4 Ùé|Ò%öGYQ€¼’È rn7ÿfÜyxØÙŽÀÇ(§žvœû“wþ‰{Õ«^åù‹ìØc1ÑY¢$ Þ)ÃøevÿóNwËÍ7ã¹€#ÝzÜÀK}|ç=×;N<éäùÃ:º ·Üp{ô‘GÜ즶[ñŠ!´TˆêY”‚ ’’äøAÛÌîBŽsëÁ#yG"¶k1 Ø:ᆟ‡kÎBûÀ!Ï/å5H‰ÀæÉðúá€œŠ©#!Í ŠA9hH¤Í܃ ï?`ZÌ5Ä.4¿9¼å9XàÒ „ØÑ&<*“;R+Ýæ9½9|NwŽŸ¶êhäÑ™ÌÅ_ŒGd/vW]u•s×àµÑÇ â›‚ ‡A@˜‹ŽÊ~N*B’ÅAöPvR ³»æÜôÍXÜ»¿ ©SNÙìÞùÎwºW¿úÕ"ÿð~}IªàžÿüçãÞz¬Êß4ƒÏ‰£Cã¯3 “h`r`Ÿ‘`/r–yJÀsLß:ë&nšt;ŠÀ?é¤cÜÛßþv÷k¿ökqS–Êr}š:õÔ‚T–mJôUA \«~cÅÄÀs͸{ä±I÷èý¸¾6‚— çVᦡð©ôóð©ô㱂(áãÏ·iƒu`¦¥¶$ÇD&€óÓøÁºa?ÕàMZ­¾n9^ëvãJÄÞ;÷âmÌ“nääAÇ5Šþµ”¥°/*Ž:™Þ´b,Ò4üý ²˜þût0LýÕ—åÌ#½¤Ê §0)þ\¦x—Wåc>hcžƒëå/zыܿþ뿺ù›pD=×Í7÷ŠË ÀÇSöDZÛ[g1pÌâÛsS®oGËÍ`z|ÌñGJàóƒ¥MÛc Â.@¤A/ëùÖIƒ²ñiÁ9LÕç÷AïŠA7€/æº0ˆÎH±/†¾¥dEøàŸçëÕ‘xÛ0¾ÁŠàÆç¸‡0À?/ÛràŠ;¿¹Ç«3á”ê™CnèÄ|”£°-ø£rî™ú‹rO0uîxtÚ Ž…Äãð¤B‹Ž{;*ÊPX6î/Sÿ;€3SΘrûÄâ-,BþÇâ-œãi‚·< . ¬Xj§Ñ¹*ÚbïEw•LÝ @sõÔºPÌ÷áXŽð»·ìÚÊU-÷â—¿ØñíÂÏ}îsUtÉrú ~P©ö 0cEñ%Að0`ð±Ù¹¬G!øðEÝ‹£>èTäQEîg%X8ê 4¶qÙ ÑN"èxƒO &™p3»Ú®õ®¼` 8ÄJÌÄ?Í¡¯ø¼<æË~üÔ¿—'ý:^=ý!î›ÒÐK•©$L9|.8sü9<}­¢åìh«d•Gmhùˆ#Žp—]v™ûò—¿ì^ûÚ×Ê–»©DeºÍé—ME8¤E,–]ÂòhÀ ƒÅ"¬©Dà‹mò¨mo¸d_uP÷þóëº2HŸêâGô£ufÀr‘W 8´ïlãÞ¶9 3…p'!î-€§M»éÑ«þ¼² IWýYVJ{*繺t‹gt5Ð@j§v‹Ï5~/zr2´Ñd _ªNÄlj¶øanMeb©2õV¥ù>Zû‡¤Ók,¦øKZ|¡„£U@ô€ …ñIé‚G¡ø/L“f輿€§tSF(ÐlÕÕ±PZür&ÀK†|‡ÁÞ'öºIL¸fÁÃI¸³qàPø'þÎÌ3øa—¯önó1_¬þ31øuê_`Ò¿Ö/ [n‹·pŽ'‡o"›ã±:-Ü-¿•%œ«86dËuiy¦?¶C)žy¶˜ì5iA˜­kN¿a  ÊDX]u¼‘h©X’eŸ/â³àaÆå’4 äa’ )Àbí Ò<%bOeÈî'ÉÏÜÂäãù?ŸþCÞ¢ÙI©L¶~fû1ˆ9à³ ã÷»™¸Rp/ÉG—©GO†qÔ7“k.×µÊ)O ¸>À€çËLgVà”G}ž&4Mª‹ü¶òoaËóT‡ ¬èRtìTÃät/ç @?ªêÓË@ uÛBfÞ`#{6P1h„À¦¡Y†]ù29–Ô0øS.rà_%žkw[ CºQ0’‰ƒ7ƒÞ¾ÕgáBbés6,ÞÂÖƒÞòX8ÇŸÃkß¶:[þ@ÌÌr.@©(µ“sxêÊÑr6ªdêh¤3ålÔâ×6V7³«c9`¾º‹OÌ–¦ëM ™#|a°ju3H+^xG}•aÎ,ÊÉS»MÜOMRS¾œ.+oaËŸÃ[ž¥„»µ×-Î×äRž Pòv;äœÉÙ ÎŽÒ˜§ü žIëTÅSpžÂr0`{„5€¢êVã¼SŒ/3“Æš *àH ¼|”÷\Ñ:yÁƒ§!)ÃUùùi, ¥ÚN÷éf9—zák*“³iñ9]9¼•=ØàØçä°TNÓX*àrxÚíu l•^Ò™´R~å_ú£)Õ¡•¶T¹µGÓm|ŸËm)˜ë 2€™ª¾à@£P~Å!ϲÒâ@äðÃý=?)–JÚö¤Y8UNÉWñÅúšÈ7•ÉéÊá­^ [~‹·°å±pËß. 4R¹à¬“K9S%“³C=UrJg^UnøÈ«)NÅ÷20ät©NÍe`A¦áŠm˜K€^–­°CÊ~ªO¤Òu Ô2sŽF¾,E¿Hý²»¸ßr©)­ŠÏênÊge,lå-ly$l}²°õÉö¯PK€UÊ'ùíW]9<éU´œ•cž²GÖÚûÔyTÍœ}æx|cÌ1çZc®÷Z¿¶­ðoü3íá}€VÚ‰;- à t,•n±£åÒºŠUÚÁzM 9ÞÄÏjù¬•Õ´]³GŠÝ”pÐ`Ð`”8¥ÄT¤S¾ ÏéØ¡Ô±6%Š“m³ Ô%\dCY[ÚÔÖì‡âw/ÚÍ-£  9Ç’mâi E‚FVŽ*@‡Üðÿ3R0éÁªžt.ñ[›Ðü`‚j‹M+v°ÇÞ õg2|eòÕÞ‡ç#›œLí•ÎÙ¨Nm”NaT¾Ytq@`èL´â§&>竤ƒ>Õt(¹v‡ˆá.œ¨OŠ‹hÚFº9ûÈ'ú¼¸bµÇ\Ú„µDó[x2i#'”¥^환#m…ôßÒ#†•Ù¬áҟŵú¬e¿=šë'kí·Ò -U×bs8Õ)j3'ŸÕ^}×øRLŠVŸÜXª ´Úªnb¨f%V©¤Ìùê«C»©ö;ZÓ.XúÏÕô—ÃtÕµ»jvYmÙ>ºvlÁÞãoß)|¡½*ëìhy×DgƒL`ò¨U†ÄgBž˜–¶lÖÈv®híLÈK8°Oi|]ÆE±J3$Ö91¨ûàjmRí¤ìSrõs*hîþ£­‰ ×8‚¯I*õ‘³)éà'Õg9¿•ñmç|DØZ¼Ún4…uüY˪;l·úî=Íñ½öÉpû-î[j–^¹ËÞñ¿Ø,½ /⫈„É h›½¨×íZ’¼ÖÀÒ?v÷ ´Ã~¸£} =°jEá²ó+½ç‡èáÿœ.‡ëkGŸ³ÚÓO—º¦ÍL—6#lõcÄ«Îr[å”MÎ}çlɵ«>@Gq£µôZ;õ1/±\}õÕí«Çî¾ûîæ·¿ýmsÓM75O<üDûuµûìSe/´Ïm½Ùî‡Ç§¼Q˜¸Cnýÿ0k‡¼`Æ$2ãš„éR‰|­9i‡'í`°•‡†MàA?–ž"‡ÿ½ÎóŠU:‡SÒjïéZœÚ©ÒŠ™•V¿J«_nU:%‡®Ó4%E.S69Сäl¡gçr{ôƒ:ŠòTñƒÝÕ>å7’û¶€Á«³ßúÖ·¶?ðÀÜpà ͵×^ÛÜrË-ÍÑ'ì Å·Ÿ°/ïâùx»W‹ä/Ä,™©zx?7ø0Î ,ÁÇ·7kOÚØÛ®>žü[ÁnÿèU\xžÔÃÓyZ¢¾Qïuž'uN·pƒÒ·ÒŠÙ zr)I¹ ¡‹a#'„µÉsmƒšýÊùR¼§iïåÊG¾kìÔGІo|¶¿ƒ6ïxÇ;šÇ{Ì>XrÂöÚ±w`É$‡*I¯+ÚïÚŠìŸìê/ßs¼9n_ôÑ‚wï!ñÏ:ÿ¬ðe]úžÃzç5&¥çKù®mGíS´úJÑ)Û.r;xLm8šÔp‹<)r9ÐåôðPÒ£í\ûÛ+ùT›ZZ}“®µ­ÅÁïE]Ô~¸ô%/yIû‚eûºN›àH\œäOyÐ-?odyûÊqO3¾yˆ¿ö3`¦C±¯ÿâå›,xU¾ðsÞyçµ{*Ñ›xà+WT¯tκVuJ{Ÿ9bkqj£´Ú+­˜YéÔz_jojðžg )9ô©` ËÙÍC]&¶‰¸J±»™…1jœû÷ïo~ô£Ùe8ûù½ËÃëñH|äm2&¼©Ç_rI?üöNð¡·ö„ùX±Ïœ/NòíÛ·¯MúÔ³ø­åÐȰh?”ŽÀªWÚcs:Åzœç›¢ÕFé¾V®¾”®µï‚›š`ìõ<HÉ¡ßèI ×6ãë:À~õG_›Qk¹þ^|ñÅÍ¥—^Ú4‡Íêá6›‡I‹d"™ebð[zMz@[;ØŠÍÊA»ÆoÇýxïžë®Ïó~üJzÅwÁö±ËùOéRrm´â”ö¸>eŸÊµ^Û '”è\#©Ààv9Û’¾ÆcçD‹‡X_3­=f¼ú'ÝÅïe—]Ö,_hÖžGÒ›åè×&:·ðsÛ’CÖnØÛÝûá–ðõ¤ù`ò›ÍÚÓkͪ½}»ùþC›ˆW‹çUÚë=¯x¯ó| [‹S{Oç|(¶§6)zž¾¢6|LL¹Æûê|ƒ>¨œ_`KzbjpÀr2Ý· ­yÿúÆ;ô 'q¿ÀI;F&ù0ÙÛ‰’]~˜ñàá¯=L€3ûA×ÖFŒä8ö_±­?¶ü¼âÂ10ô¸”–ƒ×{~ìȯó|«º󙲫µQœÒ)¿^®6J+®”_Šè©«h(:‹ ã¾:É•& "ç·Ô®úã ¥âW¬\.6µÙJ´Æ¸°[ŽròiLNã‹x­lüO·Ôí0Ònkû7âÇpˆp¯¿]î¼ÀN²Â±yHÊrúÈñ^çyâP{çSØZœÚ{:å#%÷öÊ÷±Q{¥#_‘lj€“HçÐ¥,§ã ›J¶œ­Æ”j›ñuÅÏØè##õ›Qû} øÃ†"ìÓ3w„%ôØFybG2²œZ_6Ÿ´oúµS¿~x~ÜŽãyöòOû.~iãëZ9œú¬Å¥lRö¥uBý¥èpÎS‰€€R‰˜ÓÕø&å:FJìÐbøßljÔfÞ´¡äÿÞ{ïmŸÁßeÏ ´É«INãVÆL§ã4¢Çµ؉ ß Å­ÉúÍ=Žñº·iÊc¾ûؤbŒ|E2ØOLiby^쫃Üä}Î7ô(À h¼­ ø×˜Oí!3‰¡k¢³m_ßÿýÍâY‹vG e+ŽÛY„‹(cLí“#Ì®ÝXUVšÕU¾ùc}–*{ê=O9ë’ž8Ô]°µv9ŸªSZ}{º§vj£´bji}ð'²™˜"H%YI)ÛšI gÏXs1ÃZ3±5õ¼’·¦­ý³k»×š]{,1°ÅöeœìPHÂØN»v4ÇÚ„bZÜel·cÐqlí‚&’©©×{~^Xõ£t—öÔNéœÅ)ÝÇ&µîuõ5q@ƒR:ç4§ƒœHu„íçìSƒ#5ðü©|»ÐŒ5núÓŸþÔ4ç,7 xL ŒìÅž@{¿@8”ƒEAbã~T·— Æ2Ôæ Kc·ë‡JLĤ…±ªÌÓ‘Çß(,ý—jß~ _‹S{µQZ1µtië?U€¹`rº’-ô5“@© ¶\ xÚ°¦|+ÕŒµÆöÅ/~±=þ_z¥I—½ø 4’y”ä4 &oM\Ò'ÓïÚk®íBVªÜŠ…ø´x^u¤=ÆóÄ¡ö:ÏÏ ›òSÛ^×Ç·Ú¤ò¥¶MõU=À(×t%½6ìéÚ½\ê³b=M[­=f#ym—tª½Ûn»­}Lx—%çÂùø.—!5á5ñ5ÙA[Âû-½&=ý´9½`ï ¸`>ÌĪÅóªõ-gãužWÿ^çù¶V×§69:o*ù½¯Ü$­Ø©sh8w|<‹žÊùGK'×jü°“ĂϵK|ªV?¦‹ï’¯ÈJ†÷ ì:o¥Yø+{?Þ/ç)f“‹‡gþÛ=ƒ-¾ÄþgOþ~¶ý /Ÿˆúɤ¥pc‘³ñ:Ï«oOwÁz[åkýôÁ©ÒÚ~ŽîcSÉ9„.·ÂϪç,7ωýÒ>åâçt©Õw»Y°·ÞzkóóŸÿ¼œkoúæ gñ‘ìLä±ó‘ÀËÉ[MgúÛâ' .¼ÀÞJt‘Ýô›ž}¶ý(§ï·ç‡Î&ÿG˜H6iµÎ•°%ýº§ÉuBå ÕÒ}qj—ó§8¥™*‹èÚ­?lÃCÇ:j$§~V=|Ôvm•Úƒ?-´éj§>6“ÆØ|ò“ŸlýöÛîù¹žôÃî8~­ :û!Ëñ3z|ÜoŸñ±çüLh¿5ü†zû–Å Müb›ŽÛ{ì§¥f,=†ËAýxZm”ö8ð^ïyµ©ÕÕâÔwZý+]ë£ }OìÀ‘ß2F2³ao3/=üp(í [Š˜¨ÐŽºT¨ßŒÚÇøå/¹9pà€½Ðvã.-F·ÕF®¯—Ñ–‡¥¸T/Ø•€=ûm8b/ÿ=vlüin_äÇc<_²)á½Þó꿯N}x:çS±µ8µa¨,¢»lýa?1@€à|D2`Y6Zv8]&Øù¾@V*Ñêã§ÔNJµ¯Ø'Ÿ|²¹æškšÁÙƒfé’e;Co[ñÉl_‡÷LôuÓ&U;!¸üˆ½ŽìùçÛóÓ¨I‰ï“ç'Ñë“9åóÄ—|±MÔ9¬ê”Vû­vJ—ì¨ïcC[ÔS„‘SÈrI0=Úε}—‰xíKÉ7ð©¢~RÊ£vºØÓOªþÔ§>Õüå/igÇp83¿Ižjrܰd{+‡›WöìÁMq‰úÉÔÚë=¯XÐ^ïyÏñj«´·Éé•ÎÙäÖeõQÊÕ\É FLª” "”ô°©ÅÔàãÎ ±©íE¿~ò¨=öûñÇo>ó™Ï4ƒsÃc{0g³ ?–^mQØý¸" O 26ÆO>ª=ÆóÞÆë=_«ÞÛz¾/6gW«SœÒ¹WCg':È%R)èçA,5¾3ëyLô…š1lD­íxú£ýhóÔSO5»þÆø9ßk7_x‘íàÞ+Ü Íñ*²\ñzÏ{Û’^ñ9¬×y^ýähµSÚÛärN±³lýá§j0:’ë ìKzbºàj°ðË2ïÉ€~7º¾îºëÚ¯ γ;þl‹»Y'þ¢~"–öìF$܈§k–K„‰dÚ¦×{^± »èKXõÝ[kWÊ5eVzjÈ™ äl©/aºàºbgÑÉ Ô/ÚlF}èСá®ÿYƒf³Oü¥ú¿`É›ƒP0 ”Š_À{™÷áõž/ásúY}yßäs~s:Ú—êY·þð?5@˜ ®”,°ÍÙ—üCÏRãËcKmïk?!”úéí7ŠÇ®?nüi^ºÜ,áÄßV,v2rñ•v>ÀNbÀß"¬!ûåãyÅ’öÏÇzV=ý ö¾<¯X¥=Ny¥Õtn½S»y$?Ú o‚B¯…Aæîʃ}tC ýÐÓ ú]㸨°Ÿ‘.×÷Ÿ“¥ÚùÎw¾ÓÜ|óÍÍÀ>>¸d¥Á¥·­ZìràÀHZ±…Ž=Ú¾7PÇH— ûɨcí1ž'ŽuW}ïužg›¥ºÖ.µÀ­R,^ŸœØh.°.dïœAç|Ô`è· ÖÛ€ÏÅA|m[Xµ>r¸Ã‡7W]uU3Øc»þÛ‰¿}9ôÖÐ-Øãƒ¿±½€û†÷à+Á(\nŒÒó”ka"YÉ&§Ïùó:Ï«_O+Vià<ïmkøymýÑÖÔ!€Ðó>ÀšD(ù€O`jp]±/Û¨mGmO5ý±}l¸ëÿ2Ûõ·Ýë;æ_Óÿö„ n²+¸"¬ûÉ4¦®úÞë<¯íz:‡Íéry¤vóL~Ä>5@¨ ’÷2ÈY|®ÀÁ>烾jqê³Æ/ý³f;ZS·Ùõw¿ûÝæg?ûÙh×ßr ïúû±Â݉í AÛ·Ä‚\6g÷<ñ”רyÚ²özÏÕ³`ÕVißN.wrvÞO>œRŽJÁä:BŸ%Š«ÅÂXþè£kM{­»ú˜ÿç?ÿ¹¹òÊ+G»þv»ï6ØõŸè3NÚÉJ>'€‚Ïšâqž|”0^ïyïSõJ{œç=Öó߇Ÿ÷Ö1dÏDA¢c¹ciN³ž`ÛÈ\›Ä²¦ ø.v´×Z}©ÜÓ]ÚÉù¼üòË›#GŽ4ƒ‹lál“]? v—"žT\±wಠ>$R³>¨ŸÜWÂx½çé‡uIO\©ö~<¯öÌ•‘V»H~´Ói@Óà(×:×1âà£ä§–6¨ÙFm;jÛ…ÖvJtÊ/žò»ñƷ宿ïSûœÀ«†R½CÐã¢åÉÔŽã«2O{žŸ¯ö9ß9].GrvÚö¬tr@¥ Jzt0×I_Ó–Ç–Ú&^k¶ÃZu›Mc«ÿéOzûîú»lOî7áèõaþ{Ñ2ˆdÎmq~´x^u ½Þó¯¼Ç*¯´Ú€Îå…·Û¨­?☘|ÃD2ÈY /a6b"@û5m3Ψ¦½ÖîTÈ>þñ78þo¶ÑYÿÒ¸,Ø«Ê÷\l({M?ÑùIDAT[9ö¸ž°VûH¦zÐ}0%¯÷¼AyU^iµéJodò#–‰ ‚(ðH¬–LnÖó¾jüÑXþ(ë[Ó¯ûú«±ûÁ~ÐÜpà ;b×ß÷wÉî À+İ"G'9ÎÞÎóÀåJä§ÆF}–ð9lÛ\tñ£ñô¥Ã“€Q”åNvÕ`ØùÜI!v¦Æ±¬i>+ñµµú­µ©Áá6ßõ]ÿíqÃOM¿ˆi_2:!øÜÑç&NÖŒiÌFÙ°OÞ‰§j®ÿ*#íýlôÖíNí0˜T탌p5 Dn0Ô/üñ§òMÖ%üfè?ñ‰O4¸ëo'íúûqÔ‚¼7ˤTú`6ʆ±zÿ%žv¨së»÷s*’1už`„`}Àk©Áße"¾Ö/°¾Ð–µ×Ÿjö¸þúëw䮿Žå.»7`°ß$öœ ô'K˨T<Æó‘½Çx>²¡ÌcK<íPç’_q OUò£­ä€ÎùÂ@KIlàúN51ÀT›Ön#d'Nœh?ì1¼×ÞðÓqPÚ¯ Nææ²(¹÷ËÝóÞ>ò[²Q[âÕ¶D«¯S™üˆ+90h Ž2­¡/a€¯Åq"è2cÒwM{D«/OGø¾²ÏþóÍ<°£wýýØàqaœDÁèKÍòã2QÛ’]¤dêSi-ñj :·.{_Þv£ù‰“€&:q–’kp5àÙá¨õšWs¶ô¾¦ ÚÕÔ껟ÂÜwß}Í7¿ùÍö›~[ý1ßTúÈÛ‚xdØ®v>wì¹fii©½C°v\=ÎóQLãùÈFe_âÕ4×a/ï}ê­?b˜ÚðA„yJ7DÔaú`1ˆ¹¤O_3fÖ^¿Y<®ùca/\¼ówýý/ØAƒÑ‹M°PZ§hïqž'Nkñ¼b#º„/és묷݌äGŸ§&}p±ätŠ©Á\-–An`CT³-­#ÜFʰåÿõ¯½e^í½‘}|ë#ø/ z“°ÚqYy™òí×)ÏG6*‹ð*SZíHçÖQo»YÉX'&;ãkàj°µ8øï‚~ÖÉ>PØ®ÖCÍüÿãrßÕW_Ý ^`¯ö¶]a<4s:–öA¼7À@£s,-\F*ót„ñ~¼ç=ÞûôzoŸK~ÝÌäG,ìêRGüÀÀ>*µ8ØvÁ²­yMôÇR5q]k<æË÷ûµßôëê`áq‡ ½A—}pܵ»•J„‰d9?_⽯šœñ6›ÉOMF;]êÇç:£~s8ú¾‹ ìt2¨‰½G¤g\]j|ÓïÇ?þqëïÒÇ®ðé\ÚG†m/ŸÃeA.gÖŽ1ùTí퀋d)ûïí=ï}•Ö7oï'>ïïTðáàfRy¹òèœï êIWƒõ6ä»ÔŒuÛyaï¾ûîæø@»µkÏ|Û—tÎÛýÄFm/{~ðü9ýßãÀ{Ù´Õ¤ÄãKü¤uþl?°ÞßVH~ÄU5ˆRšá€AG}g!J,쉯õµÉ‰@ë7/Ùç>÷¹æ½ï}oƒO{¡`Á¯—÷íí{A‹£ À?-X³Œ¹>è(ÔØ)´·)ñÞ¾”ÞßVI~ô£Ó&è\A§}ÇSø.Xú Mm´‹jöÉ×¶‹ì _øBóÕ¯~µ±›_ÛÛ`{í¹X+k‡l¥[íâiçbÛ/ÛaJô´àP3ý?Zî‘lÚrRâmJü¤uy£èým¥äG_&nòËñœõJ7épjnÊé‚ÕØhYM;j›£ÙǺh °EûÚ×¾Ö Î¶×a½v¹9͸Ç&‚ûÍà™¥æäsöžÿ3‡–õ6Ïa‡‡¨wïÞ\Žº¬E‰dCMþ¿·+ñÞ[iýðþ¶Zò£?Öò¼ð„(<–ƒ¡þ=†<±àkð´C­¶à»Úæk‰V„[n¹eøŒ‹l÷Oú ^cñ³ýðJ³d5¾ª{Z;±¿ò_£8Ûj;$X~fø°¾)à—_¶°Œd#É*²ñ2Ï{gÑ2WŒ·ßŠÉx§¸ïyí$i Fi@ˆ­ñG,jâ5&Õ—hµ']²™‡½¢à!žñ_8ǶnoB{Ó煮îe “¡½8o Ús‰]øG›,Gw jÂDË-’ÕŒ'ì|ñ2Ï{|i]÷öÚïk³ù‰=€\0蔟‘=ž3ï=¶£[Š…6Q­~¨ŸÅ}hýš×¼¦}ùÅêãË ®yóõÞ¸xö?ØÄö¼¢OSÏÙ<9øÛÑ^Òn›,ñ1!;?rü‰ã6/ &6F¥hùQ—«½çaÉÔ'×q•)íí·rò#î‰=¼v 4ô% p¤Ò@‡BŸ5~‡Ãÿ}íÔ‡ÒêÏÓŠ«¥/¹ä’æ]ïzW³ò„ÝíöKÛÕ}Äú::ñ‡=E{6þt/HöݶåÇ¡?~²ËNâyœ7õë—KŸqƒ­–ˆ÷2Ńöñx½·ßêÉø§öЉÒÖ-á8`5{¦Ö/°ZhY)&µ«¥Õ­ p¸ícðÃþ°ÙulЬ¾Ü>óeçð9mtñ·Ó°»öØ`ɯeÕÎ œ8h[3uYö]‘—y^ã!Íu™¼¯½íüèÃÄ;å;C¹¯«ÁbðJ¨¾é·Æ·ÚVÛ>öÞß,<ÎféK_jp/À‹_øâfÙ®¬Ü>hNÜi{¹¶¢¯9 /öŽV¶·ße"»O⬥áƒ\žc`"Zþ^æùÈ}iÝõ>¶Kò£¯áÀAð£Ü×µ¸®Úoþ|»5©}rúýó aËúBâ£ÿ'~kÉÿï¦Ñ{öìi«6.©Žaykáò÷2å=]³¾úv¶Sò£¿S‡~ØAÝóðµ8`uF­=<Ð6@—â&U«êgñ§~R4úùž÷¼§ýáqà¯|å+ÍÍ7ßÜôx³û¯ÍÚ ìd¡ûâÛ86nŸ´wéíÄ‚¤?i×ÿO>c¡½iWDŒÆmÒ¸Y Ë"ZF5cÙy™ç#¿ºŽFzȼŸí–üèCq…-%J-nèu}2è2h< K1±­\͸S˜y´AßoxÃÚ;:Ô|ãßh÷î½÷ÞæÙGì;zvãÐò_-7û¨N†áN9+·?;K¾K›ðv¸sÒÎø¯¶en—þVp;4~6, Ö–þEËÐË<µwº$?ú^=p 8€¥„ v%,0:è³Lµí×¥hºØå°çŸ~sÅW´l=~ó›ß4·Ýv[sû·7÷üþžæèm·ˆŸÜ»Üî,âIB›vá®bûí²%ØÒ[`o‰ŽKx'W¬¶_›ðv»øã„·³û(ø`(vóÎÎ…Á…ÿѲ©•y׺zøÈïvÜò³o'b j[­¯ ¡ëd í1ÖÚv‰ßŒ»¿o|ãÛß?7ÿ܆pÏ=÷´ÂwÞÙüþžß7O>ødóü»>ŽÛ‹w/4«‹¶ùÄ^í!,Øå3ÜZŒÚiÝ&¼Ž»-¨ûÐkf‡CiÔü’´%9NdâîF${{Ã|I>ºÆ‰ñ l–²\ػЮ7\&QB™Eu‰ì½Ìó)çºÞE˜ÈÏvN~ô19`0JÉÇáÂŒMe]ñ°Õ…RŠGÛRšíª¬6fµ9Õôk_ûÚ¿øÃmÓèÇ#<Òû61 £X¨¾p"bkq´!|É7mXë‚›u2 OÔ“ÊIw“v5u©í’Fìß¿¿ý•°£ñ[¹é¦›ÆÀ¬íçìsºR¬ÔG>jeô¡µ®C*WÚûßIÉ~NLøCÆB]) ˆƒ] ë}w±¡­_óœØkíeÛ¡öcĘgíOÎ>§cû5uÊO$d¾ÔX(.ò³Ó’ýštR4§&¹»`ÙmÀ×´A;Ö~oä„À6·ZíÇ`Þñé2ò¾s:Íñ)?‘<’E¾kÆ%òµ“ã31 ã]ŽUcÓ« ŽvÕ´£¶¤S }'L ©¾±ïó¬uYD~KúÈ&%‹|ÕÊ"ŸµãäÛØ©‰Ï1š˜ Ä ÑP“&8UsÐj”XøªÁk›³ØªÒ©•b+N ©XÙ—ªuÌ£6JúÈ&'Kù‹ä‘,ò]3v‘¯žü+?´7PCéªdå Ö&vW¼.\ÚRVÛ&ñ¹ºf…Qû>F×6´½Yi?vÞ_I| ÆûÍñ)‘<’E¾kÇ8ò·Ã’¿ÍåhŒ&&ˆg,‘Úǰžyæ™Cçž{®½¸yX8H5‰Ö ïă®ñœ/꺾~¼ß¾vE«ñµ?6QóÂD¾s²T»‘<’¥|×.“ÈçKþæ¯xž¶粎™¿ó1Èï~÷;¼¬iª@OÌ”Ò º`iJ›Ú6hçkõ3«/ï{«ó]úNlªOÔÏ{ é×·›“{lÄ#ñk’?j‰¿Ó’cô¦7½)Ìeè¦&18·Þzëøú0d¾Dè1ä‰EÝ¥ôµ‹ÚP_JGØí"Ó~(=küóôåc¡ïYåÞ|Mâ‡|Ù‰‰Ï>¾ímoç²îådYõ€½¼jXî¸ã{0µ\R 4eÙO?´cMù¬5ý¥êYýÏjŸŠ òy߯¼üÒú§Œ5uäY§äÔk}f«¯£1M_|ñÅã\¶»?ŸÄ‘‰ ÀòGT>ôÐC¯¶[Gt™U±Ðj põ=«½úÊÑÚÎfйØfÑi_fñ“³e&¥KÉ#µ‰[øõe'oõÙ×}ûöÙ»wï«É?ýôÓöæ…qybb°ûÃí5=±mOu®®.^uÕU÷ƒî:Ð]"ü-$èKEíI—lN'=ÇDëì?Û‰ÚHéRòÈd³l˜vê±~4V_ÿú×ÿûØ#çöìæ¸LN&^µýÕ×_ý?8pÀÞ`7,]&Xt]¨jÛY Ûf=‹¯ífË>³>ñ³-Ô¾Ôè¼MŠï²F±œ[}ŽÝ»ßýî;l÷ÿ‘G}íµ×êÕ€_O?ùcßg°—5°kÛÂÀ¾ÐrÄNâuMö*ŠÉÒçúwßËs}í&#žæ6ÊïtKó—D+xÇVŽ¿îu¯=;ÜÑÒà¥ösúœ.Фv‹ÛÈ÷锸ÛõÂ^97°¼=<Š}†ý‘7¿ùÍâIÐQyÇÄ!ÀHh¯vh.ç€;vìEùÈG²œº”ÀÙ˜XzÍÕX8ÑÊÙ@G;Ö%|­žþru­¯yãr1A·EcJµOŒ×SÞ%v®cÞWÄӿ׆Éø{ßûÞcšüvHòƒü åþ8ùñNê[£ Ï×”ÿ—ƒoo¤yÝe—]¶ðÇ?þïm ±¡2rauYÔÚ÷õ¡þr´oëTñ¹˜fÑiü5~jð9 u5mÓg}¢-k$þé–üö)ú³-ÿÒ\ð?9¨úÓŸþê®»îºHd×ý\t@Ì’ ücÞIvùßùÎwþⳟýìþè€8Ô}`7¯]òyùALÛ½ åøë_ÿúð c3vU”ôcGB ñ»”¨Ó-é1^v×îßúÖ·Úû ìÃs“žSù°mÀ_f‡<ˆ¶ýýÈMð²h“N ~ ‹%ÿI»½ð{‡Ý£æxÅŽ#÷sÎ98¹ú뛌}ígT÷˜"_[MÖ5yl·pùío;^/Z]¢„Sã’^±J§ìRò®}Õ¶vü;„;üì&Ÿ;Ñ÷R\êÓ³ýì#Žûß÷¾÷5÷ß{No$ÿ«Ûœ–Ƭ-áÿ%ãÕÆ«“Þ[yø-%wIÏØjqÄŸ©×GÀV˜ã¿üå/'öR ·n•§º&f—öj±µ¸|O¶·Çü7Þxão®¼òÊ¿—-?:…«z—Ù¯ý.UÕ++¸:p¹Õ˜9ÆwA2Ë–µ”Ä%ý0‚õÿ]ñë–;—Š’Â&övˆt]F¢kÒÃw×6kñµ¸.ýÛnX»Ûïñ}èCÏÛäþ*ûÃÆãáQÊ»L´Y°‰àùßö{½ øË-á^nô9Ì2À¾&yk0ð¥¥Úo'º6 lYÿÅ/~Ñ>ýÙµµmx¿]íjñµ8ÏvçmKòÔ‘#Gž²øŽ^wÝuçÙɾWÙ$ໆ›üþÉ~©¢Ï ögèí=gYÁeßd™GbÍsát<Á—\8u \÷û’ý>i¿ñ5@šN¼€Â3õé=›•ôõ\Ûg’¿Óz‰]€ÿg¿ÏÛïÁ”å™ 52§‘<—t]†¡Ï–žþs1œI|ŽRXãñÞ'í‡gxìClÍö»É~ÿj?½ïߨéòßÈ µÔîæI”IEND®B`‚icnV C CorsixTH-0.61/CorsixTH/Levels/000077500000000000000000000000001321660673500161115ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Levels/Example.map000066400000000000000000005001541321660673500202100ustar00rootroot00000000000000                                AxyAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxq  AyAAAAAAAAAAAAAAAAAAAq  AyAAAAAAAAAAAAAAAAAAAq  AyAAAAAAAAAAAAAAAAAAAq  AyAAAAAAAAAAAA  KyAKAKAKAKAKAKAKAKq AyAAAAMqD@AyAAAAq  AyKAKAKAKAKAKAKAKAq AyAAAALqCOAyAAAAq <= K{AKAKAKAKAKAKAKAKq AyAAAAAxAxAxAAAAAq   A}KAKAKAKAKAKAKAKAq AyAAAAAAAAAAAAq         KyAKAKAKAKAKAKAKAKq AyAAAAAAAAAAAAq  AyKAKAKAKAKAKAKAKAq AyAAAAAAAAAAAAq  K{AKAKAKAKAKAKAKAKq AyAAAAAAAAAAAAq  A}KAKq > KyAKAq AyAAAAAAAAAAAAAxAxAxAxKxAxKzA|KxAx:KÚ;AKØAxKxAxKxAKAKq AyAAAAAAAAAAAAAAAAAKAKAKAKAKAKAKAKAq  p p p p p p p p p p p p p p p p=pK{AKAKAKAKAKAKAKAKs A}KAKAKAKAKAKAKAKAu KyAKAKAKAKAKAKAKAK>q:AÛKAKAKAKAKAKAKAKA:×;KAKAKAKAKAKAKAKAK;AÙKAKAKAKAKAKAKAKAÕ                                                   =KyAKAKAKAKAKAKAKAK<q                                                           AyKAKAKAKAKAKAKAKAs KyAKAKAKAKAKAKAKAKu A{KAKAKAKAKAKAKAKAq K}AKAKAKAKAKAKAKAKs AyKAKAKAKAKAKAKAKAu KyAKAKAKAKAKAKAKAKq  p p r t p=p:Ö;Ô 0 #gbv.ResearchPointsDivisor 1 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 200 #awards_trophies.CansofCokeBonus 10000 #awards_trophies.Reputation 850 #awards_trophies.TrophyReputationBonus 20000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 2 1 50000 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN CorsixTH-0.61/CorsixTH/Levels/avatar.map000066400000000000000000005001541321660673500200730ustar00rootroot00000000000000   ¶¶   ¶  ¶ ¶ ¶¶  ¶ ¶  ¶ ¶    ¶ ¶ ¶¶ ¶   ¶¶ ¶   ¶¶   ¶¶ ¶   ¶ ¶ ¶  ¶¶  >¶ ¶  < =¶¶ < ¶ = < N;: = ¶MD@¶  >LCO  x{xz|xz|xxq >¶  }s xyxz|xxxxz|xxq xyxz|xxxxz|xxq >  yu¶ {q ys  {q }q yu  }q y>q y>q > ys {xz|xxx:×< =:Ûu¶ };› ;>q yÕ> Ùxxz|xxq  p p p p=pyLCO ¶¶ }s¶ yq¢­ yu§ >¶  yu  p r t=p:Ö;Ô yq§ > ¶¶ yq¶  yq§  {s¼ ¼  p p r t=p:Ö;Ô ¶¶ yq    p r t p r t p r t p p ¶¼ ¼¾ <     =  £¯¯¯¤ ¶¼ ¼¾ ¢¯¯¯­  >     =<     :Úy;Øxz|xxxz|x:Ú;Øq ¶ {s  }u ¶ yq  {s ¶ }u  yq ¶  p p r t p r t p r t p r t p p  ¶   ¶ ¶    ¶  ¶  ¶ ¶¶   ½  ¶  ¶¶ ¶ ¶ ¶   ¶  ¶ ¶¶    ÁCorsixTH-0.61/CorsixTH/Levels/confined_v5.level000066400000000000000000000247051321660673500213510ustar00rootroot00000000000000Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Confined" %MapFile = "confined_v5.map" %LevelBriefing = "You have been tasked to build a hospital in an area where only a few apartments are for sale. Land prices around here are astronomical, so you will have to live with a very confined space until you have earned enough money to expand." %LevelDebriefing = "Great job! You never really noticed the space issue, right?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 15000 1000 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 100 The following table contains all diagnoses and treatments that shows up in the drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease, MaxDiagDiff is how hard it is to diagnose (don't apply to diag rooms). #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd.MaxDiagDiff 1 40000 500 BLOATY_HEAD #expertise[3].Known.RschReqd.MaxDiagDiff 1 40000 150 HAIRYITUS #expertise[4].Known.RschReqd.MaxDiagDiff 1 60000 150 ELVIS #expertise[5].Known.RschReqd.MaxDiagDiff 1 60000 150 INVIS #expertise[6].Known.RschReqd.MaxDiagDiff 1 60000 750 RADIATION #expertise[7].Known.RschReqd.MaxDiagDiff 1 40000 150 SLACK_TONGUE #expertise[8].Known.RschReqd.MaxDiagDiff 1 60000 350 ALIEN #expertise[9].Known.RschReqd.MaxDiagDiff 1 20000 100 BROKEN_BONES #expertise[10].Known.RschReqd.MaxDiagDiff 1 40000 150 BALDNESS #expertise[11].Known.RschReqd.MaxDiagDiff 1 40000 500 DISCRETE_ITCHING #expertise[12].Known.RschReqd.MaxDiagDiff 1 40000 450 JELLYITUS #expertise[13].Known.RschReqd.MaxDiagDiff 1 40000 500 SLEEPING_ILLNESS #expertise[14].Known.RschReqd.MaxDiagDiff 1 30000 300 PREGNANT #expertise[15].Known.RschReqd.MaxDiagDiff 1 40000 250 TRANSPARENCY #expertise[16].Known.RschReqd.MaxDiagDiff 1 20000 250 UNCOMMON_COLD #expertise[17].Known.RschReqd.MaxDiagDiff 1 60000 750 BROKEN_WIND #expertise[18].Known.RschReqd.MaxDiagDiff 1 20000 250 SPARE_RIBS #expertise[19].Known.RschReqd.MaxDiagDiff 1 20000 500 KIDNEY_BEANS #expertise[20].Known.RschReqd.MaxDiagDiff 1 20000 500 BROKEN_HEART #expertise[21].Known.RschReqd.MaxDiagDiff 1 20000 600 RUPTURED_NODULES #expertise[22].Known.RschReqd.MaxDiagDiff 1 40000 250 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd.MaxDiagDiff 1 60000 250 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd.MaxDiagDiff 1 40000 500 CORRUGATED_ANKLES #expertise[25].Known.RschReqd.MaxDiagDiff 1 40000 600 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd.MaxDiagDiff 1 40000 300 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd.MaxDiagDiff 1 40000 300 FAKE_BLOOD #expertise[28].Known.RschReqd.MaxDiagDiff 1 40000 500 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd.MaxDiagDiff 1 20000 750 THE_SQUITS #expertise[30].Known.RschReqd.MaxDiagDiff 1 20000 700 IRON_LUNGS #expertise[31].Known.RschReqd.MaxDiagDiff 1 40000 750 SWEATY_PALMS #expertise[32].Known.RschReqd.MaxDiagDiff 1 20000 500 HEAPED_PILES #expertise[33].Known.RschReqd.MaxDiagDiff 1 20000 750 GUT_ROT #expertise[34].Known.RschReqd.MaxDiagDiff 1 20000 500 GOLF_STONES #expertise[35].Known.RschReqd.MaxDiagDiff 1 20000 500 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 1 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 1 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 1 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 1 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 1 12 1 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 1 9 1 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 1 7 1 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 1 11 1 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 1 8 1 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 1 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 1 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 1 10 1 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 1 8 1 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 1 7 1 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 1 10 1 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 1 I_HAIRYITUS #visuals[2] 1 I_ELVIS #visuals[3] 1 I_INVIS #visuals[4] 1 I_RADIATION #visuals[5] 1 I_SLACK_TONGUE #visuals[6] 1 I_ALIEN #visuals[7] 1 I_BROKEN_BONES #visuals[8] 1 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 1 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 1 I_PREGNANT #visuals[13] 1 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 1 I_BROKEN_HEART #non_visuals[5] 1 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 1 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 1 I_GOLF_STONES #non_visuals[19] 1 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 0 8 8 3 2 10 10 10 10 5 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 25 Handyman #staff[3].MinSalary 20 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 40 Surgeon #gbv.SalaryAdd[6] 30 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 150 #gbv.TrainingRate 40 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 15 Skeleton #gbv.TrainingValue[2] 20 Bookcase --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 200 #awards_trophies.CansofCokeBonus 10000 #awards_trophies.Reputation 850 #awards_trophies.TrophyReputationBonus 20000 ------------------ Winning and Losing Conditions ------------------- 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 500 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 50000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 50 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 50 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 100000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 250 1 300 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -20000 2 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 50 3 40 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN ----------------------- Emergency Control -------------------------- #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 5 4 6 16 75 400 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 8 10 3 5 32 75 500 CorsixTH-0.61/CorsixTH/Levels/confined_v5.map000066400000000000000000005001541321660673500210140ustar00rootroot00000000000000???????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>3>1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>9>)>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>><? ? ? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?¸?·?¸?·?¸?·?¸? ?>>>?¸?·?¸?·?¸?§???????? ?>>>????????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§???????? ???????§???????? ?????????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????xyz|x:Ú>;>Øz|q????§????xyz|xx:Ú>;>Øxxz|xq???§???½????½????½??? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????{s????§????yq???§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????}u????§????yq???§???½????½????½??? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????yq????§????yq???§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????yq????§????yq???§???½????½????½??? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????yq????§????p?p?t?p?ypq?r?t?p????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????{s????§????????{s???????§???½????½????½??? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????}u????§????????}u???????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????yq????§????????yq???????§???½????½????½??? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????yq????§????????yq???????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§?????p?r?t?p?p?p?r?t?p?????§????????r?t?p?r?t????????§???½????½????½??? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§??????????????????§????????????????????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§??????????????????§????????????????????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?§??????????????????§????????????????????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>?¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?©?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?«???xyxz|xxz|xxq? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§???ys? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§???{u? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§???}q? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§???ys? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§???yu? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§???: Ö?;>Ô?p?{:×? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¾? ?>??};>>>>9>)>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¼? ?>??y Õ?=?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¾? ?>??ys? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¼? ?>??{u? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¾? ?>??}q? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¼? ?>??ys? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¾? ?>??yu? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¼? ?>??yq? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¾? ?>??p?p?r?t?p?p?? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¼? ?>>????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??¾? ?>>>>>>>>>>>>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§??? ? ? ? ? ? ? ? ? ? ? ?=?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????§?????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>???????????????????????????????????????¢?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯?¯? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>???????????????????????????????????????????????????? ?>>9>*>(>2>*>(>2>1>>>????????????????????????????????????????????????????? ?>>9>*>(>2>1>>>????????????????????¹CorsixTH-0.61/CorsixTH/Levels/demo.level000066400000000000000000000120301321660673500200620ustar00rootroot00000000000000Copyright (c) 2010-2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Demo Town" %MapFile = "LEVEL.L1" %LevelBriefing = "This is the only map available as long as you use the Theme Hospital Demo files." %LevelDebriefing = "That was not too hard right? Time to get the real deal?" #town.StartCash 60000 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 100 #expertise[2].Known.RschReqd 1 40000 BLOATY_HEAD #expertise[4].Known.RschReqd 1 60000 ELVIS #expertise[5].Known.RschReqd 1 60000 INVIS #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 1 40000 DISCRETE_ITCHING #expertise[13].Known.RschReqd 0 40000 SLEEPING_ILLNESS #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 0 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 0 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[22].Known.RschReqd 1 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 0 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 0 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 0 40000 CHRONIC_NOSEHAIR #expertise[28].Known.RschReqd 0 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 0 20000 THE_SQUITS #expertise[31].Known.RschReqd 0 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 0 20000 HEAPED_PILES #expertise[33].Known.RschReqd 0 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 1 40000 I_D_SCANNER DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 1 Scanner #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 1 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 1 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 0 12 1 Operating Table #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine #visuals[0] 1 I_BLOATY_HEAD #visuals[2] 1 I_ELVIS #visuals[3] 1 I_INVIS #visuals[5] 1 I_SLACK_TONGUE #visuals[8] 1 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[13] 1 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 1 I_BROKEN_HEART #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[19] 1 I_UNEXPECTED_SWELLING #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 700 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 100000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 75 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 6 1 70000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 300 1 350 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 5 1 40 2 0 --------------------- Competitor Information ----------------------- #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN CorsixTH-0.61/CorsixTH/Levels/example.level000066400000000000000000000273661321660673500206130ustar00rootroot00000000000000Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Only lines beginning with % or # as explained below will be considered by the game. Each line beginning with a %-sign is a directive to use when loading the game, such as the name of the level and where to find the map file. Available commands: - Name: What the level should be called (within quotes) - MapFile: The name of the binary map file to load. First the Levels directory of the original game will be searched, and then the Levels directory of CorsixTH. - LevelBriefing: The body of text shown before you start a custom scenario, and as first information when you have just started a new level. Everything between the citation marks will get included. If you use new lines: One new line is simply discarded, while two new lines in a row creates a new paragraph. So does the special expression // (legacy from Theme Hospital) - LevelDebriefing: Text shown in the fax when you win a level. Lines that begin with # defines all parameters for the level. By default there are no diseases and only some basic rooms are available. ---------------------- General Information ------------------------- %Name = "Example Town" %MapFile = "Example.map" Everything within citation marks will be the briefing/debriefing. Two new lines creates a new paragraph, but additional new lines in a row are discarded. %LevelBriefing = "This is an example map that shows aspiring map makers what can be done when making new fantastic creations!" %LevelDebriefing = "Congratulations! You played through the example map. Time to do your own?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 100000 300 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 100 The following table contains all diagnoses and treatments that shows up in the drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease, MaxDiagDiff is how hard it is to diagnose (don't apply to diag rooms). #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd.MaxDiagDiff 1 40000 500 BLOATY_HEAD #expertise[3].Known.RschReqd.MaxDiagDiff 1 40000 150 HAIRYITUS #expertise[4].Known.RschReqd.MaxDiagDiff 1 60000 150 ELVIS #expertise[5].Known.RschReqd.MaxDiagDiff 1 60000 150 INVIS #expertise[6].Known.RschReqd.MaxDiagDiff 1 60000 750 RADIATION #expertise[7].Known.RschReqd.MaxDiagDiff 1 40000 150 SLACK_TONGUE #expertise[8].Known.RschReqd.MaxDiagDiff 1 60000 350 ALIEN #expertise[9].Known.RschReqd.MaxDiagDiff 1 20000 100 BROKEN_BONES #expertise[10].Known.RschReqd.MaxDiagDiff 1 40000 150 BALDNESS #expertise[11].Known.RschReqd.MaxDiagDiff 1 40000 500 DISCRETE_ITCHING #expertise[12].Known.RschReqd.MaxDiagDiff 1 40000 450 JELLYITUS #expertise[13].Known.RschReqd.MaxDiagDiff 1 40000 500 SLEEPING_ILLNESS #expertise[14].Known.RschReqd.MaxDiagDiff 1 30000 300 PREGNANT #expertise[15].Known.RschReqd.MaxDiagDiff 1 40000 250 TRANSPARENCY #expertise[16].Known.RschReqd.MaxDiagDiff 1 20000 250 UNCOMMON_COLD #expertise[17].Known.RschReqd.MaxDiagDiff 1 60000 750 BROKEN_WIND #expertise[18].Known.RschReqd.MaxDiagDiff 1 20000 250 SPARE_RIBS #expertise[19].Known.RschReqd.MaxDiagDiff 1 20000 500 KIDNEY_BEANS #expertise[20].Known.RschReqd.MaxDiagDiff 1 20000 500 BROKEN_HEART #expertise[21].Known.RschReqd.MaxDiagDiff 1 20000 600 RUPTURED_NODULES #expertise[22].Known.RschReqd.MaxDiagDiff 1 40000 250 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd.MaxDiagDiff 1 60000 250 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd.MaxDiagDiff 1 40000 500 CORRUGATED_ANKLES #expertise[25].Known.RschReqd.MaxDiagDiff 1 40000 600 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd.MaxDiagDiff 1 40000 300 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd.MaxDiagDiff 1 40000 300 FAKE_BLOOD #expertise[28].Known.RschReqd.MaxDiagDiff 1 40000 500 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd.MaxDiagDiff 1 20000 750 THE_SQUITS #expertise[30].Known.RschReqd.MaxDiagDiff 1 20000 700 IRON_LUNGS #expertise[31].Known.RschReqd.MaxDiagDiff 1 40000 750 SWEATY_PALMS #expertise[32].Known.RschReqd.MaxDiagDiff 1 20000 500 HEAPED_PILES #expertise[33].Known.RschReqd.MaxDiagDiff 1 20000 750 GUT_ROT #expertise[34].Known.RschReqd.MaxDiagDiff 1 20000 500 GOLF_STONES #expertise[35].Known.RschReqd.MaxDiagDiff 1 20000 500 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 1 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 1 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 1 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 1 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 1 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 1 12 1 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 1 9 1 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 1 7 1 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 1 11 1 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 1 8 1 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 1 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 1 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[42].StartAvail.StartStrength.AvailableForLevel 1 10 1 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 1 8 1 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 1 7 1 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 1 10 1 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine | Diseases available | Value property to be determined | Comment #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 1 I_HAIRYITUS #visuals[2] 1 I_ELVIS #visuals[3] 1 I_INVIS #visuals[4] 1 I_RADIATION #visuals[5] 1 I_SLACK_TONGUE #visuals[6] 1 I_ALIEN #visuals[7] 1 I_BROKEN_BONES #visuals[8] 1 I_BALDNESS #visuals[9] 1 I_DISCRETE_ITCHING #visuals[10] 1 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 1 I_PREGNANT #visuals[13] 1 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 1 I_BROKEN_WIND #non_visuals[2] 1 I_SPARE_RIBS #non_visuals[3] 1 I_KIDNEY_BEANS #non_visuals[4] 1 I_BROKEN_HEART #non_visuals[5] 1 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 1 I_INFECTIOUS_LAUGHTER #non_visuals[8] 1 I_CORRUGATED_ANKLES #non_visuals[9] 1 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 1 I_FAKE_BLOOD #non_visuals[12] 1 I_GASTRIC_EJECTIONS #non_visuals[13] 1 I_THE_SQUITS #non_visuals[14] 1 I_IRON_LUNGS #non_visuals[15] 1 I_SWEATY_PALMS #non_visuals[16] 1 I_HEAPED_PILES #non_visuals[17] 1 I_GUT_ROT #non_visuals[18] 1 I_GOLF_STONES #non_visuals[19] 1 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists.ShrkRate.SurgRate.RschRate.ConsRate.JrRate 0 8 8 3 2 10 10 10 10 5 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 25 Handyman #staff[3].MinSalary 20 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 40 Surgeon #gbv.SalaryAdd[6] 30 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.TrainingRate 40 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 15 Skeleton #gbv.TrainingValue[2] 20 Bookcase --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 200 #awards_trophies.CansofCokeBonus 10000 #awards_trophies.Reputation 850 #awards_trophies.TrophyReputationBonus 20000 ------------------ Winning and Losing Conditions ------------------- But we don't want any such conditions on the example level! 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #win_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[3].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[4].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 #lose_criteria[5].Criteria.MaxMin.Value.Group.Bound 0 0 0 0 0 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN ----------------------- Emergency Control -------------------------- #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 5 4 6 16 75 400 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 8 10 3 5 32 75 500 CorsixTH-0.61/CorsixTH/Levels/finisham.level000066400000000000000000000330041321660673500207400ustar00rootroot00000000000000Copyright (c) 2013 Mark "MarkL" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------- General Information ------------------------- %Name = "Finisham" %MapFile = "finisham.map" %LevelBriefing = "The Ministry of Health wants you to run his newest hospital in the holiday resort of Finisham. This hospital is located in a popular tourist spot and they are opening a Theme Park nearby next year, so expect seasonal peaks in visitors. You are expected to run a superb hospital with the highest of standards; he expects nothing less than perfection. You should aim to keep queues to a minimum and keep your staff happy at the same time. Get a reputation of at least 700, treat 85% of your visitors, cure 900 patients, amass $500,000 in the bank and have a hospital worth $400,000 to keep the Minister happy and make him a big wad of cash at the same time." %LevelDebriefing = "Extremely good work! Where to next?" Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 30000 1200 -------------------- Disease Configuration ------------------------- When a drug is researched, what effectiveness does it have #gbv.StartRating 80 The following table contains all diagnoses and treatments that shows up inthe drug casebook in the game. Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. #expertise[1].Known.RschReqd 1 0 GENERAL_PRACTICE #expertise[2].Known.RschReqd 1 40000 BLOATY_HEAD #expertise[3].Known.RschReqd 0 40000 HAIRYITUS #expertise[4].Known.RschReqd 0 60000 ELVIS #expertise[5].Known.RschReqd 0 60000 INVIS #expertise[6].Known.RschReqd 0 60000 RADIATION #expertise[7].Known.RschReqd 0 40000 SLACK_TONGUE #expertise[8].Known.RschReqd 0 60000 ALIEN #expertise[9].Known.RschReqd 0 20000 BROKEN_BONES #expertise[10].Known.RschReqd 0 40000 BALDNESS #expertise[11].Known.RschReqd 0 40000 DISCRETE_ITCHING #expertise[12].Known.RschReqd 0 40000 JELLYITUS #expertise[13].Known.RschReqd 0 40000 SLEEPING_ILLNESS #expertise[14].Known.RschReqd 0 30000 PREGNANT #expertise[15].Known.RschReqd 0 40000 TRANSPARENCY #expertise[16].Known.RschReqd 0 20000 UNCOMMON_COLD #expertise[17].Known.RschReqd 0 60000 BROKEN_WIND #expertise[18].Known.RschReqd 0 20000 SPARE_RIBS #expertise[19].Known.RschReqd 0 20000 KIDNEY_BEANS #expertise[20].Known.RschReqd 0 20000 BROKEN_HEART #expertise[21].Known.RschReqd 0 20000 RUPTURED_NODULES #expertise[22].Known.RschReqd 0 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].Known.RschReqd 1 60000 INFECTIOUS_LAUGHTER #expertise[24].Known.RschReqd 0 40000 CORRUGATED_ANKLES #expertise[25].Known.RschReqd 0 40000 CHRONIC_NOSEHAIR #expertise[26].Known.RschReqd 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].Known.RschReqd 0 40000 FAKE_BLOOD #expertise[28].Known.RschReqd 0 40000 GASTRIC_EJECTIONS #expertise[29].Known.RschReqd 1 20000 THE_SQUITS #expertise[30].Known.RschReqd 0 20000 IRON_LUNGS #expertise[31].Known.RschReqd 0 40000 SWEATY_PALMS #expertise[32].Known.RschReqd 0 20000 HEAPED_PILES #expertise[33].Known.RschReqd 0 20000 GUT_ROT #expertise[34].Known.RschReqd 0 20000 GOLF_STONES #expertise[35].Known.RschReqd 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 40000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 0 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 30000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 1 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 1 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 1 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 1 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 1 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 1 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[40].StartAvail.StartStrength.AvailableForLevel 0 1 1 Research Computer #objects[41].StartAvail.StartStrength.AvailableForLevel 0 1 1 Chemical Mixer #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 1 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 1 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 1 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 1 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine #objects[57].StartAvail.StartStrength.AvailableForLevel 0 57 1 Video Game #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 21 I_HAIRYITUS #visuals[2] 7 I_ELVIS #visuals[3] 9 I_INVIS #visuals[4] 23 I_RADIATION #visuals[5] 11 I_SLACK_TONGUE #visuals[6] 41 I_ALIEN #visuals[7] 11 I_BROKEN_BONES #visuals[8] 12 I_BALDNESS #visuals[9] 5 I_DISCRETE_ITCHING #visuals[10] 12 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 18 I_PREGNANT #visuals[13] 16 I_TRANSPARENCY #non_visuals[0] 1 I_UNCOMMON_COLD #non_visuals[1] 3 I_BROKEN_WIND #non_visuals[2] 19 I_SPARE_RIBS #non_visuals[3] 31 I_KIDNEY_BEANS #non_visuals[4] 25 I_BROKEN_HEART #non_visuals[5] 18 I_RUPTURED_NODULES #non_visuals[6] 1 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 14 I_INFECTIOUS_LAUGHTER #non_visuals[8] 21 I_CORRUGATED_ANKLES #non_visuals[9] 15 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 31 I_FAKE_BLOOD #non_visuals[12] 13 I_GASTRIC_EJECTIONS #non_visuals[13] 6 I_THE_SQUITS #non_visuals[14] 9 I_IRON_LUNGS #non_visuals[15] 9 I_SWEATY_PALMS #non_visuals[16] 15 I_HEAPED_PILES #non_visuals[17] 18 I_GUT_ROT #non_visuals[18] 7 I_GOLF_STONES #non_visuals[19] 5 I_UNEXPECTED_SWELLING ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 25 Handyman #staff[3].MinSalary 20 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 40 Surgeon #gbv.SalaryAdd[6] 30 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 75 #gbv.TrainingRate 40 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 15 Skeleton #gbv.TrainingValue[2] 20 Bookcase #popn[0].Month.Change 0 2 #popn[1].Month.Change 3 0 #popn[2].Month.Change 18 20 #popn[3].Month.Change 21 -58 #popn[4].Month.Change 22 0 #popn[5].Month.Change 30 25 #popn[6].Month.Change 33 -76 #popn[7].Month.Change 34 0 #popn[8].Month.Change 42 28 #popn[9].Month.Change 45 -85 #popn[10].Month.Change 46 0 #popn[11].Month.Change 54 30 #popn[12].Month.Change 57 -90 #popn[13].Month.Change 58 0 #popn[14].Month.Change 66 30 #popn[15].Month.Change 69 -90 #popn[16].Month.Change 70 0 #popn[17].Month.Change 78 30 #popn[18].Month.Change 81 -90 #popn[19].Month.Change 82 0 #popn[20].Month.Change 90 30 #popn[21].Month.Change 93 -90 #popn[22].Month.Change 94 0 #popn[23].Month.Change 102 30 #popn[24].Month.Change 105 -90 #popn[25].Month.Change 106 0 #popn[26].Month.Change 114 30 #popn[27].Month.Change 117 -65 #popn[28].Month.Change 118 0 #quake_control[0].StartMonth.EndMonth.Severity 5 10 1 #quake_control[1].StartMonth.EndMonth.Severity 15 20 2 #quake_control[2].StartMonth.EndMonth.Severity 25 30 4 #quake_control[3].StartMonth.EndMonth.Severity 35 40 5 #quake_control[4].StartMonth.EndMonth.Severity 45 50 1 #quake_control[5].StartMonth.EndMonth.Severity 55 60 2 #quake_control[6].StartMonth.EndMonth.Severity 65 70 4 #quake_control[7].StartMonth.EndMonth.Severity 75 80 6 #quake_control[8].StartMonth.EndMonth.Severity 85 90 1 #quake_control[9].StartMonth.EndMonth.Severity 95 100 2 #quake_control[10].StartMonth.EndMonth.Severity 105 110 4 #quake_control[11].StartMonth.EndMonth.Severity 125 130 8 #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 8 4 6 23 75 1500 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 12 16 8 10 2 75 1000 #emergency_control[2].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 20 24 5 9 27 75 1000 #emergency_control[3].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 28 32 10 14 33 75 500 #emergency_control[4].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 36 40 4 5 8 75 2500 #emergency_control[5].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 44 48 2 2 30 75 1800 #emergency_control[6].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 52 56 7 12 12 75 1200 #emergency_control[7].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 60 64 5 9 8 75 2000 #emergency_control[8].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 68 72 4 5 21 75 1600 #emergency_control[9].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 76 80 9 13 26 75 550 #emergency_control[10].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 84 88 6 8 3 75 1300 #emergency_control[11].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 92 96 7 11 8 75 2000 #emergency_control[12].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 100 104 4 6 20 75 2000 #emergency_control[13].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 108 112 10 14 28 75 700 #emergency_control[14].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 116 120 6 11 6 75 2000 #emergency_control[15].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 124 128 9 13 8 75 2000 #emergency_control[16].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 132 136 14 18 31 75 800 #emergency_control[17].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 140 144 4 7 34 75 1600 #emergency_control[18].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 148 152 8 14 17 75 1400 #emergency_control[19].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 156 160 18 20 4 75 5000 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 5 ---------------------- Awards and Trophies ------------------------- #awards_trophies.CansofCoke 200 #awards_trophies.CansofCokeBonus 10000 #awards_trophies.Reputation 850 #awards_trophies.TrophyReputationBonus 20000 #awards_trophies.TrophyDeathBonus 10000 ------------------ Winning and Losing Conditions ------------------- But we don't want any such conditions on the example level! 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 700 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 500000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 85 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 900 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 400000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -20000 2 -10000 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 20 3 15 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 CORSIX #computer[13].Playing 1 ROUJIN #computer[14].Playing 1 EDVIN CorsixTH-0.61/CorsixTH/Levels/finisham.map000066400000000000000000005001541321660673500204130ustar00rootroot000000000000001>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????º? ?>??1>*>(>2>9>1>???????????????????????????????????????????????????????????????????????·??????????????????????????????????????????????? ?>??1>)>(>3>9>1>???º??????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????º??????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>º???????????????????????º??????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>????????????????????????????????????????????????????????????????º??????????????????????????·???????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????º??? ?>??1>*>(>2>9>1>????????????????????????????????????????????????????????????????????????????????????????????????????????????·?????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>????????????????????????????????????????????º?????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>)>(>3>9>1>?º????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????????????????????????????????????????????????????·??????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>????????????????????????????????º?????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>????????????????????????º?????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????????????????????????????º???????????????????????????????????????????????????????????º? ?>??1>*>(>2>9>1>???????????????º???????????????????????????????????????????????????????????????????????????????????·???????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>º?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????????????????????????????????????????????????????????????????????????????????·???????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>)>(>3>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????·????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????º??? ?>??1>*>(>2>9>1>??????????????????????????????????? ?xyxxxxz|xxxxz|xxxxz|xxxxxz|xq???? ?zy|x|xxz|xxz|xxxz|xxxz|xxq?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???? ?yq?????????????????????????? ?>??1>*>(>2>9>1>?º????????????????????????????½?????? ?ys???? ?{q?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?{??1>*>(>2>9>1>??????????????????????????????????? ?}q?¾??? ?yq???? ?yu?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???? ?y>q???? ?yq?????????????????????????? ?>??1>*>(>2>9>1>???????????????????????¸???????????? ?ys???? ?yxz|xxq?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yu???¾? ?{q?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???? ?}q?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???? ?y??1>*>(>2>9>1>?????????????????½?????????????????? ?yq?¾??? ?yq?¹?? ?yu?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???? ?yq??? ?{q?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?{q???? ?yq??? ?}q?????????????????????????? ?>??1>)>(>3>9>1>??????????????????????????????????? ?}q? ?xyxxq??? ?y??1>->(>2>9>1>º?????????????????????????????¸?????? ?ys? ?{s??? ?yq??????????¹??????????????????????????º? ?>??1>/>(>2>9>1>??????????????????????????????????? ?yu? ?}u??¹? ?ys??¹??????????????????????????????????? ?>??1>0>(>2>9>1>????????????¾??????????????????????? ?yq? ?yq??? ?yu????????????????????????????????????? ?>??1>0>(>2>9>1>??????????????????????????????????? ?yq? ? p? p?=p?yq??? ?yq??? ?xyxz|xxxz|xxxz|xxxxq??????????????? ?>??1>0>(>2>9>1>??????????????????????????????????? ?yq???? ?{q??? ?{q??? ?yq??????????????? ?>??1>0>(>2>9>1>??????????????????????????????????? ? p? p? r? t? p? p? p? p? r? t? p? p? p? p? r? t? p? p? p? ???? ?}q??? ?}s??? ?yq??????????????? ?>??1>0>(>2>9>1>?????????????????????¹?????????????????????????????????????? ?yq?¹?? ?yu??? ?{s??????????????? ?>??1>0>(>2>9>1>??????¾?????????¾??????????¾?????¾??????¾??????¾??????¾?????¾?????¾? ?yq??? ?yq??¹? ?}u??????????????? ?>??1>0>(>2>9>1>??????????????????????????????????????????????????????????? ?yq??? ? p? r? t? p? p? p?=p?yq??? ?yq??????????????? ?>??1>0>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:Ûs??????¹???? ?yq??? ?yq??????????????? ?>??1>0>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;u????º?????? ?y>q??? ?yq??????????????? ?>>??1>0>(>2>9>1> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?Ùq?????????? ?{xxxxq????????????º??? ?>>>1>0>(>2>9>1>?¾?????????¾???????????¾????¾??????¾??????¾??????¾??????¾?????¾????¾? ?yq??¹???????¹? ?}q??????????????? ?>>>1>0>(>2>9>1>??????????????????????????????????????????????????????????? ?{q????º?????? ?ys??????????????? ?><? ?1>0>(>2>9>1>??????????????????????????????????????????????????????????? ?}q??????¹???? ?y??1>0>(>2>9>1>??????????????????????????????????? ?xyxz|xxxz|xxxz|xxz|xq???? ?yq?????????? ?yq??? ?yq??????????????? ?>??1>0>(>2>9>1>??????????????????????????????????? ?yq? ?xyxxq?¹?? ?xyxxxz|xq??? ?yq??????????????? ?>??1>.>(>2>9>1>??????????????????????????????????? ?yq? ?{q??? ?ys??¹? ? p? p? r? t? p? p? p? p? r? t? p? p? p? p? p? r? t? p? ??????????????? ?>??1>+>(>2>9>1>??????????????????????????????????? ?{q? ?}s??? ?yu????????????????????????????????????? ?>??1>)>(>3>9>1>º?????????????????¾?????????????????? ?}q? ?yu??? ?{q????????????????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq? ? p? p?=p?yq??? ?}>q????????????????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?ys???? ?yq??¹? ?yxxxxxz|xxq???????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yu???? ?y>q??? ?yq???????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???¾? ?{xxxxq???????????????????????¾????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???? ?}s???????????????????????????º? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq?¾??? ?yu???????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?y>q???? ?y??1>*>(>2>9>1>??????????????????????????????????? ?{xxz|xq??¸?? ?yq??¸?????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?}s???? ?{s???????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????? ?yq???? ?yu???????????????????????????? ?>??1>*>(>2>9>1>???????º???????????????????????????? ?yq???? ?yq???????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????¹?????? ? p? p? r? t? p? p? p? p? p? r? t? p? p? p? p? r? t? p? p?=p?:Ö>;>Ô>??1>*>(>2>9>1>?º?????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????????????????????????? ?>>>??????????????????????¹????????????????????????????????????? ?>??1>*>(>2>9>1>????????????·????????????????????????????¹????????????¹??? ?>>>??¹??????????¹????????????????????????????????????????????º??? ?>??1>*>(>2>9>1>??????????????????????????????????????????????????????? ?>>>???????????????????????????¸???????????????????????????????? ?>??1>)>(>3>9>1>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????????????????????????? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????? ?>>>>>????N?;?;?:???? ?>>>?????????????????????????????????????¾?????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????? ?>>>>>????M?D?DH?@???? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????? ?>>>>>????M?DH?D?@???? ?>>>????·??????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????????????¾??????? ?>>>>>????M?D?DH?@???? ?>>>?????????????·?????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????? ?>>>>>????M?DH?D?@???? ?>>>????????????????????????????????????????????????????????¸??? ?>??1>*>(>2>9>1>?????????????????????????????????????? ? ?=?><? ? ????L?C?C?O???? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????????????????????? ?>????????????? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????º????????????????? ?>????????????? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>º???????????????????????????????????????? ?>???¹?????????? ?>>>??????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????????????????????? ?>????????????? ?>>>??????????????????????????????????????????????????????????º? ?>??1>*>(>2>9>1>???????????????????????????????????????? ?>>????????????? ?>>>?????????????????????·?????????????????????????????????????? ?>??1>*>(>2>9>1>???????????????????????????????????????? ?>>>>>>>>>>>>>>>>>>????????¹??????????????????????????????¸????????????????????? ?>??1>*>(>2>9>1>???·????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????? ?>??1>)>(>3>9>1>???·??????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????¹????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????·????????????¹?¹???????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?º????????????????????????????????????????????????????????????????????????????·??????????????????????????????????????º??? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????¸????????? ?>??1>*>(>2>9>1>????????????????????????????????????????????????????????????????¹?????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>??????????????????????????????????????????????????????????????????????????????????????????¸???????????????????????????? ?>??1>*>(>2>9>1>??????????????·???????º?????????????????·???????????????????????????????????????????????????????????????????????????????? ?>??1>)>(>3>9>1>????????????????????????????????????????????????????¹?????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>º???????????º??????????????????????º????????????????????????º?????????????????????º?????????????????????????º??????????????º? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??1>*>(>2>9>1> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>??1>*>(>2>9>1>???????????????????????º??????????????????????º????????????????????????º??????????????????????º??????????????????????????º? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??1>*>(>2>9>1>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>??ů/CorsixTH-0.61/CorsixTH/Levels/original05.level000066400000000000000000000032041321660673500211120ustar00rootroot00000000000000Copyright (c) 2010 Edwin "Dutchy" Smulders Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- This is an extra configuration file loaded at Level 5 from the original game. -- It needs some starting doctors, and to also make it possible for others to do -- this in the future some new variables are added, as seen below. -- Skill is skill * 100 (to work in integers) #start_staff[1].Doctor.Shrink.Consultant.Skill 1 1 1 100 #start_staff[2].Doctor.Surgeon.Consultant.Skill 1 1 1 100 #start_staff[3].Doctor.Researcher.Consultant.Skill 1 1 1 100 These lines equal something like this: Doctor.Nurse.Handyman.Receptionist.Shrink.Surgeon.Researcher.Junior.Consultant.Skill 1 0 0 0 1 0 0 0 1 100 CorsixTH-0.61/CorsixTH/Levels/original07.level000066400000000000000000000026471321660673500211260ustar00rootroot00000000000000Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- This is an extra configuration file loaded at level 7 from the original game. -- The second to last emergency (number 9) does in error create Hairyitis patients. -- That disease is not available until level 8. -- Change the disease to Elvis Syndrome instead. (Illnes previously 3, now 4) #emergency_control[9].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 60 70 5 8 4 75 1000CorsixTH-0.61/CorsixTH/Levels/original08.level000066400000000000000000000032561321660673500211240ustar00rootroot00000000000000Copyright (c) 2013 Mark "MarkL" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- This is an extra configuration file loaded at level 8 from the original game. -- The win and lose on repution would appear to be the wrong way round #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 2 1 300000 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 3 1 55 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 4 1 500 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 6 1 180000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 200 1 400 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -1000 2 10000 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 25 3 20 CorsixTH-0.61/CorsixTH/Levels/original11.level000066400000000000000000000024421321660673500211120ustar00rootroot00000000000000Copyright (c) 2012 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- This is an extra configuration file loaded at level 11 from the original game. -- For some reason Alien DNA is set to be unavailable at this level even though -- it evidently should be. -- Make it available after 12 months. #visuals[6] 10 I_ALIENCorsixTH-0.61/CorsixTH/Levels/original12.level000066400000000000000000000024421321660673500211130ustar00rootroot00000000000000Copyright (c) 2012 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- This is an extra configuration file loaded at level 12 from the original game. -- For some reason Alien DNA is set to be unavailable at this level even though -- it evidently should be. -- Make it available after 12 months. #visuals[6] 10 I_ALIENCorsixTH-0.61/CorsixTH/Levels/st.peter's.level000066400000000000000000000470551321660673500211530ustar00rootroot00000000000000Copyright (c) 2014 Mark "MarkL" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. This level file and map have been put together with epidemics in mind. Wherever there are values that have not been used previously there are some notes to assist map makers. ---------------------- General Information ------------------------- %Name = "St. Peter's near Cawley" %MapFile = "st.peter's.map" %LevelBriefing = "The St Peter's hospital is near the small town of Cawley in the beautiful English countryside. Use all your knowledge to set up a well-run hospital which makes a healthy profit and can deal with anything the sickly public can throw up in it. You'll need to be aware that the atmosphere around here is particularly good at carrying germs and infections. The nearby swamp will add to your troubles, so you should expect frequent epidemics. You are expected to run a superb hospital with the highest of standards; the Minister of Health expects nothing less than perfection here. You should aim to keep queues to a minimum as this will help you combat epidemics and keep your staff happy at the same time. Get a reputation of at least 600, treat 80% of your visitors, cure 400 patients, amass $600,000 in the bank and have a hospital worth $275,000." %LevelDebriefing = "Congratulations, you made it! Now you can sit back and enjoy life." Town properties InterestRate is defined as centiprocent to allow for two decimals precision, i.e. 300 means 3 % #town.StartCash.InterestRate 30000 200 If contagious how much - rand up to this figure. higher = more contagious. must be > 0 #gbv.HowContagious 25 0-100 Higher equals more chance of spreading. #gbv.ContagiousSpreadFactor 35 Reduces cont illnesses until X months have passed #gbv.ReduceContMonths 4 Reduces cont illnesses until X peep have arrived #gbv.ReduceContPeepCount 20 If epidemic coverup fails - how much per person you are fined #gbv.EpidemicFine 2500 If an epidemic coverup succeeds how much compensation is received - lowest value #gbv.EpidemicCompLo 5000 If an epidemic coverup succeeds how much compensation is received - highest value #gbv.EpidemicCompHi 30000 Cost per vaccination #gbv.VacCost 50 How many patients still infected cause a reputation loss as well as a fine. if less than EpidemicEvacMinimum then this will be ignored #gbv.EpidemicRepLossMinimum 5 How many patients still infected and not-cured cause the hospital to be evacuated #gbv.EpidemicEvacMinimum 10 -------------------- Disease Configuration ------------------------- When a drug is first researched, what effectiveness does it have #gbv.StartRating 80 The following table contains all diagnoses and treatments that shows up inthe drug casebook in the game. ContRate is whether this is contagious (lower the number the greater the chances of it appearing, 0 means never) and Known specifies whether it should show up from the beginning of the level and RschReqd how much research is required to discover the treatment room for the disease. NOTE: Most visual diseases cannot currently be part of an epidemic. Which can be included can be checked in the disease files #expertise[1].ContRate.Known.RschReqd 0 1 0 GENERAL_PRACTICE #expertise[2].ContRate.Known.RschReqd 0 1 40000 BLOATY_HEAD #expertise[3].ContRate.Known.RschReqd 0 0 40000 HAIRYITUS #expertise[4].ContRate.Known.RschReqd 0 0 60000 ELVIS #expertise[5].ContRate.Known.RschReqd 0 0 60000 INVIS #expertise[6].ContRate.Known.RschReqd 10 0 60000 RADIATION #expertise[7].ContRate.Known.RschReqd 0 0 40000 SLACK_TONGUE #expertise[8].ContRate.Known.RschReqd 0 0 60000 ALIEN #expertise[9].ContRate.Known.RschReqd 0 0 20000 BROKEN_BONES #expertise[10].ContRate.Known.RschReqd 0 0 40000 BALDNESS #expertise[11].ContRate.Known.RschReqd 10 0 40000 DISCRETE_ITCHING #expertise[12].ContRate.Known.RschReqd 10 0 40000 JELLYITUS #expertise[13].ContRate.Known.RschReqd 20 0 40000 SLEEPING_ILLNESS #expertise[14].ContRate.Known.RschReqd 0 0 30000 PREGNANT #expertise[15].ContRate.Known.RschReqd 10 0 40000 TRANSPARENCY #expertise[16].ContRate.Known.RschReqd 10 0 20000 UNCOMMON_COLD #expertise[17].ContRate.Known.RschReqd 10 0 60000 BROKEN_WIND #expertise[18].ContRate.Known.RschReqd 20 0 20000 SPARE_RIBS #expertise[19].ContRate.Known.RschReqd 30 0 20000 KIDNEY_BEANS #expertise[20].ContRate.Known.RschReqd 10 0 20000 BROKEN_HEART #expertise[21].ContRate.Known.RschReqd 10 0 20000 RUPTURED_NODULES #expertise[22].ContRate.Known.RschReqd 10 0 40000 MULTIPLE_TV_PERSONALITIES #expertise[23].ContRate.Known.RschReqd 10 1 60000 INFECTIOUS_LAUGHTER #expertise[24].ContRate.Known.RschReqd 20 0 40000 CORRUGATED_ANKLES #expertise[25].ContRate.Known.RschReqd 10 0 40000 CHRONIC_NOSEHAIR #expertise[26].ContRate.Known.RschReqd 50 0 40000 3RD_DEGREE_SIDEBURNS #expertise[27].ContRate.Known.RschReqd 20 0 40000 FAKE_BLOOD #expertise[28].ContRate.Known.RschReqd 10 0 40000 GASTRIC_EJECTIONS #expertise[29].ContRate.Known.RschReqd 20 1 20000 THE_SQUITS #expertise[30].ContRate.Known.RschReqd 30 0 20000 IRON_LUNGS #expertise[31].ContRate.Known.RschReqd 10 0 40000 SWEATY_PALMS #expertise[32].ContRate.Known.RschReqd 15 0 20000 HEAPED_PILES #expertise[33].ContRate.Known.RschReqd 10 0 20000 GUT_ROT #expertise[34].ContRate.Known.RschReqd 20 0 20000 GOLF_STONES #expertise[35].ContRate.Known.RschReqd 20 0 20000 UNEXPECTED_SWELLING #expertise[36].Known.RschReqd 0 60000 I_D_SCANNER DIAGNOSIS #expertise[37].Known.RschReqd 0 50000 I_D_BLOOD_MACHINE DIAGNOSIS #expertise[38].Known.RschReqd 0 20000 I_D_CARDIO DIAGNOSIS #expertise[39].Known.RschReqd 0 50000 I_D_XRAY DIAGNOSIS #expertise[40].Known.RschReqd 0 60000 I_D_ULTRASCAN DIAGNOSIS #expertise[41].Known.RschReqd 1 20000 I_D_STANDARD DIAGNOSIS #expertise[42].Known.RschReqd 1 20000 I_D_WARD DIAGNOSIS #expertise[43].Known.RschReqd 1 20000 I_D_SHRINK DIAGNOSIS | Objects available | Available from the start | Strength | Available for this level | Comment #objects[9].StartAvail.StartStrength.AvailableForLevel 1 8 1 Inflator Machine #objects[13].StartAvail.StartStrength.AvailableForLevel 1 13 1 Cardiogram #objects[14].StartAvail.StartStrength.AvailableForLevel 0 12 1 Scanner #objects[22].StartAvail.StartStrength.AvailableForLevel 0 9 1 Ultrascan #objects[23].StartAvail.StartStrength.AvailableForLevel 0 7 1 DNA Restorer #objects[24].StartAvail.StartStrength.AvailableForLevel 0 11 1 Cast Remover #objects[25].StartAvail.StartStrength.AvailableForLevel 0 8 1 Hair restorer #objects[26].StartAvail.StartStrength.AvailableForLevel 0 10 1 Slicer for slack tongues #objects[27].StartAvail.StartStrength.AvailableForLevel 0 12 1 X-Ray #objects[30].StartAvail.StartStrength.AvailableForLevel 0 12 1 Operating Table #objects[37].StartAvail.StartStrength.AvailableForLevel 1 0 1 Projector #objects[40].StartAvail.StartStrength.AvailableForLevel 0 1 1 Research Computer #objects[41].StartAvail.StartStrength.AvailableForLevel 0 1 1 Chemical Mixer #objects[42].StartAvail.StartStrength.AvailableForLevel 0 10 1 Blood Machine #objects[46].StartAvail.StartStrength.AvailableForLevel 0 8 1 Electrolysis Machine #objects[47].StartAvail.StartStrength.AvailableForLevel 0 7 1 Jellyitus Moulding Machine #objects[54].StartAvail.StartStrength.AvailableForLevel 0 10 1 Decontamination Shower #objects[55].StartAvail.StartStrength.AvailableForLevel 1 10 1 Autopsy Research Machine #objects[57].StartAvail.StartStrength.AvailableForLevel 1 57 1 VideoGame Value represents the proportions of the disease - not implemented #visuals[0] 1 I_BLOATY_HEAD #visuals[1] 21 I_HAIRYITUS #visuals[2] 7 I_ELVIS #visuals[3] 9 I_INVIS #visuals[4] 23 I_RADIATION #visuals[5] 11 I_SLACK_TONGUE #visuals[6] 41 I_ALIEN #visuals[7] 11 I_BROKEN_BONES #visuals[8] 12 I_BALDNESS #visuals[9] 5 I_DISCRETE_ITCHING #visuals[10] 12 I_JELLYITUS #visuals[11] 1 I_SLEEPING_ILLNESS #visuals[12] 18 I_PREGNANT #visuals[13] 16 I_TRANSPARENCY #non_visuals[0] 4 I_UNCOMMON_COLD #non_visuals[1] 8 I_BROKEN_WIND #non_visuals[2] 9 I_SPARE_RIBS #non_visuals[3] 3 I_KIDNEY_BEANS #non_visuals[4] 2 I_BROKEN_HEART #non_visuals[5] 1 I_RUPTURED_NODULES #non_visuals[6] 9 I_MULTIPLE_TV_PERSONALITIES #non_visuals[7] 4 I_INFECTIOUS_LAUGHTER #non_visuals[8] 2 I_CORRUGATED_ANKLES #non_visuals[9] 5 I_CHRONIC_NOSEHAIR #non_visuals[10] 1 I_3RD_DEGREE_SIDEBURNS #non_visuals[11] 3 I_FAKE_BLOOD #non_visuals[12] 3 I_GASTRIC_EJECTIONS #non_visuals[13] 6 I_THE_SQUITS #non_visuals[14] 1 I_IRON_LUNGS #non_visuals[15] 9 I_SWEATY_PALMS #non_visuals[16] 5 I_HEAPED_PILES #non_visuals[17] 8 I_GUT_ROT #non_visuals[18] 7 I_GOLF_STONES #non_visuals[19] 5 I_UNEXPECTED_SWELLING You can use either or neither of these two to hold back the appearance of visual diseases Hold all visual illnesses until x months. 0 never hold #gbv.HoldVisualMonths 9 Hold all visual illnesses until x peeps have arrived. 0 never hold #gbv.HoldVisualPeepCount 60 Value represents the month this disease becomes available (when they will first appear in-game) hold all visuals (above) take precedence #visuals_available[0] 0 I_BLOATY_HEAD #visuals_available[1] 31 I_HAIRYITUS #visuals_available[2] 7 I_ELVIS #visuals_available[3] 9 I_INVIS #visuals_available[4] 43 I_RADIATION #visuals_available[5] 11 I_SLACK_TONGUE #visuals_available[6] 60 I_ALIEN #visuals_available[7] 11 I_BROKEN_BONES #visuals_available[8] 22 I_BALDNESS #visuals_available[9] 5 I_DISCRETE_ITCHING #visuals_available[10] 32 I_JELLYITUS #visuals_available[11] 19 I_SLEEPING_ILLNESS #visuals_available[12] 28 I_PREGNANT #visuals_available[13] 16 I_TRANSPARENCY ---------------------- Staff Configuration ------------------------- Each entry states how many staff members of each category are available a given month. The number of entries is not fixed. | A list | Month it gets active (start at 0) | Each group | #staff_levels[0].Month.Nurses.Doctors.Handymen.Receptionists 0 8 8 3 2 #staff_levels[1].Month.Nurses.Doctors.Handymen.Receptionists 3 7 5 5 3 #staff_levels[2].Month.Nurses.Doctors.Handymen.Receptionists 5 5 8 7 4 The minimum salary for each staff type #staff[0].MinSalary 60 Nurse #staff[1].MinSalary 75 Doctor #staff[2].MinSalary 25 Handyman #staff[3].MinSalary 20 Receptionist Salary modifiers for different doctor attributes #gbv.SalaryAdd[3] -30 Junior #gbv.SalaryAdd[4] 30 Doctor #gbv.SalaryAdd[5] 40 Surgeon #gbv.SalaryAdd[6] 30 Psychiatrist #gbv.SalaryAdd[7] 100 Consultant #gbv.SalaryAdd[8] 20 Researcher How much the skill of the doctor adds to the salary. skill * 1000 / divisor #gbv.SalaryAbilityDivisor 10 #gbv.LandCostPerTile 50 #gbv.TrainingRate 40 #gbv.AbilityThreshold[0] 75 Surgeon #gbv.AbilityThreshold[1] 60 Psychiatrist #gbv.AbilityThreshold[2] 45 Researcher #gbv.TrainingValue[0] 10 Projector #gbv.TrainingValue[1] 15 Skeleton #gbv.TrainingValue[2] 20 Bookcase #popn[0].Month.Change 0 2 #popn[1].Month.Change 6 0 #popn[2].Month.Change 12 2 #popn[4].Month.Change 15 0 #popn[5].Month.Change 23 1 #popn[6].Month.Change 28 0 Set severity to 0 if you don't want any earthquakes #quake_control[0].StartMonth.EndMonth.Severity 5 10 0 #emergency_control[0].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 4 8 4 6 23 75 1500 #emergency_control[1].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 12 16 8 10 2 75 1000 #emergency_control[2].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 20 24 5 9 27 75 1000 #emergency_control[3].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 28 32 10 14 33 75 500 #emergency_control[4].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 36 40 4 5 8 75 2500 #emergency_control[5].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 44 48 2 2 30 75 1800 #emergency_control[6].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 52 56 7 12 12 75 1200 #emergency_control[7].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 60 64 5 9 8 75 2000 #emergency_control[8].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 68 72 4 5 21 75 1600 #emergency_control[9].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 76 80 9 13 26 75 550 #emergency_control[10].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 84 88 6 8 3 75 1300 #emergency_control[11].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 92 96 7 11 8 75 2000 #emergency_control[12].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 100 104 4 6 20 75 2000 #emergency_control[13].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 108 112 10 14 28 75 700 #emergency_control[14].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 116 120 6 11 6 75 2000 #emergency_control[15].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 124 128 9 13 8 75 2000 #emergency_control[16].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 132 136 14 18 31 75 800 #emergency_control[17].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 140 144 4 7 34 75 1600 #emergency_control[18].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 148 152 8 14 17 75 1400 #emergency_control[19].StartMonth.EndMonth.Min.Max.Illness.PercWin.Bonus 156 160 18 20 4 75 5000 --------------------- Research Configuration ----------------------- Divides research input to get the amount of research points. must be > 0 #gbv.ResearchPointsDivisor 2 ---------------------- Awards and Trophies ------------------------- Trophy win conditions #awards_trophies.RatKillsAbsolute 25 #awards_trophies.CansofCoke 100 #awards_trophies.Reputation 400 #awards_trophies.Plant 80 #awards_trophies.TrophyStaffHappiness 85 #awards_trophies.RatKillsPercentage 11 #awards_trophies.TrophyMayor 25 Trophy win bonuses #awards_trophies.RatKillsAbsoluteBonus 4 #awards_trophies.CansofCokeBonus 1000 #awards_trophies.TrophyReputationBonus 1500 #awards_trophies.PlantBonus 4 #awards_trophies.TrophyStaffHappinessBonus 5 #awards_trophies.RatKillsPercentageBonus 4000 #awards_trophies.TrophyDeathBonus 6000 #awards_trophies.TrophyCuresBonus 4000 #awards_trophies.TrophyMayorBonus 4 Award win criteria #awards_trophies.CuresAward 50 #awards_trophies.CuresPoor 10 #awards_trophies.DeathsAward 10 #awards_trophies.DeathsPoor 25 #awards_trophies.PopulationPercentageAward 50 #awards_trophies.PopulationPercentagePoor 15 #awards_trophies.CuresVDeathsAward 5 #awards_trophies.CuresVDeathsPoor 1 #awards_trophies.ReputationAward 500 #awards_trophies.ReputationPoor 200 #awards_trophies.HospValueAward 150000 #awards_trophies.HospValuePoor 50000 #awards_trophies.CleanlinessAward 5 #awards_trophies.CleanlinessPoor 40 #awards_trophies.EmergencyAwardv 90 #awards_trophies.EmergencyPoor 50 #awards_trophies.StaffHappinessAward 75 #awards_trophies.StaffHappinessPoor 25 #awards_trophies.PeepHappinessAward 75 #awards_trophies.PeepHappinessPoor 25 #awards_trophies.WaitingTimesAward 25 #awards_trophies.WaitingTimesPoor 75 #awards_trophies.WellKeptTechAward 20 #awards_trophies.WellKeptTechPoor 70 Award win bonuses or penalties #awards_trophies.CuresBonus 1500 #awards_trophies.CuresPenalty -4000 #awards_trophies.DeathsBonus 2500 #awards_trophies.DeathsPenalty -6000 #awards_trophies.PopulationPercentageBonus 4 #awards_trophies.PopulationPercentagePenalty -6 #awards_trophies.CuresVDeathsBonus 3000 #awards_trophies.CuresVDeathsPenalty -5000 #awards_trophies.AwardReputationBonus 2000 #awards_trophies.AwardReputationPenalty -5000 #awards_trophies.HospValueBonus 3 #awards_trophies.HospValuePenalty -6 #awards_trophies.CleanlinessBonus 5 #awards_trophies.CleanlinessPenalty -12 #awards_trophies.EmergencyBonus 6 #awards_trophies.EmergencyPenalty -11 #awards_trophies.AwardStaffHappinessBonus 3 #awards_trophies.AwardStaffHappinessPenalty -10 #awards_trophies.PeepHappinessBonus 3 #awards_trophies.PeepHappinessPenalty -9 #awards_trophies.WaitingTimesBonus 2 #awards_trophies.WaitingTimesPenalty -6 #awards_trophies.WellKeptTechBonus 7 #awards_trophies.WellKeptTechPenalty -5 #awards_trophies.NewTechAward 1500 #awards_trophies.NewTechPoor 0 #awards_trophies.ResearchBonus 3 #awards_trophies.ResearchPenalty -7 ------------------ Winning and Losing Conditions ------------------- But we don't want any such conditions on the example level! 1 Total reputation 2 Balance total 3 Percentage people your hospital has handled 4 Percentage people have been cured 5 Percentage people have been killed 6 Hospital value #win_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 1 600 1 0 #win_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 1 600000 1 0 #win_criteria[2].Criteria.MaxMin.Value.Group.Bound 3 1 80 1 0 #win_criteria[3].Criteria.MaxMin.Value.Group.Bound 4 1 400 1 0 #win_criteria[4].Criteria.MaxMin.Value.Group.Bound 6 1 275000 1 0 #lose_criteria[0].Criteria.MaxMin.Value.Group.Bound 1 0 400 1 450 #lose_criteria[1].Criteria.MaxMin.Value.Group.Bound 2 0 -20000 2 -10000 #lose_criteria[2].Criteria.MaxMin.Value.Group.Bound 5 1 10 3 5 --------------------- Competitor Information ----------------------- | Index in the away "computer" | Is that opponent playing? | 1 is yes, 0 no | Comment | #computer[12].Playing 1 Corsix #computer[13].Playing 1 Roujin #computer[14].Playing 1 Edvin CorsixTH-0.61/CorsixTH/Levels/st.peter's.map000066400000000000000000005001541321660673500206130ustar00rootroot00000000000000?? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????º????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>?????»?????????????????»?????????????¶??????????????????????????????????????????????????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>??????????????????????????????????????????????????????????????????????????????º?º?????????¶?????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????????????????????????????????????????????????????????????????¶??????????º?º??????????????????????????º????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????????????¶?????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????????????????????????????????????????????????????º?????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????º???????????º??????????¶?????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????º?????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????¶????????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>????????????????????????????????????????????????????????????????»?????????????????????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????????????????????????????????????????¶??????????????????????????????????????????????????????º???????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????????????¶??????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ???½??????????????????????????»????????????????????????????????????????????????????????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>???????????????????º?????????????????????º???????????????????º??????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????º????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????º??????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????¶?????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>>??????????????¶?????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>???????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>???????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ??????????????????????????????????? ?>>????¶???????????????????????????????????????????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>????????????º??????????????????????? ?>>??????????????????????????¶?????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????º?????????????????????????????? ?>>???????????????????????????????????????????????????????¶????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸????????????????????????º????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>??????????????????????????????????????????????º?????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>??????????????????????????????????? ?>>?¸? ?xyz|xz|xxz|xxz|xxxx:×>>>>? ?xyz|xz|xxz|xz|xxq?¸????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?? ?{;>>>>œ? ?yu?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ?}Õ>>>>? ?{q?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????º?????? ?>>?? ?y<q?=?>>? ?}s?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????????½????????º??????????????? ?>>?¸? ?{q? ?>>? ?yu?¸????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ??????????????????????????????????? ?>>?? ?}s? ?>>? ?yq?????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ?yu? ?>>œ? ?yq?¸?????????????º???????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????º?????????????????????????????? ?>>?? ?yq? ?>>? ?{s?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ?{q? ?>>? ?}u?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?? ?}s? ?>>? ?yq?????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>??????????????????????????????????? ?>>?¸? ?yu? ?>>? ?yq?¸????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?? ?yq? ?>>œ? ?{s??????????????????????º???????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ? p? r? t? p? p? r? t? p? p? p? r? t? p? p? r? t? p? p? ? ?>>? ?}u?¸???????»?????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????º?????????????????½???? ?>>?????????????????????? ?>? ?yq?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????½???????????? ?>>?¸? ?xyz|zxz|zxz|zxz|zxz|z:Ú;Øxq?¸????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ??????????????????????????????????? ?>>?? ?}s?????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ?yu?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?? ?{*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ?}s?¸??¸??¸??¸??¸? ?{q?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?? ?yu??º??º??º??º?? ?}s?????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>????????º??????????????????????????? ?>>?¸? ?ys?¸????????¸? ?yu?¸??????????????º??????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?? ?}s?? ?>>>>>?? ?{q??????º???????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ?yq?¸? ?>>>>>?¸? ?}s?¸?????º????????????????????º???? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????½?????????????????? ?>>?? ?{s?? ?>>>>>?? ?yu?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>?¸? ?}u?¸? ?>>>>>?¸? ?yq?¸????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ??????????????????????????????????? ?>>?? ?yq?? ?>>>>>?? ? p? r? t? p? r? t? p? r? t? p? r? p? r? t? p? ?????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>???½???????????????????????????????? ?>>?¸? ? p?=p?:Ö>;>Ô>><? ? ?¸??¸??¸??¸??¸??¸??¸??¸??¸??¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>>???? ?>>>>??????????? ?>>>?????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*>(>2>>>>???? ?1>*>(>2>9>??????????????????????????????½????? ?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*>(>2>>>>???? ?1>)>(>3>9>??????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>*>(>2>>œ>>???? ?1>*>(>2>9>????????????????????????????????????????¸??¸??¸??¸??¸??¸??¸??¸??¸? ?>>?¸??¸??¸??¸??¸??¸??¸??¸??¸??¸??¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????¸?????????????????? ?>>?????????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????? ?xyxz|xxz|xxz|xxq?¸? ?>>?¸? ?xyz|xxz|xz|xxz|xxxq?¸???????????????????????º?????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????½???????????????????????????????¸? ?ys?? ?>>?? ?{s??????º???????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ???????????????????½????????????????????? ?{q?¸? ?>>?¸? ?}u?¸?????????????????º???????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>???????????????????????????????????????¸? ?}q?? ?>>?? ?ys?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????? ?ys?¸? ?>>?¸? ?{q?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????¸? ?{u?? ?>>?? ?}s??????????????º???????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????? ?}q?¸? ?>>?¸? ?yu?¸????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>???º???????????????????????????½?????????¸? ?ys?? ?>>?? ?{s?????º????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>???????????????????????????????????????? ?{q?¸? ?>>?¸? ?}q?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????¸? ?}q?? ?>>?? ?ys?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????? ?ys?¸? ?>>?¸? ?{u?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????º??????????????????????¸? ?{u?? ?>>?? ?}s?????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ???????????????????????????????????????? ?}q?¸? ?>>?¸? ?yq?¸????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>??????º?????????????????????????????????¸? ?yq?? ?>>?? ?ys?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????? ? p? r? t?=p?y>?¸? ? p? r? t? p? p? r? t? p? p? r? t? p? t? p?=p?yu?¸?????????????????????????º?º??? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????¸????? ?{q???º????º??? ?>>??º????º????º????º??? ?}s?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????½??? ?}q?º????º????¸? ?>>?¸???º????º????º????º? ?yq?¸??????º????????????º??????????? ?>*>(>2>>>>???? ?1>)>(>3>9>???????????????????????????½?½???????????¸????? ?y>q?????????? ?>????????????????? ?{s?????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>???????????????????????????½?½???????????????½? ?yxxz|zxz|zx|:Ú>;>Øz|zxz|zxz|zxz|xq? ?}u?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????º?????????????????????????????¸??½??? ?{s? ?ys?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>??????????º?????????º??º??????????????????????? ?}u? ?{q?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????¸????? ?ys? ?}s?????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ???????????????????????????????????????? ?xyz|xq? ?yu?¸????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>???????????????????????????????????????¸? ?{s? ?{s????????????????º?????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????? ?}u? ?}q?¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????¸? ?y>q? ?ys?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????? ?{xxu?¸????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>???????º?º???????????????????????????????¸? ?yq?????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>???????º?º???????????????????????????????? ?{*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????¸? ?}s?????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????????????????????????º???????????? ?yu?????¸??????º????????????????????º??? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????º??????????????????¸? ? p? r? t? p? r? t? r? p? r? p? r? t? r? p? r? t? p?=p?:AÚy>;A>AØ*>(>2>>>>???? ?1>)>(>3>9>œ?????????????????????????????????????????????????????????? ?A}AAs???????????????????¸????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>???????????????????????????????????????¸??????????????????? ?A}AAs???????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>????????????????????????????????????????¸??¸??¸??¸??¸??¸??¸??¸??¸?? ?A}AAu?¸??¸??¸??¸??¸??¸??¸??¸??¸??¸????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>>?????????????????????????????????????????????????????????? ?AyAA>q???????????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:Ö>;>Ô>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*>(>2>>>>???? ?1>)>(>3>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*>(>2>>œ>>???? ?1>*>(>2>9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*>(>2>>>>???? ?1>*>(>2>9><? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????º??????????º??????????????????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????º?º????????????????????º???????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ?????????º??????????½??????????º??????????????N?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?:??????????º??????????????????º?? ?>*>(>5>>œ>>???? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?@?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?DG?DG?D?D?D?D?D?D?D?DH?DH?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?D?D?D?@?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???º????????????????????????????????????????M?D?D?DG?DG?D?D?D?D?DH?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DH?D?D?DH?DH?D?DG?D?D?D?D?@?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?D?D?D?DH?DF?D?D?D?D?D?D?D?D?D?D?DH?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?@?????????????????????º????????? ?>*>(>2>>>>>???? ?1>)>(>3>9>???????????????????????????????????½????????M?D?D?D?D?D?D?D?D?D?D?D?DH?D?D?DF?D?D?D?D?D?D?D?D?DG?DG?D?D?D?D?D?D?D?D?D?D?D?@?????????????????????????????? ?>*>(>2>>œ>>>>?? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DH?D?@?????????????????????????????? ?>*>(>2>>>>>>?? ?1>*>(>2>9>????????????º???????????????????????????????M?D?D?D?D?D?DH?D?D?D?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?DG?D?D?D?DG?D?D?D?@?????????????????????????????? ?>*>(>2>>>><? ??? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?D?DH?D?D?D?DH?DH?D?D?D?D?D?D?D?D?D?D?D?D?D?DF?D?D?D?D?DG?DG?D?D?D?D?D?D?D?@???????????º?º?????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?D?D?D?DF?D?D?D?D?D?DH?D?DG?DG?DG?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?@?????????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>œ??????????????????????????½?????????????????M?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?D?DH?D?@?????????????????????????????? ?>*>(>5>>œ>>???? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?D?DG?D?D?DH?D?D?DH?D?D?D?D?D?DH?D?D?D?D?DH?D?D?D?D?D?D?DF?D?D?D?D?DH?D?D?D?@?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DG?DG?D?D?D?D?D?D?D?DH?D?D?D?@?????????????????????????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????M?D?D?D?D?D?D?D?D?D?D?D?D?D?D?DH?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?@??????????????????º???????????? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????L?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?C?O???º?º?????????????????????????? ?>*>(>2>>>>???? ?1>)>(>3>9>??????º???????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>œ>>???? ?1>*>(>2>9>?????????????????º??????????????????????½????????????????????????????????????????????????????????????????????º??? ?>*>(>2>>>>???? ?1>*>(>2>9>???????????????????????????????????????????????????????????????????????????????????????????????????????????º??? ?>*>(>2>>>>???? ?1>*>(>2>9>?????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?>*>(>2>>>>??F0ÃCorsixTH-0.61/CorsixTH/Lua/000077500000000000000000000000001321660673500154005ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/api_version.lua000066400000000000000000000033611321660673500204240ustar00rootroot00000000000000#ifdef _ /* Copyright (c) 2009-2017 Peter "Corsix" Cawley et al. --[[ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. This file is used to ensure that the compiled binary being used by Lua is up to date. Without this system, if the binary was not recent enough, then the user would get a confusing error message along the lines of attemping to call a nil value (as new API functions are nil in older binaries). When a new API call is added to the C++ source, the version number in this file should be incremented. Traditionally, the version number will be similar to the SVN revision number. Likewise, if an existing function is changed in a way incompatible with old Lua code, then the version number needs to change. Note: This file compiles as both Lua and C++. */ #endif /*]]--*/ return 2678; CorsixTH-0.61/CorsixTH/Lua/app.lua000066400000000000000000001444571321660673500167020ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local pathsep = package.config:sub(1, 1) local rnc = require "rnc" local lfs = require "lfs" local TH = require "TH" local SDL = require "sdl" local runDebugger = dofile "run_debugger" -- Increment each time a savegame break would occur -- and add compatibility code in afterLoad functions local SAVEGAME_VERSION = 122 class "App" ---@type App local App = _G["App"] function App:App() self.command_line = {} self.config = {} self.runtime_config = {} self.running = false self.key_modifiers = {} self.gfx = {} self.last_dispatch_type = "" self.eventHandlers = { frame = self.drawFrame, timer = self.onTick, keydown = self.onKeyDown, keyup = self.onKeyUp, textediting = self.onEditingText, textinput = self.onTextInput, buttonup = self.onMouseUp, buttondown = self.onMouseDown, mousewheel = self.onMouseWheel, motion = self.onMouseMove, active = self.onWindowActive, window_resize = self.onWindowResize, music_over = self.onMusicOver, movie_over = self.onMovieOver, sound_over = self.onSoundOver, multigesture = self.onMultiGesture } self.strings = {} self.savegame_version = SAVEGAME_VERSION self.check_for_updates = true end --! Starts a Lua DBGp client & connects it to a DBGp server. --!return error_message (String) Returns an error message or nil. function App:connectDebugger() return runDebugger() end function App:setCommandLine(...) self.command_line = {...} for _, arg in ipairs(self.command_line) do local setting, value = arg:match("^%-%-([^=]*)=(.*)$") --setting=value if value then self.command_line[setting] = value end end end function App:init() -- App initialisation 1st goal: Get the loading screen up print("") print("") print("---------------------------------------------------------------") print("") print("Welcome to CorsixTH " .. self:getVersion() .. "!") print("") print("---------------------------------------------------------------") print("") print("This window will display useful information if an error occurs.") print("") print("---------------------------------------------------------------") print("") -- Prereq 1: Config file (for screen width / height / TH folder) -- Note: These errors cannot be translated, as the config file specifies the language local conf_path = self.command_line["config-file"] or "config.txt" local conf_chunk, conf_err = loadfile_envcall(conf_path) if not conf_chunk then error("Unable to load the config file. Please ensure that CorsixTH " .. "has permission to read/write " .. conf_path .. ", or use the " .. "--config-file=filename command line option to specify a writable file. " .. "For reference, the error loading the config file was: " .. conf_err) else conf_chunk(self.config) end self:fixConfig() dofile "filesystem" local good_install_folder, error_message = self:checkInstallFolder() self.good_install_folder = good_install_folder -- self:checkLanguageFile() self.level_dir = debug.getinfo(1, "S").source:sub(2, -12) .. "Levels" .. pathsep self:initUserLevelDir() self:initSavegameDir() self:initScreenshotsDir() -- Create the window if not SDL.init("audio", "video", "timer") then return false, "Cannot initialise SDL" end local compile_opts = TH.GetCompileOptions() local api_version = dofile "api_version" if api_version ~= compile_opts.api_version then api_version = api_version or 0 compile_opts.api_version = compile_opts.api_version or 0 if api_version < compile_opts.api_version then print("Notice: Compiled binary is more recent than Lua scripts.") elseif api_version > compile_opts.api_version then print("Warning: Compiled binary is out of date. CorsixTH will likely" .. " fail to run until you recompile the binary.") end end local modes = {} if compile_opts.renderer == "OpenGL" then modes[#modes + 1] = "opengl" end self.fullscreen = false if self.config.fullscreen then self.fullscreen = true modes[#modes + 1] = "fullscreen" end if self.config.track_fps then modes[#modes + 1] = "present immediate" end self.modes = modes self.video = assert(TH.surface(self.config.width, self.config.height, unpack(modes))) self.video:setBlueFilterActive(false) SDL.wm.setIconWin32() self.video:setCaptureMouse(self.config.capture_mouse) local caption_descs = {self.video:getRendererDetails()} if compile_opts.jit then caption_descs[#caption_descs + 1] = compile_opts.jit else caption_descs[#caption_descs + 1] = _VERSION end if compile_opts.arch_64 then caption_descs[#caption_descs + 1] = "64 bit" end self.caption = "CorsixTH (" .. table.concat(caption_descs, ", ") .. ")" self.video:setCaption(self.caption) -- Prereq 2: Load and initialise the graphics subsystem dofile "persistance" dofile "graphics" self.gfx = Graphics(self) -- Put up the loading screen if good_install_folder then self.video:startFrame() self.gfx:loadRaw("Load01V", 640, 480):draw(self.video, math.floor((self.config.width - 640) / 2), math.floor((self.config.height - 480) / 2)) self.video:endFrame() -- Add some notices to the loading screen local notices = {} local font = self.gfx:loadBuiltinFont() if TH.freetype_font and self.gfx:hasLanguageFont("unicode") then notices[#notices + 1] = TH.freetype_font.getCopyrightNotice() font = self.gfx:loadLanguageFont("unicode", font:getSheet()) end notices = table.concat(notices) if notices ~= "" then self.video:startFrame() self.gfx:loadRaw("Load01V", 640, 480):draw(self.video, math.floor((self.config.width - 640) / 2), math.floor((self.config.height - 480) / 2)) font:drawWrapped(self.video, notices, 32, math.floor((self.config.height + 400) / 2), math.floor(self.config.width - 64), "center") self.video:endFrame() end end -- App initialisation 2nd goal: Load remaining systems and data in an appropriate order math.randomseed(os.time() + SDL.getTicks()) -- Add math.n_random globally. It generates pseudo random normally distributed -- numbers using the Box-Muller transform. strict_declare_global "math.n_random" math.n_random = function(mean, variance) return mean + math.sqrt(-2 * math.log(math.random())) * math.cos(2 * math.pi * math.random()) * variance end -- Also add the nice-to-have function math.round strict_declare_global "math.round" math.round = function(input) return math.floor(input + 0.5) end -- Load audio dofile "audio" self.audio = Audio(self) self.audio:init() -- Load movie player dofile "movie_player" self.moviePlayer = MoviePlayer(self, self.audio, self.video) if good_install_folder then self.moviePlayer:init() end -- Load strings before UI and before additional Lua dofile "strings" dofile "string_extensions" self.strings = Strings(self) self.strings:init() local language_load_success = self:initLanguage() if (self.command_line.dump or ""):match("strings") then -- Specify --dump=strings on the command line to dump strings -- (or insert "true or" after the "if" in the above) self:dumpStrings() end -- Load map before world dofile "map" -- Load additional Lua before world if good_install_folder then self.anims = self.gfx:loadAnimations("Data", "V") self.animation_manager = AnimationManager(self.anims) self.walls = self:loadLuaFolder("walls") dofile "entity" dofile "entities/humanoid" dofile "entities/object" dofile "entities/machine" local objects = self:loadLuaFolder("objects") self.objects = self:loadLuaFolder("objects/machines", nil, objects) -- Doors are in their own folder to ensure that the swing doors (which -- depend on the door) are loaded after the door object. self.objects = self:loadLuaFolder("objects/doors", nil, objects) for _, v in ipairs(self.objects) do if v.slave_id then v.slave_type = self.objects[v.slave_id] v.slave_type.master_type = v end Object.processTypeDefinition(v) end dofile "room" self.rooms = self:loadLuaFolder("rooms") dofile "humanoid_action" self.humanoid_actions = self:loadLuaFolder("humanoid_actions") local diseases = self:loadLuaFolder("diseases") self.diseases = self:loadLuaFolder("diagnosis", nil, diseases) -- Load world before UI dofile "world" end -- Load UI dofile "ui" if good_install_folder then dofile "game_ui" self.ui = UI(self, true) else self.ui = UI(self, true) self.ui:setMenuBackground() local function callback(path) TheApp.config.theme_hospital_install = path TheApp:saveConfig() debug.getregistry()._RESTART = true TheApp.running = false end self.ui:addWindow(UIDirectoryBrowser(self.ui, nil, _S.install.th_directory, "InstallDirTreeNode", callback)) return true end -- Load main menu (which creates UI) local function callback_after_movie() self:loadMainMenu() -- If we couldn't properly load the language, show an information dialog if not language_load_success then -- At this point we know the language is english, so no use having -- localized strings. self.ui:addWindow(UIInformation(self.ui, {"The game language has been reverted" .. " to English because the desired language could not be loaded. " .. "Please make sure you have specified a font file in the config file."})) end -- If a savegame was specified, load it if self.command_line.load then local status, err = pcall(self.load, self, self.savegame_dir .. self.command_line.load) if not status then err = _S.errors.load_prefix .. err print(err) self.ui:addWindow(UIInformation(self.ui, {err})) end end -- There might also be a message from the earlier initialization process that should be shown. -- Show it using the built-in font in case the game's font is messed up. if error_message then self.ui:addWindow(UIInformation(self.ui, error_message, true)) end end if self.config.play_intro then self.moviePlayer:playIntro(callback_after_movie) else callback_after_movie() end return true end --! Tries to initialize the user and built in level directories, returns true on --! success and false on failure. function App:initUserLevelDir() local conf_path = self.command_line["config-file"] or "config.txt" self.user_level_dir = self.config.levels or conf_path:match("^(.-)[^" .. pathsep .. "]*$") .. "Levels" if self.user_level_dir:sub(-1, -1) == pathsep then self.user_level_dir = self.user_level_dir:sub(1, -2) end if lfs.attributes(self.user_level_dir, "mode") ~= "directory" then if not lfs.mkdir(self.user_level_dir) then print("Notice: Level directory does not exist and could not be created.") return false end end if self.user_level_dir:sub(-1, -1) ~= pathsep then self.user_level_dir = self.user_level_dir .. pathsep end return true end --! Tries to initialize the savegame directory, returns true on success and --! false on failure. function App:initSavegameDir() local conf_path = self.command_line["config-file"] or "config.txt" self.savegame_dir = self.config.savegames or conf_path:match("^(.-)[^" .. pathsep .. "]*$") .. "Saves" if self.savegame_dir:sub(-1, -1) == pathsep then self.savegame_dir = self.savegame_dir:sub(1, -2) end if lfs.attributes(self.savegame_dir, "mode") ~= "directory" then if not lfs.mkdir(self.savegame_dir) then print("Notice: Savegame directory does not exist and could not be created.") return false end end if self.savegame_dir:sub(-1, -1) ~= pathsep then self.savegame_dir = self.savegame_dir .. pathsep end return true end function App:initScreenshotsDir() local conf_path = self.command_line["config-file"] or "config.txt" self.screenshot_dir = self.config.screenshots or conf_path:match("^(.-)[^" .. pathsep .. "]*$") .. "Screenshots" if self.screenshot_dir:sub(-1, -1) == pathsep then self.screenshot_dir = self.screenshot_dir:sub(1, -2) end if lfs.attributes(self.screenshot_dir, "mode") ~= "directory" then if not lfs.mkdir(self.screenshot_dir) then print("Notice: Screenshot directory does not exist and could not be created.") return false end end if self.screenshot_dir:sub(-1, -1) ~= pathsep then self.screenshot_dir = self.screenshot_dir .. pathsep end return true end function App:initLanguage() -- Make sure that we can actually show the desired language. -- If we can't, then the player probably didn't specify a font file -- in the config file properly. local success = true local language = self.config.language local font = self.strings:getFont(language) if self.gfx:hasLanguageFont(font) then self.gfx.language_font = font else -- Otherwise revert to english. self.gfx.language_font = self.strings:getFont("english") language = "english" self.config.language = "english" success = false end local strings, speech_file = self.strings:load(language) strict_declare_global "_S" strict_declare_global "_A" local old_S = _S _S = strings -- For immediate compatibility: getmetatable(_S).__call = function(_, sec, str, ...) assert(_S.deprecated[sec] and _S.deprecated[sec][str], "_S(" .. sec .. ", " .. str .. ") does not exist!") str = _S.deprecated[sec][str] if ... then str = str:format(...) end return str end if old_S then unpermanent "_S" end _S = permanent("_S", TH.stringProxy(_S)) if old_S then TH.stringProxy.reload(old_S, _S) end _A = self.strings:setupAdviserMessage(_S.adviser) self.gfx:onChangeLanguage() if self.ui then self.ui:onChangeLanguage() end self.audio:initSpeech(speech_file) return success end function App:worldExited() self.audio:clearCallbacks() end function App:loadMainMenu(message) if self.world then self:worldExited() end -- Make sure there is no blue filter active. self.video:setBlueFilterActive(false) -- Unload ui, world and map self.ui = nil self.world = nil self.map = nil self.ui = UI(self) self.ui:setMenuBackground() self.ui:addWindow(UIMainMenu(self.ui)) self.ui:addWindow(UITipOfTheDay(self.ui)) -- Show update window if there's an update self:checkForUpdates() -- If a message was supplied, show it if message then self.ui:addWindow(UIInformation(self.ui, message)) end end --! Loads the first level of the specified campaign and prepares the world --! to be able to progress through that campaign. --!param campaign_file (string) Name of a CorsixTH Campaign definition Lua file. function App:loadCampaign(campaign_file) local campaign_info, level_info, errors, _ campaign_info, errors = self:readCampaignFile(campaign_file) if not campaign_info then self.ui:addWindow(UIInformation(self.ui, {_S.errors.could_not_load_campaign:format(errors)})) return end level_info, errors = self:readLevelFile(campaign_info.levels[1]) if not level_info then self.ui:addWindow(UIInformation(self.ui, {_S.errors.could_not_find_first_campaign_level:format(errors)})) return end _, errors = self:readMapDataFile(level_info.map_file) if errors then self.ui:addWindow(UIInformation(self.ui, {errors})) return end self:loadLevel(campaign_info.levels[1], nil, level_info.name, level_info.map_file, level_info.briefing) -- The new world needs to know which campaign to continue on. self.world.campaign_info = campaign_info end --! Reads the given file name as a Lua chunk from the Campaigns folder in the CorsixTH install directory. --! A correct campaign definition contains "name", "description", "levels", and "winning_text". --!param campaign_file (string) Name of the file to read. --!return (table) Definitions found in the campaign file. function App:readCampaignFile(campaign_file) local local_path = debug.getinfo(1, "S").source:sub(2, -12) local dir = "Campaigns" .. pathsep local path = local_path .. dir local chunk, err = loadfile_envcall(path .. campaign_file) if not chunk then return nil, "Error loading " .. path .. campaign_file .. ":\n" .. tostring(err) else local result = {} chunk(result) return result end end --! Opens the given file name and returns all Level definitions in a table. --! Values in the returned table: "path", "level_file", "name", "map_file", "briefing", and "end_praise". --!param level (string) Name of the file to read. --!return (table) Level info found in the file. function App:readLevelFile(level) local filename = self:getAbsolutePathToLevelFile(level) local file, err = io.open(filename and filename or "") if not file then return nil, "Could not open the specified level file (" .. level .. "): " .. err end local contents = file:read("*all") file:close() local level_info = {} level_info.path = filename level_info.level_file = level level_info.name = contents:match("%Name ?= ?\"(.-)\"") or "Unknown name" level_info.map_file = contents:match("%MapFile ?= ?\"(.-)\"") if not level_info.map_file then -- The old way of defining the Map File has been deprecated, but a warning is enough. level_info.map_file = contents:match("%LevelFile ?= ?\"(.-)\"") if level_info.map_file then print("\nWarning: The level '" .. level_info.name .. "' contains a deprecated variable definition in the level file." .. "'%LevelFile' has been renamed to '%MapFile'. Please advise the map creator to update the level.\n") end level_info.deprecated_variable_used = true end level_info.briefing = contents:match("%LevelBriefing ?= ?\"(.-)\"") level_info.end_praise = contents:match("%LevelDebriefing ?= ?\"(.-)\"") return level_info end --! Searches for the given level file in the "Campaigns" and "Levels" folder of the --! CorsixTH install directory. --!param level (string) Filename to search for. --!return (string, error) Returns the found absolute path, or nil if not found. Then --! a second variable is returned with an error message. function App:getAbsolutePathToLevelFile(level) local path = debug.getinfo(1, "S").source:sub(2, -12) -- First look in Campaigns. If not found there, fall back to Levels. local list_of_possible_paths = {self.user_level_dir, path .. "Campaigns", self.level_dir} for _, parent_path in ipairs(list_of_possible_paths) do local check_path = parent_path .. pathsep .. level local file, _ = io.open(check_path, "rb") if file then file:close() return check_path end end return nil, "Level not found: " .. level end -- Loads the specified level. If a string is passed it looks for the file with the same name -- in the "Levels" folder of CorsixTH, if it is a number it tries to load that level from -- the original game. function App:loadLevel(level, difficulty, level_name, level_file, level_intro, map_editor) if self.world then self:worldExited() end -- Check that we can load the data before unloading current map local new_map = Map(self) local map_objects, errors = new_map:load(level, difficulty, level_name, level_file, level_intro, map_editor) if not map_objects then self.world.ui:addWindow(UIInformation(self.ui, {errors})) return end -- If going from another level, save progress. local carry_to_next_level if self.world and self.world.campaign_info then carry_to_next_level = { world = { room_built = self.world.room_built, campaign_info = self.world.campaign_info, }, hospital = { player_salary = self.ui.hospital.player_salary, message_popup = self.ui.hospital.message_popup, hospital_littered = self.ui.hospital.hospital_littered, has_seen_pay_rise = self.ui.hospital.has_seen_pay_rise, }, } end -- Make sure there is no blue filter active. self.video:setBlueFilterActive(false) -- Unload ui, world and map self.ui = nil self.world = nil self.map = nil -- Load map self.map = new_map self.map:setBlocks(self.gfx:loadSpriteTable("Data", "VBlk-0")) self.map:setDebugFont(self.gfx:loadFont("QData", "Font01V")) -- Load world self.world = World(self) self.world:createMapObjects(map_objects) -- Enable / disable SoundEffects self.audio:playSoundEffects(self.config.play_sounds) -- Load UI self.ui = GameUI(self, self.world:getLocalPlayerHospital(), map_editor) self.world:setUI(self.ui) -- Function call allows world to set up its keyHandlers if tonumber(level) then self.moviePlayer:playAdvanceMovie(level) end -- Now restore progress from previous levels. if carry_to_next_level then self.world:initFromPreviousLevel(carry_to_next_level) end end -- This is a useful debug and development aid function App:dumpStrings() -- Accessors to reach through the userdata proxies on strings local LUT = debug.getregistry().StringProxyValues local function val(o) if type(o) == "userdata" then return LUT[o] else return o end end local function is_table(o) return type(val(o)) == "table" end local dir = self.command_line["config-file"] or "" dir = string.sub(dir, 0, -11) local fi = assert(io.open(dir .. "debug-strings-orig.txt", "w")) for i, sec in ipairs(_S.deprecated) do for j, str in ipairs(sec) do fi:write("[" .. i .. "," .. j .. "] " .. ("%q\n"):format(val(str))) end fi:write("\n") end fi:close() local function dump_by_line(file, obj, prefix) for n, o in pairs(obj) do if n ~= "deprecated" then local new_prefix if type(n) == "number" then new_prefix = prefix .. "[" .. n .. "]" else new_prefix = (prefix == "") and n or (prefix .. "." .. n) end if is_table(o) then dump_by_line(file, o, new_prefix) else file:write(new_prefix .. " = " .. "\"" .. val(o) .. "\"\n") end end end end local function dump_grouped(file, obj, prefix) for n, o in pairs(obj) do if n ~= "deprecated" then if type(n) == "number" then n = "[" .. n .. "]" end if is_table(o) then file:write(prefix .. n .. " = {\n") dump_grouped(file, o, prefix .. " ") file:write(prefix .. "}") else file:write(prefix .. n .. " = " .. "\"" .. val(o) .. "\"") end if prefix ~= "" then file:write(",") end file:write("\n") end end end fi = assert(io.open(dir .. "debug-strings-new-lines.txt", "w")) dump_by_line(fi, _S, "") fi:close() fi = assert(io.open(dir .. "debug-strings-new-grouped.txt", "w")) dump_grouped(fi, _S, "") fi:close() self:checkMissingStringsInLanguage(dir, self.config.language) -- Uncomment these lines to get diffs for all languages in the game -- for _, lang in ipairs(self.strings.languages_english) do -- self:checkMissingStringsInLanguage(dir, lang) -- end print("") print("------------------------------------------------------") print("Dumped strings to default configuration file directory") print("------------------------------------------------------") print("") end --! Compares strings provided by language file of given language WITHOUT inheritance -- with strings provided by english language with inheritance (i.e. all strings). -- This will give translators an idea which strings are missing in their translation. --!param dir The directory where the file to write to should be. --!param language The language to check against. function App:checkMissingStringsInLanguage(dir, language) -- Accessors to reach through the userdata proxies on strings local LUT = debug.getregistry().StringProxyValues local function val(o) if type(o) == "userdata" then return LUT[o] else return o end end local function is_table(o) return type(val(o)) == "table" end local ltc = self.strings.language_to_chunk if ltc[language] ~= ltc["english"] then local str_en = self.strings:load("english", true) local str_cur = self.strings:load(language, true, true) local function dump_diff(file, obj1, obj2, prefix) for n, o in pairs(obj1) do if n ~= "deprecated" then local new_prefix if type(n) == "number" then new_prefix = prefix .. "[" .. n .. "]" else new_prefix = (prefix == "") and n or (prefix .. "." .. n) end if is_table(o) then -- if obj2 is already nil (i.e. whole table does not exist in current language), carry over nil dump_diff(file, o, obj2 and obj2[n], new_prefix) else if not (obj2 and obj2[n]) then -- does not exist in current language file:write(new_prefix .. " = " .. "\"" .. val(o) .. "\"\n") end end end end end -- if possible, use the English name of the language for the file name. local language_english = language for _, lang_eng in ipairs(self.strings.languages_english) do if ltc[language] == ltc[lang_eng:lower()] then language_english = lang_eng break end end local fi = assert(io.open(dir .. "debug-strings-diff-" .. language_english:lower() .. ".txt", "w")) fi:write("------------------------------------\n") fi:write("MISSING STRINGS IN LANGUAGE \"" .. language:upper() .. "\":\n") fi:write("------------------------------------\n") dump_diff(fi, str_en, str_cur, "") fi:write("------------------------------------\n") fi:write("SUPERFLUOUS STRINGS IN LANGUAGE \"" .. language:upper() .. "\":\n") fi:write("------------------------------------\n") dump_diff(fi, str_cur, str_en, "") fi:close() end end function App:fixConfig() -- Fill in default values for things which don't exist local _, config_defaults = dofile "config_finder" for k, v in pairs(config_defaults) do if self.config[k] == nil then self.config[k] = v end end for key, value in pairs(self.config) do -- Trim whitespace from beginning and end string values - it shouldn't be -- there (at least in any current configuration options). if type(value) == "string" then if value:match("^[%s]") or value:match("[%s]$") then self.config[key] = value:match("^[%s]*(.-)[%s]*$") end end -- For language, make language name lower case if key == "language" and type(value) == "string" then self.config[key] = value:lower() end -- For resolution, check that resolution is at least 640x480 if key == "width" and type(value) == "number" and value < 640 then self.config[key] = 640 end if key == "height" and type(value) == "number" and value < 480 then self.config[key] = 480 end if (key == "scroll_speed" or key == "shift_scroll_speed") and type(value) == "number" then if value > 10 then self.config[key] = 10 elseif value < 1 then self.config[key] = 1 end end end end function App:saveConfig() -- Load lines from config file local fi = io.open(self.command_line["config-file"] or "config.txt", "r") local lines = {} local handled_ids = {} if fi then for line in fi:lines() do lines[#lines + 1] = line if not (string.find(line, "^%s*$") or string.find(line, "^%s*%-%-")) then -- empty lines or comments -- Look for identifiers we want to save local _, _, identifier, value = string.find(line, "^%s*([_%a][_%w]*)%s*=%s*(.-)%s*$") if identifier then local _, temp -- Trim possible trailing comment from value _, _, temp = string.find(value, "^(.-)%s*%-%-.*") value = temp or value -- Remove enclosing [[]], if necessary _, _, temp = string.find(value, "^%[%[(.*)%]%]$") value = temp or value -- If identifier also exists in runtime options, compare their values and -- replace the line, if needed handled_ids[identifier] = true if value ~= tostring(self.config[identifier]) then local new_value = self.config[identifier] if type(new_value) == "string" then new_value = string.format("[[%s]]", new_value) else new_value = tostring(new_value) end lines[#lines] = string.format("%s = %s", identifier, new_value) end end end end fi:close() end -- Append options that were not found for identifier, value in pairs(self.config) do if not handled_ids[identifier] then if type(value) == "string" then value = string.format("[[%s]]", value) else value = tostring(value) end lines[#lines + 1] = string.format("%s = %s", identifier, value) end end -- Trim trailing newlines while lines[#lines] == "" do lines[#lines] = nil end fi = io.open(self.command_line["config-file"] or "config.txt", "w") for _, line in ipairs(lines) do fi:write(line .. "\n") end fi:close() end function App:run() -- The application "main loop" is an SDL event loop written in C, which calls -- a coroutine whenever an event occurs. Initially it may seem odd to involve -- coroutines, but it does give a few advantages: -- 1) Lua can signal the main loop to exit by finishing the coroutine -- 2) If an error occurs, the call stack is preserved in the coroutine, so -- Lua can query or print the call stack as required, rather than -- hardcoding error behaviour in C. local co = coroutine.create(function(app) local yield = coroutine.yield local dispatch = app.dispatch local repaint = true while app.running do repaint = dispatch(app, yield(repaint)) end end) if self.config.track_fps then SDL.trackFPS(true) SDL.limitFPS(false) end self.running = true do local num_iterations = 0 self.resetInfiniteLoopChecker = function() num_iterations = 0 end debug.sethook(co, function() num_iterations = num_iterations + 1 if num_iterations == 100 then error("Suspected infinite loop", 2) end end, "", 1e7) end coroutine.resume(co, self) local e, where = SDL.mainloop(co) debug.sethook(co, nil) self.running = false if e ~= nil then if where then -- Errors from an asynchronous callback done on the dispatcher coroutine -- will end up here. As the error didn't originate from a dispatched -- event, self.last_dispatch_type is wrong. Therefore, an extra value is -- returned from mainloop(), meaning that where == "callback". self.last_dispatch_type = where end print("An error has occurred!") print("Almost anything can be the cause, but the detailed information " .. "below can help the developers find the source of the error.") print("Running: The " .. self.last_dispatch_type .. " handler.") print("A stack trace is included below, and the handler has been disconnected.") print(debug.traceback(co, e, 0)) print("") if self.world then self.world:gameLog("Error in " .. self.last_dispatch_type .. " handler: ") self.world:gameLog(debug.traceback(co, e, 0)) self.world:dumpGameLog() end if self.world and self.last_dispatch_type == "timer" and self.world.current_tick_entity then -- Disconnecting the tick handler is quite a drastic measure, so give -- the option of just disconnecting the offending entity and attempting -- to continue. local handler = self.eventHandlers[self.last_dispatch_type] local entity = self.world.current_tick_entity self.world.current_tick_entity = nil if class.is(entity, Patient) then self.ui:addWindow(UIPatient(self.ui, entity)) elseif class.is(entity, Staff) then self.ui:addWindow(UIStaff(self.ui, entity)) end self.ui:addWindow(UIConfirmDialog(self.ui, "Sorry, but an error has occurred. There can be many reasons - see the " .. "log window for details. Would you like to attempt a recovery?", --[[persistable:app_attempt_recovery]] function() self.world:gameLog("Recovering from error in timer handler...") entity.ticks = false self.eventHandlers.timer = handler end )) end self.eventHandlers[self.last_dispatch_type] = nil if self.last_dispatch_type ~= "frame" then -- If it wasn't the drawing code which failed, then it would be useful -- to ensure that a draw happens, as with events disconnected, a frame -- might not otherwise be drawn for a while. pcall(self.drawFrame, self) end return self:run() end end local done_no_handler_warning = {} function App:dispatch(evt_type, ...) local handler = self.eventHandlers[evt_type] if handler then self:resetInfiniteLoopChecker() self.last_dispatch_type = evt_type return handler(self, ...) else if not done_no_handler_warning[evt_type] then print("Warning: No event handler for " .. evt_type) done_no_handler_warning[evt_type] = true end return false end end function App:onTick(...) if(not self.moviePlayer.playing) then if self.world then self.world:onTick(...) end self.ui:onTick(...) end return true -- tick events always result in a repaint end local fps_history = {} -- Used to average FPS over the last thirty frames for i = 1, 30 do fps_history[i] = 0 end local fps_sum = 0 -- Sum of fps_history array local fps_next = 1 -- Used to loop through fps_history when [over]writing function App:drawFrame() self.video:startFrame() if(self.moviePlayer.playing) then self.key_modifiers = {} self.moviePlayer:refresh() else self.key_modifiers = SDL.getKeyModifiers() self.ui:draw(self.video) end self.video:endFrame() if self.config.track_fps then fps_sum = fps_sum - fps_history[fps_next] fps_history[fps_next] = SDL.getFPS() fps_sum = fps_sum + fps_history[fps_next] fps_next = (fps_next % #fps_history) + 1 end end function App:getFPS() if self.config.track_fps then return fps_sum / #fps_history end end function App:onKeyDown(...) return self.ui:onKeyDown(...) end function App:onKeyUp(...) return self.ui:onKeyUp(...) end function App:onEditingText(...) return self.ui:onEditingText(...) end function App:onTextInput(...) return self.ui:onTextInput(...) end function App:onMouseUp(...) return self.ui:onMouseUp(...) end function App:onMouseDown(...) return self.ui:onMouseDown(...) end function App:onMouseMove(...) return self.ui:onMouseMove(...) end function App:onMouseWheel(...) return self.ui:onMouseWheel(...) end function App:onWindowActive(...) return self.ui:onWindowActive(...) end --! Window has been resized by the user --! Call the UI to handle the new window size function App:onWindowResize(...) return self.ui:onWindowResize(...) end function App:onMusicOver(...) return self.audio:onMusicOver(...) end function App:onMovieOver(...) self.moviePlayer:onMovieOver(...) end function App:onSoundOver(...) return self.audio:onSoundPlayed(...) end function App:onMultiGesture(...) return self.ui:onMultiGesture(...) end function App:checkInstallFolder() self.fs = FileSystem() local status, _ if self.config.theme_hospital_install then status, _ = self.fs:setRoot(self.config.theme_hospital_install) end local message = "Please make sure that you point the game to" .. " a valid copy of the data files from the original game," .. " as said files are required for graphics and sounds." if not status then -- If the given directory didn't exist, then likely the config file hasn't -- been changed at all from the default, so we continue to initialise the -- app, and give the user a dialog asking for the correct directory. return false end -- Check that a few core files are present local missing = {} local function check(path) if not self.fs:readContents(path) then missing[#missing + 1] = path end end check("Data" .. pathsep .. "VBlk-0.tab") check("Levels" .. pathsep .. "Level.L1") check("QData" .. pathsep .. "SPointer.dat") if #missing ~= 0 then missing = table.concat(missing, ", ") message = "Invalid Theme Hospital folder specified in config file, " .. "as at least the following files are missing: " .. missing .. ".\n" .. message print(message) print("Trying to let the user select a new one.") return false, {message} end -- Check for demo version if self.fs:readContents("DataM", "Demo.dat") then self.using_demo_files = true print("Notice: Using data files from demo version of Theme Hospital.") print("Consider purchasing a full copy of the game to support EA.") end -- Do a few more checks to make sure that commonly corrupted files are OK. local corrupt = {} if not self.using_demo_files then local function check_corrupt(path, correct_size) local real_path = self.fs:getFilePath(path) -- If the file exists but is smaller than usual it is probably corrupt if real_path then local real_size = lfs.attributes(real_path, "size") if real_size + 1024 < correct_size or real_size - 1024 > correct_size then corrupt[#corrupt + 1] = path .. " (Size: " .. math.floor(real_size/1024) .. " kB / Correct: about " .. math.floor(correct_size/1024) .. " kB)" end else corrupt[#corrupt + 1] = path .. " (This file is missing)" end end check_corrupt("ANIMS" .. pathsep .. "AREA01V.SMK", 251572) check_corrupt("ANIMS" .. pathsep .. "WINGAME.SMK", 2066656) check_corrupt("ANIMS" .. pathsep .. "WINLEVEL.SMK", 335220) check_corrupt("INTRO" .. pathsep .. "INTRO.SM4", 33616520) check_corrupt("QDATA" .. pathsep .. "FONT00V.DAT", 1024) check_corrupt("ANIMS" .. pathsep .. "LOSE1.SMK", 1009728) if #corrupt ~= 0 then table.insert(corrupt, 1, "There appears to be corrupt files in your Theme Hospital folder, " .. "so don't be surprised if CorsixTH crashes. At least the following files are wrong:") table.insert(corrupt, message) end end return true, #corrupt ~= 0 and corrupt or nil end --! Get the directory containing the bitmap files. --!return Name of the directory containing the bitmap files, ending with a -- directory path separator. function App:getBitmapDir() return (self.command_line["bitmap-dir"] or "Bitmap") .. pathsep end -- Load bitmap data into memory. --!param filename Name of the file to load. --!return The loaded data. function App:readBitmapDataFile(filename) filename = self:getBitmapDir() .. filename local file = assert(io.open(filename, "rb")) local data = file:read("*a") file:close() if data:sub(1, 3) == "RNC" then data = assert(rnc.decompress(data)) end return data end -- Read a data file of the application into memory (possibly with decompression). --!param dir (string) Directory to read from. "Bitmap" and "Levels" are -- meta-directories, and get resolved to real directories in the function. --!param filename (string or nil) If specified, the file to load. If 'nil', the -- 'dir' parameter is the filename in the "Data" directory. function App:readDataFile(dir, filename) if dir == "Bitmap" then return self:readBitmapDataFile(filename) elseif dir == "Levels" then return self:readMapDataFile(filename) end if filename == nil then dir, filename = "Data", dir end local data = assert(self.fs:readContents(dir .. pathsep .. filename)) if data:sub(1, 3) == "RNC" then data = assert(rnc.decompress(data)) end return data end --! Get a level file. --!param filename (string) Name of the level file. --!return If the file could be found, the data of the file, else a -- tuple 'nil', and an error description function App:readMapDataFile(filename) -- First look in the original install directory, if not found there -- look in the CorsixTH directories "Levels" and "Campaigns". local data = self.fs:readContents("Levels" .. pathsep .. filename) if not data then local absolute_path = self:getAbsolutePathToLevelFile(filename) if absolute_path then local file = io.open(absolute_path, "rb") if file then data = file:read("*a") file:close() end end end if data then if data:sub(1, 3) == "RNC" then data = assert(rnc.decompress(data)) end else -- Could not find the file return nil, _S.errors.map_file_missing:format(filename) end return data end function App:loadLuaFolder(dir, no_results, append_to) local ourpath = debug.getinfo(1, "S").source:sub(2, -8) dir = dir .. pathsep local path = ourpath .. dir local results = no_results and "" or (append_to or {}) for file in lfs.dir(path) do if file:match("%.lua$") then local status, result = pcall(dofile, dir .. file:sub(1, -5)) if not status then print("Error loading " .. dir .. file .. ":\n" .. tostring(result)) else if result == nil then if not no_results then print("Warning: " .. dir .. file .. " returned no value") end else if no_results then print("Warning: " .. dir .. file .. " returned a value:", result) else if type(result) == "table" and result.id then results[result.id] = result elseif type(result) == "function" then results[file:match("(.*)%.")] = result end results[#results + 1] = result end end end end end if no_results then return else return results end end --! Returns the version number (name) of the local copy of the game based on --! which save game version it is. This was added after the Beta 8 --! release, which is why the checks prior to that version aren't made. --!param version An optional value if you want to find what game version -- a specific savegame verion is from. function App:getVersion(version) local ver = version or self.savegame_version if ver > 122 then return "Trunk" elseif ver > 111 then return "v0.61" elseif ver > 105 then return "v0.60" elseif ver > 91 then return "0.50" elseif ver > 78 then return "0.40" elseif ver > 72 then return "0.30" elseif ver > 66 then return "0.21" elseif ver > 54 then return "0.20" elseif ver > 53 then return "0.11" elseif ver > 51 then return "0.10" elseif ver > 45 then return "0.01" else return "Beta 8 or earlier" end end function App:save(filename) return SaveGameFile(filename) end -- Omit the usual file extension so this file cannot be seen from the normal load and save screen and cannot be overwritten function App:quickSave() local filename = "quicksave" return SaveGameFile(self.savegame_dir .. filename) end function App:load(filepath) if self.world then self:worldExited() end return LoadGameFile(filepath) end function App:quickLoad() local filename = "quicksave" if lfs.attributes(self.savegame_dir .. filename) then self:load(filename) else self:quickSave() self.ui:addWindow(UIInformation(self.ui, {_S.errors.load_quick_save})) end end --! Restarts the current level (offers confirmation window first) function App:restart() assert(self.map, "Trying to restart while no map is loaded.") self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.restart_level, --[[persistable:app_confirm_restart]] function() self:worldExited() local level = self.map.level_number local difficulty = self.map.difficulty local name, file, intro if not tonumber(level) then name = self.map.level_name file = self.map.map_file intro = self.map.level_intro end if level and name and not file then self.ui:addWindow(UIInformation(self.ui, {_S.information.cannot_restart})) return end local status, err = pcall(self.loadLevel, self, level, difficulty, name, file, intro) if not status then err = "Error while loading level: " .. err print(err) self.ui:addWindow(UIInformation(self.ui, {err})) end end)) end --! Begin the map editor function App:mapEdit() self:loadLevel("", nil, nil, nil, nil, true) end --! Exits the game completely (no confirmation window) function App:exit() -- Save config before exiting self:saveConfig() self.running = false end --! Exits the game completly without saving the config i.e. Alt+F4 for Quit Application function App:abandon() self.running = false end --! This function is automatically called after loading a game and serves for compatibility. function App:afterLoad() self.ui:addOrRemoveDebugModeKeyHandlers() local old = self.world.savegame_version or 0 local new = self.savegame_version if old == 0 then -- Game log was not present before introduction of savegame versions, so create it now. self.world.game_log = {} self.world:gameLog("Created Gamelog on load of old (pre-versioning) savegame.") end if not self.world.original_savegame_version then self.world.original_savegame_version = old end local first = self.world.original_savegame_version if new == old then self.world:gameLog("Savegame version is " .. new .. " (" .. self:getVersion() .. "), originally it was " .. first .. " (" .. self:getVersion(first) .. ")") self.world:playLoadedEntitySounds() return elseif new > old then self.world:gameLog("Savegame version changed from " .. old .. " (" .. self:getVersion(old) .. ") to " .. new .. " (" .. self:getVersion() .. "). The save was created using " .. first .. " (" .. self:getVersion(first) .. ")") else -- TODO: This should maybe be forbidden completely. self.world:gameLog("Warning: loaded savegame version " .. old .. " (" .. self:getVersion(old) .. ")" .. " in older version " .. new .. " (" .. self:getVersion() .. ").") end self.world.savegame_version = new if old < 87 then local new_object = dofile "objects/gates_to_hell" Object.processTypeDefinition(new_object) self.objects[new_object.id] = new_object self.world:newObjectType(new_object) end if old < 114 then local rathole_type = dofile "objects/rathole" Object.processTypeDefinition(rathole_type) self.objects[rathole_type.id] = rathole_type self.world:newObjectType(rathole_type) end self.map:afterLoad(old, new) self.world:afterLoad(old, new) self.ui:afterLoad(old, new) end function App:checkForUpdates() -- Only check for updates once per application launch if not self.check_for_updates or not self.config.check_for_updates then return end self.check_for_updates = false -- Default language to use for the changelog if no localised version is available local default_language = "en" local update_url = 'http://www.corsixth.com/check-for-updates' local current_version = self:getVersion() -- Only URLs that match this list of trusted domains will be accepted. local trusted_domains = { 'corsixth.com', 'code.google.com' } -- Only check for updates against released versions if current_version == "Trunk" then print("Will not check for updates since this is the Trunk version.") return end local success, _ = pcall(require, "socket") if not success then -- LuaSocket is not available, just return print("Cannot check for updates since LuaSocket is not available.") return else self.lua_socket_available = true end local http = require "socket.http" local url = require "socket.url" print("Checking for CorsixTH updates...") local update_body, status, _ = http.request(update_url) if not update_body or not (status == 200) then print("Couldn't check for updates. Server returned code: " .. status) print("Check that you have an active internet connection and that CorsixTH is allowed in your firewall.") return end local update_table = loadstring_envcall(update_body, "@updatechecker"){} local changelog = update_table["changelog_" .. default_language] local new_version = update_table["major"] .. '.' .. update_table["minor"] .. update_table["revision"] if (new_version <= current_version) then print("You are running the latest version of CorsixTH.") return end -- Check to make sure download URL is trusted local download_url = url.parse(update_table["download_url"]) local valid_url = false for _,v in ipairs(trusted_domains) do if download_url.host == v then valid_url = true break end end if not valid_url then print("Update download url is not on the trusted domains list (" .. update_table["download_url"] .. ")") return end -- Check to see if there's a changelog in the user's language local current_langs = self.strings:getLanguageNames(self.config.language) for _, v in ipairs(current_langs) do if (update_table["changelog_" .. v]) then changelog = update_table["changelog_" .. v] break end end print("New version found: " .. new_version) -- Display the update window self.ui:addWindow(UIUpdate(self.ui, current_version, new_version, changelog, update_table["download_url"])) end -- Free up / stop any resources relying on the current video object function App:prepareVideoUpdate() self.video:endFrame() self.moviePlayer:deallocatePictureBuffer() end -- Update / start any resources relying on a video object function App:finishVideoUpdate() self.gfx:updateTarget(self.video) self.moviePlayer:updateRenderer() self.moviePlayer:allocatePictureBuffer() self.video:startFrame() end -- Do not remove, for savegame compatibility < r1891 local app_confirm_quit_stub = --[[persistable:app_confirm_quit]] function() end CorsixTH-0.61/CorsixTH/Lua/audio.lua000066400000000000000000000541461321660673500172160ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local pathsep = package.config:sub(1, 1) local rnc = require "rnc" local lfs = require "lfs" local SDL = require "sdl" local TH = require "TH" local ipairs = ipairs --! Layer which handles the Lua-facing side of loading and playing audio. class "Audio" ---@type Audio local Audio = _G["Audio"] function Audio:Audio(app) self.app = app self.has_bg_music = false self.not_loaded = not app.config.audio self.unused_played_callback_id = 0 self.played_sound_callbacks = {} self.entities_waiting_for_sound_to_be_enabled = {} end function Audio:clearCallbacks() self.unused_played_callback_id = 0 self.played_sound_callbacks = {} self.entities_waiting_for_sound_to_be_enabled = {} end local function GetFileData(path) local f, e = io.open(path, "rb") if not f then return f, e end e = f:read"*a" f:close() return e end function Audio:init() self.background_playlist = { -- {title = "", filename = "", enabled = true, music = nil}, } if self.not_loaded then return end if not SDL.audio.loaded then print("Notice: Audio system not loaded as CorsixTH compiled without it") self.not_loaded = true return end local mp3 = self.app.config.audio_mp3 local music_dir if mp3 then music_dir = mp3 if music_dir:sub(-1) ~= pathsep then music_dir = music_dir .. pathsep end end local music_array = {} local function musicFileTable(filename) filename = filename:upper() local t = music_array[filename] if t == nil then t = {} music_array[filename] = t end return t end --[[ Find the music files on disk. ----------------------------- - Will search through all the files in music_dir. - Adds xmi and mp3 files. - If ATLANTIS.XMI and ATLANTIS.MP3 exists, the MP3 is preferred. - Uses titles from MIDI.TXT if found, else the filename. --]] local midi_txt -- File name of midi.txt file, if any. local _f, _s, _v if music_dir then _f, _s, _v = lfs.dir(music_dir) else _f, _s, _v = pairs(self.app.fs:listFiles("Sound", "Midi") or {}) end for file in _f, _s, _v do local filename, ext = file:match"^(.*)%.([^.]+)$" ext = ext and ext:upper() -- Music file found (mp3/xmi). if ext == "MP3" or ext == "XMI" then local info = musicFileTable(filename) info.title = filename if ext == "MP3" then if music_dir then info.filename_mp3 = music_dir .. file else print("Warning: CorsixTH only supports xmi if audio_mp3" .. " is not defined in the config file.") music_array[filename:upper()] = nil end -- Remove the xmi version of this file, if found. info.filename = nil elseif ext == "XMI" and not info.filename_mp3 then -- NB: If the mp3 version exists, this file is ignored info.filename = table.concat({"Sound", "Midi", file}, pathsep) end -- This title might be replaced later by the midi_txt. elseif ext == "TXT" and (file:sub(1, 4):upper() == "MIDI" or file:sub(1, 5):upper() == "NAMES") then -- If it Looks like the midi.txt or equiv, then remember it for later. midi_txt = file end end -- Enable music files and add them to the playlist. for _, info in pairs(music_array) do info.enabled = true self.background_playlist[#self.background_playlist + 1] = info end -- This is later. If we found a midi.txt, go through it and add the titles to the files we know if midi_txt then local data if music_dir then data = assert(GetFileData(music_dir .. midi_txt)) else data = assert(self.app.fs:readContents("Sound", "Midi", midi_txt)) end for file, title in data:gmatch"([^\r\n\26]+).-([^\r\n\26]+)" do local info = musicFileTable(file:match"^(.*)%." or file) if next(info) ~= nil then info.title = title else print('Notice: Background track "'.. file ..'" named in list file, '.. 'but it does not exist.') end end end if #self.background_playlist == 0 and self.app.good_install_folder then print("Notice: Audio system loaded, but found no background tracks") self.has_bg_music = false else self.has_bg_music = true end local status, err = SDL.audio.init(self.app.config.audio_frequency, self.app.config.audio_channels, self.app.config.audio_buffer_size) if status then -- NB: Playback will not start if play_music is set to false self:playRandomBackgroundTrack() else print("Notice: Audio system could not initialise (SDL error: " .. tostring(err) .. ")") self.not_loaded = true self.has_bg_music = false self.background_playlist = {} return end end function Audio:initSpeech(speech_file) self.sound_archive = nil self.sound_fx = nil if self.not_loaded then return end local function load_sound_file(file) return self.app.fs:readContents("Sound", "Data", file) end speech_file = speech_file or "Sound-0.dat" if self.speech_file_name == speech_file then return end local archive_data, err = load_sound_file(speech_file) -- If sound file not found and language chosen is not English, -- maybe we can have more chance loading English sounds if not archive_data and speech_file ~= "Sound-0.dat" and self.app.good_install_folder then if self.speech_file_name == "Sound-0.dat" then return end print("Notice: Attempt to load English sounds as no SOUND/DATA/" .. speech_file .. " file found") speech_file = "Sound-0.dat" archive_data = load_sound_file(speech_file) end if not archive_data then if self.app.good_install_folder then print("Notice: No sound effects as no SOUND/DATA/".. speech_file .. " file could be found / opened.") print("The reported error was: ".. err) end else if archive_data:sub(1, 3) == "RNC" then archive_data = assert(rnc.decompress(archive_data)) end self.sound_archive = TH.soundArchive() if not self.sound_archive:load(archive_data) then print("Notice: No sound effects as SOUND/DATA/" .. speech_file .. " could not be loaded") if #self.background_playlist == 0 then self.not_loaded = true end else self.speech_file_name = speech_file self.sound_fx = TH.soundEffects() self.sound_fx:setSoundArchive(self.sound_archive) local w, h = self.app.config.width / 2, self.app.config.height / 2 self.sound_fx:setCamera(math.floor(w), math.floor(h), math.floor((w^2 + h^2)^0.5)) --self:dumpSoundArchive[[E:\CPP\2K8\CorsixTH\DataRaw\Sound\]] end end end function Audio:dumpSoundArchive(out_dir) local info,warning = io.open(out_dir .. "info.csv", "w") if info == nil then print("Error: Audio dump failed because info.csv couldn't be created and/or opened in the dump directory:" .. out_dir) print(warning) return end for i = 1, #self.sound_archive - 1 do local filename = self.sound_archive:getFilename(i) info:write(i, ",", filename, ",", self.sound_archive:getDuration(i), ",\n") local file = io.open(out_dir .. i .. "_" .. filename, "wb") file:write(self.sound_archive:getFileData(i)) file:close() print("".. i .. "/" .. #self.sound_archive - 1) end info:close() print("Sounds dumped to: " .. out_dir) end local wilcard_cache = permanent "audio_wildcard_cache" {} function Audio:playSound(name, where, is_announcement, played_callback, played_callback_delay) local sound_fx = self.sound_fx if sound_fx then if name:find("*") then -- Resolve wildcard to one particular sound local list = self:cacheSoundFilenamesAssociatedWithName(name) name = list[1] and list[math.random(1, #list)] or name end local _, warning local volume = is_announcement and self.app.config.announcement_volume or self.app.config.sound_volume local x, y local played_callbacks_id if played_callback then played_callbacks_id = self.unused_played_callback_id self.unused_played_callback_id = self.unused_played_callback_id + 1 self.played_sound_callbacks[tostring(played_callbacks_id)] = played_callback end if where then x, y = Map:WorldToScreen(where.tile_x, where.tile_y) local dx, dy = where.th:getPosition() local ui = self.app.ui x = x + dx - ui.screen_offset_x y = y + dy - ui.screen_offset_y end _, warning = sound_fx:play(name, volume, x, y, played_callbacks_id, played_callback_delay) if warning then -- Indicates something happened self.app.world:gameLog("Audio:playSound - Warning: " .. warning) end end end function Audio:cacheSoundFilenamesAssociatedWithName(name) local list = wilcard_cache[name] if not list then local filename list = {} wilcard_cache[name] = list local pattern = ("^" .. name:gsub("%*",".*") .. "$"):upper() for i = 1, #self.sound_archive - 1 do filename = self.sound_archive:getFilename(i):upper() if filename:find(pattern) then list[#list + 1] = filename end end end return list end --[[ This function's integer array parameters for the min and max silence lengths should provide lengths for this game's different speeds, indexed as follows: [1] Slowest [2] Slow [3] Normal [4] Fast [5] Maximum !param min_silence_lengths (integer array) The desired minimum silence lengths for this game's different speeds. !param max_silence_lengths (integer array) The desired maximum silence lengths for this game's different speeds. !param num_silences (integer) How many silence lengths should be in the returned table of generated lengths. !return (table) A table of randomly ordered integers for the generated silence lengths. --]] local function getSilenceLengths(min_silence_lengths, max_silence_lengths, num_silences) local min_silence = min_silence_lengths[TheApp.world.tick_rate] local max_silence = max_silence_lengths[TheApp.world.tick_rate] local silences = {} if min_silence == max_silence then silences[1] = min_silence else for i = 1, num_silences do silences[i] = math.random(min_silence, max_silence) end end return silences end --[[ Plays related sounds at an entity in a random sequence, with random length silences between the sounds. This function's integer array parameters for the min and max silence lengths should provide lengths for this game's different speeds, indexed as follows: [1] Slowest [2] Slow [3] Normal [4] Fast [5] Maximum Speed !param names (string) A name pattern for the sequence of related sounds to be played for example: LAVA00*.wav !param entity : Where the sounds will be played at, the player won't hear the sounds being played at the entity when it isn't in their view. !param min_silence_lengths (integer array) The desired minimum silence lengths for this game's different speeds. !param max_silence_lengths (integer array) The desired maximum silence lengths for this game's different speeds. !param num_silences (integer) How many different silence lengths should be used, this can be a nil parameter. --]] function Audio:playEntitySounds(names, entity, min_silence_lengths, max_silence_lengths, num_silences) if self.sound_fx then self:cacheSoundFilenamesAssociatedWithName(names) local silences = getSilenceLengths(min_silence_lengths, max_silence_lengths, num_silences) self:entitySoundsHandler(wilcard_cache[names], entity, silences, 1) end end local function canSoundsBePlayed() return TheApp.config.play_sounds and not TheApp.world:isPaused() end --[[ Called by the above function. This function's integer array parameters for the min and max silence lengths should provide lengths for this game's different speeds, indexed as follows: [1] Slowest [2] Slow [3] Normal [4] Fast [5] Maximum Speed !param sounds (string) A name pattern for the sequence of related sounds to be played for example: LAVA00*.wav !param entity : Where the sounds will be played at, the player won't hear the sounds being played at the entity when it isn't in their view. !param silences (integer array) the different pause durations to be used between the played sounds. !param silences_pointer (integer) the index for the pause duration which should be used after this call's sound has been played. --]] function Audio:entitySoundsHandler(sounds, entity, silences, silences_pointer) if entity.playing_sounds_in_random_sequence then local sound_played_callback = function() self:entitySoundsHandler(sounds, entity, silences, silences_pointer) end if canSoundsBePlayed() then local x, y = Map:WorldToScreen(entity.tile_x, entity.tile_y) local dx, dy = entity.th:getPosition() x = x + dx - self.app.ui.screen_offset_x y = y + dy - self.app.ui.screen_offset_y self.played_sound_callbacks[tostring(self.unused_played_callback_id)] = sound_played_callback self.sound_fx:play(sounds[math.random(1,#sounds)], self.app.config.sound_volume, x, y, self.unused_played_callback_id, silences_pointer) self.unused_played_callback_id = self.unused_played_callback_id + 1 if #silences > 1 then silences_pointer = (silences_pointer % #silences) + 1 end --If the sound can't be played now: else self.entities_waiting_for_sound_to_be_enabled[entity] = sound_played_callback entity:setWaitingForSoundEffectsToBeTurnedOn(true) end else if self.entities_waiting_for_sound_to_be_enabled[entity] then self.entities_waiting_for_sound_to_be_enabled[entity] = nil end end end function Audio:onEndPause() if TheApp.config.play_sounds then self:tellInterestedEntitiesTheyCanNowPlaySounds() end end function Audio:onSoundPlayed(played_callbacks_id) if TheApp.world ~= nil then if self.played_sound_callbacks[tostring(played_callbacks_id)] then self.played_sound_callbacks[tostring(played_callbacks_id)]() self.played_sound_callbacks[tostring(played_callbacks_id)] = nil end end end --! Returns whether the given sound (either a string or a number) --! exists in the sound archive --!param sound The sound to look for, either a string (name) or a -- number (position in the list of sounds) function Audio:soundExists(sound) if self.sound_archive then return self.sound_archive:soundExists(sound) else return false end end function Audio:playRandomBackgroundTrack() if self.not_loaded or #self.background_playlist == 0 then return end local enabled = {} for i, info in ipairs(self.background_playlist) do if info.enabled then enabled[#enabled + 1] = i end end if not enabled[1] then return end local index = enabled[math.random(1, #enabled)] self:playBackgroundTrack(index) end function Audio:findIndexOfCurrentTrack() for i, info in ipairs(self.background_playlist) do if info.music == self.background_music then return i end end return 1 end function Audio:playNextOrPreviousBackgroundTrack(direction) if self.not_loaded or #self.background_playlist == 0 then return end if not self.background_music then self:playRandomBackgroundTrack() return end local index = self:findIndexOfCurrentTrack() -- Find next/previous track for i = 1, #self.background_playlist do i = ((index + direction * i - 1) % #self.background_playlist) + 1 if self.background_playlist[i].enabled then self:playBackgroundTrack(i) return end end end function Audio:playNextBackgroundTrack() self:playNextOrPreviousBackgroundTrack(1) end function Audio:playPreviousBackgroundTrack() self:playNextOrPreviousBackgroundTrack(-1) end --! Pauses or unpauses background music depending on the current state. --! Returns whether music is currently paused or not after the call. --! If nil is returned music might either be playing or completely stopped. function Audio:pauseBackgroundTrack() assert(self.background_music, "Trying to pause music while music is stopped") -- TODO: There is a bug in SDL for Windows that makes all sound, not just music stop -- when pausing. For the time being, stop the music instead to prevent this. self:stopBackgroundTrack() return false ------------------------------------------------- -- Real pause logic ------------------------------------------------- --[[local status if self.background_paused then self.background_paused = nil status = SDL.audio.resumeMusic() else status = SDL.audio.pauseMusic() self.background_paused = true end -- NB: Explicit false check, as old C side returned nil in all cases if status == false then -- SDL doesn't seem to support pausing/resuming for this format/driver, -- so just stop the music instead. self:stopBackgroundTrack() self.background_paused = nil else -- SDL can also be odd and report music as paused even though it is still -- playing. If it really is paused, then there is no harm in muting it. -- If it wasn't really paused, then muting it is the next best thing that -- we can do (even though it'll continue playing). if self.background_paused then self.old_bg_music_volume = self.app.config.music_volume SDL.audio.setMusicVolume(0) else self.app.config.music_volume = self.old_bg_music_volume SDL.audio.setMusicVolume(self.old_bg_music_volume) self.old_bg_music_volume = nil end end self:notifyJukebox() return self.background_paused--]] end --! Stops playing background music for the time being. --! Does not affect the configuration setting play_music. function Audio:stopBackgroundTrack() if self.background_paused then -- unpause first in order to clear the backupped volume self:pauseBackgroundTrack() end SDL.audio.stopMusic() self.background_music = nil self:notifyJukebox() end --! Plays a given background track. --! Playback will only start if the configuration says it's ok. (play_music = true) --!param index Index of the track to play in the playlist. function Audio:playBackgroundTrack(index) local info = self.background_playlist[index] assert(info, "Index not valid") if self.app.config.play_music then local music = info.music if not music then local data if info.filename_mp3 then data = assert(GetFileData(info.filename_mp3)) else data = assert(self.app.fs:readContents(info.filename)) end if data:sub(1, 3) == "RNC" then data = assert(rnc.decompress(data)) end if not info.filename_mp3 then data = SDL.audio.transcodeXmiToMid(data) end -- Loading of music files can incur a slight pause, which is why it is -- done asynchronously. -- Someone might want to stop the player from -- starting to play once it's loaded though. self.load_music = true SDL.audio.loadMusicAsync(data, function(music_data, e) if music_data == nil then error("Could not load music file \'" .. (info.filename_mp3 or info.filename) .. "\'" .. (e and (" (" .. e .. ")" or ""))) else info.music = music_data -- Do we still want it to play? if self.load_music then return self:playBackgroundTrack(index) end end end) return end SDL.audio.setMusicVolume(self.app.config.music_volume) assert(SDL.audio.playMusic(music)) self.background_music = music self:notifyJukebox() end end function Audio:onMusicOver() if self.not_loaded or #self.background_playlist == 0 or self.background_music == nil then return end self:playNextBackgroundTrack() end function Audio:setBackgroundVolume(volume) if self.background_paused then self.old_bg_music_volume = volume else self.app.config.music_volume = volume SDL.audio.setMusicVolume(volume) end end function Audio:setSoundVolume(volume) self.app.config.sound_volume = volume if self.sound_fx then -- Since some sounds are played automatically (using computers etc) -- we need to set a value on C level too. self.sound_fx:setSoundVolume(volume) end end function Audio:playSoundEffects(play_effects) self.app.config.play_sounds = play_effects if self.sound_fx then -- As above. self.sound_fx:setSoundEffectsOn(play_effects) end if canSoundsBePlayed() then self:tellInterestedEntitiesTheyCanNowPlaySounds() end end function Audio:tellInterestedEntitiesTheyCanNowPlaySounds() if table_length(self.entities_waiting_for_sound_to_be_enabled) > 0 then for entity, callback in pairs(self.entities_waiting_for_sound_to_be_enabled) do callback() self.entities_waiting_for_sound_to_be_enabled[entity] = nil end end end function Audio:entityNoLongerWaitingForSoundsToBeTurnedOn(entity) self.entities_waiting_for_sound_to_be_enabled[entity] = nil end function Audio:setAnnouncementVolume(volume) self.app.config.announcement_volume = volume end -- search for jukebox and notify it to update its play button function Audio:notifyJukebox() local jukebox = self.app.ui:getWindow(UIJukebox) if jukebox then jukebox:updatePlayButton() end end function Audio:reserveChannel() if self.sound_fx then return self.sound_fx:reserveChannel() else return -1 end end function Audio:releaseChannel(channel) if self.sound_fx and channel > -1 then self.sound_fx:releaseChannel(channel) end end CorsixTH-0.61/CorsixTH/Lua/base_config.lua000066400000000000000000000671071321660673500203550ustar00rootroot00000000000000--[[ Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- To keep in line with the original, tables start their indexing at 0. -- NOTE: This makes index iterations over tables omit the first element! local configuration = { ----------------------------------------------------------- -- New configuration values added in CorsixTH -- ----------------------------------------------------------- town = { InterestRate = 0.01, StartCash = 40000, }, -- New value, but should only be defined if starting staff is included. --start_staff = { -- {Doctor = 0, Shrink = 0, Skill = 0}, --}, ----------------------------------------------------------- -- Original configuration values -- ----------------------------------------------------------- staff = { [0] = {MinSalary = 60}, -- Nurse {MinSalary = 75}, -- Doctor {MinSalary = 25}, -- Handyman {MinSalary = 20}, -- Receptionist }, gbv = { SalaryAdd = { {}, {}, -30, -- Junior 30, -- Doctor 40, -- Surgeon 30, -- Psychiatrist 100, -- Consultant 20, -- Research }, -- Divides ability to find an extra salary addition. must be > 0 SalaryAbilityDivisor = 10, -- Divides research input to arrive at research points. must be > 0 ResearchPointsDivisor = 5, -- When a drug is researched what rating does it have StartRating = 100, -- When a drug is researched how much does it cost StartCost = 100, -- Minimum Drug Cost MinDrugCost = 50, -- If contagious how much - rand up to this figure. higher = more contagious. must be > 0 HowContagious = 25, -- 0-100 Higher equals more chance of spreading. ContagiousSpreadFactor = 25, -- Reduce cont illnesses until X months have passed ReduceContMonths = 14, -- Reduce cont illnesses until X peep have arrived ReduceContPeepCount = 20, -- Rate to reduce cont illneses to - 0 means do not produce contagious illnesses at all ReduceContRate = 0, -- Hold all visual illnesses until x months. 0 never hold HoldVisualMonths = 2, -- Hold all visual illnesses until x peeps have arrived. 0 never hold HoldVisualPeepCount = 6, -- Maximum strength value an object can be improved to (by research) MaxObjectStrength = 20, -- Increase object strength by this amount when researching ResearchIncrement = 2, -- x Start Score for level = ceiling for normal score increases (2 dp) ScoreMaxInc = 300, -- Cost per vaccination VacCost = 50, -- If epidemic coverup fails - how much per person you are fined max 20000 EpidemicFine = 2000, -- If an epidemic coverup succeeds how much compensation is received - lo value EpidemicCompLo = 1000, -- If an epidemic coverup succeeds how much compensation is received - hi value max 20000 EpidemicCompHi = 15000, -- How many patients still infected cause a reputation loss as well as a fine if less than EpidemicEvacMinimum then ignored EpidemicRepLossMinimum = 5, -- How many patients still infected and not-cured cause the hospital to be evacuated EpidemicEvacMinimum = 10, --How many epidemics can exists at the same time - both active and quietly in the background EpidemicConcurrentLimit = 1, -- % of research completed for an autopsy AutopsyRschPercent = 33, -- % rep hit for discovered autopsy AutopsyRepHitPercent = 25, -- Frequency of Mayor visits. Lower is more frequent. MayorLaunch = 150, -- Add to student doctor's ability when being taught MIN 1 MAX 255 TrainingRate = 40, -- MIN 1 MAX 100 (Percentage) DrugImproveRate = 5, -- How many months until population allocation is done for real AllocDelay = 3, AbilityThreshold = { [0] = {Value = 75}, -- SURGEON {Value = 60}, -- PSYCHIATRIST {Value = 45}, -- RESEARCHER }, TrainingValue = { [0] = {Value = 10}, -- Projector {Value = 15}, -- Skeleton {Value = 20}, -- Bookcase }, -- >This value gives doctor DoctorThreshold = 250, -- >This value gives consultant ConsultantThreshold = 750, -- % of original rsch cost required to improve RschImproveCostPercent = 10, -- %-point increase in improve cost per improvement RschImproveIncrementPercent = 10, }, towns = { {StartCash = 40000, InterestRate = 100}, -- Level 1 {StartCash = 40000, InterestRate = 200}, -- Level 2 {StartCash = 50000, InterestRate = 300}, -- Level 3 {StartCash = 50000, InterestRate = 400}, -- Level 4 {StartCash = 50000, InterestRate = 500}, -- Level 5 {StartCash = 50000, InterestRate = 600}, -- Level 6 {StartCash = 50000, InterestRate = 700}, -- Level 7 {StartCash = 60000, InterestRate = 700}, -- Level 8 {StartCash = 60000, InterestRate = 800}, -- Level 9 {StartCash = 60000, InterestRate = 800}, -- Level 10 {StartCash = 70000, InterestRate = 900}, -- Level 11 {StartCash = 70000, InterestRate = 900}, -- Level 12 {StartCash = 70000, InterestRate = 900}, -- Level 12 }, popn = { [0] = {Month = 0, Change = 4}, -- Standard: 4 patients the first month. [1] = {Month = 1, Change = 1}, -- Then increase by one per month. }, expertise = { {StartPrice = 100, Known = 1, RschReqd = 0}, -- GENERAL_PRACTICE {StartPrice = 850, Known = 0, RschReqd = 40000, MaxDiagDiff = 700}, -- BLOATY_HEAD {StartPrice = 1150, Known = 0, RschReqd = 40000, MaxDiagDiff = 250}, -- HAIRYITUS {StartPrice = 1600, Known = 0, RschReqd = 60000, MaxDiagDiff = 250}, -- ELVIS {StartPrice = 1400, Known = 0, RschReqd = 60000, MaxDiagDiff = 250}, -- INVIS {StartPrice = 1800, Known = 0, RschReqd = 60000, MaxDiagDiff = 250}, -- RADIATION {StartPrice = 900, Known = 0, RschReqd = 40000, MaxDiagDiff = 250}, -- SLACK_TONGUE {StartPrice = 2000, Known = 0, RschReqd = 60000, MaxDiagDiff = 350}, -- ALIEN {StartPrice = 450, Known = 0, RschReqd = 20000, MaxDiagDiff = 250}, -- BROKEN_BONES {StartPrice = 950, Known = 0, RschReqd = 40000, MaxDiagDiff = 250}, -- BALDNESS {StartPrice = 700, Known = 0, RschReqd = 40000, MaxDiagDiff = 700}, -- DISCRETE_ITCHING {StartPrice = 1000, Known = 0, RschReqd = 40000, MaxDiagDiff = 1000}, -- JELLYITUS {StartPrice = 750, Known = 0, RschReqd = 40000, MaxDiagDiff = 700}, -- SLEEPING_ILLNESS {StartPrice = 0, Known = 0, RschReqd = 5000, MaxDiagDiff = 400}, -- PREGNANT {StartPrice = 800, Known = 0, RschReqd = 40000, MaxDiagDiff = 350}, -- TRANSPARENCY {StartPrice = 300, Known = 0, RschReqd = 20000, MaxDiagDiff = 350}, -- UNCOMMON_COLD {StartPrice = 1300, Known = 0, RschReqd = 60000, MaxDiagDiff = 1000}, -- BROKEN_WIND {StartPrice = 1100, Known = 0, RschReqd = 20000, MaxDiagDiff = 350}, -- SPARE_RIBS {StartPrice = 1050, Known = 0, RschReqd = 20000, MaxDiagDiff = 700}, -- KIDNEY_BEANS {StartPrice = 1900, Known = 0, RschReqd = 20000, MaxDiagDiff = 700}, -- BROKEN_HEART {StartPrice = 1600, Known = 0, RschReqd = 20000, MaxDiagDiff = 700}, -- RUPTURED_NODULES {StartPrice = 800, Known = 0, RschReqd = 40000, MaxDiagDiff = 350}, -- MULTIPLE_TV_PERSONALITIES {StartPrice = 1500, Known = 0, RschReqd = 60000, MaxDiagDiff = 350}, -- INFECTIOUS_LAUGHTER {StartPrice = 800, Known = 0, RschReqd = 40000, MaxDiagDiff = 700}, -- CORRUGATED_ANKLES {StartPrice = 800, Known = 0, RschReqd = 40000, MaxDiagDiff = 700}, -- CHRONIC_NOSEHAIR {StartPrice = 550, Known = 0, RschReqd = 40000, MaxDiagDiff = 700}, -- 3RD_DEGREE_SIDEBURNS {StartPrice = 800, Known = 0, RschReqd = 40000, MaxDiagDiff = 350}, -- FAKE_BLOOD {StartPrice = 650, Known = 0, RschReqd = 40000, MaxDiagDiff = 700}, -- GASTRIC_EJECTIONS {StartPrice = 400, Known = 0, RschReqd = 20000, MaxDiagDiff = 1000}, -- THE_SQUITS {StartPrice = 1700, Known = 0, RschReqd = 20000, MaxDiagDiff = 700}, -- IRON_LUNGS {StartPrice = 600, Known = 0, RschReqd = 40000, MaxDiagDiff = 1000}, -- SWEATY_PALMS {StartPrice = 400, Known = 0, RschReqd = 20000, MaxDiagDiff = 700}, -- HEAPED_PILES {StartPrice = 350, Known = 0, RschReqd = 20000, MaxDiagDiff = 1000}, -- GUT_ROT {StartPrice = 1600, Known = 0, RschReqd = 20000, MaxDiagDiff = 700}, -- GOLF_STONES {StartPrice = 500, Known = 0, RschReqd = 20000, MaxDiagDiff = 700}, -- UNEXPECTED_SWELLING {StartPrice = 300, Known = 0, RschReqd = 40000}, -- I_D_SCANNER {StartPrice = 250, Known = 0, RschReqd = 50000}, -- I_D_BLOOD_MACHINE DIAGNOSIS {StartPrice = 150, Known = 0, RschReqd = 20000}, -- I_D_CARDIO DIAGNOSIS {StartPrice = 200, Known = 0, RschReqd = 30000}, -- I_D_XRAY DIAGNOSIS {StartPrice = 250, Known = 0, RschReqd = 60000}, -- I_D_ULTRASCAN DIAGNOSIS {StartPrice = 150, Known = 0, RschReqd = 20000}, -- I_D_STANDARD DIAGNOSIS {StartPrice = 100, Known = 0, RschReqd = 20000}, -- I_D_WARD DIAGNOSIS {StartPrice = 200, Known = 0, RschReqd = 20000}, -- I_D_SHRINK DIAGNOSIS {StartPrice = 500, Known = 0, RschReqd = 15000}, -- I_X_RESEARCH virtual treatment,auto autopsy {StartPrice = 500, Known = 0, RschReqd = 30000}, -- I_X_MIXER virtual treatment,atom analyser {StartPrice = 500, Known = 0, RschReqd = 30000}, -- I_X_COMPUTER virtual treatment,research computer }, objects = { {StartCost = 100, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 1 Desk {StartCost = 100, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 2 Cabinet {StartCost = 0, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 3 Door {StartCost = 40, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 4 Bench {StartCost = 60, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 5 Table {StartCost = 20, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 6 Chair {StartCost = 500, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 7 Drinks {StartCost = 200, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 8 Bed {StartCost = 2500, StartAvail = 0, WhenAvail = 0, StartStrength = 8, AvailableForLevel = 0}, -- 9 Inflator Machine {StartCost = 150, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 10 Snooker Table {StartCost = 150, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 11 New Receptionists Station {StartCost = 5, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 12 Build Room Tressle Table {StartCost = 1000, StartAvail = 0, WhenAvail = 0, StartStrength = 13, AvailableForLevel = 0}, -- 13 Cardiogram {StartCost = 5000, StartAvail = 0, WhenAvail = 0, StartStrength = 12, AvailableForLevel = 0}, -- 14 Scanner {StartCost = 3000, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 15 Scanner Console {StartCost = 30, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 16 Screen {StartCost = 5000, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 17 Jukebox {StartCost = 100, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 18 Couch {StartCost = 150, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 19 Sofa {StartCost = 250, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 20 Crash Trolley {StartCost = 50, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 21 TV set {StartCost = 6000, StartAvail = 0, WhenAvail = 0, StartStrength = 9, AvailableForLevel = 0}, -- 22 Ultrascan {StartCost = 10000, StartAvail = 0, WhenAvail = 0, StartStrength = 7, AvailableForLevel = 0}, -- 23 DNA Restorer {StartCost = 2000, StartAvail = 0, WhenAvail = 0, StartStrength = 11, AvailableForLevel = 0}, -- 24 Cast Remover {StartCost = 1000, StartAvail = 0, WhenAvail = 0, StartStrength = 8, AvailableForLevel = 0}, -- 25 Hair restorer {StartCost = 1500, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 26 Slicer for slack tongues {StartCost = 4000, StartAvail = 0, WhenAvail = 0, StartStrength = 12, AvailableForLevel = 0}, -- 27 X-Ray {StartCost = 2000, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 28 Radiation Shield {StartCost = 500, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 29 X-Ray Viewer {StartCost = 5000, StartAvail = 0, WhenAvail = 0, StartStrength = 12, AvailableForLevel = 0}, -- 30 Operating Table {StartCost = 2000, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 31 Lamp {StartCost = 30, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 32 Bathroom Sink {StartCost = 50, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 33 Op Sink 1 {StartCost = 50, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 34 Op Sink 2 {StartCost = 200, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 35 Surgeon Screen {StartCost = 50, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 36 Lecture Chair {StartCost = 100, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 37 Projector {StartCost = 200, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 38 Bed Screen Open {StartCost = 1000, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 39 Pharmacy Cabinet {StartCost = 5000, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 40 Research Computer {StartCost = 10000, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 41 Chemical Mixer {StartCost = 3000, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 42 Blood Machine {StartCost = 25, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 43 Fire Extinguisher {StartCost = 20, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 44 Radiator {StartCost = 5, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 45 Plant1 {StartCost = 3500, StartAvail = 0, WhenAvail = 0, StartStrength = 8, AvailableForLevel = 0}, -- 46 Electrolysis Machine {StartCost = 6500, StartAvail = 0, WhenAvail = 0, StartStrength = 7, AvailableForLevel = 0}, -- 47 Jellyitus Moulding Machine {StartCost = 0, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 48 Gates to Hell {StartCost = 200, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 49 Bed Screen Closed {StartCost = 5, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 50 Bin {StartCost = 300, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 51 Toilet {StartCost = 0, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 52 Double Door Part #1 {StartCost = 0, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 53 Double Door Part #2 {StartCost = 6500, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 54 Decontamination Shower {StartCost = 4000, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 55 Autopsy Research Machine {StartCost = 350, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 56 Bookcase {StartCost = 200, StartAvail = 0, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 0}, -- 57 Video Game {StartCost = 0, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 58 Entrance Left Door {StartCost = 0, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 59 Entrance Right Door {StartCost = 450, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 60 Skeleton {StartCost = 100, StartAvail = 1, WhenAvail = 0, StartStrength = 10, AvailableForLevel = 1}, -- 61 Comfy Chair }, -- Cost for the room itself without any objects. -- For some reason it starts at 7, -- but that must be retained in order to work with the original. rooms = { [7] = {Cost = 2280}, -- GP_OFFICE [8] = {Cost = 2270}, -- PSYCHO [9] = {Cost = 1700}, -- WARD [10] = {Cost = 2250}, -- OP_THEATRE [11] = {Cost = 500}, -- PHARMACY [12] = {Cost = 470}, -- CARDIO [13] = {Cost = 3970}, -- SCANNER [14] = {Cost = 2000}, -- ULTRASCAN [15] = {Cost = 3000}, -- BLOOD_MACHINE [16] = {Cost = 2000}, -- XRAY [17] = {Cost = 1500}, -- INFLATOR [18] = {Cost = 7000}, -- ALIEN [19] = {Cost = 500}, -- HAIR_RESTORER [20] = {Cost = 1500}, -- SLACK_TONGUE [21] = {Cost = 500}, -- FRACTURE [22] = {Cost = 1850}, -- TRAINING [23] = {Cost = 500}, -- ELECTRO [24] = {Cost = 4500}, -- JELLY_VAT [25] = {Cost = 1350}, -- STAFF ROOM [26] = {Cost = 5}, -- TV ?? [27] = {Cost = 720}, -- GENERAL_DIAG [28] = {Cost = 800}, -- RESEARCH [29] = {Cost = 1170}, -- TOILETS [30] = {Cost = 5500}, -- DECON_SHOWER }, visuals = { [0] = {Value = 0}, -- I_BLOATY_HEAD {Value = 0}, -- I_HAIRYITUS {Value = 0}, -- I_ELVIS {Value = 0}, -- I_INVIS {Value = 0}, -- I_RADIATION {Value = 0}, -- I_SLACK_TONGUE {Value = 0}, -- I_ALIEN {Value = 0}, -- I_BROKEN_BONES {Value = 0}, -- I_BALDNESS {Value = 0}, -- I_DISCRETE_ITCHING {Value = 0}, -- I_JELLYITUS {Value = 0}, -- I_SLEEPING_ILLNESS {Value = 0}, -- I_PREGNANT {Value = 0}, -- I_TRANSPARENCY }, non_visuals = { [0] = {Value = 0}, -- I_UNCOMMON_COLD {Value = 0}, -- I_BROKEN_WIND {Value = 0}, -- I_SPARE_RIBS {Value = 0}, -- I_KIDNEY_BEANS {Value = 0}, -- I_BROKEN_HEART {Value = 0}, -- I_RUPTURED_NODULES {Value = 0}, -- I_MULTIPLE_TV_PERSONALITIES {Value = 0}, -- I_INFECTIOUS_LAUGHTER {Value = 0}, -- I_CORRUGATED_ANKLES {Value = 0}, -- I_CHRONIC_NOSEHAIR {Value = 0}, -- I_3RD_DEGREE_SIDEBURNS {Value = 0}, -- I_FAKE_BLOOD {Value = 0}, -- I_GASTRIC_EJECTIONS {Value = 0}, -- I_THE_SQUITS {Value = 0}, -- I_IRON_LUNGS {Value = 0}, -- I_SWEATY_PALMS {Value = 0}, -- I_HEAPED_PILES {Value = 0}, -- I_GUT_ROT {Value = 0}, -- I_GOLF_STONES {Value = 0}, -- I_UNEXPECTED_SWELLING }, visuals_available = { [0] = {Value = 0}, -- I_BLOATY_HEAD {Value = 12}, -- I_HAIRYITUS {Value = 3}, -- I_ELVIS {Value = 12}, -- I_INVIS {Value = 18}, -- I_RADIATION {Value = 6}, -- I_SLACK_TONGUE {Value = 0}, -- I_ALIEN {Value = 6}, -- I_BROKEN_BONES {Value = 12}, -- I_BALDNESS {Value = 0}, -- I_DISCRETE_ITCHING {Value = 18}, -- I_JELLYITUS {Value = 0}, -- I_SLEEPING_ILLNESS {Value = 0}, -- I_PREGNANT {Value = 6}, -- I_TRANSPARENCY }, win_criteria = { [0] = {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, }, lose_criteria = { [0] = {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, {Criteria = 0, MaxMin = 0, Value = 0, Group = 0, Bound = 0}, }, staff_levels = { [0] = {Month = 0, Nurses = 8, Doctors = 8, Handymen = 3, Receptionists = 2, ShrkRate = 10, SurgRate = 10, RschRate = 10, ConsRate = 10, JrRate = 5}, }, emergency_control = { [0] = {StartMonth = 0, EndMonth = 0, Min = 0, Max = 0, Illness = 0, PercWin = 0, Bonus = 0}, }, computer = { [0] = {Playing = 0}, -- ORAC {Playing = 0}, -- COLOSSUS {Playing = 0}, -- HAL {Playing = 0}, -- MULTIVAC {Playing = 0}, -- HOLLY {Playing = 0}, -- DEEP THOUGHT {Playing = 0}, -- ZEN {Playing = 0}, -- SKYNET {Playing = 0}, -- MARVIN {Playing = 0}, -- CEREBRO {Playing = 0}, -- MOTHER {Playing = 0}, -- JAYNE {Playing = 0}, -- CORSIX {Playing = 0}, -- ROUJIN {Playing = 0}, -- EDVIN }, awards_trophies = { -- Trophy win conditions -- Kill more than this number of rats in a year to win this award -- MIN 0 RatKillsAbsolute = 25, -- Sell more than this number of cans to win the award MIN 0 CansofCoke = 100, -- If player's reputation is >x all through the year then win trophy MIN 0 MAX 1000 Reputation = 400, -- Percentage - keep your plants >x or more watered MIN 0 MAX 100 Plant = 80, -- Percentage - keep mean staff happiness >x throughout the year to win the trophy -- MIN 0 MAX 100 TrophyStaffHappiness = 85, -- Percentage - Rats shot:Rats killed - only valid if player kills at least -- half the number of rats needed to win the other rats trophy RatKillsPercentage = 11, -- TODO: this one is hard to understand! percentage of what exactly? -- Percentage (0-100) low is good needs at 2 mayor visits to be triggered -- So for now, it is super visits that will trigger this prize -- Please all of the VIPs that visit your hospital during the year -- you will have to get a super feedback for each visit -- TrophyMayor = 25, -- Trophy win bonuses -- Bonus - MIN 0 MAX 255 (REP BONUS) REP BONUSES ARE NOW PERCENTAGES RatKillsAbsoluteBonus = 5, -- Bonus - MIN 0 MAX 65535 (MONEY BONUS) RatKillsPercentageBonus = 5000, -- Bonus - MIN 0 (MONEY BONUS) CansofCokeBonus = 1000, -- Bonus - MIN 0 (MONEY BONUS) TrophyReputationBonus = 2000, -- Bonus - MIN 0 MAX 255 (REP BONUS) PlantBonus = 5, -- Bonus - MIN 0 MAX 255 (REP BONUS) TrophyStaffHappinessBonus = 5, -- Bonus to money for NO DEATHS in the year (MONEY BONUS) TrophyDeathBonus = 10000, -- Bonus to money for approximately 100% Cure Rate in the year (MONEY BONUS) TrophyCuresBonus = 6000, -- Bonus to reputation for pleasing VIPs in the year (REPUTATION BONUS) TrophyMayorBonus = 5, ------------------- Award win/loss criteria ------------------- -- >x to win the award MIN 0 MAX 255 CuresAward = 50, -- x to win the award MIN 0 MAX 255 DeathsPoor = 25, -- >x Percentage - to win the award MIN 0 MAX 100 PopulationPercentageAward = 50, -- x to win the award MIN 0 MAX 100 CuresVDeathsAward = 5, -- x to win the award MIN 0 MAX 1000 ReputationAward = 500, -- x to win the award MIN 0 MAX 2000000 HospValueAward = 150000, -- x Percentage - to win the award MIN 0 MAX 100 - high is bad (ie high amount of litter per square) CleanlinessPoor = 40, -- >x Percentage - to win the award MIN 0 MAX 100 - percentage of peeps saved in emergencies - at least two emergencies per year to qualify EmergencyAward = 90, -- x Percentage - to win the award MIN 0 MAX 100 - staff mean happiness throughout the year StaffHappinessAward = 75, -- x Percentage - to win the award MIN 0 MAX 100 - peeps mean happiness throughout the year PeepHappinessAward = 75, -- x Percentage - to win the award MIN 0 MAX 100 - percentage of BAL_LC_LEAVE - gbv.LeaveMax - high is bad, low is good WaitingTimesAward = 25, -- true -- class.is(variable, base) --> true -- class.is(variable, something_else) --> false function class.is(instance, class) local typ = type(instance) if typ ~= "table" and typ ~= "userdata" then return false end local methods = instance while methods do if methods == class then return true end local mt = getmetatable(methods) methods = mt and mt.__index end return false end -- class.name - Get the name of a class -- For example: -- class "something" -- class.name(something) --> "something" function class.name(class) local mt = getmetatable(class) return mt and mt.__class_name end -- class.superclass - Get the superclass of a class -- For example: -- class "something" (base) -- class.superclass(something) --> base function class.superclass(class) return getmetatable(class).__index end -- class.type - Get the typename of a class instance -- For example: -- class "something" (base) -- variable = something() -- class.type(variable) --> "something" function class.type(instance) local mt = getmetatable(instance) if not mt then return nil end local methods_mt = getmetatable(mt.__index) if not methods_mt then return nil end return methods_mt.__class_name end CorsixTH-0.61/CorsixTH/Lua/config_finder.lua000066400000000000000000000573301321660673500207070ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local config_path, config_name local pathsep = package.config:sub(1, 1) local ourpath = debug.getinfo(1, "S").source:sub(2, -22) local function pathconcat(a, b) if a:sub(-1) == pathsep then return a .. b else return a .. pathsep .. b end end -- Decide on a sensible place to put config.txt, etc. if pathsep == "\\" then -- Windows config_path = os.getenv("AppData") or ourpath else -- Linux, OS X, etc. config_path = os.getenv("XDG_CONFIG_HOME") or pathconcat(os.getenv("HOME") or "~", ".config") end if config_path ~= ourpath then config_path = pathconcat(config_path, "CorsixTH") end config_name = "config.txt" -- Check for config.path.txt local fi = io.open(pathconcat(ourpath, "config.path.txt"), "r") if fi then local contents = fi:read"*a" contents = contents:match("^%s*(.-)%s*$") fi:close() if #contents ~= 0 then config_path = contents if config_path:sub(-4, -1):lower() == ".txt" then config_name = config_path:match("([^" .. pathsep .. "]*)$") config_path = config_path:sub(1, -1-#config_name) end end end -- Check / create config_path local lfs = require "lfs" local function check_dir_exists(path) if path:sub(-1) == pathsep then path = path:sub(1, -2) end if lfs.attributes(path, "mode") == "directory" then return true else local subpath = path:match("^(.*)[" .. pathsep .. "]") if subpath then return check_dir_exists(subpath) and lfs.mkdir(path) else return false end end end if not check_dir_exists(config_path) then config_path = ourpath end local config_filename = pathconcat(config_path, config_name) -- Create config.txt if it doesn't exist local config_defaults = { -- This directory is deliberately obscure so that it doesn't exist by default --[[ NOTE to developers When adding new fields, please try and keep the end results user friendly They are all grouped into the places they can be changed in game and then into a group that can only be changed here. Currently the player name is at the bottom of the list for the config as it this is where it always ends up when the file is recreated. for ease of reference I have also ordered the fields into the same order]] fullscreen = false, width = 800, height = 600, language = [[English]], audio = true, free_build_mode = false, play_sounds = true, sound_volume = 0.5, play_announcements = true, announcement_volume = 0.5, play_music = true, music_volume = 0.5, prevent_edge_scrolling = false, capture_mouse = true, adviser_disabled = false, scrolling_momentum = 0.8, twentyfour_hour_clock = true, warmth_colors_display_default = 1, grant_wage_increase = false, movies = true, play_intro = true, allow_user_actions_while_paused = false, volume_opens_casebook = false, alien_dna_only_by_emergency = true, alien_dna_must_stand = true, alien_dna_can_knock_on_doors = false, disable_fractured_bones_females = true, enable_avg_contents = false, audio_frequency = 22050, audio_channels = 2, audio_buffer_size = 2048, theme_hospital_install = [[F:\ThemeHospital\hospital]], debug = false, DBGp_client_idehost = nil, DBGp_client_ideport = nil, DBGp_client_idekey = nil, DBGp_client_transport = nil, DBGp_client_platform = nil, DBGp_client_workingdir = nil, track_fps = false, zoom_speed = 80, scroll_speed = 2, shift_scroll_speed = 4, new_graphics_folder = nil, use_new_graphics = false, check_for_updates = true } fi = io.open(config_filename, "r") local config_values = {} local needs_rewrite = false for key, value in pairs(config_defaults) do config_values[key] = value end if fi then -- Read all the values from the config file and put them in config_values. If at least one value is missing rewrite the configuration file. local file_contents = fi:read("*all") fi:close() for key, value in pairs(config_defaults) do local ind = string.find(file_contents, "\n" .. "%s*" .. key .. "%s*=") if not ind then needs_rewrite = true else ind = ind + (string.find(file_contents, key, ind) - ind) + string.len(key) ind = string.find(file_contents, "=", ind) + 1 if type(value) ~= "string" then ind = string.find(file_contents, "[%a%d]", ind) config_values[key] = string.sub(file_contents, ind, string.find(file_contents, "[ \n-]", ind + 1) - 1) else ind = string.find(file_contents, "[", ind + 1, true) + 1 config_values[key] = string.sub(file_contents, ind + 1, string.find(file_contents, "]", ind, true) - 1) end end end else needs_rewrite = true end if needs_rewrite then fi = io.open(config_filename, "w") if fi then fi:write([=[ ----------------------------------------- CorsixTH configuration file ------------------------------------------- -- Lines starting with two dashes (like this one) are ignored. -- Text settings should have their values between double square braces, e.g. -- setting = [[value]] -- Number settings should not have anything around their value, -- e.g. setting = 42 -- -------------------------------------------- SETTINGS MENU --------------------------------------------- -- These settings can also be changed from within the game from the settings menu ------------------------------------------------------------------------------------------------------------------------- -- Screen size. Must be at least 640x480. Larger sizes will require better -- hardware in order to maintain a playable framerate. The fullscreen setting -- can be true or false, and the game will run windowed if not fullscreen. -- ]=] .. '\n' .. 'fullscreen = ' .. tostring(config_values.fullscreen) .. '\n' .. '\n' .. 'width = ' .. tostring(config_values.width) .. '\n' .. 'height = ' .. tostring(config_values.height) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Language to use for ingame text. Between the square braces should be one of: -- Brazilian Portuguese / pt_br / br -- Chinese (simplified) / zh(s) / chi(s) -- Chinese (traditional) / zh(s) / chi(s) -- Czech / cs / cze -- Danish / da / dk -- Dutch / Nederlands / nl / dut / nld -- English / en / eng -- Finnish / Suomi / fi / fin -- French / fr / fre / fra -- German / de / ger / deu -- Hungarian / hu / hun -- Italian / it / ita -- Korean / kor / ko -- Norwegian / nb / nob -- Polish / pl / pol -- Portuguese / pt / por -- Russian / ru / rus -- Spanish / es / spa -- Swedish / sv / swe -- ]=] .. '\n' .. 'language = [['.. config_values.language ..']]' .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Audio global on/off switch. -- Note that audio will also be disabled if CorsixTH was compiled without the -- SDL_mixer library. -- ]=] .. '\n' .. 'audio = '.. tostring(config_values.audio) .. '\n' .. [=[ --------------------------------------------- CUSTOM GAME MENU ---------------------------------------------- -- These settings can also be changed from the opening menu screen in the custom games menu ------------------------------------------------------------------------------------------------------------------------- -- Free Build or Sandbox mode -- You cannot win or lose custom made maps if this is set to true. -- You also don't have to worry about money. -- This setting does not apply to any of the campaign maps. -- ]=] .. '\n' .. 'free_build_mode = ' .. tostring(config_values.free_build_mode) .. '\n' .. [=[ ----------------------------------------------- OPTIONS MENU --------------------------------------------------- --These settings can also be changed from within the game from the options menu ------------------------------------------------------------------------------------------------------------------------- -- Sounds: By default enabled and set at level 0.5 -- ]=] .. '\n' .. 'play_sounds = ' .. tostring(config_values.play_sounds) .. '\n' .. 'sound_volume = ' .. tostring(config_values.sound_volume) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Announcements: By default set at level 0.5 -- ]=] .. '\n' .. 'play_announcements = ' .. tostring(config_values.play_announcements) .. '\n' .. 'announcement_volume = ' .. tostring(config_values.announcement_volume) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Background music: By default enabled and set at level 0.5 -- ]=] .. '\n' .. 'play_music = ' .. tostring(config_values.play_music) .. '\n' .. 'music_volume = ' .. tostring(config_values.music_volume) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Edge scrolling: By default enabled (prevent_edge_scrolling = false). -- ]=] .. '\n' .. 'prevent_edge_scrolling = ' .. tostring(config_values.prevent_edge_scrolling) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Capture mouse: By default enabled (capture mouse = true). -- ]=] .. '\n' .. 'capture_mouse = ' .. tostring(config_values.capture_mouse) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Adviser on/off: If you set this to true the adviser will no longer -- pop up. -- ]=] .. '\n' .. 'adviser_disabled = ' .. tostring(config_values.adviser_disabled) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Scrolling Momentum. -- Determines the amount of momentum when scrolling the map with the mouse. -- This should be a value between 0 and 1 where 0 is no momentum -- ]=] .. '\n' .. 'scrolling_momentum = ' .. tostring(config_values.scrolling_momentum) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Top menu clock is by default is always on -- setting to true will give you a twentyfour hours display -- change to false if you want AM / PM time displayed. -- ]=] .. '\n' .. 'twentyfour_hour_clock = ' .. tostring(config_values.twentyfour_hour_clock) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Automatically check for updates. -- If set to true, CorsixTH will automatically check for and alert you to newer -- versions on startup. -- ]=] .. '\n' .. 'check_for_updates = ' .. tostring(config_values.check_for_updates) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Warmth Colors display settings. -- This specifies which display method is set for warmth colours by default. -- Possible values: 1 (Red), 2 (Blue Green Red) and 3 (Yellow Orange Red). -- ]=] .. '\n' .. 'warmth_colors_display_default = ' .. tostring(config_values.warmth_colors_display_default) .. '\n' .. [=[ --------------------------------------------- CUSTOMISE SETTINGS -------------------------------------------- -- These settings can also be changed from the Customise Menu ------------------------------------------------------------------------------- -- Wage increase request settings. -- If set to true when wage increase requests expire automatically grant them -- otherwise let the staff member quit. -- ]=] .. '\n' .. 'grant_wage_increase = ' .. tostring(config_values.grant_wage_increase) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Movie global on/off switch. -- Note that movies will also be disabled if CorsixTH was compiled without the -- FFMPEG library. -- ]=] .. '\n' .. 'movies = ' .. tostring(config_values.movies) .. '\n' .. [=[ -- Intro movie: By default enabled -- ]=] .. '\n' .. 'play_intro = ' .. tostring(config_values.play_intro) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Allow user actions while game is paused -- In Theme Hospital the player would only be allowed to use the top menu if -- the game was paused. That is the default setting in CorsixTH too, but by -- setting this to true everything is allowed while the game is paused. -- ]=] .. '\n' .. 'allow_user_actions_while_paused = ' .. tostring(config_defaults.allow_user_actions_while_paused) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- VOLUME CONTROL IS OPENING THE DRUG CASEBOOK? -- If your keyboard volume control opens the Drug Casebook at the same time -- then change this to true. From then on you will have to use Shift + C to open -- the Casebook and volume down will not open it. -- For example for shift + C to open casebook change the setting below to = true -- ]=] .. '\n' .. 'volume_opens_casebook = ' .. tostring(config_values.volume_opens_casebook) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- To allow patients with Alien DNA to visit your hospital other than by an emergency change -- the settings below. Understand that there are no animations for sitting down, opening -- or knocking on doors etc. -- So, like with Theme Hospital to do these things they will appear to change to normal -- looking and then change back. -- ]=] .. '\n' .. 'alien_dna_only_by_emergency = ' .. tostring(config_values.alien_dna_only_by_emergency) .. '\n' .. 'alien_dna_must_stand = ' .. tostring(config_values.alien_dna_must_stand) .. '\n' .. 'alien_dna_can_knock_on_doors = ' .. tostring(config_values.alien_dna_can_knock_on_doors) .. '\n' .. [=[ -- To allow female patients with fractured bones, which are by default disabled due to poor -- animation that skips and jumps a bit -- ]=] .. '\n' .. 'disable_fractured_bones_females = ' .. tostring(config_values.disable_fractured_bones_females) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- By default the player selects any extra objects they want for each room they build. -- If you would like the game to remember what you usually add, then change this option to true. -- ]=] .. '\n' .. 'enable_avg_contents = ' .. tostring(config_values.enable_avg_contents) .. '\n' .. [=[ ----------------------------------------------- FOLDER SETTINGS ---------------------------------------------- -- These settings can also be changed from the Folders Menu ------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------- -- Theme hospital install folder: original game data files are loaded from this -- folder. Between the square braces should be the folder which contains the -- original HOSPITAL.EXE and/or HOSP95.EXE file. This can point to a copy of -- the Theme Hospital demo, though a full install of the original game is -- preferred. -- ]=] .. '\n' .. 'theme_hospital_install = [[' .. config_values.theme_hospital_install ..']]' .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Font file setting. Can be changed from main game menu -- Specify a font file here if you wish to play the game in a language not -- present in the original game. Examples include Russian, Chinese and Polish. -- unicode_font = nil -- [[X:\ThemeHospital\font.ttc]] ------------------------------------------------------------------------------------------------------------------------- -- Savegames. By default, the "Saves" directory alongside this config file will -- be used for storing saved games in. Should this not be suitable, then -- uncomment the following line, and point it to a directory which exists and -- is more suitable. -- savegames = nil -- [[X:\ThemeHospital\Saves]] ------------------------------------------------------------------------------------------------------------------------- -- Levels. By default, the "Levels" directory alongside this config file will -- be used for storing new maps / levels in. Should this not be suitable, then -- uncomment the following line, and point it to a directory which exists and -- is more suitable. -- levels = nil -- [[X:\ThemeHospital\Levels]] ------------------------------------------------------------------------------------------------------------------------ -- Use new graphics. Whether to use the original graphics from Theme Hospital -- or use new graphics created by the CorsixTH project. use_new_graphics = false ------------------------------------------------------------------------------------------------------------------------- -- Graphics folder. All graphics are initially taken from the original Theme Hospital, -- but the game can also try to find new graphics in the specified folder below. -- Some graphics are shipped with CorsixTH, and they will be used if you just switch -- on new graphics. If you however have acquired graphics from somewhere else, then -- uncomment the following line and point it to the directory which contains the new -- graphics. new_graphics_folder = nil -- [[X:\ThemeHospital\Graphics]] ------------------------------------------------------------------------------------------------------------------------- -- Screenshots. By default, the "Screenshots" directory alongside this config -- file will be used for saving screenshots. Should this not be suitable, then -- uncomment the following line, and point it to a directory which exists and -- is more suitable. -- screenshots = nil -- [[X:\ThemeHospital\Screenshots]] ------------------------------------------------------------------------------------------------------------------------- -- High quality (MP3 rather than MIDI) audio replacements. -- If you want to listen to high quality MP3 audio rather than the original XMI -- (MIDI) audio, then follow these steps: -- 1) Find MP3 versions of the original tracks (for example the remixes by ZR -- from http://www.a-base.dds.nl/temp/ThemeHospital_ZRRemix.zip ) or any -- other music you want to listen to. -- 2) Ensure that SMPEG.dll (or equivalent for your platform) is present. -- 3) Uncomment the next line and point it to where the mp3s are. -- 4) If you want to change the names of songs ingame, make a file called -- "names.txt" and write the file name on one row, followed by the desired -- ingame name on the next row. -- audio_mp3 = nil -- [[X:\ThemeHospital\Music]] ----------------------------------------------- SPECIAL SETTINGS ---------------------------------------------- -- These settings can only be changed here ------------------------------------------------------------------------------------------------------------------------- -- Audio playback settings. -- These can be commented out to use the default values from the game binary. -- Note: On some platforms, these settings may not effect MIDI playback - only -- sound effects and MP3 audio. If you are experiencing poor audio playback, -- then try doubling the buffer size. -- ]=] .. '\n' .. 'audio_frequency = ' .. tostring(config_values.audio_frequency) .. '\n' .. 'audio_channels = ' .. tostring(config_values.audio_channels) .. '\n' .. 'audio_buffer_size = ' .. tostring(config_values.audio_buffer_size) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------ -- Debug settings. -- If set to true more detailed information will be printed in the terminal -- and a debug menu will be visible. -- ]=] .. '\n' .. 'debug = ' .. tostring(config_values.debug) .. '\n' .. [=[ --Optional settings for CorsixTH's Lua DBGp client. --Default settings are nil values, platform & workingdir will be autodected if nil. --https://wiki.eclipse.org/LDT/User_Area/User_Guides/User_Guide_1.2#Attach_session -- ]=] .. '\n' .. 'idehost = ' .. tostring(config_values.DBGp_client_idehost) .. '\n' .. 'ideport = ' .. tostring(config_values.DBGp_client_ideport) .. '\n' .. 'idekey = ' .. tostring(config_values.DBGp_client_idekey) .. '\n' .. 'transport = ' .. tostring(config_values.DBGp_client_transport) .. '\n' .. 'platform = ' .. tostring(config_values.DBGp_platform) .. '\n' .. 'workingdir = ' .. tostring(config_values.DBGp_workingdir) .. '\n' .. [=[ -- If set to true, the FPS, Lua memory usage, and entity count will be shown -- in the dynamic information bar. Note that setting this to true also turns -- off the FPS limiter, causing much higher CPU utilisation, but resulting in -- more useful FPS values, as they are not artificially capped. -- ]=] .. '\n' .. 'track_fps = ' .. tostring(config_values.track_fps) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Zoom Speed: By default this is set at 80 -- Any number value between 10 and 1000, 10 is very slow and 1000 is very fast! -- ]=] .. '\n' .. 'zoom_speed = ' .. tostring(config_values.zoom_speed) .. '\n' .. [=[ ------------------------------------------------------------------------------------------------------------------------- -- Scroll Speeds: The speed of scrolling with and without shift being held. -- Any number value between 1 and 10, 1 is very slow and 10 is fast! -- ]=] .. '\n' .. 'scroll_speed = ' .. tostring(config_values.scroll_speed) .. '\n' .. 'shift_scroll_speed = ' .. tostring(config_values.shift_scroll_speed) .. '\n' .. [=[ ------------------------------------------------ CAMPAIGN MENU ----------------------------------------------- -- By default your computer log in will be your name in the game. You can change it in the -- campaign menu or between the brace brackets below [[YOUR NAME]]. -- Note: space is limited in the game, so don't enter a name that is too long! -- -- If you have specified any other locations for things like saves, music or screenshots you will find these below. If -- you change your mind and wish to go back to the default folders, just delete the relevant line. -- -- If you wish to go back to the default settings for everything, you can delete this text file and it will be re-created -- you play the game. ------------------------------------------------------------------------------------------------------------------------- ]=]) fi:close() end end return config_filename, config_values CorsixTH-0.61/CorsixTH/Lua/debug_script.lua000066400000000000000000000012441321660673500205560ustar00rootroot00000000000000--- -- Calling "execute script" while CorsixTH is running will execute the latest -- code in this script so you don't need to restart CorsixTH. -- -- This script's execution key command and the key commands for the debug console -- & connecting a Lua DBGp server can be used anywhere at any time in CorsixTH -- when debug mode is enabled. -- -- Like with the console you can reference clicked humanoids with the underscore -- global variable so for example: _:die() will make a clicked patient die. -- -- The run time App class instance can be referenced with its global variable -- "TheApp", with it you can reference other run time class instances like: -- TheApp.world --- CorsixTH-0.61/CorsixTH/Lua/diagnosis/000077500000000000000000000000001321660673500173605ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_blood_machine.lua000066400000000000000000000024231321660673500236330ustar00rootroot00000000000000--[[ Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_blood_machine" disease.expertise_id = 37 disease.name = _S.diseases.diag_blood_machine.name disease.cure_price = 250 disease.pseudo = true disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_cardiogram.lua000066400000000000000000000024161321660673500231620ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_cardiogram" disease.expertise_id = 38 disease.name = _S.diseases.diag_cardiogram.name disease.cure_price = 150 disease.pseudo = true disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_general_diag.lua000066400000000000000000000023661321660673500234570ustar00rootroot00000000000000--[[ Copyright (c) 2010 Miika-Petteri Matikainen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_general_diag" disease.expertise_id = 41 disease.name = _S.diseases.diag_general_diag.name disease.cure_price = 150 disease.pseudo = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_gp.lua000066400000000000000000000023471321660673500214630ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_gp" disease.expertise_id = 1 disease.name = _S.diseases.general_practice.name disease.cure_price = 100 disease.pseudo = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_psych.lua000066400000000000000000000024231321660673500221760ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_psych" disease.expertise_id = 43 disease.name = _S.diseases.diag_psych.name disease.cure_price = 200 -- http://www.eudoxus.demon.co.uk/thc/tech.htm disease.pseudo = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_scanner.lua000066400000000000000000000024101321660673500224750ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_scanner" disease.expertise_id = 36 disease.name = _S.diseases.diag_scanner.name disease.cure_price = 300 disease.pseudo = true disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_ultrascan.lua000066400000000000000000000024201321660673500230410ustar00rootroot00000000000000--[[ Copyright (c) 2010 Miika-Petteri Matikainen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_ultrascan" disease.expertise_id = 40 disease.name = _S.diseases.diag_ultrascan.name disease.cure_price = 250 disease.pseudo = true disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_ward.lua000066400000000000000000000023411321660673500220040ustar00rootroot00000000000000--[[ Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_ward" disease.expertise_id = 42 disease.name = _S.diseases.diag_ward.name disease.cure_price = 100 disease.pseudo = true return disease CorsixTH-0.61/CorsixTH/Lua/diagnosis/diag_x_ray.lua000066400000000000000000000024101321660673500221660ustar00rootroot00000000000000--[[ Copyright (c) 2010 Miika-Petteri Matikainen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "diag_x_ray" disease.expertise_id = 39 disease.name = _S.diseases.diag_x_ray.name disease.cure_price = 200 disease.pseudo = true disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/dialogs/000077500000000000000000000000001321660673500170225ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/dialogs/adviser.lua000066400000000000000000000211741321660673500211670ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" --! The (ideally) helpful advisor who pops up from the bottom dialog during a game. class "UIAdviser" (Window) ---@type UIAdviser local UIAdviser = _G["UIAdviser"] function UIAdviser:UIAdviser(ui) self:Window() local app = ui.app self.esc_closes = false self.modal_class = "adviser" self.tick_rate = app.world.tick_rate self.tick_timer = self.tick_rate -- Initialize tick timer self.frame = 1 -- Current frame self.number_frames = 4 -- Used for playing animation only once self.speech = nil -- Store what adviser is going to say self.queued_messages = {} -- There might be many messages in a row self.timer = nil -- Timer which hides adviser at the end -- There are 5 phases the adviser might be in on a given time point. -- Not visible, getting up, talking, idling, getting_down. self.phase = 0 self.ui = ui self.width = 80 self.height = 74 self.x = 378 self.y = -16 self.balloon_width = 0 self.panel_sprites = app.gfx:loadSpriteTable("Data", "Panel02V", true) self.black_font = app.gfx:loadFont("QData", "Font50V") local th = TH.animation() self.th = th end -- Shows the adviser by running the "popup" animation. -- Then moves on to the next phase automatically. function UIAdviser:show() self.phase = 1 self.th:setAnimation(self.ui.app.world.anims, 438) self.frame = 1 self.number_frames = 4 end -- Displays the text bubble along with the next message -- from the queue. function UIAdviser:talk() self.phase = 2 self.th:setAnimation(self.ui.app.world.anims, 460) self.frame = 1 self.timer = nil -- Reset the idle timer self.number_frames = 45 -- Fetch the next message from the queue. local best = 1 if self.queued_messages[1].priority then for i = 1, #self.queued_messages do if best ~= i and self.queued_messages[best].priority < self.queued_messages[i].priority then best = i end end end local speech = self.queued_messages[best].speech self.stay_up = self.queued_messages[best].stay_up table.remove(self.queued_messages, best) self.speech = speech -- Calculate number of lines needed for the text. -- Each "/" at end of string indicates a blank line local number_lines = 3 local speech_trimmed = speech:gsub("/*$", "") number_lines = number_lines - (#speech - #speech_trimmed) speech = speech_trimmed -- Calculate balloon width from string length self.balloon_width = math.floor(#speech / number_lines) * 7 if self.balloon_width >= 420 then -- Balloon too large self.balloon_width = 420 elseif self.balloon_width <= 40 then -- Balloon too small self.balloon_width = 40 end end -- Makes the adviser idle for a while before disappearing. -- This means that the text bubble is removed. function UIAdviser:idle() self.phase = 3 -- Remove the bubble and start a timer for disappearance -- unless he should stay up until the next message. if not self.stay_up then self.speech = nil self.timer = 150 end end -- Hides the adviser by running the appropriate animation. function UIAdviser:hide() self.timer = nil self.phase = 4 self.th:setAnimation(self.ui.app.world.anims, 440) self.frame = 1 self.number_frames = 4 end -- Makes the adviser say something --!param speech The table containing the text he should say and the priority. --!param talk_until_next_announce Whether he should stay up -- until the next say() call is made. Useful for the tutorial. --!param override_current Cancels previous messages (if any) immediately -- and shows this new one instead. function UIAdviser:say(speech, talk_until_next_announce, override_current) assert(type(speech) == "table") if not self.ui.app.config.adviser_disabled then -- Queue the new message self.queued_messages[#self.queued_messages + 1] = { speech = speech.text, stay_up = talk_until_next_announce, priority = speech.priority } if self.phase == 0 then -- The adviser is not active at all at the moment. self:show() elseif self.phase == 3 then -- He's not talking, so we can show the new message. self:talk() elseif self.phase == 4 then -- He's getting down. Let him do that and then tell him -- to go up again. self.up_again = true elseif override_current then -- He was saying/was about to say something else. Discard those messages. while #self.queued_messages > 1 do table.remove(self.queued_messages, 2) end -- Now say the new thing instead. self:talk() end -- If none of the above apply the message is now queued and will be shown in -- due time. end end function UIAdviser:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = x + self.x, y + self.y self.th:draw(canvas, x + 200, y) if self.phase == 2 then -- Draw ballon only in the "talk" phase. local x_left_sprite for dx = 0, self.balloon_width, 16 do x_left_sprite = x + 139 - dx self.panel_sprites:draw(canvas, 38, x_left_sprite, y - 25) end self.panel_sprites:draw(canvas, 37, x_left_sprite - 16, y - 25) self.panel_sprites:draw(canvas, 39, x + 155, y - 40) -- Draw text self.black_font:drawWrapped(canvas, self.speech, x_left_sprite - 8, y - 20, self.balloon_width + 60) end end function UIAdviser:onMouseDown(button, x, y) -- If the adviser is not up, don't do anything. if self.phase == 0 or self.phase == 4 then return Window.onMouseDown(self, button, x, y) end -- Normal operation outside the adviser bounds if x + self.balloon_width < 128 or x > 200 or y + self.y > 0 or y + self.y + 40 < 0 then if x < self.x - 200 or y < self.y - 40 or x > self.x - 200 + self.width or y > self.y + self.height - 40 then return Window.onMouseDown(self, button, x, y) end end -- Dismiss the current message if left click. If right click, -- dismiss the whole queue. if button == "left" then if #self.queued_messages > 0 then self:talk() else self:hide() end elseif button == "right" then self:hide() self.queued_messages = {} end end function UIAdviser:onTick() if self.timer == 0 then self:hide() -- Timer ends, so we hide the adviser elseif self.timer ~= nil then self.timer = self.timer - 1 end if self.frame < self.number_frames then if self.tick_timer == 0 then -- Used for making a smooth animation self.tick_timer = self.tick_rate -- If no animation set (adviser not being shown already) if self.th:getAnimation() ~= 0 then self.th:tick() self.frame = self.frame + 1 end else self.tick_timer = self.tick_timer - 1 end elseif self.frame == self.number_frames then if self.phase == 1 then -- Adviser is now up, let him speak. self:talk() elseif self.phase == 2 then -- Adviser finished to talk so make him idle unless -- there's another message waiting. if #self.queued_messages > 0 then -- Show the next queued message self:talk() elseif not self.stay_up then -- Continue to talk if stay_up is set self:idle() end elseif self.phase == 4 then -- The adviser is getting down so we want to hide him, but we have -- to wait until the animation ends. if self.up_again then -- Another message arrived while getting down. self:show() self.up_again = false else self.phase = 0 self.th:makeInvisible() end end end end function UIAdviser:afterLoad(old, new) if old < 47 then self.enabled = true end Window.afterLoad(self, old, new) end CorsixTH-0.61/CorsixTH/Lua/dialogs/bottom_panel.lua000066400000000000000000000722151321660673500222170ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! The multi-purpose panel for launching dialogs / screens and dynamic information. class "UIBottomPanel" (Window) ---@type UIBottomPanel local UIBottomPanel = _G["UIBottomPanel"] function UIBottomPanel:UIBottomPanel(ui) self:Window() local app = ui.app self.ui = ui self.world = app.world self.on_top = false self.width = 640 self.height = 48 self:setDefaultPosition(0.5, -0.1) self.panel_sprites = app.gfx:loadSpriteTable("Data", "Panel02V", true) self.money_font = app.gfx:loadFont("QData", "Font05V") self.date_font = app.gfx:loadFont("QData", "Font16V") self.white_font = app.gfx:loadFont("QData", "Font01V", 0, -2) self.pause_font = app.gfx:loadFont("QData", "Font124V") -- State relating to fax notification messages self.show_animation = true self.factory_counter = 22 self.factory_direction = 0 self.message_windows = {} self.message_queue = {} self.default_button_sound = "selectx.wav" self.countdown = 0 self.bank_button = self:addPanel( 1, 0, 0):makeToggleButton(6, 6, 35, 36, 2, self.dialogBankManager, nil, self.dialogBankStats):setTooltip(_S.tooltip.toolbar.bank_button) self:addPanel( 3, 40, 0) -- Background for balance, rep and date self:addPanel( 4, 206, 0):makeButton(6, 6, 35, 36, 5, self.dialogBuildRoom):setTooltip(_S.tooltip.toolbar.rooms) self:addPanel( 6, 248, 0):makeButton(1, 6, 35, 36, 7, self.dialogFurnishCorridor):setTooltip(_S.tooltip.toolbar.objects) self:addPanel( 8, 285, 0):makeButton(1, 6, 35, 36, 9, self.editRoom) :setSound():setTooltip(_S.tooltip.toolbar.edit) -- Remove default sound for this button self:addPanel(10, 322, 0):makeButton(1, 6, 35, 36, 11, self.dialogHireStaff):setTooltip(_S.tooltip.toolbar.hire) -- The dynamic info bar self:addPanel(12, 364, 0) for x = 377, 630, 10 do self:addPanel(13, x, 0) end self:addPanel(14, 627, 0) -- Buttons that are shown instead of the dynamic info bar when hovering over it. local panels = {} local buttons = {} panels[1] = self:addPanel(15, 364, 0) -- Staff management button buttons[1] = panels[1]:makeToggleButton(6, 6, 35, 36, 16, self.dialogStaffManagement):setTooltip(_S.tooltip.toolbar.staff_list) panels[2] = self:addPanel(17, 407, 0) -- Town map button buttons[2] = panels[2]:makeToggleButton(1, 6, 35, 36, 18, self.dialogTownMap):setTooltip(_S.tooltip.toolbar.town_map) panels[3] = self:addPanel(19, 445, 0) -- Casebook button buttons[3] = panels[3]:makeToggleButton(1, 6, 35, 36, 20, self.dialogDrugCasebook):setTooltip(_S.tooltip.toolbar.casebook) panels[4] = self:addPanel(21, 483, 0) -- Research button buttons[4] = panels[4]:makeToggleButton(1, 6, 35, 36, 22, self.dialogResearch) :setSound():setTooltip(_S.tooltip.toolbar.research) -- Remove default sound for this button panels[5] = self:addPanel(23, 521, 0) -- Status button buttons[5] = panels[5]:makeToggleButton(1, 6, 35, 36, 24, self.dialogStatus):setTooltip(_S.tooltip.toolbar.status) panels[6] = self:addPanel(25, 559, 0) -- Charts button buttons[6] = panels[6]:makeToggleButton(1, 6, 35, 36, 26, self.dialogCharts):setTooltip(_S.tooltip.toolbar.charts) panels[7] = self:addPanel(27, 597, 0) -- Policy button buttons[7] = panels[7]:makeToggleButton(1, 6, 35, 36, 28, self.dialogPolicy):setTooltip(_S.tooltip.toolbar.policy) for _, panel in ipairs(panels) do panel.visible = false end self.additional_panels = panels self.additional_buttons = buttons self:makeTooltip(_S.tooltip.toolbar.balance, 41, 5, 137, 28) self:makeTooltip(_S.tooltip.toolbar.date, 140, 5, 200, 42) self:makeDynamicTooltip(--[[persistable:reputation_tooltip]] function() return _S.tooltip.toolbar.reputation .. " (" .. self.ui.hospital.reputation .. ")" end, 41, 30, 137, 42) -- original TH F-key shortcuts ui:addKeyHandler("F1", self.bank_button, self.bank_button.handleClick, "left") -- bank manager ui:addKeyHandler("F2", self.bank_button, self.bank_button.handleClick, "right") -- bank stats ui:addKeyHandler("F3", buttons[1], buttons[1].handleClick, "left") -- staff management ui:addKeyHandler("F4", buttons[2], buttons[2].handleClick, "left") -- town map ui:addKeyHandler("F5", buttons[3], buttons[3].handleClick, "left") -- casebook ui:addKeyHandler("F6", buttons[4], buttons[4].handleClick, "left") -- research ui:addKeyHandler("F7", buttons[5], buttons[5].handleClick, "left") -- status ui:addKeyHandler("F8", buttons[6], buttons[6].handleClick, "left") -- charts ui:addKeyHandler("F9", buttons[7], buttons[7].handleClick, "left") -- policy -- "old" keyboard shortcuts for some of the fullscreen windows ui:addKeyHandler("T", buttons[2], buttons[2].handleClick, "left") -- T for town map ui:addKeyHandler("R", buttons[4], buttons[4].handleClick, "left") -- R for research local config = ui.app.config if not config.volume_opens_casebook then ui:addKeyHandler("C", buttons[3], buttons[3].handleClick, "left") -- C for casebook else ui:addKeyHandler({"shift", "C"}, buttons[3], buttons[3].handleClick, "left") -- Shift + C for casebook end ui:addKeyHandler({"shift", "L"}, self, self.openLoad) -- Shift + L for Load saved game menu ui:addKeyHandler({"shift", "S"}, self, self.openSave) -- Shift + S for Load create save menu ui:addKeyHandler({"shift", "R"}, self, self.restart) -- Shift + R for restart the level ui:addKeyHandler({"shift", "Q"}, self, self.quit) -- Shift + Q quit the game and return to main menu ui:addKeyHandler({"shift", "alt", "S"}, self, self.quickSave) -- Shift+Alt+S quick save ui:addKeyHandler({"shift", "alt", "L"}, self, self.quickLoad) -- Shift+Alt+L load last quick save -- misc. keyhandlers ui:addKeyHandler("M", self, self.openFirstMessage) -- M for message ui:addKeyHandler("I", self, self.toggleInformation) -- I for Information when you first build ui:addKeyHandler("J", self, self.openJukebox) -- open the jukebox end function UIBottomPanel:openJukebox() self.ui:addWindow(UIJukebox(self.ui.app)) end function UIBottomPanel:openSave() self.ui:addWindow(UISaveGame(self.ui)) end function UIBottomPanel:openLoad() self.ui:addWindow(UILoadGame(self.ui, "game")) end function UIBottomPanel:quickSave() self.ui.app:quickSave() end function UIBottomPanel:quickLoad() self.ui.app:quickLoad() end function UIBottomPanel:restart() self.ui.app:restart() end function UIBottomPanel:quit() self.ui:quit() end function UIBottomPanel:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = x + self.x, y + self.y self.money_font:draw(canvas, ("%7i"):format(self.ui.hospital.balance), x + 44, y + 9) local month, day = self.world:getDate() self.date_font:draw(canvas, _S.date_format.daymonth:format(day, month), x + 140, y + 20, 60, 0) -- Draw possible information in the dynamic info bar if not self.additional_panels[1].visible then self:drawDynamicInfo(canvas, x + 364, y) end if self.show_animation then if self.factory_counter >= 1 then self.panel_sprites:draw(canvas, 40, x + 177, y + 1) end if self.factory_counter > 1 and self.factory_counter <= 22 then for dx = 0, self.factory_counter do self.panel_sprites:draw(canvas, 41, x + 179 + dx, y + 1) end end if self.factory_counter == 22 then self.panel_sprites:draw(canvas, 42, x + 201, y + 1) end end self:drawReputationMeter(canvas, x + 55, y + 35) end function UIBottomPanel:setPosition(x, y) -- Lock to bottom of screen return Window.setPosition(self, x, -0.1) end -- Draws the hospital reputation meter on canvas. -- x_left is the leftmost x-coordinate of the reputation meter -- y is the y-coordinate of the reputation meter function UIBottomPanel:drawReputationMeter(canvas, x_left, y) local width = 65 -- Reputation meter width local step = width / (self.ui.hospital.reputation_max - self.ui.hospital.reputation_min) self.panel_sprites:draw(canvas, 36, x_left + math.floor(step * (self.ui.hospital.reputation - self.ui.hospital.reputation_min)), y) end function UIBottomPanel:drawDynamicInfo(canvas, x, y) if self.world:isCurrentSpeed("Pause") and not self.world.user_actions_allowed then self.pause_font:drawWrapped(canvas, _S.misc.pause, x + 10, y + 14, 255, "center") elseif self.dynamic_info then local info = self.dynamic_info local font = self.white_font for i, text in ipairs(info["text"]) do font:drawWrapped(canvas, text, x + 20, y + 10 * i, 240) if i == #info["text"] and info["progress"] then local white = canvas:mapRGB(255, 255, 255) local black = canvas:mapRGB(0, 0, 0) local orange = canvas:mapRGB(221, 83, 0) canvas:drawRect(white, x + 165, y + 10 * i, 100, 10) canvas:drawRect(black, x + 166, y + 1 + 10 * i, 98, 8) canvas:drawRect(orange, x + 166, y + 1 + 10 * i, math.floor(98 * info["progress"]), 8) if info["dividers"] then for _, value in ipairs(info["dividers"]) do canvas:drawRect(white, x + 165 + math.floor(value * 100), y + 10 * i, 1, 10) end end end end end end function UIBottomPanel:setDynamicInfo(info) if not info then self.countdown = 25 else self.countdown = nil self.dynamic_info = info end end function UIBottomPanel:onMouseMove(x, y, dx, dy) local repaint = Window.onMouseMove(self, x, y, dx, dy) if self:showAdditionalButtons(x, y) then repaint = true end return repaint end function UIBottomPanel:showAdditionalButtons(x, y) local panels = self.additional_panels if self:hitTest(x, y) then -- Inside the panel if not panels[1].visible then -- Are the buttons already shown? for _, panel in ipairs(panels) do panel.visible = true end end else -- Outside the rectangle if panels[1].visible then -- Are the buttons already invisible? for _, panel in ipairs(panels) do panel.visible = false end end end end function UIBottomPanel:hitTest(x, y, x_offset) return x >= (x_offset and x_offset or 0) and y >= 0 and x < self.width and y < self.height end --! Queue a fax notification message to appear. --! The arguments specify a message, which is added to a FIFO queue, and will -- appear on screen once there is space. --!param type (string) The type of message, can be: "emergency", "epidemy", "personality", "information", "disease", "report" or "strike" --!param message (table or number) If type == "strike", the amount of pay rise. Else a list of texts to display, including a "choices" table with choices. See below for structure. --!param owner (humanoid or nil) Some messages are related to one staff or patient. Otherwise this is nil. --!param timeout (number or nil) If given, the message will expire after that many world ticks and be removed. --!param default_choice (number or nil) If given, the choice with this number will be executed on expiration of the message. --!param callback (function or nil) If given, it will be called when the message is closed. --! Structure of message (except strike): -- message = { -- { text = "first line of text", offset (integer, optional) } -- { text = "second line of text", offset (integer, optional) } -- ... -- choices = { -- { text = "first choice", choice = "choice_type", enabled = true or false (optional, defaults to true) } -- ... -- } -- } function UIBottomPanel:queueMessage(type, message, owner, timeout, default_choice, callback) -- Show a helpful message if there has been no messages before - only in campaign though if not self.ui.hospital.message_popup and tonumber(self.world.map.level_number) then self.world.ui.adviser:say(_A.information.fax_received) self.ui.hospital.message_popup = true end local fax = { type = type, message = message, owner = owner, timeout = timeout, default_choice = default_choice, callback = callback, } if self:canQueueFax(fax) then self.message_queue[#self.message_queue + 1] = fax -- create reference to message in owner if owner then owner.message = message end else self:cancelFax(fax.type) end end --[[ A fax can be queued if the event the fax causes does not affect an event caused by any other fax that is queued. i.e both emergency and epidemics use the timer, so both faxes cannot appear at the same time. @param fax (table) the fax we want to determine if can be queued. @return true if fax can be queued, false otherwise (boolean) ]] function UIBottomPanel:canQueueFax(fax) --[[ Determine if fax of a particular type is queued either in the message queue or the message window (ui) @param fax_type (string) the fax type to check if any queued @return true if any of fax_type is queued false otherwise (boolean) ]] local function isFaxTypeQueued(fax_type) -- Check the queued messages for _, fax_msg in ipairs(self.message_queue) do if fax_msg.type == fax_type then return true end end -- Then the messages displayed on the bottom bar for _, fax_msg in ipairs(self.message_windows) do if fax_msg.type == fax_type then return true end end return false end if fax.type == "epidemy" then if isFaxTypeQueued("emergency") then return false end elseif fax.type == "emergency" then if isFaxTypeQueued("epidemy") then return false end end return true end --[[ Cancels a fax of a particular type currently only "emergency" and "epidemy" Handles the cancelling of the event which the fax pertains to. @param fax_type (string) type of fax event to be cancelled]] function UIBottomPanel:cancelFax(fax_type) local hospital = self.ui.hospital if fax_type == "epidemy" then hospital.epidemic:clearAllInfectedPatients() hospital.epidemic = nil elseif fax_type == "emergency" then self.world:nextEmergency() end end -- Opens the last available message. Currently used to open the level completed message. function UIBottomPanel:openLastMessage() if #self.message_queue > 0 then self:createMessageWindow(#self.message_queue) table.remove(self.message_queue, #self.message_queue) end self.message_windows[#self.message_windows]:openMessage() end --! Trigger a message to be moved from the queue into a actual window, after -- first performing the necessary animation. function UIBottomPanel:showMessage() if self.factory_direction ~= -1 then self.factory_direction = -1 if self.factory_counter < 0 then -- Factory is already opened so don't wait to show the message self.show_animation = false self.factory_counter = 9 else -- Delay the appearance of the message to when the factory is opened self.factory_direction = -1 self.factory_counter = 22 self.show_animation = true end end end -- Opens the first available message in the list of message_windows. function UIBottomPanel:openFirstMessage() if #self.message_windows > 0 then self.message_windows[1]:openMessage() end end -- Removes a message from the message queue (for example if a room is built before the player -- says what to do with the patient. function UIBottomPanel:removeMessage(owner) for i, msg_info in ipairs(self.message_queue) do if msg_info.owner == owner then -- TODO: restructure message_queue to contain UIMessage objects already, so this special handling isn't required owner.message = nil table.remove(self.message_queue, i) return true end end for _, window in ipairs(self.message_windows) do if window.owner == owner then window:removeMessage() return true end end return false end --! Pop the message with the given index from the message queue and turn it into an actual -- message window; if no index is provided the first message in the queue is popped. function UIBottomPanel:createMessageWindow(index) local --[[persistable:bottom_panel_message_window_close]] function onClose(window, out_of_time) local index_to_remove for i, win in ipairs(self.message_windows) do if index_to_remove ~= nil then win:setXLimit(1 + (i - 2) * 30) elseif win == window then index_to_remove = i if win.callback then win.callback() end end end table.remove(self.message_windows, index_to_remove) end if not index then index = 1 end local message_windows = self.message_windows local message_info = self.message_queue[index] if not message_info then return end local alert_window = UIMessage(self.ui, 175, 1 + #message_windows * 30, onClose, message_info.type, message_info.message, message_info.owner, message_info.timeout, message_info.default_choice, message_info.callback) message_windows[#message_windows + 1] = alert_window self:addWindow(alert_window) self.factory_direction = 1 self.show_animation = true self.factory_counter = -50 -- Delay close of message factory table.remove(self.message_queue, index) -- Delete the last element of the queue end function UIBottomPanel:onTick() -- Advance the animation on the message factory if self.factory_direction == 1 then -- Close factory animation if self.factory_counter < 22 then self.factory_counter = self.factory_counter + 1 end elseif self.factory_direction == -1 then if #self.message_queue == 0 then -- Message was removed before we could display it. Reset. self.factory_direction = 1 self.factory_counter = 22 end -- Open factory animation if self.factory_counter >= 0 then if self.factory_counter == 0 then -- Animation ends so we can now show the message self:createMessageWindow() end self.factory_counter = self.factory_counter - 1 end end -- The dynamic info bar is there a while longer when hovering an entity has stopped if self.countdown then if self.countdown < 1 then self.dynamic_info = nil -- If there is no info to display, and the app is tracking FPS, show that local fps = self.ui.app:getFPS() if fps then self.dynamic_info = {text = { ("FPS: %i"):format(math.floor(fps + 0.5)), ("Lua GC: %.1f Kb"):format(collectgarbage"count"), ("Entities: %i"):format(#self.ui.app.world.entities), }} self.countdown = 1 end else self.countdown = self.countdown - 1 end end -- Move an item out of the message queue if there is room if #self.message_windows < 5 and #self.message_queue > 0 then self:showMessage() end Window.onTick(self) end function UIBottomPanel:dialogBankManager(enable) self:dialogBankCommon(enable) end function UIBottomPanel:dialogBankStats(enable) self:dialogBankCommon(enable, true) end function UIBottomPanel:dialogBankCommon(enable, stats) if not self.world.user_actions_allowed then self:updateButtonStates() return end if enable then self:addDialog("UIBankManager", stats and "showStatistics") else local w = self.ui:getWindow(UIBankManager) if w then if not stats and w.showingStatistics then w:hideStatistics() elseif stats and not w.showingStatistics then w:showStatistics() else w:close() end self:updateButtonStates() end end end function UIBottomPanel:dialogBuildRoom() if self.world.user_actions_allowed then local dlg = UIBuildRoom(self.ui) self.ui:setEditRoom(false) self.ui:addWindow(dlg) self.ui:tutorialStep(3, 1, 2) end end function UIBottomPanel:dialogFurnishCorridor() if self.world.user_actions_allowed then -- Close any fullscreen window local fullscreen = self.ui:getWindow(UIFullscreen) if fullscreen then fullscreen:close() end local dlg = UIFurnishCorridor(self.ui) self.ui:setEditRoom(false) self.ui:addWindow(dlg) self.ui:tutorialStep(1, 1, 2) end end function UIBottomPanel:dialogHireStaff() if self.world.user_actions_allowed then local dlg = UIHireStaff(self.ui) self.ui:setEditRoom(false) self.ui:addWindow(dlg) self.ui:tutorialStep(2, 1, 2) self.ui:tutorialStep(4, 1, 2) end end function UIBottomPanel:dialogStaffManagement(enable) if not self.world.user_actions_allowed then self:updateButtonStates() return end if enable then self:addDialog("UIStaffManagement") else local w = self.ui:getWindow(UIStaffManagement) if w then w:close() end end end function UIBottomPanel:dialogTownMap(enable) if not self.world.user_actions_allowed then self:updateButtonStates() return end if enable then self:addDialog("UITownMap") else local w = self.ui:getWindow(UITownMap) if w then w:close() end end end function UIBottomPanel:dialogDrugCasebook(enable) if not self.world.user_actions_allowed then self:updateButtonStates() return end if enable then self:addDialog("UICasebook") else local w = self.ui:getWindow(UICasebook) if w then w:close() end end end function UIBottomPanel:dialogResearch(enable) if not self.world.user_actions_allowed then self:updateButtonStates() return end if self.ui.hospital.research_dep_built then if enable then self:addDialog("UIResearch") else local w = self.ui:getWindow(UIResearch) if w then w:close() end end self.ui:playSound("selectx.wav") else self.ui:playSound("wrong2.wav") self:updateButtonStates() self:giveResearchAdvice() end end function UIBottomPanel:giveResearchAdvice() local can_build_research = false for _, room in ipairs(self.ui.app.world.available_rooms) do if room.class == "ResearchRoom" then can_build_research = true break end end local msg = can_build_research and _A.warnings.research_screen_open_1 or _A.warnings.research_screen_open_2 self.ui.adviser:say(msg) end function UIBottomPanel:dialogStatus(enable) if not self.world.user_actions_allowed then self:updateButtonStates() return end if enable then self:addDialog("UIProgressReport") else local w = self.ui:getWindow(UIProgressReport) if w then w:close() end end end function UIBottomPanel:dialogCharts(enable) if not self.world.user_actions_allowed then self:updateButtonStates() return end if enable then self:addDialog("UIGraphs") else local w = self.ui:getWindow(UIGraphs) if w then w:close() end end end function UIBottomPanel:dialogPolicy(enable) if not self.world.user_actions_allowed then self:updateButtonStates() return end if enable then self:addDialog("UIPolicy") else local w = self.ui:getWindow(UIPolicy) if w then w:close() end end end function UIBottomPanel:toggleInformation() self.world:toggleInformation() end local fullscreen_dialogs = { "UIStaffManagement", "UITownMap", "UICasebook", "UIResearch", "UIProgressReport", "UIGraphs", "UIPolicy", } function UIBottomPanel:updateButtonStates() for i, button in ipairs(self.additional_buttons) do button:setToggleState(not not self.ui:getWindow(_G[fullscreen_dialogs[i]])) end self.bank_button:setToggleState(not not self.ui:getWindow(UIBankManager)) end function UIBottomPanel:addDialog(dialog_class, extra_function) local edit_window = self.ui:getWindow(UIEditRoom) -- If we are currently editing a room, ask for abortion before adding any dialog. if edit_window then self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.abort_edit_room, --[[persistable:abort_edit_room_confirm_dialog]]function() self.ui:setEditRoom(false) local dialog = _G[dialog_class](self.ui) if extra_function then _G[dialog_class][extra_function](dialog) end self.ui:addWindow(dialog) self:updateButtonStates() end )) self:updateButtonStates() else self.ui:setEditRoom(false) local dialog = _G[dialog_class](self.ui) self.ui:addWindow(dialog) if extra_function then _G[dialog_class][extra_function](dialog) end self:updateButtonStates() end end -- Do not remove, for savegame compatibility < r1878 local --[[persistable:abort_edit_room_cancel_dialog]]function stub() end function UIBottomPanel:editRoom() local ui = self.ui if ui.editing_allowed then self.ui:playSound("selectx.wav") if ui.edit_room then ui:setEditRoom(false) else ui:setEditRoom(true) end else -- no editing is allowed when other dialogs are open self.ui:playSound("wrong2.wav") end end function UIBottomPanel:afterLoad(old, new) if old < 40 then -- Find the graph dialog and enable it for _, button in ipairs(self.buttons) do if not button.on_click then button.on_click = self.dialogCharts button.enabled = true end end end if old < 47 then self.ui:addKeyHandler("I", self, self.toggleInformation) self.ui:addKeyHandler("A", self, self.toggleAdviser) end if old < 58 then self.pause_font = TheApp.gfx:loadFont("QData", "Font124V") end if old < 62 then -- renamed additional_buttons to additional_panels -- additional_buttons are now the actual buttons self.additional_panels = self.additional_buttons self.additional_buttons = {} for i = 1, 7 do self.additional_buttons[i] = self.buttons[5 + i]:makeToggle() -- made them toggle buttons end self.bank_button = self.buttons[1]:makeToggle() -- keyboard shortcuts have been added/changed self.ui:addKeyHandler("F1", self.bank_button, self.bank_button.handleClick, "left") -- bank manager self.ui:addKeyHandler("F2", self.bank_button, self.bank_button.handleClick, "right") -- bank manager self.ui:addKeyHandler("F3", self.additional_buttons[1], self.additional_buttons[1].handleClick, "left") -- staff management self.ui:addKeyHandler("F4", self.additional_buttons[2], self.additional_buttons[2].handleClick, "left") -- town map self.ui:addKeyHandler("F5", self.additional_buttons[3], self.additional_buttons[3].handleClick, "left") -- casebook self.ui:addKeyHandler("F6", self.additional_buttons[4], self.additional_buttons[4].handleClick, "left") -- research self.ui:addKeyHandler("F7", self.additional_buttons[5], self.additional_buttons[5].handleClick, "left") -- status self.ui:addKeyHandler("F8", self.additional_buttons[6], self.additional_buttons[6].handleClick, "left") -- charts self.ui:addKeyHandler("F9", self.additional_buttons[7], self.additional_buttons[7].handleClick, "left") -- policy self.ui:removeKeyHandler("T", self) self.ui:removeKeyHandler("C", self) self.ui:removeKeyHandler("R", self) self.ui:addKeyHandler("T", self.additional_buttons[2], self.additional_buttons[2].handleClick, "left") -- T for town map self.ui:addKeyHandler("C", self.additional_buttons[3], self.additional_buttons[3].handleClick, "left") -- C for casebook self.ui:addKeyHandler("R", self.additional_buttons[4], self.additional_buttons[4].handleClick, "left") -- R for research end if old < 70 then self.ui:removeKeyHandler("a", self) end if old < 71 then self.ui:removeKeyHandler("C", self.additional_buttons[3], self.additional_buttons[3].handleClick, "left") -- remove C for opening the Casebook -- add choice for opening casebook as per chosen option in config local config = self.ui.app.config if not config.volume_opens_casebook then self.ui:addKeyHandler("C", self.additional_buttons[3], self.additional_buttons[3].handleClick, "left") -- C for casebook else self.ui:addKeyHandler({"shift", "C"}, self.additional_buttons[3], self.additional_buttons[3].handleClick, "left") -- Shift + C for casebook end -- add new key handlers self.ui:addKeyHandler("J", self, self.openJukebox) -- open the jukebox self.ui:addKeyHandler({"shift", "L"}, self, self.openLoad) -- Shift + L for Load saved game menu self.ui:addKeyHandler({"shift", "S"}, self, self.openSave) -- Shift + S for Load create save menu self.ui:addKeyHandler({"shift", "R"}, self, self.restart) -- Shift + R for restart the level self.ui:addKeyHandler({"shift", "Q"}, self, self.quit) -- Shift + Q quit the game and return to main menu end if old < 82 then self.ui:addKeyHandler({"shift","alt", "S"}, self, self.quickSave) -- Shift+Alt+S quick save self.ui:addKeyHandler({"shift","alt", "L"}, self, self.quickLoad) -- Shift+Alt+L load last quick save end Window.afterLoad(self, old, new) end CorsixTH-0.61/CorsixTH/Lua/dialogs/build_room.lua000066400000000000000000000173051321660673500216660ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" class "UIBuildRoom" (Window) ---@type UIBuildRoom local UIBuildRoom = _G["UIBuildRoom"] function UIBuildRoom:UIBuildRoom(ui) self:Window() local app = ui.app self.ui = ui self.modal_class = "main" self.esc_closes = true self.width = 297 self.height = 294 self:setDefaultPosition(0.5, 0.5) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req09V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.blue_font = app.gfx:loadFont("QData", "Font02V") self.category_index = 0 self.list_hover_index = 0 self.preview_anim = false self.default_button_sound = "selectx.wav" local function cat(n) return --[[persistable:build_room_set_category]] function(window) return window:setCategory(n) end end local room_n = 1 local function rm() local n = room_n room_n = room_n + 1 return --[[persistable:build_room_build_room]] function(window) return window:buildRoom(n) end end self:addPanel(210, 0, 0):makeButton(9, 9, 129, 32, 211, cat(1)):setTooltip(_S.tooltip.build_room_window.room_classes.diagnosis) self:addPanel(212, 0, 41):makeButton(9, 0, 129, 31, 213, cat(2)):setTooltip(_S.tooltip.build_room_window.room_classes.treatment) -- Clinics should really be at y=73, but TH skips a pixel here -- so that the left and right columns are the same height self:addPanel(214, 0, 72):makeButton(9, 0, 129, 32, 215, cat(3)):setTooltip(_S.tooltip.build_room_window.room_classes.clinic) self:addPanel(216, 0, 104):makeButton(9, 0, 129, 32, 217, cat(4)):setTooltip(_S.tooltip.build_room_window.room_classes.facilities) self:addPanel(218, 0, 146) -- Grid top for y = 179, 249, 10 do self:addPanel(219, 0, y) -- Grid body end self:addPanel(220, 0, 259) -- Grid bottom self:addPanel(221, 146, 0) -- List top for y = 34, 205, 19 do self:addPanel(222, 146, y):makeButton(12, 0, 126, 19, 223, rm()) -- List body .enabled = false end -- The close button has no sprite for when pressed, so it has to be custom drawn local build_room_dialog_close = TheApp.gfx:loadSpriteTable("Bitmap", "aux_ui", true) self:addPanel(224, 146, 224):makeButton(8, 34, 134, 27, 224, self.close):setTooltip(_S.tooltip.build_room_window.close) .panel_for_sprite.custom_draw = --[[persistable:build_room_draw_close_button]] function(panel, canvas, x, y) x = x + panel.x y = y + panel.y panel.window.panel_sprites:draw(canvas, panel.sprite_index, x, y) local btn = panel.window.active_button if btn and btn.panel_for_sprite == panel and btn.active then build_room_dialog_close:draw(canvas, 1, x + 8, y + 34) end end self.list_title = _S.build_room_window.pick_department self.cost_box = _S.build_room_window.cost .. "0" self.list = {} self.category_titles = { _S.room_classes.diagnosis, _S.room_classes.treatment, _S.room_classes.clinics, _S.room_classes.facilities } self.category_rooms = { } for i, category in ipairs({"diagnosis", "treatment", "clinics", "facilities"}) do local rooms = {} self.category_rooms[i] = rooms for _, room in ipairs(app.world.available_rooms) do -- NB: Unimplemented rooms are hidden unless in debug mode if (app.config.debug or room.class) and room.categories[category] and ui.hospital.discovered_rooms[room] then rooms[#rooms + 1] = room end end table.sort(rooms, function(r1, r2) return r1.categories[category] < r2.categories[category] end) end self:makeTooltip(_S.tooltip.build_room_window.cost, 160, 228, 282, 242) end local cat_label_y = {21, 53, 84, 116} function UIBuildRoom:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = self.x + x, self.y + y self.white_font:draw(canvas, self.list_title, x + 163, y + 18) for i = 1, 4 do (i == self.category_index and self.blue_font or self.white_font) :draw(canvas, self.category_titles[i], x + 19, y + cat_label_y[i]) end for i, room in ipairs(self.list) do (i == self.list_hover_index and self.blue_font or self.white_font) :draw(canvas, room.name, x + 163, y + 21 + i * 19) end self.white_font:draw(canvas, self.cost_box, x + 163, y + 232) if self.preview_anim then self.preview_anim:draw(canvas, x + 70, y + 200) end end function UIBuildRoom:setCategory(index) if index == 1 then self.ui:tutorialStep(3, 2, 3) else self.ui:tutorialStep(3, 3, 2) end self.category_index = index self.list_title = _S.build_room_window.pick_room_type self.list = self.category_rooms[index] local last = #self.list + 5 for i = 5, 14 do self.buttons[i].enabled = i < last if i < last then self.buttons[i]:setTooltip(self.list[i - 4].tooltip) else self.buttons[i]:setTooltip() end end end function UIBuildRoom:buildRoom(index) local hosp = self.ui.hospital local world = self.ui.app.world if index == 1 then self.ui:tutorialStep(3, 3, 4) end local cost = world.free_build_mode and 0 or hosp.research.research_progress[self.list[index]].build_cost if world.free_build_mode or hosp.balance >= cost then -- Close any full screen window currently open. local fullscreen = self.ui:getWindow(UIFullscreen) if fullscreen then fullscreen:close() end local edit_dlg = UIEditRoom(self.ui, self.list[index]) self.ui:addWindow(edit_dlg) else -- give visual warning that player doesn't have enough $ to build self.ui.adviser:say(_A.warnings.money_very_low_take_loan, false, true) self.ui:playSound("Wrong2.wav") end end function UIBuildRoom:onMouseMove(x, y, dx, dy) local repaint = Window.onMouseMove(self, x, y, dx, dy) local hover_idx = 0 if 156 <= x and x < 287 and 31 <= y and y < 226 then for i = 5, 14 do local btn = self.buttons[i] if btn.enabled and btn.x <= x and x < btn.r and btn.y <= y and y < btn.b then hover_idx = i - 4 break end end end if hover_idx ~= self.list_hover_index then self.ui:playSound("HLightP2.wav") if hover_idx == 0 then self.cost_box = _S.build_room_window.cost .. "0" self.preview_anim = false else local hosp = self.ui.hospital local world = self.ui.app.world local cost = world.free_build_mode and 0 or hosp.research.research_progress[self.list[hover_idx]].build_cost self.cost_box = _S.build_room_window.cost .. cost self.preview_anim = TH.animation() self.preview_anim:setAnimation(self.ui.app.anims, self.list[hover_idx].build_preview_animation) end self.list_hover_index = hover_idx repaint = true end return repaint end function UIBuildRoom:close() self.ui:tutorialStep(3, {2, 3}, 1) return Window.close(self) end CorsixTH-0.61/CorsixTH/Lua/dialogs/confirm_dialog.lua000066400000000000000000000071671321660673500225140ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Dialog for "Are you sure you want to quit?" and similar yes/no questions. class "UIConfirmDialog" (Window) ---@type UIConfirmDialog local UIConfirmDialog = _G["UIConfirmDialog"] function UIConfirmDialog:UIConfirmDialog(ui, text, callback_ok, callback_cancel) self:Window() local app = ui.app self.modal_class = "information" self.esc_closes = true self.on_top = true self.ui = ui self.width = 183 self.height = 199 self:setDefaultPosition(0.5, 0.5) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req04V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.text = text self.callback_ok = callback_ok -- Callback function to launch if user chooses ok self.callback_cancel = callback_cancel -- Callback function to launch if user chooses cancel -- Check how "high" the dialog must be local w, h = self.white_font:sizeOf(text) self:addPanel(357, 0, 0) -- Dialog header local last_y = 22 -- Rough estimate of how many rows it will be when drawn. for y = 22, h * (w / 160) * 1.4, 11 do -- Previous value: 136 self:addPanel(358, 0, y) -- Dialog background self.height = self.height + 11 last_y = last_y + 11 end self:addPanel(359, 0, last_y) -- Dialog footer self:addPanel(360, 0, last_y + 10):makeButton(8, 10, 82, 34, 361, self.cancel) :setTooltip(_S.tooltip.window_general.cancel):setSound"No4.wav" self:addPanel(362, 90, last_y + 10):makeButton(0, 10, 82, 34, 363, self.ok) :setTooltip(_S.tooltip.window_general.confirm):setSound"YesX.wav" self:addKeyHandler("return", self.ok) self:addKeyHandler("keypad enter", self.ok) end function UIConfirmDialog:cancel() self:close(false) end function UIConfirmDialog:ok() self:close(true) end --! Closes the confirm dialog --!param ok (boolean or nil) whether to call the confirm callback (true) or cancel callback (false/nil) function UIConfirmDialog:close(ok) -- NB: Window is closed before executing the callback in order to not save the confirmation dialog in a savegame Window.close(self) if ok then if self.callback_ok then self.callback_ok() end else if self.callback_cancel then self.callback_cancel() end end end function UIConfirmDialog:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = x + self.x, y + self.y self.white_font:drawWrapped(canvas, self.text, x + 17, y + 17, 153) end function UIConfirmDialog:afterLoad(old, new) if old < 101 then self:removeKeyHandler("enter") self:addKeyHandler("return", self.ok) end if old < 104 then self:addKeyHandler("keypad enter", self.ok) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/edit_room.lua000066400000000000000000001462271321660673500215220ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] dofile "dialogs/place_objects" class "UIEditRoom" (UIPlaceObjects) ---@type UIEditRoom local UIEditRoom = _G["UIEditRoom"] function UIEditRoom:UIEditRoom(ui, room_type) -- NB: UIEditRoom:onCursorWorldPositionChange is called by the UIPlaceObjects -- constructor, hence the initialisation of required fields prior to the call. self.UIPlaceObjects(self, ui) self:addKeyHandler("return", self.confirm) -- UIPlaceObjects does not need this self:addKeyHandler("keypad enter", self.confirm) local app = ui.app local blue_red_swap = self.anims.Alt32_BlueRedSwap -- Set alt palette on wall blueprint to make it red self.anims:setAnimationGhostPalette(124, app.gfx:loadGhost("QData", "Ghost1.dat", 6), blue_red_swap) -- Set on door and window blueprints too self.anims:setAnimationGhostPalette(126, app.gfx:loadGhost("QData", "Ghost1.dat", 6), blue_red_swap) self.anims:setAnimationGhostPalette(130, app.gfx:loadGhost("QData", "Ghost1.dat", 6), blue_red_swap) self.cell_outline = TheApp.gfx:loadSpriteTable("Bitmap", "aux_ui", true) if not room_type.room_info then self.blueprint_rect = { x = 1, y = 1, w = 0, h = 0, } if room_type.swing_doors then self.blueprint_door = {anim = {}, old_anim = {}, old_flags = {}} else self.blueprint_door = {} end self.phase = "walls" --> "door" --> "windows" --> "clear_area" --> "objects" --> "closed" self.room_type = room_type self.title_text = room_type.name self.desc_text = _S.place_objects_window.drag_blueprint else self.phase = "objects" self.room_type = room_type.room_info self.title_text = room_type.room_info.name self.room = room_type self.desc_text = _S.place_objects_window.confirm_or_buy_objects self.paid = true self.blueprint_rect = { x = room_type.x, y = room_type.y, w = room_type.width, h = room_type.height, } if room_type.room_info.swing_doors then self.blueprint_door = {anim = {}, old_anim = {}, old_flags = {}} else self.blueprint_door = {} end self.ui:setWorldHitTest(self.room) self.pickup_button:enable(true) self.purchase_button:enable(true) self:checkEnableConfirm() end self.blueprint_wall_anims = { } self.blueprint_window = { } self.mouse_down_x = false self.mouse_down_y = false self.mouse_cell_x = 0 self.mouse_cell_y = 0 end function UIEditRoom:close(...) if self.phase == "objects" and self.confirm_button.enabled then if not self.closed_cleanly then self:confirm(true) end else while self.phase ~= "walls" do self:cancel() end end for k, obj in pairs(self.blueprint_wall_anims) do if obj.setTile then obj:setTile(nil) else for _, anim in pairs(obj) do anim:setTile(nil) end end self.blueprint_wall_anims[k] = nil end self.phase = "closed" -- No longer editing a room self.ui.edit_room = false self:setBlueprintRect(1, 1, 0, 0) self.ui:tutorialStep(3, {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1) -- not all of these links may be needed, but to be safe... return UIPlaceObjects.close(self, ...) end --[[ Called when building/editing of the room is about to stop because another dialog is being opened. If the room is in the objects phase and all required objects have been placed it will be completed. Otherwise it is cancelled instead. --]] function UIEditRoom:verifyOrAbortRoom() if self.phase == "objects" and self.confirm_button.enabled then -- The room can be finished self:close() else -- The room will have to be cancelled self:abortRoom() end end function UIEditRoom:abortRoom() if self.paid then -- Return half the cost. local progress = self.ui.hospital.research.research_progress local cost = math.floor(progress[self.room.room_info].build_cost/2) -- TODO: Return also the cost for additional objects. -- Decrease the hospital value by the whole room build cost local valueChange = progress[self.room.room_info].build_cost for obj, num in pairs(self.room.room_info.objects_needed) do -- Get how much this item costs. local obj_cost = self.ui.hospital:getObjectBuildCost(obj) cost = cost - math.floor(obj_cost)/2 valueChange = valueChange - num * obj_cost end self.ui.hospital:receiveMoney(cost, _S.transactions.sell_object, valueChange) end -- Close the dialog self:close() -- Finally remove the room from the world (close() needs the reference) if self.room then self.room:deactivate() -- TODO: may be superfluous since already called in Room:tryToEdit self.world.rooms[self.room.id] = nil end end function UIEditRoom:cancel() if self.confirm_dialog_open then -- Don't do anything as long as the confirm dialog is open. return end if self.phase == "walls" then if self.paid then -- While the confirmation window is open, don't allow the player to click the confirm button. self.confirm_button:enable(false) self.confirm_dialog_open = true -- Ask if the user really wish to sell this room self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.delete_room, --[[persistable:delete_room_confirm_dialog]]function() self:abortRoom() end, --[[persistable:delete_room_confirm_dialog_cancel]]function() self.confirm_button:enable(true) self.confirm_dialog_open = nil end )) else self:close() end self.ui:setCursor(self.ui.default_cursor) elseif self.phase == "objects" then self:stopPickupItems() self:returnToDoorPhase() self.world:resetSideObjects() else if self.phase == "clear_area" then self.ui:setDefaultCursor(nil) self.check_for_clear_area_timer = nil self.humanoids_to_watch = nil end self.phase = "walls" self:returnToWallPhase() end end function UIEditRoom:confirm(force) -- double check if confirm is allowed (for being called e.g. by hotkey) if not force and not self.confirm_button.enabled then return end self:stopPickupItems() if self.phase == "walls" then self.mouse_down_x = false self.mouse_down_y = false self.move_rect_x = false self.move_rect_y = false self.phase = "door" self:enterDoorPhase() elseif self.phase == "door" then self.phase = "windows" self:enterWindowsPhase() elseif self.phase == "windows" then self.phase = "clear_area" self:clearArea() elseif self.phase == "clear_area" then self.ui:setDefaultCursor(nil) self.phase = "objects" self:finishRoom() self.world:resetSideObjects() self:enterObjectsPhase() else -- Pay for room (subtract cost of needed objects, which were already paid for) if not self.paid then local progress = self.ui.hospital.research.research_progress local cost = progress[self.room.room_info].build_cost for obj, num in pairs(self.room.room_info.objects_needed) do -- Get how much this item costs. local obj_cost = self.ui.hospital:getObjectBuildCost(obj) cost = cost - num * obj_cost end self.ui.hospital:spendMoney(cost, _S.transactions.build_room .. ": " .. self.title_text, cost) self.paid = true end self.world:markRoomAsBuilt(self.room) self.closed_cleanly = true -- If information dialogs are disabled, go ahead. if self.ui:getWindow(UIInformation) then self.ui:tutorialStep(3, 15, 16) else self.ui:tutorialStep(3, 15, "next") end self:close() end end local function isHumanoidObscuringArea(humanoid, x1, x2, y1, y2) if humanoid.tile_x then if x1 <= humanoid.tile_x and humanoid.tile_x <= x2 and y1 <= humanoid.tile_y and humanoid.tile_y <= y2 then if (x1 == humanoid.tile_x or x2 == humanoid.tile_x) or (y1 == humanoid.tile_y or y2 == humanoid.tile_y) then -- Humanoid not in the rectangle, but might be walking into it local action = humanoid.action_queue[1] if action.name ~= "walk" then return false end if action.path_x then -- in a (rare) special case, path_x is nil (see action_walk_start) local next_x = action.path_x[action.path_index] local next_y = action.path_y[action.path_index] if x1 >= next_x or next_x >= x2 or y1 >= next_y or next_y >= y2 then return false end end end return true end end return false end function UIEditRoom:clearArea() self.confirm_button:enable(false) local rect = self.blueprint_rect local world = self.ui.app.world world:clearCaches() -- To invalidate idle tiles in case we need to move people local humanoids_to_watch = setmetatable({}, {__mode = "k"}) do local x1 = rect.x - 1 local x2 = rect.x + rect.w local y1 = rect.y - 1 local y2 = rect.y + rect.h for _, entity in ipairs(world.entities) do if class.is(entity, Humanoid) and isHumanoidObscuringArea(entity, x1, x2, y1, y2) then humanoids_to_watch[entity] = true -- Try to make the humanoid leave the area local meander = entity.action_queue[2] if meander and meander.name == "meander" then -- Interrupt the idle or walk, which will cause a new meander target -- to be chosen, which will be outside the blueprint rectangle meander.can_idle = false local on_interrupt = entity.action_queue[1].on_interrupt if on_interrupt then entity.action_queue[1].on_interrupt = nil on_interrupt(entity.action_queue[1], entity) end elseif entity.action_queue[1].name == "seek_room" or (meander and meander.name == "seek_room") then -- Make sure that the humanoid doesn't stand idle waiting within the blueprint if entity.action_queue[1].name == "seek_room" then entity:queueAction(MeanderAction():setCount(1):setMustHappen(true), 0) else meander.done_walk = false end else -- Look for a queue action and re-arrange the people in it, which -- should cause anyone queueing within the blueprint to move for _, action in ipairs(entity.action_queue) do if action.name == "queue" then for _, humanoid in ipairs(action.queue) do local callbacks = action.queue.callbacks[humanoid] if callbacks then callbacks:onChangeQueuePosition(humanoid) end end break end end -- TODO: Consider any other actions which might be causing the -- humanoid to be staying within the rectangle for a long time. end end end end if next(humanoids_to_watch) == nil then -- No humanoids within the area, so continue with the room placement self:confirm(true) return end self.check_for_clear_area_timer = 10 self.humanoids_to_watch = humanoids_to_watch self.ui:setCursor(self.ui.waiting_cursor) end function UIEditRoom:onTick() UIFurnishCorridor.onTick(self) if self.check_for_clear_area_timer then self.check_for_clear_area_timer = self.check_for_clear_area_timer - 1 if self.check_for_clear_area_timer == 0 then local rect = self.blueprint_rect local x1 = rect.x - 1 local x2 = rect.x + rect.w local y1 = rect.y - 1 local y2 = rect.y + rect.h for humanoid in pairs(self.humanoids_to_watch) do -- The person might be dying (this check should probably be moved into -- isHumanoidObscuringArea, but I don't want to change too much right -- before a release). if humanoid.action_queue[1].name == "die" then if not humanoid.hospital then self.humanoids_to_watch[humanoid] = nil end elseif not isHumanoidObscuringArea(humanoid, x1, x2, y1, y2) then self.humanoids_to_watch[humanoid] = nil end end if next(self.humanoids_to_watch) then self.check_for_clear_area_timer = 10 else self.check_for_clear_area_timer = nil self.humanoids_to_watch = nil self:confirm(true) end end end end function UIEditRoom:finishRoom() local room_type = self.room_type local wall_type = self.ui.app.walls[room_type.wall_type] local world = self.ui.app.world local map = self.ui.app.map.th local rect = self.blueprint_rect local door, door2 -- Add the transparency flag if it is set. local flag = 0 if self.ui.transparent_walls then flag = 1024 end local function check_external_window(x, y, layer) -- If a wall is built which is normal to an external window, then said -- window needs to be removed, otherwise it looks odd (see issue #59). local block = map:getCell(x, y, layer) local dir = world:getWallDirFromBlockId(block) local tiles = self.ui.app.walls.external[world:getWallSetFromBlockId(block)] if dir == "north_window_1" then if x ~= rect.x then map:setCell(x, y, layer, flag + tiles.north) if map:getCell(x + 1, y, layer) ~= 0 then map:setCell(x + 1, y, layer, flag + tiles.north) end end elseif dir == "north_window_2" then if x == rect.x then if map:getCell(x - 1, y, layer) ~= 0 then map:setCell(x - 1, y, layer, flag + tiles.north) end map:setCell(x, y, layer, flag + tiles.north) end elseif dir == "west_window_1" then if y == rect.y then map:setCell(x, y, layer, flag + tiles.west) if map:getCell(x, y - 1, layer) ~= 0 then map:setCell(x, y - 1, layer, flag + tiles.west) end end elseif dir == "west_window_2" then if y ~= rect.y then if map:getCell(x, y + 1, layer) ~= 0 then map:setCell(x, y + 1, layer, flag + tiles.west) end map:setCell(x, y, layer, flag + tiles.west) end end end for x, obj in pairs(self.blueprint_wall_anims) do for y, anim in pairs(obj) do if x == rect.x and y == rect.y then local _, east, north = map:getCell(x, y) if world:getWallIdFromBlockId(east) == "external" then check_external_window(x, y, 2) elseif world:getWallSetFromBlockId(east) == "window_tiles" then map:setCell(x, y, 2, flag + wall_type.window_tiles.north) else map:setCell(x, y, 2, flag + wall_type.inside_tiles.north) end if world:getWallIdFromBlockId(north) == "external" then check_external_window(x, y, 3) elseif world:getWallSetFromBlockId(north) == "window_tiles" then map:setCell(x, y, 3, flag + wall_type.window_tiles.west) else map:setCell(x, y, 3, flag + wall_type.inside_tiles.west) end else repeat local tiles = "outside_tiles" local tag = anim:getTag() if tag == "nothing" or tag == "swing_slave" then tiles = "swing_outside_tiles" end local dir = (anim:getFlag() % 2 == 1) and "west" or "north" local layer = dir == "north" and 2 or 3 if world:getWallIdFromBlockId(map:getCell(x, y, layer)) == "external" then if layer == 2 then if (x == rect.x or x == rect.x + rect.w - 1) and (y == rect.y or y == rect.y + rect.h) then check_external_window(x, y, 2) end else if (x == rect.x or x == rect.x + rect.w) and (y == rect.y or y == rect.y + rect.h - 1) then check_external_window(x, y, 3) end end break end local existing = world:getWallSetFromBlockId(map:getCell(x, y, layer)) if rect.x <= x and x < rect.x + rect.w and rect.y <= y and y < rect.y + rect.h then if tag == "nothing" or tag == "swing_slave" then tiles = "swing_inside_tiles" else tiles = "inside_tiles" end elseif existing then break end if tag == "window" or existing == "window_tiles" then tiles = "window_tiles" end local suffixes = {"_left", "_right"} local num = dir == "north" and 1 or 0 if tag == "door" then door = world:newObject("door", x, y, dir) elseif tag == "swing_master" then door = world:newObject("swing_door_right", x, y, dir) elseif tag == "swing_slave" then door2 = world:newObject("swing_door_left", x, y, dir) map:setCell(x, y, layer, flag + wall_type[tiles][dir .. suffixes[2 - num]]) elseif tag == "nothing" then map:setCell(x, y, layer, flag + wall_type[tiles][dir .. suffixes[num + 1]]) else map:setCell(x, y, layer, flag + wall_type[tiles][dir]) end until true end anim:setTile(nil) end self.blueprint_wall_anims[x] = nil end -- If there is already a room, e.g. it is being moved, don't make a new one. if self.room then self.room:initRoom(rect.x, rect.y, rect.w, rect.h, door, door2) else self.room = self.world:newRoom(rect.x, rect.y, rect.w, rect.h, room_type, door, door2) end end function UIEditRoom:purchaseItems() self.visible = false self.place_objects = false self:stopPickupItems() local cfg_objects = self.world.map.level_config.objects local research = self.ui.hospital.research local object_list = {} -- transform set to list for i, o in ipairs(self.room.room_info.objects_additional) do -- Don't show the object if it hasn't been researched yet. local object = TheApp.objects[o] local avail = cfg_objects[object.thob].AvailableForLevel if avail == 1 and (not research.research_progress[object] or research.research_progress[object].discovered) then -- look up current quantity local cur_qty = 0 for _, p in ipairs(self.objects) do if p.object.id == o then cur_qty = p.qty end end -- look up minimum quantity (required objects list) local min_qty = self.room.room_info.objects_needed[o] or 0 -- subtract number of objects in room from minimum quantity for obj, _ in pairs(self.room.objects) do if min_qty == 0 then break end if obj.object_type.id == o then min_qty = min_qty - 1 end end object_list[i] = { object = TheApp.objects[o], qty = cur_qty, min_qty = min_qty } end end self.ui:addWindow(UIFurnishCorridor(self.ui, object_list, self)) end -- callback for item pick up button function UIEditRoom:pickupItems() if self.in_pickup_mode then self:stopPickupItems() else self.in_pickup_mode = true self.ui:setCursor(self.ui.grab_cursor) self.place_objects = false self.active_index = 0 self.object_cell_x = nil self.object_cell_y = nil self:clearBlueprint() end end function UIEditRoom:stopPickupItems() if self.in_pickup_mode then self.in_pickup_mode = false self.ui:setCursor(self.ui.default_cursor) self.pickup_button:setToggleState(false) end end function UIEditRoom:returnToWallPhase(early) self.ui:tutorialStep(3, {9, 10, 11, 12}, 4) if not early then self.desc_text = _S.place_objects_window.drag_blueprint self.confirm_button:enable(true) for k, obj in pairs(self.blueprint_wall_anims) do for _, anim in pairs(obj) do anim:setTile(nil) end self.blueprint_wall_anims[k] = nil end end local rect = self.blueprint_rect local x, y, w, h = rect.x, rect.y, rect.w, rect.h self:setBlueprintRect(1, 1, 0, 0) self:setBlueprintRect(x, y, w, h) if self.room_type.swing_doors then self.blueprint_door = {anim = {}, old_anim = {}, old_flags = {}} else self.blueprint_door = {} end end function UIEditRoom:returnToDoorPhase() self.ui:tutorialStep(3, {13, 14, 15}, 9) local map = self.ui.app.map.th local room = self.room room.built = false if room.door and room.door.queue then room.door.queue:rerouteAllPatients(SeekRoomAction(room.room_info.id)) end self.purchase_button:enable(false) self.pickup_button:enable(false) -- Remove any placed objects (add them to list again) for x = room.x, room.x + room.width - 1 do for y = room.y, room.y + room.height - 1 do while true do local obj = self.world:getObject(x, y) if not obj or obj == room.door or class.is(obj, SwingDoor) then break end if obj.object_type.id == "litter" then -- Silently remove litter from the world. obj.remove() break end self.world:destroyEntity(obj) if not obj.master then self:addObjects({{ object = TheApp.objects[obj.object_type.id], qty = 1 }}) end end end end self.world:destroyEntity(self.room.door) if self.room.door2 then self.world:destroyEntity(self.room.door2) end -- backup list of objects self.objects_backup = {} for k, o in pairs(self.objects) do self.objects_backup[k] = { object = o.object, qty = o.qty } end UIPlaceObjects.removeAllObjects(self, true) -- Remove walls local function remove_wall_line(x, y, step_x, step_y, n_steps, layer, neigh_x, neigh_y) for _ = 1, n_steps do local existing = map:getCell(x, y, layer) -- Possibly add transparency. local flag = 0 if self.ui.transparent_walls then flag = 1024 end if self.world:getWallIdFromBlockId(existing) ~= "external" then local neighbour = self.world:getRoom(x + neigh_x, y + neigh_y) if neighbour then if neigh_x ~= 0 or neigh_y ~= 0 then local set = self.world:getWallSetFromBlockId(existing) local dir = self.world:getWallDirFromBlockId(existing) if set == "inside_tiles" then set = "outside_tiles" end map:setCell(x, y, layer, flag + self.world.wall_types[neighbour.room_info.wall_type][set][dir]) end else map:setCell(x, y, layer, flag) end end x = x + step_x y = y + step_y end end remove_wall_line(room.x, room.y, 0, 1, room.height, 3, -1, 0) remove_wall_line(room.x, room.y, 1, 0, room.width , 2, 0, -1) remove_wall_line(room.x + room.width, room.y , 0, 1, room.height, 3, 0, 0) remove_wall_line(room.x, room.y + room.height, 1, 0, room.width , 2, 0, 0) -- Reset floor tiles and flags self.world.map.th:unmarkRoom(room.x, room.y, room.width, room.height) -- Re-create blueprint local rect = self.blueprint_rect local old_w, old_h = rect.w, rect.h rect.w = 0 rect.h = 0 self:setBlueprintRect(rect.x, rect.y, old_w, old_h) -- We've gone all the way back to wall phase, so step forward to door phase self.phase = "door" self:enterDoorPhase() end function UIEditRoom:screenToWall(x, y) local cellx, celly = self.ui:ScreenToWorld(x, y) cellx = math.floor(cellx) celly = math.floor(celly) local rect = self.blueprint_rect if cellx == rect.x or cellx == rect.x - 1 or cellx == rect.x + rect.w or cellx == rect.x + rect.w - 1 or celly == rect.y or celly == rect.y - 1 or celly == rect.y + rect.h or celly == rect.y + rect.h - 1 then else return end -- NB: Doors and windows cannot be placed on corner tiles, hence walls of corner tiles -- are never returned, and the nearest non-corner wall is returned instead. If they -- could be placed on corner tiles, then you would have to consider the interaction of -- wall shadows with windows and doors, amonst other things. -- Swing doors are allowed to be adjacent everywhere except the top corner. local modifier = 0 local swinging = false if self.room_type.swing_doors and self.phase == "door" then modifier = 1 swinging = true end if cellx == rect.x and celly == rect.y then -- top corner local x_, _ = self.ui:WorldToScreen(cellx, celly) if x >= x_ then -- correctly reflects (at least origin version) of TH. -- Swing doors in top corner to the east, actually skip another tile if swinging then return cellx + 2 + modifier, celly, "north" else return cellx + 1 + modifier, celly, "north" end else return cellx, celly + 1 + modifier, "west" end elseif cellx == rect.x + rect.w - 1 and celly == rect.y + rect.h - 1 then -- bottom corner local x_, _ = self.ui:WorldToScreen(cellx, celly) if x >= x_ then return cellx, celly - 1, "east" else return cellx - 1, celly, "south" end elseif cellx == rect.x and celly == rect.y + rect.h - 1 then -- left corner local _, y_ = self.ui:WorldToScreen(cellx, celly) if y >= y_ + 16 then if swinging and cellx <= rect.x + 2 then return cellx + 1 + modifier, celly, "south" else return cellx + 1, celly, "south" end else return cellx, celly - 1, "west" end elseif cellx == rect.x + rect.w - 1 and celly == rect.y then -- right corner local _, y_ = self.ui:WorldToScreen(cellx, celly) if y >= y_ + 16 then if swinging and celly <= rect.y + 2 then return cellx, celly + 1 + modifier, "east" else return cellx, celly + 1, "east" end else return cellx - 1, celly, "north" end elseif (cellx == rect.x - 1 or cellx == rect.x) and rect.y <= celly and celly < rect.y + rect.h then -- west edge if celly == rect.y then celly = rect.y + 1 elseif celly == rect.y + rect.h - 1 then celly = rect.y + rect.h - 2 end if swinging and celly <= rect.y + 1 then celly = celly + 1 end return rect.x, celly, "west" elseif (celly == rect.y - 1 or celly == rect.y) and rect.x <= cellx and cellx < rect.x + rect.w then -- north edge -- correctly reflects (at least origin version) of TH. -- Swing doors in top corner to the east, actually skip another tile if swinging and cellx <= rect.x + 2 then cellx = rect.x + 3 elseif cellx == rect.x then cellx = rect.x + 1 + modifier elseif cellx == rect.x + rect.w - 1 then cellx = rect.x + rect.w - 2 end return cellx, rect.y, "north" elseif (cellx == rect.x + rect.w or cellx == rect.x + rect.w - 1) and rect.y <= celly and celly < rect.y + rect.h then -- east edge if swinging and celly <= rect.y + 1 then celly = rect.y + 2 elseif celly == rect.y then celly = rect.y + 1 elseif celly == rect.y + rect.h - 1 then celly = rect.y + rect.h - 2 end return rect.x + rect.w - 1, celly, "east" elseif (celly == rect.y + rect.h or celly == rect.y + rect.h - 1) and rect.x <= cellx and cellx < rect.x + rect.w then -- south edge if swinging and cellx <= rect.x + 1 then cellx = rect.x + 2 elseif cellx == rect.x then cellx = rect.x + 1 elseif cellx == rect.x + rect.w - 1 then cellx = rect.x + rect.w - 2 end return cellx, rect.y + rect.h - 1, "south" end end -- Function to check if the tiles adjacent to the room are still reachable from each other. -- NB: the passable flags of the room have to be set to false already before calling this function function UIEditRoom:checkReachability() local map = self.ui.app.map.th local world = self.ui.app.world local rect = self.blueprint_rect local prev_x, prev_y local x, y = rect.x, rect.y - 1 local flags = {} local function check(flag) if map:getCellFlags(x, y, flags).passable and flags[flag] then if prev_x and not world:getPathDistance(prev_x, prev_y, x, y) then return false end prev_x, prev_y = x, y end return true end while x < rect.x + rect.w do if not check("travelSouth") then return false end x = x + 1 end y = y + 1 while y < rect.y + rect.h do if not check("travelWest") then return false end y = y + 1 end x = x - 1 while x >= rect.x do if not check("travelNorth") then return false end x = x - 1 end y = y - 1 while y >= rect.y do if not check("travelEast") then return false end y = y - 1 end return true end function UIEditRoom:enterDoorPhase() self.ui:tutorialStep(3, 8, 9) -- make tiles impassable for y = self.blueprint_rect.y, self.blueprint_rect.y + self.blueprint_rect.h - 1 do for x = self.blueprint_rect.x, self.blueprint_rect.x + self.blueprint_rect.w - 1 do self.ui.app.map:setCellFlags(x, y, {passable = false}) end end -- check if all adjacent tiles of the rooms are still connected if not self:checkReachability() then -- undo passable flags and go back to walls phase self.phase = "walls" self:returnToWallPhase(true) self.ui:playSound("wrong2.wav") self.ui.adviser:say(_A.room_forbidden_non_reachable_parts) return end self.desc_text = _S.place_objects_window.place_door self.confirm_button:enable(false) -- Confirmation is via placing door -- Change the floor tiles to opaque blue local map = self.ui.app.map.th for y = self.blueprint_rect.y, self.blueprint_rect.y + self.blueprint_rect.h - 1 do for x = self.blueprint_rect.x, self.blueprint_rect.x + self.blueprint_rect.w - 1 do map:setCell(x, y, 4, 24) end end -- Re-organise wall anims to index by x and y local walls = {} for _, wall in ipairs(self.blueprint_wall_anims) do local _, x, y = wall:getTile() if not walls[x] then walls[x] = {} end walls[x][y] = wall end self.blueprint_wall_anims = walls end function UIEditRoom:enterWindowsPhase() self.ui:tutorialStep(3, {9, 10}, 11) self.desc_text = _S.place_objects_window.place_windows self.confirm_button:enable(true) end function UIEditRoom:enterObjectsPhase() self.ui:setCursor(self.ui.default_cursor) self.ui:tutorialStep(3, {11, 12}, 13) self.ui:setWorldHitTest(self.room) local confirm = self:checkEnableConfirm() if #self.room.room_info.objects_additional == 0 and confirm then self:confirm(true) return end self.desc_text = _S.place_objects_window.confirm_or_buy_objects if #self.room.room_info.objects_additional > 0 then self.purchase_button:enable(true) end self.pickup_button:enable(true) if self.objects_backup then self:addObjects(self.objects_backup, true) else local room_objects = self.room.room_info.objects_needed if TheApp.config.enable_avg_contents then room_objects = self:computeAverageContents() end local object_list = {} -- transform set to list for o, num in pairs(room_objects) do if num > 0 then object_list[#object_list + 1] = { object = TheApp.objects[o], qty = num } end end self:addObjects(object_list, true) end end -- Decide contents of the new room based on average content of previous built rooms -- of the same type. function UIEditRoom:computeAverageContents() local average_objects = {} -- what does the average room of this type contain? local room_count = 0 for _, room in pairs(self.world.rooms) do if room and room.built and not room.crashed and room.hospital == self.ui.hospital and room.room_info == self.room_type then room_count = room_count + 1 for obj, _ in pairs(room.objects) do average_objects[obj.object_type.id] = (average_objects[obj.object_type.id] or 0) + 1 end end end -- Ensure room contents is within the boundaries of objects_needed and objects_additional. local objects_needed = self.room.room_info.objects_needed local additional_objects = {} -- Reversed mapping for _, obj in pairs(self.room.room_info.objects_additional) do additional_objects[obj] = 1 end for id, count in pairs(average_objects) do count = math.floor(count / room_count + 0.5) if additional_objects[id] == nil and objects_needed[id] == nil then count = 0 end average_objects[id] = count end for id, count in pairs(objects_needed) do if (average_objects[id] or 0) < count then average_objects[id] = count end end return average_objects end function UIEditRoom:draw(canvas, ...) if self.world.user_actions_allowed then local ui = self.ui local x, y = ui:WorldToScreen(self.mouse_cell_x, self.mouse_cell_y) local zoom = self.ui.zoom_factor if canvas:scale(zoom) then x = math.floor(x / zoom) y = math.floor(y / zoom) end self.cell_outline:draw(canvas, 2, x - 32, y) canvas:scale(1) end UIPlaceObjects.draw(self, canvas, ...) end function UIEditRoom:onMouseDown(button, x, y) if self.world.user_actions_allowed and not self.confirm_dialog_open then if button == "left" then if self.phase == "walls" then if 0 <= x and x < self.width and 0 <= y and y < self.height then else local mouse_x, mouse_y = self.ui:ScreenToWorld(self.x + x, self.y + y) self.mouse_down_x = math.floor(mouse_x) self.mouse_down_y = math.floor(mouse_y) if self.move_rect then self.move_rect_x = self.mouse_down_x - self.blueprint_rect.x self.move_rect_y = self.mouse_down_y - self.blueprint_rect.y elseif self.resize_rect then -- nothing to do else self:setBlueprintRect(self.mouse_down_x, self.mouse_down_y, 1, 1) end end elseif self.phase == "door" then if self.blueprint_door.valid then self.ui:playSound("buildclk.wav") self:confirm(true) else self.ui:tutorialStep(3, 9, 10) end elseif self.phase == "windows" then self:placeWindowBlueprint() end end end return UIPlaceObjects.onMouseDown(self, button, x, y) or true end function UIEditRoom:onMouseUp(button, x, y) if self.mouse_down_x then self.mouse_down_x = false self.mouse_down_y = false end if self.move_rect_x then self.move_rect_x = false self.move_rect_y = false end return UIPlaceObjects.onMouseUp(self, button, x, y) end function UIEditRoom:onMouseMove(x, y, ...) if self.in_pickup_mode then self.ui:setCursor(self.ui.app.gfx:loadMainCursor("grab")) end end function UIEditRoom:setBlueprintRect(x, y, w, h) local rect = self.blueprint_rect local map = self.ui.app.map if x < 1 then x = 1 end if y < 1 then y = 1 end if x + w > map.width then w = map.width - x end if y + h > map.height then h = map.height - y end if rect.x == x and rect.y == y and rect.w == w and rect.h == h then -- Nothing to do return end local too_small = w < self.room_type.minimum_size or h < self.room_type.minimum_size local player_id = self.ui.hospital:getPlayerIndex() -- Entire update of floor tiles and wall animations done in C to replace -- several hundred calls into C with just a single call. The price for this -- is reduced flexibility. See l_map_updateblueprint in th_lua.cpp for code. local is_valid = map.th:updateRoomBlueprint(rect.x, rect.y, rect.w, rect.h, x, y, w, h, player_id, self.blueprint_wall_anims, self.anims, too_small) -- NB: due to the unflexibility, tutorial step "too small AND invalid position" (3.7) -- is currently unusable, as it's not possible to determine if the position would -- have been invalid even if it weren't too small. if self.phase ~= "closed" then if too_small then self.ui:tutorialStep(3, {4, 5, 8}, 6) elseif not is_valid then self.ui:tutorialStep(3, {4, 6, 8}, 5) else self.ui:tutorialStep(3, {4, 5, 6}, 8) end end self.confirm_button:enable(is_valid) rect.x = x rect.y = y rect.w = w rect.h = h end --25 north wall, west --26 north wall, east --27 east wall, south --28 east wall, north --29 south wall, west --30 south wall, east --31 west wall, south --32 west wall, north -- single door blue print values matching TH local door_floor_blueprint_markers = { north = 26, east = 27, south = 30, west = 31 } local window_floor_blueprint_markers = { north = 33, east = 34, south = 35, west = 36, } --! Check walls for having room for the door --!param x (int) X tile position of the door. --!param y (int) Y tile position of the door. --!param wall (string) Name of the wall (either 'north' or 'west'). --!param has_swingdoor (boolean) Whether the room has a normal door (false) or a swing door (true) as entrance. --!return (int) bit flags indicating invalid tile position using 1 based power of 2 as this works with ipairs --! values returned are the enumeration of --! 4 = centre door in swing door or for single door the value can just be non-zero but uses the same bit of code --! 2 (door section closer to top of screen) - smaller x or y --! 8 (door section closer to bottom of screen) - larger x or y local function checkDoorWalls(x, y, wall, has_swingdoor) local th = TheApp.map.th local dx, dy, wall_num if wall == "west" then wall_num = 3 dx = 0 dy = 1 else wall_num = 2 dx = 1 dy = 0 end local invalid_tile = 0 if th:getCell(x, y, wall_num) % 0x100 ~= 0 then invalid_tile = 4 end -- If it is a swing door there are two more locations to check. if has_swingdoor then if th:getCell(x - dx, y - dy, wall_num) % 0x100 ~= 0 then invalid_tile = invalid_tile + 2 end if th:getCell(x + dx, y + dy, wall_num) % 0x100 ~= 0 then invalid_tile = invalid_tile + 8 end end return invalid_tile end --! Check whether the given tile can function as a door entry/exit tile. --!param xpos (int) X position of the tile. --!param ypos (int) Y position of the tile. --!param player_id (int) Player id owning the hospital. --!param world - reference to world object instance --!return (boolean) whether the tile is considered to be valid. local function validDoorTile(xpos, ypos, player_id, world) local th = TheApp.map.th local tile_flags = th:getCellFlags(xpos, ypos) -- check own it if tile_flags.owner ~= player_id then return false end -- any object will cause it to be blocked (ignore litter) if tile_flags.thob ~= 0 and tile_flags.thob ~= 62 then return false end -- check if its passable that no object footprint blocks it if tile_flags.passable then return world:isTileExclusivelyPassable(xpos, ypos, 1) end return true end --! Calculate position offsets and door blueprint wall values --! param x (int) doors blueprint x value --! param y (int) doors blueprint y value --! param wall (string) original wall orientation --! return x (int) updated x value --! return y (int) updated y value --! return x_mod (int) offest value to apply to tile count to determine relative position --! return y_mod (int) offset value to apply to tile count to determine relatitve position --! return wall (string) wall orientation style (only 2 styles) local function doorWallOffsetCalculations(x, y, wall) local x_mod local y_mod if wall == "south" then y = y + 1 wall = "north" x_mod = 2 elseif wall == "east" then x = x + 1 wall = "west" y_mod = 2 elseif wall == "north" then x_mod = 2 else y_mod = 2 end return x, y, x_mod, y_mod, wall end function UIEditRoom:setDoorBlueprint(orig_x, orig_y, orig_wall) local x, y, x_mod, y_mod, wall = doorWallOffsetCalculations(orig_x, orig_y, orig_wall) local map = TheApp.map.th if self.blueprint_door.anim then if self.room_type.swing_doors then if self.blueprint_door.anim[1] then -- retrieve the old door position details to reset the blue print local oldx, oldy local _, _, oldx_mod, oldy_mod, _ = doorWallOffsetCalculations(self.blueprint_door.floor_x, self.blueprint_door.floor_y, self.blueprint_door.wall) -- If we're dealing with swing doors the anim variable is actually a table with three -- identical "doors". for i, anim in ipairs(self.blueprint_door.anim) do anim:setAnimation(self.anims, self.blueprint_door.old_anim[i], self.blueprint_door.old_flags[i]) anim:setTag(nil) self.blueprint_door.anim[i] = nil oldx = oldx_mod and self.blueprint_door.floor_x + (i - oldx_mod) or self.blueprint_door.floor_x oldy = oldy_mod and self.blueprint_door.floor_y + (i - oldy_mod) or self.blueprint_door.floor_y map:setCell(oldx, oldy, 4, 24) end end else self.blueprint_door.anim:setAnimation(self.anims, self.blueprint_door.old_anim, self.blueprint_door.old_flags) self.blueprint_door.anim:setTag(nil) self.blueprint_door.anim = nil map:setCell(self.blueprint_door.floor_x, self.blueprint_door.floor_y, 4, 24) end end self.blueprint_door.x = x self.blueprint_door.y = y self.blueprint_door.wall = wall self.blueprint_door.floor_x = orig_x self.blueprint_door.floor_y = orig_y self.blueprint_door.valid = false if not wall then return end local anim = self.blueprint_wall_anims[x][y] if self.room_type.swing_doors then anim = {} local types = {"swing_slave", "swing_master", "nothing"} for i = 1, 3 do local x1 = x_mod and (x + (i - x_mod)) or x local y1 = y_mod and (y + (i - y_mod)) or y anim[i] = self.blueprint_wall_anims[x1][y1] if anim[i] ~= self.blueprint_door.anim[i] then self.blueprint_door.anim[i] = anim[i] self.blueprint_door.anim[i]:setTag(types[i]) self.blueprint_door.old_anim[i] = anim[i]:getAnimation() self.blueprint_door.old_flags[i] = anim[i]:getFlag() end end else if anim ~= self.blueprint_door.anim then self.blueprint_door.anim = anim self.blueprint_door.anim:setTag("door") self.blueprint_door.old_anim = anim:getAnimation() self.blueprint_door.old_flags = anim:getFlag() end end local flags local x2, y2 = x, y if wall == "west" then flags = 1 x2 = x2 - 1 else--if wall == "north" then flags = 0 y2 = y2 - 1 end local world = self.ui.app.world -- invalid_tile used to select the individual blueprint that is blocked local invalid_tile = checkDoorWalls(x, y, wall, self.room_type.swing_doors) -- Ensure that the door isn't being built on top of an object local player_id = self.ui.hospital:getPlayerIndex() if not validDoorTile(x, y, player_id, world) or not validDoorTile(x2, y2, player_id, world) then invalid_tile = bitOr(invalid_tile, 4) end -- If we're making swing doors two more tiles need to be checked. if self.room_type.swing_doors then local dx = x_mod and 1 or 0 local dy = y_mod and 1 or 0 if not validDoorTile(x + dx, y + dy, player_id, world) or not validDoorTile(x2 + dx, y2 + dy, player_id, world) then invalid_tile = bitOr(invalid_tile, 8) end if not validDoorTile(x - dx, y - dy, player_id, world) or not validDoorTile(x2 - dx, y2 - dy, player_id, world) then invalid_tile = bitOr(invalid_tile, 2) end end self.blueprint_door.valid = (invalid_tile == 0) if self.room_type.swing_doors then for i, animation in ipairs(anim) do -- calculation here to flag blocked blueprint tiles on swing doors for each door tile animation:setAnimation(self.anims, 126, flags + (hasBit(invalid_tile, i) and 1 or 0) * 16) end else anim:setAnimation(self.anims, 126, flags + (invalid_tile ~= 0 and 1 or 0) * 16) end if self.room_type.swing_doors then flags = door_floor_blueprint_markers[orig_wall] local dirfix = orig_wall == "east" flags = dirfix and flags + 1 or flags for i = 1, 3 do local x1 = x_mod and orig_x + i - x_mod or orig_x local y1 = y_mod and orig_y + i - y_mod or orig_y if (i == 2) then map:setCell(x1, y1, 4, 24) else if dirfix then map:setCell(x1, y1, 4, i < 2 and flags or flags - 1) else map:setCell(x1, y1, 4, i > 2 and flags or flags - 1) end end end else map:setCell(self.blueprint_door.floor_x, self.blueprint_door.floor_y, 4, door_floor_blueprint_markers[orig_wall]) end end function UIEditRoom:placeWindowBlueprint() if self.blueprint_window.anim and self.blueprint_window.valid then self.blueprint_window = {} self.ui:playSound("buildclk.wav") elseif self.blueprint_window.anim and not self.blueprint_window.valid then self.ui:tutorialStep(3, 11, 12) end end function UIEditRoom:setWindowBlueprint(orig_x, orig_y, orig_wall) local x = orig_x local y = orig_y local wall = orig_wall if wall == "south" then y = y + 1 wall = "north" elseif wall == "east" then x = x + 1 wall = "west" end local map = self.ui.app.map.th local world = self.ui.app.world if self.blueprint_window.anim then self.blueprint_window.anim:setAnimation(self.anims, self.blueprint_window.old_anim, self.blueprint_window.old_flags) self.blueprint_window.anim:setTag(nil) self.blueprint_window.anim = nil map:setCell(self.blueprint_window.floor_x, self.blueprint_window.floor_y, 4, 24) end local anim = x and self.blueprint_wall_anims[x][y] if anim and anim:getTag() then x, y, wall = nil, nil, nil orig_x, orig_y, orig_wall = nil, nil, nil end self.blueprint_window.x = x self.blueprint_window.y = y self.blueprint_window.wall = wall self.blueprint_window.floor_x = orig_x self.blueprint_window.floor_y = orig_y self.blueprint_window.valid = false if not wall then return end if anim ~= self.blueprint_window.anim then self.blueprint_window.anim = anim self.blueprint_window.anim:setTag("window") self.blueprint_window.old_anim = anim:getAnimation() self.blueprint_window.old_flags = anim:getFlag() end self.blueprint_window.valid = true local flags if wall == "west" then flags = 1 if world:getWallIdFromBlockId(map:getCell(x, y, 3)) then self.blueprint_window.valid = false flags = flags + 16 end else--if wall == "north" then flags = 0 if world:getWallIdFromBlockId(map:getCell(x, y, 2)) then self.blueprint_window.valid = false flags = flags + 16 end end anim:setAnimation(self.anims, 130, flags) if self.blueprint_window.valid then map:setCell(self.blueprint_window.floor_x, self.blueprint_window.floor_y, 4, window_floor_blueprint_markers[orig_wall]) end end function UIEditRoom:onCursorWorldPositionChange(x, y) local repaint = UIPlaceObjects.onCursorWorldPositionChange(self, x, y) local ui = self.ui -- Is the game paused? if not self.world.user_actions_allowed or self.confirm_dialog_open then ui:setCursor(ui.default_cursor) return end local wx, wy = ui:ScreenToWorld(self.x + x, self.y + y) wx = math.floor(wx) wy = math.floor(wy) if self.phase == "walls" then local rect = self.blueprint_rect if not self.mouse_down_x then if wx > rect.x and wx < rect.x + rect.w - 1 and wy > rect.y and wy < rect.y + rect.h - 1 then -- inside blueprint, non-border -> move blueprint ui:setCursor(ui.app.gfx:loadMainCursor("move_room")) self.move_rect = true self.resize_rect = false elseif wx < rect.x or wx >= rect.x + rect.w or wy < rect.y or wy >= rect.y + rect.h then -- outside blueprint ui:setCursor(ui.app.gfx:loadMainCursor("resize_room")) self.move_rect = false self.resize_rect = false else -- inside blueprint, at border -> resize blueprint self.move_rect = false self.resize_rect = { n = (wy == rect.y), s = (wy == rect.y + rect.h - 1) and not (wy == rect.y), w = (wx == rect.x), e = (wx == rect.x + rect.w - 1) and not (wx == rect.x), } if (self.resize_rect.w or self.resize_rect.e) and (self.resize_rect.n or self.resize_rect.s) then ui:setCursor(ui.app.gfx:loadMainCursor("nswe_arrow")) elseif self.resize_rect.w or self.resize_rect.e then ui:setCursor(ui.app.gfx:loadMainCursor("we_arrow")) else ui:setCursor(ui.app.gfx:loadMainCursor("ns_arrow")) end end end else if self.phase ~= "clear_area" and self.phase ~= "objects" then ui:setCursor(ui.app.gfx:loadMainCursor("resize_room")) end local cell_x, cell_y, wall = self:screenToWall(self.x + x, self.y + y) if self.phase == "door" then self:setDoorBlueprint(cell_x, cell_y, wall) elseif self.phase == "windows" then self:setWindowBlueprint(cell_x, cell_y, wall) end end if self.mouse_down_x and self.move_rect then local rect = self.blueprint_rect self:setBlueprintRect(wx - self.move_rect_x, wy - self.move_rect_y, rect.w, rect.h) elseif self.mouse_down_x and self.resize_rect then local rect = self.blueprint_rect local x1, y1, x2, y2 = rect.x, rect.y, rect.x + rect.w - 1, rect.y + rect.h - 1 if self.resize_rect.w then x1 = wx elseif self.resize_rect.e then x2 = wx end if self.resize_rect.n then y1 = wy elseif self.resize_rect.s then y2 = wy end if x1 > x2 then x1, x2 = x2, x1 self.resize_rect.w, self.resize_rect.e = self.resize_rect.e, self.resize_rect.w end if y1 > y2 then y1, y2 = y2, y1 self.resize_rect.n, self.resize_rect.s = self.resize_rect.s, self.resize_rect.n end self:setBlueprintRect(x1, y1, x2 - x1 + 1, y2 - y1 + 1) elseif self.mouse_down_x then local x1, x2 = self.mouse_down_x, wx local y1, y2 = self.mouse_down_y, wy if x1 > x2 then x1, x2 = x2, x1 end if y1 > y2 then y1, y2 = y2, y1 end self:setBlueprintRect(x1, y1, x2 - x1 + 1, y2 - y1 + 1) end if wx ~= self.mouse_cell_x or wy ~= self.mouse_cell_y then repaint = true end self.mouse_cell_x = wx self.mouse_cell_y = wy return repaint end -- checks if all required objects are placed, and enables/disables the confirm button accordingly. -- also returns the new state of the confirm button function UIEditRoom:checkEnableConfirm() local needed = {} -- copy list of required objects for k, v in pairs(self.room.room_info.objects_needed) do needed[k] = v end -- subtract existing objects from the required numbers for o in pairs(self.room.objects) do local id = o.object_type.id if needed[id] then needed[id] = needed[id] - 1 if needed[id] == 0 then needed[id] = nil end end end -- disable if there are not fulfilled requirements local confirm = not next(needed) if confirm then self.ui:tutorialStep(3, {13, 14}, 15) else self.ui:tutorialStep(3, {14, 15}, 13) end self.confirm_button:enable(confirm) return confirm end function UIEditRoom:placeObject() local obj = UIPlaceObjects.placeObject(self, true) if obj then self:checkEnableConfirm() end end function UIEditRoom:afterLoad(old, new) if old < 101 then self:removeKeyHandler("enter") self:addKeyHandler("return", self.confirm) end if old < 104 then self:addKeyHandler("keypad enter", self.confirm) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen.lua000066400000000000000000000106511321660673500216720ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Base class for 640x480px dialogs (fullscreen in original game resolution). class "UIFullscreen" (Window) ---@type UIFullscreen local UIFullscreen = _G["UIFullscreen"] function UIFullscreen:UIFullscreen(ui) self:Window() self.esc_closes = true self.ui = ui self.modal_class = "fullscreen" self.width = 640 self.height = 480 self:onChangeResolution() end -- Cause all fullscreen windows to share a common saved window position. function UIFullscreen:getSavedWindowPositionName() return "UIFullscreen" end function UIFullscreen:onChangeResolution() local app = self.ui.app if app.config.width > self.width or app.config.height > self.height then if not self.border_sprites then self.border_sprites = app.gfx:loadSpriteTable("Bitmap", "aux_ui", true) end else self.border_sprites = nil end -- not draggable in actual fullscreen mode self.draggable = not not self.border_sprites local config = self.ui.app.runtime_config.window_position if config then config = config[self:getSavedWindowPositionName()] if config and config.x and config.y then return self:setPosition(config.x, config.y) end end self.x = math.floor((app.config.width - self.width) / 2) -- NB: Bottom panel is 48 pixels high if app.config.height > 480 + 48 then self.y = math.floor((app.config.height - 48 - self.height) / 2) elseif app.config.height >= 480 then self.y = 0 else self.y = math.floor((app.config.height - self.height) / 2) end end function UIFullscreen:draw(canvas, x, y) local sprites = self.border_sprites if sprites then local draw = sprites.draw local scr_x = self.x + x local scr_y = self.y + y canvas:nonOverlapping(true) draw(sprites, canvas, 10, scr_x - 9, scr_y - 9) draw(sprites, canvas, 12, scr_x + 600, scr_y - 9) draw(sprites, canvas, 15, scr_x - 9, scr_y + 440) draw(sprites, canvas, 17, scr_x + 600, scr_y + 440) for loop_x = scr_x + 40, scr_x + 560, 40 do draw(sprites, canvas, 11, loop_x, scr_y - 9) draw(sprites, canvas, 16, loop_x, scr_y + 480) end for loop_y = scr_y + 40, scr_y + 400, 40 do draw(sprites, canvas, 13, scr_x - 9, loop_y) draw(sprites, canvas, 14, scr_x + 640, loop_y) end canvas:nonOverlapping(false) end return Window.draw(self, canvas, x, y) end function UIFullscreen:onMouseDown(button, x, y) local repaint = Window.onMouseDown(self, button, x, y) if button == "left" and not repaint and not (x >= 0 and y >= 0 and x < self.width and y < self.height) and self:hitTest(x, y) then return self:beginDrag(x, y) end return repaint end function UIFullscreen:hitTest(x, y) if x >= 0 and y >= 0 and x < self.width and y < self.height then return true end local sprites = self.border_sprites if not sprites then return false end if x < -9 or y < -9 or x >= self.width + 9 or y >= self.height + 9 then return false end if (0 <= x and x < self.width) or (0 <= y and y < self.height) then return true end return sprites.hitTest(sprites, 10, x + 9, y + 9) or sprites.hitTest(sprites, 12, x - 600, y + 9) or sprites.hitTest(sprites, 15, x + 9, y - 440) or sprites.hitTest(sprites, 17, x - 600, y - 440) end function UIFullscreen:afterLoad(old, new) Window.afterLoad(self, old, new) if old < 22 then self.draggable = not not self.border_sprites end end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/000077500000000000000000000000001321660673500211645ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/annual_report.lua000066400000000000000000000627571321660673500245610ustar00rootroot00000000000000--[[ Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Annual Report fullscreen window shown at the start of each year. class "UIAnnualReport" (UIFullscreen) ---@type UIAnnualReport local UIAnnualReport = _G["UIAnnualReport"] --! Helper function that enables and makes visible button or table of buttons/panels. --!param button The button or table of buttons that should be activated/deactivated. If -- a table is given it needs to have the is_table flag set to true. --!param active Defines if the new state is active (true) or inactive (false). local function setActive(button, active) if button.is_table then for _, btn in ipairs(button) do btn.enabled = active btn.visible = active end else button.enabled = active button.visible = active end end function UIAnnualReport:UIAnnualReport(ui, world) self:UIFullscreen(ui) self.ui = ui local gfx = ui.app.gfx self.won_amount = 0 self.award_won_amount = 0 self.rep_amount = 0 if not pcall(function() local palette = gfx:loadPalette("QData", "Award02V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent -- Right now the statistics are first --self.background = gfx:loadRaw("Fame01V", 640, 480) self.award_background = gfx:loadRaw("Award01V", 640, 480) self.stat_background = gfx:loadRaw("Award02V", 640, 480) self.background = self.stat_background self.stat_font = gfx:loadFont("QData", "Font45V", false, palette) self.write_font = gfx:loadFont("QData", "Font47V", false, palette) self.stone_font = gfx:loadFont("QData", "Font46V", false, palette) self.panel_sprites = gfx:loadSpriteTable("QData", "Award03V", true, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end ------------------------ The current state the dialog is in. --------------------------- -- Possible values are 1, 2 and 3 = fame, statistics and awards pages respectively -- TODO: The dialog has some preparations for the fame screen, but as long as there are no -- competitor scores and the player's own score isn't increased anywhere there's no use in -- showing it. Only hall of fame is there right now too, and maybe it should be a -- stand alone dialog since it has (2) sprites in another sprite file? self.state = 2 self.default_button_sound = "selectx.wav" -- Close button, in the future different behaviours for different screens though --self.first_close = self:addPanel(0, 609, 449):makeButton(0, 0, 26, 26, 1, self.changePage) self.second_close = self:addPanel(0, 608, 449):makeButton(0, 0, 26, 26, 1, self.close) setActive(self.second_close, true) -- Change page buttons for the second and third pages local --[[persistable:annual_report_change_page]] function change() self:changePage(3) end self.second_change = self:addPanel(0, 274, 435):makeButton(0, 0, 91, 42, 3, change) setActive(self.second_change, true) self.third_change = self:addPanel(0, 272, 367):makeButton(0, 0, 91, 42, 3, self.changePage) setActive(self.third_change, false) -- The plaque showed after the player has clicked on a trophy local plaque = {} plaque[1] = self:addPanel(19, 206, 87) plaque[2] = self:addPanel(20, 206, 161) plaque[3] = self:addPanel(21, 206, 233) plaque[4] = self:addPanel(22, 206, 321) plaque.is_table = true self.plaque = plaque setActive(self.plaque, false) -- Close button for the trophy motivations self.third_close = self:addPanel(0, 389, 378):makeButton(0, 0, 26, 26, 2, self.showTrophyMotivation) setActive(self.third_close, false) -- The scroll showed after the player has clicked on an award local scroll = {} scroll[1] = self:addPanel(16, 206, 87) scroll[2] = self:addPanel(17, 206, 200) scroll[3] = self:addPanel(18, 206, 304) scroll[4] = self:addPanel(15, 300, 341) scroll.is_table = true self.scroll = scroll setActive(self.scroll, false) -- Close button for the award motivations self.fourth_close = self:addPanel(0, 369, 358):makeButton(0, 0, 26, 26, 2, self.showAwardMotivation) setActive(self.fourth_close, false) -- How many awards the player got this year. Will increase after the checkup. self.no_awards = 0 self.awards = {} -- Trophies. Currently the soda and the reputation award have been implemented self.no_trophies = 0 self.trophies = {} -- Check which awards and trophies the player should get. self:checkTrophiesAndAwards(world) -- Get and sort values used on the statistics screen. -- The six categories. The extra tables are used to be able to sort the values. self.money = {} self.money_sort = {} self.visitors = {} self.visitors_sort = {} self.salary = {} self.salary_sort = {} self.deaths = {} self.deaths_sort = {} self.cures = {} self.cures_sort = {} self.value = {} self.value_sort = {} -- TODO: Right now there are no real competitors, they all have initial values. for i, hospital in ipairs(world.hospitals) do self.money[hospital.name] = hospital.balance - hospital.loan self.money_sort[i] = hospital.balance - hospital.loan self.visitors[hospital.name] = hospital.num_visitors self.visitors_sort[i] = hospital.num_visitors self.deaths[hospital.name] = hospital.num_deaths self.deaths_sort[i] = hospital.num_deaths self.cures[hospital.name] = hospital.num_cured self.cures_sort[i] = hospital.num_cured self.value[hospital.name] = hospital.value self.value_sort[i] = hospital.value self.salary[hospital.name] = hospital.player_salary self.salary_sort[i] = hospital.player_salary end local sort_order = function(a,b) return a>b end table.sort(self.money_sort, sort_order) table.sort(self.visitors_sort, sort_order) table.sort(self.deaths_sort) -- We want this to be in increasing order table.sort(self.cures_sort, sort_order) table.sort(self.value_sort, sort_order) table.sort(self.salary_sort, sort_order) -- Pause the game to allow the player plenty of time to check all statistics and trophies won if world and not world:isCurrentSpeed("Pause") then world:setSpeed("Pause") end TheApp.video:setBlueFilterActive(false) end --! Finds out which awards and/or trophies the player has been awarded this year. function UIAnnualReport:checkTrophiesAndAwards(world) local hosp = self.ui.hospital local level_config = world.map.level_config local prices = level_config and level_config.awards_trophies or nil -- Check CuresAward so that we know the new config settings are available if prices and prices.TrophyMayorBonus then self.won_amount = 0 self.rep_amount = 0 self.award_won_amount = 0 -- The trophies and certificated awards/penalties available at this time -- -------------------------------- Trophies --------------------------------- -- Coke sales if hosp.sodas_sold > prices.CansofCoke then self:addTrophy(_S.trophy_room.sold_drinks.trophies[math.random(1, 3)], "money", prices.CansofCokeBonus) self.won_amount = self.won_amount + prices.CansofCokeBonus end -- Impressive VIP visits if hosp.num_vips_ty > 0 and hosp.pleased_vips_ty == hosp.num_vips_ty then -- added some here so you get odd amounts as in TH! local win_value = (prices.TrophyMayorBonus * hosp.pleased_vips_ty) + math.random(1, 5) self:addTrophy(_S.trophy_room.happy_vips.trophies[math.random(1, 3)], "reputation", win_value) self.rep_amount = self.rep_amount + win_value end -- Impressive Reputation in the year (above a threshold throughout the year) if hosp.reputation_above_threshold then self:addTrophy(_S.trophy_room.consistant_rep.trophies[math.random(1, 2)], "money", prices.TrophyReputationBonus) self.won_amount = self.won_amount + prices.TrophyReputationBonus end -- No deaths or around a 100% Cure rate in the year if hosp.num_deaths_this_year == 0 then self:addTrophy(_S.trophy_room.no_deaths.trophies[math.random(1, 3)], "money", prices.TrophyDeathBonus) self.won_amount = self.won_amount + prices.TrophyDeathBonus elseif hosp.num_cured_ty > (hosp.not_cured_ty * 0.9) then self:addTrophy(_S.trophy_room.many_cured.trophies[math.random(1, 3)], "money", prices.TrophyCuresBonus) self.won_amount = self.won_amount + prices.TrophyCuresBonus end -------------------- Certificate Awards or Penalties --------------------- -- Reputation if hosp.reputation > prices.ReputationAward then self:addAward(_S.trophy_room.high_rep.awards[math.random(1, 2)], "money", prices.AwardReputationBonus) self.award_won_amount = self.award_won_amount + prices.AwardReputationBonus elseif hosp.reputation < prices.ReputationPoor then self:addAward(_S.trophy_room.high_rep.penalty[math.random(1, 2)], "money", prices.AwardReputationPenalty) self.award_won_amount = self.award_won_amount + prices.AwardReputationPenalty end -- Hospital Value if hosp.value > prices.HospValueAward then -- added some here so you get odd amounts as in TH! local win_value = prices.HospValueBonus * math.random(1, 15) self:addAward(_S.trophy_room.hosp_value.awards[1], "reputation", win_value) self.rep_amount = self.rep_amount + win_value elseif hosp.value < prices.HospValuePoor then -- added some here so you get odd amounts as in TH! local lose_value = prices.HospValuePenalty * math.random(1, 15) self:addAward(_S.trophy_room.hosp_value.penalty[1], "reputation", lose_value) self.rep_amount = self.rep_amount + lose_value end -- Should these next few be linked so that you can only get one or should you get more than one if you met the targets? -- Cures if hosp.num_cured_ty > prices.CuresAward then self:addAward(_S.trophy_room.many_cured.awards[math.random(1, 2)], "money", prices.CuresBonus) self.award_won_amount = self.award_won_amount + prices.CuresBonus elseif hosp.num_cured_ty < prices.CuresPoor then self:addAward(_S.trophy_room.many_cured.penalty[math.random(1, 2)], "money", prices.CuresPenalty) self.award_won_amount = self.award_won_amount + prices.CuresPenalty end -- Deaths if hosp.num_deaths_this_year < prices.DeathsAward then self:addAward(_S.trophy_room.no_deaths.awards[math.random(1, 2)], "money", prices.DeathsBonus) self.award_won_amount = self.award_won_amount + prices.DeathsBonus elseif hosp.num_deaths_this_year > prices.DeathsPoor then self:addAward(_S.trophy_room.no_deaths.penalty[math.random(1, 2)], "money", prices.DeathsPenalty) self.award_won_amount = self.award_won_amount + prices.DeathsPenalty end -- Cures V Deaths -- This value is not really a ratio since the level files cannot contain decimal values. local cure_ratio = 100 if hosp.num_deaths_this_year > 0 then cure_ratio = hosp.num_cured_ty / hosp.num_deaths_this_year end if cure_ratio > prices.CuresVDeathsAward then self:addAward(_S.trophy_room.curesvdeaths.awards[1], "money", prices.CuresVDeathsBonus) self.award_won_amount = self.award_won_amount + prices.CuresVDeathsBonus elseif cure_ratio <= prices.CuresVDeathsPoor then self:addAward(_S.trophy_room.curesvdeaths.penalty[1], "money", prices.CuresVDeathsPenalty) self.award_won_amount = self.award_won_amount + prices.CuresVDeathsPenalty end end end function UIAnnualReport:updateAwards() -- Now apply the won/lost values. local hosp = self.ui.hospital if self.won_amount ~= 0 then hosp:receiveMoney(self.won_amount, _S.transactions.eoy_trophy_bonus) end if self.award_won_amount ~= 0 then hosp:receiveMoney(self.award_won_amount, _S.transactions.eoy_bonus_penalty) end if self.rep_amount ~= 0 then hosp:changeReputation("year_end", nil, math.floor(self.rep_amount)) end end -- A table defining which type of shadow each award should have. local award_shadows = { { shadow = 4 }, { shadow = 4 }, { shadow = 4 }, { shadow = 7 }, { shadow = 7 }, { shadow = 9 }, } -- Another table defining some properties of the three trophies. local trophy_prop = { { sprite = 12, x = 142, y = 324, w = 61, h = 144, }, { sprite = 14, x = 466, y = 331, w = 72, h = 145, }, { sprite = 13, x = 407, y = 324, w = 60, h = 144, }, } --! Adds a trophy figure with some text if the player clicks on it. --!param text (string) The text to show as motivation. --!param award_type (string) Should be one of "reputation" or "money" --!param amount (integer) How much the player got/lost. function UIAnnualReport:addTrophy(text, award_type, amount) local no = self.no_trophies + 1 -- Only show up to three trophies visually. if no <= 3 then local prop = trophy_prop[no] -- The actual figure and a button on it. local trophy_parts = {} trophy_parts.is_table = true -- Insert the info for later reference trophy_parts.info = { text = text, award_type = award_type, amount = amount } local --[[persistable:annual_report_show_trophy_motivation]] function change() self:showTrophyMotivation(no) end trophy_parts[1] = self:addPanel(prop.sprite, prop.x, prop.y) trophy_parts[2] = trophy_parts[1]:makeButton(0, 0, prop.w, prop.h, prop.sprite, change) setActive(trophy_parts, false) self.trophies[no] = trophy_parts end self.no_trophies = no end --! Adds an award frame with some text if the player clicks on it. --!param text (string) The text to show as motivation. --!param award_type (string) Should be one of "reputation" or "money" --!param amount (integer) How much the player got/lost. function UIAnnualReport:addAward(text, award_type, amount) -- How many awards the player has got up to this point. local no = self.no_awards + 1 if no <= 6 then -- Only visually show the first six awards. -- Add them one column at a time from the left. local x = no <= 3 and 16 or 525 local y = 74 if no % 3 == 2 then y = 189 elseif no % 3 == 0 then y = 304 end local award_parts = {} award_parts.is_table = true -- Insert the info for later reference award_parts.info = { text = text, award_type = award_type, amount = amount } -- The plaque if amount > 0 then -- A positive award award_parts[1] = self:addPanel(10, x + 12, y + 11) else -- A bad award award_parts[1] = self:addPanel(11, x + 12, y + 11) end -- The frame award_parts[2] = self:addPanel(23, x, y) -- The shadow award_parts[3] = self:addPanel(award_shadows[no].shadow, x, y) -- Make a button so that the player can click and see the motivation local --[[persistable:annual_report_show_award_motivation]] function change() self:showAwardMotivation(no) end award_parts[4] = award_parts[3]:makeButton(0, 0, 105, 103, award_shadows[no].shadow, change) self.awards[no] = award_parts setActive(award_parts, false) end -- The economic part of the award. self.no_awards = no end --! Activates the motivation scroll with the given text on it. --!param text_index_to_show The index of the award to show info from. function UIAnnualReport:showAwardMotivation(text_index_to_show) if text_index_to_show then -- Make sure no trophy motivation is shown self:showTrophyMotivation() setActive(self.scroll, true) -- Possibly hide the black award symbol if self.awards[text_index_to_show].info.amount > 0 then setActive(self.scroll[4], false) end setActive(self.fourth_close, true) setActive(self.third_change, false) self.award_motivation = text_index_to_show else setActive(self.scroll, false) setActive(self.fourth_close, false) setActive(self.third_change, true) self.award_motivation = nil end end --! Activates the motivation plaque with the given text on it. --!param text_index_to_show The index of the trophy to show info from. function UIAnnualReport:showTrophyMotivation(text_index_to_show) if text_index_to_show then -- Make sure no award motivation is shown self:showAwardMotivation() setActive(self.plaque, true) setActive(self.third_close, true) setActive(self.third_change, false) self.trophy_motivation = text_index_to_show else setActive(self.plaque, false) setActive(self.third_close, false) setActive(self.third_change, true) self.trophy_motivation = nil end end --! Overridden close function. The game should be unpaused again when closing the dialog. function UIAnnualReport:close() if TheApp.world:getLocalPlayerHospital().game_won then if not TheApp.world:isCurrentSpeed("Pause") then TheApp.world:setSpeed("Pause") TheApp.video:setBlueFilterActive(false) end TheApp.world.ui.bottom_panel:openLastMessage() elseif TheApp.world:isCurrentSpeed("Pause") then if TheApp.ui.speed_up_key_pressed then TheApp.world:setSpeed("Speed Up") else TheApp.world:setSpeed(TheApp.world.prev_speed) end end self:updateAwards() Window.close(self) self.ui.app.world:checkIfGameWon() end --! Changes the page of the annual report --!param page_no The page to go to, either page 1, 2 or 3. Default is currently page 2. function UIAnnualReport:changePage(page_no) -- Can only go to page 2 from page 1, and then only between page 2 and 3 --setActive(self.first_close, false) setActive(self.second_close, true) self.second_close.visible = true if page_no == 2 or not page_no then -- Statistics page. self.background = self.stat_background setActive(self.third_change, false) setActive(self.second_change, true) for i, _ in ipairs(self.trophies) do setActive(self.trophies[i], false) end for i, _ in ipairs(self.awards) do setActive(self.awards[i], false) end self.state = 2 else -- Awards and trophies self.background = self.award_background setActive(self.third_change, true) setActive(self.second_change, false) -- Show awards given. for i, _ in ipairs(self.awards) do setActive(self.awards[i], true) end -- And trophies given. for i, _ in ipairs(self.trophies) do setActive(self.trophies[i], true) end self.state = 3 end end function UIAnnualReport:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local font = self.stat_font local world = self.ui.app.world if self.state == 1 then -- Fame screen -- Title and column names font:draw(canvas, _S.high_score.best_scores, x + 220, y + 104, 200, 0) font:draw(canvas, _S.high_score.pos, x + 218, y + 132) font:draw(canvas, _S.high_score.player, x + 260, y + 132) font:draw(canvas, _S.high_score.score, x + 360, y + 132) -- Players and their score local i = 1 local dy = 0 --for i = 1, 10 do font:draw(canvas, i .. ".", x + 220, y + 160 + dy) font:draw(canvas, world.hospitals[1].name:upper(), x + 260, y + 160 + dy) font:draw(canvas, "NA", x + 360, y + 160 + dy) -- dy = dy + 25 --end elseif self.state == 2 then -- Statistics screen self:drawStatisticsScreen(canvas, x, y) else -- Award and trophy screen -- Write out motivation if appropriate if self.trophy_motivation then -- If it is a plaque showing we write in stone text. local info = self.trophies[self.trophy_motivation].info self.stone_font:drawWrapped(canvas, info.text, x + 225, y + 105, 185, "center") -- Type of award local award_type = _S.trophy_room.cash if info.award_type == "reputation" then award_type = _S.trophy_room.reputation end self.stone_font:draw(canvas, award_type, x + 220, y + 330, 200, 0) -- Amount won/lost self.stone_font:draw(canvas, "+" .. info.amount, x + 220, y + 355, 200, 0) elseif self.award_motivation then local info = self.awards[self.award_motivation].info self.write_font:drawWrapped(canvas, info.text, x + 235, y + 125, 165, "center") -- Type of award local award_type = _S.trophy_room.cash if info.award_type == "reputation" then award_type = _S.trophy_room.reputation end self.write_font:draw(canvas, award_type, x + 220, y + 290, 200, 0) -- The amount won/lost local text = "" if info.amount > 0 then text = "+" end self.write_font:draw(canvas, text .. info.amount, x + 220, y + 315, 200, 0) end end end function UIAnnualReport:drawStatisticsScreen(canvas, x, y) local font = self.stat_font local world = self.ui.app.world -- Draw titles font:draw(canvas, _S.menu.charts .. " " .. (world.year + 1999), x + 210, y + 30, 200, 0) font:draw(canvas, _S.high_score.categories.money, x + 140, y + 98, 170, 0) font:draw(canvas, _S.high_score.categories.salary, x + 328, y + 98, 170, 0) font:draw(canvas, _S.high_score.categories.cures, x + 140, y + 205, 170, 0) font:draw(canvas, _S.high_score.categories.deaths, x + 328, y + 205, 170, 0) font:draw(canvas, _S.high_score.categories.visitors, x + 140, y + 310, 170, 0) font:draw(canvas, _S.high_score.categories.total_value, x + 328, y + 310, 170, 0) -- TODO: Add possibility to right align text. -- Helper function to find where the person is in the array. -- TODO: This whole sorting thing, it should be possible to do it in a better way? local getindex = function(tablename, val) local i = 0 local index for ind, value in ipairs(tablename) do if value == val then if not index then index = ind end i = i + 1 end end return index, i end local row_y = 128 local row_dy = 15 local col_x = 190 local row_no_y = 106 local dup_money = 0 local dup_salary = 0 local dup_cures = 0 local dup_deaths = 0 local dup_visitors = 0 local dup_value = 0 for _, player in ipairs(world.hospitals) do local name = player.name -- Most Money local index_m, dup_m = getindex(self.money_sort, self.money[name]) -- index_* is the returned value of the sorted place for this player. -- However there might be many players with the same value, so each iteration a -- duplicate has been found, one additional row lower is the right place to be. font:draw(canvas, name:upper(), x + 140, y + row_y + row_dy * (index_m - 1) + row_dy * dup_money) font:draw(canvas, self.money[name], x + 240, y + row_y + row_dy * (index_m - 1) + row_dy * dup_money, 70, 0, "right") -- Highest Salary local index_s, dup_s = getindex(self.salary_sort, self.salary[name]) font:draw(canvas, name:upper(), x + 140 + col_x, y + row_y + row_dy * (index_s - 1) + row_dy * dup_salary) font:draw(canvas, self.salary[name], x + 240 + col_x, y + row_y + row_dy * (index_s - 1) + row_dy * dup_salary, 70, 0, "right") -- Most Cures local index_c, dup_c = getindex(self.cures_sort, self.cures[name]) font:draw(canvas, name:upper(), x + 140, y + row_y + row_no_y + row_dy * (index_c - 1) + row_dy * dup_cures) font:draw(canvas, self.cures[name], x + 240, y + row_y + row_no_y + row_dy * (index_c - 1) + row_dy * dup_cures, 70, 0, "right") -- Most Deaths local index_d, dup_d = getindex(self.deaths_sort, self.deaths[name]) font:draw(canvas, name:upper(), x + 140 + col_x, y + row_y + row_no_y + row_dy * (index_d - 1) + row_dy * dup_deaths) font:draw(canvas, self.deaths[name], x + 240 + col_x, y + row_y + row_no_y + row_dy * (index_d - 1) + row_dy * dup_deaths, 70, 0, "right") -- Most Visitors local index_v, dup_v = getindex(self.visitors_sort, self.visitors[name]) font:draw(canvas, name:upper(), x + 140, y + row_y + row_no_y * 2 + row_dy * (index_v - 1) + row_dy * dup_visitors) font:draw(canvas, self.visitors[name], x + 240, y + row_y + row_no_y * 2 + row_dy * (index_v - 1) + row_dy * dup_visitors, 70, 0, "right") -- Highest Value local index_v2, dup_v2 = getindex(self.value_sort, self.value[name]) font:draw(canvas, name:upper(), x + 140 + col_x, y + row_y + row_no_y * 2 + row_dy * (index_v2 - 1) + row_dy * dup_value) font:draw(canvas, self.value[name], x + 240 + col_x, y + row_y + row_no_y * 2 + row_dy * (index_v2 - 1) + row_dy * dup_value, 70, 0, "right") if dup_m > 1 then dup_money = dup_money + 1 else dup_money = 0 end if dup_s > 1 then dup_salary = dup_salary + 1 else dup_salary = 0 end if dup_c > 1 then dup_cures = dup_cures + 1 else dup_cures = 0 end if dup_d > 1 then dup_deaths = dup_deaths + 1 else dup_deaths = 0 end if dup_v > 1 then dup_visitors = dup_visitors + 1 else dup_visitors = 0 end if dup_v2 > 1 then dup_value = dup_value + 1 else dup_value = 0 end end end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/bank_manager.lua000066400000000000000000000414201321660673500242750ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Bank manager (for loans / insurance companies) and bank statement fullscreen windows. class "UIBankManager" (UIFullscreen) ---@type UIBankManager local UIBankManager = _G["UIBankManager"] function UIBankManager:UIBankManager(ui) self:UIFullscreen(ui) local gfx = ui.app.gfx self.world = ui.app.world if not pcall(function() self.background = gfx:loadRaw("Bank01V", 640, 480) self.stat_background = gfx:loadRaw("Stat01V", 640, 480) local palette = gfx:loadPalette("QData", "Bank01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.panel_sprites = gfx:loadSpriteTable("QData", "Bank02V", true, palette) self.font = gfx:loadFont("QData", "Font36V", false, palette) -- The statistics font palette = gfx:loadPalette("QData", "Stat01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.stat_font = gfx:loadFont("QData", "Font37V", false, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end -- counters for the animations of the bank manager self.counter = 0 self.browsclk = 0 self.smilesclk = 0 self.eyesclk = 0 -- sprites for the animation self.smiles = self:addPanel(12, 303, 199) self.eyesblink = self:addPanel(7, 298, 173) self.browslift = self:addPanel(9, 296, 165) -- Button so that the user can click in the middle and get the statistics page and -- vice versa self.stat_button = self:addPanel(0, 230, 100) :makeButton(0, 0, 160, 300, 0, self.showStatistics) self.return_from_stat_button = self:addPanel(0, 0, 0) :makeButton(0, 0, 640, 440, 0, self.hideStatistics) self.return_from_stat_button.enabled = false -- Buttons -- The close button needs to be movable self.close_panel = self:addPanel(0, 607, 448) self.close_button = self.close_panel:makeButton(0, 0, 26, 26, 4, self.close):setTooltip(_S.tooltip.bank_manager.close) self:addPanel(0, 250, 390):makeButton(0, 0, 200, 50, 0, self.openTownMap):setTooltip(_S.tooltip.toolbar.town_map) self:addPanel(0, 192, 265):makeButton(0, 0, 21, 21, 6, self.increaseLoan):setTooltip(_S.tooltip.bank_manager.borrow_5000) self:addPanel(0, 50, 265):makeButton(0, 0, 21, 21, 5, self.decreaseLoan):setTooltip(_S.tooltip.bank_manager.repay_5000) self.graph_buttons = { self:addPanel(0, 547, 157):makeButton(0, 0, 42, 23, 3, self.showGraph1):setTooltip(_S.tooltip.bank_manager.show_graph:format(self.ui.hospital.insurance[1])), self:addPanel(0, 547, 217):makeButton(0, 0, 42, 23, 3, self.showGraph2):setTooltip(_S.tooltip.bank_manager.show_graph:format(self.ui.hospital.insurance[2])), self:addPanel(0, 547, 277):makeButton(0, 0, 42, 23, 3, self.showGraph3):setTooltip(_S.tooltip.bank_manager.show_graph:format(self.ui.hospital.insurance[3])) } self.graph = self:addPanel(1, 417, 150) self.graph.visible = false self.graph.enabled = false self.return_from_graph_button = self:addPanel(0, 547, 277) self.return_from_graph_button:makeButton(0, 0, 42, 23, 2, self.returnFromGraph):setTooltip(_S.tooltip.bank_manager.graph_return) self.return_from_graph_button.visible = false self.return_from_graph_button.enabled = false self:makeTooltip(_S.tooltip.bank_manager.hospital_value, 60, 105, 203, 157) self:makeTooltip(_S.tooltip.bank_manager.balance, 60, 170, 203, 222) self:makeTooltip(_S.tooltip.bank_manager.current_loan, 60, 235, 203, 287) self:makeTooltip(_S.tooltip.bank_manager.interest_payment, 60, 300, 203, 352) local --[[persistable:insurance_tooltip_template]] function insurance_tooltip(i) return --[[persistable:insurance_tooltip]] function() if not self.graph.visible then return _S.tooltip.bank_manager.insurance_owed:format(self.ui.hospital.insurance[i]) end end end self:makeDynamicTooltip(insurance_tooltip(1), 430, 128, 589, 180) self:makeDynamicTooltip(insurance_tooltip(2), 430, 188, 589, 240) self:makeDynamicTooltip(insurance_tooltip(3), 430, 248, 589, 300) self:makeTooltip(_S.tooltip.bank_manager.inflation_rate, 430, 308, 589, 331) self:makeTooltip(_S.tooltip.bank_manager.interest_rate, 430, 337, 589, 360) -- TODO: Add the graphs end function UIBankManager:afterLoad(old, new) if old < 36 then -- adds the new variables for bank manager animation self.browsclk = 0 self.smilesclk = 0 self.eyesclk = 0 self.counter = 0 self.smiles = self:addPanel(12, 303, 199) self.eyesblink = self:addPanel(7, 298, 173) self.browslift = self:addPanel(9, 296, 165) end UIFullscreen.afterLoad(self, old, new) end --! Sum the values in the provided array. --!param t Array to sum. --!return (int) The sum of all values from the t array. local function sum(t) local total = 0 for _, entry in ipairs(t) do total = total + entry end return total end --! Animation function. function UIBankManager:onTick() self.counter = self.counter + 1 -- animate the eyes to blink local function animateEyes() self.eyesclk = self.eyesclk + 1 if self.eyesclk > 2 then self.eyesclk = 0 self.eyesblink.sprite_index = self.eyesblink.sprite_index + 1 if self.eyesblink.sprite_index > 8 then self.eyesblink.sprite_index = 7 end end end -- animate the eyebrows to raise and lower local function animateBrows() self.browsclk = self.browsclk + 1 if self.browsclk > 3 then self.browsclk = 0 self.browslift.sprite_index = self.browslift.sprite_index + 1 if self.browslift.sprite_index > 11 then self.browslift.sprite_index = 9 end end end -- animate the smile to frown and back again local function animateSmile() self.smilesclk = self.smilesclk + 1 if self.smilesclk > 3 then self.smilesclk = 0 self.smiles.sprite_index = self.smiles.sprite_index + 1 if self.smiles.sprite_index > 15 then self.smiles.sprite_index = 12 end end end -- counters to determine when to start and stop the animations -- two blinks if self.counter >= 24 and self.counter < 36 then animateEyes() -- one blink elseif self.counter >= 49 and self.counter < 55 then animateEyes() -- one blink elseif self.counter >= 70 and self.counter < 76 then animateEyes() -- up and down once elseif self.counter >= 88 and self.counter < 100 then animateBrows() -- smile elseif self.counter >= 132 and self.counter < 140 then animateSmile() -- two blinks elseif self.counter >= 164 and self.counter < 176 then animateEyes() -- one blink elseif self.counter >= 189 and self.counter < 195 then animateEyes() -- one blink elseif self.counter >= 219 and self.counter < 225 then animateEyes() -- brows up and down once elseif self.counter >= 248 and self.counter < 260 then animateBrows() --smiles elseif self.counter >= 272 and self.counter < 280 then animateSmile() -- brows up and down twice elseif self.counter >= 298 and self.counter < 322 then animateBrows() -- two blinks elseif self.counter >= 340 and self.counter < 352 then animateEyes() end -- reset the animation counter if self.counter > 420 then self.counter = 0 end end function UIBankManager:draw(canvas, x, y) local hospital = self.ui.hospital -- Either draw the statistics page or the normal bank page if self.showingStatistics then local font = self.stat_font self.stat_background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y -- Titles font:draw(canvas, _S.bank_manager.statistics_page.date, x + 44, y + 37, 65, 0) font:draw(canvas, _S.bank_manager.statistics_page.details, x + 125, y + 40, 230, 0) font:draw(canvas, _S.bank_manager.statistics_page.money_out, x + 373, y + 42, 70, 0) font:draw(canvas, _S.bank_manager.statistics_page.money_in, x + 449, y + 41, 70, 0) font:draw(canvas, _S.bank_manager.statistics_page.balance, x + 525, y + 40, 70, 0) -- Lua < 5.3 stored integer money amount in floating point values. -- Lua 5.3 introduced an integer representation, and started printing -- integer floating point numbers with a trailing .0 . -- -- As a result, CorsixTH games converted from earlier Lua versions print a -- trailing .0 in the bank manager window. The "math.floor" around all -- numbers printed below avoids that problem by converting to integer -- representation for Lua 5.3, and doing nothing in Lua < 5.3. -- Each transaction -- A for loop going backwards for no = 1, #hospital.transactions do local values = hospital.transactions[#hospital.transactions - no + 1] local current_y = no * 15 + y + 60 font:draw(canvas, _S.date_format.daymonth:format(values.day, values.month), x + 48, current_y) font:draw(canvas, values.desc, x + 129, current_y) if values.spend then font:draw(canvas, "$ " .. math.floor(values.spend), x + 377, current_y) else font:draw(canvas, "$ " .. math.floor(values.receive), x + 453, current_y) end font:draw(canvas, "$ " .. math.floor(values.balance), x + 529, current_y) end -- Summary font:draw(canvas, _S.bank_manager.statistics_page.current_balance, x + 373, y + 420, 140, 0) font:draw(canvas, "$ " .. hospital.balance, x + 526, y + 421, 70, 0) else local font = self.font self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y -- The left side font:draw(canvas, _S.bank_manager.hospital_value, x + 60, y + 109, 143, 0) font:draw(canvas, "$ " .. math.floor(hospital.value), x + 60, y + 139, 143, 0) font:draw(canvas, _S.bank_manager.balance, x + 60, y + 174, 143, 0) font:draw(canvas, "$ " .. math.floor(hospital.balance), x + 60, y + 204, 143, 0) font:draw(canvas, _S.bank_manager.current_loan, x + 60, y + 239, 143, 0) font:draw(canvas, "$ " .. math.floor(hospital.loan), x + 60, y + 269, 143, 0) font:draw(canvas, _S.bank_manager.interest_payment, x + 60, y + 305, 143, 0) local interest = math.floor(hospital.loan * hospital.interest_rate / 12) font:draw(canvas, "$ " .. interest, x + 60, y + 334, 143, 0) -- The right side font:draw(canvas, _S.bank_manager.insurance_owed, x + 430, y + 102, 158, 0) if self.graph.visible then font:draw(canvas, hospital.insurance[self.chosen_insurance], x + 430, y + 132, 158, 0) else font:draw(canvas, hospital.insurance[1], x + 430, y + 132, 158, 0) font:draw(canvas, "$ ".. math.floor(sum(hospital.insurance_balance[1])), x + 430, y + 162, 100, 0) font:draw(canvas, hospital.insurance[2], x + 430, y + 192, 158, 0) font:draw(canvas, "$ ".. math.floor(sum(hospital.insurance_balance[2])), x + 430, y + 222, 100, 0) font:draw(canvas, hospital.insurance[3], x + 430, y + 252, 158, 0) font:draw(canvas, "$ ".. math.floor(sum(hospital.insurance_balance[3])), x + 430, y + 282, 100, 0) end font:draw(canvas, _S.bank_manager.inflation_rate, x + 430, y + 312, 100, 0) font:draw(canvas, hospital.inflation_rate*100 .. " %", x + 550, y + 313, 38, 0) font:draw(canvas, _S.bank_manager.interest_rate, x + 430, y + 342, 100, 0) font:draw(canvas, hospital.interest_rate*100 .. " %", x + 550, y + 342, 38, 0) end end function UIBankManager:onMouseMove(x, y, ...) local ui = self.ui if x > 0 and x < 640 and y > 0 and y < 480 then if self.showingStatistics then ui:setCursor(ui.app.gfx:loadMainCursor("banksummary")) -- Set pie chart cursor else ui:setCursor(ui.app.gfx:loadMainCursor("bank")) -- Set dollar cursor end else ui:setCursor(ui.default_cursor) -- Return to default cursor end end function UIBankManager:close() local ui = self.ui ui:setCursor(ui.default_cursor) -- Return to default cursor UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end function UIBankManager:showStatistics(keep_cursor) if self.closed then return end self.ui:playSound("selectx.wav") -- close any open graphs if self.graph.visible then self:returnFromGraph() end self.showingStatistics = true self.return_from_stat_button.enabled = true self.stat_button.enabled = false -- hides the animated parts of the bank manager when viewing the statement self.smiles.visible = false self.eyesblink.visible = false self.browslift.visible = false -- The close button has been slightly moved. local panel = self.close_panel panel.x = panel.x - 6 panel.y = panel.y - 6 local btn = self.close_button btn.x = btn.x - 6 btn.y = btn.y - 6 -- Change tooltip to say that the statement screen is closed. btn:setTooltip(_S.tooltip.statement.close) -- Set pie chart cursor, unless coming here from right click on the dollar sign. if not keep_cursor then self.ui:setCursor(self.ui.app.gfx:loadMainCursor("banksummary")) end end function UIBankManager:hideStatistics() self.ui:playSound("selectx.wav") self.showingStatistics = false self.return_from_stat_button.enabled = false self.stat_button.enabled = true -- shows the animated parts of the bank manager when viewing the main screen self.smiles.visible = true self.eyesblink.visible = true self.browslift.visible = true -- resets the animation counter if the screen is switched to the statement and back self.counter = -1 -- return the close button again local panel = self.close_panel panel.x = panel.x + 6 panel.y = panel.y + 6 local btn = self.close_button btn.x = btn.x + 6 btn.y = btn.y + 6 -- Change the tooltip back btn:setTooltip(_S.tooltip.bank_manager.close) -- Set dollar cursor self.ui:setCursor(self.ui.app.gfx:loadMainCursor("bank")) end function UIBankManager:showGraph() self.ui:playSound("selectx.wav") self.graph:setTooltip(_S.tooltip.bank_manager.graph:format(self.ui.hospital.insurance[self.chosen_insurance])) self.graph.visible = true self.return_from_graph_button.visible = true self.return_from_graph_button.enabled = true for i = 1, 3 do self.graph_buttons[i].visible = false self.graph_buttons[i].enabled = false end end function UIBankManager:showGraph1() self.chosen_insurance = 1 self:showGraph() end function UIBankManager:showGraph2() self.chosen_insurance = 2 self:showGraph() end function UIBankManager:showGraph3() self.chosen_insurance = 3 self:showGraph() end function UIBankManager:returnFromGraph() self.ui:playSound("selectx.wav") self.graph.visible = false self.return_from_graph_button.visible = false self.return_from_graph_button.enabled = false for i = 1, 3 do self.graph_buttons[i].enabled = true self.graph_buttons[i].visible = true end end function UIBankManager:increaseLoan() local hospital = self.ui.hospital local max_loan = not self.world.free_build_mode and (math.floor((hospital.value * 0.33) / 5000) * 5000) + 10000 or 0 if hospital.loan + 5000 <= max_loan then local amount = self.ui.app.key_modifiers.ctrl and max_loan - hospital.loan or 5000 hospital.loan = hospital.loan + amount hospital:receiveMoney(amount, _S.transactions.bank_loan) self.ui:playSound("selectx.wav") else self.ui:playSound("Wrong2.wav") end end function UIBankManager:decreaseLoan() local hospital = self.ui.hospital local amount = 5000 if self.ui.app.key_modifiers.ctrl then -- Repay as much as possible in increments of 5000 if hospital.balance > 5000 then amount = math.min(hospital.loan, math.floor(hospital.balance / 5000) * 5000) end end if hospital.loan > 0 and hospital.balance >= amount then hospital.loan = hospital.loan - amount hospital:spendMoney(amount, _S.transactions.loan_repayment) self.ui:playSound("selectx.wav") else self.ui:playSound("Wrong2.wav") end end function UIBankManager:openTownMap() local dlg = UITownMap(self.ui) self.ui:addWindow(dlg) end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/drug_casebook.lua000066400000000000000000000356631321660673500245130ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Drug Casebook fullscreen window (view disease statistics and set prices). class "UICasebook" (UIFullscreen) ---@type UICasebook local UICasebook = _G["UICasebook"] function UICasebook:UICasebook(ui, disease_selection) self:UIFullscreen(ui) local gfx = ui.app.gfx if not pcall(function() self.background = gfx:loadRaw("DrugN01V", 640, 480) local palette = gfx:loadPalette("QData", "DrugN01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.panel_sprites = gfx:loadSpriteTable("QData", "DrugN02V", true, palette) self.title_font = gfx:loadFont("QData", "Font25V", false, palette) self.selected_title_font = gfx:loadFont("QData", "Font26V", false, palette) self.drug_font = gfx:loadFont("QData", "Font24V", false, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end self.hospital = ui.hospital self.casebook = self.hospital.disease_casebook self:updateDiseaseList() -- Buttons self:addPanel(0, 607, 449):makeButton(0, 0, 26, 26, 3, self.close):setTooltip(_S.tooltip.casebook.close) self:addPanel(0, 439, 29):makeRepeatButton(0, 0, 70, 46, 1, self.scrollUp):setTooltip(_S.tooltip.casebook.up) self:addPanel(0, 437, 394):makeRepeatButton(0, 0, 77, 53, 2, self.scrollDown):setTooltip(_S.tooltip.casebook.down) self:addPanel(0, 354, 133):makeRepeatButton(0, 0, 22, 22, 5, self.increasePay):setTooltip(_S.tooltip.casebook.increase) self:addPanel(0, 237, 133):makeRepeatButton(0, 0, 22, 22, 4, self.decreasePay):setTooltip(_S.tooltip.casebook.decrease) self:addPanel(0, 235, 400):makeButton(0, 0, 140, 20, 0, self.concentrateResearch) :setTooltip(_S.tooltip.casebook.research) -- Hotkeys self:addKeyHandler("up", self.scrollUp) self:addKeyHandler("down", self.scrollDown) self:addKeyHandler("right", self.increasePay) self:addKeyHandler("left", self.decreasePay) -- Icons representing cure effectiveness and other important information. self.machinery = self:addPanel(6, 306, 352):setTooltip(_S.tooltip.casebook.cure_type.machine) self.machinery.visible = false self.drug = self:addPanel(7, 306, 352):setDynamicTooltip(--[[persistable:casebook_drug_tooltip]] function() return _S.tooltip.casebook.cure_type.drug_percentage:format(self.casebook[self.selected_disease].cure_effectiveness) end) self.drug.visible = false self.surgery = self:addPanel(8, 306, 352):setTooltip(_S.tooltip.casebook.cure_type.surgery) self.surgery.visible = false self.unknown = self:addPanel(9, 306, 352):setTooltip(_S.tooltip.casebook.cure_type.unknown) self.unknown.visible = false self.psychiatry = self:addPanel(10, 306, 352):setTooltip(_S.tooltip.casebook.cure_type.psychiatrist) self.psychiatry.visible = false self.curable = self:addPanel(11, 335, 352):setTooltip(_S.tooltip.casebook.cure_requirement.possible) self.curable.visible = false self.not_curable = self:addPanel(12, 335, 352):setTooltip(_S.tooltip.casebook.cure_requirement.not_possible) -- TODO: split up in more specific requirements self.not_curable.visible = false self.percentage_counter = false -- Counter for displaying cure price percentage for a certain time before switching to price. self:makeTooltip(_S.tooltip.casebook.reputation, 249, 72, 362, 117) self:makeTooltip(_S.tooltip.casebook.treatment_charge, 249, 117, 362, 161) self:makeTooltip(_S.tooltip.casebook.earned_money, 247, 161, 362, 205) self:makeTooltip(_S.tooltip.casebook.cured, 247, 205, 362, 249) self:makeTooltip(_S.tooltip.casebook.deaths, 247, 249, 362, 293) self:makeTooltip(_S.tooltip.casebook.sent_home, 247, 293, 362, 337) if disease_selection then self:selectDisease(disease_selection) else self.selected_index = #self.names_sorted self.selected_disease = self.names_sorted[self.selected_index] self:updateIcons() end end function UICasebook:close() UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end --! The diseases list has been changed, update the list. function UICasebook:updateDiseaseList() -- A sorted list of known diseases and pseudo diseases. -- Used to be able to list the diseases in, believe it or not, -- alphabetical order. self.names_sorted = {} for n, value in pairs(self.casebook) do if value.discovered then self.names_sorted[#self.names_sorted + 1] = n end end table.sort(self.names_sorted, function(d1, d2) local c1, c2 = self.casebook[d1], self.casebook[d2] if c1.pseudo ~= c2.pseudo then return c1.pseudo end return c1.disease.name:upper() < c2.disease.name:upper() end) if self.selected_disease then -- Re-select the current disease. self:selectDisease(self.selected_disease) end end --! Select a disease by name. --!param disease (string) Name of the disease function UICasebook:selectDisease(disease) for i = 1, #self.names_sorted do if disease == self.names_sorted[i] then self.selected_index = i self.selected_disease = self.names_sorted[self.selected_index] break end end self:updateIcons() end --! Function that is called when a new entry is selected in some way --! It updates all icons etc. that react to what is selected function UICasebook:updateIcons() local disease = self.selected_disease local hosp = self.hospital local world = hosp.world local known = true -- Curable / not curable icons and their tooltip if self.casebook[disease].pseudo then self.curable.visible = false self.not_curable.visible = false else local req = hosp:checkDiseaseRequirements(disease) if not req then self.curable.visible = true self.not_curable.visible = false else self.curable.visible = false self.not_curable.visible = true -- Strings for the tooltip local research = false local build = false local staff = false -- Room requirements if #req.rooms > 0 then for _, room_id in ipairs(req.rooms) do -- Not researched yet? if not hosp.discovered_rooms[world.available_rooms[room_id]] then known = false research = (research and (research .. ", ") or " (") .. TheApp.rooms[room_id].name end -- Researched, but not built. TODO: maybe make this an else clause to not oversize the tooltip that much build = (build and (build .. ", ") or " (") .. TheApp.rooms[room_id].name end end research = research and (_S.tooltip.casebook.cure_requirement.research_machine .. research .. "). ") or "" build = build and (_S.tooltip.casebook.cure_requirement.build_room .. build .. "). ") or "" local staffclass_to_string = { Nurse = _S.staff_title.nurse, Doctor = _S.staff_title.doctor, Surgeon = _S.staff_title.surgeon, Psychiatrist = _S.staff_title.psychiatrist, Researcher = _S.staff_title.researcher, } -- Staff requirements for sclass, amount in pairs(req.staff) do staff = (staff and (staff .. ", ") or " (") .. staffclass_to_string[sclass] .. ": " .. amount end staff = staff and (_S.tooltip.casebook.cure_requirement.hire_staff .. staff .. "). ") or "" self.not_curable:setTooltip(research .. build .. staff) end end self.unknown.visible = not known self.drug.visible = known and not not self.casebook[disease].drug self.machinery.visible = known and not not self.casebook[disease].machine and not self.casebook[disease].pseudo self.psychiatry.visible = known and not not self.casebook[disease].psychiatrist self.surgery.visible = known and not not self.casebook[disease].surgeon self.ui:updateTooltip() -- for the case that mouse is hovering over icon while player scrolls through list with keys self.percentage_counter = 50 end function UICasebook:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local titles = self.title_font local book = self.casebook local disease = self.selected_disease local selected = self.selected_index -- All titles titles:draw(canvas, _S.casebook.reputation, x + 278, y + 68) titles:draw(canvas, _S.casebook.treatment_charge, x + 260, y + 113) titles:draw(canvas, _S.casebook.earned_money, x + 265, y + 157) titles:draw(canvas, _S.casebook.cured, x + 276, y + 201) titles:draw(canvas, _S.casebook.deaths, x + 279, y + 245) titles:draw(canvas, _S.casebook.sent_home, x + 270, y + 289) titles:draw(canvas, _S.casebook.cure, x + 255, y + 354) -- Specific disease information if self.hospital:canConcentrateResearch(disease) then if book[disease].concentrate_research then -- Concentrate research self.selected_title_font:draw(canvas, _S.casebook.research, x + 245, y + 398) else titles:draw(canvas, _S.casebook.research, x + 245, y + 398) end end local rep = book[disease].reputation or self.hospital.reputation if rep < self.hospital.reputation_min then rep = self.hospital.reputation_min elseif rep > self.hospital.reputation_max then rep = self.hospital.reputation_max end titles:draw(canvas, rep, x + 248, y + 92, 114, 0) -- Reputation -- Treatment Charge is either displayed in percent, or normally local price_text = self.percentage_counter and ("%.0f%%"):format(book[disease].price * 100) or "$" .. self.hospital:getTreatmentPrice(disease) titles:draw(canvas, price_text, x + 262, y + 137, 90, 0) -- Treatment Charge titles:draw(canvas, "$" .. book[disease].money_earned, x + 248, y + 181, 114, 0) -- Money Earned titles:draw(canvas, book[disease].recoveries, x + 248, y + 225, 114, 0) -- Recoveries titles:draw(canvas, book[disease].fatalities, x + 248, y + 269, 114, 0) -- Fatalities titles:draw(canvas, book[disease].turned_away, x + 248, y + 313, 114, 0) -- Turned away -- Cure percentage if self.drug.visible then self.drug_font:draw(canvas, book[disease].cure_effectiveness, x + 313, y + 364, 16, 0) end -- Right-hand side list of diseases (and pseudo diseases) local index = 1 while selected - index > 0 and index <= 7 do titles:draw(canvas, book[self.names_sorted[selected - index]].disease.name:upper(), x + 409, y + 203 - index*18) index = index + 1 end self.selected_title_font:draw(canvas, book[disease].disease.name:upper(), x + 409, y + 227) index = 1 while index + selected <= #self.names_sorted and index <= 7 do titles:draw(canvas, book[self.names_sorted[index + selected]].disease.name:upper(), x + 409, y + 251 + index*18) index = index + 1 end end function UICasebook:scrollUp() if self.selected_index > 1 then if self.ui.app.key_modifiers.ctrl then self.selected_index = 1 else self.selected_index = self.selected_index - 1 end self.selected_disease = self.names_sorted[self.selected_index] self.ui:playSound("pagetur2.wav") else self.ui:playSound("Wrong2.wav") end self:updateIcons() end function UICasebook:scrollDown() if self.selected_index < #self.names_sorted then if self.ui.app.key_modifiers.ctrl then self.selected_index = #self.names_sorted else self.selected_index = self.selected_index + 1 end self.selected_disease = self.names_sorted[self.selected_index] self.ui:playSound("pagetur2.wav") else self.ui:playSound("Wrong2.wav") end self:updateIcons() end function UICasebook:increasePay() local price = self.casebook[self.selected_disease].price local amount = 0.01 if self.ui.app.key_modifiers.ctrl then amount = amount * 25 elseif self.ui.app.key_modifiers.shift then amount = amount * 5 end price = price + amount if price > 2 then price = 2 self.ui:playSound("Wrong2.wav") else self.ui:playSound("selectx.wav") end self.casebook[self.selected_disease].price = price self.percentage_counter = 50 end function UICasebook:decreasePay() local price = self.casebook[self.selected_disease].price local amount = 0.01 if self.ui.app.key_modifiers.ctrl then amount = amount * 25 elseif self.ui.app.key_modifiers.shift then amount = amount * 5 end price = price - amount if price < 0.5 then price = 0.5 self.ui:playSound("Wrong2.wav") else self.ui:playSound("selectx.wav") end self.casebook[self.selected_disease].price = price self.percentage_counter = 50 end function UICasebook:concentrateResearch() if self.hospital:canConcentrateResearch(self.selected_disease) then self.hospital.research:concentrateResearch(self.selected_disease) end end function UICasebook:onMouseDown(button, x, y) -- Normal window operations if outside the disease list if x < 395 or x > 540 or y < 77 or y > 394 then return UIFullscreen.onMouseDown(self, button, x, y) end local index_diff if y < 203 then index_diff = -7 + math.floor((y - 77) / 18) elseif y > 269 then index_diff = math.floor((y - 269) / 18) + 1 else return end -- Clicking on a disease name scrolls to the disease local new_index = self.selected_index + index_diff if new_index >= 1 and new_index <= #self.names_sorted then self.selected_index = new_index self.selected_disease = self.names_sorted[self.selected_index] self.ui:playSound("pagetur2.wav") self:updateIcons() end end function UICasebook:onMouseWheel(x, y) if not UIFullscreen.onMouseWheel(self, x, y) then if self:hitTest(self.cursor_x, self.cursor_y) then if y > 0 then self:scrollUp() return true else self:scrollDown() return true end end return false else return true end end function UICasebook:onTick() -- Decrease counter for showing percentage of cure price, if applicable if self.percentage_counter then self.percentage_counter = self.percentage_counter - 1 if self.percentage_counter <= 0 then self.percentage_counter = false end end return UIFullscreen.onTick(self) end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/fax.lua000066400000000000000000000254571321660673500224620ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UIFax" (UIFullscreen) ---@type UIFax local UIFax = _G["UIFax"] function UIFax:UIFax(ui, icon) self:UIFullscreen(ui) local gfx = ui.app.gfx self.background = gfx:loadRaw("Fax01V", 640, 480) local palette = gfx:loadPalette("QData", "Fax01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.panel_sprites = gfx:loadSpriteTable("QData", "Fax02V", true, palette) self.fax_font = gfx:loadFont("QData", "Font51V", false, palette) self.icon = icon self.message = icon.message or {} self.owner = icon.owner self.code = "" -- Add choice buttons local choices = self.message.choices self.choice_buttons = {} local orig_y = 175 if choices then for i = 1, #choices do local y = orig_y + ((i-1) + (3-#choices)) * 48 local choice = choices[i].choice -- NB: both nil and true result in enabled; also handle old "disabled" choice local enabled = (choices[i].enabled ~= false) and (choice ~= "disabled") local --[[persistable:fax_choice_button]] function callback() self:choice(i) end self.choice_buttons[i] = self:addPanel(17, 492, y):makeButton(0, 0, 43, 43, 18, callback) :setDisabledSprite(19):enable(enabled) end end -- Close button self:addPanel(0, 598, 440):makeButton(0, 0, 26, 26, 16, self.close):setTooltip(_S.tooltip.fax.close) self:addPanel(0, 471, 349):makeButton(0, 0, 87, 20, 14, self.cancel) -- Cancel code button self:addPanel(0, 474, 372):makeButton(0, 0, 91, 27, 15, self.validate) -- Validate code button self:addPanel(0, 168, 348):makeButton(0, 0, 43, 10, 1, self.correct) -- Correction button local function button(char) return --[[persistable:fax_button]] function() self:appendNumber(char) end end self:addPanel(0, 220, 348):makeButton(0, 0, 43, 10, 2, button("1")):setSound("Fax_1.wav") self:addPanel(0, 272, 348):makeButton(0, 0, 44, 10, 3, button("2")):setSound("Fax_2.wav") self:addPanel(0, 327, 348):makeButton(0, 0, 43, 10, 4, button("3")):setSound("Fax_3.wav") self:addPanel(0, 219, 358):makeButton(0, 0, 44, 10, 5, button("4")):setSound("Fax_4.wav") self:addPanel(0, 272, 358):makeButton(0, 0, 43, 10, 6, button("5")):setSound("Fax_5.wav") self:addPanel(0, 326, 358):makeButton(0, 0, 44, 10, 7, button("6")):setSound("Fax_6.wav") self:addPanel(0, 218, 370):makeButton(0, 0, 44, 11, 8, button("7")):setSound("Fax_7.wav") self:addPanel(0, 271, 370):makeButton(0, 0, 44, 11, 9, button("8")):setSound("Fax_8.wav") self:addPanel(0, 326, 370):makeButton(0, 0, 44, 11, 10, button("9")):setSound("Fax_9.wav") self:addPanel(0, 217, 382):makeButton(0, 0, 45, 12, 11, button("*")) self:addPanel(0, 271, 382):makeButton(0, 0, 44, 11, 12, button("0")):setSound("Fax_0.wav") self:addPanel(0, 326, 382):makeButton(0, 0, 44, 11, 13, button("#")) end function UIFax:updateChoices() local choices = self.message.choices for i, button in ipairs(self.choice_buttons) do -- NB: both nil and true result in enabled; also handle old "disabled" choice local enabled = (choices[i].enabled ~= false) and (choices[i].choice ~= "disabled") button:enable(enabled) end end function UIFax:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y if self.message then local last_y = y + 40 for _, message in ipairs(self.message) do last_y = self.fax_font:drawWrapped(canvas, message.text, x + 190, last_y + (message.offset or 0), 330, "center") end local choices = self.message.choices if choices then local orig_y = y + 190 for i = 1, #choices do last_y = orig_y + ((i - 1) + (3 - #choices)) * 48 self.fax_font:drawWrapped(canvas, choices[i].text, x + 190, last_y + (choices[i].offset or 0), 300) end end end end --A choice was made for the fax. --!param choice_number (integer) Number of the choice function UIFax:choice(choice_number) local choices = self.message.choices local choice, additionalInfo if choices and choice_number >= 1 and choice_number <= #choices then choice = choices[choice_number].choice additionalInfo = choices[choice_number].additionalInfo else choice = "disabled" additionalInfo = nil end local owner = self.owner if owner then -- A choice was made, the patient is no longer waiting for a decision owner:setMood("patient_wait", "deactivate") owner.message_callback = nil if choice == "send_home" then owner:goHome("kicked") if owner.diagnosed then -- No treatment rooms owner:updateDynamicInfo(_S.dynamic_info.patient.actions.no_treatment_available) else -- No diagnosis rooms owner:updateDynamicInfo(_S.dynamic_info.patient.actions.no_diagnoses_available) end elseif choice == "wait" then -- Wait two months before going home owner.waiting = 60 if owner.diagnosed then -- Waiting for treatment room owner:updateDynamicInfo(_S.dynamic_info.patient.actions.waiting_for_treatment_rooms) else -- Waiting for diagnosis room owner:updateDynamicInfo(_S.dynamic_info.patient.actions.waiting_for_diagnosis_rooms) end elseif choice == "guess_cure" then owner:setDiagnosed() if owner:agreesToPay(owner.disease.id) then owner:setNextAction(SeekRoomAction(owner.disease.treatment_rooms[1]):enableTreatmentRoom()) else owner:goHome("over_priced", owner.disease.id) end elseif choice == "research" then owner:setMood("idea", "activate") owner:setNextAction(SeekRoomAction("research")) end end local vip_ignores_refusal = math.random(1, 2) if choice == "accept_emergency" then self.ui.app.world:newObject("helicopter", self.ui.hospital, "north") self.ui:addWindow(UIWatch(self.ui, "emergency")) self.ui:playAnnouncement(self.ui.hospital.emergency.disease.emergency_sound) self.ui.adviser:say(_A.information.emergency) elseif choice == "refuse_emergency" then self.ui.app.world:nextEmergency() -- VIP may choose to visit anyway if he is refused too often elseif (self.ui.hospital.vip_declined > 2 and vip_ignores_refusal == 2) and choice == "refuse_vip" then self.ui.hospital.num_vips = self.ui.hospital.num_vips + 1 self.ui.app.world:spawnVIP(additionalInfo.name) self.ui.hospital.vip_declined = 0 elseif choice == "refuse_vip" then self.ui.app.world:nextVip() -- don't start an inspection self.ui.hospital.vip_declined = self.ui.hospital.vip_declined + 1 elseif choice == "accept_vip" then self.ui.hospital.num_vips = self.ui.hospital.num_vips + 1 self.ui.app.world:spawnVIP(additionalInfo.name) elseif choice == "declare_epidemic" then local epidemic = self.ui.hospital.epidemic if epidemic then epidemic:resolveDeclaration() end elseif choice == "cover_up_epidemic" then local epidemic = self.ui.hospital.epidemic if epidemic then epidemic:startCoverUp() end elseif choice == "accept_new_level" then -- Set the new salary. self.ui.hospital.player_salary = self.ui.hospital.salary_offer if tonumber(self.ui.app.world.map.level_number) then self.ui.app:loadLevel(self.ui.app.world.map.level_number + 1, self.ui.app.map.difficulty) else for i, level in ipairs(self.ui.app.world.campaign_info.levels) do if self.ui.app.world.map.level_number == level then local next_level = self.ui.app.world.campaign_info.levels[i + 1] local level_info, _ = self.ui.app:readLevelFile(next_level) if level_info then self.ui.app:loadLevel(next_level, nil, level_info.name, level_info.map_file, level_info.briefing) break end end end end elseif choice == "return_to_main_menu" then self.ui.app.moviePlayer:playWinMovie() self.ui.app:loadMainMenu() end self.icon:removeMessage() self:close() end function UIFax:cancel() self.code = "" end function UIFax:correct() if self.code ~= "" then self.code = string.sub(self.code, 1, -2) --Remove last character end end function UIFax:validate() if self.code == "" then return end local code = self.code self.code = "" local code_n = (tonumber(code) or 0) / 10^5 local x = math.abs((code_n ^ 5.00001 - code_n ^ 5) * 10^5 - code_n ^ 5) print("Code typed on fax:", code) if code == "24328" then -- Original game cheat code self.ui.adviser:say(_A.cheats.th_cheat) self.ui:addWindow(UICheats(self.ui)) elseif code == "112" then -- simple, unobfuscated cheat for everyone :) self.ui:playAnnouncement("rand*.wav") elseif 27868.3 < x and x < 27868.4 then -- Roujin's challenge cheat local hosp = self.ui.hospital if not hosp.spawn_rate_cheat then self.ui.adviser:say(_A.cheats.roujin_on_cheat) hosp.spawn_rate_cheat = true else self.ui.adviser:say(_A.cheats.roujin_off_cheat) hosp.spawn_rate_cheat = nil end else -- no valid cheat entered self.ui:playSound("fax_no.wav") return end self.ui:playSound("fax_yes.wav") -- TODO: Other cheats (preferably with slight obfuscation, as above) end function UIFax:appendNumber(number) self.code = self.code .. number end function UIFax:close() local world = self.ui.app.world self.icon.fax = nil self.icon:adjustToggle() UIFullscreen.close(self) if world and world:isCurrentSpeed("Pause") then world:setSpeed(world.prev_speed) end end function UIFax:afterLoad(old, new) UIFullscreen.afterLoad(self, old, new) if old < 59 then -- self.choice_buttons added, changes to disabled buttons. -- Since it's hard to add retroactively, just close any opened fax window. self:close() end end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/graphs.lua000066400000000000000000000412311321660673500231540ustar00rootroot00000000000000--[[ Copyright (c) 2011 Ted "IntelOrca" John 2013 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Charts fullscreen window class "UIGraphs" (UIFullscreen) ---@type UIGraphs local UIGraphs = _G["UIGraphs"] local TH = require "TH" -- These values are based on the background colours of the pen symbols local colours = { money_in = {182, 32, 16}, money_out = {215, 81, 8}, wages = {194, 162, 0}, balance = {28, 138, 36}, visitors = {0, 101, 198}, cures = {36, 40, 154}, deaths = {130, 0, 178}, reputation = {215, 12, 101} } function UIGraphs:UIGraphs(ui) self:UIFullscreen(ui) local gfx = ui.app.gfx if not pcall(function() self.background = gfx:loadRaw("Graph01V", 640, 480) local palette = gfx:loadPalette("QData", "Graph01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.panel_sprites = gfx:loadSpriteTable("QData", "Graph02V", true, palette) self.white_font = gfx:loadFont("QData", "Font01V", false, palette) self.black_font = gfx:loadFont("QData", "Font00V", false, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end self.hospital = ui.hospital -- Buttons self:addPanel(0, 63, 384):makeButton(0, 0, 26, 26, 3, self.close):setTooltip(_S.tooltip.graphs.close) -- The possible scales are: -- 1: Increments of four years per line -- 2: Increments of one year per line -- 3: Increments of one month per line self.graph_scale = 3 self.graph_scale_panel = self:addPanel(0, 371, 384) self.graph_scale_button = self.graph_scale_panel:makeButton(0, 0, 65, 26, 2, self.toggleGraphScale):setTooltip(_S.tooltip.graphs.scale) self.hide_graph = {} local function buttons(name) return --[[persistable:graphs_button]] function() self:toggleGraph(name) end end self.graph_buttons = { self:addPanel(0, 590, 34):makeToggleButton(0, 0, 42, 42, 1, buttons("money_in")):setTooltip(_S.tooltip.graphs.money_in), self:addPanel(0, 590, 86):makeToggleButton(0, 0, 42, 42, 1, buttons("money_out")):setTooltip(_S.tooltip.graphs.money_out), self:addPanel(0, 590, 138):makeToggleButton(0, 0, 42, 42, 1, buttons("wages")):setTooltip(_S.tooltip.graphs.wages), self:addPanel(0, 590, 190):makeToggleButton(0, 0, 42, 42, 1, buttons("balance")):setTooltip(_S.tooltip.graphs.balance), self:addPanel(0, 590, 243):makeToggleButton(0, 0, 42, 42, 1, buttons("visitors")):setTooltip(_S.tooltip.graphs.visitors), self:addPanel(0, 590, 295):makeToggleButton(0, 0, 42, 42, 1, buttons("cures")):setTooltip(_S.tooltip.graphs.cures), self:addPanel(0, 590, 347):makeToggleButton(0, 0, 42, 42, 1, buttons("deaths")):setTooltip(_S.tooltip.graphs.deaths), self:addPanel(0, 590, 400):makeToggleButton(0, 0, 42, 42, 1, buttons("reputation")):setTooltip(_S.tooltip.graphs.reputation) } self:updateLines() end local TOP_Y = 85 -- Top of the graph area local BOTTOM_Y = 353 -- Bottom of the graph area local RIGHT_X = 346 -- Right side of the graph area local VERT_DX = 25 -- Spacing between the vertical lines in the graph local VERT_COUNT = 12 -- Number of vertical lines in the graph local GRAPH_HEIGHT = BOTTOM_Y - TOP_Y --! Compute the vertical position of a value in the graph given the line extremes --!param graph_line (table) Meta data of the line, including extreme values. --!param value (number) Value to position vertically in the graph. --!return Y position in the graph of the value. local function computeVerticalValuePosition(graph_line, value) -- 0 is always included in the range. assert(graph_line.maximum >= 0 and graph_line.minimum <= 0) local range = graph_line.maximum - graph_line.minimum if range == 0 then return BOTTOM_Y end return BOTTOM_Y - math.floor(((value - graph_line.minimum) / range) * GRAPH_HEIGHT) end --! Convert graph scale to a stepsize in months. --!param graph_scale (int, 1 to 3) Graph scale to display. --!return Number of months to jump between statistics values in the hospital statistics data. local function getStatisticsStepsize(graph_scale) local stepsize = 4 * 12 -- Four years if graph_scale == 2 then stepsize = 12 -- One year elseif graph_scale == 3 then stepsize = 1 -- A month end return stepsize end --! Get the statistics from the hospital that should be displayed. --! Selection starts at the last (=newest) entry, and goes back in time. --!return The values of all statistics to plot in the graph display. function UIGraphs:getHospitalStatistics() local statistics = self.hospital.statistics local values = {} local i = #statistics -- Picking hospital statistics from right to left (recent to old). local stats_stepsize = getStatisticsStepsize(self.graph_scale) while #values < VERT_COUNT and i >= 1 do values[#values + 1] = statistics[i] i = i - stats_stepsize end return values end --! Reposition the given sequence of text entries vertically such that the maximum -- absolute deviation from the ideal position is minimized. --!param label_datas (array) Text entries --!param start_index (int) First entry to move. --!param last_index (int) Last entry to move. local function moveSequence(label_datas, start_index, last_index) -- min_y, max_y Smallest and biggest vertical position of the labels. Since -- they are sorted on y, it's the position of the first and last visible entry. -- min_y_shift, max_y_shift Vertical movement of the label of the first and -- last visible entry for vertically centering the text. -- min_dev, max_dev Smallest and biggest deviation from the optimal position, -- for all visible labels. local min_y = nil local max_y, min_y_shift, max_y_shift, min_dev, max_dev for i = start_index, last_index do local label = label_datas[i] if label.pos_y then -- Label is visible local deviation = label.pos_y - label.ideal_y -- Positive if moved down if min_y then -- Updating the max y, and deviations max_y = label.pos_y max_y_shift = label.shift_y min_dev = math.min(min_dev, deviation) max_dev = math.max(max_dev, deviation) else -- First time entering the loop min_y = label.pos_y max_y = label.pos_y min_y_shift = label.shift_y max_y_shift = label.shift_y min_dev = deviation max_dev = deviation end end end -- There should be at least one visible entry in the provided range. assert(min_y ~= nil) local move = -math.floor((max_dev + min_dev) / 2) -- Suggested movement of the sequence. -- Verify the sequence will stay inside graph upper and lower limits, adjust otherwise. if min_y + min_y_shift + move < TOP_Y then move = TOP_Y - min_y - min_y_shift elseif max_y + max_y_shift + move > BOTTOM_Y then move = BOTTOM_Y - max_y - max_y_shift end -- And update the positions. for i = start_index, last_index do local label = label_datas[i] if label.pos_y then label.pos_y = label.pos_y + move end end end --! Compute new actual position of the labels. --!param graph (UIGraphs) Graph window object local function updateTextPositions(graph) -- Reset vertical position of the text back to its ideal position. -- Disable computations on invisible graphs by removing the actual y position of it. for _, label in ipairs(graph.label_datas) do if graph.hide_graph[label.stat] then label.pos_y = nil else label.pos_y = label.ideal_y end end -- Move labels of the graphs such that they stay at the right of the graph -- between their upper and lower boundaries. local sequence_moved = true local collision_count = 8 -- In theory the loop should terminate, but better safe than sorry. while sequence_moved and collision_count > 0 do collision_count = collision_count - 1 sequence_moved = false -- Find sequences of text entries that partly overlap or have no vertical -- space between them. Entries in such a sequence cannot be moved -- individually, the sequence as a whole must move. local start_index, last_index = nil, nil -- Start and end of the sequence. local collision = false -- True collision detected in the sequence local prev_index, prev_label = nil, nil for i, label in ipairs(graph.label_datas) do if label.pos_y then -- Label is visible if prev_label then -- Bottom y of previous label, top of current label local bottom_prev = prev_label.pos_y + prev_label.shift_y + prev_label.size_y local top_current = label.pos_y + label.shift_y if top_current < bottom_prev then -- True collision, text has to move collision = true sequence_moved = true label.pos_y = bottom_prev - label.shift_y if not start_index then start_index = prev_index end last_index = i elseif top_current == bottom_prev then -- Entry is concatenated to the sequence, position is fine. if not start_index then start_index = prev_index end last_index = i else -- Entry is not part of the sequence, move previous sequence to its -- optimal spot if required if collision then moveSequence(graph.label_datas, start_index, last_index) end collision = false start_index = nil last_index = nil -- Do not consider the current text in this round. The next entry may -- see it as the start of a next sequence. end end prev_label = label prev_index = i end end if collision then moveSequence(graph.label_datas, start_index, last_index) end end end function UIGraphs:updateLines() self.values = self:getHospitalStatistics() -- Construct meta data about each graph line. local graph_datas = {} -- Table ordered by statistics name. self.graph_datas = graph_datas for stat, _ in pairs(self.values[1]) do graph_datas[stat] = {line = nil, maximum = 0, minimum = 0} end -- Decide maximum and minimum for normalisation of each line. -- 0 is always included in the computed range. for _, stats in ipairs(self.values) do for stat, value in pairs(stats) do if value < graph_datas[stat].minimum then graph_datas[stat].minimum = value end if value > graph_datas[stat].maximum then graph_datas[stat].maximum = value end end end -- Add the line objects of the graph. for stat, graph_data in pairs(self.graph_datas) do local line = TH.line() line:setWidth(2) local hue = colours[stat] line:setColour(hue[1], hue[2], hue[3], 255) graph_data.line = line end -- Add the graph line pieces. Doing this separately is more efficient as all -- graph lines can be extended to the left in the same iteration. local xpos = RIGHT_X for i, stats in ipairs(self.values) do for stat, value in pairs(stats) do local line = graph_datas[stat].line local ypos = computeVerticalValuePosition(graph_datas[stat], value) if i == 1 then line:moveTo(xpos, ypos) else line:lineTo(xpos, ypos) end end xpos = xpos - VERT_DX end -- Compute label data for each statistic, and order by vertical position. -- The newest statistic values are displayed at the right edge of the graph, -- which decides the optimal position of the graph label text and value. local label_datas = {} self.label_datas = label_datas for stat, value in pairs(self.values[1]) do local ideal_y = computeVerticalValuePosition(graph_datas[stat], value) local text = _S.graphs[stat] .. ":" local _, size_y, _ = self.black_font:sizeOf(text) label_datas[#label_datas + 1] = { stat = stat, -- Name of the statistic it belongs to. text = text, -- Translated label text. ideal_y = ideal_y, -- Ideal vertical position. pos_y = nil, -- Actual position for drawing. size_y = size_y, -- Vertical size of the text. shift_y = -math.floor(size_y / 2), -- Amount of shift to center the text. value = value} -- Numeric value to display. end -- Sort the labels of the graph on ideal y position, and compute actual position. local function compare(a,b) return a.ideal_y < b.ideal_y end table.sort(label_datas, compare) updateTextPositions(self) -- Create small lines going from the number of month name to the actual graph. -- Like the lines, index runs from right to left at the screen. local aux_lines = {} self.aux_lines = aux_lines xpos = RIGHT_X for _ = 1, #self.values do local line = TH.line() line:setWidth(1) line:moveTo(xpos, BOTTOM_Y + 2) line:lineTo(xpos, BOTTOM_Y + 8) aux_lines[#aux_lines + 1] = line xpos = xpos - VERT_DX end end function UIGraphs:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y self.white_font:draw(canvas, _S.graphs.money_in, x + 502, y + 41, 80, 27) self.white_font:draw(canvas, _S.graphs.money_out, x + 502, y + 93, 80, 27) self.white_font:draw(canvas, _S.graphs.wages, x + 502, y + 145, 80, 27) self.white_font:draw(canvas, _S.graphs.balance, x + 502, y + 197, 80, 27) self.white_font:draw(canvas, _S.graphs.visitors, x + 502, y + 249, 80, 27) self.white_font:draw(canvas, _S.graphs.cures, x + 502, y + 301, 80, 27) self.white_font:draw(canvas, _S.graphs.deaths, x + 502, y + 353, 80, 27) self.white_font:draw(canvas, _S.graphs.reputation, x + 502, y + 405, 80, 27) -- Draw the different lines for stat, graph in pairs(self.graph_datas) do if not self.hide_graph[stat] then graph.line:draw(canvas, x, y) end end -- Draw strings showing what values each entry has at the moment just to the right of the graph. -- TODO: These should be coloured according to the colour of the corresponding line. for _, label in pairs(self.label_datas) do if label.pos_y then local ypos = label.pos_y + label.shift_y self.black_font:draw(canvas, label.text, x + RIGHT_X + 3, y + ypos) self.black_font:draw(canvas, label.value, x + RIGHT_X + 60, y + ypos) end end local stats_stepsize = getStatisticsStepsize(self.graph_scale) local xpos = x + RIGHT_X -- Draw numbers (or month names) below the graph assert(#self.hospital.statistics > 0) -- Avoid negative months and years. if stats_stepsize >= 12 then -- Display years local year_number = math.floor((#self.hospital.statistics - 1) / 12) for i = 1, #self.values do self.black_font:drawWrapped(canvas, year_number, xpos, y + BOTTOM_Y + 10, 25, "center") xpos = xpos - VERT_DX year_number = year_number - math.floor(stats_stepsize / 12) -- And the small black line self.aux_lines[i]:draw(canvas, x, y) end else -- Display months local month_number = #self.hospital.statistics - math.floor((#self.hospital.statistics - 1) / 12) * 12 for i = 1, #self.values do self.black_font:drawWrapped(canvas, _S.months[month_number], xpos, y + BOTTOM_Y + 10, 25, "center") xpos = xpos - VERT_DX month_number = month_number - stats_stepsize if month_number < 1 then month_number = month_number + 12 end -- And the small black line self.aux_lines[i]:draw(canvas, x, y) end end end function UIGraphs:toggleGraphScale() self.graph_scale = self.graph_scale + 1 if self.graph_scale == 4 then self.graph_scale = 1 end self:updateLines() self.ui:playSound("selectx.wav") end function UIGraphs:toggleGraph(name) self.hide_graph[name] = not self.hide_graph[name] self.ui:playSound("selectx.wav") updateTextPositions(self) end function UIGraphs:close() UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end function UIGraphs:afterLoad(old, new) if old < 117 then self:close() end end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/hospital_policy.lua000066400000000000000000000217401321660673500250750ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Hospital policy fullscreen window (set staff tiredness and patient cure thresholds, etc.). class "UIPolicy" (UIFullscreen) ---@type UIPolicy local UIPolicy = _G["UIPolicy"] function UIPolicy:UIPolicy(ui, disease_selection) self:UIFullscreen(ui) local gfx = ui.app.gfx if not pcall(function() self.background = gfx:loadRaw("Pol01V", 640, 480) local palette = gfx:loadPalette("QData", "Pol01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.panel_sprites = gfx:loadSpriteTable("QData", "Pol02V", true, palette) self.label_font = gfx:loadFont("QData", "Font74V", false, palette) self.text_font = gfx:loadFont("QData", "Font105V", false, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end local hosp = ui.hospital self.hospital = hosp local --[[persistable:hospital_policy_allow_staff]] function allowStaff(name, state, btn) if name == "Allow" then if self.prohibit_button.toggled then -- Changing setting from prohibit to allow hosp.policies["staff_allowed_to_move"] = true self.prohibit_button:toggle() else -- Already allowed, toggle again self.allow_button:toggle() end else -- Clicking the prohibit button if self.allow_button.toggled then -- Changing setting from allow to prohibit hosp.policies["staff_allowed_to_move"] = false self.allow_button:toggle() else -- Already prohibited, toggle again self.prohibit_button:toggle() end end end -- Buttons self:addPanel(0, 607, 447):makeButton(0, 0, 26, 26, 6, self.close) :setTooltip(_S.tooltip.policy.close) self.allow_button = self:addPanel(0, 348, 379) :makeToggleButton(0, 0, 48, 17, 4, allowStaff, "Allow") :setTooltip(_S.tooltip.policy.staff_leave) -- Allow staff to move self.prohibit_button = self:addPanel(0, 395, 379) :makeToggleButton(0, 0, 48, 17, 5, allowStaff, "Prohibit") :setTooltip(_S.tooltip.policy.staff_stay) -- Prohibit staff to move if self.hospital.policies["staff_allowed_to_move"] then self.allow_button:toggle() else self.prohibit_button:toggle() end -- Slider positions local guess = 129 + math.floor(hosp.policies["guess_cure"] * 299) local home = 129 + math.floor(hosp.policies["send_home"] * 299) local stop = 124 + math.floor((hosp.policies["stop_procedure"] - 1) * 299) local staffroom = 149 + math.floor(hosp.policies["goto_staffroom"] * 250) -- Sliders self.sliders = {} self.sliders["guess_cure"] = self:addPanel(2, guess, 119, 82, 44) self.sliders["send_home"] = self:addPanel(1, home, 135, 82, 28) self.sliders["stop_procedure"] = self:addPanel(3, stop, 210, 92, 28) self.sliders["goto_staffroom"] = self:addPanel(3, staffroom, 285, 92, 28) self.sliders["guess_cure"].min_x = home self.sliders["guess_cure"].total_min_x = 129 -- Needed to get the correct value set when windows is closed. self.sliders["guess_cure"].max_x = 428 self.sliders["send_home"].min_x = 129 self.sliders["send_home"].max_x = guess self.sliders["send_home"].total_max_x = 428 self.sliders["stop_procedure"].min_x = 124 self.sliders["stop_procedure"].max_x = 423 self.sliders["stop_procedure"].addition = true -- This value goes from 1 to 2. self.sliders["goto_staffroom"].min_x = 149 self.sliders["goto_staffroom"].max_x = 399 -- Z order of the sliders. -- The small 'send_home' slider must be tested first in 'self:panelHit', -- to ensure it can always be moved, even if the big 'guess_cure' is at the -- same position. self.sliders_z = {self.sliders["send_home"], self.sliders["guess_cure"], self.sliders["stop_procedure"], self.sliders["goto_staffroom"]} -- Tooltips for slider bars self:makeTooltip(_S.tooltip.policy.diag_procedure, 161, 119, 479, 174) self:makeTooltip(_S.tooltip.policy.diag_termination, 161, 210, 479, 249) self:makeTooltip(_S.tooltip.policy.staff_rest, 161, 285, 479, 324) end function UIPolicy:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local text = self.text_font local label = self.label_font -- Labels on the panels local added_x = self.sliders["send_home"].x local added_y = self.sliders["send_home"].y label:draw(canvas, _S.policy.sliders.send_home, x + added_x, y + added_y + 2, 82, 0) added_x = self.sliders["guess_cure"].x added_y = self.sliders["guess_cure"].y label:draw(canvas, _S.policy.sliders.guess, x + added_x, y + added_y + 2, 82, 0) added_x = self.sliders["stop_procedure"].x added_y = self.sliders["stop_procedure"].y label:draw(canvas, _S.policy.sliders.stop, x + added_x, y + added_y + 2, 92, 0) added_x = self.sliders["goto_staffroom"].x added_y = self.sliders["goto_staffroom"].y label:draw(canvas, _S.policy.sliders.staff_room, x + added_x, y + added_y + 2, 92, 0) -- All other text text:draw(canvas, _S.policy.header, x + 160, y + 78, 300, 0) text:draw(canvas, _S.policy.diag_procedure, x + 161, y + 100) text:draw(canvas, _S.policy.diag_termination, x + 161, y + 181) text:draw(canvas, _S.policy.staff_rest, x + 161, y + 262) text:draw(canvas, _S.policy.staff_leave_rooms, x + 161, y + 374) end function UIPolicy:onMouseMove(x, y, dx, dy) local repaint = UIFullscreen.onMouseMove(self, x, y, dx, dy) if self.moving_panel then -- A slider is being moved. local p = self.moving_panel self.moved_x = self.moved_x + dx local new_x = self.moved_x + self.down_x - self.moving_panel.w / 2 - self.offset if new_x > p.min_x then if new_x < p.max_x then self.moving_panel.x = new_x self.position_x = new_x else self.moving_panel.x = self.moving_panel.max_x self.position_x = self.moving_panel.max_x end else self.moving_panel.x = self.moving_panel.min_x self.position_x = self.moving_panel.min_x end repaint = true end return repaint end function UIPolicy:onMouseDown(code, x, y) if code == "left" then self.moving_panel = self:panelHit(x, y) if self.moving_panel then self.down_x = x self.offset = x - (self.moving_panel.x + self.moving_panel.w / 2) self.moved_x = 0 self.position_x = self.moving_panel.x return true end end return UIFullscreen.onMouseDown(self, code, x, y) end function UIPolicy:onMouseUp(code, x, y) if self.moving_panel then if self.moving_panel == self.sliders["guess_cure"] then self.sliders["send_home"].max_x = self.position_x elseif self.moving_panel == self.sliders["send_home"] then self.sliders["guess_cure"].min_x = self.position_x end end self.moving_panel = nil return UIFullscreen.onMouseUp(self, code, x, y) end --! Detect which slider is clicked by the mouse. --!param x (int) X position of the mouse. --!param y (int) Y position of the mouse. --!return Slider that was detected at the given position, or nil function UIPolicy:panelHit(x, y) for _, panel in ipairs(self.sliders_z) do if x > panel.x and y > panel.y and x < panel.x + panel.w and y < panel.y + panel.h then return panel end end return nil end --! Close the window. function UIPolicy:close() -- Save new slider positions in the hospital policies again for the next use. for key, s in pairs(self.sliders or {}) do local divider = (s.total_max_x or s.max_x) - (s.total_min_x or s.min_x) local number = (s.addition and 1 or 0) self.hospital.policies[key] = number + (s.x - (s.total_min_x or s.min_x))/divider end UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end function UIPolicy:afterLoad(old, new) UIFullscreen.afterLoad(self, old, new) if old < 116 then -- Ensure panelHit tests the sliders in the right order. self.sliders_z = {self.sliders["send_home"], self.sliders["guess_cure"], self.sliders["stop_procedure"], self.sliders["goto_staffroom"]} end end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/progress_report.lua000066400000000000000000000220531321660673500251300ustar00rootroot00000000000000--[[ Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Progress Report fullscreen window (check level goals, competitors and alerts). class "UIProgressReport" (UIFullscreen) ---@type UIProgressReport local UIProgressReport = _G["UIProgressReport"] function UIProgressReport:UIProgressReport(ui) -- TODO: Refactor this file! self:UIFullscreen(ui) local world = self.ui.app.world local hospital = ui.hospital local gfx = ui.app.gfx if not pcall(function() local palette = gfx:loadPalette("QData", "Rep01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.background = gfx:loadRaw("Rep01V", 640, 480) self.red_font = gfx:loadFont("QData", "Font101V", false, palette) self.normal_font = gfx:loadFont("QData", "Font100V", false, palette) self.small_font = gfx:loadFont("QData", "Font106V") self.panel_sprites = gfx:loadSpriteTable("QData", "Rep02V", true, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end self.default_button_sound = "selectx.wav" -- Selected hospital number self.selected = 1 -- Add the icons for the criteria local x = 263 local world_goals = world.goals for _, tab in ipairs(world_goals) do local crit_name = world.level_criteria[tab.criterion].name local res_value = world_goals[crit_name].win_value world_goals[crit_name].visible = true -- Special case for money, subtract loans local cur_value = hospital[crit_name] if crit_name == "balance" then cur_value = cur_value - hospital.loan end if world_goals[crit_name].lose_value then world_goals[crit_name].red = false if cur_value < world_goals[crit_name].boundary then world_goals[crit_name].red = true res_value = world_goals[crit_name].lose_value -- TODO: Make the ugly workaround for the special case "percentage_killed" better if crit_name:find("killed") then res_value = nil world_goals[crit_name].visible = false end elseif not world_goals[crit_name].win_value then world_goals[crit_name].visible = false end end -- Only five criteria can be there at once. if crit_name:find("killed") and world.winning_goal_count > 5 then res_value = nil world_goals[crit_name].visible = false end if res_value then local tooltip if world.level_criteria[tab.criterion].formats == 2 then tooltip = _S.tooltip.status[crit_name]:format(math.floor(res_value), math.floor(cur_value)) else tooltip = _S.tooltip.status[crit_name]:format(math.floor(res_value)) end self:addPanel(world.level_criteria[tab.criterion].icon, x, 240) self:makeTooltip(tooltip, x, 180, x + 30, 180 + 90) x = x + 30 end end self:addPanel(0, 606, 447):makeButton(0, 0, 26, 26, 8, self.close):setTooltip(_S.tooltip.status.close) -- Own and competitor hospital buttons local function btn_handler(num) return --[[persistable:progress_report_hospital_button]] function() self.selected = num end end local function tooltip(num) return (num == 1) and _S.tooltip.status.win_progress_own or _S.tooltip.status.win_progress_other:format(world.hospitals[num].name) .. " " .. _S.misc.not_yet_implemented end local function make_hosp_button(num) self:addPanel(0, 265, 71 + (num - 1) * 25) :makeButton(0, 0, 147, 20, 9, btn_handler(num)) :setTooltip(tooltip(num)) :enable(num == 1) end for i = 1, math.min(#world.hospitals, 4) do make_hosp_button(i) end self:makeTooltip(_S.tooltip.status.population_chart .. " " .. _S.misc.not_yet_implemented, 433, 64, 578, 179) self:makeTooltip(_S.tooltip.status.happiness, 433, 179, 578, 209) self:makeTooltip(_S.tooltip.status.thirst, 433, 209, 578, 239) self:makeTooltip(_S.tooltip.status.warmth, 433, 239, 578, 270) self.warning = self:addPanel(7, 252, 295) self.warning.visible = false -- TODO: 6 gray end function UIProgressReport:close() UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end function UIProgressReport:drawMarkers(canvas, x, y) local x_min = 455 local x_max = 551 local width = x_max - x_min local happiness = self.ui.hospital:getAveragePatientAttribute("happiness", 0.5) local thirst = 1 - self.ui.hospital:getAveragePatientAttribute("thirst", 0.5) local warmth = self.ui.hospital:getAveragePatientAttribute("warmth", nil) warmth = UIPatient.normaliseWarmth(warmth) self.panel_sprites:draw(canvas, 5, math.floor(x + x_min + width * happiness), y + 193) self.panel_sprites:draw(canvas, 5, math.floor(x + x_min + width * thirst), y + 223) self.panel_sprites:draw(canvas, 5, math.floor(x + x_min + width * warmth), y + 254) local world = self.ui.app.world if world.free_build_mode then self.normal_font:drawWrapped(canvas, _S.progress_report.free_build, x + 265, y + 194, 150, "center") end -- Possibly show warning that it's too cold, too hot, patients not happy -- or if theres need to build drink machines as folks are thirsty. Only show one at a time though! -- TODO the levels may need adjustment local msg = self.ui.hospital.show_progress_screen_warnings if warmth < 0.3 and msg == 1 then self.warning.visible = true self.normal_font:drawWrapped(canvas, _S.progress_report.too_cold, x + 285, y + 285, 285) elseif warmth > 0.7 and msg == 1 then self.warning.visible = true self.normal_font:drawWrapped(canvas, _S.progress_report.too_hot, x + 285, y + 285, 285) elseif thirst > 0.7 and msg == 2 then self.warning.visible = true self.normal_font:drawWrapped(canvas, _S.progress_report.more_drinks_machines, x + 285, y + 285, 285) elseif happiness < 0.8 and happiness >= 0.6 and msg == 3 then self.warning.visible = true self.normal_font:drawWrapped(canvas, _S.progress_report.quite_unhappy, x + 285, y + 285, 285) elseif happiness < 0.6 and msg == 3 then self.warning.visible = true self.normal_font:drawWrapped(canvas, _S.progress_report.very_unhappy, x + 285, y + 285, 285) else self.warning.visible = false end end function UIProgressReport:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local hospital = self.ui.hospital local world = hospital.world local world_goals = world.goals -- Names of the players playing local ly = 73 for pnum, player in ipairs(world.hospitals) do local font = (pnum == self.selected) and self.red_font or self.normal_font font:draw(canvas, player.name:upper(), x + 272, y + ly) ly = ly + 25 end -- Draw the vertical bars for the winning conditions local lx = 270 for _, tab in ipairs(world_goals) do local crit_name = world.level_criteria[tab.criterion].name if world_goals[crit_name].visible then local sprite_offset = world_goals[crit_name].red and 2 or 0 local cur_value = hospital[crit_name] -- Balance is special if crit_name == "balance" then cur_value = cur_value - hospital.loan end local height if world_goals[crit_name].red then local lose = world_goals[crit_name].lose_value height = 1 + 49 * (1 - ((cur_value - lose)/(world_goals[crit_name].boundary - lose))) else height = 1 + 49 * (cur_value/world_goals[crit_name].win_value) end if height > 50 then height = 50 end local result_y = 0 for dy = 0, height - 1 do self.panel_sprites:draw(canvas, 1 + sprite_offset, x + lx, y + 237 - dy) result_y = result_y + 1 end self.panel_sprites:draw(canvas, 2 + sprite_offset, x + lx, y + 237 - result_y) lx = lx + 30 end end self:drawMarkers(canvas, x, y) self.normal_font:draw(canvas, _S.progress_report.header .. " " .. (world.year + 1999), x + 227, y + 40, 400, 0) self.small_font:draw(canvas, _S.progress_report.win_criteria:upper(), x + 263, y + 172) self.small_font:draw(canvas, _S.progress_report.percentage_pop:upper() .. " " .. (hospital.population * 100) .. "%", x + 450, y + 65) end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/research_policy.lua000066400000000000000000000206501321660673500250450ustar00rootroot00000000000000--[[ Copyright (c) 2010 M.Chalon Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UIResearch" (UIFullscreen) ---@type UIResearch local UIResearch = _G["UIResearch"] local research_categories = { "cure", "diagnosis", "drugs", "improvements", "specialisation", } local col_bg = { red = 24, green = 24, blue = 20, } function UIResearch:UIResearch(ui) self:UIFullscreen(ui) local gfx = ui.app.gfx if not pcall(function() self.background = gfx:loadRaw("Res01V", 640, 480) local palette = gfx:loadPalette("QData", "Res01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.panel_sprites = gfx:loadSpriteTable("QData", "Res02V", true, palette) self.label_font = gfx:loadFont("QData", "Font43V", false, palette) self.number_font = gfx:loadFont("QData", "Font43V", false, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end self.hospital = ui.hospital self.research = ui.hospital.research -- stubs for backwards compatibility local --[[persistable:research_policy_adjust]] function adjust(name) end local --[[persistable:research_less_stub]] function less_stub() end local --[[persistable:research_more_stub]] function more_stub() end -- Close button self:addPanel(0, 607, 447):makeButton(0, 0, 40, 40, 4, self.close):setTooltip(_S.tooltip.research.close) self.adjust_buttons = {} self:updateCategories() self.waterclk = 0 self.ratclk = 0 self.waterpanel= self:addPanel(5, 2, 312) self.ratpanel= self:addPanel(13, 480, 365) -- Add tooltips to progress of research. local lx = 165 local ly = 60 for _, category in ipairs(research_categories) do self:makeDynamicTooltip(--[[persistable:research_policy_research_progress_tooltip]] function() local research = self.research.research_policy if research[category].current and not research[category].current.dummy then local required = self.research:getResearchRequired(research[category].current) local available = self.research.research_progress[research[category].current].points return _S.tooltip.research_policy.research_progress:format(math.round(available), required) else return _S.tooltip.research_policy.no_research end end, lx, ly, lx + 315, ly + 41) ly = ly + 41 end end function UIResearch:updateCategories() -- Buttons to increase/decrease percentages local size = 40 local topy = 21 local spacing = 41 local c1 = 372 local c2 = 450 local function handler_factory(area, mode) return --[[persistable:research_policy_adjust_handler]] function(window) window:adjustResearch(area, mode) end end --[[ Retrieves a translated string dynamically !param string_name (string) The key name (e.g., "tooltip.research.cure_dec") !return (string) The actual translation (e.g., "Decrease cure percentage") ]] local function get_localized_string(string_name) local var_table = _G["_S"] for token in string.gmatch(string_name, "[%w_]+") do var_table = var_table[token] end return var_table end for i, area in ipairs(research_categories) do local current = self.hospital.research.research_policy[area].current if current then self.adjust_buttons[area] = { less = self:addPanel(0, c1, topy + i * spacing) :makeRepeatButton(0, 0, size, size, 1, handler_factory(area, "less")) :setTooltip(get_localized_string("tooltip.research." .. area .. "_dec")), more = self:addPanel(0, c2, topy + i * spacing) :makeRepeatButton(0, 0, size, size, 2, handler_factory(area, "more")) :setTooltip(get_localized_string("tooltip.research." .. area .. "_inc")), } else if self.adjust_buttons[area] then self.adjust_buttons[area].less.enabled = false self.adjust_buttons[area].more.enabled = false end self:addColourPanel(c1, topy + i * spacing, 120, 30, col_bg.red, col_bg.green, col_bg.blue) end end end function UIResearch:adjustResearch(area, mode) local res = self.research local amount = 1 if self.ui.app.key_modifiers.ctrl then amount = amount * 20 elseif self.ui.app.key_modifiers.shift then amount = amount * 5 end if mode == "less" then if res.research_policy[area].frac > 0 then res.research_policy[area].frac = math.max(0, res.research_policy[area].frac - amount) self.ui:playSound("selectx.wav") else self.ui:playSound("Wrong2.wav") end elseif mode == "more" then if res.research_policy.global < 100 and res.research_policy[area].current then res.research_policy[area].frac = res.research_policy[area].frac + math.min(amount, 100 - res.research_policy.global) self.ui:playSound("selectx.wav") else self.ui:playSound("Wrong2.wav") end end res.research_policy.global = 0 for _, category in ipairs(research_categories) do res.research_policy.global = res.research_policy.global + res.research_policy[category].frac end end function UIResearch:onTick() -- sprite index for the water are between 5 and 12 -- We use a sub clock self.waterclk = self.waterclk + 1 if self.waterclk > 3 then self.waterclk = 0 self.waterpanel.sprite_index = self.waterpanel.sprite_index + 1 if self.waterpanel.sprite_index > 12 then self.waterpanel.sprite_index = 5 end end -- sprite index for the rat are between 10 and 15 -- We use a sub clock self.ratclk = self.ratclk + 1 if self.ratclk > 3 then self.ratclk = 0 -- sprite index for the water are between 13 and 20 self.ratpanel.sprite_index = self.ratpanel.sprite_index + 1 if self.ratpanel.sprite_index > 20 then self.ratpanel.sprite_index = 13 end end return UIFullscreen.onTick(self) end function UIResearch:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local num_font = self.number_font local lbl_font = self.label_font local ytop = 28 local spacing = 41 local research = self.research.research_policy for i, category in ipairs(research_categories) do local ypos = y + ytop + i * spacing lbl_font:draw(canvas, _S.research.categories[category], x + 170, ypos) if not research[category].current then num_font:draw(canvas, _S.misc.done, x + 270, ypos, 300, 0) else num_font:draw(canvas, research[category].frac, x + 270, ypos, 300, 0) end -- Display research progress. if research[category].current and not research[category].current.dummy then local ly = ypos + 26 local lx = x + 172 local required = self.research:getResearchRequired(research[category].current) local available = self.research.research_progress[research[category].current].points local length = 290 * available / required local dx = 0 while dx + 10 < length do self.panel_sprites:draw(canvas, 3, lx + dx, ly) dx = dx + 10 end end end num_font:draw(canvas, research.global, x + 270, y + 288, 300, 0) end function UIResearch:close() UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end function UIResearch:afterLoad(old, new) UIFullscreen.afterLoad(self, old, new) if old < 26 then self.adjust_buttons = {} for i, area in ipairs(research_categories) do self.adjust_buttons[area] = { less = self.buttons[2 * i], more = self.buttons[2 * i + 1], } end end end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/staff_management.lua000066400000000000000000000522521321660673500251740ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local math_floor = math.floor --! Staff management screen class "UIStaffManagement" (UIFullscreen) ---@type UIStaffManagement local UIStaffManagement = _G["UIStaffManagement"] function UIStaffManagement:UIStaffManagement(ui) self:UIFullscreen(ui) local gfx = ui.app.gfx if not pcall(function() self.background = gfx:loadRaw("Staff01V", 640, 480) local palette = gfx:loadPalette("QData", "Staff01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.panel_sprites = gfx:loadSpriteTable("QData", "Staff02V", true, palette) self.title_font = gfx:loadFont("QData", "Font01V", false, palette) self.face_parts = ui.app.gfx:loadRaw("Face01V", 65, 1350, nil, "Data", "MPalette.dat") end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end local hosp = ui.hospital self.ui = ui self.hospital = hosp -- Order the staff self:updateStaffList() self.default_button_sound = "selectx.wav" -- Close button self:addPanel(0, 603, 443):makeButton(0, 0, 26, 26, 10, self.close):setTooltip(_S.tooltip.staff_list.close) -- Top categories local --[[persistable:staff_management_category]] function category(name, state, btn) self:setCategory(name) end self.categories = { self:addPanel(0, 53, 15):makeToggleButton(0, 0, 58, 58, 1, category, "Doctor"):setTooltip(_S.tooltip.staff_list.doctors), self:addPanel(0, 119, 15):makeToggleButton(0, 0, 58, 58, 1, category, "Nurse"):setTooltip(_S.tooltip.staff_list.nurses), self:addPanel(0, 185, 15):makeToggleButton(0, 0, 58, 58, 1, category, "Handyman"):setTooltip(_S.tooltip.staff_list.handymen), self:addPanel(0, 251, 15):makeToggleButton(0, 0, 58, 58, 1, category, "Receptionist"):setTooltip(_S.tooltip.staff_list.receptionists), } -- Other buttons self:addPanel(0, 12, 86):makeButton(0, 0, 31, 74, 2, self.scrollUp):setTooltip(_S.tooltip.staff_list.prev_person) self:addPanel(0, 12, 274):makeButton(0, 0, 31, 74, 3, self.scrollDown):setTooltip(_S.tooltip.staff_list.next_person) self:addPanel(0, 319, 372):makeButton(0, 0, 112, 39, 7, self.payBonus):setTooltip(_S.tooltip.staff_list.bonus) self:addPanel(0, 319, 418):makeButton(0, 0, 112, 39, 8, self.increaseSalary):setTooltip(_S.tooltip.staff_list.pay_rise) self:addPanel(0, 438, 372):makeButton(0, 0, 45, 85, 9, self.fire):setTooltip(_S.tooltip.staff_list.sack) -- "Arrow" to show title of doctors self.arrow = self:addPanel(12, 259, 397) self.arrow_position = 259 self.arrow.visible = false -- Scroll bar dot self.scroll_dot = self:addPanel(11, 21, 168) self.scroll_dot.visible = false -- Doctors' skills or progress towards them self.progress_surgeon = self:addPanel(17, 188, 408) self.progress_surgeon.visible = false self.qualified_surgeon = self:addPanel(20, 188, 408):setTooltip(_S.tooltip.staff_list.surgeon) self.qualified_surgeon.visible = false self.progress_psychiatrist = self:addPanel(18, 228, 408) self.progress_psychiatrist.visible = false self.qualified_psychiatrist = self:addPanel(21, 228, 408):setTooltip(_S.tooltip.staff_list.psychiatrist) self.qualified_psychiatrist.visible = false self.progress_researcher = self:addPanel(19, 268, 408) self.progress_researcher.visible = false self.qualified_researcher = self:addPanel(22, 268, 408):setTooltip(_S.tooltip.staff_list.researcher) self.qualified_researcher.visible = false -- Blankers for each row local row_blankers = {} for i = 1, 10 do row_blankers[i] = self:addColourPanel(50, 55 + i*27, 580, 27, 60, 174, 203) end self.row_blankers = row_blankers -- Extra background for the portrait self.portrait_back = self:addColourPanel(65, 374, 71, 81, 210, 255, 255) self.portrait_back.visible = false -- Doctor skill blankers self.title_blanker = self:addColourPanel(225, 365, 90, 39, 57, 166, 198) self.skill_blanker = self:addColourPanel(142, 406, 168, 54, 57, 166, 198) -- Tooltip regions self:makeTooltip(_S.tooltip.staff_list.happiness, 321, 51, 421, 75) self:makeTooltip(_S.tooltip.staff_list.tiredness, 426, 51, 526, 75) self:makeTooltip(_S.tooltip.staff_list.ability, 530, 51, 629, 75) self:makeTooltip(_S.tooltip.staff_list.detail, 146, 367, 226, 407) self:makeTooltip(_S.tooltip.staff_list.view_staff, 495, 371, 583, 458) self.row_tooltips = {} for line_num = 1, 10 do self.row_tooltips[line_num] = { self:makeTooltip(_S.tooltip.staff_list.salary, 193, 84 + 27 * (line_num - 1), 313, 108 + 27 * (line_num - 1)), self:makeTooltip(_S.tooltip.staff_list.happiness_2, 321, 84 + 27 * (line_num - 1), 421, 108 + 27 * (line_num - 1)), self:makeTooltip(_S.tooltip.staff_list.tiredness_2, 425, 84 + 27 * (line_num - 1), 525, 108 + 27 * (line_num - 1)), self:makeTooltip(_S.tooltip.staff_list.ability_2, 529, 84 + 27 * (line_num - 1), 628, 108 + 27 * (line_num - 1)), } end self.seniority_tooltip = self:makeTooltip(_S.tooltip.staff_list.doctor_seniority, 230, 367, 310, 407) self.skills_tooltip = self:makeTooltip(_S.tooltip.staff_list.skills, 146, 406, 186, 460) self:setCategory("Doctor") -- Hotkeys. self:addKeyHandler("left", self.previousCategory) self:addKeyHandler("right", self.nextCategory) self:addKeyHandler("up", self.previousStaff) self:addKeyHandler("down", self.nextStaff) end function UIStaffManagement:updateTooltips() self.seniority_tooltip.enabled = self.category == "Doctor" self.skills_tooltip.enabled = self.category == "Doctor" for i, tooltips in ipairs(self.row_tooltips) do local state = 10 * (self.page - 1) + i <= #self.staff_members[self.category] for _, tooltip in ipairs(tooltips) do tooltip.enabled = state end end end function UIStaffManagement:updateStaffList(staff_member_removed) local selected_staff if staff_member_removed then -- The update was issued because someone was removed from the list, we need to handle this. selected_staff = self.staff_members[self.category][self.selected_staff] if self.staff_members[self.category][self.selected_staff] == staff_member_removed then self.selected_staff = nil selected_staff = nil end end local hosp = self.hospital local staff_members = { Doctor = {}, Nurse = {}, Handyman = {}, Receptionist = {}, } staff_members.Surgeon = staff_members.Doctor for _, staff in ipairs(hosp.staff) do local list = staff_members[staff.humanoid_class] list[#list + 1] = staff -- The selected staff might have been moved because someone else was removed from the list. if selected_staff == staff then self.selected_staff = #list end end self.staff_members = staff_members if staff_member_removed then self:updateTooltips() -- If we're viewing a page that no longer exists, go back a page if self.page > math.ceil(#self.staff_members[self.category] / 10) then self:scrollUp() end self:updateScrollDotVisibility() end end function UIStaffManagement:setCategory(name) self.skill_blanker.visible = name ~= "Doctor" self.title_blanker.visible = name ~= "Doctor" self.category = name for _, btn in ipairs(self.categories) do local should_be_toggled = btn.on_click_self == name if btn.toggled ~= should_be_toggled then btn:toggle() end end self.selected_staff = nil self.page = 1 self:updateScrollDotVisibility() self:updateTooltips() end -- Function to select given list index in the current category. -- Includes jumping to correct page. function UIStaffManagement:selectIndex(idx) if idx > #self.staff_members[self.category] or idx <= 0 then return end self.page = math.floor((idx - 1) / 10) + 1 self.selected_staff = idx end -- Function to select a given staff member. -- Includes switching to correct category and page. function UIStaffManagement:selectStaff(staff) self:setCategory(staff.humanoid_class == "Surgeon" and "Doctor" or staff.humanoid_class) for i, s in ipairs(self.staff_members[self.category]) do if s == staff then self:selectIndex(i) break end end end function UIStaffManagement:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local titles = self.title_font -- Titles titles:draw(canvas, _S.staff_list.morale, x + 323, y + 31, 95, 0) titles:draw(canvas, _S.staff_list.tiredness, x + 427, y + 31, 95, 0) titles:draw(canvas, _S.staff_list.skill, x + 530, y + 31, 95, 0) -- Number of employees titles:draw(canvas, #self.staff_members["Doctor"], x + 79, y + 57) titles:draw(canvas, #self.staff_members["Nurse"], x + 145, y + 57) titles:draw(canvas, #self.staff_members["Handyman"], x + 211, y + 57) titles:draw(canvas, #self.staff_members["Receptionist"], x + 277, y + 57) local total_happiness = 0 local total_fatigue = 0 local total_skill = 0 -- Draw each listing local staff_list = self.staff_members[self.category] for i, staff in ipairs(staff_list) do if not staff then break end -- Morale, tiredness and skill, used to draw the average at the end too. local happiness_bar_width = 0 if staff.attributes["happiness"] then happiness_bar_width = math_floor(staff.attributes["happiness"] * 40 + 0.5) total_happiness = total_happiness + staff.attributes["happiness"] end local fatigue_bar_width = 40.5 if staff.attributes["fatigue"] then total_fatigue = total_fatigue + staff.attributes["fatigue"] fatigue_bar_width = math_floor((1 - staff.attributes["fatigue"]) * 40 + 0.5) end local skill_bar_width = math_floor(staff.profile.skill * 40 + 0.5) total_skill = total_skill + staff.profile.skill -- Is this staff member on the visible page? Then draw him/her if i > (self.page-1)*10 and i <= self.page*10 then local row_no = i - (self.page-1)*10 self.row_blankers[row_no].visible = false titles:draw(canvas, row_no + 10*(self.page-1), x + 58, y + 63 + row_no*27) titles:draw(canvas, staff.profile.name, x + 88, y + 63 + row_no*27) titles:draw(canvas, "$" .. staff.profile.wage, x + 230, y + 63 + row_no*27, 80, 0) -- Draw the morale, tiredness and skill for this staff member if happiness_bar_width ~= 0 then for dx = 0, happiness_bar_width - 1 do self.panel_sprites:draw(canvas, 16, x + 351 + dx, y + 65 + row_no*27) end end if fatigue_bar_width ~= 0 then for dx = 0, fatigue_bar_width - 1 do self.panel_sprites:draw(canvas, 15, x + 456 + dx, y + 65 + row_no*27) end end if skill_bar_width ~= 0 then for dx = 0, skill_bar_width - 1 do self.panel_sprites:draw(canvas, 14, x + 559 + dx, y + 65 + row_no*27) end end end end -- Make sure the other ones are not visible for i = #staff_list + 1 - (self.page-1)*10, 10 do self.row_blankers[i].visible = true end -- Draw the average morale, tiredness and skill if #staff_list ~= 0 then local happiness_bar_width = math_floor((total_happiness/#staff_list) * 40 + 0.5) if happiness_bar_width ~= 0 then for dx = 0, happiness_bar_width - 1 do self.panel_sprites:draw(canvas, 16, x + 351 + dx, y + 59) end end local fatigue_bar_width = math_floor((1 - (total_fatigue/#staff_list)) * 40 + 0.5) if fatigue_bar_width ~= 0 then for dx = 0, fatigue_bar_width - 1 do self.panel_sprites:draw(canvas, 15, x + 456 + dx, y + 59) end end local skill_bar_width = math_floor((total_skill/#staff_list) * 40 + 0.5) if skill_bar_width ~= 0 then for dx = 0, skill_bar_width - 1 do self.panel_sprites:draw(canvas, 14, x + 559 + dx, y + 59) end end end -- Reset self.progress_surgeon.visible = false self.qualified_surgeon.visible = false self.progress_psychiatrist.visible = false self.qualified_psychiatrist.visible = false self.progress_researcher.visible = false self.qualified_researcher.visible = false self.arrow.visible = false self.portrait_back.visible = false -- If a staff member is selected, draw picture, skill etc if self.selected_staff then local profile = self.staff_members[self.category][self.selected_staff].profile -- Draw the red rectangle TODO: Make a neater function in C? local red = canvas:mapRGB(221, 83, 0) local y_pos = self.selected_staff - (self.page - 1)*10 canvas:drawRect(red, x + 49, y + y_pos*27 + 54, 581, 1) canvas:drawRect(red, x + 49, y + y_pos*27 + 81, 581, 1) canvas:drawRect(red, x + 49, y + y_pos*27 + 54, 1, 28) canvas:drawRect(red, x + 630, y + y_pos*27 + 54, 1, 28) -- Current position in the game world local px, py = self:getStaffPosition(37, 61) self.ui.app.map:draw(canvas, px, py, 83, 82, x + 497, y + 373) -- Portrait self.portrait_back.visible = true profile:drawFace(canvas, x + 68, y + 377, self.face_parts) -- 10 % increase in salary or a bonus: titles:draw(canvas, "$" .. math_floor(profile.wage*0.1), x + 377, y + 387, 45, 0) titles:draw(canvas, "$" .. math_floor(profile.wage*0.1 + profile.wage), x + 377, y + 432, 45, 0) -- Attention to detail local attention_bar_width = math_floor(profile.attention_to_detail * 40 + 0.5) if attention_bar_width ~= 0 then for dx = 0, attention_bar_width - 1 do self.panel_sprites:draw(canvas, 13, x + 178 + dx, y + 387) end end -- If it is a doctor, draw skills etc. if self.category == "Doctor" then if profile.is_surgeon > 0 then if profile.is_surgeon >= 1.0 then self.qualified_surgeon.visible = true elseif not profile.is_consultant then self.progress_surgeon.visible = true self.progress_surgeon:setTooltip(_S.tooltip.staff_list.surgeon_train:format(math_floor(profile.is_surgeon * 100))) local progress = math_floor(profile.is_surgeon * 23 + 0.5) for dx = 0, progress - 1 do self.panel_sprites:draw(canvas, 13, x + 196 + dx, y + 447) end end end if profile.is_psychiatrist > 0 then if profile.is_psychiatrist >= 1.0 then self.qualified_psychiatrist.visible = true elseif not profile.is_consultant then self.progress_psychiatrist.visible = true self.progress_psychiatrist:setTooltip(_S.tooltip.staff_list.psychiatrist_train:format(math_floor(profile.is_psychiatrist * 100))) local progress = math_floor(profile.is_psychiatrist * 23 + 0.5) for dx = 0, progress - 1 do self.panel_sprites:draw(canvas, 13, x + 236 + dx, y + 447) end end end if profile.is_researcher > 0 then if profile.is_researcher >= 1.0 then self.qualified_researcher.visible = true elseif not profile.is_consultant then self.progress_researcher.visible = true self.progress_researcher:setTooltip(_S.tooltip.staff_list.researcher_train:format(math_floor(profile.is_researcher * 100))) local progress = math_floor(profile.is_researcher * 23 + 0.5) for dx = 0, progress - 1 do self.panel_sprites:draw(canvas, 13, x + 276 + dx, y + 447) end end end -- Draw type of doctor self.arrow.visible = true if profile.is_consultant then self.arrow.x = self.arrow_position + 29 elseif profile.is_junior then self.arrow.x = self.arrow_position - 23 else self.arrow.x = self.arrow_position end end end end function UIStaffManagement:onMouseDown(code, x, y) if code == "left" then if x > 50 and x < 490 then if y > 82 and y < 351 then if #self.staff_members[self.category] - (self.page - 1)*10 > math_floor((y - 81)/27) then self.selected_staff = math_floor((y - 81)/27) + 1 + (self.page - 1)*10 end end elseif x > 497 and x < 580 and y > 373 and y < 455 and self.selected_staff then -- Hit in the view of the staff local ui = self.ui ui:scrollMapTo(self:getStaffPosition()) ui:addWindow(UIStaff(ui, self.staff_members[self.category][self.selected_staff])) self:close() return false end end return UIFullscreen.onMouseDown(self, code, x, y) end function UIStaffManagement:onMouseWheel(x, y) if not UIFullscreen.onMouseWheel(self, x, y) then if self:hitTest(self.cursor_x, self.cursor_y) then if y > 0 then self:scrollUp() return true else self:scrollDown() return true end end return false else return true end end function UIFullscreen:getStaffPosition(dx, dy) local staff = self.staff_members[self.category][self.selected_staff] local x, y = self.ui.app.map:WorldToScreen(staff.tile_x, staff.tile_y) local px, py = staff.th:getMarker() return x + px - (dx or 0), y + py - (dy or 0) end function UIStaffManagement:previousCategory() if self.category == "Nurse" then self:setCategory("Doctor") elseif self.category == "Handyman" then self:setCategory("Nurse") elseif self.category == "Receptionist" then self:setCategory("Handyman") end end function UIStaffManagement:nextCategory() if self.category == "Doctor" then self:setCategory("Nurse") elseif self.category == "Nurse" then self:setCategory("Handyman") elseif self.category == "Handyman" then self:setCategory("Receptionist") end end function UIStaffManagement:previousStaff() -- If nothing currently selected, select the last one, otherwise the previous. if self.selected_staff == nil then self:selectIndex(#self.staff_members[self.category]) else self:selectIndex(self.selected_staff - 1) end end function UIStaffManagement:nextStaff() -- If nothing currently selected, select the first one, otherwise the next. if self.selected_staff == nil then self:selectIndex(1) else self:selectIndex(self.selected_staff + 1) end end function UIStaffManagement:scrollUp() if self.scroll_dot.visible and self.page > 1 then self.selected_staff = nil self.page = self.page - 1 self:updateScrollDot() end self:updateTooltips() end function UIStaffManagement:scrollDown() if self.scroll_dot.visible and self.page*10 < #self.staff_members[self.category] then self.selected_staff = nil self.page = self.page + 1 self:updateScrollDot() end self:updateTooltips() end --! Updates the position of the paging scroll indicator function UIStaffManagement:updateScrollDot() local numPages = math.ceil(#self.staff_members[self.category] / 10) local yOffset = math_floor(83 * ((self.page - 1) / (numPages - 1))) self.scroll_dot.y = 168 + yOffset end --! Updates whether the paging scroll indicator is visible and its position if visible function UIStaffManagement:updateScrollDotVisibility() if #self.staff_members[self.category] > 10 then self.scroll_dot.visible = true self:updateScrollDot() else self.scroll_dot.visible = false end end function UIStaffManagement:payBonus() local staff = self.staff_members[self.category][self.selected_staff] if self.selected_staff and self.hospital.balance > math_floor(staff.profile.wage*0.1) then staff:changeAttribute("happiness", 0.5) self.hospital:spendMoney(math_floor(staff.profile.wage*0.1), _S.transactions.personal_bonus) self.ui:playSound("cashreg.wav") end end function UIStaffManagement:increaseSalary() if self.selected_staff then local staff = self.staff_members[self.category][self.selected_staff] staff:increaseWage(math_floor(staff.profile.wage*0.1)) end end function UIStaffManagement:fire() if self.selected_staff then self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.sack_staff, --[[persistable:staff_management_confirm_sack]] function() local current_category = self.staff_members[self.category] current_category[self.selected_staff]:fire() -- Close the staff window if open local staff_window = self.ui:getWindow(UIStaff) if staff_window and staff_window.staff == current_category[self.selected_staff] then staff_window:close() end -- Update the staff list self:updateStaffList(current_category[self.selected_staff]) end)) -- End of confirmation dialog end end function UIStaffManagement:close() UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end CorsixTH-0.61/CorsixTH/Lua/dialogs/fullscreen/town_map.lua000066400000000000000000000311651321660673500235210ustar00rootroot00000000000000--[[ Copyright (c) 2010 Sjors Gielen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" --! Town map fullscreen window (purchase land, set radiator levels, map overview). class "UITownMap" (UIFullscreen) ---@type UITownMap local UITownMap = _G["UITownMap"] function UITownMap:UITownMap(ui) self:UIFullscreen(ui) local app = self.ui.app local gfx = app.gfx self.app = app if not pcall(function() local palette = gfx:loadPalette("QData", "Town01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.background = gfx:loadRaw("Town01V", 640, 480) self.info_font = gfx:loadFont("QData", "Font34V", false, palette) self.city_font = gfx:loadFont("QData", "Font31V", false, palette) self.money_font = gfx:loadFont("QData", "Font05V") self.panel_sprites = gfx:loadSpriteTable("QData", "Town02V", true, palette) end) then ui:addWindow(UIInformation(ui, {_S.errors.dialog_missing_graphics})) self:close() return end self.default_button_sound = "selectx.wav" self.default_buy_sound = "buy.wav" local config = self:initRuntimeConfig() -- A list of areas in the town, including the owner. -- In single player there are only bought and available areas, in multiplayer -- areas are owned by players and when a player wants to buy a piece of -- terrain, an auction is started. -- TODO display the areas, in the right color -- TODO display everything in the areas -- TODO multiplayer mode -- NB: original TH closed the town map on right click of balance button. -- This is likely a bug and we do not copy this behavior. self:addPanel(0, 30, 420):makeButton(0, 0, 200, 50, 0, self.bankManager, nil, self.bankStats):setTooltip(_S.tooltip.town_map.balance) self:addPanel(0, 594, 437):makeButton(0, 0, 26, 26, 8, self.close):setTooltip(_S.tooltip.town_map.close) self:addPanel(0, 171, 315):makeButton(0, 0, 20, 20, 6, self.increaseHeat):setTooltip(_S.tooltip.town_map.heat_inc) self:addPanel(0, 70, 314):makeButton(0, 0, 20, 20, 7, self.decreaseHeat):setTooltip(_S.tooltip.town_map.heat_dec) -- add the toggle buttons local function toggle_button(sprite, x, y, option, str) local panel = self:addPanel(sprite, x, y) local btn = panel:makeToggleButton(0, 0, 46, 46, 0, --[[persistable:town_map_config_button]] function(_, state) app.runtime_config.town_dialog[option] = state end):setTooltip(str) btn:setToggleState(config[option]) end toggle_button(1, 140, 37, "people_enabled", _S.tooltip.town_map.people) toggle_button(2, 140, 89, "plants_enabled", _S.tooltip.town_map.plants) toggle_button(3, 140, 141, "fire_ext_enabled", _S.tooltip.town_map.fire_extinguishers) toggle_button(4, 140, 193, "objects_enabled", _S.tooltip.town_map.objects) toggle_button(5, 140, 246, "radiators_enabled", _S.tooltip.town_map.radiators) self:makeTooltip(_S.tooltip.town_map.heat_level, 94, 318, 167, 331) self:makeTooltip(_S.tooltip.town_map.heating_bill, 72, 351, 167, 374) end function UITownMap:initRuntimeConfig() -- config is a *runtime* configuration list; re-instantiations of the dialog -- share the same values, but it's not saved across saves or sessions local config = self.app.runtime_config.town_dialog if config == nil then config = {} self.app.runtime_config.town_dialog = config config.people_enabled = true config.plants_enabled = true config.fire_ext_enabled = true config.objects_enabled = true config.radiators_enabled = true end return config end function UITownMap:close() UIFullscreen.close(self) self.ui:getWindow(UIBottomPanel):updateButtonStates() end local flag_cache = {} function UITownMap:onMouseMove(x, y) local tx = math.floor((x - 227) / 3) local ty = math.floor((y - 25) / 3) self.hover_plot = nil if 0 <= tx and tx < 128 and 0 <= ty and ty < 128 then local map = self.ui.hospital.world.map.th self.hover_plot = map:getCellFlags(tx + 1, ty + 1, flag_cache).parcelId end return UIFullscreen.onMouseMove(self, x, y) end function UITownMap:onMouseUp(button, x, y) local redraw = false if button == "left" then local tx = math.floor((x - 227) / 3) local ty = math.floor((y - 25) / 3) if 0 <= tx and tx < 128 and 0 <= ty and ty < 128 then local map = self.ui.hospital.world.map.th local plot = map:getCellFlags(tx + 1, ty + 1, flag_cache).parcelId if plot ~= 0 then if self.ui.hospital:purchasePlot(plot) then self.ui:playSound("cashreg.wav") redraw = true else self.ui:playSound("Wrong2.wav") end end end elseif button == "right" then local tx = math.floor((x - 227) / 3) local ty = math.floor((y - 25) / 3) local map = self.ui.hospital.world.map.th if 0 <= tx and tx < 128 and 0 <= ty and ty < 128 then local plot = map:getCellFlags(tx + 1, ty + 1, flag_cache).parcelId if plot ~= 0 then local sx, sy = self.ui.app.map:WorldToScreen(tx, ty) self.ui:scrollMapTo(sx, sy) self:close() end end end return UIFullscreen.onMouseUp(self, button, x, y) or redraw end function UITownMap:draw(canvas, x, y) self.background:draw(canvas, self.x + x, self.y + y) UIFullscreen.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local app = self.ui.app local hospital = self.ui.hospital local world = hospital.world local map = world.map -- config is a *runtime* configuration list; re-instantiations of the dialog -- share the same values, but it's not saved across saves or sessions local config = app.runtime_config.town_dialog if not config then config = self:initRuntimeConfig() end -- We need to draw number of people, plants, fire extinguisers, other objects -- and radiators. -- NB: original TH's patient count was always 1 too big (started counting at 1) -- This is likely a bug and we do not copy this behavior. local patientcount = hospital.patientcount local plants = world.object_counts.plant local fireext = world.object_counts.extinguisher local objs = world.object_counts.general local radiators = world.object_counts.radiator self.info_font:draw(canvas, patientcount, x + 95, y + 57) self.info_font:draw(canvas, plants, x + 95, y + 110) self.info_font:draw(canvas, fireext, x + 95, y + 157) self.info_font:draw(canvas, objs, x + 95, y + 211) self.info_font:draw(canvas, radiators, x + 95, y + 265) -- Heating costs local heating_costs = math.floor(((hospital.radiator_heat *10)* radiators)* 7.5) self.info_font:draw(canvas, ("%8i"):format(heating_costs), x + 100, y + 355) -- draw money balance self.money_font:draw(canvas, ("%7i"):format(hospital.balance), x + 49, y + 431) -- radiator heat local rad_max_width = 60 -- Radiator indicator width local rad_width = rad_max_width * hospital.radiator_heat for dx = 0, rad_width do self.panel_sprites:draw(canvas, 9, x + 101 + dx, y + 319) end -- city name self.city_font:draw(canvas, map.level_name, x + 300, y + 43, 260, 15) local town_map_offset_x = x + 227 local town_map_offset_y = y + 25 TH.windowHelpers.townMapDraw(self, map.th, canvas, town_map_offset_x, town_map_offset_y, config.radiators_enabled) -- Draw entities local function draw_entities(list, color, size) for _, ent in ipairs(list) do -- 3 is the number of pixel that are used to represent one world tile in the map canvas:drawRect(color, town_map_offset_x + ent.tile_x * 3 - 2, town_map_offset_y + ent.tile_y * 3 + 1, size, size) end end local function draw_entities_in_hospital(list, color, size) for _, ent in ipairs(list) do local tile_x, tile_y = ent.tile_x, ent.tile_y if tile_x and hospital:isInHospital(tile_x, tile_y) then -- 3 is the number of pixel that are used to represent one world tile in the map canvas:drawRect(color, town_map_offset_x + tile_x * 3 - 2, town_map_offset_y + tile_y * 3 + 1, size, size) end end end --! Select entities of the world by their id. --!param id Id of the objects to select. --!return (list) The selected entities. local function get_objects_by_id(id) local ret = {} for _, obj_list in pairs(world.objects) do for _, obj in ipairs(obj_list) do if obj.object_type.id == id then table.insert(ret, obj) end end end return ret end if config.people_enabled then local staff_color = canvas:mapRGB(97, 109, 235) local patient_color = canvas:mapRGB(255, 255, 255) draw_entities_in_hospital(self.ui.hospital.staff, staff_color, 2) draw_entities_in_hospital(self.ui.hospital.patients, patient_color, 2) end if config.radiators_enabled then local radiator_color = canvas:mapRGB(255, 0, 70) draw_entities(get_objects_by_id("radiator"), radiator_color, 1) end if config.fire_ext_enabled then local fire_ext_color = canvas:mapRGB(216, 0, 0) draw_entities(get_objects_by_id("extinguisher"), fire_ext_color, 2) end if config.plants_enabled then local plant_color = canvas:mapRGB(127, 180, 73) draw_entities(get_objects_by_id("plant"), plant_color, 2) end if config.objects_enabled then local machine_list = {} for _, obj_list in pairs(world.objects) do for _, obj in ipairs(obj_list) do if obj.object_type.show_in_town_map then table.insert(machine_list, obj) end end end local machine_color = canvas:mapRGB(142, 182, 182) draw_entities(machine_list, machine_color, 3) end -- plot number, owner, area and price local plot_num = "-" local tile_count = "-" local price = "-" local owner = "-" if self.hover_plot then if self.hover_plot == 0 then price = _S.town_map.not_for_sale else tile_count = map:getParcelTileCount(self.hover_plot) local owner_num = map.th:getPlotOwner(self.hover_plot) if owner_num == 0 then owner = _S.town_map.for_sale price = "$" .. map:getParcelPrice(self.hover_plot) else owner = world.hospitals[owner_num].name end plot_num = self.hover_plot end end self.city_font:draw(canvas, _S.town_map.number, x + 227, y + 435) self.city_font:draw(canvas, ":", x + 300, y + 435) self.city_font:draw(canvas, plot_num, x + 315, y + 435) self.city_font:draw(canvas, _S.town_map.owner, x + 227, y + 450) self.city_font:draw(canvas, ":", x + 300, y + 450) self.city_font:draw(canvas, owner, x + 315, y + 450) self.city_font:draw(canvas, _S.town_map.area, x + 432, y + 435) self.city_font:draw(canvas, ":", x + 495, y + 435) self.city_font:draw(canvas, tile_count, x + 515, y + 435) self.city_font:draw(canvas, _S.town_map.price, x + 432, y + 450) self.city_font:draw(canvas, ":", x + 495, y + 450) self.city_font:draw(canvas, price, x + 515, y + 450) end function UITownMap:decreaseHeat() local h = self.ui.hospital local heat = math.floor(h.radiator_heat * 10 + 0.5) if not h.heating_broke then heat = heat - 1 if heat < 1 then heat = 1 end h.radiator_heat = heat / 10 end end function UITownMap:increaseHeat() local h = self.ui.hospital local heat = math.floor(h.radiator_heat * 10 + 0.5) if not h.heating_broke then heat = heat + 1 if heat > 10 then heat = 10 end h.radiator_heat = heat / 10 end end function UITownMap:bankManager() local dlg = UIBankManager(self.ui) self.ui:addWindow(dlg) self.ui:getWindow(UIBottomPanel):updateButtonStates() end function UITownMap:bankStats() local dlg = UIBankManager(self.ui) dlg:showStatistics() self.ui:addWindow(dlg) self.ui:getWindow(UIBottomPanel):updateButtonStates() end CorsixTH-0.61/CorsixTH/Lua/dialogs/furnish_corridor.lua000066400000000000000000000215261321660673500231140ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" local math_floor = math.floor --! Dialog for purchasing `Object`s (for the corridor or for rooms). class "UIFurnishCorridor" (Window) ---@type UIFurnishCorridor local UIFurnishCorridor = _G["UIFurnishCorridor"] function UIFurnishCorridor:UIFurnishCorridor(ui, objects, edit_dialog) self:Window() local app = ui.app if edit_dialog then self.modal_class = "furnish" self.edit_dialog = edit_dialog else self.modal_class = "main" end self.esc_closes = true self.ui = ui self.anims = app.anims self.width = 360 self.height = 274 self:setDefaultPosition(0.5, 0.4) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req10V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.blue_font = app.gfx:loadFont("QData", "Font02V") self.title_text = _S.buy_objects_window.choose_items self.price_text = (_S.buy_objects_window.price .. " "):gsub(" $", " ") self.total_text = (_S.buy_objects_window.total .. " "):gsub(" $", " ") self.item_price = 0 self.total_price = 0 self.list_hover_index = 0 self.preview_anim = TH.animation() self.objects = { } if objects then for _, object in pairs(objects) do self.objects[#self.objects + 1] = {object = object.object, start_qty = object.qty, qty = object.qty, min_qty = object.min_qty} -- Had to make a copy of objects list. Otherwise, we will modify the original variable (Opening dialog twice keeps memory of previously chosen quantities) end else for _, object in ipairs(app.objects) do if object.corridor_object then self.objects[#self.objects + 1] = {object = object, start_qty = 0, qty = 0, min_qty = 0} end end table.sort(self.objects, function(o1, o2) return o1.object.corridor_object < o2.object.corridor_object end) end self:addPanel(228, 0, 0) -- Grid top for y = 33, 103, 10 do self:addPanel(229, 0, y) -- Grid body end self:addPanel(230, 0, 113) -- Grid bottom self:addPanel(231, 0, 148) -- Cost / total top self:addPanel(232, 0, 173) -- Cost / total body self:addPanel(233, 0, 215) -- Cost / total bottom self:addPanel(234, 0, 248) -- Close button background self:addPanel(234, 0, 252) -- Close button background extension self:addPanel(242, 9, 237):makeButton(0, 0, 129, 28, 243, self.close):setTooltip(_S.tooltip.buy_objects_window.cancel) self:addPanel(235, 146, 0) -- List top self:addPanel(236, 146, 223) -- List bottom self:addPanel(237, 154, 238):makeButton(0, 0, 197, 28, 238, self.confirm):setTooltip(_S.tooltip.buy_objects_window.confirm) local i = 1 local function item_callback(index, qty) local is_negative_quantity = qty < 0 return --[[persistable:furnish_corridor_item_callback]] function(window) if window:purchaseItem(index, qty) == 0 and not is_negative_quantity then -- give visual warning that player doesn't have enough $ to buy window.ui.adviser:say(_A.warnings.cannot_afford_2, false, true) window.ui:playSound("wrong2.wav") elseif qty > 0 then window.ui:playSound("AddItemJ.wav") else window.ui:playSound("DelItemJ.wav") end end end for y = 34, 205, 19 do local x = 146 self:addPanel(239, x, y) -- List body if i <= #self.objects then self:addPanel(240, x + 12, y):makeButton(0, 0, 125, 19, 241, item_callback(i, 1), nil, item_callback(i, -1)):setTooltip(self.objects[i].object.tooltip) self:addPanel(244, x + 139, y + 1):makeRepeatButton(0, 0, 17, 17, 245, item_callback(i, -1)):setTooltip(_S.tooltip.buy_objects_window.decrease) self:addPanel(246, x + 183, y + 1):makeRepeatButton(0, 0, 17, 17, 247, item_callback(i, 1)):setTooltip(_S.tooltip.buy_objects_window.increase) end i = i + 1 end self:makeTooltip(_S.tooltip.buy_objects_window.price, 20, 168, 127, 187) self:makeTooltip(_S.tooltip.buy_objects_window.total_value, 20, 196, 127, 215) self:addKeyHandler("return", self.confirm) self:addKeyHandler("keypad enter", self.confirm) end function UIFurnishCorridor:purchaseItem(index, quantity) local o = self.objects[index] local is_negative_quantity = quantity < 0 if self.ui.app.key_modifiers.ctrl then quantity = quantity * 10 elseif self.ui.app.key_modifiers.shift then quantity = quantity * 5 end quantity = quantity + o.qty if quantity < o.min_qty then quantity = o.min_qty elseif quantity > 99 then quantity = 99 end quantity = quantity - o.qty local hospital = self.ui.hospital if hospital.balance >= self.total_price + quantity * hospital:getObjectBuildCost(o.object.id) or is_negative_quantity then o.qty = o.qty + quantity self.total_price = self.total_price + quantity * hospital:getObjectBuildCost(o.object.id) if o.object.id == "reception_desk" then if o.qty > 0 then self.ui:tutorialStep(1, 2, 3) else self.ui:tutorialStep(1, 3, 2) end end else quantity = 0 end return quantity end function UIFurnishCorridor:confirm() self.ui:tutorialStep(1, 3, 4) local to_purchase = {} local to_sell = {} for _, o in ipairs(self.objects) do local build_cost = self.ui.hospital:getObjectBuildCost(o.object.id) if o.qty - o.start_qty > 0 then local diff_qty = o.qty - o.start_qty to_purchase[#to_purchase + 1] = { object = o.object, qty = diff_qty } self.ui.hospital:spendMoney(build_cost * diff_qty, _S.transactions.buy_object .. ": " .. o.object.name, build_cost * diff_qty) elseif o.qty - o.start_qty < 0 then local diff_qty = o.start_qty - o.qty to_sell[#to_sell + 1] = { object = o.object, qty = diff_qty } self.ui.hospital:receiveMoney(build_cost * diff_qty, _S.transactions.sell_object .. ": " .. o.object.name, build_cost * diff_qty) end end if self.edit_dialog then self.edit_dialog:addObjects(to_purchase, false) -- payment already handled here self.edit_dialog:removeObjects(to_sell, false) -- payment already handled here self:close() else if #to_purchase == 0 then self:close() else self.ui:addWindow(UIPlaceObjects(self.ui, to_purchase)) end end end function UIFurnishCorridor:close() self.ui:tutorialStep(1, {2, 3}, 1) if self.edit_dialog then self.edit_dialog:addObjects() -- No objects added. Call the function anyway to handle visibility etc. end Window.close(self) end function UIFurnishCorridor:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = x + self.x, y + self.y self.white_font:draw(canvas, self.title_text, x + 163, y + 18) self.white_font:draw(canvas, self.price_text .. self.item_price, x + 24, y + 173) self.white_font:draw(canvas, self.total_text .. self.total_price, x + 24, y + 202) for i, o in ipairs(self.objects) do local font = self.white_font if i == self.list_hover_index then font = self.blue_font end font:draw(canvas, o.object.name, x + 163, y + 20 + i * 19) font:draw(canvas, o.qty, x + 306, y + 20 + i * 19, 19, 0) end self.preview_anim:draw(canvas, x + 72, y + 57) end function UIFurnishCorridor:onMouseMove(x, y, dx, dy) local repaint = Window.onMouseMove(self, x, y, dx, dy) local hover_idx = 0 if 158 <= x and x < 346 and 34 <= y and y < 224 then hover_idx = math_floor((y - 15) / 19) end if hover_idx ~= self.list_hover_index then if 1 <= hover_idx and hover_idx <= #self.objects then local obj = self.objects[hover_idx].object self.item_price = self.ui.hospital:getObjectBuildCost(obj.id) self.preview_anim:setAnimation(self.anims, obj.build_preview_animation) end self.list_hover_index = hover_idx repaint = true end return repaint end function UIFurnishCorridor:afterLoad(old, new) if old < 101 then self:removeKeyHandler("enter") self:addKeyHandler("return", self.confirm) end if old < 104 then self:addKeyHandler("keypad enter", self.confirm) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/hire_staff.lua000066400000000000000000000237401321660673500216450ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UIHireStaff" (Window) ---@type UIHireStaff local UIHireStaff = _G["UIHireStaff"] function UIHireStaff:UIHireStaff(ui) self:Window() self.modal_class = "main" self.esc_closes = true self.world = ui.app.world self.ui = ui self.width = 242 self.height = 323 self:setDefaultPosition(100, 100) self.panel_sprites = ui.app.gfx:loadSpriteTable("QData", "Req11V", true) self.white_font = ui.app.gfx:loadFont("QData", "Font01V") self.face_parts = ui.app.gfx:loadRaw("Face01V", 65, 1350, nil, "Data", "MPalette.dat") self:addKeyHandler("return", self.hire) self:addKeyHandler("keypad enter", self.hire) -- Left hand side tab backgrounds self:addPanel(253, 0, 0) self:addPanel(254, 0, 83) self:addPanel(254, 0, 162) self:addPanel(255, 0, 241) -- Left hand side tabs local --[[persistable:hire_staff_category]] function category(name, state, btn) if #self.world.available_staff[name] == 0 then self.ui:playSound("wrong2.wav") if state then btn:toggle() end else self.ui:playSound("selectx.wav") self:setCategory(state and name or nil) end end self.tabs = { self:addPanel(264, 8, 8):makeToggleButton(0, 0, 40, 69, 265, category, "Doctor"):setTooltip(_S.tooltip.hire_staff_window.doctors), self:addPanel(266, 8, 87):makeToggleButton(0, 0, 40, 69, 267, category, "Nurse"):setTooltip(_S.tooltip.hire_staff_window.nurses), self:addPanel(268, 8, 166):makeToggleButton(0, 0, 40, 69, 269, category, "Handyman"):setTooltip(_S.tooltip.hire_staff_window.handymen), self:addPanel(270, 8, 245):makeToggleButton(0, 0, 40, 69, 271, category, "Receptionist"):setTooltip(_S.tooltip.hire_staff_window.receptionists), } -- Right hand side self:addPanel(256, 56, 0) -- Dialog header for y = 49, 113, 11 do self:addPanel(257,56, y) -- Dialog background end self.ability_bg_panel = self:addPanel(260, 55, 114) -- Abilities background self.skill_bg_panel = self:addPanel(259, 68, 95):setTooltip(_S.tooltip.hire_staff_window.staff_ability, 109, 95) -- Skill background self.skill_bg_panel.visible = false self:addPanel(261, 55, 160) -- Wage background self.abilities_blanker = self:addColourPanel(73, 133, 156, 34, 60, 174, 203) -- Hides abilities list for y = 207, 262, 3 do self:addPanel(262, 54, y) -- Description background end self:addColourPanel(155, 45, 72, 81, 211, 255, 255) -- Portrait background self:addPanel(263, 56, 263) -- Dialog midpiece self.complete_blanker = self:addColourPanel(68, 15, 161, 257, 60, 174, 203) -- Hides all staff info self:addPanel(272, 56, 277):makeButton(8, 10, 43, 27, 273, self.movePrevious):setTooltip(_S.tooltip.hire_staff_window.prev_person) self:addPanel(274, 106, 277):makeButton(0, 10, 58, 27, 275, self.hire):setTooltip(_S.tooltip.hire_staff_window.hire) self:addPanel(276, 163, 277):makeButton(0, 10, 28, 27, 277, self.close):setTooltip(_S.tooltip.hire_staff_window.cancel) self:addPanel(278, 190, 277):makeButton(0, 10, 44, 27, 279, self.moveNext):setTooltip(_S.tooltip.hire_staff_window.next_person) self:makeTooltip(_S.tooltip.hire_staff_window.salary, 68, 173, 227, 194) self:makeTooltip(_S.tooltip.hire_staff_window.doctor_seniority, 68, 44, 151, 95) self:makeTooltip(_S.tooltip.hire_staff_window.qualifications, 68, 134, 107, 167) self:makeTooltip(_S.tooltip.hire_staff_window.surgeon, 120, 136, 137, 167) self:makeTooltip(_S.tooltip.hire_staff_window.psychiatrist, 137, 136, 164, 167) self:makeTooltip(_S.tooltip.hire_staff_window.researcher, 164, 136, 191, 167) self:updateTooltips() end function UIHireStaff:updateTooltips() local cond = not not self.category self.tooltip_regions[1].enabled = cond cond = cond and self.category == "Doctor" self.tooltip_regions[2].enabled = cond self.tooltip_regions[3].enabled = cond cond = cond and self.current_index and self.world.available_staff[self.category] cond = cond and cond[self.current_index] self.tooltip_regions[4].enabled = cond and cond.is_surgeon >= 1.0 self.tooltip_regions[5].enabled = cond and cond.is_psychiatrist >= 1.0 self.tooltip_regions[6].enabled = cond and cond.is_researcher >= 1.0 end function UIHireStaff:onMouseUp(button, x, y) self.mouse_up_x = self.x + x self.mouse_up_y = self.y + y return Window.onMouseUp(self, button, x, y) end function UIHireStaff:hire() self.ui:tutorialStep(2, {3, 4, 5}, 6) self.ui:tutorialStep(4, 3, 4) local profile if self.category and self.current_index then profile = self.world.available_staff[self.category] profile = profile and profile[self.current_index] end if not profile then self.ui:playSound("wrong2.wav") return end if self.ui.hospital.balance < profile.wage then self:cannotAfford() self.ui:playSound("wrong2.wav") return end self.ui:playSound("YesX.wav") table.remove(self.world.available_staff[self.category], self.current_index) self.ui:addWindow(UIPlaceStaff(self.ui, profile, self.mouse_up_x, self.mouse_up_y)) end function UIHireStaff:cannotAfford() local msg = { (_A.warnings.cannot_afford), (_A.warnings.cash_low_consider_loan), } if msg then self.world.ui.adviser:say(msg[math.random(1, #msg)]) end end function UIHireStaff:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local font = self.white_font local staff = self.world.available_staff font:draw(canvas, #staff.Doctor , x + 16, y + 58, 26, 0) font:draw(canvas, #staff.Nurse , x + 16, y + 137, 26, 0) font:draw(canvas, #staff.Handyman , x + 16, y + 216, 26, 0) font:draw(canvas, #staff.Receptionist, x + 16, y + 295, 26, 0) if self.category and self.current_index then local profile = staff[self.category] profile = profile and profile[self.current_index] if not profile then return end font:draw(canvas, profile.name, x + 79, y + 21) profile:drawFace(canvas, x + 158, y + 48, self.face_parts) font:draw(canvas, "$" .. profile.wage, x + 116, y + 179) font:drawWrapped(canvas, profile.desc, x + 74, y + 205, 149) -- Skill bar if self.skill_bg_panel.visible then local skill_bar_width = math.floor(profile.skill * 40 + 0.5) if skill_bar_width ~= 0 then local px, py = self.skill_bg_panel.x, self.skill_bg_panel.y px = px + x py = py + y for dx = 0, skill_bar_width - 1 do self.panel_sprites:draw(canvas, 3, px + 22 + dx, py + 9) end end end if self.category == "Doctor" then -- Junior / Doctor / Consultant marker self.panel_sprites:draw(canvas, 258, x + 71, y + 49) if profile.is_junior then self.panel_sprites:draw(canvas, 296, x + 79, y + 80) elseif profile.is_consultant then self.panel_sprites:draw(canvas, 296, x + 131, y + 80) else self.panel_sprites:draw(canvas, 296, x + 101, y + 80) end -- Ability markers local px, py = self.ability_bg_panel.x, self.ability_bg_panel.y px = px + x py = py + y if profile.is_surgeon >= 1.0 then self.panel_sprites:draw(canvas, 292, px + 65, py + 22) end if profile.is_psychiatrist >= 1.0 then self.panel_sprites:draw(canvas, 293, px + 82, py + 28) end if profile.is_researcher >= 1.0 then self.panel_sprites:draw(canvas, 294, px + 109, py + 27) end end end end function UIHireStaff:movePrevious() self:moveBy(-1) self.ui:tutorialStep(2, 4, 5) end function UIHireStaff:moveNext() self.ui:tutorialStep(2, 3, 4) self:moveBy(1) end function UIHireStaff:moveBy(n) if self.category then self.current_index = self.current_index + n local category = self.world.available_staff[self.category] if self.current_index < 1 then self.current_index = 1 elseif self.current_index > #category then self.current_index = #category else self.ui:playSound("selectx.wav") self:updateTooltips() return true end end self.ui:playSound("wrong2.wav") return false end function UIHireStaff:setCategory(name) if name == "Receptionist" then self.ui:tutorialStep(2, 2, 3) else self.ui:tutorialStep(2, {3, 4, 5}, 2) end if name == "Doctor" then self.ui:tutorialStep(4, 2, 3) else self.ui:tutorialStep(4, 3, 2) end self.skill_bg_panel.visible = not not name self.complete_blanker.visible = not name self.abilities_blanker.visible = name ~= "Doctor" self.category = name for _, btn in ipairs(self.tabs) do local should_be_toggled = btn.on_click_self == name if btn.toggled ~= should_be_toggled then btn:toggle() end end self.current_index = 1 self:updateTooltips() end function UIHireStaff:close() self.ui:tutorialStep(2, {2, 3, 4, 5}, 1) self.ui:tutorialStep(4, {2, 3}, 1) return Window.close(self) end function UIHireStaff:afterLoad(old, new) if old < 101 then self:removeKeyHandler("enter") self:addKeyHandler("return", self.hire) end if old < 104 then self:addKeyHandler("keypad enter", self.hire) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/information.lua000066400000000000000000000113071321660673500220540ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Dialog that informs the player of for example what the goals for the level are. class "UIInformation" (Window) ---@type UIInformation local UIInformation = _G["UIInformation"] --! Constructor for the Information Dialog. --!param text The text to show, held in a table. All elements of the table will be written -- beneath each other. If instead a table within the table is supplied the texts -- will be shown in consecutive dialogs. --!param use_built_in_font Whether the built-in font should be used to make sure that -- the given message can be read without distortions. function UIInformation:UIInformation(ui, text, use_built_in_font) self:Window() local app = ui.app self.modal_class = "information" self.esc_closes = true self.on_top = true self.ui = ui self.panel_sprites = app.gfx:loadSpriteTable("Data", "PulldV", true) if not use_built_in_font then self.black_font = app.gfx:loadFont("QData", "Font00V") else self.black_font = app.gfx:loadBuiltinFont() self.black_background = true end if type(text[1]) == "table" then self.text = text[1] table.remove(text, 1) self.additional_text = text else self.text = text end -- Window size parameters self.text_width = 300 self.spacing = { l = 40, r = 40, t = 20, b = 20, } self:onChangeLanguage() -- Enter closes the window self:addKeyHandler("return", self.close) self:addKeyHandler("keypad enter", self.close) end function UIInformation:onChangeLanguage() local total_req_height = 0 for _, text in ipairs(self.text) do local _, req_height = self.black_font:sizeOf(text, self.text_width) total_req_height = total_req_height + req_height end self.width = self.spacing.l + self.text_width + self.spacing.r self.height = self.spacing.t + total_req_height + self.spacing.b self:setDefaultPosition(0.5, 0.5) self:removeAllPanels() for x = 4, self.width - 4, 4 do self:addPanel(12, x, 0) -- Dialog top and bottom borders self:addPanel(16, x, self.height-4) end for y = 4, self.height - 4, 4 do self:addPanel(18, 0, y) -- Dialog left and right borders self:addPanel(14, self.width-4, y) end self:addPanel(11, 0, 0) -- Border top left corner self:addPanel(17, 0, self.height-4) -- Border bottom left corner self:addPanel(13, self.width-4, 0) -- Border top right corner self:addPanel(15, self.width-4, self.height-4) -- Border bottom right corner -- Close button self:addPanel(19, self.width - 30, self.height - 30):makeButton(0, 0, 18, 18, 20, self.close):setTooltip(_S.tooltip.information.close) end function UIInformation:draw(canvas, x, y) local dx, dy = x + self.x, y + self.y local background = self.black_background and canvas:mapRGB(0, 0, 0) or canvas:mapRGB(255, 255, 255) canvas:drawRect(background, dx + 4, dy + 4, self.width - 8, self.height - 8) local last_y = dy + self.spacing.t for _, text in ipairs(self.text) do last_y = self.black_font:drawWrapped(canvas, text, dx + self.spacing.l, last_y, self.text_width) end Window.draw(self, canvas, x, y) end function UIInformation:hitTest(x, y) if x >= 0 and y >= 0 and x < self.width and y < self.height then return true else return Window.hitTest(self, x, y) end end function UIInformation:close() self.ui:tutorialStep(3, 16, "next") Window.close(self) if self.additional_text and #self.additional_text > 0 then self.ui:addWindow(UIInformation(self.ui, self.additional_text)) end end function UIInformation:afterLoad(old, new) if old < 101 then self:removeKeyHandler("enter") self:addKeyHandler("return", self.close) end if old < 104 then self:addKeyHandler("keypad enter", self.close) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/jukebox.lua000066400000000000000000000143041321660673500211760ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local ipairs = ipairs class "UIJukebox" (Window) ---@type UIJukebox local UIJukebox = _G["UIJukebox"] function UIJukebox:UIJukebox(app) self:Window() self.modal_class = "jukebox" self.esc_closes = true self.audio = app.audio self.app = app self.ui = app.ui self.width = 259 self.height = 74 + 30 * #self.audio.background_playlist + 18 self:setDefaultPosition(26, 26) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req13V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.blue_font = app.gfx:loadFont("QData", "Font02V") -- Dialog head (current track title & exit button) self:addPanel(389, 0, 0) for x = 30, self.width - 61, 24 do self:addPanel(390, x, 0) end self:addPanel(391, self.width - 61, 0) self:addPanel(409, self.width - 42, 19):makeButton(0, 0, 24, 24, 410, self.close):setTooltip(_S.tooltip.jukebox.close) self.play_btn = self:addPanel(392, 0, 49):makeToggleButton(19, 2, 50, 24, 393, self.togglePlayPause):setSound("selectx.wav"):setTooltip(_S.tooltip.jukebox.play) self:updatePlayButton() self:addPanel(394, 87, 49):makeButton(0, 2, 24, 24, 395, self.audio.playPreviousBackgroundTrack, self.audio):setSound("selectx.wav"):setTooltip(_S.tooltip.jukebox.rewind) self:addPanel(396, 115, 49):makeButton(0, 2, 24, 24, 397, self.audio.playNextBackgroundTrack, self.audio):setSound("selectx.wav"):setTooltip(_S.tooltip.jukebox.fast_forward) self:addPanel(398, 157, 49):makeButton(0, 2, 24, 24, 399, self.stopBackgroundTrack):setSound("selectx.wav"):setTooltip(_S.tooltip.jukebox.stop) self:addPanel(400, 185, 49):makeButton(0, 2, 24, 24, 401, self.loopTrack):setSound("selectx.wav"):setTooltip(_S.tooltip.jukebox.loop) -- Track list self.track_buttons = {} for i, info in ipairs(self.audio.background_playlist) do local y = 47 + i * 30 self:addPanel(402, 0, y) for x = 30, self.width - 61, 24 do self:addPanel(403, x, y) end self.track_buttons[i] = self:addPanel(404, self.width - 61, y):makeToggleButton(19, 4, 24, 24, 405):setSound("selectx.wav") if not info.enabled then self.track_buttons[i]:toggle() end self.track_buttons[i].on_click = --[[persistable:jukebox_toggle_track]] function(window, off) window:toggleTrack(i, info, not off) end end -- Dialog footer local y = 74 + 30 * #self.audio.background_playlist self:addPanel(406, 0, y) for x = 30, self.width - 61, 24 do self:addPanel(407, x, y) end self:addPanel(408, self.width - 61, y) self:makeTooltip(_S.tooltip.jukebox.current_title, 17, 17, 212, 46) end -- makes the play button consistent with the current status of the background music -- running -> toggled -- stopped -> not toggled -- paused -> not toggled function UIJukebox:updatePlayButton() local status = not not self.audio.background_music and not self.audio.background_paused if status ~= self.play_btn.toggled then self.play_btn:toggle() end end function UIJukebox:togglePlayPause() if not self.audio.background_music then -- Update configuration that we want music now. self.app.config.play_music = true self.app:saveConfig() self.audio:playRandomBackgroundTrack() else self.audio:pauseBackgroundTrack() -- Just pausing does not imply that the player will want to have music turned off -- the next time he or she starts the game. end end function UIJukebox:stopBackgroundTrack() -- Pressing this button means that the player doesn't want any -- background music in the future, so set that config flag. self.app.config.play_music = false self.app:saveConfig() self.audio:stopBackgroundTrack() end function UIJukebox:toggleTrack(index, info, on) info.enabled = on if not on and self.audio.background_music == info.music then self.audio:stopBackgroundTrack() self.audio:playRandomBackgroundTrack() end end function UIJukebox:loopTrack() local index = self.audio:findIndexOfCurrentTrack() local playlist = self.audio.background_playlist if playlist[index].loop then playlist[index].loop = false for i, list_entry in ipairs(playlist) do if list_entry.enabled_before_loop and index ~= i then list_entry.enabled_before_loop = nil self:toggleTrack(i, list_entry, true) self.track_buttons[i]:toggle() end end else playlist[index].loop = true for i, list_entry in ipairs(playlist) do if list_entry.enabled and index ~= i then list_entry.enabled_before_loop = true self:toggleTrack(i, list_entry, false) self.track_buttons[i]:toggle() end end end end function UIJukebox:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local playing = self.audio.background_music or "" for i, info in ipairs(self.audio.background_playlist) do local ypos = y + 47 + i * 30 local font = self.white_font if info.music == playing then font = self.blue_font end local str = info.title while font:sizeOf(str) > 185 do str = string.sub(str, 1, string.len(str) - 5) .. "..." end font:draw(canvas, str, x + 24, ypos + 11) if info.music == playing then font:draw(canvas, str, x + 24, self.y + 27) end end end CorsixTH-0.61/CorsixTH/Lua/dialogs/machine_dialog.lua000066400000000000000000000137571321660673500224650ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UIMachine" (Window) ---@type UIMachine local UIMachine = _G["UIMachine"] function UIMachine:UIMachine(ui, machine, room) self:Window() local app = ui.app self.esc_closes = true self.machine = machine self.room = room self.ui = ui self.modal_class = "humanoid_info" self.width = 188 self.height = 206 self:setDefaultPosition(-20, 30) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req03V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self:addPanel(333, 0, 0) -- Dialog header self:addPanel(334, 0, 74) -- The next part for y = 131, 180, 7 do self:addPanel(335, 0, y) -- Some background end self:addPanel(336, 0, 182) -- Dialog footer -- Call button self:addPanel(339, 20, 127) :makeButton(0, 0, 63, 60, 340, self.callHandyman) :setTooltip(_S.tooltip.machine_window.repair) :setSound("selectx.wav") -- Replace button self:addPanel(341, 92, 127) :makeButton(0, 0, 45, 60, 342, self.replaceMachine) :setTooltip(_S.tooltip.machine_window.replace) :setSound("selectx.wav") -- Close button self:addPanel(337, 146, 18):makeButton(0, 0, 24, 24, 338, self.close) :setTooltip(_S.tooltip.machine_window.close) self:makeTooltip(_S.tooltip.machine_window.name, 18, 19, 139, 42) self:makeTooltip(_S.tooltip.machine_window.times_used, 18, 49, 139, 77) self:makeTooltip(_S.tooltip.machine_window.status, 24, 88, 128, 115) end function UIMachine:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local mach = self.machine local font = self.white_font local output if self.room.needs_repair then output = "(" .. mach.object_type.name .. ")" else output = mach.object_type.name end font:draw(canvas, output, x + 27, y + 27) -- Name font:draw(canvas, mach.total_usage, x + 60, y + 59) -- Total number of times used local status_bar_width = math.floor((1 - mach.times_used/mach.strength) * 40 + 0.5) if status_bar_width ~= 0 then for dx = 0, status_bar_width - 1 do self.panel_sprites:draw(canvas, 352, x + 53 + dx, y + 99) -- Or 5 end end end function UIMachine:callHandyman() if self.machine.times_used ~= 0 then local taskIndex = self.machine.hospital:getIndexOfTask(self.machine.tile_x, self.machine.tile_y, "repairing") if taskIndex == -1 then local call = self.ui.app.world.dispatcher:callForRepair(self.machine, false, true) self.machine.hospital:addHandymanTask(self.machine, "repairing", 2, self.machine.tile_x, self.machine.tile_y, call) else self.machine.hospital:modifyHandymanTaskPriority(taskIndex, 2, "repairing") end end end function UIMachine:replaceMachine() local machine = self.machine local hosp = self.ui.hospital local cost = hosp.research.research_progress[machine.object_type].cost if self.ui.hospital.balance < cost then -- give visual warning that player doesn't have enough $ to buy self.ui.adviser:say(_A.warnings.cannot_afford_2, false, true) self.ui:playSound("wrong2.wav") return end self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.replace_machine:format(machine.object_type.name, cost), --[[persistable:replace_machine_confirm_dialog]]function() -- Charge for new machine hosp:spendMoney(cost, _S.transactions.machine_replacement) -- Tell the machine to pretend it's a shiny new one machine:machineReplaced() end )) end function UIMachine:onMouseDown(code, x, y) -- cycle through all machines when you right click on the machine title if code == "right" then if x > 18 and x < 139 then if y > 19 and y < 42 then -- select next machine local ui = self.ui local first_machine, next_machine = nil, self.machine local next_room for _, entity in ipairs(ui.app.world.entities) do -- is a machine and not a slave (e.g. operating_table_b) if class.is(entity, Machine) and not entity.master then next_room = entity:getRoom() if next_room.is_active then if not first_machine then first_machine = entity end if not next_machine then next_machine = entity break elseif entity == next_machine then next_machine = nil end end end end if not next_machine or next_machine == self.machine then next_machine = first_machine end if next_machine and next_machine ~= self.machine then -- center screen on machine local sx, sy = ui.app.map:WorldToScreen(next_machine.tile_x, next_machine.tile_y) local dx, dy = next_machine.th:getPosition() ui:scrollMapTo(sx + dx, sy + dy) -- change window ui:addWindow(UIMachine(ui, next_machine, next_room)) ui:playSound("camclick.wav") end end end end return Window.onMouseDown(self, code, x, y) end CorsixTH-0.61/CorsixTH/Lua/dialogs/menu.lua000066400000000000000000000622571321660673500205050ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local ipairs, math_floor, unpack, select, assert = ipairs, math.floor, unpack, select, assert local TH = require "TH" --! The ingame menu bar which sits (nominally hidden) at the top of the screen. class "UIMenuBar" (Window) ---@type UIMenuBar local UIMenuBar = _G["UIMenuBar"] function UIMenuBar:UIMenuBar(ui, map_editor) self:Window() local app = ui.app self.ui = ui self.on_top = true self.x = 0 self.y = 0 self.width = app.config.width self.height = 16 self.visible = false self.panel_sprites = app.gfx:loadSpriteTable("Data", "PullDV", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.blue_font = app.gfx:loadFont("QData", "Font02V") -- The list of top-level menus, from left to right self.menus = {} -- The menu which the cursor was most recently over -- This should be present in self.open_menus, else it won't be drawn self.active_menu = false -- The list of menus which should be displayed -- This list satifies: open_menus[x] == nil or open_menus[x].level == x self.open_menus = {} if map_editor then self:makeMapeditorMenu(app) else self:makeGameMenu(app) end end function UIMenuBar:onTick() if #self.open_menus > 0 then -- If the deepest menu has no need to be open, close it after a short time -- It needs to be open if the cursor is over it, or the cursor is over the -- item in its parent corresponding to it. local deepest = self.open_menus[#self.open_menus] local parent = deepest.parent if deepest == self.active_menu or (parent and parent == self.active_menu and parent.items[parent.hover_index] and parent.items[parent.hover_index].submenu == deepest) then self.menu_disappear_counter = nil else if self.menu_disappear_counter == 0 then self.menu_disappear_counter = nil local close_to = self.active_menu and self.active_menu.level or 0 for i = #self.open_menus, close_to + 1, -1 do self.open_menus[i] = nil end else self.menu_disappear_counter = (self.menu_disappear_counter or 26) - 1 end end end if self.disappear_counter then if self.disappear_counter == 0 then for i = #self.open_menus, 1, -1 do self.open_menus[i] = nil end self.active_menu = false self.visible = false self.disappear_counter = nil if self.on_top then self.ui:sendToBottom(self) self.on_top = false end else self.disappear_counter = self.disappear_counter - 1 end end Window.onTick(self) end function UIMenuBar:onChangeResolution() self.width = self.ui.app.config.width end function UIMenuBar:onChangeLanguage() local function check_size(menu) menu.has_size = false for _, item in ipairs(menu.items) do if item.submenu then check_size(item.submenu) end end end for _, menu in ipairs(self.menus) do check_size(menu.menu) end end local function assign_menu_levels(menu, level) menu.level = level for _, item in ipairs(menu.items) do if item.submenu then assign_menu_levels(item.submenu, level + 1) end end end --! Add a menu to the menu bar. --!param title Title of the menu (at the bar). --!param menu Menu to add. function UIMenuBar:addMenu(title, menu) assign_menu_levels(menu, 1) local menu_item = { title = title, menu = menu, x = 0, y = 0, height = 16, } if self.menus[1] then menu_item.x = self.menus[#self.menus].x + self.menus[#self.menus].width end menu_item.width = self.white_font:sizeOf(title) + 32 self.menus[#self.menus + 1] = menu_item end function UIMenuBar:draw(canvas) if not self.visible then return end local panel_sprites = self.panel_sprites local panel_sprites_draw = panel_sprites.draw canvas:nonOverlapping() panel_sprites_draw(panel_sprites, canvas, 1, 0, 0) panel_sprites_draw(panel_sprites, canvas, 4, 0, 6) panel_sprites_draw(panel_sprites, canvas, 7, 0, 10) for x = 10, self.width - 10, 10 do panel_sprites_draw(panel_sprites, canvas, 2, x, 0) end for x = 10, self.width - 10, 10 do panel_sprites_draw(panel_sprites, canvas, 5, x, 6) end for x = 10, self.width - 10, 10 do panel_sprites_draw(panel_sprites, canvas, 8, x, 10) end canvas:nonOverlapping(false) local x = self.width - 10 panel_sprites_draw(panel_sprites, canvas, 3, x, 0) panel_sprites_draw(panel_sprites, canvas, 6, x, 6) panel_sprites_draw(panel_sprites, canvas, 9, x, 10) for _, menu in ipairs(self.menus) do self.white_font:draw(canvas, menu.title, menu.x, menu.y, 0, menu.height) end for _, menu in ipairs(self.open_menus) do self:drawMenu(menu, canvas) end -- Draw clock if self.ui.app.config.twentyfour_hour_clock then self.white_font:draw(canvas, os.date("%H:%M"), self.width-45, 2, 0) else self.white_font:draw(canvas, os.date("%I:%M %p"), self.width-65, 2, 0) end end function UIMenuBar:drawMenu(menu, canvas) local panel_sprites = self.panel_sprites local panel_sprites_draw = panel_sprites.draw local x, y, w, h = menu.x, menu.y, menu.width, menu.height canvas:nonOverlapping() menu.render_list:draw(canvas, x, y) canvas:nonOverlapping(false) local btmy = y + h - 6 panel_sprites_draw(panel_sprites, canvas, 3, x + w - 10, y) for ypos = y + 6, y + h - 6, 4 do panel_sprites_draw(panel_sprites, canvas, 6, x + w - 10, ypos) end panel_sprites_draw(panel_sprites, canvas, 9, x + w - 10, btmy) x = menu.x y = menu.y + 4 for i, item in ipairs(menu.items) do -- Update the checkbox status if necessary before drawing if item.is_check_item and item.condition then item.checked = item.condition() end local font = self.white_font if i == menu.hover_index then font = self.blue_font end font:draw(canvas, item.title, x, y) if item.submenu then font:draw(canvas, "+", x + w - 10, y) elseif item.checked then panel_sprites_draw(panel_sprites, canvas, 10, x, y) end y = y + 14 end end function UIMenuBar:hitTestBar(x, y) if y < 16 then for _, menu in ipairs(self.menus) do if menu.x <= x and x < menu.x + menu.width then local submenu = menu.menu submenu.x = menu.x submenu.y = menu.y + menu.height - 2 submenu.hover_index = 0 self:calculateMenuSize(submenu) return submenu end end end return false end function UIMenuBar:onMouseMove(x, y) local padding = 6 local visible = y < self.height + padding local newactive = false if not self.active_menu then for i = #self.open_menus, 1, -1 do if self.open_menus[i]:hitTest(x, y, padding) then self.active_menu = self.open_menus[i] newactive = true break end end end if self.active_menu then local menu = self.active_menu while true do local hit = menu:hitTest(x, y, padding) local toparent = true if hit then toparent = false visible = true if hit ~= true then menu.hover_index = hit else menu.hover_index = 0 if menu.parent and menu.parent:hitTest(x, y, 0) then toparent = true end end local child = menu.items[menu.hover_index] child = not toparent and child and child.submenu if child then child.x = menu.x + menu.width - 10 child.y = menu.y + menu.hover_index * 14 - 14 self:calculateMenuSize(child) self.open_menus[child.level] = child for i = #self.open_menus, child.level + 1, -1 do self.open_menus[i] = nil end if child:hitTest(x, y, 0) then menu.hover_index = 0 self.active_menu = child child.parent = menu menu = child newactive = true else break end elseif not toparent then break end end if toparent then newactive = true menu.hover_index = 0 menu = menu.parent if not menu then local bar_menu = self:hitTestBar(x, y) if bar_menu then self.open_menus = {bar_menu} end self.active_menu = bar_menu or (visible and self.active_menu) break end self.active_menu = menu end end elseif self.ui.down_count ~= 0 then local bar_menu = self:hitTestBar(x, y) if bar_menu then self.open_menus = {bar_menu} self.active_menu = bar_menu end end newactive = newactive or (visible and not self.visible) if visible then self:appear() else self:disappear() end return newactive end function UIMenuBar:appear() self.disappear_counter = nil self.visible = true if not self.on_top then self.ui:sendToTop(self) self.on_top = true end end function UIMenuBar:disappear() if not self.disappear_counter then self.disappear_counter = 100 end end function UIMenuBar:onMouseDown(button, x, y) if button ~= "left" or not self.visible then return end local repaint = false while self.active_menu do local menu = self.active_menu if menu:hitTest(x, y, 0) then if repaint then self:onMouseMove(x, y) end return true end for i = #self.open_menus, self.active_menu.level, -1 do self.open_menus[i] = nil end self.active_menu = menu.parent repaint = true end local new_active = self:hitTestBar(x, y) if new_active ~= self.active_menu then self.open_menus = {new_active} self.active_menu = new_active repaint = true self.ui:playSound("selectx.wav") end return repaint end function UIMenuBar:onMouseUp(button, x, y) if button ~= "left" or not self.visible then return end local repaint = false while self.active_menu do local index = self.active_menu:hitTest(x, y, 0) if index == false then if not self.active_menu.parent and y < 16 then break else self.active_menu = self.active_menu.parent end elseif index == true then break else local item = self.active_menu.items[index] if item.submenu then break elseif item.is_check_item then if item.group then if not item.checked then item.checked = true for _, itm in ipairs(self.active_menu.items) do if itm ~= item and itm.group == item.group then itm.checked = false end end if item.handler then item.handler(item, self.active_menu) end end else item.checked = not item.checked if item.handler then item.handler(item, self.active_menu) end end else if item.handler then item.handler(item, self.active_menu) end if y > 22 then self:disappear() end self.active_menu = false end self.ui:playSound("selectx.wav") repaint = true break end end for i = #self.open_menus, (self.active_menu and self.active_menu.level or 0) + 1, -1 do self.open_menus[i] = nil end return repaint end function UIMenuBar:calculateMenuSize(menu) if menu.has_size ~= self then local w = 20 local h = 6 for _, item in ipairs(menu.items) do local item_w = self.white_font:sizeOf(item.title) + 10 if item_w > w then w = item_w end h = h + 14 end if h < 20 then h = 20 end menu.width = w menu.height = h menu.has_size = self local render_list = TH.spriteList() menu.render_list = render_list render_list:setSheet(self.panel_sprites) render_list:append(1, 0, 0) for x = 10, w - 10, 10 do render_list:append(2, x, 0) end for y = 6, h - 6, 4 do render_list:append(4, 0, y) for x = 10, w - 10, 10 do render_list:append(5, x, y) end end local btmy = h - 6 render_list:append(7, 0, btmy) for x = 10, w - 10, 10 do render_list:append(8, x, btmy) end end end class "UIMenu" ---@type UIMenu local UIMenu = _G["UIMenu"] function UIMenu:UIMenu() self.items = {} self.parent = false self.hover_index = 0 self.has_size = false end function UIMenu:hitTest(x, y, padding) -- number -> hit that item -- true -> hit menu, but not an item -- false -> no hit if self.x - padding <= x and x < self.x + self.width + padding and self.y - padding <= y and y < self.y + self.height + padding then if self.x <= x and x < self.x + self.width then local index = math_floor((y - self.y + 12) / 14) if 1 <= index and index <= #self.items then return index end end return true else return false end end function UIMenu:appendBase(item) self.items[#self.items + 1] = item self.has_size = false return self end function UIMenu:appendItem(text, callback) return self:appendBase { title = text, handler = callback, } end function UIMenu:appendCheckItem(text, checked, callback, group, condition) return self:appendBase { is_check_item = true, title = text, checked = not not checked, handler = callback, group = group, condition = condition } end function UIMenu:appendMenu(text, menu) menu.parent = self return self:appendBase { title = text, submenu = assert(menu, "No submenu"), } end --! Make a menu for the map editor. --!param app Application. function UIMenuBar:makeMapeditorMenu(app) local menu = UIMenu() menu:appendItem(_S.menu_file.load, function() self.ui:addWindow(UILoadMap(self.ui, "map")) end) :appendItem(_S.menu_file.save, function() self.ui:addWindow(UISaveMap(self.ui)) end) :appendItem(_S.menu_file.quit, function() self.ui:quit() end) self:addMenu(_S.menu.file, menu) menu = UIMenu() menu:appendItem(_S.menu_player_count.players_1, function() self.ui.map_editor:setPlayerCount(1) end) :appendItem(_S.menu_player_count.players_2, function() self.ui.map_editor:setPlayerCount(2) end) :appendItem(_S.menu_player_count.players_3, function() self.ui.map_editor:setPlayerCount(3) end) :appendItem(_S.menu_player_count.players_4, function() self.ui.map_editor:setPlayerCount(4) end) self:addMenu(_S.menu.player_count, menu) end --! Make a menu for the game. --!param app Application. function UIMenuBar:makeGameMenu(app) local menu = UIMenu() menu:appendItem(_S.menu_file.load, function() self.ui:addWindow(UILoadGame(self.ui, "game")) end) :appendItem(_S.menu_file.save, function() self.ui:addWindow(UISaveGame(self.ui)) end) :appendItem(_S.menu_file.restart, function() app:restart() end) :appendItem(_S.menu_file.quit, function() self.ui:quit() end) self:addMenu(_S.menu.file, menu) local options = UIMenu() if app.audio.has_bg_music then local function vol(level, setting) if setting == "music" then return level == app.config.music_volume, function() app.audio:setBackgroundVolume(level) app:saveConfig() end, "" elseif setting == "sound" then return level == app.config.sound_volume, function() app.audio:setSoundVolume(level) app:saveConfig() end, "" else return level == app.config.announcement_volume, function() app.audio:setAnnouncementVolume(level) app:saveConfig() end, "" end end local function appendVolume(setting) local volume_menu = UIMenu() -- The three Volume menus for level = 10, 100, 10 do volume_menu:appendCheckItem(_S.menu_options_volume[level], vol(level / 100, setting)) end return volume_menu end options:appendCheckItem(_S.menu_options.sound, app.config.play_sounds, function(item) app.audio:playSoundEffects(item.checked) app:saveConfig() end, nil, function() return app.config.play_sounds end) options:appendCheckItem(_S.menu_options.announcements, app.config.play_announcements, function(item) app.config.play_announcements = item.checked app:saveConfig() end, nil, function() return app.config.play_announcements end) options:appendCheckItem(_S.menu_options.music, app.config.play_music, function(item) app.config.play_music = item.checked self.ui:togglePlayMusic(item) app:saveConfig() end, nil, function(musicStatus) return app.config.play_music end) options :appendMenu(_S.menu_options.sound_vol, appendVolume("sound")) :appendMenu(_S.menu_options.announcements_vol, appendVolume("announcement")) :appendMenu(_S.menu_options.music_vol, appendVolume("music")) :appendItem(_S.menu_options.jukebox, function() self.ui:addWindow(UIJukebox(app)) end) end local function boolean_runtime_config(option) return not not app.runtime_config[option], function(item) app.runtime_config[option] = item.checked end end options:appendCheckItem(_S.menu_options.lock_windows, boolean_runtime_config"lock_windows") options:appendCheckItem(_S.menu_options.edge_scrolling, not app.config.prevent_edge_scrolling, function(item) app.config.prevent_edge_scrolling = not item.checked end, nil, function() return not app.config.prevent_edge_scrolling end) options:appendCheckItem(_S.menu_options.adviser_disabled, not app.config.adviser_disabled, function(item) app.config.adviser_disabled = not item.checked app:saveConfig() end, nil, function() return not app.config.adviser_disabled end) options:appendCheckItem(_S.menu_options.twentyfour_hour_clock, app.config.twentyfour_hour_clock, function(item) app.config.twentyfour_hour_clock = item.checked app:saveConfig() end) local function temperatureDisplay(method) return method == 1, function() app.world.map:setTemperatureDisplayMethod(method) end, "", function () return app.world.map.temperature_display_method == method end end local function wageIncreaseRequests(grant) return grant, function() app.world:getLocalPlayerHospital().policies.grant_wage_increase = grant end, "", function () if app.world:getLocalPlayerHospital().policies.grant_wage_increase == nil then app.world:getLocalPlayerHospital().policies.grant_wage_increase = app.config.grant_wage_increase end return app.world:getLocalPlayerHospital().policies.grant_wage_increase == grant end end options:appendMenu(_S.menu_options.wage_increase, UIMenu() :appendCheckItem(_S.menu_options_wage_increase.grant, wageIncreaseRequests(true)) :appendCheckItem(_S.menu_options_wage_increase.deny, wageIncreaseRequests(false)) ) options:appendMenu(_S.menu_options.warmth_colors, UIMenu() :appendCheckItem(_S.menu_options_warmth_colors.choice_1, temperatureDisplay(1)) :appendCheckItem(_S.menu_options_warmth_colors.choice_2, temperatureDisplay(2)) :appendCheckItem(_S.menu_options_warmth_colors.choice_3, temperatureDisplay(3)) ) local function rate(speed) return speed == "Normal", function() app.world:setSpeed(speed) end, "", function() return app.world:isCurrentSpeed(speed) end end options:appendMenu(_S.menu_options.game_speed, UIMenu() :appendCheckItem(_S.menu_options_game_speed.pause, rate("Pause")) :appendCheckItem(_S.menu_options_game_speed.slowest, rate("Slowest")) :appendCheckItem(_S.menu_options_game_speed.slower, rate("Slower")) :appendCheckItem(_S.menu_options_game_speed.normal, rate("Normal")) -- (default) :appendCheckItem(_S.menu_options_game_speed.max_speed, rate("Max speed")) :appendCheckItem(_S.menu_options_game_speed.and_then_some_more, rate("And then some more")) ) self:addMenu(_S.menu.options, options) self:addMenu(_S.menu.charts, UIMenu() :appendItem(_S.menu_charts.bank_manager, function() self.ui.bottom_panel:dialogBankManager(true) end) :appendItem(_S.menu_charts.statement, function() self.ui.bottom_panel:dialogBankStats(true) end) :appendItem(_S.menu_charts.staff_listing, function() self.ui.bottom_panel:dialogStaffManagement(true) end) :appendItem(_S.menu_charts.town_map, function() self.ui.bottom_panel:dialogTownMap(true) end) :appendItem(_S.menu_charts.casebook, function() self.ui.bottom_panel:dialogDrugCasebook(true) end) :appendItem(_S.menu_charts.research, function() self.ui.bottom_panel:dialogResearch(true) end) :appendItem(_S.menu_charts.status, function() self.ui.bottom_panel:dialogStatus(true) end) :appendItem(_S.menu_charts.graphs, function() self.ui.bottom_panel:dialogCharts(true) end) :appendItem(_S.menu_charts.policy, function() self.ui.bottom_panel:dialogPolicy(true) end) :appendItem(_S.menu_charts.briefing, function() self.ui:showBriefing() end) ) local function _(s) return " " .. s:upper() .. " " end local function limit_camera(item) app.ui:limitCamera(item.checked) end local function disable_salary_raise(item) app.world:debugDisableSalaryRaise(item.checked) end local function overlay(...) local args = {n = select('#', ...), ...} return function(item, m) if args.n > 0 then app.map:loadDebugText(unpack(args, 1, args.n)) else app.map:clearDebugText() end end end local levels_menu = UIMenu() for L = 1, 12 do levels_menu:appendItem((" L%i "):format(L), function() local status, err = pcall(app.loadLevel, app, L) if not status then err = _S.errors.load_prefix .. err print(err) self.ui:addWindow(UIInformation(self.ui, {err})) end end) end if self.ui.app.config.debug then self:addMenu(_S.menu.debug, UIMenu() -- Debug :appendMenu(_S.menu_debug.jump_to_level, levels_menu) :appendItem(_S.menu_debug.connect_debugger, function() self.ui:connectDebugger() end) :appendCheckItem(_S.menu_debug.limit_camera, true, limit_camera, nil, function() return self.ui.limit_to_visible_diamond end) :appendCheckItem(_S.menu_debug.disable_salary_raise, false, disable_salary_raise, nil, function() return self.ui.app.world.debug_disable_salary_raise end) :appendItem(_S.menu_debug.make_debug_fax, function() self.ui:makeDebugFax() end) :appendItem(_S.menu_debug.make_debug_patient, function() self.ui:addWindow(UIMakeDebugPatient(self.ui)) end) :appendItem(_S.menu_debug.cheats, function() self.ui:addWindow(UICheats(self.ui)) end) :appendItem(_S.menu_debug.lua_console, function() self.ui:addWindow(UILuaConsole(self.ui)) end) :appendItem(_S.menu_debug.debug_script, function() self.ui:runDebugScript() end) :appendItem(_S.menu_debug.calls_dispatcher, function() self.ui:addWindow(UICallsDispatcher(self.ui)) end) :appendItem(_S.menu_debug.dump_strings, function() self.ui.app:dumpStrings() end) :appendItem(_S.menu_debug.dump_gamelog, function() self.ui.app.world:dumpGameLog() end) :appendMenu(_S.menu_debug.map_overlay, UIMenu() :appendCheckItem(_S.menu_debug_overlay.none, true, overlay(), "") :appendCheckItem(_S.menu_debug_overlay.flags, false, overlay("flags"), "") :appendCheckItem(_S.menu_debug_overlay.positions, false, overlay("positions"), "") :appendCheckItem(_S.menu_debug_overlay.heat, false, overlay("heat"), "") :appendCheckItem(_S.menu_debug_overlay.byte_0_1, false, overlay(35, 8, 0, 1, false), "") :appendCheckItem(_S.menu_debug_overlay.byte_floor, false, overlay(35, 8, 2, 2, false), "") :appendCheckItem(_S.menu_debug_overlay.byte_n_wall, false, overlay(35, 8, 3, 3, false), "") :appendCheckItem(_S.menu_debug_overlay.byte_w_wall, false, overlay(35, 8, 4, 4, false), "") :appendCheckItem(_S.menu_debug_overlay.byte_5, false, overlay(35, 8, 5, 5, true), "") :appendCheckItem(_S.menu_debug_overlay.byte_6, false, overlay(35, 8, 6, 6, true), "") :appendCheckItem(_S.menu_debug_overlay.byte_7, false, overlay(35, 8, 7, 7, true), "") :appendCheckItem(_S.menu_debug_overlay.parcel, false, overlay("parcel"), "") ) :appendItem(_S.menu_debug.sprite_viewer, function() dofile "sprite_viewer" end) ) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/message.lua000066400000000000000000000145661321660673500211650ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Small fax notification window which sits on the bottom bar. class "UIMessage" (Window) ---@type UIMessage local UIMessage = _G["UIMessage"] function UIMessage:UIMessage(ui, x, stop_x, onClose, type, message, owner, timeout, default_choice, callback) self:Window() local app = ui.app ui:playSound("NewFax.wav") self.esc_closes = false self.on_top = false self.onClose = onClose self.timer = timeout self.default_choice = default_choice self.ui = ui self.message = message self.callback = callback if owner then self.owner = owner if owner.message_callback then owner:message_callback(true) -- There can be only one message per owner, just remove any existing one end assert(owner.message_callback == nil) owner.message_callback = --[[persistable:owner_of_message_callback]] function(humanoid, do_remove) if do_remove then self:removeMessage() else self:openMessage() end end end self.width = 30 self.height = 28 self.stop_x = stop_x self.stop_y = -24 self.x = x self.y = 4 self.panel_sprites = app.gfx:loadSpriteTable("Data", "Panel02V", true) self.type = type local types = { emergency = 43, epidemy = 45, strike = 47, personality = 49, information = 51, disease = 53, report = 55 } local kind = types[type] self.can_dismiss = self.type ~= "strike" and #self.message.choices == 1 self.button = self:addPanel(kind, 0, 0) :setTooltip(self.can_dismiss and _S.tooltip.message.button_dismiss or _S.tooltip.message.button) -- FIXME: tooltip doesn't work very well here :makeToggleButton(0, 0, 30, 28, kind + 1, self.openMessage, nil, self.dismissMessage) -- The emergency has a rotating siren if kind == 43 then self.rotator = {} for i = 57, 60 do self.rotator[i] = self:addPanel(i, 10, 8) self.rotator[i].visible = false end self.active = 57 end end function UIMessage:draw(canvas, x, y) if self.on_top then Window.draw(self, canvas, x, y) else local x_, y_, w, h = canvas:getClip() canvas:setClip(x_, y + self.stop_y, w, self.height, true) Window.draw(self, canvas, x, y) canvas:setClip(x_, y_, w, h) end end function UIMessage:close(...) assert(self.onClose == nil, "UIMessage closed improperly") return Window.close(self, ...) end -- Adjust the toggle state to match if the message is open or not function UIMessage:adjustToggle() if (self.button.toggled and not self.fax) or (not self.button.toggled and self.fax) then self.button:toggle() end end function UIMessage:openMessage() if TheApp.world:isCurrentSpeed("Speed Up") then TheApp.world:previousSpeed() end if not TheApp.world:isCurrentSpeed("Pause") then TheApp.world:setSpeed("Pause") end if self.type == "strike" then -- strikes are special cases, as they are not faxes self.ui:addWindow(UIStaffRise(self.ui, self.owner, self.message)) self:removeMessage() else if self.fax then self.fax:close() else self.fax = UIFax(self.ui, self) self.ui:addWindow(self.fax) self.ui:playSound("fax_in.wav") end -- Manual adjustion of toggle state is necessary if owner's message_callback was used self:adjustToggle() end TheApp.video:setBlueFilterActive(false) end -- Removes the Message, executing a choice if given, else just deletes it --!param choice_number (number) if given, removes the message by executing this choice. function UIMessage:removeMessage(choice_number) if choice_number then if not self.fax then self.fax = UIFax(self.ui, self) -- NB: just create, don't add to ui end self.fax:choice(choice_number) else if self.fax then self.fax:close() end if self.owner then self.owner.message = nil self.owner.message_callback = nil end self:onClose(false) self.onClose = nil self:close() end end -- Tries to dismiss the message. This is only possible if there is only one choice. function UIMessage:dismissMessage() if self.can_dismiss then self:removeMessage(1) else self.ui:playSound("wrong2.wav") self:adjustToggle() end end function UIMessage:setXLimit(stop_x) assert(stop_x <= self.stop_x, "UIMessage moved in wrong direction") self.stop_x = stop_x end function UIMessage:onTick() if self.on_top == false and self.y == self.stop_y then self.on_top = true end if self.y > self.stop_y then local y = self.y - 8 if y > self.stop_y then self.y = y else self.y = self.stop_y end elseif self.x > self.stop_x then local x = self.x - 3 if x > self.stop_x then self.x = x else self.x = self.stop_x end end end function UIMessage:onWorldTick() if self.timer then self.timer = self.timer - 1 if self.timer <= 0 then self.timer = nil self:removeMessage(self.default_choice) end end if self.active then self.rotator[self.active].visible = false if self.active == 60 then self.active = 57 else self.active = self.active + 1 end self.rotator[self.active].visible = true end end function UIMessage:afterLoad(old, new) if old < 21 then -- self.button added; however check for existence first -- since the savegame bump was a couple of revisions later if not self.button then self.button = self.buttons[1] end end Window.afterLoad(self, old, new) end CorsixTH-0.61/CorsixTH/Lua/dialogs/patient.lua000066400000000000000000000311211321660673500211670ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" -- Test for hit within the view circle local --[[persistable:patient_window_is_in_view_circle]] function is_in_view_circle(x, y) return (x - 55)^2 + (y - 254)^2 < 39^2 end --! Individual patient information dialog class "UIPatient" (Window) ---@type UIPatient local UIPatient = _G["UIPatient"] function UIPatient:UIPatient(ui, patient) self:Window() local app = ui.app self.esc_closes = true self.ui = ui self.modal_class = "humanoid_info" self.width = 191 self.height = 310 self:setDefaultPosition(-20, 30) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req02V", true) self.font = app.gfx:loadFont("QData", "Font74V") -- Font used in the treatment history self.patient = patient self.visible_diamond = ui:makeVisibleDiamond(75, 76) self:addPanel(320, 15, 0) -- Graph top self:addPanel(321, 15, 61) -- Graph bottom self.history_panel = self:addColourPanel(36, 22, 99, 88, 223, 223, 223) -- Treatment history background self.history_panel:makeButton(0, 0, 99, 88, nil, --[[persistable:patient_toggle_history]] function() self.history_panel.visible = not self.history_panel.visible end):setTooltip(_S.tooltip.patient_window.graph) -- Treatment history toggle self.history_panel.visible = false -- Hide the treatment history at start self:addPanel(322, 15, 126) -- Happiness / thirst / temperature sliders self:addPanel(323, 0, 201) -- View circle top self:addPanel(324, 0, 254) -- View circle bottom self:addPanel(325, 147, 21):makeButton(0, 0, 24, 24, 326, self.close):setTooltip(_S.tooltip.patient_window.close) -- If the patient has been diagnosed the "guess cure" button is not visible and -- if the patient is going home it is not possible to kick him/her anymore. self:addPanel(411, 14 + 132, 61 + 19):makeButton(0, 0, 25, 31, 412, self.viewQueue):setTooltip(_S.tooltip.patient_window.queue) -- Initialize all buttons and blankers, then call the update function which decides what to show. -- Show the drug casebook only after the disease has been diagnosed. self.disease_button = self:addPanel(329, 14 + 117, 61 + 107) :makeButton(0, 0, 38, 38, 330, self.viewDiseases):setTooltip(_S.tooltip.patient_window.casebook) self.disease_blanker = self:addColourPanel(14 + 115, 61 + 105, 45, 45, 113, 117, 170) self.home_button = self:addPanel(331, 14 + 95, 61 + 158):makeButton(0, 0, 60, 60, 332, self.goHome):setTooltip(_S.tooltip.patient_window.send_home) self.home_blanker = self:addColourPanel(14 + 93, 61 + 156, 67, 67, 113, 117, 170) self.guess_button = self:addPanel(413, 14 + 117, 61 + 58):makeButton(0, 0, 38, 38, 414, self.guessDisease):setTooltip(_S.tooltip.patient_window.abort_diagnosis) self.guess_blanker = self:addColourPanel(14 + 115, 61 + 56, 45, 45, 113, 117, 170) -- Set correct initial visibility/enabledness of the three buttons and their blankers self:updateInformation() self:makeTooltip(_S.tooltip.patient_window.happiness, 33, 117, 124, 141) self:makeTooltip(_S.tooltip.patient_window.thirst, 33, 141, 124, 169) self:makeTooltip(_S.tooltip.patient_window.warmth, 33, 169, 124, 203) -- Non-rectangular tooltip has to be realized with dynamic tooltip at the moment self:makeDynamicTooltip(--[[persistable:patient_window_center_tooltip]]function(x, y) if is_in_view_circle(x, y) then return _S.tooltip.patient_window.center_view end end, 17, 216, 92, 292) -- Always add this because of a race condition if the user clicks a patient -- that's already going home, then clicks another, the handler is left empty. Bad. -- Just do a going_home check when called. self:addKeyHandler("H", self.goHome) end --! Normalise warmth of a patient. --!param warmth (number or nil) If given, the fraction of warmth of the patient. --!return (float) Normalized warmth level. function UIPatient.normaliseWarmth(warmth) if not warmth then return 0.5 end -- Return 1/2 if unknown. if warmth < 0.08 then warmth = 0 elseif warmth > 0.50 then warmth = 1 else warmth = (warmth - 0.08) / (0.50 - 0.08) end return warmth end --! Draw a bar in the patient dialogue window. --!param canvas Canvas to draw at. --!param xbase Horizontal base position. --!param ybase Vertical base position. --!param xpos Horizontal offset. --!param ypos Vertical offset. --!param value Fraction to draw. function UIPatient:drawBar(canvas, xbase, ybase, xpos, ypos, value) local width = math.floor(value * 40 + 0.5) for dx = 0, width - 1 do self.panel_sprites:draw(canvas, xbase, xpos + 58 + dx, ypos + ybase) end end function UIPatient:draw(canvas, x_, y_) local x, y = self.x + x_, self.y + y_ local map = self.ui.app.map local patient = self.patient -- If the patient has just despawned, then it will have no tile, hence -- making it impossible to render said patient. In this case, the dialog -- should close. Note that it is slightly better to close the dialog during -- the draw callback rather than the tick callback, as doing so in the tick -- callback would be removing from the window list while said list is being -- iterated, causing the next window in the list to miss it's tick (rendering -- is done via a reverse traversal, which does not suffer this problem). if not patient.tile_x then self:close() return end local px, py = map:WorldToScreen(patient.tile_x, patient.tile_y) local dx, dy = patient.th:getMarker() px = px + dx - 37 py = py + dy - 61 -- If the patient is spawning or despawning, or just on the map edge, then -- the rendering point needs adjustment to keep the rendered region entirely -- within the map (this situation doesn't occur very often, but we need to -- handle it properly when it does occur). px, py = self.ui.limitPointToDiamond(px, py, self.visible_diamond, true) self.ui.app.map:draw(canvas, px, py, 75, 76, x + 17, y + 216) Window.draw(self, canvas, x_, y_) -- The patient bars (happiness, thirst, and warmth). local warmth = self.normaliseWarmth(patient.attributes["warmth"]) self:drawBar(canvas, 348, 126, x, y, patient.attributes["happiness"] or 0.5) self:drawBar(canvas, 351, 154, x, y, 1 - (patient.attributes["thirst"] or 0.5)) self:drawBar(canvas, 349, 183, x, y, warmth) if self.history_panel.visible then self:drawTreatmentHistory(canvas, x + 40, y + 25) elseif patient.health_history then self:drawHealthHistory(canvas, x, y) end end --! List the treatments that were performed on the patient. --!param canvas Destination to draw on. --!param x (int) X position of the top of the list. --!param y (int) Y position of the top of the list. function UIPatient:drawTreatmentHistory(canvas, x, y) for _, room in ipairs(self.patient.treatment_history) do y = self.font:drawWrapped(canvas, room, x, y, 95) end end --! Draw the health graph of the patient. --!param canvas Destination to draw on. --!param x (int) X position of the top-left of the graph. --!param y (int) Y position of the top-left of the graph. function UIPatient:drawHealthHistory(canvas, x, y) -- Sizes and positions of the graph in the window. local hor_length = 76 local vert_length = 70 local startx = 58 local starty = 27 -- Health history information. local hh = self.patient.health_history local index = hh["last"] local size = hh["size"] local dx = hor_length / size local line = nil -- Make a line the first time we find a non-nil value. for _ = 1, size do index = (index == size) and 1 or (index + 1) if hh[index] then local posy = starty + (1.0 - hh[index]) * vert_length if not line then line = TH.line() line:setWidth(2) line:setColour(200, 55, 30, 255) line:moveTo(startx, posy) else line:lineTo(startx, posy) end end startx = startx + dx end if line then line:draw(canvas, x, y) end end function UIPatient:onMouseDown(button, x, y) self.do_scroll = button == "left" and is_in_view_circle(x, y) return Window.onMouseDown(self, button, x, y) end function UIPatient:onMouseUp(button, x, y) local ui = self.ui if button == "left" then self.do_scroll = false end local repaint = Window.onMouseUp(self, button, x, y) if button == "right" and is_in_view_circle(x, y) then -- Right click goes to the next patient local patient_index = nil for i, patient in ipairs(ui.hospital.patients) do if patient == self.patient then patient_index = i break end end patient_index = (patient_index or 0) + 1 local patient = ui.hospital.patients[patient_index] or ui.hospital.patients[1] if patient then ui:addWindow(UIPatient(ui, patient)) return false end end return repaint end function UIPatient:onMouseMove(x, y, dx, dy) self.do_scroll = self.do_scroll and is_in_view_circle(x, y) return Window.onMouseMove(self, x, y, dx, dy) end --[[! Scrolls the map to the position of the patient which this dialog belongs to ]] function UIPatient:scrollToPatient() local ui = self.ui local patient = self.patient local px, py = ui.app.map:WorldToScreen(patient.tile_x, patient.tile_y) local dx, dy = patient.th:getPosition() ui:scrollMapTo(px + dx, py + dy) end function UIPatient:onTick() if self.do_scroll then self:scrollToPatient() end return Window.onTick(self) end function UIPatient:updateInformation() local patient = self.patient if patient.diagnosed then self.disease_button.enabled = true self.disease_button.visible = true self.disease_blanker.visible = false else self.disease_button.enabled = false self.disease_button.visible = false self.disease_blanker.visible = true end if patient.going_home then self.home_button.enabled = false self.home_button.visible = false self.home_blanker.visible = true else self.home_button.enabled = true self.home_button.visible = true self.home_blanker.visible = false end if patient.is_debug or patient.diagnosis_progress == 0 or patient.diagnosed or patient.going_home then self.guess_button.enabled = false self.guess_button.visible = false self.guess_blanker.visible = true else self.guess_button.enabled = true self.guess_button.visible = true self.guess_blanker.visible = false end end function UIPatient:viewQueue() for _, action in ipairs(self.patient.action_queue) do if action.name == "queue" then self.ui:addWindow(UIQueue(self.ui, action.queue)) self.ui:playSound("selectx.wav") return end end self.ui:playSound("wrong2.wav") end function UIPatient:goHome() if self.patient.going_home then return end self:close() self.patient:playSound("sack.wav") self.patient:goHome("kicked") self.patient:updateDynamicInfo(_S.dynamic_info.patient.actions.sent_home) end function UIPatient:viewDiseases() local dlg = UICasebook(self.ui, self.patient.diagnosed and self.patient.disease.id or nil) self.ui:addWindow(dlg) end function UIPatient:guessDisease() local patient = self.patient -- NB: the first line of conditions should already be ruled out by button being disabled, but just in case if patient.is_debug or patient.diagnosis_progress == 0 or patient.diagnosed or patient.going_home or patient:getRoom() or not patient.hospital.disease_casebook[patient.disease.id].discovered then self.ui:playSound("wrong2.wav") return end patient:setDiagnosed() if patient:agreesToPay(patient.disease.id) then patient:setNextAction(SeekRoomAction(patient.disease.treatment_rooms[1]):enableTreatmentRoom(), 1) else patient:goHome("over_priced") end end function UIPatient:hitTest(x, y) return Window.hitTest(self, x, y) or is_in_view_circle(x, y) end CorsixTH-0.61/CorsixTH/Lua/dialogs/place_objects.lua000066400000000000000000000710001321660673500223200ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" local ipairs, math_floor = ipairs, math.floor -- Visually, it looks better to have the object being placed not attached to a -- tile (so that it is always on top of walls, etc.), but for debugging it can -- be useful to attach it to a tile. local ATTACH_BLUEPRINT_TO_TILE = false --! The dialog shown when placing objects. class "UIPlaceObjects" (Window) ---@type UIPlaceObjects local UIPlaceObjects = _G["UIPlaceObjects"] --[[ Constructor for the class. !param ui (UI) The active ui. !param object_list (table) a list of tables with objects to place. Keys are "object", "qty" and "existing_object". The first is the object_type of the object, the second how many, and if the key "existing_object" is set it should be an already existing object that is about to be moved. In particular, if that object has a variable called current_frame then that frame will be used when drawing the object as it is being moved. ]] function UIPlaceObjects:UIPlaceObjects(ui, object_list, pay_for) self:Window() object_list = object_list or {} -- Default argument local app = ui.app self.modal_class = "main" self.ui = ui self.map = app.map self.anims = app.anims self.world = app.world self.width = 186 self.height = 167 + #object_list * 29 self:setDefaultPosition(0.9, 0.1) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req05V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.blue_font = app.gfx:loadFont("QData", "Font02V") self.title_text = _S.rooms_short.corridor_objects self.desc_text = _S.place_objects_window.place_objects_in_corridor self:addPanel(112, 0, 0) -- Dialog header for y = 48, 83, 7 do self:addPanel(113, 0, y) -- Desc text box end self:addPanel(114, 0, 90) -- Dialog mid-piece self:addPanel(115, 0, 100):makeButton(9, 8, 41, 42, 116, self.cancel):setSound("no4.wav"):setTooltip(_S.tooltip.place_objects_window.cancel) self:addKeyHandler("escape", self.cancel) self.purchase_button = self:addPanel(117, 50, 100):makeButton(1, 8, 41, 42, 118, self.purchaseItems):setTooltip(_S.tooltip.place_objects_window.buy_sell) :setDisabledSprite(127):enable(false) -- Disabled purchase items button self.pickup_button = self:addPanel(119, 92, 100):makeButton(1, 8, 41, 42, 120, self.pickupItems):setTooltip(_S.tooltip.place_objects_window.pick_up) :setDisabledSprite(128):enable(false):makeToggle() -- Disabled pick up items button self.confirm_button = self:addPanel(121, 134, 100):makeButton(1, 8, 43, 42, 122, self.confirm):setTooltip(_S.tooltip.place_objects_window.confirm) :setDisabledSprite(129):enable(false):setSound("YesX.wav") -- Disabled confirm button self.list_header = self:addPanel(123, 0, 146) -- Object list header self.list_header.visible = false self.objects = {} self.object_footprint = {} self.num_slots = 0 self:addObjects(object_list, pay_for) self:addKeyHandler("space", self.tryNextOrientation) ui:setWorldHitTest(false) end -- changes the window size and buttons to num_slots slots function UIPlaceObjects:resize(num_slots) if self.num_slots == num_slots then return end if num_slots == 0 then self.list_header.visible = false else self.list_header.visible = true end local function idx(i) return --[[persistable:place_objects_idx1]] function(window) if i == window.active_index then window:nextOrientation() else window.place_objects = true window:setActiveIndex(i) -- Stop picking up items when user presses object in list local edit_room_window = window.ui:getWindow(UIEditRoom) if edit_room_window and edit_room_window.in_pickup_mode then edit_room_window:stopPickupItems() end end end end if self.num_slots < num_slots then -- change last panel if self.num_slots > 0 then local last_panel = self.panels[#self.panels - 1] last_panel.y = last_panel.y + 4 last_panel.sprite_index = 124 end -- add new panels (save last one) for i = self.num_slots + 1, num_slots - 1 do self:addPanel(124, 0, 121 + i * 29) :makeButton(15, 8, 130, 23, 125, idx(i)) :preservePanel() end -- add last new panel self:addPanel(156, 0, 117 + num_slots * 29) :makeButton(15, 12, 130, 23, 125, idx(num_slots)) :preservePanel() else -- remove buttons for _ = self.num_slots, num_slots + 1, -1 do -- NB: Two panels per item, the latter being a dummy for the button self.panels[#self.panels] = nil self.panels[#self.panels] = nil self.buttons[#self.buttons] = nil if num_slots > 0 then -- change appearance of last panel local last_panel = self.panels[#self.panels - 1] last_panel.y = last_panel.y - 4 last_panel.sprite_index = 156 end end end self.num_slots = num_slots self.height = 167 + (num_slots) * 29 end function UIPlaceObjects:addObjects(object_list, pay_for) self.visible = true -- even if no objects are to be placed, make the window visible again if not object_list then object_list = {} end if #object_list == 0 and #self.objects == 0 then return end -- Detect objects already existing in self.objects and increment its quantity -- rather than adding new objects lines. local new_index = 1 while true do local new_object = object_list[new_index] if not new_object then break end for _, object in ipairs(self.objects) do if new_object.qty > 0 and new_object.object.thob == object.object.thob then object.qty = object.qty + new_object.qty if pay_for then local build_cost = self.ui.hospital:getObjectBuildCost(new_object.object.id) local msg = _S.transactions.buy_object .. ": " .. object.object.name self.ui.hospital:spendMoney(new_object.qty * build_cost, msg, new_object.qty * build_cost) end -- If this is an object that has been created in the world already, add it to the -- associated list of objects to re-place. if new_object.existing_object then if not object.existing_objects then object.existing_objects = {} end -- Insert the new object in the beginning of the list so that that this object -- is the one to be placed first. (LIFO) table.insert(object.existing_objects, 1, new_object.existing_object) end table.remove(object_list, new_index) new_index = new_index - 1 break end end new_index = new_index + 1 end self.place_objects = true -- When adding objects guess we want to place objects self.object_anim = TH.animation() self.object_slave_anim = TH.animation() local total_objects = #self.objects + #object_list self:resize(total_objects) for _, object in pairs(object_list) do if object.existing_object then object.existing_objects = {object.existing_object} end self.objects[#self.objects + 1] = object if pay_for then local build_cost = self.ui.hospital:getObjectBuildCost(object.object.id) local msg = _S.transactions.buy_object .. ": " .. object.object.name self.ui.hospital:spendMoney(object.qty * build_cost, msg, object.qty * build_cost) end end -- sort list by size of object (number of tiles in the first existing orientation (usually north)) table.sort(self.objects, function(o1, o2) local orient1 = o1.object.orientations.north or o1.object.orientations.east or o1.object.orientations.south or o1.object.orientations.west local orient2 = o2.object.orientations.north or o2.object.orientations.east or o2.object.orientations.south or o2.object.orientations.west return #orient1.footprint > #orient2.footprint end) self.active_index = 0 -- avoid case of index changing from 1 to 1 self:setActiveIndex(1) self:onCursorWorldPositionChange(self.ui:getCursorPosition(self)) end -- precondition: self.active_index has to correspond to the object to be removed function UIPlaceObjects:removeObject(object, dont_close_if_empty, refund) if refund then local build_cost = self.ui.hospital:getObjectBuildCost(object.object.id) local msg = _S.transactions.sell_object .. ": " .. object.object.name self.ui.hospital:receiveMoney(build_cost, msg, build_cost) end object.qty = object.qty - 1 -- Prefer to remove objects not yet placed local existing_no = object.existing_objects and #object.existing_objects or 0 if existing_no > 0 then if object.qty < #object.existing_objects then -- The object is already as good as destroyed. It is only known in this list. table.remove(object.existing_objects, 1) end end if object.qty == 0 then if #self.objects == 1 then self:clearBlueprint() self.object_cell_x = nil self.object_cell_y = nil if dont_close_if_empty then self.list_header.visible = false self.place_objects = false -- No object to place else self:close() return end end local idx = self.active_index table.remove(self.objects, idx) self:resize(#self.objects) self.active_index = 0 -- avoid case of index changing from 1 to 1 self:setActiveIndex(1) else -- Make sure the correct frame is shown for the next object self:setOrientation(self.object_orientation) end -- Update blueprint self:setBlueprintCell(self.object_cell_x, self.object_cell_y) end function UIPlaceObjects:removeAllObjects(refund) -- There is surely a nicer way to implement this than the current hack. Rewrite it sometime later. self:setActiveIndex(1) for _ = 1, #self.objects do for _ = 1, self.objects[1].qty do self:removeObject(self.objects[1], true, refund) end end end function UIPlaceObjects:removeObjects(object_list, refund) -- rewrite at some point.. if not object_list then object_list = {} end for _, o in ipairs(object_list) do for j, p in ipairs(self.objects) do if o.object.id == p.object.id then self.active_index = j for _ = 1, o.qty do self:removeObject(p, true, refund) end end end end end function UIPlaceObjects:close() self.ui:tutorialStep(1, {4, 5}, 1) self:removeAllObjects(true) self:clearBlueprint() self.ui:setWorldHitTest(true) return Window.close(self) end function UIPlaceObjects:cancel() self:close() end function UIPlaceObjects:setActiveIndex(index) if index == self.active_index or #self.objects == 0 then return end self.active_index = index local object = self.objects[self.active_index].object if object.id == "reception_desk" then self.ui:tutorialStep(1, 6, 4) else self.ui:tutorialStep(1, {4, 5}, 6) end local anims = self.anims local grey_scale = anims.Alt32_GreyScale local _, ghost = self.ui.app.gfx:loadPalette() for _, anim in pairs(object.idle_animations) do anims:setAnimationGhostPalette(anim, ghost, grey_scale) end if object.slave_type then for _, anim in pairs(object.slave_type.idle_animations) do anims:setAnimationGhostPalette(anim, ghost, grey_scale) end end if object.locked_to_wall then local wx, wy, wo = self:calculateBestPlacementPosition(0, 0) self.object_cell_x, self.object_cell_y = wx, wy self:setOrientation(wo) else self.object_orientation = "west" self:nextOrientation() end end local orient_mirror = { north = "west", west = "north", east = "south", south = "east", } local orient_next = { north = "east", east = "south", south = "west", west = "north", } function UIPlaceObjects:setOrientation(orient) self.object_orientation = orient local object_data = self.objects[self.active_index] local object = object_data.object local anim = object.idle_animations[orient] local flag = 0 if not anim then anim = object.idle_animations[orient_mirror[orient]] flag = 1 end if object.orientations[orient].early_list then flag = flag + 1024 end self.object_anim:setAnimation(self.anims, anim, flag) if object.slave_type then local slave_flag = flag - (flag % 2) local slave_anim = object.slave_type.idle_animations[orient] if not slave_anim then slave_anim = object.slave_type.idle_animations[orient_mirror[orient]] slave_flag = slave_flag + 1 end self.object_slave_anim:setAnimation(self.anims, slave_anim, slave_flag) end local present_object if object_data.existing_objects and #object_data.existing_objects > 0 then present_object = object_data.existing_objects[1] end if present_object and present_object.current_frame then self.object_anim:setFrame(present_object.current_frame) end local px, py = unpack(object.orientations[orient].render_attach_position) if type(px) == "table" then px, py = unpack(px) end px, py = Map:WorldToScreen(px + 1, py + 1) px = object.orientations[orient].animation_offset[1] + px py = object.orientations[orient].animation_offset[2] + py self.object_anim:setPosition(px, py) if object.slave_type then px, py = unpack(object.slave_type.orientations[orient].render_attach_position) if type(px) == "table" then px, py = unpack(px) end local offset = object.orientations[orient].slave_position if offset then px = px + offset[1] py = py + offset[2] end px, py = Map:WorldToScreen(px + 1, py + 1) px = object.slave_type.orientations[orient].animation_offset[1] + px py = object.slave_type.orientations[orient].animation_offset[2] + py self.object_slave_anim:setPosition(px, py) end self:setBlueprintCell(self.object_cell_x, self.object_cell_y) end function UIPlaceObjects:nextOrientation() if not self.object_anim then return end local object = self.objects[self.active_index].object if object.locked_to_wall then -- Orientation is dictated by the nearest wall return end local orient = self.object_orientation repeat orient = orient_next[orient] until object.orientations[orient] self:setOrientation(orient) end function UIPlaceObjects:tryNextOrientation() if #self.objects > 0 then self.ui:playSound("swoosh.wav") self.objects[self.active_index].orientation_before = self.object_orientation self:nextOrientation() end end function UIPlaceObjects:onMouseUp(button, x, y) local repaint = Window.onMouseUp(self, button, x, y) -- We don't want to place objects because we are selecting new objects for adding in a room being built/edited -- Or the game is paused. if not self.place_objects or not self.world.user_actions_allowed then return end if button == "right" then self:tryNextOrientation() repaint = true elseif button == "left" then if #self.objects > 0 then if 0 <= x and x < self.width and 0 <= y and y < self.height then -- Click within window - do nothing elseif self.object_cell_x and self.object_cell_y and self.object_blueprint_good then self:placeObject() repaint = true elseif self.object_cell_x and self.object_cell_y and not self.object_blueprint_good then self.ui:tutorialStep(3, {13, 15}, 14) end end end return repaint end function UIPlaceObjects:placeObject(dont_close_if_empty) if not self.place_objects then -- We don't want to place objects because we are selecting new objects for adding in a room being built/edited return end local object = self.objects[self.active_index] if object.object.id == "reception_desk" then self.ui:tutorialStep(1, 4, "next") end local real_obj -- There might be an existing object that has been picked up. if object.existing_objects and #object.existing_objects > 0 then real_obj = object.existing_objects[1] table.remove(object.existing_objects, 1) end local room = self.room or self.world:getRoom(self.object_cell_x, self.object_cell_y) if real_obj then -- If there is such an object then we don't want to make a new one, but move this one instead. if real_obj.orientation_before and real_obj.orientation_before ~= self.object_orientation then real_obj:initOrientation(self.object_orientation) end self.world:prepareFootprintTilesForBuild(real_obj.footprint, self.object_cell_x, self.object_cell_y) real_obj:setTile(self.object_cell_x, self.object_cell_y) self.world:objectPlaced(real_obj) if real_obj.slave then self.world:objectPlaced(real_obj.slave) end -- Some objects (e.g. the plant) uses this flag to avoid doing stupid things when picked up. real_obj.picked_up = false -- Machines may have smoke, recalculate it to ensure the animation is in the correct state if real_obj.strength then real_obj:calculateSmoke(room) end else local object_footprint = object.object.orientations[self.object_orientation].footprint self.world:prepareFootprintTilesForBuild(object_footprint, self.object_cell_x, self.object_cell_y) real_obj = self.world:newObject(object.object.id, self.object_cell_x, self.object_cell_y, self.object_orientation) end if room then room.objects[real_obj] = true end self.ui:playSound("place_r.wav") self:removeObject(object, dont_close_if_empty) object.orientation_before = nil return real_obj end function UIPlaceObjects:draw(canvas, x, y) if not self.visible then return -- Do nothing if dialog is not visible end -- Don't show the object if the game is paused if self.world.user_actions_allowed then if not ATTACH_BLUEPRINT_TO_TILE and self.object_cell_x and self.object_anim then local xpos, ypos = self.ui:WorldToScreen(self.object_cell_x, self.object_cell_y) local zoom = self.ui.zoom_factor if canvas:scale(zoom) then xpos = math.floor(xpos / zoom) ypos = math.floor(ypos / zoom) end self.object_anim:draw(canvas, xpos, ypos) if self.objects[self.active_index].object.slave_type then self.object_slave_anim:draw(canvas, xpos, ypos) end canvas:scale(1) end end Window.draw(self, canvas, x, y) x, y = x + self.x, y + self.y self.white_font:draw(canvas, self.title_text, x + 17, y + 21, 153, 0) self.white_font:drawWrapped(canvas, self.desc_text, x + 20, y + 46, 147) for i, o in ipairs(self.objects) do local font = self.white_font local ypos = y + 136 + i * 29 if i == self.active_index then font = self.blue_font end font:draw(canvas, o.object.name, x + 15, ypos, 130, 0) font:draw(canvas, o.qty, x + 151, ypos, 19, 0) end end function UIPlaceObjects:clearBlueprint() local map = self.map.th if self.object_anim then self.object_anim:setTile(nil) end if self.object_slave_anim then self.object_slave_anim:setTile(nil) end for _, xy in ipairs(self.object_footprint) do if xy[1] ~= 0 then map:setCell(xy[1], xy[2], 4, 0) end end end local flag_alpha75 = 256 * 8 local flag_altpal = 16 function UIPlaceObjects:setBlueprintCell(x, y) self:clearBlueprint() self.object_cell_x = x self.object_cell_y = y if x and y and #self.objects > 0 then local object = self.objects[self.active_index].object local object_footprint = object.orientations[self.object_orientation].footprint local map = self.map.th if #object_footprint ~= #self.object_footprint then self.object_footprint = {} for i = 1, #object_footprint do self.object_footprint[i] = {} end end local optional_tiles = 0 for _, tile in ipairs(object_footprint) do if tile.optional then optional_tiles = optional_tiles + 1 end end local flags = {} local allgood = true local opt_tiles_blocked = 0 local world = self.ui.app.world local player_id = self.ui.hospital:getPlayerIndex() local roomId = self.room and self.room.id local passable_flag local direction = self.object_orientation local direction_parameters = { north = { x = 0, y = -1, buildable_flag = "buildableNorth", passable_flag = "travelNorth", needed_side = "need_north_side"}, east = { x = 1, y = 0, buildable_flag = "buildableEast", passable_flag = "travelEast", needed_side = "need_east_side"}, south = { x = 0, y = 1, buildable_flag = "buildableSouth", passable_flag = "travelSouth", needed_side = "need_south_side"}, west = { x = -1, y = 0, buildable_flag = "buildableWest", passable_flag = "travelWest", needed_side = "need_west_side"} } -- The given footprint tile is not usable, update the external 'allgood' -- variable accordingly. local function setAllGood(xy) if xy.optional then opt_tiles_blocked = opt_tiles_blocked + 1 if opt_tiles_blocked >= optional_tiles then allgood = false end else allgood = false end end for i, tile in ipairs(object_footprint) do local xpos = x + tile[1] local ypos = y + tile[2] -- Check 1: Does the tile have valid map coordinates?: if not world:isOnMap(xpos, ypos) then setAllGood(tile) xpos = 0 ypos = 0 else local flag = "buildable" local good_tile = 24 + flag_alpha75 local bad_tile = 67 + flag_alpha75 if tile.only_passable then flag = "passable" end if tile.only_side then if object.thob == 50 and direction == "east" then direction = "west" end flag = direction_parameters[direction]["buildable_flag"] passable_flag = direction_parameters[direction]["passable_flag"] end -- Check 2: Is the tile in the object's allowed room?: local result = world:willObjectsFootprintTileBeWithinItsAllowedRoomIfLocatedAt(xpos, ypos, object, roomId) local is_object_allowed = result.within_room roomId = result.roomId -- Check 3: The footprint tile should either be buildable or passable, is it?: if not tile.only_side and is_object_allowed then is_object_allowed = world:isFootprintTileBuildableOrPassable(xpos, ypos, tile, object_footprint, flag, player_id) elseif is_object_allowed then is_object_allowed = map:getCellFlags(xpos, ypos, flags)[flag] and (player_id == 0 or flags.owner == player_id) end -- ignore placed object tile if it is shareable if not tile.shareable and is_object_allowed then -- Check 4: only one object per tile allowed original TH -- can build on litter and unoccupied tiles and only placeable if not on another objects passable footprint unless that too is a shareable tile local objchk = map:getCellFlags(xpos, ypos, flags)["thob"] is_object_allowed = objchk == 0 or objchk == 62 or objchk == 64 -- no object, litter/puke, ratholes is_object_allowed = is_object_allowed and world:isTileExclusivelyPassable(xpos, ypos, 10) end -- Having checked if the tile is good set its blueprint appearance flag: if is_object_allowed then if not tile.invisible then map:setCell(xpos, ypos, 4, good_tile) end else if not tile.invisible then map:setCell(xpos, ypos, 4, bad_tile) end setAllGood(tile) end end self.object_footprint[i][1] = xpos self.object_footprint[i][2] = ypos end if self.object_anim and object.class ~= "SideObject" then if allgood then allgood = not world:wouldNonSideObjectBreakPathfindingIfSpawnedAt(x, y, object, self.object_orientation, roomId) end if ATTACH_BLUEPRINT_TO_TILE then self.object_anim:setTile(map, x, y) end self.object_anim:setPartialFlag(flag_altpal, not allgood) self.object_slave_anim:setPartialFlag(flag_altpal, not allgood) self.object_blueprint_good = allgood self.ui:tutorialStep(1, allgood and 5 or 4, allgood and 4 or 5) elseif object.class == "SideObject" then if map:getCellFlags(x, y)[passable_flag] == true then local checked_x, checked_y = x, y if passable_flag == "travelNorth" or passable_flag == "travelSouth" then checked_y = checked_y + (passable_flag == "travelNorth" and -1 or 1) else checked_x = checked_x + (passable_flag == "travelEast" and 1 or -1) end flags = {} flags[passable_flag] = false map:setCellFlags(x, y, flags) if not world.pathfinder:findDistance(x, y, checked_x, checked_y) then --we need to check if the failure to get the distance is due to the presence of an object in the adjacent tile if map:getCellFlags(checked_x, checked_y)["passable"] then allgood = false end end flags[passable_flag] = true map:setCellFlags(x, y, flags) end if ATTACH_BLUEPRINT_TO_TILE then self.object_anim:setTile(map, x, y) end self.object_anim:setPartialFlag(flag_altpal, not allgood) self.object_slave_anim:setPartialFlag(flag_altpal, not allgood) self.object_blueprint_good = allgood self.ui:tutorialStep(1, allgood and 5 or 4, allgood and 4 or 5) end else self.object_footprint = {} end end local function NearestPointOnLine(lx1, ly1, lx2, ly2, px, py) -- Translate everything to make one line segment endpoint be on the origin local lx = lx1 - lx2 local ly = ly1 - ly2 px = px - lx2 py = py - ly2 -- Project point onto line (scale everything to make (lx, ly) be on the unit -- circle, then dot product). local d = (lx * px + ly * py) / (lx * lx + ly * ly) if d <= 0 then return lx2, ly2 elseif d >= 1 then return lx1, ly1 else return d * lx1 + (1 - d) * lx2, d * ly1 + (1 - d) * ly2 end end function UIPlaceObjects:calculateBestPlacementPosition(x, y) local object = self.objects[self.active_index].object local room = self.room local wx, wy = self.ui:ScreenToWorld(self.x + x, self.y + y) local bestd = nil local bestx, besty = wx, wy local besto = self.object_orientation if room and object.locked_to_wall then if object.locked_to_wall.north then local px, py = NearestPointOnLine(room.x + 0.5, room.y + 0.5, room.x + room.width - 0.5, room.y + 0.5, wx, wy) local d = ((px - wx)^2 + (py - wy)^2)^0.5 if not bestd or d < bestd then bestd, bestx, besty, besto = d, px, py, object.locked_to_wall.north end end if object.locked_to_wall.west then local px, py = NearestPointOnLine(room.x + 0.5, room.y + 0.5, room.x + 0.5, room.y + room.height - 0.5, wx, wy) local d = ((px - wx)^2 + (py - wy)^2)^0.5 if not bestd or d < bestd then bestx, besty, besto = px, py, object.locked_to_wall.west end end -- TODO: East, South end bestx, besty = math_floor(bestx), math_floor(besty) if bestx < 1 or besty < 1 or bestx > self.map.width or besty > self.map.height then bestx, besty = nil, nil end return bestx, besty, besto end function UIPlaceObjects:onCursorWorldPositionChange(x, y) local repaint = Window.onCursorWorldPositionChange(self, x, y) if not self.place_objects then -- We don't want to place objects because we are selecting new objects for adding in a room being built/edited return repaint end repaint = true if self.world.user_actions_allowed then local wx, wy, wo = self:calculateBestPlacementPosition(x, y) if wx ~= self.object_cell_x or wy ~= self.object_cell_y then self:setBlueprintCell(wx, wy) repaint = true end if wo ~= self.object_orientation then self:setOrientation(wo) repaint = true end else self:clearBlueprint() end return repaint end function UIPlaceObjects:selectObjectType(object_type) for i, o in ipairs(self.objects) do if o.object.id == object_type.id then self:setActiveIndex(i) return end end end CorsixTH-0.61/CorsixTH/Lua/dialogs/place_staff.lua000066400000000000000000000127521321660673500220030ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local math_floor = math.floor local TH = require "TH" --! Invisible window which handles placing a `Staff` member in the world. class "UIPlaceStaff" (Window) ---@type UIPlaceStaff local UIPlaceStaff = _G["UIPlaceStaff"] function UIPlaceStaff:UIPlaceStaff(ui, profile, x, y) self.ui = ui self.world = ui.app.world self.modal_class = "main" self.esc_closes = true if class.is(profile, Staff) then self.staff = profile profile = profile.profile end self.profile = profile -- The receptionist has no door animations, and hence would not -- be able to leave a room if placed in one. self.allow_in_rooms = profile.humanoid_class ~= "Receptionist" self.anim = TH.animation() self.anim:setLayer(5, profile.layer5) local idle_anim = Humanoid.getIdleAnimation(profile.humanoid_class) self.anim:setAnimation(self.world.anims, idle_anim) local _, ghost = ui.app.gfx:loadPalette() local grey_scale = self.world.anims.Alt32_GreyScale self.world.anims:setAnimationGhostPalette(idle_anim, ghost, grey_scale) self:onCursorWorldPositionChange(x, y) self:Window() end function UIPlaceStaff:close() if self.staff then self.staff.pickup = false self.staff.going_to_staffroom = nil self.staff.action_queue[1].window = nil self.staff:setNextAction(MeanderAction()) elseif self.profile then self.ui:tutorialStep(2, {6, 7}, 1) self.ui:tutorialStep(4, {4, 5}, 1) -- Return the profile to the available staff list local staff_pool = self.world.available_staff[self.profile.humanoid_class] staff_pool[#staff_pool + 1] = self.profile end self.ui:playSound("plac_st2.wav") Window.close(self) end function UIPlaceStaff:onCursorWorldPositionChange(x, y) x, y = self.ui:ScreenToWorld(x, y + 14) self.tile_x = math_floor(x) self.tile_y = math_floor(y) end local flag_cache = {} local flag_altpal = 16 function UIPlaceStaff:draw(canvas) if self.world.user_actions_allowed then self.world.map.th:getCellFlags(self.tile_x, self.tile_y, flag_cache) local room = self.world:getRoom(self.tile_x, self.tile_y) local player_id = self.ui.hospital:getPlayerIndex() local valid = flag_cache.hospital and flag_cache.passable and (self.allow_in_rooms or flag_cache.roomId == 0) and (not room and true or not room.crashed) and flag_cache.owner == player_id self.anim:setFlag(valid and 0 or flag_altpal) local zoom = self.ui.zoom_factor if canvas:scale(zoom) then local x, y = self.ui:WorldToScreen(self.tile_x, self.tile_y) self.anim:draw(canvas, math.floor(x / zoom), math.floor(y / zoom)) canvas:scale(1) else self.anim:draw(canvas, self.ui:WorldToScreen(self.tile_x, self.tile_y)) end self.ui:tutorialStep(2, valid and 7 or 6, valid and 6 or 7) self.ui:tutorialStep(4, valid and 5 or 4, valid and 4 or 5) end end function UIPlaceStaff:onMouseUp(button, x, y) if self.world.user_actions_allowed then if button == "right" then self:close() return true elseif button == "left" then self:onMouseMove(x, y) self.world.map.th:getCellFlags(self.tile_x, self.tile_y, flag_cache) local room = self.world:getRoom(self.tile_x, self.tile_y) local player_id = self.ui.hospital:getPlayerIndex() if flag_cache.hospital and flag_cache.passable and (self.allow_in_rooms or flag_cache.roomId == 0) and (not room or not room.crashed) and flag_cache.owner == player_id then if self.staff then self.staff:setTile(self.tile_x, self.tile_y) else local entity = self.world:newEntity("Staff", 2) entity:setProfile(self.profile) self.profile = nil entity:setTile(self.tile_x, self.tile_y) self.ui.hospital:addStaff(entity) entity:setHospital(self.ui.hospital) local entity_room = entity:getRoom() if entity_room then entity_room:onHumanoidEnter(entity) else entity:onPlaceInCorridor() end self.ui:tutorialStep(2, 6, "next") self.ui:tutorialStep(4, 4, "next") -- Update the staff management window if it is open. local window = self.world.ui:getWindow(UIStaffManagement) if window then window:updateStaffList(self) end end self:close() return true else self.ui.adviser:say(_A.placement_info.staff_cannot_place) return true end end end end CorsixTH-0.61/CorsixTH/Lua/dialogs/queue_dialog.lua000066400000000000000000000275601321660673500222020ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" --! Room / door / reception desk queue visualisation dialog. class "UIQueue" (Window) ---@type UIQueue local UIQueue = _G["UIQueue"] function UIQueue:UIQueue(ui, queue) self:Window() local app = ui.app self.esc_closes = true self.ui = ui self.modal_class = "main" self.width = 604 self.height = 122 self:setDefaultPosition(0.5, 0.5) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req06V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.queue = queue self:addPanel(364, 0, 0) -- Right extremity of the panel for x = 21, 83, 4 do self:addPanel(365, x, 0) end self:addPanel(366, 85, 0) for x = 223, 531, 7 do self:addPanel(367, x, 0) end self:addPanel(368, 529, 0) -- Left extremity of the panel self:addPanel(369, 97, self.height - 33):makeButton(0, 0, 17, 17, 370, self.decreaseMaxSize):setTooltip(_S.tooltip.queue_window.dec_queue_size) self:addPanel(371, 144, self.height - 33):makeButton(0, 0, 17, 17, 372, self.increaseMaxSize):setTooltip(_S.tooltip.queue_window.inc_queue_size) self:addPanel(373, self.width - 42, 17):makeButton(0, 0, 24, 24, 374, self.close):setTooltip(_S.tooltip.queue_window.close) self:makeTooltip(_S.tooltip.queue_window.num_in_queue, 15, 15, 163, 36) self:makeTooltip(_S.tooltip.queue_window.num_expected, 15, 39, 163, 60) self:makeTooltip(_S.tooltip.queue_window.num_entered, 15, 62, 163, 83) self:makeTooltip(_S.tooltip.queue_window.max_queue_size, 15, 87, 163, 108) self:makeTooltip(_S.tooltip.queue_window.front_of_queue, 168, 25, 213, 105) self:makeTooltip(_S.tooltip.queue_window.end_of_queue, 543, 51, 586, 105) self:makeTooltip(_S.tooltip.queue_window.patient .. " " .. _S.misc.not_yet_implemented, 218, 15, 537, 107) end function UIQueue:decreaseMaxSize() local amount = 1 if self.ui.app.key_modifiers.ctrl then amount = amount * 10 elseif self.ui.app.key_modifiers.shift then amount = amount * 5 end self.queue:decreaseMaxSize(amount) end function UIQueue:increaseMaxSize() local amount = 1 if self.ui.app.key_modifiers.ctrl then amount = amount * 10 elseif self.ui.app.key_modifiers.shift then amount = amount * 5 end self.queue:increaseMaxSize(amount) end function UIQueue:draw(canvas, x, y) Window.draw(self, canvas, x, y) x, y = self.x + x, self.y + y local font = self.white_font local queue = self.queue local num_patients = queue:reportedSize() font:draw(canvas, _S.queue_window.num_in_queue, x + 22, y + 22) font:draw(canvas, num_patients, x + 140, y + 22) font:draw(canvas, _S.queue_window.num_expected, x + 22, y + 45) font:draw(canvas, queue:expectedSize(), x + 140, y + 45) font:draw(canvas, _S.queue_window.num_entered, x + 22, y + 68) font:draw(canvas, queue.visitor_count, x + 140, y + 68) font:draw(canvas, _S.queue_window.max_queue_size, x + 22, y + 93) font:draw(canvas, queue.max_size, x + 119, y + 93) self:drawPatients(canvas, x, y) -- Draw dragged patient in the cursor location if self.dragged then self:drawPatient(canvas, self.dragged.x, self.dragged.y, self.dragged.patient) end end local function isInsideQueueBoundingBox(x, y) local x_min = 219 local x_max = 534 local y_min = 15 local y_max = 105 return not (x < x_min or x > x_max or y < y_min or y > y_max) end function UIQueue:onMouseDown(button, x, y) -- Allow normal window operations if the mouse is outside the listing of patients if not isInsideQueueBoundingBox(x, y) then return Window.onMouseDown(self, button, x, y) end local x_min = 219 local y_min = 15 self.hovered = self:getHoveredPatient(x - x_min, y - y_min) -- Select patient to drag - if left clicking. if button == "left" then self.dragged = self.hovered if self.dragged then self.dragged.x = x + self.x self.dragged.y = y + self.y end elseif button == "right" and self.hovered then -- Otherwise bring up the choice screen. self.just_added = true self.ui:addWindow(UIQueuePopup(self.ui, self.x + x, self.y + y, self.hovered.patient)) end end function UIQueue:onMouseUp(button, x, y) if self.just_added then self.just_added = false else -- Always remove any leftover popup windows local window = self.ui:getWindow(UIQueuePopup) if window then window:close() end end if button == "left" then local queue = self.queue local num_patients = queue:reportedSize() local width = 276 self.ui:setCursor(self.ui.default_cursor) -- reset cursor if not self.dragged then return Window.onMouseUp(self, button, x, y) end -- Check whether the dragged patient is still in the queue local index = -1 for i = 1, num_patients do if self.dragged.patient == queue:reportedHumanoid(i) then index = i break end end if index == -1 then self.dragged = nil return end if x > 170 and x < 210 and y > 25 and y < 105 then -- Inside door bounding box queue:move(index, 1) -- move to front elseif x > 542 and x < 585 and y > 50 and y < 105 then -- Inside exit sign bounding box queue:move(index, num_patients) -- move to back elseif isInsideQueueBoundingBox(x, y) then local dx = 1 if num_patients ~= 1 then dx = math.floor(width / (num_patients - 1)) end queue:move(index, math.floor((x - 220) / dx) + 1) -- move to dropped position self:onMouseMove(x, y, 0, 0) end -- Try to drop to another room local room local wx, wy = self.ui:ScreenToWorld(x + self.x, y + self.y) wx = math.floor(wx) wy = math.floor(wy) if wx > 0 and wy > 0 and wx < self.ui.app.map.width and wy < self.ui.app.map.height then room = self.ui.app.world:getRoom(wx, wy) end -- The new room must be of the same class as the current one local this_room = self.dragged.patient.next_room_to_visit if this_room and room and room ~= this_room and room.room_info.id == this_room.room_info.id then -- Move to another room local patient = self.dragged.patient patient:setNextAction(room:createEnterAction(patient)) patient.next_room_to_visit = room patient:updateDynamicInfo(_S.dynamic_info.patient.actions.on_my_way_to:format(room.room_info.name)) room.door.queue:expect(patient) room.door:updateDynamicInfo() end end self.dragged = nil end function UIQueue:onMouseMove(x, y, dx, dy) local x_min = 219 local y_min = 15 if self.dragged then self.dragged.x = x + self.x self.dragged.y = y + self.y -- Change cursor when outside queue dialog if x > 0 and x < 605 and y > 0 and y < 120 then self.ui:setCursor(self.ui.default_cursor) else self.ui:setCursor(self.ui.app.gfx:loadMainCursor("queue_drag")) end end if not isInsideQueueBoundingBox(x, y) then self.hovered = nil Window:onMouseMove(x, y, dx, dy) return end -- Update hovered patient self.hovered = self:getHoveredPatient(x - x_min, y - y_min) Window:onMouseMove(x, y, dx, dy) end function UIQueue:close() -- Always remove any leftover popup windows local window = self.ui:getWindow(UIQueuePopup) if window then window:close() end Window.close(self) end function UIQueue:getHoveredPatient(x, y) local queue = self.queue local num_patients = queue:reportedSize() local width = 276 local gap = 10 x = x - 15 -- sprite offset local dx = 0 if num_patients ~= 1 then dx = math.floor(width / (num_patients - 1)) end local offset = 0 local closest = nil -- Find the closest patient to the given x-coordinate for index = 1, num_patients do local patient = queue:reportedHumanoid(index) local patient_x = (index - 1) * dx + offset local diff = math.abs(patient_x - x) -- Take into account the gap between the hovered patient and other patients if self.hovered and patient == self.hovered.patient then offset = gap * 2 diff = diff + gap end if not closest or diff < closest.diff then closest = {patient = patient, diff = diff, x = x} end end -- The closest patient must be close enough (i.e. almost over the patient sprite) if not closest or closest.diff > 25 then return nil end return {patient = closest.patient, x = closest.x} end function UIQueue:drawPatients(canvas, x, y) local queue = self.queue local num_patients = queue:reportedSize() local width = 276 local gap = 10 local dx = 0 if not self.hovered then if num_patients ~= 1 then dx = math.floor(width / (num_patients - 1)) end for index = 1, num_patients do local patient = queue:reportedHumanoid(index) self:drawPatient(canvas, x + 239 + dx * (index - 1), y + 75, patient) end else if num_patients ~= 1 then dx = math.floor((width - 2 * gap) / (num_patients - 1)) end x = x + 239 y = y + 75 for index = 1, num_patients do local patient = queue:reportedHumanoid(index) if patient == self.hovered.patient then x = x + gap self:drawPatient(canvas, x, y - 10, patient) x = x + gap + dx else self:drawPatient(canvas, x, y, patient) x = x + dx end end end end function UIQueue:drawPatient(canvas, x, y, patient) local anim = TH.animation() local idle_anim = patient.getIdleAnimation(patient.humanoid_class) anim:setAnimation(self.ui.app.world.anims, idle_anim, 1) -- flag 1 is for having patients in west position (looking the door in the dialog) for layer, id in pairs(patient.layers) do anim:setLayer(layer, id) end anim:draw(canvas, x, y) -- Also draw the mood of the patient, if any. local mood = patient:getCurrentMood() if mood then mood:draw(canvas, x, y + 24) end end class "UIQueuePopup" (Window) ---@type UIQueuePopup local UIQueuePopup = _G["UIQueuePopup"] function UIQueuePopup:UIQueuePopup(ui, x, y, patient) self:Window() self.esc_closes = true self.ui = ui self.patient = patient self.width = 188 self.height = 68 local app = ui.app self.modal_class = "popup" self:setDefaultPosition(x, y) -- Background sprites self:addPanel(375, 0, 0) -- Buttons self:addPanel(0, 12, 12):makeButton(0, 0, 81, 54, 378, self.sendToReception) self:addPanel(0, 95, 12):makeButton(0, 0, 81, 54, 379, self.sendHome) self:addPanel(377, 0, 58) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req06V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") end function UIQueuePopup:draw(canvas, x, y) Window.draw(self, canvas, x, y) -- TODO: Same as above. -- x, y = self.x + x, self.y + y --[[for i, hospital in ipairs(self.ui.app.world.hospitals) do self.white_font:draw(canvas, hospital.name:upper() , x + 74, y + 78 + (i-1)*34, 92, 0) end]] end function UIQueuePopup:sendToReception() self.patient:setNextAction(SeekReceptionAction()) self:close() end function UIQueuePopup:sendHome() self.patient:goHome("kicked") self:close() end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizable.lua000066400000000000000000000164351321660673500215160ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Class for resizable windows. --! If resizable is set to true, the user can resize by clicking and dragging --any of the corners. class "UIResizable" (Window) ---@type UIResizable local UIResizable = _G["UIResizable"] local border_offset_x = 9 local border_offset_y = 9 local border_size_x = 40 local border_size_y = 40 function UIResizable:UIResizable(ui, width, height, colour, no_borders, background_bevel) self:Window() local app = ui.app self.ui = ui self.resizable = false -- by default, not user-resizable if not no_borders then self.border_sprites = app.gfx:loadSpriteTable("Bitmap", "aux_ui", true) end if background_bevel then self.background_panel = self:addBevelPanel(0, 0, 0, 0, colour) self.background_panel.lowered = true else self.background_panel = self:addColourPanel(0, 0, 0, 0, 0, 0, 0) end -- Minimum size. Can be changed per window, but should never be smaller than this -- because it would result in visual glitches self.min_width = 50 self.min_height = 50 self.border_pos = {} self.border_pos.left = -border_offset_x self.border_pos.upper = -border_offset_y -- NB: intentionally calling like this to allow subclasses to extend setSize without being called from here UIResizable.setSize(self, width, height) self:setColour(colour) end function UIResizable:setSize(width, height) width = math.max(self.min_width, width) height = math.max(self.min_height, height) self.width = width self.height = height self.background_panel.w = width self.background_panel.h = height self.border_pos.right = self.width self.border_pos.corner_right = self.width - border_size_x self.border_pos.lower = self.height self.border_pos.corner_lower = self.height - border_size_y end function UIResizable:setColour(colour) self.colour = colour self.background_panel:setColour(colour) end function UIResizable:draw(canvas, x, y) local sprites = self.border_sprites if sprites then local draw = sprites.draw local xabs = self.x + x local yabs = self.y + y canvas:nonOverlapping(true) draw(sprites, canvas, 10, xabs + self.border_pos.left , yabs + self.border_pos.upper) -- upper left corner draw(sprites, canvas, 12, xabs + self.border_pos.corner_right, yabs + self.border_pos.upper) -- upper right corner draw(sprites, canvas, 15, xabs + self.border_pos.left , yabs + self.border_pos.corner_lower) -- lower left corner draw(sprites, canvas, 17, xabs + self.border_pos.corner_right, yabs + self.border_pos.corner_lower) -- lower right corner for xpos = xabs + border_size_x, xabs + self.border_pos.corner_right - 1, border_size_x do draw(sprites, canvas, 11, xpos, yabs + self.border_pos.upper) -- upper edge draw(sprites, canvas, 16, xpos, yabs + self.border_pos.lower) -- lower edge end for ypos = yabs + border_size_y, yabs + self.border_pos.corner_lower - 1, border_size_y do draw(sprites, canvas, 13, xabs + self.border_pos.left, ypos) -- left edge draw(sprites, canvas, 14, xabs + self.border_pos.right, ypos) -- right edge end canvas:nonOverlapping(false) end -- Draw window components Window.draw(self, canvas, x, y) end function UIResizable:onMouseDown(button, x, y) local res = self.resizable and self:hitTestCorners(x, y) if res then self:beginResize(x, y, res) return true end return Window.onMouseDown(self, button, x, y) end function UIResizable:hitTest(x, y) if x >= 0 and y >= 0 and x < self.width and y < self.height then -- inside window return Window.hitTest(self, x, y) end local sprites = self.border_sprites if not sprites then return false end if x < -9 or y < -9 or x >= self.width + 9 or y >= self.height + 9 then -- outside border bounds return false end if (0 <= x and x < self.width) or (0 <= y and y < self.height) then -- edges (upper/lower/left/right) return true end return self:hitTestCorners(x, y) and true end --! Tests if any of the four corners of the window border is hit --!param x the x coordinate to test --!param y the y coordinate to test --!return (boolean or string) false if not hit, else a string to denote which corner was hit (can be "ul", "ur", "ll" or "lr") function UIResizable:hitTestCorners(x, y) if self.border_sprites then local yzone = (-9 <= y and y < 0) and "u" or (self.height <= y and y < self.height + 9) and "l" local xzone = (-9 <= x and x < 0) and "l" or (self.width <= x and x < self.width + 9) and "r" local sprite_ids = {ul = 10, ur = 12, ll = 15, lr = 17} if yzone and xzone then local zone = yzone .. xzone local dy = (yzone == "u" and self.border_pos.upper or self.border_pos.corner_lower) local dx = (xzone == "l" and self.border_pos.left or self.border_pos.corner_right) return self.border_sprites:hitTest(sprite_ids[zone], x - dx, y - dy) and zone end end return false end --[[ Initiate resizing of the resizable window. !param x The X position of the cursor in window co-ordinatees. !param y The Y position of the cursor in window co-ordinatees. !param mode Either one of "ul", "ur", "ll" or "lr" to denote in which direction to resize. (upper/lower + left/right) ]] function UIResizable:beginResize(x, y, mode) local orig_x = self.x local orig_y = self.y local ref_x = self.x + x local ref_y = self.y + y local orig_width = self.width local orig_height = self.height self.dragging = true self.ui.drag_mouse_move = --[[persistable:window_resize_mouse_move]] function (sx, sy) -- sx and sy are cursor screen co-ords. Convert to relative change. sx = sx - ref_x sy = sy - ref_y local invert_x = mode == "ul" or mode == "ll" local invert_y = mode == "ul" or mode == "ur" sx = invert_x and -sx or sx sy = invert_y and -sy or sy self:setSize(orig_width + sx, orig_height + sy) local new_x, new_y if invert_x then new_x = orig_x + orig_width - self.width end if invert_y then new_y = orig_y + orig_height - self.height end if new_x or new_y then self:setPosition(new_x or orig_x, new_y or orig_y) end end end function UIResizable:afterLoad(old, new) Window.afterLoad(self, old, new) if old < 65 then -- added min_width and min_height self.min_width = 50 self.min_height = 50 end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/000077500000000000000000000000001321660673500211655ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/calls_dispatcher.lua000066400000000000000000000145041321660673500252000ustar00rootroot00000000000000--[[ Copyright (c) 2010 Sam Wong Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Calls Dispatcher Window class "UICallsDispatcher" (UIResizable) ---@type UICallsDispatcher local UICallsDispatcher = _G["UICallsDispatcher"] local col_bg = { red = 154, green = 146, blue = 198, } local col_button = { red = 84, green = 200, blue = 84, } local col_shadow = { red = 134, green = 126, blue = 178, } function UICallsDispatcher:UICallsDispatcher(ui) local app = ui.app self:UIResizable(ui, 320, 350, col_bg) self.ui = ui self.dispatcher = app.world.dispatcher self.on_top = false self.esc_closes = true self.resizable = false self.call_list = {} self.list_table = {} self.rows_shown = 0 self:createControls() self:setDefaultPosition(0.05, 0.05) self.default_button_sound = "selectx.wav" self.dispatcher:addChangeCallback(self.update, self) self:update() end local row_height = 20 local window_margin = 15 function UICallsDispatcher:createControls() local rows = math.floor((self.height - window_margin * 3 - 60) / row_height) if rows ~= self.rows_shown then local function assigned_factory(num) return --[[persistable:calls_dispatcher_assigned_button]] function(window) window:itemButtonClicked(num) end end local function task_factory(num) return --[[persistable:calls_dispatcher_task_button]] function(window) window:itemButtonClicked(num) end end local callback = --[[persistable:calls_dispatcher_scrollbar]] function() self:scrollbarChange() end self.rows_shown = rows self.list_table = {} local y = window_margin for i = 1, rows, 1 do local assigned_panel = self:addBevelPanel(window_margin, y, 20, row_height, col_button) local assigned_button = assigned_panel:makeButton(0, 0, 20, row_height, nil, assigned_factory(i)) :setTooltip(_S.tooltip.calls_dispatcher.assigned) local task_panel = self:addBevelPanel(50, y, self.width - 50 - 40 - window_margin, row_height, col_bg) local task_button = task_panel:makeButton(0, 0, self.width - 50 - 40 - window_margin, row_height, nil, task_factory(i)) :setTooltip(_S.tooltip.calls_dispatcher.task) table.insert(self.list_table, { assigned_panel = assigned_panel, assigned_button = assigned_button, task_panel = task_panel, task_button = task_button, }) y = y + row_height end self.summary_panel = self:addColourPanel(50, y + 10, self.width - 50 - 40 - window_margin, 20, col_bg.red, col_bg.green, col_bg.blue) self.scrollbar = self:addColourPanel(self.width - window_margin - 20, window_margin, 20, row_height * rows, col_shadow.red, col_shadow.green, col_shadow.blue) :makeScrollbar(col_bg, callback, 1, 1, 10, 1) self.close_button = self:addBevelPanel(window_margin, y + 20 + window_margin, self.width - 2 * window_margin, 40, col_bg):setLabel(_S.calls_dispatcher.close) :makeButton(0, 0, self.width - 2 * window_margin, 40, nil, self.close):setTooltip(_S.tooltip.calls_dispatcher.close) end end function UICallsDispatcher:update() self.call_list = {} local assigned = 0 for _, queue in pairs(self.dispatcher.call_queue) do for _, call in pairs(queue) do table.insert(self.call_list, call) if call.assigned then assigned = assigned + 1 end end end table.sort(self.call_list, function(a,b) if a.created == nil or b.created == nil then return false end return a.created < b.created end ) self.summary_panel:setLabel(_S.calls_dispatcher.summary:format(#self.call_list, assigned), nil, "left") self.scrollbar:setRange(1, math.max(1, #self.call_list), self.rows_shown, self.scrollbar.value) self:scrollbarChange() end function UICallsDispatcher:scrollToEntity(entity) local x, y = self.ui.app.map:WorldToScreen(entity.tile_x, entity.tile_y) local px, py = entity.th:getMarker() self.ui:scrollMapTo(x + px, y + py) end function UICallsDispatcher:scrollToRoom(room) local x, y = self.ui.app.map:WorldToScreen(room.x + room.width / 2, room.y + room.height / 2) self.ui:scrollMapTo(x, y) end function UICallsDispatcher:itemButtonClicked(index) local call = self.call_list[index + self.scrollbar.value - 1] if call and call.assigned then self.ui:addWindow(UIStaff(self.ui, call.assigned)) end if call and call.object then if class.is(call.object, Room) then self:scrollToRoom(call.object) elseif class.is(call.object, Entity) then self:scrollToEntity(call.object) end end end function UICallsDispatcher:scrollbarChange() local scroll_pos = self.scrollbar.value for i = 1, self.rows_shown, 1 do local call = self.call_list[i + scroll_pos - 1] local row = self.list_table[i] if call then row.assigned_panel:setLabel(call.assigned and "@" or '') row.assigned_button:enable(call.assigned and true or false) row.task_panel:setLabel((call.description and call.description or call.key), nil, "left") row.task_button:enable(true) else row.assigned_panel:setLabel("") row.task_panel:setLabel("") row.assigned_button:enable(false) row.task_button:enable(false) end end end function UICallsDispatcher:close() self.dispatcher:removeChangeCallback(self.update) Window.close(self) end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/cheats.lua000066400000000000000000000165311321660673500231450ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! A dialog for activating cheats class "UICheats" (UIResizable) ---@type UICheats local UICheats = _G["UICheats"] local col_bg = { red = 154, green = 146, blue = 198, } local col_caption = { red = 174, green = 166, blue = 218, } local col_border = { red = 134, green = 126, blue = 178, } local col_cheated_no = { red = 36, green = 154, blue = 36, } local col_cheated_yes = { red = 224, green = 36, blue = 36, } --[[ Constructs the cheat dialog. !param ui (UI) The active ui. ]] function UICheats:UICheats(ui) self.cheats = { {name = "money", func = self.cheatMoney}, {name = "all_research", func = self.cheatResearch}, {name = "emergency", func = self.cheatEmergency}, {name = "epidemic", func = self.cheatEpidemic}, {name = "toggle_infected", func = self.cheatToggleInfected}, {name = "vip", func = self.cheatVip}, {name = "earthquake", func = self.cheatEarthquake}, {name = "create_patient", func = self.cheatPatient}, {name = "end_month", func = self.cheatMonth}, {name = "end_year", func = self.cheatYear}, {name = "lose_level", func = self.cheatLose}, {name = "win_level", func = self.cheatWin}, {name = "increase_prices", func = self.cheatIncreasePrices}, {name = "decrease_prices", func = self.cheatDecreasePrices}, } self:UIResizable(ui, 300, 200, col_bg) self.default_button_sound = "selectx.wav" self.modal_class = "cheats" self.esc_closes = true self.resizable = false self:setDefaultPosition(0.2, 0.4) local y = 10 self:addBevelPanel(20, y, 260, 20, col_caption):setLabel(_S.cheats_window.caption) .lowered = true y = y + 30 self:addColourPanel(20, y, 260, 40, col_bg.red, col_bg.green, col_bg.blue):setLabel({_S.cheats_window.warning}) y = y + 40 self.cheated_panel = self:addBevelPanel(20, y, 260, 18, col_cheated_no, col_border, col_border) local function button_clicked(num) return --[[persistable:cheats_button]] function(window) window:buttonClicked(num) end end self.item_panels = {} self.item_buttons = {} y = y + 30 for num = 1, #self.cheats do self.item_panels[num] = self:addBevelPanel(20, y, 260, 20, col_bg) :setLabel(_S.cheats_window.cheats[self.cheats[num].name]) self.item_buttons[num] = self.item_panels[num]:makeButton(0, 0, 260, 20, nil, button_clicked(num)) :setTooltip(_S.tooltip.cheats_window.cheats[self.cheats[num].name]) y = y + 20 end y = y + 20 self:addBevelPanel(20, y, 260, 40, col_bg):setLabel(_S.cheats_window.close) :makeButton(0, 0, 260, 40, nil, self.buttonBack):setTooltip(_S.tooltip.cheats_window.close) y = y + 60 self:setSize(300, y) self:updateCheatedStatus() end function UICheats:updateCheatedStatus() local cheated = self.ui.hospital.cheated self.cheated_panel:setLabel(cheated and _S.cheats_window.cheated.yes or _S.cheats_window.cheated.no) self.cheated_panel:setColour(cheated and col_cheated_yes or col_cheated_no) end function UICheats:buttonClicked(num) -- Only the cheats that may fail return false in that case. All others return nothing. if self.cheats[num].func(self) ~= false then if self.cheats[num].name ~= "lose_level" then local announcements = self.ui.app.world.cheat_announcements if announcements then self.ui:playSound(announcements[math.random(1, #announcements)]) end self.ui.hospital.cheated = true self:updateCheatedStatus() end else -- It was not possible to use this cheat. self.ui:addWindow(UIInformation(self.ui, {_S.information.cheat_not_possible})) end end function UICheats:cheatMoney() self.ui.hospital:receiveMoney(10000, _S.transactions.cheat) end function UICheats:cheatResearch() local hosp = self.ui.hospital for _, cat in ipairs({"diagnosis", "cure"}) do while hosp.research.research_policy[cat].current do hosp.research:discoverObject(hosp.research.research_policy[cat].current) end end end function UICheats:cheatEmergency() if not self.ui.hospital:createEmergency() then self.ui:addWindow(UIInformation(self.ui, {_S.misc.no_heliport})) end end --[[ Creates a new contagious patient in the hospital - potentially an epidemic]] function UICheats:cheatEpidemic() self.ui.hospital:spawnContagiousPatient() end --[[ Before an epidemic has been revealed toggle the infected icons to easily distinguish the infected patients -- will toggle icons for ALL future epidemics you cannot distingush between epidemics by disease ]] function UICheats:cheatToggleInfected() local hospital = self.ui.hospital if hospital.future_epidemics_pool and #hospital.future_epidemics_pool > 0 then for _, future_epidemic in ipairs(hospital.future_epidemics_pool) do local show_mood = future_epidemic.cheat_always_show_mood future_epidemic.cheat_always_show_mood = not show_mood local mood_action = show_mood and "deactivate" or "activate" for _, patient in ipairs(future_epidemic.infected_patients) do patient:setMood("epidemy4",mood_action) end end else print("Unable to toggle icons - no epidemics in progress that are not revealed") end end function UICheats:cheatVip() self.ui.hospital:createVip() end function UICheats:cheatEarthquake() return self.ui.app.world:createEarthquake() end function UICheats:cheatPatient() self.ui.app.world:spawnPatient() end function UICheats:cheatMonth() self.ui.app.world:setEndMonth() end function UICheats:cheatYear() self.ui.app.world:setEndYear() end function UICheats:cheatLose() self.ui.app.world:loseGame(1) -- TODO adjust for multiplayer end function UICheats:cheatWin() self.ui.app.world:winGame(1) -- TODO adjust for multiplayer end function UICheats:cheatIncreasePrices() local hosp = self.ui.app.world.hospitals[1] for _, casebook in pairs(hosp.disease_casebook) do local new_price = casebook.price + 0.5 if new_price > 2 then casebook.price = 2 else casebook.price = new_price end end end function UICheats:cheatDecreasePrices() local hosp = self.ui.app.world.hospitals[1] for _, casebook in pairs(hosp.disease_casebook) do local new_price = casebook.price - 0.5 if new_price < 0.5 then casebook.price = 0.5 else casebook.price = new_price end end end function UICheats:buttonBack() self:close() end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/customise.lua000066400000000000000000000231001321660673500236770ustar00rootroot00000000000000--[[ Copyright (c) 2013 Mark (Mark L) Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Customise window used in the main menu and ingame. class "UICustomise" (UIResizable) ---@type UICustomise local UICustomise = _G["UICustomise"] local col_bg = { red = 154, green = 146, blue = 198, } local col_shadow = { red = 134, green = 126, blue = 178, } local col_caption = { red = 174, green = 166, blue = 218, } function UICustomise:UICustomise(ui, mode) self:UIResizable(ui, 320, 280, col_bg) local app = ui.app self.mode = mode self.modal_class = mode == "menu" and "main menu" or "options" or "customise" self.on_top = mode == "menu" self.esc_closes = true self.resizable = false self:setDefaultPosition(0.5, 0.25) self.default_button_sound = "selectx.wav" self.app = app -- Window parts definition -- Title self:addBevelPanel(80, 10, 160, 20, col_caption):setLabel(_S.customise_window.caption) .lowered = true -- Movies, global switch self:addBevelPanel(20, 40, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.customise_window.movies):setTooltip(_S.tooltip.customise_window.movies).lowered = true self.movies_panel = self:addBevelPanel(160, 40, 135, 20, col_bg):setLabel(app.config.movies and _S.customise_window.option_on or _S.customise_window.option_off) self.movies_button = self.movies_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonMoviesGlobal) :setToggleState(app.config.movies):setTooltip(_S.tooltip.customise_window.movies) -- Intro movie self:addBevelPanel(20, 65, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.customise_window.intro):setTooltip(_S.tooltip.customise_window.intro).lowered = true self.intro_panel = self:addBevelPanel(160, 65, 135, 20, col_bg):setLabel(app.config.play_intro and _S.customise_window.option_on or _S.customise_window.option_off) self.intro_button = self.intro_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonIntro) :setToggleState(app.config.play_intro):setTooltip(_S.tooltip.customise_window.intro) -- Allow user actions when paused self:addBevelPanel(20, 90, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.customise_window.paused):setTooltip(_S.tooltip.customise_window.paused).lowered = true self.paused_panel = self:addBevelPanel(160, 90, 135, 20, col_bg):setLabel(app.config.allow_user_actions_while_paused and _S.customise_window.option_on or _S.customise_window.option_off) self.paused_button = self.paused_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonPaused) :setToggleState(app.config.allow_user_actions_while_paused):setTooltip(_S.tooltip.customise_window.paused) -- Volume down is opening casebook self:addBevelPanel(20, 115, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.customise_window.volume):setTooltip(_S.tooltip.customise_window.volume).lowered = true self.volume_panel = self:addBevelPanel(160, 115, 135, 20, col_bg):setLabel(app.config.volume_opens_casebook and _S.customise_window.option_on or _S.customise_window.option_off) self.volume_button = self.volume_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonVolume) :setToggleState(app.config.volume_opens_casebook):setTooltip(_S.tooltip.customise_window.volume) -- Alien DNA from emergencies only/must stand/can knock on doors self:addBevelPanel(20, 140, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.customise_window.aliens):setTooltip(_S.tooltip.customise_window.aliens).lowered = true self.aliens_panel = self:addBevelPanel(160, 140, 135, 20, col_bg):setLabel(app.config.alien_dna_only_by_emergency and _S.customise_window.option_on or _S.customise_window.option_off) self.aliens_button = self.aliens_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonAliens) :setToggleState(app.config.alien_dna_only_by_emergency):setTooltip(_S.tooltip.customise_window.aliens) -- Allow female patients with Fractured Bones self:addBevelPanel(20, 165, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.customise_window.fractured_bones):setTooltip(_S.tooltip.customise_window.fractured_bones).lowered = true self.fractured_bones_panel = self:addBevelPanel(160, 165, 135, 20, col_bg):setLabel(app.config.disable_fractured_bones_females and _S.customise_window.option_on or _S.customise_window.option_off) self.fractured_bones_button = self.fractured_bones_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonFractured_bones) :setToggleState(app.config.disable_fractured_bones_females):setTooltip(_S.tooltip.customise_window.fractured_bones) -- Allow average contents when building rooms self:addBevelPanel(20, 190, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.customise_window.average_contents):setTooltip(_S.tooltip.customise_window.average_contents).lowered = true self.average_contents_panel = self:addBevelPanel(160, 190, 135, 20, col_bg):setLabel(app.config.enable_avg_contents and _S.customise_window.option_on or _S.customise_window.option_off) self.average_contents_button = self.average_contents_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonAverage_contents) :setToggleState(app.config.enable_avg_contents):setTooltip(_S.tooltip.customise_window.average_contents) -- "Back" button self:addBevelPanel(20, 220, 280, 40, col_bg):setLabel(_S.customise_window.back) :makeButton(0, 0, 280, 40, nil, self.buttonBack):setTooltip(_S.tooltip.customise_window.back) end function UICustomise:buttonAudioGlobal(checked) local window = UIAudio(self.ui, "menu") self.ui:addWindow(window) end function UICustomise:buttonMoviesGlobal(checked) local app = self.ui.app app.config.movies = not app.config.movies self.movies_button:toggle() self.movies_panel:setLabel(app.config.movies and _S.customise_window.option_on or _S.customise_window.option_off) self:reload() app:saveConfig() end function UICustomise:buttonIntro(checked) local app = self.ui.app app.config.play_intro = not app.config.play_intro self.intro_button:toggle() self.intro_panel:setLabel(app.config.play_intro and _S.customise_window.option_on or _S.customise_window.option_off) self:reload() app:saveConfig() end function UICustomise:buttonPaused(checked) local app = self.ui.app app.config.allow_user_actions_while_paused = not app.config.allow_user_actions_while_paused self.paused_button:toggle() self.paused_panel:setLabel(app.config.allow_user_actions_while_paused and _S.customise_window.option_on or _S.customise_window.option_off) self:reload() app:saveConfig() end function UICustomise:buttonVolume(checked) local app = self.ui.app app.config.volume_opens_casebook = not app.config.volume_opens_casebook self.volume_button:toggle() self.volume_panel:setLabel(app.config.volume_opens_casebook and _S.customise_window.option_on or _S.customise_window.option_off) self:reload() app:saveConfig() end function UICustomise:buttonAliens(checked) local app = self.ui.app app.config.alien_dna_only_by_emergency = not app.config.alien_dna_only_by_emergency app.config.alien_dna_must_stand = not app.config.alien_dna_must_stand app.config.alien_dna_can_knock_on_doors = not app.config.alien_dna_can_knock_on_doors self.aliens_button:toggle() self.aliens_panel:setLabel(app.config.alien_dna_only_by_emergency and _S.customise_window.option_on or _S.customise_window.option_off) app:saveConfig() self:reload() local err = {_S.errors.alien_dna} self.ui:addWindow(UIInformation(self.ui, err)) end function UICustomise:buttonFractured_bones(checked) local app = self.ui.app app.config.disable_fractured_bones_females = not app.config.disable_fractured_bones_females self.fractured_bones_button:toggle() self.fractured_bones_panel:setLabel(app.config.disable_fractured_bones_females and _S.customise_window.option_on or _S.customise_window.option_off) app:saveConfig() self:reload() local err = {_S.errors.fractured_bones} self.ui:addWindow(UIInformation(self.ui, err)) end function UICustomise:buttonAverage_contents(checked) local app = self.ui.app app.config.enable_avg_contents = not app.config.enable_avg_contents self.average_contents_button:toggle() self.average_contents_panel:setLabel(app.config.enable_avg_contents and _S.customise_window.option_on or _S.customise_window.option_off) app:saveConfig() self:reload() end function UICustomise:buttonBack() self:close() local window = UIOptions(self.ui, "menu") self.ui:addWindow(window) end -- So that we can see the option has been changed reload the menu function UICustomise:reload() local window = UICustomise(self.ui, "menu") self.ui:addWindow(window) end function UICustomise:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIMainMenu(self.ui)) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/directory_browser.lua000066400000000000000000000151231321660673500254410ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local lfs = require "lfs" local TH = require "TH" local lfsext = TH.lfsExt() --! A tree node representing a directory in the physical file-system. class "DirTreeNode" (FileTreeNode) ---@type DirTreeNode local DirTreeNode = _G["DirTreeNode"] function DirTreeNode:DirTreeNode(path) self:FileTreeNode(path) end function DirTreeNode:isValidFile(name) -- Check parent criteria and that it's a directory. if FileTreeNode.isValidFile(self, name) and lfs.attributes(self:childPath(name), "mode") == "directory" then -- Make sure that we are allowed to read the directory. local status, _ = pcall(lfs.dir, self:childPath(name)) return status end end function DirTreeNode:getSelectColour(canvas) if self.is_valid_directory then return self.highlight_colour else return canvas:mapRGB(174, 166, 218) end end --! This tree only shows directories and highlights valid TH directories. class "InstallDirTreeNode" (DirTreeNode) ---@type InstallDirTreeNode local InstallDirTreeNode = _G["InstallDirTreeNode"] function InstallDirTreeNode:InstallDirTreeNode(path) self:FileTreeNode(path) end function InstallDirTreeNode:createNewNode(path) return InstallDirTreeNode(path) end function InstallDirTreeNode:select() -- Do nothing as an override. getHighlightColour solves this instead. end function InstallDirTreeNode:getHighlightColour(canvas) local highlight_colour = self.highlight_colour if highlight_colour == nil then highlight_colour = false if self:getLevel() == 0 and not self.has_looked_for_children then -- Assume root-level things are not TH directories, unless we've already -- got a list of their children. highlight_colour = nil elseif self:getChildCount() >= 3 then local ngot = 0 local things_to_check = {"data", "levels", "qdata"} for _, thing in ipairs(things_to_check) do if not self.children[thing:lower()] then break else ngot = ngot + 1 end end if ngot == 3 then highlight_colour = canvas:mapRGB(0, 255, 0) self.is_valid_directory = true end end self.highlight_colour = highlight_colour end return highlight_colour or nil end --! Prompter for Theme Hospital install directory class "UIDirectoryBrowser" (UIResizable) ---@type UIDirectoryBrowser local UIDirectoryBrowser = _G["UIDirectoryBrowser"] --! Creates a new directory browser window --!param ui The active UI to hook into. --!param mode Whether the dialog has been opened from the main_menu or somewhere else. Currently --! valid are "menu" or "dir_browser". --!param instruction The textual instruction what the user should do in the dialog. --!param treenode_class What TreeNode subclass the nodes will be built from. E.g. "InstallDirTreeNode" --!param callback The function that is called when the user has chosen a directory. Gets --! a path string as argument. function UIDirectoryBrowser:UIDirectoryBrowser(ui, mode, instruction, treenode_class, callback) self.col_bg = { red = 154, green = 146, blue = 198, } self.col_scrollbar = { red = 164, green = 156, blue = 208, } self:UIResizable(ui, 500, 423, self.col_bg, mode == nil and true or false) self.ui = ui self.mode = mode self.instruction = instruction self:setSize(500, 423) self:addColourPanel(0, 0, self.width, self.height, self.col_bg.red, self.col_bg.green, self.col_bg.blue) self.modal_class = mode == "menu" and "main menu" or "dir browser" self.resizable = false self.exit_button = self:addBevelPanel(260, 400, 100, 18, self.col_bg) if mode ~= nil then self.font = TheApp.gfx:loadFont("QData", "Font01V") self:setDefaultPosition(0.5, 0.25) self.on_top = true self.esc_closes = true self.exit_button:setLabel(_S.install.cancel, self.font):makeButton(0, 0, 100, 18, nil, self.close) else self.font = ui.app.gfx:loadBuiltinFont() self:setDefaultPosition(0.05, 0.5) self:addKeyHandler("escape", self.exit) self.exit_button:setLabel(_S.install.exit, self.font):makeButton(0, 0, 100, 18, nil, self.exit) end -- Create the root item (or items, on Windows), and set it as the -- first_visible_node. local root local roots = lfsext.volumes() if #roots > 1 then for k, v in pairs(roots) do roots[k] = _G[treenode_class](v) end root = DummyRootNode(roots) else root = _G[treenode_class](roots[1]) end local select_function = function(node) if node.is_valid_directory then callback(node.path) self:close() end end local control = TreeControl(root, 5, 55, 490, 340, self.col_bg, self.col_scrollbar) :setSelectCallback(select_function) local ok_function = function() if control.selected_node then select_function(control.selected_node) end end self.ok_button = self:addBevelPanel(130, 400, 100, 18, self.col_bg) :setLabel(_S.install.ok, self.font):makeButton(0, 0, 100, 18, nil, ok_function) self:addWindow(control) end function UIDirectoryBrowser:exit() self.ui.app:exit() end function UIDirectoryBrowser:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIFolder(self.ui, "menu")) end end function UIDirectoryBrowser:draw(canvas, x, y) UIResizable.draw(self, canvas, x, y) x, y = self.x + x, self.y + y if not self.mode then self.font:drawWrapped(canvas, _S.install.title, x + 5, y + 5, self.width - 10, "center") self.font:drawWrapped(canvas, self.instruction, x + 5, y + 15, self.width - 10) else self.font:drawWrapped(canvas, self.instruction, x + 5, y + 15, self.width - 10) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/dropdown.lua000066400000000000000000000071151321660673500235300ustar00rootroot00000000000000--[[ Copyright (c) 2013 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Dropdown "window" used for selection of one item from a list. class "UIDropdown" (UIResizable) ---@type UIDropdown local UIDropdown = _G["UIDropdown"] --! Constructor for the dropdown "window" --!param ui (UI) The ui the window is created in --!param parent_window (Window) The window that this dropdown will be attached to --!param parent_button (Button) The button in the parent_window that this dropdown will be positioned under --!param items (table) A list of items for the list to display, where each item is a table with at least -- the field text, and optionally fields font and/or tooltip --!param callback (function) A function to be called when an item is selected. It is called with two parameters: -- The parent window and the index of the selected item --!param colour (table) A colour in the form of {red = ..., green = ..., blue = ...}. Optional if parent_window is a UIResizable function UIDropdown:UIDropdown(ui, parent_window, parent_button, items, callback, colour) local col = colour or parent_window.colour self:UIResizable(ui, 1, 1, col, true, true) self.modal_class = "dropdown" self.esc_closes = true self.resizable = false self.default_button_sound = "selectx.wav" self.parent_window = parent_window self.parent_button = parent_button self.items = items self.callback = callback local panel = parent_button.panel_for_sprite local width = panel.w local height = panel.h -- TODO: Somehow make the dropdown disappear if the user clicks outside it. self:setPosition(panel.x, panel.y + panel.h) local y = 0 for i, item in ipairs(items) do self:addBevelPanel(1, y + 1, width - 2, height - 2, parent_window.colour):setLabel(item.text, item.font) :makeButton(-1, -1, width, height, nil, --[[persistable:dropdown_callback]] function() self:selectItem(i) end) -- TODO: tooltips for dropdown items currently deactivated because alignment and conditions for displaying are off for tooltips on sub-windows --:setTooltip(item.tooltip) y = y + height end -- Adjust size self:setSize(width, y) end function UIDropdown:selectItem(number) UIResizable.close(self) self.parent_button:setLabel(self.items[number].text, self.items[number].font):setToggleState(false) if self.callback then self.callback(self.parent_window, number) end end function UIDropdown:beginDrag(x, y) -- TODO: It may be undesirable anyway for dropdowns, but for dragging of sub-windows -- offsets are wrongly calculated (results in jump when dragging) -- Disable dragging return false end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/file_browser.lua000066400000000000000000000170771321660673500243660ustar00rootroot00000000000000--[[ Copyright (c) 2011 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local lfs = require "lfs" --! A tree node representing a file (or directory) in the physical file-system -- that meets a given file extension criterion. class "FilteredFileTreeNode" (FileTreeNode) ---@type FilteredFileTreeNode local FilteredFileTreeNode = _G["FilteredFileTreeNode"] function FilteredFileTreeNode:FilteredFileTreeNode(path, filter) self:FileTreeNode(path) self.filter_by = filter end function FilteredFileTreeNode:isValidFile(name) -- Directories and files ending with .sav are valid. if FileTreeNode.isValidFile(self, name) then if lfs.attributes(self:childPath(name), "mode") == "directory" then return true end if type(self.filter_by) == "table" then for _, ext in ipairs(self.filter_by) do if string.sub(name:lower(), -string.len(ext)) == ext then return true end end else return string.sub(name:lower(), -string.len(self.filter_by)) == self.filter_by end end return false -- TODO: We don't want to show hidden files on windows. How can we check that? end function FilteredFileTreeNode:createNewNode(path) return FilteredFileTreeNode(path, self.filter_by) end function FilteredFileTreeNode:getLabel() -- The label was previously only the file name without extension or -- folder hierarchy. TODO: Is there some reason to not show the extension? local label = self.label if not label then label = FileTreeNode.getLabel(self) --[[if type(self.filter_by) == "table" then for _, ext in ipairs(self.filter_by) do if string.sub(label:lower(), -string.len(ext)) == ext then label = string.sub(label:lower(), 0, -string.len(ext) - 1) end end elseif string.sub(label:lower(), -string.len(self.filter_by)) == self.filter_by then label = string.sub(label:lower(), 0, -string.len(self.filter_by) - 1) end--]] self.label = label end return label end --! A sortable tree control that accommodates a certain file type and also possibly shows -- their last modification dates. class "FilteredTreeControl" (TreeControl) ---@type FilteredTreeControl local FilteredTreeControl = _G["FilteredTreeControl"] function FilteredTreeControl:FilteredTreeControl(root, x, y, width, height, col_bg, col_fg, has_font, show_dates) self:TreeControl(root, x, y, width, height, col_bg, col_fg, 14, has_font) self.num_rows = (self.tree_rect.h - self.y_offset) / self.row_height -- Add the two column headers and make buttons on them. if show_dates then self:addBevelPanel(1, 1, width - 170, 13, col_bg):setLabel(_S.menu_list_window.name) :makeButton(0, 0, width - 170, 13, nil, self.sortByName):setTooltip(_S.tooltip.menu_list_window.name) self:addBevelPanel(width - 169, 1, 150, 13, col_bg):setLabel(_S.menu_list_window.save_date) :makeButton(0, 0, 150, 13, nil, self.sortByDate):setTooltip(_S.tooltip.menu_list_window.save_date) end self.show_dates = show_dates end function FilteredTreeControl:sortByName() if self.sort_by == "date" or (self.sort_by == "name" and self.order == "descending") then self:sortBy("name", "ascending") else self:sortBy("name", "descending") end end function FilteredTreeControl:sortByDate() if self.sort_by == "name" or (self.sort_by == "date" and self.order == "descending") then self:sortBy("date", "ascending") else self:sortBy("date", "descending") end end --! Sorts the list according to the given parameters. --!param sort_by Either "name" or "date". --!param order Either "ascending" or "descending" function FilteredTreeControl:sortBy(sort_by, order) self.sort_by = sort_by self.order = order -- Find how many nodes are above the first visible one in order -- to make the correct new nodes show. (Because of the scrollbar) local number = 0 local node = self.first_visible_node while node ~= self.tree_root do number = number + 1 node = node:getPrevVisible() end self.tree_root:reSortChildren(sort_by, order) -- Now check which new node will be the first visible one. node = self.tree_root while number > 0 do node = node:getNextVisible() number = number - 1 end self.first_visible_node = node end function FilteredTreeControl:drawExtraOnRow(canvas, node, x, y) -- We want to show the modification date to the right of each save. if not node:hasChildren() and self.show_dates then local last_mod = node:getLastModification() local daytime = _S.date_format.daymonth:format(os.date("%d", last_mod), tonumber(os.date("%m", last_mod))) self.font:draw(canvas, daytime .. " " .. os.date("%Y %X", last_mod), x + self.tree_rect.w - 140, y) end end --! A file browser with a scrollbar. Used by load_game and save_game. class "UIFileBrowser" (UIResizable) ---@type UIFileBrowser local UIFileBrowser = _G["UIFileBrowser"] local col_caption = { red = 174, green = 166, blue = 218, } --[[ Constructs the dialog. !param ui (UI) The active ui. !param mode (string) Either "menu" or "game" depending on which mode the game is in right now. !param title (string) The desired title of the dialog. ]] function UIFileBrowser:UIFileBrowser(ui, mode, title, vertical_size, root, show_dates) self.col_bg = { red = 154, green = 146, blue = 198, } self.col_scrollbar = { red = 164, green = 156, blue = 208, } local h_size = 450 self:UIResizable(ui, h_size, 380, self.col_bg) self.default_button_sound = "selectx.wav" self.mode = mode self.modal_class = mode == "menu" and "main menu" or "saveload" self.on_top = mode == "menu" self.esc_closes = true self.resizable = false self:setDefaultPosition(0.5, 0.25) self:addBevelPanel((h_size - 190) / 2, 10, 190, 20, col_caption):setLabel(title) .lowered = true -- Initialize the tree control self.control = FilteredTreeControl(root, 5, 35, h_size - 10, vertical_size, self.col_bg, self.col_scrollbar, true, show_dates) :setSelectCallback(--[[persistable:file_browser_select_callback]] function(node) if node.is_valid_file and (lfs.attributes(node.path, "mode") ~= "directory") then self:choiceMade(node.path) end end) self:addWindow(self.control) -- Create the back button. self:addBevelPanel((h_size - 160) / 2, 340, 160, 30, self.col_bg):setLabel(_S.menu_list_window.back) :makeButton(0, 0, 160, 40, nil, self.buttonBack):setTooltip(_S.tooltip.menu_list_window.back) end -- Function stub for dialogs to override. This function is called each time a file is chosen. --!param name (string) Name of the file chosen. function UIFileBrowser:choiceMade(name) end function UIFileBrowser:buttonBack() self:close() end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/file_browsers/000077500000000000000000000000001321660673500240325ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/file_browsers/choose_font.lua000066400000000000000000000042631321660673500270500ustar00rootroot00000000000000--[[ Copyright (c) 2013 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" local lfsext = TH.lfsExt() --! Window where the user can choose a font file. class "UIChooseFont" (UIFileBrowser) ---@type UIChooseFont local UIChooseFont = _G["UIChooseFont"] function UIChooseFont:UIChooseFont(ui, mode) -- Create the root item (or items, on Windows). local root local roots = lfsext.volumes() if #roots > 1 then for k, v in pairs(roots) do roots[k] = FilteredFileTreeNode(v, {".ttc", ".otf", ".ttf"}) end root = DummyRootNode(roots) else root = FilteredFileTreeNode(roots[1], {".ttc", ".otf", ".ttf"}) end self:UIFileBrowser(ui, mode, _S.font_location_window.caption:format(".ttc, .otf, .ttf"), 265, root) end --! Function called by clicking button of existing save #num function UIChooseFont:choiceMade(name) local app = TheApp app.config.unicode_font = name app:saveConfig() app.gfx:loadFontFile() if class.is(self.parent, UIOptions) then self.parent:checkForAvailableLanguages() end self:close() end function UIChooseFont:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIOptions(self.ui, self.mode)) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/file_browsers/load_game.lua000066400000000000000000000040361321660673500264500ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Load Game Window class "UILoadGame" (UIFileBrowser) ---@type UILoadGame local UILoadGame = _G["UILoadGame"] function UILoadGame:UILoadGame(ui, mode) local treenode = FilteredFileTreeNode(ui.app.savegame_dir, ".sav") treenode.label = "Saves" self:UIFileBrowser(ui, mode, _S.load_game_window.caption:format(".sav"), 295, treenode, true) -- The most probable preference of sorting is by date - what you played last -- is the thing you want to play soon again. self.control:sortByDate() end function UILoadGame:choiceMade(name) local app = self.ui.app -- Make sure there is no blue filter active. app.video:setBlueFilterActive(false) local status, err = pcall(app.load, app, name) if not status then err = _S.errors.load_prefix .. err print(err) app:loadMainMenu() app.ui:addWindow(UIInformation(self.ui, {err})) end end function UILoadGame:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIMainMenu(self.ui)) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/file_browsers/load_map.lua000066400000000000000000000041701321660673500263130ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Load Map Window class "UILoadMap" (UIFileBrowser) ---@type UILoadMap local UILoadMap = _G["UILoadMap"] function UILoadMap:UILoadMap(ui, mode) local path = ui.app.user_level_dir local treenode = FilteredFileTreeNode(path, ".map") treenode.label = "Maps" self:UIFileBrowser(ui, mode, _S.load_game_window.caption:format(".map"), 295, treenode, true) -- The most probable preference of sorting is by date - what you played last -- is the thing you want to play soon again. self.control:sortByDate() end function UILoadMap:choiceMade(name) local app = self.ui.app -- Make sure there is no blue filter active. app.video:setBlueFilterActive(false) name = name:sub(app.user_level_dir:len() + 1) local status, err = pcall(app.loadLevel, app, name, nil, nil, nil, nil, true) if not status then err = _S.errors.load_prefix .. err print(err) app:loadMainMenu() app.ui:addWindow(UIInformation(self.ui, {err})) end end function UILoadMap:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIMainMenu(self.ui)) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/file_browsers/save_game.lua000066400000000000000000000071151321660673500264700ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Save Game Window class "UISaveGame" (UIFileBrowser) ---@type UISaveGame local UISaveGame = _G["UISaveGame"] local col_textbox = { red = 0, green = 0, blue = 0, } local col_highlight = { red = 174, green = 166, blue = 218, } local col_shadow = { red = 134, green = 126, blue = 178, } function UISaveGame:UISaveGame(ui) local treenode = FilteredFileTreeNode(ui.app.savegame_dir, ".sav") treenode.label = "Saves" self:UIFileBrowser(ui, "game", _S.save_game_window.caption:format(".sav"), 265, treenode, true) -- The most probable preference of sorting is by date - what you played last -- is the thing you want to play soon again. self.control:sortByDate() -- Textbox for entering new savegame name self.new_savegame_textbox = self:addBevelPanel(5, 310, self.width - 10, 17, col_textbox, col_highlight, col_shadow) :setLabel(_S.save_game_window.new_save_game, nil, "left"):setTooltip(_S.tooltip.save_game_window.new_save_game) :makeTextbox(--[[persistable:save_game_new_savegame_textbox_confirm_callback]] function() self:confirmName() end, --[[persistable:save_game_new_savegame_textbox_abort_callback]] function() self:abortName() end) end --! Function called when textbox is aborted (e.g. by pressing escape) function UISaveGame:abortName() self.new_savegame_textbox.text = "" self.new_savegame_textbox.panel:setLabel(_S.save_game_window.new_save_game) end --! Function called when textbox is confirmed (e.g. by pressing enter) function UISaveGame:confirmName() local filename = self.new_savegame_textbox.text local app = self.ui.app if filename == "" then self:abortName() return end self:trySave(app.savegame_dir .. filename .. ".sav") end --! Function called by clicking button of existing save #num function UISaveGame:choiceMade(name) self:trySave(name) end --! Try to save the game with given filename; if already exists, create confirmation window first. function UISaveGame:trySave(filename) if lfs.attributes(filename, "size") ~= nil then self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.overwrite_save, --[[persistable:save_game_confirmation]] function() self:doSave(filename) end)) else self:doSave(filename) end end --! Actually do save the game with given filename. function UISaveGame:doSave(filename) filename = filename local ui = self.ui local app = ui.app self:close() local status, err = pcall(app.save, app, filename) if not status then err = _S.errors.save_prefix .. err print(err) ui:addWindow(UIInformation(ui, {err})) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/file_browsers/save_map.lua000066400000000000000000000070161321660673500263340ustar00rootroot00000000000000--[[ Copyright (c) 2015 Stephen E. Baker et al. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Save Map Window class "UISaveMap" (UIFileBrowser) ---@type UISaveMap local UISaveMap = _G["UISaveMap"] local col_textbox = { red = 0, green = 0, blue = 0, } local col_highlight = { red = 174, green = 166, blue = 218, } local col_shadow = { red = 134, green = 126, blue = 178, } function UISaveMap:UISaveMap(ui) local treenode = FilteredFileTreeNode(ui.app.user_level_dir, ".map") treenode.label = "Maps" self:UIFileBrowser(ui, "map", _S.save_map_window.caption:format(".map"), 265, treenode, true) -- The most probable preference of sorting is by date - what you played last -- is the thing you want to play soon again. self.control:sortByDate() -- Textbox for entering new save name self.new_map_textbox = self:addBevelPanel(5, 310, self.width - 10, 17, col_textbox, col_highlight, col_shadow) :setLabel(_S.save_map_window.new_map, nil, "left"):setTooltip(_S.tooltip.save_map_window.new_map) :makeTextbox(--[[persistable:save_map_new_map_textbox_confirm_callback]] function() self:confirmName() end, --[[persistable:save_map_new_map_textbox_abort_callback]] function() self:abortName() end) end --! Function called when textbox is aborted (e.g. by pressing escape) function UISaveMap:abortName() self.new_map_textbox.text = "" self.new_map_textbox.panel:setLabel(_S.save_map_window.new_map) end --! Function called when textbox is confirmed (e.g. by pressing enter) function UISaveMap:confirmName() local filename = self.new_map_textbox.text local app = self.ui.app if filename == "" then self:abortName() return end self:trySave(app.user_level_dir .. filename .. ".map") end --! Function called by clicking button of existing save #num function UISaveMap:choiceMade(name) self:trySave(name) end --! Try to save the game with given filename; if already exists, create confirmation window first. function UISaveMap:trySave(filename) if lfs.attributes(filename, "size") ~= nil then self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.overwrite_save, --[[persistable:save_map_confirmation]] function() self:doSave(filename) end)) else self:doSave(filename) end end --! Actually do save the map with given filename. function UISaveMap:doSave(filename) filename = filename local ui = self.ui local map = ui.app.map self:close() local status, err = pcall(map.save, map, filename) if not status then err = _S.errors.save_prefix .. err print(err) ui:addWindow(UIInformation(ui, {err})) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/folder_settings.lua000066400000000000000000000212311321660673500250620ustar00rootroot00000000000000--[[ Copyright (c) 2013 Mark (Mark L) Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Customise window used in the main menu and ingame. class "UIFolder" (UIResizable) ---@type UIFolder local UIFolder = _G["UIFolder"] local col_bg = { red = 154, green = 146, blue = 198, } local col_shadow = { red = 134, green = 126, blue = 178, } local col_caption = { red = 174, green = 166, blue = 218, } function UIFolder:UIFolder(ui, mode) self:UIResizable(ui, 360, 240, col_bg) local app = ui.app self.mode = mode self.modal_class = mode == "menu" and "main menu" or "options" or "folders" self.on_top = mode == "menu" self.esc_closes = true self.resizable = false self:setDefaultPosition(0.5, 0.25) self.default_button_sound = "selectx.wav" self.app = app -- Window parts definition -- Title self:addBevelPanel(80, 10, 200, 20, col_caption):setLabel(_S.folders_window.caption) .lowered = true -- Location of original game local built_in = app.gfx:loadMenuFont() self:addBevelPanel(20, 50, 130, 20, col_shadow, col_bg, col_bg) :setLabel(_S.folders_window.data_label):setTooltip(_S.tooltip.folders_window.data_location) .lowered = true self:addBevelPanel(160, 50, 180, 20, col_bg) :setLabel(app.config.theme_hospital_install, built_in):setAutoClip(true) :makeButton(0, 0, 180, 20, nil, self.buttonBrowseForTHInstall):setTooltip(_S.tooltip.folders_window.browse_data:format(app.config.theme_hospital_install)) -- Location of font file self:addBevelPanel(20, 75, 130, 20, col_shadow, col_bg, col_bg) :setLabel(_S.folders_window.font_label):setTooltip(_S.tooltip.folders_window.font_location) .lowered = true local tooltip_font = app.config.unicode_font and _S.tooltip.folders_window.browse_font:format(app.config.unicode_font) or _S.tooltip.folders_window.no_font_specified self:addBevelPanel(160, 75, 180, 20, col_bg) :setLabel(app.config.unicode_font and app.config.unicode_font or tooltip_font, built_in):setAutoClip(true) :makeButton(0, 0, 180, 20, nil, self.buttonBrowseForFont):setTooltip(tooltip_font) -- Location saves alternative self:addBevelPanel(20, 100, 130, 20, col_shadow, col_bg, col_bg) :setLabel(_S.folders_window.savegames_label):setTooltip(_S.tooltip.folders_window.savegames_location) .lowered = true local tooltip_saves = app.config.savegames and _S.tooltip.folders_window.browse_saves:format(app.config.savegames) or _S.tooltip.folders_window.default self.saves_panel = self:addBevelPanel(160, 100, 160, 20, col_bg) self.saves_panel:setLabel(app.config.savegames and app.config.savegames or tooltip_saves , built_in):setAutoClip(true) :makeButton(0, 0, 160, 20, nil, self.buttonBrowseForSavegames):setTooltip(tooltip_saves) self:addBevelPanel(320, 100, 20, 20, col_bg):setLabel("X"):makeButton(0, 0, 20, 20, nil, self.resetSavegameDir):setTooltip(_S.tooltip.folders_window.reset_to_default) -- location for screenshots self:addBevelPanel(20, 125, 130, 20, col_shadow, col_bg, col_bg) :setLabel(_S.folders_window.screenshots_label):setTooltip(_S.tooltip.folders_window.screenshots_location) .lowered = true local tooltip_screenshots = app.config.screenshots and _S.tooltip.folders_window.browse_screenshots:format(app.config.screenshots) or _S.tooltip.folders_window.default self.screenshots_panel = self:addBevelPanel(160, 125, 160, 20, col_bg) self.screenshots_panel:setLabel(app.config.screenshots and app.config.screenshots or tooltip_screenshots, built_in):setAutoClip(true) :makeButton(0, 0, 160, 20, nil, self.buttonBrowseForScreenshots):setTooltip(tooltip_screenshots) self:addBevelPanel(320, 125, 20, 20, col_bg):setLabel("X"):makeButton(0, 0, 20, 20, nil, self.resetScreenshotDir):setTooltip(_S.tooltip.folders_window.reset_to_default) -- location for mp3 music files self:addBevelPanel(20, 150, 130, 20, col_shadow, col_bg, col_bg) :setLabel(_S.folders_window.music_label):setTooltip(_S.tooltip.folders_window.music_location) .lowered = true local tooltip_audio = app.config.audio_mp3 and _S.tooltip.folders_window.browse_music:format(app.config.audio_mp3) or _S.tooltip.folders_window.not_specified self.mp3_panel = self:addBevelPanel(160, 150, 180, 20, col_bg) self.mp3_panel:setLabel(app.config.audio_mp3 and app.config.audio_mp3 or tooltip_audio, built_in):setAutoClip(true) :makeButton(0, 0, 160, 20, nil, self.buttonBrowseForAudio_mp3):setTooltip(tooltip_audio) self:addBevelPanel(320, 150, 20, 20, col_bg):setLabel("X"):makeButton(0, 0, 20, 20, nil, self.resetMp3Dir):setTooltip(_S.tooltip.folders_window.reset_to_default) -- "Back" button self:addBevelPanel(20, 180, 320, 40, col_bg):setLabel(_S.folders_window.back) :makeButton(0, 0, 320, 40, nil, self.buttonBack):setTooltip(_S.tooltip.folders_window.back) self.built_in_font = built_in end function UIFolder:resetSavegameDir() local app = TheApp app.config.savegames = nil app:saveConfig() app:initSavegameDir() self.saves_panel:setLabel(_S.tooltip.folders_window.default, self.built_in_font) end function UIFolder:resetScreenshotDir() local app = TheApp app.config.screenshots = nil app:saveConfig() app:initScreenshotsDir() self.screenshots_panel:setLabel(_S.tooltip.folders_window.default, self.built_in_font) end function UIFolder:resetMp3Dir() local app = TheApp app.config.audio_mp3 = nil app:saveConfig() app.audio:init() self.mp3_panel:setLabel(_S.tooltip.folders_window.not_specified, self.built_in_font) end function UIFolder:buttonBrowseForFont() local browser = UIChooseFont(self.ui, self.mode) self.ui:addWindow(browser) end function UIFolder:buttonBrowseForSavegames() local app = TheApp local old_path = app.config.savegames local function callback(path) if old_path ~= path then app.config.savegames = path app:saveConfig() app:initSavegameDir() self.saves_panel:setLabel(app.config.savegames, self.built_in_font) end end local browser = UIDirectoryBrowser(self.ui, self.mode, _S.folders_window.savegames_location, "DirTreeNode", callback) self.ui:addWindow(browser) end function UIFolder:buttonBrowseForTHInstall() local function callback(path) local app = TheApp app.config.theme_hospital_install = path app:saveConfig() debug.getregistry()._RESTART = true app.running = false end local browser = UIDirectoryBrowser(self.ui, self.mode, _S.folders_window.new_th_location, "InstallDirTreeNode", callback) self.ui:addWindow(browser) end function UIFolder:buttonBrowseForScreenshots() local app = TheApp local old_path = app.config.savegames local function callback(path) if old_path ~= path then app.config.screenshots = path app:saveConfig() app:initScreenshotsDir() self.screenshots_panel:setLabel(app.config.screenshots, self.built_in_font) end end local browser = UIDirectoryBrowser(self.ui, self.mode, _S.folders_window.screenshots_location, "DirTreeNode", callback) self.ui:addWindow(browser) end function UIFolder:buttonBrowseForAudio_mp3() local function callback(path) local app = TheApp app.config.audio_mp3 = path app:saveConfig() app.audio:init() self.mp3_panel:setLabel(app.config.audio_mp3, self.built_in_font) end local browser = UIDirectoryBrowser(self.ui, self.mode, _S.folders_window.music_location, "DirTreeNode", callback) self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.music_warning, --[[persistable:mmusic_warning_confirm_dialog]]function() self.ui:addWindow(browser) end )) end function UIFolder:buttonBack() self:close() local window = UIOptions(self.ui, "menu") self.ui:addWindow(window) end function UIFolder:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIMainMenu(self.ui)) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/lua_console.lua000066400000000000000000000102021321660673500241660ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] strict_declare_global "_" _ = nil --! Interactive Lua Console for ingame debugging. class "UILuaConsole" (UIResizable) ---@type UILuaConsole local UILuaConsole = _G["UILuaConsole"] local col_bg = { red = 46, green = 186, blue = 60, } local col_textbox = { red = 0, green = 0, blue = 0, } local col_highlight = { red = 174, green = 166, blue = 218, } local col_shadow = { red = 134, green = 126, blue = 178, } function UILuaConsole:UILuaConsole(ui) self:UIResizable(ui, 320, 240, col_bg) local app = ui.app self.modal_class = "console" self.esc_closes = true self.resizable = true self.min_width = 200 self.min_height = 150 self:setDefaultPosition(0.1, 0.1) -- Window parts definition self.default_button_sound = "selectx.wav" -- Textbox for entering code self.textbox = self:addBevelPanel(20, 20, 280, 140, col_textbox, col_highlight, col_shadow) :setLabel("", app.gfx:loadBuiltinFont(), "left"):setTooltip(_S.tooltip.lua_console.textbox):setAutoClip(true) :makeTextbox():allowedInput("all"):setText({""}) self.textbox:setActive(true) -- activated by default -- "Execute" button self.execute_button = self:addBevelPanel(20, self.height - 60, 130, 40, col_bg):setLabel(_S.lua_console.execute_code) :makeButton(0, 0, 130, 40, nil, self.buttonExecute):setTooltip(_S.tooltip.lua_console.execute_code) -- "Close" button self.close_button = self:addBevelPanel(170, self.height - 60, 130, 40, col_bg):setLabel(_S.lua_console.close) :makeButton(0, 0, 130, 40, nil, self.buttonClose):setTooltip(_S.tooltip.lua_console.close) end function UILuaConsole:setSize(width, height) UIResizable.setSize(self, width, height) self.textbox:setSize(self.width - 40, self.height - 100) local button_width = math.floor((self.width - 60) / 2) self.execute_button:setPosition(20, self.height - 60) self.execute_button:setSize(button_width, 40) self.close_button:setPosition(self.width - 20 - button_width, self.height - 60) self.close_button:setSize(button_width, 40) end function UILuaConsole:buttonExecute() print("Loading UserFunction...") local func, err, s _ = TheApp.ui and TheApp.ui.debug_cursor_entity local i = 0 func, err = load(function() i = i + 1 if type(self.textbox.text) == "table" then return self.textbox.text[i] and self.textbox.text[i] .. "\n" else return i < 2 and self.textbox.text end end, "=UserFunction") if not func then print("Error while loading UserFunction:") print(err) return end print("Executing UserFunction...") s, err = pcall(func) if not s then print("Error while executing UserFunction:") print(err) end end function UILuaConsole:buttonClose() self:close() end function UILuaConsole:afterLoad(old, new) UIResizable.afterLoad(self, old, new) if old < 65 then -- added min_width and min_height self.min_width = 200 self.min_height = 150 -- added execute_button, close_button, changed callback self.execute_button = self.buttons[2] self.close_button = self.buttons[3] self.close_button.on_click = self.buttonClose end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/main_menu.lua000066400000000000000000000136311321660673500236440ustar00rootroot00000000000000--[[ Copyright (c) 2010-2014 Manuel "Roujin" Wolf, Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Class for main menu window. class "UIMainMenu" (UIResizable) ---@type UIMainMenu local UIMainMenu = _G["UIMainMenu"] local col_bg = { red = 154, green = 146, blue = 198, } local menu_item_height = 40 function UIMainMenu:UIMainMenu(ui) -- First define all menu entries with a label, a callback and a tooltip. -- That way we can call the UIResizable constructor with a good height argument. local menu_items = { {_S.main_menu.new_game, self.buttonNewGame, _S.tooltip.main_menu.new_game}, {_S.main_menu.custom_campaign, self.buttonCustomCampaign, _S.tooltip.main_menu.custom_campaign}, {_S.main_menu.custom_level, self.buttonCustomGame, _S.tooltip.main_menu.custom_level}, {_S.main_menu.continue, self.buttonContinueGame, _S.tooltip.main_menu.continue}, {_S.main_menu.load_game, self.buttonLoadGame, _S.tooltip.main_menu.load_game}, {_S.main_menu.options, self.buttonOptions, _S.tooltip.main_menu.options}, {_S.main_menu.map_edit, self.buttonMapEdit, _S.tooltip.main_menu.map_edit}, {_S.main_menu.exit, self.buttonExit, _S.tooltip.main_menu.exit} } self.no_menu_entries = #menu_items self:UIResizable(ui, 200, (menu_item_height + 10) * (#menu_items + 1), col_bg) self.esc_closes = false self.modal_class = "main menu" self.on_top = true self:setDefaultPosition(0.5, 0.25) -- The main menu also shows the version number of the player's copy of the game. self.label_font = TheApp.gfx:loadFont("QData", "Font01V") self.version_number = TheApp:getVersion() -- individual buttons self.default_button_sound = "selectx.wav" local next_y = 20 for _, item in ipairs(menu_items) do next_y = self:addMenuItem(item[1], item[2], item[3], next_y) end end --! Adds a single menu item to the main menu. --!param label (string) The (localized) label to use for the new button. --!param callback (function) Function to call when the user clicks the button. --!param tooltip (string) Text to show when the player hovers over the button. --!param y_pos (integer) Y-position from where to add the menu item. --!return (integer) Y-position below which more items can be added. -- This function has added a menu item between y_pos and the return value. function UIMainMenu:addMenuItem(label, callback, tooltip, y_pos) self:addBevelPanel(20, y_pos, 160, menu_item_height, col_bg) :setLabel(label):makeButton(0, 0, 160, menu_item_height, nil, callback) :setTooltip(tooltip) return y_pos + menu_item_height + 10 end function UIMainMenu:getSavedWindowPositionName() return "main_menu_group" end function UIMainMenu:draw(canvas, x, y) UIResizable.draw(self, canvas, x, y) x, y = self.x + x, self.y + y -- Move the version string up a bit if also showing the savegame version. local ly = y + (menu_item_height + 10) * (self.no_menu_entries + 1) - 15 if TheApp.config.debug then self.label_font:draw(canvas, _S.main_menu.savegame_version .. TheApp.savegame_version, x + 5, ly, 190, 0, "right") ly = ly - 15 end self.label_font:draw(canvas, _S.main_menu.version .. self.version_number, x + 5, ly, 190, 0, "right") end function UIMainMenu:buttonNewGame() local window = UINewGame(self.ui) self.ui:addWindow(window) end function UIMainMenu:buttonCustomCampaign() if TheApp.using_demo_files then self.ui:addWindow(UIInformation(self.ui, {_S.information.no_custom_game_in_demo})) else local window = UICustomCampaign(self.ui) self.ui:addWindow(window) end end function UIMainMenu:buttonCustomGame() if TheApp.using_demo_files then self.ui:addWindow(UIInformation(self.ui, {_S.information.no_custom_game_in_demo})) else local window = UICustomGame(self.ui) self.ui:addWindow(window) end end function UIMainMenu:buttonContinueGame() local most_recent_saved_game = FileTreeNode(self.ui.app.savegame_dir):getMostRecentlyModifiedChildFile(".sav") if most_recent_saved_game then local path = most_recent_saved_game.path local app = self.ui.app local status, err = pcall(app.load, app, path) if not status then err = _S.errors.load_prefix .. err print(err) app.ui:addWindow(UIInformation(self.ui, {err})) end else local error = _S.errors.load_prefix .. _S.errors.no_games_to_contine print(error) self.ui.app.ui:addWindow(UIInformation(self.ui, {error})) end end function UIMainMenu:buttonLoadGame() local window = UILoadGame(self.ui, "menu") self.ui:addWindow(window) end function UIMainMenu:buttonOptions() local window = UIOptions(self.ui, "menu") self.ui:addWindow(window) end function UIMainMenu:buttonMapEdit() self.ui.app:mapEdit() end function UIMainMenu:buttonExit() self.ui:addWindow(UIConfirmDialog(self.ui, _S.tooltip.main_menu.quit, --[[persistable:quit_confirm_dialog]]function() self.ui.app:exit() end )) end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/map_editor.lua000066400000000000000000001721121321660673500240170ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Copyright (c) 2014 Stephen Baker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UIMapEditor" (UIResizable) ---@type UIMapEditor local UIMapEditor = _G["UIMapEditor"] local col_bg = {red = 154, green = 146, blue = 198} -- {{{ Editor sprites. -- Unfortunately, current map file format does not support flags like FLIP_H. -- Commented this out until flags can be stored in the file created by the map editor. -- -- High byte sprite constants. -- local FLIP_H = DrawFlags.FlipHorizontal * 256 -- Each variable below is an array of multi-tile sprites, which is translated -- to a list of buttons at a page. -- The generic form of a multi-tile sprite (see the helipad for an example) is -- a table {sprites = .., height = .., objects = ..}. The 'height' defines the -- height of the displayed button (between 1 and MAX_HEIGHT). The 'sprites' is -- an array of single sprites, a table of {sprite = ..., xpos = ..., ypos = -- ..., type = ...}. It defines which sprite to display at which relative -- position. Positions run from 1 upward, sprites are numbers 0..255 (the low -- byte). -- The high byte is reserved for adding DrawFlags flags in the future, eg FLIP_H. -- -- The type defines where the sprite is stored. 'north' and 'west' mean north -- respectively west wall. 'floor' means it is a floor sprite. 'hospital' is -- also a floor sprite but it also states that the tile is part of the -- hospital. Similarly, 'road' is a floor sprite outside the hospital that can -- be walked on. Finally, the 'objects' defines the position of objects in the -- shape. At this time, only an entrance door can be placed. -- -- As there are a lot of single tile sprite buttons, there is a simplified -- form to specify those (and they get expanded to the generic multi-tile -- sprite form automagically). The short form for a single sprite button is a -- table {sprite = ..., height = ..., type = ...}, where all the fields have -- the same meaning as described above for the generic form. -- -- {{{ Foliage sprites. local foliage = { {sprite=192, height=3, type="floor"}, -- Regular European shrub 1 {sprite=193, height=2, type="floor"}, -- Ground plant, green 1 {sprite=194, height=2, type="floor"}, -- Bush {sprite=195, height=3, type="floor"}, -- Ground plant, red flowers {sprite=196, height=3, type="floor"}, -- Shrub {sprite=197, height=4, type="floor"}, -- Dead tree (very high) {sprite=198, height=2, type="floor"}, -- Low ground plant {sprite=199, height=3, type="floor"}, -- Regular European shrub 2 {sprite=200, height=2, type="floor"}, -- Ground plant, flowers {sprite=201, height=1, type="floor"}, -- Flowerbed East/South {sprite=202, height=1, type="floor"}, -- Flowerbed West/South {sprite=203, height=1, type="floor"}, -- Flowerbed West/North {sprite=204, height=1, type="floor"}, -- Flowerbed North/South } -- }}} -- {{{ Hedge row sprites. local hedgerow={ {sprite=176, height=2, type="floor"}, -- Hedge West-North {sprite=177, height=2, type="floor"}, -- Hedge West-South {sprite=178, height=2, type="floor"}, -- Hedge East-South {sprite=179, height=2, type="floor"}, -- Hedge East-North {sprite=180, height=2, type="floor"}, -- Hedge West-East {sprite=181, height=2, type="floor"}, -- Hedge North-South {sprite=182, height=2, type="floor"}, -- Hedge East-West-South {sprite=183, height=2, type="floor"}, -- Hedge East-West-North {sprite=184, height=2, type="floor"}, -- Hedge West-North-South {sprite=185, height=2, type="floor"}, -- Hedge East-North-South {sprite=186, height=2, type="floor"}, -- Hedge East-West-North-South {sprite=187, height=2, type="floor"}, -- Hedge North-South with shrub {sprite=188, height=2, type="floor"}, -- Hedge North-South with holes {sprite=189, height=2, type="floor"}, -- Hedge East-West with shrub 1 {sprite=190, height=2, type="floor"}, -- Hedge East-West with holes {sprite=191, height=2, type="floor"}, -- Hedge East-West with shrub 2 } -- }}} -- {{{ Pond sprites. local pond={ {sprite= 60, height=1, type="floor"}, -- South edge of a pond {sprite= 65, height=1, type="floor"}, -- West edge of a pond {sprite= 68, height=1, type="floor"}, -- North edge of a pond {sprite= 78, height=1, type="floor"}, -- East edge of a pond {sprite= 59, height=1, type="floor"}, -- South-West corner of a pond {sprite= 77, height=1, type="floor"}, -- North-East corner of a pond {sprite= 79, height=1, type="floor"}, -- South-East corner of a pond {sprite= 80, height=1, type="floor"}, -- North-West corner of a pond {sprite= 69, height=1, type="floor"}, -- Water tile of a pond {sprite= 71, height=1, type="floor"}, -- Water tile of a pond with water lilies {sprite= 72, height=2, type="floor"}, -- Water tile of a pond with water plant 1 {sprite= 73, height=2, type="floor"} -- Water tile of a pond with water plant 2 } -- }}} -- {{{ Inside floor sprites. local inside={ {sprite= 17, height=1, type="hospital"}, -- Dark blue/purple carpet tile {sprite= 70, height=1, type="hospital"}, -- Duplicate of 017 {sprite= 18, height=1, type="hospital"}, -- Red-Blue floor tile 1 {sprite= 19, height=1, type="hospital"}, -- Red-Blue floor tile 2 {sprite= 23, height=1, type="hospital"}, -- Red-Blue floor tile 3 {sprite= 16, height=1, type="hospital"}, -- Dark big checker pattern tile {sprite= 21, height=1, type="hospital"}, -- Small checker pattern tile {sprite= 22, height=1, type="hospital"}, -- Big checker pattern tile {sprite= 66, height=1, type="hospital"}, -- Floor tile with light center {sprite= 76, height=1, type="hospital"}, -- Floor tile with light center and corners {sprite= 20, height=1, type="hospital"} -- Wooden floor tile } -- }}} -- {{{ Outside floor sprites. local outside={ {sprite= 1, height=1, type="floor"}, -- Grass tile 1 {sprite= 2, height=1, type="floor"}, -- Grass tile 2 {sprite= 3, height=1, type="floor"}, -- Grass tile 3 {sprite= 4, height=1, type="road" }, -- Light concrete tile {sprite= 15, height=1, type="road" }, -- Concrete tile {sprite= 5, height=1, type="road" }, -- Dark concrete tile {sprite= 6, height=1, type="floor"}, -- Grass tile with South-East concrete corner {sprite= 8, height=1, type="floor"}, -- Grass tile with South-West concrete corner {sprite= 10, height=1, type="floor"}, -- Grass tile with North-West concrete corner {sprite= 12, height=1, type="floor"}, -- Grass tile with North-East concrete corner {sprite= 7, height=1, type="floor"}, -- Grass tile with South concrete edge {sprite= 9, height=1, type="floor"}, -- Grass tile with West concrete edge {sprite= 11, height=1, type="floor"}, -- Grass tile with North concrete edge {sprite= 13, height=1, type="floor"}, -- Grass tile with East concrete edge {sprite= 14, height=1, type="floor"}, -- Concrete tile with North-East grass corner {sprite= 61, height=1, type="floor"}, -- Concrete tile with South-West grass corner {sprite= 62, height=1, type="floor"}, -- Concrete tile with South-East grass corner {sprite= 63, height=1, type="floor"}, -- Concrete tile with North-West grass corner {sprite= 64, height=1, type="floor"}, -- Grass tile with rocks {sprite=205, height=1, type="floor"}, -- Fully cracked garden marble tile {sprite=206, height=1, type="floor"}, -- Broken garden marble tile {sprite=207, height=1, type="floor"}, -- Partially cracked garden marble tile {sprite=208, height=1, type="floor"}, -- Garden marble tile } -- }}} -- {{{ Road floor sprites. local road_spr = { {sprite= 41, height=1, type="road"}, -- Road with white discontinuous line North-South {sprite= 45, height=1, type="road"}, -- Road with double yellow lines at West edge merging at South --{sprite= 46, height=1, type="road"}, -- Duplicate of 45 {sprite= 42, height=1, type="road"}, -- Road with double yellow lines at West with black orthogonal lines {sprite= 43, height=1, type="road"}, -- Road with double yellow lines at West edge {sprite= 44, height=1, type="road"}, -- Road with double yellow lines at West edge merging at North {sprite= 47, height=1, type="road"}, -- Road with red line at East linked to yellow discontinuous line at South {sprite= 49, height=1, type="road"}, -- Road with red braking line at the East pointing to the West {sprite= 48, height=1, type="road"}, -- Road with red line at East linked to yellow discontinuous line at North {sprite= 53, height=1, type="road"}, -- Road with double yellow lines at East edge merging at the south {sprite= 52, height=1, type="road"}, -- Road with double yellow lines at East with black orthogonal lines --{sprite= 54, height=1, type="road"}, -- Duplicate of 52 {sprite= 51, height=1, type="road"}, -- Road with double yellow lines at East edge {sprite= 57, height=1, type="road"}, -- Road with red line at West linked to yellow discontinuous line at South {sprite= 55, height=1, type="road"}, -- Road with red braking line at the West pointing to the East {sprite= 56, height=1, type="road"}, -- Road with red line at West linked to yellow discontinuous line at North {sprite= 50, height=1, type="road"}, -- Road with grey edge at the East {sprite= 58, height=1, type="road"}, -- Road with grey edge at the West } local road = {} -- All sprites get horizontally flipped as well, for roads running north-south. for _, spr in ipairs(road_spr) do road[#road + 1] = spr -- Unfortunately, current map file format does not support flags like FLIP_H. -- Commented this out until flags can be stored in the file created by the map editor. -- road[#road + 1] = {sprite = spr.sprite + FLIP_H, height = spr.height, type = spr.type} end -- }}} -- {{{ North wall layout and floor sprites. local north_wall = { {sprites = { {sprite=159, xpos=1, ypos=1, type="north"}, -- External doorway North outside left part {sprite=157, xpos=3, ypos=1, type="north"}, -- External doorway North outside right part }, height = 3, objects = {{type="entrance_door", xpos=2, ypos=1, direction="north"}}, }, {sprites = { {sprite=163, xpos=1, ypos=1, type="north"}, -- External doorway North inside left part {sprite=161, xpos=3, ypos=1, type="north"}, -- External doorway North inside right part }, height = 3, objects = {{type="entrance_door", xpos=2, ypos=1, direction="north"}}, }, {sprite=114, height=3, type="north"}, -- External North wall outside {sprite=116, height=3, type="north"}, -- External North wall outside left part of window {sprite=120, height=3, type="north"}, -- External North wall with window {sprite=118, height=3, type="north"}, -- External North wall outside right part of window {sprite=122, height=3, type="north"}, -- External North wall inside {sprite=124, height=3, type="north"}, -- External North wall inside left part of window {sprite=126, height=3, type="north"}, -- External North wall inside right part of window -- Unfortunately, current map file format does not support flags like FLIP_H. -- Commented this out until flags can be stored in the file created by the map editor. -- {sprite=209 + FLIP_H, height=3, type="north"}, -- Lamp post pointing East -- {sprite=210 + FLIP_H, height=3, type="north"}, -- Lamp post pointing West } -- }}} -- {{{ West wall layout and floor sprites. local west_wall = { {sprites = { {sprite=158, xpos=1, ypos=3, type="west"}, -- External doorway West outside left part {sprite=160, xpos=1, ypos=1, type="west"}, -- External doorway West outside right part }, height = 3, objects = {{type="entrance_door", xpos=1, ypos=2, direction="west"}}, }, {sprites = { {sprite=162, xpos=1, ypos=3, type="west"}, -- External doorway West inside left part {sprite=164, xpos=1, ypos=1, type="west"}, -- External doorway West inside right part }, height = 3, objects = {{type="entrance_door", xpos=1, ypos=2, direction="west"}}, }, {sprite=115, height=3, type="west"}, -- External West wall outside {sprite=119, height=3, type="west"}, -- External West wall outside left part of window -- No external west-wall with just glass. 121 (below) isn't finished, 120 (north above) has different lighting -- {sprite=121, height=3, type="west"}, -- External West wall with window glass (UNFINISHED?) {sprite=117, height=3, type="west"}, -- External West wall outside right part of window {sprite=123, height=3, type="west"}, -- External West wall inside {sprite=127, height=3, type="west"}, -- External West wall inside left part of window {sprite=125, height=3, type="west"}, -- External West wall inside right part of window {sprite=210, height=3, type="west"}, -- Lamp post pointing South {sprite=209, height=3, type="west"}, -- Lamp post pointing North } -- }}} -- {{{ Helipad layout. local helipad = { {sprites = { -- Dark tiles around the edges. {sprite=5, xpos=1, ypos=1, type="road"}, {sprite=5, xpos=2, ypos=1, type="road"}, {sprite=5, xpos=3, ypos=1, type="road"}, {sprite=5, xpos=4, ypos=1, type="road"}, {sprite=5, xpos=5, ypos=1, type="road"}, {sprite=5, xpos=1, ypos=2, type="road"}, {sprite=5, xpos=1, ypos=3, type="road"}, {sprite=5, xpos=1, ypos=4, type="road"}, {sprite=5, xpos=1, ypos=5, type="road"}, {sprite=5, xpos=2, ypos=5, type="road"}, {sprite=5, xpos=3, ypos=5, type="road"}, {sprite=5, xpos=4, ypos=5, type="road"}, {sprite=5, xpos=5, ypos=5, type="road"}, {sprite=5, xpos=5, ypos=2, type="road"}, {sprite=5, xpos=5, ypos=3, type="road"}, {sprite=5, xpos=5, ypos=4, type="road"}, -- Dark tiles in the 'H' {sprite=5, xpos=3, ypos=2, type="road"}, {sprite=5, xpos=3, ypos=4, type="road"}, -- Light tiles in the 'H' {sprite=4, xpos=2, ypos=2, type="road"}, {sprite=4, xpos=2, ypos=3, type="road"}, {sprite=4, xpos=2, ypos=4, type="road"}, {sprite=4, xpos=4, ypos=2, type="road"}, {sprite=4, xpos=4, ypos=3, type="road"}, {sprite=4, xpos=4, ypos=4, type="road"}, {sprite=4, xpos=3, ypos=3, type="road"} }, height=5 } } -- }}} local MAX_HEIGHT = 5 -- Biggest height in above sprites local PAGES = { {name = _S.map_editor_window.pages.inside, spr_data = inside}, {name = _S.map_editor_window.pages.outside, spr_data = outside}, {name = _S.map_editor_window.pages.foliage, spr_data = foliage}, {name = _S.map_editor_window.pages.hedgerow, spr_data = hedgerow}, {name = _S.map_editor_window.pages.pond, spr_data = pond}, {name = _S.map_editor_window.pages.road, spr_data = road}, {name = _S.map_editor_window.pages.north_wall, spr_data = north_wall}, {name = _S.map_editor_window.pages.west_wall, spr_data = west_wall}, {name = _S.map_editor_window.pages.helipad, spr_data = helipad} } -- {{{ Functions --! Normalize the editor sprite in the table to always have a 'sprites' field, as well as have sizes and a column width (for the display). --!param (table) Sprite from the 'PAGES[#].spr_data' table. --!return (table 'sprites', 'xsize', 'ysize', 'width', and 'height') local function normalizeEditSprite(spr) assert(MAX_HEIGHT >= spr.height) -- Verify that sprite fits in the maximum height. if spr.sprites == nil then -- {sprite = xxx, height = y} case return {sprites = {{sprite = spr.sprite, xpos = 1, ypos = 1, type=spr.type}}, xsize = 1, ysize = 1, type = spr.type, xorigin = 0, yorigin = 0, width = 2, height = spr.height} else -- {sprites={...}, height=y} case, compute sizes, and width local xsize = 1 local ysize = 1 local spr_type = nil for _, sp in ipairs(spr.sprites) do if sp.xpos > xsize then xsize = sp.xpos end if sp.ypos > ysize then ysize = sp.ypos end assert(not spr_type or spr_type == sp.type) -- Ensure all sprites have the same type. spr_type = sp.type end -- Position to draw (1,1) sprite, by default (0,0) -- Since sprites are drawn top to bottom, yorigin never changes. local xorigin = (ysize - 1) * 32 local yorigin = 0 local width = ysize - 1 + xsize - 1 + 2 if width < ysize then width = ysize end return {sprites = spr.sprites, xsize = xsize, ysize = ysize, type = spr_type, xorigin = xorigin, yorigin = yorigin, width = width, height = spr.height, objects = spr.objects} end end --!Decide the highest possible placement for 'width' columns. --!param cols (list int) First available position in each column, higher number is lower. --!param width (int) Required width as number of columns. --!return (int, int) Starting column and placement height. local function getHighestRowcol(cols, width) local best = cols[1] + 100000 local best_col = 0 for left = 1, #cols - width + 1 do -- Try starting in each column. if cols[left] < best then -- First column is potentially better. local top = cols[left] for i = 1, width - 1 do if top < cols[left + i] then top = cols[left + i] if top >= best then break end -- i-th column breaks improvement. end end if top < best then best = top best_col = left end end end return best_col, best end --! Layout buttons from a tab of editor sprites. --!param esprs (list) Editor sprite tab to layout. --!param num_cols (int) Number of columns available in the layout. --!return (list) Sprites with button positions in ('column', 'row'). local function layoutButtons(esprs, num_cols) local buttons = {} local cols = {} for i = 1, num_cols do cols[i] = 1 end for hgt = MAX_HEIGHT, 1, -1 do -- Fit highest sprites first. for _, espr in ipairs(esprs) do espr = normalizeEditSprite(espr) if espr.height == hgt then local spr_col, spr_height = getHighestRowcol(cols, espr.width) buttons[#buttons + 1] = espr buttons[#buttons].column = spr_col buttons[#buttons].row = spr_height for i = spr_col, spr_col + espr.width - 1 do -- Update height in the affected columns assert(cols[i] <= spr_height) cols[i] = spr_height + hgt end end end end return buttons end -- }}} -- }}} local EDITOR_WINDOW_XSIZE = 368 local EDITOR_WINDOW_YSIZE = 586 local EDITOR_COLUMNS = 10 -- Number of columns for the sprite buttons local EDITOR_COLUMN_SIZE = 32 + 3 -- Width of a sprite button in pixels local EDITOR_ROW_SIZE = 32 + 4 -- Height of a sprite button in pixels function UIMapEditor:UIMapEditor(ui) self:UIResizable(ui, EDITOR_WINDOW_XSIZE, EDITOR_WINDOW_YSIZE, col_bg) self.resizable = false self.ui = ui self.panel_sprites = self.ui.app.map.blocks -- For when there are multiple things which could be sampled from a tile, -- keep track of the index of which one was most recently sampled, so that -- next time a different one is sampled. self.sample_i = 1 -- Cursor data in the main world view. -- States: -- - disabled: Just show the cursor. -- - grid: Show an area with red rectangles (requires 'sprite' to exist). -- - left: Dragging with left mouse button is down, (leftx, lefty) defines the tile. -- - right: Dragging with right mouse button down, (rightx, righty) defines the tile. -- - both: Dragging with both left and right mouse buttons down (initiated with left -- button), (rightx, righty) defines the tile where right button got pressed. -- - delete: Like grid, with a 1x1 cursor for selecting tiles to remove walls from. -- - delete-left: Left mouse button drag of 'delete' mode. -- - parcel: Like grid, with a 1x1 cursor for selecting tiles to set the parcel. -- - parcel-left: Left mouse button drag of 'parcel' mode. -- - paste: Like grid, with a copy_xsize, copy_ysize cursor to show where to paste. -- - paste-left: Left mouse button drag of 'paste' mode. Pasting is limited to dragged -- area (which can be smaller than (copy_xsize, copy_ysize) area). -- - camera: Like grid, with a 1x1 cursor for selecting tile to set the camera -- - heliport: Like grid, with a 1x1 cursor for selecting tile to set the heliport -- -- Notes: -- - The code switches back to 'grid' or 'disabled' without waiting for all -- buttons getting released. -- - Nothing gets added in the world until you let go of a mouse button. -- - Drag detection ('is_drag') is used to allow cancel if user moves back -- to the (leftx, lefty) position. -- - The sprite decides how you can drag (none, north-south, east-west, area) -- self.cursor = { state = "disabled", -- State of the cursor. sprite = nil, -- Selected sprite from the menu. is_drag = false, -- Whether a true drag (at least 2 cells covered) has been detected. parcel = nil, -- Parcel number to set in 'parcel' / 'parcel-left' mode. camera = nil, -- Camera player to set in 'camera' mode. heliport = nil, -- Heliport player to set in 'heliport' mode. xpos = 0, -- Horizontal tile position of the mouse cursor. ypos = 0, -- Vertical tile position of the mouse cursor. leftx = 0, -- Horizontal tile position where the left-click was first detected. lefty = 0, -- Vertical tile position where the left-click was first detected. rightx = 0, -- Horizontal tile position where the right-click was first detected. righty = 0, -- Vertical tile position where the right-click was first detected. copy_data = nil, -- Data of the copied area, 'nil' if no data available. copy_xsize = 0, -- Horizontal size of the copy area. copy_ysize = 0, -- Vertical size of the copy area. } -- {{{ Creation of buttons. -- A sprite table containing a "cell outline" sprite self.cell_outline = TheApp.gfx:loadSpriteTable("Bitmap", "aux_ui", true) self:addBevelPanel(0, 0, EDITOR_WINDOW_XSIZE, EDITOR_WINDOW_YSIZE, col_bg) -- Background of the window. self.block_buttons = {} -- List of table {button = .., panel = ..} self.selected_block = nil -- Page of of block buttons currently displayed/selected. -- Make the page selection buttons local XSTART = 10 local XSIZE = 109 local YSIZE = 20 local ypos = 10 local xpos = XSTART self.page_selectbuttons = {} for _, page in ipairs(PAGES) do local name = page.name if xpos + XSIZE >= EDITOR_WINDOW_XSIZE then -- Update ypos (and xpos) if necessary. xpos = XSTART ypos = ypos + YSIZE + 2 end local p = self:addBevelPanel(xpos, ypos, XSIZE, YSIZE, col_bg) :setLabel(name):makeToggleButton(0, 0, XSIZE, YSIZE, nil, --[[persistable:map_editor_spritepage_clicked]] function() self:pageClicked(name) end) local spr_buttons = layoutButtons(page.spr_data, EDITOR_COLUMNS) local page_data = {button = p, name = name, sprite_buttons = spr_buttons} self.page_selectbuttons[#self.page_selectbuttons + 1] = page_data xpos = xpos + XSIZE + 10 end -- Make the bottom text buttons xpos = XSTART ypos = 420 local text_pages = { {name = "paste", text = _S.map_editor_window.pages.paste}, {name = "delete_wall", text = _S.map_editor_window.pages.delete_wall}, {name = "parcel_0", text = _S.map_editor_window.pages.parcel_0, parcel = 0}, {name = "parcel_1", text = _S.map_editor_window.pages.parcel_1, parcel = 1}, {name = "parcel_2", text = _S.map_editor_window.pages.parcel_2, parcel = 2}, {name = "parcel_3", text = _S.map_editor_window.pages.parcel_3, parcel = 3}, {name = "parcel_4", text = _S.map_editor_window.pages.parcel_4, parcel = 4}, {name = "parcel_5", text = _S.map_editor_window.pages.parcel_5, parcel = 5}, {name = "parcel_6", text = _S.map_editor_window.pages.parcel_6, parcel = 6}, {name = "parcel_7", text = _S.map_editor_window.pages.parcel_7, parcel = 7}, {name = "parcel_8", text = _S.map_editor_window.pages.parcel_8, parcel = 8}, {name = "parcel_9", text = _S.map_editor_window.pages.parcel_9, parcel = 9}, {name = "camera_1", text = _S.map_editor_window.pages.camera_1, camera = 1}, {name = "camera_2", text = _S.map_editor_window.pages.camera_2, camera = 2}, {name = "camera_3", text = _S.map_editor_window.pages.camera_3, camera = 3}, {name = "camera_4", text = _S.map_editor_window.pages.camera_4, camera = 4}, {name = "heliport_1", text = _S.map_editor_window.pages.heliport_1, heliport = 1}, {name = "heliport_2", text = _S.map_editor_window.pages.heliport_2, heliport = 2}, {name = "heliport_3", text = _S.map_editor_window.pages.heliport_3, heliport = 3}, {name = "heliport_4", text = _S.map_editor_window.pages.heliport_4, heliport = 4}} for _, page in ipairs(text_pages) do if xpos + XSIZE >= EDITOR_WINDOW_XSIZE then -- Update ypos (and xpos) if necessary. xpos = XSTART ypos = ypos + YSIZE + 2 end local name = page.name local p = self:addBevelPanel(xpos, ypos, XSIZE, YSIZE, col_bg) :setLabel(page.text):makeToggleButton(0, 0, XSIZE, YSIZE, nil, --[[persistable:map_editor_textpage_clicked]] function() self:pageClicked(name) end) local page_data = {button = p, name = name, data = page} self.page_selectbuttons[#self.page_selectbuttons + 1] = page_data xpos = xpos + XSIZE + 10 end self:pageClicked("") -- Initialize all above 'page_selectbuttons'. -- }}} self:setPosition(0.1, 0.1) end function UIMapEditor:setPlayerCount(count) local map = self.ui.app.map map:setPlayerCount(count) if self.cursor.state == "camera" or self.cursor.state == "heliport" then map:updateDebugOverlay() end end -- {{{ function UIMapEditor:pageClicked(name) --! Update how the button is displayed based on the provided new state. --!param button (Panel) to update. --!param action (str) New state of the button. local function updateToggleButton(button, action) if action == "raised" then button:enable(true) button:setVisible(true) button:setToggleState(false) elseif action == "lowered" then button:enable(true) button:setVisible(true) button:setToggleState(true) elseif action == "invisible" then button:enable(false) button:setVisible(false) elseif action == "disabled" then button:enable(false) button:setVisible(true) button:setToggleState(false) else assert(false) -- Should never arrive here end end --! Callback function of the page select buttons. --!param name (string) Name of the clicked page. function UIMapEditor:pageClicked(name) local map = self.ui.app.map if name == "paste" then -- Make 'paste' button non-selectable if there is no data to paste. name = self.cursor.copy_data and name or "" else self.cursor.copy_data = nil -- Delete copied area when selecting another item. end for _, pb in ipairs(self.page_selectbuttons) do if pb.name == name then map:clearDebugText() self.cursor.state = name == "paste" and "paste" or "disabled" updateToggleButton(pb.button, "lowered") if pb.sprite_buttons then -- 'sprite' button, display sprites to select from, by the user. self:buildSpriteButtons(pb.sprite_buttons) else -- 'text' button, switch cursor to the right mode directly. self:buildSpriteButtons({}) if pb.name == "delete_wall" then self.cursor.state = "delete" self.cursor.sprite = nil self.cursor.is_drag = false elseif pb.name == "paste" then self.cursor.state = "paste" self.cursor.sprite = nil self.cursor.is_drag = false elseif pb.data.camera then self.cursor.state = "camera" self.cursor.spirte = nil self.cursor.is_drag = false self.cursor.camera = pb.data.camera map:loadDebugText("camera") elseif pb.data.heliport then self.cursor.state = "heliport" self.cursor.spirte = nil self.cursor.is_drag = false self.cursor.heliport = pb.data.heliport map:loadDebugText("heliport") else -- Should be a parcel button. assert(pb.data.parcel) self.cursor.state = "parcel" self.cursor.sprite = nil self.cursor.is_drag = false self.cursor.parcel = pb.data.parcel map:loadDebugText("parcel") end end elseif pb.name == "paste" and not self.cursor.copy_data then updateToggleButton(pb.button, "disabled") else updateToggleButton(pb.button, "raised") end end end --! Do layout of the sprite buttons of the page. function UIMapEditor:buildSpriteButtons(buttons) self.selected_block = buttons local XBASE = 10 local YBASE = 83 local number = 1 for _, button in ipairs(buttons) do local xpos = XBASE + (button.column - 1) * EDITOR_COLUMN_SIZE local ypos = YBASE + (button.row - 1) * EDITOR_ROW_SIZE local width = EDITOR_COLUMN_SIZE * button.width - 2 local height = EDITOR_ROW_SIZE * button.height - 2 local pb = self.block_buttons[number] if pb == nil then -- New sprite button needed local bbutton_number = number local bbutton = self:addBevelPanel(xpos, ypos, width, height, col_bg) bbutton = bbutton:makeToggleButton(0, 0, width, height, nil, --[[persistable:map_editor_block_clicked]] function() self:blockClicked(bbutton_number) end) updateToggleButton(bbutton, "raised") local bpanel = self:addPanel(number, xpos+1, ypos+1, width-2, height-2) bpanel.visible = true bpanel.editor_button = button bpanel.custom_draw = --[[persistable:map_editor_draw_block_sprite]] function(panel, canvas, x, y) x = x + panel.x + panel.editor_button.xorigin y = y + panel.y + panel.editor_button.yorigin for _, spr in ipairs(panel.editor_button.sprites) do local xspr = x + (spr.xpos - spr.ypos) * 32 local yspr = y + (spr.xpos + spr.ypos) * 16 - 32 panel.window.panel_sprites:draw(canvas, spr.sprite % 256, xspr, yspr, math.floor(spr.sprite / 256)) end end self.block_buttons[#self.block_buttons + 1] = {button=bbutton, panel=bpanel} else -- Reposition & resize existing sprite button local bbutton = pb.button bbutton:setPosition(xpos, ypos) bbutton:setSize(width, height) updateToggleButton(bbutton, "raised") local bpanel = pb.panel bpanel.editor_button = button bpanel:setPosition(xpos+1, ypos+1) bpanel:setSize(width-2, height-2) bpanel:setVisible(true) end number = number + 1 end -- Make remaining buttons and panels invisible. while true do local pb = self.block_buttons[number] if pb == nil then break end updateToggleButton(pb.button, "invisible") pb.panel.visible = false number = number + 1 end end -- }}} --! Should the given type of sprite be considered a floor sprite? --!param sprite_type (string) Type of sprite. --!return The (boolean) type is a floor sprite type. local function isFloorSpriteType(sprite_type) return sprite_type == "floor" or sprite_type == "hospital" or sprite_type == "road" end --! Construct cell flags for a given kind of floor sprite. --!param sprite_type (string) Type of sprite. local function makeCellFlags(sprite_type) if sprite_type == "floor" then return {buildable=false, passable=false, hospital=false} elseif sprite_type == "road" then return {buildable=false, passable=true, hospital=false} elseif sprite_type == "hospital" then return {buildable=true, passable=true, hospital=true} end assert(false) -- Should never get here end --! Get the tile area covered by two points. --!param x1 (jnt) Horizontal coordinate of the first point. --!param y1 (int) Vertical coordinate of the first point. --!param x2 (jnt) Horizontal coordinate of the second point. --!param y2 (int) Vertical coordinate of the second point. --!return (4 int) Smallest horizontal, smallest vertical, largest horizontal, -- and largest vertical coordinate. local function getCoveredArea(x1, y1, x2, y2) local minx, maxx, miny, maxy if x1 < x2 then minx, maxx = x1, x2 else minx, maxx = x2, x1 end if y1 < y2 then miny, maxy = y1, y2 else miny, maxy = y2, y1 end return minx, miny, maxx, maxy end --! Get the size of an area covered by two points. --!param x1 (jnt) Horizontal coordinate of the first point. --!param y1 (int) Vertical coordinate of the first point. --!param x2 (jnt) Horizontal coordinate of the second point. --!param y2 (int) Vertical coordinate of the second point. --!return (2 int) Horizontal and vertical size of the area. local function getAreaSize(x1, y1, x2, y2) local minx, miny, maxx, maxy = getCoveredArea(x1, y1, x2, y2) return maxx - minx + 1, maxy - miny + 1 end --! Test whether (px, py) is inside the given area. --!param px (int) Horizontal coordinate of the point to test. --!param py (int) Vertical coordinate of the point to test. --!param minx (jnt) Smallest horizontal coordinate of the area. --!param miny (int) Smallest vertical coordinate of the area. --!param maxx (jnt) Largest horizontal coordinate of the area. --!param maxy (int) Largest vertical coordinate of the area. --!return (bool) Whether the point is inside the given area. local function isPointInside(px, py, minx, miny, maxx, maxy) return px >= minx and px <= maxx and py >= miny and py <= maxy end --! Compute x/y pairs to draw the cursor sprite over the area. --!param minx (int) First horizontal position to draw the sprite. --!param miny (int) First vertical position to draw the sprite. --!param maxx (int) Last horizontal position to draw the sprite. --!param maxy (int) Last vertical position to draw the sprite. --!param dx (nil or int) Horizontal step size of drawing, usually same size as -- the width of the sprite being drawn, default is 1. --!param dy (nil or int) Vertical step size of drawing, usually same size as -- the height of the sprite being drawn, default is 1. --!return (array of (xpos, ypos) pairs) Points to draw the sprite cursor. local function computeCursorSpriteAtArea(minx, miny, maxx, maxy, dx, dy) local coords = {} if not dx or not dy then dx, dy = 1, 1 end assert(dx > 0 and dy > 0) local xbase, ybase xbase = minx while xbase <= maxx do ybase = miny while ybase <= maxy do coords[#coords + 1] = {xpos = xbase, ypos = ybase} ybase = ybase + dy end xbase = xbase + dx end return coords end --! Compute the positions to draw the selected sprite in the world. --!return (array of {xpos, ypos} tables) Coordinates to draw the selected sprite. function UIMapEditor:getDrawPoints() if self.cursor.state == "disabled" then -- Nothing to compute, drop to bottom {} return. elseif self.cursor.state == "grid" then local bx, by = self:areaOnWorld(self.cursor.xpos, self.cursor.ypos, self.cursor.sprite.xsize, self.cursor.sprite.ysize) return {{xpos = bx, ypos = by}} elseif self.cursor.state == "delete" or self.cursor.state == "parcel" or self.cursor.state == "camera" or self.cursor.state == "heliport" or self.cursor.state == "paste" then return {{xpos = self.cursor.xpos, ypos = self.cursor.ypos}} elseif self.cursor.state == "left" then -- Simple drag (left button only). local minx, miny, maxx, maxy = getCoveredArea(self.cursor.leftx, self.cursor.lefty, self.cursor.xpos, self.cursor.ypos) if minx ~= maxx or miny ~= maxy or not self.cursor.is_drag then -- Just 1 tile without starting a drag, or an area of at least two tiles. return computeCursorSpriteAtArea(minx, miny, maxx, maxy, self.cursor.sprite.xsize, self.cursor.sprite.ysize) end elseif self.cursor.state == "delete-left" or self.cursor.state == "parcel-left" or self.cursor.state == "paste-left" then local minx, miny, maxx, maxy = getCoveredArea(self.cursor.leftx, self.cursor.lefty, self.cursor.xpos, self.cursor.ypos) if minx ~= maxx or miny ~= maxy or not self.cursor.is_drag then -- Just 1 tile without starting a drag, or an area of at least two tiles. return computeCursorSpriteAtArea(minx, miny, maxx, maxy, 1, 1) end elseif self.cursor.state == "right" then local minx, miny, maxx, maxy = getCoveredArea(self.cursor.rightx, self.cursor.righty, self.cursor.xpos, self.cursor.ypos) if minx ~= maxx or miny ~= maxy or not self.cursor.is_drag then -- Just 1 tile without starting a drag, or an area of at least two tiles. return computeCursorSpriteAtArea(minx, miny, maxx, maxy, 1, 1) end elseif self.cursor.state == "both" then -- left+right drag (left initiated). -- Area is defined from first to last point, 'right' point must be inside the area. local minx, miny, maxx, maxy = getCoveredArea(self.cursor.leftx, self.cursor.lefty, self.cursor.xpos, self.cursor.ypos) if minx ~= maxx or miny ~= maxy then -- Otherwise area is 1x1, either due to 'cancel', or never enlarged. if isPointInside(self.cursor.rightx, self.cursor.righty, minx, miny, maxx, maxy) then -- Get block size between left and right click. local dx, dy = getAreaSize(self.cursor.leftx, self.cursor.lefty, self.cursor.rightx, self.cursor.righty) if dx > 1 or dy > 1 then -- Otherwise, left and right click is in the same tile. return computeCursorSpriteAtArea(minx, miny, maxx, maxy, dx, dy) end end end end return {} end --! Fill an area of tiles with red cursor rectangles. Caller must make sure that -- the area is completely inside the world boundaries. --!param canvas Canvas to draw at. --!param xpos (int) Horizontal base tile position (of the top corner). --!param ypos (int) Vertical base tile position (of the top corner). --!param xsize (int) Horizontal size in tiles. --!param ysize (int) Vertical size in tiles. function UIMapEditor:fillCursorArea(canvas, xpos, ypos, xsize, ysize) local ui = self.ui local zoom = ui.zoom_factor for x = 0, xsize - 1 do for y = 0, ysize - 1 do local xcoord, ycoord = ui:WorldToScreen(xpos + x, ypos + y) self.cell_outline:draw(canvas, 2, math.floor(xcoord / zoom) - 32, math.floor(ycoord / zoom)) end end end --! Draw the display (map editor window, and main world display) --!param canvas (draw object) Canvas to draw on. function UIMapEditor:draw(canvas, ...) local ui = self.ui -- Draw the red grid for the selected tile. local coords = self:getDrawPoints() if #coords ~= 0 then -- Get size of the cursor. local xsize, ysize if self.cursor.state == "delete" or self.cursor.state == "delete-left" or self.cursor.state == "parcel" or self.cursor.state == "parcel-left" or self.cursor.state == "heliport" or self.cursor.state == "camera" or self.cursor.state == "paste-left" or self.cursor.state == "right" then xsize, ysize = 1, 1 elseif self.cursor.state == "paste" then xsize, ysize = self.cursor.copy_xsize, self.cursor.copy_ysize else xsize, ysize = self.cursor.sprite.xsize, self.cursor.sprite.ysize end -- Draw cursors. local scaled = canvas:scale(ui.zoom_factor) for _, coord in ipairs(coords) do local xpos, ypos = coord.xpos, coord.ypos self:fillCursorArea(canvas, xpos, ypos, xsize, ysize) end if scaled then canvas:scale(1) end end UIResizable.draw(self, canvas, ...) end -- {{{ several useful functions --! User clicked at a block (a button with a sprite). --!param num Index block number. function UIMapEditor:blockClicked(num) -- Reset toggle of other block buttons. for bnum = 1, #self.block_buttons do if bnum ~= num then self.block_buttons[bnum].button:setToggleState(false) end end if self.block_buttons[num].button.toggled then local sprite = self.selected_block[num] self.cursor.state = "grid" self.cursor.sprite = {xsize = sprite.xsize, ysize = sprite.ysize, sprites = sprite.sprites, objects = sprite.objects, type = sprite.type} else self.cursor.state = "disabled" self.cursor.sprite = nil end end --! Convert mouse coordinates to tile coordinates in the world. --!param mx (int) Mouse X screen coordinate. --!param my (int) Mouse y screen coordinate. --!return (int, int) Tile x,y coordinates, limited to the map. function UIMapEditor:mouseToWorld(mx, my) local ui = self.ui local wxr, wyr = ui:ScreenToWorld(self.x + mx, self.y + my) local wx = math.floor(wxr) local wy = math.floor(wyr) return self:areaOnWorld(wx, wy, 1, 1) end --! Stay on world with the entire area, by moving the base position (if needed). --!param xpos (int) Horizontal base position. --!param ypos (int) Vertical base position. --!param xsize (int) Horizontal size. --!param ysize (int) Vertical size. --!return (int, int) Allowed base position function UIMapEditor:areaOnWorld(xpos, ypos, xsize, ysize) local map = self.ui.app.map xpos = math.min(math.max(xpos, 1), map.width - xsize + 1) ypos = math.min(math.max(ypos, 1), map.height - ysize + 1) return xpos, ypos end -- }}} --! Retrieve what drag capabilities are allowed by the currently selected world cursor sprite. --!return (string) "none"=not draggable, "east-west"=dragging only in east-west direction, -- "north-south"=dragging only in north-south direction, "area"=dragging in both directions. function UIMapEditor:getCursorDragCapabilities() -- Parcel and delete modes have unrestricted movement. if self.cursor.state == "delete" or self.cursor.state == "delete-left" or self.cursor.state == "parcel" or self.cursor.state == "parcel-left" or self.cursor.state == "paste" or self.cursor.state == "paste-left" or self.cursor.state == "right" then return "area" end -- No sprite, or not a 1x1 size -> not draggable. if not self.cursor.sprite then return "none" end if self.cursor.sprite.xsize ~= 1 or self.cursor.sprite.ysize ~= 1 then return "none" end if isFloorSpriteType(self.cursor.sprite.type) then return "area" end if self.cursor.sprite.type == "north" then return "east-west" end if self.cursor.sprite.type == "west" then return "north-south" end assert(false) -- Should never get here end --! The user moved the mouse! --!param x (int) New horizontal position of the mouse at the screen. --!param y (int) New vertical position of the mouse at the screen. --!param dx (int) Horizontal shift in position of the mouse at the screen. --!param dy (int) Vertical shift in position of the mouse at the screen. function UIMapEditor:onMouseMove(x, y, dx, dy) local repaint = UIResizable.onMouseMove(self, x, y, dx, dy) -- Update the stored state of cursor position, and trigger a repaint as the -- cell outline sprite should track the cursor position. local wx, wy = self:mouseToWorld(x, y) if wx ~= self.cursor.xpos or wy ~= self.cursor.ypos then if self.cursor.state == "disabled" then self.cursor.xpos = wx -- Nothing is displayed, just keep track of the position. self.cursor.ypos = wy return repaint elseif self.cursor.state == "grid" or self.cursor.state == "delete" or self.cursor.state == "parcel" or self.cursor.state == "paste" or self.cursor.state == "heliport" or self.cursor.state == "camera" or self.cursor.state == "right" then self.cursor.xpos = wx -- Allow arbitrary movement. self.cursor.ypos = wy return true else -- Dragging in some mode. self.cursor.is_drag = true -- Crossing a tile boundary implies 'real' dragging. -- Update wx and wy according to drag capabilities. local cap = self:getCursorDragCapabilities() if cap == "north-south" then wx = self.cursor.leftx elseif cap == "east-west" then wy = self.cursor.lefty elseif cap == "none" then wx, wy = self.cursor.leftx, self.cursor.lefty -- Block all movement. end repaint = repaint or self.cursor.xpos ~= wx or self.cursor.ypos ~= wy self.cursor.xpos = wx self.cursor.ypos = wy return repaint end end end --! Mouse button got pressed. --!param button (string) Mouse button being pressed. --!param xpos (int) Horizontal position of the mouse at the time of the mouse button press. --!param ypos (int) Vertical position of the mouse at the time of the mouse button press. --!return (bool) Whether to repaint the display. function UIMapEditor:onMouseDown(button, xpos, ypos) if UIResizable.onMouseDown(self, button, xpos, ypos) then -- Button in this window. return true end if self:hitTest(xpos, ypos) then -- Clicked elsewhere in the window. return true end local repaint = false if self.cursor.state == "disabled" then if button == "right" then self.cursor.state = "right" self.cursor.rightx = self.cursor.xpos self.cursor.righty = self.cursor.ypos end elseif self.cursor.state == "grid" then -- LMB down switches to 'left' if button == "left" then self.cursor.state = "left" self.cursor.leftx = self.cursor.xpos self.cursor.lefty = self.cursor.ypos -- RMB down switches to 'right' elseif button == "right" then self.cursor.state = "right" self.cursor.rightx = self.cursor.xpos self.cursor.righty = self.cursor.ypos end -- Since 'grid' already shows the red rectangles, nothing changes visually. elseif self.cursor.state == "delete" then if button == "left" then self.cursor.state = "delete-left" self.cursor.leftx = self.cursor.xpos self.cursor.lefty = self.cursor.ypos elseif button == "right" then self.cursor.state = "right" self.cursor.rightx = self.cursor.xpos self.cursor.righty = self.cursor.ypos end elseif self.cursor.state == "parcel" then if button == "left" then self.cursor.state = "parcel-left" self.cursor.leftx = self.cursor.xpos self.cursor.lefty = self.cursor.ypos elseif button == "right" then self.cursor.state = "right" self.cursor.rightx = self.cursor.xpos self.cursor.righty = self.cursor.ypos end elseif self.cursor.state == "left" then -- If RMB is down, switch to 'both'. if button == "right" then self.cursor.state = "both" self.cursor.rightx = self.cursor.xpos self.cursor.righty = self.cursor.ypos repaint = true end elseif self.cursor.state == "right" then -- Ignore all down buttons, until RMB is released. elseif self.cursor.state == "paste" then if button == "left" then self.cursor.state = "paste-left" self.cursor.leftx = self.cursor.xpos self.cursor.lefty = self.cursor.ypos elseif button == "right" then self.cursor.state = "right" self.cursor.rightx = self.cursor.xpos self.cursor.righty = self.cursor.ypos end -- "both", "delete-left", "parcel-left", "paste-left" do not handle buttons. end return repaint end --! Add an object to the map. Currently, only "entrance_door" is supported. --!param obj_type (str) Type of object ("entrance_door") --!param xpos (int) Desired x position of the new object. --!param ypos (int) Desired y position of the new object. --!param direction (str) Direction of the new object ("north" or "west"). function UIMapEditor:drawObject(obj_type, xpos, ypos, direction) local world = self.ui.app.world -- TheApp.objects[name].thob -- name = world.object_id_by_thob[thob] -- generic object = world.object_types[object_id] -- instance: world:getObject(x, y, name) if obj_type == "entrance_door" then world:newObject("entrance_right_door", xpos, ypos, direction) if direction == "north" then world:newObject("entrance_left_door", xpos - 1, ypos, direction) else world:newObject("entrance_left_door", xpos, ypos - 1, direction) end end end --! Remove an entrance door from the world. --!param door Entrance door to remove. function UIMapEditor:removeDoor(door) local world = self.ui.app.world world:destroyEntity(door) if door.slave then world:destroyEntity(door.slave) end end --! Collect other objects that use the space needed for the specified new object. -- If they exist, return them or delete them. --!param obj_type (str) Type of object ("entrance_door") --!param xpos (int) Desired x position of the new object. --!param ypos (int) Desired y position of the new object. --!param direction (str) Direction of the new object ("north" or "west"). --!param remove (bool) If set, remove the found objects. --!return (list) The objects that use the space, if they are not removed. function UIMapEditor:checkObjectSpace(obj_type, xpos, ypos, direction, remove) local world = self.ui.app.world local right_door = world.object_types["entrance_right_door"] local left_door = world.object_types["entrance_left_door"] local th = self.ui.app.map.th --! Check single tile for conflicts with other doors. --!param x X position of the tile to check. --!param y Y position of the tile to check. --!return (int, int) position of the conflicting door, or (nil, nil) if no conflict. local function checkTile(x, y) local all_flags = th:getCellFlags(x, y) if not all_flags.thob then return nil, nil elseif all_flags.thob == right_door.thob then return x, y elseif all_flags.thob == left_door.thob then if all_flags.tallWest then return x, y + 1 else return x + 1, y end end return nil, nil end -- While the general intention is 'objects', the only object that can exist -- and is handled here is the entrance door. assert(obj_type == "entrance_door") local doors = {} local x, y = checkTile(xpos, ypos) if x then doors[#doors + 1] = world:getObject(x, y, "entrance_right_door") end local x2, y2 if direction == "north" then x2, y2 = checkTile(xpos - 1, ypos) else x2, y2 = checkTile(xpos, ypos - 1) end if x2 and (x2 ~= x or y2 ~= y) then doors[#doors + 1] = world:getObject(x2, y2, "entrance_right_door") end if remove then for _, door in ipairs(doors) do self:removeDoor(door) end return end return doors end --! Recognize objects in the collection of thob+tallWest entries --!param minx (int) Base horizontal position (objects should be put relative to it). --!param miny (int) Base vertical position (objects should be put relative to it). --!param thobdir_positions (table xy to {thob, tallWest}) Found thobs. --!return (array of {type, xpos, ypos, direction}) Found objects. function UIMapEditor:findObjects(minx, miny, thobdir_positions) local world = self.ui.app.world local right_door = world.object_types["entrance_right_door"] local left_door = world.object_types["entrance_left_door"] local objects = {} -- Found objects ordered by position. -- Look for right entrance door. for xy_right, thobdir_right in pairs(thobdir_positions) do if right_door.thob == thobdir_right.thob then -- Found right door, is there a matching left door? local xy_left = thobdir_right.tallWest and xy_right - 256 or xy_right - 1 local thobdir_left = thobdir_positions[xy_left] if thobdir_left and thobdir_left.thob == left_door.thob and thobdir_left.tallWest == thobdir_right.tallWest then local obj = {type="entrance_door", xpos = xy_right % 256 - minx + 1, ypos = math.floor(xy_right / 256) - miny + 1, direction=thobdir_right.tallWest and "west" or "north"} objects[#objects + 1] = obj end end end return objects end --! Draw the selected sprite at the given coordinates. --!param coords (array or {xpos, ypos} tables) Coordinates to draw the selected sprite. function UIMapEditor:drawCursorSpriteAtArea(coords) local th = self.ui.app.map.th if self.cursor.sprite then for _, coord in ipairs(coords) do local xbase, ybase = coord.xpos, coord.ypos -- Draw the selected sprite. xbase, ybase = self:areaOnWorld(xbase, ybase, self.cursor.sprite.xsize, self.cursor.sprite.ysize) for _, spr in ipairs(self.cursor.sprite.sprites) do local tx, ty = xbase + spr.xpos - 1, ybase + spr.ypos - 1 local f, nw, ww = th:getCell(tx, ty) -- floor, north-wall, west-wall (, ui) if isFloorSpriteType(spr.type) then f = spr.sprite -- Floor sprite gets changed, also modify the cell flags. th:setCellFlags(tx, ty, makeCellFlags(spr.type)) elseif spr.type == "north" then nw = spr.sprite elseif spr.type == "west" then ww = spr.sprite end th:setCell(tx, ty, f, nw, ww, 0) end -- Draw the objects if self.cursor.sprite.objects then for _, obj in ipairs(self.cursor.sprite.objects) do local tx, ty = xbase + obj.xpos - 1, ybase + obj.ypos - 1 self:drawObject(obj.type, tx, ty, obj.direction) end end end end end --! Copy area from the game. --!return (bool) Whether copying succeeded. function UIMapEditor:copyArea() local th = self.ui.app.map.th local minx, miny, maxx, maxy = getCoveredArea(self.cursor.rightx, self.cursor.righty, self.cursor.xpos, self.cursor.ypos) if minx == maxx and miny == maxy and self.is_drag then return false -- Canceled drag end local thobdir_positions = {} -- Copy data. self.cursor.copy_data = {} self.cursor.copy_xsize = maxx - minx + 1 self.cursor.copy_ysize = maxy - miny + 1 local tx, ty tx = minx while tx <= maxx do ty = miny while ty <= maxy do local f, nw, ww = th:getCell(tx, ty) local all_flags = th:getCellFlags(tx, ty) self.cursor.copy_data[#self.cursor.copy_data + 1] = { xpos = tx - minx, ypos = ty - miny, floor = f, north_wall = nw, west_wall = ww, flags = {buildable = all_flags.buildable, passable = all_flags.passable, hospital = all_flags.hospital}, } if all_flags.thob and all_flags.thob ~= 0 then thobdir_positions[tx + 256 * ty] = {thob = all_flags.thob, tallWest = all_flags.tallWest} end ty = ty + 1 end tx = tx + 1 end self.cursor.copy_objects = self:findObjects(minx, miny, thobdir_positions) return true end --! Paste copied area into the destination area (one or more times). function UIMapEditor:pasteArea() local th = self.ui.app.map.th local minx, miny, maxx, maxy -- Fill 'minx', 'miny' with the non-cursor corner. if self.cursor.leftx == self.cursor.xpos and self.cursor.lefty == self.cursor.ypos then if self.is_drag then return -- Canceled paste area. end minx = self.cursor.xpos + self.cursor.copy_xsize - 1 miny = self.cursor.ypos + self.cursor.copy_ysize - 1 minx, miny = self:areaOnWorld(minx, miny, 1, 1) else minx = self.cursor.leftx miny = self.cursor.lefty end minx, miny, maxx, maxy = getCoveredArea(minx, miny, self.cursor.xpos, self.cursor.ypos) -- Copy area in 'sub-areas' of (self.cursor.copy_xsize, self.cursor.copy_ysize). local tx, ty tx = minx while tx <= maxx do ty = miny while ty <= maxy do -- Copy floor and wall sprites, and set the passable/buildable/hospital flag. for _, elm in ipairs(self.cursor.copy_data) do local x, y = tx + elm.xpos, ty + elm.ypos if x <= maxx and y <= maxy then th:setCell(x, y, elm.floor, elm.north_wall, elm.west_wall, 0) th:setCellFlags(x, y, elm.flags) end end -- Make room for the new objects. for _, obj in ipairs(self.cursor.copy_objects) do local x, y = tx + obj.xpos - 1, ty + obj.ypos - 1 if x <= maxx and y <= maxy then self:checkObjectSpace(obj.type, x, y, obj.direction, true) end end -- Paste the objects of the copied area. for _, obj in ipairs(self.cursor.copy_objects) do local x, y = tx + obj.xpos - 1, ty + obj.ypos - 1 if x <= maxx and y <= maxy then self:drawObject(obj.type, x, y, obj.direction) end end ty = ty + self.cursor.copy_ysize end tx = tx + self.cursor.copy_xsize end end --! Delete the walls at the given coordinates. --!param coords (array or {xpos, ypos} tables) Coordinates to remove the walls. function UIMapEditor:deleteWallsAtArea(coords) local th = self.ui.app.map.th local thobdir_positions = {} -- Storage for found objects. for _, coord in ipairs(coords) do local tx, ty = coord.xpos, coord.ypos -- Remove west and north wall. local f = th:getCell(tx, ty) -- floor (, north-wall, west-wall , ui) th:setCell(tx, ty, f, 0, 0, 0) -- No need for map:setCellFlags, as 'passable', 'buildable', and 'hospital' are floor properties. -- Collect thobs, to remove next. local all_flags = th:getCellFlags(tx, ty) if all_flags.thob ~= 0 then thobdir_positions[tx + ty * 256] = {thob=all_flags.thob, tallWest=all_flags.tallWest} end end -- Remove objects from the area. local objects = self:findObjects(1, 1, thobdir_positions) -- Uses absolute position for the objects for _, obj in ipairs(objects) do self:checkObjectSpace(obj.type, obj.xpos, obj.ypos, obj.direction, true) end end --! Set parcel number at the given coordinates. --!param coords (array or {xpos, ypos} tables) Coordinates to set parcel. --!param parcel_num (int) Parcel number to set. function UIMapEditor:setParcelAtArea(coords, parcel_num) local th = self.ui.app.map.th for _, coord in ipairs(coords) do local tx, ty = coord.xpos, coord.ypos th:setCellFlags(tx, ty, {parcelId = parcel_num}) end end --! Mouse button was released. --!param button (string) Mouse button being released. --!param x (int) Horizontal position of the mouse at the time of the mouse button release. --!param y (int) Vertical position of the mouse at the time of the mouse button release. --!return (bool) Whether to repaint the display. function UIMapEditor:onMouseUp(button, x, y) local map = self.ui.app.map if UIResizable.onMouseUp(self, button, x, y) then return true end if self:hitTest(x, y) then return true end --! Get the cursor mode to jump to after ending the drag mode. --!return (string) New cursor mode. local function newState() if self.cursor.sprite then return "grid" else return "disabled" end end local repaint = false if self.cursor.state == "disabled" then -- Don't care about buttons. elseif self.cursor.state == "left" then if button == "left" then -- Simple drag (left button only). self:drawCursorSpriteAtArea(self:getDrawPoints()) self.cursor.state = newState() self.cursor.is_drag = false repaint = true end elseif self.cursor.state == "delete-left" then if button == "left" then self:deleteWallsAtArea(self:getDrawPoints()) self.cursor.state = "delete" self.cursor.is_drag = false repaint = true end elseif self.cursor.state == "parcel-left" then if button == "left" then self:setParcelAtArea(self:getDrawPoints(), self.cursor.parcel) map:updateDebugOverlay() self.cursor.state = "parcel" self.cursor.is_drag = false repaint = true end elseif self.cursor.state == "camera" then if button == "left" then local dp = self:getDrawPoints() map:setCameraTile(dp[1].xpos, dp[1].ypos, self.cursor.camera) map:updateDebugOverlay() repaint = true end elseif self.cursor.state == "heliport" then if button == "left" then local dp = self:getDrawPoints() map:setHeliportTile(dp[1].xpos, dp[1].ypos, self.cursor.heliport) map:updateDebugOverlay() repaint = true end elseif self.cursor.state == "right" then if button == "right" then if self:copyArea() then self.cursor.state = "paste" self:pageClicked("paste") self.cursor.is_drag = false repaint = true else self.cursor.state = "disabled" -- Copy area was canceled. self.cursor.is_drag = false repaint = true end end elseif self.cursor.state == "paste-left" then if button == "left" then self.cursor.state = "paste" self.cursor.is_drag = false repaint = true self:pasteArea() end elseif self.cursor.state == "both" then if button == "left" then -- Only care about left button. -- left+right drag ends. self:drawCursorSpriteAtArea(self:getDrawPoints()) self.cursor.state = newState() self.cursor.is_drag = false repaint = true end -- "grid", "delete", "parcel", and "paste" already assumed no buttons pushed, -- ignore event. end return repaint end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/menu_list_dialog.lua000066400000000000000000000110561321660673500252110ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! A menu list with a scrollbar. Used by load_game, save_game and custom_game. class "UIMenuList" (UIResizable) ---@type UIMenuList local UIMenuList = _G["UIMenuList"] local col_caption = { red = 174, green = 166, blue = 218, } local col_scrollbar = { red = 164, green = 156, blue = 208, } --[[ Constructs the menu list dialog. !param ui (UI) The active ui. !param mode (string) Either "menu" or "game" depending on which mode the game is in right now. !param title (string) The desired title of the dialog. !param items (table) A list of items to include in the list. Each listing should be a table with keys "name" and "tooltip" with the corresponding values. !param num_rows (integer) The number of rows displayed at a given time. Default is 10. !param extra_beside_list (integer) How much space, if any, the dialog will need to the right of the list, e.g. information space. ]] function UIMenuList:UIMenuList(ui, mode, title, items, num_rows, extra_beside_list) self.col_bg = { red = 154, green = 146, blue = 198, } extra_beside_list = extra_beside_list or 0 self:UIResizable(ui, 280 + extra_beside_list, 270, self.col_bg) self.default_button_sound = "selectx.wav" self.items = items self.num_rows = num_rows and num_rows or 10 self.mode = mode self.modal_class = mode == "menu" and "main menu" or "saveload" self.on_top = mode == "menu" self.esc_closes = true self.resizable = false self:setDefaultPosition(0.5, 0.25) self:addBevelPanel(20, 10, 240, 20, col_caption):setLabel(title).lowered = true local scrollbar_base = self:addBevelPanel(240, 40, 20, self.num_rows * 17, self.col_bg) scrollbar_base.lowered = true self.scrollbar = scrollbar_base:makeScrollbar(col_scrollbar, --[[persistable:menu_list_scrollbar_callback]] function() self:updateButtons() end, 1, math.max(#items, 1), self.num_rows) local function button_clicked(num) return --[[persistable:menu_list_button]] function(window) window:buttonClicked(num) end end self.item_panels = {} self.item_buttons = {} for num = 1, self.num_rows do self.item_panels[num] = self:addBevelPanel(20, 40 + (num - 1) * 17, 210, 17, self.col_bg):setLabel(nil, nil, "center") self.item_buttons[num] = self.item_panels[num]:makeButton(0, 0, 220, 17, nil, button_clicked(num)) end self:addBevelPanel(20, 220, 240, 40, self.col_bg):setLabel(_S.menu_list_window.back) :makeButton(0, 0, 240, 40, nil, self.buttonBack):setTooltip(_S.tooltip.menu_list_window.back) self:updateButtons() end function UIMenuList:getSavedWindowPositionName() if self.mode == "menu" then return "main_menu_group" end return UIResizable.getSavedWindowPositionName(self) end -- Function stub for dialogs to override. This function is called each time a button is clicked. --!param num (integer) Number of the button pressed. function UIMenuList:buttonClicked(num) end -- Updates buttons when scrolling. function UIMenuList:updateButtons() for num = 1, self.num_rows do local panel = self.item_panels[num] local button = self.item_buttons[num] local item = self.items[num + self.scrollbar.value - 1] if item then panel:setLabel(item.name) panel:setTooltip(item.tooltip) button:enable(true) else panel:setLabel() panel:setTooltip() button:enable(false) end end end function UIMenuList:buttonBack() self:close() end function UIMenuList:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIMainMenu(self.ui)) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/menu_list_dialogs/000077500000000000000000000000001321660673500246665ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/menu_list_dialogs/custom_campaign.lua000066400000000000000000000111411321660673500305400ustar00rootroot00000000000000--[[ Copyright (c) 2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local pathsep = package.config:sub(1, 1) --! Custom Campaign Window class "UICustomCampaign" (UIMenuList) ---@type UICustomCampaign local UICustomCampaign = _G["UICustomCampaign"] local col_scrollbar = { red = 164, green = 156, blue = 208, } local details_width = 280 --! Collect the campaign levels at the provided path --!param path (str) File system path to search. --!return (array) The found levels, with some basic information about each level. local function createCampaignList(path) local campaigns = {} for file in lfs.dir(path) do if file:match"%.campaign$" then local campaign_info, err = TheApp:readCampaignFile(file) if not campaign_info then print(err) else if campaign_info.levels and #campaign_info.levels > 0 then campaigns[#campaigns + 1] = { name = campaign_info.name, tooltip = _S.tooltip.custom_campaign_window.choose_campaign, no_levels = #campaign_info.levels, path = file, description = campaign_info.description, } else print("Warning: Loaded campaign that had no levels specified") end end end end return campaigns end function UICustomCampaign:UICustomCampaign(ui) self.label_font = TheApp.gfx:loadFont("QData", "Font01V") local local_path = debug.getinfo(1, "S").source:sub(2, -61) local dir = "Campaigns" .. pathsep local path = local_path .. dir local campaigns = createCampaignList(path) self:UIMenuList(ui, "menu", _S.custom_campaign_window.caption, campaigns, 10, details_width + 40) -- Create a toolbar ready to be used if the description for a level is -- too long to fit local scrollbar_base = self:addBevelPanel(560, 40, 20, self.num_rows*17, self.col_bg) scrollbar_base.lowered = true self.details_scrollbar = scrollbar_base:makeScrollbar(col_scrollbar, --[[persistable:campaign_details_scrollbar_callback]] function() self:updateDescriptionOffset() end, 1, 1, self.num_rows) self.description_offset = 0 -- Finally the load button self:addBevelPanel(420, 220, 160, 40, self.col_bg) :setLabel(_S.custom_campaign_window.start_selected_campaign) :makeButton(0, 0, 160, 40, 11, self.buttonStartCampaign) :setTooltip(_S.tooltip.custom_campaign_window.start_selected_campaign) end -- Overrides the function in the UIMenuList, choosing what should happen when the player -- clicks a choice in the list. function UICustomCampaign:buttonClicked(num) local item = self.items[num + self.scrollbar.value - 1] self.chosen_item = item if item.description then local _, _, rows = self.label_font:sizeOf(item.description, details_width) self.details_scrollbar:setRange(1, rows, 13, 1) else self.details_scrollbar:setRange(1, 13, 13, 1) end self.description_offset = 0 end function UICustomCampaign:buttonStartCampaign() if self.chosen_item then TheApp:loadCampaign(self.chosen_item.path) end end function UICustomCampaign:draw(canvas, x, y) UIMenuList.draw(self, canvas, x, y) x, y = self.x + x, self.y + y if self.chosen_item and self.chosen_item.name then self.label_font:drawWrapped(canvas, self.chosen_item.name, x + 270, y + 10, details_width) self.label_font:drawWrapped(canvas, "(levels: " .. self.chosen_item.no_levels .. ")", x+ 270, y + 22, details_width) end if self.chosen_item and self.chosen_item.description then self.label_font:drawWrapped(canvas, self.chosen_item.description, x + 270, y + 40, details_width, nil, 13, self.description_offset) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/menu_list_dialogs/custom_game.lua000066400000000000000000000135031321660673500276760ustar00rootroot00000000000000--[[ Copyright (c) 2010-2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Custom Game Window class "UICustomGame" (UIMenuList) ---@type UICustomGame local UICustomGame = _G["UICustomGame"] local col_scrollbar = { red = 164, green = 156, blue = 208, } local details_width = 280 --! Compile metainfo for all of the levels in the given path. --!param path (string) The path that should contain level files. --!param items (table) Table to insert the level metadata into. local findLevelsInDir = function(path, items) for file in lfs.dir(path) do if file:match"%.level$" then local level_info = TheApp:readLevelFile(file) if level_info.name and level_info.map_file then items[#items + 1] = { name = level_info.name, tooltip = _S.tooltip.custom_game_window.choose_game, map_file = level_info.map_file, level_file = file, intro = level_info.briefing, deprecated_variable_used = level_info.deprecated_variable_used, } end end end end function UICustomGame:UICustomGame(ui) self.label_font = TheApp.gfx:loadFont("QData", "Font01V") -- Supply the required list of items to UIMenuList -- Create the actual list local items = {} findLevelsInDir(TheApp.level_dir, items) findLevelsInDir(TheApp.user_level_dir, items) self:UIMenuList(ui, "menu", _S.custom_game_window.caption, items, 10, details_width + 40) -- Create a toolbar ready to be used if the description for a level is -- too long to fit local scrollbar_base = self:addBevelPanel(560, 40, 20, self.num_rows*17, self.col_bg) scrollbar_base.lowered = true self.details_scrollbar = scrollbar_base:makeScrollbar(col_scrollbar, --[[persistable:menu_list_details_scrollbar_callback]] function() self:updateDescriptionOffset() end, 1, 1, self.num_rows) self.description_offset = 0 -- Now add the free build button beside the list. if not pcall(function() local palette = ui.app.gfx:loadPalette("QData", "DrugN01V.pal") self.panel_sprites = ui.app.gfx:loadSpriteTable("QData", "DrugN02V", true, palette) self.border_sprites = ui.app.gfx:loadSpriteTable("Bitmap", "aux_ui", true) end) then self:close() return end self:addBevelPanel(280, 230, 140, 20, self.col_bg):setLabel(_S.custom_game_window.free_build).lowered = true local button = self:addPanel(12, 430, 225):makeToggleButton(0, 0, 29, 29, 11, self.buttonFreebuild) :setTooltip(_S.tooltip.custom_game_window.free_build) if self.ui.app.config.free_build_mode then button:toggle() end -- Finally the load button self:addBevelPanel(480, 220, 100, 40, self.col_bg) :setLabel(_S.custom_game_window.load_selected_level) :makeButton(0, 0, 100, 40, 11, self.buttonLoadLevel) :setTooltip(_S.tooltip.custom_game_window.load_selected_level) end function UICustomGame:updateDescriptionOffset() self.description_offset = self.details_scrollbar.value - 1 end -- Overrides the function in the UIMenuList, choosing what should happen when the player -- clicks a choice in the list. function UICustomGame:buttonClicked(num) local item = self.items[num + self.scrollbar.value - 1] self.chosen_index = num self.chosen_level_name = item.name self.chosen_level_description = item.intro if self.chosen_level_description then local _, y, rows = self.label_font:sizeOf(self.chosen_level_description, details_width) local row_height = y / rows self.max_rows_shown = math.floor(self.num_rows*17 / row_height) self.details_scrollbar:setRange(1, rows, math.min(rows, self.max_rows_shown), 1) else self.details_scrollbar:setRange(1, 1, 1, 1) end self.description_offset = 0 if item.deprecated_variable_used then self.ui:addWindow(UIInformation(self.ui, {_S.warnings.levelfile_variable_is_deprecated:format(item.name)})) end end function UICustomGame:buttonLoadLevel() if self.chosen_index then -- First make sure the map file exists. local item = self.items[self.chosen_index + self.scrollbar.value - 1] local app = self.ui.app local _, errors = app:readMapDataFile(item.map_file) if errors then self.ui:addWindow(UIInformation(self.ui, {errors})) return end app:loadLevel(item.level_file, nil, self.chosen_level_name, item.map_file, self.chosen_level_description) end end function UICustomGame:buttonFreebuild(checked) self.ui.app.config.free_build_mode = checked end function UICustomGame:draw(canvas, x, y) UIMenuList.draw(self, canvas, x, y) x, y = self.x + x, self.y + y if self.chosen_level_name then self.label_font:drawWrapped(canvas, self.chosen_level_name, x + 270, y + 10, details_width) end if self.chosen_level_description then self.label_font:drawWrapped(canvas, self.chosen_level_description, x + 270, y + 40, details_width, nil, self.max_rows_shown, self.description_offset) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/menu_list_dialogs/make_debug_patient.lua000066400000000000000000000042201321660673500311760ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UIMakeDebugPatient" (UIMenuList) ---@type UIMakeDebugPatient local UIMakeDebugPatient = _G["UIMakeDebugPatient"] function UIMakeDebugPatient:UIMakeDebugPatient(ui) local items = {} for _, disease in ipairs(ui.app.diseases) do if disease.visuals_id or disease.non_visuals_id == 1 then items[#items + 1] = { name = disease.name, disease = disease, tooltop = disease.name, } end end self:UIMenuList(ui, "game", _S.debug_patient_window.caption, items) end function UIMakeDebugPatient:buttonClicked(num) local item = self.items[num + self.scrollbar.value - 1] local patient = self.ui.app.world:newEntity("Patient", 2) patient.is_debug = true table.insert(self.ui.hospital.debug_patients, patient) patient:setDisease(item.disease) patient.diagnosed = true local x, y = self.ui:ScreenToWorld(self.x + self.width / 2, self.y + self.height + 100) patient:setTile(math.floor(x), math.floor(y)) patient:setMood("idea1", "activate") -- temporary, to make debug patients distinguishable from normal ones patient:setHospital(self.ui.hospital) end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/new_game.lua000066400000000000000000000164111321660673500234550ustar00rootroot00000000000000--[[ Copyright (c) 2010 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Class for the difficulty choice window. class "UINewGame" (UIResizable) ---@type UINewGame local UINewGame = _G["UINewGame"] local col_bg = { red = 154, green = 146, blue = 198, } local col_caption = { red = 174, green = 166, blue = 218, } local col_textbox = { red = 0, green = 0, blue = 0, } local col_highlight = { red = 174, green = 166, blue = 218, } local col_shadow = { red = 134, green = 126, blue = 178, } function UINewGame:UINewGame(ui) self:UIResizable(ui, 320, 220, col_bg) local app = ui.app self.esc_closes = true self.resizable = false self.modal_class = "main menu" self.on_top = true self:setDefaultPosition(0.5, 0.25) if TheApp.using_demo_files then -- We're using the demo version of TH. Load directly and activate the tutorial. -- Those who use the demo files probably want that anyway. self.start_tutorial = true self:startGame("full") self:close() return end self.border_sprites = app.gfx:loadSpriteTable("Bitmap", "aux_ui", true) self.start_tutorial = false self.difficulty = 1 local avail_diff = { {text = _S.new_game_window.medium, tooltip = _S.tooltip.new_game_window.medium, param = "full"}, } if TheApp.fs:getFilePath("Levels", "Easy01.SAM") then table.insert(avail_diff, 1, {text = _S.new_game_window.easy, tooltip = _S.tooltip.new_game_window.easy, param = "easy"}) self.difficulty = 2 end if TheApp.fs:getFilePath("Levels", "Hard01.SAM") then avail_diff[#avail_diff + 1] = {text = _S.new_game_window.hard, tooltip = _S.tooltip.new_game_window.hard, param = "hard"} end self.available_difficulties = avail_diff self.default_button_sound = "selectx.wav" -- Window parts definition -- Title self:addBevelPanel(80, 10, 160, 20, col_caption):setLabel(_S.new_game_window.caption).lowered = true -- Player Name self.player_name = app.config.player_name or os.getenv("USER") or os.getenv("USERNAME") or "PLAYER" self:addBevelPanel(20, 45, 140, 30, col_shadow, col_bg, col_bg) :setLabel(_S.new_game_window.player_name).lowered = true self.name_textbox = self:addBevelPanel(165, 45, 140, 30, col_textbox, col_highlight, col_shadow) :setTooltip(_S.tooltip.new_game_window.player_name):setAutoClip(true) :makeTextbox( --[[persistable:new_game_confirm_name]]function() local name = self.name_textbox.text if not name:find("%S") then self.name_textbox:setText(self.player_name) else self.player_name = name self:saveToConfig() end end, --[[persistable:new_game_abort_name]]function() self.name_textbox:setText(self.player_name) end) :allowedInput({"alpha", "numbers", "misc"}):characterLimit(15):setText(self.player_name) -- Tutorial self:addBevelPanel(20, 80, 140, 30, col_shadow, col_bg, col_bg) :setLabel(_S.new_game_window.tutorial).lowered = true self:addBevelPanel(165, 80, 140, 30, col_bg):setLabel(_S.new_game_window.option_off) :makeToggleButton(0, 0, 135, 30, nil, self.buttonTutorial):setTooltip(_S.tooltip.new_game_window.tutorial) -- Difficulty self:addBevelPanel(20, 115, 140, 30, col_shadow, col_bg, col_bg) :setLabel(_S.new_game_window.difficulty).lowered = true self:addBevelPanel(165, 115, 140, 30, col_bg):setLabel(self.available_difficulties[self.difficulty].text) :makeToggleButton(0, 0, 135, 30, nil, self.dropdownDifficulty):setTooltip(_S.tooltip.new_game_window.difficulty) -- Start and Cancel self:addBevelPanel(20, 165, 140, 40, col_bg):setLabel(_S.new_game_window.start):makeButton(0, 0, 135, 40, nil, self.buttonStart):setTooltip(_S.tooltip.new_game_window.start) self:addBevelPanel(165, 165, 140, 40, col_bg):setLabel(_S.new_game_window.cancel):makeButton(0, 0, 135, 40, nil, self.buttonCancel):setTooltip(_S.tooltip.new_game_window.cancel) end function UINewGame:saveToConfig() self.ui.app.config.player_name = self.player_name self.ui.app:saveConfig() end function UINewGame:onMouseDown(button, x, y) local repaint = UIResizable.onMouseDown(self, button, x, y) if button == "left" and not repaint and not (x >= 0 and y >= 0 and x < self.width and y < self.height) and self:hitTest(x, y) then return self:beginDrag(x, y) end return repaint end function UINewGame:hitTest(x, y) if x >= 0 and y >= 0 and x < self.width and y < self.height then return true end local sprites = self.border_sprites if not sprites then return false end if x < -9 or y < -9 or x >= self.width + 9 or y >= self.height + 9 then return false end if (0 <= x and x < self.width) or (0 <= y and y < self.height) then return true end return sprites.hitTest(sprites, 10, x + 9, y + 9) or sprites.hitTest(sprites, 12, x - 160, y + 9) or sprites.hitTest(sprites, 15, x + 9, y - 240) or sprites.hitTest(sprites, 17, x - 160, y - 240) end function UINewGame:buttonTutorial(checked, button) self.start_tutorial = checked button.panel_for_sprite:setLabel(checked and _S.new_game_window.option_on or _S.new_game_window.option_off) end function UINewGame:dropdownDifficulty(activate, button) if activate and #self.available_difficulties > 1 then self.difficulty_dropdown = UIDropdown(self.ui, self, button, self.available_difficulties, self.selectDifficulty) self:addWindow(self.difficulty_dropdown) else if self.difficulty_dropdown then self.difficulty_dropdown:close() self.difficulty_dropdown = nil end end end function UINewGame:selectDifficulty(number) self.difficulty = number end function UINewGame:buttonStart() self.name_textbox:confirm() print("starting game with difficulty " .. self.available_difficulties[self.difficulty].param) self:startGame(self.available_difficulties[self.difficulty].param) end function UINewGame:startGame(difficulty) self.ui.app:loadLevel(1, difficulty) -- Initiate campaign progression. The UI above may now have changed. if TheApp.world and not TheApp.using_demo_files then TheApp.world.campaign = "TH.campaign" end if self.start_tutorial then TheApp.ui.start_tutorial = true TheApp.ui:startTutorial() end end function UINewGame:buttonCancel() self.name_textbox:confirm() self:close() end function UINewGame:close() UIResizable.close(self) self.ui:addWindow(UIMainMenu(self.ui)) end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/options.lua000066400000000000000000000312201321660673500233610ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Options window used in the main menu and ingame. class "UIOptions" (UIResizable) ---@type UIOptions local UIOptions = _G["UIOptions"] local col_bg = { red = 154, green = 146, blue = 198, } local col_textbox = { red = 0, green = 0, blue = 0, } local col_highlight = { red = 174, green = 166, blue = 218, } local col_shadow = { red = 134, green = 126, blue = 178, } local col_caption = { red = 174, green = 166, blue = 218, } function UIOptions:UIOptions(ui, mode) self:UIResizable(ui, 320, 240, col_bg) local app = ui.app self.mode = mode self.modal_class = mode == "menu" and "main menu" or "options" self.on_top = mode == "menu" self.esc_closes = true self.resizable = false self:setDefaultPosition(0.5, 0.25) self.default_button_sound = "selectx.wav" self.app = app self:checkForAvailableLanguages() -- Set up list of resolutions self.available_resolutions = { {text = "640x480 (4:3)", width = 640, height = 480}, {text = "800x600 (4:3)", width = 800, height = 600}, {text = "1024x768 (4:3)", width = 1024, height = 768}, {text = "1280x960 (4:3)", width = 1280, height = 960}, {text = "1600x1200 (4:3)", width = 1600, height = 1200}, {text = "1280x1024 (5:4)", width = 1280, height = 1024}, {text = "1280x720 (16:9)", width = 1280, height = 720}, {text = "1366x768 (16:9)", width = 1366, height = 768}, {text = "1600x900 (16:9)", width = 1600, height = 900}, {text = "1920x1080 (16:9)", width = 1920, height = 1080}, {text = "1280x800 (16:10)", width = 1280, height = 800}, {text = "1440x900 (16:10)", width = 1440, height = 900}, {text = "1680x1050 (16:10)", width = 1680, height = 1050}, {text = "1920x1200 (16:10)", width = 1920, height = 1200}, {text = _S.options_window.custom_resolution, custom = true}, } -- Window parts definition -- Title self:addBevelPanel(80, 10, 165, 20, col_caption):setLabel(_S.options_window.caption) .lowered = true -- Fullscreen self:addBevelPanel(20, 45, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.options_window.fullscreen):setTooltip(_S.tooltip.options_window.fullscreen).lowered = true self.fullscreen_panel = self:addBevelPanel(165, 45, 135, 20, col_bg):setLabel(app.fullscreen and _S.options_window.option_on or _S.options_window.option_off) self.fullscreen_button = self.fullscreen_panel:makeToggleButton(0, 0, 140, 20, nil, self.buttonFullscreen) :setToggleState(app.fullscreen):setTooltip(_S.tooltip.options_window.fullscreen_button) -- Screen resolution self:addBevelPanel(20, 70, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.options_window.resolution):setTooltip(_S.tooltip.options_window.resolution).lowered = true self.resolution_panel = self:addBevelPanel(165, 70, 135, 20, col_bg):setLabel(app.config.width .. "x" .. app.config.height) self.resolution_button = self.resolution_panel:makeToggleButton(0, 0, 135, 20, nil, self.dropdownResolution):setTooltip(_S.tooltip.options_window.select_resolution) -- Language -- Get language name in the language to normalize display. -- If it doesn't exist, display the current config option. local lang = self.app.strings:getLanguageNames(app.config.language) if lang then lang = lang[1] else lang = app.config.language end self:addBevelPanel(20, 95, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.options_window.language):setTooltip(_S.tooltip.options_window.language).lowered = true self.language_panel = self:addBevelPanel(165, 95, 135, 20, col_bg):setLabel(lang) self.language_button = self.language_panel:makeToggleButton(0, 0, 135, 20, nil, self.dropdownLanguage):setTooltip(_S.tooltip.options_window.select_language) -- add the Audio global switch. self:addBevelPanel(20, 120, 135, 20, col_shadow, col_bg, col_bg) :setLabel(_S.options_window.audio):setTooltip(_S.tooltip.options_window.audio_button).lowered = true self.volume_panel = self:addBevelPanel(165, 120, 135, 20, col_bg):setLabel(app.config.audio and _S.customise_window.option_on or _S.customise_window.option_off) self.volume_button = self.volume_panel:makeToggleButton(0, 0, 135, 20, nil, self.buttonAudioGlobal) :setToggleState(app.config.audio):setTooltip(_S.tooltip.options_window.audio_toggle) -- "Customise" button self:addBevelPanel(20, 150, 135, 30, col_bg):setLabel(_S.options_window.customise) :makeButton(0, 0, 135, 30, nil, self.buttonCustomise):setTooltip(_S.tooltip.options_window.customise_button) -- "Folders" button self:addBevelPanel(165, 150, 135, 30, col_bg):setLabel(_S.options_window.folder) :makeButton(0, 0, 135, 30, nil, self.buttonFolder):setTooltip(_S.tooltip.options_window.folder_button) -- "Back" button self:addBevelPanel(20, 190, 280, 40, col_bg):setLabel(_S.options_window.back) :makeButton(0, 0, 280, 40, nil, self.buttonBack):setTooltip(_S.tooltip.options_window.back) end -- Stubs for backward compatibility local --[[persistable:options_window_language_button]] function language_button() end local --[[persistable:options_width_textbox_reset]] function width_textbox_reset() end local --[[persistable:options_height_textbox_reset]] function height_textbox_reset() end function UIOptions:checkForAvailableLanguages() local app = self.app -- Set up list of available languages local langs = {} for _, lang in ipairs(app.strings.languages) do local font = app.strings:getFont(lang) if app.gfx:hasLanguageFont(font) then font = font and app.gfx:loadLanguageFont(font, app.gfx:loadSpriteTable("QData", "Font01V")) langs[#langs + 1] = {text = lang, font = font, tooltip = _S.tooltip.options_window.language_dropdown_item:format(lang)} end end self.available_languages = langs end function UIOptions:dropdownLanguage(activate) if activate then self:dropdownResolution(false) self.language_dropdown = UIDropdown(self.ui, self, self.language_button, self.available_languages, self.selectLanguage) self:addWindow(self.language_dropdown) else self.language_button:setToggleState(false) if self.language_dropdown then self.language_dropdown:close() self.language_dropdown = nil end end end function UIOptions:selectLanguage(number) local app = self.ui.app app.config.language = (self.available_languages[number].text) app:initLanguage() app:saveConfig() end function UIOptions:dropdownResolution(activate) if activate then self:dropdownLanguage(false) self.resolution_dropdown = UIDropdown(self.ui, self, self.resolution_button, self.available_resolutions, self.selectResolution) self:addWindow(self.resolution_dropdown) else self.resolution_button:setToggleState(false) if self.resolution_dropdown then self.resolution_dropdown:close() self.resolution_dropdown = nil end end end function UIOptions:selectResolution(number) local res = self.available_resolutions[number] local callback = --[[persistable:options_resolution_callback]] function(width, height) if not self.ui:changeResolution(width, height) then local err = {_S.errors.unavailable_screen_size} self.ui:addWindow(UIInformation(self.ui, err)) end self.resolution_panel:setLabel(self.ui.app.config.width .. "x" .. self.ui.app.config.height) end if res.custom then self.resolution_panel:setLabel(self.ui.app.config.width .. "x" .. self.ui.app.config.height) self.ui:addWindow(UIResolution(self.ui, callback)) else callback(res.width, res.height) end end function UIOptions:buttonFullscreen(checked) if not self.ui:toggleFullscreen() then local err = {_S.errors.unavailable_screen_size} self.ui:addWindow(UIInformation(self.ui, err)) self.fullscreen_button:toggle() end self.fullscreen_panel:setLabel(self.ui.app.fullscreen and _S.options_window.option_on or _S.options_window.option_off) end function UIOptions:buttonCustomise() local window = UICustomise(self.ui, "menu") self.ui:addWindow(window) end function UIOptions:buttonFolder() local window = UIFolder(self.ui, "menu") self.ui:addWindow(window) end function UIOptions:buttonBrowseForTHInstall() local function callback(path) local app = TheApp app.config.theme_hospital_install = path app:saveConfig() debug.getregistry()._RESTART = true app.running = false end local browser = UIDirectoryBrowser(self.ui, self.mode, _S.options_window.new_th_directory, "InstallDirTreeNode", callback) self.ui:addWindow(browser) end function UIOptions:buttonAudioGlobal(checked) local app = self.ui.app app.config.audio = not app.config.audio app:saveConfig() self.volume_button:setLabel(app.config.audio and _S.customise_window.option_on or _S.customise_window.option_off) -- Reinit audio app.audio:stopBackgroundTrack() app.audio.has_bg_music = false app.audio.not_loaded = not app.config.audio app.audio.speech_file_name = nil app.audio:init() app:initLanguage() end function UIOptions:buttonBack() self:close() end function UIOptions:close() UIResizable.close(self) if self.mode == "menu" then self.ui:addWindow(UIMainMenu(self.ui)) end end --! A custom resolution selection window class "UIResolution" (UIResizable) ---@type UIResolution local UIResolution = _G["UIResolution"] function UIResolution:UIResolution(ui, callback) self:UIResizable(ui, 200, 140, col_bg) local app = ui.app self.modal_class = "resolution" self.on_top = true self.esc_closes = true self.resizable = false self:setDefaultPosition(0.5, 0.5) self.default_button_sound = "selectx.wav" self.callback = callback -- Window parts definition -- Title self:addBevelPanel(20, 10, 160, 20, col_caption):setLabel(_S.options_window.resolution) .lowered = true -- Textboxes self:addBevelPanel(20, 40, 80, 20, col_shadow, col_bg, col_bg):setLabel(_S.options_window.width) self.width_textbox = self:addBevelPanel(100, 40, 80, 20, col_textbox, col_highlight, col_shadow) :setTooltip(_S.tooltip.options_window.width) :makeTextbox():allowedInput("numbers"):characterLimit(4):setText(tostring(app.config.width)) self:addBevelPanel(20, 60, 80, 20, col_shadow, col_bg, col_bg):setLabel(_S.options_window.height) self.height_textbox = self:addBevelPanel(100, 60, 80, 20, col_textbox, col_highlight, col_shadow) :setTooltip(_S.tooltip.options_window.height) :makeTextbox():allowedInput("numbers"):characterLimit(4):setText(tostring(app.config.height)) -- Apply and cancel self:addBevelPanel(20, 90, 80, 40, col_bg):setLabel(_S.options_window.apply) :makeButton(0, 0, 80, 40, nil, self.ok):setTooltip(_S.tooltip.options_window.apply) self:addBevelPanel(100, 90, 80, 40, col_bg):setLabel(_S.options_window.cancel) :makeButton(0, 0, 80, 40, nil, self.cancel):setTooltip(_S.tooltip.options_window.cancel) end function UIResolution:cancel() self:close(false) end function UIResolution:ok() local width, height = tonumber(self.width_textbox.text) or 0, tonumber(self.height_textbox.text) or 0 if width < 640 or height < 480 then local err = {_S.errors.minimum_screen_size} self.ui:addWindow(UIInformation(self.ui, err)) elseif width > 3000 or height > 2000 then self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.maximum_screen_size, --[[persistable:maximum_screen_size_confirm_dialog]]function() self:close(true) self:close(false) end )) else self:close(true) end end --! Closes the resolution dialog --!param ok (boolean or nil) whether the resolution entry was confirmed (true) or aborted (false) function UIResolution:close(ok) UIResizable.close(self) if ok and self.callback then self.callback(tonumber(self.width_textbox.text) or 0, tonumber(self.height_textbox.text) or 0) end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/tip_of_the_day.lua000066400000000000000000000056041321660673500246520ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Tip of the Day Window class "UITipOfTheDay" (UIResizable) ---@type UITipOfTheDay local UITipOfTheDay = _G["UITipOfTheDay"] local col_bg = { red = math.random(20, 200), green = math.random(20, 200), blue = math.random(20, 200), } function UITipOfTheDay:UITipOfTheDay(ui) self:UIResizable(ui, 380, 110, col_bg) local app = ui.app self.ui = ui self.resizable = false self:setDefaultPosition(-20, -20) self.white_font = app.gfx:loadFont("QData", "Font01V") self.num_tips = #_S.totd_window.tips if self.num_tips == 0 then -- NB: #_S.totd_window.tips == 0, which implies something went wrong with -- the string localisation code, hence don't try to localise the following: print("Warning: No tips for tip-of-the-day window") self:close() return end self.tip_num = math.random(1, self.num_tips) self:addBevelPanel(10, self.height - 30, self.width / 2 - 20, 20, col_bg):setLabel(_S.totd_window.previous) :makeButton(0, 0, self.width / 2 - 20, 20, nil, self.buttonPrev):setTooltip(_S.tooltip.totd_window.previous) self:addBevelPanel(self.width / 2 + 10, self.height - 30, self.width / 2 - 20, 20, col_bg):setLabel(_S.totd_window.next) :makeButton(0, 0, self.width / 2 - 20, 20, nil, self.buttonNext):setTooltip(_S.tooltip.totd_window.next) end function UITipOfTheDay:draw(canvas, x, y) -- Draw window components UIResizable.draw(self, canvas, x, y) -- Draw tip x, y = self.x + x, self.y + y local text = _S.totd_window.tips[self.tip_num] self.white_font:drawWrapped(canvas, text, x + 10, y + 10, self.width - 20) end function UITipOfTheDay:buttonPrev() self.tip_num = self.tip_num - 1 if self.tip_num == 0 then self.tip_num = self.num_tips end end function UITipOfTheDay:buttonNext() self.tip_num = self.tip_num + 1 if self.tip_num > self.num_tips then self.tip_num = 1 end end CorsixTH-0.61/CorsixTH/Lua/dialogs/resizables/update.lua000066400000000000000000000070561321660673500231620ustar00rootroot00000000000000--[[ Copyright (c) 2013 Alan Woolley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Options window used in the main menu and ingame. class "UIUpdate" (UIResizable) ---@type UIUpdate local UIUpdate = _G["UIUpdate"] local col_bg = { red = 154, green = 146, blue = 198, } local col_old_version = { red = 255, green = 0, blue = 0, } local col_new_version = { red = 0, green = 255, blue = 0, } local col_shadow = { red = 134, green = 126, blue = 178, } local col_caption = { red = 174, green = 166, blue = 218, } function UIUpdate:UIUpdate(ui, this_version, new_version, brief_description, download_url) self:UIResizable(ui, 320, 320, col_bg) local app = ui.app self.modal_class = "main" self.on_top = true self.esc_closes = true self.resizable = false self:setDefaultPosition(0.5, 0.25) self.default_button_sound = "selectx.wav" self.description_text = brief_description self.app = app self.white_font = app.gfx:loadFont("QData", "Font01V") self.download_url = download_url local pathsep = package.config:sub(1, 1) if pathsep == "\\" then self.os_is_windows = true else self.os_is_windows = false end self:addBevelPanel(20, 50, 140, 20, col_shadow, col_bg, col_bg) :setLabel(_S.update_window.current_version).lowered = true self:addBevelPanel(20, 70, 140, 20, col_shadow, col_bg, col_bg) :setLabel(_S.update_window.new_version).lowered = true self:addBevelPanel (160,50,140,20, col_old_version, col_bg, col_bg):setLabel(this_version) self:addBevelPanel (160,70,140,20, col_new_version, col_bg, col_bg):setLabel(new_version) -- Title self:addBevelPanel(80, 10, 160, 20, col_caption):setLabel(_S.update_window.caption) .lowered = true -- Download button self:addBevelPanel(20, 225, 280, 40, col_bg):setLabel(_S.update_window.download) :makeButton(0, 0, 280, 40, nil, self.buttonDownload):setTooltip(_S.tooltip.update_window.download) -- Ignore button self:addBevelPanel(20, 270, 280, 40, col_bg):setLabel(_S.update_window.ignore) :makeButton(0, 0, 280, 40, nil, self.buttonIgnore):setTooltip(_S.tooltip.update_window.ignore) end function UIUpdate:draw(canvas, x, y) -- Draw window components UIResizable.draw(self, canvas, x, y) -- Draw description x, y = self.x + x, self.y + y self.white_font:drawWrapped(canvas, self.description_text, x + 20, y + 100, self.width - 20) end function UIUpdate:buttonDownload() if self.os_is_windows then os.execute("start " .. self.download_url) else os.execute("xdg-open " .. self.download_url) end end function UIUpdate:buttonIgnore() self:close() end CorsixTH-0.61/CorsixTH/Lua/dialogs/staff_dialog.lua000066400000000000000000000347461321660673500221650ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- Test for hit within the view circle local --[[persistable:staff_dialog_is_in_view_circle]] function is_in_view_circle(x, y, is_handyman) local circle_center_y = is_handyman and 276 or 248 return (x - 55)^2 + (y - circle_center_y)^2 < 39^2 end --! Individual staff information dialog class "UIStaff" (Window) ---@type UIStaff local UIStaff = _G["UIStaff"] --! Callback function for handyman to change his parcel. function UIStaff:changeParcel() local index = 0 for i, v in ipairs(self.staff.hospital.ownedPlots) do if v == self.staff.parcelNr then index = i break end end if not self.staff.hospital.ownedPlots[index + 1] then self.staff.parcelNr = 0 else self.staff.parcelNr = self.staff.hospital.ownedPlots[index + 1] end end function UIStaff:getParcelText() if not self.staff.parcelNr then self.staff.parcelNr = 0 end if self.staff.parcelNr == 0 then return _S.handyman_window.all_parcels --"All parcels" else return _S.handyman_window.parcel .. " " .. self.staff.parcelNr end end function UIStaff:UIStaff(ui, staff) self:Window() local app = ui.app local profile = staff.profile self.esc_closes = true self.staff = staff self.ui = ui self.modal_class = "humanoid_info" self.width = 220 if profile.humanoid_class == "Handyman" then self.height = 332 else self.height = 304 end self:setDefaultPosition(-20, 30) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req01V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.face_parts = app.gfx:loadRaw("Face01V", 65, 1350, nil, "Data", "MPalette.dat") self:addPanel(297, 15, 0) -- Dialog header for y = 51, 121, 10 do self:addPanel(298, 15, y) -- Dialog background end self:addPanel(299, 104, 50) -- Happiness self:addPanel(300, 105, 82) -- Tiredness self:addPanel(301, 15, 114) -- Skills/Abilities self:addColourPanel(35, 51, 71, 81, 208, 252, 252):makeButton(0, 0, 71, 81, nil, self.openStaffManagement):setTooltip(_S.tooltip.staff_window.face) -- Portrait background if profile.humanoid_class == "Handyman" then self:addPanel(311, 15, 131) -- Tasks top for y = 149, 184, 5 do self:addPanel(312, 15, y) -- Tasks buttons end self:addPanel(302, 5, 205) -- View circle top/Wage self:addPanel(313, 15, 189) -- Tasks bottom self:addPanel(314, 37, 145):makeRepeatButton(0, 0, 49, 48, 315, self.doMoreCleaning):setTooltip(_S.tooltip.handyman_window.prio_litter) self:addPanel(316, 92, 145):makeRepeatButton(0, 0, 49, 48, 317, self.doMoreWatering):setTooltip(_S.tooltip.handyman_window.prio_plants) self:addPanel(318, 148, 145):makeRepeatButton(0, 0, 49, 48, 319, self.doMoreRepairing):setTooltip(_S.tooltip.handyman_window.prio_machines) self:addPanel(240, 21, 210):makeButton(0, 0, 73, 30, 240, self.changeParcel):setTooltip(_S.tooltip.handyman_window.parcel_select) self:addPanel(303, 0, 253) -- View circle midpiece self:addPanel(304, 6, 302) -- View circle bottom self:addPanel(307, 106, 253):makeButton(0, 0, 50, 50, 308, self.fireStaff):setTooltip(_S.tooltip.staff_window.sack) self:addPanel(309, 164, 253):makeButton(0, 0, 37, 50, 310, self.placeStaff):setTooltip(_S.tooltip.staff_window.pick_up) else self:addPanel(302, 5, 178) -- View circle top/Wage self:addPanel(303, 0, 226) -- View circle midpiece self:addPanel(304, 6, 274) -- View circle bottom if profile.humanoid_class ~= "Doctor" then self:addColourPanel(32, 141, 171, 39, 85, 202, 219) -- Hides Skills end self:addPanel(307, 106, 226):makeButton(0, 0, 50, 50, 308, self.fireStaff):setTooltip(_S.tooltip.staff_window.sack) self:addPanel(309, 164, 226):makeButton(0, 0, 37, 50, 310, self.placeStaff):setTooltip(_S.tooltip.staff_window.pick_up) end self:addPanel(305, 178, 18):makeButton(0, 0, 24, 24, 306, self.close):setTooltip(_S.tooltip.staff_window.close) self:makeTooltip(_S.tooltip.staff_window.name, 33, 19, 172, 42) self:makeTooltip(_S.tooltip.staff_window.happiness, 113, 49, 204, 74) self:makeTooltip(_S.tooltip.staff_window.tiredness, 113, 74, 204, 109) self:makeTooltip(_S.tooltip.staff_window.ability, 113, 109, 204, 134) if profile.humanoid_class == "Doctor" then self:makeTooltip(_S.tooltip.staff_window.doctor_seniority, 30, 141, 111, 182) self:makeTooltip(_S.tooltip.staff_window.skills, 111, 146, 141, 179) local skill_to_string = { is_surgeon = _S.tooltip.staff_window.surgeon, is_psychiatrist = _S.tooltip.staff_window.psychiatrist, is_researcher = _S.tooltip.staff_window.researcher, } local --[[persistable:staff_dialog_skill_tooltip_template]] function skill_tooltip(skill) return --[[persistable:staff_dialog_skill_tooltip]] function() if profile[skill] >= 1.0 then return skill_to_string[skill] end end end self:makeDynamicTooltip(skill_tooltip("is_surgeon"), 143, 148, 155, 177) self:makeDynamicTooltip(skill_tooltip("is_psychiatrist"), 155, 148, 177, 177) self:makeDynamicTooltip(skill_tooltip("is_researcher"), 177, 148, 202, 177) end -- window for handyman is slightly different local offset = profile.humanoid_class == "Handyman" and 27 or 0 self:makeTooltip(_S.tooltip.staff_window.salary, 90, 191 + offset, 204, 214 + offset) -- Non-rectangular tooltip has to be realized with dynamic tooltip at the moment self:makeDynamicTooltip(--[[persistable:staff_dialog_center_tooltip]]function(x, y) if is_in_view_circle(x, y, profile.humanoid_class == "Handyman") then return _S.tooltip.staff_window.center_view end end, 17, 211 + offset, 92, 286 + offset) end function UIStaff:getStaffPosition(dx, dy) local staff = self.staff local x, y = self.ui.app.map:WorldToScreen(staff.tile_x, staff.tile_y) local px, py = staff.th:getMarker() return x + px - (dx or 0), y + py - (dy or 0) end function UIStaff:draw(canvas, x_, y_) local x, y = self.x + x_, self.y + y_ local px, py = self:getStaffPosition(37, 61) self.ui.app.map:draw(canvas, px, py, 75, 75, x + 17, y + self.height - 93) Window.draw(self, canvas, x_, y_) local profile = self.staff.profile local font = self.white_font font:draw(canvas, profile.name, x + 42, y + 28) -- Name if profile.humanoid_class == "Handyman" then font:draw(canvas, "$" .. profile.wage, x + 135, y + 226) -- Wage font:draw(canvas, self:getParcelText(), x + 35, y + 215, 50, 0) -- The concentration areas if self.staff.attributes["cleaning"] then -- Backwards compatibility local cleaning_width = math.floor(self.staff.attributes["cleaning"] * 40 + 0.5) local watering_width = math.floor(self.staff.attributes["watering"] * 40 + 0.5) local repairing_width = math.floor(self.staff.attributes["repairing"] * 40 + 0.5) if cleaning_width ~= 0 then for dx = 0, cleaning_width - 1 do self.panel_sprites:draw(canvas, 351, x + 43 + dx, y + 200) end end if watering_width ~= 0 then for dx = 0, watering_width - 1 do self.panel_sprites:draw(canvas, 351, x + 99 + dx, y + 200) end end if repairing_width ~= 0 then for dx = 0, repairing_width - 1 do self.panel_sprites:draw(canvas, 351, x + 155 + dx, y + 200) end end end else font:draw(canvas, "$" .. profile.wage, x + 135, y + 199) -- Wage end if self.staff.attributes["happiness"] then local happiness_bar_width = math.floor(self.staff.attributes["happiness"] * 40 + 0.5) if happiness_bar_width ~= 0 then for dx = 0, happiness_bar_width - 1 do self.panel_sprites:draw(canvas, 348, x + 139 + dx, y + 56) end end end local fatigue_bar_width = 40.5 if self.staff.attributes["fatigue"] then fatigue_bar_width = math.floor((1 - self.staff.attributes["fatigue"]) * 40 + 0.5) end if fatigue_bar_width ~= 0 then for dx = 0, fatigue_bar_width - 1 do self.panel_sprites:draw(canvas, 349, x + 139 + dx, y + 89) end end local skill_bar_width = math.floor(profile.skill * 40 + 0.5) if skill_bar_width ~= 0 then for dx = 0, skill_bar_width - 1 do self.panel_sprites:draw(canvas, 350, x + 139 + dx, y + 120) end end if profile.humanoid_class == "Doctor" then -- Junior / Doctor / Consultant marker if profile.is_junior then self.panel_sprites:draw(canvas, 347, x + 38, y + 173) elseif profile.is_consultant then self.panel_sprites:draw(canvas, 347, x + 89, y + 173) else self.panel_sprites:draw(canvas, 347, x + 60, y + 173) end -- Ability markers if profile.is_surgeon >= 1.0 then self.panel_sprites:draw(canvas, 344, x + 144, y + 148) end if profile.is_psychiatrist >= 1.0 then self.panel_sprites:draw(canvas, 345, x + 155, y + 154) end if profile.is_researcher >= 1.0 then self.panel_sprites:draw(canvas, 346, x + 178, y + 153) end end profile:drawFace(canvas, x + 38, y + 54, self.face_parts) -- Portrait end function UIStaff:onMouseDown(button, x, y) self.do_scroll = button == "left" and is_in_view_circle(x, y, self.staff.profile.humanoid_class == "Handyman") return Window.onMouseDown(self, button, x, y) end -- Helper function to facilitate humanoid_class comparison wrt. Surgeons local function surg_compat(class) return class == "Surgeon" and "Doctor" or class end function UIStaff:onMouseUp(button, x, y) local ui = self.ui if button == "left" then self.do_scroll = false end local repaint = Window.onMouseUp(self, button, x, y) -- Test for hit within the view circle if button == "right" and is_in_view_circle(x, y, self.staff.profile.humanoid_class == "Handyman") then -- Right click goes to the next staff member of the same category (NB: Surgeon in same Category as Doctor) local staff_index = nil for i, staff in ipairs(ui.hospital.staff) do if staff_index and surg_compat(staff.humanoid_class) == surg_compat(self.staff.humanoid_class) then ui:addWindow(UIStaff(ui, staff)) return false end if staff == self.staff then staff_index = i end end -- Try again from beginning of list until staff_index for i = 1, staff_index - 1 do local staff = ui.hospital.staff[i] if surg_compat(staff.humanoid_class) == surg_compat(self.staff.humanoid_class) then ui:addWindow(UIStaff(ui, staff)) return false end end end return repaint end function UIStaff:onMouseMove(x, y, dx, dy) self.do_scroll = self.do_scroll and is_in_view_circle(x, y, self.staff.profile.humanoid_class == "Handyman") return Window.onMouseMove(self, x, y, dx, dy) end function UIStaff:onTick() if self.do_scroll then local ui = self.ui local staff = self.staff local sx, sy = ui.app.map:WorldToScreen(staff.tile_x, staff.tile_y) local dx, dy = staff.th:getPosition() ui:scrollMapTo(sx + dx, sy + dy) end return Window.onTick(self) end function UIStaff:placeStaff() self.staff.pickup = true self.staff:setNextAction(PickupAction(self.ui):setTodoClose(self), true) end function UIStaff:fireStaff() self.ui:addWindow(UIConfirmDialog(self.ui, _S.confirmation.sack_staff, --[[persistable:staff_dialog_confirm_sack]] function() self.staff:fire() end)) end --! Function to balance 'cleaning','watering', and 'repairing', where --! one of them is increased, and the other two are decreased. --!param increased Attribute to increase. function UIStaff:changeHandymanAttributes(increased) if not self.staff.attributes[increased] then return end local incr_value = 0.1 -- Increase of 'increased' local smallest_decr = 0.05 -- Smallest decrement that can be performed. local decr_attrs = {} local attributes = {"cleaning", "watering", "repairing"} for _, attr in ipairs(attributes) do if attr == increased then -- Adding too much is not a problem, it gets clipped to 1. self.staff:changeAttribute(attr, incr_value) if self.staff.attributes[attr] == 1 then incr_value = 2.0 -- Doing 'increased' 100%, set other attributes to 0. end else decr_attrs[#decr_attrs + 1] = attr smallest_decr = math.min(smallest_decr, self.staff.attributes[attr]) end end assert(#decr_attrs == 2) -- The decreasing attributes should together decrease '-incr_value', but one -- or both may be smaller than '-incr_value / 2'. -- Compensate by subtracting the biggest value from both. local decr_value = incr_value - smallest_decr for _, attr in ipairs(decr_attrs) do -- Subtracting too much is not a problem, it gets clipped to 0. self.staff:changeAttribute(attr, -decr_value) end end --! UI callback function to increase 'cleaning' (wiping litter). function UIStaff:doMoreCleaning() self:changeHandymanAttributes("cleaning") end --! UI callback function to increase 'watering' (plants). function UIStaff:doMoreWatering() self:changeHandymanAttributes("watering") end --! UI callback function to increase 'repairing' (machines). function UIStaff:doMoreRepairing() self:changeHandymanAttributes("repairing") end function UIStaff:openStaffManagement() local dlg = UIStaffManagement(self.ui) -- Make sure that the dialog managed to create itself properly. -- For example, if using the demo files closed will be true because the dialog could not be loaded. if not dlg.closed then dlg:selectStaff(self.staff) self.ui:addWindow(dlg) self:close() end end function UIStaff:hitTest(x, y) return Window.hitTest(self, x, y) or is_in_view_circle(x, y, self.staff.profile.humanoid_class == "Handyman") end CorsixTH-0.61/CorsixTH/Lua/dialogs/staff_rise.lua000066400000000000000000000153231321660673500216560ustar00rootroot00000000000000--[[ Copyright (c) 2010 Miika-Petteri Matikainen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Dialog for staff member requesting a salaray raise. class "UIStaffRise" (Window) ---@type UIStaffRise local UIStaffRise = _G["UIStaffRise"] function UIStaffRise:UIStaffRise(ui, staff, rise_amount) self:Window() local app = ui.app local profile = staff.profile self.esc_closes = false -- Do not allow closing the dialog with esc self.staff = staff self.ui = ui self.rise_amount = rise_amount self.on_top = true local final_wage = self.staff.profile.wage + rise_amount self.text = _S.pay_rise.regular.__random:format(rise_amount, final_wage) -- Random complaint text self.width = 366 self.height = 275 -- Center the dialog self:setDefaultPosition(0.5, 0.5) self.panel_sprites = app.gfx:loadSpriteTable("QData", "Req12V", true) self.white_font = app.gfx:loadFont("QData", "Font01V") self.black_font = app.gfx:loadFont("QData", "Font00V") self.face_parts = app.gfx:loadRaw("Face01V", 65, 1350, nil, "Data", "MPalette.dat") -- Left hand side self:addPanel(280, 0, 0) self:addPanel(281, 0, 54) self:addPanel(281, 0, 64) self:addPanel(281, 0, 64) self:addPanel(281, 0, 74) self:addPanel(281, 0, 84) self:addPanel(281, 0, 94) self:addPanel(281, 0, 104) self:addPanel(282, 0, 114) self:addPanel(283, 0, 171) self:addPanel(284, 0, 214) self:addColourPanel(96, 44, 72, 81, 211, 255, 255) -- Portrait background -- Right hand side self:addPanel(285, 180, 0) self:addPanel(286, 180, 20) self:addPanel(286, 180, 48) self:addPanel(286, 180, 76) self:addPanel(286, 180, 104) self:addPanel(286, 180, 132) self:addPanel(286, 180, 160) self:addPanel(287, 180, 188) self:addPanel(288, 180, 233):makeButton(0, 0, 90, 45, 289, self.increaseSalary):setTooltip(_S.tooltip.pay_rise_window.accept) self:addPanel(290, 270, 233):makeButton(0, 0, 90, 45, 291, self.fireStaff):setTooltip(_S.tooltip.pay_rise_window.decline) self:makeTooltip(_S.tooltip.staff_window.name, 14, 15, 169, 38) self:makeTooltip(_S.tooltip.staff_window.face, 96, 44, 168, 125) self:makeTooltip(_S.tooltip.staff_window.salary, 14, 171, 168, 193) self:makeTooltip(_S.tooltip.staff_window.ability, 12, 213, 89, 243) if profile.humanoid_class == "Doctor" then self:makeTooltip(_S.tooltip.staff_window.doctor_seniority, 89, 197, 168, 243) self:makeTooltip(_S.tooltip.staff_window.skills, 14, 132, 47, 166) -- NB: should be sufficient here to check only once, not make a dynamic tooltip if profile.is_surgeon >= 1.0 then self:makeTooltip(_S.tooltip.staff_window.surgeon, 72, 133, 87, 164) end if profile.is_psychiatrist >= 1.0 then self:makeTooltip(_S.tooltip.staff_window.psychiatrist, 87, 133, 116, 164) end if profile.is_researcher >= 1.0 then self:makeTooltip(_S.tooltip.staff_window.researcher, 116, 133, 146, 164) end else -- Hide doctor specific information self:addColourPanel(10, 130, 160, 40, 60, 174, 203) self:addColourPanel(89, 198, 81, 45, 60, 174, 203) end end function UIStaffRise:getStaffPosition(dx, dy) local staff = self.staff local x, y = self.ui.app.map:WorldToScreen(staff.tile_x, staff.tile_y) local px, py = staff.th:getMarker() return x + px - (dx or 0), y + py - (dy or 0) end function UIStaffRise:draw(canvas, x, y) Window.draw(self, canvas, x, y) local profile = self.staff.profile x, y = self.x + x, self.y + y local px, py = self:getStaffPosition(37, 61) local font = self.white_font profile:drawFace(canvas, x + 99, y + 47, self.face_parts) -- Portrait self.ui.app.map:draw(canvas, px, py, 71, 81, x + 16, y + 44) -- Viewport font:draw(canvas, profile.name, x + 20, y + 20) -- Name font:draw(canvas, "$" .. profile.wage, x + 60, y + 178) -- Wage -- Ability -- Note: The bar looks like "attention to detail", but actually ability level -- is displayed here. This was the same in TH, and makes more sense. -- However at some point we should fix the graphics to look like an ability bar. local ability_bar_width = math.floor(profile.skill * 40 + 0.5) if ability_bar_width ~= 0 then for dx = 0, ability_bar_width - 1 do self.panel_sprites:draw(canvas, 295, x + 42 + dx, y + 230) end end if self.staff.profile.humanoid_class == "Doctor" then self:drawDoctorAttributes(canvas) end -- Complaint text self.black_font:drawWrapped(canvas, self.text, x + 200, y + 20, 140) end function UIStaffRise:drawDoctorAttributes(canvas) local profile = self.staff.profile local x, y = self.x, self.y -- Junior / Doctor / Consultant marker local marker_x = x + 98 if profile.is_junior then elseif profile.is_consultant then marker_x = marker_x + 52 else marker_x = marker_x + 22 end self.panel_sprites:draw(canvas, 296, marker_x, y + 230) -- Ability markers if profile.is_surgeon >= 1.0 then self.panel_sprites:draw(canvas, 292, x + 74, y + 133) end if profile.is_psychiatrist >= 1.0 then self.panel_sprites:draw(canvas, 293, x + 90, y + 139) end if profile.is_researcher >= 1.0 then self.panel_sprites:draw(canvas, 294, x + 120, y + 138) end end function UIStaffRise:fireStaff() self.staff.message_callback = nil self.staff:fire() self:close() local world = self.ui.app.world if world and world:isCurrentSpeed("Pause") then world:setSpeed(world.prev_speed) end end function UIStaffRise:increaseSalary() self.staff.message_callback = nil self.staff:increaseWage(self.rise_amount) self.staff.quitting_in = nil self:close() local world = self.ui.app.world if world and world:isCurrentSpeed("Pause") then world:setSpeed(world.prev_speed) end end function UIStaffRise:afterLoad(old, new) if not self.black_font then self.black_font = self.ui.app.gfx:loadFont("QData", "Font00V") end end CorsixTH-0.61/CorsixTH/Lua/dialogs/tree_ctrl.lua000066400000000000000000000506521321660673500215200ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Iterface for items within a UI tree control class "TreeNode" ---@type TreeNode local TreeNode = _G["TreeNode"] function TreeNode:TreeNode() self.is_expanded = false self.num_visible_descendants = 0 end --! Get the number of childrem which the item has function TreeNode:getChildCount() error("To be implemented in subclasses") end --! Query if the item has any children at all. --! The simple way of doing this is checking if getChildCount() is non-zero, -- but often this can be implemented in a more efficient manner. function TreeNode:hasChildren() return self:getChildCount() ~= 0 end --! Get a child of the item. --!param idx (integer) An integer between 1 and getChildCount() (inclusive). function TreeNode:getChildByIndex(idx) error("To be implemented in subclasses") end --! Given a child of the item, determine which index it is --!param child (TreeNode) A value returned from getChildByIndex() function TreeNode:getIndexOfChild(child) error("To be implemented in subclasses") end --! Get the text to be displayed for the item function TreeNode:getLabel() error("To be implemented in subclasses") end --! Get the item's parent, if it has one function TreeNode:getParent() return self.parent end --! Get the tree control within which the item is displayed function TreeNode:getControl() return self.control or self:getParent():getControl() end --! Query whether the item's children are visible function TreeNode:isExpanded() return self.is_expanded end --! Get the background colour for when the item is highlighted function TreeNode:getHighlightColour(canvas) return nil end --! Get the background colour for when the item is selected function TreeNode:getSelectColour(canvas) return canvas:mapRGB(174, 166, 218) end --! Make the children of the item visible function TreeNode:expand() if self.is_expanded then return end self.is_expanded = true self.num_visible_descendants = 0 for i = 1, self:getChildCount() do self.num_visible_descendants = self.num_visible_descendants + 1 + self:getChildByIndex(i).num_visible_descendants end local parent = self:getParent() while parent do parent.num_visible_descendants = parent.num_visible_descendants + self.num_visible_descendants parent = parent:getParent() end self:getControl():onNumVisibleNodesChange() end --! Make the children of the item invisible function TreeNode:contract() if not self.is_expanded then return end self.is_expanded = false local parent = self:getParent() while parent do parent.num_visible_descendants = parent.num_visible_descendants - self.num_visible_descendants parent = parent:getParent() end self.num_visible_descendants = 0 self:getControl():onNumVisibleNodesChange() end --! The number of visible items in the set of this item and all its descendants function TreeNode:numVisibleDescendants() if self.hidden then return self.num_visible_descendants else return self.num_visible_descendants + 1 end end --! Get the depth from the root item to this item. --! The root item has level 0, its direct children have level 1, etc. function TreeNode:getLevel() local level = self.level if not level then local parent = self:getParent() if parent then level = parent:getLevel() + 1 else level = 0 end self.level = level end return level end --! Get the previous item in the on-screen display order function TreeNode:getPrevVisible() local parent = self:getParent() if not parent then return end local idx = parent:getIndexOfChild(self) if idx == 1 then return parent else local prev = parent:getChildByIndex(idx - 1) while prev:isExpanded() do if not prev:hasChildren() then break else prev = prev:getChildByIndex(prev:getChildCount()) end end return prev end end --! Get the next item in the on-screen display order function TreeNode:getNextVisible() if self:isExpanded() and self:hasChildren() then return self:getChildByIndex(1) end while true do local parent = self:getParent() if not parent then return end local idx = parent:getIndexOfChild(self) if idx == parent:getChildCount() then self = parent else return parent:getChildByIndex(idx + 1) end end end --! A tree node representing a file (or directory) in the physical file-system. class "FileTreeNode" (TreeNode) ---@type FileTreeNode local FileTreeNode = _G["FileTreeNode"] local pathsep = package.config:sub(1, 1) function FileTreeNode:FileTreeNode(path) self:TreeNode() if path:sub(-1) == pathsep and path ~= pathsep then path = path:sub(1, -2) end self.path = path self.children = {} self.has_looked_for_children = false -- Default sorting is by name self.sort_by = "name" self.order = "ascending" end function FileTreeNode:isDirectory() return lfs.attributes(self.path, "mode") == "directory" end --- --@param (optional) return the most recently modified child file which has this string in its name. --@return nil if no child file is found otherwise return the FileTreedNode for mostly recently modified child file. function FileTreeNode:getMostRecentlyModifiedChildFile(file_name_filter) self:checkForChildren() self:reSortChildren("date", "descending") local most_recently_mod_child_dir_file = nil local root_child = nil --A. Search for files matching the file name filter in the root directory and its child directories: for i = 1, self:getChildCount(), 1 do root_child = self:getChildByIndex(i) -- 1. Get the most recently modified child directory file which matches the name filter: if root_child:isDirectory() then local current_child_dir_file = root_child:getMostRecentlyModifiedChildFile(file_name_filter) if current_child_dir_file ~= nil then if most_recently_mod_child_dir_file == nil then most_recently_mod_child_dir_file = current_child_dir_file elseif current_child_dir_file:getLastModification() > most_recently_mod_child_dir_file:getLastModification() then most_recently_mod_child_dir_file = current_child_dir_file end end -- Sort always puts directories first so when this else closure is reached in this iterative for loop -- all the sub directories will have been checked: else -- 2. Get the most recently modified root directory file which matches the name filter: local matches_filter = true if(file_name_filter) then matches_filter = string.find(root_child:getLabel(), file_name_filter) end -- End this for loop to begin step B: if matches_filter then break end end root_child = nil end --B. Return the most recently modified file or nil if no file matching the name filter was found: if most_recently_mod_child_dir_file then if root_child then if root_child:getLastModification() > most_recently_mod_child_dir_file:getLastModification() then return root_child end end return most_recently_mod_child_dir_file elseif root_child then return root_child else return nil end end function FileTreeNode:childPath(item) if self.path:sub(-1, -1) == pathsep then return self.path .. item else return self.path .. pathsep .. item end end function FileTreeNode:hasChildren() if self.has_looked_for_children then return #self.children ~= 0 elseif self.has_children == nil then if self:getLevel() == 0 then -- Assume root level things have children until we really need to check return true end self.has_children = false -- Only directories have children. if lfs.attributes(self.path, "mode") ~= "directory" then return false end local status, _f, _s, _v = pcall(lfs.dir, self.path) if not status then print("Error while fetching children for " .. self.path .. ": " .. _f) else for item in _f, _s, _v do if self:isValidFile(item) then self.has_children = true break end end end end return self.has_children end --! Returns whether the given file name is valid -- in this tree. Override for desired behaviour. function FileTreeNode:isValidFile(name) return name ~= "." and name ~= ".." end function FileTreeNode:createNewNode(path) return FileTreeNode(path) end function FileTreeNode:expand() TreeNode.expand(self) self:reSortChildren(self.sort_by, self.order) end local function sort_by_key(t1, t2) local second_mode = lfs.attributes(t2.path, "mode") == "directory" if lfs.attributes(t1.path, "mode") == "directory" then if second_mode then if t1.order == "ascending" then return t1.sort_key < t2.sort_key else return t1.sort_key > t2.sort_key end else return true end else if second_mode then return false else if t1.order == "ascending" then return t1.sort_key < t2.sort_key else return t1.sort_key > t2.sort_key end end end end --! Sorts the node and its children either by date or by name. --!param sort_by What to sort by. Either "name" or "date". --!param order If the ordering should be "ascending" or "descending". function FileTreeNode:reSortChildren(sort_by, order) for _, child in ipairs(self.children) do if sort_by == "date" then child.sort_key = lfs.attributes(child.path, "modification") child.sort_by = sort_by child.order = order elseif sort_by == "name" then child.sort_key = child:getLabel():lower() child.sort_by = sort_by child.order = order else -- No sorting return end end table.sort(self.children, sort_by_key) for i, child in ipairs(self.children) do self.children[child] = i child:reSortChildren(sort_by, order) end end function FileTreeNode:checkForChildren() if not self.has_looked_for_children then self.has_looked_for_children = true if self.has_children == false then -- Already checked and found nothing return end for item in lfs.dir(self.path) do local path = self:childPath(item) if self:isValidFile(item) then local node = self:createNewNode(path) node.sort_key = item:lower() self.children[#self.children + 1] = node end end for i, child in ipairs(self.children) do self.children[child] = i self.children[child.sort_key] = i child.parent = self end end end function FileTreeNode:getHighlightColour(canvas) local highlight_colour = self.highlight_colour if highlight_colour == nil then highlight_colour = false if type(self.filter_by) == "table" then for _, ext in ipairs(self.filter_by) do if string.sub(self.path:lower(), -string.len(ext)) == ext then self.is_valid_file = true highlight_colour = canvas:mapRGB(0, 255, 0) end end elseif self.filter_by and string.sub(self.path:lower(), -string.len(self.filter_by)) == self.filter_by then self.is_valid_file = true highlight_colour = canvas:mapRGB(0, 255, 0) end self.highlight_colour = highlight_colour end return highlight_colour or nil end function FileTreeNode:getChildCount() self:checkForChildren() return #self.children end function FileTreeNode:getChildByIndex(idx) self:checkForChildren() return self.children[idx] end function FileTreeNode:getIndexOfChild(child) return self.children[child] end function FileTreeNode:getLabel() local label = self.label if not label then local parent = self:getParent() if parent and parent.path then if parent.path:sub(-1, -1) == pathsep then label = self.path:sub(#parent.path + 1, -1) else label = self.path:sub(#parent.path + 2, -1) end else label = self.path end self.label = label end return label end function FileTreeNode:getLastModification() return lfs.attributes(self.path, "modification") end --! Selects an item. By default everything selected is valid. Can be overridden -- by inheriting classes. function FileTreeNode:select() self.is_valid_directory = true end --! A tree node which can be used as a root node to give the effect of having -- multiple root nodes. class "DummyRootNode" (TreeNode) ---@type DummyRootNode local DummyRootNode = _G["DummyRootNode"] --!param roots (array) An array of `TreeNode`s which should be displayed as -- root nodes. function DummyRootNode:DummyRootNode(roots) self:TreeNode() self.children = {} for i, child in ipairs(roots) do self.children[i] = child self.children[child] = i child.parent = self end self.level = -1 -- to make children level 0 self.hidden = true end function DummyRootNode:getChildCount() return #self.children end function DummyRootNode:getChildByIndex(idx) return self.children[idx] end function DummyRootNode:getIndexOfChild(child) return self.children[child] end --! A control (to be placed on a window) which allows the user to navigate a -- tree of items and select one item from it. class "TreeControl" (Window) ---@type TreeControl local TreeControl = _G["TreeControl"] --!param root (TreeNode) The single root node of the tree (use a `DummyRootNode` -- here if multiple root nodes are desired). --!param x (integer) The X-position, in pixels, where the control should start -- within its parent. --!param y (integer) The Y-position, in pixels, where the control should start -- within its parent. --!param width (integer) The width, in pixels, of the control. --!param height (integer) The height, in pixels, of the control. --!param col_bg (table) The background colour of the control - this should be -- a table with `red`, `green`, and `blue` fields, each an integer between 0 -- and 255. --!param col_fg (table) The colour used for the scrollbar and highlighted items. function TreeControl:TreeControl(root, x, y, width, height, col_bg, col_fg, y_offset, has_font) -- Setup the base window self:Window() self.x = x self.y = y self.width = width self.height = height self.y_offset = y_offset or 0 -- Load the graphical resources local gfx = TheApp.gfx if not has_font then self.font = gfx:loadBuiltinFont() else self.font = TheApp.gfx:loadFont("QData", "Font01V") end self.tree_sprites = gfx:loadSpriteTable("Bitmap", "tree_ctrl", true, gfx:loadPalette("Bitmap", "tree_ctrl.pal")) -- Calculate sizes and counts local scrollbar_width = 20 self.row_height = 14 self.tree_rect = { x = 0, y = 0, w = width - scrollbar_width, h = height - height % self.row_height, } self.num_rows = (self.tree_rect.h - self.y_offset) / self.row_height self:addBevelPanel(0, 0, width, height, col_bg).lowered = true local scrollbar_base = self:addBevelPanel(width - scrollbar_width, 0, scrollbar_width, height, col_bg) scrollbar_base.lowered = true self.scrollbar = scrollbar_base:makeScrollbar(col_fg, --[[persistable:tree_ctrl_scrollbar_callback]] function() self:onScroll() end, 1, 1, self.num_rows) self.tree_root = root if root.hidden then self.first_visible_node = root:getChildByIndex(1) else self.first_visible_node = root end root.control = self self.first_visible_ordinal = 1 root:expand() end function TreeControl:hitTestTree(x, y) local rect = self.tree_rect x = x - rect.x y = y - rect.y - self.y_offset if 0 <= x and 0 <= y and x < rect.w and y < rect.h then local n = math.floor(y / self.row_height) local node = self.first_visible_node while n ~= 0 and node do node = node:getNextVisible() n = n - 1 end if n == 0 then if node then local level = node:getLevel() if x > level * 14 then if x < (level+1) * 14 then return node, true else return node, false end end end end end end function TreeControl:onMouseMove(x, y) local redraw = Window.onMouseMove(self, x, y) local node, expand = self:hitTestTree(x, y) if expand and self.highlighted_node ~= nil then self.highlighted_node = nil return redraw elseif not expand and node ~= self.highlighted_node then self.highlighted_node = node return redraw end return redraw end function TreeControl:onMouseDown(button, x, y) local redraw = Window.onMouseDown(self, button, x, y) if button ~= 4 and button ~= 5 then -- NB: 4 and 5 are scrollwheel self.mouse_down_in_self = false if 0 <= x and 0 <= y and x < self.width and y < self.height then self.mouse_down_in_self = true redraw = true end end return redraw end function TreeControl:setSelectCallback(callback) self.select_callback = callback return self end function TreeControl:onMouseUp(button, x, y) local redraw = Window.onMouseUp(self, button, x, y) local node, expand = self:hitTestTree(x, y) if self.mouse_down_in_self and node then if expand then if node:hasChildren() then if node:isExpanded() then node:contract() else node:expand() end redraw = true end elseif self.selected_node == node and self.select_callback then self.select_callback(node) else self.selected_node = node node:select() redraw = true end end self.mouse_down_in_self = false return redraw end function TreeControl:onMouseWheel(x, y) self.scrollbar:setXorY(self.scrollbar:getXorY() - y * 8) end function TreeControl:onNumVisibleNodesChange() self.scrollbar:setRange(1, self.tree_root:numVisibleDescendants(), self.num_rows, self.first_visible_ordinal) end function TreeControl:onScroll() if self.scrollbar.value > self.first_visible_ordinal then for _ = 1, self.scrollbar.value - self.first_visible_ordinal do self.first_visible_node = self.first_visible_node:getNextVisible() end elseif self.scrollbar.value < self.first_visible_ordinal then for _ = 1, self.first_visible_ordinal - self.scrollbar.value do self.first_visible_node = self.first_visible_node:getPrevVisible() end end self.first_visible_ordinal = self.scrollbar.value end --! Override this function if a certain row should have certain text -- or additional flavour to it. function TreeControl:drawExtraOnRow(canvas, node, x, y) end function TreeControl:draw(canvas, x, y) Window.draw(self, canvas, x, y) x = x + self.x + self.tree_rect.x y = y + self.y + self.tree_rect.y + self.y_offset local node = self.first_visible_node local num_nodes_drawn = 0 while node and num_nodes_drawn < self.num_rows do local level = node:getLevel() for i = 0, level - 1 do self.tree_sprites:draw(canvas, 1, x + i * 14, y) end if node == self.highlighted_node then local offset = (level + 1) * 14 local colour = node:getHighlightColour(canvas) or self.scrollbar.slider.colour canvas:drawRect(colour, x + offset - 1, y, self.tree_rect.w - offset - 1, self.row_height) end if node == self.selected_node then local offset = (level + 1) * 14 local colour = node:getSelectColour(canvas) or self.scrollbar.slider.colour canvas:drawRect(colour, x + offset - 1, y, self.tree_rect.w - offset - 1, self.row_height) end local icon if not node:hasChildren() then icon = 2 elseif node:isExpanded() then icon = 4 else icon = 3 end self.tree_sprites:draw(canvas, icon, x + level * 14, y) self.font:draw(canvas, node:getLabel(), x + (level + 1) * 14, y + 2) self:drawExtraOnRow(canvas, node, x, y) y = y + self.row_height num_nodes_drawn = num_nodes_drawn + 1 node = node:getNextVisible() end end CorsixTH-0.61/CorsixTH/Lua/dialogs/watch.lua000066400000000000000000000151401321660673500206340ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Timer / clock / watch / countdown dialog for emergencies / level start --! The timer lasts approximately 100 days, split into 13 segments class "UIWatch" (Window) ---@type UIWatch local UIWatch = _G["UIWatch"] --!param count_type (string) One of: "open_countdown" or "emergency" or "epidemic" function UIWatch:UIWatch(ui, count_type) self:Window() local app = ui.app self.esc_closes = false self.modal_class = "open_countdown" self.tick_rate = math.floor((100 * app.world.hours_per_day) / 13) self.tick_timer = self.tick_rate -- Initialize tick timer self.open_timer = 12 self.ui = ui self.hospital = ui.hospital self.width = 39 self.height = 79 self:setDefaultPosition(20, -100) self.panel_sprites = app.gfx:loadSpriteTable("Data", "Watch01V", true) self.epidemic = false self.count_type = count_type -- For cycling the list of epidemic/emergency patients which index to use self.current_index = nil -- The last patient whose dialog was opened by clicking the timer self.lastCycledPatient = nil local end_sprite = (count_type == "epidemic") and 14 or 16 local tooltips = { ["initial_opening"] = _S.tooltip.watch.hospital_opening, ["emergency"] = _S.tooltip.watch.emergency, ["epidemic"] = _S.tooltip.watch.epidemic, } if count_type == "epidemic" then self.end_button = self:addPanel(end_sprite, 4, 0) :makeButton(4, 0, 27, 28, end_sprite + 1, self.toggleVaccinationMode) :setTooltip(tooltips[count_type]) elseif count_type ~= "emergency" then self.end_button = self:addPanel(end_sprite, 4, 0) :makeButton(4, 0, 27, 28, end_sprite + 1, self.onCountdownEnd) :setTooltip(tooltips[count_type]) end local timer_sprite = 13 if count_type == "epidemic" or count_type == "emergency" then self:addPanel(timer_sprite, 0, 28) :setTooltip(tooltips[count_type]) :makeButton(timer_sprite, 0, 25, 50, timer_sprite, self.scrollToTimerEventPatient, nil, self.cycleTimerEventPatient) else self:addPanel(timer_sprite, 0, 28):setTooltip(tooltips[count_type]) end self:addPanel(1, 2, 47) end function UIWatch:onCountdownEnd() self:close() if self.count_type == "emergency" then self.ui.hospital:resolveEmergency() elseif self.count_type == "epidemic" then local epidemic = self.hospital.epidemic if epidemic and not epidemic.inspector then epidemic:spawnInspector() if epidemic.vaccination_mode_active then epidemic:toggleVaccinationMode() end end elseif self.count_type == "initial_opening" then self.ui.hospital.opened = true self.ui.hospital.boiler_can_break = true -- boiler can't break whilst build timer is open self.ui:playSound("fanfare.wav") end end function UIWatch:onWorldTick() if self.tick_timer == 0 and self.open_timer >= 0 then -- Used for making a smooth animation self.tick_timer = self.tick_rate self.open_timer = self.open_timer - 1 if self.open_timer == 11 then self:addPanel(2, 2, 47) elseif self.open_timer == 0 then self.panels[#self.panels].sprite_index = 0 elseif self.open_timer < 11 and self.open_timer > 0 then self.panels[#self.panels].sprite_index = 13 - self.open_timer if self.open_timer == 5 then table.remove(self.panels, #self.panels - 1) end end elseif self.open_timer == -1 then -- the timer is at 0 when it is completely red. self:onCountdownEnd() -- Countdown terminated, so we open the hospital or ends the epidemic panic else self.tick_timer = self.tick_timer - 1 end end --[[! Toggles vaccination mode by toggling the button then toggling the mode in the current epidemic.]] function UIWatch:toggleVaccinationMode() local epidemic = self.hospital.epidemic self.end_button:toggle() epidemic:toggleVaccinationMode() end --[[! During an emergency - Cycles through the patient dialogs of all the emergency patients ! During an epidemic - Cycles to the first patient who is infected but not vaccinated]] function UIWatch:cycleTimerEventPatient() self.ui:playSound("camclick.wav") local hospital = self.ui.hospital if self.count_type == "emergency" then local patients = hospital.emergency_patients if #patients > 0 then if not self.current_index or self.current_index == #patients then self.current_index = 1 else self.current_index = self.current_index + 1 end self.lastCycledPatient = patients[self.current_index] self.ui:addWindow(UIPatient(self.ui, self.lastCycledPatient)) end else for _, infected_patient in ipairs(hospital.epidemic.infected_patients) do if not infected_patient.vaccinated and not infected_patient.cured then self.lastCycledPatient = infected_patient self.ui:addWindow(UIPatient(self.ui, self.lastCycledPatient)) break end end end end --[[! While cycling through timer event patients (@see UIWatch:cycleTimerEventPatient) scrolls the screen to centre on the selected patient If a patient dialog is open that does not belong to the timer event, does nothing]] function UIWatch:scrollToTimerEventPatient() self.ui:playSound("camclick.wav") local patient = self.lastCycledPatient if patient then -- Current open dialog local current_patient_dialog = self.ui:getWindow(UIPatient) if not current_patient_dialog then -- Create the dialog but don't add it to the window local patient_dialog = UIPatient(self.ui, patient) patient_dialog:scrollToPatient() elseif patient == current_patient_dialog.patient then current_patient_dialog:scrollToPatient() end end end CorsixTH-0.61/CorsixTH/Lua/diseases/000077500000000000000000000000001321660673500172005ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/diseases/alien_dna.lua000066400000000000000000000060021321660673500216130ustar00rootroot00000000000000--[[ Copyright (c) 2011 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "alien_dna" disease.expertise_id = 8 disease.visuals_id = 6 disease.name = _S.diseases.alien_dna.name disease.cause = _S.diseases.alien_dna.cause disease.symptoms = _S.diseases.alien_dna.symptoms disease.cure = _S.diseases.alien_dna.cure disease.cure_price = 2000 disease.emergency_sound = "emerg020.wav" disease.emergency_number = 16 disease.contagious = false disease.must_stand = TheApp.config.alien_dna_must_stand -- Alien Patients are forced to stand while queueing because of missing animation disease.only_emergency = TheApp.config.alien_dna_only_by_emergency -- TODO implement (there are no normal door animations, so they cannot go to GP) disease.initPatient = function(patient) local which = math.random(0, 1) -- male or female? patient:setType((which == 0) and "Alien Male Patient" or "Alien Female Patient") patient.change_into = (which == 0) and "Standard Male Patient" or "Standard Female Patient" if which == 0 then patient:setLayer(0, math.random(1, 5) * 2) -- 5 variations for males patient:setLayer(2, math.random(0, 1) * 2) -- + alternate shoes else patient:setLayer(0, math.random(2, 4) * 2) -- NB: for layer0 = 2 head is missing in death animation, so it's not used patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) -- 3 clothes variations for both genders patient:setLayer(3, 0) patient:setLayer(4, 0) patient.should_knock_on_doors = TheApp.config.alien_dna_can_knock_on_doors end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "dna_fixer", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/baldness.lua000066400000000000000000000045341321660673500215040ustar00rootroot00000000000000--[[ Copyright (c) 2010 Miika-Petteri Matikainen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "baldness" disease.expertise_id = 10 disease.visuals_id = 8 disease.name = _S.diseases.baldness.name disease.cause = _S.diseases.baldness.cause disease.symptoms = _S.diseases.baldness.symptoms disease.cure = _S.diseases.baldness.cure disease.cure_price = 950 disease.emergency_sound = "emerg012.wav" disease.emergency_number = 18 disease.contagious = false disease.initPatient = function(patient) patient:setType("Slack Male Patient") patient:setLayer(0, 12) patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(2, 0) patient:setLayer(3, 0) patient:setLayer(4, 0) -- Disable knocking doors as there is no door knocking animation in layer 0 with 12 (bald head) patient.should_knock_on_doors = false end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "x_ray", "blood_machine", "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "hair_restoration", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/bloaty_head.lua000066400000000000000000000044161321660673500221630ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "bloaty_head" disease.expertise_id = 2 disease.visuals_id = 0 disease.name = _S.diseases.bloaty_head.name disease.cause = _S.diseases.bloaty_head.cause disease.symptoms = _S.diseases.bloaty_head.symptoms disease.cure = _S.diseases.bloaty_head.cure disease.cure_price = 850 disease.emergency_sound = "emerg007.wav" disease.emergency_number = 18 disease.contagious = false disease.initPatient = function(patient) patient:setType("Standard Male Patient") patient:setLayer(0, math.random(6, 8) * 2) patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(2, math.random(0, 1) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "x_ray", "cardiogram", "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "inflation", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/broken_heart.lua000066400000000000000000000046361321660673500223570ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "broken_heart" disease.expertise_id = 20 disease.non_visuals_id = 4 disease.name = _S.diseases.broken_heart.name disease.cause = _S.diseases.broken_heart.cause disease.symptoms = _S.diseases.broken_heart.symptoms disease.cure = _S.diseases.broken_heart.cure disease.cure_price = 1900 disease.emergency_sound = "emerg025.wav" disease.emergency_number = 6 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/broken_wind.lua000066400000000000000000000046721321660673500222150ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "broken_wind" disease.expertise_id = 17 disease.non_visuals_id = 1 disease.name = _S.diseases.broken_wind.name disease.cause = _S.diseases.broken_wind.cause disease.symptoms = _S.diseases.broken_wind.symptoms disease.cure = _S.diseases.broken_wind.cure disease.cure_price = 1300 disease.emergency_sound = "emerg016.wav" disease.emergency_number = 14 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/chronic_nosehair.lua000066400000000000000000000047221321660673500232250ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "chronic_nosehair" disease.expertise_id = 25 disease.non_visuals_id = 9 disease.name = _S.diseases.chronic_nosehair.name disease.cause = _S.diseases.chronic_nosehair.cause disease.symptoms = _S.diseases.chronic_nosehair.symptoms disease.cure = _S.diseases.chronic_nosehair.cure disease.cure_price = 800 disease.emergency_sound = "emerg029.wav" disease.emergency_number = 18 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/corrugated_ankles.lua000066400000000000000000000047271321660673500234110ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "corrugated_ankles" disease.expertise_id = 24 disease.non_visuals_id = 8 disease.name = _S.diseases.corrugated_ankles.name disease.cause = _S.diseases.corrugated_ankles.cause disease.symptoms = _S.diseases.corrugated_ankles.symptoms disease.cure = _S.diseases.corrugated_ankles.cure disease.cure_price = 800 disease.emergency_sound = "emerg028.wav" disease.emergency_number = 18 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/discrete_itching.lua000066400000000000000000000047341321660673500232220ustar00rootroot00000000000000 --[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "discrete_itching" disease.expertise_id = 11 disease.visuals_id = 9 disease.name = _S.diseases.discrete_itching.name disease.cause = _S.diseases.discrete_itching.cause disease.symptoms = _S.diseases.discrete_itching.symptoms disease.cure = _S.diseases.discrete_itching.cure disease.cure_price = 700 disease.emergency_sound = "emerg013.wav" disease.emergency_number = 15 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/fake_blood.lua000066400000000000000000000045761321660673500220040ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "fake_blood" disease.expertise_id = 27 disease.non_visuals_id = 11 disease.name = _S.diseases.fake_blood.name disease.cause = _S.diseases.fake_blood.cause disease.symptoms = _S.diseases.fake_blood.symptoms disease.cure = _S.diseases.fake_blood.cure disease.cure_price = 800 disease.emergency_sound = "emerg031.wav" disease.emergency_number = 18 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "psych", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/fractured_bones.lua000066400000000000000000000064261321660673500230600ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "fractured_bones" disease.expertise_id = 9 disease.visuals_id = 7 disease.name = _S.diseases.fractured_bones.name disease.cause = _S.diseases.fractured_bones.cause disease.symptoms = _S.diseases.fractured_bones.symptoms disease.cure = _S.diseases.fractured_bones.cure disease.cure_price = 450 disease.emergency_sound = "emerg005.wav" disease.emergency_number = 16 disease.contagious = false disease.initPatient = function(patient) if not TheApp.config.disable_fractured_bones_females and math.random(1, 2) == 2 then -- The female animation in the cast remover is bad -- so by default it is disabled. They can though be allowed by turning them on in config patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) local num1 = math.random(0, 1) -- The first bandage yes/no patient:setLayer(2, num1 * 2) -- There needs to be at least one bandage on the patient patient:setLayer(3, (num1 == 0 and 1 or math.random(0, 1)) * 2) patient:setLayer(4, 0) else patient:setType("Alternate Male Patient") patient:setLayer(0, math.random(1, 5) * 2) -- Some bandage types may be duplicated, then it shall be so local num1 = math.random(0, 2) -- The first bandage yes/no patient:setLayer(2, num1 * 2) local num2 = math.random(0, 5) -- The second bandage yes/no -- 6 does not exist, a few more arm bandages instead if num2 == 3 then num2 = 4 end patient:setLayer(3, num2 * 2) -- There needs to be at least one bandage on the patient local num3 = math.random(0, 5) if num3 == 3 then num3 = 4 end patient:setLayer(4, ((num1 == 0 and num2 == 0) and 1 or num3) * 2) end patient:setLayer(1, math.random(0, 3) * 2) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "fracture_clinic", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/gastric_ejections.lua000066400000000000000000000047301321660673500234060ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "gastric_ejections" disease.expertise_id = 28 disease.non_visuals_id = 12 disease.name = _S.diseases.gastric_ejections.name disease.cause = _S.diseases.gastric_ejections.cause disease.symptoms = _S.diseases.gastric_ejections.symptoms disease.cure = _S.diseases.gastric_ejections.cure disease.cure_price = 650 disease.emergency_sound = "emerg032.wav" disease.emergency_number = 15 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/golf_stones.lua000066400000000000000000000046321321660673500222320ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "golf_stones" disease.expertise_id = 34 disease.non_visuals_id = 18 disease.name = _S.diseases.golf_stones.name disease.cause = _S.diseases.golf_stones.cause disease.symptoms = _S.diseases.golf_stones.symptoms disease.cure = _S.diseases.golf_stones.cure disease.cure_price = 1600 disease.emergency_sound = "emerg034.wav" disease.emergency_number = 6 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/gut_rot.lua000066400000000000000000000046151321660673500213740ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "gut_rot" disease.expertise_id = 33 disease.non_visuals_id = 17 disease.name = _S.diseases.gut_rot.name disease.cause = _S.diseases.gut_rot.cause disease.symptoms = _S.diseases.gut_rot.symptoms disease.cure = _S.diseases.gut_rot.cure disease.cure_price = 350 disease.emergency_sound = "emerg019.wav" disease.emergency_number = 14 disease.more_loo_use = true disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/hairyitis.lua000066400000000000000000000046441321660673500217200ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "hairyitis" disease.expertise_id = 3 disease.visuals_id = 1 disease.name = _S.diseases.hairyitis.name disease.cause = _S.diseases.hairyitis.cause disease.symptoms = _S.diseases.hairyitis.symptoms disease.cure = _S.diseases.hairyitis.cure disease.cure_price = 1150 disease.emergency_sound = "emerg008.wav" disease.emergency_number = 12 disease.contagious = false disease.initPatient = function(patient) patient:setType("Chewbacca Patient") -- NB: Layers have no effect on the appearance until cured, at which point -- they are standard male patient layers. The clinic does however sometimes -- change this so that a female emerge. patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(2, math.random(0, 1) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "x_ray", "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "electrolysis", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/heaped_piles.lua000066400000000000000000000046771321660673500223430ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "heaped_piles" disease.expertise_id = 32 disease.non_visuals_id = 16 disease.name = _S.diseases.heaped_piles.name disease.cause = _S.diseases.heaped_piles.cause disease.symptoms = _S.diseases.heaped_piles.symptoms disease.cure = _S.diseases.heaped_piles.cure disease.cure_price = 400 disease.emergency_sound = "emerg001.wav" disease.emergency_number = 14 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/infectious_laughter.lua000066400000000000000000000046311321660673500237520ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "infectious_laughter" disease.expertise_id = 23 disease.non_visuals_id = 7 disease.name = _S.diseases.infectious_laughter.name disease.cause = _S.diseases.infectious_laughter.cause disease.symptoms = _S.diseases.infectious_laughter.symptoms disease.cure = _S.diseases.infectious_laughter.cure disease.cure_price = 1500 disease.emergency_sound = "emerg027.wav" disease.emergency_number = 18 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "psych", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/invisibility.lua000066400000000000000000000042601321660673500224230ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "invisibility" disease.expertise_id = 5 disease.visuals_id = 3 disease.name = _S.diseases.invisibility.name disease.cause = _S.diseases.invisibility.cause disease.symptoms = _S.diseases.invisibility.symptoms disease.cure = _S.diseases.invisibility.cure disease.cure_price = 1400 disease.emergency_sound = "emerg006.wav" disease.emergency_number = 18 disease.contagious = false disease.initPatient = function(patient) patient:setType("Invisible Patient") patient:setLayer(0, 2) patient:setLayer(1, 0) patient:setLayer(2, 4) patient:setLayer(3, 0) patient:setLayer(4, 0) patient.cured_layers = { [0] = math.random(1, 5) * 2, [1] = math.random(0, 3) * 2, [2] = 4, } end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "x_ray", "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/iron_lungs.lua000066400000000000000000000045221321660673500220650ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "iron_lungs" disease.expertise_id = 30 disease.non_visuals_id = 14 disease.name = _S.diseases.iron_lungs.name disease.cause = _S.diseases.iron_lungs.cause disease.symptoms = _S.diseases.iron_lungs.symptoms disease.cure = _S.diseases.iron_lungs.cure disease.cure_price = 1700 disease.emergency_sound = "emerg033.wav" disease.emergency_number = 5 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "x_ray", "cardiogram", "blood_machine", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/jellyitis.lua000066400000000000000000000050711321660673500217160ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "jellyitis" disease.expertise_id = 12 disease.visuals_id = 10 disease.name = _S.diseases.jellyitis.name disease.cause = _S.diseases.jellyitis.cause disease.symptoms = _S.diseases.jellyitis.symptoms disease.cure = _S.diseases.jellyitis.cure disease.cure_price = 1000 disease.emergency_sound = "emerg014.wav" disease.emergency_number = 12 disease.contagious = false disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- TODO: visual jelly effect should be applied from time to time while walking -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "jelly_vat", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/kidney_beans.lua000066400000000000000000000046361321660673500223470ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "kidney_beans" disease.expertise_id = 19 disease.non_visuals_id = 3 disease.name = _S.diseases.kidney_beans.name disease.cause = _S.diseases.kidney_beans.cause disease.symptoms = _S.diseases.kidney_beans.symptoms disease.cure = _S.diseases.kidney_beans.cure disease.cure_price = 1050 disease.emergency_sound = "emerg024.wav" disease.emergency_number = 5 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/king_complex.lua000066400000000000000000000041151321660673500223630ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "king_complex" disease.expertise_id = 4 disease.visuals_id = 2 disease.name = _S.diseases.king_complex.name disease.cause = _S.diseases.king_complex.cause disease.symptoms = _S.diseases.king_complex.symptoms disease.cure = _S.diseases.king_complex.cure disease.cure_price = 1600 disease.emergency_sound = "emerg009.wav" disease.emergency_number = 18 disease.contagious = false disease.initPatient = function(patient) patient:setType("Elvis Patient") patient:setLayer(0, math.random(1, 3)*2) patient:setLayer(1, 0) patient:setLayer(2, 0) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "x_ray", "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "psych", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/pregnant.lua000066400000000000000000000043131321660673500215220ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "MarkL" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "pregnant" disease.expertise_id = 14 disease.visuals_id = 12 disease.name = _S.diseases.pregnancy.name disease.cause = _S.diseases.pregnancy.cause disease.symptoms = _S.diseases.pregnancy.symptoms disease.cure = _S.diseases.pregnancy.cure disease.cure_price = 200 disease.emergency_sound = "emerg021.wav" disease.emergency_number = 8 disease.contagious = false disease.initPatient = function(patient) patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. They need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/ruptured_nodules.lua000066400000000000000000000046621321660673500233160ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "ruptured_nodules" disease.expertise_id = 21 disease.non_visuals_id = 5 disease.name = _S.diseases.ruptured_nodules.name disease.cause = _S.diseases.ruptured_nodules.cause disease.symptoms = _S.diseases.ruptured_nodules.symptoms disease.cure = _S.diseases.ruptured_nodules.cure disease.cure_price = 1600 disease.emergency_sound = "emerg026.wav" disease.emergency_number = 6 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/serious_radiation.lua000066400000000000000000000050661321660673500234350ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "serious_radiation" disease.expertise_id = 6 disease.visuals_id = 4 disease.name = _S.diseases.serious_radiation.name disease.cause = _S.diseases.serious_radiation.cause disease.symptoms = _S.diseases.serious_radiation.symptoms disease.cure = _S.diseases.serious_radiation.cure disease.cure_price = 1800 disease.emergency_sound = "emerg010.wav" disease.emergency_number = 18 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- TODO: visual radiation effect -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "decontamination", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/slack_tongue.lua000066400000000000000000000045471321660673500223730ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "slack_tongue" disease.expertise_id = 7 disease.visuals_id = 5 disease.name = _S.diseases.slack_tongue.name disease.cause = _S.diseases.slack_tongue.cause disease.symptoms = _S.diseases.slack_tongue.symptoms disease.cure = _S.diseases.slack_tongue.cure disease.cure_price = 900 disease.emergency_sound = "emerg011.wav" disease.emergency_number = 18 disease.contagious = false disease.initPatient = function(patient) if math.random(0, 1) == 1 then patient:setType("Slack Female Patient") patient:setLayer(0, math.random(5, 8) * 2) else patient:setType("Slack Male Patient") patient:setLayer(0, math.random(1, 5) * 2) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(2, 0) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "x_ray", "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "slack_tongue", } -- If a machine is required a small icon should appear in the drug casebook. disease.requires_machine = true return disease CorsixTH-0.61/CorsixTH/Lua/diseases/sleeping_illness.lua000066400000000000000000000047431321660673500232520ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "sleeping_illness" disease.expertise_id = 13 disease.visuals_id = 11 disease.name = _S.diseases.sleeping_illness.name disease.cause = _S.diseases.sleeping_illness.cause disease.symptoms = _S.diseases.sleeping_illness.symptoms disease.cure = _S.diseases.sleeping_illness.cure disease.yawn = true disease.cure_price = 750 disease.emergency_sound = "emerg015.wav" disease.emergency_number = 18 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/spare_ribs.lua000066400000000000000000000046241321660673500220420ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "spare_ribs" disease.expertise_id = 18 disease.non_visuals_id = 2 disease.name = _S.diseases.spare_ribs.name disease.cause = _S.diseases.spare_ribs.cause disease.symptoms = _S.diseases.spare_ribs.symptoms disease.cure = _S.diseases.spare_ribs.cure disease.cure_price = 1100 disease.emergency_sound = "emerg023.wav" disease.emergency_number = 4 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/sweaty_palms.lua000066400000000000000000000046101321660673500224140ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "sweaty_palms" disease.expertise_id = 31 disease.non_visuals_id = 15 disease.name = _S.diseases.sweaty_palms.name disease.cause = _S.diseases.sweaty_palms.cause disease.symptoms = _S.diseases.sweaty_palms.symptoms disease.cure = _S.diseases.sweaty_palms.cure disease.cure_price = 600 disease.emergency_sound = "emerg017.wav" disease.emergency_number = 14 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "psych", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/the_squits.lua000066400000000000000000000047211321660673500220770ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "the_squits" disease.expertise_id = 29 disease.non_visuals_id = 13 disease.name = _S.diseases.the_squits.name disease.cause = _S.diseases.the_squits.cause disease.symptoms = _S.diseases.the_squits.symptoms disease.cure = _S.diseases.the_squits.cure disease.cure_price = 400 disease.emergency_sound = "emerg002.wav" disease.emergency_number = 18 disease.more_loo_use = true disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/third_degree_sideburns.lua000066400000000000000000000046721321660673500244170ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "third_degree_sideburns" disease.expertise_id = 26 disease.non_visuals_id = 10 disease.name = _S.diseases.third_degree_sideburns.name disease.cause = _S.diseases.third_degree_sideburns.cause disease.symptoms = _S.diseases.third_degree_sideburns.symptoms disease.cure = _S.diseases.third_degree_sideburns.cure disease.cure_price = 550 disease.emergency_sound = "emerg030.wav" disease.emergency_number = 13 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "psych", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/transparency.lua000066400000000000000000000044531321660673500224220ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "transparency" disease.expertise_id = 15 disease.visuals_id = 13 disease.name = _S.diseases.transparency.name disease.cause = _S.diseases.transparency.cause disease.symptoms = _S.diseases.transparency.symptoms disease.cure = _S.diseases.transparency.cure disease.cure_price = 800 disease.emergency_sound = "emerg022.wav" disease.emergency_number = 12 disease.contagious = false disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Transparent Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Transparent Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "scanner", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/tv_personalities.lua000066400000000000000000000046321321660673500233020ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "tv_personalities" disease.expertise_id = 22 disease.non_visuals_id = 6 disease.name = _S.diseases.tv_personalities.name disease.cause = _S.diseases.tv_personalities.cause disease.symptoms = _S.diseases.tv_personalities.symptoms disease.cure = _S.diseases.tv_personalities.cure disease.cure_price = 800 disease.emergency_sound = "emerg003.wav" disease.emergency_number = 14 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "psych", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/uncommon_cold.lua000066400000000000000000000047031321660673500225430ustar00rootroot00000000000000--[[ Copyright (c) 2009 Haico "brainball" van Roeden Based on gut_rot.lua by Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "uncommon_cold" disease.expertise_id = 16 disease.non_visuals_id = 0 disease.name = _S.diseases.uncommon_cold.name disease.cause = _S.diseases.uncommon_cold.cause disease.symptoms = _S.diseases.uncommon_cold.symptoms disease.cure = _S.diseases.uncommon_cold.cure disease.cure_price = 300 disease.emergency_sound = "emerg004.wav" disease.emergency_number = 18 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "pharmacy", } return disease CorsixTH-0.61/CorsixTH/Lua/diseases/unexpected_swelling.lua000066400000000000000000000047011321660673500237550ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local disease = {} disease.id = "unexpected_swelling" disease.expertise_id = 35 disease.non_visuals_id = 19 disease.name = _S.diseases.unexpected_swelling.name disease.cause = _S.diseases.unexpected_swelling.cause disease.symptoms = _S.diseases.unexpected_swelling.symptoms disease.cure = _S.diseases.unexpected_swelling.cure disease.cure_price = 500 disease.emergency_sound = "emerg018.wav" disease.emergency_number = 5 disease.contagious = true disease.initPatient = function(patient) if math.random(0, 1) == 0 then patient:setType("Standard Male Patient") patient:setLayer(0, math.random(1, 5) * 2) patient:setLayer(2, math.random(0, 2) * 2) else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(2, 0) end patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(3, 0) patient:setLayer(4, 0) end -- Diagnosis rooms are the rooms other than the GPs office which can be visited -- to aid in diagnosis. The need not be visited, and if they are visited, the -- order in which they are visited is not fixed. disease.diagnosis_rooms = { "general_diag", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "psych", "ward", } -- Treatment rooms are the rooms which must be visited, in the given order, to -- cure the disease. disease.treatment_rooms = { "ward", "operating_theatre", } return disease CorsixTH-0.61/CorsixTH/Lua/entities/000077500000000000000000000000001321660673500172245ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/entities/grim_reaper.lua000066400000000000000000000026771321660673500222370ustar00rootroot00000000000000--[[ Copyright (c) 2012 Luís "Driver" Duarte Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "GrimReaper" (Humanoid) ---@type GrimReaper local GrimReaper = _G["GrimReaper"] function GrimReaper:GrimReaper(...) self:Humanoid(...) self.attributes = {} self.hover_cursor = TheApp.gfx:loadMainCursor("default") self.walk_anims = { walk_east = 996, walk_north = 994, idle_east = 1004, idle_north = 1002, } end function GrimReaper:tickDay() return false end CorsixTH-0.61/CorsixTH/Lua/entities/humanoid.lua000066400000000000000000001055151321660673500215420ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! An `Entity` which occupies a single tile and is capable of moving around the map. class "Humanoid" (Entity) ---@type Humanoid local Humanoid = _G["Humanoid"] local walk_animations = permanent"humanoid_walk_animations"({}) local door_animations = permanent"humanoid_door_animations"({}) local die_animations = permanent"humanoid_die_animations"({}) local falling_animations = permanent"humanoid_falling_animations"({}) local on_ground_animations = permanent"humanoid_on_ground_animations"({}) local get_up_animations = permanent"humanoid_get_up_animations"({}) local shake_fist_animations = permanent"humanoid_shake_fist_animations"({}) local pee_animations = permanent"humanoid_pee_animations"({}) local vomit_animations = permanent"humanoid_vomit_animations"({}) local tap_foot_animations = permanent"humanoid_tap_foot_animations"({}) local yawn_animations = permanent"humanoid_yawn_animations"({}) local check_watch_animations = permanent"humanoid_check_watch_animations"({}) local mood_icons = permanent"humanoid_mood_icons"({}) local function anims(name, walkN, walkE, idleN, idleE, doorL, doorE, knockN, knockE, swingL, swingE) walk_animations[name] = { walk_east = walkE, walk_north = walkN, idle_east = idleE, idle_north = idleN, } door_animations[name] = { entering = doorE, leaving = doorL, entering_swing = swingE, leaving_swing = swingL, knock_north = knockN, knock_east = knockE, } end --- -- @param name The name of the patient class these death animations are for. -- @param fall The patient's fall animation. -- @param rise The transparent getting up animation for heaven death patients who have been lying dead on the ground. -- @param rise_hell The opaque getting up animation for hell death patients who have been lying dead on the ground. -- @param wings The heaven death animation in which the patient's wings appear. -- @param hands The heaven death animation which occurs after the wings animation when the patient puts their hands together. -- @param fly The heaven death animation which makes patients fly upwards to heaven. -- @param extra Dead untreated patients who don't transform before falling over use this animation afterwards to transform into a standard male/female. --- local function die_anims(name, fall, rise, rise_hell, wings, hands, fly, extra) die_animations[name] = { fall_east = fall, rise_east = rise, rise_hell_east = rise_hell, wings_east = wings, hands_east = hands, fly_east = fly, extra_east = extra, } end local function falling_anim(name, fallingAnim) falling_animations[name] = fallingAnim end local function on_ground_anim(name, on_groundAnim) on_ground_animations[name] = on_groundAnim end local function get_up_anim(name, get_upAnim) get_up_animations[name] = get_upAnim end local function shake_fist_anim(name, shake_fistAnim) shake_fist_animations[name] = shake_fistAnim end local function vomit_anim(name, vomitAnim) vomit_animations[name] = vomitAnim end local function yawn_anim(name, yawnAnim) yawn_animations[name] = yawnAnim end local function tap_foot_anim(name, tap_footAnim) tap_foot_animations[name] = tap_footAnim end local function check_watch_anim(name, check_watchAnim) check_watch_animations[name] = check_watchAnim end local function pee_anim(name, peeAnim) pee_animations[name] = peeAnim end local function moods(name, iconNo, prio, alwaysOn) mood_icons[name] = {icon = iconNo, priority = prio, on_hover = alwaysOn} end -- | Walk animations | -- | Name |WalkN|WalkE|IdleN|IdleE|DoorL|DoorE|KnockN|KnockE|SwingL|SwingE| Notes -----+---------------------------+-----+-----+-----+-----+-----+-----+------+------+-------+---------+ anims("Standard Male Patient", 16, 18, 24, 26, 182, 184, 286, 288, 2040, 2042) -- 0-16, ABC anims("Gowned Male Patient", 406, 408, 414, 416) -- 0-10 anims("Stripped Male Patient", 818, 820, 826, 828) -- 0-16 anims("Stripped Male Patient 2", 818, 820, 826, 828) -- 0-16 anims("Stripped Male Patient 3", 818, 820, 826, 828) anims("Alternate Male Patient", 2704, 2706, 2712, 2714, 2748, 2750, 2764, 2766) -- 0-10, ABC anims("Slack Male Patient", 1484, 1486, 1492, 1494, 1524, 1526, 2764, 1494) -- 0-14, ABC anims("Slack Female Patient", 0, 2, 8, 10, 258, 260, 294, 296, 2864, 2866) -- 0-16, ABC anims("Transparent Male Patient", 1064, 1066, 1072, 1074, 1104, 1106, 1120, 1074) -- 0-16, ABC anims("Standard Female Patient", 0, 2, 8, 10, 258, 260, 294, 296, 2864, 2866) -- 0-16, ABC anims("Gowned Female Patient", 2876, 2878, 2884, 2886) -- 0-8 anims("Stripped Female Patient", 834, 836, 842, 844) -- 0-16 anims("Stripped Female Patient 2", 834, 836, 842, 844) -- 0-16 anims("Stripped Female Patient 3", 834, 836, 842, 844) anims("Transparent Female Patient",3012, 3014, 3020, 3022, 3052, 3054, 3068, 3070) -- 0-8, ABC anims("Chewbacca Patient", 858, 860, 866, 868, 3526, 3528, 4150, 4152) anims("Elvis Patient", 978, 980, 986, 988, 3634, 3636, 4868, 4870) anims("Invisible Patient", 1642, 1644, 1840, 1842, 1796, 1798, 4192, 4194) anims("Alien Male Patient", 3598, 3600, 3606, 3608, 182, 184, 286, 288, 3626, 3628) -- remember, no "normal"-doors animation anims("Alien Female Patient", 3598, 3600, 3606, 3608, 258, 260, 294, 296, 3626, 3628) -- identical to male; however death animations differ anims("Doctor", 32, 34, 40, 42, 670, 672, nil, nil, 4750, 4752) anims("Surgeon", 2288, 2290, 2296, 2298) anims("Nurse", 1206, 1208, 1650, 1652, 3264, 3266, nil, nil, 3272, 3274) anims("Handyman", 1858, 1860, 1866, 1868, 3286, 3288, nil, nil, 3518, 3520) anims("Receptionist", 3668, 3670, 3676, 3678) -- Could do with door animations anims("VIP", 266, 268, 274, 276) anims("Inspector", 266, 268, 274, 276) anims("Grim Reaper", 994, 996, 1002, 1004) -- | Die Animations | -- | Name |FallE|RiseE|RiseE Hell|WingsE|HandsE|FlyE|ExtraE| Notes 2248 ----+--------------------------------+-----+-----+----------+-----+------+-----+------ die_anims("Standard Male Patient", 1682, 2434, 384, 2438, 2446, 2450) -- Always facing east or south die_anims("Alternate Male Patient", 1682, 2434, 3404, 2438, 2446, 2450) die_anims("Slack Male Patient", 1682, 2434, 384, 2438, 2446, 2450) -- TODO: Where is slack male transformation? Uses alternate male for now. die_anims("Transparent Male Patient", 4412, 2434, 384, 2438, 2446, 2450, 4416) -- Extra = Transformation die_anims("Standard Female Patient", 3116, 3208, 580, 3212, 3216, 3220) die_anims("Slack Female Patient", 4288, 3208, 580, 3212, 3216, 3220) die_anims("Transparent Female Patient",4420, 3208, 580, 3212, 3216, 3220, 4428) -- Extra = Transformation die_anims("Chewbacca Patient", 4182, 2434, 384, 2438, 2446, 2450, 1682) -- Only males die... (1222 is the Female) die_anims("Elvis Patient", 974, 2434, 384, 2438, 2446, 2450, 4186) -- Extra = Transformation die_anims("Invisible Patient", 4200, 2434, 384, 2438, 2446, 2450) die_anims("Alien Male Patient", 4882, 2434, 384, 2438, 2446, 2450) die_anims("Alien Female Patient", 4886, 3208, 580, 3212, 3216, 3220) -- The next fours sets belong together, but are done like this so we can use them on there own -- I also had difficulty in keeping them together, as the patient needs to on the floor -- for the duration of the earth quake before getting back up -- Shaking of fist could perhaps be used when waiting too long -- | Falling Animations | -- | Name |Anim| Notes ----+--------------------------------+-----+-----+-----+-----+------+------+ falling_anim("Standard Male Patient", 1682) falling_anim("Standard Female Patient", 3116) -- | On_ground Animations | -- | Name |Anim| Notes ----+--------------------------------+-----+-----+-----+-----+------+------+ on_ground_anim("Standard Male Patient", 1258) on_ground_anim("Standard Female Patient", 3116) -- | Get_up Animations | -- | Name |Anim| Notes ----+--------------------------------+-----+-----+-----+-----+------+------+ get_up_anim("Standard Male Patient", 384) get_up_anim("Standard Female Patient", 580) -- | Shake_fist Animations | -- | Name |Anim| Notes ----+--------------------------------+-----+-----+-----+-----+------+------+ shake_fist_anim("Standard Male Patient", 392) -- bloaty head patients lose head! -- | Vomit Animations | -- | Name |Anim | Notes ----+-----------------------------------+-----+ vomit_anim("Elvis Patient", 1034) vomit_anim("Standard Female Patient", 3184) vomit_anim("Standard Male Patient", 2056) vomit_anim("Alternate Male Patient", 4476) vomit_anim("Chewbacca Patient", 4138) vomit_anim("Invisible Patient", 4204) vomit_anim("Slack Male Patient", 4324) vomit_anim("Transparent Female Patient", 4452) vomit_anim("Transparent Male Patient", 4384) -- | Yawn Animations | -- | Name |Anim | Notes ----+-----------------------------------+-----+ yawn_anim("Standard Female Patient", 4864) yawn_anim("Standard Male Patient", 368) --yawn_anim("Alternate Male Patient", 2968) is this one the same as standard male? -- whichever one is used for male, if he wears a hat it will lift when he yawns -- | Foot tapping Animations | -- | Name |Anim | Notes ----+-----------------------------------+-----+ tap_foot_anim("Standard Female Patient", 4464) tap_foot_anim("Standard Male Patient", 2960) tap_foot_anim("Alternate Male Patient", 360) -- | Check watch Animations | -- | Name |Anim | Notes ----+-----------------------------------+-----+ check_watch_anim("Standard Female Patient", 4468) check_watch_anim("Standard Male Patient", 2964) check_watch_anim("Alternate Male Patient", 364) check_watch_anim("Slack Male Patient", 4060) -- | pee Animations | -- | Name |Anim | Notes ----+-----------------------------------+-----+ pee_anim("Elvis Patient", 970) pee_anim("Standard Female Patient", 4744) pee_anim("Slack Female Patient", 4744) pee_anim("Standard Male Patient", 2244) pee_anim("Alternate Male Patient", 4472) pee_anim("Slack Male Patient", 4328) pee_anim("Chewbacca Patient", 4178) pee_anim("Invisible Patient", 4208) pee_anim("Transparent Female Patient", 4852) pee_anim("Transparent Male Patient", 4848) -- | Available Moods | -- | Name |Icon|Priority|Show Always| Notes -----+-----------------+----+--------+-----------+ moods("reflexion", 4020, 5) -- Some icons should only appear when the player moods("cantfind", 4050, 3) -- hover over the humanoid moods("idea1", 2464, 10) -- Higher priority is more important. moods("idea2", 2466, 11) moods("idea3", 4044, 12) moods("staff_wait", 4054, 20) moods("tired", 3990, 30) moods("pay_rise", 4576, 40) moods("thirsty", 3986, 4) moods("cold", 3994, 0, true) -- These have no priority since moods("hot", 3988, 0, true) -- they will be shown when hovering moods("queue", 4568, 70) -- no matter what other priorities. moods("poo", 3996, 5) moods("sad_money", 4018, 50) moods("patient_wait", 5006, 40) moods("epidemy1", 4566, 55) moods("epidemy2", 4570, 55) moods("epidemy3", 4572, 55) moods("epidemy4", 4574, 55) moods("sad1", 3992, 40) moods("sad2", 4000, 41) moods("sad3", 4002, 42) moods("sad4", 4004, 43) moods("sad5", 4006, 44) moods("sad6", 4008, 45) moods("sad7", 4578, 46) moods("dead", 4046, 60) moods("cured", 4048, 60) moods("emergency", 3914, 50) moods("exit", 4052, 60) local anim_mgr = TheApp.animation_manager for anim in values(door_animations, "*.entering") do anim_mgr:setMarker(anim, 0, {-1, 0}, 3, {-1, 0}, 9, {0, 0}) end for anim in values(door_animations, "*.leaving") do anim_mgr:setMarker(anim, 1, {0, 0.4}, 4, {0, 0.4}, 7, {0, 0}, 11, {0, -1}) end for anim in values(door_animations, "*.entering_swing") do anim_mgr:setMarker(anim, 0, {-1, 0}, 8, {0, 0}) end for anim in values(door_animations, "*.leaving_swing") do anim_mgr:setMarker(anim, 0, {0.1, 0}, 9, {0, -1}) end --!param ... Arguments for base class constructor. function Humanoid:Humanoid(...) self:Entity(...) self.action_queue = {} self.last_move_direction = "east" self.attributes = {} self.attributes["warmth"] = 0.29 self.attributes["happiness"] = 1 -- patients should be not be fully well when they come to your hospital and if it is staff there is no harm done! self.attributes["health"] = math.random(80, 100) /100 self.active_moods = {} self.should_knock_on_doors = false self.speed = "normal" self.build_callbacks = {--[[set]]} self.remove_callbacks = {--[[set]]} end -- Save game compatibility function Humanoid:afterLoad(old, new) if old < 38 then -- should existing patients be updated and be getting really ill? -- adds the new variables for health icons self.attributes["health"] = math.random(60, 100) /100 end -- make sure female slack patients have the correct animation if old < 42 then if self.humanoid_class == "Slack Female Patient" then self.die_anims = die_animations["Slack Female Patient"] end end if old < 77 then self.has_vomitted = 0 end if old < 49 then self.has_fallen = 1 end if old < 61 then -- callbacks changed self.build_callbacks = {} self.remove_callbacks = {} if self.build_callback then self.build_callbacks[self.build_callback] = true self.build_callback = nil end if self.toilet_callback then self.build_callbacks[self.toilet_callback] = true self.toilet_callback = nil end end if old < 83 and self.humanoid_class == "Chewbacca Patient" then self.die_anims.extra_east = 1682 end for _, action in pairs(self.action_queue) do -- Sometimes actions not actual instances of HumanoidAction HumanoidAction.afterLoad(action, old, new) end Entity.afterLoad(self, old, new) end -- Function which is called when the user clicks on the `Humanoid`. --!param ui (GameUI) The UI which the user in question is using. --!param button (string) One of: "left", "middle", "right". function Humanoid:onClick(ui, button) if TheApp.config.debug then self:dump() end end function Humanoid:getRoom() return self.in_room or Entity.getRoom(self) end function Humanoid:dump() local name = "humanoid" if self.profile then name = self.profile.name end print("-----------------------------------") print("Clicked on ".. name, self) print("Class: ", self.humanoid_class) if self.humanoid_class == "Doctor" then print(string.format("Skills: (%.3f) Surgeon (%.3f) Psych (%.3f) Researcher (%.3f)", self.profile.skill or 0, self.profile.is_surgeon or 0, self.profile.is_psychiatrist or 0, self.profile.is_researcher or 0)) end print(string.format("Warmth: %.3f Happiness: %.3f Fatigue: %.3f Thirst: %.3f Toilet_Need: %.3f Health: %.3f", self.attributes["warmth"] or 0, self.attributes["happiness"] or 0, self.attributes["fatigue"] or 0, self.attributes["thirst"] or 0, self.attributes["toilet_need"] or 0, self.attributes["health"] or 0)) print("") print("Actions:") for i = 1, #self.action_queue do local action = self.action_queue[i] local flag = (action.must_happen and " must_happen" or " ") .. (action.todo_interrupt and " " or " ") if action.room_type then print(action.name .. " - " .. action.room_type .. flag) elseif action.object then print(action.name .. " - " .. action.object.object_type.id .. flag) elseif action.name == "walk" then print(action.name .. " - going to " .. action.x .. ":" .. action.y .. flag) elseif action.name == "queue" then local distance = action.current_bench_distance if distance == nil then distance = "nil" end local standing = "false" if action:isStanding() then standing = "true" end print(action.name .. " - Bench distance: " .. distance .. " Standing: " .. standing) else print(action.name .. flag) end end print("-----------------------------------") end -- Called when the humanoid is about to be removed from the world. function Humanoid:onDestroy() local x, y = self.tile_x, self.tile_y if x and y then local notify_object = self.world:getObjectToNotifyOfOccupants(x, y) if notify_object then notify_object:onOccupantChange(-1) end end -- Make absolutely sure there are no callbacks left on the humanoid. self:unregisterCallbacks() return Entity.onDestroy(self) end -- Set the `Hospital` which is responsible for treating or employing the -- `Humanoid`. In single player games, this has little effect, but it is very -- important in multiplayer games. --!param hospital (Hospital) The `Hospital` which should be responsible -- for the `Humanoid`. function Humanoid:setHospital(hospital) self.hospital = hospital if not hospital.is_in_world then self:despawn() end end --! Despawn the humanoid. function Humanoid:despawn() local spawn_point = self.world.spawn_points[math.random(1, #self.world.spawn_points)] self:setNextAction(SpawnAction("despawn", spawn_point):setMustHappen(true)) end -- Function to activate/deactivate moods of a humanoid. -- If mood_name is nil it is considered a refresh only. function Humanoid:setMood(mood_name, activate) if mood_name then if activate and activate ~= "deactivate" then if self.active_moods[mood_name] then return -- No use doing anything if it already exists. end self.active_moods[mood_name] = mood_icons[mood_name] else if not self.active_moods[mood_name] then return -- No use doing anything if the mood isn't there anyway. end self.active_moods[mood_name] = nil end end local new_mood = nil -- TODO: Make equal priorities cycle, or make all moods unique for _, value in pairs(self.active_moods) do if new_mood then -- There is a mood, check priorities. if new_mood.priority < value.priority then new_mood = value end else if not value.on_hover then new_mood = value end end end self:setMoodInfo(new_mood) end function Humanoid:setCallCompleted() if self.on_call then CallsDispatcher.onCheckpointCompleted(self.on_call) end end -- Is the given mood in the list of active moods. function Humanoid:isMoodActive(mood) for i, _ in pairs(self.active_moods) do if i == mood then return true end end return false end function Humanoid.getIdleAnimation(humanoid_class) return assert(walk_animations[humanoid_class], "Invalid humanoid class").idle_east end function Humanoid:getCurrentMood() if self.mood_info then return self.mood_info end end local function Humanoid_startAction(self) local action = self.action_queue[1] -- Handle an empty action queue in some way instead of crashing. if not action then -- if this is a patient that is going home, an empty -- action queue is not a problem if class.is(self, Patient) and self.going_home then return end ---- Empty action queue! ---- -- First find out if this humanoid is in a room. local room = self:getRoom() if room then room:makeHumanoidLeave(self) end -- Is it a member of staff, grim or a patient? if class.is(self, Staff) then self:queueAction(MeanderAction()) elseif class.is(self,GrimReaper) then self:queueAction(IdleAction()) else self:queueAction(SeekReceptionAction()) end -- Open the dialog of the humanoid. local ui = self.world.ui if class.is(self, Patient) then ui:addWindow(UIPatient(ui, self)) elseif class.is(self, Staff) then ui:addWindow(UIStaff(ui, self)) end -- Pause the game. self.world:setSpeed("Pause") -- Tell the player what just happened. self.world:gameLog("") self.world:gameLog("Empty action queue!") self.world:gameLog("Last action: " .. self.previous_action.name) self.world:gameLog(debug.traceback()) ui:addWindow(UIConfirmDialog(ui, "Sorry, a humanoid just had an empty action queue,".. " which means that he or she didn't know what to do next.".. " Please consult the command window for more detailed information. ".. "A dialog with ".. "the offending humanoid has been opened. ".. "Would you like him/her to leave the hospital?", --[[persistable:humanoid_leave_hospital]] function() self.world:gameLog("The humanoid was told to leave the hospital...") if class.is(self, Staff) then self:fire() else -- Set these variables to increase the likelihood of the humanoid managing to get out of the hospital. self.going_home = false self.hospital = self.world:getLocalPlayerHospital() self:goHome("kicked") end if TheApp.world:isCurrentSpeed("Pause") then TheApp.world:setSpeed(TheApp.world.prev_speed) end end, --[[persistable:humanoid_stay_in_hospital]] function() if TheApp.world:isCurrentSpeed("Pause") then TheApp.world:setSpeed(TheApp.world.prev_speed) end end )) action = self.action_queue[1] end ---- There is an action to start ---- -- Call the action start handler TheApp.humanoid_actions[action.name](action, self) if action == self.action_queue[1] and action.todo_interrupt then local high_priority = action.todo_interrupt == "high" action.todo_interrupt = nil local on_interrupt = action.on_interrupt if on_interrupt then action.on_interrupt = nil on_interrupt(action, self, high_priority) end end end function Humanoid:setNextAction(action, high_priority) -- Aim: Cleanly finish the current action (along with any subsequent actions -- which must happen), then replace all the remaining actions with the given -- one. local i = 1 local queue = self.action_queue local interrupted = false -- Skip over any actions which must happen while queue[i] and queue[i].must_happen do interrupted = true i = i + 1 end -- Remove actions which are no longer going to happen local done_set = {} for j = #queue, i, -1 do local removed = queue[j] queue[j] = nil if not removed then -- A bug (rare) that removed could be nil. -- but as it's being removed anyway...it could be ignored print("Warning: Action to be removed was nil") else if removed.on_remove then removed.on_remove(removed, self) end if removed.until_leave_queue and not done_set[removed.until_leave_queue] then removed.until_leave_queue:removeValue(self) done_set[removed.until_leave_queue] = true end if removed.object and removed.object:isReservedFor(self) then removed.object:removeReservedUser(self) end end end -- Add the new action to the queue queue[i] = action -- Interrupt the current action and queue other actions to be interrupted -- when they start. if interrupted then interrupted = queue[1] for j = 1, i - 1 do queue[j].todo_interrupt = high_priority and "high" or true end local on_interrupt = interrupted.on_interrupt if on_interrupt then interrupted.on_interrupt = nil on_interrupt(interrupted, self, high_priority or false) end else -- Start the action if it has become the current action Humanoid_startAction(self) end return self end function Humanoid:queueAction(action, pos) if pos then table.insert(self.action_queue, pos + 1, action) if pos == 0 then Humanoid_startAction(self) end else self.action_queue[#self.action_queue + 1] = action end return self end function Humanoid:finishAction(action) if action ~= nil then assert(action == self.action_queue[1], "Can only finish current action") end -- Save the previous action just a while longer. self.previous_action = self.action_queue[1] table.remove(self.action_queue, 1) Humanoid_startAction(self) end -- Check if the humanoid is running actions intended to leave the room, as indicated by the flag function Humanoid:isLeaving() return self.action_queue[1].is_leaving and true or false end -- Check if there is "is_leaving" action in the action queue function Humanoid:hasLeavingAction() for _, action in ipairs(self.action_queue) do if action.is_leaving then return true end end return false end function Humanoid:setType(humanoid_class) assert(walk_animations[humanoid_class], "Invalid humanoid class: " .. tostring(humanoid_class)) self.walk_anims = walk_animations[humanoid_class] self.door_anims = door_animations[humanoid_class] self.die_anims = die_animations[humanoid_class] self.falling_anim = falling_animations[humanoid_class] self.on_ground_anim = on_ground_animations[humanoid_class] self.get_up_anim = get_up_animations[humanoid_class] self.shake_fist_anim = shake_fist_animations[humanoid_class] self.vomit_anim = vomit_animations[humanoid_class] self.yawn_anim = yawn_animations[humanoid_class] self.tap_foot_anim = tap_foot_animations[humanoid_class] self.check_watch_anim = check_watch_animations[humanoid_class] self.pee_anim = pee_animations[humanoid_class] self.humanoid_class = humanoid_class if #self.action_queue == 0 then self:setNextAction(IdleAction()) end self.th:setPartialFlag(self.permanent_flags or 0, false) if humanoid_class == "Invisible Patient" then -- Invisible patients do not have very many pixels to hit, box works better self.permanent_flags = DrawFlags.BoundBoxHitTest else self.permanent_flags = nil end self.th:setPartialFlag(self.permanent_flags or 0) end -- Helper function for the common case of instructing a `Humanoid` to walk to -- a position on the map. Equivalent to calling `setNextAction` with a walk -- action. --!param tile_x (integer) The X-component of the Lua tile co-ordinates of the -- tile to walk to. --!param tile_y (integer) The Y-component of the Lua tile co-ordinates of the -- tile to walk to. --!param must_happen (boolean, nil) If true, then the walk action will not be -- interrupted. function Humanoid:walkTo(tile_x, tile_y, must_happen) self:setNextAction(WalkAction(tile_x, tile_y) :setMustHappen(not not must_happen)) end -- Stub functions for handling fatigue. These are overridden by the staff subclass, -- but also defined here, so we can just call it on any humanoid function Humanoid:tire(amount) end function Humanoid:wake(amount) end function Humanoid:updateSpeed() self.speed = "normal" end function Humanoid:handleRemovedObject(object) local replacement_action if self.humanoid_class and self.humanoid_class == "Receptionist" then replacement_action = MeanderAction() elseif object.object_type.id == "bench" or object.object_type.id == "drinks_machine" then replacement_action = IdleAction():setMustHappen(true) end for i, action in ipairs(self.action_queue) do if (action.name == "use_object" or action.name == "staff_reception") and action.object == object then if replacement_action then self:queueAction(replacement_action, i) end if i == 1 then local on_interrupt = action.on_interrupt action.on_interrupt = nil if on_interrupt then on_interrupt(action, self, true) end else table.remove(self.action_queue, i) self.associated_desk = nil -- NB: for the other case, this is already handled in the on_interrupt function end -- Are we in a queue? if self.action_queue[i + 1] and self.action_queue[i + 1].name == "queue" then self.action_queue[i + 1]:onChangeQueuePosition(self) end break end end end -- Adjusts one of the `Humanoid`'s attributes. --!param attribute (string) One of: "happiness", "thirst", "toilet_need", "warmth". --!param amount (number) This amount is added to the existing value for the attribute, -- and is then capped to be between 0 and 1. function Humanoid:changeAttribute(attribute, amount) -- Receptionist is always 100% happy if self.humanoid_class and self.humanoid_class == "Receptionist" and attribute == "happiness" then self.attributes[attribute] = 1 return true end if self.attributes[attribute] then self.attributes[attribute] = self.attributes[attribute] + amount if self.attributes[attribute] > 1 then self.attributes[attribute] = 1 elseif self.attributes[attribute] < 0 then self.attributes[attribute] = 0 end end end -- Check if it is cold or hot around the humanoid and increase/decrease the -- feeling of warmth accordingly. Returns whether the calling function should proceed. function Humanoid:tickDay() -- No use doing anything if we're going home if self.going_home then return false end local temperature = self.world.map.th:getCellTemperature(self.tile_x, self.tile_y) self.attributes.warmth = self.attributes.warmth * 0.75 + temperature * 0.25 -- If it is too hot or too cold, start to decrease happiness and -- show the corresponding icon. Otherwise we could get happier instead. local min_comfort_temp = 0.22 -- 11 degrees Celcius. local max_comfort_temp = 0.36 -- 18 degrees Celcius. local decrease_factor = 0.10 local increase_happiness = 0.005 if self.attributes["warmth"] and self.hospital then -- Cold: less than comfortable. if self.attributes["warmth"] < min_comfort_temp then self:changeAttribute("happiness", -decrease_factor * (min_comfort_temp - self.attributes["warmth"])) self:setMood("cold", "activate") -- Hot: More than comfortable. elseif self.attributes["warmth"] > max_comfort_temp then self:changeAttribute("happiness", -decrease_factor * (self.attributes["warmth"] - max_comfort_temp)) self:setMood("hot", "activate") -- Ideal: Not too cold or too warm. else self:changeAttribute("happiness", increase_happiness) self:setMood("cold", "deactivate") self:setMood("hot", "deactivate") end end return true end -- Helper function that finds out if there is an action queued to use the specified object function Humanoid:goingToUseObject(object_type) for _, action in ipairs(self.action_queue) do if action.object and action.object.object_type.id == object_type then return true end end return false end -- Registers a new build callback for this humanoid. --!param callback (function) The callback to call when a room has been built. function Humanoid:registerRoomBuildCallback(callback) if not self.build_callbacks[callback] then self.build_callbacks[callback] = true else self.world:gameLog("Warning: Trying to re-add room build callback (" .. tostring(callback) .. ") for humanoid (" .. tostring(self) .. ").") end end -- Unregisters a build callback for this humanoid. --!param callback (function) The callback to remove. function Humanoid:unregisterRoomBuildCallback(callback) if self.build_callbacks[callback] then self.build_callbacks[callback] = nil else self.world:gameLog("Warning: Trying to remove nonexistant room build callback (" .. tostring(callback) .. ") from humanoid (" .. tostring(self) .. ").") end end function Humanoid:notifyNewRoom(room) for callback, _ in pairs(self.build_callbacks) do callback(room) end end -- Registers a new remove callback for this humanoid. --!param callback (function) The callback to call when a room has been removed. function Humanoid:registerRoomRemoveCallback(callback) if not self.remove_callbacks[callback] then self.world:registerRoomRemoveCallback(callback) self.remove_callbacks[callback] = true else self.world:gameLog("Warning: Trying to re-add room remove callback (" .. tostring(callback) .. ") for humanoid (" .. tostring(self) .. ").") end end -- Unregisters a remove callback for this humanoid. --!param callback (function) The callback to remove. function Humanoid:unregisterRoomRemoveCallback(callback) if self.remove_callbacks[callback] then self.world:unregisterRoomRemoveCallback(callback) self.remove_callbacks[callback] = nil else self.world:gameLog("Warning: Trying to remove nonexistant room remove callback (" .. tostring(callback) .. ") from humanoid (" .. tostring(self) .. ").") end end -- Function called when a humanoid is sent away from the hospital to prevent -- further actions taken as a result of a callback function Humanoid:unregisterCallbacks() -- Remove callbacks for new rooms for cb, _ in pairs(self.build_callbacks) do self:unregisterRoomBuildCallback(cb) end -- Remove callbacks for removed rooms for cb, _ in pairs(self.remove_callbacks) do self:unregisterRoomRemoveCallback(cb) end -- Remove any message related to the humanoid. if self.message_callback then self:message_callback(true) self.message_callback = nil end end function Humanoid:getDrawingLayer() return 4 end CorsixTH-0.61/CorsixTH/Lua/entities/inspector.lua000066400000000000000000000040171321660673500217370ustar00rootroot00000000000000--[[ Copyright (c) 2011 William "sadger" Gatens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --[[ An `Inspector` is called to the hospital after an epidemic to issue a report]] class "Inspector" (Humanoid) ---@type Inspector local Inspector = _G["Inspector"] function Inspector:Inspector(...) self:Humanoid(...) self.hover_cursor = TheApp.gfx:loadMainCursor("default") self.has_been_announced = false end --[[ Labels the inspector as the "Health Inspector" ]] function Inspector:updateDynamicInfo(action_string) self:setDynamicInfo('text', {_S.dynamic_info.health_inspector}) end --[[ Sends the inspector home ]] function Inspector:goHome() if self.going_home then return end --Store a reference to the hospital last visited to send fax to self.last_hospital = self.hospital self:unregisterCallbacks() self.going_home = true self:despawn() end --[[ Called when the inspector has left the map ]] function Inspector:onDestroy() return Humanoid.onDestroy(self) end function Inspector:announce() self.world.ui:playAnnouncement("vip008.wav") end CorsixTH-0.61/CorsixTH/Lua/entities/machine.lua000066400000000000000000000342021321660673500213340ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" --! An `Object` which needs occasional repair (to prevent explosion). class "Machine" (Object) ---@type Machine local Machine = _G["Machine"] function Machine:Machine(world, object_type, x, y, direction, etc) self.total_usage = -1 -- Incremented in the constructor of Object. self:Object(world, object_type, x, y, direction, etc) if object_type.default_strength then -- Only for the main object. The slave doesn't need any strength local progress = world.ui.hospital.research.research_progress[object_type] self.strength = progress.start_strength end -- We actually don't want any dynamic info just yet self:clearDynamicInfo() -- Change hover cursor once the room has been finished. self.waiting_for_finalize = true -- Waiting until the room is completed (reset by new-room callback). local orientation = object_type.orientations[direction] local handyman_position = orientation.handyman_position if handyman_position then -- If there are many possible handyman tiles, choose one that is accessible from the use_position. if type(handyman_position[1]) == "table" then for _, position in ipairs(handyman_position) do local hx, hy = x + position[1], y + position[2] local ux, uy = x + orientation.use_position[1], y + orientation.use_position[2] if world.pathfinder:findDistance(hx, hy, ux, uy) then -- Also make sure the tile is not in another room or in the corridor. local room = world:getRoom(hx, hy) if room and room == self:getRoom() then self.handyman_position = {position[1], position[2]} break end end end else self.handyman_position = {handyman_position[1], handyman_position[2]} end else self.handyman_position = {orientation.use_position[1], orientation.use_position[2]} end end function Machine:notifyNewRoom(room) if self.waiting_for_finalize and room.objects[self] then self:finalize(room) self.waiting_for_finalize = false end end function Machine:setCrashedAnimation() self:setAnimation(self.object_type.crashed_animation) end --! Calculates the number of times the machine can be used before crashing (unless repaired first) function Machine:getRemainingUses() return self.strength - self.times_used end --! Set whether the smoke animation should be showing local function setSmoke(self, isSmoking) -- If turning smoke on for this machine if isSmoking then -- If there is no smoke animation for this machine, make one if not self.smokeInfo then self.smokeInfo = TH.animation() -- Note: Set the location of the smoke to that of the machine -- rather than setting the machine to the parent so that the smoke -- doesn't get hidden with the machine during use self.smokeInfo:setTile(self.th:getTile()) -- Always show the first smoke layer self.smokeInfo:setLayer(10, 2) -- tick to animate over all frames self.ticks = true end -- TODO: select the smoke icon based on the type of machine self.smokeInfo:setAnimation(self.world.anims, 3424) else -- Otherwise, turning smoke off -- If there is currently a smoke animation, remove it if self.smokeInfo then self.smokeInfo:setTile(nil) end self.smokeInfo = nil end end --! Call on machine use. Handles crashing the machine & queueing repairs function Machine:machineUsed(room) -- Do nothing if the room has already crashed if room.crashed then return end -- Update dynamic info (strength & times used) self:updateDynamicInfo() -- How many uses this machine has left until it explodes local threshold = self:getRemainingUses() -- Find a queued task for a handyman coming to repair this machine local taskIndex = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "repairing") -- Too late it is about to explode if threshold < 1 then -- Clean up any task of handyman coming to repair the machine self.hospital:removeHandymanTask(taskIndex, "repairing") -- Blow up the room room:crashRoom() self:setCrashedAnimation() -- No special cursor required when hovering over the crashed room self.hover_cursor = nil -- Clear dynamic info (tracks machine usage which is no longer required) self:clearDynamicInfo() -- Prevent the machine from smoking, it's now just a pile of rubble setSmoke(self, false) -- If we have the window for this machine open, close it local window = self.world.ui:getWindow(UIMachine) if window and window.machine == self then window:close() end -- Clear the icon showing a handyman is coming to repair the machine self:setRepairing(nil) return true -- Else if urgent repair needed elseif threshold < 4 then -- If the job of repairing the machine isn't queued, queue it now (higher priority) if taskIndex == -1 then local call = self.world.dispatcher:callForRepair(self, true, false, true) self.hospital:addHandymanTask(self, "repairing", 2, self.tile_x, self.tile_y, call) else -- Otherwise the task is already queued. Increase the priority to above that of machines with at least 4 uses left self.hospital:modifyHandymanTaskPriority(taskIndex, 2, "repairing") end -- Else if repair is needed, but not urgently elseif threshold < 6 then -- If the job of repairing the machine isn't queued, queue it now (low priority) if taskIndex == -1 then local call = self.world.dispatcher:callForRepair(self) self.hospital:addHandymanTask(self, "repairing", 1, self.tile_x, self.tile_y, call) end end -- Update whether smoke gets displayed for this machine (and if so, how much) self:calculateSmoke(room) end --! Calculates whether smoke gets displayed for this machine (and if so, how much) function Machine:calculateSmoke(room) -- Do nothing if the room has already crashed if room.crashed then return end -- How many uses this machine has left until it explodes local threshold = self:getRemainingUses() -- If now exploding, clear any smoke if threshold < 1 then setSmoke(self, false) -- Else if urgent repair needed elseif threshold < 4 then -- Display smoke, up to three animations per machine -- i.e. < 4 one plume, < 3 two plumes or < 2 three plumes of smoke setSmoke(self, true) -- turn on additional layers of the animation for extra smoke plumes, depending on how damaged the machine is if threshold < 3 then self.smokeInfo:setLayer(11, 2) end if threshold < 2 then self.smokeInfo:setLayer(12, 2) end end end function Machine:getRepairTile() local x = self.tile_x + self.handyman_position[1] local y = self.tile_y + self.handyman_position[2] return x, y end function Machine:createHandymanActions(handyman) local ux, uy = self:getRepairTile() local this_room = self:getRoom() local handyman_room = handyman:getRoom() assert(this_room, "machine should always in a room") self.repairing = handyman self:setRepairingMode() local --[[persistable:handyman_repair_after_use]] function repair_after_use() handyman:setCallCompleted() handyman:setDynamicInfoText("") self:machineRepaired(self:getRoom()) end local action = WalkAction(ux, uy):setIsEntering(this_room and true or false) local repair_action = UseObjectAction(self):setProlongedUsage(false) :setAfterUse(repair_after_use) repair_action.min_length = 20 if handyman_room and handyman_room ~= this_room then handyman:setNextAction(handyman_room:createLeaveAction()) handyman:queueAction(action) else handyman:setNextAction(action) end local meander_loop_callback = --[[persistable:handyman_meander_repair_loop_callback]] function() if not self.user then -- The machine is ready to be repaired. -- The following statement will finish the meander action in the handyman's -- action queue. handyman:finishAction() end -- Otherwise do nothing and let the meandering continue. end -- Before the actual repair action, insert a meander action to wait for the machine -- to become free for use. handyman:queueAction(MeanderAction():setLoopCallback(meander_loop_callback)) -- The last one is another walk action to the repair tile. If the handyman goes directly -- to repair it will simply complete in an instant. handyman:queueAction(action) handyman:queueAction(repair_action) CallsDispatcher.queueCallCheckpointAction(handyman) handyman:queueAction(AnswerCallAction()) handyman:setDynamicInfoText(_S.dynamic_info.staff.actions.going_to_repair :format(self.object_type.name)) end --! Replace this machine (make it pretend it's brand new) function Machine:machineReplaced() -- Reset usage stats self.total_usage = 0 self.times_used = 0 -- Update strength to match the current level of research for it self.strength = self.hospital.research.research_progress[self.object_type].start_strength -- Remove any queued repair jobs local index = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "repairing") if index ~= -1 then self.hospital:removeHandymanTask(index, "repairing") end -- Clear icon showing handyman is coming to repair the machine self:setRepairing(nil) -- Clear smoke setSmoke(self, false) end function Machine:machineRepaired(room) room.needs_repair = nil local str = self.strength if self.times_used/str > 0.55 then self.strength = str - 1 end self.times_used = 0 self:setRepairing(nil) setSmoke(self, false) local taskIndex = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "repairing") self.hospital:removeHandymanTask(taskIndex, "repairing") end --! Tells the machine to start showing the icon that it needs repair. --! also lock the room from patient entering --!param handyman The handyman heading to this machine. nil if repairing is finished function Machine:setRepairing(handyman) -- If mode is set to true manually through the dialog, boost the urgency despite of the strength local anim = {icon = 4564} -- The only icon for machinery local room = self:getRoom() self:setMoodInfo(handyman and anim or nil) room.needs_repair = handyman if handyman then self.ticks = true else self.ticks = self.object_type.ticks self.world.dispatcher:dropFromQueue(self) if not room.crashed then self:updateDynamicInfo(true) self:getRoom():tryAdvanceQueue() end end end function Machine:setRepairingMode(lock_room) if lock_room ~= nil then self.repairing_lock_room = lock_room end if self.repairing and self.repairing_lock_room then self:setRepairing(self.repairing) end end function Machine.slaveMixinClass(class_method_table) local slave_to_master, master_to_slave = Object.slaveMixinClass(class_method_table) master_to_slave("finalize") master_to_slave("setCrashedAnimation") slave_to_master("createRepairAction") slave_to_master("getRepairTile") return slave_to_master, master_to_slave end -- Currently used to make the hover cursor of the machine be special -- only if the room is active at the moment (e.g. not being edited) function Machine:finalize(room) if room.is_active then self.hover_cursor = TheApp.gfx:loadMainCursor("repair") self:updateDynamicInfo(true) else self:clearDynamicInfo() self.hover_cursor = nil end end function Machine:updateDynamicInfo(only_update) if not only_update then self.times_used = self.times_used + 1 self.total_usage = self.total_usage + 1 end if self.strength then self:setDynamicInfo("text", { self.object_type.name, _S.dynamic_info.object.strength:format(self.strength), _S.dynamic_info.object.times_used:format(self.times_used), }) end end function Machine:onClick(ui, button) local room = self:getRoom() if button == "left" and room.is_active then -- If the room is crashed is_active is false. ui:addWindow(UIMachine(ui, self, room)) else Object.onClick(self, ui, button) end end function Machine:onDestroy() local room = self:getRoom() if room then room.needs_repair = nil end local index = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "repairing") if index ~= -1 then self.hospital:removeHandymanTask(index, "repairing") end -- Stop this machine from smoking setSmoke(self, false) Object.onDestroy(self) end function Machine:afterLoad(old, new) if old < 15 then if self.object_type.id == "cardio" then -- Fix THOB value being wrong self.world.map.th:setCellFlags(self.tile_x, self.tile_y, { thob = self.object_type.thob }) end end if old < 54 then local room = self:getRoom() if room.crashed then local taskIndex = room.hospital:getIndexOfTask(self.tile_x, self.tile_y, "repairing") room.hospital:removeHandymanTask(taskIndex, "repairing") end end return Object.afterLoad(self, old, new) end function Machine:tick() -- Tick any smoke animation if self.smokeInfo then self.smokeInfo:tick() end return Object.tick(self) end -- Dummy callbacks for savegame compatibility local callbackNewRoom = --[[persistable:machine_build_callback]] function(room) end local repair_loop_callback = --[[persistable:handyman_repair_loop_callback]] function() end CorsixTH-0.61/CorsixTH/Lua/entities/object.lua000066400000000000000000000716311321660673500212050ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" --! An `Entity` which occupies at least a single map tile and does not move. class "Object" (Entity) ---@type Object local Object = _G["Object"] local orient_mirror = { north = "west", west = "north", east = "south", south = "east", } function Object:getDrawingLayer() return 4 end function Object:Object(world, object_type, x, y, direction, etc) local th = TH.animation() self:Entity(th) if etc == "map object" then if direction % 2 == 0 then direction = "north" else direction = "west" end end self.ticks = object_type.ticks self.object_type = object_type self.world = world self.hospital = world:getLocalPlayerHospital() self.user = false self.times_used = -1 -- Incremented in the call on the next line self:updateDynamicInfo() self:initOrientation(direction) self:setTile(x, y) end --! Initializes the footprint, finds out what to draw and checks for -- split animations. --!param direction The orientation in which the object is facing. function Object:initOrientation(direction) self.direction = direction local object_type = self.object_type local flags = self.init_anim_flags or 0 local anim = object_type.idle_animations[direction] if not anim then anim = object_type.idle_animations[orient_mirror[direction]] flags = 1 end local footprint = object_type.orientations footprint = footprint and footprint[direction] if footprint and footprint.early_list then flags = flags + 1024 end if footprint and footprint.list_bottom then flags = flags + 2048 end local rap = footprint and footprint.render_attach_position if rap and rap[1] and type(rap[1]) == "table" then self.split_anims = {self.th} self.split_anim_positions = rap self.th:setCrop(rap[1].column) for i = 2, #rap do local point = rap[i] local th = TH.animation() th:setCrop(point.column) th:setHitTestResult(self) th:setPosition(Map:WorldToScreen(1-point[1], 1-point[2])) self.split_anims[i] = th end else -- Make sure these variables aren't left behind. The object -- might just have been moved and rotated. self.split_anims = nil self.split_anim_positions = nil end if footprint and footprint.animation_offset then self:setPosition(unpack(footprint.animation_offset)) end footprint = footprint and footprint.footprint if footprint then self.footprint = footprint else self.footprint = nil end self:setAnimation(anim, flags) end --! Add methods to a class for creating and controlling a slave object function Object.slaveMixinClass(class_method_table) local name = class.name(class_method_table) local super = class.superclass(class_method_table) local super_constructor = super[class.name(super)] -- Constructor class_method_table[name] = function(self, world, object_type, x, y, direction, ...) super_constructor(self, world, object_type, x, y, direction, ...) if object_type.slave_id then local orientation = object_type.orientations orientation = orientation and orientation[direction] if orientation.slave_position then x = x + orientation.slave_position[1] y = y + orientation.slave_position[2] end self.slave = world:newObject(object_type.slave_id, x, y, direction, ...) self.slave.master = self end end -- Slave -> Master redirects local function slave_to_master(method) local super_method = super[method] class_method_table[method] = function(self, ...) local master = self.master if master then return master[method](master, ...) else return super_method(self, ...) end end end slave_to_master("onClick") slave_to_master("updateDynamicInfo") slave_to_master("getDynamicInfo") -- Master -> Slave notifications local function master_to_slave(method) local super_method = super[method] class_method_table[method] = function(self, ...) local slave = self.slave if slave then slave[method](slave, ...) end return super_method(self, ...) end end master_to_slave("initOrientation") class_method_table.onDestroy = function(self, ...) local slave = self.slave if slave then self.world:destroyEntity(slave) end return super.onDestroy(self, ...) end class_method_table.setTile = function(self, x, y) if self.slave then local dx, dy = 0, 0 local orientation = self.object_type.orientations orientation = orientation and orientation[self.direction] if orientation.slave_position then dx = orientation.slave_position[1] dy = orientation.slave_position[2] end if x then self.slave:setTile(x + dx, y + dy) else self.slave:setTile(x, y) end end return super.setTile(self, x, y) end return slave_to_master, master_to_slave end function Object:tick() if self.split_anims then if self.num_animation_ticks then for i = 2, #self.split_anims do local th = self.split_anims[i] for _ = 1, self.num_animation_ticks do th:tick() end end else for i = 2, #self.split_anims do self.split_anims[i]:tick() end end end return Entity.tick(self) end function Object:setPosition(x, y) if self.split_anims then -- The given position is for the primary tile, so position non-primary -- animations relative to the primary one. local bx, by = unpack(self.split_anim_positions[1]) for i, th in ipairs(self.split_anims) do local point = self.split_anim_positions[i] local dx, dy = Map:WorldToScreen(1-point[1]+bx, 1-point[2]+by) th:setPosition(x + dx, y + dy) end else self.th:setPosition(x, y) end return self end function Object:setAnimation(animation, flags) if self.split_anims then flags = (flags or 0) + DrawFlags.Crop if self.permanent_flags then flags = flags + self.permanent_flags end if animation ~= self.animation_idx or flags ~= self.animation_flags then self.animation_idx = animation self.animation_flags = flags local anims = self.world.anims for _, th in ipairs(self.split_anims) do th:setAnimation(anims, animation, flags) end end return self else return Entity.setAnimation(self, animation, flags) end end --! Get the primary tile which the object is attached to for rendering --[[! For objects which attach to a single tile for rendering, this method will return the X and Y Lua world co-ordinates of that tile. For objects which split their rendering over multiple tiles, one of them is arbitrarily designated as the primary tile, and its co-ordinates are returned. ]] function Object:getRenderAttachTile() local x, y = self.tile_x, self.tile_y local offset = self.object_type.orientations if x and offset then offset = offset[self.direction].render_attach_position if self.split_anims then offset = offset[1] end x = x + offset[1] y = y + offset[2] end return x, y end function Object:updateDynamicInfo() self.times_used = self.times_used + 1 local object = self.object_type if object.dynamic_info then self:setDynamicInfo("text", {object.name, "", _S.dynamic_info.object.times_used:format(self.times_used)}) end end function Object:getSecondaryUsageTile() local x, y = self.tile_x, self.tile_y local offset = self.object_type.orientations if offset then offset = offset[self.direction].use_position_secondary x = x + offset[1] y = y + offset[2] end return x, y end -- This function returns a list of all "only_passable" tiles belonging to an object. -- It must be overridden by objects which do not have a footprint, but walkable tiles (e.g. doors of any kind) function Object:getWalkableTiles() local tiles = {} for _, xy in ipairs(self.footprint) do if xy.only_passable then tiles[#tiles + 1] = { self.tile_x + xy[1], self.tile_y + xy[2] } end end return tiles end function Object:setTile(x, y) local function coordinatesAreInFootprint(object_footprint, xpos, ypos) for _, xy in ipairs(object_footprint) do if(xy[1] == xpos and xy[2] == ypos) then return true end end return false end local function isEmpty(table) for _, _ in pairs(table) do return false end return true end local function getComplementaryPassableFlag(passable_flag) if passable_flag == "travelNorth" or passable_flag == "travelSouth" then return passable_flag == "travelNorth" and "travelSouth" or "travelNorth" else return passable_flag == "travelEast" and "travelWest" or "travelEast" end end local function setPassableFlags(passable_flag, xpos, ypos, next_x, next_y, value) local flags1 = {} flags1[passable_flag] = value self.world.map.th:setCellFlags(xpos, ypos, flags1) local flags2 = {} flags2[getComplementaryPassableFlag(passable_flag)] = value self.world.map.th:setCellFlags(next_x, next_y, flags2) end local direction_parameters = { north = { x = 0, y = -1, buildable_flag = "buildableNorth", passable_flag = "travelNorth", needed_side = "need_north_side"}, east = { x = 1, y = 0, buildable_flag = "buildableEast", passable_flag = "travelEast", needed_side = "need_east_side"}, south = { x = 0, y = 1, buildable_flag = "buildableSouth", passable_flag = "travelSouth", needed_side = "need_south_side"}, west = { x = -1, y = 0, buildable_flag = "buildableWest", passable_flag = "travelWest", needed_side = "need_west_side"} } local direction = self.direction if self.object_type.thob == 50 and direction == "east" then direction = "west" end if self.tile_x ~= nil then self.world:removeObjectFromTile(self, self.tile_x, self.tile_y) if self.footprint then local map = self.world.map.th for _, xy in ipairs(self.footprint) do local xpos, ypos = self.tile_x + xy[1], self.tile_y + xy[2] if xy.only_side then if self.set_passable_flags then self.set_passable_flags = nil local par = direction_parameters[direction] local passableFlag, next_tile_x, next_tile_y = par.passable_flag, xpos + par.x, ypos + par.y setPassableFlags(passableFlag, xpos, ypos, next_tile_x, next_tile_y, true) end local flags_to_set= {} flags_to_set[direction_parameters[direction].buildable_flag] = true map:setCellFlags(xpos, ypos, flags_to_set) else local flags_to_set = {} for _, value in pairs(direction_parameters) do if coordinatesAreInFootprint(self.footprint, xy[1] + value.x, xy[2] + value.y) or xy.complete_cell or xy[value.needed_side] then flags_to_set[value.buildable_flag] = true end end if not isEmpty(flags_to_set) then map:setCellFlags(xpos, ypos, flags_to_set) end if not map:getCellFlags(xpos, ypos).passable then map:setCellFlags(xpos, ypos, { buildable = true, passable = true, }) else -- passable tiles can "belong" to multiple objects, so we have to check that if not self.world:isTilePartOfNearbyObject(xpos, ypos, 10) then -- assumption: no object defines a passable tile further than 10 tiles away from its origin map:setCellFlags(xpos, ypos, { buildable = true, }) end end end end end end local entity_map = self.world.entity_map -- Remove the reference to the object at it's previous coordinates if entity_map then entity_map:removeEntity(self.tile_x,self.tile_y, self) end -- Update the objects coordinates self.tile_x = x self.tile_y = y -- Update the entity map for the new position if entity_map then entity_map:addEntity(x,y,self) end if x then self.th:setDrawingLayer(self:getDrawingLayer()) self.th:setTile(self.world.map.th, self:getRenderAttachTile()) self.world:addObjectToTile(self, x, y) if self.footprint then local map = self.world.map.th local optional_found = false local room = self.world:getRoom(x, y) local roomId = room and room.id local next_tile_x, next_tile_y = x,y local passable_flag for _, xy in ipairs(self.footprint) do local change_flags = true local flags_to_set = {} local lx = x + xy[1] local ly = y + xy[2] local flags if xy.optional then if optional_found then -- An optional tile has been accepted, we don't need anymore such tiles. change_flags = false else flags = map:getCellFlags(lx, ly) local is_object_allowed = true if roomId and flags.roomId ~= roomId then is_object_allowed = false elseif xy.only_passable and not self.world.pathfinder:isReachableFromHospital(lx, ly) then is_object_allowed = false end if is_object_allowed then change_flags = true optional_found = true else change_flags = false end end end flags = map:getCellFlags(lx, ly) if xy.only_side then local par = direction_parameters[direction] flags_to_set[par["buildable_flag"]] = false passable_flag, next_tile_x, next_tile_y = par["passable_flag"], x + par["x"], y + par["y"] else for _, value in pairs(direction_parameters) do if coordinatesAreInFootprint(self.footprint, xy[1] + value["x"], xy[2] + value["y"]) or xy.complete_cell or xy[value["needed_side"]] then if map:getCellFlags(x, y, flags)[value["buildable_flag"]] == 0 then change_flags = false end flags_to_set[value["buildable_flag"]] = false end end end if change_flags then if not xy.only_side then map:setCellFlags(lx, ly, { buildable = false, passable = not not xy.only_passable, }) end if not isEmpty(flags_to_set) then map:setCellFlags(lx, ly, flags_to_set) end if xy.only_side then if map:getCellFlags(lx, ly)[passable_flag] == true then self.set_passable_flags = true setPassableFlags(passable_flag, lx, ly, next_tile_x, next_tile_y, false) end end end end end if self.split_anims then local map = self.world.map.th local pos = self.split_anim_positions for i = 2, #self.split_anims do self.split_anims[i]:setTile(map, x + pos[i][1], y + pos[i][2]) end end else self.th:setTile(nil) if self.split_anims then for i = 2, #self.split_anims do self.split_anims[i]:setTile(nil) end end end self.world:clearCaches() return self end -- Sets the user of this object to the given user. Note that if multiple_users_allowed -- is set to true for this object "user" will always be the last added user to this object. -- Please do not modify object.user directly. --!param user The user that is about to use this object. function Object:setUser(user) assert(user, "setUser: Expected a user, got nil") -- It makes no sense to add a nil value self.user = user if self.object_type.multiple_users_allowed then if not self.user_list then self.user_list = {} end table.insert(self.user_list, user) end self.th:makeInvisible() self:removeReservedUser(user) end -- Removes a user from the set of users if multiple_users_allowed is set to true for this -- object. Otherwise it sets "user" to nil. Please don't directly change the variable "user". function Object:removeUser(user) if self.object_type.multiple_users_allowed then if not user or not self.user_list then -- No user specified, empty the list; or the list didn't exist self.user_list = {} end local found = false for i, users in ipairs(self.user_list) do if users == user then table.remove(self.user_list, i) found = true break end end if not found then self.world:gameLog("Warning: Could not find a humanoid to remove from the user list") end if #self.user_list == 0 then -- No users left, make the object visible again. self.user = nil self.th:makeVisible() end else self.user = nil self.th:makeVisible() end end -- Adds a reserved user for this object. If multiple_users_allowed is set there can be -- many users reserving the object. reserved_for will then be the user who most recently -- reserved this object. function Object:addReservedUser(user) assert(user, "Expected a user, got nil") -- It makes no sense to add a nil value if self.object_type.multiple_users_allowed then if not self.reserved_for_list then self.reserved_for_list = {} end table.insert(self.reserved_for_list, user) else assert(not self.reserved_for or user ~= self.reserved_for, "Object already reserved for another user") end self.reserved_for = user end -- If multiple_users_allowed is true: Removes the user specified from this object's list of reserved users. -- If the argument is nil it is assumed that the list should be emptied. -- Note that if there are many humanoids reserving this object reserved_for might still be set after a -- call to this function. -- Otherwise: sets reserved_for to nil. function Object:removeReservedUser(user) if self.object_type.multiple_users_allowed then -- No user specified, delete the whole list; or no list found, make it. if not user or not self.reserved_for_list then self.reserved_for_list = {} end local found = false for i, users in ipairs(self.reserved_for_list) do if users == user then table.remove(self.reserved_for_list, i) found = true break end end if not found then self.world:gameLog("Warning: Could not find a humanoid to remove from the reserved user list") end if #self.reserved_for_list == 0 then -- No users left, set reserved_for to nil. self.reserved_for = nil end else self.reserved_for = nil end end -- Checks whether the object is reserved for the specified user. -- If the argument is nil a check for any reserved user is done. function Object:isReservedFor(user) if not user then if self.reserved_for_list then return #self.reserved_for_list > 0 else return not not self.reserved_for end end if self.reserved_for == user then -- "Normal" use return true end if self.object_type.multiple_users_allowed then if not self.reserved_for_list then self.reserved_for_list = {} end for _, users in ipairs(self.reserved_for_list) do if users == user then return true end end end return false end --[[ Called when the object is clicked !param ui (UI) The active ui. !param button (string) Which button was clicked. !param data (table) If some data should be retained after moving an object it is in this table. ]] function Object:onClick(ui, button, data) local window = ui:getWindow(UIEditRoom) if button == "right" or (button == "left" and window and window.in_pickup_mode) then -- This flag can be used if for example some things should only happen as long as the -- object is not picked up. How lovely when it is so logical. :-) local object_list = {{object = self.object_type, qty = 1, existing_object = self}} local room = self:getRoom() window = window and window.visible and window local direction = self.direction if (not room and window) or (room and not (window and window.room == room) and not self.object_type.corridor_object) or (not room and not self.object_type.corridor_object) then return end local fullscreen = ui:getWindow(UIFullscreen) if fullscreen then fullscreen:close() end if self.object_type.class == "Plant" or self.object_type.class == "Machine" then local taskType = "watering" if self.object_type.class == "Machine" then taskType = "repairing" end local index = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, taskType) if index ~= -1 then self.hospital:removeHandymanTask(index, taskType) end end self.picked_up = true self.world:destroyEntity(self) -- NB: the object has to be destroyed before updating/creating the window, -- or the blueprint will be wrong if not window then window = UIPlaceObjects(ui, object_list, false) -- don't pay for ui:addWindow(window) else window:stopPickupItems() window:addObjects(object_list, false) -- don't pay for window:selectObjectType(self.object_type) window:checkEnableConfirm() -- since we removed an object from the room, the requirements may not be met anymore end window:setOrientation(direction) self.orientation_before = self.direction ui:playSound("pickup.wav") end end function Object:eraseObject() self.world.map.th:eraseObjectTypes(self.tile_x, self.tile_y) end function Object:resetAnimation() self.world.map.th:setCellFlags(self.tile_x, self.tile_y, {thob = self.object_type.thob}) self.th:setDrawingLayer(self:getDrawingLayer()) self.th:setTile(self.world.map.th, self:getRenderAttachTile()) end function Object:onDestroy() local room = self:getRoom() if room then room.objects[self] = nil end if self.user_list then for _, user in ipairs(self.user_list) do user:handleRemovedObject(self) end self.user_list = {} elseif self.user then self.user:handleRemovedObject(self) end self.user = nil if self.reserved_for_list then for _, reserver in ipairs(self.reserved_for_list) do reserver:handleRemovedObject(self) end self.reserved_for_list = {} elseif self.reserved_for then self.reserved_for:handleRemovedObject(self) end self.reserved_for = nil Entity.onDestroy(self) -- Issue 1105 - rebuild wall travel and pathfinding on side object removal if self.object_type.class == "SideObject" then self.world.map.th:updatePathfinding() self.world:resetSideObjects() end end function Object:afterLoad(old, new) if old < 52 then self.hospital = self.world:getLocalPlayerHospital() end if old < 57 then if self.footprint and self.direction then local object_type = self.object_type local footprint = object_type.orientations footprint = footprint and footprint[self.direction] if footprint and footprint.animation_offset then self:setPosition(unpack(footprint.animation_offset)) end footprint = footprint and footprint.footprint self.footprint = footprint if object_type.class == "SideObject" then local flags = {buildable = true} self.world.map.th:setCellFlags(self.tile_x, self.tile_y, flags) end self:setTile(self.tile_x, self.tile_y) end end return Entity.afterLoad(self, old, new) end local all_pathfind_dirs = {[0] = true, [1] = true, [2] = true, [3] = true} function Object.processTypeDefinition(object_type) if object_type.id == "extinguisher" or object_type.id == "radiator" or object_type.id == "plant" or object_type.id == "reception_desk" or object_type.id == "bench" then object_type.count_category = object_type.id elseif object_type.id ~= "bin" and not object_type.corridor_object and not object_type.id:find("door") then object_type.count_category = "general" end if object_type.orientations then for _, details in pairs(object_type.orientations) do -- Set default values if not details.animation_offset then details.animation_offset = {0, 0} end if not details.render_attach_position then details.render_attach_position = {0, 0} end -- Set the usage position if details.use_position == "passable" then -- "passable" => the *first* passable tile in the footprint list for _, point in pairs(details.footprint) do if point.only_passable then details.use_position = {point[1], point[2]} break end end elseif not details.use_position then details.use_position = {0, 0} end -- Set handyman repair tile if object_type.default_strength and not details.handyman_position then details.handyman_position = details.use_position end -- Find the nearest solid tile in the footprint to the usage position local use_position = details.use_position local solid_near_use_position local solid_near_use_position_d = 10000 for _, point in pairs(details.footprint) do repeat if point.only_passable then break -- continue end local d = (point[1] - use_position[1])^2 + (point[2] - use_position[2])^2 if d >= solid_near_use_position_d then break -- continue end solid_near_use_position = point solid_near_use_position_d = d until true end if solid_near_use_position_d ~= 1 then details.pathfind_allowed_dirs = all_pathfind_dirs else if use_position[1] < solid_near_use_position[1] then details.pathfind_allowed_dirs = {[1] = true} elseif use_position[1] > solid_near_use_position[1] then details.pathfind_allowed_dirs = {[3] = true} elseif use_position[2] < solid_near_use_position[2] then details.pathfind_allowed_dirs = {[2] = true} else details.pathfind_allowed_dirs = {[0] = true} end end -- Adjust the footprint to make this tile the origin local solid_points = {} if solid_near_use_position then local x, y = unpack(solid_near_use_position) for _, point in pairs(details.footprint) do point[1] = point[1] - x point[2] = point[2] - y if not point.only_passable then solid_points[point[1] * 100 + point[2]] = point end end for _, key in ipairs({"use_position_secondary", "finish_use_position", "finish_use_position_secondary"}) do if details[key] then details[key][1] = details[key][1] - x details[key][2] = details[key][2] - y end end use_position[1] = use_position[1] - x use_position[2] = use_position[2] - y if details.slave_position then details.slave_position[1] = details.slave_position[1] - x details.slave_position[2] = details.slave_position[2] - y end local rx, ry = unpack(details.render_attach_position) if type(rx) == "table" then rx, ry = unpack(details.render_attach_position[1]) for _, point in ipairs(details.render_attach_position) do point.column = point[1] - point[2] point[1] = point[1] - x point[2] = point[2] - y end else details.render_attach_position[1] = rx - x details.render_attach_position[2] = ry - y end x, y = Map:WorldToScreen(rx + 1, ry + 1) details.animation_offset[1] = details.animation_offset[1] - x details.animation_offset[2] = details.animation_offset[2] - y end -- Find the region around the solid part of the footprint local adjacent_set = {} local adjacent_list = {} details.adjacent_to_solid_footprint = adjacent_list for _, point in pairs(solid_points) do for _, delta in ipairs({{-1, 0}, {0, -1}, {0, 1}, {1, 0}}) do local x = point[1] + delta[1] local y = point[2] + delta[2] local k2 = x * 100 + y if not solid_points[k2] and not adjacent_set[k2] then adjacent_set[k2] = {x, y} adjacent_list[#adjacent_list + 1] = adjacent_set[k2] end end end end end end CorsixTH-0.61/CorsixTH/Lua/entities/patient.lua000066400000000000000000001241161321660673500214000ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! A `Humanoid` who is in the hospital for diagnosis and/or treatment. class "Patient" (Humanoid) ---@type Patient local Patient = _G["Patient"] function Patient:Patient(...) self:Humanoid(...) self.hover_cursor = TheApp.gfx:loadMainCursor("patient") self.should_knock_on_doors = true self.treatment_history = {} self.going_home = false -- If set, the patient is going home. self.litter_countdown = nil -- If set, number of tiles to walk before attempting to drop litter. self.has_fallen = 1 self.has_vomitted = 0 self.action_string = "" self.cured = false self.infected = false -- To distinguish between actually being dead and having a nil hospital self.dead = false -- Is the patient reserved for a particular nurse when being vaccinated self.reserved_for = false self.vaccinated = false -- Has the patient been sent to the wrong room and needs redirecting self.needs_redirecting = false self.attempted_to_infect= false -- Is the patient about to be vaccinated? self.vaccination_candidate = false -- Has the patient passed reception? self.has_passed_reception = false -- Is the patient trying to get to the toilet? ("yes", "no", or "no-toilets") self.going_to_toilet = "no" -- Health history in entries 1..SIZE (may not all exist at first). The "last" -- entry indicates last written entry, "(last+1) % SIZE" is the oldest entry. -- The "size" entry holds the length of the array (that is, SIZE). -- Variable gets automatically initialized on first day. self.health_history = nil end function Patient:onClick(ui, button) if button == "left" then if self.message_callback then self:message_callback() else local hospital = self.hospital or self.world:getLocalPlayerHospital() local epidemic = hospital and hospital.epidemic if not epidemic or (not epidemic.coverup_in_progress or (not self.infected or self.marked_for_vaccination) and not epidemic.vaccination_mode_active) then ui:addWindow(UIPatient(ui, self)) end if epidemic and epidemic.coverup_in_progress and self.infected and not self.marked_for_vaccination and -- Prevent further vaccinations when the timer ends not epidemic.timer.closed then epidemic:markForVaccination(self) end end elseif self.user_of then -- The object we're using is made invisible, as the animation contains both -- the humanoid and the object. Hence send the click onto the object. self.user_of:onClick(ui, button) end Humanoid.onClick(self, ui, button) end function Patient:setDisease(disease) self.disease = disease disease.initPatient(self) self.diagnosed = false self.diagnosis_progress = 0 self.cure_rooms_visited = 0 -- Copy list of diagnosis rooms -- (patient may visit these for diagnosis, if they exist in the hospital). self.available_diagnosis_rooms = {} for i, room in ipairs(self.disease.diagnosis_rooms) do self.available_diagnosis_rooms[i] = room end -- Decide an insurance company, one out of four patients have one. -- TODO: May need some balancing, but it is roughly the same as in TH. local company = math.random(1,12) if company < 4 then self.insurance_company = company end -- Randomise thirst and the need to visit the loo soon. -- Alien patients do not have the needed animations for these things, so exclude them if not self.disease.only_emergency then self.attributes["thirst"] = math.random()*0.2 self.attributes["toilet_need"] = math.random()*0.2 end self:updateDynamicInfo() end function Patient:changeDisease(new_disease) assert(not self.diagnosed, "Cannot change the disease of a diagnosed patient") -- These assertions should hold until handling of visual diseases is implemented. assert(self.disease.contagious, "Cannot change the disease of a patient who has a non-contagious disease") assert(new_disease.contagious, "Cannot change a disease to a non-contagious disease") local visited_rooms = {} -- Add all diagnosis room for the old disease. for _, room in ipairs(self.disease.diagnosis_rooms) do visited_rooms[room] = true end -- Disable the rooms not yet visited by the patient. for _, room in ipairs(self.available_diagnosis_rooms) do visited_rooms[room] = false end -- 'visited_rooms' is now diagnosis rooms that the patient has visited for the old disease. -- Compute unvisited rooms for the new disease. self.available_diagnosis_rooms = {} for _, room in ipairs(new_disease.diagnosis_rooms) do if not visited_rooms[room] then self.available_diagnosis_rooms[#self.available_diagnosis_rooms + 1] = room end end self.disease = new_disease -- Finally, make the patient carry the new disease. end --! Mark patient as being diagnosed. function Patient:setDiagnosed() self.diagnosed = true self.treatment_history[#self.treatment_history + 1] = self.disease.name local window = self.world.ui:getWindow(UIPatient) if window and window.patient == self then window:updateInformation() end self:updateDynamicInfo() end -- Modifies the diagnosis progress of a patient. -- incrementValue can be either positive or negative. function Patient:modifyDiagnosisProgress(incrementValue) self.diagnosis_progress = math.min(self.hospital.policies["stop_procedure"], self.diagnosis_progress + incrementValue) self.diagnosis_progress = math.max(0.000, self.diagnosis_progress) local window = self.world.ui:getWindow(UIPatient) if window and window.patient == self then window:updateInformation() end self:updateDynamicInfo() end -- Updates the patients diagnostic progress based on the doctors skill -- called when they are done using a diagnosis room function Patient:completeDiagnosticStep(room) -- Base: depending on difficulty of disease as set in sam file -- tiredness reduces the chance of diagnosis if staff member is above 50% tired local multiplier = 1 local expertise = self.world.map.level_config.expertise local diagnosis_difficulty = expertise[self.disease.expertise_id].MaxDiagDiff / 1000 local diagnosis_base = 0.4 * (1 - diagnosis_difficulty) local diagnosis_bonus = 0.4 -- Did the staff member manage to leave the room before the patient had -- a chance to get diagnosed? Then use a default middle value. if room.staff_member then local fatigue = room.staff_member.attributes["fatigue"] or 0 -- Bonus: based on skill and attn to detail (with some randomness). -- additional bonus if the staff member is highly skilled / consultant -- tiredness reduces the chance of diagnosis if staff member is above 50% tired if room.staff_member.profile.skill >= 0.9 then multiplier = math.random(1, 5) * (1 - (fatigue -0.5)) else multiplier = 1 * (1 - (fatigue -0.5)) end local divisor = math.random(1, 3) local attn_detail = room.staff_member.profile.attention_to_detail / divisor local skill = room.staff_member.profile.skill / divisor diagnosis_bonus = (attn_detail + 0.4) * skill end self:modifyDiagnosisProgress(diagnosis_base + (diagnosis_bonus * multiplier)) end -- Sets the hospital for the patient - additionally removing them from a -- hospital if they already belong to one. For player hospitals, patients who -- are not debug or emergency patients are made to seek a reception desk. --!param hospital (Hospital): hospital to assign to patient function Patient:setHospital(hospital) if self.hospital then self.hospital:removePatient(self) end Humanoid.setHospital(self, hospital) if hospital.is_in_world and not self.is_debug and not self.is_emergency then self:setNextAction(SeekReceptionAction()) end hospital:addPatient(self) end --! Decide the ID of the disease or treatment that the patient is paying for. --!return (string or nil) Id of the disease or treatment, or nil if the Id could --! not be decided. function Patient:getTreatmentDiseaseId() if self.diagnosed then return self.disease.id else local room_info = self:getRoom() if not room_info then print("Warning: Trying to receive money for treated patient who is ".. "not in a room") return nil end room_info = room_info.room_info return "diag_" .. room_info.id end end --! Estimate the subjective perceived distortion between the price level the --! patient might expect considering the reputation and the cure effectiveness --! of a given treatment and the staff internal state. --!param casebook (table): casebook entry for the treatment. --!return (float) [-1, 1]. The smaller the value is, the more the patient --! considers the bill to be under-priced. The bigger the value is, the more --! the patient patient considers the bill to be over-priced. function Patient:getPriceDistortion(casebook) -- weights local happiness_weight = 0.1 local reputation_weight = 0.6 local effectiveness_weight = 0.3 -- map the different variables to [0-1] and merge them local reputation = casebook.reputation or self.hospital.reputation local effectiveness = casebook.cure_effectiveness local weighted_happiness = happiness_weight * self.attributes.happiness local weighted_reputation = reputation_weight * (reputation / 1000) local weighted_effectiveness = effectiveness_weight * (effectiveness / 100) local expected_price_level = weighted_happiness + weighted_reputation + weighted_effectiveness -- map to [0-1] local price_level = ((casebook.price - 0.5) / 3) * 2 return price_level - expected_price_level end --! Handle attempting to treat this patient --! --! If the treatment is effective the patient will be sent home, otherwise they --! will die. The patient may or may not agree to pay for the treatment --! depending on whether they consider the price reasonable. function Patient:treatDisease() local hospital = self.hospital hospital:receiveMoneyForTreatment(self) -- Either the patient is no longer sick, or he/she dies. if self:isTreatmentEffective() then self:cure() self.treatment_history[#self.treatment_history + 1] = _S.dynamic_info.patient.actions.cured self:goHome("cured") else self:die() end hospital:updatePercentages() hospital:paySupplierForDrug(self.disease.id) if self.is_emergency then hospital:checkEmergencyOver() end end --! Returns true if patient agrees to pay for the given treatment. --!param disease_id (string): The id of the disease to test function Patient:agreesToPay(disease_id) local casebook = self.hospital.disease_casebook[disease_id] local price_distortion = self:getPriceDistortion(casebook) local is_over_priced = price_distortion > self.hospital.over_priced_threshold return not (is_over_priced and math.random(1, 5) == 1) end --! Either the patient is cured, or he/she dies. --!return (boolean) True if cured, false if died. function Patient:isTreatmentEffective() local cure_chance = self.hospital.disease_casebook[self.disease.id].cure_effectiveness cure_chance = cure_chance * self.diagnosis_progress local die = self.die_anims and math.random(1, 100) > cure_chance return not die end --! Change patient internal state to "cured". function Patient:cure() self.cured = true self.infected = false self.attributes["health"] = 1 end function Patient:die() -- It may happen that this patient was just cured and then the room blew up. local hospital = self.hospital if hospital.num_deaths < 1 then self.world.ui.adviser:say(_A.information.first_death) end hospital:humanoidDeath(self) if not self.is_debug then local casebook = hospital.disease_casebook[self.disease.id] casebook.fatalities = casebook.fatalities + 1 end hospital:msgKilled() self:setMood("dead", "activate") self.world.ui:playSound("boo.wav") -- this sound is always heard self.going_home = true if self:getRoom() then self:queueAction(MeanderAction():setCount(1)) else self:setNextAction(MeanderAction():setCount(1)) end if self.is_emergency then hospital.emergency.killed_emergency_patients = hospital.emergency.killed_emergency_patients + 1 end self:queueAction(DieAction()) self:updateDynamicInfo(_S.dynamic_info.patient.actions.dying) end function Patient:canPeeOrPuke(current) return ((current.name == "walk" or current.name == "idle" or current.name == "seek_room" or current.name == "queue") and not self.going_home and self.world.map.th:getCellFlags(self.tile_x, self.tile_y).buildable) end --! Animations for when there is an earth quake function Patient:falling() local current = self.action_queue[1] current.keep_reserved = true if self.falling_anim and self:canPeeOrPuke(current) and self.has_fallen == 1 then self:setNextAction(FallingAction(), 0) self.has_fallen = 2 if self.has_fallen == 2 then self:setNextAction(OnGroundAction()) self.on_ground = true end if self.on_ground then self:setNextAction(GetUpAction()) end if current.name == "idle" or current.name == "walk" then self:queueAction({ name = current.name, x = current.x, y = current.y, must_happen = current.must_happen, is_entering = current.is_entering, }, 2) else self:queueAction({ name = current.name, room_type = current.room_type, message_sent = true, diagnosis_room = current.diagnosis_room, treatment_room = current.treatment_room, }, 2) end if current.on_interrupt then current.on_interrupt(current, self) else self:finishAction() end self.on_ground = false if math.random(1, 5) == 3 then self:shakeFist() end self:fallingAnnounce() self:changeAttribute("happiness", -0.05) -- falling makes you very unhappy else return end end function Patient:fallingAnnounce() local msg = { (_A.warnings.falling_1), (_A.warnings.falling_2), (_A.warnings.falling_3), (_A.warnings.falling_4), (_A.warnings.falling_5), (_A.warnings.falling_6), } if msg then self.world.ui.adviser:say(msg[math.random(1, #msg)]) end end --! Perform 'shake fist' action. function Patient:shakeFist() if self.shake_fist_anim then self:queueAction(ShakeFistAction(), 1) end end function Patient:vomit() local current = self.action_queue[1] --Only vomit under these conditions. Maybe I should add a vomit for patients in queues too? if self:canPeeOrPuke(current) and self.has_vomitted == 0 then self:queueAction(VomitAction(), 1) if current.name == "idle" or current.name == "walk" then self:queueAction({ name = current.name, x = current.x, y = current.y, must_happen = current.must_happen, is_entering = current.is_entering, }, 2) else self:queueAction({ name = current.name, room_type = current.room_type, message_sent = true, diagnosis_room = current.diagnosis_room, treatment_room = current.treatment_room, }, 2) end if current.on_interrupt then current.on_interrupt(current, self) else self:finishAction() end self.has_vomitted = self.has_vomitted + 1 self:changeAttribute("happiness", -0.02) -- being sick makes you unhappy else return end end function Patient:pee() local current = self.action_queue[1] --Only pee under these conditions. As with vomit, should they also pee if in a queue? if self:canPeeOrPuke(current) then self:queueAction(PeeAction(), 1) if current.name == "idle" or current.name == "walk" then self:queueAction({ name = current.name, x = current.x, y = current.y, must_happen = current.must_happen, is_entering = current.is_entering, }, 2) else self:queueAction({ name = current.name, room_type = current.room_type, message_sent = true, diagnosis_room = current.diagnosis_room, treatment_room = current.treatment_room, }, 2) end if current.on_interrupt then current.on_interrupt(current, self) else self:finishAction() end self:setMood("poo", "deactivate") self:changeAttribute("happiness", -0.02) -- not being able to find a loo and doing it in the corridor will make you sad too if not self.hospital.did_it_on_floor then self.hospital.did_it_on_floor = true self.world.ui.adviser:say(_A.warnings.people_did_it_on_the_floor) end else return end end function Patient:checkWatch() if self.check_watch_anim and not self.action_queue[1].is_leaving then self:queueAction(CheckWatchAction(), 0) end end function Patient:yawn() local action = self.action_queue[1] if self.yawn_anim and action.name == "idle" then self:queueAction(YawnAction(), 0) end end function Patient:tapFoot() if self.tap_foot_anim and not self.action_queue[1].is_leaving then self:queueAction(TapFootAction(), 0) end end --! Make the patient leave the hospital. This function also handles some --! statistics (number of cured/kicked out patients, etc.) --! The mood icon is updated accordingly. Reputation is impacted accordingly. --!param reason (string): the reason why the patient is sent home, which could be: --! -"cured": When the patient is cured. --! -"kicked": When the patient is kicked anyway, either manually, --! either when no treatment can be found for her/him, etc. --! -"over_priced": When the patient decided to leave because he/she believes --! the last treatment is over-priced. --param disease_id (string): When the reason is "over_priced" this is the --! id of the disease/diagnosis that the patient considered over_priced function Patient:goHome(reason, disease_id) local hosp = self.hospital if self.going_home then -- The patient should be going home already! Anything related to the hospital -- will not be updated correctly, but we still want to try to get the patient to go home. TheApp.world:gameLog("Warning: goHome called when the patient is already going home") self:despawn() return end if reason == "cured" then self:setMood("cured", "activate") self:changeAttribute("happiness", 0.8) self.world.ui:playSound("cheer.wav") -- This sound is always heard self.hospital:updateCuredCounts(self) self:updateDynamicInfo(_S.dynamic_info.patient.actions.cured) self.hospital:msgCured() elseif reason == "kicked" then self:setMood("exit", "activate") self.hospital:updateNotCuredCounts(self, reason) elseif reason == "over_priced" then self:setMood("sad_money", "activate") self:changeAttribute("happiness", -0.5) local treatment_name = self.hospital.disease_casebook[disease_id].disease.name self.world.ui.adviser:say(_A.warnings.patient_not_paying:format(treatment_name)) self.hospital:updateNotCuredCounts(self, reason) self:clearDynamicInfo() self:updateDynamicInfo(_S.dynamic_info.patient.actions.prices_too_high) else TheApp.world:gameLog("Error: unknown reason " .. reason .. "!") end hosp:updatePercentages() if self.is_debug then hosp:removeDebugPatient(self) end -- Remove any messages and/or callbacks related to the patient. self:unregisterCallbacks() self.going_home = true self.waiting = nil -- Remove any vaccination calls from patient if not self.vaccinated then self.world.dispatcher:dropFromQueue(self) end local room = self:getRoom() if room then room:makeHumanoidLeave(self) end self:despawn() end -- Despawns the patient and removes them from the hospital function Patient:despawn() self.hospital:removePatient(self) Humanoid.despawn(self) end -- This function handles changing of the different attributes of the patient. -- For example if thirst gets over a certain level (now: 0.7), the patient -- tries to find a drinks machine nearby. function Patient:tickDay() -- First of all it may happen that this patient is tired of waiting and goes home. if self.waiting then self.waiting = self.waiting - 1 if self.waiting == 0 then self:goHome("kicked") if self.diagnosed then -- No treatment rooms self:updateDynamicInfo(_S.dynamic_info.patient.actions.no_treatment_available) else -- No diagnosis rooms self:updateDynamicInfo(_S.dynamic_info.patient.actions.no_diagnoses_available) end elseif self.waiting == 10 then self:tapFoot() elseif self.waiting == 20 then self:yawn() elseif self.waiting == 30 then self:checkWatch() end if self.has_vomitted and self.has_vomitted > 0 then self.has_vomitted = 0 end end -- if patients are getting unhappy, then maybe we should see this! if self.attributes["happiness"] < 0.3 then self:setMood("sad7", "activate") else self:setMood("sad7", "deactivate") end -- Now call the parent function - it checks -- if we're outside the hospital or on our way home. if not Humanoid.tickDay(self) then return end -- Die before we poo or drink -- patient has been in the hospital for over 6 months and is still not well, so will become sad and will either get fed up and leave -- or stay in the hope that you will cure them before they die -- strange, but in TH happiness does not go down, even when close to death IMO that is wrong as you would be unhappy if you waited too long. -- TODO death animation for slack female is missing its head. For now the only option is for her to get fed up and leave -- this can be changed when the animation thing is resolved -- TODO clean up this block, nonmagical numbers if self.attributes["health"] >= 0.18 and self.attributes["health"] < 0.22 then self:setMood("sad2", "activate") self:changeAttribute("happiness", -0.0002) -- waiting too long will make you sad -- There is a 1/3 chance that the patient will get fed up and leave -- note, this is potentially run 10 ((0.22-0.18)/0.004) times, hence the 1/30 chance. if math.random(1,30) == 1 then self:updateDynamicInfo(_S.dynamic_info.patient.actions.fed_up) self:setMood("sad2", "deactivate") self:goHome("kicked") end elseif self.attributes["health"] >= 0.14 and self.attributes["health"] < 0.18 then self:setMood("sad2", "deactivate") self:setMood("sad3", "activate") -- now wishes they had gone to that other hospital elseif self.attributes["health"] >= 0.10 and self.attributes["health"] < 0.14 then self:setMood("sad3", "deactivate") self:setMood("sad4", "activate") -- starts to take a turn for the worse and is slipping away elseif self.attributes["health"] >= 0.06 and self.attributes["health"] < 0.10 then self:setMood("sad4", "deactivate") self:setMood("sad5", "activate") -- fading fast elseif self.attributes["health"] >= 0.01 and self.attributes["health"] < 0.06 then self:setMood("sad5", "deactivate") self:setMood("sad6", "activate") -- its not looking good elseif self.attributes["health"] > 0.00 and self.attributes["health"] < 0.01 then self.attributes["health"] = 0.0 -- is there time to say a prayer elseif self.attributes["health"] == 0.0 then -- people who are in a room should not die: -- 1. they are being cured in this moment. dying in the last few seconds -- before the cure makes only a subtle difference for gameplay -- 2. they will leave the room soon (toilets, diagnostics) and will die then if not self:getRoom() and not self.action_queue[1].is_leaving then self:setMood("sad6", "deactivate") self:die() end --dead people aren't thirsty return end -- Note: to avoid empty action queue error if the player spam clicks a patient at the same time as the day changes -- there is now an inbetween "neutal" stage. if self.has_fallen == 3 then self.has_fallen = 1 elseif self.has_fallen == 2 then self.has_fallen = 3 end -- Update health history. if not self.health_history then -- First day, initialize health history. self.health_history = {} self.health_history[1] = self.attributes["health"] self.health_history["last"] = 1 self.health_history["size"] = 20 else -- Update the health history, wrapping around the array. local last = self.health_history["last"] + 1 if last > self.health_history["size"] then last = 1 end self.health_history[last] = self.attributes["health"] self.health_history["last"] = last end -- Vomitings. if self.vomit_anim and not self:getRoom() and not self.action_queue[1].is_leaving and not self.action_queue[1].is_entering then --Nausea level is based on health then proximity to vomit is used as a multiplier. --Only a patient with a health value of less than 0.8 can be the initial vomiter, however :) local initialVomitMult = 0.002 --The initial chance of vomiting. local proximityVomitMult = 1.5 --The multiplier used when in proximity to vomit. local nausea = (1.0 - self.attributes["health"]) * initialVomitMult local foundVomit = {} local numVomit = 0 self.world:findObjectNear(self, "litter", 2, function(x, y) local litter = self.world:getObject(x, y, "litter") if not litter then return end if litter:vomitInducing() then local alreadyFound = false for i=1,numVomit do if foundVomit[i] == litter then alreadyFound = true break end end if not alreadyFound then numVomit = numVomit + 1 foundVomit[numVomit] = litter end end -- seeing litter will make you unhappy. If it is pee or puke it is worse if litter:anyLitter() then self:changeAttribute("happiness", -0.0002) else self:changeAttribute("happiness", -0.0004) end end) -- End of findObjectNear -- As we don't yet have rats, ratholes and dead rats the chances of vomitting are slim -- as a temp fix for this I have added 0.5 to the < nausea equation, -- this may want adjusting or removing when the other factors are in the game MarkL if self.attributes["health"] <= 0.8 or numVomit > 0 or self.attributes["happiness"] < 0.6 then nausea = nausea * ((numVomit+1) * proximityVomitMult) if math.random() < nausea + 0.5 then self:vomit() end end end -- It is nice to see plants, but dead plants make you unhappy self.world:findObjectNear(self, "plant", 2, function(x, y) local plant = self.world:getObject(x, y, "plant") if not plant then return end if plant:isPleasing() then self:changeAttribute("happiness", 0.0002) else self:changeAttribute("happiness", -0.0002) end end) -- It always makes you happy to see you are in safe place self.world:findObjectNear(self, "extinguisher", 2, function(x, y) self:changeAttribute("happiness", 0.0002) end) -- sitting makes you happy whilst standing and walking does not if self:goingToUseObject("bench") then self:changeAttribute("happiness", 0.00002) else self:changeAttribute("happiness", -0.00002) end -- Each tick both thirst, warmth and toilet_need changes and health decreases. self:changeAttribute("thirst", self.attributes["warmth"]*0.02+0.004*math.random() + 0.004) self:changeAttribute("health", - 0.004) if self.disease.more_loo_use then self:changeAttribute("toilet_need", 0.018*math.random() + 0.008) else self:changeAttribute("toilet_need", 0.006*math.random() + 0.002) end -- Maybe it's time to visit the loo? if self.attributes["toilet_need"] and self.attributes["toilet_need"] > 0.75 then if self.pee_anim and not self.action_queue[1].is_leaving and not self.action_queue[1].is_entering and not self.in_room then if math.random(1, 10) < 5 then self:pee() self:changeAttribute("toilet_need", -(0.5 + math.random()*0.15)) self.going_to_toilet = "no" else -- If waiting for user response, do not send to toilets, as this messes -- things up. if self.going_to_toilet == "no" and not self.waiting then self:setMood("poo", "activate") -- Check if any room exists. if not self.world:findRoomNear(self, "toilets") then self.going_to_toilet = "no-toilets" -- Gets reset when a new toilet is built (then, patient will try again). -- Otherwise we can queue the action, but only if not in any rooms right now. elseif not self:getRoom() and not self.action_queue[1].is_leaving and not self.action_queue[1].pee then self:setNextAction(SeekToiletsAction():setMustHappen(true)) self.going_to_toilet = "yes" end end end end end if self.disease.yawn and math.random(1, 10) == 5 then self:yawn() end -- If thirsty enough a soda would be nice if self.attributes["thirst"] and self.attributes["thirst"] > 0.7 then self:changeAttribute("happiness", -0.002) self:setMood("thirsty", "activate") -- If there's already an action to buy a drink in the action queue, or -- if we're going to the loo, do nothing if self:goingToUseObject("drinks_machine") or self.going_to_toilet ~= "no" then return end -- Don't check for a drinks machine too often if self.timeout and self.timeout > 0 then self.timeout = self.timeout - 1 return end -- The only allowed situations to grab a soda is when queueing -- or idling/walking in the corridors -- Also make sure the walk action when leaving a room has a chance to finish. if not self:getRoom() and not self.action_queue[1].is_leaving and not self.going_home then local machine, lx, ly = self.world: findObjectNear(self, "drinks_machine", 8) -- If no machine can be found, resume previous action and wait a -- while before trying again. To get a little randomness into the picture -- it's not certain we go for it right now. if not machine or not lx or not ly or math.random(1,10) < 3 then self.timeout = math.random(2,4) return end -- Callback function when the machine has been used local --[[persistable:patient_drinks_machine_after_use]] function after_use() self:changeAttribute("thirst", -(0.7 + math.random()*0.3)) self:changeAttribute("toilet_need", 0.05 + math.random()*0.05) self:setMood("thirsty", "deactivate") -- The patient might be kicked while buying a drink if not self.going_home then self.hospital:sellSodaToPatient(self) end -- The patient might also throw the can on the floor, bad patient! if math.random() < 0.6 then -- It will be dropped between 1 and 12 tiles away (litter bin catches 8 radius). self.litter_countdown = math.random(1, 12) end end -- If we are queueing, let the queue handle the situation. for _, current_action in ipairs(self.action_queue) do if current_action.name == "queue" then local callbacks = current_action.queue.callbacks[self] if callbacks then callbacks:onGetSoda(self, machine, lx, ly, after_use) return end end end -- Or, if walking or idling insert the needed actions in -- the beginning of the queue local current = self.action_queue[1] if current.name == "walk" or current.name == "idle" or current.name == "seek_room" then -- Go to the machine, use it, and then continue with -- whatever he/she was doing. current.keep_reserved = true self:queueAction(WalkAction(lx, ly):setMustHappen(true):disableTruncate(), 1) self:queueAction(UseObjectAction(machine):setAfterUse(after_use):setMustHappen(true), 2) machine:addReservedUser(self) -- Insert the old action again, a little differently depending on -- what the previous action was. if current.name == "idle" or current.name == "walk" then self:queueAction({ name = current.name, x = current.x, y = current.y, must_happen = current.must_happen, is_entering = current.is_entering, }, 3) -- If we were idling, also go away a little before continuing with -- that important action. if current.name == "idle" then self:queueAction(MeanderAction():setCount(1), 3) end else -- We were seeking a room, start that action from the beginning -- i.e. do not set the must_happen flag. self:queueAction({ name = current.name, room_type = current.room_type, message_sent = true, diagnosis_room = current.diagnosis_room, treatment_room = current.treatment_room, }, 3) end if current.on_interrupt then current.on_interrupt(current, self) else self:finishAction() end end end end -- If the patient is sitting on a bench or standing and queued, -- it may be a situation where he/she is not in the queue -- anymore, but should be. If this is the case for more than -- 2 ticks, go to reception if #self.action_queue > 1 and (self.action_queue[1].name == "use_object" or self.action_queue[1].name == "idle") and self.action_queue[2].name == "queue" then local found = false for _, humanoid in ipairs(self.action_queue[2].queue) do if humanoid == self then found = true break end end if not found then if not self.noqueue_ticks then self.noqueue_ticks = 1 elseif self.noqueue_ticks > 2 then self.world:gameLog("A patient has a queue action, but is not in the corresponding queue") self:setNextAction(SeekReceptionAction()) else self.noqueue_ticks = self.noqueue_ticks + 1 end else self.noqueue_ticks = 0 end end end function Patient:notifyNewRoom(room) Humanoid.notifyNewRoom(self, room) if self.going_to_toilet == "no-toilets" and room.room_info.id == "toilets" then self.going_to_toilet = "no" -- Patient can try again going to the loo. end end -- Called each time the patient moves to a new tile. function Patient:setTile(x, y) if not self.litter_countdown then -- If arrived at the first tile of the hospital, give patient some litter. if x and self.world.map.th:getCellFlags(x, y).buildable then -- Small hospitals are around 40-50 tiles. self.litter_countdown = math.random(20, 100) end elseif self.hospital and not self.going_home then self.litter_countdown = self.litter_countdown - 1 -- Is the patient about to drop some litter? if self.litter_countdown == 0 then if x and not self:getRoom() and not self.world:getObjects(x, y) and self.world.map.th:getCellFlags(x, y).buildable and (not self.world:findObjectNear(self, "bin", 8) or math.random() < 0.05) then -- Drop some litter! local trash = math.random(1, 4) local litter = self.world:newObject("litter", x, y) litter:setLitterType(trash, math.random(0, 1)) if not self.hospital.hospital_littered then self.hospital.hospital_littered = true -- A callout is only needed if there are no handymen employed if not self.hospital:hasStaffOfCategory("Handyman") then self.world.ui.adviser:say(_A.staff_advice.need_handyman_litter) end end end -- Always give new litter to drop. self.litter_countdown = math.random(30, 150) end end Humanoid.setTile(self, x, y) end -- As of now each time a bench is placed the world notifies all patients -- in the vicinity through this function. function Patient:notifyNewObject(id) -- If currently queueing it would be nice to be able to sit down. assert(id == "bench", "Can only handle benches at the moment") -- Look for a queue action and tell this patient to look for a bench -- if currently standing up. for _, action in ipairs(self.action_queue) do if action.name == "queue" then local callbacks = action.queue.callbacks[self] if callbacks then assert(action.done_init, "Queue action was not yet initialized") if action:isStanding() then callbacks:onChangeQueuePosition(self) break end end end end end function Patient:addToTreatmentHistory(room) local should_add = true -- Do not add facility rooms such as toilets to the treatment history. for i, _ in pairs(room.categories) do if i == "facilities" then should_add = false break end end if should_add then self.treatment_history[#self.treatment_history + 1] = room.name end end function Patient:updateDynamicInfo(action_string) -- Retain the old text if only an update is wanted, i.e. no new string is supplied. if action_string == nil then if self.action_string then action_string = self.action_string else action_string = "" end else self.action_string = action_string end local info = "" if self.going_home then self:setDynamicInfo('progress', nil) elseif self.diagnosed then if self.diagnosis_progress < 1.0 then -- The cure was guessed info = _S.dynamic_info.patient.guessed_diagnosis:format(self.disease.name) else info = _S.dynamic_info.patient.diagnosed:format(self.disease.name) end self:setDynamicInfo('progress', nil) else info = _S.dynamic_info.patient.diagnosis_progress -- TODO: If the policy is changed this info will not be changed until the next -- diagnosis facility has been visited. local divider = 1 if self.hospital then divider = self.hospital.policies["stop_procedure"] end if self.diagnosis_progress then self:setDynamicInfo('progress', math.min(1.0, self.diagnosis_progress / divider)) end end -- Set the centre line of dynamic info based on contagiousness, if appropriate local epidemic = self.hospital and self.hospital.epidemic if epidemic and epidemic.coverup_in_progress then if self.infected and not self.vaccinated then self:setDynamicInfo('text', {action_string, _S.dynamic_info.patient.actions.epidemic_contagious, info}) elseif self.vaccinated then self:setDynamicInfo('text', {action_string, _S.dynamic_info.patient.actions.epidemic_vaccinated, info}) end else self:setDynamicInfo('text', {action_string, "", info}) end end --[[ Update availability of a choice in message owned by this patient, if any !param choice (string) The choice that needs updating (currently "research" or "guess_cure"). ]] function Patient:updateMessage(choice) if self.message and self.message.choices then local enabled = false if choice == "research" then -- enable only if research department is built and a room in the treatment chain is undiscovered if self.hospital:hasRoomOfType("research") then local req = self.hospital:checkDiseaseRequirements(self.disease.id) if req then for _, room_id in ipairs(req.rooms) do local room = self.world.available_rooms[room_id] if room and self.hospital.undiscovered_rooms[room] then enabled = true break end end end end else -- if choice == "guess_cure" then -- TODO: implement end for _, c in ipairs(self.message.choices) do if c.choice == choice then c.enabled = enabled end end -- Update the fax window if it is open. local window = self.world.ui:getWindow(UIFax) if window then window:updateChoices() end end end --[[ If the patient is not a vaccination candidate then give them the arrow icon and candidate status ]] function Patient:giveVaccinationCandidateStatus() self:setMood("epidemy2","deactivate") self:setMood("epidemy3","activate") self.vaccination_candidate = true end --[[Remove the vaccination candidate icon and status from the patient]] function Patient:removeVaccinationCandidateStatus() if not self.vaccinated then self:setMood("epidemy3","deactivate") self:setMood("epidemy2","activate") self.vaccination_candidate = false end end function Patient:afterLoad(old, new) if old < 68 then if self.going_home then self.waiting = nil end end if old < 87 then if self.die_anims == nil then self.die_anims = {} end -- New humanoid animation: rise_hell_east: if self:isMalePatient() then if self.humanoid_class ~= "Alternate Male Patient" then self.die_anims.rise_hell_east = 384 else self.die_anims.rise_hell_east = 3404 end else self.die_anims.rise_hell_east = 580 end end if old < 108 then if self.going_to_toilet then -- Not easily decidable what the patient is doing here, -- removing a toilet while it's used is unlikely to happen. if self.world:findRoomNear(self, "toilets") then self.going_to_toilet = "yes" else self.going_to_toilet = "no-toilets" end else self.going_to_toilet = "no" end end Humanoid.afterLoad(self, old, new) end function Patient:isMalePatient() if string.find(self.humanoid_class,"Female") then return false elseif string.find(self.humanoid_class,"Male") then return true else local male_patient_classes = {["Chewbacca Patient"] = true,["Elvis Patient"] = true,["Invisible Patient"] = true} return male_patient_classes[self.humanoid_class] ~= nil end end -- Dummy callback for savegame compatibility local callbackNewRoom = --[[persistable:patient_toilet_build_callback]] function(room) end CorsixTH-0.61/CorsixTH/Lua/entities/staff.lua000066400000000000000000001052161321660673500210370ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! A Doctor, Nurse, Receptionist, Handyman, or Surgeon class "Staff" (Humanoid) ---@type Staff local Staff = _G["Staff"] --!param ... Arguments to base class constructor. function Staff:Staff(...) self:Humanoid(...) self.hover_cursor = TheApp.gfx:loadMainCursor("staff") self.parcelNr = 0 end function Staff:tickDay() Humanoid.tickDay(self) -- Pay too low --> unhappy -- Pay too high --> happy local fair_wage = self.profile:getFairWage() local wage = self.profile.wage self:changeAttribute("happiness", 0.05 * (wage - fair_wage) / (fair_wage ~= 0 and fair_wage or 1)) -- if you overwork your Dr's then there is a chance that they can go crazy -- when this happens, find him and get him to rest straight away if self.attributes["fatigue"] then if self.attributes["fatigue"] < 0.7 then if self:isResting() then self:setMood("tired", "deactivate") self:setCrazy(false) self:changeAttribute("happiness", 0.006) end else -- doctor can go crazy if they're too tired if self.humanoid_class == "Doctor" then if math.random(1, 300) == 1 then self:setCrazy(true) end end end -- Working when you should be taking a break will make you unhappy if self.attributes["fatigue"] >= self.hospital.policies["goto_staffroom"] then self:changeAttribute("happiness", -0.02) end -- You will also start to become unhappy as you become tired if self.attributes["fatigue"] >= 0.5 then self:changeAttribute("happiness", -0.01) end end -- It is nice to see plants, but dead plants make you unhappy self.world:findObjectNear(self, "plant", 2, function(x, y) local plant = self.world:getObject(x, y, "plant") if plant then if plant:isPleasing() then self:changeAttribute("happiness", 0.002) else self:changeAttribute("happiness", -0.003) end end end) -- It always makes you happy to see you are in safe place self.world:findObjectNear(self, "extinguisher", 2, function(x, y) self:changeAttribute("happiness", 0.002) end) -- Extra room items add to your happiness (some more than others) self.world:findObjectNear(self, "bin", 2, function(x, y) self:changeAttribute("happiness", 0.001) end) self.world:findObjectNear(self, "bookcase", 2, function(x, y) self:changeAttribute("happiness", 0.003) end) self.world:findObjectNear(self, "skeleton", 2, function(x, y) self:changeAttribute("happiness", 0.002) end) self.world:findObjectNear(self, "tv", 2, function(x, y) self:changeAttribute("happiness", 0.0005) end) -- Being able to rest from work and play the video game or pool will make you happy if (self.action_queue[1].name == "use_object" and self.action_queue[1].object.object_type.id == "video_game") then self:changeAttribute("happiness", 0.08) end if (self.action_queue[1].name == "use_object" and self.action_queue[1].object.object_type.id == "pool_table") then self:changeAttribute("happiness", 0.074) end if (self.action_queue[1].name == "use_object" and self.action_queue[1].object.object_type.id == "sofa") then self:changeAttribute("happiness", 0.05) end --TODO windows in your work space and a large space to work in add to happiness -- working in a small space makes you unhappy -- is self researcher in research room? if self:isResearching() then self.hospital.research:addResearchPoints(1550 + 1000*self.profile.skill) -- is self using lecture chair in a training room w/ a consultant? elseif self:isLearning() then -- Find values for how fast doctors learn the different professions from the level local level_config = self.world.map.level_config local surg_thres = 1 local psych_thres = 1 local res_thres = 1 if level_config and level_config.gbv.AbilityThreshold then surg_thres = level_config.gbv.AbilityThreshold[0] psych_thres = level_config.gbv.AbilityThreshold[1] res_thres = level_config.gbv.AbilityThreshold[2] end local general_thres = 200 -- general skill factor local room = self:getRoom() -- room_factor starts at 5 for a basic room w/ TrainingRate == 4 -- books add +1.5, skeles add +2.0, see TrainingRoom:calculateTrainingFactor local room_factor = room:getTrainingFactor() -- number of staff includes consultant local staff_count = room:getStaffCount() - 1 -- update general skill self:trainSkill(room.staff_member, "skill", general_thres, room_factor, staff_count) -- update special skill based on consultant skills if room.staff_member.profile.is_surgeon >= 1.0 then self:trainSkill(room.staff_member, "is_surgeon", surg_thres, room_factor, staff_count) end if room.staff_member.profile.is_psychiatrist >= 1.0 then self:trainSkill(room.staff_member, "is_psychiatrist", psych_thres, room_factor, staff_count) end if room.staff_member.profile.is_researcher >= 1.0 then self:trainSkill(room.staff_member, "is_researcher", res_thres, room_factor, staff_count) end end self:needsWorkStation() end function Staff:tick() Entity.tick(self) -- don't do anything if they're fired or picked up or have no hospital if self.fired or self.pickup or not self.hospital then return end -- check if we need to use the staff room and go there if so self:checkIfNeedRest() -- check if staff has been waiting too long for a raise and fire if so self:checkIfWaitedTooLong() -- Decide whether the staff member should be tiring and tire them if self:isTiring() then self:tire(0.000090) self:changeAttribute("happiness", -0.00002) end -- if doctor is in a room and they're using an object -- then their skill level will increase _slowly_ over time if self:isLearningOnTheJob() then self:updateSkill(self.humanoid_class, "skill", 0.000003) end -- Make staff members request a raise if they are very unhappy if not self.world.debug_disable_salary_raise and self.attributes["happiness"] < 0.1 then if not self.timer_until_raise then self.timer_until_raise = 200 end if self.timer_until_raise == 0 then self:requestRaise() else self.timer_until_raise = self.timer_until_raise - 1 end else self.timer_until_raise = nil end -- seeing litter will make you unhappy. If it is pee or puke it is worse self.world:findObjectNear(self, "litter", 2, function(x, y) local litter = self.world:getObject(x, y, "litter") if not litter then return end if litter:anyLitter() then self:changeAttribute("happiness", -0.0002) else self:changeAttribute("happiness", -0.0004) end end) self:updateSpeed() end function Staff:checkIfWaitedTooLong() if self.quitting_in then self.quitting_in = self.quitting_in - 1 if self.quitting_in < 0 then local rise_windows = self.world.ui:getWindows(UIStaffRise) local staff_rise_window = nil -- We go through all "requesting rise" windows open, to see if we need -- to close them when the person is fired. for i = 1, #rise_windows do if rise_windows[i].staff == self then staff_rise_window = rise_windows[i] break end end --If the hospital policy is set to automatically grant wage increases, grant the requested raise --instead of firing the staff member if self.hospital.policies.grant_wage_increase then local amount = math.floor(math.max(self.profile.wage * 1.1, (self.profile:getFairWage(self.world) + self.profile.wage) / 2) - self.profile.wage) self.quitting_in = nil self:setMood("pay_rise", "deactivate") self.world.ui.bottom_panel:removeMessage(self) self:increaseWage(amount) return end -- Plays the sack sound, but maybe it's good that you hear a staff member leaving? if staff_rise_window then staff_rise_window:fireStaff() else self:fire() end end end end function Staff:leaveAnnounce() if self.humanoid_class == "Nurse" then local nurse = {"sack004.wav", "sack005.wav",} self.world.ui:playAnnouncement(nurse[math.random(1, #nurse)]) elseif self.humanoid_class == "Doctor" then local doctor = {"sack001.wav", "sack002.wav", "sack003.wav",} self.world.ui:playAnnouncement(doctor[math.random(1, #doctor)]) elseif self.humanoid_class == "Receptionist" then local receptionist = {"sack007.wav", "sack008.wav",} self.world.ui:playAnnouncement(receptionist[math.random(1, #receptionist)]) elseif self.humanoid_class == "Handyman" then self.world.ui:playAnnouncement("sack006.wav") end end function Staff:isTiring() local tiring = true local room = self:getRoom() -- Being in a staff room is actually quite refreshing, as long as you're not a handyman watering plants. if room then if room.room_info.id == "staff_room" and not self.on_call then tiring = false end elseif self.humanoid_class ~= "Handyman" then tiring = false end -- Picking staff members up doesn't tire them, it just tires the player. if self.action_queue[1].name == "pickup" then tiring = false end return tiring end function Staff:isResting() local room = self:getRoom() if room and room.room_info.id == "staff_room" and not self.on_call then return true else return false end end -- Determine if the staff member should contribute to research function Staff:isResearching() local room = self:getRoom() -- Staff is in research lab, is qualified, and is not leaving the hospital. return room and room.room_info.id == "research" and self.humanoid_class == "Doctor" and self.profile.is_researcher >= 1.0 and self.hospital end -- Determine if the staff member should increase their skills function Staff:isLearning() local room = self:getRoom() -- Staff is in training room, the training room has a consultant, and is using lecture chair. return room and room.room_info.id == "training" and room.staff_member and self.action_queue[1].name == "use_object" and self.action_queue[1].object.object_type.id == "lecture_chair" end function Staff:isLearningOnTheJob() local room = self:getRoom() -- Staff is in room but not training room, staff room, or toilets; is a doctor; and is using something return room and room.room_info.id ~= "training" and room.room_info.id ~= "staff_room" and room.room_info.id ~= "toilets" and self.humanoid_class == "Doctor" and self.action_queue[1].name == "use_object" end function Staff:updateSkill(consultant, trait, amount) local old_profile = { is_junior = self.profile.is_junior, is_consultant = self.profile.is_consultant } -- don't push further when they are already at 100%+ if self.profile[trait] >= 1.0 then return end self.profile[trait] = self.profile[trait] + amount if self.profile[trait] >= 1.0 then self.profile[trait] = 1.0 local is = trait:match"^is_(.*)" if is == "surgeon" or is == "psychiatrist" or is == "researcher" then self.world.ui.adviser:say(_A.information.promotion_to_specialist:format(_S.staff_title[is])) end self:updateStaffTitle() end if trait == "skill" then self.profile:parseSkillLevel() if old_profile.is_junior and not self.profile.is_junior then self.world.ui.adviser:say(_A.information.promotion_to_doctor) self:updateStaffTitle() elseif not old_profile.is_consultant and self.profile.is_consultant then self.world.ui.adviser:say(_A.information.promotion_to_consultant) if self:getRoom().room_info.id == "training" then self:setNextAction(self:getRoom():createLeaveAction()) self:queueAction(MeanderAction()) self.last_room = nil end self:updateStaffTitle() end end end function Staff:trainSkill(consultant, trait, skill_thres, room_factor, staff_count) -- TODO: tweak/rework this algorithm -- TODO: possibly adjust based upon consultant's skill level? -- possibly based on attention to detail? local constant = 12.0 local staff_factor = constant + (staff_count-1)*(constant/6.0) local delta = room_factor / (skill_thres * staff_factor) self:updateSkill(consultant, trait, delta) end -- Immediately terminate the staff member's employment. function Staff:fire() if self.fired then return end -- Ensure that there are no inspection windows open for this staff member. local staff_window = self.world.ui:getWindow(UIStaff) if staff_window and staff_window.staff == self then staff_window:close() end self.hospital:spendMoney(self.profile.wage, _S.transactions.severance .. ": " .. self.profile.name) self.world.ui:playSound("sack.wav") self:setMood("exit", "activate") self:setDynamicInfoText(_S.dynamic_info.staff.actions.fired) self.fired = true self.hospital:changeReputation("kicked") self:despawn() self.hover_cursor = nil self.attributes["fatigue"] = nil self:leaveAnnounce() -- Unregister any build callbacks or messages. self:unregisterCallbacks() -- Update the staff management window if it is open. local window = self.world.ui:getWindow(UIStaffManagement) if window then window:updateStaffList(self) end end function Staff:die() self:despawn() if self.task then -- If the staff member had a task outstanding, unassigning them from that task. -- Tasks with no handyman assigned will be eligible for reassignment by the hospital. self.task.assignedHandyman = nil self.task = nil end -- Update the staff management screen (if present) accordingly local window = self.world.ui:getWindow(UIStaffManagement) if window then window:updateStaffList(self) end -- It may be that the staff member was fired just before dying (then self.hospital = nil) self.world.ui.hospital:humanoidDeath(self) end -- Despawns the staff member and removes them from the hospital function Staff:despawn() self.hospital:removeStaff(self) Humanoid.despawn(self) end -- Function which is called when the user clicks on the staff member. -- Responsible for opening a staff information dialog on left click and picking -- up the staff member on right click. --!param ui (GameUI) The UI which the user in question is using. --!param button (string) One of: "left", "middle", "right". function Staff:onClick(ui, button) if self.fired then return end if button == "left" then if self.message_callback then self:message_callback() else ui:addWindow(UIStaff(ui, self)) end elseif button == "right" then self.pickup = true self:setNextAction(PickupAction(ui), true) end Humanoid.onClick(self, ui, button) end function Staff:dump() print("-----------------------------------") if self.on_call then print("On call: ") CallsDispatcher.dumpCall(self.on_call) else print('On call: no') end print("Busy: ", (self:isIdle() and "idle" or "busy") .. (self.pickup and " and picked up" or '')) if self.going_to_staffroom then print("Going to staffroom") end if self.last_room then print("Last room: ", self.last_room.room_info.id .. '@' .. self.last_room.x ..','.. self.last_room.y) end if self.humanoid_class == "Handyman" then print("Cleaning: " .. self.attributes["cleaning"], "Watering: " .. self.attributes["watering"], "Repairing: " .. self.attributes["repairing"]) end Humanoid.dump(self) end function Staff:setProfile(profile) self.profile = profile self:setType(profile.humanoid_class) if self.humanoid_class ~= "Receptionist" then self.attributes["fatigue"] = 0 end -- The handyman has three additional attributes if self.humanoid_class == "Handyman" then self.attributes["cleaning"] = 0.333 self.attributes["watering"] = 0.333 self.attributes["repairing"] = 0.333 end self:setLayer(5, profile.layer5) self:updateStaffTitle() self.waiting_for_staffroom = false -- Staff member has detected there is no staff room to rest. end function Staff:needsWorkStation() if self.hospital and not self.hospital.receptionist_msg then if self.humanoid_class == "Receptionist" and self.world.object_counts["reception_desk"] == 0 then self.world.ui.adviser:say(_A.warnings.no_desk_4) self.hospital.receptionist_msg = true end end end function Staff:updateStaffTitle() local profile = self.profile if profile.humanoid_class == "Doctor" then local professions = "" local number = 0 if profile.is_junior then professions = _S.staff_title.junior .. " " number = 1 elseif profile.is_consultant then professions = _S.staff_title.consultant .. " " number = 1 end if profile.is_researcher >= 1.0 then professions = professions .. _S.staff_title.researcher .. " " number = number + 1 end if profile.is_surgeon >= 1.0 then professions = professions .. _S.staff_title.surgeon .. " " number = number + 1 end if profile.is_psychiatrist >= 1.0 then if number < 3 then professions = professions .. _S.staff_title.psychiatrist else professions = professions .. _S.dynamic_info.staff.psychiatrist_abbrev end end if professions == "" then professions = _S.staff_title.doctor end self.profile.profession = professions end end -- Function for increasing fatigue. Fatigue can be between 0 and 1, -- so amounts here should be appropriately small comma values. function Staff:tire(amount) self:changeAttribute("fatigue", amount) self:updateDynamicInfo() end -- Function for decreasing fatigue. Fatigue can be between 0 and 1, -- so amounts here should be appropriately small comma values. function Staff:wake(amount) self:changeAttribute("fatigue", -amount) self:updateDynamicInfo() end -- Update the movement speed function Staff:updateSpeed() local level = 2 if self.profile.is_junior then level = 1 elseif self.profile.is_consultant then level = 3 end local room = self:getRoom() if room and room.room_info.id == "training" then level = 1 elseif self.attributes["fatigue"] then if self.attributes["fatigue"] >= 0.8 then level = level - 2 elseif self.attributes["fatigue"] >= 0.7 then level = level - 1 end end if level >= 3 then self.speed = "fast" self.slow_animation = false elseif level <= 1 then self.speed = "slow" self.slow_animation = true else self.speed = "normal" self.slow_animation = false end end -- Check if fatigue is over a certain level (decided by the hospital policy), -- and go to the StaffRoom if it is. function Staff:checkIfNeedRest() if self.attributes["fatigue"] then -- Only when the staff member is very tired should the icon emerge. Unhappiness will also escalate if self.attributes["fatigue"] >= 0.7 then self:setMood("tired", "activate") self:changeAttribute("happiness", -0.0002) end -- If above the policy threshold, go to the staff room. if self.attributes["fatigue"] >= self.hospital.policies["goto_staffroom"] and not class.is(self:getRoom(), StaffRoom) then -- The staff will get unhappy if there is no staffroom to rest in. if self.waiting_for_staffroom then self:changeAttribute("happiness", -0.001) end local room = self:getRoom() if (self.staffroom_needed and ((room and not room:getPatient()) or not room)) or (room and self.going_to_staffroom) then if self.action_queue[1].name ~= "walk" and self.action_queue[1].name ~= "queue" then self.staffroom_needed = nil self:goToStaffRoom() end end -- Abort if waiting for a staffroom to be built, waiting for the patient to leave, -- already going to staffroom or being picked up if self.waiting_for_staffroom or self.staffroom_needed or self.going_to_staffroom or self.pickup then return end -- If no staff room exists, prevent further checks until one is built if not self.world:findRoomNear(self, "staff_room") then self.waiting_for_staffroom = true -- notifyNewRoom resets it when a staff room gets built. return end if self.humanoid_class ~= "Handyman" and room and room:getPatient() then -- If occupied by patient, staff will go to the staffroom after the patient left. self.staffroom_needed = true else if room then room.staff_leaving = true end self:goToStaffRoom() end end end end function Staff:notifyNewRoom(room) if room.room_info.id == "staff_room" then self.waiting_for_staffroom = false end end function Staff:setCrazy(crazy) if crazy then -- make doctor crazy if not self.is_crazy then self:setLayer(5, self.profile.layer5 + 4) self.world.ui.adviser:say(_A.warnings.doctor_crazy_overwork) self.is_crazy = true end else -- make doctor sane if self.is_crazy then if self.humanoid_class == "Doctor" and not (self.layers[5] < 5) then self:setLayer(5, self.layers[5] - 4) self.is_crazy = false end end end end function Staff:goToStaffRoom() -- NB: going_to_staffroom set if (and only if) a seek_staffroom action is in the action_queue self.going_to_staffroom = true if self.task then self.task.assignedHandyman = nil self.task = nil end local room = self:getRoom() if room then room.staff_leaving = true self:setNextAction(room:createLeaveAction()) self:queueAction(SeekStaffRoomAction()) else self:setNextAction(SeekStaffRoomAction()) end end function Staff:onPlaceInCorridor() local world = self.world local notify_object = world:getObjectToNotifyOfOccupants(self.tile_x, self.tile_y) if notify_object then notify_object:onOccupantChange(1) end -- Assume that if the player puts someone in the corridor they don't want the -- staff member to primarily return to his/her old room. self.last_room = nil if self.task then self.task.assignedHandyman = nil self.task = nil end self:updateSpeed() self:setNextAction(MeanderAction()) if self.humanoid_class == "Receptionist" then world:findObjectNear(self, "reception_desk", nil, function(x, y) local obj = world:getObject(x, y, "reception_desk") return obj and obj:occupy(self) end) end end -- Sets the Hospital for a member of staff --!param hospital (Hospital) - hospital to assign to member of staff function Staff:setHospital(hospital) Humanoid.setHospital(self, hospital) self:updateDynamicInfo() end local profile_attributes = { Psychiatrist = "is_psychiatrist", Surgeon = "is_surgeon", Researcher = "is_researcher", } -- Helper function to decide if Staff fulfills a criterion -- (one of "Doctor", "Nurse", "Psychiatrist", "Surgeon", "Researcher" and "Handyman") function Staff:fulfillsCriterion(criterion) local class = self.humanoid_class if criterion == "Doctor" then if class == "Doctor" or class == "Surgeon" then return true end elseif criterion == "Nurse" then if class == "Nurse" then return true end elseif criterion == "Psychiatrist" or criterion == "Surgeon" or criterion == "Researcher" then if self.profile and self.profile[profile_attributes[criterion]] == 1.0 then return true end elseif criterion == "Handyman" then if class == "Handyman" then return true end else error("Unknown criterion " .. criterion) end return false end function Staff:adviseWrongPersonForThisRoom() local room = self:getRoom() local room_name = room.room_info.long_name local required = (room.room_info.maximum_staff or room.room_info.required_staff) if self.humanoid_class == "Doctor" and room.room_info.id == "toilets" then self.world.ui.adviser:say(_A.staff_place_advice.doctors_cannot_work_in_room:format(room_name)) elseif self.humanoid_class == "Nurse" then self.world.ui.adviser:say(_A.staff_place_advice.nurses_cannot_work_in_room:format(room_name)) elseif self.humanoid_class == "Doctor" and not room.room_info.id == "training" then self.world.ui.adviser:say(_A.staff_place_advice.doctors_cannot_work_in_room:format(room_name)) elseif required then if required.Nurse then self.world.ui.adviser:say(_A.staff_place_advice.only_nurses_in_room:format(room_name)) elseif required.Surgeon then self.world.ui.adviser:say(_A.staff_place_advice.only_surgeons) elseif required.Researcher then self.world.ui.adviser:say(_A.staff_place_advice.only_researchers) elseif required.Psychiatrist then self.world.ui.adviser:say(_A.staff_place_advice.only_psychiatrists) else self.world.ui.adviser:say(_A.staff_place_advice.only_doctors_in_room:format(room_name)) end end end -- Function to decide if staff currently has nothing to do and can be called to a room where he's needed function Staff:isIdle() -- Make sure we're not in an undesired state if not self.hospital or self.fired then return false end if self.on_call or self.pickup or self.going_to_staffroom or self.staffroom_needed then return false end if self.waiting_on_other_staff then return false end -- if they are using a door they are not idle, this stops doctors being considered for staff selection -- for rooms they have not completely left yet, fixes issue 810 if self.user_of and self.user_of.object_type.id == "door" then return false end local room = self:getRoom() if room then -- in special rooms, never if room.room_info.id == "staff_room" or room.room_info.id == "research" or room.room_info.id == "training" then return false end -- For handyman - just check the on_call flag if self.humanoid_class == "Handyman" and not self.on_call then return true end -- For other staff... -- in regular rooms (diagnosis / treatment), if no patient is in sight -- or if the only one in sight is actually leaving. if self.humanoid_class ~= "Handyman" and room.door.queue:patientSize() == 0 and not self.action_queue[1].is_leaving and not (room.door.reserved_for and class.is(room.door.reserved_for, Patient)) then if room:getPatientCount() == 0 then return true else -- It might still be the case that the patient is leaving for _, action in ipairs(room:getPatient().action_queue) do if action.is_leaving then return true end end end end else -- In the corridor and not on_call (watering or going to room), the staff is free -- unless going back to the training room or research department. local x, y = self.action_queue[1].x, self.action_queue[1].y if x then room = self.world:getRoom(x, y) if room and (room.room_info.id == "training" or room.room_info.id == "research") then return false end end return true end return false end -- Makes the staff member request a raise of 10%, or a wage exactly inbetween their current and a fair one, whichever is more. function Staff:requestRaise() -- Is this the first time a member of staff is requesting a raise? -- Only show the help if the player is playing the campaign though if self.hospital and not self.hospital.has_seen_pay_rise and tonumber(self.world.map.level_number) then self.world.ui.adviser:say(_A.information.pay_rise) self.hospital.has_seen_pay_rise = true end -- Check whether there is already a request for raise. if not self:isMoodActive("pay_rise") then local amount = math.floor(math.max(self.profile.wage * 1.1, (self.profile:getFairWage() + self.profile.wage) / 2) - self.profile.wage) -- At least for now, staff are timid, and only ask for raises 1/5th of the time if math.random(1, 5) ~= 1 or amount <= 0 then self.timer_until_raise = nil return end self.quitting_in = 25*30 -- Time until the staff members quits anyway self:setMood("pay_rise", "activate") self.world.ui.bottom_panel:queueMessage("strike", amount, self) end end -- Increases the wage of the staff member. Also increases happiness and clears -- any request raise dialogs. --!param amount (integer) The amount, in game dollars per month, to increase -- the salary by. function Staff:increaseWage(amount) self.profile.wage = self.profile.wage + amount self.world.ui:playSound("cashreg.wav") if self.profile.wage > 2000 then -- What cap here? self.profile.wage = 2000 else -- If the cap has been reached this member of staff won't get unhappy -- ever again... self:changeAttribute("happiness", 0.99) self:setMood("pay_rise", "deactivate") end end function Staff:setDynamicInfoText(text) self.dynamic_text = text self:updateDynamicInfo() end function Staff:updateDynamicInfo() local fatigue_text = _S.dynamic_info.staff.tiredness if not self.attributes["fatigue"] then fatigue_text = nil end self:setDynamicInfo('text', { self.profile.profession, self.dynamic_text and self.dynamic_text or "", fatigue_text, }) self:setDynamicInfo('progress', self.attributes["fatigue"]) if self.hospital then self:setDynamicInfo('dividers', {self.hospital.policies["goto_staffroom"]}) end end function Staff:onDestroy() -- Remove any message related to the staff member. if self.message_callback then self:message_callback(true) self.message_callback = nil end Humanoid.onDestroy(self) end function Staff:afterLoad(old, new) -- Usage of going_to_staffroom flag changed slightly, so unset it. -- (should be safe even if someone is actually going to staffroom) if old < 27 then self.going_to_staffroom = nil end if old < 29 then -- Handymen could have "staffroom_needed" flag set due to a bug, unset it. if self.humanoid_class == "Handyman" then self.staffroom_needed = nil end end if old < 64 then -- added reference to world for staff profiles self.profile.world = self.world end if old < 68 then if self.attributes["fatigue"] then if self.attributes["fatigue"] >= self.hospital.policies["goto_staffroom"] then self:goToStaffRoom() self.going_to_staffroom = true end end end if old < 121 then if self.humanoid_class == "Handyman" and self.user_of and self.user_of.object_type.class == "Litter" then local litter = self.user_of local hospital = self.world:getHospital(litter.tile_x, litter.tile_y) local taskIndex = hospital:getIndexOfTask(litter.tile_x, litter.tile_y, "cleaning", litter) hospital:removeHandymanTask(taskIndex, "cleaning") end end Humanoid.afterLoad(self, old, new) end function Staff:interruptHandymanTask() self:setDynamicInfoText("") if self.on_call then self.on_call.assigned = nil self.on_call = nil end self.task = nil self:setNextAction(AnswerCallAction()) end function Staff:searchForHandymanTask() self.task = nil local nr = math.random() local task, task2, task3 local assignedTask = false if nr < self.attributes["cleaning"] then task, task2, task3 = "cleaning", "watering", "repairing" elseif nr < self.attributes["cleaning"] + self.attributes["watering"] then task, task2, task3 = "watering", "cleaning", "repairing" else task, task2, task3 = "repairing", "watering", "cleaning" end local index = self.hospital:searchForHandymanTask(self, task) if index ~= -1 then self:assignHandymanTask(index, task) assignedTask = true else if self.attributes[task] < 1 then local sum = self.attributes[task2] + self.attributes[task3] if math.random(0, math.floor(sum * 100)) > math.floor(self.attributes[task2] * 100) then task2, task3 = task3, task2 end index = self.hospital:searchForHandymanTask(self, task2) if index ~= -1 then self:assignHandymanTask(index, task2) assignedTask = true elseif self.attributes[task3] > 0 then index = self.hospital:searchForHandymanTask(self, task3) if index ~= -1 then self:assignHandymanTask(index, task3) assignedTask = true end end end end if assignedTask == false then -- Make sure that the handyman isn't meandering already. for _, action in ipairs(self.action_queue) do if action.name == "meander" then return false end end if self:getRoom() then self:queueAction(self:getRoom():createLeaveAction()) end self:queueAction(MeanderAction()) end return assignedTask end function Staff:assignHandymanTask(taskIndex, taskType) self.hospital:assignHandymanToTask(self, taskIndex, taskType) local task = self.hospital:getTaskObject(taskIndex, taskType) self.task = task if taskType == "cleaning" then if self:getRoom() then self:setNextAction(self:getRoom():createLeaveAction()) self:queueAction(WalkAction(task.tile_x, task.tile_y)) else self:setNextAction(WalkAction(task.tile_x, task.tile_y)) end self:queueAction(SweepFloorAction(task.object)) self:queueAction(AnswerCallAction()) else if task.call.dropped then task.call.dropped = nil end task.call.dispatcher:executeCall(task.call, self) end end function Staff:getDrawingLayer() if self.humanoid_class == "Receptionist" then local direction = self.last_move_direction if direction == "west" or direction == "north" then return 5 end return 3 else return 4 end end --! Estimate staff service quality based on skills, fatigue and happiness. --!return (float) between [0-1] indicating quality of the service. function Staff:getServiceQuality() -- weights local skill_weight = 0.7 local fatigue_weight = 0.2 local happiness_weight = 0.1 local weighted_skill = skill_weight * self.profile.skill local weighted_fatigue = fatigue_weight * self.attributes["fatigue"] local weighted_happiness = happiness_weight * self.attributes["happiness"] return weighted_skill + weighted_fatigue + weighted_happiness end -- Dummy callback for savegame compatibility local callbackNewRoom = --[[persistable:staff_build_staff_room_callback]] function(room) end CorsixTH-0.61/CorsixTH/Lua/entities/vip.lua000066400000000000000000000372721321660673500205400ustar00rootroot00000000000000--[[ Copyright (c) 2011 John Pirie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! A `Vip` who is in the hospital to evaluate the hospital and produce a report class "Vip" (Humanoid) ---@type Vip local Vip = _G["Vip"] function Vip:Vip(...) self:Humanoid(...) self.hover_cursor = TheApp.gfx:loadMainCursor("default") self.action_string = "" self.name="" self.announced = false self.vip_rating = 50 self.cash_reward = 0 self.enter_deaths = 0 self.enter_visitors = 0 self.enter_explosions = 0 self.enter_cures = 0 self.num_vomit_noninducing = 0 self.num_vomit_inducing = 0 self.found_vomit = {} self.num_visited_rooms = 0 self.room_eval = 0 self.waiting = 0 end -- Check if it is cold or hot around the vip and increase/decrease the -- feeling of warmth accordingly. Returns whether the calling function should proceed. function Vip:tickDay() -- for the vip if self.waiting then self.waiting = self.waiting - 1 if self.waiting == 0 then if #self.world.rooms == 0 then -- No rooms have been built yet self:goHome() end -- First let the previous room go. -- Include this when the VIP is supposed to block doors again. --[[if self.next_room then self.next_room.door.reserved_for = nil self.next_room:tryAdvanceQueue() end--]] -- Find out which next room to visit. self.next_room_no, self.next_room = next(self.world.rooms, self.next_room_no) -- Make sure that this room is active while self.next_room and not self.next_room.is_active do self.next_room_no, self.next_room = next(self.world.rooms, self.next_room_no) end self:setNextAction(VipGoToNextRoomAction()) end end self.world:findObjectNear(self, "litter", 8, function(x, y) local litter = self.world:getObject(x, y, "litter") if not litter then return end local alreadyFound = false for i=1, (self.num_vomit_noninducing + self.num_vomit_inducing) do if self.found_vomit[i] == litter then alreadyFound = true break end end self.found_vomit[(self.num_vomit_noninducing + self.num_vomit_inducing + 1)] = litter if not alreadyFound then if litter:anyLitter() then self.num_vomit_noninducing = self.num_vomit_noninducing + 1 else self.num_vomit_inducing = self.num_vomit_inducing + 1 end end end) return Humanoid.tickDay(self) end -- display the VIP name in the info box function Vip:updateDynamicInfo(action_string) self:setDynamicInfo('text', {self.name}) end function Vip:goHome() if self.going_home then return end self:unregisterCallbacks() -- Set the rating. self:setVIPRating() self.going_home = true -- save self.hospital so we can reference it in self:onDestroy self.last_hospital = self.hospital self:despawn() end -- called when the vip is out of the hospital grounds function Vip:onDestroy() local message -- First of all there's a special message if we're in free build mode. if self.world.free_build_mode then self.last_hospital.reputation = self.last_hospital.reputation + 20 message = { {text = _S.fax.vip_visit_result.vip_remarked_name:format(self.name)}, {text = _S.fax.vip_visit_result.remarks.free_build[math.random(1, 3)]}, choices = {{text = _S.fax.vip_visit_result.close_text, choice = "close"}} } elseif self.vip_rating == 1 then self.last_hospital.reputation = self.last_hospital.reputation - 10 message = { {text = _S.fax.vip_visit_result.vip_remarked_name:format(self.name)}, {text = _S.fax.vip_visit_result.remarks.very_bad[math.random(1, 3)]}, {text = _S.fax.vip_visit_result.rep_loss}, choices = {{text = _S.fax.vip_visit_result.close_text, choice = "close"}} } elseif self.vip_rating == 2 then self.last_hospital.reputation = self.last_hospital.reputation - 5 message = { {text = _S.fax.vip_visit_result.vip_remarked_name:format(self.name)}, {text = _S.fax.vip_visit_result.remarks.bad[math.random(1, 3)]}, {text = _S.fax.vip_visit_result.rep_loss}, choices = {{text = _S.fax.vip_visit_result.close_text, choice = "close"}} } elseif self.vip_rating == 3 then message = { {text = _S.fax.vip_visit_result.vip_remarked_name:format(self.name)}, {text = _S.fax.vip_visit_result.remarks.mediocre[math.random(1, 3)]}, choices = {{text = _S.fax.vip_visit_result.close_text, choice = "close"}} } elseif self.vip_rating == 4 then self.last_hospital:receiveMoney(self.cash_reward, _S.transactions.vip_award) self.last_hospital.reputation = self.last_hospital.reputation + (math.round(self.cash_reward / 100)) message = { {text = _S.fax.vip_visit_result.vip_remarked_name:format(self.name)}, {text = _S.fax.vip_visit_result.remarks.good[math.random(1, 3)]}, {text = _S.fax.vip_visit_result.rep_boost}, {text = _S.fax.vip_visit_result.cash_grant:format(self.cash_reward)}, choices = {{text = _S.fax.vip_visit_result.close_text, choice = "close"}} } else self.last_hospital:receiveMoney(self.cash_reward, _S.transactions.vip_award) self.last_hospital.reputation = self.last_hospital.reputation + (math.round(self.cash_reward / 100)) self.last_hospital.pleased_vips_ty = self.last_hospital.pleased_vips_ty + 1 if self.vip_rating == 5 then message = { {text = _S.fax.vip_visit_result.vip_remarked_name:format(self.name)}, {text = _S.fax.vip_visit_result.remarks.super[math.random(1, 3)]}, {text = _S.fax.vip_visit_result.rep_boost}, {text = _S.fax.vip_visit_result.cash_grant:format(self.cash_reward)}, choices = {{text = _S.fax.vip_visit_result.close_text, choice = "close"}} } end end self.world.ui.bottom_panel:queueMessage("report", message, nil, 24 * 20, 1) self.world:nextVip() return Humanoid.onDestroy(self) end function Vip:announce() local announcements = { "vip001.wav", "vip002.wav", "vip003.wav", "vip004.wav", "vip005.wav", } -- there is also vip008 which announces a man from the ministry self.world.ui:playAnnouncement(announcements[math.random(1, #announcements)]) if self.hospital.num_vips < 1 then self.world.ui.adviser:say(_A.information.initial_general_advice.first_VIP) else self.world.ui.adviser:say(_A.information.vip_arrived:format(self.name)) end end function Vip:evaluateRoom() -- Another room visited. self.num_visited_rooms = self.num_visited_rooms + 1 local room = self.next_room -- if the player is about to kill a live patient for research, lower their rating dramatically if room.room_info.id == "research" then if room:getPatient() then self.vip_rating = self.vip_rating - 80 end end if room.staff_member then if room.staff_member.profile.skill > 0.9 then self.room_eval = self.room_eval + 3 end if room.staff_member.attributes["fatigue"] then if room.staff_member.attributes["fatigue"] < 0.4 then self.room_eval = self.room_eval + 2 end end end -- evaluate the room we're currently looking at for object, _ in pairs(room.objects) do if object.object_type.id == "extinguisher" then self.room_eval = self.room_eval + 1 break elseif object.object_type.id == "plant" then if object.days_left >= 10 then self.room_eval = self.room_eval + 1 elseif object.days_left <= 3 then self.room_eval = self.room_eval - 1 end break end if object.strength then if object.strength > (object.object_type.default_strength / 2) then self.room_eval = self.room_eval + 1 else self.room_eval = self.room_eval - 3 end end end end function Vip:evaluateEmergency(success) -- Make sure that the VIP is still actually in the process of evaluation if not self.going_home then if success then self.vip_rating = self.vip_rating + 10 else self.vip_rating = self.vip_rating - 15 end end end function Vip:setVIPRating() --check the visitor to patient death ratio local death_diff = self.hospital.num_deaths - self.enter_deaths local visitors_diff = self.hospital.num_visitors - self.enter_visitors if death_diff == 0 then if visitors_diff ~= 0 then --if there have been no new patients, no +/- points self.vip_rating = self.vip_rating + 20 end else local death_ratio = visitors_diff / death_diff local death_ratio_rangemap = { {upper = 2, value = -20}, {upper = 4, value = -10}, {upper = 8, value = 0}, {upper = 12, value = 5}, {value = 10} } self.vip_rating = self.vip_rating + rangeMapLookup(death_ratio, death_ratio_rangemap) end --check the visitor to patient cure ratio local cure_diff = self.hospital.num_cured - self.enter_cures if cure_diff == 0 then if visitors_diff ~= 0 then --if there have been no new patients, no +/- points self.vip_rating = self.vip_rating - 10 end else local cure_ratio = visitors_diff / cure_diff local cure_ratio_rangemap = { {upper = 3, value = 20}, {upper = 6, value = 10}, {upper = 10, value = 0}, {upper = 12, value = -5}, {value = -10} } self.vip_rating = self.vip_rating + rangeMapLookup(cure_ratio, cure_ratio_rangemap) end -- check for the average queue length local sum_queue = 0 for _, room in pairs(self.world.rooms) do -- this can be nil if there has been a room explosion if room.door.queue then sum_queue = sum_queue + room.door.queue:size() end end if sum_queue == 0 then self.vip_rating = self.vip_rating + 6 else local queue_ratio = sum_queue / #self.world.rooms local queue_ratio_rangemap = { {upper = 2, value = 6}, {upper = 5, value = 3}, {upper = 9, value = 0}, {upper = 11, value = -3}, {value = -6} } self.vip_rating = self.vip_rating + rangeMapLookup(queue_ratio, queue_ratio_rangemap) end -- now we check for toilet presence local sum_toilets = 0 for _, room in pairs(self.world.rooms) do if room.room_info.id == "toilets" then for object, _ in pairs(room.objects) do if object.object_type.id == "loo" then sum_toilets = sum_toilets + 1 end end end end if sum_toilets == 0 then self.vip_rating = self.vip_rating - 6 else local patients_per_toilet = #self.hospital.patients / sum_toilets local toilet_ratio_rangemap = { {upper = 10, value = 6}, {upper = 20, value = 3}, {upper = 40, value = 0}, {value = -3} } self.vip_rating = self.vip_rating + rangeMapLookup(patients_per_toilet, toilet_ratio_rangemap) end -- check the levels of non-vomit inducing litter in the hospital local litter_ratio_rangemap = { {upper = 3, value = 4}, {upper = 5, value = 2}, {upper = 7, value = 0}, {upper = 8, value = -2}, {value = -4} } self.vip_rating = self.vip_rating + rangeMapLookup(self.num_vomit_noninducing, litter_ratio_rangemap) -- check the levels of vomit inducing litter in the hospital local inducing_ratio_rangemap = { {upper = 3, value = 8}, {upper = 5, value = 4}, {upper = 6, value = 0}, {upper = 7, value = -6}, {upper = 10, value = -12}, {upper = 12, value = -16}, {value = -20} } self.vip_rating = self.vip_rating + rangeMapLookup(self.num_vomit_inducing, inducing_ratio_rangemap) -- if there were explosions, hit the user hard if self.hospital.num_explosions ~= self.enter_explosions then self.vip_rating = self.vip_rating - 70 end -- check the vip heat level local heat_ratio_rangemap = { {upper = 0.20, value = -5}, {upper = 0.40, value = -3}, {upper = 0.60, value = 0}, {upper = 0.80, value = 3}, {value = 5} } self.vip_rating = self.vip_rating + rangeMapLookup(self.attributes["warmth"], heat_ratio_rangemap) -- check the seating : standing ratio of waiting patients -- find all the patients who are currently waiting around local sum_sitting, sum_standing = self.hospital:countSittingStanding() if sum_sitting >= sum_standing then self.vip_rating = self.vip_rating + 4 else self.vip_rating = self.vip_rating - 4 end -- check average patient thirst local avg_thirst = self.hospital:getAveragePatientAttribute("thirst", nil) if avg_thirst then local thirst_ratio_rangemap = { {upper = 0.20, value = -5}, {upper = 0.40, value = -1}, {upper = 0.60, value = 0}, {upper = 0.80, value = 1}, {value = 3} } self.vip_rating = self.vip_rating + rangeMapLookup(avg_thirst, thirst_ratio_rangemap) end if self.num_visited_rooms ~= 0 then self.vip_rating = self.vip_rating + self.room_eval / self.num_visited_rooms end -- check average patient happiness local avg_happiness = self.hospital:getAveragePatientAttribute("happiness", nil) if avg_happiness then local patients_happy_ratio_rangemap = { {upper = 0.20, value = -10}, {upper = 0.40, value = -5}, {upper = 0.60, value = 0}, {upper = 0.80, value = 5}, {value = 10} } self.vip_rating = self.vip_rating + rangeMapLookup(avg_happiness, patients_happy_ratio_rangemap) end -- check average staff happiness avg_happiness = self.hospital:getAverageStaffAttribute("happiness", nil) if avg_happiness then local staff_happy_ratio_rangemap = { {upper = 0.20, value = -10}, {upper = 0.40, value = -5}, {upper = 0.60, value = 0}, {upper = 0.80, value = 5}, {value = 10} } self.vip_rating = self.vip_rating + rangeMapLookup(avg_happiness, staff_happy_ratio_rangemap) end -- set the cash reward value if tonumber(self.world.map.level_number) then self.cash_reward = math.round(self.world.map.level_number * self.vip_rating) * 10 else -- custom level, it has no level number. Default back to one. self.cash_reward = math.round(1 * self.vip_rating) * 10 end if self.cash_reward > 2000 then self.cash_reward = 2000 end -- give the rating between 1 and 5 local rating_ratio_rangemap = { {upper = 25, value = 1}, {upper = 45, value = 2}, {upper = 65, value = 3}, {upper = 85, value = 4}, {value = 5} } self.vip_rating = rangeMapLookup(self.vip_rating, rating_ratio_rangemap) self.hospital.num_vips_ty = self.hospital.num_vips_ty + 1 end function Vip:afterLoad(old, new) if old < 50 then self.num_visited_rooms = 0 self:setNextAction(IdleAction()) self.waiting = 1 for _, room in pairs(self.world.rooms) do if room.door.reserved_for == self then room.door.reserved_for = nil room:tryAdvanceQueue() end end end if old < 79 then self.name = self.hospital.visitingVIP end Humanoid.afterLoad(self, old, new) end CorsixTH-0.61/CorsixTH/Lua/entity.lua000066400000000000000000000313721321660673500174250ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Abstraction for visible gameplay things which sit somewhere on the map. class "Entity" ---@type Entity local Entity = _G["Entity"] local TH = require "TH" function Entity:Entity(animation) self.th = animation self.layers = {} animation:setHitTestResult(self) self.ticks = true self.playing_sounds_in_random_sequence = false self.waiting_for_sound_effects_to_be_turned_on = false self.random_sound_sequence_parameters = nil self.dynamic_info = nil end --[[ This plays a sound "at" the entity, meaning the sound will not be played if the entity is off-screen, and the volume will be quieter the further the entity is from the center of the screen. If this is not what you want then use UI:playSound instead. !param name (string, integer) The filename or ordinal of the sound to play. !param played_callback (function) a optional parameter. !param played_callback_delay (integer) a optional milliseconds parameter. --]] function Entity:playSound(name, played_callback, played_callback_delay) if TheApp.config.play_sounds then TheApp.audio:playSound(name, self, false, played_callback, played_callback_delay) end end function Entity:setWaitingForSoundEffectsToBeTurnedOn(state) self.waiting_for_sound_effects_to_be_turned_on = true end --[[ Plays a sequence of related sounds at an entity while entity.playing_sounds_in_random_sequence = true. The silences between these sounds can either have randomly generated lengths between the min and max length parameters or they can all be a specified length by providing min and max tables with one value for the desired pause duration. !param name_pattern (String) example: LAVA00*.WAV !param min_silence_lengths (table) the desired mininum silences length for the different tick rates, [3] = Normal !param max_silence_lengths (table) the desired maximum silences length for the different tick rates, [3] = Normal !param num_silences (integer) how many different silence lengths should be used, this can be a nil parameter. -]] function Entity:playEntitySounds(name_pattern, min_silence_lengths, max_silence_lengths, num_silences) self.playing_sounds_in_random_sequence = true self.random_sound_sequence_parameters = {} self.random_sound_sequence_parameters["namePattern"] = name_pattern self.random_sound_sequence_parameters["minSilence"] = min_silence_lengths self.random_sound_sequence_parameters["maxSilence"] = max_silence_lengths self.random_sound_sequence_parameters["numSilences"] = num_silences TheApp.audio:playEntitySounds(name_pattern, self, min_silence_lengths, max_silence_lengths, num_silences) end --[[ Set which animation is used to give the entity a visual appearance. ! Until an entity is given an animation, it is invisible to the player. Note that some "animations" consist of a single frame, and hence the term animation is used both to mean things which are animated and things which are static. !param animation (integer) The ordinal into the main animation set !param flags (integer) A combination of zero or more drawing flags to control the use of alternative palettes, transparency, and other similar settings. See `THDF_` values in `th_gfx.h` for the possible bit values. ]] function Entity:setAnimation(animation, flags) flags = flags or 0 if self.permanent_flags then flags = flags + self.permanent_flags end if animation ~= self.animation_idx or flags ~= self.animation_flags then self.animation_idx = animation self.animation_flags = flags self.th:setAnimation(self.world.anims, animation, flags) end return self end --[[ Set the map tile which the entity is on. !param x (integer) The 1-based X co-ordinate of the tile. !param y (integer) The 1-based Y co-ordinate of the tile. ]] function Entity:setTile(x, y) if self.user_of then print("Warning: Entity tile changed while marked as using an object") end local entity_map = self.world.entity_map -- Remove the reference to the entity at it's previous coordinates if entity_map then entity_map:removeEntity(self.tile_x,self.tile_y, self) end self.tile_x = x self.tile_y = y self.th:setDrawingLayer(self:getDrawingLayer()) -- NB: (x, y) can be nil, in which case th:setTile expects all nil arguments self.th:setTile(x and self.world.map.th, x, y) if self.mood_info then self.mood_info:setParent(self.th) end -- Update the entity map for the new position if entity_map then entity_map:addEntity(x,y,self) end return self end function Entity:getRoom() if self.tile_x and self.tile_y then return self.world:getRoom(self.tile_x, self.tile_y) else return nil end end --[[ Set the pixel position of the entity within the current tile. !param x (integer) The 0-based X pixel offset from the default position. !param y (integer) The 0-based Y pixel offset from the default position. ]] function Entity:setPosition(x, y) self.th:setPosition(x, y) return self end --[[ Set the rate at which the entity pixel position changes !param x (integer) The X component of the speed in pixels per tick. !param y (integer) The Y component of the speed in pixels per tick. ]] function Entity:setSpeed(x, y) self.th:setSpeed(x, y) return self end --[[ Combined form of `setTile`, `setPosition`, and `setSpeed` !param tx (integer) The 1-based X co-ordinate of the tile. !param ty (integer) The 1-based Y co-ordinate of the tile. !param px (integer) The 0-based X pixel offset from the default position. !param py (integer) The 0-based Y pixel offset from the default position. !param sx (integer) The X component of the speed in pixels per tick. !param sy (integer) The Y component of the speed in pixels per tick. ]] function Entity:setTilePositionSpeed(tx, ty, px, py, sx, sy) self:setTile(tx, ty) self:setPosition(px or 0, py or 0) self:setSpeed(sx or 0, sy or 0) return self end -- Inner tick function that will skip every other tick when -- slow_animation is set. function Entity:_tick() if self.slow_animation then if not self.skip_next_tick then self.th:tick() end self.skip_next_tick = not self.skip_next_tick else self.th:tick() end end -- Function which is called once every tick, where a tick is the smallest unit -- of time in the game engine. Typically used to advance animations and similar -- recurring or long-duration tasks. function Entity:tick() if self.num_animation_ticks then for _ = 1, self.num_animation_ticks do self:_tick() end if self.num_animation_ticks == 1 then self.num_animation_ticks = nil end else self:_tick() end -- Tick any mood animation if self.mood_info then self.mood_info:tick() end local timer = self.timer_time if timer then timer = timer - 1 if timer == 0 then self.timer_time = nil local timer_function = self.timer_function self.timer_function = nil timer_function(self) else self.timer_time = timer end end end --[[ Set which parts of the animation to be displayed. ! Each animation is made up of 13 layers, and generally has several different options for each layer. In the animation viewer tool, multiple options can be toggled on for each layer, however here only one option may be selected per layer. !param layer (integer) The layer to set (1 through 13). !param id (integer) The option to display for the given layer. ]] function Entity:setLayer(layer, id) self.th:setLayer(layer, id) self.layers[layer] = id return self end --[[ Register a function (related to the entity) to be called at a later time. ! Each `Entity` can have a single timer associated with it, and due to this limit of one, it is almost always the case that the currently active humanoid action is the only thing which calls `setTimer`. If self.slow_animation is set then all timers will be doubled as animation length will be doubled. !param tick_count (integer) If 0, then `f` will be called during the entity's next `tick`. If 1, then `f` will be called one tick after that, and so on. !param f (function) Function which takes a single argument (the entity). ]] function Entity:setTimer(tick_count, f) self.timer_time = tick_count self.timer_function = f if self.slow_animation and tick_count then self.skip_next_tick = true self.timer_time = tick_count * 2 end end -- Used to set a mood icon over the entity. function Entity:setMoodInfo(new_mood) if new_mood then if not self.mood_info then self.mood_info = TH.animation() self.mood_info:setPosition(-1, -96) self.mood_info:setParent(self.th) end self.mood_info:setAnimation(self.world.anims, new_mood.icon) else if self.mood_info then self.mood_info:setTile(nil) end self.mood_info = false end end -- Function which is called when the entity is to be permanently removed from -- the world. function Entity:onDestroy() -- Clear any mood self:setMoodInfo() self:setTile(nil) self.world.dispatcher:dropFromQueue(self) -- Debug aid to check that there are no hanging references after the entity -- has been destroyed: --[[ self.gc_dummy = newproxy(true) -- undocumented Lua library function getmetatable(self.gc_dummy).__gc = function() print("Entity " .. tostring(self) .. " has been garbage collected.") end --]] if self.waiting_for_sound_effects_to_be_turned_on then TheApp.audio:entityNoLongerWaitingForSoundsToBeTurnedOn(self) end end -- Function which is called at the end of each ingame day. Should be used to -- implement behaviours which happen regularly, but not as frequently as to -- need them in `tick`. function Entity:tickDay() end --! Notify the entity of a new object. --!param id Name of the new object. -- TODO Currently only used for benches placed nearby. -- TODO Maybe also pass the object tile coordinates? function Entity:notifyNewObject(id) end --! Notify the entity that a new room was built. --!param room (Room) The new room. function Entity:notifyNewRoom(room) end function Entity:setMood(mood_name, activate) end -- Returns a table of hover info about an object. function Entity:getDynamicInfo() return self.dynamic_info end -- Sets a piece of Dynamic_info. -- type could be 'text', 'progress' or 'dividers' function Entity:setDynamicInfo(type, value) if not self.dynamic_info then self.dynamic_info = { text = nil, progress = nil, dividers = nil, } end self.dynamic_info[type] = value end -- Completely clears the dynamic info. function Entity:clearDynamicInfo() self.dynamic_info = nil end --! Stub to be extended in subclasses, if needed. function Entity:afterLoad(old, new) end function Entity:playAfterLoadSound() if self.random_sound_sequence_parameters then self.playing_sounds_in_random_sequence = true self:playEntitySounds(self.random_sound_sequence_parameters["namePattern"], self.random_sound_sequence_parameters["minSilence"], self.random_sound_sequence_parameters["maxSilence"], self.random_sound_sequence_parameters["numSilences"]) end end --! Stub to be extended in subclasses, if needed. function Entity:eraseObject() -- Give entity the chance to clear itself from the map before resetAnimation gets called. end function Entity:resetAnimation() self.th:setDrawingLayer(self:getDrawingLayer()) local x, y = self.tile_x, self.tile_y self.th:setTile(x and self.world.map.th, x, y) end --[[ Returns the drawing layer for this particular entity. Should be overriden in derived classes. The drawing layer specifies the order in which object are drawn in a tile (the object with the smallest layer is drawn first). Litter should have layer 0, side objects to the north layer 1, side objects to the west layer 2, normal objects should have layers between 3 and 7, east side object should have layer 8 and south side objects layer 9. ]] function Entity:getDrawingLayer() return 4 end CorsixTH-0.61/CorsixTH/Lua/entity_map.lua000066400000000000000000000173031321660673500202600ustar00rootroot00000000000000--[[ Copyright (c) 2013 William "sadger" Gatens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "EntityMap" ---@type EntityMap local EntityMap = _G["EntityMap"] --[[ An entity map is a structure is a 2 dimensional structure created from a game map, it has the same dimensions as the game map which intitalises it. The purpose of the map is store the location of entities in the map in real-time. Each cell given by an (x, y) coordinate is a table {humanoids ={}, objects = {}} where the tables of humanoids/objects may be empty or contain the entity/entities that currently exist in that tile.]] function EntityMap:EntityMap(map) self.width, self.height = map.th:size() self.entity_map = {} for x = 1, self.width do self.entity_map[x] = {} for y = 1, self.height do self.entity_map[x][y] = {humanoids = {}, objects = {}} end end end local function add_entity_to_table(entity, entity_table) entity_table[#entity_table+1] = entity end --[[Adds an entity to the entity map in a specified location @param x (integer) the x coordinate of the entity @param y (integer) the y coordinate of the entity @param entity (Entity) the entity to be added to the map in the (x, y) position]] function EntityMap:addEntity(x, y, entity) -- Distinguish between entity types and add them -- to the respective tables if x and y and entity then if class.is(entity, Humanoid) then add_entity_to_table(entity, self:getHumanoidsAtCoordinate(x, y)) elseif class.is(entity, Object) then add_entity_to_table(entity, self:getObjectsAtCoordinate(x, y)) end end end -- Iterates through a table and removes the given entity local function remove_entity_from_table(entity, entity_table) local index = -1 for i, h in ipairs(entity_table) do if h == entity then -- If we have found it no need to keep looking index = i break end end -- We haven't found it so we have incorrectly tried to remove it assert(index ~= -1, "Tried to remove entity from entity_map - entity not found") table.remove(entity_table, index) end --[[Removes an entity from the entity map given specified location Assumes the entity already has been added in the (x, y) position or will cause the assertion that the entity is contained in the map to fail. @param x (integer) the x coordinate of the entity @param y (integer) the y coordinate of the entity @param entity (Entity) the entity to be removed from the map in the (x, y) position ]] function EntityMap:removeEntity(x, y, entity) -- Distinguish between entity types to find table to remove from -- then remove the entity from that table if x and y and entity then if class.is(entity, Humanoid) then remove_entity_from_table(entity, self:getHumanoidsAtCoordinate(x, y)) elseif class.is(entity, Object) then remove_entity_from_table(entity, self:getObjectsAtCoordinate(x, y)) end end end --[[Returns a map of all entities (objects and humanoids) at a specified coordinate @param x (integer) the x coordinate to retrieve entities from @param y (integer) the y coordinate to retrieve entities from @return entity_map (table) containing the entities at the (x, y) coordinate ]] function EntityMap:getEntitiesAtCoordinate(x, y) --Add all the humanoids local entity_table = {} for _, obj in ipairs(self:getHumanoidsAtCoordinate(x, y)) do table.insert(entity_table, obj) end --Add all the objects for _, obj in ipairs(self:getObjectsAtCoordinate(x, y)) do table.insert(entity_table, obj) end return entity_table end --[[Returns a table of all humanoids at a specified coordinate @param x (integer) the x coordinate to retrieve entities from @param y (integer) the y coordinate to retrieve entities from @return (table) containing the humanoids at the (x, y) coordinate ]] function EntityMap:getHumanoidsAtCoordinate(x, y) assert(x >= 1 and y >= 1 and x <= self.width and y <= self.height, "Coordinate requested is out of the entity map bounds") return self.entity_map[x][y]["humanoids"] end --[[Returns a table of all objects at a specified coordinate @param x (integer) the x coordinate to retrieve entities from @param y (integer) the y coordinate to retrieve entities from @return (table) containing the objects at the (x, y) coordinate ]] function EntityMap:getObjectsAtCoordinate(x, y) assert(x >= 1 and y >= 1 and x <= self.width and y <= self.height, "Coordinate requested is out of the entity map bounds") return self.entity_map[x][y]["objects"] end --[[ Returns a map of coordinates {{x1, y1}, ... {xn, yn}} directly adjacent to a given (x, y) coordinate - no diagonals @param x (integer) the x coordinate to obtain adjacent tiles from @param y (integer) the y coordinate to obtain adjacent tiles from ]] function EntityMap:getAdjacentSquares(x, y) -- Table of coordinates {x=integer, y=integer} representing (x, y) coordinates local adjacent_squares = {} if x and y then if x ~= 1 then adjacent_squares[#adjacent_squares+1] = {x = x-1, y = y} end if x ~= self.width then adjacent_squares[#adjacent_squares+1] = {x = x+1, y = y} end if y ~= 1 then adjacent_squares[#adjacent_squares+1] = {x = x, y = y-1} end if y ~= self.height then adjacent_squares[#adjacent_squares+1] = {x = x, y = y+1} end end return adjacent_squares end --[[ Returns all the entities which are patients in the squares directly adjacent to the given (x, y) coordinate - diagonals are not considered @param x (integer) the x coordinate to obtain adjacent patients from @param y (integer) the y coordinate to obtain adjacent patients from ]] function EntityMap:getPatientsInAdjacentSquares(x, y) local adjacent_patients = {} for _, coord in ipairs(self:getAdjacentSquares(x, y)) do for _, humanoid in ipairs(self:getHumanoidsAtCoordinate(coord.x, coord.y)) do if class.is(humanoid, Patient) then adjacent_patients[#adjacent_patients + 1] = humanoid end end end return adjacent_patients end --[[ Returns a map of coordinates {{x1, y1}, ... {xn, yn}} of the adjacent tiles (no diagonals) which do not contain any humanoids or objects does NOT determine if the tile is reachable from (x, y) may even be in a different room @param x (integer) the x coordinate to obtain free tiles from @param y (integer) the y coordinate to obtain free tiles from ]] function EntityMap:getAdjacentFreeTiles(x, y) local adjacent_free_tiles = {} for _, coord in ipairs(self:getAdjacentSquares(x, y)) do local x_coord = coord['x'] local y_coord = coord['y'] -- If no object or humanoid occupy the til_coorde if #self:getHumanoidsAtCoordinate(x_coord, y_coord) == 0 and #self:getObjectsAtCoordinate(x_coord, y_coord) == 0 then adjacent_free_tiles[#adjacent_free_tiles+1] = coord end end return adjacent_free_tiles end CorsixTH-0.61/CorsixTH/Lua/epidemic.lua000066400000000000000000000663531321660673500176770ustar00rootroot00000000000000--[[ Copyright (c) 2013 William "sadger" Gatens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "Epidemic" ---@type Epidemic local Epidemic = _G["Epidemic"] --[[Manages the epidemics that occur in hospitals. Generally, any epidemic logic that happens outside this class will call functions contained here.]] function Epidemic:Epidemic(hospital, contagious_patient) self.hospital = hospital self.world = self.hospital.world self.infected_patients = {} -- The contagious disease the epidemic is based around self.disease = contagious_patient.disease -- Can the epidemic be revealed to the player self.ready_to_reveal = false -- Is the epidemic revealed to the player? self.revealed = false -- Various values for the different outcomes - used when result fax is sent self.declare_fine = 0 self.reputation_hit = 0 self.coverup_fine = 0 self.compensation = 0 -- Is the epidemic bad enough to deserve the whole hospital to be evacuated self.will_be_evacuated = false -- Fax sent when the result of the cover up is revealed to the player self.cover_up_result_fax = {} -- Set if the user choses the cover up option instead of declaring self.coverup_in_progress = false --Cover up timer and amount of intervals the timer has self.timer = nil self.countdown_intervals = 0 -- Set when we know if the player has passed/failed the epidemic -- generally used to test if infected patients can still infect others self.result_determined = false -- Vaccination mode is activated when the icon on the timer -- is clicked - used to determine what the cursor should look like self.vaccination_mode_active = false -- For Cheat - Show the contagious icon even before the epidemic is revealed? self.cheat_always_show_mood = false -- Number of times an infect patient has successfully infected another self.total_infections = 0 -- Number of times any infected patient has tried to infected another - successful or not self.attempted_infections = 0 local level_config = self.world.map.level_config -- How often is the epidemic disease passed on? Represents a percentage -- spread_factor% of the time a disease is passed on to a suitable target self.spread_factor = level_config.gbv.ContagiousSpreadFactor or 25 -- How many people still infected and not cure causes the player to take a reputation hit as well as a fine -- has no effect if more than evacuation_minimum - hospital is evacuated anyway self.reputation_loss_minimum = level_config.gbv.EpidemicRepLossMinimum or 5 -- How many people need to still be infected and not cure to cause the -- inspector to evacuate the hospital self.evacuation_minimum = level_config.gbv.EpidemicEvacMinimum or 10 -- The health inspector who reveals the result of the epidemic self.inspector = nil self:addContagiousPatient(contagious_patient) -- Mark all the patients currently in the hospital as passed reception - for compatibility self:markPatientsAsPassedReception() end --[[ The epidemic tick - currently the same rate as the hospital's tick but not necessary dependent on it - could potentially be reduced for performance.]] function Epidemic:tick() if not self.ready_to_reveal then self:checkIfReadyToReveal() end if not self.result_determined then self:infectOtherPatients() end if self.coverup_in_progress then if not self.result_determined then self:checkNoInfectedPlayerHasLeft() self:markedPatientsCallForVaccination() self:showAppropriateAdviceMessages() end self:tryAnnounceInspector() end self:checkPatientsForRemoval() end --[[ Adds a new patient to the epidemic who is actively contagious: infected but not vaccinated or cured]] function Epidemic:addContagiousPatient(patient) patient.infected = true patient:updateDynamicInfo() self.infected_patients[#self.infected_patients + 1] = patient if self.coverup_in_progress or self.cheat_always_show_mood then patient:setMood("epidemy4","activate") end end --[[ Goes through all infected patients checking if there are any other patients in adjacent squares that can be infected, and if so infects them turning them into an infected patient too. ]] function Epidemic:infectOtherPatients() --[[ Can an infected patient infect another patient - taking into account spread factor as defined in the configuration. Patients must be both in the corridors or in the same room - don't infect through walls. @param patient (Patient) already infected patient @param other (Patient) target to possibly infect @return true if patient can infect other, false otherwise (boolean) ]] local function canInfectOther(patient, other) -- Patient is not infectious. if patient.cured or patient.vaccinated then return false end -- 'other' is already infected or is going home. if other.infected or other.cured or other.vaccinated then return false end if other.is_emergency then return false end -- Don't interact with emergencies. -- If the other patient has a different disease OR the other patient's -- disease cannot be changed. if patient.disease ~= other.disease and (not other.disease.contagious or other.diagnosed) then return false end if other.attempted_to_infect then return false end -- Only infect if both are in the same room. return patient:getRoom() == other:getRoom() end local function infect_other(infected_patient, patient) if infected_patient.disease == patient.disease then self:addContagiousPatient(patient) self.total_infections = self.total_infections + 1 else patient:changeDisease(infected_patient.disease) self:addContagiousPatient(patient) self.total_infections = self.total_infections + 1 end end -- Scale the chance of spreading the disease infecting spread_factor% -- of patients results in too large an epidemic typically so infect -- spread_factor/spread_scale_factor patients. -- This scale factor is purely for balance purposes, the larger the -- value the less spreading the epidemics will be, all relative to spread_factor. -- Must be > 0. local spread_scale_factor = 200 -- Go through all infected patients making the check if they can infect -- and making any patient they can infect contagious too. local entity_map = self.world.entity_map if entity_map then for _, infected_patient in ipairs(self.infected_patients) do local adjacent_patients = entity_map:getPatientsInAdjacentSquares(infected_patient.tile_x, infected_patient.tile_y) for _, patient in ipairs(adjacent_patients) do if canInfectOther(infected_patient, patient) then patient.attempted_to_infect = true self.attempted_infections = self.attempted_infections + 1 if (self.total_infections / self.attempted_infections) < (self.spread_factor / spread_scale_factor) then infect_other(infected_patient, patient) end end end end end end --[[ The epidemic is ready to be revealed to the player if any infected patient is fully diagnosed. N.B. because multiple epidemics are queued to become the "active" one, being ready to reveal does NOT guarantee an epidemic WILL be revealed to the player and may even terminate before they are even aware it existed. ]] function Epidemic:checkIfReadyToReveal() for _, infected_patient in ipairs(self.infected_patients) do if infected_patient.diagnosed then self.ready_to_reveal = true break end end end --[[ Show the player the have an epidemic - send a fax This happens when the epidemic is chosen to the be the "active" epidemic out of all the queued ones.]] function Epidemic:revealEpidemic() assert(self.ready_to_reveal) self.revealed = true self:sendInitialFax() self:announceStartOfEpidemic() end --[[ Plays the announcement for the start of the epidemic ]] function Epidemic:announceStartOfEpidemic() local announcements = {"EPID001.wav", "EPID002.wav", "EPID003.wav", "EPID004.wav"} if self.hospital:isPlayerHospital() then self.world.ui:playAnnouncement(announcements[math.random(1, #announcements)]) end end --[[ Plays the announcement for the end of the epidemic ]] function Epidemic:announceEndOfEpidemic() local announcements = {"EPID005.wav", "EPID006.wav", "EPID007.wav", "EPID008.wav"} if self.hospital:isPlayerHospital() then self.world.ui:playAnnouncement(announcements[math.random(1, #announcements)]) end end --[[ Checks for conditions that could end the epidemic earlier than the length of the timer. If an infected patient leaves the hospital it's discovered instantly and will result in a fail.]] function Epidemic:checkNoInfectedPlayerHasLeft() if self.result_determined then return end -- Check whether a patient has left. for _, infected_patient in ipairs(self.infected_patients) do local px, py = infected_patient.tile_x, infected_patient.tile_y -- If leaving and no longer in the hospital. if infected_patient.going_home and not infected_patient.cured and px and py and not self.hospital:isInHospital(px,py) then -- Patient escaped from the hospital, discovery is inevitable. self.result_determined = true if not self.inspector then self:spawnInspector() end self:finishCoverUp() return end end end --[[Remove any patients which were already on their way out or died before the epidemic was started to be fair on the players so they don't instantly fail. Additionally if any patients die during an epidemic we also remove them, otherwise a player may never win the epidemic in such a case.]] function Epidemic:checkPatientsForRemoval() for i, infected_patient in ipairs(self.infected_patients) do if (not self.coverup_in_progress and infected_patient.going_home) or infected_patient.dead then table.remove(self.infected_patients,i) end end end --[[ Toggle the vaccination mode changes how the cursor interacts with the hospital. Toggled by pressing the button on the watch (@see UIWatch:UIWatch) ]] function Epidemic:toggleVaccinationMode() self.vaccination_mode_active = not self.vaccination_mode_active local cursor = self.vaccination_mode_active and "epidemic_hover" or "default" self.world.ui:setCursor(self.world.ui.app.gfx:loadMainCursor(cursor)) end --[[ Show a patient is able to be vaccinated, this is shown to the player by changing the icon, once a player has been marked for vaccination they may possibly become a vaccination candidate. Marking is done by clicking the player and can only happen during a cover up. ]] function Epidemic:markForVaccination(patient) if patient.infected and not patient.vaccinated and not patient.marked_for_vaccination then patient.marked_for_vaccination = true patient:setMood("epidemy4","deactivate") patient:setMood("epidemy2","activate") end end --[[ Counts the number of patients that have been infected that are still -- infected -- @return infected_count (Integer) the number of patients still infected.]] function Epidemic:countInfectedPatients() local infected_count = 0 for _, patient in pairs(self.infected_patients) do if patient.infected and not patient.cured then infected_count = infected_count + 1 end end return infected_count end --[[ Sends the initial fax to the player when the epidemic is revealed.]] function Epidemic:sendInitialFax() local num_infected = self:countInfectedPatients() --Save it in a global variable so we can apply the fine in the declare function self.declare_fine = self:calculateInfectedFine(num_infected) local message = { {text = _S.fax.epidemic.disease_name:format(self.disease.name)}, {text = _S.fax.epidemic.declare_explanation_fine:format(self.declare_fine)}, {text = _S.fax.epidemic.cover_up_explanation_1}, {text = _S.fax.epidemic.cover_up_explanation_2}, choices = { {text = _S.fax.epidemic.choices.declare, choice = "declare_epidemic"}, {text = _S.fax.epidemic.choices.cover_up, choice = "cover_up_epidemic"}, }, } self.world.ui.bottom_panel:queueMessage("epidemy", message, nil, 24*20,2) end --[[ Calculate the fine for having a given number of infected patients --Used to determine the initial declaration fine as the cover up fine. --@param infected_count (Integer) number of patients still infected --@return fine (Integer) the fine amount ]] function Epidemic:calculateInfectedFine(infected_count) local level_config = self.world.map.level_config local fine_per_infected = level_config.gbv.EpidemicFine or 2000 return math.max(2000, infected_count * fine_per_infected) end --[[ Gets the amount of reputation to add/remove from the player based on a given fine. Reputation gain/loss isn't specified in the configs so we use a percentage of the fine as a base value with extra being gained/lost for specific circumstances. @param fine_amount (Integer) amount the player will be fined @return reputation hit (Integer) reputation to be deducted relative to fine]] local function getBaseReputationFromFine(fine_amount) return math.round(fine_amount / 100) end --[[ When the player chooses to declare the epidemic instead of trying to cover up it from the initial faxes - ends the epidemic immediately after applying fine.]] function Epidemic:resolveDeclaration() self.result_determined = true self:clearAllInfectedPatients() --No fax for declaration just apply fines and rep hit self.hospital:spendMoney(self.declare_fine, _S.transactions.epidemy_fine) local reputation_hit = getBaseReputationFromFine(self.declare_fine) self.hospital.reputation = self.hospital.reputation - reputation_hit self.hospital.epidemic = nil end --[[ Remove all infected patients by vaccinating from the hospital and clear any epidemic-specific icons from their heads.]] function Epidemic:clearAllInfectedPatients() for _, infected_patient in ipairs(self.infected_patients) do -- Remove any vaccination calls still open infected_patient:removeVaccinationCandidateStatus() self.world.dispatcher:dropFromQueue(infected_patient) infected_patient.vaccinated = true infected_patient:setMood("epidemy1","deactivate") infected_patient:setMood("epidemy2","deactivate") infected_patient:setMood("epidemy3","deactivate") infected_patient:setMood("epidemy4","deactivate") end end --[[ When the player chooses to begin the cover up over declaring from the initial fax (@see sendInitialFax) ]] function Epidemic:startCoverUp() self.timer = UIWatch(self.world.ui, "epidemic") self.countdown_intervals = self.timer.open_timer self.world.ui:addWindow(self.timer) self.coverup_in_progress = true --Set the mood icon for all infected patients for _, infected_patient in ipairs(self.infected_patients) do infected_patient:updateDynamicInfo() infected_patient:setMood("epidemy4","activate") end end --[[ Ends the cover up of the epidemic with the result to be applied later (@see applyOutcome) ]] function Epidemic:finishCoverUp() self.result_determined = true self.timer:close() -- Turn vaccination mode off if self.vaccination_mode_active then self:toggleVaccinationMode() end local still_infected = self:countInfectedPatients() self:determineFaxAndFines(still_infected) self:clearAllInfectedPatients() end --[[ Calculates the contents of the fax and the appropriate fines based on the result of a cover up, results are stored globally to the class to be applied later. @param still_infected (Integer) the number of patients still infected]] function Epidemic:determineFaxAndFines(still_infected) -- Losing text local fail_text_1 = _S.fax.epidemic_result.failed.part_1_name:format(self.disease.name) local fail_text_2 = _S.fax.epidemic_result.failed.part_2 local close_option = {text = _S.fax.epidemic_result.close_text, choice = "close"} -- Losing fine (if epidemic is "lost") self.coverup_fine = self:calculateInfectedFine(still_infected) if still_infected == 0 then -- Compensation fine (if epidemic is "won") local level_config = self.world.map.level_config local compensation_low_value = level_config.gbv.EpidemicCompLo or 1000 local compensation_high_value = level_config.gbv.EpidemicCompHi or 5000 self.compensation = math.random(compensation_low_value,compensation_high_value) self.cover_up_result_fax = { {text = _S.fax.epidemic_result.succeeded.part_1_name:format(self.disease.name)}, {text = _S.fax.epidemic_result.succeeded.part_2}, {text = _S.fax.epidemic_result.compensation_amount:format(self.compensation)}, choices = {close_option} } elseif still_infected < self.reputation_loss_minimum and still_infected < self.evacuation_minimum then self.cover_up_result_fax = { {text = fail_text_1}, {text = fail_text_2}, {text = _S.fax.epidemic_result.fine_amount:format(self.coverup_fine)}, choices = {close_option} } elseif still_infected >= self.reputation_loss_minimum and still_infected < self.evacuation_minimum then self.cover_up_result_fax = { {text = fail_text_1}, {text = fail_text_2}, {text = _S.fax.epidemic_result.rep_loss_fine_amount:format(self.coverup_fine)}, choices = {close_option} } else self.will_be_evacuated = true self.cover_up_result_fax = { {text = fail_text_1}, {text = fail_text_2}, {text = _S.fax.epidemic_result.hospital_evacuated}, choices = {close_option} } end end --[[ Apply the compensation or fines where appropriate to the player as determined when the cover up was completed (@see finishCoverUp) ]] function Epidemic:applyOutcome() -- If there is no compensation to apply the epidemic has been failed if self.compensation == 0 then if self.will_be_evacuated then self.reputation_hit = math.round(self.hospital.reputation * (1/3)) self:evacuateHospital() else self.reputation_hit = getBaseReputationFromFine(self.coverup_fine) end -- Apply fine and reputation hit self.hospital:spendMoney(self.coverup_fine,_S.transactions.epidemy_coverup_fine) self.hospital.reputation = self.hospital.reputation - self.reputation_hit else self.hospital:receiveMoney(self.compensation, _S.transactions.compensation) end -- Finally send the fax confirming the outcome self:sendResultFax() --Remove epidemic from hospital so another epidemic may be assigned self.hospital.epidemic = nil end --[[ For compatibility. Mark all the current patients who are in the hospital --but not in the reception queues as being "passed reception" used to decide --who is evacuated @see evacuateHospital. For new patients they are marked --as they leave the reception desks.]] function Epidemic:markPatientsAsPassedReception() local queuing_patients = {} for _, desk in ipairs(self.hospital:findReceptionDesks()) do for _, patient in ipairs(desk.queue) do -- Use patient as map key to speed up lookup queuing_patients[patient] = true end end for _, patient in ipairs(self.hospital.patients) do -- Patient is not queuing for reception local px, py = patient.tile_x, patient.tile_y if px and py and self.hospital:isInHospital(px,py) and queuing_patients[patient] == nil then patient.has_passed_reception = true end end end --[[ Forces evacuation of the hospital - it makes ALL patients leave and storm out. ]] function Epidemic:evacuateHospital() for _, patient in ipairs(self.hospital.patients) do local patient_room = patient:getRoom() if patient_room then patient_room:makeHumanoidDressIfNecessaryAndThenLeave(patient) end if patient.has_passed_reception then patient:clearDynamicInfo() patient:setDynamicInfo('text', {_S.dynamic_info.patient.actions.epidemic_sent_home}) patient:setMood("exit","activate") local spawn_point = self.world.spawn_points[math.random(1, #self.world.spawn_points)] patient:setNextAction(SpawnAction("despawn", spawn_point):setMustHappen(true)) end end end --[[ Send the results of the cover up to the player - will be a success/compensation or fail/fines + reputation hit]] function Epidemic:sendResultFax() self.world.ui.bottom_panel:queueMessage("report", self.cover_up_result_fax, nil, 24*20, 1) self:announceEndOfEpidemic() end --[[ Spawns the inspector who will walk to the reception desk. ]] function Epidemic:spawnInspector() self.world.ui.adviser:say(_A.information.epidemic_health_inspector) local inspector = self.world:newEntity("Inspector", 2) self.inspector = inspector inspector:setType("Inspector") local spawn_point = self.world.spawn_points[math.random(1, #self.world.spawn_points)] inspector:setNextAction(SpawnAction("spawn", spawn_point)) inspector:setHospital(self.hospital) inspector:queueAction(SeekReceptionAction()) end --[[ Is the patient "still" either idle queuing or sitting on a bench Typically this is used to determine if a patient can be vaccinated @param patient (Patient) the patient we wish to determine if they are static.]] local function is_static(patient) local action = patient.action_queue[1] return action.name == "queue" or action.name == "idle" or (action.name == "use_object" and action.object.object_type.id == "bench") end --[[ During a cover up every patient marked for vaccination (clicked) creates a call to be vaccinated by a nurse - patients must also be static (seated or standing queuing) ]] function Epidemic:markedPatientsCallForVaccination() for _, infected_patient in ipairs(self.infected_patients) do if infected_patient.marked_for_vaccination and not infected_patient.reserved_for and is_static(infected_patient) then self.world.dispatcher:callNurseForVaccination(infected_patient) end end end --[[ In response to a vaccination call by the vaccination candidate (@see makeVaccinationCandidateCallForNurse) perform the vaccination actions or deal with call if unable to vaccinate. @param patient (Patient) the patient who make the original call @param nurse (Nurse) the nurse attempting to vaccinate the patient]] function Epidemic:createVaccinationActions(patient,nurse) patient.reserved_for = nurse -- Check square is reachable first local x,y = self:getBestVaccinationTile(nurse,patient) -- If unreachable patient keep the call open for now if not x or not y then nurse:setCallCompleted() patient.reserved_for = nil nurse:setNextAction(MeanderAction()) patient:removeVaccinationCandidateStatus() else -- Give selected patient the cursor with the arrow once they are next -- in line for vaccination i.e. call assigned patient:giveVaccinationCandidateStatus() local level_config = self.world.map.level_config local fee = level_config.gbv.VacCost or 50 nurse:setNextAction(WalkAction(x, y):setMustHappen(true):enableWalkingToVaccinate()) nurse:queueAction(VaccinateAction(patient, fee)) end end --[[Find the best tile to stand on to vaccinate a patient @param nurse (Nurse) the nurse performing the vaccination @param patient (Patient) the patient to be vaccinated @return best_x,best_y (Integer,nil) the best tiles to vaccinate from.]] function Epidemic:getBestVaccinationTile(nurse, patient) local px, py = patient.tile_x, patient.tile_y -- If the patient is using a bench the best tile to use is -- directly in front of them local action = patient.action_queue[1] if action.name == "use_object" then local object_in_use = action.object if object_in_use.object_type.id == "bench" then local direction = object_in_use.direction if direction == "north" then return px, py - 1 elseif direction == "south" then return px, py + 1 elseif direction == "east" then return px + 1, py elseif direction == "west" then return px - 1, py end end end -- General usage tile finder, used in the other cases -- when the patient isn't sitting on a bench -- Location of the nurse local nx, ny = nurse.tile_x, nurse.tile_y local best_x, best_y = nil local shortest_distance = nil local free_tiles = self.world.entity_map:getAdjacentFreeTiles(px, py) for _, coord in ipairs(free_tiles) do local x = coord['x'] local y = coord['y'] local distance = self.world:getPathDistance(nx, ny, x, y) -- If the tile is reachable for the nurse if distance then -- If the tile is closer then it's a better choice if not shortest_distance or distance < shortest_distance then shortest_distance = distance best_x, best_y = x, y end end end return best_x, best_y end --[[When the nurse is interrupted unreserve the patient and unassign the call. @param nurse (Nurse) the nurse whose vaccination actions we are interrupting]] function Epidemic:interruptVaccinationActions(nurse) assert(nurse.humanoid_class == "Nurse") local call = nurse.on_call if call then local patient = call.object if patient and patient.vaccination_candidate and not patient.vaccinated then patient:removeVaccinationCandidateStatus() end call.object.reserved_for = nil call.assigned = nil nurse.on_call = nil end end --[[ Make the advisor show appropriate messages under certain conditions of the epidemic.]] function Epidemic:showAppropriateAdviceMessages() if self.countdown_intervals then if not self.has_said_hurry_up and self:countInfectedPatients() > 0 and -- If only 1/4 of the countdown_intervals remaining on the timer self.timer.open_timer == math.floor(self.countdown_intervals * 1 / 4) then self.world.ui.adviser:say(_A.epidemic.hurry_up) self.has_said_hurry_up = true -- Wait until at least 1/4 of the countdown_intervals has expired before giving -- this warning so it doesn't happen straight away elseif self.timer.open_timer <= math.floor(self.countdown_intervals * 3 / 4) and not self.has_said_serious and self:countInfectedPatients() > 10 then self.world.ui.adviser:say(_A.epidemic.serious_warning) self.has_said_serious = true end end end --[[ Are no infected patients, cured or still infected in the hospital? @returns true if so, false otherwise. (boolean) ]] function Epidemic:hasNoInfectedPatients() return #self.infected_patients == 0 end function Epidemic:tryAnnounceInspector() local inspector = self.inspector if inspector and not inspector.has_been_announced and self.hospital:isInHospital(inspector.tile_x, inspector.tile_y) then inspector:announce() inspector.has_been_announced = true end end function Epidemic:afterLoad(old, new) if old < 106 then self.level_config = nil end end CorsixTH-0.61/CorsixTH/Lua/filesystem.lua000066400000000000000000000113201321660673500202640ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local pathsep = package.config:sub(1, 1) local part_pattern = "[^" .. pathsep .. "]+" local ISO_FS = require "ISO_FS" --! Layer for abstracting away differences in file systems class "FileSystem" ---@type FileSystem local FileSystem = _G["FileSystem"] function FileSystem:FileSystem() end local function normalise(str) return str:upper():gsub("_", "-") end function FileSystem:_enumerate() self.sub_dirs = {} self.files = {} for item in lfs.dir(self.physical_path) do local path = self.physical_path .. pathsep .. item if lfs.attributes(path, "mode") == "directory" then self.sub_dirs[normalise(item)] = {physical_path = path} else self.files[normalise(item)] = path end end end function FileSystem:setRoot(physical_path) if physical_path:match"%.[iI][sS][oO]$" or physical_path:match"%.[iI][sS][oO]9660$" then self.provider = ISO_FS() self.provider:setPathSeparator(pathsep) local file, err = io.open(physical_path, "rb") if not file then return nil, err end return self.provider:setRoot(file) else self.provider = nil end if physical_path:sub(-1) == pathsep then -- Trim off the trailing separator (lfs doesn't like querying the mode of a -- directory with a trailing slash on win32) physical_path = physical_path:sub(1, -2) end if lfs.attributes(physical_path, "mode") ~= "directory" then return nil, "Specified path ('" .. physical_path .. "') is not a directory" end self.physical_path = physical_path self:_enumerate() return true end function FileSystem:listFiles(virtual_path, ...) if ... then virtual_path = table.concat({virtual_path, ...}, pathsep) end if self.provider then return self.provider:listFiles(virtual_path) elseif not self.sub_dirs then return nil, "Filesystem layer not initialised" end for part in virtual_path:gmatch(part_pattern) do local part_u = normalise(part) if self.sub_dirs[part_u] then self = self.sub_dirs[part_u] if not self.files then FileSystem._enumerate(self) end elseif self.files[part_u] then return nil, ("Attempt to access file '%s' as if it were a directory while trying to enumerate '%s'"):format(part, virtual_path) else return nil, ("Unable to find '%s' while trying to enumerate '%s'"):format(part, virtual_path) end end return self.files end function FileSystem:readContents(virtual_path, ...) local file, err = self:getFilePath(virtual_path, ...) if not file then return file, err end local f, e = io.open(file, "rb") if not f then return nil, e end local data = f:read"*a" f:close() return data end function FileSystem:getFilePath(virtual_path, ...) if ... then virtual_path = table.concat({virtual_path, ...}, pathsep) end if self.provider then return self.provider:readContents(virtual_path) elseif not self.sub_dirs then return nil, "Filesystem layer not initialised" end local is_file = false for part in virtual_path:gmatch(part_pattern) do if is_file then return nil, ("Attempt to access file '%s' as if it were a directory while trying to read '%s'"):format(part, virtual_path) end local part_u = normalise(part) if self.sub_dirs[part_u] then self = self.sub_dirs[part_u] if not self.files then FileSystem._enumerate(self) end elseif self.files[part_u] then self = self.files[part_u] is_file = true else return nil, ("Unable to find '%s' while trying to read '%s'"):format(part, virtual_path) end end if not is_file then return nil, ("Attempt to access directory '%s' as if it were a file"):format(virtual_path) end return self end CorsixTH-0.61/CorsixTH/Lua/game_ui.lua000066400000000000000000001222601321660673500175140ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] dofile "ui" --! Variant of UI for running games class "GameUI" (UI) ---@type GameUI local GameUI = _G["GameUI"] local TH = require "TH" -- The maximum distance to shake the screen from the origin during an -- earthquake with full intensity. local shake_screen_max_movement = 50 --pixels -- 0.002 is about 5 pixels on a 1920 pixel display local multigesture_pinch_sensitivity_factor = 0.002 -- combined with the above, multiplying by 100 means minimum current_momentum.z for any detected pinch -- will result in a call to adjustZoom in the onTick method local multigesture_pinch_amplification_factor = 100 --! Game UI constructor. --!param app (Application) Application object. --!param local_hospital Hospital to display --!param map_editor (bool) Whether the map is editable. function GameUI:GameUI(app, local_hospital, map_editor) self:UI(app) self.hospital = local_hospital self.tutorial = { chapter = 0, phase = 0 } if map_editor then self.map_editor = UIMapEditor(self) self:addWindow(self.map_editor) else self.adviser = UIAdviser(self) self.bottom_panel = UIBottomPanel(self) self.bottom_panel:addWindow(self.adviser) self:addWindow(self.bottom_panel) end -- UI widgets self.menu_bar = UIMenuBar(self, self.map_editor) self:addWindow(self.menu_bar) local scr_w = app.config.width local scr_h = app.config.height self.visible_diamond = self:makeVisibleDiamond(scr_w, scr_h) if self.visible_diamond.w <= 0 or self.visible_diamond.h <= 0 then -- For a standard 128x128 map, screen size would have to be in the -- region of 3276x2457 in order to be too large. if not self.map_editor then error("Screen size too large for the map") end end self.screen_offset_x, self.screen_offset_y = app.map:WorldToScreen( app.map.th:getCameraTile(local_hospital:getPlayerIndex())) self.zoom_factor = 1 self:scrollMap(-scr_w / 2, 16 - scr_h / 2) self.limit_to_visible_diamond = not self.map_editor self.transparent_walls = false self.do_world_hit_test = true self:setRandomAnnouncementTarget() self.ticks_since_last_announcement = 0 self.momentum = app.config.scrolling_momentum self.current_momentum = {x = 0.0, y = 0.0, z = 0.0} self.multigesturemove = {x = 0.0, y = 0.0} self.speed_up_key_pressed = false -- The currently specified intensity value for earthquakes. To abstract -- the effect from the implementation this value is a number between 0 -- and 1. self.shake_screen_intensity = 0 end function GameUI:setupGlobalKeyHandlers() UI.setupGlobalKeyHandlers(self) self:addKeyHandler("escape", self, self.setEditRoom, false) self:addKeyHandler("escape", self, self.showMenuBar) self:addKeyHandler("z", self, self.keySpeedUp) self:addKeyHandler("x", self, self.keyTransparent) self:addKeyHandler({"shift", "a"}, self, self.toggleAdviser) self:addKeyHandler({"ctrl", "d"}, self.app.world, self.app.world.dumpGameLog) self:addKeyHandler({"ctrl", "t"}, self.app, self.app.dumpStrings) self:addKeyHandler({"alt", "a"}, self, self.togglePlayAnnouncements) self:addKeyHandler({"alt", "s"}, self, self.togglePlaySounds) self:addKeyHandler({"alt", "m"}, self, self.togglePlayMusic) if self.app.config.debug then self:addKeyHandler("f11", self, self.showCheatsWindow) end end function GameUI:makeVisibleDiamond(scr_w, scr_h) local map_w = self.app.map.width local map_h = self.app.map.height assert(map_w == map_h, "UI limiter requires square map") -- The visible diamond is the region which the top-left corner of the screen -- is limited to, and ensures that the map always covers all of the screen. -- Its vertices are at (x + w, y), (x - w, y), (x, y + h), (x, y - h). return { x = - scr_w / 2, y = 16 * map_h - scr_h / 2, w = 32 * map_h - scr_h - scr_w / 2, h = 16 * map_h - scr_h / 2 - scr_w / 4, } end --! Calculate the minimum valid zoom value --! --! Zooming out too much would cause negative width/height to be returned from --! makeVisibleDiamond. This function calculates the minimum zoom_factor that --! would be allowed. function GameUI:calculateMinimumZoom() local scr_w = self.app.config.width local scr_h = self.app.config.height local map_h = self.app.map.height -- Minimum width: 0 = 32 * map_h - (scr_h/factor) - (scr_w/factor) / 2, -- Minimum height: 0 = 16 * map_h - (scr_h/factor) / 2 - (scr_w/factor) / 4 -- Both rearrange to: local factor = (scr_w + 2 * scr_h) / (64 * map_h) -- Due to precision issues a tolerance is needed otherwise setZoom might fail factor = factor + 0.001 return factor end function GameUI:setZoom(factor) if factor <= 0 then return false end if not factor or math.abs(factor - 1) < 0.001 then factor = 1 end local scr_w = self.app.config.width local scr_h = self.app.config.height local new_diamond = self:makeVisibleDiamond(scr_w / factor, scr_h / factor) if new_diamond.w < 0 or new_diamond.h < 0 then return false end self.visible_diamond = new_diamond local refx, refy = self.cursor_x or scr_w / 2, self.cursor_y or scr_h / 2 local cx, cy = self:ScreenToWorld(refx, refy) self.zoom_factor = factor cx, cy = self.app.map:WorldToScreen(cx, cy) cx = cx - self.screen_offset_x - refx / factor cy = cy - self.screen_offset_y - refy / factor self:scrollMap(cx, cy) return true end function GameUI:draw(canvas) local app = self.app local config = app.config if self.map_editor or not self.in_visible_diamond then canvas:fillBlack() end local zoom = self.zoom_factor local dx = self.screen_offset_x + math.floor((0.5 - math.random()) * self.shake_screen_intensity * shake_screen_max_movement * 2) local dy = self.screen_offset_y + math.floor((0.5 - math.random()) * self.shake_screen_intensity * shake_screen_max_movement * 2) if canvas:scale(zoom) then app.map:draw(canvas, dx, dy, math.floor(config.width / zoom), math.floor(config.height / zoom), 0, 0) canvas:scale(1) else self:setZoom(1) app.map:draw(canvas, dx, dy, config.width, config.height, 0, 0) end Window.draw(self, canvas, 0, 0) -- NB: not calling UI.draw on purpose self:drawTooltip(canvas) if self.simulated_cursor then self.simulated_cursor.draw(canvas, self.cursor_x, self.cursor_y) end end function GameUI:onChangeResolution() -- Calculate and enforce minimum zoom local minimum_zoom = self:calculateMinimumZoom() if self.zoom_factor < minimum_zoom then self:setZoom(minimum_zoom) end -- Recalculate scrolling bounds local scr_w = self.app.config.width local scr_h = self.app.config.height self.visible_diamond = self:makeVisibleDiamond(scr_w / self.zoom_factor, scr_h / self.zoom_factor) self:scrollMap(0, 0) UI.onChangeResolution(self) end --! Update UI state after the UI has been depersisted --! When an UI object is depersisted, its state will reflect how the UI was at -- the moment of persistence, which may be different to the keyboard / mouse -- state at the moment of depersistence. --!param ui (UI) The previously existing UI object, from which values should be -- taken. function GameUI:resync(ui) if self.drag_mouse_move then -- Check that a window is actually being dragged. If none is found, then -- remove the drag handler. local something_being_dragged = false for _, window in ipairs(self.windows) do if window.dragging then something_being_dragged = true break end end if not something_being_dragged then self.drag_mouse_move = nil end end self.tick_scroll_amount = ui.tick_scroll_amount self.down_count = ui.down_count if ui.limit_to_visible_diamond ~= nil then self.limit_to_visible_diamond = ui.limit_to_visible_diamond end self.key_remaps = ui.key_remaps self.key_to_button_remaps = ui.key_to_button_remaps end local scroll_keys = { up = {x = 0, y = -10}, right = {x = 10, y = 0}, down = {x = 0, y = 10}, left = {x = -10, y = 0}, ["keypad 8"] = {x = 0, y = -10}, ["keypad 6"] = {x = 10, y = 0}, ["keypad 2"] = {x = 0, y = 10}, ["keypad 4"] = {x = -10, y = 0}, } function GameUI:updateKeyScroll() local dx, dy = 0, 0 for key, scr in pairs(scroll_keys) do if self.buttons_down[key] then dx = dx + scr.x dy = dy + scr.y end end if dx ~= 0 or dy ~= 0 then self.tick_scroll_amount = {x = dx, y = dy} return true else self.tick_scroll_amount = false return false end end function GameUI:keySpeedUp() self.speed_up_key_pressed = true self.app.world:speedUp() end function GameUI:keyTransparent() self:setWallsTransparent(true) end function GameUI:onKeyDown(rawchar, modifiers, is_repeat) if UI.onKeyDown(self, rawchar, modifiers, is_repeat) then -- Key has been handled already return true end local key = rawchar:lower() if scroll_keys[key] then self:updateKeyScroll() return end end function GameUI:onKeyUp(rawchar) if UI.onKeyUp(self, rawchar) then return true end local key = rawchar:lower() if scroll_keys[key] then self:updateKeyScroll() return end -- Guess that the "Speed Up" key was released because the -- code parameter can't provide UTF-8 key codes: self.speed_up_key_pressed = false if self.app.world:isCurrentSpeed("Speed Up") then self.app.world:previousSpeed() end self:setWallsTransparent(false) end function GameUI:makeDebugFax() local message = { {text = "debug fax"}, -- no translation needed imo choices = {{text = "close debug fax", choice = "close"}}, } -- Don't use "strike" type here, as these open a different window and must have an owner local types = {"emergency", "epidemy", "personality", "information", "disease", "report"} self.bottom_panel:queueMessage(types[math.random(1, #types)], message) end function GameUI:ScreenToWorld(x, y) local zoom = self.zoom_factor return self.app.map:ScreenToWorld(self.screen_offset_x + x / zoom, self.screen_offset_y + y / zoom) end function GameUI:WorldToScreen(x, y) local zoom = self.zoom_factor x, y = self.app.map:WorldToScreen(x, y) x = x - self.screen_offset_x y = y - self.screen_offset_y return x * zoom, y * zoom end function GameUI:getScreenOffset() return self.screen_offset_x, self.screen_offset_y end --! Change if the World should be tested for entities under the cursor --!param mode (boolean or room) true to enable hit test (normal), false --! to disable, room to enable only for non-door objects in given room function GameUI:setWorldHitTest(mode) self.do_world_hit_test = mode end function GameUI:onCursorWorldPositionChange() local zoom = self.zoom_factor local x = math.floor(self.screen_offset_x + self.cursor_x / zoom) local y = math.floor(self.screen_offset_y + self.cursor_y / zoom) local entity = nil if self.do_world_hit_test and not self:hitTest(self.cursor_x, self.cursor_y) then entity = self.app.map.th:hitTestObjects(x, y) if self.do_world_hit_test ~= true then -- limit to non-door objects in room local room = self.do_world_hit_test entity = entity and class.is(entity, Object) and entity:getRoom() == room and entity ~= room.door and entity end end if entity ~= self.cursor_entity then -- Stop displaying hoverable moods for the old entity if self.cursor_entity then self.cursor_entity:setMood(nil) end -- Make the entity easily accessible when debugging, and ignore "deselecting" an entity. if entity then self.debug_cursor_entity = entity end local epidemic = self.hospital.epidemic local infected_cursor = TheApp.gfx:loadMainCursor("epidemic") local epidemic_cursor = TheApp.gfx:loadMainCursor("epidemic_hover") self.cursor_entity = entity if self.cursor ~= self.edit_room_cursor and self.cursor ~= self.waiting_cursor then local cursor = self.default_cursor if self.app.world.user_actions_allowed then --- If the patient is infected show the infected cursor if epidemic and epidemic.coverup_in_progress and entity and entity.infected and not epidemic.timer.closed then cursor = infected_cursor -- In vaccination mode display epidemic hover cursor for all entities elseif epidemic and epidemic.vaccination_mode_active then cursor = epidemic_cursor -- Otherwise just show the normal cursor and hover if appropriate else cursor = entity and entity.hover_cursor or (self.down_count ~= 0 and self.down_cursor or self.default_cursor) end end self:setCursor(cursor) end if self.bottom_panel then self.bottom_panel:setDynamicInfo(nil) end end -- Queueing icons over patients local wx, wy = self:ScreenToWorld(self.cursor_x, self.cursor_y) wx = math.floor(wx) wy = math.floor(wy) local room if wx > 0 and wy > 0 and wx < self.app.map.width and wy < self.app.map.height then room = self.app.world:getRoom(wx, wy) end if room ~= self.cursor_room then -- Unset queue mood for patients queueing the old room if self.cursor_room then local queue = self.cursor_room.door.queue if queue then for _, humanoid in ipairs(queue) do humanoid:setMood("queue", "deactivate") end end end -- Set queue mood for patients queueing the new room if room then local queue = room.door.queue if queue then for _, humanoid in ipairs(queue) do humanoid:setMood("queue", "activate") end end end self.cursor_room = room end -- Any hoverable mood should be displayed on the new entity if class.is(entity, Humanoid) then for _, value in pairs(entity.active_moods) do if value.on_hover then entity:setMoodInfo(value) break end end end -- Dynamic info if entity and self.bottom_panel then self.bottom_panel:setDynamicInfo(entity:getDynamicInfo()) end return Window.onCursorWorldPositionChange(self, self.cursor_x, self.cursor_y) end local UpdateCursorPosition = TH.cursor.setPosition local highlight_x, highlight_y --! Called when the mouse enters or leaves the game window. function GameUI:onWindowActive(gain) if gain == 0 then self.tick_scroll_amount_mouse = false end end -- TODO: try to remove duplication with UI:onMouseMove function GameUI:onMouseMove(x, y, dx, dy) local repaint = UpdateCursorPosition(self.app.video, x, y) if self.app.moviePlayer.playing then return false end self.cursor_x = x self.cursor_y = y if self:onCursorWorldPositionChange() or self.simulated_cursor then repaint = true end if self.buttons_down.mouse_middle then local zoom = self.zoom_factor self.current_momentum.x = -dx/zoom self.current_momentum.y = -dy/zoom -- Stop zooming when the middle mouse button is pressed self.current_momentum.z = 0 self:scrollMap(self.current_momentum.x, self.current_momentum.y) repaint = true end if self.drag_mouse_move then self.drag_mouse_move(x, y) return true end local scroll_region_size if self.app.config.fullscreen then -- As the mouse is locked within the window, a 1px region feels a lot -- larger than it actually is. scroll_region_size = 1 else -- In windowed mode, a reasonable size is needed, though not too large. scroll_region_size = 8 end if not self.app.config.prevent_edge_scrolling and (x < scroll_region_size or y < scroll_region_size or x >= self.app.config.width - scroll_region_size or y >= self.app.config.height - scroll_region_size) then local scroll_dx = 0 local scroll_dy = 0 local scroll_power = 7 if x < scroll_region_size then scroll_dx = -scroll_power elseif x >= self.app.config.width - scroll_region_size then scroll_dx = scroll_power end if y < scroll_region_size then scroll_dy = -scroll_power elseif y >= self.app.config.height - scroll_region_size then scroll_dy = scroll_power end if not self.tick_scroll_amount_mouse then self.tick_scroll_amount_mouse = {x = scroll_dx, y = scroll_dy} else self.tick_scroll_amount_mouse.x = scroll_dx self.tick_scroll_amount_mouse.y = scroll_dy end else self.tick_scroll_amount_mouse = false end if Window.onMouseMove(self, x, y, dx, dy) then repaint = true end self:updateTooltip() local map = self.app.map local wx, wy = self:ScreenToWorld(x, y) wx = math.floor(wx) wy = math.floor(wy) if highlight_x then --map.th:setCell(highlight_x, highlight_y, 4, 0) highlight_x = nil end if 1 <= wx and wx <= 128 and 1 <= wy and wy <= 128 then if map.th:getCellFlags(wx, wy).passable then --map.th:setCell(wx, wy, 4, 24 + 8 * 256) highlight_x = wx highlight_y = wy end end return repaint end function GameUI:onMouseUp(code, x, y) if self.app.moviePlayer.playing then return UI.onMouseUp(self, code, x, y) end local button = self.button_codes[code] if button == "right" and not self.map_editor and highlight_x then local window = self:getWindow(UIPatient) local patient = (window and window.patient.is_debug and window.patient) or self.hospital:getDebugPatient() if patient then patient:walkTo(highlight_x, highlight_y) patient:queueAction(IdleAction()) end end if self.edit_room then if class.is(self.edit_room, Room) then if button == "right" and self.cursor == self.waiting_cursor then -- Still waiting for people to leave the room, abort editing it. self:setEditRoom(false) end else -- No room chosen yet, but about to edit one. if button == "left" then -- Take the clicked one. local room = self.app.world:getRoom(self:ScreenToWorld(x, y)) if room and not room.crashed then self:setCursor(self.waiting_cursor) self.edit_room = room room:tryToEdit() end else -- right click, we don't want to edit a room after all. self:setEditRoom(false) end end end -- During vaccination mode you can only interact with infected patients local epidemic = self.hospital.epidemic if epidemic and epidemic.vaccination_mode_active then if button == "left" then if self.cursor_entity then -- Allow click behaviour for infected patients if self.cursor_entity.infected then self.cursor_entity:onClick(self,button) end end elseif button == "right" then --Right click turns vaccination mode off local watch = TheApp.ui:getWindow(UIWatch) watch:toggleVaccinationMode() end end return UI.onMouseUp(self, code, x, y) end --! Process SDL_MULTIGESTURE events for zoom and map move functionality --!param numfingers (integer) number of touch points, received from the SDL event --! This is still more info about param x. --!param dTheta (float) rotation in radians of the gesture from the SDL event --!param dDist (float) magnitude of pinch from the SDL event --!param x (float) normalised x value of the gesture --!param y (float) normalised y value of the gesture --!return (boolean) event processed indicator function GameUI:onMultiGesture(numfingers, dTheta, dDist, x, y) -- only deal with 2 finger events for now if numfingers == 2 then -- calculate magnitude of pinch local mag = math.abs(dDist) if mag > multigesture_pinch_sensitivity_factor then -- pinch action - constant needs to be tweaked self.current_momentum.z = self.current_momentum.z + dDist * multigesture_pinch_amplification_factor return true else -- scroll map local normx = self.app.config.width * x local normy = self.app.config.height * y if self.multigesturemove.x == 0.0 then self.multigesturemove.x = normx self.multigesturemove.y = normy else local dx = normx - self.multigesturemove.x local dy = normy - self.multigesturemove.y self.current_momentum.x = self.current_momentum.x - dx self.current_momentum.y = self.current_momentum.y - dy self.multigesturemove.x = normx self.multigesturemove.y = normy end return true end end return false end function GameUI:onMouseWheel(x, y) local inside_window = false if self.windows then for _, window in ipairs(self.windows) do if window:hitTest(self.cursor_x - window.x, self.cursor_y - window.y) then inside_window = true break end end end if not inside_window then -- Apply momentum to the zoom if math.abs(self.current_momentum.z) < 12 then self.current_momentum.z = self.current_momentum.z + y end end return UI.onMouseWheel(self, x, y) end function GameUI:setRandomAnnouncementTarget() -- NB: Every tick is 30ms, so 2000 ticks is 1 minute self.random_announcement_ticks_target = math.random(8000, 12000) end function GameUI:playAnnouncement(name, played_callback, played_callback_delay) self.ticks_since_last_announcement = 0 if self.app.world:getLocalPlayerHospital():hasStaffedDesk() then UI.playAnnouncement(self, name, played_callback, played_callback_delay) end end function GameUI:onTick() local repaint = UI.onTick(self) if not self.buttons_down.mouse_middle then if math.abs(self.current_momentum.x) < 0.2 and math.abs(self.current_momentum.y) < 0.2 then -- Stop scrolling self.current_momentum.x = 0.0 self.current_momentum.y = 0.0 else self.current_momentum.x = self.current_momentum.x * self.momentum self.current_momentum.y = self.current_momentum.y * self.momentum self:scrollMap(self.current_momentum.x, self.current_momentum.y) end if math.abs(self.current_momentum.z) < 0.2 then self.current_momentum.z = 0.0 else self.current_momentum.z = self.current_momentum.z * self.momentum self.app.world:adjustZoom(self.current_momentum.z) end self.multigesturemove.x = 0.0 self.multigesturemove.y = 0.0 end if not self.app.world:isCurrentSpeed("Pause") then local ticks_since_last_announcement = self.ticks_since_last_announcement if ticks_since_last_announcement >= self.random_announcement_ticks_target then self:playAnnouncement("rand*.wav") self:setRandomAnnouncementTarget() else self.ticks_since_last_announcement = ticks_since_last_announcement + 1 end end if self.tick_scroll_amount or self.tick_scroll_amount_mouse then -- The scroll amount per tick gradually increases as the duration of the -- scroll increases due to this multiplier. local mult = self.tick_scroll_mult mult = mult + 0.02 if mult > 2 then mult = 2 end self.tick_scroll_mult = mult -- Combine the mouse scroll and keyboard scroll local dx, dy = 0, 0 if self.tick_scroll_amount_mouse then dx, dy = self.tick_scroll_amount_mouse.x, self.tick_scroll_amount_mouse.y -- If the middle mouse button is down, then the world is being dragged, -- and so the scroll direction due to the cursor being at the map edge -- should be opposite to normal to make it feel more natural. if self.buttons_down.mouse_middle then dx, dy = -dx, -dy end end if self.tick_scroll_amount then dx = dx + self.tick_scroll_amount.x dy = dy + self.tick_scroll_amount.y end -- Adjust scroll speed based on config value: -- there is a separate config value for whether or not shift is held. -- the speed is multiplied by 0.5 for consistency between the old and -- new configuration. In the past scroll_speed applied only to shift -- and defaulted to 2, where 1 was regular scroll speed. By -- By multiplying by 0.5, we allow for setting slower than normal -- scroll speeds, and ensure there is no behaviour change for players -- who do not modify their config file. if self.app.key_modifiers.shift then mult = mult * self.app.config.shift_scroll_speed * 0.5 else mult = mult * self.app.config.scroll_speed * 0.5 end self:scrollMap(dx * mult, dy * mult) repaint = true else self.tick_scroll_mult = 1 end if self:onCursorWorldPositionChange() then repaint = true end return repaint end local abs, sqrt_5, floor = math.abs, math.sqrt(1 / 5), math.floor function GameUI:scrollMapTo(x, y) local zoom = 2 * self.zoom_factor local config = self.app.config return self:scrollMap(x - self.screen_offset_x - config.width / zoom, y - self.screen_offset_y - config.height / zoom) end function GameUI.limitPointToDiamond(dx, dy, visible_diamond, do_limit) -- If point outside visible diamond, then move point to the nearest position -- on the edge of the diamond (NB: relies on diamond.w == 2 * diamond.h). local rx = dx - visible_diamond.x local ry = dy - visible_diamond.y if abs(rx) + abs(ry) * 2 > visible_diamond.w then if do_limit then -- Determine the quadrant which the point lies in and accordingly set: -- (vx, vy) : a unit vector perpendicular to the diamond edge in the quadrant -- (p1x, p1y), (p2x, p2y) : the two diamond verticies in the quadrant -- d : distance from the point to the line defined by the diamond edge (not the line segment itself) local vx, vy, d local p1x, p1y, p2x, p2y = 0, 0, 0, 0 if rx >= 0 and ry >= 0 then p1x, p2y = visible_diamond.w, visible_diamond.h vx, vy = sqrt_5, 2 * sqrt_5 d = (rx * vx + ry * vy) - (p1x * vx) elseif rx >= 0 and ry < 0 then p2x, p1y = visible_diamond.w, -visible_diamond.h vx, vy = sqrt_5, -2 * sqrt_5 d = (rx * vx + ry * vy) - (p2x * vx) elseif rx < 0 and ry >= 0 then p2x, p1y = -visible_diamond.w, visible_diamond.h vx, vy = -sqrt_5, 2 * sqrt_5 d = (rx * vx + ry * vy) - (p2x * vx) else--if rx < 0 and ry < 0 then p1x, p2y = -visible_diamond.w, -visible_diamond.h vx, vy = -sqrt_5, -2 * sqrt_5 d = (rx * vx + ry * vy) - (p1x * vx) end -- In the unit vector parallel to the diamond edge, resolve the two vertices and -- the point, and either move the point to the edge or to one of the two vertices. -- NB: vx, vy, p1x, p1y, p2x, p2y are set such that p1 < p2. local p1 = vx * p1y - vy * p1x local p2 = vx * p2y - vy * p2x local pd = vx * ry - vy * rx if pd < p1 then dx, dy = p1x + visible_diamond.x, p1y + visible_diamond.y elseif pd > p2 then dx, dy = p2x + visible_diamond.x, p2y + visible_diamond.y else--if p1 <= pd and pd <= p2 then dx, dy = dx - d * vx, dy - d * vy end return math.floor(dx), math.floor(dy), true else return dx, dy, false end end return dx, dy, true end function GameUI:scrollMap(dx, dy) dx = dx + self.screen_offset_x dy = dy + self.screen_offset_y dx, dy, self.in_visible_diamond = self.limitPointToDiamond(dx, dy, self.visible_diamond, self.limit_to_visible_diamond) self.screen_offset_x = floor(dx + 0.5) self.screen_offset_y = floor(dy + 0.5) end --! Start shaking the screen, e.g. an earthquake effect --!param intensity (number) The magnitude of the effect, between 0 for no -- movement to 1 for significant shaking. function GameUI:beginShakeScreen(intensity) self.shake_screen_intensity = intensity end --! Stop the screen from shaking after beginShakeScreen is called. function GameUI:endShakeScreen() self.shake_screen_intensity = 0 end function GameUI:limitCamera(mode) self.limit_to_visible_diamond = mode self:scrollMap(0, 0) end --! Applies the current setting for wall transparency to the map function GameUI:applyTransparency() self.app.map.th:setWallDrawFlags(self.transparent_walls and 4 or 0) end --! Sets wall transparency to the specified parameter --!param mode (boolean) whether to enable or disable wall transparency function GameUI:setWallsTransparent(mode) if mode ~= self.transparent_walls then self.transparent_walls = mode self:applyTransparency() end end function UI:toggleAdviser() self.app.config.adviser_disabled = not self.app.config.adviser_disabled self.app:saveConfig() end function UI:togglePlaySounds() self.app.config.play_sounds = not self.app.config.play_sounds self.app.audio:playSoundEffects(self.app.config.play_sounds) self.app:saveConfig() end function UI:togglePlayAnnouncements() self.app.config.play_announcements = not self.app.config.play_announcements self.app:saveConfig() end function UI:togglePlayMusic(item) if not self.app.audio.background_music then self.app.config.play_music = true self.app.audio:playRandomBackgroundTrack() -- play else self.app.config.play_music = false self.app.audio:stopBackgroundTrack() -- stop end -- self.app.config.play_music = not self.app.config.play_music self.app:saveConfig() end local tutorial_phases local function make_tutorial_phases() tutorial_phases = { { -- 1) build reception { text = _A.tutorial.build_reception, -- 1 begin_callback = function() TheApp.ui:getWindow(UIBottomPanel):startButtonBlinking(3) end, end_callback = function() TheApp.ui:getWindow(UIBottomPanel):stopButtonBlinking() end, }, { text = _A.tutorial.order_one_reception, -- 2 begin_callback = function() TheApp.ui:getWindow(UIFurnishCorridor):startButtonBlinking(3) end, end_callback = function() TheApp.ui:getWindow(UIFurnishCorridor):stopButtonBlinking(3) end, }, { text = _A.tutorial.accept_purchase, -- 3 begin_callback = function() TheApp.ui:getWindow(UIFurnishCorridor):startButtonBlinking(2) end, end_callback = function() TheApp.ui:getWindow(UIFurnishCorridor):stopButtonBlinking(2) end, }, _A.tutorial.rotate_and_place_reception, -- 4 _A.tutorial.reception_invalid_position, -- 5 -- 6: object other than reception selected. currently no text for this phase. }, { -- 2) hire receptionist { text = _A.tutorial.hire_receptionist, -- 1 begin_callback = function() TheApp.ui:getWindow(UIBottomPanel):startButtonBlinking(5) end, end_callback = function() TheApp.ui:getWindow(UIBottomPanel):stopButtonBlinking() end, }, { text = _A.tutorial.select_receptionists, -- 2 begin_callback = function() TheApp.ui:getWindow(UIHireStaff):startButtonBlinking(4) end, end_callback = function() TheApp.ui:getWindow(UIHireStaff):stopButtonBlinking() end, }, { text = _A.tutorial.next_receptionist, -- 3 begin_callback = function() TheApp.ui:getWindow(UIHireStaff):startButtonBlinking(8) end, end_callback = function() TheApp.ui:getWindow(UIHireStaff):stopButtonBlinking() end, }, { text = _A.tutorial.prev_receptionist, -- 4 begin_callback = function() TheApp.ui:getWindow(UIHireStaff):startButtonBlinking(5) end, end_callback = function() TheApp.ui:getWindow(UIHireStaff):stopButtonBlinking() end, }, { text = _A.tutorial.choose_receptionist, -- 5 begin_callback = function() TheApp.ui:getWindow(UIHireStaff):startButtonBlinking(6) end, end_callback = function() TheApp.ui:getWindow(UIHireStaff):stopButtonBlinking() end, }, _A.tutorial.place_receptionist, -- 6 _A.tutorial.receptionist_invalid_position, -- 7 }, { -- 3) build GP's office -- 3.1) room window { text = _A.tutorial.build_gps_office, -- 1 begin_callback = function() TheApp.ui:getWindow(UIBottomPanel):startButtonBlinking(2) end, end_callback = function() TheApp.ui:getWindow(UIBottomPanel):stopButtonBlinking() end, }, { text = _A.tutorial.select_diagnosis_rooms, -- 2 begin_callback = function() TheApp.ui:getWindow(UIBuildRoom):startButtonBlinking(1) end, end_callback = function() TheApp.ui:getWindow(UIBuildRoom):stopButtonBlinking() end, }, { text = _A.tutorial.click_gps_office, -- 3 begin_callback = function() TheApp.ui:getWindow(UIBuildRoom):startButtonBlinking(5) end, end_callback = function() TheApp.ui:getWindow(UIBuildRoom):stopButtonBlinking() end, }, -- 3.2) blueprint -- [11][58] was maybe planned to be used in this place, but is not needed. _A.tutorial.click_and_drag_to_build, -- 4 _A.tutorial.room_in_invalid_position, -- 5 _A.tutorial.room_too_small, -- 6 _A.tutorial.room_too_small_and_invalid, -- 7 { text = _A.tutorial.room_big_enough, -- 8 begin_callback = function() TheApp.ui:getWindow(UIEditRoom):startButtonBlinking(4) end, end_callback = function() TheApp.ui:getWindow(UIEditRoom):stopButtonBlinking() end, }, -- 3.3) door and windows _A.tutorial.place_door, -- 9 _A.tutorial.door_in_invalid_position, -- 10 { text = _A.tutorial.place_windows, -- 11 begin_callback = function() TheApp.ui:getWindow(UIEditRoom):startButtonBlinking(4) end, end_callback = function() TheApp.ui:getWindow(UIEditRoom):stopButtonBlinking() end, }, { text = _A.tutorial.window_in_invalid_position, -- 12 begin_callback = function() TheApp.ui:getWindow(UIEditRoom):startButtonBlinking(4) end, end_callback = function() TheApp.ui:getWindow(UIEditRoom):stopButtonBlinking() end, }, -- 3.4) objects _A.tutorial.place_objects, -- 13 _A.tutorial.object_in_invalid_position, -- 14 { text = _A.tutorial.confirm_room, -- 15 begin_callback = function() TheApp.ui:getWindow(UIEditRoom):startButtonBlinking(4) end, end_callback = function() TheApp.ui:getWindow(UIEditRoom):stopButtonBlinking() end, }, { text = _A.tutorial.information_window, -- 16 begin_callback = function() TheApp.ui:getWindow(UIInformation):startButtonBlinking(1) end, end_callback = function() TheApp.ui:getWindow(UIInformation):stopButtonBlinking() end, }, }, { -- 4) hire doctor { text = _A.tutorial.hire_doctor, -- 1 begin_callback = function() TheApp.ui:getWindow(UIBottomPanel):startButtonBlinking(5) end, end_callback = function() TheApp.ui:getWindow(UIBottomPanel):stopButtonBlinking() end, }, { text = _A.tutorial.select_doctors, -- 2 begin_callback = function() TheApp.ui:getWindow(UIHireStaff):startButtonBlinking(1) end, end_callback = function() TheApp.ui:getWindow(UIHireStaff):stopButtonBlinking() end, }, { text = _A.tutorial.choose_doctor, -- 3 begin_callback = function() TheApp.ui:getWindow(UIHireStaff):startButtonBlinking(6) end, end_callback = function() TheApp.ui:getWindow(UIHireStaff):stopButtonBlinking() end, }, _A.tutorial.place_doctor, -- 4 _A.tutorial.doctor_in_invalid_position, -- 5 }, { -- 5) end of tutorial { begin_callback = function() -- The demo uses a single string for the post-tutorial info while -- the real game uses three. local texts = TheApp.using_demo_files and { {_S.introduction_texts["level15"]}, {_S.introduction_texts["demo"]}, } or { {_S.introduction_texts["level15"]}, {_S.introduction_texts["level16"]}, {_S.introduction_texts["level17"]}, {_S.introduction_texts["level1"]}, } TheApp.ui:addWindow(UIInformation(TheApp.ui, texts)) TheApp.ui:addWindow(UIWatch(TheApp.ui, "initial_opening")) end, }, }, } end tutorial_phases = setmetatable({}, {__index = function(t, k) make_tutorial_phases() return tutorial_phases[k] end}) -- Called to trigger step to another part of the tutorial. -- chapter: Individual parts of the tutorial. Step will only happen if it's the current chapter. -- phase_from: Phase we need to be in for this step to happen. Multiple phases can be given here in an array. -- phase_to: Phase we want to step to or "next" to go to next chapter or "end" to end tutorial. -- returns true if we changed phase, false if we didn't function GameUI:tutorialStep(chapter, phase_from, phase_to, ...) if self.tutorial.chapter ~= chapter then return false end if type(phase_from) == "table" then local contains_current = false for _, phase in ipairs(phase_from) do if phase == self.tutorial.phase then contains_current = true break end end if not contains_current then return false end else if self.tutorial.phase ~= phase_from then return false end end local old_phase = tutorial_phases[self.tutorial.chapter][self.tutorial.phase] if old_phase and old_phase.end_callback and type(old_phase.end_callback) == "function" then old_phase.end_callback(...) end if phase_to == "end" then self.tutorial.chapter = 0 self.tutorial.phase = 0 return true elseif phase_to == "next" then self.tutorial.chapter = self.tutorial.chapter + 1 self.tutorial.phase = 1 else self.tutorial.phase = phase_to end if TheApp.config.debug then print("Tutorial: Now in " .. self.tutorial.chapter .. ", " .. self.tutorial.phase) end local new_phase = tutorial_phases[self.tutorial.chapter][self.tutorial.phase] local str, callback if (type(new_phase) == "table" and type(new_phase.text) == "table") or not new_phase.text then str = new_phase.text callback = new_phase.begin_callback else str = new_phase end if str and str.text then self.adviser:say(str, true, true) else self.adviser.stay_up = nil end if callback then callback(...) end return true end function GameUI:startTutorial(chapter) chapter = chapter or 1 self.tutorial.chapter = chapter self.tutorial.phase = 0 self:tutorialStep(chapter, 0, 1) end function GameUI:setEditRoom(enabled) -- TODO: Make the room the cursor is over flash if enabled then self:setCursor(self.edit_room_cursor) self.edit_room = true else -- If the actual editing hasn't started yet but is on its way, -- activate the room again. if class.is(self.edit_room, Room) and self.cursor == self.waiting_cursor then self.edit_room.is_active = true else -- If we are currently editing a room it may happen that we need to abort it. -- Also remove any dialog where the user is buying items. local item_window = self.app.ui:getWindow(UIFurnishCorridor) if item_window and item_window.edit_dialog then item_window:close() end local edit_window = self.app.ui:getWindow(UIEditRoom) if edit_window then edit_window:verifyOrAbortRoom() end end self:setCursor(self.default_cursor) self.edit_room = false end end function GameUI:afterLoad(old, new) if old < 16 then self.zoom_factor = 1 end if old < 23 then self.do_world_hit_test = not self:getWindow(UIPlaceObjects) end if old < 28 then self:setRandomAnnouncementTarget() self.ticks_since_last_announcement = 0 end if old < 34 then self.adviser.queued_messages = {} self.adviser.phase = 0 self.adviser.timer = nil self.adviser.frame = 1 self.adviser.number_frames = 4 end if old < 70 then self:addKeyHandler({"shift", "a"}, self, self.toggleAdviser) end if old < 75 then self.current_momentum = { x = 0, y = 0 } self.momentum = self.app.config.scrolling_momentum end if old < 78 then self.current_momentum = { x = 0, y = 0, z = 0} end if old < 81 then self:removeKeyHandler("x", self, self.toggleWallsTransparent) self:addKeyHandler("z", self, self.keySpeedUp) self:addKeyHandler("x", self, self.keyTransparent) end if old < 115 then self.shake_screen_intensity = 0 end if old < 122 then self.multigesturemove = {x = 0.0, y = 0.0} end return UI.afterLoad(self, old, new) end function GameUI:showBriefing() local level = self.app.world.map.level_number local text = {_S.information.custom_game} if type(level) == "number" then text = {_S.introduction_texts[TheApp.using_demo_files and "demo" or "level" .. level]} elseif self.app.world.map.level_intro then text = {self.app.world.map.level_intro} end self:addWindow(UIInformation(self, text)) end --! Offers a confirmation window to quit the game and return to main menu -- NB: overrides UI.quit, do NOT call it from here function GameUI:quit() self:addWindow(UIConfirmDialog(self, _S.confirmation.quit, --[[persistable:gameui_confirm_quit]] function() self.app:loadMainMenu() end)) end function GameUI:showCheatsWindow() self:addWindow(UICheats(self)) end function GameUI:showMenuBar() self.menu_bar:appear() end CorsixTH-0.61/CorsixTH/Lua/graphics.lua000066400000000000000000000477311321660673500177170ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" local pathsep = package.config:sub(1, 1) local ourpath = debug.getinfo(1, "S").source:sub(2, -17) --! Layer for loading (and subsequently caching) graphical resources. --! The Graphics class handles loading and caching of graphics resources. -- It can adapt as the API to C changes, and hide these changes from most of -- the other Lua code. class "Graphics" ---@type Graphics local Graphics = _G["Graphics"] local cursors_name = { default = 1, clicked = 2, resize_room = 3, edit_room = 4, ns_arrow = 5, we_arrow = 6, nswe_arrow = 7, move_room = 8, sleep = 9, kill_rat = 10, kill_rat_hover = 11, epidemic_hover = 12, epidemic = 13, grab = 14, quit = 15, staff = 16, repair = 17, patient = 18, queue = 19, queue_drag = 20, bank = 36, banksummary = 44, } local cursors_palette = { [36] = "bank01v.pal", [44] = "stat01v.pal", } function Graphics:Graphics(app) self.app = app self.target = self.app.video -- The cache is used to avoid reloading an object if it is already loaded self.cache = { raw = {}, tabled = {}, palette = {}, palette_greyscale_ghost = {}, ghosts = {}, anims = {}, language_fonts = {}, cursors = setmetatable({}, {__mode = "k"}), } self.custom_graphics = {} -- The load info table records how objects were loaded, and is used to -- persist objects as instructions on how to load them. self.load_info = setmetatable({}, {__mode = "k"}) -- If the video target changes then resources will need to be reloaded -- (at least with some rendering engines). Note that reloading is different -- to loading (as in load_info), as reloading is done while the application -- is running, upon objects which are already loaded, whereas loading might -- be done with a different graphics engine, or might only need to grab an -- object from the cache. self.reload_functions = setmetatable({}, {__mode = "k"}) -- Cursors and fonts need to be reloaded after sprite sheets, as they are -- created from sprite sheets. self.reload_functions_last = setmetatable({}, {__mode = "k"}) self:loadFontFile() local graphics_folder = nil if self.app.config.use_new_graphics then -- Check if the config specifies a place to look for graphics in. -- Otherwise check in the default "Graphics" folder. graphics_folder = self.app.config.new_graphics_folder or ourpath .. "Graphics" if graphics_folder:sub(-1) ~= pathsep then graphics_folder = graphics_folder .. pathsep end local graphics_config_file = graphics_folder .. "file_mapping.txt" local result, err = loadfile_envcall(graphics_config_file) if not result then print("Warning: Failed to read custom graphics configuration:\n" .. err) else result(self.custom_graphics) if not self.custom_graphics.file_mapping then print("Error: An invalid custom graphics mapping file was found") end end end self.custom_graphics_folder = graphics_folder end --! Tries to load the font file given in the config file as unicode_font. --! If it is not found it tries to find one in the operating system. function Graphics:loadFontFile() -- Load the Unicode font, if there is one specified. local font_file = self.app.config.unicode_font if not font_file then -- Try a font which commonly comes with the operating system. local windir = os.getenv("WINDIR") if windir and windir ~= "" then font_file = windir .. pathsep .. "Fonts" .. pathsep .. "ARIALUNI.TTF" else font_file = "/usr/share/fonts/truetype/arphic/uming.ttc" end end font_file = font_file and io.open(font_file, "rb") if font_file then self.ttf_font_data = font_file:read"*a" font_file:close() end end function Graphics:loadMainCursor(id) if type(id) ~= "number" then id = cursors_name[id] end if id > 20 then -- SPointer cursors local cursor_palette = self:loadPalette("QData", cursors_palette[id]) cursor_palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent return self:loadCursor(self:loadSpriteTable("QData", "SPointer", false, cursor_palette), id - 20) else return self:loadCursor(self:loadSpriteTable("Data", "MPointer"), id) end end function Graphics:loadCursor(sheet, index, hot_x, hot_y) local sheet_cache = self.cache.cursors[sheet] if not sheet_cache then sheet_cache = {} self.cache.cursors[sheet] = sheet_cache end local cursor = sheet_cache[index] if not cursor then hot_x = hot_x or 0 hot_y = hot_y or 0 cursor = TH.cursor() if not cursor:load(sheet, index, hot_x, hot_y) then cursor = { draw = function(canvas, x, y) sheet:draw(canvas, index, x - hot_x, y - hot_y) end, } else local function cursor_reloader(res) assert(res:load(sheet, index, hot_x, hot_y)) end self.reload_functions_last[cursor] = cursor_reloader end sheet_cache[index] = cursor self.load_info[cursor] = {self.loadCursor, self, sheet, index, hot_x, hot_y} end return cursor end local function makeGreyscaleGhost(pal) local remap = {} -- Convert pal from a string to an array of palette entries local entries = {} for i = 1, #pal, 3 do local entry = {pal:byte(i, i + 2)} -- R, G, B at [1], [2], [3] entries[(i - 1) / 3] = entry end -- For each palette entry, convert it to grey and then find the nearest -- entry in the palette to that grey. for i = 0, #entries do local entry = entries[i] local grey = entry[1] * 0.299 + entry[2] * 0.587 + entry[3] * 0.114 local grey_index = 0 local grey_diff = 100000 -- greater than 3*63^2 (TH uses 6 bit colour channels) for j = 0, #entries do local replace_entry = entries[j] local diff_r = replace_entry[1] - grey local diff_g = replace_entry[2] - grey local diff_b = replace_entry[3] - grey local diff = diff_r * diff_r + diff_g * diff_g + diff_b * diff_b if diff < grey_diff then grey_diff = diff grey_index = j end end remap[i] = string.char(grey_index) end -- Convert remap from an array to a string return table.concat(remap, "", 0, 255) end function Graphics:loadPalette(dir, name) name = name or "MPalette.dat" if self.cache.palette[name] then return self.cache.palette[name], self.cache.palette_greyscale_ghost[name] end local data = self.app:readDataFile(dir or "Data", name) local palette = TH.palette() palette:load(data) self.cache.palette_greyscale_ghost[name] = makeGreyscaleGhost(data) self.cache.palette[name] = palette self.load_info[palette] = {self.loadPalette, self, dir, name} return palette, self.cache.palette_greyscale_ghost[name] end function Graphics:loadGhost(dir, name, index) local cached = self.cache.ghosts[name] if not cached then local data = self.app:readDataFile(dir, name) cached = data self.cache.ghosts[name] = cached end return cached:sub(index * 256 + 1, index * 256 + 256) end function Graphics:loadRaw(name, width, height, dir, paldir, pal) if self.cache.raw[name] then return self.cache.raw[name] end width = width or 640 height = height or 480 dir = dir or "QData" local data = self.app:readDataFile(dir, name .. ".dat") data = data:sub(1, width * height) local bitmap = TH.bitmap() local palette if pal and paldir then palette = self:loadPalette(paldir, pal) else palette = self:loadPalette(dir, name .. ".pal") end bitmap:setPalette(palette) assert(bitmap:load(data, width, self.target)) local function bitmap_reloader(bm) bm:setPalette(palette) local bitmap_data = self.app:readDataFile(dir, name .. ".dat") bitmap_data = bitmap_data:sub(1, width * height) assert(bm:load(bitmap_data, width, self.target)) end self.reload_functions[bitmap] = bitmap_reloader self.cache.raw[name] = bitmap self.load_info[bitmap] = {self.loadRaw, self, name, width, height, dir, paldir, pal} return bitmap end function Graphics:loadBuiltinFont() local font = self.builtin_font if not font then local dat, tab, pal = TH.GetBuiltinFont() local function dernc(x) if x:sub(1, 3) == "RNC" then return rnc.decompress(x) else return x end end local palette = TH.palette() palette:load(dernc(pal)) local sheet = TH.sheet() sheet:setPalette(palette) sheet:load(dernc(tab), dernc(dat), true, self.target) font = TH.bitmap_font() font:setSheet(sheet) font:setSeparation(1, 0) self.load_info[font] = {self.loadBuiltinFont, self} self.builtin_font = font end return font end function Graphics:hasLanguageFont(font) if font == nil then -- Original game fonts are always present. return true else if not TH.freetype_font then -- CorsixTH compiled without FreeType2 support, so even if suitable font -- file exists, it cannot be loaded or drawn. return false end -- TODO: Handle more than one font return not not self.ttf_font_data end end --! Font proxy meta table wrapping the C++ class. local font_proxy_mt = { __index = { sizeOf = function(self, ...) return self._proxy:sizeOf(...) end, draw = function(self, ...) return self._proxy:draw(...) end, drawWrapped = function(self, ...) return self._proxy:drawWrapped(...) end, drawTooltip = function(self, ...) return self._proxy:drawTooltip(...) end, } } function Graphics:onChangeLanguage() -- Some fonts might need changing between bitmap and freetype local load_info = self.load_info self.load_info = {} -- Any newly made objects are temporary, and shouldn't -- remember reload information (also avoids insertions -- into a table being iterated over). for object, info in pairs(load_info) do if object._proxy then local fn = info[1] local new_object = fn(unpack(info, 2)) object._proxy = new_object._proxy end end self.load_info = load_info end --! Font reload function. --!param font The font to (force) reloading. local function font_reloader(font) font:clearCache() end --! Utility function to return preferred font for main menu ui function Graphics:loadMenuFont() local font if self.language_font then font = self:loadFont("QData", "Font01V") else font = self:loadBuiltinFont() end return font end function Graphics:loadLanguageFont(name, sprite_table, ...) local font if name == nil then font = self:loadFont(sprite_table, ...) else local cache = self.cache.language_fonts[name] font = cache and cache[sprite_table] if not font then font = TH.freetype_font() -- TODO: Choose face based on "name" rather than always using same face. font:setFace(self.ttf_font_data) font:setSheet(sprite_table) self.reload_functions_last[font] = font_reloader if not cache then cache = {} self.cache.language_fonts[name] = cache end cache[sprite_table] = font end end self.load_info[font] = {self.loadLanguageFont, self, name, sprite_table, ...} return font end function Graphics:loadFont(sprite_table, x_sep, y_sep, ...) -- Allow (multiple) arguments for loading a sprite table in place of the -- sprite_table argument. if type(sprite_table) == "string" then local arg = {sprite_table, x_sep, y_sep, ...} local n_pass_on_args = #arg for i = 2, #arg do if type(arg[i]) == "number" then -- x_sep n_pass_on_args = i - 1 break end end sprite_table = self:loadSpriteTable(unpack(arg, 1, n_pass_on_args)) if n_pass_on_args < #arg then x_sep, y_sep = unpack(arg, n_pass_on_args + 1, #arg) else x_sep, y_sep = nil, nil end end local use_bitmap_font = true if not sprite_table:isVisible(46) then -- uppercase M -- The font doesn't contain an uppercase M, so (in all likelihood) is used -- for drawing special symbols rather than text, so the original bitmap -- font should be used. elseif self.language_font then use_bitmap_font = false end local font if use_bitmap_font then font = TH.bitmap_font() font:setSeparation(x_sep or 0, y_sep or 0) font:setSheet(sprite_table) else font = self:loadLanguageFont(self.language_font, sprite_table) end -- A change of language might cause the font to change between bitmap and -- freetype, so wrap it in a proxy object which allows the actual object to -- be changed easily. font = setmetatable({_proxy = font}, font_proxy_mt) self.load_info[font] = {self.loadFont, self, sprite_table, x_sep, y_sep, ...} return font end function Graphics:loadAnimations(dir, prefix) if self.cache.anims[prefix] then return self.cache.anims[prefix] end --! Load a custom animation file (if it can be found) --!param path Path to the file. local function loadCustomAnims(path) local file, err = io.open(path, "rb") if not file then return nil, err end local data = file:read"*a" file:close() return data end local sheet = self:loadSpriteTable(dir, prefix .. "Spr-0") local anims = TH.anims() anims:setSheet(sheet) if not anims:load( self.app:readDataFile(dir, prefix .. "Start-1.ani"), self.app:readDataFile(dir, prefix .. "Fra-1.ani"), self.app:readDataFile(dir, prefix .. "List-1.ani"), self.app:readDataFile(dir, prefix .. "Ele-1.ani")) then error("Cannot load original animations " .. prefix) end if self.custom_graphics_folder and self.custom_graphics.file_mapping then for _, fname in pairs(self.custom_graphics.file_mapping) do anims:setCanvas(self.target) local data, err = loadCustomAnims(self.custom_graphics_folder .. fname) if not data then print("Error when loading custom animations:\n" .. err) elseif not anims:loadCustom(data) then print("Warning: custom animations loading failed") end end end self.cache.anims[prefix] = anims self.load_info[anims] = {self.loadAnimations, self, dir, prefix} return anims end function Graphics:loadSpriteTable(dir, name, complex, palette) local cached = self.cache.tabled[name] if cached then return cached end local function sheet_reloader(sheet) sheet:setPalette(palette or self:loadPalette()) local data_tab, data_dat data_tab = self.app:readDataFile(dir, name .. ".tab") data_dat = self.app:readDataFile(dir, name .. ".dat") if not sheet:load(data_tab, data_dat, complex, self.target) then error("Cannot load sprite sheet " .. dir .. ":" .. name) end end local sheet = TH.sheet() self.reload_functions[sheet] = sheet_reloader sheet_reloader(sheet) if name ~= "SPointer" then self.cache.tabled[name] = sheet end self.load_info[sheet] = {self.loadSpriteTable, self, dir, name, complex, palette} return sheet end function Graphics:updateTarget(target) self.target = target for _, res_set in ipairs({"reload_functions", "reload_functions_last"}) do for resource, reloader in pairs(self[res_set]) do reloader(resource) end end end --! Utility class for setting animation markers and querying animation length. class "AnimationManager" ---@type AnimationManager local AnimationManager = _G["AnimationManager"] function AnimationManager:AnimationManager(anims) self.anim_length_cache = {} self.anims = anims end --! For overriding animations which have builtin repeats or excess frames function AnimationManager:setAnimLength(anim, length) self.anim_length_cache[anim] = length end function AnimationManager:getAnimLength(anim) local anims = self.anims if not self.anim_length_cache[anim] then local length = 0 local seen = {} local frame = anims:getFirstFrame(anim) while not seen[frame] do seen[frame] = true length = length + 1 frame = anims:getNextFrame(frame) end self.anim_length_cache[anim] = length end return self.anim_length_cache[anim] end --[[ Markers can be set using a variety of different arguments: setMarker(anim_number, position) setMarker(anim_number, start_position, end_position) setMarker(anim_number, keyframe_1, keyframe_1_position, keyframe_2, ...) position should be a table; {x, y} for a tile position, {x, y, "px"} for a pixel position, with (0, 0) being the origin in both cases. The first variant of setMarker sets the same marker for each frame. The second variant does linear interpolation of the two positions between the first frame and the last frame. The third variant does linear interpolation between keyframes, and then the final position for frames after the last keyframe. The keyframe arguments should be 0-based integers, as in the animation viewer. To set the markers for multiple animations at once, the anim_number argument can be a table, in which case the marker is set for all values in the table. Alternatively, the values function (defined in utility.lua) can be used in conjection with a for loop to set markers for multiple things. --]] function AnimationManager:setMarker(anim, ...) return self:setMarkerRaw(anim, "setFrameMarker", ...) end local function TableToPixels(t) if t[3] == "px" then return t[1], t[2] else local x, y = Map:WorldToScreen(t[1] + 1, t[2] + 1) return math.floor(x), math.floor(y) end end function AnimationManager:setMarkerRaw(anim, fn, arg1, arg2, ...) if type(anim) == "table" then for _, val in pairs(anim) do self:setMarkerRaw(val, fn, arg1, arg2, ...) end return end local tp_arg1 = type(arg1) local anim_length = self:getAnimLength(anim) local anims = self.anims local frame = anims:getFirstFrame(anim) if tp_arg1 == "table" then if arg2 then -- Linear-interpolation positions local x1, y1 = TableToPixels(arg1) local x2, y2 = TableToPixels(arg2) for i = 0, anim_length - 1 do local n = math.floor(i / (anim_length - 1)) anims[fn](anims, frame, (x2 - x1) * n + x1, (y2 - y1) * n + y1) frame = anims:getNextFrame(frame) end else -- Static position local x, y = TableToPixels(arg1) for _ = 1, anim_length do anims[fn](anims, frame, x, y) frame = anims:getNextFrame(frame) end end elseif tp_arg1 == "number" then -- Keyframe positions local f1, x1, y1 = 0, 0, 0 local args if arg1 == 0 then x1, y1 = TableToPixels(arg2) args = {...} else args = {arg1, arg2, ...} end local f2, x2, y2 local args_i = 1 for f = 0, anim_length - 1 do if f2 and f == f2 then f1, x1, y1 = f2, x2, y2 f2, x2, y2 = nil, nil, nil end if not f2 then f2 = args[args_i] if f2 then x2, y2 = TableToPixels(args[args_i + 1]) args_i = args_i + 2 end end if f2 then local n = math.floor((f - f1) / (f2 - f1)) anims[fn](anims, frame, (x2 - x1) * n + x1, (y2 - y1) * n + y1) else anims[fn](anims, frame, x1, y1) end frame = anims:getNextFrame(frame) end elseif tp_arg1 == "string" then error("TODO") else error("Invalid arguments to setMarker", 2) end end CorsixTH-0.61/CorsixTH/Lua/hospital.lua000066400000000000000000002550671321660673500177450ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "Hospital" ---@type Hospital local Hospital = _G["Hospital"] function Hospital:Hospital(world, avail_rooms, name) self.world = world local level_config = world.map.level_config local level = world.map.level_number local balance = 40000 local interest_rate = 0.01 if level_config then if level_config.towns and level_config.towns[level] then balance = level_config.towns[level].StartCash interest_rate = level_config.towns[level].InterestRate / 10000 elseif level_config.town then balance = level_config.town.StartCash interest_rate = level_config.town.InterestRate / 10000 end end self.name = name or "PLAYER" -- TODO: Variate initial reputation etc based on level -- When playing in free build mode you don't care about money. self.balance = not world.free_build_mode and balance or 0 self.loan = 0 self.acc_loan_interest = 0 self.acc_research_cost = 0 self.acc_overdraft = 0 self.acc_heating = 0 self.discover_autopsy_risk = 10 -- The sum of all material values (tiles, rooms, objects). -- Initial value: hospital tile count * tile value + 20000 self.value = world.map:getParcelPrice(self:getPlayerIndex()) + 20000 -- TODO: With the fame/shame screen and scoring comes salary. self.player_salary = 10000 self.salary_offer = 0 self.handymanTasks = {} -- Represents the "active" epidemic non-nil if -- an epidemic is happening currently in the hospital -- Only one epidemic is ever "active" self.epidemic = nil -- The pool of epidemics which may happen in the future. -- Epidemic in this table continue in the background its -- patients infecting each other. Epidemics are chosen from -- this pool to become the "active" epidemic self.future_epidemics_pool = {} -- How many epidemics can exist simultaneously counting current and future -- epidemics. If epidemic_limit = 1 then only one epidemic can exist at a -- time either in the futures pool or as a current epidemic. self.concurrent_epidemic_limit = level_config.gbv.EpidemicConcurrentLimit or 1 -- Initial values self.interest_rate = interest_rate self.inflation_rate = 0.045 self.salary_incr = level_config.gbv.ScoreMaxInc or 300 self.sal_min = level_config.gbv.ScoreMaxInc / 6 or 50 self.reputation = 500 self.reputation_min = 0 self.reputation_max = 1000 -- Price distortion level under which the patients might consider the -- treatment to be under-priced (TODO: This could depend on difficulty and/or -- level; e.g. Easy: -0.3 / Difficult: -0.5) self.under_priced_threshold = -0.4 -- Price distortion level over which the patients might consider the -- treatment to be over-priced (TODO: This could depend on difficulty and/or -- level; e.g. Easy: 0.4 / Difficult: 0.2) self.over_priced_threshold = 0.3 self.radiator_heat = 0.5 self.num_visitors = 0 self.num_deaths = 0 self.num_deaths_this_year = 0 self.num_cured = 0 self.not_cured = 0 self.seating_warning = 0 self.num_explosions = 0 self.announce_vip = 0 self.vip_declined = 0 self.num_vips = 0 -- used to check if it's the user's first vip self.percentage_cured = 0 self.percentage_killed = 0 self.msg_counter = 0 self.population = 0.25 -- TODO: Percentage showing how much of -- the total population that goes to the player's hospital, -- used for one of the goals. Change when competitors are there. -- Since there are none right now the player's hospital always get -- 50 % of all patients as soon as gbv.AllocDelay has expired. -- Statistics used in the graph dialog. Each entry is the month, inside it -- is "money in", "money out", wages, balance, visitors, cures, deaths, reputation -- statistic[i] shows what the values were when going from month i - 1 to i. self.statistics = { { money_in = 0, money_out = 0, wages = 0, balance = balance, visitors = 0, cures = 0, deaths = 0, reputation = 500, -- TODO: Always 500 from the beginning? } } self.money_in = 0 self.money_out = 0 -- Other statistics, back to zero each year self.sodas_sold = 0 self:checkReputation() -- Reset self.reputation_above_threshold self.num_vips_ty = 0 -- used to count how many VIP visits in the year for an award self.pleased_vips_ty = 0 self.num_cured_ty = 0 self.not_cured_ty = 0 self.num_visitors_ty = 0 self.ownedPlots = {1} -- Plots owned by the hospital self.ratholes = {} -- List of table {x, y, wall, parcel, optional object} for ratholes in the hospital corridors. self.is_in_world = true -- Whether the hospital is in this world (AI hospitals are not) self.opened = false self.transactions = {} self.staff = {} self.patients = {} self.debug_patients = {} -- right-click-commandable patients for testing self.disease_casebook = {} self.policies = {} self.discovered_diseases = {} -- a list self.discovered_rooms = {} -- a set; keys are the entries of TheApp.rooms, values are true or nil self.undiscovered_rooms = {} -- NB: These two together must form the list world.available_rooms for _, avail_room in ipairs(avail_rooms) do if avail_room.is_discovered then self.discovered_rooms[avail_room.room] = true else self.undiscovered_rooms[avail_room.room] = true end end self.policies["staff_allowed_to_move"] = true self.policies["send_home"] = 0.1 self.policies["guess_cure"] = 0.9 self.policies["stop_procedure"] = 1 -- Note that this is between 1 and 2 ( = 100% - 200%) self.policies["goto_staffroom"] = 0.6 self.policies["grant_wage_increase"] = TheApp.config.grant_wage_increase -- Randomly select three insurance companies to use, only different by name right now. -- The first ones are more likely to come self.insurance = {} for no, local_name in ipairs(_S.insurance_companies) do -- NOTE: Will not work if more companies are added if math.random(1, 11) < 4 or 11 - no < #self.insurance + 3 then self.insurance[#self.insurance + 1] = local_name end if #self.insurance > 2 then break end end -- A list of how much each insurance company owes you. The first entry for -- each company is the current month's dept, the second the previous -- month and the third the month before that. -- All payment that goes through an insurance company a given month is paid two -- months later. For example diagnoses in April are paid the 1st of July self.insurance_balance = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}} -- Initialize diseases local diseases = TheApp.diseases local expertise = level_config.expertise local gbv = level_config.gbv for _, disease in ipairs(diseases) do local disease_available = true local drug_effectiveness = 95 local drug = disease.treatment_rooms and disease.treatment_rooms[1] == "pharmacy" or nil local drug_cost = 100 if expertise then disease_available = expertise[disease.expertise_id].Known == 1 -- This means that the config is available drug_effectiveness = gbv.StartRating drug_cost = gbv.StartCost end if world.available_diseases[disease.id] or disease.pseudo then local info = { reputation = not disease.pseudo and 500 or nil, price = 1.0, -- user-set multiplier between 0.5 and 2.0 money_earned = 0, recoveries = 0, fatalities = 0, turned_away = 0, disease = disease, discovered = disease_available, concentrate_research = false, cure_effectiveness = drug and drug_effectiveness or 100, -- This will only work as long as there's only one treatment room. drug = drug, drug_cost = drug and drug_cost, psychiatrist = disease.treatment_rooms and disease.treatment_rooms[1] == "psych" or nil, machine = disease.requires_machine, -- This assumes we always have the ward then the operating_theatre as treatment rooms. surgeon = disease.treatment_rooms and disease.treatment_rooms[2] == "operating_theatre" or nil, researcher = disease.requires_researcher, -- TODO: Fix when aliens are in the game. pseudo = disease.pseudo, -- Diagnosis is pseudo } self.disease_casebook[disease.id] = info if disease_available and not disease.pseudo then self.discovered_diseases[#self.discovered_diseases + 1] = disease.id end end end self.research = ResearchDepartment(self) -- Initialize build cost for all available rooms. for _, avail_room in ipairs(avail_rooms) do self.research.research_progress[avail_room.room] = { -- In free build mode, everything is freely available. build_cost = not self.free_build_mode and avail_room.build_cost or 0, } end end -- Seasoned players will know these things, but it does not harm to be reminded if there is no staff room or toilet! function Hospital:noStaffroom_msg() local staffroom_msg = { (_A.warnings.build_staffroom), (_A.warnings.need_staffroom), (_A.warnings.staff_overworked), (_A.warnings.staff_tired), } if staffroom_msg then self.world.ui.adviser:say(staffroom_msg[math.random(1, #staffroom_msg)]) self.staff_room_msg = true end end function Hospital:noToilet_msg() local toilet_msg = { (_A.warnings.need_toilets), (_A.warnings.build_toilets), (_A.warnings.build_toilet_now), } if toilet_msg then self.world.ui.adviser:say(toilet_msg[math.random(1, #toilet_msg)]) self.toilet_msg = true end end -- Give praise where it is due function Hospital:praiseBench() local bench_msg = { (_A.praise.many_benches), (_A.praise.plenty_of_benches), (_A.praise.few_have_to_stand), } if bench_msg then self.world.ui.adviser:say(bench_msg[math.random(1, #bench_msg)]) self.bench_msg = true end end --! Messages regarding numbers cured and killed function Hospital:msgCured() local msg_chance = math.random(1, 15) if self.num_cured > 1 then if msg_chance == 3 and self.msg_counter > 10 then self.world.ui.adviser:say(_A.level_progress.another_patient_cured:format(self.num_cured)) self.msg_counter = 0 elseif msg_chance == 12 and self.msg_counter > 10 then self.world.ui.adviser:say(_A.praise.patients_cured:format(self.num_cured)) self.msg_counter = 0 end end end --! So the messages don't show too often there will need to be at least 10 days before one can show again. function Hospital:msgKilled() local msg_chance = math.random(1, 10) if self.num_deaths > 1 then if msg_chance < 4 and self.msg_counter > 10 then self.world.ui.adviser:say(_A.warnings.many_killed:format(self.num_deaths)) self.msg_counter = 0 elseif msg_chance > 7 and self.msg_counter > 10 then self.world.ui.adviser:say(_A.level_progress.another_patient_killed:format(self.num_deaths)) self.msg_counter = 0 end end end -- Warn if the hospital is lacking some basics function Hospital:warningBench() local bench_msg = { (_A.warnings.more_benches), (_A.warnings.people_have_to_stand), } if bench_msg then self.world.ui.adviser:say(bench_msg[math.random(1, #bench_msg)]) self.bench_msg = true end end -- Warn when it is too hot function Hospital:warningTooHot() local hot_msg = { (_A.information.initial_general_advice.decrease_heating), (_A.warnings.patients_too_hot), (_A.warnings.patients_getting_hot), } if hot_msg then self.world.ui.adviser:say(hot_msg[math.random(1, #hot_msg)]) self.warmth_msg = true end end -- Warn when it is too cold function Hospital:warningTooCold() local cold_msg = { (_A.information.initial_general_advice.increase_heating), (_A.warnings.patients_very_cold), (_A.warnings.people_freezing), } if cold_msg then self.world.ui.adviser:say(cold_msg[math.random(1, #cold_msg)]) self.warmth_msg = true end end function Hospital:warningThirst() local thirst_msg = { (_A.warnings.patients_thirsty), (_A.warnings.patients_thirsty2), } if thirst_msg then self.world.ui.adviser:say(thirst_msg[math.random(1, #thirst_msg)]) self.thirst_msg = true end end -- Remind the player when cash is low that a loan might be available function Hospital:cashLow() -- Don't remind in free build mode. if self.world.free_build_mode then return end local hosp = self.world.hospitals[1] local cashlowmessage = { (_A.warnings.money_low), (_A.warnings.money_very_low_take_loan), (_A.warnings.cash_low_consider_loan), } if hosp.balance < 2000 and hosp.balance >= -500 then hosp.world.ui.adviser:say(cashlowmessage[math.random(1, #cashlowmessage)]) elseif hosp.balance < -2000 and hosp.world.month > 8 then -- ideally this should be linked to the lose criteria for balance hosp.world.ui.adviser:say(_A.warnings.bankruptcy_imminent) end end function Hospital:afterLoad(old, new) if old < 8 then -- The list of discovered rooms was not saved. The best we can do is make everything -- discovered which is available for the level. self.discovered_rooms = {} for _, room in ipairs(self.world.available_rooms) do self.discovered_rooms[room] = true end end if old < 9 then -- Initial opening added self.opened = true end if old < 14 then -- NOTE: This will no longer work, but cluttering the code with stub functions -- for this "old" compatibility, is it necessary? self:_initResearch() end if old < 19 then -- The statistics on the current map will be wrong, but it's better than nothing. self.num_visitors = 0 self.player_salary = 10000 self.sodas_sold = 0 end if old < 20 then -- New variables self.acc_loan_interest = 0 self.acc_research_cost = 0 -- Go through all diseases and remove individual reputation for diagnoses for _, disease in pairs(self.disease_casebook) do if disease.pseudo == true then disease.reputation = nil end end -- Go through all possible rooms and add those not researched to the research list. self.research_rooms = {} local next_diag = nil local next_cure = nil for _, room in ipairs(self.world.available_rooms) do if not self.discovered_rooms[room] then self.research_rooms[room] = 0 if room.categories.diagnosis then next_diag = room else next_cure = room end end end -- Go through all rooms and find if a research department has been built -- Also check for training rooms where the training_factor needs to be set for _, room in pairs(self.world.rooms) do if room.room_info.id == "research" then self.research_dep_built = true elseif room.room_info.id == "training" then -- A standard value to keep things going room.training_factor = 5 end end -- Redefine the research table self.research = { improvements = {frac = 20, points = 0, current = "inflation"}, drugs = {frac = 20, points = 0, current = "invisibility"}, diagnosis = {frac = 20, points = 0, current = next_diag}, cure = {frac = 20, points = 0, current = next_cure}, specialisation = {frac = 20, points = 0, current = "special"}, global = 100, } self.discover_autopsy_risk = 10 end if old < 24 then -- New variables self.salary_incr = 300 self.sal_min = 50 self.salary_offer = 0 end if old < 25 then self.insurance_balance = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}} self.num_deaths_this_year = 0 end if old < 30 then if self.emergency then self.emergency.percentage = 0.75 end end if old < 33 then -- Research has been revamped and expanded. Drugs and improvements -- will work fine, but room research needs to be rebuilt. local research = ResearchDepartment(self) self.undiscovered_rooms = {} local cure, diagnosis local cfg_objects = self.world.map.level_config.objects for _, room in ipairs(self.world.available_rooms) do -- If a room is discovered, make sure its objects are also -- discovered, otherwise add it to the undiscovered list. if self.discovered_rooms[room] then for name, _ in pairs(room.objects_needed) do local object = TheApp.objects[name] if cfg_objects[object.thob] and cfg_objects[object.thob].AvailableForLevel == 1 and object.research_category and not research.research_progress[object].discovered then local progress = self.research_rooms[room] if self.research.cure.current == room or self.research.diagnosis.current == room then progress = progress + self.research.diagnosis.points end research.research_progress[object].discovered = true research.research_progress[object].points = progress end end else self.undiscovered_rooms[room] = true if not cure or not diagnosis then for name, _ in pairs(room.objects_needed) do local object = TheApp.objects[name] if cfg_objects[object.thob] and cfg_objects[object.thob].AvailableForLevel == 1 and object.research_category and not research.research_progress[object].discovered then if object.research_category == "cure" then cure = object elseif object.research_category == "diagnosis" then diagnosis = object end end end end end end local policy = research.research_policy if cure then policy.cure.current = cure else policy.global = policy.global - policy.cure.frac policy.cure.frac = 0 end if diagnosis then research.research_policy.diagnosis.current = diagnosis else policy.global = policy.global - policy.diagnosis.frac policy.diagnosis.frac = 0 end self.research = research self.research_rooms = nil -- Cost of rooms has also been changed local rooms = self.world.map.level_config.rooms if not rooms then -- Add the new variables manually. rooms = { [7] = {Cost = 2280}, -- GP_OFFICE [8] = {Cost = 2270}, -- PSYCHO [9] = {Cost = 1700}, -- WARD [10] = {Cost = 2250}, -- OP_THEATRE [11] = {Cost = 500}, -- PHARMACY [12] = {Cost = 470}, -- CARDIO [13] = {Cost = 3970}, -- SCANNER [14] = {Cost = 2000}, -- ULTRASCAN [15] = {Cost = 3000}, -- BLOOD_MACHINE [16] = {Cost = 2000}, -- XRAY [17] = {Cost = 1500}, -- INFLATOR [18] = {Cost = 7000}, -- ALIEN [19] = {Cost = 500}, -- HAIR_RESTORER [20] = {Cost = 1500}, -- SLACK_TONGUE [21] = {Cost = 500}, -- FRACTURE [22] = {Cost = 1850}, -- TRAINING [23] = {Cost = 500}, -- ELECTRO [24] = {Cost = 4500}, -- JELLY_VAT [25] = {Cost = 1350}, -- STAFF ROOM [26] = {Cost = 5}, -- TV ?? [27] = {Cost = 720}, -- GENERAL_DIAG [28] = {Cost = 800}, -- RESEARCH [29] = {Cost = 1170}, -- TOILETS [30] = {Cost = 5500}, -- DECON_SHOWER } self.world.map.level_config.rooms = rooms end for _, room in ipairs(TheApp.rooms) do -- Sum up the build cost of the room local build_cost = rooms[room.level_config_id].Cost for name, no in pairs(room.objects_needed) do -- Add cost for this object. build_cost = build_cost + cfg_objects[TheApp.objects[name].thob].StartCost * no end -- Now define the total build cost for the room. room.build_cost = build_cost end end if old < 34 then -- New variable self.acc_overdraft = 0 end if old < 35 then -- Define build costs for rooms once again. local cfg_objects = self.world.map.level_config.objects local cfg_rooms = self.world.map.level_config.rooms for _, room in ipairs(TheApp.rooms) do -- Sum up the build cost of the room local build_cost = cfg_rooms[room.level_config_id].Cost for name, no in pairs(room.objects_needed) do -- Add cost for this object. build_cost = build_cost + cfg_objects[TheApp.objects[name].thob].StartCost * no end -- Now define the total build cost for the room. self.research.research_progress[room] = { build_cost = build_cost, } end end if old < 39 then self.acc_heating = 0 end if old < 40 then self.statistics = {} self.money_in = 0 self.money_out = 0 end if old < 41 then self.boiler_can_break = true end if old < 45 then self.num_explosions = 0 self.num_vips = 0 end if old < 48 then self.seating_warning = 0 end if old < 50 then self.num_vips_ty = 0 self.pleased_vips_ty = 0 self.num_cured_ty = 0 self.not_cured_ty = 0 self.num_visitors_ty = 0 end if old < 52 then self:initOwnedPlots() self.handymanTasks = {} end if old < 54 then local current = self.research.research_policy.specialisation.current if current and not current.dummy and not current.thob and not current.drug then for _, disease_entry in pairs(self.disease_casebook) do if disease_entry.concentrate_research then self.research:concentrateResearch(disease_entry.disease.id) self.research:concentrateResearch(disease_entry.disease.id) end end end end if old < 56 then self.research_dep_built = false end if old < 76 then self.msg_counter = 0 end if old < 84 then self.vip_declined = 0 end if old < 88 then self.future_epidemics_pool = {} self.concurrent_epidemic_limit = self.world.map.level_config.gbv.EpidemicConcurrentLimit or 1 end if old < 107 then self.reception_desks = nil end if old < 109 then -- price distortion self.under_priced_threshold = -0.4 self.over_priced_threshold = 0.3 end if old < 111 then self.initial_grace = nil end if old < 114 then self.ratholes = {} end -- Update other objects in the hospital (added in version 106). if self.epidemic then self.epidemic.afterLoad(old, new) end for _, future_epidemic in ipairs(self.future_epidemics_pool) do future_epidemic.afterLoad(old, new) end self.research.afterLoad(old, new) end --! Update the Hospital.patientcount variable. function Hospital:countPatients() -- I have taken the patient count out of town map, from memory it does not work the other way round. -- i.e. calling it from town map to use here -- so Town map now takes this information from here. (If I am wrong, put it back) self.patientcount = 0 for _, patient in ipairs(self.patients) do -- only count patients that are in the hospital local tx, ty = patient.tile_x, patient.tile_y if tx and ty and self:isInHospital(tx, ty) then self.patientcount = self.patientcount + 1 end end end --! Count number of sitting and standing patients in the hospital. --!return (integer, integer) Number of sitting and number of standing patient in the hospital. function Hospital:countSittingStanding() local numberSitting = 0 local numberStanding = 0 for _, patient in ipairs(self.patients) do local pat_action = patient.action_queue[1] if pat_action.name == "idle" then numberStanding = numberStanding + 1 elseif pat_action.name == "use_object" and pat_action.object.object_type.id == "bench" then numberSitting = numberSitting + 1 end end return numberSitting, numberStanding end -- A range of checks to help a new player. These are set days apart and will show no more than once a month function Hospital:checkFacilities() if self.hospital and self:isPlayerHospital() then -- If there is no staff room, remind player of the need to build one if self.world.day == 3 and not self:hasRoomOfType("staff_room") then if self.world.month > 4 and not self.staff_room_msg then self:noStaffroom_msg() elseif self.world.year > 1 then self:noStaffroom_msg() end end -- If there is no toilet, remind player of the need to build one if self.world.day == 8 and not self:hasRoomOfType("toilets") then if self.world.month > 4 and not self.toilet_msg then self:noToilet_msg() elseif self.world.year > 1 then self:noToilet_msg() end end -- How are we for seating, if there are plenty then praise is due, if not the player is warned -- We don't want to see praise messages about seating every month, so randomise the chances of it being shown -- check the seating : standing ratio of waiting patients -- find all the patients who are currently waiting around local show_msg = math.random(1, 4) local numberSitting, numberStanding = self:countSittingStanding() -- If there are patients standing then maybe the seating is in the wrong place! -- set to 5% (standing:seated) if there are more than 50 patients or 20% if there are less than 50. -- If this happens for 10 days in any month you are warned about seating unless you have already been warned that month -- So there are now two checks about having enough seating, if either are called then you won't receive praise. (may need balancing) if self.patientcount < 50 then if numberStanding > math.min(numberSitting / 5) then self.seating_warning = self.seating_warning + 1 end else if numberStanding > math.min(numberSitting / 20) then self.seating_warning = self.seating_warning + 1 end if self.seating_warning >= 10 and not self.bench_msg then self:warningBench() self.seating_warning = 0 end end if self.world.day == 12 and show_msg == 4 and not self.bench_msg and (self.world.year > 1 or (self.world.year == 1 and self.world.month > 4)) then -- If there are less patients standing than sitting (1:20) and there are more benches than patients in the hospital -- you have plenty of seating. If you have not been warned of standing patients in the last month, you could be praised. if self.world.object_counts.bench > self.patientcount then self:praiseBench() -- Are there enough benches for the volume of patients in your hospital? elseif self.world.object_counts.bench < self.patientcount then self:warningBench() end end -- Make players more aware of the need for radiators and how hot or cold the patients and staff are -- If there are no radiators remind the player from May onwards if self.world.object_counts.radiator == 0 and self.world.month > 4 and self.world.day == 15 then self.world.ui.adviser:say(_A.information.initial_general_advice.place_radiators) end -- Now to check how warm or cold patients and staff are. So that we are not bombarded with warmth -- messages if we are told about patients then we won't be told about staff as well in the same month -- And unlike TH we don't want to be told that anyone is too hot or cold when the boiler is broken do we! if not self.heating_broke then if not self.warmth_msg and self.world.day == 15 then local warmth = self:getAveragePatientAttribute("warmth", 0.3) -- Default value does not result in a message. if (self.world.year > 1 or self.world.month > 4) and warmth < 0.22 then self:warningTooCold() elseif self.world.month > 4 and warmth >= 0.36 then self:warningTooHot() end end -- Are the staff warm enough? if not self.warmth_msg and self.world.day == 20 then local avgWarmth = self:getAverageStaffAttribute("warmth", 0.25) -- Default value does not result in a message. if (self.world.year > 1 or self.world.month > 4) and avgWarmth < 0.22 then self.world.ui.adviser:say(_A.warnings.staff_very_cold) elseif self.world.month > 4 and avgWarmth >= 0.36 then self.world.ui.adviser:say(_A.warnings.staff_too_hot) end end end -- Are the patients in need of a drink if not self.thirst_msg and self.world.day == 24 then local thirst = self:getAveragePatientAttribute("thirst", 0) -- Default value does not result in a message. if self.world.year == 1 and self.world.month > 4 then if thirst > 0.8 then self.world.ui.adviser:say(_A.warnings.patients_very_thirsty) elseif thirst > 0.6 then self:warningThirst() end elseif self.world.year > 1 then if thirst > 0.9 then self.world.ui.adviser:say(_A.warnings.patients_very_thirsty) elseif thirst > 0.6 then self:warningThirst() end end end -- reset all the messages on 28th of each month if self.world.day == 28 then self.staff_room_msg = false self.toilet_msg = false self.bench_msg = false self.cash_msg = false self.warmth_msg = false self.thirst_msg = false self.seating_warning = 0 end end end --! Called each tick, also called 'hours'. Check hours_per_day in --! world.lua to see how many times per day this is. function Hospital:tick() -- add some random background sounds, ringing phones, coughing, belching etc self:countPatients() local sounds = { "ispot001.wav", "ispot002.wav", "ispot003.wav", "ispot004.wav", "ispot005.wav", "ispot006.wav", "ispot007.wav", "ispot008.wav", "ispot009.wav", "ispot010.wav", "ispot011.wav", "ispot012.wav", "ispot013.wav", "ispot014.wav", "ispot015.wav", "ispot016.wav", "ispot017.wav", "ispot018.wav", "ispot019.wav", "ispot020.wav", "ispot021.wav", "ispot022.wav", "ispot023.wav", "ispot024.wav", "ispot025.wav" } -- ispot026 and ispot027 are both toilet related sounds -- wait until there are some patients in the hospital and a room, otherwise you will wonder who is coughing or who is the -- receptionist telephoning! opted for gp as you can't run the hospital without one. if self:hasRoomOfType("gp") and self.patientcount > 2 then if math.random(1, 100) == 3 then local sound_to_play = sounds[math.random(1, #sounds)] if TheApp.audio:soundExists(sound_to_play) then self.world.ui:playSound(sound_to_play) end end end self:manageEpidemics() end function Hospital:purchasePlot(plot_number) local map = self.world.map if map.th:isParcelPurchasable(plot_number, self:getPlayerIndex()) and not self.world.ui.transparent_walls then local cost = not self.world.free_build_mode and map:getParcelPrice(plot_number) or 0 if cost <= self.balance then self.world:setPlotOwner(plot_number, self:getPlayerIndex()) table.insert(self.ownedPlots, plot_number) -- Also make sure to apply transparency to the new walls, if required. self.world.ui:applyTransparency() self:spendMoney(cost, _S.transactions.buy_land, cost) return true else -- Give visual warning that player doesn't have enough $ to build -- Let the message remain unitl cancelled by the player as it is being displayed behind the town map self.world.ui.adviser:say(_A.warnings.cannot_afford_2, true, true) end end return false end function Hospital:getPlayerIndex() -- TODO: In multiplayer, return 2 or 3 or 4 return 1 end --! Returns the heliport x and y coordinates or nil if none exist. --!return (pair of integers, or nil) The x,y position of the tile with the heliport, if it exists. function Hospital:getHeliportPosition() local x, y = self.world.map.th:getHeliportTile(self:getPlayerIndex()) -- NB: Level 2 has a heliport tile set, but no heliport, so we ensure that -- the specified tile is suitable by checking the spawn tile for -- passability. if y > 0 and self.world.map:getCellFlag(x, y, "passable") then return x, y end end --! Returns the tile on which patients should spawn when getting out of the helicopter. --!return (pair of integers, or nil) The x,y position to use for spawning emergency patients from the heliport, if available. function Hospital:getHeliportSpawnPosition() local x, y = self:getHeliportPosition() if x and y then return x, y - 1 end end --[[ Test if a given map tile is part of this hospital. !param x (integer) The 1-based X co-ordinate of the tile to test. !param y (integer) The 1-based Y co-ordinate of the tile to test. ]] function Hospital:isInHospital(x, y) local flags = self.world.map.th:getCellFlags(x, y) return flags.hospital and flags.owner == self:getPlayerIndex() end function Hospital:coldWarning() local announcements = { "sorry002.wav", "sorry004.wav", } if announcements and self:isPlayerHospital() then self.world.ui:playAnnouncement(announcements[math.random(1, #announcements)]) end end function Hospital:hotWarning() local announcements = { "sorry003.wav", "sorry004.wav", } if announcements and self:isPlayerHospital() then self.world.ui:playAnnouncement(announcements[math.random(1, #announcements)]) end end -- Called when the hospitals's boiler has broken down. -- It will remain broken for a certain period of time. function Hospital:boilerBreakdown() self.curr_setting = self.radiator_heat self.radiator_heat = math.random(0, 1) self.boiler_countdown = math.random(7, 25) self.heating_broke = true -- Only show the message when relevant to the local player's hospital. if self:isPlayerHospital() then if self.radiator_heat == 0 then self.world.ui.adviser:say(_A.boiler_issue.minimum_heat) self:coldWarning() else self.world.ui.adviser:say(_A.boiler_issue.maximum_heat) self:hotWarning() end end end -- When the boiler has been repaired this function is called. function Hospital:boilerFixed() self.radiator_heat = self.curr_setting self.heating_broke = false if self:isPlayerHospital() then self.world.ui.adviser:say(_A.boiler_issue.resolved) end end --! Daily update of the ratholes. --!param self (Hospital) hospital being updated. local function dailyUpdateRatholes(self) local map = self.world.map local th = map.th local wanted_holes = math.round(th:getLitterFraction(self:getPlayerIndex()) * 200) if #self.ratholes < wanted_holes then -- Not enough holes, find a new spot -- Try to find a wall in a corridor, and add it if possible. -- Each iteration does a few probes at a random position, most tries will -- fail on not being on a free (non-built) tile in a corridor with a wall -- in the right hospital. -- Doing more iterations speeds up finding a suitable location, less -- iterations is reduces needed processor time. -- "6 + 2 * difference" is an arbitrary value that seems to work nicely, 12 -- is an arbitrary upper limit on the number of tries. for _ = 1, math.min(12, 6 + 2 * (wanted_holes - #self.ratholes)) do local x = math.random(1, map.width) local y = math.random(1, map.height) local flags = th:getCellFlags(x, y) if self:isInHospital(x, y) and flags.roomId == 0 and flags.buildable then local walls = self:getWallsAround(x, y) if #walls > 0 then -- Found a wall, check it for not being used. local wall = walls[math.random(1, #walls)] local found = false for _, hole in ipairs(self.ratholes) do if hole.x == x and hole.y == y and hole.wall == wall.wall then found = true break end end if not found then self:addRathole(x, y, wall.wall, wall.parcel) break end end end end end end -- Called at the end of each day. function Hospital:onEndDay() local pay_this = self.loan*self.interest_rate/365 -- No leap years self.acc_loan_interest = self.acc_loan_interest + pay_this self.research:researchCost() if self:hasStaffedDesk() then self:checkFacilities() end self.show_progress_screen_warnings = math.random(1, 3) -- used in progress report to limit warnings self.msg_counter = self.msg_counter + 1 if self.balance < 0 then -- TODO: Add the extra interest rate to level configuration. local overdraft_interest = self.interest_rate + 0.02 local overdraft = math.abs(self.balance) local overdraft_payment = (overdraft*overdraft_interest)/365 self.acc_overdraft = self.acc_overdraft + overdraft_payment end local hosp = self.world.hospitals[1] hosp.receptionist_count = 0 for _, staff in ipairs(self.staff) do if staff.humanoid_class == "Receptionist" then hosp.receptionist_count = hosp.receptionist_count + 1 end end -- check if we still have to announce VIP visit if self.announce_vip > 0 then -- check if the VIP is in the building yet for _, e in ipairs(self.world.entities) do if e.humanoid_class == "VIP" and e.announced == false then if self:isInHospital(e.tile_x, e.tile_y) and self:isPlayerHospital() then -- play VIP arrival sound and show tooltips e:announce() e.announced = true self.announce_vip = self.announce_vip - 1 end end end end -- Countdown for boiler breakdowns if self.heating_broke then self.boiler_countdown = self.boiler_countdown - 1 if self.boiler_countdown == 0 then self:boilerFixed() end end -- Is the boiler working today? local breakdown = math.random(1, 240) if breakdown == 1 and not self.heating_broke and self.boiler_can_break and self.world.object_counts.radiator > 0 then if tonumber(self.world.map.level_number) then if self.world.map.level_number == 1 and (self.world.month > 5 or self.world.year > 1) then self:boilerBreakdown() elseif self.world.map.level_number > 1 then self:boilerBreakdown() end else self:boilerBreakdown() end end -- Calculate heating cost daily. Divide the monthly cost by the number of days in that month local month_length = { 31, -- Jan 28, -- Feb 31, -- Mar 30, -- Apr 31, -- May 30, -- Jun 31, -- Jul 31, -- Aug 30, -- Sep 31, -- Oct 30, -- Nov 31, -- Dec } local radiators = self.world.object_counts.radiator local heating_costs = (((self.radiator_heat * 10) * radiators) * 7.50) / month_length[self.world.month] self.acc_heating = self.acc_heating + heating_costs if self:isPlayerHospital() then dailyUpdateRatholes(self) end end -- Called at the end of each month. function Hospital:onEndMonth() -- Spend wages local wages = 0 for _, staff in ipairs(self.staff) do wages = wages + staff.profile.wage end if wages ~= 0 then self:spendMoney(wages, _S.transactions.wages) end -- Pay heating costs if math.round(self.acc_heating) > 0 then self:spendMoney(math.round(self.acc_heating), _S.transactions.heating) self.acc_heating = 0 end -- how is the bank balance if self:isPlayerHospital() then if self.balance < 1000 and not self.cash_msg then self:cashLow() elseif self.balance > 6000 and self.loan > 0 and not self.cash_ms then self.world.ui.adviser:say(_A.warnings.pay_back_loan) end self.cash_msg = true end -- Pay interest on loans if math.round(self.acc_loan_interest) > 0 then self:spendMoney(math.round(self.acc_loan_interest), _S.transactions.loan_interest) self.acc_loan_interest = 0 end -- Pay overdraft charges if math.round(self.acc_overdraft) > 0 then self:spendMoney(math.round(self.acc_overdraft), _S.transactions.overdraft) self.acc_overdraft = 0 end -- Pay research costs if math.round(self.acc_research_cost) > 0 then self:spendMoney(math.round(self.acc_research_cost), _S.transactions.research) self.acc_research_cost = 0 end -- add to score each month -- rate varies on some performance factors i.e. reputation above 500 increases the score -- and the number of deaths will reduce the score. local sal_inc = self.salary_incr / 10 local sal_mult = (self.reputation - 500) / (self.num_deaths + 1) -- added 1 so that you don't divide by 0 local month_incr = sal_inc + sal_mult -- To ensure that you can't receive less than 50 or -- more than 300 per month if month_incr < self.sal_min then month_incr = self.sal_min elseif month_incr > self.salary_incr then month_incr = self.salary_incr end self.player_salary = self.player_salary + math.ceil(month_incr) -- TODO: do you get interest on the balance owed? for i, company in ipairs(self.insurance_balance) do -- Get the amount that is about to be paid to the player local payout_amount = company[3] if payout_amount > 0 then local str = _S.transactions.insurance_colon .. " " .. self.insurance[i] self:receiveMoney(payout_amount, str) end -- Shift the amounts to the left table.remove(company, 3) table.insert(company, 1, 0) -- The new month have no payments yet end -- Check for equipment getting available self.research:checkAutomaticDiscovery(self.world.month + 12 * (self.world.year - 1)) -- Add some interesting statistics. self.statistics[self.world.month + 1 + 12 * (self.world.year - 1)] = { money_in = self.money_in, money_out = self.money_out, wages = wages, balance = self.balance, visitors = self.num_visitors, cures = self.num_cured, deaths = self.num_deaths, reputation = self.reputation, } self.money_in = 0 self.money_out = 0 -- make players aware of the need for a receptionist and desk. if (self:isPlayerHospital() and not self:hasStaffedDesk()) and self.world.year == 1 then if self.receptionist_count ~= 0 and self.world.month > 2 and not self.receptionist_msg then self.world.ui.adviser:say(_A.warnings.no_desk_6) self.receptionist_msg = true elseif self.receptionist_count == 0 and self.world.month > 2 and self.world.object_counts["reception_desk"] ~= 0 then self.world.ui.adviser:say(_A.warnings.no_desk_7) -- self.receptionist_msg = true elseif self.world.month == 3 then self.world.ui.adviser:say(_A.warnings.no_desk, true) elseif self.world.month == 8 then self.world.ui.adviser:say(_A.warnings.no_desk_1, true) elseif self.world.month == 11 then if self.visitors == 0 then self.world.ui.adviser:say(_A.warnings.no_desk_2, true) else self.world.ui.adviser:say(_A.warnings.no_desk_3, true) end end end end --! Returns whether this hospital is controlled by a real person or not. function Hospital:isPlayerHospital() return self == self.world:getLocalPlayerHospital() end --! Does the hospital have a working reception? --!return (bool) Whether there is a working reception in the hospital. function Hospital:hasStaffedDesk() for _, desk in ipairs(self:findReceptionDesks()) do if desk.receptionist or desk.reserved_for then return true end end return false end --! Collect the reception desks in the hospital. --!return (list) The reception desks in the hospital. function Hospital:findReceptionDesks() local reception_desks = {} for _, obj_list in pairs(self.world.objects) do for _, obj in ipairs(obj_list) do if obj.object_type.id == "reception_desk" then reception_desks[#reception_desks + 1] = obj end end end return reception_desks end --! Called at the end of each year function Hospital:onEndYear() self.sodas_sold = 0 self.num_vips_ty = 0 self.num_deaths_this_year = 0 self:checkReputation() -- On third year of level 3 there is the large increase to salary -- this will replicate that. I have still to check other levels above 5 to -- see if there are other large increases. -- TODO Hall of fame and shame if self.world.year == 3 and self.world.map.level_number == 3 then -- adds the extra to salary in level 3 year 3 self.player_salary = self.player_salary + math.random(8000,20000) end end -- Creates complete emergency with patients, what disease they have, what's needed -- to cure them and the fax. function Hospital:createEmergency(emergency) local created_one = false local random_disease = self.world.available_diseases[math.random(1, #self.world.available_diseases)] local disease = TheApp.diseases[random_disease.id] local number = math.random(2, disease.emergency_number) if self:getHeliportSpawnPosition() and self:hasStaffedDesk() then if not emergency then -- Create a random emergency if parameters are not specified already. emergency = { disease = disease, victims = number, bonus = 1000, percentage = 0.75, killed_emergency_patients = 0, cured_emergency_patients = 0, } end self.emergency = emergency -- The last room in the list of treatment rooms is considered when checking for availability. -- It works for all original diseases, but if we introduce new multiple room diseases it might break. -- TODO: Make it work for all kinds of lists of treatment rooms. -- TODO: Change to make use of Hospital:checkDiseaseRequirements local no_rooms = #emergency.disease.treatment_rooms local room_name, required_staff, staff_name = self.world:getRoomNameAndRequiredStaffName(emergency.disease.treatment_rooms[no_rooms]) local staff_available = self:hasStaffOfCategory(required_staff) -- Check so that all rooms in the list are available if self:hasRoomOfType(emergency.disease.treatment_rooms[no_rooms]) then room_name = nil end local added_info = _S.fax.emergency.cure_possible -- TODO: Differentiate if a drug is needed, add drug effectiveness. Add undiscovered treatment. -- added_info = _S.fax.emergency.cure_not_possible if room_name then if staff_available then added_info = _S.fax.emergency.cure_not_possible_build:format(room_name) .. "." else added_info = _S.fax.emergency.cure_not_possible_build_and_employ:format(room_name, staff_name) .. "." end elseif not staff_available then added_info = _S.fax.emergency.cure_not_possible_employ:format(staff_name) .. "." end local one_or_many_victims_msg if emergency.victims == 1 then one_or_many_victims_msg = _S.fax.emergency.num_disease_singular:format(emergency.disease.name) else one_or_many_victims_msg = _S.fax.emergency.num_disease:format(emergency.victims, emergency.disease.name) end local message = { {text = _S.fax.emergency.location:format(_S.fax.emergency.locations[math.random(1,9)])}, {text = one_or_many_victims_msg }, {text = added_info}, {text = self.world.free_build_mode and _S.fax.emergency.free_build or _S.fax.emergency.bonus:format(emergency.bonus*emergency.victims)}, choices = { {text = _S.fax.emergency.choices.accept, choice = "accept_emergency"}, {text = _S.fax.emergency.choices.refuse, choice = "refuse_emergency"}, }, } self.world.ui.bottom_panel:queueMessage("emergency", message, nil, 24*20, 2) -- automatically refuse after 20 days created_one = true end return created_one end -- Called when the timer runs out during an emergency or when all emergency patients are cured or dead. function Hospital:resolveEmergency() local emer = self.emergency local rescued_patients = emer.cured_emergency_patients for _, patient in ipairs(self.emergency_patients) do if patient and not patient.cured and not patient:getRoom() then patient:die() end end local total = emer.victims local max_bonus = emer.bonus * total local emergency_success = rescued_patients/total >= emer.percentage local earned = 0 if emergency_success then earned = emer.bonus * rescued_patients end local message = { {text = _S.fax.emergency_result.saved_people :format(rescued_patients, total)}, {text = self.world.free_build_mode and "" or _S.fax.emergency_result.earned_money:format(max_bonus, earned)}, choices = { {text = _S.fax.emergency_result.close_text, choice = "close"}, }, } self.world.ui.bottom_panel:queueMessage("report", message, nil, 24*25, 1) if emergency_success then -- Reputation increased self:changeReputation("emergency_success", emer.disease) self:receiveMoney(earned, _S.transactions.emergency_bonus) else -- Too few rescued, reputation hit self:changeReputation("emergency_failed", emer.disease) end --check if there's a VIP in the building, and if there is then let him know the outcome for _, e in ipairs(self.world.entities) do if class.is(e, Vip) then e:evaluateEmergency(emergency_success) end end self.world:nextEmergency() end --! Determine if all of the patients in the emergency have been cured or killed. --! If they have end the emergency timer. function Hospital:checkEmergencyOver() local killed = self.emergency.killed_emergency_patients local cured = self.emergency.cured_emergency_patients if killed + cured >= self.emergency.victims then local window = self.world.ui:getWindow(UIWatch) if window then window:onCountdownEnd() end end end -- Creates VIP and sends a FAX to query the user. function Hospital:createVip() local vipName = _S.vip_names[math.random(1,10)] local message = { {text = _S.fax.vip_visit_query.vip_name:format(vipName)}, choices = {{text = _S.fax.vip_visit_query.choices.invite, choice = "accept_vip", additionalInfo = {name=vipName}}, {text = _S.fax.vip_visit_query.choices.refuse, choice = "refuse_vip", additionalInfo = {name=vipName}}} } -- auto-refuse after 20 days self.world.ui.bottom_panel:queueMessage("personality", message, nil, 24*20, 2) end --[[ Creates a new epidemic by creating a new contagious patient with a random disease - this is NOT typically how epidemics are started (mainly for cheat use) see @Hospital:determineIfContagious() to see how epidemics are typically started]] function Hospital:spawnContagiousPatient() --[[ Gets the available non-visual disease in the current world @return non_visuals (table) table of available non-visual diseases]] local function get_avaliable_contagious_diseases() local contagious = {} for _, disease in ipairs(self.world.available_diseases) do if disease.contagious then contagious[#contagious + 1] = disease end end return contagious end if self:hasStaffedDesk() then local patient = self.world:newEntity("Patient", 2) local contagious_diseases = get_avaliable_contagious_diseases() if #contagious_diseases > 0 then local disease = contagious_diseases[math.random(1,#contagious_diseases)] patient:setDisease(disease) --Move the first patient closer (FOR TESTING ONLY) local x,y = self:getHeliportSpawnPosition() patient:setTile(x,y) patient:setHospital(self) self:addToEpidemic(patient) else print("Cannot create epidemic - no contagious diseases available") end else print("Cannot create epidemic - no staffed reception desk") end end function Hospital:countEpidemics() -- Count the current epidemic if it exists local epidemic_count = self.epidemic and 1 or 0 epidemic_count = epidemic_count + #self.future_epidemics_pool return epidemic_count end --[[ Make the active epidemic (if exists) and any future epidemics tick. If there is no current epidemic determines if any epidemic in the pool of future epidemics can become the active one. Also removes any epidemics from the future pool which have no infected patients and thus, will have no effect on the hospital. ]] function Hospital:manageEpidemics() --[[ Can the future epidemic be revealed to the player @param future_epidemic (Epidemic) the epidemic to attempt to reveal @return true if can be revealed false otherwise (boolean) ]] local function can_be_revealed(epidemic) return not self.world.ui:getWindow(UIWatch) and not self.epidemic and epidemic.ready_to_reveal end local current_epidemic = self.epidemic if(current_epidemic) then current_epidemic:tick() end if self.future_epidemics_pool then for i, future_epidemic in ipairs(self.future_epidemics_pool) do if future_epidemic:hasNoInfectedPatients() then table.remove(self.future_epidemics_pool,i) elseif can_be_revealed(future_epidemic) then self.epidemic = future_epidemic self.epidemic:revealEpidemic() table.remove(self.future_epidemics_pool,i) else future_epidemic:tick() end end end end --[[ Determines if a patient is contagious and then attempts to add them the appropriate epidemic if so. @param patient (Patient) patient to determine if contagious]] function Hospital:determineIfContagious(patient) if patient.is_emergency or not patient.disease.contagious then return false end -- ContRate treated like a percentage with ContRate% of patients with -- a disease having the contagious strain local level_config = self.world.map.level_config local disease = patient.disease local contRate = level_config.expertise[disease.expertise_id].ContRate or 0 -- The patient is potentially contagious as we do not yet know if there -- is a suitable epidemic which they can belong to local potentially_contagious = contRate > 0 and (math.random(1,contRate) == contRate) -- The patient isn't contagious if these conditions aren't passed local reduce_months = level_config.ReduceContMonths or 14 local reduce_people = level_config.ReduceContPeepCount or 20 local date_in_months = self.world.month + (self.world.year - 1)*12 if potentially_contagious and date_in_months > reduce_months and self.num_visitors > reduce_people then self:addToEpidemic(patient) end end --[[ Determines if there is a suitable epidemic the contagious patient can belong to and adds them to it if possible. N.B. a patient isn't actually contagious until they belong to an epidemic. So if it isn't possible to add a patient to an epidemic they are just treated as a normal patient. @param patient (Patient) patient to attempt to add to an epidemic ]] function Hospital:addToEpidemic(patient) local epidemic = self.epidemic -- Don't add a new contagious patient if the player is trying to cover up -- an existing epidemic - not really fair if epidemic and not epidemic.coverup_in_progress and (patient.disease == epidemic.disease) then epidemic:addContagiousPatient(patient) elseif self.future_epidemics_pool and not (epidemic and epidemic.coverup_in_progress) then local added = false for _, future_epidemic in ipairs(self.future_epidemics_pool) do if future_epidemic.disease == patient.disease then future_epidemic:addContagiousPatient(patient) added = true break end end if not added then -- Make a new epidemic as one doesn't exist with this disease, but only if -- we haven't reach the concurrent epidemic limit if self:countEpidemics() < self.concurrent_epidemic_limit then local new_epidemic = Epidemic(self, patient) self.future_epidemics_pool[#self.future_epidemics_pool + 1] = new_epidemic end end end end function Hospital:spawnPatient() self.world:spawnPatient(self) end function Hospital:removeDebugPatient(patient) for i, p in ipairs(self.debug_patients) do if p == patient then table.remove(self.debug_patients, i) return end end end local debug_n function Hospital:getDebugPatient() if not debug_n or debug_n >= #self.debug_patients then debug_n = 1 else debug_n = debug_n + 1 end return self.debug_patients[debug_n] end --[[ Returns how much a given object currently costs to purchase. The cost may be affected by research progress. !param name (string) The name (id) of the object to investigate. ]] function Hospital:getObjectBuildCost(name) -- Everything is free in free build mode. if self.world.free_build_mode then return 0 end local progress = self.research.research_progress local cfg_objects = self.world.map.level_config.objects local obj_def = TheApp.objects[name] -- Get how much this item costs at the start of the level. local obj_cost = cfg_objects[obj_def.thob].StartCost -- Some objects might have got their cost reduced by research. if progress[obj_def] then obj_cost = progress[obj_def].cost end return obj_cost end --[[ Lowers the player's money by the given amount and logs the transaction. !param amount (integer) The (positive) amount to spend. !param reason (string) A string that shows what happened. Should be one of the strings in _S.transactions. !param changeValue (integer) The (positive) amount the hospital value should be increased ]] function Hospital:spendMoney(amount, reason, changeValue) if not self.world.free_build_mode then self.balance = self.balance - amount self:logTransaction({spend = amount, desc = reason}) self.money_out = self.money_out + amount if changeValue then self.value = self.value + changeValue end end end --[[ Increases the player's money by the given amount and logs the transaction. !param amount (integer) The (positive) amount to receive. !param reason (string) A string that tells what happened. Should be one of the strings in _S.transactions. !param changeValue (integer) The (positive) amount the hospital value should be decreased ]] function Hospital:receiveMoney(amount, reason, changeValue) if not self.world.free_build_mode then self.balance = self.balance + amount self:logTransaction({receive = amount, desc = reason}) self.money_in = self.money_in + amount if changeValue then self.value = self.value - changeValue end end end --[[ Determines how much the player should receive after a patient is treated in a room. !param patient (Patient) The patient that just got treated. ]] function Hospital:receiveMoneyForTreatment(patient) if not self.world.free_build_mode then local disease_id = patient:getTreatmentDiseaseId() if disease_id == nil then return end local casebook = self.disease_casebook[disease_id] local reason if casebook.pseudo then reason = _S.transactions.treat_colon .. " " .. casebook.disease.name else reason = _S.transactions.cure_colon .. " " .. casebook.disease.name end local amount = self:getTreatmentPrice(disease_id) -- 25% of the payments now go through insurance if patient.insurance_company then self:addInsuranceMoney(patient.insurance_company, amount) else -- patient is paying normally (but still, he could feel like it's -- under- or over-priced and it could impact happiness and reputation) self:computePriceLevelImpact(patient, casebook) self:receiveMoney(amount, reason) end casebook.money_earned = casebook.money_earned + amount patient.world:newFloatingDollarSign(patient, amount) end end --! Sell a soda to a patient. --!param patient (patient) The patient buying the soda. function Hospital:sellSodaToPatient(patient) self:receiveMoneyForProduct(patient, 20, _S.transactions.drinks) self.sodas_sold = self.sodas_sold + 1 end --! Function to determine the price for a treatment, modified by reputation and percentage -- Treatment charge should never be less than the starting price if reputation falls below 500 function Hospital:getTreatmentPrice(disease) local reputation = self.disease_casebook[disease].reputation or self.reputation local percentage = self.disease_casebook[disease].price local raw_price = self.disease_casebook[disease].disease.cure_price if reputation >= 500 then return math.ceil(raw_price * (reputation / 500) * percentage) else return math.ceil(raw_price * percentage) end end function Hospital:addInsuranceMoney(company, amount) local old_balance = self.insurance_balance[company][1] self.insurance_balance[company][1] = old_balance + amount end function Hospital:receiveMoneyForProduct(patient, amount, reason) patient.world:newFloatingDollarSign(patient, amount) self:receiveMoney(amount, reason) end --! Pay drug if drug has been purchased to treat a patient. --!param disease_id Disease that was treated. function Hospital:paySupplierForDrug(disease_id) local drug_amount = self.disease_casebook[disease_id].drug_cost or 0 if drug_amount ~= 0 then local str = _S.drug_companies[math.random(1, 5)] self:spendMoney(drug_amount, _S.transactions.drug_cost .. ": " .. str) end end --[[ Add a transaction to the hospital's transaction log. !param transaction (table) A table containing a string field called `desc`, and at least one of the following integer fields: `spend`, `receive`. ]] function Hospital:logTransaction(transaction) transaction.balance = self.balance transaction.day = self.world.day transaction.month = self.world.month while #self.transactions > 20 do self.transactions[#self.transactions] = nil end table.insert(self.transactions, 1, transaction) end --! Initialize hospital staff from the level config. function Hospital:initStaff() local level_config = self.world.map.level_config if level_config.start_staff then for _, conf in ipairs(level_config.start_staff) do local profile local skill = 0 local added_staff = true if conf.Skill then skill = conf.Skill / 100 end if conf.Nurse == 1 then profile = StaffProfile(self.world, "Nurse", _S.staff_class["nurse"]) profile:init(skill) elseif conf.Receptionist == 1 then profile = StaffProfile(self.world, "Receptionist", _S.staff_class["receptionist"]) profile:init(skill) elseif conf.Handyman == 1 then profile = StaffProfile(self.world, "Handyman", _S.staff_class["handyman"]) profile:init(skill) elseif conf.Doctor == 1 then profile = StaffProfile(self.world, "Doctor", _S.staff_class["doctor"]) local shrink = 0 local rsch = 0 local surg = 0 local jr, cons if conf.Shrink == 1 then shrink = 1 end if conf.Surgeon == 1 then surg = 1 end if conf.Researcher == 1 then rsch = 1 end if conf.Junior == 1 then jr = 1 elseif conf.Consultant == 1 then cons = 1 end profile:initDoctor(shrink,surg,rsch,jr,cons,skill) else added_staff = false end if added_staff then local staff = self.world:newEntity("Staff", 2) staff:setProfile(profile) -- TODO: Make a somewhat "nicer" placing algorithm. staff:setTile(self.world.map.th:getCameraTile(1)) staff:onPlaceInCorridor() self.staff[#self.staff + 1] = staff staff:setHospital(self) end end end end function Hospital:addStaff(staff) self.staff[#self.staff + 1] = staff -- Cost of hiring staff: self:spendMoney(staff.profile.wage, _S.transactions.hire_staff .. ": " .. staff.profile.name) end function Hospital:addPatient(patient) self.patients[#self.patients + 1] = patient -- Add to the hospital's visitor count self.num_visitors = self.num_visitors + 1 self.num_visitors_ty = self.num_visitors_ty + 1 -- Decide if the patient belongs in an epidemic self:determineIfContagious(patient) end function Hospital:humanoidDeath(humanoid) self.num_deaths = self.num_deaths + 1 self.num_deaths_this_year = self.num_deaths_this_year + 1 self:changeReputation("death", humanoid.disease) self:updatePercentages() end --! Checks if the hospital employs staff of a given category. --!param category (string) A humanoid_class or one of the specialists, i.e. --! "Doctor", "Nurse", "Handyman", "Receptionist", "Psychiatrist", --! "Surgeon", "Researcher" or "Consultant" --! returns false if none, else number of that type employed function Hospital:hasStaffOfCategory(category) local result = false for _, staff in ipairs(self.staff) do if staff.humanoid_class == category then result = (result or 0) + 1 elseif staff.humanoid_class == "Doctor" then if (category == "Psychiatrist" and staff.profile.is_psychiatrist >= 1.0) or (category == "Surgeon" and staff.profile.is_surgeon >= 1.0) or (category == "Researcher" and staff.profile.is_researcher >= 1.0) or (category == "Consultant" and staff.profile.is_consultant) then result = (result or 0) + 1 end end end return result end --! Checks if the hospital has a room of a given type. --!param type (string) A room_info.id, e.g. "ward". --! Returns false if none, else number of that type found function Hospital:hasRoomOfType(type) -- Check how many rooms there are. local result = false for _, room in pairs(self.world.rooms) do if room.hospital == self and room.room_info.id == type and room.is_active then result = (result or 0) + 1 end end return result end --! Remove the first entry with a given value from a table. --! Only works reliably for lists. --!param t Table to search for the value, and update. --!param value Value to search and remove. --!return Whether the value was removed. local function RemoveByValue(t, value) for i, v in ipairs(t) do if v == value then table.remove(t, i) return true end end return false end --! Remove a staff member from the hospital staff. --!param staff (Staff) Staff member to remove. function Hospital:removeStaff(staff) RemoveByValue(self.staff, staff) end --! Remove a patient from the hospital. --!param patient (Patient) Patient to remove. function Hospital:removePatient(patient) RemoveByValue(self.patients, patient) end -- TODO: This should depend on difficulty and level local reputation_changes = { ["cured"] = 1, -- a patient was successfully treated ["death"] = -4, -- a patient died due to bad treatment or waiting too long ["kicked"] = -3, -- firing a staff member OR sending a patient home ["emergency_success"] = 15, ["emergency_failed"] = -20, ["over_priced"] = -2, ["under_priced"] = 1, } --! Normally reputation is changed based on a reason, and the affected --! disease also has its own reputation meter. --!param reason (string) The reason for changing reputation, for example "cured" or "death". --!param disease The disease, if any, that should be affected. --!param valueChange (integer) In some cases, for example at year end, the amount varies a lot. -- Then it is specified here. function Hospital:changeReputation(reason, disease, valueChange) local amount if reason == "autopsy_discovered" then local rep_hit_perc = self.world.map.level_config.gbv.AutopsyRepHitPercent amount = rep_hit_perc and math.floor(-self.reputation * rep_hit_perc / 100) or -70 elseif valueChange then amount = valueChange else amount = reputation_changes[reason] end if self:isReputationChangeAllowed(amount) then self.reputation = self.reputation + amount end if disease then local casebook = self.disease_casebook[disease.id] casebook.reputation = casebook.reputation + amount end if self.reputation < self.reputation_min then self.reputation = self.reputation_min elseif self.reputation > self.reputation_max then self.reputation = self.reputation_max end -- Check if criteria for trophy is still met if self.reputation_above_threshold then self:checkReputation() end end --! Check whether the reputation is still above the treshold. function Hospital:checkReputation() local level_config = self.world.map.level_config if level_config.awards_trophies then local min_repuration = level_config.awards_trophies.Reputation self.reputation_above_threshold = min_repuration < self.reputation return end self.reputation_above_threshold = false end --! Decide whether a reputation change is effective or not. As we approach 1000, --! a gain is less likely. As we approach 0, a loss is less likely. --! Under 500, a gain is always effective. Over 500, a loss is always effective. --!param amount (int): The amount of reputation change. function Hospital:isReputationChangeAllowed(amount) if (amount > 0 and self.reputation <= 500) or (amount < 0 and self.reputation >= 500) or (amount == 0) then return true else return math.random() <= self:getReputationChangeLikelihood() end end --! Compute the likelihood for a reputation change to be effective. --! Likelihood gets smaller as hospital reputation gets closer to extreme values. --!return (float) Likelihood of a reputation change. function Hospital:getReputationChangeLikelihood() -- The result follows a quadratic function, for a curved and smooth evolution. -- If reputation == 500, the result is 100%. -- Between [380-720], the result is still over 80%. -- At 100 or 900, it's under 40%. -- At 0 or 1000, it's 0%. -- -- The a, b and c coefficients have been computed to include points -- (x=0, y=1), (x=500, y=0) and (x=1000, y=1) where x is the current -- reputation and y the likelihood of the reputation change to be -- refused, based a discriminant (aka "delta") == 0 local a = 0.000004008 local b = 0.004008 local c = 1 local x = self.reputation -- The result is "reversed" for more readability return 1 - (a * x * x - b * x + c) end --! Update the 'cured' counts of the hospital. --!param patient Patient that was cured. function Hospital:updateCuredCounts(patient) if not patient.is_debug then self:changeReputation("cured", patient.disease) end if self.num_cured < 1 then self.world.ui.adviser:say(_A.information.first_cure) end self.num_cured = self.num_cured + 1 self.num_cured_ty = self.num_cured_ty + 1 local casebook = self.disease_casebook[patient.disease.id] casebook.recoveries = casebook.recoveries + 1 if patient.is_emergency then self.emergency.cured_emergency_patients = self.emergency.cured_emergency_patients + 1 end end --! Update the 'not cured' counts of the hospital. --!param patient Patient that was not cured. --!param reason (string) the reason why the patient is not cured. --! -"kicked": Patient goes home early (manually sent, no treatment room, etc). --! -"over_priced": Patient considers the price too high. function Hospital:updateNotCuredCounts(patient, reason) if patient.is_debug then return end self:changeReputation(reason, patient.disease) self.not_cured = self.not_cured + 1 self.not_cured_ty = self.not_cured_ty + 1 if reason == "kicked" then local casebook = self.disease_casebook[patient.disease.id] casebook.turned_away = casebook.turned_away + 1 end end function Hospital:updatePercentages() local killed = self.num_deaths / (self.num_cured + self.num_deaths) * 100 self.percentage_killed = math.round(killed) local cured = self.num_cured / (self.num_cured + self.not_cured + self.num_deaths) * 100 self.percentage_cured = math.round(cured) end --! Compute average of an attribute for all patients in the hospital. --!param attribute (str) Name of the attribute. --!param default_value Value to return if there are no patients. --!return Average value of the attribute for all hospital patients, or the default value. function Hospital:getAveragePatientAttribute(attribute, default_value) local sum = 0 local count = 0 for _, patient in ipairs(self.patients) do -- Some patients (i.e. Alien) may not have the attribute in question, so check for that if patient.attributes[attribute] then sum = sum + patient.attributes[attribute] count = count + 1 end end if count == 0 then return default_value else return sum / count end end --! Compute average of an attribute for all staff in the hospital. --!param attribute (str) Name of the attribute. --!param default_value Value to return if there is no staff. --!return Average value of the attribute for all staff, or the default value. function Hospital:getAverageStaffAttribute(attribute, default_value) local sum = 0 local count = 0 for _, staff in ipairs(self.staff) do sum = sum + staff.attributes[attribute] count = count + 1 end if count == 0 then return default_value else return sum / count end end --! Checks if the requirements for the given disease are met in the hospital and returns the ones missing. --!param disease (String) The disease to check the requirements for --! returns false if all requirements are met, else a table in the form --! { rooms = {[room1], [room2], ...}, staff = {[humanoid_class] = [amount_needed] or nil} } --! i.e. a list of rooms (ordered the same as disease.treatment_rooms), and a set of humanoid_classes with --! the needed amount of that class as the value function Hospital:checkDiseaseRequirements(disease) -- Copy rooms list from disease but leave out the ones that are present in the hospital -- Get required staff from all rooms required by the disease, if not already present in hospital local rooms = {} local staff = {} local any = false for _, room_id in ipairs(self.world.available_diseases[disease].treatment_rooms) do local found = self:hasRoomOfType(room_id) if not found then rooms[#rooms + 1] = room_id any = true end -- Get staff for room for staff_class, amount in pairs(TheApp.rooms[room_id].required_staff) do local available = self:hasStaffOfCategory(staff_class) or 0 if available < amount then -- Don't add up the staff requirements of different rooms, but take the maximum staff[staff_class] = math.max(staff[staff_class] or 0, amount - available) any = true end end end -- False if no rooms and no staff were added return any and {rooms = rooms, staff = staff} end --! Get the set of walls around a tile position. --!param x (int) X position of the queried tile. --!param y (int) Y position of the queried tile. --!return (table {wall, parcel}) The walls around the given position. function Hospital:getWallsAround(x, y) local map = self.world.map local th = map.th local _, nw, ww local walls = {} -- List of {wall="north"/"west"/"south"/"east", parcel} local flags = th:getCellFlags(x, y) _, nw, ww = th:getCell(x, y) -- floor, north wall, west wall if ww ~= 0 then walls[#walls + 1] = {wall = "west", parcel = flags.parcelId} end if nw ~= 0 then walls[#walls + 1] = {wall = "north", parcel = flags.parcelId} end if x ~= map.width then _, _, ww = th:getCell(x + 1, y) if ww ~= 0 then walls[#walls + 1] = {wall = "east", parcel = flags.parcelId} end end if y ~= map.height then _, nw, _ = th:getCell(x, y + 1) if nw ~= 0 then walls[#walls + 1] = {wall = "south", parcel = flags.parcelId} end end return walls end --! Test for the given position to be inside the given rectangle. --!param x (int) X position to test. --!param y (int) Y position to test. --!param rect (table x, y, width, height) Rectangle to check against. --!return (bool) Whether the position is inside the rectangle. local function isInside(x, y, rect) return x >= rect.x and x < rect.x + rect.width and y >= rect.y and y < rect.y + rect.height end --! Find all ratholes that match the `to_match` criteria. --!param holes (list ratholes) Currently existing holes. --!param to_match (table) For each direction a rectangle with matching tile positions. --!return (list) Matching ratholes. local function findMatchingRatholes(holes, to_match) local matched = {} for _, hole in ipairs(holes) do if isInside(hole.x, hole.y, to_match[hole.wall]) then table.insert(matched, hole) end end return matched end --! Remove the ratholes that use the walls of the provided room. --!param room (Room) Room being de-activated. function Hospital:removeRatholesAroundRoom(room) local above_rect = {x = room.x, width = room.width, y = room.y - 1, height = 1} local below_rect = {x = room.x, width = room.width, y = room.y +room.height, height = 1} local left_rect = {x = room.x - 1, width = 1, y = room.y, height = room.height} local right_rect = {x = room.x + room.width, width = 1, y = room.y, height = room.height} local to_delete = {east = left_rect, west = right_rect, south = above_rect, north = below_rect} local remove_holes = findMatchingRatholes(self.ratholes, to_delete) for _, hole in ipairs(remove_holes) do self:removeRathole(hole) end end -- Add a rathole to the room. --!param x (int) X position of the tile containing the rathole. --!param y (int) Y position of the tile containing the rathole. --!param wall (string) Wall containing the hole (north, west, south, east) --!param parcel (int) Parcel number of the xy position. function Hospital:addRathole(x, y, wall, parcel) for _, rathole in ipairs(self.ratholes) do if rathole.x == x and rathole.y == y and rathole.wall == wall then return end end local hole = {x = x, y = y, wall = wall, parcel = parcel} if wall == "north" or wall == "west" then -- Only add a rat-hole graphics object for the visible holes. hole["object"] = self.world:newObject("rathole", hole.x, hole.y, hole.wall) end table.insert(self.ratholes, hole) end --! Remove the provided rathole. --!param hole (table{x, y, wall, optional object}) Hole to remove. function Hospital:removeRathole(hole) for i, rathole in ipairs(self.ratholes) do if rathole.x == hole.x and rathole.y == hole.y and rathole.wall == hole.wall then table.remove(self.ratholes, i) if rathole.object then self.world:destroyEntity(rathole.object) end break end end end --! Remove any rathole from the given position. --!param x X position of the tile that should not have ratholes. --!param y Y position of the tile that should not have ratholes. function Hospital:removeRatholeXY(x, y) for i = #self.ratholes, 1, -1 do local rathole = self.ratholes[i] if rathole.x == x and rathole.y == y then table.remove(self.ratholes, i) if rathole.object then self.world:destroyEntity(rathole.object) end end end end class "AIHospital" (Hospital) ---@type AIHospital local AIHospital = _G["AIHospital"] function AIHospital:AIHospital(competitor, ...) self:Hospital(...) if _S.competitor_names[competitor] then self.name = _S.competitor_names[competitor] else self.name = "NONAME" end self.is_in_world = false end function AIHospital:spawnPatient() -- TODO: Simulate patient end function AIHospital:logTransaction() -- AI doesn't need a log of transactions, as it is only used for UI purposes end function Hospital:addHandymanTask(object, taskType, priority, x, y, call) local parcelId = self.world.map.th:getCellFlags(x, y).parcelId local subTable = self:findHandymanTaskSubtable(taskType) table.insert(subTable, {["object"] = object, ["priority"] = priority, ["tile_x"] = x, ["tile_y"] = y, ["parcelId"] = parcelId, ["call"] = call}) end function Hospital:modifyHandymanTaskPriority(taskIndex, newPriority, taskType) if taskIndex ~= -1 then local subTable = self:findHandymanTaskSubtable(taskType) subTable[taskIndex].priority = newPriority end end function Hospital:removeHandymanTask(taskIndex, taskType) if taskIndex ~= -1 then local subTable = self:findHandymanTaskSubtable(taskType) local task = subTable[taskIndex] table.remove(subTable, taskIndex) if task.assignedHandyman then if task.object.ticks ~= true then task.assignedHandyman:interruptHandymanTask() end end end end function Hospital:findHandymanTaskSubtable(taskType) for i = 1, #self.handymanTasks do if self.handymanTasks[i].taskType == taskType then return self.handymanTasks[i].subTable end end table.insert(self.handymanTasks, {["taskType"] = taskType, ["subTable"] = {}}) return self:findHandymanTaskSubtable(taskType) end function Hospital:getTaskObject(taskIndex, taskType) return self:findHandymanTaskSubtable(taskType)[taskIndex] end function Hospital:assignHandymanToTask(handyman, taskIndex, taskType) if taskIndex ~= -1 then local subTable = self:findHandymanTaskSubtable(taskType) if not subTable[taskIndex].assignedHandyman then subTable[taskIndex].assignedHandyman = handyman else local formerHandyman = subTable[taskIndex].assignedHandyman subTable[taskIndex].assignedHandyman = handyman formerHandyman:interruptHandymanTask() end end end function Hospital:searchForHandymanTask(handyman, taskType) local subTable = self:findHandymanTaskSubtable(taskType) --if a distance is smaller than this value stop the search to --save performance local thresholdForStopping = 3 local first, dist, index, priority, multiplier = true, 0, -1, 0, 1 if handyman.profile.is_consultant then multiplier = 0.5 elseif handyman.profile.is_junior then multiplier = 2 end if not handyman.parcelNr then handyman.parcelNr = 0 end for i, v in ipairs(subTable) do local distance = self.world:getPathDistance(v.tile_x, v.tile_y, handyman.tile_x, handyman.tile_y) local canContinue = true if not first and v.priority < priority then canContinue = false end if not v.parcelId then v.parcelId = self.world.map.th:getCellFlags(v.tile_x, v.tile_y).parcelId end if handyman.parcelNr ~= 0 and handyman.parcelNr ~= v.parcelId then canContinue = false end if distance == false then canContinue = false end if canContinue then if v.assignedHandyman then if v.assignedHandyman.fired then v.assignedHandyman = nil elseif not v.assignedHandyman.hospital then -- This should normally never be the case. If the handyman doesn't belong to a hsopital -- then they should not have any tasks assigned to them however it was previously possible -- We need to tidy up to make sure the task can be reassigned. print("Warning: Orphaned handyman is still assigned a task. Removing.") v.assignedHandyman = nil else local assignedDistance = self.world:getPathDistance(v.tile_x, v.tile_y, v.assignedHandyman.tile_x, v.assignedHandyman.tile_y) if assignedDistance ~= false then if v.assignedHandyman.profile.is_consultant then assignedDistance = assignedDistance / 2 elseif v.assignedHandyman.profile.is_junior then assignedDistance = assignedDistance * 2 end distance = distance * multiplier if distance + 5 > assignedDistance then canContinue = false else distance = distance / multiplier end end end end if canContinue then if first then if distance <= thresholdForStopping then return i end first, dist, index, priority = false, distance, i, v.priority elseif priority < v.priority or distance < dist then if distance < thresholdForStopping then return i end dist, index, priority = distance, i, v.priority end end end end return index end --! Find a handyman task by task type, position, and possibly the used object. --!param x (int) The X coordinate of the position. --!param y (int) The Y coordinate of the position. --!param taskType Type of the task. --!param obj (Object) If specified, the object used for doing the task. --! Since multiple litter objects may exist at the same tile, the object must be given when cleaning. function Hospital:getIndexOfTask(x, y, taskType, obj) local subTable = self:findHandymanTaskSubtable(taskType) for i, v in ipairs(subTable) do if v.tile_x == x and v.tile_y == y and (obj == nil or v.object == obj) then return i end end return -1 end --! Afterload function to initialize the owned plots. function Hospital:initOwnedPlots() self.ownedPlots = {} for _, v in ipairs(self.world.entities) do if v.tile_x and v.tile_y then local parcel = self.world.map.th:getCellFlags(v.tile_x, v.tile_y).parcelId local isAlreadyContained = false for _, v2 in ipairs(self.ownedPlots) do if parcel == v2 then isAlreadyContained = true break end end if isAlreadyContained == false and parcel ~= 0 and self.world.map.th:getPlotOwner(parcel) ~= 0 then table.insert(self.ownedPlots, parcel) end end end end --! Function that returns true if the room for the given disease --! has not been researched yet. --! param disease (string): the disease to be checked. function Hospital:roomNotYetResearched(disease) local req = self:checkDiseaseRequirements(disease) if type(req) == "table" and #req.rooms > 0 then for _, room_id in ipairs(req.rooms) do if not self.discovered_rooms[self.world.available_rooms[room_id]] then return true end end end return false end --! Function that returns true if concentrating research on the disease is possible. --! @param disease (string): the disease to be checked. function Hospital:canConcentrateResearch(disease) local book = self.disease_casebook if not book[disease].pseudo and self:roomNotYetResearched(disease) then return true end if book[disease].drug then return book[disease].cure_effectiveness < 100 end local room if book[disease].pseudo then room = book[disease].disease.id:sub(6) else room = book[disease].disease.treatment_rooms[#book[disease].disease.treatment_rooms] end local research_progress = self.research.research_progress local object_type for obj, _ in pairs(self.world.available_rooms[room].objects_needed) do if self.world.object_types[obj].default_strength then object_type = obj break end end if object_type then local progress = research_progress[self.world.object_types[object_type]] return progress.start_strength < self.world.map.level_config.gbv.MaxObjectStrength end return false end --! Change patient happiness and hospital reputation based on price distortion. --! The patient happiness is adjusted proportionally. The hospital reputation --! can only be affected when the distortion level reaches some threshold. --!param patient (patient) The patient paying the bill. His/her happiness level --! is adjusted. --!param casebook (object) Disease casebook entry. It's used to display the --! localised disease name when Adviser tells the warning message. function Hospital:computePriceLevelImpact(patient, casebook) local price_distortion = patient:getPriceDistortion(casebook) patient:changeAttribute("happiness", -(price_distortion / 2)) if price_distortion < self.under_priced_threshold then if math.random(1, 100) == 1 then self.world.ui.adviser:say(_A.warnings.low_prices:format(casebook.disease.name)) self:changeReputation("under_priced") end elseif price_distortion > self.over_priced_threshold then if math.random(1, 100) == 1 then self.world.ui.adviser:say(_A.warnings.high_prices:format(casebook.disease.name)) self:changeReputation("over_priced") end elseif math.abs(price_distortion) <= 0.15 and math.random(1, 200) == 1 then -- When prices are well adjusted (i.e. abs(price distortion) <= 0.15) self.world.ui.adviser:say(_A.warnings.fair_prices:format(casebook.disease.name)) end end CorsixTH-0.61/CorsixTH/Lua/humanoid_action.lua000066400000000000000000000105651321660673500212530ustar00rootroot00000000000000--[[ Copyright (c) 2016 Albert "Alberth" Hofkamp Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Humanoid action base class. class "HumanoidAction" ---@type HumanoidAction local HumanoidAction = _G["HumanoidAction"] --! Construct a humanoid action (base class constructor). --!param name (str) Name of the action. function HumanoidAction:HumanoidAction(name) assert(type(name) == "string", "Invalid value for parameter 'name'") self.name = name self.count = nil -- 'nil' means 'forever' (until finished), else the number to perform. self.must_happen = false -- If true, action cannot be skipped. self.loop_callback = nil -- Periodic callback to check for termination conditions. self.after_use = nil -- Callback for performing updates afterwards. self.is_leaving = false -- Whether the humanoid is leaving. self.no_truncate = false -- If set, disable shortening the action. end --! Set the number of times the action should happen. --!param count (int or nil) Set to 'nil' if 'forever', else integer count. --!return (action) Returning self, for daisy-chaining. function HumanoidAction:setCount(count) assert(count == nil or type(count) == "number", "Invalid value for parameter 'count'") self.count = count return self end --! Set the 'must happen' flag (that is, action cannot be skipped). --!param must_happen (bool) Whether or not the action must happen. --!return (action) Returning self, for daisy-chaining. function HumanoidAction:setMustHappen(must_happen) assert(type(must_happen) == "boolean", "Invalid value for parameters 'must_happen'") self.must_happen = must_happen return self end --! Set the callback for checking termination conditions. --!param loop_callback (func) Callback function that is called each iteration to check for --! termination conditions. --!return (action) Returning self, for daisy-chaining. function HumanoidAction:setLoopCallback(loop_callback) assert(loop_callback == nil or type(loop_callback) == "function", "Invalid value for parameter 'loop_callback'") self.loop_callback = loop_callback return self end --! Set the callback for performing updates afterwards. --!param after_use (func) Callback function that is called after the action ends. --!return (action) Returning self, for daisy-chaining. function HumanoidAction:setAfterUse(after_use) assert(after_use == nil or type(after_use) == "function", "Invalid value for parameter 'after_use'") self.after_use = after_use return self end --! Set whether the humanoid is leaving. --!param is_leaving (bool) Whether or not the humanoid is leaving. If not specified, value is true. --!return (action) Returning self, for daisy-chaining. function HumanoidAction:setIsLeaving(is_leaving) assert(type(is_leaving) == "boolean", "Invalid value for parameter 'is_leaving'") self.is_leaving = is_leaving return self end --! Do not allow truncating the action. --!return (action) Returning self, for daisy-chaining. function HumanoidAction:disableTruncate() self.no_truncate = true return self end function HumanoidAction:afterLoad(old, new) if old < 112 then self.is_leaving = not not self.is_leaving self.must_happen = not not self.must_happen self.no_truncate = not not self.no_truncate self.saved_must_happen = not not self.saved_must_happen self.idle_must_happen = not not self.idle_must_happen if self.name == "walk" then self.is_entering = not not self.is_entering end end end CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/000077500000000000000000000000001321660673500207245ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/answer_call.lua000066400000000000000000000032501321660673500237210ustar00rootroot00000000000000--[[ Copyright (c) 2010 Sam Wong Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "AnswerCallAction" (HumanoidAction) ---@type AnswerCallAction local AnswerCallAction = _G["AnswerCallAction"] function AnswerCallAction:AnswerCallAction() self:HumanoidAction("answer_call") end local function action_answer_call_start(action, humanoid) action.must_happen = true CallsDispatcher.onCheckpointCompleted(action, humanoid) if not humanoid.world.dispatcher:answerCall(humanoid) then local room = humanoid:getRoom() if room then humanoid:queueAction(room:createLeaveAction()) end humanoid:queueAction(MeanderAction()) end humanoid:finishAction(action) end return action_answer_call_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/call_checkpoint.lua000066400000000000000000000035231321660673500245540ustar00rootroot00000000000000--[[ Copyright (c) 2010 Sam Wong Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "CallCheckPointAction" (HumanoidAction) ---@type CallCheckPointAction local CallCheckPointAction = _G["CallCheckPointAction"] function CallCheckPointAction:CallCheckPointAction(call, on_remove) assert(call == nil or (type(call) == "table" and type(call.key) == "string"), "Invalid value for parameter 'call'") assert(type(on_remove) == "function", "Invalid value for parameter 'on_remove'") self:HumanoidAction("call_checkpoint") self.call = call -- The call the humanoid is on (humanoid.on_call) or nil self.on_remove = on_remove -- Interrupt handler to use. end local function action_call_checkpoint_start(action, humanoid) action.must_happen = true CallsDispatcher.onCheckpointCompleted(action.call) humanoid:finishAction(action) end return action_call_checkpoint_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/check_watch.lua000066400000000000000000000037131321660673500236760ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "CheckWatchAction" (HumanoidAction) ---@type CheckWatchAction local CheckWatchAction = _G["CheckWatchAction"] function CheckWatchAction:CheckWatchAction() self:HumanoidAction("check_watch") self:setMustHappen(true) end local action_check_watch_end = permanent"action_check_watch_end"( function(humanoid) humanoid:finishAction() end) local function action_check_watch_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.check_watch_anim, "Error: watch checking animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.check_watch_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.check_watch_anim), action_check_watch_end) end return action_check_watch_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/die.lua000066400000000000000000000333431321660673500221760ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "DieAction" (HumanoidAction) ---@type DieAction local DieAction = _G["DieAction"] function DieAction:DieAction() self:HumanoidAction("die") end local action_die_tick; action_die_tick = permanent"action_die_tick"( function(humanoid) local action = humanoid.action_queue[1] local phase = action.phase local mirror = humanoid.last_move_direction == "east" and 0 or 1 if phase == 0 then action.phase = 1 if humanoid.die_anims.extra_east ~= nil then humanoid:setTimer(humanoid.world:getAnimLength(humanoid.die_anims.extra_east), action_die_tick) humanoid:setAnimation(humanoid.die_anims.extra_east, mirror) else action_die_tick(humanoid) end elseif phase == 1 then action.phase = 2 humanoid:setTimer(11, action_die_tick) humanoid:setAnimation(humanoid.die_anims.rise_east, mirror) elseif phase == 2 then -- Female slack tongue head layer is missing from wings animation onwards -- So we change the head to its standard equivalent if humanoid.humanoid_class == "Slack Female Patient" then humanoid:setLayer(0, humanoid.layers[0] - 8) end action.phase = 3 humanoid:setTimer(11, action_die_tick) humanoid:setAnimation(humanoid.die_anims.wings_east, mirror) elseif phase == 3 then action.phase = 4 humanoid:setTimer(15, action_die_tick) humanoid:setAnimation(humanoid.die_anims.hands_east, mirror) elseif phase == 4 then action.phase = 5 humanoid:setTimer(30, action_die_tick) humanoid:setAnimation(humanoid.die_anims.fly_east, mirror) humanoid:setTilePositionSpeed(humanoid.tile_x, humanoid.tile_y, nil, nil, 0, -4) else humanoid:despawn() humanoid.world:destroyEntity(humanoid) end end) local action_die_tick_reaper; action_die_tick_reaper = permanent"action_die_tick_reaper"( function(humanoid) local action = humanoid.action_queue[1] local mirror = humanoid.last_move_direction == "east" and 0 or 1 local phase = action.phase if phase == 0 then action.phase = 1 if humanoid.die_anims.extra_east ~= nil then humanoid:setTimer(humanoid.world:getAnimLength(humanoid.die_anims.extra_east), action_die_tick_reaper) humanoid:setAnimation(humanoid.die_anims.extra_east, mirror) else action_die_tick_reaper(humanoid) end --1: The patient stays on the ground until phase 5: elseif phase == 1 then action.phase = 2 if humanoid.humanoid_class ~= "Standard Male Patient" then humanoid:setType("Standard Male Patient") end humanoid:setAnimation(humanoid.on_ground_anim, mirror) action_die_tick_reaper(humanoid) --2: Spawn the grim reaper and the lava hole, if no suitable spawn points are found a heaven death will be started: elseif phase == 2 then local holes_orientation local hole_x, hole_y local grim_x, grim_y local grim_use_tile_x, grim_use_tile_y local grim_spawn_idle_direction local mirror_grim = 0 local spawn_scenarios = { {"south", humanoid.tile_x, humanoid.tile_y + 4, 0, 1, "north", 0, -1, {{after_spawn_idle_direction = "east", hole_x_offset = -5, hole_y_offset = 2}, {hole_x_offset = 0, hole_y_offset = 3}} }, {"east", humanoid.tile_x + 4, humanoid.tile_y, 1, 0, "west", -1, 0, {{hole_x_offset = 3, hole_y_offset = 0}} } } --- -- @param spawn_scenario {holes_orientation, find_hole_spawn_x, find_hole_spawn_y, g_use_x_offset, g_use_y_offset, grim_face_hole_dir, mirror_grim, p_use_x_offset, p_use_y_offset, find_grim_spawn_attempts} --- local function tryToUseHellDeathSpawnScenario(spawn_scenario) holes_orientation = spawn_scenario[1] hole_x, hole_y = humanoid.world.pathfinder:findIdleTile(spawn_scenario[2], spawn_scenario[3], 0) if hole_x and humanoid.world:canNonSideObjectBeSpawnedAt(hole_x, hole_y, "gates_to_hell", holes_orientation, 0, 0) then if holes_orientation == "east" then mirror_grim = 1 end grim_use_tile_x = hole_x + spawn_scenario[4] grim_use_tile_y = hole_y + spawn_scenario[5] humanoid.hole_use_tile_x = hole_x + spawn_scenario[7] humanoid.hole_use_tile_y = hole_y + spawn_scenario[8] --Ensure that the lava hole is passable on at least one of its sides to prevent it from blocking 1 tile wide corridors: humanoid.world.map:setCellFlags(hole_x, hole_y, {passable = false}) local hole_has_passable_side = humanoid.world:getPathDistance(grim_use_tile_x, grim_use_tile_y, humanoid.hole_use_tile_x, humanoid.hole_use_tile_y) == 4 humanoid.world.map:setCellFlags(hole_x, hole_y, {passable = true}) if not hole_has_passable_side then return false end --Try to find grim a spawn point which will allow him to walk to his lava hole use tile: local grim_cant_walk_to_use_tile = true for _, find_grim_spawn_attempt in ipairs(spawn_scenario[9]) do grim_spawn_idle_direction = find_grim_spawn_attempt.after_spawn_idle_direction or spawn_scenario[6] grim_x, grim_y = humanoid.world.pathfinder:findIdleTile(hole_x + find_grim_spawn_attempt.hole_x_offset, hole_y + find_grim_spawn_attempt.hole_y_offset, 0) if grim_x and not humanoid.world:getRoom(grim_x, grim_y) then grim_cant_walk_to_use_tile = false break end end -- Else spawn him on it: if grim_cant_walk_to_use_tile then grim_spawn_idle_direction = spawn_scenario[6] grim_x = grim_use_tile_x grim_y = grim_use_tile_y end return true end return false end local usable_scenario_found = false for _, spawn_scenario in ipairs(spawn_scenarios) do if not usable_scenario_found then usable_scenario_found = tryToUseHellDeathSpawnScenario(spawn_scenario) end end if not usable_scenario_found then action_die_tick(humanoid) return end --Spawn the grim reaper and the lava hole: local lava_hole = humanoid.world:newObject("gates_to_hell", hole_x, hole_y, holes_orientation) local grim_reaper = humanoid.world:newEntity("GrimReaper", 1660) local point_dir = {x = grim_x, y = grim_y, direction = grim_spawn_idle_direction} grim_reaper:setNextAction(IdleSpawnAction(1660, point_dir):setCount(40)) --Initialise the grim reaper: grim_reaper:setHospital(humanoid.world:getLocalPlayerHospital()) grim_reaper.lava_hole = lava_hole grim_reaper.lava_hole.orientation = holes_orientation grim_reaper.use_tile_x = grim_use_tile_x grim_reaper.use_tile_y = grim_use_tile_y grim_reaper.mirror = mirror_grim grim_reaper.patient = humanoid humanoid.grim_reaper = grim_reaper action.phase = 3 action_die_tick_reaper(humanoid) --3: The grim reaper walks to his lava hole use tile and then stands idle waiting for phase 6: elseif phase == 3 then action.phase = 4 local grim = humanoid.grim_reaper if grim.tile_x ~= grim.use_tile_x or grim.tile_y ~= grim.use_tile_y then grim:queueAction(WalkAction(grim.use_tile_x, grim.use_tile_y):disableTruncate()) end local loop_callback_wait = --[[persistable:reaper_wait]]function() grim:setAnimation(1002, grim.mirror) action_die_tick_reaper(humanoid) end grim:queueAction(IdleAction():setLoopCallback(loop_callback_wait)) --4: There will be a brief pause before the patient stands up: elseif phase == 4 then action.phase = 5 humanoid:setTimer(20, action_die_tick_reaper) -- 5: The dead patient will now stand up: elseif phase == 5 then action.phase = 6 humanoid:setTimer(humanoid.world:getAnimLength(humanoid.die_anims.rise_hell_east), action_die_tick_reaper) humanoid:setAnimation(humanoid.die_anims.rise_hell_east, mirror) --6: The dead patient will now walk in to the lava hole, falling in as the grim reaper does his "sending patient to hell" animation: elseif phase == 6 then local grim = humanoid.grim_reaper local lava_hole = grim.lava_hole --The grim reaper's final actions: local loop_callback_swipe =--[[persistable:reaper_swipe]]function() grim:setAnimation(1670, grim.mirror) end grim:queueAction(IdleAction():setCount(grim.world:getAnimLength(1670)):setLoopCallback(loop_callback_swipe)) local loop_callback_leave =--[[persistable:reaper_leave]]function() grim:setAnimation(1678, grim.mirror) end grim:queueAction(IdleAction():setCount(grim.world:getAnimLength(1678)):setLoopCallback(loop_callback_leave)) local lava_destroy = --[[persistable:lava_destroy]]function() humanoid.world:destroyEntity(lava_hole) end local loop_callback_destroy =--[[persistable:reaper_destroy]]function() lava_hole.playing_sounds_in_random_sequence = false lava_hole:setTimer(lava_hole.world:getAnimLength(2552), lava_destroy) lava_hole:setAnimation(2552) grim.world:destroyEntity(grim) end grim:queueAction(IdleAction():setLoopCallback(loop_callback_destroy)) --The patient's final actions: humanoid:walkTo(humanoid.hole_use_tile_x, humanoid.hole_use_tile_y, true) local post_walk_into = --[[persistable:walk_into_lava]]function() grim:finishAction() end local use_action = UseObjectAction(lava_hole) use_action.destroy_user_after_use = true use_action.after_walk_in = post_walk_into humanoid:queueAction(use_action) humanoid:finishAction() end end) local function action_die_start(action, humanoid) humanoid:setMoodInfo() -- clear all mood icons local preferred_fall_direction if math.random(0, 1) == 1 then preferred_fall_direction = "east" else preferred_fall_direction = "south" end local anims = humanoid.die_anims assert(anims, "Error: no death animation for humanoid ".. humanoid.humanoid_class) action.must_happen = true -- TODO: Right now the angel version of death is the only possibility -- The Grim Reaper should sometimes also have a go. local fall = anims.fall_east --If this isn't done their bald head will become bloated instead of suddenly having hair: if humanoid.disease.id == "baldness" then humanoid:setLayer(0,2) end --[[Make the patient fall over: because this animation requires two tiles make sure there's enough space for this animation--]] local mirror_fall local east_tile_usable = humanoid.world:isTileEmpty(humanoid.tile_x + 1, humanoid.tile_y, true) local south_tile_usable = humanoid.world:isTileEmpty(humanoid.tile_x, humanoid.tile_y + 1, true) --Are the preferred fall directions usable? if preferred_fall_direction == "east" and east_tile_usable then humanoid.last_move_direction = "east" mirror_fall = 0 elseif preferred_fall_direction == "south" and south_tile_usable then humanoid.last_move_direction = "south" mirror_fall = 1 else --If the preferred direction isn't usable try the other direction: if east_tile_usable then humanoid.last_move_direction = "east" mirror_fall = 0 elseif south_tile_usable then humanoid.last_move_direction = "south" mirror_fall = 1 --[[If the patient's last move direction was east or south then there could be no fall space available so this else closure makes them walk to an accessible adjacent tile so that they can then fall on to their current tile:]]-- else -- Either the west or north tile will be accessible because this else closure can only be reached if the tiles adjacent to -- the patient east and south are blocked and this game doesn't allow patients to become stuck by having all the tiles -- adjacent to them become obstructed by objects and/or rooms: if humanoid.world:isTileEmpty(humanoid.tile_x - 1, humanoid.tile_y, true) then humanoid:walkTo(humanoid.tile_x - 1, humanoid.tile_y) else humanoid:walkTo(humanoid.tile_x, humanoid.tile_y - 1) end humanoid:queueAction(DieAction()) humanoid:finishAction() return end end humanoid:setAnimation(anims.fall_east, mirror_fall) action.phase = 0 local fall_anim_duration = humanoid.world:getAnimLength(fall) if humanoid.humanoid_class == "Chewbacca Patient" then --After 21 ticks the first frame of the buggy falling part of this animation is reached --so this animation is ended early, action_die_tick will then use the standard male fall animation: fall_anim_duration = 21 end -- Bloaty head patients can't go to hell because they don't have a -- "transform to standard male"/"fall into lava hole" animation. if humanoid:isMalePatient() and humanoid.disease.id ~= "bloaty_head" then if math.random(1, 100) <= 65 then humanoid:setTimer(fall_anim_duration, action_die_tick_reaper) else humanoid:setTimer(fall_anim_duration, action_die_tick) end else humanoid:setTimer(fall_anim_duration, action_die_tick) end humanoid.dead = true end return action_die_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/falling.lua000066400000000000000000000036211321660673500230450ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "FallingAction" (HumanoidAction) ---@type FallingAction local FallingAction = _G["FallingAction"] function FallingAction:FallingAction() self:HumanoidAction("falling") self.setMustHappen(true) end local action_falling_end = permanent"action_falling_end"( function(humanoid) humanoid:finishAction() end) local function action_falling_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.falling_anim, "Error: no falling animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.falling_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.falling_anim), action_falling_end) end return action_falling_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/get_up.lua000066400000000000000000000035441321660673500227200ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "GetUpAction" (HumanoidAction) ---@type GetUpAction local GetUpAction = _G["GetUpAction"] function GetUpAction:GetUpAction() self:HumanoidAction("get_up") end local action_get_up_end = permanent"action_get_up_end"( function(humanoid) humanoid:finishAction() end) local function action_get_up_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.get_up_anim, "Error: no getting up animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.get_up_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.get_up_anim), action_get_up_end) end return action_get_up_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/idle.lua000066400000000000000000000066261321660673500223560ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "IdleAction" (HumanoidAction) ---@type IdleAction local IdleAction = _G["IdleAction"] function IdleAction:IdleAction() self:HumanoidAction("idle") self.direction = nil -- Direction of standing idle. self.on_interrupt = nil -- Function to call at an interrupt. end --! Set the direction of facing while standing idle. --!param direction (string) Direction of facing. --!return (action) Self, for daisy-chaining. function IdleAction:setDirection(direction) assert(direction == nil or direction == "north" or direction == "south" or direction == "east" or direction == "west", "Invalid value for parameter 'direction'") self.direction = direction return self end --! Set the function to call on interrupt. --!param on_interrupt (function) Function to call on interrupt. --!return (action) Self, for daisy-chaining. function IdleAction:setOnInterrupt(on_interrupt) assert(on_interrupt == nil or type(on_interrupt) == "function", "Invalid value for parameter 'on_interrupt'") self.on_interrupt = on_interrupt return self end local action_idle_interrupt = permanent"action_idle_interrupt"( function(action, humanoid) humanoid:setTimer(1, humanoid.finishAction) end) local action_timer = permanent"action_idle_timer"( function(humanoid) local action = humanoid.action_queue[1] if action.after_use then action.after_use() action.must_happen = true end humanoid:finishAction() end) local function action_idle_start(action, humanoid) local direction = action.direction or humanoid.last_move_direction local anims = humanoid.walk_anims if direction == "north" then humanoid:setAnimation(anims.idle_north, 0) elseif direction == "east" then humanoid:setAnimation(anims.idle_east, 0) elseif direction == "south" then humanoid:setAnimation(anims.idle_east, 1) elseif direction == "west" then humanoid:setAnimation(anims.idle_north, 1) end humanoid.th:setTile(humanoid.th:getTile()) humanoid:setSpeed(0, 0) if action.count then humanoid:setTimer(action.count, action_timer) action.must_happen = true end -- If an interrupt is already specified for the idle action don't replace it if action.must_happen and not action.on_interrupt then action.on_interrupt = action_idle_interrupt end if action.loop_callback then action:loop_callback(humanoid) end end return action_idle_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/idle_spawn.lua000066400000000000000000000050601321660673500235550ustar00rootroot00000000000000--[[ Copyright (c) 2014 Joseph Sheppard Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "IdleSpawnAction" (HumanoidAction) ---@type IdleSpawnAction local IdleSpawnAction = _G["IdleSpawnAction"] function IdleSpawnAction:IdleSpawnAction(anim, point_dir) assert(type(anim) == "number", "Invalid value for parameter 'anim'") assert(type(point_dir) == "table" and type(point_dir.x) == "number" and type(point_dir.y) == "number" and point_dir.direction == "north" or point_dir.direction == "south" or point_dir.direction == "east" or point_dir.direction == "west", "Invalid value for parameter 'point_dir'") self:HumanoidAction("idle_spawn") self.spawn_animation = anim self.point = point_dir -- x, y, direction of the spawn animation end local function action_idle_spawn_start(action, humanoid) action.must_happen = true humanoid.last_move_direction = action.point.direction humanoid:setTilePositionSpeed(action.point.x,action.point.y) if action.spawn_animation then local loop_callback_spawn =--[[persistable:idle_spawn_animation]] function() if action.spawn_sound then humanoid:playSound(action.spawn_sound) end humanoid:setAnimation(action.spawn_animation) end humanoid:queueAction(IdleAction():setCount(humanoid.world:getAnimLength(action.spawn_animation)) :setLoopCallback(loop_callback_spawn)) elseif action.spawn_sound then humanoid:playSound(action.spawn_sound) end humanoid:queueAction(IdleAction():setCount(action.count):setLoopCallback(action.loop_callback)) humanoid:finishAction() end return action_idle_spawn_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/knock_door.lua000066400000000000000000000051551321660673500235650ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "KnockDoorAction" (HumanoidAction) ---@type KnockDoorAction local KnockDoorAction = _G["KnockDoorAction"] --! Constructor for knocking on the door action. --!param door (Object) Door to knock on. --!param direction (string) Direction of facing. function KnockDoorAction:KnockDoorAction(door, direction) assert(class.is(door, Door), "Invalid value for parameter 'door'") assert(direction == "north" or direction == "south" or direction == "east" or direction == "west", "Invalid value for parameter 'direction'") self:HumanoidAction("knock_door") self.door = door -- Door to knock on. self.direction = direction -- Direction of facing. end local action_knock_door_tick = permanent"action_knock_door_tick"( function(humanoid) local door = humanoid.user_of door:removeUser(humanoid) humanoid.user_of = nil door:getRoom():tryAdvanceQueue() humanoid:finishAction() end) local function action_knock_door_start(action, humanoid) local direction = action.direction local anims = humanoid.door_anims local door = action.door action.must_happen = true local anim = anims.knock_north local flag_mirror = (direction == "west" or direction == "south") and 1 or 0 if direction == "east" or direction == "south" then anim = anims.knock_east end humanoid:setAnimation(anim, flag_mirror) humanoid:setTilePositionSpeed(humanoid.tile_x, humanoid.tile_y) humanoid:setTimer(humanoid.world:getAnimLength(anim), action_knock_door_tick) humanoid.user_of = door door:setUser(humanoid) door.th:makeVisible() end return action_knock_door_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/meander.lua000066400000000000000000000072721321660673500230520ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "MeanderAction" (HumanoidAction) ---@type MeanderAction local MeanderAction = _G["MeanderAction"] function MeanderAction:MeanderAction() self:HumanoidAction("meander") end local function meander_action_start(action, humanoid) local room = humanoid:getRoom() -- Answering call queue if class.is(humanoid, Staff) and humanoid:isIdle() and not room then if humanoid.humanoid_class == "Handyman" then if humanoid:searchForHandymanTask() == true then return end -- If staff starts wandering around in Idle mode, -- he's effectively not in any room and need not to comeback after -- staff room visit elseif humanoid.world.dispatcher:answerCall(humanoid) then if action.must_happen then humanoid:finishAction() end return else -- Nowhere to go, start going to the old room if it's still in -- need of staff. local last_room = humanoid.last_room if last_room and last_room.is_active and last_room:testStaffCriteria(last_room:getMaximumStaffCriteria(), humanoid) then humanoid:queueAction(last_room:createEnterAction(humanoid)) humanoid:setDynamicInfoText(_S.dynamic_info.staff.actions.heading_for :format(last_room.room_info.name)) humanoid:finishAction() return end end humanoid.last_room = nil end -- Just wandering around if humanoid.humanoid_class == "Doctor" or humanoid.humanoid_class == "Nurse" then if not room then humanoid:setDynamicInfoText(_S.dynamic_info.staff.actions.wandering) end end local x, y = humanoid.world.pathfinder:findIdleTile(humanoid.tile_x, humanoid.tile_y, math.random(1, 24)) if x == humanoid.tile_x and y == humanoid.tile_y then -- Nowhere to walk to - go idle instead, or go onto the next action if #humanoid.action_queue == 1 then humanoid:queueAction(IdleAction()) end humanoid:finishAction() return end if action.todo_interrupt then humanoid:finishAction() return end if action.count then if action.count == 0 then humanoid:finishAction() return else action.count = action.count - 1 end elseif action.loop_callback then action.loop_callback() if action ~= humanoid.action_queue[1] then return end end local procrastination if action.can_idle and math.random(1, 3) == 1 then procrastination = IdleAction():setCount(math.random(25, 40)):setMustHappen(action.must_happen) else action.can_idle = true procrastination = WalkAction(x, y):setMustHappen(action.must_happen) end humanoid:queueAction(procrastination, 0) end return meander_action_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/multi_use_object.lua000066400000000000000000000330551321660673500247710ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "MultiUseObjectAction" (HumanoidAction) ---@type MultiUseObjectAction local MultiUseObjectAction = _G["MultiUseObjectAction"] --! Construct a multi-use object action. --!param object (Object) Object being used. --!param use_with (Humanoid) Fellow user of the object. function MultiUseObjectAction:MultiUseObjectAction(object, use_with) assert(class.is(object, Object), "Invalid value for parameter 'object'") assert(class.is(use_with, Humanoid), "Invalid value for parameter 'use_with'") self:HumanoidAction("multi_use_object") self.object = object self.use_with = use_with self.prolonged_usage = nil -- If true, the usage is prolonged. self.layer3 = nil end --! Set the invisibility span. --!param span (array) Span of invisibility, {from, to} --!return (action) self, for daisy-chaining. function MultiUseObjectAction:setInvisiblePhaseSpan(span) assert(type(span) == "table" and type(span[1]) == "number" and type(span[2] == "number") and span[1] <= span[2], "Invalid value for parameter 'span'") self.invisible_phase_span = span return self end --! Set prolonged usage of the object. --!param prolonged (bool) If set, enable prolonged usage of the object. --!return (action) self, for daisy-chaining. function MultiUseObjectAction:setProlongedUsage(prolonged) assert(type(prolonged), "boolean", "Invalid value for parameter 'prolonged'") self.prolonged_usage = prolonged return self end -- Set animation layer3 to the given value. --!param layer3 (int) Value to set for animation layer 3. --!return (action) self, for daisy-chaining. function MultiUseObjectAction:setLayer3(layer3) assert(type(layer3) == "number", "Invalid value for parameter 'layer3'") self.layer3 = layer3 return self end local TH = require "TH" local orient_mirror = { north = "west", west = "north", east = "south", south = "east", } local function action_multi_use_next_phase(action, phase) phase = phase + 1 if phase < -5 then phase = -5 end if phase == -5 and not action.anims.begin_use then phase = phase + 1 end if phase == -4 and not action.anims.begin_use_2 then phase = phase + 1 end if phase == -3 and not action.anims.begin_use_3 then phase = phase + 1 end if phase == -2 and not action.anims.begin_use_4 then phase = phase + 1 end if phase == -1 and not action.anims.begin_use_5 then phase = phase + 1 end if phase == 0 and not action.anims.in_use then phase = phase + 1 end if phase == 1 and not action.anims.finish_use then phase = phase + 1 end if phase == 2 and not action.anims.finish_use_2 then phase = phase + 1 end if phase == 3 and not action.anims.finish_use_3 then phase = phase + 1 end if phase == 4 and not action.anims.finish_use_4 then phase = phase + 1 end if phase == 5 and not action.anims.finish_use_5 then phase = phase + 1 end if phase > 5 then phase = 100 end return phase end local action_multi_use_object_tick local function action_multi_use_phase(action, humanoid, phase) local object = action.object humanoid.user_of = nil -- Temporary to avoid tile change warning action.phase = phase local anim_name = "in_use" if phase == -5 then anim_name = "begin_use" elseif phase == -4 then anim_name = "begin_use_2" elseif phase == -3 then anim_name = "begin_use_3" elseif phase == -2 then anim_name = "begin_use_4" elseif phase == -1 then anim_name = "begin_use_5" elseif phase == 1 then anim_name = "finish_use" elseif phase == 2 then anim_name = "finish_use_2" elseif phase == 3 then anim_name = "finish_use_3" elseif phase == 4 then anim_name = "finish_use_4" elseif phase == 5 then anim_name = "finish_use_5" end local anim = action.anims[anim_name] if type(anim) == "table" then -- If an animation list is provided rather than a single animation, then -- choose an animation from the list at random, or according to the previous -- phase. Look at general diagnosis for usage example. if action.random_anim then anim = anim[action.random_anim] else action.random_anim = math.random(1, #anim) anim = anim[action.random_anim] end end if object.split_anims then local anims = humanoid.world.anims for i = 2, #object.split_anims do local th = object.split_anims[i] th:setAnimation(anims, anim, action.mirror_flags) end end humanoid:setAnimation(anim, action.mirror_flags) local offset = object.object_type.orientations if offset then local tx, ty offset = offset[object.direction] if offset.use_animate_from_use_position then tx, ty = object.tile_x + offset.use_position[1], object.tile_y + offset.use_position[2] else tx, ty = object:getRenderAttachTile() end offset = offset.animation_offset humanoid:setTilePositionSpeed(tx, ty, offset[1], offset[2]) else humanoid:setTilePositionSpeed(object.tile_x, object.tile_y, 0, 0) end humanoid.user_of = object local length = humanoid.world:getAnimLength(anim) local secondary_anim = action.anims.secondary and action.anims.secondary[anim_name] if action.secondary_anim then secondary_anim = action.secondary_anim action.secondary_anim = nil end local use_with = action.use_with if secondary_anim then if type(secondary_anim) == "table" and secondary_anim[1] == "morph" then use_with:setAnimation(secondary_anim[2], action.mirror_flags) local morph_target = TH.animation() morph_target:setAnimation(use_with.world.anims, secondary_anim[3], action.mirror_flags) for layer, id in pairs(use_with.layers) do morph_target:setLayer(layer, id) end if secondary_anim.layers then for layer, id in pairs(use_with[secondary_anim.layers]) do morph_target:setLayer(layer, id) end action.change_secondary_layers = use_with[secondary_anim.layers] end use_with.th:setMorph(morph_target) secondary_anim = secondary_anim[3] else use_with:setAnimation(secondary_anim, action.mirror_flags) end use_with.th:makeVisible() local secondary_length = use_with.world:getAnimLength(secondary_anim) if secondary_length > length then length = secondary_length end else local span = action.invisible_phase_span if span then if span[1] <= phase and span[2] >= phase then use_with.th:makeInvisible() else use_with.th:makeVisible() end else use_with.th:makeInvisible() end end humanoid:setTimer(length, action_multi_use_object_tick) end local function copy_layers(dest, src) if class.is(dest, Staff) then dest:setLayer(0, src.layers[0]) dest:setLayer(1, src.layers[1]) dest:setLayer(2, src.layers[2]) dest:setLayer(3, src.layers[3]) dest:setLayer(4, src.layers[4]) elseif class.is(src, Staff) then dest:setLayer(5, src.layers[5]) end end action_multi_use_object_tick = permanent"action_multi_use_object_tick"( function(humanoid) local action = humanoid.action_queue[1] local use_with = action.use_with local object = action.object local phase = action.phase local oldphase = phase if phase ~= 0 or not action.prolonged_usage then phase = action_multi_use_next_phase(action, phase) elseif action.loop_callback then action:loop_callback() end if action.change_secondary_layers then for layer, id in pairs(action.change_secondary_layers) do use_with:setLayer(layer, id) end action.change_secondary_layers = nil copy_layers(humanoid, use_with) end if oldphase <= 5 and phase > 5 then object:removeUser(humanoid) humanoid.user_of = nil if object.split_anims then local anims, anim, frame, flags = humanoid.world.anims, object.th:getAnimation(), object.th:getFrame(), object.th:getFlag() for i = 2, #object.split_anims do local th = object.split_anims[i] th:setLayersFrom(object.th) th:setHitTestResult(object) th:setAnimation(anims, anim, flags) th:setFrame(frame) end object.ticks = object.object_type.ticks end end if phase == 0 then -- Already now move the secondary user to his final position and orientation. -- This is needed if some end phases have the secondary user visible (e.g. jelly moulder) local spec = object.object_type.orientations[object.direction] local pos = spec.finish_use_position_secondary or spec.use_position_secondary local direction = spec.finish_use_orientation_secondary use_with:setTilePositionSpeed(object.tile_x + pos[1], object.tile_y + pos[2]) if direction then local anims = use_with.walk_anims local anim = (direction == "north" or direction == "west") and anims.idle_north or anims.idle_east local flags = (direction == "north" or direction == "east") and 0 or 1 use_with:setAnimation(anim, flags) end end if phase == 100 then if action.layer3 then humanoid:setLayer(3, action.old_layer3_humanoid) use_with:setLayer(3, action.old_layer3_use_with) end use_with.th:makeVisible() use_with.action_queue[1].on_interrupt = action.idle_interrupt use_with.action_queue[1].must_happen = action.idle_must_happen local spec = object.object_type.orientations[object.direction] local pos = spec.finish_use_position or spec.use_position humanoid:setTilePositionSpeed(object.tile_x + pos[1], object.tile_y + pos[2]) -- Check if the room is about to be destroyed local room_destroyed = false if object.strength then room_destroyed = object:machineUsed(humanoid:getRoom()) end if not room_destroyed then -- Now call the after_use function if appropriate if action.after_use then action.after_use() end humanoid:finishAction(action) end else action_multi_use_phase(action, humanoid, phase) end end) local action_multi_use_object_interrupt = permanent"action_multi_use_object_interrupt"( function(action, humanoid) if not action.loop_callback then action.prolonged_usage = false end end) local function action_multi_use_object_start(action, humanoid) local use_with = action.use_with if action.must_happen then -- Setting must_happen is slightly dangerous (though required in some -- situations), as the multi-usage cannot be sure to happen until the -- secondary user is present (at which point, must_happen is always set). if action.todo_interrupt and not action.no_truncate then humanoid:finishAction(action) return end end if use_with.action_queue[1].name ~= "idle" then humanoid:queueAction(IdleAction():setCount(2), 0) return else action.idle_interrupt = use_with.action_queue[1].on_interrupt action.idle_must_happen = use_with.action_queue[1].must_happen use_with.action_queue[1].on_interrupt = nil use_with.action_queue[1].must_happen = true end action.must_happen = true if action.prolonged_usage then action.on_interrupt = action_multi_use_object_interrupt use_with.action_queue[1].on_interrupt = --[[persistable:action_multi_use_object_use_with_interrupt]] function() if action.on_interrupt then action:on_interrupt() action.on_interrupt = nil end end end local object = action.object local orient = object.direction local flags = 0 local anim_set = humanoid.humanoid_class .. " - " .. use_with.humanoid_class if not object.object_type.multi_usage_animations[anim_set][orient] then orient = orient_mirror[orient] flags = flags + 1 end if object.split_anims then flags = flags + DrawFlags.Crop end local spec = object.object_type.orientations[object.direction] -- early_list_while_in_use (if defined) will take precedence over early_list if spec.early_list_while_in_use or (spec.early_list_while_in_use == nil and spec.early_list) then flags = flags + 1024 end local anims = object.object_type.multi_usage_animations[anim_set][orient] action.anims = anims action.mirror_flags = flags object:setUser(humanoid) humanoid.user_of = object copy_layers(humanoid, use_with) if action.layer3 then action.old_layer3_humanoid = humanoid.layers[3] action.old_layer3_use_with = use_with.layers[3] humanoid:setLayer(3, action.layer3) use_with:setLayer(3, action.layer3) end if object.split_anims then for i = 2, #object.split_anims do local th = object.split_anims[i] th:setLayersFrom(humanoid.th) th:setHitTestResult(humanoid) end object.ticks = true end action_multi_use_phase(action, humanoid, action_multi_use_next_phase(action, -100)) end return action_multi_use_object_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/on_ground.lua000066400000000000000000000036241321660673500234260ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "OnGroundAction" (HumanoidAction) ---@type OnGroundAction local OnGroundAction = _G["OnGroundAction"] function OnGroundAction:OnGroundAction() self:HumanoidAction("on_ground") end local action_on_ground_end = permanent"action_on_ground_end"( function(humanoid) humanoid:finishAction() end) local function action_on_ground_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.on_ground_anim, "Error: no on the ground animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.on_ground_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.on_ground_anim), action_on_ground_end) end return action_on_ground_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/pee.lua000066400000000000000000000037711321660673500222100ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "PeeAction" (HumanoidAction) ---@type PeeAction local PeeAction = _G["PeeAction"] function PeeAction:PeeAction() self:HumanoidAction("pee") self:setMustHappen(true) end local action_pee_end = permanent"action_pee_end"( function(humanoid) local litter = humanoid.world:newObject("litter", humanoid.tile_x, humanoid.tile_y) litter:setLitterType("pee", humanoid.last_move_direction == "south" and 0 or 1) humanoid:finishAction() end) local function action_pee_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.pee_anim, "Error: no pee animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.pee_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.pee_anim), action_pee_end) end return action_pee_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/pickup.lua000066400000000000000000000073431321660673500227310ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "PickupAction" (HumanoidAction) ---@type PickupAction local PickupAction = _G["PickupAction"] -- Construct a pick-up action --!param ui User interface function PickupAction:PickupAction(ui) assert(class.is(ui, UI), "Invalid value for parameter 'ui'") self:HumanoidAction("pickup") self.ui = ui self.todo_close = nil self:setMustHappen(true) end function PickupAction:setTodoClose(dialog) assert(class.is(dialog, Window), "Invalid value for parameter 'dialog'") self.todo_close = dialog return self end local action_pickup_interrupt = permanent"action_pickup_interrupt"( function(action, humanoid) if action.window then action.window:close() end humanoid.th:makeVisible() local room = humanoid:getRoom() if room then room:onHumanoidEnter(humanoid) else humanoid:onPlaceInCorridor() end humanoid:finishAction() action.ui:setDefaultCursor(nil) end) local action_pickup_dont_interrupt = permanent"action_pickup_dont_interrupt"( function(action, humanoid) action.on_interrupt = action_pickup_interrupt end) local function action_pickup_start(action, humanoid) humanoid.dealing_with_patient = nil if action.todo_close then action.todo_close:close() end if class.is(humanoid, Staff) then humanoid:setDynamicInfoText("") -- picking up staff was not canceling moods in all cases see issue 1642 -- as you would expect room:onHumanoidLeave(humanoid to clear them! humanoid:setMood("idea3", "deactivate") humanoid:setMood("reflexion", "deactivate") end humanoid:setSpeed(0, 0) humanoid.th:makeInvisible() local room = humanoid:getRoom() if room then room:onHumanoidLeave(humanoid) end action.must_happen = true if action.todo_interrupt and action.todo_interrupt ~= "high" then -- If you pick up a staff member as they walk through a door, then the walk -- action will be given a high priority interrupt, and hence immediately -- dump the staff member in the room, at which point the room will command -- the entering staff, sending this pick up action a normal interrupt. We -- will completely ignore that, as the user's wish to pick up the staff is -- more important than the room's wish to command the staff. -- action_pickup_dont_interrupt will then set the interrupt handler back to -- normal, as that is called when the staff member is placed down again. action.on_interrupt = action_pickup_dont_interrupt else action.on_interrupt = action_pickup_interrupt end local ui = action.ui action.window = UIPlaceStaff(ui, humanoid, ui.cursor_x, ui.cursor_y) ui:addWindow(action.window) ui:playSound("pickup.wav") ui:setDefaultCursor(ui.grab_cursor) end return action_pickup_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/queue.lua000066400000000000000000000316611321660673500225620ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "QueueAction" (HumanoidAction) ---@type QueueAction local QueueAction = _G["QueueAction"] --! Queue for something (door or reception desk). --!param x X position of the queue. --!param y Y position of the queue. --!param queue (Queue) Queue to join function QueueAction:QueueAction(x, y, queue) assert(type(x) == "number", "Invalid value for parameter 'x'") assert(type(y) == "number", "Invalid value for parameter 'y'") assert(class.is(queue, Queue), "Invalid value for parameter 'queue'") self:HumanoidAction("queue") self.x = x -- Position of the queue(?) self.y = y self.face_x = nil -- Tile to turn the face to. self.face_y = nil self.queue = queue self.reserve_when_done = nil -- Object to reserve when leaving the queue. end --! Set the object to reserve when queueing is done. --!param door (object) Object to reserve when leaving the queue. --!return (action) self, for daisy-chaining. function QueueAction:setReserveWhenDone(door) assert(class.is(door, Door), "Invalid value for parameter 'door'") self.reserve_when_done = door return self end --! Set the tile to face. --!param face_x (int) X coordinate of the tile to face. --!param face_y (int) Y coordinate of the tile to face. --!return (action) self, for daisy-chaining. function QueueAction:setFaceDirection(face_x, face_y) assert(type(face_x) == "number", "Invalid value for parameter 'face_x'") assert(type(face_y) == "number", "Invalid value for parameter 'face_y'") self.face_x = face_x self.face_y = face_y return self end local function get_direction(x, y, facing_x, facing_y) if facing_y < y then return "north" elseif facing_y > y then return "south" end if facing_x > x then return "east" elseif facing_x < x then return "west" end end local function interrupt_head(humanoid, n) while n > 1 do local action = humanoid.action_queue[n] if action.name == "use_object" then -- Pull object usages out of the queue if action.object and action.object:isReservedFor(humanoid) then action.object:removeReservedUser(humanoid) end table.remove(humanoid.action_queue, n) else -- Mark other actions as needing interruption assert(action.must_happen) action.todo_interrupt = true end n = n - 1 end local action = humanoid.action_queue[n] assert(action.must_happen) local on_interrupt = action.on_interrupt if on_interrupt then action.on_interrupt = nil on_interrupt(action, humanoid) end end local function action_queue_find_idle(action, humanoid) local found_any = false for i, current_action in ipairs(humanoid.action_queue) do if current_action.name == "idle" then found_any = true if humanoid.action_queue[i + 1] == action then return i end end end if found_any then print("Warning: Proper idle not in action_queue") end return -1 end local function action_queue_find_drink_action(action, humanoid) local found_any = false for i, current_action in ipairs(humanoid.action_queue) do if current_action.name == "use_object" and current_action.object.object_type.id == "drinks_machine" then found_any = true if humanoid.action_queue[i + 1] == action then return i end end end if found_any then error("Proper drink action not in action_queue") else return -1 end end -- Finish standing includes currently going to the drinks machine. local function action_queue_finish_standing(action, humanoid) local index = action_queue_find_idle(action, humanoid) if index == -1 then -- Maybe going to the drinks machine? index = action_queue_find_drink_action(action, humanoid) if index == -1 then -- Attempt to recover by assuming the person is sitting down. print("Warning: Idle not in action_queue") if humanoid.action_queue[1].name == "use_object" then -- It is likely that the person is sitting down. return action_queue_leave_bench(action, humanoid) else error("This person seems to neither be standing nor sitting?!") end end end interrupt_head(humanoid, index) index = index + 1 while index >= 1 do local current_action = humanoid.action_queue[index] if current_action == action then return index - 1 end index = index - 1 end error("Queue action not in action_queue") end local function action_queue_leave_bench(action, humanoid) local index for i, current_action in ipairs(humanoid.action_queue) do -- Check to see that we haven't -- gotten to the actual queue action yet. -- Instead of crashing if we have, try with the assumption -- that we're actually standing. if current_action == action then print("Warning: A patient supposedly sitting down was not," .. " trying to recover assuming he/she is standing.") return action_queue_finish_standing(action, humanoid) end if current_action.name == "use_object" then if humanoid.action_queue[i + 1] == action then interrupt_head(humanoid, i) index = i break end end end index = index + 1 while index >= 1 do local current_action = humanoid.action_queue[index] if current_action == action then return index - 1 end index = index - 1 end error("Queue action not in action_queue") end local action_queue_on_change_position = permanent"action_queue_on_change_position"( function(action, humanoid) -- Only proceed with this handler if the patient is still in the queue if not action.is_in_queue then return end -- Find out if we have to be standing up - considering humanoid_class covers both health inspector and VIP local must_stand = class.is(humanoid, Staff) or humanoid.humanoid_class == "Inspector" or humanoid.humanoid_class == "VIP" or (humanoid.disease and humanoid.disease.must_stand) local queue = action.queue if not must_stand then for i = 1, queue.bench_threshold do if queue[i] == humanoid then must_stand = true break end end end if not must_stand then -- Try to find a bench local bench_max_distance if action:isStanding() then bench_max_distance = 10 else bench_max_distance = action.current_bench_distance / 2 end local bench, bx, by, dist = humanoid.world:getFreeBench(action.x, action.y, bench_max_distance) if bench then local num_actions_prior if action:isStanding() then num_actions_prior = action_queue_finish_standing(action, humanoid) else num_actions_prior = action_queue_leave_bench(action, humanoid) end action.current_bench_distance = dist humanoid:queueAction(WalkAction(bx, by):setMustHappen(true), num_actions_prior) humanoid:queueAction(UseObjectAction(bench):setMustHappen(true), num_actions_prior + 1) bench.reserved_for = humanoid return elseif not action:isStanding() then -- Already sitting down, so nothing to do. return end end -- Stand up in the correct position in the queue local standing_index = 0 local our_room = humanoid:getRoom() for _, person in ipairs(queue) do if person == humanoid then break end if queue.callbacks[person]:isStanding() and person:getRoom() == our_room then standing_index = standing_index + 1 end end local ix, iy = humanoid.world:getIdleTile(action.x, action.y, standing_index) assert(ix and iy) local facing_x, facing_y if standing_index == 0 then facing_x, facing_y = action.face_x or action.x, action.face_y or action.y else facing_x, facing_y = humanoid.world:getIdleTile(action.x, action.y, standing_index - 1) end assert(facing_x and facing_y) local idle_direction = get_direction(ix, iy, facing_x, facing_y) if action:isStanding() then local idle_index = action_queue_find_idle(action, humanoid) if idle_index == -1 then idle_index = action_queue_find_drink_action(action, humanoid) if idle_index ~= -1 then -- Going to get a drink. Do nothing since it will be fixed after getting the drink. return else error("Could not find an idle or drink action when trying to stand in line.") end end humanoid.action_queue[idle_index].direction = idle_direction humanoid:queueAction(WalkAction(ix, iy):setMustHappen(true), idle_index - 1) else action.current_bench_distance = nil local num_actions_prior = action_queue_leave_bench(action, humanoid) humanoid:queueAction(WalkAction(ix, iy):setMustHappen(true), num_actions_prior) humanoid:queueAction(IdleAction():setDirection(idle_direction):setMustHappen(true), num_actions_prior + 1) end end) local action_queue_is_standing = permanent"action_queue_is_standing"( function(action) return not action.current_bench_distance end) local action_queue_on_leave = permanent"action_queue_on_leave"( function(action, humanoid) action.is_in_queue = false if action.reserve_when_done then action.reserve_when_done:addReservedUser(humanoid) end for i, current_action in ipairs(humanoid.action_queue) do if current_action == action then interrupt_head(humanoid, i) return end end error("Queue action not in action_queue") end) -- While queueing one could get thirsty. local action_queue_get_soda = permanent"action_queue_get_soda"( function(action, humanoid, machine, mx, my, fun_after_use) local num_actions_prior if action:isStanding() then num_actions_prior = action_queue_finish_standing(action, humanoid) else num_actions_prior = action_queue_leave_bench(action, humanoid) end -- Callback function used after the drinks machine has been used. local --[[persistable:action_queue_get_soda_after_use]] function after_use() fun_after_use() -- Defined in patient:tickDay -- If the patient is still in the queue, insert an idle action so that -- change_position can do its work. -- Note that it is inserted after the currently executing use_object action. if action.is_in_queue then humanoid:queueAction(IdleAction():setMustHappen(true), 1) action_queue_on_change_position(action, humanoid) end end -- Walk to the machine and then use it. humanoid:queueAction(WalkAction(mx, my):setMustHappen(true), num_actions_prior) humanoid:queueAction(UseObjectAction(machine):setAfterUse(after_use) :setMustHappen(true), num_actions_prior + 1) machine:addReservedUser(humanoid) -- Make sure no one thinks we're sitting down anymore. action.current_bench_distance = nil end) local action_queue_interrupt = permanent"action_queue_interrupt"( function(action, humanoid) if action.is_in_queue then action.queue:removeValue(humanoid) if action.reserve_when_done then action.reserve_when_done:updateDynamicInfo() end end if action.reserve_when_done then if action.reserve_when_done:isReservedFor(humanoid) then action.reserve_when_done:removeReservedUser(humanoid) end end humanoid:finishAction() end) local function action_queue_start(action, humanoid) local queue = action.queue if action.done_init then return end action.done_init = true action.must_happen = true action.on_interrupt = action_queue_interrupt action.onChangeQueuePosition = action_queue_on_change_position action.onLeaveQueue = action_queue_on_leave action.onGetSoda = action_queue_get_soda action.isStanding = action_queue_is_standing action.is_in_queue = true queue:unexpect(humanoid) queue:push(humanoid, action) local door = action.reserve_when_done if door then door:updateDynamicInfo() if class.is(humanoid, Patient) then humanoid:updateDynamicInfo(_S.dynamic_info.patient.actions.queueing_for:format(door.room.room_info.name)) end end humanoid:queueAction(IdleAction():setMustHappen(true):setIsLeaving(humanoid:isLeaving()), 0) action:onChangeQueuePosition(humanoid) if queue.same_room_priority then queue.same_room_priority:getRoom():tryAdvanceQueue() end end return action_queue_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/seek_reception.lua000066400000000000000000000111731321660673500244310ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "SeekReceptionAction" (HumanoidAction) ---@type SeekReceptionAction local SeekReceptionAction = _G["SeekReceptionAction"] function SeekReceptionAction:SeekReceptionAction() self:HumanoidAction("seek_reception") end local function can_join_queue_at(humanoid, x, y) local flag_cache = humanoid.world.map.th:getCellFlags(x, y) return flag_cache.hospital and not flag_cache.room and humanoid.hospital and flag_cache.owner == humanoid.hospital:getPlayerIndex() end local function action_seek_reception_start(action, humanoid) local world = humanoid.world local best_desk local score assert(humanoid.hospital, "humanoid must be associated with a hospital to seek reception") -- Go through all receptions desks. for _, desk in ipairs(humanoid.hospital:findReceptionDesks()) do if (not desk.receptionist and not desk.reserved_for) then -- Not an allowed reception desk to go to. else -- Ok, so we found one. -- Is this one better than the last one? -- A lower score is better. -- First find out where the usage tile is. local orientation = desk.object_type.orientations[desk.direction] local x = desk.tile_x + orientation.use_position[1] local y = desk.tile_y + orientation.use_position[2] local this_score = humanoid.world:getPathDistance(humanoid.tile_x, humanoid.tile_y, x, y) this_score = this_score + desk:getUsageScore() if not score or this_score < score then -- It is better, or the first one! score = this_score best_desk = desk end end end if best_desk then -- We found a desk to go to! local orientation = best_desk.object_type.orientations[best_desk.direction] local x = best_desk.tile_x + orientation.use_position[1] local y = best_desk.tile_y + orientation.use_position[2] humanoid:updateDynamicInfo(_S.dynamic_info.patient.actions.on_my_way_to :format(best_desk.object_type.name)) humanoid.waiting = nil -- We don't want patients which have just spawned to be joining the queue -- immediately, so walk them closer to the desk before joining the queue if can_join_queue_at(humanoid, humanoid.tile_x, humanoid.tile_y) then local face_x, face_y = best_desk:getSecondaryUsageTile() humanoid:setNextAction(QueueAction(x, y, best_desk.queue):setMustHappen(action.must_happen) :setFaceDirection(face_x, face_y)) else local walk = WalkAction(x, y):setMustHappen(action.must_happen) humanoid:queueAction(walk, 0) -- Trim the walk to finish once it is possible to join the queue for i = #walk.path_x, 2, -1 do if can_join_queue_at(humanoid, walk.path_x[i], walk.path_y[i]) then walk.path_x[i + 1] = nil walk.path_y[i + 1] = nil else break end end end else -- No reception desk found. One will probably be built soon, somewhere in -- the hospital, so either walk to the hospital, or walk around the hospital. local procrastination if humanoid.hospital:isInHospital(humanoid.tile_x, humanoid.tile_y) then procrastination = MeanderAction():setCount(1):setMustHappen(action.must_happen) if not humanoid.waiting then -- Eventually people are going to get bored and leave. humanoid.waiting = 5 end else local _, hosp_x, hosp_y = world.pathfinder:isReachableFromHospital(humanoid.tile_x, humanoid.tile_y) procrastination = WalkAction(hosp_x, hosp_y):setMustHappen(action.must_happen) end humanoid:queueAction(procrastination, 0) end end return action_seek_reception_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/seek_room.lua000066400000000000000000000370011321660673500234130ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "SeekRoomAction" (HumanoidAction) ---@type SeekRoomAction local SeekRoomAction = _G["SeekRoomAction"] --! Find another room (and go to it). --!param room_type Type of the new room. function SeekRoomAction:SeekRoomAction(room_type) assert(type(room_type) == "string", "Invalid value for parameter 'room_type'") self:HumanoidAction("seek_room") self.room_type = room_type self.treatment_room = nil -- Whether the next room is a treatment room. self.diagnosis_room = nil end --! Denote that the room being looked for is a treatment room. --!return (action) self, for daisy-chaining. function SeekRoomAction:enableTreatmentRoom() self.treatment_room = true return self end function SeekRoomAction:setDiagnosisRoom(room) assert(type(room) == "number", "Invalid value for parameter 'room'") self.diagnosis_room = room return self end local function action_seek_room_find_room(action, humanoid) local room_type = action.room_type if action.diagnosis_room then local tried_rooms = 0 -- Make numbers for each available diagnosis room. A random index from this list will be chosen, -- and then the corresponding room index is taken as next room. (The list decrease for each room -- missing) local available_rooms = {} local room_at_index for i=1, #humanoid.available_diagnosis_rooms do available_rooms[i] = i end while tried_rooms < #humanoid.available_diagnosis_rooms do -- Choose a diagnosis room from the list at random. Note: This ignores the initial diagnosis room! room_at_index = math.random(1,#available_rooms) room_type = humanoid.available_diagnosis_rooms[available_rooms[room_at_index]] -- Try to find the room local room = humanoid.world:findRoomNear(humanoid, room_type, nil, "advanced") if room then return room else tried_rooms = tried_rooms + 1 -- Remove the index of this room from the list of indeces available in available_diagnosis_rooms table.remove(available_rooms, room_at_index) -- If the room can be built, set the flag for it. local diag = humanoid.world.available_rooms[room_type] if diag and humanoid.hospital.discovered_rooms[diag] then action.diagnosis_exists = room_type end end end -- No room found. If the last room to be checked was one that is not yet discovered -- but another one exists that can be built, return to that one. if not humanoid.world.available_rooms[room_type] and action.diagnosis_exists then action.room_type = action.diagnosis_exists end return nil elseif action.treatment_room then -- Treatment rooms etc either exist, or they don't. -- However, if many rooms are needed to treat the patient they all need to be available. -- Example: ward + operating theatre. for _, rooms in pairs(humanoid.disease.treatment_rooms) do if not humanoid.world:findRoomNear(humanoid, rooms, nil, "advanced") then action.room_type_needed = rooms return nil end end end return humanoid.world:findRoomNear(humanoid, room_type, nil, "advanced") end local action_seek_room_goto_room = permanent"action_seek_room_goto_room"( function(room, humanoid, diagnosis_room) humanoid:setMood("patient_wait", "deactivate") humanoid.waiting = nil humanoid.message_callback = nil humanoid:setNextAction(room:createEnterAction(humanoid)) humanoid.next_room_to_visit = room humanoid:updateDynamicInfo(_S.dynamic_info.patient.actions.on_my_way_to :format(room.room_info.name)) room.door.queue:expect(humanoid) room.door:updateDynamicInfo() if not room:testStaffCriteria(room:getRequiredStaffCriteria()) then humanoid.world.dispatcher:callForStaff(room) end if diagnosis_room then -- The diagnosis room was found, remove it from the list table.remove(humanoid.available_diagnosis_rooms, diagnosis_room) end end) local function action_seek_room_no_treatment_room_found(room_type, humanoid) -- Emergency patients also don't need to ask what to do, they'll just wait for the player -- to build the necessary room. if humanoid.is_emergency then return end -- Wait two months before going home anyway. humanoid.waiting = 60 local strings = _S.fax.disease_discovered_patient_choice -- Can this room be built right now? What is then missing? -- TODO: Change to make use of Hospital:checkDiseaseRequirements local output_text = strings.can_not_cure -- TODO: can we really assert this? Or should we just make the patient go home? local room = assert(humanoid.world.available_rooms[room_type], "room " .. room_type .. " not available") local room_discovered = false if humanoid.hospital.discovered_rooms[room] then room_discovered = true local room_name, required_staff, staff_name = humanoid.world:getRoomNameAndRequiredStaffName(room_type) if humanoid.hospital:hasStaffOfCategory(required_staff) then output_text = strings.need_to_build:format(room_name) else output_text = strings.need_to_build_and_employ:format(room_name, staff_name) end end local research_enabled = not room_discovered and humanoid.hospital:hasRoomOfType("research") local message = { {text = strings.disease_name:format(humanoid.disease.name)}, {text = " "}, {text = output_text}, {text = strings.what_to_do_question}, choices = { {text = strings.choices.send_home, choice = "send_home"}, {text = strings.choices.wait, choice = "wait"}, {text = strings.choices.research, choice = "research", enabled = research_enabled}, }, } -- Ok, send the message in all channels. TheApp.ui.bottom_panel:queueMessage("information", message, humanoid) humanoid:setMood("patient_wait", "activate") humanoid:updateDynamicInfo(_S.dynamic_info.patient.actions.awaiting_decision) end local function action_seek_room_no_diagnosis_room_found(action, humanoid) --If it's the VIP then there's been an explosion. Skip the exploded room if humanoid.humanoid_class == "VIP" then humanoid.waiting = 1 return end -- If none of the diagnosis rooms can be built yet, go home anyway. -- Otherwise, depending on hospital policy three things can happen: if humanoid.diagnosis_progress < humanoid.hospital.policies["send_home"] then -- Send home automatically humanoid:goHome("kicked") humanoid:updateDynamicInfo(_S.dynamic_info.patient.actions.no_diagnoses_available) elseif humanoid.diagnosis_progress < humanoid.hospital.policies["guess_cure"] or not humanoid.hospital.disease_casebook[humanoid.disease.id].discovered then -- If the disease hasn't been discovered yet it cannot be guessed, go here instead. -- Ask the player -- Wait two months before going home anyway. humanoid:setMood("patient_wait", "activate") humanoid.waiting = 60 local guess_enabled = humanoid.hospital.disease_casebook[humanoid.disease.id].discovered local message = { {text = _S.fax.diagnosis_failed.situation}, {text = " "}, {text = _S.fax.diagnosis_failed.what_to_do_question}, choices = { {text = _S.fax.diagnosis_failed.choices.send_home, choice = "send_home"}, {text = _S.fax.diagnosis_failed.choices.take_chance, choice = "guess_cure", enabled = guess_enabled}, {text = _S.fax.diagnosis_failed.choices.wait, choice = "wait"}, }, } if guess_enabled then table.insert(message, 3, {text = _S.fax.diagnosis_failed.partial_diagnosis_percentage_name :format(math.round(humanoid.diagnosis_progress*100), humanoid.disease.name)}) end TheApp.ui.bottom_panel:queueMessage("information", message, humanoid) humanoid:updateDynamicInfo(_S.dynamic_info.patient.actions.awaiting_decision) -- This seek_room action will be reused, return that it's valid. return true else -- Guess "type of disease" automatically. -- A patient with an undiscovered disease should never get here. assert(humanoid.hospital.disease_casebook[humanoid.disease.id].discovered) humanoid:setDiagnosed() humanoid:unregisterRoomBuildCallback(action.build_callback) humanoid:unregisterRoomRemoveCallback(action.remove_callback) if humanoid:agreesToPay(humanoid.disease.id) then humanoid:queueAction({ name = "seek_room", room_type = humanoid.disease.treatment_rooms[1], treatment_room = true, }, 1) else humanoid:goHome("over_priced", humanoid.disease.id) end humanoid:finishAction() end end local action_seek_room_interrupt = permanent"action_seek_room_interrupt"( function(action, humanoid) humanoid:setMood("patient_wait", "deactivate") -- Just in case we are somehow started again: -- FIXME: This seems to be used for intermediate actions like peeing while the patient is waiting -- Unfortunately this means that if you finish the required room while the patient is peeing -- the callback does not happen, meaning that the message does not disappear. humanoid:unregisterRoomBuildCallback(action.build_callback) humanoid:unregisterRoomRemoveCallback(action.remove_callback) action.build_callback = nil action.remove_callback = nil action.done_init = false humanoid:finishAction() end) local function action_seek_room_start(action, humanoid) if action.todo_interrupt then humanoid:finishAction() return end -- Seeking for toilets is a special case with its own action. if action.room_type == "toilets" then humanoid:queueAction(SeekToiletsAction(), 1) humanoid:finishAction() return end -- Tries to find the room, if it is a diagnosis room, try to find any room in the diagnosis list. local room = action_seek_room_find_room(action, humanoid) if room then action_seek_room_goto_room(room, humanoid, action.diagnosis_room) else if not action.done_init then action.done_init = true action.must_happen = true local remove_callback = --[[persistable:action_seek_room_remove_callback]] function(rm) if rm.room_info.id == "research" then humanoid:updateMessage("research") end end -- End of remove_callback function action.remove_callback = remove_callback humanoid:registerRoomRemoveCallback(remove_callback) local build_callback build_callback = --[[persistable:action_seek_room_build_callback]] function(rm) -- if research room was built, message may need to be updated if rm.room_info.id == "research" then humanoid:updateMessage("research") end local found = false if rm.room_info.id == action.room_type then found = true elseif rm.room_info.id == action.room_type_needed then -- So the room that we're going to is not actually the room we waited for to be built. -- Example: Will go to ward, but is waiting for the operating theatre. -- Clean up and start over to find the room we actually want to go to. TheApp.ui.bottom_panel:removeMessage(humanoid) humanoid:unregisterRoomBuildCallback(build_callback) humanoid:unregisterRoomRemoveCallback(remove_callback) action.room_type_needed = nil action_seek_room_start(action, humanoid) elseif not humanoid.diagnosed then -- Waiting for a diagnosis room, we need to go through the list - unless it is gp if action.room_type ~= "gp" then for i = 1, #humanoid.available_diagnosis_rooms do if humanoid.available_diagnosis_rooms[i].id == rm.room_info.id then found = true end end end end if found then -- Don't add a "go to room" action to the patient's queue if the -- autopsy machine is about to kill them: local current_room = humanoid:getRoom() if not current_room or not (current_room.room_info.id == "research" and current_room:getStaffMember() and current_room:getStaffMember().action_queue[1].name == "multi_use_object") then action_seek_room_goto_room(rm, humanoid, action.diagnosis_room) end TheApp.ui.bottom_panel:removeMessage(humanoid) humanoid:unregisterRoomBuildCallback(build_callback) humanoid:unregisterRoomRemoveCallback(remove_callback) end end -- End of build_callback function action.build_callback = build_callback humanoid:registerRoomBuildCallback(build_callback) action.on_interrupt = action_seek_room_interrupt end -- Things needed to get the patient to the correct room in due time are done. Now it's -- time to let the player know about it too. -- If done_walk is set the meander action that takes place after not finding any room has been -- done = nothing more to do right now. if not action.done_walk then local action_still_valid = true if not action.message_sent then -- Make a message about that something needs to be done about this patient if humanoid.diagnosed then -- The patient is diagnosed, a treatment room is missing. -- It may happen that it is another room in a series which is missing. local room_to_find = action.room_type_needed and action.room_type_needed or action.room_type action_seek_room_no_treatment_room_found(room_to_find, humanoid) else -- No more diagnosis rooms can be found -- The GP's office is a special case. TODO: Make a custom message anyway? if action.room_type == "gp" then humanoid:setMood("patient_wait", "activate") humanoid:updateDynamicInfo(_S.dynamic_info.patient.actions.no_gp_available) else action_still_valid = action_seek_room_no_diagnosis_room_found(action, humanoid) end end end if action_still_valid then action.done_walk = true humanoid:queueAction(MeanderAction():setCount(1):setMustHappen(true), 0) end else -- Make sure the patient stands in a correct way as he/she is waiting. local direction = humanoid.last_move_direction local anims = humanoid.walk_anims if direction == "north" then humanoid:setAnimation(anims.idle_north, 0) elseif direction == "east" then humanoid:setAnimation(anims.idle_east, 0) elseif direction == "south" then humanoid:setAnimation(anims.idle_east, 1) elseif direction == "west" then humanoid:setAnimation(anims.idle_north, 1) end humanoid:setTilePositionSpeed(humanoid.tile_x, humanoid.tile_y) end end end return action_seek_room_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/seek_staffroom.lua000066400000000000000000000045151321660673500244430ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "SeekStaffRoomAction" (HumanoidAction) ---@type SeekStaffRoomAction local SeekStaffRoomAction = _G["SeekStaffRoomAction"] function SeekStaffRoomAction:SeekStaffRoomAction() self:HumanoidAction("seek_staffroom") self:setMustHappen(true) end local function seek_staffroom_action_start(action, humanoid) -- Mechanism for clearing the going_to_staffroom flag when this action is -- interrupted (due to entering the staff room, being picked up, etc.) if action.todo_interrupt then humanoid.going_to_staffroom = nil humanoid:finishAction() return end action.must_happen = true -- Go to the nearest staff room, if any is found. local room = humanoid.world:findRoomNear(humanoid, "staff_room") if room then local task = room:createEnterAction(humanoid):setMustHappen(true):setIsLeaving(true) humanoid:queueAction(task, 0) humanoid:setDynamicInfoText(_S.dynamic_info.staff.actions.heading_for:format(room.room_info.name)) else -- This should happen only in rare cases, e.g. if the target staff room was removed while heading there and none other exists print("No staff room found in seek_staffroom action") humanoid.going_to_staffroom = nil humanoid:queueAction(MeanderAction()) humanoid:finishAction() end end return seek_staffroom_action_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/seek_toilets.lua000066400000000000000000000051531321660673500241250ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Based on seek_staffroom.lua by Manuel Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "SeekToiletsAction" (HumanoidAction) ---@type SeekToiletsAction local SeekToiletsAction = _G["SeekToiletsAction"] function SeekToiletsAction:SeekToiletsAction() self:HumanoidAction("seek_toilets") end local function seek_toilets_action_start(action, humanoid) -- Mechanism for clearing the going_to_toilets flag when this action is -- interrupted. if action.todo_interrupt then humanoid.going_to_toilet = "no" humanoid:finishAction() return end action.must_happen = true -- Go to the nearest toilet, if any is found. local room = humanoid.world:findRoomNear(humanoid, "toilets", nil, "advanced") if room then humanoid:setNextAction(room:createEnterAction(humanoid):setMustHappen(true)) -- Unexpect the patient from a possible destination room. if humanoid.next_room_to_visit then local queue = humanoid.next_room_to_visit.door.queue if queue then queue:unexpect(humanoid) end humanoid:updateDynamicInfo("") end humanoid:finishAction() else -- This should happen only in rare cases, e.g. if the target toilet room was -- removed while heading there and none other exists. In that case, go back -- to the previous room or go to the reception. if humanoid.next_room_to_visit then humanoid:setNextAction(SeekRoomAction(humanoid.next_room_to_visit.room_info.id)) else humanoid:queueAction(SeekReceptionAction()) end humanoid.going_to_toilet = "no" humanoid:finishAction() end end return seek_toilets_action_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/shake_fist.lua000066400000000000000000000036751321660673500235620ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "ShakeFistAction" (HumanoidAction) ---@type ShakeFistAction local ShakeFistAction = _G["ShakeFistAction"] function ShakeFistAction:ShakeFistAction() self:HumanoidAction("shake_fist") self:setMustHappen(true) end local action_shake_fist_end = permanent"action_shake_fist_end"( function(humanoid) humanoid:finishAction() end) local function action_shake_fist_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.shake_fist_anim, "Error: no shaking fist animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.shake_fist_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.shake_fist_anim), action_shake_fist_end) end return action_shake_fist_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/spawn.lua000066400000000000000000000111471321660673500225630ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "SpawnAction" (HumanoidAction) ---@type SpawnAction local SpawnAction = _G["SpawnAction"] --! Spawn an entity. --!param mode (str) Mode of spawning: "spawn" or "despawn" --!param point (table x, y, optional direction) Position and optional face direction of spawning or despawning. function SpawnAction:SpawnAction(mode, point) assert(mode == "spawn" or mode == "despawn", "Invalid value for parameter 'mode'") assert(type(point) == "table" and type(point.x) == "number" and type(point.y) == "number", "Invalid value for parameter 'point'") self:HumanoidAction("spawn") self.mode = mode -- mode of spawning: "spawn" or "despawn" self.point = point self.offset = nil -- Offset in position?? end --! Set the offset of spawning. --! --! These two values specifies how many tiles away the humanoid should start --! walking before actually spawning in the destination tile. Default is x and --! y values are 2, and should not be set less than or equal to 0. Only one of --! x or y offsets are used depending on the initial walk direction of the --! newly spawned humanoid. --!param offset (table x, y) Position offset. --!return (action) Return self for daisy chaining. function SpawnAction:setOffset(offset) assert(type(offset) == "table" and (offset.x == nil or (type(offset.x) == "number" and offset.x > 0)) and (offset.y == nil or (type(offset.y) == "number" and offset.y > 0)), "Invalid value for parameter 'offset'") self.offset = offset return self end local orient_opposite = { north = "south", west = "east", east = "west", south = "north", } local action_spawn_despawn = permanent"action_spawn_despawn"( function(humanoid) if humanoid.hospital then humanoid:despawn() end humanoid.world:destroyEntity(humanoid) end) local function action_spawn_start(action, humanoid) assert(action.mode == "spawn" or action.mode == "despawn", "spawn action given invalid mode: " .. action.mode) local x, y = action.point.x, action.point.y if action.mode == "despawn" and (humanoid.tile_x ~= x or humanoid.tile_y ~= y) then humanoid:queueAction(WalkAction(action.point.x, action.point.y):setMustHappen(action.must_happen), 0) return end action.must_happen = true local anims = humanoid.walk_anims local walk_dir = action.point.direction if action.mode == "spawn" then walk_dir = orient_opposite[walk_dir] end local offset_x = 2 local offset_y = 2 if action.offset then offset_x = action.offset.x and action.offset.x or 2 offset_y = action.offset.y and action.offset.y or 2 end assert(offset_x > 0 and offset_y > 0, "Spawning needs to be done from an adjacent tile.") local anim, flag, speed_x, speed_y, duration if walk_dir == "east" then anim, flag, speed_x, speed_y, duration = anims.walk_east , 0, 4, 2, 10*offset_x elseif walk_dir == "west" then anim, flag, speed_x, speed_y, duration = anims.walk_north, 1, -4, -2, 10*offset_x elseif walk_dir == "south" then anim, flag, speed_x, speed_y, duration = anims.walk_east , 1, -4, 2, 10*offset_y else--if walk_dir == "north" then anim, flag, speed_x, speed_y, duration = anims.walk_north, 0, 4, -2, 10*offset_y end humanoid.last_move_direction = walk_dir humanoid:setAnimation(anim, flag) local pos_x, pos_y = 0, 0 if action.mode == "spawn" then pos_x = -speed_x * duration pos_y = -speed_y * duration humanoid:setTimer(duration, humanoid.finishAction) else humanoid:setTimer(duration, action_spawn_despawn) end humanoid:setTilePositionSpeed(x, y, pos_x, pos_y, speed_x, speed_y) end return action_spawn_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/staff_reception.lua000066400000000000000000000103541321660673500246050ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "StaffReceptionAction" (HumanoidAction) ---@type StaffReceptionAction local StaffReceptionAction = _G["StaffReceptionAction"] -- Action class for the "staff reception desk" action. --!param desk (object) Desk to staff. function StaffReceptionAction:StaffReceptionAction(desk) assert(class.is(desk, ReceptionDesk), "Invalid value for parameter 'desk'") self:HumanoidAction("staff_reception") self.object = desk -- Reception desk object. self:setMustHappen(true) end local action_staff_reception_interrupt = permanent"action_staff_reception_interrupt"( function(action, humanoid, high_priority) local object = action.object object.receptionist = nil if not object.being_destroyed then -- don't look for replacement if desk was picked up object:checkForNearbyStaff() end humanoid.associated_desk = nil local dx, dy = object:getSecondaryUsageTile() if high_priority then humanoid:setTilePositionSpeed(dx, dy) humanoid:finishAction() else HumanoidRawWalk(humanoid, humanoid.tile_x, humanoid.tile_y, dx, dy, nil, function() humanoid:setTilePositionSpeed(dx, dy) humanoid:finishAction() end) end end) local action_staff_reception_idle_phase = permanent"action_staff_reception_idle_phase"( function(humanoid) local action = humanoid.action_queue[1] local direction = humanoid.last_move_direction local anims = humanoid.walk_anims local object = action.object if direction == "north" then humanoid:setAnimation(anims.idle_north, 0) elseif direction == "east" then humanoid:setAnimation(anims.idle_east, 0) elseif direction == "south" then humanoid:setAnimation(anims.idle_east, 1) elseif direction == "west" then humanoid:setAnimation(anims.idle_north, 1) end humanoid:setTilePositionSpeed(object.tile_x, object.tile_y) object.receptionist = humanoid object.reserved_for = nil object.th:makeVisible() if direction == "north" or direction == "west" then -- Place desk behind receptionist in render order (they are on the same tile) object.th:setTile(object.th:getTile()) end if action.on_interrupt then action.on_interrupt = action_staff_reception_interrupt else action_staff_reception_interrupt(action, humanoid) end end) local action_staff_reception_interrupt_early = permanent"action_staff_reception_interrupt_early"( function(action, humanoid, high_priority) if high_priority then action.object.reserved_for = nil humanoid.associated_desk:checkForNearbyStaff() humanoid.associated_desk = nil humanoid:setTimer(nil) humanoid:setTilePositionSpeed(action.object:getSecondaryUsageTile()) humanoid:finishAction() end end) local function action_staff_reception_start(action, humanoid) if action.todo_interrupt then humanoid.associated_desk.reserved_for = nil humanoid.associated_desk:checkForNearbyStaff() humanoid.associated_desk = nil humanoid:finishAction(action) return end local object = action.object HumanoidRawWalk(humanoid, humanoid.tile_x, humanoid.tile_y, object.tile_x, object.tile_y, nil, action_staff_reception_idle_phase) action.must_happen = true action.on_interrupt = action_staff_reception_interrupt_early end return action_staff_reception_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/sweep_floor.lua000066400000000000000000000053161321660673500237600ustar00rootroot00000000000000--[[ Copyright (c) 2011 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "SweepFloorAction" (HumanoidAction) ---@type SweepFloorAction local SweepFloorAction = _G["SweepFloorAction"] function SweepFloorAction:SweepFloorAction(litter) assert(class.is(litter, Litter), "Invalid value for parameter 'litter'") self:HumanoidAction("sweep_floor") self.litter = litter end -- Set markers for all animations involved. local animation_numbers = { 1874, 1878, } TheApp.animation_manager:setMarker(animation_numbers, {-1.05, -0.05}) local finish = permanent"action_sweep_floor_finish"( function(humanoid) humanoid:finishAction() end) local remove_litter = permanent"action_sweep_floor_remove_litter"( function(humanoid) humanoid.user_of:remove() humanoid.user_of:setTile(nil) humanoid.user_of = nil humanoid:setTimer(humanoid.world:getAnimLength(animation_numbers[2]) * 2, finish) end) local sweep = permanent"action_sweep_floor_sweep"( function(humanoid) local anim = animation_numbers[2] humanoid:setAnimation(anim) humanoid:setTimer(humanoid.world:getAnimLength(anim) * 2, remove_litter) end) local function action_sweep_floor_start(action, humanoid) action.must_happen = true humanoid.user_of = action.litter -- remove handyman task as soon as action starts - we should be committed to completing this task local litter = action.litter local hospital = litter.world:getHospital(litter.tile_x, litter.tile_y) local taskIndex = hospital:getIndexOfTask(litter.tile_x, litter.tile_y, "cleaning", litter) hospital:removeHandymanTask(taskIndex, "cleaning") local anim = animation_numbers[1] humanoid:setAnimation(anim) humanoid:setTimer(humanoid.world:getAnimLength(anim), sweep) end return action_sweep_floor_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/tap_foot.lua000066400000000000000000000036331321660673500232470ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "TapFootAction" (HumanoidAction) ---@type TapFootAction local TapFootAction = _G["TapFootAction"] function TapFootAction:TapFootAction() self:HumanoidAction("tap_foot") self:setMustHappen(true) end local action_tap_foot_end = permanent"action_tap_foot_end"( function(humanoid) humanoid:finishAction() end) local function action_tap_foot_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.tap_foot_anim, "Error: foot tapping animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.tap_foot_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.tap_foot_anim), action_tap_foot_end) end return action_tap_foot_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/use_object.lua000066400000000000000000000340221321660673500235520ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" class "UseObjectAction" (HumanoidAction) ---@type UseObjectAction local UseObjectAction = _G["UseObjectAction"] --! Construct a 'use object' action. --!param object (Object) Object to use. function UseObjectAction:UseObjectAction(object) assert(class.is(object, Object), "Invalid value for parameter 'object'") self:HumanoidAction("use_object") self.object = object self.watering_plant = false -- Whether the action is watering the plant. self.prolonged_usage = nil -- If true, the usage is prolonged. end --! Set the 'watering plant' flag. --!return (action) self, for daisy chaining. function UseObjectAction:enableWateringPlant() self.watering_plant = true return self end --! Set prolonged usage of the object. --!param prolonged (bool or nil) If set, enable prolonged usage of the object. --!return (action) self, for daisy-chaining. function UseObjectAction:setProlongedUsage(prolonged) assert(prolonged == nil or type(prolonged) == "boolean", "Invalid value for parameter 'prolonged'") self.prolonged_usage = prolonged return self end local orient_mirror = { north = "west", west = "north", east = "south", south = "east", } local function action_use_next_phase(action, phase) phase = phase + 1 if phase < -6 then phase = -6 end if phase == -6 and not action.do_walk then phase = phase + 1 end if phase == -5 and not action.anims.begin_use then phase = phase + 1 end if phase == -4 and not action.anims.begin_use_2 then phase = phase + 1 end if phase == -3 and not action.anims.begin_use_3 then phase = phase + 1 end if phase == -2 and not action.anims.begin_use_4 then phase = phase + 1 end if phase == -1 and not action.anims.begin_use_5 then phase = phase + 1 end if phase == 0 and not action.anims.in_use then phase = phase + 1 end if phase == 1 and not action.anims.finish_use then phase = phase + 1 end if phase == 2 and not action.anims.finish_use_2 then phase = phase + 1 end if phase == 3 and not action.anims.finish_use_3 then phase = phase + 1 end if phase == 4 and not action.anims.finish_use_4 then phase = phase + 1 end if phase == 5 and not action.anims.finish_use_5 then phase = phase + 1 end if phase == 6 and not action.do_walk or phase == 6 and action.destroy_user_after_use then phase = phase + 1 end if phase > 6 then phase = 100 end return phase end local action_use_object_tick local function action_use_phase(action, humanoid, phase) local object = action.object humanoid.user_of = nil -- Temporary to avoid tile change warning action.phase = phase if phase == -6 then HumanoidRawWalk(humanoid, action.old_tile_x, action.old_tile_y, action.new_tile_x, action.new_tile_y, nil, action_use_object_tick) return elseif phase == 6 then HumanoidRawWalk(humanoid, action.new_tile_x, action.new_tile_y, action.old_tile_x, action.old_tile_y, nil, action_use_object_tick) return end local anim_table = action.anims.in_use if phase == -5 then anim_table = action.anims.begin_use elseif phase == -4 then anim_table = action.anims.begin_use_2 elseif phase == -3 then anim_table = action.anims.begin_use_3 elseif phase == -2 then anim_table = action.anims.begin_use_4 elseif phase == -1 then anim_table = action.anims.begin_use_5 elseif phase == 1 then anim_table = action.anims.finish_use elseif phase == 2 then anim_table = action.anims.finish_use_2 elseif phase == 3 then anim_table = action.anims.finish_use_3 elseif phase == 4 then anim_table = action.anims.finish_use_4 elseif phase == 5 then anim_table = action.anims.finish_use_5 end local is_list = false local anim = anim_table[humanoid.humanoid_class] if not anim then -- Handymen have their own number of animations. if humanoid.humanoid_class == "Handyman" then --action_use_phase(action, humanoid, action_use_next_phase(action, phase)) action_use_object_tick(humanoid) return else error("No animation for " .. humanoid.humanoid_class .. " using " .. object.object_type.id .. " facing " .. object.direction .. " phase " .. phase) end end local anim_length = 1 if type(anim) == "table" and anim.length then anim_length = anim.length end if type(anim) == "table" and anim[1] ~= "morph" and #anim > 1 then -- If an animation list is provided rather than a single animation, then -- choose an animation from the list at random. is_list = true anim = anim[math.random(1, #anim)] end local flags = action.mirror_flags if type(anim) == "table" then if anim.mirror then -- a single animation may be (un-)mirrored, switch the mirror flag in that case flags = flag_toggle(flags, DrawFlags.FlipHorizontal) end if anim.object_visible then -- this flag may be set to make the (idle) object visible additionally to the usage animation object.th:makeVisible() else object.th:makeInvisible() end if anim[1] ~= "morph" then anim = anim[1] end else object.th:makeInvisible() end if object.split_anims then flags = flags + DrawFlags.Crop local anims = humanoid.world.anims for i = 2, #object.split_anims do local th = object.split_anims[i] th:setAnimation(anims, anim, flags) end end if type(anim) == "table" and anim[1] == "morph" then -- If a table with entries {"morph", A, B} is given rather than a single -- animation, then display A first, then morph to B. humanoid:setAnimation(anim[2], flags) local morph_target = TH.animation() local morph_flags = flags if anim.mirror_morph then morph_flags = flag_toggle(morph_flags, DrawFlags.FlipHorizontal) end morph_target:setAnimation(humanoid.world.anims, anim[3], morph_flags) for layer, id in pairs(humanoid.layers) do morph_target:setLayer(layer, id) end if anim.layers then for layer, id in pairs(humanoid[anim.layers]) do morph_target:setLayer(layer, id) end action.change_layers = humanoid[anim.layers] end humanoid.th:setMorph(morph_target, anim_length) anim = anim[3] else humanoid:setAnimation(anim, flags) end local offset = object.object_type.orientations if offset then local tx, ty offset = offset[object.direction] if offset.use_animate_from_use_position then tx, ty = action.old_tile_x, action.old_tile_y else tx, ty = object:getRenderAttachTile() end if humanoid.humanoid_class == "Handyman" and offset.added_handyman_animate_offset_while_in_use then tx = tx + offset.added_handyman_animate_offset_while_in_use[1] ty = ty + offset.added_handyman_animate_offset_while_in_use[2] end local added_offset = nil if offset.added_animation_offset_while_in_use then added_offset = offset.added_animation_offset_while_in_use end offset = offset.animation_offset if added_offset then humanoid:setTilePositionSpeed(tx, ty, offset[1] + added_offset[1], offset[2] + added_offset[2]) else humanoid:setTilePositionSpeed(tx, ty, offset[1], offset[2]) end else humanoid:setTilePositionSpeed(object.tile_x, object.tile_y, 0, 0) end humanoid.user_of = object local length = anim_length * humanoid.world:getAnimLength(anim) if action.min_length and phase == 0 and action.min_length > length then -- A certain length is desired. -- Even it out so that an integer number of animation sequences are done. length = action.min_length + action.min_length % length end if phase == 0 and (not is_list) and length == 1 and action.prolonged_usage and action.on_interrupt and not action.loop_callback then -- a timer would be redundant, so do not set one else humanoid:setTimer(length, action_use_object_tick) end end local function init_split_anims(object, humanoid) if object.split_anims then for i = 2, #object.split_anims do local th = object.split_anims[i] th:setLayersFrom(humanoid.th) th:setHitTestResult(humanoid) end object.ticks = true end end local function finish_using(object, humanoid) object:removeUser(humanoid) humanoid.user_of = nil if object.split_anims then local anims, anim, frame, flags = humanoid.world.anims, object.th:getAnimation(), object.th:getFrame(), object.th:getFlag() for i = 2, #object.split_anims do local th = object.split_anims[i] th:setLayersFrom(object.th) th:setHitTestResult(object) th:setAnimation(anims, anim, flags) th:setFrame(frame) end object.ticks = object.object_type.ticks end end action_use_object_tick = permanent"action_use_object_tick"( function(humanoid) local action = humanoid.action_queue[1] local object = action.object local phase = action.phase local oldphase = phase if oldphase == -6 then object:setUser(humanoid) humanoid.user_of = object init_split_anims(object, humanoid) if action.after_walk_in then action:after_walk_in() end end if phase ~= 0 or not action.prolonged_usage or not action.on_interrupt then phase = action_use_next_phase(action, phase) elseif action.loop_callback then action:loop_callback() end if action.change_layers then for layer, id in pairs(action.change_layers) do humanoid:setLayer(layer, id) end action.change_layers = nil end if oldphase <= 5 and phase > 5 then finish_using(object, humanoid) end if phase == 100 then humanoid:setTilePositionSpeed(action.old_tile_x, action.old_tile_y) -- Check if the room is about to be destroyed local room_destroyed = false if object.strength then if humanoid.humanoid_class ~= "Handyman" then room_destroyed = object:machineUsed(humanoid:getRoom()) end elseif object:getDynamicInfo() and not object.master then -- Don't update if it is a slave object. object:updateDynamicInfo() end if not room_destroyed then -- Note that after_use is not called if the room has been destroyed! -- In that case both the patient, staff member(s) and -- the actual object are already dead. if action.after_use then action.after_use() end if action.destroy_user_after_use then humanoid:despawn() humanoid.world:destroyEntity(humanoid) else humanoid:finishAction(action) end end else action_use_phase(action, humanoid, phase) end end) local action_use_object_interrupt = permanent"action_use_object_interrupt"( function(action, humanoid, high_priority) if high_priority then local object = action.object if humanoid.user_of then finish_using(object, humanoid) elseif object:isReservedFor(humanoid) then object:removeReservedUser(humanoid) end humanoid:setTimer(nil) humanoid:setTilePositionSpeed(action.old_tile_x, action.old_tile_y) humanoid:finishAction() elseif not humanoid.timer_function then humanoid:setTimer(1, action_use_object_tick) end -- Only patients can be vaccination candidates so no need to check if humanoid.vaccination_candidate then humanoid:removeVaccinationCandidateStatus() end end) local function action_use_object_start(action, humanoid) action.old_tile_x = humanoid.tile_x action.old_tile_y = humanoid.tile_y action.on_interrupt = action_use_object_interrupt action.must_happen = true local object = action.object local orient = object.direction local flags = 0 if not object.object_type.usage_animations[orient] then orient = orient_mirror[orient] flags = flags + 1 end local spec = object.object_type.orientations[object.direction] -- early_list_while_in_use (if defined) will take precedence over early_list if spec.early_list_while_in_use or (spec.early_list_while_in_use == nil and spec.early_list) then flags = flags + 1024 end -- The handyman has his own place to be in if spec.finish_use_position and humanoid.humanoid_class ~= "Handyman" then action.old_tile_x = object.tile_x + spec.finish_use_position[1] action.old_tile_y = object.tile_y + spec.finish_use_position[2] end if spec.walk_in_tile then action.new_tile_x = spec.walk_in_tile[1] + object.tile_x action.new_tile_y = spec.walk_in_tile[2] + object.tile_y else action.new_tile_x = object.tile_x action.new_tile_y = object.tile_y end local anims = object.object_type.usage_animations[orient] action.anims = anims action.mirror_flags = flags if action.prolonged_usage == nil and anims.begin_use and anims.in_use and anims.finish_use then action.prolonged_usage = true end if object.object_type.walk_in_to_use then action.do_walk = true else object:setUser(humanoid) humanoid.user_of = object init_split_anims(object, humanoid) end if action.watering_plant then -- Tell the plant to start restoring itself object:restoreToFullHealth() end action_use_phase(action, humanoid, action_use_next_phase(action, -100)) end return action_use_object_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/use_screen.lua000066400000000000000000000161231321660673500235650ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UseScreenAction" (HumanoidAction) ---@type UseScreenAction local UseScreenAction = _G["UseScreenAction"] --! Action to use the screen. --!param screen (object) Screen to use. function UseScreenAction:UseScreenAction(screen) assert(class.is(screen, Object) and ( screen.object_type.id == "screen" or screen.object_type.id == "surgeon_screen"), "Invalid value for parameter 'screen'") self:HumanoidAction("use_screen") self.object = screen end local finish = permanent"action_use_screen_finish"( function(humanoid) local screen = humanoid.user_of humanoid.user_of = nil screen:removeUser(humanoid) local offset = screen.object_type.orientations[screen.direction].use_position humanoid:setTile(screen.tile_x + offset[1], screen.tile_y + offset[2]) local after_use = humanoid.action_queue[1].after_use if after_use then after_use() end humanoid:finishAction() end) -- Set markers for all animations involved. local animation_numbers = { 946, --1022, 1048, 1052, --1204, --2772, --2774, --2776, 2780, 2782, 2784, 2790, 2792, 2794, 2796, 2844, 2848, 4760, 4762, 4768, 4770, } TheApp.animation_manager:setMarker(animation_numbers, {-1.05, -0.05}) local patient_clothes_state = permanent"action_use_screen_patient_clothes_state"( function(humanoid) humanoid.user_of:setAnimation(1204) humanoid.user_of:setLayer(1, humanoid.layers[1]) return finish(humanoid) end) local normal_state = permanent"action_use_screen_normal_state"( function(humanoid) humanoid.user_of:setAnimation(1022) humanoid.user_of:setLayer(1, 0) return finish(humanoid) end) local surgical_state = permanent"action_use_screen_surgical_state"( function(humanoid) local screen = humanoid.user_of if screen.num_green_outfits > 0 then if screen.num_white_outfits > 0 then screen:setAnimation(2776) else screen:setAnimation(2772) end else screen:setAnimation(2774) end return finish(humanoid) end) local function action_use_screen_start(action, humanoid) local screen = action.object local class = humanoid.humanoid_class local anim, when_done local is_surgical = not not screen.num_green_outfits local change_to = math.random(1, 3) if class == "Elvis Patient" then anim, when_done = 946, finish humanoid:setType "Standard Male Patient" humanoid:setLayer(0, 2) humanoid:setLayer(1, math.random(0, 3) * 2) humanoid:setLayer(2, 2) elseif class == "Stripped Male Patient" then humanoid:setType "Standard Male Patient" anim, when_done = 1052, normal_state elseif class == "Stripped Female Patient" then humanoid:setType "Standard Female Patient" anim, when_done = 2844, normal_state elseif class == "Stripped Male Patient 2" then humanoid:setType "Standard Male Patient" anim, when_done = 1052, normal_state elseif class == "Stripped Female Patient 2" then humanoid:setType "Standard Female Patient" anim, when_done = 2844, normal_state elseif class == "Stripped Male Patient 3" then humanoid:setType "Standard Male Patient" anim, when_done = 1052, normal_state elseif class == "Stripped Female Patient 3" then humanoid:setType "Standard Female Patient" anim, when_done = 2844, normal_state elseif class == "Gowned Male Patient" then humanoid:setType "Standard Male Patient" anim, when_done = 4768, finish elseif class == "Gowned Female Patient" then humanoid:setType "Standard Female Patient" anim, when_done = 4770, finish elseif class == "Standard Male Patient" then if is_surgical then humanoid:setType "Gowned Male Patient" anim, when_done = 4760, finish else if change_to == 1 then humanoid:setType "Stripped Male Patient" anim, when_done = 1048, patient_clothes_state elseif change_to == 2 then humanoid:setType "Stripped Male Patient 2" anim, when_done = 1048, patient_clothes_state else humanoid:setType "Stripped Male Patient 3" anim, when_done = 1048, patient_clothes_state end end elseif class == "Standard Female Patient" then if is_surgical then humanoid:setType "Gowned Female Patient" anim, when_done = 4762, finish else if change_to == 1 then humanoid:setType "Stripped Female Patient" anim, when_done = 2848, patient_clothes_state elseif change_to == 2 then humanoid:setType "Stripped Female Patient 2" anim, when_done = 2848, patient_clothes_state else humanoid:setType "Stripped Female Patient 3" anim, when_done = 2848, patient_clothes_state end end elseif class == "Doctor" then humanoid:setType "Surgeon" when_done = surgical_state if screen.num_white_outfits > 0 then if screen.num_green_outfits > 1 then anim = 2780 else anim = 2784 end else anim = 2782 end screen.num_green_outfits = screen.num_green_outfits - 1 screen.num_white_outfits = screen.num_white_outfits + 1 elseif class == "Surgeon" then humanoid:setType "Doctor" when_done = surgical_state if screen.num_green_outfits > 0 then if screen.num_white_outfits > 1 then anim = 2796 else anim = 2790 end else anim = 2792 end screen.num_green_outfits = screen.num_green_outfits + 1 screen.num_white_outfits = screen.num_white_outfits - 1 else error(class .. " trying to use screen") end humanoid:setAnimation(anim) local mood_info = humanoid.mood_info humanoid.mood_info = nil -- Do not move mood_info humanoid:setTile(screen:getRenderAttachTile()) local offset = screen.object_type.orientations[screen.direction].animation_offset humanoid:setPosition(offset[1], offset[2]) humanoid.mood_info = mood_info humanoid:setSpeed(0, 0) humanoid:setTimer(humanoid.world:getAnimLength(anim), when_done) screen:setUser(humanoid) humanoid.user_of = screen action.must_happen = true if action.todo_interrupt == "high" then humanoid:setTimer(nil) when_done(humanoid) end end return action_use_screen_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/use_staffroom.lua000066400000000000000000000152551321660673500243130ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "UseStaffRoomAction" (HumanoidAction) ---@type UseStaffRoomAction local UseStaffRoomAction = _G["UseStaffRoomAction"] function UseStaffRoomAction:UseStaffRoomAction() self:HumanoidAction("use_staffroom") end -- decide on the next source of relaxation the humanoid will go to -- returns target_obj, ox, oy, new_type -- the function will always return a value for new_type, depending on what type was chosen, -- but target_obj, ox and oy will be nil, if no object of the chosen target was found local decide_next_target = permanent"use_staffroom_action_decide_next_target"( function(action, humanoid) assert(action.name == "use_staffroom", "decide_next_target only works with the use_staffroom action") local cur_type = action.target_type assert(class.is(humanoid, Staff), "decide_next_target called for non-staff humanoid") local h_class = humanoid.humanoid_class local chance = math.random(1, 10) -- take sofa as default local new_type = "sofa" -- With a chance of 20%, look for a pool table (Doctor and Handyman only) -- Don't choose pool table two times in a row though if (h_class == "Doctor" or h_class == "Handyman") and cur_type ~= "pool_table" and chance <= 2 then new_type = "pool_table" end -- With a chance of 20%, look for a video game (Doctor and Nurse only) -- Don't choose video game two times in a row though if (h_class == "Doctor" or h_class == "Nurse") and cur_type ~= "video_game" and 2 < chance and chance <= 4 then new_type = "video_game" end -- Take the a near object but not always the nearest (decreasing probability over distance) for some variation. local obj, ox, oy = humanoid.world:findFreeObjectNearToUse(humanoid, new_type, "near") return obj, ox, oy, new_type end) -- randomly generate the use time for a given source of relaxation local generate_use_time = permanent"use_staffroom_action_generate_use_time"( function(type) if type == "sofa" then return math.random(50, 80) elseif type == "pool_table" then return math.random(2, 5) elseif type == "video_game" then return math.random(2, 15) end end) -- table of how much relaxation an object gives per tick local relaxation = { sofa = 0.001, pool_table = 0.05, video_game = 0.05, } -- main function of the staffroom action local function use_staffroom_action_start(action, humanoid) assert(class.is(humanoid, Staff), "use_staffroom action called for non-staff humanoid") assert(humanoid.humanoid_class ~= "Receptionist", "use_staffroom action called for receptionist") -- For initial call of this function we have to decide a new target now -- Else, there should be already a new target defined if not action.next_target_type then action.target_obj, action.ox, action.oy, action.target_type = decide_next_target(action, humanoid) if action.target_obj then action.target_obj.reserved_for = humanoid end else action.target_obj = action.next_target_obj action.ox = action.next_ox action.oy = action.next_oy action.target_type = action.next_target_type action.next_target_obj = nil action.next_ox = nil action.next_oy = nil action.next_target_type = nil end -- If no target was found, then walk around for a bit and try again later if not action.target_obj then humanoid:queueAction(MeanderAction():setCount(2), 0) return end -- Otherwise, walk to and use the object: -- Note: force prolonged_usage, because video_game wouldn't get it by default (because it has no begin and end animation) local obj_use_time = generate_use_time(action.target_type) local loop_callback_use = --[[persistable:use_staffroom_action_loop_callback]] function(obj_action) humanoid:wake(relaxation[action.target_type]) -- if staff is no longer fatigued, make them leave the staff room if humanoid.attributes["fatigue"] == 0 then humanoid:setNextAction(humanoid:getRoom():createLeaveAction()) local room = humanoid.last_room -- Send back to the last room if that room is still empty. -- (applies to training and research only) -- Make sure that the room is still there though. -- If not, just answer the call if room and room.is_active and (room.room_info.id == "research" or room.room_info.id == "training") and room:testStaffCriteria(room:getMaximumStaffCriteria(), humanoid) then humanoid:queueAction(room:createEnterAction(humanoid)) humanoid:setDynamicInfoText(_S.dynamic_info.staff.actions.heading_for:format(room.room_info.name)) else -- Send the staff out of the room humanoid:queueAction(MeanderAction()) end else obj_use_time = obj_use_time - 1 -- if staff is done using object if obj_use_time == 0 then -- Decide on the next target. If it happens to be of the same type as the current, just continue using the current. -- also check x,y co-ords to see if the object actually exists in the room action.next_target_obj, action.next_ox, action.next_oy, action.next_target_type = decide_next_target(action, humanoid) if (not action.next_ox and not action.next_oy) or action.next_target_type == action.target_type then obj_use_time = generate_use_time(action.target_type) else if action.next_target_obj then action.next_target_obj.reserved_for = humanoid end obj_action.prolonged_usage = false end end end end local obj_action = UseObjectAction(action.target_obj):setProlongedUsage(true) :setLoopCallback(loop_callback_use) humanoid:queueAction(WalkAction(action.ox, action.oy), 0) humanoid:queueAction(obj_action, 1) end return use_staffroom_action_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/vaccinate.lua000066400000000000000000000106131321660673500233650ustar00rootroot00000000000000--[[ Copyright (c) 2013 William "sadger" Gatens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "VaccinateAction" (HumanoidAction) ---@type VaccinateAction local VaccinateAction = _G["VaccinateAction"] -- Vaccinate action constructor for a nurse. --!param patient (Patient) Patient to vaccinate. --!param fee Amount of money to pay. function VaccinateAction:VaccinateAction(patient, fee) assert(class.is(patient, Patient), "Invalid value for parameter 'patient'") assert(type(fee) == "number", "Invalid value for parameter 'fee'") self:HumanoidAction("vaccinate") self.patient = patient -- Patient to vaccinate. self.vaccination_fee = fee -- Money to get from the patient. self:setMustHappen(true) end local is_in_adjacent_square = permanent"vacc_adjacent_square"( function (patient,nurse) local x1, y1 = patient.tile_x, patient.tile_y local x2, y2 = nurse.tile_x, nurse.tile_y if not x1 or not x2 or not y1 or not y2 then return false end -- Determine if they are in an adjacent square local x_diff = math.abs(x1-x2) local y_diff = math.abs(y1-y2) if (x_diff + y_diff == 1) then -- And neither of them are in a room so must be outside return (not patient:getRoom() and not nurse:getRoom()) end end) local find_face_direction = permanent"vacc_find_face_direction"( function(nurse, patient) local nx, ny = nurse.tile_x, nurse.tile_y local px, py = patient.tile_x, patient.tile_y local x_diff = px - nx local y_diff = py - ny if x_diff == 1 then return "east" elseif x_diff == -1 then return "west" elseif y_diff == -1 then return "north" elseif y_diff == 1 then return "south" end end) local interrupt_vaccination = permanent"action_interrupt_vaccination"( function(action, humanoid) local epidemic = humanoid.hospital.epidemic epidemic:interruptVaccinationActions(humanoid) humanoid:setTimer(1, humanoid.finishAction) end) local function vaccinate(action, nurse) assert(nurse.humanoid_class == "Nurse") local patient = action.patient local perform_vaccination = --[[persistable:action_perform_vaccination]] function(humanoid) -- Check if they STILL are in an adjacent square if is_in_adjacent_square(nurse, patient) then CallsDispatcher.queueCallCheckpointAction(nurse) nurse:queueAction(AnswerCallAction()) -- Disable either vaccination icon that may be present (edge case) patient:setMood("epidemy2", "deactivate") patient:setMood("epidemy3", "deactivate") patient:setMood("epidemy1", "activate") patient.vaccinated = true patient.hospital:spendMoney(action.vaccination_fee, _S.transactions.vaccination) patient:updateDynamicInfo() else patient:setMood("epidemy3", "deactivate") patient:setMood("epidemy2", "activate") -- Drop it they may not even be the vacc candidate anymore CallsDispatcher.queueCallCheckpointAction(nurse) nurse:queueAction(AnswerCallAction()) patient.reserved_for = nil end end if is_in_adjacent_square(nurse,patient) then local face_direction = find_face_direction(nurse,patient) nurse:queueAction(IdleAction():setDirection(face_direction):setCount(5) :setAfterUse(perform_vaccination):setOnInterrupt(interrupt_vaccination):setMustHappen(true)) else patient:removeVaccinationCandidateStatus() nurse:setCallCompleted() patient.reserved_for = nil nurse:queueAction(MeanderAction()) end nurse:finishAction() end return vaccinate CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/vip_go_to_next_room.lua000066400000000000000000000054341321660673500255140ustar00rootroot00000000000000--[[ Copyright (c) 2012 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "VipGoToNextRoomAction" (HumanoidAction) ---@type VipGoToNextRoomAction local VipGoToNextRoomAction = _G["VipGoToNextRoomAction"] function VipGoToNextRoomAction:VipGoToNextRoomAction() self:HumanoidAction("vip_go_to_next_room") end local action_vip_go_to_next_room_end = permanent"action_next_room_end"( function(humanoid) end) local function action_vip_go_to_next_room_start(action, humanoid) if humanoid.next_room_no == nil then -- This vip is done here. humanoid:goHome() else -- Walk to the entrance of the room and stay there for a while. local x, y = humanoid.next_room:getEntranceXY() local callback = --[[persistable:vip_next_room_enroute_cancel]] function() humanoid:setNextAction(IdleAction()) humanoid.waiting = 1 end humanoid:queueAction(WalkAction(x, y)) -- What happens if the room disappears: humanoid.next_room.humanoids_enroute[humanoid] = {callback = callback} -- Evaluation function local --[[persistable:vip_next_room_eval]] function evaluate() -- First remove the VIP from the humanoids_enroute list. humanoid.next_room.humanoids_enroute[humanoid] = nil --humanoid.next_room.door.reserved_for = humanoid humanoid:evaluateRoom() humanoid.waiting = 3 end -- Find direction to look at local ix, iy = humanoid.next_room:getEntranceXY(true) local dir = "north" if iy > y then dir = "south" elseif iy == y then if ix < x then dir = "west" else dir = "east" end end humanoid:queueAction(IdleAction():setLoopCallback(evaluate):setDirection(dir)) -- Finish this action and start the above sequence. humanoid:finishAction() end end return action_vip_go_to_next_room_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/vomit.lua000066400000000000000000000041071321660673500225670ustar00rootroot00000000000000--[[ Copyright (c) 2009 Darrell "redneon" Blake Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "VomitAction" (HumanoidAction) ---@type VomitAction local VomitAction = _G["VomitAction"] function VomitAction:VomitAction() self:HumanoidAction("vomit") self:setMustHappen(true) end local action_vomit_end = permanent"action_vomit_end"( function(humanoid) local litter = humanoid.world:newObject("litter", humanoid.tile_x, humanoid.tile_y) litter:setLitterType("puke", humanoid.last_move_direction == "south" and 0 or 1) --For some reason the vomit is inverted. humanoid:finishAction() end) local function action_vomit_start(action, humanoid) if math.random(0, 1) == 1 then humanoid.last_move_direction = "east" else humanoid.last_move_direction = "south" end assert(humanoid.vomit_anim, "Error: no vomit animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.vomit_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.vomit_anim), action_vomit_end) end return action_vomit_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/walk.lua000066400000000000000000000362611321660673500223750ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "WalkAction" (HumanoidAction) ---@type WalkAction local WalkAction = _G["WalkAction"] --! Action to walk to a given position. --!param x (int) X coordinate of the destination tile. --!param y (int) Y coordinate of the destination tile. function WalkAction:WalkAction(x, y) assert(type(x) == "number", "Invalid value for parameter 'x'") assert(type(y) == "number", "Invalid value for parameter 'y'") self:HumanoidAction("walk") self.x = x self.y = y self.truncate_only_on_high_priority = false self.walking_to_vaccinate = false -- Nurse walking with the intention to vaccinate self.is_entering = false -- Whether the walk enters a room. end function WalkAction:truncateOnHighPriority() self.truncate_only_on_high_priority = true return self end --! Nurse is walking with the intention to vaccinate. --!return (action) self, for daisy-chaining. function WalkAction:enableWalkingToVaccinate() self.walking_to_vaccinate = true return self end --! Set a flag whether the walk enters a room. --!param entering (bool) If set or nil, set the flag of entering the room. --!return (action) self, for daisy-chaining. function WalkAction:setIsEntering(entering) assert(type(entering) == "boolean", "Invalid value for parameter 'entering'") self.is_entering = entering return self end local action_walk_interrupt action_walk_interrupt = permanent"action_walk_interrupt"( function(action, humanoid, high_priority) if action.truncate_only_on_high_priority and not high_priority then action.on_interrupt = action_walk_interrupt return end -- Truncate the remainder of the path for j = #action.path_x, action.path_index + 1, -1 do action.path_x[j] = nil action.path_y[j] = nil end -- Unreserve any door which we had reserved unless specifically told not to. if not action.keep_reserved then local door = action.reserve_on_resume if door and (door.reserved_for == humanoid or class.is(humanoid, Vip)) then -- "or class.is(humanoid, Vip)" is added as a temporary fix -- TODO: find the cause of the "VIP bug", why does the door not get unreserved sometimes when the VIP has looked into a room? See issue 1025 door.reserved_for = nil if door.queue:size() > 0 then door.queue:pop() door:updateDynamicInfo() end end else -- This flag can be used only once at a time. action.keep_reserved = nil end -- Unexpect the patient from a possible destination room. if humanoid.next_room_to_visit then local door = humanoid.next_room_to_visit.door if door.queue then door.queue:unexpect(humanoid) door:updateDynamicInfo() end end -- Terminate immediately if high-priority if high_priority then local timer_function = humanoid.timer_function humanoid:setTimer(nil) timer_function(humanoid) end if action.walking_to_vaccinate then local hospital = humanoid.hospital or humanoid.last_hospital local epidemic = hospital.epidemic if epidemic then epidemic:interruptVaccinationActions(humanoid) end end end) local flag_list_bottom = 2048 local flag_flip_h = 1 local navigateDoor local function action_walk_raw(humanoid, x1, y1, x2, y2, map, timer_fn) local factor = 1 local quantity = 8 if humanoid.speed and humanoid.speed == "fast" then factor = 2 quantity = 4 end local anims = humanoid.walk_anims local world = humanoid.world local notify_object = world:getObjectToNotifyOfOccupants(x2, y2) if notify_object then notify_object:onOccupantChange(1) end notify_object = world:getObjectToNotifyOfOccupants(x1, y1) if notify_object then notify_object:onOccupantChange(-1) end if x1 ~= x2 then if x1 < x2 then if map and map:getCellFlags(x2, y2).doorWest then return navigateDoor(humanoid, x1, y1, "east") else humanoid.last_move_direction = "east" humanoid:setAnimation(anims.walk_east) humanoid:setTilePositionSpeed(x2, y2, -32, -16, 4*factor, 2*factor) end else if map and map:getCellFlags(x1, y1).doorWest then return navigateDoor(humanoid, x1, y1, "west") else humanoid.last_move_direction = "west" humanoid:setAnimation(anims.walk_north, flag_flip_h) humanoid:setTilePositionSpeed(x1, y1, 0, 0, -4*factor, -2*factor) end end else if y1 < y2 then if map and map:getCellFlags(x2, y2).doorNorth then return navigateDoor(humanoid, x1, y1, "south") else humanoid.last_move_direction = "south" humanoid:setAnimation(anims.walk_east, flag_flip_h) humanoid:setTilePositionSpeed(x2, y2, 32, -16, -4*factor, 2*factor) end else if map and map:getCellFlags(x1, y1).doorNorth then return navigateDoor(humanoid, x1, y1, "north") else humanoid.last_move_direction = "north" humanoid:setAnimation(anims.walk_north) humanoid:setTilePositionSpeed(x1, y1, 0, 0, 4*factor, -2*factor) end end end humanoid:setTimer(quantity, timer_fn) end local flags_here, flags_there = {}, {} local action_walk_tick; action_walk_tick = permanent"action_walk_tick"( function(humanoid) local action = humanoid.action_queue[1] local path_x = action.path_x local path_y = action.path_y local path_index = action.path_index local check_doors = not not humanoid.door_anims local x1, y1 = path_x[path_index ], path_y[path_index ] local x2, y2 = path_x[path_index+1], path_y[path_index+1] if not x2 then -- Arrival at final tile humanoid:setTilePositionSpeed(x1, y1) if action.on_next_tile_set then action.on_next_tile_set() end humanoid:finishAction(action) return end -- Make sure that the next tile hasn't somehow become impassable since our -- route was determined local map = humanoid.world.map.th map:getCellFlags(x1, y1, flags_here) map:getCellFlags(x2, y2, flags_there) local recalc_route = not flags_there.passable and flags_here.passable -- Also make sure that a room hasn't unexpectedly been built on top of the -- path since the route was calculated. if not recalc_route and flags_here.roomId ~= flags_there.roomId then local door = TheApp.objects.door.thob local door2 = TheApp.objects.swing_door_right.thob if flags_here.thob ~= door and flags_here.thob ~= door2 and flags_there.thob ~= door and flags_there.thob ~= door2 and (not flags_there.room or map:getCellFlags(path_x[#path_x], path_y[#path_y]).roomId ~= flags_there.roomId) then recalc_route = true end end if recalc_route then if map:getCellFlags(x1, y1).passable then humanoid:setTilePositionSpeed(x1, y1) if action.on_next_tile_set then action.on_next_tile_set() end return action:on_restart(humanoid) end end -- on_next_tile_set can be set in the call to action_walk_raw, but it is -- then to be called AFTER the next raw walk or tile set, which is why we -- remember the previous value and call that, rather than call the new value. local on_next_tile_set = action.on_next_tile_set action_walk_raw(humanoid, x1, y1, x2, y2, check_doors and map, action_walk_tick) action.path_index = path_index + 1 if on_next_tile_set then on_next_tile_set() end end) -- This is a slight hack, but is the easiest way to make walk functionality -- available to other actions which want to do low-level walk operations. strict_declare_global "HumanoidRawWalk" HumanoidRawWalk = action_walk_raw local action_walk_tick_door = permanent"action_walk_tick_door"( function(humanoid) local door = humanoid.user_of if not class.is(door, SwingDoor) then -- The doors will need to finish swinging before another humanoid can walk through. door:removeUser(humanoid) end humanoid.user_of = nil return action_walk_tick(humanoid) end) navigateDoor = function(humanoid, x1, y1, dir) local action = humanoid.action_queue[1] local duration = 12 local dx = x1 local dy = y1 if dir == "east" then dx = dx + 1 duration = 10 elseif dir == "south" then dy = dy + 1 duration = 10 end local swinging = false local door = humanoid.world:getObject(dx, dy, "door") if not door then swinging = true door = humanoid.world:getObject(dx, dy, "swing_door_right") end door.queue:unexpect(humanoid) door:updateDynamicInfo() local room = door:getRoom() local is_entering_room = room and humanoid:getRoom() ~= room if class.is(humanoid, Staff) and is_entering_room and humanoid.humanoid_class ~= "Handyman" then -- A member of staff is entering, but is maybe no longer needed -- in this room? if not room.is_active or not room:staffFitsInRoom(humanoid) then humanoid:queueAction(IdleAction(), 0) humanoid:setTilePositionSpeed(x1, y1) humanoid:setNextAction(IdleAction():setCount(10), 0) humanoid:queueAction(MeanderAction()) return end end if door.user or (door.reserved_for and door.reserved_for ~= humanoid) or (is_entering_room and not room:canHumanoidEnter(humanoid)) then --queueing patients are no longer enroute room.humanoids_enroute[humanoid] = nil local queue = door.queue if door.reserved_for == humanoid then door.reserved_for = nil if queue:size() > 0 and room.is_active then queue:pop() door:updateDynamicInfo() end end humanoid:setTilePositionSpeed(x1, y1) local action_index = 0 if is_entering_room and queue:size() == 0 and not room:getPatient() and not door.user and not door.reserved_for and humanoid.should_knock_on_doors and room.room_info.required_staff and not swinging then humanoid:queueAction(KnockDoorAction(door, dir), action_index) action_index = action_index + 1 end humanoid:queueAction(QueueAction(x1, y1, queue):setIsLeaving(humanoid:isLeaving()) :setReserveWhenDone(door), action_index) action.must_happen = action.saved_must_happen action.reserve_on_resume = door return end if action.reserve_on_resume then assert(action.reserve_on_resume == door) action.reserve_on_resume = nil elseif is_entering_room and not action.done_knock and humanoid.should_knock_on_doors and room.room_info.required_staff and not swinging then humanoid:setTilePositionSpeed(x1, y1) humanoid:queueAction(KnockDoorAction(door, dir), 0) action.reserve_on_resume = door action.done_knock = true return end local to_x, to_y local anims = humanoid.door_anims if not anims.leaving or not anims.entering then local from_rm, to_rm = room.room_info.id, "corridor" if is_entering_room then from_rm, to_rm = to_rm, from_rm end error(("Humanoid (%s) without door animations trying to walk through ".. "door (from %s to %s)"):format(humanoid.humanoid_class, from_rm, to_rm)) end humanoid:setTilePositionSpeed(dx, dy) humanoid.user_of = door door:setUser(humanoid) local entering, leaving if swinging then entering = anims.entering_swing leaving = anims.leaving_swing duration = humanoid.world:getAnimLength(entering) else entering = anims.entering leaving = anims.leaving end local direction = "in" if dir == "north" then humanoid:setAnimation(leaving, flag_list_bottom) to_x, to_y = dx, dy - 1 duration = humanoid.world:getAnimLength(leaving) elseif dir == "west" then humanoid:setAnimation(leaving, flag_list_bottom + flag_flip_h) to_x, to_y = dx - 1, dy duration = humanoid.world:getAnimLength(leaving) elseif dir == "east" then humanoid:setAnimation(entering, flag_list_bottom) to_x, to_y = dx, dy direction = "out" elseif dir == "south" then humanoid:setAnimation(entering, flag_list_bottom + flag_flip_h) to_x, to_y = dx, dy direction = "out" end humanoid.last_move_direction = dir if swinging then door:swingDoors(direction, duration) end -- We want to notify the rooms on either side of the door that the humanoid -- has entered / left, but we want to do this AFTER the humanoid has gone -- through the door (so that their tile position reflects the room which they -- are now in). local --[[persistable:action_walk_on_next_tile_set]] function on_next_tile_set() if action.on_next_tile_set == on_next_tile_set then action.on_next_tile_set = nil end local rm = humanoid.world:getRoom(x1, y1) if rm then rm:onHumanoidLeave(humanoid) end rm = humanoid.world:getRoom(to_x, to_y) if rm then rm:onHumanoidEnter(humanoid) end end action.on_next_tile_set = on_next_tile_set if is_entering_room then humanoid.in_room = room end action.path_index = action.path_index + 1 humanoid:setTimer(duration, action_walk_tick_door) end local function action_walk_start(action, humanoid) -- Possible future optimisation: when walking from somewhere inside the hospital -- to somewhere outside the hospital (or from one building to another?), do -- pathfinding in two steps, with the building door as a middle node local path_x, path_y = humanoid.world:getPath(humanoid.tile_x, humanoid.tile_y, action.x, action.y) if not path_x or #path_x == 1 then -- Finishing an action from within the start handler is a very bad idea, as -- it is normal when ordering several actions to setNextAction the first -- one, then queueAction the rest. If the first starts straight away, and -- then finishes straight away, then the humanoid is left with an empty -- action queue. Hence we wait one tick before finishing. We still need to -- set the humanoid animation / position though, which is delegated to the -- idle action (if this wasn't done, then the previous animation would be -- used, which might involve an object). TheApp.humanoid_actions.idle(action, humanoid) humanoid:setTimer(1, humanoid.finishAction) return end action.path_x = path_x action.path_y = path_y action.path_index = 1 if not action.no_truncate then action.on_interrupt = action_walk_interrupt end action.on_restart = action_walk_start action.saved_must_happen = action.must_happen action.must_happen = true if action.reserve_on_resume and not action.todo_interrupt then action.reserve_on_resume.reserved_for = humanoid end return action_walk_tick(humanoid) end return action_walk_start CorsixTH-0.61/CorsixTH/Lua/humanoid_actions/yawn.lua000066400000000000000000000033351321660673500224110ustar00rootroot00000000000000--[[ Copyright (c) 2011 Mark "Mark.L" Lawlor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "YawnAction" (HumanoidAction) ---@type YawnAction local YawnAction = _G["YawnAction"] function YawnAction:YawnAction() self:HumanoidAction("yawn") self:setMustHappen(true) end local action_yawn_end = permanent"action_yawn_end"( function(humanoid) humanoid:finishAction() end) local function action_yawn_start(action, humanoid) assert(humanoid.yawn_anim, "Error: yawning animation for humanoid " .. humanoid.humanoid_class) action.must_happen = true humanoid:setAnimation(humanoid.yawn_anim, humanoid.last_move_direction == "east" and 0 or 1) humanoid:setTimer(humanoid.world:getAnimLength(humanoid.yawn_anim), action_yawn_end) end return action_yawn_start CorsixTH-0.61/CorsixTH/Lua/key_mapping.txt000066400000000000000000000027131321660673500204470ustar00rootroot00000000000000------------------------------------------------------------------------------- -- If you do not have a full keyboard and three-button mouse, then you may want -- to use this file to reconfigure which keys and buttons do what. Note that -- lines starting with two dashes (like these) are comments. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- To remap keys to other keys, add them to the below list, in the format: key_that_you_do_have = key_you_want_it_to_behave_as; -- For example, to make the W/S/A/D keys behave as arrow keys, uncomment the -- four lines currently in the list. key_remaps { -- w = up; -- s = down; -- a = left; -- d = right; } ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- To remap keys or mouse buttons to other mouse buttons, add them to the below -- list, in the format: key_or_mouse_button_that_you_do_have = mouse_button_you_want_it_to_behave_as; -- For example, to make the Z and X keys behave as the middle and right mouse -- buttons, uncomment the two lines currently in the list. Note that you cannot -- make the left or right arrow keyboard buttons behave as mouse buttons. button_remaps { -- z = middle; -- x = right; } ------------------------------------------------------------------------------- CorsixTH-0.61/CorsixTH/Lua/languages/000077500000000000000000000000001321660673500173465ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/languages/brazilian_portuguese.lua000066400000000000000000005567151321660673500243310ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Copyright (c) 2012 Henrique Poyatos Copyright (c) 2014 Leonardo Malaman (LeonardoGamer) Copyright (c) 2017 Altieres Lima da Silva Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Language("Português Brasileiro", "Brazilian Portuguese", "pt_br", "br") Inherit("English") Encoding(utf8) ------------------------------- OVERRIDE ---------------------------------- adviser.warnings.money_low = "Você está ficando sem dinheiro!" -- Funny. Exists in German translation, but not existent in english? -- TODO: tooltip.graphs.reputation -- this tooltip talks about hospital value. Actually it should say reputation. -- TODO: tooltip.status.close -- it's called status window, not overview window. -- tooltip.staff_list.next_person, prev_person is rather next/prev page (also in german, maybe more languages?) tooltip.staff_list.next_person = "Mostrar a página seguinte" tooltip.staff_list.prev_person = "Mostrar a página anterior" tooltip.status.reputation = "Sua reputaçäo näo deve estar abaixo de %d. Atualmente tem %d" tooltip.status.balance = "Näo deve ter menos que $%d no banco. Atualmente tem $%d" -- The originals of these two contain one space too much fax.emergency.cure_not_possible_build = "Você precisará construir um(a) %s" fax.emergency.cure_not_possible_build_and_employ = "Você precisará construir um(a) %s e contratar um(a)" fax.emergency.num_disease = "Existem %d pessoas com %s e precisam ser atendidas imediatamente." adviser.goals.lose.kill = "Mate mais %d pacientes para perder o nível!" -- Improve tooltips in staff window to mention hidden features tooltip.staff_window.face = "Rosto da pessoa - clique para abrir a tela de gerenciamento." tooltip.staff_window.center_view = "Clique esquerdo para fixar-se na pessoa, botäo direito para rodar entre os funcionários." -- These strings are missing in some versions of TH (unpatched?) confirmation.restart_level = "Você tem certeza de que deseja reiniciar o nível?" -- TODO adviser.multiplayer.objective_completed -- TODO adviser.multiplayer.objective_failed -- Replace Billy Savile -- this is only relevant to the English game so does not need adding -- in other language files vip_names = { [6] = "O Presidente da Cruz Vermelha", } -- A small error in the introduction text of level 2 introduction_texts.level2 = "Há uma grande variedade de doenças nesta área. Prepare o seu hospital para tratar mais pacientes " .. "e para a construçäo de um Centro de Pesquisa. Lembre-se que deve manter limpo o hospital e procurar atingir a " .. "sua mais alta reputaçäo possível. Tratará doenças como a língua comprida, entäo necessitará de uma sala de " .. "laringologia. Também pode construir uma cardiologia para diagnosticar novas doenças. Estas duas consultas deveräo " .. "ser pesquisadas antes de as construir. Também pode comprar mais terreno para aumentar o seu hospital. " .. "Para isso, utilize o mapa da cidade. Obtenha uma reputaçäo de 300 um saldo de bancário de $10,000 e 40 pessoas curadas. " -- An override for the squits becoming the the squits see issue 1646 adviser.research.drug_improved_1 = "Seu Centro de Pesquisa melhorou o medicamento para %s" ------------------------------- NEW STRINGS ------------------------------- date_format = { daymonth = "%1% %2:months%", } object.litter = "Lixo" tooltip.objects.litter = "Lixo: Um paciente jogou porque näo encontrou um cesto de lixo." object.rathole = "Buraco de rato" tooltip.objects.rathole = "Casa de uma família de ratos que encontrou seu hospital sujo o suficiente para morar nele." tooltip.fax.close = "Fecha esta janela sem apagar a mensagem." tooltip.message.button = "Clique com o botäo esquerdo para abrir a mensagem" tooltip.message.button_dismiss = "Clique com o botäo esquerdo para abrir a mensagem e botäo direto para recusá-la" tooltip.casebook.cure_requirement.hire_staff = "Você precisa contratar empregados para realizar este tratamento." tooltip.casebook.cure_type.unknown = "Você ainda näo sabe como tratar esta doença" tooltip.research_policy.no_research = "Nenhuma pesquisa está sendo feita nesta categoria no momento." tooltip.research_policy.research_progress = "Progresso para a próxima descoberta nesta categoria: %1%/%2%" menu["player_count"] = "QUANTIDADE DE JOGADORES" menu_file = { load = " CARREGAR (SHIFT+L) ", save = " SALVAR (SHIFT+S) ", restart = " REINICIAR (SHIFT+R)", quit = " SAIR (SHIFT+Q) ", } menu_options = { sound = " SOM (ALT+S) ", announcements = " ANUNCIOS (ALT+A) ", music = " MUSICA (ALT+M) ", jukebox = " MAQUINA DE DISCOS (J) ", lock_windows = " TRAVAR JANELAS ", edge_scrolling = " ROLAR MARGEM ", adviser_disabled = " CONSELHEIRO (SHIFT+A) ", warmth_colors = " CORES QUENTES ", wage_increase = " EXIGENCIAS SALARIAS", twentyfour_hour_clock = " RELOGIO DE 24 HORAS ", } menu_options_game_speed = { pause = " PAUSAR (P) ", slowest = " MUITO LENTO (1) ", slower = " LENTO (2) ", normal = " NORMAL (3) ", max_speed = " RAPIDO (4) ", and_then_some_more = " MUITO RAPIDO (5) ", } menu_options_warmth_colors = { choice_1 = " VERMELHO ", choice_2 = " AZUL VERDE VERMELHO ", choice_3 = " AMARELO LARANJA VERMELHO ", } menu_options_wage_increase = { grant = " PERMITIR ", deny = " NEGAR ", } -- Add F-keys to entries in charts menu (except briefing), also town_map was added. menu_charts = { bank_manager = " GERENTE DO BANCO (F1) ", statement = " ESTADO DA CONTA (F2) ", staff_listing = " LISTA DOS FUNCIONARIOS (F3) ", town_map = " MAPA DA CIDADE (F4) ", casebook = " FICHA CLINICA (F5) ", research = " PESQUISA (F6) ", status = " ESTADO (F7) ", graphs = " GRAFICO (F8) ", policy = " NORMAS (F9) ", } menu_debug = { jump_to_level = " SALTAR PARA NIVEL ", connect_debugger = " CONECTAR SERVIDOR LUA DBGp (CTRL + C) ", transparent_walls = " PAREDES TRANSPARENTES (X) ", limit_camera = " LIMITAR CAMERA ", disable_salary_raise = " DESATIVAR AUMENTO DE SALARIO ", make_debug_fax = " FAZER DEBUG DO FAX ", make_debug_patient = " FAZER DEBUG DO PACIENTE ", cheats = " TRAPAÇAS (F11) ", lua_console = " CONSOLE LUA (F12) ", debug_script = " RODAR SCRIPT DE DEBUG (SHIFT + D) ", calls_dispatcher = " CHAMAR CONTROLADOR ", dump_strings = " DUMPAR TEXTOS DO JOGO ", dump_gamelog = " DUMPAR LOG DO JOGO (CTRL + D) ", map_overlay = " SOBREPOR MAPA ", sprite_viewer = " VISUALIZADOR DE SPRITE ", } menu_debug_overlay = { none = " NADA ", flags = " MARCAS ", positions = " POSIÇOES ", heat = " TEMPERATURA ", byte_0_1 = " BYTE 0 Y 1 ", byte_floor = " BYTE SOLO ", byte_n_wall = " BYTE PAREDE NORTE ", byte_w_wall = " BYTE PAREDE OESTE ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " PARCELA ", } menu_player_count = { players_1 = " 1 JOGADOR ", players_2 = " 2 JOGADORES ", players_3 = " 3 JOGADORES ", players_4 = " 4 JOGADORES ", } adviser = { room_forbidden_non_reachable_parts = "Construir a sala neste local resultará em alas do hospital que näo poderäo ser acessadas.", warnings = { no_desk = "Você precisa comprar um balcäo de recepçäo e contratar uma recepcionista em algum momento!", no_desk_1 = "Se você quer que os pacientes venham ao seu hospital, você precisa contratar uma recepcionista e comprar um balcäo para recepcioná-los!", no_desk_2 = "Excelente, isso provavelmente é um recorde mundial - quase um ano e nenhum paciente! Se você deseja continuar administrando este hospital, você precisa urgente contratar uma recepcionista e comprar um balcäo para que ela possa trabalhar!", no_desk_3 = "Brilhante, se passou quase um ano e ainda näo tem uma recepcionistas! Como quer que os pacientes apareçam? Arrume uma recepcionista e deixe de perder tempo!", no_desk_4 = "Uma recepcionista necessita de uma mesa para atender os pacientes que aparecem.", no_desk_5 = "Já era hora! Os pacientes começaräo a chegar logo.", no_desk_6 = "Você tem uma recepcionista, que tal se construir uma mesa de recepçäo para que possa trabalhar?", no_desk_7 = "Você construiu a mesa da recepçäo, entäo que tal contratar um recepcionista? Você näo receberá nenhum paciente até que contrate uma.", cannot_afford = "Seu saldo bancário é insuficiente para contratar esta pessoa!", cannot_afford_2 = "Näo tem dinheiro para comprar isso!", falling_1 = "Ei! Isso näo é engraçado, cuidado onde aponta este mouse; alguém pode se machucar!", falling_2 = "Gostou da queda? Pare de bagunçar!", falling_3 = "Ai, isso dói, alguém chame um médico!", falling_4 = "Isto é um Hospital, näo um parque de diversöes!", falling_5 = "Este näo é o local para empurrar as pessoas, elas estäo doentes sabia?!", falling_6 = "Aqui näo é uma pista de boliche, pessoas doentes näo deveriam ser tratadas desta forma!", research_screen_open_1 = "Para acessar a tela de pesquisa, tem que construir um Centro de Pesquisa.", research_screen_open_2 = "Näo é possível realizar pesquisas nessa fase.", researcher_needs_desk_1 = "Uma pesquisa necessita de uma mesa para trabalhar.", researcher_needs_desk_2 = "Seu pesquisador agradece que lhe tenha dado um descanso. Se pretende ter mais pessoas pesquisando, deve dar a cada um uma mesa para trabalhar.", researcher_needs_desk_3 = "Cada pesquisa necessita de uma mesa para trabalhar.", nurse_needs_desk_1 = "Cada enfermeira necessita de uma mesa para trabalhar.", nurse_needs_desk_2 = "Sua enfermeira agradece que lhe tenha dado um descanso. Se pretende ter mais pessoas trabalhando na enfermaria, tem que dar a cada uma delas uma mesa para trabalhar.", low_prices = "Você esta cobrando muito pouco pelo uso de %s. Isto trará pessoas para o seu hospital, mas você näo fará muito lucro com cada uma delas.", high_prices = "Você esta cobrando muito pelo uso de %s. Isto trará grande lucro a curto prazo, mas no final das contas você começará a afugentar as pessoas para longe do seu hospital.", fair_prices = "O preço de %s parece justo.", patient_not_paying = "Um paciente se foi sem pagar por %s porque é muito caro!", }, cheats = { th_cheat = "Parabéns, você habilitou os códigos de trapaça!", roujin_on_cheat = "Desafio Roujin ativado! Boa sorte...", roujin_off_cheat = "Desafio Roujin desativado.", }, } dynamic_info.patient.actions.no_gp_available = "Esperando que construa uma consulta" dynamic_info.staff.actions.heading_for = "Dirigindo-se para %s" dynamic_info.staff.actions.fired = "Despedido" dynamic_info.patient.actions.epidemic_vaccinated = "Eu näo sou mais contagioso" progress_report.free_build = "CONSTRUÇAO LIVRE" fax = { choices = { return_to_main_menu = "Voltar para menu principal", accept_new_level = "Ir para o próximo nível", decline_new_level = "Continuar jogando um pouco mais", }, emergency = { num_disease_singular = "Existe uma pessoa com %s que precisa urgente de sua atençäo.", free_build = "Se você for bem sucedido sua reputaçäo aumentará, mas se você falhar sua reputaçäo será bastante prejudicada.", }, vip_visit_result = { remarks = { free_build = { "Seu hospital é muito bom! Näo é difícil mantê-lo sem limitaçöes econômicas, né?", "Näo sou economista, mas até eu poderia dirigir este hospital, se é que você me entende...", "Um hospital muito bem cuidado. Mas tome cuidado a crise financeira! Certo... você näo tem que se preocupar com isso.", } } } } letter = { dear_player = "Prezado(a) %s\n", custom_level_completed = "Parabéns! Você completou todos os objetivos desta fase personalizada!", return_to_main_menu = "Deseja retornar ao menu principal ou continuar jogando?", campaign_level_completed = "Bom trabalho! Você superou este nível, mas ainda näo acabou!\n Você se interessaria em aceitar um posto no hospital %s?", campaign_completed = "Incrível! Você conseguiu superar todos os níveis. Já pode relaxar e desfrutar enquanto fala das suas realizaçöes nos fóruns de toda a Internet. Boa sorte!", campaign_level_missing = "Desculpe, parece que o próximo nível desta campanha está faltando. (Nome: %s)", } install = { title = "----------------------- Configuraçäo do CorsixTH -----------------------", th_directory = "O CorsixTH precisa de uma cópia dos arquivos de dados do Theme Hospital original (ou a demo) para executar. Utilize o seletor abaixo para localizar o diretório onde o jogo Theme Hospital está instalado.", ok = "OK", exit = "Sair", cancel = "Cancelar", } misc.not_yet_implemented = "(ainda näo implementado)" misc.no_heliport = "Uma das doença ainda näo foi descoberta, ou näo existe um heliporto neste mapa. Talvez precise comprar uma mesa de recepçäo e contratar a uma recepcionista." main_menu = { new_game = "Campanha", custom_campaign = "Campanha Personalizada", custom_level = "Cenário Personalizado", continue = "Continuar Jogo", load_game = "Carregar Jogo", options = "Configuraçöes", map_edit = "Editor de Mapa", savegame_version = "Versäo do jogo salvo: ", version = "Versäo: ", exit = "Sair", } tooltip.main_menu = { new_game = "Começar o primeiro nível da campanha", custom_campaign = "Jogar uma campanha criada pela comunidade.", custom_level = "Construir seu hospital em um cenário único", continue = "Continuar seu último jogo salvo.", load_game = "Carregar um jogo salvo", options = "Ajustar várias configuraçöes", map_edit = "Criar um mapa personalizado", exit = "Näo, näo, por favor, näo vá", quit = "Você deseja realmente sair do CorsixTH?", } load_game_window = { caption = "Carregar Jogo (%1%)", } tooltip.load_game_window = { load_game = "Carregar jogo %s", load_game_number = "Carregar jogo %d", load_autosave = "Carregar jogo salvo automaticamente", } custom_game_window = { caption = "Jogo Personalizado", free_build = "Construçäo Livre", load_selected_level = "Iniciar", } tooltip.custom_game_window = { choose_game = "Clique em um nível para ver mais informaçäo sobre o mesmo.", free_build = "Marque esta opçäo se quiser jogar sem dinheiro nem condiçöes de vitória ou derrota.", load_selected_level = "Carregar e jogar o nível selecionado", } custom_campaign_window = { caption = "Campanha Personalizada", start_selected_campaign = "Iniciar Campanha", } tooltip.custom_campaign_window = { choose_campaign = "Selecione uma campanha para ver mais informaçäo sobre a mesma.", start_selected_campaign = "Carregar o primeiro nível desta campanha", } save_game_window = { caption = "Salvar Jogo (%1%)", new_save_game = "Novo jogo salvo", } tooltip.save_game_window = { save_game = "Substituir jogo salvo %s", new_save_game = "Digite um nome para o jogo salvo.", } save_map_window = { caption = "Salvar Mapa (%1%)", new_map = "Novo Mapa", } tooltip.save_map_window = { map = "Substituir mapa %s", new_map = "Digite um nome para o novo mapa salvo", } menu_list_window = { name = "Nome", save_date = "Modificado", back = "Voltar", } tooltip.menu_list_window = { name = "Aperte aqui para ordenar a lista por nomes", save_date = "Aperte aqui para ordenar a lista pela última data de modificaçäo", back = "Fechar esta janela.", } options_window = { caption = "Configuraçöes", option_on = "Ligar", option_off = "Desligar", fullscreen = "Tela Cheia", resolution = "Resoluçäo", custom_resolution = "Personalizar...", width = "Largura", height = "Altura", audio = "Audio Geral", customise = "Personalizar", folder = "Pastas", language = "Idioma do Jogo", apply = "Aplicar", cancel = "Cancelar", back = "Voltar", } tooltip.options_window = { fullscreen = "Se o jogo deve ser executado em tela cheia ou modo janela", fullscreen_button = "Clique para mudar para tela cheia", resolution = "A resoluçäo que o jogo deve ser executado", select_resolution = "Selecionar uma nova resoluçäo", width = "Digite a largura desejada", height = "Digite a altura desejada", apply = "Aplicar a resoluçäo digitada", cancel = "Voltar sem mudar a resoluçäo", audio_button = "Ligar ou desligar o áudio de todo o jogo", audio_toggle = "Alternar entre ligado e desligado", customise_button = "Você pode alterar mais configuraçöes para personalizar sua experiência de jogo", folder_button = "Opçöes de pasta", language = "O idioma em que os textos do jogo apareceräo", select_language = "Selecione o idioma do jogo", language_dropdown_item = "Selecionar %s como idioma", back = "Fechar a janela de Configuraçöes", } customise_window = { caption = "Config. Personalizadas", option_on = "Ligado", option_off = "Desligado", back = "Voltar", movies = "Vídeo Geral", intro = "Vídeo de Introduçäo", paused = "Construir em Pausa", volume = "Tecla de Volume", aliens = "Pacientes Alienígenas", fractured_bones = "Ossos Fraturados", average_contents = "Conteúdos Habituais", } tooltip.customise_window = { movies = "Controle geral de vídeos, que permitirá a você desativar todos os vídeos", intro = "Desligar ou ligar o vídeo de introduçäo, vídeos gerais precisaräo estar ligados se você quiser o vídeo de introduçäo rode quando você carregar o CorsixTH", paused = "No Theme Hospital o jogador só teria permissäo para utilizar o menu superior se o jogo estivesse pausado. Esta é também a configuraçäo padräo no CorsixTH, mas habilitando isso você tem permissäo para acessar tudo enquanto o jogo está pausado", volume = "Se a tecla de baixar volume abrir também a ficha clínica, utilize esta opçäo para mudar o atalho para direto a ficha clínica para Shift + C.", aliens = "Devido à falta de animaçöes decentes disponíveis, fizemos com que os pacientes com DNA alienígena só apareçam em uma emergência. Para permitir que os pacientes com DNA alienígena possam visitar seu hospital, desative esta opçäo.", fractured_bones = "Devido a uma animaçäo deficiente, fizemos que näo existam pacientes com Fraturas ósseas femininas. Para permitir que as pacientes com Fraturas ósseas visitem seu hospital, desative esta opçäo.", average_contents = "Se você quiser que o jogo lembre que objetos extras você normalmente adiciona quando constrói salas, entäo ligue esta opçäo", back = "Fecha este menu e volta para o Menu de Configuraçöes", } folders_window = { caption = "Localizaçäo de Pastas", data_label = "Dados do TH", font_label = "Fonte", music_label = "MP3", savegames_label = "Jogos Salvos", screenshots_label = "Capturas de Tela", -- next four are the captions for the browser window, which are called from the folder setting menu new_th_location = "Aqui pode especificar uma nova pasta de instalaçäo do Theme Hospital. O jogo será reiniciado assim que selecionar a nova pasta.", savegames_location = "Selecione a pasta que quer utilizar para seus jogos salvos.", music_location = "Selecione a pasta que quer utilizar para sua música.", screenshots_location = "Selecione a pasta que quer utilizar para suas capturas de tela.", back = "Voltar", } tooltip.folders_window = { browse = "Procurar a localizaçäo da pasta", data_location = "A pasta com a instalaçäo do Theme Hospital original, necessário para executar o CorsixTH", font_location = "A localizaçäo de uma fonte de letra capaz de mostrar caracteres Unicode necessários para seu idioma. Se näo for indicado, näo poderá selecionar idiomas que tenham mais caracteres dos que o jogo original tem, por exemplo, russo e chinês.", savegames_location = "A pasta de jogos salvos é localizada por padräo junto com o arquivo de configuraçäo e é utilizado para armazenar os jogos salvo. Se você näo gostar, pode selecionar outra procurando a pasta que quiser usar.", screenshots_location = "As capturas de tela säo guardadas por padräo em uma pasta junto com o arquivo de configuraçäo. Se você näo gostar, pode selecionar outra procurando a pasta que quiser usar.", music_location = "Selecione uma pasta com seus arquivos de música em formato MP3. Necessita uma pasta já existente, entäo poderá procurá-la.", browse_data = "Procurar outra localizaçäo com uma instalaçäo do Theme Hospital. (Localizaçäo atual: %1%)", browse_font = "Procurar outro arquivo de fonte de letra. (Localizaçäo atual: %1%)", browse_saves = "Procurar outra localizaçäo para sua pasta de jogos salvos. (Localizaçäo atual: %1%) ", browse_screenshots = "Procurar outra localizaçäo para sua pasta de capturas de tela. (Localizaçäo atual: %1%) ", browse_music = "Procurar outra localizaçäo para sua pasta de música. (Localizaçäo atual: %1%) ", no_font_specified = "Pasta de fontes näo especificada!", not_specified = "Pasta näo especificada!", default = "Localizaçäo padräo", reset_to_default = "Volta a atribuir a pasta a sua localizaçäo padräo", -- original_path = "The currently chosen directory of the original Theme Hospital installation", -- where is this used, I have left if for the time being? back = "Fechar este menu e voltar para menu de Configuraçöes", } font_location_window = { caption = "Selecionar fonte (%1%)", } handyman_window = { all_parcels = "Todas as parcelas", parcel = "Parcela" } tooltip.handyman_window = { parcel_select = "Parcela onde o faz-tudo aceita tarefas, clique para alterar o configuraçäo" } new_game_window = { caption = "Campanha", player_name = "Nome", option_on = "Ligado", option_off = "Desligado", difficulty = "Dificuldade", easy = "Residente (Fácil)", medium = "Médico (Normal)", hard = "Consultor (Difícil)", tutorial = "Tutorial", start = "Iniciar", cancel = "Cancelar", } tooltip.new_game_window = { player_name = "Digite no nome que você deseja ser chamado no jogo", difficulty = "Selecione o nível de dificuldade do jogo", easy = "Se você näo conhecer jogos de simulaçäo, esta dificuldade é para você.", medium = "Esta é a dificuldade intermediária, se você está inseguro do que deve escolher.", hard = "Se você está acostumado com este tipo de jogo e quer um bom desafio, escolha esta opçäo", tutorial = "Se você precisa de ajuda para começar a jogar, escolha esta opçäo", start = "Iniciar o jogo com a configuraçäo selecionada", cancel = "Ah, eu näo queria começar um novo jogo!", } lua_console = { execute_code = "Executar", close = "Fechar", } tooltip.lua_console = { textbox = "Digite aqui o código Lua que deseja executar", execute_code = "Executar o código Lua que digitou", close = "Fechar o console", } errors = { dialog_missing_graphics = "Desculpe, os arquivos de dados da versäo de demonstraçäo näo contém este diálogo.", save_prefix = "Erro ao salvar o jogo: ", load_prefix = "Erro ao carregar o jogo: ", no_games_to_contine = "Näo há jogos salvos.", load_quick_save = "Erro, näo foi possível carregar o carregamento rápido já que ele näo existe, näo se preocupe nós criamos um agora para você!", map_file_missing = "Näo foi possível encontrar o arquivo de mapa %s para esta fase!", minimum_screen_size = "Por favor, digite dimensöes de tela de pelo menos 640x480.", unavailable_screen_size = "O tamanho da tela que você digitou näo está disponível em tela cheia.", alien_dna = "NOTA: Os pacientes alienígenas näo têm animaçöes para se sentar, abrir portas, bater nas portas, etc. portanto, assim como no Theme Hospital original, para fazer estas coisas aparentaräo mudar para uma imagem normal e logo voltaräo para o seu estado. Os pacientes com DNA alienígena só apareceräo se o arquivo de fase o indicar", fractured_bones = "NOTA: A animaçäo das pacientes femininas com Fraturas ósseas näo é perfeita", could_not_load_campaign = "Falha ao carregar a campanha: %s", could_not_find_first_campaign_level = "Näo foi possível encontrar o primeiro nível desta campanha: %s", } warnings = { levelfile_variable_is_deprecated = "Aviso: O nível '%s ' contém uma definiçäo variável obsoleta no arquivo de nível." .. " '%LevelFile' foi renomeado para '%MapFile '. Por favor, informe ao criador do mapa para atualizar o nível.", } confirmation = { needs_restart = "Para alterar esta configuraçäo é necessário reiniciar o CorsixTH. Qualquer alteraçäo näo salva será perdida. Tem certeza que deseja fazer isso?", abort_edit_room = "Você está editando uma sala. Se todos os objetos necessários estiverem colocados ela será completada, caso contrário ela será removida. Continuar?", maximum_screen_size = "O tamanho de tela que digitou é maior que 3000 x 2000. É possível utilizar uma resoluçäo maior, mas necessitará de um computador melhor para que a velocidade de quadros por segundo seja aceitável. Tem certeza de que quer continuar?", music_warning = "Antes de selecionar o uso de MP3 para sua música dentro do jogo, precisará ter o arquivo smpeg.dll, ou o equivalente para seu sistema operacional, ou do contrário näo terá música no jogo. Atualmente näo existe um arquivo equivalente para sistemas de 64 bits. Deseja continuar?", } information = { custom_game = "Bem-vindo ao CorsixTH. Divirta-se com esse mapa personalizado!", no_custom_game_in_demo = "Desculpe, mas a versäo de demonstraçäo näo pode jogar mapas personalizados.", cannot_restart = "Infelizmente este mapa personalizado foi salvo antes que a funcionalidade de reiniciaçäo fosse implementada.", very_old_save = "Houveram muitas mudanças no jogo desde que você começou a jogar este mapa. Para ter certeza que todas as funcionalidades estäo funcionando considere recomeçar o mapa.", level_lost = { "Que pena! Você fracassou. Mais sorte na próxima vez!", "Você perdeu porque", reputation = "Sua reputaçäo caiu abaixo de %d.", balance = "Seu saldo no banco caiu abaixo de %d.", percentage_killed = "Você matou mais de %d porcento dos pacientes.", cheat = "Foi escolha sua ou você se enganou de botäo? Näo sabe nem trapacear direito?", }, cheat_not_possible = "Näo pode usar essa trapaça nesta fase. Näo sabe nem trapacear direito?", } tooltip.information = { close = "Fechar a janela de informaçäo", } totd_window = { tips = { "Todo hospital precisa de uma Recepçäo e um Consultório Geral para começar. Depois disso, dependerá do tipo de pacientes que visitará seu hospital. Entretanto ter uma farmácia é sempre uma boa ideia.", "Máquinas como o Inflador precisam de constante manutençäo. Contrate um ou dois Faz-tudo para reparos nestas máquinas, ou colocará seus funcionários e pacientes em risco.", "Depois de um certo período de trabalho, seus funcionários ficaräo cansados. Certifique-se de construir uma Sala de Descanso, para que posam relaxar.", "Instale Radiadores suficientes para manter seus funcionários e pacientes aquecidos, do contrário ficaräo infelizes. Use o Mapa da Cidade para localizar pontos do hospital que precisem ser aquecidos.", "O nível de habilidade de um médico reflete na qualidade e velocidade dos diagnósticos. Coloque um médico experiente no Consultório Geral, assim näo precisará de muitas salas de diagnósticos adicionais.", "Médicos de níveis 'Residente' e 'Médico' podem melhorar suas habilidades aprendendo com um Consultor na Sala de Treinamento. Se o Consultor possuir alguma especializaçäo (Cirurgiäo, Psiquiatra ou Pesquisador), ele irá passar este conhecimento aos seus alunos.", "Você já tentou digitar o número europeu de emergência (112) no aparelho de fax? Certifique-se que o seu som esteja ligado!", "Você pode alterar algumas configuraçöes como a resoluçäo da tela e o idioma na janela de opçöes que pode ser acessar no menu inicial e dentro do jogo.", "Você selecionou um idioma que näo é o inglês, mas continua vendo textos em inglês por todos os lugares? Ajude-nos a traduzir os textos restantes para o seu idioma!", "A comunidade do CorsixTH está precisando de reforços em sua equipe! Você está interessado em codificar, traduzir ou criar gráficos para o CorsixTH? Entre em contato conosco pelo nosso Fórum, Lista de Discussäo ou canal de IRC (#corsix-th no freenode).", "Se localizar um bug, por favor reporte-o em nosso bugtracker: th-issues.corsix.org", "Cada fase possui certas metas a serem atingidas antes de passar para a próxima fase. Cheque a janela de situaçäo para acompanhar seu progresso a fim de atingir seus objetivos.", "Se você deseja editar ou remover uma sala existente, pode fazê-lo com o botäo de ediçäo de sala na barra inferior.", "Caso haja uma multidäo de pacientes esperando, você deve descobrir rapidamente quais deles estäo aguardando por uma sala em particular passando o ponteiro do mouse por cima desta sala.", "Clique nas portas das salas para ver sua fila. Isso pode ser muito útil, já que pode reordenar a fila ou encaminhar um paciente para outra sala.", "Funcionários infelizes iräo pedir aumentos de salários com mais frequência. Certifique-se que sua equipe esteja trabalho em um ambiente de trabalho confortável para mantê-los felizes.", "Pacientes podem ficar com sede enquanto esperam em seu hospital, ainda mais se ligar o aquecimento! Instale máquinas de venda de refrigerantes em pontos estratégicos para um ganho extra.", "Você pode abortar o processo de diagnóstico prematuramente e pressupor a cura, se você já tiver descoberto a doença. Atente-se que desta maneira aumenta-se o risco de um tratamento errado, resultando na morte do paciente.", "Emergências podem ser uma boa fonte de grana extra, desde que você possua plena capacidade e recursos de lidar com os pacientes à tempo.", }, previous = "Dica anterior", next = "Próxima dica", } tooltip.totd_window = { previous = "Mostra a dica anterior", next = "Mostra a próxima dica", } debug_patient_window = { caption = "Depurar Paciente", } cheats_window = { caption = "Trapaças", warning = "Atençäo: Você näo conseguirá quaisquer pontos de bonificaçöes no fim do nível se você trapacear!", cheated = { no = "Trapaças usadas: Näo", yes = "Trapaças usadas: Sim", }, cheats = { money = "Trapaça de Dinheiro", all_research = "Trapaça Todas as Pesquisas Realizadas", emergency = "Criar Emergência", vip = "Criar VIP", earthquake = "Criar Terremoto", epidemic = "Gerar um paciente contagioso", toggle_infected = "Alternar ícones de infectados", create_patient = "Criar Paciente", end_month = "Fim do Mês", end_year = "Fim do ano", lose_level = "Perder a Fase", win_level = "Ganhar a Fase", increase_prices = "Aumentar Preços", decrease_prices = "Reduzir Preços", }, close = "Fechar", } tooltip.cheats_window = { close = "Fecha a janela de trapaças", cheats = { money = "Adiciona 10.000 no saldo bancário.", all_research = "Completa todas as pesquisas.", emergency = "Cria uma emergência.", vip = "Cria um visitante VIP.", earthquake = "Cria um Terremoto.", epidemic = "Cria um paciente contagioso", toggle_infected = "Mostra/oculta os ícones de infecçäo", create_patient = "Cria um Paciente no canto de mapa.", end_month = "Pula para o final do mês.", end_year = "Pula para o final do ano.", lose_level = "Perde esta fase.", win_level = "Ganha esta fase.", increase_prices = "Aumenta todos os preços em 50% (200% máximo).", decrease_prices = "Reduz todos os preços em 50% (50% mínimo).", } } introduction_texts = { demo = "Bem-vindo ao hospital de demonstraçäo! " .. "Infelizmente esta versäo de demonstraçäo só possui esta fase. Entretanto, teremos aqui o suficiente para mantê-lo ocupado por enquanto! " .. "Você encontrará várias doenças que necessitaräo de salas diferentes para cura. De tempos em tempos, emergências ocorreräo. E você precisará pesquisar por salas adicionais usando o Centro de Pesquisas. " .. "Seu objetivo é ter um saldo bancário de $100.000,00, o valor do hospital em $ 70.000,00 e uma reputaçäo de 700, enquanto você cura pelo menos 75% de seus pacientes. " .. "Certifique-se que sua reputaçäo näo fique abaixo de 300 e você näo mate mais de 40% dos seus pacientes, senäo você perde. " .. "Boa sorte!", } calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d chamadas; %d assinaladas", staff = "%s - %s", watering = "Regando @ %d,%d", repair = "Reparar %s", close = "Fechar", } tooltip.calls_dispatcher = { task = "Lista de tarefas - clique na tarefa para abrir a janela do funcionário responsável e ir para o local da tarefa.", assigned = "Esta janela será marcada se alguém for designado para a tarefa correspondente.", close = "Fechar a janela de chamadas de controle", } update_window = { caption = "Atualizaçäo Disponível!", new_version = "Nova Versäo:", current_version = "Versäo Atual:", download = "Ir para página de download", ignore = "Pular e ir para o menu principal", } tooltip.update_window = { download = "Vai para a página de downloads para obter a última versäo do CorsixTH", ignore = "Ignora esta atualizaçäo no momento. Você será notificado da próxima vez que abrir o CorsixTH", } map_editor_window = { pages = { inside = "Interior", outside = "Exterior", foliage = "Folhagem", hedgerow = "Cerca viva", pond = "Lagoa", road = "Estrada", north_wall = "Parede norte", west_wall = "Parede oeste", helipad = "Heliporto", delete_wall = "Excluir paredes", parcel_0 = "Parcela 0", parcel_1 = "Parcela 1", parcel_2 = "Parcela 2", parcel_3 = "Parcela 3", parcel_4 = "Parcela 4", parcel_5 = "Parcela 5", parcel_6 = "Parcela 6", parcel_7 = "Parcela 7", parcel_8 = "Parcela 8", parcel_9 = "Parcela 9", camera_1 = "Câmera 1", camera_2 = "Câmera 2", camera_3 = "Câmera 3", camera_4 = "Câmera 4", heliport_1 = "Heliporto 1", heliport_2 = "Heliporto 2", heliport_3 = "Heliporto 3", heliport_4 = "Heliporto 4", paste = "Colar área", } } -------------------------------- UNUSED ----------------------------------- ------------------- (kept for backwards compatibility) ---------------------- options_window.change_resolution = "Alterar resoluçäo" tooltip.options_window.change_resolution = "Altera a resoluçäo de janela para as dimensöes digitadas na esquerda" -------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------- MISSING STRINGS IN LANGUAGE "PORTUGUêS DO BRASIL": ----------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------- rooms_long.ward = "Enfermaria" rooms_long.blood_machine = "Sala de Transfusöes" rooms_long.emergency = "Sala de Emergências" rooms_long.general = "Sala de Clínica Geral" rooms_long.cardiogram = "Sala do Cardiograma" rooms_long.decontamination = "Sala de Descontaminaçäo" rooms_long.jelly_vat = "Banho Gelatinoso" rooms_long.staffroom = "Sala de Descanso" rooms_long.hair_restoration = "Sala de Peloterapia" rooms_long.inflation = "Sala de Inflatoterapia" rooms_long.operating_theatre = "Sala de Operaçöes" rooms_long.gps_office = "Consultório Geral" rooms_long.training_room = "Sala de Formaçäo" rooms_long.x_ray = "Sala de Raio-X" rooms_long.tongue_clinic = "Sala de Laringologia" rooms_long.psychiatric = "Sala de Psiquiatria" rooms_long.corridors = "Corredores" rooms_long.ultrascan = "Sala de Ultra Scanner" rooms_long.dna_fixer = "Sala de Genética" rooms_long.toilets = "Banheiro" rooms_long.fracture_clinic = "Sala de Traumatologia" rooms_long.pharmacy = "Farmácia" rooms_long.general_diag = "Consulta de Diagnóstico" rooms_long.research_room = "Centro de Pesquisa" rooms_long.scanner = "Sala de Scanner" rooms_long.electrolysis = "Sala de Eletrólise" fax.debug_fax.text4 = "FACTORS : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d" fax.debug_fax.text2 = "TOTAL PEOPLE IN HOSPITAL %d CHECKING AGAINST %d" fax.debug_fax.text9 = "DISASTERS %d ALLOWED (MTHS) %d (%d)REDUCTION %d" fax.debug_fax.text3 = "FIGURES : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d" fax.debug_fax.close_text = "Sim, sim, sim!" fax.debug_fax.text5 = "CONTRIBN : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d PERCENT" fax.debug_fax.text1 = "BEST COUNT %d" fax.debug_fax.text8 = "AMENITIES %d PEEPS HANDLED %d REDUCTION %d" fax.debug_fax.text10 = "KILLS %d ALLOWED (MTHS) %d (%d) REDUCTION %d" fax.debug_fax.text7 = "REPUTATION: %d EXPECTED %d REDUCTION %d" fax.debug_fax.text11 = "PEOPLE THIS MONTH %d" fax.debug_fax.text6 = "THE FOLLOWING FACTORS ARE ALSO APPLIED" fax.emergency.choices.accept = "Sim, preparado para confrontar esta emergência." fax.emergency.choices.refuse = "Näo. Nego-me a confrontar esta emergência." fax.emergency.cure_possible_drug_name_efficiency = "Já dispöe da equipe e do pessoal qualificado. Tem o medicamento necessário. É %s e tem uma efetividade de %d por cento." fax.emergency.bonus = "Ganhará um bônus máximo de $%d por cuidar desta emergência. Mas se fracassar, a sua reputaçäo será seriamente danificada." fax.emergency.locations[1] = "Planta Química Thatcher" fax.emergency.locations[2] = "Universidade Suja" fax.emergency.locations[3] = "Centro de Plantas Aquáticas" fax.emergency.locations[4] = "Instituto de Pesquisa de Substâncias Perigosas" fax.emergency.locations[5] = "Congresso de Bailarinos Russos" fax.emergency.locations[6] = "Pub O Touro e A Rä" fax.emergency.locations[7] = "Funerária Sem Licença Para Boa Morte" fax.emergency.locations[8] = "A Casa do Curry" fax.emergency.locations[9] = "Empório Petroquímico Usado" fax.emergency.cure_not_possible_employ = "Precisará contratar um(a) %s" fax.emergency.location = "Houve um incidente em %s" fax.emergency.cure_possible = "Tem a equipe e o pessoal qualificado necessário, poderá confrontar esta emergência." fax.emergency.cure_not_possible = "Näo pode curar esta doença no momento." fax.epidemic.cover_up_explanation_2 = "Se um Inspetor de Saúde visitar e encontrar uma epidemia encoberta tomará medidas drásticas contra si." fax.epidemic.choices.cover_up = "Tratar de ocultá-la. Procurar curar a epidemia antes de que se estenda por todo o país." fax.epidemic.choices.declare = "Há uma epidemia" fax.epidemic.disease_name = "Os seus Médicos descobriram uma variedade contagiosa de %s." fax.epidemic.declare_explanation_fine = "Se declarar uma epidemia, pagará uma multa de %d, danificando a sua reputaçäo e os seus pacientes seräo automaticamente vacinados." fax.epidemic.cover_up_explanation_1 = "Se tentar encobri-la, terá um tempo limitado para curar a todos os infectados antes de que as Autoridades da Saúde descubram." fax.vip_visit_result.close_text = "Obrigado por visitar o hospital." fax.vip_visit_result.telegram = "Telegrama!" fax.vip_visit_result.vip_remarked_name = "Depois de visitar o seu hospital, %s declarou:" fax.vip_visit_result.remarks.super[1] = "Que hospital eficaz! A próxima vez que esteja gravemente doente, venho aqui." fax.vip_visit_result.remarks.super[2] = "É isto o que eu chamo de um hospital." fax.vip_visit_result.remarks.super[3] = "É um hospital excelente. E sei o que digo; visito muitos hospitais." fax.vip_visit_result.remarks.mediocre[1] = "Bom, já vi piores. Mas deveria fazer algumas melhoras." fax.vip_visit_result.remarks.mediocre[2] = "Oh céus! Näo é um lugar agradável para ir se estiver doente." fax.vip_visit_result.remarks.mediocre[3] = "Vou ser sincero, é um hospital normal. Francamente, eu esperava mais, " fax.vip_visit_result.remarks.very_bad[1] = "Vá tugúrio! Vou tentar o enclausurá-lo." fax.vip_visit_result.remarks.very_bad[2] = "Nunca vi um hospital täo espantoso. Que vergonha!" fax.vip_visit_result.remarks.very_bad[3] = "Estou horrorizado. Chama a isto de hospital! Vou sair com um cano." fax.vip_visit_result.remarks.bad[1] = "Por que me zanguei? Foi pior que ir ver uma ópera de quatro horas!" fax.vip_visit_result.remarks.bad[2] = "Estou aborrecido pelo que vi. Chama a isto um hospital? Mais parece uma pocilga!" fax.vip_visit_result.remarks.bad[3] = "Estou farto de atrair a atençäo pública e de visitar buracos fedorentos como este! Demito-me." fax.vip_visit_result.remarks.good[1] = "Que hospital bem dirigido! Obrigado pelo seu convite." fax.vip_visit_result.remarks.good[2] = "Mmmm. Certamente näo é uma má instituiçäo médica." fax.vip_visit_result.remarks.good[3] = "Gostei do seu estupendo hospital. Agora, alguém quer um curry da Casa do Curry?" fax.vip_visit_result.cash_grant = "Você foi premiado com um prêmio em dinheiro de $%d." fax.vip_visit_result.rep_boost = "Sua reputaçäo na comunidade acaba de aumentar." fax.vip_visit_result.rep_loss = "A sua reputaçäo foi afetada em consequência" fax.disease_discovered.close_text = "Foi encontrada uma nova doença." fax.disease_discovered.need_to_build = "Tem que construir um(a) %s para tratar isto." fax.disease_discovered.can_cure = "Pode tratar esta doença." fax.disease_discovered.need_to_employ = "Contrate um(a) %s que possa solucionar este problema." fax.disease_discovered.need_to_build_and_employ = "Se construir uma %s e contratar um(a) %s pode ter êxito." fax.disease_discovered.discovered_name = "A sua equipe descobriu uma nova doença. É %s." fax.epidemic_result.close_text = "Bem!" fax.epidemic_result.compensation_amount = "O Governo decidiu lhe dar uma compensaçäo de %d pelos danos que estes incidente causara ao bom nome do seu hospital." fax.epidemic_result.succeeded.part_1_name = "Chegou aos ouvidos do Inspetor de Saúde que na sua instituiçäo estava a tratar um caso maligno de %s." fax.epidemic_result.succeeded.part_2 = "Embora, näo fosse possível encontrar provas que comprovassem os ditos rumores..." fax.epidemic_result.hospital_evacuated = "O Ministério da Saúde näo tem outra alternativa a näo ser evacuar o seu hospital." fax.epidemic_result.failed.part_1_name = "Ao tentar esconder o fato de que enfrentavam um broto contagioso de %s" fax.epidemic_result.failed.part_2 = "o pessoal do seu hospital é responsável por que a doença se propagou entre as pessoas que vivem perto do seu hospital." fax.epidemic_result.fine_amount = "O Governo declarou uma emergência nacional e multa-o com %d." fax.epidemic_result.rep_loss_fine_amount = "Os jornais têm feito um escândalo com isto. A sua reputaçäo será gravemente afetada. Além disso, imporá uma multa de %d." fax.emergency_result.close_text = "Aperte para sair" fax.emergency_result.saved_people = "Salvou %d pessoas de um total de %d." fax.emergency_result.earned_money = "Ganhou %d, de um bônus máximo de %d." fax.vip_visit_query.vip_name = "%s expressou o seu desejo de visitar o seu hospital." fax.vip_visit_query.choices.refuse = "Dispensar o V.I.P." fax.vip_visit_query.choices.invite = "Enviar um convite oficial ao V.I.P." fax.diagnosis_failed.what_to_do_question = "O que vamos fazer com o paciente?" fax.diagnosis_failed.choices.send_home = "Enviar o paciente para casa." fax.diagnosis_failed.choices.take_chance = "Tentar uma possível cura." fax.diagnosis_failed.choices.wait = "Fazer o paciente esperar enquanto constrói mais salas de diagnóstico." fax.diagnosis_failed.partial_diagnosis_percentage_name = "Existe %d porcento de probabilidades de descobrirmos que tipo de %s sofre esse paciente." fax.diagnosis_failed.situation = "Fizemos todos os nossos diagnósticos com este paciente e näo estamos seguros do que se trata." fax.disease_discovered_patient_choice.what_to_do_question = "O que quer fazer com o paciente?" fax.disease_discovered_patient_choice.choices.send_home = "Enviar o paciente para casa." fax.disease_discovered_patient_choice.choices.research = "Enviar o paciente para Pesquisa." fax.disease_discovered_patient_choice.choices.wait = "Faça o paciente esperar um momento no hospital." fax.disease_discovered_patient_choice.can_not_cure = "Näo pode curar esta doença." fax.disease_discovered_patient_choice.need_to_employ = "Contrate um(a) %s para corrigir esta situaçäo." fax.disease_discovered_patient_choice.need_to_build = "Tem que construir um(a) %s para poder tratar isto." fax.disease_discovered_patient_choice.need_to_build_and_employ = "Pode consegui-lo se construir um(a) %s e contratar um %s." fax.disease_discovered_patient_choice.guessed_percentage_name = "A sua equipe tem que averiguar o que tem um paciente. Há %d por cento de probabilidade de que seja %s" fax.disease_discovered_patient_choice.disease_name = "A sua equipe descobriu uma nova doença. É %s." original_credits[1] = " " original_credits[2] = " " original_credits[3] = " " original_credits[4] = " " original_credits[5] = " " original_credits[6] = " " original_credits[7] = " " original_credits[8] = " " original_credits[9] = " " original_credits[10] = " " original_credits[11] = " " original_credits[12] = ":Desenvolvido e criado pela" original_credits[13] = ":Bullfrog Productions" original_credits[14] = " " original_credits[15] = ":Equipe de Desenvolvimento Pluto" original_credits[16] = "," original_credits[17] = "Mark Webley" original_credits[18] = "Gary Carr" original_credits[19] = "Matt Chilton" original_credits[20] = "Matt Sullivan" original_credits[21] = "Jo Rider" original_credits[22] = "Rajan Tande" original_credits[23] = "Wayne Imlach" original_credits[24] = "Andy Bass" original_credits[25] = "Jon Rennie" original_credits[26] = "Adam Coglan" original_credits[27] = "Natalie White" original_credits[28] = " " original_credits[29] = " " original_credits[30] = " " original_credits[31] = ":Programaçäo" original_credits[32] = "," original_credits[33] = "Mark Webley" original_credits[34] = "Matt Chilton" original_credits[35] = "Matt Sullivan" original_credits[36] = "Rajan Tande" original_credits[37] = " " original_credits[38] = "Ben Deane" original_credits[39] = "Gary Morgan" original_credits[40] = "Jonty Barnes" original_credits[41] = " " original_credits[42] = " " original_credits[43] = " " original_credits[44] = ":Arte" original_credits[45] = "," original_credits[46] = "Gary Carr" original_credits[47] = "Jo Rider" original_credits[48] = "Andy Bass" original_credits[49] = "Adam Coglan" original_credits[50] = " " original_credits[51] = "Eoin Rogan" original_credits[52] = "George Svarovsky" original_credits[53] = "Saurev Sarkar" original_credits[54] = "Jason Brown" original_credits[55] = "John Kershaw" original_credits[56] = "Dee Lee" original_credits[57] = " " original_credits[58] = " " original_credits[59] = " " original_credits[60] = ":Sequência Introdutória" original_credits[61] = "," original_credits[62] = "Stuart Black" original_credits[63] = " " original_credits[64] = " " original_credits[65] = " " original_credits[66] = ":Música e Efeitos de Som" original_credits[67] = "," original_credits[68] = "Russell Shaw" original_credits[69] = "Adrian Moore" original_credits[70] = " " original_credits[71] = "Jeremy Longley" original_credits[72] = "Andy Wood" original_credits[73] = " " original_credits[74] = " " original_credits[75] = " " original_credits[76] = ":Voz da Narradora" original_credits[77] = "," original_credits[78] = "Rebecca Green" original_credits[79] = " " original_credits[80] = " " original_credits[81] = " " original_credits[82] = ":Desenho dos Níveis" original_credits[83] = "," original_credits[84] = "Wayne Imlach" original_credits[85] = "Natalie White" original_credits[86] = "Steven Jarrett" original_credits[87] = "Shin Kanaoya" original_credits[88] = " " original_credits[89] = " " original_credits[90] = " " original_credits[91] = ":Roteiristas" original_credits[92] = "," original_credits[93] = "James Leach" original_credits[94] = "Sean Masterson" original_credits[95] = "Neil Cook" original_credits[96] = " " original_credits[97] = " " original_credits[98] = " " original_credits[99] = ":Pesquisa e Desenvolvimento" original_credits[100] = "," original_credits[101] = "Andy Cakebread" original_credits[102] = "Richard Reed" original_credits[103] = " " original_credits[104] = "Glenn Corpes" original_credits[105] = "Martin Bell" original_credits[106] = "Ian Shaw" original_credits[107] = "Jan Svarovsky" original_credits[108] = " " original_credits[109] = " " original_credits[110] = " " original_credits[111] = ":Bibliotecas e Ferramentas" original_credits[112] = "," original_credits[113] = "Mark Huntley" original_credits[114] = "Alex Peters" original_credits[115] = "Rik Heywood" original_credits[116] = " " original_credits[117] = "Ian Shippen" original_credits[118] = "Mark Lamport" original_credits[119] = " " original_credits[120] = "Russell Shaw" original_credits[121] = "Tony Cox" original_credits[122] = " " original_credits[123] = " " original_credits[124] = " " original_credits[125] = ":Programaçäo do Instalador" original_credits[126] = "," original_credits[127] = "Andy Nuttall" original_credits[128] = "Tony Cox" original_credits[129] = "Andy Cakebread" original_credits[130] = " " original_credits[131] = " " original_credits[132] = " " original_credits[133] = ":Chefe de Testes" original_credits[134] = "," original_credits[135] = "Andy Robson" original_credits[136] = " " original_credits[137] = " " original_credits[138] = " " original_credits[139] = ":Testadores" original_credits[140] = "," original_credits[141] = "Wayne Imlach" original_credits[142] = "Jon Rennie" original_credits[143] = " " original_credits[144] = "Jeff Brutus" original_credits[145] = "Wayne Frost" original_credits[146] = "Steven Lawrie" original_credits[147] = "Tristan Paramor" original_credits[148] = "Nathan Smethurst" original_credits[149] = " " original_credits[150] = "Ryan Corkery" original_credits[151] = "Simon Doherty" original_credits[152] = "James Dormer" original_credits[153] = "Martin Gregory" original_credits[154] = "Ben Lawley" original_credits[155] = "Joel Lewis" original_credits[156] = "David Lowe" original_credits[157] = "Robert Monczak" original_credits[158] = "Dominic Mortoza" original_credits[159] = "Karl O'Keeffe" original_credits[160] = "Michael Singletary" original_credits[161] = "Andrew Skipper" original_credits[162] = "Stuart Stephen" original_credits[163] = "David Wallington" original_credits[164] = " " original_credits[165] = " " original_credits[166] = " " original_credits[167] = ":Suporte Técnico" original_credits[168] = "," original_credits[169] = "Kevin Donkin" original_credits[170] = "Mike Burnham" original_credits[171] = "Simon Handby" original_credits[172] = " " original_credits[173] = " " original_credits[174] = " " original_credits[175] = ":Marketing" original_credits[176] = "," original_credits[177] = "Pete Murphy" original_credits[178] = "Sean Ratcliffe" original_credits[179] = " " original_credits[180] = " " original_credits[181] = " " original_credits[182] = ":Relaçöes Públicas" original_credits[183] = "," original_credits[184] = "Cathy Campos" original_credits[185] = " " original_credits[186] = " " original_credits[187] = " " original_credits[188] = ":Documentaçäo" original_credits[189] = "," original_credits[190] = "Mark Casey" original_credits[191] = "Richard Johnston" original_credits[192] = "James Lenoel" original_credits[193] = "Jon Rennie" original_credits[194] = " " original_credits[195] = " " original_credits[196] = " " original_credits[197] = ":Documentaçäo e Desenho da Caixa" original_credits[198] = "," original_credits[199] = "Caroline Arthur" original_credits[200] = "James Nolan" original_credits[201] = " " original_credits[202] = " " original_credits[203] = " " original_credits[204] = ":Chefe do Projeto de Localizaçäo" original_credits[205] = "," original_credits[206] = "Carol Aggett" original_credits[207] = " " original_credits[208] = " " original_credits[209] = ":Traduçäo para Português" original_credits[210] = "," original_credits[211] = "Altieres Lima" original_credits[212] = "Leonardo Malaman" original_credits[213] = "Henrique Poyatos" original_credits[214] = " " original_credits[215] = " " original_credits[216] = ":Produçäo" original_credits[217] = "," original_credits[218] = "Rachel Holman" original_credits[219] = " " original_credits[220] = " " original_credits[221] = " " original_credits[222] = ":Produtor" original_credits[223] = "," original_credits[224] = "Mark Webley" original_credits[225] = " " original_credits[226] = " " original_credits[227] = " " original_credits[228] = ":Produtor Associado" original_credits[229] = "," original_credits[230] = "Andy Nuttall" original_credits[231] = " " original_credits[232] = " " original_credits[233] = " " original_credits[234] = ":Operaçöes" original_credits[235] = "," original_credits[236] = "Steve Fitton" original_credits[237] = " " original_credits[238] = " " original_credits[239] = " " original_credits[240] = ":Administraçäo da Companhia" original_credits[241] = "," original_credits[242] = "Audrey Adams" original_credits[243] = "Annette Dabb" original_credits[244] = "Emma Gibbs" original_credits[245] = "Lucia Gobbo" original_credits[246] = "Jo Goodwin" original_credits[247] = "Sian Jones" original_credits[248] = "Kathy McEntee" original_credits[249] = "Louise Ratcliffe" original_credits[250] = " " original_credits[251] = " " original_credits[252] = " " original_credits[253] = ":Direçäo da Companhia" original_credits[254] = "," original_credits[255] = "Les Edgar" original_credits[256] = "Peter Molyneux" original_credits[257] = "David Byrne" original_credits[258] = " " original_credits[259] = " " original_credits[260] = " " original_credits[261] = ":O nosso agradecimento especial para" original_credits[262] = "," original_credits[263] = "Peter Molyneux" original_credits[264] = " " original_credits[265] = "O pessoal do Hospital Frimley Park" original_credits[266] = " " original_credits[267] = "em particular ao" original_credits[268] = "," original_credits[269] = "Beverley Cannell" original_credits[270] = "Doug Carlisle" original_credits[271] = " " original_credits[272] = " " original_credits[273] = " " original_credits[274] = ":Continuem a pensar" original_credits[275] = " " original_credits[276] = " " original_credits[277] = " " original_credits[278] = " " original_credits[279] = " " original_credits[280] = " " original_credits[281] = " " original_credits[282] = " " original_credits[283] = " " original_credits[284] = " " original_credits[285] = " " original_credits[286] = " " original_credits[287] = " " original_credits[288] = " " original_credits[289] = " " original_credits[290] = " " original_credits[291] = " " original_credits[292] = " " original_credits[293] = " " original_credits[294] = " " original_credits[295] = "." buy_objects_window.choose_items = "Escolha os objetos" buy_objects_window.total = "Total: " buy_objects_window.price = "Preço: " build_room_window.pick_room_type = "Escolha a sala" build_room_window.pick_department = "Departamento" build_room_window.cost = "Custo: " object.bench = "Banco" object.pharmacy_cabinet = "Primeiros-socorros" object.console = "Console" object.atom_analyser = "Analisador atômico" object.fire_extinguisher = "Extintor" object.scanner = "Scanner" object.bin = "Cesto de papéis" object.swing_door1 = "Porta de batente" object.pool_table = "Mesa de bilhar" object.screen = "Tela" object.cabinet = "Arquivo" object.sofa = "Sofá" object.projector = "Projetor" object.table2 = "Mesa" object.shower = "Ducha descontaminadora" object.comfortable_chair = "Poltrona confortável" object.door = "Porta" object.computer = "Computador" object.litter_bomb = "Bomba de lixo" object.entrance_left = "Porta direita de entrada" object.dna_fixer = "Reparador DNA" object.bed = "Cama" object.lamp = "Abajur" object.bookcase = "Estante" object.desk = "Escritório" object.toilet_sink = "Pia" object.gates_of_hell = "Portas do inferno" object.swing_door2 = "Porta de batente" object.cast_remover = "Removedor de gesso" object.plant = "Planta" object.blood_machine = "Transfusiômetro" object.slicer = "Cortador" object.x_ray = "Raio-X" object.cardio = "Eletrocardiograma" object.crash_trolley = "Carrinho" object.bed2 = "Cama" object.electrolyser = "Eletrólise" object.video_game = "Videogame" object.skeleton = "Esqueleto" object.ultrascanner = "Ultra scanner" object.op_sink1 = "Pia" object.hair_restorer = "Pêlo-restaurador" object.reception_desk = "Recepçäo" object.radiation_shield = "Painel anti-radiaçäo" object.couch = "Divä" object.inflator = "Inflador" object.toilet = "Banheiro" object.lecture_chair = "Poltrona" object.auto_autopsy = "Máq. autoautópsias" object.chair = "Cadeira" object.x_ray_viewer = "Máquina de raio-X" object.radiator = "Radiador" object.bed3 = "Cama" object.surgeon_screen = "Tela de cirurgiäo" object.jelly_moulder = "Moldador de gelatina" object.drinks_machine = "Máq. de bebidas" object.op_sink2 = "Pia" object.table1 = "Mesa" object.entrance_right = "Porta esquerda de entrada" object.operating_table = "Mesa de operaçöes" object.tv = "Televisäo" transactions.bank_loan = "Empréstimo bancário" transactions.buy_object = "Comprou" transactions.cure = "Cura" transactions.general_bonus = "Pagamento extra geral" transactions.treat_colon = "Tratamento:" transactions.eoy_bonus_penalty = "Bônus/multa de fim de ano" transactions.loan_repayment = "Devoluçäo do empréstimo" transactions.research = "Gastos em pesquisa" transactions.epidemy_coverup_fine = "Multa por cobertura da epidemia" transactions.build_room = "Construiu" transactions.sell_object = "Vendeu" transactions.vaccination = "Vacinas" transactions.personal_bonus = "Pagamento extra individual" transactions.drug_cost = "Medicamento" transactions.severance = "Inden. demissäo" transactions.deposit = "Tratamentos" transactions.epidemy_fine = "Multa pela epidemia" transactions.buy_land = "Comprou terreno" transactions.hire_staff = "Contratou" transactions.insurance_colon = "Seguro:" transactions.drinks = "Renda: máquinas de bebidas" transactions.overdraft = "Juros do saldo devedor" transactions.vip_award = "Prêmio VIP" transactions.research_bonus = "Bônus de pesquisa" transactions.cheat = "Trapaça de dinheiro" transactions.compensation = "Indenizaçäo do governo" transactions.wages = "Salários" transactions.advance_colon = "Avanços:" transactions.cure_colon = "Cura:" transactions.jukebox = "Renda: máquina de discos" transactions.machine_replacement = "Custo por substituiçäo de máquinas" transactions.heating = "Gastos de aquecimento" transactions.final_treat_colon = "Tratamento final:" transactions.emergency_bonus = "Pagamento extra de emergência" transactions.eoy_trophy_bonus = "Troféu bônus de fim de ano" transactions.loan_interest = "Juros do empréstimo" menu_options.game_speed = " VELOCIDADE DO JOGO " menu_options.sound_vol = " VOLUME DO SOM " menu_options.music_vol = " VOLUME DA MUSICA " menu_options.autosave = " AUTO-SALVAR " menu_options.announcements_vol = " VOLUME DOS AVISOS " newspaper[1][1] = "TERROR NO HOSPITAL" newspaper[1][2] = "O MÉDICO AÇOUGUEIRO" newspaper[1][3] = "PANICO GERAL" newspaper[1][4] = "O QUE HAVIA NO LABORATORIO?" newspaper[1][5] = "DETEVE UMA INVESTIGAÇAO DE RISCO" newspaper[2][1] = "DR UNK É UM CANALHA" newspaper[2][2] = "CIRURGIAO DESPEDAÇADO" newspaper[2][3] = "ESPECIALISTA EM JOGOS" newspaper[2][4] = "EMBRIAGADO" newspaper[2][5] = "CIRURGIAO CACHACEIRO" newspaper[2][6] = "EMBRIAGADO EM CIRURGIA" newspaper[3][1] = "CIRURGIAO VICIADO" newspaper[3][2] = "MÉDICO SEM CALÇAS" newspaper[3][3] = "MÉDICO SEDUTOR" newspaper[3][4] = "CIRURGIAO INSACIAVEL" newspaper[4][1] = "MÉDICO INVADE HOSPITAL" newspaper[4][2] = "CRIME ORGANIZADO" newspaper[4][3] = "OPERAÇAO DE DESVIO DE FUNDOS" newspaper[4][4] = "FECHAMENTO SEM REMUNERAÇAO" newspaper[5][1] = "ASSALTO EM UM HOSPITAL" newspaper[5][2] = "MÉDICO RETIRA CADAVERES" newspaper[5][3] = "CAPTURADO COM O CORPO" newspaper[5][4] = "AJUSTE DE CONTAS DO DR MORTE" newspaper[5][5] = "ROUBO NO DEPOSITO" newspaper[5][6] = "DENOMINADO DR CAVATUMBAS" newspaper[6][1] = "DR COSTURA MAIS UMA VEZ!" newspaper[6][2] = "FALSO MÉDICO" newspaper[6][3] = "DIAGNOSTICO ERRADO" newspaper[6][4] = "CONSULTOR DESAJEITADO" newspaper[7][1] = "MÉDICO SE SENTE MARGINALIZADO" newspaper[7][2] = "UM CIRURGIAO 'OPERA' A SI MESMO" newspaper[7][3] = "DESCONTROLE EM BANHEIROS" newspaper[7][4] = "MÉDICO PROTAGONIZA UM ESCANDALO" newspaper[7][5] = "MÉDICO 'CRIA UM BARRACO" progress_report.too_hot = "Revise o seu sistema de aquecimento. Faz muito calor." progress_report.header = "Relatório em curso" progress_report.percentage_pop = "% populaçäo" progress_report.too_cold = "Faz muito frio. Coloque radiadores." progress_report.quite_unhappy = "Os seus pacientes estäo muito contentes." progress_report.win_criteria = "CRITÉRIOS PARA GANHAR" progress_report.very_unhappy = "Os seus pacientes estäo muito descontentes." progress_report.more_drinks_machines = "Coloque mais máquinas de bebidas." staff_descriptions.bad[1] = "É uma pessoa lenta e suscetível. " staff_descriptions.bad[2] = "Mostra preguiça e falta de motivaçäo. " staff_descriptions.bad[3] = "Com uma má formaçäo e pouco eficaz. " staff_descriptions.bad[4] = "Pessoa grosseira e brusca. Chateia as pessoas. " staff_descriptions.bad[5] = "Tem pouca resistência e má atitude. " staff_descriptions.bad[6] = "Pessoa surda como uma porta. Cheira a repolho. " staff_descriptions.bad[7] = "Pessoa imunda no serviço. Um estorvo. " staff_descriptions.bad[8] = "Imprudente e se distrai com facilidade. " staff_descriptions.bad[9] = "Pessoa estressada e confusa. " staff_descriptions.bad[10] = "Pessoa desleal e rancorosa. Cheia de ódio. " staff_descriptions.bad[11] = "Näo toma cuidado e provoca acidentes. " staff_descriptions.bad[12] = "Näo se importa com o trabalho. Perde tempo. " staff_descriptions.bad[13] = "Pessoa temerária e sem cuidado. " staff_descriptions.bad[14] = "Pessoa ardilosa, matreira e subversiva. " staff_descriptions.bad[15] = "Pessoa arrogante e presunçosa. " staff_descriptions.misc[1] = "Joga golfe. " staff_descriptions.misc[2] = "Pratica mergulho. " staff_descriptions.misc[3] = "Faz esculturas de gelo. " staff_descriptions.misc[4] = "Bebe vinho. " staff_descriptions.misc[5] = "Participa de rally. " staff_descriptions.misc[6] = "Faz bungee-jump. " staff_descriptions.misc[7] = "Coleciona latas de cerveja. " staff_descriptions.misc[8] = "Gosta de mergulhar no público em shows. " staff_descriptions.misc[9] = "Gosta de fazer surf. " staff_descriptions.misc[10] = "Pratica raffiting. " staff_descriptions.misc[11] = "Destila uísque. " staff_descriptions.misc[12] = "Especialista em 'faça você mesmo'. " staff_descriptions.misc[13] = "Gosta do cinema francês. " staff_descriptions.misc[14] = "Joga muito Theme Park. " staff_descriptions.misc[15] = "Possui carteira de habilitaçäo E. " staff_descriptions.misc[16] = "Corre de motocicleta. " staff_descriptions.misc[17] = "Toca violino e violoncelo. " staff_descriptions.misc[18] = "Adora andar de trem. " staff_descriptions.misc[19] = "Adora cachorros. " staff_descriptions.misc[20] = "Ouve rádio. " staff_descriptions.misc[21] = "Toma banho com frequência. " staff_descriptions.misc[22] = "Instrutor de costura. " staff_descriptions.misc[23] = "Tira o miolo dos vegetais para usar como saboneteira. " staff_descriptions.misc[24] = "É policial em meio expediente. " staff_descriptions.misc[25] = "Ex-convidado de um concurso. " staff_descriptions.misc[26] = "Coleciona bombas da Segunda Guerra. " staff_descriptions.misc[27] = "Restaura móveis. " staff_descriptions.misc[28] = "Escuta rap e hip-pop. " staff_descriptions.misc[29] = "Extermina insetos borrifando desodorante. " staff_descriptions.misc[30] = "Ridiculariza comediantes ruins. " staff_descriptions.misc[31] = "Investiga para a Câmara Municipal. " staff_descriptions.misc[32] = "Cuida do jardim às escondidas. " staff_descriptions.misc[33] = "Faz contrabando de relógios falsos. " staff_descriptions.misc[34] = "Vocalista de uma banda de rock & roll. " staff_descriptions.misc[35] = "Adora programas de televisäo vespertinos. " staff_descriptions.misc[36] = "Pesca trutas com a mäo. " staff_descriptions.misc[37] = "Isca turistas em museus. " staff_descriptions.good[1] = "Trabalha de forma rápida e diligente. " staff_descriptions.good[2] = "Trabalha com consciência e seriedade. " staff_descriptions.good[3] = "Sabe fazer muitas coisas. " staff_descriptions.good[4] = "Muito agradável e gosta de rir. " staff_descriptions.good[5] = "Tem muita energia. Näo para. " staff_descriptions.good[6] = "Pessoa educada e de boas maneiras. " staff_descriptions.good[7] = "Com talento e capacidade incríveis. " staff_descriptions.good[8] = "Preocupa-se muito pelo seu trabalho. " staff_descriptions.good[9] = "Procura a perfeiçäo e nunca se rende. " staff_descriptions.good[10] = "Ajuda as pessoas com um sorriso. " staff_descriptions.good[11] = "Tem encanto, educaçäo e disponibilidade. " staff_descriptions.good[12] = "Normalmente tem estímulo e dedicaçäo. " staff_descriptions.good[13] = "É boa pessoa e trabalha muito. " staff_descriptions.good[14] = "Leal e amigável. " staff_descriptions.good[15] = "Pessoa atenta e confiável em caso de emergência. " humanoid_name_ends[1] = "SMITH" humanoid_name_ends[2] = "WICK" humanoid_name_ends[3] = "CLIFFE" humanoid_name_ends[4] = "SON" humanoid_name_ends[5] = "INGTON" humanoid_name_ends[6] = "BURY" humanoid_name_ends[7] = "TON" humanoid_name_ends[8] = "SON" humanoid_name_ends[9] = "LEY" humanoid_name_ends[10] = "BERRY" humanoid_name_ends[11] = "BAUM" humanoid_name_ends[12] = "LAN" humanoid_name_ends[13] = "HAM" humanoid_name_ends[14] = "SILL" humanoid_name_ends[15] = "WIN" humanoid_name_ends[16] = "LET" humanoid_name_ends[17] = "ERS" humanoid_name_ends[18] = "TON" humanoid_name_ends[19] = "MOND" humanoid_name_ends[20] = "MAN" humanoid_name_ends[21] = "ELTON" humanoid_name_ends[22] = "E" humanoid_name_ends[23] = "MORE" humanoid_name_ends[24] = "MOOR" humanoid_name_ends[25] = "LET" humanoid_name_ends[26] = "LIN" menu.options = " OPÇOES " menu.display = " TELA " menu.file = " ARQUIVO " menu.debug = " DEBUG " menu.charts = " GRAFICOS " letter[1][1] = "Olá %s!//" letter[1][2] = "Fantástico! Dirigiu este hospital de uma maneira excelente. Nós, a elite do Ministério da Saúde, queríamos saber se estaria interessado em fazer parte de um grande projeto. Há um trabalho, no qual acreditamos que seja a pessoa perfeita. O salário seria de %d. Pense nisto.//" letter[1][3] = "Está interessado em trabalhar no Hospital %s?" letter[2][1] = "Olá %s!//" letter[2][2] = "Parabéns! Realizou notáveis melhorias no seu hospital. Temos outro serviço que poderia se encarregar, se gostar de mudança e novos desafios. Näo tem que aceitar, mas seria bom que o fizesse. O salário é de %d//" letter[2][3] = "Quer trabalhar no Hospital %s?" letter[3][1] = "Olá %s!//" letter[3][2] = "Dirigiu com notável desempenho este hospital durante o seu exercício. Ao chegar este ao seu fim, prevejo um brilhante futuro, e gostaríamos de lhe oferecer um cargo em outro lugar. O salário seria de %d, e acredito que adoraria o desafio que isto criaria.//" letter[3][3] = "Gostaria de ter um posto no Hospital %s?" letter[4][1] = "Olá %s!//" letter[4][2] = "Parabéns! No Ministério estamos muito impressionados pela sua capacidade como diretor do hospital. É sem dúvida, uma pessoa valiosa para o Departamento de Saúde, mas acreditamos que preferiria um trabalho mais qualificado. Receberia um salário de %d, embora a decisäo seja sua.//" letter[4][3] = "Está interessado em trabalhar no Hospital %s?" letter[5][1] = "Olá %s!//" letter[5][2] = "Saúdo-lhe novamente. Respeitamos os seus desejos de näo deslocar do seu estupendo hospital, mas pedimos que o reconsidere. Ofereceremo-lhe um alto salário de %d se decidir ir para o outro hospital e encarregar da sua direçäo.//" letter[5][3] = "Gostaria de ir agora para o Hospital %s?" letter[6][1] = "Olá %s!//" letter[6][2] = "Receba as nossas saudaçöes. Sabemos que desfrutou muito da sua estadia nesta instituiçäo, täo agradável e bem dirigida, mas acreditamos que agora deveria pensar no seu futuro. Naturalmente, teria um salário de %d se decidisse deslocar. Vale a pena pensar.//" letter[6][3] = "Gostaria de ter um posto no Hospital %s?" letter[7][1] = "Olá %s!//" letter[7][2] = "Bom dia! O Ministério da Saúde queria saber se reconsideraria a sua decisäo de ficar no seu hospital. Compreendemos que tenha um estupendo hospital, mas acreditamos que faria muito bem em aceitar um trabalho mais estimulante, com um salário de %d.//" letter[7][3] = "Aceitaria um posto no Hospital %s?" letter[8][1] = "Olá %s!//" letter[8][2] = "Olá, outra vez. Recebemos a sua resposta negativa na nossa última carta, em que oferecíamos um posto de direçäo num outro hospital, e um alto salário de %d. Näo obstante, acreditamos que deveria reconsiderar esta decisäo. Como verá, temos o trabalho perfeito para si.//" letter[8][3] = "Aceitaria um posto no Hospital %s, por favor?" letter[9][1] = "Olá %s!//" letter[9][2] = "Demonstrou ser o melhor diretor de hospital na longa e infeliz história da medicina. O lucro que obteve näo pode ficar sem recompensa, por isso lhe oferecemos o posto de Diretor Chefe de Todos os Hospitais. Terá um salário de %d, uma apresentaçäo com todas as honras e as pessoas demonstraräo o seu reconhecimento esteja onde estiver.//" letter[9][3] = "Agradecemos por tudo o que fez e desfrute de uma longa semi-aposentadoria.//" letter[9][4] = "" letter[10][1] = "Olá %s!//" letter[10][2] = "Parabéns por dirigir com êxito todos os hospitais que lhe atribuímos. Esta grande atuaçäo o capacita a viajar livremente por todo mundo. Receberá uma pensäo de %d e uma limousine, para poder viajar de cidade em cidade, saudando o seu incondicional público e fomentando o trabalho que realiza em todos os hospitais.//" letter[10][3] = "Estamos orgulhosos e agradecidos pelo seu trabalho ao salvar vidas.//" letter[10][4] = "" letter[11][1] = "Olá %s!//" letter[11][2] = "Sua carreira tem sido exemplar, e você é uma inspiraçäo para todos nós. Obrigado por dirigir täo bem tantos hospitais. Gostaríamos de lhe conceder um salário vitalício de %d, e só lhe pedimos que viaje num carro oficial descoberto de cidade em cidade, dando conferências sobre os seus rápidos lucros.//" letter[11][3] = "É um exemplo para todos os homens de bem e uma pessoa de enorme valia.//" letter[11][4] = "" letter[12][1] = "Olá %s!//" letter[12][2] = "A sua bem-sucedida carreira como o melhor diretor de hospital desde Moisés está chegando ao seu fim. Você provocou tal efeito nos círculos médicos, que o Ministério quer lhe oferecer um salário de %s, só para inaugurar festas, navios e organizar entrevistas em nosso nome. Você seria um excelente relaçöes públicas!//" letter[12][3] = "Por favor, aceite. Será fácil e irá dispor de um veículo e uma escolta policial.//" letter[12][4] = "" place_objects_window.place_objects_in_corridor = "Coloque os objetos num corredor." place_objects_window.drag_blueprint = "Arraste a marca azul até que consiga o tamanho que deseja." place_objects_window.pick_up_object = "Aperte sobre um objeto para selecioná-lo ou escolher outra opçäo do diálogo." place_objects_window.place_windows = "Se quiser, coloque algumas janelas. Em seguida, aperte confirmar." place_objects_window.place_objects = "Coloque os objetos e mova-os ao seu gosto. Em seguida, confirme." place_objects_window.confirm_or_buy_objects = "Pode confirmar a sala, comprar ou mover alguns objetos." place_objects_window.place_door = "Coloque a porta" level_names[1] = "Cidade Contaminada" level_names[2] = "Cidade do Sonho" level_names[3] = "Vila Grande" level_names[4] = "Vila Praia" level_names[5] = "Vila Simples" level_names[6] = "Vilaúlcera" level_names[7] = "Cidade Verde" level_names[8] = "Cidade do Porto" level_names[9] = "Cidade Leste" level_names[10] = "Ovovile" level_names[11] = "Vila Corvo" level_names[12] = "Vila Próspera" level_names[13] = "Vila Amistosa" level_names[14] = "Vila Pancadaria" level_names[15] = "Vila Sepultura" pay_rise.definite_quit = "Faça o que fizer, näo ficarei. Estou farto deste local." pay_rise.regular[1] = "Estou esgotado. Preciso de umas boas férias, mais um aumento de %d, se näo quiser deixo este maldito emprego." pay_rise.regular[2] = "Estou muito cansado. Preciso de umas férias e de um aumento salarial de %d, até um total de %d. E quero já, seu tirano!" pay_rise.regular[3] = "Vamos! Trabalho como um escravo. Se me der um bônus de %d, ficarei no seu hospital." pay_rise.regular[4] = "Estou muito descontente. Exijo um aumento de %d, e um salário final de %d, caso contrário, vou embora." pay_rise.regular[5] = "Os meus pais me disseram que os médicos ganham um bom salário, sendo assim, me dá um aumento de %d ou me dedicarei à produçäo de jogos de computador." pay_rise.regular[6] = "Estou farto. Pague-me um bom salário. Será suficiente um aumento de %d." pay_rise.poached = "%s ofereceu-me um salário de %d. Se näo me pagar o mesmo, vou embora." casebook.reputation = "reputaçäo" casebook.earned_money = "dinheiro ganho" casebook.cure_desc.no_cure_known = "Näo há cura conhecida." casebook.cure_desc.hire_doctors = "Você precisa contratar alguns médicos." casebook.cure_desc.build_ward = "Ainda tem que construir uma enfermaria." casebook.cure_desc.improve_cure = "Melhorar Cura." casebook.cure_desc.build_room = "Sugiro que construa %s" casebook.cure_desc.hire_surgeons = "Você precisa contratar cirurgiöes." casebook.cure_desc.cure_known = "Cura." casebook.cure_desc.hire_psychiatrists = "Você tem que contratar psiquiatras." casebook.cure_desc.hire_nurses = "Você deve contratar algumas enfermeiras." casebook.sent_home = "rejeitados" casebook.cured = "recuperaçöes" casebook.deaths = "falecimentos" casebook.treatment_charge = "custo tratamento" casebook.research = "pesquisa intensiva" casebook.cure = "cura" confirmation.replace_machine = "Quer mesmo substituir esta máquina?" confirmation.quit = "Escolheu sair do jogo. Tem certeza de que pretende sair do jogo?" confirmation.sack_staff = "Tem certeza de que pretende despedir este funcionário?" confirmation.delete_room = "Quer mesmo eliminar esta consulta?" confirmation.return_to_blueprint = "Tem certeza de que pretende substituir o(a) %s por $%d?" confirmation.overwrite_save = "Já existe um jogo salvo neste local. Tem certeza de que pretende substitui-lo?" menu_options_volume[80] = " 80% " menu_options_volume[50] = " 50% " menu_options_volume[100] = " 100% " menu_options_volume[70] = " 70% " menu_options_volume[40] = " 40% " menu_options_volume[90] = " 90% " menu_options_volume[60] = " 60% " menu_options_volume[20] = " 20% " menu_options_volume[30] = " 30% " menu_options_volume[10] = " 10% " vip_names[1] = "O Maior dos Ricaços" vip_names[2] = "Lawrence Nightingale" vip_names[3] = "Rei Bernard da Holanda" vip_names[4] = "Aung Sang Su Kyi" vip_names[5] = "Sir Reginald Crumbly" vip_names[7] = "O Vereador Joäo Precipício" vip_names[8] = "O Marquês do Figo de Chumbo" vip_names[9] = "Uma estrela do futebol" vip_names[10] = "A. Eskoplovitz, II" vip_names.health_minister = "O Ministro da Saúde" menu_charts.briefing = " INSTRUÇOES " diseases.kidney_beans.cause = "Causa - Mastigar os cubos de gelo das bebidas." diseases.kidney_beans.name = "Incontinência" diseases.kidney_beans.symptoms = "Sintomas - Dor e idas frequêntes ao banheiro." diseases.kidney_beans.cure = "Cura - Dois cirurgiöes extraem as pedras dos rins." diseases.ruptured_nodules.cause = "Causa - Atirar-se de cabeça à água fria." diseases.ruptured_nodules.name = "Boluditis" diseases.ruptured_nodules.symptoms = "Sintomas - Impossibilidade de sentar-se comodamente." diseases.ruptured_nodules.cure = "Cura - Dois cirurgiöes qualificados colocam certas partes com mäos firmes." diseases.fractured_bones.cause = "Causa - Queda de um lugar alto." diseases.fractured_bones.name = "Fraturas ósseas" diseases.fractured_bones.symptoms = "Sintomas - Um grande rangido e a impossibilidade de usar os membros afetados." diseases.fractured_bones.cure = "Cura - É colocado um molde, depois com uma máquina à laser o remove. " diseases.diag_psych.name = "Diag: Psiquiatria" diseases.jellyitis.cause = "Causa - Uma dieta rica em gelatina e muito exercício." diseases.jellyitis.name = "Gelatinitis" diseases.jellyitis.symptoms = "Sintomas - Um tremor excessivo e cair ao chäo muitas vezes." diseases.jellyitis.cure = "Cura - Inunda-se o paciente durante um momento no banheiro gelatinoso numa consulta especial." diseases.discrete_itching.cause = "Causa - Insetos diminutos com os dentes afiados." diseases.discrete_itching.name = "Coceira leve" diseases.discrete_itching.symptoms = "Sintomas - Arranhar-se, o que conduz a um inchaço da parte afetada." diseases.discrete_itching.cure = "Cura - O paciente bebe um xarope farmacêutico para evitar a coceira da pele." diseases.alien_dna.cause = "Causa - Enfrentara gigantes providos de sangue alienígena inteligente." diseases.alien_dna.name = "DNA alienígena" diseases.alien_dna.symptoms = "Sintomas - Metamorfose alienígena gradual e desejo de destruir nossas cidades." diseases.alien_dna.cure = "Cura - O DNA é mecanicamente removido, limpo de elementos alienígenas e substituídos rapidamente." diseases.infectious_laughter.cause = "Causa - Comédia clássica de situaçäo." diseases.infectious_laughter.name = "Risada contagiosa" diseases.infectious_laughter.symptoms = "Sintomas - Näo poder parar de rir e repetir frases feitas nada divertidas." diseases.infectious_laughter.cure = "Cura - Um psiquiatra qualificado deve recordar o paciente que a sua doença é grave." diseases.diag_general_diag.name = "Diag: Geral" diseases.spare_ribs.cause = "Causa - Sentar-se sobre chäos muito frios." diseases.spare_ribs.name = "Costelas de mais" diseases.spare_ribs.symptoms = "Sintomas- Um mal-estar no peito." diseases.spare_ribs.cure = "Cura - Dois cirurgiöes extraem as costelas e däo ao paciente em uma sacola." diseases.transparency.cause = "Causa - Lamber tampa de iogurte já usado." diseases.transparency.name = "Transparentitis" diseases.transparency.symptoms = "Sintomas - A carne fica transparente e fica horrível." diseases.transparency.cure = "Cura - Tomar uma preparaçäo farmacêutica de água esfriada e colorida de modo especial." diseases.baldness.cause = "Causa - Contar mentiras e inventar histórias para ser famoso." diseases.baldness.name = "Calvície" diseases.baldness.symptoms = "Sintomas - Ter a cabeça brilhante e passar vergonha." diseases.baldness.cure = "Cura - O cabelo está costurado à cabeça do paciente com uma dolorosa máquina." diseases.sleeping_illness.cause = "Causa - Uma glândula do sono hiperativa no céu da boca." diseases.sleeping_illness.name = "Sonolência" diseases.sleeping_illness.symptoms = "Sintomas - Um desejo imprescindível de mergulhar no sono." diseases.sleeping_illness.cure = "Cura - Uma enfermeira administra uma dose elevada de um poderoso estimulante." diseases.pregnancy.cause = "Causa - Cortes de eletricidade em áreas urbanas." diseases.pregnancy.name = "Grávida" diseases.pregnancy.symptoms = "Sintomas - Muita vontade de comer e um mal-estar no estômago." diseases.pregnancy.cure = "Cura - Extrai-se ao bebé na sala de operaçöes, limpa-se e entrega-se ao paciente." diseases.general_practice.name = "Clínica Geral" diseases.tv_personalities.cause = "Causa - Ver a televisäo durante o dia." diseases.tv_personalities.name = "Personalitis" diseases.tv_personalities.symptoms = "Sintomas - Ter a ilusäo de apresentar na televisäo um programa de cozinha." diseases.tv_personalities.cure = "Cura - Um psiquiatra perito deve convencer o paciente de que venda o seu televisor e compre um rádio." diseases.broken_wind.cause = "Causa - Usar um aparelho ginástico depois das comidas." diseases.broken_wind.name = "Aerofagia" diseases.broken_wind.symptoms = "Sintomas - Incomoda as pessoas que estäo mesmo atrás do paciente." diseases.broken_wind.cure = "Cura - Na farmácia bebe-se rapidamente uma forte mistura de átomos aquosos." diseases.hairyitis.cause = "Causa - Exposiçäo prolongada à lua." diseases.hairyitis.name = "Peludismo" diseases.hairyitis.symptoms = "Sintomas - Pacientes com olfato mais sensível." diseases.hairyitis.cure = "Cura - Uma máquina de eletrólise elimina o pêlo e fecha os poros." diseases.diag_ward.name = "Diag: Clínico" diseases.third_degree_sideburns.cause = "Causa - Desejar muito os anos 70 ." diseases.third_degree_sideburns.name = "Costeletas de terceiro grau" diseases.third_degree_sideburns.symptoms = "Sintomas - Corte comprido, roupa larga, plataformas e muita maquilhagem." diseases.third_degree_sideburns.cure = "Cura - O pessoal psiquiátrico deve, empregando técnicas atualizadas, convencer o paciente de que esta moda é horrível." diseases.gut_rot.cause = "Causa - O Xarope para a tosse, a base de uísque, da Sra. McGuiver." diseases.gut_rot.name = "Ulcera gástrica" diseases.gut_rot.symptoms = "Sintomas - O paciente näo tosse, mas também näo tem paredes no estômago." diseases.gut_rot.cure = "Cura - Uma enfermeira administra uma variada dissoluçäo de substancias químicas para revestir o estômago." diseases.chronic_nosehair.cause = "Causa - Cheirar com desprezo aqueles que estäo pior que o paciente." diseases.chronic_nosehair.name = "Nariz peludo" diseases.chronic_nosehair.symptoms = "Sintomas - Ter tanto cabelo no nariz para fazer uma peruca." diseases.chronic_nosehair.cure = "Cura - Tomar por via oral um xarope retira-pêlo, que a enfermeira prepara na farmácia." diseases.the_squits.cause = "Causa - Comer pizza que encontrou debaixo da mesa da cozinha." diseases.the_squits.name = "Decomposiçäo" diseases.the_squits.symptoms = "Sintomas - Agh! Certamente pode imaginar isto." diseases.the_squits.cure = "Cura - Uma mistura pegajosa de substâncias viscosas preparada na farmácia solidifica as tripas do paciente." diseases.fake_blood.cause = "Causa - O paciente está acostumado a ser o branco das brincadeiras." diseases.fake_blood.name = "Sangue falso" diseases.fake_blood.symptoms = "Sintomas - Fluido vermelho nas veias que se evapora no contato com a roupa." diseases.fake_blood.cure = "Cura - Este problema só se resolve com tratamento psiquiátrico." diseases.corrugated_ankles.cause = "Causa - Avançar sinal vermelho do semáforo." diseases.corrugated_ankles.name = "Tornozelo torcido" diseases.corrugated_ankles.symptoms = "Sintomas - Os pés näo cabem bem nos sapatos." diseases.corrugated_ankles.cure = "Cura - Os tornozelos säo endireitados, bebendo uma infusäo ligeiramente tóxica de ervas e plantas." diseases.diag_x_ray.name = "Diag: Raio-X" diseases.invisibility.cause = "Causa - A picada de uma formiga radioativa (e invisível)." diseases.invisibility.name = "Invisibilidade" diseases.invisibility.symptoms = "Sintomas - Os Pacientes näo sofrem, porém, às vezes gostam de pregar peças em seus familiares." diseases.invisibility.cure = "Cura - Beber um líquido colorido na farmácia, fazendo completamente visível o paciente." diseases.sweaty_palms.cause = "Causa - Temer as entrevistas de trabalho." diseases.sweaty_palms.name = "Mäos suadas" diseases.sweaty_palms.symptoms = "Sintomas - Dar a mäo ao paciente é como agarrar uma esponja encharcada." diseases.sweaty_palms.cure = "Cura - Um psiquiatra deve discutir a fundo com o paciente sobre esta doença inventada." diseases.bloaty_head.cause = "Causa - Cheirar queijo e beber água da chuva näo purificada." diseases.bloaty_head.name = "Cabeça inchada" diseases.bloaty_head.symptoms = "Sintomas - Muito desconforto pelo que parece." diseases.bloaty_head.cure = "Cura - Fura-se a cabeça inflada, em seguida, volta-se a inflar até o tamanho correto com uma máquina inteligente." diseases.heaped_piles.cause = "Causa - Permanecer de pé junto a refrigeradores de água." diseases.heaped_piles.name = "Hemorroidas" diseases.heaped_piles.symptoms = "Sintomas - O paciente sente-se como se estivesse sentado sobre bolas de gude." diseases.heaped_piles.cure = "Cura - Uma bebida agradável, embora muito ácida, dissolve as hemorroidas internas." diseases.king_complex.cause = "Causa - O espírito do rei entrou na mente do paciente e se apoderou dela." diseases.king_complex.name = "Complexo de rei" diseases.king_complex.symptoms = "Sintomas - Calçar sapatos de camurça e comer hambúrgueres." diseases.king_complex.cure = "Cura - Um Psiquiatra conta ao paciente como ele está ridículo." diseases.golf_stones.cause = "Causa - Inalar gás venenoso contendo bolas de golfe." diseases.golf_stones.name = "Cálculos de golfe" diseases.golf_stones.symptoms = "Sintomas - Delirar e sentir muita vergonha." diseases.golf_stones.cure = "Cura - Dois cirurgiöes operam para extrair os cálculos." diseases.gastric_ejections.cause = "Causa - Comida mexicana ou da India muito condimentada." diseases.gastric_ejections.name = "Vômito" diseases.gastric_ejections.symptoms = "Sintomas - O paciente vomita a comida ao meio digerir em qualquer momento." diseases.gastric_ejections.cure = "Cura - Beber um preparado adstringente especial para parar os vômitos." diseases.unexpected_swelling.cause = "Causa - Algo inesperado." diseases.unexpected_swelling.name = "Inchaço inesperado" diseases.unexpected_swelling.symptoms = "Sintomas - Inchaço." diseases.unexpected_swelling.cure = "Cura - Só pode reduzir o inchaço com uma lanceta durante uma operaçäo que requer dois cirurgiöes." diseases.slack_tongue.cause = "Causa - Fazer muita fofoca." diseases.slack_tongue.name = "Língua comprida" diseases.slack_tongue.symptoms = "Sintomas - A língua cresce até cinco vezes o seu tamanho original." diseases.slack_tongue.cure = "Cura - Coloca-se a língua no corta-línguas e elimina-se de forma rápida, eficaz e dolorosa." diseases.diag_scanner.name = "Diag: Scanner" diseases.uncommon_cold.cause = "Causa - Pequenas partículas de muco no ar." diseases.uncommon_cold.name = "Catarro atípico" diseases.uncommon_cold.symptoms = "Sintomas - Mucosidade, espirros e pulmöes descoloridos." diseases.uncommon_cold.cure = "Cura - Beber um grande gole de um xarope estranho para tosse fabricado na farmácia com ingredientes especiais." diseases.broken_heart.cause = "Causa - Alguém mais rico, mais jovem e mais magro que o paciente." diseases.broken_heart.name = "Infelicidade" diseases.broken_heart.symptoms = "Sintomas - Chorar e rir depois de passar horas rasgando as fotos das férias." diseases.broken_heart.cure = "Cura - Dois cirurgiöes abrem o peito e arrumam com delicadeza o coraçäo enquanto prendem a respiraçäo." diseases.diag_blood_machine.name = "Diag: Análise Sanguínea" diseases.diag_cardiogram.name = "Diag: Cardiologia" diseases.serious_radiation.cause = "Causa - Confundir isótopos de plutônio com chiclete." diseases.serious_radiation.name = "Radiaçäo Grave" diseases.serious_radiation.symptoms = "Sintomas - Os pacientes com essa doença se sentem muito mal." diseases.serious_radiation.cure = "Cura - O Paciente deve ir para a Ducha de Descontaminaçäo para se limpar." diseases.iron_lungs.cause = "Causa - A contaminaçäo urbana misturada com restos do Kebab." diseases.iron_lungs.name = "Pulmäo de aço" diseases.iron_lungs.symptoms = "Sintomas - Capacidade para aspirar fogo e gritar debaixo da água." diseases.iron_lungs.cure = "Cura - Dois cirurgiöes realizam uma operaçäo para eliminar as partes duras do pulmäo na sala de operaçöes." diseases.diag_ultrascan.name = "Diag: Ultra Scanner" diseases.autopsy.name = "Autópsia" dynamic_info.staff.ability = "Habilidade" dynamic_info.staff.psychiatrist_abbrev = "Psiq." dynamic_info.staff.actions.waiting_for_patient = "Esperando um paciente" dynamic_info.staff.actions.wandering = "Andando por aí" dynamic_info.staff.actions.going_to_repair = "Indo reparar %s" dynamic_info.staff.tiredness = "Cansaço" dynamic_info.vip = "Visitante VIP" dynamic_info.patient.diagnosis_progress = "Diagnóstico em curso" dynamic_info.patient.emergency = "Emergências: %s" dynamic_info.patient.diagnosed = "Diagnóstico: %s " dynamic_info.patient.guessed_diagnosis = "Bom diagnóstico: %s" dynamic_info.patient.actions.fed_up = "Perdeu a paciência - Indo para casa" dynamic_info.patient.actions.waiting_for_diagnosis_rooms = "Esperando a construçäo da consulta" dynamic_info.patient.actions.sent_to_other_hospital = "Enviado para outro local" dynamic_info.patient.actions.on_my_way_to = "Indo para %s" dynamic_info.patient.actions.waiting_for_treatment_rooms = "Esperando a construçäo do tratamento" dynamic_info.patient.actions.queueing_for = "Na fila para %s" dynamic_info.patient.actions.epidemic_contagious = "Tenho uma doença contagiosa" dynamic_info.patient.actions.no_diagnoses_available = "Näo há mais diagnósticos, vou embora" dynamic_info.patient.actions.awaiting_decision = "Esperando por sua decisäo" dynamic_info.patient.actions.sent_home = "Dado alta" dynamic_info.patient.actions.cured = "Curado!" dynamic_info.patient.actions.prices_too_high = "Os seus preços säo muito altos, vou embora" dynamic_info.patient.actions.epidemic_sent_home = "Enviado para casa por um Inspetor" dynamic_info.patient.actions.no_treatment_available = "Näo há tratamentos, vou para casa." dynamic_info.patient.actions.dying = "Morrendo!" dynamic_info.object.strength = "Resistência %d" dynamic_info.object.queue_expected = "Fila esperada %d" dynamic_info.object.times_used = "Utilizado %d vezes" dynamic_info.object.queue_size = "Tamanho da fila %d" dynamic_info.health_inspector = "Inspetor de Saúde" town_map.chat = "Detalhes da cidade" town_map.not_for_sale = "Näo vende-se" town_map.price = "Preço" town_map.number = "Número" town_map.owner = "Proprietário" town_map.for_sale = "Vende-se" town_map.area = "Terreno" misc.grade_adverb.mildly = "ligeiramente" misc.grade_adverb.moderately = "moderadamente" misc.grade_adverb.extremely = "extremamente" misc.out_of_sync = "Jogo fora de sincronismo" misc.load_failed = "Jogo näo carregado" misc.send_message_all = "Enviar mensagem para todos os jogadores" misc.hospital_open = "Hospital Aberto" misc.save_failed = "ERRO: Näo foi possível salvar o jogo" misc.mouse = "Rato" misc.pause = "Pausa" misc.done = "Concluído" misc.send_message = "Enviar mensagem para o jogador %d" misc.balance = "Arquivo de Balanço:" misc.low_res = "Baixa Resoluçäo" misc.force = "Mäo-de-obra" misc.save_success = "Jogo salvo com êxito" drug_companies[1] = "Laboratórios Joäo" drug_companies[2] = "Curatudo S.A." drug_companies[3] = "Pequena Pílula Co." drug_companies[4] = "Remédios Seguros S.A" drug_companies[5] = "Omnipharma Corp." high_score.score = "PONTOS" high_score.pos = "POS" high_score.worst_scores = "GALERIA DA VERGONHA" high_score.categories.cures = "NUMERO DE CURAS" high_score.categories.cure_death_ratio = "MEDIA DE CURAS E MORTES" high_score.categories.total_value = "VALOR TOTAL" high_score.categories.visitors = "MAIS VISITANTES" high_score.categories.clean = "LIMPEZA" high_score.categories.money = "O MAIS RICO" high_score.categories.salary = "SALARIO MAIS ALTO" high_score.categories.deaths = "NUMERO DE MORTES" high_score.categories.patient_happiness = "CLIENTES SATISFEITOS" high_score.categories.staff_number = "FUNCIONARIOS" high_score.categories.staff_happiness = "FUNCIONARIOS CONTENTES" high_score.player = "JOGADOR" high_score.best_scores = "GALERIA DA FAMA" high_score.killed = "Morto" competitor_names[1] = "ORAC" competitor_names[2] = "COLOSSUS" competitor_names[3] = "HAL" competitor_names[4] = "MULTIVAC" competitor_names[5] = "HOLLY" competitor_names[6] = "DEEP THOUGHT" competitor_names[7] = "ZEN" competitor_names[8] = "LEON" competitor_names[9] = "MARVIN" competitor_names[10] = "AKIRA" competitor_names[11] = "MOTHER" competitor_names[12] = "JAYNE" competitor_names[13] = "CORSIX" competitor_names[14] = "ROUJIN" competitor_names[15] = "EDVIN" competitor_names[16] = "SAM" competitor_names[17] = "CHARLIE" competitor_names[18] = "ARTHUR" competitor_names[19] = "MAGNUS" competitor_names[20] = "SAL" competitor_names[21] = "JOSHUA" competitor_names[22] = "DANEEL" competitor_names[23] = "OLIVAW" competitor_names[24] = "NIC" staff_class.handyman = "Faz-Tudo" staff_class.nurse = "Enfermeira" staff_class.surgeon = "Cirurgiäo" staff_class.receptionist = "Recepcionista" staff_class.doctor = "Médico" menu_debug.display_pager = " MOSTRAR PAGINADOR " menu_debug.nav_bits = " NAV BITS " menu_debug.win_level_anim = " SUPERAR NIVEL ANIM " menu_debug.plant_pagers = " PAGINADORES DE PLANTAS " menu_debug.display_room_status = " MOSTRAR ESTADO DA CONSULTA" menu_debug.show_nav_cells = " MOSTRAR CELAS NAV " menu_debug.entry_cells = " CELAS DE ENTRADA " menu_debug.object_cells = " CELAS DE OBJETO " menu_debug.lose_game_anim[1] = " PERDER JOGO 1 ANIM " menu_debug.lose_game_anim[2] = " PERDER JOGO 2 ANIM " menu_debug.lose_game_anim[3] = " PERDER JOGO 3 ANIM " menu_debug.lose_game_anim[4] = " PERDER JOGO 4 ANIM " menu_debug.lose_game_anim[5] = " PERDER JOGO 5 ANIM " menu_debug.lose_game_anim[6] = " PERDER JOGO 6 ANIM " menu_debug.lose_game_anim[7] = " PERDER JOGO 7 ANIM " menu_debug.show_help_hotspot = " MOSTRAR AJUDAS " menu_debug.porter_pagers = " PAGINADORES DE FAZ-TUDO " menu_debug.mapwho_checking = " VERIFICAR LOCALIZAÇAO " menu_debug.machine_pagers = " PAGINADORES DE MAQUINA " menu_debug.keep_clear_cells = " CONSERVAR AS CELAS LIMPAS " menu_debug.enter_nav_debug = " INTRODUZIR NAV DEBUG " menu_debug.win_game_anim = " GANHAR JOGO ANIM " menu_debug.remove_objects = " RETIRAR OBJETOS " menu_debug.display_big_cells = " MOSTRAR CELAS GRANDES " menu_debug.pixbuf_cells = " CELAS PIXBUF " menu_debug.remove_walls = " RETIRAR PAREDES " research.categories.drugs = "Pesquisa farmacêutica" research.categories.cure = "Equipam. de cura" research.categories.improvements = "Melhorias" research.categories.specialisation = "Especializaçäo" research.categories.diagnosis = "Equipam. de diagnóstico" research.funds_allocation = "Alocaçäo de fundos" research.allocated_amount = "Quantidade alocada" months[1] = "Jan" months[2] = "Fev" months[3] = "Mar" months[4] = "Abr" months[5] = "Mai" months[6] = "Jun" months[7] = "Jul" months[8] = "Ago" months[9] = "Set" months[10] = "Out" months[11] = "Nov" months[12] = "Dez" trophy_room.cleanliness.award[1] = "Os Inspetores notaram que o seu hospital está muito limpo. Um hospital limpo é um hospital seguro. Continue assim." trophy_room.cleanliness.regional_good[1] = "Seu hospital foi apontado como um dos menos limpos da regiäo. Um hospital sujo, que cheira mal e é perigoso. Deveria se preocupar mais com a limpeza." trophy_room.cleanliness.regional_bad[1] = "O seu hospital é o mais sujo da regiäo. Outros diretores conseguiram manter os seus hospitais mais limpos. Você é a vergonha da profissäo médica." trophy_room.happy_vips.trophies[1] = "Ganhou o Prêmio Nobel de VIP Exemplares. Todos os que visitaram o seu hospital no ano passado o elogiaram muito." trophy_room.happy_vips.trophies[2] = "A Agência de Pessoas Famosas deseja-lhe conceder o Prêmio à Celebridade por ter agradado a todos os VIP que visitaram o seu hospital." trophy_room.happy_vips.trophies[3] = "Ganhou a VIAGEM VIP por melhorar a imagem dos trabalhadores aos olhos de todos os que visitaram o seu hospital. Estupendo!" trophy_room.gen_repairs.awards[1] = "Foi-lhe concedido um prêmio especial pela diligência dos seus faz-tudo na hora de manter as máquinas do seu hospital em bom estado. Bem feito. Tome umas férias." trophy_room.gen_repairs.awards[2] = "Os seus faz-tudo trabalharam melhor que os de qualquer outro hospital. Este é um importante acontecimento de felicidade." trophy_room.gen_repairs.awards[3] = "As suas máquinas estäo num magnífico estado. A dedicaçäo dos seus faz-tudo foi extraordinária. Merecem este prestigioso prêmio. Um trabalho estupendo!" trophy_room.gen_repairs.penalty[1] = "Os seus faz-tudo näo cuidaram bem das suas máquinas. Deveria fiscalizá-los melhor ou contratar mais para que tirem o trabalho adiante." trophy_room.gen_repairs.penalty[2] = "Levou mal a manutençäo. O seu pessoal deveria cuidar melhor dos seus equipamentos." trophy_room.many_cured.penalty[1] = "O seu hospital näo cura com eficácia os pacientes que o necessitam. Empresta mais atençäo às curas para que sejam mais eficazes." trophy_room.many_cured.penalty[2] = "O seu hospital é o menos eficaz na hora de curar pacientes. Decepcionou o Ministério e defraudou a si mesmo. Näo diremos mais." trophy_room.many_cured.trophies[1] = "Parabéns pela concessäo do prêmio Marie Curie por ter curado quase todos os pacientes do seu hospital no ano passado." trophy_room.many_cured.trophies[2] = "A Fundaçäo Nacional de Curas deseja premiá-lo por ter curado um grande número de pacientes no ano passado, concedendo o Galardäo ao Maior Curador." trophy_room.many_cured.trophies[3] = "Foi-lhe concedido a Medalha do Paciente Säo por ter conseguido curar no seu hospital uma enorme porcentagem de pacientes no ano passado." trophy_room.many_cured.awards[1] = "Parabéns por curar um montäo de pessoas no ano passado. Um grande número de pessoas sente-se muito melhor, graças ao seu trabalho." trophy_room.many_cured.awards[2] = "Pedimos que aceite este prêmio por ter curado mais pacientes que qualquer outro hospital. Um excelente trabalho." trophy_room.many_cured.regional[1] = "Foi-lhe concedido o prêmio a cura total por ter curado mais pessoas que todos os outros hospitais juntos." trophy_room.sold_drinks.trophies[1] = "A Associaçäo Odontológica orgulha-se de lhe conceder este troféu e esta placa por vender um montäo de bebidas em lata no seu hospital." trophy_room.sold_drinks.trophies[2] = "O seu hospital foi premiado com o prêmio Bizz-Efervescente pela Venda de Refrigerante em reconhecimento ao número de bebidas vendidas em seu hospital no ano passado." trophy_room.sold_drinks.trophies[3] = "Em nome de DK Obturaçöes Inc., você recebe o prêmio coberto de chocolate para celebrar a enorme quantidade de refrigerantes que vendeu no seu hospital este ano." trophy_room.consistant_rep.trophies[1] = "O Conselho de ministros concedeu-lhe a Mençäo de Honra por ter alcançado o nível máximo de eficácia e reputaçäo durante o ano presente. Bem feito." trophy_room.consistant_rep.trophies[2] = "Parabéns pela concessäo do Prêmio Lençóis Limpos por ser o hospital com a melhor reputaçäo do ano. Você mereceu." trophy_room.cash = "EFETIVO" trophy_room.high_rep.penalty[1] = "Vai ser sancionado pela má reputaçäo que teve no ano passado. Procure melhorar no futuro." trophy_room.high_rep.penalty[2] = "A reputaçäo do seu hospital é a pior da área. É uma vergonha. Melhore ou consiga outro emprego." trophy_room.high_rep.awards[1] = "Bem feito! Ganhou um pequeno prêmio por alcançar uma impressionante reputaçäo no ano passado." trophy_room.high_rep.awards[2] = "Maravilhoso! O seu hospital ganhou um prêmio por conseguir a melhor reputaçäo no ano passado." trophy_room.high_rep.regional[1] = "Por favor, aceita o Prêmio Bullfrog por dirigir o melhor hospital do ano. Você mereceu, aproveite." trophy_room.high_rep.regional[2] = "Este ano, a reputaçäo do seu hospital superou a do resto dos hospitais. Um estupendo lucro." trophy_room.best_value_hosp.trophies[1] = "Parabéns pela concessäo do Prêmio Lençóis Limpos por ser o hospital com a melhor reputaçäo do ano. Você mereceu." trophy_room.best_value_hosp.regional[1] = "Parabéns por ter o hospital mais valioso do jogo. Bom trabalho! Por favor, continue assim." trophy_room.best_value_hosp.penalty[1] = "Todos os hospitais da área valem mais do que o seu. Faça algo a respeito desta vergonhosa situaçäo. Consiga coisas mais caras!" trophy_room.reputation = "REPUTAÇAO" trophy_room.happy_staff.regional_good[1] = "O seu pessoal é o mais satisfeito de todos os hospitais. Se o pessoal está contente, há mais ganhos e menos mortes. No Ministério estäo satisfeitos." trophy_room.happy_staff.penalty[1] = "O seu pessoal deseja que saiba que estäo muito descontentes. Ter um bom pessoal é algo proveitoso. Faça com que eles estejam mais satisfeitos ou algum dia irá perdê-los." trophy_room.happy_staff.trophies[1] = "Ganhou o Prêmio Médico Sorridente por manter o mais contente possível o seu esforçado pessoal." trophy_room.happy_staff.trophies[2] = "A Fundaçäo para a Felicidade do Pessoal Sanitário concedeu-lhe este galardäo por näo ter tido trabalhadores descontentes no seu hospital no ano passado." trophy_room.happy_staff.trophies[3] = "Concedemos a você o prêmio Monopoliza do Sorriso Radiante por manter contente todos os seus funcionários, mais à frente do cumprimento do dever, durante o ano passado." trophy_room.happy_staff.awards[1] = "Sua equipe te concedeu um prêmio. Eles dizem que, em geral, você manda bem." trophy_room.happy_staff.awards[2] = "Seus funcionários säo täo felizes trabalhando para você que näo conseguem tirar os sorrisos dos seus rostos. Você é um gerente magnífico." trophy_room.happy_staff.regional_bad[1] = "A sua equipe esteve muito infeliz durante o ano passado. Você deveria ter notado. Do jeito que está, as equipes dos outros hospitais estäo muito mais contentes do que a sua." trophy_room.hosp_value.penalty[1] = "O seu hospital fracassou em alcançar um valor razoável. Gerenciou mal o dinheiro. Lembre-se, um bom hospital também é um hospital caro." trophy_room.hosp_value.awards[1] = "O Ministério da Saúde gostaria de parabenizá-lo pelo impressionante valor alcançado em seu hospital." trophy_room.hosp_value.regional[1] = "É uma promessa dos negócios. O hospital é o mais valioso de toda a área." trophy_room.healthy_plants.awards[1] = "Parabéns por ganhar o galardäo do Grande Fertilizante por manter as suas plantas vivas durante o ano passado." trophy_room.healthy_plants.trophies[1] = "Os Amigos das Plantas de Interior desejam concede-lhe o Prêmio de Saúde Verde por manter vivas as suas plantas durante os últimos doze meses." trophy_room.healthy_plants.trophies[2] = "Salvem as Plantas quer concede-lhes o Prêmio do Maior Ecologista por manter vivas as plantas do seu hospital durante o ano passado." trophy_room.research.penalty[1] = "Foi pouco eficiente ao investigar curas, máquinas e remédios novos. Isto é fatal, já que o avanço tecnológico é algo fundamental." trophy_room.research.regional_good[1] = "As suas investigaçöes conseguiram colocar o seu hospital nos últimos avanços de hoje em dia. Os seus pesquisadores merecem este prêmio. Bem feito!" trophy_room.research.awards[1] = "As suas investigaçöes conseguiram colocar o seu hospital nos últimos avanços de hoje em dia. Os seus pesquisadores merecem este prêmio. Bem feito!" trophy_room.research.awards[2] = "No ano passado, descobriu mais remédios e máquinas do que se podia esperar. Por favor, aceite este prêmio de todos nós no Ministério." trophy_room.research.regional_bad[1] = "Outros hospitais säo melhores que o seu na pesquisa. No Ministério estäo furiosos, seu hospital deveria lhe conceder mais importância." trophy_room.no_deaths.penalty[1] = "O número de mortes no seu hospital, no ano passado, foi muito elevado. Empresta mais atençäo ao seu trabalho. Assegure-se de que no futuro sobreviva mais pessoas." trophy_room.no_deaths.penalty[2] = "O seu hospital é um risco para os pacientes. Supöe-se que deve curar muitas pessoas, näo deixar morrer." trophy_room.no_deaths.trophies[1] = "Ganhou o Galardäo da Queixa Ausente por manter 100%% dos seus pacientes com vida o ano passado." trophy_room.no_deaths.trophies[2] = "A Associaçäo A Vida Continua concede-lhe este prêmio pela ausência de falecimentos no seu hospital este ano." trophy_room.no_deaths.trophies[3] = "Foi-lhe concedido o Prêmio pela Conservaçäo da Vida por ter conseguido evitar falecimentos no seu hospital durante este ano. Genial!" trophy_room.no_deaths.awards[1] = "Ganhou este prêmio como reconhecimento ao sob índice de falecimentos no seu hospital, este ano. É estupendo!" trophy_room.no_deaths.awards[2] = "A sua habilidade conseguiu reduzir ao mínimo o número de mortes no seu hospital. Deve estar muito feliz com este resultado." trophy_room.no_deaths.regional[1] = "No ano passado, a taxa de mortalidade do seu hospital foi inferior a dos outros. Por favor, aceite este prêmio." trophy_room.rats_accuracy.trophies[1] = "Foi-lhe concedido o Prêmio de Disparos Certeiros Syndicate Wars por acertar em %d%% ratos no seu hospital no ano passado." trophy_room.rats_accuracy.trophies[2] = "Este prêmio é para celebrar a sua incrível pontaria ao eliminar %d%% dos ratos que disparou no seu hospital no ano passado." trophy_room.rats_accuracy.trophies[3] = "Para celebrar o fato de que eliminou %d%% dos ratos do seu hospital, foi-lhe concedido o Troféu de Eliminador de Roedores. Parabéns!" trophy_room.emergencies.penalty[1] = "Foi muito pouco eficiente nos casos de emergência. Os pacientes de emergência merecem uma atençäo rápida e precisa, que você näo lhes deu." trophy_room.emergencies.award[1] = "Parabéns! Ganhou este prêmio pela maneira eficaz e eficiente com a que solucionaste as emergências. Bom trabalho." trophy_room.emergencies.award[2] = "Confrontou as emergências de uma maneira extraordinária. Ganhou este prêmio por ser o melhor na hora de lidar com uma grande quantidade de pacientes." trophy_room.emergencies.regional_good[1] = "O Ministério reconhece que o ano passado no seu hospital, trataram-se as emergências melhor que em qualquer outro hospital e foi-lhe concedido este prêmio." trophy_room.emergencies.regional_bad[1] = "O seu hospital é o pior da regiäo para tratar casos de emergência. Tem a culpa de ocupar o último lugar na Liga Local de Tratamentos de Emergência." trophy_room.curesvdeaths.awards[1] = "Os meus mais sinceros parabéns. No ano passado, o número de curas foi superior ao de falecimentos no seu hospital." trophy_room.curesvdeaths.penalty[1] = "A sua proporçäo entre curas e mortes é extremamente baixa. Deveria assegurar de que cura mais pessoas do que mata. Näo deixe o seu pessoal em mau lugar." trophy_room.wait_times.award[1] = "Parabéns! No seu hospital a gente fez fila durante muito pouco tempo. Este é um acontecimento importante." trophy_room.wait_times.penalty[1] = "No seu hospital, os pacientes esperam muito tempo. Há sempre filas inaceitáveis. Poderia tratar os seus pacientes com mais eficácia se quisesse." trophy_room.happy_patients.awards[1] = "Deve estar orgulhoso de que, no ano passado, as pessoas estivesse muito contente no seu hospital." trophy_room.happy_patients.awards[2] = "Os pacientes que visitaram o seu hospital sentiram-se mais contentes com o seu tratamento, que no resto dos hospitais." trophy_room.happy_patients.penalty[1] = "As pessoas que väo para o hospital tem uma experiência terrível. Terá que fazê-lo muito melhor se quiser ganhar o respeito do Ministério." trophy_room.happy_patients.penalty[2] = "As pessoas que recebeu tratamento no seu hospital queixaram-se do estado do mesmo. Deveria ter muito mais em conta o bem-estar dos pacientes." trophy_room.pop_percentage.awards[1] = "Note, o ano passado curou uma grande parte da populaçäo local no seu hospital. Muito bem." trophy_room.pop_percentage.awards[2] = "Parabéns! A maioria da populaçäo local vai ao seu hospital em vez de ir a qualquer outra instituiçäo." trophy_room.pop_percentage.awards[3] = "Brilhante! O seu hospital recebeu o maior número de pacientes que todos os outros hospitais juntos." trophy_room.pop_percentage.penalty[1] = "Teve muito poucos pacientes este ano. Para ganhar dinheiro, precisa que haja pacientes que paguem." trophy_room.pop_percentage.penalty[2] = "Todos os hospitais da área conseguiram mais pacientes do que você. Deveria estar envergonhado." trophy_room.rats_killed.trophies[1] = "Foi-lhe concedido o Troféu Raticida por eliminar %s ratos no seu hospital no ano passado." trophy_room.rats_killed.trophies[2] = "Merece este prêmio da Federaçäo Anti Ratos, pela sua excepcional habilidade em eliminar ratos, demonstrada ao eliminar %s exemplares." trophy_room.rats_killed.trophies[3] = "Concedeu-lhe o Troféu Acaba com Ratos pela sua grande habilidade em eliminar %d ratos no seu hospital no ano passado." trophy_room.all_cured.awards[1] = "Parabéns por ter ganho o Prêmio Marie Curie por curar a todos os pacientes do seu hospital no ano passado." trophy_room.all_cured.trophies[1] = "A Fundaçäo Curadores Nacionais premia-o por ter curado todos os pacientes do seu hospital no ano passado, concedendo-lhe o Prêmio do Maior Curador." trophy_room.all_cured.trophies[2] = "Foi-lhe concedida a Medalha do Paciente Säo por ter conseguido curar todos os pacientes do seu hospital no ano passado." graphs.cures = "Curas" graphs.reputation = "Reputaçäo" graphs.balance = "Balanço" graphs.wages = "Salários" graphs.visitors = "Visitantes" graphs.time_spans[1] = "1 Ano " graphs.time_spans[2] = "12 Anos" graphs.time_spans[3] = "48 Anos" graphs.deaths = "Mortes" graphs.money_out = "Pagamento" graphs.money_in = "Crédito" queue_window.max_queue_size = "Máximo" queue_window.num_expected = "Previsto" queue_window.num_in_queue = "Tamanho da fila" queue_window.num_entered = "Pacientes totais" room_classes.clinics = "Clínica" room_classes.facilities = "Instalaçöes" room_classes.diagnosis = "Diagnóstico" room_classes.treatment = "Tratamento" rooms_short.ward = "Enfermaria" rooms_short.blood_machine = "Transfusöes" rooms_short.fracture_clinic = "Traumatologia" rooms_short.cardiogram = "Cardiologia" rooms_short.decontamination = "Descontaminaçäo" rooms_short.jelly_vat = "Banho gelatinoso" rooms_short.staffroom = "Sala de Descanso" rooms_short.hair_restoration = "Pêloterapia" rooms_short.inflation = "Inflatoterapia" rooms_short.operating_theatre = "Sala de Operaçöes" rooms_short.reception = "Recepçäo" rooms_short.gps_office = "Consultório Geral" rooms_short.training_room = "Formaçäo" rooms_short.x_ray = "Raio-X" rooms_short.tongue_clinic = "Laringologia" rooms_short.general_diag = "Diagnóstico Geral" rooms_short.ultrascan = "Ultra Scanner" rooms_short.dna_fixer = "Genética" rooms_short.psychiatric = "Psiquiatria" rooms_short.toilets = "Banheiro" rooms_short.corridor_objects = "Objetos do corredor" rooms_short.pharmacy = "Farmácia" rooms_short.destroyed = "Destruída" rooms_short.research_room = "Centro de Pesquisa" rooms_short.scanner = "Scanner" rooms_short.electrolysis = "Eletrólise" tooltip.status.warmth = "Nível global de calor das pessoas no seu hospital" tooltip.status.close = "Fechar tela de condiçäo" tooltip.status.thirst = "Nível global de sede das pessoas no seu hospital" tooltip.status.population = "Você precisa ter %d%% da populaçäo total vindo para o seu hospital" tooltip.status.num_cured = "O objetivo é curar %d pessoas. Até agora curou %d" tooltip.status.percentage_killed = "O objetivo é matar pelo menos %d%% dos seus pacientes. Até agora morreram %d%%" tooltip.status.percentage_cured = "Você precisa tratar %d%% dos visitantes do seu hospital. Até agora tratou %d%%" tooltip.status.win_progress_own = "Mostra o progresso para conquistar os critérios do seu próprio hospital" tooltip.status.value = "O seu hospital deve valer $%d. Agora vale $%d" tooltip.status.happiness = "Nível global de satisfaçäo das pessoas no seu hospital" tooltip.status.win_progress_other = "Mostra o progresso para conquistar os critérios de %s" tooltip.status.population_chart = "Gráfico que mostra a proporçäo de pacientes de cada hospital da cidade" tooltip.objects.bench = "Banco: serve de assento aos pacientes para que esperem com mais conforto." tooltip.objects.pharmacy_cabinet = "Farmácia: onde se guardam os remédios" tooltip.objects.console = "15 CONSOLES DE SCANNER" tooltip.objects.atom_analyser = "Misturador químico: situado no Dept. de Desenvolvimento, esta máquina acelera todo o processo de pesquisa." tooltip.objects.fire_extinguisher = "Extintor: reduz o perigo do mau funcionamento das máquinas." tooltip.objects.scanner = "14 SCANNER" tooltip.objects.bin = "Cesto de papéis: os pacientes atiram aqui os seus desperdícios." tooltip.objects.swing_door1 = "52 PORTAS DUPLAS 1" tooltip.objects.pool_table = "Mesa de bilhar: ajuda o seu pessoal a relaxar-se." tooltip.objects.screen = "16 TELAS" tooltip.objects.cabinet = "Armário: contém fichas dos pacientes, notas e documentos sobre pesquisa." tooltip.objects.sofa = "Sofá: Os empregados que descansam na sala de descanso sentaräo num sofá, a menos que tenham uma maneira melhor de relaxar-se." tooltip.objects.projector = "37 PROJETORES" tooltip.objects.table2 = "12 MESAS" tooltip.objects.shower = "54 DUCHAS DESCONTAMINADORAS" tooltip.objects.comfortable_chair = "61 CADEIRA DE LEITURA" tooltip.objects.door = "Porta: as pessoas fecham e abrem um montäo de vezes." tooltip.objects.computer = "Computador: componente chave para a pesquisa" tooltip.objects.litter_bomb = "Bomba de lixo: sabota os hospitais dos oponentes" tooltip.objects.entrance_left = "58 PORTAS DIREITAS DE ENTRADA" tooltip.objects.dna_fixer = "23 REPARADORES DE DNA" tooltip.objects.bed = "Cama: as pessoas que estejam mesmo doentes deitam-se nela." tooltip.objects.lamp = "Abajur: ilumina e permite que o pessoal veja." tooltip.objects.bookcase = "Livraria: material de consulta para os médicos." tooltip.objects.desk = "Escritório: é fundamental para que o médico coloque o seu PC." tooltip.objects.toilet_sink = "Pia: os seus pacientes mais limpos lavam as suas mäos sujas aqui. Se näo haver suficientes pias, os pacientes ficam infelizes." tooltip.objects.gates_of_hell = "48 PORTAS DO INFERNO" tooltip.objects.swing_door2 = "53 PORTAS DUPLAS 2" tooltip.objects.cast_remover = "24 REMOVEDOR DE GESSO" tooltip.objects.plant = "Planta: alegra os pacientes e desencarde o ar." tooltip.objects.blood_machine = "42 TRANSFUSIOMETROS" tooltip.objects.slicer = "26 CORTADORES" tooltip.objects.x_ray = "27 RAIOS-X" tooltip.objects.cardio = "13 ELETROCARDIOGRAMA" tooltip.objects.crash_trolley = "20 CARROS" tooltip.objects.bed2 = "näo se utiliza" tooltip.objects.electrolyser = "46 ELETROLISIS" tooltip.objects.video_game = "Videogame: deixe que o seu pessoal se divirta com o Hi-Octane." tooltip.objects.skeleton = "Esqueleto: é utilizado para aprender e na Noite do Halloween." tooltip.objects.ultrascanner = "22 ULTRA SCANNER" tooltip.objects.op_sink1 = "33 PIAS 1 OP" tooltip.objects.hair_restorer = "25 PELO-RESTAURADORES" tooltip.objects.reception_desk = "Recepçäo: requer uma recepcionista para que envie os pacientes para o médico." tooltip.objects.radiation_shield = "28 TELAS ANTI-RADIACAO" tooltip.objects.couch = "18 POLTRONAS" tooltip.objects.inflator = "Inflador: cura a cabeça inflada." tooltip.objects.toilet = "Banheiro: a natureza uma hora chama..." tooltip.objects.lecture_chair = "Cadeira de leitura: os médicos que estäo estudando sentam-se aqui para tomar notas, aborrecer-se e rabiscar desnecessariamente. Quantas mais cadeiras ponha, mais compridas seräo as aulas." tooltip.objects.auto_autopsy = "Autópsia: uma grande ajuda para descobrir novas curas." tooltip.objects.chair = "Cadeira: os pacientes sentam-se sobre ela e falam das suas doenças." tooltip.objects.x_ray_viewer = "29 TELAS DE RAIOS-X" tooltip.objects.radiator = "Radiador: evita que o seu hospital fique frio." tooltip.objects.bed3 = "näo se utiliza" tooltip.objects.surgeon_screen = "35 TELAS DE CIRURGIAO" tooltip.objects.jelly_moulder = "47 BANHOS GELATINOSOS" tooltip.objects.drinks_machine = "Máquina de bebidas: impede que os pacientes tenham sede e contribui com ganhos." tooltip.objects.op_sink2 = "34 PIAS 2 OP" tooltip.objects.table1 = "Mesa: sobre ela coloca-se um montäo de revistas para que os pacientes esperem contentes." tooltip.objects.entrance_right = "59 PORTAS ESQUERDAS DE ENTRADA" tooltip.objects.operating_table = "30 MESAS DE OPERACOES" tooltip.objects.tv = "TV: assegura de que o seu pessoal näo perca os seus programas favoritos." tooltip.watch.hospital_opening = "Cronômetro de construçäo: é o tempo que resta para que o seu hospital seja declarado aberto. Se apertar o botäo IR abrirá o hospital imediatamente." tooltip.watch.epidemic = "Epidemia: tempo que resta para encobrir a epidemia. Quando este tempo expire ou um paciente contagioso abandone o seu hospital, um Inspetor de Saúde vem visitar. O botäo liga ou desliga o modo vacina. Aperte em um paciente para que uma Enfermeira o vacine." tooltip.watch.emergency = "Emergência: tempo que resta para curar todos os pacientes nas emergências." tooltip.buy_objects_window.increase = "Comprar mais um objeto" tooltip.buy_objects_window.price = "Preço do objeto" tooltip.buy_objects_window.confirm = "Comprar objeto(s)" tooltip.buy_objects_window.cancel = "Cancelar" tooltip.buy_objects_window.decrease = "Comprar menos um objeto" tooltip.buy_objects_window.total_value = "Custo total dos objetos solicitados" tooltip.machine_window.status = "Estado das máquinas." tooltip.machine_window.close = "Cancelar caixa de diálogo" tooltip.machine_window.repair = "Mandar o faz-tudo reparar as máquinas." tooltip.machine_window.name = "Nome" tooltip.machine_window.times_used = "Número de vezes que reparou as máquinas." tooltip.machine_window.replace = "Substituir máquinas" tooltip.pay_rise_window.accept = "Satisfazer a sua demanda salarial" tooltip.pay_rise_window.decline = "Näo pagar; despedi-los" tooltip.staff_window.psychiatrist = "Psiquiatra" tooltip.staff_window.close = "Cancelar caixa de diálogo" tooltip.staff_window.sack = "Despedir" tooltip.staff_window.name = "Nome do empregado" tooltip.staff_window.pick_up = "Selecionar" tooltip.staff_window.tiredness = "Nível de cansaço" tooltip.staff_window.ability = "Nível de qualificaçäo" tooltip.staff_window.researcher = "Pesquisador" tooltip.staff_window.skills = "Qualificaçöes especiais" tooltip.staff_window.salary = "Salário mensal" tooltip.staff_window.happiness = "Nível de satisfaçäo" tooltip.staff_window.doctor_seniority = "Categoria - Residente, Médico ou Consultor" tooltip.staff_window.surgeon = "Cirurgiäo" tooltip.research.cure_dec = "Reduzir a porcentagem dos equipamentos de curas" tooltip.research.close = "Fechar tela de pesquisa" tooltip.research.diagnosis_inc = "Aumentar a porcentagem dos equipamentos de diagnóstico" tooltip.research.cure_inc = "Aumentar a porcentagem dos equipamentos de curas" tooltip.research.specialisation_inc = "Aumentar a porcentagem em pesquisa especial" tooltip.research.diagnosis_dec = "Reduzir a porcentagem dos equipamentos de diagnóstico" tooltip.research.improvements_inc = "Aumentar a porcentagem nas melhorias" tooltip.research.drugs_dec = "Reduzir a porcentagem da pesquisa farmacêutica" tooltip.research.specialisation_dec = "Reduzir a porcentagem em pesquisa especial" tooltip.research.improvements_dec = "Reduzir a porcentagem nas melhorias" tooltip.research.drugs_inc = "Aumentar a porcentagem da pesquisa farmacêutica" tooltip.research.allocated_amount = "Quantidade do orçamento alocado" tooltip.statement.close = "Fechar tela do estado das contas" tooltip.rooms.ward = "As enfermarias säo úteis tanto para diagnosticar como para tratamento. Envie aqui os pacientes para observaçäo e para recuperar de uma operaçäo sob o cuidado de uma enfermeira." tooltip.rooms.blood_machine = "O médico usa o Transfusiômetro para diagnosticar os pacientes" tooltip.rooms.fracture_clinic = "A enfermeira utiliza a consulta de traumatologia para arrumar fraturas" tooltip.rooms.cardiogram = "O médico usa a cardiologia para diagnosticar os pacientes" tooltip.rooms.decontamination = "O médico usa a ducha descontaminadora para curar a radioatividade" tooltip.rooms.jelly_vat = "O médico usa o Banho Gelatinoso para curar a gelatinitis" tooltip.rooms.staffroom = "Os médicos e as enfermeiras descansam na Sala de Descanso" tooltip.rooms.hair_restoration = "O médico usa o Pêlo-restaurador para curar a calvície" tooltip.rooms.inflation = "O médico usa a Inflatoterapia para curar a cabeça inflada" tooltip.rooms.gps_office = "Os pacientes recebem sua primeira consulta na sala de Consultório Geral" tooltip.rooms.training_room = "A sala de formaçäo com um consultor serve para formar outros médicos" tooltip.rooms.x_ray = "O médico usa Raio-X para diagnosticar os pacientes" tooltip.rooms.general_diag = "O médico utiliza a sala de Diagnóstico Geral para fazer um diagnóstico básico. É barato e frequentemente eficaz" tooltip.rooms.operating_theatre = "No sala de operaçöes fazem falta dois cirurgiöes qualificados" tooltip.rooms.ultrascan = "O médico usa o Ultra-scanner para diagnosticar os pacientes" tooltip.rooms.psychiatry = "A consulta de psiquiatria cura os pacientes loucos e ajuda a diagnosticar outros pacientes, mas requer um médico qualificado em psiquiatria." tooltip.rooms.toilets = "Construa banheiros para impedir que os pacientes armem uma confusäo no seu hospital!" tooltip.rooms.dna_fixer = "O médico usa o Reparador de DNA para curar os pacientes com DNA alienígena" tooltip.rooms.pharmacy = "Na enfermaria, a enfermeira administra remédios para curar os pacientes" tooltip.rooms.tongue_clinic = "O médico usa o Laringologia para curar a língua comprida" tooltip.rooms.research_room = "Os médicos pesquisadores investigam remédios e máquinas novas no Centro de Pesquisa" tooltip.rooms.scanner = "O médico usa o Scanner para diagnosticar os pacientes" tooltip.rooms.electrolysis = "O médico usa a consulta de eletrólise para curar o peludismo" tooltip.policy.diag_procedure = "Se o diagnóstico de um médico é menos seguro que a porcentagem de ENVIAR PARA CASA, o paciente será enviado para casa. Se o diagnóstico for melhor que a porcentagem de TENTAR CURA, será administrado o tratamento adequado ao paciente" tooltip.policy.staff_leave = "Aperte aqui para que os funcionários livres ajudem os companheiros que precisem" tooltip.policy.close = "Fechar tela de normas" tooltip.policy.staff_rest = "Nível de cansaço do pessoal antes de poderem descansar" tooltip.policy.diag_termination = "O diagnóstico de um paciente continuará até que os médicos estejam seguros da porcentagem de PARAR PROCESSO, ou até que sejam utilizados todos os diagnósticos" tooltip.policy.staff_stay = "Aperte aqui para assegurar que o funcionário fique nas consultas que foram atribuídas a ele" tooltip.main_menu.load_menu.empty_slot = "VAZIO" tooltip.main_menu.load_menu.load_slot = "JOGO" tooltip.main_menu.network = "Iniciar um jogo em rede" tooltip.staff_list.psychiatrist = "Psiquiatra qualificado" tooltip.staff_list.close = "Fechar gerenciamento de funcionários" tooltip.staff_list.happiness_2 = "Moral do empregado" tooltip.staff_list.ability = "Mostra o nível de habilidade destes empregados" tooltip.staff_list.tiredness_2 = "Cansaço do empregado" tooltip.staff_list.ability_2 = "Nível de habilidade do empregado" tooltip.staff_list.salary = "Salário atual pago a esta pessoa" tooltip.staff_list.researcher_train = "Formado um %d%% para ser Pesquisador" tooltip.staff_list.happiness = "Mostra o quanto contentes estäo estes empregados" tooltip.staff_list.sack = "Despedir esta pessoa" tooltip.staff_list.surgeon = "Cirurgiäo qualificado" tooltip.staff_list.view_staff = "Ver a pessoa trabalhando" tooltip.staff_list.surgeon_train = "Formado um %d%% para ser Cirurgiäo" tooltip.staff_list.tiredness = "Mostra o quanto cansados estäo estes empregados" tooltip.staff_list.receptionists = "Ver a lista das recepcionistas contratadas neste hospital" tooltip.staff_list.pay_rise = "Subir o salário desta pessoa em 10%" tooltip.staff_list.bonus = "Pagar a esta pessoa um bônus de 10%" tooltip.staff_list.doctor_seniority = "Experiência do médico" tooltip.staff_list.nurses = "Ver a lista das enfermeiras contratadas neste hospital" tooltip.staff_list.skills = "Outras qualificaçöes" tooltip.staff_list.detail = "Cuidar os detalhes" tooltip.staff_list.doctors = "Ver a lista dos médicos contratados neste hospital" tooltip.staff_list.handymen = "Ver a lista dos faz-tudo contratados neste hospital" tooltip.staff_list.researcher = "Pesquisador qualificado" tooltip.staff_list.psychiatrist_train = "Formado um %d%% para ser Psiquiatra" tooltip.place_objects_window.confirm = "Confirmar" tooltip.place_objects_window.buy_sell = "Comprar/vender objetos" tooltip.place_objects_window.pick_up = "Pegar objeto" tooltip.place_objects_window.cancel = "Cancelar" tooltip.casebook.increase = "Aumentar quantidade" tooltip.casebook.reputation = "Reputaçäo de curas ou diagnósticos" tooltip.casebook.close = "Fechar ficha clínica" tooltip.casebook.earned_money = "Ganhos até a data" tooltip.casebook.decrease = "Reduzir quantidade" tooltip.casebook.up = "Subir" tooltip.casebook.research = "Clique aqui para utilizar o orçamento de Pesquisa Especializada para este tratamento" tooltip.casebook.down = "Baixar" tooltip.casebook.sent_home = "Número de pacientes dados alta" tooltip.casebook.cured = "Número de restabelecimentos" tooltip.casebook.deaths = "Número de falecimentos" tooltip.casebook.treatment_charge = "Preço" tooltip.casebook.cure_type.psychiatrist = "Os psiquiatras realizam este tratamento" tooltip.casebook.cure_type.drug_percentage = "Este tratamento requer uma remédio. O seu tem uma eficácia de %d%%" tooltip.casebook.cure_type.drug = "Este tratamento requer uma remédio" tooltip.casebook.cure_type.machine = "É preciso de uma máquina para este tratamento" tooltip.casebook.cure_type.surgery = "Esta doença requer cirurgia" tooltip.casebook.cure_requirement.hire_staff_old = "Você precisa contratar um %s para este tratamento" tooltip.casebook.cure_requirement.not_possible = "Näo pode administrar este tratamento" tooltip.casebook.cure_requirement.hire_surgeon = "Você precisa contratar um segundo cirurgiäo para que realize operaçöes" tooltip.casebook.cure_requirement.build_ward = "Você precisa construir uma enfermaria para administrar este tratamento" tooltip.casebook.cure_requirement.possible = "Pode administrar este tratamento" tooltip.casebook.cure_requirement.build_room = "Você precisa construir uma consulta para dar este tratamento" tooltip.casebook.cure_requirement.hire_surgeons = "Você precisa contratar dois cirurgiöes para as operaçöes" tooltip.casebook.cure_requirement.research_machine = "Tem que inventar alguma máquina para este tratamento." tooltip.casebook.cure_requirement.ward_hire_nurse = "Você precisa de uma enfermeira que trabalhe na enfermaria para administrar este tratamento" tooltip.patient_window.center_view = "Enfocar a pessoa" tooltip.patient_window.warmth = "Quanto calor tem a pessoa" tooltip.patient_window.close = "Cancelar caixa de diálogo" tooltip.patient_window.send_home = "Dar alta à pessoa" tooltip.patient_window.thirst = "Quanta sede tem a pessoa" tooltip.patient_window.graph = "Clique para escolher entre o gráfico do estado de saúde da pessoa ou o seu histórico clínico" tooltip.patient_window.queue = "Ver detalhes da pessoa que faz fila" tooltip.patient_window.happiness = "Satisfaçäo da pessoa" tooltip.patient_window.casebook = "Ver detalhes da doença da pessoa" tooltip.patient_window.abort_diagnosis = "Colocar a pessoa em tratamento em vez de esperar que complete o diagnóstico" tooltip.town_map.fire_extinguishers = "Alterar extintores" tooltip.town_map.people = "Alterar pessoas" tooltip.town_map.balance = "Saldo" tooltip.town_map.objects = "Alterar objetos" tooltip.town_map.heat_inc = "Subir aquecimento" tooltip.town_map.heating_bill = "Recibo de aquecimento" tooltip.town_map.heat_level = "Nível de aquecimento" tooltip.town_map.radiators = "Alternar radiadores" tooltip.town_map.plants = "Alternar plantas" tooltip.town_map.heat_dec = "Baixar aquecimento" tooltip.town_map.close = "Fechar mapa da cidade" tooltip.graphs.cures = "Alternar curas" tooltip.graphs.reputation = "Alternar o valor do hospital" tooltip.graphs.close = "Fechar tela de gráficos" tooltip.graphs.balance = "Alternar saldo" tooltip.graphs.wages = "Alternar salários" tooltip.graphs.visitors = "Alternar visitantes" tooltip.graphs.money_in = "Alternar crédito" tooltip.graphs.deaths = "Alternar mortes" tooltip.graphs.scale = "Tabela de gráficos" tooltip.graphs.money_out = "Alternar gastos" tooltip.toolbar.policy = "Normas" tooltip.toolbar.status = "Condiçäo" tooltip.toolbar.research = "Pesquisa" tooltip.toolbar.hire = "Contratar funcionários" tooltip.toolbar.bank_button = "Aperte o botäo esquerdo para o diretor do banco e o direito para o saldo bancário" tooltip.toolbar.charts = "Gráficos" tooltip.toolbar.balance = "O seu saldo" tooltip.toolbar.edit = "Editar salas e objetos" tooltip.toolbar.date = "A data" tooltip.toolbar.rooms = "Construir salas" tooltip.toolbar.staff_list = "Gerenciamento de funcionários" tooltip.toolbar.town_map = "Mapa da cidade" tooltip.toolbar.casebook = "Ficha clínica" tooltip.toolbar.reputation = "A sua reputaçäo" tooltip.toolbar.objects = "Colocar objetos de corredor" tooltip.queue_window.patient_dropdown.reception = "Enviar paciente à Recepçäo" tooltip.queue_window.patient_dropdown.hospital_1 = "Enviar o paciente para outro hospital" tooltip.queue_window.patient_dropdown.send_home = "Dar alta ao paciente" tooltip.queue_window.patient_dropdown.hospital_3 = "Enviar o paciente para outro hospital" tooltip.queue_window.patient_dropdown.hospital_2 = "Enviar o paciente para outro hospital" tooltip.queue_window.close = "Fecha esta caixa de diálogo" tooltip.queue_window.num_expected = "Número de pacientes que a recepcionista calcula que logo faräo fila" tooltip.queue_window.front_of_queue = "Arraste um paciente para este ícone para colocá-lo no início da fila" tooltip.queue_window.dec_queue_size = "Reduzir o máximo do tamanho da fila" tooltip.queue_window.num_in_queue = "Número de pacientes em fila" tooltip.queue_window.num_entered = "Número de pacientes que foram tratados nesta consulta até agora" tooltip.queue_window.max_queue_size = "Tamanho máximo da fila que permite a recepcionista" tooltip.queue_window.inc_queue_size = "Aumentar o máximo do tamanho da fila" tooltip.queue_window.end_of_queue = "Arraste um paciente para este ícone para colocá-lo no final da fila" tooltip.queue_window.patient = "Arraste um paciente para colocá-lo na fila. Aperte o botäo direito sobre um paciente para mandá-lo para a fila ou para um hospital rival" tooltip.bank_manager.graph = "Gráfico dos pagamentos esperados de %s" tooltip.bank_manager.close = "Fechar tela do gerente do banco" tooltip.bank_manager.balance = "O seu saldo bancário" tooltip.bank_manager.borrow_5000 = "Pedir $5000 ao banco" tooltip.bank_manager.hospital_value = "Valor atual do seu hospital" tooltip.bank_manager.insurance_owed = "Quantidade de dinheiro que lhe deve %s" tooltip.bank_manager.interest_payment = "Pagamentos dos juros mensais" tooltip.bank_manager.repay_5000 = "Devolver $5000 ao banco" tooltip.bank_manager.graph_return = "Voltar para a tela anterior" tooltip.bank_manager.interest_rate = "Taxa de juro anual" tooltip.bank_manager.inflation_rate = "Taxa de inflaçäo anual" tooltip.bank_manager.show_graph = "Mostra o gráfico dos pagamentos esperados de %s" tooltip.bank_manager.current_loan = "Empréstimos pendentes" tooltip.jukebox.play = "Ligar máquina de discos" tooltip.jukebox.stop = "Parar máquina de discos" tooltip.jukebox.close = "Fechar máquina de discos" tooltip.jukebox.fast_forward = "Avançar rápido da máquina de discos" tooltip.jukebox.rewind = "Rebobinar máquina de discos" tooltip.jukebox.current_title = "Máquina de discos" tooltip.jukebox.loop = "Funcionamento contínuo da máquina de discos" tooltip.build_room_window.cost = "Preço da consulta selecionada" tooltip.build_room_window.room_classes.treatment = "Selecione consultas de clínica geral" tooltip.build_room_window.room_classes.facilities = "Selecione consultas especiais" tooltip.build_room_window.room_classes.diagnosis = "Selecione consultas de diagnóstico" tooltip.build_room_window.room_classes.clinic = "Selecione consultas de especialidade médica" tooltip.build_room_window.close = "Sair desta caixa de diálogo e voltar para o jogo" tooltip.hire_staff_window.surgeon = "Cirurgiäo" tooltip.hire_staff_window.psychiatrist = "Psiquiatra" tooltip.hire_staff_window.qualifications = "Outras habilidades do médico" tooltip.hire_staff_window.receptionists = "Ver as recepcionistas que pode contratar" tooltip.hire_staff_window.hire = "Contratar pessoa" tooltip.hire_staff_window.nurses = "Ver as enfermeiras que pode contratar" tooltip.hire_staff_window.doctor_seniority = "Experiência médica (Residente, Médico, Consultor)" tooltip.hire_staff_window.cancel = "Cancelar" tooltip.hire_staff_window.researcher = "Pesquisador" tooltip.hire_staff_window.prev_person = "Ver pessoa anterior" tooltip.hire_staff_window.salary = "Salário" tooltip.hire_staff_window.staff_ability = "Qualificaçäo do pessoal" tooltip.hire_staff_window.doctors = "Ver os médicos que pode contratar" tooltip.hire_staff_window.next_person = "Ver pessoa seguinte" tooltip.hire_staff_window.handymen = "Ver os faz-tudo que pode contratar" tooltip.handyman_window.center_view = "Enfocar o faz-tudo" tooltip.handyman_window.close = "Cancelar caixa de diálogo" tooltip.handyman_window.sack = "Despedir" tooltip.handyman_window.name = "Nome do faz-tudo" tooltip.handyman_window.pick_up = "Apanhar" tooltip.handyman_window.prio_litter = "Aumentar a prioridade do faz-tudo para a limpeza" tooltip.handyman_window.ability = "Qualificaçäo" tooltip.handyman_window.prio_machines = "Aumentar a prioridade do faz-tudo para reparar as máquinas" tooltip.handyman_window.salary = "Salário" tooltip.handyman_window.face = "Face do faz-tudo" tooltip.handyman_window.happiness = "Satisfaçäo" tooltip.handyman_window.tiredness = "Cansaço" tooltip.handyman_window.prio_plants = "Aumentar a prioridade do faz-tudo para regar as plantas" tooltip.window_general.cancel = "Cancelar" tooltip.window_general.confirm = "Confirmar" adviser.earthquake.ended = "Nossa! Acreditei que ia ser o pior de todos! Alcançou um %d na Escala Richter." adviser.earthquake.damage = "Por causa do terremoto há %d máquinas danificadas e %d pessoas feridas no hospital." adviser.earthquake.alert = "Perigo de terremoto! As suas máquinas podem danificar-se durante o terremoto se näo tiverem uma boa manutençäo." adviser.staff_place_advice.only_psychiatrists = "Os Médicos só podem trabalhar em uma sala de psiquiatria se estiverem qualificados para isso." adviser.staff_place_advice.doctors_cannot_work_in_room = "Os Médicos näo podem trabalhar em %s" adviser.staff_place_advice.only_researchers = "Os Médicos só podem trabalhar em um Centro de Pesquisa se estiverem qualificados para isso." adviser.staff_place_advice.nurses_cannot_work_in_room = "As Enfermeiras näo podem trabalhar em %s" adviser.staff_place_advice.only_surgeons = "Os Médicos podem trabalhar em um sala de operaçöes só se estiverem qualificados para isso." adviser.staff_place_advice.receptionists_only_at_desk = "As Recepcionistas só podem trabalhar na Recepçäo." adviser.staff_place_advice.only_doctors_in_room = "Apenas Médicos podem trabalhar em %s" adviser.staff_place_advice.only_nurses_in_room = "Só Enfermeiras podem trabalhar na %s" adviser.competitors.staff_poached = "Um dos seus funcionários recebeu uma boa oferta de trabalho de um outro hospital." adviser.competitors.land_purchased = "%s acaba de comprar terrenos." adviser.competitors.hospital_opened = "%s, da concorrência, abriu um hospital na área." adviser.epidemic.hurry_up = "Se näo acabar em seguida com esta epidemia, terá muitos problemas. Despacha-se!" adviser.epidemic.multiple_epidemies = "Parece que tem mais de uma epidemia de uma vez. Isto poderia ser desastroso, sendo assim faz algo rapidamente." adviser.epidemic.serious_warning = "Esta doença contagiosa começa a ser grave. Tem que fazer algo brevemente!" adviser.warnings.patients_unhappy = "Os pacientes näo gostam do seu hospital. Deveria fazer algo para melhorá-lo." adviser.warnings.too_much_litter = "Há um problema de limpeza. Mais faz-tudo é a soluçäo." adviser.warnings.patients_very_thirsty = "Os pacientes têm muita sede. Se näo colocar logo algumas máquinas de bebidas, as pessoas iräo embora do seu hospital para tomar algum refresco." adviser.warnings.queue_too_long_at_reception = "Tem muitos pacientes à espera de reservas para as consultas na recepçäo. Coloque outra Recepçäo e contrate outra Recepcionista." adviser.warnings.patients_thirsty = "As pessoas começam a ter sede. Talvez deveria colocar máquinas de bebidas." adviser.warnings.nurses_tired = "As suas enfermeiras estäo cansadas. Mande-as descansar agora mesmo." adviser.warnings.patients_too_hot = "Os pacientes têm muito calor. Retire alguns radiadores, baixa a temperatura ou coloca mais máquinas de bebidas." adviser.warnings.patients_thirsty2 = "As pessoas queixam-se de que têm sede. Deveria colocar mais máquinas de bebidas ou colocar mais perto as que já há." adviser.warnings.machines_falling_apart = "Suas máquinas estäo caindo aos pedaços. Chame a manutençäo para que as reparem." adviser.warnings.financial_trouble3 = "O seu saldo tem um aspecto preocupante. Pensa em fazer algo de efetivo. Está a %d do desastre." adviser.warnings.nurses_tired2 = "As suas enfermeiras estäo muito cansadas. Faça descansá-las agora mesmo." adviser.warnings.people_have_to_stand = "Há pacientes de pé. Faça-os sentar já!" adviser.warnings.handymen_tired = "Os seus faz-tudo estäo muito cansados. Mande-os descansar agora mesmo." adviser.warnings.change_priorities_to_plants = "Tem que alterar as prioridades dos seus faz-tudo para que empreguem mais tempo regando as suas plantas." adviser.warnings.staff_tired = "Os seus funcionários estäo incrivelmente cansados. Se näo os deixa descansar um momento em uma Sala de Descanso, alguns poderäo cair de esgotamento." adviser.warnings.some_litter = "Os faz-tudo podem recolher tudo este lixo antes de que se converta em um grave problema." adviser.warnings.cash_low_consider_loan = "As suas finanças andam mal. Já pensou em um empréstimo?" adviser.warnings.reduce_staff_rest_threshold = "Tente alterar o Tempo de Descanso dos funcionários no tela de Normas para que possam descansar mais frequentemente. É só uma sugestäo." adviser.warnings.build_staffroom = "Construa uma Sala de Descanso o mais rápido possível. Os seus funcionários trabalham muito e estäo à beira do colapso. Vamos, seja razoável!" adviser.warnings.many_epidemics = "Parece que tem mais de uma epidemia de uma vez. Isto poderia ser desastroso, sendo assim faz algo rapidamente." adviser.warnings.build_toilets = "Construa um banheiro agora mesmo ou verá algo muito desagradável. E pode imaginar como cheirará o seu hospital." adviser.warnings.staff_overworked = "Os seus empregados têm muito trabalho. Estäo perdendo eficácia e väo começar a cometer erros desastrosos." adviser.warnings.doctors_tired2 = "Os seus médicos estäo cansadíssimos. Precisam descansar imediatamente." adviser.warnings.queues_too_long = "Tem muitos pacientes fazendo fila." adviser.warnings.staff_unhappy = "Os seus funcionários estäo descontentes. Dê-lhes um pagamento extra ou, ainda melhor, construa uma Sala de Descanso para eles. Também poderia alterar o seu tempo de descanso na tela de Normas." adviser.warnings.patient_leaving = "Há um paciente que parte. A causa? A má direçäo e a péssima qualidade do seu pessoal e seus equipamentos." adviser.warnings.patient_stuck = "Alguém ficou bloqueado. Planeje melhor seu hospital." adviser.warnings.receptionists_tired = "As suas recepcionistas estäo extenuadas. Mande-as descansar agora mesmo." adviser.warnings.charges_too_low = "Cobra muito pouco. Terá pacientes no seu hospital, mas näo lhe contribuiräo com muitos ganhos." adviser.warnings.epidemic_getting_serious = "Esta doença contagiosa começa a ser grave. Tem que fazer algo brevemente!" adviser.warnings.patients_really_thirsty = "Os pacientes têm muita sede. Coloque mais máquinas de bebidas ou aproxime as existentes às filas mais compridas." adviser.warnings.patients_annoyed = "As pessoas estäo enormemente desagradadas pelo modo que dirige o seu hospital. E näo pode dizer que näo tenham culpa. Solucione o problema ou confronte as consequências!" adviser.warnings.place_plants3 = "Os pacientes estäo descontentes. Coloque mais plantas para animá-los." adviser.warnings.machinery_deteriorating = "As suas máquinas começam a se deteriorar por uso excessivo. Vigie-as." adviser.warnings.place_plants4 = "Alegra aos pacientes colocando mais plantas." adviser.warnings.money_very_low_take_loan = "O seu saldo bancário é muito baixo. Poderia pedir um empréstimo." adviser.warnings.finanical_trouble2 = "Consiga algum crédito ou estará acabado. Perderá o nível se perder outros %d." adviser.warnings.patients_very_cold = "Os pacientes têm muito frio. Suba o aquecimento ou coloque mais radiadores no seu hospital." adviser.warnings.deal_with_epidemic_now = "Se näo acabar em seguida com esta epidemia, terá muitos problemas. Despacha-se!" adviser.warnings.litter_catastrophy = "O problema da falta de limpeza é grave. Ponha a trabalhar agora mesmo uns quantos faz-tudo!" adviser.warnings.litter_everywhere = "Há sujidade por toda parte. Ponha mais faz-tudo a trabalhar." adviser.warnings.machinery_slightly_damaged = "A maquinaria do seu hospital está um pouco danificada. Näo se esqueça de as reparar." adviser.warnings.patients_getting_hot = "Os pacientes têm muito calor. Baixe o aquecimento ou retire alguns radiadores." adviser.warnings.no_patients_last_month = "No último mês, näo vieram novos pacientes ao seu hospital. Horrível!" adviser.warnings.many_killed = "Matou %d pacientes. Acho que tem que conseguir melhor, näo?" adviser.warnings.build_toilet_now = "Construa já uns banheiros. As pessoas näo aguentam mais. Näo se ria, é grave." adviser.warnings.people_freezing = "Que horrível! Nesta era de aquecimento central, alguns dos seus pacientes estäo se congelando. Coloque radiadores para que sejam aquecidos e suba o aquecimento." adviser.warnings.place_plants_to_keep_people = "As pessoas estäo indo embora. Se colocasse mais planta poderia convencê-los a ficar." adviser.warnings.patients_leaving = "Os pacientes partem. Melhora o seu hospital colocando plantas, bancos, máquinas de bebidas, etc., para os seus visitantes." adviser.warnings.doctors_tired = "Os seus médicos estäo esgotados. Mande-os descansar agora mesmo." adviser.warnings.charges_too_high = "Os seus preços säo muito altos. Terá grandes benefícios a curto prazo, mas à longo ficará sem pacientes." adviser.warnings.financial_trouble = "Tem sérios problemas financeiros. Arranja a sua financia já! Se perder outros %d, terá arruinado este nível!" adviser.warnings.reception_bottleneck = "Há um gargalo na Recepçäo. Contrate outra Recepcionista." adviser.warnings.pay_back_loan = "Tem dinheiro de sobra. Por que você näo liquida o seu empréstimo?" adviser.warnings.nobody_cured_last_month = "No mês passado, näo houve nenhuma cura." adviser.warnings.queue_too_long_send_doctor = "As filas de %s säo muito longas. Certifique-se de que há um Médico na sala." adviser.warnings.staff_too_hot = "Os seus empregados têm muito calor. Baixe a temperatura ou retire alguns radiadores das suas consultas." adviser.warnings.place_plants2 = "Os pacientes estäo indo. Com mais planta poderia conseguir que ficassem mais tempo." adviser.warnings.doctor_crazy_overwork = "Oh, näo! Um dos seus médicos ficou louco pelo excesso de trabalho. Irá se recuperar se descansar agora mesmo." adviser.warnings.machinery_damaged = "Repare, o mais brevemente possível, as suas máquinas. Näo falta muito para que comecem a cair aos a pedaços." adviser.warnings.more_benches = "Poderia colocar mais bancos. Os doentes protestam por terem que estar de pé." adviser.warnings.bankruptcy_imminent = "Ei! Vai ficar sem máquinas. Tome cuidado!" adviser.warnings.need_toilets = "Os pacientes precisam de casas de banho. Coloca-as em um lugar acessível." adviser.warnings.more_toilets = "Você precisa de mais banheiros. As pessoas näo aguentam mais." adviser.warnings.plants_dying = "As suas plantas estäo secando. Precisam de água. Consiga mais faz-tudo para que cuidem disso. Os pacientes näo gostam das plantas mortas." adviser.warnings.people_did_it_on_the_floor = "Alguns dos seus pacientes näo podem aguentar mais. Alguém vai ter que limpar sem descanso." adviser.warnings.need_staffroom = "Construa uma sala de descanso para que os seus empregados possam descansar." adviser.warnings.plants_thirsty = "Tem que cuidar das suas plantas. Estäo secando." adviser.warnings.too_many_plants = "Tem muitas plantas. Isto parece uma selva." adviser.warnings.receptionists_tired2 = "As suas recepcionistas estäo esgotadas. Deixa que descansem agora mesmo." adviser.warnings.machine_severely_damaged = "%s está prestes a se quebrar." adviser.warnings.machinery_very_damaged = "É uma emergência! Faça com que que um faz-tudo repare as sas máquinas em seguida. Estäo a ponto de explodir!" adviser.warnings.hospital_is_rubbish = "As pessoas näo têm dúvidas em dizer que o seu hospital é uma porcaria. Já sabe que logo iräo queixar-se a outra parte." adviser.warnings.handymen_tired2 = "Os seus faz-tudo estäo destroçados. Mande-os descansar imediatamente." adviser.warnings.machinery_damaged2 = "Deve contratar um faz-tudo para reparar as suas máquinas rapidamente." adviser.warnings.staff_very_cold = "O pessoal reclama do frio. Suba o aquecimento ou coloque mais radiadores." adviser.warnings.desperate_need_for_watering = "Necessita desesperadamente contratar um faz-tudo para que cuide das suas plantas." adviser.warnings.staff_unhappy2 = "Os seus funcionários, no geral, estäo descontentes. Logo, pediräo mais dinheiro." adviser.staff_advice.too_many_nurses = "Está contratando muitas enfermeiras." adviser.staff_advice.need_handyman_litter = "Os pacientes estäo sujando o seu hospital. Contrate uma faz-tudo para se encarregar da limpeza." adviser.staff_advice.need_nurses = "Contrate mais enfermeiras. Na enfermaria e na farmácia fazem falta enfermeiras." adviser.staff_advice.need_doctors = "Você precisa de mais médicos. Tente colocar os seus melhores médicos nas consultas com mais pacientes." adviser.staff_advice.too_many_doctors = "Tem muitos médicos. Alguns estäo desocupados neste momento." adviser.staff_advice.need_handyman_machines = "Terá que contratar um faz-tudo se quiser que as máquinas do seu hospital funcionem." adviser.staff_advice.need_handyman_plants = "Contrate um faz-tudo para regar as plantas." adviser.praise.few_have_to_stand = "Quase ninguém fica de pé no seu hospital. Os seus pacientes estäo contentes." adviser.praise.patients_cured = "%d pacientes curados." adviser.praise.plants_are_well = "Muito bem. Está cuidando bem das suas plantas. Estupendo." adviser.praise.plenty_of_benches = "Há muitos assentos, assim näo há problema." adviser.praise.plants_thriving = "Muito bem. As suas plantas estäo muito viçosas. Têm um aspecto maravilhoso. Mantenha-as assim e poderá ganhar um prêmio por isto." adviser.praise.many_benches = "Agora os seus pacientes têm suficientes assentos. Muito bem!" adviser.praise.many_plants = "Fantástico! Tem muitas plantas. Os seus pacientes agradeceräo isso." adviser.surgery_requirements.need_surgeons_ward_op = "Tem que contratar dois cirurgiöes e construir uma enfermaria e uma sala de operaçöes para realizar operaçöes." adviser.surgery_requirements.need_surgeon_ward = "Tem que contratar um outro cirurgiäo e construir uma enfermaria para poder realizar operaçöes." adviser.multiplayer.objective_completed = "Completou o objetivo. Felicidades!" adviser.multiplayer.objective_failed = "Näo conseguiu completar o objetivo." adviser.multiplayer.everyone_failed = "Todos falharam ao satisfazer aquele último objetivo." adviser.multiplayer.players_failed = "O(s) seguinte jogador(es) falharam ao alcançar o último objetivo: " adviser.multiplayer.poaching.not_interested = "Ha! Näo lhes interessa trabalhar para si. Estäo contentes onde estäo." adviser.multiplayer.poaching.already_poached_by_someone = "Nem pensar! Alguém trate de pescar essa pessoa!" adviser.multiplayer.poaching.in_progress = "Eu o informarei se esta pessoa deseja trabalhar pra você." adviser.research.new_drug_researched = "Um novo medicamento para curar %s foi descoberto." adviser.research.new_machine_researched = "Pesquisou com êxito %s." adviser.research.drug_fully_researched = "Pesquisou 100%% %s." adviser.research.drug_improved = "O seu Centro de Pesquisa melhorou o medicamento para %s." adviser.research.new_available = "Já pode utilizar um novo %s." adviser.research.machine_improved = "O Centro de Pesquisa trouxe melhorias para %s." adviser.research.autopsy_discovered_rep_loss = "Foi descoberta uma máquina de autoautópsias. Aguarde uma reaçäo desfavorável das pessoas." adviser.information.emergency = "Há uma emergência! Mexa-se! Mexa-se! Mexa-se!" adviser.information.handyman_adjust = "Pode conseguir que o faz-tudo limpe melhor se estabelecer as suas prioridades." adviser.information.promotion_to_specialist = "Um dos seus Médicos foi promovido para %s." adviser.information.pay_rise = "Um funcionário ameaça se demitir. Pode atender a sua petiçäo ou despedi-lo. Clique no último ícone da esquerda para ver quem deseja demitir." adviser.information.first_death = "Acabou de matar o primeiro paciente. Como se sente?" adviser.information.fax_received = "O ícone que acaba de aparecer no canto inferior esquerdo do tela alerta-lhe sobre uma informaçäo importante ou de que tem que tomar uma decisäo." adviser.information.promotion_to_consultant = "Um dos seus MEDICOS converteu-se em CONSULTOR." adviser.information.patient_abducted = "Os alienígenas raptaram um dos seus pacientes." adviser.information.vip_arrived = "Cuidado! %s acaba de chegar para visitar o seu hospital! Faça com que tudo funcione bem para lhe agradar." adviser.information.extra_items = "O equipe está mais confortável e melhora o seu rendimento se colocar objetos complementares nas salas." adviser.information.epidemic_health_inspector = "O Ministério da Saúde soube de que tem uma epidemia. Prepare-se para receber brevemente a visita de um Inspetor de Saúde." adviser.information.first_cure = "Muito bem! Acaba de curar o seu primeiro paciente." adviser.information.epidemic = "Há uma doença contagiosa no seu hospital. Tem que solucioná-la em seguida!" adviser.information.patient_leaving_too_expensive = "Um paciente está indo embora sem pagar %s. É muito dinheiro." adviser.information.place_windows = "Se colocar janelas, as salas teräo mais luz e os seus empregados estaräo mais contentes." adviser.information.initial_general_advice.first_patients_thirsty = "No seu hospital as pessoas têm sede. Coloque máquinas de bebidas." adviser.information.initial_general_advice.epidemic_spreading = "Há uma doença contagiosa no seu hospital. Tente curar as pessoas infectadas antes que elas possam ir embora." adviser.information.initial_general_advice.research_now_available = "Construiu o seu primeiro centro de pesquisa. Agora pode acessar a tela de pesquisa." adviser.information.initial_general_advice.autopsy_available = "Foi inventada uma máquina de autoautópsias. Com ela, poderá se livrar dos pacientes problemáticos e investigar os seus restos. Tome cuidado, o uso desta máquina suscita muita polêmica." adviser.information.initial_general_advice.rats_have_arrived = "Os ratos invadiram o seu hospital. Tente eliminá-los com o mouse." adviser.information.initial_general_advice.surgeon_symbol = "Os médicos especializados em cirurgia levam o símbolo: {" adviser.information.initial_general_advice.machine_needs_repair = "Há uma máquina que precisa ser reparada. Encontre a máquina e aperte sobre ela. Em seguida, aperte no botäo do faz-tudo." adviser.information.initial_general_advice.research_symbol = "Os médicos pesquisadores levam o símbolo: }" adviser.information.initial_general_advice.decrease_heating = "As pessoas têm muito calor no seu hospital. Baixe o aquecimento. Isto é feito na tela de mapa da cidade." adviser.information.initial_general_advice.taking_your_staff = "Alguém está subornando a sua equipe. Terá que discutir com eles para que fiquem." adviser.information.initial_general_advice.first_VIP = "Vai receber o seu primeiro visitante VIP. Assegure-se de que o VIP näo veja nada sujo nem nenhum paciente descontente." adviser.information.initial_general_advice.increase_heating = "As pessoas têm frio. Ligue o aquecimento na tela de mapa da cidade." adviser.information.initial_general_advice.psychiatric_symbol = "Os médicos especializados em psiquiatria levam o símbolo: |" adviser.information.initial_general_advice.first_epidemic = "Há uma epidemia no seu hospital! Decida se quer tratá-la ou liberar ela." adviser.information.initial_general_advice.place_radiators = "As pessoas têm frio no seu hospital. Pode colocar mais radiadores selecionando-os no menu de mobiliário do corredor." adviser.information.initial_general_advice.first_emergency = "Os pacientes de emergência têm uma luz azul que pisca sobre a sua cabeça. Cure eles antes de que morram ou de que o tempo limite se esgote." adviser.information.promotion_to_doctor = "Um dos seus RESIDENTES converteu-se em um MEDICO." adviser.information.larger_rooms = "Se fizer salas espaçosas, os seus funcionários se sentiräo mais importantes e melhoraräo o seu rendimento." adviser.goals.win.value = "AUMENTE O VALOR DO SEU HOSPITAL EM %d" adviser.goals.win.reputation = "AUMENTE A SUA REPUTAÇAO EM %d PARA SATISFAZER O NIVEL DO CRITÉRIO PARA GANHAR" adviser.goals.win.cure = "Cure mais %d paciente(s) e terá curado os suficientes para ganhar este nível." adviser.goals.win.money = "Você precisa de outros %d para alcançar o critério financeiro deste nível." adviser.build_advice.door_not_reachable = "As pessoas näo poderäo passar por essa porta. Pense sobre isto." adviser.build_advice.blueprint_would_block = "Essa marca azul tapará outras consultas. Tente alterar o tamanho ou coloque em outro local!" adviser.build_advice.placing_object_blocks_door = "Se colocar este objeto aí, impedirá que se possa acessar alguma porta." adviser.build_advice.blueprint_invalid = "Esta marca azul näo é válida." adviser.level_progress.three_quarters_won = "Falta 75%% para superar este nível." adviser.level_progress.reputation_good_enough = "De acordo, a sua reputaçäo é muito boa para ganhar este nível, mantenha acima de %d e resolva outros problemas para terminar." adviser.level_progress.nearly_won = "Falta muito pouco para superar este nível." adviser.level_progress.hospital_value_enough = "Mantenha o valor do seu hospital acima de %d e atenda os seus outros problemas para ganhar o nível." adviser.level_progress.improve_reputation = "Você precisa melhorar a sua reputaçäo em %d para ter uma oportunidade de ganhar o nível." adviser.level_progress.halfway_won = "Falta 50%% para superar este nível." adviser.level_progress.close_to_win_increase_value = "Está próximo da vitória. Aumente o valor do seu hospital em $%d." adviser.level_progress.another_patient_cured = "Muito bem! Outro paciente curado. Isto faz um total de %d curados." adviser.level_progress.nearly_lost = "Falta muito pouco para perder este nível." adviser.level_progress.three_quarters_lost = "Falta 75%% para perder este nível." adviser.level_progress.dont_kill_more_patients = "Näo pode permitir deixar que morram mais pacientes!" adviser.level_progress.cured_enough_patients = "Curou muitos pacientes, mas precisa manter o seu hospital em melhor estado para ganhar o nível." adviser.level_progress.financial_criteria_met = "Tem satisfeito o critério financeiro deste nível. Agora mantenha o seu saldo acima de %d, enquanto assegura de que o hospital funcione eficazmente." adviser.level_progress.halfway_lost = "Falta 50%% para perder este nível." adviser.level_progress.another_patient_killed = "Oh, näo! Matou outro paciente. Agora há um total de %d mortes." adviser.vomit_wave.started = "Parece que tem um vírus de vômitos no seu hospital. Isto näo teria acontecido se o tivesse mantido limpo. Talvez devesse contratar um faz-tudo." adviser.vomit_wave.ended = "Ufa! Parece que o vírus que causou essa epidemia de vômitos está controlado. No futuro, mantenha o seu hospital limpo." adviser.placement_info.staff_cannot_place = "Näo pode colocar este funcionário aqui. Desculpe." adviser.placement_info.room_cannot_place_2 = "Näo pode colocar a consulta aqui." adviser.placement_info.object_cannot_place = "Eh! Näo pode colocar aqui este objeto." adviser.placement_info.object_can_place = "Pode colocar este objeto aqui." adviser.placement_info.door_can_place = "Se quiser, pode colocar a porta aqui." adviser.placement_info.reception_cannot_place = "Näo pode colocar a Recepçäo aqui." adviser.placement_info.door_cannot_place = "Desculpe, mas näo pode colocar aqui a porta." adviser.placement_info.window_cannot_place = "Ah! Näo pode colocar a janela aqui." adviser.placement_info.staff_can_place = "Pode colocar este funcionário aqui." adviser.placement_info.window_can_place = "Pode colocar a janela aqui. Está bem." adviser.placement_info.reception_can_place = "Näo pode colocar aqui a Recepçäo." adviser.placement_info.room_cannot_place = "Näo pode colocar aqui a consulta." adviser.boiler_issue.maximum_heat = "A caldeira do poräo ficou danificada. Os radiadores estäo no máximo. As pessoas väo derreter! Seria bom que colocasse mais máquinas de bebidas." adviser.boiler_issue.minimum_heat = "Ah, aí está! A caldeira do poräo ficou danificada. Parece que dentro de pouco tempo as pessoas väo congelar no seu hospital!" adviser.boiler_issue.resolved = "Boas notícias. A caldeira e os radiadores voltaram a funcionar corretamente. Os seus pacientes e os seus funcionários desfrutaräo de uma boa temperatura." adviser.tutorial.build_reception = "Você precisa de uma Recepçäo no seu hospital. Escolha uma do menu de mobiliário do corredor." adviser.tutorial.click_and_drag_to_build = "Aperte o botäo esquerdo e arraste para desenhar a sala." adviser.tutorial.window_in_invalid_position = "Esta janela está mal colocada. Tente colocá-la em outro lugar da parede." adviser.tutorial.room_in_invalid_position = "Esta marca azul näo é válida. As áreas vermelhas assinalam onde ocupou parte de outro quarto ou das paredes do hospital." adviser.tutorial.choose_receptionist = "Clique no ícone que pisca para contratar a recepcionista que escolheu." adviser.tutorial.place_doctor = "Coloque o médico na consulta." adviser.tutorial.build_gps_office = "É imprescindível um médico para diagnosticar os doentes." adviser.tutorial.select_doctors = "Clique no ícone que pisca para ver os médicos que pode contratar." adviser.tutorial.click_gps_office = "Clique na linha que pisca para escolher uma consulta." adviser.tutorial.prev_receptionist = "Clique no ícone que pisca para ver a recepcionista disponível anterior." adviser.tutorial.information_window = "A funçäo de ajuda proporciona toda a informaçäo sobre a consulta que acaba de construir." adviser.tutorial.place_receptionist = "Mova a recepcionista e coloque-a no seu lugar." adviser.tutorial.confirm_room = "Clique no ícone que pisca para abrir a consulta ou cancelar para voltar para passo anterior." adviser.tutorial.doctor_in_invalid_position = "Näo pode colocar o médico aqui." adviser.tutorial.place_objects = "Aperte o botäo esquerdo para colocar os objetos, e o direito para fazê-los girar." adviser.tutorial.hire_receptionist = "Agora você precisa de uma recepcionista para atender os seus pacientes." adviser.tutorial.hire_doctor = "Você precisa de um médico para diagnosticar e atender os seus pacientes." adviser.tutorial.room_too_small_and_invalid = "A marca azul é muito pequena e está mal colocada." adviser.tutorial.receptionist_invalid_position = "Näo pode colocar a sua recepcionista aqui." adviser.tutorial.door_in_invalid_position = "Tentou colocar a porta em um lugar incorreto. Tente em outro lugar da grade azul." adviser.tutorial.next_receptionist = "Clique no ícone que pisca para ver a seguinte recepcionista disponível." adviser.tutorial.object_in_invalid_position = "Este objeto está mal colocado. Por favor, coloque em outro lugar ou tente girar." adviser.tutorial.choose_doctor = "Veja as habilidades de cada médico antes de escolher um." adviser.tutorial.rotate_and_place_reception = "Coloque a Recepçäo e aperte o botäo direito do mouse para girá-la." adviser.tutorial.accept_purchase = "Clique com o botäo esquerdo no ícone que pisca para colocá-lo." adviser.tutorial.room_too_small = "A marca azul desta sala é muito pequena. Arraste-a ou aumente o seu tamanho." adviser.tutorial.room_big_enough = "A marca azul é agora suficientemente grande. Se quiser, pode movê-la ou colocá-la." adviser.tutorial.start_tutorial = "Leia as instruçöes. Quando terminar, aperte o botäo esquerdo do mouse para começar o tutorial." adviser.tutorial.place_door = "Mova o mouse ao redor das paredes marcadas de azul para colocar a porta." adviser.tutorial.select_receptionists = "Clique no ícone que pisca para ver os recepcionistas que estäo disponíveis." adviser.tutorial.order_one_reception = "Clique na linha que pisca com o botäo esquerdo do mouse para comprar uma Recepçäo." adviser.tutorial.place_windows = "Coloque as janelas da mesma forma que a porta. Se näo quiser janelas, näo tem que as colocar." adviser.tutorial.select_diagnosis_rooms = "Clique com o botäo esquerdo no ícone que pisca para ver a lista de salas de diagnóstico." adviser.tutorial.reception_invalid_position = "A Recepçäo ficou cinzenta porque näo é possível colocar a¡. Mover ou girá-la." adviser.tutorial.build_pharmacy = "Parabéns! Agora, construa uma farmácia e contrate uma enfermeira para fazer o seu hospital funcionar." adviser.room_requirements.pharmacy_need_nurse = "Contrate uma enfermeira para a Farmácia." adviser.room_requirements.op_need_two_surgeons = "Contrate dois cirurgiöes para que operem na sala de operaçöes." adviser.room_requirements.training_room_need_consultant = "Terá que contratar um especialista para que de conferências nesta sala de formaçäo." adviser.room_requirements.research_room_need_researcher = "Terá que contratar um médico pesquisador para que utilize o centro de pesquisa." adviser.room_requirements.op_need_ward = "Tem que construir uma enfermaria para os pacientes que väo ser operados." adviser.room_requirements.reception_need_receptionist = "Tem que contratar uma recepcionista para atender os seus pacientes." adviser.room_requirements.op_need_another_surgeon = "Tem que contratar um outro cirurgiäo para poder usar o sala de operaçöes." adviser.room_requirements.gps_office_need_doctor = "Contrate um médico para atender a consulta." adviser.room_requirements.ward_need_nurse = "Contrate uma enfermeira para que trabalhe na enfermaria." adviser.room_requirements.psychiatry_need_psychiatrist = "Agora que construiu uma sala de psiquiatria, precisará de um psiquiatra." introduction_texts.level15 = "Bem, estes säo os mecanismos básicos para pôr em funcionamento um hospital.//Os seus Médicos väo precisar de toda a ajuda que possam obter para diagnosticar alguns dos pacientes. Pode ajudá-los construindo outros equipamentos de diagnóstico como a sala de Diagnóstico Geral." introduction_texts.level6 = "Utilize toda a sua capacidade para conseguir um hospital que funcione bem e consiga curar muitos pacientes e que possa tratar qualquer caso que pressentem os doentes.//Está avisado de que o ambiente, aqui, é especialmente propenso a germes e infecçöes. A menos que mantenha uma escrupulosa limpeza na sua instituiçäo, terá que fazer frente a uma série de epidemias entre os pacientes. Procure obter um lucro de $20.000 e fazer o valor do seu hospital superar os $140.000. " introduction_texts.level3 = "Desta vez colocará o seu hospital em uma área rica.//O Ministério da Saúde espera que consiga curar muitos pacientes. Terá que ganhar uma boa reputaçäo para começar, mas uma vez que o hospital comece a funcionar, concentre-se em ganhar todo o dinheiro que puder. Também pode haver emergências. Produzem-se quando chega muita gente que sofre da mesma doença. Se os curar dentro de um prazo determinado, conseguirá aumentar a sua reputaçäo e ganhar um grande extra. Haverá doenças, como o complexo de rei, e deverá ter orçamento para construir uma sala de operaçöes e junto a ela, uma enfermaria. Tem que ganhar $20.000 para superar este nível." introduction_texts.level12 = "Agora irá enfrentar o maior dos desafios. Impressionado com os seus lucros, o Ministério tem uma grande tarefa para você; querem que construa outro magnífico hospital, que tenha um excelente lucro e uma reputaçäo incrível. Também querem que compre todo o terreno que puder, cure tudo (e queremos dizer todas as doenças) e ganhe todos os prêmios. Acha que irá conseguir? Ganhe $650.000, cure 750 pessoas e consiga uma reputaçäo de 800 para ganhar este nível. " introduction_texts.level9 = "Depois de depositar o dinheiro na conta bancária do Ministério e pagar uma nova limousine para o Ministro, agora pode dedicar a criar um bom hospital para cuidar dos doentes e necessitados. Aqui terá um montäo de problemas diferentes. Se o seu pessoal tiver uma boa formaçäo e suficientes consultas, poderá resolver qualquer situaçäo. O seu hospital terá que valer $200.000 e precisará ter $400.000 no banco. Se näo o conseguir näo poderá terminar o nível." introduction_texts.level11 = "Tem a oportunidade de construir o hospital definitivo. Esta é uma área de enorme prestígio e o Ministério quer que este seja o melhor hospital. Esperamos que ganhe muito dinheiro, alcance uma excelente reputaçäo e que se encarregue de todos os casos que sejam apresentados. Este é um trabalho importante. Terá que ser muito hábil para completá-lo. Também deve ter em conta que foram vistos OVNIs na área. Assegure-se de que o seu pessoal esteja preparado para receber algumas visitas inesperadas. O seu hospital terá que alcançar um valor de $240.000, precisará ter $500.000 no banco e uma reputaçäo de 700." introduction_texts.level14 = "Ainda tem mais um desafio: um hospital surpresa totalmente imprevisível. Se conseguir ter êxito, será o vencedor dos vencedores. E näo espere que seja fácil, porque é a tarefa mais difícil que confrontará. Boa sorte!" introduction_texts.level10 = "Além de dever curar todas as doenças que possa haver, o Ministério pede que empregue um pouco de tempo em aumentar a eficácia dos seus remédios.//Houve algumas queixas por parte do D. Salutíssimo, o Cachorro Guardiäo da Saúde, assim deve procurar com que todos os seus remédios sejam extremamente eficazes para ficar bem. Também, assegure-se de que o seu hospital tenha uma reputaçäo irrepreensível. Procure deixar morrer poucos pacientes. Como sugestäo, deveria deixar espaço para um banho gelatinoso. Para ganhar, os seus remédios deveräo ter uma eficácia de, pelo menos, 80%, tem que conseguir uma reputaçäo de 650 e guardar $500.000 no banco." introduction_texts.level5 = "Este será um hospital concorrido, que tratará casos muito variados.//Os seus médicos acabam de sair da faculdade, por isso é fundamental que construa uma sala de formaçäo para que alcancem o nível de formaçäo necessário. Só tem três especialistas para ensinar os seus funcionários inexperientes, entäo faça com que estejam contentes. Tem que ter em conta que o hospital está localizado em cima da falha geológica de San Android. Sempre há risco de terremoto. Os terremotos provocaräo danos importantes nas suas máquinas e alteraräo o bom funcionamento do seu hospital. Aumente a sua reputaçäo até 400 e consiga ganhos de $50.000 para triunfar. Também, cure 200 pacientes. " introduction_texts.level1 = "Bem-vindo ao seu primeiro hospital!//Para fazê-lo funcionar, coloque uma Recepçäo, construa um Consultório e contrate uma recepcionista e um médico. Em seguida, espere que cheguem os pacientes. Seria uma boa ideia construir uma consulta de psiquiatria e contratar um psiquiatra. Uma farmácia e uma enfermeira säo fundamentais para curar os seus pacientes. Cuidado com os casos malignos de cabeça inflada; eles säo solucionados na sala de inflatoterapia. Terá que curar 10 pessoas e assegurar de que a sua reputaçäo näo seja inferior a 200." introduction_texts.level17 = "Um último aviso. Fique de olho na sua Reputaçäo, é o que atrairá pacientes ao seu estabelecimento. Se näo matar muitas pessoas e os mantiver razoavelmente felizes näo deverá ter muitos problemas com este nível!//Agora é com você, boa sorte." introduction_texts.level7 = "Aqui, estará sob a estrita vigilância do Ministério da Saúde, entäo faça com que suas contas reflitam excelentes lucros e aumente a sua reputaçäo.//Näo podemos permitir que haja mortes desnecessárias; Näo beneficiam nada o negócio. Certifique-se de que o seu pessoal esteja em plena forma e de ter todos os equipamentos necessários. Obtenha uma reputaçäo de 600, e um saldo bancário de $200.000." introduction_texts.level4 = "Faça com que todos os seus pacientes estejam contentes, trate-os com a maior eficácia e tente deixar que morram o menos possíveis.//A sua reputaçäo está em jogo, entäo procure aumentá-la o máximo que puder. Näo se preocupe muito com o dinheiro; Irá ganhando à medida que cresce a sua reputaçäo. Também poderá formar os seus médicos para ampliar os seus conhecimentos. Eles poderäo curar os pacientes mais difíceis. Alcance uma reputaçäo acima de 500." introduction_texts.level18 = "" introduction_texts.level16 = "Uma vez que tenha diagnosticado algum dos pacientes, precisará construir salas de tratamento e clínicas para curá-los. Pode começar com uma Farmácia, onde precisará de uma Enfermeira que distribua os remédios." introduction_texts.level13 = "A sua incrível habilidade como diretor do hospital atraiu a atençäo da Divisäo Secreta Especial do Serviço Secreto Especial. Tenho um trabalho especial para você. Há um hospital infestado de ratos que precisa de um exterminador eficiente. Você deve matar todos os ratos que puder antes de que o pessoal de Manutençäo limpe toda a sujeira. Acha que é apto para esta missäo?" introduction_texts.level8 = "Só depende de você construir o hospital mais rentável e eficiente possível.//As pessoas, por aqui säo bastante ricas, entäo tente arrecadar o máximo possível. Lembre-se que curar as pessoas é uma coisa muito bonita, mas o que PRECISAMOS de verdade é do dinheiro delas. Arranque todo o dinheiro destes doentes. Acumule a enorme quantia de $300.000 para completar este nível. " humanoid_name_starts[1] = "GOLD" humanoid_name_starts[2] = "HIGH" humanoid_name_starts[3] = "AND" humanoid_name_starts[4] = "BEN" humanoid_name_starts[5] = "BAN" humanoid_name_starts[6] = "BILL" humanoid_name_starts[7] = "WY" humanoid_name_starts[8] = "WAT" humanoid_name_starts[9] = "POD" humanoid_name_starts[10] = "KING" humanoid_name_starts[11] = "BAR" humanoid_name_starts[12] = "PET" humanoid_name_starts[13] = "MAN" humanoid_name_starts[14] = "BOY" humanoid_name_starts[15] = "WAR" humanoid_name_starts[16] = "JACK" humanoid_name_starts[17] = "CRAB" humanoid_name_starts[18] = "FISH" humanoid_name_starts[19] = "WATER" humanoid_name_starts[20] = "MIL" humanoid_name_starts[21] = "BY" humanoid_name_starts[22] = "FEN" humanoid_name_starts[23] = "RICH" humanoid_name_starts[24] = "SCOT" humanoid_name_starts[25] = "BUR" humanoid_name_starts[26] = "PIKE" humanoid_name_starts[27] = "CUR" humanoid_name_starts[28] = "WHIT" humanoid_name_starts[29] = "BINN" humanoid_name_starts[30] = "BONN" humanoid_name_starts[31] = "POG" humanoid_name_starts[32] = "WRIGHT" humanoid_name_starts[33] = "KER" policy.diag_procedure = "Procedimento de diagnóstico" policy.header = "NORMAS DO HOSPITAL" policy.staff_leave_rooms = "Abandonar as consultas" policy.staff_rest = "Enviar os funcionários para descansar" policy.diag_termination = "Conclusäo do diagnóstico" policy.sliders.send_home = "ENVIA PARA CASA" policy.sliders.guess = "TENTAR CURA" policy.sliders.stop = "PARAR PROCESSO" policy.sliders.staff_room = "IR DESCANSAR" menu_display.mcga_lo_res = " BAIXA RESOLUÇAO MCGA " menu_display.shadows = " SOMBRAS " menu_display.high_res = " ALTA RESOLUÇAO " staff_title.surgeon = "Cirurgiäo" staff_title.psychiatrist = "Psiquiatra" staff_title.general = "Geral" staff_title.junior = "Residente" staff_title.researcher = "Pesquisador" staff_title.consultant = "Consultor" staff_title.nurse = "Enfermeira" staff_title.doctor = "Médico" staff_title.receptionist = "Recepcionista" bank_manager.insurance_owed = "Dívida do seguro" bank_manager.interest_rate = "Juros" bank_manager.interest_payment = "Pagamento de juros" bank_manager.statistics_page.date = "Data" bank_manager.statistics_page.money_out = "Débito" bank_manager.statistics_page.money_in = "Crédito" bank_manager.statistics_page.balance = "Saldo" bank_manager.statistics_page.current_balance = "Saldo atual" bank_manager.statistics_page.details = "Detalhes" bank_manager.balance = "Saldo" bank_manager.inflation_rate = "Inflaçäo" bank_manager.hospital_value = "Valor do hospital" bank_manager.current_loan = "Empréstimo pendente" menu_file_save[1] = " JOGO 1 " menu_file_save[2] = " JOGO 2 " menu_file_save[3] = " JOGO 3 " menu_file_save[4] = " JOGO 4 " menu_file_save[5] = " JOGO 5 " menu_file_save[6] = " JOGO 6 " menu_file_save[7] = " JOGO 7 " menu_file_save[8] = " JOGO 8 " insurance_companies[1] = "Seguros Estrelinha" insurance_companies[2] = "Seguros Nacional" insurance_companies[3] = "Mútua Seguril" insurance_companies[4] = "Seguros Ponderoso" insurance_companies[5] = "Geral Seguro" insurance_companies[6] = "Seguro Fiel" insurance_companies[7] = "Holding de Seguros" insurance_companies[8] = "Seguros Leon" insurance_companies[9] = "Joäo e Maria Ltda." insurance_companies[10] = "Seguro Feliz" insurance_companies[11] = "Seguros Sindicato" insurance_companies.out_of_business = "FECHADO" room_descriptions.ward[1] = "Enfermaria//" room_descriptions.ward[2] = "Os pacientes ficam aqui para serem atendidos por uma enfermeira enquanto säo diagnosticados. Permanecem aqui antes de serem operados.//" room_descriptions.ward[3] = "A enfermaria requer uma enfermeira. " room_descriptions.blood_machine[1] = "Sala de Transfusöes//" room_descriptions.blood_machine[2] = "O transfusiômetro é um elemento do equipamento de diagnóstico que revisa as células do sangue do paciente para descobrir do que sofrem.//" room_descriptions.blood_machine[3] = "A sala de transfusöes requer um médico. Também precisa de manutençäo. " room_descriptions.fracture_clinic[1] = "Traumatologia//" room_descriptions.fracture_clinic[2] = "Os pacientes que têm a desgraça de ter fraturas vêm aqui. O removedor de gesso emprega poderosos laser industriais para cortar os gessos mais duros, causando ao paciente só uma pequena dor.//" room_descriptions.fracture_clinic[3] = "A sala de traumatologia requer uma enfermeira. Também precisa de uma manutençäo muito frequente. " room_descriptions.cardiogram[1] = "Sala de Cardiologia//" room_descriptions.cardiogram[2] = "Aqui é diagnosticado e examinado os pacientes antes que voltem para a consulta, onde porá o tratamento.//" room_descriptions.cardiogram[3] = "A sala de cardiologia requer um médico. Também precisa de manutençäo. " room_descriptions.decontamination[1] = "Descontaminaçäo//" room_descriptions.decontamination[2] = "Os pacientes que estiveram expostos à radiaçäo säo enviados rapidamente à consulta de descontaminaçäo. Esta consulta dispöe de uma ducha que os purifica de toda a horrível radioatividade e sujeira.//" room_descriptions.decontamination[3] = "A ducha descontaminadora requer um médico. Também precisa de um faz-tudo que se ocupe da sua manutençäo. " room_descriptions.jelly_vat[1] = "Banho Gelatinoso//" room_descriptions.jelly_vat[2] = "Os pacientes que sofrem da risível doença da gelatinitis devem ir a cambalear-se para a consulta de gelatinitis e ser inundados no banheiro gelatinoso. Isto faz com que se curem de um modo que näo resulta de tudo compreensível para a profissäo médica.//" room_descriptions.jelly_vat[3] = "O banho gelatinoso requer um médico. Também precisa de uma faz-tudo para a sua manutençäo. " room_descriptions.gp[1] = "Sala de Consultório Geral//" room_descriptions.gp[2] = "Esta é a consulta mais importante do seu hospital. Os novos pacientes säo enviados aqui para averiguar o que é que eles têm. Entäo, ou fazem outro diagnóstico ou mandam para uma consulta onde possam ser curados. Possivelmente queira construir outra consulta se a primeira tiver muito trabalho. Quanto maior for a consulta e quanto mais objetos colocar nela, maior prestígio terá o médico. O mesmo acontece com todas as consultas abertas.//" room_descriptions.gp[3] = "O consultório geral requer um médico. " room_descriptions.hair_restoration[1] = "Peloterapia//" room_descriptions.hair_restoration[2] = "Os pacientes que sofrem de calvície seräo enviados ao pêlo-restaurador desta sala. Um médico ligará o pêlo-restaurador, que, rapidamente, implantará na cabeça do paciente ar puro.//" room_descriptions.hair_restoration[3] = "A consulta de peloterapia requer um médico. Também precisa de manutençäo periódica. " room_descriptions.inflation[1] = "Inflatoterapia//" room_descriptions.inflation[2] = "Os pacientes que sofrem a dolorosa doença de terem a cabeça inflada devem ir à sala de inflatoterapia, será desinflada sua cabeça e em seguida vota a ser inflada à pressäo correta.//" room_descriptions.inflation[3] = "A Inflatoterapia requer um médico. Também precisa de um faz-tudo que se ocupe do seu bom funcionamento. " room_descriptions.psych[1] = "Sala de Psiquiatria//" room_descriptions.psych[2] = "Os pacientes que säo diagnosticados com uma doença psiquiátrica têm que ir a uma consulta de psiquiatria para receber o tratamento. Os psiquiatras também podem realizar diagnósticos para saber que tipo de doença que sofrem os pacientes, e se estas säo do tipo mental, podem tratá-los deitando-os no divä.//" room_descriptions.psych[3] = "A sala de psiquiatria requer um médico especializado em psiquiatria. " room_descriptions.operating_theatre[1] = "Sala de Operaçöes//" room_descriptions.operating_theatre[2] = "Esta importante instalaçäo serve para curar um grande número de doenças. A sala de operaçöes tem que ser espaçosa e deve estar bem equipada. É uma parte essencial do seu hospital.//" room_descriptions.operating_theatre[3] = "A sala de operaçöes requer dois médicos especializados em cirurgia. " room_descriptions.no_room[1] = "" room_descriptions.x_ray[1] = "Sala de Raio X//" room_descriptions.x_ray[2] = "O Raio X fotografa o interior do paciente empregando uma radiaçäo especial para ajudar a equipe a descobrir o que acontece.//" room_descriptions.x_ray[3] = "A sala de Raio X requer um médico. Também precisa de manutençäo. " room_descriptions.tv_room[1] = "TV ROOM NOT USED" room_descriptions.staff_room[1] = "Sala de Descanso//" room_descriptions.staff_room[2] = "Os seus funcionários se cansam quando realizam o seu trabalho. Precisam desta sala para descansar e se refrescar. Os funcionários cansados säo mais lentos, pedem mais dinheiro e por fim väo embora. Também cometem mais erros. Vale a pena construir uma sala que tenham muitos passatempos. Assegure-se de que há lugar para vários funcionários ao mesmo tempo. " room_descriptions.slack_tongue[1] = "Laringologia//" room_descriptions.slack_tongue[2] = "Os pacientes que sejam diagnosticados com língua comprida na consulta seräo enviados aqui para receber tratamento. O médico utilizará uma máquina de alta tecnologia para estirar a língua e cortá-la e, com o que o paciente voltará a estar säo.//" room_descriptions.slack_tongue[3] = "A sala de laringologia requer um médico. Também precisa de uma manutençäo muito frequente. " room_descriptions.dna_fixer[1] = "Genética//" room_descriptions.dna_fixer[2] = "Os pacientes que foram manipulados por alienígenas de outro mundo, deve ser substituído o seu DNA nesta sala. O reparador de DNA é um máquina complexa e seria sensato ter um extintor na sala, só por acaso.//" room_descriptions.dna_fixer[3] = "O reparador de DNA requer que um faz-tudo o revise de vez em quando. Também requer um médico especializado em pesquisa para poder empregá-lo. " room_descriptions.training[1] = "Sala de Formaçäo//" room_descriptions.training[2] = "Os seus residentes e médicos podem obter uma valiosa qualificaçäo extra aprendendo nesta sala. Um especialista em cirurgia, pesquisa ou psiquiatria ensinará a sua especialidade aos médicos que recebem formaçäo. Os médicos que já possuem estas especialidades veräo a sua habilidade aumentar enquanto estäo aqui.//" room_descriptions.training[3] = "A sala de formaçäo requer um especialista. " room_descriptions.toilets[1] = "Banheiro//" room_descriptions.toilets[2] = "Os pacientes estäo sentindo um chamado da natureza e precisam se aliviar no conforto de suas instalaçöes de banheiro. Pode construir mais banheiros e pias se esperar muitos visitantes. Em alguns casos, terá que pôr mais banheiros em outras partes do hospital. " room_descriptions.ultrascan[1] = "Ultra Scanner//" room_descriptions.ultrascan[2] = "O ultra scanner é, virtualmente, o mais avançado em equipamentos de diagnóstico. Tem um preço alto mas merece a pena se quiser que o seu hospital realize diagnósticos excelentes.//" room_descriptions.ultrascan[3] = "O ultra scanner requer um médico. Também precisa de manutençäo. " room_descriptions.pharmacy[1] = "Farmácia//" room_descriptions.pharmacy[2] = "Os pacientes que foram diagnosticados e que devem tomar um medicamento devem visitar a farmácia para tomá-lo. Quantos mais remédios forem descobertos e estejam disponíveis, mais concorrida estará a farmácia. Possivelmente queira construir outra farmácia mais para frente.//" room_descriptions.pharmacy[3] = "A farmácia requer uma enfermeira. " room_descriptions.research[1] = "Centro de Pesquisa//" room_descriptions.research[2] = "No centro de pesquisa säo inventados ou melhoram novos remédios e curas. É uma parte essencial do seu hospital, e fará maravilhas para elevar a sua porcentagem de curas.//" room_descriptions.research[3] = "O Centro de Pesquisa requer um médico especializado em pesquisa. " room_descriptions.general_diag[1] = "Sala de Diagnóstico Geral//" room_descriptions.general_diag[2] = "Aqui säo examinados os pacientes que precisam de outro diagnóstico. Se em uma consulta näo descobrir os seus problemas, o diagnosticador geral normalmente consegue. Em seguida, volta a enviar os pacientes para a consulta para analisar os resultados obtidos aqui.//" room_descriptions.general_diag[3] = "A sala de diagnóstico geral requer um médico. " room_descriptions.scanner[1] = "Scanner//" room_descriptions.scanner[2] = "É diagnosticado com precisäo os pacientes empregando um sofisticado scanner. Em seguida, väo para a consulta para que o médico veja o tratamento posterior.//" room_descriptions.scanner[3] = "O scanner requer um médico. Também precisa de manutençäo. " room_descriptions.electrolysis[1] = "Eletrólise//" room_descriptions.electrolysis[2] = "Os pacientes com peludismo säo enviados para esta consulta, onde uma máquina especial de eletrólise elimina os pelos e fecha os poros com eletricidade empregando um composto parecido ao cal.//" room_descriptions.electrolysis[3] = "A sala de eletrólise requer um médico. Também precisa que um faz-tudo faça a sua manutençäo. " staff_list.skill = "NIVEL" staff_list.morale = "MORAL" staff_list.tiredness = "CANSAÇO" staff_list.total_wages = "SALARIOS TOTAIS" menu_file_load[1] = " JOGO 1 " menu_file_load[2] = " JOGO 2 " menu_file_load[3] = " JOGO 3 " menu_file_load[4] = " JOGO 4 " menu_file_load[5] = " JOGO 5 " menu_file_load[6] = " JOGO 6 " menu_file_load[7] = " JOGO 7 " menu_file_load[8] = " JOGO 8 " CorsixTH-0.61/CorsixTH/Lua/languages/czech.lua000077500000000000000000005142521321660673500211610ustar00rootroot00000000000000--[[ Copyright (c) 2011, 2012 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Font("unicode") Language("ÄŒeÅ¡tina", "Czech", "cs", "cze") Inherit("English") high_score = { player = "HRÃÄŒ", pos = "POZ", best_scores = "SÃŇ SLÃVY", killed = "Zabil", categories = { salary = "NEJVYÅ Å Ã VÃPLATA", total_value = "CELKOVà HODNOTA", money = "NEJBOHATÅ Ã", clean = "ÄŒISTOTA", cures = "POÄŒET VYLÉČENÃ", patient_happiness = "USPOKOJENà ZÃKAZNÃKÅ®", deaths = "POÄŒET ÚMRTÃ", cure_death_ratio = "POMÄšR VYLÉČENà ÚMRTÃ", staff_happiness = "USPOKOJENà ZAMÄšSTNANCÅ®", visitors = "NEJVÃCE NÃVÅ TÄšVNÃKÅ®", staff_number = "NEJVÃCE ZAMÄšSTNANCÅ®", }, worst_scores = "SÃŇ HANBY", score = "SKÓRE", } menu_display = { shadows = " STÃNY ", mcga_lo_res = " MCGA NÃZKÉ ROZ ", high_res = " VYSOKÉ ROZ ", } rooms_long = { dna_fixer = "SpravovaÄ DNA", psychiatric = "Psychiatrie", corridors = "Chodby", gps_office = "Kancelář Praktického LékaÅ™e", general = "VÅ¡eobecné", emergency = "Pohotovost", general_diag = "Obecné VyÅ¡etÅ™ení", hair_restoration = "ObnovovaÄ vlasů", scanner = "Skener", research_room = "Výzkumné Odd.", cardiogram = "Kardiogram", toilets = "Toaleta", decontamination = "Dekontaminace", staffroom = "Místnost pro ZamÄ›stnance", ward = "NemocniÄní pokoj", jelly_vat = "Želé Nádrž", x_ray = "Rentgen", inflation = "Nafukovárna", ultrascan = "Ultraskener", blood_machine = "Krevní Stroj", tongue_clinic = "OddÄ›lení Ochablého Jazyka", fracture_clinic = "OddÄ›lení Zlomenin", training_room = "Výuková Místnost", electrolysis = "OddÄ›lení Elektrolýzy", pharmacy = "Lékárna", operating_theatre = "OperaÄní Sál", } menu_file_load = { [1] = " HRA 1 ", [2] = " HRA 2 ", [3] = " HRA 3 ", [4] = " HRA 4 ", [5] = " HRA 5 ", [6] = " HRA 6 ", [7] = " HRA 7 ", [8] = " HRA 8 ", } cheats_window = { warning = "Varování: Pokud budete podvádÄ›t, nedostanete na konci úrovnÄ› žádné bonusové body!", caption = "Cheaty", cheated = { no = "Cheaty použity: Ne", yes = "Cheaty použity: Ano", }, close = "Zavřít", cheats = { lose_level = "Prohrát Úroveň", emergency = "VytvoÅ™it Havárii", end_year = "Konec Roku", money = "Peníze", win_level = "Vyhrát Úroveň", earthquake = "VytvoÅ™it zemÄ›tÅ™esení", all_research = "VÅ¡echen Výzkum", create_patient = "VytvoÅ™it Pacienta", end_month = "Konec MÄ›síce", vip = "VytvoÅ™it VIP", epidemic = "VytvoÅ™it nakažlivého pacienta", toggle_infected = "Zapnout/Vypnout ikony nakažení", }, } menu_file_save = { [1] = " HRA 1 ", [2] = " HRA 2 ", [3] = " HRA 3 ", [4] = " HRA 4 ", [5] = " HRA 5 ", [6] = " HRA 6 ", [7] = " HRA 7 ", [8] = " HRA 8 ", } level_names = { [1] = "ToxiMÄ›sto", [2] = "Ospalá Díra", [3] = "VelkýÄestr", [4] = "Frimpton na MoÅ™i", [5] = "ProsťáÄkov", [6] = "Hnisání na Pláni", [7] = "Zelená Kaluž", [8] = "Lidské PřístaviÅ¡tÄ›", [9] = "Východní mÄ›sto", [10] = "Vejceseslaninou", [11] = "SkÅ™ehotálkov", [12] = "Vykrmené mÄ›sto", [13] = "KámoÅ¡lí", [14] = "Malé Ztlouknutí", [15] = "Zakopej PohÅ™bi", } custom_game_window = { free_build = "Volné stavÄ›ní", caption = "Vlastní Hra", load_selected_level = "Spustit", } menu_debug_overlay = { positions = " POZICE ", parcel = " PARCELA ", byte_6 = " BAJT 6 ", byte_floor = " BAJT PODLAHY ", none = " ŽÃDNà ", flags = " PŘÃZNAKY ", byte_0_1 = " BAJT 0 a 1 ", byte_n_wall = " BAJT S ZDI ", byte_w_wall = " BAJT Z ZDI ", byte_5 = " BAJT 5 ", byte_7 = " BAJT 7 ", heat = " TEPLOTA ", } newspaper = { [1] = { [1] = "HOROR DR Å OKA", [2] = "DIVNà PRAKTICKà LÉKAŘ SI HRAJE NA BOHA", [3] = "Å OK Å PRÃMOÅ TAINA", [4] = "CO BYLO NA LABORATORNÃM STOLE?", [5] = "RAZIE ZASTAVILA RISKANTNà VÃZKUM", }, [2] = { [1] = "OPILà DO NÄšMOTY", [2] = "OPILà CHIRURG", [3] = "HÃŘIVà KONZULTANT", [4] = "CHIRURGICKà ŠTAMPRLE", [5] = "CHIRURG NASÃVÃ", [6] = "CHIRURGICKÉ DUÅ IÄŒKY", }, [3] = { [1] = "CHTIVà CHIRURG", [2] = "DOKTOR KALHOTYDOLÅ®", [3] = "DOKTOR MÃŘà DOLÅ®", [4] = "NEUSPOKOJITELNà CHIRURG", }, [4] = { [1] = "DOKTOR UPRAVUJE ÄŒÃSLA", [2] = "ORGÃN-IZOVANà ZLOÄŒIN", [3] = "OPERACE PŘEKLENUTà BANKY", [4] = "LÉKAŘ DRŽà FONDY", }, [5] = { [1] = "ZDRAVOTNà VÃZKUMNÃK LOUPà HROBY", [2] = "DOKTOR VYPRAZDŇUJE HROBY", [3] = "PŘICHYCEN S MRTVOLOU", [4] = "DEN ZÚČTOVÃNà DR SMRTKY", [5] = "SMRTELNà NEDBALOST", [6] = "DOKTOROVO NALEZIÅ TÄš ODHALENO", }, [6] = { [1] = "DOKTOROVA TAJNà DOHODA!", [2] = "NEPOZORNà MASTIÄŒKÃŘ", [3] = "ZNIÄŒUJÃCà VYÅ ETŘENÃ", [4] = "NEÅ IKOVNà KONZULTANT", }, [7] = { [1] = "DOKTOR NEMà CO DÄšLAT", [2] = "CHIRURG 'OPERUJE' SÃM SEBE", [3] = "MASTURBACE NA HAJZLU", [4] = "DOKTORÅ®V SKANDÃL UCHOPEN", [5] = "MEDIK DÄšLà BORDEL", }, } months = { [1] = "Led", [2] = "Úno", [3] = "BÅ™e", [4] = "Dub", [5] = "KvÄ›", [6] = "ÄŒer", [7] = "ÄŒvc", [8] = "Srp", [9] = "Zář", [10] = "Říj", [11] = "Lis", [12] = "Pro", } dynamic_info = { object = { strength = "Síla %d", queue_size = "Velikost Fronty %d", times_used = "Kolikrát Použito %d", queue_expected = "OÄekávaná Fronta %d", }, patient = { diagnosed = "Diagnóza: %s ", diagnosis_progress = "PrůbÄ›h VyÅ¡etÅ™ení", guessed_diagnosis = "Odhadnutá diagnóza: %s ", actions = { no_diagnoses_available = "Nemáte pro mÄ› žádné další diagnózy - Jdu domů", no_gp_available = "ÄŒekám, až postavíte kancelář praktického lékaÅ™e", cured = "VyléÄen!", waiting_for_treatment_rooms = "ÄŒekám, až pro mÄ› vybudujete místnost k léÄení", fed_up = "NaÅ¡tvaný a odchází", prices_too_high = "VaÅ¡e ceny jsou příliÅ¡ vysoké - Jdu domů", on_my_way_to = "Na cestÄ› do %s", sent_home = "Poslán Domů", dying = "Umírá!", no_treatment_available = "Není pro mÄ› diagnóza - Jdu domů", epidemic_contagious = "Jsem nakažlivý", waiting_for_diagnosis_rooms = "ÄŒekám, až postavíte další diagnostická oddÄ›lení", queueing_for = "Ve frontÄ› pro %s", awaiting_decision = "ÄŒekám na VaÅ¡e rozhodnutí", sent_to_other_hospital = "Odkázán jinam", epidemic_sent_home = "Poslán domů Inspektorem", epidemic_vaccinated = "Již nejsem nakažlivý", }, emergency = "Havárie: %s", }, staff = { psychiatrist_abbrev = "Psych.", tiredness = "Únava", actions = { heading_for = "Mířím do %s", fired = "PropuÅ¡tÄ›n", wandering = "Jen se tak potuluji", waiting_for_patient = "ÄŒekám na pacienta", going_to_repair = "Jdu opravit %s", }, ability = "Dovednost", }, vip = "VIP NávÅ¡tÄ›vník", health_inspector = "Hygienický Inspektor", } calls_dispatcher = { summary = "%d volání; %d pÅ™iÅ™azeno", watering = "Zalévám @ %d,%d", repair = "Opravit %s", staff = "%s - %s", close = "Zavřít", } town_map = { number = "Číslo Pozemku", area = "Oblast Pozemku", not_for_sale = "Nelze Vlastnit", owner = "Vlastník Pozemku", chat = "Chat Podrobností MÄ›sta", for_sale = "Na prodej", price = "Cena Pozemku", } confirmation = { replace_machine = "Jste si jisti, že chcete nahradit %s za %d€?", music_warning = "PÅ™ed zvolením hudby ve formátu mp3 se ujistÄ›te, že máte dostupný soubor smpeg.dll, nebo podobné, pro váš operaÄní systém, jinak ve hÅ™e nebudete mít žádnou hudbu. Chcete pokraÄovat?", abort_edit_room = "PrávÄ› stavíte nebo upravujete místnost. Pokud jsou vÅ¡echny povinné objekty umístÄ›ny, bude dokonÄena, ale jinak bude smazána. PokraÄovat?", quit = "Zvolili jste, že chcete Odejít. Opravdu chcete hru opustit?", needs_restart = "ZmÄ›na tohoto nastavení vyžaduje restart CorsixTH. Jakýkoli neuložený postup bude ztracen. Jste si jisti, že to chcete udÄ›lat?", delete_room = "Opravdu chcete tuto místnost smazat?", sack_staff = "Jste si jisti, že chcete tohoto zamÄ›stnance vykopnout?", restart_level = "Jste si jisti, že chcete úroveň restartovat?", overwrite_save = "Hra už byla do této pozice uložena. Jste si jisti, že ji chcete pÅ™epsat?", return_to_blueprint = "Jste si jisti, že se chcete vrátit do režimu Návrhu?", maximum_screen_size = "Velikost obrazovky, kterou jste zadali, je vyšší než 3000 x 2000. Na tato rozliÅ¡ení lze pÅ™ejít za pÅ™edpokladu, že máte hardware schopný tuto hru udržet v hratelné rychlosti. Opravdu chcete pokraÄovat?", } adviser = { goals = { win = { reputation = "ZvyÅ¡te VaÅ¡i reputaci na %d ke splnÄ›ní kritéria pro výhru úrovnÄ›", money = "PotÅ™ebujete dalších %d ke splnÄ›ní finanÄního kritéria v této úrovni.", cure = "VyleÄte dalších %d pacientů a budete mít dostatek k výhÅ™e v této úrovni.", value = "Musíte zvýšit VaÅ¡i hodnotu nemocnice na %d", }, lose = { kill = "Zabijte dalších %d pacientů a úroveň prohrajete!", }, }, competitors = { staff_poached = "Jeden z VaÅ¡ich zamÄ›stnanců byl ukraden jinou nemocnicí.", land_purchased = "%s právÄ› koupil pozemek.", hospital_opened = "%s otevÅ™el v oblasti konkurenÄní nemocnici.", }, information = { promotion_to_doctor = "Jeden z VaÅ¡ich REZIDENTÅ® se stal DOKTOREM.", pay_rise = "Jeden z VaÅ¡ich zamÄ›stnanců vyhrožuje výpovÄ›dí. Zvolte, jestli s jejich požadavky souhlasíte nebo je vykopnete. KliknÄ›te na ikonu vlevo, abyste vidÄ›li, který zamÄ›stnanec hrozí výpovÄ›dí.", handyman_adjust = "Údržbáři můžou Äistit úÄinnÄ›ji tím, že jim zadáte priority.", emergency = "Je tu pohotovost! Pohyb! Pohyb! POHYB!", epidemic_health_inspector = "Zprávy o Vaší epidemii se donesly na Ministerstvo Zdravotnictví. PÅ™ipravte se na návÅ¡tÄ›vu Hygienického Inspektora.", fax_received = "Ikona, která vyskoÄila vlevo dole na obrazovce, Vás upozorňuje na důležitou informaci nebo rozhodnutí, které musíte udÄ›lat.", larger_rooms = "VÄ›tší místnosti dávají zamÄ›stnancům pocit důležitosti a zlepÅ¡ují jejich výkon.", first_cure = "VýbornÄ›! PrávÄ› jste vyléÄili VaÅ¡eho prvního Pacienta.", promotion_to_specialist = "Jeden z VaÅ¡ich Doktorů byl povýšen na %s.", initial_general_advice = { psychiatric_symbol = "DoktoÅ™i kvalifikování v Psychiatrických záležitostech mají symbol: |", research_symbol = "DoktoÅ™i schopní výzkumu mají symbol: }", surgeon_symbol = "DoktoÅ™i, kteří mohou provádÄ›t operace, mají symbol: {", epidemic_spreading = "Ve Vaší nemocnici je nákaza. Zkuste nakažené lidi vyléÄit dřív, než odejdou.", first_epidemic = "Ve Vaší nemocnici je epidemie! RozhodnÄ›te, zdali to chcete ututlat nebo pÅ™iznat barvu.", autopsy_available = "Auto-Pitevní stroj byl vynalezen. Tímto se můžete zbavit problémových a nevítaných pacientů a udÄ›lat na jejich zbytcích výzkum. Berte na vÄ›domí, že použití tohoto přístroje je vysoce kontroverzní.", first_VIP = "Chystáte se pořádat VaÅ¡i první návÅ¡tÄ›vu VIP. Snažte se zajistit, aby VIP nevidÄ›l nic nehygienického, nebo nÄ›jaké nešťastné pacienty.", place_radiators = "Lidem ve Vaší nemocnici je zima - můžete umístit více radiátorů tím, že je vyberete z menu Položek Chodby.", first_emergency = "Urgentní pacienti mají nad svými hlavami blikající modré svÄ›tlo. VyleÄte je pÅ™edtím, než zemÅ™ou nebo vyprší Äas.", research_now_available = "Vybudovali jste VaÅ¡i první Výzkumnou místnost. Nyní můžete vstoupit do obrazovky Výzkumu.", taking_your_staff = "NÄ›kdo krade Váš personál. Budete muset bojovat, aby tu zůstali.", first_patients_thirsty = "Lidé mají ve Vaší nemocnici žízeň. UmístÄ›te pro nÄ› automat na nápoje.", machine_needs_repair = "Máte stroj, který potÅ™ebuje opravit. NaleznÄ›te tento stroj - bude se z nÄ›ho kouÅ™it - a kliknÄ›te na nÄ›j. Pak kliknÄ›te na tlaÄítko údržbáře.", decrease_heating = "Lidem ve Vaší nemocnici je horko. Snižte úroveň vytápÄ›ní. To se provádí v Obrazovce MÄ›sta.", increase_heating = "Lidem je zima. ZvyÅ¡te teplotu vytápÄ›ní v Obrazovce MÄ›sta.", rats_have_arrived = "VaÅ¡i nemocnici zamoÅ™ily krysy. Zkuste je myší zastÅ™elit.", }, place_windows = "UmístÄ›ním oken bude místnost jasnÄ›jší a zlepší náladu VaÅ¡ich zamÄ›stnanců.", patient_leaving_too_expensive = "Pacient odchází, aniž by zaplatil za %s. Je to příliÅ¡ drahé.", vip_arrived = "Pozor! - %s právÄ› pÅ™ijel na obhlídku Vaší nemocnice! UjistÄ›te se, že vÅ¡e běží hladce, abyste ho potěšily.", epidemic = "Ve Vaší nemocnici máte nakažlivou chorobu. Musíte s tím okamžitÄ› nÄ›co dÄ›lat!", first_death = "PrávÄ› jste zabili svého prvního pacienta. Jaký je to pocit?", extra_items = "DodateÄné vÄ›ci v místnostech VaÅ¡e zamÄ›stnance uklidňuje a zlepÅ¡uje jejich výkon.", promotion_to_consultant = "Jeden z VaÅ¡ich DOKTORÅ® se stal KONZULTANTEM.", patient_abducted = "Jednoho z VaÅ¡ich pacientů unášejí mimozemšťané.", }, praise = { many_plants = "Jak milé. Máte spousty rostlin. VaÅ¡i Pacienti to jistÄ› ocení.", few_have_to_stand = "Jen málokdo musí ve Vaší nemocnici stát. To pacienty potěší.", plenty_of_benches = "Je tu spousta míst k sezení, takže to není problém.", many_benches = "Pacienti teÄ mají dostatek míst k sezení. Bod pro Vás.", plants_thriving = "Velmi dobÅ™e. VaÅ¡e rostliny přímo vzkvétají. Vypadají úžasnÄ›. Jen tak dál a možná za nÄ› vyhrajete ocenÄ›ní.", plants_are_well = "To je hezké. DobÅ™e se staráte o VaÅ¡e rostliny. Milé.", patients_cured = "%d Pacientů vyléÄeno.", }, placement_info = { reception_can_place = "Tuto recepci můžete umístit zde.", window_can_place = "Toto okno můžete umístit zde. Je to v pořádku.", door_can_place = "Pokud chcete, můžete tyto dveÅ™e umístit zde.", reception_cannot_place = "Zde nemůžete tuto Recepci umístit.", object_can_place = "Zde můžete umístit tento objekt.", room_cannot_place = "Zde nemůžete tuto místnost umístit.", room_cannot_place_2 = "Zde nemůžete tuto místnost umístit.", window_cannot_place = "Aha. Zde vlastnÄ› okno umístit nemůžete.", staff_cannot_place = "Zde nemůžete zamÄ›stnance umístit. Je mi líto.", staff_can_place = "Zde můžete zamÄ›stnance umístit. ", door_cannot_place = "Je mi líto, ale zde nemůžete dveÅ™e umístit.", object_cannot_place = "Hej, zde tento objekt umístit nemůžete.", }, surgery_requirements = { need_surgeons_ward_op = "Musíte zamÄ›stnat dva Chirurgy a postavit NemocniÄní Pokoj a také OperaÄní Sál k provedení Operace.", need_surgeon_ward = "Stále potÅ™ebujete zamÄ›stnat dalšího Chirurga a postavit NemocniÄní Pokoj, abyste mohli provádÄ›t Operace.", }, build_advice = { placing_object_blocks_door = "UmístÄ›ním tohoto objektu zde by zabránil lidem dostat se k dveřím.", door_not_reachable = "Lidé by nebyli schopni se ke dveřím dostat. PÅ™emýšlejte o tom.", blueprint_would_block = "Tento návrh by bránil ostatním místnostem. Zkuste zmÄ›nit její velikost, nebo ji pÅ™esunout jinam!", blueprint_invalid = "To není platný návrh.", }, multiplayer = { poaching = { not_interested = "Ha! Nemají zájem pro Vás pracovat - jsou spokojeni tam, kde jsou.", already_poached_by_someone = "To snad ne! NÄ›kdo se už snaží tuto osobu ukrást.", in_progress = "Dám Vám vÄ›dÄ›t, zdali tato osoba bude chtít jít pro Vás pracovat.", }, everyone_failed = "VÅ¡ichni nedokázali splnit poslední úkol. Takže vÅ¡ichni budou hrát dál !", players_failed = "Následující hráÄ(i) nedokázal(i) splnit poslední úkol : ", }, staff_place_advice = { only_doctors_in_room = "Pouze DoktoÅ™i mohou v %s pracovat", only_nurses_in_room = "Pouze Sestry mohou v %s pracovat", receptionists_only_at_desk = "RecepÄní mohou pracovat pouze v Recepci.", nurses_cannot_work_in_room = "Sestry nemohou v %s pracovat", only_researchers = "DoktoÅ™i mohou ve Výzkumném OddÄ›lení pracovat pouze, pokud mají Výzkumnou odbornost.", only_surgeons = "DoktoÅ™i mohou na OperaÄním Sále pracovat pouze, pokud mají Chirurgickou odbornost.", only_psychiatrists = "DoktoÅ™i mohou na Psychiatrii pracovat pouze, pokud mají Psychiatrickou odbornost.", doctors_cannot_work_in_room = "DoktoÅ™i nemohou v %s pracovat", }, tutorial = { start_tutorial = "PÅ™eÄtÄ›te si Úvod do Mise, pak kliknÄ›te levým tlaÄítkem myÅ¡i ke spuÅ¡tÄ›ní výuky.", room_too_small_and_invalid = "Návrh je příliÅ¡ malý a na neplatném místÄ›. Tak jen do toho.", place_receptionist = "PÅ™esuňte RecepÄní a umístÄ›te ji kamkoliv. ChytÅ™e se pÅ™esune ke svému stolu.", next_receptionist = "Toto je první RecepÄní v seznamu. KliknÄ›te levým tlaÄítkem na blikající ikonku k zobrazení další dostupné.", build_reception = "Dobrý den. Nejdříve potÅ™ebuje VaÅ¡e nemocnice Recepci. Vyberte jednu z menu Položek Chodby.", accept_purchase = "KliknÄ›te levým tlaÄítkem, abyste ji zakoupili.", window_in_invalid_position = "Toto okno je v neplatné pozici. Zkuste ho umístit nÄ›kde jinde na zdi, pokud byste byli tak laskavi.", order_one_reception = "KliknÄ›te jednou na blikající řádek levým tlaÄítkem myÅ¡i k objednání jedné Recepce.", place_door = "Pohybujte myší okolo zdí návrhu, abyste umístili dveÅ™e tam, kam je chcete.", object_in_invalid_position = "Tato položka je v neplatné pozici. Prosím, buÄ ji umístÄ›te nÄ›kam jinam, nebo ji otoÄte tak, aby se veÅ¡la.", click_and_drag_to_build = "Pro vybudování kanceláře Praktického LékaÅ™e si nejdříve musíte promyslet, jak bude velká. KliknÄ›te a držte levé tlaÄítko, pÅ™i držení Vaší místnosti, pro zmÄ›nu velikosti.", doctor_in_invalid_position = "Hej! Zde Doktora dát nemůžete.", build_gps_office = "Abyste mohli zaÄít vyÅ¡etÅ™ovat nemoci pacientů, musíte postavit kancelář praktického lékaÅ™e.", prev_receptionist = "KliknÄ›te levým tlaÄítkem na blikající ikonu k zobrazení pÅ™edchozí dostupné RecepÄní.", door_in_invalid_position = "Ah! Snažili jste se umístit dveÅ™e do neplatné polohy. Zkuste nÄ›kde jinde na zdech návrhu.", room_big_enough = "Návrh je nyní dostateÄnÄ› velký. Když uvolníte tlaÄítko myÅ¡i, tak bude umístÄ›na. Stále ji můžete pÅ™emisÅ¥ovat, nebo mÄ›nit její velikost.", select_receptionists = "KliknÄ›te levým tlaÄítkem na blikající ikonu, pro zobrazení, které RecepÄní jsou nyní k dispozici pro práci. To Äíslo na ikonÄ› oznaÄuje, z kolika si musíte vybrat.", hire_doctor = "PotÅ™ebujete Doktora, který bude vyÅ¡etÅ™ovat a léÄit nemocné lidi.", place_doctor = "UmístÄ›te Doktora kdekoliv v nemocnici. Jakmile v kanceláři bude nÄ›kdo k vyÅ¡etÅ™ení, tak tam vyrazí.", choose_doctor = "DobÅ™e se podívejte na dovednosti každého Doktora, než si jednoho zvolíte.", click_gps_office = "KliknÄ›te levým tlaÄítkem na řádek pro vybrání kanceláře praktického lékaÅ™e.", choose_receptionist = "RozhodnÄ›te, která RecepÄní má dobré dovednosti a spravedlivou mzdu a pak kliknÄ›te levým tlaÄítkem na blikající ikonu, abyste ji zamÄ›stnali.", hire_receptionist = "Budete také potÅ™ebovat RecepÄní, aby se postarala o pacienty.", reception_invalid_position = "Recepce je zaÅ¡edivÄ›lá protože je v neplatné pozici. Zkuste ji posunout nebo otoÄit.", rotate_and_place_reception = "KliknÄ›te pravým tlaÄítkem myÅ¡i k otoÄení Recepce a umístÄ›te ji ve Vaší nemocnici levým tlaÄítkem myÅ¡i.", place_windows = "Okna umístÄ›te stejným způsobem jako dveÅ™e. Okna sice nepotÅ™ebujete, ale VaÅ¡i zamÄ›stnanci jsou šťastnÄ›jší, když se mají z Äeho koukat ven.", room_too_small = "Tento návrh místnosti je Äervený, protože je moc malý. RoztáhnÄ›te ho více, aby byl vÄ›tší.", build_pharmacy = "BlahopÅ™eji! Nyní vybudujte Lékárnu a zamÄ›stnejte Sestru, abyste dostali fungující nemocnici.", room_in_invalid_position = "Jejda! Tento návrh je neplatný - Äervené oblasti oznaÄují kde jste pÅ™ekrývá s jinou místností nebo zdmi nemocnice.", select_doctors = "KliknÄ›te levým tlaÄítkem na blikající ikonu, abyste se podívali na Doktory, dostupné k najmutí.", place_objects = "Pravým tlaÄítkem otáÄíte položky místnosti, a levým tlaÄítkem je umisÅ¥ujete.", receptionist_invalid_position = "Zde nemůžete RecepÄní umístit.", select_diagnosis_rooms = "KliknÄ›te levým tlaÄítkem na blikající ikonu pro zobrazení seznamu dostupných diagnostických místností.", information_window = "RámeÄek NápovÄ›dy Vám říká vÅ¡e o té hezké kanceláři, kterou jste právÄ› vybudovali.", confirm_room = "KliknÄ›te levým tlaÄítkem na blikající ikonu k otevÅ™ení Vaší místnosti pro Äinnost nebo kliknÄ›te na ikonku X, abyste Å¡li o krok zpÄ›t.", }, room_requirements = { op_need_two_surgeons = "ZamÄ›stnejte dva Chirurgy, k provádÄ›ní operací na OperaÄním Sále.", op_need_ward = "Musíte vybudovat NemocniÄní Pokoj k PÅ™edoperaÄnímu VyÅ¡etÅ™ení pacientů, než budou moci jít na zákrok.", research_room_need_researcher = "K použití Výzkumné Místnosti musíte zamÄ›stnat Doktora s Výzkumnou odborností.", training_room_need_consultant = "Musíte zamÄ›stnat Konzultanta, který bude ve Výukové Místnosti uÄit.", pharmacy_need_nurse = "Pro tuto Lékárnu musíte zamÄ›stnat Sestru.", reception_need_receptionist = "Musíte zamÄ›stnat RecepÄní, abyste mohli vidÄ›t VaÅ¡e pacienty.", op_need_another_surgeon = "Stále musíte jeÅ¡tÄ› zamÄ›stnat jednoho Chirurga, aby OperaÄní Sál mohl být použitelný.", psychiatry_need_psychiatrist = "Když jste nyní postavili Psychiatrii, musíte také zamÄ›stnat Psychiatra.", ward_need_nurse = "Pro tento NemocniÄní Pokoj musíte zamÄ›stnat Sestru.", gps_office_need_doctor = "PotÅ™ebujete zamÄ›stnat Doktora, aby v této kanceláři pracoval.", }, research = { new_available = "Nový %s je dostupný.", drug_fully_researched = "%s jste vyzkoumali na 100%.", new_drug_researched = "Nový lék pro léÄbu %s byl vynalezen.", drug_improved = "Lék %s byl vylepÅ¡en vaším Výzkumným OddÄ›lením.", autopsy_discovered_rep_loss = "Váš stroj Auto-Pitvy byl objeven. OÄekávejte zápornou reakci Å¡iroké veÅ™ejnosti.", new_machine_researched = "Nový %s byl právÄ› úspěšnÄ› vynalezen.", machine_improved = "%s byl vylepÅ¡en vaším Výzkumným OddÄ›lením.", drug_improved_1 = "Lék %s byl vylepÅ¡en vaším Výzkumným oddÄ›lením." }, cheats = { th_cheat = "BlahopÅ™ejeme, právÄ› jste odemkli cheaty!", roujin_off_cheat = "Roujinova výzva deaktivována.", roujin_on_cheat = "Roujinova výzva aktivována! HodnÄ› Å¡tÄ›stí...", }, room_forbidden_non_reachable_parts = "UmístÄ›ním místnosti zde by zapříÄinilo, že Äásti nemocnice by byly nedostupné.", level_progress = { improve_reputation = "PotÅ™ebujete svoji reputaci zlepÅ¡it o %d, abyste vůbec mÄ›li Å¡anci tuto úroveň vyhrát.", three_quarters_lost = "Jste na tÅ™i ÄtvrtÄ› cesty k prohÅ™e v této úrovni.", another_patient_cured = "VýbornÄ› - další pacient vyléÄen. To je teÄ %d.", three_quarters_won = "Jste na tÅ™i ÄtvrtÄ› cesty k výhÅ™e této úrovnÄ›.", nearly_lost = "Dostáváte se velmi blízko k prohÅ™e této úrovnÄ›.", halfway_won = "Jste tak na půli cesty k výhÅ™e v této úrovni.", another_patient_killed = "Ale ne! Zabili jste dalšího pacienta. To teÄ dÄ›lá %d úmrtí.", dont_kill_more_patients = "VážnÄ› si nemůžete dovolit nechat zemřít další pacienty!", reputation_good_enough = "DobÅ™e, VaÅ¡e reputace je dost vysoká na výhru této úrovnÄ›. Udržujte ji nad %d a vyÅ™eÅ¡te jiné problémy, abyste ji dokonÄili.", nearly_won = "Jste velmi blízko k výhÅ™e v této úrovni.", hospital_value_enough = "Udržte hodnotu své nemocnice nad %d a vÄ›nujte se VaÅ¡im ostatním problémům, abyste úroveň vyhráli.", close_to_win_increase_value = "Dostáváte se velmi blízko k výhÅ™e. ZvyÅ¡te hodnotu Vaší nemocnice o %d.", cured_enough_patients = "Sice jste vyléÄili dostatek pacientů, ale budete muset udÄ›lat ve Vaší nemocnici lepší pořádek, abyste úroveň vyhráli.", financial_criteria_met = "Splnili jste finanÄní kritéria pro tuto úroveň. Nyní udržujte VaÅ¡i bilanci nad %d a zároveň se ujistÄ›te, že VaÅ¡e nemocnice dobÅ™e běží.", halfway_lost = "Jste na půl cesty k prohÅ™e v této úrovni.", }, warnings = { litter_catastrophy = "Situace s odpadky je bezútěšná. AÅ¥ na tom hned zaÄne pracovat tým Údržbářů!", financial_trouble = "Jste ve vážných finanÄních potížích. Hned si zorganizujte své finance! Pokud ztratíte dalších %d, tak zahodíte celou tuto úroveň!", need_toilets = "Pacienti potÅ™ebují toalety. Vybudujte je na snadno přístupném místÄ›.", many_epidemics = "Vypadá to, že u Vás propukla více než jedna epidemie najednou. To by mohla být obrovská katastrofa, takže s tím rychle nÄ›co dÄ›lejte.", need_staffroom = "Postavte Místnost pro ZamÄ›stnance, aby si VaÅ¡i zamÄ›stnanci mohly kde odpoÄinout.", nobody_cured_last_month = "Minulý mÄ›síc nebyl vůbec nikdo vyléÄen.", charges_too_high = "VaÅ¡e poplatky jsou vysoké. Sice budete mít krátkodobÄ› vysoké příjmy, ale nakonec zaÄnete odhánÄ›t lidi pryÄ.", patient_stuck = "NÄ›kdo uváznul. Plánujte VaÅ¡i nemocnici lépe.", build_staffroom = "OkamžitÄ› postavte Místnost pro ZamÄ›stnance. VaÅ¡i zamÄ›stnanci pracují příliÅ¡ tvrdÄ› a jsou na pokraji zhroucení. No tak - mÄ›jte rozum!", doctor_crazy_overwork = "Ale ne! Jeden z VaÅ¡ich Doktorů se kvůli pÅ™epracování zbláznil. Pokud mu okamžitÄ› máte odpoÄinou, může se z toho zotavit.", machinery_very_damaged = "Naléhavé! ŘeknÄ›te VaÅ¡emu Údržbáři, aby okamžitÄ› opravil VaÅ¡e přístroje! Chystají se vybouchnout!", nurses_tired2 = "VaÅ¡e Sestry jsou velmi unavené. Hned jim dejte odpoÄinout.", patients_very_thirsty = "Pacienti opravdu trpí žízní. Pokud brzo neumístíte automaty na nápoje, budete Äelit velkému odcházení, jak vÅ¡ichni lidé odejdou domů pro kolu.", machinery_deteriorating = "VaÅ¡e přístroje zaÄali chátrat kvůli nadmÄ›rnému užívání. Tak je hlídejte.", machine_severely_damaged = "%s je velmi blízko k nenapravitelné Å¡kodÄ›.", people_have_to_stand = "Trpící lid musí stát. Hned umístÄ›te další sezení.", machinery_damaged2 = "Musíte brzo zamÄ›stnat Údržbáře, aby opravil VaÅ¡e přístroje.", no_desk_3 = "No to je prostÄ› paráda, skoro rok a Vy nemáte pracující recepci! Jak si myslíte, že Vám sem budou chodit pacienti? Hned to vyÅ™eÅ¡te a pÅ™estaňte se flákat!", deal_with_epidemic_now = "Pokud se s touto epidemií brzo nÄ›co neprovede, budete až po oÄi v průšvihu. Tak pohyb!", too_many_plants = "Máte až příliÅ¡ mnoho kytek. Je to tam jako v džungli.", cannot_afford = "V bance nemáte dostatek penÄ›z, abyste tuto osobu najali!", cannot_afford_2 = "Nejste tak bohatí, abyste si toto zakoupili!", patients_thirsty = "Lidé zaÄínají mít žízeň. Možná by jste jim mÄ›li poskytnout automaty na nápoje.", machinery_slightly_damaged = "VaÅ¡e přístroje v nemocnici jsou lehce poÅ¡kozené. Nezapomeňte, abyste je vÅ¡echny nÄ›kdy udržovali.", change_priorities_to_plants = "Musíte zmÄ›nit priority VaÅ¡ich Údržbářů, aby trávili více Äasu zaléváním rostlin.", queue_too_long_send_doctor = "VaÅ¡e fronty %s jsou příliÅ¡ dlouhé. UjistÄ›te se, že v místnosti je doktor.", too_much_litter = "Máte problém s odpadky. Více údržbářů by mohla být odpovÄ›Ä.", place_plants_to_keep_people = "Lidé odcházejí. UmístÄ›ním kytek je může pÅ™esvÄ›dÄit, aby zůstali.", research_screen_open_1 = "PÅ™edtím, než můžete vstoupit na obrazovku výzkumu, musíte postavit Výzkumné oddÄ›lení.", researcher_needs_desk_1 = "Výzkumník potÅ™ebuje pro práci svůj stůl.", researcher_needs_desk_2 = "Váš Výzkumník je potěšen vaší velkorysostí mu poskytnout pÅ™estávku pÅ™i práci. Pokud jste zamýšleli, aby souÄasnÄ› pracovalo více výzkumníků, musíte každému pořídit vlastní stůl pro práci.", researcher_needs_desk_3 = "Každý Výzkumník musí mít svůj vlastní pracovní stůl.", nurse_needs_desk_1 = "Každá Sestra potÅ™ebuje pro svoji práci vlastní stůl.", nurse_needs_desk_2 = "VaÅ¡e Sestra je přímo nadÅ¡ená množstvím volna, které ji poskytujete. Pokud jste mÄ›li v úmyslu její zaÄlenÄ›ní do pracovního procesu, pak muíste každé dát stůl z kterého mohou pracovat.", research_screen_open_2 = "Výzkum je v souÄasné úrovni zakázán.", no_desk_1 = "Pokud chcete, aby lidé do Vaší nemocnice chodili, budete muset najmout recepÄní a postavit ji recepci, kde může pracovat!", queue_too_long_at_reception = "Máte příliÅ¡ mnoho pacientů Äekajících na pÅ™idÄ›lení místnosti v recepci. UmístÄ›te další Recepci a zamÄ›stnejte další RecepÄní.", machines_falling_apart = "VaÅ¡e přístroje se zaÄínají rozpadat. OkamžitÄ› k nim poÅ¡lete Údržbáře!", patients_too_hot = "Pacientům zaÄíná být velké horko. BuÄ nÄ›jaké radiátory odstraňte, snižte teplotu nebo umístÄ›te pro nÄ› víc automatů na nápoje.", staff_tired = "VaÅ¡i zamÄ›stnanci zaÄínají být pÄ›knÄ› unavení. Pokud je nenecháte trochu si odpoÄinout v Místnosti pro ZamÄ›stnance, nÄ›kteří by mohli pod tlakem zešílet.", cash_low_consider_loan = "VaÅ¡e peněžní situace je velmi vážná. PÅ™emýšleli jste o půjÄce?", patient_leaving = "Pacient odchází. Důvod? VaÅ¡e mizernÄ› spravovaná a Å¡patnÄ› zamÄ›stnaná i vybavená nemocnice.", build_toilet_now = "Hned vybudujte toaletu. Lidé už to nemůžou vydržet. NesmÄ›jte se - tohle je vážné.", epidemic_getting_serious = "Ta Nakažlivá Choroba se stává vážnou. Musíte brzo nÄ›co udÄ›lat!", money_very_low_take_loan = "VaÅ¡e Bankovní Bilance je straÅ¡livÄ› nízká. Mohli byste si vzít půjÄku, víte.", more_benches = "Promyslete si umístÄ›ní více laviÄek. Nemocní lidé nenávidí, když musejí stát.", some_litter = "Údržbáři se mohou odpadků zbavit dřív, než se z toho stane vážný problém.", patients_very_cold = "Pacientům je velmi zima. Zkuste zvýšit vytápÄ›ní, nebo umístÄ›te více radiátorů ve Vaší nemocnici.", receptionists_tired2 = "VaÅ¡e RecepÄní jsou velmi vyÄerpané. Hned je nechte odpoÄinout.", patients_getting_hot = "Pacientům zaÄíná být velké horko. Zkuste snížit vytápÄ›ní, nebo dokonce odstraňte nÄ›které radiátory.", people_did_it_on_the_floor = "NÄ›kteří pacienti to nemohli vydržet. ÄŒiÅ¡tÄ›ní bude pro nÄ›koho velká práce.", patients_really_thirsty = "Pacienti mají velkou žízeň. UmístÄ›te více automatů na nápoje, nebo pÅ™emístÄ›te existující blízko k nejvÄ›tším frontám.", doctors_tired = "VaÅ¡i DoktoÅ™i jsou velmi unavení. Hned je nechte odpoÄinout.", financial_trouble3 = "VaÅ¡e bankovní bilance vypadá trochu znepokojivÄ›. PÅ™emýšlejte o vydÄ›lávání více penÄ›z. Jste %d vzdáleni od katastrofy.", handymen_tired2 = "VaÅ¡i Údržbáři jsou naprosto zniÄení. OkamžitÄ› jim dejte odpoÄinout.", no_desk_2 = "VýbornÄ›, to musí být svÄ›tový rekord: skoro rok a žádní pacienti! Pokud chcete pokraÄovat jako správce této nemocnice, budete muset najmout recepÄní a postavit recepci odkud může pracovat!", patients_thirsty2 = "Lidé si stěžují na žízeň. MÄ›li byste umístit další Automaty na nápoje, nebo existující pÅ™esuňte blíže k nim.", people_freezing = "Neuvěřitelné, v této dobÄ› centrálního vytápÄ›ní, nÄ›kteří VaÅ¡i pacienti mrznou zimou. Postavte radiátory, aby jim bylo teplo a zvyÅ¡te vytápÄ›ní.", staff_too_hot = "VaÅ¡i zamÄ›stnanci se pÅ™ehřívají. Snižte teplotu, nebo odstraňte radiátory z jejich místností.", staff_unhappy2 = "VaÅ¡i zamÄ›stnanci jsou obecnÄ› nešťastní. Také budou brzo chtít více penÄ›z.", charges_too_low = "ÚÄtujete si příliÅ¡ málo. Sice to pÅ™inese více lidí do nemocnice, ale z každého nebudete mít moc velký výdÄ›lek.", staff_very_cold = "ZamÄ›stnanci si stěžují na zimu. ZvyÅ¡te vytápÄ›ní, nebo umístÄ›te více radiátorů.", place_plants4 = "Utěšte Pacienty pomocí více rostlin v prostÅ™edí.", nurses_tired = "VaÅ¡e sestry jsou unavené. Hned jim dejte odpoÄinout.", bankruptcy_imminent = "Hej! Míříte smÄ›rem k bankrotu. BuÄte opatrní!", handymen_tired = "VaÅ¡i Údržbáři jsou unavení. Dejte jim odpoÄinout.", finanical_trouble2 = "ZaÅ™iÄte, aby Vám pÅ™icházeli peníze, nebo budete na dlažbÄ›. Úroveň prohrajete, jestli pÅ™ijdete o dalších %d.", desperate_need_for_watering = "Zoufale potÅ™ebujete zamÄ›stnat Údržbáře, aby se staral o VaÅ¡e rostliny.", machinery_damaged = "Hned opravte VaÅ¡e přístroje. Nebude dlouho trvat a zaÄnou se rozpadat.", many_killed = "Nyní jste zabili %d lidí. Víte, že jim máte pomáhat.", litter_everywhere = "VÅ¡ude jsou odpadky. PoÅ¡lete na tento problém pár Údržbářů.", falling_3 = "Au, to muselo bolet, zavolejte nÄ›kdo doktora!", no_patients_last_month = "Minulý mÄ›síc nepÅ™iÅ¡li do Vaší nemocnice žádní noví pacienti. Å okující!", receptionists_tired = "VaÅ¡e RecepÄní jsou vážnÄ› unavené. Hned jim dejte odpoÄinout.", falling_5 = "Toto není místo pro srážení lidí, pÅ™ece víte, že jsou nemocní!", falling_2 = "PÅ™estaňte si zahrávat, jak by se to líbilo Vám?", falling_1 = "Hej! Tohle není sranda, dívejte se, kam s tou myší klikáte; mohli byste nÄ›koho zranit!", falling_6 = "Toto není kuželník, s nemocnými lidmi by se takto nemÄ›lo zacházet!", more_toilets = "PotÅ™ebujete více toalet. Lidem se u zadku dÄ›lají podezÅ™elé objekty.", falling_4 = "Tohle je nemocnice, ne Theme Park!", plants_thirsty = "PotÅ™ebujete se starat o VaÅ¡e rostliny. ZaÄínají mít žízeň.", doctors_tired2 = "VaÅ¡i DoktoÅ™i jsou neuvěřitelnÄ› unavení. PotÅ™ebují okamžitý odpoÄinek.", staff_overworked = "VaÅ¡i zamÄ›stnanci jsou straÅ¡nÄ› pÅ™epracovaní. Stávají se neschopnými a zaÄnou dÄ›lat katastrofické chyby.", patients_annoyed = "Lidé jsou straÅ¡nÄ› naÅ¡tvaní na způsob, jak vedete nemocnici. A já se jim nemůžu divit. Vzpamatujte se, nebo Äelte následkům!", hospital_is_rubbish = "Lidé otevÅ™enÄ› říkají, že VaÅ¡e nemocnice je příšerná. Než se nadáte, vezmou si jejich nemoci jinam.", pay_back_loan = "Máte dostatek penÄ›z. Co takhle pomyslet na splacení půjÄky?", plants_dying = "VaÅ¡e rostliny umírají. Zoufale touží po vodÄ›. AÅ¥ na tomto pracuje více Údržbářů. Pacienti nemají rádi mrtvé rostliny.", patients_unhappy = "Pacienti nemají rádi VaÅ¡i nemocnici. MÄ›li byste nÄ›co udÄ›lat pro zlepÅ¡ení jejich prostÅ™edí.", queues_too_long = "VaÅ¡e fronty jsou příliÅ¡ dlouhé.", place_plants2 = "Lidé odcházejí. Trochu více rostlin by je mohlo zde déle udržet.", patients_leaving = "Pacienti odcházejí. ZlepÅ¡ete nemocnici pro VaÅ¡e návÅ¡tÄ›vníky umístÄ›ním rostlin, laviÄek, Automatů na nápoje a tak dále.", money_low = "Docházejí Vám peníze!", reception_bottleneck = "V Recepci je zácpa. ZamÄ›stnejte další RecepÄní.", no_desk = "V urÄité fázi byste mÄ›li vybudovat recepci s najmout recepÄní!", staff_unhappy = "VaÅ¡i zamÄ›stnanci jsou nešťastní. Zkuste jim dát příplatek, nebo jeÅ¡tÄ› lépe, postavte jim Místnost pro ZamÄ›stnance. Také byste mohli zmÄ›nit zásady odpoÄinku VaÅ¡ich zamÄ›stnanců na obrazovce Zásady.", reduce_staff_rest_threshold = "Zkuste snížit práh OdpoÄinku ZamÄ›stnanců ve Vaší obrazovce Zásad tak, aby VaÅ¡i zamÄ›stnanci ÄastÄ›ji odpoÄívají. Jen takový nápad.", place_plants3 = "Pacienti zaÄínají být nešťastní. UmístÄ›te více rostlin, abyste je utěšili.", build_toilets = "Hned teÄ vybudujte Toaletu nebo uvidíte nÄ›co velmi nepÄ›kného. A pÅ™edstavte si, jak VaÅ¡e nemocnice bude smrdÄ›t.", no_desk_4 = "RecepÄní potÅ™ebuje svoji vlastní pracovní stanici, kde bude vítat pacienty pÅ™i jejich příchodu", no_desk_5 = "No už bylo naÄase, za chvíli by Vám mÄ›li zaÄít pÅ™icházet pacienti!", no_desk_6 = "RecepÄní máte, tak co kdybyste ji postavili recepci, kde by mohla zaÄít pracovat?", no_desk_7 = "Recepci jste postavili, a teÄ jenom najmout recepÄní. Bez ní do vaší nemocnice nevkroÄí ani noha!", }, earthquake = { ended = "Uf. Myslel jsem si, že tento byl Ten Velký - Byl %d stupnÄ› na RichterovÄ› Å kále.", damage = "Toto zemÄ›tÅ™esení poÅ¡kodilo %d přístrojů a %d lidí v nemocnici.", alert = "Varování o zemÄ›tÅ™esení. BÄ›hem zemÄ›tÅ™esení budou VaÅ¡e přístroje poÅ¡kozeny. Pokud jsou Å¡patnÄ› udržovány, mohou být zniÄeny.", }, staff_advice = { need_handyman_plants = "Budete muset zamÄ›stnat Údržbáře, aby zaléval kytky.", need_doctors = "PotÅ™ebujete více Doktorů. Zkuste VaÅ¡e nejlepší Doktory umístit do místností s dlouhými frontami.", need_handyman_litter = "Lidé zaÄali dÄ›lat ve Vaší nemocnici nepořádek. ZamÄ›stnejte Údržbáře, aby po nich uklízel.", too_many_doctors = "Máte příliÅ¡ mnoho Doktorů. NÄ›kteří v souÄasnosti nemají nic na práci.", need_handyman_machines = "Pokud budete chtít udržovat přístroje ve Vaší nemocnici, musíte zamÄ›stnat Údržbáře.", need_nurses = "Musíte zamÄ›stnat více Sester. NemocniÄní pokoje a Lékárny potÅ™ebují Sestru.", too_many_nurses = "Myslím, že v souÄasnosti zamÄ›stnáváte příliÅ¡ mnoho Sester.", }, vomit_wave = { started = "Vypadá to, že ve Vaší nemocnici máte virus zvracení, pokud by to tu bylo ÄistÄ›jší, tak by se to nestalo. Možná byste mÄ›li zamÄ›stnat více Údržbářů.", ended = "Uf! Vypadá to, že virus, který způsobil vlnu zvracení, do znaÄné míry odeznÄ›l. Do budoucna udržujte Vaší nemocnici Äistou.", }, epidemic = { multiple_epidemies = "Vypadá to, že u Vás propukla více než jedna epidemie najednou. To by mohla být obrovská katastrofa, takže s tím rychle nÄ›co dÄ›lejte.", serious_warning = "Ta Nakažlivá Choroba se stává vážnou. Musíte brzo nÄ›co udÄ›lat!", hurry_up = "Pokud se s touto epidemií brzo nÄ›co neprovede, budete až po oÄi v průšvihu. Tak pohyb!", }, boiler_issue = { resolved = "Dobré zprávy. Bojler a radiátory nyní už zase správnÄ› fungují. Teplota by mÄ›la pro VaÅ¡e pacienty a zamÄ›stnance být v pořádku.", maximum_heat = "Bojler ve sklepÄ› se zbláznil. Teplo radiátorů se zaseklo na maximu. Lidi zaÄnou tát! UmístÄ›ním více Automatů na nápoje by pomohlo.", minimum_heat = "Ah, tady jste. Bojler ve sklepÄ› je rozbitý. Vypadá to, že lidem ve Vaší nemocnici bude za chvilku pořádná zima.", }, } staff_descriptions = { good = { [1] = "Velmi rychlý a pilný pracovník. ", [2] = "Velmi svÄ›domitý. Hluboce se stará. ", [3] = "Má Å¡iroký rozsah dovedností. ", [4] = "Velmi přátelský a rád se smÄ›je. ", [5] = "Úžasná výdrž. ProstÄ› pořád jede. ", [6] = "PozoruhodnÄ› sluÅ¡ný, chová se vlídnÄ›. ", [7] = "NeuvěřitelnÄ› talentovaný a schopný. ", [8] = "HodnÄ› mu záleží na práci, kterou dÄ›lá. ", [9] = "Je puntiÄkář, který se prostÄ› nevzdává. ", [10] = "NadÅ¡enÄ› pomáhá lidem s úsmÄ›vem. ", [11] = "Půvabný, sluÅ¡ný a nápomocný. ", [12] = "ObecnÄ› dobÅ™e motivovaný a oddaný. ", [13] = "DobrosrdeÄný a velmi těžce pracující. ", [14] = "Oddaný a přátelský. ", [15] = "PeÄlivý a spolehlivý v nouzových situacích. ", }, bad = { [1] = "Pomalý a malicherný. ", [2] = "Lenoch a Å¡patnÄ› motivovaný. ", [3] = "Å patnÄ› vyuÄen a neschopný. ", [4] = "Drzý a neomalený. Leze lidem na nervy. ", [5] = "Hrozná výdrž - má Å¡patný přístup. ", [6] = "Hluchý jako poleno. Je slabÄ› cítit zelím. ", [7] = "PÅ™i práci je k niÄemu. Možná přítěž. ", [8] = "Zbrklý a snadno rozptýlitelný. ", [9] = "Stresovaný a náchylný k chybám. ", [10] = "Zvrácený a zlý - spalován nenávistí. ", [11] = "Neopatrný a náchylný k nehodám. ", [12] = "Práce ho nezajímá. Líná veÅ¡. ", [13] = "PoÅ¡etile riskuje, je mu to úplnÄ› jedno. ", [14] = "Lstivý, prohnaný a podvratný. ", [15] = "Arogantní a nafoukaný. ", }, misc = { [1] = "Hraje golf. ", [2] = "Chodí se potápÄ›t. ", [3] = "DÄ›lá sochy z ledu. ", [4] = "Pije víno. ", [5] = "Jezdí v závodních autech. ", [6] = "SkáÄe bungee-jumping. ", [7] = "Sbírá pivní tácky. ", [8] = "Má rád skákání z pódia. ", [9] = "Rád surfuje pomocí prdÄ›ní. ", [10] = "Užívá si rozÅ¡iÅ™ování Å™ek. ", [11] = "Destiluje whisky. ", [12] = "ZkuÅ¡ený kutil. ", [13] = "Má rád Francouzské nezávislé filmy. ", [14] = "HodnÄ› hraje Theme Park. ", [15] = "Má Å™idiÄák pro náklaÄáky. ", [16] = "Chodí závodit na motorkách. ", [17] = "Hraje na klasické housle a violoncello. ", [18] = "Zanícený lupiÄ vraků vlaků. ", [19] = "Milovník psů. ", [20] = "Poslouchá rádio. ", [21] = "ÄŒasto se koupe ve vanÄ›. ", [22] = "Instruktor pro ruÄní práce s rafií. ", [23] = "Vydlabává zeleninu a používá ji jako držáky na mýdlo. ", [24] = "Zvláštní policejní komisaÅ™ na ÄásteÄný úvazek. ", [25] = "Bývalý moderátor kvizového poÅ™adu. ", [26] = "Sbírá Å¡rapnely z 2. svÄ›tové války. ", [27] = "PÅ™emisÅ¥uje nábytek. ", [28] = "Poslouchá rave a trip-hop. ", [29] = "RozÄiluje hmyz deodorantem ve spreji. ", [30] = "PokÅ™ikuje na Å¡patné komiky. ", [31] = "Å pehuje pro obecní úřad. ", [32] = "Nenápadný zahradník. ", [33] = "PaÅ¡uje faleÅ¡né hodinky. ", [34] = "Zpívá v rock&rollové skupinÄ›. ", [35] = "Uctívá denní televizní vysílání. ", [36] = "Lechtá pstruhy. ", [37] = "Láká turisty v muzeu. ", }, } load_game_window = { caption = "NaÄíst Hru (%1%)", } menu_options_game_speed = { slowest = " (1) NEJPOMALEJÅ Ã ", slower = " (2) POMALEJÅ Ã ", pause = " (P) POZASTAVENO ", normal = " (3) NORMÃLNà ", max_speed = " (4) MAX RYCHLOST ", and_then_some_more = " (5) A JEÅ TÄš TROCHU NAVÃC ", } humanoid_name_starts = { [1] = "ZLATO", [2] = "VYSO", [3] = "A", [4] = "JOS", [5] = "BOŘ", [6] = "JAKUB", [7] = "RA", [8] = "PAV", [9] = "POD", [10] = "KRÃL", [11] = "BAR", [12] = "ZVÃ", [13] = "ÄŒLO", [14] = "KLUK", [15] = "VAL", [16] = "MAR", [17] = "KRAB", [18] = "RYBA", [19] = "VODA", [20] = "MIL", [21] = "MI", [22] = "FER", [23] = "BOHAT", [24] = "SKOT", [25] = "BUŘ", [26] = "HROT", [27] = "CUK", [28] = "BÃL", [29] = "KAR", [30] = "BŘE", [31] = "POD", [32] = "SPRÃVN", [33] = "KEŘ", } trophy_room = { rats_accuracy = { trophies = { [1] = "Je Vám udÄ›len Pohár Syndicate Wars PÅ™esnosti ve Střílení za to, že jste mÄ›li %d%% pÅ™esnost pÅ™i střílení krys.", [2] = "Tento pohár pÅ™ipomíná VaÅ¡i neuvěřitelnou pÅ™esnost pÅ™i zabití %d%% krys, na které jste ve Vaší nemocnici mířili v posledním roce.", [3] = "Na oslavu události VaÅ¡eho zabití %d%% vÅ¡ech krys ve Vaší nemocnici, je Vám udÄ›len Pohár Dungeon Keeper HavÄ›ti Zbavený. Blahokrysujeme!", }, }, happy_staff = { regional_bad = { [1] = "VÅ¡ichni VaÅ¡i zamÄ›stnanci byli minulý rok velmi nešťastní. MÄ›li jste si toho vÅ¡imnout. Tak jak je to teÄ mají vÅ¡echny ostatní nemocnice zamÄ›stnance šťastnÄ›jší než Vy.", }, awards = { [1] = "VaÅ¡i zamÄ›stnanci Vám udÄ›lují tuto cenu. Říkají, že i když je co zlepÅ¡ovat, zacházeli jste s nimi vcelku dobÅ™e.", [2] = "VaÅ¡i zamÄ›stnanci pro Vás tak rádi pracují, že se nemůžou pÅ™estat smát. Jste výborný správce.", }, regional_good = { [1] = "VaÅ¡i zamÄ›stnanci jsou šťastnÄ›jší než ti v ostatních nemocnicích. Šťastní zamÄ›stnanci pÅ™inášejí více výdÄ›lku a ménÄ› úmrtí. Ministerstvo je potěšeno.", }, penalty = { [1] = "VaÅ¡i zamÄ›stnanci chtÄ›jí, aby se vÄ›dÄ›lo, že jsou velmi nešťastní. Spokojení zamÄ›stnanci jsou přínosem. UdÄ›lejte je šťastnÄ›jšími nebo je jednoho dne ztratit.", }, trophies = { [1] = "Je Vám udÄ›len Pohár Chechtáka za udržení radosti VaÅ¡ich pracovitých zamÄ›stnanců tak, jak to jen jde.", [2] = "Adami Institut Radosti Vás oceňuje za to, že jste Ve vaší nemocnici nemÄ›li minulý rok žádné nešťastné zamÄ›stnance, tím že Vám udÄ›luje tento pohár.", [3] = "Toto ocenÄ›ní, Pohár Více ÚsmÄ›vů je Vám slavnostnÄ› udÄ›len za to, že jste VaÅ¡e zamÄ›stnance udrželi šťastné nad rámec VaÅ¡ich povinností bÄ›hem minulého roku. ÚsmÄ›vy vÅ¡ude kolem!", }, }, happy_patients = { penalty = { [1] = "Lidé pÅ™icházející do nemocnice mají otÅ™esné zážitky. Pokud si chcete vysloužit respekt ministerstva, budete se muset mnohem více snažit.", [2] = "Lidé, dostávající ve VaÅ¡i nemocnici léÄbu, jsou velmi nespokojeni se stavem tohoto místa. Blaho pacientů byste mÄ›li důkladnÄ›ji zvážit.", }, awards = { [1] = "Můžete se dmout pýchou nad tím, že lidé v pÅ™edchozím roce byly ve Vaší nemocnici velmi šťastní.", [2] = "Lidé navÅ¡tÄ›vující VaÅ¡i nemocnici byly bÄ›hem jejich léÄby v průmÄ›ru šťastnÄ›jší než v kterékoliv jiné nemocnici ve hÅ™e.", }, }, happy_vips = { trophies = { [1] = "Vyhráli jste Nobelovu cenu za zapůsobení na VIP. Každý, kdo v minulém navÅ¡tívil Vaší nemocnici, o ní pÄ›l jen samou chválu.", [2] = "Agentura Slavných Lidí by Vám chtÄ›la darovat Pohár Celebrity za potěšení tÄ›ch, kteří navÅ¡tívili VaÅ¡e zařízení. Považujte se za mírnÄ› slavného a skoro jednoho z nás.", [3] = "BlahopÅ™ejeme Vám k získání ocenÄ›ní VÃLET VIP za ulehÄení života těžce pracujících osobností v oku veÅ™ejnosti uspokojením tÄ›ch, co VaÅ¡i nemocnici navÅ¡tívili. To je výteÄné.", }, }, pop_percentage = { penalty = { [1] = "Poznamenejte si, že jste v pÅ™edchozím roce získali vysoký podíl obyvatel ve Vaší nemocnici mÄ›sta. VýbornÄ›.", [2] = "BlahopÅ™ejeme. Vaší nemocnici navÅ¡tÄ›vuje vyšší podíl místních obyvatel mÄ›sta než kterékoli jiné zařízení.", }, awards = { [1] = "Poznamenejte si, že jste získali vysoký podíl obyvatel mÄ›sta ve Vaší nemocnici v minulém roce. VýbornÄ›.", [2] = "BlahopÅ™ejeme. VaÅ¡i nemocnici navÅ¡tÄ›vuje vyšší podíl místní populace, než jakoukoli jinou instituci.", [3] = "Úžasné. Do Vaší nemocnice jste nalákali více obyvatel, než navÅ¡tívilo vÅ¡echny nemocnice dohromady.", }, }, rats_killed = { awards = { }, trophies = { [1] = "Byl Vám udÄ›len Pohár Proti HavÄ›ti za zastÅ™elení %d krys ve Vaší nemocnici bÄ›hem minulého roku.", [2] = "Díky Vaším výjimeÄným schopnostem střílení krys jste se kvalifikovali na získání tohoto poháru od Federace Proti Krysám a Myším, pÅ™i zabití %d potvor.", [3] = "Kvalifikovali jste se na Pohár OdstÅ™elení Krys za výjimeÄné dovednosti pÅ™i zbavení %d krys ve Vaší nemocnici v minulém roce.", }, }, no_deaths = { awards = { [1] = "Obdrželi jste OcenÄ›ní Nikdo-Nechcíp za udržení 100 procent živých pacientů v posledním roce.", [2] = "Toto ocenÄ›ní jste obdrželi, aby Vám pÅ™ipomnÄ›lo nízký poÄet úmrtí ve Vaší nemocnici tento rok. To je skvÄ›lé.", }, trophies = { [1] = "SpoleÄnost Život Jde Dál Vám udÄ›luje tento pohár za zabránÄ›ní jakéhokoli úmrtí v posledním roce.", [2] = "Byl Vám udÄ›len Pohár Zůstávám Naživu, že jste zvládli se vyhnout vÅ¡ech možných úmrtí v posledním roce ve VaÅ¡i nemocnici. SkvÄ›lé.", [3] = "Byla Vám udÄ›lena trofej Zůstávám Naživu za to, že jste dokázali v tomto roce zabránit jakémukoliv úmrtí ve VaÅ¡i skvÄ›lé nemocnici. VýbornÄ›.", }, penalty = { [1] = "PoÄet smrtí Ve Vaší nemocnici byl v minulém roce na pÅ™ijatelné výši. VÄ›nujte vÄ›tší pozornost Vaší práci. V budoucnu zajistÄ›te, aÅ¥ více lidí pÅ™ežije.", [2] = "VaÅ¡e nemocnice je rizikem pro zdraví pacientů. OÄekává se, že hodnÄ› lidí vyléÄíte a ne, že je zahubíte.", }, regional = { [1] = "PoÄet smrtí ve Vaší nemocnici byl minulý rok nižší než v ostatních nemocnicích. PÅ™ijmÄ›te prosím tuto cenu.", }, }, healthy_plants = { awards = { [1] = "BlahopÅ™ejeme k získání ocenÄ›ní Hnojiva RosÅ¥ Více za udržení neobyÄejného zdraví VaÅ¡ich rostlin bÄ›hem minulého roku.", }, trophies = { [1] = "Přátelé Pokojových Rostlin si pÅ™ejí Vám udÄ›lit Zelený Pohár Zdraví za udržení vÅ¡ech VaÅ¡ich kytek v dobrém stavu bÄ›hem posledních dvanácti mÄ›síců.", [2] = "Senza Trifidi by Vám chtÄ›li udÄ›lit Pohár Zelenéhoprstu za udržení VaÅ¡ich rostlin v nemocnici v tom nejlepším možném stavu bÄ›hem posledního roku.", }, }, many_cured = { awards = { [1] = "Gratulujeme za vyléÄení mnoha pacientů v minulém roce. Díky Vaší práci se mnoho lidí cítí dobÅ™e.", [2] = "PÅ™ijmÄ›te prosím toto ocenÄ›ní za vyléÄené více pacientů než kterákoli jiná nemocnice. Ryzí výkon.", }, penalty = { [1] = "VaÅ¡e nemocnice selhává v poskytnutí úÄinné léÄby pacientům, kteří ji potÅ™ebují. SoustÅ™eÄte se na VaÅ¡e léÄby, abyste zvýšili jejich úÄinnost.", [2] = "VaÅ¡e nemocnice je ménÄ› úÄinná pÅ™i oÅ¡etÅ™ovaní pacientů, než kterákoliv jiná. Zklamali jste ministerstvo a zklamali jste sebe. To je vÅ¡e, co jsme chtÄ›li říct.", }, regional ={ [1] = "SlavnostnÄ› Vám udÄ›lujeme cenu VÅ¡emocného léku za vyléÄení více lidí, než vÅ¡echny ostatní nemocnice dohromady.", }, trophies = { [1] = "Gratulujeme k výhÅ™e OcenÄ›ní Marie Curie za úspěšné vyléÄení skoro vÅ¡ech pacientů ve Vaší nemocnici v minulém roce.", [2] = "Mezinárodní Nadace LéÄení si pÅ™eje ocenit skuteÄnost, že jste vyléÄili ohromný poÄet lidí ve Vaší nemocnici minulý rok tím, že Vám udÄ›lí Pohár HodnÄ›-VyléÄeno.", [3] = "Byl Vám darován Pohár Žádný Nemocný ŘiÅ¥olezec za úspěšnou léÄbu vysokého procenta pacientů ve VaÅ¡i nemocnici v minulém roce.", }, }, sold_drinks = { trophies = { [1] = "SvÄ›tová Asociace Zubařů je hrdá, že Vás může ocenit touto cenou a plaketou za prodej spousty konzervovaných nápojů ve Vaší nemocnici.", [2] = "VaÅ¡e nemocnice byla ocenÄ›na Pohárem Å umivý Byznys za Prodej Nealkoholických Nápojů pÅ™i uznání poÄtu nápojů prodaných ve Vaší nemocnici za poslední rok.", [3] = "Jménem DK Plomby a.s., je Vám udÄ›lena tato Äokoládou pokrytý Pohár na oslavu neobyÄejného poÄtu prodaných nealkoholických nápojů ve Vaší nemocnici tento rok.", }, }, gen_repairs = { penalty = { [1] = "VaÅ¡i údržbáři moc dobÅ™e VaÅ¡e stroje neudržovali. MÄ›li byste na nÄ› dohlédnout peÄlivÄ›ji, nebo jich najmout více, aby byli schopni množství práce pojmout.", [2] = "Z údržby máte nepořádek. VaÅ¡i zamÄ›stnanci by se o stroje mÄ›li starat rychle a s péÄí.", }, awards = { [1] = "Obdrželi jste zvláštní ocenÄ›ní za pohotovost VaÅ¡ich údržbářů, kteří udržují stroje Vaší nemocnice v dobrém stavu. SkvÄ›lé. Můžete si vzít dovolenou.", [2] = "VaÅ¡i údržbáři si vedli lépe než ti v ostatních nemocnicích. Toto je obrovský úspÄ›ch, za který je Vám poblahopřáno.", [3] = "VaÅ¡e stroje jsou skvÄ›le udržované. Oddanost VaÅ¡ich údržbářů je výjimeÄná. Vy vÅ¡ichni si toto prestižní ocenÄ›ní zasloužíte. VýteÄná práce.", }, }, research = { regional_good = { [1] = "Váš výzkum Vaší nemocnice udržel krok s nejnovÄ›jšími poznatky. VaÅ¡i výzkumní zamÄ›stnanci si tuto cenu zaslouží. SkvÄ›lé.", }, regional_bad = { [1] = "VÅ¡echny nemocnice v okolí mají lepší výzkum než Vy. Ministerstvo je rozÄílené, protože výzkum by ve Vaší nemocnici mÄ›l být velmi důležitý.", }, penalty = { [1] = "Ve výzkumu nové léÄby, vybavení a léků jste zaostali. To je velmi Å¡patné, protože technologický pokrok je nezbytný.", }, awards = { [1] = "Váš výzkum Vaší nemocnice udržel krok s nejnovÄ›jšími poznatky. VaÅ¡i výzkumní zamÄ›stnanci si tuto cenu zaslouží. SkvÄ›lé.", [2] = "BÄ›hem posledního roku jste prozkoumali více léků a zařízení, než kdokoliv mohl doufat. Prosím pÅ™ijmÄ›te toto ocenÄ›ní od nás vÅ¡ech na ministerstvu.", }, }, curesvdeaths = { penalty = { [1] = "Váš pomÄ›r vyléÄení k úmrtím je velmi nízký. MÄ›li byste zajistit, že vyléÄíte mnohem více lidí, než necháte zemřít. NebuÄte naší ostudou.", }, awards = { [1] = "Vydatné gratulace za dosažení úchvatného pomÄ›ru vyléÄení k úmrtím ve Vaší nemocnici minulý rok.", }, }, emergencies = { regional_good = { [1] = "Ministerstvo uznává, že VaÅ¡e nemocnice zvládla pÅ™edeÅ¡lý rok mimořádné události lépe než kterákoliv jiná nemocnice a udÄ›luje Vám toto ocenÄ›ní.", }, award = { [1] = "BlahopÅ™ejeme: VaÅ¡e efektivní a úÄinné zvládnutí mimořádných událostí Vám získaly toto zvláštní ocenÄ›ní. Dobrá práce.", [2] = "VaÅ¡e zacházení s mimořádnými událostmi je výjimeÄné. Toto ocenÄ›ní je za to, že jste nejlepší ve zvládání velkých návalů nemocných a trpících.", }, penalty = { [1] = "Mimořádné situace moc nezvládáte. PÅ™icházející pacienti pohotovosti vyžadují rychlou a správnou pozornost, kterou jste nedokázali poskytnout.", }, regional_bad = { [1] = "VaÅ¡e nemocnice je ve zvládání mimořádných událostí ta nejhorší v oblasti. Je Vaší chybou, že se potácíte na konci místní ligy oÅ¡etÅ™ení v mimořádných situacích.", }, }, all_cured = { awards = { [1] = "BlahopÅ™ejeme k vítÄ›zství OcenÄ›ní Marie Curie za úspěšnou léÄbu vÅ¡ech pacientů ve Vaší nemocnici za poslední rok.", }, trophies = { [1] = "Mezinárodní Nadace LéÄení si pÅ™eje ocenit skuteÄnost, že jste vyléÄili vÅ¡echny ve Vaší minulý rok tím, že Vám udÄ›lí Pohár HodnÄ›-VyléÄeno.", [2] = "Byl Vám darován Pohár Žádný Nemocný ŘiÅ¥olezec za úspěšnou léÄbu vÅ¡ech pacientů ve Vaší nemocnici v minulém roce.", }, }, best_value_hosp = { regional = { [1] = "BlahopÅ™ejeme Vám za nejcennÄ›jší nemocnici ve hÅ™e. Dobrá práce. Snažte se prosím takto pokraÄovat.", }, penalty = { [1] = "Každá nemocnice v oblasti má vÄ›tší hodnotu než ta VaÅ¡e. UdÄ›lejte nÄ›co s touto ostudnou situací. Dejte se nÄ›jaké drahé vÄ›ci!", }, trophies = { [1] = "BlahopÅ™ejeme k získání ocenÄ›ní KÅ™išťálová Lilie za nemocnici s nejlepší reputací bÄ›hem minulého roku. Také je velmi zasloužená.", }, }, high_rep = { penalty = { [1] = "Budete potrestáni za udržení velmi Å¡patné reputace bÄ›hem minulého roku. UjistÄ›te se, že se to do budoucna zlepší.", [2] = "Reputace Vaší nemocnice je nejhorší v oblasti. Jste ostuda. ZlepÅ¡ete ji nebo si hledejte jinou práci.", }, regional = { [1] = "PÅ™ijmÄ›te prosím Cenu Bullfrog za nejvyšší reputaci v tomto roce ze vÅ¡ech nemocnic. Užijte si to - zasloužili jste si ji.", [2] = "Tento rok reputace Vaší nemocnice pÅ™ekonala vÅ¡echny ostatní v oblasti dohromady. To je významný úspÄ›ch.", }, awards = { [1] = "VýbornÄ›. Vyhráváte maliÄké ocenÄ›ní za dosažení velmi úctyhodné reputace v posledním roce.", [2] = "Úžasné! VaÅ¡e nemocnice vyhrává cenu za vybudování nejlepší bÄ›hem posledního roku.", }, }, cash = "PENÃZE", reputation = "REPUTACE", consistant_rep = { trophies = { [1] = "Tímto se Vám slavnostnÄ› udÄ›luje ocenÄ›ní Kabinetu Ministra za dokonalé standardy a nejvyšší možnou reputaci tento rok. Úžasné.", [2] = "BlahopÅ™ejeme k získání ocenÄ›ní KÅ™išťálová Lilie za nemocnici s nejlepší reputací bÄ›hem minulého roku. Také je velmi zasloužená.", }, }, wait_times = { penalty = { [1] = "Lidé ve Vaší nemocnici musí dlouho Äekat. Vždy zde existují nepÅ™ijatelné fronty. Pokud byste chtÄ›li, mohli byste zacházet s VaÅ¡imi pacienty úÄinnÄ›ji.", }, award = { [1] = "Gratulujeme. VaÅ¡e nemocnice soustavnÄ› má nízkou dobu ve frontÄ›. Toto je důležité ocenÄ›ní.", }, }, cleanliness = { regional_good = { [1] = "VaÅ¡e nemocnice byla uvedena jako jedna z nejménÄ› Äistých v oblasti. Å pinavá nemocnice smrdí a je nebezpeÄná. MÄ›li byste nepořádku vÄ›novat vÄ›tší pozornost.", }, award = { [1] = "KontroloÅ™i si poznamenali, že VaÅ¡e nemocnice je velmi Äistá. ÄŒisté nemocnice jsou bezpeÄné nemocnice. Jen tak dál.", }, regional_bad = { [1] = "VaÅ¡e nemocnice je nejÅ¡pinavÄ›jší v oblasti. Ostatní správci zvládli udržet svoje chodby Äistší. Jste hanbou zdravotnické profese.", }, }, hosp_value = { penalty = { [1] = "Vaší nemocnici se nepodaÅ™ilo dosáhnout sluÅ¡né hodnoty. Provedli jste Å¡patná rozhodnutí s penÄ›zi. Nezapomeňte, že dobrá nemocnice je také drahá nemocnice.", }, regional = { [1] = "Jste zázraÄné dítÄ› pÅ™es finance. VaÅ¡e nemocnice má vÄ›tší hodnotu než vÅ¡echny ostatní nemocnice v oblasti dohromady.", }, awards = { [1] = "Ministerstvo zdravotnictví by chtÄ›lo využít této příležitosti a poblahopřát Vám k působivé celkové hodnotÄ› Vaší nemocnice.", }, }, } build_room_window = { pick_room_type = "Vyberte Typ Místnosti", pick_department = "Vyberte OddÄ›lení", cost = "Náklady: ", } object = { dna_fixer = "SpravovaÄ DNA", op_sink1 = "Umyvadlo", litter_bomb = "Odpadková Bomba", auto_autopsy = "Auto Pitva", door = "DveÅ™e", projector = "Projektor", radiation_shield = "RadiaÄní Å¡tít", entrance_left = "Vchod levé dveÅ™e", operating_table = "OperaÄní stůl", bed2 = "Postel", cabinet = "Kartotéka", console = "Konzole", bed = "Postel", couch = "SedaÄka", drinks_machine = "Automat na nápoje", shower = "Sprcha", electrolyser = "Elektrolyzér", table2 = "Stůl", radiator = "Radiátor", chair = "SedaÄka", jelly_moulder = "FormovaÄ Å½elé", computer = "PoÄítaÄ", ultrascanner = "Ultraskener", bin = "KoÅ¡", surgeon_screen = "ZástÄ›na Chirurga", slicer = "KrájeÄ", bed3 = "Postel", x_ray = "Rentgen", video_game = "Video Hra", atom_analyser = "Analyzátor Atomů", inflator = "NafukovaÄ", toilet = "Toaleta", x_ray_viewer = "ProhlížeÄ snímků", cast_remover = "OdstraňovaÄ sádry", entrance_right = "Vchod pravé dveÅ™e", litter = "Odpadek", cardio = "Kardio", plant = "Rostlina", pool_table = "KuleÄníkový stůl", tv = "TV", sofa = "Pohovka", lamp = "Lampa", fire_extinguisher = "Hasicí přístroj", bench = "SedaÄka", scanner = "Skener", op_sink2 = "Umyvadlo", toilet_sink = "Umyvadlo", hair_restorer = "ObnovovaÄ vlasů", desk = "Stůl", swing_door2 = "Kyvadlové DveÅ™e", lecture_chair = "Sedadlo posluchárny", pharmacy_cabinet = "Lékárenský kabinet", screen = "ZástÄ›na", table1 = "Stůl", gates_of_hell = "Brány Pekla", blood_machine = "Krevní Stroj", comfortable_chair = "Pohodlné kÅ™eslo", bookcase = "Knihovna", reception_desk = "Recepce", crash_trolley = "ManipulaÄní vozík", swing_door1 = "Kyvadlové DveÅ™e", skeleton = "Kostlivec", } handyman_window = { all_parcels = "VÅ¡ude", parcel = "Parcela", } policy = { staff_leave_rooms = "zam. opouÅ¡tí místnost", diag_procedure = "proces vyÅ¡etÅ™ení", header = "ZÃSADY NEMOCNICE", sliders = { send_home = "POSLAT DOMÅ®", guess = "HÃDAT LÉČBU", stop = "ZASTAVIT PROCES", staff_room = "JÃT SE UKLIDNIT", }, diag_termination = "ukonÄení diagnózy", staff_rest = "poslat zamÄ›stnance odpoÄinout", } room_classes = { treatment = "LéÄba", diagnosis = "Diagnóza", facilities = "OddÄ›lení", clinics = "Kliniky", } tooltip = { folders_window = { data_location = "Adresář instalace původní hry Theme Hospital, jenž je vyžadován pro spuÅ¡tÄ›ní CorsixTH", no_font_specified = "UmístÄ›ní písma zatím nezadáno!", browse_data = "Procházet pro jiné umístÄ›ní instalace Theme Hospital. (souÄasné umístÄ›ní: %1%)", browse_font = "Procházet pro výbÄ›r jiného souboru s písmem (souÄasné umístÄ›ní: %1%)", font_location = "UmístÄ›ní souboru s písmem, které je schopno zobrazit znaky Unicode vyžadované vaším jazykem. Pokud toto není zadáno, nebudete moci zvolit jazyky, které potÅ™ebují více znaků, než původní hra obsahuje. Příklad: ruÅ¡tina a ÄínÅ¡tina", screenshots_location = "StandardnÄ› je složka se snímky obrazovky ve stejném umístÄ›ní jako soubor s nastavením. Pokud toto není žádané, pak si můžete zvolit vlastní. StaÄí zvolit adresář, který chete použít.", reset_to_default = "Resetovat adresář na jeho výchozí umístÄ›ní", back = "Zavřít tuto nabídku a vrátit se zpÄ›t do nabídky Nastavení", music_location = "Vyberte umístÄ›ní vaÅ¡ich mp3 souborů s hudbou. Adresář musí být vytvoÅ™en pÅ™edem a pak ho můžete zde zvolit.", savegames_location = "StandardnÄ› je adresář uložených her na stejném místÄ› jako soubor s nastavením. Pokud toto nechcete, můžete si zvolit svůj vlastní. StaÄí zvolit adresář, který chcete používat.", browse = "Procházet pro zvolení adresáře", browse_screenshots = "Procházet pro zvolení jiného umístÄ›ní vaÅ¡eho adresáře snímků obrazovky ( SouÄasné umístÄ›ní: %1% ) ", browse_music = "Procházet pro zvolení jiného umístÄ›ní vaÅ¡eho adresáře s hudbou ( SouÄasné umístÄ›ní: %1% ) ", not_specified = "Žádné umístÄ›ní adresáře zatím nezadáno!", browse_saves = "Procházet pro zvolení jiného umístÄ›ní vaÅ¡eho adresáře uložených her ( SouÄasné umístÄ›ní: %1% ) ", default = "Výchozí umístÄ›ní", }, customise_window = { aliens = "Kvůli chybÄ›jícím správným animacím standardnÄ› pacienti s Mimozemskou DNA pÅ™icházejí pouze pÅ™i pohotovosti. Abyste je povolili i jako normální pacienty, staÄí toto vypnout.", average_contents = "Pokud chcete, aby si hra pamatovala vámi pÅ™idané dodateÄné objekty pÅ™i stavbÄ› místností, pak toto zapnÄ›te.", back = "Zavřít tuto nabídku a pÅ™ejít zpÄ›t do Nastavení", movies = "Globální kontrola videí, toto umožňuje zákaz vÅ¡ech videí", fractured_bones = "Kvůli Å¡patné animaci jsou standardnÄ› zakázány pacientky se Zlomenými Kostmi. Pro povolení pacientek s touto diagnózou ve vaší nemocnici musíte toto vypnout.", volume = "Pokud tlaÄítko pro snížení hlasitosti zároveň také otevírá Knihu léÄby pacientů, můžete toto zapnout pro zmÄ›nu klávesové zkratky knihy na Shift + C", intro = "Zapne nebo vypne úvodní video. Pokud chcete, aby video bylo pÅ™ehráváno pÅ™i každém spuÅ¡tÄ›ní CorsixTH, je tÅ™eba zapnout globální kontrolu videí.", paused = "V Theme Hospital může hrÃ¡Ä použít horní nabídku pouze pÅ™i pozastavení hry. To samé platí v CorsixTH, ale pomocí této volby můžete pÅ™i pozastavení povolit vÅ¡e.", }, options_window = { language = "Vybrat %s jako jazyk", language_dropdown_item = "Zvolit %s jako jazyk", width = "Zadejte požadovanou šířku obrazovky", select_language = "Vybrat jazyk hry", select_resolution = "Vybrat nové rozliÅ¡ení", back = "Zavřít okno možností", resolution = "RozliÅ¡ení v kterém by hra mÄ›la být spuÅ¡tÄ›na", fullscreen = "Zdali má být hra spuÅ¡tÄ›na v režimu v oknÄ› nebo celé obrazovky", fullscreen_button = "KliknÄ›te pro pÅ™epnutí režimu celé obrazovky", change_resolution = "ZmÄ›nit rozliÅ¡ení okna na rozmÄ›ry zadané vlevo", apply = "Použít zadané rozliÅ¡ení", cancel = "Vrátit se zpÄ›t bez zmÄ›ny rozliÅ¡ení", height = "Zadejte požadovanou výšku obrazovky", audio_button = "Zapnout nebo vypnout vÅ¡echny zvuky ve hÅ™e", audio_toggle = "Zapnout/vypnout", folder_button = "Možnosti složky", customise_button = "Další nastavení, pomocí kterých si můžete svoji hru pÅ™izpůsobit", }, update_window = { download = "PÅ™ejít na stránku stahování pro získání nejnovÄ›jší verze CorsixTH", ignore = "Zatím si této aktualizace nevšímat. PÅ™i příštím spuÅ¡tÄ›ní CorsixTH budete znovu informováni.", }, information = { close = "Zavřít informaÄní dialogové okno", }, menu_list_window = { save_date = "KliknÄ›te zde pro seÅ™azení seznamu podle posledního data zmÄ›ny", name = "KliknÄ›te zde pro seÅ™azení seznamu podle názvu", back = "Zavřít toto okno", }, cheats_window = { close = "Zavřít dialogové okno cheatů", cheats = { lose_level = "Prohrát souÄasnou úroveň.", emergency = "Vytvoří havárii.", end_year = "PÅ™eskoÄí na konec roku.", earthquake = "Vytvoří zemÄ›tÅ™esení.", money = "PÅ™idá 10.000 na Váš bankovní úÄet.", win_level = "Vyhrát souÄasnou úroveň.", vip = "Vytvoří VIP.", all_research = "DokonÄí veÅ¡kerý výzkum.", create_patient = "Vytvoří Pacienta na kraji mapy.", end_month = "PÅ™eskoÄí na konec mÄ›síce.", epidemic = "Vytvoří nakažlivého pacienta, který může způsobit epidemii", toggle_infected = "Zobrazí/Skryje ikony nakažení pro aktivní, zjiÅ¡tÄ›né epidemie", }, }, buy_objects_window = { price = "Cena položky", cancel = "ZruÅ¡it", confirm = "Koupit položku/y", total_value = "Celková hodnota objednaných položek", decrease = "Koupit o jednu položku ménÄ›", increase = "Koupit o jednu položku více", }, custom_game_window = { free_build = "Toto políÄko zaÅ¡krtnÄ›te, pokud chcete hrát bez penÄ›z a podmínek pro vítÄ›zství a prohru", load_selected_level = "NaÄíst a hrát zvolenou úroveň", choose_game = "KliknÄ›te na úroveň pro zobrazení informací o ní.", }, new_game_window = { easy = "Pokud jste zaÄáteÄníci v simulaÄních hrách, tak toto je volba pro Vás", cancel = "Ah, Já vlastnÄ› nechtÄ›l zaÄít novou hru!", difficulty = "Vyberte úroveň obtížnosti s kterou chcete hru hrát", tutorial = "Pokud chcete se zaÄátkem jednou pomoci, stisknÄ›te toto tlaÄítko.", hard = "Pokud tento druh hry znáte a chcete výzvu, tak si vyberte tuto volbu", medium = "Toto je stÅ™ední cesta, když nevíte, co si vybrat", player_name = "Zadejte jméno kterým chcete být ve hÅ™e oslovováni.", start = "Zahájit hru se zvolenými možnostmi", }, machine_window = { close = "ZruÅ¡it žadatele", replace = "VymÄ›nit hardware", status = "Stav hardwaru", repair = "Zavolat Údržbáře, aby hardware opravil", name = "Název", times_used = "PoÄet použití hardwaru", }, calls_dispatcher = { close = "Zavřít dialogové okno rozvrhovaÄe volání", task = "Seznam úkolů - kliknÄ›te na úkol pro otevÅ™ení okna pÅ™idÄ›leného zamÄ›stnance a pÅ™ejdÄ›te na místo úkolu", assigned = "Tento rámeÄek je oznaÄen, když je nÄ›komu úkol pÅ™idÄ›len.", }, staff_window = { happiness = "Úroveň radosti", salary = "MÄ›síÄní plat", doctor_seniority = "Hodnost - Rezident, Doktor nebo Konzultant", skills = "Zvláštní dovednosti", tiredness = "Úroveň únavy", name = "Jméno zamÄ›stnance", psychiatrist = "Psychiatr", close = "ZruÅ¡it žadatele", face = "Tvář této osoby - kliknÄ›te pro otevÅ™ení obrazovky správy", pick_up = "Zvednout", center_view = "Levým kliknutím se pÅ™iblížíte na zamÄ›stnance, pravým kliknutím mezi nimi pÅ™epínáte", researcher = "Výzkumník", sack = "Vykopnout", surgeon = "Chirurg", ability = "Úroveň schopnosti", }, town_map = { people = "PÅ™epnout lidi", fire_extinguishers = "PÅ™epnout požární hydranty", plants = "PÅ™epnout rostliny", heat_inc = "Zvýšit teplo", balance = "Bilance", heat_level = "Úroveň tepla", objects = "PÅ™epnout objekty", radiators = "PÅ™epnout radiátory", heat_dec = "Snížit teplo", close = "Odejít ze zobrazení mÄ›sta", heating_bill = "ÚÄet za topení", }, casebook = { cure_type = { surgery = "Tato nemoc vyžaduje operaci", drug_percentage = "Tato léÄba používá lék - Váš je úÄinný na %d%%", drug = "Tato léÄba použije lék", machine = "Tato léÄba vyžaduje přístroj", unknown = "Stále nevíte jak léÄit tuto nemoc", psychiatrist = "Psychiatr provádí tuto léÄbu", }, cured = "PoÄet vyléÄení", reputation = "Lék nebo Reputace VyÅ¡etÅ™ení", down = "Posunout dolů", research = "KliknÄ›te zde k použití rozpoÄtu Výzkumu Specializací pro tuto léÄbu", sent_home = "PoÄet odmítnutých pacientů", close = "Zavřít Knihu léÄby pacientů", up = "Posunout nahoru", deaths = "PoÄet úmrtí", earned_money = "Dosud vydÄ›láno", increase = "Zvýšit množství", decrease = "Snížit množství", cure_requirement = { hire_surgeons = "K provádÄ›ní operací potÅ™ebujete zamÄ›stnat dva chirurgy", not_possible = "Tuto léÄbu jeÅ¡tÄ› nezvládáte", hire_staff_old = "Ke zvládnutí této léÄby potÅ™ebujete zamÄ›stnat %s", hire_staff = "Ke zvládnutí této léÄby potÅ™ebujete pÅ™ijmout zamÄ›stnance", hire_surgeon = "K provedení operace potÅ™ebujete zamÄ›stnat druhého chirurga", build_room = "Ke zvládnutí této léÄby potÅ™ebujete vybudovat místnost", build_ward = "Ke zvládnutí této léÄby potÅ™ebujete vybudovat NemocniÄní pokoj", ward_hire_nurse = "Ke zvládnutí této léÄby potÅ™ebujete Sestru v NemocniÄním pokoji", possible = "Tuto léÄbu můžete zvládnout", research_machine = "Pro tuto léÄbu potÅ™ebujete vynalézt nÄ›jaké nástroje", }, treatment_charge = "Poplatek", }, hire_staff_window = { qualifications = "Další Kvalifikace Doktora", salary = "Plat", receptionists = "Zobrazit RecepÄní k dispozici pro najmutí", prev_person = "Zobrazit pÅ™edchozí osobu", psychiatrist = "Psychiatr", nurses = "Zobrazit Sestry k dispozici pro najmutí", doctors = "Zobrazit Doktory k dispozici pro najmutí", doctor_seniority = "Služební vÄ›k Doktora (Rezident, Doktor, Konzultant)", cancel = "ZruÅ¡it", staff_ability = "Schopnost zamÄ›stnance", next_person = "Zobrazit další osobu", researcher = "Výzkumník", handymen = "Zobrazit Údržbáře k dispozici pro najmutí", surgeon = "Chirurg", hire = "Najmout osobu", }, toolbar = { charts = "Grafy", policy = "Zásady", objects = "Zařídit chodby", status = "Stav", reputation = "VaÅ¡e reputace", research = "Výzkum", bank_button = "Levé Kliknutí pro Správce Banky, Pravé Kliknutí pro Bankovní Výpis", rooms = "Postavit místnosti", town_map = "Mapa mÄ›sta", casebook = "Kniha léÄby pacientů", edit = "Upravit místnosti/položky", date = "Datum", staff_list = "Správa zamÄ›stnanců", balance = "VaÅ¡e bilance", hire = "Najmout zamÄ›stnance", }, main_menu = { load_game = "NaÄíst uloženou hru", options = "Upravit různá nastavení", load_menu = { load_slot = "NAÄŒÃST HRU", empty_slot = "PRÃZDNÉ", }, new_game = "ZaÄít novou hru úplnÄ› od zaÄátku", continue = "PokraÄovat v pÅ™edchozí hÅ™e", custom_level = "Postavit Vaší nemocnici ve vlastní úrovni", network = "Spustit hru po síti", exit = "Ne, ne, prosím neodcházejte!", quit = "Odejít", custom_campaign = "Hrát komunitou vytvoÅ™enou kampaň", map_edit = "VytvoÅ™it vlastní mapu", }, queue_window = { num_expected = "PoÄet pacientů, u kterých RecepÄní oÄekává, že se brzy pÅ™ipojí do fronty", dec_queue_size = "ZmenÅ¡ení maximální velikosti fronty", num_entered = "PoÄet pacientů, kteří byli doposud v této místnosti léÄeni", num_in_queue = "PoÄet pacientů ve frontÄ›", close = "Zavřít tohoto žadatele", patient = "TáhnÄ›te pacientem pro jeho pÅ™esun pozicemi ve frontÄ›. Pravým kliknutím na pacienta ho poÅ¡lete domů nebo odkážete do konkurenÄní nemocnice", max_queue_size = "Maximální velikost fronty, kterou by RecepÄní mÄ›la dovolit", inc_queue_size = "ZvÄ›tÅ¡ení maximální velikosti fronty", front_of_queue = "PÅ™etáhnÄ›te pacienta na tuto ikonu pro pÅ™esun na zaÄátek fronty", end_of_queue = "PÅ™etáhnÄ›te pacienta na tuto ikonu pro pÅ™esun na konec fronty", patient_dropdown = { send_home = "Propustit pacienta z nemocnice", hospital_3 = "Odkázat pacienta do jiné nemocnice", reception = "Poslat pacienta k RecepÄní", hospital_2 = "Odkázat pacienta do jiné nemocnice", hospital_1 = "Odkázat pacienta do jiné nemocnice", }, }, load_game_window = { load_game_number = "NaÄíst hru %d", load_game = "NaÄíst hru %s", load_autosave = "NaÄíst automaticky uloženou hru", }, statement = { close = "Zavřít obrazovku Výpisu", }, graphs = { scale = "Měřítko grafu", reputation = "PÅ™epnout Hodnotu Nemocnice", cures = "PÅ™epnout vyléÄení", close = "Zavřít Obrazovku Grafů", wages = "PÅ™epnout výplaty", deaths = "PÅ™epnout úmrtí", balance = "PÅ™epnout bilanci", money_in = "PÅ™epnout příjmy", money_out = "PÅ™epnout výdaje", visitors = "PÅ™epnout návÅ¡tÄ›vníky", }, totd_window = { previous = "Zobrazit pÅ™edchozí radu", next = "Zobrazit další radu", }, fax = { close = "Zavřít toto okno bez vymazání zprávy", }, save_game_window = { save_game = "PÅ™epsat uloženou hru %s", new_save_game = "Zadejte jméno pro novou uloženou hru", }, pay_rise_window = { accept = "Splnit platový požadavek", decline = "Neplatit - místo toho je vykopnout", }, jukebox = { close = "Zavřít jukebox", fast_forward = "Rychle dopÅ™edu", rewind = "PÅ™etoÄit", current_title = "Jukebox", play = "PÅ™ehrát", stop = "Zastavit", loop = "PÅ™ehrávat ve smyÄce", }, handyman_window = { happiness = "Radost", salary = "Plat", prio_machines = "Zvýšit Údržbářovu prioritu opravy přístrojů", tiredness = "Únava", sack = "Vykopnout", close = "ZruÅ¡it žadatele", name = "Jméno údržbáře", pick_up = "Zvednout", prio_litter = "Zvýšit Údržbářovu prioritu zametání odpadků", center_view = "PÅ™iblížit na Údržbáře", prio_plants = "Zvýšit Údržbářovu prioritu zalévání rostlin", face = "Tvář údržbáře", ability = "Schopnost", parcel_select = "Parcela, kde údržbář pÅ™ijímá úkoly. KliknÄ›te pro zmÄ›nu nastavení" }, watch = { hospital_opening = "ÄŒas pro stavbu: toto je zbývající Äas, než je VaÅ¡e nemocnice prohlášena za otevÅ™enou. Kliknutím na zelené tlaÄítko ji otevÅ™e okamžitÄ›.", epidemic = "Epidemie: Äas zbývající pro ututlání epidemie. Když tento Äas vyprší NEBO nakažený pacient odejde z Vaší nemocnice, navÅ¡tíví Vás Hygienický Inspektor. TlaÄítko vypíná a zapíná režim oÄkování. KliknÄ›te na pacienta, aby ho Sestra oÄkovala.", emergency = "Pohotovost: zbývající Äas do vyléÄení vÅ¡ech pacientů pohotovosti.", }, policy = { close = "Zavřít obrazovku zásad", staff_leave = "KliknÄ›te zde, aby zamÄ›stnanci, kteří nemají nic na práci, pomohli kolegům, kteří to potÅ™ebují", staff_stay = "KliknÄ›te zde, aby urÄití zamÄ›stnanci zůstali tam, kde je umístíte", staff_rest = "Jak moc musí být zamÄ›stnanci unavení, než si můžou odpoÄinout", diag_termination = "VyÅ¡etÅ™ení pacienta bude pokraÄovat, dokud si nebudou DoktoÅ™i tak jistí, jako je procento ZASTAVENà PROCEDURY, nebo dokud nebudou vyzkouÅ¡eny vÅ¡echny diagnostické přístroje", diag_procedure = "Pokud je procento Doktorovy diagnózy nižší, než procento POSLAT DOMÅ®, pacient bude poslán domů. Pokud je diagnóźa lepší než procento HÃDAT LÉČBU, pacient bude poslán na přísluÅ¡nou léÄbu", }, research_policy = { research_progress = "Vývoj smÄ›rem k dalšímu objevu v této kategorii: %1%/%2%", no_research = "V této kategorii nyní žádný výzkum neprobíhá", }, status = { happiness = "Celková radost lidí ve Vaší nemocnici", thirst = "Celková úroveň žíznÄ› lidí ve Vaší nemocnici", reputation = "VaÅ¡e Reputace musí být alespoň %d. Nyní je %d", population = "PotÅ™ebujete, aby %d%% celkové populace chodilo do Vaší nemocnice", population_chart = "Graf zobrazující jakou Äást místní populace každá nemocnice pÅ™itahuje", num_cured = "Tento úkol je vyléÄit %d lidí. Dosud jste vyléÄili %d", close = "Zavřít obrazovku PÅ™ehledu", balance = "VaÅ¡e bankovní bilance musí být alespoň %d. Nyní je %d", win_progress_other = "Zobrazit postup smÄ›rem ke kritériu výhry pro %s", value = "VaÅ¡e nemocnice musí mít cenu %d€. V souÄasnosti má cenu %d€", win_progress_own = "Zobrazit postup smÄ›rem ke kritériu výhry pro Vaší vlastní nemocnici", warmth = "Celková úroveň tepla lidí ve Vaší nemocnici", percentage_killed = "Tento úkol je zabít ménÄ› než %d%% VaÅ¡ich návÅ¡tÄ›vníků. Dosud jste zabili %d%% z nich", percentage_cured = "PotÅ™ebujete vyléÄit %d%% návÅ¡tÄ›vníků Vaší nemocnice. Nyní jste vyléÄili %d%%", }, patient_window = { happiness = "Radost osoby", thirst = "Jak moc má osoba žízeň", queue = "Zobrazit podrobnosti fronty této osoby", abort_diagnosis = "Poslat osobu na léÄbu hned místo Äekání na dokonÄení vyÅ¡etÅ™ení", close = "ZruÅ¡it žadatele", casebook = "Zobrazit podrobnosti o nemoci této osoby", warmth = "Úroveň tepla této osoby", graph = "KliknÄ›te pro pÅ™epínání mezi grafem zdraví osoby a jejich historií vyÅ¡etÅ™ení", send_home = "Propustit pacienta z nemocnice", center_view = "PÅ™iblížit hru na osobu", }, message = { button_dismiss = "Levým kliknutím si zprávu pÅ™eÄtete, pravým kliknutím jí hodíte pod stůl", button = "Levým kliknutím zprávu otevÅ™ete", }, build_room_window = { room_classes = { treatment = "Vybrat místnosti Obecného VyÅ¡etÅ™ení", clinic = "Vybrat místnosti Specializovaných OddÄ›lení", facilities = "Vybrat místnosti Specializovaných Zařízení", diagnosis = "Vybrat místnosti pro Diagnózu", }, close = "ZruÅ¡it tohoto žadatele a navrátit se do hry", cost = "Cena Vaší souÄasnÄ› zvolené místnosti", }, rooms = { dna_fixer = "Doktor používá Místnost SpravovaÄe DNA pro léÄbu pacientů s Mimozemskou DNA", gps_office = "Pacienti obdrží jejich úvodní konzultaci a výsledky v Kanceláři Praktického LékaÅ™e", toilets = "Postavte Toalety, abyste zabránili Pacientům dÄ›lat ve Vaší nemocnici bordel!", general_diag = "Doktor používá místnost Obecného VyÅ¡etÅ™ení pro základní vyÅ¡etÅ™ení pacientů. Levné a Äasto velmi úÄinné", hair_restoration = "Doktor používá Místnost ObnovovaÄe Vlasů pro léÄbu PleÅ¡atosti", scanner = "Doktor používá Skener k vyÅ¡etÅ™ení Pacientů", research_room = "DoktoÅ™i s Výzkumnými dovednostmi můžou objevit nové léky a přístroje ve Výzkumné Místnosti", cardiogram = "Doktor používá Místnost s Kardiem k vyÅ¡etÅ™ení Pacientů", ward = "NemocniÄní pokoje jsou užiteÄné jak pro vyÅ¡etÅ™ení, tak i pro léÄbu. Pacienti jsou sem posláni pro pozorování a také pro zotavení z operace do nemocniÄního pokoje se Sestrou", psychiatry = "Psychiatrie léÄí šílené pacienty a pomáhá v diagnóze ostatních pacientů, ale vyžaduje Doktora s Psychiatrickou dovedností", staffroom = "DoktoÅ™i a Sestry si v místnosti pro zamÄ›stnance odpoÄinou a nebudou tak unaveni", electrolysis = "Doktor používá místnost Elektrolýzy k léÄbÄ› Vlasoitidy", jelly_vat = "Doktor používá Želé Nádrž k léÄbÄ› Želitidy", x_ray = "Doktor používá Rentgen k vyÅ¡etÅ™ení Pacientů", inflation = "Doktor používá Nafukovárnu k léÄbÄ› Pacientů s Nafouknutými Hlavami", ultrascan = "Doktor používá Ultrasken k vyÅ¡etÅ™ení Pacientů", blood_machine = "Doktor používá Krevní Stroj k vyÅ¡etÅ™ení Pacientů", tongue_clinic = "Doktor používá Místnost SekáÄku Jazyka k léÄbÄ› Ochablého Jazyka", fracture_clinic = "Sestra používá OddÄ›lení Fraktur pro spravení Zlomených Kostí", training_room = "Výuková místnost s Konzultantem může být použita k výuce jiných Doktorů", decontamination = "Doktor používá DekontaminaÄní Sprchu k léÄbÄ› Radioaktivity", pharmacy = "Sestra v LékárnÄ› rozdÄ›luje léky k léÄbÄ› pacientů", operating_theatre = "OperaÄní Sál potÅ™ebuje dva Doktory s chirurgickými dovednostmi", }, bank_manager = { interest_payment = "MÄ›síÄní splátka úroků", borrow_5000 = "PůjÄit si 5000€ od banky", current_loan = "SouÄasné nevyřízené půjÄky", repay_5000 = "Splatit 5000€ bance", hospital_value = "SouÄasná hodnota vaší nemocnice", show_graph = "Zobrazit graf oÄekáváných plateb od %s", insurance_owed = "Množství penÄ›z, které Vám dluží %s", graph = "Graf oÄekávaných plateb od %s", inflation_rate = "RoÄní míra inflace", graph_return = "Vrátit se k pÅ™edchozímu zobrazení", interest_rate = "RoÄní úroková míra", close = "Zavřít obrazovku Správce Banky", balance = "VaÅ¡e bankovní bilance", }, window_general = { cancel = "ZruÅ¡it", confirm = "Potvrdit", }, research = { cure_dec = "Snížit procento LéÄby", drugs_inc = "Zvýšit procento výzkumu Léků", diagnosis_dec = "Snížit procento Výzkumu", improvements_inc = "Zvýšit procento VylepÅ¡ení", drugs_dec = "Snížit procento Léků", diagnosis_inc = "Zvýšit procento výzkumu Vybavení", close = "Zavřít obrazovku Výzkumu", specialisation_inc = "Zvýšit procento Mimořádného Výzkumu", improvements_dec = "Snížit procento VylepÅ¡ení", cure_inc = "Zvýšit procento Výzkumu", specialisation_dec = "Snížit procento Mimořádného Výzkumu", allocated_amount = "Množství pÅ™idÄ›leného rozpoÄtu", }, lua_console = { close = "Zavřít konzoli", textbox = "Zde zejte kód Lua pro spuÅ¡tÄ›ní", execute_code = "Spustit k=od, který jste zadali", }, place_objects_window = { pick_up = "Zvednout objekt", cancel = "ZruÅ¡it", buy_sell = "Koupit/prodat objekty", confirm = "Potvrdit", }, staff_list = { happiness = "Zobrazuje, jak moc jsou zamÄ›stnanci spokojení", researcher_train = "Na %d%% vyÅ¡kolen pro to, aby se stal Výzkumníkem", ability_2 = "Úroveň schopnosti zamÄ›stnance", surgeon_train = "Na %d%% vyÅ¡kolen pro to, aby se stal Chirurgem", tiredness = "Zobrazuje, jak moc jsou zamÄ›stnanci unavení", psychiatrist = "Kvalifikovaný Psychiatr", sack = "Vykopnout tuto osobu", next_person = "Zobrazit další stránku", researcher = "Kvalifikovaný Výzkumník", handymen = "Zobrazit seznam Údržbářů zamÄ›stnaných v této nemocnici", surgeon = "Kvalifikovaný Chirurg", ability = "Zobrazí úroveň schopnosti tÄ›chto zamÄ›stnanců", salary = "SouÄasný plat této osoby", skills = "Zvláštní dovednosti", happiness_2 = "Morálka ZamÄ›stnance", prev_person = "Zobrazit pÅ™edchozí stránku", tiredness_2 = "Únava ZamÄ›stnance", nurses = "Zobrazit seznam Sester zamÄ›stnaných v této nemocnici", doctors = "Zobrazit seznam Doktorů zamÄ›stnaných v této nemocnici", close = "Odejít a navrátit se do hry", bonus = "Zaplatit této osobÄ› 10% bonus", pay_rise = "Zvýšit plat této osoby o 10%", doctor_seniority = "Služební vÄ›k doktora", detail = "Důraz na Detail", view_staff = "Zobrazit osobu pÅ™i práci", psychiatrist_train = "Na %d%% vyÅ¡kolen pro to, aby se stal Psychiatrem", receptionists = "Zobrazit seznam RecepÄních zamÄ›stnaných v této nemocnici", }, objects = { dna_fixer = "23 OB_DNA_FIXER", op_sink1 = "33 OB_OP_SINK_1", litter_bomb = "Odpadková bomba: poÅ¡kozuje nemocnice konkurenta", auto_autopsy = "Pitva: velmi pomáhá v objevování nových léÄeb", door = "DveÅ™e: lidé tyto hodnÄ› zavírají a otevírají.", projector = "37 OB_PROJECTOR", radiation_shield = "28 OB_RAD_SHIELD", entrance_left = "58 OB_ENT_LDOOR", operating_table = "30 OB_OP_TABLE", bed2 = "nepoužito", cabinet = "Kartoték: obsahuje složky pacientů, poznámky a dokumenty výzkumu.", console = "15 OB_SCANNER_CONSOLE", bed = "Postel: hodnÄ› nemocní lidé na tÄ›chto leží.", couch = "18 OB_COUCH", drinks_machine = "Automat na Nápoje: zabraňuje žízni pacientů a poskytuje výdÄ›lek.", shower = "54 OB_DECON_SHOWER", electrolyser = "46 OB_ELECTRO", table2 = "12 OB_BTABLE", radiator = "Radiátor: zabraňuje, aby ve vaší nemocnici byla zima.", chair = "Židle: pacienti na tomto sedí a povídají o svých nemocech.", jelly_moulder = "47 OB_JELLY_VAT", computer = "PoÄítaÄ: klíÄová souÄást výzkumu", ultrascanner = "22 OB_ULTRASCAN", bin = "KoÅ¡: pacienty sem dávají své odpadky.", surgeon_screen = "35 OB_SURGEON_SCREEN", slicer = "26 OB_SLICER", bed3 = "nepoužito", x_ray = "27 OB_XRAY", video_game = "Video hra: Nechte vaÅ¡e zamÄ›stnance odpoÄinout pÅ™i Vysokém Oktanu.", atom_analyser = "Chemický mixér: umístÄ›n ve výzkumném oddÄ›lení, tento stroj zrychlí celý výzkumný proces.", inflator = "NafukovaÄ: léÄí lidi s Nafouknutou Hlavou.", toilet = "Záchod: pacienti, eh, toto používají.", x_ray_viewer = "29 OB_XRAY_VIEWER", cast_remover = "24 OB_CAST_REMOVE", entrance_right = "59 OB_ENT_RDOOR", litter = "Odpadek: Ponechán na zemi pacientem, protože nenalezl koÅ¡, do kterého by ho mohl hodit.", cardio = "13 OB_CARDIO", plant = "Rostlina: udržuje pacienty spokojené a Äistí vzduch.", pool_table = "KuleÄníkový stůl: pomáhá odpoÄinout vaÅ¡im zamÄ›stnancům.", tv = "TV: zajistÄ›te, aby zamÄ›stnanci nezmeÅ¡kali jejich oblíbené programy.", sofa = "Pohovka: ZamÄ›stnanci odpoÄívající v Místnosti pro ZamÄ›stnance budou tiÅ¡e sedÄ›t na pohovce, ledaže by existoval lepší způsob, jak si odpoÄinout.", lamp = "Lampa: září svÄ›tlo a umožňuje zamÄ›stnanci vidÄ›t.", fire_extinguisher = "Hasicí přístroj: zmenÅ¡uje nebezpeÄí od selhávajících přístrojů.", bench = "SedaÄka: poskytuje sezení pro jednoho pacienta, dÄ›lá Äekání pohodlnÄ›jší.", scanner = "14 OB_SCANNER", op_sink2 = "34 OB_OP_SINK_2", toilet_sink = "Umyvadlo: VaÅ¡i pacienti více uvÄ›domÄ›lí v hygienÄ› si můžou v tomto umýt své zaÅ¡pinÄ›né ruce. Pokud není dostatek umyvadel, pacienti budou nespokojení.", hair_restorer = "25 OB_HAIR_RESTORER", desk = "Stůl: důležitý pro Doktora, aby si na nÄ›j mohl dát PC.", swing_door2 = "53 OB_DOUBLE_DOOR2", lecture_chair = "PÅ™ednášková židle: VaÅ¡i Å¡kolící se DoktoÅ™i zde sedí a píšou si poznámky, nudí se a jen tak si Ämárají. Čím více židlí umístíte, tím vÄ›tší může vaÅ¡e třída být.", pharmacy_cabinet = "Lékárna: kde jsou léky uchovávány", screen = "16 OB_SCREEN", table1 = "Stůl (ODSTRANÄšNO): obsahuje kolekci Äasopisů, aby udržovaly Äekající pacienty spokojené.", gates_of_hell = "48 OB_HELL", blood_machine = "42 OB_BLOOD_MC", comfortable_chair = "61 OB_COMFY_CHAIR", bookcase = "Knihovna: materiál k nahlédnutí pro Doktory.", reception_desk = "Recepce: vyžaduje RecepÄní, která posílá pacienty k Doktorům.", crash_trolley = "20 OB_CRASH", swing_door1 = "52 OB_DOUBLE_DOOR1", skeleton = "Kostlivec: používán ke cviÄebním úÄelům a na Halloween.", }, custom_campaign_window = { choose_campaign = "Zvolte kampaň pro zobrazení informací o ní.", start_selected_campaign = "NaÄte první úroveň kampanÄ›", }, save_map_window = { map = "PÅ™epsat mapu %s", new_map = "Zadejte název uložené hry s mapou", }, } humanoid_name_ends = { [1] = "KOVÃŘ", [2] = "KNOT", [3] = "ÚTES", [4] = "FIN", [5] = "SNOB", [6] = "KOPEJ", [7] = "TUNA", [8] = "SYN", [9] = "LADA", [10] = "PLOD", [11] = "STROM", [12] = "LOK", [13] = "Å UNKA", [14] = "PRÃH", [15] = "VÃHR", [16] = "PECH", [17] = "Å VÉD", [18] = "KUNA", [19] = "POND", [20] = "MUŽ", [21] = "MÄšLTO", [22] = "E", [23] = "VÃCE", [24] = "BAŽINA", [25] = "NECH", [26] = "ÄŒIN", } place_objects_window = { drag_blueprint = "TáhnÄ›te návrh, dokud nebude spokojeni s jeho velikostí", place_objects = "UmístÄ›te objekty a pÅ™esunujte je, dokud nebudete spokojení, pak potvrÄte", place_objects_in_corridor = "UmístÄ›te objekty na chodbÄ›", place_door = "UmístÄ›te dveÅ™e", pick_up_object = "KliknÄ›te na objekt pro zvednutí, nebo vyberte jinou možnost z žadatele", confirm_or_buy_objects = "Může místnost potvrdit, nebo koupit Äi pÅ™esunout nÄ›jaké objekty", place_windows = "UmístÄ›te okna, pokud chcete, pak kliknÄ›te na potvrdit", } transactions = { cure = "LéÄba", eoy_bonus_penalty = "Bonus/Penalizace na konci roku", wages = "Platy", machine_replacement = "Cena Náhradního Přístroje", cheat = "Peníze pomocí cheatu", bank_loan = "PůjÄka Banky", build_room = "Stavba Místnosti", research = "Náklady Výzkumu", general_bonus = "Platba Obecného Bonusu", heating = "Náklady za VytápÄ›ní", buy_object = "KoupÄ› Objektu", cure_colon = "LéÄba:", emergency_bonus = "Platba Bonusu z Havárie", epidemy_coverup_fine = "Pokuta za Ututlání Epidemie", research_bonus = "Bonus Výzkumu", buy_land = "KoupÄ› Pozemku", final_treat_colon = "KoneÄná LéÄba:", drug_cost = "Cena Léku", personal_bonus = "Vyplacení Osobního Bonusu", severance = "OdÅ¡kodné", jukebox = "Příjem: Jukebox", drinks = "Příjem: Automaty na Nápoje", vaccination = "OÄkování", insurance_colon = "PojiÅ¡tÄ›ní:", epidemy_fine = "Pokuta za Epidemii", deposit = "Záloha za LéÄbu", compensation = "OdÅ¡kodné Vlády", loan_interest = "Úrok z PůjÄky", sell_object = "Prodej Objektu", vip_award = "Peněžní OdmÄ›na od VIP", treat_colon = "LéÄba:", loan_repayment = "Splacení PůjÄky", eoy_trophy_bonus = "Bonus z Cen na konci roku", advance_colon = "Pokrok:", hire_staff = "Najmutí zamÄ›stnanců", overdraft = "Úrok z PÅ™eÄerpání", } diseases = { jellyitis = { cure = "LéÄba - Pacient je na chvíli ponoÅ™en do Želé Nádrže ve speciální místnosti.", cause = "PříÄina - strava bohatá na želé a příliÅ¡ mnoho pohybu.", name = "Želitida", symptoms = "Příznaky - nadmÄ›rný tÅ™es a Äasté padání.", }, hairyitis = { cure = "LéÄba - Elektrolytický přístroj odstraní vlasy a uzavÅ™e póry.", cause = "PříÄina - Dlouhodobé vystavení mÄ›síci.", name = "Vlasoitida", symptoms = "Příznaky - trpící pocítí zlepÅ¡ený Äich.", }, golf_stones = { cure = "LéÄba - Kameny musí být odstranÄ›ny pomocí operace vyžadující dva Chirurgy.", cause = "PříÄina - vystavení se jedovatému plynu uvnitÅ™ golfových míÄků.", name = "Golfové Kameny", symptoms = "Symptomy - blouznÄ›ní a pokroÄilý stud.", }, discrete_itching = { cure = "LéÄba - Pacient vypije lékárnický lepkavý sirup k zabránÄ›ní svÄ›dÄ›ní kůže.", cause = "PříÄina - malý hmyz s ostrými zuby.", name = "Diskrétní SvÄ›dÄ›ní", symptoms = "Příznaky - Å¡krábání, vedoucí k zánÄ›tu Äásti tÄ›la.", }, serious_radiation = { cure = "LéÄba - Pacient musí být umístÄ›n do DekontaminaÄní Sprchy a pořádnÄ› vyÄiÅ¡tÄ›n.", cause = "PříÄina - zámÄ›na izotopů plutonia za žvýkaÄku.", name = "Vážná Radiace", symptoms = "Příznaky - pacienti s touto nemocí se cítí velmi, velmi mizernÄ›.", }, broken_wind = { cure = "LéÄba - hustá smÄ›s speciálních vodních atomů je v LékárnÄ› rychle vypita.", cause = "PříÄina - použití Å¡lapacího mlýnu v tÄ›locviÄnÄ› po jídle.", name = "DuÅ¡nost", symptoms = "Příznaky - zneklidnÄ›ní lidí přímo za pacientem.", }, ruptured_nodules = { cure = "LéÄba - Dva kvalifikovaní Chirurgové musí uzliny odstranit použitím pevných rukou.", cause = "PříÄina - bungee jumping za studeného poÄasí.", name = "Roztržené Uzliny", symptoms = "Příznaky - neschopnost si pohodlnÄ› sednout.", }, invisibility = { cure = "LéÄba - Barevná tekutina vypitá v LékárnÄ› brzo pacienta obnoví do plné pozorovatelnosti.", cause = "PříÄina - kousnutí radioaktivním (a neviditelným) mravencem.", name = "Neviditelnost", symptoms = "Příznaky - pacienti netrpí žádnou újmou. Ba nÄ›kteří používají tuto nemoc k uskuteÄnÄ›ní kanadských žertíků na své známé.", }, infectious_laughter = { cure = "LéÄba - Kvalifikovaný Psychiatr musí pacientovi pÅ™ipomenout, jak závažná tato nemoc je.", cause = "PříÄina - klasická situaÄní komedie.", name = "Nakažlivý Smích", symptoms = "Příznaky - bezmocné potlaÄování smíchu a opakování nevtipných frází.", }, diag_blood_machine = { name = "VyÅ¡e Krevní Stroj", }, general_practice = { name = "Praxe Praktického LékaÅ™e", }, fractured_bones = { cure = "LéÄba - Je nastavena sádra, pak odstranÄ›na použitím odstraňovacího přístroje řízeného laserem.", cause = "PříÄina - padání z vysokých vÄ›cí na beton.", name = "Zlomené Kosti", symptoms = "Příznaky - hlasité kÅ™upnutí a neschopnost použít zasažené konÄetiny.", }, corrugated_ankles = { cure = "LéÄba - TroÅ¡ku jedovatá smÄ›s bylin a koÅ™ení je vypita k posílení kloubů.", cause = "PříÄina - pÅ™ejíždÄ›ní opatÅ™ení ke zklidnÄ›ní dopravy na silnici.", name = "ZvlnÄ›né Klouby", symptoms = "Příznaky - Obuv není nasazena pohodlnÄ›.", }, diag_psych = { name = "VyÅ¡e Psychiatr", }, sweaty_palms = { cure = "LéÄba - Psychiatr musí pacientovi tuto vymyÅ¡lenou chorobu rozmluvit.", cause = "PříÄina - strach z pracovních pohovorů.", name = "Zpocené DlanÄ›", symptoms = "Příznaky - potÅ™es rukou s pacientem je jako uchytit nedávno ponoÅ™enou houbu.", }, diag_x_ray = { name = "VyÅ¡e Rentgen", }, diag_ward = { name = "VyÅ¡e NemocniÄní Pokoj", }, slack_tongue = { cure = "LéÄba - Jazyk je umístÄ›n do SekáÄku a je rychle, úÄinnÄ› a bezbolestnÄ› odstranÄ›n.", cause = "PříÄina - vÄ›Äné diskutování o televizních seriálech.", name = "Ochablý Jazyk", symptoms = "Příznaky - Jazyk se nafoukne do pÄ›tinásobku své původní délky.", }, sleeping_illness = { cure = "LéÄba - Sestra podá vysokou dávku silného stimulantu.", cause = "PříÄina - abnormálnÄ› aktivní žláza spanku v patÅ™e úst.", name = "Spánková Choroba", symptoms = "Příznaky - NepÅ™ekonatelná touha se vÅ¡ude vyspat.", }, uncommon_cold = { cure = "LéÄba - Velký douÅ¡ek medicíny proti NeobyÄejnému Nachlazení vytvoÅ™ená ze speciálních přísad v LékárnÄ› nemoc vyléÄí.", cause = "PříÄina - malé ÄásteÄky nosního hlenu ve vzduchu.", name = "NeobyÄejné Nachlazení", symptoms = "Příznaky - rýma, kýchání a odbarvené plíce.", }, transparency = { cure = "LéÄba - Lékárenský nápoj ze speciálnÄ› zchlazené a obarvené vody tuto nemoc vyléÄí.", cause = "PříÄina - lízání jogurtu z krycí folie otevÅ™ených víÄek.", name = "Průhlednost", symptoms = "Příznaky - tÄ›lo je uÄinÄ›no průhledným a hrůzostraÅ¡ným.", }, diag_cardiogram = { name = "VyÅ¡e Kardio", }, diag_general_diag = { name = "VyÅ¡e Obecné", }, spare_ribs = { cure = "LéÄba - Žebra musí být vyňata dvÄ›ma Chirurgy a dána pacientovi v sáÄku.", cause = "PříÄina - sezení na studených kamenných podlahách.", name = "NadbyteÄná Žebra", symptoms = "Příznaky - nepříjemný pocit nafouknutí.", }, the_squits = { cure = "LéÄba - Lepkavá smÄ›s vláknitých lékárenských chemikálií zpevní pacientovy vnitÅ™nosti.", cause = "PříÄina - jedení pizzy nalezené za sporákem.", name = "HnaÄka", symptoms = "Příznaky - ehm. Tohle jistÄ› víte.", }, broken_heart = { cure = "LéÄba - Dva Chirurgové otevÅ™ou hrudník a, zadržujíce dech, něžnÄ› srdce spraví.", cause = "PříÄina - nÄ›kdo bohatší, mladší a Å¡tíhlejší než pacient.", name = "Zlomené Srdce", symptoms = "Příznaky - plÃ¡Ä a zranÄ›ní z opakované námahy způsobené hodinami trhání fotek z dovolené.", }, baldness = { cure = "LéÄba - Vlasy jsou ucelenÄ› slouÄeny s hlavou pacienta použitím tohoto bolestivého přístroje.", cause = "PříÄina - lhaní a vymýšlení příbÄ›hů pro zvýšení popularity.", name = "PleÅ¡atost", symptoms = "Příznaky - lesklá hlava a rozpaky.", }, bloaty_head = { cure = "LéÄba - Nafouknutá hlava se praskne, pak je znovu nafouknuta na správný tlak použitím chytrého přístroje.", cause = "PříÄina - Äichání sýra a pití nevyÄiÅ¡tÄ›né dešťové vody.", name = "Nafouknutá Hlava", symptoms = "Příznaky - velmi nepohodlné pro nemocného.", }, gut_rot = { cure = "LéÄba - Sestra může podat výbÄ›r rozpuÅ¡tÄ›ných chemikálií k pokrytí žaludku.", cause = "PříÄina - Whisky Sirup Proti KaÅ¡li Dobrých ÄŒasů Paní O'Malleyové.", name = "Shnilé VnitÅ™nosti", symptoms = "Příznaky - žádný kaÅ¡el, ale také žádná pokrývka stÄ›ny žaludku.", }, iron_lungs = { cure = "LéÄba - Dva Chirurgové na OperaÄním Sále operací odstraní plíce pevné jako sádra.", cause = "PříÄina - smog v centru mÄ›sta smíchaný s pozůstatky kebabu.", name = "Železné Plíce", symptoms = "Příznaky - schopnost dýchat oheň a hlasitÄ› kÅ™iÄet pod vodou.", }, chronic_nosehair = { cure = "LéÄba - Lektvar na odstranÄ›ní ohavných chlupů je podán ústnÄ›, pÅ™ipraven Sestrou v LékárnÄ›.", cause = "PříÄina - pohrdavé popotahování na ty, kteří jsou na tom hůř než pacient.", name = "StraÅ¡né Chlupy v Nose", symptoms = "Příznaky - knír z chlupů z kterých by si i jezevec mohl udÄ›lat doupÄ›.", }, kidney_beans = { cure = "LéÄba - Dva Chirurgové musí fazole odstranit, aniž by se dotkli okrajů ledvin.", cause = "PříÄina - rozkousávání kostek ledu v nápojích.", name = "Ledvinové Fazole", symptoms = "Příznaky - bolest a Äasté výlety na záchod.", }, fake_blood = { cure = "LéÄba - UklidnÄ›ní Psychiatrem je jediný způsob jak tento problém Å™eÅ¡it.", cause = "PříÄina - pacient je vÄ›tÅ¡inou objetí kanadského žertíku.", name = "FaleÅ¡ná Krev", symptoms = "Příznaky - ÄŒervená tekutina v žilách, která se vypaÅ™uje pÅ™i styku s obleÄením.", }, heaped_piles = { cure = "LéÄba - Příjemný, pÅ™esto úÄinný kyselinný nápoj rozpustí hemeroidy zevnitÅ™.", cause = "PříÄina - postávání u vodních chladiÄů.", name = "NahromadÄ›né Hemeroidy", symptoms = "Příznaky - pacient cítí jako když on/ona sedí na pytlíku kuliÄek.", }, gastric_ejections = { cure = "LéÄba - Vypití speciálního svazovacího roztoku zabrání Äemukoliv být katapultováno.", cause = "PříÄina - pálivé mexické nebo indické jídlo.", name = "ŽaludeÄní Katapulty", symptoms = "Příznaky - napůl strávené jídlo je vysíláno z pacienta v náhodných svazcích.", }, diag_ultrascan = { name = "VyÅ¡e Ultrasken", }, alien_dna = { cure = "LéÄba - DNA je mechanicky odstranÄ›na, vyÄiÅ¡tÄ›na od mimozemských Äástic a rychle nahrazena.", cause = "PříÄina - objímaÄ obliÄeje vyzbrojen inteligentní mimozemskou krví.", name = "Mimozemská DNA", symptoms = "Příznaky - postupná promÄ›na v mimozemšťana a touha zniÄit naÅ¡e mÄ›sta.", }, king_complex = { cure = "LéÄba - Psychiatr Å™ekne pacientovi jak směšnÄ› on nebo ona vypadá.", cause = "PříÄina - Způsobeno duchem Krále, který vstoupí do pacientovy mysli a ovládne ji.", name = "Králův Komplex", symptoms = "Příznaky - noÅ¡ení barevné semiÅ¡ové obuvi a jedení cheeseburgerů.", }, autopsy = { name = "Pitva", }, unexpected_swelling = { cure = "LéÄba - Nabobtnání může být zmenÅ¡eno pouze propíchnutím bÄ›hem operace, vyžadující dva Chirurgy.", cause = "PříÄina - cokoliv neÄekané.", name = "NeÄekané Nabobtnání", symptoms = "Příznak - nabobtnání.", }, third_degree_sideburns = { cure = "LéÄba - ZamÄ›stnanci Psychologie musí, za použití moderních technik, pÅ™esvÄ›dÄit pacienta, že tyto vlasaté nezbytné doplňky jsou hloupost.", cause = "PříÄina - Melancholická touha po 70. letech", name = "Licousy 3. stupnÄ›", symptoms = "Příznaky - velké vlasy, svÄ›tlice, platformy a jiskÅ™ivý make-up.", }, pregnancy = { cure = "LéÄba - DítÄ› je odstranÄ›no na OperaÄním Sále, umyto a pÅ™edstaveno pacientovi.", cause = "PříÄina - výpadky proudu v prostorech mÄ›st.", name = "TÄ›hotenství", symptoms = "Příznaky - vybíravé stravování s následným pivním pupkem.", }, diag_scanner = { name = "VyÅ¡e Skener", }, tv_personalities = { cure = "LéÄba - VyÅ¡kolený Psychiatr musí pÅ™esvÄ›dÄit pacienta, aby prodal svoji TV a koupil si rádio.", cause = "PříÄina - denní televizní vysílání.", name = "TV Osobnosti", symptoms = "Příznaky - bludy o schopnosti uvádÄ›t poÅ™ad o vaÅ™ení.", }, } pay_rise = { poached = "%s mi nabídl %d. Jestliže mi nebudete platit stejnÄ›, tak jdu pryÄ.", regular = { [1] = "Jsem naprosto vyÄerpaný. PotÅ™ebuji si hodnÄ› odpoÄinout, navíc zvýšení o %d, pokud nechcete, abych tuto blbou práci povÄ›sil na hÅ™ebík.", [2] = "Jsem velmi unavený. PotÅ™ebuji si odpoÄinout a zvýšit plat o %d, což celkovÄ› bude %d. UdÄ›lejte to hned, Vy despoto.", [3] = "No tak. DÅ™u tady jako kůň. Dejte mi bonus %d a já zůstanu ve vaší nemocnici.", [4] = "Jsem velmi nešťastný. Požaduji zvýšení o %d, tím můj plat bude %d, jinak odcházím.", [5] = "Mí rodiÄe mi říkali, že zdravotnická profese má dobré platy. Takže mi zvyÅ¡te plat o %d nebo se stanu producentem poÄítaÄových her.", [6] = "Jsem naÅ¡tvaný. Máte mi platit sluÅ¡nou mzdu. Myslím si, že zvýšení o %d by mÄ›lo staÄit.", }, definite_quit = "Nic, co můžete udÄ›lat, mÄ› tu neudrží. Mám tohoto místa plné zuby.", } menu_list_window = { back = "Zpátky", save_date = "ZmÄ›nÄ›no", name = "Název", } misc = { low_res = "Nízké rozl", send_message = "Poslat zprávu hráÄi %d", send_message_all = "Poslat zprávu vÅ¡em hráÄům", done = "VÅ¡e Hotovo", pause = "Pozastavit", no_heliport = "BuÄ jeÅ¡tÄ› nebyly objeveny žádné nemoci, nebo na této mapÄ› není heliport.", save_success = "Hra v Pořádku Uložena", not_yet_implemented = "(není jeÅ¡tÄ› zavedeno)", force = "Donutit", mouse = "MyÅ¡", grade_adverb = { extremely = "extrémnÄ›", moderately = "stÅ™ednÄ›", mildly = "mírnÄ›", }, balance = "Soubor Rovnováhy:", hospital_open = "Nemocnice OtevÅ™ena", out_of_sync = "Hra není synchronizována", save_failed = "CHYBA: Hru Nelze Uložit", load_failed = "Uloženou hru nelze naÄíst", } progress_report = { win_criteria = "KRITÉRIA VÃTÄšZSTVÃ", more_drinks_machines = "Postavte více automatů na nápoje. ", quite_unhappy = "VaÅ¡i lidé jsou pÄ›knÄ› nešťastní. ", too_cold = "Je tu příliÅ¡ velká zima. UmístÄ›te radiátory. ", header = "Hlášení o Postupu", free_build = "VOLNÉ STAVÄšNÃ", too_hot = "Zorganizujte si váš systém vytápÄ›ní. Je tu příliÅ¡ vedro. ", percentage_pop = "% populace", very_unhappy = "VaÅ¡i lidé jsou velmi nešťastní. ", } new_game_window = { easy = "Rezident (Jednoduché)", cancel = "ZruÅ¡it", caption = "Kampaň", difficulty = "Obtížnost", option_off = "Vypnuto", option_on = "Zapnuto", tutorial = "Výuka", hard = "Konzultant (Těžké)", medium = "Doktor (StÅ™ední)", start = "Zahájit", player_name = "Jméno hráÄe", } date_format = { daymonth = "%1% %2:months%", } research = { allocated_amount = "PÅ™idÄ›lené Množství", funds_allocation = "PÅ™idÄ›lení Financí", categories = { cure = "Nástroje pro LéÄbu", drugs = "Výzkum Léků", improvements = "VylepÅ¡ení", diagnosis = "Diagnostické Nástroje", specialisation = "Specializace", }, } bank_manager = { current_loan = "SouÄasná PůjÄka", balance = "Bilance", interest_payment = "Platba Úroků", hospital_value = "Hodnota Nemocnice", interest_rate = "Úroková Míra", statistics_page = { balance = "Bilance", current_balance = "SouÄasná Bilance", date = "Datum", details = "Podrobnosti", money_out = "Náklady", money_in = "Příjmy", }, inflation_rate = "Míra Inflace", insurance_owed = "Dluh na PojiÅ¡tÄ›ní", } casebook = { cure = "léÄba", treatment_charge = "poplatek za vyÅ¡etÅ™ení", reputation = "reputace", research = "soustÅ™edit výzkum", sent_home = "odmítnuto", deaths = "úmrtí", earned_money = "vydÄ›láno penÄ›z", cure_desc = { hire_surgeons = "PotÅ™ebujete zamÄ›stnat Chirurgy.", improve_cure = "ZlepÅ¡it LéÄbu.", no_cure_known = "Žádná Známá LéÄba.", build_room = "DoporuÄuji, abyste postavili %s", hire_nurses = "MÄ›li byste zamÄ›stnat pár Sester.", build_ward = "Stále potÅ™ebujete postavit NemocniÄní pokoj.", hire_psychiatrists = "Musíte zamÄ›stnat Psychiatry.", cure_known = "LéÄba.", hire_doctors = "PotÅ™ebujete zamÄ›st¨nat pár Doktorů.", }, cured = "uzdravení", } original_credits = { [1] = " ", [2] = " ", [3] = " ", [4] = " ", [5] = " ", [6] = " ", [7] = " ", [8] = " ", [9] = " ", [10] = " ", [11] = " ", [12] = ":Navrhl a vytvoÅ™il", [13] = ":Bullfrog Productions", [14] = " ", [15] = ":Pluto Development Team", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = " ", [29] = " ", [30] = " ", [31] = ":Programování", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = " ", [38] = " ", [39] = " ", [40] = ":Grafika", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = " ", [47] = " ", [48] = " ", [49] = ":DodateÄné programování", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = " ", [55] = " ", [56] = " ", [57] = ":DodateÄná grafika", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = " ", [66] = " ", [67] = " ", [68] = ":Úvodní video", [69] = ",", [70] = "Stuart Black", [71] = " ", [72] = " ", [73] = " ", [74] = ":Hudba a zvukové Efekty", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = " ", [79] = " ", [80] = " ", [81] = ":DodateÄná hudba", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = " ", [86] = " ", [87] = " ", [88] = ":Hlas oznamovatelky", [89] = ",", [90] = "Rebecca Green", [91] = " ", [92] = " ", [93] = " ", [94] = ":Návrh úrovní", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = " ", [101] = " ", [102] = " ", [103] = ":Skriptování", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = " ", [109] = " ", [110] = " ", [111] = ":Výzkum a vývoj", [112] = " ", [113] = ":Grafické jádro", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = " ", [118] = " ", [119] = " ", [120] = ":Podpora výzkumu a vývoje", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = " ", [127] = " ", [128] = " ", [129] = ":Knihovny a nástroje", [130] = " ", [131] = "Knihovna Dos a Win 95", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = " ", [137] = " ", [138] = " ", [139] = ":Síťová knihovna", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = " ", [144] = " ", [145] = " ", [146] = ":Zvuková knihovna", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = " ", [151] = " ", [152] = " ", [153] = ":Programování instalátoru", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = " ", [159] = " ", [160] = " ", [161] = ":Morální podpora", [162] = ",", [163] = "Peter Molyneux", [164] = " ", [165] = " ", [166] = " ", [167] = ":Manažer testování", [168] = ",", [169] = "Andy Robson", [170] = " ", [171] = " ", [172] = " ", [173] = ":Hlavní testeÅ™i", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = " ", [178] = " ", [179] = " ", [180] = ":TesteÅ™i hraní", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = " ", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = " ", [203] = "A vÅ¡ichni naÅ¡i ostatní zkuÅ¡ení testeÅ™i hraní", [204] = " ", [205] = " ", [206] = " ", [207] = ":Technická podpora", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = " ", [213] = " ", [214] = " ", [215] = ":Marketing", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = " ", [220] = " ", [221] = " ", [222] = ":DÄ›kujeme:", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = " ", [229] = " ", [230] = " ", [231] = ":PR", [232] = ",", [233] = "Cathy Campos", [234] = " ", [235] = " ", [236] = " ", [237] = ":Dokumentace", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = " ", [244] = " ", [245] = " ", [246] = ":Úprava dokumentace a balení", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = " ", [251] = " ", [252] = " ", [253] = ":Manažer lokalizace projektu", [254] = ",", [255] = "Carol Aggett", [256] = " ", [257] = " ", [258] = " ", [259] = ":Lokalizace", [260] = ",", [261] = "Sandra Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = " ", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = " ", [268] = "C.T.O. S.p.A. Zola Predosa (BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = " ", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Martínez", [276] = " ", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = " ", [281] = " ", [282] = " ", [283] = ":Produkce", [284] = ",", [285] = "Rachel Holman", [286] = " ", [287] = " ", [288] = " ", [289] = ":Producent", [290] = ",", [291] = "Mark Webley", [292] = " ", [293] = " ", [294] = " ", [295] = ":Vedoucí výroby", [296] = ",", [297] = "Andy Nuttall", [298] = " ", [299] = " ", [300] = " ", [301] = ":Operace", [302] = ",", [303] = "Steve Fitton", [304] = " ", [305] = " ", [306] = " ", [307] = ":Správa spoleÄnosti", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":Vedení spoleÄnosti", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":VÅ¡ichni v Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":Zvláštní podÄ›kování", [332] = ",", [333] = "VÅ¡em ve Frimley Park Hospital", [334] = " ", [335] = ":ZvláštÄ›", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = " ", [340] = " ", [341] = " ", [342] = ":NepÅ™estávejte myslet", [343] = " ", [344] = " ", [345] = " ", [346] = " ", [347] = " ", [348] = " ", [349] = " ", [350] = " ", [351] = " ", [352] = " ", [353] = " ", [354] = " ", [355] = " ", [356] = " ", [357] = " ", [358] = " ", [359] = " ", [360] = " ", [361] = ".", } competitor_names = { [1] = "ORAC", [2] = "HAL", [3] = "COLOSSUS", [4] = "MULTIVAC", [5] = "HOLLY", [6] = "DEEP THOUGHT", [7] = "ZEN", [8] = "SKYNET", [9] = "AKIRA", [10] = "SAMUEL", [11] = "GLaDOS", [12] = "KISMET", [13] = "SHODAN", [14] = "HIPPOKRATÉS", [15] = "MÃMA", [16] = "KÃJA", [17] = "WATSON", [18] = "DEEP BLUE", [19] = "ASIMO", [20] = "TOPIO", [21] = "NIKDO", [22] = "MAREK", [23] = "JANA", [24] = "NIC", } staff_title = { general = "Praktický", doctor = "Doktor", nurse = "Sestra", psychiatrist = "Psychiatr", receptionist = "RecepÄní", researcher = "Výzkumník", junior = "Rezident", surgeon = "Chirurg", consultant = "Konzultant", } room_descriptions = { gp = { [1] = "Kancelář Praktického LékaÅ™e//", [2] = "Toto je základní vyÅ¡etÅ™ovací místnost ve vaší nemocnici. Noví pacienti jsou sem poslání, aby se zjistilo co je s nimi Å¡patnÄ›. Pak jsou posláni na další vyÅ¡etÅ™ení nebo do místnosti, kde budou vyléÄeni. Možná byste mohli postavit další kancelář, pokud bude tato příliÅ¡ zaneprázdnÄ›ná. Čím vÄ›tší je místnost, a Äím více pÅ™edmÄ›tů do ní umístíte, tím vyšší je prestiž Doktora. Toto také platí pro vÅ¡echny obsazené místnosti.//", [3] = "Kancelář Praktického LékaÅ™e vyžaduje jakéhokoliv Doktora. ", }, x_ray = { [1] = "Rentgen//", [2] = "Rentgen poÅ™izuje snímky vnitÅ™ku lidí použitím speciální radiace, Äímž zamÄ›stnancům poskytuje dobrou pÅ™edstavu o tom, co se s nimi dÄ›je.//", [3] = "Rentgen vyžaduje jakéhokoliv Doktora. Také potÅ™ebuje údržbu. ", }, toilets = { [1] = "Toaleta//", [2] = "Pacienti, kteří cítí volání přírody si budou muset ulehÄit v pohodlí vaÅ¡ich toaletních zařízení. Můžete postavit další kabiny a umyvadla pokud oÄekáváte spousty návÅ¡tÄ›vníků. V nÄ›kterých případech byste mohli zvážit postavit další zařízení nÄ›kde jinde v nemocnici. ", }, tv_room = { [1] = "TV MÃSTNOST NENà POUŽITA", }, general_diag = { [1] = "Obecné VyÅ¡etÅ™ení//", [2] = "Pacienti, kteří vyžadují další vyÅ¡etÅ™ení, jsou sem posláni na kontrolu. Pokud kancelář Praktického LékaÅ™e nepÅ™ijde na to, co je s nimi Å¡patnÄ›, Obecné VyÅ¡etÅ™ení na to Äasto pÅ™ijde. Odtud jsou posláni zpátky do kanceláře k analýze výsledků z tohoto vyÅ¡etÅ™ení.//", [3] = "Místnost Obecného vyÅ¡etÅ™ení vyžaduje jakéhokoliv Doktora. ", }, hair_restoration = { [1] = "Klinika Obnovy Vlasů//", [2] = "Pacienti trpící extrémním případem PleÅ¡atosti budou nasmÄ›rování smÄ›rem k ObnovovaÄi Vlasů v této Klinice. Doktor bude obsluhovat stroj, a ten rychle zasadí pacientovu hlavu Äerstvými vlasy.//", [3] = "Klinika Obnovy Vlasů vyžaduje jakéhokoliv Doktora. Také vyžaduje pravidelnou údržbu. ", }, ward = { [1] = "NemocniÄní Pokoj//", [2] = "Pacienti jsou zde drženi pro pozorování Sestrou bÄ›hem vyÅ¡etÅ™ení. Zůstávají zde pÅ™ed provedením operace.//", [3] = "NemocniÄní pokoj vyžaduje jednu Sestru. ", }, scanner = { [1] = "Skener//", [2] = "Pacienti jsou pÅ™esnÄ› vyÅ¡etÅ™eni použitím důmyslného Skeneru. Pak jdou k Doktorovi v Kanceláři Praktického LékaÅ™e k dalšímu vyÅ¡etÅ™ení.//", [3] = "Skener vyžaduje jakéhokoliv. Také vyžaduje údržbu. ", }, slack_tongue = { [1] = "OddÄ›lení Ochablého Jazyka//", [2] = "Pacienti s diagnózou Ochablého Jazyka od Kanceláře Praktického LékaÅ™e budou posláni na tuto kliniku k vyléÄení. Doktor použije moderní přístroj k natáhnutí a uÅ¡miknutí jazyka, Äímž navrátí pacienta do normálního dobrého zdraví.//", [3] = "Klinika Ochablého Jazyka vyžaduje jakéhokoliv Doktora. Také obÄas potÅ™ebuje údržbu. ", }, cardiogram = { [1] = "Kardio//", [2] = "Pacienti jsou zde vyÅ¡etÅ™eni a zkontrolování pÅ™edtím, než se vrátí do Kanceláře Praktického LékaÅ™e k pÅ™idÄ›lení léÄby.//", [3] = "Kardio vyžaduje jakéhokoliv Doktora. Také vyžaduje údržbu. ", }, decontamination = { [1] = "DekontaminaÄní Klinika//", [2] = "Pacienti, kteří byly vystaveni Radiaci, jsou rychle odkázáni na DekontaminaÄní Kliniku. Tato místnost obsahuje sprchu, která je úplnÄ› oÄistí od té straÅ¡né radioaktivity a Å¡píny.//", [3] = "DekontaminaÄní Sprcha vyžaduje jakéhokoliv Doktora. Také potÅ™ebuje obsluhu od Údržbáře. ", }, dna_fixer = { [1] = "Klinika DNA//", [2] = "Pacientům, s kterými si pohráli bytosti z jiné planety, musí být v této místnosti jejich DNA nahrazena. Přístroj SpravovaÄ DNA je velmi složitý kus vybavení a bylo by rozumné s ním do místnosti umístit hasící přístroj, ÄistÄ› pro případ.//", [3] = "Přístroj SpravovaÄ DNA vyžaduje pravidelnou kontrolu od Údržbáře. Také vyžaduje Doktra s Výzkumnou kvalifikací k jeho fungování. ", }, training = { [1] = "Výuková místnost//", [2] = "VaÅ¡i Rezidenti a DoktoÅ™i můžou studiem v této místnosti získat cenné další kvalifikace. Konzultant s Chirurgickými, Výzkumnými nebo Psychiatrickými dovednostmi tyto pÅ™edá na vÅ¡echny Doktory, kteří jsou zde vyuÄování. DoktoÅ™i, kteří už tyto dovednosti mají, zjistí, že jejich schopnost je používat se zvýší, zatímco jsou tady.//", [3] = "Výuková místnost vyžaduje Konzultanta. ", }, electrolysis = { [1] = "Místnost Elektrolýzy//", [2] = "Pacienti s Vlasoitidou jsou posláni do této místnosti, kde zvláštní přístroj jménem Elektrolyzér elektricky vlasy vytrhne a uzavÅ™e póry použitím smÄ›si ne nepodobná maltÄ›.//", [3] = "Elektrolyzér vyžaduje jakéhokoliv Doktora. Také potÅ™ebuje údržbu od Údržbáře. ", }, jelly_vat = { [1] = "Želé Klinika//", [2] = "Pacienti prokletí srandovní nemocí Želitidou se musí dokymácet do Želé Kliniky, a být umístÄ›ni do Želé Nádrže. VyléÄí je to způsobem, který stále není ve zdravotnických kruzích plnÄ› pochopen.//", [3] = "Želé Klinika vyžaduje jakéhokoliv Doktora. Také potÅ™ebuje Údržbáře pro údržbu. ", }, research = { [1] = "Výzkumné OddÄ›lení//", [2] = "Nové léky a léÄby jsou vynalezeny a zlepÅ¡ovány ve Výzkumném OddÄ›lení. Toto je důležitá Äát vaší nemocnice, a bude dÄ›lat zázraky ve vaÅ¡ich procentech vyléÄených.//", [3] = "Výzkumné OddÄ›lení vyžaduje doktora s Výzkumnými dovednostmi. ", }, inflation = { [1] = "Nafukovárna//", [2] = "Pacienti s touto bolestivou, pÅ™esto legraÄní, nemocí Nafouknuté Hlavy musí pÅ™ijít do Nafukovárny, kde je pÅ™edimenzovaná lebka propíchnuta a hned znovu nafouknuta na správný tlak.//", [3] = "Nafukovárna vyžaduje jakéhokoliv Doktora. Také vyžaduje soustavnou obsluhu od Údržbáře. ", }, no_room = { [1] = "", }, blood_machine = { [1] = "Krevní Stroj//", [2] = "Krevní stroj je kus vyÅ¡etÅ™ovacího vybavení, které kontroluje buňky v pacientovÄ› krvi, aby se zjistilo jestli s nimi není nÄ›co Å¡patnÄ›.//", [3] = "Krevní stroj vyžaduje jakéhokoliv Doktora. Také vyžaduje údržbu. ", }, psych = { [1] = "Psychiatrie//", [2] = "Pacienti s diagnózou psychiatrické nemoci musí navÅ¡tívit Psychiatrické Odd., aby obdrželi poradenskou službu. PsychiatÅ™i také můžou vyÅ¡etÅ™ovat, pÅ™ijdou na to, jaký typ nemoci pacienti mají a, pokud je původem duÅ¡evní, vyléÄí je použitím vÄ›rné pohovky.//", [3] = "Psychiatrické Odd. vyžaduje Psychiatricky vyuÄeného Doktora. ", }, fracture_clinic = { [1] = "OddÄ›lení Zlomenin//", [2] = "Ti pacienti, kteří mají takovou smůlu, že mají Zlomené Kosti, půjdou sem. Přístroj na OdstranÄ›ní Sádry použije úÄinné průmyslové lasery k uříznutí jakékoli zatuhnuté sádry, což pacientovi způsobí pouze malou bolest.//", [3] = "OddÄ›lení Zlomenin vyžaduje Sestru. Také Äas od Äasu vyžaduje údržbu. ", }, ultrascan = { [1] = "Ultrasken//", [2] = "Ultrasken je doslova to nejzazší v diagnostickém vybavení. Cena je sice vysoká, ale stojí za to, pokud chcete ve vaší nemocnici vynikající vyÅ¡etÅ™ování.//", [3] = "The Ultraskener vyžaduje jakéhokoliv Doktora. Také vyžaduje údržbu. ", }, staff_room = { [1] = "Místnost pro ZamÄ›stnance//", [2] = "VaÅ¡i zamÄ›stnanci se pÅ™i provádÄ›ní jejich práce unaví. Tuto místnost potÅ™ebují, aby si odpoÄinuli a obnovili síly. Unavení zamÄ›stnanci jsou pomalí, požadují více penÄ›z a nakonec odejdou. Také dÄ›lají více chyb. Postavením místnosti, aby tam mÄ›li co dÄ›lat se, dobÅ™e vyplatí. UjistÄ›te se, že je tam místo pro více zamÄ›stnanců najednou. ", }, pharmacy = { [1] = "Lékárna//", [2] = "Pacienti, kteří byly vyÅ¡etÅ™eni a jejichž léÄba je lék musí navÅ¡tívit Lékárnu, aby si ho vzali. Jak více a více léků pro léÄbu je objeveno a stanou se dostupnými, tato místnost bude více zaneprázdnÄ›ná. Možná byste mohli chtít pozdÄ›ji postavit další Lékárnu.//", [3] = "Lékárna vyžaduje Sestru. ", }, operating_theatre = { [1] = "OperaÄní Sál//", [2] = "Toto důležité zařízení je místo, kde se léÄí mnoho druhů nemocí. Sál musí mít dobrou velikost, a musí být naplnÄ›n správným vybavením. Je to důležitá Äást vaší nemocnice.//", [3] = "OperaÄní Sál vyžaduje dva Doktory s Chirurgickými kvalifikacemi. ", }, } queue_window = { num_expected = "OÄekáváno", num_entered = "PoÄet NávÅ¡tÄ›vníků", max_queue_size = "Max Velikost", num_in_queue = "Velikost Fronty", } debug_patient_window = { caption = "Pacient pro LadÄ›ní", } totd_window = { next = "Další Rada", previous = "PÅ™edchozí Rada", tips = { [1] = "Každá nemocnice potÅ™ebuje recepci a Kancelář Praktického LékaÅ™e, aby mohla fungovat. Poté záleží na tom, jací pacienti navÅ¡tÄ›vují vaÅ¡i nemocnici. Lékárna je ale vždycky dobrá volba.", [2] = "Přístroje jako je NafukovaÄ potÅ™ebují údržbu. ZamÄ›stnejte jednoho nebo dva údržbáře pro opravu vaÅ¡ich přístrojů, nebo riskujete, že se vaÅ¡i pacienti a zamÄ›stnanci zraní.", [3] = "Po chvíli se vaÅ¡i zamÄ›stnanci unaví. UjistÄ›te se, že postavíte místnost pro zamÄ›stnance, aby si mohli odpoÄinout.", [4] = "UmístÄ›te dostatek radiátorů, aby vaÅ¡im pacientům a zamÄ›stnancům bylo teplo, nebo budou nešťastní. Použijte mapu mÄ›sta k nalezení míst ve vaší nemocnici, která potÅ™ebují více vytápÄ›ní.", [5] = "Doktorova úroveň dovedností vysoce ovlivňuje kvalitu a rychlost jeho diagnóz. UmístÄ›te zkuÅ¡eného doktora do vaší kanceláře a nebudete potÅ™ebovat tolik dodateÄných diagnostických místností.", [6] = "Rezidenti a doktoÅ™i můžou své dovednosti zlepÅ¡it výukou od konzultanta ve výukové místnosti. Pokud konzultant má zvláštní kvalifikace (chirurg, psychiatr, nebo výzkumník), tak také tyto vÄ›domosti pÅ™edá svým žákům.", [7] = "Zkusili jste zadat evropské Äíslo tísňového volání (112) do faxu? Nezapomeňte si zapnout zvuk!", [8] = "Jistá nastavení, jako napÅ™. rozliÅ¡ení obrazovky a jazyk, můžete upravit v oknÄ› nastavení, které naleznete jak v hlavním menu, tak i ve hÅ™e.", [9] = "Vybrali jste jiný jazyk než angliÄtina, ale pÅ™esto je vÅ¡ude anglický text? Pomozte nám pÅ™eložit chybÄ›jící texty do vaÅ¡eho jazyka!", [10] = "Tým CorsixTH hledá posily! Zajímá vás programování, pÅ™ekládání, nebo vytváření grafiky pro CorsixTH? Kontaktuje nás na naÅ¡em Fóru, PoÅ¡tovním Adresáři nebo Kanálu IRC (corsix-th na freenode).", [11] = "Pokud naleznete chybu, ohlaste ji prosím na naÅ¡em sledovaÄi chyb: th-issues.corsix.org", [12] = "Každá úroveň má jisté požadavky, které musíte splnit pÅ™edtím, než můžete pokraÄovat do další. Podívejte se na okno stavu, abyste vidÄ›li váš postup smÄ›rem ke splnÄ›ní úkolů úrovnÄ›.", [13] = "Pokud chcete upravit nebo odstranit existující místnost, můžete tak uÄinit pomocí tlaÄítka úpravy místnosti, které naleznete dole na panelu nástrojů.", [14] = "V davu Äekajících pacientů můžete rychle najít ty, kteří Äekají na urÄitou místnost tím, že nad tuto místnost najedete kurzorem myÅ¡i.", [15] = "KliknÄ›te na dveÅ™e místnosti, abyste vidÄ›li její frontu. Zde můžete udÄ›lat drobné úpravy, jako napÅ™. zmÄ›nit poÅ™adí fronty nebo poslat pacienta do jiné místnosti.", [16] = "Nešťastní zamÄ›stnanci budou žádat o zvýšení platu ÄastÄ›ji. UjistÄ›te se, že vaÅ¡i zamÄ›stnanci pracují v pohodlném prostÅ™edí, abyste tomuto zabránili.", [17] = "Pacienti budou mít žízeň, zatímco Äekají ve vaší nemocnici, a budou mít jeÅ¡tÄ›, pokud zvýšíte vytápÄ›ní! UmístÄ›te Automaty na Nápoje ve strategických pozicích pro dodateÄný příjem.", [18] = "Můžete pÅ™edÄasnÄ› ukonÄit proces vyÅ¡etÅ™ení a hádat léÄbu, pokud jste se již s nemocí setkali. UvÄ›domte si ale, že toto může zvýšit riziko Å¡patné léÄby, což způsobí smrt pacienta.", [19] = "Havárie můžou být dobrým zdrojem penÄ›z navíc, za pÅ™edpokladu, že máte dostateÄné kapacity na vÄasné zvládnutí pohotovostních pacientů.", }, } information = { custom_game = "Vítejte v CorsixTH. Užijte si tuto vlastní mapu!", cannot_restart = "Bohužel, tato hra byla uložena pÅ™edtím, než byla zavedena funkce restart.", no_custom_game_in_demo = "Je nám líto, ale ve zkuÅ¡ební verzi nemůžete hrát žádné vlastní mapy.", very_old_save = "Od spuÅ¡tÄ›ní této úrovnÄ› doÅ¡lo k mnoha aktualizacím. Aby bylo zajiÅ¡tÄ›no, že vÅ¡echny funkce pracují tak, jak mají, zvažte restartování této úrovnÄ›.", cheat_not_possible = "Tento cheat nemůžete použít v této úrovni. Už ani podvádÄ›t Vám nejde, to je život, co?", level_lost = { [1] = "Smůla! Nesplnili jste úroveň. HodnÄ› Å¡tÄ›stí příštÄ›!", [2] = "Důvod, proÄ jste prohráli:", reputation = "VaÅ¡e reputace spadla pod %d.", balance = "VaÅ¡e bankovní bilance spadla pod %d.", percentage_killed = "Zabili jste více než %d procent pacientů.", cheat = "Tohle jste chtÄ›li, Äi jste snad zvolili Å¡patné tlaÄítko? To Vám ani nejde podvádÄ›t? Tady máte lopatu a jdÄ›te se zahrabat.", }, } errors = { minimum_screen_size = "Zadejte prosím alespoň 640x480 jako velikost obrazovky.", map_file_missing = "Nelze nalézt soubor s mapou %s pro tuto úroveň!", dialog_missing_graphics = "Je nám líto, datové soubory demoverze toto dialogové okno neobsahují.", load_prefix = "Chyba pÅ™i naÄtení hry: ", unavailable_screen_size = "Velikost obrazovky, kterou požadujete, není dostupná v režimu celé obrazovky.", save_prefix = "Chyba pÅ™i uložení hry: ", alien_dna = "POZNÃMKA: Pro animaci s Mimozemskou DNA neexistují animace pro sednutí, otevírání nebo klepání na dveÅ™e atd. Proto se pÅ™i tÄ›chto Äinnostech, stejnÄ› jako v Theme Hospital, doÄasnÄ› zmÄ›ní na normálnÄ› vypadající pacienty a pak se zmÄ›ní zpÄ›t. Tyto pacienti se v nemocnici objeví pouze pÅ™i nastavení v souboru úrovnÄ›", fractured_bones = "POZNÃMKA: Animace ženských pacientů se Zlomenými kostmi není dokonalá", load_quick_save = "Chyba! Rychle uloženou pozici nelze naÄíst, protože neexistuje. Není tÅ™eba se obávat, hned jsme jednu pro Vás vytvoÅ™ili!", no_games_to_contine = "Žádné uložené hry.", could_not_load_campaign = "Nelze naÄíst kampaň: %s", could_not_find_first_campaign_level = "Nelze naÄíst první úroveň této kampanÄ›: %s", } menu = { charts = " GRAFY ", options = " NASTAVENà ", file = " SOUBOR ", display = " ZOBRAZENà ", debug = " LADÄšNà ", player_count = "POÄŒET HRÃČŮ", } lua_console = { close = "Zavřít", execute_code = "Spustit", } menu_options = { edge_scrolling = " POSUNOVÃNà OKRAJÅ® ", autosave = " AUTOMATICKÉ ULOŽENà ", game_speed = " RYCHLOST HRY ", sound_vol = " HLASITOST ZVUKU ", announcements = " OZNÃMENà ", lock_windows = " UZAMKNOUT OKNA ", music = " HUDBA ", adviser_disabled = " PORADCE ", music_vol = " HLASITOST HUDBY ", sound = " ZVUK ", announcements_vol = " HLASITOST OZNÃMENà ", jukebox = " JUKEBOX ", warmth_colors = " BARVY TEPLOTY", twentyfour_hour_clock = " 24HODINOVà REŽIM ", wage_increase = " MZDOVÉ POŽADAVKY", } menu_options_warmth_colors = { choice_2 = " MODRà ZELENà ČERVENà ", choice_1 = " ÄŒERVENà ", choice_3 = " ŽLUTà ORANŽOVà ČERVENà ", } menu_debug = { cheats = " (F11) CHEATY ", win_level_anim = " ANIM VÃHRY ÚROVNÄš ", enter_nav_debug = " VSTOUPIT DO LADÄšNà NAV ", object_cells = " BUŇKY OBJEKTU ", show_nav_cells = " ZOBRAZIT BUŇKY NAV ", dump_strings = " VYPSAT ŘETÄšZCE ", disable_salary_raise = " ZAKÃZAT ZVYÅ OVÃNà PLATU ", display_pager = " ZOBRAZIT PAGER ", make_debug_patient = " VYTVOŘIT PACIENTA PRO LADÄšNà ", keep_clear_cells = " UDRŽET ÄŒISTÉ BUŇKY ", show_help_hotspot = " ZOBRAZIT AKTIVNà BODY NÃPOVÄšDY ", map_overlay = " PŘEKRYV MAPY ", remove_walls = " ODSTRANIT ZDI ", pixbuf_cells = " BUŇKY VYRPPIX ", plant_pagers = " UMÃSTIT PAGERY ", nav_bits = " BITY NAV ", sprite_viewer = " PROHLÃŽEÄŒ SPRITÅ® ", display_room_status = " ZOBRAZIT STAV MÃSTNOSTI ", machine_pagers = " PAGERY PŘÃSTROJÅ® ", transparent_walls = " (X) PRÅ®HLEDNÉ ZDI ", limit_camera = " OMEZIT KAMERU ", make_debug_fax = " VYTVOŘIT FAX LADÄšNà ", jump_to_level = " SKOÄŒIT DO ÚROVNÄš ", win_game_anim = " ANIM VÃHRY HRY ", dump_gamelog = " (CTRL+D) VYPSAT ZÃZNAM HRY ", entry_cells = " BUŇKY VSTUPU ", lose_game_anim = { [1] = " ANIM PROHRY ÚROVNÄš 1 ", [2] = " ANIM PROHRY ÚROVNÄš 2 ", [3] = " ANIM PROHRY ÚROVNÄš 3 ", [4] = " ANIM PROHRY ÚROVNÄš 4 ", [5] = " ANIM PROHRY ÚROVNÄš 5 ", [6] = " ANIM PROHRY ÚROVNÄš 6 ", [7] = " ANIM PROHRY ÚROVNÄš 7 ", }, calls_dispatcher = " ROZVRHOVAÄŒ VOLÃNà ", remove_objects = " ODSTRANIT OBJEKTY ", lua_console = " (F12) KONZOLE LUA ", mapwho_checking = " KONTROLA MAPYKDO ", display_big_cells = " ZOBRAZIT VELKÉ BUŇKY ", porter_pagers = " PAGERY OBSLUHY ", debug_script = " (SHIFT + D) SPUSTIT SKRIPT PRO LADÄšNà ", connect_debugger = " (CTRL + C) PŘIPOJIT LUA DBGp SERVER ", } save_game_window = { caption = "Uložit Hru (%1%)", new_save_game = "Nová Uložená Hra", } main_menu = { custom_level = "Vlastní úroveň", load_game = "NaÄíst hru", options = "Nastavení", savegame_version = "Verze ukládaných her: ", version = "Verze: ", exit = "UkonÄit", new_game = "Nová hra", continue = "PokraÄovat ve hÅ™e", custom_campaign = "Vlastní kampaň", map_edit = "Editor map", } letter = { [1] = { [1] = "Vážený/á %s//", [2] = "Úžasné! Zvládli jste provoz této nemocnice na výbornou. My pohlaváři na Ministerstvu Zdravotnictví bychom chtÄ›li, jestli byste mÄ›li zájem o pÅ™ijmutí vÄ›tšího projektu. Existuje práce, o které si myslíme, že je pro Vás dokonalá. Plat by byl %d€. Promyslete si to.//", [3] = "Máte zájem o práci v Nemocnici %s?", }, [2] = { [1] = "Vážený/á %s//", [2] = "VýbornÄ›! Ve Vaší nemocnici jste udÄ›lali znamenitý pokrok. NaÅ¡li jsme pro Vás nÄ›co dalšího, co můžete spravovat, pokud máte chuÅ¥ na zmÄ›nu prostÅ™edí a novou Å™adu úkolů. Nemusíte pÅ™ijímat, ale může to stát za to. Plat je %d€//", [3] = "Chcete práci v Nemocnici %s?", }, [3] = { [1] = "Vážený/á %s", [2] = "Byli jste nesmírnÄ› úspěšní bÄ›hem VaÅ¡eho období v této nemocnici. Za tímto úÄelem pÅ™edvídáme od Vás velké vÄ›ci, a chtÄ›li bychom Vám nabídnout pozici jinde. Plat by byl %d€, a myslíme si, že si zamilujete nové výzvy, které by to pÅ™ineslo.//", [3] = "ChtÄ›li byste pozici v Nemocnici %s?", }, [4] = { [1] = "Vážený/á %s//", [2] = "BlahopÅ™ejeme! My na Ministerstvu jsme velmi ohromeni VaÅ¡imi schopnostmi provozovat nemocnici. Jste urÄitÄ› zlatý chlapec v OddÄ›lení Zdraví. Myslíme si ale, že byste upÅ™ednostňovali troÅ¡iÄku těžší práci. Byli byste placeni %d€, ale rozhodnutí je na Vás.//", [3] = "Máte zájem o práci v Nemocnici %s?", }, [5] = { [1] = "Vážený/á %s//", [2] = "Dobrý den, opÄ›t. Vážíme si VaÅ¡eho přání neodejít z této okouzlující nemocnice, ale naléháme, abyste si to rozmysleli. Nabídneme Vám skvÄ›lý plat %d€ pokud jste pÅ™ipraveni odejít do jiné nemocnice a zařídit, aby běžela tak hladce.//", [3] = "ChtÄ›li byste se teÄ pÅ™esunout do Nemocnice %s?", }, [6] = { [1] = "Vážený/á %s//", [2] = "Zdravíme. Víme, že jste šťastní v této milé a dobÅ™e provozované instituci, ale myslíme si, že byste teÄ mÄ›li zvážit další kariérní postup. SamozÅ™ejmé Vám bude náležet plat %d€ pokud se rozhodnete pÅ™esunout. Stojí za to o tom popÅ™emýšlet.//", [3] = "PÅ™ejete si vzít místo v Nemocnici %s?", }, [7] = { [1] = "Vážený/á %s//", [2] = "Dobrý den! Ministerstvo Zdravotnictví by chtÄ›lo vÄ›dÄ›t, zda byste si nechtÄ›li rozmyslet VaÅ¡e rozhodnutí zůstat v této nemocnici. Oceňujeme, že maté milou nemocnici, ale také cítíme, že byste udÄ›lal dobÅ™e, když pÅ™ijmete místo s vÄ›tší výzvou, a platem %d€.//", [3] = "ChtÄ›li byste pÅ™ijmout pozici v Nemocnici %s?", }, [8] = { [1] = "Vážený/á %s//", [2] = "Dobrý den, jeÅ¡tÄ› jednou. Na náš poslední dopis, nabízející Vám prvotřídní pozici v nové nemocnici, a zvýšený plat %d€, jste odpovÄ›dÄ›li negativnÄ›. NicménÄ› máme pocit, že byste si toto rozhodnutí mÄ›li rozmyslet. Máme totiž pro Vás dokonalou práci.//", [3] = "Vezmete místo v Nemocnici %s? Prosím?", }, [9] = { [1] = "Vážený/á %s//", [2] = "PÅ™edvedli jste, že jste nejlepší správce nemocnice v dlouhé a pestré historii lékaÅ™ství. Takový významný úspÄ›ch nemůže zůstat bez odmÄ›ny, takže bychom Vám rádi nabídli místo Vrchního Šéfa VÅ¡ech Nemocnic. Toto je Äestná práce a pÅ™ichází s platem %d€. Bude vám uspořádán oslavný průvod, a lidé Vám budou ukazovat své uznání, kamkoliv půjdete.//", [3] = "Díky za vÅ¡echno, co jste udÄ›lali. AÅ¥ si pořádnÄ› užijete dlouhý napůl-důchod.//", [4] = "", }, [10] = { [1] = "Vážený/á %s//", [2] = "BlahopÅ™ejeme k úspěšnému provozu vÅ¡ech nemocnic, ke kterých jsme Vás pÅ™idÄ›lili. Takový výteÄný výkon Vás opravňuje ke svobodÄ› vÅ¡ech svÄ›tových mÄ›st. Je Vám dán důchod %d€, navíc limuzína a vÅ¡e, co po Vás žádáme je cestovat od mÄ›sta k mÄ›stu, setkávat se s Vaším zbožňujícím lidem a vÅ¡ude propagovat práci vÅ¡ech nemocnic.//", [3] = "VÅ¡ichni jsme na Vás pyÅ¡ní. Není mezi námi nikdo, kdo by se necítil vdÄ›Äný za VaÅ¡i tvrdou práci pÅ™i zachraňování životů.//", [4] = "", }, [11] = { [1] = "Vážený/á %s//", [2] = "VaÅ¡e kariéra byla ukázková, a Vy jste inspirací pro nás vÅ¡echny. DÄ›kujeme, že jste spravovali tolik nemocnic a v každé prací si moc dobÅ™e vedli. ChtÄ›li bychom Vám darovat doživotní plat %d€, a chtÄ›li bychom Vás pouze o to, abyste cestovali oficiálním autem s otevÅ™enou stÅ™echou od mÄ›sta k mÄ›stu, pÅ™ednášeli o tom, jak jste dosáhli tolik tak rychle.//", [3] = "Jste příklad pro každého správnÄ› smýšlejícího ÄlovÄ›ka, a bez výjimky, vÅ¡ichni na svÄ›te Vás považují za skvÄ›lý přínos.//", [4] = "", }, [12] = { [1] = "Vážený/á %s//", [2] = "VaÅ¡e úspěšná kariéra nejlepšího správce nemocnice od dob Mojžíše se chýlí ke konci. NicménÄ›, Váš dopad na pohodlný svÄ›t lékaÅ™ství byl tak výrazný, že by Vám Ministerstvo rádo nabídlo plat %d€ jen abyste se objevili jako náš zástupce, zahajovat slavnosti, spouÅ¡tÄ›t lodÄ› a pořádat televizní zábavný program. Celý svÄ›t po Vás volá a pro nás vÅ¡echny by to byla dobrá reklama!//", [3] = "Prosím pÅ™ijmÄ›te tuto pozici. Nebude to těžká práce a poskytneme Vám auto a policejní doprovod kamkoliv se hnete.//", [4] = "", }, custom_level_completed = "VýbornÄ›! DokonÄili jste vÅ¡echny úkoly v této vlastní úrovni!", dear_player = "Vážený/á %s", return_to_main_menu = "ChtÄ›li byste se vrátit do hlavního menu, nebo pokraÄovat v hraní?", campaign_level_completed = "Dobrá práce! Splnili jste úroveň. Ale jeÅ¡tÄ› není konec! ChtÄ›li byste pÅ™ijmout pozici v nemocnici %s?", campaign_level_missing = "Je nám líto, ale zdá se, že následující úroveň této kampanÄ› chybí. (Název: %s)", campaign_completed = "Neuvěřitelné! Zvládli jste splnit vÅ¡echny úrovnÄ›. Nyní si můžete oddychnout a zaÄít sepisovat sebechválu na vÅ¡ech fórech na Internetu. HodnÄ› Å¡tÄ›stí!", } rooms_short = { dna_fixer = "SpravovaÄ DNA", psychiatric = "Psychiatrie", gps_office = "Kancelář Prak. LékaÅ™e", toilets = "Toalety", general_diag = "Obecné VyÅ¡etÅ™ení", hair_restoration = "ObnovovaÄ Vlasů", corridor_objects = "Objekty Chodby", electrolysis = "OddÄ›lení Elektrolýzy", scanner = "Skener", research_room = "Výzkumné Odd.", cardiogram = "Kardiogram", destroyed = "ZniÄená", reception = "Recepce", staffroom = "Místnost pro Zam.", ward = "NemocniÄní Pokoj", jelly_vat = "Želé Nádrž", x_ray = "Rentgen", inflation = "Nafukovárna", ultrascan = "Ultrasken", blood_machine = "Krevní Stroj", tongue_clinic = "Odd. Ochablého Jazyka", fracture_clinic = "OddÄ›lení Zlomenin", training_room = "Výuka", decontamination = "Dekontaminace", pharmacy = "Lékárna", operating_theatre = "OperaÄní Sál", } buy_objects_window = { price = "Cena: ", choose_items = "Zvolte Položky", total = "Celkem: ", } vip_names = { [1] = "Starosta VÄ›tšího Trumfáku", [2] = "Karel Schwarzenberg", [3] = "Král Bernard z Nizozemí", [4] = "Aun Schan Su Ťij, Barmská pÅ™edsedkynÄ› Demokratické Opozice", [5] = "Franta z Ostravy", [6] = "Tomáš Garrigue Masaryk", [7] = "Rada Vacátko", [8] = "Karel Brückner", [9] = "Fotbalista Premier League", [10] = "Maxmilián Teroplík III", health_minister = "Ministr zdravotnictví", } fax = { vip_visit_query = { choices = { invite = "Vydat Oficiální Pozvánku pro V.I.P.", refuse = "Odmítnout V.I.P. omluvami.", }, vip_name = "%s vyjádÅ™il přání navÅ¡tívit Vaší nemocnici", }, vip_visit_result = { telegram = "Telegram!", vip_remarked_name = "Po návÅ¡tÄ›vÄ› Vaší nemocnice, %s poznamenal:", close_text = "DÄ›kuji za návÅ¡tÄ›vu nemocnice.", remarks = { mediocre = { [1] = "No, vidÄ›l jsem horší. Ale mÄ›li byste provést nÄ›jaká zlepÅ¡ení.", [2] = "JémináÄku. To není pÄ›kné místo, kam jít, když se cítíte neduživÄ›.", [3] = "UpřímnÄ›, je to průmÄ›rná nemocnice. Abych pravdu Å™ekl, Äekal jsem více.", }, free_build = { [1] = "Máte tady velmi hezkou nemocnici! Není to ale zas tak těžké ji postavit, když nejste omezeni penÄ›zi, co?", [2] = "Sice nejsem ekonom, ale myslím si, že bych tuto nemocnici také mohl řídit, víte, co tím myslím...", [3] = "Velmi dobÅ™e spravovaná nemocnice. Dávejte si ale pozor na recesi! Ah ano... Vy se ji nemusíte obávat.", }, good = { [1] = "Jaká to dobÅ™e provozovaná nemocnice. DÄ›kuji, že jste mÄ› do ní pozvali.", [2] = "Hmm. Není to Å¡patné zdravotnické zařízení, to zajisté.", [3] = "Užil jsem si Vaší půvabnou nemocnici. Má teÄ nÄ›kdo chuÅ¥ na kari v Taj?", }, very_bad = { [1] = "To je díra. Pokusím se to tu zavřít.", [2] = "Nikdy jsem nevidÄ›l tak hroznou nemocnici. Taková ostuda!", [3] = "Jsem Å¡okován. Tomuhle nemůžete říkat nemocnice! Jdu na pivo.", }, super = { [1] = "To je ale úderná nemocnice. Když budu příštÄ› vážnÄ› nemocný, tak mÄ› tam vezmÄ›te.", [2] = "Tak tomu říkám nemocnice.", [3] = "To je výborná nemocnice. A já bych to mÄ›l vÄ›dÄ›t; v pár jsem již byl.", }, bad = { [1] = "ProÄ jsem se obtěžoval? Bylo to horší než jít na ÄtyÅ™ hodinovou operu!", [2] = "Jsem znechucen tím, co jsem vidÄ›l. Tomu říkáte nemocnice? To je spíš chlívek!", [3] = "Už mám dost toho, že jsem v centru pozornosti veÅ™ejnosti a navÅ¡tÄ›vuji smrduté díry jako je tahle! Rezignuji.", }, }, cash_grant = "Byl Vám darován peněžní dar ve výši %d.", rep_loss = "VaÅ¡e reputace v souladu s tímto utrpÄ›la.", rep_boost = "VaÅ¡e reputace ve spoleÄnosti se zvýšila.", }, disease_discovered = { can_cure = "Tuto nemoc můžete zvládnout.", close_text = "Byla objevena nová nemoc.", need_to_build = "Musíte vybudovat %s, abyste toto mohli zvládnout.", need_to_build_and_employ = "Pokud vybudujete %s a zamÄ›stnáte %s můžete uspÄ›t.", need_to_employ = "ZamÄ›stnejte %s, abyste mohli tuto krizi zvládnout.", discovered_name = "Váš tým objevil novou nemoc. Je to %s", }, diagnosis_failed = { choices = { send_home = "Poslat Pacienta domů.", wait = "Nechat Pacienta Äekat, zatímco Vy postavíte další diagnostické místnosti.", take_chance = "Zkusit možnou léÄbu.", }, situation = "VyÄerpali jsme vÅ¡echny diagnostické přístroje na tomto pacientovi a stále si nejsme jisti, co s ním je Å¡patnÄ›.", what_to_do_question = "Co máme s pacientem dÄ›lat?", partial_diagnosis_percentage_name = "Existuje %d procentní Å¡ance, že jsme identifikovali jaký typ %s pacient má.", }, epidemic_result = { fine_amount = "Vláda vyhlásila obecné ohrožení a udÄ›luje Vám pokutu ve výši %d.", succeeded = { part_1_name = "Hygienický Inspektor slyÅ¡el zvÄ›sti, že VaÅ¡e zařízení Å™eší Å¡patný případ %s.", part_2 = "NicménÄ› se mu nepodaÅ™ilo najít důkazy k potvrzení tÄ›chto zvÄ›stí.", }, close_text = "Hurá!", rep_loss_fine_amount = "Noviny si nad tímto smlsnou. VaÅ¡e reputace bude vážnÄ› poskvrnÄ›na. Navíc dostanete pokutu ve výši %d.", failed = { part_1_name = "PÅ™i pokusu o zakrytí faktu, že mají pÅ™ed sebou nakažlivé propuknutí %s", part_2 = "VaÅ¡i zamÄ›stnanci nemocnice způsobili, že se choroba rozšířila do Å¡iroké veÅ™ejnosti, žijící v okolí nemocnice.", }, compensation_amount = "Vláda se rozhodla Vás odmÄ›nit %d jako vyrovnání za Å¡kodu, kterou tyto malé lži způsobili VaÅ¡emu dobrému jménu nemocnice.", hospital_evacuated = "Zdravotnická Rada nemÄ›la jinou možnost, než evakuovat nemocnici.", }, emergency = { cure_not_possible_build = "PotÅ™ebujete postavit %s", locations = { [1] = "Chemický závod Spolana Neratovice.", [2] = "PadÄ›laná Univerzita.", [3] = "Herbicidní Zahradnické Centrum.", [4] = "Výzkumný Institut NebezpeÄných Látek.", [5] = "sjezd taneÄníků ÄŒeské besedy.", [6] = "hospoda Žába a Býk.", [7] = "PohÅ™ební síň a výÄep Velkého Dejva.", [8] = "kari restaurace Taj.", [9] = "Bártův Ráj Použitých Petrochemikálií.", }, choices = { accept = "Ano. Jsem pÅ™ipraven zvládnout tuto havárii. ", refuse = "Ne. Odmítám zvládnout tuto havárii.", }, cure_not_possible_employ = "PotÅ™ebujete zamÄ›stnat %s", free_build = "Pokud budete úspěšní, VaÅ¡e reputace se zvýší, pokud ale selžete, bude to mít velký dopad na VaÅ¡i reputaci.", num_disease_singular = "Je tu 1 osoba s %s a vyžaduje okamžitou pozornost.", cure_not_possible_build_and_employ = "Bude potÅ™eba postavit %s a zamÄ›stnat %s", bonus = "K dispozici je maximální bonus %d za zvládnutí této havárie. Pokud ale selžete, VaÅ¡e reputace bude silnÄ› poÅ¡ramocena.", cure_not_possible = "V tuto chvíli nemůžete nemoc léÄit.", location = "V %s se stala nehoda", cure_possible_drug_name_efficiency = "Již máte potÅ™ebné přístroje a dovednosti. Máte lék, který potÅ™ebují. Je to %s a lék je na %d procent úÄinný.", cure_possible = "Máte správné vybavení a dovednosti, takže byste mÄ›li tuto havárii zvládnout.", num_disease = "Je tu %d osob s %s a vyžadují okamžitou pozornost.", }, epidemic = { cover_up_explanation_2 = "Pokud nemocnici Hygienický Inspektor navÅ¡tíví a zjistí, že stále probíhá ututlání epidemie, může proti Vám pÅ™ijmout drastická opatÅ™ení.", disease_name = "VaÅ¡i DoktoÅ™i objevili nakažlivý kmen %s.", choices = { declare = "Vyhlásit Epidemii. Zaplatit pokutu a pÅ™ijmout zásah do reputace.", cover_up = "Pokusit se vyléÄit vÅ¡echny nakažené pacienty ve vymezeném Äase a pÅ™edtím, než kdokoliv odejde z nemocnice.", }, declare_explanation_fine = "Pokud vyhlásíte epidemii, zaplatíte pokutu %d, dostanete zásah do reputace a vÅ¡ichni VaÅ¡i pacienti budou automaticky oÄkování.", cover_up_explanation_1 = "Na druhou stranu, pokud se pokusíte toto ututlat, máte omezený Äas na vyléÄení vÅ¡ech nakažených pacientů pÅ™edtím, než na to pÅ™ijdou Zdravotní Orgány.", }, choices = { return_to_main_menu = "návrat do hlavního menu", accept_new_level = "PokraÄovat do další úrovnÄ›", decline_new_level = "Hrát jeÅ¡tÄ› o trochu déle", }, emergency_result = { earned_money = "Z maximálního bonusu %d, jste získali %d.", close_text = "KliknÄ›te pro zavÅ™ení.", saved_people = "Zachránili jste %d lidí z celkových %d.", }, disease_discovered_patient_choice = { what_to_do_question = "Co chcete s pacientem dÄ›lat?", need_to_employ = "ZamÄ›stnat %s, aby bylo možné tuto situaci zvládnout.", can_not_cure = "Tuto chorobu nemůžete vyléÄit.", need_to_build = "Musíte vybudovat %s, abyste mohli být schopni toto zvládnout.", choices = { send_home = "Poslat Pacienta Domů.", wait = "Nechat Pacienta chvilku Äekat v nemocnici.", research = "Poslat pacienta do Výzkumného OddÄ›lení.", }, need_to_build_and_employ = "Pokud vybudujete %s a zamÄ›stnáte %s, můžete uspÄ›t.", guessed_percentage_name = "Váš tým musel odhadnout pacientovu nemoc. Je tu %d procentní Å¡ance, že je to %s", disease_name = "Váš tým objevil novou nemoc. Je to %s", }, debug_fax = { text2 = "CELKEM %d LIDà V NEMOCNICI ZAPSÃNO PROTI %d", text7 = "REPUTACE: %d OÄŒEKÃVÃNA %d SNÃŽENà %d", text9 = "KATASTROFY %d POVOLENO (MÄšS) %d (%d)SNÃŽENà %d", text4 = "FAKTORY : DOKT %d SESTRY %d OBLAST %d MÃSTNOSTI %d CENA %d", text1 = "NEJLEPÅ Ã POÄŒET %d", text6 = "NÃSLEDUJÃCà FAKTORY JSOU TAKÉ ZAHRNUTY", close_text = "Jo, jo, jo!", text3 = "ÄŒÃSLA : DOKT %d SESTRY %d OBLAST %d MÃSTNOSTI %d CENA %d", text5 = "PŘISPÃVAJÃCà : DOKT %d SESTRY %d OBLAST %d MÃSTNOSTI %d CENA %d PROCENT", text8 = "POHODLà %d LIDà ZVLÃDNUTO %d ANÃŽENà %d", text10 = "ÚMRTà %d POVOLENO (MÄšS) %d (%d) SNÃŽENà %d", text11 = "LIDà TENTO MÄšSÃC %d", }, } insurance_companies = { [1] = "LabutíList s.r.o.", [2] = "Plzeňská Cibule", [3] = "Vzájemný HÅ™eben Vlny", [4] = "Jizva Bígla s.r.o.", [5] = "Plovoucí DuÅ¡e s.r.o.", [6] = "JindÅ™ich Upřímný a.s.", [7] = "Koncern Pana Baculatého", [8] = "Lev KoÄka a.s.", [9] = "JeÅ¡itný a Bim s.r.o.", [10] = "spol. Šťastná Pojišťovna", [11] = "Družstevní Pojišťovna", out_of_business = "BANKROT", } menu_file = { save = " ULOŽIT ", load = " NAÄŒÃST ", restart = " RESTARTOVAT ", quit = " ODEJÃT ", } graphs = { visitors = "NávÅ¡tÄ›vníci", time_spans = { [1] = "1 Rok", [2] = "12 Let", [3] = "48 Let", }, cures = "VyléÄení", wages = "Platy", deaths = "Úmrtí", balance = "Bilance", money_in = "Příjem", money_out = "Výdej", reputation = "Reputace", } staff_list = { total_wages = "PLATY CELKEM", tiredness = "ÚNAVA", morale = "MORÃLKA", skill = "DOVEDNOSTI", } introduction_texts = { level14 = "Je tu jeÅ¡tÄ› jedna výzva - naprosto neÄekaná nemocnice jako pÅ™ekvapení. " .. "Jestliže toto bude úspÄ›ch, bude vítÄ›z nad vÅ¡emi vítÄ›zi. " .. "NeÄekejte ale, že to bude lehké, protože je to ten nejtěžší úkol, jaký jste kdy vidÄ›li. " .. "HodnÄ› Å tÄ›stí!", level16 = "Jakmile jste nÄ›které pacienty vyÅ¡etÅ™ili, budete muset pro jejich léÄbu postavit léÄebná zařízení a oddÄ›lení - dobrý zaÄátek " .. "je Lékárna. Budete také potÅ™ebovat Sestru k vydávání různých léků v LékárnÄ›.", level15 = "Dobrá, tak toto jsou základní instrukce jak sestavit nemocnici.//" .. "VaÅ¡i DoktoÅ™i budou potÅ™ebovat veÅ¡kerou pomoc, kterou mohou získat k vyÅ¡etÅ™ení nÄ›kterých pacientů. Můžete jim pomoci " .. "postavením jiného diagnostického zařízení jako napÅ™. Místnost Obecného VyÅ¡etÅ™ení.", level18 = "", level12 = "Nyní máte matku vÅ¡ech výzev. " .. "Ohromeni VaÅ¡im úspÄ›chem, Ministerstvo má pro Vás Å¡piÄkovou práci; chtÄ›jí, aby nÄ›kdo postavil tu nejlepší nemocnici, vydÄ›lat obrovské množství praÅ¡ulí a mít neuvěřitelnou reputaci. " .. "OÄekává se, že také koupíte vÅ¡echny pozemky, které můžete, vÅ¡echno vyléÄíte (a tím myslíme vÅ¡echno) a vyhrajete vÅ¡echna ocenÄ›ní. " .. "Myslíte, že na to máte?" .. "VydÄ›lejte 650,000€, vyleÄte 750 lidí, a mÄ›jte reputaci ve výši 800, abyste toto vyhráli.", level17 = "Malé varování - velmi si hlídejte VaÅ¡i reputaci - to je co pacienty pÅ™iláká z Å¡iroko daleka do VaÅ¡eho zařízení. " .. "Pokud nezabijete příliÅ¡ mnoho lidí a udržíte je rozumnÄ› šťastné, nemÄ›li byste mít v této úrovni problémy!//" .. "TeÄ jste v tom sami. HodnÄ› Å¡tÄ›stí a tak dále.", level4 = "Udržte vÅ¡echny lidi šťastné, zacházejte s nimi tak dobÅ™e jak to jen a udržte úmrtí na absolutní minimum." .. "VaÅ¡e reputace je v sázce, takže se ujistÄ›te, že ji budete mít tak vysoko, jak je to jen možné. " .. "O peníze se moc nestarejte - ty pÅ™ijdou, jak VaÅ¡e důležitá reputace poroste. " .. "Budete mít také možnost uÄit Doktory k rozšíření jejich schopností. " .. "Mohli by mít na starost pacienta, který se zdá být ménÄ› neprůhledný, než vÄ›tÅ¡ina. " .. "DosáhnÄ›te reputace pÅ™es 500.", level13 = "VaÅ¡e neuvěřitelné dovednosti správce nemocnice neunikly Zvláštnímu Tajnému OddÄ›lení Zvláštní Tajné. " .. "Mají pro Vás zvláštní bonus; je tu krysami zamoÅ™ená nemocnice, která potÅ™ebuje úÄinného Terminátora. " .. "Musíte zastÅ™elit tolik krys, kolik můžete, než Údržbáři uklidí vÅ¡echen bordel. " .. "Myslíte, že to zvládnete?", level6 = "Použijte vÅ¡echny VaÅ¡e znalosti k zřízení bezproblémové, dobÅ™e spravované nemocnice, která má zdravý příjem a může se vypořádat s Äímkoliv, co na ní nemocná veÅ™ejnost může hodit. " .. "Musíte si uvÄ›domit, že zdejší atmosféra je zvláštÄ› vhodná k pÅ™enášení bacilů a infekcí. " .. "Pokud nebudete VaÅ¡e zařízení udržovat až puntiÄkářsky Äisté, můžete Äelit Å™adÄ› epidemií mezi pacienty. " .. "UjistÄ›te se, že si vydÄ›láte 150,000€ a že VaÅ¡e nemocnice má hodnotu pÅ™es 140,000€.", level5 = "Toto bude zaneprázdnÄ›ná nemocnice, která bude Å™eÅ¡it různé případy. " .. "VaÅ¡i DoktoÅ™i jsou vÅ¡ichni přímo ze zdravotnické Å¡koly, takže bude zásadní vybudovat výukovou místnost a nauÄit je do přípustných úrovní. " .. "Máte pouze tÅ™i Konzultanty, kteří Vám pomohou s výukou VaÅ¡ich nezkuÅ¡ených zamÄ›stnanců, takže je udržujte šťastné. " .. "Nezapomeňte, také, že, základy této nemocnice sedí na geologickém zlomu San Robot. " .. "Je tu vždy přítomné nebezpeÄí zemÄ›tÅ™esení. " .. "Způsobí vážné poÅ¡kození VaÅ¡ich přístrojů a naruší hladký chod Vaší nemocnice. " .. "Dostaňte VaÅ¡i reputaci na znaÄku 400, a uložte suprových 50,000€ abyste uspÄ›li. Také, vyleÄte 200 pacientů.", level8 = "Je na Vás zřídit tu nejúÄinnÄ›jší a nákladovÄ› efektivní nemocnici, jak to jen jde. " .. "lidé v tomto okolí se mají za dobÅ™e, takže z nich vymáÄknÄ›te tolik praÅ¡ulí, kolik můžete. " .. "Nezapomeňte, léÄení lidí je sice hezké, ale opravdu POTŘEBUJETE peníze, které to pÅ™ináší. " .. "VezmÄ›te tyto nemocné lidi do Äistírny. " .. "NashromáždÄ›te ohromných 300,000€ k dokonÄení této úrovnÄ›.", level7 = "Zde budete pod peÄlivou kontrolou z Ministerstva Zdravotnictví, takže se ujistÄ›te, že VaÅ¡e úÄty ukazují, že vydÄ›láváte hodnÄ› penÄ›z a že VaÅ¡e reputace je ve výšinách. " .. "Nemůžeme si dovolit zbyteÄná úmrtí - jsou Å¡patná pro byznys. " .. "UjistÄ›te se, že VaÅ¡i zamÄ›stnanci jsou v nejlepší formÄ›, a že máte veÅ¡keré vybavení, které potÅ™ebujete. " .. "Dostaňte reputaci ve výši 600, plus 200,000€ v bance.", level2 = "V této oblasti je vÄ›tší Å¡kála nemocí. " .. "Postavte VaÅ¡i nemocnici, aby zvládla více pacientů a nachystejte se na vybudování Výzkumného OddÄ›lení. " .. "Nezapomeňte udržovat VaÅ¡e zařízení Äisté a zkuste dostat vaÅ¡i reputaci tak vysoko, jak to jen jde - budete Äelit nemocem jako je Ochablý Jazyk, takže potÅ™ebujete OddÄ›lení Ochablého Jazyka. " .. "Můžete také postavit Kardiogram, aby Vám pomohl vyÅ¡etÅ™it nové nemoci. " .. "ObÄ› tyto místnosti musí být vyzkoumány pÅ™edtím, než je budete moci postavit. Nyní si také můžete zakoupit dodateÄné parcely pozemků k rozšíření Vaší nemocnice - pro toto použijte Mapu MÄ›sta. " .. "MiÅ™te k reputaci 300 a bankovní bilance 10,000€ a 40 vyléÄeným lidem.", level9 = "Když jste naplnili bankovní úÄet Ministerstva a zaplatili a novou limuzínu pro samotného Ministra, nyní se můžete vrátit zpÄ›t k vytváření peÄující, dobÅ™e zřízené nemocnice ve prospÄ›ch nemocných a potÅ™ebných. " .. "Můžete oÄekávat, že se zde objeví spousta rozdílných problémů." .. "Pokud máte dostatek dobÅ™e vyÅ¡kolených zamÄ›stnanců a místností, mÄ›li byste mít vÅ¡echno pokryto. " .. "VaÅ¡e nemocnice musí mít hodnotu 200,000€ a budete potÅ™ebovat 400,000€ v bance. " .. "Cokoliv ménÄ› a nebudete moct dokonÄit úroveň.", demo = "Vítejte v demo nemocnici!" .. "Bohužel, demo verze obsahuje pouze tuto úroveň. NicménÄ› je toho více než dost, abyste se na chvilku zabavili!" .. "Setkáte se s různými nemocemi, které potÅ™ebují různé místnosti k léÄbÄ›. ÄŒas od Äasu se můžou stát havárie. A budete potÅ™ebovat vyzkoumat dodateÄné místnosti pomocí výzkumného oddÄ›lení." .. "Vaším úkolem je vydÄ›lat 100,000€, mít hodnotu nemocnice ve výši 70,000€ a reputaci 700, pÅ™iÄemž musíte vyléÄit alespoň 75% VaÅ¡ich pacientů." .. "UjistÄ›te se, že VaÅ¡e reputace nespadne 300 a že nezabijete více než 40% VaÅ¡ich pacientů, nebo prohrajete." .. "HodnÄ› Å¡tÄ›stí!", level10 = "StejnÄ› jako zvládnutí vÅ¡ech nemocí, které se v této oblasti vyskytují, Ministerstvo žádá, abyste strávil nÄ›jaký Äas soustÅ™edÄ›ním se na úÄinnost VaÅ¡ich léků. " .. "Z ÄŒasNemoci, Hlídacího Psa Zdravotnictví, se ozívají jisté stížnosti, takže abyste vypadali dobÅ™e, musíte zajistit, že VaÅ¡e léky jsou mimořádnÄ› úÄinné. " .. "Také zajistÄ›te, aby VaÅ¡e nemocnice nemusela být kárána. AÅ¥ ty úmrtí nejsou vysoká. " .. "Jako nápovÄ›da, možná byste mÄ›li vyhradit prostor pro Želé Nádrž. " .. "Zdokonalte vÅ¡echny VaÅ¡e léky na alespoň 80 procentní úÄinnost, mÄ›jte reputaci 650 a ukryjte 500,000€ v bance, abyste vyhráli. ", level11 = "Byla Vám dána Å¡ance vybudovat to nejlepší z nemocnic. " .. "Toto je mimořádnÄ› prestižní oblast a Ministerstvo by rádo chtÄ›lo vidÄ›t tu nejlepší možnou nemocnici. " .. "OÄekáváme, že budete vydÄ›lávat velké peníze, mít skvostnÄ› vysokou reputaci a zvládat vÅ¡echny možné případy. " .. "Toto je důležitá práce. " .. "Budete muset být nÄ›co zvláštního, abyste toto zvládli. " .. "Nezapomeňte, také, že v oblasti byla zpozorována UFO. UjistÄ›te se, že VaÅ¡i zamÄ›stnanci jsou pÅ™ipraveni na neÄekané návÅ¡tÄ›vníky. " .. "VaÅ¡e nemocnice potÅ™ebuje mít hodnotu 240,000€, v bance potÅ™ebujete 500,000€ a VaÅ¡e reputace bude potÅ™eba být na 700.", level3 = "Tentokrát budete zÅ™izovat nemocnici v zámožné oblasti. " .. "Ministerstvo Zdravotnictví oÄekává od Vás, že zde zajistíte zdravý příjem. " .. "PÅ™edevším budete muset získat dobrou reputaci, ale jakmile nemocnice běží naprázdno, soustÅ™eÄte se co nejvíce na vydÄ›lávání penÄ›z. " .. "Je tu také možnost výskytu Havárií. " .. "To je tehdy, když velký poÄet lidí pÅ™ijde najednou a vÅ¡ichni mají stejnou nemoc. " .. "VyléÄení vÅ¡ech v Äasovém limitu Vám pÅ™idá lepší reputaci a velký bonus. " .. "Nemoci jako Králův Komplex se mohou objevit a mÄ›li byste dát do rozpoÄtu výstavbu OperaÄního Sálu a NemocniÄního Pokoje poblíž. " .. "VydÄ›lejte si 20,000€ abyste dosáhli další úrovnÄ›.", level1 = "Vítejte ve Vaší první nemocnici!//" .. "RozchoÄte to tu umístÄ›ním Recepce, vybudováním Kanceláře Praktického LékaÅ™e a najmutím RecepÄní a Doktora. " .. "Pak poÄkejte, až pÅ™ijde nÄ›jaký byznys." .. "Je dobrý nápad postavit Odd. Psychiatrie a najmout Doktora s Psychiatrickými kvalifikacemi. " .. "Lékárna a Sestra jsou také nutné k léÄbÄ› VaÅ¡ich pacientů. " .. "Dejte si pozor na niÄemné případy Nafouknuté Hlavy - Nafukovárna je brzy spraví. " .. "Budete chtít vyléÄit 10 lidí a zajistit, že VaÅ¡e reputace nespadne pod 200.", } install = { th_directory = "CorsixTH potÅ™ebuje kopii datových souborů z původní hry Theme Hospital (nebo demoverze), aby mohla běžet. Prosím použijte okno níže k nalezení instalaÄní složky Theme Hospital.", title = "-------------------------------- Nastavení CorsixTH --------------------------------", exit = "Odejít", ok = "OK", cancel = "ZruÅ¡it", } staff_class = { receptionist = "RecepÄní", surgeon = "Chirurg", handyman = "Údržbář", doctor = "Doktor", nurse = "Sestra", } menu_charts = { bank_manager = " (F1) SPRÃVCE BANKY ", statement = " (F2) FINANÄŒNà VÃKAZ ", staff_listing = " (F3) SEZNAM ZAMÄšSTNANCÅ® ", town_map = " (F4) MAPA MÄšSTA ", casebook = " (F5) KNIHA LÉČBY PACIENTÅ® ", research = " (F6) VÃZKUM ", status = " (F7) STAV ", graphs = " (F8) GRAFY ", policy = " (F9) ZÃSADY ", briefing = " ÚVOD DO MISE ", } menu_options_volume = { [30] = " 30% ", [10] = " 10% ", [90] = " 90% ", [40] = " 40% ", [20] = " 20% ", [50] = " 50% ", [70] = " 70% ", [60] = " 60% ", [100] = " 100% ", [80] = " 80% ", } drug_companies = { [1] = "Léky-co-máte-rádi", [2] = "Léky Jsme My", [3] = "Drsná Malá Pilulka spol.", [4] = "HeÅ™man Dobromyslný s.r.o.", [5] = "VÅ¡elék a.s.", } options_window = { change_resolution = "ZmÄ›nit RozliÅ¡ení", width = "Šířka", fullscreen = "Celá Obrazovka", apply = "Použít", caption = "Nastavení", resolution = "RozliÅ¡ení", option_off = "Vypnuto", custom_resolution = "Vlastní...", option_on = "Zapnuto", language = "Jazyk hry", height = "Výška", cancel = "ZruÅ¡it", back = "ZpÄ›t", folder = "Složky", customise = "PÅ™izpůsobit", audio = "Globální audio", } folders_window = { new_th_location = "Zde můžete zadat novou instalaÄní složku Theme Hospital. Jakmile ji zvolíte, hra bude restartována.", data_label = "Data TH", music_label = "MP3", savegames_label = "Uložené hry", music_location = "Vyberte adresář s hudbou, která bude použita ve hÅ™e.", caption = "UmístÄ›ní složek", screenshots_label = "Snímky obrazovky", font_label = "Písmo", back = "ZpÄ›t", savegames_location = "Vyberte složku, kde budou ukládány vaÅ¡e uložené hry", screenshots_location = "Vyberte složku, kde budou ukládány snímky obrazovky", } font_location_window = { caption = "Zvolte písmo (%1%)" } menu_options_wage_increase = { deny = " ZAMÃTNOUT", grant = " VYHOVÄšT", } update_window = { caption = "Dostupná aktualizace!", new_version = "Nová verze:", current_version = "SouÄasná verze:", download = "PÅ™ejít na stránku ke stažení", ignore = "PÅ™eskoÄit a pÅ™ejít do hlavní nabídky", } customise_window = { average_contents = "PrůmÄ›rný obsah", option_on = "Zapnuto", paused = "StavÄ›t pÅ™i pozastavení", option_off = "Vypnuto", intro = "PÅ™ehrát úvodní video", caption = "Vlastní nastavení", back = "ZpÄ›t", movies = "Globální kontrola videí", volume = "Zkrátka snížení hlasitosti", aliens = "PAcienti s mimozemskou DNA", fractured_bones = "Zlomené kosti", } custom_campaign_window = { caption = "Vlastní kampaň", start_selected_campaign = "Spustit kampaň", } warnings = { levelfile_variable_is_deprecated = "UpozornÄ›ní: Úroveň '%s' ve svém souboru obsahuje zastaralé urÄení promÄ›nné.'%LevelFile' bylo pÅ™ejmenováno na '%MapFile'. Pro aktualizaci úrovnÄ› prosím použijte editor map.", } map_editor_window = { pages = { paste = "Vložit oblast", camera_3 = "Kamera 3", hedgerow = "Živý plot", delete_wall = "Smazat zdi", road = "Silnice", parcel_7 = "Parcela 7", pond = "Rybníky", heliport_3 = "Heliport 3", outside = "VnÄ›jší prostory", parcel_3 = "Parcela 3", helipad = "PÅ™istávací plocha", parcel_1 = "Parcela 1", heliport_4 = "Heliport 4", parcel_6 = "Parcela 6", foliage = "Rostliny", parcel_2 = "Parcela 2", parcel_5 = "Parcela 5", parcel_4 = "Parcela 4", parcel_0 = "Parcela 0", north_wall = "Severní zeÄ", inside = "VnitÅ™ní prostory", parcel_9 = "Parcela 9", heliport_2 = "Heliport 2", parcel_8 = "Parcela 8", camera_4 = "Kamera 4", camera_1 = "Kamera 1", camera_2 = "Kamera 2", west_wall = "Západní zeÄ", heliport_1 = "Heliport 1", }, } save_map_window = { new_map = "Nová mapa", caption = "Uložit mapu (%1%)", } menu_player_count = { players_1 = " 1 HRÃÄŒ ", players_2 = " 2 HRÃÄŒI ", players_3 = " 3 HRÃÄŒI ", players_4 = " 4 HRÃÄŒI ", } CorsixTH-0.61/CorsixTH/Lua/languages/danish.lua000066400000000000000000004146321321660673500213310ustar00rootroot00000000000000--[[ Copyright (c) 2010 Robin Madsen (RobseRob) Copyright (c) 2010-2011 Ole Frandsen (Froksen) Copyright (c) 2011 Rene Bergfort (Kleeze) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- READ BEFORE DOING ANY CHANGES ------------------------------------------------------------------------------- This danish translation is based apon the Norwegian file by Erlend Mongstad. I have changed it so that is match the formating of the norwegian file. Danish translations is done by the danish team. Mostly Robin Madsen (RobseRob) or by Ole Frandsen (Froksen). Please read Mongstads description of how the formating is done. Since the norwegian/DANISH language isn't in the original Theme Hospital game, this file is split in two sections (A and B). The first section contains all the new language strings, made by the Corsix-TH team, and the second section contains the override translation of all the original english strings. FORMATING AND NORWEGIAN/DANISH LETTERS This file contains UTF-8 text. Make sure your editor is set to UTF-8. For the norwegian/danish letters ø and Ø, you must use the old-style ö and Ö instead. That is because the letters ø and Ø is not included in the original ingame-font. ------------------------------------------------------------------------------- Table of Contents ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS 1. Global settings 2. Faxes 3. Objects 4. Menu 5. Adviser 6. Dynamic info 7. Tooltip 8. Cheats 9. Dispatcher -- SECTION B - OLD STRINGS (OVERRIDE) Huge section with all original strings, translated from english. -----------------------------------------------------------------------------]] ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS ------------------------------------------------------------------------------- -- 1. Global setings (do not edit!) Language("Dansk", "Danish", "da", "dk") Inherit("english") date_format = { daymonth = "%1% %2:months%", } -- 2. Faxes fax = { choices = { return_to_main_menu = "Tilbage til hovedmenuen", accept_new_level = "GÃ¥ videre til næste bane", decline_new_level = "Spil videre lidt endnu", }, } letter = { dear_player = "Kære %s", custom_level_completed = "Godt arbejde! Du har opfyldt alle mÃ¥l pÃ¥ denne speicalbane!", return_to_main_menu = "Vil du gÃ¥ tilbage til hovedmenuen eller fortsætte med at spille?", } install = { title = "--------------------------------- CorsixTH Installation ---------------------------------", th_directory = "CorsixTH kræver en original installation af Theme Hospital for at fungere. Angiv placeringen af spillet her.", exit = "Afslut", } -- 3. Objects object = { litter = "Skrald", } tooltip.fax.close = "Luk dette vindue uden at fjerne beskeden" tooltip.message.button = "Venstreklik for at læse faxen" tooltip.message.button_dismiss = "Venstreklik for at Ã¥bne faxen.Höjreklik for at ignorere den" -- 4. Menu menu_options = { lock_windows = " LÃ…S VINDUER ", edge_scrolling = " KANTSCROLLING ", settings = " INDSTILLINGER ", } menu_options_game_speed.pause = " PAUSE " -- The demo does not contain this string menu_file.restart = " START FORFRA " menu_debug = { jump_to_level = " GÃ¥ til bane ", transparent_walls = " (K) Gennemsigtige VæGE ", limit_camera = " BEGRæNS KAMERAET ", disable_salary_raise = " STOP LÖNFORHÖJELSER ", make_debug_fax = " LAV FEJLFINDINGS FAX ", make_debug_patient = " LAV FEJLFINDINGS PATIENT ", spawn_patient = " GENERER TILFæLDIG PATIENT ", make_adviser_talk = " FÄ RÄDGIVEREN TIL AT SNAKKE ", show_watch = " VIS URET ", create_emergency = " LAV ET AKUTTILFæLDE ", place_objects = " PLACER OBJEKTER ", cheats = " (F11) SNYD ", lua_console = " (F12) LUA KONSOL ", calls_dispatcher = " KALD PÃ¥ AFSENDER ", dump_strings = " DUMP TEKT ", dump_gamelog = " (CTRL + D) DUMP SPILLOG ", map_overlay = " KORTOVERSIGT ", sprite_viewer = " SPRITE VISER ", } menu_debug_overlay = { none = " INTET ", flags = " FLAG ", positions = " KORDINATER ", heat = " TEMPERATUR ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE GULV ", byte_n_wall = " BYTE N VÆG ", byte_w_wall = " BYTE W VÆG ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " TOMT ", } -- 5. Adviser adviser = { room_forbidden_non_reachable_parts = "Hvis du placerede rummet her, ville det resultere i, at dele af dit hospital ikke ville være tilgængelige.", cheats = { th_cheat = "Tillykke, du har nu muligheden for at snyde", crazy_on_cheat = "Ã¥h nej! Alle lægerne er blevet sköre!", crazy_off_cheat = "Puha... Alle lægerne er blevet normale igen.", roujin_on_cheat = "Roujin's udfordring er blevet aktiveret! Held og lykke...", roujin_off_cheat = "Roujin's udfordring deaktivateret.", hairyitis_cheat = "Skaldethed snydekoden er aktivateret!", hairyitis_off_cheat = "Skaldethed snydekoden deaktivateret.", bloaty_cheat = "Opsvulmet hoved snydekoden deaktivateret.!", bloaty_off_cheat = "Opsvulmet hoved snydekoden deaktivateret.", }, } -- 6. Dynamic info dynamic_info.patient.actions.no_gp_available = "Venter pÃ¥ du bygger en lægekonsultation" dynamic_info.staff.actions.heading_for = "PÃ¥ vej til %s" dynamic_info.staff.actions.fired = "Fyret" -- 7. Tooltip tooltip.research_policy.no_research = "Der forskes ikke pÃ¥ nuværrende tidspunkt i dette omrÃ¥de" tooltip.research_policy.research_progress = "Fremskidtet mod den næste opdagelse indenfor dette omrÃ¥de: %1%/%2%" tooltip.objects.litter = "Skrald: Smidt af dine patienter, da de ikke kunne finde en skraldespand" -- Misc misc.not_yet_implemented = "(ikke implanteret endnu)" misc.no_heliport = "Enten er der ikke blevet opdaget nogle sygdomme endnu, ellers er der ingen helikopterplads pÃ¥ denne bane." -- Main menu main_menu = { new_game = "Nyt spil", custom_level = "Specialbane", load_game = "Indlæs spil", options = "Indstillinger", exit = "Afslut", } tooltip.main_menu = { new_game = "Start et nyt spil fra begyndelsen", custom_level = "Lav dit eget sygehus pÃ¥ en specialbane", load_game = "Indlæs et gemt spil", options = "Juster dine indstillinger", exit = "Er du sikker pÃ¥, at du ikke vil spille mere?", } load_game_window = { caption = "Indlæs spil", } tooltip.load_game_window = { load_game = "Indlæs spil %s", load_game_number = "Indlæs spil %d", load_autosave = "Indlæs autogem", } custom_game_window = { caption = "Specialbane", } tooltip.custom_game_window = { start_game_with_name = "Indlæs banen %s", } save_game_window = { caption = "Gem spil", new_save_game = "Nyt gemt spil", } tooltip.save_game_window = { save_game = "Overskriv gemmet %s", new_save_game = "Skriv navnet for det nye gem", } menu_list_window = { back = "Tilbage", } tooltip.menu_list_window = { back = "Luk dette vindue", } options_window = { fullscreen = "Fuldskærm", width = "Bredde", height = "Höjde", change_resolution = "Skift oplösning", browse = "Gennemse", new_th_directory = "Her kan du specificere en ny installationsmappe for Theme Hospital. SÃ¥ snart du har gjort det vil spillet genstarte.", cancel = "Annullér", back = "Tilbage", } tooltip.options_window = { fullscreen_button = "Klik for at skifte imellem fuldskærmsvisning", width = "Indtast den önskede skærmbrede", height = "Indtast den önskede skærmhöjde", change_resolution = "Skift skærmstörrelsen til dimmensionerne indtastet til höjre", language = "Vælg %s som sprog", original_path = "Theme Hospitals mappe", browse = "Gennemse et andet sted for installation af Theme Hospital. %1%", back = "Luk indstillingsvinduet", } new_game_window = { easy = "Praktikant (Let)", medium = "Læge (Mellem)", hard = "Konsulent (Svær)", tutorial = "Oplæring", cancel = "Annuller", } tooltip.new_game_window = { easy = "Hvis du ikke har erfaring med simulationsspil, er dette niveau det rette", medium = "Hvis du er usikker pÃ¥ hvad du skal vælge, er dette niveau en mellemting", hard = "Hvis du er sikker pÃ¥ dine evner og önsker udfordring, bör du vælge denne.", tutorial = "Hvis du önsker lidt hjælp til at komme godt igang, skal du mærkere denne boks.", cancel = "Hmm... Var det ikke meningen, at du ville starte et nyt spil?!", } lua_console = { execute_code = "Kör", close = "Luk", } tooltip.lua_console = { textbox = "Skriv den Lua-kode du vil köre her", execute_code = "Kör koden", close = "Luk konsollen", } errors = { dialog_missing_graphics = "Undskyld, men demo datafilerne har ikke en tekst.", save_prefix = "Fejl under gem af spil: ", load_prefix = "Fejl under indlæsning af spil: ", map_file_missing = "Kunne ikke finde kort filen %s for denne bane!", minimum_screen_size = "Indtast en oplösning pÃ¥ mindst 640x480.", maximum_screen_size = "Indtast en oplösning pÃ¥ maksimalt 3000x2000.", unavailable_screen_size = "Skærmoplösningen du valgte er ikke tilgængelig i fuldskærmsvisning.", } confirmation = { needs_restart = "Hvis du vil benytte disse indstillinger, sÃ¥ kræver det en genstart af CorsixTH. Spil, som ikke er gemt, vil gÃ¥ tabt. Er du sikker pÃ¥, at du vil bruge disse indstillinger?", abort_edit_room = "Du er ved at opbygge eller ændre et lokale. Hvis alle obligatoriske genstande er placeret, kan du gemme lokalet. Hvis ikke, skal du slette rummet. Fortsætte?", restart = "Er du sikker pÃ¥ at du vil pröve pÃ¥ ny?", } confirmation.restart_level = "Er du sikker pÃ¥ at du vil begynde forfra?" information = { custom_game = "Velkommen til CorsixTH. Hav det sjovt med denne specialbane!", cannot_restart = "Beklageligvis er denne specialbane lavet för genstartfuntionen blev implanteret.", level_lost = { "Öv! Du gennemförte ikke banen. Bedre held næste gang!", "Derfor tabte du:", reputation = "Dit omdömme var under %d.", balance = "Din bankbalance var under %d.", percentage_killed = "Du har dræbt mere end %d procent af patienterne.", }, } tooltip.information = { close = "Luk informationsvinduet", } totd_window = { tips = { "I ethvert hospital er det nödvendigt at have en reception og en lægekonsultation for at komme i gang. Herefter er det, alt efter hvilke patienter der ankommer til dit hospital, op til dig at bygge de nödvendige rum - et apotek er dog altid godt at have.", "Maskiner, som for eksempel pumperum, har brug for vedligeholdelse. Ansæt en pedel eller to til at vedligeholde dine maskiner, ellers kan du risikere, at dine ansatte eller patienter kommer til skade.", "Med tiden bliver dine ansatte trætte. Husk at bygge et personalerum, sÃ¥ de kan slappe af.", "Placer radiatorer sÃ¥ dine patienter og ansatte kan holde varmen, ellers bliver de sure. Brug oversigtskortet til at lokalisere omrÃ¥der i dit hospital, som bör være varmere.", "En læges kvalifikationsniveau betyder meget for hastigheden og kvaliteten af hans diagnosticering. Hvis du placerer en meget kvalificeret læge i en lægekonsultation, behöver du ikke sÃ¥ mange yderligere diagnoserum.", --Juniors and doctors can improve their skills by learning from a consultant in the training room. If the consultant has a special qualification (surgeon, psychiatrist or researcher), he will also pass on this knowledge to his pupil(s). "Praktikanter og læger kan forbedre deres kvalifikationer ved at blive undervist af en konsulent i et undervisningslokale. Hvis konsulenten har specielle kvalifikationer (kirurg, psykiater eller forsker), vil han ogsÃ¥ give disse kvalifikationer videre til sine elever.", -- "Did you try to enter the European emergency number (112) into the fax machine? Make sure your sound is on!", "Har du prövet at indtaste det europæriske alarmnummer (1-1-2) pÃ¥ faxmaskinen? Husk at have lyd slÃ¥et til!", --"You can adjust some settings such as the resolution and language in the options window found both in the main menu and ingame.", "Du kan ændre nogle indstillinger, sÃ¥som skærmoplösning og sprog, i indstillingsvinduet som findes bÃ¥de i hovedmenuen og inde i spillet.", --"You selected a language other than English, but there's English text all over the place? Help us by translating missing texts into your language!", "Du har valgt et andet sprog end engelsk, men der er alligevel engelsk over det hele? Hjælp os med at oversætte teksten til dit sprog.", --"The CorsixTH team is looking for reinforcements! Are you interested in coding, translating or creating graphics for CorsixTH? Contact us at our Forum, Mailing List or IRC Channel (corsix-th at freenode).", "Holdet bag CorsixTH er altid pÃ¥ udkig efter forskærkninger! Er du interesseret i kodning, oversættelse eller at lave grafik til CorsixTH? SÃ¥ kontakt os pÃ¥ vores forum, mailingliste eller IRC kanalen (corsix-th pÃ¥ freenode).", --"If you find a bug, please report it at our bugtracker: th-issues.corsix.org", "Hvis du finder en fejl kan du rapportere den til os pÃ¥ vores bugtracker: th-issues.corsix.org", --"Each level has certain requirements to fulfill before you can move on to the next one. Check the status window to see your progression towards the level goals.", "PÃ¥ hver bane er der forskellige betingelser, som skal være opfyldt för du kan gÃ¥ videre til den næste bane. Hold öje med statusvinduet for at se, hvor tæt du pÃ¥ at opfylde banens mÃ¥l.", --"If you want to edit or remove an existing room, you can do so with the edit room button found in the bottom toolbar.", "Hvis du vil ændre eller fjerne eksisterende lokaler, kan du göre det ved at trykke pÃ¥ rediger lokale knappen som findes i væktöjslinjen i bunden af skærmen.", -- "In a horde of waiting patients, you can quickly find out which ones are waiting for a particular room by hovering over that room with your mouse cursor.", "I en gruppe af ventende patienter kan du hurtigt finde ud af, hvilke der er i kö til et specifikt rum, ved at bevæge musen over rummet.", --"Click on the door of a room to see its queue. You can do useful fine tuning here, such as reordering the queue or sending a patient to another room.", "Klik pÃ¥ dören til et rum for at se dens kö. Her kan du lave brugbar tilpasning, som for eksempel sortere i köen eller sende patienter til et andet rum.", --"Unhappy staff will ask for salary rises frequently. Make sure your staff is working in a comfortable environment to keep that from happening.", "Utilfredse medarbejdere vil oftere bede om lönforhöjelse. Husk at lave et komfortablet arbejdsmiljö for at holde dem tilfredse.", --"Patients will get thirsty while waiting in your hospital, even more so if you turn up the heating! Place vending machines in strategic positions for some extra income.", "Patienter bliver törstige mens de venter pÃ¥, specielt hvis der er meget varmt pÃ¥ dit hospital! Placer drikkeautomater pÃ¥ strategiske steder for lidt ekstra indkomst.", --"You can abort the diagnosis progress for a patient prematurely and guess the cure, if you already encountered the disease. Beware that this may increase the risk of a wrong cure, resulting in death for the patient.", "Du kan afbryde en patients diagnoseproces för tid og gætte pÃ¥ en kur, hvis du allerede har opdaget denne sygdom tidligere. Men pas pÃ¥! Det kan betyde en forhöjet risiko for fejldiagnosticering, som kan medföre patientens död.", -- "Emergencies can be a good source for some extra cash, provided that you have enough capacities to handle the emergency patients in time.", "Akuttilfælde kan være en god mulighed for at tjene lidt ekstra penge, sÃ¥ længe du har kapaciteten til at hÃ¥ndtere patienter fra akuttilfældet inden tiden löber ud.", }, previous = "Forrige tip", next = "Næste tip", } tooltip.totd_window = { previous = "Vis det forrige tip", next = "Vis det næste tip", } tooltip.cheats_window = { close = "Lukker dialogen", cheats = { money = "Overförer 10.000 til din bankkonto.", all_research = "Du har forsket alt.", emergency = "Skaber et akkuttilfælde.", create_patient = "Skaber en patient ved udkanten af kortet.", end_month = "GÃ¥r til slutningen af mÃ¥neden.", end_year = "GÃ¥r til slutningen af Ã¥ret", lose_level = "Du taber banen.", win_level = "Du vinder banen.", }, } -- Cheats cheats_window = { caption = "Snyd", warning = "Advarsel: Det vil ikke være muligt at fÃ¥ bonuspoint ved slutningen af banen hvis du snyder!", cheated = { no = "Brugt snyd: Nej", yes = "Brugt snyd: Ja", }, cheats = { money = "Snyd med penge", all_research = "Alt er forsket", emergency = "Skab et akkuttilfælde", create_patient = "Lav en patient", end_month = "Afslut mÃ¥neden", end_year = "Afslut Ã¥ret", lose_level = "Tab runden", win_level = "Vind runden", }, close = "Luk", } -- dispatcher calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d kalder; %d tildelt", staff = "%s - %s", watering = "Vander @ %d,%d", repair = "Reparerer %s", close = "Luk", } ------------------------------------------------------------------------------- -- SECTION B - OLD STRINGS (OVERRIDE) ------------------------------------------------------------------------------- -- Staff class -- each of these corresponds to a sprite staff_class = { nurse = "Sygeplejerske", doctor = "Læge", handyman = "Pedel", receptionist = "Receptionist", surgeon = "Kirurg", } -- Staff titles -- these are titles used e.g. in the dynamic info bar staff_class = { nurse = "Sygeplejerske", doctor = "Læge", handyman = "Pedel", receptionist = "Receptionist", surgeon = "Kirurg", -- S[1][6] unused } staff_title = { receptionist = "Receptionist", general = "Generel", -- unused? nurse = "Sygeplejerske", junior = "Praktikant", doctor = "Læge", surgeon = "Kirurg", psychiatrist = "Psykiater", consultant = "Konsulent", researcher = "Forsker", } -- Pay rises pay_rise = { definite_quit = "Jeg er ligeglad med, hvad du tilbyder mig. Jeg er træt af det her sted!", regular = { "Jeg er helt udkört. Jeg har brug for hvile og en lönforhöjelse pÃ¥ %d, ellers skal du nok ikke forvente at se mere til mig.", -- %d (rise) "Jeg er sÃ¥ træt. Jeg har brug for hvile og en lönforhöjelse pÃ¥ %d, altsÃ¥ en lön pÃ¥ %d ialt. Gör det nu, din tyran!", -- %d (rise) %d (new total) "Helt ærligt. Jeg arbejder som en hund pÃ¥ dit hospital! Giv mig en bonus pÃ¥ %d sÃ¥ bliver jeg pÃ¥ dit hospital.", -- %d (rise) "Jeg er pissesur. Jeg kræver en lönforhöjelse pÃ¥ %d, altsÃ¥ en lön pÃ¥ %d ialt, ellers sÃ¥ er jeg den der er skredet.", -- %d (rise) %d (new total) "Mine forældre fortalte mig, at medicinalindustrien betalte godt. SÃ¥ giv mig en lönforhöjelse pÃ¥ %d ellers bliver jeg videospilsproducent.", -- %d (rise) "Jeg gider ikke mere. Betal mig en ordenlig lön. En lönforhöjelse pÃ¥ %d skulle klare det.", -- %d (rise) }, poached = "Jeg er blevet tilbudt %d af %s. Med mindre du betaler mig det samme er jeg skredet.", -- %d (new total) %s (competitor) } -------------------- Her til er kigget igennem // Froksen -- Staff descriptions staff_descriptions = { good = { [1] = "Altid glad og en flittig medarbejder. ", [2] = "Meget pligtopfyldende. Meget omsorgsfuld. ", [3] = "Er meget alsidig. ", [4] = "Er venlig og altid i godt humör. ", [5] = "Ekstremt udholdende. Löber en tur hver dag. ", [6] = "Utrolig höflig og er godt opdraget. ", [7] = "Utrolig dygtig og talentfuld. ", [8] = "Er meget opsat pÃ¥ at vise, hvem han er. ", [9] = "Er en perfektionist som aldrig giver op. ", [10] = "Hjælper altid patienter med et smil. ", [11] = "Charmerende, höflig og hjælpsom. ", [12] = "Er motiveret og dedikeret. ", [13] = "Stille af natur, men arbejder meget. ", [14] = "Loyal og venlig. ", [15] = "Eftertænksom og er altid til at stole pÃ¥ i akutte tilfælde. ", }, misc = { [1] = "Spiller golf. ", [2] = "Dykker efter muslinger. ", [3] = "Laver is-skulpturer. ", [4] = "Drikker vin. ", [5] = "Körer rally. ", [6] = "Strikker i fritiden ", [7] = "Samler pÃ¥ frimærker. ", [8] = "Elsker at hoppe ned fra scener til publikums begejstring. ", [9] = "Elsker at surfe. ", [10] = "Elsker at undervise elever.", [11] = "Brænder selv sin whisky. ", [12] = "Gör-det-selv ekspert. ", [13] = "Elsker franske kunstfilm. ", [14] = "Spiller meget Theme Park. ", [15] = "Har stort körekort. ", [16] = "Deltager i motorcykelræs. ", [17] = "Spiller klassisk violin og cello. ", [18] = "Entusiastisk tog-förer. ", [19] = "Hundeelsker. ", [20] = "Hörer meget radio. ", [21] = "Bader ofte. ", [22] = "Instruktör i bambusfletning. ", [23] = "Laver figurer af gröntsager. ", [24] = "Deltids minerydder. ", [25] = "Quizvært. ", [26] = "Samler pÃ¥ splinter fra 2.Verdenskrig. ", [27] = "Elsker at indrette. ", [28] = "Danser til rave og hip-hop musik. ", [29] = "Dræber insekter med deodorantspray. ", [30] = "Buher af dÃ¥rlige komikere. ", [31] = "Stillet op til sygehusrÃ¥det. ", [32] = "Gartner med en hemmelig opskrift. ", [33] = "Smugler uægte malerier. ", [34] = "Vokalist i et rock'n'roll-band. ", [35] = "Elsker at se fjernsyn i dagtimerne. ", [36] = "Fisker efter örret. ", [37] = "Lurer pÃ¥ turister pÃ¥ museum. ", }, bad = { [1] = "Langsom og anmasende. ", [2] = "Træt og meget lidt motiveret. ", [3] = "DÃ¥rlig trænet og ubrugelig. ", [4] = "Dum i arbejde. Er en reserve. ", [5] = "Lav udholdenhed. Har en dÃ¥rlig attitude. ", [6] = "Meget döv. Lugter af kÃ¥l. ", [7] = "Er ligeglad med jobbet. Tager meget lidt ansvar. ", [8] = "Lider af koncentrationsbesvær og bliver let distraheret. ", [9] = "Stresset og laver mange fejl. ", [10] = "Let at provokere. Sidder meget pÃ¥ en stol. ", [11] = "Uforsigtig og uheldig. ", [12] = "Utroværdig og ubeslutsom. ", [13] = "Dumdristig og laver meget lidt. ", [14] = "Snu, udspekuleret og bagtaler andre. ", [15] = "Arrogant og er en karl-smart. ", }, } -- Staff list staff_list = { -- S[24][1] unused -- S[24][2] -- I have no idea what this is. Me neiter, seems like a early stupid way of doing the text overlay? morale = "MORAL", tiredness = "FRISKHED", skill = "KVALIFIKATION", total_wages = "TOTAL LÖN", } -- Objects object = { -- S[2][ 1] unused desk = "Skrivebord", cabinet = "Arkivskab", door = "Dör", bench = "Bænk", table1 = "Bord", -- unused object chair = "Stol", drinks_machine = "Sodavandsautomat", bed = "Seng", inflator = "Inflator", pool_table = "Billiardbord", reception_desk = "Receptionsbord", table2 = "Bord", -- unused object & duplicate cardio = "LöbebÃ¥nd", scanner = "Skanner", console = "Konsol", screen = "Skærm", litter_bomb = "Affaldsbombe", couch = "Lænestol", sofa = "Sofa", crash_trolley = "Lægebord", tv = "Fjernsyn", ultrascanner = "Ultraskanner", dna_fixer = "DNA Fixer", cast_remover = "Gibsfjerner", hair_restorer = "HÃ¥rgenskaber", slicer = "Tungeskærer", x_ray = "Röntgen", radiation_shield = "Radioaktivitetsskjold", x_ray_viewer = "Röntgenviser", operating_table = "Operationsbord", lamp = "Lampe", -- unused object toilet_sink = "Vask", op_sink1 = "Operationsvask", op_sink2 = "Operationsvask", surgeon_screen = "Operationsskærm", lecture_chair = "Undervisningsstol", projector = "Projektor", bed2 = "Seng", -- unused duplicate pharmacy_cabinet = "Medicinskab", computer = "Computer", atom_analyser = "Atomanalyser", blood_machine = "Blodmaskine", fire_extinguisher = "Brandslukker", radiator = "Radiator", plant = "Plante", electrolyser = "Elektrolyser", jelly_moulder = "Gelé former", gates_of_hell = "Helvedes gab", bed3 = "Seng", -- unused duplicate bin = "Skraldespand", toilet = "Toilet", swing_door1 = "Svingdör", swing_door2 = "Svingdör", shower = "Bruser", auto_autopsy = "Auto obduktion", bookcase = "Bogreol", video_game = "videospil", entrance_left = "Indgang venstre", entrance_right = "Indgang höjre", skeleton = "Skelet", comfortable_chair = "Komfortabel stol", } -- Place objects window place_objects_window = { drag_blueprint = "Træk skitsen ud indtil du er tilfreds med rummets störrelse.", place_door = "Vælg dörens placering.", place_windows = "Placer de vinduer du har lyst til, klik derefter pÃ¥ godkend.", place_objects = "Placer genstandene indtil du er tilfreds, klik derefter pÃ¥ godkend.", confirm_or_buy_objects = "Godkend rummet, köb flere genstande, eller flyt allerede placerede genstande.", pick_up_object = "Klik pÃ¥ genstanden der skal samles op, eller vælg en anden i menuen.", place_objects_in_corridor = "Placer genstanden i et gangareal.", } -- Competitor names -- No need to translate!! //froksen -- Months months = { "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", } -- Graphs graphs = { money_in = "Indtægter", money_out = "Udgifter", wages = "Lönninger", balance = "Saldo", visitors = "Besögene", cures = "Helbredte", deaths = "Döde", reputation = "Omdömme", time_spans = { "1 Ã¥r", "12 Ã¥r", "48 Ã¥r", } } -- Transactions transactions = { --null = S[8][ 1], -- not needed wages = "Lönninger", hire_staff = "Ansat", buy_object = "Köbt genstand", build_room = "Bygget rum", cure = "Helbredt", buy_land = "Köbt grund", treat_colon = "Behandlet:", final_treat_colon = "Endelige behandling:", cure_colon = "Helbredt:", deposit = "Behandlings indsættelse", advance_colon = "Forskud", research = "Forskningsomkostninger", drinks = "Indtægt: Drikkevarer", jukebox = "Indtægt: Jukebox", -- unused cheat = "Snydepenge", heating = "Varmeregning", insurance_colon = "Forsikring:", bank_loan = "BanklÃ¥n", loan_repayment = "LÃ¥n tilbagebetalning", loan_interest = "Renter pÃ¥ lÃ¥n", research_bonus = "Forskningsbonus", drug_cost = "Medicinomkostninger", overdraft = "Renter pÃ¥ kredit", severance = "Böde", general_bonus = "Generel bonus", sell_object = "Solgt genstand", personal_bonus = "Personlig bonus", emergency_bonus = "Akuttilfælde bonus", vaccination = "Vaccinering", epidemy_coverup_fine = "Epidemiböde for forsög pÃ¥ mörklægning", compensation = "Kompensation", vip_award = "VIP belönning", epidemy_fine = "Epidemiböde", eoy_bonus_penalty = "Ã…rsafslutning - straf", eoy_trophy_bonus = "Ã…rsafslutning - trofæbonus", machine_replacement = "Udskiftning af maskine", } -- Level names -- No need to translate these // froksen -- Town map town_map = { -- S[13][ 1] -- unused chat = "Oversigtskort", for_sale = "Til salg", not_for_sale = "Ikke til salg", number = "Grundnummer", owner = "Grundejer", area = "GrundomrÃ¥de", price = "Grundpris", } -- Rooms short -- NB: includes some special "rooms" -- reception, destroyed room and "corridor objects" rooms_short = { -- S[14][1] -- unused -- S[14][3] -- unused reception = "Reception", destroyed = "Ödelagt", corridor_objects = "Korridorgenstande", gps_office = "Lægekonsultation", psychiatric = "Psykiatri", ward = "Sengeafsnit", operating_theatre = "Operationsstue", pharmacy = "Apotek", cardiogram = "Kardiogram", scanner = "Skanner", ultrascan = "Ultraskanner", blood_machine = "Blodmaskine", x_ray = "Röntgen", inflation = "Pumperum", dna_fixer = "DNA Fixer", hair_restoration = "HÃ¥rgenskaber", tongue_clinic = "Tungeklinik", fracture_clinic = "Knoglebrudsklinik", training_room = "Undervisningsrum", electrolysis = "Elektrolyse", jelly_vat = "Geléröret", -- Hmm. Donno if this is translateable staffroom = "Personalerum", -- rehabilitation = S[14][24], -- unused, i laughed when i saw this though.. They didn't however get so stupid and include this in the game :P general_diag = "General diagnose", research_room = "Forskningsrum", toilets = "Toiletter", decontamination = "Dekontaminering", } rooms_long = { -- S[53][1] -- unused general = "Generelt", -- unused? emergency = "Akuttilfælde", corridors = "Korridorer", gps_office = "Lægekonsultationen", psychiatric = "Psykiateren", ward = "Sengeafsnittet", operating_theatre = "Operationsstuen", pharmacy = "Apotektet", cardiogram = "Kardiogrammet", scanner = "Skannerrum", ultrascan = "Ultraskannerrum", blood_machine = "Blodmaskinerum", x_ray = "Röntgen", inflation = "Pumperum", dna_fixer = "DNA Fixer", hair_restoration = "HÃ¥rgenskaber", tongue_clinic = "Tungeklinik", fracture_clinic = "Konglebrudklinik", training_room = "Undervisningsrum", electrolysis = "Elektolyseklinik", jelly_vat = "Geléröret", -- Same as rooms short version staffroom = "Personalerum", -- rehabilitation = S[53][24], -- unused general_diag = "General diagnose", research_room = "Forskningsrum", toilets = "Toiletter", decontamination = "Dekontaminering", } room_descriptions = { ultrascan = { [1] = "Ultraskanner//", [2] = "Ultraskanneren er toppen af poppen indenfor diagnoseudstyr. Den koster spidsen af en jetjager, men pengne er godt givet ud hvis du vil være i stand til at stille meget sikre diagnoser pÃ¥ dit hospital.//", [3] = "Ultraskanneren betjenes af en læge. Den kræver ogsÃ¥ vedligeholdelse. ", }, gp = { [1] = "Lægekonsultation//", [2] = "Dette er det helt fundementale diagonseredskab pÃ¥ dit hospital. Nye patienter sendes hertil först for at finde ud af, hvad de fejler. Hvis der ikke straks kan stilles en diagnose, sendes patienten videre til andre diagnoserum. Du skal sandsynligvis med tiden bruge flere lægekonsultationer for at undgÃ¥ lange köer. Jo större rummet er og jo flere genstande du placerer i rummet, des bedre arbejder lægen. Dette gælder for alle rum.//", [3] = "Alle typer læger kan arbejde i lægekonsultationen. ", }, fracture_clinic = { [1] = "Knoglebrudsklinik//", [2] = "Patienter som har fÃ¥et knoglebrud behandles her. Gipsfjerneren bruger en kraftig industrilaser til at skære gibsen væk, og forÃ¥rsager kun ganske lidt smerte hos patienten.//", [3] = "En sygeplejerske stÃ¥r fÃ¥r betjeningen af maskinen, som ogsÃ¥ kræver vedligeholdelse af en pedel. ", }, tv_room = { [1] = "TV RUM IKKE BRUGT", }, inflation = { [1] = "Pumperum//", [2] = "Patienter som har et humoristisk, men dog smertefuldt, ballonhoved, behandles i pumperummet. Her stikkes der hul pÃ¥ hovedet sÃ¥ trykket forsvinder. Herefter pumper lægen hovedet op til normalstörrelse.//", [3] = "Pumperummet kan kun betjenes af læger. Regelmæssig vedligeholdelse er ogsÃ¥ vigtig. ", }, jelly_vat = { [1] = "Geléröret//", [2] = "Patienter, som lider af denne forfærdelige sygdom, mÃ¥ slingre den lange vej til Geleröret. I röret bliver de helbredt pÃ¥ en mÃ¥de, som stadig ikke fuldt ud kan forklares af lægevidenskaben.//", [3] = "Geleröret kræver en læge. Det kræver ogsÃ¥ vedligeholdelse fra af en pedel.", }, scanner = { [1] = "Skanner//", [2] = "Patienter bliver præcist diagnosticeret ved brug af denne sofistikerede skanner. De skal efterfölgende se en læge i lægekonsultationen, som skal se pÃ¥ resultatet af skanningen og stille den endelige diagnose.//", [3] = "Skanneren betjenes af en læge. Den kræver vedligeholdelse af en pedel. ", }, blood_machine = { [1] = "Blodmaskine//", [2] = "Blodmaskinen undersöger patientens blodceller for at finde ud af, hvad de fejler.//", [3] = "Blodmaskinen betjenes af en læge. Den kræver ogsÃ¥ vedligeholdelse af en pedel. ", }, pharmacy = { [1] = "Apotek//", [2] = "Patienter, som er blevet diagnosticeret med en sygdom som kan kureres med medicin, sendes til apoteket. EfterhÃ¥nden som flere og flere sygdomme som kan kureres med medicin opdages, kommer flere og flere patienter til apoteket. Det kan være en god idé at bygge flere apoteker nÃ¥r dit hospital vokser.//", [3] = "En sygeplejerske stÃ¥r for udleveringen af medicin i apoteket. ", }, cardiogram = { [1] = "Kardio//", [2] = "Patienter forsöges diagnosticeret her för de sendes tilbage til lægekonsultationen for at finde en kur.//", [3] = "Kardioen betjenes af en læge. Den kræver ogsÃ¥ vedligeholdelse af en pedel. ", }, ward = { [1] = "Sengeafsnit//", [2] = "Patienter observeres her af en sygeplejerske mens man forsöger at stille en diagnose. Patienter opholder sig ogsÃ¥ ofte i sengeafsnittet forud for operationer.//", [3] = "Sengeafsnittet kræver en sygeplejserke. ", }, psych = { [1] = "Psykiatri//", [2] = "Patienter som diagnosticeres med en psykiatrisk sygdom, sendes til psykiateren for behandling. Psykiatere kan ogsÃ¥ holde samtaler med patienter under diagnosticeringsfasen for at finde ud af, hvad de fejler.//", [3] = "Psykiatrien kræver en læge med psykiatrisk uddannelse. ", }, staff_room = { [1] = "Personalerum//", [2] = "Dine ansatte bliver trætte mens de udförer deres arbejde. I personalerummet kan de slappe af og komme til kræfter igen. Trætte ansatte arbejder langsommere, kræver flere penge og vil i sidste ende sige op. De laver ogsÃ¥ flere fejl. Et personalerum med flere forskellige ting for dine ansatte at give sig til, er bestemt udgiften værd. Sörg for, at der er plads til flere ansatte pÃ¥ samme tid. ", }, operating_theatre = { [1] = "operationsstue//", [2] = "I dette vigtige rum bliver en række sygdomme behandlet. Operationsstuen kræver god plads og en masse dyrt udstyr. Den er en vital del af dit hospital.//", [3] = "Operationsstuen kræver to læger med kirurgisk uddannelse. ", }, training = { [1] = "Undervisningsrum//", [2] = "Dine praktikanter og læger kan fÃ¥ nye, værdifulde færdigheder ved at studere i dette rum. En konsulent med kirurgisk, psikiatrisk eller forskningsmæssig uddannelse vil videregive disse færdigheder til de læger, de underviser. Læger, som allerede har disse færdigheder, bliver bedre til at bruge dem ved at blive undervist.//", [3] = "Undervisningen varetages af en konsulent. ", }, dna_fixer = { [1] = "DNA Klinik//", [2] = "Patienter, som har været udsat for eksperimenter af aliens fra andre planeter, fÃ¥r deres DNA udskiftet i denne klinik. DNA-klinikken er udstyret med en meget avanceret maskine, og det ville nok være en god idé at have en brandslukker stÃ¥ende i rummet, bare for en sikkerheds skyld.//", [3] = "DNA-klinikken betjenes af en forskningsuddannet læge. Den kræver ogsÃ¥ vedligeholdelse af en pedel. ", }, research = { [1] = "Forskningsrum//", [2] = "Ny medicin og nye kure opdages og forbedres i forskningsrummet. Det er en vital del af dit hospital, og vil med tiden forbedre dine helbredelsesprocenter.//", [3] = "Forskningsuddannede læger kan arbejde i forskningsrummet. ", }, hair_restoration = { [1] = "HÃ¥rgenskabelsesklinik//", [2] = "Patienter som lider af en ekstrem grad af ufrivillig skaldethed, sendes til hÃ¥rgenskabelsesklinikken. En læge vil betjene maskinen og vil hurtigt genskabe patientens mægtige hÃ¥rpragt.//", [3] = "HÃ¥rgenskabelsesklinkken kræver en læge. Den kræver ogsÃ¥ vedligeholdelse af en pedel. ", }, general_diag = { [1] = "Generel Diagnose//", [2] = "Patienter, som kræver yderligere diagnosticering, sendes hertil for at blive undersögt af en læge. Hvis en læge i lægekonsultationen ikke i förste omgang kan finde ud af, hvad patienten fejler, bliver de ofte sendt til Generel Diagnose for yderligere undersögelse. Herfra sendes de tilbage til lægekonsultationen hvor resultaterne bliver analyseret.//", [3] = "Generel Diagnose kræver en læge. ", }, electrolysis = { [1] = "Elektrolyse//", [2] = "Patienter med eksplosiv hÃ¥rvækst sendes til dette rum, hvor en speciel maskine kaldet en Elektrolyser, hiver hÃ¥rene ud og lukker hÃ¥rsækkene med elektriske stöd.//", [3] = "Betjening af elektrolysemaskinen kræver en læge. Den kræver ogsÃ¥ vedligeholdelse af en pedel. ", }, slack_tongue = { [1] = "Slap-Tunge Klinik//", [2] = "Patienter som fÃ¥r stillet diagnosen slap tunge, sendes til denne klinik for behandling. Lægen anvender et stykke moderne udstyr til at forlænge tungen og skære den af, for derved at efterlade patienten med en helt normal tunge.//", [3] = "Slap-Tunge klinikken kræver en læge. Den kræver ogsÃ¥ vedligeholdelse af en pedel. ", }, toilets = { [1] = "Toilet//", [2] = "Patienter som hörer naturens kalden, fÃ¥r brug for at lette byrden i dine komfortable toiletter. Du kan installere ekstra bÃ¥se og vaske hvis du forventer mange besögende. Det kan være en god idé at bygge flere toiletter i dit hospital, sÃ¥ trængende patienter ikke skal gÃ¥ for langt. ", }, no_room = { [1] = "", }, x_ray = { [1] = "Röntgen//", [2] = "Röntgenmaskinen fotograferer indersiden af folk med en speciel bestrÃ¥lingsteknologi, sÃ¥ dine læger kan danne sig et bedre billede af, hvad de fejler.//", [3] = "Röntgenmaskinen betjenes af en læge. Den kræver ogsÃ¥ vedligeholdelse. ", }, decontamination = { [1] = "DekontamineringsKlinik//", [2] = "Patienter, som har været udsat for radioaktivitet, sendes hurtigt til dekontamineringsklinikken. Dette rum indeholder en brusebad som renser dem for de forfærdelige radiaktive stoffer og mudder.//", [3] = "Dekontamineringsklinikken kræver en læge. Den kræver ogsÃ¥ vedligeholdelse af en pedel. ", }, } -- Drug companies drug_companies = { "Mediciner-Til-Dig", "Kur-R-Os", "Runde SmÃ¥ Piller Co.", "Dyremedicin AS", "Alle Piller Co.", } -- Build rooms build_room_window = { -- S[16][1], -- unused pick_department = "Vælg afdelning", pick_room_type = "Vælg rumtype", cost = "Pris:", } -- Build objects buy_objects_window = { choose_items = "Vælg genstand", price = "Pris: ", total = "Total: ", } -- Research research = { categories = { cure = "Behandlingsudstyr", diagnosis = "Diagnoseudstyr", drugs = "Medicinforskning", improvements = "Forbedringer", specialisation = "Specialisering", }, funds_allocation = "Forskningsbudget", allocated_amount = "Totale budget", } -- Policy screen policy = { header = "Hospitalets politik", diag_procedure = "Diagnose procedure", diag_termination = "Diagnose annullering", staff_rest = "Send personale til personalerum", staff_leave_rooms = "Personale mÃ¥ forlade rum", sliders = { guess = "GæT PÃ… KUR", -- belongs to diag_procedure send_home = "SEND HJEM", -- also belongs to diag_procedure stop = "STOP PROCEDURE", -- belongs to diag_termination staff_room = "TIL PERSONALERUM", -- belongs to staff_rest } } -- Rooms room_classes = { -- S[19][1] -- unused -- S[19][2] -- "corridors" - unused for now -- S[19][3] -- unused diagnosis = "Diagnosticering", treatment = "Behandling", clinics = "Klinikker", facilities = "Faciliteter", } -- Insurance companies insurance_companies = { out_of_business = "GÃ…ET KONKURS", "Nyköbt Lökke", "Bölgen BlÃ¥", "Ã…rlige Forskud AS", "Stygge Arr Co.", "Svömmeblære Co.", "Drön Ærlig AS", "Sverres Beholdninger", "Kate Pus Og Kompani", "Larsen Jr. Forsikring", "Glade Forsikringer AS", "Mafia Forsikringer", } -- Menu root -- Keep 2 spaces as prefix and suffix menu = { file = " FILER ", options = " INDSTILLINGER ", display = " GRAFISKE INDSTILLINGER ", charts = " SKEMAER ", debug = " FEJLFINDING ", } menu_file = { load = " INDLæS ", save = " GEM ", restart = " START FORFRA ", quit = " AFSLUT ", } menu_file_load = { [1] = " Gemt spil 1 ", [2] = " Gemt spil 2 ", [3] = " Gemt spil 3 ", [4] = " Gemt spil 4 ", [5] = " Gemt spil 5 ", [6] = " Gemt spil 6 ", [7] = " Gemt spil 7 ", [8] = " Gemt spil 8 ", } -- Menu Options menu_options = { sound = " LYD ", announcements = " ANNONCERINGER ", music = " MUSIK ", sound_vol = " LYDSTYRKE ", announcements_vol = " ANNONCERINGSSTYRKE ", music_vol = " MUSIKSTYRKE ", autosave = " AUTOMATISK GEM ", game_speed = " SPILHASTIGHED ", jukebox = " JUKEBOX ", edge_scrolling = " KANT SCROLLING ", settings = " INDSTILLINGER ", } -- Menu Options Game Speed menu_options_game_speed = { pause = " (P) PAUSE ", slowest = " (1) LANGSOMMEST ", slower = " (2) LANGSOMMERE ", normal = " (3) NORMAL ", max_speed = " (4) HURTIGST ", and_then_some_more = " (5) OG SÃ… LIGE LIDT MERE ", } -- Menu Display menu_display = { high_res = " MANGE DETALJER ", mcga_lo_res = " FÃ… DETAILJER ", shadows = " SKYGGER ", } -- Menu Charts menu_charts = { statement = " ERKLÆRINGER ", casebook = " MEDICINBOG ", policy = " POLITIK ", research = " FORSKNING ", graphs = " DIAGRAMMER ", staff_listing = " PERSONALEHÃ…NDTERING ", bank_manager = " BANKKONSULENT ", status = " STATUS ", briefing = " BRIEFING ", } -- Menu Debug menu_debug = { object_cells = " OBJEKTCELLER ", entry_cells = " INDGANGSCELLER ", keep_clear_cells = " KEEP-CLEAR CELLER ", nav_bits = " NAV BITS ", remove_walls = " FJERN VÆGGE ", remove_objects = " FJERN OBJEKTER ", display_pager = " VIS PERSONSOEGER ", mapwho_checking = " MAPWHO CHECKING ", plant_pagers = " PLANT PERSONSOEGERE ", porter_pagers = " PORTER PERSONSOEGERE ", pixbuf_cells = " PIXBUE CELLER ", enter_nav_debug = " ENTER NAV FEJLSOEGNING ", show_nav_cells = " VIS NAV CELER ", machine_pagers = " MASKIN PERSONSOEGER ", display_room_status = " VIS RUM STATUS ", display_big_cells = " VIS STORE CELLER ", show_help_hotspot = " VIS HJÆLP HOTSPOTS ", win_game_anim = " VIND SPIL ANIM ", win_level_anim = " VIND RUNDE ANIM ", lose_game_anim = { [1] = " TAPT SPIL 1 ANIM ", [2] = " TAPT SPIL 2 ANIM ", [3] = " TAPT SPIL 3 ANIM ", [4] = " TAPT SPIL 4 ANIM ", [5] = " TAPT SPIL 5 ANIM ", [6] = " TAPT SPIL 6 ANIM ", [7] = " TAPT SPIL 7 ANIM ", }, } -- High score screen high_score = { -- S[25][1] unused pos = "POS", player = "SPILLER", score = "SCORE", best_scores = "HALL OF FAME", worst_scores = "HALL OF SHAME", killed = "DRÆBT", -- is this used? No its not. categories = { money = "RIGESTE", salary = "HÖJESTE LÖN", clean = "RENESTE", cures = "ANTAL HELBREDTE", deaths = "ANTAL DÖDSFALD", cure_death_ratio = "HELBREDT-DÖDSFALDS RATIO", patient_happiness = "PATIENTTILFREDSHED", staff_happiness = "PERSONALETILFREDSHED", staff_number = "MEST PERSONALE", visitors = "FLEST BESÖGENDE", total_value = "TOTAL VÆRDI", }, } --mangler -- Trophy room -- Trophy room trophy_room = { many_cured = { awards = { "Tillykke med Marie Curie-prisen for at have været i stand til at helbrede næsten alle patienter pÃ¥ hospitalet i det forgangne Ã¥r.", }, trophies = { "Den Internationale Behandlingsfond önsker at ære dig, fordi du har helbredt et stort antal mennesker pÃ¥ hospitalet i det forgangende Ã¥r. De tildeler dig Kureret-Mange trofæet.", "Du har fÃ¥et tildelt Sygdom-GÃ¥-Væk trofæet for at have kureret en höj procentdel af patienter pÃ¥ hospitalet i det forgangne Ã¥r.", }, }, all_cured = { awards = { "Tillykke med Marie Curie-prisen for at have været i stand til at helbrede alle patienter pÃ¥ hospitalet i det forgangne Ã¥r.", }, trophies = { "Den Internationale Behandlingsfond önsker at ære dig, fordi du har helbredt alle patienter pÃ¥ hospitalet i det forgangne Ã¥r. De tildeler dig derfor Kureret-Alle trofæet.", "Du har fÃ¥et tildelt Ingen-Syge-Mennesker trofæet for at have helbredt alle patienter pÃ¥ hospitalet i det forgangne Ã¥r.", }, }, high_rep = { awards = { "Du er blevet tildelt Statsministerens Glitrende Ærespris, som tildeles det hospital med det bedste omdömme i det forgangne Ã¥r. Tillykke!", "Smil og vær glad! Du tildeles Bullfrog-prisen for hospitalet med det bedste omdömme i det forgangne Ã¥r. Nyd det - det er velfortjent!", }, trophies = { "Tillykke med Rent-og-Pænt trofæet som tildeles hospitalet med det bedste omdömme i det forgangne Ã¥r. Det er faktisk fortjent.", }, }, happy_staff = { awards = { }, trophies = { "Du tildeles Smilets Pris for at holde dit hÃ¥rdtarbejdende personale i godt humör.", "Instituttet for Humörspredere hædrer dig for ikke at have nogen sure og negative ansatte pÃ¥ hospitalet i det forgangne Ã¥r, og giver dig derfor dette trofæ.", "Dette trofæ tildeles hermed dig fordi dit personle, pÃ¥ trods af en ihærdig arbejdsindsats, er glade og tilfredse. De ligefrem strÃ¥ler af glæde!", }, }, happy_vips = { awards = { "Du har vundet Nobelprisen for at imponere VIP'erne. Alle, som besögte dit hospital i det forgangne Ã¥r, taler ikke om andet.", "Tillykke med VIP-prisen for at have gjort livene for de hÃ¥rdtarbejdende kendisser bedre, ved at sætte alle som besögte dit hospital i det forgangne Ã¥r i et bedre lys. Fantastisk.", }, trophies = { "Foreningen for Kendte Mennesker belönner dig med Kendistrofæet for at have taget dig godt af alle VIP'ere som besögte dit hospital i det forgangne Ã¥r - du nærmer dig kendis-status, du er snart en af os.", }, }, no_deaths = { awards = { "Du har vundet Længe-Leve trofæet for at holde 100 procent af patienterne i live i det forgangne Ã¥r.", }, trophies = { "Foreningen Livet-GÃ¥r-Videre belönner dig med dette trofæ for at have nul dödsfald i det forgangne Ã¥r.", "Du er tildelt Længe Leve Livet trofæet for at have undgÃ¥et dödsfald pÃ¥ dit hospital i det forgangne Ã¥r. Storartet.", }, }, rats_killed = { awards = { }, trophies = { "Du er tildelt Ingen-Gnavere trofæet for at have skudt %d rotter pÃ¥ dit sygehuset i det forgangne Ã¥r.", -- %d (number of rats) "Du modtager dette trofæ af Foreningen For Mus og Rotters Bekæmpelse pÃ¥ grund af dine unikke evner til at skyde gnavere. Du fik ramt pÃ¥ %d af dem i det forgangne Ã¥r!", -- %d (number of rats) "Du modtager Rotteskydertrofæet for dine unikke evner, som resulterede i udryddelsen af %d rotter pÃ¥ hospitalet i det forgangne Ã¥r.", -- %d (number of rats) }, }, rats_accuracy = { awards = { }, trophies = { "Du er tildelt Nöjagtige-Skud-I-HÃ¥blös-Krig Trofæet for at have en træfprocent pÃ¥ %d%% i jagten pÃ¥ ækle rotter.", -- %d (accuracy percentage) "Dette trofæ er for at ære din nöjagtighed ved dræbe %d%% af rottene i det forgangne Ã¥r.", -- %d (accuracy percentage) "For at hædre din præstation med at dræbe intet mindre end %d%% af rottene pÃ¥ dit hospital, bliver du tildelt Dungeon Keepers Skadedyrspris, Tillykke!", -- %d (accuracy percentage) }, }, healthy_plants = { awards = { "Tillykke med Grönne-Glæder prisen for at have holdt dine planter ekstremt friske i det forgangne Ã¥r.", }, trophies = { "Venner-af-Potteplanter önsker at give dig Grön Helse Trofæet, fordi dine planter har strÃ¥let de sidste 12 mÃ¥neder.", "Foreningen For Grönne Gamlinger önsker at give dig Grönfinger Trofæet for at have holdt plantene friske i det forgangne Ã¥r.", }, }, sold_drinks = { awards = { }, trophies = { "Foreningen for Globale Tandlæger er stolte over at kunne tildele dig dette trofæ for at have solgt utroligt store mængder sodavand pÃ¥ dit hospital i det forgangne Ã¥r.", "Hospitalet tildeles Kulsyre-prisen for alle de sprudlende sodavand, der er solgt fra dine automater i de sidste 12 mÃ¥neder.", "PÃ¥ vegne af Hulfyldernes Forening, tildeles du hermed dette trofæ dækket af Chokolade, for at have solgt enorme mængder sodavand pÃ¥ hospitalet i det forgangne Ã¥r.", }, }, } -- Casebook screen casebook = { reputation = "Omdömme", treatment_charge = "Behandlingspris", earned_money = "Indtjent", cured = "Helbredt", deaths = "Dræbt", sent_home = "Sendt hjem", research = "Fokusér forskning", cure = "Kur", cure_desc = { build_room = "Jeg anbefalder du bygger %s", -- %s (room name) build_ward = "Du mangler stadig at bygge et sengeafsnit.", hire_doctors = "Du mangler at ansætte nogle læger", hire_surgeons = "Du mangler at ansætte kirurger.", hire_psychiatrists = "Du har ikke ansat en psykiatiker.", hire_nurses = "Du skal ansætte sygeplejersker.", no_cure_known = "Ingen kendt kur.", cure_known = "Kur.", improve_cure = "Forbedre kur.", }, } -- Tooltips tooltip = { -- Build room window build_room_window = { room_classes = { diagnosis = "Diagnoserum", treatment = "Behandlingrum", clinic = "Klinikker", facilities = "Faciliteter", }, cost = "Samlede omkostninger for rummet", close = "Afbryd processen og vend tilbage til spillet", }, -- Toolbar toolbar = { bank_button = "Venstreklik for bankkonsulent, höjreklik for kontoudskrift", balance = "Din Balance", reputation = "Dit omdömme: ", -- NB: no %d! Append " ([reputation])". date = "Dato", rooms = "Byg rum", objects = "Köb genstande", edit = "Ændre rum/genstande", hire = "Ansæt personale", staff_list = "PersonalhÃ¥ndtering", town_map = "Oversigtskort", casebook = "Medicinbog", research = "Forskning", status = "Status", charts = "Diagrammer", policy = "Politik", }, -- Hire staff window hire_staff_window = { doctors = "Vis tilgængelige læger pÃ¥ arbejdsmarkedet", nurses = "Vis tilgængelige sygeplejersker pÃ¥ abejdsmarkedet", handymen = "Vis tilgængelige pedeller pÃ¥ arbejdsmarkedet", receptionists = "Vis tilgængelige receptionister pÃ¥ arbejdsmarkedet", prev_person = "Forrige person", next_person = "Næste person", hire = "Ansæt person", cancel = "Afbryd", doctor_seniority = "Lægens evner (Praktikant, Doktor, Konsulent)", staff_ability = "Kvalifikation", salary = "Lönkrav", qualifications = "Lægens specialer", surgeon = "Kirurg", psychiatrist = "Psykiater", researcher = "Forsker", }, -- Buy objects window buy_objects_window = { price = "Pris for genstand", total_value = "Total værdi af köbte genstande", confirm = "Köb genstand(e)", cancel = "Afbryd", increase = "Köb en til af denne genstand", decrease = "Köb en færre af denne genstand", }, -- Staff list staff_list = { doctors = "Se en oversigt over dine læger", nurses = "Se en oversigt over dine sygeplejersker", handymen = "Se en oversigt over dine pedeller", receptionists = "Se en oversigt over dine receptionister", happiness = "Viser hvor tilfredse dine ansatte er", tiredness = "Viser hvor trætte dine ansatte er", ability = "Viser de ansattes evner", salary = "Den pÃ¥gældendes lön", happiness_2 = "Den ansattes moral", tiredness_2 = "Den ansattes træthedssniveau", ability_2 = "Den ansattes evner", prev_person = "Forrige ansatte", next_person = "Næste ansatte", bonus = "Giv den ansatte 10% i bonus", sack = "Giv den ansatte sparket", pay_rise = "Hæv den ansattes lön med 10%", close = "Luk og vend tilbage til spillet", doctor_seniority = "Lægens evner", detail = "Lægens öje for detaljer", view_staff = "Fölg den ansatte", surgeon = "Kvalificeret Kirurg", psychiatrist = "Kvalificeret Psykiater", researcher = "Kvalificeret Forsker", surgeon_train = "%d%% gennemfört uddannelse som kirurg", -- %d (percentage trained) psychiatrist_train = "%d%% gennemfört uddannelse som psykiater", -- %d (percentage trained) researcher_train = "%d%% gennemfört uddannelse som forsker", -- %d (percentage trained) skills = "Ekstra evner", }, -- Queue window queue_window = { num_in_queue = "Antal patienter i köen", num_expected = "Antal patienter som receptionen forventer ankommer til köen indenfor kort tid", num_entered = "Antal patienter behandlet i dette rum", max_queue_size = "Den maksimale længde köen mÃ¥ have", dec_queue_size = "Mindre makslængde", inc_queue_size = "Större makslængde", front_of_queue = "Træk i en patient for at stille ham/hende forest i köen", end_of_queue = "Træk i en patient for at stille ham/hende bagerst i köen", close = "Luk vinduet", patient = "Træk i en patient for at stille ham/hende i köen. Höjreklik pÃ¥ en patient for at sende patienten hjem eller til et konkurrerende hospital", patient_dropdown = { reception = "Send patienten til receptionen", send_home = "Send patienten hjem", hospital_1 = "Henvis patienten til et andet hospital", hospital_2 = "Henvis patienten til et andet hospital", hospital_3 = "Henvis patienten til et andet hospital", }, }, -- Main menu main_menu = { new_game = "Begynd et nyt spil", load_game = "Hent et gemt spil", continue = "Indlæs et gemt spil", network = "Ændre dine indstillinger", quit = "Er du sikker pÃ¥ du ikke vil spille mere?", load_menu = { load_slot = " SPIL [slotnumber] ", -- NB: no %d! Append " [slotnumber]". empty_slot = " TOM ", }, }, -- Window general window_general = { cancel = "Afbryd", confirm = "Godkend", }, -- Patient window patient_window = { close = "Luk vinduet", graph = "Klik for at skifte mellem en graf over patientens helbred og patientens behandlingshistorik", happiness = "Patientens humör", thirst = "Patientens törst", warmth = "Patientens temperatur", casebook = "Vis detaljer om patientens sygdom", send_home = "Send patienten hjem fra hospitalet", center_view = "Fokusér pÃ¥ patienten", abort_diagnosis = "Send patienten til behandling i stedet for at vente til diagnosen er stillet med sikkerhed", queue = "Se köen patienten er i", }, -- window staff_window = { name = "Den ansattes navn", close = "Luk vinduet", face = "Ansigtet pÃ¥ personen - klik for at administere de ansatte", happiness = "Humörniveau", tiredness = "Træthedsniveau", ability = "Kvalifikation", doctor_seniority = "Lægens særlige evner (Praktikant, Doktor, Konsulent)", skills = "specialisering", surgeon = "Kirurg", psychiatrist = "Psykiater", researcher = "Forsker", salary = "MÃ¥nedslön", center_view = "Venstreklik for at finde den ansatte, höjreklik for at bladre igennem de ansatte.", sack = "Fyr personen", pick_up = "Saml op", }, -- Machine window machine_window = { name = "Navn", close = "Luk vinduet", times_used = "Antal gange maskinen har været brugt", status = "Maskinstatus", repair = "Kald en pedel til at vedligeholde maskinen", replace = "Udskift maskinen med en ny", }, -- Handyman window -- Spparently handymen have their own set of strings (partly) containing "handyman". -- We could just get rid of this category and include the three prios into staff_window. handyman_window = { name = "Pedellens navn", -- contains "handyman" close = "Luk vinduet", face = "Pedellens ansigt", -- contains "handyman" happiness = "Humörniveau", tiredness = "Træthedsniveau", ability = "Kvalifikation", prio_litter = "FÃ¥ pedellen til at priotere rengöring höjere", -- contains "handyman" prio_plants = "FÃ¥ pedellen til at priotere vanding af planter höjere.", -- contains "handyman" prio_machines = "FÃ¥ pedellen til at priotere vedligeholdelse af maskiner höjere", -- contains "handyman" salary = "MÃ¥nedslön", center_view = "Fokusér pÃ¥ pedellen", -- contains "handyman" sack = "Fyr pedellen", pick_up = "Saml pedellen op", }, -- Place objects window place_objects_window = { cancel = "Afbryd", buy_sell = "Köb/Sælg genstand", pick_up = "Flyt genstand", confirm = "Godkend", }, -- Casebook casebook = { up = "Rul op", down = "Rul ned", close = "Luk medicinbogen", reputation = "Ry om behandlingen eller diagnosen i næromrÃ¥det", treatment_charge = "Pris for behandling", earned_money = "Total tjent indtil nu", cured = "Antal helbredte patienter", deaths = "Antal patienter dræbt som fölge af behandlingen", sent_home = "Antal patienter sendt hjem", decrease = "Sænk pris", increase = "Forhöj pris", research = "Tryk her for at bruge forskningsbudgettet for specialisering til at forske i denne behandling", cure_type = { drug = "Behandlingen kræver medicin", drug_percentage = "Behandlingen kræver medicin, og din er %d%% effektiv", -- %d (effectiveness percentage) psychiatrist = "Sygdommen kræver behandling hos en psykiater", surgery = "Sygdommen kræver operation", machine = "Sygdommen behandles med en maskine", }, cure_requirement = { possible = "Du kan genneföre behandlingen", research_machine = "Du skal forske i maskiner for at kunne behandle denne sygdom", build_room = "Du skal bygge et rum for at kunne udföre behandlingen", -- NB: no %s! hire_surgeons = "Du mangler to kirurger for at kunne gennemföre behandlingen", hire_surgeon = "Du skal bruge en kirurg mere for at kunne gennemföre behandlingen", hire_staff = "Du skal ansætte noget personale for at kunne behandle denne sygdom", build_ward = "Du skal bygge er sengeafsnit for at kunne gennemföre denne behandling", ward_hire_nurse = "Du mangler en sygeplejerske for at kunne gennemföre behandlingen", not_possible = "Du kan ikke hÃ¥ndtere denne behandling endnu", }, }, -- Statement statement = { close = "Luk kontoudskriften", }, -- Research research = { close = "Luk vinduet", cure_dec = "Nedprioriter forskning i behandlingsudstyr", diagnosis_dec = "Nedprioriter forskning i diagnoseudstyr", drugs_dec = "Nedprioriter forskning i medicin", improvements_dec = "Nedprioriter forskning i forbedring af eksisterende udstyr eller medicin", specialisation_dec = "Nedprioriter forskning i specialiseringer", cure_inc = "Opprioriter forskning i behandlingsudstyr", diagnosis_inc = "Opprioriter forskning i diagnoseudstyr", drugs_inc = "Opprioriter forskning i medicin", improvements_inc = "Opprioriter forskning i forbedringer af eksisterende udstyr eller medicin", specialisation_inc = "Opprioriter forskning i specialiseringer", allocated_amount = "Penge afsat til forskning", }, -- Graphs graphs = { close = "GÃ¥ til diagramvinduet", scale = "Skala pÃ¥ diagram", money_in = "Vis/skjul indtægter", money_out = "Vis/skjul udgifter", wages = "Vis/skjul Lönninger", balance = "Vis/skjul Balance", visitors = "Vis/skjul Besögende", cures = "Vis/skjul Helbredte", deaths = "Vis/skjul Dödsfald", reputation = "Vis/skjul Omdömme", }, --- nÃ¥et hertil 28 dec -- Town map town_map = { people = "Vis/Skjul mennesker", plants = "Vis/Skjul planter", fire_extinguishers = "Vis/Skjul brandslukningsudstyr", objects = "Vis/Skjul genstande", radiators = "Vis/Skjul radiatorer", heat_level = "Temperatur", heat_inc = "Skru op for varmen", heat_dec = "Skrue ned for varmen", heating_bill = "varmeomkostninger", balance = "Balance", close = "Luk oversigtskortet", }, -- Jukebox. jukebox = { current_title = "Jukebox", close = "Luk jukebox", play = "Spil jukebox", rewind = "Spol tilbage - jukebox", fast_forward = "Spol frem - jukebox", stop = "Stop jukebox", loop = "Gentag jukebox", }, -- Bank Manager bank_manager = { hospital_value = "Hospitalets samlede værdi", balance = "Balance", current_loan = "Nuværende lÃ¥n", repay_5000 = "Tilbagebetal 5000 til banken", borrow_5000 = "LÃ¥n 5000 af banken", interest_payment = "MÃ¥nedlige renteomkostninger", inflation_rate = "Ã…rlig inflation", inflation_rate = "Inflationsrate", close = "Luk banken", insurance_owed = "Penge %s skylder dig", -- %s (name of debitor) show_graph = "Vis forventet tilbagebetalingsplan fra %s", -- %s (name of debitor) graph = "Forventet tilbagebetalingsplan fra %s", -- %s (name of debitor) graph_return = "Vend tilbage til forrige billede", }, -- Status status = { percentage_cured = "Du skal helbrede %d % af de besögende pÃ¥ dit hospital. Indtil nu har du helbredt %d %", thirst = "Gennemsnitlig törst for dine patienter", close = "Luk oversigten", population_chart = "Andel af lokalbefolkningen som benytter dit hospital", win_progress_own = "Vis hvor langt du er nÃ¥et for at klare banens krav", reputation = "Dit omdömme skal være pÃ¥ mindst %d. Indtil nu er det %d", population = "Du skal have %d%% af befolkningen til at bruge dit sygehus", warmth = "Gennemsnitlig temperatur for patienterne pÃ¥ dit sygehus", percentage_killed = "Kriteriet er blandet andet at dræbe færre end %d%% af dine besögende. Indtil nu har du taget livet af %d%%", balance = "Din bankbalance skal være pÃ¥ mindst %d. Indtil nu er den %d", value = "Dit sygehus skal have en værdi pÃ¥ $%d. Indtil nu er det værd $%d", win_progress_other = "Vis progression i forhold til kravene for dette niveau for %s", -- %s (name of competitor) num_cured = "Kriteriet er blandet andet at helbrede %d mennesker. Indtil nu har du helbredt %d", happiness = "Gennemsnitligt humör pÃ¥ personene pÃ¥ dit sygehus", }, -- Policy policy = { close = "Luk sygehuspolitik", staff_leave = "Klik her for at tillade, at dit peronale mÃ¥ forlade de rum, du har placeret dem i", staff_stay = "Klik her for at fÃ¥ personalet til at blive i de rum, du har placeret dem i", diag_procedure = "Hvis lægens diagonse er mindre sikker end angivet her, vil patitenten blive sendt hjem. Hvis diagnosen er mere sikker end fastsat under gæt kur procenten, vil patienten fÃ¥ den relevante behandling", diag_termination = "Dine læger vil blive ved med at söge efter en diagnose indtil lægerne er helt sikre pÃ¥ en kur, eller indtil alle maskiner er afprövet. Du kan dog altid afbryde diagnosticeringen", staff_rest = "Hvor træt dit personale skal være för de gÃ¥r til personalerummet", }, -- Pay rise window pay_rise_window = { accept = "Accepter kravet", decline = "Afvis krav og afsked vedkommende", }, -- Watch watch = { hospital_opening = "Tid indtil hospitalet Ã¥bner og patienter begynder at ankomme. Klik pÃ¥ knappen for at Ã¥bne hospitalet med det samme.", emergency = "Tilbageværende tid til at fÃ¥ behandlet de akutte patienter.", epidemic = "Resterende tid til at fÃ¥ styr pÃ¥ epidemien. NÃ¥r tiden er udlöbet, eller nÃ¥r en smittet patient forlader hospitalet, kommer der en sundhedsindpektör forbi og inspicerer hospitalet. Knappen tænder og slukker for vaccinationstilstanden. Tryk pÃ¥ patienterne for at fÃ¥ en sygeplejerske til at vaccinere dem.", }, -- Rooms rooms = { gps_office = "Patienterne modtager deres förste konsultation og resultaterne af efterfölgende undersögelser i lægekonsultationen.", psychiatry = "Psykiateren behandler patienter med psykiatriske lidelser og hjælper med diagnosticering af andre patienter, men forudsætter en læge med psykiatrisk uddannelse.", ward = "Sengeafsnittet er nyttigt bÃ¥de til diagnosticering og behandling. Patienter sendes hertil for observation, men ogsÃ¥ som forberedelse til operationer. Sengeafsnittet kræver en sygeplejerske.", operating_theatre = "Operationsstuen kræver to læger med speciale i kirurgi.", pharmacy = "Sygeplejersken udleverer medicin pÃ¥ apoteket for at helbrede patienter.", cardiogram = "En læge bruger löbebÃ¥ndet til at udarbejde et kardiogram som kan bruges til at diagnosticere patienternes sygdomme.", scanner = "En læge bruger skanneren til at diagnosticere patienterne.", ultrascan = "En læge bruger ultraskanneren til at diagnosticere patienterne.", blood_machine = "En læge bruger blodmaskinen til at diagnosticere patienterne.", x_ray = "En læge bruger röntgenmaskinen til at diagnosticere patienterne.", inflation = "En læge bruger pumperummet til at behandle patienter med opsvulmet hoved.", dna_fixer = "En læge bruger DNA-Maskinen til at behandle patienter med Alien DNA.", hair_restoration = "En læge bruger hÃ¥rmaskinen til at behandle patienter med ekstremt hÃ¥rtab.", tongue_clinic = "En læge bruger tungeklinikken til at behandle patienter med slap tunge.", fracture_clinic = "En sygeplejerske bruger knoglebrudsklinikken til at behandle knoglebrud.", training_room = "Et undervisningsrum med en konsulent kan bruges til at oplære andre læger.", electrolysis = "En læge bruger elektrolyseklinikken til at behandle patienter med ekstrem hÃ¥rvækst.", jelly_vat = "En læge bruger geleröret til at behandle patienter med Gelésyndrom.", staffroom = "Læger, sygeplejersker og pedeller bruger personalerummet til at hvile sig og for at hæve moralen.", -- rehabilitation = S[33][27], -- unused general_diag = "En læge udförer forskellige undersögelser af patienter i dette rum. Billigt og ofte meget effektivt.", research_room = "Læger med specialisering inden for forskning kan forske sig frem til ny medicin og maskiner i forskningsafdelingen.", toilets = "Lav toiletter sÃ¥ patienterne ikke skal bruge deres kræfter pÃ¥ at klemme balderne sammen.", decontamination = "En læge bruger dekontaminering til at behandle patienter som har været udsat for radioaktiv strÃ¥ling.", }, -- Objects objects = { -- NB: most objects do not have a tooltip because they're not (extra-)buyable desk = "Bord: En læge bruger bordet til sin computer.", cabinet = "Arkivskab: Indeholder patientjournaler, noter og forskningsdokumenter.", door = "Dör: Patienter Ã¥bner og lukker disse meget.", bench = "Bænk: Giver en plads at sidde pÃ¥ og gör besöget mere behageligt.", table1 = S[40][ 6], -- unused chair = "Stol: Patienten sidder pÃ¥ den og taler om sine problemer.", drinks_machine = "Sodavandsautomat: Forhindrer at patienterne kommer til at törste og tiltrækker insekter.", bed = "Seng: Patienterne ligger i dem.", inflator = "Pumpe: Helbreder patienter med opsvulmet hoved.", pool_table = "Billardbord: Hjælper dit personale til at slappe af.", reception_desk = "Reception: Herfra bliver patienterne sendt videre til andre omrÃ¥der af dit hospital.", table2 = S[40][13], -- unused & duplicate cardio = S[40][14], -- no description scanner = S[40][15], -- no description console = S[40][16], -- no description screen = S[40][17], -- no description litter_bomb = "Skraldebombe: Saboterer konkurrentens hospital", couch = S[40][19], -- no description sofa = "Sofa: Ansatte slapper af i sofaen, hvis der ikke er bedre mÃ¥der at slappe af pÃ¥.", crash_trolley = S[40][21], -- no description tv = "TV: Sörg for, at personalet ikke gÃ¥r glip af deres ynligsprogrammer.", ultrascanner = S[40][23], -- no description dna_fixer = S[40][24], -- no description cast_remover = S[40][25], -- no description hair_restorer = S[40][26], -- no description slicer = S[40][27], -- no description x_ray = S[40][28], -- no description radiation_shield = S[40][29], -- no description x_ray_viewer = S[40][30], -- no description operating_table = S[40][31], -- no description lamp = S[40][32], -- unused toilet_sink = "Vask: Her kan dine patienter vaske deres hænder. Hvis der ikke er nok hÃ¥ndvaske bliver de sure. Vaske er gode for hygiejnen.", op_sink1 = S[40][34], -- no description op_sink2 = S[40][35], -- no description surgeon_screen = S[40][36], -- no description lecture_chair = ": NÃ¥r dine læger sidder her og tager noter, kan de kun blive klogere. Jo flere stole du har, jo större kan klassen være.", projector = S[40][38], -- no description bed2 = S[40][39], -- unused duplicate pharmacy_cabinet = "Apotekskab: Fyldt med medicin.", computer = "Computer: Genialt forskningsværktöj", atom_analyser = "Atomanalyser: Placeres i forskningsafdelingen, og gör hele forskningsprocessen hurtigere.", blood_machine = S[40][43], -- no description fire_extinguisher = "Brandslukker: Mindsker risikoen for, at dine maskiner brænder sammen.", radiator = "Radiator: Holder hospitalet varmt.", plant = "Plante: Holder patienternes humör oppe og renser luften.", electrolyser = S[40][47], -- no description jelly_moulder = S[40][48], -- no description gates_of_hell = S[40][49], -- no description bed3 = S[40][50], -- unused duplicate bin = "Skaldespand: Patienterne smider deres skrald her.. i hvert fald de velopdragne", toilet = "Toilet: Patienterne.. bruger dette.", swing_door1 = S[40][53], -- no description swing_door2 = S[40][54], -- no description shower = S[40][55], -- no description auto_autopsy = "Obduktionsautomat: Godt hjælpemiddel til at opdage nye behandlingsmetoder.", bookcase = "Bogreol: Indeholder opslagsværker til læger.", video_game = "Videospil: Lader personale slappe af med et spil Hi-Octane.", entrance_left = S[40][59], -- no description entrance_right = S[40][60], -- no description skeleton = "Skelet: Bruges til undervisning og til Halloween.", comfortable_chair = S[40][62], -- no description }, } -- 32. adviser = { -- Epidemic epidemic = { hurry_up = "Hvis du ikke tager dig af epidemien nu, kan du fÃ¥ store problemer. Skynd dig!", serious_warning = "Den smitsomme sygdom begynder at blive et seriöst problem. Du mÃ¥ göre noget snart!", multiple_epidemies = "Det ser ud som om du har mere end en epidemi i gang. Dette kan blive en enorm katastrofe for hospitalet!", }, -- Staff advice staff_advice = { need_handyman_machines = "Du bör ansætte flere pedeller til at tage sig af dine maskiner.", need_doctors = "Du har brug for flere læger. Pröv at placere lægerne i de rum, hvor der er længst kö.", need_handyman_plants = "Du skal ansætte en pedel til at vande planterne.", need_handyman_litter = "Folk er begyndt at svine pÃ¥ dit hospital. FÃ¥ en pedel til at rydde op efter dine patienter og köb eventuelt flere skraldespande.", need_nurses = "Du har brug for flere sygeplejersker. Sengeafsnit og apoteker drives af sygeplejersker.", too_many_doctors = "Jeg tror du har for mange læger. Nogle af dem har ikke noget at lave.", too_many_nurses = "Jeg tror du har ansat for mange sygeplejersker.", }, -- Earthquake earthquake = { damage = "Jordskælvet har skadet %d maskiner og %d patienter i hospitalet.", -- %d (count machines), &d (count patients) alert = "Jordskælvsvarsel! Under et jordskælv tager dine maskiner skade. De kan brænde sammen hvis de ikke er ordentligt vedligeholdt.", ended = "Puha! Det var et stort skælv - det mÃ¥lte %d pÃ¥ Richters skala.", }, -- Multiplayer multiplayer = { objective_completed = "Du har klaret udfordringerne for denne bane - tillykke!", everyone_failed = "Ingen klarede udfordringerne, sÃ¥ alle kan spille videre!", players_failed = "Fölgende spiller(e) klarede ikke den forrige udfordring : ", poaching = { in_progress = "Jeg skal sige fra denne person, at han gerne vil arbejde for dig.", not_interested = "Ha! De er ikke interesserede i at arbejde for dig..", already_poached_by_someone = "Ikke tale om! Andre pröver allerede at overtale personen.", }, objective_failed = "Det lykkedes ikke for dig at klare udfordringerne.", }, -- Goals goals = { win = { money = "Du skal opnÃ¥ %d for at klare de finansielle krav for denne bane.", cure = "NÃ¥r du har helbredt yderligere %d patienter har du helbredt nok til et gennemföre banen.", reputation = "Sörg for at have et omdömme pÃ¥ over %d for at du kan genneföre banen.", value = "Dit hospital skal have en værdi pÃ¥ over %d för du kan gennemföre banen", }, lose = { kill = "Dræb %d patienter mere og du har tabt banen!", }, }, -- Information information = { larger_rooms = "Större rum fÃ¥r de ansatte til at föle sig bedre tilpas og forbedrer deres arbejde.", extra_items = "Flere genstande i kontorer og lokaler fÃ¥r dine ansatte til at föle sig bedre tilpas og forbedrer deres præstationer.", epidemic = "Der er en smitsom epidemi pÃ¥ dit hospital. Det skal du göre noget ved, NU!", promotion_to_doctor = "En af dine praktikanter er blevet forfremmet til doktor.", emergency = "Akkuttilfælde pÃ¥ vej, gör plads!", patient_abducted = "En af dine patienter er blevet bortfört af et rumvæsen!", first_cure = "Godt arbejde! Du har netop helbredt din förste patient! Fortsæt det gode arbejde.", promotion_to_consultant = "En af dine læger er blevet forfremmet til konsulent.", handyman_adjust = "Du kan göre en pedel mere effektiv ved at justere pÃ¥ hans prioriteringer.", promotion_to_specialist = "En af dine læger er blevet forfremmet til %s.", patient_leaving_too_expensive = "En patient forlader dit hospital. Dine priser er alt for höje for vedkommende!", vip_arrived = "Tid til fokus! - %s er netop ankommet til dit hospital. Sörg for at alt körer pÃ¥ skinner, sÃ¥ du kan göre et godt indtryk.", epidemic_health_inspector = "Sundhedsmyndighederne har fÃ¥et besked om din epidemi. Du kan forvente et besög fra myndighederne meget snart.", first_death = "Du har netop dræbt din förste patient. Hvordan har du det med det?!", pay_rise = "En af dine ansatte truer med at sige op. Du skal vælge om du vil gÃ¥ med til lönkravene eller om du vil fyre vedkommende. Klik pÃ¥ ikonet nede i venstre hjörne for at se, hvem som truer med at sige op.", place_windows = "Vinduer gör rum lysere og forbedrer arbejdsglæden hos dine ansatte.", fax_received = "Du har modtaget en fax. Du finder den i bunden af skærmen. En fax kan indeholde vigtig information som du skal forholde dig til.", initial_general_advice = { rats_have_arrived = "Rotterne har invaderet dit hospital! Pröv at skyde dem med musen.", autopsy_available = "Obduktionsautomaten er færdigudviklet. Med denne kan du fÃ¥ det bedste ud af patienter, som du ikke kan finde ud af hvad fejler. Advarsel! - Brug af denne maskine er meget kontrovatielt, hvis offentligheden fÃ¥r kendskab til den, kan det fÃ¥ negative konsekvenser for dit omdömme.", first_patients_thirsty = "Flere af dine patienter er törstige. De ville sætte pris pÃ¥ flere sodavandsautomater.", research_now_available = "Du har bygget din förste forskningsafdeling. Du kan styre afdelingens arbejde via forskningsskærmen som du finder i bundet af skærmbilledet.", psychiatric_symbol = "Læger med prykiatrisk uddannelse kan genkendes med symbolet: |", decrease_heating = "Folk pÃ¥ dit hospital sveder. Skru ned for varmen, det kan du göre pÃ¥ oversigtskortet.", surgeon_symbol = "Læger kan udföre kirurgiske indgreb hvis de har symbolet: {", first_emergency = "Akutte patienter har et blinkende blÃ¥t lys over deres hoved. Hvis du ikke helbreder dem inden tiden löber ud, dör de!", first_epidemic = "Der er udbrudt en epidemi pÃ¥ dit hospital. Du skal tage stilling til, om du vil forsöge at behandle de ramte selv, eller om du vil betale dig fra det.", taking_your_staff = "Nogen pröver at stjæle dit personale. Du mÃ¥ kæmpe for at beholde dem.", place_radiators = "Patienterne fryser - du bör placere flere radiatorer i dit hospital sÃ¥ patienterne kan holde varmen.", epidemic_spreading = "Epidemien spreder sig pÃ¥ dit hospital. Du skal vaccinere de inficerede patienter inden de forlader hospitalet.", research_symbol = "Forskere er læger med symbolet: }", machine_needs_repair = "Du har udstyr i dit hospital som har brug for at blive repareret. Find udstyret - det ryger fra det - og klik pÃ¥ det for at tilkalde en pedel.", increase_heating = "Folk fryser pÃ¥ dit hospital. Du kan Skrue op for varmen pÃ¥ oversigtskortet.", first_VIP = "Du er ved at modtage dit förste VIP-besög. Sörg for at VIP'en ikke ser noget uhygiejnisk eller triste patienter.", }, }, -- Build advice build_advice = { placing_object_blocks_door = "Hvis du placerer genstanden der, kan folk ikke komme til dören.", blueprint_would_block = "Hvis du placerede rummet sÃ¥dan, ville det blokere for andre rum. Pröv at ændre rumstörrelsen eller flyt rummet til et andet sted!", door_not_reachable = "Folk kan ikke komme til dören.", blueprint_invalid = "Det er ikke en gyldig skitse.", }, } -- Confirmation confirmation = { quit = "Du har valgt at afslutte spillet. Er du sikker pÃ¥, at du vil forlade spillet?", return_to_blueprint = "Er du sikker pÃ¥, at du vil returnere til skitsen?", replace_machine = "Er du sikker pÃ¥ du vil erstatte %s for %d?", -- %s (machine name) %d (price) overwrite_save = "Der er allerede et spil gemt pÃ¥ denne plads. Skal det gemte spil overskrives?", delete_room = "Vil du virkeligt slette dette rum?", sack_staff = "Er du sikker pÃ¥, at du vil give den ansatte sparket?", restart_level = "Er du sikker pÃ¥, at du vil starte forfra med denne bane?", } -- Bank manager bank_manager = { hospital_value = "Hospitalets værdi", balance = "Balance", current_loan = "Nuværende lÃ¥n", interest_payment = "Renter", insurance_owed = "Forsikringer skyldet", -- Is this even used in the game? inflation_rate = "Inflationsrate", -- Inflation rate.. never heard of that either. interest_rate = "Rente", statistics_page = { date = "Dato", details = "Detaljer", money_out = "Ud", money_in = "Ind", balance = "Balance", current_balance = "Nuværende balance", }, } -- Letters letter = { --original line-ends: 5 4 2 3 [1] = { [1] = "Kære %s//", [2] = "Fantastisk! Du har drevet hospitalet virkelig godt. Vi i Ministeriet vil höre, om du er intersseret i et deltage i et större projekt. Vi har et job, som vi tror ville passe dig rigtig godt. Vi kan friste med en lön pÃ¥ $%d. Tænk over det.//", [3] = "Er du interessert i jobbet pÃ¥ hospitalet %s?", }, [2] = { [1] = "Kære %s//", [2] = "Imponerende! Hospitalet er undergÃ¥et en fantastisk udvikling. Vi har et andet sted, som du kan overtage, hvis du klar til nye udfordringer. Du behöver ikke tage udfordringen op, men det vil give en belönning i form af en lön pÃ¥ $%d//", [3] = "Er du interessert i at jobbet pÃ¥ hospitalet %s?", }, [3] = { [1] = "Kære %s//", [2] = "Din tid pÃ¥ dette hospital har været ekstremt vellykket. Vi spÃ¥r dig en stor fremtid, og önsker at tilbyde dig en stilling et andet sted. Lönnen vil være $%d, og vi tror du vil elske de nye udfordringer, stillingen förer med sig.//", [3] = "Er du interessert i jobbet pÃ¥ hospitalet %s?", }, [4] = { [1] = "Kære %s//", [2] = "Tillykke! Vi i Ministeriet er meget imponerede over dine evner til drive hospitaler. Du er helt sikkert en gulddreng for sundhedsmyndighederne. Vi er overbeviste om, at du er klar til nye udfordringer pÃ¥ et större hospital. Vi er klar til at tilbyde en lön pÃ¥ $%d, men beslutningen er din.//", [3] = "Er du interessert i jobbet pÃ¥ hospitalet %s?", }, [5] = { [1] = "Kære %s//", [2] = "Hej igen. Vi respekterer dine önsker om at ikke forlade dette fantastiske hospital som du har opbygget, men vi beder dig overveje din beslutning igen. Vi er klar til at tilbyde en god lön pÃ¥ $%d hvis du er klar pÃ¥ at flytte til et andet omrÃ¥de og fÃ¥ skabt et respektabelt hospital.//", [3] = "Er du klar til nye udfordringer pÃ¥ hospitalet %s?", }, [6] = { [1] = "Kære %s//", [2] = "Ministeriet hilser dig. Vi ved hvor glad du er blevet for dette nydelige og velorganiserede hospital, men vi mener, at du nu bör koncentrere dig om din karriere. Du vil fÃ¥ en respektabel lederlön pÃ¥ $%d hvis du bestemmer dig for at flytte. Det er i hvert fald en overvejelse værd.//", [3] = "Er du interessert i et nyt job pÃ¥ hospitalet %s?", }, [7] = { [1] = "Kære %s//", [2] = "Goddag! Sundhedsministeren tænker pÃ¥, om du vil revurdere din stilling pÃ¥ dit nuværende hospital. Vi sætter pris pÃ¥ dit nydelige hospital, men vi tror, at du vil göre meget for en lidt mere udfordrende stilling, og en lön pÃ¥ $%d.//", [3] = "Er du interessert i et job pÃ¥ hospitalet %s?", }, [8] = { [1] = "Kære %s//", [2] = "Hej igen. Du tog ikke imod den forrige udfordring, da vi tilböd dig en alle tiders udfordring pÃ¥ et nyt hospital, og en lön pÃ¥ $%d. Vi mener, at tiden er inde til, at du bör revurdere beslutningen. Vi har det perfekte job til dig, tror vi.//", [3] = "Er du interessert i at tage jobbet pÃ¥ hospitalet %s?", }, [9] = { [1] = "Kære %s//", [2] = "Du har mere end en gang bevist, at du er den bedste i sundhedsvæsnet. Ingen tvivl! En sÃ¥ fantastisk præstation skal belönnes, sÃ¥ vi önsker at tilbyde dig stillingen som Administrerende Direktör for Alle Sygehuse. Dette er en ærefuld stilling, og giver dig en lön pÃ¥ hele $%d. Du fÃ¥r din egen Ticker-Tape parade, og folk kommer til at vise deres taknemmelighed, hvor end du gÃ¥r.//", [3] = "Tak for alt du har gjort i din tid som hospitalsdirektör. Vi önsker dig en lang og fantastisk pension.//", }, [10] = { [1] = "Kære %s//", [2] = "Tillykke! Du har drevet alle de hospitaler vi har givet dig ansvaret for pÃ¥ en udmærket facon. En sÃ¥dan præstation kvalificerer dig til at fÃ¥ friheden til at rejse Jorden rundt. Du bliver belönnet med en pension pÃ¥ $%d, plus en limousine, og alt vi beder dig om er, at du rejser fra by til by, möder dine lidenskabelige fans, og promoverer hospitalets arbejde, hvor end du mÃ¥tte befinde dig.//", [3] = "Vi er stolte af dig. Vi er alle taknemmelige over dit hÃ¥rde arbejde som livredder.//", }, [11] = { [1] = "Kære %s//", [2] = "Din karriere har været eksemplarisk, og du er en stor inspiration for os alle. Tak for, at du har drevet sÃ¥ mange hospitaler, og gjort det sÃ¥ godt i alle dine stillinger. Vi önsker at give dig en livslang lön pÃ¥ $%d, og alt vi beder dig om er at rejse officelt fra by til by, og fortælle folk, hvordan du tjente sÃ¥ mange penge.//", [3] = "Du er et pragteksempel for alle os andre, og vi önsker dig al lykke og glæde fremover!//", }, [12] = { [1] = "Kære %s//", [2] = "Din succeskarriere som den beste hospitalsadministrator, den bedste siden Moses' tid, er ved vejs ende. Men siden du har haft sÃ¥ stor indvirkning pÃ¥ den medicinske verden, önsker Ministeriet at tilbyde dig en livsvarig lön pÃ¥ $%d bare for at være til stede pÃ¥ vore vegne, Ã¥bne fester, sösætte skibe og stille op i shows. Hele verden efterlyser dig, og du ville være fantastisk PR for os ude i verden!//", [3] = "Vær sÃ¥ venlig at tage imod denne stilling, det bliver ikke hÃ¥rdt arbejde! Og vi skal sörge for, at du fÃ¥r politieskorte hvorend du kommer.//", }, } -- Humanoid start of names humanoid_name_starts = { [1] = "BJÖRN", [2] = "PER", [3] = "STOR", [4] = "GUL", [5] = "RIG", [6] = "SOL", [7] = "LANGE", [8] = "FLAD", [9] = "HÃ…RD", [10] = "MYG", [11] = "BAR", [12] = "SKODDE", [13] = "MÖRKE", [14] = "BLÃ…", [15] = "KRIG", [16] = "LAT", [17] = "KRABBE", [18] = "FISK", [19] = "VÃ…D", [20] = "SEN", [21] = "GRAV", [22] = "BAK", [23] = "LAVE", [24] = "UD", [25] = "ENGE", [26] = "GRÖN", [27] = "KUR", [28] = "KVIT", [29] = "KJEVE", [30] = "TRYGLE", [31] = "KVÆAEN", [32] = "KRYKKE", [33] = "SKADE", } -- Humanoid end of names humanoid_name_ends = { [1] = "STAD", [2] = "BERG", [3] = "NES", [4] = "DAL", [5] = "LID", [6] = "HEIM", [7] = "HEM", [8] = "LAND", [9] = "SETH", [10] = "RUD", [11] = "VIK", [12] = "BÖ", [13] = "GAARD", [14] = "GÃ…RD", [15] = "HAUG", [16] = "LUND", [17] = "LOFT", [18] = "VER", [19] = "SAND", [20] = "LIE", [21] = "VOLD", [22] = "STRÖM", [23] = "LI", [24] = "DALEN", [25] = "DAHL", [26] = "BAKKEN", } -- VIP names vip_names = { health_minister = "Sundhedsministeren", "Peter Brixtofte", -- A guy that liked to drink VERY expensive vine on the whole cities bill. "Prins Henrik", "Master fatman", "Anders Fogh", "Lars Hjortshöj", "Svampebob", "Jes Dorph", "Michael Laudrup", "Lars larsen", -- Jysk sengetöjslager "Justin bæver", -- Dont think i like him.. i hate him! } -- Deseases diseases = { general_practice = { name = "Lægekonsultation", }, bloaty_head = { name = "Opsvulmet hoved", cause = "Ã…rsag - Patienten har sniffet ost og drukket forurenet vand.", symptoms = "Symptomer - Den ramte har det meget ukomfortabelt. Föler mildest talt en vis oppustethed i hovedregionen.", cure = "Behandling - Der stikkes hul pÃ¥ det opsvulmede hoved, og ved hjælp af en genial maskine bliver hovedet sat tilbage til den korekte PSI.", }, hairyitis = { name = "Ekstrem hÃ¥rvækst", cause = "Ã…rsag - Lange gÃ¥ture i mÃ¥neskin medförer en uhensigtsmæssig udsættelse for mÃ¥nens strÃ¥ler, som beskadiger hovedbunden og forÃ¥rsager hÃ¥rvækst i ukontrollabelt omfang pÃ¥ resten af kroppen.", symptoms = "Symptomer - Nedsat fremdrift i vand.", cure = "Behandling - En elektrolysemaskine fjerner hÃ¥rvæksten og tilbageförer porene til deres normale stadie.", }, king_complex = { name = "Kongekompleks", cause = "Ã…rsag - Elivs' Ã¥nd har taget kontrollen over patienten", symptoms = "Symptomer - GÃ¥r med farvede lædersko, spiser cheesebrugere og udsætter hofter og knæ for ganske akavede stillinger", cure = "Behandling - En psykiater fortæller patienten hvor tÃ¥belig han ser ud", }, invisibility = { name = "Usynlighed", cause = "Ã…rsag - Bidt af en radioaktiv (og usynlig) myre", symptoms = "Symptomer - Patienten lider ikke - tværtimod! De udnytter situationen og lurer pÃ¥ deres familie og venner!", cure = "Behandling - En farverig drik fra apoteket gör patienten fuldt synlig igen", }, serious_radiation = { name = "Alvorlig bestrÃ¥ling", cause = "Ã…rsag - Har forvekslet plutonium-isotoper med tyggegummi", symptoms = "Symptomer - Patienten föler sig meget ukomfortabel", cure = "Behandling - Patienten placeres i en saniteringsbruser og renset fuldstændigt.", }, slack_tongue = { name = "Slap tunge", cause = "Ã…rsag - Kronisk overivrighed i diskussioner om sæbeoperaer.", symptoms = "Symptomer - Tungen hæver til det femdobbelte.", cure = "Behandling - Tungen bliver placeret i en tungeskærer. Hævelsen fjernes derefter hurtigt, effektivt og smertefuldt.", }, alien_dna = { name = "Udenjordisk DNA", cause = "Ã…rsag - Patienten er blevet bidt af iler udstyret med intelligent rumvæsenblod.", symptoms = "Symptomer - Er under gradvis forvandling til et rumvæsen, og udvikler et önske om at overtage verdensherredömmet", cure = "Behandling - Alt DNA fjernes mekanisk, renses for rumvæsenceller, og bliver hurtig erstattet", }, fractured_bones = { name = "Knoglebrud", cause = "Ã…rsag - Fald fra höjder ned pÃ¥ beton", symptoms = "Symptomer - Höje knaselyde og meget lidt bevægelighed pÃ¥ de udsatte steder", cure = "Behandling - Gipsen fjernes ved hjælp af en laserstyret gipsfjerner", }, baldness = { name = "Ekstremt hÃ¥rtab", cause = "Ã…rsag - Fortæller lögne og opdigter historier for at forbedre sin popularitet.", symptoms = "Symptomer - Forlegen patient med skinnende pande.", cure = "Behandling - HÃ¥ret bliver hurtigt smeltet fast til patientens hoved med en smertefuld hÃ¥rmaskine.", }, discrete_itching = { name = "Skrabesyge", cause = "Ã…rsag - SmÃ¥ insekter med skarpe tænder.", symptoms = "Symptomer - Patienten klör intenst, og huden slÃ¥r revner.", cure = "Behandling - En sygeplejeske giver patienten en sirupagtig drik som heler huden og som hindrer flere revner.", }, jellyitis = { name = "Gelésyndrom", cause = "Ã…rsag - Geletholdig kost og megen motion.", symptoms = "Symptomer - Meget ustabil og falder ofte.", cure = "Behandling - Patienten bliver presset ned i et gelérör i et specielt rum.", }, sleeping_illness = { name = "Sövnsyge", cause = "Ã…rsag - ForÃ¥rsaget af overaktive sövnkirtler i ganen.", symptoms = "Symptomer - Stærkt önske om at sove, hvor og nÃ¥r som helst.", cure = "Behandling - En stærk dosis af stimulerende medicin uddelt af en sygeplejerske.", }, pregnancy = { name = "Graviditet", cause = "Ã…rsag - ForÃ¥rsaget af strömafbrydelser i bebyggede omrÃ¥der.", symptoms = "Symptomer - Spiser ustandseligt og udvikler en ölmave.", cure = "Behandling - Sprædbanet fjernes ved kejsersnit, vaskes og præsenteres derefter for sin mor.", }, -- unused transparency = { name = "Gennemsigtighed", cause = "Ã…rsag - Slikket pÃ¥ folien pÃ¥ gamle yougurtkartoner.", symptoms = "Symptomer - Kroppen bliver gennemsigtig og ækel.", cure = "Behandling - En kölig, farverige drik fra apoteket skulle göre underværker.", }, uncommon_cold = { name = "Forkölelse", cause = "Ã…rsag - SmÃ¥ smörpartikler i luften.", symptoms = "Symptomer - Rendende næse, hoste og misfarvet slim fra lungerne.", cure = "Behandling - En rigtig stor mundfuld hostesaft fra apoteket medförer öjeblikkelig lindring.", }, broken_wind = { name = "Forurenende gasser", cause = "Ã…rsag - Löb pÃ¥ en trædemölle umiddelbart efter indtagelse af frokost.", symptoms = "Symptomer - Ubehag hos folk som befinder sig i patientens nærhed.", cure = "Behandling - En stærk blandning af specielle vandatomer der drikkes hurtigt.", }, spare_ribs = { name = "Spareribs", cause = "Ã…rsag - Patienten har siddet for længe pÃ¥ et koldt gulv.", symptoms = "Symptomer - Ubehagelig fölelse i brystet.", cure = "Behandling - Ribbenene fjernes af to kirurger, og leveres til patienten i en doggybag.", }, kidney_beans = { name = "Kikærter", cause = "Ã…rsag - patienten har spist isterninger.", symptoms = "Symptomer - Smerte og hyppige ture til toilettet", cure = "Behandling - To kirurger fjerner de ærtelignende parasitter, uden at beröre nyrerne!", }, broken_heart = { name = "Knust hjerte", cause = "Ã…rsag - Nogen er rigere, yngre og slankere end patienten.", symptoms = "Symptomer - Hysterisk grædende. Blodsprængte fingerspidser efter at have revet feriebilleder i stykker.", cure = "Behandling - To kirurger sprætter brystet op og sætter derefter hjertet forsigtigt sammen, mens de holder vejret.", }, ruptured_nodules = { name = "Ödelagte nödder", cause = "Ã…rsag - Skihop om vinteren.", symptoms = "Symptomer - Umulig at sidde ned med vedbehag.", cure = "Behandling - To kvalificerede kirurger mÃ¥ fjerne nödderne med forsigtige hænder.", }, tv_personalities = { name = "Programledersyndrom", cause = "Ã…rsag - Ser TV i dagstimerne.", symptoms = "Symptomer - Forestiller sig at han/hun er programleder pÃ¥ formiddagstv og elsker at introducere madseancen.", cure = "Behandling - En psykiater mÃ¥ overtale patienten til at köbe en radio og sælge fjernsynet.", }, infectious_laughter = { name = "Smitsom latter", cause = "Ã…rsag - Klassisk komedie pÃ¥ TV.", symptoms = "Symptomer - Ler hjælpelöst hele tiden og gentager dÃ¥rlige passager som absolut ikke er morsomme.", cure = "Behandling - En kvalificeret psykiater mÃ¥ göre det klart for patienten, at det faktisk er en alvorlig tilstand.", }, corrugated_ankles = { name = "Böjede ankler", cause = "Ã…rsag - Kört med bus over fartbump.", symptoms = "Symptomer - Skoene passer ikke.", cure = "Behandling - En giftig blanding af urter og krydderier mÃ¥ drikkes for at udrette anklerne.", }, chronic_nosehair = { name = "Kronisk næsehÃ¥r", cause = "Ã…rsag - Snöfter med foragt af folk med lavere indlægt.", symptoms = "Symptomer - SÃ¥ mange næsehÃ¥r at en grævling kunne bo der.", cure = "Behandling - En ækel, hÃ¥rfjernende kur som skal drikkes. FÃ¥s pÃ¥ apoteket.", }, third_degree_sideburns = { name = "Tredjegrads bakkenbarter", cause = "Ã…rsag - Længes efter 70-erne.", symptoms = "Symptomer - Stort hÃ¥r, farverigt töj, lange bakkenbarter og glitter.", cure = "Behandling - Psykiatrisk personale mÃ¥, ved brug af moderne teknikker, overbevise patienten om, at paryk yt.", }, fake_blood = { name = "Teaterblod", cause = "Ã…rsag - Patienten er ofte udsat for narrestreger.", symptoms = "Symptomer - Rödt blod som fremkommer nÃ¥r der er kontakt med töj.", cure = "Behandling - Eneste mÃ¥de at behandle dette pÃ¥ er at fÃ¥ en psykiater til at berolige patienten.", }, gastric_ejections = { name = "Sure opstöd", cause = "Ã…rsag - Stærk krydret mexikansk eller indisk mad.", symptoms = "Symptomer - Gylper karrykylling og tacostykker op..", cure = "Behandling - En sygeplejerske giver patienten en speciel indisk komælk som forhindrer sure opstöd.", }, the_squits = { name = "Tynd mave", cause = "Ã…rsag - Har spist pizzastykker som har været pÃ¥ gulvet.", symptoms = "Symptomer - Uh. Tror du kender symptomerne.", cure = "Behandling - En klæbrig blanding af kemikalier der skal drikkes for at stabilisere maven.", }, iron_lungs = { name = "Jernlunger", cause = "Ã…rsag - Forurenet luft indeholdende bly og kebabrester.", symptoms = "Symptomer - Kan lave flammer og rÃ¥be höjlydt under vand.", cure = "Behandling - To kirurger blödgör de hÃ¥rde lunger i operationsstuen.", }, sweaty_palms = { name = "Svedige hÃ¥ndflader", cause = "Ã…rsag - Har lige været til jobsamtale.", symptoms = "Symptomer - At give hÃ¥nd til patienten er som at give hÃ¥nd til en vÃ¥d svamp.", cure = "Behandling - En pskiater taler med patienten om lidelsen.", }, heaped_piles = { name = "Hæmorider", cause = "Ã…rsag - Siddet for længe pÃ¥ det kolde gulv.", symptoms = "Symptomer - Patienten föler, at han/hun sidder pÃ¥ en pose sten.", cure = "Behandling - En behagelig, men syrlig væske som löser hæmorideproblemet.", }, gut_rot = { name = "DÃ¥rlig mave", cause = "Ã…rsag - Onkel Georges blanding af hostesaft og whisky.", symptoms = "Symptomer - Ingen hoste, men heller ingen mavesæk.", cure = "Behandling - En sygeplejerske udskriver en række kemikalier som genskaber væggene i mavesækken.", }, golf_stones = { name = "Golfsten", cause = "Ã…rsag - Udsat for giftige gasser fra golfbolde.", symptoms = "Symptomer - Forvirring og en kraftig skamfölelse.", cure = "Behandling - Stenene fjernes hurtigt og effektivt af to kirurger.", }, unexpected_swelling = { name = "Uventet hævelse", cause = "Ã…rsag - Hvad som helst uventet.", symptoms = "Symptomer - Hævelse.", cure = "Behandling - Hævelsen mÃ¥ skæres bort af to kirurger.", }, diag_scanner = { name = "Diag Skanner", }, diag_blood_machine = { name = "Diag Blodmaskine", }, diag_cardiogram = { name = "Diag löbebÃ¥nd", }, diag_x_ray = { name = "Diag Röntgen", }, diag_ultrascan = { name = "Diag Ultraskanner", }, diag_general_diag = { name = "Diag Generel", }, diag_ward = { name = "Diag Sengeafd.", }, diag_psych = { name = "Diag Psykiatri", }, autopsy = { name = "Obduktion", }, } -- Faxes fax = { -- Debug fax debug_fax = { -- never seen this, must be a debug option of original TH -- TODO: make this nicer if we ever want to make use of it close_text = "Yes, yes, yes!", text1 = "BEST COUNT %d", -- %d text2 = "TOTAL PEOPLE IN HOSPITAL %d CHECKING AGAINST %d", -- %d %d text3 = "FIGURES : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", -- %d %d %d %d %d text4 = "FACTORS : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", -- %d %d %d %d %d text5 = "CONTRIBN : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d PERCENT", -- %d %d %d %d %d text6 = "THE FOLLOWING FACTORS ARE ALSO APPLIED", text7 = "REPUTATION: %d EXPECTED %d REDUCTION %d", -- %d %d %d text8 = "AMENITIES %d PEEPS HANDLED %d REDUCTION %d", -- %d %d %d text9 = "DISASTERS %d ALLOWED (MTHS) %d (%d)REDUCTION %d", -- %d %d %d %d text10 = "KILLS %d ALLOWED (MTHS) %d (%d) REDUCTION %d", -- %d %d %d %d text11 = "PEOPLE THIS MONTH %d", -- %d }, -- Emergency emergency = { choices = { accept = "Ja, jeg kan hÃ¥ndtere dette akkuttilfælde", refuse = "Nej, jeg nægter at tage mig af dette akkuttilfælde", }, location = "Der er sket en ulykke ved %s", num_disease = "Der er %d mennesker med %s som har brug for behandling med det samme.", cure_possible_drug_name_efficiency = "Du har den medicin som er nödvendig for at behandle patienterne. Det er %s og medicinen er %d procent effektiv.", cure_possible = "Du har det nödvendige udstyr og de færdigheder som skal bruges for at hÃ¥ndtere akuttilfældet.", cure_not_possible_build_and_employ = "Det vil være nödvendigt at bygge %s og ansætte en %s", cure_not_possible_build = "Du mangler %s for at hÃ¥ndtere dette", cure_not_possible_employ = "Du mangler en %s for at kunne hÃ¥ndtere dette", cure_not_possible = "Du kan ikke behandle denne sygdom i öjeblikket", bonus = "Hvis du klarer dette akkuttilfælde, vil du modtage en bonus pÃ¥ maksimalt %d. Hvis du derimod fejler, vil det fÃ¥ negative fölger for dit omdömme.", locations = { "A.Tom's VÃ¥benkælder", "Snoppeuniversitetet", "Buskerud Hagecenter", "Forskningsinstituttet For Farlige Emner", "Foreningen For Folkedansende Mænd", "Puben Frosk Og Kyr", "Hallgeir Juniors Begravelses- og Spritbutik", "Mamma-Tai Krydderhus", "Berts Varehus For Brugt Petrokemi", }, }, emergency_result = { close_text = "Klik for at lukke", earned_money = "Af den maksimale bonus pÃ¥ %d, har du tjent %d.", saved_people = "Du reddede %d mennesker af i alt %d.", }, -- Deseace discovered disease_discovered_patient_choice = { choices = { send_home = "Send patienten hjem.", wait = "FÃ¥ patienten til at vente et stykke tid pÃ¥ hospitalet.", research = "Send patienten til forskningsafdelingen.", }, need_to_build_and_employ = "Hvis du bygger %s og ansætter en %s kan du löse problemet med det samme.", need_to_build = "Du skal bygge %s for at kunne hÃ¥ndtere dette.", need_to_employ = "Ansæt en %s for at hjælpe patienten.", can_not_cure = "Du kan ikke behandle denne sygdom.", disease_name = "Dine ansatte er stödt pÃ¥ et tilfælde af %s.", what_to_do_question = "Hvad skal vi göre med patienten?", guessed_percentage_name = "Dine læger mener, at de ved hvad patienten fejler. Der er %d procent sandsynlighed for at det er %s", }, disease_discovered = { close_text = "Luk.", can_cure = "Du kan behandle denne sygdom.", need_to_build_and_employ = "Hvis du bygger %s og ansætter en %s kan du hÃ¥ndtere dette.", need_to_build = "Du skal bygge %s for at hÃ¥ndtere dette.", need_to_employ = "Ansæt en %s for at behandle patienter med denne sygdom.", discovered_name = "Dine læger har oppdaget et tilfælde af %s.", }, -- Epidemic epidemic = { choices = { declare = "Offentliggör epidemien og betal en böde. Dit omrömme vil blive svækket.", cover_up = "Forsög at behandle alle inficerede patienter inden tiden löber ud, og för nogen smittede forlader hospitalet.", }, disease_name = "Dine læger har opdaget en meget smitsom form for %s.", declare_explanation_fine = "Hvis du offentliggör epidemien, skal du betale en böde pÃ¥ %d og dit omdömme lider et knæk, men samtlige patienter bliver vaccineret automatisk.", cover_up_explanation_1 = "Hvis du derimod forsöger at holde epidemien skjult, skal du behandle samtlige vaccinerede patienter för sundhedsmyndighederne opdager, hvad der foregÃ¥r.", cover_up_explanation_2 = "Hvis en sundhedsinspektör kommer pÃ¥ besög og finder ud af, at du har forsögt at skjule epidemien, vil han gÃ¥ drastisk til værks.", }, -- Epidemic result epidemic_result = { close_text = "Hurra!", failed = { part_1_name = "Du forsögte at skjule det faktum, at vi stod overfor et smitsomt udbrud af %s.", part_2 = "Selvfölgelig var dine medarbejdere i stand til at sprede epidemien til alle hospitalets naboer.", }, succeeded = { part_1_name = "Sundhedsinspektören hörte rygter om at dit hospital kæmpede med et alvorligt tilfælde af %s.", part_2 = "Han har dog ikke fundet noget, som har kunne bekræfte rygterne.", }, compensation_amount = "Myndigherne har besluttet at give dig en kompensation pÃ¥ %d for den skade, dit ellers gode rygte har lidt.", fine_amount = "Myndighederne har erklæret en national undtagelsestilstand og forlanger, at du betaler en böde pÃ¥ %d.", rep_loss_fine_amount = "Velkommen pÃ¥ forsiden! Dit rygte har fÃ¥et en ordenligt lussing! Samtidigt fÃ¥r du en böde pÃ¥ %d.", hospital_evacuated = "Sundhedsmyndighederne ser ingen anden mulighed end at evakuere dit hospital.", }, -- VIP visit query vip_visit_query = { choices = { invite = "Send en officiel invitation.", refuse = "Afvis besöget med en dÃ¥rlig undskyldning.", }, vip_name = "%s har ytret et önske om at besöge dit hospital", }, -- VIP visit result vip_visit_result = { close_text = "Tak fordi du besögte hospitalet.", telegram = "Telegram!", vip_remarked_name = "Efter sit besög pÃ¥ dit hospital, udtalte %s fölgende:", cash_grant = "Du fÃ¥r %d i kontanter.", rep_boost = "Dit ry i næromrÃ¥det har fÃ¥et en optur.", rep_loss = "Dit ry i næromrÃ¥det har taget skade.", remarks = { super = { "Det er et meget flot hospital. Næste gang jeg bliver alvorligt syg, vil jeg indlægges der.", "Se det er hvad jeg kalder for et hospital af topklasse!", "Et super hospital, og det er noget jeg ved en del om, for jeg har været indlagt en hel del gange.", }, good = { "Det er et godt organiseret hospital. Tak fordi jeg mÃ¥tte komme.", "Hmm. Det er absolut ikke noget dÃ¥rligt sted, jeg har set.", "Jeg kan godt lide dit charmerende hospital. Forresten, er der nogen som vil med ud at spise indisk?", }, mediocre = { "NÃ¥, jeg har set værre. Men du kunne göre en lang række forbedringer.", "Ã…h, min kære tid. Det her er ikke det sted man gÃ¥r hen, hvis man föler sig dÃ¥rlig.", "Et helt normalt hospital, for at være ærlig. Jeg havde forventet noget mere.", }, bad = { "Hvad laver jeg egentlig her?! Det er jo værre end en fire timers opera!", "Det var ækelt! Kalder du det her et hospital?! Det ligner mere en svinesti!", "Jeg er træt af at være en offentlig person, og træt af at skulle besöge steder som dette stinkende hul! Jeg siger op!.", }, very_bad = { "Föj for et syn! Dette hospital skal jeg nok fÃ¥ lukket ned!", "Jeg har aldrig set magen. Det er en skandale!", "Jeg er chokeret! Du kan ikke kalde dette et hospital! Jeg gÃ¥r ud og tager mig en stærk drink!", }, }, }, -- Diagnosis failed diagnosis_failed = { choices = { send_home = "Send patienten hjem", take_chance = "Tag chancen med den mest sandsynlige diagnose.", wait = "FÃ¥ patienten til at vente mens du bygger flere diagnoserum.", }, situation = "Vi har prövet alle vores diagnoserum pÃ¥ denne patient, men vi er ikke helt sikre pÃ¥, hvad patienten fejler.", what_to_do_question = "Hvad skal vi göre med patienten?", partial_diagnosis_percentage_name = "Det er %d procent sikkert at patienten har en type af %s, men hvis vi tager fejl, kan det fÃ¥ alvorlige konsekvenser for patienten.", }, } -- Queue window queue_window = { num_in_queue = "Antal ventende", num_expected = "Yderligere pÃ¥ vej", num_entered = "Antal besög", max_queue_size = "Maks kö", } -- Dynamic info dynamic_info = { patient = { actions = { dying = "Döende", awaiting_decision = "Venter pÃ¥ din beslutning", queueing_for = "I kö til %s", -- %s on_my_way_to = "PÃ¥ vej til %s", -- %s cured = "Helbredt!", fed_up = "Irriteret, forlader hospitalet", sent_home = "Sendt hjem", sent_to_other_hospital = "Henvist til et andet hospital", no_diagnoses_available = "Ikke flere diagnosemuligheder", no_treatment_available = "Ingen behandling er mulig - Jeg gÃ¥r hjem", waiting_for_diagnosis_rooms = "Venter pÃ¥ du byggger flere diagnoserum", waiting_for_treatment_rooms = "Venter pÃ¥ du bygger et behandlingsrum", prices_too_high = "Prisene er for höje - Jeg gÃ¥r hjem", epidemic_sent_home = "Sendt hjem af inspektör", epidemic_contagious = "Jeg er smittebærende", }, diagnosed = "Diagnose: %s", -- %s guessed_diagnosis = "Gættet diagnose: %s", -- %s diagnosis_progress = "Diagnoseproces", emergency = "Akut: %s", -- %s (disease name) }, vip = "Besögende VIP", health_inspector = "Sundhedsinspektör", staff = { psychiatrist_abbrev = "Psyk.", actions = { waiting_for_patient = "Venter pÃ¥ patient", wandering = "Vandrer rundt", going_to_repair = "Skal reparere %s", -- %s (name of machine) }, tiredness = "Udbrændthed", ability = "Evner", -- unused? }, object = { strength = "Udholdenhed: %d", -- %d (max. uses) times_used = "Timer brugt: %d", -- %d (times used) queue_size = "Kölængde: %d", -- %d (num of patients) queue_expected = "Forventet kölængde: %d", -- %d (num of patients) }, } introduction_texts = { level17 = "Dette er sidste advarsel - hold öje med dit omdömme - det er det, som tiltrækker patienter til dit hospital. " .. "Hvis der ikke dör for mange patienter og du samtidig holder resten af patienterne i nogenlunde godt humör, skulle denne bane ikke være noget problem.//" .. "Nu mÃ¥ du klare dig selv. Held og lykke!", level1 = "Velkommen til dit förste hospital!//" .. "Du kan komme godt fra start ved at ved at fÃ¥ placeret en reception, bygge en lægekonsultation og ansætte en læge og en receptionist. " .. "Derefter kan du Ã¥bne hospitalet, og de første patienter vil derefter begynde at ankomme til hospitalet." .. "Det vil være fornuftigt at bygge en psykiatri rimelig hurtigt og ansætte en læge med speciale i psykiatri. " .. "Et apotek og en sygeplejerske er essentielle for at helbrede dine patienter. Mange sygdomme behandles nemlig med medicin. " .. "Læg mærke til hvis der er mange tilfælde af opsvulmet hoved - et pumperum kan klare opgaven. " .. "For at gennemföre banen skal du helbrede mindst 10 patienter og sörge for, at dit omdömme ikke dykker under 200. ", level9 = "Efter du har fyldt ministerens bankkonto op og betalt for hans nye limousine, kan du nu koncentrere dig om at lave et omsorgsfuldt, velfungerende hospital for de trængende. " .. "Du mÃ¥ forvente at möde en række problemer her." .. "Hvis du har nok lokaler og flinke ansatte, vil du sikkert fÃ¥ styr pÃ¥ banens udfordringer. " .. "Dit hospital skal have en værdi af 200,000, og du skal have mindst 400,000 i banken. " .. "Mindre kan ikke göre det.", level2 = "Der er store problemer med sygdomme i dette omrÃ¥de. " .. "Byg hospitalet med henblik pÃ¥ at behandle flere patienter og anlæg en forskningsafdeling. " .. "Husk at holde hospitalet rent og stræb efter at fÃ¥ sÃ¥ höjt et omdömme som muligt - hvis du vil kunne hÃ¥ndtere sygdomme som slap tunge, bliver det nödvendigt at bygge en tungeklinik. " .. "Du kan ogsÃ¥ bygge et löbebÃ¥nd for at forbedre diagnosticeringen. Disse rum er först tilgængelige, nÃ¥r du har forsket i omrÃ¥det i din forskningsafdeling. " .. "Du kan udvide hospitalet sÃ¥ du fÃ¥r mere plads at bygge pÃ¥ - brug oversigtskortet til dette " .. "Stræb efter at fÃ¥ et omdömme pÃ¥ 300 og en banksaldo pÃ¥ 10,000, samt helbrede mindst 40 patienter. ", level7 = "Her vil du være under overvÃ¥gning af sundhedsmyndighederne, sÃ¥ husk at fÃ¥ det til at se ud som om du tjener kassen samtidig med at du opbygger et godt omdömme. " .. "Vi kan ikke holde til unödvendige dödsfald - de er dÃ¥rlige for virksomheden. " .. "Vær sikker pÃ¥ at dit personale er i tip-top form, og at du har alt det udstyr, de har brug for. " .. "Opbyg dit omdömme til 600, og fÃ¥ 200,000 ind pÃ¥ din bankkonto.", level5 = "Dette bliver et travlt hospital, hvor du skal hÃ¥ndtere en lang række sager. " .. "Alle læger kommer direkte fra fakultetet, sÃ¥ det er vitalt, at du fÃ¥r bygget et undervisningsrum og uddanner lægerne sÃ¥ de bliver dygtigere, hurtigere og gerne sÃ¥ de fÃ¥r et speciale eller to. " .. "Du har kun tre konsulenter til at undervise dit uerfarende personale med, sÃ¥ hold dem glade. " .. "Hold for öje, at hospitalet er bygget pÃ¥ San Androids geologiske undergrund. " .. "Der er derfor en evig risiko for, at der kommer jordskælv. " .. "Jordskælv kan forÃ¥rsage betydlig skade pÃ¥ dine maskiner og pÃ¥virke effektiviteten pÃ¥ dit hospital. " .. "FÃ¥ dit omdömme op pÃ¥ 400 og din bankbalance op pÃ¥ 50,000 for at gennemföre banen. Du skal ogsÃ¥ helbrede 200 patienter.", level4 = "Hold alle dine patienter glade, fÃ¥ dem hurtigt igennem systemet og hold dödstallet sÃ¥ lavt som muligt." .. "Dit omdömme er pÃ¥ spil, sörg for at have et sÃ¥ godt omdömme som muligt." .. "Lad være med at fokusere for meget pÃ¥ pengene - de skal nok rulle ind i takt med dit stigende omdömme. " .. "Det vil være muligt for dig at undervise dine læger, sÃ¥ de kan udvikle deres evner og blive endnu hurtigere. " .. "Undervisningen varetages af konsulenter. Hvis de har særlige færdigheder som psykiater eller kirurg, vil deres elever med tiden ogsÃ¥ blive oplært i disse færdigheder. Og det kan de hurtigt fÃ¥ brug for, nÃ¥r patienter med mere krævende sygdomme begynder at ankomme. " .. "OpnÃ¥ et omdömme pÃ¥ mere end 500.", level14 = "Der er lige en udfordring mere - det fuldstændigt uregerlige hospital. " .. "Hvis det lykkedes for dig at göre dette hospital til en succes, vil du være en mester af mestrene. " .. "Men forvent ikke, at du kan tage den pÃ¥ rutinen, for dette er den stöste udfordring, du nogensinde vil möde. " .. "Held og lykke!", level15 = "SÃ¥dan, det er det mest basale, som holder et hospital sammen.//" .. "Dine læger fÃ¥r brug for al den hjælp de kan fÃ¥ til at diagosticere patienterne. Du kan hjælpe dig ved at" .. "bygge andre diagnose faciliteter, sÃ¥ som et generel diagnoserum.", level8 = "Det er op til dig at skabe det mest effektive og produktive hospital som muligt. " .. "Folk fra dette omrÃ¥de er ret velhavende, sÃ¥ pres dem for sÃ¥ mange penge som muligt. " .. "Husk: At helbrede folk er meget rart, men du har VIRKELIG BRUG FOR de penge det giver." .. "FlÃ¥ disse patienter indtil selv Stein Bagger ville fÃ¥ moralske skrubler! " .. "OpnÃ¥ et massivt overskud pÃ¥ 300,000 for at gennemföre denne bane.", level13 = "Dine fantastiske evner til at administrere et hospital, er blevet bemærket af en speciel hemmelig afdeling under hemmelige specielle afdelinger. " .. "De har en speciel bonus til dig; der er et rotteproblem pÃ¥ et hospital, som mangler en kærlig hÃ¥nd. " .. "Du skal skyde sÃ¥ mange rotter som muligt för pedellerne kan rydde op i skidtet. " .. "Tror du, at du kan klare opgaven?", level16 = "NÃ¥r du har diagnosticeret nogle af patienterne, bliver du nödt til at bygge behandlingsfaciliteter og klinikker til at helbrede dem - en godt sted at begynde med" .. "er et apotek. Du skal bruge en sygeplejerske til at udlevere medicinen.", level6 = "Brug al din viden til at udvikle et velfungerende og komfortabelt hospital, som kan skabe et sundt overskud og hÃ¥ndtere alle former for sygdomme, som samfundet smider efter det. " .. "Du skal være opmærksom pÃ¥, at atmosfæren i dette omrÃ¥de er perfekt til at bære infektioner og sygdomme. " .. "Med mindre du holder dit hospital helt rent, risikerer du, at der udbryder epidemier blandt patienterne. " .. "Tjen 150,000 og forög hospitalets samlede værdi til 140,000.", level12 = "Du möder nu udfordringen over dem alle. " .. "Ministeriet er imponeret over dine succeser og har derfor et top-job til dig: De vil have dig til at bygge det ultimative hospital, hvor du skal tjene en pokkers masse penge og have et skyhöjt omdömme. " .. "Det forventes, at du köber alle bygninger, helbreder alle sygdomme (og vi mener alle!) og opnÃ¥r banens mÃ¥l og priser. " .. "Klar til udfordringen?" .. "Tjen 650,000, helbred 750 personer, og fÃ¥ et omdömme pÃ¥ 800 for at gennemföre banen.", level3 = "Du vil denne gang skulle bygge dit hospital i et velhavende kvarter. " .. "Sundhedsmyndighederne holder öje med dig for at sikre, at du skaber et overskud her. " .. "Du begynder med et godt omdömme, men sÃ¥ snart hospitalet er Ã¥bent, skal du fokusere pÃ¥ at fÃ¥ tjent sÃ¥ mange penge som muligt. " .. "Der er ogsÃ¥ stor sandsynlighed for akuttilfælde. " .. "Disse indeholder et stort antal patienter, som ankommer samtidig og som alle har den samme sygdom. " .. "Hvis du helbreder dem indenfor tidsgrænsen, forbedrer det dit omdömme og modtager en stor bonus. NÃ¥r du ikke at helbrede dem inden tiden löber ud, dör patienterne og dit omdömme falder. " .. "Sygdomme som kongekomplekset kan forekomme, og du bör bygge en operationsstue samt et sengeafsnit i nærheden af operationsstuen. " .. "Tjen 20,000 for at gennemföre banen.", level10 = "SÃ¥vel som at kunne behandle alle former for sygdomme, vil Sundhedsmyndighederne gerne have, at du bruger noget tid pÃ¥ at forske i effektiviteten af din medicin. " .. "Der har været nogle klager fra Foreningen af Syge, de syges vagthund. SÃ¥ for at holde dit omdömme höjt skal du sörge for, at din medicin er effektiv. " .. "Du skal ogsÃ¥ sikre dig, at dit hospital er over gennemsnittet. Hold dödstallet sÃ¥ lavt som muligt" .. "Et lille tip er at du holder lidt plads fri til et gelérör. " .. "Udvikl al din medicin til mindst 80% i effektivitet og fÃ¥ et omdömme pÃ¥ 650 og en bankbeholdning pÃ¥ 500,000 for at gennemföre banen. ", level11 = "Du har nu fÃ¥et chancen for at bygge det ultimative hospital. " .. "Dette er et ekstremt velhavende omrÃ¥de, hvor Sundhedsmyndighederne gerne vil sig, at der opföres det bedst mulige hospital. " .. "Vi forventer, at du tjener kassen, har et skyhöjt omdömme og hÃ¥ndterer alle uventede situationer. " .. "Dette er en vigtig opgave." .. "Du skal være lavet af noget specielt for at dette skal lykkedes. " .. "Bemærk, at en UFO er set i omrÃ¥det. SÃ¥ forbered dit personale pÃ¥ uventet besög. " .. "Dit hospital skal være mindst 240,000 værd, og du skal have mindst 500,000 i banken samt et omdömme pÃ¥ 700 för syndhedsmyndighederne er tilfredse.", level18 = "", } -- Miscellangelous -- Category of strings that fit nowhere else or we are not sure where they belong. -- If you think a string of these fits somewhere else, please move it there. -- Don't forget to change all references in the code and other language files. misc = { grade_adverb = { mildly = "Mildt", moderately = "Moderat", extremely = "Ekstremt", }, done = "Færdig", pause = "Pause", send_message = "Beskeden er sendt til: %d", -- %d (player number) send_message_all = "Beskeden er sendt til alle", save_success = "Gemt med success", save_failed = "Mislykkedes at gemme", hospital_open = "Ã…bent hospital", out_of_sync = "Spillet er ikke synkroniseret", load_failed = "Indlæsning fejlede", low_res = "Lav oplösning", balance = "Balance fil: ", mouse = "Mus", force = "Styrke", } ----- Old but strings that failed with previous setup progress_report.quite_unhappy = "Folk er ret triste. " progress_report.header = "Progessionsrapport" progress_report.very_unhappy = "Folk er meget triste. " progress_report.more_drinks_machines = "Opsæt flere sodavandsautomater. " progress_report.too_cold = "Det er alt for koldt. Placer flere radiatorer eller skru op for varmen. " progress_report.too_hot = "Juster varmen. Det er alt for varmt. " progress_report.percentage_pop = "% population" progress_report.win_criteria = "Kriterier for at vinde" debug_patient_window.caption = "Fejlfindingspatient" tooltip.casebook.cure_requirement.hire_staff_old = "Du skal ansætte en %s for at kunne hÃ¥ndtere denne sygdom" tooltip.casebook.cure_type.unknown = "Du kan endnu ikke behandle denne sygdom" tooltip.bank_manager.interest_rate = "Ã…rlig rente" tooltip.calls_dispatcher.assigned = "Denne box er afkrydset hvis nogen har fÃ¥et den pÃ¥gældende opgave tildelt." tooltip.calls_dispatcher.task = "Liste over opgaver - Klik pÃ¥ en opgave for at se vinduet over tildelt personale og scroll til opgaven" tooltip.calls_dispatcher.close = "Luk kald pÃ¥ afsender vinduet" adviser.level_progress.halfway_lost = "Du er omkring halvejs mod at tabe denne bane." adviser.level_progress.dont_kill_more_patients = "Du har ikke rÃ¥d til at lade flere patienter dö!" adviser.level_progress.another_patient_killed = "Ã…h nej! Du har dræbt endnu en patient. Det giver samlet %d dödsfald." adviser.level_progress.halfway_won = "Du er halvejs mod at vinde denne bane." adviser.level_progress.close_to_win_increase_value = "Du er tæt pÃ¥ at vinde banen. Forög hospitalets værdi med %d." adviser.level_progress.financial_criteria_met = "Du har opnÃ¥et de finatielle kriterier for denne bane. Nu skal du holde din balance over %d, imens du skal sikre dig at dit hospital körer som smurt" adviser.level_progress.nearly_won = "Du er meget tæt pÃ¥ at gennemföre banen." adviser.level_progress.hospital_value_enough = "Hold hospitalets værdi over %d og arbejd med de andre problemer for at vinde banen." adviser.level_progress.another_patient_cured = "Meget flot - endnu en patient helbredt. Det er samlet %d patienter." adviser.level_progress.three_quarters_lost = "Du er tre fjerdedele fra at tabe runden." adviser.level_progress.reputation_good_enough = "Okay, dit ry er godt nok for at kunne gennemföre runden. Hold det over %d og arbejd med de andre problemer for at vinde runden." adviser.level_progress.cured_enough_patients = "Du har kureret nok patienter, men du skal foröge dit hospitals værdi for at vinde runden." adviser.level_progress.nearly_lost = "Du er meget tæt pÃ¥ at vinde runden." adviser.level_progress.improve_reputation = "Du skal forbedre dit ry med %d for at have en chance for at vinde runden." adviser.level_progress.three_quarters_won = "Du er tre fjerdedele væk fra at vinde runden." adviser.praise.many_benches = "Der er rigelig med siddeplads. Flot arbejde!" adviser.praise.many_plants = "Smukt. Du har masser af planter. Dine patienter sætter pris pÃ¥ det." adviser.praise.plants_are_well = "Hvor dejligt! Du tager dig rigtig godt af dine planter. Smukt." adviser.praise.few_have_to_stand = "Der er næsten ingen der skal stÃ¥ op pÃ¥ dit hospital mens de venter. Det sætter dine patienter pris pÃ¥ det." adviser.praise.plenty_of_benches = "Der er fornuftigt med siddepladser, sÃ¥ det er ikke et problem." adviser.praise.plants_thriving = "Meget godt. Dine planter trives. De ser fantastiske ud. Bliv ved med det, sÃ¥ kan du mÃ¥ske vinde et trofæ for dem." adviser.praise.patients_cured = "%d patienter helbredt." adviser.surgery_requirements.need_surgeons_ward_op = "Du skal ansætte to kirurger og bygge et sengeafsnit og en operationsstue för du kan udföre operationer." adviser.surgery_requirements.need_surgeon_ward = "Du mangler stadigt at ansætte en kirurg og bygge et sengeafsnit för du kan udföre operationer." adviser.vomit_wave.started = "Der ser ud til du har en mavevirus pÃ¥ dit hospital. Hvis hospitalet var renere var det ikke sket. MÃ¥ske skulle du ansætte flere pedeller." adviser.vomit_wave.ended = "Puha! Der ser ud til mavevirussen er döet ud. Hold dit hospital rent for fremtiden." adviser.room_requirements.research_room_need_researcher = "Kun læger med speciale i forskning kan arbejde i forskningsrummet." adviser.room_requirements.op_need_another_surgeon = "Du mangler stadigt at ansætte en kirurg mere för operationsstuen er brugbar." adviser.room_requirements.op_need_ward = "Du skal bygge et sengeafsnit sÃ¥ patienterne kan hvile sig för de skal opereres." adviser.room_requirements.reception_need_receptionist = "Du skal ansætte en receptionist til at tage imod dine patienter." adviser.room_requirements.psychiatry_need_psychiatrist = "Du skal ansætte en psykiater, nu da du har bygget en psykiatri." adviser.room_requirements.pharmacy_need_nurse = "Du skal ansætte en sygeplejerske til at passe apoteket." adviser.room_requirements.ward_need_nurse = "Du skal ansætte en sygeplejerske til at arbejde pÃ¥ sengeafsnittet." adviser.room_requirements.op_need_two_surgeons = "Ansæt to kirurger for at kunne udföre operationer." adviser.room_requirements.training_room_need_consultant = "Du skal ansætte en konsulent til at undervise i undervisningslokalet." adviser.room_requirements.gps_office_need_doctor = "Du skal ansætte en læge til at arbejde i lægekonsultationen." confirmation.maximum_screen_size = "Skærmopløsningen du har valgt er større end 3000 x 2000. Større opløsninger kan bruges men vil kræve bedre hardware for at køre med en spilbar FPS. Er du sikker pÃ¥ du vil fortsætte?" confirmation.music_warning = "Før du vælger at bruge mp3'er til musikken i spillet, har du brug for smpeg.dll eller lignende til dit styresystem, ellers vil du ikke have musik i spillet. Vil du fortsætte?" menu_options_wage_increase.deny = " AFVIS " menu_options_wage_increase.grant = " TILLAD " tooltip.options_window.audio_button = "SlÃ¥ alle lyde til og fra i spillet " tooltip.options_window.audio_toggle = "SlÃ¥ til og fra" tooltip.options_window.folder_button = "Mappeindstillinger" tooltip.options_window.customise_button = "Flere indstillinger som du kan ændre for at tilpasse din spiloplevelse." tooltip.update_window.download = "GÃ¥ til downloadsiden for den nyeste version af CorsixTH" tooltip.update_window.ignore = "Ignorer denne opdatering for nu. Du vil blive pÃ¥mindet igen næste gang du Ã¥bner CorsixTH" tooltip.folders_window.browse_font = "Led efter en anden skrifttype fil ( nuværende placering: %1% )" tooltip.folders_window.screenshots_location = "Normalt er skærmbilleder gemt i samme mappe som konfigurationsfilen. Hvis du gerne vil have skærmbilleder gemt et andet sted, skal du blot navigere til den pÃ¥gældende mappe." tooltip.folders_window.reset_to_default = "Gendan biblioteket til standard placeringen" tooltip.folders_window.back = "Luk denne menu og gÃ¥ tilbage til indstillinger" tooltip.folders_window.browse = "Find placering af mappe" tooltip.folders_window.browse_screenshots = "Find en anden mappe til dine skærmbilleder ( nuværende placering: %1% ) " tooltip.folders_window.browse_music = "Find en anden mappe til dine lydfiler ( nuværende placering: %1% ) " tooltip.folders_window.no_font_specified = "Du har ikke valgt en skrifttype-placering endnu!" tooltip.folders_window.not_specified = "Du har ikke valgt en mappeplacering endnu!" tooltip.folders_window.browse_saves = "Find en anden mappe til din gemte spil ( nuværende placering %1% ) " tooltip.folders_window.default = "Standard lokation" tooltip.folders_window.data_location = "Placeringen af den originale Theme Hospital installation som kræves for at køre CorsixTH" tooltip.customise_window.back = "Luk denne menu og gÃ¥ tilbage til indstillinger" tooltip.customise_window.movies = "Global film kontrol, dette vil tillade dig at deaktivere alle film" update_window.caption = "Ny opdatering klar!" update_window.new_version = "Ny Version:" update_window.current_version = "Nuværende Version:" update_window.download = "GÃ¥ til downloadsiden" update_window.ignore = "Spring over og gÃ¥ til hovedmenu" errors.fractured_bones = "NOTE: Animationen for kvindelige patienter med brækkede knogler er ikke perfekt" folders_window.data_label = "TH Data" folders_window.music_location = "Vælg mappen du vil bruge til dit musik" folders_window.music_label = "MP3'er" folders_window.caption = "Mappe placeringer" folders_window.screenshots_label = "Skærmbilleder" folders_window.font_label = "Skrifttype" folders_window.savegames_label = "Gemte spil" folders_window.back = "Tilbage" folders_window.savegames_location = "Vælg mappen du vil bruge til dine gemte spil" folders_window.screenshots_location = "Vælg mappen du vil bruge til dine skærmbilleder" customise_window.average_contents = "Average contents" customise_window.option_on = "Til" customise_window.paused = "Byggeproces sat pÃ¥ pause" customise_window.option_off = "Fra" customise_window.intro = "Afspil Introfilmen" customise_window.caption = "Brugerdefineret indstillinger" customise_window.back = "Tilbage" customise_window.movies = "Global film kontrol" customise_window.volume = "Volume ned tast" customise_window.aliens = "Fremmede patienter" customise_window.fractured_bones = "Brækkede knogler" options_window.folder = "Mapper" options_window.customise = "Tilpasse" options_window.audio = "Global Lyd" menu_options.twentyfour_hour_clock = " 24-TIMERS UR " menu_options.wage_increase = " LØN ANMODNING" install.ok = "OK" install.cancel = "Anullér" adviser.research.drug_improved_1 = "%s medicin er blevet forbædret af din forskningsafdeling." adviser.warnings.researcher_needs_desk_1 = "En Forsker har brug for et bord til at arbejde ved." adviser.warnings.nurse_needs_desk_1 = "Hver Sygeplejerske har brug sit eget bord til at arbejde fra." adviser.warnings.no_desk_5 = "Nu er det ved at være pÃ¥ tide, du burde snart se patienter ankomme!" adviser.warnings.no_desk_4 = "En receptionist skal have sit eget bord for at tage imod nye patienter" CorsixTH-0.61/CorsixTH/Lua/languages/developer.lua000066400000000000000000000030641321660673500220410ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- To enable the developer "language" in the ingame options, uncomment the -- following line. This language causes every translatable string to be -- displayed as the name of the string. --Language("Developer") Inherit("english") --! Construct a 'translation' with the string names as text value. local function fixup(t, str_name) for k, v in pairs(t) do local name = str_name .. "." .. k if type(v) == "string" then t[k] = name else fixup(v, name) end end end fixup(_G, "_S") CorsixTH-0.61/CorsixTH/Lua/languages/dutch.lua000066400000000000000000005004441321660673500211670ustar00rootroot00000000000000--[[ Copyright (c) 2010 RAS 2011 FlyingBastard, L_konings, Nossah, KasperVld 2012-2013 Omni, Maarten Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------------------------------- SLEUTELWOORDEN Chirurgen; Onderzoekers; Psychiaters Assistenten; Basisartsen; Specialisten Artsen; Zusters; Conciërges; Receptionistes ---------------------------------------------------------------------------------]] Language("Nederlands", "Dutch", "nl", "dut", "nld") Inherit("English") newspaper = { [1] = { [1] = "DOC SHOCK HORROR", [2] = "ENGE ARTS SPEELT GOD", [3] = "DR FRANKENSTEIN GEVONDEN", [4] = "WAT ZAT ER OP LABJAS?", [5] = "ONETHISCH ONDERZOEK GESTOPT", }, [2] = { [1] = "BEZOPEN ALS EEN VIS", [2] = "ZATTE CHIRURG ZOEKT SCALPEL", [3] = "STRAALBEZOPEN SPECIALIST", [4] = "IN DE LOREM", [5] = "CHIRURG MET LEGE PLATVINK", [6] = "OPEREREN ONDER INVLOED", }, [3] = { [1] = "DOKTERTJE SPELEN IN ZIEKENHUIS", [2] = "DOKTER BROEKNEER", [3] = "PSYCHIATER GAAT PLAT", [4] = "ONBEVREDIGBARE ONDERZOEKER", }, [4] = { [1] = "CREATIEF GEDOKTERT MET KASBOEK", [2] = "GE-ORGAAN-ISEERDE MISDAAD", [3] = "FINANCIELE OMLEIDINGSOPERATIES", [4] = "GELD VERDWIJNT IN ZIEKENHUIS", }, [5] = { [1] = "SPECIALIST ROOFT UIT KIST", [2] = "ZIEKENHUISPERSONEEL STEELT UIT GRAF", [3] = "MET EEN LIJK IN DE PRAKTIJK", [4] = "TOL BETALEN AAN DOKTER DOOD", [5] = "TERMINALE PRAKTIJKEN", [6] = "GRAVEN IN GRAF GEHEKELD", }, [6] = { [1] = "DOC NAAIT PATIENTEN!", [2] = "KWAKZALVERIJ", [3] = "TERMINALE DIAGNOSE", [4] = "SLONZIGE SPECIALIST", }, [7] = { [1] = "CHIRURG HECHT AAN ZIJDEN DRAADJE", [2] = "CHIRURG 'OPEREERT' ZICHZELF", [3] = "DUISTERE DOKTERS DANS", [4] = "DOKTER BIBBER SCHANDAAL", [5] = "ZOOITJE IN ZIEKENHUIS", }, } misc = { hospital_open = "Ziekenhuis open", save_success = "Spel succesvol opgeslagen", save_failed = "FOUT: opslaan mislukt", low_res = "Lage resolutie", no_heliport = "Er zijn nog geen ziektes ontdekt of er is geen helipad aanwezig", grade_adverb = { extremely = "zeer", mildly = "mild", moderately = "vrij", }, not_yet_implemented = "(nog niet geïmplementeerd)", send_message = "Bericht sturen naar speler %d", out_of_sync = "Spel uit sync", balance = "Balans bestand:", load_failed = "Laden mislukt", mouse = "Muis", done = "Klaar", force = "Forceer", pause = "Pauze", send_message_all = "Bericht sturen naar alle spelers", } staff_descriptions = { good = { [1] = "Een snelle en ijverige werker. ", [2] = "Werkt nauwkeurig. Geeft veel om mensen. ", [3] = "Zeer competent. ", [4] = "Erg vriendelijk en goedlachs. ", [5] = "Een echte doorzetter. Gaat maar door. ", [6] = "Zeer beleefd en goedgemanierd. ", [7] = "Ongelofelijk getalenteerd en kundig. ", [8] = "Geeft veel om het afgeleverde werk. ", [9] = "Een pietje precies die maar niet opgeeft. ", [10] = "Toegewijd, helpt mensen met een glimlach. ", [11] = "Charmant, beleefd en behulpzaam. ", [12] = "Gemotiveerd en toegewijd. ", [13] = "Een zachtaardige en harde werker. ", [14] = "Trouw en vriendelijk. ", [15] = "Zorgvuldig en betrouwbaar in een noodsituatie. ", }, misc = { [1] = "Speelt golf. ", [2] = "Houdt van duiken. ", [3] = "Maakt ijssculpturen. ", [4] = "Drinkt wijn. ", [5] = "Rijdt in rallyraces. ", [6] = "Doet aan bungee jumpen. ", [7] = "Verzamelt bierviltjes. ", [8] = "Houdt van stage-diving. ", [9] = "Houdt van ruftsurfen. ", [10] = "Programmeert voor CorsixTH. ", --EN: Developer for CorsixTH [11] = "Stookt whisky. ", [12] = "Een goede klusser. ", [13] = "Houdt van artistieke Franse films. ", [14] = "Speelt vaak Theme Park. ", [15] = "Heeft rijbewijs CE. ", [16] = "Doet aan motorracen. ", [17] = "Speelt viool en cello. ", [18] = "Gepassioneerd treinsloper. ", [19] = "Gek op honden. ", [20] = "Luistert graag naar de radio. ", [21] = "Neemt vaak een bad. ", [22] = "Leraar vlechtwerkjes. ", [23] = "Gebruikt uitgeholde groenten als zeepbakjes. ", [24] = "Vrijwillig politieagent. ", [25] = "Presenteerde een televisiequiz. ", [26] = "Verzamelt granaatscherven uit de Tweede Wereldoorlog. ", [27] = "Richt kamers in. ", [29] = "Pest insecten met deodorant. ", [28] = "Luistert naar rave en trip-hop muziek. ", [30] = "Haat slechte cabaretiers. ", [31] = "Spioneert voor de raad. ", [32] = "Tuiniert stiekem. ", [33] = "Smokkelt nephorloges. ", [34] = "Zingt in een rock-'n-roll band. ", [35] = "Aanbidt middagtelevisie. ", [36] = "Kietelt karpers. ", [37] = "Verpatst troep aan museumbezoekers. ", }, bad = { [1] = "Langzaam en verstrooid. ", [2] = "Lui en ongemotiveerd. ", [3] = "Slecht opgeleid en lusteloos. ", [4] = "Grof en opdringerig. Irriteert mensen. ", [5] = "Geeft snel op - kan zich niet gedragen. ", [6] = "Doof als een kwartel. Stinkt naar bloemkool. ", [7] = "Slecht in het vak. Onbetrouwbaar. ", [8] = "Verstrooid en snel afgeleid. ", [9] = "Gespannen en maakt snel fouten. ", [10] = "Labiel en wrokkig - wordt verteerd door haat. ", [11] = "Slordig en onhandig. ", [12] = "Geeft niets om het vak. Luiaard. ", [13] = "Neemt, volledig apathisch, onnodig risico. ", [14] = "Sluw, geniepig en tegendraads. ", [15] = "Verwaand en zelfingenomen. ", }, } information = { custom_game = "Welkom bij CorsixTH. Veel plezier in dit ziekenhuis!", cannot_restart = "Dit level is opgeslagen voordat de herstart-functie was geïmplementeerd.", very_old_save = "Er zijn veel updates geweest sinds je met dit level bent begonnen. Om zeker te zijn dat alles werkt zoals het hoort, kun je dit level beter opnieuw beginnen.", no_custom_game_in_demo = "Sorry, maar in de demo versie kan je niet als uitzendkracht werken.", level_lost = { [1] = "Balen! Je hebt het level verloren. Volgende keer beter!", [2] = "De reden dat je verloor:", reputation = "Je reputatie kwam onder %d", balance = "Je banksaldo was lager dan %d", percentage_killed = "Je hebt meer dan %d procent van je patiënten vermoord", cheat = "Dit was jouw keuze of heb je op de verkeerde knop gedrukt? Dus je faalt zelfs om vals te spelen, niet zo grappig hè?", }, cheat_not_possible = "Cheat kan niet toegepast worden op dit level. Je faalt zelfs om vals te spelen, niet zo grappig hè?", } staff_list = { morale = "MORAAL", tiredness = "VERMOEIDHEID", skill = "BEKWAAMHEID", total_wages = "SALARIS", } research = { allocated_amount = "Totale hoeveelheid", funds_allocation = "Totaal budget", categories = { improvements = "Verbeteringen", drugs = "Geneesmiddelen", diagnosis = "Diagnostische apparatuur", cure = "Behandelmethoden", specialisation = "Specialisatie", }, } room_classes = { diagnosis = "Diagnose", clinics = "Klinieken", facilities = "Faciliteiten", treatment = "Behandeling", } buy_objects_window = { price = "Prijs: ", choose_items = "Kies voorwerpen", total = "Totaal: ", } place_objects_window = { pick_up_object = "Klik op het voorwerp dat je wil verplaatsen of kies een andere optie.", place_objects_in_corridor = "Plaats de voorwerpen in je ziekenhuis.", place_windows = "Plaats, indien gewenst, ramen en klik op bevestigen.", confirm_or_buy_objects = "Je kunt nu de kamer bevestigen of voorwerpen kopen of verplaatsen", drag_blueprint = "Sleep de blauwdruk tot je de gewenste grootte hebt bereikt.", place_door = "Plaats de deur.", place_objects = "Plaats de voorwerpen naar tevredenheid. Klik ten slotte op bevestigen.", } totd_window = { previous = "Vorige tip", tips = { "Elk ziekenhuis begint met een receptie en een praktijk. Daarna ligt het er helemaal aan wat voor patiënten er langskomen. Een apotheek is altijd een goede volgende keuze.", "Machines zoals de compressor in inflatie hebben onderhoud nodig. Huur één of twee conciërges in om je machines te repareren, anders loop je het risico je personeel en je patiënten te verwonden.", "Op een gegeven moment wordt je personeel moe. Bouw een personeelsruimte zodat ze zich kunnen ontspannen.", "Plaats genoeg radiatoren om je personeel en je patiënten warm, en daarmee tevreden te houden.", "De bekwaamheid van een arts bepaalt hoe snel en hoe goed zijn diagnoses zijn. Als je een goede arts in de praktijk plaatst, heb je ook niet zoveel diagnostische kamers nodig.", "Assistenten en basisartsen kunnen zich laten opleiden door een specialist in het klaslokaal. Als de specialist een specifieke kwalificatie heeft (chirurg, psychiater of onderzoeker), zal hij deze kennis overdragen aan zijn leerling(en).", "Heb je al geprobeerd het alarmnummer (112) te bellen op de faxmachine? Zet wel je geluid eerst aan!", "Je kunt instellingen zoals de schermresolutie en de taal in het instellingen menu wijzigen. Het instellingen menu is in het spel en in het hoofdmenu te vinden.", "De Nederlandse vertaling is up to date. Zie je toch nog Engelse woorden, of heb je een schrijf- of taalfout ontdekt? Meldt het alsjeblieft op het forum (www.corsixth.com).", "Het CorsixTH team zoekt versterking! Zou je willen coden, vertalen of graphics willen maken? Neem dan contact met ons op via ons forum (www.corsixth.com) of ons IRC kanaal (corsix-th op Freenode).", "Als je een bug vindt zouden we het op prijs stellen als je deze meldt via onze bugtracker: th-issues.corsix.org", "Bij elk level moet je aan bepaalde eisen voldoen voordat je door kunt gaan naar het volgende level. Controleer het statusscherm om te zien hoe ver of dicht je bij je doel bent.", "Als je een bestaande kamer wil aanpassen of verwijderen, kun je dat doen met de aanpassen-knop op de werkbalk.", "Je kunt eenvoudig uitvissen welke patiënten, van een grote groep, voor een bepaalde kamer staan te wachten door met je cursor in die kamer te gaan ''staan.''", "Klik op de deur van een kamer om de wachtrij voor die kamer te zien. Je zou ook wat aan kunnen passen, zoals de volgorde van de rij veranderen of een patiënt naar een andere kamer sturen.", "Ongelukkige werknemers zullen vaak om salarisverhoging vragen. Zorg voor een comfortabele werkomgeving om dit soort situaties te voorkomen.", "Patiënten krijgen dorst van het wachten, en het gaat helemaal hard als je de verwarming flink opschroeft! Plaats frisdrankautomaten op strategische locaties voor een extra zakcentje.", "Je kunt het diagnostische proces voor een patiënt vroegtijdig stopzetten als je al weet wat voor ziekte hij of zij heeft. Maar pas op, dit vergroot de kans op een verkeerde behandeling, wat fataal kan zijn voor de patiënt.", "Noodgevallen zijn vaak een goede bron van extra inkomsten. Maar je moet er wel zeker van zijn dat je deze patiënten binnen de tijd kunt behandelen.", }, next = "Volgende tip", } rooms_long = { ultrascan = "Ultrascan", research_room = "Laboratorium", general = "Algemeen", gps_office = "Praktijk", inflation = "Inflatie", staffroom = "Personeelsruimte", jelly_vat = "Gelatinetank", scanner = "Scanner", emergency = "Noodsituatie", decontamination = "Ontsmetting", corridors = "Gangen", cardiogram = "Cardiogram", ward = "Slaapzaal", training_room = "Klaslokaal", psychiatric = "Psychiatrie", operating_theatre = "Operatiekamer", dna_fixer = "DNA hersteller", tongue_clinic = "Lamme tongkliniek", hair_restoration = "Haarrestaurateur", general_diag = "Algemene diagnose", pharmacy = "Apotheek", fracture_clinic = "Gipskamer", toilets = "Toilet", electrolysis = "Elektrolysekliniek", x_ray = "Röntgenkamer", blood_machine = "Bloedmachinekamer", } options_window = { custom_resolution = "Aangepast...", caption = "Opties", option_on = "Aan", option_off = "Uit", resolution = "Resolutie", apply = "Toepassen", language = "Taal", fullscreen = "Volledig scherm", height = "Hoogte", width = "Breedte", change_resolution = "Resolutie wijzigen", back = "Terug", cancel = "Annuleren", folder = "Mappen", audio = "Audio algemeen", customise = "Aangepast", } load_game_window = { caption = "Spel laden (%1%)", } queue_window = { num_in_queue = "Rijlengte", num_entered = "Bezoekers", max_queue_size = "Max lengte", num_expected = "Verwacht", } font_location_window = { caption = "Kies font (%1%)", } update_window = { new_version = "Nieuwe versie:", caption = "Update beschikbaar!", download = "Ga naar de download pagina", current_version = "Huidige versie:", ignore = "Negeer en ga naar het menu", } folders_window = { screenshots_location = "Selecteer de map om screenshots in op te slaan", music_label = "MP3's", back = "Terug", savegames_label = "Opgeslagen spellen", caption = "Bestands locaties", savegames_location = "Selecteer de map om spellen in op te slaan", font_label = "Lettertype", new_th_location = "Kies hier een andere map voor de Them Hospital installatie. Hiervoor wordt het spel opnieuw gestart.", screenshots_label = "Screenshots", music_location = "Selecteer de map die je wilt gebruiken voor muziek.", data_label = "TH Data", } customise_window = { movies = "Video algemeen", option_on = "Aan", option_off = "Uit", back = "Terug", paused = "Bouwen tijdens pause", intro = "Speel intro video", volume = "Volume lager koppeling", caption = "Aangepaste instellingen", fractured_bones = "Gebroken botten", average_contents = "Gemiddeld meubilair", aliens = "Alien patiënten", } trophy_room = { --gebruik hiervoor meer formele tekst happy_vips = { trophies = { [1] = "Door de indruk die je hebt gemaakt op VIPs heb je een nobelprijs gewonnen. Iedereen die je ziekenhuis bezocht sprak niets dan lof.", [2] = "Het Beroemde Personenbureau keert u bij dezen de Celebrity trofee uit voor de lof die u van alle VIPs heeft ontvangen. Beschouw uzelf een beetje beroemd en bijna een van ons.", [3] = "Gefeliciteerd met het winnen van de VIP TRIP. U maakt de levens van hardwerkende beroemdheden een stuk mooier, door het ze allemaal naar hun zin te maken. Fantastisch!", }, }, rats_killed = { awards = { }, trophies = { [1] = "Je hebt de Anti-Ongedierte trofee gewonnen voor het schieten van %d ratten in je ziekenhuis in het afgelopen jaar.", [2] = "Deze trofee wordt aangeboden door de Federatie Tegen Ratten en Muizen om uw uitzonderlijke schietwerk op %d ratten te eren.", [3] = "Deze Rattenknaller trofee wordt u aangeboden voor het afschieten van %d ratten in het afgelopen jaar.", }, }, rats_accuracy = { awards = { }, trophies = { [1] = "U krijgt de Syndicate Wars Precisie trofee omdat %d%% van de schoten die u op ratten afvuurde doel troffen.", [2] = "Deze trofee eert uw fantastische precisie in het afschieten van %d%% van de ratten waar u in het afgelopen jaar op gemikt heeft.", [3] = "Om te vieren dat u afgelopen jaar %d%% van alle ratten in uw ziekenhuis heeft uitgeroeid, belonen wij u met de Dungeon Keeper Ongediertevrij trofee. ProficiRAT", }, }, all_cured = { awards = { [1] = "Gefeliciteerd met het winnen van de Marie Curie Award voor het behandelen van alle patiënten in uw ziekenhuis in het afgelopen jaar.", }, trophies = { [1] = "De Internationale Geneesstichting wil u eren met de Gezondheid voor Iedereen trofee voor het genezen van iedereen die in het afgelopen jaar uw ziekenhuis binnen is komen lopen.", [2] = "U krijgt de Geen Zieke Rochel trofee voor het genezen van alle patiënten die in het afgelopen jaar uw ziekenhuis hebben bezocht.", }, }, many_cured = { awards = { [1] = "Gefeliciteerd met het winnen van de Marie Curie Award voor het behandelen van bijna alle patiënten in uw ziekenhuis in het afgelopen jaar.", [2] = "U ontvangt deze trofee omdat u meer patiënten heeft genezen dan alle andere ziekenhuizen. Een opvallende prestatie.", }, trophies = { [1] = "De Internationale Geneesstichting wil u eren met de Gezondheid voor Alles trofee voor het genezen van massa's mensen die in het afgelopen jaar uw ziekenhuis binnen zijn komen lopen.", [2] = "U krijgt de onderscheiding Het Kwieke Hoentje voor het genezen van een groot aantal patiënten dat in het afgelopen jaar uw ziekenhuis heeft bezocht.", [3] = "Hierbij ontvangt u de Gezonde Gorgel, een prijs voor het genezen van een enorm percentage van uw bezoekers in het afgelopen jaar.", }, penalty = { [1] = "Het lukt uw ziekenhuis niet de patiënten effectief te genezen. Concentreer u op goede behandelmethoden, zodat behandelingen effectiever worden.", [2] = "Uw ziekenhuis is het minst effectief als het gaat om patiënten genezen. U heeft het ministerie teleur gesteld. Moeten we nog meer zeggen?", }, regional = { [1] = "Vanwege het feit dat u meer zieken heeft genezen dan alle andere ziekenhuizen bij elkaar opgeteld, ontvangt u hiervoor de hoogst haalbare onderscheiding. Gefeliciteerd!", }, }, healthy_plants = { awards = { [1] = "Gefeliciteerd met het winnen van de Oei Ik Groei award voor de fantastische staat van de planten in uw ziekenhuis.", }, trophies = { [1] = "De Vrienden van de Potplanten willen u de Groene Gezondheid trofee uitreiken voor de blakende gezondheid waarin uw planten zich de afgelopen twaalf maanden hebben verkeerd", [2] = "De Frisse Narcissen willen u de Groene Vingers trofee uitreiken voor de uitstekende gezondheid van uw planten in het afgelopen jaar.", }, }, no_deaths = { awards = { [1] = "U heeft de Nimmer Vergaan award gewonnen voor het in leven houden van al uw patiënten in het afgelopen jaar.", [2] = "Uw talent heeft gezorgd voor een minimaal aantal sterfgevallen in uw ziekenhuis. U kunt apetrots zijn op dit resultaat.", }, trophies = { [1] = "De 'Het Leven Gaat Door'-corporatie presenteert u deze trofee omdat er in het afgelopen jaar geen mensen zijn overleden.", [2] = "U heeft de Overlijden Vermijden trofee uitgereikt gekregen voor het in leven houden van elke bezoeker van uw fantastische ziekenhuis in het afgelopen jaar. Bravo.", [3] = "Hierbij ontvangt u de 'Ik Leef Nog' prijs omdat dit jaar geen van uw patiënten is overleden in uw mooie ziekenhuis. Heel goed.", }, penalty = { [1] = "Het aantal overledenen in uw ziekenhuis was het afgelopen jaar behoorlijk hoog. Let goed op en zorg dat in de toekomst meer mensen de behandeling overleven.", [2] = "Uw ziekenhuis is een gevaar voor de gezondheid van de patiënt. Er wordt verwacht dat u mensen geneest, niet laat doodgaan!", }, regional = { [1] = "Het dodental in uw ziekenhuis was het laatste jaar lager dan dat van ieder ander ziekenhuis. Daarvoor bieden wij u deze trofee aan.", }, }, sold_drinks = { awards = { }, trophies = { [1] = "De Wereld Tandartsen Vereniging is trots om u deze trofee en plak te presenteren voor het verkopen van massa's frisdrank in uw ziekenhuis.", [2] = "Uw ziekenhuis heeft de Frisse Zaak trofee gewonnen voor de grote hoeveelheid drankjes die uw gasten in het afgelopen jaar hebben gekocht.", [3] = "Uit naam van Goedgevuld Inc. presenteren wij u vol trots deze met chocola overgoten trofee ter ere van uw uitzonderlijk hoge aantal verkochte blikjes frisdrank.", }, }, high_rep = { awards = { [1] = "Hierbij eren wij uw hoge standaarden en een reputatie die dit jaar gewoon niet beter kan zijn. Goed werk.", [2] = "Gefeliciteerd met de Zuijver Op Den Graet trofee voor het ziekenhuis met de hoogste reputatie van het land. En het is welverdiend ook.", }, penalty = { [1] = "Deze maatregel wordt genomen vanwege de zeer slechte reputatie over het afgelopen jaar. We gaan ervan uit dat u verbetering laat zien in de toekomst.", [2] = "De reputatie van uw ziekenhuis is het laagst in de omgeving. U bent een schande. Laat verbetering zien, of zoek een andere baan!", }, regional = { [1] = "Wij bieden u de Bullfrog Award aan voor de hoogste reputatie van alle ziekenhuizen in het afgelopen jaar. Geniet ervan - u heeft het verdiend.", [2] = "Dit jaar behaalde uw ziekenhuis een reputatie die hoger is dan alle andere ziekenhuizen bij elkaar. Een enorme prestatie.", }, }, consistant_rep = { trophies = { [1] = "Hierbij ontvangt u de hoogste onderscheiding van het ministerie voor de meest onberispelijke standaarden en de hoogst mogelijke reputatie dit jaar. Heel goed.", [2] = "Proficiat met het behalen van de Brandschoon Trofee voor het ziekenhuis met de beste reputatie in het afgelopen jaar. Welverdiend.", }, }, happy_patients = { awards = { [1] = "U mag trots zijn op het feit dat bezoekers van uw ziekenhuis in het afgelopen jaar bijzonder tevreden waren.", [2] = "Bezoekers van uw ziekenhuis waren gemiddeld meer tevreden tijdens hun behandeling, dan bezoekers van andere ziekenhuizen in het spel.", }, penalty = { [1] = "Bezoekers van uw ziekenhuis vinden het verschrikkelijk. U zult veel beter moeten presteren om waardering van het ministerie te krijgen.", [2] = "Mensen die in uw ziekenhuis in behandeling zijn, zijn zeer ontevreden over de staat van het ziekenhuis. U moet meer aandacht schenken aan het wel en wee van de patiënten.", }, }, happy_staff = { awards = { [1] = "Deze oorkonde ontvangt u van uw eigen personeel. Er is natuurlijk nog ruimte voor verbetering, maar over het algemeen wordt u als werkgever zeer gewaardeerd.", [2] = "Uw personeel is zo tevreden en gemotiveerd, niets kan hun glimlach nog verpesten. U bent een geweldige manager!", }, trophies = { [1] = "U krijgt de Smiley trofee voor het zo gelukkig mogelijk houden van uw hardwerkende personeel.", [2] = "Het Adami Instituut van Tevredenheid keert u hierbij deze trofee uit omdat uw personeel geen moment blijk heeft gegeven van ontevredenheid.", [3] = "Deze trofee, de Straalmeer Cup, is hierbij de uwe voor uw inzet voor het welzijn en de tevredenheid van uw personeel. Een glimlach van iedereen!", }, penalty = { [1] = "Uw personeel laat officieel weten dat ze ontevreden zijn. Gemotiveerd personeel is waardevol. Werk aan hun tevredenheid voor u ze helemaal zult verliezen.", }, regional_good = { [1] = "Uw personeel is meer tevreden dan dat van andere ziekenhuizen. Tevreden personeel betekent meer inkomsten en minder sterfgevallen. Dit wordt door het ministerie zeer gewaardeerd.", }, regional_bad = { [1] = "Uw personeel heeft zich het afgelopen jaar ontevreden getoond. Heeft u dat niet gemerkt? Op dit moment heeft ieder ander ziekenhuis meer tevreden personeel dan uw ziekenhuis.", }, }, wait_times = { award = { --attention: this string says AWARD, not AWARDS [1] = "Gefeliciteerd. Uw ziekenhuis heeft altijd zeer korte wachttijden. Dit is een belangrijke onderscheiding.", }, penalty = { [1] = "Patiënten in uw ziekenhuis moeten veel te lang wachten. Er zijn altijd enorme wachtrijen. U kunt uw patiënten veel efficiënter helpen, maar daar moet u wel wat voor doen.", }, }, hosp_value = { awards = { [1] = "Het Ministerie van Volksgezondheid wil dit moment graag gebruiken om u te feliciteren met de indrukwekkende waarde die uw ziekenhuis heeft behaald.", }, penalty = { [1] = "Uw ziekenhuis heeft gefaald een behoorlijke waarde te behalen. U heeft slechte financiële keuzes gemaakt. Houd in uw achterhoofd dat een goed ziekenhuis niet goedkoop is.", }, regional = { [1] = "U bent een financieel wonder! Uw ziekenhuis is meer waard dan alle andere ziekenhuizen in de omgeving bij elkaar opgeteld.", }, }, best_value_hosp = { trophies = { [1] = "Proficiat met het behalen van de Brandschoon trofee voor het ziekenhuis met de beste reputatie in het afgelopen jaar. Welverdiend.", }, penalty = { [1] = "Elke ziekenhuis in de omgeving is meer waard dan die van u. Doe iets aan deze beschamende gang van zaken. Zorg voor mooie en dure apparatuur!", }, regional = { [1] = "Gefeliciteerd met het meest waardevolle ziekenhuis in het spel, goed werk. Probeer dat zo te houden.", }, }, curesvdeaths = { awards = { [1] = "Hartelijk gefeliciteerd met het behalen van een indrukwekkende genezen-of-overleden rato in uw ziekenhuis in het afgelopen jaar.", }, penalty = { [1] = "Uw genezen-of-overleden rato is erg slecht. U moet ervoor zorgen u veel meer mensen geneest dan laat sterven. Laat het er niet bij zitten.", }, }, cleanliness = { award = { --attention: this string says AWARD, not AWARDS [1] = "Inspecteurs vinden uw ziekenhuis heel schoon. Schone ziekenhuizen zijn veilige ziekenhuizen. Houden zo.", }, regional_good = { [1] = "Uw ziekenhuis wordt genoemd als een van de minst schone in de omgeving. Een smerig ziekenhuis stinkt en is gevaarlijk. U moet meer aandacht hebben voor troep.", }, regional_bad = { [1] = "Uw ziekenhuis is het smerigst van de regio. Alle andere managers is het gelukt hun gangen schoner te houden. U bent een schande voor de medische wereld.", }, }, gen_repairs = { awards = { [1] = "U ontvangt deze prijs vanwege de oplettendheid van uw conciërges die alle apparatuur heel goed hebben onderhouden. Heel goed. U kunt gerust op vakantie.", [2] = "Uw conciërges hebben beter gepresteerd dan die van andere ziekenhuizen. Dit is een enorme prestatie. Ere wie ere toekomt.", [3] = "Uw apparatuur is fantastisch onderhouden. De motivatie van uw conciërges in uitmuntend. Deze prijs heeft u meer dan verdiend. Geweldig!.", }, penalty = { [1] = "Uw conciërges hebben uw apparatuur niet goed onderhouden. U moet hen beter in de gaten houden, of meer conciërges aannemen als het teveel werk is.", [2] = "Het onderhoud is een drama. Uw personeel moet de apparatuur beter in de gaten houden en zorgvuldiger onderhouden.", }, }, emergencies = { award = { --attention: this string says AWARD, not AWARDS [1] = "Gefeliciteerd: vanwege uw efficiënte en effectieve manier van afhandelen van noodgevallen, ontvangt u deze speciale prijs. Goed werk.", [2] = "Uw werkwijze bij noodgevallen is een unicum. Deze prijs ontvangt u, omdat u absoluut het beste omgaat met grote drommen zieken en zwakken.", }, penalty = { [1] = "U heeft noodgevallen niet goed afgehandeld. Spoed eisende patiënten moeten direct en goed worden geholpen, dat is u niet gelukt.", }, regional_good = { [1] = "Het ministerie heeft het afgelopen jaar gezien dat u noodgevallen beter aankunt dan ieder ander ziekenhuis. Daarvoor ontvangt u deze prijs.", }, regional_bad = { [1] = "Uw ziekenhuis doet het het slechtst van de regio als het gaat om noodgevallen. Het is uw eigen fout dat u onderaan de lokale noodgevallen ranglijst bungelt.", }, }, pop_percentage = { awards = { [1] = "Heeft u gezien dat een groot deel van de lokale bevolking voor uw ziekenhuis heeft gekozen? Goed gedaan.", [2] = "Gefeliciteerd. Vergeleken met andere medische instellingen heeft uw ziekenhuis het grootste aandeel in de bezoekers uit de regio.", [3] = "Briljant! U heeft meer lokale bewoners naar uw ziekenhuis weten te lokken dan alle andere ziekenhuizen bij elkaar opgeteld.", }, penalty = { [1] = "Heel weinig mensen hebben dit jaar uw ziekenhuis bezocht. Om geld te verdienen heeft uw ziekenhuis voldoende betalende zieken nodig!", [2] = "Elk ziekenhuis in de omgeving heeft een groter aandeel lokale bewoners mogen begroeten dan u. Schaamt u zich niet een beetje?", }, }, research = { awards = { [1] = "Uw onderzoekers hebben er het afgelopen jaar voor gezorgd dat uw ziekenhuis volledig up-to-date is met de nieuwste ontwikkelingen. Uw personeel heeft deze onderscheiding verdiend. Heel goed.", [2] = "Het afgelopen jaar heeft u meer medicijnen en apparatuur ontwikkeld dan was verwacht. Wij bieden u deze prijs aan namens het volledige ministerie.", }, penalty = { [1] = "U heeft een minimale hoeveelheid behandelmethoden, medicijnen en apparatuur ontwikkeld. Dit is helemaal niet goed, technologische vooruitgang is essentieel.", }, regional_good ={ [1] = "Uw onderzoekers hebben er het afgelopen jaar voor gezorgd dat uw ziekenhuis volledig up-to-date is met de nieuwste ontwikkelingen. Uw personeel heeft deze onderscheiding verdiend. Heel goed.", }, regional_bad = { [1] = "Ieder ander ziekenhuis in de regio heeft meer en beter onderzoek gedaan dan u. Omdat onderzoek cruciaal is voor een ziekenhuis, noemt het ministerie dit onacceptabel.", }, }, reputation = "REPUTATIE", cash = "GELD", } save_game_window = { caption = "Spel opslaan (%1%)", new_save_game = "Nieuw bestand", } staff_class = { doctor = "Arts", handyman = "Conciërge", receptionist = "Receptioniste", nurse = "Zuster", surgeon = "Chirurg", } fax = { epidemic_result = { fine_amount = "De regering heeft een nationaal alarm afgekondigd en legt u een boete op van %d.", close_text = "Fantastisch!", hospital_evacuated = "De commissie heeft geen andere keus dan het ziekenhuis te evacueren.", succeeded = { part_1_name = "De inspecteur heeft geruchten gehoord dat uw instituut gebukt ging onder zware gevallen van %s.", part_2 = "Hij heeft echter geen bewijzen gevonden ter bevestiging van deze geruchten.", }, compensation_amount = "De regering heeft derhalve besloten u een schadevergoeding toe te kennen ter waarde van %d ter compensatie voor de schade die uw goede naam heeft geleden door deze leugens.", failed = { part_1_name = "Tijdens het verbergen van de uitbraak van %s", part_2 = "heeft je personeel de ziekte verspreidt onder de bevolking.", }, rep_loss_fine_amount = "De media zal hiervan smullen. Dit is een zware klap voor je reputatie. Daarbij moet je een boete betalen van %d.", }, vip_visit_query = { choices = { invite = "De VIP officieel uitnodigen.", refuse = "De VIP met een smoesje afwimpelen.", }, vip_name = "%s wil graag je ziekenhuis bezoeken.", }, vip_visit_result = { telegram = "Telegram!", remarks = { good = { [1] = "Dat ziekenhuis draait goed. Bedankt voor de uitnodiging.", [2] = "Hmm. Zeker een niet al te kwade medische instelling.", [3] = "Ik heb genoten van je charmante ziekenhuis. Goed, iemand zin in Nasi Goreng van de Indonees?", }, super = { [1] = "Dat ziekenhuis loopt als een trein. Als mijn gezondheid me in de steek laat, wil ik daarnaartoe.", [2] = "Dat is pas een ziekenhuis!", [3] = "Wat een fantastisch ziekenhuis. En ik kan het weten: ik heb er wel een paar van binnen gezien.", }, bad = { [1] = "Was dat het nou? Het was nog erger dan een opera van vier uur!", [2] = "Ik walg van wat ik gezien heb. Was dat een ziekenhuis? Het leek meer op een zwijnenstal!", [3] = "Ik ben het zat een publiek figuur te zijn en zulke ranzige hokken te moeten bezoeken! Ik kap ermee.", }, mediocre = { [1] = "Nou ja, het kan erger. Maar je moet er wat aan werken.", [2] = "Oh jee. Niet zo een fijne plaats als je je niet lekker voelt.", [3] = "Een matig ziekenhuis, eerlijk gezegd. Ik had meer verwacht.", }, very_bad = { [1] = "Wat een zooi. Ik ga kijken of ik het kan laten sluiten.", [2] = "Ik heb nog nooit zo'n verschrikkelijk ziekenhuis gezien. Wat een schande!", [3] = "Ik ben geschokt. Dat is toch geen ziekenhuis? Ik heb een biertje nodig.", }, free_build = { [1] = "U heeft een heel mooi ziekenhuis neergezet. Dat is natuurlijk ook niet zo moeilijk als geld geen rol speelt he?", [2] = "Ik ben geen econoom, maar ik denk dat ik dit ziekenhuis ook wel zou kunnen besturen, als u begrijpt wat ik bedoel...", [3] = "Een heel goed lopend ziekenhuis. Pas wel op voor de economische crisis! Oh nee... Daar hoeft u zich natuurlijk geen zorgen om te maken.", }, }, rep_boost = "Je reputatie is verbeterd!", vip_remarked_name = "Na zijn bezoek zei %s:", cash_grant = "Je hebt een bonus gekregen van %d.", rep_loss = "Je reputatie is heeft een flinke deuk opgelopen.", close_text = "Bedankt voor uw bezoek aan ons ziekenhuis.", }, disease_discovered_patient_choice = { need_to_build = "Je moet een %s bouwen om dit te kunnen behandelen.", need_to_employ = "Huur een %s om deze situatie te behandelen.", what_to_do_question = "Wat moeten we met de patiënt doen?", guessed_percentage_name = "Je team moest raden naar de conditie van de patiënt. De kans dat het %s is bedraagt %d", choices = { send_home = "Stuur de patiënt naar huis.", research = "Stuur de patiënt naar het laboratorium.", wait = "Laat de patiënt even geduld hebben.", }, disease_name = "Je team heeft een nieuwe ziekte ontdekt. Het is %s", need_to_build_and_employ = "Als je een %s bouwt en een %s aanneemt, kun je slagen.", can_not_cure = "Je kunt deze ziekte nu niet genezen.", }, emergency_result = { earned_money = "Van de maximum bonus van %d heb je %d verdiend.", close_text = "Sluiten.", saved_people = "Je hebt %d van de %d patiënten genezen.", }, disease_discovered = { discovered_name = "Je team heeft een nieuwe ziekte ontdekt. Het is %s", need_to_employ = "Neem een %s aan om dit probleem te overwinnen.", need_to_build_and_employ = "Als je een %s bouwt en een %s aanneemt, kun je slagen.", need_to_build = "Je moet een %s bouwen om dit te kunnen behandelen.", close_text = "Een nieuwe ziekte is ontdekt.", can_cure = "Je kunt deze ziekte genezen.", }, emergency = { locations = { [1] = "Bakker's Chemische Fabriek.", [2] = "Schamper Universiteit.", [3] = "het Paraquat Tuincentrum.", [4] = "het instituut voor onderzoek naar gevaarlijke stoffen.", [5] = "het Klompendansers congres.", [6] = "Café de Brullende Kikker.", [7] = "Dikke Davids Bier- en Uitvaartwinkel.", [8] = "de lokale Chinees.", [9] = "Berts Gebruikte Petrochemische Producten Emporium.", }, num_disease = "Er zijn %d mensen met %s die onmiddellijk hulp nodig hebben.", num_disease_singular = "Er is één persoon met %s die onmiddellijk hulp nodig heeft.", cure_possible_drug_name_efficiency = "Je hebt alle benodigde apparatuur en hulpverleners. Je hebt het geneesmiddel voor %s, deze is %d procent effectief.", cure_not_possible_employ = "Je zult een %s moeten aannemen", cure_not_possible = "Je kunt op dit moment de ziekte niet genezen.", cure_possible = "Je hebt de benodigde apparatuur en hulpverleners, dus je zou dit noodgeval aan moeten kunnen.", choices = { accept = "Ja, ik ben klaar om dit noodgeval te behandelen.", refuse = "Nee, ik weiger dit noodgeval te behandelen.", }, location = "Er is een ongeluk gebeurd bij %s", cure_not_possible_build = "Je zult een %s moeten bouwen", cure_not_possible_build_and_employ = "Je zult een %s moeten bouwen en een %s moeten aannemen.", bonus = "De maximumbonus voor dit noodgeval bedraagt %d. Als je echter niet slaagt, zal je reputatie schade oplopen.", free_build = "Als je slaagt, is dit goed voor je reputatie. Als je echter niet slaagt, zal je reputatie schade oplopen.", }, choices = { decline_new_level = "Nog even blijven doorspelen", accept_new_level = "Naar het volgende level", return_to_main_menu = "Terug naar het hoofdmenu", }, debug_fax = { text4 = "FACTORS : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", text5 = "CONTRIBN : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d PERCENT", text3 = "FIGURES : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", text9 = "DISASTERS %d ALLOWED (MTHS) %d (%d)REDUCTION %d", close_text = "Ja ja!", text1 = "BEST COUNT %d", text6 = "THE FOLLOWING FACTORS ARE ALSO APPLIED", text8 = "AMENITIES %d PEEPS HANDLED %d REDUCTION %d", text2 = "TOTAL PEOPLE IN HOSPITAL %d CHECKING AGAINST %d", text10 = "KILLS %d ALLOWED (MTHS) %d (%d) REDUCTION %d", text11 = "PEOPLE THIS MONTH %d", text7 = "REPUTATION: %d EXPECTED %d REDUCTION %d", }, epidemic = { cover_up_explanation_1 = "Als je probeert dit te verbergen, heb je een beperkte tijd om alle geïnfecteerde patiënten te genezen voor de inspectie erachter komt.", cover_up_explanation_2 = "Als je bezoek krijgt van een inspecteur terwijl je nog bezig bent de epidemie op te lossen, kan hij drastische maatregelen tegen je nemen.", choices = { cover_up = "Alle geïnfecteerde patiënten proberen te genezen voor de tijd voorbij is of iemand je ziekenhuis verlaat.", declare = "Een epidemie afkondigen. Betaal de boete en je reputatie eronder laten lijden.", }, disease_name = "Je artsen hebben een besmettelijke variant van %s ontdekt.", declare_explanation_fine = "Als je een epidemie afkondigt, betaal je een boete van %d en worden al je patiënten automatisch ingeënt. Je reputatie zal hieronder lijden.", }, diagnosis_failed = { choices = { send_home = "Stuur patiënt naar huis.", take_chance = "Waag de gok en probeer de behandeling.", wait = "Laat de patiënt even wachten terwijl je meer diagnostische kamers bouwt.", }, situation = "We hebben al onze diagnostische opties al gebruikt, maar we weten nog steeds niet precies wat er met deze patiënt aan de hand is.", what_to_do_question = "Wat moeten we doen met deze patiënt?", partial_diagnosis_percentage_name = "Er is een kans van %d procent dat we weten wat voor soort %s de patiënt heeft.", }, } bank_manager = { current_loan = "Uitstaande lening", balance = "Saldo", interest_payment = "Maandelijkse rente", hospital_value = "Waarde ziekenhuis", interest_rate = "Rentevoet", insurance_owed = "Deb. Verzekeringen", statistics_page = { balance = "Saldo", details = "Omschrijving", date = "Datum", current_balance = "Huidig Saldo", money_in = "Bij", money_out = "Af", }, inflation_rate = "Inflatie", } staff_title = { junior = "Assistent", psychiatrist = "Psychiater", consultant = "Specialist", surgeon = "Chirurg", doctor = "Basisarts", researcher = "Onderzoeker", nurse = "Zuster", receptionist = "Receptioniste", general = "Algemeen", } tooltip = { message = { button = "Klik op de linkermuisknop om het bericht te openen", button_dismiss = "Klik op de linkermuisknop om het bericht te openen, klik op de rechtermuisknop om het te negeren", }, lua_console = { textbox = "Voer LUA code in om uit te voeren", execute_code = "Voer de ingevoerde code uit", close = "Sluit de console", }, fax = { close = "Sluit dit scherm zonder de fax weg te gooien", }, cheats_window = { close = "Sluit het cheatmenu", cheats = { end_month = "Spring naar het einde van de maand.", emergency = "Creëer een noodgeval", vip = "Creëer een VIP", win_level = "Win het huidige level", create_patient = "Creëer een patiënt op de rand van de kaart.", money = "Voegt 10.000 toe aan je saldo", lose_level = "Verlies het huidige level", all_research = "Voltooi al het onderzoek", end_year = "Spring naar het einde van het jaar.", earthquake = "Creëer een aardbeving", epidemic = "Maakt een besmette patient aan die mogelijk een epidemie veroorzaakt", toggle_infected = "Aan/uit zetten van weergave van geïnfecteerden van de ontdekte epidemie", }, }, new_game_window = { player_name = "Voer de naam in die je wild gebruiken in het spel", difficulty = "Moeilijkheid", cancel = "Oh, ik wilde eigenlijk helemaal geen nieuw spel starten!", tutorial = "Klik hier als je wat hulp nodig hebt in het spel", start = "Begin het spel met de geselecteerde instellingen", easy = "Als je dit spel nog nooit gespeeld hebt, is deze optie voor jou", medium = "De gulden middenweg, als je geen idee hebt wat je wilt", hard = "Als je het spel kent en meer uitdaging zoekt, kies deze optie.", }, calls_dispatcher = { assigned = "Dit vakje is aangekruist als de taak is toegewezen", task = "Lijst van de taken - klik op een taak om het personeelslid te zien die deze taak uit voert en om naar de locatie van de taak te gaan", close = "Sluit dit scherm", }, hire_staff_window = { prev_person = "Vorige persoon bekijken", cancel = "Annuleren", psychiatrist = "Psychiater", salary = "Salaris", next_person = "Volgende persoon bekijken", nurses = "Beschikbare zusters bekijken", surgeon = "Chirurg", handymen = "Beschikbare conciërges bekijken", doctors = "Beschikbare artsen bekijken", doctor_seniority = "Niveau arts (assistent, basisarts of specialist)", hire = "Aannemen", researcher = "Onderzoeker", qualifications = "Extra kwalificaties", receptionists = "Beschikbare receptionistes bekijken", staff_ability = "Competentie", }, handyman_window = { close = "Annuleren", ability = "Competentie", face = "Foto", prio_machines = "Hogere prioriteit geven aan reparaties", prio_litter = "Hogere prioriteit geven aan schoonmaken", happiness = "Tevredenheid", prio_plants = "Hogere prioriteit geven aan het watergeven van planten", name = "Naam van de conciërge", tiredness = "Moeheid", center_view = "Naar conciërge springen", salary = "Salaris", sack = "Ontslaan", pick_up = "Oppakken", parcel_select = "Het gebouw waar de conciërge taken mag verrichten. Klik om te veranderen", }, staff_list = { ability_2 = "Competentie", next_person = "Volgende persoon in de lijst selecteren", detail = "Precisie", happiness = "Tevredenheid", researcher_train = "%d%% van de opleiding tot onderzoeker voltooid", handymen = "Lijst van conciërges bekijken", tiredness = "Laat zien hoe moe de werknemers zijn", researcher = "Gekwalificeerde onderzoeker", happiness_2 = "Moraal", pay_rise = "Salaris met 10% verhogen", bonus = "Een bonus van 10% geven", prev_person = "Vorige persoon in de lijst selecteren", nurses = "Lijst van zusters bekijken", psychiatrist = "Gekwalificeerde psychiater", salary = "Huidig salaris van deze werknemer", ability = "Competentie van deze werknemers", close = "Terugkeren naar het spel", sack = "Deze werknemer ontslaan", surgeon = "Gekwalificeerde chirurg", tiredness_2 = "Moeheid werknemer", doctors = "Lijst van artsen bekijken", doctor_seniority = "Niveau van arts", view_staff = "Bekijk deze persoon", surgeon_train = "%d%% van de opleiding tot chirurg voltooid", skills = "Extra bekwaamheden", receptionists = "Lijst van receptionistes bekijken", psychiatrist_train = "%d%% van de opleiding tot psychiater voltooid", }, research = { cure_inc = "Budget voor onderzoek verhogen", close = "Onderzoeksscherm sluiten", specialisation_dec = "Budget voor specialisatie verlagen", diagnosis_dec = "Budget voor diagnostische apparatuur verhogen", allocated_amount = "Totaal budget", improvements_inc = "Budget voor verbeteringen verhogen", drugs_dec = "Budget voor medicijnen verlagen", drugs_inc = "Budget voor medicijnen verhogen", cure_dec = "Budget voor behandelmethodes verlagen", specialisation_inc = "Budget voor specialisatie verlagen", improvements_dec = "Budget voor verbeteringen verlagen", diagnosis_inc = "Budget voor diagnostische apparatuur verhogen", }, machine_window = { repair = "Een Conciërge sturen om deze machine te repareren", name = "Naam", close = "Sluiten", times_used = "Aantal keren gebruikt", status = "Status machine", replace = "Machine vervangen", }, place_objects_window = { confirm = "Bevestigen", cancel = "Annuleren", pick_up = "Voorwerp oppakken", buy_sell = "Voorwerp kopen of verkopen", }, totd_window = { previous = "Vorige tip tonen", next = "Volgende tip tonen", }, load_game_window = { load_game = "Laad spel %s", load_autosave = "Laad Autosave", load_game_number = "Laad spel %d", }, queue_window = { end_of_queue = "Sleep een patiënt hier naartoe om hem of haar achteraan in de rij te plaatsen", num_entered = "Aantal patiënten die in deze kamer zijn behandeld", close = "Dit scherm sluiten", num_in_queue = "Aantal patiënten in de rij", num_expected = "Aantal patiënten die door de receptioniste worden verwacht zich aan te sluiten", front_of_queue = "Sleep een patiënt hier naartoe om ze vooraan de rij te plaatsen", dec_queue_size = "Maximum rijlengte verkleinen", max_queue_size = "Maximum rijlengte die de receptioniste zal proberen aan te houden", inc_queue_size = "Maximum rijlengte vergroten", patient = "Sleep een patiënt naar een specifieke plaats in de rij. Klik op de rechtermuisknop om een patiënt naar huis te sturen of naar een rivaliserend ziekenhuis door te verwijzen", patient_dropdown = { send_home = "Patiënt uit ziekenhuis ontslaan", hospital_2 = "Patiënt naar een ander ziekenhuis verwijzen", reception = "Patiënt naar receptioniste verwijzen", hospital_1 = "Patiënt naar een ander ziekenhuis verwijzen", hospital_3 = "Patiënt naar een ander ziekenhuis verwijzen", }, }, jukebox = { rewind = "Vorig nummer", loop = "Nummer herhalen", stop = "Stoppen", close = "Sluiten", current_title = "Jukebox", play = "Afspelen", fast_forward = "Volgend nummer", }, graphs = { deaths = "Doden", close = "Scherm sluiten", scale = "Schaal", money_out = "Uitgaven", visitors = "Bezoekers", wages = "Salarissen", balance = "Saldo", money_in = "Inkomsten", cures = "Genezingen", reputation = "Waarde", }, toolbar = { reputation = "Je reputatie", casebook = "Behandelingen", edit = "Aanpassen", staff_list = "Personeel", policy = "Beleid", date = "Datum", charts = "Grafieken", objects = "Gangartikelen", balance = "Je saldo", research = "Onderzoek", hire = "Personeel inhuren", status = "Status", town_map = "Kaart", rooms = "Bouwen", bank_button = "Klik voor het kasboek. Klik op de rechtermuisknop voor de bankafschriften", }, pay_rise_window = { accept = "Aan de eis voldoen", decline = "Niet betalen en ontslaan.", }, town_map = { close = "Kaart sluiten", plants = "Planten weergeven", fire_extinguishers = "Brandblussers weergeven", people = "Mensen weergeven", balance = "Saldo", heat_dec = "Verwarming lager zetten", heating_bill = "Energierekening", radiators = "Radiatoren weergeven", objects = "Voorwerpen weergeven", heat_level = "Verwarming", heat_inc = "Verwarming hoger zetten", }, custom_game_window = { start_game_with_name = "%s starten", free_build = "Klik hier als je wilt spelen zonder geld, en zonder win en verliesvoorwaarden", --Kan ook overwinningsvoorwaarden worden genoemd, maar is misschien net te weinig info }, casebook = { sent_home = "Aantal afgewezen patiënten", cure_requirement = { possible = "Je kunt deze behandeling uitvoeren", not_possible = "Je kunt deze behandeling nog niet uitvoeren", ward_hire_nurse = "Je hebt een zuster en een slaapzaal nodig om deze behandeling uit te voeren", build_ward = "Je hebt een slaapzaal nodig om deze behandeling uit te voeren", research_machine = "De benodigde apparatuur is nog niet uitgevonden", hire_staff = "Je hebt een %s nodig om deze behandeling uit te voeren", build_room = "Je mist de relevante kamer om deze behandeling uit te voeren", hire_surgeon = "Je hebt een tweede chirurg nodig om een operatie uit te voeren", hire_surgeons = "Je hebt twee chirurgen nodig om operaties uit te voeren", hire_staff_old = "Je moet een %s aannemen om deze behandeling uit te voeren", }, increase = "Verhogen", up = "Naar boven", reputation = "Reputatie", research = "Klik hier om het laboratorium zich op deze specialisatie te laten concentreren", close = "Scherm sluiten", earned_money = "Tot nu toe verdiend", cure_type = { psychiatrist = "Een psychiater voert deze behandeling uit", drug_percentage = "Deze behandeling gebruikt medicijnen. Die van jou zijn %d%% effectief.", drug = "Deze behandeling maakt gebruik van medicijnen", machine = "Deze behandeling maakt gebruik van apparatuur", surgery = "Deze behandeling maakt gebruik van operaties", unknown = "Je weet nog niet hoe je deze ziekte moet behandelen", }, decrease = "Verlagen", deaths = "Aantal sterfgevallen", cured = "Aantal genezingen", down = "Naar beneden", treatment_charge = "Prijs", }, policy = { diag_termination = "Het diagnoseproces zal doorlopen worden tot artsen zo zeker zijn als STOP PROCEDURE aangeeft, of tot alle diagnostische testen zijn uitgevoerd", close = "Sluit beleidsscherm", staff_leave = "Artsen en zusters mogen bijspringen waar nodig", diag_procedure = "Als de diagnose van een arts minder zeker is dan het WEGSTUREN percentage, zal de patiënt naar huis gestuurd worden. Als de diagnose beter is dan GOKKEN aangeeft, zal de patiënt de betreffende behandeling ondergaan", staff_rest = "Hoe moe personeelsleden moeten zijn voordat ze mogen uitrusten", staff_stay = "Artsen en zusters blijven in de kamer waar je ze plaatst", }, bank_manager = { graph = "Verwachte betalingen van %s", close = "Kasboek sluiten", hospital_value = "Waarde ziekenhuis", graph_return = "Terug naar vorig venster", current_loan = "Nog uitstaande leningen", borrow_5000 = "$5000 lenen van de bank", balance = "Je huidige saldo", interest_payment = "Maandelijkse rente", inflation_rate = "Inflatie", interest_rate = "Rentevoet", repay_5000 = "$5000 aflossen", show_graph = "Toon grafiek met verwachte betalingen van %s", insurance_owed = "Nog tegoed van %s", }, main_menu = { exit = "Nee! Nee! Verlaat ons niet!", custom_level = "Als uitzendkracht ben je verantwoordelijk voor maar één ziekenhuis", network = "Start een netwerkspel", quit = "Afsluiten", continue = "Doorgaan met vorig spel", options = "Verschillende instellingen aanpassen", load_menu = { load_slot = "SPEL LADEN", empty_slot = "LEEG", }, new_game = "Begin met een compleet nieuw spel", load_game = "Een opgeslagen spel laden", }, patient_window = { graph = "Klik om te schakelen tussen de gezondheid en de geschiedenis van deze persoon", casebook = "Details bekijken van de ziekte van deze patiënt", close = "Venster sluiten", queue = "Bekijk de rij waarin deze persoon staat", happiness = "Tevredenheid van deze patiënt", warmth = "Hoe warm deze persoon het heeft", center_view = "Deze persoon bekijken", thirst = "Hoe dorstig deze patiënt is", send_home = "Uit ziekenhuis ontslaan", abort_diagnosis = "Behandel deze patiënt nu, zonder een complete diagnose", }, menu_list_window = { back = "Dit venster sluiten", save_date = "Klik hier om te sorteren op datum van opslaan", name = "Klik hier om te sorteren op naam", }, watch = { emergency = "Noodgeval: tijd over om alle patiënten te genezen.", hospital_opening = "Bouwtijd: dit is hoelang het nog duurt voor je ziekenhuis opengaat. Klik op de START knop om je ziekenhuis nu te openen.", epidemic = "Epidemie: tijd over om de epidemie te verbergen. Als de tijd om is OF een besmettelijke patiënt je ziekenhuis verlaat, komt er een inspecteur langs. De knop zet vaccinatiemodus aan en uit. Klik ermee op een patiënt om hem of haar te laten inenten door een zuster.", }, save_game_window = { new_save_game = "Voer hier de naam in", save_game = "Spel %s overschrijven", }, information = { close = "Informatievenster sluiten", }, rooms = { ultrascan = "Een arts gebruikt de echoscopie om diagnoses te stellen", research_room = "Artsen die een kwalificatie hebben als onderzoeker kunnen nieuwe medicijnen en machines ontwikkelen in het laboratorium", fracture_clinic = "Een zuster gebruikt de gipskamer om botfracturen te verhelpen", gps_office = "Patiënten krijgen hun eerste consult en resultaten in de spreekkamer.", inflation = "Een arts gebruikt de inflatiekliniek om patiënten met plofkop te genezen", staffroom = "Artsen en zusters ontspannen in de personeelsruimte en raken zo hun moeheid kwijt", jelly_vat = "Een arts gebruikt de gelatinetank om gelatinis te genezen", scanner = "Een arts gebruikt de scanner om een diagnose te stellen", decontamination = "Een arts gebruikt de ontsmettingscabine om radioactiviteit te genezen", pharmacy = "Een zuster geeft medicijnen uit een apotheek aan patiënten om hen te genezen van verschillende kwalen.", cardiogram = "Een arts gebruikt de cardiogram om een diagnose te stellen", ward = "Slaapzalen worden door zusters gebruikt om diagnoses te stellen en patiënten te behandelen. Patiënten worden hier naartoe gestuurd ter observatie en rusten hier voordat ze een operatie moeten ondergaan", training_room = "Een klaslokaal met een specialist kan worden gebruikt om andere artsen op te leiden", operating_theatre = "De operatiekamer heeft twee gekwalificeerde chirurgen nodig", psychiatry = "De psychiatrie geneest geesteszieke patiënten en helpt het diagnostisch proces. Het vereist echter wel een gekwalificeerde psychiater", hair_restoration = "Een arts gebruikt de haarrestaurateur om kaalheid te genezen", tongue_clinic = "Een arts gebruikt de snijmachine om lamme tong te genezen", dna_fixer = "Een arts gebruikt DNA hersteller om patiënten met buitenaards DNA te genezen", general_diag = "Een arts gebruikt de spreekkamer om een basisdiagnose voor zijn patiënten te stellen. Goedkoop en vaak zeer effectief", toilets = "Bouw toiletten, zodat mensen geen zooi maken van je ziekenhuis!", electrolysis = "Een arts gebruikt de elektrolysekamer om pilitis te genezen", x_ray = "Een arts gebruikt de röntgenkamer om een diagnose te stellen", blood_machine = "Een arts gebruikt de bloedmachinekamer om een diagnose te stellen", }, statement = { close = "Afschriftenscherm sluiten", }, buy_objects_window = { confirm = "Voorwerp(en) kopen", cancel = "Annuleren", increase = "Koop nog een exemplaar van dit voorwerp", total_value = "Totale aankoopwaarde", price = "Prijs per stuk", decrease = "Koop een exemplaar minder van dit voorwerp", }, staff_window = { doctor_seniority = "Niveau - assistent, basisarts of specialist", psychiatrist = "Psychiater", close = "Annuleren", ability = "Competentie", pick_up = "Oppakken", sack = "Ontslaan", surgeon = "Chirurg", happiness = "Tevredenheid", salary = "Salaris per maand", name = "Naam", tiredness = "Moeheid", center_view = "Persoon bekijken", skills = "Speciale bekwaamheden", researcher = "Onderzoeker", face = "Foto", }, status = { percentage_cured = "Je moet %d bezoekers hebben behandeld. Tot nu toe heb je er %d behandeld", thirst = "Gemiddelde dorst van de mensen in je ziekenhuis", close = "Overzicht sluiten", population_chart = "Dit diagram geeft aan welk deel van de zieken naar welk ziekenhuis gaat", win_progress_own = "Laat vooruitgang zien tot je ziekenhuis aan de eisen voldoet", reputation = "Je reputatie moet minimaal %d bedragen. Momenteel bedraagt deze %d", population = "Je moet %d%% van de bevolking aantrekken.", warmth = "Algemene warmte van de mensen in je ziekenhuis", percentage_killed = "Niet meer dan %d%% van je bezoekers mogen overlijden. Tot nu toe is %d%% overleden", balance = "Je saldo moet ten minste %d bedragen. Momenteel bedraagt deze %d", value = "Je ziekenhuis moet $%d waard zijn. Momenteel is deze $%d waard", win_progress_other = "Laat vooruitgang zien tot het ziekenhuis van %s aan de eisen voldoet", num_cured = "Je doel is %d patiënten te genezen. Tot nu toe heb je er %d genezen", happiness = "Algemene tevredenheid van de mensen in je ziekenhuis", }, window_general = { confirm = "Bevestigen", cancel = "Annuleren", }, objects = { chair = "Stoel: patiënten zitten hierop als ze over hun ziekte vertellen.", litter = "Troep: op de grond gegooid door een patiënt, omdat hij geen prullenbak kon vinden.", sofa = "Bankstel: werknemers rusten uit op een bankstel tenzij ze een betere manier vinden om zich te ontspannen.", operating_table = "30 OB_OP_TABLE", bed2 = "unused", bench = "Bank: hier kunnen patiënten comfortabel wachten op hun beurt.", scanner = "14 OB_SCANNER", couch = "18 OB_COUCH", blood_machine = "42 OB_BLOOD_MC", table1 = "Table (REMOVED): holds collection of magazines to keep waiting patients happy.", --[[ Schijnbaar hebben ze geen tafels in ziekenhuizen. --]] video_game = "Videospelletje: laat je personeel zich ontspannen met Hi-Octane.", lamp = "Lamp: geeft licht zodat je personeel kan zien.", op_sink2 = "34 OB_OP_SINK_2", door = "Deur: mensen openen deze vaak. Ook doen ze deze wel eens dicht.", auto_autopsy = "Autopsie: een grote hulp in het ontdekken van nieuwe behandelingen", reception_desk = "Receptie: een receptioniste stuurt mensen vanaf hier door naar artsen.", hair_restorer = "25 OB_HAIR_RESTORER", projector = "Beamer: een specialist gebruikt visuele hulp bij de lesstof", crash_trolley = "20 OB_CRASH", tv = "TV: nu hoeft je personeel hun favoriete programma niet meer te missen.", ultrascanner = "Echo apparaat", surgeon_screen = "35 OB_SURGEON_SCREEN", litter_bomb = "Afvalbom: saboteer het ziekenhuis van je tegenstander", inflator = "Compressor: geneest mensen met plofkop.", table2 = "12 OB_BTABLE", desk = "Bureau: essentieel voor een arts om zijn computer op te zetten.", pool_table = "Biljarttafel: helpt je personeel zich te ontspannen.", x_ray_viewer = "29 OB_XRAY_VIEWER", radiation_shield = "28 OB_RAD_SHIELD", bed = "Bed: erg zieke mensen liggen hierop.", swing_door2 = "53 OB_DOUBLE_DOOR2", console = "15 OB_SCANNER_CONSOLE", op_sink1 = "33 OB_OP_SINK_1", bookcase = "Boekenkast: referentiemateriaal voor artsen.", drinks_machine = "Frisdrankautomaat: lest de dorst van patiënten en zorgt voor inkomsten.", comfortable_chair = "61 OB_COMFY_CHAIR", skeleton = "Geraamte: gebruikt voor opleidingen en Halloween.", computer = "Computer: belangrijk voor onderzoek", bin = "Prullenbak: hier gooien patiënten hun afval in.", pharmacy_cabinet = "Apotheek: waar de medicijnen worden bewaard.", radiator = "Radiator: zo wordt het niet te koud in je ziekenhuis.", cast_remover = "24 OB_CAST_REMOVE", atom_analyser = "Pulsmixer: wordt geplaatst in het laboratorium. Versnelt het onderzoeksproces.", plant = "Plant: houdt patiënten tevreden en zuivert de lucht.", jelly_moulder = "47 OB_JELLY_VAT", cardio = "13 OB_CARDIO", toilet = "Pot: patiënten, eh, gebruiken dit.", electrolyser = "46 OB_ELECTRO", fire_extinguisher = "Blusser: verkleint het gevaar van defecte apparatuur.", bed3 = "unused", swing_door1 = "52 OB_DOUBLE_DOOR1", lecture_chair = "Schoolbank: je studerende artsen zitten hier om aantekeningen te maken, zich dood te vervelen en doelloos poppetjes te tekenen. Hoe meer schoolbanken je plaatst, des te groter je klas kan zijn.", screen = "16 OB_SCREEN", toilet_sink = "Wasbak: de patiënten die zich wat meer bewust zijn van hygiëne kunnen hier hun vieze handen in wassen. Als er niet genoeg wasbakken zijn, raken patiënten nukkig.", shower = "54 OB_DECON_SHOWER", gates_of_hell = "48 OB_HELL", entrance_right = "59 OB_ENT_RDOOR", entrance_left = "58 OB_ENT_LDOOR", slicer = "26 OB_SLICER", dna_fixer = "23 OB_DNA_FIXER", x_ray = "27 OB_XRAY", cabinet = "Dossierkast: bevat dossiers, aantekeningen en rapportages van patiënten.", }, build_room_window = { cost = "Kosten van deze kamer", room_classes = { treatment = "Behandelkamers", diagnosis = "Diagnostische kamers", facilities = "Speciale faciliteiten", clinic = "Gespecialiseerde klinieken", }, close = "Venster sluiten en terugkeren naar het spel", }, options_window = { fullscreen = "Wil je het spel in volledig scherm of in een venster spelen?", --Hoe kun je ''Windowed mode'' het beste verwoorden? Omni: wat vind je hiervan?-- resolution = "Verander de resolutie naar wat er rechts is ingevuld", apply = "Pas de ingevoerde resolutie toe", language_dropdown_item = "Kies %s als taal", language = "De taal waarin het spel wordt weergeven", select_language = "Selecteer de taal waarin je het spel wilt spelen", cancel = "Annuleren", select_resolution = "Een andere resolutie selecteren", fullscreen_button = "Volledig scherm", change_resolution = "Verander de resolutie naar wat er links is ingevuld", height = "Voer de gewenste verticale resolutie in", width = "Voer de gewenste horizontale resolutie in", language = "Kies %s als taal", back = "Sluit het instellingenvenster", audio_button = "Zet alle spelgeluiden aan of uit.", folder_button = "Mapopties.", audio_toggle = "Zet aan of uit.", customise_button = "Meer instellingen om je spel aan te passen.", }, research_policy = { research_progress = "Voortgang tot de volgende ontdekking in deze categorie: %1%/%2%", no_research = "Naar deze categorie wordt momenteel geen onderzoek gedaan", }, customise_window = { intro = "Zet de intro video aan of uit. Zet deze instelling aan om de intro video te tonen als CorsixTH wordt gestart.", fractured_bones = "Omdat de animatie niet mooi is, zijn vrouwelijke patiëntien met gebroken botten standaard uitgeschakeld. Om vrouwelijke patiënten met gebroken botten in je ziekenhuis te ontvangen zet je deze instelling uit.", movies = "Met algemene video instellingen zet je alle video's aan of uit.", volume = "Als de 'volume-lager' knop ook het behandelingenboek opent, zet deze instelling aan om de sneltoets naar het behandelingenboek te veranderen naar shift+C", aliens = "Vanwege de sleche animatie bezoeken patiënten met alien-DNA je ziekenhuis alleen bij een noodgeval. Om patiënten met alien-DNA ook buiten noodgevallen je ziekenhuis te laten bezoeken zet je deze instelling uit.", paused = "In Theme Hospital was het niet mogelijk de menubalk te gebruiken als het spel was gepauzeerd. De standaard instelling in CorsixTH is het zelfde, maar met deze instelling aan is dit tijdens pauze wel toegestaan.", average_contents = "Als het spel moet onthouden wat je gemiddeld genomen aan meubilair in een kamer bouwt, zet deze instelling aan.", back = "Sluit dit menu af en ga terug naar het instellingen menu.", }, update_window = { download = "Ga naar de download pagina voor de nieuwste versie van CorsixTH", ignore = "Negeer deze update. Je wordt opnieuw herinnerd als je CorsixTH de volgende keer start.", }, folders_window = { browse_font = "Zoek naar een ander lettertype ( huidige locatie: %1% ) ", screenshots_location = "Standaard worden screenshots opgeslagen bij het configuratie bestand. Als dit niet gewenst is, kies dan hier een andere locatie.", browse_music = "Zoek naar een andere locatie voor je muziek bestand ( huidige locatie: %1% ) ", data_location = "De map waar de originele Theme Hospital installatie in staat. Deze is nodig om CorsixTH te laten werken.", browse_data = "Zoek naar een andere locatie van je Theme Hospital installatie ( huidige lacatie: %1% )", savegames_location = "Standaard worden opgeslagen spellen in de saves map bij het configuratie bestand opgeslagen. Als dit niet gewenst is, kies dan hier een andere locatie.", back = "Sluit dit menu af en ga terug naar het instellingen menu.", browse_saves = "Zoek naar een andere locatie voor je saves map ( huidige locatie: %1% ) ", browse = "Zoek naar de lacatie van de map", browse_screenshots = "Zoek naar een andere locatie voor je screenshots map ( huidige locatie: %1% ) ", not_specified = "Nog geen map ingesteld!", font_location = "Locatie van een lettertype bestand dat de Unicode karakters van je taal kan weergeven. Als dit niet is ingesteld is het niet mogelijk talen te kiezen die meer karakters nodig hebben dan het originele spel kan tonen. Bijvoorbeeld Russisch of Chinees.", reset_to_default = "Herstel de map naar de standaard locatie.", default = "Standaard locatie.", no_font_specified = "Nog geen lettertype locatie ingesteld!", music_location = "Selecteer de locatie van je MP3 bestanden. Deze moet van te voren zijn gemaakt, zoek vervolgens hier naar de locatie.", }, } menu_debug_overlay = { byte_w_wall = " BYTE W WALL ", byte_6 = " BYTE 6 ", byte_0_1 = " BYTE 0 & 1 ", byte_7 = " BYTE 7 ", byte_5 = " BYTE 5 ", byte_floor = " BYTE FLOOR ", positions = " POSITIES ", flags = " FLAGS ", parcel = " PARCEL ", byte_n_wall = " BYTE N WALL ", none = " NONE ", heat = " TEMPERATUUR " } menu_charts = { bank_manager = " (F1) KASBOEK ", statement = " (F2) AFSCHRIFTEN ", staff_listing = " (F3) PERSONEELSLIJST ", town_map = " (F4) KAART ", casebook = " (F5) BEHANDELINGEN ", research = " (F6) ONDERZOEK ", status = " (F7) STATUS ", graphs = " (F8) GRAFIEKEN ", policy = " (F9) BELEID ", briefing = " OPDRACHT ", } progress_report = { quite_unhappy = "De mensen zijn nogal ongelukkig. ", header = "Voortgang", very_unhappy = "De mensen zijn zeer ongelukkig. ", more_drinks_machines = "Plaats meer frisdrankautomaten. ", too_cold = "Het is veel te koud. Plaats radiatoren. ", too_hot = "Kijk naar je verwarming. Het is veel te heet. ", percentage_pop = "% bevolking", win_criteria = "Overwinningsvoorwaarden", free_build = "VRIJ BOUWEN", } dynamic_info = { --[['' - '' is hier verschillende malen vervangen door een '';''.]]-- patient = { emergency = "Noodgeval: %s", guessed_diagnosis = "Vermoede diagnose: %s ", diagnosis_progress = "Voortgang diagnose", actions = { sent_to_other_hospital = "Ergens anders naartoe verwezen", prices_too_high = "Je bent veel te duur; ik ga naar huis.", no_gp_available = "Wacht tot je een spreekkamer bouwt", waiting_for_treatment_rooms = "Wacht tot je een behandelkamer bouwt voor me", dying = "Sterft!", no_diagnoses_available = "Geen diagnoses meer; ik ga naar huis", epidemic_sent_home = "Naar huis gestuurd door de inspecteur", cured = "Genezen!", waiting_for_diagnosis_rooms = "Wacht tot je meer diagnostische kamers bouwt", epidemic_contagious = "Ik ben besmettelijk", awaiting_decision = "Wacht op je beslissing", sent_home = "Naar huis gestuurd", fed_up = "Heeft er schoon genoeg van en vertrekt", no_treatment_available = "Geen behandeling beschikbaar; ik ga naar huis", on_my_way_to = "Onderweg naar %s", queueing_for = "In de rij voor %s", epidemic_vaccinated = "Ik ben niet langer besmettelijk", }, diagnosed = "Diagnose: %s ", }, health_inspector = "Gezondheidsinspecteur", vip = "VIP", object = { times_used = "%d keer gebruikt", queue_size = "Rijlengte %d", strength = "Kracht %d", queue_expected = "Verwachte rijlengte %d", }, staff = { ability = "Competentie", psychiatrist_abbrev = "Psych.", actions = { waiting_for_patient = "Wacht op patiënt", wandering = "Loopt wat rond", going_to_repair = "Gaat %s repareren", heading_for = "Gaat naar %s", fired = "Ontslagen", }, tiredness = "Moeheid", }, } adviser = { tutorial = { hire_receptionist = "Je hebt ook een receptioniste nodig om je patiënten de weg te wijzen.", build_pharmacy = "Gefeliciteerd! Bouw nu een apotheek en neem een zuster aan, zodat je een werkend ziekenhuis hebt.", hire_doctor = "Je hebt een arts nodig om diagnoses te stellen en de zieken te behandelen.", place_receptionist = "Plaats de receptioniste ergens in je ziekenhuis.", place_windows = "Je kunt ramen op dezelfde manier als deuren plaatsen. Je hebt ze niet echt nodig, maar het houdt je personeel wel tevreden.", confirm_room = "Klik op het knipperende icoontje om je kamer open te stellen of klik op de X om een stap terug te gaan.", rotate_and_place_reception = "Klik op de rechtermuisknop om het Bureau te draaien en klik op de linkermuisknop om het te plaatsen.", build_reception = "Hallo. Ten eerste moet je ziekenhuis een receptie hebben. Klik hiervoor op de gangartikelenknop.", doctor_in_invalid_position = "Hee! Daar kun je de arts niet plaatsen.", receptionist_invalid_position = "Daar kun je de receptioniste niet neerzetten.", room_too_small_and_invalid = "De blauwdruk is te klein en staat niet op bebouwbare grond. Kom op.", window_in_invalid_position = "Dit raam bevindt zich op een onmogelijke positie. Probeer het eens ergens anders te plaatsen.", choose_doctor = "Kijk goed naar wat een arts kan voor je er een aanneemt.", build_gps_office = "Om diagnoses te kunnen stellen moet je eerst een spreekkamer bouwen.", select_doctors = "Klik op het knipperende icoontje om te zien welke artsen je kunt inhuren.", place_objects = "Klik op de rechtermuisknop om voorwerpen te draaien en op de linkermuisknop om ze te plaatsen.", select_receptionists = "Klik op het knipperende icoontje om de beschikbare receptionistes te bekijken. Het nummer onder het icoontje geeft aan uit hoeveel sollicitantes kunt kiezen.", order_one_reception = "Klik eenmaal op de knipperende regel om een receptie te bestellen.", choose_receptionist = "Kies een receptioniste met voldoende competentie en een redelijke salariseis. Klik ten slotte op het knipperende icoontje om haar aan te nemen.", place_doctor = "Plaats de arts ergens in het ziekenhuis. Zodra er een diagnose gesteld moet worden, zal hij zich naar de spreekkamer begeven.", accept_purchase = "Klik op het knipperende icoontje om de bestelling af te ronden.", place_door = "Beweeg de muis langs de muren van de blauwdruk om te bepalen waar je de deur wil hebben.", next_receptionist = "Dit is de eerste receptioniste in de lijst. Klik op het knipperende icoontje om de volgende sollicitante te bekijken.", room_in_invalid_position = "Hé! De kamer kan niet gebouwd worden; de rode vakjes geven aan waar je een andere kamer of een muur overlapt", room_big_enough = "De blauwdruk is nu groot genoeg. Laat de muisknop los en pas eventueel nog de grootte of de locatie aan.", room_too_small = "De blauwdruk is rood omdat hij te klein is. Sleep net zolang door tot de blauwdruk groot genoeg is.", click_gps_office = "Klik op de knipperende regel om de spreekkamer te kiezen.", reception_invalid_position = "De receptie is grijs omdat er iets in de weg staat. Probeer het bureau te draaien of ergens anders neer te zetten.", click_and_drag_to_build = "Om een Praktijk te bouwen moet je eerst beslissen hoe groot hij moet worden. Klik en sleep de blauwdruk uit tot de gewenste grootte.", door_in_invalid_position = "Oeps! Je kunt de deur daar niet plaatsen. Probeer het op een ander stuk muur.", object_in_invalid_position = "Dit voorwerp kan hier niet geplaatst worden. Plaats het ergens anders of draai het tot het past.", select_diagnosis_rooms = "Klik op het knipperende icoontje om de lijst met diagnosekamers te bekijken.", prev_receptionist = "Klik op het knipperende icoontje om de vorige sollicitante te bekijken.", start_tutorial = "Lees je opdracht en druk op de linkermuisknop om te beginnen.", information_window = "De hulpbox verteld je alles over die prachtige spreekkamer die je net gebouwd hebt.", }, epidemic = { hurry_up = "Als je die epidemie nu niet snel oplost zit je straks flink in de knoei. Schiet op!", serious_warning = "Deze besmettelijke ziekte ziet er ernstig uit. Je moet snel actie ondernemen!", multiple_epidemies = "Zo te zien heersen er meerdere epidemieën tegelijk. Dit kan op een enorme ramp uitlopen, dus doe er snel wat aan.", }, staff_advice = { need_handyman_machines = "Je zult conciërges moeten inhuren om je apparatuur te onderhouden.", need_doctors = "Je hebt meer artsen nodig. Zet de beste artsen in de kamers met de langste wachtrijen.", need_handyman_plants = "Je zult een conciërge moeten aannemen om de planten water te geven.", need_handyman_litter = "Mensen maken een zootje van je ziekenhuis. Huur een conciërge in om het op te ruimen.", need_nurses = "Je moet zusters aannemen. Slaapzalen en apotheken hebben zusters nodig.", too_many_doctors = "Je hebt teveel artsen. Sommigen hebben nu niets te doen.", too_many_nurses = "Ik denk dat je teveel zusters hebt aangenomen.", }, earthquake = { damage = "Die aardbeving heeft %d beschadigd en %d bezoekers getroffen.", alert = "Een aardbeving. Tijdens een aardbeving raakt je apparatuur beschadigd. Ze kunnen zelfs vernietigd worden als ze niet goed zijn onderhouden.", ended = "Poeh poeh. Dat zal de moeder geweest zijn: %d op de Schaal van Richter.", }, multiplayer = { everyone_failed = "Niemand heeft dat laatste doel gehaald. Dus iedereen mag vrolijk doorspelen!", players_failed = "De volgende speler(s) hebben het laatste doel niet gehaald: ", poaching = { in_progress = "Ik laat je nog wel weten of deze medewerker voor je wil werken.", not_interested = "Ha! Ze zijn totaal niet geïnteresseerd om voor jou te werken. Ze zijn tevreden met hun huidige baan.", already_poached_by_someone = "Dat gaat niet door! Iemand anders probeert deze medewerker al te stropen.", }, objective_completed = "Je hebt het doel behaald! Gefeliciteerd!", objective_failed = "Je hebt je doel helaas niet behaald", }, surgery_requirements = { need_surgeons_ward_op = "Om operaties uit te kunnen voeren moet je twee chirurgen aannemen, een slaapzaal en een operatiekamer bouwen.", need_surgeon_ward = "Om operaties uit te kunnen voeren moet je nog een chirurg inhuren, een slaapzaal en een operatiekamer bouwen.", }, vomit_wave = { started = "Zo te zien waart er een kotsvirus rond in je ziekenhuis. Dit had je kunnen voorkomen door je ziekenhuis schoner te houden. Misschien moet je meer conciërges aannemen.", ended = "Poeh poeh. Het ziet ernaar uit dat die kotsgolf voorbij is. Hou je ziekenhuis in het vervolg wat beter schoon.", }, level_progress = { nearly_won = "Je hebt dit level bijna gewonnen.", three_quarters_lost = "Je bent driekwart onderweg naar verlies van dit level.", halfway_won = "Je bent halverwege naar de winst van dit level.", halfway_lost = "Je bent halverwege naar verlies van dit level.", nearly_lost = "Je hebt dit level bijna verloren.", three_quarters_won = "Je bent driekwart op weg naar de winst van dit level.", dont_kill_more_patients = "Je kunt echt niet meer patiënten afmaken!", another_patient_killed = "Oh nee! Je hebt nog een patiënt vermoord. Dat zijn er nu al %d.", close_to_win_increase_value = "Je hebt bijna gewonnen, verhoog de waarde van je ziekenhuis met %d.", financial_criteria_met = "Je hebt aan alle financiële eisen van dit level voldaan. Hou je banksaldo boven de %d, en zorg ervoor dat je ziekenhuis soepel draait.", hospital_value_enough = "Hou de waarde van je ziekenhuis boven de %d en los alle andere problemen in de gaten om dit level te winnen", another_patient_cured = "Goed gedaan; nog een patiënt is genezen, dat zijn er nu al %d.", reputation_good_enough = "Oké, je reputatie is goed genoeg om dit level te winnen, hou het boven %d en los andere problemen op om te winnen", cured_enough_patients = "Je hebt genoeg van je patiënten genezen om dit level te winnen, nu moet je je ziekenhuis nog efficiënter maken om te winnen.", improve_reputation = "Je moet je reputatie met %d punten verbeteren om dit level te kunnen winnen.", }, staff_place_advice = { receptionists_only_at_desk = "Receptionistes kunnen alleen op de receptie werken.", only_psychiatrists = "Artsen kunnen alleen in de psychiatrie werken als ze gediplomeerd psychiater zijn.", only_surgeons = "Artsen kunnen alleen in de operatiekamer werken als ze chirurg zijn.", only_nurses_in_room = "Alleen zusters kunnen werken in de %s", only_doctors_in_room = "Alleen artsen kunnen werken in de %s", only_researchers = "Artsen kunnen alleen in het laboratorium werken als ze onderzoekers zijn.", nurses_cannot_work_in_room = "Zusters kunnen niet werken in de %s", doctors_cannot_work_in_room = "Artsen kunnen niet werken in de %s", }, room_forbidden_non_reachable_parts = "Als je de kamer hier bouwt zijn andere delen van het ziekenhuis onbereikbaar.", research = { machine_improved = "De %s is verbeterd door het laboratorium.", autopsy_discovered_rep_loss = "Je Auto-Autopsie machine is ontdekt. Verwacht negatieve reacties van het publiek.", drug_fully_researched = "Je onderzoek op het gebied van %s is voltooid.", new_machine_researched = "Het laboratorium heeft een %s uitgevonden.", drug_improved = "Het medicijn voor %s is verbeterd door het laboratorium.", drug_improved_1 = "%s medicijn is vebeterd door het laboratorium.", --is dit netjes in het spel? of kunnen we beter bovenstaande string kopiëren? new_available = "Er is nu een %s beschikbaar.", new_drug_researched = "Het laboratorium heeft een middel tegen %s uitgevonden.", }, boiler_issue = { minimum_heat = "Aha, daar ben je. De boiler in de kelder is kapot. De mensen in je ziekenhuis zullen het straks nogal fris krijgen.", maximum_heat = "De boiler in de kelder is op hol geslagen. De verwarming zit vast op maximum. Mensen zullen het snikheet krijgen. Plaats wat frisdrankautomaten ter compensatie.", resolved = "Goed nieuws. De boiler en verwarming doen het weer normaal. De temperatuur zou nu weer goed moeten zijn voor je personeel en patiënten.", }, competitors = { staff_poached = "Eén van je personeelsleden is gestroopt door een tegenstander.", hospital_opened = "Er is door %s een concurrerend ziekenhuis geopend.", land_purchased = "%s heeft zojuist land gekocht.", }, room_requirements = { research_room_need_researcher = "Je moet nog een arts met een onderzoeksgraad aannemen voor het laboratorium.", op_need_another_surgeon = "Je hebt nog één chirurg nodig om de operatiekamer te kunnen gebruiken.", op_need_ward = "Je moet nog een slaapzaal bouwen voor de patiënten die uit moeten rusten voor de operatie.", reception_need_receptionist = "Je moet een receptioniste aannemen om je patiënten wegwijs te maken.", psychiatry_need_psychiatrist = "Nu je een psychiatrie gebouwd hebt, zal je een psychiater moeten aannemen.", pharmacy_need_nurse = "Je zult een zuster moeten aannemen voor de apotheek.", ward_need_nurse = "Je moet nog een zuster aannemen om in deze slaapzaal te werken.", op_need_two_surgeons = "Neem twee chirurgen aan om operaties uit te kunnen voeren in de operatiekamer.", training_room_need_consultant = "Je hebt een specialist nodig om les te kunnen geven in dat klaslokaal.", gps_office_need_doctor = "Je moet een arts aannemen voor de spreekkamer.", }, goals = { win = { money = "Je hebt nog %d nodig om het financiële doel te halen voor dit level.", cure = "Genees nog %d patiënten en je hebt genoeg mensen genezen om dit level te winnen.", reputation = "Bouw je reputatie op naar %d punten om je doel te behalen.", value = "Bouw je ziekenhuis uit tot het %d waard is om dit doel te behalen.", }, lose = { kill = "Als er nog %d patiënten overlijden heb je dit level verloren!", }, }, warnings = { charges_too_low = "Je behandelingen zijn te goedkoop. Dit brengt wel mensen binnen, maar je verdient erg weinig aan ze.", charges_too_high = "Je vraagt veel geld. Op de korte termijn brengt dat geld in het laatje, maar uiteindelijk jaag je er mensen mee weg.", plants_thirsty = "Je moet een oogje houden op je planten. Ze zien er dorstig uit.", staff_overworked = "Je personeel is overwerkt. Ze worden inefficiënt en gaan fouten maken, met alle rampzalige gevolgen van dien.", queue_too_long_at_reception = "Er staan teveel mensen te wachten om een kamer toegewezen te krijgen door de receptioniste. Plaats nog een receptie en neem een receptioniste aan.", queue_too_long_send_doctor = "De rij voor de %s is te lang. Is er daar wel een arts aan het werk?", handymen_tired = "Je conciërges zijn erg moe. Laat ze uitrusten.", money_low = "Je hebt bijna geen geld meer!", money_very_low_take_loan = "Je hebt amper geld over. Je kunt een lening afsluiten, weet je.", staff_unhappy = "Je personeel is ongelukkig. Geef ze een bonus, of beter nog: geef ze een personeelsruimte! Je kunt ook je beleid aanpassen in het beleidsscherm.", no_patients_last_month = "Ik ben geschokt! Er is in de afgelopen maand geen enkele nieuwe patiënt binnengekomen.", queues_too_long = "Je wachtrijen zijn te lang.", patient_stuck = "Er is iemand verdwaald. Plan de opzet van je ziekenhuis beter.", patients_too_hot = "De patiënten krijgen het te heet. Verwijder wat radiatoren, zet de verwarming wat lager of plaats meer frisdrankautomaten.", doctors_tired = "Je artsen zijn hartstikke moe. Laat ze onmiddellijk uitrusten.", need_toilets = "Patiënten hebben toiletten nodig. Bouw ze op een plek waar mensen snel bij kunnen komen.", machines_falling_apart = "Je apparatuur valt haast uit elkaar. Stuur er snel conciërges op af!", nobody_cured_last_month = "Er is in de afgelopen maand helemaal niemand genezen.", patients_thirsty = "Mensen krijgen dorst. Misschien zou je wat frisdrankautomaten kunnen plaatsen?", nurses_tired = "Je zusters zijn moe. Laat ze uitrusten.", machine_severely_damaged = "%s is bijna onherstelbaar beschadigd.", reception_bottleneck = "Er is een opstopping bij de receptie. Neem nog een receptioniste aan.", bankruptcy_imminent = "Hé! Straks ben je nog failliet. Pas op!", receptionists_tired = "Je receptionistes zijn erg moe. Laat ze eens uitrusten.", too_many_plants = "Je hebt veel te veel planten. Het lijkt wel een regenwoud.", many_killed = "Je hebt nu %d doden op je geweten. Je weet toch wel dat het de bedoeling is dat je ze geneest, hè?", need_staffroom = "Bouw een personeelsruimte, zodat je werknemers kunnen uitrusten.", staff_too_hot = "Je personeel raakt oververhit. Zet de verwarming wat lager of verwijder radiatoren uit hun kamers.", patients_unhappy = "Patiënten hebben geen hoge pet op van je ziekenhuis. Je zou iets aan hun omgeving kunnen doen.", people_did_it_on_the_floor = "Sommige patiënten konden het niet meer ophouden. Iemand zal het toch op moeten ruimen.", patients_very_thirsty = "Patiënten hebben echt dorst; als je niet snel frisdrankautomaten neerzet zullen veel patiënten je ziekenhuis verlaten en naar huis gaan om cola te drinken.", machinery_very_damaged = "Spoed! Zorg dat een conciërge je machines gaat repareren! Ze exploderen bijna!", handymen_tired2 = "Je conciërges zijn totaal uitgeput, zorg dat ze meteen uit kunnen rusten.", desperate_need_for_watering = "Je moet echt een conciërge inhuren om de planten water te geven.", too_much_litter = "Er is een afvalprobleem, meer conciërges zouden hier tegen kunnen helpen.", place_plants4 = "Vrolijk de patiënten op met wat planten in je ziekenhuis.", change_priorities_to_plants = "Je moet de prioriteiten van je conciërges aanpassen zodat ze meer tijd besteden aan de planten.", finanical_trouble2 = "Zorg dat je wat inkomsten krijgt of je wordt ontslagen. Je zult het level verliezen als je nog %d verder in de min komt.", litter_everywhere = "Er ligt overal troep. Zet er wat conciërges op.", nurses_tired2 = "Je zusters zijn erg moe, zorg dat ze wat rust krijgen.", plants_dying = "Je planten gaan dood: ze zijn wanhopig op zoek naar water. Zorg dat je er meer conciërges op zet want patiënten houden helemaal niet van dode planten.", reduce_staff_rest_threshold = "Verkort de tijd dat je personeel moet doorwerken tussen pauzes op het beleidsscherm, zodat ze wat vaker kunnen rusten. Het is maar een idee.", more_toilets = "Je hebt meer toiletten nodig. Mensen in de rij beginnen kabouters te kleien!", hospital_is_rubbish = "Mensen zeggen openlijk dat je ziekenhuis slecht is. Als je niet oppast, zullen ze hun ziektes ergens anders mee naartoe nemen.", pay_back_loan = "Je hebt meer dan genoeg geld. Misschien kun je nu die lening afbetalen?", financial_trouble3 = "Je banksaldo is zorgelijk. Misschien moet je je inkomsten wat verhogen, je zit %d af van een faillissement.", build_toilet_now = "Bouw nu een toilet, mensen houden het niet meer! Niet lachen, dit is serieus.", more_benches = "Misschien moet je meer bankjes plaatsen, zieke mensen blijven namelijk niet graag staan", many_epidemics = "Het lijkt erop dat er meer dan één epidemie tegelijk plaatsvind. Dit zou een enorme ramp kunnen worden dus doe er snel iets aan.", place_plants_to_keep_people = "Mensen gaan weg. Als je wat planten plaatst, zou dat kunnen helpen.", patients_thirsty2 = "Mensen klagen over dorst. Je zou wat frisdrankautomaten neer moeten zetten of bestaande automaten dichter bij de mensen moeten zetten.", people_freezing = "Onvoorstelbaar. In deze tijd van centrale verwarming vriezen sommige patiënten dood. Bouw radiatoren om het weer warmer te krijgen in je ziekenhuis en zet de thermostaat hoger.", patients_very_cold = "Patiënten hebben het erg koud. Probeer de thermostaat hoger te zetten of plaats meer radiatoren.", build_toilets = "Bouw nu meteen een toilet of je zult iets onplezierigs zien, om over de stank nog maar te zwijgen.", place_plants2 = "Mensen lopen weg. Wat meer planten zou ze misschien op andere gedachten kunnen brengen.", staff_tired = "Je personeel is helemaal kapot. Als je ze niet laat uitrusten in een personeelsruimte kunnen ze gek worden van de stress.", place_plants3 = "Patiënten worden ongelukkig, zet wat meer planten neer om ze op te vrolijken.", staff_unhappy2 = "Je personeel is over het algemeen ongelukkig, dat betekend dat ze binnenkort om een hoger salaris zullen vragen.", cash_low_consider_loan = "Je hoeveelheid cash is erg laag, heb je al eens aan een lening gedacht?", financial_trouble = "Je zit zwaar in de financiële problemen, los dit zo snel mogelijk op! Als je nog %d verliest is al je moeite voor niks geweest!", doctors_tired2 = "Je doktoren zijn ongelofelijk moe, laat ze nu meteen rusten.", patient_leaving = "Er gaat een patiënt weg. De reden? Je slecht draaiende ziekenhuis.", machinery_damaged2 = "Je moet een conciërge aannemen om je machines te laten repareren.", patients_leaving = "Patiënten gaan weg. Verbeter het ziekenhuis voor je bezoekers door bijvoorbeeld planten, bankjes en frisdrankautomaten te plaatsen.", epidemic_getting_serious = "Die besmettelijke ziekte is serieus. Je moet er snel iets aan doen!", machinery_damaged = "Repareer je machines snel. Het zal niet lang meer duren voordat ze uit elkaar gaan vallen.", people_have_to_stand = "Zieke en zwakke mensen moeten blijven staan? Zorg dat ze ergens kunnen zitten!", build_staffroom = "Bouw meteen een personeelsruimte. Je personeel werkt te hard, ze storten bijna in! Kom op!", machinery_slightly_damaged = "Je machines zijn enigszins beschadigd geraakt. Vergeet niet om ze zo af en toe te onderhouden.", patients_getting_hot = "Patiënten hebben het te warm. Probeer de thermostaat wat lager te zetten of verwijder wat radiatoren.", machinery_deteriorating = "Je machines zijn zojuist behoorlijk achteruit gegaan, doordat ze te veel gebruikt worden. Hou een oogje in het zeil.", litter_catastrophy = "Het afvalprobleem heeft epische proporties aangenomen. Trek een blik conciërges open en zet ze aan het werk!", staff_very_cold = "Personeel klaagt over de kou. Zet de thermostaat hoger of plaats meer radiatoren.", deal_with_epidemic_now = "Als je die epidemie niet snel oplost zal je de gevolgen moeten ondervinden. Aan het werk!", patients_really_thirsty = "Patiënten hebben erg veel dorst. Plaats meer frisdrankautomaten of verplaats bestaande automaten naar de langste rijen.", some_litter = "Conciërges kunnen die rommel opruimen voordat het echt een probleem wordt.", patients_annoyed = "Mensen hebben genoeg van de manier waarop je dit ziekenhuis bestuurd en ik kan ze geen ongelijk geven. Verbeter of verdwijn!", receptionists_tired2 = "Je receptionistes zijn erg vermoeid, laat ze zo snel mogelijk rusten.", doctor_crazy_overwork = "Oh nee! Een van je artsen is overspannen door overwerk. Misschien komt hij er nog bovenop als je hem meteen laat rusten.", falling_1 = "Hé! Daar kan ik niet om lachen, kijk uit waar je met die muis klikt; straks raken er mensen gewond!", falling_2 = "Stop daarmee, zou jij dat leuk vinden?", falling_3 = "Au, dat doet vast zeer, is er een dokter in de buurt?!", falling_4 = "Dit is een ziekenhuis, geen pretpark!", falling_5 = "Dit is niet de plek om mensen omver te duwen, je ziet toch dat ze ziek zijn?!", falling_6 = "Het is hier geen bowlingbaan! Zieken horen niet zo behandeld te worden!", no_desk = "Je zult op enig moment wel een receptiebalie moeten bouwen en een receptioniste moeten aannemen!", no_desk_1 = "Als je wilt dat patiënten je ziekenhuis bezoeken, moet je een receptioniste inhuren en een receptiebalie bouwen, zodat ze haar werk kan doen!", no_desk_2 = "Lekker gedaan, dit moet een nieuw record zijn: bijna een jaar zonder patiënten! Als je hier manager wilt blijven, neem dan nu een receptioniste aan en bouw een receptiebalie waar ze kan werken!", no_desk_3 = "Fantastisch, bijna een jaar voorbij en je hebt nog steeds geen bemande receptie. Hoe denk je dat je patiënten gaat krijgen? Los het onmiddellijk op, en stop met dat gerommel!", no_desk_4 = "Een receptioniste moet haar eigen werkplek hebben om de patiënten te begroeten bij binnenkomst.", no_desk_5 = "Nou, het werd tijd! Je zult binnekort een paar patiënten zien arriveren!", no_desk_6 = "Je hebt een receptioniste aangenomen, dus zou je niet een receptiebalie bouwen waar ze haar werk kan doen?", no_desk_7 = "Je hebt een receptiebalie gebouwd, dus zou je niet een receptioniste aannemen? Je zult geen patiënten zien binnenkomen tot je dit opgelost hebt!", cannot_afford = "Je hebt niet genoeg geld op je rekening staan om dit personeelslid aan te nemen.", cannot_afford_2 = "Je hebt niet genoeg geld op de bank staan om dit te kopen!", research_screen_open_1 = "Je moet eerst een laboratorium bouwen, voordat je het onderzoeksscherm kunt bekijken.", research_screen_open_2 = "Onderzoek is in dit level nog niet toegankelijk.", researcher_needs_desk_1 = "Een onderzoeker heeft een bureau nodig om aan te werken.", researcher_needs_desk_2 = "Je onderzoeker is blij dat je hem op pauze laat gaan. Als het je bedoeling was om meer onderzoekers tegelijk te laten werken, dan moet je voor elk van hen een bureau neerzetten zodat ze hun werk kunnen doen.", researcher_needs_desk_3 = "Elke onderzoeker heeft zijn eigen bureau nodig om aan te werken.", nurse_needs_desk_2 = "Je zuster is blij dat je haar een pauze gunt. Als het je bedoeling was om meer zusters tegelijk in de slaapzaal te laten werken, dan moet je voor elk van hen een bureau neerzetten.", nurse_needs_desk_1 = "Elke zuster heeft haar eigen bureau nodig om aan te werken.", }, placement_info = { door_can_place = "Je kunt hier een deur plaatsen als je wilt.", window_can_place = "Jahoor, je kunt hier een raam plaatsen.", door_cannot_place = "Sorry, maar je kunt hier geen deur plaatsen.", object_can_place = "Je kunt dit voorwerp hier plaatsen.", reception_can_place = "Je kunt de receptie hier plaatsen.", staff_cannot_place = "Je kunt hier geen werknemer neerzetten. Sorry.", staff_can_place = "Je kunt hier een werknemer neerzetten. ", object_cannot_place = "Hé, je kunt dat voorwerp daar niet plaatsen.", room_cannot_place = "Je kunt hier de kamer niet bouwen.", room_cannot_place_2 = "De kamer kan hier niet gebouwd worden.", window_cannot_place = "Eh, dat raam kun je daar niet plaatsen", reception_cannot_place = "Je kunt daar geen receptie plaatsen.", }, praise = { many_benches = "Patiënten hebben nu genoeg zitplaats. Netjes.", many_plants = "Heerlijk. Je hebt planten zat. Dat zullen je patiënten fijn vinden.", patients_cured = "%d patiënten genezen.", plants_are_well = "Oh mooi. Je zorgt goed voor je planten, prachtig.", few_have_to_stand = "Bijna niemand hoeft te blijven staan in jouw ziekenhuis. De patiënten zullen daar blij mee zijn", plenty_of_benches = "Er is voldoende zitplaats, dus dat is geen probleem", plants_thriving = "Erg goed. Je planten bloeien prachtig en zien er fantastisch uit. Als dat zo doorgaat kun je een prijs verwachten.", }, information = { larger_rooms = "Grotere kamers strelen het ego van het personeel, waardoor ze beter gaan werken.", extra_items = "Extra voorwerpen in de kamer zorgen voor comfort, waardoor je personeel beter gaan werken.", epidemic = "Je hebt een besmettelijke ziekte in je ziekenhuis. Daar moet je meteen achteraan!", promotion_to_doctor = "Eén van je ASSISTENTEN is zojuist BASISARTS geworden", emergency = "We hebben een noodgeval! Hup hup hup!", patient_abducted = "Eén van je patiënten wordt ontvoerd door aliens!", first_cure = "Goed werk! Je hebt zojuist je eerste patiënt genezen.", promotion_to_consultant = "Eén van je BASISARTSEN is zojuist SPECIALIST geworden.", handyman_adjust = "Je kunt de conciërges effectiever laten werken door hun prioriteiten aan te passen.", promotion_to_specialist = "Een van je artsen is gepromoveerd tot %s.", initial_general_advice = { rats_have_arrived = "Ratten hebben zich in je ziekenhuis genesteld. Schiet ze dood met je muis!", autopsy_available = "De Auto-Autopsie machine is uitgevonden. Als je een lastige patiënt hebt, kun je ze hiermee 'kwijtraken' en onderzoek doen op hun lichaam. Wees gewaarschuwd: deze machine is erg berucht.", --[[''Berucht'' is toch een goede vertaling voor ''controversieel?'' Controversieel kent namelijk niet iedereen.]]-- first_patients_thirsty = "Er zijn dorstige mensen in je ziekenhuis. Plaats een frisdrankautomaat.", research_now_available = "Je hebt je eerste laboratorium gebouwd. Nu kun je naar het onderzoeksscherm gaan.", psychiatric_symbol = "Artsen die psychiatrie hebben gestudeerd dragen het symbool: |", decrease_heating = "Mensen hebben het te heet in je ziekenhuis. Draai de verwarming wat lager. Dit kun je doen bij de kaart.", surgeon_symbol = "Artsen die kunnen opereren dragen het symbool: {", first_emergency = "Patiënten van een Noodgeval hebben een blauwe sirene boven hun hoofd. Genees ze voor ze sterven of de tijd is voorbij.", first_epidemic = "Er is een epidemie gaande! Beslis of je het in de doofpot wil stoppen of wil opbiechten.", taking_your_staff = "Iemand probeert je personeel weg te stropen. Je zult moeten vechten om ze bij je te houden.", place_radiators = "Mensen in je ziekenhuis hebben het koud. Je kunt meer radiatoren in het gangartikelen menu kopen.", epidemic_spreading = "Er waart een besmettelijke ziekte rond. Probeer de geïnfecteerde patiënten te genezen voor ze kunnen vertrekken.", research_symbol = "Dokters die onderzoek kunnen doen dragen dit symbool: }", machine_needs_repair = "Er is een apparaat dat gerepareerd moet worden. Zoek naar een rokend apparaat en klik erop. Klik dan op de conciërgeknop.", increase_heating = "Mensen hebben het koud. Zet de verwarming hoger in het kaartscherm.", first_VIP = "Straks komt er voor het eerst een VIP langs. Zorg ervoor dat de VIP geen onhygiënische dingen of ongelukkige patiënten ziet.", }, patient_leaving_too_expensive = "Een patiënt is vertrokken zonder te betalen voor je %s. Schijnbaar is het te duur.", vip_arrived = "Let op; %s is zojuist gearriveerd! Zorg dat alles gladjes verloopt, zodat hij tevreden is.", epidemic_health_inspector = "Nieuws van je epidemie is aangekomen bij het Ministerie van Volksgezondheid. Verwacht een bezoekje van de inspectie.", first_death = "Je hebt zojuist je eerste patiënt gedood. Hoe voelt dat?", pay_rise = "Een personeelslid dreigt op te stappen. Kies of je de eis inwilligt of hem ontslaat. Klik op het bericht linksonder om te zien welk personeelslid dreigt ontslag te nemen.", place_windows = "Ramen plaatsen zorgt voor lichtere kamers en komt het moraal van je werknemers ten goede.", fax_received = "Het icoontje dat zojuist in de linkeronderhoek omhoog is gekomen, betekent dat er een belangrijk stuk informatie te lezen valt of dat er een beslissing moet worden genomen.", }, build_advice = { placing_object_blocks_door = "Dat voorwerp daar plaatsen, zou de toegang tot een deur blokkeren.", blueprint_would_block = "Met deze blauwdruk zou een andere kamer worden geblokkeerd. Probeer een andere grootte of een andere locatie!", door_not_reachable = "Zo kunnen mensen niet bij een deur komen. Hou je koppie erbij.", blueprint_invalid = "Dat is geen geldige blauwdruk.", }, cheats = { th_cheat = "Gefeliciteerd, je hebt de cheats ontdekt!", roujin_on_cheat = "Roujin's uitdaging geactiveerd, succes...", roujin_off_cheat = "Roujin's uitdaging gedeactiveerd.", }, } room_descriptions = { ultrascan = { [1] = "Echoscopie//", [2] = "De echoscopie is zo'n beetje het ultieme in diagnostische apparatuur. Het kost een aardige duit, maar dan heb je ook wat als je gaat voor fantastische diagnoses in je ziekenhuis.//", [3] = "De echoscopie wordt gebruikt door een arts. Het moet ook onderhouden worden. ", }, gp = { [1] = "Spreekkamer//", [2] = "Dit is het fundament van alle diagnoses. Nieuwe patiënten komen hier langs zodat er gekeken kan worden wat er met hen aan de hand is. Vanaf hier worden ze doorverwezen naar andere diagnostische kamers of naar een kamer waar ze genezen kunnen worden. Als de eerste spreekkamer te druk wordt, zal je er waarschijnlijk nog één willen bouwen. Hoe groter de kamer, hoe meer voorwerpen je erin kwijt kunt, en hoe beter de arts in functie zich zal voelen. Dit geldt trouwens voor alle kamers.//", [3] = "De spreekkamer wordt gebruikt door een arts. ", }, fracture_clinic = { [1] = "Gipskamer//", [2] = "Hier worden patiënten die de pech hebben een Botfactuur te hebben opgelopen geholpen. De gipsverwijderaar gebruikt krachtige industriële lasers om verhard gips weg te snijden, met slechts een kleine martelgang voor de patiënt.//", [3] = "De gipskamer heeft een zuster nodig. Het moet ook eens in de zoveel tijd onderhouden worden. ", }, tv_room = { [1] = "TV ROOM NOT USED", }, inflation = { [1] = "Inflatiekliniek//", [2] = "Patiënten met de pijnlijke doch grappige plofkop worden naar de inflatiekliniek gestuurd, waar het opgeblazen hoofd wordt doorgeprikt en meteen weer opgeblazen tot de juiste luchtdruk is bereikt.//", [3] = "De inflatiekliniek heeft een arts nodig. Het moet ook in de gaten worden gehouden door een conciërge. ", }, jelly_vat = { [1] = "Gelatinekliniek//", [2] = "Patiënten die tot de lachwekkende ziekte gelatinis zijn overgeleverd blubberen zichzelf naar de gelatinekliniek, waar ze in een gelatinetank worden geplaatst. Dit geneest ze op een manier die zelfs de medische wetenschap nog niet helemaal duidelijk is.//", [3] = "De gelatinekliniek heeft een arts nodig, en het waakzame oog van een conciërge voor onderhoud. ", }, scanner = { [1] = "Scanner//", [2] = "Met de moderne scanner kan er een nauwkeurige diagnose gesteld worden. Wanneer de diagnose is afgerond gaat de patiënt weer naar de spreekkamer voor verdere behandelingen.//", [3] = "De scanner heeft zowel een arts als onderhoud nodig. ", }, blood_machine = { [1] = "Bloedmachine//", [2] = "De bloedmachine is een diagnosemachine die de bloedcellen van een patiënt analyseert om te zien wat er mis is.//", [3] = "De bloedmachine wordt gebruikt door een arts. Het heeft ook onderhoud nodig. ", }, pharmacy = { [1] = "Apotheek//", [2] = "Patiënten die behandeld worden met een medicinaal drankje brengen een bezoekje aan de apotheek. Hoe meer geneesmiddelen er worden uitgevonden, hoe drukker het hier zal worden. Waarschijnlijk zal je later nog een apotheek willen bouwen.//", [3] = "Alleen zusters kunnen in een apotheek werken. ", }, cardiogram = { [1] = "Cardio//", [2] = "Patiënten gaan hier naar toe voor controle en diagnose. Daarna gaan ze terug naar de spreekkamer om zich te laten behandelen.", [3] = "De cardio heeft een arts en onderhoud nodig. ", }, ward = { [1] = "Slaapzaal//", [2] = "Patiënten verblijven hier kort voor observatie door een zuster. Ze rusten hier ook uit als ze zich klaar moeten maken voor een operatie.//", [3] = "De slaapzaal heeft een zuster nodig. ", }, psych = { [1] = "Psychiatrie//", [2] = "Patiënten die een psychisch probleem hebben worden naar de psychiatrie gestuurd voor therapie. psychiaters kunnen ook diagnoses stellen. Als een patiënt aan een geestelijk probleem lijdt, kunnen ze met behulp van de trouwe ligbank de patiënt behandelen.//", [3] = "De psychiatrie heeft een arts nodig die een diploma heeft voor psychiater. ", }, staff_room = { [1] = "Personeelsruimte//", [2] = "Op den duur worden je personeelsleden moe en moeten ze uitrusten. Ze gaan dan naar deze kamer toe zodat ze later weer met frisse moed en energie aan de slag kunnen. Personeelsleden die moe zijn gaan langzamer werken, fouten maken, meer geld vragen en zullen uiteindelijk ontslag nemen. Een personeelsruimte met genoeg ruimte is dus het geld en de ruimte waard. Richt de kamer zo in dat er genoeg mensen tegelijk gebruik kunnen maken van de kamer. ", }, operating_theatre = { [1] = "Operatiekamer//", [2] = "De operatiekamer is onmisbaar in een ziekenhuis. Patiënten met verschillende lichamelijke kwalen kunnen hier worden geopereerd door twee chirurgen. Het is van belang dat de operatiekamer groot genoeg is en dat de juiste apparatuur aanwezig is.//", [3] = "Om de operatiekamer te kunnen gebruiken moet je twee chirurgen aannemen. ", }, training = { [1] = "Klaslokaal//", [2] = "Je assistenten en basisartsen kunnen waardevolle ervaring opdoen en kwalificaties behalen door in dit lokaal te studeren onder een specialist. Deze specialist geeft zijn kennis van chirurgie, psychiatrie en/of onderzoek door aan de leerlingen. Artsen die al deze kwalificaties hebben zullen leren hoe ze hun vak nog beter kunnen uitvoeren.//", --[[''en/of:'' wordt de ''/'' hierbij getoond in het spel?]]-- [3] = "Het klaslokaal heeft een specialist en leerlingen nodig. ", }, dna_fixer = { [1] = "DNA hersteller//", [2] = "Patiënten waarmee gerotzooid is door bewoners van een andere wereld moeten hun DNA laten vervangen in deze kamer. De DNA reparatiemachine is een ingewikkeld en duur instrument en er zal altijd, gewoon voor het geval dat, een brandblusser bij de hand gehouden moeten worden.//", [3] = "De DNA reparatiemachine heeft onderhoud nodig van een conciërge. Alleen een arts met een onderzoeksgraad kan van deze machine gebruik maken. ", }, research = { [1] = "Laboratorium//", [2] = "Hier worden nieuwe medicijnen en behandelingen uitgevonden. Dit belangrijke onderdeel van je ziekenhuis zal je beter in staat stellen je patiënten te genezen met als resultaat dat er meer patiënten zijn die je ziekenhuis gezond zullen verlaten.//", [3] = "Het laboratorium heeft een arts met een onderzoeksgraad nodig. ", }, hair_restoration = { [1] = "Haarrestauratiekliniek//", [2] = "Patiënten die last hebben van extreme kaalheid worden naar de haarrestaurateur gestuurd. Een arts zal met deze machine het hoofd van de patiënt van een frisse, nieuwe coupe voorzien.//", [3] = "De haarrestauratie heeft een arts nodig. Ook moet een conciërge zo nu en dan wat onderhoud plegen. ", }, general_diag = { [1] = "Algemene diagnose//", [2] = "Patiënten die een verdere diagnose moeten ondergaan worden hier naartoe gestuurd voor controle. Als men er in de spreekkamer niet achter komt wat er mis is, zal dit na de algemene diagnose vaak wel lukken. Na deze kamer gaan ze terug naar de spreekkamer om de resultaten te laten analyseren.//", [3] = "Algemene diagnose heeft alleen een arts nodig. ", }, electrolysis = { [1] = "Elektrolyse//", [2] = "Patiënten met pilitis worden naar deze kamer gestuurd waar een speciale machine, de elektrolyseerder, de haren uitrukt en de poriën elektrisch sluit met een substantie die veel weg heeft van beton.//", [3] = "De elektrolysekamer wordt gebruikt door een arts en onderhouden door een conciërge. ", }, slack_tongue = { [1] = "Lamme tongkliniek//", [2] = "Patiënten waarvan in de spreekkamer wordt vastgesteld dat ze lijden aan lamme tong, worden naar deze kliniek gestuurd voor een behandeling. De arts gebruikt hier een technisch hoogstandje om de tong uit te rekken en het overtollige spierweefsel weg te snijden. Hierna mag de patiënt weer volledig gezond zijn of haar weg naar huis vinden.//", [3] = "De lamme tongkliniek heeft een arts nodig. Het moet ook zo nu en dan onderhouden worden door een conciërge. ", }, toilets = { [1] = "Toiletten//", [2] = "Ook patiënten voelen af en toe in hun binnenste dat het tijd is om een bruine trui te breien. Dit kunnen ze doen op je comfortabele toiletten. Als je veel bezoekers verwacht, kun je extra wasbakken en toiletten bouwen. Soms zal je meerdere faciliteiten willen bouwen verspreid over het ziekenhuis, zodat iedereen snel zijn behoefte kan doen. ", }, no_room = { [1] = "", }, x_ray = { [1] = "Röntgenkamer//", [2] = "Het röntgenapparaat maakt met speciale stralen een foto van het binnenste van de patiënt zodat ze een goed idee hebben van wat er met hem aan de hand is.//", [3] = "De röntgenkamer heeft een arts nodig. Ook moet het af en toe nagekeken worden door een conciërge. ", }, decontamination = { [1] = "Ontsmettingskliniek//", [2] = "Patiënten die aan Straling zijn blootgesteld worden snel naar de ontsmettingskliniek doorverwezen. Deze kamer heeft een ontsmettingscabine die de patiënt reinigt van al die verschrikkelijke radioactiviteit.//", [3] = "De ontsmettingscabine heeft een arts nodig voor gebruik en een conciërge voor onderhoud. ", }, } introduction_texts = { level17 = "Nog een laatste waarschuwing: hou een oogje op je reputatie. Je reputatie is namelijk iets wat patiënten van heinde en verre naar je ziekenhuis laat komen. " .. "Als je niet teveel mensen doodt en ze redelijk gelukkig houdt, zou je niet al teveel problemen moeten hebben met dit level!//" .. "En nu mag je het zelf opknappen. Veel succes ermee!", level1 = "Welkom in je eerste ziekenhuis!" .. "Zorg dat de boel op gang komt door een receptie te plaatsen en een spreekkamer te bouwen. Neem ook een receptioniste en een arts in dienst. " .. "Wacht dan tot er mensen langskomen." .. "Het is een goed idee om een psychiatrische afdeling te bouwen en een arts in te huren met de benodigde kwalificaties. " .. "Een apotheek en een zuster zijn essentieel voor het genezen van je patiënten. " .. "Kijk uit voor ernstige gevallen van plofkop. Een inflatiekliniek lost deze probleempjes op. " .. "Genees, om de spits af te bijten, 10 mensen en hou je reputatie boven de 200.", level9 = "Nu je de kas van het ministerie flink hebt gespekt en de minister dankzij jouw donaties vrolijk in zijn splinternieuwe limousine rondrijdt, kun je nu weer terug naar je echte taak: het bouwen van een ziekenhuis dat niet alleen goed draait maar ook duidelijk om haar arme en zieke patiënten geeft." .. "Verwacht dat er een boel problemen de kop opsteken." .. "Als je genoeg kamers en een goed getrainde staf hebt, zal je die problemen makkelijk het hoofd moeten kunnen bieden. " .. "Je ziekenhuis moet uiteindelijk $200,000 waard zijn. Verzamel ook een comfortabele $400.000 op je bankrekening. " .. "Met minder dan dat kun je het level niet uitspelen.", level2 = "Er zijn hier in de omgeving een stuk meer ziektes. " .. "Zet je ziekenhuis zo op dat je de grotere hoeveelheid patiënten kunt behapstukken en bouw ook nog een laboratorium. " .. "Hou je ziekenhuis schoon en je reputatie zo hoog mogelijk. Je zult te maken krijgen met ziektes zoals lamme tong, dus je hebt een lamme tongkliniek nodig. " .. "Je hebt ook een cardio nodig zodat je betere diagnoses kunt stellen en nieuwe ziektes kunt ontdekken. " .. "Beide kamers moeten worden onderzocht voor je ze kunt bouwen. Je kunt nu ook extra gebouwen kopen om je ziekenhuis uit te breiden. Gebruik hier het kaartscherm voor. " .. "Probeer een reputatie van 300 te behalen, een saldo van 10,000 op de teller te hebben staan en 40 mensen te genezen.", level7 = "Je wordt in de gaten gehouden door het Ministerie van Volksgezondheid, dus zorg ervoor dat je flinke winst draait en dat je reputatie constant hoog blijft. " .. "We kunnen ons geen doden veroorloven; dat is slecht voor zaken. " .. "Zorg dat je personeel in vorm is en dat je alle apparatuur hebt die nodig is. " .. "Zorg voor een reputatie van 600 en een saldo $200.000.", level5 = "Dit wordt een druk ziekenhuis met een grote variatie aan ziektebeelden. " .. "Je artsen komen allemaal net van school af, dus bouw een klaslokaal en geef ze een opleiding tot een acceptabel niveau. " .. "Je hebt maar drie specialisten om de rest van je personeel op te leiden, dus hou ze tevreden. " .. "Daarbij is je ziekenhuis gebouwd op de San Androïde-breuk. " .. "Aardbevingen kunnen dus elk moment toeslaan. " .. "Deze zullen je machines beschadigen en je goedlopende ziekenhuis flink verstoren. " .. "Bouw je reputatie op tot boven de 400 en zorg voor een nette $50.000 op je bankrekening. Zorg daarnaast dat je 200 patiënten geneest.", level4 = "Hou al je patiënten tevreden en werk ze zo efficiënt mogelijk af. Voorkom sterfgevallen zoveel mogelijk." .. "Je reputatie staat op het spel, dus hou die zo hoog mogelijk. " .. "Maak je niet al teveel zorgen over geld; dat komt wel als die o zo belangrijke reputatie groeit. " .. "Je kunt nu je ook artsen trainen, zodat ze beter gekwalificeerd zullen zijn. " .. "Waarschijnlijk zal je heel wat patiënten tegenkomen die nogal doorzichtig zijn. " .. "Bouw je reputatie op tot deze de 500 heeft bereikt.", --[[ Level 13 and 14 are rat shooting galleries and are thus not available through the File menu as of yet. --]] level14 = "Je hebt nog een uitdaging gekregen; een compleet onverwacht verrassingsziekenhuis! " .. "Als je hier een succes van kunt maken ben je de winnaar van alle winnaars. " .. "Maar denk niet dat het een eitje is. Het is de moeilijkste opdracht die je ooit zult aannemen. " .. "Veel succes!", --[[ Level 15 is most likely just removed content. I translated it as usual just in case the team finds something to do with it. --]] level15 = "Goed, dat is dus de basis van een ziekenhuis bouwen.//" .. "Je artsen zullen alle hulp nodig hebben die ze kunnen gebruiken bij het stellen van diagnoses. Je kunt ze helpen " .. "door meerdere diagnostische kamers te bouwen, zoals de algemene diagnose.", level8 = "Het is aan jou om het meeste efficiënte ziekenhuis op te zetten voor zo weinig mogelijk geld. " .. "De mensen zitten hier goed in de slappe was, dus pers zoveel mogelijk geld uit ze als mogelijk is. " .. "Ja, mensen genezen is heel leuk, maar je hebt het geld dat ze binnenbrengen echt NODIG. " .. "Schudt die zieke mensen dus maar flink uit. " .. "Verzamel een fortuin van $300.000 om dit level uit te spelen.", level13 = "Je fantastische werk als directeur is ondertussen bij de Speciale Geheime Divisie van de Geheime Speciale Dienst bekend. " .. "Ze hebben een bonus voor je; er is een ziekenhuis geïnfecteerd met ratten en ze hebben een echte Terminator nodig. " .. "Vermorzel zoveel mogelijk ratten voordat de conciërges de boel hebben opgeruimd. " .. "Denk je dat je die taak aankunt?", level16 = "Zodra je wat diagnoses hebt gesteld zal je behandelkamers en klinieken moeten bouwen om voor de mensen te zorgen. Een goede om mee te beginnen is de apotheek. " .. "Je moet ook een zuster inhuren zodat ze de verschillende medicijnen kan toedienen.", level6 = "Gebruik al je kennis om je ziekenhuis soepel te laten draaien, een gezonde winst te maken en alle ziektes te genezen die de mensen met zich meedragen. " .. "Wees je ervan bewust dat de atmosfeer hier erg geschikt is voor het overdragen van bacteriën en infecties. " .. "Hou je ziekenhuis dus schoon, tenzij je een lange rits van epidemieën onder je patiënten wilt brengen. " .. "Zorg ervoor dat je $150.000 verdient en dat je ziekenhuis meer dan $140.000 waard is.", level12 = "Dit is de moeder van alle uitdagingen. " .. "Het ministerie is zo onder de indruk van je succes, dat ze je de hoogste positie hebben aangeboden. Ze willen iemand hebben die nog een ultiem ziekenhuis kan bouwen, veel geld kan verdienen en een fantastische reputatie kan opbouwen. " .. "Je wordt verwacht alle, maar dan ook echt alle ziektes te kunnen genezen en alle prijzen in de wacht te slepen. " .. "Denk je dat je dat aankunt?" .. "Verdien $650.000, genees 750 mensen en verdien krijg een reputatie van 800 om dit te winnen.", level3 = "Dit keer bouw je een ziekenhuis in een rijke buurt. " .. "Het Ministerie van Volksgezondheid vraagt een gezonde winst van je. " .. "Je zult eerst een goede reputatie moeten opbouwen, maar schakel zodra je ziekenhuis volloopt over op zoveel mogelijk geld binnenhalen. " .. "Er kunnen zich ook noodgevallen voordoen. " .. "Dit zijn gevallen waarin er meerdere patiënten binnenkomen met dezelfde ziekte. " .. "Als je ze allemaal binnen een bepaalde tijd geneest, zit er een vette bonus aan vast en gaat je reputatie erop vooruit. " .. "Ziektes als het King Complex kunnen voorkomen en er wordt aangeraden om wat geld opzij te zetten voor een operatiekamer in de buurt van een slaapzaal. " .. "Verdien $20.000 om het level te halen.", level10 = "Het ministerie vraagt nu niet alleen dat je alle ziektes in deze buurt aanpakt, maar ook dat je je concentreert op de efficiëntie van je medicijnen. " .. "Er zijn wat klachten binnengekomen van Ofziek, de waakhond van de gezondheidszorg, dus als je goed over wil komen, zorg je ervoor dat je medicijnen goed werken. " .. "Zorg ook dat er niets te klagen valt over je ziekenhuis zelf. Hou die sterfgevallen zeldzaam. " .. "Hint: Hou wat ruimte vrij voor een gelatinetank. " .. "Ontwikkel al je medicijnen door tot ze ten minste 80 procent effectief zijn, behaal een reputatie van 650 en behaal een saldo van $500.000. ", level11 = "Je hebt de kans gekregen het ultieme ziekenhuis te bouwen. " .. "Dit is een zeer prestigieuze omgeving, en het ministerie wil een zo goed mogelijk ziekenhuis zien. " .. "We verwachten dat je flink geld binnenhaalt, een fantastische reputatie hebt en elke situatie aan kunt. " .. "Dit is een belangrijke taak. " .. "Je bent heel wat als je dit lukt. " .. "Opmerkenswaardig is dat er UFO's in de omgeving gezien zijn. Zorg ervoor dat je personeel klaar is voor onverwachte bezoekers. " .. "Je ziekenhuis moet $240.000 waard zijn en je moet $500.000 op de bank hebben staan. Ook moet je reputatie minimaal 700 bedragen.", level18 = "", demo = "Welkom in het demo ziekenhuis!" .. "Jammer genoeg bevat de demo versie buiten zelfgemaakte levels alleen dit ziekenhuis, maar er is meer dan genoeg te doen om je voorlopig bezig te houden!" .. "Je zult verschillende kwalen tegenkomen die verschillende ruimtes nodig hebben om genezen te worden, af en toe kunnen zich noodgevallen voordoen, en je zult nieuwe ruimtes uit moeten vinden met het laboratorium" .. "Jouw doel is om $100,000 te verdienen, de waarde van je ziekenhuis te verhogen naar $70,000 en een reputatie van 700 te behalen, terwijl je 75% van je patiënten geneest" .. "Zorg er voor dat je reputatie niet lager wordt dan 300 en dat je niet meer dan 40% van je patiënten vermoord, anders zal je ontslagen worden!" .. "Succes!", } humanoid_name_starts = { [1] = "GOUD", [2] = "HOOGE", [3] = "EEN", [4] = "BENE", [5] = "BAN", [6] = "BILT", [7] = "WIJDE", [8] = "WATER", [9] = "POOT", [10] = "KONINGS", [11] = "VAN BAR", [12] = "DE PET", [13] = "MAR", [14] = "BAAI", [15] = "WARS", [16] = "RIDDER", [17] = "VAN KRAB", [18] = "VIS", [19] = "WATER", [20] = "MOLEN", [21] = "DE BIJ", [22] = "VEEN", [23] = "RICHT", [24] = "SCHOOTS", [25] = "BOERE", [26] = "VAN PRIJK", [27] = "KOERS", [28] = "WIT", [29] = "BINNENS", [30] = "BON", [31] = "VD POOG", [32] = "VAN REGT", [33] = "VD KERK", } humanoid_name_ends = { [1] = "SMID", [2] = "WIJK", [3] = "WEGE", [4] = "SEN", [5] = "TEN", [6] = "VELD", [7] = "WEG", [8] = "ZOON", [9] = "HOUT", [10] = "BEEK", [11] = "BOOM", [12] = "ING", [13] = "LAAT", [14] = "PLAAT", [15] = "DIJK", [16] = "POORTE", [17] = "MARS", [18] = "HEIDE", [19] = "MOND", [20] = "MAN", [21] = "SPRAEK", [22] = "BERGH", [23] = "BOER", [24] = "MOER", [25] = "PLEIJN", [26] = "GRAAF", } vip_names = { [1] = "De Burgemeester van Lagerzand", [2] = "Marko Boerzaato", [3] = "Koning Filip van België", [4] = "Aung Sang Su Kyi, de Myanmarese Oppositieleidster", [5] = "De helderziende Zomanda", [6] = "De schrijver Jan Volkerts", [7] = "Jan Peter Bakellende", [8] = "Hans Spreeuwen", [9] = "Een Eredivise voetballer", [10] = "Albert Zweijn", health_minister = "De Minister van Volksgezondheid", } custom_game_window = { caption = "Uitzendwerk", free_build = "Vrij bouwen", } transactions = { --[[Hier geen veranderingen in aanbrengen. Sommige woorden zijn bewust weggelaten vanwege ruimtegebrek ingame!]]-- severance = "Ontslagpremie", research = "Onderzoekskosten", eoy_trophy_bonus = "Prijzengeld", buy_object = "Aankoop", cure_colon = "Genezen:", epidemy_coverup_fine = "Boete verbergen epidemie", final_treat_colon = "Laatste behandeling:", jukebox = "Inkomen: jukebox", loan_interest = "Rente lening", overdraft = "Rente rood staan", wages = "Salaris", loan_repayment = "Afbetaling lening", personal_bonus = "Persoonlijke bonus", drug_cost = "Medicijnen", cure = "Genezen", heating = "Stookkosten", treat_colon = "Behandeld:", compensation = "Compensatie v. overheid", epidemy_fine = "Boete epidemie", buy_land = "Land gekocht", research_bonus = "Bonus onderzoek", general_bonus = "Algemene bonus uitbetaling", deposit = "Treatment Deposit", --[[geen functie]] eoy_bonus_penalty = "Eindejaarsbonus / -boete", cheat = "Gefraudeerd", drinks = "Inkomen: frisdrankautomaat", vaccination = "Inenting", advance_colon = "Advance:", --[[geen functie]] vip_award = "VIP bonus", hire_staff = "Inhuren personeel", bank_loan = "Lening", machine_replacement = "Vervanging apparatuur", emergency_bonus = "Noodgeval bonus", build_room = "Constructie", insurance_colon = "Verzekering:", sell_object = "Verkoop", } letter = { [1] = { [1] = "Beste %s//", [2] = "Fantastisch! Je hebt dit ziekenhuis goed onder controle gehouden. Wij, hoge pieten van het Ministerie van Volksgezondheid, zouden graag willen weten of je geïnteresseerd bent in een groter project. Wij denken dat je een perfecte kandidaat bent voor een andere locatie. Het salaris is $%d. Denk er maar eens over na.//", [3] = "Ben je geïnteresseerd in een baan in het %s-ziekenhuis?", }, [2] = { [1] = "Beste %s//", [2] = "Goed werk! Je hebt fantastische vooruitgang geboekt met je ziekenhuis. We hebben een andere locatie die je kunt managen als je eens een andere omgeving en een paar frisse uitdagingen wilt tegemoetzien. Je hoeft het niet te accepteren, maar het is het wel waard. Het salaris is $%d//", [3] = "Wil je een baan in Ziekenhuis %s?", }, [3] = { [1] = "Beste %s//", [2] = "Je bent erg succesvol geweest tijdens je termijn in dit ziekenhuis. We zien grootse dingen in je toekomst en willen je graag een andere positie aanbieden. Het salaris bedraagt $%d, en volgens ons zal je de nieuwe uitdaging fantastisch vinden.//", [3] = "Wil je een positie in het %s-ziekenhuis?", }, [4] = { [1] = "Beste %s//", [2] = "Gefeliciteerd! Wij van het ministerie zijn erg onder de indruk van je kundigheid met ziekenhuizen. Je bent zeker weten een ster in de gezondheidszorg. Toch denken we dat je voorkeur uitgaat naar een iets moeilijkere positie. Je zou een salaris van $%d krijgen, maar de keuze is helemaal aan jou.//", [3] = "Ben je geïnteresseerd in werken in het ziekenhuis bij %s?", }, [5] = { [1] = "Beste %s//", [2] = "We hebben respect voor je beslissing in dit fantastische ziekenhuis te blijven, maar we willen je verzoeken het nog eens te overdenken. We zullen je het fantastische salaris van $%d aanbieden als je bereid bent om te verhuizen naar een ander ziekenhuis, waar je het net zo gladjes kan laten draaien als op je huidige plek.//", [3] = "Wil je nu naar Ziekenhuis %s?", }, [6] = { [1] = "Beste %s//", [2] = "Gegroet. We weten hoe gelukkig je bent met dit prachtige instituut, maar waarschijnlijk zou je eens over de voortgang van je carrière moeten nadenken. Je zult beschikken over een salaris van $%d als je besluit te verhuizen. Het is het overdenken waard.//", [3] = "Wil je een positie in het %s-ziekenhuis?", }, [7] = { [1] = "Beste %s//", [2] = "Goedendag! Het Ministerie van Volksgezondheid wil graag weten of je terug wilt komen op je beslissing om bij het huidige ziekenhuis te blijven. We vinden dat je een prachtig ziekenhuis hebt, maar je zou er goed aan doen een uitdagendere positie aan te nemen met een salaris van $%d.//", [3] = "Wil je een positie in het ziekenhuis van %s accepteren?", }, [8] = { [1] = "Beste %s//", [2] = "Nogmaals goedendag. Op onze afgelopen brief heb je afwijzend gereageerd, toen we je een prachtige positie aanboden in een nieuw ziekenhuis en een salaris van $%d. We denken echter dat je nog eens zou moeten nadenken over deze beslissing. We hebben de perfect baan voor je!//", [3] = "Wil je de positie in het ziekenhuis van %s accepteren? Asjeblieft?", }, [9] = { [1] = "Beste %s//", [2] = "Je hebt bewezen de beste ziekenhuisdirecteur te zijn die de medische wereld ooit heeft gekend. Het is een goliathprestatie die niet onbeloond gelaten kan worden, dus we willen je bij dezen de positie van Opperdirecteur van Alle Ziekenhuizen aanbieden. Dit is een hele eer met het riante salaris van $%d. Je krijgt een parade met confetti en mensen zullen hun dankbaarheid tonen waar je ook gaat.//", [3] = "Bedankt voor alles dat je hebt gedaan. Geniet van je semi-pensionering.//", [4] = "", }, [10] = { [1] = "Beste %s//", [2] = "Gefeliciteerd met het fantastische werk dat je hebt geleverd bij elk ziekenhuis waar we je hebben over aangesteld. Zo'n geweldige prestatie geeft je de vrijheid van alle steden ter wereld. Je krijgt een pensioen van $%d, een limousine en alles wat we vragen is dat je van stad tot stad reist, je aanbidders gedag zeggen en lezingen houden ter promotie van ziekenhuizen waar nodig.//", [3] = "We zijn allemaal erg trots op je. Een ieder van ons is dankbaar voor het harde werk dat je hebt verzet, zodat vele levens gered konden worden.//", [4] = "", }, [11] = { [1] = "Beste %s//", [2] = "Je hebt een voorbeeldige carrière achter de rug en je bent een inspiratie voor ons allen. Hartelijk bedankt voor het geweldige werk dat je hebt gedaan in alle ziekenhuizen waar we je over hebben aangesteld. We willen je eren met een levenslang salaris van $%d als je ons helpt door in een officiële cabrio van stad naar stad te reizen, waar je lezingen geeft over hoe je zo veel, zo snel voor elkaar hebt gekregen.//", [3] = "Je bent een voorbeeld voor elk verstandig mens en iedereen ter wereld, zonder uitzondering. Iedereen ziet je als een geschenk uit de hemel.//", [4] = "", }, [12] = { [1] = "Beste %s//", [2] = "Je succesvolle carrière naar de beste ziekenhuisdirecteur sinds Mozes is tot een einde gekomen. De impact op het knusse wereldje van gezondheidszorg is echter zo groot geweest dat het ministerie je graag een salaris van $%d wil aanbieden om in onze naam festivals te openen, schepen te dopen en in praatprogramma's te verschijnen. De hele wereld kijkt uit naar je eerste verschijning! Het zou fantastische PR zijn voor ons allemaal!//", [3] = "Accepteer asjeblieft deze positie. Het werk is niet zwaar. Ook geven we je een auto en een politie escorte waar je ook gaat.//", [4] = "", }, dear_player = "Beste %s", custom_level_completed = "Goed werk! Je hebt alle doelen voor dit ziekenhuis behaald!", return_to_main_menu = "Wil je teruggaan naar het hoofdmenu of doorspelen?", } install = { title = "--------------------------------- CorsixTH Setup ---------------------------------", th_directory = "CorsixTH heeft de databestanden van de originele Theme Hospital (of de demo) nodig om te kunnen draaien. Geef hieronder aan waar Theme Hospital staat geïnstalleerd.", exit = "Afsluiten", ok = "OK", cancel = "Annuleren", } casebook = { sent_home = "weggestuurd", deaths = "doden", treatment_charge = "kosten behandeling", reputation = "reputatie", research = "onderzoek specialiseren", cure = "behandeling", cured = "genezen", earned_money = "omzet", cure_desc = { hire_psychiatrists = "Je moet psychiaters aannemen.", improve_cure = "Behandeling verbeteren.", hire_nurses = "Je moet zusters aannemen.", build_ward = "Je moet nog een slaapzaal bouwen.", no_cure_known = "Geen geneesmiddel bekend.", cure_known = "Geneesmiddel.", build_room = "Ik raad je aan een %s te bouwen", hire_doctors = "Je moet artsen aannemen.", hire_surgeons = "Je moet chirurgen aannemen.", }, } errors = { dialog_missing_graphics = "Sorry, de demobestanden bevatten geen data voor dit scherm.", load_quick_save = "Error, kan de quicksave niet laden, omdat het niet bestaat. Maak je maar geen zorgen, we hebben er eentje voor je aangemaakt!", load_prefix = "Fout bij het laden van het spel: ", save_prefix = "Fout bij het opslaan van het spel: ", map_file_missing = "Bestand %s voor dit level is niet gevonden!", minimum_screen_size = "Voer een resolutie in van minstens 640x480.", unavailable_screen_size = "De resolutie die je hebt ingevoerd is niet beschikbaar in fullscreen", alien_dna = "LET OP: Er zijn geen animaties voor alien patiënten die zitten, op deuren kloppenen, deuren openen, enz. Daarom veranderen ze naar een normaal mens als ze dit doen en veranderen dan weer terug, net als in Them Hospital. Patiënten met alien-DNA verschijnen alleen wanneer dit in het level is toegestaan.", fractured_bones = "LET OP: De animatie voor vrouwelijke patiënten met gebrokken botten is niet goed.", no_games_to_contine = "Er zijn geen opgeslagen spellen.", } diseases = { diag_ward = { name = "Diag slaapzaal", }, diag_ultrascan = { name = "Diag echoscopie", }, autopsy = { name = "Autopsie", }, diag_blood_machine = { name = "Diag bloedmachine", }, diag_x_ray = { name = "Diag röntgen", }, diag_psych = { name = "Diag psychiater", }, diag_general_diag = { name = "Diag algemeen", }, general_practice = { name = "Spreekkamerbezoek", }, diag_cardiogram = { name = "Diag cardio", }, diag_scanner = { name = "Diag scanner", }, third_degree_sideburns = { --[[3rd Degree Sideburns (een woordspeling op derdegraads brandwonden en bakkebaarden--]]-- cause = "Oorzaak: nostalgisch verlangen naar de seventies.", cure = "Behandeling: de psychiater probeert de patiënt er via moderne conversatietechnieken van te overtuigen dat die flamboyante stijlen echt niet meer kunnen.", name = "Derdegraads brandhaar", symptoms = "Symptomen: fel geverfd haar, bakkebaarden, plateauschoenen en glitter make-up.", }, discrete_itching = { cause = "Oorzaak: kleine insecten met scherpe tandjes.", cure = "Behandeling: patiënt drinkt een farmaceutische klodder anti-jeuksiroop.", name = "Onregelmatige jeuk", symptoms = "Symptomen: krabben met lokale ontstekingen tot gevolg.", }, the_squits = { cause = "Oorzaak: het eten van aan de binnenkant van de oven aangebakken stukjes pizza.", cure = "Behandeling: een plakkerige mix van draderige chemicaliën drinken om de binnenkant van de patiënt weer wat te laten stollen.", name = "Sproeipoep", symptoms = "Symptomen: ugh. Dat kun je vast zelf wel bedenken.", }, spare_ribs = { cause = "Oorzaak: op koude stenen vloeren zitten.", cure = "Behandeling: het stukje rib wordt verwijderd door twee chirurgen en aan de patiënt in een zakje meegegeven.", name = "Spare Ribs", --its has the same double meaning as in English. symptoms = "Symptomen: een iets te grote borstkas.", }, king_complex = { cause = "Oorzaak: de geest van de King neemt bezit van de patiënt.", cure = "Behandeling: een psychiater vertelt de patiënt hoe belachelijk hij of zij eruit ziet.", name = "King Complex", symptoms = "Symptomen: een dieet van cheeseburgers en felgekleurd suedè schoeisel.", }, pregnancy = { cause = "Oorzaak: stroomuitval in steden.", cure = "Behandeling: de baby wordt verwijderd in de operatiekamer en aan de patiënt gegeven.", name = "Zwangerschap", symptoms = "Symptomen: veel eten met bolle buik tot gevolg.", }, fake_blood = { cause = "Oorzaak: de patiënt is het slachtoffer van een flauwe grap.", cure = "Behandeling: de kalmerende stem van een psychiater is het enige dat dit kan oplossen.", name = "Nepbloed", symptoms = "Symptomen: rode vloeistof in aderen die oplost bij contact met kleding.", }, invisibility = { cause = "Oorzaak: gebeten worden door een radioactieve (en onzichtbare) mier.", cure = "Behandeling: een fel drankje uit de apotheek toont weer de ware kleuren van de patiënt.", name = "Onzichtbaarheid", symptoms = "Symptomen: patiënten lijden er niet onder. Sommigen maken misbruik van de situatie door grapjes uit te halen met hun familie.", }, golf_stones = { cause = "Oorzaak: blootstelling aan giftig gas uit golfballen.", cure = "Behandeling: verwijdering via operatie door twee chirurgen.", name = "Golfstenen", symptoms = "Symptomen: ijlen en grote schaamte.", }, infectious_laughter = { cause = "Oorzaak: klassieke comedyseries.", cure = "Behandeling: een gekwalificeerde psychiater vertelt de patiënt hoe verschrikkelijk zijn ziekte wel niet is.", name = "Aanstekelijke lach", symptoms = "Symptomen: constant gegniffel en het herhalen van flauwe kantlijngrapjes.", }, baldness = { cause = "Oorzaak: liegen en verhalen verzinnen om populair te zijn.", cure = "Behandeling: het haar wordt naadloos vastgesmolten in het hoofd van de patiënt met deze pijnlijke machine.", name = "Kaalheid", symptoms = "Symptomen: een glimmend hoofd en schaamte.", }, heaped_piles = { cause = "Oorzaak: rondhangen bij het koffieautomaat.", cure = "Behandeling: een prettig, krachtig drankje met een zuurgraad waarvan de kruisbessen van binnenuit oplossen.", name = "Kuise kruisbessen", symptoms = "Symptomen: het is voor de patiënt net alsof hij op een zak knikkers zit.", }, unexpected_swelling = { cause = "Oorzaak: iets onverwachts.", cure = "Behandeling: de zwelling kan alleen worden doorgeprikt door twee chirurgen.", name = "Onverwachte zwelling", symptoms = "Symptomen: een zwelling.", }, jellyitis = { cause = "Oorzaak: gelatinerijk dieet en teveel beweging.", cure = "Behandeling: de patiënt wordt in een gelatinetank gegoten om daar een beetje te stollen.", name = "Gelatinis", symptoms = "Symptomen: uitzonderlijke drillerigheid en vallen.", }, hairyitis = { cause = "Oorzaak: overmatige blootstelling aan de maan.", cure = "Behandeling: een elektrolysemachine verwijdert het haar en dicht de poriën.", name = "Pilitis", symptoms = "Symptomen: de zieke ervaart een betere reukzin.", }, alien_dna = { cause = "Oorzaak: gezichtzuigers met het bloed van intelligente aliens.", cure = "Behandeling: het DNA wordt machinaal verwijderd, de buitenaardse elementen worden gefilterd en het DNA wordt snel weer teruggepompt.", name = "Buitenaards DNA", symptoms = "Symptomen: langzame monsterachtige metamorfose en een drang tot het vernietigen van onze steden.", }, bloaty_head = { cause = "Oorzaak: het opsnuiven van kaas en het drinken van ongezuiverd regenwater.", cure = "Behandeling: het opgezwollen hoofd wordt doorgeprikt en weer opgeblazen met een handige machine.", name = "Plofkop", symptoms = "Symptomen: een enorm opgezwollen hoofd; zeer ongemakkelijk voor de zieke.", }, gastric_ejections = { cause = "Oorzaak: pittig Mexicaans of Indiaas eten.", cure = "Behandeling: een speciaal bindend drankje zorgt ervoor dat er niets meer uit wordt geworpen.", name = "Gastrische uitstoot", symptoms = "Symptomen: halfverteerd voedsel wordt in willekeurige clusters uit de patiënt gestoten.", }, uncommon_cold = { cause = "Oorzaak: deeltjes snot in de lucht.", cure = "Behandeling: een grote slok speciale hoestdrank uit de apotheek, gemaakt van speciale ingrediënten.", name = "Verguurheid", symptoms = "Symptomen: loopneus, niezen en verkleurde longen.", }, corrugated_ankles = { cause = "Oorzaak: het rijden over infrastructurele aanpassingen die het verkeer behoren te vertragen.", cure = "Behandeling: het drinken van een licht bijtend kruidenmengsel zou de enkels weer recht moeten trekken.", name = "Geribbelde enkels", symptoms = "Symptomen: schoeisel zit niet zo lekker.", }, sleeping_illness = { cause = "Oorzaak: een overactieve slaapklier in het gehemelte.", cure = "Behandeling: een hoge dosis oppepmiddel wordt door een zuster toegediend.", name = "Slaapkwaal", symptoms = "Symptomen: een onbedwingbare zin om gewoon ergens in slaap te vallen.", }, sweaty_palms = { cause = "Oorzaak: angst voor sollicitaties.", cure = "Behandeling: een psychiater moet de patiënt overtuigen dat dit geen echte ziekte is.", name = "Zweethanden", symptoms = "Symptomen: de hand van de patiënt voelt aan als een natte spons.", }, serious_radiation = { cause = "Oorzaak: plutoniumisotopen verwarren met kauwgom.", cure = "Behandeling: de patiënt wordt voor grondige reiniging in een ontsmettingscabine geplaatst.", name = "Zware straling", symptoms = "Symptomen: patiënten met deze aandoening voelen zich heel, heel erg ziek.", }, gut_rot = { cause = "Oorzaak: tante Triens Vrolijke Whiskey Hoestsiroop.", cure = "Behandeling: een zuster dient een selectie opgeloste chemicaliën toe om het buikje van binnen te bekleden.", name = "Buikrot", symptoms = "Symptomen: geen hoest, maar ook geen maagwand.", }, iron_lungs = { cause = "Oorzaak: smog van de binnenstad vermengd met kebabrestjes.", cure = "Behandeling: twee chirurgen verwijderen de massieve longen in een operatiekamer.", name = "IJzeren longen", symptoms = "Symptomen: vuurspuwen en luid onder water kunnen schreeuwen.", }, broken_wind = { cause = "Oorzaak: een loopband gebruiken net na de maaltijd.", cure = "Behandeling: in de apotheek wordt er snel een zware mix van speciale waterige atomen gedronken.", name = "Wind tegen", symptoms = "Symptomen: de patiënt verschijnt altijd chagrijnig op het werk. Dat geld ook voor mensen die dezelfde kant op fietsen.", }, kidney_beans = { cause = "Oorzaak: kauwen op ijsklontjes uit drankjes.", cure = "Behandeling: twee chirurgen verwijderen het froliet zonder gevoelige lichaamsdelen aan te raken.", name = "Nierfroliet", --combinatie van Nierstenen en synoniem Nefroliet symptoms = "Symptomen: pijn en de patiënt moet heel vaak naar het toilet.", }, transparency = { cause = "Oorzaak: het aflikken van bladfolie-lipjes van vers geopende zuivelproducten.", cure = "Behandeling: een drankje uit de apotheek, gemaakt van speciaal gekoeld en gekleurd water, verhelpt deze ziekte.", name = "Doorzichtigheid", symptoms = "Symptomen: organen worden doorzichtig en zien er ranzig uit.", }, broken_heart = { cause = "Oorzaak: iemand die rijker, jonger en slanker is dan de patiënt.", cure = "Behandeling: twee chirurgen openen de borstkas en herstellen ademloos en liefdevol het hart.", name = "Gebroken hart", symptoms = "Symptomen: huilen en RSI door het constante verscheuren van vakantiefoto's.", }, slack_tongue = { cause = "Oorzaak: eindeloos geklets over soaps.", cure = "Behandeling: de tong wordt in de Snijmachine geplaatst en snel, efficiënt en pijnlijk verwijderd.", name = "Lamme tong", symptoms = "Symptomen: tong zwelt op tot vijf maal de normale lengte.", }, tv_personalities = { cause = "Oorzaak: dagtelevisie.", cure = "Behandeling: een getrainde psychiater moet de patiënt overtuigen zijn televisie te verkopen en een radio aan te schaffen.", name = "TV persoonlijkheid", symptoms = "Symptomen: de patiënt denkt dat hij of zij een kookprogramma kan presenteren.", }, ruptured_nodules = { cause = "Oorzaak: bungeejumpen in de kou.", cure = "Behandeling: twee gekwalificeerde chirurgen verwijderen de knobbels met vaste hand.", name = "Gebarsten knobbels", symptoms = "Symptomen: niet lekker kunnen liggen.", }, fractured_bones = { cause = "Oorzaak: van hoge dingen afvallen en op beton landen.", cure = "Behandeling: er wordt gips gezet en vervolgens verwijderd met een lasergestuurde machine.", name = "Botfractuur", symptoms = "Symptomen: luid gekraak en betreffend ledemaat niet meer kunnen gebruiken.", }, chronic_nosehair = { cause = "Oorzaak: het ophalen van de neus in verachting voor mensen die slechter af zijn dan de patiënt.", cure = "Behandeling: een smerig, haar verwijderend drankje wordt door een zuster in de apotheek klaargemaakt en wordt door de patiënt gedronken.", name = "Chronisch neushaar", symptoms = "Symptomen: neushaar waarin een marter zich zou kunnen nestelen.", }, } policy = { header = "Ziekenhuisbeleid", diag_termination = "diagnose stoppen", sliders = { guess = "GOKKEN", send_home = "WEGSTUREN", stop = "STOP PROCEDURE", staff_room = "GA NAAR DE PERSONEELSRUIMTE", }, diag_procedure = "diagnostische procedures", staff_rest = "personeel laten rusten", staff_leave_rooms = "personeel verlaat kamers", } competitor_names = { [1] = "ORAC", [2] = "HAL", [3] = "COLOSSUS", [4] = "MULTIVAC", [5] = "HOLLY", [6] = "DEEP THOUGHT", [7] = "ZEN", [8] = "LEON", [9] = "AKIRA", [10] = "SAM", [11] = "CHARLIE", [12] = "JAYNE", [13] = "ARTHUR", [14] = "MAGNUS", [15] = "MOTHER", [16] = "SAL", [17] = "MARVIN", [18] = "JOSHUA", [19] = "DANEEL", [20] = "OLIVAW", [21] = "NIC", [22] = "DANEEL", [23] = "OLIVAW", [24] = "NIC", } main_menu = { exit = "Afsluiten", custom_level = "Uitzendwerk", new_game = "Nieuwe carrière", load_game = "Spel laden", options = "Instellingen", version = "Versie: ", savegame_version = "Savegame versie: ", continue = "Zet spel voort", } confirmation = { --spaces on the end make the text fit properly in text windows quit = "Weet je zeker dat je het spel wilt verlaten? ", return_to_blueprint = "Weet je zeker dat je terug wil gaan naar de blauwdrukmodus? ", needs_restart = "Om deze instellingen toe te passen, moet CorsixTH opnieuw opstarten. Niet opgeslagen vooruitgang zal hierdoor verloren gaan. Weet je zeker dat je dit wil doen? ", overwrite_save = "Er is hier al een spel opgeslagen. Weet je zeker dat je het bestaande spel wilt overschrijven? ", delete_room = "Weet je zeker dat je deze kamer wilt verwijderen? ", sack_staff = "Weet je zeker dat je dit personeelslid wilt ontslaan? ", replace_machine = "Weet je zeker dat je de %s wilt vervangen voor $%d? ", abort_edit_room = "Je bent een ruimte aan het bouwen of aanpassen. Wanneer alle benodigde objecten geplaatst zijn, is de ruimte af. Zo niet, dan wordt de ruimte vernietigd. ", restart_level = "Weet je zeker dat je het level opnieuw wilt beginnen? ", maximum_screen_size = "De resolutie die je hebt ingevoerd is groter dan 3000x2000. Een hoge resolutie is mogelijk, mits je hardware goed genoeg is om een speelbare framerate te behalen. Weet je zeker dat je wilt doorgaan?", music_warning = "Voordat je MP3's gaat gebruiken als ingame muziek, heb je smpeg.dll (of gelijkwaardig voor je systeem) nodig, anders werkt de muziek niet. Wil je doorgaan?", } menu_display = { mcga_lo_res = " LAGE RES ", shadows = " SHADUWEN ", high_res = " HOGE RES ", } menu_list_window = { back = "Terug", save_date = "Gewijzigd op", name = "Naam", } menu_options_volume = { [50] = " 50% ", [100] = " 100% ", [30] = " 30% ", [60] = " 60% ", [90] = " 90% ", [10] = " 10% ", [20] = " 20% ", [40] = " 40% ", [80] = " 80% ", [70] = " 70% ", } menu_file_load = { [1] = " GAME 1 ", [2] = " GAME 2 ", [3] = " GAME 3 ", [4] = " GAME 4 ", [5] = " GAME 5 ", [6] = " GAME 6 ", [7] = " GAME 7 ", [8] = " GAME 8 ", } menu_file = { quit = " (SHIFT+Q) AFSLUITEN ", save = " (SHIFT+S) OPSLAAN ", load = " (SHIFT+L) LADEN ", restart = " (SHIFT+R) HERSTARTEN ", } high_score = { categories = { deaths = "DODEN", total_value = "TOTALE WAARDE", money = "RIJKSTE", cures = "GENEZEN", visitors = "MEESTE BEZOEKERS", staff_number = "MEESTE PERSONEEL", cure_death_ratio = "GENEZINGEN VS DODEN", patient_happiness = "KLANTTEVREDENHEID", staff_happiness = "PERSONEELSTEVREDENHEID", salary = "HOOGSTE SALARIS", clean = "REINHEID", }, player = "SPELER", score = "SCORE", pos = "POS", best_scores = "HALL OF FAME", worst_scores = "HALL OF SHAME", killed = "Gedood", } --[[ Ik denk niet dat het belangrijk is om dit stukje te vertalen. Als iemand geen Engels spreekt, zou hij sowieso niet met debug tools moeten zitten klooien. ]]-- menu_debug = { porter_pagers = " PORTER PAGERS ", --[[ Wat? "portier biepers"? --]] display_pager = " TOON PAGER ", --[[ Een pager is zo een apparaatje dat in de nineties razend populair was... --]] disable_salary_raise = " SALARISVERHOGINGEN UITSCHAKELEN ", display_big_cells = " BIG CELLS TONEN ", make_debug_patient = " DEBUG PATIENT ", mapwho_checking = " MAPWHO CHECKING ", sprite_viewer = " SPRITE VIEWER ", keep_clear_cells = " LEGE CELLS BEHOUDEN ", dump_strings = " STRINGDUMP MAKEN ", machine_pagers = " MACHINE PAGERS ", remove_objects = " VOORWERPEN VERWIJDEREN ", enter_nav_debug = " GA NAAR NAV DEBUG ", lose_game_anim = { [1] = " VERLOREN 1 ANIM ", [2] = " VERLOREN 2 ANIM ", [3] = " VERLOREN 3 ANIM ", [4] = " VERLOREN 4 ANIM ", [5] = " VERLOREN 5 ANIM ", [6] = " VERLOREN 6 ANIM ", [7] = " VERLOREN 7 ANIM ", }, map_overlay = " MAP OVERLAYS ", display_room_status = " KAMERSTATUS TONEN ", win_game_anim = " SPEL GEWONNEN ANIM ", object_cells = " VOORWERP CELLS ", limit_camera = " CAMERABEGRENZING ", nav_bits = " NAV BITS ", remove_walls = " MUREN ONZICHTBAAR MAKEN ", dump_gamelog = " (CTRL+D) GAME LOG DUMPEN ", win_level_anim = " LEVEL GEWONNEN ANIM ", pixbuf_cells = " PIXBUF CELLS ", transparent_walls = " (X) TRANSPARANTE MUREN ", show_help_hotspot = " HELP HOTSPOTS TONEN ", show_nav_cells = " NAV CELLS TONEN ", entry_cells = " ENTRY CELLS ", plant_pagers = " PLANT PAGERS ", lua_console = " (F12) LUA CONSOLE ", make_debug_fax = " DEBUG FAX ", calls_dispatcher = " CALLS DISPATCHER ", cheats = " (F11) CHEATS ", jump_to_level = " SPRING NAAR LEVEL ", debug_script = " (SHIFT + D) LAAT FOUTSCRIPT LOPEN ", connect_debugger = " (CTRL + C) MAAK VERBINDING MET LUA DBGp SERVER ", } drug_companies = { [1] = "Machtige Medicatie", [2] = "GeneesGoed", [3] = "Pimpelpaarse Kruis", [4] = "Per Vers BV.", [5] = "OmniPharma VOF", } graphs = { deaths = "Doden", money_in = "Geld bij", money_out = "Geld af", visitors = "Bezoekers", wages = "Salaris", balance = "Saldo", time_spans = { [1] = "1 Jaar", [2] = "12 Jaar", [3] = "48 Jaar", }, cures = "Genezingen", reputation = "Reputatie", } menu_file_save = { } months = { [1] = "Jan", [2] = "Feb", [3] = "Maa", [4] = "Apr", [5] = "Mei", [6] = "Jun", [7] = "Jul", [8] = "Aug", [9] = "Sep", [10] = "Okt", [11] = "Nov", [12] = "Dec", } date_format.daymonth = "%1% %2:months%" menu_options = { game_speed = " SNELHEID ", sound_vol = " VOLUME GELUID ", music_vol = " VOLUME MUZIEK ", announcements = " OMROEPBERICHTEN ", lock_windows = " VENSTERS VASTZETTEN ", sound = " (ALT+S) GELUID ", announcements_vol = " (ALT+A) VOLUME OMROEPBERICHTEN ", music = " (ALT+M) MUZIEK ", autosave = " AUTOSAVE ", jukebox = " (J) JUKEBOX ", edge_scrolling = " RANDSCROLLEN ", adviser_disabled = " (SHIFT+A) ADVISEUR ", warmth_colors = " WARMTE KLEUREN ", twentyfour_hour_clock = " 24 UUR KLOK ", wage_increase = " SALARIS VERZOEKEN ", } menu_options_wage_increase = { deny = " AFWIJZEN ", grant = " TOEKENNEN ", } menu_options_game_speed = { pause = " PAUZE ", slowest = " EN NOG LANGZAMER ", slower = " LANGZAAM ", normal = " NORMAAL ", max_speed = " MAX SNELHEID ", and_then_some_more = " EN NOG EEN BEETJE ", } menu_options_warmth_colors = { choice_1 = " ROOD ", choice_2 = " BLAUW, GROEN EN ROOD ", choice_3 = " GEEL, ORANJE EN ROOD ", } menu = { debug = " DEBUG ", display = " BEELD ", file = " BESTAND ", options = " OPTIES ", charts = " OVERZICHTEN ", } rooms_short = { ultrascan = "Echoscopie", research_room = "Laboratorium", fracture_clinic = "Gipskamer", gps_office = "Spreekkamer", destroyed = "Vernietigd", staffroom = "Personeelsruimte", jelly_vat = "Gelatinetank", scanner = "Scanner", decontamination = "Ontsmetting", pharmacy = "Apotheek", cardiogram = "Cardio", reception = "Receptie", training_room = "Klaslokaal", corridor_objects = "Gangartikelen", operating_theatre = "Operatiekamer", dna_fixer = "DNA hersteller", ward = "Slaapzaal", psychiatric = "Psychiatrie", hair_restoration = "Haarrestauratie", general_diag = "Algemene diagnose", inflation = "Inflatie", tongue_clinic = "Lamme tongkliniek", toilets = "Toiletten", electrolysis = "Elektrolyse", x_ray = "Röntgenkamer", blood_machine = "Bloedmachine", } object = { chair = "Stoel", litter = "Afval", sofa = "Sofa", operating_table = "Operatietafel", bed2 = "Bed", bench = "Bank", scanner = "Scanner", couch = "Sofa", blood_machine = "Bloedmachine", table1 = "Tafel", video_game = "Videospel", lamp = "Lamp", op_sink2 = "Wastafel", door = "Deur", auto_autopsy = "Auto Autopsie", reception_desk = "Receptie", hair_restorer = "Haarrestaurateur", projector = "Projector", crash_trolley = "Werktafel", tv = "Televisie", ultrascanner = "Echo apparaat", surgeon_screen = "Omkleedscherm", litter_bomb = "Afvalbom", inflator = "Compressor", table2 = "Tafel", desk = "Bureau", pool_table = "Biljarttafel", x_ray_viewer = "Röntgenscherm", radiation_shield = "Radiatieschild", bed = "Bed", swing_door2 = "Klapdeur", console = "Paneel", op_sink1 = "Wasbak", bookcase = "Boekenkast", drinks_machine = "Frisdrankautomaat", comfortable_chair = "Luie stoel", skeleton = "Geraamte", computer = "Computer", bin = "Prullenbak", pharmacy_cabinet = "Medicijnkast", radiator = "Radiator", cast_remover = "Gipsverwijderaar", atom_analyser = "Pulsmixer", plant = "Plant", jelly_moulder = "Gelatinetank", cardio = "Cardio", toilet = "Toilet", electrolyser = "Elektrolysator", fire_extinguisher = "Brandblusser", bed3 = "Bed", swing_door1 = "Klapdeur", lecture_chair = "Schoolbank", screen = "Screen", toilet_sink = "Wastafel", shower = "Cabine", gates_of_hell = "Poort naar de hel", entrance_right = "Rechterkant ingang", entrance_left = "Linkerkant ingang", slicer = "Snijmachine", dna_fixer = "DNA reparatiemachine", x_ray = "Röntgen", cabinet = "Dossierkast", } pay_rise = { definite_quit = "Niets kan mij hier nog houden. Ik heb hier schoon genoeg van.", regular = { [1] = "Ik ben kapot. Ik moet eens goed uitrusten en een salarisverhoging krijgen van %d, tenzij je graag wil zien hoe ik dit rotbaantje vaarwel zeg.", [2] = "Ik ben erg moe. Ik heb rust nodig en een salarisverhoging van %d naar %d. En snel een beetje, slavendrijver!", [3] = "Kom op! Ik werk me uit de naad. Geef me een bonus van %d, dan blijf ik in je ziekenhuis.", [4] = "Ik ben hier erg ongelukkig. Ik eis een opslag van %d, zodat mijn salaris %d wordt, anders pak ik mijn biezen.", [5] = "Mijn ouders vertelden me dat het salaris van een medicus fantastisch was. Geef me dus een opslag van %d, anders word ik programmeur.", [6] = "Ik ben het zat. Geef me een fatsoenlijk salaris. Een opslag van %d moet genoeg zijn.", }, poached = "Ik heb een aanbod van %d gekregen van %s. Als je me niet hetzelfde betaalt ben ik weg.", } town_map = { number = "Landnummer", not_for_sale = "Niet voor verkoop", chat = "Chatroom", price = "Landprijs", for_sale = "Te koop", owner = "Eigenaar", area = "Gebied", } level_names = { [1] = "Ziekwijk", [2] = "Rustenvreugd", [3] = "Grootzand", [4] = "Uitwijk-aan-Zee", [5] = "Eenwoud", [6] = "Pusch-aan-de-Gaas", [7] = "Groenpoel", [8] = "Manwerf", [9] = "Oostdorp", [10] = "Schakendam", [11] = "Ferekhart", [12] = "Knuppelenburg", [13] = "Laagschorem", [14] = "Klein Hildrecht", [15] = "Diepegraven", } build_room_window = { pick_room_type = "Kies soort", pick_department = "Kies afdeling", cost = "Kosten: ", } insurance_companies = { --[[''VOF'' em ''BV'' regelmatig verwijderd i.v.m. de niet passende tekst.]]-- [1] = "ZwaanBlat BV", [2] = "Oorha", [3] = "FTBA", [4] = "Achweeja", [5] = "Zwemblaas BV", [6] = "Noordelijk Beheer", [7] = "Aagod", [8] = "Leo Katjes NV.", [9] = "Pokkie en Keppie", [10] = "Blij met Blijheid", [11] = "De Familie", out_of_business = "FAILLIET", } menu_file_save = { [1] = " SPEL 1 ", [2] = " SPEL 2 ", [3] = " SPEL 3 ", [4] = " SPEL 4 ", [5] = " SPEL 5 ", [6] = " SPEL 6 ", [7] = " SPEL 7 ", [8] = " SPEL 8 ", } new_game_window = { player_name = "Gebruikersnaam", difficulty = "Selecteer moeilijkheid", hard = "Specialist (Moeilijk)", medium = "Arts (Gemiddeld)", easy = "Assistent (Makkelijk)", start = "Begin", cancel = "Annuleren", tutorial = "Leermodus", option_on = "Aan", option_off = "Uit", caption = "Nieuwe carrière", } calls_dispatcher = { repair = "Reparatie", summary = "%d oproepen, %d toegewezen", close = "Sluiten", watering = "Watergeven @ %d,%d", staff = "%s - %s", } debug_patient_window = { caption = "Debug patiënt", } lua_console = { execute_code = "Uitvoeren", close = "Sluiten", } cheats_window = { cheats = { end_month = "Einde van de maand", emergency = "Creëer noodgeval", vip = "Creëer VIP", win_level = "Win Level", create_patient = "Creëer patiënt", money = "Geld cheat (+ $10.000)", lose_level = "Verlies Level", all_research = "All research cheat", end_year = "Einde van het jaar", earthquake = "Creëer aardbeving", epidemic = "Besmettelijke patient laten verschijnen", toggle_infected = "Aan/uit zetten besmet iconen", }, cheated = { no = "Cheats gebruikt: Nee", yes = "Cheats gebruikt: Ja", }, close = "Sluiten", caption = "Cheats", warning = "Waarschuwing: wanneer je cheat zul je aan het einde van het level geen bonuspunten verdienen", } handyman_window = { all_parcels = "Overal", --Translates to: Everywhere, because the full Dutch translation would be far too long to fit the ingame window parcel = "Gebouw", } original_credits = { [1] = " ", [2] = " ", [3] = " ", [4] = " ", [5] = " ", [6] = " ", [7] = " ", [8] = " ", [9] = " ", [10] = " ", [11] = " ", [12] = ":Designed and Created by", [13] = ":Bullfrog Productions", [14] = " ", [15] = ":Pluto Development Team", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = " ", [29] = " ", [30] = " ", [31] = ":Programming", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = " ", [38] = " ", [39] = " ", [40] = ":Art", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = " ", [47] = " ", [48] = " ", [49] = ":Additional Programming", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = " ", [55] = " ", [56] = " ", [57] = ":Additional Art", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = " ", [66] = " ", [67] = " ", [68] = ":Intro Sequence", [69] = ",", [70] = "Stuart Black", [71] = " ", [72] = " ", [73] = " ", [74] = ":Music and Sound Effects", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = " ", [79] = " ", [80] = " ", [81] = ":Additional Music", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = " ", [86] = " ", [87] = " ", [88] = ":Announcer Voiceover", [89] = ",", [90] = "Rebecca Green", [91] = " ", [92] = " ", [93] = " ", [94] = ":Level Design", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = " ", [101] = " ", [102] = " ", [103] = ":Scripting", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = " ", [109] = " ", [110] = " ", [111] = ":R&D", [112] = " ", [113] = ":Graphics Engine", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = " ", [118] = " ", [119] = " ", [120] = ":R&D Support", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = " ", [127] = " ", [128] = " ", [129] = ":Library and Tools", [130] = " ", [131] = "Dos and Win 95 Library", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = " ", [137] = " ", [138] = " ", [139] = ":Network Library", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = " ", [144] = " ", [145] = " ", [146] = ":Sound Library", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = " ", [151] = " ", [152] = " ", [153] = ":Installer Programming", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = " ", [159] = " ", [160] = " ", [161] = ":Moral Support", [162] = ",", [163] = "Peter Molyneux", [164] = " ", [165] = " ", [166] = " ", [167] = ":Testing Manager", [168] = ",", [169] = "Andy Robson", [170] = " ", [171] = " ", [172] = " ", [173] = ":Lead Testers", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = " ", [178] = " ", [179] = " ", [180] = ":Play Testers", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = " ", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = " ", [203] = "And all our other Work Experience Play Testers", [204] = " ", [205] = " ", [206] = " ", [207] = ":Technical Support", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = " ", [213] = " ", [214] = " ", [215] = ":Marketing", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = " ", [220] = " ", [221] = " ", [222] = ":With thanks to:", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = " ", [229] = " ", [230] = " ", [231] = ":PR", [232] = ",", [233] = "Cathy Campos", [234] = " ", [235] = " ", [236] = " ", [237] = ":Documentation", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = " ", [244] = " ", [245] = " ", [246] = ":Documentation & Packaging Design", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = " ", [251] = " ", [252] = " ", [253] = ":Localisation Project Manager", [254] = ",", [255] = "Carol Aggett", [256] = " ", [257] = " ", [258] = " ", [259] = ":Localisation", [260] = ",", [261] = "Sandra Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = " ", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = " ", [268] = "C.T.O. S.p.A. Zola Predosa (BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = " ", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Martinez", [276] = " ", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = " ", [281] = " ", [282] = " ", [283] = ":Production", [284] = ",", [285] = "Rachel Holman", [286] = " ", [287] = " ", [288] = " ", [289] = ":Producer", [290] = ",", [291] = "Mark Webley", [292] = " ", [293] = " ", [294] = " ", [295] = ":Associate Producer", [296] = ",", [297] = "Andy Nuttall", [298] = " ", [299] = " ", [300] = " ", [301] = ":Operations", [302] = ",", [303] = "Steve Fitton", [304] = " ", [305] = " ", [306] = " ", [307] = ":Company Administration", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":Company Management", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":All at Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":Special Thanks to", [332] = ",", [333] = "Everyone at Frimley Park Hospital", [334] = " ", [335] = ":Especially", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = " ", [340] = " ", [341] = " ", [342] = ":Keep On Thinking", [343] = " ", [344] = " ", [345] = " ", [346] = " ", [347] = " ", [348] = " ", [349] = " ", [350] = " ", [351] = " ", [352] = " ", [353] = " ", [354] = " ", [355] = " ", [356] = " ", [357] = " ", [358] = " ", [359] = " ", [360] = " ", [361] = ".", } CorsixTH-0.61/CorsixTH/Lua/languages/english.lua000066400000000000000000001030541321660673500215050ustar00rootroot00000000000000--[[ Copyright (c) 2010-2014 Manuel "Roujin" Wolf, Edvin "Lego3" Linge et al Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Language("English", "en", "eng") Inherit("original_strings", 0) ------------------------------- OVERRIDE ---------------------------------- adviser.warnings.money_low = "Your money is getting low!" -- Funny. Exists in German translation, but not existent in english? -- TODO: tooltip.graphs.reputation -- this tooltip talks about hospital value. Actually it should say reputation. -- TODO: tooltip.status.close -- it's called status window, not overview window. -- tooltip.staff_list.next_person, prev_person is rather next/prev page (also in german, maybe more languages?) tooltip.staff_list.next_person = "Show next page" tooltip.staff_list.prev_person = "Show previous page" tooltip.status.reputation = "Your Reputation should not be less than %d. Currently it's %d" tooltip.status.balance = "Your bank balance should not be less than %d. Currently it's %d" -- The originals of these two contain one space too much fax.emergency.cure_not_possible_build = "You will need to build a %s" fax.emergency.cure_not_possible_build_and_employ = "You will need to build a %s and employ a %s" fax.emergency.num_disease = "There are %d people with %s and they require immediate attention." adviser.goals.lose.kill = "Kill another %d patients to lose the level!" -- Improve tooltips in staff window to mention hidden features tooltip.staff_window.face = "This person's face - click to open management screen" tooltip.staff_window.center_view = "Left click to zoom to staff, right click to cycle through staff members" -- These strings are missing in some versions of TH (unpatched?) confirmation.restart_level = "Are you sure you want to restart the level?" -- TODO adviser.multiplayer.objective_completed -- TODO adviser.multiplayer.objective_failed -- Replace Billy Savile -- this is only relevant to the English game so does not need adding -- in other language files vip_names = { [6] = "Sir Lancelot Spratt", } -- A small error in the introduction text of level 2 introduction_texts.level2 = "There is a greater variety of ailments in this area. Set up your hospital to deal with more patients, " .. "and plan to build a Research Department. Remember to keep your establishment clean, and try to get your " .. "reputation as high as possible - you'll be dealing with diseases like Slack Tongue, so you'll need a Slack " .. "Tongue Clinic. You can also build a Cardiogram to help you diagnose new illnesses. Both these rooms will " .. "need to be researched before you can build them. Now you can also buy extra plots of land to expand your " .. "hospital - use the Town map for this. Aim for a reputation of 300 a bank balance of $10,000 and 40 people cured." -- An override for the squits becoming the the squits see issue 1646 adviser.research.drug_improved_1 = "%s drug has been improved by your Research Department." ------------------------------- NEW STRINGS ------------------------------- date_format = { daymonth = "%1% %2:months%", } object.litter = "Litter" tooltip.objects.litter = "Litter: Left on the floor by a patient because he did not find a bin to throw it in." object.rathole = "Rathole" tooltip.objects.rathole = "Home of a rat family that found your hospital dirty enough to live here." tooltip.fax.close = "Close this window without deleting the message" tooltip.message.button = "Left click to open message" tooltip.message.button_dismiss = "Left click to open message, right click to dismiss it" tooltip.casebook.cure_requirement.hire_staff = "You need to employ staff to handle this treatment" tooltip.casebook.cure_type.unknown = "You do not yet know how to treat this disease" tooltip.research_policy.no_research = "No research is being carried out in this category at the moment" tooltip.research_policy.research_progress = "Progress towards the next discovery in this category: %1%/%2%" menu["player_count"] = "PLAYER COUNT" menu_file = { load = " (SHIFT+L) LOAD ", save = " (SHIFT+S) SAVE ", restart = " (SHIFT+R) RESTART", quit = " (SHIFT+Q) QUIT " } menu_options = { sound = " (ALT+S) SOUND ", announcements = " (ALT+A) ANNOUNCEMENTS ", music = " (ALT+M) MUSIC ", jukebox = " (J) JUKEBOX ", lock_windows = " LOCK WINDOWS ", edge_scrolling = " EDGE SCROLLING ", adviser_disabled = " (SHIFT+A) ADVISER ", warmth_colors = " WARMTH COLOURS ", wage_increase = " WAGE REQUESTS", twentyfour_hour_clock = " 24 HOUR CLOCK " } menu_options_game_speed = { pause = " (P) PAUSE ", slowest = " (1) SLOWEST ", slower = " (2) SLOWER ", normal = " (3) NORMAL ", max_speed = " (4) MAX SPEED ", and_then_some_more = " (5) AND THEN SOME MORE ", } menu_options_warmth_colors = { choice_1 = " RED ", choice_2 = " BLUE GREEN RED ", choice_3 = " YELLOW ORANGE RED ", } menu_options_wage_increase = { grant = " GRANT ", deny = " DENY ", } -- Add F-keys to entries in charts menu (except briefing), also town_map was added. menu_charts = { bank_manager = " (F1) BANK MANAGER ", statement = " (F2) STATEMENT ", staff_listing = " (F3) STAFF LISTING ", town_map = " (F4) TOWN MAP ", casebook = " (F5) CASEBOOK ", research = " (F6) RESEARCH ", status = " (F7) STATUS ", graphs = " (F8) GRAPHS ", policy = " (F9) POLICY ", } menu_debug = { jump_to_level = " JUMP TO LEVEL ", connect_debugger = " (CTRL + C) CONNECT LUA DBGp SERVER ", transparent_walls = " (X) TRANSPARENT WALLS ", limit_camera = " LIMIT CAMERA ", disable_salary_raise = " DISABLE SALARY RAISE ", make_debug_fax = " MAKE DEBUG FAX ", make_debug_patient = " MAKE DEBUG PATIENT ", cheats = " (F11) CHEATS ", lua_console = " (F12) LUA CONSOLE ", debug_script = " (SHIFT + D) RUN DEBUG SCRIPT ", calls_dispatcher = " CALLS DISPATCHER ", dump_strings = " DUMP STRINGS ", dump_gamelog = " (CTRL+D) DUMP GAME LOG ", map_overlay = " MAP OVERLAY ", sprite_viewer = " SPRITE VIEWER ", } menu_debug_overlay = { none = " NONE ", flags = " FLAGS ", positions = " POSITIONS ", heat = " TEMPERATURE ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE FLOOR ", byte_n_wall = " BYTE N WALL ", byte_w_wall = " BYTE W WALL ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " PARCEL ", } menu_player_count = { players_1 = " 1 PLAYER ", players_2 = " 2 PLAYERS ", players_3 = " 3 PLAYERS ", players_4 = " 4 PLAYERS ", } adviser = { room_forbidden_non_reachable_parts = "Placing the room in this location would result in parts of the hospital not being reachable.", warnings = { no_desk = "You should build a reception desk and hire a receptionist at some point!", no_desk_1 = "If you want patients to come to your hospital, you will need to hire a receptionist and build her a desk to work at!", no_desk_2 = "Well done, that must be a world record: nearly a year and no patients! If you want to continue as Manager of this hospital, you will need to hire a receptionist and build a reception desk for her to work from!", no_desk_3 = "That's just brilliant, nearly a year and you don't have a staffed reception! How do you expect to get any patients, now get it sorted out and stop messing around!", no_desk_4 = "A Receptionist needs to have her own work station to greet your patients as they arrive", no_desk_5 = "Well it's about time, you should start to see some patients arriving soon!", no_desk_6 = "You have a receptionist, so how about building a reception desk for her to work from?", no_desk_7 = "You've built the reception desk, so how about hiring a receptionist? You won't see any patients until you get this sorted out you know!", cannot_afford = "You don't have enough money in the bank to hire that person!", -- I can't see anything like this in the original strings cannot_afford_2 = "You don't have enough money in the bank to make that purchase!", falling_1 = "Hey! that is not funny, watch where you click that mouse; someone could get hurt!", falling_2 = "Stop messing about, how would you like it?", falling_3 = "Ouch, that had to hurt, someone call a Doctor!", falling_4 = "This is an Hospital, not a Theme Park!", falling_5 = "This is not the place for knocking people over, they're ill you know!", falling_6 = "This is not a bowling alley, sick people should not be treated like that!", research_screen_open_1 = "You have to build a Research Department before you can access the Research screen.", research_screen_open_2 = "Research is disabled for the current level.", researcher_needs_desk_1 = "A Researcher needs to have a desk to work at.", researcher_needs_desk_2 = "Your Researcher is pleased that you have allowed him to have a break. If you were intending to have more staff researching, then you need to provide them each with a desk to work from.", researcher_needs_desk_3 = "Each Researcher needs to have his own desk to work from.", nurse_needs_desk_1 = "Each Nurse needs to have her own desk to work from.", nurse_needs_desk_2 = "Your Nurse is pleased that you have allowed her to have a break. If you were intending to have more than one working in the ward, then you need to provide them each with a desk to work from.", low_prices = "You're charging too little for %s. This will bring people to your hospital, but you won't make a lot of profit from each one.", high_prices = "Your charges for %s are high. This will make big profits in the short-term, but ultimately you'll start to drive people away.", fair_prices = "Your charges for %s seem fair and balanced.", patient_not_paying = "A patient left without paying for %s because it's too expensive!", }, cheats = { th_cheat = "Congratulations, you have unlocked cheats!", roujin_on_cheat = "Roujin's challenge activated! Good luck...", roujin_off_cheat = "Roujin's challenge deactivated.", }, } dynamic_info.patient.actions.no_gp_available = "Waiting for you to build a GP's office" dynamic_info.staff.actions.heading_for = "Heading for %s" dynamic_info.staff.actions.fired = "Fired" dynamic_info.patient.actions.epidemic_vaccinated = "I am no longer contagious" progress_report.free_build = "FREE BUILD" fax = { choices = { return_to_main_menu = "Return to the main menu", accept_new_level = "Move on to the next level", decline_new_level = "Continue playing a while longer", }, emergency = { num_disease_singular = "There is 1 person with %s and they require immediate attention.", free_build = "If you are successful your reputation will increase but if you fail your reputation will be seriously dented.", }, vip_visit_result = { remarks = { free_build = { "It is a very nice hospital you have there! Not very hard to get it working without money limitations though, eh?", "I'm no economist, but I think I could run this hospital too if you know what I mean...", "A very well run hospital. Watch out for the recession though! Right... you don't have to worry about that.", } } } } letter = { dear_player = "Dear %s\n", custom_level_completed = "Well done! You've completed all goals on this custom level!", return_to_main_menu = "Would you like to return to the main menu or continue playing?", campaign_level_completed = "Good job! You beat the level. But it's not over yet!\n Would you like a position at %s Hospital?", campaign_completed = "Incredible! You managed to finish all the levels. You can now relax and enjoy filling forums across the Internet of your achievements. Good luck!", campaign_level_missing = "Sorry, but the next level of this campaign seems to be missing. (Name: %s)", } install = { title = "--------------------------------- CorsixTH Setup ---------------------------------", th_directory = "CorsixTH needs a copy of the data files from the original Theme Hospital game (or demo) in order to run. Please use the below selector to locate the Theme Hospital install directory.", ok = "OK", exit = "Exit", cancel = "Cancel", } misc.not_yet_implemented = "(not yet implemented)" misc.no_heliport = "Either no diseases have been discovered yet, or there is no heliport on this map. It might be that you need to build a reception desk and hire a receptionist" main_menu = { new_game = "Campaign", custom_campaign = "Custom Campaign", custom_level = "Single Scenario", continue = "Continue Game", load_game = "Load Game", options = "Settings", map_edit = "Map Editor", savegame_version = "Savegame version: ", version = "Version: ", exit = "Exit", } tooltip.main_menu = { new_game = "Start the first level on the campaign", custom_campaign = "Play a campaign created by the community", custom_level = "Build your hospital in a single scenario", continue = "Continue your latest saved game", load_game = "Load a saved game", options = "Tweak various settings", map_edit = "Create a custom map", exit = "No, no, please don't leave!", quit = "You are about to quit from CorsixTH. Are you sure this is what you want to do?", } load_game_window = { caption = "Load Game (%1%)", } tooltip.load_game_window = { load_game = "Load game %s", load_game_number = "Load game %d", load_autosave = "Load autosave", } custom_game_window = { caption = "Custom Game", free_build = "Free Build", load_selected_level = "Start", } tooltip.custom_game_window = { choose_game = "Click a level to read more about it", free_build = "Tick this box if you want to play without money or winning and losing conditions", load_selected_level = "Load and play the selected level", } custom_campaign_window = { caption = "Custom Campaign", start_selected_campaign = "Start campaign", } tooltip.custom_campaign_window = { choose_campaign = "Choose a campaign to read more about it", start_selected_campaign = "Load the first level of this campaign", } save_game_window = { caption = "Save Game (%1%)", new_save_game = "New Savegame", } tooltip.save_game_window = { save_game = "Overwrite savegame %s", new_save_game = "Enter name for a new savegame", } save_map_window = { caption = "Save Map (%1%)", new_map = "New Map", } tooltip.save_map_window = { map = "Overwrite map %s", new_map = "Enter name for a map savegame", } menu_list_window = { name = "Name", save_date = "Modified", back = "Back", } tooltip.menu_list_window = { name = "Click here to sort the list by name", save_date = "Click here to sort the list by last modification date", back = "Close this window", } options_window = { caption = "Settings", option_on = "On", option_off = "Off", fullscreen = "Fullscreen", resolution = "Resolution", custom_resolution = "Custom...", width = "Width", height = "Height", audio = "Global Audio", customise = "Customise", folder = "Folders", language = "Game language", apply = "Apply", cancel = "Cancel", back = "Back", } tooltip.options_window = { fullscreen = "Whether the game should run in fullscreen or windowed mode", fullscreen_button = "Click to toggle fullscreen mode", resolution = "The resolution the game should run in", select_resolution = "Select a new resolution", width = "Enter desired screen width", height = "Enter desired screen height", apply = "Apply the entered resolution", cancel = "Return without changing the resolution", audio_button = "Turn on or off all game audio", audio_toggle = "Toggle on or off", customise_button = "More settings you can change to customise your game play experience", folder_button = "Folder Options", language = "The language texts in the game will appear in", select_language = "Select the game language", language_dropdown_item = "Choose %s as language", back = "Close the Settings window", } customise_window = { caption = "Custom Settings", option_on = "On", option_off = "Off", back = "Back", movies = "Global Movie Control", intro = "Play Intro Movie", paused = "Build on Paused", volume = "Volume down hotkey", aliens = "Alien Patients", fractured_bones = "Fractured Bones", average_contents = "Average contents", } tooltip.customise_window = { movies = "Global movie control, this will allow you to disable all the movies", intro = "Turn off or on the intro movie, global movies will need to be on if you want the intro movie to play each time you load CorsixTH", paused = "In Theme Hospital the player would only be allowed to use the top menu if the game was paused. That is the default setting in CorsixTH too, but by turning this on everything is allowed while the game is paused", volume = "If the volume down button is opening the casebook as well, turn this on to change the hotkey for the casebook to Shift + C", aliens = "Because of the lack of proper animations we have by default made patients with Alien DNA so that they can only come from an emergency. To allow patients with Alien DNA to visit your hospital, other than by an emergency, turn this off", fractured_bones = "Because of a poor animation we have by default made it so there are no patients with Fractured Bones that are female. To allow female patients with Fractured Bones to visit your hospital, turn this off", average_contents = "If you would like the game to remember what extra objects you usually add when you build rooms, then turn this option on", back = "Close this menu and go back to the Settings Menu", } folders_window = { caption = "Folder Locations", data_label = "TH Data", font_label = "Font", music_label = "MP3's", savegames_label = "Saves", screenshots_label = "Screenshots", -- next four are the captions for the browser window, which are called from the folder setting menu new_th_location = "Here you can specify a new Theme Hospital installation directory. As soon as you choose the new directory the game will be restarted.", savegames_location = "Select the directory you want to use for Saves", music_location = "Select the directory you want to use for your Music", screenshots_location = "Select the directory you want to use for Screenshots", back = "Back", } tooltip.folders_window = { browse = "Browse for folder location", data_location = "The directory of the original Theme Hospital installation, which is required to run CorsixTH", font_location = "Location of a font file that is capable of displaying Unicode characters required by your language. If this is not specified you will not be able to choose languages that need more characters than the original game can supply. Example: Russian and Chinese", savegames_location = "By default, the Saves directory is alongside the config file and will be used for storing saved games in. Should this not be suitable, then you can choose your own, just browse to the directory which you want to use.", screenshots_location = "By default, the Screenshots are stored in a folder alongside the config file. Should this not be suitable, then you can choose your own, just browse to the directory which you want to use.", music_location = "Select a location for your mp3 music files. You must have created the directory already, then browse to the directory which you just created.", browse_data = "Browse for another location of a Theme Hospital installation (current location: %1%)", browse_font = "Browse for another font file ( current location: %1% )", browse_saves = "Browse for another location for your Saves directory ( Current location: %1% ) ", browse_screenshots = "Browse for another location for your Screenshots directory ( Current location: %1% ) ", browse_music = "Browse for another location for your Music directory ( Current location: %1% ) ", no_font_specified = "No font location specified yet!", not_specified = "No folder location specified yet!", default = "Default location", reset_to_default = "Reset the directory to its default location", -- original_path = "The currently chosen directory of the original Theme Hospital installation", -- where is this used, I have left if for the time being? back = "Close this menu and go back to the Settings Menu", } font_location_window = { caption = "Choose font (%1%)", } handyman_window = { all_parcels = "All plots", parcel = "Plot" } tooltip.handyman_window = { parcel_select = "The plot where the handyman accepts tasks, click to change setting" } new_game_window = { caption = "Campaign", player_name = "Player name", option_on = "On", option_off = "Off", difficulty = "Difficulty", easy = "Junior (Easy)", medium = "Doctor (Medium)", hard = "Consultant (Hard)", tutorial = "Tutorial", start = "Start", cancel = "Cancel", } tooltip.new_game_window = { player_name = "Enter the name you wish to be referred to as in the game", difficulty = "Select the difficulty level you want to play the game in", easy = "If you are new to simulation games this is the option for you", medium = "This is the middle way to go if you are unsure what to choose", hard = "If you are used to this kind of game and want more of a challenge, pick this option", tutorial = "Click here to turn on some help to get you started once in the game", start = "Start the game with the chosen settings", cancel = "Oh, I didn't really mean to start a new game!", } lua_console = { execute_code = "Execute", close = "Close", } tooltip.lua_console = { textbox = "Enter Lua code to run here", execute_code = "Run the code you have entered", close = "Close the console", } errors = { dialog_missing_graphics = "Sorry, the demo data files don't contain this dialog.", save_prefix = "Error while saving game: ", load_prefix = "Error while loading game: ", no_games_to_contine = "There are no saved games.", load_quick_save = "Error, cannot load the quicksave as it does not exist, not to worry as we have now created one for you!", map_file_missing = "Could not find the map file %s for this level!", minimum_screen_size = "Please enter a screen size of at least 640x480.", unavailable_screen_size = "The screen size you requested is not available in fullscreen mode.", alien_dna = "NOTE: There are no animations for Alien patients for sitting down, opening or knocking on doors etc. So, like with Theme Hospital to do these things they will appear to change to normal looking and then change back. Patients with Alien DNA will only appear if they are set to in the level file", fractured_bones = "NOTE: The animation for female patients with Fractured Bones is not perfect", could_not_load_campaign = "Failed to load the campaign: %s", could_not_find_first_campaign_level = "Could not find the first level of this campaign: %s", } warnings = { levelfile_variable_is_deprecated = "Notice: The level '%s' contains a deprecated variable definition in the level file." .. "'%LevelFile' has been renamed to '%MapFile'. Please advise the map creator to update the level.", } confirmation = { needs_restart = "Changing this setting requires CorsixTH to restart. Any unsaved progress will be lost. Are you sure you want to do this?", abort_edit_room = "You are currently building or editing a room. If all required objects are placed it will be finished, but otherwise it will be deleted. Continue?", maximum_screen_size = "The screen size you have entered is greater than 3000 x 2000. Larger resolutions are possible, but will require better hardware in order to maintain a playable frame rate. Are you sure you want to continue?", music_warning = "Note: You will need to have smpeg.dll or the equivalent for your operating system, otherwise you will hear no music in the game. Do you want to continue?", } information = { custom_game = "Welcome to CorsixTH. Have fun with this custom map!", no_custom_game_in_demo = "Sorry, but in the demo version you can't play any custom maps.", cannot_restart = "Unfortunately this custom game was saved before the restart feature was implemented.", very_old_save = "There have been a lot of updates to the game since you started this level. To be sure that all features work as intended please consider restarting it.", level_lost = { "Bummer! You failed the level. Better luck next time!", "The reason you lost:", reputation = "Your reputation fell below %d.", balance = "Your bank balance fell below %d.", percentage_killed = "You killed more than %d percent of the patients.", cheat = "This was your choice or did you select the wrong button? So you can't even cheat correctly, not that funny huh?", }, cheat_not_possible = "Cannot use that cheat on this level. You even fail to cheat, not that funny huh?", } tooltip.information = { close = "Close the information dialog", } totd_window = { tips = { "Every hospital needs a reception desk and a GP's office to get going. After that, it depends on what kind of patients are visiting your hospital. A pharmacy is always a good choice, though.", "Machines such as the Inflation need maintenance. Employ a handyman or two to repair your machines, or you'll risk your staff and patients getting hurt.", "After a while, your staff will get tired. Be sure to build a staff room, so they can relax.", "Place enough radiators to keep your staff and patients warm, or they will become unhappy. Use the town map to locate any spots in your hospital that need more heating.", "A doctor's skill level greatly influences the quality and speed of his diagnoses. Place a skilled doctor in your GP's office, and you won't need as many additional diagnosis rooms.", "Juniors and doctors can improve their skills by learning from a consultant in the training room. If the consultant has a special qualification (surgeon, psychiatrist or researcher), he will also pass on this knowledge to his pupil(s).", "Did you try to enter the European emergency number (112) into the fax machine? Make sure your sound is on!", "You can adjust some settings such as the resolution and language in the options window found both in the main menu and ingame.", "You selected a language other than English, but there's English text all over the place? Help us by translating missing texts into your language!", "The CorsixTH team is looking for reinforcements! Are you interested in coding, translating or creating graphics for CorsixTH? Contact us at our Forum, Mailing List or IRC Channel (corsix-th at freenode).", "If you find a bug, please report it at our bugtracker: th-issues.corsix.org", "Each level has certain requirements to fulfill before you can move on to the next one. Check the status window to see your progression towards the level goals.", "If you want to edit or remove an existing room, you can do so with the edit room button found in the bottom toolbar.", "In a horde of waiting patients, you can quickly find out which ones are waiting for a particular room by hovering over that room with your mouse cursor.", "Click on the door of a room to see its queue. You can do useful fine tuning here, such as reordering the queue or sending a patient to another room.", "Unhappy staff will ask for salary rises frequently. Make sure your staff is working in a comfortable environment to keep that from happening.", "Patients will get thirsty while waiting in your hospital, even more so if you turn up the heating! Place vending machines in strategic positions for some extra income.", "You can abort the diagnosis progress for a patient prematurely and guess the cure, if you already encountered the disease. Beware that this may increase the risk of a wrong cure, resulting in death for the patient.", "Emergencies can be a good source for some extra cash, provided that you have enough capacities to handle the emergency patients in time.", }, previous = "Previous Tip", next = "Next Tip", } tooltip.totd_window = { previous = "Display the previous tip", next = "Display the next tip", } debug_patient_window = { caption = "Debug Patient", } cheats_window = { caption = "Cheats", warning = "Warning: You will not get any bonus points at the end of the level if you cheat!", cheated = { no = "Cheats used: No", yes = "Cheats used: Yes", }, cheats = { money = "Money Cheat", all_research = "All Research Cheat", emergency = "Create Emergency", vip = "Create VIP", earthquake = "Create Earthquake", epidemic = "Spawn contagious patient", toggle_infected = "Toggle infected icons", create_patient = "Create Patient", end_month = "End of Month", end_year = "End of Year", lose_level = "Lose Level", win_level = "Win Level", increase_prices = "Increase prices", decrease_prices = "Decrease prices", }, close = "Close", } tooltip.cheats_window = { close = "Close the cheats dialog", cheats = { money = "Adds 10.000 to your bank balance.", all_research = "Completes all research.", emergency = "Creates an emergency.", vip = "Creates a VIP.", earthquake = "Creates an earthquake.", epidemic = "Creates an contagious patient who may cause an epidemic to happen", toggle_infected = "Toggle the infected icons for the active, discovered epidemic", create_patient = "Creates a Patient at the map border.", end_month = "Jumps to the end of the month.", end_year = "Jumps to the end of the year.", lose_level = "Lose the current level.", win_level = "Win the current level.", increase_prices = "Increase all prices by 50% (max. 200%)", decrease_prices = "Decrease all prices by 50% (min. 50%)", } } introduction_texts = { demo = "Welcome to the demo hospital!" .. "Unfortunately the demo version only contains this level. However, there is more than enough to do here to keep you busy for a while!" .. "You will encounter various diseases that require different rooms to cure. From time to time, emergencies may occur. And you will need to research additional rooms using a research room." .. "Your goal is to earn $100,000, have a hospital value of $70,000 and a reputation of 700, while having cured at least 75% of your patients." .. "Make sure your reputation does not fall below 300 and that you don't kill off more than 40% of your patients, or you will lose." .. "Good luck!", } calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d calls; %d assigned", staff = "%s - %s", watering = "Watering @ %d,%d", repair = "Repair %s", close = "Close", } tooltip.calls_dispatcher = { task = "List of tasks - click task to open assigned staff's window and scroll to location of task", assigned = "This box is marked if someone is assigned to the corresponding task.", close = "Close the calls dispatcher dialog", } update_window = { caption = "Update Available!", new_version = "New Version:", current_version = "Current Version:", download = "Go to download page", ignore = "Skip and go to main menu", } tooltip.update_window = { download = "Go to the download page for the very latest version of CorsixTH", ignore = "Ignore this update for now. You will be notified again when you next open CorsixTH", } map_editor_window = { pages = { inside = "Inside", outside = "Outside", foliage = "Foliage", hedgerow = "Hedgerow", pond = "Pond", road = "Road", north_wall = "North wall", west_wall = "West wall", helipad = "Helipad", delete_wall = "Delete walls", parcel_0 = "Parcel 0", parcel_1 = "Parcel 1", parcel_2 = "Parcel 2", parcel_3 = "Parcel 3", parcel_4 = "Parcel 4", parcel_5 = "Parcel 5", parcel_6 = "Parcel 6", parcel_7 = "Parcel 7", parcel_8 = "Parcel 8", parcel_9 = "Parcel 9", camera_1 = "Camera 1", camera_2 = "Camera 2", camera_3 = "Camera 3", camera_4 = "Camera 4", heliport_1 = "Heliport 1", heliport_2 = "Heliport 2", heliport_3 = "Heliport 3", heliport_4 = "Heliport 4", paste = "Paste area", } } -------------------------------- UNUSED ----------------------------------- ------------------- (kept for backwards compatibility) ---------------------- options_window.change_resolution = "Change resolution" tooltip.options_window.change_resolution = "Change the window resolution to the dimensions entered on the left" CorsixTH-0.61/CorsixTH/Lua/languages/finnish.lua000066400000000000000000004517131321660673500215220ustar00rootroot00000000000000--[[ Copyright (c) 2010 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- READ BEFORE DOING ANY CHANGES ------------------------------------------------------------------------------- Since the Finnish language isn't in the original Theme Hospital game, this file is split in two sections (A and B). The first section contains all the new language strings, made by the Corsix-TH team, and the second section contains the override translation of all the original english strings. FORMATING AND FINNISH LETTERS This file contains UTF-8 text. Make sure your editor is set to UTF-8. ------------------------------------------------------------------------------- Table of Contents ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS 1. Global settings 2. Faxes 3. Menu 4. Adviser 5. Main menu 6. Tooltip 7. Letter 8. Installation 9. Level introduction 10. Tips 11. Room descriptions 12. Lua console 13. Information 14. Handyman window 15. Misc -- SECTION B - OLD STRINGS (OVERRIDE) Huge section with all original strings, translated from english. New strings to existing string sets have been placed here instead of section A to keep similar strings close to each other. -----------------------------------------------------------------------------]] ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS ------------------------------------------------------------------------------- -- 1. Global setings (do not edit!) Language("Suomi", "Finnish", "fi", "fin") Inherit("english") -- 2. Faxes fax = { choices = { return_to_main_menu = "Palaa päävalikkoon", accept_new_level = "Siirry seuraavalle tasolle", decline_new_level = "Jatka pelaamista vielä jonkin aikaa", }, } -- 3. Menu menu_debug = { jump_to_level = " SIIRRY TASOLLE ", transparent_walls = " (X) LÄPINÄKYVÄT SEINÄT ", limit_camera = " RAJOITETTU KAMERA ", disable_salary_raise = " ESTÄ PALKAN KOROTTAMINEN ", make_debug_fax = " LUO DEBUG-FAKSI ", make_debug_patient = " LISÄÄ DEBUG-POTILAS ", cheats = " (F11) HUIJAUKSET ", lua_console = " (F12) LUA-KOMENTORIVI ", calls_dispatcher = " TEHTÄVIEN VÄLITYS ", dump_strings = " DUMPPAA TEKSTIT ", dump_gamelog = " (CTRL+D) DUMPPAA PELILOGI ", map_overlay = " KARTTAKERROKSET ", sprite_viewer = " SPRITE-KATSELIN ", } menu_debug_overlay = { none = " TYHJÄ ", flags = " LIPUT ", positions = " SIJAINNIT ", heat = " LÄMPÖTILA ", byte_0_1 = " TAVU 0 & 1 ", byte_floor = " TAVU LATTIA ", byte_n_wall = " TAVU N SEINÄ ", byte_w_wall = " TAVU W SEINÄ ", byte_5 = " TAVU 5 ", byte_6 = " TAVU 6 ", byte_7 = " TAVU 7 ", parcel = " ALUE ", } menu_options_game_speed = { slowest = " (1) HITAIN ", slower = " (2) HITAAMPI ", normal = " (3) NORMAALI ", max_speed = " (4) MAKSIMINOPEUS ", and_then_some_more = " (5) JA VÄHÄN PÄÄLLE ", pause = " (P) PYSÄYTÄ " } menu_options_volume = { [10] = " 10% ", [20] = " 20% ", [30] = " 30% ", [40] = " 40% ", [50] = " 50% ", [60] = " 60% ", [70] = " 70% ", [80] = " 80% ", [90] = " 90% ", [100] = " 100% ", } menu_file_save = { [1] = " PELI 1 ", [2] = " PELI 2 ", [3] = " PELI 3 ", [4] = " PELI 4 ", [5] = " PELI 5 ", [6] = " PELI 6 ", [7] = " PELI 7 ", [8] = " PELI 8 ", } cheats_window = { caption = "Huijaukset", warning = "Varoitus: Et saa yhtään bonuspisteitä tason jälkeen, jos käytät huijauksia!", close = "Sulje", cheated = { no = "Huijauksia käytetty: Ei", yes = "Huijauksia käytetty: Kyllä", }, cheats = { money = "Rahahuijaus", all_research = "Kaikki tutkimus -huijaus", emergency = "Luo hätätilanne", create_patient = "Luo potilas", end_month = "Siirry kuukauden loppuun", end_year = "Siirry vuoden loppuun", lose_level = "Häviä", win_level = "Voita", vip = "Luo VIP", earthquake = "Maanjäristys", }, } debug_patient_window = { caption = "Debug-potilas", } calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d tehtävää; %d välitetty", staff = "%s - %s", watering = "Kastellaan @ %d,%d", repair = "Korjaa %s", close = "Sulje", } -- 4. Adviser adviser = { room_forbidden_non_reachable_parts = "Huoneen sijoittaminen tähän estäisi pääsyn joihinkin sairaalan osiin.", cheats = { th_cheat = "Onnittelut, olet saanut huijaukset käyttöösi! Tai olisit saanut, jos tämä olisi alkuperäinen peli. Kokeile jotain muuta.", crazy_on_cheat = "Voi ei! Kaikki lääkärit ovat tulleet hulluiksi!", crazy_off_cheat = "Huh... lääkärit ovat jälleen tulleet järkiinsä.", roujin_on_cheat = "Roujinin haaste otettu käyttöön! Onnea...", roujin_off_cheat = "Roujinin haaste poistettu käytöstä.", hairyitis_cheat = "Turkinkasvu-huijaus otettu käyttöön!", hairyitis_off_cheat = "Turkinkasvu-huijaus poistettu käytöstä.", bloaty_cheat = "Pallopäisyys-huijaus otettu käyttöön!", bloaty_off_cheat = "Pallopäisyys-huijaus poistettu käytöstä.", }, } -- 5. Main menu main_menu = { custom_level = "Luo oma sairaala", exit = "Lopeta", load_game = "Lataa peli", new_game = "Uusi peli", options = "Asetukset", savegame_version = "Tallennetun pelin versio: ", version = "Versio: ", } load_game_window = { caption = "Lataa peli", } custom_game_window = { caption = "Luo oma sairaala", free_build = "Rakenna vapaasti", } save_game_window = { caption = "Talenna peli", new_save_game = "Uusi tallennus", } menu_list_window = { back = "Takaisin", name = "Nimi", save_date = "Muokattu", } options_window = { fullscreen = "Koko ruutu", width = "Leveys", height = "Korkeus", change_resolution = "Vaihda resoluutio", browse = "Selaa...", new_th_directory = "Tässä voit määrittää uuden Theme Hospital -pelin asennushakemiston. Kun olet valinnut uuden hakemiston, peli käynnistyy uudestaan.", cancel = "Peruuta", back = "Takaisin", } errors = { dialog_missing_graphics = "Pahoittelut, demon pelitiedostot eivät sisällä tämän ikkunan grafiikkaa.", save_prefix = "Virhe tallennettaessa peliä: ", load_prefix = "Virhe ladattaessa peliä: ", map_file_missing = "Tasolle %s ei löydetty karttatiedostoa!", minimum_screen_size = "Ole hyvä ja syötä resoluutio, joka on vähintään 640x480.", maximum_screen_size = "Ole hyvä ja syötä resoluutio, joka on enintään 3000x2000.", unavailable_screen_size = "Syöttämäsi resoluutio ei ole käytettävissä koko ruutu -tilassa.", } new_game_window = { hard = "Konsultti (Vaikea)", cancel = "Peruuta", tutorial = "Esittely", easy = "Harjoittelija (Helppo)", medium = "Tohtori (Keskitaso)", } -- 6. Tooltip tooltip = { objects = { litter = "Roska: Potilas on jättänyt sen lattialle, koska ei löytänyt roskakoria, johon sen olisi voinut heittää", }, totd_window = { previous = "Näytä edellinen vihje", next = "Näytä seuraava vihje", }, main_menu = { new_game = "Aloita uusi peli aivan alusta", custom_level = "Rakenna oma sairaala itse suunnittelemaasi rakennukseen", load_game = "Lataa aiemmin tallennettu peli", options = "Muuta pelin asetuksia", exit = "Ei, ei, ole kiltti äläkä lähde!", }, load_game_window = { load_game = "Lataa peli %s", load_game_number = "Lataa peli numero %d", load_autosave = "Lataa viimeisin automaattitallennus", }, custom_game_window = { free_build = "Valitse tämä, jos haluat pelata ilman rahaa ja mahdollisuutta voittaa tai hävitä", start_game_with_name = "Lataa taso %s", }, save_game_window = { save_game = "Tallenna tallennuksen %s tilalle", new_save_game = "Anna nimi uudelle tallennukselle", }, menu_list_window = { back = "Sulje tämä ikkuna", name = "Järjestä lista nimen mukaan", save_date = "Järjestä lista viimeisimmän muutoshetken mukaan", }, options_window = { fullscreen_button = "Klikkaa kytkeäksesi koko ruudun -tilan päälle tai pois", width = "Syötä peli-ikkunan haluttu leveys", height = "Syötä peli-ikkunan haluttu korkeus", change_resolution = "Muuta ikkunan resoluutio vasemmalla annettujen arvojen mukaiseksi", language = "Valitse kieleksi %s", original_path = "Käytössä oleva Theme Hospital -pelin asennushakemisto", browse = "Selaa hakemistoja valitaksesi uuden Theme Hospital -pelin asennushakemiston", back = "Sulje tämä ikkuna", }, new_game_window = { hard = "Jos olet pelannut tällaista peliä aiemminkin ja kaipaat haastetta, valitse tämä", cancel = "Hups, ei minun oikeasti pitänyt aloittaa uutta peliä!", tutorial = "Jos haluat vähän apua alkuun pääsemisessä, valitse tämä", easy = "Jos tämä on ensimmäinen kertasi tämän tyyppisen pelin parissa, tämä vaikeustaso on sinua varten", medium = "Tämä on kultainen keskitie, jos et ole varma, mitä valitsisit", }, lua_console = { textbox = "Syötä suoritettava Lua-koodi tähän", execute_code = "Suorita syöttämäsi koodi", close = "Sulje komentorivi", }, fax = { close = "Sulje ikkuna poistamatta viestiä", }, message = { button = "Avaa viesti klikkaamalla", button_dismiss = "Klikkaa vasemalla avataksesi viestin, klikkaa oikealla poistaaksesi sen", }, cheats_window = { close = "Sulje huijaukset-ikkuna", cheats = { money = "Lisää 10 000$ pankkitilillesi", all_research = "Saat kaiken tutkimuksen valmiiksi", emergency = "Luo hätätilanteen", create_patient = "Luo potilaan kartan reunalle", end_month = "Siirtää aikaa eteenpäin kuukauden loppuun", end_year = "Siirtää aikaa eteenpäin vuoden loppuun", lose_level = "Häviät tämän tason", win_level = "Voitat tämän tason", vip = "Luo VIP-potilaan", earthquake = "Aiheuttaa maanjäristyksen" }, }, calls_dispatcher = { task = "Tehtävälista - klikkaa tehtävää avataksesi sitä suorittavan henkilökunnan jäsenen ikkunan ja keskittääksesi näkymän tehtävän kohteeseen", assigned = "Tässä on merkki, kun vastaava tehtävä on välitetty jonkun tehtäväksi", close = "Sulje tehtävien välitys -ikkuna", }, casebook = { cure_requirement = { hire_staff = "Sinun täytyy palkata lisää henkilökuntaa tämän taudin hoitamiseksi", }, cure_type = { unknown = "Et vielä tiedä, miten tätä tautia pitää hoitaa", }, }, research_policy = { no_research = "Tämän aiheen parissa ei tehdä tutkimusta tällä hetkellä", research_progress = "Edistyminen kohti seuraavaa löytöä tällä aihealueella: %1%/%2%", }, } -- 7. Letter letter = { dear_player = "Hyvä %s", --%s (player's name) custom_level_completed = "Hienosti tehty! Olet suorittanut kaikki tämän itse laaditun tason tavoitteet!", return_to_main_menu = "Haluatko palata takaisin päävalikkoon vai jatkaa pelaamista?", } -- 8. Installation install = { title = "-------------------------------- CorsixTH asennus --------------------------------", th_directory = "CorsixTH tarvitsee kopion alkuperäisen Theme Hospital -pelin (tai demon) tiedostoista toimiakseen. Ole hyvä ja käytä alla olevaa valitsinta Theme Hospital-pelin asennushakemiston etsimiseen.", exit = "Sulje", } -- 9. Level introductions introduction_texts = { demo = "Tervetuloa demosairaalaan!" .. "Valitettavasti demoversio sisältää ainoastaan tämän tason. Täällä on kuitenkin enemmän kuin tarpeeksi tekemistä!" .. "Kohtaat erilaisia sairauksia, joiden hoitaminen vaatii erilaisia huoneita. Hätätilanteita saattaa tapahtua ajoittain. Lisäksi sinun pitää kehittää lisää huoneita tutkimusosaston avulla." .. "Tavoitteesi on ansaita 100 000$, nostaa sairaalan arvo yli 70 000$:n ja maineesi yli 700:n parantaen samalla vähintään 75% potilaistasi." .. "Pidä huoli, ettei maineesi putoa alle 300:n ja ettei yli 40 prosenttia potilaistasi pääse kuolemaan, tai häviät tason." .. "Onnea!", level1 = "Tervetuloa ensimmäiseen sairaalaasi!//" .. "Pääset alkuun rakentamalla vastaanottopöydän ja yleislääkärin toimiston sekä palkkaamalla vastaanottoapulaisen ja lääkärin. " .. "Sitten vain odotat asiakkaiden saapumista." .. "Olisi hyvä ajatus rakentaa psykiatrin vastaanotto ja palkata lääkäri, joka on erikoistunut psykiatriaan. " .. "Apteekki ja sairaanhoitaja ovat myös tärkeä yhdistelmä potilaidesi parantamiseksi. " .. "Tarkkaile pallopäisyydestä kärsiviä potilaitasi - pumppaushuone hoitaa heidät alta aikayksikön. " .. "Tavoitteenasi on parantaa kaikkiaan 10 potilasta ja varmistaa, ettei maineesi putoa alle 200:n.", level2 = "Tällä alueella on enemmän erilaisia sairauksia kuin edellisellä. " .. "Sairaalasi pitää selvitä suuremmasta potilasmäärästä, ja sinun kannattaa varautua tutkimusosaston rakentamiseen. " .. "Muista pitää laitoksesi puhtaana, ja yritä nostaa maineesi niin korkeaksi kuin mahdollista - alueella on liikkeellä velttokielisyyttä, joten tarvitset kieliklinikan. " .. "Voit myös rakentaa kardiogrammihuoneen auttamaan uusien sairauksien diagnosoinnissa. " .. "Molemmat näistä huoneista täytyy kehittää ennen kuin voit rakentaa niitä. Nyt voit myös ostaa lisää maata sairaalasi laajentamiseksi - Tämä tapahtuu kartta-ikkunassa. " .. "Tavoitteesi ovat 300:n maine, 10 000$ pankissa and 40 parannettua potilasta.", level3 = "Tällä kertaa sairaalasi sijaitsee varakkaalla alueella. " .. "Terveysministeriö odottaa sinun saavan täältä muhkeat voitot. " .. "Alussa sinun täytyy hankkia sairaalallesi hyvä maine. Kun saat sairaalan pyörimään kunnolla, keskity ansaitsemaan niin paljon rahaa kuin pystyt. " .. "Alueella saattaa myös sattua hätätapauksia. " .. "Näissä tilanteissa suuri joukko samalla tavoin loukkaantuneita potilaita saapuu sairaalaasi yhtä aikaa. " .. "Jos onnistut parantamaan heidät annetun aikarajan puitteissa saat lisää mainetta ja ison bonuksen. " .. "Kuningas-kompleksin kaltaisia sairauksia saattaa esiintyä, joten kannattaa budjetoida rahaa leikkaussalin ja vuodeosaston rakentamiseen lähelle toisiaan. " .. "Ansaitse 20 000$ päästäksesi seuraavalle tasolle.", level4 = "Pidä kaikki potilaasi tyytyväisinä, hoida heitä niin tehokkaasti kuin pystyt ja pidä kuolemantapaukset minimissään. " .. "Maineesi on kyseessä, joten pidä huolta, että se pysyy niin korkealla kuin mahdollista. " .. "Älä huolehdi rahasta liikaa - sitä alkaa kyllä tulla lisää maineesi kasvaessa. " .. "Voit myös kouluttaa lääkäreitäsi parantaaksesi heidän osaamistaan. " .. "He saattavat hyvinkin joutua hoitamaan tavallista läpinäkyvämpiä potilaita. " .. "Nosta maineesi yli 500:n.", level5 = "Tästä tulee kiireinen sairaala, joka joutuu hoitamaan laajaa kirjoa sairauksia. " .. "Kaikki lääkärisi ovat vastavalmistuneita, joten on ensiarvoisen tärkeää, että rakennat koulutushuoneen ja nostat lääkäreidesi osaamisen hyväksyttävälle tasolle. " .. "Sinulla on vain kolme konsulttia opettamassa kokematonta henkilökuntaasi, joten pidä heidät tyytyväisinä. " .. "Huomaa myös, että sairaalasi on rakennettu geologisen siirroksen läheisyyteen. " .. "Maanjäristysten riski on siis koko ajan olemassa. " .. "Ne aiheuttavat sattuessaan mittavia vahinkoja laitteillesi ja häiritsevät sairaalasi sujuvaa toimintaa. " .. "Hanki sairaalallesi 400 mainetta ja kasvata 50 000$:n pankkitili onnistuaksesi. Paranna samalla 200 potilasta.", level6 = "Käytä kaikkea oppimaasi ja rakenna sujuvasti toimiva sairaala, joka on taloudellisesti terveellä pohjalla ja pystyy selviytymään kaikista eteen tulevista tilanteista. " .. "Sinun on hyvä tietää, että ilmasto täällä levittää erityisen tehokkaasti bakteereja ja viruksia. " .. "Ellet onnistu pitämään sairaalaasi putipuhtaana, potilaasi voivat joutua epidemioiden kierteeseen. " .. "Pidä huolta, että ansaitset 150 000$ ja sairaalasi arvo ylittää 140 000$.", level7 = "Täällä joudut terveysministeriön tiukan valvonnan kohteeksi, joten pidä huolta, että tilikirjoissasi näkyy suuria voittoja ja maineesi pysyy korkealla. " .. "Meillä ei ole varaa ylimääräisiin kuolemantapauksiin - ne ovat huonoja liiketoiminnan kannalta. " .. "Varmista, että henkilökuntasi on parasta mahdollista ja heillä on kaikki tarvittavat toimitilat ja tarvikkeet. " .. "Tavoitteesi ovat 600 mainetta ja 200 000$ pankkitilillä.", level8 = "Sinun tehtäväsi on rakentaa tehokkain ja tuottavin mahdollinen sairaala. " .. "Ihmiset täällä ovat melko varakkaita, joten heiltä kannattaa kerätä niin paljon rahaa kuin mahdollista. " .. "Muista, että niin kivaa kuin ihmisten parantaminen onkin, tarvitset kipeästi rahaa, jota se tuottaa. " .. "Putsaa näiltä ihmisiltä tuhkatkin pesästä. " .. "Sinun tulee kerätä vaikuttavat 300 000$ läpäistäksesi tason.", level9 = "Täytettyäsi ministeriön pankkitilin ja kustannettuasi uuden limusiinin ministerille itselleen pääset taas luomaan huolehtivan ja hyvin hoidetun sairaalan sairaiden avuksi. " .. "Voit odottaa monia erilaisia ongelmia tällä alueella." .. "Jos sinulla on riittävästi hyvin koulutettua henkilökuntaa ja huoneita, sinulla pitäisi olla kaikki hallinnassa. " .. "Sairaalasi arvon tulee olla 200 000$ ja sinulla pitää olla 400 000$ pankissa. " .. "Pienemmillä summilla et pääse tätä tasoa läpi.", level10 = "Sen lisäksi, että huolehdit kaikista sairauksista, joita täällä päin ilmenee, ministeriö pyytää, että käytät aikaa lääkkeidesi tehon parantamiseen. " .. "Terveysjärjestöt ovat esittäneet joitakin valituksia, joten näyttääkseen hyvältä sairaalasi täytyy varmistaa, että kaikki käyttettävät lääkkeet ovat erittäin tehokkaita. " .. "Varmista myös, että sairaalasi on arvostelun yläpuolella. Pidä kuolemantapausten määrä kurissa. " .. "Ihan vihjeenä: saattaa olla hyvä idea säästää tilaa hyytelömuovainhuoneelle. " .. "Kehitä kaikki lääkkeesi vähintään 80%%:n tehokkuuteen, nosta maineesi vähintään 650:n ja kokoa 500 000$ pankkitilillesi voittaaksesi. ", level11 = "Sinulle tarjoutuu nyt mahdollisuus rakentaa yksi maailman parhaista sairaaloista. " .. "Tämä on erittäin arvostettu asuinalue ja ministeriö haluaa tänne parhaan mahdollisen sairaalan. " .. "Odotamme sinun ansaitsevan runsaasti rahaa, hankkivan erinomaisen maineen sairaalallesi ja pystyvän hoitamaan vaikeimmatkin tapaukset. " .. "Tämä on hyvin tärkeä työ. " .. "Sinun täytyy käyttää kaikkea osaamistasi selvitäksesi tästä kunnialla. " .. "Huomaa, että alueella on havaittu UFOja. Pidä huolta, että henkilökuntasi on valmiina odottamattomien vierailijoiden varalta. " .. "Sairaalasi arvon pitää olla 240 000$, pankkitililläsi pitää olla 500 000$ ja maineesi pitää olla 700.", level12 = "Tämä on kaikkien haasteiden äiti. " .. "Vaikuttuneena saavutuksistasi ministeriö on päättänyt antaa sinulle huipputyön; he haluavat toisen maailmanluokan sairaalan, joka tuottaa mainiosti ja jolla on erinomainen maine. " .. "Sinun odotetaan myös ostavan kaikki saatavilla olevat maa-alueet, parantavan kaikki sairaudet (ja me tosiaan tarkoitamme kaikki) ja voittavan kaikki palkinnot. " .. "Luuletko onnistuvasi?" .. "Ansaitse 650 000$, paranna 750 ihmistä ja hanki 800 mainetta voittaaksesi tämän.", level13 = "Uskomattomat kykysi sairaalanjohtajana ovat tulleet Salaisen erityispalvelun erityisen salaosaston tietoon. " .. "Heillä on sinulle erityinen bonus: täynnä rottia oleva sairaala, joka kaipaa kipeästi tehokasta tuholaistorjuntaa. " .. "Sinun pitää ampua mahdollisimman monta rottaa ennen kuin huoltomiehet siivoavat kaikki roskat pois. " .. "Uskotko olevasi tehtävän tasalla?", level14 = "Vielä yksi haaste on tarjolla - täysin odottamaton yllätyssairaala. " .. "Jos onnistut saamaan tämän paikan toimimaan, olet todellinen mestareiden mestari. " .. "Älä kuvittelekkaan, että tästä tulee helppoa kuin puistossa kävely, sillä tämä on pahin haaste, jonka saat vastaasi. " .. "Paljon onnea!", level15 = "Nyt olemme käsitelleet perusteet sairaalan saamiseksi toimintaan.//" .. "Lääkärisi tarvitsevat kaiken mahdollisen avun diagnosoidessaan osan näistä potilaista. " .. "Voit auttaa heitä rakentamalla toisen diagnoosihuoneen kuten yleislääkärin vastaanoton.", level16 = "Diagnosoituasi potilaita tarvitset hoitohuoneita ja klinikoita heidän parantamisekseen " .. "Apteekista on hyvä aloittaa. Toimiakseen se tarvitsee sairaanhoitajan annostelemaan lääkkeitä.", level17 = "Viimeinen varoituksen sana: pidä tarkasti silmällä mainettasi, sillä se houkuttelee sairaalaasi potilaita niin läheltä kuin kaukaa. " .. "Jos potilaita ei kuole liikaa ja he pysyvät kohtuullisen tyytyväisinä, sinulla ei ole mitään hätää tällä tasolla!//" .. "Olet nyt omillasi. Onnea ja menestystä!.", level18 = "", } -- 10. Tips totd_window = { tips = { "Jokainen sairaala tarvitsee vastaanoton ja yleislääkärin toimiston. Tämän jälkeen kaikki riippuu siitä, mitä potilaasi tarvitsevat. Apteekki on kuitenkin yleensä hyvä alku.", "Kaikki laitteet, kuten verikone, tarvitsevat huoltoa. Palkkaa huoltomies tai pari korjaamaan laitteitasi tai työntekijöillesi ja potilaillesi saattaa käydä hassusti.", "Työntekijäsi kaipaavat välillä taukoja. Muista rakentaa heille henkilökunnan huone, jossa he voivat käydä lepäämässä.", "Asenna sairaalaasi riittävästi lämpöpattereita, jotta henkilökunnalle ja asiakkaille ei tule kylmä.", "Lääkärin taidot vaikuttavat paljon hänen tekemiensä diagnoosien laatuun ja nopeuteen. Palkkaamalla hyvän lääkärin yleislääkärin toimistoon tarvitset vähemmän muita diagnoosihuoneita.", "Tohtorit ja harjoittelijat voivat parantaa taitojaan oppimalla konsulteilta koulutushuoneessa. Jos konsultti on erikoistunut johonkin alaan (kirurgia, psykiatria tai tutkimus) hän siirtää tämän alan osaamisensa myös oppilailleen.", "Oletko kokeillut syöttää yleisen hätänumeron (112) faksiin? Varmista, että sinulla on äänet päällä!", "Asetukset-valikkoa ei ole vielä toteutettu, mutta voit muuttaa asetuksia kuten resoluutiota ja kieltä muokkaamalla config.txt-tiedostoa pelin asennushakemistossa.", "Olet vaihtanut kielen suomeksi. Jos kuitenkin näet pelissä englannin kielistä tekstiä, voit auttaa suomentamalla puuttuvia tekstejä!", "CorsixTH-tiimi etsii aina vahvistuksia! Oletko kiinnostunut ohjelmoimaan, kääntämään tai laatimaan grafiikkaa CorsixTH:ta varten? Saat meihin yhteyden Foorumimme, Sähköpostilistamme tai IRC-kanavamme (corsix-th at freenode) kautta.", "Jos löydät pelistä bugin, ilmoitathan niistä buginseurantaamme: th-issues.corsix.org.", "Jokaisella tasolla on joukko vaatimuksia, jotka sinun tulee täyttää ennen kuin pääset siirtymään seuraavalle tasolle. Voit tarkastella edistymistäsi tilanne-valikosta.", "Jos haluat muokata huonetta tai poistaa sen, voit tehdä niin ruudun alareunassa olevasta työkalupalkista löytyvän muokkaa huonetta -painikkeen avulla.", "Viemällä hiiren osoittimen huoneen päälle saat nopeasti tietää, ketkä ulkopuolella olevien potilaiden rykelmässä odottavat pääsyä kyseiseen huoneeseen.", "Klikkaa huoneen ovea nähdäksesi sen jonon. Tässä ikkunassa voit tehdä hyödyllistä hienosäätöä kuten järjestää jonon uudestaan tai lähettää potilaita toiseen huoneeseen.", "Tyytymättömät työntekijät pyytävät useammin palkankorotuksia. Pidä huolta, että he työskentelevät mukavassa ympäristössä välttääksesi tätä.", "Potilaat tulevat janoisiksi odottaessaan sairaalassasi; erityisesti, jos nostat lämpötilaa! Aseta juoma-automaatteja strategisesti ympäri sairaalaasi saadaksesi vähän lisätuloja.", "Voit peruuttaa potilaan diagnosoinnin ennenaikaisesti ja arvata hoidon, jos olet törmännyt kyseiseen tautiin jo aiemmin. Muista kuitenkin, että tämä lisää väärästä hoidosta aiheutuvan kuoleman riskiä.", "Hätätilanteet voivat olla hyvä ylimääräisen rahan lähde olettaen, että sairaalallasi on riittävästi kapasiteettia hätätilannepotilaiden hoitamiseen ajoissa.", }, previous = "Edellinen vihje", next = "Seuraava vihje", } -- 11. Room descriptions (These were not present with the old strings so I assume they are new then) room_descriptions = { blood_machine = { [1] = "Verikonehuone//", [2] = "Verikone tutkii potilaan verisoluja selvittääkseen mikä häntä vaivaa.//", [3] = "Verikone tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, cardiogram = { [1] = "Kardiogrammihuone//", [2] = "Potilaan sydän tutkitaan täällä ja hänet lähetetään takaisin yleislääkärin vastaanotolle, jossa määrätään sopiva hoito.//", [3] = "Kardiogrammikone tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, decontamination = { [1] = "Säteilyklinikka//", [2] = "Säteilylle altistuneet potilaat ohjataan nopeasti säteilyklinikalle. Huoneessa on suihku, jolla huuhdellaan potilaista kaikki kammottava radioaktiivinen aines ja lika.//", [3] = "Puhdistussuihku tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, dna_fixer = { [1] = "DNA-klinikka//", [2] = "Potilaat, jotka ovat joutuneet alieneiden kynsiin, tarvitsevat DNA-vaihdon tässä huoneessa. DNA-korjain on hyvin monimutkainen kone, joten on suositeltavaa pitää vaahtosammutin sen kanssa samassa huoneessa varmuuden vuoksi.//", [3] = "DNA-korjain tarvitsee käyttäjäkseen tutkimukseen erikoistuneen lääkärin ja säännöllistä huoltoa huoltomieheltä. ", }, electrolysis = { [1] = "Elektrolyysihuone//", [2] = "Turkinkasvusta kärsivät potilaat ohjataan tähän huoneeseen, jossa elektrolyysikone nyppii karvat pois ja sulkee huokoset sähköisesti käyttäen ainetta joka muistuttaa saumauslaastia.//", [3] = "Elektrolyysikone tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, fracture_clinic = { [1] = "Murtumaklinikka//", [2] = "Ne epäonniset potilaat, joilla on murtumia luissaan lähetetään tänne. Kipsinpoistin leikkaa voimakkailla laser-säteillä kovettuneet kipsit pois aiheuttaen vain vähän tuskaa potilaalle.//", [3] = "Kipsinpoistin tarvitsee käyttäjäkseen sairaanhoitajan ja satunnaista huoltoa huoltomieheltä. ", }, general_diag = { [1] = "Yleinen diagnoosihuone//", [2] = "Potilaat, jotka tarvitsevat jatkotutkimusta lähetetään tänne tutkittaviksi. Jos yleislääkärin vastaanotolla ei selviä, mikä potilasta vaivaa, yleisessä diagnoosihuoneessa monesti selviää. Potilaat lähetetään täältä takaisin yleislääkärin vastaanotolle tulosten analysointia varten.//", [3] = "Yleiseen diagnoosihuoneeseen tarvitaan lääkäri. ", }, gp = { [1] = "Yleislääkärin vastaanotto//", [2] = "Tämä on sairaalasi perusdiagnoosihuone. Kaikki uudet potilaat lähetetään tänne lääkärin tutkittaviksi ja täältä heidät ohjataan joko jatkotutkimuksiin tai huoneeseen, jossa heidät voidaan parantaa. Saatat tarvita toisen yleislääkärin vastaanoton, jos ensimmäisestä tulee liian kiireinen. Mitä suurempi huone ja mitä enemmän lisäkalusteita sinne ostat sitä arvostetummaksi lääkäri tuntee itsensä. Tämä pätee myös kaikkiin muihin huoneisiin, joissa tarvitaan henkilökuntaa.//", [3] = "Yleislääkärin vastaanotolle tarvitaan lääkäri. ", }, hair_restoration = { [1] = "Hiusklinikka//", [2] = "Kaljuudesta kärsivät potilaat ohjataan tällä klinikalla olevalle hiustenpalauttimelle. Lääkäri ohjaa konetta, joka kylvää potilaan päähän nopealla tahdilla tuorreita hiuksia.//", [3] = "Hiustenpalautin tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, inflation = { [1] = "Pumppaushuone//", [2] = "Kivuliaasta mutta huvittavasta pallopäisyydestä kärsivien potilaiden pitää mennä pumppaushuoneeseen, jossa heidän ylisuuri nuppinsa puhkaistaan ja täytetään sopivaan paineeseen.//", [3] = "Pumppauskone tarvitsee käyttäjäkseen lääkärin ja säännöllistä huoltoa huoltomieheltä. ", }, jelly_vat = { [1] = "Hyytelöklinikka//", [2] = "Potilaiden, jotka sairastavat hyytelöitymistä, täytyy huojua hyytelöklinikalle ja asettua hyytelömuovaimeen. Tämä parantaa heidät vielä lääketieteelle tuntemattomalla tavalla.//", [3] = "Hyytelömuovain tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, no_room = { [1] = "", }, operating_theatre = { [1] = "Leikkaussali//", [2] = "Tämä on tärkeä huone, sillä täällä hoidetaan lukuisia eri sairauksia. Leikkaussalin tulee olla riittävän suuri ja siellä pitää olla oikeat välineet. Se on elintärkeä osa sairaalaasi.//", [3] = "Leikkaussaliin tarvitaan kaksi kirurgiaan erikoistunutta lääkäriä. ", }, pharmacy = { [1] = "Apteekki//", [2] = "Potilaat, joilla on diagnosoitu lääkkeillä parantuva sairaus, ohjataan apteekkiin hakemaan lääkkeensä. Sitä mukaa, kun uusia lääkehoitoja kehitetään, apteekki tulee kiireisemmäksi, joten toisen apteekin rakentaminen myöhemmin saattaa tulla tarpeen.//", [3] = "Apteekkiin tarvitaan sairaanhoitaja. ", }, psych = { [1] = "Psykiatrin vastaanotto//", [2] = "Psykologisista sairauksista kärsivät potilaat lähetetään keskustelemaan psykiatrin kanssa. Psykiatrit voivat tarkentaa potilaan diagnoosia ja hoitaa psykologisia sairauksia uskollisen sohvansa avulla.//", [3] = "Psykiatrin vastaanotolle tarvitaan psykiatriaan erikoistunut lääkäri. ", }, research = { [1] = "Tutkimusosasto//", [2] = "Täällä kehitetään uusia lääkkeitä ja hoitoja sekä parannellaan vanhoja. Tutkimusosasto on tärkeä osa tehokasta sairaalaa ja se tekee ihmeitä hoitoprosentillesi.//", [3] = "Tutkimusosastolle tarvitaan tutkimukseen erikoistunut lääkäri. ", }, scanner = { [1] = "Magneettikuvaushuone//", [2] = "Potilaille saadaan tarkka diagnoosi edistyneen magneettikuvaimen avulla. Tämän jälkeen heidät lähetetään takaisin yleislääkärin vastaanotolle, jossa heille määrätään sopiva hoito.//", [3] = "Magneettikuvain tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, slack_tongue = { [1] = "Kieliklinikka//", [2] = "Potilaat, joilla yleislääkäri on todennut velttokielisyyden, lähetetään tänne hoitoon. Lääkäri käyttää kehittynyttä paloittelukonetta kielen venyttämiseen ja katkaisee sen normaaliin mittaansa parantaen potilaan.//", [3] = "Paloittelukone tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, staff_room = { [1] = "Henkilökunnan taukohuone//", [2] = "Henkilökuntasi väsyy suorittaessaan työtehtäviään. He käyttävät tätä huonetta rentoutumiseen ja lepäämiseen. Väsyneet työntekijät toimivat hitaammin, tekevät enemmän kohtalokkaita virheitä, vaativat palkankorotuksia ja eroavat lopulta palveluksestasi. Taukohuoneen rakentaminen on siis hyvin kannattavaa. Varmista, että huone on riittävän suuri useammalle henkilölle ja että siellä on riittävästi tekemistä henkilökunnallesi. ", }, toilets = { [1] = "Käymälä//", [2] = "Potilaat, joita luonto kutsuu, voivat helpottaa oloaan käymälässäsi. Voit rakentaa enemmän eriöitä ja pesualtaita, jos odotat paljon potilaita. Joissain tilanteissa voi olla parempi rakentaa useampia käymälöitä eri puolille sairaalaasi. ", }, training = { [1] = "Koulutushuone//", [2] = "Harjoittelijasi ja tohtorisi voivat oppia arvokkaita erikoistumistaitoja opiskelemalla tässä huoneessa. Konsultti, joka on erikoistunut kirurgiaan, tutkimukseen tai psykiatriaan siirtää näitä taitojaan koulutettavina oleville lääkäreille. Lääkärit, joilla jo on koulutus opetettavista erikoistumisaloista parantavat kykyään käyttää taitojaan täällä.//", [3] = "Koulutushuoneeseen tarvitaan konsultti. ", }, tv_room = { [1] = "TV-HUONE EI KÄYTÖSSÄ", }, ultrascan = { [1] = "Ultraäänihuone//", [2] = "Ultraäänilaite on pitkälle kehittynyt diagnoosilaite. Se maksaa paljon, mutta on sen arvoinen, jos haluat saada ensiluokkaisia diagnooseja sairaalassasi.//", [3] = "Ultraäänilaite tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, ward = { [1] = "Vuodeosasto//", [2] = "Potilaita pidetään täällä vuodelevossa tarkkailtavina diagnosoinnin aikana ja ennen leikkausta.//", [3] = "Vuodeosastolle tarvitaan sairaanhoitaja. ", }, x_ray = { [1] = "Röntgenhuone//", [2] = "Röntgenillä kuvataan potilaiden sisäelimet ja luusto käyttäen erityistä säteilylähdettä. Hoitohenkilökunta saa näin hyvän kuvan siitä, mikä potilasta vaivaa.//", [3] = "Röntgen tarvitsee käyttäjäkseen lääkärin ja huoltoa huoltomieheltä. ", }, } -- 12. Lua console lua_console = { execute_code = "Suorita", close = "Sulje", } -- 13. Information information = { custom_game = "Tervetuloa pelaamaan CorsixTH:ta. Toivottavasti viihdyt tällä itse laaditulla kartalla!", cannot_restart = "Valitettavasti tämä peli on tallennettu ennen uudelleen käynnistämisen toteuttamista.", level_lost = { "Harmin paikka! Olet hävinnyt tämän tason. Parempaa onnea ensi kerralla!", "Syy tappioosi oli:", reputation = "Maineesi putosi alle %d:n.", balance = "Pankkitilisi saldo putosi alle %d$:n.", percentage_killed = "Olet tappanut yli %d prosenttia potilaista.", }, } -- 14. Handyman window handyman_window = { all_parcels = "Kaikkialla", parcel = "Alue", } -- 15. Misc misc = { not_yet_implemented = "(ei toteutettu vielä)", no_heliport = "Joko yhtään tautia ei vielä tunneta tai sairaalalla ei ole helikopterikenttää", } date_format.daymonth = "%1%. %2:months%" ------------------------------------------------------------------------------- -- SECTION B - OLD STRINGS (OVERRIDE) ------------------------------------------------------------------------------- -- Staff class -- each of these corresponds to a sprite staff_class = { nurse = "Sairaanhoitaja", doctor = "Lääkäri", handyman = "Huoltomies", receptionist = "Vastaanottoapulainen", surgeon = "Kirurgi", } -- Staff titles -- these are titles used e.g. in the dynamic info bar staff_title = { receptionist = "Vastaanottoapulainen", general = "Yleinen", -- unused? nurse = "Sairaanhoitaja", junior = "Harjoittelija", doctor = "Tohtori", surgeon = "Kirurgi", psychiatrist = "Psykiatri", consultant = "Konsultti", researcher = "Tutkija", } -- Pay rises pay_rise = { definite_quit = "Et voi enää pidätellä minua mitenkään. Se on loppu nyt!", regular = { "Olen ihan loppuunpalanut. Vaadin kunnon tauon ja %d$:n palkankorotuksen, jos et halua nähdä minun kävelevän ympäriinsä ja valittavan käytävillä.", -- %d (rise) "Olen hyvin väsynyt. Vaadin lepoa ja %d$:n palkankorotuksen eli yhteensä %d$ palkkaa. Se saa kelvata, senkin tyranni!", -- %d (rise) %d (new total) "Anteeksi kuinka? Raadan täällä kuin orja. Anna minulle %d$:n bonus niin tulen sairaalaasi.", -- %d (rise) "Olen niin masentunut, että haluan %d$:n palkankorotuksen, joka tekee yhteensä %d$, tai muuten otan lopputilin.", -- %d (rise) %d (new total) "Vanhempani käskivät opiskella lääkäriksi, että saisin kunnon palkkaa. Anna minulle siis %d$ lisää liksaa, tai lähden täältä nopeammin kuin uskotkaan.", -- %d (rise) "Nyt olen vihainen. Anna minulle enemmän palkkaa. Uskoisin, että %d$ lisää riittää tällä erää.", -- %d (rise) }, poached = "Minulle on tarjottu %d$ palkkaa %s-nimisen kilpailijasi sairaalassa. Siirryn sinne töihin, ellet anna minulle vastaavaa palkankorotusta.", -- %d (new total) %s (competitor) } -- Staff descriptions staff_descriptions = { good = { [1] = "Hyvin nopea ja ahkera työntekijä. ", [2] = "Hyvin velvollisuudentuntoinen. Oikein huolellinen. ", [3] = "Todella monipuolinen. ", [4] = "Ystävällinen ja aina hyvällä tuulella. ", [5] = "Äärimmäisen sisukas. Työskentelee yöt ja päivät. ", [6] = "Uskomattoman kohtelias ja hyvätapainen. ", [7] = "Uskomattoman ammattitaitoinen ja osaava. ", [8] = "Hyvin keskittynyt ja arvostettu työssään. ", [9] = "Perfektionisti, joka ei koskaan luovuta. ", [10] = "Auttaa aina ihmisiä hymyssä suin. ", [11] = "Hurmaava, kohtelias ja auttavainen. ", [12] = "Hyvin motivoitunut ja omistautunut työlleen. ", [13] = "Luonteeltaan kiltti ja ahkera. ", [14] = "Lojaali ja ystävällinen. ", [15] = "Huomaavainen. Rauhallinen ja luotettava hätätilanteissa. ", }, misc = { [1] = "Pelaa Golfia. ", [2] = "Pitää kampasimpukoista. ", [3] = "Veistää jääpatsaita. ", [4] = "Juo viiniä. ", [5] = "Ajaa rallia. ", [6] = "Harrastaa benjihyppyä. ", [7] = "Kerää lasinalusia. ", [8] = "Harrastaa yleisösurffausta. ", [9] = "Nauttii vauhdikkaasta surffaamisesta. ", [10] = "Pitää ankeriaiden venyttämisestä. ", [11] = "Tislaa viskiä. ", [12] = "Tee-se-itse ekspertti. ", [13] = "Pitää ranskalaisista taide-elokuvista. ", [14] = "Pelaa OpenTTD-peliä. ", [15] = "C-ajokortin ylpeä omistaja. ", [16] = "Osallistuu moottoripyöräkilpailuihin. ", [17] = "Soittaa klassista viulua ja selloa. ", [18] = "Innokas junanromuttaja. ", [19] = "Koiraihminen. ", [20] = "Kuuntelee radiota. ", [21] = "Kylpee usein. ", [22] = "Opettaa bambunletitystä. ", [23] = "Valmistaa saippuakuppeja vihanneksista. ", [24] = "Osa-aikainen miinanraivaaja. ", [25] = "Visailumestari. ", [26] = "Kerää sirpaleita 2. maailmansodasta. ", [27] = "Pitää sisustamisesta. ", [28] = "Kuuntelee rave- ja trip-hop-musikkia. ", --see original for trip-hop [29] = "Tappaa hyönteisiä deodorantilla. ", [30] = "Pitää kamalia stand up -esityksiä. ", [31] = "Tekee ostoksia sairaalaneuvostolle. ", [32] = "Salaperäinen puutarhuri. ", [33] = "Salakuljettaa piraattikelloja. ", [34] = "Rock-bändin laulaja. ", [35] = "Rakastaa TV:n katselua päivällä. ", [36] = "Kalastaa taimenia. ", [37] = "Houkuttelee turisteja museoon. ", }, bad = { [1] = "Hidas ja nirso. ", [2] = "Laiska ja heikosti motivoitunut. ", [3] = "Huonosti koulutettu ja hyödytön. ", [4] = "Tyhmä ja ärsyttävä. Toimii sijaisena. ", [5] = "Alhainen kestävyys. Hänellä on huono ryhti. ", [6] = "Tyhmä kuin saapas. Haisee kaalilta. ", [7] = "Ei välitä työstään. Ei ota vastuuta. ", [8] = "Keskittymisvaikeuksia, häiriintyy helposti. ", [9] = "Stressaantunut ja tekee runsaasti virheitä. ", [10] = "Suuttuu helposti. Mököttää vihaisena. ", [11] = "Varomaton ja epäonninen. ", [12] = "Ei välitä työstään. Epäaktiivinen. ", [13] = "Uhkarohkea ja piittaamaton. ", [14] = "Viekas ja ovela. Puhuu muista pahaa. ", [15] = "Ylimielinen ja mahtaileva. ", }, } -- Staff list staff_list = { morale = "MORAALI", tiredness = "VÄSYMYS", skill = "TAITO", total_wages = "KOKONAISPALKKA", } -- Objects object = { desk = "Toimistopöytä", cabinet = "Arkistokaappi", door = "Ovi", bench = "Penkki", table1 = "Pöytä", -- unused object chair = "Tuoli", drinks_machine = "Juoma-automaatti", bed = "Sänky", inflator = "Pumppauskone", pool_table = "Biljardipöytä", reception_desk = "Vastaanottopöytä", table2 = "Pöytä", -- unused object & duplicate cardio = "Kardiogrammikone", scanner = "Magneettikuvain", console = "Konsoli", screen = "Sermi", litter_bomb = "Roskapommi", couch = "Sohva", sofa = "Sohva", crash_trolley = "Kärry", tv = "TV", ultrascanner = "Ultraäänilaite", dna_fixer = "DNA-korjain", cast_remover = "Kipsinpoistin", hair_restorer = "Hiustenpalautin", slicer = "Paloittelukone", x_ray = "Röntgen", radiation_shield = "Säteilysuoja", x_ray_viewer = "Röntgenkatselin", operating_table = "Leikkauspöytä", lamp = "Lamppu", -- unused object toilet_sink = "Pesuallas", op_sink1 = "Allas", op_sink2 = "Lavuaari", surgeon_screen = "Kirurgin sermi", lecture_chair = "Luentotuoli", projector = "Projektori", bed2 = "Sänky", -- unused duplicate pharmacy_cabinet = "Lääkekaappi", computer = "Tietokone", atom_analyser = "Atomianalysaattori", blood_machine = "Verikone", fire_extinguisher = "Vaahtosammutin", radiator = "Lämpöpatteri", plant = "Kasvi", electrolyser = "Elektrolyysikone", jelly_moulder = "Hyytelömuovain", gates_of_hell = "Manalan portit", bed3 = "Sänky", -- unused duplicate bin = "Roskakori", toilet = "Eriö", swing_door1 = "Heiluriovi", swing_door2 = "Heiluriovi", shower = "Puhdistussuihku", auto_autopsy = "Ruumiinavauskone", bookcase = "Kirjahylly", video_game = "Videopeli", entrance_left = "Sisäänkäynnin vasen ovi", entrance_right = "Sisäänkäynnin oikea ovi", skeleton = "Luuranko", comfortable_chair = "Mukava tuoli", litter = "Roska", } -- Place objects window place_objects_window = { drag_blueprint = "Muuta suunnitelmaa kunnes olet tyytyväinen siihen", place_door = "Aseta ovi paikalleen", place_windows = "Aseta joitakin ikkunoita, jos haluat. Vahvista, kun olet valmis", place_objects = "Aseta kalusteet paikalleen. Vahvista, kun olet valmis", confirm_or_buy_objects = "Voit hyväksyä huoneen, jatkaa kalusteiden ostamista tai siirtää kalusteita", pick_up_object = "Klikkaa kalusteita poimiaksesi ne ylös tai tee toinen valinta ikkunasta", place_objects_in_corridor = "Aseta kalusteita käytävään", } -- Competitor names competitor_names = { [1] = "ORAAKKELI", [2] = "TÖPPÖ", [3] = "KOLOSSI", [4] = "NULJASKA", [5] = "PYHIMYS", [6] = "SYVÄ AJATUS", [7] = "ZEN", [8] = "LEO", [9] = "AKIRA", [10] = "SAMI", [11] = "KAARLE", [12] = "JANNE", [13] = "ARTTURI", [14] = "MATTI", [15] = "MAMMA", [16] = "SARI", [17] = "KUNKKU", [18] = "JOONAS", [19] = "TANELI", [20] = "OLIVIA", [21] = "NIKKE", } -- Months months = { "Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou", } -- Graphs graphs = { money_in = "Tulot", money_out = "Menot", wages = "Palkat", balance = "Rahavarat", visitors = "Vierailijoita", cures = "Parantumisia", deaths = "Kuolemia", reputation = "Maine", time_spans = { "1 vuosi", "12 vuotta", "48 vuotta", } } -- Transactions transactions = { --null = S[8][ 1], -- not needed wages = "Palkat", hire_staff = "Palkkaa henkilökuntaa", buy_object = "Osta kalusteita", build_room = "Rakenna huoneita", cure = "Hoitokeino", buy_land = "Osta maata", treat_colon = "Hoito:", final_treat_colon = "Viimeisin hoito:", cure_colon = "Hoitokeino:", deposit = "Hoitomaksut", advance_colon = "Ennakko:", research = "Tutkimuskustannukset", drinks = "Tulot: juoma-automaatti", jukebox = "Tulot: jukeboksi", -- unused cheat = "Huijaukset", heating = "Lämmityskustannukset", insurance_colon = "Vakuutus:", bank_loan = "Pankkilaina", loan_repayment = "Lainan lyhennys", loan_interest = "Lainan korko", research_bonus = "Tutkimusbonus", drug_cost = "Lääkekustannukset", overdraft = "Tilin ylitys", severance = "Irtisanomiskustannukset", general_bonus = "Yleisbonus", sell_object = "Myy kalusteita", personal_bonus = "Henkilökunnan bonukset", emergency_bonus = "Hätätilannebonukset", vaccination = "Rokotukset", epidemy_coverup_fine = "Sakot epidemian peittelystä", compensation = "Valtion tuet", vip_award = "VIP-palkkinnot", epidemy_fine = "Epidemiasakot", eoy_bonus_penalty = "Vuosittaiset bonukset/sakot", eoy_trophy_bonus = "Vuoden palkintobonukset", machine_replacement = "Vaihtolaitteiden kustannukset", } -- Level names level_names = { "Lahjala", "Unikylä", "Isola", "Kotokartano", "Lepikylä", "Susimetsä", "Kaukala", "Puolitie", "Tammikuja", "Tiukylä", "Kaarela", "Kannosto", "Kamukylä", "Pikku-Rajala", "Vaatimala", } -- Town map town_map = { chat = "Chat", for_sale = "Myytävänä", not_for_sale = "Ei myytävänä", number = "Tonttinumero", owner = "Omistaja", area = "Pinta-ala", price = "Hinta", } -- Rooms short -- NB: includes some special "rooms" -- reception, destroyed room and "corridor objects" rooms_short = { reception = "Vastaanotto", destroyed = "Tuhoutunut", corridor_objects = "Käytäväkalusteet", gps_office = "Yleislääkäri", psychiatric = "Psykiatria", ward = "Vuodeosasto", operating_theatre = "Leikkaussali", pharmacy = "Apteekki", cardiogram = "Kardiogrammi", scanner = "Magneettikuvaus", ultrascan = "Ultraääni", blood_machine = "Verikone", x_ray = "Röntgen", inflation = "Pumppaushuone", dna_fixer = "DNA-klinikka", hair_restoration = "Hiusklinikka", tongue_clinic = "Kieliklinikka", fracture_clinic = "Murtumaklinikka", training_room = "Koulutushuone", electrolysis = "Elektrolyysiklinikka", jelly_vat = "Hyytelöklinikka", staffroom = "Taukohuone", -- rehabilitation = "Vieroitushuone", -- unused general_diag = "Yleinen diagnoosi", research_room = "Tutkimusosasto", toilets = "Käymälä", decontamination = "Säteilyklinikka", } -- Rooms long rooms_long = { general = "Yleinen", -- unused? emergency = "Hätätilanne", corridors = "Käytävät", gps_office = "Yleislääkärin vastaanotto", psychiatric = "Psykiatrin vastaanotto", ward = "Vuodeosasto", operating_theatre = "Leikkaussali", pharmacy = "Apteekki", cardiogram = "Kardiogrammihuone", scanner = "Magneettikuvaushuone", ultrascan = "Ultraäänihuone", blood_machine = "Verikonehuone", x_ray = "Röntgenhuone", inflation = "Pumppaushuone", dna_fixer = "DNA-klinikka", hair_restoration = "Hiusklinikka", tongue_clinic = "Kieliklinikka", fracture_clinic = "Murtumaklinikka", training_room = "Koulutushuone", electrolysis = "Elektrolyysiklinikka", jelly_vat = "Hyytelöklinikka", staffroom = "Henkilökunnan taukohuone", -- rehabilitation = "Vieroitushuone", -- unused general_diag = "Yleinen diagnoosihuone", research_room = "Tutkimusosasto", toilets = "Käymälä", decontamination = "Säteilyklinikka", } -- Drug companies drug_companies = { "Hoidake Yhtiöt", "Para 'N' Nus", "Pyöreät pikku-pillerit Oy", "Tyyrislääke Oyj", "Kaik-tabletit Ky", } -- Build rooms build_room_window = { pick_department = "Valitse osasto", pick_room_type = "Valitse huonetyyppi", cost = "Hinta: ", } -- Build objects buy_objects_window = { choose_items = "Valitse kalusteet", price = "Hinta:", total = "Yhteensä:", } -- Research research = { categories = { cure = "Hoitomenetelmät", diagnosis = "Diagnoosimenetelmät", drugs = "Lääketutkimus", improvements = "Laitteisto", specialisation = "Erikoistuminen", }, funds_allocation = "Myönnettävissä rahastosta", allocated_amount = "Myönnetty rahasumma", } -- Policy screen policy = { header = "SAIRAALAN KÄYTÄNNÖT", diag_procedure = "diagnosointikäytäntö", diag_termination = "hoidon lopettaminen", staff_rest = "taukokäytäntö", staff_leave_rooms = "salli tauolle poistuminen", sliders = { guess = "ARVAA HOITO", -- belongs to diag_procedure send_home = "LÄHETÄ KOTIIN", -- also belongs to diag_procedure stop = "LOPETA HOITO", -- belongs to diag_termination staff_room = "PIDÄ TAUKO", -- belongs to staff_rest } } -- Rooms room_classes = { -- S[19][2] -- "Käytävät" - unused for now diagnosis = "Diagnoosi", treatment = "Hoito", clinics = "Klinikat", facilities = "Toimitilat", } -- Insurance companies insurance_companies = { out_of_business = "KONKURSSISSA", "Kuorittu Sipuli Oy", "Pohjanmaalainen", "Sääntövakuutukset Oy", "Itikka Yhtiöt", "Uniturva", "Vam Pyyri Ky", "Sureol Vakuutusyhtiö", "Okto Pus ja kumppanit", "Larinnon Henkiturva", "Glade Vakuutukset Oy", "Mafia Vakuutus Oyj", } -- Menu root -- Keep 2 spaces as prefix and suffix menu = { file = " TIEDOSTO ", options = " VALINNAT ", display = " NÄYTÄ ", charts = " TILASTOT ", debug = " DEBUG ", } -- Menu File menu_file = { load = " LATAA ", save = " TALLENNA ", restart = " ALOITA ALUSTA ", quit = " LOPETA ", } menu_file_load = { [1] = " PELI 1 ", [2] = " PELI 2 ", [3] = " PELI 3 ", [4] = " PELI 4 ", [5] = " PELI 5 ", [6] = " PELI 6 ", [7] = " PELI 7 ", [8] = " PELI 8 ", } -- Menu Options menu_options = { adviser_disabled = " AVUSTAJA ", announcements = " KUULUTUKSET ", announcements_vol = " KUULUTUSTEN VOIMAKKUUS ", autosave = " AUTOMAATTITALLENNUS ", edge_scrolling = " REUNAVIERITYS ", game_speed = " PELINOPEUS ", jukebox = " JUKEBOKSI ", lock_windows = " LUKITSE IKKUNAT ", music = " MUSIIKKI ", music_vol = " MUSIIKIN VOIMAKKUUS ", settings = " ASETUKSET ", sound = " ÄÄNI ", sound_vol = " ÄÄNENVOIMAKKUUS ", } -- Menu Display menu_display = { high_res = " KORKEA RESOLUUTIO ", mcga_lo_res = " MCGA - MATALA RESOLUUTIO ", shadows = " VARJOT ", } -- Menu Charts menu_charts = { statement = " TILIOTE ", casebook = " TAPAUSKIRJA ", policy = " KÄYTÄNNÖT ", research = " TUTKIMUS ", graphs = " GRAAFIT ", staff_listing = " TYÖNTEKIJÄT ", bank_manager = " PANKINJOHTAJA ", status = " TILANNE ", briefing = " TIIVISTELMÄ ", } -- Menu Debug menu_debug = { object_cells = " KALUSTESOLUT ", entry_cells = " SYÖTESOLUT ", keep_clear_cells = " PIDÄ TYHJÄNÄ -SOLUT ", nav_bits = " NAVIGOINTIBITIT ", remove_walls = " POISTA SEINÄT ", remove_objects = " POISTA KALUSTEET ", display_pager = " NÄYTÄ VIESTIT ", mapwho_checking = " MAPWHO-TARKISTUS ", plant_pagers = " KASVIVIESTIT ", porter_pagers = " KANTOVIESTIT ", pixbuf_cells = " PIXBUF-SOLUT ", enter_nav_debug = " SYÖTÄ NAVIG. DEBUG ", show_nav_cells = " NÄYTÄ NAVIG. SOLUT ", machine_pagers = " LAITEVIESTIT ", display_room_status = " NÄYTÄ HUONEEN TILA ", display_big_cells = " NÄYTÄ SUURET SOLUT ", show_help_hotspot = " NÄYTÄ APUPISTEET ", win_game_anim = " PELIN VOITTOANIM. ", win_level_anim = " KENTÄN VOITTOANIM. ", lose_game_anim = { [1] = " HÄVITTY PELI 1 ANIM ", [2] = " HÄVITTY PELI 2 ANIM ", [3] = " HÄVITTY PELI 3 ANIM ", [4] = " HÄVITTY PELI 4 ANIM ", [5] = " HÄVITTY PELI 5 ANIM ", [6] = " HÄVITTY PELI 6 ANIM ", [7] = " HÄVITTY PELI 7 ANIM ", }, } -- High score screen high_score = { pos = "SIJOITUS", player = "PELAAJA", score = "PISTEITÄ", best_scores = "HALL OF FAME", worst_scores = "HALL OF SHAME", killed = "Kuolleita", -- is this used? categories = { money = "RIKKAIN", salary = "KORKEIN PALKKA", clean = "PUHTAIN", cures = "PARANTUNEIDEN MÄÄRÄ", deaths = "KUOLLEIDEN MÄÄRÄ", cure_death_ratio = "PARANTUNEET-KUOLLEET-SUHDE", patient_happiness = "POTILAIDEN TYYTYVÄISYYS", staff_happiness = "HENKILÖSTÖN TYYTYVÄISYYS", staff_number = "ENITEN HENKILÖKUNTAA", visitors = "ENITEN POTILAITA", total_value = "KOKONAISARVO", }, } -- Trophy room trophy_room = { many_cured = { awards = { "Onnittelut Marie Curie -palkinnosta: olet onnistunut parantamaan suurimman osan sairaalaan saapuneista potilaista viime vuonna.", }, trophies = { "Kansainvälinen lääkintähallitus toivottaa onnea hyvästä paranemisten osuudesta sairaalassasi viime vuonna. He myöntävät täten sinulle Puolet parannettu -kunniamaininnan.", "Sinulle on myönnetty Ei sairaana kotiin -kunniamaininta, koska ole parantanut suurimman osan sairaalaasi saapuneista potilaista viime vuonna.", }, }, all_cured = { awards = { "Onnittelut Marie Curie -palkinnosta: olet onnistunut parantamaan kaikki sairaalaan saapuneet potilaat viime vuonna.", }, trophies = { "Kansainvälinen lääkintähallitus toivottaa onnea hyvästä paranemisten osuudesta sairaalassasi viime vuonna. He myöntävät täten sinulle Kaikki parannettu -kunniamaininnan.", "Sinulle on myönnetty Ei sairaana kotiin -kunniamaininta, koska ole parantanut kaikki sairaalaasi saapuneet potilaat.", }, }, high_rep = { awards = { "Sinulle myönnetään täten sisäministeriön Kiiltävät sairaalastandardit -palkinto, joka myönnetään vuosittain parhaan maineen saavuttaneelle sairaalalle. Onneksi olkoon!", "Ole hyvä ja ota vastaan Bullfrog-palkinto, joka myönnetään maineeltaan vuoden parhaalle sairaalalle. Olet ehdottomasti ansainnut sen!", }, }, happy_staff = { awards = { }, trophies = { "Sinulle on myönnetty Hymynaama-kunniamaininta ahkeran henkilökuntasi pitämisestä niin tyytyväisenä kuin mahdollista.", "Mielialainstituutti on todennut, ettei kenelläkään ollut sinun sairaalassassi huolia tai murheita viime vuonna ja se antaa sinulle tunnustuksena tästä kunniamaininnan.", "Aurinko paistaa aina -kunniamaininta myönnetään täten sinulle, koska olet onnistunut pitämään henkilöstösi tyytyväisenä koko vuoden huolimatta valtaisasta työmäärästä. Hymyä huuleen!", }, }, happy_vips = { trophies = { "Tunnettujen henkilöiden toimisto haluaa palkita sinut Julkkis-kunniamaininnalla, koska olet pitänyt hyvää huolta kaikista VIP-potilaistasi. Olet jo itsekin melkein tunnettu!", }, }, no_deaths = { awards = { "Olet voittanut Elä pitkään -palkinnon pidettyäsi viime vuoden aikana 100 prosenttia potilaistasi hengissä.", }, trophies = { "Elämä jatkuu -komitea on myöntänyt sinulle nimikkokunniamainintansa, koska olet selvinnyt ilman ainuttakaan kuolemantapausta koko viime vuoden.", "Sinulle on myönnetty Pidä elämästä kiinni -kunniamaininnan onnistuttuasi välttämään kuolemantapaukset kuluneena vuonna kokonaan. Mahtavuutta!", }, }, rats_killed = { awards = { }, trophies = { "Sinulle on myönnetty Nolla tuholaista -kunniamaininta, koska sairaalassasi on ammuttu %d rottaa vuoden aikana.", -- %d (number of rats) "Otat vastaaan rottien ja hiirten vastaisen järjestön kunniamaininnan erinomaisen rotta-ammuntasi johdosta. Otit hengiltä %d jyrsijää viime vuonna.", -- %d (number of rats) "Onnittelut Rotta-ampuja-kunniamaininnasta, jonka sait osoitettuasi erityistä lahjakkuutta hävittämällä %d rottaa sairaalastasi kuluneen vuoden aikana.", -- %d (number of rats) }, }, rats_accuracy = { awards = { }, trophies = { "Sinulle on myönnetty Kiitettävä ampuja toivottomassa sodassa -kunniamaininta, koska osamatarkkuutesi inhottavien rottien jahtaamisessa oli %d%% viime vuonna.", -- %d (accuracy percentage) "Tämä kunniamaininta on osoitus taitavuudestasi saatuasi hengiltä %d%% rotista, joita ammuit viime vuonna.", -- %d (accuracy percentage) "Olet osoittanut suurta tarkkuutta tappaessasi %d%% kaikista sairaalasi rotista ja sinulle on myönnetty Dungeon Keeper -kunniamaininta. Rottaiset onnittelut!", -- %d (accuracy percentage) }, }, healthy_plants = { awards = { "Onnittelut Kasvukausi-palkinnosta! Olet onnistunut pitämään sairaalasi kasvit erinomaisessa kunnossa koko vuoden.", }, trophies = { "Ruukasvien ystävät -järjestö myöntää sinulle Vihreä terveys -kunniamaininnan, koska olet pitänyt hyvää huolta sairaalasi kasveista viimeiset 12 kuukautta.", "Sinulle on myönnetty Viherpeukalo-kunniamainnita, koska kasveiltasi ei ole puuttunut vettä eikä hoitoa viime vuonna.", }, }, sold_drinks = { awards = { }, trophies = { "Kansainvälinen automaattiyhdistys on ylpeä voidessaan antaa sinulle kunniamaininnan sairaalassasi viime vuonna myytyjen virvoitusjuomien suuresta määrästä.", "Sairaalallesi on myönnetty Ravistetut tölkit -kunniamaininta viime vuoden aikana myytyjen virvoitusjuomatölkkien määrästä.", "Suomen hammaspaikat Oy on myöntänyt sinulle kunniamaininnan, koska sairaalasi on ansiokkaasti edistänyt virvoitusjuomien myyntiä viime vuonna.", }, }, } -- Casebook screen casebook = { reputation = "maine", treatment_charge = "hoidon hinta", earned_money = "tulot yhteensä", cured = "parannettuja", deaths = "kuolleita", sent_home = "kotiin lähetettyjä", research = "kohdista tutkimusta", cure = "hoito", cure_desc = { build_room = "Tarvitset huoneen: %s", -- %s (room name) build_ward = "Tarvitset nopeasti vuodeosaston.", hire_doctors = "Tarvitset lisää lääkäreitä.", hire_surgeons = "Tarvitset lisää kirurgeja.", hire_psychiatrists = "Tarvitset lisää psykologeja.", hire_nurses = "Tarvitset lisää sairaanhoitajia.", no_cure_known = "Ei tunnettuja hoitoja.", cure_known = "Hoito tunnetaan.", improve_cure = "Parannettu hoito", }, } -- Tooltips tooltip = { -- Build room window build_room_window = { room_classes = { diagnosis = "Valitse diagnoosihuone", treatment = "Valitse yleinen hoitohuone", clinic = "Valitse erityisklinikka", facilities = "Valitse laitokset", }, cost = "Kustannukset nykyisestä huoneesta", close = "Keskeytä toiminto ja palaa peliin", }, -- Toolbar toolbar = { bank_button = "Vasen klikkaus: pankinjohtaja, oikea klikkaus: tiliote", balance = "Tilin saldo", reputation = "Maine:", -- NB: no %d! Append " ([reputation])". date = "Päivä", rooms = "Rakenna huone", objects = "Osta kalusteita", edit = "Muuta huonetta/kalusteita", hire = "Palkkaa henkilökuntaa", staff_list = "Henkilökuntaluettelo", town_map = "Kartta", casebook = "Hoitokirja", research = "Tutkimus", status = "Tilanne", charts = "Kuvaajat", policy = "Sairaalan käytännöt", }, -- Hire staff window hire_staff_window = { doctors = "Näytä työtä etsivät lääkärit", nurses = "Näytä työtä etsivät sairaanhoitajat", handymen = "Näytä työtä etsivät huoltomiehet", receptionists = "Näytä työtä etsivät vastaanottoapulaiset", prev_person = "Näytä edellinen", next_person = "Näytä seuraava", hire = "Palkkaa", cancel = "Peruuta", doctor_seniority = "Kokemus (Harjoittelija, Tohtori, Konsultti)", staff_ability = "Kyvyt", salary = "Palkkavaatimus", qualifications = "Erikoistumisalat", surgeon = "Kirurgi", psychiatrist = "Psykiatri", researcher = "Tutkija", }, -- Buy objects window buy_objects_window = { price = "Kalusteen hinta", total_value = "Ostettujen kalusteiden kokonaisarvo", confirm = "Osta kaluste(et)", cancel = "Peruuta", increase = "Kasvata valitun kalusteen ostetavaa määrää", decrease = "Pienennä valitun kalusteen ostettavaa määrää", }, -- Staff list staff_list = { doctors = "Näytä katsaus lääkäreistäsi", nurses = "Näytä katsaus sairaanhoitajistasi", handymen = "Näytä katsaus huoltomiehistäsi", receptionists = "Näytä katsaus vastaanottoapulaisistasi", happiness = "Näyttää, kuinka tyytyväisiä työntekijäsi ovat", tiredness = "Näyttää, kuinka väsyneitä työntekijäsi ovat", ability = "Näyttää työntekijöidesi kyvyt", salary = "Työntekijälle maksettava palkka", happiness_2 = "Työntekijän tyytyväisyys", tiredness_2 = "Työntekijän väsymys", ability_2 = "Työntekijän kyvyt", prev_person = "Näytä edellinen sivu", next_person = "Näytä seuraava sivu", bonus = "Anna työntekijälle 10%:n bonus", sack = "Anna työntekijälle potkut", pay_rise = "Nosta työntekijän palkkaa 10%", close = "Sulje ikkuna", doctor_seniority = "Lääkärin kokemus", detail = "Yksityiskohtien huomioimiskyky", view_staff = "Näytä työntekijä", surgeon = "Erikoistunut kirurgiaan", psychiatrist = "Erikoistunut psykiatriaan", researcher = "Erikoistunut tutkimukseen", surgeon_train = "%d%% suoritettu kirurgiaan erikoistumisesta", -- %d (percentage trained) psychiatrist_train = "%d%% suoritettu psykiatriaan erikoistumisesta", -- %d (percentage trained) researcher_train = "%d%% suoritettu tutkimukseen erikoistumisesta", -- %d (percentage trained) skills = "Taidot", }, -- Queue window queue_window = { num_in_queue = "Jonottavien potilaiden määrä", num_expected = "Vastaanotosta jonoon pian saapuvien potilaiden määrä", num_entered = "Tässä huoneessa tähän mennessä hoidettujen potilaiden kokonaismäärä", max_queue_size = "Vastaanotosta jonoon päästettävien potilaiden enimmäismäärä", dec_queue_size = "Pienennä jonoon päästettävien potilaiden enimmäismäärää", inc_queue_size = "Kasvata jonoon päästettävien potilaiden enimmäismäärää", front_of_queue = "Vedä potilas tähän asettaaksesi hänet jonon ensimmäiseksi", end_of_queue = "Vedä potilas tähän asettaaksesi hänet jonon viimeiseksi", close = "Sulje ikkuna", patient = "Siirrä potilasta jonossa vetämällä. Klikkaa oikealla lähettääksesi potilas kotiin, vastaanottoon tai kilpailevaan sairaalaan", patient_dropdown = { reception = "Lähetä potilas vastaanottoon", send_home = "Lähetä potilas kotiin", hospital_1 = "Lähetä potilas toiseen sairaalaan", hospital_2 = "Lähetä potilas toiseen sairaalaan", hospital_3 = "Lähetä potilas toiseen sairaalaan", }, }, -- Main menu main_menu = { new_game = "Aloita uusi peli", load_game = "Lataa aiemmin tallennettu peli", continue = "Jatka edellistä peliä", network = "Aloita verkkopeli", quit = "Lopeta", load_menu = { load_slot = " PELI ", -- NB: no %d! Append " [slotnumber]". empty_slot = " TYHJÄ ", }, }, -- Window general window_general = { cancel = "Peruuta", confirm = "Vahvista", }, -- Information dialog information = { close = "Sulje tiedoteikkuna", }, -- Patient window patient_window = { close = "Sulje ikkuna", graph = "Klikkaa vaihtaaksesi potilaan terveyskuvaajan ja hoitohistorian välillä", happiness = "Potilaan tyytyväisyys", thirst = "Potilaan jano", warmth = "Potilaan lämpötila", casebook = "Näytä lisätietoja potilaan sairaudesta", send_home = "Lähetä potilas kotiin sairaalasta", center_view = "Keskitä näkymä potilaaseen", abort_diagnosis = "Lähetä potilas suoraan hoitoon ennen diagnoosin valmistumista", queue = "Näytä jono, jossa potilas on", }, -- window staff_window = { name = "Työntekijän nimi", close = "Sulje ikkuna", face = "Työntekijän kuva - avaa henkilökuntaluettelo klikkaamalla", happiness = "Tyytyväisyys", tiredness = "Väsymys", ability = "Kyvyt", doctor_seniority = "Kokemus (Harjoittelija, Tohtori, Konsultti)", skills = "Erikoistuminen", surgeon = "Kirurgi", psychiatrist = "Psykiatri", researcher = "Tutkija", salary = "Kuukausipalkka", center_view = "Keskitä näkymä työntekijään klikkaamalla vasemmalla, selaa työntekijöitä klikkaamalla oikealla", sack = "Anna potkut", pick_up = "Poimi työntekijä", }, -- Machine window machine_window = { name = "Koneen nimi", close = "Sulje ikkuna", times_used = "Käyttökertojen määrä", status = "Koneen tila", repair = "Kutsu huoltomies huoltamaan kone", replace = "Korvaa kone uudella", }, -- Handyman window -- Apparently handymen have their own set of strings (partly) containing "handyman". -- We could just get rid of this category and include the three prios into staff_window. handyman_window = { ability = "Kyvyt", center_view = "Keskitä näkymä huoltomieheen", -- contains "handyman" close = "Sulje ikkuna", face = "Huoltomiehen kuva", -- contains "handyman" happiness = "Tyytyväisyys", name = "Huoltomiehen nimi", -- contains "handyman" parcel_select = "Alue, jolla huoltomies hoitaa tehtäviään. Klikkaa vaihtaaksesi asetusta", pick_up = "Poimi huoltomies", prio_litter = "Pyydä huoltomiestä keskittymään lattioiden siivoamiseen", -- contains "handyman" prio_plants = "Pyydä huoltomiestä keskittymään kasvien kastelemiseen", -- contains "handyman" prio_machines = "Pyydä huoltomiestä keskittymään koneiden huoltamiseen", -- contains "handyman" sack = "Anna potkut", salary = "Kuukausipalkka", tiredness = "Väsymys", }, -- Place objects window place_objects_window = { cancel = "Peruuta", buy_sell = "Osta/Myy kalusteita", pick_up = "Poimi kaluste", confirm = "Vahvista", }, -- Casebook casebook = { up = "Vieritä ylös", down = "Vieritä alas", close = "Sulje hoitokirja", reputation = "Hoito- ja diagnoosimaine lähialueella", treatment_charge = "Hoidon hinta", earned_money = "Tähän mennessä ansaittu rahasumma", cured = "Parannettujen potilaiden määrä", deaths = "Hoidon seurauksena kuolleiden potilaiden määrä", sent_home = "Kotiin lähetettyjen potilaiden määrä", decrease = "Laske hintaa", increase = "Nosta hintaa", research = "Klikkaa käyttääksesi tutkimusbudjettia taudin tutkimukseen ja sen hoitoon erikoistumiseen", cure_type = { drug = "Tämä tauti vaatii lääkitystä", drug_percentage = "Tämä tauti vaatii lääkitystä - sinun lääkkeesi tehokkuus on %d%%", -- %d (effectiveness percentage) psychiatrist = "Tämä tauti vaatii psykiatrin hoitoa", surgery = "Tämä tauti vaatii leikkauksen", machine = "Tämä tauti vaatii erikoislaitteen", }, cure_requirement = { possible = "Voit hoitaa potilaan terveeksi", research_machine = "Sinun täytyy kehittää erikoislaite hoitaaksesi sairautta", build_room = "Sinun täytyy rakentaa hoitohuone hoitaaksesi sairautta", hire_surgeons = "Tarvitset kaksi kirurgia hoitaaksesi sairautta", -- unused hire_surgeon = "Tarvitset yhden kirurgin hoitaaksesi sairautta", -- unused hire_staff_old = "Sinun täytyy palkata %s hoitaaksesi sairautta", -- %s (staff type), unused. Use hire_staff instead. build_ward = "Sinun täytyy rakentaa vuodeosasto hoitaaksesi sairautta", -- unused ward_hire_nurse = "Tarvitset sairaanhoitajan vuodeosastollesi hoitaaksesi sairautta", -- unused not_possible = "Et voi vielä hoitaa sairautta", -- unused }, }, -- Statement statement = { close = "Sulje tiliote", }, -- Research research = { close = "Poistu tutkimusosastolta", cure_dec = "Laske hoitotutkimuksen tärkeysastetta", diagnosis_dec = "Laske diagnoositutkimuksen tärkeysastetta", drugs_dec = "Laske lääketutkimuksen tärkeysastetta", improvements_dec = "Laske laitteistotutkimuksen tärkeysastetta", specialisation_dec = "Laske erikoistumistutkimuksen tärkeysastetta", cure_inc = "Nosta hoitotutkimuksen tärkeysastetta", diagnosis_inc = "Nosta diagnoositutkimuksen tärkeysastetta", drugs_inc = "Nosta lääketutkimuksen tärkeysastetta", improvements_inc = "Nosta laitteistotutkimuksen tärkeysastetta", specialisation_inc = "Nosta erikoistumistutkimuksen tärkeysastetta", allocated_amount = "Tutkimukseen suunnattu rahoitus", }, -- Graphs graphs = { close = "Sulje kuvaajaikkuna", scale = "Skaalaa diagrammia", money_in = "Näytä/Piilota tulot", money_out = "Näytä/Piilota menot", wages = "Näytä/Piilota palkat", balance = "Näytä/Piilota tilin saldo", visitors = "Näytä/Piilota potilaat", cures = "Näytä/Piilota parannetut", deaths = "Näytä/Piilota kuolleet", reputation = "Näytä/Piilota maine", }, -- Town map town_map = { people = "Näytä/Piilota ihmiset", plants = "Näytä/Piilota kasvit", fire_extinguishers = "Näytä/Piilota vaahtosammuttimet", objects = "Näytä/Piilota kalusteet", radiators = "Näytä/Piilota lämpöpatterit", heat_level = "Lämpötila", heat_inc = "Nosta lämpötilaa", heat_dec = "Laske lämpötilaa", heating_bill = "Lämmityskustannukset", balance = "Tilin saldo", close = "Sulje kartta", }, -- Jukebox. jukebox = { current_title = "Jukeboksi", close = "Sulje jukeboksi-ikkuna", play = "Käynnistä jukeboksi", rewind = "Kelaa jukeboksia taakse", fast_forward = "Kelaa jukeboksia eteen", stop = "Pysäytä jukeboksi", loop = "Toista jukeboksia silmukassa", }, -- Bank Manager bank_manager = { hospital_value = "Sairaalasi tämänhetkinen arvo", balance = "Pankkitilisi saldo", current_loan = "Pankkilainan määrä", repay_5000 = "Maksa pankille 5000 takaisin", borrow_5000 = "Lainaa pankilta 5000 lisää", interest_payment = "Kuukausittaiset korkokustannukset", inflation_rate = "Vuotuinen inflaatio", interest_rate = "Vuotuinen korko", close = "Poistu pankista", insurance_owed = "Määrä, jonka %s on sinulle velkaa", -- %s (name of debitor) show_graph = "Näytä velallisen %s maksusuunnitelma", -- %s (name of debitor) graph = "Velallisen %s maksusuunnitelma", -- %s (name of debitor) graph_return = "Palaa edelliseen näyttöön", }, -- Status status = { win_progress_own = "Näytä pelaajan edistyminen tämän tason vaatimusten suhteen", win_progress_other = "Näytä kilpailijan %s edistyminen tämän tason vaatimusten suhteen", -- %s (name of competitor) population_chart = "Kuvaaja, joka näyttää kuinka suuri osa paikallisesta väestöstä hakeutuu mihinkin sairaalaan hoidettavaksi", happiness = "Kaikkien sairaalassasi olevien keskimääräinen tyytyväisyys", thirst = "Kaikkien sairaalassasi olevien keskimääräinen janoisuus", warmth = "Kaikkien sairaalassasi olevien keskimääräinen lämpötila", close = "Sulje tilanneikkuna", reputation = "Maineesi pitää olla vähintään %d. Tällä hetkellä se on %d", -- %d (target reputation) %d (current reputation) balance = "Sinulla tulee olla rahaa tililläsi vähintää %d$. Tällä hetkellä sitä on %d$", -- %d (target balance) %d (current balance) population = "%d%% alueen väestöstä pitää kuulua asiakaskuntaasi", num_cured = "Tavoitteenasi on parantaa %d ihmistä. Tähän mennessä olet parantanut %d", percentage_killed = "Tavoitteenasi on tappaa vähemmän kuin %d%% potilaistasi. Tähän mennessä olet tappanut %d%% heistä", value = "Sairaalasi arvon tulee olla vähintään $%d. Nyt se on $%d", percentage_cured = "Sinun pitää parantaa %d%% sairaalaasi saapuneista potilaista. Tähän mennessä olet parantanut %d%% heistä", }, -- Policy policy = { close = "Sulje käytännöt-ikkuna", staff_leave = "Klikkaa tästä asettaaksesi henkilökunnan liikkumaan vapaasti huoneiden välillä ja auttamaan kollegojaan tarvittaessa", staff_stay = "Klikkaa tästä asettaaksesi henkilökunnan pysymään huoneissa, joihin olet heidät asettanut", diag_procedure = "Jos lääkärin diagnoosi on epävarmempi kuin LÄHETÄ KOTIIN-prosentti, lähetetään potilas kotiin. Jos diagnoosi on varmempi kuin ANNA HOITO-prosentti, lähetetään potilas suoraan hoitoon", diag_termination = "Potilaan diagnoosia jatketaan, kunnes lääkärit ovat yhtä varmoja kuin KESKEYTÄ PROSESSI-prosentti tai kaikkia diagnoosikoneita on kokeiltu", staff_rest = "Kuinka väsynyttä henkilöstön pitää olla ennen kuin he saavat levätä", }, -- Pay rise window pay_rise_window = { accept = "Myönny vaatimuksiin", decline = "Kieltäydy vaatimuksista - Anna lopputili sen sijaan", }, -- Watch watch = { hospital_opening = "Rakennusaika: sinulla on tämän verran aikaa jäljellä ennen kuin sairaala avataan potilaille. Paina vihreää AVAA-nappia avataksesi sairaalasi välittömästi.", emergency = "Hätätilanne: Akuuttien potilaiden parantamiseen jäljellä oleva aika.", epidemic = "Epidemia: Epidemian taltuttamiseen jäljellä oleva aika. Kun aika kuluu loppuun TAI tartunnan saanut potilas poistuu sairaalasta, terveystarkastaja saapuu vierailulle. Paina nappia aloittaaksesi ja lopettaaksesi rokotukset. Klikkaa potilaita kutsuaksesi sairaanhoitajan rokottamaan heidät.", }, -- Rooms rooms = { gps_office = "Potilaat tutkitaan ja diagnosoidaan alustavasti yleislääkärin toimistossa.", psychiatry = "Psykiatrin vastaanotolla hoidetaan mielenhäiriöistä kärsiviä potilaita ja autetaan diagnosoinnissa. Vaatii psykiatriaan erikoistuneen lääkärin", ward = "Vuodeosasto on hyödyllinen sekä diagnosoinnissa että hoidossa. Potilaita lähetetään tänne tarkkailtavaksi ja toipumaan leikkauksen jälkeen. Vaatii sairaanhoitajan", operating_theatre = "Leikkaussalissa tarvitaan kaksi kirurgiaan erikoistunutta lääkäriä", pharmacy = "Apteekissa sairaanhoitaja jakaa lääkkeitä niitä tarvitseville potilaille", cardiogram = "Lääkäri tutkii potilaiden sydänkäyriä kardiogrammin avulla ja diagnosoi sydäntauteja", scanner = "Lääkäri käyttää magneettikuvausta potilaiden diagnosoimiseen", ultrascan = "Lääkäri käyttää ultraääntä potilaiden diagnosoimiseen", blood_machine = "Lääkäri käyttää verikonetta potilaiden veren tutkimiseen ja diagnosoimiseen", x_ray = "Lääkäri kuvaa röntgenillä potilaiden luut ja tekee niiden perusteella diagnooseja", inflation = "Lääkäri käyttää pumppauskonetta pallopäisyyttä sairastavien potilaiden hoitoon", dna_fixer = "Lääkäri käyttää DNA-konetta alienin DNA:sta kärsivien potilaiden hoidossa", hair_restoration = "Lääkäri käyttää hiustenpalautinta kaljuuntumisesta kärsivien potilaiden hoitoon", tongue_clinic = "Kieliklinikalla lääkäri hoitaa potilaita, joilla on löyhä kieli", fracture_clinic = "Murtumaklinikkalla sairaanhoitaja korjaa potilaiden murtumia", training_room = "Konsultointiin erikoistunut lääkäri pitää luentoja koulutushuoneessa ja opettaa muita lääkäreitä", electrolysis = "Elektrolyysiklinikkalla lääkäri hoitaa turkinkasvua sairastavia potilaita", jelly_vat = "Lääkäri käyttää hyytelömuovainta hyytelöitymisestä kärsivien potilaiden parantamiseen", staffroom = "Lääkärit, sairaanhoitajat ja huoltomiehet käyttävät taukohuonetta lepäämiseen ja mielialansa parantamiseen", -- rehabilitation = S[33][27], -- unused general_diag = "Lääkäri suorittaa täällä perusdiagnoosin yleislääkärillä vierailleille potilaille. Halpa ja monien sairauksien diagnosointiin varsin tehokas huone", research_room = "Tutkimukseen erikoistunut lääkäri voi kehittää täällä uusia lääkkeitä ja koneita sairauksien parantamiseksi", toilets = "Rakenna käymälä, jotta potilaat eivät sotke sairaalaasi!", decontamination = "Säteilyklinikalla lääkäri hoitaa vakavasta säteilystä kärsiviä potilaita", }, -- Objects objects = { -- NB: most objects do not have a tooltip because they're not (extra-)buyable desk = "Pöytä: Lääkäri voi käyttää pöydällä tietokonettaan.", cabinet = "Arkistokaappi: Pitää sisällään potilastietoja, muistiinpanoja ja tutkimusaineistoa.", door = "Ovi: Ihmiset avaavat ja sulkevat tätä vähän väliä.", bench = "Penkki: Tarjoaa potilaille istumapaikan ja tekee odottamisesta mukavampaa.", table1 = S[40][ 6], -- unused chair = "Tuoli: Potilaat istuvat tässä ja kertovat ongelmistaan ja oireistaan.", drinks_machine = "Juoma-automaatti: Pitää potilaiden janon kurissa ja tuottaa tuloja sairaalalle.", bed = "Sänky: Vakavasti sairaat potilaat makaavat näissä.", inflator = "Pumppauskone: Parantaa potilaat, jotka sairastavat pallopäisyyttä.", pool_table = "Biljardipöytä: Auttaa henkilökuntaasi rentoutumaan.", reception_desk = "Vastaanotto: Vaatii vastaanottoapulaisen, joka opastaa potilaita eteenpäin.", table2 = S[40][13], -- unused & duplicate cardio = S[40][14], -- no description scanner = S[40][15], -- no description console = S[40][16], -- no description screen = S[40][17], -- no description litter_bomb = "Roskapommi: Sabotoi kilpailijan sairaalaa", couch = S[40][19], -- no description sofa = "Sohva: Työntekijät, jotka ovat taukohuoneessa, istuvat paikallaan sohvalla kuin parempaa rentoutumistapaa ei olisikaan.", crash_trolley = S[40][21], -- no description tv = "TV: Harmi, ettei henkilökunnallasi ole yleensä aikaa katsoa lempiohjelmaansa loppuun.", ultrascanner = S[40][23], -- no description dna_fixer = S[40][24], -- no description cast_remover = S[40][25], -- no description hair_restorer = S[40][26], -- no description slicer = S[40][27], -- no description x_ray = S[40][28], -- no description radiation_shield = S[40][29], -- no description x_ray_viewer = S[40][30], -- no description operating_table = S[40][31], -- no description lamp = S[40][32], -- unused toilet_sink = "Pesuallas: Hygieniariippuvaiset potilaasi voivat pestä likaantuneet kätensä tässä. Jos altaita ei ole riittävästi, he tulevat tyytymättömiksi.", op_sink1 = S[40][34], -- no description op_sink2 = S[40][35], -- no description surgeon_screen = S[40][36], -- no description lecture_chair = "Luentotuoli: Lääkäriopiskelijasi istuvat tässä ja tuhertavat innokkaasti muistiinpanoja. Mitä enemmän tuoleja luokassa on sitä enemmän opiskelijoita sinne mahtuu.", projector = S[40][38], -- no description bed2 = S[40][39], -- unused duplicate pharmacy_cabinet = "Lääkekaappi: Lääkevalikoimasi löytyy täältä.", computer = "Tietokone: Nerokas tiedonlähde", atom_analyser = "Atomianalysaattori: Sijoitettuna tutkimusosastolle tämä nopeuttaa koko tutkimusprosessia.", blood_machine = S[40][43], -- no description fire_extinguisher = "Vaahtosammutin: Minimoi vaaran, jonka laitteiden vikaantuminen voi aiheuttaa.", radiator = "Lämpöpatteri: Pitää huolta, ettei sairaalassasi pääse tulemaan kylmä.", plant = "Kasvi: Pitää potilaiden mielialan korkealla ja puhdistaa ilmaa.", electrolyser = S[40][47], -- no description jelly_moulder = S[40][48], -- no description gates_of_hell = S[40][49], -- no description bed3 = S[40][50], -- unused duplicate bin = "Roskakori: Potilaat heittävät roskansa tänne.", toilet = "Eriö: Potilaat, öh... tekevät tarpeensa tänne.", swing_door1 = S[40][53], -- no description swing_door2 = S[40][54], -- no description shower = S[40][55], -- no description auto_autopsy = "Ruumiinavauskone: Mahtava apuväline uusien hoitomenetelmien kehittämisessä.", bookcase = "Kirjahylly: Referenssimateriaalia lääkärille.", video_game = "Videopeli: Anna henkilökuntasi rentoutua Hi-Octane-pelin parissa.", entrance_left = S[40][59], -- no description entrance_right = S[40][60], -- no description skeleton = "Luuranko: Käytetään opetuksessa ja Halloween-koristeena.", comfortable_chair = S[40][62], -- no description }, } -- 32. Adviser adviser = { -- Tutorial tutorial = { start_tutorial = "Lue tason kuvaus ja klikkaa hiiren vasemmalla painikkeella aloittaaksesi esittelyn.", build_reception = "Hei! Ensimmäisenä sairaalasi tarvitsee vastaanoton. Löydät sen osta kalusteita -valikosta.", order_one_reception = "Klikkaa hiiren vasemmalla painikkeella kerran vilkkuvaa aluetta valitaksesi yhden vastaanoton.", accept_purchase = "Klikkaa nyt vilkkuvaa aluetta ostaaksesi valitsemasi kalusteet.", rotate_and_place_reception = "Klikkaa hiiren oikeaa painikketta pyörittääksesi vastaanotto haluamaasi suuntaan ja klikkaa vasemalla asettaaksesi se paikalleen.", reception_invalid_position = "Vastaanotto näkyy harmaana, koska sitä ei voida sijoittaa tähän. Kokeile siirtää tai pyörittää sitä.", hire_receptionist = "Nyt tarvitset vastaanottoapulaisen ottamaan potilaasi vastaan ja ohjaamaan heidät oikeisiin huoneisiin.", select_receptionists = "Klikkaa vilkkuvaa ikonia käydäksesi läpi saatavilla olevia vastaanottoapulaisia. Ikonissa näkyvä numero kertoo saatavilla olevien apulaisten määrän.", next_receptionist = "Tämä on listan ensimmäinen vastaanottoapulainen. Klikkaa vilkkuvaa ikonia nähdäksesi seuraavan henkilön.", prev_receptionist = "Klikkaa vilkkuvaa ikonia nähdäksesi edellisen henkilön.", choose_receptionist = "Valitse vastaanottoapulainen, jolla on hyvät taidot ja hyväksyttävä palkkavaatimus. Klikkaa vilkkuvaa ikonia palkataksesi hänet.", place_receptionist = "Poimi vastaanottoapulainen ja aseta hänet minne tahansa sairaalassasi. Hän löytää kyllä rakentamaasi vastaanottoon omin avuin.", receptionist_invalid_position = "Et voi asettaa työntekijääsi tähän. Kokeile asettaa hänet sairaalan sisälle paikkaan, jossa on tyhjää lattiaa.", window_in_invalid_position = "Ikkuna ei sovi tähän. Ole hyvä ja yritä asettaa se toiseen kohtaan seinällä.", choose_doctor = "Käy läpi kaikkien lääkäreiden taidot ja palkkavaatimukset ennen kuin päätät kenet haluat palkata.", click_and_drag_to_build = "Rakentaaksesi yleislääkärin toimiston sinun pitää ensin päättää kuinka suuri siitä tulee. Pidä hiiren vasen nappi pohjassa ja vedä hiirtä muuttaaksesi huoneen kokoa.", build_gps_office = "Jotta voit alkaa diagnosoida potilaita, sinun pitää rakentaa yleislääkärin toimisto.", door_in_invalid_position = "Hupsista! Yritit sijoittaa oven epäsopivaan paikkaan. Kokeile jotain toista kohtaa pohjapiirrustuksen seinässä.", confirm_room = "Klikkaa hiiren vasemmalla painikkeella vilkkuvaa ikonia, kun huone on valmis tai klikkaa X:ää palataksesi edelliseen vaiheeseen.", select_diagnosis_rooms = "Klikkaa hiiren vasemmalla painikkeella vilkkuvaa ikonia nähdäksesi listan diagnoosihuoneista, joita voit rakentaa.", hire_doctor = "Tarvitset lääkärin tutkimaan ja hoitamaan potilaita.", select_doctors = "Klikkaa hiiren vasemmalla painikkeella vilkkuvaa ikonia nähdäksesi lääkärit, jotka ovat saatavilla työmarkkinoilla.", place_windows = "Aseta ikkunat paikalleen samaan tapaan kuin asetit oven. Sinun ei ole pakko rakentaa ikkunoita, mutta työntekijäsi eivät pitäisi siitä lainkaan.", place_doctor = "Aseta lääkäri minne tahansa sairaalassasi. Hän menee yleislääkärin toimistoon heti, kun joku tarvitsee hoitoa.", room_in_invalid_position = "Hups! Tämä pohjapiirrustus ei kelpaa: punaiset alueet näyttävät, missä kohdin suunnitelmasi menee toisen huoneen päälle tai sairaalan ulkoseinien läpi.", doctor_in_invalid_position = "Hei! Et voi laittaa lääkäriä tähän. Koeta sijoittaa hänet tyhjälle lattia-alueelle.", place_objects = "Klikkaa hiiren oikeaa painikketta pyörittääksesi kalusteita ja vasenta asettaaksesi ne paikalleen.", room_too_small = "Tämä pohjapiirrustus näkyy punaisena, koska se on liian pieni. Vedä hiirtä pidempi matka saadaksesi suurempi huone.", click_gps_office = "Klikkaa hiiren vasemmalla painikkeella vilkkuvaa aluetta valitaksesi yleislääkärin toimiston.", room_too_small_and_invalid = "Pohjapiirrustus on liian pieni ja väärin aseteltu. Kokeile uudestaan.", object_in_invalid_position = "Tämä kaluste on väärin asetettu. Ole hyvä ja sijoita se toiseen paikkaan tai pyöritä sitä saadaksesi se sopimaan.", place_door = "Siirrä hiiri pohjapiirrustuksen reunalle asettaaksesi ovi haluamaasi paikkaan.", room_big_enough = "Pohjapiirrustus on riittävän suuri. Kun päästät hiiren painikkeen, asetat sen paikalleen. Voit halutessasi jatkaa sen muokkaamista.", build_pharmacy = "Onnittelut! Seuraavaksi kannattaa rakentaa Apteekki ja palkata sairaanhoitaja, jotta sairaalasi on täysin toimintavalmis.", information_window = "Tiedoteikkunassa kerrotaan lisätietoja juuri rakentamastasi yleislääkärin toimistosta.", }, -- Epidemic epidemic = { hurry_up = "Jos et ota nopeasti epidemiaa hallintaasi, siitä seuraa suuria ongelmia. Kiirehdi!", serious_warning = "Tartuntatauti leviää sairaalassasi ja alkaa muodostua vakavaksi ongelmaksi. Sinun on tehtävä jotain ja pian!", multiple_epidemies = "Sinulla näyttää olevan useampi kuin yksi epidemia riesanasi. Tästä voi seurata pahaa jälkeä, joten nyt on tulenpalava kiire.", }, -- Staff advice staff_advice = { need_handyman_machines = "Sinun täytyy palkata huoltomiehiä, jos haluat koneidesi pysyvän kunnossa.", need_doctors = "Tarvitset useita lääkäreitä. Kokeile siirtää parhaat lääkärisi huoneisiin, joihin on pisin jono.", need_handyman_plants = "Sinun täytyy palkata huoltomies kastelemaan kasvejasi, etteivät ne kuole.", need_handyman_litter = "Ihmiset valittavat, että sairaalasi muistuttaa kaatopaikkaa. Palkkaa huoltomies siivoamaan potilaidesi sotkut.", need_nurses = "Tarvitset useita sairaanhoitajia. Vuodeosastoa ja apteekkia voivat hoitaa vain sairaanhoitajat.", too_many_doctors = "Sairaalassasi on liikaa lääkäreitä. Osalla heistä ei ole mitään tekemistä.", too_many_nurses = "Uskoisin, että sinulla on liikaa sairaanhoitajia palkkalistoillasi.", }, -- Earthquake earthquake = { damage = "Maanjäristys on vioittanut %d laitetta ja %d potilasta on loukkaantunut sairaalassasi.", -- %d (count machines), &d (count patients) alert = "Maanjäristysvaroitus. Maanjäristys vahingoittaa laitteitasi ja ne voivat lakata toimimasta kokonaan, jos niitä ei ole huollettu kunnolla.", ended = "Huh. Se tuntui voimakkaalta järistykseltä - magnitudiksi mitattiin %d Richterin asteikolla.", }, -- Multiplayer multiplayer = { objective_completed = "Olet saavuttanut kaikki tämän tason tavoitteet. Onnittelut!", everyone_failed = "Kukaan ei ole saavuttanut asetettuja tavoitteita. Kaikki saavat siis jatkaa yrittämistä!", players_failed = "Seuraavat pelaajat eivät ole saavuttaneet asetettuja tavoitteita: ", objective_failed = "Et ole onnistunut saavuttamaan tämän tason tavoitteita.", poaching = { in_progress = "Yritän tiedustella josko tämä henkilö olisi kiinnostunut siirtymään palvelukseesi.", not_interested = "Hah! Häntä ei kiinnosta tulla töihin sinulle - hänellä on kaikki hyvin nykyisissä työpaikassaan.", already_poached_by_someone = "Turha haaveilla! Joku muu yrittää jo parhaillaan viedä tätä työntekijää.", }, }, -- Surgery requirements surgery_requirements = { need_surgeons_ward_op = "Tarvitset kaksi kirurgia ja vuodeosaston leikkaussalin lisäksi voidaksesi suorittaa kirurgisia toimenpiteitä.", need_surgeon_ward = "Tarvitset vuodeosaston ja yhden kirurgin lisää voidaksesi suorittaa kirurgisia toimenpiteitä.", }, -- Vomit wave vomit_wave = { started = "Sairaalaasi näyttää levinneen oksennustautia aiheuttava virus. Jos olisit palkannut lisää huoltomiehiä pitämään paikat puhtaina, näin ei olisi päässyt käymään.", ended = "Huh! Viruksen aiheuttama oksennustauti on saatu kuriin. Pidä sairaalasi puhtaampana jatkossa.", }, -- Level progress level_progress = { nearly_won = "Olet miltei saavuttanut tämän tason tavoitteet.", three_quarters_lost = "Vain yksi neljännes erottaa sinut lopullisesta tappiosta.", halfway_won = "Olet jo puolittain voittanut tämän tason.", halfway_lost = "Toinen jalkasi on jo haudassa tavotteiden suhteen.", nearly_lost = "Tappiosi on viimeistä naulaa vaille valmis.", three_quarters_won = "Vain yksi neljännes tavoitteista on enää suorittamatta.", }, -- Staff place advice staff_place_advice = { receptionists_only_at_desk = "Vain vastaanottoapulaiset voivat työskennellä vastaanotossa.", only_psychiatrists = "Vain psykiatriaan erikoistuneet lääkärit voivat työskennellä psykiatrin vastaanotolla.", only_surgeons = "Vain kirurgiaan erikoistuneet lääkärit voivat työskennellä leikkaussalissa.", only_nurses_in_room = "%s sopii ainoastaan sairaanhoitajan hoidettavaksi.", only_doctors_in_room = "%s sopii ainoastaan lääkärin hoidettavaksi.", only_researchers = "Vain tutkimukseen erikoistuneet lääkärit voivat työskennellä tutkimusosastolla.", nurses_cannot_work_in_room = "%s ei sovellu sairaanhoitajan hoidettavaksi.", doctors_cannot_work_in_room = "%s ei sovellu lääkärin hoidettavaksi.", }, -- Research research = { machine_improved = "Kehittyneempi %s on valmistunut tutkimusosastollasi.", autopsy_discovered_rep_loss = "Tieto automaattisesta ruumiinavauskoneestasi on vuotanut julkisuuteen. Ihmisiltä on odotettavissa negatiivinen reaktio.", drug_fully_researched = "Lääkkeen %s kehitystyö on saatu päätökseen.", new_machine_researched = "Uusi %s on saatu kehitettyä.", drug_improved = "Kehittyneempi %s-lääke on valmistunut tutkimusosastollasi.", new_available = "Uusi %s on nyt saatavilla.", new_drug_researched = "Sairauteen %s on kehitetty uusi lääke.", }, -- Boiler issue boiler_issue = { minimum_heat = "Keskuslämmitys on sanonut työsopimuksensa irti. Vaikuttaisi siltä, että sairaalassasi oleville ihmisille tulee pian jäiset oltavat.", maximum_heat = "Kellarissa oleva lämmitysuuni on hajonnut. Uuni on jumiutunut täydelle teholle ja ihmiset sulavat sairaalassasi! Sijoita runsaasti juoma-automaatteja kaikkialle.", resolved = "Hyviä uutisia. Keskuslämmitys toimii taas niin kuin pitääkin. Lämpötilan ei enää pitäisi vaivata potilaita eikä henkilökuntaa.", }, -- Competitors competitors = { staff_poached = "Yksi työntekijöistäsi on palkattu kilpailevaan sairaalaan.", hospital_opened = "Kilpaileva sairaala on avattu lähellä aluetta %s.", land_purchased = "%s on ostanut itselleen tontin.", }, -- Room requirements room_requirements = { research_room_need_researcher = "Sinun täytyy palkata tutkimukseen erikoistunut lääkäri ennen kuin voit ottaa tutkimusosaston käyttöön.", op_need_another_surgeon = "Tarvitset vielä yhden kirurgin lisää ennen kuin voit ottaa leikkaussalin käyttöön.", op_need_ward = "Sinun täytyy rakentaa vuodeosasto, jotta voit valvoa leikkauksessa käyneiden potilaiden paranemista.", reception_need_receptionist = "Sinun täytyy palkata vastaanottoapulainen ottamaan potilaat vastaan sairaalaasi.", psychiatry_need_psychiatrist = "Sinun täytyy palkata psykiatriaan erikoistunut lääkäri nyt, kun olet rakentanut psykiatrin vastaanoton.", pharmacy_need_nurse = "Tarvitset sairaanhoitajan huolehtimaan apteekistasi.", ward_need_nurse = "Sinun täytyy palkata sairaanhoitaja työskentelemään vuodeosastolla.", op_need_two_surgeons = "Sinun täytyy palkata kaksi kirurgia, jotta voit suorittaa kirurgisia toimenpiteitä leikkaussalissasi.", training_room_need_consultant = "Tarvitset konsultti-lääkärin opettamaan nuorempia lääkäreitäsi koulutushuoneessa.", gps_office_need_doctor = "Sinun täytyy palkata lääkäri tekemään alustavia diagnooseja yleislääkärin toimistossa.", }, -- Goals goals = { win = { money = "Sinulta puuttuu %d$ rahaa tämän tason taloudellisten tavoitteiden saavuttamiseksi.", cure = "Sinun pitää parantaa vielä %d potilasta tämän tason vaatimusten täyttämiseksi.", reputation = "Suosiosi pitää olla vähintään %d edetäksesi suraavalle tasolle.", value = "Sairaalasi arvon tulee ylittää %d, jotta saat tämän tason suoritettua onnistuneesti.", }, lose = { kill = "Jos sairaalassasi kuolee vielä %d potilasta, häviät tämän tason!", }, }, -- Warnings warnings = { charges_too_low = "Veloitat palveluistasi liian vähän. Tämä houkuttelee kyllä sairaalaasi runsaasti potilaita, mutta ansaitset vähemmän jokaista potilasta kohden.", charges_too_high = "Hintasi ovat liian korkeat. Se tuottaa sinulle runsaasti rahaa lyhyellä tähtäimellä, mutta pitkällä tähtäimellä korkeat hinnat karkoittavat asiakkaita.", plants_thirsty = "Sinun täytyy huolehtia kasveistasi. Ne ovat janoisia.", staff_overworked = "Työntekijäsi ovat ylityöllistettyjä. Heistä tulee tehottomia ja he tekevät hengenvaarallisia virheitä ollessaan väsyneitä.", queue_too_long_at_reception = "Sinulla on liikaa potilaita odottamassa vastaanotossasi. Rakenna lisää vastaanottoja ja palkkaa niihin vastaanottoapulaiset.", queue_too_long_send_doctor = "Jono huoneeseen %s on liian pitkä. Varmista, että huoneessa on lääkäri.", handymen_tired = "Huoltomiehesi ovat erittäin väsyneitä. Anna heidän levätä riittävästi.", money_low = "Rahasi uhkaavat loppua, jollet puutu asioihin!", money_very_low_take_loan = "Rahasi ovat miltei lopussa. Voit ottaa lainaa pankilta selvitäksesi tästä ainakin hetkeksi.", staff_unhappy = "Henkilökuntasi on tyytymätön. Kokeile antaa heille bonuksia tai rakentaa heille taukohuone. Voit myös muuttaa taukokäytäntöä Sairaalan käytännöt -ikkunasta.", no_patients_last_month = "Sairaalaasi ei tullut ainuttakaan uutta potilasta viime kuussa. Shokki!", queues_too_long = "Jonot ovat liian pitkiä sairaalassasi.", patient_stuck = "Yksi potilaistasi on eksynyt. Sinun pitäisi järjestää sairaalasi paremmin.", patients_too_hot = "Potilailla on liian kuuma. Voit poistaa ylimääräisiä lämpöpattereita, laskea lämmityksen tehoa tai rakentaa lisää juoma-automaatteja.", doctors_tired = "Lääkärisi ovat erittäin väsyneitä. Anna heille lepotaukoja ennen kuin jollekulle käy hassusti.", need_toilets = "Potilaasi tarvitsevat käymälöitä. Rakenna ne helposti saavutettaviin paikkoihin.", machines_falling_apart = "Laitteesi ovat hajoamispisteessä. Käske huoltomiehiäsi huoltamaan niitä välittömästi!", nobody_cured_last_month = "Yhtä ainuttakaan potilasta ei saatu parannettua viime kuussa.", patients_thirsty = "Potilaasi ovat janoisia. Sinun pitäisi antaa heille mahdollisuus ostaa juotavaa.", nurses_tired = "Sairaanhoitajasi ovat erittäin väsyneitä. Anna heidän levätä riittävästi.", machine_severely_damaged = "%s on hyvin lähellä täydellistä tuhoutumista.", reception_bottleneck = "Vastaanotto on sairaalasi pullonkaula. Palkaa toinen vastaanottoapulainen.", bankruptcy_imminent = "Huhuu! Tilanteesi lähestyy uhkaavasti konkurssia. Ole varovainen!", receptionists_tired = "Vastaanottoapulaisesi ovat erittäin väsyneitä. Anna heidän levätä riittävästi.", too_many_plants = "Sinulla on liikaa kasveja. Sairaalasi näyttää jo ihan viidakolta.", many_killed = "Sairaalassasi on kuollut jo %d potilasta. Tiesitkö, että tarkoituksena olisi ollut parantaa heidät.", need_staffroom = "Rakenna henkilökunnan taukohuone viipymättä, jotta he pääsevät välillä lepäämäänkin.", staff_too_hot = "Henkilökuntasi on sulamispisteessä. Laske sairaalasi lämpötilaa tai vähennä lämpöpattereita heidän huoneistaan.", patients_unhappy = "Potilaasi ovat tyytymättömiä sairaalaasi. Sinun pitäisi tehdä jotakin saadaksesi sairaalasi mukavammaksi.", pay_back_loan = "Sinulla on runsaasti rahaa. Voisit harkita lainasi lyhentämistä.", }, -- Placement info placement_info = { door_can_place = "Voit asettaa oven tähän, jos haluat.", window_can_place = "Ikkuna voidaan rakentaa tähän. Se onnistuu hienosti.", door_cannot_place = "Valitettavasti et voi rakentaa ovea tähän.", object_can_place = "Valitsemasi kaluste voidaan sijoittaa tähän.", reception_can_place = "Vastaanotto voidaan asettaa tähän.", staff_cannot_place = "Et voi asettaa työntekijääsi tähän. Pahoittelut.", staff_can_place = "Voit asettaa työntekijän tähän. ", object_cannot_place = "Huhuu, ei tätä kalustetta voi sijoittaa tähän.", room_cannot_place = "Huonetta ei voi sijoittaa tähän.", room_cannot_place_2 = "Huonetta ei voi rakentaa tähän.", window_cannot_place = "Et voi rakentaa ikkunaa tähän.", reception_cannot_place = "Vastaanottoa ei voi sijoittaa tähän.", }, -- Praise praise = { many_benches = "Potilailla on tarpeeksi istumapaikkoja. Hienoa.", many_plants = "Mahtavaa. Sinulla on paljon kasveja. Potilaasi arvostavat sitä varmasti.", patients_cured = "%d potilasta parannettu.", }, -- Information information = { larger_rooms = "Suurempi huone saa työntekijät tuntemaan itsensä tärkeämmiksi, mikä parantaa heidän suoritustasoaan.", extra_items = "Ylimääräiset kalusteet huoneissa parantavat työntekijöiden viihtyvyyttä ja heidän suoritustasonsa paranee.", epidemic = "Sairaalassasi riehuu tarttuva epidemia. Sinun pitää tehdä jotain ja pian!", promotion_to_doctor = "Yhdestä harjoittelijastasi on tullut tohtori.", emergency = "Hätätilanne! Nyt tuli kiire! Vauhtia siellä!", patient_abducted = "Avaruusolennot ovat siepanneet yhden potilaasi.", first_cure = "Hyvää työtä! Olet onnistunut parantamaan ensimmäisen potilaasi.", promotion_to_consultant = "Yhdestä tohtoristasi on tullut konsultti.", handyman_adjust = "Voit parantaa huoltomiestesi tehokkuutta säätämällä heidän prioriteettejaan.", promotion_to_specialist = "Yksi lääkäreistäsi on saanut päätökseen erikoistumisensa %sksi.", patient_leaving_too_expensive = "Eräs potilas lähtee sairaalastasi maksamatta laskuaan hoidosta huoneessa %s. Se oli liian kallista.", vip_arrived = "Huomio! - %s on saapunut sairaalaasi! Tee kaikkesi, jotta hänen jokainen tarpeensa tulee ripeästi täytetyksi.", epidemic_health_inspector = "Terveysministeriö on kuullut sairaalaasi vaivaavasta epidemiasta. Voit valmistautua siihen, että terveystarkastaja saapuu varsin pian.", first_death = "Sairaalassasi on sattunut ensimmäinen kuolemantapaus. Kuinkas tässä nyt näin pääsi käymään?", pay_rise = "Yksi työntekijöistäsi uhkaa irtisanoutua. Valitse haluatko suostua hänen palkkavaatimukseensa vai antaa hänelle potkut. Klikkaa vasemmalla alalaidassa olevaa ikonia nähdäksesi kenestä on kyse.", place_windows = "Ikkunat tekevät huoneista valoisampia ja parantavat työntekijöidesi mielialaa.", fax_received = "Vasempaan alanurkkaan ilmestyvät ikonit ilmoittavat sinulle tärkeistä tiedoista ja päätöksistä, joita voit tehdä.", initial_general_advice = { rats_have_arrived = "Rotat ovat vallanneet sairaalasi. Yritä ampua niitä hiirelläsi.", autopsy_available = "Tutkijasi ovat keksineet ruumiinavauskoneen, jonka avulla voit hankkiutua eroon ei-toivotuista potilaista ja tehdä tutkimusta heidän jäänteillään. Koneen käyttämisen moraalinen hyväksyttävyys on kuitenkin erittäin kiistanalaista.", first_patients_thirsty = "Sairaalassasi on janoisia ihmisiä. Osta lisää juoma-automaatteja heidän käyttöönsä.", research_now_available = "Olet rakentanut ensimmäisen tutkimusosastosi. Nyt pääset käsiksi tutkimus-ikkunaan.", psychiatric_symbol = "Psykiatriaan erikoistuneet lääkärit on merkitty symbolilla: |", decrease_heating = "Ihmisillä on liian kuuma sairaalassasi. Säädä lämmitystäsi pienemälle kartta-ikkunasta.", surgeon_symbol = "Kirurgiaan erikoistuneet lääkärit on merkitty symbolilla: {", first_emergency = "Hätätilannepotilaiden pään päällä on sininen hälytysvalo. Paranna heidät ennen kuin he kuolevat tai aika loppuu kesken.", first_epidemic = "Sairaalassasi on havaittu epidemia! Päätä, haluatko salata sen vai tehdä lain vaatiman ilmoituksen.", taking_your_staff = "Joku yrittää houkutella henkilökuntaasi loikkaamaan palvelukseensa. Sinun täytyy taistella, jos et halua menettää heitä.", place_radiators = "Ihmisillä on liian kylmä sairaalassasi. Voit asentaa lisää lämpöpattereita ostamalla niitä kalusteet-valikosta.", epidemic_spreading = "Sairaalassasi on vakavaan tartuntatautiin sairastuneita. Yritä parantaa sairastuneet ennen kuin he lähtevät kotiin.", research_symbol = "Tutkimukseen erikoistuneet lääkärit on merkitty symbolilla: }", machine_needs_repair = "Sairaalassasi on kone joka täytyy korjata. Etsi rikkoutunut kone, joka epäilemättä jo savuaa, ja klikkaa sitä. Aukeavasta ruudusta saat käskettyä huoltomiehen korjaamaan sen.", increase_heating = "Ihmisillä on liian kylmä sairaalassasi. Säädä lämmitystäsi suuremmalle kartta-ikkunasta.", first_VIP = "Sairaalaasi on saapumassa ensimmäinen VIP-potilas. Yritä varmistaa, ettei hän pääse näkemään mitään epähygienistä tai yhtään tyytymättömiä potilaita.", }, }, -- Build advice build_advice = { placing_object_blocks_door = "Jos sijoitat kalusteita tähän, kukaan ei pääse ovesta sisään eikä ulos.", blueprint_would_block = "Tämä huoneen pohjapiirrustus estäisi pääsyn joihinkin muihin huoneisiin. Kokeile muuttaa huoneen kokoa tai siirrä se toiseen paikkaan!", door_not_reachable = "Ihmiset eivät pääse mitenkään ovelle, jos asetat sen tähän. Mietihän vähän.", blueprint_invalid = "Tämä pohjapiirrustus ei ole kelvollinen.", }, } -- Confirmation confirmation = { quit = "Jos poistut nyt, kaikki tallentamattomat tiedot menetetään. Oletko varma, että haluat lopettaa pelin?", return_to_blueprint = "Oletko varma, että haluat palauttaa tämän huoneen pohjapiirros-tilaan?", replace_machine = "Oletko varma, että haluat korvata koneen %s hintaan %d$?", -- %s (machine name) %d (price) overwrite_save = "Tällä nimellä on jo tallennettu peli. Oletko varma, että haluat tallentaa sen päälle?", delete_room = "Oletko varma, että haluat poistaa tämän huoneen?", sack_staff = "Oletko varma, että haluat irtisanoa tämän työntekijän?", restart_level = "Oletko varma, että haluat aloittaa tason alusta?", needs_restart = "Tämän asetuksen muuttaminen vaatii CorsixTH:n käynnistämisen uudelleen. Kaikki tallentamattomat muutokset menetetään. Oletko varma, että haluat jatkaa?", abort_edit_room = "Huoneen rakentaminen tai muokkaaminen on kesken. Jos kaikki pakolliset kalusteet on asetettu huoneeseen, se valmistuu, mutta muutoin se poistetaan. Oletko varma, että haluat poistua?", } -- Bank manager bank_manager = { hospital_value = "Sairaalan arvo", balance = "Rahaa tilillä", current_loan = "Maksettavaa lainaa", interest_payment = "Vuokrakulut", insurance_owed = "Vakuutusvelka", inflation_rate = "Inflaatio", interest_rate = "Korkotaso", statistics_page = { date = "Päivä", details = "Tiedot", money_out = "Kulut", money_in = "Tulot", balance = "Saldo", current_balance = "Tilillä", }, } -- Newspaper headlines newspaper = { -- Seven categories of funny headlines. I think each category is related -- to one criterion you can lose to. TODO: categorize { "TOHTORI KAUHUN KIROUS", "OUTO LÄÄKÄRI LEIKKII JUMALAA", "TOHTORI EBOLA SHOKEERAA", "KUKA USKOO VIILTÄJÄKIRURGIIN?", "RATSIA PÄÄTTI VAARALLISEN LÄÄKETUTKIMUKSEN" }, { "TOHTORI ANKKURI", "ITKEVÄT PSYKIATRIT", "KONSULTIN PAKOMATKA", "KIRURGINEN LAUKAUS", "KIRURGI JUO LASINSA TYHJÄKSI", "KIRURGIN HENKI" }, { "LEIKKIVÄ PSYKIATRI", "TOHTORI ILMAN-HOUSUJA", "TOHTORI KAUHUISSAAN", "KIRURGIN NÄLKÄ" }, { "LÄÄKÄRI VETÄÄ VÄLISTÄ", "ELINKAUPPA KUKOISTAA", "PANKKIHOLVIN OHITUSLEIKKAUS", "LÄÄKÄRIN PIKKURAHAT" }, { "HOITAJAT PENKOVAT RUUMISARKUN", "LÄÄKÄRI TYHJENSI HAUDAN", "VUOTO VAATEKAAPISSA", "TOHTORI KUOLEMAN HIENO PÄIVÄ", "VIIMEISIN HOITOVIRHE", "KADONNEET LÄÄKÄRIT" }, { "LÄÄKÄRI EROAA!", "LEPSU PUOSKARI", "HENGENVAARALLINEN DIAGNOOSI", "VAROMATON KONSULTTI", }, { "TOHTORI HUOKAA HELPOTUKSESTA", "KIRURGI 'LEIKKAA' ITSENSÄ", "LÄÄKÄRIN PURKAUS", "LÄÄKÄRI LASKEE KAAPELIA", "LÄÄKE OLIKIN KURAA" }, } -- Letters -- TODO letter = { --original line-ends: 5 4 2 3 [1] = { [1] = "Hyvä %s//", [2] = "Mahtavaa! Olet johtanut tätä sairaalaa erinomaisesti. Me täällä hallinnossa haluamme tietää, oletko kiinnostunut lähtemään suuremman projektin johtoon. Meillä on työtarjous, johon uskomme sinun sopivan täydellisesti. Voimme tarjota sinulle palkkaa %d$. Mieti toki kaikessa rauhassa.//", [3] = "Oletko kiinnostunut työskentelemään %sn sairaalassa?", }, [2] = { [1] = "Hyvä %s//", [2] = "Oikein hyvää työtä! Sairaalasi on kehittynyt hienosti. Meillä on toinen instituutio, jonka johtoon haluaisimme sinut sijoittaa, jos olet saatavilla. Voit jättää tarjouksen hyväksymättä, mutta takaamme, että tämä on ainakin harkitsemisen arvoista. Palkka on %d$//", [3] = "Haluatko töihin %sn sairaalaan?", }, [3] = { [1] = "Hyvä %s//", [2] = "Sinun kautesi tässä sairaalassa on ollut todellinen onnistumistarina. Näemme, että sinulla on kirkas tulevaisuus edessäsi ja haluamme tarjota sinulle pestiä toisessa paikassa. Palkka on %d$ ja uskomme sinun ihastuvan sen tarjoamiin uusiin haasteisiin.//", [3] = "Otatko vastaan paikan %sn sairaalassa?", }, [4] = { [1] = "Hyvä %s//", [2] = "Onnittelut! Me täällä hallinnosssa olemme erittäin vaikuttuneita saavutuksistasi sairaalasi johdossa. Olet todellinen terveysministeriön kultapoika. Me uskomme kuitenkin, että kaipaat vähän haastavampaa työtä. Saisit palkkaa %d$, mutta päätös on sinun.//", [3] = "Oletko kiinnostunut ottamaan vastaan työn %sn sairaalassa?", }, [5] = { [1] = "Hyvä %s//", [2] = "Hei taas. Kunnioitamme toiveitasi, jos et halua jättää tätä upeaa sairaalaa taaksesi, mutta pyydämme, että harkitset tarjoustamme vakavasti. Tarjoamme %d$ palkkaa, jos suostut siirtymään toisen sairaalan johtoon ja saat hoidon sujumaan yhtä hyvin kuin tässä sairaalassa.//", [3] = "Haluaisitko siirtyä %sn sairaalaan?", }, [6] = { [1] = "Hyvä %s//", [2] = "Tervehdys. Tiedämme miten onnellinen olet ollut tässä upeassa ja hyvin johdetussa instituutiossa, mutta uskomme, että sinulla olisi nyt oikea hetki edistää uraasi. Saat kunnioitettavan johtajan palkan: %d$, jos päätät suostua. Ainakin sitä kannattaa harkita.//", [3] = "Haluatko ottaa vastaan paikan %sn sairaalassa?", }, [7] = { [1] = "Hyvä %s//", [2] = "Hyvää päivää! Terveysministeriö haluaa tietää suostutko harkitsemaan uudelleen päätöstäsi pysyä tämän sairaalan johdossa. Me arvostamme nykyistä sairaalaasi, mutta uskomme, että haastavampi tehtävä sopisi sinulle paremmin. Palkkatarjouksemme on %d$.//", [3] = "Hyväksytkö työn %sn sairaalassa?", }, [8] = { [1] = "Hyvä %s//", [2] = "Hei taas. Kieltäydyit aiemmasta tarjouksestamme, joka käsitti ensiluokkaisen paikkan upouuden sairaalan johdossa ja korotetun palkan: %d$. Meidän mielestämme sinun kannattaisi harkita päätöstäsi uudelleen. Kyseessä on nimittäin täydellinen työ juuri sinulle.//", [3] = "Otatko paikan vastaan %sn sairaalassa? Ole niin kiltti ja suostu!", }, [9] = { [1] = "Hyvä %s//", [2] = "Olet todistanut olevasi paras sairaalanjohtaja lääketieteen pitkän ja kunniakkaan historian aikana. Tällainen uskomaton saavutus ei voi jäädä palkitsematta, joten tarjoamme sinulle sairaalaosaston pääjohtajan virkaa. Tämä on kunniavirka ja siihen kuuluu %d$ palkkaa. Kunniaksesi järjestetään paraati ja ihmiset osoittavat sinulle kiitollisuuttaan mihin ikinä menetkin.//", [3] = "Kiitokset kaikesta tekemästäsi työstä. Toivotamme sinulle leppoisia puoliaikaisia eläkepäiviä.//", }, [10] = { [1] = "Hyvä %s//", [2] = "Onnittelut! Olet onnistunut menestyksekkäästi johtamaan kaikkia sairaaloita, joiden johtoon olemme sinut asettaneet. Tämän mahtavan saavutuksen johdosta saat vapauden matkustaa ympäri maailmaa, %d$ eläkettä ja limusiinin. Haluaisimme sinun matkoillasi keskustelevan kiitollisten kansalaisten kanssa ja edistävän kaikkien sairaalojen toimintaa kaikkialla.//", [3] = "Olemme kaikki ylpeitä sinusta. Joukossamme ei ole ketään, joka ei olisi kiitollinen ihmishenkien pelastamiseksi tekemästäsi työstä.//", }, [11] = { [1] = "Hyvä %s//", [2] = "Urasi on ollut esimerkillinen ja olet inspiraation lähde meille kaikille. Kiitokset kaikkien näiden sairaaloiden johtamisesta ja hyvästä työstä jokaisessa niistä. Haluamme myöntää sinulle %d$ elinikäistä palkkaa ja pyydämme ainoastaan, että kierrät kaupungista toiseen pitämässä luentoja siitä kuinka sait aikaan niin paljon niin nopeasti.//", [3] = "Olet esimerkki kaikille järkeville ihmisille ja nautit poikkeuksetta kaikkien ihmisten ihailua ympäri maailman.//", }, [12] = { [1] = "Hyvä %s//", [2] = "Voitokas urasi parhaana sairaalanjohtajana sitten Mooseksen aikojen lähestyy loppuaan. Vaikutuksesi lääketieteen ihmeelliseen maailmaan on ollut niin mahtava, että ministeriö haluaa myöntää sinulle %d$ palkkaa, jos suostut silloin tällöin pitämään puheita, osallistumaan laivojen vesillelaskuihin ja esiintymään TV:n chatti-ohjelmissa.//", [3] = "Voit huoletta hyväksyä tämän tarjouksen, sillä työ ei ole rankkaa ja tarjoamme sinulle auton ja poliisisaattueen minne ikinä menetkin.//", }, } -- Humanoid start of names humanoid_name_starts = { [1] = "LEPPÄ", [2] = "VIIMA", [3] = "KUUSI", [4] = "KOIVU", [5] = "MÄNTY", [6] = "PAJU", [7] = "TAMMI", [8] = "PYÖKKI", [9] = "LAUTA", [10] = "NAULA", [11] = "SUUR", [12] = "SUVI", [13] = "VIIMA", [14] = "LOVI", [15] = "HURME", [16] = "KOTO", [17] = "NURMI", [18] = "PALO", [19] = "KULO", [20] = "PAASI", [21] = "KAIVO", [22] = "HAVU", [23] = "KARE", [24] = "HALLA", [25] = "NOKI", [26] = "KYTÖ", [27] = "KIVI", [28] = "KALJU", [29] = "TALAS", [30] = "VESI", [31] = "ILMA", [32] = "KANTO", [33] = "SUMU", } -- Humanoid end of names humanoid_name_ends = { [1] = "KOSKI", [2] = "PELTO", [3] = "JÄRVI", [4] = "MAA", [5] = "LAAKSO", [6] = "MÄKI", [7] = "RINTA", [8] = "RANTA", [9] = "JOKI", [10] = "VAARA", [11] = "PURO", [12] = "VIITA", [13] = "VUORI", [14] = "PIHA", [15] = "VIRTA", [16] = "METSÄ", [17] = "RINNE", [18] = "HARJU", [19] = "LEHTO", [20] = "MALMI", [21] = "KORPI", [22] = "SAARI", [23] = "LAHTI", [24] = "KUNNAS", [25] = "KANGAS", [26] = "PÄÄ", } -- VIP names vip_names = { health_minister = "Terveysministeri", "Namikkalan kunnanjohtaja", -- the rest is better organized in an array. "Walesin Prinssi", "Norjan suurlähettiläs", "Aung Sang Su Kyi", "Kaino Vieno Nuppu Lahdelma", "Sir David", "Dalai Lama", "Nobel-palkittu kirjailija", "Valioliigan jalkapalloilija", "Vuorineuvos Viita", } -- Deseases diseases = { general_practice = { name = "Yleishoito", }, alien_dna = { name = "Alienin DNA", cause = "Aiheuttaja - joutuminen facehugger-alienin uhriksi.", symptoms = "Oireet - vaiheittainen muodonmuutos täysikasvuiseksi alieniksi ja halu tuhota kaikki kaupunkimme.", cure = "Hoito - DNA poistetaan mekaanisesti, puhdistetaan ja siirretään nopeasti takaisin.", }, baldness = { name = "Kaljuus", cause = "Aiheuttaja - valehteleminen ja tarinoiden keksiminen suosion toivossa.", symptoms = "Oireet - kiiltävä kupoli ja nolotus.", cure = "Hoito - Uudet hiukset sulautetaan saumattomasti potilaan päähän käyttäen kivuliasta konetta.", }, bloaty_head = { name = "Pallopäisyys", cause = "Aiheuttaja - juuston haistelu ja puhdistamattoman sadeveden juominen.", symptoms = "Oireet - hyvin epämukavat potilaalle.", cure = "Hoito - Pää puhkaistaan ja pumpataan takaisin oikeaan paineeseen nokkelalla laitteella.", }, broken_heart = { name = "Särkynyt sydän", cause = "Aiheuttaja - joku rikkaampi, nuorempi ja laihempi kuin potilas.", symptoms = "Oireet - hallitsematon itku ja rasitusvamma jatkuvan lomakuvien repimisen johdosta.", cure = "Hoito - Kaksi kirurgia avaa rintakehän ja korjaa sydämen hellästi pidättäen hengitystään.", }, broken_wind = { name = "Kaasujen karkailu", cause = "Aiheuttaja - kuntosalin juoksumaton käyttäminen heti ruoan jälkeen.", symptoms = "Oireet - takana seisovien ihmisten ärsyyntyminen.", cure = "Hoito - Potilas juo nopeasti raskaan sekoituksen erityisiä vetisiä atomeja apteekissa.", }, chronic_nosehair = { name = "Krooniset nenäkarvat", cause = "Aiheuttaja - nenän nyrpistäminen itseään heikompiosaisille ihmisille.", symptoms = "Oireet - nenäparta, johon orava voisi tehdä pesän.", cure = "Hoito - Sairaanhoitaja valmistaa apteekissa ällöttävän rohdon, joka nautitaan suun kautta.", }, corrugated_ankles = { name = "Taipuneet nilkat", cause = "Aiheuttaja - liiallinen hidastetöyssyjen yli ajaminen.", symptoms = "Oireet - kengät eivät sovi hyvin jalkaan.", cure = "Hoito - Lievästi myrkyllinen seos yrttejä ja mausteita juodaan nilkkojen oikaisemiseksi.", }, discrete_itching = { name = "Paikallinen kutina", cause = "Aiheuttaja - pienet hyönteiset, joilla on terävät hampaat.", symptoms = "Oireet - raapiminen, joka johtaa ruumiinosien tulehduksiin.", cure = "Hoito - Potilaalle juotetaan lääkesiirappia kutinan ehkäisemiseksi.", }, fake_blood = { name = "Valeveri", cause = "Aiheuttaja - potilas on yleensä joutunut käytännön pilan uhriksi.", symptoms = "Oireet - suonissa punaista nestettä, joka haihtuu joutuessaan kosketuksiin kankaan kanssa.", cure = "Hoito - Psykiatrinen rauhoittelu on ainoa keino hoitaa ongelmaa.", }, fractured_bones = { name = "Murtuneet luut", cause = "Aiheuttaja - putoaminen korkealta betonille.", symptoms = "Oireet - voimakas napsahdus ja kyvyttömyys käyttää kyseisiä raajoja.", cure = "Hoito - Potilaalle asetetaan kipsi, joka sitten poistetaan laser-toimisella kipsinpoistokoneella.", }, gastric_ejections = { name = "Vääntelehtivä vatsa", cause = "Aiheuttaja - mausteinen meksikolainen tai intialainen ruoka.", symptoms = "Oireet - puolittain sulanutta ruokaa poistuu potilaan elimistöstä satunnaisesti.", cure = "Hoito - Erityisen sitouttamisnesteen juominen estää ruokapäästöjen syntymisen.", }, golf_stones = { name = "Golf-kivet", cause = "Aiheuttaja - altistuminen golfpallojen sisältämälle myrkkykaasulle.", symptoms = "Oireet - sekavuus ja edistynyt häpeä.", cure = "Hoito - Kivet poistetaan leikkauksella, johon tarvitaan kaksi kirurgia.", }, gut_rot = { name = "Mahamätä", cause = "Aiheuttaja - rouva Malisen 'Hauskaa iltaa' -viskiyskänlääke.", symptoms = "Oireet - ei yskää, mutta ei vatsan limakalvojakaan.", cure = "Hoito - Sairaanhoitaja sekoittaa apteekissa lääkeliemen, joka päälystää mahalaukun sisäpinnan.", }, hairyitis = { name = "Turkinkasvu", cause = "Aiheuttaja - pitkittynyt altistuminen kuun valolle.", symptoms = "Oireet - potilaille kehittyy herkistynyt hajuaisti.", cure = "Hoito - Elektrolyysikone poistaa karvat ja sulkee huokoset.", }, heaped_piles = { name = "Kasautuneet pukamat", cause = "Aiheuttaja - vesiautomaatin lähellä seisoskeleminen.", symptoms = "Oireet - potilaasta tuntuu kuin hän istuisi marmorikuulapussin päällä.", cure = "Hoito - Miellyttävä, mutta vahvasti hapokas juoma sulattaa pukamat sisältä.", }, infectious_laughter = { name = "Tarttuva nauru", cause = "Aiheuttaja - klassiset TV:n komediasarjat.", symptoms = "Oireet - avuton hihitys ja kuluneiden fraasien toistelu.", cure = "Hoito - Ammattitaitoisen psykiatrin täytyy muistuttaa potilaalle, kuinka vakava hänen tilansa on.", }, invisibility = { name = "Näkymättömyys", cause = "Aiheuttaja - radioaktiivisen (ja näkymättömän) muurahaisen purema", symptoms = "Oireet - potilaat eivät kärsi lainkaan ja monet heistä hyödyntävät tilaansa tekemällä kepposia perheelleen", cure = "Hoito - Apteekista saatava värikäs juoma palauttaa potilaat pikaisesti näkyviin", }, iron_lungs = { name = "Rautakeuhkot", cause = "Aiheuttaja - kantakaupungin savusumu yhdistettynä kebabin jäänteisiin.", symptoms = "Oireet - kyky syöstä tulta ja huutaa kovaa veden alla.", cure = "Hoito - Kaksi kirurgia poistaa jähmettyneet keuhkot leikkaussalissa.", }, jellyitis = { name = "Hyytelöityminen", cause = "Aiheuttaja - Runsaasti gelatiinia sisältävä ruokavalio ja liiallinen liikunta.", symptoms = "Oireet - liiallinen hytkyminen ja runsas kaatuilu.", cure = "Hoito - Potilas asetetaan vähäksi aikaa hyytelömuovaimeen erityisessä hyytelömuovainhuoneessa.", }, kidney_beans = { name = "Munuaispavut", cause = "Aiheuttaja - jääkuutioiden murskaaminen juomaan.", symptoms = "Oireet - kipuja ja jatkuvaa vessassa käymistä.", cure = "Hoito - Kahden kirurgin täytyy poistaa pavut koskematta munuaisiin.", }, king_complex = { name = "Kuningas-kompleksi", cause = "Aiheuttaja - Kuninkaan henki tunkeutuu potilaan tajuntaan ja ottaa vallan.", symptoms = "Oireet - värikkäisiin samettikenkiin pukeutuminen ja juustohampurilaisten syöminen", cure = "Hoito - Psykiatri kertoo vastaanotollaan potilaalle, kuinka älyttömän typerältä tämä näyttää", }, pregnancy = { name = "Raskaus", cause = "Aiheuttaja - sähkökatkot kaupungistuneilla alueilla.", symptoms = "Oireet - taukoamaton syöminen ja siihen liittyvä kaljamaha.", cure = "Hoito - Lapsi poistetaan keisarinleikkauksella, pestään ja ojennetaan potilaalle.", }, -- unused ruptured_nodules = { name = "Repeytyneet kyhmyt", cause = "Aiheuttaja - benjihyppääminen kylmässä säässä.", symptoms = "Oireet - potilaan on mahdotonta istua mukavasti.", cure = "Hoito - Kaksi kirurgia poistaa kyhmyt vakain käsin.", }, serious_radiation = { name = "Vakava säteily", cause = "Aiheuttaja - erehtyminen plutonium-isotooppien ja purukumin välillä.", symptoms = "Oireet - potilaat tuntevat itsensä hyvin, hyvin huonovointisiksi.", cure = "Hoito - Potilas tulee asettaa puhdistussuihkuun ja pestä huolellisesti.", }, slack_tongue = { name = "Velttokielisyys", cause = "Aiheuttaja - krooninen saippuaoopperoista puhuminen.", symptoms = "Oireet - kieli turpoaa viisi kertaa pidemmäksi kuin normaalisti.", cure = "Hoito - Kieli asetetaan paloittelijaan, joka lyhentää sen nopeasti, tehokkaasti ja kivuliaasti.", }, sleeping_illness = { name = "Unitauti", cause = "Aiheuttaja - yliaktiivinen unirauhanen kitalaessa.", symptoms = "Oireet - ylitsepääsemätön tarve käydä nukkumaan kaikkialla.", cure = "Hoito - Sairaanhoitaja annostelee suuren annoksen voimakasta piristysainetta.", }, spare_ribs = { name = "Liikakyljykset", cause = "Aiheuttaja - kylmillä kivilattioilla istuminen.", symptoms = "Oireet - epämiellyttävä rintavuuden tunne.", cure = "Hoito - Kaksi kirurgia poistaa kyljykset ja antaa ne folioon käärittynä potilaalle kotiin vietäväksi.", }, sweaty_palms = { name = "Hikiset kädet", cause = "Aiheuttaja - työhaastattelujen kammo.", symptoms = "Oireet - kätteleminen potilaan kanssa on kuin pitelisi vastakasteltua pesusientä.", cure = "Hoito - Psykiatrin pitää saada potilas luopumaan päässään luomastaan sairaudesta.", }, the_squits = { name = "Oksennustauti", cause = "Aiheuttaja - lattialta löytyneen pizzan syöminen.", symptoms = "Oireet - yäk, osaat varmaan arvatakin.", cure = "Hoito - Kuitupitoinen sekoitus lankamaisia lääkekemikaaleja kiinteyttää potilaan sisuskalut.", }, third_degree_sideburns = { name = "Kolmannen asteen pulisongit", cause = "Aiheuttaja - kaipuu takaisin 1970-luvulle.", symptoms = "Oireet - iso kampaus, leveälahkeiset housut, korokepohjakengät ja kiillemeikit.", cure = "Hoito - Psykiatrin täytyy vakuuttaa potilas siitä, että hänen karvakehyksensä ovat inhottavat.", }, transparency = { name = "Läpinäkyvyys", cause = "Aiheuttaja - jogurtin nuoleminen purkkien kansista.", symptoms = "Oireet - potilaan liha muuttuu läpinäkyväksi ja kammottavaksi.", cure = "Hoito - Apteekista saatava erityisellä tavalla jäähdytetty ja värjätty vesi parantaa taudin.", }, tv_personalities = { name = "TV-kasvous", cause = "Aiheuttaja - päiväsaikaan lähetettävä ohjelmatarjonta.", symptoms = "Oireet - kuvitelma, että potilas pystyy juontamaan ruoanlaitto-ohjelman.", cure = "Hoito - Psykiatrin tulee suostutella potilas myymään televisionsa ja ostamaan radio sen tilalle.", }, uncommon_cold = { name = "Epätavallinen flunssa", cause = "Aiheuttaja - pienet räkähiukkaset ilmassa.", symptoms = "Oireet - vuotava nenä, aivastelu ja värjäytyneet keuhkot.", cure = "Hoito - Iso kulaus apteekissa valmisteltua epätavallista flunssalääkettä tekee taudista menneen talven lumia.", }, unexpected_swelling = { name = "Odottamaton turvotus", cause = "Aiheuttaja - mikä tahansa odottamaton.", symptoms = "Oireet - turvotus.", cure = "Hoito - Kahden kirurgin suorittama puhkomistoimenpide poistaa turvotuksen.", }, diag_scanner = { name = "Diagn. magn. kuvaus", }, diag_blood_machine = { name = "Diagn. verikone", }, diag_cardiogram = { name = "Diagn. kardiogrammi", }, diag_x_ray = { name = "Diagn. röntgen", }, diag_ultrascan = { name = "Diagn. ultraääni", }, diag_general_diag = { name = "Diagn. yleisdiagn.", }, diag_ward = { name = "Diagn. vuodeosasto.", }, diag_psych = { name = "Diagn. psykiatria", }, autopsy = { name = "Ruumiinavaus", }, } -- Faxes fax = { -- Debug fax debug_fax = { -- never seen this, must be a debug option of original TH -- TODO: make this nicer if we ever want to make use of it close_text = "Kyllä, kyllä, kyllä!", text1 = "PARAS MÄÄRÄ %d", -- %d text2 = "IHMISIÄ YHTEENSÄ SAIRAALASSA %d VERRATTUNA %d:N", -- %d %d text3 = "LUVUT : LÄÄKÄRIT %d HOITAJAT %d ALUE %d HUONEET %d HINTA %d", -- %d %d %d %d %d text4 = "KERTOIMET: LÄÄKÄRIT %d HOITAJAT %d ALUE %d HUONEET %d HINTA %d", -- %d %d %d %d %d text5 = "OSUUS : LÄÄKÄRIT %d HOITAJAT %d ALUE %d HUONEET %d HINTA %d PROSENTTIA", -- %d %d %d %d %d text6 = "SEURAAVAT KERTOIMET OTETAAN MYÖS HUOMIOON", text7 = "MAINE: %d ODOTETTU %d VÄHENNYS %d", -- %d %d %d text8 = "WC-TILAT %d IHMISIÄ PALVELTU %d VÄHENNYS %d", -- %d %d %d text9 = "ONNETTOMUUDET %d SALLITTU (KK) %d (%d)VÄHENNYS %d", -- %d %d %d %d text10 = "KUOLEMAT %d SALLITTU (KK) %d (%d) VÄHENNYS %d", -- %d %d %d %d text11 = "IHMISIÄ TÄSSÄ KUUSSA %d", -- %d }, -- Emergency emergency = { choices = { accept = "Kyllä, minä pystyn hoitamaan sen", refuse = "Ei, en voi ottaa potilaita vastaan", }, location = "%s on sattunut onnettomuus.", num_disease = "%d ihmisellä on diagnosoitu %s, joka vaatii välitöntä hoitoa.", num_disease_singular = "Yhdellä henkilöllä on havaittu %s, joka vaatii välitöntä hoitoa.", cure_possible_drug_name_efficiency = "Sinulla on jo tarvittavat laitteet ja taidot. Tarvittava lääke on %s ja sen teho on %d%%.", cure_possible = "Sinulla on jo tarvittavat laitteet ja taidot, joten sinun pitäisi selviytyä tilanteesta ongelmitta.", cure_not_possible_build_and_employ = "Sinun täytyy rakentaa %s ja palkata %s.", cure_not_possible_build = "Sinun täytyy rakentaa %s.", cure_not_possible_employ = "Sinun täytyy palkata %s.", cure_not_possible = "Et pysty hoitamaan tätä sairautta tällä hetkellä.", bonus = "Jos pystyt hoitamaan tämän hätätapauksen täydellisesti, saat bonuksena %d$. Jos kuitenkin epäonnistut, sairaalasi maine saa aimo kolauksen.", locations = { "Tomin asekellarissa", "Innovaatioyliopistossa", "Puskalan puutarhakeskuksessa", "Vaarallisten aineiden tutkimuskesuksessa", "Tanssimessuilla", "Mykkä Papukaija -baarissa", "Ison Taunon hautajaispaviljongissa", "Taj-curryravintolassa", "Pekan petrokemikaalikirpputorilla", }, }, emergency_result = { close_text = "Sulje ikkuna", earned_money = "Enimmäisbonus oli %d$ ja ansaitsit %d$.", saved_people = "Pelastit %d ihmistä, kun potilaita oli %d.", }, -- Deseace discovered disease_discovered_patient_choice = { choices = { send_home = "Lähetä potilas kotiin.", wait = "Pyydä potilasta odottamaan sairaalassa vähän aikaa.", research = "Lähetä potilas tutkimusosastolle.", }, need_to_build_and_employ = "Sinun täytyy rakentaa %s ja palkkata %s, jotta voit hoitaa sairautta.", need_to_build = "Sinun täytyy rakentaa %s, jotta voit hoitaa sairautta.", need_to_employ = "Palkkaa %s auttamaan potilasta.", can_not_cure = "Et voi hoitaa tätä sairautta.", disease_name = "Työntekijäsi ovat havainneet uuden sairauden, jonka nimi on %s.", what_to_do_question = "Miten haluat meidän toimivan potilaan kanssa?", guessed_percentage_name = "Työntekijäsi ovat joutuneet arvaamaan, mikä potilasta vaivaa. %d%%:n todennäköisyydellä sairaus on %s.", }, disease_discovered = { close_text = "Uusi sairaus on löydetty.", can_cure = "Pystyt parantamaan sairauden.", need_to_build_and_employ = "Sinun täytyy rakentaa %s ja palkata %s, jotta voit hoitaa sairautta.", need_to_build = "Sinun täytyy rakentaa %s, jotta voit hoitaa sairautta.", need_to_employ = "Palkkaa %s hoitamaan potilaita, joilla on tämä sairaus.", discovered_name = "Työntekijäsi ovat havainneet uuden sairauden, jonka nimi on %s.", }, -- Epidemic epidemic = { choices = { declare = "Julkista epidemia, maksa sakko ja hyväksy vahinko sairaalasi maineelle.", cover_up = "Yritä hoitaa kaikki tartunnan saaneet potilaat ennen kuin annettu aika loppuu tai kukaan lähtee sairaalastasi.", }, disease_name = "Lääkärisi ovat löytäneet helposti tarttuvan %s-kannan.", declare_explanation_fine = "Jos julkistat epidemian, sinun täytyy maksaa sakkoja %d$, sairaalasi maine kokee kolauksen ja kaikki potilaasi rokotetaan automaattisesti.", cover_up_explanation_1 = "Toisaalta, jos yrität salata epidemian, sinulla on rajoitetusti aikaa parantaa kaikki tartunnan saaneet potilaat.", cover_up_explanation_2 = "Jos vierailulle saapuva terveystarkastaja saa selville, että olet salaillut epidemiaa, seuraukset voivat olla hyvin vakavat.", }, -- Epidemic result epidemic_result = { close_text = "Hurraa!", failed = { part_1_name = "Yrittäessään salata sairaalassasi riehuneen helposti tarttuvan %s-epidemian", part_2 = "henkilökuntasi on päästänyt sairauden leviämään sairaalan ympärillä asuvaan väestöön.", }, succeeded = { part_1_name = "Terveystarkastaja on kuullut huhuja, että sairaalassasi on riehunut %s-epidemia", part_2 = "Hän ei ole kuitenkaan pystynyt näyttämään näitä huhuja todeksi.", }, compensation_amount = "Hallitus on myöntänyt sinulle %d$ korvauksena vahingoista, joita nämä valheet ovat sairaalasi maineelle aiheuttaneet.", fine_amount = "Hallitus on julistanut kansallisen hätätilan ja määrännyt sinulle %d$ sakkoja.", rep_loss_fine_amount = "Sanomalehdet pääsevät huomenna kirjoittamaan tästä etusivullaan. Maineesi tahrautuu pahasti ja joudut maksamaan %d$ sakkoja.", hospital_evacuated = "Terveyslautakunnalla ei ole muuta vaihtoehtoa kuin evakuoida sairaalasi.", }, -- VIP visit query vip_visit_query = { choices = { invite = "Lähetä virallinen kutsu VIP-potilaalle.", refuse = "Kieltäydy ottamasta VIP-vierasta vastaan jollakin tekosyyllä.", }, vip_name = "%s on esittänyt toiveen päästä käymään sairaalassasi.", }, -- VIP visit result vip_visit_result = { close_text = "Kiitos käynnistä ja tervetuloa uudestaan.", telegram = "Sähke!", vip_remarked_name = "%s kommentoi vierailuaan sairaalassasi seuraavasti:", cash_grant = "Sairaalallesi on tehty käteislahjoitus, jonka arvo on %d$.", rep_boost = "Sairaalasi maine on parantunut.", rep_loss = "Sairaalasi maine on huonontunut.", remarks = { super = { "Mikä mahtava sairaala. Seuraavan kerran, kun olen sairas, haluan sinne hoitoon.", "No tuota voi jo kutsua sairaalaksi.", "Uskomaton sairaala. Ja minun pitäisi tietää; olen käynyt aika monessa.", }, good = { "Hyvin johdettu laitos. Kiitos, että kutsuit minut sinne.", "Hmm. Ei totisesti yhtään hullumpi sairaala.", "Nautin käynnistä mukavassa sairaalassasi. Tekeekö kenenkään mieli intialaista?", }, mediocre = { "No, olen nähnyt huonompiakin, mutta voisit kyllä tehdä hieman parannuksia.", "Voi että. Ei mikään mukava paikka, jos tuntee olonsa kurjaksi.", "Rehellisesti sanoen se oli ihan perussairaala. Odotin vähän enemmän.", }, bad = { "Miksi vaivauduin? Se oli kauheampaa kuin nelituntinen ooppera!", "Inhottava paikka. Kutsutaanko tuota sairaalaksi? Sikolättihän tuo oli!", "Olen kyllästynyt käymään tuollaisissa haisevissa koloissa julkisuuden henkilönä. Minä eroan!", }, very_bad = { "Mikä läävä! Yritän saada sen lakkautettua.", "En ole koskaan nähnyt noin kamalaa sairaalaa. Mikä häpeätahra!", "Olen järkyttynyt. Ei tuota voi kutsua sairaalaksi! Minä tarvitsen juotavaa.", }, }, }, -- Diagnosis failed diagnosis_failed = { choices = { send_home = "Lähetä potilas kotiin", take_chance = "Ota riski ja kokeile luultavinta hoitoa.", wait = "Pyydä potilasta odottamaan, että saat rakennettua lisää diagnoosihuoneita.", }, situation = "Olemme käyttäneet kaikkia diagnoosimenetelmiämme potilaan tutkimiseen, mutta emme tiedä vieläkään varmasti, mikä on vialla.", what_to_do_question = "Miten toimimme potilaan kanssa?", partial_diagnosis_percentage_name = "Tiedämme %d%%:n todennäköisyydellä, että potilaan sairaus on %s.", }, } -- Queue window queue_window = { num_in_queue = "Jono", num_expected = "Odotettu", num_entered = "Käyntejä", max_queue_size = "Jono enint.", } -- Dynamic info dynamic_info = { patient = { actions = { dying = "Tekee kuolemaa!", awaiting_decision = "Odottaa päätöstäsi", queueing_for = "Jonossa: %s", -- %s on_my_way_to = "Matkalla: %s", -- %s cured = "Parantunut!", fed_up = "Saanut tarpeekseen ja lähtee sairaalasta", sent_home = "Lähetetty kotiin", sent_to_other_hospital = "Lähetetty toiseen sairaalaan", no_diagnoses_available = "Ei diagnosointivaihtoehtoja jäljellä", no_treatment_available = "Hoitoa ei ole tarjolla - Menen kotiin", waiting_for_diagnosis_rooms = "Odottaa, että rakennat lisää diagnoosihuoneita", waiting_for_treatment_rooms = "Odottaa, että rakennat lisää hoitohuoneita", prices_too_high = "Hinnat ovat liian korkeat - Menen kotiin", epidemic_sent_home = "Terveystarkastaja lähettänyt kotiin", epidemic_contagious = "Tautini on tarttuva", no_gp_available = "Odottaa, että rakennat yleislääkärin toimiston", }, diagnosed = "Diagnoosi: %s", -- %s guessed_diagnosis = "Arvattu diagnoosi: %s", -- %s diagnosis_progress = "Diagnosointiprosessi", emergency = "Hätätilanne: %s", -- %s (disease name) }, vip = "Vieraileva VIP", health_inspector = "Terveystarkastaja", staff = { psychiatrist_abbrev = "Psyk.", tiredness = "Väsymys", ability = "Kyvyt", -- unused? actions = { waiting_for_patient = "Odottaa potilasta", wandering = "Vaeltaa ympäriinsä", going_to_repair = "Korjattava: %s", -- %s (name of machine) heading_for = "Matkalla kohteeseen: %s", fired = "Erotettu", }, }, object = { strength = "Kestävyys: %d", -- %d (max. uses) times_used = "Käyttökertoja: %d", -- %d (times used) queue_size = "Jonon pituus: %d", -- %d (num of patients) queue_expected = "Odotettu jonon pituus: %d", -- %d (num of patients) }, } -- Miscellangelous -- Category of strings that fit nowhere else or we are not sure where they belong. -- If you think a string of these fits somewhere else, please move it there. -- Don't forget to change all references in the code and other language files. misc = { grade_adverb = { mildly = "lievästi", moderately = "keskimääräisesti", extremely = "vakavasti", }, done = "Valmis", pause = "Keskeytä", send_message = "Lähetä viesti pelaajalle %d", -- %d (player number) send_message_all = "Lähetä viesti kaikille pelaajille", save_success = "Peli tallennettu", save_failed = "VIRHE: Pelin tallentaminen ei onnistunut", hospital_open = "Sairaala avattu", out_of_sync = "Peli ei ole synkronisoitu", load_failed = "VIRHE: Pelin lataaminen ei onnistunut", low_res = "Matala resol.", balance = "Tasapainotiedosto:", mouse = "Hiiri", force = "Voima", } original_credits = { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", ":Suunnittelu ja toteutus", ":Bullfrog Productions", " ", ":Pluto Development Team", ",", "Mark Webley", "Gary Carr", "Matt Chilton", "Matt Sullivan", "Jo Rider", "Rajan Tande", "Wayne Imlach", "Andy Bass", "Jon Rennie", "Adam Coglan", "Natalie White", " ", " ", " ", ":Ohjelmointi", ",", "Mark Webley", "Matt Chilton", "Matt Sullivan", "Rajan Tande", " ", " ", " ", ":Ulkoasu", ",", "Gary Carr", "Jo Rider", "Andy Bass", "Adam Coglan", " ", " ", " ", ":Oheisohjelmointi", ",", "Ben Deane", "Gary Morgan", "Jonty Barnes", " ", " ", " ", ":Oheisulkoasu", ",", "Eoin Rogan", "George Svarovsky", "Saurev Sarkar", "Jason Brown", "John Kershaw", "Dee Lee", " ", " ", " ", ":Alkuanimaatio", ",", "Stuart Black", " ", " ", " ", ":Musiikki ja äänet", ",", "Russell Shaw", "Adrian Moore", " ", " ", " ", ":Oheismusiikki", ",", "Jeremy Longley", "Andy Wood", " ", " ", " ", ":Kuuluttajan ääni", ",", "Rebecca Green", " ", " ", " ", ":Tasojen suunnittelu", ",", "Wayne Imlach", "Natalie White", "Steven Jarrett", "Shin Kanaoya", " ", " ", " ", ":Skriptaus", ",", "James Leach", "Sean Masterson", "Neil Cook", " ", " ", " ", ":Tuotekehitys", " ", ":Grafiikkamoottori", ",", "Andy Cakebread", "Richard Reed", " ", " ", " ", ":Tuotekehitystuki", ",", "Glenn Corpes", "Martin Bell", "Ian Shaw", "Jan Svarovsky", " ", " ", " ", ":Kirjastot ja työkalut", " ", ":Dos ja Win 95 kirjasto", ",", "Mark Huntley", "Alex Peters", "Rik Heywood", " ", " ", " ", ":Verkkokirjasto", ",", "Ian Shippen", "Mark Lamport", " ", " ", " ", ":Äänikirjasto", ",", "Russell Shaw", "Tony Cox", " ", " ", " ", ":Asennusohjelma", ",", "Andy Nuttall", "Tony Cox", "Andy Cakebread", " ", " ", " ", ":Moraalinen tuki", ",", "Peter Molyneux", " ", " ", " ", ":Testausmanageri", ",", "Andy Robson", " ", " ", " ", ":Päätestaajat", ",", "Wayne Imlach", "Jon Rennie", " ", " ", " ", ":Pelitestaajat", ",", "Jeff Brutus", "Wayne Frost", "Steven Lawrie", "Tristan Paramor", "Nathan Smethurst", " ", "Ryan Corkery", "Simon Doherty", "James Dormer", "Martin Gregory", "Ben Lawley", "Joel Lewis", "David Lowe", "Robert Monczak", "Dominic Mortoza", "Karl O'Keeffe", "Michael Singletary", "Andrew Skipper", "Stuart Stephen", "David Wallington", " ", "Ja kaikki pelitestaajina toimineet harjoittelijat", " ", " ", " ", ":Tekninen tuki", ",", "Kevin Donkin", "Mike Burnham", "Simon Handby", " ", " ", " ", ":Markkinointi", ",", "Pete Murphy", "Sean Ratcliffe", " ", " ", " ", ":Kiittäen:", ",", "Tamara Burke", "Annabel Roose", "Chris Morgan", "Pete Larsen", " ", " ", " ", ":PR", ",", "Cathy Campos", " ", " ", " ", ":Dokumentaatio", ",", "Mark Casey", "Richard Johnston", "James Lenoel", "Jon Rennie", " ", " ", " ", ":Dokumentaatio & pakkaussuunnittelu", ",", "Caroline Arthur", "James Nolan", " ", " ", " ", ":Lokalisaation projektimanageri", ",", "Carol Aggett", " ", " ", " ", ":Lokalisaatio", ",", "Sandra Picaper", "Sonia 'Sam' Yazmadjian", " ", "Bettina Klos", "Alexa Kortsch", "Bianca Normann", " ", "C.T.O. S.p.A. Zola Predosa (BO)", "Gian Maria Battistini", "Maria Ziino", "Gabriele Vegetti", " ", "Elena Ruiz de Velasco", "Julio Valladares", "Ricardo Martínez", " ", "Kia Collin", "CBG Consult", "Ulf Thor", " ", " ", " ", ":Tuotanto", ",", "Rachel Holman", " ", " ", " ", ":Tuottaja", ",", "Mark Webley", " ", " ", " ", ":Apulaistuottaja", ",", "Andy Nuttall", " ", " ", " ", ":Toiminnot", ",", "Steve Fitton", " ", " ", " ", ":Yrityshallinto", ",", "Audrey Adams", "Annette Dabb", "Emma Gibbs", "Lucia Gobbo", "Jo Goodwin", "Sian Jones", "Kathy McEntee", "Louise Ratcliffe", " ", " ", " ", ":Yritysjohto", ",", "Les Edgar", "Peter Molyneux", "David Byrne", " ", " ", ":Kaikki Bullfrog Productions -työntekijät", " ", " ", " ", ":Erityiskiitokset", ",", "Kaikille Frimley Park Hospital -sairaalassa", " ", ":Erityisesti", ",", "Beverley Cannell", "Doug Carlisle", " ", " ", " ", ":Pitäkää ajatukset liikkeessä", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", ".", } CorsixTH-0.61/CorsixTH/Lua/languages/french.lua000066400000000000000000002024401321660673500213200ustar00rootroot00000000000000--[[ Copyright (c) 2010-2015 Nicolas "MeV" Elie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Language(utf8 "Français", "French" , "fr", "fre", "fra") Inherit("english") Inherit("original_strings", 1) ----------------------------------------------------------- Override ----------------------------------------------------------- misc.save_failed = "ERREUR : partie non sauvegardée." -- Much more french tooltip.policy.diag_termination = "L'auscultation d'un patient continuera jusqu'à ce que les médecins soient sûrs à hauteur du pourcentage FIN PROCEDURE ou jusqu'à ce que toutes les machines de diagnostic aient été essayées. " -- Remove a superfluous word adviser.goals = { win = { -- Why are these strings uppercase? reputation = "Portez votre réputation à %d pour pouvoir gagner.", value = "Portez la valeur de votre hôpital à %d.", } } adviser.goals.lose.kill = "Tuez encore %d patients pour perdre !" -- tooltip.staff_list.next_person, prev_person is rather next/prev page (also in german, maybe more languages?) tooltip.staff_list.next_person = "Voir la page suivante" tooltip.staff_list.prev_person = "Voir la page précédente" -- Improve tooltips in staff window to mention hidden features tooltip.staff_window.face = "Visage - cliquez pour ouvrir la fenêtre de gestion" tooltip.staff_window.center_view = "clic gauche pour focaliser sur la personne, pour faire défiler les membres du personnel" -- Fix Winning texts letter = { [1] = { -- Level one: Fix issue 329 [1] = "Estimable %s", [2] = "Splendide ! Vous avez admirablement géré cet hôpital. Nous, pontes du Ministère de la Santé, souhaitons savoir si vous aimeriez prendre en charge un plus grand projet. Nous comptons sur vous. Le salaire serait de %d$ et ça vaut la peine d'y réfléchir.", [3] = "Que diriez-vous de travailler à l'hôpital de %s ?", }, [2] = { -- Level two: Add missing spaces before punctuation marks [1] = "Estimable %s", [2] = "Formidable ! Vous avez fait de grands progrès dans votre hôpital. Nous vous avons trouvé un autre établissement pour exercer vos talents et relever des défis. Vous pouvez refuser mais ce serait dommage. Le salaire est de %d$.", [3] = "Acceptez-vous le poste à l'hôpital de %s ?", }, [3] = { -- Level three: Add missing spaces before punctuation marks [1] = "Estimable %s", [2] = "Vous avez parfaitement réussi dans cet hôpital. C'est la raison pour laquelle nous vous proposons une nouvelle situation. Le salaire serait de %d$ et nous pensons que vous adorerez relever ce nouveau défi.", [3] = "Acceptez-vous de gérer l'hôpital de %s ?", }, [4] = { -- Level four: Add missing spaces before punctuation marks [1] = "Estimable %s", [2] = "Félicitations ! Le Ministère de la Santé est très impressionné par vos capacités à gérer cet hôpital. Vous êtes un exemple de réussite dans ce domaine. Vous voudrez peut-être une situation plus élevée, toutefois. Vous seriez payé %d$, et la décision vous revient.", [3] = "Êtes-vous prêt à accepter un poste à l'hôpital de %s ?", }, [5] = { -- Level five: Add missing spaces before punctuation marks and between words [1] = "Estimable %s", [2] = "Nouvelles salutations. Nous respectons votre souhait de ne pas quitter ce charmant hôpital, mais nous vous supplions d'y réfléchir. Nous vous proposons la coquette somme de %d$ pour accepter de diriger un autre hôpital avec autant de succès.", [3] = "Aimeriez-vous prendre la tête de l'hôpital de %s ?", }, [6] = { -- Level six: Add missing spaces before punctuation marks, fix last string which contained an anglicism [1] = "Estimable %s", [2] = "Nous savons que vous êtes heureux de vous occuper de cette délicieuse institution mais nous pensons que vous devez penser à l'avenir. Vous pourriez prétendre au salaire de %d$ si vous acceptez de changer de situation. Pensez-y.", [3] = "Voulez-vous un poste à l'hôpital de %s ?", }, [7] = { -- Level seven: Add missing spaces before punctuation marks [1] = "Estimable %s", [2] = "Le Ministère de la Santé souhaite que vous reconsidériez votre décision de rester dans cet hôpital. Nous savons que vous avez un charmant établissement mais il est temps de relever un nouveau défi, avec un salaire attrayant de %d$.", [3] = "Êtes-vous prêt à travailler à l'hôpital de %s ?", }, [8] = { -- Level height: Add missing spaces before punctuation marks [1] = "Estimable %s", [2] = "Vous aviez donné une réponse négative à notre dernière lettre vous proposant un grand poste dans un nouvel hôpital, avec un coquet salaire de %d$. Nous pensons que vous devez revoir votre décision car nous avons pour vous un poste idéal.", [3] = "Voulez-vous bien accepter un poste à l'hôpital de %s ? S'il vous plaît !", }, [9] = { -- Level nine: Add missing spaces before punctuation marks, fix some sentences, add missing diacritics [1] = "Estimable %s", [2] = "Vous vous êtes montré le meilleur directeur d'hôpital jamais connu dans la longue et mouvementée histoire de la médecine. Nous sommes fiers de vous offrir le poste de Chef Suprême des Hôpitaux. Ce titre honorifique vous garantit un salaire de %d$. On fera pour vous une parade pleine de serpentins et les gens vous baiseront les pieds.", [3] = "Merci pour tout ce que vous avez fait. Vous avez mérité cette semi-retraite.", }, [10] = { -- Level ten: Fix some sentences [1] = "Estimable %s", [2] = "Félicitations pour avoir réussi dans tous les hôpitaux que vous avez dirigés. Une telle performance fait de vous un héros. Vous recevrez une pension de %d$ plus une limousine. Tout ce que nous vous demandons, c'est d'aller de ville en ville rencontrer votre public en adoration et défendre le renom des hôpitaux.", [3] = "Nous sommes tous fiers de vous et notre coeur déborde de gratitude pour votre dévouement à sauver des vies.", }, [11] = { -- Level eleven: No change [1] = "Estimable %s", [2] = "Votre carrière est exemplaire et vous êtes une inspiration pour nous tous. Merci d'avoir géré tous ces hôpitaux avec autant de talent. Nous souhaitons vous offrir une rente à vie de %d$ pour simplement aller de ville en ville à bord d'une voiture de prestige pour saluer la foule et donner des conférences sur votre incroyable réussite.", [3] = "Vous êtes un exemple pour toute personne sensée et tout le monde, sans exception, vous considère comme un modèle absolu.", }, [12] = { -- Level twelve: Add missing spaces before punctuation marks [1] = "Estimable %s", [2] = "Votre carrière réussie en tant que meilleur directeur d'hôpital depuis la nuit des temps arrive à sa fin. Toutefois, vous avez eu sur le monde tranquille de la médecine une telle influence que le Ministre vous offre un salaire de %d$ uniquement pour paraître en public, faire des inaugurations, baptiser des navires et participer à des débats. Le monde entier vous acclame et c'est la meilleure des publicités pour le Ministère de la Santé !", [3] = "Veuillez accepter cette situation : ce n'est pas trop difficile et vous aurez, en plus, une escorte de police partout où vous irez.", }, } -- The originals of some of these string lack a space before punctuation marks and or between words misc.balance = "Ajustage :" tooltip.pay_rise_window.decline = "Ne payez pas, licenciez !" tooltip.watch = { emergency = "Urgence : temps qui reste pour soigner les patients entrés en urgence.", hospital_opening = "Délai : ceci est le temps qui reste avant que votre hôpital soit ouvert. Cliquez sur GO pour l'ouvrir tout de suite.", epidemic = "Épidémie : temps qui reste pour arrêter l'épidémie. Si ce délai expire OU si un malade contagieux quitte l'hôpital, un inspecteur sanitaire viendra... Le bouton active ou désactive la vaccination. Cliquez sur un patient pour lancer la vaccination par une infirmière.", } tooltip.objects = { chair = "Chaise : le patient s'y assied pour parler de ses symptômes.", sofa = "Sofa : c'est ce qui permet aux employés de se relaxer... sauf s'ils trouvent mieux...", bench = "Banc : pour que les patients puissent attendre confortablement.", video_game = "Jeu vidéo : l'équipe se relaxe en jouant à Hi-Octane.", lamp = "Lampe : vous avez déjà essayé de travailler dans le noir ?", door = "Porte : les gens aiment les ouvrir et les fermer.", auto_autopsy = "Autopsie : très utile pour la recherche.", tv = "TV : votre équipe ne doit pas manquer ses programmes favoris.", litter_bomb = "Bombe à détritus : pour saboter les hôpitaux concurrents.", inflator = "Gonfleur : pour soigner l'encéphalantiasis.", desk = "Bureau : essentiel pour poser un ordinateur.", pool_table = "Billard : pour la relaxation du personnel.", bed = "Lit : les cas graves ont besoin de rester couchés.", bookcase = "Étagère : pour les ouvrages de référence.", drinks_machine = "Distributeurs : contre la soif et pour ramasser des gros sous.", skeleton = "Squelette : utile pour l'enseignement et pour Halloween.", computer = "Ordinateur : une composante essentielle de la recherche.", bin = "Poubelle : les patients y jettent leurs détritus.", pharmacy_cabinet = "Pharmacie : c'est là qu'on dispense les médicaments.", radiator = "Radiateur : permet de garder l'hôpital au chaud.", atom_analyser = "Mélangeur : installé au Département Recherche, cette machine accélère tout le processus d'étude.", plant = "Plante : plaît aux patients et purifie l'air.", toilet = "Toilettes : les patients en ont, euh, besoin.", fire_extinguisher = "Extincteur : pour minimiser les dangers causés par des machines défectueuses.", lecture_chair = "Chaise : les médecins en formation s'asseyent là pour prendre des notes et s'ennuyer. Plus vous mettrez des chaises, plus vous pourrez former de médecins.", toilet_sink = "Lavabo : s'il n'y en a pas assez, les patients qui apprécient l'hygiène seront mécontents.", cabinet = "Placard : dossiers des patients, notes de recherche.", } room_descriptions = { gp = { [2] = "C'est une salle de diagnostic fondamentale pour votre hôpital. Elle accueille les nouveaux patients pour les ausculter. Ils sont ensuite orientés vers une autre salle, soit pour un autre diagnostic soit pour être soignés. Vous devriez construire un autre cabinet de médecine générale au cas où celui-ci serait débordé. Plus l'endroit est grand et plus vous pouvez y placer des équipements, sans compter que c'est bon pour le prestige du médecin. C'est valable pour toutes les salles, en fait.", }, pharmacy = { [2] = "Les patients dont le mal a été diagnostiqué et dont le traitement est un médicament peuvent se rendre à la pharmacie. Comme la recherche découvre toujours de nouveaux traitements, l'activité de cette salle est en constante évolution. Vous aurez à construire une autre pharmacie plus tard.", }, general_diag = { [3] = "La salle de diagnostic nécessite un médecin. Il faut également un agent de maintenance pour un entretien périodique. ", }, fracture_clinic = { [2] = "Les patients dont les os étaient en morceaux se rendront dans cette salle. Le déplâtreur dégagera les membres en ne causant qu'une faible douleur.", }, inflation = { [2] = "Les patients souffrant de l'affreuse-mais-si-drôle encéphalantiasis sont soignés à la salle de gonflage, où leur tête démesurée sera dégonflée puis regonflée à la bonne taille.", }, hair_restoration = { [2] = "Les patients souffrant de sévère calvitie se rendront dans cette salle équipée d'un moumouteur. Un médecin utilisera la machine pour donner aux patients une nouvelle chevelure.", }, electrolysis = { [2] = "Les patients souffrant de pilose viennent dans cette salle où une machine arrache les poils et scelle les pores selon un procédé qui n'est pas sans rappeler la cimentation.", }, staff_room = { [2] = "Votre équipe finit par se fatiguer et a besoin de cette salle pour se remettre. Une équipe fatiguée est lente, revendicatrice et peut même envisager de démissionner. De plus, elle risque de commettre des erreurs. Il est avisé de construire une salle de repos bien aménagée et de prévoir assez de place pour plusieurs membres à la fois.", } } progress_report.too_hot = "Réglez le chauffage : on étouffe." adviser.tutorial.build_pharmacy = "Félicitations ! Construisez maintenant une pharmacie et embauchez une infirmière." adviser.epidemic.serious_warning = "Cette maladie contagieuse est dangereuse. Vous devez prendre des mesures d'urgence !" adviser.staff_advice.too_many_doctors = "Il y a trop de médecins. Certains n'ont rien à faire !" adviser.earthquake.ended = "Ouh là ! J'ai cru que c'était la fin ! C'était du %d sur l'échelle de Richter." adviser.multiplayer.poaching = { not_interested = "Ha ! Ils ne veulent pas travailler pour vous, ils sont satisfaits comme ça.", already_poached_by_someone = "Eh non ! Quelqu'un s'intéresse déjà à cette personne.", } adviser.vomit_wave.ended = "Ouf ! On dirait que le virus qui provoquait des nausées est enfin enrayé. Gardez l'hôpital propre, à l'avenir." adviser.research.new_available = "Nouveau : un(e) %s est disponible." adviser.research.drug_improved_1 = "Le traitement contre la %s a été amélioré par votre département de recherche." adviser.warnings = { money_low = "Les fonds sont en baisse !", no_patients_last_month = "Pas de nouveaux patients le mois dernier. Honteux !", machines_falling_apart = "Les machines tombent en panne. Faites-les réparer !", bankruptcy_imminent = "Hé ! Vous courez à la faillite. Attention !", too_many_plants = "Il y a bien trop de plantes. C'est la jungle, ici !", many_killed = "Vous avez laissé mourir %d personnes. Idiot ! Vous êtes censé les soigner.", falling_1 = "Hé ! Ce n'est pas drôle, regardez ou vous cliquez, quelqu'un pourrait être blessé !", falling_2 = "Arrêtez de faire n'importe quoi, qu'en penseriez-vous à leur place ?", falling_3 = "Aïe, ça doit faire mal, qu'on appelle un médecin !", falling_4 = "C'est un hôpital, pas un parc d'attraction !", falling_5 = "Ce n'est pas un endroit pour bousculer les gens, ils sont malades vous savez ?", falling_6 = "Ce n'est pas un bowling, les gens malades ne devraient pas être traités comme ça !", handymen_tired = "Les agents de maintenance sont très fatigués. Laissez-les se reposer.", -- Add a missing letter } adviser.placement_info.object_cannot_place = "Hé ! Vous ne pouvez pas placer cet objet ici." adviser.information = { epidemic = "Une maladie contagieuse sévit dans votre hôpital. Vous devez l'enrayer immédiatement !", emergency = "C'est une urgence ! Vite ! Vite ! VITE !", initial_general_advice = { first_epidemic = "Il y a une épidémie dans votre hôpital ! A vous de voir si vous étouffez l'affaire ou si vous en parlez.", }, patient_leaving_too_expensive = "Un patient part sans payer la facture pour %s. Sacrée perte !", vip_arrived = "Attention ! %s arrive pour visiter votre hôpital ! Faites en sorte de lui faire bonne impression.", first_death = "Vous venez de tuer votre premier patient. Alors, heureux ?", promotion_to_specialist = "L'un de vos INTERNES est devenu MÉDECIN.", -- Fix the famous "Level 5 bug" } buy_objects_window = { price = "Prix : ", total = "Total : ", } fax = { epidemic_result = { close_text = "Hourra !", rep_loss_fine_amount = "Les journaux vont s'en donner à cÅ“ur joie avec cette affaire. Votre réputation va en prendre un coup ! Sans oublier l'amende de %d.", }, vip_visit_result = { telegram = "Télégramme !", vip_remarked_name = "Après avoir visité votre hôpital, %s a dit : ", remarks = { very_bad = { [1] = "Quelle déception ! On devrait fermer cet endroit.", [2] = "Je n'ai jamais vu ça. Quelle honte !", [3] = "Je suis sous le choc. Et on appelle ça un hôpital ! Il me faut un verre pour m'en remettre.", }, bad = { [2] = "Ce que j'ai vu est révoltant. Ce n'est pas un hôpital, c'est une porcherie !", [3] = "J'en ai assez de devoir faire des visites officielles dans des trous puants comme celui-ci. Je démissionne !", }, }, }, disease_discovered_patient_choice = { what_to_do_question = "Que voulez-vous faire du patient ?", }, debug_fax = { close_text = "Ouais, ouais, ouais !", }, diagnosis_failed = { what_to_do_question = "Que faire du patient ?", partial_diagnosis_percentage_name = "Il y a %d pour cent de chances que la maladie soit %s." }, } fax.epidemic.declare_explanation_fine = "Si vous déclarez l'épidémie, vous aurez une amende de %d, un changement de réputation et tous les patients seront vaccinés automatiquement." fax.emergency.num_disease = "Il y a %d personnes atteintes de %s qui ont besoin de soins immédiats." dynamic_info = { patient = { actions = { prices_too_high = "C'est trop cher : je rentre chez moi.", no_diagnoses_available = "Plus de diagnostic : je rentre chez moi.", cured = "Guéri !", no_treatment_available = "Pas de traitement : je rentre chez moi.", }, diagnosed = "Ausculté : %s", } } transactions = { cure_colon = "Guérison :", final_treat_colon = "Trait final :", treat_colon = "Trait :", advance_colon = "Avance :", insurance_colon = "Assurance :", } diseases = { third_degree_sideburns = { cause = "Cause : regret pathologique des années 70.", cure = "Traitement : un psychiatre doit faire comprendre au patient qu'il faut changer d'époque comme de chemise.", name = "Rétrostalgie", symptoms = "Symptômes : passion immodérée des pantalons à pattes d'éléphant et des paillettes.", }, discrete_itching = { cause = "Cause : petits bestioles à dents aiguës.", cure = "Traitement : un sirop gluant est administré pour empêcher les démangeaisons.", name = "Morpionnite", symptoms = "Symptômes : le patient se gratte jusqu'au sang.", }, the_squits = { cause = "Cause : avoir mangé de la pizza ramassée derrière la cuisinière.", cure = "Traitement : un mélange gluant de diverses substances synthétiques est administré au patient pour solidifier son, euh, contenu.", name = "Courante", symptoms = "Symptômes : hum. Vous voyez le genre.", }, spare_ribs = { cause = "Cause : trop de temps passé sur un sol froid.", cure = "Traitement : deux chirurgiens retirent les côtes flottantes et les donnent au patient dans un sac à emporter.", name = "Excès costal", symptoms = "Symptômes : déplaisante sensation de flottement.", }, diag_blood_machine = { name = "Diag Sanguimachine", }, king_complex = { cause = "Cause : l'esprit du King s'est emparé de celui du patient et l'a envahi.", cure = "Traitement : un psychiatre explique au patient à quel point tout ceci est ridicule.", name = "Syndrome du King", symptoms = "Symptômes : passion pour les chaussures en daim bleu et pour les cheeseburgers.", }, diag_x_ray = { name = "Diag Rayons X", }, pregnancy = { cause = "Cause : pannes de courant en zones urbaines.", cure = "Traitement : le bébé est prélevé en salle d'opération puis soigneusement nettoyé pour faire son entrée dans le monde.", name = "Grossesse", symptoms = "Symptômes : gloutonnerie avec hypertrophie du ventre.", }, fake_blood = { cause = "Cause : avoir été victime d'une très mauvaise plaisanterie.", cure = "Traitement : seule une cure psychiatrique peut calmer le patient.", name = "Sang factice", symptoms = "Symptômes : le patient voit son sang s'évaporer.", }, diag_psych = { name = "Diag Psychiatre", }, invisibility = { cause = "Cause : morsure par une fourmi radioactive (et invisible).", cure = "Traitement : il suffit de faire boire au patient un liquide coloré dispensé à la pharmacie pour le rendre pleinement observable.", name = "Invisibilité", symptoms = "Symptômes : le patient ne souffre pas mais a une forte propension à utiliser son état pour faire des farces à son entourage.", }, golf_stones = { cause = "Cause : exposition au gaz empoisonné contenu dans les balles de golf.", cure = "Traitement : résection des surplus par une équipe de deux chirurgiens.", name = "Pierres de golf", symptoms = "Symptômes : formation nodules excédentaires.", }, diag_general_diag = { name = "Diag Généraliste", }, infectious_laughter = { cause = "Cause : exposition à un comique de situation.", cure = "Traitement : un psychiatre doit faire comprendre au patient à quel point son état est sérieux.", name = "Fou rire", symptoms = "Symptômes : gloussement irrépressible et répétition compulsive d'accroches même pas drôles.", }, general_practice = { name = "Généraliste", }, baldness = { cause = "Cause : avoir raconté trop de mensonges pour se rendre intéressant.", cure = "Traitement : pose très douloureuse de cheveux à l'aide d'un moumouteur.", name = "Calvitie", symptoms = "Symptômes : tête en boule de billard et gros complexe.", }, heaped_piles = { cause = "Cause : s'être assis sur un jet de jacuzzi.", cure = "Traitement : une potion agréable bien que puissamment acide dissout les rectoïdes de l'intérieur.", name = "Rectoïdes", symptoms = "Symptômes : le patient a l'impression de s'asseoir sur un sac de billes.", }, unexpected_swelling = { cause = "Cause : n'importe quoi d'inattendu.", cure = "Traitement : le dégonflement est obtenu par une délicate opération pratiquée par deux chirurgiens.", name = "Bouffissure", symptoms = "Symptômes : bouffissure généralisée.", }, jellyitis = { cause = "Cause : abus de produits riches en gélifiant et trop d'exercice.", cure = "Traitement : le patient est immergé dans un dégélifiant.", name = "Gélatine", symptoms = "Symptômes : grande mollesse et tendance à l'écroulement.", }, hairyitis = { cause = "Cause : exposition prolongée au clair de lune.", cure = "Traitement : on fait disparaître les poils avec un électrolyseur et les pores sont scellés.", name = "Pilose", symptoms = "Symptômes : le patient développe un odorat accru.", }, alien_dna = { cause = "Cause : agrippeurs faciaux munis de sang extraterrestre intelligent.", cure = "Traitement : l'ADN est retiré par un correcteur pour être nettoyé puis restitué rapidement.", name = "ADN Alien", symptoms = "Symptômes : le patient se métamorphose progressivement en sale machin d'outre-espace et veut tout détruire.", }, bloaty_head = { cause = "Cause : avoir reniflé du fromage et bu de l'eau de pluie.", cure = "Traitement : la tête est éclatée puis regonflée à la bonne dimension à l'aide d'une astucieuse machine.", name = "Encéphalantiasis", symptoms = "Symptômes : affreux maux de tête.", }, gastric_ejections = { cause = "Cause : nourriture mexicaine ou indienne très épicée.", cure = "Traitement : administration par voie orale d'une solution spéciale pour endiguer les rejets.", name = "Éjections gastriques", symptoms = "Symptômes : le patient rejette par accès des bribes de nourriture mal digérée.", }, uncommon_cold = { cause = "Cause : divers trucmuches volant dans l'air", cure = "Traitement : absorption d'une grande rasade d'un sirop spécial élaboré à la pharmacie.", name = "Catarhume", symptoms = "Symptômes : nez qui coule, éternuements, poumons décolorés.", }, corrugated_ankles = { cause = "Cause : avoir roulé trop vite sur des ralentisseurs.", cure = "Traitement : le patient doit absorber un mélange d'herbes et d'épices légèrement toxique dont l'effet redressera illico les chevilles.", name = "Chevilles ondulées", symptoms = "Symptômes : les chaussures ne s'ajustent plus.", }, sleeping_illness = { cause = "Cause : hypertrophie de la glande palatale de Morphée.", cure = "Traitement : une infirmière administre une forte dose d'un puissant stimulant.", name = "Roupillance", symptoms = "Symptômes : tendance irrépressible à tomber de sommeil.", }, sweaty_palms = { cause = "Cause : terreur des entretiens d'embauche.", cure = "Traitement : un psychiatre détend le patient en lui racontant celle du fou qui repeint son plafond.", name = "Mains moites", symptoms = "Symptômes : serrer la main du patient revient à presser une éponge détrempée.", }, serious_radiation = { cause = "Cause : avoir pris du plutonium pour des bonbons.", cure = "Traitement : le patient est passé à la douche de décontamination et consciencieusement récuré.", name = "Radionite", symptoms = "Symptômes : le patient ne se sent vraiment, vraiment pas bien.", }, diag_cardiogram = { name = "Diag Cardio", }, diag_scanner = { name = "Diag Scanner", }, gut_rot = { cause = "Cause : la Bonne Vieille Bibine de la Mère Sam.", cure = "Traitement : une infirmière doit administrer diverses substances chimiques pour tenter de colmater le tout.", name = "Tripurulente", symptoms = "Symptômes : aucun microbe mais plus de paroi intestinale non plus.", }, iron_lungs = { cause = "Cause : pollution atmosphérique combinée aux remugles de kébab.", cure = "Traitement : deux chirurgiens enlèvent le blindage en salle d'opération.", name = "Poumons de fer", symptoms = "Symptômes : envie de respirer du feu et de hurler sous l'eau.", }, broken_wind = { cause = "Cause : utilisation d'un appareil de musculation juste après un repas.", cure = "Traitement : une mixture d'eau lourde est administrée à la pharmacie.", name = "Pétomanie", symptoms = "Symptômes : pollution de l'air des personnes situées derrière le patient.", }, kidney_beans = { cause = "Cause : avoir croqué les glaçons de son cocktail.", cure = "Traitement : deux chirurgiens extraient les cristaux sans endommager le rein.", name = "Cristaux rénaux", symptoms = "Symptômes : douleur et fréquentes visites aux toilettes.", }, transparency = { cause = "Cause : avoir léché le yaourt adhérent au couvercle à l'ouverture d'un pot.", cure = "Traitement : administration d'une potion fraîche et colorée préparée à la pharmacie.", name = "Transparence", symptoms = "Symptômes : la chair est horrible et transparente.", }, broken_heart = { cause = "Cause : avoir croisé quelqu'un de plus riche, plus jeune et plus beau.", cure = "Traitement : deux chirurgiens ouvrent la poitrine et réparent doucement le coeur en retenant leur souffle.", name = "Coeur brisé", symptoms = "Symptômes : pleurnicheries et crampes causées par des heures à regarder de vieilles photos de vacances.", }, slack_tongue = { cause = "Cause : trop de discussion à propos des romans-feuilletons.", cure = "Traitement : la langue est placée dans un taille-langue puis elle est coupée rapidement, efficacement et douloureusement.", name = "Hyperlangue", symptoms = "Symptômes : la langue s'étire jusqu'à cinq fois sa longueur normale.", }, tv_personalities = { cause = "Cause : avoir abusé des programmes télévisés.", cure = "Traitement : un psychiatre doit convaincre le patient d'échanger sa télévision contre une radio.", name = "Téléincarnation", symptoms = "Symptômes : le patient a l'illusion d'être capable de présenter une émission de cuisine.", }, ruptured_nodules = { cause = "Cause : saut à l'élastique par temps froid.", cure = "Traitement : deux chirurgiens doivent réajuster les parties concernées d'une main sûre.", name = "Casse-boules", symptoms = "Symptômes : impossibilité de s'asseoir confortablement.", }, fractured_bones = { cause = "Cause : chute spectaculaire sur du béton.", cure = "Traitement : un plâtre est posé puis ôté à l'aide d'un équipement au laser.", name = "Fractures", symptoms = "Symptômes : affreux craquement et incapacité à utiliser les membres touchés.", }, chronic_nosehair = { cause = "Cause : avoir reniflé avec dédain à la vue de plus malheureux que soi.", cure = "Traitement : une épouvantable potion dépilatoire est administrée par une infirmière à la pharmacie.", name = "Poilonisme", symptoms = "Symptômes : poils au nez si drus qu'un oiseau pourrait y nicher.", }, } confirmation = { quit = "Vous avez choisi Quitter. Voulez-vous vraiment quitter le jeu ?", return_to_blueprint = "Êtes-vous sûr de vouloir revenir au mode Tracé ?", restart_level = "Êtes-vous sûr de vouloir relancer ce niveau ?", overwrite_save = "Il y a déjà une partie sauvegardée ici. Êtes-vous sûr de vouloir l'écraser ?", delete_room = "Voulez-vous vraiment détruire cette salle ?", sack_staff = "Êtes-vous sûr de vouloir licencier ?", replace_machine = "Voulez-vous vraiment remplacer cette machine ?", } -- The originals of these strings contain one space too much trophy_room.sold_drinks.trophies[2] = "Vous recevez le prix Bubulles du Syndicat des Vendeurs de Limonade pour récompenser la quantité de sodas vendus dans votre hôpital au cours de l'année écoulée. " tooltip.status.percentage_cured = "Vous devez soigner %d%% des visiteurs de l'hôpital. Actuellement, vous en avez soigné %d%%" tooltip.status.num_cured = "L'objectif est de soigner %d personnes. Pour le moment, vous en avez soigné %d" dynamic_info.staff.actions.going_to_repair = "Pour réparer %s" adviser.staff_place_advice.only_doctors_in_room = "Seuls les médecins peuvent travailler en %s" adviser.staff_place_advice.nurses_cannot_work_in_room = "Les infirmières ne peuvent travailler en %s" pay_rise.definite_quit = "Rien ne me fera rester ici. J'en ai assez." place_objects_window.confirm_or_buy_objects = "Vous pouvez valider ainsi ou bien soit acheter soit déplacer des objets." ----------------------------------------------------------- New strings ----------------------------------------------------------- date_format = { daymonth = "%1% %2:months%", } -- Objects object.litter = "Déchet" tooltip.objects.litter = "Déchet : laissé sur le sol par un patient car il n'a pas trouvé de poubelle où le jeter." tooltip.fax.close = "Fermer cette fenêtre sans supprimer le message" tooltip.message.button = "clic gauche pour ouvrir le message" tooltip.message.button_dismiss = "clic gauche pour ouvrir le message, clic droit pour le rejeter" tooltip.casebook.cure_requirement.hire_staff = "Vous devez embaucher du personnel pour gérer ce traitement" tooltip.casebook.cure_type.unknown = "Vous ne savez pas encore comment traiter cette maladie" tooltip.research_policy.no_research = "Aucune recherche n'est actuellement effectuée dans cette catégorie" tooltip.research_policy.research_progress = "Progrès vers la prochaine découverte dans cette catégorie : %1%/%2%" menu_file = { load = " (SHIFT+L) CHARGER ", save = " (SHIFT+S) ENREGISTRER ", restart = " (SHIFT+R) RELANCER", quit = " (SHIFT+Q) QUITTER ", } -- Options menu menu_options = { lock_windows = " FIGER LES FENETRES ", edge_scrolling = " DEFILEMENT PAR BORD ", adviser_disabled = " ASSISTANT ", warmth_colors = " COULEURS CHAUDES ", wage_increase = " AUGMENTATION DE SALAIRE ", twentyfour_hour_clock = " HORLOGE 24 HEURES ", } menu_options_game_speed = { pause = " (P) PAUSE ", slowest = " (1) AU PLUS LENT ", slower = " (2) PLUS LENT ", normal = " (3) NORMAL ", max_speed = " (4) VITESSE MAXI ", and_then_some_more = " (5) ET ENCORE PLUS ", } menu_options_warmth_colors = { choice_1 = " ROUGE ", choice_2 = " BLEU VERT ROUGE ", choice_3 = " JAUNE ORANGE ROUGE ", } menu_options_wage_increase = { grant = " ACCORDER ", deny = " REFUSER ", } -- Charts Menu ' Temporary; must see in-game for correct translation menu_charts = { bank_manager = " (F1) GESTION BANCAIRE ", statement = " (F2) DECLARATION ", staff_listing = " (F3) LISTE DU PERSONNEL ", town_map = " (F4) CARTE DE LA VILLE ", casebook = " (F5) MALLETTE ", research = " (F6) RECHERCHE ", status = " (F7) STATUTS ", graphs = " (F8) GRAPHIQUES ", policy = " (F9) POLITIQUE ", } -- Debug menu menu_debug = { jump_to_level = " ALLER AU NIVEAU ", connect_debugger = " (CTRL + C) CONNECTER AU SERVEUR DE DÉBOGUAGE ", transparent_walls = " (X) MURS TRANSPARENTS ", limit_camera = " LIMITER LA CAMERA ", disable_salary_raise = " DÉSACTIVER LES AUGMENTATIONS DE SALAIRE ", make_debug_fax = " CRÉER UN FAX DE TEST ", make_debug_patient = " CRÉER UN PATIENT DE TEST ", cheats = " (F11) TRICHES ", lua_console = " (F12) CONSOLE LUA ", debug_script = " (MAJ + DS) ACTIVER LE DÉBOGUAGE PAR SCRIPT ", calls_dispatcher = " RÉPARTITION DES TÂCHES ", dump_strings = " EXTRAIRE LES TEXTES ", dump_gamelog = " (CTRL+D) EXTRAIRE LE JOURNAL DE JEU ", map_overlay = " INCRUSTATIONS DE CARTE ", sprite_viewer = " VISIONNEUSE DE SPRITES ", } menu_debug_overlay = { none = " AUCUN ", flags = " DRAPEAUX ", positions = " POSITIONS ", heat = " TEMPÉRATURE ", byte_0_1 = " OCTETS 0 & 1 ", byte_floor = " OCTET SOL ", byte_n_wall = " OCTET MUR N ", byte_w_wall = " OCTET MUR O ", byte_5 = " OCTET 5 ", byte_6 = " OCTET 6 ", byte_7 = " OCTET 7 ", parcel = " PARCELLE ", } menu_player_count = { players_1 = " 1 JOUEUR ", players_2 = " 2 JOUEURS ", players_3 = " 3 JOUEURS ", players_4 = " 4 JOUEURS ", } -- Adviser adviser = { room_forbidden_non_reachable_parts = "Placer la pièce à cet endroit rendrait inaccessibles certaines parties de l'hôpital", warnings = { no_desk = "Vous devriez construire un bureau de réception et engager une réceptionniste un de ces jours !", no_desk_1 = "Si vous voulez que des patients viennent dans votre hôpital, vous devez embaucher une réceptionniste et lui construire un bureau pour travailler !", no_desk_2 = "Bien joué, ça doit être un record : presque un an et pas de patient ! Si vous voulez continuer comme directeur de cet hôpital, vous devez embaucher une réceptionniste et lui construire un bureau pour travailler !", no_desk_3 = "C'est tout simplement génial, presque un an et vous n'avez pas embauché de réceptionniste ! Comment espérez obtenir le moindre patient ? Arrangez-ça et arrêtez de perdre votre temps !", no_desk_4 = "Une réceptionniste aura besoin d'un bureau pour accueillir des patients", no_desk_5 = "Il était temps, maintenant les patients devraient commencer à arriver bientôt !", no_desk_6 = "Vous avez une réceptionniste, peut-être il est temps de construire un bureau où elle peut travailler ?", no_desk_7 = "Maintenant, que vous avez une réception, que diriez-vous d'embaucher une réceptionniste également ? Vous n'aurez pas de patients avant de l'avoir fait !", cannot_afford = "Vous n'avez pas assez d'argent à la banque pour embaucher cette personne !",-- I can't see anything like this in the original strings cannot_afford_2 = "Vous n'avez pas assez d'argent à la banque pour effectuer l'achat !", research_screen_open_1 = "Vous devez construire une salle de recherche avant de pouvoir accéder à l'écran des recherches.", research_screen_open_2 = "La recherche est désactivée pour le niveau en cours.", researcher_needs_desk_1 = "Chaque chercheur a besoin d'un bureau pour travailler.", researcher_needs_desk_2 = "Vos chercheurs sont heureux d'obtenir une pause bien méritée. Si vous voulez que plusieurs chercheurs puissent travailler en même temps.", researcher_needs_desk_3 = "Un chercheur a toujours besoin d'un bureau.", nurse_needs_desk_1 = "Chaque infirmière a besoin de son propre bureau.", nurse_needs_desk_2 = "Votre infirmière est heureuse d'avoir une pause. Si vous comptez y faire travailler plusieurs personnes en même temps, vous devez leur construire un bureau à chacune.", low_prices = "Vous facturez trop peu pour %s. Ça va amener des gens dans votre hôpital, mais vous ne ferez pas beaucoup de profit sur chacun d'eux.", high_prices = "Votre tarif pour %s est trop élevé. Ça va générer plus de profit sur le court-terme, mais à la longue les gens vont fuir.", fair_prices = "Le prix pour %s semble juste et équilibré.", patient_not_paying = "Un patient est parti sans payer pour %s parce que c'est trop cher !", }, cheats = { th_cheat = "Félicitations, vous avez débloqué les triches !", roujin_on_cheat = "Défi de Roujin activé ! Bonne chance...", roujin_off_cheat = "Défi de Roujin désactivé.", }, } -- Dynamic information dynamic_info.patient.actions.no_gp_available = "Attente d'un cabinet de médecine générale" dynamic_info.staff.actions.heading_for = "Va vers %s" dynamic_info.staff.actions.fired = "Renvoyé" dynamic_info.patient.actions.epidemic_vaccinated = "Je ne suis plus contagieux" -- Progress report progress_report.free_build = "CONSTRUCTION LIBRE" -- Fax messages fax = { choices = { return_to_main_menu = "Retourner au menu principal", accept_new_level = "Aller au niveau suivant", decline_new_level = "Continuer la partie encore un peu", }, emergency = { num_disease_singular = "Il y a 1 personne atteinte de %s qui a besoin de soins immédiats.", free_build = "Si vous réussissez votre réputation augmentera mais si vous échouez votre réputation sera sérieusement entachée.", }, vip_visit_result = { remarks = { free_build = { "C'est vraiment un bel hôpital que vous avez là ! Pas trop difficile d'y arriver sans limite d'argent, hein ?", "Je ne suis pas économiste, mais je pense que je pourrais faire tourner cet hôpital aussi si vous voyez ce que je veux dire...", "Un hôpital très bien tenu. Cependant, attention à la récession ! Ah oui... vous n'avez pas à vous soucier de cela.", }, }, }, } -- Winning texts letter = { dear_player = "Cher %s", custom_level_completed = "Félicitations ! Vous avez réussi tous les objectifs de ce niveau personnalisé !", return_to_main_menu = "Voulez-vous retourner au menu principal ou continuer la partie ?", campaign_completed = "Incroyable ! Vous avez réussi à terminer tous les niveaux. Vous pouvez maintenant vous détendre et profiter de remplir des forums sur Internet de vos réalisations. Bonne chance !", campaign_level_missing = "Désolé, mais le prochain niveau de cette campagne semble manquer. (Nom: %s)", campaign_level_completed = "Bon travail ! Vous avez battu le niveau. Mais ce n'est pas fini!\n Aimeriez-vous un poste à l'hôpital %s ?", } -- Installation install = { title = "----------------------------- Installation de CorsixTH -----------------------------", th_directory = "CorsixTH nécessite une copie des données du jeu Theme Hospital originel (ou la démo) pour fonctionner. Veuillez utiliser le sélecteur ci-dessous pour indiquer le dossier d'installation de Theme Hospital.", ok = "OK", exit = "Quitter", cancel = "Annuler", } -- Misc misc.not_yet_implemented = "(pas encore implémenté)" misc.no_heliport = "Aucune maladie n'a été découverte pour l'instant, ou il n'y a pas d'héliport sur cette carte." -- Main menu main_menu = { new_game = "Nouvelle partie", custom_level = "Niveau personnalisé", continue = "Continuer la partie", load_game = "Charger une partie", options = "Options", savegame_version = "Version de la sauvegarde : ", version = "Version : ", exit = "Quitter", map_edit = "Éditeur de carte", custom_campaign = "Campagne personnalisée", } tooltip.main_menu = { new_game = "Commencer une nouvelle partie", custom_level = "Construire votre hôpital dans un niveau personnalisé", continue = "Continuer la partie", load_game = "Charger une partie sauvegardée", options = "Modifier quelques paramètres", exit = "Non, non, SVP, ne quittez pas !", map_edit = "Créer une carte personnalisée", custom_campaign = "Jouer une campagne créée par la communauté", } -- Load game window load_game_window = { caption = "Charger une partie", } tooltip.load_game_window = { load_game = "Charger la partie %s", load_game_number = "Charger la partie %d", load_autosave = "Charger la sauvegarde automatique", } -- Custom game window custom_game_window = { caption = "Niveau personnalisé", free_build = "Construction libre", } tooltip.custom_game_window = { free_build = "Cochez cette case si vous souhaitez jouer sans limite d'argent et sans conditions de victoire ou de défaite", choose_game = "Cliquez sur un niveau pour en savoir plus", load_selected_level = "Charger et jouer le niveau sélectionné", } -- Custom campaign window custom_campaign_window = { caption = "Campagne personnalisée", start_selected_campaign = "Démarrer la campagne", } tooltip.custom_campaign_window = { choose_campaign = "Choisissez une campagne pour en savoir plus à son sujet", start_selected_campaign = "Charger le premier niveau de cette campagne", } -- Save game window save_game_window = { caption = "Enregistrer la partie", new_save_game = "Nouvelle sauvegarde", } tooltip.save_game_window = { save_game = "Écraser la sauvegarde %s", new_save_game = "Entrez un nom pour la sauvegarde", } save_map_window = { caption = "Sauvegarder la carte (%1%)", new_map = "Nouvelle carte", } tooltip.save_map_window = { map = "Ecraser la carte %s", new_map = "Entrez le nom pour une sauvegarde de la carte", } -- Menu list window menu_list_window = { back = "Précédent", save_date = "Modifié", name = "Nom" } tooltip.menu_list_window = { back = "Fermer cette fenêtre", save_date = "Cliquez ici pour classer la liste par date de dernière modification", name = "Cliquez ici pour classer la liste par par nom", } -- Options window options_window = { fullscreen = "Plein Écran", width = "Largeur", height = "Hauteur", change_resolution = "Changer la résolution", cancel = "Annuler", back = "Précédent", custom_resolution = "Personnaliser...", option_on = "Activer", option_off = "Désactiver", caption = "Paramètres", language = "Langue du jeu", apply = "Appliquer", resolution = "Résolution", audio = "Audio Global", folder = "Dossier", customise = "Personnaliser", } tooltip.options_window = { fullscreen = "Mode plein écran ou mode fenêtré", fullscreen_button = "Basculer en mode plein écran/fenêtré", resolution = "La résolution vidéo pour le jeu", select_resolution = "Sélectionner une nouvelle résolution", width = "Entrez la largeur désirée", height = "Entrez la hauteur désirée", change_resolution = "Changer la résolution pour les dimensions entrées à gauche", language = "Utiliser la langue %s", back = "Fermer la fenêtre des options", cancel = "Retour sans changement de résolution", apply = "Appliquer la résolution choisie", language_dropdown_item = "Choisir %s comme langue", select_language = "Sélectionner la langue du jeu", audio_button = "Activer ou désactiver le système audio dans le jeu", audio_toggle = "Activer ou désactiver", folder_button = "Dossier des paramètres", customise_button = "Paramètres supplémentaires qui peuvent être modifiés pour personnaliser votre expérience de jeu", } customise_window = { caption = "Paramètres Supplémentaires", option_on = "Activer", option_off = "Désactiver", back = "Retour", movies = "Contrôle des cinématiques", intro = "Jouer la cinématique d'intro", paused = "Construction en pause", volume = "Touche de raccourci pour diminuer le volume", aliens = "Extraterrestres", fractured_bones = "Fractures", average_contents = "Achats mémorisés", } tooltip.customise_window = { movies = "Sélectionnez si les cinématiques doivent être joués.", intro = "Passer la cinématique d'introduction lorsque vous démarrez le jeu. Le contrôle des cinématiques doit être activé si vous jouez la cinématique d'introduction à chaque fois que vous chargez CorsixTH", paused = "Dans Theme Hospital le joueur ne sera autorisé à utiliser le menu principal que si le jeu est en pause. C'est le paramètre par défaut dans CorsixTH aussi, mais en l'activant tout est permis pendant que le jeu est en pause", volume = "Si la touche de réduction du volume ouvre également le journal de médecine, activer cette option pour modifier le raccourci des dossiers médicaux à Maj + C", aliens = "Comme il y a des animations appropriées, nous avons fait de sorte que les patients avec l'ADN extraterrestre montrent seulement comme des situations d'urgence. Désactivez cette option pour obtenir cas de l'ADN extraterrestre visites régulières", fractured_bones = "En raison de la qualité faible de l'animation il n'y a pas de patientes avec des fractures. Désactivez cette option si vous désirez avoir des femmes avec des fractures.", average_contents = "Si vous voulez que le jeu se rappelle des articles supplémentaires que vous avez tendance à normalement magasiner pour une nouvelle salle, activer cette option", back = "Fermer ce menu et revenir au menu d'options", } folders_window = { caption = "Paramètres de dossier", data_label = "Données de TH", font_label = "Police", music_label = "MP3", savegames_label = "Sauvegarde", screenshots_label = "Captures d'écran", -- next four are the captions for the browser window, which are called from the folder setting menu new_th_location = "Ici vous pouvez spécifier un nouveau répertoire d'installation de Theme Hospital. Dès que vous choisissez le nouveau répertoire, le jeu sera redémarré.", savegames_location = "Sélectionner le répertoire que vous voulez utiliser pour les sauvegardes", music_location = "Sélectionner le répertoire que vous voulez utiliser pour la musique", screenshots_location = "Sélectionner le répertoire que vous voulez utiliser pour les captures d'écran", back = "Retour", } tooltip.folders_window = { browse = "Parcourir l'emplacement du dossier", data_location = "Le répertoire d'origine de l'installation de Theme Hospital, qui est requis pour faire fonctionner CorsixTH", font_location = "Emplacement d'un fichier de police qui est capable d'afficher des caractères Unicode requises par votre langue. Si aucun emplacement n'est spécifié vous ne serez pas en mesure de choisir des langues qui ont des caractères que le jeu original ne peut pas fournir. Exemple : Russe et Chinois", savegames_location = "Par défaut, le répertoire de sauvegardes est à côté du fichier de configuration et sera utilisé pour stocker les sauvegardes. Si cela n'est pas approprié vous pouvez modifier ce répertoire.", screenshots_location = "Par défaut, les captures d'écran sont stockés dans un dossier avec le fichier de configuration. Si cela ne convient pas vous pouvez choisir votre propre dossier.", music_location = "Sélectionnez un emplacement pour vos fichiers MP3.", browse_data = "Parcourir un autre emplacement d'une installation de Theme Hospital (emplacement actuel : %1%)", browse_font = "Parcourir un autre fichier de police (emplacement actuel : %1%)", browse_saves = "Parcourir un autre répertoire de sauvegardes (emplacement actuel : %1%)", browse_screenshots = "Parcourir un autre répertoire de captures d'écrans (emplacement actuel : %1%)", browse_music = "Parcourir un autre répertoire de musique (emplacement actuel : %1%)", no_font_specified = "Aucun répertoire de police spécifié !", not_specified = "Aucun répertoire spécifié !", default = "Emplacement par défaut", reset_to_default = "Réinitialiser le répertoire à son emplacement par défaut", back = "Fermer ce menu et revenir au menu Paramètres", } font_location_window = { caption = "Choisir une police (%1%)", } -- Handyman window handyman_window = { all_parcels = "Partout", parcel = "Parcelle", } tooltip.handyman_window = { parcel_select = "Les parcelles où les agents de maintenance peuvent travailler : cliquez pour changer le paramètre.", } --- New game window new_game_window = { easy = "Interne (Facile)", medium = "Médecin (Moyen)", hard = "Consultant (Difficile)", tutorial = "Tutoriel", cancel = "Annuler", option_on = "Activer", option_off = "Désactiver", difficulty = "Difficulté", caption = "Campagne", player_name = "Nom du joueur", start = "Démarrer", } tooltip.new_game_window = { easy = "Si vous jouez pour la première fois à un jeu de simulation, cette option est pour vous", medium = "C'est la voie du milieu à prendre si vous ne savez pas quoi choisir", hard = "Si vous êtes habitué à ce genre de jeu et que vous souhaitez plus d'un défi, choisissez cette option", tutorial = "Si vous voulez un peu d'aide pour démarrer une fois dans le jeu, cochez cette case", cancel = "Oh, je n'avais pas vraiment l'intention de commencer une nouvelle partie !", difficulty = "Sélectionnez le niveau de difficulté que vous voulez dans le jeu", start = "Démarrer le jeu avec les paramètres sélectionnés", player_name = "Entrez le nom par lequel vous voulez être appelé dans le jeu", } -- Lua Console lua_console = { execute_code = "Exécuter", close = "Fermer", } tooltip.lua_console = { textbox = "Entrez du code Lua à exécuter ici", execute_code = "Exécuter le code que vous avez entré", close = "Fermer la console", } -- Errors errors = { dialog_missing_graphics = "Désolé, les données de démo ne contiennent pas cette boîte de dialogue.", save_prefix = "Erreur lors de la sauvegarde de la partie : ", load_prefix = "Erreur lors du chargement de la partie : ", no_games_to_contine = "Pas de parties sauvegardées.", map_file_missing = "Impossible de trouver le fichier de carte %s pour ce niveau !", minimum_screen_size = "Veuillez entrer une résolution supérieure à 640x480.", unavailable_screen_size = "La résolution que vous avez demandée n'est pas disponible en plein écran.", alien_dna = "NOTE : Il n'y a pas d'animations pour les patients étrangers pour s'asseoir, ouvrir ou de frapper aux portes, etc. Donc, comme avec Theme Hospital pour faire ces choses, ils semblent changer à la normale et ensuite changer de nouveau. Les patients avec l'ADN Alien apparaîtront seulement s'ils sont définis dans le fichier de niveau.", fractured_bones = "NOTE : L'animation pour les patients de sexe féminin avec des os fracturés n'est pas parfaite.", load_quick_save = "Erreur, impossible de charger la sauvegarde rapide car elle n'existe pas, ne vous inquiétez pas nous avons créé une pour vous !", } -- Confirmation dialog confirmation = { needs_restart = "Changer ce paramètre va nécessiter un redémarrage de CorsixTH. Tout progrès non sauvegardé sera perdu. Êtes-vous sûr de vouloir faire cela ?", abort_edit_room = "Vous êtes actuellement en train de construire ou d'éditer une pièce. Si tous les objets requis sont placés, elle sera validée, mais sinon elle sera détruite. Continuer ?", maximum_screen_size = "La taille de l'écran que vous avez entrée est supérieure à 3000 x 2000. Des plus hautes résolutions sont possibles, mais il faudra un meilleur matériel afin de maintenir un taux de trame jouable. Êtes-vous sûr de vouloir continuer?", music_warning = "Avant de choisir d'utiliser des MP3 pour votre musique dans le jeu, vous aurez besoin d'avoir smpeg.dll ou l'équivalent pour votre système d'exploitation, sinon vous n'aurez pas de musique dans le jeu. Voulez-vous continuer?", could_not_load_campaign = "Impossible de charger la campagne : %s", could_not_find_first_campaign_level = "Impossible de trouver le premier niveau de cette campagne : %s", } -- Information dialog information = { custom_game = "Bienvenue dans CorsixTH. Amusez-vous bien avec cette carte personnalisée !", no_custom_game_in_demo = "Désolé, mais dans la version démo vous ne pouvez jouer avec aucune des cartes personnalisées.", cannot_restart = "Malheureusement cette partie personnalisée a été sauvegardée avant que la fonctionnalité de redémarrage soit implémentée.", very_old_save = "Il y a eu beaucoup de mises à jour du jeu depuis que vous avez commencé ce niveau. Pour être sûr que tout fonctionne comme prévu, pensez à recommencer le niveau.", cheat_not_possible = "Vous ne pouvez pas utiliser ce code de triche dans ce niveau. Vous n'arrivez même pas à tricher, pas marrant hein ?", level_lost = { "Quelle poisse ! Vous avez raté le niveau. Vous ferez mieux la prochaine fois !", "Voilà pourquoi vous avez perdu : ", reputation = "Votre réputation est tombée en dessous de %d.", balance = "Votre solde bancaire est tombé en dessous %d.", percentage_killed = "Vous avez tué plus de %d pourcents de vos patients.", cheat = "Étais-ce votre choix, ou bien avez-vous appuyé sur le mauvais bouton ? Vous n'arrivez même pas à tricher correctement, n'est-ce pas désolant ?" }, } tooltip.information = { close = "Fermer cette boîte de dialogue.", } -- "Tip of the day" window totd_window = { tips = { "Chaque hôpital a besoin d'un bureau de réception et d'un cabinet de médecine générale. Après, tout dépend du type de patients qui visitent votre hôpital. Une pharmacie est toujours un bon choix malgré tout.", "Les machines telles que le Gonflage ont besoin de maintenance. Embauchez un ou deux agents de maintenance pour réparer vos machines, ou vous risquerez d'avoir des blessés parmi le personnel ou les patients.", "Après un certain temps, vos employés seront fatigués. Pensez à construire une salle de repos où ils pourront se détendre.", "Placez suffisamment de radiateurs pour garder vos employés et patients au chaud, ou ils deviendront mécontents. Utilisez la carte de la ville pour localiser les endroits de votre hôpital qui nécessitent plus de chauffage.", "Le niveau de compétence d'un docteur influence beaucoup la qualité et la rapidité de ses diagnostiques. Utilisez un médecin expérimenté comme généraliste et vous n'aurez plus besoin d'autant de salles de diagnostiques.", "Les internes et les médecins peuvent augmenter leurs compétences auprès d'un consultant dans la salle de formation. Si le consultant a des qualifications particulières (chirurgien, psychiatre ou chercheur), il transférera ses connaissances à ses élèves.", "Avez-vous essayé d'entrer le numéro d'urgence Européen (112) dans le fax ? Vérifiez que vous avez du son !", "Vous pouvez ajuster certains paramètres tels que la résolution et la langue dans la fenêtre d'options accessible à la fois depuis le menu principal et pendant le jeu.", "Vous avez choisi une autre langue que l'anglais, mais il y du texte en anglais partout ? Aidez-nous à traduire les textes manquants dans votre langue !", "L'équipe de CorsixTH cherche du renfort ! Vous êtes intéressé à coder, traduire ou faire des graphismes pour CorsixTH ? Contactez-nous sur notre Forum, Liste de Diffusion ou Canal IRC (#corsix-th sur freenode).", "Si vous avez trouvé un bug, SVP, reportez-le sur notre gestionnaire de bugs : th-issues.corsix.org.", "Chaque niveau possède des objectifs qu'il vous faudra remplir pour pouvoir passer au suivant. Vérifiez la fenêtre de statuts pour voir votre progression dans les objectifs du niveau.", "Si vous voulez éditer ou détruire une pièce, vous pouvez le faire avec le bouton d'édition situé sur la barre d'outils en bas.", "Dans un groupe de patients en attente, vous pouvez rapidement découvrir lesquels attendent une pièce particulière en survolant cette pièce avec votre curseur de souris.", "Cliquez sur la porte d'une pièce pour visualiser sa file d'attente. Vous pouvez faire des réglages très utiles ici, comme réorganiser la file d'attente ou envoyer un patient vers une autre pièce.", "Le personnel mécontent vous demandera des augmentations de salaires fréquemment. Assurez-vous de leur offrir un environnement de travail confortable pour éviter cela.", "Les patients auront soif en attendant dans votre hôpital, encore plus si vous augmentez le chauffage ! Placez des distributeurs automatiques dans les points stratégiques pour un revenu d'appoint.", "Vous pouvez interrompre le processus de diagnostic d'un patient et proposer un traitement, si vous avez déjà rencontré la maladie. Notez que cela peut accroître le risque d'erreur de traitement, et provoquer la mort du patient.", "Les urgences peuvent être une bonne source de revenus additionnels, à condition que vous ayez les capacités suffisantes pour traiter les patients à temps.", }, previous = "Astuce précédente", next = "Astuce suivante", } tooltip.totd_window = { previous = "Afficher l'astuce précédente", next = "Afficher l'astuce suivante", } -- Debug patient window debug_patient_window = { caption = "Patient de test", } -- Cheats window cheats_window = { caption = "Triches", warning = "Attention : vous n'aurez aucun point de bonus à la fin du niveau si vous trichez !", cheated = { no = "Triches utilisées : non", yes = "Triches utilisées : oui", }, cheats = { money = "Plus d'argent", all_research = "Toutes les recherches", emergency = "Créer une situation d'urgence", vip = "Créer un VIP", earthquake = "Créer un tremblement de terre", create_patient = "Créer un patient", end_month = "Fin du mois", end_year = "Fin de l'année", lose_level = "Perdre le niveau", win_level = "Gagner le niveau", epidemic = "Reproduire des patients contagieux", toggle_infected = "Faire apparaître des patients contagieux.", increase_prices = "Augmenter les prix", decrease_prices = "Diminuer les prix", }, close = "Fermer", } tooltip.cheats_window = { close = "Fermer le dialogue de triches", cheats = { money = "Ajoute $10.000 à votre solde bancaire.", all_research = "Termine toutes les recherches.", emergency = "Crée une situation d'urgence.", vip = "Crée un VIP.", earthquake = "Crée un tremblement de terre.", create_patient = "Crée un patient au bord de la carte.", end_month = "Va directement à la fin du mois.", end_year = "Va directement à la fin de l'année.", lose_level = "Vous fait perdre le niveau actuel.", win_level = "Vous fait gagner le niveau actuel.", epidemic = "Crée un patient contagieux qui peut causer une épidémie.", toggle_infected = "Bascule les icônes infectés pour l'épidémie, découverte active.", increase_prices = "Augmenter tous les prix de 50% (max. 200%)", decrease_prices = "Diminuer tous les prix de 50% (min. 50%)", } } -- Introduction Texts introduction_texts = { demo = "Bienvenue dans l'hôpital de démonstration !" .. "Malheureusement, la version démo ne contient que ce niveau. Malgré tout, il y a assez à faire ici pour vous occuper un moment !" .. "Vous allez rencontrer différentes maladies qui nécessitent des salles pour les soigner. De temps en temps, des urgences peuvent se produire. Et vous aurez besoin d'une salle de recherche pour trouver des nouvelles salles." .. "Votre but est de gagner 100,000$, de faire monter la valeur de votre hôpital à 70,000$ et d'obtenir une réputation de 700, tout en ayant soigné au moins 75% de vos patients." .. "Veillez à ce que votre réputation ne tombe pas en dessous de 300 et de ne pas tuer plus de 40% de vos patients, ou vous perdrez." .. "Bonne chance !", level1 = "Bienvenue dans votre premier hôpital !//Démarrez l'activité en installant un bureau de réception et " .. "en construisant un cabinet de médecine générale. Embauchez une réceptionniste et un médecin. Il vous " .. "suffit d'attendre des admissions. Il serait bon de construire un cabinet de psychiatrie et d'embaucher " .. "un médecin formé dans ce domaine. Une pharmacie et une infirmière sont également indispensables pour soigner " .. "les patients. Attention aux cas d'encéphalantiasis : une salle de gonflage suffit pour traiter cette maladie. " .. "Il vous faut soigner 10 personnes et vous assurer que votre réputation ne tombe pas en-dessous de 200", level8 = "A vous de gérer l'hôpital le plus efficace et le plus rentable possible.//Les gens du coin sont bien nantis alors " .. "pompez-leur tout le fric que vous pourrez. Soigner les gens c'est bien joli mais vous avez BESOIN de l'argent que ça " .. "rapporte. Ratissez tous ces malades ! Amassez un joli paquet de $300.000 pour terminer ce niveau. ", level12 = "Côté défi, vous allez être servi ! Impressionné par votre succès, le Ministère veut vous assigner une mission de confiance. " .. "Vous devrez construire un autre hôpital de pointe, gagner des sommes scandaleuses et vous faire une réputation fabuleuse. " .. "Vous devrez également acheter tout le terrain possible, soigner toutes les maladies (nous avons bien dit TOUTES) et remporter " .. "toutes les récompenses. Alors, heureux ? Gagnez $650.000, soignez 750 personnes et affichez une réputation de 800 pour gagner ce niveau. ", level13 = "Votre incroyable talent en tant que directeur d'hôpital a attiré l'attention de la Division Spéciale Secrète des " .. "Services Spéciaux Secrets. On vous propose un bonus : il y a un hôpital infesté de rats qui réclame un Nettoyeur efficace. " .. "Vous devez descendre le plus de rats possible avant que les agents de maintenance fassent leur boulot. Vous pensez y arriver ?", level14 = "Et encore un défi ! Eh oui, voici l'hôpital-surprise ! Si vous réussissez cette épreuve, vous serez le gagnant des gagnants. " .. "Mais ça ne sera pas du gâteau car vous n'aviez encore rien vu de pareil... Bonne chance !", level17 = "Un bon conseil : veillez à votre réputation car c'est elle qui vous garantira une clientèle. Si vous ne tuez pas trop de " .. "gens et les gardez raisonnablement satisfaits, vous n'aurez pas trop de difficultés à ce niveau. //A vous de jouer, maintenant. " .. "Bonne chance et tout ça, quoi !", } -- Calls Dispatcher Dialog calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d appels; %d assignés", staff = "%s - %s", watering = "Arrose @ %d,%d", repair = "Répare %s", close = "Fermer", } tooltip.calls_dispatcher = { task = "Liste des tâches - cliquez sur une tâche pour ouvrir la fenêtre du membre du personnel à qui elle est assignée et aller jusqu'à l'endroit où a lieu la tâche.", assigned = "Cette case est cochée si la tâche est assignée à quelqu'un.", close = "Ferme la boîte de dialogue de répartitions des tâches", } -- Updates update_window = { caption = "Une mise à jour est disponible !", new_version = "Nouvelle version :", current_version = "Version actuelle :", download = "Aller à la page de téléchargement", ignore = "Sauter et aller au menu principal", } tooltip.update_window = { download = "Accédez à la page de téléchargement pour la toute dernière version de CorsixTH", ignore = "Ignorer cette mise à jour pour l'instant. Vous serez averti à nouveau lorsque vous ouvrez CorsixTH de nouveau", } map_editor_window = { pages = { inside = "À l'intérieur", outside = "À l'extérieur", foliage = "Feuillage", hedgerow = "Haie", pond = "Étang", road = "Route", north_wall = "Mur nord", west_wall = "Mur ouest", helipad = "Héliport", delete_wall = "Supprimer des murs", parcel_0 = "Parcelle 0", parcel_1 = "Parcelle 1", parcel_2 = "Parcelle 2", parcel_3 = "Parcelle 3", parcel_4 = "Parcelle 4", parcel_5 = "Parcelle 5", parcel_6 = "Parcelle 6", parcel_7 = "Parcelle 7", parcel_8 = "Parcelle 8", parcel_9 = "Parcelle 9", camera_1 = "Caméra 1", camera_2 = "Caméra 2", camera_3 = "Caméra 3", camera_4 = "Caméra 4", heliport_1 = "Héliport 1", heliport_2 = "Héliport 2", heliport_3 = "Héliport 3", heliport_4 = "Héliport 4", paste = "Coller la zone", } } menu.player_count = "COMPTE DE JOUEURS" warnings.levelfile_variable_is_deprecated = "Remarque: Le niveau '%s' contient une définition de variable obsolète dans le fichier de niveau. '%LevelFile' a été renommé '%MapFile'. Veuillez aviser le créateur de la carte pour mettre à jour le niveau." CorsixTH-0.61/CorsixTH/Lua/languages/german.lua000066400000000000000000001235331321660673500213310ustar00rootroot00000000000000 --[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- Thanks to Michael "michederoide" Armbruster for some additional corrections! -- Note: This file contains UTF-8 text. Make sure your editor is set to UTF-8. Language("Deutsch", "German", "de", "ger", "deu") Inherit("english") Inherit("original_strings", 2) ------------------------------- OVERRIDE ---------------------------------- diseases.broken_wind.cure = " Therapie: Eine spezielle Mixtur aus der Pharma-Theke sorgt für Windstille." -- original string mentioned inflation, which is plain wrong. diseases.corrugated_ankles.cure = "Therapie: Eine Schwester verabreicht dem Patienten ein leicht toxisches Gebräu, welches das Bein wieder strafft." -- original string mentioned applying a cast, which is wrong and misleads people to think of fracture clinic fax.vip_visit_query.vip_name = "%s hat den Wunsch geäußert, ihr Krankenhaus besuchen zu wollen." -- text was missing fax.vip_visit_query.choices.invite = "Lassen Sie dem V.I.P. eine offizielle Einladung zukommen." -- text was ferusing instead of inviting fax.vip_visit_query.choices.refuse = "Speisen Sie den V.I.P. mit einer Entschuldigung ab." -- text was missing fax.vip_visit_result.remarks.super[1] = "Was für ein Spitzen-Krankenhaus! Wenn ich das nächste Mal ernsthaft krank bin, will ich hier hin!" -- storming should not be translated with 'turbulent' here fax.vip_visit_result.vip_remarked_name = "%s hat Ihr Krankenhaus besucht." fax.vip_visit_result.cash_grant = "Ihnen wurde ein Geldbonus von %d gewährt." fax.vip_visit_result.rep_boost = "Ihr Ruf in der Öffentlichkeit hat sich gebessert." fax.vip_visit_result.rep_loss = "Ihr Ruf hat gelitten." fax.vip_visit_result.close_text = "Danke, dass Sie unser Krankenhaus besucht haben." -- text was missing fax.emergency.choices.accept = "Ja, ich übernehme diesen Notfall!" fax.emergency.choices.refuse = "Nein, ich weigere mich diesen Notfall zu übernehmen!" fax.emergency.location = "Wir haben einen Notruf aus dem %s erhalten." -- wrong spelling fax.emergency.num_disease = "Es handelt sich um %d Personen mit %s, die sofort behandelt werden müssen." -- wrong spelling fax.emergency.num_disease_singular = "Es handelt sich um eine Person mit %s, die sofort behandelt werden muss." -- wrong spelling fax.emergency.cure_possible = "Wir können diesen Notfall übernehmen." fax.emergency.cure_not_possible_build_and_employ = "Um den Notfall übernehmen zu können, müssen wir eine %s bauen und zusätzliches Personal einstellen." fax.emergency.cure_not_possible_build = "Um den Notfall übernehmen zu können, müssen wir eine %s bauen." fax.emergency.cure_not_possible_employ = "Um den Notfall übernehmen zu können, müssen wir zusätzliches Personal einstellen." fax.emergency.cure_not_possible = "Wir können diesen Notfall im Moment keinesfalls übernehmen." fax.emergency.bonus = "Wenn wir keinen Patienten verlieren, erhalten wir einen Geldbonus von maximal %d. Sollten wir es jedoch vermasseln, wird unser Ruf Schaden nehmen." fax.emergency_result.close_text = "Danke, ich habe gerne geholfen." fax.emergency_result.earned_money = "Sie erhalten von maximal %d einen Geldbonus von %d." fax.emergency_result.saved_people = "Vielen Dank für Ihre Hilfe! Sie haben %d von insgesamt %d gerettet." fax.disease_discovered_patient_choice.choices.send_home = "Schicken Sie den Patienten nach Hause." -- wrong text for button fax.disease_discovered_patient_choice.choices.wait = "Sorgen Sie dafür, dass der Patient eine Weile im Krankenhaus wartet." -- wrong text for button fax.disease_discovered_patient_choice.choices.research = "Schicken Sie den Patienten in die Forschungsabteilung." -- wrong text for button fax.disease_discovered_patient_choice.need_to_build_and_employ = "Um diese Krankheit heilen zu können, müssen wir eine %s bauen und zusätzliches Personal einstellen." -- text was missing fax.disease_discovered_patient_choice.need_to_build = "Um diese Krankheit heilen zu können, müssen wir eine %s bauen." -- text was missing fax.disease_discovered_patient_choice.need_to_employ = "Um diese Krankheit heilen zu können, müssen wir zusätzliches Personal einstellen." fax.disease_discovered_patient_choice.can_not_cure = "Im Moment können wir diese Krankheit nicht behandeln." fax.disease_discovered_patient_choice.disease_name = "Unser Ärzteteam hat herausgefunden, an was für einer Art von %s der Patient leidet." -- text was missing fax.disease_discovered_patient_choice.what_to_do_question = "Was sollen wir jetzt mit dem Patienten anstellen?" -- text was missing fax.disease_discovered_patient_choice.guessed_percentage_name = "Unser Ärzteteam ist sich zu %d Prozent sicher, dass der Patient an einer Form von %s leidet." -- text was missing fax.disease_discovered.close_text = "Eine neue Krankheit wurde entdeckt." fax.disease_discovered.can_cure = "Wir können diese Krankheit problemlos behandeln." -- text was missing fax.disease_discovered.need_to_build_and_employ = "Um diese Krankheit heilen zu können, müssen wir eine %s bauen und zusätzliches Personal einstellen." -- text was missing fax.disease_discovered.need_to_build = "Um diese Krankheit heilen zu können, müssen wir eine %s bauen." -- text was missing fax.disease_discovered.need_to_employ = "Um diese Krankheit heilen zu können, müssen wir zusätzliches Personal einstellen." fax.disease_discovered.discovered_name = "Unser Ärzteteam hat einen Fall von %s entdeckt." fax.diagnosis_failed.choices.send_home = "Schicken Sie den Patienten nach Hause." -- wrong text for button fax.diagnosis_failed.choices.take_chance = "Nehmen Sie die wahrscheinliche Möglichkeit zur Heilung wahr." -- wrong text for button fax.diagnosis_failed.choices.wait = "Der Patient soll eine Weile im Krankenhaus warten, wir stellen bald neue Diagnosearten zur Verfügung." fax.diagnosis_failed.situation = "Dieser Patient hat all unsere Diagnosegeräte zum qualmen gebracht. Trotzdem wissen wir immer noch nicht genau, was ihm fehlt." -- text was missing fax.diagnosis_failed.what_to_do_question = "Was sollen wir jetzt mit dem Patienten anstellen?" -- wrong spelling fax.diagnosis_failed.partial_diagnosis_percentage_name = "Unser Ärzteteam ist sich zu %d Prozent sicher, dass der Patient an einer Form von %s leidet." fax.epidemic.choices.declare = "Wir melden die Epidemie und zahlen die Geldstrafe!" fax.epidemic.choices.cover_up = "Wir versuchen die Epidemie einzudämmen bevor sie das Krankenhaus verlässt!" fax.epidemic.declare_explanation_fine = "Wenn wir die Epidemie melden, zahlen wir eine Strafe von %d und unser Ruf leidet. Dafür werden die Patienten automatisch geimpft." -- extend to mention reputation hit and automatic vaccination fax.epidemic.cover_up_explanation_1 = "Wenn wir versuchen, die Epidemie zu vertuschen, müssen wir die Infizierten heilen, bevor das Gesundheitsministerium davon Wind bekommt." fax.epidemic.cover_up_explanation_2 = "Wenn der Gesundheitsinspektor die Vertuschungsaktion bemerkt, wird das Konsequenzen haben." fax.epidemic.disease_name = "Unser Ärzteteam hat eine hochgradig ansteckende Form von %s entdeckt!" fax.epidemic_result.close_text = "Hurra!" fax.epidemic_result.failed.part_1_name = "Ihr Versuch diese %s-Epidemie zu vertuschen ist fehlgeschlagen! Sie konnten nicht verhindern," fax.epidemic_result.failed.part_2 = "dass sich die Epidemie in Ihrem ganzen Krankenhaus ausbreitet." fax.epidemic_result.succeeded.part_1_name = "Dem Gesundheitsinspektor ist zu Ohren gekommen, dass Sie mit einem schweren Fall von %s zu kämpfen haben." fax.epidemic_result.succeeded.part_2 = "Allerdings hat er dafür keine Beweise finden können." fax.epidemic_result.compensation_amount = "Die Behörden haben beschlossen, Sie für die entstandene Rufschädigung mit %d zu entschädigen." fax.epidemic_result.fine_amount = "Die Behörden haben den nationalen Notstand ausgerufen und sie zu einer Geldstrafe von %d verurteilt." fax.epidemic_result.rep_loss_fine_amount = "Die Zeitungen haben Wind von der Epidemie bekommen und ziehen Ihren Ruf in den Dreck. Darüber hinaus hat man zu einer Geldstrafe von %d verurteilt." fax.epidemic_result.hospital_evacuated = "Die Behörden haben keine andere Wahl, als ihr Krankenhaus zu evakuieren." dynamic_info.patient.actions.dying = "Ins Jenseits befördert!" -- wrong verb case dynamic_info.patient.actions.epidemic_vaccinated = "Ich bin nicht mehr infiziert." adviser.research.drug_fully_researched = "Sie haben die Effektivität Ihres %s-Medikaments auf 100% gesteigert." -- grammatical error in original tooltip.graphs.reputation = "Ruf ein- und ausschalten" -- original mentioned hospital value, while it's actually reputation. staff_title.researcher = "Forscher" -- one of the most annoying (since prominent) wrong strings in original bank_manager.insurance_owed = "Zahlungen von Vers." -- original was too long graphs.deaths = "Todesfälle" -- origin was too long insurance_companies[7] = "Leben-und-Tod KG" -- %% in original string (maybe this was rendered as &) object.skeleton = "Skelett" -- second most annoying mistake in german translation tooltip.staff_list.detail = "Aufmerksamkeit" -- was translated as an imperative tooltip.staff_list.surgeon_train = "Wurde zu %d%% zum Chirurgen ausgebildet." -- the three strings made no sense grammatically tooltip.staff_list.psychiatrist_train = "Wurde zu %d%% zum Psychiater ausgebildet." tooltip.staff_list.researcher_train = "Wurde zu %d%% zum Forscher ausgebildet." -- tooltip.staff_list.next_person, prev_person is rather next/prev page (also in english) tooltip.staff_list.next_person = "Zur nächsten Seite blättern" tooltip.staff_list.prev_person = "Zur vorherigen Seite blättern" tooltip.queue_window.inc_queue_size = "Warteschlange vergrößern" tooltip.queue_window.dec_queue_size = "Warteschlange verkleinern" -- Improve tooltips in staff window to mention hidden features tooltip.staff_window.face = "Gesicht dieser Person - klicken, um das Personal-Management zu öffnen" tooltip.staff_window.center_view = "Linksklick, um zur Person zu springen, Rechtsklick um durch das Personal zu blättern" -- These strings are missing in some versions of TH (unpatched?) confirmation.restart_level = "Sind Sie sicher, dass Sie das aktuelle Level von vorne beginnen möchten?" ------------------------------- NEW STRINGS ------------------------------- date_format = { daymonth = "%1%. %2:months%", } object.litter = "Müll" tooltip.objects.litter = "Müll: Wurde von einem Patienten fallengelassen, nachdem er keinen Mülleimer fand." tooltip.fax.close = "Das Fenster schließen, ohne die Nachricht zu löschen" tooltip.message.button = "Linksklick, um die Nachricht zu öffnen" tooltip.message.button_dismiss = "Linksklick, um die Nachricht zu öffnen, Rechtsklick um sie zu entfernen" tooltip.casebook.cure_requirement.hire_staff = "Sie müssen Personal einstellen, um diese Behandlung durchführen zu können" tooltip.casebook.cure_type.unknown = "Sie wissen noch nicht, wie Sie diese Krankheit behandeln können" tooltip.research_policy.no_research = "In dieser Kategorie wird momentan keine Forschung durchgeführt" tooltip.research_policy.research_progress = "Fortschritt in dieser Kategorie: %1%/%2%" menu_options = { lock_windows = " FENSTER FESTHALTEN ", edge_scrolling = " AM BILDSCHIRMRAND SCROLLEN ", adviser_disabled = " BERATER ", warmth_colors = " FARBEN FÜR WÄRMEDARSTELLUNG ", twentyfour_hour_clock = " 24-STUNDEN-UHR ", wage_increase = " GEHALTSERHÖHUNGEN ", } menu_options_wage_increase = { deny = " ABLEHNEN ", grant = " GEWÄHREN ", } menu_options_game_speed = { pause = " (P) PAUSE ", slowest = " (1) AM LANGSAMSTEN ", slower = " (2) LANGSAM ", normal = " (3) NORMAL ", max_speed = " (4) MAXIMALE GESCHWINDIGKEIT ", and_then_some_more = " (5) UND NOCH MEHR ", } menu_options_warmth_colors = { choice_1 = " ROTTÖNE ", choice_2 = " BLAU-GRÜN-ROT ", choice_3 = " GELB-ORANGE-ROT ", } menu_charts = { bank_manager = " (F1) BANK-MANAGER ", statement = " (F2) BILANZ ", staff_listing = " (F3) PERSONALLISTE ", town_map = " (F4) ÜBERSICHTSKARTE ", casebook = " (F5) BEHANDLUNGSMAPPE ", research = " (F6) FORSCHUNG ", status = " (F7) STATUS ", graphs = " (F8) DIAGRAMME ", policy = " (F9) EINSTELLUNGEN ", } customise_window = { option_on = "Ein", option_off = "Aus", average_contents = "Einrichtung merken", paused = "In Pause bauen", intro = "Introfilm abspielen", caption = "Spezialeinstellungen", back = "Zurück", movies = "Alle Filme zeigen", aliens = "Außerird. Patienten", fractured_bones = "Gebrochene Knochen", volume = "Leiser-Taste", } tooltip.customise_window = { aliens = "Aufgrund des Fehlens einer anständigen Animation haben wir standardmäßig Patienten mit außerirdischer DNA deaktiviert, damit sie nur zu einem Notfall kommen. Um Patienten mit außerirdischer DNA es zu erlauben, Ihr Krankenhaus nicht nur bei Notfällen zu besuchen, schalten Sie dies ab.", average_contents = "Wenn Sie möchten, dass sich das Spiel merkt, welche zusätzlichen Objekte Sie üblicherweise beim Gebäudebau hinzufügen, dann schalten Sie diese Option ein.", back = "Dieses Menü schließen und zum Einstellungsmenü zurückkehren", movies = "Globale Filmsteuerung: Hiermit können Sie sämtliche Filme abschalten", fractured_bones = "Aufgrund einer armseligen Animation haben wir uns entschieden, dass es standardmäßig keine weiblichen Patienten mit gebrochenen Knochen gibt. Wenn weibliche Patienten mit gebrochenen Knochen ihr Krankenhaus besuchen sollen, dann schalten Sie dies ab.", volume = "Wenn die Leiser-Taste auch das Fallbuch öffnet, dann schalten Sie dies ein, um die Schnellzugriffstaste für das Fallbuch auf Umschalt + C zu wechseln.", intro = "Den Introfilm abschalten. Das Intro wird nur gespielt, wenn Sie nicht auch gleichzeitig alle Filme abgeschaltet haben.", paused = "In Theme Hospital würde es dem Spieler während der Pause nur gestattet sein, das obere Menü zu benutzen. Dies ist in CorsixTH ebenfalls die Standardeinstellung, aber wenn Sie dies einschalten, ist alles in der Pause erlaubt.", } -- The demo does not contain this string menu_file.restart = " NEUSTART " menu_debug = { jump_to_level = " SPRINGE ZU LEVEL ", transparent_walls = " (X) DURCHSICHTIGE WÄNDE ", limit_camera = " KAMERA BEGRENZEN ", disable_salary_raise = " KEINE GEHALTSERHÖHUNGEN ", make_debug_fax = " DEBUG-FAX ERSTELLEN ", make_debug_patient = " DEBUG-PATIENTEN ERSTELLEN ", cheats = " (F11) CHEATS ", lua_console = " (F12) LUA-KONSOLE ", calls_dispatcher = " AUFRUF-VERTEILER ", dump_strings = " TEXTE ABSPEICHERN ", dump_gamelog = " (STRG+D) SPIELPROTOKOLL ABSPEICHERN ", map_overlay = " KARTEN-OVERLAY ", sprite_viewer = " SPRITE-BETRACHTER ", connect_debugger = " (STRG + C) ZUM LUA-DEBUG-SERVER VERBINDEN ", debug_script = " (UMSCHALT + D) DEBUG-SKRIPT STARTEN ", } menu_debug_overlay = { none = " KEIN ", flags = " FLAGS ", positions = " POSITION ", heat = " TEMPERATUR ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE BODEN ", byte_n_wall = " BYTE N WAND ", byte_w_wall = " BYTE W WAND ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " GRUNDSTÜCK ", } adviser = { room_forbidden_non_reachable_parts = "Sie können den Raum hier nicht bauen, da dann Teile des Krankenhauses nicht mehr erreichbar wären.", warnings = { no_desk ="Sie sollten beizeiten mal eine Rezeption bauen und eine Empfangsdame einstellen!", no_desk_1 = "Wenn Sie wollen, dass Patienten in Ihr Krankenhaus kommen, müssen Sie eine Empfangsdame einstellen und eine Rezeption für sie bauen!", no_desk_2 = "Na Klasse, das muss ja ein Weltrekord sein: Fast ein Jahr ohne einen einzigen Patienten! Wenn Sie dieses Krankenhaus weiter leiten wollen, müssen Sie eine Empfangsdame einstellen und eine Rezeption bauen!", no_desk_3 = "Ich glaub ich spinne, fast ein Jahr ist um und Sie haben keine besetzte Rezeption! Wie denken Sie denn, dass die Patienten zu Ihnen finden? Schauen Sie mal zu, dass Sie Ihren Kram auf die Reihe bekommen!", no_desk_4 = "Eine Empfangsdame muss ihren eigenen Arbeitsplatz haben, um die Patienten bei ihrer Ankunft zu begrüßen.", no_desk_5 = "Na, das wurde aber auch Zeit! Sie sollten in Kürze ein paar Patienten hier eintreffen sehen!", no_desk_6 = "Sie haben eine Empfangsdame, also sollten Sie eine Rezeption für sie bauen.", no_desk_7 = "Sie haben die Rezeption gebaut, also wie wäre es damit, eine Empfangsdame einzustellen? Sie werden keine Patienten sehen, bis sie das geregelt haben, wissen Sie?", falling_1 = "He! Vorsicht mit dem Mauszeiger, jemand könnte sich verletzen!", falling_2 = "Hören Sie schon auf damit, wie würde das Ihnen denn gefallen?", falling_3 = "Autsch, das sah schmerzhaft aus. Ruft einen Arzt!", falling_4 = "Dies ist ein Krankenhaus, kein Vergnügungspark!", falling_5 = "Sie sind nicht hier um Leute umzustoßen. Sie sind krank, okay?", falling_6 = "Dies ist keine Bowlingbahn. Patienten sollten nicht so behandelt werden!", cannot_afford = "Sie haben nicht genügend Geld auf dem Konto, um diese Person einzustellen!", cannot_afford_2 = "Sie haben nicht genügend Geld auf dem Konto, um dies zu kaufen!", research_screen_open_1 = "Sie müssen eine Forschungseinrichtung errichten, um auf das Forschungsmenü zugreifen zu können.", research_screen_open_2 = "Forschung ist im aktuellen Level nicht verfügbar.", researcher_needs_desk_1 = "Ein Forscher braucht einen Schreibtisch, um daran arbeiten zu können.", researcher_needs_desk_2 = "Ihr Forscher ist froh darüber, dass Sie ihm eine Pause gegönnt haben. Falls Sie vorhatten, dass noch mehr Personal forscht, dann müssen Sie jedem Forscher einen eigenen Schreibtisch zur Verfügung stellen.", researcher_needs_desk_3 = "Jeder Forscher braucht einen eigenen Schreibtisch, an dem er arbeiten kann.", nurse_needs_desk_1 = "Jede Krankenschwester braucht ihren eignen Schreibtisch, an dem sie arbeiten kann.", nurse_needs_desk_2 = "Ihre Krankenschwester ist froh darüber, dass Sie ihr eine Pause gegönnt haben. Falls Sie vorhatten, dass mehr als nur eine Krankenschwester in der Station arbeitet, dann müssen Sie jeder Krankenschwester einen eigenen Schreibtisch zur Verfügung stellen.", low_prices = "Sie berechnen zu wenig für %s. Dadurch bekommen Sie viele Patienten, verdienen aber wenig an jedem einzelnen von ihnen.", high_prices = "Sie berechnen zu viel für %s. Dadurch verdienen Sie kurzfristig viel Geld, aber langfristig vertreiben Sie die damit Patienten aus ihrem Krankenhaus.", fair_prices = "Die Beandlungskosten für %s sind fair und angemessen.", patient_not_paying = "Ein Patient ist gegangen ohne für %s zu bezahlen weil es zu teuer ist!", }, research = { drug_improved = "Die Effektivität Ihres %s-Medikaments wurde von Ihrer Forschungsabteilung verbessert.", drug_improved_1 = "Das Medikament %s wurde von Ihrer Forschungsabteilung verbessert.", }, cheats = { th_cheat = "Gratulation, Sie haben die Cheats aktiviert!", roujin_on_cheat = "Roujins Herausforderungs-Cheat aktiviert! Viel Glück ...", roujin_off_cheat = "Roujins Herausforderung deaktiviert.", }, } dynamic_info.patient.actions.no_gp_available = "Wartet darauf, dass Sie eine Allgemeinmedizin bauen" dynamic_info.staff.actions.heading_for = "Geht zu: %s" dynamic_info.staff.actions.fired = "Gefeuert" fax = { choices = { return_to_main_menu = "Ins Hauptmenü zurückkehren", accept_new_level = "Zum nächsten Level wechseln", decline_new_level = "Noch ein wenig im aktuellen Level weiterspielen", }, vip_visit_result = { remarks = { free_build = { "Echt ein hübsches Krankenhaus haben Sie da! War aber wohl nicht so schwer zum Laufen zu bekommen, so ohne finanzielle Beschränkungen, was? Haha ...", "Ich bin zwar kein BWLer, aber ich denke, dieses Krankenhaus könnte ich auch führen. Sie wissen schon, was ich meine.", "Ein gut organisiertes Krankenhaus. Aber hüten Sie sich vor der Finanzkrise! Ach ja ... da müssen Sie sich ja keine Sorgen machen.", }, }, }, emergency = { num_disease_singular = "Hier ist eine Person mit %s, sie braucht sofortige Aufmerksamkeit.", free_build = "Wenn wir erfolgreich sind, wird unser Ruf steigen. Falls wir versagen, wird unser Ruf Schaden nehmen.", }, } letter = { dear_player = "Hallo %s", custom_level_completed = "Gut gemacht! Sie haben alle Ziele dieses eigenen Levels erreicht!", return_to_main_menu = "Möchten Sie ins Hauptmenü zurückkehren, oder weiterspielen?", } install = { title = "----------------------------- CorsixTH-Konfiguration -----------------------------", th_directory = "CorsixTH benötigt einige Dateien des Originalspiels Theme Hospital (oder der Demo davon), um zu funktionieren. Bitte das Installationsverzeichnis von Theme Hospital auswählen.", exit = "Beenden", ok = "OK", cancel = "Abbrechen", } misc.not_yet_implemented = "(noch nicht implementiert)" misc.no_heliport = "Entweder wurden noch keine Krankheiten entdeckt, oder es existiert kein Heliport auf dieser Karte." main_menu = { new_game = "Neues Spiel", custom_level = "Eigenes Level", load_game = "Spiel laden", options = "Optionen", exit = "Verlassen", version = "Version: ", savegame_version = "Spielstandsversion: ", continue = "Spiel fortsetzen", } tooltip.main_menu = { new_game = "Ein komplett neues Spiel anfangen", custom_level = "Ein Krankenhaus in einem eigenen Level errichten", load_game = "Ein zuvor gespeichertes Spiel fortsetzen", options = "Diverse Einstellungen verändern", exit = "Bitte lassen Sie mich nicht allein!", quit = "Sie sind im Begriff, CorsixTH zu verlassen. Sind Sie sich sicher, dass Sie das tun wollen?", } load_game_window = { caption = "Spiel laden", } tooltip.load_game_window = { load_game = "Spiel %s laden", load_game_number = "Spiel %d laden", load_autosave = "Automatisch gespeichertes Spiel laden", } custom_game_window = { caption = "Eigenes Level", free_build = "Freies Spiel", } tooltip.custom_game_window = { start_game_with_name = "Level %s starten", free_build = "Auswählen, um ohne Geld und Sieg-/Niederlagebedingungen zu spielen", } save_game_window = { caption = "Spiel Speichern", new_save_game = "Neuer Spielstand", } tooltip.save_game_window = { save_game = "Spielstand %s überschreiben", new_save_game = "Namen für einen neuen Spielstand eingeben", } menu_list_window = { name = "Dateiname", save_date = "Änderungsdatum", back = "Zurück", } tooltip.menu_list_window = { name = "Hier klicken, um nach Dateinamen zu sortieren", save_date = "Hier klicken, um nach dem letzten Änderungsdatum zu sortieren", back = "Das Fenster schließen", } options_window = { caption = "Einstellungen", option_on = "Ein", option_off = "Aus", fullscreen = "Vollbild", resolution = "Auflösung", custom_resolution = "Benutzerdefiniert ...", width = "Breite", height = "Höhe", apply = "Akzeptieren", cancel = "Abbrechen", language = "Spielsprache", cancel = "Abbrechen", back = "Zurück", folder = "Verzeichnisse", customise = "Spezialeinstellungen", audio = "Globales Audio", } tooltip.options_window = { fullscreen = "Darstellung im Vollbild- oder Fenstermodus", fullscreen_button = "Klicken, um zwischen Vollbild- und Fenstermodus zu wechseln", resolution = "Die Bildschirmauflösung, in der das Spiel läuft", select_resolution = "Eine neue Auflösung auswählen", width = "Gewünschte Bildschirmbreite eingeben", height = "Gewünschte Bildschirmhöhe eingeben", apply = "Die eingegebene Auflösung akzeptieren", cancel = "Zurückkehren, ohne die Auflösung zu ändern", language = "Die Sprache, in der Texte im Spiel erscheinen", select_language = "Die Spielsprache ändern", language_dropdown_item = "%s als Sprache auswählen", back = "Das Optionsfenster schließen", audio_button = "Sämtliche Toneffekte im Spiel ein- bzw. ausschalten", audio_toggle = "Ein- oder ausschalten", customise_button = "Weitere Einstellungen, die Sie ändern können, um Ihr Spielerlebnis anzupassen", folder_button = "Verzeichniseinstellungen", } font_location_window.caption = "Schrift auswählen (%1%)" new_game_window = { caption = "Neues Spiel", option_on = "Ein", option_off = "Aus", difficulty = "Schwierigkeit", easy = "AIP (Einfach)", medium = "Arzt (Mittel)", hard = "Berater (Schwer)", tutorial = "Einführung", start = "Start", cancel = "Abbrechen", player_name = "Spielername", } tooltip.new_game_window = { difficulty = "Hier kann der Schwierigkeitsgrad des Spiels eingestellt werden", easy = "Die richtige Option für Simulations-Neulinge", medium = "Der Mittelweg - für diejenigen, die sich nicht entscheiden können", hard = "Wer diese Art von Spielen schon gewöhnt ist und eine Herausforderung will, sollte hier klicken", tutorial = "Dieses Feld abhaken, um zu Beginn des Spieles eine Einführung zu erhalten", start = "Das Spiel mit den gewählten Einstellungen starten", cancel = "Oh, eigentlich wollte ich gar kein neues Spiel starten!", player_name = "Geben Sie den Namen ein, mit dem Sie im Spiel genannt werden möchten", } lua_console = { execute_code = "Ausführen", close = "Schließen", } tooltip.lua_console = { textbox = "Hier Lua-Code zum Ausführen eingeben", execute_code = "Den eingegebenen Code ausführen", close = "Die Konsole schließen", } errors = { dialog_missing_graphics = "Entschuldigung, aber dieses Fenster ist in den Demo-Dateien nicht enthalten.", save_prefix = "Fehler beim Speichern: ", load_prefix = "Fehler beim Laden: ", map_file_missing = "Die Kartendatei %s für das Level konnte nicht gefunden werden!", minimum_screen_size = "Bitte eine Auflösung von mindestens 640×480 eingeben.", unavailable_screen_size = "Die gewünschte Auflösung ist im Vollbildmodus nicht verfügbar.", no_games_to_contine = "Es gibt keine Spielstände.", fractured_bones = "BEACHTEN SIE: Die Animation für weibliche Patienten mit gebrochenen Knochen ist nicht perfekt.", load_quick_save = "Fehler: Der Schnellspeicherspielstand konnte nicht geladen werden, weil er nicht existiert. Kein Grund zur Sorge, wir haben nun einen für Sie erzeugt!", alien_dna = "BEACHTEN SIE: Für außerirdische Patienten gibt es keine Animationen für das Sitzen, das Öffnen von Türen, das Anklopfen, usw. Daher werden sie, wie bei Theme Hospital, normal aussehen und sich dann wieder zurückverwandeln. Patienten mit außerirdischer DNA werden nur auftauchen, wenn sie in der Leveldatei gesetzt sind.", } confirmation = { needs_restart = "Um diese Änderung, vorzunehmen muss CorsixTH neu gestartet werden. Nicht gespeicherter Fortschritt geht verloren. Sicher, dass Sie fortfahren wollen?", abort_edit_room = "Sie bauen oder ändern gerade einen Raum. Wenn alle benötigten Objekte platziert sind, wird der Raum fertiggestellt, ansonsten wird er gelöscht. Fortfahren?", maximum_screen_size = "Die von Ihnen gewählte Bildschirmauflösung ist größer als 3000×2000. Größere Auflösungen sind möglich, aber erfordern eine bessere Hardware, um eine akzeptable Bildwiederholrate zu gewährleisten. Sind Sie sich sicher, dass Sie fortfahren möchten?", music_warning = "Bevor Sie sich dafür entscheiden, MP3s für Ihre Spielmusik verwenden, müssen Sie smpeg.dll oder eine entsprechende Datei für Ihr Betriebssystem haben, ansonsten werden Sie keine Musik im Spiel haben. Möchten Sie fortfahren?", } information = { custom_game = "Willkommen zu CorsixTH. Viel Spaß mit diesem eigenen Level!", cannot_restart = "Leider wurde dieses eigene Level vor Implementierung des Neustart-Features gespeichert.", level_lost = { }, level_lost = { "So ein Mist! Sie haben das Level leider nicht geschafft. Vielleicht klappts ja beim nächsten Mal!", "Der Grund, warum Sie verloren haben:", reputation = "Ihr Ruf ist unter %d gesunken.", balance = "Ihr Kontostand ist unter %d gesunken.", percentage_killed = "Sie haben mehr als %d Prozent der Patienten getötet.", cheat = "Sie haben das selbst so gewollt. Oder haben Sie etwa auf den falschen Knopf gedrückt? Sie können also nichtmal richtig cheaten. Traurig.", }, very_old_save = "Seit dieses Level gestartet wurde, wurden einige Änderungen am Spiel durchgeführt. Sie sollten ein neues Spiel starten, damit alle Änderungen wirksam werden.", no_custom_game_in_demo = "Tut uns Leid, aber in der Demo-Version sind keine eigenen Level spielbar.", cheat_not_possible = "Dieser Cheat ist in diesem Level nicht verfügbar. Sogar beim Cheaten versagen Sie, wie armselig!", } tooltip.information = { close = "Das Informationsfenster schließen", } totd_window = { tips = { "Zu Beginn benötigt jedes Krankenhaus eine Rezeption und eine Allgemeinmedizin. Danach kommt es darauf an, was für Patienten im Krankenhaus auftauchen. Eine Pharma-Theke ist aber immer eine gute Wahl.", "Maschinen wie die Entlüftung müssen gewartet werden. Stellen Sie ein paar Handlanger ein, oder die Patienten und das Personal könnte verletzt werden.", "Nach einer Weile wird das Personal müde. Bauen Sie unbedingt einen Personalraum, damit es sich ausruhen kann.", "Platzieren Sie genug Heizkörper, um das Personal und die Patienten warm zu halten, sonst werden sie unglücklich. Benutzen Sie die Übersichtskarte, um Stellen im Krankenhaus zu finden, die noch etwas besser beheizt werden müssen.", "Der Fähigkeiten-Level eines Arztes beeinflusst die Qualität und Geschwindigkeit seiner Diagnosen deutlich. Ein geübter Arzt in der Allgemeinmedizin erspart so manchen zusätzlichen Diagnoseraum.", "AIPler und Ärzte können ihre Fähigkeiten verbessern, indem sie in der Ausbildung von Beratern lernen. Wenn der Berater eine zusätzliche Qualifikation (Chirurg, Psychiater oder Forscher) besitzt, gibt er dieses Wissen ebenfalls weiter.", "Haben Sie schon versucht, die europäische Notruf-Nummer (112) in das Faxgerät einzugeben? Schalten Sie vorher den Sound an!", "Im Options-Menü hier im Hauptmenü oder im laufenden Spiel können Einstellungen wie die Auflösung oder die Sprache geändert werden.", "Haben Sie eine andere Sprache als Englisch ausgewählt, aber es erscheinen englische Texte? Helfen Sie uns, die Übersetzung zu vervollständigen, indem Sie fehlende Texte in Ihre Sprache übersetzten!", "Das CorsixTH-Team sucht Verstärkung! Haben Sie Interesse, beim Programmieren, Übersetzen oder der Grafikerstellung zu helfen? Kontaktieren Sie uns in unserem Forum, der Mailing-Liste oder unserem IRC-Channel (#Corsix-TH auf Freenode).", "Wenn Sie einen Bug finden, bitte melden Sie ihn in unserem Bug-Tracker: th-issues.corsix.org", "In jedem Level müssen bestimmte Voraussetzungen erfüllt werden, bevor man zum Nächsten wechseln kann. Im Status-Fenster können Sie Ihren Fortschritt bezüglich der Levelziele sehen.", "Um existierende Räume zu bearbeiten oder gar zu löschen, kann man den Raum-Bearbeiten-Knopf in der unteren Werkzeugleiste verwenden.", "Um aus einer Horde wartender Patienten diejenigen zu finden, die für einen bestimmten Raum warten, einfach mit dem Mauszeiger über den entsprechenden Raum fahren.", "Klicken Sie auf die Tür eines Raumes, um seine Warteschlange zu sehen. Hier kann man nützliche Feineinstellungen vornehmen, wie etwa die Warteschlange umzusortieren oder einen Patienten zu einem anderen Raum zu senden.", "Unglückliches Personal verlangt öfter Gehaltserhöhungen. Gestalten Sie die Arbeitsumgebung Ihres Personals möglichst angenehm, um dies zu verhindern.", "Patienten werden beim Warten durstig, besonders wenn die Heizungen aufgedreht sind! Strategisch platzierte Getränkeautomaten sind eine nette zusätzliche Einnahmequelle.", "Sie können die Diagnose für einen Patienten vorzeitig abbrechen und ihn direkt zur Behandlung schicken, falls seine Krankheit zuvor schon entdeckt wurde. Allerdings erhöht sich dadurch das Risiko, dass das Heilmittel falsch ist und der Patient stirbt.", "Notfälle können eine gute Einnahmequelle abgeben, sofern genügend Kapazitäten vorhanden sind, um die Notfallpatienten rechtzeitig zu behandeln.", }, previous = "Vorheriger Tipp", next = "Nächster Tipp", } tooltip.totd_window = { previous = "Den vorherigen Tipp anzeigen", next = "Den nächsten Tipp anzeigen", } debug_patient_window = { caption = "Debug-Patient", } update_window = { caption = "Update verfügbar!", new_version = "Neue Version:", current_version = "Aktuelle Version:", download = "Zur Downloadseite gehen", ignore = "Überspringen und zum Hauptmenü gehen", } tooltip.update_window = { download = "Zur Downloadseite für die allerneueste Version von CorsixTH gehen", ignore = "Dieses Update im Moment ignorieren. Sie werden erneut benachrichtigt, wenn Sie CorsixTH das nächste Mal starten.", } cheats_window = { caption = "Cheats", warning = "Warnung: Cheater bekommen am Ende des Levels keine Bonus-Punkte!", cheated = { no = "Cheats benutzt: Nein", yes = "Cheats benutzt: Ja", }, cheats = { money = "Geld-Cheat", all_research = "Alle-Forschungen-Cheat", emergency = "Notfall erzeugen", vip = "VIP erzeugen", earthquake = "Erdbeben starten", create_patient = "Patienten erzeugen", end_month = "Ende des Monats", end_year = "Ende des Jahres", lose_level = "Level verlieren", win_level = "Level gewinnen", epidemic = "Infizierten Patienten erzeugen", toggle_infected = "Infektions-Symbole umschalten", }, close = "Schließen", } tooltip.cheats_window = { close = "Das Cheat-Fenster schließen", cheats = { money = "10.000 zum Konto hinzufügen.", all_research = "Alle Forschungen abschließen.", emergency = "Einen Notfall erzeugen.", vip = "Einen VIP vorbeischicken.", earthquake = "Ein Erdbeben starten.", create_patient = "Einen Patienten am Kartenrand erzeugen.", end_month = "Zum Monatsende springen.", end_year = "Zum Jahresende springen.", lose_level = "Das aktuelle Level verlieren.", win_level = "Das aktuelle Level gewinnen.", epidemic = "Einen infizierten Patienten, der eine Epidemie auslösen kann, erzeugen.", toggle_infected = "Die Infektions-Symbole für die aktive, entdeckte Epidemie umschalten.", } } folders_window = { data_label = "TH-Daten", music_location = "Wählen Sie hier das Verzeichnis, welches Sie für Ihre Musik benutzen möchten, aus.", music_label = "MP3s", new_th_location = "Hier können Sie ein neues Theme-Hospital-Installationsverzeichnis auswählen. Sobald Sie das neue Verzeichnis auswählen, wird das Spiel neu gestartet.", caption = "Verzeichnisort", screenshots_label = "Screenshots", font_label = "Schrift", savegames_label = "Spielstände", back = "Zurück", savegames_location = "Wählen Sie das Verzeichnis, welches Sie für Spielstände benutzen möchten, aus.", screenshots_location = "Wählen Sie das Verzeichnis, welches Sie für Screenshots benutzen möchten, aus.", } tooltip.folders_window = { browse_font = "Nach einer anderen Schriftdatei suchen (aktueller Ort: %1%)", browse_screenshots = "Nach einem anderem Ort für ihr Screenshotverzeichnis suchen (aktueller Ort: %1%)", reset_to_default = "Das Verzeichnis zur Standardeinstellung zurücksetzen", back = "Dieses Menü schließen und zum Einstellungsmenü zurückkehren", music_location = "Wählen Sie einen Ort für ihre MP3-Musikddateien aus. Sie müssen dieses Verzeichnis bereits erstellt haben, dann wählen Sie ebendieses Verzeichnis aus.", font_location = "Pfad einer Schrift-Datei, die Unicode-Zeichen Ihrer Sprache unterstützt. Wenn diese Einstellung nicht vorgenommen wird, können Sie keine Sprachen auswählen, die mehr Zeichen benötigen, als das Originalspiel unterstützt. Beispiel: Russisch und Chinesisch.", savegames_location = "Standardmäßig wird das Spielstandsverzeichnis im selben Verzeichnis wie die Konfigurationsdatei gespeichert und es wird benutzt, um die Spielstände darin abzuspeichern. Sollte das nicht erwünscht sein, können Sie sich ihr eigenes Verzeichnis aussuchen, wählen Sie einfach das Verzeichnis, das Sie verwenden möchten", screenshots_location = "Standardmäßig wird das Screenshotverzeichnis im selben Verzeichnis wie die Konfigurationsdatei gespeichert. Sollte das nicht erwünscht sein, können Sie sich ihr eigenes Verzeichnis aussuchen, wählen Sie einfach das Verzeichnis, das Sie verwenden möchten", browse_data = "Nach einem anderem Ort einer Theme-Hospital-Installation durchsuchen (aktueller Ort: %1%)", browse = "Nach einem Verzeichnis durchsuchen", browse_music = "Nach einem anderem Ort für Ihr Musikverzeichnis durchsuchen (aktueller Ort: %1%)", no_font_specified = "Es wurde kein Schriftverzeichnis festgelegt!", not_specified = "Es wurde kein Verzeichnis festgelegt!", browse_saves = "Nach einem anderem Ort für Ihr Spielstandsverzeichnis durchsuchen (aktueller Ort: %1%)", default = "Standardort", data_location = "Das Verzeichnis der Original-Theme-Hospital-Installation, welche benötigt wird, um CorsixTH zu spielen", } introduction_texts = { demo = "Willkommen im Demo-Krankenhaus!" .. "Leider beinhaltet die Demo-Version nur dieses eine Level. Dafür gibt es hier aber mehr als genug zu tun, um Sie eine Weile zu beschäftigen!" .. "Sie werden diversen Krankheiten begegnen, die unterschiedliche Räume zur Behandlung benötigen. Ab und zu können auch Notfälle eintreffen. " .. "Und Sie werden mithilfe einer Forschungsabteilung neue Räume erforschen müssen." .. "Ihr Ziel ist es, 100.000 DM zu verdienen, einen Krankenhauswert von 70.000 DM und einen Ruf von 700 vorzuweisen, und gleichzeitig mindestens 75% der Patienten erfolgreich zu behandeln." .. "Stellen Sie sicher, dass Ihr Ruf nicht unter 300 fällt und dass Sie nicht mehr als 40% ihrer Patienten sterben lassen, oder Sie werden verlieren." .. "Viel Glück!", } calls_dispatcher = { summary = "%d Aufrufe; %d zugewiesen", staff = "%s - %s", watering = "Bewässern @ %d,%d", repair = "Repariert %s", close = "Schließen", } tooltip.calls_dispatcher = { task = "Liste der Aufgaben - Aufgabe anklicken, um das Fenster des zugewiesenen Personalmitglieds zu öffnen und zum Ort der Aufgabe zu scrollen.", assigned = "Diese Box ist markiert, wenn jemand der Aufgabe zugewiesen ist.", close = "Das Aufruf-Verteiler-Fenster schließen", } handyman_window = { all_parcels = "Alle Grundstücke", parcel = "Grundstück", } tooltip.handyman_window = { parcel_select = "Der Arbeitsbereich des Handlangers. Klicken zum Ändern.", } progress_report = { free_build = "FREIES SPIEL", } ------------------------------- FIX FOR MISSING CREDITS LINES ---------------------------------- original_credits[301] = " " original_credits[302] = " " original_credits[303] = " " original_credits[304] = " " original_credits[305] = " " original_credits[306] = " " original_credits[307] = " " original_credits[308] = " " original_credits[309] = " " original_credits[310] = " " original_credits[311] = " " original_credits[312] = " " original_credits[313] = " " original_credits[314] = " " original_credits[315] = " " original_credits[316] = " " original_credits[317] = " " original_credits[318] = " " original_credits[319] = " " original_credits[320] = " " original_credits[321] = " " original_credits[322] = " " original_credits[323] = " " original_credits[324] = " " original_credits[325] = " " original_credits[326] = " " original_credits[327] = " " original_credits[328] = " " original_credits[329] = " " original_credits[330] = " " original_credits[331] = " " original_credits[332] = " " original_credits[333] = " " original_credits[334] = " " original_credits[335] = " " original_credits[336] = " " original_credits[337] = " " original_credits[338] = " " original_credits[339] = " " original_credits[340] = " " original_credits[341] = " " original_credits[342] = " " original_credits[343] = " " original_credits[344] = " " original_credits[345] = " " original_credits[346] = " " original_credits[347] = " " original_credits[348] = " " original_credits[349] = " " original_credits[350] = " " original_credits[351] = " " original_credits[352] = " " original_credits[353] = " " original_credits[354] = " " original_credits[355] = " " original_credits[356] = " " original_credits[357] = " " original_credits[358] = " " original_credits[359] = " " original_credits[360] = " " original_credits[361] = " " -------------------------------- UNUSED ----------------------------------- ------------------- (kept for backwards compatibility) ---------------------- options_window.change_resolution = "Auflösung ändern" tooltip.options_window.change_resolution = "Die Fensterauflösung auf die links eingegebenen Werte ändern" CorsixTH-0.61/CorsixTH/Lua/languages/hungarian.lua000066400000000000000000002303101321660673500220240ustar00rootroot00000000000000 --[[ Copyright (c) 2011 David "ChronosHD" Horváth & Adam Kirkósa Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- A FEW NOTES ------------------------------------------------------------------------------- As the Nowegian translation seemd very well structured, i've used that file. Thanks for the Norwegian translators for their work. ------------------------------------------------------------------------------- READ BEFORE DOING ANY CHANGES ------------------------------------------------------------------------------- Since the Hungarian language isn't in the original Theme Hospital game, this file is split in two sections (A and B). The first section contains all the new language strings, made by the Corsix-TH team, and the second section contains the override translation of all the original english strings. FORMATING AND HUNGARIAN LETTERS This file contains UTF-8 text. Make sure your editor is set to UTF-8. ------------------------------------------------------------------------------- Table of Contents ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS 1. Global settings 2. Faxes 3. Objects 4. Menu 5. Adviser 6. Dynamic info 7. Tooltip -- SECTION B - OLD STRINGS (OVERRIDE) Huge section with all original strings, translated from english. -----------------------------------------------------------------------------]] ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS ------------------------------------------------------------------------------- Font("unicode") Language("Magyar", "Hungarian", "hu", "hun") Inherit("English") Encoding(utf8) -- 2. Faxes fax = { choices = { return_to_main_menu = "Vissza a fÅ‘menübe", accept_new_level = "Ugrás a következÅ‘ pályára", decline_new_level = "Pálya folytatása még egy kicsit", }, } letter = { dear_player = "Kedves %s", custom_level_completed = "Ez igen! Minden kitűzött célt elértél ezen az egyedi pályán!", return_to_main_menu = "Szeretnél visszaugrani a fÅ‘menübe, vagy inkább játszol tovább?", } install = { title = "--------------------------------- CorsixTH Beállítások ---------------------------------", th_directory = "CorsixTH-nak a futáshoz szüksége van az eredeti (teljes vagy demó) játék adatfájljaira. Kérlek az alábbi választómenü segítségével keresd ki a Theme Hospital telepítÅ‘fájljait tartalmazó könyvtárat.", exit = "Kilépés", } -- 3. Objects object = { litter = "Szemét", } tooltip.fax.close = "Ablak bezárása az üzenet törlése nélkül" tooltip.message.button = "Bal klikk az üzenet megnyitásához" tooltip.message.button_dismiss = "Bal klikk az üzenet megnyitásához, jobb klikk a figyelmen kívül hagyáshoz" -- 4. Menu menu_options = { lock_windows = " Ablak rögzítése ", edge_scrolling = " Görgetés széleknél ", settings = " Beállítások ", } menu_options_game_speed.pause = " Játék megállítása " -- The demo does not contain this string menu_file.restart = " Újrakezdés " menu_debug = { jump_to_level = " UGRÃS PÃLYÃRA ", transparent_walls = " (X) ÃTLÃTSZÓ FALAK ", limit_camera = " KAMERA HATÃROLÃSA ", disable_salary_raise = " FIZETÉSEMELÉS KIKAPCSOLÃSA ", make_debug_fax = " (F8) FAX HIBAKERESÉS ", make_debug_patient = " (F9) BETEG HIBAKERESÉS ", cheats = " (F11) CSALÃSOK ", lua_console = " (F12) LUA KONZOL ", calls_dispatcher = " HÃVÃS ELOSZTÓ ", dump_strings = " SZTRINGEK LEMENTÉSE ", dump_gamelog = " (CTRL+D) JÃTÉK LOG LEMENTÉSE ", map_overlay = " TÉRKÉP RÉTEG ", sprite_viewer = " SPRITE NÉZEGETÅ ", } menu_debug_overlay = { none = " SEMMI ", flags = " ZÃSZLÓK ", positions = " POZÃCIÓK ", heat = " HÅMÉRSÉKLET ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE TALAPZAT ", byte_n_wall = " BYTE N FAL ", byte_w_wall = " BYTE W FAL ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " TELEKRÉSZ ", } -- 5. Adviser adviser = { room_forbidden_non_reachable_parts = "A szoba jelenlegi elhelyezése elérhetetlenné tenne bizonyos részeket a kórház területén.", praise = { plants_are_well = "Kellemes látvány. Ügyesen gondoskodtál a növényekrÅ‘l. Szép munka.", few_have_to_stand = "Majdhogynem senkinek se kell állnia a kórházadban. A betegek hálásak ezért.", plenty_of_benches = "Rengetek az ülÅ‘hely, úgyhogy gond egy szál se.", plants_thriving = "Nagyon jó. A növények virítanak. Kellemes látvány. Ha így folytatod, még trófeát is kaphatsz értük." }, } -- 6. Dynamic info dynamic_info.patient.actions.no_gp_available = "Várakozás, hogy több általános rendelÅ‘t építs" dynamic_info.staff.actions.heading_for = "Ide megy: %s" dynamic_info.staff.actions.fired = "Elbocsájtott" -- 7. Tooltip tooltip.objects.litter = "Szemét: Egy haszontalan tárgy, amit a beteg azért dobott a földre, mert nem talált szemetest." -- Misc misc.not_yet_implemented = "(Még nem beépített)" misc.no_heliport = "Nem lett még új betegség felfedezve, vagy nincs helikopterleszálló ezen a pályán." -- Main menu main_menu = { new_game = "Új játék", custom_level = "Egyedi pálya", load_game = "Betöltés", options = "Beállítások", exit = "Kilépés", } tooltip.main_menu = { new_game = "Egy teljesen új játék kezdése az alapoktól", custom_level = "Saját kórház építése egy egyedi pályán", load_game = "Elmentett játék betöltése", options = "Beállítások megváltoztatása", exit = "Ne, ne! Kérlek ne lépj ki!", } load_game_window = { caption = "Játék betöltése", } tooltip.load_game_window = { load_game = "%s betöltése", load_game_number = "%d betöltése", load_autosave = "Automatikus mentés betöltése", } custom_game_window = { caption = "Egyedi játék", } tooltip.custom_game_window = { start_game_with_name = "%s pálya betöltése", } save_game_window = { caption = "Játék mentése", new_save_game = "Új mentés", } tooltip.save_game_window = { save_game = "%s mentés felülírása", new_save_game = "Ãrd be az új mentés nevét", } menu_list_window = { back = "Vissza", } tooltip.menu_list_window = { back = "Ablak bezárása", } options_window = { fullscreen = "Teljes képernyÅ‘", width = "Szélesség", height = "Magasság", change_resolution = "Felbontás megváltoztatása", browse = "Tallózás...", new_th_directory = "Itt egy új Theme Hospital telepítési útvonalat adhatsz meg. Amint kiválasztottad az új könyvtárat, a játék újraindul.", cancel = "Mégse", back = "Vissza", } tooltip.options_window = { fullscreen_button = "Kattints a teljes képernyÅ‘s módba való váltáshoz", width = "Add meg a kívánt szélességet", height = "Add meg a kívánt magasságot", change_resolution = "Az ablak felbontásának alkalmazása a bal oldalon lévÅ‘ adatok szerint", language = "%s nyelv kiválasztása", original_path = "Az eredeti Theme Hospital telepítés jelenlegi elérési útvonala", browse = "Másik elérési útvonal kiválasztása a Theme Hospital fájljaihoz", back = "Beállítások ablak bezárása", } calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d hívás; %d hozzárendelve", staff = "%s - %s", watering = "Öntözés @ %d,%d", repair = "%s Javítás", close = "Bezárás", } tooltip.calls_dispatcher = { task = "TeendÅ‘k listája - kattints, hogy megnyitsd a beosztott személyzet ablakát és a teendÅ‘ helyszínéhez gördülj.", assigned = "Ez a doboz akkor van bejelölve, ha a teendÅ‘höz már van rendelve alkalmazott.", close = "HozzárendelÅ‘ ablak bezárása", } cheats_window = { caption = "Csalás", warning = "Figyelem: Nem fogsz bónuszpontokat kapni a pálya végén, ha csalsz!", cheated = { no = "Csalás aktív: Nem", yes = "Csalás aktív: Igen", }, cheats = { money = "Pénz csalás", all_research = "Minden kutatás kész csalás", emergency = "Vészhelyzet létrehozása", create_patient = "Beteg létrehozása", end_month = "Ugrás hónap végére", end_year = "Ugrás év végére", lose_level = "Pálya elvesztése", win_level = "Pálya megnyerése", }, close = "Bezárás", } tooltip.cheats_window = { close = "Csalás párbeszédablak bezárása", cheats = { money = "Egyenleghez $10.000 hozzáadása.", all_research = "Összes kutatás kész.", emergency = "Vészhelyzet elÅ‘idézése.", create_patient = "Beteg létrehozása a térkép határán.", end_month = "Ugrás hónap végére.", end_year = "Ugrás év végére.", lose_level = "Pálya elvesztése.", win_level = "Pálya megnyerése.", } } new_game_window = { easy = "Rezidens (Könnyű)", medium = "Doktor (Közepes)", hard = "Konzuláns (Nehéz)", tutorial = "Oktatópálya", cancel = "Mégse", } tooltip.new_game_window = { easy = "Amennyiben a szimulációs játék fogalma számodra új, ez az opció való neked.", medium = "Ez a középút, ajánlott ha bizonytalan vagy melyiket válaszd.", hard = "Ha hozzá vagy szokva az ilyenfajta játékokhoz és szeretnél kihívást, válaszd ezt", tutorial = "Ha szeretnél játék közben segítséget kapni a kezdéshez, jelöld be ezt a négyzetet", cancel = "Ãh, nem is akarok igazán új játékot kezdeni!!", } lua_console = { execute_code = "Végrehajtás", close = "Bezárás", } tooltip.lua_console = { textbox = "Ãrd ide a Lua kódot a futtatáshoz", execute_code = "Beírt kód futtatása", close = "Konzol bezárása", } errors = { dialog_missing_graphics = "Sajnálom, a demó fájlok nem tartalmazzák ezt a párbeszédet", save_prefix = "Hiba mentés közben", load_prefix = "Hiba betöltés közben", map_file_missing = "Nem találom a %s fájlt ehhez a pályához!", minimum_screen_size = "Kérlek írj be olyan felbontást ami nagyobb mint 640x480.", maximum_screen_size = "Kérlek olyan felbontást írj be ami kisebb mint 3000x2000.", unavailable_screen_size = "A felbontás amit szeretnél nem elérhetÅ‘ teljes képernyÅ‘s módban.", } confirmation = { needs_restart = "Ezen beállítás megváltoztatása megköveteli CorsixTH újraindulását. Minden nem mentett állás el fog veszni. Biztos vagy benne hogy ezt szeretnéd?", abort_edit_room = "Éppen építesz vagy szerkesztesz egy szobát. Ha minden szükséges tárgyat elhelyezel, a szoba kész lesz, ellenkezÅ‘ esetben azonban törlÅ‘dik. Folytatod?", } information = { custom_game = "Üdvözöllek a CorsixTH-ban. Jó szórakozást ehhez az egyedi pályához!", cannot_restart = "Sajnos ez az egyedi pálya az újrakezdés funkció implementálása elÅ‘tt lett mentve.", level_lost = { "A fenébe! Elbuktál a pályán. Több szerencsét legközelebb!", "A vesztés oka:", reputation = "A hírneved %d alá esett.", balance = "A banki egyenleged %d alá esett.", percentage_killed = "Több mint %d százalékát ölted meg a betegeknek.", }, } tooltip.information = { close = "Információs ablak bezárása", } -- Tips totd_window = { tips = { "A kezdéshez minden kórháznak szüksége van egy recepciós asztalra és egy orvosi irodára (GP's office). InnentÅ‘l kezdve minden azon múlik, hogy milyen betegek látogatják a kórházadat. Akárhogy is: egy gyógyszertár mindenképpen jó döntés.", "A gépek, mint például a Felfújó, karbantartást igényelnek. Alkalmazz egy-két ezermestert, hogy megjavítság a készülékeidet, máskülönben a személyzetet és a betegeket teszed ki veszélynek.", "Kis idÅ‘ elteltével a személyezeted elfárad. Bizonyosodj meg róla, hogy építettél személyzeti szobát, hogy pihenni tudjanak.", "Helyezz el megfelelÅ‘ mennyiségű radiátort, hogy a személyzeted és a betegek ne fázzanak, máskülönben szomorúak lesznek. Használd a térképet, hogy megtaláld azokat a helyeket a kórházadban, melyek fűtést igányelnek.", "Egy doktor szakképzettsége nagyban befolyásolja a diagnózisainak minÅ‘ségét és gyorsaságát. Helyezz az orvosi irodába (GP's office) egy szakképzett doktort és nem lesz szükséged annyi diagnózishoz szükséges szobára.", "Rezidensek (junior) és doktorok úgy tudják fejleszteni a szaktudásukat, hogy a tréning szobában (training room) tanulnak egy konzutlánstól. Ha a konzultánsnak különleges szaktudása is van (segész, pszichológus vagy kutató), azt is átadja a tanulóinak.", "Próbáltad már beütni a faxba az európai segélyhívó számot (112)? Legyenek bekapcsolva a hangszóróid!", "A képernyÅ‘felbontást, a nyelvet és más jellegzetességeket a beállítások alatt tudod meghatározni, mely elérhetÅ‘ a fÅ‘menüben és a játék közben is.", "Nem angol nyelvet választottál ki és angol szöveget látsz mindenfelé? Segíts nekünk lefordítani a hiányzó szövegeket a saját nyelvedre!", "A CorsixTH csapatnak erÅ‘sítésre van szüksége! Szeretnél programozni, fordítani vagy grafikákat készíteni a CorsixTH-nak? Értesíts minket a Fórumban, a levelezÅ‘ listánkon vagy az IRC csatornánkon(corsix-th at freenode).", "Ha találsz valamilyen hibát, kérünk téged, jelezd azt a hibanyomkövetÅ‘nknél, a: th-issues.corsix.org címen!", "Minden szint teljesítéséhez különbözÅ‘ követelményeknek kell megfelelned, hogy a következÅ‘ szintre léphess. EllenÅ‘rizd az állapotjelzÅ‘ ablakot, hogy hogy állsz.", "Ha szerkeszteni vagy törölni szeretnél egy szobát, azt az alsó eszközsoron található szerkesztÅ‘ gombbal tudod megtenni.", "Ha nagyon sok várakozó beteggel futsz össze, úgy tudod gyorsan megállapítani, hogy ki mire vár, hogy a szobák fölé húzod az egered mutatóját, .", "Kattints egy szoba ajtajára, hogy megjelenítsd az oda várakozó sort. Itt további finomhangolásokra van lehetÅ‘séged, mint például a sorrend megváltoztatása vagy egy-egy beteg másik szobához küldése.", "A nem elégedett személyzet gyakran fog fizetésemelést kérni. GyÅ‘zÅ‘dj meg róla, hogy a személyzeted kényelmes körülmények között dolgozik és így elkerülheted ezt.", "A betegek várakozás közben szomlyasak lesznek, különösen akkor, ha a fűtés nagyon fel van tekerve! Helyezz el italautomatákat megfelelÅ‘ helyeken, hogy egy kis pluszbevételhez juss.", "Véglegesen megszakíthatod egy beteg diagnózisának felállítását és megtippelheted a betegségét, ha már találkoztál azzal a kórral. Tudd viszont, hogy ez növeli a rossz gyógymód veszélyét, ami a páciens halálát jelenti.", "A vészhelyzetek kiváló pluszbevételt jelentenek abban az esetben, ha elegendÅ‘ kapacitásod van ahhoz, hogy idÅ‘ben ellásd a betegeket.", }, previous = "ElÅ‘zÅ‘ tipp", next = "KövetkezÅ‘ tipp", } tooltip.totd_window = { previous = "Mutasd az elÅ‘zÅ‘ tippet", next = "Mutasd az következÅ‘ tippet", } ------------------------------------------------------------------------------- -- SECTION B - OLD STRINGS (OVERRIDE) ------------------------------------------------------------------------------- -- Staff class -- each of these corresponds to a sprite staff_class = { nurse = "NÅ‘vér", doctor = "Orvos", handyman = "Gondnok", receptionist = "Recepciós", surgeon = "Sebész", } -- Staff titles -- these are titles used e.g. in the dynamic info bar staff_title = { receptionist = "Recepciós", general = "Ãltalános", -- unused? nurse = "NÅ‘vér", junior = "Rezidens", doctor = "Doktor", surgeon = "Sebész", psychiatrist = "Pszichiáter", consultant = "Konzuláns", researcher = "Kutató", } -- Pay rises pay_rise = { definite_quit = "Semmit sem tehetsz annak érdekében, hogy itt tarts. Elegem van ebbÅ‘l a helybÅ‘l!", regular = { "Teljesen kimerültem. Szükségem van egy kis pihenésre és egy %d -os fizetésemelésre ha nem akarod látni, ahogy a folyosón nyafogok.", "Nagyon fáradt vagyok. Szükségem van egy kis pihenésre és egy %d -os emelésre, hogy összesen total% d -t keressek, te zsarnok!", --% d (rise)% d (new total) "Ne csináld már! Úgy dolgozom itt, mint egy igás ló. Adj egy %d -os bónuszt és a kórháznál maradok.", --% d (rise) "Annyira el vagyok keseredve. Követelek egy %d -os emelést, amivel összesen % d -t fogok keresni, különben végeztem ezzel a hellyel.", --% d (rise)% d (new total) "A szüleim azt mondták nekem, hogy az orvosi pályán sok pénzt fogok keresni. Úgyhogy adj nekedm egy %d -os emelést, máskülönben végeztünk egymással.", --% d (rise) "Mérges vagyok! Adj nekem rendes fizetést! Nagyjából %d elegendÅ‘ is volna.", --% d (rise) }, poached = "% d ajánlott nekem % s. Ha nem kapok ugyanennyit, lelépek.", --% d (new total)% s (Competitor) } -- Staff descriptions staff_descriptions = { good = { [1] = "Nagyon gyors és szorgalmas.", [2] = "Nagyon lelkiismeretes és gondos.", [3] = "Nagyon sokoldalú.", [4] = "Barátságos és mindig jókedvű.", [5] = "Rettenetesen kitartó. ReggeltÅ‘l estig dolgozik.", [6] = "Nagyon udvarias és jó modorú.", [7] = "Hihetetlenül tehetséges és hozzáértÅ‘.", [8] = "Nagyon szeret teljesíteni a munkában.", [9] = "Maximalista, aki soha nem adja fel.", [10] = "Mosolyával mindig jobb kedvre deríti az embereket.", [11] = "Elragadó, udvarias és segítÅ‘kész.", [12] = "Motivált és elkötelezett a munka iránt.", [13] = "Természetesen viselkedik és keményen dolgozik.", [14] = "Hűséges és barátságos.", [15] = "Figyelmes és lehet rá számítani vészhelyzetekben.", }, misc = { [1] = "Golfozik.", [2] = "Kagylóbúvárkodik.", [3] = "Jégszobrai vannak.", [4] = "Szereti a borokat.", [5] = "Versenyez.", [6] = "Bungee jumpingol.", [7] = "Poháralátéteket gyűjt.", [8] = "Szeret koncerten a közönségre ugrani.", [9] = "Szeret szörfölni.", [10] = "Szeret folyókat tágítani.", [11] = "Whiskey-t párol.", [12] = "Csináld-magad szakember.", [13] = "Szereti a francia művészfilmeket.", [14] = "Sokszor játszik a Theme Park-kal.", [15] = "C-típusú bizonyítványa van.", [16] = "MotorversenyzÅ‘.", [17] = "Hegedűn és csellón játszik.", [18] = "Megszállott vonatrajongó.", [19] = "Kutyabarát.", [20] = "Rádiós.", [21] = "Gyakran jár fürdÅ‘kbe.", [22] = "Bambuszács szakkör vezetÅ‘je.", [23] = "ZöldségbÅ‘l készült szappantartói vannak.", [24] = "RészmunkaidÅ‘s bányászengedélye van.", [25] = "Egy kvíműsor házigazdája.", [26] = "2. világháborús ereklyéket gyűjt.", [27] = "Szeret átalakítani.", [28] = "Rave és trip-hop zenét hallgat.", [29] = "Dezodorral öli meg a rovarokat.", [30] = "Kiszúrja a rossz standup-osokat.", [31] = "Vásárol a kórház bizottságának.", [32] = "Titokban kertészkedik.", [33] = "Hamis karórákat csempész.", [34] = "Egy rock'n'roll bandában énekes.", [35] = "Imád napközben televíziót nézni.", [36] = "Pisztrángra horgászik.", [37] = "Turista minden múzeumban.", }, bad = { [1] = "Lassú és kicsinyes.", [2] = "Lusta és nem ambíciózus.", [3] = "Rosszul képzett és használhatatlan.", [4] = "Buta és fárasztó. Tartalékos katona.", [5] = "Alacsony tűrÅ‘képességű. Rossz a magatartása.", [6] = "Süket mint az ágyú. Káposzta szaga van.", [7] = "Piszkos munkát végez. Nem vállal nagy felelÅ‘sséget.", [8] = "Nehezen koncentrál és könnyen elterelÅ‘dik a figyelme. ", [9] = "Stresszre hajlamos és sok hibát vét.", [10] = "könnyen dühbe jön. Sok gyűlölet van benne.", [11] = "Inkorrekt és alkalmatlan.", [12] = "nem érdekli a munka. Tétlen.", [13] = "FelelÅ‘tlen és gondatlan.", [14] = "Zsémbes, ravasz és mindenki agyára megy.", [15] = "Arogáns és felsÅ‘bbrendűsködÅ‘.", }, } -- Staff list staff_list = { morale = "Morál", tiredness = "Fáradtság", skill = "Szakismeret", total_wages = "Teljes kereset", } -- Objects object = { desk = "Ãróasztal", cabinet = "Szekrény", door = "Ajtó", bench = "Pad", table1 = "Asztal", -- unused object chair = "Szék", drinks_machine = "ÜdítÅ‘automata", bed = "Ãgy", inflator = "Pumpa", pool_table = "Biliárdasztal", reception_desk = "Recepcióspult", table2 = "Asztal", -- unused object & duplicate cardio = "Kardió", scanner = "Szkenner", console = "Konzol", screen = "KépernyÅ‘", litter_bomb = "Szemétbomba", couch = "Dívány", sofa = "Szófa", crash_trolley = "Gurulós szekrény", tv = "TV", ultrascanner = "Ultrahang", dna_fixer = "DNS javító", cast_remover = "Gipszhámozó", hair_restorer = "HajvisszanövesztÅ‘", slicer = "SzeletelÅ‘", x_ray = "Röntgen", radiation_shield = "Sugárzás elleni pajzs", x_ray_viewer = "Röntgenvizsgáló", operating_table = "Operálóasztal", lamp = "Lámpa", -- unused object toilet_sink = "WC kagyló", op_sink1 = "WC kagyló", op_sink2 = "WC kagyló", surgeon_screen = "Függöny", lecture_chair = "Hallgatói szék", projector = "VetítÅ‘", bed2 = "Ãgy", -- unused duplicate pharmacy_cabinet = "Gyógyszeres vitrin", computer = "Számítógép", atom_analyser = "AtomelemzÅ‘", blood_machine = "VérkezelÅ‘-gép", fire_extinguisher = "Tűzoltókészülék", radiator = "FűtÅ‘test", plant = "Növény", electrolyser = "Elektrolizáló", jelly_moulder = "ZselésítÅ‘", gates_of_hell = "Pokol kapuja", bed3 = "Ãgy", -- unused duplicate bin = "Szemetes", toilet = "Mosdó", swing_door1 = "LengÅ‘ajtó", swing_door2 = "LengÅ‘ajtó", shower = "Zuhany", auto_autopsy = "Auto-boncoló", bookcase = "Könyvespolc", video_game = "Videojáték", entrance_left = "Bejárat bal ajtó", entrance_right = "Bejárat jobb ajtó", skeleton = "Csontváz", comfortable_chair = "Kényelmes szék", } -- Place objects window place_objects_window = { drag_blueprint = "Addig állítsd az alaprejzot, amíg megfelelÅ‘ méretűnek nem találod,", place_door = "Válaszd ki az ajtó helyét,", place_windows = "Csinálj pár ablakot, ha szeretnél. Véglegesítsd, ha kész vagy", place_objects = "Helyezd el a tárgyakat. Véglegesítsd, ha boldog vagy,", confirm_or_buy_objects = "Befejezheted a szobát vagy vásárolhatsz még további tárgyakat is,", pick_up_object = "Kattints egy tárgyra, hogy felemeld vagy válassz ki valami mást a dobozból", place_objects_in_corridor = "Helyezd el a tárgyakat a folyosón", } -- Months months = { "Jan", "Feb", "Már", "Ãpr", "Máj", "Jún", "Júl", "Aug", "Szep", "Okt", "Nov", "Dec", } -- Date format date_format.daymonth = "%1% %2:months%" -- Graphs graphs = { money_in = "Bevétel", money_out = "Kiadás", wages = "Fizetések", balance = "Mérleg", visitors = "Látogatók", cures = "Gyógyulások", deaths = "Halálesetek", reputation = "Hírnév", time_spans = { "1 óra", "12 óra", "48 óra", } } -- Transactions transactions = { --null = S[8][ 1], -- not needed wages = "Fizetések", hire_staff = "Személyzet felvétele", buy_object = "Tárgy vásárlása.", build_room = "Szoba építése", cure = "Gyógyítás", buy_land = "Telek felvásárlása", treat_colon = "Kezelés:", final_treat_colon = "Teljes kezelés:", cure_colon = "Gyógyult:", deposit = "Letét", advance_colon = "ElÅ‘lép:", research = "Kutatás költsége", drinks = "Bevétel: ÜdítÅ‘k", jukebox = "Bevétel: Zenegép", -- unused cheat = "Monopolipénz", heating = "Fűtésköltség", insurance_colon = "Biztosítás:", bank_loan = "Hitel", loan_repayment = "Banki letét", loan_interest = "Banki kamat", research_bonus = "Kutatási bónusz", drug_cost = "Gógyszerár", overdraft = "Hiteltúllépési kamat", severance = "Végkielégítés", general_bonus = "Ãltalános bónusz", sell_object = "Tárgy eladás", personal_bonus = "Személyi bónsuz", emergency_bonus = "Vészhelyzet bónusz", vaccination = "VédÅ‘oltás", epidemy_coverup_fine = "Járványeltitkolási bírság", compensation = "Kompenzáció", vip_award = "VIP-jutalom", epidemy_fine = "Járványbírság", eoy_bonus_penalty = "Év végi bónusz/büntetés", eoy_trophy_bonus = "Év végi trófea-bónusz", machine_replacement = "Gépcsere", } -- Town map town_map = { chat = "Térképcsevegés", for_sale = "Eladó", not_for_sale = "Nem eladó", number = "Telekszám", owner = "Tulajdonos", area = "Telekfelszín", price = "Telekár", } -- Rooms short -- NB: includes some special "rooms" -- reception, destroyed room and "corridor objects" rooms_short = { reception = "Recepció", destroyed = "Megsemmisült", corridor_objects = "Folyosói tárgyak", gps_office = "Orvosi iroda", psychiatric = "Pszichiátria", ward = "Kórterem", operating_theatre = "MűtÅ‘", pharmacy = "Gyógyszertár", cardiogram = "Kardiogramm", scanner = "Szkenner", ultrascan = "Ultrahang", blood_machine = "Vérgép", x_ray = "Röntgen", inflation = "Pumpa", dna_fixer = "DNS-klinika", hair_restoration = "Hajklinika", tongue_clinic = "Nyelvklinika", fracture_clinic = "GipszelÅ‘", training_room = "Tréningszoba", electrolysis = "Elektrolizáló", jelly_vat = "Kocsonyakád", staffroom = "Személyzeti szoba", -- rehabilitation = "Rehabilitering", -- unused general_diag = "Ãltalános vizsgáló", research_room = "Kutatószoba.", toilets = "WC", decontamination = "FertÅ‘tlenítÅ‘", } -- Rooms long rooms_long = { general = "ÃLtalános", -- unused? emergency = "Vészhelyzet", corridors = "Folyosó", gps_office = "Orvosi iroda", psychiatric = "Pszichiátria", ward = "Kórterem", operating_theatre = "MűtÅ‘", pharmacy = "Gyógyszertár", cardiogram = "Kardiogramm", scanner = "Szkenner", ultrascan = "Ultrahang", blood_machine = "Vérgép", x_ray = "Röntgen", inflation = "Pumpa", dna_fixer = "DNS-klinika", hair_restoration = "Hajklinika", tongue_clinic = "Nyelvklinika", fracture_clinic = "GipszelÅ‘", training_room = "Tréning szoba", electrolysis = "Elektrolizáló", jelly_vat = "Kocsonyakád", staffroom = "Személyzeti szoba", -- rehabilitation = "Rehabiliteringsrom", -- unused general_diag = "Ãltalános vizsgáló", research_room = "Kutatószoba", toilets = "WC", decontamination = "FertÅ‘tlenítÅ‘", } -- Drug companies drug_companies = { "Gyógyi Neked Kft.", "Meggyógyít Zrt.", "Tabi Mámor Kft.", "Jótabletta Zrt.", "Mindenre Jó Zrt.", } -- Build rooms build_room_window = { pick_department = "Osztály kiválasztása", pick_room_type = "Típus kiválasztása", cost = "Ãr: ", } -- Build objects buy_objects_window = { choose_items = "Elemek kiválasztása", price = "Ãr:", total = "Összesen:", } -- Research research = { categories = { cure = "Gyógymód", diagnosis = "Diagnózis", drugs = "Gyógyszerek", improvements = "Fejlesztések", specialisation = "Specializáció", }, funds_allocation = "TÅ‘ke elosztás", allocated_amount = "Elosztott összeg", } -- Research policy tooltip tooltip.research_policy = { research_progress = "ElÅ‘rehaladottság ebben a felfedezés-kategóriában: %1%/%2%", no_research = "Nem végzel kutatást ebben a kategóriában", } -- Policy screen policy = { header = "Kórházi szabályzat", diag_procedure = "Diagnózis állása", diag_termination = "Diagnózis lezárása", staff_rest = "Személyzet pihenÅ‘re küldése", staff_leave_rooms = "Személyzet szobákból való kiküldése", sliders = { guess = "Gyógykezelés megtippelése", -- belongs to diag_procedure send_home = "Hazaküldés", -- also belongs to diag_procedure stop = "Kezelés leállítása", -- belongs to diag_termination staff_room = "Személyzeti szobába küldés", -- belongs to staff_rest } } -- Rooms room_classes = { -- S[19][2] -- "corridors" - unused for now diagnosis = "Diagnózis", treatment = "Kezelés", clinics = "Klinikák", facilities = "Egyéb létesítmények", } -- Insurance companies insurance_companies = { out_of_business = "Üzemen kívül", "Hattyúlevél Kft.", "Norfolk Hagyma Bt.", "Darázsheg Kft.", "Úszó Hólyag Zrt.", "Barát Béla Kft.", "DagiDezsÅ‘ Holdings", "Lusta Leon Vállalat", "Ping és Pong Kft.", "Vidám Biztosító Vállalat", "Szakszervezeti Biztosító", "Kölcsönös ElÅ‘ny Zrt.", } -- Menu root -- Keep 2 spaces as prefix and suffix menu = { file = " Fájl ", options = " Beállítások ", display = " Nézet ", charts = " Grafikonok ", debug = " Hibakeresés ", } -- Menu File menu_file = { load = " Betöltés ", save = " Mentés ", restart = " Újrakezdés ", quit = " Kilépés ", } menu_file_load = { [1] = " Mentés 1 ", [2] = " Mentés 2 ", [3] = " Mentés 3 ", [4] = " Mentés 4 ", [5] = " Mentés 5 ", [6] = " Mentés 6 ", [7] = " Mentés 7 ", [8] = " Mentés 8 ", } menu_file_save = { [1] = " Mentés 1 ", [2] = " Mentés 2 ", [3] = " Mentés 3 ", [4] = " Mentés 4 ", [5] = " Mentés 5 ", [6] = " Mentés 6 ", [7] = " Mentés 7 ", [8] = " Mentés 8 ", } -- Menu Options menu_options = { sound = " Hang ", announcements = " Hangosbemondó ", music = " Zene ", sound_vol = " HangerÅ‘ ", announcements_vol = " Hangosbemondó hangereje ", music_vol = " Zene hangereje ", autosave = " Automatikus mentés ", game_speed = " Játék sebessége ", jukebox = " Zenegép ", } -- Menu Options Volume menu_options_volume = { [10] = " 10% ", [20] = " 20% ", [30] = " 30% ", [40] = " 40% ", [50] = " 50% ", [60] = " 60% ", [70] = " 70% ", [80] = " 80% ", [90] = " 90% ", [100] = " 100% ", } -- Menu Options Game Speed menu_options_game_speed = { slowest = " Leglassabb ", slower = " Lassú ", normal = " Normál ", max_speed = " Maximum sebesség ", and_then_some_more = " Még egy kicsivel több ", } -- Menu Display menu_display = { high_res = " Jó felbontás ", mcga_lo_res = " MCGA alacsony felbontás ", shadows = " Ãrnyékok ", } -- Menu Charts menu_charts = { statement = " Egyenleg ", casebook = " Esetek ", policy = " Szabályzat ", research = " Kutatás ", graphs = " Grafikonok ", staff_listing = " Személyzet ", bank_manager = " Bankár ", status = " Ãllapot ", briefing = " Eligazítás ", } -- Menu Debug menu_debug = { object_cells = " Objektumcellák ", entry_cells = " Bejáratcellák ", keep_clear_cells = " Szabadon hagyandó cellák ", nav_bits = " Navigációs bitek ", remove_walls = " Falak eltávolítása ", remove_objects = " Objektumok eltávolítása ", display_pager = " Személyhívó megjelenítése ", mapwho_checking = " MAPWHO ellenÅ‘rzés ", plant_pagers = " PLANT PAGERS ", porter_pagers = " PORTER PAGERS ", pixbuf_cells = " PIXBUff CELLS ", enter_nav_debug = " NAV hibakeresÅ‘ beütése ", show_nav_cells = " Navigációs cellák mutatása ", machine_pagers = " Gép PAGEREK ", display_room_status = " Szoba állapotának mutatása ", display_big_cells = " Nagy cellák mutatása ", show_help_hotspot = " Segédpontok mutatása ", win_game_anim = " Játék megnyerésének animációja ", win_level_anim = " Pálya megnyerésének animációja ", lose_game_anim = { [1] = " Játék elveszítése animáció 1 ", [2] = " Játék elveszítése animáció 2 ", [3] = " Játék elveszítése animáció 3 ", [4] = " Játék elveszítése animáció 4 ", [5] = " Játék elveszítése animáció 5 ", [6] = " Játék elveszítése animáció 6 ", [7] = " Játék elveszítése animáció 7 ", }, } debug_patient_window = { caption = "Próbabeteg", } -- High score screen high_score = { pos = "Poz", player = "Játékos", score = "Eredmény", best_scores = "Legjobbak csarnoka", worst_scores = "Szégyenfal", killed = "Megölt", -- is this used? categories = { money = "Pénz", salary = "Kereset", clean = "Tiszta", cures = "Gyógyulás", deaths = "Haláleset", cure_death_ratio = "Gyógyulás és halálesetek aránya", patient_happiness = "Betegek elégedettsége", staff_happiness = "Személyzet elégedettsége", staff_number = "Személyzet száma", visitors = "Látogatók", total_value = "Teljes érték", }, } -- Casebook screen casebook = { reputation = "népszerűség", treatment_charge = "gyógyítás díja", earned_money = "összegyüjtött pénz", cured = "meggyógyítottak", deaths = "halálesetek sázma", sent_home = "hazaküldöttek száma", research = "kutatás", cure = "gyógymód", cure_desc = { build_room = "Javaslom építs ilyen szobát: %s", -- %s (room name) build_ward = "Még mindíg szükség van egy kórteremre.", hire_doctors = "Szükség van még orvosra.", hire_surgeons = "Vegyél fel sebészt.", hire_psychiatrists = "Vegyél fel pszichológust.", hire_nurses = "Vegyél fel nÅ‘vért.", no_cure_known = "Nincs ismert gyógymód.", cure_known = "Van gyógymód.", improve_cure = "Gyógymód fejlesztése", }, } -- Tooltips tooltip = { -- Build room window build_room_window = { room_classes = { diagnosis = "Diagnózis", treatment = "Kezelés", clinic = "Klinikák", facilities = "Egyéb létesítmények", }, cost = "Ãr", close = "Bezárás", }, -- Toolbar toolbar = { bank_button = "Bal gombbal a bankmenedzser-ablakod nyitod meg, jobbal pedig a banki kimutatást", balance = "Egyenleged", reputation = "Hírneved: ", -- NB: no %d! Append " ([reputation])". date = "A dátum", rooms = "Szobák építése", objects = "Folyosók díszítése", edit = "Szobák/tárgyak szerkesztése", hire = "Alkalmazottak szerzÅ‘dtetése", staff_list = "Személyzetmenedzsment", town_map = "Várostérkép", casebook = "Esetnapló", research = "Kutatás", status = "Ãllapot", charts = "Grafikonok", policy = "Házirend", }, -- Hire staff window hire_staff_window = { doctors = "Az elérhetÅ‘ doktorok áttekintése", nurses = "Az elérhetÅ‘ nÅ‘vérek áttekintése", handymen = "Az elérhetÅ‘ ezermesterek áttekintése", receptionists = "Az elérhetÅ‘ recepciósok áttekintése", prev_person = "ElÅ‘zÅ‘ személy", next_person = "KövetkezÅ‘ személy", hire = "A személy felvétele", cancel = "Mégsem", doctor_seniority = "A doktor fokozata (rezidens, doktor, konzuláns)", staff_ability = "A jelentkezÅ‘ képességei", salary = "Fizetés", qualifications = "A doktor további végzettségei", surgeon = "Sebész", psychiatrist = "Pszichológus", researcher = "Kutató", }, -- Buy objects window buy_objects_window = { price = "A tárgy ára", total_value = "A megrendelt tárgyak összára", confirm = "Tárgy(ak) megvásárlása", cancel = "Mégsem", increase = "Eggyel több tárgy vásárlása ebbÅ‘l", decrease = "Eggyel kevesebb tárgy vásárlása ebbÅ‘l", }, -- Staff list staff_list = { doctors = "Az alkalmazott doktorok listájának megjelenítése", nurses = "Az alkalmazott nÅ‘vérek listájának megjelenítése", handymen = "Az alkalmazott ezermesterek listájának megjelenítése", receptionists = "Az alkalmazott recepciósok listájának megjelenítése", happiness = "A kiválasztott alkalmazottak boldogsága", tiredness = "A kiválasztott alkalmazottak fáradtsága", ability = "A kiválasztott alkalmazottak képessége", salary = "Az alkalmazott jelenlegi fizetése", happiness_2 = "Az alkalmazott morálja", tiredness_2 = "Az alkalmazottak fáradtsága", ability_2 = "Az alkalmazott képessége", prev_person = "KövetkezÅ‘ oldal", next_person = "ElÅ‘zÅ‘ oldal", bonus = "10 suzázalékos bónusz fizetése ennek az alkalmazottnak", sack = "Az alkalmazott kirúgása", pay_rise = "Az alkalmazott fizetésének megemelése 10 százalékkal", close = "Kilépés és visszatérés a játékba", doctor_seniority = "A doktor fokozata", detail = "Részleteknek odafigyelés", view_staff = "Személyre közelítés", surgeon = "Képzett sebész", psychiatrist = "Képzett pszichológus", researcher = "Képzett kutató", surgeon_train = "Sebésszé képzés mértéke: %d%%", -- %d (percentage trained) psychiatrist_train = "Pszichológussá képzés mértéke: %d%%", -- %d (percentage trained) researcher_train = "Kutatóvá képzés mértéke: %d%%", -- %d (percentage trained) skills = "További készségek", }, -- Queue window queue_window = { num_in_queue = "A sor hossza", num_expected = "A recepciós szerint ennyien fognak nemsokára a sorba állni", num_entered = "Ennyian jártak a szobában", max_queue_size = "A sor maximális mérete", dec_queue_size = "Sor maximális méretének csökkentése", inc_queue_size = "Sor maximális méretének növelése", front_of_queue = "Húzz egy beteget ehhez az ikonhoz, hogy a sor elejére állítsd", end_of_queue = "Húzz egy beteget ehhez az ikonhoz, hogy a sor végére állítsd", close = "Bezárás", patient = "Húzd a betegeket a soron belül bal gombbal, küldd haza vagy a rivális kórházak valamelyikébe jobb gombbal.", patient_dropdown = { reception = "Beteg küldése a recepcióhoz", send_home = "Beteg hazaküldése", hospital_1 = "Beteg átirányítása egy másik kórházba", hospital_2 = "Beteg átirányítása egy másik kórházba", hospital_3 = "Beteg átirányítása egy másik kórházba", }, }, -- Main menu main_menu = { new_game = "Új kampány kezdése", load_game = "Korábbi játék betöltése", continue = "Korábbi játék folytatása", network = "Hálózati játék kezdése", quit = "Kilépés", load_menu = { load_slot = " Mentés [slotnumber] ", -- NB: no %d! Append " [slotnumber]". empty_slot = " Üres ", }, }, -- Window general window_general = { cancel = "Mégse", confirm = "MegerÅ‘sít", }, -- Patient window patient_window = { close = "Ablak bezárása", graph = "Kattints, hogy átválts a beteg egészség-grafikonja és kezelésnaplója között", happiness = "A beteg boldogsága", thirst = "A beteg szomjúsága", warmth = "A beteg melegség érzete", casebook = "Részletek megjelenítése a személy betegségérÅ‘l", send_home = "A beteg elbocsátása ebbÅ‘l a kórházból", center_view = "A kamera betegre rögzítése", abort_diagnosis = "A beteg azonnali kezelése, a diagnózis befejezése helyett", queue = "Részletek megjelenítése a beteg elÅ‘tt álló sorról", }, -- window staff_window = { name = "Alkalmazott neve", close = "Ablak bezárása", face = "A személy arca - kattints, hogy megnyitsd a kezelÅ‘ablakot", happiness = "Boldogság", tiredness = "Fáradtság", ability = "Képesség", doctor_seniority = "Doktor fokozata (Rezidens, Doktor, Konzuláns)", skills = "Képességek", surgeon = "Sebész", psychiatrist = "Pszichológus", researcher = "Kutató", salary = "Fizetés", center_view = "Kattints bal gombbal a közelítéshez, jobb gombbal pedig az alkalmazottak közötti lapozáshoz.", sack = "Kirúgás", pick_up = "Felkapás", }, -- Machine window machine_window = { name = "Név", close = "Ablak bezárása", times_used = "Ennyiszer volt használatban a gép", status = "A gép állapota", repair = "Ezermester hívása, hogy megjavítsa a gépet", replace = "Gép kicserélése", }, -- Handyman window -- Spparently handymen have their own set of strings (partly) containing "handyman". -- We could just get rid of this category and include the three prios into staff_window. handyman_window = { name = "Ezermester neve", -- contains "handyman" close = "Ablak bezárása", face = "Ezermester arca", -- contains "handyman" happiness = "Boldogság", tiredness = "Fáradtság", ability = "Képesség", prio_litter = "Szemétszedés prioritásának növelése ennél az ezermesternél", -- contains "handyman" prio_plants = "Növényápolás prioritásának növelése ennél az ezermesternél", -- contains "handyman" prio_machines = "Gépszerelés prioritásának növelése ennél az ezermesternél", -- contains "handyman" salary = "Fizetés", center_view = "Ugrás az ezermesterre", -- contains "handyman" sack = "Kirúgás", pick_up = "Felkapás", }, -- Place objects window place_objects_window = { cancel = "Mégsem", buy_sell = "Tárgyak vásárlása/eladása", pick_up = "Tárgy felemelése", confirm = "MegerÅ‘sít", }, -- Casebook casebook = { up = "Felfelé gördítés", down = "Lefelé gördítés", close = "Gyógyszeres könyv bezárása", reputation = "A kezelés népszerűsége", treatment_charge = "Kezelés költsége", earned_money = "A kezelésbÅ‘l eddig befolyt bevétel", cured = "Sikeres kezelések száma", deaths = "Halálesetet elÅ‘idézÅ‘ kezelések száma", sent_home = "Elutasított betegek száma", decrease = "Ãr csökkentése", increase = "Ãr növelése", research = "Kattints, hogy a specializációkra szánt kutatási pénzt erre a kezelésre használd", cure_type = { drug = "A kezeléshez gyógyszerre van szükség", drug_percentage = "A kezeléshez gyógyszerre van szükség - a tiéd %d%% hatásos", -- %d (effectiveness percentage) psychiatrist = "Pszichológus végzi ezt a kezelést", surgery = "Sebész végzi ezt a kezelést", machine = "Ehhez a kezeléshez egy gépre van szükség", unknown = "EgyelÅ‘re nem tudod, hogy miként kell kezelni ezt a betegséget", }, cure_requirement = { possible = "Kezelni tudod ezt a betegséget", research_machine = "Fel kell találnod pár gépet, hogy ezt a betegséget kezelni tudd", build_room = "Egy szoba megépítésére van szükség, hogy ezt a betegséget kezelni tudd", -- NB: no %s! hire_surgeons = "Két sebészt kell alkalmaznod, hogy operációkat tudj végrehajtani", hire_surgeon = "Egy második sebészre is szükséged van, hogy operációkat tudj végrehajtani", hire_staff = "Az alábbi személyzetre van szükséged ehhez a kezeléshez: %s", -- %s (staff type) hire_staff_old = "Az alábbi személyzetre van szükséged ehhez a kezeléshez: %s", build_ward = "Ehhez a kezeléshez egy kórteremre van szükséged", ward_hire_nurse = "Egy kórteremben dolgozó nÅ‘vérre van szükséged ennek a betegségnek a kezeléséhez", not_possible = "Még nem tudod kezelni ezt a betegséget", }, }, -- Statement statement = { close = "Bezárás", }, -- Research research = { close = "Kutatás ablak bezárása", cure_dec = "Kutatás mértékének csökkentése", diagnosis_dec = "Berendezéskutatás mértékének csökkentése", drugs_dec = "Gyógyszerkutatás mértékének csökkentése", improvements_dec = "Fejlesztéskutatás mértékének csökkentése ", specialisation_dec = "Specializációs kutatás mértékének csökkentése", cure_inc = "Kutatás mértékéne növelése", diagnosis_inc = "Berendezéskutatás mértékének növelése", drugs_inc = "Gyógyszerkutatás mértékének növelése", improvements_inc = "Fejlesztéskutatás mértékének növelése", specialisation_inc = "Specializációs kutatás mértékének növelése", allocated_amount = "A büdzsébÅ‘l erre szánt összeg", }, -- Graphs graphs = { close = "Grafikonok ablak bezárása", scale = "Skála", money_in = "Bevétel bekapcsolása/kikapcsolása", money_out = "Kiadás bekapcsolása/kikapcsolása", wages = "Fizetések bekapcsolása/kikapcsolása", balance = "Banki egyenleg bekapcsolása/kikapcsolása", visitors = "Látogatók számának bekapcsolása/kikapcsolása", cures = "Sikeres kezelések számának bekapcsolása/kikapcsolása", deaths = "Halálozások számának bekapcsolása/kikapcsolása", reputation = "Hírnév bekapcsolása/kikapcsolása", }, -- Town map town_map = { people = "Emberek bekapcsolása/kikapcsolása", plants = "Növények bekapcsolása/kikapcsolása", fire_extinguishers = "Poroltók bekapcsolása/kikapcsolása", objects = "Táryak bekapcsolása/kikapcsolása", radiators = "Radiátorok bekapcsolása/kikapcsolása", heat_level = "HÅ‘ bekapcsolása/kikapcsolása", heat_inc = "HÅ‘mérséklet növelése", heat_dec = "HÅ‘mérséklet csökkentése", heating_bill = "Gázszámla", balance = "Egyenleg", close = "Térkép bezárása", }, -- Jukebox. jukebox = { current_title = "Zenegép", close = "Zenegép bezárása", play = "Zenegép elindítása", rewind = "Visszatekerés", fast_forward = "ElÅ‘retekerés", stop = "Zenedoboz megállítása", loop = "Lejtászás végtelenítése", }, -- Bank Manager bank_manager = { hospital_value = "A kórház pillanatnyi értéke", balance = "Bankegyenleged", current_loan = "Kölcsöneid jelenlegi mértéke", repay_5000 = "$5000 visszafizetése a banknak", borrow_5000 = "$5000 hitel felvétele", interest_payment = "Havi kamat", inflation_rate = "Éves inflációs ráta", interest_rate = "Éves kamatráta", close = "Ablak bezárása", insurance_owed = "Ennyivel tartozik neked %s", -- %s (name of debitor) show_graph = "%s várható kifizetésének mértéke", -- %s (name of debitor) graph = "%s várható kifizetéseinek grafikonja", -- %s (name of debitor) graph_return = "Visszatérés az elÅ‘zÅ‘ nézetre", }, -- Status status = { percentage_cured = "A betegek %d% -át kell meggyógyítanod. EgyelÅ‘re %d% -ot gyógyítottál meg", thirst = "A betegek szomjúsága összesen", close = "Az áttekintÅ‘ ablak bezárása", population_chart = "A diagramm, ami a azt mutatja, hogy a helyi lakosság mekkora részét gyógyította meg egy-egy kórház", win_progress_own = "A nyeréshez szükséges kritérium teljesítettségének mutatása", reputation = "A népszerűségednek legalább ennyinek kell lennie: %d. Jelenleg ennyi: %d", population = "A helyi lakosság legalább %d%% -ának kell a te kórházadba jönnie", warmth = "A betegek melegség érzete összesen", percentage_killed = "A cél az, hogy a betegeid legfeljebb %d%% -át öld meg. Eddig %d%% -ukat ölted meg", balance = "A banki egyenlegednek legalább ennyinek kell lennie: %d. Jelenleg ennyi: %d", value = "A kórházad értékének legalább ennyinek kell lennie: $%d. Jelenleg ennyi: $%d", win_progress_other = "%s nyerési elÅ‘remenetelének mutatása", -- %s (name of competitor) num_cured = "Legalább %d beteget kell meggyógyítanod. Eddig ennyit gyógyítottál meg: %d", happiness = "A kórházad betegeinek boldogsága", }, -- Policy policy = { close = "Ablak bezárása", staff_leave = "Kattintással utasíthatod a jelenleg nem elfoglalt orvosaidat a többiek megsegítésére", staff_stay = "Kattintással maradásra utasítod az adott orvost abban a szobában, ahová helyezted", diag_procedure = "Ha egy orvos diagnózisa kevésbé biztos, mint a HAZAKÜLDÉS korlátja, a beteget hazaküldik. Ha a diagnózis biztosabb, mint a KEZELÉS MEGTIPPELÉSE mérték, a beteget kezelni fogják", diag_termination = "Egy beteg diagnosztizálása addig tart, ameddig a doktorok bizonyossága el nem éri a FOLYAMAT LEÃLLÃTÃSA szintet vagy pedig meg nem próbálnak minden lehetséges diagnósztizáló eszközt", staff_rest = "Azt mutatja, hogy mennyire lehet fáradt a személyzet, mielÅ‘tt a személyzeti szobába menne", }, -- Pay rise window pay_rise_window = { accept = "Beleegyezés a fizetésemelésbe", decline = "Nem emeled a fizetést - inkább kirúgod", }, -- Watch watch = { hospital_opening = "Építési idÅ‘: ennyi idÅ‘d maradt a kórházad nyitásáig. Kattintással azonnal megnyithatod a kórházat.", emergency = "Vészhelyzet: azt mutatja, hogy mennyi idÅ‘d van az összes veszélyeztetett beteged meggyógyítására", epidemic = "Járvány: ennyi idÅ‘d maradt felszámolni a járványt. Ha az idÅ‘d lejárt VAGY egy fertÅ‘zÅ‘ beteg elhagyja a kórházadat, egy tisztiorvos jön látogatóba. A gombbal az beoltás üzemmódot tudod be illetve kikapcsolni. Kattints egy betegre, hogy beoltasd egy nÅ‘vérrel.", }, -- Rooms rooms = { gps_office = "A betegek az orvosi irodában konzultálnak orvosaikkal és kapják meg leleteik eredményét", psychiatry = "Az pszichiátra meggyógyítja az Å‘rülteket és segít más betegséket diagnosztizálásában, azonban a működtetéséhez szükséged van egy pszichológus végzettségű orvosra", ward = "A kórtermek mind a diagnosztizálásra, mind pedig a kezelésre alkalmasak. Ide kerülnek a betegek megfigyelésre és felépülésre egyaránt, melyhez egy nÅ‘vérre van szükség", operating_theatre = "A műtÅ‘nek a működéshez két szebész végzettségű orvosra van szüksége", pharmacy = "Egy nÅ‘vér osztja ki a megfelelÅ‘ gyógyszereket a betegeknek", cardiogram = "Egy doktor kezeli a kardiogrammot a diagnózis felállításához", scanner = "Egy doktor kezeli a szkennert a diagnózis felállításához", ultrascan = "Egy doktor kezeli az ultrahangot a diagnózis felállításához", blood_machine = "Egy doktor kezeli a vérgépet a diagnózis felállításához", x_ray = "Egy doktor kezeli a röntgent a diagnózis felállításához", inflation = "Egy doktor kezeli a fejfúvót a duzzadt fejű betegek kezeléséhez", dna_fixer = "Egy doktor kezeli a DNS-javítót az idegen DNS-es betegek kezeléséhez", hair_restoration = "Egy doktor kezeli a hajnövesztÅ‘t a kopasz betegek kezeléséhez ", tongue_clinic = "Egy doktor kezeli a nyelvmetszÅ‘t a petyhüdt nyelvű betegek kezeléséhez", fracture_clinic = "Egy nÅ‘vér üzemelteti a gipszklinikát a törött csontok helyreállításához", training_room = "A tréning szoba doktorok továbbképzésére alkalmas, ha egy konzuláns fokozatú doktor üzemelteti", electrolysis = "Egy doktor kezeli az elektrolizálót a hajitiszes betegek kezeléséhez ", jelly_vat = "Egy doktor kezeli a zselékádat a kocsonyásodott betegek gyógyításához ", staffroom = "Doktorok, nÅ‘vérek és ezermesterek pihennek a személyzeti szobában, hogy kiheverjék fáradalmaikat", -- rehabilitation = S[33][27], -- unused general_diag = "Egy doktor tudja ellátni az általános kivizsgálót az elsÅ‘dleges diagnózis felállításához. Olcsó és sokszor nagyon hatásos", research_room = "Kutató végzettségű orvosok tudnak kifejleszteni új gépeket és gyógyszereket a kutatószobában", toilets = "Építs WC-t annak érdekében, hogy a betegeid ne csináljanak nagy felfordulást a kórházadban!", decontamination = "Egy doktor kezeli a fertÅ‘tlenítÅ‘ készüléket a radioaktív betegek gyógyításához", }, -- Objects objects = { -- NB: most objects do not have a tooltip because they're not (extra-)buyable desk = "Ãróasztal: Nélkülönözhetetlen az orvosok számára. Erre teszik a számítógépüket.", cabinet = "Szekrény: Kórlapokat, jegyzeteket és kutatási anyagokat tartalmaz.", door = "Ajtó: az emberek gyakran nyitják és csukják ezeket.", bench = "Pad: helyet teremt a várakozó betegeknek, kényelmesebbé téve ezzel a múló perceket.", table1 = "Asztal (eltávolított): magazinokat tartalmaz, hogy a betegeknek gyorsabban teljes az idÅ‘.", chair = "Szék: ide ül a beteg, hogy elmondja a bajait.", drinks_machine = "Italautomata: Csökkenti a betegek szomját és egy kis bevételt hoz neked.", bed = "Ãgy: az igazán beteg emberek ezen fekszenek.", inflator = "Pumpa: .", }, } -- Confirmation confirmation = { quit = "Tényleg ki szeretnél lépni a játékból? ", return_to_blueprint = "Biztosan vissza szeretnél lépni tervrajz módba?", replace_machine = "Biztosan ki szeretnéd cserélni %s-t ennyiért $%d?", -- %s (machine name) %d (price) overwrite_save = "Egy állás már létezik ezen a helyen. Biztos hogy felül akarod írni?", delete_room = "Biztosan le akarod bontani ezt a szobát?", sack_staff = "Biztos hogy ki akarod rúgni ezt a dolgozót?", restart_level = "Biztos hogy újra akarod kezdeni ezt a pályát?", } -- Miscellangelous -- Category of strings that fit nowhere else or we are not sure where they belong. -- If you think a string of these fits somewhere else, please move it there. -- Don't forget to change all references in the code and other language files. misc = { grade_adverb = { mildly = "lágyan", moderately = "közepesen", extremely = "extrémen", }, done = "Kész", pause = "Megállít", send_message = "Üzenet küldése %d játékosnak", -- %d (player number) send_message_all = "Üzenet küldése az összes játékosnak", save_success = "Mentés sikeres", save_failed = "HIBA: Mentés sikertelen", hospital_open = "Korház megnyitott", out_of_sync = "A játék kiesett a szinkronból", load_failed = "Nem tudtam betölteni az állást", low_res = "Alacsony felbontás.", balance = "Egyenleg:", mouse = "Egér", force = "Kényszerít", } -- Original credits (untranslated) original_credits = { [1] = " ", [2] = " ", [3] = " ", [4] = " ", [5] = " ", [6] = " ", [7] = " ", [8] = " ", [9] = " ", [10] = " ", [11] = " ", [12] = ":Designed and Created by", [13] = ":Bullfrog Productions", [14] = " ", [15] = ":Pluto Development Team", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = " ", [29] = " ", [30] = " ", [31] = ":Programming", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = " ", [38] = " ", [39] = " ", [40] = ":Art", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = " ", [47] = " ", [48] = " ", [49] = ":Additional Programming", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = " ", [55] = " ", [56] = " ", [57] = ":Additional Art", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = " ", [66] = " ", [67] = " ", [68] = ":Intro Sequence", [69] = ",", [70] = "Stuart Black", [71] = " ", [72] = " ", [73] = " ", [74] = ":Music and Sound Effects", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = " ", [79] = " ", [80] = " ", [81] = ":Additional Music", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = " ", [86] = " ", [87] = " ", [88] = ":Announcer Voiceover", [89] = ",", [90] = "Rebecca Green", [91] = " ", [92] = " ", [93] = " ", [94] = ":Level Design", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = " ", [101] = " ", [102] = " ", [103] = ":Scripting", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = " ", [109] = " ", [110] = " ", [111] = ":R&D", [112] = " ", [113] = ":Graphics Engine", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = " ", [118] = " ", [119] = " ", [120] = ":R&D Support", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = " ", [127] = " ", [128] = " ", [129] = ":Library and Tools", [130] = " ", [131] = "Dos and Win 95 Library", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = " ", [137] = " ", [138] = " ", [139] = ":Network Library", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = " ", [144] = " ", [145] = " ", [146] = ":Sound Library", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = " ", [151] = " ", [152] = " ", [153] = ":Installer Programming", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = " ", [159] = " ", [160] = " ", [161] = ":Moral Support", [162] = ",", [163] = "Peter Molyneux", [164] = " ", [165] = " ", [166] = " ", [167] = ":Testing Manager", [168] = ",", [169] = "Andy Robson", [170] = " ", [171] = " ", [172] = " ", [173] = ":Lead Testers", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = " ", [178] = " ", [179] = " ", [180] = ":Play Testers", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = " ", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = " ", [203] = "And all our other Work Experience Play Testers", [204] = " ", [205] = " ", [206] = " ", [207] = ":Technical Support", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = " ", [213] = " ", [214] = " ", [215] = ":Marketing", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = " ", [220] = " ", [221] = " ", [222] = ":With thanks to:", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = " ", [229] = " ", [230] = " ", [231] = ":PR", [232] = ",", [233] = "Cathy Campos", [234] = " ", [235] = " ", [236] = " ", [237] = ":Documentation", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = " ", [244] = " ", [245] = " ", [246] = ":Documentation & Packaging Design", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = " ", [251] = " ", [252] = " ", [253] = ":Localisation Project Manager", [254] = ",", [255] = "Carol Aggett", [256] = " ", [257] = " ", [258] = " ", [259] = ":Localisation", [260] = ",", [261] = "Sandra Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = " ", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = " ", [268] = "C.T.O. S.p.A. Zola Predosa (BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = " ", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Martínez", [276] = " ", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = " ", [281] = " ", [282] = " ", [283] = ":Production", [284] = ",", [285] = "Rachel Holman", [286] = " ", [287] = " ", [288] = " ", [289] = ":Producer", [290] = ",", [291] = "Mark Webley", [292] = " ", [293] = " ", [294] = " ", [295] = ":Associate Producer", [296] = ",", [297] = "Andy Nuttall", [298] = " ", [299] = " ", [300] = " ", [301] = ":Operations", [302] = ",", [303] = "Steve Fitton", [304] = " ", [305] = " ", [306] = " ", [307] = ":Company Administration", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":Company Management", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":All at Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":Special Thanks to", [332] = ",", [333] = "Everyone at Frimley Park Hospital", [334] = " ", [335] = ":Especially", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = " ", [340] = " ", [341] = " ", [342] = ":Keep On Thinking", [343] = " ", [344] = " ", [345] = " ", [346] = " ", [347] = " ", [348] = " ", [349] = " ", [350] = " ", [351] = " ", [352] = " ", [353] = " ", [354] = " ", [355] = " ", [356] = " ", [357] = " ", [358] = " ", [359] = " ", [360] = " ", [361] = ".", } confirmation.maximum_screen_size = "Az általad beállított képernyÅ‘felbontás magasabb mint 3000 X 2000. Van lehetÅ‘ség ilyen felbontások beállítására, viszont ezekhez erÅ‘sebb hardver szükségeltetik az akadozásmentes futtatáshoz. Biztosan folytatod?" confirmation.music_warning = "MielÅ‘tt kiválaszthatnád az mp3-akat amelyek játék közben fognak szólni szükséged lesz az smpeg.dll nevű (vagy azzal egyenértékű) file-ra, különben nem lesz zene. Folytatod?" menu_options_wage_increase.deny = " MEGTAGAD" menu_options_wage_increase.grant = " ENGEDÉLYEZ" tooltip.options_window.audio_button = "Minden hang ki/be kapcsolása" tooltip.options_window.audio_toggle = "Ki vagy bekapcsol" tooltip.options_window.folder_button = "Könyvtár opciók" tooltip.options_window.customise_button = "További beállítások, hogy finomhangolhasd a játékélményt" tooltip.update_window.download = "Látogasd meg a letöltÅ‘oldalt, hogy megszerezhesd a CorsixTH legfrissebb verzióját" tooltip.update_window.ignore = "A frissítés kihagyása. Újra értesítést fogsz kapni róla, amikor legközelebb elindítod a CorsixTH-t" tooltip.folders_window.browse_font = "Válassz másik betűtípusfile-t ( jelenlegi hely: %1% )" tooltip.folders_window.screenshots_location = "Alaphelyzetben a kilopott képek a konfigurációs file-ok könyvtárába kerülnek. Amennyiben máshova szeretnéd menteni Å‘ket csak tallózd ki a számodra megfelelÅ‘ célkönyvtárat." tooltip.folders_window.reset_to_default = "Elérési út alaphelyzetbe állítása" tooltip.folders_window.back = "Menü bezárása, és vissza a Beállításokhoz" tooltip.folders_window.music_location = "Válaszd ki az mp3 file-jaid elérési útját. A könyvtárt elÅ‘ször létre kell hoznod, utána pedig ki kell választanod." tooltip.folders_window.font_location = "Szükség van egy olyan betűtípusfile elérési útjára, amely alkalmas a magyar nyelv betűit Unicode karakterek segítségével megjeleníteni. Amennyiben ezt elmulasztod nem leszel képes olyan nyelveket beállítani, amelyeknek szükségük van a játék eredeti nyelvében nem fellelhetÅ‘ karakterekre. Például: orosz és kínai" tooltip.folders_window.savegames_location = "Alaphelyzetben a játék mentéseit tartalmazó file-ok a konfigurációs file-ok könyvtárába kerülnek. Amennyiben máshova szeretnéd menteni Å‘ket csak tallózd ki a számodra megfelelÅ‘ célkönyvtárat." tooltip.folders_window.browse_data = "Tallózd ki a Theme Hospital telepítési helyét (jelenlegi hely: %1%)" tooltip.folders_window.browse = "Tallózz elérési utat" tooltip.folders_window.browse_screenshots = "Válassz másik könyvtárat a kilopott képeidnek ( jelenlegi hely: %1% )" tooltip.folders_window.browse_music = "Válassz másik könyvtárat a zenéidnek ( jelenlegi hely: %1% )" tooltip.folders_window.no_font_specified = "Még nem adtál meg betűtípusfile elérési utat!" tooltip.folders_window.not_specified = "Még nem adtál meg könyvtár elérési utat!" tooltip.folders_window.browse_saves = "Válassz másik könyvtárat az elmentett játékállásaidnak ( jelenlegi hely: %1% )" tooltip.folders_window.default = "Alapértelmezett elérési út" tooltip.folders_window.data_location = "Az eredeti Theme Hospital telepítési helye (szükséges a CorsixTH futtatásához)" tooltip.customise_window.aliens = "Mivel nincsenek megfelelÅ‘ animációink az idegen DNA-val rendelkezÅ‘ páciensek megjelenítésére, ezért Å‘k csak vészhelyzetek esetén jelennek meg a kórházadban. Ha szeretnéd, hogy ne csak ilyen esetekben jöjjenek, akkor ezt kapcsold ki" tooltip.customise_window.average_contents = "Ha szeretnéd, hogy a játék megjegyezze milyen extra tárgyakkal szoktad a szobákat általában berendezni, akkor kapcsold be ezt" tooltip.customise_window.back = "Menü bezárása, és vissza a Beállításokhoz" tooltip.customise_window.movies = "Ezzel le tudod tiltani az összes átvezetÅ‘ videót" tooltip.customise_window.fractured_bones = "Mivel csak félkész animációink van a törött csontú nÅ‘i páciensek megjelenítésére, ezért Å‘k nem jelennek meg a kórházadban. Ha mégis szeretnéd, hogy érkezzenek ilyen betegek is, akkor ezt kapcsold ki" tooltip.customise_window.volume = "Ha hangerÅ‘ halkítása gomb használata megnyitja az esetleírásokat is, akkor ezt bekapcsolva átállíthatod az esetleírások gyorsbillentyű kombinációját Shift + C -re" tooltip.customise_window.intro = "A bevezetÅ‘ videó (intro) ki/be kapcsolása - az átvezetÅ‘ videóknak engedélyezve kell lenniük, ha szeretnéd ezt bekapcsolni" tooltip.customise_window.paused = "Az eredeti Theme Hospitalban a játékos csak a felsÅ‘ menüt használhatta ha a játék szüneteltetve volt. Ez az alapbeállítás a CorsixTH-ban is, de ha ezt bekapcsolod, akkor szüneteltetés alatt is elérsz minden menüt" update_window.caption = "Frissítés elérhetÅ‘!" update_window.new_version = "Új verzió:" update_window.current_version = "Jelenlegi verzió:" update_window.download = "Ugrás a letöltÅ‘oldalra" update_window.ignore = "Kihagy és tovább a fÅ‘menühöz" errors.fractured_bones = "MEGJEGYZÉS: a törött csontú nÅ‘i páciens animációja nem tökéletes" errors.alien_dna = "MEGJEGYZÉS: nincsenek megfelelÅ‘ animációink az idegen DNA-val rendelkezÅ‘ páciensek helyes megjelenítésére (például: leülés, ajtón kopogás, stb.), ezért amikor ezeket a cselekvéseket végzik olyankor átváltoznak normális kinézetűre, majd annak végeztével vissza. Az idegen DNA-val rendelkezÅ‘ páciensek csak akkor jelennek meg, ha a pálya file-jában ezt beállítottad" errors.load_quick_save = "Hiba történt: a gyorsmentés betöltése sikertelen volt, mivel nem állt rendelkezésre betölthetÅ‘ állás. Nincs ok az aggodalomra, ugyanis most létrehoztunk neked egyet!" folders_window.data_label = "TH adat" folders_window.music_location = "Válaszd ki a könyvtárat ahol a zenéidet tárolod" folders_window.music_label = "MP3-ak" folders_window.new_th_location = "Itt tudsz beállítani új Theme Hospital telepítési könyvtárat. Mihelyst kiválasztod a játék újra fog indulni." folders_window.caption = "Könyvtár elérési utak" folders_window.screenshots_label = "Kilopott képek" folders_window.font_label = "Betűtípus" folders_window.savegames_label = "Játékállások" folders_window.back = "Vissza" folders_window.savegames_location = "Válaszd ki a könyvtárat ahová a játékállásaid kerüljenek" folders_window.screenshots_location = "Válaszd ki a könyvtárat ahová a kilopott képeid kerüljenek" customise_window.average_contents = "Ãtlagos tartalmak" customise_window.option_on = "Be" customise_window.paused = "Építés szüneteltetés közben" customise_window.option_off = "Ki" customise_window.intro = "BevezetÅ‘ videó lejátszása" customise_window.caption = "Egyéni beállítások" customise_window.back = "Vissza" customise_window.movies = "Ãltalános átvezetÅ‘ videó vezérlÅ‘" customise_window.volume = "Halkítás gyorsbillentyű" customise_window.aliens = "Alien páciensek" customise_window.fractured_bones = "Törött Csontok" options_window.folder = "Könyvtárak" options_window.customise = "Személyre szab" options_window.audio = "FÅ‘ hangerÅ‘" menu_options.twentyfour_hour_clock = " 24 ÓRÃS MEGJELENÃTÉS" menu_options.wage_increase = " FIZETÉSIGÉNYEK" install.ok = "OK" install.cancel = "Mégse" adviser.research.drug_improved_1 = "A kutatórészleged feljavította a %s szer hatását." adviser.warnings.no_desk_7 = "Most hogy leraktál egy recepciós pultot mi lenne ha felvennél egy recepcióst is? Amíg ez meg nincs nem fogsz tudni páciensekkel foglalkozni!" adviser.warnings.researcher_needs_desk_1 = "A Kutatónak szüksége van egy íróasztalra aminél dolgozhatna." adviser.warnings.no_desk_6 = "Már van egy recepciósod. Mi lenne, ha leraknál neki egy recepciós pultot, ahol dolgozhatna?" adviser.warnings.nurse_needs_desk_1 = "Minden NÅ‘vérkének szüksége van egy saját íróasztalra, ahol dolgozhat." adviser.warnings.researcher_needs_desk_2 = "A kutatód boldog, hogy megengedted neki, hogy szünetet tartson. Ha a kutatórészleg személyzetének bÅ‘vítését fontolgatod ne felejtsd el, hogy mindegyiknek szüksége lesz külön asztalra." adviser.warnings.no_desk_5 = "Éppen ideje volt már, hamarosan megérkeznek az elsÅ‘ betegek!" adviser.warnings.no_desk_4 = "A recepciósnak szüksége van egy saját pultra, hogy üdvözölhesse az érkezÅ‘ betegeket" adviser.warnings.researcher_needs_desk_3 = "Minden Kutatónak szüksége van egy íróasztalra aminél dolgozhat." adviser.warnings.cannot_afford_2 = "Nincs elég pénzed a számládon ehhez a vásárláshoz!" adviser.warnings.nurse_needs_desk_2 = "A nÅ‘vérke boldog, hogy megengedted neki, hogy szünetet tartson. Ha a kórtermeid személyzetének bÅ‘vítését fontolgatod ne felejtsd el, hogy mindegyiknek szüksége lesz külön asztalra." CorsixTH-0.61/CorsixTH/Lua/languages/iberic_portuguese.lua000066400000000000000000001054731321660673500236020ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf, "Fabiomsouto" Copyright (c) 2011 Sérgio "Get_It" Ribeiro Copyright (c) 2012 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Language(utf8 "Português", "Portuguese", "pt", "pt") Inherit("english") ------------------------------- OVERRIDE ---------------------------------- adviser.warnings.money_low = "Estás a ficar sem dinheiro!" -- Funny. Exists in German translation, but not existent in english? -- TODO: tooltip.graphs.reputation -- this tooltip talks about hospital value. Actually it should say reputation. -- TODO: tooltip.status.close -- it's called status window, not overview window. -- The originals of these two contain one space too much fax.emergency.cure_not_possible_build = "Vais precisar de construir %s" fax.emergency.cure_not_possible_build_and_employ = "Vais precisar de construir um %s e empregar um %s" -- Improve tooltips in staff window to mention hidden features tooltip.staff_window.face = "A cara desta pessoa - clique para abrir o ecrã de gestão de pessoal" tooltip.staff_window.center_view = "Clique esquerdo para ir para onde está a pessoa, clique direito para navegador através dos funcionários" -- These strings are missing in some versions of TH (unpatched?) confirmation.restart_level = "Tem a certeza que deseja reiniciar este nível?" ------------------------------- NEW STRINGS ------------------------------- confirmation.maximum_screen_size = "A resolução de ecrã que escolheu é maior que 3000 x 2000. Resoluções mais altas são possíveis, mas requerem melhor hardware de forma a manter uma taxa de fotogramas (FPS) jogável. De certeza que deseja continuar?" confirmation.music_warning = "Antes de escolher usar mp3 para a música dentro do jogo, necessita de ter o smpeg.dll ou equivalente para o seu sistema operativo, caso contrário, não terá música no jogo. Deseja continuar?" menu_options_wage_increase.deny = " NEGAR " menu_options_wage_increase.grant = " PERMITIR " tooltip.options_window.audio_button = "Ligar ou desligar todo o som do jogo" tooltip.options_window.audio_toggle = "Ligar ou desligar" tooltip.options_window.folder_button = "Opções de pastas" tooltip.options_window.customise_button = "Mais opões que pode alterar para personalizar a sua experiência de jogo." tooltip.update_window.download = "Vá para a página de transferências para a última versão de CorsixTH" tooltip.update_window.ignore = "Ignorar esta actualização agora. Será notificado de novo na próxima vez que inicializar CorsixTH" tooltip.folders_window.browse_font = "Procurar outro tipo de letra (localização actual: %1% )" tooltip.folders_window.screenshots_location = "Por defeito, as capturas de ecrã são armazenadas numa pasta junto do ficheiro de configuração. Caso isto não seja apropriado, pode escolher a sua própria, simplesmente indique qual a pasta que deseja utilizar." tooltip.folders_window.reset_to_default = "Reinicializar a directoria para a localização por defeito" tooltip.folders_window.back = "Fechar este menu e voltar às definições." tooltip.folders_window.music_location = "Escolha a localização dos seus ficheiros mp3. A pasta já deve ter sido criada, e agora escolha o directório que acabou de criar." tooltip.folders_window.font_location = "Localização de um tipo de letra capaz de mostrar caracteres Unicode requeridos pela sua língua. Se isto não for especificado, não será capaz de escolher línguas que necessitam de mais caracteres que o jogo original consegue fornecer. Exemplo: Russo e Chinês." tooltip.folders_window.savegames_location = "Por defeito, os jogos gravados são armazenados numa pasta junto do ficheiro de configuração. Caso isto não seja apropriado, pode escolher a sua própria, simplesmente indique qual a pasta que deseja utilizar." tooltip.folders_window.browse_data = "Escolha outra localização da instalação do Theme Hospital (localização actual: %1% )" tooltip.folders_window.browse = "Escolha a localização da pasta" tooltip.folders_window.browse_screenshots = "Escolha outra localização para a pasta das capturas de ecrã (Localização actual: %1%) " tooltip.folders_window.browse_music = "Escolha outra localização para a pasta da música (Localização actual: %1%) " tooltip.folders_window.no_font_specified = "Nenhum tipo de letra especificado!" tooltip.folders_window.not_specified = "Nenhuma pasta especificada!" tooltip.folders_window.browse_saves = "Escolha outra localização para a pasta dos jogos gravados (Localização actual: %1%) " tooltip.folders_window.default = "Localização por defeito" tooltip.folders_window.data_location = "O directório da instalação do Theme Hospital original, que é necessário para correr o CorsixTH" tooltip.customise_window.aliens = "Devido à falta de animações apropriadas, colocamos por defeito que pacientes com ADN Extraterrestre só possam surgir numa emergência. Para permitir que estes pacientes possam visitar o hospital de outra forma, desligue esta opção." tooltip.customise_window.average_contents = "Se quer que o jogo lhe lembre que objectos adicionais costuma adicionar quando cria uma sala, ligue esta opção." tooltip.customise_window.back = "Fechar este menu e voltar às definições." tooltip.customise_window.movies = "Controle geral de vídeos, isto irá permitir desligar todos os vídeos" tooltip.customise_window.fractured_bones = "Devido a uma má animação colocamos por defeito que não existem pacientes femininas com Ossos Partidos. De forma a permitir que pacientes femininas com Ossos Partidos visitem o hospital, desligue esta opção." tooltip.customise_window.volume = "Se o botão para baixar o volume está a abrir também o livro médico, ligue esta opção para mudar o atalho para o livro médico para Shift + C" tooltip.customise_window.intro = "Ligar ou desligar o vídeo de introdução, o controle geral de vídeos tem que estar ligado se quer ver a introdução cada vez que começa o CorsixTH" tooltip.customise_window.paused = "No Theme Hospital o jogador apenas podia utilizar o menu de topo se o jogo estivesse pausado. Esta é também a opção por defeito no CorsixTH, mas ao activar esta opção, tudo é permitido com o jogo pausado." update_window.caption = "Actualização Disponível!" update_window.new_version = "Nova Versão:" update_window.current_version = "Versão Actual:" update_window.download = "Ir à página de transferências" update_window.ignore = "Saltar e ir para o menu principal" errors.fractured_bones = "AVISO: A animação para pacientes femininas com Ossos Partidos não é perfeita." errors.alien_dna = "AVISO: Não existem animação para pacientes Extraterrestres a sentarem-se, abrir ou bater em portas, etc. Então, como no Theme Hospital, para executarem estas animações eles ficam com um aspecto normal, e depois voltam ao aspecto original. Pacientes com ADN Extraterrestre só irão aparecer se estiver previsto no nível." errors.load_quick_save = "Erro, não foi possível carregar o quick save já que não existe. Nada de preocupações, já que criamos agora um para si!" folders_window.data_label = "Dados TH" folders_window.music_location = "Escolha a directoria que usar para a sua música" folders_window.music_label = "MP3's" folders_window.new_th_location = "Aqui pode especificar uma nova pasta de instalação do Theme Hospital. Assim que escolher a nova directoria, o jogo irá reiniciar." folders_window.caption = "Localizações de pastas" folders_window.screenshots_label = "Capturas de ecrã" folders_window.font_label = "Tipos de letra" folders_window.savegames_label = "Jogos gravados" folders_window.back = "Retroceder" folders_window.savegames_location = "Escolha a directoria que usar para jogos gravados" folders_window.screenshots_location = "Escolha a directoria que usar para capturas de ecrã" customise_window.average_contents = "Itens comuns" customise_window.option_on = "Ligado" customise_window.paused = "Construir com o jogo pausado" customise_window.option_off = "Desligado" customise_window.intro = "Reproduzir vídeo de introdução" customise_window.caption = "Definições Personalizadas" customise_window.back = "Retroceder" customise_window.movies = "Controle Geral de Vídeos" customise_window.volume = "Atalho para baixar o volume" customise_window.aliens = "Pacientes Extraterrestres" customise_window.fractured_bones = "Ossos Partidos" options_window.folder = "Pastas" options_window.customise = "Personalizar" options_window.audio = "Som Geral" menu_options.twentyfour_hour_clock = " RELÓGIO DE 24 HORAS " menu_options.wage_increase = " EXIGÊNCIAS SALARIAIS" install.ok = "OK" install.cancel = "Cancelar" adviser.research.drug_improved_1 = "A droga para %s foi melhorada pelo Departamento de Pesquisa" adviser.warnings.no_desk_7 = "Já construiu o balcão de atendimento, então que tal contratar uma recepcionista? Não irá atender clientes até que resolva isto!" adviser.warnings.researcher_needs_desk_1 = "Um Investigador precisa de ter uma secretária onde trabalhar." adviser.warnings.no_desk_6 = "Já tem a recepcionista, então que tal construir uma balcão de atendimento para ela trabalhar?" adviser.warnings.nurse_needs_desk_1 = "Cada Enfermeira necessita de uma secretária onde trabalhar." adviser.warnings.researcher_needs_desk_2 = "O seu Investigador está satisfeito que o tenha deixado descansar um pouco. Se quer ter mais pessoal a fazer pesquisa, então precisa de dar uma secretária a cada um deles." adviser.warnings.no_desk_5 = "Está na hora, devem estar a chegar pacientes a qualquer momento!" adviser.warnings.no_desk_4 = "Uma recepcionista precisa de ter o seu posto de trabalho para atender os pacientes assim que chegam." adviser.warnings.researcher_needs_desk_3 = "Cada Investigador necessita de uma secretária onde trabalhar." adviser.warnings.cannot_afford_2 = "Não tem dinheiro suficiente no banco para fazer essa compra!" adviser.warnings.nurse_needs_desk_2 = "A sua Enfermeira está satisfeita que a tenha deixado descansar um pouco. Se quer ter mais que uma a trabalhar na enfermaria, então precisa de dar uma secretária a cada uma delas." object.litter = "Lixo" tooltip.objects.litter = "Lixo: Deitado fora por um paciente porque não encontrou um caixote do lixo onde o colocar." menu_options.lock_windows = " BLOQUEAR JANELAS " menu_options_game_speed.pause = " PAUSA " menu_debug = { transparent_walls = " PAREDES TRANSPARENTES ", limit_camera = " LIMITAR CAMARA ", disable_salary_raise = " DESACTIVAR AUMENTO DOS SALÃRIOS ", make_debug_patient = " MAKE DEBUG PATIENT ", spawn_patient = " GERAR PACIENTE ", make_adviser_talk = " MAKE ADVISER TALK ", show_watch = " MOSTRAR RELÓGIO ", create_emergency = " CRIAR EMERGENCIA ", place_objects = " COLOCAR OBJECTOS ", dump_strings = " DUMP DAS STRINGS ", map_overlay = " OVERLAY DO MAPA ", sprite_viewer = " VISUALIZAR SPRITES ", } menu_debug_overlay = { none = " NENHUM ", flags = " FLAGS ", positions = " POSIÇOES ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE FLOOR ", byte_n_wall = " BYTE N WALL ", byte_w_wall = " BYTE W WALL ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " PARCEL ", } adviser.room_forbidden_non_reachable_parts = "Colocar o espaço neste sítio bloquearia o acesso a zonas do hospital." dynamic_info.patient.actions.no_gp_available = "À espera que seja construidos um consultório de CG." dynamic_info.staff.actions.heading_for = "Indo para %s" misc.not_yet_implemented = "(not yet implemented)" misc.no_heliport = "Hm... Ou não foram desocbertas novas doenças ou não existe um heliporto neste mapa." main_menu = { new_game = "Novo jogo", custom_level = "Nível Personalizado", load_game = "Carregar Jogo", options = "Opçoes", exit = "Sair", } tooltip.main_menu = { new_game = "Começar um jogo de raíz", custom_level = "Construir o meu hospital", load_game = "Carregar um jogo", options = "Ajustar preferencias", exit = "Nao, por favor, nao saias!", } load_game_window = { back = "Voltar", } tooltip.load_game_window = { load_game_number = "Carregar o jogo %d", load_autosave = "Carregar o jogo gravado automaticamente", back = "Fechar a janela de carregamento", } errors = { dialog_missing_graphics = "Desculpa, mas a versão de demonstração não tem este diálogo!", save_prefix = "Erro durante a gravação do jogo: ", load_prefix = "Erro durante o carregamento do jogos: ", } totd_window = { tips = { "Todos os hospitais precisam de uma recepção e de um consultório de CG para começar. Depois disso, depende do tipo de pacientes que recebes. Uma farmácia é sempre uma boa escolha, no entanto.", "Máquinas como a Bomba de Encher Cabeças precisam de manutenção. Contrata um ou dois funcionários para reparar as tuas máquinas, ou arriscas-te a que o pessoal ou os pacientes se aleijem quando elas avariarem.", "Após algum tempo, o teu pessoal vai ficar cansado. Constrói um Quarto do Pessoal, para que eles possam relaxar.", "Coloca radiadores em quantidade suficiente para que o teu pessoal e pacientes estejam quentinhos... caso contrário irao ficar aborrecidos!", "O nível de perícia de um médico influencia a qualidade e velocidade do seu diagnóstico. Coloca um médico com perícia nas salas de CGs, e não precisarás de tantas salas de diagnóstico.", "Médicos júniores e regulares podem aumentar a sua perícia se aprenderem com um consultante numa Sala de Treino. Se o consultante for especialista (cirurgiao, psiquiatra ou investigador), também ensinará a sua especialização aos seus pupilos.", "Já tentaste escrever o número de emergência (112) no fax? Não te esqueças de ligar as colunas!", "O menu de opçoes ainda não está implementado, mas podes ajustar algumas preferencias tais como resoluçao e língua no ficheiro config.txt na pasta do jogo.", "Seleccionaste outra linguagem além do Ingles, mas ves Ingles em todo o lado? Ajuda-nos a traduzir esse texto!", "A equipa do CorsixTH está à procura de reforços! Estás interessado em programar, traduzir ou criar arte gráfica para o CorsixTH? Contacta-nos no fórum, IRC (corsix-th no freenode) ou via Mailing List.", "Se encontrares um bug, diz-nos em: th-issues.corsix.org", "Tens que cumprir certos requisitos para poder avançar de nível. Consulta a tua janela de status para veres o progresso em relaçao aos objectivos do nível.", -- dicas juntas "Se quiseres alterar ou remover alguma sala existente,utiliza o botao editar na barra de ferramentas em baixo no teu ecra.", "Se tiveres muitos pacientes na fila de espera, podes saber rapidamente quais estao à espera de uma determinada sala passando com o cursor por cima desta.", "Clica numa porta para ver a lista de espera.Podes alterar a ordem dos pacientes ou mandá-los para outra sala.", "Staffs descontentes irao pedir aumentos de salário frequentemente , assegura que tens um bom ambiente de trabalho para isto não acontecer!", "Os pacientes ficarao com sede enquanto esperam no hospital,ainda mais se os radiadores estiverem muito quentes.Coloca máquinas de bebidas em locais estratégicos para ganhares mais uns trocos.", "Podes abortar o processo de diagnóstico para um paciente e tentar adivinhar a cura caso já tenhas descoberto a doença. Cuidado que este processo pode aumentar o risco de uma cura errada levando à morte do paciente.", "Emergencias sao uma boa forma de ganhar algum dinheiro extra,garante que o teu hospital tem condiçoes para as completar.", }, previous = "Dica anterior", next = "Próxima dica", } tooltip.totd_window = { previous = "Mostrar dica anterior", next = "Mostrar a próxima dica", } debug_patient_window.caption = "Debug Paciente" totd_window = { tips = { "Tens que cumprir certos requisitos para poder avançar de nível. Consulta a tua janela de status para veres o progresso em relaçao aos objectivos do nível.", "Se quiseres alterar ou remover alguma sala existente,utiliza o botao editar na barra de ferramentas em baixo no teu ecra.", "Se tiveres muitos pacientes na fila de espera, podes saber rapidamente quais estao à espera de uma determinada sala passando com o cursor por cima desta.", "Clica numa porta para ver a lista de espera.Podes alterar a ordem dos pacientes ou mandá-los para outra sala.", "Staffs descontentes irao pedir aumentos de salário frequentemente , assegura que tens um bom ambiente de trabalho para isto não acontecer!", "Os pacientes ficarao com sede enquanto esperam no hospital,ainda mais se os radiadores estiverem muito quentes.Coloca máquinas de bebidas em locais estratégicos para ganhares mais uns trocos.", "Podes abortar o processo de diagnóstico para um paciente e tentar adivinhar a cura caso já tenhas descoberto a doença. Cuidado que este processo pode aumentar o risco de uma cura errada levando à morte do paciente.", "Emergencias sao uma boa forma de ganhar algum dinheiro extra,garante que o teu hospital tem condiçoes para as completar.", }, } tooltip.casebook.cure_requirement.hire_staff = "Precisas de contratar alguém para fazer este tratamento." tooltip.casebook.cure_type.unknown = "Ainda não sabes tratar esta doença." tooltip.information.close = "Fecha o diálogo de informação" tooltip.load_game_window.load_game = "Ler jogo: %s" tooltip = { message = { button = "Clica com o botão esquerdo para abrir a mensagem.", button_dismiss = "Click esquerdo para abrir a mensagem,click direito para apagar", }, custom_game_window = { start_game_with_name = "Ir para o nível %s", }, cheats_window = { close = "Fecha a janela dos truques", cheats = { end_month = "Salta para o final do mês.", create_patient = "Cria um paciente no mapa.", money = "Adiciona 10000 à tua conta bancária", emergency = "Cria uma emergência", win_level = "Vence o nível.", lose_level = "Perde o nível.", vip = "Cria um VIP.", all_research = "Completa toda a pesquisa.", end_year = "Salta para o final do ano.", }, }, menu_list_window = { save_date = "Coloca a lista por data de modificação.", name = "Coloca a lista por nome.", back = "Fecha esta janela.", }, new_game_window = { hard = "Se estás habituado a este tipo de jogos e procuras um desafio escolhe esta opçao.", cancel = "Oh mas eu não queria começar um jogo de novo!", tutorial = "Se precisas de umas dicas para começar a jogar,marca esta caixa.", easy = "Se és novo em jogos de simulaçoes,esta é a opçao para ti.", medium = "Se já te sentes à vontade tenta a opção média!", }, save_game_window = { new_save_game = "Nome para salvar o jogo.", save_game = "Gravar por cima da gravação? %s", }, calls_dispatcher = { assigned = "Esta caixa estrá marcada, se alguém esttiver a tratar da tarefa correspondente.", task = "Lista de tarefas - Clica em tarefas para abrir as tarefas atribuídas ao staff e encontrares a localização de determinada tarefa.", close = "Fecha a janela de diálogo do expedidor de chamadas.", }, research_policy = { research_progress = "Progresso em relação à próxima descoberta: %1%/%2%", no_research = "Não está a ser feita nenhuma pesquisa de momento.", }, lua_console = { textbox = "Coloca aqui o código Lua para executar", execute_code = "Executa o código colocado.", close = "Fecha a consola.", }, fax = { close = "Fecha esta janela sem apagar a mensagem.", }, options_window = { fullscreen_button = "Clica para modo de tela cheia", original_path = "A directoria da instalaçao original de Theme Hospital", browse = "Procura outra localizaçao da instalaçao original. %1%", change_resolution = "Altera a resoluçao da janela para as dimensoes colocadas à esquerda", height = "Coloca a altura desejada.", width = "Coloca a largura desejada.", language = "Escolhe %s como a tua linguagem.", back = "Fecha a janela de opçoes.", }, } custom_game_window.caption = "Jogo Customizado" cheats_window = { cheats = { end_month = "Fim do Mês", create_patient = "Criar Paciente", money = "Truque para Dinheiro", emergency = "Criar emergência", win_level = "Vencer nível", lose_level = "Perder nível", vip = "Criar VIP", all_research = "Pesquisa Completa", end_year = "Fim do Ano", }, close = "Fechar", caption = "Truques", cheated = { no = "Truques usados?: Nao", yes = "Truques usados?: Sim", }, warning = "Aviso:Se utilizares truques não irás ganhar pontos de reputação no final do nível!", } errors = { unavailable_screen_size = "Esta resolução não está disponível no modo de tela cheia.", maximum_screen_size = "Resolução máxima de 3000x2000.", map_file_missing = "Não foi encontrado o ficheiro do mapa %s para este nível!", minimum_screen_size = "Resolução mínima de 640x480.", } date_format.daymonth = "%1% - %2% -" menu_debug = { lua_console = " (F12) CONSOLA LUA", make_debug_fax = " DEBUG FAX", calls_dispatcher = " CHAMAR EXPEDIDOR", cheats = " (F11) TRUQUES", dump_gamelog = " (CTRL+D) CRIAR LOG DO JOGO", jump_to_level = " SALTAR PARA OUTRO NIVEL", } menu_options = { edge_scrolling = " EDGE SCROLLING ", settings = " PREFERENCIAS ", } lua_console = { execute_code = "Executar", close = "Fechar", } install= { exit = "Sair", th_directory = "CorsixTH precisa dos ficheiros de dados da instalação original de Theme Hospital(ou demo) para funcionar. Localize a sua instalação atráves da caixa em baixo.", title = "--------------------------------- Instalação CorsixTH ---------------------------------", } load_game_window.caption = "Ler Jogo" adviser = { cheats = { th_cheat = "Parabéns batoteiro! Acabaste de desbloquear os truques!", hairyitis_cheat = "Activado cheat da doença Olfatis", roujin_on_cheat = "Activado o desafio Roujin! Boa sorte...", crazy_on_cheat = "Oh não! Os teus médicos estão malucos!", bloaty_off_cheat = "Desactivado truque das Cabeças Gigantes!", bloaty_cheat = "Activado truque das Cabeças Gigantes!", crazy_off_cheat = "Ufa... os teus médicos voltaram ao normal.", roujin_off_cheat = "Desafio Roujin desactivado.", hairyitis_off_cheat = "Desactivado truque da doença Olfatis", }, warnings = { no_desk_2 = "Bom trabalho! Deve ser um recorde mundial: quase um ano completo e não há pacientes! Se desejas continuar a gerir este hospital tens que contratar uma recepcionista e construir uma recepção para receberes os pacientes!", no_desk = "Constrói uma recepçao e uma recepcionista para começar!", no_desk_1 = "Se queres que os pacientes venham ao teu hospital vais precisar de uma recepçao e uma recepcionista!", }, } calls_dispatcher = { repair = "Reparar %s", summary = "%d Chamadas; %d atribuídas", close = "Fechar", watering = "Regar @ %d,%d", staff = "%s - %s ", } information = { level_lost = { "Que chatice! Perdeste. Mais sorte para a próxima!", "Razões da derrota:", reputation = "A tua reputação ficou abaixo de %d.", balance = "A tua conta bancària ficou abaixo de %d.", percentage_killed = "Mataste mais do que %d por cento dos pacientes.", }, cannot_restart = "Infelizmente este jogo customizado foi gravado antes da implementação da função de reinício.", custom_game = "Bem-vindo ao CorsixTH. Diverte-te neste mapa customizado!", } new_game_window = { hard = "Consultor (Difícil)", cancel = "Cancelar", tutorial = "Tutorial ", easy = "Junior (Fácil)", medium = "Doutor (Médio)", } options_window = { fullscreen = "Tela cheia", cancel = "Cancelar", browse = "Procurar...", width = "Largura", height = "Altura", new_th_directory = "Aqui podes escolher uma nova localizaçao da instalaçao de Theme Hospital,assim que o fizeres o jogo será reiniciado.", change_resolution = "Alterar resoluçao", back = "Voltar", } menu_list_window = { save_date = "Modificado", name = "Nome", back = "Voltar", } save_game_window = { caption = "Gravar jogo", new_save_game = "Nova gravaçao", } fax.emergency.num_disease_singular = "Existe uma pessoa com %s e necessita de atenção imediata!" fax.choices = { decline_new_level = "Continuar a jogar", accept_new_level = "Avançar para o nível seguinte", return_to_main_menu = "Voltar para o menu principal", } menu_debug_overlay.heat = " TEMPERATURA " confirmation.abort_edit_room = "Estás a construir ou a editar uma sala. Se todos os objectos necessários estiverem colocados a sala estará terminada, caso contrário será eliminada. Continuar?" confirmation.needs_restart = "Estas alterações requerem que reinicies o jogo,O progresso não gravado será perdido. Desejas continuar?" dynamic_info.staff.actions.fired = "Despedido" introduction_texts.demo = "Bem-vindo ao hospital do demo!" .. "Infelizmente este demo só tem este nível.Contudo existe aqui muito trabalho para te manter ocupado!" .. "Encontrarás várias doenças que requerem salas diferentes para os seus tratamentos.Ao longo do tempo " .. "irão ocorrer algumas emergências e precisarás de descobrir novos tratamentos atráves da sala de pesquisa." .. "O teu objectivo é ganhar 100,000$,ter um hospital avaliado em 70,000$,uma reputação de 700 e uma cura de 75% dos pacientes." .. "Garante que a tua reputação não cai abaixo de 300 e que não mates 40% dos teus pacientes senão perderás o nível." .. "Boa sorte!" letter = { custom_level_completed = "Bom trabalho!Completaste todos os objectivos deste nível!", dear_player = "Caro %s", return_to_main_menu = "Desejas regressar ao menu principal ou continuar a jogar?", } staff_class = { nurse = "Enfermeira", doctor = "Doutor", handyman = "Contínuo", receptionist = "Recepcionista", surgeon = "Cirurgião", } -- Staff titles -- these are titles used e.g. in the dynamic info bar staff_title = { receptionist = "Recepcionista", general = "General", -- unused? nurse = "Enfermeira", junior = "Junior", doctor = "Doutor", surgeon = "Cirurgião", psychiatrist = "Psiquiatra", consultant = "Consultor", researcher = "Pesquisador", } staff_list = { morale = "MORAL", tiredness = "CANSAÇO", skill = "QUALIFICAÇOES", total_wages = "SALÃRIO", } -- Objects object = { desk = "Secretária", cabinet = "Arquivador", door = "Porta", bench = "Banco", table1 = "Mesa", -- unused object chair = "Cadeira", drinks_machine = "Máquina de Bebidas", bed = "Cama", inflator = "Inflador", pool_table = "Mesa de Bilhar", reception_desk = "Recepçao", table2 = "Mesa", -- unused object & duplicate cardio = "Cardio", scanner = "Scanner", console = "Consola", screen = "Ecra", litter_bomb = "Bomba de lixo", couch = "Sofá", sofa = "Sofá", crash_trolley = "Trolley", tv = "TV", ultrascanner = "Ultrascanner", dna_fixer = "Fixador de DNA", cast_remover = "Removedor de Gesso", hair_restorer = "Recuperador de Cabelo", slicer = "Fatiador", x_ray = "Raio-X", radiation_shield = "Escudo de Radiaçao", x_ray_viewer = "Visualizador de Radiação", operating_table = "Mesa de Operação", lamp = "Lampâda", -- unused object toilet_sink = "Pia", op_sink1 = "Pia", op_sink2 = "Pia", surgeon_screen = "Ecra de Operaçao", lecture_chair = "Cadeira de aluno", projector = "Projector", bed2 = "Cama", -- unused duplicate pharmacy_cabinet = "Gabinete de Farmácia", computer = "Computador", atom_analyser = "Analisador de Ãtomos", blood_machine = "Máquina de Análise Sanguínea", fire_extinguisher = "Extintor", radiator = "Radiador", plant = "Planta", electrolyser = "Electrolisador", jelly_moulder = "Moldador gelatinoso", gates_of_hell = "Portões do Inferno", bed3 = "Cama", -- unused duplicate bin = "Balde do lixo", toilet = "WC", swing_door1 = "Porta", swing_door2 = "Porta", shower = "Chuveiro", auto_autopsy = "Auto-Autópsia", bookcase = "Estante", video_game = "Máquina de Arcade", entrance_left = "Entrada esquerda", entrance_right = "Entrada direita", skeleton = "Esqueleto", comfortable_chair = "Cadeira de conforto", } -- Months months = { "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez", } -- Rooms short -- NB: includes some special "rooms" -- reception, destroyed room and "corridor objects" rooms_short = { reception = "Recepçao", destroyed = "Destruído", corridor_objects = "Objectos de Corredor", gps_office = "Consultório Geral", psychiatric = "Psiquiatria", ward = "Enfermaria", operating_theatre = "Sala de Operações", pharmacy = "Farmácia", cardiogram = "Cardio", scanner = "Scanner", ultrascan = "Ultrascanner", blood_machine = "Sala de Análises Sanguíneas", x_ray = "Raio-X", inflation = "Inflador", dna_fixer = "Fixador de DNA", hair_restoration = "Recuperador de Cabelo", tongue_clinic = "Fatiador", fracture_clinic = "Clínica de Fracturas", training_room = "Sala de Aprendizagem", electrolysis = "Sala de Electrolisador", jelly_vat = "Moldador Gelatinoso", staffroom = "Sala do Pessoal", -- rehabilitation = "Reabilitação", -- unused general_diag = "Diagnóstico Geral", research_room = "Sala de Pesquisa", toilets = "Casas de Banho", decontamination = "Descontaminação", } -- Menu Options Game Speed menu_options_game_speed = { slowest = " MUITO LENTO ", slower = " LENTO ", normal = " NORMAL ", max_speed = " RAPIDO ", and_then_some_more = " AINDA MAIS RAPIDO ", } -- Menu Display menu_display = { high_res = " ALTA RESOLUÇAO ", mcga_lo_res = " BAIXA RESOLUCAO ", shadows = " SOMBRAS ", } -- Menu Charts menu_charts = { statement = " INDICACOES ", casebook = " PONTUARIO DE DOENÇAS ", policy = " POLITICAS DO HOSPITAL ", research = " PESQUISA ", graphs = " GRAFICOS ", staff_listing = " LISTA DO STAFF ", bank_manager = " CONTA BANCARIA ", status = " STATUS ", briefing = " BRIEFING ", } menu = { file = " FICHEIRO ", options = " OPÇOES ", display = " DISPLAY", charts = " TABELAS ", debug = " DEBUG ", } -- Menu File menu_file = { load = " LER JOGO ", save = " SALVAR JOGO ", restart = " REINICIAR ", quit = " SAIR ", } -- Menu Options menu_options = { sound = " SOM ", announcements = " ANUNCIOS ", music = " MUSICA ", sound_vol = " VOLUME DOS SONS ", announcements_vol = " SOM DOS ANUNCIOS ", music_vol = " VOLUME DA MUSICA ", autosave = " AUTOSAVE ", game_speed = " VELOCIDADE DO JOGO ", jukebox = " JUKEBOX ", } -- Menu Options Volume menu_options_volume = { [10] = " 10% ", [20] = " 20% ", [30] = " 30% ", [40] = " 40% ", [50] = " 50% ", [60] = " 60% ", [70] = " 70% ", [80] = " 80% ", [90] = " 90% ", [100] = " 100% ", } confirmation = { abort_edit_room = "Estás a construir ou a editar uma sala. Se todos os objectos necessários estiverem colocados a sala estará terminada, caso contrário será eliminada. Continuar?", return_to_blueprint = "Tens a certeza que desejas voltar ao modo de desenho?", restart_level = "Tens a certeza que queres reiniciar o nível?", delete_room = "Desejas apagar esta sala?", quit = "Queres mesmo sair do jogo?", needs_restart = "Estas alterações requerem que reinicies o jogo,O progresso não gravado será perdido. Desejas continuar?", overwrite_save = "Já existe uma gravação nesta slot.Desejas gravar por cima?", sack_staff = "Queres mesmo despedir este membro do staff?", replace_machine = "Queres mesmo repor %s por $%d?", } vip_names = { [1] = "Presidente da Cruz Vermelha", [2] = "Ricardo Araújo Pereira", [3] = "D. Duarte Pio de Bragança", [4] = "Joe Berardo", [5] = "José Mourinho", [6] = "Alberto João Jardim", [7] = "Marcelo Rebelo de Sousa", [8] = "Cavaco Silva", [9] = "Cristiano Ronaldo", [10] = "Tradutor Filipe Carvalho", health_minister = "Ministro da Saúde", } -- Rooms room_classes = { -- S[19][2] -- "corridors" - unused for now diagnosis = "Diagnóstico", treatment = "Tratamento", clinics = "Clínicas", facilities = "Acomodaçoes", } CorsixTH-0.61/CorsixTH/Lua/languages/italian.lua000066400000000000000000001075431321660673500215040ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Language("Italiano", "Italian", "it", "ita") Inherit("english") Inherit("original_strings", 3) Encoding(utf8) -- override -- TODO? Any more original strings that are off in italian translation? adviser.warnings.money_low = "Stai finendo i soldi!" -- TODO: tooltip.graphs.reputation -- this tooltip talks about hospital value. Actually it should say reputation. -- TODO: tooltip.status.close -- it's called status window, not overview window. -- The originals of these two contain one space too much fax.emergency.cure_not_possible_build = "E' necessario costruire un %s" fax.emergency.cure_not_possible_build_and_employ = "E' necessario costruire un %s e assumere un %s" -- An override for the squits becoming the the squits see issue 1646 adviser.research.drug_improved_1 = "Il medicinale per %s è stato migliorato dal Reparto Ricerca." ------------------------------- NEW STRINGS ------------------------------- date_format = { daymonth = "%1% %2:months%", } object.litter = "Spazzatura" tooltip.objects.litter = "Spazzatura: Lasciata sul pavimento da un paziente perché non ha trovato un cestino in cui gettarla." tooltip.fax.close = "Chiudi questa finestra senza cancellare il messaggio" tooltip.message.button = "Click sinistro per aprire il messaggio" tooltip.message.button_dismiss = "Click sinistro per aprire il messaggio, click destro per eliminarlo" tooltip.casebook.cure_requirement.hire_staff = "Hai bisogno di assumere personale per somministrare questa cura" tooltip.casebook.cure_type.unknown = "Ancora non sei a conoscenza di un modo per curare questa malattia" tooltip.research_policy.no_research = "Non c'è nessuna ricerca in corso in questa categoria al momento" tooltip.research_policy.research_progress = "Progresso verso una nuova scoperta in questa categoria: %1%/%2%" menu["player_count"] = "CONTA GIOCATORI" menu_file = { load = " (SHIFT+L) CARICA ", save = " (SHIFT+S) SALVA ", restart = " (SHIFT+R) RIAVVIA", quit = " (SHIFT+Q) ESCI " } menu_options = { sound = " (ALT+S) SONORO ", announcements = " (ALT+A) ANNUNCI ", music = " (ALT+M) MUSICA ", jukebox = " (J) JUKEBOX ", lock_windows = " BLOCCA FINESTRE ", edge_scrolling = " SCORRIMENTO AI LATI ", adviser_disabled = " (SHIFT+A) CONSIGLIERE ", warmth_colors = " COLORI RISCALDAMENTO ", wage_increase = " RICHIESTE STIPENDI", twentyfour_hour_clock = " OROLOGIO 24 ORE " } menu_options_game_speed = { pause = " (P) PAUSA ", slowest = " (1) LENTISSIMO ", slower = " (2) LENTO ", normal = " (3) NORMALE ", max_speed = " (4) VELOCITA' MASSIMA ", and_then_some_more = " (5) E ANCORA DI PIU' ", } menu_options_warmth_colors = { choice_1 = " ROSSO ", choice_2 = " BLU VERDE ROSSO ", choice_3 = " GIALLO ARANCIONE ROSSO ", } menu_options_wage_increase = { grant = " CONCEDI ", deny = " NEGA ", } -- Add F-keys to entries in charts menu (except briefing), also town_map was added. menu_charts = { bank_manager = " (F1) BANCA ", statement = " (F2) RENDICONTO ", staff_listing = " (F3) PERSONALE ", town_map = " (F4) MAPPA CITTADINA ", casebook = " (F5) REGISTRO CURE ", research = " (F6) RICERCA ", status = " (F7) RIEPILOGO ", graphs = " (F8) GRAFICI ", policy = " (F9) GESTIONE ", } -- The demo does not contain this string menu_file.restart = " RIAVVIA " menu_debug = { jump_to_level = " SALTA AL LIVELLO ", connect_debugger = " (CTRL + C) CONNETTI SERVER LUA DBGp ", transparent_walls = " (X) MURA TRASPARENTI ", limit_camera = " LIMITA TELECAMERA ", disable_salary_raise = " DISABILITA AUMENTI DI SALARIO ", make_debug_fax = " CREA FAX DI DEBUG ", make_debug_patient = " CREA UN PAZIENTE DI DEBUG ", cheats = " (F11) CHEAT ", lua_console = " (F12) CONSOLE LUA ", debug_script = " (SHIFT + D) ESEGUI SCRIPT DI DEBUG ", calls_dispatcher = " GESTORE CHIAMATE ", dump_strings = " FAI IL DUMP DELLE STRINGHE ", dump_gamelog = " (CTRL+D) FAI IL DUMP DEL GAMELOG ", map_overlay = " MAPPA IN SOVRAPPOSIZIONE ", sprite_viewer = " VISUALIZZATORE SPRITE ", } menu_debug_overlay = { none = " NESSUN OVERLAY ", flags = " FLAGS ", positions = " POSIZIONI ", heat = " TEMPERATURA ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE PAVIMENTO ", byte_n_wall = " BYTE N MURO ", byte_w_wall = " BYTE W MURO ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " LOTTO ", } menu_player_count = { players_1 = " 1 GIOCATORE ", players_2 = " 2 GIOCATORI ", players_3 = " 3 GIOCATORI ", players_4 = " 4 GIOCATORI ", } adviser = { room_forbidden_non_reachable_parts = "Mettere la stanza in questa posizione risulterebbe nel blocco dell'accesso ad alcune parti dell'ospedale.", warnings = { no_desk = "Prima o poi dovrai costruire un banco di accettazione ed assumere una receptionist!", no_desk_1 = "Se vuoi che i pazienti vengano nel tuo ospedale dovrai assumere una receptionist e costruirle una scrivania dove farla lavorare!", no_desk_2 = "Ben fatto, deve essere un record mondiale: quasi un anno e nessun paziente! Se vuoi continuare come Manager di questo ospedale dovrai assumere una receptionist e costruire un banco di accettazione dove farla lavorare!", no_desk_3 = "Grandioso, quasi un anno e ancora non hai personale all'accettazione! Come ti aspetti di trovare pazienti, ora vedi di rimediare e di non fare più casini!", no_desk_4 = "Una receptionist ha bisogno della sua stazione di lavoro per accogliere i clienti quando arrivano", no_desk_5 = "Beh, era ora, presto dovresti cominciare a vedere arrivare i pazienti!", no_desk_6 = "Hai una receptionist, che ne dici quindi di costruirle un banco di accettazione dove poter lavorare?", no_desk_7 = "Hai costruito il banco di accettazione, quindi che ne dici di assumere una receptionist? Non vedrai pazienti finché non risolvi questa cosa!", cannot_afford = "Non hai abbastanza soldi in banca per assumere quella persona!", -- I can't see anything like this in the original strings cannot_afford_2 = "Non hai abbastanza soldi in banca per fare quell'acquisto!", falling_1 = "Ehi! Non è divertente, attento a dove clicchi: qualcuno potrebbe farsi male!", falling_2 = "Basta fare casini, a te piacerebbe?", falling_3 = "Ahi, deve far male, qualcuno chiami un dottore!", falling_4 = "Questo è un ospedale, non un parco giochi!", falling_5 = "Non è il luogo adatto per far cadere le persone, sono malate sai!", falling_6 = "Non è una sala da bowling, i malati non dovrebbero essere trattati così!", research_screen_open_1 = "Devi costruire un Reparto Ricerca prima di poter accedere alla schermata Ricerca.", research_screen_open_2 = "La Ricerca è disabilitata in questo livello.", researcher_needs_desk_1 = "Un ricercatore ha bisogno di una scrivania su cui lavorare.", researcher_needs_desk_2 = "Al tuo ricercatore ha fatto piacere tu gli abbia concesso una pausa. Se invece volevi assegnare più personale alla ricerca devi procurare a ognuno di loro una scrivania sulla quale lavorare.", researcher_needs_desk_3 = "Ogni ricercatore ha bisogno della propria scrivania su cui poter lavorare.", nurse_needs_desk_1 = "Ogni infermiera ha bisogno della propria scrivania su cui poter lavorare.", nurse_needs_desk_2 = "Alla tua infermiera ha fatto piacere tu le abbia concesso una pausa. Se invece volevi assegnare più personale al reparto devi procurare a ognuna di loro una scrivania sulla quale lavorare.", low_prices = "I tuoi prezzi per %s sono troppo bassi. Questo attirerà più persone nel tuo ospedale, ma non guadagnerai molto da ognuno di loro.", high_prices = "I tuoi prezzi per %s sono alti. In questo modo vedrai buoni guadagni sul breve periodo, ma a lungo andare spingerai molte persone ad andarsene.", fair_prices = "I tuoi prezzi per %s sembrano giusti ed equilibrati.", patient_not_paying = "Un paziente è andato via senza pagare %s perché è troppo costosa!", }, cheats = { th_cheat = "Congratulazioni, hai sbloccato i cheat!", roujin_on_cheat = "Sfida di Roujin attivata! Buona fortuna...", roujin_off_cheat = "Sfida di Roujin disattivata.", }, } dynamic_info.patient.actions.no_gp_available = "Aspettando che venga costruito un ambulatorio" dynamic_info.staff.actions.heading_for = "Andando verso %s" dynamic_info.staff.actions.fired = "Licenziato" dynamic_info.patient.actions.epidemic_vaccinated = "Non sono più infetto" progress_report.free_build = "COSTRUZIONE LIBERA" fax = { choices = { return_to_main_menu = "Ritorna al menu principale", accept_new_level = "Vai al livello successivo", decline_new_level = "Continua a giocare un altro po'", }, emergency = { num_disease_singular = "C'è una persona con %s che richiede la tua immediata attenzione.", free_build = "Se hai successo la tua reputazione aumenterà, ma se fallisci la tua reputazione verrà intaccata pesantemente.", }, vip_visit_result = { remarks = { free_build = { "Hai proprio un bell'ospedale! Anche se non è difficile ottenerlo con fondi illimitati, eh?", "Non sono un economista, ma penso che anch'io avrei potuto dirigere quest'ospedale, non so se mi spiego...", "Un ospedale molto ben gestito. Attento alla crisi economica però! Ah, giusto... non te ne sei dovuto preoccupare.", } } } } letter = { dear_player = "Caro %s\n", custom_level_completed = "Ben fatto! Hai completato tutti gli obiettivi di questo livello personalizzato!", return_to_main_menu = "Vuoi tornare al menu principale o vuoi continuare a giocare?", campaign_level_completed = "Ottimo lavoro! Hai battuto il livello. Ma non è ancora finita!\n Saresti interessato a una posizione nell'ospedale %s?", campaign_completed = "Incredibile! Sei riuscito a completare tutti i livelli. Ora puoi rilassarti e divertirti a riempire i forum su internet con i tuoi fantastici risultati. Buona fortuna!", campaign_level_missing = "Mi dispiace, ma sembra che il livello successivo di questa campagna non sia presente. (Nome: %s)", } install = { title = "----------------------------- Installazione CorsixTH -----------------------------", th_directory = "CorsixTH ha bisogno di una copia dei file dati di Theme Hospital (o della demo) per essere eseguito. Per favore indica la posizione della cartella di installazione di Theme Hospital.", ok = "Ok", exit = "Esci", cancel = "Annulla", } misc.not_yet_implemented = "(non ancora implementato)" misc.no_heliport = "O non è stata ancora scoperta nessuna malattia, oppure non c'è un eliporto sulla mappa. Oppure potrebbe essere necessario costruire un banco accettazione e assumere una receptionist" main_menu = { new_game = "Nuova partita", custom_campaign = "Campagna personalizzata", custom_level = "Livello personalizzato", continue = "Continua partita", load_game = "Carica partita", options = "Opzioni", map_edit = "Editor mappe", savegame_version = "Versione salvataggi: ", version = "Versione: ", exit = "Esci", } tooltip.main_menu = { new_game = "Inizia una nuova partita", custom_campaign = "Gioca una campagna creata dalla comunità", custom_level = "Costruisci il tuo ospedale in un livello personalizzato", load_game = "Carica una partita salvata in precedenza", options = "Modifica le impostazioni", map_edit = "Crea una mappa personalizzata", exit = "No, per favore non andartene!", } load_game_window = { caption = "Carica Partita (%1%)", } tooltip.load_game_window = { load_game = "Carica la partita %s", load_game_number = "Carica la partita %d", load_autosave = "Carica autosalvataggio", } custom_game_window = { caption = "Partita personalizzata", free_build = "Costruzione Libera", load_selected_level = "Inizia", } tooltip.custom_game_window = { choose_game = "Clicca su un livello per avere più informazioni", free_build = "Spunta questa casella per giocare senza soldi, né vittoria o sconfitta", load_selected_level = "Carica e gioca il livello selezionato", } custom_campaign_window = { caption = "Campagna personalizzata", start_selected_campaign = "Inizia campagna", } tooltip.custom_campaign_window = { choose_campaign = "Seleziona una campagna per avere più informazioni", start_selected_campaign = "Carica il primo livello di questa campagna", } save_game_window = { caption = "Salva Partita (%1%)", new_save_game = "Nuovo Salvataggio", } tooltip.save_game_window = { save_game = "Sovrascrivere salvataggio %s", new_save_game = "Inserisci il nome per un nuovo salvataggio", } save_map_window = { caption = "Salva mappa (%1%)", new_map = "Nuova mappa", } tooltip.save_map_window = { map = "Sovrascrivi mappa %s", new_map = "Inserisci il nome per salvataggio mappa", } menu_list_window = { name = "Nome", save_date = "Modificata", back = "Indietro", } tooltip.menu_list_window = { name = "Clicca qui per ordinare la lista in ordine alfabetico", save_date = "Clicca qui per ordinare la lista in base alla data dell'ultima modifica", back = "Chiudi questa finestra", } -- Width / height's translation doesn't fit - had to write "larghezza" and "altezza" shorter options_window = { caption = "Opzioni", option_on = "On", option_off = "Off", fullscreen = "Schermo intero", resolution = "Risoluzione", custom_resolution = "Personalizzata...", width = "Largh", height = "Alt", audio = "Audio globale", customise = "Personalizza", folder = "Cartelle", language = "Lingua del gioco", apply = "Applica", cancel = "Cancella", back = "Indietro", } tooltip.options_window = { fullscreen = "Decide se il gioco verrà eseguito a tutto schermo o in finestra", fullscreen_button = "Clicca per selezionare o deselezionare la modalità a schermo intero", resolution = "La risoluzione a cui il gioco dovrebbe essere eseguito", select_resolution = "Seleziona una nuova risoluzione", width = "Inserisci la larghezza dello schermo desiderata", height = "Inserisci l'altezza dello schermo desiderata", apply = "Applica la risoluzione inserita", cancel = "Esci senza cambiare la risoluzione", audio_button = "Attiva o disattiva tutti i suoni del gioco", audio_toggle = "Audio on o off", customise_button = "Altre impostazioni che puoi cambiare per personalizzare la tua esperienza di gioco", folder_button = "Opzioni cartelle", language = "La lingua in cui verrà mostrato il testo", select_language = "Seleziona la lingua del gioco", language_dropdown_item = "Seleziona %s come lingua", back = "Chiudi la finestra delle opzioni", } customise_window = { caption = "Impostazioni personalizzate", option_on = "On", option_off = "Off", back = "Indietro", movies = "Controllo filmati globale", intro = "Riproduci filmato introduttivo", paused = "Costruzione durante la pausa", volume = "Scorciatoia volume basso", aliens = "Pazienti alieni", fractured_bones = "Ossa Rotte", average_contents = "Oggetti frequenti", } tooltip.customise_window = { movies = "Controllo filmati globale, questo ti permette di disattivare tutti i filmati", intro = "Disattiva o attiva la riproduzione del filmato introduttivo. I filmati globali devono essere attivati se vuoi che il filmato introduttiva venga riprodotto ogni volta che avvii CorsixTH", paused = "In Theme Hospital il giocatore può usare il menù superiore solo quando il gioco era in pausa. Questa è l'impostazione predefinita anche in CorsixTH, ma attivando questa opzione non ci saranno limiti di utilizzo mentre il gioco è in pausa", volume = "Se il pulsante per abbassare il volume ti fa aprire anche il Registro Cure, attiva questa opzione per impostare Shift + C come scorciatoia per il Registro Cure", aliens = "A causa dell'assenza delle giuste animazioni abbiamo fatto sì che i pazienti con DNA Alieno possano arrivare solo con un'emergenza. Per permettere ai pazienti con DNA Alieno di visitare il tuo ospedale anche al di fuori delle emergenze disattiva questa opzione", fractured_bones = "A causa della scarsa qualità di alcune animazioni abbiamo fatto sì che non ci siano pazienti donne con Ossa Rotte. Per far sì che donne con Ossa Rotte visitino il tuo ospedale, disattiva questa opzione", average_contents = "Se vuoi che il gioco ricordi quali oggetti extra aggiungi di solito quando crei una stanza attiva questa opzione", back = "Chiudi questo menù e torna al menù delle impostazioni", } folders_window = { caption = "Posizione cartelle", data_label = "Posizione TH", font_label = "Font", music_label = "MP3", savegames_label = "Salvataggi", screenshots_label = "Screenshot", -- next four are the captions for the browser window, which are called from the folder setting menu new_th_location = "Qui puoi specificare una nuova cartella dell'installazione di Theme Hospital. Appena selezionerai una nuova cartella il gioco verrà riavviato.", savegames_location = "Seleziona la cartella che vuoi usare per i salvataggi", music_location = "Seleziona la cartella che vuoi usare per la tua musica", screenshots_location = "Seleziona la cartella che vuoi usare per i tuoi screenshot", back = "Indietro", } tooltip.folders_window = { browse = "Sfoglia le cartelle", data_location = "La cartella dell'installazione originale di Theme Hospital, che è richiesto per eseguire CorsixTH", font_location = "Posizione di un font che è in grado di mostrare i caratteri Unicode richiesti dalla tua lingua. Se non specificata, non potrai scegliere lingue che hanno bisogno di più caratteri rispetto a quelli di cui dispone il gioco originale. Esempio: Russo e Cinese", savegames_location = "Di default la cartella dei salvataggi è posizionata vicina al file di configurazione e ci vengono messi i file di salvataggio. Se non dovesse andare bene puoi scegliere la cartella che preferisci, basta selezionare quella che vuoi usare.", screenshots_location = "Di default gli screenshot vengono salvati in una cartella vicina al file di configurazione. Se non dovesse andare bene puoi scegliere la cartella che preferisci, basta selezionare quella che vuoi usare.", music_location = "Seleziona la posizione per i tuoi file MP3. Devi aver già creato la cartella e poi selezionare la cartella che hai creato.", browse_data = "Sfoglia per selezionare un'altra posizione di un'installazione di Theme Hospital (posizione attuale: %1%)", browse_font = "Sfoglia per selezionare un altro file font ( posizione attuale: %1% )", browse_saves = "Sfoglia per selezionare un'altra posizione per la tua cartella dei salvataggi ( Posizione attuale: %1% ) ", browse_screenshots = "Sfoglia per selezionare un'altra posizione per la tua cartella degli screenshot ( Posizione attuale: %1% ) ", browse_music = "Sfoglia per selezionare un'altra posizione per la tua cartella della musica ( Posizione attuale: %1% ) ", no_font_specified = "Non è stata ancora specificata nessuna posizione per il font!", not_specified = "Non è stata ancora specificata nessuna posizione per la cartella!", default = "Posizione di default", reset_to_default = "Ripristina la cartella alla sua posizione di default", -- original_path = "The currently chosen directory of the original Theme Hospital installation", -- where is this used, I have left if for the time being? back = "Chiudi questo menù e torna al menù delle impostazioni", } font_location_window = { caption = "Scegli il font (%1%)", } handyman_window = { all_parcels = "Tutti i lotti", parcel = "Lotto" } tooltip.handyman_window = { parcel_select = "Il lotto dove l'inserviente può operare, clicca per cambiarlo" } new_game_window = { caption = "Campagna", player_name = "Nome del giocatore", option_on = "On", option_off = "Off", difficulty = "Difficoltà", easy = "Assistente (Facile)", medium = "Dottore (Medio)", hard = "Consulente (Difficile)", tutorial = "Tutorial", start = "Comincia", cancel = "Annulla", } tooltip.new_game_window = { player_name = "Inserisci il nome col quale vuoi essere chiamato nel gioco", difficulty = "Seleziona il livello di difficoltà a cui vuoi giocare", easy = "Se non sei pratico di simulatori questa è l'opzione per te", medium = "Questa è la via di mezzo se non sei sicuro su cosa scegliere", hard = "Se sei abituato a questo tipo di giochi e vuoi una sfida più impegnativa, scegli questa opzione", tutorial = "Se vuoi aiuto per cominciare mentre sei in gioco, spunta questa casella", start = "Avvia il gioco con le impostazioni scelte", cancel = "Oh, non volevo davvero cominciare una nuova partita!", } lua_console = { execute_code = "Esegui", close = "Chiudi", } tooltip.lua_console = { textbox = "Inserisci qui il codice Lua da eseguire", execute_code = "Esegui il codice che hai inserito", close = "Chiudi la console", } errors = { dialog_missing_graphics = "I file dei dati della demo non contengono questa stringa.", save_prefix = "Errore durante il salvataggio: ", load_prefix = "Errore durante il caricamento: ", no_games_to_contine = "Non ci sono partite salvate.", load_quick_save = "Errore, non è possibile caricare il salvataggio veloce perché non esiste, ma non preoccuparti: ne abbiamo appena creato uno al posto tuo!", map_file_missing = "Non ho potuto trovare la mappa %s per questo livello!", minimum_screen_size = "Per favore inserisci almeno una risoluzione di 640x480.", unavailable_screen_size = "La risoluzione che hai richiesto non è disponibile a schermo intero.", alien_dna = "NOTA: Non ci sono animazioni per i pazienti Alieni per quando si siedono, aprono o bussano sulle porte etc. Quindi, così come in Theme Hospital, mentre fanno queste cose appariranno normali per poi tornare ad apparire alieni. I pazienti con DNA Alieno appariranno solo se impostati dal file del livello", fractured_bones = "NOTA: L'animazione per i pazienti donne con Ossa Rotte non è perfetta", could_not_load_campaign = "Errore nel caricare la campagna: %s", could_not_find_first_campaign_level = "Non è stato possibile trovare il primo livello di questa campagna: %s", } warnings = { levelfile_variable_is_deprecated = "Attenzione: Il livello %s contiene una definizione di variabile deprecata nel file di livello." .. "'%LevelFile' è stato rinominato in '%MapFile'. Per favore richiedi al creatore della mappa di aggiornare il livello.", } confirmation = { needs_restart = "Cambiare questa impostazione richiede che CorsixTH sia riavviato. Ogni progresso non salvato sarà perduto. Sei sicuro di volerlo fare?", abort_edit_room = "Stai attualmente costruendo o modificando una stanza. Se tutti gli oggetti richiesti sono stati posizionati sarà completata, altrimenti sarà cancellata. Continuare?", maximum_screen_size = "La risoluzione che hai inserito è superiore a 3000x2000. Risoluzioni maggiori sono supportate, ma richiederanno un hardware migliore per mantenere un livello di frame rate giocabile. Sei sicuro di voler continuare?", music_warning = "Nota: E' necessario avere la libreria smpeg.dll o equivalente nel tuo sistema operativo, altrimenti non sentirai alcuna musica nel gioco. Vuoi continuare?", --This next line isn't in the english.lua, but when strings are dump it is reported missing restart_level = "Sei sicuro di voler riavviare il livello?", } information = { custom_game = "Benvenuto in CorsixTH. Divertiti con questa mappa personalizzata!", no_custom_game_in_demo = "Spiacente, ma nella versione demo non puoi giocare mappe personalizzate.", cannot_restart = "Sfortunatamente questa mappa personalizzata è stata salvata prima che venisse implementata la funzione per riavviare.", very_old_save = "Il gioco è stato molto aggiornato da quando hai avviato questo livello. Per assicurarti che tutto funzioni come dovrebbe prendi in considerazione l'idea di riavviarlo.", level_lost = { "Peccato! Hai perso il livello. Avrai più fortuna la prossima volta!", "Hai perso perchè:", reputation = "La tua reputazione è scesa sotto %d.", balance = "Il tuo conto in banca è sceso sotto %d.", percentage_killed = "Hai ucciso più del %d dei pazienti.", cheat = "È stata una tua scelta o hai selezionato il pulsante sbagliato? Non riesci nemmeno a barare correttamente, non è così divertente, eh?", }, cheat_not_possible = "Non puoi usare cheat in questo livello. Fallisci anche nel barare, non è così divertente, eh?", } tooltip.information = { close = "Chiudi la finestra delle informazioni", } totd_window = { tips = { "Ogni ospedale per funzionare ha bisogno di alcune strutture di base. Inizia con una reception e un ambulatorio, e il personale necessario. Una volta iniziato, dipenderà tutto dal tipo di pazienti che visiteranno il tuo ospedale. Qualche stanza per le diagnosi e una farmacia sono una buona scelta per iniziare.", "I macchinari come la Pompa hanno bisogno di manutenzione più o meno costante. Assumi qualche tuttofare per ripararle, o rischierai che i pazienti e il tuo staff si facciano male.", "Il tuo staff lavora duramente, e ogni tanto ha bisogno di riposare. Costruisci una sala del personale per loro.", "Ricordati di fornire il tuo ospedale di un impianto di riscaldamento funzionante, o lo staff ed i pazienti rimarranno infelici e infreddoliti.", "Il livello di competenza influenza in maniera enorme la qualità e la velocità delle diagnosi. Assegnando un dottore molto abile al tuo ambulatorio non avrai bisogno di costruire molte strutture di diagnosi addizionali.", "Assistenti e dottori possono aumentare il loro livello di competenza imparando da un consulente nella sala tirocinio. Se il consulente è anche uno specialista (chirurgo, psichiatra e/o ricercatore), passerà le sue conoscente ai suoi studenti.", "Hai provato a digitare il numero di emergenza europea (112) nel fax? Assicurati di avere l'audio attivato!", "Il menu d'opzioni non è ancora implementato, ma puoi regolare le impostazioni modificando il file config.txt nella directory di gioco.", "Hai selezionato il tuo linguaggio, ma tutto è in inglese? Aiutaci a convertire il gioco in più linguaggi!", "Il team di CorsixTH sta cercando rinforzi! Sei interessato in programmare, tradurre o creare nuovi elementi grafici per CorsixTH? Contattaci nei forum, tramite mail o sul canale IRC (corsix-th su freenode).", "Trovato un bug? Vuoi segnalare un errore di qualsiasi genere? Inviaci un rapporto su ciò che hai trovato al nostro bug tracker: th-issues.corsix.org", "Ogni livello ha degli obiettivi da raggiungere prima di poter passare al successivo. Controlla la finestra del riepilogo per vedere a che punto sei.", "Se vuoi modificare o rimuovere una stanza esistente, puoi farlo con il tasto modifica stanza nella barra degli strumenti in basso.", "In un'orda di pazienti in attesa, puoi vedere velocemente chi sta aspettando il proprio turno per una stanza particolare spostando il mouse sulla stanza.", "Clicca sulla porta di una stanza per vederne la coda. Puoi fare diverse cose utili, come riordinare la coda o mandare il paziente in un'altra stanza.", "Se il personale è infelice chiederà spesso aumenti di salario. Assicurati che il tuo staff stia lavorando in un'ambiente di lavoro confortevole per evitare che accada.", "I pazienti avranno sete durante le attese, soprattutto se alzi il riscaldamento! Piazza i distributori di bevande in posizioni strategiche per un po' di guadagni extra. ", "Puoi cancellare prematuramente il processo di diagnosi per un paziente e deciderne la cura se hai già incontrato la malattia. Fai attenzione però, dato che fare ciò può incrementare il rischio di una cura sbagliata, risultando nella morte del paziente.", "Le emergenze possono essere una buona fonte di guadagno extra, sempre che tu abbia i mezzi sufficienti a gestire l'emergenza in tempo.", }, previous = "Suggerimento Precedente", next = "Suggerimento Successivo", } tooltip.totd_window = { previous = "Passa al suggerimento precedente", next = "Passa al suggerimento successivo", } debug_patient_window = { caption = "Debug Paziente", } cheats_window = { caption = "Cheat", warning = "Attenzione: Non riceverai alcun punto bonus alla fine del livello se usi i cheat!", cheated = { no = "Cheat usati: No", yes = "Cheat usati: Sì", }, cheats = { money = "Cheat soldi", all_research = "Completa Ricerche", emergency = "Crea Emergenza", vip = "Crea VIP", earthquake = "Crea Terremoto", epidemic = "Genera paziente contagioso", toggle_infected = "Attiva o disattiva icone infetti", create_patient = "Crea Paziente", end_month = "Fine Mese", end_year = "Fine Anno", lose_level = "Perdi Livello", win_level = "Vinci Livello", increase_prices = "Aumenta prezzi", decrease_prices = "Diminuisci prezzi", }, close = "Chiudi", } tooltip.cheats_window = { close = "Chiudi il menu dei cheat", cheats = { money = "Aggiunge 10.000 al tuo conto in banca.", all_research = "Completa tutte le ricerche.", emergency = "Crea un'emergenza.", vip = "Crea un VIP.", earthquake = "Crea un terremoto.", epidemic = "Crea un paziente contagioso che potrebbe causare un'epidemia", toggle_infected = "Attiva o disattiva le icone infetti per le epidemie attive scoperte", create_patient = "Crea un Paziente sul bordo della mappa.", end_month = "Salta alla fine del mese.", end_year = "Salta alla fine dell'anno.", lose_level = "Perdi il livello corrente.", win_level = "Vinci il livello corrente.", increase_prices = "Aumenta tutti i prezzi del 50% (max 200%)", decrease_prices = "Diminuisci tutti i prezzi del 50% (min 50%)", } } introduction_texts = { demo = "Benvenuto nell'ospedale demo!" .. "Sfortunatamente la versione demo contiene solo questo livello. Ad ogni modo c'è abbastanza da fare per tenerti occupato per un bel po'!" .. "Incontrerai diverse malattie che richiederanno diverse cliniche per essere curate. Ogni tanto potrebbero presentarsi delle emergenze. " .. "E avrai bisogno di ricercare nuove strumentazioni tramite il centro ricerche." .. "Il tuo obiettivo è di guadagnare $100,000, avere un ospedale che valga $70,000 e una reputazione di 700, oltre che curare almeno il 75% dei tuoi pazienti." .. "Assicurati che la tua reputazione non scenda al di sotto di 300 e di non uccidere più del 40% dei tuoi pazienti, o perderai." .. "Buona fortuna!", } calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d chiamate; %d assegnate", staff = "%s - %s", watering = "Annaffiare @ %d,%d", repair = "Riparazione %s", close = "Chiudi", } tooltip.calls_dispatcher = { task = "Lista dei compiti - clicca il compito per aprire la finestra del membro del personale assegnato e scorrere alla posizione del compito", assigned = "Questo box è segnato se qualcuno è assegnato al compito corrispondente.", close = "Chiude la finestra del gestore chiamate", } update_window = { caption = "Aggiornamento disponibile!", new_version = "Nuova versione:", current_version = "Versione corrente:", download = "Vai alla pagina del download", ignore = "Salta e vai al menù principale", } tooltip.update_window = { download = "Vai alla pagina del download per trovare l'ultima versione di CorsixTH", ignore = "Ignora l'aggiornamento per ora. Questa notifica apparirà di nuovo al prossimo avvio di CorsixTH", } map_editor_window = { pages = { inside = "Interno", outside = "Esterno", foliage = "Fogliame", hedgerow = "Siepe", pond = "Laghetto", road = "Strada", north_wall = "Muro nord", west_wall = "Muro ovest", helipad = "Eliporto", delete_wall = "Cancella mura", parcel_0 = "Lotto 0", parcel_1 = "Lotto 1", parcel_2 = "Lotto 2", parcel_3 = "Lotto 3", parcel_4 = "Lotto 4", parcel_5 = "Lotto 5", parcel_6 = "Lotto 6", parcel_7 = "Lotto 7", parcel_8 = "Lotto 8", parcel_9 = "Lotto 9", camera_1 = "Camera 1", camera_2 = "Camera 2", camera_3 = "Camera 3", camera_4 = "Camera 4", heliport_1 = "Eliporto 1", heliport_2 = "Eliporto 2", heliport_3 = "Eliporto 3", heliport_4 = "Eliporto 4", paste = "Incolla area", } } -------------------------------- UNUSED ----------------------------------- ------------------- (kept for backwards compatibility) ---------------------- options_window.change_resolution = "Cambia risoluzione" tooltip.options_window.change_resolution = "Cambia la risoluzione della finestra con le dimensioni inserite a sinistra" -- I added those lines because I didn't like 'em to show up in every diff dump! original_credits[302] = "," original_credits[303] = "Steve Fitton" original_credits[304] = " " original_credits[305] = " " original_credits[306] = " " original_credits[307] = ":Company Administration" original_credits[308] = "," original_credits[309] = "Audrey Adams" original_credits[310] = "Annette Dabb" original_credits[311] = "Emma Gibbs" original_credits[312] = "Lucia Gobbo" original_credits[313] = "Jo Goodwin" original_credits[314] = "Sian Jones" original_credits[315] = "Kathy McEntee" original_credits[316] = "Louise Ratcliffe" original_credits[317] = " " original_credits[318] = " " original_credits[319] = " " original_credits[320] = ":Company Management" original_credits[321] = "," original_credits[322] = "Les Edgar" original_credits[323] = "Peter Molyneux" original_credits[324] = "David Byrne" original_credits[325] = " " original_credits[326] = " " original_credits[327] = ":Tutti alla Bullfrog Productions" original_credits[328] = " " original_credits[329] = " " original_credits[330] = " " original_credits[331] = ":Un Ringraziamento Speciale A" original_credits[332] = "," original_credits[333] = "Tutti al Frimley Park Hospital" original_credits[334] = " " original_credits[335] = ":Specialmente" original_credits[336] = "," original_credits[337] = "Beverley Cannell" original_credits[338] = "Doug Carlisle" original_credits[339] = " " original_credits[340] = " " original_credits[341] = " " original_credits[342] = ":Keep On Thinking" original_credits[343] = " " original_credits[344] = " " original_credits[345] = " " original_credits[346] = " " original_credits[347] = " " original_credits[348] = " " original_credits[349] = " " original_credits[350] = " " original_credits[351] = " " original_credits[352] = " " original_credits[353] = " " original_credits[354] = " " original_credits[355] = " " original_credits[356] = " " original_credits[357] = " " original_credits[358] = " " original_credits[359] = " " original_credits[360] = " " original_credits[361] = "." CorsixTH-0.61/CorsixTH/Lua/languages/korean.lua000066400000000000000000004774361321660673500213550ustar00rootroot00000000000000--[[ Copyright (c) 2013 nullstein Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Font("unicode") Language("한국어", "Korean", "kor", "ko") Inherit("English") Encoding(utf8) misc = { hospital_open = "병ì›ì´ ë¬¸ì„ ì—´ì—ˆìŠµë‹ˆë‹¤", save_success = "ê²Œìž„ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤", save_failed = "오류: ê²Œìž„ì„ ì €ìž¥í•˜ì§€ 못했습니다", low_res = "저해ìƒë„", no_heliport = "ì•„ì§ ì•„ë¬´ ì§ˆë³‘ë„ ë°œê²¬ë˜ì§€ 않았거나 ì´ ì§€ë„ì— í—¬ë¦¬ì½¥í„° ì´ì°©ë¥™ìž¥ì´ 없습니다. 아니면 접수대를 배치하고 접수ì›ì„ 고용해야 ë ì§€ë„ 모릅니다.", grade_adverb = { extremely = "매우", mildly = "약간", moderately = "ì ë‹¹ížˆ", }, not_yet_implemented = "(미구현)", send_message = "플레ì´ì–´ %d ì—게 메시지를 보냅니다", out_of_sync = "게임 ë™ê¸°í™”ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤", balance = "밸런스 파ì¼:", load_failed = "ì €ìž¥ëœ ê²Œìž„ì„ ë¶ˆëŸ¬ì˜¤ì§€ 못했습니다", mouse = "마우스", done = "ëª¨ë‘ ì™„ë£Œë¨", --[[force = "Force",--]] pause = "ì¼ì‹œ ì •ì§€", send_message_all = "모든 플레ì´ì–´ì—게 메시지를 보냅니다", } font_location_window = { caption = "í°íŠ¸ë¥¼ ì„ íƒí•˜ì„¸ìš” (%1%)", } staff_list = { morale = "사기", tiredness = "피로ë„", skill = "기술", total_wages = "ì „ì²´ 임금", } research = { allocated_amount = "할당량", funds_allocation = "ìžê¸ˆ 할당", categories = { improvements = "개선", drugs = "신약 개발", diagnosis = "진단 장비", cure = "치료 장비", specialisation = "집중 연구", }, } debug_patient_window = { caption = "í™˜ìž ë””ë²„ê·¸", } totd_window = { previous = "ì´ì „ íŒ", tips = { [1] = "모든 병ì›ì€ 접수대와 ì§„ë£Œì‹¤ì´ ìžˆì–´ì•¼ ëŒì•„갑니다. ê·¸ ì´í›„ì—는 ì–´ë–¤ ì¢…ë¥˜ì˜ í™˜ìžê°€ ë°©ë¬¸í•˜ëŠ”ì§€ì— ë‹¬ë ¤ìžˆìŠµë‹ˆë‹¤. ì•½êµ­ì„ ì„¤ì¹˜í•˜ëŠ”ê±´ 언제나 ì¢‹ì€ ì„ íƒì´ì§€ë§Œìš”.", [2] = "팽창기와 ê°™ì€ ê¸°ê³„ë“¤ì€ ì •ë¹„ë¥¼ 해줘야 합니다. 잡역부를 한 ë‘명 고용해서 ê¸°ê³„ë“¤ì„ ìˆ˜ë¦¬í•˜ì§€ 않으면, ì§ì›ë“¤ì´ë‚˜ 환ìžë“¤ì´ 다첼 수 있습니다.", [3] = "ì–´ëŠ ì •ë„ ì§€ë‚˜ë©´ ì§ì›ë“¤ì€ 지치게 ë©ë‹ˆë‹¤. ì§ì› íœ´ê²Œì‹¤ì„ ë§Œë“¤ì–´ì„œ ì§ì›ë“¤ì´ 쉴 수 있게 해주세요.", [4] = "ë¼ë””ì—ì´í„°ë¥¼ 충분히 배치해서 ì§ì›ë“¤ê³¼ 환ìžë“¤ì„ 따뜻하게 해주지 않으면 ê·¸ë“¤ì´ ì ì°¨ 불행해질 ê²ë‹ˆë‹¤. ë§ˆì„ ì§€ë„를 ì´ìš©í•´ì„œ ë‚œë°©ì´ ë” í•„ìš”í•œ ì§€ì ì„ 찾으세요.", [5] = "ì˜ì‚¬ì˜ 숙련ë„는 ì§„ë‹¨ì˜ ì •í™•ë„와 ì†ë„ì— í° ì˜í–¥ì„ 미칩니다. ì§„ë£Œì‹¤ì— ìˆ™ë ¨ëœ ì˜ì‚¬ë¥¼ 배치하면 추가ì ì¸ 진단 ì‹œì„¤ì´ ë§Žì´ í•„ìš”í•˜ì§€ 않게 ë©ë‹ˆë‹¤.", [6] = "수련ì˜ì™€ ì „ê³µì˜ëŠ” êµìœ¡ì‹¤ì—서 전문ì˜ì—게 ë°°ì›€ìœ¼ë¡œì¨ ìˆ™ë ¨ë„를 올릴 수 있습니다. 가르치는 전문ì˜ê°€ 전문 분야 ìžê²©ì´ 있다면 (외과, ì •ì‹ ê³¼, ë˜ëŠ” 연구), 전문 ì§€ì‹ë„ 함께 전수ë©ë‹ˆë‹¤.", [7] = "팩스 ê¸°ê³„ì— ë¹„ìƒì „í™” 번호(112)를 입력해 보셨나요? 소리가 켜져있는지 ê¼­ 확ì¸í•˜ì„¸ìš”!", [8] = "화면 í•´ìƒë„나 ì–¸ì–´ë“±ì˜ ì„¤ì •ì€ ë©”ì¸ ë©”ë‰´ í˜¹ì€ ê²Œìž„ ë‚´ì˜ ì˜µì…˜ ì°½ì—서 조절할 수 있습니다.", [9] = "ì˜ì–´ê°€ 아닌 언어를 ì„ íƒí–ˆì§€ë§Œ ì—¬ê¸°ì €ê¸°ì— ì˜ì–´ë¡œëœ ê¸€ë“¤ì´ ë³´ì´ì‹œë‚˜ìš”? ë¹ ì§„ ê¸€ë“¤ì„ ì—¬ëŸ¬ë¶„ì˜ ì–¸ì–´ë¡œ 번역하는 ì¼ì„ ë„와주세요!", [10] = "CorsixTX 팀ì—는 ì¦ì› 부대가 필요합니다! CorsixTH ì˜ ì½”ë”©, 번역, í˜¹ì€ ê·¸ëž˜í”½ ìž‘ì—…ì— ê´€ì‹¬ì´ ìžˆìœ¼ì‹ ê°€ìš”? í¬ëŸ¼, ë©”ì¼ë§ 리스트, ë˜ëŠ” IRC ì±„ë„ (freenodeì˜ corsix-th)ì„ í†µí•´ì„œ 우리ì—게 ì—°ë½ ì£¼ì„¸ìš”.", [11] = "버그를 발견하면 버그 트래커(th-issues.corsix.org) ì— ì œë³´í•´ì£¼ì„¸ìš”", [12] = "ê° ë ˆë²¨ì€ ë‹¤ìŒ ë ˆë²¨ë¡œ 넘어가기 위해 달성해야할 ë³µí‘œë“¤ì´ ìžˆìŠµë‹ˆë‹¤. 레벨 목표 ë‹¬ì„±ì˜ ì§„í–‰ ìƒí™©ì„ 보려면 ìƒíƒœ ì°½ì„ í™•ì¸í•˜ì„¸ìš”.", [13] = "ì´ë¯¸ 지어진 ë°©ì„ ì‚­ì œí•˜ê±°ë‚˜ 편집하기 ì›í•  때는 아래쪽 íˆ´ë°”ì— ìžˆëŠ” 편집 ë²„íŠ¼ì„ ì‚¬ìš©í•˜ë©´ ë©ë‹ˆë‹¤.", [14] = "기다리는 환ìžê°€ 너무 ë§Žì„ ë•Œì—는, 마우스 커서를 특정 ë°© ìœ„ì— ì˜¬ë ¤ì„œ ê·¸ ë°©ì— ê¸°ë‹¤ë¦¬ê³  있는 환ìžë“¤ì´ 누구ì¸ì§€ 금방 알아낼 수 있습니다.", [15] = "특정 ë°©ì˜ ë¬¸ì„ í´ë¦­í•˜ë©´ ê·¸ ë°©ì˜ ëŒ€ê¸°ì—´ì„ ë³¼ 수 있습니다. 여기서 대기 순서를 변경하거나 환ìžë¥¼ 다른 방으로 보내는 ë“±ì˜ ìœ ìš©í•œ ì¡°ìœ¨ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.", [16] = "불행한 ì§ì›ì€ 급여 ì¸ìƒì„ ìžì£¼ 요구할 것입니다. ì´ëŸ° ì¼ì´ ì¼ì–´ë‚˜ì§€ 않ë„ë¡ ì§ì›ë“¤ì´ ì¼í•˜ê¸° 편안한 í™˜ê²½ì„ ì¡°ì„±í•´ì£¼ì„¸ìš”.", [17] = "환ìžë“¤ì€ ë³‘ì› ì•ˆì—서 기다리는 ë™ì•ˆ ëª©ì´ ë§ë¼ì§€ë©°, ë‚œë°©ì´ ê°•í•  ìˆ˜ë¡ ë”ìš± 그렇습니다! ìžíŒê¸°ë¥¼ ì „ëžµì ì¸ ìœ„ì¹˜ì— ì„¤ì¹˜í•´ì„œ 추가 ìˆ˜ìž…ì„ ë…¸ë¦¬ì„¸ìš”.", [18] = "환ìžì˜ 진단 절차를 중단하고 ì¶”ì¸¡ì— ì˜í•œ 치료를 하는 ê²ƒì´ ê°€ëŠ¥í•©ë‹ˆë‹¤ (해당 ì§ˆë³‘ì„ ë§Œë‚¬ë˜ ì ì´ 있는 경우). 하지만 ìž˜ëª»ëœ ì¹˜ë£Œë¥¼ í•´ 환ìžë¥¼ 죽ìŒì— ì´ë¥´ê²Œ í•  ìœ„í—˜ì„ ê°ìˆ˜í•´ì•¼ 합니다.", [19] = "ì‘급 환ìžë“¤ì„ 시간 ë‚´ì— ì¹˜ë£Œí•  수 있는 설비를 충분히 갖추고 있다는 ì „ì œ 하ì—, ì‘급 사태는 ì¢‹ì€ ì¶”ê°€ 수입ì›ì´ ë  ìˆ˜ 있습니다.", }, next = "ë‹¤ìŒ íŒ", } queue_window = { num_in_queue = "줄 길ì´", num_entered = "ë°©ë¬¸ìž ìˆ˜", max_queue_size = "최대 줄 길ì´", num_expected = "예ìƒ", } staff_class = { doctor = "ì˜ì‚¬", handyman = "잡역부", receptionist = "접수ì›", nurse = "간호사", surgeon = "외과ì˜", } tooltip = { hire_staff_window = { prev_person = "ì´ì „ 사람 보기", cancel = "취소", psychiatrist = "ì •ì‹ ê³¼ ì˜ì‚¬", salary = "급여", next_person = "ë‹¤ìŒ ì‚¬ëžŒ 보기", nurses = "ê³ ìš© 가능한 간호사 보기", surgeon = "외과 ì˜ì‚¬", handymen = "ê³ ìš© 가능한 잡역부 보기", doctors = "ê³ ìš© 가능한 ì˜ì‚¬ 보기", doctor_seniority = "ì˜ì‚¬ì˜ 계급 (수련ì˜, ì „ê³µì˜, 전문ì˜)", hire = "ê³ ìš©", researcher = "연구ì›", qualifications = "전문 분야 ìžê²©", receptionists = "ê³ ìš© 가능한 ì ‘ìˆ˜ì› ë³´ê¸°", staff_ability = "ì§ì› 능력", }, handyman_window = { parcel_select = "잡역부가 ì¼í•˜ëŠ” 구íšìž…니다. ì„¤ì •ì„ ë³€ê²½í•˜ë ¤ë©´ í´ë¦­í•˜ì„¸ìš”.", close = "요청 취소", ability = "능력", face = "ìž¡ì—­ë¶€ì˜ ì–¼êµ´", prio_machines = "기계 ìˆ˜ë¦¬ì˜ ìš°ì„ ìˆœìœ„ë¥¼ 높입니다.", prio_litter = "바닥 쓰레기 ì²­ì†Œì˜ ìš°ì„ ìˆœìœ„ë¥¼ 높입니다.", happiness = "행복ë„", prio_plants = "화초 ë¬¼ì£¼ê¸°ì˜ ìš°ì„ ìˆœìœ„ë¥¼ 높입니다.", name = "ìž¡ì—­ë¶€ì˜ ì´ë¦„", tiredness = "피로ë„", center_view = "잡역부 살펴보기", salary = "급여", sack = "í•´ê³ ", pick_up = "ì§‘ì–´ 들기", }, staff_list = { ability_2 = "ê³ ìš©ì¸ì˜ 능력", next_person = "ë‹¤ìŒ íŽ˜ì´ì§€ 보기", detail = "세부 ì‚¬í•­ì— ëŒ€í•œ 주ì˜ë ¥", happiness = "ê³ ìš©ì¸ë“¤ì´ 얼마나 만족하고 있는지 ë³´ì—¬ì¤ë‹ˆë‹¤", researcher_train = "ì—°êµ¬ì› êµìœ¡ì„ %d%% ì´ìˆ˜í•¨", handymen = "ì´ ë³‘ì›ì— ê³ ìš©ëœ ìž¡ì—­ë¶€ ëª©ë¡ ë³´ê¸°", tiredness = "ê³ ìš©ì¸ë“¤ì´ 얼마나 피곤한지 ë³´ì—¬ì¤ë‹ˆë‹¤", researcher = "ì—°êµ¬ì› ìžê²© 소지", happiness_2 = "ê³ ìš©ì¸ì˜ 행복ë„", pay_rise = "ì´ ì‚¬ëžŒì˜ ê¸‰ì—¬ë¥¼ 10% ì¸ìƒ", bonus = "ì´ ì‚¬ëžŒì—게 10%ì˜ ë³´ë„ˆìŠ¤ 지급", prev_person = "ì´ì „ 페ì´ì§€ 보기", nurses = "ì´ ë³‘ì›ì— ê³ ìš©ëœ ê°„í˜¸ì‚¬ ëª©ë¡ ë³´ê¸°", psychiatrist = "ì •ì‹ ê³¼ ì˜ì‚¬ ìžê²© 소지", salary = "ì´ ì‚¬ëžŒì˜ í˜„ìž¬ 급여", ability = "ê³ ìš©ì¸ë“¤ì˜ 능력 수치를 ë³´ì—¬ì¤ë‹ˆë‹¤", close = "게임으로 ëŒì•„가기", sack = "ì´ ì‚¬ëžŒì„ í•´ê³ ", surgeon = "외과 ì˜ì‚¬ ìžê²© 소지", tiredness_2 = "ê³ ìš©ì¸ì˜ 피로ë„", doctors = "ì´ ë³‘ì›ì— ê³ ìš©ëœ ì˜ì‚¬ ëª©ë¡ ë³´ê¸°", doctor_seniority = "ì˜ì‚¬ì˜ 계급", view_staff = "ì´ ì‚¬ëžŒì´ ì¼í•˜ëŠ” 모습 보기", surgeon_train = "외과 ì˜ì‚¬ êµìœ¡ì„ %d%% ì´ìˆ˜í•¨", skills = "특수 기술", receptionists = "ì´ ë³‘ì›ì— ê³ ìš©ëœ ì ‘ìˆ˜ì› ëª©ë¡ ë³´ê¸°", psychiatrist_train = "ì •ì‹ ê³¼ ì˜ì‚¬ êµìœ¡ì„ %d%% ì´ìˆ˜í•¨", }, research = { cure_dec = "치료 장비 연구 비율 ê°ì†Œ", cure_inc = "치료 장비 연구 비율 ì¦ê°€", diagnosis_dec = "진단 장비 연구 비율 ê°ì†Œ", diagnosis_inc = "진단 장비 연구 비율 ì¦ê°€", drugs_dec = "신약 개발 연구 비율 ê°ì†Œ", drugs_inc = "신약 개발 연구 비율 ì¦ê°€", improvements_dec = "개선 연구 비율 ê°ì†Œ", improvements_inc = "개선 연구 비율 ì¦ê°€", specialisation_dec = "집중 연구 비율 ê°ì†Œ", specialisation_inc = "집중 연구 비율 ì¦ê°€", allocated_amount = "í• ë‹¹ëœ ì˜ˆì‚°", close = "연구 화면 닫기", }, customise_window = { intro = "ì¸íŠ¸ë¡œ ì˜ìƒì„ 켜거나 ë•니다. CorsixTH 를 플레ì´í•  때마다 ì¸íŠ¸ë¡œ ì˜ìƒì„ 재ìƒí•˜ê²Œ 하려면 ì˜ìƒ ì»¨íŠ¸ë¡¤ì´ ì¼œì ¸ 있어야 합니다", fractured_bones = "조잡한 애니메ì´ì…˜ì˜ 문제로, 기본ì ìœ¼ë¡œ 여성 골절 환ìžëŠ” 등장하지 않ë„ë¡ ë˜ì–´ìžˆìŠµë‹ˆë‹¤. 여성 골절 환ìžë“¤ì´ 병ì›ì„ 방문하게 하려면 ì´ ì˜µì…˜ì„ ë„세요", movies = "ì´ ì˜µì…˜ì„ ë„ë©´ 게임 ë‚´ì˜ ëª¨ë“  ì˜ìƒì´ 재ìƒë˜ì§€ 않습니다", volume = "ìŒëŸ‰ ê°ì†Œ ë²„íŠ¼ì´ ì•½ë¬¼ ì‚¬ë¡€ì§‘ì„ ì—´ê²Œ ë˜ëŠ” 경우, ì´ ì˜µì…˜ì„ ì¼œì„œ 약물 사례집 단축키를 Shift + C 로 변경하세요", aliens = "ì ì ˆí•œ 애니메ì´ì…˜ì˜ 부재로, ì™¸ê³„ì¸ DNA 환ìžë“¤ì€ ì‘급 ìƒí™©ì—서만 방문하ë„ë¡ ë˜ì–´ìžˆìŠµë‹ˆë‹¤. 외계 DNA 환ìžë“¤ì´ 병ì›ì„ í‰ì†Œì—ë„ ë°©ë¬¸í•˜ê²Œ 하려면 ì´ ì˜µì…˜ì„ ë„세요", paused = "테마 병ì›ì—서 기본ì ìœ¼ë¡œ 플레ì´ì–´ëŠ” ê²Œìž„ì´ ì¼ì‹œ ì •ì§€ ë˜ì—ˆì„ 때 ìƒìœ„ ë©”ë‰´ë§Œì„ ì‚¬ìš©í•  수 있고, CorsixTH ì—ì„œë„ ë§ˆì°¬ê°€ì§€ 입니다. ì´ ì˜µì…˜ì„ ì¼œë©´ ê²Œìž„ì´ ì •ì§€ëœ ìƒíƒœì—ì„œë„ ëª¨ë“  ê¸°ëŠ¥ì´ í™œì„±í™” ë©ë‹ˆë‹¤", average_contents = "ë°©ì„ ê±´ì„¤í•  때 ë‹¹ì‹ ì´ ë³´í†µ ì–´ë–¤ ë¹„í’ˆë“¤ì„ ì¶”ê°€ë¡œ 배치하는지 ê²Œìž„ì´ ê¸°ì–µí•˜ë„ë¡ í•˜ë ¤ë©´ ì´ ì˜µì…˜ì„ ì¼œì„¸ìš”", back = "ì´ ë©”ë‰´ë¥¼ ë‹«ê³  옵션 메뉴로 ëŒì•„ê°", }, machine_window = { repair = "잡역부를 불러서 수리하기", name = "ì´ë¦„", close = "요청 취소", times_used = "기계가 ì‚¬ìš©ëœ íšŸìˆ˜", status = "ê¸°ê³„ì˜ ìƒíƒœ", replace = "기계 êµí™˜", }, place_objects_window = { confirm = "확ì¸", cancel = "취소", pick_up = "물건 ì§‘ì–´ 들기", buy_sell = "물건 구매/íŒë§¤", }, totd_window = { previous = "ì´ì „ íŒ ë³´ê¸°", next = "다ì íŒ ë³´ê¸°", }, status = { percentage_cured = "ë‹¹ì‹ ì€ ë³‘ì›ì—서 %d ëª…ì˜ í™˜ìžë¥¼ 치료해야 합니다. 지금까지 %d ëª…ì„ ì¹˜ë£Œí–ˆìŠµë‹ˆë‹¤.", population_chart = "ê° ë³‘ì›ì´ 현지 ì†ë‹˜ì„ ëŒì–´ì˜¤ëŠ” ë¹„ìœ¨ì„ ë‚˜íƒ€ë‚´ëŠ” ë„표", win_progress_own = "ë‹¹ì‹ ì˜ ë³‘ì›ì˜ 승리 요건 ì§„í–‰ ìƒí™© 보기", win_progress_other = "%s 병ì›ì˜ 승리 요건 ì§„í–‰ ìƒí™© 보기", reputation = "ë‹¹ì‹ ì˜ í‰íŒì€ %d ì´ìƒì´ì–´ì•¼ 합니다. 현재 í‰íŒì€ %d 입니다.", population = "ë‹¹ì‹ ì€ %d%% ì´ìƒì˜ 현지 ì†ë‹˜ì„ ëŒì–´ì™€ì•¼ 합니다.", percentage_killed = "ì´ ëª©í‘œëŠ” %d%% ë¯¸ë§Œì˜ í™˜ìžë¥¼ 죽ì´ëŠ” 것입니다. 지금까지 ë‹¹ì‹ ì€ %d%% ì˜ í™˜ìžë¥¼ 죽였습니다.", balance = "ë‹¹ì‹ ì˜ ì€í–‰ 잔고는 %d ì´ìƒì´ì–´ì•¼ 합니다. 현재 잔고는 %d 입니다.", value = "ë‹¹ì‹ ì˜ ë³‘ì› ê°€ì¹˜ëŠ” $%d ì´ìƒì´ì–´ì•¼ 합니다. 현재 가치는 $%d 입니다.", num_cured = "ì´ ëª©í‘œëŠ” %d ëª…ì˜ í™˜ìžë¥¼ 치료하는 것입니다. 지금까지 ë‹¹ì‹ ì€ %d ëª…ì„ ì¹˜ë£Œí–ˆìŠµë‹ˆë‹¤.", happiness = "ë‹¹ì‹ ì˜ ë³‘ì›ì— 있는 ì‚¬ëžŒë“¤ì˜ ì „ì²´ì ì¸ 행복ë„", thirst = "ë‹¹ì‹ ì˜ ë³‘ì›ì— 있는 ì‚¬ëžŒë“¤ì˜ ì „ì²´ì ì¸ 목마름 ì •ë„", warmth = "ë‹¹ì‹ ì˜ ë³‘ì›ì— 있는 ì‚¬ëžŒë“¤ì˜ ì „ì²´ì ì¸ 온ë„", close = "개요 ì°½ 닫기", }, queue_window = { front_of_queue = "환ìžë¥¼ 줄 맨 앞으로 보내려면 드래그해서 ì´ ì•„ì´ì½˜ ìœ„ì— ë†“ìœ¼ì„¸ìš”", end_of_queue = "환ìžë¥¼ 줄 맨 ë으로 보내려면 드래그해서 ì´ ì•„ì´ì½˜ ìœ„ì— ë†“ìœ¼ì„¸ìš”", num_entered = "지금까지 ì´ ë°©ì—서 ì¹˜ë£Œëœ í™˜ìž ìˆ˜", num_in_queue = "ëŒ€ê¸°ì¤‘ì¸ í™˜ìž ìˆ˜", num_expected = "접수ì›ì´ 예ìƒí•˜ëŠ” ì´ ê³³ì—서 ê³§ 추가로 대기하게 ë  í™˜ìž ìˆ˜", dec_queue_size = "최대 줄 ê¸¸ì´ ê°ì†Œ", max_queue_size = "접수ì›ì´ 유지하려고 노력해야 하는 최대 줄 길ì´", inc_queue_size = "최대 줄 ê¸¸ì´ ì¦ê°€", patient = "환ìžë¥¼ 줄 ë‚´ì— íŠ¹ì • 위치로 옮기려면 드래그 하세요. 오른í´ë¦­ìœ¼ë¡œ 집으로 ëŒë ¤ 보내거나 ê²½ìŸ ë³‘ì›ì— 보내세요.", patient_dropdown = { send_home = "환ìžë¥¼ 병ì›ì—서 내보냄", hospital_1 = "환ìžì—게 다른 ë³‘ì› ì†Œê°œí•˜ê¸°", hospital_2 = "환ìžì—게 다른 ë³‘ì› ì†Œê°œí•˜ê¸°", hospital_3 = "환ìžì—게 다른 ë³‘ì› ì†Œê°œí•˜ê¸°", reception = "환ìžë¥¼ 접수ì›ì—게 보내기", }, close = "닫기", }, jukebox = { rewind = "주í¬ë°•스 ë˜ê°ê¸°", loop = "주í¬ë°•스 반복 재ìƒ", stop = "주í¬ë°•스 ì •ì§€", current_title = "주í¬ë°•스", play = "주í¬ë°•스 재ìƒ", fast_forward = "주í¬ë°•스 빨리 ê°ê¸°", close = "주í¬ë°•스 닫기", }, graphs = { deaths = "ì£½ì€ í™˜ìž ìˆ˜ 켜기/ë„기", scale = "그래프 비율", money_out = "ëˆ ì§€ì¶œ 켜기/ë„기", visitors = "ë°©ë¬¸ìž ìˆ˜ 켜기/ë„기", wages = "급여 켜기/ë„기", balance = "잔고 켜기/ë„기", money_in = "ëˆ ìˆ˜ìž… 켜기/ë„기", cures = "치료 수 켜기/ë„기", reputation = "ë³‘ì› ê°€ì¹˜ 켜기/ë„기", close = "그래프 ì°½ 닫기", }, toolbar = { reputation = "ë‹¹ì‹ ì˜ í‰íŒ", casebook = "약물 사례집", edit = "ë°©/ì•„ì´í…œ 편집", staff_list = "ì§ì› 관리", policy = "ì •ì±…", date = "ë‚ ì§œ", charts = "ë„표", objects = "ë³µë„ì— ë¬¼ê±´ 설치", balance = "ë‹¹ì‹ ì˜ ìž”ê³ ", research = "연구", hire = "ìž‘ì› ê³ ìš©", status = "ìƒíƒœ", town_map = "ë§ˆì„ ì§€ë„", rooms = "ë°© 만들기", bank_button = "ì€í–‰ ì§€ì ìž¥ì„ 보려면 왼쪽 í´ë¦­, 명세서를 보려면 오른쪽 í´ë¦­", }, message = { button = "메시지를 보려면 왼쪽 í´ë¦­", button_dismiss = "메시지를 보려면 왼쪽 í´ë¦­, 무시하려면 오른쪽 í´ë¦­", }, pay_rise_window = { accept = "급여 ì¸ìƒ 요구를 들어줌", decline = "ì¸ìƒí•˜ì§€ ì•ŠìŒ - í•´ê³ ", }, town_map = { people = "사람 켜기/ë„기", plants = "화초 켜기/ë„기", fire_extinguishers = "소화기 켜기/ë„기", objects = "기물 켜기/ë„기", radiators = "ë¼ë””ì—ì´í„° 켜기/ë„기", heat_dec = "난방 ê°ì†Œ", heat_inc = "난방 ì¦ê°€", heat_level = "난방 ì •ë„", heating_bill = "난방비", balance = "잔고", close = "ë§ˆì„ ì°½ 닫기", }, custom_game_window = { start_game_with_name = "%s 레벨 불러오기", free_build = "ëˆì´ë‚˜ 승리/패배 ì¡°ê±´ ì—†ì´ ìžìœ ë¡­ê²Œ 플레ì´í•˜ë ¤ë©´ ì²´í¬í•˜ì„¸ìš”", }, cheats_window = { cheats = { end_month = "ì´ ë‹¬ì˜ ë§ˆì§€ë§‰ìœ¼ë¡œ ì í”„", create_patient = "ì§€ë„ ê°€ìž¥ìžë¦¬ì— 환ìžë¥¼ ìƒì„±", money = "ì€í–‰ ìž”ê³ ì— 10.000 추가", emergency = "ì‘급 ìƒí™© 만들기", win_level = "현재 레벨 승리", vip = "VIP ìƒì„±", lose_level = "현재 레벨 패배", earthquake = "지진 ìƒì„±", all_research = "모든 연구 완료", end_year = "ì´ í•´ì˜ ë§ˆì§€ë§‰ìœ¼ë¡œ ì´ë™", }, close = "치트 ì°½ 닫기", }, casebook = { reputation = "치료 í˜¹ì€ ì§„ë‹¨ í‰íŒ", treatment_charge = "치료 비용", decrease = "비용 ê°ì†Œ", increase = "비용 ì¦ê°€", earned_money = "지금까지 ë²Œì–´ë“¤ì¸ ëˆ", cured = "치료 í™˜ìž ìˆ˜", deaths = "ì‚¬ë§ í™˜ìž ìˆ˜", sent_home = "ëŒë ¤ë³´ë‚¸ í™˜ìž ìˆ˜", research = "집중 연구 ì˜ˆì‚°ì„ ì´ ì¹˜ë£Œì— íˆ¬ìží•˜ë ¤ë©´ í´ë¦­í•˜ì„¸ìš”", cure_type = { psychiatrist = "ì •ì‹ ê³¼ ì˜ì‚¬ê°€ 치료할 수 있습니다", drug_percentage = "약물로 치료 가능합니다 - ë‹¹ì‹ ì˜ ì•½ì€ %d%% 효과가 있습니다", drug = "약물로 치료 가능합니다", machine = "치료하기 위해서는 치료 장비가 필요합니다", surgery = "수술로 치료 가능합니다", unknown = "ë‹¹ì‹ ì€ ì´ ë³‘ì„ ì–´ë–»ê²Œ 치료하는지 모릅니다", }, cure_requirement = { hire_staff_old = "치료를 위해서는 %s를 한 명 고용해야 합니다", hire_staff = "치료를 위해서는 ì§ì›ì„ 고용해야 합니다", possible = "ë‹¹ì‹ ì€ ì´ ë³‘ì„ ì¹˜ë£Œí•  수 있습니다", not_possible = "ë‹¹ì‹ ì€ ì•„ì§ ì´ ë³‘ì„ ì¹˜ë£Œí•  수 없습니다", ward_hire_nurse = "치료를 위해서는 병ë™ì—서 ì¼í•˜ëŠ” 간호사가 필요합니다", hire_surgeon = "수술하기 위해서는 ë‘ ëª…ì§¸ 외과 ì˜ì‚¬ë¥¼ 고용해야 합니다", research_machine = "치료를 위한 장비를 연구해야 합니다", build_room = "치료를 위해서는 ë°©ì„ ë§Œë“¤ì–´ì•¼ 합니다", build_ward = "치료를 위해서는 병ë™ì„ 만들어야 합니다", hire_surgeons = "수술하기 위해서는 ë‘ ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ë¥¼ 고용해야 합니다", }, up = "위로 스í¬ë¡¤", down = "아래로 스í¬ë¡¤", close = "사례집 닫기", }, policy = { diag_procedure = "ì˜ì‚¬ì˜ ì§„ë‹¨ì´ [ëŒë ¤ 보내기] í¼ì„¼íЏ 미만으로 확실할 경우ì—는 환ìžë¥¼ 집으로 ëŒë ¤ 보냅니다. ì§„ë‹¨ì´ [ì¶”ì¸¡ì— ì˜í•œ 치료] í¼ì„¼íЏ ì´ìƒìœ¼ë¡œ 확실할 경우ì—는 환ìžë¥¼ ì ì ˆí•œ 치료 시설로 보냅니다.", diag_termination = "환ìžì— 대한 ì§„ë‹¨ì€ ì˜ì‚¬ë“¤ì´ [절차 중지] í¼ì„¼íЏ ë§Œí¼ í™•ì‹ ì´ ìžˆê±°ë‚˜, 모든 진단 ìž¥ë¹„ë“¤ì„ ì‹œë„í•´ë³¼ 때까지 계ì†ë©ë‹ˆë‹¤.", staff_rest = "ì§ì›ì´ 휴ì‹ì„ 취하러 ê°ˆ 수 있는 ìµœì†Œí•œì˜ í”¼ë¡œë„", staff_leave = "ë°”ì˜ì§€ ì•Šì€ ì§ì›ì´ ë„ì›€ì„ í•„ìš”ë¡œ 하는 ë™ë£Œë¥¼ ë•ë„ë¡ í•˜ë ¤ë©´ 여기를 í´ë¦­í•˜ì„¸ìš”.", staff_stay = "특정 ì§ì›ì´ ë°°ì¹˜ëœ ë°© 안ì—서 ê³„ì† ì¼í•˜ë„ë¡ í•˜ë ¤ë©´ 여기를 í´ë¦­í•˜ì„¸ìš”.", close = "ì •ì±… 화면 닫기", }, bank_manager = { hospital_value = "ë‹¹ì‹ ì˜ ë³‘ì›ì˜ 현재 가치", balance = "ë‹¹ì‹ ì˜ ì€í–‰ 잔고", current_loan = "지불해야할 대출금", repay_5000 = "ì€í–‰ì— $5000 갚기", borrow_5000 = "ì€í–‰ì—서 $5000 빌리기", interest_payment = "매달 지불하는 ì´ìž", insurance_owed = "%s ê°€ 당신ì—게 지불해야할 금액", show_graph = "%s ì˜ ì˜ˆìƒ ì§€ë¶ˆ 그래프 보기", graph = "%s ì˜ ì˜ˆìƒ ì§€ë¶ˆ 그래프", inflation_rate = "ì—°ê°„ ì¸í”Œë ˆì´ì…˜ 비율", interest_rate = "ì—°ê°„ ì´ìžìœ¨", graph_return = "ì´ì „ 화면으로 ëŒì•„가기", close = "ì€í–‰ ì§€ì ìž¥ 화면 닫기", }, main_menu = { exit = "안ë¼ìš”, 제발 나가지 마세요!", custom_level = "ë‹¨ì¼ ì‹œë‚˜ë¦¬ì˜¤ ë‚´ì—서 병ì›ì„ 짓기", network = "ë„¤íŠ¸ì›Œí¬ ê²Œìž„ 시작", quit = "종료", continue = "지난 게임 ì´ì–´í•˜ê¸°", options = "설정 변경", load_menu = { load_slot = "게임 불러오기", empty_slot = "비어있ìŒ", }, new_game = "ìº íŽ˜ì¸ ì‹œìž‘", load_game = "ì €ìž¥ëœ ê²Œìž„ 불러오기", }, patient_window = { graph = "ì´ ì‚¬ëžŒì˜ ê±´ê°• 그래프와 병력 사ì´ë¥¼ 오가려면 í´ë¦­", close = "닫기", queue = "ì´ ì‚¬ëžŒì´ ì†í•œ 줄 ìžì„¸ížˆ 보기", happiness = "ì´ ì‚¬ëžŒì˜ í–‰ë³µë„", thirst = "ì´ ì‚¬ëžŒì˜ ëª©ë§ˆë¦„ ì •ë„", warmth = "ì´ ì‚¬ëžŒì˜ ë”°ëœ»í•¨ ì •ë„", casebook = "ì´ ì‚¬ëžŒì˜ ë³‘ì— ëŒ€í•´ ìžì„¸ížˆ 보기", center_view = "ì´ ì‚¬ëžŒì˜ ìœ„ì¹˜ë¡œ ì´ë™", send_home = "ì´ ì‚¬ëžŒì„ ì§‘ìœ¼ë¡œ ëŒë ¤ë³´ë‚´ê¸°", abort_diagnosis = "진단 ë나기 기다리지 않고 ì´ ì‚¬ëžŒì„ ì¹˜ë£Œ 시설로 보냄", }, menu_list_window = { save_date = "마지막으로 ìˆ˜ì •ëœ ë‚ ì§œë¥¼ 기준으로 목ë¡ì„ 정렬하려면 여기를 í´ë¦­", name = "ì´ë¦„ì„ ê¸°ì¤€ìœ¼ë¡œ 목ë¡ì„ 정렬하려면 여기를 í´ë¦­", back = "ì´ ì°½ 닫기", }, watch = { emergency = "ì‘급 ìƒí™©: ì‘급 환ìžë“¤ì„ ëª¨ë‘ ì¹˜ë£Œí•˜ê¸° 위해 ë‚¨ì€ ì‹œê°„", hospital_opening = "건설 시간: ì´ ì‹œê°„ì€ ë‹¹ì‹ ì˜ ë³‘ì›ì´ ê°œì›ì„ 선언하기까지 ë‚¨ì€ ì‹œê°„ìž…ë‹ˆë‹¤. ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ë³‘ì› ë¬¸ì„ ì¦‰ì‹œ 엽니다.", epidemic = "전염병: ì „ì—¼ë³‘ì„ ì²˜ë¦¬í•˜ê¸° 위해 ë‚¨ì€ ì‹œê°„. 제한 ì‹œê°„ì´ ë‹¤ 지나거나 ë˜ëŠ” ì „ì—¼ë³‘ì— ê±¸ë¦° 환ìžê°€ ë‹¹ì‹ ì˜ ë³‘ì›ì„ 떠나게 ë˜ë©´, ê±´ê°• ê²€ì‚¬ê´€ì´ ë³‘ì›ì„ 방문할 것입니다. ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 백신 모드가 켜지거나 꺼집니다. 환ìžë¥¼ í´ë¦­í•˜ì—¬ 간호사ì—게 예방 ì ‘ì¢…ì„ ë§žê²Œ í•  수 있습니다.", }, new_game_window = { player_name = "게임 ë‚´ì—서 ë‹¹ì‹ ì´ ë¶ˆë¦¬ê¸° ì›í•˜ëŠ” ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”", tutorial = "í´ë¦­í•˜ì—¬ 게임 ë‚´ì—서 플레ì´í•˜ëŠ” ë°©ë²•ì„ ë°°ìš¸ 수 있습니다", difficulty = "ê²Œìž„ì˜ ë‚œì´ë„를 ì„ íƒí•˜ì„¸ìš”", easy = "시뮬레ì´ì…˜ ê²Œìž„ì„ ì²˜ìŒ ì ‘í•œë‹¤ë©´, ì´ê²ƒì´ ë‹¹ì‹ ì„ ìœ„í•œ 옵션입니다", medium = "ì–´ë–¤ 난ì´ë„를 ì„ íƒí• ì§€ 잘 모르겠다면 중간 난ì´ë„로 í”Œë ˆì´ í•˜ì„¸ìš”", hard = "ì´ëŸ° ì¢…ë¥˜ì˜ ê²Œìž„ì— ìµìˆ™í•˜ë©° 좀 ë” ë„전하고 싶다면 ì´ ì˜µì…˜ì„ ì„ íƒí•˜ì„¸ìš”", start = "ì„ íƒí•œ 설정으로 ê²Œìž„ì„ ì‹œìž‘í•©ë‹ˆë‹¤", cancel = "새 ê²Œìž„ì„ ì‹œìž‘í•  ìƒê°ì€ 없었어요!", }, save_game_window = { new_save_game = "ì €ìž¥ë  ê²Œìž„ì˜ ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”", save_game = "ì €ìž¥ëœ ê²Œìž„ %s ë®ì–´ì“°ê¸°", }, update_window = { download = "가장 최신 ë²„ì „ì˜ CorsixTH 다운로드 페ì´ì§€ë¡œ ì´ë™í•©ë‹ˆë‹¤", ignore = "ì´ ì—…ë°ì´íŠ¸ë¥¼ 무시합니다. ë‹¤ìŒ ë²ˆì— CorsixTH 를 ì—´ 때 다시 알립니다", }, calls_dispatcher = { assigned = "누군가가 해당 ê³¼ì—…ì— í• ë‹¹ë˜ì–´ 있으면 ì´ ìƒìžê°€ 표시ë©ë‹ˆë‹¤", task = "과업 ëª©ë¡ - í• ë‹¹ëœ ì§ì›ì˜ 정보와 ê³¼ì—…ì˜ ìœ„ì¹˜ë¥¼ 보려면 ê³¼ì—…ì„ í´ë¦­í•˜ì„¸ìš”", close = "콜 ë””ìŠ¤íŒ¨ì³ ì°½ 닫기", }, research_policy = { research_progress = "ì´ ë¶„ì•¼ì—서 새로운 ë°œê²¬ì„ í•˜ê¸° 위한 ì§„í–‰ ìƒí™©: %1%/%2%", no_research = "ì§€ê¸ˆì€ ì´ ë¶„ì•¼ì— ëŒ€í•œ 연구가 ì´ë¤„지고 있지 않습니다", }, information = { close = "ì •ë³´ ì°½ 닫기", }, lua_console = { textbox = "실행할 루아 코드를 여기 입력하세요", execute_code = "입력한 코드 실행", close = "콘솔 닫기", }, folders_window = { browse_font = "다른 í°íЏ 파ì¼ì„ 지정합니다 ( 현재 위치: %1% )", screenshots_location = "기본ì ìœ¼ë¡œ, 스í¬ë¦°ìƒ·ë“¤ì€ 설정 파ì¼ì´ 있는 ê³³ì— í•¨ê»˜ 저장ë©ë‹ˆë‹¤. 필요한 경우 스í¬ë¦°ìƒ·ì„ ì›í•˜ëŠ” ê³³ì— ì €ìž¥í•  수 있습니다. 사용하기 ì›í•˜ëŠ” 디렉토리를 ì„ íƒí•˜ì„¸ìš”.", browse_music = "다른 ìŒì•… 디렉토리를 지정합니다 ( 현재 위치: %1% )", music_location = "mp3 ìŒì•… 파ì¼ë“¤ì´ 있는 위치를 지정하세요. 디렉토리는 미리 만들어져 있어야 합니다.", data_location = "ì˜¤ë¦¬ì§€ë„ í…Œë§ˆ ë³‘ì› ì„¤ì¹˜ 경로 (CorsixTH 를 í”Œë ˆì´ í•˜ê¸° 위해 í•„ìš”)", browse_data = "테마 ë³‘ì› ì„¤ì¹˜ 경로를 다시 설정합니다 ( 현재 위치: %1% )", savegames_location = "기본ì ìœ¼ë¡œ, ì €ìž¥ëœ ê²Œìž„ë“¤ì€ ì„¤ì • 파ì¼ì´ 있는 ê³³ì— í•¨ê»˜ 저장ë©ë‹ˆë‹¤. 필요한 경우 ì €ìž¥ëœ ê²Œìž„ë“¤ì„ ì›í•˜ëŠ” ê³³ì— ì €ìž¥í•  수 있습니다. 사용하기 ì›í•˜ëŠ” 디렉토리를 ì„ íƒí•˜ì„¸ìš”.", back = "ì´ ë©”ë‰´ë¥¼ ë‹«ê³  설정 메뉴로 ëŒì•„갑니다", browse_saves = "다른 저장 디렉토리를 지정합니다 ( 현재 위치: %1% )", browse = "í´ë” 위치를 지정합니다", browse_screenshots = "다른 스í¬ë¦°ìƒ· 디렉토리를 지정합니다 ( 현재 위치: %1% )", not_specified = "í´ë” 위치 지정ë˜ì§€ 않ìŒ!", font_location = "ì‚¬ìš©ì¤‘ì¸ ì–¸ì–´ë¥¼ í‘œì‹œí•˜ëŠ”ë° í•„ìš”í•œ í°íЏ 파ì¼ì˜ 위치를 지정합니다. ì´ê²ƒì„ 설정하지 않으면 ì˜¤ë¦¬ì§€ë„ ê²Œìž„ì— í¬í•¨ë˜ì§€ ì•Šì€ ë¬¸ìžë“¤ì€ 표시ë˜ì§€ 않습니다 (예: 러시아어, 중국어)", reset_to_default = "디렉토리를 기본 위치로 ë˜ëŒë¦½ë‹ˆë‹¤", default = "기본 위치", no_font_specified = "í°íЏ 위치 지정ë˜ì§€ 않ìŒ!", }, staff_window = { name = "ì§ì› ì´ë¦„", face = "ì´ ì‚¬ëžŒì˜ ì–¼êµ´ - 관리 í™”ë©´ì„ ë³´ë ¤ë©´ í´ë¦­", happiness = "행복ë„", tiredness = "피로ë„", ability = "능력", doctor_seniority = "계급 - 수련ì˜, ì „ê³µì˜, ë˜ëŠ” 전문ì˜", skills = "전문 분야 ìžê²©", surgeon = "외과 ì˜ì‚¬", psychiatrist = "ì •ì‹ ê³¼ ì˜ì‚¬", researcher = "연구ì›", salary = "월급", center_view = "왼쪽 í´ë¦­ìœ¼ë¡œ ì§ì› 보기, 오른쪽 í´ë¦­ìœ¼ë¡œ ë‹¤ìŒ ì§ì›ìœ¼ë¡œ 넘어가기", sack = "í•´ê³ ", pick_up = "ì§‘ì–´ 들기", close = "닫기", }, rooms = { gps_office = "환ìžëŠ” 진료실ì—서 ìµœì´ˆì˜ ìƒë‹´ì„ 받습니다", general_diag = "ì˜ì‚¬ëŠ” ì¼ë°˜ ì§„ë‹¨ì‹¤ì„ ì‚¬ìš©í•´ 환ìžë“¤ì˜ 기본 ì§„ë‹¨ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ê°’ì´ ì‹¸ê³  매우 효과ì ì¸ 편입니다", psychiatry = "ì •ì‹ ê³¼ì—서는 미친 환ìžë“¤ì„ 치료하거나, 다른 환ìžë“¤ì˜ ì§„ë‹¨ì„ ë„울 수 있지만 ì •ì‹ ê³¼ ì˜ì‚¬ ìžê²©ì´ 있는 ì˜ì‚¬ê°€ 필요합니다", cardiogram = "ì˜ì‚¬ëŠ” 심전ë„ì‹¤ì„ ì‚¬ìš©í•´ 환ìžë“¤ì„ 진단합니다", scanner = "ì˜ì‚¬ëŠ” 스ìºë„ˆì‹¤ì„ 사용해 환ìžë“¤ì„ 진단합니다", x_ray = "ì˜ì‚¬ëŠ” X-ë ˆì´ì‹¤ì„ 사용해서 환ìžë“¤ì„ 진단합니다", ultrascan = "ì˜ì‚¬ëŠ” 울트ë¼ìŠ¤ìº” ì‹œì„¤ì„ ì‚¬ìš©í•´ 환ìžë“¤ì„ 진단합니다", blood_machine = "ì˜ì‚¬ëŠ” 혈액 ë¶„ì„ì‹¤ì„ ì‚¬ìš©í•´ 환ìžë“¤ì„ 진단합니다", pharmacy = "간호사는 약국ì—서 환ìžë“¤ì„ 치료할 ì•½ì„ ì¡°ì œí•©ë‹ˆë‹¤", ward = "병ë™ì€ 진단과 ì¹˜ë£Œì— ëª¨ë‘ ìœ ìš©í•©ë‹ˆë‹¤. 환ìžë“¤ì„ ì´ê³³ì— 보내서 간호사를 통해 관찰하거나 수술 후 íšŒë³µê¸°ê°„ì„ ê°–ê²Œ 합니다", operating_theatre = "수술실ì—는 외과 ì˜ì‚¬ ìžê²©ì´ 있는 ì˜ì‚¬ ë‘ ëª…ì´ í•„ìš”í•©ë‹ˆë‹¤", inflation = "ì˜ì‚¬ëŠ” 팽창기를 사용해서 ë¶€ì€ ë¨¸ë¦¬ë¥¼ 치료합니다", tongue_clinic = "ì˜ì‚¬ëŠ” 혀 ì ˆë‹¨ì‹¤ì„ ì‚¬ìš©í•´ 늘어진 혀를 치료합니다", fracture_clinic = "간호사는 골절 í´ë¦¬ë‹‰ì„ 사용해서 부러진 뼈를 고칩니다", jelly_vat = "ì˜ì‚¬ëŠ” 젤리통으로 ì ¤ë¦¬ì—¼ì„ ì¹˜ë£Œí•©ë‹ˆë‹¤", electrolysis = "ì˜ì‚¬ëŠ” ì „ê¸°ë¶„í•´ì‹¤ì„ ì‚¬ìš©í•´ì„œ 모발과다ì¦ì„ 치료합니다", hair_restoration = "ì˜ì‚¬ëŠ” 모발 재ìƒê¸°ë¥¼ 사용해 대머리를 치료합니다", decontamination = "ì˜ì‚¬ëŠ” 오염제거 샤워를 통해 방사능 ì˜¤ì—¼ì„ ì¹˜ë£Œí•©ë‹ˆë‹¤", dna_fixer = "ì˜ì‚¬ëŠ” DNA ì •ì •ì‹¤ì„ ì‚¬ìš©í•´ ì™¸ê³„ì¸ DNA를 가진 환ìžë“¤ì„ 치료합니다", research_room = "ì—°êµ¬ì› ìžê²©ì„ 가진 ì˜ì‚¬ë“¤ì€ 연구실ì—서 신약과 새로운 ê¸°ê³„ë“±ì„ ë°œê²¬í•´ë‚¼ 수 있습니다", training_room = "êµìœ¡ì‹¤ì—서는 전문ì˜ê°€ 다른 ì˜ì‚¬ë“¤ì„ êµìœ¡ì‹œí‚¬ 수 있습니다", toilets = "í™”ìž¥ì‹¤ì„ ì§€ì–´ 환ìžë“¤ì´ ë‹¹ì‹ ì˜ ë³‘ì›ì„ 어지럽히는걸 막으세요!", staffroom = "ì˜ì‚¬ë“¤ê³¼ ê°„í˜¸ì‚¬ë“¤ì€ ì§ì› 휴게실ì—서 ê¸´ìž¥ì„ í’€ê³  피로를 풉니다", }, statement = { close = "명세서 화면 닫기", }, buy_objects_window = { price = "ì´ ë¬¼ê±´ì˜ ê°€ê²©", confirm = "ì„ íƒëœ 기물(들) 구매", cancel = "취소", decrease = "ì´ ë¬¼ê±´ 하나 ëœ êµ¬ë§¤", increase = "ì´ ë¬¼ê±´ 하나 ë” êµ¬ë§¤", total_value = "주문하는 ë¬¼ê±´ë“¤ì˜ ì´ ê°€ê²©", }, load_game_window = { load_game = "%s 게임 불러오기", load_autosave = "ìžë™ 저장 불러오기", load_game_number = "%d번 게임 불러오기", }, window_general = { confirm = "확ì¸", cancel = "취소", }, fax = { close = "메시지를 삭제하지 않고 ì°½ 닫기", }, objects = { chair = "ì˜ìž: 환ìžë“¤ì´ 여기 앉아서 ë³‘ì— ëŒ€í•´ ìƒë‹´í•©ë‹ˆë‹¤", litter = "쓰레기: 환ìžê°€ 버릴 ì“°ë ˆê¸°í†µì„ ì°¾ê¸° 못해서 ë°”ë‹¥ì— ë²„ë ¤ì§", sofa = "소파: ì§ì› 휴게실ì—서 쉬는 ì§ì›ë“¤ì€ 특별히 ë‚˜ì€ íœ´ì‹ ë°©ë²•ì´ ì—†ë‹¤ë©´ ì†ŒíŒŒì— ì¡°ìš©ížˆ 앉아있습니다", bench = "벤치: í™˜ìž í•œ ëª…ì´ íŽ¸í•˜ê²Œ 앉아서 기다릴 수 있는 ìžë¦¬ë¥¼ 제공합니다", video_game = "비디오 게임: ë‹¹ì‹ ì˜ ì§ì›ì´ Hi-Octane ì„ ì¦ê¸°ë©° ê¸´ìž¥ì„ í’€ê²Œ í•´ì¤ë‹ˆë‹¤", lamp = "전등: ë¹›ì„ ë¹„ì¶°ì„œ ì§ì›ë“¤ì´ ë³¼ 수 있게 합니다", door = "문: ì‚¬ëžŒë“¤ì´ ì‹œë„ ë•Œë„ ì—†ì´ ì—´ê³  닫습니다", auto_autopsy = "ìžë™ë¶€ê²€ê¸°: 새로운 ì¹˜ë£Œë²•ì„ ë°œê²¬í•˜ëŠ” ë° í° ë„ì›€ì„ ì¤ë‹ˆë‹¤", reception_desk = "접수대: 환ìžë“¤ì„ ì˜ì‚¬ë“¤ì—게 안내하는 접수ì›ì„ 필요로 합니다", tv = "TV: ë‹¹ì‹ ì˜ ì§ì›ì´ 좋아하는 ë°©ì†¡ì„ ë†“ì¹˜ì§€ 않게 해주세요", litter_bomb = "쓰레기 í­íƒ„: ê²½ìŸ ë³‘ì›ì„ ê³ ì˜ë¡œ 방해합니다", inflator = "팽창기: ë¶€ì€ ë¨¸ë¦¬ 환ìžë“¤ì„ 치료합니다", desk = "ì±…ìƒ: ì˜ì‚¬ê°€ PC를 사용하는 ë° í•„ìš”í•©ë‹ˆë‹¤", pool_table = "당구대: ë‹¹ì‹ ì˜ ì§ì›ì´ ê¸´ìž¥ì„ í‘¸ëŠ” ë° ì¢‹ìŠµë‹ˆë‹¤", bed = "침대: 굉장히 아픈 ì‚¬ëžŒë“¤ì´ ì¹¨ëŒ€ì— ëˆ•ìŠµë‹ˆë‹¤", drinks_machine = "ìžíŒê¸°: 환ìžë“¤ì´ 목마르지 않게 하고 ì´ìœ¤ì„ 남ê¹ë‹ˆë‹¤", bookcase = "책장: ì˜ì‚¬ë“¤ì˜ 참고 ìžë£Œ", skeleton = "해골: êµìœ¡ê³¼ 할로윈 ìš©ë„로 사용", computer = "컴퓨터: 핵심 연구 요소", bin = "쓰레기통: 환ìžë“¤ì´ 쓰레기를 여기 버립니다", pharmacy_cabinet = "약장: ì•½ì´ ë³´ê´€ë˜ëŠ” 장소", radiator = "ë¼ë””ì—ì´í„°: ë‹¹ì‹ ì˜ ë³‘ì›ì´ 추워지지 않게 합니다", atom_analyser = "화학 혼합기: ì—°êµ¬ì†Œì— ë°°ì¹˜ë˜ì–´ 연구 프로세스 전체를 ê°€ì†í™” 합니다", plant = "화초: 환ìžë“¤ì´ 행복하게 하고 공기를 정화합니다", toilet = "변소: 환ìžë“¤ì´ ì´ê±¸, ìŒ, 어쨌든 사용합니다", fire_extinguisher = "소화기: 오ë™ìž‘하는 ê¸°ê³„ì˜ ìœ„í—˜ì„ ìµœì†Œí™”í•©ë‹ˆë‹¤", lecture_chair = "ê°•ì˜ ì˜ìž: êµìœ¡ 받는 ì˜ì‚¬ë“¤ì´ ì—¬ê¸°ì— ì•‰ì•„ì„œ 필기하고, 지루해하며 빈둥거립니다. ì˜ìžë¥¼ ë§Žì´ ë°°ì¹˜í•  ìˆ˜ë¡ ë§Žì€ í•™ìƒì´ ìˆ˜ì—…ì„ ë“¤ì„ ìˆ˜ 있습니다", toilet_sink = "세면대: 위ìƒì— 신경쓰는 환ìžë“¤ì€ 여기서 ë”러운 ì†ì„ ì”»ì„ì§€ë„ ëª¨ë¦…ë‹ˆë‹¤. 충분한 ìˆ˜ì˜ ì„¸ë©´ëŒ€ê°€ 없으면 환ìžë“¤ì€ 불행해집니다", cabinet = "ìºë¹„ë„·: 환ìžë“¤ì— 대한 서류철, 노트, 연구 문서 ë“±ì„ ë³´ê´€í•©ë‹ˆë‹¤", }, build_room_window = { cost = "현재 ì„ íƒëœ ë°©ì˜ ë¹„ìš©", room_classes = { diagnosis = "진료 ì‹œì„¤ì„ ì„ íƒ", treatment = "ì¼ë°˜ 치료 ì‹œì„¤ì„ ì„ íƒ", clinic = "특화 í´ë¦¬ë‹‰ ì‹œì„¤ì„ ì„ íƒ", facilities = "편ì˜, 특수 시설 ì„ íƒ", }, close = "ìš”ì²­ì„ ì·¨ì†Œí•˜ê³  게임으로 ëŒì•„ê°", }, options_window = { fullscreen = "ê²Œìž„ì„ ì „ì²´í™”ë©´ìœ¼ë¡œ 플레ì´í•  것ì¸ì§€ 설정합니다", cancel = "í•´ìƒë„를 변경하지 않고 ëŒì•„갑니다", back = "옵션 ì°½ì„ ë‹«ìŠµë‹ˆë‹¤", language = "게임 ë‚´ì˜ ê¸€ì„ í‘œì‹œí•  언어", apply = "ìž…ë ¥ëœ í•´ìƒë„를 ì ìš©í•©ë‹ˆë‹¤", change_resolution = "ì™¼ìª½ì— ìž…ë ¥ëœ í•´ìƒë„로 변경합니다", fullscreen_button = "전체화면 ì„¤ì •ì„ ë³€ê²½í•˜ë ¤ë©´ í´ë¦­í•˜ì„¸ìš”", width = "ì›í•˜ëŠ” 화면 너비를 입력하세요", language_dropdown_item = "%s ì„(를) 언어로 ì„ íƒí•©ë‹ˆë‹¤", height = "ì›í•˜ëŠ” 화면 높ì´ë¥¼ 입력하세요", select_language = "게임 언어를 ì„ íƒí•˜ì„¸ìš”", select_resolution = "새로운 í•´ìƒë„를 ì„ íƒí•˜ì„¸ìš”", resolution = "ê²Œìž„ì´ ì‹¤í–‰ë  í•´ìƒë„", audio_button = "게임 ì „ì²´ì˜ ì˜¤ë””ì˜¤ë¥¼ 켜고 ë•니다", folder_button = "í´ë” 옵션", audio_toggle = "켜고 ë„기", customise_button = "게임 í”Œë ˆì´ ê²½í—˜ì„ ì»¤ìŠ¤í„°ë§ˆì´ì¦ˆ 하기 위한 세부 설정", }, } menu_charts = { bank_manager = " (F1) ì€í–‰ ì§€ì ìž¥ ", statement = " (F2) 명세서 ", staff_listing = " (F3) ì§ì› ëª©ë¡ ", town_map = " (F4) ë§ˆì„ ì§€ë„ ", casebook = " (F5) 사례집 ", research = " (F6) 연구 ", status = " (F7) ìƒíƒœ ", graphs = " (F8) 그래프 ", policy = " (F9) ì •ì±… ", briefing = " 브리핑 ", } town_map = { number = "êµ¬íš ë²ˆí˜¸", not_for_sale = "소유 불가", price = "êµ¬íš ê°€ê²©", for_sale = "íŒë§¤ì¤‘", owner = "êµ¬íš ì†Œìœ ì£¼", area = "êµ¬íš ë©´ì ", } custom_game_window = { caption = "커스텀 게임", free_build = "ìžìœ  건설", } cheats_window = { caption = "치트", warning = "경고: 치트를 사용하면 ë ˆë²¨ì´ ë나고 보너스 ì ìˆ˜ë¥¼ 전혀 ë°›ì„ ìˆ˜ 없게 ë©ë‹ˆë‹¤!", cheats = { money = "ëˆ ì¹˜íŠ¸", all_research = "모든 연구 치트", emergency = "ì‘급 ìƒí™© ìƒì„±", vip = "VIP ìƒì„±", earthquake = "지진 ìƒì„±", create_patient = "í™˜ìž ìƒì„±", end_month = "ì›”ë§", end_year = "ì—°ë§", lose_level = "레벨 패배", win_level = "레벨 승리", }, close = "닫기", cheated = { no = "치트 사용ë¨: 아니오", yes = "치트 사용ë¨: 예", }, } room_descriptions = { ultrascan = { [1] = "울트ë¼ìŠ¤ìº”//", [2] = "울트ë¼ìŠ¤ìº”ì€ ê¶ê·¹ì˜ 진단 장비ë¼ê³  í•  수 있습니다. ë¹„ìš©ì´ ë§Žì´ ë“¤ì§€ë§Œ ìµœê³ ì˜ ì§„ë‹¨ì„ ì›í•œë‹¤ë©´ 충분히 가치가 있습니다.//", [3] = "울트ë¼ìŠ¤ìº”ì„ ìž‘ë™í•˜ë ¤ë©´ ì˜ì‚¬ê°€ 필요합니다. ê¸°ê³„ì˜ ì •ë¹„ ë˜í•œ 필요합니다.", }, gp = { [1] = "진료실//", [2] = "ì´ê²ƒì€ 병ì›ì˜ 가장 ê¸°ë³¸ì´ ë˜ëŠ” 진료실입니다. 새로 방문한 환ìžëŠ” ì–´ë–¤ ì´ìƒì´ 있는지 알아보기 위해 ì¼ë‹¨ 진료실로 보내집니다. 그러고 나서는 다른 진단 시설로 보내지거나 치료할 수 있는 시설로 보내집니다. 만약 ì´ ì§„ë£Œì‹¤ì´ ë„ˆë¬´ 바빠진다면 다른 ì§„ë£Œì‹¤ì„ ì¶”ê°€ë¡œ ì§€ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë°©ì˜ í¬ê¸°ê°€ í´ ìˆ˜ë¡, 추가 ê¸°ë¬¼ë“¤ì„ ë§Žì´ ë°°ì¹˜í•  ìˆ˜ë¡ ì˜ì‚¬ì˜ ìœ„ì‹ ì´ ì„œê²Œ ë©ë‹ˆë‹¤. ì´ê²ƒì€ 다른 ë°©ë“¤ì— ëŒ€í•´ì„œë„ ë§ˆì°¬ê°€ì§€ë¡œ ì ìš©ë©ë‹ˆë‹¤.//", [3] = "진료실ì—는 ì˜ì‚¬ê°€ 필요합니다.", }, fracture_clinic = { [1] = "골절 í´ë¦¬ë‹‰//", [2] = "ìš´ì´ ì—†ì´ ë¼ˆê°€ 부러진 환ìžë“¤ì´ ì´ê³³ìœ¼ë¡œ 옵니다. ê¹ìФ 제거기는 강력한 공업용 ë ˆì´ì €ë¡œ êµ³ì€ ê¹ìŠ¤ë¥¼ 잘ë¼ë‚´ë©´ì„œ 환ìžì—게는 아주 미약한 통ì¦ë§Œì„ 유발합니다.//", [3] = "골절 í´ë¦¬ë‹‰ì—는 간호사가 필요합니다. 그리고 ê¸°ê³„ë„ ìžì£¼ 정비해 주어야 합니다.", }, tv_room = { [1] = "TVì‹¤ì€ ì‚¬ìš©ë˜ì§€ 않ìŒ", }, inflation = { [1] = "팽창 í´ë¦¬ë‹‰//", [2] = "고통스럽지만 우스운 ëª¨ìŠµì˜ ë¶€ì€ ë¨¸ë¦¬ ì¦ìƒì„ 가진 환ìžë“¤ì´ 팽창 í´ë¦¬ë‹‰ì— 오면, ê·¸ë“¤ì˜ ëŒ€ë‘를 터뜨려서 곧바로 ì ì • 압력으로 부풀립니다.//", [3] = "팽창 í´ë¦¬ë‹‰ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 잡역부가 기계를 정비해 주어야 합니다.", }, jelly_vat = { [1] = "젤리 í´ë¦¬ë‹‰//", [2] = "우스운 ë³‘ì¸ ì ¤ë¦¬ì—¼ì˜ ì €ì£¼ë¥¼ ë°›ì€ í™˜ìžë“¤ì€ 비틀거리며 젤리 í´ë¦¬ë‹‰ì— 와서 젤리 í†µì— ë“¤ì–´ê°€ì•¼ 합니다. 그러면 ì˜í•™ì ìœ¼ë¡œ 완전히 해명ë˜ì§€ ì•Šì€ ì‹ ê¸°í•œ 방법으로 치료ë©ë‹ˆë‹¤.//", [3] = "젤리 í´ë¦¬ë‹‰ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 ìž¡ì—­ë¶€ì˜ ì •ë¹„ë„ í•„ìš”í•©ë‹ˆë‹¤.", }, scanner = { [1] = "스ìºë„ˆ//", [2] = "ì •êµí•œ 스ìºë„ˆë¡œ 환ìžë“¤ì„ 정확히 진단합니다. 그러고 나서 환ìžë“¤ì€ 다시 진료실로 ëŒì•„ê°€ ë‹¤ìŒ ì²˜ë°©ì„ ë°›ìŠµë‹ˆë‹¤.//", [3] = "스ìºë„ˆì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 ì •ë¹„ë„ í•„ìš”í•©ë‹ˆë‹¤.", }, blood_machine = { [1] = "혈액 ë¶„ì„기//", [2] = "혈액 ë¶„ì„기는 환ìžì˜ 혈액 ë‚´ì˜ ì„¸í¬ë¥¼ 확ì¸í•˜ì—¬ 어디가 잘못ë˜ì—ˆëŠ”ì§€ 확ì¸í•˜ëŠ” 진단 장비입니다.//", [3] = "혈액 ë¶„ì„기ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 ì •ë¹„ë„ í•„ìš”í•©ë‹ˆë‹¤.", }, pharmacy = { [1] = "약국//", [2] = "약물 ì²˜ë°©ì„ ë°›ì€ í™˜ìžë“¤ì€ ì•½êµ­ì— ê°€ì„œ ì•½ì„ ë°›ì•„ì•¼ 합니다. ë” ë§Žì€ ì•½ë¬¼ ì¹˜ë£Œë²•ì´ ì—°êµ¬ë ìˆ˜ë¡ ì•½êµ­ì€ ë” ë°”ë¹ ì§‘ë‹ˆë‹¤. 나중ì—는 ì•½êµ­ì„ ë” ì§“ëŠ” ê²ƒë„ ì¢‹ìŠµë‹ˆë‹¤.//", [3] = "약국ì—는 간호사가 필요합니다.", }, cardiogram = { [1] = "심전ë„실//", [2] = "환ìžë“¤ì€ 다시 ì§„ë£Œì‹¤ì— ëŒì•„가서 ì²˜ë°©ì„ ë°›ê¸° ì „ì— ì´ê³³ì— 와서 ì§„ë‹¨ì„ ë°›ìŠµë‹ˆë‹¤.//", [3] = "심전ë„실ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 ì •ë¹„ë„ í•„ìš”í•©ë‹ˆë‹¤.", }, ward = { [1] = "병ë™//", [2] = "환ìžë“¤ì˜ 진단 ë„중 ì´ê³³ì— 와서 간호사가 살펴볼 수 있습니다. 환ìžë“¤ì€ ìˆ˜ìˆ ì„ ë°›ê¸° 전까지 ì´ê³³ì— 머무릅니다.//", [3] = "병ë™ì—는 간호사가 필요합니다.", }, psych = { [1] = "ì •ì‹ ê³¼//", [2] = "ì •ì§„ 질환으로 íŒëª…ëœ í™˜ìžë“¤ì€ ì •ì‹ ê³¼ì— ë°©ë¬¸í•´ì„œ ìƒë‹´ì„ 받아야 합니다. ì •ì‹ ê³¼ ì˜ì‚¬ë“¤ì€ ë˜í•œ 환ìžë“¤ì´ ì–´ë–¤ ë³‘ì´ ìžˆëŠ”ì§€ ì§„ë‹¨ë„ ê°€ëŠ¥í•˜ê³ , ê·¸ê²ƒì´ ì •ì‹  ì§ˆí™˜ì¸ ê²½ìš°ì—는 침ìƒì„ 사용해 치료할 수 있습니다.//", [3] = "ì •ì‹ ê³¼ì—는 ì •ì‹ ê³¼ êµìœ¡ì„ ë°›ì€ ì˜ì‚¬ê°€ 필요합니다.", }, staff_room = { [1] = "ì§ì› 휴게실//", [2] = "ì§ì›ë“¤ë„ ì¼ì„ 하다보면 지치게 ë©ë‹ˆë‹¤. ê·¸ë“¤ì€ ê¸´ìž¥ì„ í’€ê³  ìƒê¸°ë¥¼ 찾기 위해서 ì´ ë°©ì„ í•„ìš”ë¡œ 합니다. 피로한 ì§ì›ì€ ì¼í•˜ëŠ” ì†ë„ê°€ ëŠë ¤ì§€ê³ , 급여를 ë” ìš”êµ¬í•˜ë©°, ê²°êµ­ì—는 병ì›ì„ 나가게 ë©ë‹ˆë‹¤. ë˜í•œ 피로한 ì§ì›ë“¤ì€ 실수를 ë” ìžì£¼ 합니다. 다양한 í•  ê²ƒë“¤ì´ ìžˆëŠ” ì§ì› íœ´ê²Œì‹¤ì€ ì§€ì„ ë§Œí•œ 가치가 있습니다. 여러 ëª…ì˜ ì§ì›ì´ ë™ì‹œì— 쉴 수 있는 ê³µê°„ì´ ë‚˜ì˜¤ë„ë¡ í•´ì£¼ì„¸ìš”.", }, operating_theatre = { [1] = "수술실//", [2] = "ì´ ì¤‘ìš”í•œ 시설ì—서 다양한 ì¦ìƒë“¤ì´ 치료ë©ë‹ˆë‹¤. ìˆ˜ìˆ ì‹¤ì˜ í¬ê¸°ëŠ” ì ì ˆí•´ì•¼ 하며, 올바른 장비들로 채워져야 합니다. ì´ ì‹œì„¤ì€ ë³‘ì›ì— 필수 불가결한 존재입니다.//", [3] = "수술실ì—는 외과 ì˜ì‚¬ ìžê²©ì´ 있는 ì˜ì‚¬ ë‘ ëª…ì´ í•„ìš”í•©ë‹ˆë‹¤.", }, training = { [1] = "êµìœ¡ì‹¤//", [2] = "수련ì˜ì™€ ì „ê³µì˜ëŠ” 여기서 êµìœ¡ë°›ìœ¼ë©´ì„œ 추가 ìžê²©ì„ ì·¨ë“í•  수 있습니다. 외과, 연구ì›, ì •ì‹ ê³¼ ìžê²©ì„ 가진 전문ì˜ëŠ” ìžì‹ ì—게 êµìœ¡ë°›ëŠ” ì˜ì‚¬ë“¤ì—게 ì´ëŸ° 전문 분야 ì§€ì‹ë„ 함께 전수하게 ë©ë‹ˆë‹¤. ì´ë¯¸ ìžê²©ì´ 있는 ì˜ì‚¬ë“¤ì€, 여기서 êµìœ¡ë°›ëŠ” ë™ì•ˆ 해당 ì§€ì‹ì„ 어떻게 ë” ìž˜ 사용할 수 있는지 깨우치게 ë  ê²ë‹ˆë‹¤.//", [3] = "êµìœ¡ì‹¤ì—는 전문ì˜ê°€ 한 명 필요합니다.", }, dna_fixer = { [1] = "DNA í´ë¦¬ë‹‰//", [2] = "다른 세계ì—서 온 외계ì¸ì—게 ê°ì—¼ëœ 환ìžë“¤ì€ ê·¸ë“¤ì˜ DNA 를 êµì²´ë°›ì•„야 합니다. DNA 정정기는 굉장히 복잡한 설비ì´ë¯€ë¡œ, ë§Œì•½ì„ ìœ„í•´ 소화기를 비치해 ë‘는 ê²ƒì´ í˜„ëª…í•  것입니다.//", [3] = "DNA 정정기는 잡역부가 주기ì ìœ¼ë¡œ 정비해주어야 합니다. ë˜í•œ, DNA 정정기를 ìž‘ë™í•˜ë ¤ë©´ ì—°êµ¬ì› ìžê²©ì„ 갖춘 ì˜ì‚¬ê°€ 필요합니다.", }, research = { [1] = "연구실//", [2] = "연구실ì—서는 신약과 치료법 ë“±ì´ ìƒˆë¡œ 발견ë˜ê±°ë‚˜ 개선ë©ë‹ˆë‹¤. 병ì›ì˜ 중요한 부분으로서, ë‹¹ì‹ ì˜ ì¹˜ë£Œìœ¨ì— ê¸°ì ì„ 선사할 것입니다.//", [3] = "연구실ì—는 ì—°êµ¬ì› ìžê²©ì´ 있는 ì˜ì‚¬ê°€ 필요합니다.", }, hair_restoration = { [1] = "모발 ìž¬ìƒ í´ë¦¬ë‹‰//", [2] = "극단ì ì¸ 탈모를 겪는 환ìžë“¤ì€ ì´ í´ë¦¬ë‹‰ì˜ 모발 재ìƒê¸°ë¡œ 오게 ë©ë‹ˆë‹¤. ì˜ì‚¬ê°€ 기계를 ìž‘ë™í•˜ë©´, 환ìžì˜ ë¨¸ë¦¬ì— ìƒˆë¡œìš´ 머리카ë½ì´ ì‹ ì†í•˜ê²Œ 심겨집니다.//", [3] = "모발 ìž¬ìƒ í´ë¦¬ë‹‰ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 주기ì ì¸ 정비가 필요합니다.", }, general_diag = { [1] = "ì¼ë°˜ 진단실//", [2] = "ë” ì§„ë‹¨ë°›ì•„ì•¼ 하는 환ìžë“¤ì€ ì´ê³³ìœ¼ë¡œ 보내집니다. 진료실ì—서 ì´ìƒì„ 발견하지 못한 경우, ì¼ë°˜ 진단실ì—서는 대개 발견ë©ë‹ˆë‹¤. 여기서 나온 결과를 ë¶„ì„하기 위해 환ìžë“¤ì€ 다시 진료실로 보내집니다.//", [3] = "ì¼ë°˜ 진단실ì—는 ì˜ì‚¬ê°€ 필요합니다.", }, electrolysis = { [1] = "전기분해실//", [2] = "모발 ê³¼ë‹¤ì¦ í™˜ìžë“¤ì´ ì´ê³³ìœ¼ë¡œ 보내지며, 여기서는 전기분해기 ë¼ê³  불리는 특수한 기계로 í„¸ì„ í™• 잡아뺀 ë’¤, 시멘트와 í¬ê²Œ 다르지 ì•Šì€ ë¬¼ì§ˆë¡œ ëª¨ê³µì„ ì „ê¸°ì ìœ¼ë¡œ 봉쇄합니다.//", [3] = "전기분해실ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 잡역부가 정비해 주어야 합니다.", }, slack_tongue = { [1] = "늘어진 혀 í´ë¦¬ë‹‰//", [2] = "진료실ì—서 늘어진 혀로 ì§„ë‹¨ë°›ì€ í™˜ìžë“¤ì€ ì´ í´ë¦¬ë‹‰ì— 와서 치료 받게 ë©ë‹ˆë‹¤. ì˜ì‚¬ëŠ” ê³ ë„ ê¸°ìˆ ì˜ ê¸°ê³„ë¡œ 혀를 연장해서 잘ë¼ë‚´ì–´ 환ìžë¥¼ ì¼ìƒì˜ 건강한 ìƒíƒœë¡œ ëŒë ¤ë†“습니다.//", [3] = "늘어진 혀 í´ë¦¬ë‹‰ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 ìžì£¼ 정비해 주어야 합니다.", }, toilets = { [1] = "화장실//", [2] = "ìƒë¦¬ 현ìƒì„ ëŠë¼ëŠ” 환ìžë“¤ì€ í™”ìž¥ì‹¤ì— ê°€ì„œ ì¼ì„ ë´ ì£¼ì–´ì•¼ 합니다. 방문ìžê°€ 아주 ë§Žì„ ê²ƒìœ¼ë¡œ 예ìƒëœë‹¤ë©´, ë‹¹ì‹ ì€ ì¶”ê°€ë¡œ 칸ì´ë‚˜ 세면대를 ë” ì§€ì„ ìˆ˜ 있습니다. ì–´ë–¤ 경우ì—는 ë³‘ì› ì•ˆì˜ ë‹¤ë¥¸ ê³³ì— í™”ìž¥ì‹¤ ì‹œì„¤ì„ ë” ì§“ëŠ” ê²ƒì„ ê³ ë ¤í•´ì•¼ í•  ì§€ë„ ëª¨ë¦…ë‹ˆë‹¤.", }, no_room = { [1] = "", }, x_ray = { [1] = "X-ë ˆì´//", [2] = "X-ë ˆì´ ê¸°ê³„ëŠ” 특수 ë°©ì‚¬ì„ ì„ í†µí•´ì„œ ì¸ì²´ì˜ ë‚´ë¶€ ì‚¬ì§„ì„ ì°ì–´ì„œ, 환ìžì˜ 어디가 ì´ìƒì´ 있는지 ë” ìž˜ ì´í•´í•˜ê²Œ í•´ ì¤ë‹ˆë‹¤.//", [3] = "X-ë ˆì´ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 ì •ë¹„ë„ í•„ìš”í•©ë‹ˆë‹¤.", }, decontamination = { [1] = "오염제거 í´ë¦¬ë‹‰//", [2] = "ë°©ì‚¬ì„ ì— ë…¸ì¶œëœ í™˜ìžë“¤ì€ ì‹ ì†í•˜ê²Œ 오염 제거 í´ë¦¬ë‹‰ìœ¼ë¡œ 오게 ë©ë‹ˆë‹¤. ì´ ë°©ì—는 온갖 무시무시한 방사능과 ì§„ì°½ì„ ì”»ì–´ì£¼ëŠ” 샤워기가 설치ë˜ì–´ 있습니다.//", [3] = "오염제거 í´ë¦¬ë‹‰ì—는 ì˜ì‚¬ê°€ 필요합니다. 그리고 잡역부가 정비해 주어야 합니다.", }, } errors = { unavailable_screen_size = "요청한 화면 í¬ê¸°ëŠ” 전체화면ì—서 ì§€ì›ë˜ì§€ 않습니다.", dialog_missing_graphics = "죄송합니다, ë°ëª¨ ë°ì´í„° 파ì¼ì€ ì´ ëŒ€í™”ì°½ì´ í¬í•¨ë˜ì–´ 있지 않습니다.", load_prefix = "ê²Œìž„ì„ ë¶ˆëŸ¬ì˜¤ëŠ” 중 오류 ë°œìƒ: ", load_quick_save = "ì—러, 빠른 ì €ìž¥ì´ ì¡´ìž¬í•˜ì§€ 않아 ì½ì–´ì˜¬ 수 없습니다. 지금 막 빠른 저장 파ì¼ì„ ìƒì„±í–ˆìŠµë‹ˆë‹¤!", save_prefix = "ê²Œìž„ì„ ì €ìž¥í•˜ëŠ” 중 오류 ë°œìƒ: ", map_file_missing = "ì´ ë ˆë²¨ì˜ ë§µ 파ì¼(%s)ì„ ì°¾ì„ ìˆ˜ 없습니다!", minimum_screen_size = "최소 640x480 ì˜ í™”ë©´ í¬ê¸°ë¥¼ 입력해 주세요.", alien_dna = "주ì˜: ì™¸ê³„ì¸ í™˜ìžë“¤ì´ ì•‰ì„ ë•Œ, ë¬¸ì„ ì—´ê±°ë‚˜ ë‘드릴 때 ë“±ì˜ ì• ë‹ˆë©”ì´ì…˜ì´ 없습니다. ë”°ë¼ì„œ, ì›ë³¸ 테마 병ì›ì—서와 ê°™ì´ í™˜ìžë“¤ì€ ì´ëŸ° í–‰ë™ì„ 취할 때 잠시ë™ì•ˆ í‰ìƒì‹œì˜ 모습으로 변했다가 ë˜ëŒì•„오게 ë©ë‹ˆë‹¤. 외계 DNA 환ìžë“¤ì€ 해당 레벨ì—서 나타나ë„ë¡ ì„¤ì •ë˜ì–´ ìžˆì„ ê²½ìš°ì—ë§Œ 나타납니다", fractured_bones = "주ì˜: 여성 골절 환ìžë“¤ì˜ 애니메ì´ì…˜ì€ 완전하지 못합니다", } menu_options_warmth_colors = { choice_2 = " 파랑 ì´ˆë¡ ë¹¨ê°• ", choice_1 = " 빨강 ", choice_3 = " 노랑 주황 빨강 ", } bank_manager = { hospital_value = "ë³‘ì› ê°€ì¹˜", balance = "잔고", current_loan = "대출금", interest_payment = "ì´ìž", insurance_owed = "보험금", inflation_rate = "ì¸í”Œë ˆì´ì…˜ 비율", interest_rate = "ì´ìžìœ¨", statistics_page = { date = "ë‚ ì§œ", details = "ìƒì„¸", money_out = "지출", money_in = "수입", balance = "잔고", current_balance = "현재 잔고", }, } main_menu = { exit = "종료", custom_level = "ë‹¨ì¼ ì‹œë‚˜ë¦¬ì˜¤", version = "버전: ", new_game = "캠페ì¸", load_game = "불러오기", options = "옵션", savegame_version = "저장 버전: ", } date_format = { daymonth = "%2%ì›” %1%ì¼", } menu_display = { mcga_lo_res = " MCGA 저해ìƒë„ ", shadows = " ê·¸ë¦¼ìž ", high_res = " ê³ í•´ìƒë„ ", } pay_rise = { definite_quit = "ë‹¹ì‹ ì´ ë¬´ìŠ¨ì§“ì„ í•´ë„ ë‚  ë¶™ìž¡ì„ ìˆ˜ 없습니다. 여기와는 ì´ì œ ëì´ì—ìš”.", regular = { [1] = "난 너무 지쳤어요. ì´ ë§í•  ì§ìž¥ 때려치는 것 ë³´ê³ ì‹¶ì§€ 않으면, 좀 쉬게 해주고, %d ë§Œí¼ ê¸‰ì—¬ë¥¼ 올려주세요.", [2] = "ì •ë§ í”¼ê³¤í•©ë‹ˆë‹¤. 휴ì‹ë„ 좀 필요하고, ì›”ê¸‰ì„ %d ë§Œí¼ ì˜¬ë ¤ì„œ %d 로 만들어줘요. 지금 당장ì´ìš”, ë…¸ë™ë ¥ ì°©ì·¨ìž ì–‘ë°˜.", [3] = "ì´ë´ìš”. 난 지금 개처럼 ì¼í•˜ê³  있어요. %d ë§Œí¼ ë³´ë„ˆìŠ¤ë¥¼ 주면 ì´ ë³‘ì›ì— 남ë„ë¡ í•˜ì£ .", [4] = "난 굉장히 불행해요. 급여를 %d ì¸ìƒí•´ì„œ %d 로 만들어주지 않으면 난 나가겠어요.", [5] = "우리 ë¶€ëª¨ë‹˜ì€ ì˜ë£Œê³„로 오면 ëˆ ìž˜ 벌거ë¼ê³  하셨는ë°. 그러니까 %d ë§Œí¼ ê¸‰ì—¬ ì¸ìƒí•´ì£¼ì§€ 않으면 컴퓨터 게임 제작ìžê°€ ë¼ë²„리고 ë§ê² ì–´ìš”.", [6] = "ì´ì   넌ëœë¨¸ë¦¬ê°€ 나요. ì›”ê¸‰ì„ ì›¬ë§Œí¼ ì˜¬ë ¤ì£¼ì„¸ìš”. %d ì •ë„ ì¸ìƒí•´ì£¼ë©´ ì ë‹¹í•  것 같군요.", }, poached = "ì €ì—게 %d ë§Œí¼ ì£¼ê² ë‹¤ê³  %s ì—서 ì´ì§ ì œì˜ê°€ 왔어요. 최소한 ì´ë§Œí¼ 주지 않으면 떠나겠어요.", } menu_debug = { jump_to_level = " ë‹¤ìŒ ë ˆë²¨ë¡œ ì í”„ ", transparent_walls = " (X) 투명한 ë²½ ", limit_camera = " ì¹´ë©”ë¼ ì œí•œ ", disable_salary_raise = " 급여 ì¸ìƒ 비활성화 ", make_debug_fax = " 디버그 팩스 만들기 ", make_debug_patient = " 디버그 í™˜ìž ë§Œë“¤ê¸° ", cheats = " (F11) 치트 ", lua_console = " (F12) 루아 콘솔 ", calls_dispatcher = " 콜 ë””ìŠ¤íŒ¨ì³ ", dump_strings = " 문ìžì—´ ë¤í”„ ", dump_gamelog = " (CTRL+D) 게임 로그 ë¤í”„ ", map_overlay = " ë§µ ì˜¤ë²„ë ˆì´ ", sprite_viewer = " 스프ë¼ì´íЏ ë·°ì–´ ", } progress_report = { free_build = "ìžìœ  건설", too_hot = "난방 ì‹œìŠ¤í…œì„ ì¢€ 추려내세요. ì§€ê¸ˆì€ ë„ˆë¬´ ë”워요.", percentage_pop = "% ì¸êµ¬", win_criteria = "승리 요건", very_unhappy = "ì‚¬ëžŒë“¤ì´ êµ‰ìž¥ížˆ 불행합니다.", quite_unhappy = "ì‚¬ëžŒë“¤ì´ ê½¤ 불행합니다.", header = "ì§„í–‰ ìƒí™© 보고서", too_cold = "너무 춥습니다. ë¼ë””ì—ì´í„°ë¥¼ 좀 설치하세요.", more_drinks_machines = "ìžíŒê¸°ë¥¼ ë” ì„¤ì¹˜í•˜ì„¸ìš”.", } menu_options = { sound = " íš¨ê³¼ìŒ ", announcements = " 공지 ", music = " ìŒì•… ", sound_vol = " íš¨ê³¼ìŒ ë³¼ë¥¨ ", announcements_vol = " 공지 볼륨 ", music_vol = " ìŒì•… 볼륨 ", jukebox = " (J) 주í¬ë°•스 ", lock_windows = " ì°½ 잠그기 ", edge_scrolling = " 가장ìžë¦¬ 스í¬ë¡¤ ", adviser_disabled = " (SHIFT+A) ì¡°ì–¸ìž ", twentyfour_hour_clock = " 24 시간 시계 ", warmth_colors = " ì˜¨ë„ í‘œì‹œ 색 ", game_speed = " 게임 ì†ë„ ", autosave = " ìžë™ 저장 ", wage_increase = " 급여 ì¸ìƒ ", } menu_options_game_speed = { pause = " (P) ì¼ì‹œ ì •ì§€ ", slowest = " (1) 가장 ëŠë¦¼ ", slower = " (2) ëŠë¦¼ ", normal = " (3) 보통 ", max_speed = " (4) 최고 ì†ë„ ", and_then_some_more = " (5) ì—서 ë” ë¹ ë¥´ê²Œ ", } rooms_short = { gps_office = "진료실", general_diag = "ì¼ë°˜ 진단실", ultrascan = "울트ë¼ìŠ¤ìº”", research_room = "연구실", fracture_clinic = "골절 í´ë¦¬ë‹‰", destroyed = "파괴ë¨", staffroom = "ì§ì› 휴게실", jelly_vat = "젤리 í´ë¦¬ë‹‰", scanner = "스ìºë„ˆ", decontamination = "오염제거 í´ë¦¬ë‹‰", pharmacy = "약국", cardiogram = "심전ë„실", reception = "접수처", training_room = "êµìœ¡ì‹¤", corridor_objects = "ë³µë„ ê¸°ë¬¼", operating_theatre = "수술실", dna_fixer = "DNA 정정기", ward = "병ë™", psychiatric = "ì •ì‹ ê³¼", hair_restoration = "모발 ìž¬ìƒ í´ë¦¬ë‹‰", inflation = "팽창 í´ë¦¬ë‹‰", tongue_clinic = "늘어진 혀 í´ë¦¬ë‹‰", toilets = "화장실", electrolysis = "전기분해실", x_ray = "X-ë ˆì´", blood_machine = "혈액 ë¶„ì„기", } lua_console = { execute_code = "실행", close = "닫기", } staff_descriptions = { good = { [1] = "ìƒë‹¹ížˆ 빠르고 성실함. ", [2] = "굉장히 세심하고 사려깊ìŒ. ", [3] = "다양한 ëŠ¥ë ¥ì„ ë³´ìœ . ", [4] = "굉장히 친절하고 잘 웃ìŒ. ", [5] = "ì²´ë ¥ì´ ë›°ì–´ë‚¨. 오래 ì§€ì†í•  수 있ìŒ. ", [6] = "ë†€ëž„ë§Œí¼ ê³µì†í•˜ê³  온화함. ", [7] = "ìž¬ëŠ¥ì´ íŠ¹ì¶œë‚¨. ", [8] = "주어진 ì¼ì— ìµœì„ ì„ ë‹¤í•¨. ", [9] = "í¬ê¸°í•˜ì§€ 않는 완벽주ì˜ìž. ", [10] = "미소로 ì‚¬ëžŒë“¤ì„ ë•ëŠ”ë° ì „ë…함. ", [11] = "매력ì ì´ê³ , ê³µì†í•˜ë©°, ë„ì›€ì´ ë¨. ", [12] = "ì˜ìš•ì ì´ê³  헌신ì ìž„. ", [13] = "ì‚¬ëžŒì´ ì¢‹ê³  아주 열심히 ì¼í•¨. ", [14] = "성실하고 친근함. ", [15] = "신중하고 ì‘급 ìƒí™©ì— 믿ì„만함. ", }, misc = { [1] = "골프를 침. ", [2] = "스쿠버 다ì´ë²„. ", [3] = "ì–¼ìŒ ì¡°ê°ìƒ 제작. ", [4] = "ì™€ì¸ ì• í˜¸ê°€. ", [5] = "경주용 ìžë™ì°¨ ìš´ì „. ", [6] = "번지 ì í”„를 함. ", [7] = "맥주잔 받침 수집가. ", [8] = "무대 아래로 뛰어내리는 ê²ƒì„ ì¦ê¹€. ", [9] = "방귀대장. ", [10] = "ê°•ì„ ë„“ížˆëŠ” ê²ƒì„ ì¦ê¹€. ", [11] = "위스키를 ì¦ë¥˜. ", [12] = "DIY ì— ëŠ¥ìˆ™í•¨. ", [13] = "프랑스 예술 ì˜í™”를 ì¦ê¹€. ", [14] = "테마 ê³µì›ì„ í”Œë ˆì´ í•¨. ", [15] = "대형 트럭 ìš´ì „ ë©´í—ˆ 소지ìž. ", [16] = "ì˜¤í† ë°”ì´ ê²½ì£¼ì— ë‚˜ê°. ", [17] = "í´ëž˜ì‹ ë°”ì´ì˜¬ë¦°ê³¼ 첼로를 연주. ", [18] = "ì² ë„ ì•½íƒˆì— ëŠ¥í•¨. ", [19] = "ê°œ 애호가. ", [20] = "ë¼ë””오 ì²­ì·¨ìž. ", [21] = "ëª©ìš•ì„ ìžì£¼ ì¦ê¹€. ", [22] = "ì§š 공예 강사. ", [23] = "채소 ì†ì„ 파내어 비누통으로 사용함. ", [24] = "파트타임 특수 경찰. ", [25] = "ì „ 퀴즈 쇼 ì§„í–‰ìž. ", [26] = "WW2 유산탄 파편 수집가. ", [27] = "가구 재배치를 ì¦ê¹€. ", [28] = "ê´‘ëž€ì˜ ëŒ„ìŠ¤ ìŒì•…ì„ ê°ìƒ. ", [29] = "ë°ì˜¤ë“œëž€íЏ 스프레ì´ë¡œ ê³¤ì¶©ë“¤ì˜ í™”ë¥¼ ë‹êµ¼. ", [30] = "재미없는 개그맨들ì—게 야유함. ", [31] = "ì˜íšŒë¥¼ 기웃거리며 ë„청함. ", [32] = "ì€ë°€í•œ ì •ì›ì‚¬. ", [33] = "ì§í‰ ì‹œê³„ë“¤ì„ ê±°ëž˜. ", [34] = "ë½ì•¤ë¡¤ 밴드ì—서 노래함. ", [35] = "오후 시간대 í…”ë ˆë¹„ì „ì— ì—´ê´‘í•¨. ", [36] = "송어 ê°„ì§€ëŸ¼ì˜ ëŒ€ê°€. ", [37] = "박물관ì—서 여행ê°ë“¤ì„ 꼬심. ", }, bad = { [1] = "ëŠë¦¬ê³  귀찮ìŒ. ", [2] = "게으르고 ë™ê¸° 부여가 안ë¨. ", [3] = "í›ˆë ¨ì´ ëœë˜ê³  무능함. ", [4] = "무례하고 불쾌함. ì‚¬ëžŒë“¤ì„ ì ëŒ€ì‹œí•¨. ", [5] = "ìµœì•…ì˜ ì²´ë ¥ - 태ë„ê°€ 불량함. ", [6] = "귀머거리. ì–‘ë°°ì¶” 냄새 ê°™ì€ ê²ƒì´ ë‚¨. ", [7] = "ì¼í•˜ëŠ” ë° ê±°ì¹˜ì ê±°ë¦¼. 없는게 ë‚˜ì„ ìˆ˜ 있ìŒ. ", [8] = "성질 급하고 쉽게 산만해ì§. ", [9] = "스트레스가 심하고 실수가 잦ìŒ. ", [10] = "ì‹¬ì„±ì´ ë’¤í‹€ë ¤ìžˆê³  화를 잘 냄 - 미움으로 ê°€ë“ ì°¨ 있ìŒ. ", [11] = "주ì˜ë ¥ì´ 없고 사고를 잘 냄. ", [12] = "ì¼ì— ì‹ ê²½ì„ ì“°ì§€ 않ìŒ. 엄청나게 게으름. ", [13] = "ë°”ë³´ê°™ì´ ìœ„í—˜ì„ ê°ìˆ˜í•˜ë ¤ 함. ", [14] = "êµí™œí•˜ê³  간사하며, 질서를 파괴함. ", [15] = "거만하고 잘난체 함. ", }, } room_classes = { diagnosis = "진단", clinics = "í´ë¦¬ë‹‰", facilities = "부대시설", treatment = "치료", } install = { ok = "확ì¸", cancel = "취소", exit = "종료", th_directory = "CorsixTH 를 실행하기 위해서는 í…Œë§ˆë³‘ì› ì›ë³¸ (ë˜ëŠ” ë°ëª¨) 게임 ë°ì´í„°ê°€ 필요합니다. ì•„ëž˜ì˜ ì„ íƒ ë²„íŠ¼ì„ ëˆŒëŸ¬ì„œ 테마 ë³‘ì› ì„¤ì¹˜ 디렉토리를 지정하세요.", title = "--------------------------------- CorsixTH 설치 ---------------------------------", } place_objects_window = { drag_blueprint = "마ìŒì— 드는 í¬ê¸°ê°€ ë  ë•Œê¹Œì§€ ì²­ì‚¬ì§„ì„ ë“œëž˜ê·¸ 하세요", place_door = "ë¬¸ì„ ë°°ì¹˜í•˜ì„¸ìš”", place_windows = "ì›í•˜ëŠ” ë§Œí¼ ì°½ë¬¸ì„ ë°°ì¹˜í•˜ê³  í™•ì¸ ë²„íŠ¼ì„ ëˆ„ë¥´ì„¸ìš”", confirm_or_buy_objects = "ë°©ì˜ ëª¨ìŠµì„ í™•ì •ì§“ê±°ë‚˜, ê¸°ë¬¼ë“¤ì„ êµ¬ë§¤/ì´ë™ì‹œí‚¬ 수 있습니다", place_objects_in_corridor = "ê¸°ë¬¼ë“¤ì„ ë³µë„ì— ë°°ì¹˜í•˜ì„¸ìš”", pick_up_object = "ë¬¼ê±´ì„ í´ë¦­í•´ì„œ ì§‘ì–´ 올리거나, 다른 ê¸°ëŠ¥ì„ ì„ íƒí•˜ì„¸ìš”", place_objects = "마ìŒì— 들 때까지 ê¸°ë¬¼ë“¤ì„ ë°°ì¹˜/ì´ë™ì‹œí‚¤ê³  확ì¸ì„ 누르세요", } load_game_window = { caption = "게임 불러오기 (%1%)", } staff_title = { junior = "수련ì˜", psychiatrist = "ì •ì‹ ê³¼ ì˜ì‚¬", consultant = "전문ì˜", surgeon = "외과 ì˜ì‚¬", doctor = "ì „ê³µì˜", researcher = "연구ì›", nurse = "간호사", receptionist = "접수ì›", general = "ì¼ë°˜", } graphs = { deaths = "사ë§", money_in = "수입", money_out = "지출", visitors = "방문ìž", wages = "급여", balance = "잔액", time_spans = { [1] = "1 ë…„", [2] = "12 ë…„", [3] = "48 ë…„", }, cures = "치료", reputation = "í‰íŒ", } adviser = { tutorial = { hire_receptionist = "환ìžë“¤ì„ 접수하려면 접수ì›ë„ 고용해야 í•  ê²ë‹ˆë‹¤.", build_pharmacy = "축하합니다! ì´ì œ 병ì›ì´ 제대로 ëŒì•„가게 하려면 ì•½êµ­ì„ ì§“ê³  간호사를 고용하면 ë©ë‹ˆë‹¤.", hire_doctor = "아픈 ì‚¬ëžŒë“¤ì„ ì§„ë‹¨í•˜ê³  치료하려면 ì˜ì‚¬ë¥¼ 고용해야 합니다.", place_receptionist = "접수ì›ì„ ë°ë ¤ë‹¤ê°€ 아무 ë°ë‚˜ 놓아보세요. 똑똑하게ë„, 알아서 접수대 쪽으로 ì´ë™í•  것입니다.", place_windows = "ë¬¸ì„ ì„¤ì¹˜í•œ 것과 ë™ì¼í•œ ë°©ì‹ìœ¼ë¡œ ì°½ë¬¸ë“¤ì„ ë°°ì¹˜í•˜ì„¸ìš”. ê¼­ ì°½ë¬¸ì´ ìžˆì–´ì•¼ 하는 ê²ƒì€ ì•„ë‹ˆì§€ë§Œ, ë°–ì— ë³¼ ê²ƒì´ ìžˆìœ¼ë©´ ì§ì›ë“¤ì´ ë” í–‰ë³µí•´ í•  것입니다.", confirm_room = "ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ 왼쪽 í´ë¦­í•´ì„œ ë°©ì„ ê°€ë™í•˜ê±°ë‚˜ X ë²„íŠ¼ì„ í´ë¦­í•´ì„œ 뒤로 ëŒì•„가세요.", rotate_and_place_reception = "오른쪽 í´ë¦­ìœ¼ë¡œ ì±…ìƒì„ ëŒë¦¬ê±°ë‚˜ 왼쪽 버튼으로 ì±…ìƒì„ ë³‘ì› ë‚´ì— ë°°ì¹˜í•˜ì„¸ìš”.", build_reception = "안녕하세요. ìš°ì„ , 당시늬 병ì›ì—는 접수대가 필요합니다. ë³µë„ ê¸°ë¬¼ 메뉴ì—서 접수대를 ì„ íƒí•˜ì„¸ìš”.", doctor_in_invalid_position = "ì´ë´ìš”! 여기ì—는 ì˜ì‚¬ë¥¼ 배치할 수 없어요.", start_tutorial = "임무 ë¸Œë¦¬í•‘ì„ ì½ê³  나서 íŠœí† ë¦¬ì–¼ì„ ì‹œìž‘í•˜ê¸° 위해 마우스 왼쪽 ë²„íŠ¼ì„ í´ë¦­í•˜ì„¸ìš”.", receptionist_invalid_position = "접수ì›ì„ ì—¬ê¸°ì— ë°°ì¹˜í•  수 없습니다.", room_too_small_and_invalid = "ì²­ì‚¬ì§„ì´ ë„ˆë¬´ 작거나 ìž˜ëª»ëœ ê³³ì— ë°°ì¹˜ë˜ì—ˆìŠµë‹ˆë‹¤. 제대로 해보세요.", window_in_invalid_position = "ì°½ë¬¸ì´ ìž˜ëª»ëœ ê³³ì— ë°°ì¹˜ë˜ì—ˆìŠµë‹ˆë‹¤. ë²½ ìœ„ì˜ ë‹¤ë¥¸ ê³³ì— ì„¤ì¹˜í•´ 보세요.", choose_doctor = "고용할 ì˜ì‚¬ë¥¼ 고르기 ì „ì— ëŠ¥ë ¥ì´ ì–¼ë§ˆë‚˜ ë˜ëŠ”ì§€ 잘 살펴보세요.", information_window = "ì •ë³´ ì°½ì€ ë‹¹ì‹ ì´ ë°©ê¸ˆ ì§€ì€ ì§„ë£Œì‹¤ì— ëŒ€í•œ 모든 ê²ƒì„ ì•Œë ¤ì¤ë‹ˆë‹¤.", build_gps_office = "환ìžë“¤ì˜ ì§ˆë³‘ì„ ì§„ë‹¨í•˜ê¸° 시작하려면 먼저 ì§„ë£Œì‹¤ì„ ì§€ì–´ì•¼ 합니다.", select_doctors = "ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ 왼쪽 í´ë¦­í•˜ì—¬ 고용할 수 있는 ì˜ì‚¬ë“¤ì˜ 목ë¡ì„ 보세요.", select_diagnosis_rooms = "ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ 왼쪽 í´ë¦­í•˜ì—¬ 진단 ì‹œì„¤ë“¤ì˜ ëª©ë¡ì„ 보세요.", select_receptionists = "ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ í´ë¦­í•˜ì—¬ 고용할 수 있는 접수ì›ë“¤ì˜ 목ë¡ì„ 보세요. ì•„ì´ì½˜ì— ì ížŒ 숫ìžëŠ” 몇 ëª…ì˜ ì ‘ìˆ˜ì› ì¤‘ì—서 고를 수 있는지를 나타냅니다.", order_one_reception = "ì ë©¸í•˜ëŠ” ì•„ì´í…œì„ 왼쪽 í´ë¦­í•˜ì—¬ 접수대를 하나 주문하세요.", choose_receptionist = "ì–´ëŠ ì ‘ìˆ˜ì›ì´ ê´œì°®ì€ ëŠ¥ë ¥ì„ ê°€ì¡Œìœ¼ë©° ì ì ˆí•œ 급료를 ì›í•˜ëŠ”ì§€ 정한 í›„ì— ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ í´ë¦­í•˜ì—¬ 고용하세요.", prev_receptionist = "ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ 왼쪽 í´ë¦­í•˜ì—¬ ê³ ìš© 가능한 ì´ì „ 접수ì›ì„ 확ì¸í•˜ì„¸ìš”.", accept_purchase = "ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ 왼쪽 í´ë¦­í•˜ì—¬ 구매하세요.", place_door = "청사진ìƒì˜ ë²½ 주위로 마우스를 움ì§ì—¬ì„œ ì›í•˜ëŠ” ê³³ì— ì¶œìž…ë¬¸ì„ ë°°ì¹˜í•˜ì„¸ìš”.", click_and_drag_to_build = "ì§„ë£Œì‹¤ì„ ì§“ê¸° 위해서는 ìš°ì„  얼마나 í¬ê²Œ ì§€ì„ ê²ƒì¸ì§€ë¥¼ 결정해야 합니다. 왼쪽 마우스 ë²„íŠ¼ì„ í´ë¦­í•œ 채로 드래그 하여 ë°©ì˜ í¬ê¸°ë¥¼ 결정하세요.", room_in_invalid_position = "ì´ëŸ°! ì´ ì²­ì‚¬ì§„ì€ ë¶€ì ì ˆí•©ë‹ˆë‹¤ - ë¶‰ì€ ì˜ì—­ì€ 병ì›ì˜ ë²½ 밖으로 나갔거나 다른 ë°©ê³¼ 겹치는 ë¶€ë¶„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.", place_objects = "오른쪽 í´ë¦­ìœ¼ë¡œ ê¸°ë¬¼ì„ íšŒì „ì‹œí‚¤ê³ , 왼쪽 í´ë¦­ìœ¼ë¡œ ê¸°ë¬¼ì„ ë°°ì¹˜í•˜ì„¸ìš”.", room_too_small = "ì´ ë°©ì˜ ì²­ì‚¬ì§„ì€ ë„ˆë¬´ 작기 ë•Œë¬¸ì— ë¶‰ì€ ìƒ‰ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤. 드래그 하여 ë°©ì„ ë” í¬ê²Œ 만드세요.", click_gps_office = "ì ë©¸í•˜ëŠ” ì•„ì´í…œì„ 왼쪽 í´ë¦­í•´ì„œ ì§„ë£Œì‹¤ì„ ì„ íƒí•˜ì„¸ìš”.", reception_invalid_position = "접수대가 회색으로 표시ë˜ëŠ” ì´ìœ ëŠ” 배치할 수 없는 ìœ„ì¹˜ì— ìžˆê¸° 때문입니다. 다른 곳으로 옮기거나 회전시켜 보세요.", next_receptionist = "ì´ ì‚¬ëžŒì´ ëª©ë¡ì˜ 첫 번째 접수ì›ìž…니다. ì ë©¸í•˜ëŠ” ì•„ì´ì½˜ì„ 왼쪽 í´ë¦­í•´ì„œ ë‹¤ìŒ ì‚¬ëžŒì„ í™•ì¸í•˜ì„¸ìš”.", room_big_enough = "ì´ì œ ì²­ì‚¬ì§„ì´ ì¶©ë¶„ížˆ í½ë‹ˆë‹¤. 마우스 ë²„íŠ¼ì„ ë†“ìœ¼ë©´ ë°©ì´ ë°°ì¹˜ë©ë‹ˆë‹¤. ì›í•œë‹¤ë©´ ì´ ìƒíƒœì—서 ë°©ì˜ ìœ„ì¹˜ë¥¼ 옮기거나 í¬ê¸°ë¥¼ 변경할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.", object_in_invalid_position = "ì´ ê¸°ë¬¼ì€ ìž˜ëª»ëœ ìœ„ì¹˜ì— ìžˆìŠµë‹ˆë‹¤. 다른 곳으로 옮기거나 회전시켜서 ê¸°ë¬¼ì´ ë“¤ì–´ë§žë„ë¡ ì¡°ì •í•˜ì„¸ìš”.", door_in_invalid_position = "ì•„ì°¨! ìž˜ëª»ëœ ìœ„ì¹˜ì— ì¶œìž…ë¬¸ì„ ì„¤ì¹˜í•˜ë ¤ê³  했군요. 청사진 ë²½ì˜ ë‹¤ë¥¸ ê³³ì— ì‹œë„í•´ 보세요.", place_doctor = "ì˜ì‚¬ë¥¼ ë³‘ì› ë‚´ì˜ ì•„ë¬´ ê³³ì—나 배치하세요. ì§„ë£Œë°›ì„ í™˜ìžê°€ ìƒê¸°ë©´ ì˜ì‚¬ê°€ 알아서 진료실로 ì´ë™í•  것입니다.", }, epidemic = { hurry_up = "ì „ì—¼ë³‘ì´ ì§€ê¸ˆ 당장 í•´ê²°ë˜ì§€ 않으면, ë‹¹ì‹ ì€ ê³¤ê²½ì— ì²˜í•˜ê²Œ ë  ê²ë‹ˆë‹¤. 빨리 빨리 움ì§ì´ì„¸ìš”!", serious_warning = "ê·¸ 전염성 ì§ˆë³‘ì€ ì ì  심ê°í•´ 지고 있습니다. 빠른 시간 ë‚´ì— ë­”ê°€ 조치를 취해야 합니다!", multiple_epidemies = "ë‘ ê°€ì§€ ì´ìƒì˜ ì „ì—¼ë³‘ì´ ë™ì‹œì— ëŒê³  있는 것 같네요. 어마어마한 ìž¬ì•™ì´ ë ì§€ 모르니 ì‹ ì†í•˜ê²Œ 움ì§ì´ì„¸ìš”.", }, staff_advice = { need_handyman_machines = "ë³‘ì› ë‚´ì— ìžˆëŠ” 기계 ìž¥ì¹˜ë“¤ì„ ì •ë¹„í•˜ë ¤ë©´ 잡역부를 고용해야 합니다.", need_doctors = "ì˜ì‚¬ê°€ ë” ë§Žì´ í•„ìš”í•©ë‹ˆë‹¤. ë‹¹ì‹ ì˜ ê°€ìž¥ 뛰어난 ì˜ì‚¬ë“¤ì„ ëŒ€ê¸°ì—´ì´ ê¸´ ë°©ì— ë°°ì¹˜í•˜ë„ë¡ í•´ 보세요.", need_handyman_plants = "í™”ì´ˆì— ë¬¼ì„ ì£¼ë ¤ë©´ 잡역부를 고용해야 합니다.", need_handyman_litter = "ì‚¬ëžŒë“¤ì´ ë³‘ì›ì— 쓰레기를 버리기 시작했습니다. 잡역부를 고용해서 ë°”ë‹¥ì„ ì²­ì†Œí•˜ë„ë¡ í•˜ì„¸ìš”.", need_nurses = "간호사가 ë” í•„ìš”í•©ë‹ˆë‹¤. 병ë™ê³¼ 약국ì—는 간호사가 필요합니다.", too_many_doctors = "ì˜ì‚¬ê°€ 너무 많습니다. 몇몇ì—게는 아예 í•  ì¼ì´ ë°°ì •ë˜ì§€ 않았습니다.", too_many_nurses = "간호가를 너무 ë§Žì´ ê³ ìš©í•œ 것 같습니다.", }, earthquake = { damage = "ì§€ì§„ì´ %d ê°œì˜ ê¸°ê³„ 장치와 %d ëª…ì˜ ì‚¬ëžŒë“¤ì—게 피해를 입혔습니다.", alert = "지진 경보. ì§€ì§„ì´ ì¼ì–´ë‚˜ë©´ 기계 ìž¥ì¹˜ë“¤ì´ í”¼í•´ë¥¼ 입게 ë©ë‹ˆë‹¤. 제대로 정비ë˜ì§€ ì•Šì€ ê¸°ê³„ë“¤ì€ ë¶€ì„œì§€ëŠ” ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.", ended = "휴. 거대한 지진ì´ì—ˆë„¤ìš”. 리히터 ì²™ë„로 ì§„ë„ %d ì˜ ì§€ì§„ì´ì—ˆìŠµë‹ˆë‹¤.", }, multiplayer = { everyone_failed = "마지막 목표를 ì•„ë¬´ë„ ë‹¬ì„±í•˜ì§€ 못했습니다. ë”°ë¼ì„œ 모ë‘ê°€ 계ì†í•´ì„œ í”Œë ˆì´ í•©ë‹ˆë‹¤!", players_failed = "ë‹¤ìŒ í”Œë ˆì´ì–´ê°€ 마지막 목표를 달성하지 못했습니다:", poaching = { in_progress = "ì´ ì‚¬ëžŒì´ ë‹¹ì‹ ê³¼ 함께 ì¼í•˜ê¸° ì›í•˜ëŠ”ì§€ 알아보겠습니다.", not_interested = "í—ˆ ì°¸! ê·¸ë“¤ì€ ë‹¹ì‹ ê³¼ ì¼í•˜ëŠ” ë°ì— 별 ê´€ì‹¬ì´ ì—†êµ°ìš” - 지금 있는 ê³³ì´ ë§Œì¡±ìŠ¤ëŸ½ë‹µë‹ˆë‹¤.", already_poached_by_someone = "ì´ëŸ°! 다른 ì‚¬ëžŒì´ ì´ë¯¸ ì´ ì‚¬ëžŒì—게 접촉중입니다.", }, }, surgery_requirements = { need_surgeons_ward_op = "ìˆ˜ìˆ ì„ ìœ„í•´ì„œ ë‘ ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ë¥¼ 고용하고, 병ë™ê³¼ ìˆ˜ìˆ ì§ˆì„ ì§€ì–´ì•¼ 합니다.", need_surgeon_ward = "외과 ì˜ì‚¬ë¥¼ 한 명 ë” ê³ ìš©í•˜ê³  병ë™ì„ 지어야 ìˆ˜ìˆ ì„ ì‹œìž‘í•  수 있습니다.", }, vomit_wave = { started = "병ì›ì— 구토 ë°”ì´ëŸ¬ìŠ¤ê°€ í¼ì§„ 것 같네요. ì• ì´ˆì— ë³‘ì›ì„ 깨ë—하게 관리했다면 벌어지지 ì•Šì•˜ì„ ì¼ìž…니다. 잡역부를 ë” ê³ ìš©í•´ì•¼ í•  것 같습니다.", ended = "휴! 구토를 ìœ ë°œí•˜ë˜ ë°”ì´ëŸ¬ìŠ¤ê°€ ê±°ì˜ ìž¡ížŒ 것 같네요. 앞으로 병ì›ì„ 깨ë—하게 유지하세요.", }, cheats = { th_cheat = "축하합니다, 치트를 해제했습니다!", roujin_on_cheat = "ë¡œìš°ì§„ì˜ ë„ì „ì´ í™œì„±í™” ë˜ì—ˆìŠµë‹ˆë‹¤! í–‰ìš´ì„ ë¹Œì–´ìš”...", roujin_off_cheat = "ë¡œìš°ì§„ì˜ ë„ì „ì´ ë¹„í™œì„±í™” ë˜ì—ˆìŠµë‹ˆë‹¤.", }, level_progress = { halfway_lost = "레벨 패배 ì¡°ê±´ì— ì ˆë°˜ì •ë„ ë„달했습니다.", dont_kill_more_patients = "ë” ì´ìƒ 환ìžë“¤ì„ 죽게 하면 안ë©ë‹ˆë‹¤!", another_patient_killed = "ì´ëŸ°! ë˜ë‹¤ë¥¸ 환ìžê°€ 사ë§í–ˆêµ°ìš”. 지금까지 ì´ %d ëª…ì˜ í™˜ìžê°€ 사ë§í–ˆìŠµë‹ˆë‹¤.", halfway_won = "ì´ ë ˆë²¨ì„ ìŠ¹ë¦¬í•˜ëŠ” ë° ì ˆë°˜ì •ë„ ì™”ìŠµë‹ˆë‹¤.", close_to_win_increase_value = "승리가 ëˆˆì•žì— ìžˆìŠµë‹ˆë‹¤. ë³‘ì› ê°€ì¹˜ë¥¼ %d ë§Œí¼ ëŒì–´ì˜¬ë¦¬ì„¸ìš”.", financial_criteria_met = "ì´ ë ˆë²¨ì˜ ìž¬ì • 관련 목표는 ëª¨ë‘ ë‹¬ì„±í–ˆìŠµë‹ˆë‹¤. ì€í–‰ 잔고를 %d ì´ìƒìœ¼ë¡œ 유지하고 병ì›ì´ 효율ì ìœ¼ë¡œ ëŒì•„ê°€ë„ë¡ ì‹ ê²½ì“°ì„¸ìš”.", nearly_won = "ì´ ë ˆë²¨ì„ ê±°ì˜ ìŠ¹ë¦¬í–ˆìŠµë‹ˆë‹¤.", hospital_value_enough = "ë³‘ì› ê°€ì¹˜ë¥¼ %d ì´ìƒìœ¼ë¡œ 유지하면서 다른 ë¬¸ì œë“¤ì„ í•´ê²°í•˜ë©´ 승리할 수 있습니다.", another_patient_cured = "잘 했어요 - ë˜ í•œ ëª…ì˜ í™˜ìžë¥¼ 치료했군요. 지금까지 ì´ %d ëª…ì„ ì¹˜ë£Œí–ˆìŠµë‹ˆë‹¤.", three_quarters_lost = "ì´ ë ˆë²¨ì„ íŒ¨ë°°í•˜ëŠ”ë° 3/4 ì •ë„ ì™”ìŠµë‹ˆë‹¤.", reputation_good_enough = "좋아요, ë‹¹ì‹ ì˜ í‰íŒì€ ë ˆë²¨ì„ í´ë¦¬ì–´í•˜ê¸°ì— ì¶©ë¶„í•  ì •ë„로 올ë¼ê°”습니다. %d ì´ìƒìœ¼ë¡œ 유지하면서 다른 ë¬¸ì œë“¤ì„ í•´ê²°í•˜ë©´ 승리할 수 있습니다.", cured_enough_patients = "충분한 ìˆ˜ì˜ í™˜ìžë“¤ì„ 치료했지만, 병ì›ì„ ë” ìž˜ ìš´ì˜í•´ì•¼ 승리할 수 있습니다.", nearly_lost = "ì´ ë ˆë²¨ì„ ê±°ì˜ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.", improve_reputation = "ë‹¹ì‹ ì€ í‰íŒì„ %d ë§Œí¼ ë” ì˜¬ë ¤ì•¼ ì´ ë ˆë²¨ì„ ìŠ¹ë¦¬í•  수 있습니다.", three_quarters_won = "ì´ ë ˆë²¨ì„ ìŠ¹ë¦¬í•˜ëŠ” ë° 3/4 ì •ë„ ì™”ìŠµë‹ˆë‹¤.", }, staff_place_advice = { receptionists_only_at_desk = "접수ì›ë“¤ì€ 접수대ì—서만 ì¼í•  수 있습니다.", only_psychiatrists = "ì˜ì‚¬ë“¤ì€ ì •ì‹ ê³¼ ìžê²©ì´ 있는 경우ì—ë§Œ 정신과실ì—서 ì¼í•  수 있습니다.", only_surgeons = "ì˜ì‚¬ë“¤ì€ 외과 ìžê²©ì´ 있는 경우ì—ë§Œ 수술실ì—서 ì¼í•  수 있습니다.", only_nurses_in_room = "ê°„í˜¸ì‚¬ë“¤ë§Œì´ %sì—서 ì¼í•  수 있습니다.", only_doctors_in_room = "ì˜ì‚¬ë“¤ë§Œì´ %sì—서 ì¼í•  수 있습니다.", only_researchers = "ì˜ì‚¬ë“¤ì€ 연구 ìžê²©ì´ 있는 경우ì—ë§Œ 연구소ì—서 ì¼í•  수 있습니다.", nurses_cannot_work_in_room = "간호사는 %sì—서 ì¼í•  수 없습니다.", doctors_cannot_work_in_room = "ì˜ì‚¬ëŠ” %sì—서 ì¼í•  수 없습니다.", }, room_forbidden_non_reachable_parts = "ë°©ì„ ì´ ê³³ì— ë°°ì¹˜í•˜ë©´ ë‹¹ì‹ ì˜ ë³‘ì›ì˜ ì‚¬ëžŒë“¤ì´ ê°ˆ 수 없는 ì§€ì—­ì´ ìƒê¸°ê²Œ ë©ë‹ˆë‹¤.", research = { machine_improved = "%s 기계가 연구소ì—서 개선ë˜ì—ˆìŠµë‹ˆë‹¤.", autopsy_discovered_rep_loss = "ë‹¹ì‹ ì˜ ìžë™ 부검 기계가 발명ë˜ì—ˆìŠµë‹ˆë‹¤. 대중ì—게서 부정ì ì¸ ë°˜ì‘ì´ ë‚˜ì˜¬ ê²ƒì€ ê°ì˜¤í•˜ì„¸ìš”.", drug_fully_researched = "%s ì•½ì„ 100% 연구했습니다.", new_machine_researched = "새로운 %s 기계가 성공ì ìœ¼ë¡œ 연구ë˜ì—ˆìŠµë‹ˆë‹¤.", drug_improved = "%s ì•½ì´ ì—°êµ¬ì†Œì—서 개선ë˜ì—ˆìŠµë‹ˆë‹¤.", drug_improved_1 = "%s ì•½ì´ ì—°êµ¬ì†Œì—서 개선ë˜ì—ˆìŠµë‹ˆë‹¤.", new_available = "새로운 %s ì„(를) 사용할 수 있습니다.", new_drug_researched = "%s ì§ˆë³‘ì˜ ì¹˜ë£Œì•½ì´ ì—°êµ¬ë˜ì—ˆìŠµë‹ˆë‹¤.", }, boiler_issue = { minimum_heat = "ì•„, 거기 계셨군요. ì§€í•˜ì˜ ë³´ì¼ëŸ¬ê°€ 고장입니다. ë³‘ì› ì•ˆì˜ ì‚¬ëžŒë“¤ì´ í•œë™ì•ˆ 춥겠군요.", maximum_heat = "ì§€í•˜ì˜ ë³´ì¼ëŸ¬ê°€ 발광하고 있습니다. ë¼ë””ì—ì´í„° ì¶œë ¥ì´ ìµœëŒ€ë¡œ ê³ ì •ë˜ì–´ 버렸습니다. ì‚¬ëžŒë“¤ì´ ë…¹ì•„ë‚´ë¦¬ê¸° 시작할 ê²ë‹ˆë‹¤! ìŒë£Œ ìžíŒê¸°ë¥¼ ë” ì„¤ì¹˜í•˜ëŠ” ê²ƒì´ ë„ì›€ì´ ë  ì§€ë„ ëª¨ë¦…ë‹ˆë‹¤.", resolved = "ì¢‹ì€ ì†Œì‹ìž…니다. ë³´ì¼ëŸ¬ì™€ ë¼ë””ì—ì´í„°ê°€ 다시 ì •ìƒì ìœ¼ë¡œ ìž‘ë™í•˜ì‹œ 시작했습니다. 환ìžë“¤ê³¼ ì§ì›ë“¤ì„ 위한 실내 온ë„ê°€ ì ì ˆížˆ ìœ ì§€ë  ê²ƒìž…ë‹ˆë‹¤.", }, competitors = { staff_poached = "ë‹¹ì‹ ì˜ ì§ì› 중 한 ëª…ì´ ë‹¤ë¥¸ 병ì›ìœ¼ë¡œë¶€í„° 스카웃 당했습니다.", hospital_opened = "%s ì§€ì—­ì— ê²½ìŸ ë³‘ì›ì´ ê°œì›í–ˆìŠµë‹ˆë‹¤.", land_purchased = "%s ì´(ê°€) ì•½ê°„ì˜ í† ì§€ë¥¼ 매입했습니다.", }, room_requirements = { research_room_need_researcher = "ì—°êµ¬ì‹¤ì„ ì‚¬ìš©í•˜ê¸° 위해서는 연구 ëŠ¥ë ¥ì„ ê°–ì¶˜ ì˜ì‚¬ë¥¼ 고용해야 합니다.", op_need_another_surgeon = "ìˆ˜ìˆ ì‹¤ì„ ì‚¬ìš©í•˜ê¸° 위해서는 외과 ì˜ì‚¬ê°€ 한 명 ë” í•„ìš”í•©ë‹ˆë‹¤.", op_need_ward = "환ìžë“¤ì´ ìˆ˜ìˆ ì„ ë°›ìœ¼ë ¤ë©´ 먼저 병ë™ì„ 지어서 수술전 ì²˜ë°©ì„ ë°›ë„ë¡ í•´ì•¼ 합니다.", reception_need_receptionist = "환ìžë“¤ì„ 보려면 먼저 접수ì›ì„ 고용해야 합니다.", psychiatry_need_psychiatrist = "ì •ì‹ ê³¼ì‹¤ì„ ì§€ì—ˆìœ¼ë‹ˆ ì´ì œ ì •ì‹ ê³¼ ì˜ì‚¬ë¥¼ 고용해야 합니다.", pharmacy_need_nurse = "ê·¸ ì•½êµ­ì„ ëŒì•„가게 하려면 간호사를 고용해야 합니다.", ward_need_nurse = "ì´ ë³‘ë™ì—서 ì¼í•  간호사를 고용해야 í•  것입니다.", op_need_two_surgeons = "수술실ì—서 ìˆ˜ìˆ ì„ ì§„í–‰í•˜ë ¤ë©´ ë‘ ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ë¥¼ 고용하세요.", training_room_need_consultant = "ê·¸ êµìœ¡ì‹¤ì—서 ì˜ì‚¬ë“¤ì„ 훈련시키려면 전문ì˜ë¥¼ 고용해서 ê°•ì˜í•˜ê²Œ 해야 합니다.", gps_office_need_doctor = "ì˜ì‚¬ë¥¼ 고용해서 진료실ì—서 ì¼í•˜ë„ë¡ í•˜ì„¸ìš”.", }, goals = { win = { money = "%d ë§Œí¼ ë” ë²Œì–´ì•¼ ì´ ë ˆë²¨ì˜ ìž¬ì • ì¡°ê±´ì„ ë§Œì¡±í•  수 있습니다.", cure = "%d ëª…ì˜ í™˜ìžë¥¼ ë” ì¹˜ë£Œí•˜ë©´ ì´ ë ˆë²¨ì„ ìŠ¹ë¦¬í•˜ëŠ”ë° í•„ìš”í•œ 수를 채우게 ë©ë‹ˆë‹¤.", reputation = "ë‹¹ì‹ ì˜ í‰íŒì„ %d 까지 올려서 승리 ì¡°ê±´ì„ ë§Œì¡±í•˜ì„¸ìš”.", value = "ë‹¹ì‹ ì€ ë³‘ì›ì˜ 가치를 %d ë§Œí¼ ì˜¬ë ¤ì•¼ 합니다.", }, lose = { kill = "%d ëª…ì˜ í™˜ìžë¥¼ ë” ì£½ì´ê²Œ ë˜ë©´ ì´ ë ˆë²¨ì„ ì‹¤íŒ¨í•˜ê²Œ ë©ë‹ˆë‹¤!", }, }, warnings = { bankruptcy_imminent = "ì´ë´ìš”! 당신 지금 파산으로 치닫고 있습니다. 조심하세요!", build_staffroom = "지금 당장 ì§ì› íœ´ê²Œì‹¤ì„ ì§€ì–´ì£¼ì„¸ìš”. ë‹¹ì‹ ì˜ ì§ì›ë“¤ì€ 너무 과하게 ì¼í•˜ê³  있고 부서지기 ì§ì „입니다. ìƒì‹ì ìœ¼ë¡œ ìƒê°ì„ 좀 해보세요!", build_toilet_now = "지금 í™”ìž¥ì‹¤ì„ ì§€ìœ¼ì„¸ìš”. ì‚¬ëžŒë“¤ì€ ë” ì´ìƒ 참지 못하고 있습니다. 웃지 마요, 지금 심ê°í•©ë‹ˆë‹¤.", build_toilets = "지금 당장 í™”ìž¥ì‹¤ì„ ì§“ì§€ 않으면 굉장히 불쾌한 ê²ƒì„ ë³´ê²Œë ì§€ë„ 모릅니다. 그리고 ë‹¹ì‹ ì˜ ë³‘ì›ì— ì–´ë–¤ 냄새가 ë‚ ì§€ 한 번 ìƒìƒí•´ 보세요.", cannot_afford = "ê·¸ ì‚¬ëžŒì„ ê³ ìš©í• ë§Œí¼ì˜ 충분한 ëˆì´ 없습니다!", cannot_afford_2 = "ê·¸ê²ƒì„ êµ¬ë§¤í• ë§Œí¼ ì¶©ë¶„í•œ ëˆì´ ì€í–‰ì— 없습니다!", cash_low_consider_loan = "당신 현금 ì‚¬ì •ì´ ë§¤ìš° 좋지 않네요. ëŒ€ì¶œì€ ê³ ë ¤í•´ 보셨습니까?", change_priorities_to_plants = "ìž¡ì—­ë¶€ë“¤ì˜ ì—…ë¬´ 우선순위를 바꿔서 í™”ì´ˆì— ë¬¼ì„ ìž˜ 주ë„ë¡ í•´ì•¼ 합니다.", charges_too_high = "ë‹¹ì‹ ì€ ë„ˆë¬´ ë§Žì´ ì²­êµ¬í•˜ê³  있습니다. 단기ì ìœ¼ë¡œ ë³´ë©´ ì´ìœ¤ì´ ë§Žì´ ë‚¨ê² ì§€ë§Œ, ê²°ê³¼ì ìœ¼ë¡œ 환ìžë“¤ì„ ë§Žì´ ìžƒê²Œ ë  ê²ƒìž…ë‹ˆë‹¤.", charges_too_low = "ë‹¹ì‹ ì€ í™˜ìžë“¤ì—게 너무 ì ê²Œ 청구하고 있습니다. 물론 ë” ë§Žì€ ì‚¬ëžŒë“¤ì´ ë³‘ì›ì— 방문하겠지만, ê° í™˜ìžë¡œë¶€í„° 얻는 ì´ë“ì€ ë¯¸ë¯¸í•  것입니다.", deal_with_epidemic_now = "ê·¸ ì „ì—¼ë³‘ì´ ì§€ê¸ˆ 당장 처리ë˜ì§€ 않으면, 못볼 ê¼´ì„ ë³´ê²Œ ë  ê²ë‹ˆë‹¤. 당장 움ì§ì—¬ìš”!", desperate_need_for_watering = "ë‹¹ì‹ ì˜ í™”ì´ˆë“¤ì„ ëŒë³¼ 잡역부가 절실히 필요합니다.", doctor_crazy_overwork = "ì´ëŸ°! ë‹¹ì‹ ì˜ ì˜ì‚¬ë“¤ì¤‘ 한 ëª…ì´ ê³¼ë¡œë¡œ ì¸í•´ ì •ì‹ ì´ ë‚˜ê°”ìŠµë‹ˆë‹¤. 당장 쉬게 해주면 íšŒë³µë  ìˆ˜ ìžˆì„ ê²ƒìž…ë‹ˆë‹¤.", doctors_tired = "ë‹¹ì‹ ì˜ ì˜ì‚¬ë“¤ì€ ë§Žì´ ì§€ì³¤ìŠµë‹ˆë‹¤. ê°€ë”씩 ì‰¬ê²Œë” í•´ 주세요.", doctors_tired2 = "ì˜ì‚¬ë“¤ì´ ë§ë„ 안ë˜ê²Œ ì§€ì³ìžˆìŠµë‹ˆë‹¤. ê·¸ë“¤ì€ ì¦‰ì‹œ 휴ì‹ì„ 취해야 합니다.", epidemic_getting_serious = "ê·¸ 전염성 ì§ˆë³‘ì´ ì ì  심ê°í•´ì§€ê³  있습니다. 당장 뭔가 해줘야 합니다!", falling_1 = "ì´ë´ìš”! 그거 ìž¥ë‚œì´ ì•„ë‹ˆì—ìš”. 마우스로 어디를 í´ë¦­í•˜ëŠ”ì§€ 잘 보세요. 누군가 다칠 ìˆ˜ë„ ìžˆì–´ìš”!", falling_2 = "그만 장난치세요, 그러면 좋아요?", falling_3 = "아야, 다쳤잖아요, 누가 ì˜ì‚¬ì¢€ 불러줘!", falling_4 = "여긴 병ì›ì´ì§€ ë†€ì´ ê³µì›ì´ 아니ì—ìš”!", falling_5 = "여긴 ì‚¬ëžŒë“¤ì„ ë„˜ì–´ëœ¨ë¦¬ëŠ” ê³³ì´ ì•„ë‹ˆì—ìš”. 아픈 사람들ì´ë¼ê³ ìš”, 알잖아요!", falling_6 = "여긴 ë³¼ë§ìž¥ì´ 아니ì—ìš”. 아픈 ì‚¬ëžŒë“¤ì„ ê·¸ë ‡ê²Œ 다루면 안ë¼ìš”!", financial_trouble = "ë‹¹ì‹ ì€ ì§€ê¸ˆ 심ê°í•œ ìž¬ì •ë‚œì„ ê²ªê³  있습니다. 재정 ìƒí™©ì„ 당장 확ì¸í•˜ì„¸ìš”! %d ë§Œí¼ ë” ì†í•´ë¥¼ ë³´ë©´ ì´ ë ˆë²¨ì— ì‹¤íŒ¨í•˜ê²Œ ë ê²ë‹ˆë‹¤!", finanical_trouble2 = "ëˆì´ ë” ë“¤ì–´ì˜¤ë„ë¡ í•˜ì§€ 않으면 ë‹¹ì‹ ì€ ì™„ì „ížˆ 쓸모없어질 것입니다. %d ë§Œí¼ì„ ë” ìžƒìœ¼ë©´ ì´ ë ˆë²¨ì„ ì‹¤íŒ¨í•˜ê²Œ ë©ë‹ˆë‹¤.", financial_trouble3 = "ë‹¹ì‹ ì˜ ì€í–‰ 잔고가 불안해 ë³´ì´ëŠ”êµ°ìš”. ëˆì„ ë” ë²Œë„ë¡ í•˜ì„¸ìš”. ì‹¤íŒ¨í•˜ëŠ”ë° %d ë°–ì— ë‚¨ì§€ 않았습니다.", handymen_tired = "ìž¡ì—­ë¶€ë“¤ì´ ë§Žì´ ì§€ì³¤ìŠµë‹ˆë‹¤. 좀 쉬게 해주세요.", handymen_tired2 = "ìž¡ì—­ë¶€ë“¤ì´ ì™„ì „ížˆ 기진맥진 했습니다. 지금 당장 어떻게든 좀 쉬게 해주세요.", hospital_is_rubbish = "ì‚¬ëžŒë“¤ì´ ê³µê³µì—°í•˜ê²Œ ë‹¹ì‹ ì˜ ë³‘ì›ì´ 지저분하다고 ë§í•˜ê³  다닙니다. ì´ëŒ€ë¡œë¼ë©´ ì‚¬ëžŒë“¤ì´ ì ì  다른 병ì›ì„ 찾게 ë  ê²ƒìž…ë‹ˆë‹¤.", litter_catastrophy = "쓰레기 ìƒí™©ì´ 아주 지옥같습니다. 지금 잡역부 íŒ€ì„ ê¾¸ë ¤ì„œ ì“°ë ˆê¸°ë“¤ì„ ì •ë¦¬í•˜ë„ë¡ í•˜ì„¸ìš”!", litter_everywhere = "온통 쓰레기 천지입니다. 잡역부ì—게 ì¼ì„ 좀 시키세요.", machine_severely_damaged = "%s 기계가 ê³ ì¹  수 없는 ìƒí™©ì— ê±°ì˜ ë‹¤ë‹¤ëžìŠµë‹ˆë‹¤.", machines_falling_apart = "ë‹¹ì‹ ì˜ ê¸°ê³„ë“¤ì´ ê³ ìž¥ë‚˜ê³  있습니다. 지금 당장 ìž¡ì—­ë¶€ë“¤ì´ ê³ ì¹˜ë„ë¡ í•˜ì„¸ìš”!", machinery_slightly_damaged = "병ì›ì˜ ê¸°ê³„ë“¤ì´ ì•½ê°„ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤. ì–´ëŠ ì‹œì ì—서 수리해 주는 ê²ƒì„ ìžŠì§€ 마세요.", machinery_deteriorating = "ë‹¹ì‹ ì˜ ê¸°ê³„ ìž¥ì¹˜ë“¤ì´ ì§€ë‚˜ì¹œ 사용으로 ì•…í™”ë˜ê³  있습니다. ì£¼ì˜ ê¹Šê²Œ 지켜보세요.", machinery_damaged = "ë‹¹ì‹ ì˜ ê¸°ê³„ë“¤ì„ ë¹ ë¥¸ ì‹œì¼ ë‚´ì— ìˆ˜ë¦¬í•˜ì„¸ìš”. 고장나기 ì‹œìž‘í•˜ëŠ”ë° ê·¸ë¦¬ 오래 걸리지 않ì„ê²ë‹ˆë‹¤.", machinery_damaged2 = "잡역부를 고용해서 어서 ê¸°ê³„ë“¤ì„ ìˆ˜ë¦¬í•´ì£¼ì–´ì•¼ 합니다.", machinery_very_damaged = "긴급ìƒí™©! 지금 당장 잡역부를 불러서 ê¸°ê³„ë“¤ì„ ìˆ˜ë¦¬í•˜ì„¸ìš”! í­ë°œí•˜ê¸° ì§ì „입니다!", many_epidemics = "둘 ì´ìƒì˜ ì „ì—¼ë³‘ì´ ë™ì‹œì— ëŒê³  있는 것으로 ë³´ì´ëŠ”êµ°ìš”. ì´ê±° 아주 엄청난 ìž¬ë‚œì´ ë ì§€ë„ 모르니 어서 조치를 취하세요.", many_killed = "지금까지 %d ëª…ì˜ í™˜ìžë¥¼ 죽였군요. 알고 있겠지만 ë” ìž˜ 해야 합니다.", money_low = "ëˆì´ ê±°ì˜ ë°”ë‹¥ë‚˜ê³  있습니다!", money_very_low_take_loan = "ì€í–‰ 잔고가 ì ˆë§ì ìœ¼ë¡œ 낮습니다. 필요하다면 ëŒ€ì¶œì„ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.", more_benches = "벤치를 ë” ë°°ì¹˜í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ 보세요. 아픈 ì‚¬ëžŒë“¤ì€ ì„œì„œ 기다려야 하는 ê²ƒì„ ì›ë§í•©ë‹ˆë‹¤.", more_toilets = "í™”ìž¥ì‹¤ì´ ë” í•„ìš”í•©ë‹ˆë‹¤. 사람들ì—게 변비가 ìƒê¸°ê³  있어요.", need_staffroom = "ì§ì› íœ´ê²Œì‹¤ì„ ì§€ì–´ì„œ ì§ì›ë“¤ì´ 쉴 수 있게 í•´ 주세요.", need_toilets = "환ìžë“¤ì´ í™”ìž¥ì‹¤ì„ í•„ìš”ë¡œ 합니다. 쉽게 접근할 수 있는 ê³³ì— ë°°ì¹˜í•´ 주세요.", no_desk = "ì–´ëŠ ì‹œì ì—는 반드시 접수대를 배치하고 접수ì›ì„ 고용해야 합니다!", no_desk_1 = "환ìžë“¤ì´ 병ì›ì— 방문하ë„ë¡ í•˜ë ¤ë©´, 접수ì›ì„ 고용하고 접수ì›ì´ ì¼í•  접수대를 마련해 주어야 합니다!", no_desk_2 = "아주 좋~ì•„ìš”, 아마 세계 기ë¡ì´ê² êµ°ìš”: 1ë…„ì´ ë‹¤ ë˜ì–´ê°€ëŠ”ë° í™˜ìžê°€ 한 ëª…ë„ ì—†ë‹¤ë‹ˆ! ì´ ë³‘ì›ì˜ 관리ìžë¡œ ê³„ì† ë‚¨ê³  싶다면, 접수ì›ì„ 고용하고 접수대를 설치해주어야 í•  ê²ë‹ˆë‹¤!", no_desk_3 = "아주 ë내주는군요, 1ë…„ì´ ë‹¤ ë˜ì—ˆëŠ”ë° ì ‘ìˆ˜ì›ì¡°ì°¨ 없다니! 환ìžê°€ 방문하길 ë°”ë¼ê¸°ëŠ” 하는건지 모르겠군요. 어서 해결하세요!", no_desk_4 = "접수ì›ì€ 방문하는 환ìžë“¤ì„ 안내하기 위해서 ì¼í•  장소가 필요합니다.", no_desk_5 = "í , ì´ì œ ì‹œê°„ì´ ë˜ì—ˆêµ°ìš”. ì´ì œ ê³§ 환ìžë“¤ì´ 방문하는 ê²ƒì„ ë³¼ 수 ìžˆì„ ê²ƒìž…ë‹ˆë‹¤!", no_desk_6 = "접수ì›ì„ 고용했으니, ì´ì œ 접수ì›ì´ ì¼í•  접수대를 설치해주는 ê²ƒì´ ì–´ë•Œìš”?", no_desk_7 = "접수대를 설치했으니 ì´ì œ 접수ì›ì„ 고용하는 ê²ƒì´ ì–´ë•Œìš”? 아시겠지만 ì´ê²Œ 제대로 í•´ê²°ë˜ì§€ 않으면 환ìžë“¤ì´ 방문하지 않ì„ê²ë‹ˆë‹¤!", no_patients_last_month = "지난 ë‹¬ì— ìƒˆë¡œìš´ 환ìžê°€ 한 ëª…ë„ ì˜¤ì§€ 않았습니다. 충격ì´ë„¤ìš”!", nobody_cured_last_month = "지난달ì—는 ì •ë§ ì•„ë¬´ë„ ì¹˜ë£Œí•˜ì§€ 못했군요.", nurse_needs_desk_1 = "ê° ê°„í˜¸ì‚¬ëŠ” ì¼í•  ì±…ìƒì´ 필요합니다.", nurse_needs_desk_2 = "ë‹¹ì‹ ì˜ ê°„í˜¸ì‚¬ëŠ” ë‹¹ì‹ ì´ í—ˆë½í•œ 휴ì‹ì— ì¦ê±°ì›Œí•˜ê³  있습니다. 병ë™ì— ë‘ ëª… ì´ìƒì˜ 간호사가 ì¼í•˜ë„ë¡ í•˜ë ¤ë©´ 한 사람당 ì±…ìƒ í•˜ë‚˜ì”©ì„ ë°°ì¹˜í•´ 주어야 합니다.", nurses_tired = "ê°„í˜¸ì‚¬ë“¤ì´ ì§€ì³¤ìŠµë‹ˆë‹¤. 좀 쉬게 해주세요.", nurses_tired2 = "ê°„í˜¸ì‚¬ë“¤ì´ ë§¤ìš° 지쳤습니다. 지금 바로 휴ì‹ì„ 취하게 해주세요.", patient_leaving = "환ìžê°€ 떠나고 있군요. ì´ìœ ê°€ ë­ëƒê³ ìš”? 당신 병ì›ì˜ 형편없는 ìš´ì˜ê³¼ 불친절한 ì§ì›ë“¤, 부족한 설비 때문ì´ì£ .", patient_stuck = "누군가가 ê¸¸ì„ ìžƒì—ˆë„¤ìš”. ë³‘ì› ì„¤ê³„ë¥¼ 좀 ë” ìž˜ 해보세요.", patients_annoyed = "ì‚¬ëžŒë“¤ì€ ë‹¹ì‹ ì´ ë³‘ì›ì„ ìš´ì˜í•˜ëŠ” ë°©ì‹ì— 굉장히 ë¶ˆë§Œì´ ë§ŽìŠµë‹ˆë‹¤. ê·¸ ì‚¬ëžŒë“¤ì„ ë­ë¼ê³  í•  수가 없네요. 제대로 관리하거나 아니면 ê·¸ì— ë”°ë¥´ëŠ” 결과를 ì§ë©´í•˜ì„¸ìš”!", patients_getting_hot = "환ìžë“¤ì´ 굉장히 ë”워하고 있습니다. 온ë„를 낮추거나 ë¼ë””ì—ì´í„°ê°€ 너무 많다면 조금씩 제거해주세요.", patients_leaving = "환ìžë“¤ì´ 떠나고 있습니다. 화초, 벤치, ìžíŒê¸° ë“±ì„ ë” ì„¤ì¹˜í•´ì„œ 병ì›ì„ 방문하는 사람들ì—게 ì¢‹ì€ ì¸ìƒì„ 주세요.", patients_really_thirsty = "환ìžë“¤ì´ 매우 목마릅니다. ìŒë£Œ ìžíŒê¸°ë¥¼ ë” ì„¤ì¹˜í•˜ê±°ë‚˜, 긴 대기열 주변으로 위치를 옮겨보세요.", patients_thirsty = "ì‚¬ëžŒë“¤ì´ ëª©ë§ë¼ 하고 있습니다. ìžíŒê¸°ë¥¼ ë” ì„¤ì¹˜í•´ë©´ ì¢‹ì„ ê²ƒ 같네요.", patients_thirsty2 = "ì‚¬ëžŒë“¤ì´ ëª©ë§ˆë¥´ë‹¤ê³  불í‰í•˜ê³  있습니다. ìžíŒê¸°ë¥¼ ë” ì„¤ì¹˜í•˜ê±°ë‚˜ ì´ë¯¸ 있는 ìžíŒê¸°ë“¤ì„ 사람들 근처로 옮겨 보세요.", patients_too_hot = "환ìžë“¤ì´ 너무 ë”워합니다. ë¼ë””ì—ì´í„°ë“¤ì„ 좀 제거하거나, 온ë„를 낮추거나, 아니면 ìŒë£Œ ìžíŒê¸°ë“¤ì„ ë” ë§Žì´ ë°°ì¹˜í•´ 주세요.", patients_unhappy = "환ìžë“¤ì´ ë‹¹ì‹ ì˜ ë³‘ì›ì„ 싫어합니다. ë³‘ì› í™˜ê²½ì„ ê°œì„ í•˜ê¸° 위해서 뭔가 해야 합니다.", patients_very_cold = "환ìžë“¤ì´ 매우 추워합니다. ë‚œë°©ì„ ì˜¬ë¦¬ê±°ë‚˜ 병ì›ì— ë¼ë””ì—ì´í„°ë¥¼ ë” ë§Žì´ ë°°ì¹˜í•˜ì„¸ìš”.", patients_very_thirsty = "환ìžë“¤ì´ 심ê°í•œ ê°ˆì¦ì„ ëŠë¼ê³  있습니다. 어서 ìŒë£Œ ìžíŒê¸°ë¥¼ 설치하지 않으면, ì‚¬ëžŒë“¤ì´ ì½œë¼ë¥¼ 마시러 집으로 ëŒì•„ê°€ë²„ë¦´ì§€ë„ ëª¨ë¦…ë‹ˆë‹¤.", pay_back_loan = "ëˆì´ ë§Žì´ ìŒ“ì—¬ìžˆìŠµë‹ˆë‹¤. ëŒ€ì¶œê¸ˆì„ ìƒí™˜í•˜ëŠ” ê²ƒì€ ì–´ë–¤ê°€ìš”?", people_did_it_on_the_floor = "몇몇 환ìžë“¤ì´ ìƒë¦¬í˜„ìƒì„ 참지 못했군요. 치우려면 누군가가 ê³ ìƒí•˜ê² ë„¤ìš”.", people_freezing = "놀ëžêµ°ìš”. ì´ëŸ° 중앙 ë‚œë°©ì˜ ì‹œëŒ€ì— ì–¼ì–´ì£½ì„ë§Œí¼ ì¶”ì›Œí•˜ëŠ” 환ìžë“¤ì´ 있다니요. ë¼ë””ì—ì´í„°ë“¤ì„ ë” ì„¤ì¹˜í•˜ê³  온ë„를 높여서 환ìžë“¤ì„ 따뜻하게 해주세요.", people_have_to_stand = "ì•“ê³  있는 ì‚¬ëžŒë“¤ì´ ì„œì„œ 기다려야 합니다. 지금 당장 ì•‰ì„ ìžë¦¬ë¥¼ ë” ë§Œë“¤ì–´ 주세요.", place_plants_to_keep_people = "ì‚¬ëžŒë“¤ì´ ë– ë‚˜ê³  있습니다. í™”ì´ˆë“¤ì„ ë°°ì¹˜í•˜ë©´ ê·¸ë“¤ì´ ë¨¸ë¬¼ë„ë¡ ì„¤ë“하는 ë° ë„ì›€ì´ ë  ìˆ˜ 있습니다.", place_plants2 = "ì‚¬ëžŒë“¤ì´ ë‚˜ê°€ê³  있습니다. 화초를 ë” ë§Žì´ ë°°ì¹˜í•˜ë©´ ê·¸ë“¤ì„ ì—¬ê¸° 좀 ë” ì˜¤ëž˜ 머물게 í•  수 있ì„ì§€ë„ ëª¨ë¦…ë‹ˆë‹¤.", place_plants3 = "환ìžë“¤ì˜ 불행해 하고 있습니다. 화초를 좀 ë” ë°°ì¹˜í•´ì„œ ê¸°ë¶„ì„ í’€ì–´ì£¼ì„¸ìš”.", place_plants4 = "ë” ë§Žì€ í™”ì´ˆë¡œ ì´ ê³³ ì£¼ë³€ì˜ í™˜ìžë“¤ì„ 격려해 주세요.", plants_dying = "í™”ì´ˆë“¤ì´ ì£½ì–´ê°‘ë‹ˆë‹¤. ë¬¼ì„ ì ˆì‹¤ížˆ 필요로 하고 있습니다. ìž¡ì—­ë¶€ë“¤ì„ ì‹œì¼œì„œ ë¬¼ì„ ì£¼ê²Œ 하세요. 환ìžë“¤ì€ ì£½ì€ í™”ì´ˆë¥¼ ë³´ê³  ì‹«ì–´ 합니다.", plants_thirsty = "화초를 좀 ëŒë´ì•¼ 하겠습니다. í™”ì´ˆë“¤ì´ ëª©ë§ë¼ 하고 있어요.", queue_too_long_at_reception = "접수대ì—서 안내를 기다리는 환ìžë“¤ì´ 너무 많습니다. 접수대를 추가로 설치하고 접수ì›ì„ 새로 고용하세요.", queue_too_long_send_doctor = "ë‹¹ì‹ ì˜ %s ëŒ€ê¸°ì—´ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. ë°©ì— ì˜ì‚¬ê°€ 있는지 반드시 확ì¸í•˜ì„¸ìš”.", queues_too_long = "ëŒ€ê¸°ì—´ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤.", reception_bottleneck = "접수대가 ë³‘ëª©ì´ ë˜ê³  있습니다. 접수ì›ì„ ë” ê³ ìš©í•˜ì„¸ìš”.", receptionists_tired = "접수ì›ë“¤ì´ 심하게 지쳤습니다. 지금 바로 쉬게 해주세요.", receptionists_tired2 = "접수ì›ë“¤ì´ ë§Žì´ í”¼ë¡œí•œ ìƒíƒœìž…니다. 바로 휴ì‹ì„ 좀 취하게 해주세요.", reduce_staff_rest_threshold = "ì§ì›ë“¤ì´ ë” ìžì£¼ 휴ì‹ì„ 취할 수 있ë„ë¡, ì •ì±… 화면ì—서 ì§ì› íœ´ì‹ ë¬¸í„±ì„ ë‚®ì¶°ë³´ì„¸ìš”. 그냥 ì•„ì´ë””ì–´ 입니다.", research_screen_open_1 = "연구 í™”ë©´ì„ ì‚¬ìš©í•˜ë ¤ë©´ 먼저 ì—°êµ¬ì‹¤ì„ ì§€ì–´ì•¼ 합니다.", research_screen_open_2 = "ì´ ë ˆë²¨ì—서는 연구 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 없습니다.", researcher_needs_desk_1 = "연구ì›ì—게는 ì¼í•  ì±…ìƒì´ 필요합니다.", researcher_needs_desk_2 = "ë‹¹ì‹ ì˜ ì—°êµ¬ì›ì€ ë‹¹ì‹ ì´ ì‰´ 수 있ë„ë¡ í•´ì¤€ ê²ƒì— ê°ì‚¬í•˜ê³  있습니다. ë” ë§Žì€ ì—°êµ¬ì›ì„ 배치하고 ì‹¶ì—ˆë˜ ê²ƒì´ë¼ë©´, 한 사람당 ì±…ìƒ í•˜ë‚˜ì”©ì„ ë°°ì¹˜í•´ 주어야 합니다.", researcher_needs_desk_3 = "ê°ê°ì˜ 연구ì›ì€ ìžì‹ ì´ ì¼í•  ì±…ìƒì´ 있어야 합니다.", some_litter = "잡역부는 쓰레기 문제가 심ê°í•´ì§€ê¸° ì „ì— ê·¸ê²ƒë“¤ì„ ì—†ì•¨ 수 있습니다.", staff_overworked = "ë‹¹ì‹ ì˜ ì§ì›ì€ 심ê°í•˜ê²Œ 과로한 ìƒíƒœìž…니다. ê·¸ë“¤ì€ ì ì  비효율ì ì´ ë˜ì–´ 가고 ë”ì°í•œ ì‹¤ìˆ˜ë“¤ì„ ì €ì§€ë¥´ê¸° 시작할 ê²ë‹ˆë‹¤.", staff_tired = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì´ ë§ë„안ë˜ê²Œ 지쳤습니다. ì§ì› 휴게실ì—서 쉬게 해주지 않으면 ê·¸ë“¤ì´ ë¬´ë¦¬í•´ì„œ 완전히 녹초가 ë˜ì–´ë²„릴 ê²ë‹ˆë‹¤.", staff_too_hot = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì´ 과열ë˜ê³  있습니다. ë‚œë°©ì„ ë‚®ì¶”ê±°ë‚˜ ë°©ì— ë°°ì¹˜í•œ ë¼ë””ì—ì´í„°ë“¤ì„ 제거하세요.", staff_unhappy = "ì§ì›ë“¤ì´ 불행합니다. 보너스를 지급해 주거나, 아니면 ì§ì› íœ´ê²Œì‹¤ì„ ì§€ì–´ 주는 ê²ƒì´ ë” ë‚«ê² ìŠµë‹ˆë‹¤. ë˜í•œ ë³‘ì› ì •ì±… 화면ì—서 ì§ì› íœ´ì‹ ì •ì±…ì„ ì¡°ì •í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.", staff_unhappy2 = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì€ ì´ëž˜ì €ëž˜ 불만입니다. 그리고 ê³§ ëˆì„ ë” ë‹¬ë¼ê³  요구하게 ë  ê²ë‹ˆë‹¤.", staff_very_cold = "ì§ì›ë“¤ì´ 춥다고 불í‰í•˜ê³  있습니다. ë‚œë°©ì„ ì˜¬ë¦¬ê±°ë‚˜ ë¼ë””ì—ì´í„°ë¥¼ ë” ì„¤ì¹˜í•˜ì„¸ìš”.", too_many_plants = "화초가 지나치게 많습니다. ì´ê±° ë­ ì™„ì „ížˆ 정글ì´ë„¤ìš”.", too_much_litter = "ë°”ë‹¥ì˜ ì“°ë ˆê¸°ê°€ 문제가 ë˜ê³  있습니다. 잡역부를 ë” ê³ ìš©í•˜ëŠ” ê²ƒì´ ë‹µì´ê² ì§€ìš”.", }, placement_info = { door_can_place = "ì›í•œë‹¤ë©´ ë¬¸ì„ ì—¬ê¸°ì— ì„¤ì¹˜í•  수 있습니다.", door_cannot_place = "죄송하시만 ë¬¸ì„ ì—¬ê¸°ì— ì„¤ì¹˜í•  수 없습니다.", window_can_place = "ì°½ë¬¸ì„ ì—¬ê¸° 설치할 수 있습니다.", window_cannot_place = "ì•„. 여기ì—는 ì°½ë¬¸ì„ ì„¤ì¹˜í•  수 없습니다.", object_can_place = "ì´ ë¬¼ê±´ì„ ì—¬ê¸° 배치할 수 있습니다.", object_cannot_place = "저기, 여기ì—는 ì´ ë¬¼ê±´ì„ ë°°ì¹˜í•  수 없습니다.", reception_can_place = "ì´ ì ‘ìˆ˜ëŒ€ë¥¼ 여기 설치할 수 있습니다.", reception_cannot_place = "ì´ ì ‘ìˆ˜ëŒ€ëŠ” ì—¬ê¸°ì— ì„¤ì¹˜í•  수 없습니다.", staff_can_place = "ì´ ì§ì›ì„ 여기 배치할 수 있습니다.", staff_cannot_place = "미안하지만, ì´ ì§ì›ì„ 여기 배치할 수 없습니다.", room_cannot_place = "ì´ ë°©ì„ ì—¬ê¸° 배치할 수 없습니다.", room_cannot_place_2 = "ì´ ë°©ì„ ì—¬ê¸° 배치할 수 없습니다.", }, praise = { many_benches = "환ìžë“¤ì„ ì•‰íž ì˜ìžê°€ 충분하군요. 잘했어요.", many_plants = "멋지군요. 화초가 아주 많네요. 환ìžë“¤ì´ 좋아할 ê²ë‹ˆë‹¤.", plants_are_well = "í™”ì´ˆë“¤ì„ ìž˜ 관리하고 있군요. 아주 좋아요.", few_have_to_stand = "ë³‘ì› ë‚´ì˜ ì‚¬ëžŒë“¤ì´ ì„œ 있어야 하는 ì¼ì´ ê±°ì˜ ì—†êµ°ìš”. 환ìžë“¤ì´ 기ë»í•  것입니다.", plenty_of_benches = "ì•‰ì„ ìžë¦¬ê°€ 충분하니 문제 ì—†ì„ ê²ë‹ˆë‹¤.", plants_thriving = "아주 좋아요. í™”ì´ˆë“¤ì´ ë¬´ëŸ­ë¬´ëŸ­ ìžë¼ê³  있군요. 아주 ë©‹ì ¸ 보입니다. ê³„ì† ìž˜ 관리한다면 ìƒì„ ë°›ì„ ìˆ˜ë„ ìžˆê² êµ°ìš”.", patients_cured = "%d ëª…ì˜ í™˜ìžê°€ 치료ë˜ì—ˆìŠµë‹ˆë‹¤.", }, information = { larger_rooms = "ë°©ì´ í¬ë©´ í´ìˆ˜ë¡ ì§ì›ë“¤ì´ ìžì‹ ì„ 중요하게 여기며 성과가 올ë¼ê°‘니다.", extra_items = "ë°©ì— ìžˆëŠ” ì¶”ê°€ì €ì¸ ê¸°ë¬¼ë“¤ì€ ì§ì›ë“¤ì„ 편안하게 하며 ê·¸ë“¤ì˜ ì„±ê³¼ë¥¼ 높입니다.", epidemic = "ë‹¹ì‹ ì˜ ë³‘ì›ì— ì „ì—¼ë³‘ì´ ë“¤ì–´ì™”ìŠµë‹ˆë‹¤. 당장 조치를 취해야 합니다!", promotion_to_doctor = "ë‹¹ì‹ ì˜ ìˆ˜ë ¨ì˜ì¤‘ 한 ëª…ì´ ì „ê³µì˜ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.", emergency = "ì‘급 ìƒí™©ìž…니다! 어서 움ì§ì—¬ìš”! 어서!", patient_abducted = "환ìžë“¤ì¤‘ 한 ëª…ì´ ì™¸ê³„ì¸ì— ì˜í•´ 납치ë˜ê³  있습니다.", first_cure = "잘 했습니다! 첫 환ìžë¥¼ 치료했군요.", promotion_to_consultant = "ë‹¹ì‹ ì˜ ì „ê³µì˜ì¤‘ 한 ëª…ì´ ì „ë¬¸ì˜ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.", handyman_adjust = "ë‹¹ì‹ ì€ ìž¡ì—­ë¶€ì˜ ì—…ë¬´ 우선순위를 조정해서 ë”ìš± 효과ì ìœ¼ë¡œ ì¼í•˜ë„ë¡ í•  수 있습니다.", promotion_to_specialist = "ë‹¹ì‹ ì˜ ì˜ì‚¬ì¤‘ 한 ëª…ì´ %s로 승진했습니다.", initial_general_advice = { rats_have_arrived = "병ì›ì— ì¥ê°€ ì°½ê¶í–ˆìŠµë‹ˆë‹¤. 마우스로 ì¥ë“¤ì„ 날려버리세요.", autopsy_available = "ìžë™ 부검 기계가 연구ë˜ì—ˆìŠµë‹ˆë‹¤. ì´ê²ƒìœ¼ë¡œ 문제를 ì¼ì‚¼ê±°ë‚˜ ê·€ì°®ì€ í™˜ìžë¥¼ 처치할 수 있고, ë‚¨ì€ ê²ƒìœ¼ë¡œ ì—°êµ¬ë„ ì§„í–‰í•  수 있습니다. 주ì˜í•˜ì„¸ìš” - ì´ ê¸°ê³„ë¥¼ 사용하면 엄청난 물ì˜ë¥¼ ì¼ìœ¼í‚¤ê²Œ ë  ê²ë‹ˆë‹¤.", first_patients_thirsty = "ë³‘ì› ë‚´ì— ëª©ë§ë¼í•˜ëŠ” ì‚¬ëžŒë“¤ì´ ìžˆìŠµë‹ˆë‹¤. 그런 ì‚¬ëžŒë“¤ì„ ìœ„í•´ ìŒë£Œ ìžíŒê¸°ë“¤ì„ 배치하세요.", research_now_available = "ë‹¹ì‹ ì˜ ì²« ì—°êµ¬ì‹¤ì„ ì§€ì—ˆêµ°ìš”. ì´ì œ ë‹¹ì‹ ì€ ì—°êµ¬ í™”ë©´ì„ ì‚¬ìš©í•  수 있습니다.", psychiatric_symbol = "ì •ì‹ ê³¼ í›ˆë ¨ì„ ë°›ì€ ì˜ì‚¬ë“¤ì€ 다ìŒê³¼ ê°™ì€ í‘œì‹ì„ 지닙니다: |", decrease_heating = "병ì›ì´ 너무 ë¥ìŠµë‹ˆë‹¤. ë‚œë°©ì„ ì¢€ 낮추세요. ë§ˆì„ ì§€ë„ í™”ë©´ì—서 조절할 수 있습니다.", surgeon_symbol = "ìˆ˜ìˆ ì„ ì§‘ë„í•  수 있는 ì˜ì‚¬ë“¤ì€ 다ìŒê³¼ ê°™ì€ í‘œì‹ì„ 지닙니다: {", first_emergency = "ì‘급 환ìžë“¤ì˜ 머리 위ì—는 파란 ë¶ˆì´ ê¹œë¹¡ê±°ë¦½ë‹ˆë‹¤. ê·¸ë“¤ì´ ì‚¬ë§í•˜ê¸° ì „ì—, í˜¹ì€ ì œí•œëœ ì‹œê°„ì´ ì§€ë‚˜ê¸° ì „ì— ì¹˜ë£Œí•˜ì„¸ìš”.", first_epidemic = "병ì›ì— ì „ì—¼ë³‘ì´ ëŒê¸° 시작했군요! ì´ ì‚¬ì‹¤ì„ ìˆ¨ê¸´ì±„ 조용히 처리할지, 아니면 사실대로 공개할지 결정하세요.", taking_your_staff = "누군가가 ë‹¹ì‹ ì˜ ì§ì›ì„ 꼬시고 있습니다. ì§ì›ë“¤ì„ ëºê¸°ì§€ 않으려면 싸워야 í•  ê²ë‹ˆë‹¤.", place_radiators = "병ì›ì´ 너무 춥습니다 - ë³µë„ ê¸°ë¬¼ 메뉴ì—서 추가로 ë¼ë””ì—ì´í„°ë¥¼ 주문해서 병ì›ì— 배치할 수 있습니다.", epidemic_spreading = "병ì›ì— ì „ì—¼ë³‘ì´ ëŒê³  있습니다. ê°ì—¼ëœ 환ìžë“¤ì´ 떠나기 ì „ì— ì¹˜ë£Œí•˜ë„ë¡ ì‹œë„하세요.", research_symbol = "연구 ëŠ¥ë ¥ì´ ìžˆëŠ” ì˜ì‚¬ë“¤ì€ 다ìŒê³¼ ê°™ì€ í‘œì‹ì„ 지닙니다: }", machine_needs_repair = "수리가 필요한 기계가 있습니다. ìš°ì„  기계를 찾아낸 ë’¤ - 연기가 나고 ìžˆì„ ê±°ì˜ˆìš” - í´ë¦­í•˜ì„¸ìš”. 그런 ë’¤ 잡역부 ë²„íŠ¼ì„ ëˆ„ë¥´ì„¸ìš”.", increase_heating = "ì‚¬ëžŒë“¤ì´ ì¶”ì›Œí•©ë‹ˆë‹¤. ë§ˆì„ ì§€ë„ í™”ë©´ìœ¼ë¡œ 가서 ë‚œë°©ì„ ì˜¬ë¦¬ì„¸ìš”.", first_VIP = "ë‹¹ì‹ ì˜ ì²« VIPê°€ ê³§ 방문할 예정입니다. VIPê°€ 비위ìƒì ì¸ 모습ì´ë‚˜ 불행해보ì´ëŠ” 환ìžë¥¼ ë³´ì§€ 못하ë„ë¡ ì£¼ì˜ë¥¼ 기울ì´ì„¸ìš”.", }, patient_leaving_too_expensive = "환ìžê°€ %s ì˜ ë¹„ìš©ì„ ì§€ë¶ˆí•˜ì§€ 않고 병ì›ì„ 떠납니다. 너무 비싸요.", vip_arrived = "조심하세요! - %s ì´(ê°€) ë‹¹ì‹ ì˜ ë³‘ì›ì„ 방문했습니다! 모든 ê²ƒì´ ì›ë§Œí•˜ê²Œ ëŒì•„ê°€ë„ë¡ í•˜ê³  그를 만족시키세요.", epidemic_health_inspector = "ë³´ê±´ë¶€ì— ë‹¹ì‹ ì˜ ì „ì—¼ë³‘ ìƒí™©ì´ ë³´ê³ ë˜ì—ˆìŠµë‹ˆë‹¤. ê±´ê°• ê°ì‹œê´€ì˜ ë°©ë¬¸ì— ëŒ€ë¹„í•˜ì„¸ìš”.", first_death = "첫 번째 환ìžë¥¼ 죽였군요. ê¸°ë¶„ì´ ì–´ë•Œìš”?", pay_rise = "ì§ì›ì¤‘ 한 ëª…ì´ ê·¸ë§Œë‘겠다고 협박하고 있습니다. 요구를 들어줄지 í•´ê³ í•´ 버릴지 결정하세요. 왼쪽 ì•„ëž˜ì— ìžˆëŠ” ì•„ì´ì½˜ì„ í´ë¦­í•´ì„œ ì–´ë–¤ ì§ì›ì´ 협박하고 있는지 확ì¸í•˜ì„¸ìš”.", place_windows = "ì°½ë¬¸ì„ ë°°ì¹˜í•˜ë©´ ë°©ì´ ë°ì•„지고 ì§ì›ì˜ 사기가 올ë¼ê°‘니다.", fax_received = "화면 왼쪽 ì•„ëž˜ì— ë°©ê¸ˆ 나타난 ì•„ì´ì½˜ì€ 중요한 ì •ë³´ í˜¹ì€ ë‹¹ì‹ ì´ ê²°ì •í•´ì•¼í•  ìƒí™©ì„ 알려ì¤ë‹ˆë‹¤.", }, build_advice = { placing_object_blocks_door = "ê·¸ ë¬¼ê±´ì„ ê±°ê¸° 배치하면 ì‚¬ëžŒë“¤ì´ ë¬¸ì„ ì‚¬ìš©í•˜ì§€ 못하게 ë©ë‹ˆë‹¤.", blueprint_would_block = "ê·¸ ì²­ì‚¬ì§„ì€ ë‹¤ë¥¸ ë°©ì„ ê°€ë¡œë§‰ì„ ê²ë‹ˆë‹¤. ë°©ì˜ í¬ê¸°ë¥¼ 조절하거나 다른 곳으로 옮기세요!", door_not_reachable = "ì‚¬ëžŒë“¤ì€ ê·¸ ë¬¸ì„ ì‚¬ìš©í•  수 ì—†ì„ ê²ƒìž…ë‹ˆë‹¤. ìƒê°ì„ 해보세요.", blueprint_invalid = "올바른 ì²­ì‚¬ì§„ì´ ì•„ë‹™ë‹ˆë‹¤.", }, } update_window = { new_version = "새 버전:", caption = "ì—…ë°ì´íЏ 가능!", download = "다운로드 페ì´ì§€ë¡œ ì´ë™", current_version = "현재 버전:", ignore = "건너 ë›°ê³  ë©”ì¸ ë©”ë‰´ë¡œ ì´ë™", } calls_dispatcher = { repair = "%s ì„(를) 수리", summary = "%d ê±´ì˜ ìš”ì²­; %d ê±´ 할당ë¨", close = "닫기", watering = "%d,%d ì—서 물주는 중", staff = "%s - %s", } information = { cheat_not_possible = "ì´ ë ˆë²¨ì—서는 해당 치트를 사용할 수 없습니다. 치트하면서까지 실패하네요, 웃기지 않아요?", very_old_save = "ì´ ë ˆë²¨ì„ ì‹œìž‘í•œ ì´í›„로 ìˆ˜ë§Žì€ ì—…ë°ì´íŠ¸ê°€ 있었습니다. 모든 ê¸°ëŠ¥ì´ ì›í™œížˆ ë™ìž‘하게 하려면 재시작하는 ê²ƒì„ ê¶Œí•©ë‹ˆë‹¤.", no_custom_game_in_demo = "죄송합니다. ë°ëª¨ 버전ì—서는 커스텀 ë§µì„ í”Œë ˆì´í•  수 없습니다.", cannot_restart = "안타ê¹ì§€ë§Œ, ì´ ì»¤ìŠ¤í…€ ê²Œìž„ì€ ìž¬ì‹œìž‘ ê¸°ëŠ¥ì´ êµ¬í˜„ë˜ê¸° ì „ì— ë§Œë“¤ì–´ì¡ŒìŠµë‹ˆë‹¤.", custom_game = "CorsixTH ì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤. ì´ ì»¤ìŠ¤í…€ ë§µì„ ë§ˆìŒê» ì¦ê²¨ì£¼ì„¸ìš”!", level_lost = { [1] = "ì´ëŸ°! ë‹¹ì‹ ì€ ì´ ë ˆë²¨ì„ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. ë‹¤ìŒ ê¸°íšŒì—!", [2] = "실패한 ì´ìœ :", reputation = "ë‹¹ì‹ ì˜ í‰íŒì´ %d 아래로 떨어졌습니다.", balance = "ë‹¹ì‹ ì˜ ì€í–‰ 잔고가 %d 아래로 떨어졌습니다.", percentage_killed = "ë‹¹ì‹ ì€ %d í¼ì„¼íŠ¸ë³´ë‹¤ ë§Žì€ í™˜ìžë¥¼ 사ë§í•˜ê²Œ 했습니다.", cheat = "ë‹¹ì‹ ì´ ì¼ë¶€ëŸ¬ 그랬거나 ë²„íŠ¼ì„ ìž˜ëª» 눌렀나ë´ìš”? ì¹˜íŠ¸ë„ í•˜ë‚˜ 제대로 못하다니 ì–´ì´ì—†ì£ ?", }, } new_game_window = { hard = "ì „ë¬¸ì˜ (어려움)", cancel = "취소", tutorial = "튜토리얼", option_on = "켜ì§", option_off = "꺼ì§", difficulty = "난ì´ë„", easy = "ìˆ˜ë ¨ì˜ (쉬움)", caption = "캠페ì¸", player_name = "플레ì´ì–´ ì´ë¦„", start = "시작", medium = "ì „ê³µì˜ (보통)", } casebook = { sent_home = "ëŒë ¤ 보냄", deaths = "치사", treatment_charge = "치료 비용", reputation = "í‰íŒ", research = "집중 연구", cure = "치료방법", cured = "치료", earned_money = "ë²Œì–´ë“¤ì¸ ëˆ", cure_desc = { hire_doctors = "ë‹¹ì‹ ì€ ì˜ì‚¬ë“¤ì„ 고용해야 합니다.", hire_psychiatrists = "ë‹¹ì‹ ì€ ì •ì‹ ê³¼ ì˜ì‚¬ë¥¼ 고용해야 합니다.", hire_surgeons = "ë‹¹ì‹ ì€ ì™¸ê³¼ ì˜ì‚¬ë“¤ì„ 고용해야 합니다.", hire_nurses = "ê°„í˜¸ì‚¬ë“¤ì„ ê³ ìš©í•´ì•¼ 합니다.", build_ward = "ë‹¹ì‹ ì€ ì—¬ì „ížˆ 병ë™ì„ 지어야 합니다.", no_cure_known = "알려진 치료법 ì—†ìŒ.", improve_cure = "치료법 개선.", cure_known = "치료 가능.", build_room = "%s ì„(를) ì§€ì„ ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤.", }, } handyman_window = { all_parcels = "모든 구íš", parcel = "구íš", } folders_window = { screenshots_location = "스í¬ë¦°ìƒ·ì„ 저장할 디렉토리를 ì„ íƒí•˜ì„¸ìš”", music_label = "MP3들", back = "뒤로", savegames_label = "ì €ìž¥ëœ ê²Œìž„ë“¤", caption = "í´ë” 위치", savegames_location = "ê²Œìž„ì„ ì €ìž¥í•  디렉토리를 ì„ íƒí•˜ì„¸ìš”", font_label = "í°íЏ", new_th_location = "여기서 테마 ë³‘ì› ì„¤ì¹˜ 디렉토리를 새로 지정할 수 있습니다. 새 위치를 지정하는 즉시 ê²Œìž„ì´ ìž¬ì‹œìž‘ ë©ë‹ˆë‹¤.", screenshots_label = "스í¬ë¦°ìƒ·", music_location = "ìŒì•…ì„ ìž¬ìƒí•  디렉토리를 ì„ íƒí•˜ì„¸ìš”", data_label = "테마 ë³‘ì› ë°ì´í„°", } customise_window = { movies = "ì˜ìƒ 컨트롤", option_on = "켜ì§", option_off = "꺼ì§", back = "뒤로", paused = "ì •ì§€ ìƒíƒœì—서 건설", intro = "ì¸íŠ¸ë¡œ ì˜ìƒ 재ìƒ", volume = "ìŒëŸ‰ ê°ì†Œ 단축키", caption = "커스텀 설정", fractured_bones = "골절", average_contents = "ì¼ë°˜ 비품", aliens = "ì™¸ê³„ì¸ í™˜ìž", } diseases = { alien_dna = { name = "외계 DNA", cause = "ì›ì¸ - ì‚¬ëžŒì˜ ì–¼êµ´ì— ë‹¬ë¼ë¶™ëŠ” ì§€ì ì¸ 외계 ìƒëª…ì˜ í˜ˆì•¡.", symptoms = "ì¦ìƒ - 서서히 외계 ìƒëª…체로 변해가며 ì¸ê°„ì˜ ë„시를 파괴하고 ì‹¶ì€ ìš•ë§ì´ ìƒê¹€.", cure = "치료 - 환ìžì˜ DNA 를 기계ì ìœ¼ë¡œ 추출한 ë’¤, 외계 요소를 제거하고 다시 ì§‘ì–´ ë„£ìŒ.", }, autopsy = { name = "부검", }, baldness = { name = "대머리", cause = "ì›ì¸ - ì¸ê¸°ë¥¼ 얻기 위해 ê±°ì§“ë§ì„ 하고 지어낸 ì´ì•¼ê¸°ë“¤ì„ 함.", symptoms = "ì¦ìƒ - ë°˜ì§ì´ëŠ” 머리와 ë™ë°˜ë˜ëŠ” ë¶€ë„러움.", cure = "치료 - 고통스러운 기계를 사용해 환ìžì˜ ë‘ë¶€ì— ë¨¸ë¦¬ì¹´ë½ì„ 심ìŒ.", }, bloaty_head = { name = "ë¶€ì€ ë¨¸ë¦¬", cause = "ì›ì¸ - 치즈 냄새를 ë§¡ê³  정수ë˜ì§€ ì•Šì€ ë¹—ë¬¼ì„ ë§ˆì‹¬.", symptoms = "ì¦ìƒ - 굉장히 불편해ì§.", cure = "치료 - íŒ½ì°½ëœ ë¨¸ë¦¬ë¥¼ 뻥 터뜨린 ë’¤, 똑똑한 기계를 사용해 정확한 압력으로 재 팽창시킴.", }, broken_heart = { name = "가슴 ì•“ì´", cause = "ì›ì¸ - 환ìžë³´ë‹¤ 부유하거나 ì Šê³  날씬한 사람.", symptoms = "ì¦ìƒ - 울ìŒê³¼ ë‚˜ë“¤ì´ ì‚¬ì§„ë“¤ì„ ë°˜ë³µì ìœ¼ë¡œ 찢어서 ìƒê¸°ëŠ” 근육 ì†ìƒ.", cure = "치료 - 외과 ì˜ì‚¬ ë‘ ëª…ì´ í™˜ìžì˜ í‰ë¶€ë¥¼ ì—´ê³  ìˆ¨ì„ ì°¸ì€ ì±„ë¡œ 조심스레 ì‹¬ìž¥ì„ ê³ ì¹¨.", }, broken_wind = { name = "ì§€ì†ì„± ë°©ê·€", cause = "ì›ì¸ - ì‹ì‚¬ ì§í›„ì— í—¬ìŠ¤ìž¥ì—서 런ë‹ë¨¸ì‹ ì„ 뜀.", symptoms = "ì¦ìƒ - í™˜ìž ë°”ë¡œ ë’¤ì— ìžˆëŠ” ì‚¬ëžŒë“¤ì„ ë¶ˆíŽ¸í•˜ê²Œ 함.", cure = "치료 - ë¬¼ê°™ì€ íŠ¹ìˆ˜í•œ ë¬¼ì§ˆë“¤ì„ ì„žì€ í˜¼í•© ìš©ì•¡ì„ ì•½êµ­ì—서 ì‹ ì†í•˜ê²Œ 마심.", }, chronic_nosehair = { name = "만성 콧털", cause = "ì›ì¸ - 환ìžë³´ë‹¤ 가난한 ì‚¬ëžŒë“¤ì„ ì‹¬í•˜ê²Œ 경멸하며 ì½”ì›ƒìŒ ì¹¨.", symptoms = "ì¦ìƒ - 오소리가 둥지를 í‹€ì–´ë„ ë ë§Œí¼ 거대한 콧털.", cure = "치료 - 약국ì—서 간호사가 조제한 역겨운 모발 제거 ë¬¼ì•½ì„ ë§ˆì‹¬.", }, corrugated_ankles = { name = "주름잡힌 발목", cause = "ì›ì¸ - ë„로 ìƒì˜ 서행 표지를 차로 ë°Ÿê³  지나ê°.", symptoms = "ì¦ìƒ - ì‹ ë°œ ë“±ì„ ì‹ ê¸°ê°€ 매우 불편해ì§.", cure = "치료 - ë°œëª©ì„ íŽ´ê¸° 위해 ì•½ê°„ì˜ ë…ì„±ì´ ìžˆëŠ” 허브와 향신료 í˜¼í•©ë¬¼ì„ ë§ˆì‹¬.", }, diag_blood_machine = { name = "혈액 ë¶„ì„기 진단", }, diag_cardiogram = { name = "ì‹¬ì „ë„ ì§„ë‹¨", }, diag_general_diag = { name = "ì¼ë°˜ 진단", }, diag_psych = { name = "ì •ì‹ ê³¼ 진단", }, diag_scanner = { name = "스ìºë„ˆ 진단", }, diag_ultrascan = { name = "울트ë¼ìŠ¤ìº” 진단", }, diag_ward = { name = "ë³‘ë™ ì§„ë‹¨", }, diag_x_ray = { name = "X-ë ˆì´ ì§„ë‹¨", }, fake_blood = { name = "가짜피", cause = "ì›ì¸ - 환ìžê°€ ì§“ê¶‚ì€ ìž¥ë‚œì— ë„ˆë¬´ 쉽게 당함.", symptoms = "ì¦ìƒ - ì •ë§¥ì— í˜ˆì•¡ 대신 ì²œì— ë‹¿ìœ¼ë©´ ì¦ë°œí•˜ëŠ” ë¶‰ì€ ì•¡ì²´ê°€ í름.", cure = "치료 - ì •ì‹ ê³¼ì ì¸ ì§„ì •ì´ ìœ ì¼í•œ í•´ê²°ì±….", }, discrete_itching = { name = "ê°„í—성 가려움ì¦", cause = "ì›ì¸ - 날카로운 ì´ë¹¨ì„ 지닌 ìž‘ì€ ê³¤ì¶©.", symptoms = "ì¦ìƒ - 심하게 ê¸ì–´ì„œ 몸 ì—¬ê¸°ì €ê¸°ì— ì—¼ì¦ì´ ìƒê¹€.", cure = "치료 - í”¼ë¶€ì˜ ê°€ë ¤ì›€ì„ ë°©ì§€í•˜ê¸° 위해 ëˆì ëˆì í•œ ì‹œëŸ½ì„ ë§ˆì‹¬.", }, fractured_bones = { name = "골절", cause = "ì›ì¸ - ë†’ì€ ê³³ì—서 콘í¬ë¦¬íЏ 위로 떨어ì§.", symptoms = "ì¦ìƒ - 쿵 하는 소리와 함께 부러진 팔/다리를 사용할 수 없게 ë¨.", cure = "치료 - ê¹ìŠ¤ë¥¼ 한 ë’¤ ë ˆì´ì € 기반 제거 기계로 제거함.", }, gastric_ejections = { name = "위액 ë¶„ì¶œ", cause = "ì›ì¸ - 아주 매운 멕시코, ì¸ë„ ìŒì‹.", symptoms = "ì¦ìƒ - 반쯤 ì†Œí™”ëœ ìŒì‹ì´ 환ìžì—게서 닥치는 대로 ë¶„ì¶œë¨.", cure = "치료 - 특수한 경화 ìš©ì•¡ì„ ë§ˆì…”ì„œ 토하는 ê²ƒì„ ë§‰ìŒ.", }, general_practice = { name = "진료", }, golf_stones = { name = "골프 ê²°ì„", cause = "ì›ì¸ - 골프공 ë‚´ë¶€ì˜ ë…ê°€ìŠ¤ì— ë…¸ì¶œë¨.", symptoms = "ì¦ìƒ - ì •ì‹  착란 ì¦ì„¸ì™€ 심ê°í•œ 수치심.", cure = "치료 - ë‘ ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ê°€ ìˆ˜ìˆ ì„ í†µí•´ ê²°ì„ì„ ì œê±°í•´ì•¼ 함.", }, gut_rot = { name = "ì©ì€ ì°½ìž", cause = "ì›ì¸ - O'Malley ë¶€ì¸ì˜ ë내주는 기침약 위스키.", symptoms = "ì¦ìƒ - ê¸°ì¹¨ì´ ì‚¬ë¼ì§€ì§€ë§Œ, ìœ„ìž¥ë²½ì˜ ë³´í˜¸ë§‰ë„ í•¨ê»˜ 사ë¼ì§.", cure = "치료 - 간호사가 ì ì ˆížˆ ì„ íƒí•œ 용해 혼합물로 ìœ„ìž¥ë²½ì„ ì½”íŒ….", }, hairyitis = { name = "모발 과다ì¦", cause = "ì›ì¸ - ë‹¬ë¹›ì— ì˜¤ëž«ë™ì•ˆ 노출ë¨.", symptoms = "ì¦ìƒ - 환ìžë“¤ì€ 후ê°ì´ 굉장히 예민해ì§.", cure = "치료 - 전기분해 기계로 ëª¨ë°œì„ ì œê±°í•˜ê³  ëª¨ê³µì„ ë´‰í•¨.", }, heaped_piles = { name = "치질", cause = "ì›ì¸ - 냉ê°ê¸° ì£¼ìœ„ì— ì„œìžˆìŒ.", symptoms = "ì¦ìƒ - 마치 구슬 주머니 ìœ„ì— ì•‰ì•„ìžˆëŠ” 것 ê°™ì€ ëŠë‚Œì„ ë°›ìŒ.", cure = "치료 - 기분좋ì€, 그러나 아주 강력한 ì‚°ì„±ì˜ ìŒë£Œë¥¼ 마셔서 ìž¥ì— ìŒ“ì¸ ë¬¼ì§ˆì„ ë…¹ìž„.", }, infectious_laughter = { name = "전염성 웃ìŒë³‘", cause = "ì›ì¸ - ê³ ì „ ìƒí™© 코메디.", symptoms = "ì¦ìƒ - ëì—†ì´ í‚¥í‚¥ê±°ë¦¬ë©° 웃고 재미없는 ìºì¹˜í”„ë ˆì´ì¦ˆë¥¼ 반목해서 ë§í•¨.", cure = "치료 - ìžê²©ì„ 갖춘 ì •ì‹ ê³¼ ì˜ì‚¬ê°€ 환ìžì—게 지금 ìƒí™©ì´ 얼마나 심ê°í•œì§€ ìƒê¸°ì‹œí‚´.", }, invisibility = { name = "투명ì¸ê°„", cause = "ì›ì¸ - ëˆˆì— ì•ˆë³´ì´ëŠ” 방사능 개미ì—게 물림.", symptoms = "ì¦ìƒ - 환ìžëŠ” 특별히 불편하지 않ìŒ. 사실 ë§Žì€ í™˜ìžë“¤ì€ ì´ ë³‘ìœ¼ë¡œ 가족들ì—게 ì§“ê¶‚ì€ ìž¥ë‚œì„ ì¹¨.", cure = "치료 - 약국ì—서 다채로운 ìƒ‰ì˜ ì•¡ì²´ë¥¼ 마시면 ê³§ ëˆˆì— ë³´ì´ê²Œ ë¨.", }, iron_lungs = { name = "ì² í™”ëœ í", cause = "ì›ì¸ - ë„시 ë‚´ì˜ ìŠ¤ëª¨ê·¸ì™€ 케밥 찌꺼기가 섞여서 ìƒê¹€.", symptoms = "ì¦ìƒ - ë¶ˆì„ ë¿œê±°ë‚˜ ê¹Šì€ ë¬¼ ì†ì—서 소리지를 수 있ìŒ.", cure = "치료 - ë‘ ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ê°€ 수술실ì—서 íì˜ êµ³ì€ ë¶€ë¶„ì„ ì œê±°í•¨.", }, jellyitis = { name = "젤리염", cause = "ì›ì¸ - ì ¤ë¼í‹´ ì„±ë¶„ì´ í’부한 ì‹ë‹¨ê³¼ 너무 과한 ìš´ë™.", symptoms = "ì¦ìƒ - 엄청난 비틀거림과 ìžì£¼ 넘어ì§.", cure = "치료 - 특수한 ë°©ì—서 ì ¤ë¦¬í†µì— í™˜ìžì˜ ëª¸ì„ ìž ì‹œë™ì•ˆ 담금.", }, kidney_beans = { name = "콩팥콩", cause = "ì›ì¸ - ìŒë£Œìˆ˜ì— ë“  ì–¼ìŒì„ 씹어먹ìŒ.", symptoms = "ì¦ìƒ - 통ì¦ê³¼ ìž¦ì€ í™”ìž¥ì‹¤ 출입.", cure = "치료 - ë‘ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ê°€ ì½©íŒ¥ì„ ìœ ì§€í•œ 채 콩만 제거해내야 함.", }, king_complex = { name = "왕ìžë³‘", cause = "ì›ì¸ - ì™•ì˜ ì˜í˜¼ì´ 환ìžì˜ ì •ì‹ ì„ ì§€ë°°í•¨.", symptoms = "ì¦ìƒ - 색ìƒì´ 화려한 스웨ì´ë“œ ì‹ ë°œì„ ì‹ ìœ¼ë©° 치즈버거를 먹ìŒ.", cure = "치료 - ì •ì‹ ê³¼ ì˜ì‚¬ê°€ 지금 환ìžê°€ 얼마나 우습게 ë³´ì´ëŠ”ì§€ ë§í•´ì¤Œ.", }, pregnancy = { name = "임신", cause = "ì›ì¸ - ë„시 ì§€ì—­ì˜ ì •ì „.", symptoms = "ì¦ìƒ - ë³€ë•스럽게 ìŒì‹ì„ 먹으며 ê²°ê³¼ì ìœ¼ë¡œ 배불ëšì´ê°€ ë¨.", cure = "치료 - 수술실ì—서 아기를 받아 씻긴 ë’¤ 환ìžì—게 ëŒë ¤ì¤Œ.", }, ruptured_nodules = { name = "혹 파열", cause = "ì›ì¸ - 추운 ë‚ ì”¨ì— ë²ˆì§€ ì í”„를 함.", symptoms = "ì¦ìƒ - 편안하게 앉지를 못함.", cure = "치료 - ë‘ ëª…ì˜ ìžê²©ìžˆëŠ” 외과 ì˜ì‚¬ê°€ 떨림 없는 ì†ìœ¼ë¡œ í˜¹ì„ ì œê±°í•´ì•¼ 함.", }, serious_radiation = { name = "심ê°í•œ 방사능 오염", cause = "ì›ì¸ - 플루토늄 ë™ìœ„ ì›ì†Œë¥¼ 껌으로 ì°©ê°í•¨.", symptoms = "ì¦ìƒ - ì´ ìƒíƒœì˜ 환ìžëŠ” 아주 ë§Žì´ ê¸°ë¶„ì´ ì¢‹ì§€ 않ìŒ.", cure = "치료 - 환ìžë¥¼ 오염제거 샤워기로 깨ë—하게 씻어줘야 함.", }, slack_tongue = { name = "늘어진 혀", cause = "ì›ì¸ - 아침 드ë¼ë§ˆì— 대한 ì§€ì†ì ì¸ 과다 ë…¼ìŸ.", symptoms = "ì¦ìƒ - 혀가 ì›ëž˜ í¬ê¸°ì˜ 다섯 ë°° ì •ë„로 팽창함.", cure = "치료 - 혀를 ì ˆë‹¨ê¸°ì— ë„£ê³  효과ì ì´ì§€ë§Œ 고통스러운 방법으로 재빨리 절단해냄.", }, sleeping_illness = { name = "수면ì¦", cause = "ì›ì¸ - ìž… ì²œìž¥ì˜ ìˆ˜ë©´ ë¶„ë¹„ì„ ì˜ ê³¼í™œì„±í™”.", symptoms = "ì¦ìƒ - 아무ë°ì„œë‚˜ ì¼ì–´ë‚˜ëŠ” ì••ë„ì ì¸ 수면욕.", cure = "치료 - ê°„í˜¸ì‚¬ì˜ ê´€ë¦¬ í•˜ì— ê°•ë ¥í•œ ìžê·¹ì œë¥¼ 충분히 투약.", }, spare_ribs = { name = "ì—¬ë¶„ì˜ ëŠ‘ê³¨", cause = "ì›ì¸ - 차가운 ëŒë°”ë‹¥ì— ì•‰ìŒ.", symptoms = "ì¦ìƒ - 가슴 ë¶€ìœ„ì˜ ë¶ˆíŽ¸í•œ ëŠë‚Œ.", cure = "치료 - 2ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ê°€ ì—¬ë¶„ì˜ ëŠ‘ê³¨ì„ ì œê±°í•œ ë’¤, ê°•ì•„ì§€ ê°„ì‹ìš© ë´‰íˆ¬ì— ë„£ì–´ 환ìžì—게 ëŒë ¤ì¤Œ.", }, sweaty_palms = { name = "다한ì¦", cause = "ì›ì¸ - êµ¬ì§ ë©´ì ‘ì— ëŒ€í•œ ë‘려움.", symptoms = "ì¦ìƒ - 환ìžì™€ 악수하는 ê²ƒì´ ë§ˆì¹˜ 방금 ë¬¼ì— í‘¹ ì ì‹  스펀지를 잡는 것 ê°™ìŒ.", cure = "치료 - ì •ì‹ ê³¼ ì˜ì‚¬ê°€ 환ìžì™€ 대화하여 ì´ ë§Œë“¤ì–´ì§„ 병ì—서 벗어나게 해야 함.", }, the_squits = { name = "설사병", cause = "ì›ì¸ - ì˜¤ë¸ ë°‘ì— ë–¨ì–´ì ¸ ìžˆë˜ í”¼ìžë¥¼ ì„­ì·¨.", symptoms = "ì¦ìƒ - 으. ë§ ì•ˆí•´ë„ ì•Œê² ì£ .", cure = "치료 - 섬유질 ì„±ë¶„ì˜ ì ì„±ì˜ 액체로 환ìžì˜ 내부를 굳힘.", }, third_degree_sideburns = { name = "3ë„ êµ¬ë ›ë‚˜ë£»", cause = "ì›ì¸ - 70ë…„ëŒ€ì— ëŒ€í•œ 진한 향수", symptoms = "ì¦ìƒ - í’성한 머리, 나팔바지, 플랫í¼ê³¼ 현란한 화장.", cure = "치료 - ì •ì‹ ê³¼ ì˜ì‚¬ê°€ 최신 ê¸°ìˆ ë“¤ì„ ì‚¬ìš©í•´ì„œ ì´ëŸ° ë¶ì‹¤ë¶ì‹¤í•œ ì¹˜ìž¥ì€ ì§€ì €ë¶„í•´ ë³´ì¸ë‹¤ê³  확신시켜야 함.", }, transparency = { name = "투과ì¦", cause = "ì›ì¸ - ì—´ë ¤ ìžˆë˜ í•­ì•„ë¦¬ ëšœê»‘ì— ë¬»ì€ ìš”êµ¬ë¥´íŠ¸ë¥¼ í•¥ìŒ.", symptoms = "ì¦ìƒ - ì‚´ì´ íˆ¬ëª…í•´ì§€ë©° ì†ì´ ë¹„ì³ ë”ì°í•œ ëª¨ìŠµì´ ë¨.", cure = "치료 - 특수하게 ëƒ‰ê° ë° ì°©ìƒ‰ëœ ìŒë£Œë¥¼ 약국ì—서 마심.", }, tv_personalities = { name = "TV 중ë…", cause = "ì›ì¸ - 낮시간 텔레비전 프로그램.", symptoms = "ì¦ìƒ - ìžì‹ ì´ 요리 í”„ë¡œê·¸ëž¨ì„ ìƒì˜í•  수 있ì„ê±°ë¼ëŠ” ì°©ê°.", cure = "치료 - í›ˆë ¨ëœ ì •ì‹ ê³¼ ì˜ì‚¬ê°€ 환ìžë¥¼ 설ë“해서 TV를 팔고 ë¼ë””오를 구매하ë„ë¡ í•¨.", }, uncommon_cold = { name = "í¬í•œí•œ ê°ê¸°", cause = "ì›ì¸ - ê³µê¸°ì¤‘ì— ë– ë‹¤ë‹ˆëŠ” ìž‘ì€ ì½§ë¬¼ 방울.", symptoms = "ì¦ìƒ - í르는 콧물, 재채기, ë³€ìƒ‰ëœ í.", cure = "치료 - 약국ì—서 조제한 íŠ¹ì´ ê°ê¸°ì•½ì„ ì­‰ 들ì´í‚¤ë©´ 나ìŒ.", }, unexpected_swelling = { name = "ëœ»ë°–ì˜ íŒ½ì°½", cause = "ì›ì¸ - 뭔가 예ìƒì¹˜ 못한 것.", symptoms = "ì¦ìƒ - 팽창.", cure = "치료 - ë‘ ëª…ì˜ ì™¸ê³¼ ì˜ì‚¬ê°€ ìˆ˜ìˆ ì„ í†µí•´ íŒ½ì°½ëœ ë¶€ë¶„ì„ ì°”ëŸ¬ì„œ 터뜨리는 수 ë°–ì— ì—†ìŒ.", }, } policy = { header = "ë³‘ì› ì •ì±…", diag_procedure = "진단 절차", diag_termination = "진단 종료", staff_rest = "ì§ì›ì˜ 휴ì‹", staff_leave_rooms = "ì§ì›ì´ ë°©ì„ ë– ë‚¨", sliders = { guess = "ì¶”ì¸¡ì— ì˜í•œ 치료", send_home = "ëŒë ¤ 보내기", stop = "절차 중지", staff_room = "ì§ì› 휴게실로 ì´ë™", }, } options_window = { fullscreen = "전체화면", cancel = "취소", custom_resolution = "커스텀...", option_on = "켜ì§", option_off = "꺼ì§", back = "뒤로", caption = "옵션", language = "게임 언어", apply = "ì ìš©", width = "너비", change_resolution = "í•´ìƒë„ 변경", height = "높ì´", resolution = "í•´ìƒë„", folder = "í´ë”", audio = "오디오", customise = "커스터마ì´ì¦ˆ", } trophy_room = { all_cured = { awards = { [1] = "작년 한해 ë™ì•ˆ 모든 환ìžë“¤ì„ 성공ì ìœ¼ë¡œ 치료한 것으로 '마리 퀴리 ìƒ (Marie Curie Award)'ì„ ìˆ˜ìƒí•˜ê²Œ ëœ ê²ƒì„ ì¶•í•˜í•©ë‹ˆë‹¤.", }, trophies = { [1] = "êµ­ì œ 치료 ìž¬ë‹¨ì€ ë‹¹ì‹ ì´ ìž‘ë…„ 한해 ë™ì•ˆ 모든 ì‚¬ëžŒì„ ì¹˜ë£Œí–ˆë‹¤ëŠ” 사실ì„, 'ì „ì›ì¹˜ë£Œ 트로피 (Cure-All Trophy)'를 수여하는 것으로 ê¸°ë¦¬ê³ ìž í•©ë‹ˆë‹¤.", [2] = "ë‹¹ì‹ ì€ ìž‘ë…„ì— ë°©ë¬¸í•œ 모든 환ìžë¥¼ 치료한 공로로 '무병 가글러 트로피 (No-ill Gargler Trophy)'를 수ìƒí–ˆìŠµë‹ˆë‹¤.", }, }, best_value_hosp = { trophies = { [1] = "작년 한해 ë™ì•ˆ 가장 ë†’ì€ í‰ê°€ë¥¼ ë°›ì€ ë³‘ì›ì—게 주어지는 '완전무결 트로피 (SqueakiKlean Trophy)'를 수ìƒí•˜ê²Œ ëœ ê²ƒì„ ì¶•í•˜í•©ë‹ˆë‹¤. ë‹¹ì‹ ì€ ì¶©ë¶„ížˆ ë°›ì„ ìžê²©ì´ 있습니다.", }, penalty = { [1] = "ì£¼ë³€ì˜ ëª¨ë“  병ì›ì´ 당신 병ì›ë³´ë‹¤ ë” ê°€ì¹˜ê°€ 있습니다. ì´ ìˆ˜ì¹˜ìŠ¤ëŸ¬ìš´ ìƒí™©ì„ 수습해 보세요. 비싼 ë¬¼ê±´ë“¤ì„ ì¢€ 들여놓으세요!", }, regional = { [1] = "게임 ë‚´ì—서 가장 가치 있는 병ì›ì„ 가진 ê²ƒì„ ì¶•í•˜ë“œë¦½ë‹ˆë‹¤. 잘 해냈군요. ê³„ì† ë¶„ë°œí•´ 주세요.", }, }, consistant_rep = { trophies = { [1] = "ê¸ˆë…„ì— ê°€ìž¥ ëª¨ë²”ì´ ë˜ë©° 가장 ë†’ì€ í‰íŒì„ 유지한 ê²ƒì— ì˜ê±°, ë‹¹ì‹ ì€ 'ë‚´ê° ìž¥ê´€ ìƒ (Cabinet Minister's Award)'ì„ ìˆ˜ìƒí–ˆìŠµë‹ˆë‹¤. 훌륭합니다.", [2] = "작년 한해 ë™ì•ˆ 가장 ë†’ì€ í‰ê°€ë¥¼ ë°›ì€ ë³‘ì›ì—게 주어지는 '완전무결 트로피 (SqueakiKlean Trophy)'를 수ìƒí•˜ê²Œ ëœ ê²ƒì„ ì¶•í•˜í•©ë‹ˆë‹¤. ë‹¹ì‹ ì€ ì¶©ë¶„ížˆ ë°›ì„ ìžê²©ì´ 있습니다.", }, }, cleanliness = { regional_good = { [1] = "ë‹¹ì‹ ì˜ ë³‘ì›ì€ 지역 ë‚´ì—서 가장 깨ë—하지 못한 ë³‘ì› ì¤‘ 하나로 꼽혔습니다. 지저분한 병ì›ì€ 냄새나고 위험합니다. ë‹¹ì‹ ì€ ì´ ì–´ì§€ëŸ¬ìš´ ê²ƒë“¤ì— ì‹ ê²½ì„ ë” ì¨ì•¼ 합니다.", }, award = { [1] = "ê²€ì‚¬ê´€ë“¤ì€ ë‹¹ì‹ ì˜ ë³‘ì›ì´ 매우 청결하다고 í‰ê°€í–ˆìŠµë‹ˆë‹¤. 청결한 병ì›ì€ 안전한 병ì›ìž…니다. ê³„ì† íž˜ì¨ì£¼ì„¸ìš”.", }, regional_bad = { [1] = "ë‹¹ì‹ ì˜ ë³‘ì›ì€ 지역 ë‚´ì—서 가장 지저분한 병ì›ìž…니다. 다른 모든 ë³‘ì› ì±…ìž„ìžë“¤ì€ ê·¸ë“¤ì˜ ë³µë„를 ë” ê¹¨ë—하게 유지해 냈습니다. ë‹¹ì‹ ì€ ì˜ë£Œê³„ì˜ ìˆ˜ì¹˜ìž…ë‹ˆë‹¤.", }, }, curesvdeaths = { awards = { [1] = "작년 ë‹¹ì‹ ì˜ ë³‘ì›ì´ ì¸ìƒì ì¸ 치료대 ì‚¬ë§ ë¹„ìœ¨ì„ ë‹¬ì„±í•œ ê²ƒì— ì§„ì‹¬ì–´ë¦° 축하를 드립니다.", }, penalty = { [1] = "ë‹¹ì‹ ì˜ ì¹˜ë£Œìˆ˜ 대 ì‚¬ë§ ìˆ˜ëŠ” ê·¹ë„로 나ì©ë‹ˆë‹¤. 죽는 환ìžì˜ 수 보다 치료하는 환ìžì˜ 수가 훨씬 ë§Žì•„ì§€ë„ë¡ ìœ ì§€í•´ì•¼ 합니다. 우리를 실ë§ì‹œí‚¤ì§€ 마세요.", }, }, emergencies = { regional_good = { [1] = "보건부는 작년 한해 ë™ì•ˆ ë‹¹ì‹ ì´ ë‹¤ë¥¸ ì–´ë–¤ 병ì›ë³´ë‹¤ ì‘급ìƒí™©ì„ 잘 처리한 ê²ƒì„ ê°ì‚¬í•˜ë©° ì´ ìƒì„ 수여합니다.", }, penalty = { [1] = "ë‹¹ì‹ ì€ ì‘급ìƒí™©ì„ 제대로 처리하지 못했습니다. ì‘급 환ìžë“¤ì—게 필요한 ì‹ ì†í•˜ê³  정확한 처치를 하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.", }, regional_bad = { [1] = "ë‹¹ì‹ ì˜ ë³‘ì›ì€ 지역 ë‚´ì—서 ì‘급ìƒí™©ì„ ì²˜ë¦¬í•˜ëŠ”ë° ìµœì•…ì´ì—ˆìŠµë‹ˆë‹¤. 지역내 ì‘급 처치 순위권ì—서 최하위로 머물게 ëœ ê²ƒì€ ëª¨ë‘ ë‹¹ì‹  책임입니다.", }, award = { [1] = "축하합니다: ë‹¹ì‹ ì˜ ì‹ ì†í•˜ê³  효과ì ì¸ ì‘급 처치가 ì´ íŠ¹ë³„ ìƒì„ 수ìƒí•˜ê²Œ 했습니다. 잘 했습니다.", [2] = "ë‹¹ì‹ ì˜ ì‘급 처리는 특별합니다. ì´ ìƒì€ ëŒ€ê·œëª¨ì˜ í™˜ìžë“¤ì„ 치료하는 ë° ì ˆëŒ€ì ìœ¼ë¡œ ìµœê³ ìž„ì„ ì¦ëª…한 당신ì—게 수여합니다.", }, }, gen_repairs = { awards = { [1] = "ë‹¹ì‹ ì˜ ìž¡ì—­ë¶€ë“¤ì´ ë¹ˆí‹ˆì—†ì´ ë³‘ì›ì˜ 기계 ìž¥ì¹˜ë“¤ì„ ì •ë¹„í•œ ê²ƒì— ëŒ€í•œ 특별 ìƒì„ 수여합니다. 잘 했습니다. 휴가ë¼ë„ 다녀오세요.", [2] = "ë‹¹ì‹ ì˜ ìž¡ì—­ë¶€ë“¤ì€ ë‹¤ë¥¸ ì–´ë–¤ 병ì›ì˜ 잡역부들 보다 잘 ì¼í•´ì£¼ì—ˆìŠµë‹ˆë‹¤. ì´ê²ƒì€ ì¶•í•˜ë°›ì„ ë§Œí•œ 주요 성과입니다.", [3] = "ë‹¹ì‹ ì˜ ê¸°ê³„ë“¤ì€ ìµœìƒì˜ ìƒíƒœë¡œ 정비ë˜ì—ˆìŠµë‹ˆë‹¤. ìž¡ì—­ë¶€ë“¤ì˜ í—Œì‹ ì ì¸ ë…¸ë ¥ì€ ë†€ëž„ 만한 ì¼ìž…니다. ë‹¹ì‹ ì€ ì´ ê¶Œìœ„ìžˆëŠ” ìƒì„ ë°›ì„ ìžê²©ì´ 있습니다. 훌륭합니다.", }, penalty = { [1] = "ë‹¹ì‹ ì˜ ìž¡ì—­ë¶€ë“¤ì€ ê¸°ê³„ë“¤ì„ ì œëŒ€ë¡œ 정비하지 못했습니다. ê·¸ë“¤ì„ ë” ìž˜ 관리하거나 좀 ë” ê³ ìš©í•´ì„œ ì¼ì„ 분담시킬 필요가 ìžˆì„ ê²ƒ 같군요.", [2] = "ê¸°ê³„ë“¤ì„ ì •ë¹„í•˜ëŠ” ë° ì•„ì£¼ ì—‰ë§ìž…니다. ì§ì›ë“¤ì´ ì„¤ë¹„ë“¤ì„ ì‹ ì†í•˜ê³  세심하게 정비하ë„ë¡ í•´ì•¼ 합니다.", }, }, happy_patients = { awards = { [1] = "작년 한해 ë™ì•ˆ ê·€í•˜ì˜ ë³‘ì›ë‚´ì˜ ì‚¬ëžŒë“¤ì´ ë§¤ìš° 만족했다는 ê²ƒì€ ìžëž‘í• ë§Œ 한 ì¼ìž…니다.", [2] = "ë‹¹ì‹ ì˜ ë³‘ì›ì„ 방문하는 ì‚¬ëžŒë“¤ì€ ê²Œìž„ ë‚´ì˜ ë‹¤ë¥¸ 병ì›ì— 방문한 사람들보다 í‰ê· ì ìœ¼ë¡œ ì¹˜ë£Œì— ë” ë§Œì¡±í–ˆìŠµë‹ˆë‹¤.", }, penalty = { [1] = "ë‹¹ì‹ ì˜ ë³‘ì›ì— 방문하는 ì‚¬ëžŒë“¤ì€ ì•„ì£¼ 형편없는 ì·¨ê¸‰ì„ ë°›ê³  있습니다. 보건부로부터 ì¸ì •ì„ ë°›ê³  싶다면 ë” ìž˜í•´ì•¼ í•  ê²ë‹ˆë‹¤.", [2] = "ë‹¹ì‹ ì˜ ë³‘ì›ì—서 치료받는 ì‚¬ëžŒë“¤ì€ ì´ ê³³ì˜ ìƒíƒœì— 대해 굉장히 불만족스러워 합니다. 환ìžë“¤ì˜ 복지를 좀 ë” ì„¸ì‹¬í•˜ê²Œ ì‹ ê²½ì¨ì•¼ 합니다.", }, }, happy_staff = { trophies = { [1] = "열심히 ì¼í•˜ëŠ” ë‹¹ì‹ ì˜ ì§ì›ë“¤ì„ ê³„ì† í–‰ë³µí•˜ê²Œ 유지한 공로로 '미소 트로피 (Smiley Trophy)'를 수여합니다.", [2] = "'아다미 행복 연구소'는 작년 한해 ë™ì•ˆ 불행한 ì§ì›ì´ í•˜ë‚˜ë„ ì—†ë„ë¡ ê´€ë¦¬í•œ ê²ƒì— ëŒ€í•œ ë³´ìƒìœ¼ë¡œ ì´ íŠ¸ë¡œí”¼ë¥¼ 수여합니다.", [3] = "ì´ íŠ¸ë¡œí”¼, 'ë”ìš± 환한 미소 컵 (Beam-more Cup)'ì€ ìž‘ë…„ 한해간 ì¼ë°˜ì ì¸ 기대를 훨씬 ë›°ì–´ 넘ë„ë¡ ê·€í•˜ì˜ ì§ì›ë“¤ì„ 행복하게 해준 당신ì—게 수여합니다. 모ë‘ì—게 미소를!", }, awards = { [1] = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì´ ì´ ìƒì„ ì¤ë‹ˆë‹¤. ì§ì›ë“¤ì˜ ë§ì— 따르면, ì•½ê°„ì˜ ê°œì„ ì˜ ì—¬ì§€ëŠ” 있지만 ë‹¹ì‹ ì˜ ì²˜ìš°ëŠ” ì „ì²´ì ìœ¼ë¡œ 좋았다는군요.", [2] = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì€ 당신 ë°‘ì—서 ì¼í•˜ëŠ” ê²ƒì´ ë„ˆë¬´ ì¦ê±°ì›Œì„œ 웃ìŒì´ 떠나지 않는다고 합니다. ë‹¹ì‹ ì€ í›Œë¥­í•œ 매니저 입니다.", }, penalty = { [1] = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì€ ì§€ê¸ˆì˜ ì²˜ìš°ì— ëŒ€í•´ 굉장히 불만스럽다는 ê²ƒì„ ì•Œë¦¬ê³  ì‹¶ì–´ 합니다. ì¢‹ì€ ì§ì›ë“¤ì€ 재산입니다. ê·¸ë“¤ì„ í–‰ë³µí•˜ê²Œ 해주지 못한다면 ë‹¹ì‹ ì„ ë– ë‚˜ë²„ë¦¬ê³  ë§ ê²ë‹ˆë‹¤.", }, regional_good = { [1] = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì€ 다른 모든 병ì›ë“¤ì— 비해 만족ë„ê°€ 높았습니다. 행복한 ì§ì›ì€ ê³§ ë†’ì€ ì´ìœ¤ê³¼ ì ì€ 사ë§ìœ¼ë¡œ ì´ì–´ì§‘니다. 보건부는 ì´ ì†Œì‹ì— 기ì¨ì„ 표합니다.", }, regional_bad = { [1] = "ë‹¹ì‹ ì˜ ì§ì›ë“¤ì€ 작년 ë‚´ë‚´ 아주 ìµœì•…ì˜ ëŒ€ìš°ë¥¼ 받았습니다. ë‹¹ì‹ ë„ ëˆˆì¹˜ë¥¼ 좀 챘어야 합니다. 지금 ìƒíƒœë¡œëŠ” 다른 모든 병ì›ë“¤ì´ 당신보다 ë” í–‰ë³µí•œ ì§ì›ë“¤ì„ ë°ë¦¬ê³  있는 셈입니다.", }, }, happy_vips = { trophies = { [1] = "귀하는 '노벨 VIP ê°ëª… ìƒ (Nobel Prize for Impressing VIPs)'ì„ ìˆ˜ìƒí–ˆìŠµë‹ˆë‹¤. ìž‘ë…„ì— ë‹¹ì‹ ì˜ ë³‘ì›ì„ 방문한 VIP 들 모ë‘ê°€ ìž…ì´ ë§ˆë¥´ë„ë¡ ì¹­ì°¬ì„ í•˜ê³  있습니다.", [2] = "'유명ì¸ì‚¬êµ­'ì€ ê·€í•˜ì—게 ë‹¹ì‹ ì˜ ê¸°ê´€ì„ ë°©ë¬¸í•œ 모든 VIP 를 만족시킨 공로로 'ìœ ëª…ì¸ íŠ¸ë¡œí”¼ (Celebrity Trophy)'를 ìˆ˜ì—¬í•˜ê³ ìž í•©ë‹ˆë‹¤.", [3] = "'VIP ì—¬í–‰ìƒ (VIP TRIP award)'ì„ ìˆ˜ìƒí•˜ê²Œëœ ê²ƒì„ ì¶•í•˜í•©ë‹ˆë‹¤. ì´ ìƒì€ ê³µê³µì˜ ëˆˆ 아래ì—서 열심히 ì¼í•˜ëŠ” 유명 ì¸ì‚¬ë“¤ì„ 만족시킨 공로를 기리기 위함입니다. 훌륭합니다.", }, }, healthy_plants = { awards = { [1] = "작년 ë‚´ë‚´ í™”ì´ˆë“¤ì„ ë§¤ìš° ìƒìƒí•˜ê²Œ 관리한 공로로 '무럭무럭 비료 ìƒ (Gro-More Fertiliser award)'ì„ ìˆ˜ìƒí•˜ê²Œ ëœ ê²ƒì„ ì¶•í•˜í•©ë‹ˆë‹¤.", }, trophies = { [1] = "화분 ì‹ë¬¼ ì—°í•© ì¼ë™ì€ 'ê±´ê°•ì˜ ë…¹ìƒ‰ 트로피 (Green Trophy of Health)'로 ë‹¹ì‹ ì´ ì§€ë‚œ 12개월간 í™”ì´ˆë“¤ì„ ê±´ê°•í•˜ê²Œ 관리해준 ê²ƒì„ ê¸°ë¦¬ê³ ìž í•©ë‹ˆë‹¤.", [2] = "트리피드 ì—°í•©ì€ ë‹¹ì‹ ì˜ ë³‘ì› í™”ì´ˆë“¤ì„ ìž‘ë…„ 한해 ë™ì•ˆ ìµœê³ ì˜ ìƒíƒœë¡œ 유지한 ê²ƒì— ëŒ€í•´ '녹색ì†ê°€ë½ 트로피 (Greenfinger Trophy)'를 수여합니다.", }, }, high_rep = { penalty = { [1] = "ë‹¹ì‹ ì€ ìž‘ë…„ 한해간 í‰íŒì´ í˜•íŽ¸ì—†ì—ˆë˜ ê²ƒì— ëŒ€í•´ 징계를 받게 ë ê²ë‹ˆë‹¤. 추후ì—는 ê°œì„ ë  ìˆ˜ 있ë„ë¡ í•´ì£¼ì„¸ìš”.", [2] = "당신 병ì›ì˜ í‰íŒì€ 지역 ë‚´ì—서 가장 나ì©ë‹ˆë‹¤. 아주 불명예스럽군요. 앞으로 ë” ìž˜ 하거나 다른 ì§ì—…ì„ ì°¾ì•„ë³´ì‹œì£ .", }, awards = { [1] = "잘 하셨습니다. ìž‘ë…„ì— ê½¤ ì¸ìƒì ì¸ ì¢‹ì€ í‰íŒì„ ë‚¨ê²¼ë˜ ê³µë¡œë¡œ ì†Œì •ì˜ ìƒì„ 수여합니다.", [2] = "훌륭합니다! ê·€í•˜ì˜ ë³‘ì›ì— 작년 한해ë™ì•ˆ 가장 ë†’ì€ ëª…ì„±ì„ ìŒ“ì€ ê²ƒìœ¼ë¡œ ì´ ìƒì„ 수여합니다.", }, regional = { [1] = "작년 한해간 모든 병ì›ì¤‘ì— ê°€ìž¥ ë†’ì€ í‰íŒì„ ìŒ“ì€ ë³‘ì›ì—게 주어지는 '불프로그 ìƒ (Bullfrog Award)'ì„ ë°›ì•„ì£¼ì„¸ìš”. ì¦ê¸°ì„¸ìš” - ë‹¹ì‹ ì€ ë°›ì„ ë§Œí•œ ìžê²©ì´ 있습니다.", [2] = "ì´ë²ˆ í•´ì— ë‹¹ì‹  병ì›ì˜ í‰íŒì€, 다른 모든 병ì›ì˜ í‰íŒì„ 합친 ê²ƒì„ ìƒíšŒí–ˆìŠµë‹ˆë‹¤. ë‘드러진 성과입니다.", }, }, hosp_value = { penalty = { [1] = "당신 병ì›ì˜ 가치를 ì¼ì • 수준 ì´ìƒìœ¼ë¡œ ìœ ì§€í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. ëˆê³¼ ê´€ë ¨ëœ ìž˜ëª»ëœ ê²°ì •ì„ ë§Žì´ ë‚´ë ¸êµ°ìš”. 기억하세요, ì¢‹ì€ ë³‘ì›ì€ ë˜í•œ 값비싼 병ì›ì´ê¸°ë„ 합니다.", }, awards = { [1] = "보건부는 ì´ ìžë¦¬ë¥¼ 빌어 ì „ì²´ì ìœ¼ë¡œ 매우 ë†’ì€ ê·€í•˜ì˜ ë³‘ì› ê°€ì¹˜ë¥¼ ì¶•í•˜í•˜ê³ ìž í•©ë‹ˆë‹¤.", }, regional = { [1] = "ë‹¹ì‹ ì€ ìž¬ì •ë¶„ì•¼ì˜ ê·€ìž¬ë¡œêµ°ìš”. ë‹¹ì‹ ì˜ ë³‘ì›ì€ 지역 ë‚´ì˜ ë‹¤ë¥¸ 병ì›ë“¤ì„ ëª¨ë‘ í•©ì¹œ 것보다 가치가 높습니다.", }, }, many_cured = { trophies = { [1] = "작년 한해 ë™ì•ˆ ê±°ì˜ ëª¨ë“  환ìžë“¤ì„ 성공ì ìœ¼ë¡œ 치료한 것으로 '마리 퀴리 ìƒ (Marie Curie Award)'ì„ ìˆ˜ìƒí•˜ê²Œ ëœ ê²ƒì„ ì¶•í•˜í•©ë‹ˆë‹¤.", [2] = "êµ­ì œ 치료 ìž¬ë‹¨ì€ ë‹¹ì‹ ì´ ìž‘ë…„ 한해 ë™ì•ˆ 대단히 ë§Žì€ ì‚¬ëžŒì„ ì¹˜ë£Œí–ˆë‹¤ëŠ” 사실ì„, 'ë§Žì´ì¹˜ë£Œ 트로피 (Cure-A-Lot Trophy)'를 수여하는 것으로 ê¸°ë¦¬ê³ ìž í•©ë‹ˆë‹¤.", [3] = "ë‹¹ì‹ ì€ ìž‘ë…„ì— ë°©ë¬¸í•œ 환ìžë“¤ì˜ 대다수를 치료한 공로로 '무병 가글러 트로피 (No-ill Gargler Trophy)'를 수ìƒí–ˆìŠµë‹ˆë‹¤.", }, penalty = { [1] = "ë‹¹ì‹ ì˜ ë³‘ì›ì€ 환ìžë“¤ì—게 필요한 ì ì ˆí•œ 치료를 제공해주지 못하고 있습니다. ì¹˜ë£Œë²•ë“¤ì´ ë” ìž˜ ë“£ë„ë¡ ê°œì„ í•˜ëŠ” ë° ì§‘ì¤‘í•˜ì„¸ìš”.", [2] = "ë‹¹ì‹ ì˜ ë³‘ì›ì€ 다른 모든 병ì›ë“¤ì— 비해 환ìžë¥¼ ì¹˜ë£Œí•˜ëŠ”ë° ëœ ëŠ¥ìˆ™í•©ë‹ˆë‹¤. 당신 ìžì‹  ë¿ë§Œ ì•„ë‹ˆë¼ ë³´ê±´ë¶€ì˜ ì–¼êµ´ì— ë¨¹ì¹ ì„ í•˜ê³  있군요. ë” ê¸´ ë§ í•˜ì§€ 않겠습니다.", }, awards = { [1] = "작년ë™ì•ˆ ëŒ€ëŸ‰ì˜ í™˜ìžë“¤ì„ 치료한 ê²ƒì„ ì¶•í•˜ë“œë¦½ë‹ˆë‹¤. ë§Žì€ ì‚¬ëžŒë“¤ì´ ë‹¹ì‹  ë•ë¶„ì— ëª¸ì´ í•œê²° 좋아졌습니다.", [2] = "다른 모든 병ì›ë³´ë‹¤ ë” ë§Žì€ í™˜ìžë“¤ì„ 치료한 ê²ƒì— ëŒ€í•œ ì´ ìƒì„ 받아주세요. 아주 확실한 성과입니다.", }, regional = { [1] = "ë‹¹ì‹ ì€ ë‹¤ë¥¸ 모든 병ì›ì˜ 치료 í™˜ìž ìˆ˜ë¥¼ 합친 ê²ƒë³´ë‹¤ë„ ë” ë§Žì€ í™˜ìžë¥¼ 치료한 공로로 ê¶ê·¹ì˜ 치료 ìƒì„ 수ìƒí–ˆìŠµë‹ˆë‹¤.", }, }, no_deaths = { trophies = { [1] = "ë‹¹ì‹ ì€ ìž‘ë…„ë™ì•ˆ 100%ì˜ í™˜ìžë¥¼ 살린 공로로 '해치지 않아요 ìƒ (No-Croak Award)'ì„ ìˆ˜ìƒí–ˆìŠµë‹ˆë‹¤.", [2] = "'사단 ë²•ì¸ ì§€ì†ë˜ëŠ” ì¸ìƒ'ì€ ìž‘ë…„ë™ì•ˆ ì•„ë¬´ë„ ì£½ê²Œ 하지 ì•Šì€ ê²ƒì— ëŒ€í•´ ì´ íŠ¸ë¡œí”¼ë¥¼ 수여합니다.", [3] = "ë‹¹ì‹ ì€ ì˜¬í•´ì— ì–´ë– í•œ 사ë§ìžë„ 나오지 않ë„ë¡ í•˜ëŠ” ë° ì„±ê³µí•œ 공로로 'ìƒì¡´ 트로피 (Staying Alive Trophy)'를 수ìƒí–ˆìŠµë‹ˆë‹¤. 훌륭합니다.", }, penalty = { [1] = "ìž‘ë…„ë„ ë‹¹ì‹ ì˜ ë³‘ì› ë‚´ 사ë§ìž 수는 너무 많았습니다. ë” ì‹ ê²½ì„ ì¨ ì£¼ì„¸ìš”. 추후ì—는 반드시 ë” ë§Žì€ ì‚¬ëžŒì´ ì‚´ì•„ë‚¨ë„ë¡ í•˜ì„¸ìš”.", [2] = "ë‹¹ì‹ ì˜ ë³‘ì›ì€ 환ìžë“¤ì˜ ê±´ê°•ì— ìžˆì–´ 위험요소 입니다. ë‹¹ì‹ ì˜ ì¼ì€ ë§Žì€ ì‚¬ëžŒë“¤ì„ ì¹˜ë£Œí•˜ëŠ” 것ì´ì§€, ê·¸ë“¤ì„ ì£½ê²Œ 놔ë‘는 ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤.", }, awards = { [1] = "올해 ê·€ 병ì›ì˜ ì ì€ 사ë§ìž 수를 기ë…하기 위해 ì´ ìƒì„ 수여합니다.", [2] = "ë‹¹ì‹ ì˜ ëŠ¥ë ¥ì´ ë³‘ì›ì˜ 사ë§ìž 수를 최소한으로 유지했습니다. 아주 기ë»í• ë§Œí•œ 성과입니다.", }, regional = { [1] = "작년 ê·€ 병ì›ì˜ ì¹˜ì‚¬ìœ¨ì€ ë‹¤ë¥¸ ì–´ë–¤ 병ì›ë³´ë‹¤ë„ 낮았습니다. ì´ ìƒì„ 받아주세요.", }, }, pop_percentage = { awards = { [1] = "작년 한해간 ê·€ 병ì›ì´ ë„시 ì¸êµ¬ì˜ ë†’ì€ ì ìœ ìœ¨ì„ 기ë¡í–ˆìŒì„ 주목하세요. 잘 하셨습니다.", [2] = "축하합니다. 다른 기관들보다 ë‹¹ì‹ ì˜ ë³‘ì›ì— ë” ë§Žì€ ì§€ì—­ ì£¼ë¯¼ë“¤ì´ ë°©ë¬¸í•˜ì˜€ìŠµë‹ˆë‹¤.", [3] = "멋지군요. ë‹¹ì‹ ì˜ ë³‘ì›ì€ 다른 병ì›ë“¤ì˜ í™˜ìž ìˆ˜ë¥¼ 합친 것보다 ë” ë§Žì€ í™˜ìžë“¤ì„ ëŒì–´ë“¤ì˜€ìŠµë‹ˆë‹¤.", }, penalty = { [1] = "올해 ë‹¹ì‹ ì˜ ë³‘ì›ì—는 ì‚¬ëžŒë“¤ì´ ê±°ì˜ ì˜¤ì§€ 않았습니다. ëˆì„ 벌기 위해서는 ëˆì„ ë‚´ 줄 환ìžë“¤ì´ 필요하겠죠.", [2] = "지역 ë‚´ì˜ ë‹¤ë¥¸ 모든 병ì›ì€ ë‹¹ì‹ ì˜ ë³‘ì›ë³´ë‹¤ ë§Žì€ ë¹„ìœ¨ì˜ í™˜ìžë“¤ì„ ë°ë ¤ì˜¤ëŠ” ë° ì„±ê³µí–ˆìŠµë‹ˆë‹¤. ë¶€ë„러운줄 아세요.", }, }, rats_accuracy = { trophies = { [1] = "ë‹¹ì‹ ì€ ì¥ë“¤ì„ 저격하는 ë° %d%% ì˜ ì •í™•ë„를 가진 ê²ƒì„ ê¸°ë…하여 '신디케ì´íЏ 워즈 저격 트로피 (Syndicate Wars Accurate Shooting Trophy)'를 수ìƒí•˜ì˜€ìŠµë‹ˆë‹¤.", [2] = "ì´ íŠ¸ë¡œí”¼ëŠ” 작년ë™ì•ˆ ì¥ë¥¼ %d%% ì˜ í™•ë¥ ë¡œ 사살한 ë‹¹ì‹ ì˜ ë†€ë¼ìš´ 정확ë„를 기ë…하기 위함입니다.", [3] = "ë‹¹ì‹ ì˜ ë³‘ì›ì— 나타는 ì¥ë“¤ì„ %d%% 박멸한 ê²ƒì„ ê¸°ë…하기 위해 'ë˜ì „ í‚¤í¼ í•´ìˆ˜ì œë¡œ 트로피 (Dungeon Keeper Vermin-Free Trophy)'를 수여합니다. 축하합니다!", }, }, rats_killed = { trophies = { [1] = "ë‹¹ì‹ ì€ ìž‘ë…„ì— ë³‘ì› ë‚´ì—서 %d ë§ˆë¦¬ì˜ ì¥ë¥¼ 저격한 공로로 'ë°˜-해수 트로피 (Anti-Vermin Trophy)'를 수ìƒí•˜ì˜€ìŠµë‹ˆë‹¤.", [2] = "ë‹¹ì‹ ì€ ë†€ë¼ìš´ ì¥ ì €ê²© ëŠ¥ë ¥ì„ %d ë§ˆë¦¬ì˜ ì¥ë¥¼ 퇴치하여 'ì¥ í‡´ì¹˜ ì—°ë§¹' 으로부터 ì´ íŠ¸ë¡œí”¼ë¥¼ ë°›ì„ ìžê²©ì„ 갖추었습니다.", [3] = "귀하는 ìž‘ë…„ì— ë³‘ì›ë‚´ì˜ %d ë§ˆë¦¬ì˜ ì¥ë¥¼ í•´ì¹˜ì›€ìœ¼ë¡œì¨ 'ë‚ ë ¤ë²„ë¦¬ì¥ íŠ¸ë¡œí”¼ (Ratblast Trophy)'를 수ìƒí•  ìžê²©ì„ 얻었습니다.", }, }, research = { regional_good = { [1] = "ê·€í•˜ì˜ ì—°êµ¬ ìˆ˜ì¤€ì€ ìµœì‹  기술들과 어깨를 나란히 했습니다. ê·€í•˜ì˜ ì—°êµ¬ì§„ì€ ì´ ìƒì„ ë°›ì„ ìžê²©ì´ 있습니다. 잘 하셨습니다.", }, penalty = { [1] = "ë‹¹ì‹ ì€ ìƒˆë¡œìš´ 치료법, 기계, 약물 ë“±ì„ ê°œë°œí•˜ëŠ” ë° ë§¤ìš° 부진했습니다. 기술ì ì¸ ì§„ë³´ê°€ 필수ë¼ëŠ” ê²ƒì„ ê°ì•ˆí•  때, ì´ê²ƒì€ 매우 ë‚˜ìœ ì§•ì¡°ìž…ë‹ˆë‹¤.", }, regional_bad = { [1] = "지역 ë‚´ì˜ ë‹¤ë¥¸ 모든 병ì›ë“¤ì€ ë‹¹ì‹ ì˜ ë³‘ì›ë³´ë‹¤ 연구 ìˆ˜ì¤€ì´ ë†’ìŠµë‹ˆë‹¤. 연구가 병ì›ì— ë¼ì¹˜ëŠ” 중요한 ì—­í• ì— ê¸°ì¸í•˜ì—¬ 보건부는 ê·€ 병ì›ì— 분노하고 있습니다.", }, awards = { [1] = "ê·€í•˜ì˜ ì—°êµ¬ ìˆ˜ì¤€ì€ ìµœì‹  기술들과 어깨를 나란히 했습니다. ê·€í•˜ì˜ ì—°êµ¬ì§„ì€ ì´ ìƒì„ ë°›ì„ ìžê²©ì´ 있습니다. 잘 하셨습니다.", [2] = "작년 한해 ë™ì•ˆ 귀하는 ì‚¬ëžŒë“¤ì˜ ê¸°ëŒ€ ì´ìƒìœ¼ë¡œ ë§Žì€ ì‹ ì•½ê³¼ ì¹˜ë£Œìž¥ë¹„ë“¤ì„ ì—°êµ¬í•´ëƒˆìŠµë‹ˆë‹¤. ë³´ê±´ë¶€ì˜ ëª¨ë‘ê°€ 드리는 ì´ ìƒì„ 받아주세요.", }, }, sold_drinks = { trophies = { [1] = "'세계 치과 ì˜ì‚¬ ì—°ë§¹'ì€ ë‹¹ì‹ ì˜ ë³‘ì›ì—서 ëŒ€ëŸ‰ì˜ ìº”ìŒë£Œë¥¼ íŒë§¤í•œ ê²ƒì— ëŒ€í•´ ì´ íŠ¸ë¡œí”¼ì™€ ìƒìž¥ì„ 수여합니다.", [2] = "ë‹¹ì‹ ì˜ ë³‘ì›ì€ ìž‘ë…„ì— ë³‘ì›ì—서 팔린 막대한 ì–‘ì˜ íƒ„ì‚° ìŒë£Œë¥¼ 기ë…하여 ì´ '탄산 트로피 (Fizzy-Bizz Trophy)'를 수ìƒí–ˆìŠµë‹ˆë‹¤.", [3] = "주ì‹íšŒì‚¬ 'DK Fillings'를 대표하여, ì´ ì´ˆì½œë¦¿ ë®ì¸ 트로피로 올해 ë‹¹ì‹ ì˜ ë³‘ì›ì´ 탄산 ìŒë£Œë¥¼ 특출나게 ë§Žì´ íŒë§¤í•œ ê²ƒì„ ê¸°ë…í•˜ê³ ìž í•©ë‹ˆë‹¤.", }, }, wait_times = { award = { [1] = "축하합니다. ë‹¹ì‹ ì˜ ë³‘ì›ì€ 꾸준하게 ì§§ì€ ëŒ€ê¸°ì‹œê°„ì„ ìœ ì§€í•´ì™”ìŠµë‹ˆë‹¤. ì´ê²ƒì€ 아주 중요한 ìƒìž…니다.", }, penalty = { [1] = "당신 병ì›ì˜ 환ìžë“¤ì€ 너무 오랫ë™ì•ˆ 기다려야 합니다. 어디를 가든 ë‚©ë“ì´ ì•ˆë˜ëŠ” 긴 ì¤„ì´ ìžˆìŠµë‹ˆë‹¤. í•  마ìŒë§Œ 있다면 환ìžë“¤ì„ 좀 ë” íš¨ìœ¨ì ìœ¼ë¡œ 관리할 수 ìžˆì„ ê²ë‹ˆë‹¤.", }, }, reputation = "í‰íŒ", cash = "소지금", } buy_objects_window = { price = "가격: ", choose_items = "기물 ì„ íƒ", total = "합계: ", } menu_list_window = { save_date = "수정ë¨", name = "ì´ë¦„", back = "뒤로", } menu_options_volume = { [50] = " 50% ", [100] = " 100% ", [30] = " 30% ", [60] = " 60% ", [90] = " 90% ", [10] = " 10% ", [20] = " 20% ", [40] = " 40% ", [80] = " 80% ", [70] = " 70% ", } menu_file_load = { [1] = " 게임 1 ", [2] = " 게임 2 ", [3] = " 게임 3 ", [4] = " 게임 4 ", [5] = " 게임 5 ", [6] = " 게임 6 ", [7] = " 게임 7 ", [8] = " 게임 8 ", } menu_file = { quit = " (SHIFT+Q) 종료 ", save = " (SHIFT+S) 저장 ", load = " (SHIFT+L) 불러오기 ", restart = " (SHIFT+R) 재시작", } menu_options_wage_increase = { deny = " ê±°ì ˆ ", grant = " ìŠ¹ì¸ ", } save_game_window = { caption = "저장 게임 (%1%)", new_save_game = "새로운 저장 게임", } rooms_long = { ultrascan = "울트ë¼ìŠ¤ìº”ì‹¤", research_room = "연구 부서", general = "ì¼ë°˜", gps_office = "진료실", inflation = "팽창실", staffroom = "ì§ì› 휴게실", jelly_vat = "젤리 통", scanner = "스ìºë„ˆì‹¤", emergency = "ì‘급실", decontamination = "오염 제거실", corridors = "ë³µë„", cardiogram = "심전ë„실", ward = "병ë™", training_room = "êµìœ¡ì‹¤", psychiatric = "정신과실", operating_theatre = "수술실", dna_fixer = "DNA 정정기", tongue_clinic = "늘어진 혀 í´ë¦¬ë‹‰", hair_restoration = "모발 ìž¬ìƒ í´ë¦¬ë‹‰", general_diag = "ì¼ë°˜ 진단실", pharmacy = "약국", fracture_clinic = "골절 í´ë¦¬ë‹‰", toilets = "화장실", electrolysis = "전기분해 í´ë¦¬ë‹‰", x_ray = "X-ë ˆì´ì‹¤", blood_machine = "혈액 ë¶„ì„실", } fax = { epidemic_result = { fine_amount = "정부는 êµ­ê°€ì  ë¹„ìƒì‚¬íƒœë¥¼ 선언했으며 당신ì—게 %d ì˜ ë²Œê¸ˆì„ ì²­êµ¬í•©ë‹ˆë‹¤.", close_text = "만세!", hospital_evacuated = "ë³´ê±´ 위ì›íšŒëŠ” ë‹¹ì‹ ì˜ ë³‘ì›ì„ 비우는 수 ë°–ì— ì—†ì—ˆìŠµë‹ˆë‹¤.", succeeded = { part_1_name = "ê±´ê°• ê²€ì‚¬ê´€ì€ ë‹¹ì‹ ì˜ ê¸°ê´€ì´ ì•…ì„±ì˜ %s ì„(를) 겪고 있다는 ì†Œë¬¸ì„ ë“¤ì—ˆìŠµë‹ˆë‹¤.", part_2 = "그러나 ì´ëŸ¬í•œ ì†Œë¬¸ì„ ë’·ë°›ì¹¨í•˜ëŠ” ì–´ë–¤ ê·¼ê±°ë„ ì°¾ì„ ìˆ˜ 없었습니다.", }, compensation_amount = "정부는 ì´ëŸ¬í•œ ê±°ì§“ë§ì´ ë‹¹ì‹ ì˜ ë³‘ì›ì˜ ëª…ì„±ì— ë¼ì¹œ ì•…ì˜í–¥ì— 대해 %d ë§Œí¼ì˜ ë³´ìƒì„ 지불하기로 결정했습니다.", failed = { part_1_name = "전염성 %s ì„(를) 겪고 있다는 ì‚¬ì‹¤ì„ ìˆ¨ê¸°ë ¤ 함으로ì¨", part_2 = "ë‹¹ì‹ ì˜ ë³‘ì› ì§ì›ë“¤ì€ ì§ˆë³‘ì´ ë³‘ì› ì£¼ë³€ì˜ ëŒ€ì¤‘ì—게 í¼ì ¸ë‚˜ê°€ë„ë¡ ë°©ì¹˜í–ˆìŠµë‹ˆë‹¤.", }, rep_loss_fine_amount = "ì–¸ë¡ ì‚¬ë“¤ì´ ì´ë¥¼ 집중 취재할 것ì´ë©°, ë‹¹ì‹ ì˜ í‰íŒì€ 심ê°í•˜ê²Œ 훼ì†ë  것입니다. ë˜í•œ, ë‹¹ì‹ ì€ %d ì˜ ë²Œê¸ˆì„ ë¬¼ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤.", }, vip_visit_query = { choices = { invite = "ê³µì‹ì ìœ¼ë¡œ V.I.P. 를 초대", refuse = "ì ë‹¹í•œ 핑계로 V.I.P. 를 회피", }, vip_name = "%s ì´(ê°€) ë‹¹ì‹ ì˜ ë³‘ì›ì„ 방문하고 싶어합니다", }, vip_visit_result = { telegram = "전문!", remarks = { good = { [1] = "괜찮게 ìš´ì˜ë˜ëŠ” 병ì›ì´êµ°ìš”. 초대해 주셔서 ê°ì‚¬í•©ë‹ˆë‹¤.", [2] = "í . 확실히 나ì˜ì§€ ì•Šì€ ì˜ë£Œ 시설ì´ë¡œêµ°ìš”.", [3] = "ì¢‹ì€ ë³‘ì›ì„ 방문하게 ë˜ì–´ ì¦ê±°ì› ìŠµë‹ˆë‹¤. ì´ì œ 저와 함께 ê´œì°®ì€ ì¹´ë ˆë¼ë„ 드실 ë¶„?", }, super = { [1] = "훌륭한 병ì›ì´êµ°ìš”. 제가 다ìŒì— ë§Žì´ ì•„í”„ê²Œ ë˜ë©´ 거기로 ë°ë ¤ë‹¤ 주세요.", [2] = "바로 ì´ëŸ°ê²Œ 병ì›ì´ë¼ 불릴 ë§Œ 하죠.", [3] = "굉장한 병ì›ì´ë„¤ìš”. 몇몇 다른 병ì›ë“¤ë„ 둘러보았으니 확실히 ë§í•  수 있어요.", }, bad = { [1] = "ë‚´ê°€ ë­í•˜ëŸ¬ 방문했나 몰ë¼ìš”? 네시간 짜리 오페ë¼ë¥¼ 보러가는 ê²ƒë³´ë‹¤ë„ ë‚˜ë¹´ì–´ìš”!", [2] = "거기서 본 것 ë•Œë¬¸ì— ë©”ìŠ¤ê»ë„¤ìš”. 그게 병ì›ì´ë¼ê³ ìš”? ë¼ì§€ìš°ë¦¬ì— ë” ê°€ê¹ì£ !", [3] = "ê³µì¸ìœ¼ë¡œì„œ ì´ëŸ° 냄새나는 ì†Œêµ´ì„ ë°©ë¬¸í•´ì•¼ 하는 ê²ƒë„ ì§ˆë ¸ì–´ìš”! ì´ì   그만ë‘ê² ì–´ìš”.", }, free_build = { [1] = "굉장히 ë©‹ì§„ 병ì›ì´ë„¤ìš”! 그치만 ëˆ ì œí•œ ì—†ì´ ì´ë ‡ê²Œ ìš´ì˜í•˜ëŠ”ê²Œ í¬ê²Œ 어려운ì¼ì€ 아니죠, 안그래요?", [2] = "ë‚´ê°€ 특별히 경제학ìžì´ê±°ë‚˜ 한 ê²ƒì€ ì•„ë‹ˆì§€ë§Œ, 나ë¼ë„ ì´ëŸ° 병ì›ì€ ìš´ì˜í•  수 있겠네요.. 무슨ë§ì¸ì§€ 알죠?", [3] = "훌륭하게 ìš´ì˜ë˜ëŠ” 병ì›ì´ë„¤ìš”. 그치만 불경기를 조심하세요! ì•„, 그러고보니... ë‹¹ì‹ ì€ ê·¸ëŸ° 걱정 í•  필요가 없군요.", }, mediocre = { [1] = "ë­, ë” ì‹¬í•œê³³ë„ ë´¤ëŠ”ê±¸ìš”. ê·¸ëž˜ë„ ë‹¹ì‹  병ì›ì€ 좀 개선할 필요가 있겠어요.", [2] = "오 ì´ëŸ°. 아플 때 갈만한 장소는 아니로군요.", [3] = "솔ì§ížˆ ë§í•´ì„œ 그냥 í‰ë²”한 병ì›ì´ë„¤ìš”. 사실 좀 ë” ë‚«ê¸¸ ë°”ëžì–´ìš”.", }, very_bad = { [1] = "ì´ëŸ° 지저분할 ë°ê°€. 어떻게든 ì´ ë³‘ì› ë¬¸ì„ ë‹«ê²Œë” í•´ì•¼ê² ì–´ìš”.", [2] = "ì´ëŸ° ë”ì°í•œ 병ì›ì€ 본 ì ì´ 없어요. ì´ëŸ° ë§ì‹ ì´ 있나요!", [3] = "충격ì ì´êµ°ìš”. ì´ëŸ°ê±´ 병ì›ì´ë¼ê³  í•  ìˆ˜ë„ ì—†ì–´ìš”! 가서 한잔 해야겠어요.", }, }, rep_boost = "ë‹¹ì‹ ì˜ í‰íŒì´ 올ëžìŠµë‹ˆë‹¤.", vip_remarked_name = "ë‹¹ì‹ ì˜ ë³‘ì›ì„ 방문한 ë’¤, %s ì´(ê°€) ë§í–ˆìŠµë‹ˆë‹¤:", cash_grant = "ë‹¹ì‹ ì€ í˜„ì°°ë¡œ %d ì˜ ì§€ì›ê¸ˆì„ 받았습니다.", rep_loss = "ì´ë¡œì¸í•´ ë‹¹ì‹ ì˜ í‰íŒì´ 떨어졌습니다.", close_text = "병ì›ì— 방문해 주셔서 ê°ì‚¬í•©ë‹ˆë‹¤.", }, disease_discovered_patient_choice = { need_to_build = "ì´ê²ƒì„ 해결하기 위해서 ë‹¹ì‹ ì€ %s ì„(를) 지어야 합니다.", need_to_employ = "ì´ ìƒí™©ì„ 해결하려면 %s ì„(를) 고용해야 합니다.", what_to_do_question = "ì´ í™˜ìžë¥¼ 어떻게 하시겠습니까?", guessed_percentage_name = "ë‹¹ì‹ ì˜ ì˜ë£Œì§„ì€ í™˜ìžì˜ ìƒíƒœì— 대해서 추측할 수 ë°–ì— ì—†ì—ˆìŠµë‹ˆë‹¤. ì´ í™˜ìžëŠ” %d ì˜ í™•ë¥ ë¡œ %s 입니다.", choices = { send_home = "환ìžë¥¼ 집으로 ëŒë ¤ë³´ëƒ„.", research = "환ìžë¥¼ 연구실로 보냄.", wait = "환ìžë¥¼ 얼마ë™ì•ˆ ë³‘ì› ì•ˆì—서 기다리ë„ë¡ í•¨.", }, disease_name = "ë‹¹ì‹ ì˜ ì˜ë£Œì§„ì€ ìƒˆë¡œìš´ ë³‘ì„ ë°œê²¬í–ˆìŠµë‹ˆë‹¤. %s 입니다.", need_to_build_and_employ = "ë‹¹ì‹ ì´ %s ì„(를) ì§“ê³  %s ì„(를) 고용하면 치료할 수 있습니다.", can_not_cure = "ë‹¹ì‹ ì€ ì´ ì§ˆë³‘ì„ ì¹˜ë£Œí•  수 없습니다.", }, emergency_result = { earned_money = "최대로 ë°›ì„ ìˆ˜ 있는 보너스 %d 중ì—서 ë‹¹ì‹ ì€ %d ë§Œí¼ ë²Œì—ˆìŠµë‹ˆë‹¤.", close_text = "나가려면 í´ë¦­.", saved_people = "ë‹¹ì‹ ì€ %d ëª…ì˜ í™˜ìžë¥¼ 구했습니다. (ì´ %d ëª…ì˜ ì‘ê¸‰í™˜ìž ì¤‘)", }, disease_discovered = { discovered_name = "ë‹¹ì‹ ì˜ ì˜ë£Œì§„ì€ ìƒˆë¡œìš´ ë³‘ì„ ë°œê²¬í–ˆìŠµë‹ˆë‹¤. %s 입니다.", need_to_employ = "ì´ ìƒí™©ì„ 해결하려면 %s ì„(를) 고용해야 합니다.", need_to_build_and_employ = "ë‹¹ì‹ ì´ %s ì„(를) ì§“ê³  %s ì„(를) 고용하면 치료할 수 있습니다.", need_to_build = "ì´ê²ƒì„ 해결하기 위해서 ë‹¹ì‹ ì€ %s ì„(를) 지어야 합니다.", close_text = "새로운 ì§ˆë³‘ì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤.", can_cure = "ë‹¹ì‹ ì€ ì´ ë³‘ì„ ì¹˜ë£Œí•  수 있습니다.", }, emergency = { num_disease = "%d ëª…ì˜ í™˜ìžë“¤ì´ %s ì„(를) ì•“ê³  있으며, 당장 치료해야만 합니다.", cure_possible_drug_name_efficiency = "ë‹¹ì‹ ì€ ì´ë¯¸ ì¹˜ë£Œì— í•„ìš”í•œ 장비와 ëŠ¥ë ¥ì„ ê°–ì¶”ê³  있습니다. ë‹¹ì‹ ì€ ê·¸ë“¤ì—게 필요한 ì•½ì„ ê°€ì§€ê³  있습니다. %s ë³‘ì— ëŒ€í•œ ë‹¹ì‹ ì˜ ì•½ì€ %d í¼ì„¼íŠ¸ì˜ íš¨ê³¼ê°€ 있습니다.", cure_not_possible_employ = "ë‹¹ì‹ ì€ %s ì„(를) 고용해야 합니다.", free_build = "ë‹¹ì‹ ì´ ì„±ê³µí•˜ë©´ í‰íŒì´ 오르겠지만, 실패할 경우 ë‹¹ì‹ ì˜ í‰íŒì€ 심ê°í•˜ê²Œ 훼ì†ë  것입니다.", cure_not_possible = "ì§€ê¸ˆì€ ì´ ì§ˆë³‘ì„ ì¹˜ë£Œí•  수 없습니다.", num_disease_singular = "한 ëª…ì˜ í™˜ìžê°€ %s ì„(를) ì•“ê³  있으며, 당장 치료해야만 합니다.", cure_possible = "ë‹¹ì‹ ì€ ì¹˜ë£Œì— í•„ìš”í•œ 장비와 ëŠ¥ë ¥ì„ ê°–ì¶”ê³  있으며, ì´ ì‘급ìƒí™©ì„ í•´ê²°í•  수 ìžˆì„ ê²ƒìž…ë‹ˆë‹¤.", choices = { accept = "예. ì´ ì‘급 환ìžë“¤ì„ 치료하겠습니다.", refuse = "아니오. ì´ ì‘급 ìƒí™©ì„ 해결하는 ê²ƒì„ ê±°ì ˆí•©ë‹ˆë‹¤.", }, location = "%s ì—서 ì‚¬ê±´ì´ ì¼ì–´ë‚¬ìŠµë‹ˆë‹¤.", cure_not_possible_build = "ë‹¹ì‹ ì€ %s ì„(를) 지어야 í•  것입니다.", cure_not_possible_build_and_employ = "ë‹¹ì‹ ì€ %s ì„(를) ì§“ê³  %s ì„(를) 고용해야 í•  것입니다.", bonus = "ì´ ì‘급 ìƒí™©ì„ 해결하면 최대 %d ì˜ ë³´ë„ˆìŠ¤ë¥¼ ë°›ì„ ìˆ˜ 있습니다. 하지만 실패한다면, ë‹¹ì‹ ì˜ í‰íŒì€ 심ê°í•˜ê²Œ 훼ì†ë  것입니다.", }, choices = { decline_new_level = "얼마간 ë” í”Œë ˆì´ í•˜ê¸°", accept_new_level = "ë‹¤ìŒ ë ˆë²¨ë¡œ 넘어가기", return_to_main_menu = "ë©”ì¸ ë©”ë‰´ë¡œ ëŒì•„가기", }, epidemic = { cover_up_explanation_1 = "하지만, ë‹¹ì‹ ì´ ì „ì—¼ë³‘ì„ ìˆ¨ê¸°ê³  ì§ì ‘ 치료하려 하면, ë‹¹ì‹ ì€ ë³´ê±´ ë‹¹êµ­ì´ ëˆˆì¹˜ì±„ê¸° ì „ì— ê°ì—¼ëœ 모든 환ìžë¥¼ ì œí•œëœ ì‹œê°„ ë‚´ì— ì¹˜ë£Œí•´ì•¼ 합니다.", cover_up_explanation_2 = "만약 ê±´ê°• ê²€ì‚¬ê´€ì´ ë°©ë¬¸í•˜ì—¬ 전염병 치료가 여전히 ì§„í–‰ì¤‘ì¸ ê²ƒì„ ì•Œê²Œë˜ë©´, 그는 ë‹¹ì‹ ì˜ ë³‘ì›ì— 강경한 조치를 취할 수 있습니다.", choices = { cover_up = "주어진 시간 ë‚´ì—, 그리고 ì•„ë¬´ë„ ë³‘ì›ì—서 나가기 ì „ì— ëª¨ë“  ê°ì—¼ëœ 환ìžë“¤ì˜ 치료를 시ë„함", declare = "ì „ì—¼ë³‘ì„ ì„ ì–¸í•¨. ë²Œê¸ˆì„ ë¬¼ê³  í‰íŒ 하ë½ì„ ê°ìˆ˜í•¨.", }, disease_name = "ë‹¹ì‹ ì˜ ì˜ì‚¬ë“¤ì´ ìœ í–‰ì„±ì˜ %s ì„(를) 발견했습니다.", declare_explanation_fine = "ë‹¹ì‹ ì´ ì „ì—¼ë³‘ì´ ëŒê³  있다고 선언하면, %d ì˜ ë²Œê¸ˆì„ ë¬¼ê³  í‰íŒì´ 하ë½í•˜ê² ì§€ë§Œ ë‹¹ì‹ ì˜ ëª¨ë“  환ìžë“¤ì€ ìžë™ìœ¼ë¡œ ë°±ì‹ ì„ ë§žê²Œ ë©ë‹ˆë‹¤.", }, diagnosis_failed = { choices = { send_home = "환ìžë¥¼ 집으로 ëŒë ¤ë³´ëƒ„.", take_chance = "가능한 치료를 시ë„í•´ë´„.", wait = "진단 ì‹œì„¤ì„ ì¢€ ë” ì§“ëŠ” ë™ì•ˆ 환ìžê°€ ë³‘ì› ì•ˆì—서 기다리ë„ë¡ í•¨", }, situation = "병ì›ì˜ 모든 진단 ìž¥ë¹„ë“¤ì„ ë™ì›í•´ 보았지만 ì´ í™˜ìžì˜ 문제를 정확히 알아내지 못했습니다.", what_to_do_question = "ì´ í™˜ìžë¥¼ 어떻게 할까요?", partial_diagnosis_percentage_name = "%d í¼ì„¼íŠ¸ì˜ í™•ë¥ ë¡œ ì´ í™˜ìžê°€ %s ì˜ ì§ˆë³‘ì„ ê°€ì§€ê³  있다는 ê²ƒì„ ì•Œì•„ëƒˆìŠµë‹ˆë‹¤.", }, } confirmation = { abort_edit_room = "현재 ë°©ì„ ì§“ê±°ë‚˜ 편집하는 중입니다. 모든 ê¸°ë¬¼ë“¤ì´ ë°°ì¹˜ë˜ë©´ 완료ë˜ì§€ë§Œ, 그렇지 ì•Šì€ ê²½ìš° ë°©ì´ ì‚­ì œë  ê²ƒìž…ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?", return_to_blueprint = "ì •ë§ë¡œ 청사진 모드로 ëŒì•„가기 ì›í•©ë‹ˆê¹Œ?", restart_level = "ì •ë§ë¡œ 현재 ë ˆë²¨ì„ ì²˜ìŒë¶€í„° 다시 시작하기 ì›í•©ë‹ˆê¹Œ?", delete_room = "ì •ë§ë¡œ ì´ ë°©ì„ ì‚­ì œí•©ë‹ˆê¹Œ?", quit = "종료를 ì„ íƒí–ˆìŠµë‹ˆë‹¤. ì •ë§ë¡œ ê²Œìž„ì„ ë내기 ì›í•©ë‹ˆê¹Œ?", needs_restart = "ì´ ì„¤ì •ì„ ë°”ê¾¸ë ¤ë©´ CorsixTH 를 재시작해야 합니다. 저장ë˜ì§€ ì•Šì€ ë¶€ë¶„ì€ ëª¨ë‘ ìžƒì–´ë²„ë¦¬ê²Œ ë©ë‹ˆë‹¤. ì •ë§ë¡œ 바꾸기 ì›í•©ë‹ˆê¹Œ?", overwrite_save = "ì´ ìŠ¬ë¡¯ì— ì´ë¯¸ 다른 ê²Œìž„ì´ ì €ìž¥ë˜ì–´ 있습니다. ì •ë§ë¡œ ë®ì–´ì“°ê¸° ì›í•©ë‹ˆê¹Œ?", sack_staff = "ì •ë§ë¡œ ì´ ì§ì›ì„ 해고하기 ì›í•©ë‹ˆê¹Œ?", replace_machine = "ì •ë§ë¡œ %s 기계를 $%d ì˜ ë¹„ìš©ìœ¼ë¡œ êµì²´í•©ë‹ˆê¹Œ?", maximum_screen_size = "입력한 화면 í¬ê¸°ê°€ 3000 x 2000 보다 í½ë‹ˆë‹¤. í° í•´ìƒë„ë„ ê°€ëŠ¥í•˜ì§€ë§Œ, 플레ì´í• ë§Œí•œ 프레임 수를 유지하려면 하드웨어 ì„±ëŠ¥ì´ ì¶©ë¶„ížˆ 좋아야 합니다. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?", music_warning = "ê²Œìž„ì¤‘ì— mp3 파ì¼ë“¤ì„ 재ìƒí•˜ë„ë¡ í•˜ê¸° ì „ì—, smpeg.dll 파ì¼ì´ë‚˜ ê·¸ì— ìƒì‘하는 파ì¼ì´ ìš´ì˜ ì²´ì œì— ì„¤ì¹˜ë˜ì–´ 있어야 합니다. 그렇지 않으면 ìŒì•…ì´ ìž¬ìƒë˜ì§€ ì•Šì„ ê²ƒìž…ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?", } months = { [1] = "1ì›”", [2] = "2ì›”", [3] = "3ì›”", [4] = "4ì›”", [5] = "5ì›”", [6] = "6ì›”", [7] = "7ì›”", [8] = "8ì›”", [9] = "9ì›”", [10] = "10ì›”", [11] = "11ì›”", [12] = "12ì›”", } dynamic_info = { patient = { emergency = "ì‘급: %s", guessed_diagnosis = "ì¶”ì¸¡ëœ ì§„ë‹¨: %s ", diagnosis_progress = "진단 프로세스", actions = { sent_to_other_hospital = "다른 병ì›ì„ 소개받ìŒ", prices_too_high = "ê°€ê²©ì´ ë„ˆë¬´ 비싸요 - 그냥 ì§‘ì— ê°ˆëž˜ìš”", no_gp_available = "ë‹¹ì‹ ì´ ì§„ë£Œì‹¤ì„ ì§“ê¸°ë¥¼ 기다리고 있ìŒ", waiting_for_diagnosis_rooms = "ë‹¹ì‹ ì´ ì§„ë£Œ ì‹œì„¤ì„ ë” ì§“ê¸°ë¥¼ 기다리고 있ìŒ", waiting_for_treatment_rooms = "ë‹¹ì‹ ì´ ì¹˜ë£Œ ì‹œì„¤ì„ ì§“ê¸°ë¥¼ 기다리고 있ìŒ", dying = "죽어ê°!", no_diagnoses_available = "ë”ì´ìƒ 진단할 ë°©ë²•ì´ ì—†êµ°ìš” - ëŒì•„갈래요", epidemic_sent_home = "ê²€ì‚¬ê´€ì— ì˜í•´ ëŒë ¤ë³´ë‚´ì§", cured = "치료ë¨!", epidemic_contagious = "ì „ì—¼ë³‘ì— ê±¸ë ¸ì–´ìš”", awaiting_decision = "ë‹¹ì‹ ì˜ ê²°ì •ì„ ê¸°ë‹¤ë¦¬ëŠ” 중", sent_home = "집으로 ëŒë ¤ë³´ë‚´ì§", fed_up = "질려서 떠나는중", no_treatment_available = "치료할 ë°©ë²•ì´ ì—†ë„¤ìš” - ëŒì•„갈래요", on_my_way_to = "%sì— ê°€ëŠ” 중", queueing_for = "%sì— ëŒ€ê¸° 중", }, diagnosed = "진단: %s ", }, health_inspector = "ê±´ê°• 검사관", vip = "VIP 방문ìž", object = { times_used = "ì‚¬ìš©ëœ íšŸìˆ˜ %d", queue_size = "대기열 ê¸¸ì´ %d", strength = "힘 %d", queue_expected = "ì˜ˆìƒ ëŒ€ê¸°ì—´ %d", }, staff = { ability = "능력", psychiatrist_abbrev = "ì •ì‹ ê³¼ ì˜ì‚¬", actions = { going_to_repair = "ë‹¤ìŒ ê¸°ê³„ë¥¼ 수리하러 가는 중: %s", fired = "í•´ê³ ë¨", waiting_for_patient = "환ìžë¥¼ 기다리는 중", wandering = "그냥 ëŒì•„다니는 중", heading_for = "다ìŒìœ¼ë¡œ 향하는 중: %s", }, tiredness = "피로ë„", }, } introduction_texts = { demo = "ë°ëª¨ 병ì›ì— 오신 ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤!" .. "안타ê¹ê²Œë„ ë°ëª¨ 버전ì—서는 (커스텀 ë ˆë²¨ì„ ì œì™¸í•˜ë©´) ì´ ë ˆë²¨ë§Œ 플레ì´í•  수 있습니다. 그렇지만, 여기ì—ë„ ë‹¹ì‹ ì„ í•œë™ì•ˆ ë°”ì˜ê²Œ í• ë§Œí¼ì˜ ì¼ê±°ë¦¬ëŠ” 충분히 있습니다! " .. "ë‹¹ì‹ ì€ ì¹˜ë£Œë¥¼ 위해 다른 ì¢…ë¥˜ì˜ ì‹œì„¤ì„ í•„ìš”ë¡œ 하는 다양한 ì§ˆë³‘ì„ ë§Œë‚˜ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. ê°€ë”ì€ ì‘급 ìƒí™©ì´ ë°œìƒí• ì§€ë„ 모릅니다. 그리고 ë‹¹ì‹ ì€ ì—°êµ¬ì‹¤ì„ ì§€ì–´ 새로운 ì‹œì„¤ë“¤ì„ ì—°êµ¬í•´ì•¼ í•  것입니다. " .. "ë‹¹ì‹ ì˜ ëª©í‘œëŠ” $100,000 를 벌고, ë³‘ì› ê°€ì¹˜ë¥¼ $70,000 ë§Œí¼ ì˜¬ë¦¬ë©°, í‰íŒì„ 700 ë§Œí¼ ìœ ì§€í•˜ê³ , 방문하는 환ìžì˜ 75% ì´ìƒì„ 완치시키는 것입니다. " .. "ë‹¹ì‹ ì˜ í‰íŒì´ 300 아래로 떨어지거나 40% ì´ìƒì˜ 환ìžë“¤ì„ 죽게 하지 마세요. ì–´ëŠ í•˜ë‚˜ë¼ë„ ë°œìƒí•˜ë©´ ë‹¹ì‹ ì€ ê²Œìž„ì—서 지게 ë©ë‹ˆë‹¤. " .. "í–‰ìš´ì„ ë°”ëžë‹ˆë‹¤!", level1 = "ë‹¹ì‹ ì˜ ì²« 병ì›ì— 오신 ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤!//" .. "접수대와 ì§„ë£Œì‹¤ì„ ì§“ê³  접수ì›ê³¼ ì˜ì‚¬ë¥¼ 고용해서 ì´ ê³³ì´ ì œëŒ€ë¡œ ëŒì•„ê°€ê²Œë” í•˜ì„¸ìš”. " .. "그러고 나서 í• ì¼ì´ ìƒê¸¸ 때까지 ì–´ëŠ ì •ë„ ê¸°ë‹¤ë¦¬ì„¸ìš”. " .. "정신과를 ì§“ê³  ì •ì‹ ê³¼ ìžê²©ì´ 있는 ì˜ì‚¬ë¥¼ 고용하는 ê²ƒì€ ì¢‹ì€ ìƒê°ìž…니다. " .. "ì•½êµ­ì„ ì§“ê³  간호사를 고용하는 ê²ƒë„ í™˜ìžë“¤ì„ 치료하는 ë° ê¼­ 필요합니다. " .. "ë¶€ì€ ë¨¸ë¦¬ ì¦ìƒì„ 호소하는 환ìžë“¤ì„ 주ì˜í•˜ì„¸ìš” - íŒ½ì°½ì‹¤ì„ ì§€ìœ¼ë©´ ì´ ë¬¸ì œë¥¼ í•´ê²°í•  수 ìžˆì„ ê²ƒìž…ë‹ˆë‹¤. " .. "ë‹¹ì‹ ì˜ ëª©í‘œëŠ” 10 ëª…ì˜ í™˜ìžë¥¼ 치료하고 í‰íŒì´ 200 아래로 떨어지지 않ë„ë¡ í•˜ëŠ” 것입니다.", level2 = "ì´ ì§€ì—­ì—는 ë” ë‹¤ì–‘í•œ ë³‘ì´ ë„사리고 있습니다. " .. "ë” ë§Žì€ í™˜ìžë“¤ì„ 치료할 수 있ë„ë¡ ë³‘ì›ì„ 구성하고, 연구 ì‹œì„¤ì„ ì§€ì„ ê³„íšì„ 세우세요. " .. "ë‹¹ì‹ ì˜ ì‹œì„¤ë“¤ì„ ê¹¨ë—하게 유지하는 ê²ƒì„ ìžŠì§€ ë§ê³ , í‰íŒì„ 최대한 ë†’ì— ìœ ì§€í•˜ë„ë¡ ë…¸ë ¥í•˜ì„¸ìš”. ë‹¹ì‹ ì€ ëŠ˜ì–´ì§„ 혀를 발견하게 ë í…ë°, 늘어진 혀 í´ë¦¬ë‹‰ì„ 지어서 치료할 수 있습니다. " .. "ë˜í•œ, 심전ë„ì‹¤ì„ ì§€ìœ¼ë©´ 새로운 ì§ˆë³‘ë“¤ì„ ì§„ë‹¨í•˜ëŠ” ë° ë„ì›€ì´ ë  ê²ƒìž…ë‹ˆë‹¤. " .. "ì´ ë‘ ê°€ì§€ ë°©ì„ ì§“ê¸° 위해서는 먼저 연구를 해야 합니다. 그리고 ì´ì œ ë‹¹ì‹ ì€ ë³‘ì›ì„ 확장하기 위한 새로운 토지를 구매할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 그러려면 ë§ˆì„ ì§€ë„를 사용하세요. " .. "300 ì˜ í‰íŒê³¼, $10,000 ì˜ ì€í–‰ 잔고, 그리고 40 ëª…ì˜ í™˜ìžë¥¼ 치료하는 ê²ƒì„ ëª©í‘œë¡œ 하세요.", level3 = "ì´ë²ˆì—는 부유한 ì§€ì—­ì— ë‹¹ì‹ ì˜ ë³‘ì›ì„ 세우게 ë  ê²ƒìž…ë‹ˆë‹¤. " .. "보건부는 ì´ ê³³ì—서 ë‹¹ì‹ ì´ ìƒë‹¹í•œ ì´ìµì„ 남기기를 ë°”ë¼ê³  있습니다. " .. "처ìŒì—는 ì–´ëŠ ì •ë„ í‰íŒì„ 쌓아야 하겠지만, 병ì›ì´ 안정ì ìœ¼ë¡œ ëŒì•„가기 시작하면, 최대한 ëˆì„ ë§Žì´ ë²„ëŠ” ê²ƒì— ì§‘ì¤‘í•˜ì„¸ìš”. " .. "ë˜í•œ ì‘급 ìƒí™©ì´ ë°œìƒí•  ê°€ëŠ¥ì„±ë„ ìžˆìŠµë‹ˆë‹¤. " .. "ì‘급 ìƒí™©ì—는 ë™ì¼í•œ ì§ˆë³‘ì„ ê°€ì§„ ë§Žì€ ì‚¬ëžŒë“¤ì´ í•œêº¼ë²ˆì— ëª°ë ¤ì˜¤ê²Œ ë©ë‹ˆë‹¤. " .. "ì œí•œëœ ì‹œê°„ ë‚´ì— ëª¨ë‘를 치료하게 ë˜ë©´ ë‹¹ì‹ ì˜ í‰íŒì´ 올ë¼ê°€ë©° í° ë³´ë„ˆìŠ¤ë¥¼ 받게 ë©ë‹ˆë‹¤. " .. "왕ìžë³‘ê³¼ ê°™ì€ ì§ˆë³‘ì´ ë°œìƒí•  수 있으며, ë‹¹ì‹ ì€ ìˆ˜ìˆ ì‹¤ì„ ì§“ê³  ë˜í•œ 가까운 ê³³ì— ë³‘ë™ì„ ì§€ì„ ì˜ˆì‚°ì„ ë§ˆë ¨í•´ ë‘어야 í•  것입니다. " .. "성공하기 위해 $20,000 ë§Œí¼ì„ 버세요.", level4 = "모든 환ìžë“¤ì„ 행복하게 해주고, ê·¸ë“¤ì„ ê°€ëŠ¥í•œí•œ 효율ì ìœ¼ë¡œ 치료하며, 사ë§ìžì˜ 수는 ì •ë§ ìµœì†Œí•œìœ¼ë¡œ 유지하세요. " .. "ë‹¹ì‹ ì˜ í‰íŒì´ ì´ ë ˆë²¨ì˜ ì„±ê³µì„ ì¢Œìš°í•˜ë¯€ë¡œ, í‰íŒì„ 최대한 높게 유지하ë„ë¡ ë…¸ë ¥í•˜ì„¸ìš”. " .. "ëˆì— 대해서는 너무 신경쓰지 마세요. ëˆì€ í‰íŒì´ 높아지면 ìžì—°ìŠ¤ëŸ½ê²Œ ë”°ë¼ì˜¤ê²Œ ë  ê²ë‹ˆë‹¤. " .. "ë˜í•œ, ë‹¹ì‹ ì€ ì´ì œ ì˜ì‚¬ë“¤ì˜ ëŠ¥ë ¥ì„ í–¥ìƒì‹œí‚¤ê¸° 위해 ê·¸ë“¤ì„ êµìœ¡ì‹œí‚¤ëŠ” ê²ƒë„ ê°€ëŠ¥í•©ë‹ˆë‹¤. " .. "êµìœ¡ë°›ì€ ì˜ì‚¬ë“¤ì€, ì–´ë–¤ 질병ì¸ì§€ 아주 확실치 ì•Šì€ í™˜ìžë“¤ì„ ë” ìž˜ 치료할 수 ìžˆì„ ê²ƒìž…ë‹ˆë‹¤. " .. "500 ì´ìƒì˜ í‰íŒì„ 달성하세요.", level5 = "여기는 가지ê°ìƒ‰ì˜ ì§ˆë³‘ë“¤ì„ ì¹˜ë£Œí•˜ëŠë¼ 아주 분주한 병ì›ì´ ë  ê²ë‹ˆë‹¤. " .. "ë‹¹ì‹ ì´ ê³ ìš©í•  수 있는 ì˜ì‚¬ë“¤ì€ ëª¨ë‘ ì˜ëŒ€ë¥¼ ê°“ 졸업한 신입들ì´ê¸° 때문ì—, êµìœ¡ì‹¤ì„ 지어서 ì ì • 수준으로 훈련시키는 ê²ƒì´ í•„ìˆ˜ìž…ë‹ˆë‹¤. " .. "ì˜ì‚¬ë“¤ì„ êµìœ¡í•  수 있는 ë”± 세 ëª…ì˜ ì „ë¬¸ì˜ë“¤ë§Œ 주어져 있으므로, ì´ë“¤ì„ 행복하게 í•´ 주세요. " .. "ë˜ ìœ ë…해야할 것ì€, 병ì›ì´ 샌 안드로ì´ë“œ 단층 ìœ„ì— ì§€ì–´ì ¸ 있다는 것입니다. " .. "다시ë§í•´, ì´ ë³‘ì›ì€ 언제나 ì§€ì§„ì˜ ìœ„í—˜ì— ë…¸ì¶œë˜ì–´ 있습니다. " .. "ì§€ì§„ì€ ë‹¹ì‹ ì˜ ê¸°ê³„ë“¤ì„ ì†ìƒì‹œí‚¤ê³ , 병ì›ì„ ì›ë§Œí•˜ê²Œ ìš´ì˜í•˜ëŠ” ê²ƒì„ ë°©í•´í•  것입니다. " .. "성공하려면 í‰íŒì„ 400 ë§Œí¼ ì˜¬ë¦¬ê³ , $50,000 를 예금하세요. ë˜í•œ, 200 ëª…ì˜ í™˜ìžë¥¼ 치료하세요.", level6 = "ë‹¹ì‹ ì˜ ëª¨ë“  ì§€ì‹ì„ ë™ì›í•´ì„œ, ì ì ˆí•œ ì´ìœ¤ì„ ë‚¨ê¸°ë©´ì„œë„ ë³‘ì•½í•œ ëŒ€ì¤‘ì´ ê°€ì§„ 온갖 ì§ˆë³‘ë“¤ì„ ì¹˜ë£Œí•  수 있ë„ë¡ ì›ë§Œí•˜ê²Œ ìš´ì˜ë˜ëŠ” 병ì›ì„ 지으세요. " .. "ì´ ê³³ ì£¼ë³€ì˜ ê³µê¸°ëŠ” 특별히 세균과 ì§ˆë³‘ì„ ì˜®ê¸°ëŠ” ë° ì¢‹ë‹¤ëŠ” ê²ƒì„ ì•Œì•„ë‘세요. " .. "병ì›ì„ ì •ë§ êµ¬ì„êµ¬ì„ ê¹¨ë—하게 유지하지 않으면, 환ìžë“¤ 사ì´ì—서 아주 심ê°í•œ ì „ì—¼ë³‘ì´ ë„는 ê²ƒì„ ë³´ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. " .. "ëˆì„ $150,000 ë§Œí¼ ë²Œê³ , 병ì›ì˜ 가치가 $140,000 ì´ìƒì´ ë˜ë„ë¡ í•˜ì„¸ìš”.", level7 = "ì´ë²ˆì—는 ë‹¹ì‹ ì˜ ë³‘ì›ì´ ë³´ê±´ë¶€ì˜ ì² ì €í•œ ê°ì‹œ í•˜ì— ë†“ì—¬ìžˆê²Œ ë  ê²ƒì´ë¯€ë¡œ, ë‹¹ì‹ ì´ ëˆì„ 충분히 ë§Žì´ ë²Œê³  있다는 ê²ƒì„ ì€í–‰ 잔고로 보여주고, í‰íŒì„ 올리ë„ë¡ í•˜ì„¸ìš”. " .. "환ìžë“¤ì´ 사ë§í•˜ëŠ” ê²ƒì€ ìµœëŒ€í•œ 피해야 합니다 - ì‚¬ì—…í•˜ëŠ”ë° ì „í˜€ ë„ì›€ì´ ì•ˆë˜ë‹ˆê¹Œìš”. " .. "ìµœê³ ì˜ ì§ì›ë“¤ì„ 고용하ë„ë¡ í•˜ê³ , 필요한 ìž¥ë¹„ë“¤ì„ ê°–ì¶”ë„ë¡ í•˜ì„¸ìš”. " .. "600 ì˜ í‰íŒê³¼ $200,000 ì˜ ìž”ê³ ë¥¼ 얻으세요.", level8 = "얼마나 비용대비 íš¨ìœ¨ì´ ë†’ì€ ë³‘ì›ì„ 짓는 ê²ƒì€ ë‹¹ì‹ ì—게 달렸습니다. " .. "ì´ ì£¼ë³€ ì£¼ë¯¼ë“¤ì€ ìƒë‹¹ížˆ 부유한 편ì´ë‹ˆ, í•  수 있는 ë§Œí¼ ì¥ì–´ 짜내세요. " .. "ì‚¬ëžŒë“¤ì„ ì¹˜ë£Œí•˜ëŠ” ê²ƒë„ ì¢‹ì§€ë§Œ, ëˆì„ 모으는 ê²ƒì´ ëª©í‘œë¼ëŠ” ê²ƒì„ ê¸°ì–µí•´ì•¼ 합니다. " .. "ì´ ì•„í”ˆ ì‚¬ëžŒë“¤ì„ ì•„ì£¼ 빈털터리로 만들어 버리세요. " .. "ì´ ë ˆë²¨ì„ ì™„ë£Œí•˜ë ¤ë©´ ìž¬ì‚°ì„ $300,000 ë§Œí¼ ìŒ“ì•„ì•¼ 합니다.", level9 = "ë³´ê±´ë¶€ì˜ ìž¬ì‚°ì„ ì¢€ 불려주고 장관님께 ë¦¬ë¬´ì§„ë„ í•œ 대 뽑아드렸으니, ì´ì œ 다시 ëª¸ì´ ì•„í”ˆ ì‚¬ëžŒë“¤ì„ ìž˜ ëŒë³´ëŠ” 훌륭한 병ì›ì„ 짓는 ì¼ì„ 재개할 수 있습니다. " .. "여기서는 굉장히 다양한 ë¬¸ì œë“¤ì„ ë§ˆì£¼ì¹˜ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. " .. "ë‹¹ì‹ ì´ ì¶©ë¶„ížˆ í›ˆë ¨ë°›ì€ ì§ì›ë“¤ê³¼ 필요한 ì‹œì„¤ë“¤ì„ ê°–ì¶˜ë‹¤ë©´, ì´ ì²œì‚¬ ê°™ì€ ì‚¬ëžŒë“¤ì„ íšŒë³µì‹œì¼œì¤„ 수 있습니다. " .. "ë‹¹ì‹ ì˜ ë³‘ì› ê°€ì¹˜ê°€ $200,000 ì´ìƒì´ ë˜ì–´ì•¼ 하고, ì€í–‰ì— $400,000 ë§Œí¼ì˜ ëˆì´ 있어야 합니다. " .. "ì´ê²ƒ 보다 ì ë‹¤ë©´ ì´ ë ˆë²¨ì„ í´ë¦¬ì–´ 하는 ê²ƒì€ ì–´ë¦¼ë„ ì—†ìŠµë‹ˆë‹¤.", level10 = "ì´ ë™ë„¤ì— ì°½ê¶í•˜ëŠ” ì§ˆë³‘ë“¤ì„ ì¹˜ë£Œí•˜ëŠ” 것 ë¿ë§Œ 아니ë¼, 보건부는 ë‹¹ì‹ ì˜ ì˜ì•½í’ˆì˜ íš¨ìš©ì„±ì„ ë†’ì¼ ê²ƒì„ ìš”êµ¬í•©ë‹ˆë‹¤. " .. "ë³´ê±´ ê²€ì‚¬ê´€ì¸ Ofsick 으로부터 ë¶ˆë§Œì´ ì ‘ìˆ˜ë˜ì—ˆê¸° 때문ì—, ì¢‹ì€ ì¸ìƒì„ 주기 위해서는 ë‹¹ì‹ ì˜ ì•½ë“¤ì´ ì—„ì²­ë‚˜ê²Œ 잘 ë“£ë„ë¡ ë§Œë“¤ì–´ì•¼ 합니다. " .. "ë˜í•œ, ë‹¹ì‹ ì˜ ë³‘ì›ì´ 비난 받지 않ë„ë¡ í•˜ëŠ” ê²ƒë„ ìžŠì§€ 마세요. 사ë§ìž 수를 낮게 유지하세요. " .. "힌트를 주ìžë©´, ì ¤ë¦¬í†µì„ ì§€ì„ ê³µê°„ì„ ë¯¸ë¦¬ 확보해 ë‘는 ê²ƒì´ ì¢‹ì„ ê²ë‹ˆë‹¤. " .. "모든 ì•½ì˜ íš¨ìœ¨ì„ 80% ì´ìƒìœ¼ë¡œ ëŒì–´ 올리고, 650 ì˜ í‰íŒê³¼ $500,000 ì„ ë²Œë©´ 승리할 수 있습니다.", level11 = "ë‹¹ì‹ ì€ ê¶ê·¹ì˜ 병ì›ì„ ì§€ì„ ê¸°íšŒë¥¼ 얻었습니다. " .. "ì´ ê³³ì€ êµ‰ìž¥ížˆ ì´ë¦„난 지역ì´ê³ , 보건부는 가능한 ìµœê³ ì˜ ë³‘ì›ì„ ë³´ê³  ì‹¶ì–´ 합니다. " .. "우리는 ë‹¹ì‹ ì´ í° ëˆì„ 벌고, 엄청나게 ë†’ì€ í‰íŒì„ 얻으며 모든 ì§ˆë³‘ë“¤ì„ ì¹˜ë£Œí•  있기를 기대합니다. " .. "ì´ê±´ 굉장히 중요한 ì¼ìž…니다. " .. "성공하기 위해서는 ë‹¹ì‹ ì€ íŠ¹ë³„í•œ ì‚¬ëžŒì´ ë˜ì–´ì•¼ í•  ê²ë‹ˆë‹¤. " .. "ë˜ ì£¼ì˜í•  것ì€, ì´ ì§€ì—­ì—서 UFO ê°€ 여러번 목격ë˜ì—ˆë‹¤ëŠ” 것입니다. ë‹¹ì‹ ì˜ ì§ì›ë“¤ì´ ëœ»ë°–ì˜ ë°©ë¬¸ì— ëŒ€ë¹„í•  수 있ë„ë¡ í•´ 주세요. " .. "ë‹¹ì‹ ì˜ ë³‘ì›ì€ $240,000 ì´ìƒì˜ 가치를 해야 하고, ì€í–‰ì— $500,000 ì˜ ëˆê³¼ 700 ì˜ í‰íŒì„ 얻어야 í•  ê²ë‹ˆë‹¤.", level12 = "ë‹¹ì‹ ì€ ìµœê³ ì˜ ë„ì „ì— ì§ë©´í•´ 있습니다. " .. "ì§€ê¸ˆê¹Œì§€ì˜ ë‹¹ì‹ ì˜ ì„±ê³µì— í¬ê²Œ ì¸ìƒì„ ë°›ì€ ë³´ê±´ë¶€ê°€ ë‹¹ì‹ ì„ ìµœê³ ì˜ ìžë¦¬ì— 앉혀주었습니다. ê·¸ë“¤ì€ ë‹¹ì‹ ì´ ë˜ë‹¤ë¥¸ ê¶ê·¹ì˜ 병ì›ì„ ì§“ê³ , 막대한 ëˆì„ 벌며 놀ë¼ìš´ í‰íŒì„ 얻기를 ì›í•©ë‹ˆë‹¤. " .. "ë˜í•œ ë‹¹ì‹ ì´ ë§¤ìž…í•  수 있는 모든 부지를 사들ì´ê³ , 모든 ì§ˆë³‘ì„ ì¹˜ë£Œí•˜ë©° (ì •ë§ '모든' 질병 ë§ì´ì—ìš”), 모든 ìƒì„ 수ìƒí•˜ê¸°ë¥¼ ì›í•©ë‹ˆë‹¤. " .. "ë„ì „í•´ ë³¼ 준비가 ë˜ì—ˆë‚˜ìš”?" .. "$650,000 ì„ ë²Œê³ , 750 ëª…ì˜ í™˜ìžë¥¼ 치료하며, 800 ì˜ í‰íŒì„ 얻어 ì´ ë ˆë²¨ì„ í´ë¦¬ì–´ 하세요.", level13 = "ë³‘ì› ì±…ìž„ìžë¡œì„œì˜ 놀ë¼ìš´ ëŠ¥ë ¥ì„ ë³´ê³  '비밀 특수 관청'ì˜ '비밀 특수 부서'ì—서 당신ì—게 ê´€ì‹¬ì„ ê°€ì§€ê¸° 시작했습니다. " .. "ê·¸ë“¤ì´ ë‹¹ì‹ ì—게 주는 보너스가 있습니다. ì¥ê°€ ë“실거리는 병ì›ì—서 ì¥ë¥¼ 없애야 합니다. " .. "ë‹¹ì‹ ì€ ìž¡ì—­ë¶€ë“¤ì´ ë”러운 ê²ƒë“¤ì„ ì¹˜ìš°ê¸° ì „ì— ìµœëŒ€í•œ ì¥ë“¤ì„ ì˜ì•„ 맞춰야 합니다. " .. "준비 ë˜ì…¨ë‚˜ìš”?", level14 = "ë˜ë‹¤ë¥¸ ë„전입니다 - 전혀 예ìƒì¹˜ 못한 놀ë¼ìš´ 병ì›ì„ 짓는 것ì´ì£ . " .. "ì´ê²ƒì„ 성공한다면, ë‹¹ì‹ ì€ ìŠ¹ìž ì¤‘ì˜ ìŠ¹ìžë¡œ ê¸°ì–µë  ê²ƒìž…ë‹ˆë‹¤. " .. "쉬운 ì¼ì´ ë  ê²ƒì´ë¼ê³  기대하지 마세요. ë‹¹ì‹ ì´ ë§ˆì£¼í•˜ê²Œ ë  ê°€ìž¥ 어려운 과제가 ë  í…Œë‹ˆê¹Œìš”. " .. "í–‰ìš´ì„ ë¹•ë‹ˆë‹¤!", level15 = "좋아요, 그게 바로 병ì›ì„ ìš´ì˜í•˜ëŠ” 기본ì ì¸ 방법입니다.//" .. "ë‹¹ì‹ ì˜ ì˜ë£Œì§„ì€ íŠ¹ì • 환ìžë“¤ì„ 진단하기 위해서 ë„ì›€ì„ í•„ìš”ë¡œ í•  수 있습니다." .. "ì¼ë°˜ 진단실 등과 ê°™ì€ ì§„ë‹¨ ì„¤ë¹„ë“¤ì„ ë” ë§Žì´ ì§€ì–´ì„œ ì˜ë£Œì§„ì´ ì •í™•í•œ ì§„ë‹¨ì„ í•  수 있ë„ë¡ ë„울 수 있습니다.", level16 = "환ìžë“¤ì„ 진단한 후ì—는, 치료 시설과 í´ë¦¬ë‹‰ ë“±ì„ ì§€ì–´ì„œ 환ìžë“¤ì„ 치료해야 합니다. " .. "약국ì—서부터 시작하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 약국ì—서 제대로 ì•½ì„ ì¡°ì œí•˜ê¸° 위해서는 ê°„í˜¸ì‚¬ë„ í•„ìš”í•  것입니다.", level17 = "마지막 당부입니다 - ë‹¹ì‹ ì˜ í‰íŒì—서 ëˆˆì„ ë–¼ì§€ 마세요. í‰íŒì´ 높아야 ë” ë¨¼ ê³³ì˜ í™˜ìžë“¤ì„ ëŒì–´ì˜¬ 수 있습니다. " .. "너무 ë§Žì€ í™˜ìžë“¤ì„ 죽게 하지 않고 ì ì ˆížˆ 행복ë„를 유지해 준다면 ì´ ë ˆë²¨ì„ í´ë¦¬ì–´ 하는 ë° í° ë¬¸ì œëŠ” ì—†ì„ ê²ƒìž…ë‹ˆë‹¤!//" .. "ì´ì œ 모든 ê²ƒì€ ë‹¹ì‹ ì—게 달렸습니다. í–‰ìš´ì„ ë¹Œì–´ìš”.", } transactions = { severance = "퇴ì§ê¸ˆ", research = "연구비", eoy_trophy_bonus = "ì—°ë§ ê¸°ë… ë³´ë„ˆìŠ¤", buy_object = "기물 구매", cure_colon = "치료:", epidemy_coverup_fine = "전염병 ì€í 벌금", final_treat_colon = "최종 처방:", jukebox = "수입: 주í¬ë°•스", loan_interest = "대출 ì´ìž", overdraft = "당좌 대월 ì´ìž", wages = "급여", loan_repayment = "대출 ìƒí™˜", personal_bonus = "ê°œì¸ ë³´ë„ˆìŠ¤ 지급", drug_cost = "약물 비용", cure = "치료", heating = "난방비", treat_colon = "처방:", compensation = "ì •ë¶€ ë³´ìƒê¸ˆ", epidemy_fine = "전염병 벌금", buy_land = "토지 매입", research_bonus = "연구 보너스", general_bonus = "ì¼ë°˜ 보너스 지급", deposit = "처방 ë³´ì¦ê¸ˆ", eoy_bonus_penalty = "ì—°ë§ ë³´ë„ˆìŠ¤/벌금", cheat = "ëˆ ì¹˜íŠ¸", drinks = "수입: ìŒë£Œ ìžíŒê¸°", vaccination = "백신", advance_colon = "가불:", vip_award = "VIP 현금 ìƒì—¬", hire_staff = "ì§ì› ê³ ìš©", bank_loan = "ì€í–‰ ì´ìž", machine_replacement = "기계 êµí™˜ 비용", emergency_bonus = "ì‘급 ìƒí™© 보너스 지급", build_room = "ë°© 건설", insurance_colon = "ë³´í—˜:", sell_object = "기물 íŒë§¤", } object = { chair = "ì˜ìž", litter = "쓰레기", sofa = "소파", operating_table = "수술대", bed2 = "침대", bench = "벤치", scanner = "스ìºë„ˆ", couch = "침ìƒ", blood_machine = "혈액 ë¶„ì„기", table1 = "íƒìž", video_game = "비디오 게임", lamp = "전등", op_sink2 = "세면대", door = "문", auto_autopsy = "ìžë™ë¶€ê²€ê¸°", reception_desk = "접수대", hair_restorer = "모발 재ìƒê¸°", projector = "ì˜ì‚¬ê¸°", crash_trolley = "운반차", tv = "TV", ultrascanner = "울트ë¼ìФìºë„ˆ", surgeon_screen = "외과 ì˜ì‚¬ìš© 스í¬ë¦°", litter_bomb = "쓰레기 í­íƒ„", inflator = "팽창기", table2 = "íƒìž", desk = "ì±…ìƒ", pool_table = "당구대", x_ray_viewer = "X-ë ˆì´ ë·°ì–´", radiation_shield = "방사선 ì°¨í기", bed = "침대", swing_door2 = "ì—¬ë‹«ì´ ë¬¸", console = "콘솔", op_sink1 = "세면대", bookcase = "책장", drinks_machine = "ìžíŒê¸°", comfortable_chair = "안ë½ì˜ìž", skeleton = "해골", computer = "컴퓨터", bin = "쓰레기통", pharmacy_cabinet = "약장", radiator = "ë¼ë””ì—ì´í„°", cast_remover = "ê¹ìФ 제거기", atom_analyser = "ì›ìž ë¶„ì„기", plant = "화초", jelly_moulder = "젤리 주형기", cardio = "심전ë„", toilet = "변소", electrolyser = "전기분해기", fire_extinguisher = "소화기", bed3 = "침대", swing_door1 = "ì—¬ë‹«ì´ ë¬¸", lecture_chair = "ê°•ì˜ ì˜ìž", screen = "스í¬ë¦°", toilet_sink = "세면대", shower = "샤워", gates_of_hell = "ì§€ì˜¥ì˜ ë¬¸", entrance_right = "우측 문", entrance_left = "좌측 문", slicer = "절단기", dna_fixer = "DNA-정정기", x_ray = "X-ë ˆì´", cabinet = "서류 ìºë¹„ë„·", } letter = { [1] = { [1] = "%s 님ì—게//", [2] = "멋지군요! ë‹¹ì‹ ì€ ì´ ë³‘ì›ì„ ìš´ì˜í•˜ëŠ” ì¼ì„ 훌륭하게 해냈습니다. 우리 ë³´ê±´ë¶€ 고위 ì¸ì‚¬ë“¤ì€ ë‹¹ì‹ ì´ ë” í° í”„ë¡œì íŠ¸ë¥¼ 진행할 ìƒê°ì´ 있는지 ê¶ê¸ˆí•©ë‹ˆë‹¤. 당신ì—게 ë”± 맞는 ìžë¦¬ê°€ 있습니다. ì—°ë´‰ì€ $%d ë§Œí¼ ë“œë¦´ 수 있습니다. ìƒê°í•´ 보시고 ì—°ë½ ë¶€íƒë“œë¦½ë‹ˆë‹¤.//", [3] = "%s 병ì›ì—서 ì¼í•´ë³¼ ìƒê°ì´ 있습니까?", }, [2] = { [1] = "%s 님ì—게//", [2] = "아주 좋아요! ë‹¹ì‹ ì€ ë³‘ì›ì„ 뛰어나게 발전시켰습니다. ë‹¹ì‹ ì´ ë‹¤ë¥¸ í’경과 새로운 ë„ì „ì„ ì›í•œë‹¤ë©´, 우리가 찾아낸 ê³³ì´ ìžˆìŠµë‹ˆë‹¤. ì´ ì œì˜ë¥¼ 반드시 수ë½í•´ì•¼ 하는 ê²ƒì€ ì•„ë‹ˆì§€ë§Œ, 수ë½í• ë§Œí•œ 가치는 ìžˆì„ ê²ƒìž…ë‹ˆë‹¤. 급여는 $%d 입니다.//", [3] = "%s 병ì›ì˜ ìžë¦¬ë¥¼ ì›í•˜ì‹­ë‹ˆê¹Œ?", }, [3] = { [1] = "%s 님ì—게//", [2] = "ì´ ë³‘ì›ì—서 재ì§í•˜ëŠ” 중 ë‹¹ì‹ ì€ ëŒ€ë‹¨ížˆ í° ì„±ê³µì„ ê±°ë‘었습니다. 우리는 ë‹¹ì‹ ì˜ ê°€ëŠ¥ì„±ì„ ë†’ì´ í‰ê°€í•˜ë©°, 다른 ê³³ì—ì„œì˜ í¬ì§€ì…˜ì„ ì œì˜í•˜ê³ ìž 합니다. ì—°ë´‰ì€ $%d ê°€ ë  ê²ƒì´ê³ , ë‹¹ì‹ ì´ ì´ ìƒˆë¡œìš´ ê³³ì—ì„œì˜ ë„ì „ì„ ì¦ê¸°ë¦¬ë¼ê³  믿습니다.//", [3] = "%s 병ì›ì—ì„œì˜ ì¼í•˜ê³  싶습니까?", }, [4] = { [1] = "%s 님ì—게//", [2] = "축하드립니다! ë³´ê±´ë¶€ì˜ ìš°ë¦¬ëŠ” 병ì›ì„ ìš´ì˜í•˜ëŠ” ë‹¹ì‹ ì˜ ëŠ¥ë ¥ì— í° ì¸ìƒì„ 받고 있습니다. ë‹¹ì‹ ì€ í™•ì‹¤ížˆ ë³´ê±´ê³„ì˜ í° ì†ìž…니다. 하지만 ë‹¹ì‹ ì´ ì¡°ê¸ˆ ë” ì–´ë ¤ìš´ ì¼ì„ 하기 ì›í•˜ì§€ 않ì„까 ì‹¶êµ°ìš”. ë‹¹ì‹ ì€ $%d ì˜ ê¸‰ì—¬ë¥¼ 받게 ë˜ê² ì§€ë§Œ, ê²°ì •ì€ ë‹¹ì‹  몫입니다.//", [3] = "%s 병ì›ì—서 ì¼í•˜ëŠ” ê²ƒì— í¥ë¯¸ê°€ 있습니까?", }, [5] = { [1] = "%s 님ì—게//", [2] = "오랜만ì´êµ°ìš”. ì´ ë§¤ë ¥ì ì¸ 병ì›ì— 남기 ì›í•˜ëŠ” ë‹¹ì‹ ì˜ ìƒê°ì€ 존중하지만, ê·¸ê²ƒì— ëŒ€í•´ 재고해보셨으면 합니다. ë‹¹ì‹ ì´ ìš°ë¦¬ê°€ 지정하는 다른 병ì›ìœ¼ë¡œ 옮겨서 ì›ë§Œí•˜ê²Œ ìš´ì˜í•´ 낸다면 $%d ì˜ ë†’ì€ ê¸‰ì—¬ë¥¼ 드릴 ì˜í–¥ì´ 있습니다.//", [3] = "%s 병ì›ìœ¼ë¡œ 지금 ì´ì§í•˜ì‹œê² ìŠµë‹ˆê¹Œ?", }, [6] = { [1] = "%s 님ì—게//", [2] = "안녕하세요. ë‹¹ì‹ ì´ ì´ë ‡ê²Œ 부드럽게 ëŒì•„가는 ë©‹ì§„ 병ì›ì— 있는 ê²ƒì„ ì–¼ë§ˆë‚˜ 행복하게 여기는지는 잘 알지만, 우리는 ë‹¹ì‹ ì˜ ì»¤ë¦¬ì–´ë¥¼ 좀 ë” í‚¤ìš°ëŠ” ê²ƒì´ ì¢‹ì„ ê²ƒì´ë¼ê³  ìƒê°í•©ë‹ˆë‹¤. 물론 ì´ì§í•˜ì‹¤ 경우 $%d ë§Œí¼ì˜ ëˆì€ 드리겠습니다. 고려해볼만 í•  ê²ë‹ˆë‹¤.//", [3] = "%s 병ì›ì˜ ìžë¦¬ë¥¼ 수ë½í•˜ì‹œê² ìŠµë‹ˆê¹Œ?", }, [7] = { [1] = "%s 님ì—게//", [2] = "안녕하십니까! 보건부는 ë‹¹ì‹ ì´ ì§€ê¸ˆì˜ ë³‘ì›ì— 머물겠다는 ìƒê°ì„ 재고해볼 여지가 있는지 ê¶ê¸ˆí•©ë‹ˆë‹¤. ë‹¹ì‹ ì˜ ë©‹ì§„ 병ì›ì€ ë†’ì´ í‰ê°€í•˜ê³  있지만, $%d ì˜ ê¸‰ë£Œë¥¼ 받고 ë” ë„ì „ì ì¸ ì¼ì„ 해보는 ê²ƒì€ ì–´ë–¨ê¹Œ 하고 ìƒê°í•©ë‹ˆë‹¤.//", [3] = "%s 병ì›ì˜ í¬ì§€ì…˜ì„ 수ë½í•˜ì‹œê² ìŠµë‹ˆê¹Œ?", }, [8] = { [1] = "%s 님ì—게//", [2] = "안녕하세요. 지난 ë²ˆì— ë‹¹ì‹ ì€ $%d ì˜ ê¸‰ë£Œì™€ 최ìƒì˜ 조건으로 ì´ì§í•˜ê² ëƒëŠ” ì œì•ˆì„ ê±°ì ˆí–ˆìŠµë‹ˆë‹¤. 하지만 ì´ ì œì•ˆì„ ë‹¤ì‹œ 고려해보실 ê²ƒì„ ë¶€íƒ ë“œë¦½ë‹ˆë‹¤. 단언컨대, 당신ì—게 ê¼­ 맞는 완벽한 ìžë¦¬ìž…니다.//", [3] = "%s 병ì›ì—서 ì¼í•˜ë¼ëŠ” ì œì•ˆì„ ìˆ˜ë½í•˜ì‹œê² ìŠµë‹ˆê¹Œ? 제발요?", }, [9] = { [1] = "%s 님ì—게//", [2] = "ë‹¹ì‹ ì€ ë³€í™”ë¬´ìŒí•œ ì˜ë£Œê³„ ì—­ì‚¬ìƒ ìµœê³ ì˜ ë³‘ì› ì±…ìž„ìžë¡œì„œì˜ ìžì‹ ì˜ ëŠ¥ë ¥ì„ ì¦ëª…했습니다. ì´ëŸ° 중대한 ì—…ì ì— 대한 ë³´ìƒì˜ ì˜ë¯¸ë¡œ, ë‹¹ì‹ ì„ ëª¨ë“  병ì›ì˜ 최고 ì±…ìž„ìžë¡œ 모시려 합니다. ì´ê²ƒì€ 명예로운 ì§ì±…ì´ë©°, $%d ì˜ ì—°ë´‰ì´ ë³´ìž¥ë©ë‹ˆë‹¤. ë‹¹ì‹ ì„ ìœ„í•´ ì‚¬ëžŒë“¤ì´ ìƒ‰ì¢…ì´ í…Œì´í”„를 뿌리며 행진할 것ì´ê³ , ë‹¹ì‹ ì´ ì–´ë””ë¥¼ 가든지 ì‚¬ëžŒë“¤ì´ ê°ì‚¬ë¥¼ 표할 것입니다.//", [3] = "ë‹¹ì‹ ì´ ì´ë£©í•œ 모든 ê²ƒì— ê°ì‚¬í•©ë‹ˆë‹¤. ë‹¹ì‹ ì´ ì€í‡´ ìƒí™œì„ ì¦ê¸°ê¸°ë¥¼ ë°”ëžë‹ˆë‹¤.//", [4] = "", }, [10] = { [1] = "%s 님ì—게//", [2] = "우리가 배정한 모든 병ì›ì„ 성공ì ìœ¼ë¡œ ìš´ì˜í•œ ê²ƒì„ ì¶•í•˜ë“œë¦½ë‹ˆë‹¤. ì´ëŸ¬í•œ 놀ë¼ìš´ 성과로 ë³¼ 때, ë‹¹ì‹ ì€ ì„¸ê³„ì˜ ëª¨ë“  ë„ì‹œë“¤ì„ ìžìœ ë¡­ê²Œ 방문할 ìžê²©ì´ 있습니다. ë‹¹ì‹ ì€ $%d ë§Œí¼ì˜ 연금과 ë¦¬ë¬´ì§„ì„ ë°©ê²Œ ë  ê²ƒì´ë©°, 다만 우리가 당신ì—게 ì›í•˜ëŠ” ê²ƒì€ ê° ë„ì‹œë“¤ì„ ì—¬í–‰í•˜ë©° ë‹¹ì‹ ì„ ë™ê²½í•˜ëŠ” ëŒ€ì¤‘ì„ ë§Œë‚˜ê³ , 여기 ì €ê¸°ì— ìžˆëŠ” 병ì›ì„ 고무시키는 것입니다.//", [3] = "우리는 ë‹¹ì‹ ì„ ìžëž‘스럽게 ìƒê°í•©ë‹ˆë‹¤. 단 한 ì‚¬ëžŒë„ ì¸ëª…ì„ êµ¬í•˜ëŠ” ì¼ì— 헌신한 ë‹¹ì‹ ì˜ ë…¸ë ¥ì— ê°ì‚¬ë¥¼ 표하지 않는 ì‚¬ëžŒì´ ì—†ìŠµë‹ˆë‹¤.//", [4] = "", }, [11] = { [1] = "%s 님ì—게//", [2] = "ê·€í•˜ì˜ ì»¤ë¦¬ì–´ëŠ” íƒ€ì˜ ëª¨ë²”ì´ ë˜ë©°, 우리 모ë‘ì—게 ì˜ê°ì„ ì¤ë‹ˆë‹¤. 그렇게 ë§Žì€ ë³‘ì›ì„ ìš´ì˜í•˜ë©´ì„œ 모든 ì¼ì„ 훌륭히 처리해낸 ê²ƒì— ê°ì‚¬ë¥¼ 표합니다. 우리는 당신ì—게 í‰ìƒ $%d ì˜ ê¸‰ë£Œë¥¼ ì§€ê¸‰í•˜ê³ ìž í•˜ë©°, 단 한가지 ë¶€íƒë“œë¦¬ëŠ” ê²ƒì€ ê³µì‹ ì˜¤í”ˆì¹´ë¥¼ 타고 ì´ ë„시 ì € ë„시를 여행하며, 어떻게 ê·¸ ì§§ì€ ê¸°ê°„ë™ì•ˆ 그렇게 ë§Žì€ ì¼ì„ ì´ë£° 수 있었는지 ê°•ì—°ì„ í•´ì£¼ì…¨ìœ¼ë©´ 합니다.//", [3] = "ë‹¹ì‹ ì€ ë°”ë¥¸ ìƒê°ì„ 가진 모든 ì‚¬ëžŒë“¤ì˜ ê·€ê°ì´ë©°, 한 ì‚¬ëžŒë„ ì˜ˆì™¸ ì—†ì´ ë‹¹ì‹ ì„ ê·€í•œ 재산으로 여기고 있습니다.//", [4] = "", }, [12] = { [1] = "%s 님ì—게//", [2] = "모세 ì´í›„ì˜ ìµœê³ ì˜ ë³‘ì› ì±…ìž„ìžë¡œì„œì˜ ë‹¹ì‹ ì˜ ì»¤ë¦¬ì–´ê°€ ëì„ í–¥í•´ê°€ê³  있습니다. 그러나, ì˜ë£Œê³„ì—ì„œì˜ ë‹¹ì‹ ì˜ ì˜í–¥ë ¥ì€ 지대하며, 보건부는 당신ì—게 $%d ì˜ ê¸‰ë£Œë¥¼ 지급하고 우리를 대표해서 여기 저기ì—서 í–‰ì‚¬ì— ì°¸ì—¬í•˜ê³  토í¬ì‡¼ ë“±ì— ì¶œì—°í•´ì£¼ì…¨ìœ¼ë©´ 합니다. 온 세계가 당신으로 ì¸í•´ 떠들ì©í•œ ì´ ë•Œì—, 우리를 í™ë³´í•˜ëŠ” ë° í° ë„ì›€ì´ ë  ê²ë‹ˆë‹¤!//", [3] = "ì´ ì œì•ˆì„ ê¼­ 수ë½í•´ 주세요. í¬ê²Œ 어려운 ì¼ì€ ì•„ë‹ ê²ƒì´ê³ , ìŠ¹ìš©ì°¨ë„ ì§€ê¸‰í•  것ì´ë©° 어디로 가시든지 ê²½ì°°ì˜ ì—스코트가 ë™ë°˜ë  것입니다.//", [4] = "", }, custom_level_completed = "잘했습니다! ì´ ì»¤ìŠ¤í…€ ë ˆë²¨ì˜ ëª©í‘œë¥¼ ëª¨ë‘ ë‹¬ì„±í–ˆìŠµë‹ˆë‹¤!", dear_player = "%s 님ì—게", return_to_main_menu = "ë©”ì¸ ë©”ë‰´ë¡œ ëŒì•„갑니까, 아니면 ê³„ì† í”Œë ˆì´ í•©ë‹ˆê¹Œ?", } high_score = { categories = { deaths = "ì‚¬ë§ ìˆ˜", total_value = "ì´ ê°€ì¹˜", money = "ëˆ", cures = "치료 수", visitors = "ë°©ë¬¸ìž ìˆ˜", staff_number = "ì§ì› 수", cure_death_ratio = "치료 ì‚¬ë§ ë¹„ìœ¨", patient_happiness = "ê³ ê° ë§Œì¡±ë„", staff_happiness = "ì§ì› 만족ë„", salary = "ë†’ì€ ìž„ê¸ˆ", clean = "청결함", }, player = "플레ì´ì–´", score = "ì ìˆ˜", best_scores = "ëª…ì˜ˆì˜ ì „ë‹¹", worst_scores = "ìˆ˜ì¹˜ì˜ ì „ë‹¹", killed = "죽임", } menu_file_save = { [1] = " 게임 1 ", [2] = " 게임 2 ", [3] = " 게임 3 ", [4] = " 게임 4 ", [5] = " 게임 5 ", [6] = " 게임 6 ", [7] = " 게임 7 ", [8] = " 게임 8 ", } build_room_window = { pick_department = "범주를 ì„ íƒí•˜ì„¸ìš”", pick_room_type = "ë°© 종류를 ì„ íƒí•˜ì„¸ìš”", cost = "가격: ", } menu = { debug = " 디버그 ", display = " 화면 표시 ", file = " íŒŒì¼ ", options = " 옵션 ", charts = " ë„표 ", } CorsixTH-0.61/CorsixTH/Lua/languages/norwegian.lua000066400000000000000000005362431321660673500220570ustar00rootroot00000000000000--[[ Copyright (c) 2017 Erlend Mongstad, Ola Skogrand Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- READ BEFORE DOING ANY CHANGES ------------------------------------------------------------------------------- Since the norwegian language isn't in the original Theme Hospital game, this file is split in two sections (A and B). The first section contains all the new language strings, made by the Corsix-TH team, and the second section contains the override translation of all the original english strings. FORMATING AND NORWEGIAN LETTERS This file contains UTF-8 text. Make sure your editor is set to UTF-8. For the norwegian letters ø and Ø, you must use the old-style ö and Ö instead. That is because the letters ø and Ø is not included in the original ingame-font. ------------------------------------------------------------------------------- Table of Contents ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS 1. Global settings 2. Faxes 3. Objects 4. Menu 5. Adviser 6. Dynamic info 7. Tooltip -- SECTION B - OLD STRINGS (OVERRIDE) Huge section with all original strings, translated from english. -----------------------------------------------------------------------------]] -- TODO GENERAL: Skal det benevnes "spill", "brett", "nivÃ¥" eller noe annet? ------------------------------------------------------------------------------- -- SECTION A - NEW STRINGS ------------------------------------------------------------------------------- -- 1. Global setings (do not edit!) --Font("unicode") --todo: Add unicode/freefont Language("Norsk", "Norwegian", "nb", "nob") Inherit("english") Encoding(utf8) -- 2. Faxes fax = { choices = { return_to_main_menu = "GÃ¥ tilbake til hovedmenyen", accept_new_level = "Fortsett til neste nivÃ¥", decline_new_level = "Fortsett Ã¥ spille litt til", }, } letter = { dear_player = "Kjære %s", custom_level_completed = "Bra gjort! Du har fullfört alle utfordringene pÃ¥ dette brukerdefinerte brettet.!", return_to_main_menu = "Vil du gÃ¥ tilbake til hovedmenyen eller fortsette Ã¥ spille?", } install = { title = "--------------------------------- CorsixTH Setup ---------------------------------", exit = "Avslutt", th_directory = "CorsixTH trenger en kopi av datafilene fra et ekte Theme Hospital spill (eller demo) for Ã¥ kjöre. Vennligst velg plasseringen til originalspillet nedenfor.", ok = "Ok", cancel = "Avbryt", } -- 3. Objects object = { litter = "Söppel", rathole = "Rottehull", } tooltip.fax.close = "Lukk dette vinduet uten Ã¥ slette meldingen" tooltip.message.button = "Venstreklikk for Ã¥ lese faksen" tooltip.message.button_dismiss = "Venstreklikk for Ã¥ Ã¥pne faksen, höyreklikk for Ã¥ ignorere den" -- 4. Menu menu_options = { lock_windows = " LÃ…S VINDUER ", edge_scrolling = " KANTSCROLLING ", adviser_disabled = " RÃ…DGIVER ", warmth_colors = " VARMEFARGER", --Todo: Open for suggestions for a better word for it (warmth colours). } menu_options_game_speed.pause = " PAUSE " -- The demo does not contain this string menu_file.restart = " RESTART " menu_debug = { jump_to_level = " GÃ… TIL NIVÃ… ", transparent_walls = " GJENNOMSIKTIGE VEGGER ", limit_camera = " BEGRENS KAMERA ", disable_salary_raise = " DEAKTIVER LÖNNSÖKNINGER ", make_debug_patient = " LAG TESTPASIENT ", cheats = " (F11) JUKSEKODER ", make_debug_fax = " LAG DEBUG FAKS ", dump_strings = " DUMP SPRÃ…KSTRENGER ", dump_gamelog = " DUMP SPILL-LOGGEN ", map_overlay = " KARTOVERLEGG ", sprite_viewer = " SPRITE-VISNING ", lua_console = " LUA KONSOLL ", calls_dispatcher = " ANROPSEKSPEDERING ", } menu_debug_overlay = { none = " INGEN ", flags = " FLAGG ", positions = " POSISJONER ", heat = " TEMPERATUR ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE GULV ", byte_n_wall = " BYTE N VEGG ", byte_w_wall = " BYTE W VEGG ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " TOMT ", } -- 5. Adviser adviser = { room_forbidden_non_reachable_parts = "Ved Ã¥ plassere et rom her vil noen omrÃ¥der pÃ¥ sykehuset bli utilgjengelig.", praise = { plants_are_well = "Det er fint. Du tar godt vare pÃ¥ plantene dine. Storartet.", few_have_to_stand = "Nesten ingen trenger Ã¥ stÃ¥ i Sykehuset ditt. Pasientene dine vil være glade for det.", plenty_of_benches = "Det er masse sitteplasser, sÃ¥ det er ikke noe problem.", plants_thriving = "Veldig bra. Plantene dine blomstrer. De ser fantastiske ut. Fortsett slik, sÃ¥ vinner du kanskje en trofé for dem." }, } -- 6. Dynamic info dynamic_info.patient.actions.no_gp_available = "Venter pÃ¥ at du skal bygge Allmennpraksis" dynamic_info.staff.actions.heading_for = "PÃ¥ vei til %s" dynamic_info.staff.actions.fired = "Sparket" -- 7. Tooltip tooltip = { objects = { litter = "Söppel: Slengt pÃ¥ gulvet av en pasient, fordi vedkommende ikke fant en söppelbötte Ã¥ kaste det i.", rathole = "Hjemmet til en rottefamilie som syns sykehuset ditt er mökkete nok til Ã¥ bo i.", }, } -- Misc misc.not_yet_implemented = "(ikke implementert enda)" misc.no_heliport = "Enten er ingen sykdommer utforsket enda, eller sÃ¥ er det ingen heliport ved dette sykehuset." -- Main menu main_menu = { new_game = "Ny karriere", custom_level = "Valgfritt brett", load_game = "Last inn", options = "Innstillinger", version = "Versjon: ", continue = "Fortsett siste spill", savegame_version = "Lagringsversjon: ", --todo: en bedre oversettelse eller omskriving? custom_campaign = "Brukerskapt karriere", -- todo: en bedre oversettelse eller omskriving? map_edit = "Brettkonstruksjon", exit = "Avslutt", } tooltip.main_menu = { new_game = "Start et nytt spill fra begynnelsen", custom_level = "Bygg sykehuset ditt pÃ¥ et valgfritt omrÃ¥de", -- todo: forbedre tekst? load_game = "Last inn et tidligere spill", options = "Endre diverse innstillinger", exit = "Nei, nei, vær sÃ¥ snill Ã¥ ikke avslutt!", } load_game_window = { caption = "Last inn spill", } tooltip.load_game_window = { load_game = "Last spill %s", load_game_number = "Last spill %d", load_autosave = "Last autolagring", } custom_game_window = { caption = "Brukerdefinert spill", free_build = "Bygg fritt", load_selected_level = "Start", } tooltip.custom_game_window = { free_build = "Huk av denne boksen om du vil spille uten penger og uten bestemte forutsetninger for Ã¥ vinne eller tape", --todo: finne en bedre oversettelse eller omskrive load_selected_level = "Last og spill valgt brett", choose_game = "Klikk pÃ¥ et brett for Ã¥ lese mer om det", } save_game_window = { caption = "Lagre spill", new_save_game = "Nytt spill", } tooltip.save_game_window = { save_game = "Overskriv spill %s", new_save_game = "Skriv navn pÃ¥ nytt spill", } menu_list_window = { back = "Tilbake", name = "Navn", save_date = "Endret", } tooltip.menu_list_window = { back = "Lukk dette vinduet", name = "Klikk her for Ã¥ sortere listen etter navn", save_date = "Klikk her for Ã¥ sortere listen etter siste endringer", } options_window = { fullscreen = "Fullskjerm", width = "Bredde", height = "Höyde", change_resolution = "Endre opplösning", back = "Tilbake", cancel = "Avbryt", custom_resolution = "Egendefinert...", option_on = "PÃ¥", option_off = "Av", caption = "Innstillinger", language = "SprÃ¥k", apply = "Bruk", resolution = "Opplösning", folder = "Mapper", audio = "Global lyd", customise = "Tilpass", } tooltip.options_window = { fullscreen_button = "Klikk for Ã¥ gÃ¥ i fullskjermmodus", width = "Skriv inn önsket skjermbredde", height = "Skriv inn önsket skjermhöyde", change_resolution = "Endre opplösningen til dimensjonene du har angitt til venstre.", language = "Velg %s som sprÃ¥k", back = "Lukk vinduet med innstillinger", fullscreen = "Om spillet skal kjöre i fullskjerm eller vindusmodus", cancel = "Returner uten Ã¥ endre opplösning", apply = "Bruk den innskrevne opplösningen", language_dropdown_item = "Velg %s som sprÃ¥k", select_language = "Velg sprÃ¥k", select_resolution = "Velg en ny opplösning", resolution = "Opplösningen spillet skal kjöres i.", audio_button = "SlÃ¥ av eller pÃ¥ all lyd", folder_button = "Mappeinnstillinger", audio_toggle = "SlÃ¥ av eller pÃ¥", customise_button = "¨Flere innstillinger", --todo: mer beskrivelse? var "More settings you can change to customise your game play experience" } folders_window = { screenshots_location = "Velg banen du vil bruke for skjermdumper", music_label = "MP3", --todo: annet ordvalg? "MP3's" back = "Tilbake", savegames_label = "Lagrede spill", --todo: annet ordvalg? "saves" caption = "Mappebane", --todo: annet ordvalg? "folder locations" savegames_location = "Velg banen du vil bruke for lagrede spill", font_label = "Font", new_th_location = "Her kan du spesifisere en ny bane for Theme Hospital. Spillet startes pÃ¥ nytt nÃ¥r du velger en ny bane.", screenshots_label = "Skjermdumper", music_location = "Velg banen du vil bruke for musikk", data_label = "TH-data", --todo: annet ordvalg? "TH Data" } tooltip.folders_window = { --todo: skrive mer konsekvent pÃ¥ "se etter", "velg" osv. browse_font = "Se etter en annen font-fil ( nÃ¥værende beliggenhet: %1% )", screenshots_location = "Skjermdumper er normalt lagret i en mappe sammen med konfigurasjonsfila. Om du önsker kan du plassere den et annet sted.", browse_music = "Se etter en annen lokasjon for musikk ( nÃ¥værende beliggenhet: %1% ) ", music_location = "Velg en lokasjon for mp3-musikk. Mappen mÃ¥ være laget pÃ¥ forhÃ¥nd.", data_location = "Banen til den originale Theme Hospital-installasjonen, som du trenger for Ã¥ spille CorsixTH", browse_data = "Se etter en annen lokasjon for Theme Hospital-installasjonen ( nÃ¥værende beliggenhet: %1%)", savegames_location = "Normalt er de lagrede spillene lagret i en mappe sammen med konfigurasjonsfila. Om du önsker kan du plassere den et annet sted.", back = "Lukk denne menyen og gÃ¥ tilbake", browse_saves = "Se etter en annen lokasjon for dine lagrede spill ( nÃ¥værende beliggenhet: %1% ) ", browse = "Se etter mappelokasjon", browse_screenshots = "Se etter en annen lokasjon for skjermdumper ( nÃ¥værende beliggenhet: %1% ) ", not_specified = "Ingen mappe er valgt enda!", font_location = "Lokasjon for en font som kan vise Unicode-bokstaver som er nödvendig for ditt sprÃ¥k. Om denne ikke velges sÃ¥ er bokstavtyÃ¥ene begrenset til de som er i Theme Hospital.", reset_to_default = "Tilbakestill mappen til standard lokasjon", default = "Standard lokasjon", no_font_specified = "Ingen font-fil er valgt enda!", } update_window = { current_version = "Gjeldende versjon:", ignore = "Hopp over og gÃ¥ til hovedmenyen", new_version = "Ny versjon:", caption = "Oppdatering tilgjengelig!", download = "GÃ¥ til nedlastingsside", } tooltip.update_window = { download = "GÃ¥ til nedlastingssiden for den seneste versjonen av CorsixTH", ignore = "Ignorer oppdateringen denne gangen. Du vil fÃ¥ en ny beskjed neste gang du starter CorsixTH", } font_location_window = { caption = "Velg font (%1%)", } calls_dispatcher = { repair = "Reparere %s", summary = "%d Tilkallinger; %d tildelt", close = "Lukk", watering = "Vanne @ %d,%d", staff = "%s - %s", } tooltip.calls_dispatcher = { assigned = "Denne boksen er huket av om noen er tildet oppdraget.", task = "Liste over oppdrag - Klikk pÃ¥ oppdrag for Ã¥ se lokasjonen", close = "Lukk ekspedisjonsvinduet", } cheats_window = { close = "Lukk", caption = "Juksekoder", warning = "Advarsel: Du vil ikke fÃ¥ noen bonuspoeng pÃ¥ slutten av nivÃ¥et om du bruker juksekoder!", cheated = { no = "Juksekoder benyttet: Nei", yes = "Juksekoder benyttet: Ja", }, cheats = { decrease_prices = "Senk prisene", increase_prices = "Hev prisene", end_month = "Slutten av mÃ¥neden", emergency = "Lag nödstilfelle", win_level = "Vinn nivÃ¥", create_patient = "Lag pasient", vip = "Lag VIP", money = "Penger", lose_level = "Tap nivÃ¥", all_research = "All forskning", end_year = "Slutten av Ã¥ret", earthquake = "Lag jordskjelv", epidemic = "Lag smittsom pasient", toggle_infected = "SlÃ¥ av/pÃ¥ smitte-ikoner", }, } tooltip.cheats_window = { close = "Lukk juksekodevinduet", cheats = { decrease_prices = "Senk alle priser med 50 % (min. 50 %)", increase_prices = "Hev alle priser med 50 % (maks. 200 %)", end_month = "GÃ¥ til slutten av denne mÃ¥neden.", emergency = "Lag en nödssituasjon.", win_level = "Vinn dette nivÃ¥et.", create_patient = "Lag en pasient pÃ¥ enden av kartet.", vip = "Lag en VIP.", money = "Sett 10,000 i bankkontoen din.", lose_level = "Tap dette nivÃ¥et.", all_research = "Fullförer all forskning.", end_year = "GÃ¥ til slutten av dette Ã¥ret.", earthquake = "ForÃ¥rsaker et jordskjelv.", epidemic = "Lager en smittsom pasient som kan forÃ¥rsake en epidemi", toggle_infected = "SlÃ¥ av eller pÃ¥ ikoner for smittsomme pasienter for den aktive, oppdagede epidemien", }, } new_game_window = { easy = "Turnuslege (Lett)", medium = "Lege (Medium)", hard = "Konsulent (Vanskelig)", tutorial = "Innföring", cancel = "Avbryt", option_on = "PÃ¥", option_off = "Av", difficulty = "Vanskelighetsgrad", caption = "Karriere", player_name = "Spillernavn", start = "Start", } customise_window = { movies = "Global videostyring", option_on = "PÃ¥", option_off = "Av", back = "Tilbake", paused = "Bygging i pause", intro = "Spill introvideo", volume = "Hurtigtast volumsenking", caption = "Egendefinerte innstillinger", fractured_bones = "Benbrudd", average_contents = "Gjennomsnittlig rominnhold", aliens = "Utenomjordiske pasienter", } tooltip.customise_window = { --todo kanskje en opprensking her. fÃ¥ det mer konsekvent. movies = "SlÃ¥r av alle videoer i spillet", paused = " I Theme Hospital ville spilleren kun fÃ¥ lov til Ã¥ bruke toppmenyen om spillet var satt til pause. Dette er standard i CorsixTH ogsÃ¥, men ved Ã¥ slÃ¥ denne pÃ¥, sÃ¥ er alle bevegelser lov", back = "GÃ¥ tilbake", intro = "SlÃ¥ av eller pÃ¥ introfilmen. Den andre filminnstillingen mÃ¥ ogsÃ¥ være pÃ¥ for Ã¥ spille av introfilmen hver ganger du starter spillet", volume = "Om en fysisk volum ned-knapp Ã¥pner Medisinboka i spillet, sÃ¥ kan du slÃ¥ pÃ¥ denne for Ã¥ endre hurtigtasten til Shift+C", fractured_bones = "PÃ¥ grunn av mangelfulle animasjoner har vi stilt standardoppsettet til Ã¥ slÃ¥ av kvinnelige benbrudd. For Ã¥ tillate dette, slÃ¥ denne av", aliens = "PÃ¥ grunn av manglende animasjoner har vi slÃ¥tt av pasienter med Utenomjordisk DNA slik at de bare kan komme fra nödstilfeller. For Ã¥ tillate pasienter med Utenomjordisk DNA Ã¥ gÃ¥ til sykehuset, slÃ¥ denne av.", average_contents = "Om du önsker at spillet skal huske hvilke objekter du vanligvis kjöper til hver rom (gjennomsnittlig), sÃ¥ bör du slÃ¥ pÃ¥ denne", } tooltip.new_game_window = { easy = "Om du ikke har erfaring med simulatorspill er dette tingen for deg", medium = "Om du er usikker pÃ¥ hva du skal velge, sÃ¥ er dette mellomtingen", hard = "Om du er komfortabel med slike spill og önsker utfordring, bör du velge dette.", tutorial = "Om du önsker litt hjelp for Ã¥ komme i gang mÃ¥ du merke av denne boksen.", cancel = "Hmm... Det var ikke meningen Ã¥ starte et nytt spill!", difficulty = "Velg vanskelighetsgrad du vil spille pÃ¥", start = "Start spillet med de valgte innstillingene", player_name = "Skriv inn hva du vil hete i spillet", } lua_console = { execute_code = "Kjör", close = "Lukk", } tooltip.lua_console = { textbox = "Skriv Lua-kode du vil kjöre her", execute_code = "Kjör koden", close = "Lukk konsollen", } errors = { dialog_missing_graphics = "Beklager, datafilene i demoen tillater ikke denne dialogen.", save_prefix = "Feil under lagring av spill: ", load_prefix = "Feil under lasting av spill: ", load_quick_save = "Spillet kunne ikke laste inn sist hurtiglagring, siden den ikke eksisterer. Vi har ikke tenkt til Ã¥ lage en for deg!", map_file_missing = "Kunne ikke finne kartfilen %s for dette nivÃ¥et!", minimum_screen_size = "Vennligst sett opplösningen til minst 640x480.", unavailable_screen_size = "Skjermopplösningen du valgte er ikke tilgjengelig i fullskjermmodus.", alien_dna = "Merk: Det er ingen originale animasjoner for utenomjordiske pasienter som sitter, Ã¥pner eller banker pÃ¥ dörer osv. Utenomjordiske vil bare komme pÃ¥ besök om det er slÃ¥tt pÃ¥ i levelfila", --todo: bedre beskrivelse? levelfila? var "NOTE: There are no animations for Alien patients for sitting down, opening or knocking on doors etc. So, like with Theme Hospital to do these things they will appear to change to normal looking and then change back. Patients with Alien DNA will only appear if they are set to in the level file" fractured_bones = "Merk: De originale animasjonene for kvinnelige personer med benbrudd er ikke perfekte", no_games_to_contine = "Det fins ingen lagrede spill", could_not_load_campaign = "Lasting av brettet feilet: %s", -- todo: skal det kalles "brett" her? could_not_find_first_campaign_level = "Kunne ikke finne det förste brettet i denne karrieren: %s", -- todo: skal det hete karrieren her? } confirmation = { needs_restart = "Ã… forandre denne innstillingen krever en omstart av CorsixTH. Spill som ikke er lagret vil gÃ¥ tapt. Er du sikker pÃ¥ at du vil endre innstillingen?", abort_edit_room = "Du holder pÃ¥ Ã¥ bygge eller endre et rom. Om alle obligatoriske gjenstander er plassert ut, ferdigstilles rommet. Om ikke, slettes rommet. Fortsette?", } information = { custom_game = "Velkommen til CorsixTH. Kos deg med dette egenutviklede kartet!", no_custom_game_in_demo = "Unnskyld, men i demoversjonen kan du ikke spille egenutviklede kart.", cannot_restart = "Dette spillet ble dessverre lagret för restartfunksjonen ble implementert.", very_old_save = "Det har vært mange oppdateringer siden du startet pÃ¥ dette nivÃ¥et. For Ã¥ være sikker pÃ¥ at alle funksjoner virker riktig, vennligst vurder Ã¥ starte nivÃ¥et pÃ¥ nytt.", cheat_not_possible = "Juksekoder kan ikke brukes pÃ¥ dette nivÃ¥et. Du klarer ikke engang Ã¥ jukse!", level_lost = { "Kjipt! Du klarte ikke brettet. Bedre lykke neste gang!", "Grunnen til at du tapte:", reputation = "Omdömmet ditt gikk under %d.", balance = "Banksaldoen din (minus lÃ¥n) falt under %d.", percentage_killed = "Du drepte mer enn %d prosent av pasientene.", --bruke %-tegn? cheat = "Dette var ditt eget valg, eller trykket du bare pÃ¥ feil knapp? Du klarer ikke engang Ã¥ jukse skikkelig. Det var ikke sÃ¥ morsomt likevel?", }, } tooltip.information = { close = "Lukk informasjonsdialogen", } -- Tips totd_window = { tips = { "Ethvert sykehus trenger en Resepsjon og en Allmennpraksis for Ã¥ fungere. Etter det avhenger det av hvilke pasienter som besöker sykehuset. Apotek er som regel en god start.", "Maskiner som f.eks. Pumpen i Pumperommet trenger vedlikehold. Ansett en Vaktmester eller to for Ã¥ vedlikeholde maskinene, ellers risikerer du Ã¥ skade ansatte og pasienter.", "Etter en stund blir personalet ditt trött. Sörg for Ã¥ bygge et Personalrom sÃ¥ de kan hvile seg.", "Plasser radiatorer nok til Ã¥ holde pasientene og personalet varme, ellers blir de fort misfornöyd. Bruk kartet for Ã¥ lokalisere omrÃ¥der pÃ¥ sykehuset ditt som trenger mer varme.", "En Lege sine evner pÃ¥virker hvor langt tid han bruker pÃ¥ Ã¥ stille diagnose, samt kvaliteten pÃ¥ diagnosen. Plasser en flink Lege i Allmennpraksisen, da trenger du færre diagnoserom.", "Turnusleger og Doktorer kan utvikle sine evner ved Ã¥ bli undervist av en Konsulent i Klasserommet. Om Konsulenten har spesielle kvalifikasjoner (Kirurgi, Psykiatri eller Forskning) vil han ogsÃ¥ lære sine elever dette.", "Har du prövd Ã¥ slÃ¥ inn det europeiske nödnummeret (112) pÃ¥ faksen? Sörg for at lyden er pÃ¥!", "Du kan forandre noen innstillinger som opplösning og sprÃ¥k i innstillinger-vinduet som du finner pÃ¥ hovedmenyen eller pÃ¥ menyen inne i spillet.", "Hvert nivÃ¥ har en rekke utfordringer som mÃ¥ fullföres för du kan gÃ¥ videre til neste nivÃ¥. Sjekk statusen pÃ¥ utfordringene for nivÃ¥et i Statusvinduet.", "Om du vil endre eller fjerne et rom, kan du gjöre det med Ã¥ klikke pÃ¥ Endre Rom knappen pÃ¥ panelet i bunnen av skjermen.", "Du kan alltids finne fort ut hvilke pasienter som venter pÃ¥ Ã¥ slippe inn i de ulike rommene, ved Ã¥ flytte musepekeren over rommet.", "Klikk pÃ¥ dören til et rom for Ã¥ se köen. Du kan gjöre nyttige finjusteringer her, som Ã¥ organisere köen og sende pasienter til andre lignende rom.", "Irritert personale vil spörre om lönnspÃ¥legg jevnlig. Sörg for at dine ansatte jobber i komfortable omgivelser for Ã¥ hindre at det skjer.", "Pasientene svetter av spenning nÃ¥r de venter pÃ¥ behandling, og gjerne enda mer om du fyrer opp varmen. Plasser noen Brusautomater i strategiske punkter pÃ¥ sykehuset for Ã¥ tjene noen ekstra lapper.", "Du kan avbryte diagnose-prosessen ganske tidlig og gjette pÃ¥ riktig behandling, dersom du allerede har truffet pÃ¥ tilfeller av sykdommen. Vær oppmerksom pÃ¥ at dette öker sjangsen for feilbehandling. Du vil vel ikke avlive pasientene dine, vel?", "Nödtilfeller kan gjöre deg rik, sÃ¥ sant du har kapasitet til Ã¥ behandle pasientene i tide.", "Har du valgt norsk sprÃ¥k, men ser likevel engelsk tekst rundt omkring i spillet? Hjelp oss Ã¥ oversette resten av spillet til norsk!", "CorsixTH-teamet er ute etter forsterkninger! Er du interessert i Ã¥ programmere, oversette, eller kanskje lage grafikk til CorsixTH? Kontakt oss gjennom Forum, Nyhetsbrev eller IRC (corsix-th pÃ¥ freenode).", "Om du finner feil eller mangler, vær snill Ã¥ rapportere det gjennom vÃ¥r feilmeldingstjeneste: th-issues.corsix.org", }, previous = "Forrige tips", next = "Neste tips", } tooltip.totd_window = { previous = "Vis forrige tips", next = "Vis neste tips", } -- Mapmaker? save_map_window = { -- Usikker pÃ¥ om denne hörer til her, eller om den skal flyttes? caption = "Lagre brett (%1%)", new_map = "Nytt brett", } tooltip.save_map_window = { map = "Overskriv brett %s", -- Overskriv/lagre? new_map = "Skriv inn navn for nytt brett", } -- Custom campaign custom_campaign_window = { caption = "Brukerskapte karrierer", -- todo: Forbedre? Sjekke om det passer nÃ¥r spillet har implementer dette. start_selected_campaign = "Start karriere", } map_editor_window = { -- Sjekkes nÃ¥r de er implementert. Mulig hjelpeteksten mÃ¥ korrigeres! pages = { pond = "Dam", hedgerow = "Hekk", inside = "Innside", -- Riktig? Innvendig? outside = "Utside", road = "Vei", delete_wall = "Slett vegger", parcel_9 = "Tomt 9", camera_1 = "Kamera 1", camera_2 = "Kamera 2", camera_3 = "Kamera 3", camera_4 = "Kamera 4", foliage = "Beplantning", west_wall = "Vestvegg", north_wall = "Nordvegg", helipad = "Helikopterplass", parcel_0 = "Tomt 0", parcel_1 = "Tomt 1", parcel_2 = "Tomt 2", parcel_3 = "Tomt 3", parcel_4 = "Tomt 4", parcel_5 = "Tomt 5", parcel_6 = "Tomt 6", -- Riktig Ã¥ bruke "tomt"? parcel_7 = "Tomt 7", parcel_8 = "Tomt 8", paste = "InnlimingsomrÃ¥de", heliport_1 = "Helikopterplass 1", heliport_2 = "Helikopterplass 2", heliport_3 = "Helikopterplass 3", heliport_4 = "Helikopterplass 4", }, } ------------------------------------------------------------------------------- -- SECTION B - OLD STRINGS (OVERRIDE) ------------------------------------------------------------------------------- -- Staff class -- each of these corresponds to a sprite staff_class = { nurse = "Sykepleier", doctor = "Lege", handyman = "Vaktmester", receptionist = "Resepsjonist", surgeon = "Kirurg", } -- Staff titles -- these are titles used e.g. in the dynamic info bar staff_title = { receptionist = "Resepsjonist", general = "Generelt", -- unused? nurse = "Sykepleier", junior = "Turnuslege", doctor = "Doktor", surgeon = "Kirurg", psychiatrist = "Psykiater", consultant = "Konsulent", researcher = "Forsker", } -- Pay rises pay_rise = { definite_quit = "Du kan ikke gjöre noe for Ã¥ beholde meg lenger. Jeg er ferdig her!", regular = { "Jeg er helt utslitt. Jeg trenger en god pause, pluss en lönnsökning pÃ¥ %d om du ikke vil se meg gÃ¥ rundt Ã¥ sutre i korridorene.", -- %d (rise) "Jeg er veldig trött. Jeg trenger hvile og en lönnsökning pÃ¥ %d, totalt %d. Fiks det nÃ¥, din tyrann!", -- %d (rise) %d (new total) "Kom igjen. Jeg jobber som en hund her. Gi meg en bonus pÃ¥ %d og jeg blir pÃ¥ sykehuset ditt.", -- %d (rise) "Jeg er sÃ¥ deppa. Jeg krever en lönnsökning pÃ¥ %d, som blir totalt %d, ellers er jeg ferdig her.", -- %d (rise) %d (new total) "Foreldrene mine sa at medisinyrket ville gi meg mye penger. SÃ¥ gi meg en lönnsökning pÃ¥ %d, ellers blir jeg spillutvikler istedenfor.", -- %d (rise) "NÃ¥ er jeg sint. Gi meg en anstendig lönn. Jeg tror en ökning pÃ¥ %d skal gjöre susen.", -- %d (rise) }, poached = "Jeg er blitt tilbudt %d av %s. Om ikke du gir meg det samme, sÃ¥ stikker jeg.", -- %d (new total) %s (competitor) } -- Staff descriptions staff_descriptions = { good = { [1] = "Veldig rask og flittig arbeider. ", [2] = "Veldig pliktoppfyllende. Meget omsorgsfull. ", [3] = "Er meget allsidig. ", [4] = "Vennlig og alltid i godt humör. ", [5] = "Ekstremt utholden. Jobber dag og natt. ", [6] = "Utrolig höflig og har gode manerer. ", [7] = "Utrolig talentfull og dyktig. ", [8] = "Er meget opptatt av Ã¥ prestere pÃ¥ jobben. ", [9] = "Er en perfeksjonist som aldri gir opp. ", [10] = "Hjelper alltid mennesker med et smil. ", [11] = "Sjarmerende, höflig og hjelpsom. ", [12] = "Godt motivert og dedikert til jobben. ", [13] = "Snill av natur og meget hardt arbeidende. ", [14] = "Lojal og vennlig. ", [15] = "Omtenksom og til Ã¥ stole pÃ¥ i akutte situasjoner. ", }, misc = { [1] = "Spiller golf. ", [2] = "Dykker etter kamskjell. ", [3] = "Lager isskulpturer. ", [4] = "Drikker vin. ", [5] = "Kjörer rally. ", [6] = "Bedriver strikkhopping pÃ¥ fritiden. ", [7] = "Samler pÃ¥ ölbrikker. ", [8] = "Liker Ã¥ stage-dive. ", [9] = "Morer seg med fjert-surfing. ", [10] = "Liker Ã¥ utvide elver. ", [11] = "Destillerer whisky. ", [12] = "Gjör-det-selv ekspert. ", [13] = "Liker franske kunstfilmer. ", [14] = "Spiller mye Theme Park. ", [15] = "Har sertifikat klasse C. ", [16] = "Deltar i motorsykkelrace. ", [17] = "Spiller klassisk fiolin og cello. ", [18] = "Entusiastisk tog-vraker. ", [19] = "Hundeelsker. ", [20] = "Hörer pÃ¥ radio. ", [21] = "Bader ofte. ", [22] = "Instruktör i bambusfletting. ", [23] = "Lager sÃ¥peholdere av grönnsaker. ", [24] = "Deltids minerydder. ", [25] = "Quizvert. ", [26] = "Samler pÃ¥ splinter fra 2.verdenskrig. ", [27] = "Liker Ã¥ ommöblere. ", [28] = "Hörer pÃ¥ rave og trip-hop musikk. ", [29] = "Dreper insekter med deodorantspray. ", [30] = "Piper ut dÃ¥rlige standupartiser. ", [31] = "Gjör innkjöp for sykehusrÃ¥det. ", [32] = "Hemmelighetsfull gartner. ", [33] = "Smugler falske klokker. ", [34] = "Vokalist i et rockeband. ", [35] = "Forguder tv-titting pÃ¥ dagtid. ", [36] = "Fisker etter örret. ", [37] = "Lurer turister pÃ¥ museum. ", }, bad = { [1] = "Langsom og masete. ", [2] = "Lat og lite motivert. ", [3] = "DÃ¥rlig trent og ubrukelig. ", [4] = "Dum og slitsom. Er en reserve. ", [5] = "Lav utholdenhet. Har en dÃ¥rlig holdning. ", [6] = "Döv som et papir. Lukter kÃ¥l. ", [7] = "Skitner til jobben. Tar lite ansvar. ", [8] = "Konsentrasjonsvansker og lett distrahert. ", [9] = "Stresset og gjör mye feil. ", [10] = "Lett antennelig. Sitter inne med mye hat. ", [11] = "Uforsiktig og uheldig. ", [12] = "Bryr seg ikke om jobben. Inaktiv. ", [13] = "Dumdristig og bryr seg lite. ", [14] = "Slu, utspekulert og baksnakker andre. ", [15] = "Arrogant og ovenpÃ¥. ", }, } -- Staff list staff_list = { morale = "MORAL", tiredness = "TRETTHET", skill = "FERDIGHETER", total_wages = "TOTAL LÖNN", } -- Objects object = { desk = "Kontorpult", cabinet = "Arkivskap", door = "Dör", bench = "Benk", table1 = "Bord", -- unused object chair = "Stol", drinks_machine = "Brusautomat", bed = "Seng", inflator = "Pumpe", pool_table = "Biljardbord", reception_desk = "Resepsjon", table2 = "Bord", -- unused object & duplicate cardio = "Kardio", scanner = "Skanner", console = "Konsoll", screen = "Skjerm", litter_bomb = "Söppelbombe", couch = "Sofa", sofa = "Sofa", crash_trolley = "Tralle", tv = "TV", ultrascanner = "Ultraskanner", dna_fixer = "DNA-fikser", cast_remover = "Gipsfjerner", hair_restorer = "HÃ¥rrenoverer", slicer = "Tungekutter", x_ray = "Röntgen", radiation_shield = "StrÃ¥lingsvern", x_ray_viewer = "Röntgenfremviser", operating_table = "Operasjonsbord", lamp = "Lampe", -- unused object toilet_sink = "Vask", op_sink1 = "Vask", op_sink2 = "Vask", surgeon_screen = "Forheng", lecture_chair = "Forelesningsstol", projector = "Prosjektor", bed2 = "Seng", -- unused duplicate pharmacy_cabinet = "Medisinskap", computer = "Datamaskin", atom_analyser = "Atomanalyser", blood_machine = "Blodmaskin", fire_extinguisher = "Brannslukningsapp.", radiator = "Radiator", plant = "Plante", electrolyser = "Elektrolysator", jelly_moulder = "Gelétönne", gates_of_hell = "Helvetesporten", bed3 = "Seng", -- unused duplicate bin = "Söppelbötte", toilet = "Toalett", swing_door1 = "Svingdör", swing_door2 = "Svingdör", shower = "Saneringsdusj", auto_autopsy = "Obdksjonsautomat", bookcase = "Bokhylle", video_game = "Videospill", entrance_left = "Inngang venstre dör", entrance_right = "Inngang höyre dör", skeleton = "Skjelett", comfortable_chair = "Komfortabel stol", } -- Place objects window place_objects_window = { drag_blueprint = "Juster blÃ¥kopien til du er fornöyd med störrelsen", place_door = "Velg hvor dören skal være", place_windows = "Lag noen vinduer om du vil. Bekreft nÃ¥r du er ferdig", place_objects = "Plasser gjenstandene. Bekreft nÃ¥r du er fornöyd", confirm_or_buy_objects = "Du kan ferdigstille rommet, evt. fortsette Ã¥ kjöpe eller flytte gjenstander", pick_up_object = "Klikk pÃ¥ gjenstander for Ã¥ plukke de opp, eller gjör et annet valg fra boksen", place_objects_in_corridor = "Plasser gjenstander i korridoren", } -- Competitor names competitor_names = { [1] = "ORAKEL", [2] = "HALL", [3] = "KOLOSS", [4] = "SLAMSUGER", [5] = "HELLIG", [6] = "DYPE TANKER", [7] = "ZEN", [8] = "LEO", [9] = "AKIRA", [10] = "SAM", [11] = "CHARLIE", [12] = "JANNE", [13] = "ARTUR", [14] = "MAGNUS", [15] = "MAMMA", [16] = "STEFAN", [17] = "MATS", [18] = "JONAS", [19] = "DANIEL", [20] = "OLIVIA", [21] = "NILS", [22] = "THOR", [23] = "RISK", [24] = "NIC", } -- Months months = { "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des", } -- Date format date_format.daymonth = "%1% %2:months%" -- Graphs graphs = { money_in = "Inntekter", money_out = "Utgifter", wages = "Lönninger", balance = "Balanse", visitors = "Besökende", cures = "Kurerte", deaths = "Dödsfall", reputation = "Omdömme", time_spans = { "1 Ã¥r", "12 Ã¥r", "48 Ã¥r", } } -- Transactions transactions = { --null = S[8][ 1], -- not needed wages = "Lönninger", hire_staff = "Ansett personale", buy_object = "Kjöp inv.", build_room = "Bygg rom", cure = "Kur", buy_land = "Kjöp omrÃ¥de", treat_colon = "Behandling:", final_treat_colon = "Siste behandling:", cure_colon = "Kurert:", deposit = "Behandlingsinnskudd", advance_colon = "Forskudd:", research = "Forskningskostnader", drinks = "Inntekt: Brusautomater", jukebox = "Inntekt: Jukebox", -- unused cheat = "Monopolpenger", heating = "Oppvarmingskostnader", insurance_colon = "Forsikring:", bank_loan = "BanklÃ¥n", loan_repayment = "Bankinnskudd", loan_interest = "LÃ¥nerente", research_bonus = "Forskningsbonus", drug_cost = "Medisinkostnader", overdraft = "Strafferente", severance = "Oppsigelseskostnader", general_bonus = "Bonus Generell", sell_object = "Salg inventar", personal_bonus = "Bonusutbetaling Personale", emergency_bonus = "Bonusutbetaling Nödstilfeller", vaccination = "Vaksinering", epidemy_coverup_fine = "Opprydningskostnader epidemiutbrudd", compensation = "Statlig erstatning", vip_award = "Pengepremier VIP", epidemy_fine = "Epidemiböter", eoy_bonus_penalty = "Ã…rsbonus/böter", eoy_trophy_bonus = "Ã…rets trofé bonus", machine_replacement = "Utskiftning av maskiner", } -- Level names level_names = { "Giftigby", "Soveby", "Storestad", "Frimpton-pÃ¥-Sjöen", "LettÃ¥ker", "Varberget", "Langtbort", "Halvestrad", "Austby", "Eggtorp", "Kvekkestad", "Snylteby", "Polartorp", "Lille Riseby", "Gravland", } -- Town map town_map = { chat = "Bykart Chat", for_sale = "Til salgs", not_for_sale = "Ikke til salgs", number = "Tomt nummer", owner = "Tomt eier", area = "Tomt omrÃ¥de", price = "Tomt pris", } -- Rooms short -- NB: includes some special "rooms" -- reception, destroyed room and "corridor objects" rooms_short = { reception = "Resepsjon", destroyed = "Ödelagt", corridor_objects = "Korridorgjenstander", gps_office = "Allmennpraksis", psychiatric = "Psykiatri", ward = "Sykestue", operating_theatre = "Operasjonssal", pharmacy = "Apotek", cardiogram = "Kardio", scanner = "Skanner", ultrascan = "Ultraskanner", blood_machine = "Blodmaskin", x_ray = "Röntgen", inflation = "Pumperom", dna_fixer = "DNA-klinikk", hair_restoration = "HÃ¥rklinikk", tongue_clinic = "Tungeklinikk", fracture_clinic = "Benbruddsklinikk", training_room = "Klasserom", electrolysis = "Elektrolyseklinikk", jelly_vat = "Gelétönne", staffroom = "Personalrom", -- rehabilitation = "Rehabilitering", -- unused general_diag = "Generell diagnose", research_room = "Forskningsavd.", toilets = "Toalett", decontamination = "Saneringsklinikk", } -- Rooms long rooms_long = { general = "Generell", -- unused? emergency = "Nödstilfelle", corridors = "Korridorer", gps_office = "Allmennpraksis", psychiatric = "Psykiatri", ward = "Sykestue", operating_theatre = "Operasjonssal", pharmacy = "Apotek", cardiogram = "Kardiorom", scanner = "Skannerrom", ultrascan = "Ultraskanner", blood_machine = "Blodmaskinrom", x_ray = "Röntgenrom", inflation = "Pumperom", dna_fixer = "DNA-klinikk", hair_restoration = "HÃ¥rklinikk", tongue_clinic = "Tungeklinikk", fracture_clinic = "Benbruddsklinikk", training_room = "Klasserom", electrolysis = "Elektrolyseklinikk", jelly_vat = "Gelétönnerom", staffroom = "Personalrom", -- rehabilitation = "Rehabiliteringsrom", -- unused general_diag = "Generell diagnose", research_room = "Forskningsavd.", toilets = "Toalett", decontamination = "Saneringsklinikk", } room_descriptions = { ultrascan = { [1] = "Ultraskanner//", [2] = "Ultraskanneren er virtuelt i toppklassen innenfor diagnoseutstyr. Den koster mye, men det lönner seg om du vil ha superb diagnostisering pÃ¥ ditt sykehus.//", [3] = "Ultraskanneren kan kun hÃ¥ndteres av ".. staff_class.doctor .."r. Den krever ogsÃ¥ vedlikehold. ", }, gp = { [1] = "Allmennpraksis//", [2] = "Dette er det fundamentale diagnoserommet pÃ¥ ditt sykehus. Nye pasienter blir sendt hit for Ã¥ finne ut hva som feiler dem. Videre blir de sendt enten til dypere diagnostisering eller til et rom hvor de kan fÃ¥ behandling for sine plager. Du trenger sannsynligvis flere Allmennpraksiser om det oppstÃ¥r lange köer. Jo större rommet er og jo mer utstyr du plasserer i rommet, desto bedre presterer Legen. Dette gjelder ogsÃ¥ for alle andre rom.//", [3] = "Allmennpraksisen kan kun hÃ¥ndteres av Leger. ", }, fracture_clinic = { [1] = "Benbruddsklinikk//", [2] = "Pasienter som uheldigvis har Benbrudd vil bli behandlet her. Gipsfjerneren bruker en kraftig industrilaser for Ã¥ kutte vekk gipsen, og forÃ¥rsaker bare litt smerte for pasienten.//", [3] = "Benbruddsklinikken kan kun hÃ¥ndteres av Sykepleiere. Den krever ogsÃ¥ vedlikehold. ", }, tv_room = { [1] = "TV ROOM NOT USED", }, inflation = { [1] = "Pumperom//", [2] = "Pasienter med sitt smertefulle, men dog humoristiske Ballonghode, mÃ¥ behandles pÃ¥ Pumperommet. Her blir hodet stukket hull pÃ¥, trykket forsvinner, og en Lege pumper hodet opp til riktig trykknivÃ¥.//", [3] = "Pumperommet kan kun hÃ¥ndteres av Leger. Regelmessig vedlikehold er ogsÃ¥ viktig. ", }, jelly_vat = { [1] = "Gelétönne//", [2] = "Pasienter med den snodige sykdommen gelésyndrom mÃ¥ skjelve seg fram til gelétönnerommet, for sÃ¥ Ã¥ bli plassert i gelétönnen. Dette vil kurere dem pÃ¥ en mÃ¥te som ikke er helt begripelig for det medisinske faget.//", [3] = "Gelétönnen kan kun hÃ¥ndteres av Leger. Det kreves ogsÃ¥ vedlikehold. ", }, scanner = { [1] = "Skanner//", [2] = "Pasienter fÃ¥r veldig nöyaktig diagnostisert sin sykdom ved bruk av den sofistikerte Skanneren. Deretter gÃ¥r de til Allmennpraksisen og snakker med en Lege for videre behandling.//", [3] = "Skanneren kan kun hÃ¥ndteres av Leger. Det kreves ogsÃ¥ vedlikehold. ", }, blood_machine = { [1] = "Blodmaskin//", [2] = "Blodmaskinen er et diagnoseverktöy som sjekker alle cellene i pasientens blod for Ã¥ finne ut hva som feiler dem.//", [3] = "Blodmaskinen kan kun hÃ¥ndteres av Leger. Det kreves ogsÃ¥ vedlikehold. ", }, pharmacy = { [1] = "Apotek//", [2] = "Pasienter som har blitt diagnostisert og trenger behandling av et medikament mÃ¥ besöke Apoteket for Ã¥ fÃ¥ medisinen sin. Ettersom fler og fler medisinkurer er forsket pÃ¥ og blir tilgjengelige, blir dette rommet stadig travlere. Du önsker kanskje Ã¥ bygge et nytt Apotek senere.//", [3] = "Apoteket kan kun hÃ¥ndteres av Sykepleiere. ", }, cardiogram = { [1] = "Kardiorom//", [2] = "Pasienter blir undersökt og diagnostisert her, för de gÃ¥r tilbake til Allmennpraksisen for Ã¥ fÃ¥ utpekt en kur.//", [3] = "Kardiorommet kan kun hÃ¥ndteres av Leger. Det kreves ogsÃ¥ vedlikehold. ", }, ward = { [1] = "Sykestue//", [2] = "Pasientene blir lagt inn her for observasjon av en Sykepleier mens de diagnostiseres. De forblir her til de er klare for Ã¥ legges under kniven pÃ¥ Operasjonssalen.//", [3] = "Sengeavdelingen kan kun hÃ¥ndteres av Sykepleiere. ", }, psych = { [1] = "Psykiatri//", [2] = "Pasienter diagnostisert med psykiske lidelser mÃ¥ gÃ¥ til Psykiatrien for Ã¥ fÃ¥ rÃ¥dgivning. Psykiatrene kan kjöre diagnose for Ã¥ finne ut hva slags type sykdom pasientene lider av, og hvis mental opprinnelse, sÃ¥ behandle dem ved Ã¥ benytte den trygge sofaen.//", [3] = "Psykiatrien kan kun hÃ¥ndteres av kvalifisert Psykiater. ", }, staff_room = { [1] = "Personalrom//", [2] = "De ansatte blir slitne etter hvert som de utförer pliktene sine. De trenger dette rommet for Ã¥ slappe av og heve humöret. Om de ansatte er slitne, sÃ¥ blir de tregere, krever mer lönn og vil til slutt si opp. De gjör ogsÃ¥ flere feilgrep. Ã… bygge et Personalrom med masse aktiviteter for dem er vel anvendte penger. Pass pÃ¥ at det er plass til flere ansatte pÃ¥ en gang. ", }, operating_theatre = { [1] = "Operasjonssal//", [2] = "Denne viktige installasjonen er der en rekke forhold blir behandlet. Operasjonssalen mÃ¥ være av en god störrelse, og mÃ¥ fylles med riktig utstyr. Det er en viktig del av sykehuset.//", [3] = "Operasjonssalen kan kun hÃ¥ndteres av to Kvalifiserte Kirurger. ", }, training = { [1] = "Klasserom//", [2] = "Turnuslegene og Doktorene dine kan fÃ¥, verdifulle, ekstra kvalifikasjoner ved Ã¥ studere i dette rommet. En Konsulent med Kirurgi-, Forsker- eller Psykiatri-fordypning vil lære bort dette til de Legene som sitter i rommet. Leger som allerede har disse ferdighetene vil bli enda flinkere mens de er her.//", [3] = "Klasserommet kan kun hÃ¥ndteres av en Konsulent. ", }, dna_fixer = { [1] = "DNA-klinikk//", [2] = "Pasienter som har befattet seg med romvesener fra en annen verden mÃ¥ fÃ¥ DNA-et sitt byttet ut i dette rommet. DNA-fikseren er en veldig kompleks maskin, og det ville være fornuftig Ã¥ holde et brannslukningsapparat i nærheten av den, bare i tilfelle.//", [3] = "DNA-fikseren kan kun hÃ¥ndteres av en kvalifisert Forsker. Den behöver periodisk vedlikehold av en Vaktmester. ", }, research = { [1] = "Forskningsavdeling//", [2] = "Nye medikamenter og kurer blir funnet opp og forbedret i Forskningsavdelingen. Det er en vital del av sykehuset ditt, og vil gjöre underverker for kureringsstatistikken din.//", [3] = "Forskningsavdelingen kan kun hÃ¥ndteres av en kvalifisert Forsker. ", }, hair_restoration = { [1] = "HÃ¥rklinikk//", [2] = "Pasienter som lider av ekstreme tilfeller av Flintskallethet mÃ¥ henvende seg til HÃ¥rrenoveringsmaskinen i denne klinikken. En Lege vil operere maskinen, og den vil sette avleggere i pasientens hode som raskt blir til nytt hÃ¥r.//", [3] = "HÃ¥rklinikken kan kun hÃ¥ndteres av Leger. Det kreves ogsÃ¥ periodisk vedlikehold. ", }, general_diag = { [1] = "Generell Diagnose//", [2] = "Pasienter som trenger videre diagnose blir sendt hit for undersökelse. Om Allmennpraksisen ikke finner ut hva som feiler dem, sÃ¥ vil Generell Diagnose ofte finne det ut. Herfra vil de bli sendt tilbake til Allmennpraksisen for analyse av resultatet.//", [3] = "Generell Diagnose kan kun hÃ¥ndteres av Leger. ", }, electrolysis = { [1] = "Elektrolyseklinikk//", [2] = "Pasienter med Pelssyndrom blir sendt hit, hvor en spesialmaskin brenner av hÃ¥ret og forsegler porene elektrisk med en sammensetning som ikke er ulik fugemasse.//", [3] = "Elektrolyseklinikken kan kun hÃ¥ndteres av Leger. Den behöver vedlikehold av en Vaktmester. ", }, slack_tongue = { [1] = "Tungeklinikk//", [2] = "Pasienter som blir diagnostisert med Lös tunge fra Allmennpraksisen, vil bli sendt til denne klinikken for behandling. Legen bruker en höyteknologisk maskin som forlenger tungen og kutter den av, dermed bringes pasienten tilbake til normal, god helse.//", [3] = "Tungekutteren kan kun hÃ¥ndteres av Leger. Det kreves ogsÃ¥ vedlikehold nok sÃ¥ ofte. ", }, toilets = { [1] = "Toalett//", [2] = "Pasienter som föler at naturen kaller, mÃ¥ gÃ¥ og lette pÃ¥ trykket i dine behagelige toalettfasiliteter. Du kan bygge ekstra toalettbÃ¥ser og vasker om du forventer mange besökende. I noen tilfeller bör du kanskje vurdere Ã¥ bygge flere Toaletter andre steder i sykehuset. ", }, no_room = { [1] = "", }, x_ray = { [1] = "Röntgenrom//", [2] = "Röntgenmaskinen fotograferer pasientenes innside ved bruk av spesiell strÃ¥ling for Ã¥ gi en god indikasjon pÃ¥ hva som er galt med dem.//", [3] = "Röntgenmaskinen kan kun hÃ¥ndteres av Leger. Det kreves ogsÃ¥ vedlikehold. ", }, decontamination = { [1] = "Saneringsklinikk//", [2] = "Pasienter som har blitt utsatt for StrÃ¥ling blir fort henvist til Saneringsklinikken. Dette rommet inneholder en dusj som skyller av dem all den vemmelige Radioaktiviteten og skitt.//", [3] = "Saneringsdusjen kan kun hÃ¥ndteres av Leger. Den behöver vedlikehold av en Vaktmester. ", }, } -- Drug companies drug_companies = { "Medisiner-For-Deg", "Kur R Oss", "Runde SmÃ¥ Piller Co.", "Dyremedisin AS", "Alle Piller Co.", } -- Build rooms build_room_window = { pick_department = "Velg avdeling", pick_room_type = "Velg romtype", cost = "Pris: ", } -- Build objects buy_objects_window = { choose_items = "Velg gjenstander", price = "Pris:", total = "Sum:", } -- Research research = { categories = { cure = "Behandlingsutstyr", diagnosis = "Diagnoseutstyr", drugs = "Medisinforskning", improvements = "Forbedringer", specialisation = "Spesialisering", }, funds_allocation = "Tildelt fondmiddel", allocated_amount = "Tildelt belöp", } -- Research policy tooltip tooltip.research_policy = { research_progress = "Progresjon mot den nesten oppdagelsen i denne kategorien: %1%/%2%", no_research = "Ingen forskning blir utfört i denne kategorien for öyeblikket", } -- Policy screen policy = { header = "SYKEHUSPOLICY", diag_procedure = "diagnoserutiner", diag_termination = "diagnostisering", staff_rest = "pauserutiner", staff_leave_rooms = "forlate rom", sliders = { guess = "GJETT KUR", -- belongs to diag_procedure send_home = "SEND HJEM", -- also belongs to diag_procedure stop = "AVBRYT PROSESS", -- belongs to diag_termination staff_room = "TIL PERSONALROM", -- belongs to staff_rest } } -- Rooms room_classes = { -- S[19][2] -- "corridors" - unused for now diagnosis = "Diagnose", treatment = "Behandling", clinics = "Klinikker", facilities = "Fasiliteter", } -- Insurance companies insurance_companies = { out_of_business = "IKKE I DRIFT", "Nykjöpt Lök", "Böljan BlÃ¥", "Ã…rlige Forskudd AS", "Stygge Arr Co.", "Svömmeblære Co.", "Dönn Ærlig AS", "Sverres Beholdninger", "Kate Pus Og Kompani", "Larsen Jr. Forsikring", "Glade Forsikringer AS", "Mafia Forsikringer", } -- Menu root -- Keep 2 spaces as prefix and suffix menu = { file = " FIL ", options = " INNSTILLINGER ", display = " VIS ", charts = " OVERSIKTER ", player_count = "SPILLERANTALL", -- In map editor debug = " DEBUG ", } -- Menu File menu_file = { load = " LAST INN ", save = " LAGRE ", restart = " START PÃ… NYTT ", quit = " AVSLUTT ", } menu_player_count = { -- In map editor players_1 = " 1 SPILLER ", players_2 = " 2 SPILLERE ", players_3 = " 3 SPILLERE ", players_4 = " 4 SPILLERE ", } menu_file_load = { [1] = " SPILL 1 ", [2] = " SPILL 2 ", [3] = " SPILL 3 ", [4] = " SPILL 4 ", [5] = " SPILL 5 ", [6] = " SPILL 6 ", [7] = " SPILL 7 ", [8] = " SPILL 8 ", } menu_file_save = { [1] = " SPILL 1 ", [2] = " SPILL 2 ", [3] = " SPILL 3 ", [4] = " SPILL 4 ", [5] = " SPILL 5 ", [6] = " SPILL 6 ", [7] = " SPILL 7 ", [8] = " SPILL 8 ", } -- Menu Options menu_options = { sound = " LYD ", announcements = " SPEAKER ", music = " MUSIKK ", sound_vol = " LYDVOLUM ", announcements_vol = " SPEAKERVOLUM ", music_vol = " MUSIKKVOLUM ", autosave = " AUTOLAGRING ", game_speed = " SPILLHASTIGHET ", jukebox = " JUKEBOX ", twentyfour_hour_clock = " 24 TIMERS KLOKKE ", wage_increase = " LÖNNSBEGJÆRINGER", --todo: annet ord? "wage requests" } menu_options_wage_increase = { deny = " AVSLÃ… ", grant = " GODKJENN ", } -- Menu Options Volume menu_options_volume = { [10] = " 10% ", [20] = " 20% ", [30] = " 30% ", [40] = " 40% ", [50] = " 50% ", [60] = " 60% ", [70] = " 70% ", [80] = " 80% ", [90] = " 90% ", [100] = " 100% ", } -- Menu Options Game Speed menu_options_game_speed = { slowest = " TREGEST ", slower = " TREGERE ", normal = " NORMAL ", max_speed = " MAKSIMAL HASTIGHET ", and_then_some_more = " ENDA LITT RASKERE ", } -- Menu Options Warmth Colours menu_options_warmth_colors = { choice_1 = " RÖD ", choice_2 = " BLÃ… GRÖNN RÖD ", choice_3 = " GUL ORANGE RÖD ", } -- Menu Display menu_display = { high_res = " HÖY OPPLÖSNING ", mcga_lo_res = " MCGA LAV OPPL. ", shadows = " SKYGGER ", } -- Menu Charts menu_charts = { statement = " KONTOUTSKRIFT ", casebook = " MEDISINBOK ", policy = " SYKEHUSPOLICY ", research = " FORSKNING ", graphs = " DIAGRAMMER ", staff_listing = " PERSONALBEHANDLING ", bank_manager = " BANKMANAGER ", status = " STATUS ", briefing = " BRIEFING ", town_map = " BYKART (F4) ", } -- Menu Debug menu_debug = { object_cells = " OBJEKTCELLER ", entry_cells = " INNGANGSCELLER ", keep_clear_cells = " KEEP-CLEAR CELLER ", nav_bits = " NAV BITS ", remove_walls = " FJERN VEGGER ", remove_objects = " FJERN GJENSTANDERER ", display_pager = " VIS PAGER ", mapwho_checking = " MAPWHO SJEKK ", plant_pagers = " PLANT PAGERS ", porter_pagers = " PORTER PAGERS ", pixbuf_cells = " PIXBUE CELLS ", enter_nav_debug = " SKRIV INN NAV DEBUG ", show_nav_cells = " VIS NAV CELLS ", machine_pagers = " MASKIN PAGERS ", display_room_status = " VIS ROMSTATUS ", display_big_cells = " VIS STORE CELLER ", show_help_hotspot = " VIS HJELP HOTSPOTS ", win_game_anim = " VINN SPILL ANIM ", win_level_anim = " VINN BANE ANIM ", debug_script = " (SHIFT + D) KJÖR DEBUG SCRIPT ", connect_debugger = " (CTRL + C) KOBLE TIL LUA DEBUG SERVER ", lose_game_anim = { [1] = " TAPT SPILL 1 ANIM ", [2] = " TAPT SPILL 2 ANIM ", [3] = " TAPT SPILL 3 ANIM ", [4] = " TAPT SPILL 4 ANIM ", [5] = " TAPT SPILL 5 ANIM ", [6] = " TAPT SPILL 6 ANIM ", [7] = " TAPT SPILL 7 ANIM ", }, } debug_patient_window = { caption = "Testpasient", } -- High score screen high_score = { pos = "POS", player = "SPILLER", score = "POENG", best_scores = "HALL OF FAME", worst_scores = "HALL OF SHAME", killed = "Drepte", -- is this used? categories = { money = "RIKEST", salary = "HÖYESTE LÖNN", clean = "RENSLIGHET", cures = "ANTALL KURERT", deaths = "ANTALL DÖDSFALL", cure_death_ratio = "ANTALL BEHANDLINGSDÖDSFALL", patient_happiness = "TILFREDSTILLHET PASIENTER", staff_happiness = "TILFREDSTILLHET PERSONALE", staff_number = "MEST PERSONALE", visitors = "FLEST PASIENTER", total_value = "TOTAL VERDI", }, } -- Trophy room trophy_room = { reputation = "OMDÖMME", cash = "KONTANTER", wait_times = { award = { [1] = "Gratulerer. Sykehuset ditt har lav kötid i lang tid. Dette er en viktig pris.", --todo: skal det brukes ordet "pris"? }, penalty = { [1] = "Pasienter i sykehuset ditt mÃ¥ stÃ¥ for lenge i kö. Det er alltid uakseptabelt lange köer. Du kunne behandlet pasientene dine mer effektivt, om du bare hadde gÃ¥tt inn for det.", }, }, pop_percentage = { awards = { [1] = "Legg merke til at du har fÃ¥tt en höy andel av byen befolkning til ditt sykehus det siste Ã¥ret. Bra gjort", [2] = "Gratulerer. En höyere andel av lokalbefolkningen besöker sykehuset ditt enn noen andre institusjoner.", [3] = "StrÃ¥lende. Du har lokket mer av befolkningen inn ditt sykehus enn det som har besökt alle de andre sykehusene til sammen.", }, penalty = { [1] = "Merk deg at du fikk en höy andel av byen befolkningen til sykehuset ditt det siste Ã¥ret. Godt gjort.", [2] = "Gratulerer. En höyere andel av lokalbefolkningen besöker sykehuset ditt enn noen av de andre institusjonene.", }, }, many_cured = { awards = { [1] = "Gratulerer med Marie Curie Prisen for Ã¥ ha klart Ã¥ kurere nesten alle pasientene pÃ¥ sykehuset ditt i fjor.", [2] = "Gratulerer med Ã¥ ha kurert mengder av pasienter det siste Ã¥ret. Mange mennesker föler seg mye bedre pÃ¥ grunn av ditt arbeid.", }, trophies = { [1] = "Den Internasjonale Behandlingsstiftelsen önsker Ã¥ ære deg fordi du kurerte en haug med mennesker pÃ¥ sykehuset ditt i fjor. De gir deg derfor Kurert-En-Haug Trofeet.", [2] = "Du er blitt tildelt Ingen-Syke-Gurglere troféet for Ã¥ ha kurert en stor prosent av pasientene pÃ¥ sykehuset ditt i fjor.", [3] = "Du er blitt tildelt Ingen-Syke-Gurglere troféet for Ã¥ ha kurert en stor prosent av pasientene pÃ¥ sykehuset ditt i fjor.", --todo: Denne er overflödig (dobbelt opp), men debug-strings-diff.txt insisterer pÃ¥ at denne linjen skal være her. }, penalty = { [1] = "Ditt sykehus klarer ikke Ã¥ gi effektive botemidler til pasienter som trenger det. Konsentrer deg om dine kurer for Ã¥ gjöre dem mer effektive.", [2] = "Ditt sykehus er mindre effektivt ved kurering av pasienter enn noen annen. Du har sviktet departementet og du har sviktet deg selv. Vi sier ikke mer.", }, regional = { [1] = "Du er herved tildelt Den-Ultimate-Kur-prisen for Ã¥ ha kurert flere mennesker enn alle de andre sykehusene til sammen.", }, }, research = { regional_good = { [1] = "Din forskning har holdt ditt sykehus à jour med den siste utviklingen. Ditt forskningspersonale fortjener denne prisen. Godt gjort.", }, regional_bad = { [1] = "Alle andre sykehus i regionen er bedre pÃ¥ forskning enn deg. Forskning bör være en avgjörende del av sykehuset ditt. Departementet er rasende.", }, penalty = { [1] = "Du har vært dÃ¥rlig pÃ¥ Ã¥ forske pÃ¥ nye kurer, utstyr og legemidler. Dette er svært dÃ¥rlig. Teknologisk utvikling er viktig.", }, awards = { [1] = "Din forskning har holdt ditt sykehus à jour med den siste utviklingen. Ditt forskningspersonale fortjener denne prisen. Godt gjort.", [2] = "I löpet av det siste Ã¥ret, har du forsket pÃ¥ flere legemidler og utstyr enn noen kunne ha hÃ¥pet pÃ¥. Vennligst godta denne prisen fra alle oss i departementet.", }, }, gen_repairs = { awards = { [1] = "Du er tildelt en spesiell premie for dine Vaktmesteres evne til Ã¥ holde sykehusets maskiner velholdt. Godt gjort. Ta en ferie.", [2] = "Dine Vaktmestere har gjort det bedre enn noen andre sykehus. Dette er en stor prestasjon for deg.", [3] = "Dine maskiner er praktfullt vedlikeholdt. Dedikasjonen til dine Vaktmestere er ekstraordinær. Dere fortjener denne utmerkelsen. StrÃ¥lende arbeid.", }, penalty = { [1] = "Vaktmesterne har ikke vedlikeholdt dine maskiner godt. Du bör kontrollere dem mer nöye, eller ansette flere til Ã¥ hÃ¥ndtere arbeidsmengden.", [2] = "Du har gjort et dÃ¥rlig vedlikehold. Vaktmesterne bör se til utstyret straks.", }, }, curesvdeaths = { awards = { [1] = "Solide gratulasjoner pÃ¥ Ã¥ oppnÃ¥ et imponerende kurerte kontra dödsfall-forhold pÃ¥ sykehuset det siste Ã¥ret.", }, penalty = { [1] = "Din andel av kurerte-vs-dödsfall-forhold er ekstremt dÃ¥rlig. Du bör sörge for at du kurerer mange flere mennesker enn du lot dö. Ikke svikt oss.", }, }, emergencies = { regional_good = { [1] = "Departementet erkjenner at sykehuset hÃ¥ndterte kriser bedre enn noen andre sykehus i fjor og gir deg denne prisen.", }, regional_bad = { [1] = "Ditt sykehus er det verste i regionen til Ã¥ hÃ¥ndtere kriser. Det er din skyld at du blir liggende nederst i den lokale akuttbehandlingsligaen.", }, penalty = { [1] = "Du har vært dÃ¥rlig til Ã¥ hÃ¥ndtere kriser. Innkommende beredskap pasientene fortjener rask og nöyaktig oppmerksomhet, som du har unnlatt Ã¥ gi.", }, award = { [1] = "Gratulerer: din effektive hÃ¥ndtering av kriser har gjort deg fortjent til denne spesielle prisen. Godt arbeid.", [2] = "Din hÃ¥ndtering av kriser er eksepsjonell. Denne prisen er for Ã¥ være den absolutt beste pÃ¥ Ã¥ hÃ¥ndtere stor tilströmning av syke og lidende.", }, }, cleanliness = { award = { [1] = "Inspektörer gjör oppmerksom pÃ¥ at sykehuset er veldig rent. Rene sykehus er trygge sykehus. Hold oppe det gode arbeidet.", }, regional_good ={ [1] = "Ditt sykehus har blitt bemerket som en av de minst rene i omrÃ¥det. Et skitten sykehus er stinkende og farlig. Du bör sette mer oppmerksomhet pÃ¥ Ã¥ fjerne rot.", }, regional_bad = { [1] = "Ditt sykehus er det skitneste i regionen. Alle andre har klart Ã¥ beholde sine korridorer renere. Du er en skam for den medisinske profesjon.", }, }, happy_patients = { awards ={ [1] = "Du kan være selvtilfreds om det faktum at folk i sykehuset har vært svært fornöyde i löpet av det siste Ã¥ret.", [2] = "Personer som besöker sykehuset ditt var gjennomsnittlig lykkeligere under deres behandling hos deg enn pÃ¥ noe annet sykehus i spillet.", }, penalty = { [1] = "Folk som kommer til sykehuset ditt synes opplevelsen er elendig. Du mÃ¥ gjöre det mye bedre hvis du önsker Ã¥ fÃ¥ respekt av departementet.", [2] = "Folk som fÃ¥r behandling pÃ¥ sykehuset ditt var svært misfornöyd med tilstanden der. Du bör sette mer fokus pÃ¥ pasientenes velferd.", }, }, consistant_rep = { trophies = { [1] = "Du er herved tildelt statsrÃ¥dens pris for de mest plettfrie standarder og höyest mulig omdömme i Ã¥r. Bra gjort.", [2] = "Gratulerer. Du mottar GnukkiRen-Troféet for sykehuset med best omdömme det siste Ã¥ret. Vel fortjent er det ogsÃ¥.", }, }, all_cured = { awards = { "Gratulerer med Marie Curie Prisen for Ã¥ ha klart Ã¥ kurere alle pasienter pÃ¥ sykehuset ditt i fjor.", }, trophies = { "Den Internasjonale Behandlingsstiftelsen önsker Ã¥ ære deg fordi du kurerte alle pasienter pÃ¥ sykehuset ditt i fjor. De gir deg derfor Kurert-Alle Trofeet.", "Du er blitt tildelt Ingen-Syke-Gurglere Trofeet for Ã¥ ha kurert alle pasienter pÃ¥ sykehuset ditt i fjor.", }, }, high_rep = { awards = { [1] = "Du er herved tildelt statsministerens Glitrende Sykehusstandard Pris, som tildeles sykehuset med best omdömme i fjor. Flott!", [2] = "Vær snill Ã¥ ta imot Bullfrog-prisen som tildeles sykehuset med best omdömme i fjor. Nyt det - det er vel fortjent!", }, penalty = { [1] = "Man skal være veldig disiplinert for Ã¥ klare Ã¥ opprettholde et sÃ¥ dÃ¥rlig rykte gjennom hele det siste Ã¥ret. Sörg for at det forbedrer i fremtiden.", [2] = "Ditt Sykehus sitt omdömme er det verste i omrÃ¥det. Du er en skam. Gjör det bedre eller fÃ¥ deg en annen jobb.", }, regional = { [1] = "Vennligst godta Bullfrog-prisen for det höyeste omdömmet det siste Ã¥ret. Nyt det - du har fortjent det.", [2] = "I Ã¥r har ditt sykehus sitt omdömme overgÃ¥tt alle de andre sykehusene til sammen. En stor prestasjon.", }, }, happy_staff = { awards = { [1] = "De ansatte gir deg denne prisen. De sier det er rom for forbedringer, men behandlingen av dem var generelt god.", [2] = "De ansatte er sÃ¥ glad Ã¥ arbeide for deg at kan de ikke holde smilet borte fra ansiktene sine. Du er en ypperlig sjef.", }, trophies = { "Du er tildelt Smilefjes Trofeet for Ã¥ holde ditt hardt-arbeidende personale sÃ¥ blid og fornöyd som mulig.", "Instituttet for Humörspredere berömmer deg for at du ikke hadde noen sure og sinte ansatte pÃ¥ sykehuset ditt i fjor, og gir deg derfor dette trofeet.", "Dette troféet, StrÃ¥le Mer Begeret, er herved tildelt deg for Ã¥ ha klart Ã¥ holde alt personell blid og fornöyd, tross en iherdig arbeidsinnsats i fjor. Dine ansatte strÃ¥ler!", }, penalty = { [1] = "De ansatte önsker det skal bli kjent at de er svært misfornöyde. Gode ansatte er en ressurs. Gjör dine lykkeligere, ellers vil du miste dem en dag.", }, regional_good = { [1] = "De ansatte er lykkeligere enn pÃ¥ noe annet sykehus. Glade ansatte betyr mer overskudd og mindre död. Departementet er fornöyd.", }, regional_bad = { [1] = "De ansatte har alle vært veldig sure det siste Ã¥ret. Du burde ha lagt merke til at alle andre sykehus har lykkeligere personalet enn deg.", }, }, happy_vips = { trophies = { [1] = "Du har vunnet Nobelprisen for Mest Imponerte VIP-er. Alle som besökte sykehuset i fjor var svært komplimenterende.", [2] = "ByrÃ¥et for Kjente Personer vil belönne deg med Kjendistroféet for Ã¥ ha tatt godt vare pÃ¥ alle VIP-er som besökte institusjonen din i fjor. Du nærmer deg kjendis-status, nesten en av oss.", [3] = "Gratulerer med VIP-prisen for Ã¥ ha gjort livene til hardtarbeidende kjendiser bedre, ved Ã¥ sette alle som besökte sykehuset ditt i fjor i et bedre lys. Fantastisk.", }, }, no_deaths = { awards = { [1] = "Du har vunnet Leve Lenge-troféet for Ã¥ holde 100 prosent av pasientene levende i hele fjor.", [2] = "Du har fÃ¥tt denne prisen til minne om lavt antall dödsfall pÃ¥ ditt sykehus dette Ã¥ret. Dette er flott.", }, trophies = { [1] = "Livet GÃ¥r Videre Stiftelsen belönner deg med dette trofeet for Ã¥ ha oppnÃ¥dd null dödsfall i hele fjor.", [2] = "Du er tildelt Holde Seg I Live-troféet for Ã¥ ha unngÃ¥tt dödsfall pÃ¥ ditt flotte sykehus dette Ã¥ret. Storartet.", [3] = "Du er tildelt Holde Seg I Live-troféet for Ã¥ ha unngÃ¥tt dödsfall pÃ¥ ditt flotte sykehus dette Ã¥ret. Storartet.", --todo: Denne er overflödig (dobbelt opp), men debug-strings-diff.txt insisterer pÃ¥ at denne linjen skal være her. }, penalty = { [1] = "Antallet dödsfall i sykehuset ditt i fjor var uakseptabelt höyt. Gi mer oppmerksomhet til ditt arbeid. Vær sikker pÃ¥ at flere mennesker overlever i fremtiden.", [2] = "Ditt sykehus er en risiko for pasientenes helse. Du forventes Ã¥ kurere mange mennesker, ikke la dem dö.", }, regional = { [1] = "Dödstallene i ditt sykehus i fjor var lavere enn noen andre sykehus. Vennligst godta denne prisen.", }, }, rats_killed = { awards = { }, trophies = { "Du er tildelt Null Uhyrer Trofeet for Ã¥ ha skutt %d rotter pÃ¥ sykehuset ditt i löpet av fjorÃ¥ret.", -- %d (number of rats) "Du mottar dette trofeet fra Organisasjonen Mot Rotter og Mus, pga. dine unike rotteskytende evner. Du drepte %d dyr i fjor.", -- %d (number of rats) "Du mottar Rotteskytter Trofeet for Ã¥ ha vist unike evner i utryddelsen av %d rotter pÃ¥ sykehuset ditt i fjor.", -- %d (number of rats) }, }, rats_accuracy = { awards = { }, trophies = { "Du er tildelt Nöyaktige Skudd I HÃ¥plös Krig Trofeet for Ã¥ ha en treffprosent pÃ¥ %d%% i jakten pÃ¥ ekle rotter.", -- %d (accuracy percentage) "Dette trofeet er for Ã¥ berömme din nöyaktighet ved Ã¥ drepe %d%% av rottene du sköyt pÃ¥ i fjor.", -- %d (accuracy percentage) "For Ã¥ hedre prestasjonen det er Ã¥ drepe %d%% av alle rottene pÃ¥ sykehuset ditt, blir du tildelt Dungeon Keepers Skadedyrfrie Trofe, gRATulerer!", -- %d (accuracy percentage) }, }, healthy_plants = { awards = { "Gratulerer med Voks-Videre prisen for Ã¥ ha holdt plantene dine ekstremt friske i hele Ã¥r.", }, trophies = { "Venner Av Potteplanter önsker Ã¥ gi deg Grönn Helse Trofeet, for Ã¥ ha tatt godt vare pÃ¥ plantene dine de siste tolv mÃ¥neder.", "Foreningen For Grönne Gamlinger önsker Ã¥ gi deg Grönnfinger Trofeet for Ã¥ ha holdt plantene dine friske i hele fjor.", }, }, hosp_value = { awards = { [1] = "Helsedepartementet vil gjerne benytte anledningen til Ã¥ gratulere deg med den imponerende samlede verdien av sykehuset ditt.", }, penalty = { [1] = "Ditt sykehus har unnlatt Ã¥ oppnÃ¥ en anstendig verdi. Du har gjort dÃ¥rlige pengebeslutninger. Husk at et godt sykehus ogsÃ¥ er et kostbart sykehus.", }, regional = { [1] = "Du er en fremgangsrik ung forretningsmann. Ditt sykehus er mer verdifullt enn alle de andre sykehusene i omrÃ¥det til sammen.", }, }, best_value_hosp = { trophies = { [1] = "Gratulerer. Du mottar GnukkiRen-Troféet for sykehuset med best omdömme det siste Ã¥ret. Vel fortjent er det ogsÃ¥.", }, penalty = { [1] = "Hvert sykehus i næromrÃ¥det er verdt mer enn ditt. Gjör noe med denne skammelige situasjonen. FÃ¥ inn noen dyrere ting!", }, regional = { [1] = "Gratulerer med Ã¥ ha det mest verdifulle sykehuset i spillet. Godt arbeid. Pröv Ã¥ holde det slik.", }, }, sold_drinks = { awards = { }, trophies = { "Foreningen for Globale Tannleger er stolt over Ã¥ kunne gi deg dette trofeet for Ã¥ ha solgt store menger brus pÃ¥ sykehuset ditt i fjor.", "Sykehuset ditt er blitt tildelt Sprudlende-Begjær Trofeet for antall leskedrikker som ble solgt pÃ¥ sykehuset ditt i fjor.", "PÃ¥ vegne av DK Fyllinger Co., tildeles du herved dette trofeet dekket av sjokolade, for Ã¥ ha solgt enorme mengder leskedrikker pÃ¥ sykehuset ditt forrige Ã¥r.", }, }, } -- Casebook screen casebook = { reputation = "omdömme", treatment_charge = "behandlingspris", earned_money = "totale inntekter", cured = "behandlet", deaths = "dödsfall", sent_home = "sendt hjem", research = "konsentrer forskning", cure = "kur", cure_desc = { build_room = "Jeg anbefaler deg Ã¥ bygge %s", -- %s (room name) build_ward = "Du trenger fremdeles en Sykestue.", hire_doctors = "Du mÃ¥ ansette noen Leger.", hire_surgeons = "Du mÃ¥ ansette Kirurger.", hire_psychiatrists = "Du mÃ¥ ansette Psykiatere.", hire_nurses = "Du mÃ¥ ansette Sykepleiere.", no_cure_known = "Ingen kjente kurer.", cure_known = "Kur.", improve_cure = "Forbedre kur", }, } -- Tooltips tooltip = { -- Build room window build_room_window = { room_classes = { diagnosis = "Velg diagnoserom", treatment = "Velg generelle behandlingsrom", clinic = "Velg spesielle klinikker", facilities = "Velg fasiliteter", }, cost = "Kostnad for gjeldende rom", close = "Avbryt prosessen og returner til spillet", }, -- Toolbar toolbar = { bank_button = "Venstreklikk for Bankmanager, höyreklikk for Kontoutskrift", balance = "Din Balanse", reputation = "Ditt omdömme: ", -- NB: no %d! Append " ([reputation])". date = "Dato", rooms = "Bygg rom", objects = "Kjöp gjenstander", edit = "Endre rom/gjenstander", hire = "Ansett personale", staff_list = "Personalbehandling", town_map = "OmrÃ¥dekart", casebook = "Medisinbok", research = "Forskning", status = "Status", charts = "Diagrammer", policy = "Sykehuspolicy", }, -- Hire staff window hire_staff_window = { doctors = "Vis Leger tilgjengelig pÃ¥ arbeidsmarkedet", nurses = "Vis Sykepleiere tilgjengelig pÃ¥ arbeidsmarkedet", handymen = "Vis Vaktmestere tilgjengelig pÃ¥ arbeidsmarkedet", receptionists = "Vis Resepsjonister tilgjengelig pÃ¥ arbeidsmarkedet", prev_person = "Vis forrige person", next_person = "Vis neste person", hire = "Ansett person", cancel = "Avbryt", doctor_seniority = "Legens erfaring (Turnuslege, Doktor, Konsulent)", staff_ability = "Evner", salary = "Lönnskrav", qualifications = "Legens spesialisering", surgeon = "Kirurg", psychiatrist = "Psykiater", researcher = "Forsker", }, -- Buy objects window buy_objects_window = { price = "Pris pÃ¥ gjenstand", total_value = "Total verdi pÃ¥ kjöpte gjenstander", confirm = "Kjöp gjenstand(er)", cancel = "Avbryt", increase = "Kjöp en til av denne gjenstanden", decrease = "Kjöp en mindre av denne gjenstanden", }, -- Staff list staff_list = { doctors = "Se en oversikt over dine Leger", nurses = "Se en oversikt over dine Sykepleiere", handymen = "Se en oversikt over dine Vaktmestere", receptionists = "Se en oversikt over dine Resepsjonister", happiness = "Viser hvordan humöret pÃ¥ dine ansatte er", tiredness = "Viser hvor trött dine ansatte er", ability = "Viser evnene til dine ansatte", salary = "Den enkeltes gjeldende lönn", happiness_2 = "Den ansattes moral", tiredness_2 = "Den ansattes tretthetsnivÃ¥", ability_2 = "Den ansattes evner", prev_person = "Velg forrige side", next_person = "Velg neste side", bonus = "Gi denne ansatte 10% bonus", sack = "Si opp denne ansatte", pay_rise = "Hev lönnen til denne ansatte med 10%", close = "Lukk og returner til spillet", doctor_seniority = "Legens erfaring", detail = "Oppmerksom pÃ¥ detaljer", view_staff = "Vis ansatt pÃ¥ jobb", surgeon = "Kvalifisert Kirurg", psychiatrist = "Kvalifisert Psykiater", researcher = "Kvalifisert Forsker", surgeon_train = "%d%% ferdig med fordypning innen kirurgi", -- %d (percentage trained) psychiatrist_train = "%d%% ferdig med fordypning innen psykiatri", -- %d (percentage trained) researcher_train = "%d%% ferdig med fordypning innen forskning", -- %d (percentage trained) skills = "Ekstra evner", }, -- Queue window queue_window = { num_in_queue = "Antall pasienter i köen", num_expected = "Antall pasienter Resepsjonisten forventer i köen innen kort tid", num_entered = "Antall pasienter som er behandlet i dette rommet sÃ¥ langt", max_queue_size = "Maksimal lengde pÃ¥ köen som Resepsjonisten skal etterstrebe", dec_queue_size = "Senk maksimal kölengde", inc_queue_size = "Ök maksimal kölengde", front_of_queue = "Dra en pasient hit for Ã¥ stille han/henne fremst i köen", end_of_queue = "Dra en pasient hit for Ã¥ stille han/henne bakerst i köen", close = "Lukk vindu", patient = "Dra en pasient for Ã¥ flytte han/henne i köen. Höyreklikk pÃ¥ en pasient for Ã¥ sende han/henne hjem eller til et konkurrerende sykehus", patient_dropdown = { reception = "Henvis pasient til Resepsjonist", send_home = "Send pasienten hjem", hospital_1 = "Henvis pasienten til et annet sykehus", hospital_2 = "Henvis pasienten til et annet sykehus", hospital_3 = "Henvis pasienten til et annet sykehus", }, }, -- Main menu main_menu = { new_game = "Start en ny karriere", custom_campaign = "Start en ny karriere skapt av andre spillere", load_game = "Last inn et tidligere spill", continue = "Fortsett forrige spill", network = "Start nettverksspill", map_edit = "Lag et eget brett", quit = "Du er pÃ¥ vei til Ã¥ avslutte spillet. Er du sikker pÃ¥ at du vil dette?", --todo: Her tror jeg det er valgt feil navn/sted for "quit". Denne viser til spörsmÃ¥let man fÃ¥r ved Ã¥ trykke pÃ¥ Avslutt i hovedmenyen. load_menu = { load_slot = " SPILL [slotnumber] ", -- NB: no %d! Append " [slotnumber]". empty_slot = " TOM ", }, }, -- Window general window_general = { cancel = "Avbryt", confirm = "Bekreft", }, -- Custom campaign custom_campaign_window = { choose_campaign = "Velg en karriere for Ã¥ lese mer om den", start_selected_campaign = "Last det förste brettet i denne karrieren", }, -- Patient window patient_window = { close = "Lukk vindu", graph = "Klikk for Ã¥ veksle mellom graf med personens helse og personens behandlingshistorikk", happiness = "Personens humör", thirst = "Personens törste", warmth = "Personens temperatur", casebook = "Vis detaljer for pasientens sykdom", send_home = "Send pasienten hjem fra sykehuset", center_view = "Sentrer personen i skjermbildet", abort_diagnosis = "Send personen til behandling istedenfor Ã¥ vente til diagnosen er ferdigstilt", queue = "Se köen pasienten befinner seg i", }, -- window staff_window = { name = "Den ansattes navn", close = "Lukk vindu", face = "Ansiktet til personen - Klikk for Ã¥ administrere de ansatte", happiness = "HumörnivÃ¥", tiredness = "TretthetsnivÃ¥", ability = "Evner", doctor_seniority = "Stilling (Turnuslege, Doktor, Konsulent)", skills = "Spesialisering", surgeon = "Kirurg", psychiatrist = "Psykiater", researcher = "Forsker", salary = "MÃ¥nedslönn", center_view = "Venstreklikk for Ã¥ finne den ansatte, höyreklikk for Ã¥ bla gjennom de ansatte.", sack = "Si opp", pick_up = "Plukk opp", }, -- Machine window machine_window = { name = "Navn", close = "Lukk vindu", times_used = "Antall gangen maskinen er brukt", status = "Maskinstatus", repair = "Kall pÃ¥ Vaktmester for Ã¥ fikse maskinen", replace = "Erstatt maskin", }, -- Handyman window -- Apparently handymen have their own set of strings (partly) containing "handyman". -- We could just get rid of this category and include the three prios into staff_window. handyman_window = { name = "Vaktmesterens navn", -- contains "handyman" close = "Lukk vindu", face = "Vaktmesterens ansikt", -- contains "handyman" happiness = "HumörnivÃ¥", tiredness = "TretthetsnivÃ¥", ability = "Evner", prio_litter = "Be Vaktmesteren om Ã¥ prioritere rengjöring av gulv höyere", -- contains "handyman" prio_plants = "Be Vaktmesteren om Ã¥ prioritere vanning av planter höyere", -- contains "handyman" prio_machines = "Be Vaktmesteren om Ã¥ prioritere reparasjon av maskiner höyere", -- contains "handyman" salary = "MÃ¥nedslönn", center_view = "Sentrer i skjermbildet", -- contains "handyman" sack = "Si opp", pick_up = "Plukk opp", parcel_select = "Steder hvor Vaktmesteren utförer oppgaver. Klikk for Ã¥ endre innstilling.", }, -- Place objects window place_objects_window = { cancel = "Avbryt", buy_sell = "Kjöp/Selg gjenstander", pick_up = "Plukk opp en gjenstand", confirm = "Bekreft", }, -- Casebook casebook = { up = "Rull oppover", down = "Rull nedover", close = "Lukk medisinbok", reputation = "Ryktet behandlingen eller diagnosen har i næromrÃ¥det", treatment_charge = "Pris for behandling", earned_money = "Totalt opptjente penger frem til i dag", cured = "Antall kurerte pasienter", deaths = "Antall pasienter drept som fölge av behandlingen", sent_home = "Antall pasienter som har snudd og gÃ¥tt hjem", decrease = "Senk pris", increase = "Ök pris", research = "Trykk her for Ã¥ bruke forskingsbudsjettet for spesialisering til Ã¥ forske pÃ¥ denne behandlingen", cure_type = { drug = "Denne behandlingen krever medisin", drug_percentage = "Denne behandlingen krever medisin - din er %d%% effektiv", -- %d (effectiveness percentage) psychiatrist = "En Psykiater kreves for behandling", surgery = "Denne sykdommen krever en operasjon", machine = "Denne sykdommen krever en maskin for behandling", unknown = "Du vet ikke hvordan du skal behandle denne sykdommen enda", }, cure_requirement = { possible = "Du kan gjennomföre behandling", research_machine = "Du mÃ¥ forske pÃ¥ maskiner for Ã¥ gjennomföre behandlingen", build_room = "Du mÃ¥ bygge et rom for Ã¥ gjennomföre behandlingen", -- NB: no %s! hire_surgeons = "Du trenger to Kirurger for Ã¥ gjennomföre behandlingen", hire_surgeon = "Du trenger en Kirurg til for Ã¥ gjennomföre behandlingen", hire_staff = "Du mÃ¥ ansette en %s for Ã¥ gjennomföre behandlingen", -- %s (staff type) hire_staff_old = "Du mÃ¥ ansette en %s for Ã¥ gjennomföre behandlingen", build_ward = "Du mÃ¥ bygge en Sykestue for Ã¥ kunne gjennomföre behandlingen", ward_hire_nurse = "Du trenger en Sykepleier pÃ¥ Sengeavdelingen for Ã¥ gjennomföre behandlingen", not_possible = "Du kan ikke hÃ¥ndtere denne behandlingen enda", }, }, -- Statement statement = { close = "Lukk kontoutskriften", }, -- Research research = { close = "GÃ¥ ut av forskningsavdelingen", cure_dec = "Senk prioritering av forskning pÃ¥ behandlingsutstyr", diagnosis_dec = "Senk prioritering av forskning pÃ¥ diagnoseutstyr", drugs_dec = "Senk prioritering av forskning pÃ¥ medisiner", improvements_dec = "Senk prioritering av forskning pÃ¥ forbedringer", specialisation_dec = "Senk prioritering av forskning pÃ¥ spesialiseringer", cure_inc = "Ök prioritering av forskning pÃ¥ behandlingsutstyr", diagnosis_inc = "Ök prioritering av forskning pÃ¥ diagnoseutstyr", drugs_inc = "Ök prioritering av forskning pÃ¥ medisiner", improvements_inc = "Ök prioritering av forskning pÃ¥ forbedringer", specialisation_inc = "Ök prioritering av forskning pÃ¥ spesialiseringer", allocated_amount = "Penger satt av til forskning", }, -- Graphs graphs = { close = "GÃ¥ ut av diagramvinduet", scale = "Skala pÃ¥ diagram", money_in = "Vis/skjul Inntekter", money_out = "Vis/skjul Utgifter", wages = "Vis/skjul Lönninger", balance = "Vis/skjul Balanse", visitors = "Vis/skjul Besökende", cures = "Vis/skjul Kurerte", deaths = "Vis/skjul Dödsfall", reputation = "Vis/skjul Omdömme", }, -- Town map town_map = { people = "Vis/Skjul mennesker", plants = "Vis/Skjul planter", fire_extinguishers = "Vis/Skjul brannslukningsapparat", objects = "Vis/Skjul gjenstander", radiators = "Vis/Skjul radiatorer", heat_level = "Temperatur", heat_inc = "Skru opp temperaturen", heat_dec = "Skru ned temperaturen", heating_bill = "Varmekostnader", balance = "Balanse", close = "Lukk omrÃ¥dekart", }, -- Jukebox. jukebox = { current_title = "Jukebox", close = "Lukk jukebox", play = "Spill jukebox", rewind = "Spol tilbake jukebox", fast_forward = "Spol fremover jukebox", stop = "Stopp jukebox", loop = "Repeter jukebox", }, -- Bank Manager bank_manager = { hospital_value = "NÃ¥værende verdi pÃ¥ sykehuset ditt", balance = "Din balanse i banken", current_loan = "Gjeldende lÃ¥n i banken", repay_5000 = "Betal tilbake 5000 til banken", borrow_5000 = "LÃ¥n 5000 av banken", interest_payment = "MÃ¥nedlige rentekostnader", inflation_rate = "Ã…rlig inflasjon", interest_rate = "Ã…rlig rente", close = "Lukk bankmanageren", insurance_owed = "Penger %s skylder deg", -- %s (name of debitor) show_graph = "Vis forventet tilbakebetalingsplan fra %s", -- %s (name of debitor) graph = "Forventet tilbakebetalingsplan fra %s", -- %s (name of debitor) graph_return = "Returner til forrige visning", }, -- Status status = { percentage_cured = "Du mÃ¥ kurere %d% besökende pÃ¥ sykehuset ditt. NÃ¥ har du kurert %d%", thirst = "Gjennomsnittlig törste pÃ¥ personene pÃ¥ ditt sykehus", close = "Lukk oversikten", population_chart = "Figur som viser hvor stor andel av lokalbefolkningen hvert sykehus tiltrekker seg", win_progress_own = "Vis progresjon i forhold til kravene for dette nivÃ¥et", reputation = "Omdömmet ditt mÃ¥ være minst %d. NÃ¥ er det %d", population = "Du mÃ¥ ha %d%% av befolkningen til Ã¥ bruke ditt sykehus", warmth = "Gjennomsnittlig temperatur pÃ¥ personene pÃ¥ ditt sykehus", percentage_killed = "Du mÃ¥ drepe færre enn %d%% av dine besökende. SÃ¥ langt har du tatt livet av %d%%", balance = "Din bankbalanse mÃ¥ være pÃ¥ minst %d. NÃ¥ er den %d", value = "Sykehuset ditt mÃ¥ være verdt $%d. SÃ¥ langt er det verdt $%d", win_progress_other = "Vis progresjon i forhold til kravene for dette nivÃ¥et for %s", -- %s (name of competitor) num_cured = "Du mÃ¥ kurere %d mennesker. SÃ¥ langt har du kurert %d", happiness = "Gjennomsnittlig humör pÃ¥ personene pÃ¥ ditt sykehus", }, -- Policy policy = { close = "Lukk sykehuspolicy", staff_leave = "Klikk her for Ã¥ fÃ¥ personale som ikke er opptatt til Ã¥ hjelpe kollegaer som trenger det", staff_stay = "Klikk her for Ã¥ fÃ¥ personale til Ã¥ bli i rommene du plasserer dem i", diag_procedure = "Om en Leges stilte diagnose er mindre sikker enn SEND HJEM prosenten, vil pasienten bli sendt hjem. Om diagnosen er sikrere enn GJETT KUR prosenten, vil pasienten sendes til aktuell behandling", diag_termination = "En pasients diagnostisering vil fortsette helt til Legene er sÃ¥ sikker som AVBRYT PROSESS prosenten, eller til alle diagnosemaskiner er forsökt pÃ¥ pasienten", staff_rest = "Hvor trött personalet mÃ¥ være för de kan hvile", }, -- Pay rise window pay_rise_window = { accept = "Imötekom kravene", decline = "Ikke godta kravene - Si opp istedenfor", }, -- Watch watch = { hospital_opening = "Byggetid: Dette er tiden du har igjen för sykehuset Ã¥pner. Klikk pÃ¥ Ã…PNE-knappen, sÃ¥ vil sykehuset Ã¥pne umiddelbart.", emergency = "Nödstilfelle: Tid som gjenstÃ¥r til Ã¥ behandle alle akutte pasienter.", epidemic = "Epidemi: Tid som gjenstÃ¥r til Ã¥ skjule epidemien. NÃ¥r tiden er ute ELLER en smittsom pasient forlater sykehuset, sÃ¥ kommer en Helseinspektör pÃ¥ besök. Knappen skrur av og pÃ¥ vaksineringsmodus. Klikk pÃ¥ pasienter for Ã¥ fÃ¥ en Sykepleier til Ã¥ vaksinere dem.", }, -- Rooms rooms = { gps_office = "Pasientene fÃ¥r sin förste konsultasjon og tilhörende resultater pÃ¥ Allmennpraksisen", psychiatry = "Psykiatrien kurerer gale pasienter og hjelper til med diagnostiseringen av andre pasienter, men trenger en Lege med spesialisering innenfor Psykiatri", ward = "Sengeavdelinger er nyttige for bÃ¥de diagnostisering og behandling. Pasienter blir sendt hit for observasjon men ogsÃ¥ for overvÃ¥kning etter operasjoner. Sengeavdelingen krever en Sykepleier", operating_theatre = "Operasjonssalen krever to Leger med spesialisering innenfor Kirurgi", pharmacy = "Sykepleieren skriver ut medisiner pÃ¥ apoteket for Ã¥ kurere pasienter", cardiogram = "En Lege bruker Kardio for Ã¥ diagnostisere pasienter", scanner = "En Lege bruker Skanneren for Ã¥ diagnostisere pasienter", ultrascan = "En Lege bruker Ultraskanneren for Ã¥ diagnostisere pasienter", blood_machine = "En Lege bruker Blodmaskinen for Ã¥ diagnostisere pasienter", x_ray = "En Lege bruker Röntgen for Ã¥ diagnostisere pasienter", inflation = "En Lege bruker Pumperommet for Ã¥ behandle pasienter med Ballonghode", dna_fixer = "En Lege bruker DNA-maskinen for Ã¥ behandle pasienter med Utenomjordisk DNA", hair_restoration = "En Lege bruker HÃ¥rklinikken for Ã¥ behandle pasienter med Flintskalle", tongue_clinic = "En Lege bruker Tungekutteren for Ã¥ behandle pasienter med Lös tunge", fracture_clinic = "En Sykepleier bruker Benbruddsklinikken for Ã¥ reparere Benbrudd", training_room = "Et klasserom med en Konsulent kan brukes til Ã¥ lære opp andre Leger", electrolysis = "En Lege bruker Elektrolyseklinikken for Ã¥ behandle pasienter med Pelssyndrom", jelly_vat = "En Lege bruker Gelétönnen for Ã¥ behandle pasienter med Gelésyndrom", staffroom = "Leger, Sykepleiere og Vaktmestre bruker personalrommet for Ã¥ hvile og heve humöret", -- rehabilitation = S[33][27], -- unused general_diag = "En Lege bruker trallen for Ã¥ stille grunnleggende diagnose pÃ¥ pasienter. Billig og ofte veldig effektivt", research_room = "Leger med spesialisering innen Forskning kan forske frem nye medisiner og maskiner pÃ¥ Forskningsavdelingen", toilets = "Bygg toaletter for Ã¥ fÃ¥ pasientene til Ã¥ stoppe Ã¥ skitne til sykehuset!", decontamination = "En Lege bruker Saneringsdusjen for Ã¥ behandle pasienter med Alvorlig StrÃ¥ling", }, -- Objects objects = { -- NB: most objects do not have a tooltip because they're not (extra-)buyable desk = "Pult: en Lege kan bruke pulten til PC-en sin.", cabinet = "Kabinett: inneholder pasientdata, notater og forskningsdokumenter.", door = "Dör: personer Ã¥pner og lukker disse en del.", bench = "Benk: gir pasienter en plass Ã¥ sitte og gjör ventingen mer komfortabel.", table1 = S[40][ 6], -- unused chair = "Stol: Pasienter sitter her og diskuterer sine problemer.", drinks_machine = "Brusautomat: hindrer pasientene Ã¥ bli törste og genererer inntekter.", bed = "Seng: virkelig syke pasienter ligger i disse.", inflator = "Pumpe: Kurerer pasienter med Ballonghode.", pool_table = "Biljardbord: Hjelper personalet ditt med Ã¥ slappe av.", reception_desk = "Resepsjon: trenger en Resepsjonist som kan henvise pasienter videre.", table2 = S[40][13], -- unused & duplicate cardio = S[40][14], -- no description scanner = S[40][15], -- no description console = S[40][16], -- no description screen = S[40][17], -- no description litter_bomb = "Söppelbombe: saboterer konkurrenters sykehus", couch = S[40][19], -- no description sofa = "Sofa: ansatte som slapper av pÃ¥ Personalrommet vil sitte stille i en sofa sÃ¥ fremt det ikke er en bedre mÃ¥te Ã¥ slappe av pÃ¥.", crash_trolley = S[40][21], -- no description tv = "TV: sörg for at personalet ditt ikke gÃ¥r glipp av favorittprogrammet sitt.", ultrascanner = S[40][23], -- no description dna_fixer = S[40][24], -- no description cast_remover = S[40][25], -- no description hair_restorer = S[40][26], -- no description slicer = S[40][27], -- no description x_ray = S[40][28], -- no description radiation_shield = S[40][29], -- no description x_ray_viewer = S[40][30], -- no description operating_table = S[40][31], -- no description lamp = S[40][32], -- unused toilet_sink = "Vask: dine hygienebevisste pasienter kan vaske sine tilgrisede hender i disse. Om det ikke er nok vasker, blir pasientene sure.", op_sink1 = S[40][34], -- no description op_sink2 = S[40][35], -- no description surgeon_screen = S[40][36], -- no description lecture_chair = "Forelesningsstol: dine Legestudenter sitter her og tar notater, kjeder seg og rabler ivrig. Jo flere stoler du har, jo större kan klassen være.", projector = S[40][38], -- no description bed2 = S[40][39], -- unused duplicate pharmacy_cabinet = "Apotekskap: medisinbeholdningen din finnes her", computer = "Datamaskin: genialt forskningsverktöy", atom_analyser = "Atomanalyser: plassert i Forskningsavdelingen, gjör denne gjenstanden hele forskningsprosessen raskere.", blood_machine = S[40][43], -- no description fire_extinguisher = "Brannslukningsapparat: minimerer faren for feil i dine maskiner.", radiator = "Radiator: sörger for at sykehuset ditt ikke blir kaldt.", plant = "Plante: holder pasientenes humör oppe og renser luften.", electrolyser = S[40][47], -- no description jelly_moulder = S[40][48], -- no description gates_of_hell = S[40][49], -- no description bed3 = S[40][50], -- unused duplicate bin = "Söppelbötte: pasientene kaster söppelet her.", toilet = "Toalett: pasientene, æh..., bruker dette.", swing_door1 = S[40][53], -- no description swing_door2 = S[40][54], -- no description shower = S[40][55], -- no description auto_autopsy = "Obduksjonsautomat: flott hjelpemiddel for Ã¥ oppdage nye behandlingsmetoder.", bookcase = "Bokhylle: referansemateriell for Leger.", video_game = "Videospill: la personalet ditt slappe av med Hi-Octane.", entrance_left = S[40][59], -- no description entrance_right = S[40][60], -- no description skeleton = "Skjelett: brukt til undervisning og Halloween.", comfortable_chair = S[40][62], -- no description }, } -- 32. Adviser adviser = { -- Tutorial tutorial = { start_tutorial = "Les Oppdragsbriefingen og klikk venstre museknapp for Ã¥ starte innföring.", information_window = "Hjelpeboksen forteller deg alt om den fine Allmennpraksisen du nettopp har bygd.", build_reception = "Heisann. Först, trenger sykehuset ditt en Resepsjon. Velg en fra Inventarmenyen.", order_one_reception = "Klikk en gang pÃ¥ den blinkende linjen med venstre museknapp for Ã¥ kjöpe en Resepsjon.", accept_purchase = "Venstreklikk pÃ¥ den blinkende linjen for Ã¥ kjöpe den.", rotate_and_place_reception = "Klikk med höyre museknapp for Ã¥ rotere Resepsjonen, og venstreklikk for Ã¥ plassere den i sykehuset.", reception_invalid_position = "Resepsjonen er nÃ¥ grÃ¥ fordi det er en ugyldig plassering. Pröv Ã¥ flytte eller rotere den.", hire_receptionist = "Du trenger nÃ¥ en Resepsjonist til Ã¥ stÃ¥ i resepsjonen og henvise dine pasienter.", select_receptionists = "Venstreklikk pÃ¥ det blinkende ikonet for Ã¥ se gjennom tilgjengelige Resepsjonister. Nummeret pÃ¥ ikonet viser antall som er tilgjengelig.", next_receptionist = "Dette er den förste Resepsjonisten i listen. Venstreklikk pÃ¥ det blinkende ikonet for Ã¥ se pÃ¥ neste person.", prev_receptionist = "Venstreklikk pÃ¥ det blinkende ikonet for Ã¥ se pÃ¥ forrige person.", choose_receptionist = "Avgjör hvilken Resepsjonist som har gode evner og akseptable lönnskrav, og venstreklikk pÃ¥ det blinkende ikonet for Ã¥ ansette henne.", place_receptionist = "Flytt Resepsjonisten og plasser henne hvor som helst. Hun klarer Ã¥ finne veien til resepsjonen selv.", receptionist_invalid_position = "Du kan ikke plassere henne der.", window_in_invalid_position = "Dette vinduet kan ikke være her. Pröv Ã¥ plassere det en annen plass pÃ¥ veggen, er du snill.", choose_doctor = "Se nöye gjennom evnene til hver enkelt Lege för du bestemmer deg for hvem du vil ansette.", click_and_drag_to_build = "For Ã¥ bygge en Allmennpraksis, mÃ¥ du först avgjöre hvor stor den skal være. Klikk og hold inne venstre museknapp for Ã¥ justere rommets störrelse.", build_gps_office = "For Ã¥ starte Ã¥ diagnostisere pasientene dine, mÃ¥ du ha en Allmennpraksis.", door_in_invalid_position = "Oj, sann! Du prövde Ã¥ plassere dören i en ugyldig posisjon. Pröv en annen plass pÃ¥ veggen av blÃ¥kopien.", confirm_room = "Venstreklikk pÃ¥ det blinkende ikonet for Ã¥ ferdigstille rommet ditt, eller klikk pÃ¥ X-en for Ã¥ gÃ¥ et trinn tilbake.", select_diagnosis_rooms = "Venstreklikk pÃ¥ det blinkende ikonet for Ã¥ se en liste over diagnoserom du kan bygge.", hire_doctor = "Du trenger en Lege for Ã¥ diagnostisere og behandle syke mennesker.", select_doctors = "Venstreklikk pÃ¥ det blinkende ikonet for Ã¥ se hvilke Leger som er tilgjengelig i arbeidsmarkedet.", place_windows = "Plasser vinduer pÃ¥ samme mÃ¥ten som du plasserte dören. Du trenger ikke vinduer, men de ansatte setter veldig pris pÃ¥ det, og blir blidere nÃ¥r de har noe Ã¥ se ut gjennom.", place_doctor = "Plasser Legen hvor som helst i Sykehuset. Han vil spasere til Allmennpraksisen sÃ¥ snart noen trenger Ã¥ diagnostiseres.", room_in_invalid_position = "Oj! Denne blÃ¥kopien er ikke gyldig - det röde omrÃ¥det indikerer hvor du har overlappet et annet rom eller sykehusets vegger.", doctor_in_invalid_position = "Hei! Du kan ikke slippe Legen her.", place_objects = "Höyreklikk for Ã¥ rotere gjenstander, og venstreklikk for Ã¥ plassere dem.", room_too_small = "Denne blÃ¥kopien er röd fordi den er for liten. Strekk den ut for Ã¥ gjöre den större.", click_gps_office = "Venstreklikk pÃ¥ den blinkende linjen for Ã¥ velge en Allmennpraksis.", room_too_small_and_invalid = "BlÃ¥kopien er for liten og er ugyldig plassert. Kom igjen.", object_in_invalid_position = "Denne gjenstanden er ugyldig plassert. Vær vennlig Ã¥ plasser den et annet sted, eller roter den for Ã¥ fÃ¥ den til Ã¥ passe.", place_door = "Flytt musen rundt om kring pÃ¥ blÃ¥kopiens vegger for Ã¥ plassere dören der du vil ha den.", room_big_enough = "BlÃ¥kopien er nÃ¥ stor nok. NÃ¥r du slipper museknappen, plasserer du den. Du kan allikevel fortsette Ã¥ flytte den eller endre störrelse om du vil.", build_pharmacy = "Gratulerer! NÃ¥ mÃ¥ du bygge et Apotek og ansette en Sykepleier for Ã¥ ha et fungerende sykehus.", }, -- Cheats cheats = { th_cheat = "Gratulerer du har lÃ¥st opp juksekodene!", roujin_on_cheat = "Roujins utfordring aktivert! Lykke til...", roujin_off_cheat = "Roujins utfordring deaktivert.", }, -- Epidemic epidemic = { hurry_up = "Om du ikke tar deg av epidemien nÃ¥, fÃ¥r du store problemer. Fort deg!", serious_warning = "Den smittsomme sykdomen begynner Ã¥ bli et seriöst problem. Du mÃ¥ gjöre noe snart!", multiple_epidemies = "Det ser ut som at du har mer enn en epidemi gÃ¥ende samtidig. Dette kan bli en enorm katastrofe, sÃ¥ fort deg.", }, -- Staff advice staff_advice = { need_handyman_machines = "Du mÃ¥ ansette Vaktmestre om du vil holde maskinene dine ved like.", need_doctors = "Du trenger flere Leger. Pröv Ã¥ plassere dine beste Leger i rommene med lengst kö.", need_handyman_plants = "Du mÃ¥ ansette en Vaktmester for Ã¥ vanne plantene.", need_handyman_litter = "Folk har begynt Ã¥ forsöple sykehuset ditt. Ansett en Vaktmester for Ã¥ rydde opp etter pasientene dine.", need_nurses = "Du trenger flere Sykepleiere. Sengeavdelinger og Apotek kan bare driftes av Sykepleiere.", too_many_doctors = "Du har for mange Leger. Noen av dem har ingenting Ã¥ gjöre.", too_many_nurses = "Jeg tror du har for mange Sykepleiere.", }, -- Earthquake earthquake = { damage = "Det jordskjelvet skadet %d maskiner og %d pasienter pÃ¥ sykehuset.", -- %d (count machines), &d (count patients) alert = "Jordskjelv-varsel. Under et jordskjelv blir maskinene dine skadet. De kan bli ödelagt om de er dÃ¥rlig vedlikeholdt.", ended = "Puh. Jeg trodde det var et stort skjelv - Det mÃ¥lte %d pÃ¥ Richters skala.", }, -- Multiplayer multiplayer = { objective_completed = "Du har fullfört utfordringene for dette nivÃ¥et. Gratulerer!", everyone_failed = "Ingen klarte de forrige utfordringene. SÃ¥ alle fÃ¥r spille videre !", players_failed = "Fölgende spiller(e) klarte ikke den forrige utfordringen : ", poaching = { in_progress = "Jeg skal si ifra om denne personen vil komme Ã¥ jobbe for deg.", not_interested = "Ha! De er ikke interessert i Ã¥ jobbe for deg - de har det bra der de er.", already_poached_by_someone = "Ikke snakk om! Noen pröver allerede Ã¥ overtale personen.", }, objective_failed = "Du har ikke lykkes i Ã¥ fullföre utfordringene.", }, -- Surgery requirements surgery_requirements = { need_surgeons_ward_op = "Du trenger to Kirurger og en Sykestue i tillegg til Operasjonssal for Ã¥ gjöre kirurgiske inngrep.", need_surgeon_ward = "Du trenger en Kirurg til og en Sykestue for Ã¥ gjöre kirurgiske inngrep.", }, -- Vomit wave vomit_wave = { started = "Ser ut som du har et magevirus pÃ¥ sykehuset ditt. Om du hadde holdt det renere ville ikke dette skjedd. Kanskje du burde hatt flere Vaktmestre.", ended = "Puh! Ser ut som viruset som forÃ¥rsaket bölgen med oppkast er sÃ¥ godt som borte. Hold sykehuset ditt rent i fremtiden.", }, -- Level progress level_progress = { nearly_won = "Du har nesten fullfört dette nivÃ¥et nÃ¥.", three_quarters_lost = "Du er nÃ¥ tre fjerdedeler pÃ¥ vei til Ã¥ tape dette nivÃ¥et.", halfway_won = "Du er nÃ¥ omtrent halvveis pÃ¥ dette nivÃ¥et.", halfway_lost = "Du er omtrent halvveis til Ã¥ tape dette nivÃ¥et.", nearly_lost = "Det er like för du taper dette nivÃ¥et nÃ¥.", three_quarters_won = "Du er nÃ¥ tre fjerdedeler pÃ¥ vei til Ã¥ fullföre dette nivÃ¥et.", dont_kill_more_patients = "Du har virkelig ikke rÃ¥d til Ã¥ drepe flere pasienter!", another_patient_killed = "Ã… nei! Du har drept enda en pasient. Du har drept %d nÃ¥.", close_to_win_increase_value = "Du er virkelig nær ved Ã¥ vinne. Ök sykehusets verdi med %d.", financial_criteria_met = "Du har tilfredsstilt de finansielle kriteriene for dette nivÃ¥et. Hold banksaldoen din over %d, mens du passer pÃ¥ at sykehuset ditt drives effektivt.", hospital_value_enough = "Hold verdien av ditt sykehus over %d og forsök Ã¥ fölge med pÃ¥ de andre problemene for Ã¥ vinne dette nivÃ¥et.", another_patient_cured = "Bra jobbet - enda en pasient kurert. Det blir den %d.", reputation_good_enough = "Ok, omdömmet ditt er er godt nok for Ã¥ vinne dette nivÃ¥et. Hold det over %d og fiks eventuelle andre problemet for klare det.", cured_enough_patients = "Du har kurert nok pasienter, men du trenger Ã¥ fÃ¥ sykehuset ditt i bedre stand for Ã¥ vinne dette nivÃ¥et.", improve_reputation = "Du mÃ¥ forbedre omdömmet ditt med %d for Ã¥ ha en sjanse til Ã¥ vinne dette nivÃ¥et.", }, -- Staff place advice staff_place_advice = { receptionists_only_at_desk = "Resepsjonister kan kun jobbe i Resepsjoner.", only_psychiatrists = "Leger kan bare jobbe i Psykiatri dersom de er kvalifiserte Psykiatere.", only_surgeons = "Leger kan bare jobbe i Operasjonssalen dersom de er kvalifiserte Kirurger.", only_nurses_in_room = "Det er kun Sykepleiere som kan jobbe pÃ¥ %s", only_doctors_in_room = "%s kan kun hÃ¥ndteres av Leger", only_researchers = "Leger kan bare jobbe pÃ¥ Forskningsavdelingen dersom de er kvalifiserte Forskere.", nurses_cannot_work_in_room = "%s kan ikke hÃ¥ndteres av Sykepleiere", doctors_cannot_work_in_room = "%s kan ikke hÃ¥ndteres av Leger", }, -- Research research = { machine_improved = "%s er forbedret av Forskningsavdelingen.", autopsy_discovered_rep_loss = "Din Obduseringsautomat er blitt offentlig kjent. Forvent en negativ reaksjon fra allmennheten.", drug_fully_researched = "Du har utforsket %s til 100%.", new_machine_researched = "En ny %s er akkurat utviklet.", drug_improved = "%s medisinen er forbedret av Forskningsavdelingen din.", drug_improved_1 = "%s medisinen er forbedret av Forskningsavdelingen din.", --todo: Denne er overflödig (dobbelt opp), men debug-strings-diff.txt insisterer pÃ¥ at denne linjen skal være her. new_available = "En ny %s er tilgjengelig.", new_drug_researched = "En ny medisin for Ã¥ kurere %s er utviklet.", }, -- Boiler issue boiler_issue = { minimum_heat = "Der er du! Sentralfyren i kjelleren er gÃ¥tt i stykker. Ser ut som at personene pÃ¥ sykehuset ditt kommer til Ã¥ fryse litt.", maximum_heat = "Sentralfyren i kjelleren er löpt löpsk. Radiatorene har hengt seg opp pÃ¥ maksimal varme. Folk kommer til Ã¥ smelte! Plasser ut flere Brusautomater.", resolved = "Gode nyheter. Sentralvarmen fungerer slik som den skal nÃ¥. Temperaturen skal nÃ¥ være grei bÃ¥de for pasientene og personalet.", }, -- Competitors competitors = { staff_poached = "En av dine ansatte har fÃ¥tt seg jobb pÃ¥ et annet sykehus.", hospital_opened = "Et konkurrerende sykehus er Ã¥pnet i omrÃ¥det av %s.", land_purchased = "%s har akkurat kjöpt en tomt.", }, -- Room requirements room_requirements = { research_room_need_researcher = "Du mÃ¥ ansette en Lege med spesialisering innenfor Forskning for Ã¥ kunne ta i bruk Forskningsavdelingen.", op_need_another_surgeon = "Du trenger fremdeles en Kirurg til, for Ã¥ kunne ta i bruk Operasjonssalen.", op_need_ward = "Du mÃ¥ bygge en Sykestue for Ã¥ overvÃ¥ke pasienter som skal opereres.", reception_need_receptionist = "Du mÃ¥ ansette en Resepsjonist for Ã¥ ta imot pasientene.", psychiatry_need_psychiatrist = "Du mÃ¥ ansette en Psykiater nÃ¥ som du har bygget Psykiatri.", pharmacy_need_nurse = "Du mÃ¥ ansette en Sykepleier for Ã¥ drifte Apoteket.", ward_need_nurse = "Du mÃ¥ ansette en Sykepleier som kan jobbe pÃ¥ denne Sengeavdelingen.", op_need_two_surgeons = "Ansett to Kirurger for Ã¥ utföre kirurgiske inngrep i Operasjonssalen.", training_room_need_consultant = "Du mÃ¥ ansette en Konsulent som kan undervise i Klasserommet.", gps_office_need_doctor = "Du mÃ¥ ansette en Lege som kan jobbe pÃ¥ Allmennpraksisen.", }, -- Goals goals = { win = { money = "Du trenger %d til for Ã¥ oppnÃ¥ de finansielle kriteriene pÃ¥ dette nivÃ¥et.", cure = "Kurer %d pasienter til og du har kurert nok for Ã¥ fullföre dette nivÃ¥et.", reputation = "Sörg for Ã¥ ha et omdömme pÃ¥ over %d for at du skal kunne fullföre nivÃ¥et.", value = "Sykehuset ditt mÃ¥ ha en verdi pÃ¥ over %d for at du skal kunne fullföre dette nivÃ¥et.", }, lose = { kill = "Drep %d pasienter til for Ã¥ tape dette nivÃ¥et!", }, }, -- Warnings warnings = { low_prices = "Du tar deg for lite betalt for %s. Dette vil tiltrekke mange syke mennesker til sykehuset ditt, men du tjener mindre pÃ¥ hver pasient.", fair_prices = "Prisene dine for %s virker rettferdige og balanserte.", high_prices = "Prisene for %s er for høye. Dette gir deg god avkastning pÃ¥ kort sikt, men pÃ¥ lengre sikt vil de höye prisene skremme bort pasientene.", patient_not_paying = "En pasient har dratt uten Ã¥ betale for %s fordi det var for dyrt!", charges_too_low = "Du tar deg for lite betalt. Dette vil tiltrekke mange syke mennesker til sykehuset ditt, men du tjener mindre pÃ¥ hver pasient", charges_too_high = "Dine priser er for höye. Dette gir deg god avkastning pÃ¥ kort sikt, men pÃ¥ lengre sikt vil de höye prisene skremme bort pasientene.", plants_thirsty = "Du mÃ¥ huske pÃ¥ plantene dine. De er törste.", staff_overworked = "Personalet ditt er meget overarbeidet. De blir ineffektive og gjör fatale feil nÃ¥r de er trötte.", queue_too_long_at_reception = "Du har for mange pasienter som venter ved Resepsjonen. Plasser ut flere Resepsjoner og ansett en Resepsjonist til.", queue_too_long_send_doctor = "Köen til %s er for lang. Sörg for at det er en Lege i rommet.", handymen_tired = "Dine Vaktmestere er veldig trött. Gi dem hvile nÃ¥.", money_low = "Du begynner Ã¥ gÃ¥ tom for penger!", money_very_low_take_loan = "Din bankbalanse er ganske sÃ¥ lav. Du kan jo alltids lÃ¥ne penger av banken.", staff_unhappy = "Personalet ditt er i dÃ¥rlig humör. Pröv Ã¥ gi dem bonuser, eller bedre, bygg et Personalrom. Du kan ogsÃ¥ forandre Hvilepraksisen pÃ¥ Sykehuspolicy-skjermen.", no_patients_last_month = "Ingen nye pasienter besökte sykehuset ditt forrige mÃ¥ned. Sjokkerende!", queues_too_long = "Köene dine er for lange.", patient_stuck = "Noen har gÃ¥tt seg vill. Du mÃ¥ organisere sykehuset ditt bedre.", patients_too_hot = "Pasientene er for varme. Du mÃ¥ enten fjerne noen radiatorer, skru ned temperaturen, eller plassere ut flere Brusautomater.", doctors_tired = "Dine Leger er veldig trötte. Gi dem hvile snarest.", need_toilets = "Pasientene trenger toaletter. Bygg dem pÃ¥ lett tilgjengelige steder.", machines_falling_apart = "Maskinene dine faller sammen. FÃ¥ Vaktmestre til Ã¥ fikse de snarest!", nobody_cured_last_month = "Absolutt ingen ble kurert forrige mÃ¥ned.", patients_thirsty = "Pasientene dine er törste. Du burde gi dem tilgang pÃ¥ brus.", nurses_tired = "Sykepleierne dine er trötte. Gi dem hvile nÃ¥.", machine_severely_damaged = "%s er veldig nær Ã¥ bli totalskadet.", reception_bottleneck = "Det er en flaskehals i Resepsjonen. Ansett en Resepsjonist til.", bankruptcy_imminent = "Hallo! Du nærmer deg konkurs. Vær forsiktig!", receptionists_tired = "Resepsjonistene dine er meget trötte. Gi dem hvile nÃ¥.", too_many_plants = "Du har for mange planter. Dette er jo rene jungelen.", many_killed = "Du har nÃ¥ drept %d mennesker. Poenget er liksom Ã¥ gjöre de friske, vet du.", need_staffroom = "Bygg et Personalrom slik at dine ansatte kan slappe av.", staff_too_hot = "Dine ansatte holder pÃ¥ Ã¥ smelte bort. Skru ned temperaturen eller fjern noen radiatorer fra rommene deres.", patients_unhappy = "Pasientene misliker sykehuset ditt. Du burde gjöre noe for Ã¥ forbedre miljöet pÃ¥ sykehuset.", people_did_it_on_the_floor = "Noen av pasientene dine klarte ikke Ã¥ holde seg. Oppryddingen vil bli en stor jobb for noen.", -- Bruke ordet opprydning eller vasking? patients_very_thirsty = "Pasientene dine er virkelig törste. Om du ikke setter opp noen Brusautomater snart, vil du snart se at alle gÃ¥r hjem for Ã¥ hente cola.", machinery_very_damaged = "Hastesak! FÃ¥ en Vaktmester til Ã¥ reparere maskinene dine öyeblikkelig! De kommer til Ã¥ sprenge!", handymen_tired2 = "Vaktmestrene dine er helt utkjörte. Gi dem litt hvile med en gang.", desperate_need_for_watering = "Du trenger sÃ¥rt Ã¥ ansette en Vaktmester for Ã¥ stelle med plantene dine.", too_much_litter = "Det er et söppelproblem. Flere Vaktmestere kan være svaret.", place_plants4 = "FÃ¥ pasientene i bedre humör ved Ã¥ sette ut litt flere planter rundt omkring.", change_priorities_to_plants = "Du mÃ¥ endre prioriteringene for Vaktmestrene dine slik at de bruker mer tid pÃ¥ plantene.", finanical_trouble2 = "Du mÃ¥ fÃ¥ inn litt penger snart, ellers er du snart ute pÃ¥ söppeldynga. Du vil tape nivÃ¥et om du mister %d til.", litter_everywhere = "Det er söppel over alt. Sett noen Vaktmestere pÃ¥ saken.", nurses_tired2 = "Sykepleierne dine er veldig trötte. La dem hvile med en gang.", plants_dying = "Plantene dine dör. De er desperate etter vannr. FÃ¥ flere Vaktmestere til Ã¥ jobbe med dette. Pasientene liker ikke döde planter.", reduce_staff_rest_threshold = "Pröv Ã¥ endre Personalets hvileterskel i Sykehuspolicy-vinduet, slik at Personalet hviler oftere. Det var bare en idé.", more_toilets = "Du trenger flere Toaletter. Folk begynner Ã¥ fÃ¥ præriehunder.", --"People are getting the turtle's head" hospital_is_rubbish = "Folk sier Ã¥penlyst at sykehuset ditt bare er söppel. För du vet ordet av det, sÃ¥ tar de med seg sykdommene sine til et annet sted.", pay_back_loan = "Du har masse penger. Hvorfor har du ikke tenkt pÃ¥ Ã¥ betale tilbake lÃ¥net?", financial_trouble3 = "Banksaldoen din ser bekymringsfull ut. Vurder Ã¥ skaffe mer penger. Du er %d unna fra en katastrofe.", build_toilet_now = "Bygg et Toalett nÃ¥. Folk kan ikke holde seg lenger. Ikke glis - Dette er seriöst.", more_benches = "Vurder Ã¥ plassere flere benker. Syke folk anser det som en fornærmelse Ã¥ mÃ¥tte stÃ¥ oppreist.", many_epidemics = "Det ser ut som du har mer enn en epidemi pÃ¥ samme tid. Dette kan bli en kjempekatastrofe, sÃ¥ du mÃ¥ handle raskt.", place_plants_to_keep_people = "Folk stikker av. Ã… plassere noen planter kan kanskje overtale dem til Ã¥ bli.", patients_thirsty2 = "Folk klager over at de er törste. Du burde plassere noen fler Brusmaskiner eller flytte de eksisterende nærmere dem.", people_freezing = "Utrolig, med nÃ¥tidens sentralfyring, sÃ¥ klager noen av pasientene dine over at det er iskaldt. Sett ut noen radiatorer for Ã¥ varme dem opp, og skru opp temperaturen.", patients_very_cold = "Pasientene er veldig kalde. Pröve Ã¥ skru opp temperaturen eller Ã¥ plassere flere radiatorer i sykehuset.", build_toilets = "Bygg et Toalett med en gang, ellers vil du se noe virkelig ubehagelig. Og forestill deg hva sykehuset ditt vil lukte da.", place_plants2 = "Folk gÃ¥r hjem. Litt flere planter ville kanskje holdt dem her lenger.", staff_tired = "Dine ansatte er veldig slitne. Om du ikke lar dem fÃ¥ litt hvile i Personalrommet, sÃ¥ kan noen knekke av presset.", place_plants3 = "Pasientene din er utilfreds. Plasser litt flere planter for muntre dem opp.", staff_unhappy2 = "Personalet ditt er generelt ulykkelige. Snart vil de ha mer penger.", cash_low_consider_loan = "Pengesituasjonen din er ganske dÃ¥rlig. Har du tenkt pÃ¥ Ã¥ ta opp et lÃ¥n?", financial_trouble = "Du er i en seriös finansiell krise. FÃ¥ orden pÃ¥ ökonomien med en gang! Om du taper %d til, sÃ¥ har du kastet bort dette nivÃ¥et!", doctors_tired2 = "Legene dine er utrolig slitne. De burde hvule umiddelbart.", patient_leaving = "En pasient drar hjem. Grunnen til det? Ditt dÃ¥rlig styrte, dÃ¥rlig bemannet og dÃ¥rlig utstyrt sykehus.", machinery_damaged2 = "Du mÃ¥ ansette en Vaktmester for Ã¥ reparere maskinene dine snart.", patients_leaving = "Pasientene forlater sykehuset. Forbedre sykehuset for de besökende ved Ã¥ plassere planter, benker, brusmaskiner og sÃ¥ videre.", epidemic_getting_serious = "Den smittsomme sykdommen begynner Ã¥ bli alvorlig. Du mÃ¥ gjöre noe snart!", machinery_damaged = "Reparer maskinene dine snart. Det er ikke lenge för de begynner Ã¥ falle fra hverandre.", people_have_to_stand = "Lidende mennesker mÃ¥ stÃ¥ oppreist. Skaff flere sitteplasser nÃ¥.", build_staffroom = "Bygg et Personalrom nÃ¥. Personalet ditt jobber for hardt og er pÃ¥ randen til kollaps. Kom igjen - se sammenhengen!", machinery_slightly_damaged = "Sykehusmaskineriet ditt er lettere skadet. Ikke glem Ã¥ fÃ¥ det vedlikeholdt ved en anledning.", patients_getting_hot = "Pasientene er veldig varme. Pröv Ã¥ skru ned temperaturen litt, eller til og med fjerne noen radiatorer.", machinery_deteriorating = "Maskinene dine har nettopp begynt Ã¥ bli dÃ¥rligere pÃ¥ grunn av overforbruk. Hold et öye med dem.", litter_catastrophy = "Söppelsituasjonen er bunnlös. FÃ¥ et lag av Vaktmestere til Ã¥ ta fatt i det nÃ¥!", staff_very_cold = "Personalet klager over at det er kaldt. Skru opp temperaturen eller plasser ut flere radiatorer.", deal_with_epidemic_now = "Om den epidemien ikke blir behandlet med en gang, sÃ¥ vil fÃ¥ tröbbel helt opp til örene. FÃ¥ opp farten!", patients_really_thirsty = "Pasientene er virkelig törste. Plasser flere brusmaskiner, eller flytt de eksisterende nærmere de störste köene.", some_litter = "Vaktmestere kan bli kvitt söpla för den blir et alvorlig problem.", patients_annoyed = "Folk er utrolig misfornöyd med mÃ¥ten du driver sykehuset ditt. Og jeg kan ikke si jeg klandrer dem. Ta deg sammen eller ta konsekvensene!", receptionists_tired2 = "Resepsjonistene din er veldig slitne. La dem hvile med en gang.", doctor_crazy_overwork = "Ã… nei! En av dine Doktorer har blitt gal pÃ¥ grunn av overarbeid. Han kan komme seg hvis du lar ham hvile umiddelbart.", no_desk = "Du burde bygge en resepsjon og ansette en Resepsjonist snart.", no_desk_1 = "Om du vil at pasienter skal komme til sykehuset ditt bör du ansette en Resepsjonsist og bygge en resepsjon der hun kan arbeide!", no_desk_2 = "Bra gjort! Dette mÃ¥ være en verdensrekord: nesten ett Ã¥r uten Ã¥ fÃ¥ noen pasienter! Om du vil fortsette som sjef for dette sykehuset bör du ansette en Resepsjonist og bygg en respsjon der hun kan arbede!", no_desk_3 = "Glimrende! Nesten et Ã¥r har gÃ¥tt og du har ikke engang en betjent resepsjon! Hvordan tror du at du skal fÃ¥ noen pasienter? Slutt Ã¥ tulle rundt og fÃ¥ orden pÃ¥ problemet!", no_desk_4 = "En Resepsjonist mÃ¥ ha sin egen arbeidsplass for Ã¥ motta pasientene som ankommer", no_desk_5 = "Det var pÃ¥ tide! Du burde se noen pasienter ankomme snart.", no_desk_6 = "Du har en Resepsjonist, sÃ¥ hva med Ã¥ sette opp en resepsjon hun kan jobbe i?", no_desk_7 = "Du har bygd en resepsjon, sÃ¥ hva med Ã¥ ansette en Resepsjonist? Du fÃ¥r ingen pasienter för du har fikset dette!", nurse_needs_desk_1 = "Hver Sykepleier trenger sin egen kontorpult Ã¥ arbeide ved.", nurse_needs_desk_2 = "Sykepleieren din er glad for at du har gitt henne en pause. Om hensikten var Ã¥ ha mer enn én Sykepleier arbeidende her, sÃ¥ mÃ¥ du gi dem begge en kontorpult.", cannot_afford = "Du har ikke nok penger pÃ¥ konto til Ã¥ ansette denne personen!", cannot_afford_2 = "Du har ikke nok penger pÃ¥ konto til Ã¥ gjöre dette kjöpet!", falling_1 = "Hei! Det der er ikke moro. Pass pÃ¥ hvor du klikker med den musa; noen kan bli skadet!", falling_2 = "Slutt Ã¥ tulle. Hvordan ville du likt det?", falling_3 = "Au, det mÃ¥tte gjöre vondt. Noen burde ringe etter en Lege!", falling_4 = "Dette er et sykehus, ikke en temapark!", falling_5 = "Dette er ikke et sted der du kan dytte folk over ende, de er jo syke!", falling_6 = "Dette er ingen bowlingbane. Syke folk bör ikke behandles slik!", research_screen_open_1 = "Du mÃ¥ bygge en forskningsavdeling för du fÃ¥r tilgang til forskningsvinduet.", research_screen_open_2 = "Forskning er deaktivert for dette nivÃ¥et.", researcher_needs_desk_2 = "En av dine Forskere er glad for at du gir ham en pause. Om du önsker Ã¥ ha flere ansatte som faktisk forsker, sÃ¥ mÃ¥ du gi dem et skrivebord hver.", researcher_needs_desk_1 = "En Forsker mÃ¥ ha et skrivebord for Ã¥ kunne arbeide.", researcher_needs_desk_3 = "Hver Forsker mÃ¥ ha hvert sitt skrivebord for Ã¥ kunne gjöre jobben sin.", }, -- Placement info placement_info = { door_can_place = "Du kan plassere dören her, om du vil.", window_can_place = "Du kan plassere vinduet her. Det gÃ¥r fint.", door_cannot_place = "Beklager, men du kan ikke plassere dören her.", object_can_place = "Du kan plassere gjenstanden her.", reception_can_place = "Du kan plassere Resepsjonen her.", staff_cannot_place = "Du kan ikke plassere den ansatte her. Beklager.", staff_can_place = "Du kan plassere den ansatte her. ", object_cannot_place = "Hallo, du kan ikke plassere gjenstanden her.", room_cannot_place = "Du kan ikke plassere rommet her.", room_cannot_place_2 = "Du kan ikke bygge rommet her.", window_cannot_place = "Ah. Du kan faktisk ikke plassere vinduet her.", reception_cannot_place = "Du kan ikke plassere Resepsjonen her.", }, -- Praise praise = { many_benches = "Pasientene har nok sitteplasser nÃ¥. Fint.", many_plants = "Flott. Du har mange planter. Pasientene vil sette pris pÃ¥ det.", patients_cured = "%d pasienter kurert.", }, -- Information information = { larger_rooms = "Större rom gjör at de ansatte föler seg viktigere, og det forbedrer deres prestasjoner.", extra_items = "Ekstra gjenstander i rommene fÃ¥r de ansatte til Ã¥ föle seg mer komfortabel og prestasjonene blir bedre.", epidemic = "Du har en smittsom epidemi pÃ¥ sykehuset ditt. Det mÃ¥ du gjöre noe med nÃ¥!", promotion_to_doctor = "En av dine TURNUSLEGER er nÃ¥ blitt DOKTOR.", emergency = "Nödstilfelle! Unna vei! Flytt dere!", patient_abducted = "En av dine pasienter er blitt bortfört av romvesen.", first_cure = "Bra jobbet! Du har akkurat kurert din förste pasient.", promotion_to_consultant = "En av dine DOKTORER er nÃ¥ blitt KONSULENT.", handyman_adjust = "Du kan gjöre Vaktmestrene mer effektiv ved Ã¥ justere deres prioriteringer.", promotion_to_specialist = "En av dine Leger er blitt forfremmet til %s.", patient_leaving_too_expensive = "En pasient forlater sykehuset ditt uten Ã¥ gjöre opp for seg ved %s. Det er for dyrt.", vip_arrived = "Pass pÃ¥! - %s har akkurat ankommet sykehuset ditt! La alt gÃ¥ pÃ¥ skinner nÃ¥, for Ã¥ tilfredstille han.", epidemic_health_inspector = "Helseministeren har nÃ¥ fÃ¥tt med seg nyhetene om epidemien din. Du mÃ¥ forberede deg pÃ¥ et besök av ministeren ganske snart.", first_death = "Du har akkurat drept din förste pasient. Hvordan föles det?", pay_rise = "En av dine ansatte truer med Ã¥ si opp. Velg om du vil gÃ¥ med pÃ¥ lönnskravene eller om du vil sparke han/henne. Klikk pÃ¥ ikonet nede i venstre hjörne for Ã¥ se hvem som truer med oppsigelse.", place_windows = "Vinduer gjör rommene lysere og öker arbeidslysten til dine ansatte.", fax_received = "Ikonet som akkurat poppet opp nede i venstre hjörne av skjermen, varsler deg om viktig informasjon og beslutninger du mÃ¥ ta.", initial_general_advice = { rats_have_arrived = "Rotter har infisert sykehuset ditt. Pröv Ã¥ skyt dem med musen din.", autopsy_available = "Obduksjonsautomaten er nÃ¥ ferdigutviklet. Med denne kan du kvitte deg med tröblete eller ikke-velkomne pasienter, og gjöre forskning ut av restene. Advarsel - Ã… benytte denne er svært kontroversielt.", first_patients_thirsty = "Flere av pasientene dine begynner Ã¥ bli dehydrert. De ville satt pris pÃ¥ en Brusautomat.", research_now_available = "Du har bygd din förste Forskningsavdeling. Du har nÃ¥ tilgang til Forskningsskjermen.", psychiatric_symbol = "Leger med spesialisering innen Psykiatri gjenkjennes med symbolet: |", decrease_heating = "Folk pÃ¥ sykehuset ditt svetter. Skru ned sentralvarmen. Dette gjöres pÃ¥ OmrÃ¥dekartet.", surgeon_symbol = "Leger kan utföre kirurgiske inngrep om de har symbolet: {", first_emergency = "Akutte pasienter har et blinkende blÃ¥tt lys over hodet. Behandle dem i tide, ellers dör de.", first_epidemic = "Du har en epidemi pÃ¥ sykehuset ditt! Avgjör om du vil rydde opp, eller legge deg paddeflat.", taking_your_staff = "Noen pröver Ã¥ stjele personalet ditt. Du mÃ¥ kjempe for Ã¥ beholde de.", place_radiators = "Pasientene fryser - du kan plassere flere radiatorer ved Ã¥ gÃ¥ inn pÃ¥ oversikten med gjenstander.", epidemic_spreading = "Det er smittefare pÃ¥ sykehuset. Kurer infiserte pasienter för de forlater sykehuset.", research_symbol = "Forskere er leger med symbolet: }", machine_needs_repair = "Du har utstyr som trenger reparasjon. Finn utstyret - det ryker av det - og klikk pÃ¥ den. Klikk deretter pÃ¥ Vaktmestersymbolet.", increase_heating = "Folk fryser. Skru opp sentralvarmen pÃ¥ OmrÃ¥dekartet.", first_VIP = "Du er i ferd med Ã¥ ta imot ditt förste VIP-besök. Sörg for at VIP-er ikke ser noe uhygienisk eller pasienter som henger med hodet.", }, }, -- Build advice build_advice = { placing_object_blocks_door = "Om du plasserer gjenstander der, kommer ikke folk seg til dören.", blueprint_would_block = "Den blÃ¥kopien kommer til Ã¥ blokkere andre rom. Pröv Ã¥ endre rommets störrelse, eller flytt det en annen plass!", door_not_reachable = "Folk kommer ikke til Ã¥ komme seg til den dören. Tenk litt.", blueprint_invalid = "Det er ikke en gyldig blÃ¥kopi.", }, } -- Warnings (more warnings in adviser.warnings) warnings = { levelfile_variable_is_deprecated = "Merk: Brett '%s' inneholder en forringet variabeldefinisjon i brettfilen.'%LevelFile' har fÃ¥tt endret navn til '%MapFile'. Vennligst gi beskjed til brett-designeren om Ã¥ oppdatere brettet", -- Forbedre tekst? } -- Confirmation confirmation = { quit = "Du har valgt Ã¥ avslutte. Er du sikker pÃ¥ at du vil forlate spillet?", return_to_blueprint = "Er du sikker pÃ¥ at du vil returnere til BlÃ¥kopi-modus?", replace_machine = "Er du sikker pÃ¥ at du vil erstatte %s for $%d?", -- %s (machine name) %d (price) overwrite_save = "Et spill er allerede lagret her. Er du sikker pÃ¥ at du vil overskrive det?", delete_room = "Önsker du virkelig Ã¥ fjerne dette rommet?", sack_staff = "Er du sikker pÃ¥ at du vil si opp denne personen?", restart_level = "Er du sikker pÃ¥ at du vil starte dette nivÃ¥et pÃ¥ nytt?", maximum_screen_size = "Opplösningen du har valgt er större enn 3000 x 2000. Större opplösninger er mulig, men det krever bedre maskinvare om det ikke skal hakke. Önsker du Ã¥ fortsette?", music_warning = "För du fÃ¥r brukt mp3-er som spillmusikk, sÃ¥ mÃ¥ du ha smpeg.dll eller tilsvarende for operativsystemet ditt. Eller vil du ikke fÃ¥ musikk i spillet. Önsker du Ã¥ fortsette?", } -- Bank manager bank_manager = { hospital_value = "Sykehusets verdi", balance = "Din balanse", current_loan = "NÃ¥værende lÃ¥n", interest_payment = "Rentekostnader", insurance_owed = "Forsikringsgjeld", inflation_rate = "Inflasjon", interest_rate = "Rentesats", statistics_page = { date = "Dato", details = "Detaljer", money_out = "Utg.", money_in = "Innt.", balance = "Saldo", current_balance = "Balanse", }, } -- Progress Report window progress_report = { quite_unhappy = "Folket ditt er i dÃ¥rlig humör. ", header = "Progresjonsrapport", very_unhappy = "Folket ditt er i svært dÃ¥rlig humör. ", more_drinks_machines = "Bygg flere Brusautomater. ", too_cold = "Det er alt for kaldt. Sett ut noen radiatorer. ", too_hot = "Du bör regulere sentralvarmen. Det er alt for varmt. ", percentage_pop = "% befolkning", win_criteria = "KRITERIER FOR Ã… VINNE", free_build = "FRI BYGGING", } -- Newspaper headlines newspaper = { -- Seven categories of funny headlines. I think each category is related -- to one criterion you can lose to. TODO: categorize { "DR SKREKK OG GRU", "SKUMMEL LEGE LEKER GUD", "DR ACULA SJOKKERER", "HVEM FALT FOR KNIVEN?", "FARLIG FORSKNING STOPPET ETTER RAZZIA" }, { "DR ANKER", "KNUST KIRURG", "KONSULENT PÃ… KJÖRET", "KIRURGISK SHOT", "KIRURG DRIKKER OPP", "KIRURGISK SPIRIT" }, { "LEKENDE KIRURG", "DOKTOR PANTSDOWN", "DOKTOR LANGT NEDE", "GLUPSK KIRURG" }, { "LEGE TUKLER MED BALANSEN", "ORGAN-ISERT KRIMINALITET", "BANKMESSIG BYPASS-OPERASJON", "LEGE MED KONTANTBEHOLDNING" }, { "MEDISINSK RAID AV KISTER", "DOKTOR TÖMMER GRAVPLASS", "LIK I GARDEROBEN", "FIN DAG FOR DR DÖD", "SISTE FEILBEHANDLING", "GRAVENDE DOKTOR OPPDAGET" }, { "LEGE SPIST OPP!", "SLAKK KVAKK", "LIVSFARLIG DIAGNOSE", "UFORSIKTIG KONSULENT", }, { "DOKTOR BLÃ…SER LETTET UT", "KIRURG 'OPERERER' SEG SELV", "LEGE MED UTBLÃ…SNING", "DOKTOR LEGGER KABEL", "MEDISIN ER NOE DRITT" }, } -- Letters -- TODO letter = { campaign_level_completed = "Bra jobbet! Du klarte brettet, men det er ike over enda! Kunne du tenkt den en stilling hos %s Sykehus?", campaign_completed = "Utrolig! Du har fullført alle brettene. NÃ¥ kan du slappe av og skryte pÃ¥ utallige nettforum om dine bragder!", campaign_level_missing = "Beklaer, men det neste brette i denne karrieren ser ut til Ã¥ mangle (Navn: %s).", --original line-ends: 5 4 2 3 [1] = { [1] = "Kjære %s//", [2] = "Fantastisk! Dette sykehuset har du driftet helt utmerket. Vi i departementet vil vite om du er interessert i Ã¥ gÃ¥ lös pÃ¥ et större prosjekt. Vi har en jobbstilling vi tror du ville passet perfekt i. Vi kan friste deg med en lönn pÃ¥ $%d. Tenk litt pÃ¥ det.//", [3] = "Er du interessert i Ã¥ jobbe pÃ¥ sykehuset %s?", }, [2] = { [1] = "Kjære %s//", [2] = "Veldig bra! Sykehuset ditt har hatt en fantastisk utvikling. Vi har en annen institusjon vi vil du skal ta over, om du er klar for forandringer. Du MÃ… ikke ta utfordringen, men det vil nok lönne seg. Lönnen er $%d//", [3] = "Vil du jobbe pÃ¥ sykehuset %s?", }, [3] = { [1] = "Kjære %s//", [2] = "Din tid pÃ¥ dette sykehuset har vært enormt vellykket. Vi spÃ¥r en stor fremtid for deg, og önsker Ã¥ tilby deg en stilling et annet sted. Lönnen vil være $%d, og vi tror du vil elske de nye utfordringene stillingen förer med seg.//", [3] = "Vil du ha stillingen pÃ¥ sykehuset %s?", }, [4] = { [1] = "Kjære %s//", [2] = "Gratulerer! Vi i departementet er meget imponert over dine evner til Ã¥ drifte sykehus. Du er definitivt en gullgutt i Helsedepartementet. Vi tror derimot at du foretrekker en litt töffere jobb. Du fÃ¥r en lönn pÃ¥ $%d, men det er din beslutning.//", [3] = "Er du interessert i Ã¥ jobbe pÃ¥ sykehuset %s?", }, [5] = { [1] = "Kjære %s//", [2] = "Hei igjen. Vi respekterer dine önsker om Ã¥ ikke forlate dette sjarmerende sykehuset, men vi ber deg om Ã¥ ta en ny vurdering. Vi vil tilby deg en god lönn pÃ¥ $%d om du er klar for Ã¥ flytte til et annet sykehus, og fÃ¥r opp driften til et respektabelt nivÃ¥.//", [3] = "Er du interessert i Ã¥ flytte til sykehuset %s nÃ¥?", }, [6] = { [1] = "Kjære %s//", [2] = "Departementet hilser deg. Vi vet hvor glad du er blitt i denne nydelige, velorganiserte institusjonen, men vi tror du bör vurdere Ã¥ fremme karrieren din nÃ¥. Du vil fÃ¥ en respektabel lederlönn pÃ¥ $%d om du bestemmer deg for Ã¥ flytte. Det er verdt Ã¥ tenke pÃ¥ det i hvertfall.//", [3] = "Vil du ta imot stillingen pÃ¥ sykehuset %s?", }, [7] = { [1] = "Kjære %s//", [2] = "God dag! Helseministeren lurer pÃ¥ om du vil revurdere din stilling pÃ¥ ditt nÃ¥værende sykehus. Vi setter pris pÃ¥ ditt nydelige sykehus, men vi tror du vil gjöre mye for en litt mer utfordrende stilling, og en lönn pÃ¥ $%d.//", [3] = "Tar du utfordringen pÃ¥ sykehuset %s?", }, [8] = { [1] = "Kjære %s//", [2] = "Hallo igjen. Du tok ikke vÃ¥r forrige utfordring, der vi tilba deg en alle tiders stilling pÃ¥ et nytt sykehus, og en ökt lönn pÃ¥ $%d. Vi mener, derimot, at du bör revurdere beslutningen din. Vi har den perfekte jobben for deg, skjönner du.//", [3] = "Tar du imot stillingen pÃ¥ sykehuset %s? Vær sÃ¥ snill?", }, [9] = { [1] = "Kjære %s//", [2] = "Du har nok en gang bevist at du er den beste innen helseadministrasjon. Ingen tvil! En slik betydningsfull prestasjon mÃ¥ belönnes, sÃ¥ vi önsker Ã¥ tilby deg stillingen som Administrerende Direktör for Alle Sykehus. Dette er en ærefull stilling, og gir deg en lönn pÃ¥ hele $%d. Du fÃ¥r din egen Ticker-Tape parade, og folk kommer til Ã¥ vise sin takknemlighet ovenfor deg, hvor enn du gÃ¥r.//", [3] = "Takk for alt du har gjort. Vi önsker deg en lang og trivelig pensjonstid.//", [4] = "", }, [10] = { [1] = "Kjære %s//", [2] = "Gratulerer! Du har driftet alle sykehus vi har gitt deg pÃ¥ en utmerket mÃ¥te. En slik prestasjon kvalifiserer deg for friheten til Ã¥ reise rundt i verden. Du blir belönnet med en pensjon pÃ¥ $%d, pluss en limousin, og alt vi ber om er at du reiser fra by til by, möter dine lidenskaplige fans, og promoterer sykehusets arbeid hvor enn du mÃ¥tte befinne deg.//", [3] = "Vi er alle stolte av deg. Det er ikke en av oss som ikke er takknemlig for ditt harde arbeid som livredder.//", [4] = "", }, [11] = { [1] = "Kjære %s//", [2] = "Din karriere har vært eksemplarisk, og du er en stor inspirasjon for oss alle. Takk for at du har driftet sÃ¥ mange sykehus, og gjort det sÃ¥ bra i alle jobbene. Vi önsker Ã¥ gi deg en livslang lönn pÃ¥ $%d, og alt vi ber deg om er Ã¥ reise offisielt med kabriolet fra by til by, og fortelle folk hvordan du tjente sÃ¥ mye penger sÃ¥ fort.//", [3] = "Du er et prakteksempel for alle höyrepolitiske mennesker, og alle i verden, uten unntak, er dine kjæreste eiendeler.//", [4] = "", }, [12] = { [1] = "Kjære %s//", [2] = "Din suksessrike karriere som den beste sykehusadministratoren siden Moses sin tid er ved veis ende. Men siden du har hatt sÃ¥ stor innvirkning pÃ¥ den koselige medisinverdenen, önsker departementet Ã¥ tilby deg en lönn pÃ¥ $%d bare for Ã¥ være til stede pÃ¥ vÃ¥re vegne i Ã¥pne fester, sjösette skip og stille opp pÃ¥ show. Hele verden etterlyser deg og det ville vært god PR for oss alle!//", [3] = "Vær sÃ¥ snill Ã¥ ta imot denne stillingen, det blir ikke hardt arbeid!//", [4] = "", }, } -- Humanoid start of names humanoid_name_starts = { [1] = "BJÖRN", [2] = "HÖY", [3] = "STOR", [4] = "GULL", [5] = "RIK", [6] = "SOL", [7] = "LANGE", [8] = "FLAT", [9] = "HARD", [10] = "MYK", [11] = "BAR", [12] = "SKODDE", [13] = "MÖRKE", [14] = "BLÃ…", [15] = "KRIG", [16] = "LAT", [17] = "KRABBE", [18] = "FISK", [19] = "VÃ…T", [20] = "SEN", [21] = "GRAV", [22] = "BAK", [23] = "LAVE", [24] = "UT", [25] = "ENGE", [26] = "GRÖN", [27] = "KUR", [28] = "KVIT", [29] = "KJEVE", [30] = "TRYGLE", [31] = "KVERN", [32] = "KRYKKE", [33] = "SKADE", } -- Humanoid end of names humanoid_name_ends = { [1] = "STAD", [2] = "BERG", [3] = "NES", [4] = "DAL", [5] = "LID", [6] = "HEIM", [7] = "HEM", [8] = "LAND", [9] = "SETH", [10] = "RUD", [11] = "VIK", [12] = "BÖ", [13] = "GAARD", [14] = "GÃ…RD", [15] = "HAUG", [16] = "LUND", [17] = "LOFT", [18] = "VER", [19] = "SAND", [20] = "LIE", [21] = "VOLD", [22] = "STRÖM", [23] = "LI", [24] = "DALEN", [25] = "DAHL", [26] = "BAKKEN", } -- VIP names vip_names = { health_minister = "Helseministeren", "Ordföreren i Greater Trumpton", -- the rest is better organized in an array. "Lawrence Nightingale", "Kong Bernard av Nederland", "Aung Sang Su Kyi, den Burmesisk Demokratiske Opposisjonslederen", "Sir Reginald Crumbly", "Billy Savile OBE", "RÃ¥dgiver Crawford Purves", "Rocket Ronnie Jepson", "En Fotballspiller i Eliteserien", "L. F. Probst, III", } -- Deseases diseases = { general_practice = { name = "Allmennpraksis", }, bloaty_head = { name = "Ballonghode", cause = "Ã…rsak - Pasienten har sniffet ost og drukket forurenset vann.", symptoms = "Symptomer - Den rammede er meget ukomfortabel.", cure = "Behandling - Man stikker hull pÃ¥ det oppsvulmede hodet, og pumper det opp igjen til korrekt PSI med en intelligent maskin.", }, hairyitis = { name = "Pelssyndrom", cause = "Ã…rsak - FullmÃ¥ne.", symptoms = "Symptomer - Ökt luktesans.", cure = "Behandling - En elektrosjokkmaskin fjerner hÃ¥ret og tetter igjen porene.", }, king_complex = { name = "Rock'n'Roll syndrom", cause = "Ã…rsak - Elivs' Ã¥nd tar over kontrollen over pasientens hode", symptoms = "Symptomer - GÃ¥r med fargede lærsko, og spiser cheeseburgere", cure = "Behandling - En Psykiater forteller pasienten hvor tÃ¥pelig han eller hun ser ut", }, invisibility = { name = "Usynlighet", cause = "Ã…rsak - Bitt av en radioaktiv (og usynlig) maur", symptoms = "Symptomer - Pasienten lider ikke - tvert imot! De utnytter situasjonen, og lurer familie og venner trill rundt", cure = "Behandling - En fargerik kur fra apoteket gjör pasienten fullt synlig igjen", }, serious_radiation = { name = "Alvorlig strÃ¥ling", cause = "Ã…rsak - Har forvekslet plutonium-isotoper med tyggegummi.", symptoms = "Symptomer - Pasienten föler seg meget ukomfortabel.", cure = "Behandling - Pasienten blir plassert i en saneringsdusj og renset fullstendig.", }, slack_tongue = { name = "Lös tunge", cause = "Ã…rsak - Kronisk overivrig i diskusjoner om sÃ¥peopera.", symptoms = "Symptomer - Tungen hever seg til det femdoble.", cure = "Behandling - Tungen blir plassert i en tungekutter. Hevelsen fjernes deretter hurtig, effektivt og smertefullt.", }, alien_dna = { name = "Utenomjordisk DNA", cause = "Ã…rsak - Bitt av facehuggere utstyrt med intelligent utenomjordisk blod.", symptoms = "Symptomer - Er under gradvis forvandling til romvesen, og har et önske om Ã¥ ta over vÃ¥re byer.", cure = "Behandling - Alt DNA blir fjernet mekanisk, renset for utenomjordiske celler, og blir hurtig erstattet.", }, fractured_bones = { name = "Benbrudd", cause = "Ã…rsak - Fall fra store höyder mot betong.", symptoms = "Symptomer - Höye knaselyder og liten bevegelighet pÃ¥ utsatte steder.", cure = "Behandling - Gipsen blir fjernet ved hjelp av en laserstyrt gipsfjerner.", }, baldness = { name = "Flintskalle", cause = "Ã…rsak - Forteller lögner og dikter opp historier for Ã¥ öke sin popularitet.", symptoms = "Symptomer - Forlegen pasient med skinnende skalle.", cure = "Behandling - HÃ¥r blir hurtig smeltet fast til pasientens hode med en smertefull hÃ¥rmaskin.", }, discrete_itching = { name = "Skrapesyke", cause = "Ã…rsak - SmÃ¥ insekter med skarpe tenner.", symptoms = "Symptomer - Pasienten klör intenst, og huden flasser.", cure = "Behandling - En Sykepleier gir pasienten en sirupaktig drikk som leger huden og hindrer videre klöe.", }, jellyitis = { name = "Gelésyndrom", cause = "Ã…rsak - Gelatinrik diett og for mye mosjon.", symptoms = "Symptomer - Meget ustödig og faller mye.", cure = "Behandling - Pasienten blir presset ned i en gelétönne i et spesielt rom.", }, sleeping_illness = { name = "Sövnsyke", cause = "ForÃ¥rsaket av overaktive sövnkjertler i munnens gane.", symptoms = "Symptomer - Sterkt önske om Ã¥ sove, hvor og nÃ¥r som helst.", cure = "Behandling - En sterk dose stimulerende medisin blir delt ut av en Sykepleier.", }, pregnancy = { name = "Graviditet", cause = "ForÃ¥rsaket av strömbrudd i urbane strök.", symptoms = "Symptomer - Lei av Ã¥ spise med konstant ölmage.", cure = "Behandling - Spedbarnet blir fjernet med keisersnitt, blir deretter vasket og presentert for sin nye mor.", }, -- unused transparency = { name = "Gjennomsiktighet", cause = "Ã…rsak - Slikket folien pÃ¥ et gammelt yoghurtbeger.", symptoms = "Symptomer - Kroppen blir gjennomsiktig og ekkel.", cure = "Behandling - En kald og fargerik drikk fra apoteket gjör susen.", }, uncommon_cold = { name = "Forkjölelse", cause = "Ã…rsak - SmÃ¥ snörrpartikler i luften.", symptoms = "Symptomer - Rennende nese, hoste og misfarget slim fra lungene.", cure = "Behandling - En real slurk hostesaft fra apoteket vil gjöre susen.", }, broken_wind = { name = "Forurensende gasser", cause = "Ã…rsak - Har löpt pÃ¥ 3d-mölle rett etter middag.", symptoms = "Symptomer - Ubehag hos folk som befinner seg rett bak pasienten.", cure = "Behandling - En sterk blanding av spesielle vannatomer mÃ¥ svelges hurtig.", }, spare_ribs = { name = "Juleribbe", cause = "Ã…rsak - Pasienten har sittet pÃ¥ kalde steingulv.", symptoms = "Symptomer - Ubehagelig fölelse i brystet.", cure = "Behandling - Ribben fjernes av to Kirurger, og leveres til pasienten i en doggybag.", }, kidney_beans = { name = "Kikkerter", cause = "Ã…rsak - Pasienten har spist isbiter.", symptoms = "Symptomer - Smerte og hyppige turer til toalettet.", cure = "Behandling - To Kirurger fjerner de erteliknende parasittene, uten Ã¥ beröre nyrene!", }, broken_heart = { name = "Knust hjerte", cause = "Ã…rsak - Noen er rikere, yngre og slankere enn pasienten.", symptoms = "Symptomer - Hysterisk grÃ¥tende. Blodsprengte fingertupper etter Ã¥ ha revet opp feriebilder.", cure = "Behandling - To Kirurger spretter opp brystet og setter deretter hjertet forsiktig sammen, mens de holder pusten.", }, ruptured_nodules = { name = "Knekte nötter", cause = "Ã…rsak - Strikkhopp om vinteren.", symptoms = "Symptomer - Umulig Ã¥ sitte behagelig.", cure = "Behandling - To kvalifiserte Kirurger mÃ¥ fjerne nöttene med stödige hender.", }, tv_personalities = { name = "Programledersyndrom", cause = "Ã…rsak - TV-titting pÃ¥ dagtid.", symptoms = "Symptomer - Forestiller seg at han eller hun er programleder i frokost-tv, og elsker Ã¥ introdusere kjökkenseansen.", cure = "Behandling - En Psykiater mÃ¥ overtale pasienten til Ã¥ selge fjernsynet og heller kjöpe radio.", }, infectious_laughter = { name = "Smittsom latter", cause = "Ã…rsak - Klassisk situasjonskomedie pÃ¥ TV.", symptoms = "Symptomer - Ler hjelpelöst hele tiden, og repeterer stadig dÃ¥rlige poeng som absolutt ikke er morsomme.", cure = "Behandling - En kvalifisert Psykiater mÃ¥ minne pasienten pÃ¥ at dette faktisk er en alvorlig tilstand.", }, corrugated_ankles = { name = "Böyde ankler", cause = "Ã…rsak - Busskjöring over fartsdempere.", symptoms = "Symptomer - Skoene passer ikke.", cure = "Behandling - En giftig blanding av urter og krydder mÃ¥ drikkes for Ã¥ rette ut anklene.", }, chronic_nosehair = { name = "Kronisk nesehÃ¥r", cause = "Ã…rsak - Snöfter med forakt pÃ¥ folk med lavere inntekt.", symptoms = "Symptomer - SÃ¥ mye nesehÃ¥r at en grevling kunne bodd der.", cure = "Behandling - En ekkel hÃ¥rfjernende drikk blir inntatt gjennom munnen. FÃ¥s pÃ¥ apoteket.", }, third_degree_sideburns = { name = "Tredjegrads koteletter", cause = "Ã…rsak - Lengter tilbake til 70-tallet.", symptoms = "Symptomer - Stort hÃ¥r, tettsittende klær, langt skinnskjegg og glitter.", cure = "Behandling - Psykiatrisk personell mÃ¥, ved hjelp av nymoderne teknikker, overbevise pasienten om at parykk er noe tull.", }, fake_blood = { name = "Teaterblod", cause = "Ã…rsak - Pasienten er ofte utsatt for narrestreker.", symptoms = "Symptomer - Rödt blod som dunster ved kontakt med klær.", cure = "Behandling - Eneste mÃ¥ten Ã¥ behandle dette pÃ¥, er Ã¥ fÃ¥ en Psykiater til Ã¥ roe ned pasienten.", }, gastric_ejections = { name = "Krydrede oppstöt", cause = "Ã…rsak - Sterkt krydret meksikansk eller indisk mat har skylden.", symptoms = "Symptomer - Gulper karrikylling og tacolefser.", cure = "Behandling - En Sykepleier gir pasienten en bindende indisk kumelk-blanding som forhindrer nye oppstöt.", }, the_squits = { name = "Lös mage", cause = "Ã…rsak - Har spist pizzabiter som har falt bak komfyren.", symptoms = "Symptomer - Æsj! Tipper du vet symptomene.", cure = "Behandling - En klebrig blanding kjemikalier mÃ¥ drikkes for Ã¥ stabilisere magen innvendig.", }, iron_lungs = { name = "Jernlunger", cause = "Ã…rsak - Forurenset byluft blandet med kebabrester.", symptoms = "Symptomer - Kan puste flammer og bröle höyt under vann.", cure = "Behandling - To Kirurger mykner de solide lungene i operasjonssalen.", }, sweaty_palms = { name = "HÃ¥ndsvette", cause = "Ã…rsak - Er livredd jobbintervjuer.", symptoms = "Symptomer - Ã… hÃ¥ndhilse pÃ¥ pasienten er som Ã¥ ta tak i en vÃ¥t svamp.", cure = "Behandling - En Psykiater mÃ¥ snakke pasienten ut av denne oppdiktede lidelsen.", }, heaped_piles = { name = "Hemoroider", cause = "Ã…rsak - StÃ¥r i nærheten av drikkevannskjölere.", symptoms = "Symptomer - Pasienten föler at han eller hun sitter pÃ¥ en pose med stein.", cure = "Behandling - En behagelig, men meget syrlig drikk, lösner opp hemoroidene innenifra.", }, gut_rot = { name = "MagerÃ¥te", cause = "Ã…rsak - Onkel Georgs miks av hostesaft og whisky.", symptoms = "Symptomer - Ingen hoste, men ingen magesekk heller.", cure = "Behandling - En Sykepleier skriver ut en rekke kjemikalier og gjenskaper veggen i magesekken.", }, golf_stones = { name = "Golfsteiner", cause = "Ã…rsak - Utsatt for giftige gasser fra golfballer.", symptoms = "Symptomer - Forvirring og kraftig skamfölelse.", cure = "Behandling - Steinene fjernes kjapt og effektivt av to Kirurger.", }, unexpected_swelling = { name = "Uventet hevelse", cause = "Ã…rsak - Hva som helst uventet.", symptoms = "Symptomer - Hevelse.", cure = "Behandling - Hevelsen mÃ¥ skjæres bort av to Kirurger.", }, diag_scanner = { name = "Diag Skanner", }, diag_blood_machine = { name = "Diag Blodmaskin", }, diag_cardiogram = { name = "Diag Kardio", }, diag_x_ray = { name = "Diag Röntgen", }, diag_ultrascan = { name = "Diag Ultraskanner", }, diag_general_diag = { name = "Diag Generell", }, diag_ward = { name = "Diag Sengeavd.", }, diag_psych = { name = "Diag Psykiatri", }, autopsy = { name = "Obduksjon", }, } -- Faxes fax = { -- Debug fax debug_fax = { -- never seen this, must be a debug option of original TH -- TODO: make this nicer if we ever want to make use of it close_text = "Yes, yes, yes!", text1 = "BEST COUNT %d", -- %d text2 = "TOTAL PEOPLE IN HOSPITAL %d CHECKING AGAINST %d", -- %d %d text3 = "FIGURES : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", -- %d %d %d %d %d text4 = "FACTORS : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", -- %d %d %d %d %d text5 = "CONTRIBN : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d PERCENT", -- %d %d %d %d %d text6 = "THE FOLLOWING FACTORS ARE ALSO APPLIED", text7 = "REPUTATION: %d EXPECTED %d REDUCTION %d", -- %d %d %d text8 = "AMENITIES %d PEEPS HANDLED %d REDUCTION %d", -- %d %d %d text9 = "DISASTERS %d ALLOWED (MTHS) %d (%d)REDUCTION %d", -- %d %d %d %d text10 = "KILLS %d ALLOWED (MTHS) %d (%d) REDUCTION %d", -- %d %d %d %d text11 = "PEOPLE THIS MONTH %d", -- %d }, -- Emergency emergency = { choices = { accept = "Ja, jeg er klar til Ã¥ hÃ¥ndtere dette", refuse = "Nei, jeg nekter Ã¥ ta meg av dette", }, location = "Det har skjedd en ulykke ved %s", num_disease = "Det er %d mennesker med %s som trenger akutt behandling.", num_disease_singular = "Det er 1 person med %s som trenger akutt behandling.", cure_possible_drug_name_efficiency = "Du har det som trengs av nödvendig utstyr og ferdigheter, og du har medisinen de trenger. Det er %s og medisinen er %d prosent effektiv.", cure_possible = "Du har nödvendig utstyr og de ferdigheter som trengs for Ã¥ ta deg av dette.", cure_not_possible_build_and_employ = "Du vil mÃ¥tte bygge %s og ansette en %s", cure_not_possible_build = "Du mangler %s for Ã¥ hÃ¥ndtere dette", cure_not_possible_employ = "Du mangler en %s for Ã¥ kunne hÃ¥ndtere dette", cure_not_possible = "Du kan ikke behandle denne sykdommen for öyeblikket", bonus = "Om du klarer Ã¥ hÃ¥ndtere dette nödstilfellet, vil du fÃ¥ en bonus pÃ¥ maksimalt %d. Om du feiler derimot, vil ryktet ditt fÃ¥ en kraftig smell.", free_build = "Hvis du lykkes, vil ditt omdömme vil öke. Men hvis du mislykkes, vil ditt omdömme bli alvorlig svekket!", locations = { "A.Toms VÃ¥penkjeller", "Snobbeuniversitetet", "Buskerud Hagesenter", "Forskningsinstituttet For Farlige Emner", "Foreningen For Folkedansende Menn", "puben Frosk Og Kyr", "Hallgeir Juniors BegravelsesbyrÃ¥ Og Spritbutikk", "Mama-Tai Krydderhus", "Berts Varehus For Brukt Petrokjemi", }, }, emergency_result = { close_text = "Klikk for Ã¥ gÃ¥ ut", earned_money = "Av en maksimal bonus pÃ¥ %d, har du tjent %d.", saved_people = "Du reddet %d personer av totalt %d.", }, -- Disease discovered disease_discovered_patient_choice = { choices = { send_home = "Send pasienten hjem.", wait = "FÃ¥ pasienten til Ã¥ vente litt pÃ¥ sykehuset.", research = "Send pasienten til forskningsavdelingen.", }, need_to_build_and_employ = "Om du bygger %s og ansetter en %s kan du löse problemet med en gang.", need_to_build = "Du mÃ¥ bygge %s for Ã¥ hÃ¥ndtere dette.", need_to_employ = "Ansett en %s for Ã¥ hjelpe pasienten.", can_not_cure = "Du kan ikke behandle denne sykdommen.", disease_name = "Dine ansatte har stött pÃ¥ et tilfelle av %s.", what_to_do_question = "Hva vil du gjöre med pasienten?", guessed_percentage_name = "Teamet ditt mener de vet hva som feiler pasienten. Det er %d prosent sannsynlighet for at det er %s", }, disease_discovered = { close_text = "En ny sykdom er oppdaget.", can_cure = "Du kan behandle denne sykdommen.", need_to_build_and_employ = "Om du bygger %s og ansetter en %s kan du hÃ¥ndtere dette.", need_to_build = "Du mÃ¥ bygge %s for Ã¥ hÃ¥ndtere dette.", need_to_employ = "Ansett en %s for Ã¥ behandle pasienter med denne sykdommen.", discovered_name = "Ditt team har oppdaget et tilfelle av %s.", }, -- Epidemic epidemic = { choices = { declare = "Offentliggjör epidemi, betal boten og godta at ryktet ditt blir svekket.", cover_up = "Forsök Ã¥ behandle alle infiserte pasienter för tiden renner ut, og för noen forlater sykehuset.", }, disease_name = "Dine Leger har oppdaget en svært smittsom form for %s.", declare_explanation_fine = "Om du offentliggjör epidemien, mÃ¥ du betale en bot pÃ¥ %d, ditt rykte fÃ¥r en smell, og samtlige pasienter blir vaksinert automatisk.", cover_up_explanation_1 = "Om du derimot forsöker Ã¥ holde epidemien skjult, mÃ¥ du behandle samtlige infiserte pasienter för helsemyndighetene fÃ¥r rede pÃ¥ det.", cover_up_explanation_2 = "Om en Helseinspektör kommer pÃ¥ besök og finner ut at du pröver Ã¥ skjule epidemien, kan han gÃ¥ drastisk til verks.", }, -- Epidemic result epidemic_result = { close_text = "Hurra!", failed = { part_1_name = "Gjennom forsöket pÃ¥ Ã¥ skjule det faktum at vi sto ovenfor et smittsomt utbrudd av %s", part_2 = "klarte personalet ditt selvfölgelig Ã¥ spre epidemien ut til alle sykehusets naboer.", }, succeeded = { part_1_name = "Helseinspektören hörte rykter om at institusjonen din slet med et alvorlig tilfelle av %s.", part_2 = "Han har derimot ikke lykkes i Ã¥ finne beviser som bekrefter ryktene.", }, compensation_amount = "Myndighetene har besluttet Ã¥ gi deg %d i kompensasjon for skaden disse lögnene har pÃ¥fört ditt gode rykte.", fine_amount = "Myndighetene har erklært nasjonal unntakstilstand og bötelegger deg med %d.", rep_loss_fine_amount = "Avisene har nÃ¥ nytt forsidestoff, og ditt rykte fÃ¥r en kraftig smell. I tillegg blir du bötelagt med %d.", hospital_evacuated = "HelserÃ¥det har ikke annet valg enn Ã¥ evakuere sykehuset ditt.", }, -- VIP visit query vip_visit_query = { choices = { invite = "Send offisiell invitasjon til V.I.P.", refuse = "Avvis forespörselen fra V.I.P med dÃ¥rlige unnskyldninger.", }, vip_name = "%s har ytret et önske om Ã¥ fÃ¥ besöke sykehuset ditt", }, -- VIP visit result vip_visit_result = { close_text = "Takk for at du besökte sykehuset.", telegram = "Telegram!", vip_remarked_name = "Etter sitt besök pÃ¥ sykehuset ditt, sa %s fölgende:", cash_grant = "Du er blitt tildelt %d i kontanter.", rep_boost = "Ditt rykte i næromrÃ¥det har fÃ¥tt en opptur.", rep_loss = "Ditt rykte har fÃ¥tt seg en smell.", remarks = { free_build = { [1] = "Det er et veldig fint sykehus du har der! Men det er ikke veldig vanskelig Ã¥ fÃ¥ det til Ã¥ fungerer uten pengebegrensninger.", [2] = "Jeg er ingen ökonom, men jeg tror jeg kunne styrt dette sykehuset ogsÃ¥, hvis du skjönner hva jeg mener.", [3] = "Et meget veldrevet sykehus. Men se opp for ökonomiske nedgangstider! Ã…, det er sant. Du trenger ikke Ã¥ bekymre deg for det.", }, super = { "For et flott sykehus. Neste gang jeg blir alvorlig syk vil jeg hit.", "Dette er hva jeg kaller et sykehus.", "Et supert sykehus. Og jeg vet hva jeg snakker om, for jeg har vært med pÃ¥ en del.", }, good = { "For et velorganisert sykehus. Takk for at jeg fikk komme hit.", "Hmm. Ingen dÃ¥rlig medisinsk institusjon dette, det skal være visst.", "Jeg likte ditt sjarmerende sykehus. Forresten, noen som blir med Ã¥ spise indisk?", }, mediocre = { "Vel, jeg har sett verre. Men du burde gjöre noen forbedringer.", "Ã… kjære min tid. Dette er ikke stedet Ã¥ gÃ¥ om du föler deg dÃ¥rlig.", "Et helt alminnelig sykehus, for Ã¥ være ærlig. Jeg hadde forventet meg noe mer.", }, bad = { "Hva gjör jeg her egentlig? Dette her var verre enn en firetimers opera!", "Dette var ekkelt. Kaller du dette et sykehus? Ser mer ut som en svinesti!", "Jeg er lei av Ã¥ være en offentlig person og lei stinkende hull som dette! Jeg sier opp.", }, very_bad = { "For et syn. Dette sykehuset skal jeg pröve Ã¥ fÃ¥ lagt ned.", "Jeg har aldri sett pÃ¥ maken. For en skandale!", "Jeg er sjokkert. Du kan ikke kalle dette et sykehus! Jeg gÃ¥r og tar meg en sterk drink.", }, }, }, -- Diagnosis failed diagnosis_failed = { choices = { send_home = "Send pasienten hjem", take_chance = "Gjett sannsynlig behandling.", wait = "FÃ¥ pasienten til Ã¥ vente mens du bygger flere diagnoserom.", }, situation = "Vi har brukt alle vÃ¥re diagnosemetoder pÃ¥ denne pasienten, men vi vet fremdeles ikke sikkert hva som er galt.", what_to_do_question = "Hva skal vi gjöre med pasienten?", partial_diagnosis_percentage_name = "Det er %d prosent sannsynlighet for at vi vet hvilken type %s pasienten har.", }, } -- Queue window queue_window = { num_in_queue = "Kölengde", num_expected = "Ventet", num_entered = "Antall besök", max_queue_size = "Maks str.", } -- Handyman window handyman_window = { parcel = "Tomt", all_parcels = "Alle tomter", } -- Dynamic info dynamic_info = { patient = { actions = { dying = "Döende", awaiting_decision = "Venter din beslutning", queueing_for = "I köen til %s", -- %s on_my_way_to = "PÃ¥ vei til %s", -- %s cured = "Kurert!", fed_up = "Sint, forlater sykehuset", sent_home = "Sendt hjem", sent_to_other_hospital = "Henvist til annet sykehus", no_diagnoses_available = "Ingen flere diagnosemuligheter", no_treatment_available = "Ingen behandling mulig - Jeg gÃ¥r hjem", waiting_for_diagnosis_rooms = "Venter pÃ¥ at du skal bygge flere diagnoserom for meg", waiting_for_treatment_rooms = "Venter pÃ¥ at du skal bygge behandlingsrom for meg", prices_too_high = "Prisene er for höye - Jeg gÃ¥r hjem", epidemic_sent_home = "Sendt hjem av inspektör", epidemic_contagious = "Jeg er smittsom", epidemic_vaccinated = "Jeg er ikke smittsom lenger", }, diagnosed = "Diagnose: %s", -- %s guessed_diagnosis = "Gjettet diagnose: %s", -- %s diagnosis_progress = "Diagnoseprosess", emergency = "Akutt: %s", -- %s (disease name) }, vip = "Besökende VIP", health_inspector = "Helseinspektör", staff = { psychiatrist_abbrev = "Psyk.", actions = { waiting_for_patient = "Venter pÃ¥ pasient", wandering = "Vandrer rundt omkring", going_to_repair = "Skal reparere %s", -- %s (name of machine) }, tiredness = "Tretthet", ability = "Evner", -- unused? }, object = { strength = "Holdbarhet: %d", -- %d (max. uses) times_used = "Ganger brukt: %d", -- %d (times used) queue_size = "Kölengde: %d", -- %d (num of patients) queue_expected = "Forventet kölengde: %d", -- %d (num of patients) }, } introduction_texts = { demo = "Velkommen til demonstrasjonssykehuset!" .. "Uheldigvis inneholder demoversjonen kun dette nivÃ¥et. Uansett sÃ¥ er det mer enn nok Ã¥ gjöre her for Ã¥ holde deg opptatt en stund!" .. "Du vil möte pÃ¥ forskjellige sykdommer som krever forskjellige rom for Ã¥ kureres. Fra tid til annen kan nödstilfeller oppstÃ¥. Du mÃ¥ ogsÃ¥ forske frem nye rom ved hjelp av en forskningsavdeling." .. "MÃ¥let ditt er Ã¥ tjene $100,000, ha et sykehus som er verdt $70,000 og et omdömme pÃ¥ 700, samt kurert minst 75% av pasientene." .. "Pass pÃ¥ at omdömmet ditt ikke faller under 300 og at du ikke dreper mer enn 40% av pasientene, for ellers vil du tape nivÃ¥et." .. "Lykke til!", level1 = "Velkommen til ditt förste sykehus!//" .. "FÃ¥ stedet opp og gÃ¥ ved Ã¥ plassere en Resepsjon, bygge en Allmennpraksis, og ansette en Resepsjonist og en Lege. " .. "Vent sÃ¥ til det begynner Ã¥ skje ting." .. "Det er smart Ã¥ bygge Psykiatri og ansette en Lege med fordypning innenfor psykiatri. " .. "Et Apotek og en Sykepleier er essensielt for Ã¥ kurere pasientene dine. " .. "Se opp for mange tilfeller av Ballonghode - et Pumperom vil fort kunne være til stor hjelp. " .. "Du mÃ¥ kurere 10 pasienter og sörge for at omdömmet ditt ikke blir mindre enn 200. ", level2 = "Det er et större spekter av plager i dette omrÃ¥det. " .. "Bygg sykehuset for Ã¥ behandle flere pasienter, og planlegg en egen Forskningsavdeling. " .. "Husk Ã¥ holde institusjonen ren, og streb etter sÃ¥ höyt omdömme som mulig - du vil mÃ¥tte hÃ¥ndtere plager som Lös tunge, sÃ¥ du trenger en Tungeklinikk. " .. "Du kan ogsÃ¥ bygge Kardiorom for Ã¥ forbedre diagnostisering. " .. "Begge disse rommene vil mÃ¥tte forskes pÃ¥ för du kan bygge de. Du kan ogsÃ¥ utvide sykehustomten slik at du fÃ¥r mer plass Ã¥ boltre deg pÃ¥ - Bruk OmrÃ¥dekartet til dette. " .. "Streb etter et omdömme pÃ¥ 300 og en banksaldo pÃ¥ $10,000, samt 40 kurerte pasienter. ", level3 = "Du setter opp et sykehus i et velstÃ¥ende omrÃ¥de denne gangen. " .. "Helsedepartementet er ute etter at du klarer Ã¥ sikre en sunn profitt her. " .. "Du mÃ¥ fÃ¥ et godt rykte til Ã¥ begynne med, men nÃ¥r sykehuset gÃ¥r av seg selv, sÃ¥ konsentrer deg om Ã¥ tjene sÃ¥ mye penger du klarer. " .. "Det er ogsÃ¥ en sjanse for at nödssituasjoner oppstÃ¥r. " .. "Dette er nÃ¥r store mengder mennesker kommer pÃ¥ en gang med samme tilstand. " .. "Kurerer du alle innen tidsfristen sÃ¥ fÃ¥r du et bedre rykte, og en stor xbonus. " .. "Sykdommer som Rock'n'Roll-syndrom kan inntreffe og du bör budsjettere for en Operasjonssal med en Sykestue i nærheten. " .. "Tjen opp $20,000 for Ã¥ klare nivÃ¥et.", level4 = "Hold alle pasientene dine fornöyde, ta deg av dem sÃ¥ effektivt som mulig og hold dödsfall til et absolutt minimum. " .. "Ditt omdömme stÃ¥r pÃ¥ spill, sÃ¥ sörg for at du fÃ¥r det sÃ¥ höyt som mulig. " .. "Ikke bekymre deg for mye over penger - det vil komme etter som ditt vitale omdömme vokser. " .. "Du vil kunne skolere Leger til Ã¥ utvide sine evner. " .. "Du kan komme til fÃ¥ pasienter som synes Ã¥ være mer gjennomsiktig enn de fleste. " .. --sjekk english.lua er det bra nok oversettelse? "OppnÃ¥ et omdömme pÃ¥ over 500.", level5 = "Dette blir et travelt sykehus, siden du mÃ¥ hÃ¥ndtere et bredt spekter av tilfeller. " .. "Legene du kan ansette kommer rett fra skolen, sÃ¥ det kommer til Ã¥ være avgjörende for deg Ã¥ bygge et Klasserom og skolere dem til et akseptabelt nivÃ¥. " .. "Du har kun tre Konsulenter til Ã¥ lære opp de uerfarne medarbeiderne, sÃ¥ hold dem lykkelige slik at de ikke slutter. " .. "Merk deg ogsÃ¥ at sykehusets fundament stÃ¥r pÃ¥ en grunn full av geologiske feil. " .. "Faren for jordskjelv er alltid tilstedeværende. " .. "De vil forÃ¥rsake betydelig skade pÃ¥ maskiner, og forstyrre den jevne driften av sykehuset. " .. "FÃ¥ omdömmet ditt opp til 400, og ha $50,000 i banken for Ã¥ lykkes. Du mÃ¥ ogsÃ¥ kurere 200 pasienter.", level6 = "Bruk all din kunnskap til Ã¥ sette opp et velsmurt og kompetent sykehus som gjör et sunt overskudd og kan hÃ¥ndtere alt som den sykelige offentligheten kan kaste pÃ¥ det. " .. --todo - godt nok oversatt? "Du bör være klar over at atmosfæren rundt her er kjent for Ã¥ bære med seg bakterier og infeksjoner. " .. "Med mindre du klarer Ã¥ holde institusjonen din omhyggelig ren, kan du stÃ¥ overfor en rekke epidemier blant pasientene. " .. "Pass pÃ¥ at du skaffer deg $150,000, og at sykehuset er verdt over $140,000.", level7 = "Her vil du være under nöye gransking fra Helsedepartementet, sÃ¥ sörg for at kontoene dine viser at du tjener en masse penger, og at omdömmet ditt er svært bra. " .. "Vi har ikke rÃ¥d til unödvendige dödsfall - det er dÃ¥rlig for forretningene. " .. "Sörg for at personalet er i tipp-topp form, og at du har alt utstyret du trenger. " .. "FÃ¥ et omdömme pÃ¥ 600, pluss $200,000 i banken.", level8 = "Det er opp til deg Ã¥ sette opp det mest effektive og kostnadseffektive sykehuset som mulig. " .. "Menneskene rundt her er ganske velstÃ¥ende, sÃ¥ flÃ¥ dem for sÃ¥ mye grunker du bare klarer. " .. "Husk at det Ã¥ kurere mennesker er veldig fint, men du trenger virkelig pengene det bringer. " .. "Behandle disse syke personene med Pengeutsugeren. " .. "Samle opp en pengehaug pÃ¥ $300,000 for Ã¥ fullföre dette nivÃ¥et.", level9 = "Etter Ã¥ ha fylt opp Ministerens bankkonto og finansiert Ministerens nye limousin, kan du nÃ¥ konsentrere deg om Ã¥ lage et omsorgsfullt og velfungerende sykehus for de trengende. " .. "Du mÃ¥ forvente Ã¥ stöte pÃ¥ en rekke problemer her." .. "Om du har nok av rom og flinke ansatte, skal du kunne ha dette under kontroll. " .. "Sykehuset ditt mÃ¥ ha en verdi pÃ¥ $200,000, og du mÃ¥ ha $400,000 i banken. " .. "Med noe mindre fÃ¥r du ikke fullfört dette nivÃ¥et.", level10 = "I tillegg til Ã¥ fÃ¥ bukt med alle sykdommene som dukker opp i denne skogkanten, sÃ¥ vil Departementet at du bruker litt tid pÃ¥ Ã¥ konsentrere deg om effektiviteten av legemidlene dine. " .. "Det har kommet noen klager fra Ofsick, Helsedepartementets vakthund, sÃ¥ for at alt skal se bra ut du mÃ¥ sörge for at alle legemidler er svært effektive. " .. --todo (bytte ut "Ofsick" med et norskt navn).. "Kontroller ogsÃ¥ at sykehuset i tillegg er uklanderlig. Hold dödsfallene nede. " .. "Som et hint, sÃ¥ kanskje du bör holde av litt plass til en Gelétönne. " .. "Utvikle alle dine medisiner til minst 80 prosent effektivitet, fÃ¥ et omdömme pÃ¥ 650 og gjem unna $500,000 i banken for Ã¥ vinne. ", level11 = "Du har fÃ¥tt muligheten til Ã¥ bygge det ultimate innen sykehus. " .. "Dette er et meget prestisjefylt omrÃ¥de, og Departementet önsker Ã¥ se det best mulige sykehuset. " .. "Vi vil forvente at du gjör store penger, har et ypperlig og godt omdömme og dekker alle mulige hendelser. " .. "Dette er en viktig jobb. " .. "Du mÃ¥ være virkelig begavet for Ã¥ gjennomföre det. " .. "Merk ogsÃ¥ at det har vært observasjoner av UFO-er i omrÃ¥det. Sörg for at personalet er forberedt pÃ¥ noen uventede gjester. " .. "Sykehuset ditt mÃ¥ være verdt $240,000, du mÃ¥ ha $500,000 i banken og ditt omdömme mÃ¥ være pÃ¥ minst 700.", level12 = "Du har fÃ¥tt moderen av alle utfordringer nÃ¥. " .. "Departementet er imponert over din suksess, og har skaffet toppjobben for deg; de vil at du skal bygge enda et storslagent sykehus, skaffe en stor haug med penger og fÃ¥ et bra utrolig rykte. " .. "Det forventes at du kjöper opp alle omrÃ¥dene du klarer, kurerer alle sykdommer (og da mener vi alle) og vinner alle premiene. " .. "Tror du at du klarer det?" .. "Tjen $650,000, kurer 750 pasienter og fÃ¥ et omdömme pÃ¥ 800 for Ã¥ vinne dette nivÃ¥et.", level13 = "Din enestÃ¥ende dyktighet som sykehusadministrator har blitt oppdaget av Hemmelig Super-avdeling fra Superhemmelige Tjenester. " .. "De har en spesiell bonus for deg; det er et rotteinfisert sykehus som trenger en effektiv Terminator. " .. "Du mÃ¥ skyte sÃ¥ mange rotter som mulig för Vaktmesterne rydder opp all söpla. " .. "Tror du at du klarer oppgaven?", level14 = "Det er nok en utfordring - det helt uventede overraskelsessykehuset. " .. "Om du klarer Ã¥ gjöre en suksess ut av dette, vil du bli vinneren over alle andre vinnere. " .. "Ikke forvent at det skal være fort gjort, ettersom det er det töffeste oppdraget du noensinne vil fÃ¥. " .. "Lykke til!", level15 = "Ok, det var den grunnleggende teknikken i Ã¥ sette et sykehus sammen.//" .. "Legene dine kommer til Ã¥ trenge all den hjelpen de kan fÃ¥ til Ã¥ diagnostisere noen av disse pasientene. Du kan hjelpe dem ved Ã¥ " .. "bygg et ny diagnoserom, for eksempel Generell Diagnose.", level16 = "NÃ¥r du har diagnostisert noen av pasientene mÃ¥ du bygge behandlingsrom og klinikker for Ã¥ kurere dem - en god idé Ã¥ begynne " .. "med Apoteket. Du trenger ogsÃ¥ en Sykepleier for Ã¥ utlevere ulike legemidler fra Apoteket.", level17 = "Siste advarsel - hold öye med omdömmet ditt - det er dette som tiltrekker pasienter til sykehuset ditt. " .. "Om du ikke dreper for mange mennesker og samtidig holder pasientene noenlunde i godt humör, skal du ikke ha for store problemer med dette nivÃ¥et!//" .. "NÃ¥ mÃ¥ du klare deg selv. Lykke til med det.", level18 = "", } -- Miscellaneous -- Category of strings that fit nowhere else or we are not sure where they belong. -- If you think a string of these fits somewhere else, please move it there. -- Don't forget to change all references in the code and other language files. misc = { grade_adverb = { mildly = "mild", moderately = "moderat", extremely = "ekstrem", }, done = "Ferdig", pause = "Pause", send_message = "Send beskjed til spiller %d", -- %d (player number) send_message_all = "Send beskjed til alle spillere", save_success = "Spill lagret", save_failed = "FEIL: Kunne ikke lagre spill", hospital_open = "Sykehus Ã¥pent", out_of_sync = "Spillet ute av synk", load_failed = "Kunne ikke laste tidligere spill", low_res = "Lav oppl.", balance = "Balansefil:", mouse = "Mus", force = "Styrke", } -- Original credits (untranslated) original_credits = { [1] = " ", [2] = " ", [3] = " ", [4] = " ", [5] = " ", [6] = " ", [7] = " ", [8] = " ", [9] = " ", [10] = " ", [11] = " ", [12] = ":Designed and Created by", [13] = ":Bullfrog Productions", [14] = " ", [15] = ":Pluto Development Team", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = " ", [29] = " ", [30] = " ", [31] = ":Programming", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = " ", [38] = " ", [39] = " ", [40] = ":Art", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = " ", [47] = " ", [48] = " ", [49] = ":Additional Programming", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = " ", [55] = " ", [56] = " ", [57] = ":Additional Art", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = " ", [66] = " ", [67] = " ", [68] = ":Intro Sequence", [69] = ",", [70] = "Stuart Black", [71] = " ", [72] = " ", [73] = " ", [74] = ":Music and Sound Effects", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = " ", [79] = " ", [80] = " ", [81] = ":Additional Music", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = " ", [86] = " ", [87] = " ", [88] = ":Announcer Voiceover", [89] = ",", [90] = "Rebecca Green", [91] = " ", [92] = " ", [93] = " ", [94] = ":Level Design", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = " ", [101] = " ", [102] = " ", [103] = ":Scripting", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = " ", [109] = " ", [110] = " ", [111] = ":R&D", [112] = " ", [113] = ":Graphics Engine", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = " ", [118] = " ", [119] = " ", [120] = ":R&D Support", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = " ", [127] = " ", [128] = " ", [129] = ":Library and Tools", [130] = " ", [131] = "Dos and Win 95 Library", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = " ", [137] = " ", [138] = " ", [139] = ":Network Library", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = " ", [144] = " ", [145] = " ", [146] = ":Sound Library", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = " ", [151] = " ", [152] = " ", [153] = ":Installer Programming", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = " ", [159] = " ", [160] = " ", [161] = ":Moral Support", [162] = ",", [163] = "Peter Molyneux", [164] = " ", [165] = " ", [166] = " ", [167] = ":Testing Manager", [168] = ",", [169] = "Andy Robson", [170] = " ", [171] = " ", [172] = " ", [173] = ":Lead Testers", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = " ", [178] = " ", [179] = " ", [180] = ":Play Testers", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = " ", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = " ", [203] = "And all our other Work Experience Play Testers", [204] = " ", [205] = " ", [206] = " ", [207] = ":Technical Support", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = " ", [213] = " ", [214] = " ", [215] = ":Marketing", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = " ", [220] = " ", [221] = " ", [222] = ":With thanks to:", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = " ", [229] = " ", [230] = " ", [231] = ":PR", [232] = ",", [233] = "Cathy Campos", [234] = " ", [235] = " ", [236] = " ", [237] = ":Documentation", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = " ", [244] = " ", [245] = " ", [246] = ":Documentation & Packaging Design", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = " ", [251] = " ", [252] = " ", [253] = ":Localisation Project Manager", [254] = ",", [255] = "Carol Aggett", [256] = " ", [257] = " ", [258] = " ", [259] = ":Localisation", [260] = ",", [261] = "Sandra Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = " ", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = " ", [268] = "C.T.O. S.p.A. Zola Predosa (BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = " ", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Martínez", [276] = " ", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = " ", [281] = " ", [282] = " ", [283] = ":Production", [284] = ",", [285] = "Rachel Holman", [286] = " ", [287] = " ", [288] = " ", [289] = ":Producer", [290] = ",", [291] = "Mark Webley", [292] = " ", [293] = " ", [294] = " ", [295] = ":Associate Producer", [296] = ",", [297] = "Andy Nuttall", [298] = " ", [299] = " ", [300] = " ", [301] = ":Operations", [302] = ",", [303] = "Steve Fitton", [304] = " ", [305] = " ", [306] = " ", [307] = ":Company Administration", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":Company Management", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":All at Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":Special Thanks to", [332] = ",", [333] = "Everyone at Frimley Park Hospital", [334] = " ", [335] = ":Especially", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = " ", [340] = " ", [341] = " ", [342] = ":Keep On Thinking", [343] = " ", [344] = " ", [345] = " ", [346] = " ", [347] = " ", [348] = " ", [349] = " ", [350] = " ", [351] = " ", [352] = " ", [353] = " ", [354] = " ", [355] = " ", [356] = " ", [357] = " ", [358] = " ", [359] = " ", [360] = " ", [361] = ".", } CorsixTH-0.61/CorsixTH/Lua/languages/original_strings.lua000066400000000000000000002013651321660673500234350ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- Note: This is a pseudo language that defines the mapping between new string -- identifiers and original strings. This language cannot be selected directly. Language("original_strings") SetSpeechFile("Sound-".. ... ..".dat") local S = LoadStrings("Lang-".. ... ..".dat") Encoding(utf8) -- Fix inconsistencies/bugs in german lang file. local function fixGermanStrings(lang_num) if lang_num ~= 2 then return end -- Strings [44][168] (which contains a %s) and [44][169] (contains %d) were -- replaced with a single string [44][168] with %s and %d in german full version. -- Due to this, the remaining strings in section 44 were also off by one. -- Solve it by splitting the string into two. -- NB: ONLY in full version, in demo this is NOT broken (thus do length check) if #S[44][168] == 108 then for str = 218, 169, -1 do S[44][str+1] = S[44][str] end S[44][169] = S[44][168]:sub(46) S[44][168] = S[44][168]:sub(1, 45) end -- Strings [28][32] and [28][33] are equal in the German translation of the full -- version, this causes a mismatch with the English strings -- eng-strings [28][33] to [28][63] are equal to ger-strings [28][34] to [28][64] -- NB: ONLY in full version, demo version is not affected (thus do checks) if S[28][32] == S[28][33] and #S[28] == 64 then for str = 33, 63 do S[28][str] = S[28][str+1] end end -- German spelling reform: eszett changed to double s in a number of words. -- Mass-apply this change here, so we don't have to override all those strings. local repl = { ["daß"] = "dass", ["muß"] = "muss", -- includes occurrences of mußte, mußten ["läßt"] = "lässt", -- includes occurrences of verläßt ["Engpaß"] = "Engpass", ["bißchen"] = "bisschen", ["Streß"] = "Stress", ["Biß"] = "Biss", ["Freßpaket"] = "Fresspaket", ["Paßt"] = "Passt", ["Läßt"] = "Lässt", ["verantwortungsbewußt"] = "verantwortungsbewusst", ["verläßlich"] = "verlässlich", ["Schlußlicht"] = "Schlusslicht", ["unerläßlich"] = "unerlässlich", } for c, cat in ipairs(S) do for s, str in ipairs(cat) do for from, to in pairs(repl) do while str:find(from) do str = str:gsub(from, to) end end S[c][s] = str end end -- good and bad (but not misc) staff description strings are missing space at the end for s, _ in ipairs(S[47]) do S[47][s] = S[47][s] .. " " end for s, _ in ipairs(S[48]) do S[48][s] = S[48][s] .. " " end end fixGermanStrings(...) deprecated = S -- For compatibility -- each of these corresponds to a sprite staff_class = { nurse = S[1][1], doctor = S[1][2], handyman = S[1][3], receptionist = S[1][4], surgeon = S[1][5], -- S[1][6] unused } -- these are titles used e.g. in the dynamic info bar staff_title = { receptionist = S[34][1], general = S[34][2], -- unused? nurse = S[34][3], junior = S[34][4], doctor = S[34][5], surgeon = S[34][6], psychiatrist = S[34][7], consultant = S[34][8], researcher = S[34][9], } object = { -- S[2][ 1] unused desk = S[2][ 2], cabinet = S[2][ 3], door = S[2][ 4], bench = S[2][ 5], table1 = S[2][ 6], -- unused object chair = S[2][ 7], drinks_machine = S[2][ 8], bed = S[2][ 9], inflator = S[2][10], pool_table = S[2][11], reception_desk = S[2][12], table2 = S[2][13], -- unused object & duplicate cardio = S[2][14], scanner = S[2][15], console = S[2][16], screen = S[2][17], litter_bomb = S[2][18], couch = S[2][19], sofa = S[2][20], crash_trolley = S[2][21], tv = S[2][22], ultrascanner = S[2][23], dna_fixer = S[2][24], cast_remover = S[2][25], hair_restorer = S[2][26], slicer = S[2][27], x_ray = S[2][28], radiation_shield = S[2][29], x_ray_viewer = S[2][30], operating_table = S[2][31], lamp = S[2][32], -- unused object toilet_sink = S[2][33], op_sink1 = S[2][34], op_sink2 = S[2][35], surgeon_screen = S[2][36], lecture_chair = S[2][37], projector = S[2][38], bed2 = S[2][39], -- unused duplicate pharmacy_cabinet = S[2][40], computer = S[2][41], atom_analyser = S[2][42], blood_machine = S[2][43], fire_extinguisher = S[2][44], radiator = S[2][45], plant = S[2][46], electrolyser = S[2][47], jelly_moulder = S[2][48], gates_of_hell = S[2][49], bed3 = S[2][50], -- unused duplicate bin = S[2][51], toilet = S[2][52], swing_door1 = S[2][53], swing_door2 = S[2][54], shower = S[2][55], auto_autopsy = S[2][56], bookcase = S[2][57], video_game = S[2][58], entrance_left = S[2][59], entrance_right = S[2][60], skeleton = S[2][61], comfortable_chair = S[2][62], } -- S[3][1]: unused -- S[3][2]: what's this for? Apparently some command line option of original TH -- let you start a specific level directly - on difficult and named HORZA. pay_rise = { definite_quit = S[3][3], regular = { S[3][ 4], -- %d (rise) S[3][ 5], -- %d (rise) %d (new total) S[3][ 6], -- %d (rise) S[3][ 7], -- %d (rise) %d (new total) S[3][ 8], -- %d (rise) S[3][ 9], -- %d (rise) }, poached = S[3][10], -- %d (new total) %s (competitor) } place_objects_window = { drag_blueprint = S[3][11], place_door = S[3][12], place_windows = S[3][13], place_objects = S[3][14], confirm_or_buy_objects = S[3][15], pick_up_object = S[3][16], place_objects_in_corridor = S[3][17], } -- Category of strings that fit nowhere else or we are not sure where they belong. -- If you think a string of these fits somewhere else, please move it there. -- Don't forget to change all references in the code and other language files. misc = { grade_adverb = { mildly = S[3][18], moderately = S[3][19], extremely = S[3][20], }, done = S[3][21], pause = S[3][22], send_message = S[3][23], -- %d (player number) send_message_all = S[3][24], save_success = S[3][25], save_failed = S[3][26], hospital_open = S[3][27], out_of_sync = S[3][28], load_failed = S[3][29], low_res = S[3][30], balance = S[3][31], mouse = S[11][5], force = S[11][6], } -- 4: diseases. This also already handles disease descriptions in 44. -- helper function for diseases local function D(name_str, cause_str) local list = {} list.name = S[4][name_str] if cause_str then list.cause = S[44][cause_str] list.symptoms = S[44][cause_str + 1] list.cure = S[44][cause_str + 2] end return list end diseases = { -- none = D( 1), -- not used/needed? general_practice = D( 2), bloaty_head = D( 3, 62), hairyitis = D( 4, 65), king_complex = D( 5, 68), invisibility = D( 6, 71), serious_radiation = D( 7, 74), slack_tongue = D( 8, 77), alien_dna = D( 9, 80), fractured_bones = D(10, 83), baldness = D(11, 86), discrete_itching = D(12, 89), jellyitis = D(13, 92), sleeping_illness = D(14, 95), pregnancy = D(15, 98), -- unused transparency = D(16, 101), uncommon_cold = D(17, 104), broken_wind = D(18, 107), spare_ribs = D(19, 110), kidney_beans = D(20, 113), broken_heart = D(21, 116), ruptured_nodules = D(22, 119), tv_personalities = D(23, 122), infectious_laughter = D(24, 125), corrugated_ankles = D(25, 128), chronic_nosehair = D(26, 131), third_degree_sideburns = D(27, 134), fake_blood = D(28, 137), gastric_ejections = D(29, 140), the_squits = D(30, 143), iron_lungs = D(31, 146), sweaty_palms = D(32, 149), heaped_piles = D(33, 152), gut_rot = D(34, 155), golf_stones = D(35, 158), unexpected_swelling = D(36, 161), diag_scanner = D(37), diag_blood_machine = D(38), diag_cardiogram = D(39), diag_x_ray = D(40), diag_ultrascan = D(41), diag_general_diag = D(42), diag_ward = D(43), diag_psych = D(44), autopsy = D(45), -- mixer = D(46), -- not used/needed? } competitor_names = { S[5][ 1], S[5][ 3], S[5][ 2], S[5][ 4], S[5][ 5], S[5][ 6], S[5][ 7], S[5][ 8], S[5][17], S[5][ 9], S[5][15], S[5][12], "CORSIX", -- Main developers just for fun. "ROUJIN", "EDVIN", S[5][10], S[5][11], S[5][13], S[5][14], S[5][16], S[5][18], S[5][19], S[5][20], S[5][21], } months = { S[6][ 1], S[6][ 2], S[6][ 3], S[6][ 4], S[6][ 5], S[6][ 6], S[6][ 7], S[6][ 8], S[6][ 9], S[6][10], S[6][11], S[6][12], } -- S[7][ 1], -- not needed? -- S[7][ 2], -- unused(?) -- S[7][ 3], -- unused(?) graphs = { money_in = S[7][ 4], money_out = S[7][ 5], wages = S[7][ 6], balance = S[7][ 7], visitors = S[7][ 8], cures = S[7][ 9], deaths = S[7][10], reputation = S[7][11], time_spans = { S[7][12], S[7][13], S[7][14], } } transactions = { --null = S[8][ 1], -- not needed wages = S[8][ 2], hire_staff = S[8][ 3], buy_object = S[8][ 4], build_room = S[8][ 5], cure = S[8][ 6], buy_land = S[8][ 7], treat_colon = S[8][ 8], final_treat_colon = S[8][ 9], cure_colon = S[8][10], deposit = S[8][11], advance_colon = S[8][12], research = S[8][13], drinks = S[8][14], jukebox = S[8][15], -- unused cheat = S[8][16], heating = S[8][17], insurance_colon = S[8][18], bank_loan = S[8][19], loan_repayment = S[8][20], loan_interest = S[8][21], research_bonus = S[8][22], drug_cost = S[8][23], overdraft = S[8][24], severance = S[8][25], general_bonus = S[8][26], sell_object = S[8][27], personal_bonus = S[8][28], emergency_bonus = S[8][29], vaccination = S[8][30], epidemy_coverup_fine = S[8][31], compensation = S[8][32], vip_award = S[8][33], epidemy_fine = S[8][34], eoy_bonus_penalty = S[8][35], eoy_trophy_bonus = S[8][36], machine_replacement = S[8][37], } humanoid_name_starts = S[9] -- 33 entries humanoid_name_ends = S[10] -- 26 entries adviser = { tutorial = { -- 1) build reception build_reception = S[11][30], -- start of the tutorial order_one_reception = S[11][41], accept_purchase = S[11][43], rotate_and_place_reception = S[11][42], reception_invalid_position = S[11][47], -- 2) hire receptionist hire_receptionist = S[11][31], select_receptionists = S[11][34], next_receptionist = S[11][38], prev_receptionist = S[11][39], choose_receptionist = S[11][35], place_receptionist = S[11][37], receptionist_invalid_position = S[11][61], -- 3) build GP's office -- 3.1) room window build_gps_office = S[11][33], select_diagnosis_rooms = S[11][44], click_gps_office = S[11][45], -- 3.2) blueprint -- [11][58] was maybe planned to be used in this place, but is not needed. click_and_drag_to_build = S[11][48], room_in_invalid_position = S[11][52], room_too_small = S[11][53], room_too_small_and_invalid = S[11][62], room_big_enough = S[11][57], -- 3.3) door and windows place_door = S[11][49], door_in_invalid_position = S[11][54], place_windows = S[11][50], window_in_invalid_position = S[11][55], -- 3.4) objects place_objects = S[11][51], object_in_invalid_position = S[11][56], confirm_room = S[11][59], information_window = S[11][64], -- 4) hire doctor hire_doctor = S[11][32], select_doctors = S[11][36], choose_doctor = S[11][46], place_doctor = S[11][40], doctor_in_invalid_position = S[11][60], -- (currently) unused start_tutorial = S[11][63], build_pharmacy = S[11][65], }, staff_advice = { need_doctors = S[11][ 8], too_many_doctors = S[11][ 9], -- too_many_doctors_2 = S[21][ 4] -- duplicate need_handyman_litter = S[11][ 70], need_handyman_plants = S[11][ 93], need_handyman_machines = S[11][ 94], need_nurses = S[11][101], too_many_nurses = S[11][102], }, -- used when you place staff in a wrong place staff_place_advice = { only_researchers = S[11][124], -- in research center only_surgeons = S[11][125], -- in operating theatre only_psychiatrists = S[11][126], -- in psychiatry only_nurses_in_room = S[11][127], -- %s (room name) doctors_cannot_work_in_room = S[11][128], -- %s (room name) nurses_cannot_work_in_room = S[11][129], -- %s (room name) only_doctors_in_room = S[11][130], -- %s (room name) receptionists_only_at_desk = S[11][131], }, build_advice = { blueprint_invalid = S[21][5], blueprint_would_block = S[21][6], door_not_reachable = S[21][7], placing_object_blocks_door = S[21][8], }, -- these are used when completing a room with certain requirements (if they are not met yet) room_requirements = { psychiatry_need_psychiatrist = S[11][ 79], pharmacy_need_nurse = S[11][ 80], training_room_need_consultant = S[11][ 81], research_room_need_researcher = S[11][ 84], op_need_two_surgeons = S[11][ 85], op_need_another_surgeon = S[11][ 86], op_need_ward = S[11][ 87], ward_need_nurse = S[11][ 88], gps_office_need_doctor = S[11][105], reception_need_receptionist = S[11][106], }, surgery_requirements = { need_surgeons_ward_op = S[11][103], need_surgeon_ward = S[11][104], }, warnings = { money_low = S[11][ 2], money_very_low_take_loan = S[11][ 73], cash_low_consider_loan = S[28][ 16], bankruptcy_imminent = S[11][ 3], financial_trouble = S[28][ 29], -- %d amount left before level is lost finanical_trouble2 = S[28][ 30], -- %d same as above financial_trouble3 = S[28][ 31], -- %d same again pay_back_loan = S[28][ 57], machines_falling_apart = S[11][ 4], no_patients_last_month = S[11][ 10], nobody_cured_last_month = S[11][ 11], queues_too_long = S[11][ 12], patient_stuck = S[11][ 13], patients_unhappy = S[11][ 15], patient_leaving = S[28][ 50], patients_leaving = S[28][ 51], patients_really_thirsty = S[28][ 52], patients_annoyed = S[28][ 8], patients_thirsty = S[11][ 16], patients_thirsty2 = S[28][ 5], patients_very_thirsty = S[28][ 6], patients_too_hot = S[11][ 18], patients_getting_hot = S[28][ 53], patients_very_cold = S[28][ 54], people_freezing = S[28][ 14], staff_overworked = S[11][ 17], staff_tired = S[28][ 9], staff_too_hot = S[11][ 19], staff_very_cold = S[28][ 55], staff_unhappy = S[11][ 89], staff_unhappy2 = S[28][ 15], doctor_crazy_overwork = S[11][ 95], reduce_staff_rest_threshold = S[28][ 45], nurses_tired = S[11][ 96], doctors_tired = S[11][ 97], handymen_tired = S[11][ 98], receptionists_tired = S[11][ 99], nurses_tired2 = S[28][ 46], doctors_tired2 = S[28][ 47], handymen_tired2 = S[28][ 48], receptionists_tired2 = S[28][ 49], -- What? need_toilets = S[11][ 20], build_toilets = S[28][ 11], build_toilet_now = S[28][ 39], more_toilets = S[28][ 12], people_did_it_on_the_floor = S[28][ 13], need_staffroom = S[11][ 74], build_staffroom = S[28][ 10], many_killed = S[11][ 77], -- %d (number of killed patients) plants_thirsty = S[11][ 91], too_many_plants = S[11][ 92], charges_too_high = S[11][119], charges_too_low = S[11][120], machine_severely_damaged = S[11][121], -- %s (name of machine) machinery_slightly_damaged = S[28][ 32], machinery_damaged = S[28][ 33], machinery_damaged2 = S[28][ 34], machinery_very_damaged = S[28][ 35], machinery_deteriorating = S[28][ 36], queue_too_long_send_doctor = S[11][132], -- %s (name of room) queue_too_long_at_reception = S[11][133], reception_bottleneck = S[11][134], -- TODO find out why there's 133 and 134. epidemic_getting_serious = S[28][ 2], deal_with_epidemic_now = S[28][ 3], many_epidemics = S[28][ 4], hospital_is_rubbish = S[28][ 7], more_benches = S[28][ 25], people_have_to_stand = S[28][ 28], too_much_litter = S[28][ 17], litter_everywhere = S[28][ 18], litter_catastrophy = S[28][ 19], some_litter = S[28][ 20], place_plants_to_keep_people = S[28][ 21], place_plants2 = S[28][ 22], place_plants3 = S[28][ 23], place_plants4 = S[28][ 24], desperate_need_for_watering = S[28][ 40], change_priorities_to_plants = S[28][ 41], plants_dying = S[28][ 42], }, praise = { many_plants = S[11][75], plants_are_well = S[28][43], plants_thriving = S[28][44], many_benches = S[11][76], plenty_of_benches = S[28][26], few_have_to_stand = S[28][27], patients_cured = S[11][82], -- %d (number of cured patients) }, information = { epidemic = S[11][ 14], emergency = S[11][ 22], promotion_to_doctor = S[11][ 23], promotion_to_specialist = S[11][ 69], -- %s (type: psychiatrist, scientist, surgeon) promotion_to_consultant = S[11][138], first_death = S[11][ 72], first_cure = S[11][ 83], place_windows = S[11][108], larger_rooms = S[11][109], extra_items = S[11][110], patient_abducted = S[11][111], -- what the heck is this? I never got that far in the original... patient_leaving_too_expensive = S[11][118], pay_rise = S[11][ 29], -- TODO only in tutorial / first time? handyman_adjust = S[11][ 71], -- TODO only in tutorial / first time? fax_received = S[11][136], -- Once only vip_arrived = S[21][ 9], -- %s (name of VIP) epidemic_health_inspector = S[21][ 10], initial_general_advice = { research_now_available = S[62][02], research_symbol = S[62][03], surgeon_symbol = S[62][04], psychiatric_symbol = S[62][05], rats_have_arrived = S[62][06], autopsy_available = S[62][07], first_epidemic = S[62][08], first_VIP = S[62][09], taking_your_staff = S[62][10], machine_needs_repair = S[62][11], epidemic_spreading = S[62][12], increase_heating = S[62][13], place_radiators = S[62][14], decrease_heating = S[62][15], first_patients_thirsty = S[62][16], first_emergency = S[62][17], }, }, earthquake = { alert = S[11][107], damage = S[11][100], -- %d (damaged machines) %d (injured people) ended = S[11][ 78], -- %d (severance of earthquake) }, boiler_issue = { maximum_heat = S[21][ 11], minimum_heat = S[21][ 12], resolved = S[21][ 13], }, vomit_wave = { started = S[21][ 14], ended = S[21][ 15], }, goals = { win = { money = S[11][ 21], -- %d (remaining amount) reputation = S[11][ 67], -- %d (required amount) value = S[11][ 68], -- %d (required amount) cure = S[11][137], -- %d (remaining amount) }, lose = { kill = S[11][ 66], -- %d (remaining amount) }, }, level_progress = { nearly_won = S[11][112], three_quarters_won = S[11][113], halfway_won = S[11][114], nearly_lost = S[11][115], three_quarters_lost = S[11][116], halfway_lost = S[11][117], another_patient_cured = S[28][37], another_patient_killed = S[28][38], financial_criteria_met = S[28][56], -- %d money threshold for the level cured_enough_patients = S[28][58], dont_kill_more_patients = S[28][59], reputation_good_enough = S[28][60], -- %d rep threshold for the level improve_reputation = S[28][61], -- %d amount to improve by hospital_value_enough = S[28][62], -- %d keep it above this value close_to_win_increase_value = S[28][63], }, research = { new_machine_researched = S[11][ 24], -- %s (machine(?) name) new_drug_researched = S[11][ 25], -- %s (disease name) drug_improved = S[11][ 26], -- %s (disease name) machine_improved = S[11][ 27], -- %s (machine name) new_available = S[11][ 28], -- %s TODO What is this? Where to use this and where [11][24]? -- ANSWER: It is used if research is not conducted in an area for very long. Some diagnosis equipment -- becomes available anyway after some years. Then this message is displayed instead of [11][24] drug_fully_researched = S[11][122], -- %s (drug(?) name) autopsy_discovered_rep_loss = S[11][123], }, competitors = { hospital_opened = S[11][135], -- %s (competitor name) land_purchased = S[11][ 7], -- %s (competitor name) staff_poached = S[11][ 90], }, multiplayer = { -- S[21][1] unused everyone_failed = S[21][ 2], players_failed = S[21][ 3], poaching = { already_poached_by_someone = S[21][16], not_interested = S[21][17], in_progress = S[21][18], }, objective_completed = S[21][19], -- missing in some TH versions objective_failed = S[21][20], -- missing in some TH versions }, placement_info = { -- S[22][1] unused room_cannot_place = S[22][ 2], room_cannot_place_2 = S[22][ 3], -- hmm. why? maybe the previous one should've been "can" reception_can_place = S[22][ 4], reception_cannot_place = S[22][ 5], door_can_place = S[22][ 6], door_cannot_place = S[22][ 7], window_can_place = S[22][ 8], window_cannot_place = S[22][ 9], staff_can_place = S[22][10], staff_cannot_place = S[22][11], object_can_place = S[22][12], object_cannot_place = S[22][13], }, epidemic = { -- S[28][1] unused serious_warning = S[28][ 2], hurry_up = S[28][ 3], multiple_epidemies = S[28][ 4], }, } level_names = { -- S[12][ 1] -- unused S[12][ 2], S[12][ 3], S[12][ 4], S[12][ 5], S[12][ 6], S[12][ 7], S[12][ 8], S[12][ 9], S[12][10], S[12][11], S[12][12], S[12][13], S[12][14], S[12][15], S[12][16], } town_map = { -- S[13][ 1] -- unused chat = S[13][ 2], for_sale = S[13][ 3], not_for_sale = S[13][ 4], number = S[13][ 5], owner = S[13][ 6], area = S[13][ 7], price = S[13][ 8], } -- NB: includes some special "rooms" -- reception, destroyed room and "corridor objects" rooms_short = { -- S[14][1] -- unused -- S[14][3] -- unused reception = S[14][ 2], destroyed = S[14][ 4], corridor_objects = S[14][29], gps_office = S[14][ 5], psychiatric = S[14][ 6], ward = S[14][ 7], operating_theatre = S[14][ 8], pharmacy = S[14][ 9], cardiogram = S[14][10], scanner = S[14][11], ultrascan = S[14][12], blood_machine = S[14][13], x_ray = S[14][14], inflation = S[14][15], dna_fixer = S[14][16], hair_restoration = S[14][17], tongue_clinic = S[14][18], fracture_clinic = S[14][19], training_room = S[14][20], electrolysis = S[14][21], jelly_vat = S[14][22], staffroom = S[14][23], -- rehabilitation = S[14][24], -- unused general_diag = S[14][25], research_room = S[14][26], toilets = S[14][27], decontamination = S[14][28], } rooms_long = { -- S[53][1] -- unused general = S[53][2], -- unused? emergency = S[53][3], corridors = S[53][29], gps_office = S[53][ 5], psychiatric = S[53][ 6], ward = S[53][ 7], operating_theatre = S[53][ 8], pharmacy = S[53][ 9], cardiogram = S[53][10], scanner = S[53][11], ultrascan = S[53][12], blood_machine = S[53][13], x_ray = S[53][14], inflation = S[53][15], dna_fixer = S[53][16], hair_restoration = S[53][17], tongue_clinic = S[53][18], fracture_clinic = S[53][19], training_room = S[53][20], electrolysis = S[53][21], jelly_vat = S[53][22], staffroom = S[53][23], -- rehabilitation = S[53][24], -- unused general_diag = S[53][25], research_room = S[53][26], toilets = S[53][27], decontamination = S[53][28], } drug_companies = { -- S[15][1], -- unused S[15][2], S[15][3], S[15][4], S[15][5], S[15][6], } build_room_window = { -- S[16][1], -- unused pick_department = S[16][2], pick_room_type = S[16][3], cost = S[16][5], } buy_objects_window = { choose_items = S[16][4], price = S[16][6], total = S[16][7], } research = { categories = { cure = S[17][1], diagnosis = S[17][2], drugs = S[17][3], improvements = S[17][4], specialisation = S[17][5], }, funds_allocation = S[17][6], allocated_amount = S[17][7], } policy = { header = S[18][1], diag_procedure = S[18][2], diag_termination = S[18][3], staff_rest = S[18][4], staff_leave_rooms = S[18][5], sliders = { guess = S[18][6], -- belongs to diag_procedure send_home = S[18][7], -- also belongs to diag_procedure stop = S[18][8], -- belongs to diag_termination staff_room = S[18][9], -- belongs to staff_rest } } room_classes = { -- S[19][1] -- unused -- S[19][2] -- "corridors" - unused for now -- S[19][3] -- unused diagnosis = S[19][4], treatment = S[19][5], clinics = S[19][6], facilities = S[19][7], } -- These are better of in a list with numbers insurance_companies = { out_of_business = S[20][ 1], S[20][ 2], S[20][ 3], S[20][ 4], S[20][ 5], S[20][ 6], S[20][ 7], S[20][ 8], S[20][ 9], S[20][10], S[20][11], S[20][12], } -- 21 and 22: some more adviser strings, see above. -- 23: menu strings -- Menu strings are a little complicated: Different versions of the original -- game have slightly different menu strings. The strings are also organised -- by more levels than traditional strings. For the most part, this extra -- organisation can be use to offset the differences in menu string indices. local M = {{}} do local i = 2 local section = 1 while true do local s = S[23][i] if s == "." then section = section + 1 M[section] = {} elseif s == ".." then break else M[section][#M[section] + 1] = s end i = i + 1 end end menu = { file = M[1][1], options = M[1][2], display = M[1][3], charts = M[1][4], debug = M[1][5], } menu_file = { load = M[2][1], save = M[2][2], restart = #M[2] == 4 and M[2][3] or "(no string) restart", quit = M[2][#M[2]], } menu_file_load = M[7] menu_file_save = menu_file_load --[[{ [1] = S[23][73], [2] = S[23][74], [3] = S[23][75], [4] = S[23][76], [5] = S[23][77], [6] = S[23][78], [7] = S[23][79], [8] = S[23][80], }]] menu_options = { sound = M[3][1], announcements = M[3][2], music = M[3][3], sound_vol = M[3][4], announcements_vol = M[3][5], music_vol = M[3][6], autosave = M[3][7], game_speed = M[3][8], jukebox = M[3][9], } menu_options_volume = { -- redundant in original strings: M[10] and M[11] [100] = M[9][ 1], [ 90] = M[9][ 2], [ 80] = M[9][ 3], [ 70] = M[9][ 4], [ 60] = M[9][ 5], [ 50] = M[9][ 6], [ 40] = M[9][ 7], [ 30] = M[9][ 8], [ 20] = M[9][ 9], [ 10] = M[9][10], } menu_options_game_speed = { slowest = M[12][1], slower = M[12][2], normal = M[12][3], max_speed = M[12][4], and_then_some_more = M[12][5], } menu_display = { high_res = M[4][1], mcga_lo_res = M[4][2], shadows = M[4][3], } menu_charts = { statement = M[5][1], casebook = M[5][2], policy = M[5][3], research = M[5][4], graphs = M[5][5], staff_listing = M[5][6], bank_manager = M[5][7], status = M[5][8], briefing = M[5][#M[5]], } menu_debug = { object_cells = M[6][ 1], entry_cells = M[6][ 2], keep_clear_cells = M[6][ 3], nav_bits = M[6][ 4], remove_walls = M[6][ 5], remove_objects = M[6][ 6], display_pager = M[6][ 7], mapwho_checking = M[6][ 8], plant_pagers = M[6][ 9], porter_pagers = M[6][10], pixbuf_cells = M[6][11], enter_nav_debug = M[6][12], show_nav_cells = M[6][13], machine_pagers = M[6][14], display_room_status = M[6][15], display_big_cells = M[6][16], show_help_hotspot = M[6][17], win_game_anim = M[6][18], win_level_anim = M[6][19], lose_game_anim = { M[6][20], M[6][21], M[6][22], M[6][23], M[6][24], M[6][25], M[6][26], }, } staff_list = { -- S[24][1] unused -- S[24][2] -- I have no idea what this is. morale = S[24][3], tiredness = S[24][4], skill = S[24][5], total_wages = S[24][6], } high_score = { -- S[25][1] unused pos = S[25][2], player = S[25][3], score = S[25][4], best_scores = S[25][5], worst_scores = S[25][6], killed = S[25][7], -- is this used? categories = { money = S[26][ 1], salary = S[26][ 2], clean = S[26][ 3], cures = S[26][ 4], deaths = S[26][ 5], cure_death_ratio = S[26][ 6], patient_happiness = S[26][ 7], staff_happiness = S[26][ 8], staff_number = S[26][ 9], visitors = S[26][10], total_value = S[26][11], }, } trophy_room = { -- S[27][1] unused many_cured = { awards = { S[55][ 5], S[55][ 6], }, penalty = { S[56][ 5], S[56][ 6], }, trophies = { S[27][ 2], -- for around 100% cure rate S[27][ 3], -- for around 100% cure rate S[27][ 4], -- for around 100% cure rate }, regional = { S[55][ 7], }, }, all_cured = { -- not implemented awards = { S[27][29], -- for 100% treat rate (does that mean none sent home or killed?) }, trophies = { S[27][30], -- for 100% cure rate S[27][31], -- for 100% cure rate }, }, hosp_value = { awards = { S[55][20], }, penalty = { S[56][20], }, regional = { S[55][22], }, }, best_value_hosp = { -- not implemented trophies = { S[27][ 6], }, regional = { S[55][21], }, penalty = { S[56][21], }, }, consistant_rep = { trophies = { S[27][ 5], S[27][ 6], }, }, high_rep = { awards = { S[55][ 2], S[55][ 3], }, penalty = { S[56][ 2], -- is this the penalty for consistant poor rep? S[56][ 3], }, regional = { -- not implemented S[27][ 7], S[55][ 4], }, }, happy_staff = { -- not implemented awards = { S[55][23], S[55][25], }, penalty = { S[56][23], }, regional_good = { S[55][24], }, regional_bad = { S[56][24], }, trophies = { S[27][ 8], S[27][ 9], S[27][10], }, }, happy_vips = { trophies = { S[27][11], S[27][12], S[27][13], }, }, no_deaths = { awards = { S[55][ 8], S[55][10], }, penalty = { S[56][ 8], -- this may need an over-ride as it looks wrong "unacceptably" not "acceptably" IMO S[56][ 9], }, trophies = { S[27][14], S[27][15], S[27][16], }, regional = { -- not implemented S[55][ 9], }, }, rats_killed = { -- not implemented trophies = { S[27][17], -- %d (number of rats) S[27][18], -- %d (number of rats) S[27][19], -- %d (number of rats) }, }, rats_accuracy = { -- not implemented trophies = { S[27][20], -- %d (accuracy percentage) S[27][21], -- %d (accuracy percentage) S[27][22], -- %d (accuracy percentage) }, }, healthy_plants = { -- not implemented awards = { S[27][23], }, trophies = { S[27][24], S[27][25], }, }, sold_drinks = { trophies = { S[27][26], S[27][27], S[27][28], }, }, pop_percentage = { -- not implemented awards = { S[55][11], S[55][12], S[55][13], }, penalty = { S[56][11], S[56][12], }, }, gen_repairs = { -- not implemented awards = { S[55][38], S[55][39], S[55][40], }, penalty = { S[56][38], S[56][39], }, }, curesvdeaths = { awards = { S[55][14], }, penalty = { S[56][14], }, }, research = { -- not implemented awards = { S[55][35], S[55][37], }, penalty = { S[56][35], }, regional_good = { S[55][35], }, regional_bad = { S[56][36], }, }, cleanliness = { -- not implemented award = { S[55][26], }, regional_good = { S[56][26], }, regional_bad = { S[56][27], }, }, emergencies = { -- not implemented award = { S[55][32], S[55][34], }, penalty = { S[56][32], }, regional_good = { S[55][33], }, regional_bad = { S[56][33], }, }, wait_times = { -- not implemented award = { S[55][29], }, penalty = { S[56][29], }, }, happy_patients = { -- not implemented awards = { S[55][17], S[55][18], }, penalty = { S[56][17], S[56][18], }, }, -- Strings used in the plaques to show what has been won reputation = S[63][1], cash = S[63][2], } -- Section 28: more adviser strings (see above) casebook = { reputation = S[29][ 1], treatment_charge = S[29][ 2], earned_money = S[29][ 3], cured = S[29][ 4], deaths = S[29][ 5], sent_home = S[29][ 6], research = S[29][ 7], cure = S[29][ 8], cure_desc = { build_room = S[29][ 9], -- %s (room name) build_ward = S[29][10], hire_doctors = S[29][11], hire_surgeons = S[29][12], hire_psychiatrists = S[29][13], hire_nurses = S[29][14], no_cure_known = S[29][15], cure_known = S[29][16], improve_cure = S[29][17], }, } -- 30, 31: multiplayer. not needed for now. tooltip = { -- S[32][1] unused build_room_window = { room_classes = { diagnosis = S[32][ 2], treatment = S[32][ 3], clinic = S[32][ 4], facilities = S[32][ 5], }, cost = S[32][ 6], close = S[32][ 7], }, toolbar = { bank_button = S[32][ 8], balance = S[32][ 9], reputation = S[32][ 10], -- NB: no %d! Append " ([reputation])". date = S[32][ 11], rooms = S[32][ 12], objects = S[32][ 13], edit = S[32][ 14], hire = S[32][ 15], staff_list = S[32][ 16], town_map = S[32][ 17], casebook = S[32][ 18], research = S[32][ 19], status = S[32][ 20], charts = S[32][ 21], policy = S[32][ 22], }, hire_staff_window = { doctors = S[32][ 23], nurses = S[32][ 24], handymen = S[32][ 25], receptionists = S[32][ 26], prev_person = S[32][ 27], next_person = S[32][ 28], hire = S[32][ 29], cancel = S[32][ 30], doctor_seniority = S[32][ 31], staff_ability = S[32][ 32], salary = S[32][ 33], qualifications = S[32][ 34], surgeon = S[32][ 35], psychiatrist = S[32][ 36], researcher = S[32][ 37], }, buy_objects_window = { price = S[32][ 38], total_value = S[32][ 39], confirm = S[32][ 40], cancel = S[32][ 41], decrease = S[32][ 42], increase = S[32][ 43], }, staff_list = { doctors = S[32][ 44], nurses = S[32][ 45], handymen = S[32][ 46], receptionists = S[32][ 47], happiness = S[32][ 48], tiredness = S[32][ 49], ability = S[32][ 50], salary = S[32][ 51], happiness_2 = S[32][ 52], tiredness_2 = S[32][ 53], ability_2 = S[32][ 54], prev_person = S[32][ 55], next_person = S[32][ 56], bonus = S[32][ 57], sack = S[32][ 58], pay_rise = S[32][ 59], close = S[32][ 60], doctor_seniority = S[32][ 61], detail = S[32][ 62], view_staff = S[32][ 63], surgeon = S[32][ 64], psychiatrist = S[32][ 65], researcher = S[32][ 66], surgeon_train = S[32][ 67], -- %d (percentage trained) psychiatrist_train = S[32][ 68], -- %d (percentage trained) researcher_train = S[32][ 69], -- %d (percentage trained) skills = S[32][ 70], }, queue_window = { num_in_queue = S[32][ 71], num_expected = S[32][ 72], num_entered = S[32][ 73], max_queue_size = S[32][ 74], dec_queue_size = S[32][ 75], inc_queue_size = S[32][ 76], front_of_queue = S[32][ 77], end_of_queue = S[32][ 78], close = S[32][ 79], patient = S[32][ 80], patient_dropdown = { reception = S[32][186], send_home = S[32][187], hospital_1 = S[32][188], hospital_2 = S[32][189], hospital_3 = S[32][190], }, }, main_menu = { new_game = S[32][ 81], load_game = S[32][ 82], continue = S[32][ 83], network = S[32][ 84], quit = S[32][ 85], load_menu = { load_slot = S[41][ 1], -- NB: no %d! Append " [slotnumber]". empty_slot = S[41][ 2], }, }, window_general = { cancel = S[32][ 86], confirm = S[32][ 87], }, patient_window = { close = S[32][ 88], graph = S[32][ 89], happiness = S[32][ 90], thirst = S[32][ 91], warmth = S[32][ 92], casebook = S[32][ 93], send_home = S[32][ 94], center_view = S[32][ 95], abort_diagnosis = S[32][ 96], queue = S[32][ 97], }, staff_window = { name = S[32][ 98], close = S[32][ 99], face = S[32][100], happiness = S[32][101], tiredness = S[32][102], ability = S[32][103], doctor_seniority = S[32][104], skills = S[32][105], surgeon = S[32][106], psychiatrist = S[32][107], researcher = S[32][108], salary = S[32][109], center_view = S[32][110], sack = S[32][111], pick_up = S[32][112], }, machine_window = { name = S[32][113], close = S[32][114], times_used = S[32][115], status = S[32][116], repair = S[32][117], replace = S[32][118], }, -- Apparently handymen have their own set of strings (partly) containing "handyman". -- We could just get rid of this category and include the three prios into staff_window. handyman_window = { name = S[32][119], -- contains "handyman" close = S[32][120], face = S[32][121], -- contains "handyman" happiness = S[32][122], tiredness = S[32][123], ability = S[32][124], prio_litter = S[32][125], -- contains "handyman" prio_plants = S[32][126], -- contains "handyman" prio_machines = S[32][127], -- contains "handyman" salary = S[32][128], center_view = S[32][129], -- contains "handyman" sack = S[32][130], pick_up = S[32][131], }, place_objects_window = { cancel = S[32][132], buy_sell = S[32][133], pick_up = S[32][134], confirm = S[32][135], }, casebook = { up = S[32][136], down = S[32][137], close = S[32][138], reputation = S[32][139], treatment_charge = S[32][140], earned_money = S[32][141], cured = S[32][142], deaths = S[32][143], sent_home = S[32][144], decrease = S[32][145], increase = S[32][146], research = S[32][147], cure_type = { drug = S[32][148], drug_percentage = S[32][149], -- %d (effectiveness percentage) psychiatrist = S[32][150], surgery = S[32][151], machine = S[32][152], }, cure_requirement = { possible = S[32][153], research_machine = S[32][154], build_room = S[32][155], hire_surgeons = S[32][156], -- unused hire_surgeon = S[32][157], -- unused hire_staff_old = S[32][158], -- %s (staff type), unused. Use hire_staff instead. build_ward = S[32][159], -- unused ward_hire_nurse = S[32][160], -- unused not_possible = S[32][161], -- unused }, }, statement = { close = S[32][162], }, research = { close = S[32][163], cure_dec = S[32][164], diagnosis_dec = S[32][165], drugs_dec = S[32][166], improvements_dec = S[32][167], specialisation_dec = S[32][168], cure_inc = S[32][169], diagnosis_inc = S[32][170], drugs_inc = S[32][171], improvements_inc = S[32][172], specialisation_inc = S[32][173], -- S[32][174] unused allocated_amount = S[32][175], }, graphs = { close = S[32][176], scale = S[32][177], money_in = S[32][178], money_out = S[32][179], wages = S[32][180], balance = S[32][181], visitors = S[32][182], cures = S[32][183], deaths = S[32][184], reputation = S[32][185], }, -- S[32][186] through S[32][190] inserted further above town_map = { people = S[32][191], plants = S[32][192], fire_extinguishers = S[32][193], objects = S[32][194], radiators = S[32][195], heat_level = S[32][196], heat_inc = S[32][197], heat_dec = S[32][198], heating_bill = S[32][199], balance = S[32][200], close = S[32][201], }, -- S[32][202] unused. jukebox = { current_title = S[32][203], close = S[32][204], play = S[32][205], rewind = S[32][206], fast_forward = S[32][207], stop = S[32][208], loop = S[32][209], }, bank_manager = { hospital_value = S[32][210], balance = S[32][211], current_loan = S[32][212], repay_5000 = S[32][213], borrow_5000 = S[32][214], interest_payment = S[32][215], inflation_rate = S[32][216], interest_rate = S[32][217], close = S[32][218], insurance_owed = S[32][219], -- %s (name of debitor) show_graph = S[32][220], -- %s (name of debitor) graph = S[32][221], -- %s (name of debitor) graph_return = S[32][222], }, status = { win_progress_own = S[32][223], win_progress_other = S[32][224], -- %s (name of competitor) population_chart = S[32][225], happiness = S[32][226], thirst = S[32][227], warmth = S[32][228], close = S[32][229], -- Criteria to win reputation = S[64][ 1], balance = S[64][ 2], population = S[64][ 3], num_cured = S[64][ 4], percentage_killed = S[64][ 5], value = S[64][ 6], percentage_cured = S[64][ 7], }, policy = { close = S[32][230], staff_leave = S[32][231], staff_stay = S[32][232], diag_procedure = S[32][233], diag_termination = S[32][234], staff_rest = S[32][235], }, pay_rise_window = { accept = S[32][236], decline = S[32][237], }, watch = { hospital_opening = S[32][238], emergency = S[32][239], epidemic = S[32][240], }, rooms = { -- S[33][1] through S[33][7] unused. gps_office = S[33][ 8], psychiatry = S[33][ 9], ward = S[33][10], operating_theatre = S[33][11], pharmacy = S[33][12], cardiogram = S[33][13], scanner = S[33][14], ultrascan = S[33][15], blood_machine = S[33][16], x_ray = S[33][17], inflation = S[33][18], dna_fixer = S[33][19], hair_restoration = S[33][20], tongue_clinic = S[33][21], fracture_clinic = S[33][22], training_room = S[33][23], electrolysis = S[33][24], jelly_vat = S[33][25], staffroom = S[33][26], -- rehabilitation = S[33][27], -- unused general_diag = S[33][28], research_room = S[33][29], toilets = S[33][30], decontamination = S[33][31], }, objects = { -- S[40][1] unused. -- NB: most objects do not have a tooltip because they're not (extra-)buyable desk = S[40][ 2], cabinet = S[40][ 3], door = S[40][ 4], bench = S[40][ 5], table1 = S[40][ 6], -- unused chair = S[40][ 7], drinks_machine = S[40][ 8], bed = S[40][ 9], inflator = S[40][10], pool_table = S[40][11], reception_desk = S[40][12], table2 = S[40][13], -- unused & duplicate cardio = S[40][14], -- no description scanner = S[40][15], -- no description console = S[40][16], -- no description screen = S[40][17], -- no description litter_bomb = S[40][18], couch = S[40][19], -- no description sofa = S[40][20], crash_trolley = S[40][21], -- no description tv = S[40][22], ultrascanner = S[40][23], -- no description dna_fixer = S[40][24], -- no description cast_remover = S[40][25], -- no description hair_restorer = S[40][26], -- no description slicer = S[40][27], -- no description x_ray = S[40][28], -- no description radiation_shield = S[40][29], -- no description x_ray_viewer = S[40][30], -- no description operating_table = S[40][31], -- no description lamp = S[40][32], -- unused toilet_sink = S[40][33], op_sink1 = S[40][34], -- no description op_sink2 = S[40][35], -- no description surgeon_screen = S[40][36], -- no description lecture_chair = S[40][37], projector = S[40][38], -- no description bed2 = S[40][39], -- unused duplicate pharmacy_cabinet = S[40][40], computer = S[40][41], atom_analyser = S[40][42], blood_machine = S[40][43], -- no description fire_extinguisher = S[40][44], radiator = S[40][45], plant = S[40][46], electrolyser = S[40][47], -- no description jelly_moulder = S[40][48], -- no description gates_of_hell = S[40][49], -- no description bed3 = S[40][50], -- unused duplicate bin = S[40][51], toilet = S[40][52], swing_door1 = S[40][53], -- no description swing_door2 = S[40][54], -- no description shower = S[40][55], -- no description auto_autopsy = S[40][56], bookcase = S[40][57], video_game = S[40][58], entrance_left = S[40][59], -- no description entrance_right = S[40][60], -- no description skeleton = S[40][61], comfortable_chair = S[40][62], -- no description }, } -- 34: staff titles, inserted further above confirmation = { quit = S[35][1], return_to_blueprint = S[35][2], replace_machine = S[35][3], -- %s (machine name) %d (price) overwrite_save = S[35][4], delete_room = S[35][5], sack_staff = S[35][6], restart_level = S[35][7], -- missing in some TH versions } bank_manager = { hospital_value = S[36][1], balance = S[36][2], current_loan = S[36][3], interest_payment = S[36][4], insurance_owed = S[36][5], inflation_rate = S[36][6], interest_rate = S[36][7], statistics_page = { date = S[37][1], details = S[37][2], money_out = S[37][3], money_in = S[37][4], balance = S[37][5], current_balance = S[37][6], }, } newspaper = { -- Seven categories of funny headlines. I think each category is related -- to one criterion you can lose to. TODO: categorize { S[38][ 1], S[38][ 2], S[38][ 3], S[38][ 4], S[38][ 5] }, { S[38][ 7], S[38][ 8], S[38][ 9], S[38][10], S[38][11], S[38][12] }, { S[38][14], S[38][15], S[38][16], S[38][17] }, { S[38][19], S[38][20], S[38][21], S[38][22] }, { S[38][24], S[38][25], S[38][26], S[38][27], S[38][28], S[38][29] }, { S[38][31], S[38][32], S[38][33], S[38][34], }, { S[38][36], S[38][37], S[38][38], S[38][39], S[38][40] }, } -- 39: letters -- Letters are organized in another level, just like menu strings. local L = {{""}} do local i = 1 local section = 1 while true do local s = S[39][i] if s == "." then section = section + 1 L[section] = {} L[section][1] = "" elseif s == ".." then L[section] = nil break else L[section][#L[section]] = L[section][#L[section]] .. s if s:find("//") then L[section][#L[section] + 1] = "" end end i = i + 1 end end letter = L -- table of 12 tables (one for each level) -- each sub-table contains a varying number of strings that form the letter together -- 40: object tooltips, inserted further above -- 41: load menu, inserted further above vip_names = { health_minister = S[42][1], S[42][ 2], -- the rest is better organized in an array. S[42][ 3], S[42][ 4], S[42][ 5], S[42][ 6], S[42][ 7], S[42][ 8], S[42][ 9], S[42][10], S[42][11], } -- 43: credits -- Maybe we could include them somewhere as a tribute. Maybe not. -- Translators, please do not bother translating these... original_credits = S[43] -- 44: faxes and disease descriptions (cause/symptoms/cure) -- diseases were already covered above fax = { debug_fax = { -- never seen this, must be a debug option of original TH -- TODO: make this nicer if we ever want to make use of it close_text = S[44][ 1], text1 = S[44][ 3], -- %d text2 = S[44][ 4], -- %d %d text3 = S[44][ 5], -- %d %d %d %d %d text4 = S[44][ 6], -- %d %d %d %d %d text5 = S[44][ 7], -- %d %d %d %d %d text6 = S[44][ 8], text7 = S[44][ 9], -- %d %d %d text8 = S[44][10], -- %d %d %d text9 = S[44][11], -- %d %d %d %d text10 = S[44][12], -- %d %d %d %d text11 = S[44][13], -- %d }, emergency = { choices = { accept = S[44][15], refuse = S[44][16], }, location = S[44][18], num_disease = S[44][19], cure_possible_drug_name_efficiency = S[44][20], cure_possible = S[44][21], cure_not_possible_build_and_employ = S[44][22], cure_not_possible_build = S[44][23], cure_not_possible_employ = S[44][24], cure_not_possible = S[44][25], bonus = S[44][26], locations = { S[44][27], S[44][28], S[44][29], S[44][30], S[44][31], S[44][32], S[44][33], S[44][34], S[44][35], }, }, emergency_result = { close_text = S[44][38], earned_money = S[44][40], saved_people = S[44][41], }, disease_discovered_patient_choice = { choices = { send_home = S[44][43], wait = S[44][44], research = S[44][45], }, need_to_build_and_employ = S[44][47], need_to_build = S[44][48], need_to_employ = S[44][49], can_not_cure = S[44][50], disease_name = S[44][51], what_to_do_question = S[44][52], guessed_percentage_name = S[44][53], }, disease_discovered = { close_text = S[44][55], can_cure = S[44][57], need_to_build_and_employ = S[44][58], need_to_build = S[44][59], need_to_employ = S[44][60], discovered_name = S[44][61], -- After this come cause, symptoms and cure of disease }, epidemic = { choices = { declare = S[44][165], cover_up = S[44][166], }, disease_name = S[44][168], declare_explanation_fine = S[44][169], cover_up_explanation_1 = S[44][170], cover_up_explanation_2 = S[44][171], }, epidemic_result = { close_text = S[44][173], failed = { part_1_name = S[44][175], part_2 = S[44][176], }, succeeded = { part_1_name = S[44][177], part_2 = S[44][178], }, compensation_amount = S[44][179], fine_amount = S[44][180], rep_loss_fine_amount = S[44][181], hospital_evacuated = S[44][182], }, vip_visit_query = { choices = { invite = S[44][184], refuse = S[44][185], }, vip_name = S[44][187], }, vip_visit_result = { close_text = S[44][189], telegram = S[44][191], vip_remarked_name = S[44][192], cash_grant = S[44][193], rep_boost = S[44][194], rep_loss = S[44][195], remarks = { super = { S[44][196], S[44][197], S[44][198], }, good = { S[44][199], S[44][200], S[44][201], }, mediocre = { S[44][202], S[44][203], S[44][204], }, bad = { S[44][205], S[44][206], S[44][207], }, very_bad = { S[44][208], S[44][209], S[44][210], }, }, }, diagnosis_failed = { choices = { send_home = S[44][212], take_chance = S[44][213], wait = S[44][214], }, situation = S[44][216], what_to_do_question = S[44][217], partial_diagnosis_percentage_name = S[44][218], }, } -- 45: strange texts, maybe linked to some cheat codes.. -- Seems we won't need them. staff_descriptions.misc = S[46] staff_descriptions.good = S[47] staff_descriptions.bad = S[48] -- remove last string from each category (".") staff_descriptions.misc[38] = nil staff_descriptions.good[16] = nil staff_descriptions.bad[16] = nil queue_window = { num_in_queue = S[49][1], num_expected = S[49][2], num_entered = S[49][3], max_queue_size = S[49][4], } -- TODO: continue here with section 50 -- ... -- 54: Introduction texts to each level local T = {} local level_index = 0 local text_index = 2 while true do local text = S[54][text_index] if text == "." then level_index = level_index + 1 T["level" .. level_index] = "" elseif text == ".." then break else T["level" .. level_index] = T["level" .. level_index] .. " " .. text end text_index = text_index + 1 end introduction_texts = T -- 55: Award texts inserted in the trophy room section (27) -- 57: Information texts for the different rooms local R = {} -- Note that if an id of a room is changed this will need to be changed too. -- TODO: A better solution maybe? local ids = { "gp", "psych", "ward", "operating_theatre", "pharmacy", "cardiogram", "scanner", "ultrascan", "blood_machine", "x_ray", "inflation", "dna_fixer", "hair_restoration", "slack_tongue", "fracture_clinic", "training", "electrolysis", "jelly_vat", "staff_room", "tv_room", "general_diag", "research", "toilets", "decontamination", "no_room", } local id_index = 0 text_index = 14 while true do local text = S[57][text_index] if text == "." then id_index = id_index + 1 R[ids[id_index]] = {""} elseif text == ".." then break else R[ids[id_index]][#R[ids[id_index]]] = R[ids[id_index]][#R[ids[id_index]]] .. text if R[ids[id_index]][#R[ids[id_index]]]:sub(-1) == "." then R[ids[id_index]][#R[ids[id_index]]] = R[ids[id_index]][#R[ids[id_index]]] .. " " end if text:find("//") then R[ids[id_index]][#R[ids[id_index]] + 1] = "" end end text_index = text_index + 1 end room_descriptions = R -- 59: The dynamic info bar dynamic_info = { patient = { actions = { dying = S[59][ 5], awaiting_decision = S[59][ 6], queueing_for = S[59][ 7], -- %s on_my_way_to = S[59][ 8], -- %s cured = S[59][ 9], fed_up = S[59][10], sent_home = S[59][11], sent_to_other_hospital = S[59][12], no_diagnoses_available = S[59][16], no_treatment_available = S[59][17], waiting_for_diagnosis_rooms = S[59][18], waiting_for_treatment_rooms = S[59][19], prices_too_high = S[59][20], epidemic_sent_home = S[59][25], epidemic_contagious = S[59][26], }, diagnosed = S[59][13], -- %s guessed_diagnosis = S[59][14], -- %s diagnosis_progress = S[59][15], emergency = S[59][23], -- %s (disease name) }, vip = S[59][21], health_inspector = S[59][22], staff = { psychiatrist_abbrev = S[59][27], actions = { waiting_for_patient = S[59][24], wandering = S[59][28], going_to_repair = S[59][35], -- %s (name of machine) }, tiredness = S[59][29], ability = S[59][30], -- unused? }, object = { strength = S[59][31], -- %d (max. uses) times_used = S[59][32], -- %d (times used) queue_size = S[59][33], -- %d (num of patients) queue_expected = S[59][34], -- %d (num of patients) }, } -- 60: The progress report window progress_report = { header = S[60][1], very_unhappy = S[60][2], quite_unhappy = S[60][3], more_drinks_machines = S[60][4], too_hot = S[60][5], too_cold = S[60][6], percentage_pop = S[60][7], win_criteria = S[60][8], } -- 62: Some initial advice from the adviser. These are under the adviser variable above. -- 63: Two strings inserted in trophy_room, used for trophies. -- 64: Tooltip for the winning conditions -- These are inserted in the tooltip section under status. -- ... CorsixTH-0.61/CorsixTH/Lua/languages/polish.lua000066400000000000000000004766641321660673500213760ustar00rootroot00000000000000--[[ Copyright (c) 2013 - translation - BuTcHeR (extragry.pl) The study, diagnosis and surgery on the translation performed by: - Bemberg, the anesthesiologist - translation, corrections, testing (grajpopolsku.pl) - Butcher, as the head - the originator, translation, corrections, fonts, tests (extragry.pl) - Johnny, as a doctor - correction (grajpopolsku.pl) - Machiner, as a GP - translation, corrections (grajpopolsku.pl) - Mziab, as a surgeon - translation, font, corrections, tools and preparing script to CAT software (mziab.grajpopolsku.pl) - Spec0071, as a doctor - correction, tests - Twig, as a consultant - technical issues (grajpopolsku.pl) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Font("unicode") Language("Polski", "Polish", "pl", "pol") Inherit("English") Encoding(utf8) font_location_window.caption = "Wybierz czcionkÄ™ (%1%)" misc = { hospital_open = "Szpital otwarty", save_success = "Gra zapisana poprawnie", save_failed = "BÅÄ„D: Gra nie zostaÅ‚a zapisana", low_res = "Niska Rozdz.", no_heliport = "Albo nadal nie odkryto żadnych chorób, bÄ…dź na tej mapie nie ma lÄ…dowiska dla helikopterów.", grade_adverb = { extremely = "maksymalnie", mildly = "nieznacznie", moderately = "Å›rednio", }, not_yet_implemented = "(jeszcze nie wdrożono)", send_message = "WyÅ›lij wiadomość do gracza %d", out_of_sync = "Błąd synchronizacji gry", balance = "Poziom TrudnoÅ›ci:", load_failed = "Wczytywanie nieudane", mouse = "Mysz", done = "Zrobione", force = "SiÅ‚a", pause = "Pauza", send_message_all = "WyÅ›lij wiadomość do wszystkich graczy", } handyman_window = { all_parcels = "Wszystkie", parcel = "Parcela", } staff_list = { morale = "MORALE", tiredness = "ZMĘCZENIE", skill = "UMIEJĘTNOÅšCI", total_wages = "WYPÅATY", } research = { allocated_amount = "Przeznaczona Suma", funds_allocation = "Przeznaczenie Funduszy", categories = { improvements = "Ulepszenia", drugs = "Badania nad Lekami", diagnosis = "SprzÄ™t do Diagnozowania", cure = "SprzÄ™t do Leczenia", specialisation = "Specjalizacje", }, } debug_patient_window = { caption = "Debug Pacjenta", } totd_window = { previous = "Poprzednia Porada", tips = { [1] = "Każdy szpital potrzebuje recepcji oraz Gabinetu Lekarskiego, aby móc normalnie funkcjonować. Później to zależy od rodzaju pacjentów którzy odwiedzajÄ… szpital. Budowa apteki to zawsze dobry wybór.", [2] = "Maszyny takie jak Napowietrzacz wymagajÄ… konserwacji. Zatrudnienij dozorcÄ™ albo dwóch do naprawy twoich urzÄ…dzeÅ„, w przeciwnym wypadku bÄ™dziesz ryzykowaÅ‚, że twój personel oraz pacjenci zostanÄ… ranni.", [3] = "Po chwili Twój personel bÄ™dzie zmÄ™czony. Upewnij siÄ™, że wybudujesz pokój socjalny, aby mogli siÄ™ oni zrelaksować.", [4] = "Umieść odpowiedniÄ… ilość kaloryferów aby utrzymać personel oraz pacjentów w cieple, w przeciwnym razie bÄ™dÄ… oni niezadowoleni. Skorzystaj z mapy miasta aby zlokalizować miejsca w szpitalu, które potrzebujÄ… wiÄ™cej ogrzewania.", [5] = "Poziom umiejÅ›tnoÅ›ci lekarzy ma ogromny wpÅ‚yw na prÄ™dkość oraz jakość diagnozowania. Umieść wykwalifikowanego lekarza w Gabinecie Lekarskim a nie bÄ™dziesz potrzebowaÅ‚ wielu dodatkowych gabinetów diagnostycznych.", [6] = "Asystenci oraz doktorzy mogÄ… doskonalić swoje umiejÄ™tnoÅ›ci uczÄ…c siÄ™ od konsultanta w sali treningowej. Jeżeli konsultant posiada specjalne kwalifikacje (chirurg, psychiatra, naukowiec), bÄ™dzie on również przekazywaÅ‚ i tÄ… wiedzÄ™ swoim uczniom.", [7] = "Czy próbowaÅ‚eÅ› wpisać Europejski numer alarmowy (112) na faxie? Upewnij siÄ™, że masz włączony dźwiÄ™k!", [8] = "Niektóre ustawienia gry, takie jak rozdzielczość oraz jÄ™zyk, możesz dostosować w oknie opcji, dostÄ™pnym w głównym menu gry.", [9] = "Wybrano jÄ™zyk inny niż angielski jednak caÅ‚y tekst jest wyÅ›wietlany po angielsku? Pomóż nam przetÅ‚umaczyć brakujÄ…ce teksty na Twój jÄ™zyk ojczysty!", [10] = "Ekipa CorsixTH poszukuje wzmocnieÅ„! Czy jesteÅ› zainteresowany kodowaniem, tÅ‚umaczeniem lub tworzeniem grafiki dla CorsixTH? Skontaktuj siÄ™ z nami na naszym forum, liÅ›cie email lub kanale IRC (corsix-th na freenode).", [11] = "JeÅ›li znajdziesz jakiÅ› błąd, zgÅ‚oÅ› go w naszym systemie: th-issues.corsix.org", [12] = "Na każdym poziomie należy speÅ‚nić pewne wymagania, zanim bÄ™dzie można przejść do kolejnego. Sprawdź, w oknie statusu, aby zobaczyć postÄ™p w realizacji celów poziou.", [13] = "JeÅ›li chcesz edytować lub usunąć istniejÄ…ce pomieszczenia, można to zrobić za pomocÄ… przycisku edycji pomieszczenia znajdujÄ…cego siÄ™ w pasku narzÄ™dzi na dole.", [14] = "W tÅ‚umie oczekujÄ…cych pacjentów, można szybko dowiedzieć siÄ™, którzy z nich czekajÄ… do danego gabinetu. Wystarczy najechać kursorem myszy na pacjenta.", [15] = "Kliknij na drzwi gabinetu, aby zobaczyć oczekujÄ…cÄ… do niego kolejkÄ™. Można dokonać tam również przydatnych zmian, takich jak na przykÅ‚ad zmiana kolejnoÅ›ci w kolejce lub wysyÅ‚anie pacjenta do innego gabinetu.", [16] = "Niezadowolony personel bÄ™dzie czÄ™sto prosiÅ‚ o podwyżki. Upewnij siÄ™, że Twój personel pracuje w komfortowych warunkach aby tego uniknąć.", [17] = "Pacjenci bÄ™dÄ… spragnieni podczas czekania w szpitalu, tym bardziej jeÅ›li podkrÄ™cisz ogrzewanie! Umiejscowienie Automatów do napoi w strategicznych miejscach przyniesie dodatkowy dochód.", [18] = "Jeżeli już spotkaÅ‚ siÄ™ z danÄ… chorobÄ…, w każdym momencie możesz przerwać diagnozowanie pacjenta i odgadnąć jak go wyleczyć. PamiÄ™taj jednak, że może to zwiÄ™kszyć ryzyko błędnej kuracji, co może prowadzić do Å›mierci pacjenta.", [19] = "NagÅ‚e wypadki mogÄ… być dobrym źródÅ‚em dodatkowych pieniÄ™dzy, pod warunkiem, że posiadasz niezbÄ™dne gabinety do wyleczenia pacjentów w wyznaczonym czasie.", }, next = "NastÄ™pna Porada", } queue_window = { num_in_queue = "DÅ‚ugość Kolejki", num_entered = "Odwiedzono", max_queue_size = "Maks. Roz.", num_expected = "Spodziewani", } staff_class = { doctor = "Lekarz", handyman = "Dozorca", receptionist = "Recepcjonistka", nurse = "PielÄ™gniarka", surgeon = "Chirurg", } tooltip = { hire_staff_window = { prev_person = "Zobacz poprzedniÄ… osobÄ™", cancel = "Anuluj", psychiatrist = "Psychiatra", salary = "Pensja", next_person = "Zobacz nastÄ™pnÄ… osobÄ™", nurses = "Zobacz dostÄ™pne PielÄ™gniarki", surgeon = "Chirurg", handymen = "Zobacz dostÄ™pnych Dozorców", doctors = "Zobacz dostÄ™pnych Lekarzy", doctor_seniority = "Rangi Lekarzy (Asystent, Doktor, Konsultant)", hire = "Zatrudnij", researcher = "Naukowiec", qualifications = "Dodatkowe specjalizacje Lekarzy", receptionists = "Zobacz dostÄ™pne Recepcjonistki", staff_ability = "UmiejÄ™tnoÅ›ci personelu", }, handyman_window = { parcel_select = "Miejsce, w którym dozorca przyjmuje zadania, kliknij aby zmienić ustawienia.", close = "Anuluj żądanie", ability = "UmiejÄ™tnoÅ›ci", face = "Twarz Dozorcy", prio_machines = "ZwiÄ™ksz priorytet naprawy urzÄ…dzeÅ„", prio_litter = "ZwiÄ™ksz priorytet sprzÄ…tania", happiness = "Zadowolenie", prio_plants = "ZwiÄ™ksz priorytet podlewania roÅ›lin", name = "ImiÄ™ Dozorcy", tiredness = "ZmÄ™czenie", center_view = "Zbliżenie na DozorcÄ™", salary = "Pensja", sack = "Zwolnij", pick_up = "PodnieÅ›", }, staff_list = { ability_2 = "Poziom UmiejÄ™tnoÅ›ci Pracowników", next_person = "Zobacz nastÄ™pnÄ… osobÄ™", detail = "Troska o Detale", happiness = "Zadowolenie pracowników", researcher_train = "%d%% szkolony na Naukowca", handymen = "Zobacz listÄ™ Dozorców zatrudnionych w tym szpitalu", tiredness = "ZmÄ™czenie pracowników", researcher = "Wykwalifikowany Naukowiec", happiness_2 = "Morale Pracowników", pay_rise = "PodnieÅ› pensjÄ™ tej osoby o 10%", bonus = "Daj tej osobie 10% premii", prev_person = "Zobacz poprzedniÄ… osobÄ™", nurses = "Zobacz listÄ™ PielÄ™gniarek zatrudnionych w tym szpitalu", psychiatrist = "Wykwalifikowany Psychiatra", salary = "Indywidualne pensje pracowników", ability = "UmiejÄ™tnoÅ›ci pracowników", close = "Wyjdź i wróć do gry", sack = "Zwolnij tÄ™ osobÄ™", surgeon = "Wykwalifikowany Chirurg", tiredness_2 = "ZmÄ™czenie Pracowników", doctors = "Zobacz listÄ™ Lekarzy zatrudnionych w tym szpitalu", doctor_seniority = "Ranga Lekarza", view_staff = "Zobacz osobÄ™ w pracy", surgeon_train = "%d%% szkolony na Chirurga", skills = "Dodatkowe specjalizacje", receptionists = "Zobacz listÄ™ Recepcjonistek zatrudnionych w tym szpitalu", psychiatrist_train = "%d%% szkolony na PsychiatrÄ™", }, research = { cure_inc = "ZwiÄ™ksz procenty", close = "Zamknij ekran BadaÅ„", specialisation_dec = "Zmniejsz procenty", diagnosis_dec = "Zmniejsz procenty", allocated_amount = "Ilość przeznaczonego budżetu", improvements_inc = "ZwiÄ™ksz procenty", drugs_dec = "Zmniejsz procenty", drugs_inc = "ZwiÄ™ksz procenty", cure_dec = "Zmniejsz procenty", specialisation_inc = "ZwiÄ™ksz procenty", improvements_dec = "Zmniejsz procenty", diagnosis_inc = "ZwiÄ™ksz procenty", }, machine_window = { repair = "WyÅ›lij DozorcÄ™ do naprawy urzÄ…dzenia", name = "Nazwa", close = "Anuluj żądanie", times_used = "Liczba użyć", status = "Stan urzÄ…dzenia", replace = "WymieÅ„ urzÄ…dzenie", }, place_objects_window = { confirm = "Potwierdź", cancel = "Anuluj", pick_up = "PodnieÅ› obiekt", buy_sell = "Kup/sprzedaj obiekty", }, totd_window = { previous = "Pokaż poprzedniÄ… poradÄ™", next = "Pokaż nastÄ™pnÄ… poradÄ™", }, status = { percentage_cured = "Musisz wyleczyć przynajmniej %d%% pacjentów odwiedzajÄ…cych twój szpital. Do tej pory wyleczyÅ‚eÅ› %d%%", thirst = "Ogólny poziom pragnienia ludzi w twoim szpitalu", close = "Zamknij okno Statystyk", population_chart = "Diagram pokazuje jaki odsetek ludnoÅ›ci odwiedza każdy szpital", win_progress_own = "Pokaż postÄ™p twojego szpitala ku wygranej", reputation = "Poziom reputacji musi wynosić co najmniej %d. Obecnie jest to %d", population = "Musisz Å›ciÄ…gnąć do swego szpitala %d%% ogólnej populacji", warmth = "Ogólny poziom ciepÅ‚a w twoim szpitalu", percentage_killed = "W tej misji umrzeć może nie wiÄ™cej niż %d%% pacjentów szpitala. Do tej pory umarÅ‚o %d%%", balance = "Stan twojego konta musi wynosić co najmniej %d. Obecnie jest to %d", value = "Twój szpital musi być wart przynajmniej %d PLN. Obecna jego wartość to %d PLN", win_progress_other = "Pokaż postÄ™p %s ku wygranej", num_cured = "W tej misji musisz wyleczyć %d ludzi. Do tej pory wyleczyÅ‚eÅ› %d", happiness = "Ogólne zadowolenie ludzi w twoim szpitalu", }, queue_window = { end_of_queue = "PrzeciÄ…gnij pacjenta na tÄ™ ikonÄ™, aby przesunąć go na tyÅ‚ kolejki", num_entered = "Liczba pacjentów odwiedzajÄ…cych do tej pory", close = "Zamknij to okno", num_in_queue = "Liczba pacjentów w kolejce", num_expected = "Liczba pacjentów oczekiwanych wkrótce ", front_of_queue = "PrzeciÄ…gnij pacjenta na tÄ™ ikonÄ™, aby przesunąć go na przód kolejki", dec_queue_size = "Zmniejsz maksymalny rozmiar kolejki", max_queue_size = "Maksymalny rozmiar kolejki", inc_queue_size = "ZwiÄ™ksz maksymalny rozmiar kolejki", patient = "PrzeciÄ…gnij pacjenta, aby przesunąć go w kolejce. Prawy-klik na pacjencie, aby wysÅ‚ać go do domu lub do szpitala konkurencji", patient_dropdown = { send_home = "Wypisz pacjenta ze szpitala", hospital_2 = "WyÅ›lij pacjenta do innego szpitala", reception = "WyÅ›lij pacjenta do Recepcji", hospital_1 = "WyÅ›lij pacjenta do innego szpitala", hospital_3 = "WyÅ›lij pacjenta do innego szpitala", }, }, jukebox = { rewind = "Poprzedni utwór", loop = "Odtwarzanie zapÄ™tlone", stop = "Stop", close = "Zamknij szafÄ™ grajÄ…cÄ…", current_title = "Szafa grajÄ…ca", play = "Odtwarzaj", fast_forward = "NastÄ™pny utwór", }, graphs = { deaths = "Przełącz zgony", close = "Zamknij Wykresy", scale = "Skala wykresu", money_out = "Przełącz wydatki", visitors = "Przełącz odwiedzajÄ…cych", wages = "Przełącz wypÅ‚aty", balance = "Przełącz stan konta", money_in = "Przełącz dochody", cures = "Przełącz wyleczonych", reputation = "Przełącz reputacjÄ™", }, toolbar = { reputation = "Twoja reputacja", casebook = "Teczka z lekami", edit = "Edytuj pomieszczenia/przedmioty", staff_list = "PrzeglÄ…d personelu", policy = "Strategia szpitala", date = "Data", charts = "Wykresy", objects = "Wyposaż korytarz", balance = "Twój stan konta", research = "Badania", hire = "Zatrudnij personel", status = "Pozycja", town_map = "Mapa miasta", rooms = "Zbuduj pomieszczenie", bank_button = "Lewe KlikniÄ™cie - Menadżer Banku, Prawe KlikniÄ™cie - Raport Bankowy", }, message = { button = "Kliknij lewym przyciskiem myszy aby otworzyć wiadomość", button_dismiss = "Lewy przycisk myszy otwiera wiadomość, prawy jÄ… usuwa", }, pay_rise_window = { accept = "SpeÅ‚nij żądania pÅ‚acowe", decline = "Nie dawaj podwyżki, tylko zwolnij", }, town_map = { close = "Wyjdź z mapy miasta", plants = "Przełącz roÅ›liny", fire_extinguishers = "Przełącz gaÅ›nice", people = "Przełącz ludzi", balance = "Bilans", heat_dec = "Zmniejsz ogrzewanie", heating_bill = "Rachunek za ogrzewanie", radiators = "Przełącz kaloryfery", objects = "Przełącz obiekty", heat_level = "Poziom ciepÅ‚a", heat_inc = "ZwiÄ™ksz ogrzewanie", }, custom_game_window = { start_game_with_name = "Wczytaj poziom %s", free_build = "Zaznacz, jeżeli chcesz grać bez limitów finansowych oraz ustalonych warunków przegranej lub zwyciÄ™stwa", }, cheats_window = { close = "Zamknij okno oszustw", cheats = { end_month = "Przeskakuje na koniec miesiÄ…ca.", create_patient = "Tworzy pacjenta na skraju mapy.", money = "Dodaje 10.000 do swojego konta.", emergency = "Tworzy nagÅ‚y wypadek.", win_level = "Wygrywa obecny poziom.", vip = "Tworzy VIP'a.", lose_level = "Przegrywa obecny poziom.", earthquake = "Tworzy trzÄ™sienie ziemi.", all_research = "DokaÅ„cza wszystkie badania.", end_year = "Przeskakuje na koniec roku.", }, }, casebook = { sent_home = "Liczba pacjentów odesÅ‚anych do domu", cure_requirement = { hire_staff_old = "Musisz zatrudnić %s, aby leczyć to schorzenie", possible = "Możesz leczyć to schorzenie", not_possible = "Nie możesz jeszcze leczyć tego schorzenia", ward_hire_nurse = "Potrzebujesz PielÄ™gniarki do pracy na Oddziale, aby leczyć to schorzenie", hire_surgeon = "Musisz zatrudnić drugiego Chirurga, aby przeprowadzać operacje", hire_staff = "Musisz zatrudnić personel aby poradzić sobie z tym schorzeniem", research_machine = "Musisz wynaleźć urzÄ…dzenie do tej kuracji", build_room = "Musisz zbudować gabinet, aby leczyć to schorzenie", build_ward = "Musisz zbudować OddziaÅ‚, aby prowadzić kuracje", hire_surgeons = "Musisz zatrudnić dwóch Chirurgów, aby przeprowadzać operacje", }, increase = "ZwiÄ™ksz kwotÄ™", up = "PrzewiÅ„ w górÄ™", reputation = "Reputacja Leczenia lub Diagnozowania", research = "Kliknij tutaj, aby użyć specjalnego budżetu badawczego na tÄ™ kuracjÄ™", close = "Zamknij TeczkÄ™", earned_money = "CaÅ‚kowity zarobek", cure_type = { psychiatrist = "Psychiatra zajmuje siÄ™ tÄ… kuracjÄ…", drug_percentage = "Ta kuracja używa leku, który jest efektywny w %d%%", drug = "Ta kuracja wymaga leków", machine = "Ta kuracja wymaga urzÄ…dzenia", unknown = "Nadal nie wiesz jak leczyć to schorzenie", surgery = "To schorzenie wymaga operacji", }, decrease = "Zmniejsz kwotÄ™", deaths = "Liczba zgonów", cured = "Liczba wyleczonych osób", down = "PrzewiÅ„ w dół", treatment_charge = "Koszt", }, policy = { diag_termination = "Diagnozowanie pacjenta bÄ™dzie kontynuowane, dopóki Lekarz nie bÄ™dzie pewny jak ustawiony jest wskaźnik ZATRZYMAJ PROCEDURĘ, lub dopóki wszystkie urzÄ…dzenia diagnostyczne nie zostanÄ… sprawdzone", close = "Zamknij okno Strategii Szpitala", staff_leave = "Kliknij tutaj, aby wysÅ‚ać wolnych pracowników do pomocy swoim kolegom", diag_procedure = "Jeżeli diagnoza Lekarza jest mniej pewna niż ustalony wskaźnik WYPISZ DO DOMU, pacjent bÄ™dzie odesÅ‚any do domu. Jeżeli diagnoza jest lepsza niż wskaźnik POSTAW DIAGNOZĘ, pacjent zostanie wysÅ‚any na odpowiednie leczenie", staff_rest = "Jak bardzo personel musi być zmÄ™czony, zanim pójdzie odpocząć", staff_stay = "Kliknij tutaj, aby pracownicy pozostali w gabinetach, które im przydzieliÅ‚eÅ›", }, bank_manager = { graph = "Wykres spodziewanych wpÅ‚at od %s", close = "Zamknij okno banku", hospital_value = "Wartość szpitala", graph_return = "Wróć do poprzedniego widoku", current_loan = "ZaciÄ…gniÄ™te pożyczki", borrow_5000 = "Pożycz 5000 PLN z banku", balance = "Stan konta", interest_payment = "MiesiÄ™czne odsetki", inflation_rate = "Roczna stawka inflacji", interest_rate = "Roczna stawka odsetek", repay_5000 = "SpÅ‚ać 5000 PLN bankowi", show_graph = "Pokaż wykres spodziewanych wpÅ‚at od %s", insurance_owed = "Ilość pieniÄ™dzy, które jest winien %s", }, main_menu = { exit = "Nie, nie, proszÄ™ nie odchodź!", custom_campaign = "Rozegraj kampaniÄ™ stworzonÄ… przez spoÅ‚eczność", custom_level = "Zbuduj swój szpital na dodatkowych poziomach", network = "Rozpocznij grÄ™ sieciowÄ…", quit = "Wyjdź", continue = "Kontynuuj poprzedniÄ… grÄ™", options = "ZmieÅ„ różne ustawienia gry", load_menu = { load_slot = "WCZYTAJ GRĘ", empty_slot = "PUSTY", }, new_game = "Zacznij grÄ™ od samego poczÄ…tkuâ€", load_game = "Wczytaj zapisanÄ… grÄ™", map_edit = "Stwórz wÅ‚asnÄ… mapÄ™", }, patient_window = { graph = "Kliknij, aby przełączyć siÄ™ pomiÄ™dzy wykresem zdrowia osób a ich historiÄ… leczenia", casebook = "Pokaż detale choroby", close = "Anuluj żądanie", queue = "Zobacz detale kolejki", happiness = "Zadowolenie", warmth = "Temperatura", center_view = "Zbliżenie na osobÄ™", thirst = "Pragnienie", send_home = "Wypisz osobÄ™ ze szpitala", abort_diagnosis = "WyÅ›lij osobÄ™ na leczenie bez skoÅ„czenia diagnozowania choroby", }, menu_list_window = { save_date = "Kliknij tutaj aby sortować listÄ™ wedÅ‚ug ostatniej daty modyfikacji", name = "Kliknij tutaj aby sortować listÄ™ wedÅ‚ug nazwy", back = "Wróć", }, watch = { emergency = "NagÅ‚y wypadek: czas pozostaÅ‚y na wyleczenie wszystkich pacjentów z wypadku.", hospital_opening = "Czas budowy: to czas pozostaÅ‚y do oficjalnego otwarcia szpitala. Kliknij na przycisk, aby natychmiast otworzyć szpital.", epidemic = "Epidemia: czas pozostaÅ‚y na opanowanie epidemii. Gdy czas upÅ‚ynie lub zarażony pacjent opuÅ›ci szpital, odwiedzi ciÄ™ Inspektor Zdrowia. Przycisk włącza/wyłącza tryb szczepienia. Kliknij na pacjenta, aby zaszczepiÅ‚a go PielÄ™gniarka.", }, new_game_window = { player_name = "Wprowadź nazwÄ™ jaka bÄ™dzie używana podczas gry", difficulty = "Wybierz poziom trudnoÅ›ci na jakim chcesz rozpocząć grÄ™", easy = "Jeżeli jesteÅ› poczÄ…tkujÄ…cym graczem, jest to dla ciebie odpowiedni poziom", medium = "Jest to Å›redni poziom trudnoÅ›ci, zalecany dla wiÄ™kszoÅ›ci graczy", hard = "Jeżeli chcesz mieć wiÄ™cej wyzwaÅ„ a tego typu gry to twój chleb powszedni wybierz tÄ… opcjÄ™", tutorial = "Jeżeli potrzebujesz pomocy przy rozpoczÄ™ciu gry zaznacz to pole.", start = "Rozpocznij grÄ™ z wybranymi ustawieniami", cancel = "Och, tak naprawdÄ™ nie chcÄ™ rozpoczynać nowej gry!", }, save_game_window = { new_save_game = "Wprowadź nazwÄ™ dla zapisanej gry", save_game = "Nadpisz zapisanÄ… grÄ™ %s", }, calls_dispatcher = { assigned = "To pole jest zaznaczone, jeÅ›li ktoÅ› jest przypisany do wybranego zadania.", task = "Lista zadaÅ„ - kliknij na zadanie, aby otworzyć okno poleceÅ„ dla personelu i przejść do wybranej lokacji zadania.", close = "Zamknij okno dyspozycji.", }, research_policy = { research_progress = "PostÄ™p w kierunku nowego odkrycia w tej dziedzinie: %1%/%2%", no_research = "W tym momencie nie sÄ… prowadzone żadne badania w tej dziedzinie", }, information = { close = "Zamknij okno informacji", }, lua_console = { textbox = "Tutaj wprowadź kod Lua aby go uruchomić", execute_code = "Uruchom kod który wprowadziÅ‚eÅ›", close = "Zamknij konsolÄ™", }, staff_window = { doctor_seniority = "Ranga - Asystent, Doktor lub Konsultant", psychiatrist = "Psychiatra", close = "Anuluj żądanie", ability = "Poziom umiejÄ™tnoÅ›ci", pick_up = "PodnieÅ›", sack = "Zwolnij", surgeon = "Chirurg", happiness = "Poziom zadowolenia", salary = "MiesiÄ™czna pensja", name = "ImiÄ™ i nazwisko pracownika", tiredness = "Poziom zmÄ™czenia", center_view = "Lewe klikniÄ™cie przybliża pracownika, prawe klikniÄ™cie przełącza miÄ™dzy pracownikami", skills = "Specjalizacje", researcher = "Naukowiec", face = "Twarz tej osoby - kliknij aby otworzyć ekran zarzÄ…dzania", }, rooms = { ultrascan = "Lekarz używa Ultraskanera do diagnozowania pacjentów", research_room = "Lekarze ze specjalizacjÄ… Naukowca mogÄ… wynajdować nowe leki i urzÄ…dzenia w Dziale Badawczym", fracture_clinic = "PielÄ™gniarka korzysta z Gabinetu Ortopedycznego do skÅ‚adania Zgruchotanych KoÅ›ci", gps_office = "Pacjenci otrzymujÄ… wstÄ™pnÄ… konsultacjÄ™ w Gabinecie Lekarskim", inflation = "Lekarz używa Napowietrzacza do leczenia pacjentów z GÅ‚owowzdÄ™ciem", staffroom = "Lekarze i PielÄ™gniarki odpoczywajÄ… i regenerujÄ… siÅ‚y w pokoju dla personelu", jelly_vat = "Lekarz używa GalaretownicÄ™ do leczenia GalaretowatoÅ›ci", scanner = "Lekarz używa Skanera do diagnozowania pacjentów", decontamination = "Lekarz używa Prysznica OdkażajÄ…cego, aby wyleczyć Radioaktywność", pharmacy = "PielÄ™gniarka wydaje pacjentom leki w Aptece", cardiogram = "Lekarz używa Kardiografu do diagnozowania pacjentów", ward = "OddziaÅ‚ jest przydatny zarówno do diagnozowania jak i leczenia. Pacjenci sÄ… tu przysyÅ‚ani na obserwacjÄ™ oraz rekonwalescencjÄ™ pooperacyjnÄ…", training_room = "Sala Szkoleniowa z Konsultantem może być używana do szkolenia innych Lekarzy", operating_theatre = "Sala Operacyjna potrzebuje dwóch Lekarzy ze specjalizacjÄ… chirurga", psychiatry = "Gabinet Psychiatryczny leczy szalonych pacjentów i diagnozuje różne choroby, potrzebuje jednak lekarza ze specjalizacjÄ… Psychiatry", hair_restoration = "Lekarz używa Przeszczepiacza WÅ‚osów do leczenia Å‚ysych pacjentów", tongue_clinic = "Lekarz używa Krajalnicy do leczenia ObwisÅ‚ego JÄ™zyka", dna_fixer = "Lekarz używa Re-GEN-eratora do leczenia pacjentów z DNA Obcych", general_diag = "Lekarz używa gabinetu do przeprowadzenia Podstawowych BadaÅ„. Tanie a zarazem bardzo efektywne", toilets = "Zbuduj Toalety, aby pacjenci nie zapaskudzili szpitala!", electrolysis = "Lekarz używa Elektrolizera do leczenia WÅ‚ochacizny", x_ray = "Lekarz używa Rentgena do diagnozowania pacjentów", blood_machine = "Lekarz używa Analizatora Krwi do diagnozowania pacjentów", }, statement = { close = "Zamknij ekran Raportu", }, buy_objects_window = { confirm = "Kup przedmiot(y)", cancel = "Anuluj", increase = "Kup o jeden przedmiot wiÄ™cej", total_value = "Wartość zamówionych przedmiotów", price = "Cena przedmiotu", decrease = "Kup o jeden przedmiot mniej", }, load_game_window = { load_game = "Wczytaj grÄ™ %s", load_autosave = "Wczytaj autozapis", load_game_number = "Wczytaj grÄ™ %d", }, window_general = { confirm = "Potwierdź", cancel = "Anuluj", }, fax = { close = "Zamknij okno bez usuwania wiadomoÅ›ci", }, objects = { chair = "KrzesÅ‚o: tutaj siedzÄ… pacjenci i mówiÄ… o swoich dolegliwoÅ›ciach.", litter = "Odpadek: Rzucony przez pacjenta na podÅ‚ogÄ™, gdyż nie znalazÅ‚ on Å›mietnika, do którego mógÅ‚ go wyrzucić.", sofa = "Sofa: pracownicy bÄ™dÄ… grzecznie na niej siedzieli, dopóki nie znajdÄ… sobie lepszej formy relaksu.", operating_table = "30 OB_OP_TABLE", bed2 = "nieużywane", bench = "Åawka: zapewnia siedzenie dla jednego pacjenta, dziÄ™ki czemu oczekiwanie jest komfortowe.", scanner = "14 OB_SCANNER", couch = "18 OB_COUCH", blood_machine = "42 OB_BLOOD_MC", table1 = "Stół (REMOVED): na nim leżą czasopisma, aby pacjenci siÄ™ nie nudzili.", video_game = "Gra video: personel relaksuje siÄ™ grajÄ…c w Hi-Octane.", lamp = "Lampa: Å›wieci i zapewnia widoczność personelowi.", op_sink2 = "34 OB_OP_SINK_2", door = "Drzwi: ludzie je czÄ™sto otwierajÄ… i zamykajÄ….", auto_autopsy = "Autopsja: znacznie pomaga w odkrywaniu nowych leków", reception_desk = "Biurko Recepcji: wymaga Recepcjonistki, która pokieruje pacjentów do Lekarzy.", hair_restorer = "25 OB_HAIR_RESTORER", projector = "37 OB_PROJECTOR", crash_trolley = "20 OB_CRASH", tv = "TV: dziÄ™ki niemu pracownicy nie przegapiÄ… ulubionych programów.", ultrascanner = "22 OB_ULTRASCAN", surgeon_screen = "35 OB_SURGEON_SCREEN", litter_bomb = "Bomba Åšmieciowa: sabotuje konkurencyjne szpitale", inflator = "Napowietrzacz: leczy ludzi z GÅ‚owowzdÄ™ciem.", table2 = "12 OB_BTABLE", desk = "Biurko: Wymagane do postawienia na nim komputera.", pool_table = "Bilard: pomaga personelowi siÄ™ zrelaksować.", x_ray_viewer = "29 OB_XRAY_VIEWER", radiation_shield = "28 OB_RAD_SHIELD", bed = "Åóżko: leżą tutaj ciężko chorzy ludzie.", swing_door2 = "53 OB_DOUBLE_DOOR2", console = "15 OB_SCANNER_CONSOLE", op_sink1 = "33 OB_OP_SINK_1", bookcase = "Biblioteczka: źródÅ‚o informacji dla Lekarzy.", drinks_machine = "Automat do napoi: zapobiega pragnieniu oraz przynosi dochody.", comfortable_chair = "61 OB_COMFY_CHAIR", skeleton = "Szkielet: używany w celach szkoleniowych oraz na Halloween.", computer = "Komputer: klucz do prowadzenia badaÅ„", bin = "Åšmietnik: pacjenci wrzucajÄ… tu odpadki.", pharmacy_cabinet = "Apteka: tutaj trzymane sÄ… leki", radiator = "Kaloryfer: zapewnia ciepÅ‚o w caÅ‚ym szpitalu.", cast_remover = "24 OB_CAST_REMOVE", atom_analyser = "Analizator Atomów: umieszczony w Dziale Badawczym, przyspiesza caÅ‚y proces badawczy.", plant = "RoÅ›lina: zwiÄ™ksza zadowolenie pacjentów i oczyszcza powietrze.", jelly_moulder = "47 OB_JELLY_VAT", cardio = "13 OB_CARDIO", toilet = "Klozet: pacjenci, noo... używajÄ… go.", electrolyser = "46 OB_ELECTRO", fire_extinguisher = "GaÅ›nica: minimalizuje zagrożenie ze strony uszkodzonych urzÄ…dzeÅ„.", bed3 = "nieużywane", swing_door1 = "52 OB_DOUBLE_DOOR1", lecture_chair = "KrzesÅ‚o ucznia: twoi uczÄ…cy siÄ™ lekarze siedzÄ… tutaj i robiÄ… notatki, nudzÄ… siÄ™ i bezmyÅ›lnie bazgrolÄ…. Im wiÄ™cej krzeseÅ‚, tym wiÄ™ksza może być klasa.", screen = "16 OB_SCREEN", toilet_sink = "Zlew: twoi bardziej Å›wiadomi higieny pacjenci mogÄ… umyć tu brudne rÄ™ce. JeÅ›li zabraknie zlewów, pacjenci robiÄ… siÄ™ niezadowoleni.", shower = "54 OB_DECON_SHOWER", gates_of_hell = "48 OB_HELL", entrance_right = "59 OB_ENT_RDOOR", entrance_left = "58 OB_ENT_LDOOR", slicer = "26 OB_SLICER", dna_fixer = "23 OB_DNA_FIXER", x_ray = "27 OB_XRAY", cabinet = "Szafka: zawiera akta pacjentów, notatki oraz dokumenty naukowe.", }, build_room_window = { cost = "Koszt wybranego pomieszczenia", room_classes = { treatment = "Wybierz gabinety Podstawowego Leczenia", diagnosis = "Wybierz gabinety Diagnostyczne", facilities = "Wybierz gabinety UdogodnieÅ„", clinic = "Wybierz gabinety Specjalistyczne", }, close = "Przerwij i wróć do gry", }, options_window = { fullscreen = "Wybór pomiÄ™dzy trybem peÅ‚noekranowym lub grÄ… w oknie", fullscreen_button = "Kliknij aby włączyć tryb peÅ‚noekranowy", resolution = "Rozdzielczość w jakiej powinna dziaÅ‚ać gra", select_resolution = "Wybierz nowÄ… rozdzielczość", audio_toggle = "Włącz/wyłącz", folder_button = "Opcje folderów", customise_button = "Dodatkowe ustawienia modifikujÄ…ce twojÄ… rozgrywkÄ™", width = "Wpisz żądanÄ… szerokość ekranu", height = "Wpisz żądanÄ… wysokość ekranu", apply = "Zatwierdź wybranÄ… rozdzielczość", cancel = "Powrót bez zmiany rozdzielczośći", data_location = "Katalog z zainstalowanÄ… oryginalnÄ… grÄ… Theme Hospital, która wymagana jest do uruchomienia CorsixTH", font_location = "Lokalizacja pliku z czcionkÄ…, która jest w stanie wyÅ›wietlić znaki wymagane przez twój jÄ™zyk. Jeżeli nie bÄ™dzie ona wybrana, wybór jÄ™zyka obsÅ‚ugujÄ…cego inne znaki niż oryginalna gra nie bÄ™dzie możliwy. PrzykÅ‚ady: Rosyjski i ChiÅ„ski", language = "JÄ™zyk, w którym wyÅ›wietlone zostanÄ… teksty gry", select_language = "Wybierz jÄ™zyk gry", language_dropdown_item = "Wybierz %s jako jÄ™zyk gry", original_path = "Aktualnie wybrany katalog z zainstalowanÄ… grÄ… Theme Hospital", browse = "ZmieÅ„ Å›cieżkÄ™ zainstalowanej gry Theme Hospital (obecna lokalizacja: %1%)", browse_font = "ZmieÅ„ Å›cieżkÄ™ dla innego pliku z czcionkÄ… (obecna lokalizacja: %1%)", no_font_specified = "Lokalizacja czcionki nie zostaÅ‚a jeszcze wybrana!", back = "Zamknij okno opcji", }, } menu_charts = { bank_manager = " (F1) MENADÅ»ER BANKU ", statement = " (F2) RAPORT ", staff_listing = " (F3) LISTA PERSONELU ", town_map = " (F4) MAPA MIASTA ", casebook = " (F5) TECZKA ", research = " (F6) BADANIA ", status = " (F7) POZYCJA ", graphs = " (F8) WYKRESY ", policy = " (F9) STRATEGIA SZPITALA ", briefing = " ODPRAWA ", } town_map = { number = "Numer Gruntu", not_for_sale = "Nie na Sprzedaż", chat = "Inf. o MieÅ›cie", price = "Cena Gruntu", for_sale = "Na Sprzedaż", owner = "WÅ‚aÅ›ciciel", area = "Rozmiar", } vip_names = { [1] = "Burmistrz Trumpton", [2] = "Lawrence Nightingale", [3] = "Bernard, król Niderlandów", [4] = "Aung Sang Su Kyi, lider birmaÅ„skiej opozycji demokratycznej", [5] = "Sir Reginald Crumbly", [6] = "Billy Savile, Oficer Orderu", [7] = "Radny Crawford Purves", [8] = "Rakieta Ronnie Jepson", [9] = "PiÅ‚karz ligi Premiership", [10] = "L. F. Probst III", health_minister = "Minister Zdrowia", } custom_game_window = { caption = "Gra niestandardowa", free_build = "Wolna budowa", } cheats_window = { cheats = { end_month = "Koniec miesiÄ…ca", create_patient = "Stwórz pacjenta", money = "PieniÄ…dze", emergency = "NagÅ‚y wypadek", win_level = "Wygraj poziom", vip = "Stwórz VIP", lose_level = "Przegraj poziom", earthquake = "Stwórz trzÄ™sienie ziemi", all_research = "DokoÅ„cz badania", end_year = "Koniec roku", }, close = "Zamknij", caption = "Oszustwa", cheated = { no = "Używano oszustw: Nie", yes = "Używano oszustw: Tak", }, warning = "Uwaga: Jeżeli bÄ™dziesz oszukiwć nie dostaniesz dodatkowych punktów na koniec poziomu!", } room_descriptions = { ultrascan = { [1] = "Ultraskaner//", [2] = "Udoskonalony przyrzÄ…d diagnozujÄ…cy. Jest wart swej wysokiej ceny, o ile chcesz zapewnić pacjentom najlepsze warunki diagnozowania.//", [3] = "Ultraskaner wymaga Lekarza. Musi być także konserwowany. ", }, gp = { [1] = "Gabinet Lekarski//", [2] = "To najważniejszy gabinet w Twoim szpitalu. Nowi pacjenci sÄ… tu wysyÅ‚ani, aby dowiedzieć siÄ™ co im dolega. NastÄ™pnie odsyÅ‚ani sÄ… do dalszej diagnozy lub do gabinetów, w których mogÄ… zostać wyleczeni. Możesz zbudować kolejny Gabinet Lekarski, jeżeli w tym bÄ™dzie zbyt tÅ‚oczno. Rozmiar gabinetu i liczba urzÄ…dzeÅ„ sÄ… wyznacznikiem autorytetu jakim cieszy siÄ™ pracujÄ…cy w nim Lekarz. To dotyczy również innych pomieszczeÅ„.//", [3] = "Do funkcjonowania Gabinetu Lekarskiego niezbÄ™dny jest Lekarz. ", }, fracture_clinic = { [1] = "Gabinet Ortopedyczny//", [2] = "Usuwacz Gipsu używa potężnego przemysÅ‚owego lasera do przeciÄ™cia stwardniaÅ‚ego gipsu, wywoÅ‚ujÄ…c przy tym nieznaczny ból u pacjenta.//", [3] = "Gabinet Ortopedyczny potrzebuje PielÄ™gniarki. Wymaga również czÄ™stej konserwacji. ", }, tv_room = { [1] = "SALA TV NIE UÅ»YWANA", }, inflation = { [1] = "Napowietrzalnia//", [2] = "Pacjenci z bolesnym, acz zabawnym GÅ‚owowzdÄ™ciem muszÄ… odwiedzić NapowietrzalniÄ™, gdzie przeroÅ›niÄ™ta gÅ‚owa zostaje przebita, a nastÄ™pnie napompowana do odpowiednich rozmiarów.//", [3] = "Napowietrzalnia musi mieć Lekarza do obsÅ‚ugi. Musi być także pod staÅ‚ym nadzorem Dozorcy. ", }, jelly_vat = { [1] = "Przychodnia GalaretowatoÅ›ci//", [2] = "Pacjenci dotkniÄ™ci przezabawnym choróbskiem Galaretowatość, muszÄ… dokiwać siÄ™ do Przychodni GalaretowatoÅ›ci, gdzie umieszcza siÄ™ ich w Galaretownicy. WÅ‚aÅ›nie w ten, nie do koÅ„ca jasny dla medycyny sposób, zostajÄ… wyleczeni.//", [3] = "Przychodnia GalaretowatoÅ›ci potrzebuje Lekarza. Jak również nadzoru Dozorcy. ", }, scanner = { [1] = "Skaner//", [2] = "Pacjenci sÄ… diagnozowani przy użyciu wymyÅ›lnego Skanera, po czym wracajÄ… do Gabinetu Lekarskiego w celu dalszego leczenia.//", [3] = "Skaner wymaga Lekarza. Musi być także konserwowany. ", }, blood_machine = { [1] = "Analizator Krwi//", [2] = "Analizator Krwi jest częściÄ… wyposażenia diagnozujÄ…cego, które sprawdza komórki krwi pacjenta i okreÅ›la ich stan.//", [3] = "Analizator Krwi wymaga Lekarza. Musi być także konserwowany. ", }, pharmacy = { [1] = "Apteka//", [2] = "Pacjenci, którzy zostali zdiagnozowani i mogÄ… być wyleczeni dziÄ™ki lekom, muszÄ… zgÅ‚osić siÄ™ po nie do Apteki. W miarÄ™ jak bÄ™dÄ… wymyÅ›lane nowe leki, ten gabinet stanie siÄ™ naprawdÄ™ oblegany. Prawdopodobnie bÄ™dziesz musiaÅ‚ wtedy zbudować drugÄ… AptekÄ™.//", [3] = "Do pracy w Aptece potrzebna jest PielÄ™gniarka. ", }, cardiogram = { [1] = "Kardiograf//", [2] = "Diagnozuje siÄ™ tutaj pacjentów zanim wrócÄ… do Gabinetu Lekarskiego i zostanÄ… wysÅ‚ani na leczenie.//", [3] = "Kardiograf wymaga Lekarza. Musi być także konserwowany. ", }, ward = { [1] = "OddziaÅ‚//", [2] = "Pacjenci przebywajÄ… tu na obserwacji podczas diagnozy. Poza tym kierowani sÄ… tu przed zabiegiem chirurgicznym.//", [3] = "OddziaÅ‚ potrzebuje PielÄ™gniarki. ", }, psych = { [1] = "Psychiatra//", [2] = "Pacjenci ze zdiagnozowanÄ… chorobÄ… psychicznÄ… muszÄ… odwiedzić Gabinet Psychiatryczny, aby otrzymać poradÄ™. Psychiatra diagnozuje pacjenta pod kÄ…tem dolegliwoÅ›ci i jeÅ›li majÄ… one podÅ‚oże psychiczne, leczy go z wykorzystaniem swej niezawodnej kozetki.//", [3] = "W Gabinecie Psychiatrycznym wymagany jest Lekarz ze specjalizacjÄ… Psychiatry. ", }, staff_room = { [1] = "Pokój Socjalny//", [2] = "Twój personel podczas pracy mÄ™czy siÄ™. W tym pokoju pracownicy mogÄ… siÄ™ odprężyć i zrelaksować. Gdy sÄ… zmÄ™czeni, pracujÄ… wolniej, domagajÄ… siÄ™ wiÄ™kszych podwyżek i popeÅ‚niajÄ… wiÄ™cej błędów. Budowa Pokoju Socjalnego z bogatym wyposażeniem jest bardzo opÅ‚acalna. Upewnij siÄ™, że znajdzie siÄ™ tam miejsce dla kilku osób jednoczeÅ›nie. ", }, operating_theatre = { [1] = "Sala Operacyjna//", [2] = "Ważne pomieszczenie, w którym leczy siÄ™ różnorodne schorzenia. Sala musi mieć sporÄ… powierzchniÄ™ oraz powinna zawierać odpowiednie wyposażenie. Jest to nieodzowna część twojego szpitala.//", [3] = "Sala operacyjna wymaga dwóch Lekarzy ze specjalizacjÄ… Chirurga. ", }, training = { [1] = "Sala Szkoleniowa//", [2] = "Twoi Asystenci oraz Doktorzy mogÄ… tutaj zdobywać dodatkowe specjalizacje. Konsultant ze specjalizacjÄ… Chirurga, Psychiatry lub Naukowca przekazuje swojÄ… wiedzÄ™ każdemu szkolonemu Lekarzowi. Lekarze, którzy posiadajÄ… już te specjalizacje, bÄ™dÄ… mogli je tutaj rozwijać.//", [3] = "Sala Szkoleniowa potrzebuje Konsultanta. ", }, dna_fixer = { [1] = "Przychodnia DNA//", [2] = "DNA pacjentów, którzy zostali porwani przez obcych, musi zostać wymienione w tym gabinecie. Re-GEN-erator to bardzo skomplikowane urzÄ…dzenie, dlatego wskazane jest mieć w pogotowiu gaÅ›nicÄ™, tak na wszelki wypadek.//", [3] = "Re-GEN-erator wymaga okresowego przeglÄ…du przez DozorcÄ™. Potrzebny jest także Lekarz ze specjalizacjÄ… Naukowca. ", }, research = { [1] = "DziaÅ‚ Badawczy//", [2] = "Tutaj wymyÅ›la siÄ™ lub ulepsza leki oraz sposoby leczenia. To bardzo ważna część szpitala, dziÄ™ki której liczba wyleczonych poszybuje w górÄ™.//", [3] = "W Dziale Badawczym musi pracować Lekarz ze specjalizacjÄ… Naukowca. ", }, hair_restoration = { [1] = "Gabinet Przeszczepu WÅ‚osów//", [2] = "Pacjenci cierpiÄ…cy na ekstremalne Åysienie sÄ… kierowani do tego gabinetu w celu przeszczepienia wÅ‚osów. Lekarz obsÅ‚uguje maszynÄ™, która szybko obsiewa Å‚ysÄ… gÅ‚owÄ™ pacjenta nowymi cebulkami.//", [3] = "W gabinecie Przeszczepu WÅ‚osów potrzebny jest Lekarz. Wymaga on także okresowej konserwacji. ", }, general_diag = { [1] = "Badania Podstawowe//", [2] = "Pacjenci wymagajÄ…cy dalszej diagnozy sÄ… wysyÅ‚ani tutaj. Jeżeli w Gabinecie Lekarskim nie wykryta zostanie przypadÅ‚ość pacjenta, zazwyczaj zostanie to dokonane w gabinecie BadaÅ„ Podstawowych. StÄ…d pacjenci zostajÄ… odesÅ‚ani do Gabinetu Lekarskiego w celu analizy wyników przeprowadzonych tu badaÅ„.//", [3] = "Do pracy w gabinecie BadaÅ„ Podstawowych wymagany jest Lekarz. ", }, electrolysis = { [1] = "Gabinet Elektrolizy//", [2] = "Pacjenci cierpiÄ…cy na WÅ‚ochaciznÄ™ sÄ… kierowani do tego gabinetu, gdzie specjalna maszyna zwana Elektrolizerem wyszarpuje wÅ‚osy i zalepia elektrycznie pory specjalnÄ… mieszaninÄ… podobnÄ… do tynku.//", [3] = "Gabinet Elektrolizy potrzebuje Lekarza. Musi być także doglÄ…dany przez DozorcÄ™. ", }, slack_tongue = { [1] = "Przychodnia Obrzynania//", [2] = "Pacjenci zdiagnozowani w Gabinecie Lekarskim z chorobÄ… ObwisÅ‚ego JÄ™zyka sÄ… kierowani do tego gabinetu. Przy pomocy nowoczesnej aparatury Lekarz wyciÄ…ga i obcina jÄ™zyk, przywracajÄ…c pacjenta do zdrowia.//", [3] = "Przychodnia Obrzynania potrzebuje Lekarza. Wymaga również czÄ™stej konserwacji. ", }, toilets = { [1] = "Toalety//", [2] = "Pacjenci, którzy poczujÄ… zew matki natury, bÄ™dÄ… musieli skorzystać z twoich komfortowych toalet. Jeżeli spodziewasz siÄ™ dużo goÅ›ci, możesz zbudować dodatkowe latryny i umywalki. Być może trzeba bÄ™dzie rozważyć budowÄ™ kolejnych toalet w innych częściach szpitala. ", }, no_room = { [1] = "", }, x_ray = { [1] = "Rentgen//", [2] = "Rentgen używa specjalnych promieni, aby zrobić zdjÄ™cie wnÄ™trza pacjenta. DziÄ™ki temu lekarz wie, co dzieje siÄ™ wewnÄ…trz chorego.//", [3] = "Rentgen wymaga Lekarza. Musi być także konserwowany. ", }, decontamination = { [1] = "Gabinet Odkażania//", [2] = "Pacjenci, którzy zostali narażeni na Napromieniowanie sÄ… natychmiast kierowani do Gabinetu Odkażania. Pomieszczenie to posiada prysznic, który oczyszcza ich ze strasznego napromieniowania i brudu.//", [3] = "Do obsÅ‚ugi Prysznica wymagany jest Lekarz. Musi być także nadzorowany przez DozorcÄ™. ", }, } errors = { unavailable_screen_size = "Rozmiar ekranu, który podaÅ‚eÅ›, nie jest obsÅ‚ugiwany w trybie peÅ‚noekranowym.", dialog_missing_graphics = "Niestety, demo nie zawiera tego dialogu.", maximum_screen_size = "ProszÄ™ wpisać rozmiar ekranu, maksimum 3000x2000.", load_prefix = "Błąd podczas Å‚adowania gry: ", no_games_to_contine = "Nie ma zapisanych gier.", save_prefix = "Błąd podczas zapisywania gry: ", map_file_missing = "Nie można znaleźć pliku z mapÄ… %s dla tego poziomu!", minimum_screen_size = "ProszÄ™ wpisać rozmiar ekranu, minimum 640x480.", } bank_manager = { current_loan = "Pożyczka", balance = "Bilans", interest_payment = "Odsetki", hospital_value = "Wartość Szpitala", interest_rate = "Poziom Odsetek", insurance_owed = "Ubezpieczalnie", statistics_page = { balance = "Bilans", details = "Szczegóły", date = "Data", current_balance = "Obecny Stan Konta", money_in = "Dochody", money_out = "Wydatki", }, inflation_rate = "Poziom Inflacji", } main_menu = { exit = "WyjÅ›cie", custom_level = "Gra niestandardowa", version = "Wersja: ", new_game = "Nowa gra", custom_campaign = "WÅ‚asna kampania", continue = "Powrót do gry", load_game = "Wczytaj grÄ™", options = "Ustawienia", savegame_version = "Wersja zapisu: ", map_edit = "Edytor map" } date_format = { daymonth = "%1% %2:months%", } menu_display = { mcga_lo_res = " NISKA ROZDZIELCZOŚĆ", shadows = " CIENIE ", high_res = " WYSOKA ROZDZIELCZOŚĆ", } original_credits = { [1] = " ", [2] = " ", [3] = " ", [4] = " ", [5] = " ", [6] = " ", [7] = " ", [8] = " ", [9] = " ", [10] = " ", [11] = " ", [12] = ":Zaprojektowane i stworzone przez", [13] = ":Bullfrog Productions", [14] = " ", [15] = ":ekipa Pluto Development ", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = " ", [29] = " ", [30] = " ", [31] = ":Programowanie", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = " ", [38] = " ", [39] = " ", [40] = ":Oprawa graficzna", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = " ", [47] = " ", [48] = " ", [49] = ":Dodatkowe programowanie", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = " ", [55] = " ", [56] = " ", [57] = ":Dodatkowa grafika", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = " ", [66] = " ", [67] = " ", [68] = ":Intro", [69] = ",", [70] = "Stuart Black", [71] = " ", [72] = " ", [73] = " ", [74] = ":Muzyka i efekty dźwiÄ™kowe", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = " ", [79] = " ", [80] = " ", [81] = ":Dodatkowa muzyka", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = " ", [86] = " ", [87] = " ", [88] = ":Lektor", [89] = ",", [90] = "Rebecca Green", [91] = " ", [92] = " ", [93] = " ", [94] = ":Projekty poziomów", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = " ", [101] = " ", [102] = " ", [103] = ":Skrypty", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = " ", [109] = " ", [110] = " ", [111] = ":R&D", [112] = " ", [113] = ":Silnik graficzny", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = " ", [118] = " ", [119] = " ", [120] = ":Wsparcie R&D", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = " ", [127] = " ", [128] = " ", [129] = ":Biblioteki i narzÄ™dzia", [130] = " ", [131] = "Biblioteki Dos i Win 95", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = " ", [137] = " ", [138] = " ", [139] = ":Biblioteki sieciowe", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = " ", [144] = " ", [145] = " ", [146] = ":Biblioteki dźwiÄ™ku", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = " ", [151] = " ", [152] = " ", [153] = ":Instalator", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = " ", [159] = " ", [160] = " ", [161] = ":Wsparcie duchowe", [162] = ",", [163] = "Peter Molyneux", [164] = " ", [165] = " ", [166] = " ", [167] = ":Menadżer testowania", [168] = ",", [169] = "Andy Robson", [170] = " ", [171] = " ", [172] = " ", [173] = ":Główni testerzy", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = " ", [178] = " ", [179] = " ", [180] = ":Testerzy", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = " ", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = " ", [203] = "oraz pozostali testerzy", [204] = " ", [205] = " ", [206] = " ", [207] = ":Wsparcie techniczne", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = " ", [213] = " ", [214] = " ", [215] = ":Marketing", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = " ", [220] = " ", [221] = " ", [222] = ":Z podziÄ™kowaniami dla:", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = " ", [229] = " ", [230] = " ", [231] = ":PR", [232] = ",", [233] = "Cathy Campos", [234] = " ", [235] = " ", [236] = " ", [237] = ":Dokumentacja", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = " ", [244] = " ", [245] = " ", [246] = ":Dokumentacja i projekt pudeÅ‚ka", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = " ", [251] = " ", [252] = " ", [253] = ":Menadżer lokalizacji", [254] = ",", [255] = "Carol Aggett", [256] = " ", [257] = " ", [258] = " ", [259] = ":Lokalizacja", [260] = ",", [261] = "Sandra Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = " ", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = " ", [268] = "C.T.O. S.p.A. Zola Predosa (BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = " ", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Martínez", [276] = " ", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = " ", [281] = " ", [282] = " ", [283] = ":Realizacja", [284] = ",", [285] = "Rachel Holman", [286] = " ", [287] = " ", [288] = " ", [289] = ":Producent", [290] = ",", [291] = "Mark Webley", [292] = " ", [293] = " ", [294] = " ", [295] = ":Współproducent", [296] = ",", [297] = "Andy Nuttall", [298] = " ", [299] = " ", [300] = " ", [301] = ":Wdrożenie", [302] = ",", [303] = "Steve Fitton", [304] = " ", [305] = " ", [306] = " ", [307] = ":Administracja firmy", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":ZarzÄ…d spółki", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":Zespół Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":Specjalne podziÄ™kowania dla", [332] = ",", [333] = "Pracowników szpitala Frimley Park", [334] = " ", [335] = ":a zwÅ‚aszcza dla", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = " ", [340] = " ", [341] = " ", [342] = ":Do spolszczenia szpitalnych perypetii przyczynili siÄ™", [343] = "bemberg, jako anestezjolog - tÅ‚umaczenie, korekta, testy", [344] = "Butcher, jako ordynator - pomysÅ‚odawca, tÅ‚umaczenie, korekta, czcionka, testy", [345] = "Johnny, jako pielÄ™gniarz - korekta", [346] = "Machiner, jako lekarz pierwszego kontaktu - tÅ‚umaczenie, korekta", [347] = "mziab, jako chirurg - tÅ‚umaczenie, czcionka, korekta,", [348] = "narzÄ™dzia i przygotowanie skryptu do oprogramowania CAT", [349] = "spec0071, jako pielÄ™gniarz - korekta, testy", [350] = "twig, jako konsultant - sprawy techniczne", [351] = " ", [352] = ":Miej gÅ‚owÄ™ na karku", [353] = " ", [354] = " ", [355] = " ", [356] = " ", [357] = " ", [358] = " ", [359] = " ", [360] = " ", [361] = ".", } pay_rise = { definite_quit = "Cokolwiek zrobisz, nic mnie tu już nie zatrzyma. Mam dość tego miejsca.", regular = { [1] = "Jestem wykoÅ„czony. Jeżeli nie chcesz, bym rzuciÅ‚ tÄ™ zakichanÄ… robotÄ™, pozwól mi odpocząć oraz daj podwyżkÄ™ o %d.", [2] = "Jestem bardzo zmÄ™czony. Żądam odpoczynku i podwyżki o %d, z pensjÄ… %d. No dalej, tyranie!", [3] = "Daj spokój. HarujÄ™ tu jak pies. Daj mi premiÄ™ %d, to zostanÄ™ w twoim szpitalu.", [4] = "Jestem bardzo niezadowolony. Żądam podwyżki o %d, dajÄ…cej mi pensjÄ™ %d, inaczej spadam stÄ…d.", [5] = "Rodzice mówili mi, że w medycynie można sporo zarobić. Albo wiÄ™c dasz mi podwyżkÄ™ o %d, albo zostanÄ™ producentem gier.", [6] = "Mam dosyć. Daj mi przyzwoitÄ… pensjÄ™. Podwyżka o %d powinna wystarczyć.", }, poached = "%s zaproponowali mi %d. JeÅ›li nie zapÅ‚acisz mi tyle samo, odchodzÄ™.", } menu_debug = { lua_console = " (F12) KONSOLA LUA ", porter_pagers = " PORTER PAGERS ", object_cells = " OBJECT CELLS ", display_pager = " DISPLAY PAGER ", disable_salary_raise = " DISABLE SALARY RAISE ", make_debug_fax = " MAKE DEBUG FAX ", display_big_cells = " DISPLAY BIG CELLS ", make_debug_patient = " MAKE DEBUG PATIENT ", mapwho_checking = " MAPWHO CHECKING ", sprite_viewer = " SPRITE VIEWER ", keep_clear_cells = " KEEP CLEAR CELLS ", dump_strings = " DUMP STRINGS ", machine_pagers = " MACHINE PAGERS ", remove_walls = " USUŃ ÅšCIANY ", enter_nav_debug = " ENTER NAV DEBUG ", lose_game_anim = { [1] = " LOSE GAME 1 ANIM ", [2] = " LOSE GAME 2 ANIM ", [3] = " LOSE GAME 3 ANIM ", [4] = " LOSE GAME 4 ANIM ", [5] = " LOSE GAME 5 ANIM ", [6] = " LOSE GAME 6 ANIM ", [7] = " LOSE GAME 7 ANIM ", }, map_overlay = " MAP OVERLAY ", calls_dispatcher = " CALLS DISPATCHER ", show_nav_cells = " SHOW NAV CELLS ", win_game_anim = " WIN GAME ANIM ", display_room_status = " DISPLAY ROOM STATUS ", cheats = " (F11) CHEATS ", remove_objects = " USUŃ OBIEKTY ", nav_bits = " NAV BITS ", win_level_anim = " WIN LEVEL ANIM ", dump_gamelog = " (CTRL+D) DUMP GAME LOG ", limit_camera = " LIMIT CAMERA ", pixbuf_cells = " PIXBUF CELLS ", transparent_walls = " (X) TRANSPARENT WALLS ", show_help_hotspot = " SHOW HELP HOTSPOTS ", jump_to_level = " JUMP TO LEVEL ", entry_cells = " ENTRY CELLS ", plant_pagers = " PLANT PAGERS ", } progress_report = { free_build = "WOLNA BUDOWA", too_hot = "Zrób coÅ› z centralnym ogrzewaniem. Jest za gorÄ…co. ", percentage_pop = "% populacji", win_criteria = "KRYTERIA ZWYCIĘSTWA", very_unhappy = "Twoi ludzie sÄ… bardzo niezadowoleni. ", quite_unhappy = "Twoi ludzie sÄ… niezadowoleni. ", header = "Informacje o postÄ™pie", too_cold = "Jest zdecydowanie za zimno. Dokup kaloryfery. ", more_drinks_machines = "Kup wiÄ™cej Automatów do napoi. ", } menu_options = { game_speed = " SZYBKOŚĆ GRY ", music_vol = " GÅOÅšNOŚĆ MUZYKI ", sound_vol = " GÅOÅšNOŚĆ DŹWIĘKU ", adviser_disabled = " (SHIFT+A) DORADCA ", warmth_colors = " CIEPÅOŚĆ BARW ", wage_increase = " ŻĄDANIA PODWYÅ»KI", twentyfour_hour_clock = " ZEGAR 24 GODZINNY ", edge_scrolling = " PRZEWIJANIE PRZY KRAWĘDZIACH ", announcements = " (ALT+A) POWIADOMIENIA ", lock_windows = " ZABLOKUJ OKNA ", settings = " USTAWIENIA ", sound = " (ALT+S) DŹWIĘK ", announcements_vol = " GÅOÅšNOŚĆ POWIADOMIEŃ ", music = " (ALT+M) MUZYKA ", autosave = " AUTOZAPIS ", jukebox = " SZAFA GRAJÄ„CA ", } menu_options_wage_increase = { grant = " PRZYZNAWAJ ", deny = " ODMAWIAJ ", } menu_options_warmth_colors = { choice_1 = " CZERWONY ", choice_2 = " NIEBIESKI ZIELONY CZERWONY ", choice_3 = " ŻÓÅTY POMARAŃCZOWY CZERWONY ", } menu_options_game_speed = { pause = " (P) PAUZA ", slowest = " (1) NAJWOLNIEJ ", slower = " (2) WOLNO ", normal = " (3) NORMALNIE ", max_speed = " (4) NAJSZYBCIEJ ", and_then_some_more = " (5) I JESZCZE TROCHĘ ", } rooms_short = { ultrascan = "Ultraskaner", research_room = "DziaÅ‚ Badawczy", fracture_clinic = "Gab. Ortopedyczny", gps_office = "Gabinet Lekarski", destroyed = "Zniszczone", staffroom = "Pokój Socjalny", jelly_vat = "Galaretownica", scanner = "Skaner", decontamination = "Gabinet Odkażania", pharmacy = "Apteka", cardiogram = "Kardiograf", reception = "Recepcja", training_room = "Sala Szkoleniowa", corridor_objects = "Obiekty Korytarza", operating_theatre = "Sala Operacyjna", dna_fixer = "Re-GEN-erator", ward = "OddziaÅ‚", psychiatric = "Psychiatra", hair_restoration = "Przeszczep WÅ‚osów", general_diag = "Podst. Badania", inflation = "Napowietrzalnia", tongue_clinic = "Przych. Obrzynania", toilets = "Toalety", electrolysis = "Gabinet Elektrolizy", x_ray = "Rentgen", blood_machine = "Analizator Krwi", } level_names = { [1] = "BIAÅOBYL", [2] = "ÅšPIOCHY DUÅ»E", [3] = "ÅšWIÄ„DEK ZDRÓJ", [4] = "ZASTRZYKI GÓRNE", [5] = "PROSTACZKOWO", [6] = "ROPIEŃ DOLNY", [7] = "ZIELONA GULA", [8] = "ZAKICHANE", [9] = "SZARYSTOK", [10] = "JAJECZNICA MAÅA", [11] = "Å»ABOBRZEGI", [12] = "CHORUŃ", [13] = "MIÅOGRÓD", [14] = "WYCISK MAÅY", [15] = "ZIELSKO-BIAÅA", } insurance_companies = { [1] = "ÅabÄ…dek Ltd.", [2] = "Cebula z Norfolk ", [3] = "LodoÅ‚amacz S.A.", [4] = "Potężny Å»ołądź Ltd.", [5] = "PÄ™cherz Walenia", [6] = "Poczciwy Józef S.A.", [7] = "Holding Pulchnego", [8] = "Leon Katz Corp.", [9] = "Buch i Faja S.A.", [10] = "FikuÅ›ne Westalki", [11] = "Ubezp. Syndykatowe", out_of_business = "ZAKOŃCZYÅ DZIAÅALNOŚĆ", } lua_console = { execute_code = "Start", close = "Zamknij", } staff_descriptions = { good = { [1] = "Bardzo szybki i pilny pracownik. ", [2] = "Bardzo sumienny pracownik. PrzykÅ‚ada siÄ™. ", [3] = "Ma szerokÄ… skalÄ™ umiejÄ™tnoÅ›ci. ", [4] = "Bardzo przyjazny i lubiÄ…cy Å›miech pracownik. ", [5] = "Super wytrzymaÅ‚y pracownik. CiÄ…gle brnie naprzód. ", [6] = "Nadzwyczaj uprzejmy i miÅ‚y pracownik. ", [7] = "Niewiarygodnie utalentowany pracownik. ", [8] = "Zawsze dba o to, co robi. ", [9] = "Perfekcjonista, który siÄ™ nie poddaje. ", [10] = "Pomaga ludziom z uÅ›miechem na ustach. ", [11] = "CzarujÄ…cy, miÅ‚y i pomocny pracownik. ", [12] = "Generalnie dobrze zmotywowany i oddany pracownik. ", [13] = "Przyjacielski i bardzo wydajny pracownik. ", [14] = "Lojalny i przyjazny pracownik. ", [15] = "Pracownik staranny i niezawodny w nagÅ‚ych wypadkach. ", }, misc = { [1] = "Gra w golfa. ", [2] = "Nurkuje. ", [3] = "Rzeźbi w lodzie. ", [4] = "Pija wino. ", [5] = "Jeździ wyÅ›cigówkami. ", [6] = "Skacze na bungie. ", [7] = "Kolekcjonuje pokale. ", [8] = "Lubi skoki ze sceny. ", [9] = "Lubi surfing. ", [10] = "Poszerza rzeki. ", [11] = "Destyluje bimber. ", [12] = "ZÅ‚ota rÄ…czka. ", [13] = "Lubi francuskie kino. ", [14] = "CzÄ™sto gra w Theme Park. ", [15] = "Jeździ TIRem. ", [16] = "Åšciga siÄ™ na motorach. ", [17] = "Gra na skrzypcach i wiolonczeli. ", [18] = "Wysadza pociÄ…gi. ", [19] = "Uwielbia psy. ", [20] = "SÅ‚ucha radia. ", [21] = "Bierze czÄ™ste kÄ…piele. ", [22] = "Plecie kosze z wikliny. ", [23] = "Przerabia warzywa na mydelniczki. ", [24] = "Pracuje w policji na pół etatu. ", [25] = "ByÅ‚a hostessa w TV. ", [26] = "Kolekcjonuje szrapnele. ", [27] = "Przestawia meble. ", [28] = "SÅ‚ucha muzyki rave i trip-hopu. ", [29] = "RozwÅ›ciecza insekty dezodorantami. ", [30] = "Przeszkadza satyrykom w wystÄ™pach. ", [31] = "WÄ™szy w urzÄ™dach. ", [32] = "Skryty ogrodnik. ", [33] = "Przemyca trefne zegarki. ", [34] = "Åšpiewa w zespole rockowym. ", [35] = "Uwielbia telewizjÄ™ Å›niadaniowÄ…. ", [36] = "Åaskocze pstrÄ…gi. ", [37] = "Drażni turystów w muzeach. ", }, bad = { [1] = "Powolny i kapryÅ›ny pracownik. ", [2] = "Leniwy i sÅ‚abo zmotywowany pracownik. ", [3] = "Niekompetentny i nieudolny pracownik. ", [4] = "Niegrzeczny i zgryźliwy pracownik. Czepia siÄ™ ludzi. ", [5] = "Ma straszliwÄ… wytrzymaÅ‚ość - i zÅ‚e nastawienie. ", [6] = "GÅ‚uchy jak pieÅ„ pracownik. TrochÄ™ cuchnie kapustÄ…. ", [7] = "W pracy do niczego. Jest jak kula u nogi. ", [8] = "LekkomyÅ›lny i roztargniony pracownik. ", [9] = "Zestresowany pracownik, popeÅ‚nia błędy. ", [10] = "Pracownik zgorzkniaÅ‚y i obrażony - pÅ‚onÄ…cy z nienawiÅ›ci. ", [11] = "Flejtuch powodujÄ…cy wypadki. ", [12] = "Nie dba o pracÄ™. W sumie nie dba o nic. ", [13] = "BezmyÅ›lny ryzykant, któremu wszystko zwisa. ", [14] = "Szczwany, przebiegÅ‚y wywrotowiec. ", [15] = "Arogancki i próżny pracownik. ", }, } room_classes = { diagnosis = "Diagnozy", clinics = "Przychodnie", facilities = "Udogodnienia", treatment = "Leczenie", } install = { exit = "WyjÅ›cie", th_directory = "CorsixTH potrzebuje plików z originalnej gry Theme Hospital (lub dema), do poprawnego dziaÅ‚ania. ProszÄ™ użyć poniższego pola, w celu zlokalizowania zainstalowanej gry Theme Hospital.", title = "--------------------------------- Ustawienia CorsixTH ---------------------------------", } place_objects_window = { pick_up_object = "Kliknij na obiekt, aby go podnieść lub wybierz innÄ… opcjÄ™", place_objects_in_corridor = "Rozmieść obiekty na korytarzu", place_windows = "Jeżeli chcesz, wstaw okna i kliknij zatwierdź", confirm_or_buy_objects = "Możesz zatwierdzić pokój lub dokupić nowe przedmioty", drag_blueprint = "RozciÄ…gnij niebieskie pole do odpowiedniego rozmiaru", place_door = "Wstaw drzwi", place_objects = "Rozmieść i poprzesuwaj wszystkie obiekty, nastÄ™pnie zatwierdź", } newspaper = { [1] = { [1] = "ORTOPEDA WILKOÅAKIEM!", [2] = "INTERNISTA UDAJE BOGA!", [3] = "SZOK FRANKENSTEINA", [4] = "CO KRYÅA MASKA CHIRURGA?", [5] = "RYZYKOWNE BADANIA ZATRZYMANE ", }, [2] = { [1] = "ULULANY KONOWAÅ", [2] = "CHIRURG PÅUCZE NERKI", [3] = "KONSULTANT NA GAZIE", [4] = "BEÅT NA ZNIECZULENIE", [5] = "ON ZA KITEL NIE WYLEWA", [6] = "ORDYNATORYJNY DENATURAT", }, [3] = { [1] = "CHCIWY CHIRURG", [2] = "LEKARZ Z RĘKÄ„ W BASENIE", [3] = "ZEJÅšCIE DOKTORA", [4] = "NIENASYCONY CHIRURG", }, [4] = { [1] = "NIEULECZALNY PRZEKRĘT", [2] = "WRZÓD PRZESTĘPCZY", [3] = "OPERACJA PRZESZCZEPU PIENIĘDZY", [4] = "ZATOR FINANSOWY", }, [5] = { [1] = "ZDROWOTNE ÅUPIENIE GROBÓW", [2] = "LEKARZ HIENÄ„ CMENTARNÄ„", [3] = "PO JEGO TRUPIE", [4] = "DZIEŃ ROZRACHUNKU DOKTORA ÅšMIERCI", [5] = "ÅšMIERTELNA NIEDBAÅOŚĆ", [6] = "CMENTARNE WYKOPKI", }, [6] = { [1] = "DOKTOR ZASZYTY!", [2] = "NIEUWAÅ»NY ZNACHOR", [3] = "PONURA DIAGNOZA", [4] = "NIESPECJALNY SPECJALISTA", }, [7] = { [1] = "DOKTOROWI POSYPAÅY SIĘ KULKI", [2] = "CHIRURG SAM SIĘ ZOPEROWAÅ", [3] = "ROBÓTKI RĘCZNE W LATRYNIE", [4] = "DOKTOR GWIAZDÄ„ SKANDALU", [5] = "LEKARZ ZDROWO NAMIESZAÅ", }, } load_game_window = { caption = "Wczytaj GrÄ™ (%1%)", } staff_title = { junior = "Asystent", psychiatrist = "Psychiatra", consultant = "Konsultant", surgeon = "Chirurg", doctor = "Lekarz", researcher = "Naukowiec", nurse = "PielÄ™gniarka", receptionist = "Recepcjonistka", general = "Ogólne", } graphs = { deaths = "Zgony", money_in = "Dochody", money_out = "Wydatki", visitors = "Pacjenci", wages = "WypÅ‚aty", balance = "Bilans", time_spans = { [1] = "1 Rok", [2] = "12 Lat", [3] = "48 Lat", }, cures = "Wyleczeni", reputation = "Reputacja", } adviser = { tutorial = { hire_receptionist = "BÄ™dzie ci także potrzebna Recepcjonistka do rejestrowania pacjentów.", build_pharmacy = "Gratulacje! Teraz zbuduj AptekÄ™ i zatrudnij w niej PielÄ™gniarkÄ™, aby szpital wreszcie mógÅ‚ zacząć pracÄ™.", hire_doctor = "Potrzebujesz Lekarza do diagnozowania i leczenia chorych.", place_receptionist = "Umieść RecepcjonistkÄ™ w którymkolwiek miejscu szpitala. Jest ona na tyle sprytna, że sama znajdzie drogÄ™ do biurka.", place_windows = "Umieść okna w ten sam sposób co drzwi. Okna nie sÄ… wymagane, jednak twój personel bÄ™dzie szczęśliwszy, gdy wyjrzy sobie na zewnÄ…trz.", confirm_room = "Kliknij na migajÄ…cÄ… ikonÄ™, aby otworzyć gabinet lub kliknij X, aby anulować.", rotate_and_place_reception = "Kliknij prawym przyciskiem myszy, aby obrócić Biurko, a lewym, aby umieÅ›cić je w wybranym miejscu.", build_reception = "Witaj. Na poczÄ…tku twój szpital potrzebuje Biurko Recepcji. Wybierz je z menu Wyposażenie Korytarza.", doctor_in_invalid_position = "Hej! Nie możesz tutaj umieÅ›cić Lekarza.", start_tutorial = "Przeczytaj Zadania Misji, a nastÄ™pnie kliknij, aby rozpocząć szkolenie.", receptionist_invalid_position = "Nie możesz tutaj umieÅ›cić Recepcjonistki.", room_too_small_and_invalid = "Pomieszczenie jest za maÅ‚e i stoi w niewÅ‚aÅ›ciwym miejscu. Bez żartów.", window_in_invalid_position = "To okno jest w niewÅ‚aÅ›ciwym miejscu. ByÅ‚oby miÅ‚o, gdybyÅ› wstawiÅ‚ je gdzie indziej.", choose_doctor = "Sprawdź dokÅ‚adnie kwalifikacje każdego Lekarza, zanim któregoÅ› wybierzesz.", information_window = "Okno pomocy powie ci wszystko na temat tego piÄ™knego Gabinetu Lekarskiego, który wÅ‚aÅ›nie zbudowaÅ‚eÅ›.", build_gps_office = "Aby rozpocząć diagnozowanie chorych, musisz wybudować Gabinet Lekarski.", select_doctors = "Kliknij lewym przyciskiem myszy na migajÄ…cej ikonie, aby zobaczyć dostÄ™pnych Lekarzy.", select_diagnosis_rooms = "Kliknij w migajÄ…cÄ… ikonÄ™, aby wyÅ›wietlić listÄ™ gabinetów diagnostycznych.", select_receptionists = "Kliknij na migajÄ…cej ikonie, aby wyÅ›wietlić dostÄ™pne Recepcjonistki. Numer na ikonie informuje, ile jest chÄ™tnych do pracy.", order_one_reception = "Kliknij lewym przyciskiem myszy w migajÄ…cÄ… liniÄ™, aby zamówić jedno Biurko Recepcyjne.", choose_receptionist = "Wybierz RecepcjonistkÄ™, która ma dobre kwalifikacje oraz jest niedroga, a nastÄ™pnie kliknij na migajÄ…cej ikonie, aby jÄ… zatrudnić.", prev_receptionist = "Kliknij w migajÄ…cÄ… ikonÄ™, aby zobaczyć poprzedniÄ… RecepcjonistkÄ™.", accept_purchase = "Kliknij w migajÄ…cÄ… ikonÄ™, aby je zakupić.", place_door = "PrzesuÅ„ kursor po niebieskiej linii, aby umieÅ›cić drzwi w wybranym miejscu.", click_and_drag_to_build = "Zanim zbudujesz Gabinet Lekarski, musisz zdecydować o jego rozmiarach. Przytrzymaj lewy przycisk myszy i rozciÄ…gnij gabinet do odpowiedniej wielkoÅ›ci.", room_in_invalid_position = "Ojej! Rozmiar pomieszczenia jest niewÅ‚aÅ›ciwy - czerwona strefa pokazuje miejsce, gdzie nachodzi on na inne pomieszczenia lub na Å›ciany szpitala.", place_objects = "Prawy przycisk myszy obraca przedmioty, lewy ustawia je w danym miejscu.", room_too_small = "Kolor czerwony oznacza, że pokój jest za maÅ‚y. RozciÄ…gnij go trochÄ™, aby go powiÄ™kszyć.", click_gps_office = "Kliknij w migajÄ…cÄ… liniÄ™, aby wybrać Gabinet Lekarski.", reception_invalid_position = "Biurko Recepcji jest szare, gdyż znajduje siÄ™ w niewÅ‚aÅ›ciwym miejscu. Spróbuj je przesunąć lub obrócić.", next_receptionist = "To pierwsza Recepcjonistka na liÅ›cie. Kliknij w migajÄ…cÄ… ikonÄ™, aby zobaczyć nastÄ™pnÄ… RecepcjonistkÄ™.", room_big_enough = "Rozmiar gabinetu jest teraz odpowiedni. Kiedy puÅ›cisz przycisk, gabinet zostanie zbudowany. PamiÄ™taj, że zawsze możesz go przesunąć lub zmienić jego rozmiary.", object_in_invalid_position = "Ten przedmiot jest w niewÅ‚aÅ›ciwym miejscu. Obróć go lub umieść gdzie indziej.", door_in_invalid_position = "Ech! Próbujesz umieÅ›cić drzwi w niewÅ‚aÅ›ciwym miejscu. Spróbuj wstawić je gdzie indziej.", place_doctor = "Umieść doktora w którymkolwiek miejscu szpitala. Samodzielnie uda siÄ™ do Gabinetu Lekarskiego i rozpocznie pracÄ™.", }, epidemic = { hurry_up = "Jeżeli natychmiast nie zaradzisz tej epidemii, znajdziesz siÄ™ w niezÅ‚ych tarapatach. Rusz siÄ™!", serious_warning = "Ta Zaraźliwa Choroba zaczyna być poważna. Musisz szybko coÅ› zrobić!", multiple_epidemies = "WyglÄ…da na to, że w szpitalu szaleje wiÄ™cej niż jedna epidemia. To może skoÅ„czyć siÄ™ kolosalna katastrofÄ…, wiÄ™c lepiej zacznij dziaÅ‚ać.", }, staff_advice = { need_handyman_machines = "JeÅ›li chcesz zachować przyrzÄ…dy szpitalne w dobrym stanie, musisz zatrudnić DozorcÄ™.", need_doctors = "Potrzebujesz wiÄ™cej Lekarzy. Umieść najlepszych Lekarzy w gabinetach z najdÅ‚uższÄ… kolejkÄ….", need_handyman_plants = "Musisz zatrudnić DozorcÄ™, aby podlewaÅ‚ roÅ›liny.", need_handyman_litter = "Ludzie zaczÄ™li zaÅ›miecać twój szpital. Zatrudnij DozorcÄ™, aby po nich sprzÄ…taÅ‚.", need_nurses = "Musisz zatrudnić wiÄ™cej PielÄ™gniarek. OddziaÅ‚ oraz Apteka potrzebujÄ… PielÄ™gniarki.", too_many_doctors = "Masz za dużo Lekarzy. Niektórzy z nich nie majÄ… w tej chwili co robić.", too_many_nurses = "MyÅ›lÄ™, że obecnie zatrudniasz zbyt wiele PielÄ™gniarek.", }, earthquake = { damage = "W wyniku trzÄ™sienia ziemi %d urzÄ…dzeÅ„ zostaÅ‚o uszkodzonych i %d ludzi rannych.", alert = "Zbliża siÄ™ trzÄ™sienie ziemi, podczas którego przyrzÄ…dy szpitalne ulegnÄ… uszkodzeniu. MogÄ… też zostać zniszczone, jeÅ›li sÄ… w kiepskim stanie.", ended = "Uff... A już myÅ›laÅ‚em, że to Gruba Berta - %d w skali Richtera.", }, multiplayer = { objective_completed = "PoradziÅ‚eÅ› sobie z ostatnim zadaniem. Gratulacje!", everyone_failed = "Nikt nie poradziÅ‚ sobie z ostatnim zadaniem. W zwiÄ…zku z tym wszyscy pozostajÄ… w grze!", players_failed = "NastÄ™pujÄ…cy gracz(e) nie wykonali ostatniego zadania: ", poaching = { in_progress = "Dam ci znać, czy ta osoba chce pracować dla ciebie.", not_interested = "Ha! Nie majÄ… ochoty pracować dla ciebie - dobrze im tam, gdzie teraz sÄ….", already_poached_by_someone = "Niemożliwe! KtoÅ› próbuje podkupić tÄ™ osobÄ™.", }, objective_failed = "Nie poradziÅ‚eÅ› sobie z ostatnim zadaniem.", }, surgery_requirements = { need_surgeons_ward_op = "Musisz zatrudnić dwóch Chirurgów oraz zbudować OddziaÅ‚ i SalÄ™ OperacyjnÄ…, aby rozpocząć przeprowadzanie operacji.", need_surgeon_ward = "Musisz zatrudnić jeszcze jednego Chirurga i wybudować OddziaÅ‚, aby rozpocząć prowadzenie Operacji.", }, vomit_wave = { started = "WyglÄ…da na to, że w twoim szpitalu zalÄ…gÅ‚ siÄ™ wirus wymiocin. GdybyÅ› bardziej dbaÅ‚ o czystość, ta sytuacja nie miaÅ‚aby miejsca. Może powinieneÅ› zatrudnić wiÄ™cej Dozorców?", ended = "Uff! Zdaje siÄ™, że wirus, który wywoÅ‚aÅ‚ tÄ™ falÄ™ wymiotów prawie caÅ‚kiem zginÄ…Å‚. Od tej chwili staraj siÄ™ utrzymywać szpital w czystoÅ›ci.", }, cheats = { th_cheat = "Gratulacje, odblokowaÅ‚eÅ› oszustwa!", hairyitis_cheat = "Oszustwo WÅ‚ochacizna aktywowane!", roujin_on_cheat = "Wyzwanie Roujinowa aktywowane! Powodzenia...", crazy_on_cheat = "O nie! Wszyscy lekarze oszaleli!", bloaty_off_cheat = "Oszustwo GÅ‚owowzdÄ™cie deaktywowane.", bloaty_cheat = "Oszustwo GÅ‚owowzdÄ™cie aktywowane!", crazy_off_cheat = "Uff... lekarze wrócili do zdrowych zmysłów.", roujin_off_cheat = "Wyzwanie Roujinowa deaktywowane.", hairyitis_off_cheat = "Oszustwo WÅ‚ochacizna deaktywowane.", }, level_progress = { halfway_lost = "JesteÅ› w poÅ‚owie drogi do przegrania tego poziomu.", dont_kill_more_patients = "Nie możesz sobie pozwolić na Å›mierć kolejnych pacjentów!", another_patient_killed = "O nie! ZabiÅ‚eÅ› kolejnego pacjenta. Masz już na koncie %d zgonów.", halfway_won = "JesteÅ› w poÅ‚owie drogi do ukoÅ„czenia tego poziomu.", close_to_win_increase_value = "Zbliżasz siÄ™ do zwyciÄ™stwa. ZwiÄ™ksz wartość swojego szpitala o %d.", financial_criteria_met = "OsiÄ…gnÄ…Å‚eÅ› kryteria finansowe tego poziomu. Teraz utrzymaj stan konta powyżej %d i upewnij siÄ™, że szpital jest sprawnie prowadzony.", nearly_won = "JesteÅ› już bardzo blisko wygrania poziomu.", hospital_value_enough = "Utrzymaj wartość szpitala powyżej %d i zajmij siÄ™ innymi problemami, aby wygrać ten poziom.", another_patient_cured = "Dobra robota - kolejny pacjent wyleczony. To juz %d.", three_quarters_lost = "Jeżeli nic nie zmienisz przegrasz ten poziom.", reputation_good_enough = "Twoja reputacja jest wystarczajÄ…ca, aby wygrać ten poziom. Utrzymaj jÄ… powyżej %d i rozwiąż pozostaÅ‚e problemy, aby go ukoÅ„czyć.", cured_enough_patients = "WyleczyÅ‚eÅ› wystarczajÄ…co pacjentów, ale musisz zaprowadzić w szpitalu wiÄ™kszy porzÄ…dek, aby wygrać ten poziom.", nearly_lost = "JesteÅ› bardzo bliski przegrania tego poziomu.", improve_reputation = "Musisz zwiÄ™kszyć swojÄ… reputacjÄ™ o %d, aby mieć szansÄ™ na zwyciÄ™stwo.", three_quarters_won = "Jeszcze trochÄ™ zostaÅ‚o ci do wygranej na tym poziomie.", }, staff_place_advice = { receptionists_only_at_desk = "Recepcjonistka może pracować tylko w Recepcji.", only_psychiatrists = "Tylko Lekarz, który posiada specjalizacjÄ™ Psychiatry, może pracować w Gabinecie Psychiatrycznym.", only_surgeons = "Tylko Lekarz, który posiada specjalizacjÄ™ Chirurga, może pracować na Sali Operacyjnej.", only_nurses_in_room = "Jedynie PielÄ™gniarka może pracować w %s", only_doctors_in_room = "Jedynie Lekarz może pracować w %s", only_researchers = "Tylko Lekarz, który posiada specjalizacjÄ™ Naukowca, może pracować w Dziale Badawczym.", nurses_cannot_work_in_room = "PielÄ™gniarka nie może pracować w %s", doctors_cannot_work_in_room = "Lekarz nie może pracować w %s", }, room_forbidden_non_reachable_parts = "BudujÄ…c tutaj to pomieszczenie, zablokujesz dostÄ™p do pozostaÅ‚ych części szpitala.", research = { machine_improved = "UrzÄ…dzenie %s zostaÅ‚o ulepszone przez DziaÅ‚ Badawczy.", autopsy_discovered_rep_loss = "WyciekÅ‚y informacje o używaniu maszyny do Auto-Autopsji. Spodziewaj siÄ™ negatywnych reakcji opinii publicznej.", drug_fully_researched = "DoprowadziÅ‚eÅ› badanie %s do 100%.", new_machine_researched = "Nowy %s wÅ‚aÅ›nie zostaÅ‚ odkryty.", drug_improved = "Lek %s wÅ‚aÅ›nie zostaÅ‚ udoskonalony przez twój DziaÅ‚ Badawczy.", new_available = "Nowy %s zostaÅ‚ udostÄ™pniony.", new_drug_researched = "Nowy specyfik leczÄ…cy %s wÅ‚aÅ›nie zostaÅ‚ odkryty.", }, boiler_issue = { minimum_heat = "Ach, tutaj jesteÅ›. Bojler w piwnicy siÄ™ zepsuÅ‚. WyglÄ…da na to, że ludzie w twoim szpitalu zacznÄ… nieco marznąć.", maximum_heat = "Bojler w piwnicy dostaÅ‚ bzika i kaloryfery strasznie siÄ™ rozgrzaÅ‚y. Ludzie zaraz zacznÄ… siÄ™ roztapiać! Postaw wiÄ™cej Automatów do napoi.", resolved = "Dobra wiadomość. Bojler i kaloryfery znowu dziaÅ‚ajÄ… poprawnie. Temperatura powinna być już odpowiednia dla pacjentów i personelu.", }, competitors = { staff_poached = "Jeden z twoich pracowników zostaÅ‚ podkupiony przez inny Szpital.", hospital_opened = "%s otworzyÅ‚ w okolicy konkurencyjny szpital. ", land_purchased = "%s wÅ‚aÅ›nie kupiÅ‚ nowe tereny.", }, room_requirements = { research_room_need_researcher = "W Gabinecie Badawczym musisz zatrudnić Lekarza że specjalizacjÄ… Naukowca.", op_need_another_surgeon = "Musisz zatrudnić jeszcze jednego Chirurga, aby możliwe byÅ‚o prowadzenie operacji.", op_need_ward = "Zanim poddasz pacjentów operacji, musisz zbudować OddziaÅ‚ Przedzabiegowy.", reception_need_receptionist = "Musisz zatrudnić RecepcjonistkÄ™, aby rejestrować pacjentów.", psychiatry_need_psychiatrist = "ZbudowaÅ‚eÅ› Gabinet Psychiatryczny, musisz jeszcze zatrudnić PsychiatrÄ™.", pharmacy_need_nurse = "Musisz zatrudnić PielÄ™gniarkÄ™ w tej Aptece.", ward_need_nurse = "Musisz zatrudnić PielÄ™gniarkÄ™ do pracy na tym Oddziale.", op_need_two_surgeons = "Zatrudnij dwóch Chirurgów do pracy w Sali Operacyjnej.", training_room_need_consultant = "Musisz zatrudnić Konsultanta w tej Sali Szkoleniowej.", gps_office_need_doctor = "Musisz zatrudnić Lekarza do pracy w Gabinecie Lekarskim.", }, goals = { win = { money = "Potrzebujesz kolejnych %d, aby speÅ‚nić wymogi finansowe tego poziomu.", cure = "Wylecz kolejnych %d pacjentów, a bÄ™dziesz miaÅ‚ ich wystarczajÄ…co dużo, aby wygrać ten poziom.", reputation = "ZwiÄ™ksz swoja reputacjÄ™ do %d, aby speÅ‚nić wymóg misji.", value = "Musisz zwiÄ™kszyć wartość swojego szpitala do %d", }, lose = { kill = "Zabij kolejnych %d pacjentów, a przegrasz misjÄ™!", }, }, warnings = { charges_too_low = "Pobierasz za niskie opÅ‚aty. Ludzie bÄ™dÄ… wybierać twój szpital, jednak nie zostawiÄ… w nim dużo pieniÄ™dzy.", charges_too_high = "WprowadziÅ‚eÅ› zbyt wysokie opÅ‚aty. Przez jakiÅ› czas bÄ™dziesz miaÅ‚ spore zyski, ale potem pacjenci zacznÄ… rezygnować z twoich usÅ‚ug.", staff_overworked = "Twoi pracownicy sÄ… niezmiernie przepracowani. StajÄ… siÄ™ nieefektywni i mogÄ… popeÅ‚niać katastrofalne błędy.", doctor_crazy_overwork = "O nie! Jeden z twoich Lekarzy oszalaÅ‚ z przepracowania. Jeżeli natychmiast pozwolisz mu odpocząć, to może wyzdrowieje.", doctors_tired = "Twoi Lekarze sÄ… bardzo zmÄ™czeni. Daj im odpocząć.", people_did_it_on_the_floor = "Niektórzy z twoich pacjentów nie wytrzymali. Szykuje siÄ™ dla kogoÅ› duże sprzÄ…tanie.", queues_too_long = "Kolejki w twoim szpitalu sÄ… za dÅ‚ugie.", money_very_low_take_loan = "Stan twojego konta jest zatrważajÄ…co niski. MógÅ‚byÅ› rozważyć wziÄ™cie kredytu.", falling_2 = "Przestaniesz siÄ™ w koÅ„cu wygÅ‚upiać?", patients_very_thirsty = "Pacjenci naprawdÄ™ sÄ… spragnieni. Jeżeli nie kupisz szybko Automatów do napoi, bÄ™dziesz Å›wiadkiem wielkiej migracji ludzi do domu po wÅ‚asnÄ… colÄ™.", machinery_very_damaged = "Pilne! BezzwÅ‚ocznie wezwij DozorcÄ™! UrzÄ…dzenia za chwilÄ™ eksplodujÄ…!", handymen_tired2 = "Twoi Dozorcy sÅ‚aniajÄ… siÄ™ ze zmÄ™czenia. Daj im natychmiast odpocząć.", desperate_need_for_watering = "Musisz koniecznie zatrudnić DozorcÄ™, aby dbaÅ‚ o twoje roÅ›liny.", nurses_tired = "Twoje PielÄ™gniarki sÄ… zmÄ™czone. Daj im odpocząć.", too_much_litter = "Jest problem ze Å›mieciami, który rozwiÄ…zać może wiÄ™ksza liczba Dozorców.", reception_bottleneck = "W recepcji utworzyÅ‚ siÄ™ korek. Zatrudnij nowÄ… RecepcjonistkÄ™.", place_plants4 = "Rozwesel pacjentów stawiajÄ…c wokół wiÄ™cej roÅ›lin.", place_plants3 = "Pacjenci sÄ… przygnÄ™bieni. Kup wiÄ™cej roÅ›lin, aby ich rozweselić.", staff_too_hot = "Twoim pracownikom jest za gorÄ…co. Obniż temperaturÄ™ lub usuÅ„ kaloryfery z ich gabinetów.", finanical_trouble2 = "ZdobÄ…dź jakieÅ› pieniÄ…dze albo szpital pójdzie pod mÅ‚otek. Nie ukoÅ„czysz poziomu, jeÅ›li stracisz kolejne %d.", plants_thirsty = "Musisz dbać o szpitalne roÅ›liny. ZaczynajÄ… usychać.", litter_everywhere = "Åšmieci sÄ… wszÄ™dzie. Niech Dozorcy zajmÄ… siÄ™ tym problemem.", nurses_tired2 = "Twoje PielÄ™gniarki sÄ… bardzo zmÄ™czone. Daj im natychmiast odpocząć.", no_desk_2 = "Dobra robota, to musi być rekord Å›wiata: prawie rok bez pacjentów! Jeżeli chcesz nadal być kierownikiem tego szpitala, musisz zatrudnić recepcjonistkÄ™ i kupić jej biurko aby mogÅ‚a pracować!", plants_dying = "RoÅ›liny umierajÄ… bÅ‚agajÄ…c o kroplÄ™ wody. Niech Dozorcy siÄ™ tym zajmÄ…. Pacjenci nie lubiÄ… martwych roÅ›lin.", reduce_staff_rest_threshold = "Spróbuj obniżyć próg zmÄ™czenia personelu na ekranie Strategii Szpitala tak, aby zaÅ‚oga mogÅ‚a częściej odpoczywać.", more_toilets = "Potrzebujesz wiÄ™cej Toalet. Ludzie muszÄ… siÄ™ zaÅ‚atwić.", hospital_is_rubbish = "Ludzie otwarcie mówiÄ…, że twój szpital jest do niczego. Chyba wiesz co bÄ™dzie dalej: zabiorÄ… siÄ™ ze swoimi choróbskami do innego szpitala.", pay_back_loan = "Masz dużo pieniÄ™dzy. Może byÅ› pomyÅ›laÅ‚ o spÅ‚acie pożyczki?", financial_trouble3 = "Stan twojego konta wyglÄ…da niepokojÄ…co. PomyÅ›l jak zarobić wiÄ™cej pieniÄ™dzy. JesteÅ› o %d od katastrofy.", bankruptcy_imminent = "Hej! Zmierzasz do bankructwa. BÄ…dź ostrożny!", build_toilet_now = "Zbuduj Toalety! Ludzie nie mogÄ… już dÅ‚użej wytrzymać. Nie Å›miej siÄ™, to poważna sprawa.", patient_stuck = "KtoÅ› siÄ™ zaklinowaÅ‚. Musisz lepiej rozplanować swój szpital.", no_patients_last_month = "W poprzednim miesiÄ…cu żaden nowy pacjent nie pojawiÅ‚ siÄ™ w twoim szpitalu. Tragedia!", falling_5 = "To nie miejsce na przewracanie ludzi, wiesz przecież, że sÄ… chorzy!", patients_too_hot = "Pacjentom jest za gorÄ…co. UsuÅ„ kilka kaloryferów, obniż temperaturÄ™, albo dokup automaty do napoi.", many_epidemics = "WyglÄ…da na to, że w szpitalu szaleje wiÄ™cej niż jedna epidemia. To może skoÅ„czyć siÄ™ kolosalna katastrofÄ…, wiÄ™c lepiej zacznij dziaÅ‚ać.", falling_4 = "To jest szpital, nie wesoÅ‚e miasteczko!", place_plants_to_keep_people = "Ludzie odchodzÄ…. Umieszczenie roÅ›lin mogÅ‚oby ich przekonać do pozostania.", patients_thirsty2 = "Ludziom chce siÄ™ pić. PowinieneÅ› kupić wiÄ™cej Automatów do napoi, albo przesunąć te, które już masz bliżej pacjentów.", money_low = "KoÅ„czÄ… ci siÄ™ pieniÄ…dze!", staff_unhappy = "Twoi pracownicy sÄ… niezadowoleni. Daj im podwyżkÄ™, a najlepiej zbuduj dla nich Pokój Socjalny. Możesz także przydzielić im wiÄ™cej czasu wolnego w dziale Strategia.", people_freezing = "Aż trudno uwierzyć, ale w epoce centralnego ogrzewania niektórzy z twoich pacjentów marznÄ… na kość. Zamontuj kaloryfery i podkręć ogrzewanie.", falling_6 = "To nie krÄ™gielnia, chorzy nie powinni być traktowani w taki sposób!", need_toilets = "Pacjenci potrzebujÄ… toalet. Zbuduj je w Å‚atwo dostÄ™pnym miejscu.", falling_3 = "Auć, to musiaÅ‚o boleć, niech ktoÅ› wezwie doktora!", nobody_cured_last_month = "W poprzednim miesiÄ…cu nie wyleczyÅ‚eÅ› absolutnie nikogo.", financial_trouble = "JesteÅ› w poważnych finansowych tarapatach. Natychmiast uporzÄ…dkuj swoje finanse! Jeżeli stracisz kolejne %d, zawalisz ten poziom!", patients_very_cold = "Pacjentom jest bardzo zimno. Spróbuj podkrÄ™cić ogrzewanie lub zamontuj wiÄ™cej kaloryferów.", no_desk_3 = "Po prostu wspaniale, minÄ…Å‚ prawie rok a ty nadal nie masz recepcji! W jako sposób zamierzasz zdobyć pacjentów? Zajmij siÄ™ tym natychmiast i przestaÅ„ siÄ™ w koÅ„cu wygÅ‚upiać!", build_toilets = "Czym prÄ™dzej zbuduj Toalety, albo ujrzysz coÅ› nieprzyjemnego. Wyobraź sobie także zapach swojego szpitala.", cannot_afford = "Nie masz wystarczajÄ…cej iloÅ›ci pieniÄ™dzy aby zatrudnić tÄ… osobÄ™!", no_desk = "PowinieneÅ› zakupić biurko recepcji i zatrudnić recepcjonistkÄ™!", patients_annoyed = "Ludzie sÄ… strasznie zdenerwowani twoim sposobem prowadzenia szpitala. I wcale im siÄ™ nie dziwiÄ™. Weź siÄ™ do roboty albo poniesiesz konsekwencje!", many_killed = "Masz już na sumieniu %d ludzi. A powinieneÅ› ich leczyć i dobrze o tym wiesz.", place_plants2 = "Ludzie odchodzÄ…. WiÄ™cej roÅ›lin mogÅ‚oby ich tu zatrzymać dÅ‚użej.", staff_tired = "Twoi pracownicy sÄ… strasznie zmÄ™czeni. Jeżeli nie dasz im choć trochÄ™ odpocząć, niektórzy mogÄ… paść z wycieÅ„czenia.", machines_falling_apart = "PrzyrzÄ…dy w twoim szpitalu psujÄ… siÄ™. WyÅ›lij natychmiast DozorcÄ™ do ich naprawy!", patients_unhappy = "Pacjenci nie lubiÄ… twojego szpitala. PowinieneÅ› coÅ› zrobić, by poprawić im warunki.", no_desk_1 = "Jeżeli chcesz aby pacjenci odwiedzali twój szpital, bÄ™dziesz musiaÅ‚ zatrudnić recepcjonistkÄ™ i zakupić jej biurko, przy którym bÄ™dzie pracować!", staff_unhappy2 = "Twoi pracownicy sÄ… niezadowoleni. Poza tym wkrótce bÄ™dÄ… chcieli wiÄ™cej pieniÄ™dzy.", cash_low_consider_loan = "Twoja sytuacja finansowa jest bardzo zÅ‚a. Czy rozważaÅ‚eÅ› wziÄ™cie kredytu?", queue_too_long_at_reception = "Zbyt wielu pacjentów czeka na rejestracjÄ™. Postaw nowe Biurko Recepcji i zatrudnij RecepcjonistkÄ™.", queue_too_long_send_doctor = "Kolejki do %s sÄ… za dÅ‚ugie. Upewnij siÄ™, że w gabinecie jest Lekarz.", falling_1 = "Hej! To nie jest Å›mieszne, uważaj gdzie klikasz tÄ… myszkÄ…; komuÅ› może stać siÄ™ krzywda!", doctors_tired2 = "Twoi Lekarze ledwo żyjÄ…. PotrzebujÄ… natychmiastowego odpoczynku.", handymen_tired = "Twoi Dozorcy sÄ… bardzo zmÄ™czeni. Daj im odpocząć.", patient_leaving = "JakiÅ› pacjent odchodzi. Powód? Twój kiepsko zarzÄ…dzany i sÅ‚abo wyposażony szpital.", deal_with_epidemic_now = "Jeżeli natychmiast nie zaradzisz tej epidemii, znajdziesz siÄ™ w niezÅ‚ych tarapatach. Rusz siÄ™!", patients_leaving = "Pacjenci odchodzÄ…. Ulepsz swój szpital umieszczajÄ…c w nim roÅ›liny, Å‚awki, automaty do napoi, itd.", machinery_damaged2 = "Musisz zatrudnić DozorcÄ™ do naprawy urzÄ…dzeÅ„.", epidemic_getting_serious = "Ta Zaraźliwa Choroba zaczyna być poważna. Musisz szybko coÅ› zrobić!", people_have_to_stand = "Zmuszasz cierpiÄ…cy lud do stania. Kup natychmiast wiÄ™cej Å‚awek.", receptionists_tired = "Twoje Recepcjonistki sÄ… strasznie zmÄ™czone. Daj im odpocząć.", build_staffroom = "Natychmiast zbuduj Pokój Socjalny! Twój personel pracuje ponad siÅ‚y i jest na skraju wyczerpania. Nabierz wreszcie rozumu!", machinery_slightly_damaged = "Maszyny w szpitalu sÄ… nieco uszkodzone. Nie zapomnij o ich konserwacji.", need_staffroom = "Zbuduj Pokój Socjalny, aby twoi pracownicy mieli gdzie odpocząć.", patients_getting_hot = "Pacjentom jest bardzo gorÄ…co. Spróbuj zmniejszyć ogrzewanie lub usuÅ„ niektóre kaloryfery.", machinery_deteriorating = "Twoje urzÄ…dzenia wÅ‚aÅ›nie zaczęły niszczeć na skutek zużycia. Miej na nie oko.", machinery_damaged = "NiedÅ‚ugo bÄ™dziesz musiaÅ‚ zająć siÄ™ naprawÄ… urzÄ…dzeÅ„ szpitalnych, bo zacznÄ… siÄ™ rozpadać.", patients_thirsty = "Ludziom chce siÄ™ pić. Może powinieneÅ› kupić jakieÅ› automaty do napoi.", machine_severely_damaged = "%s wkrótce ulegnie nieodwracalnemu uszkodzeniu.", litter_catastrophy = "Sytuacja ze Å›mieciami wyglÄ…da strasznie. Niech brygada Dozorców szybko siÄ™ tym zajmie!", staff_very_cold = "Personel narzeka na zimno. Podkręć ogrzewanie lub zamontuj wiÄ™cej kaloryferów.", more_benches = "PomyÅ›l o wstawieniu wiÄ™kszej liczby Å‚awek. Pacjenci nie znoszÄ… stania.", too_many_plants = "Masz zdecydowanie za dużo roÅ›lin. Tu jest jak w dżungli.", change_priorities_to_plants = "Musisz zmienić zadania swoim Dozorcom tak, aby spÄ™dzali wiÄ™cej czasu na podlewaniu roÅ›lin.", some_litter = "Dozorcy mogÄ… pozbyć siÄ™ Å›mieci, zanim stanÄ… siÄ™ one poważnym problemem.", receptionists_tired2 = "Twoje Recepcjonistki opadÅ‚y z siÅ‚. Daj im trochÄ™ odpocząć.", patients_really_thirsty = "Pacjenci sÄ… naprawdÄ™ spragnieni. Wstaw nowe Automaty do napoi, lub przesuÅ„ stare bliżej dużych kolejek.", research_screen_open_2 = "Na obecnym poziomie badania sÄ… niedostÄ™pne.", research_screen_open_1 = "Najpierw musisz wybudować DziaÅ‚ Badawczy aby mieć dostÄ™p do ekranu badaÅ„.", }, placement_info = { door_can_place = "Jeżeli chcesz, możesz umieÅ›cić tutaj drzwi.", window_can_place = "Możesz wstawić to okno tutaj. BÄ™dzie pasowaÅ‚o.", door_cannot_place = "Niestety nie możesz tu wstawić drzwi.", object_can_place = "Możesz umieÅ›cić ten przedmiot tutaj.", reception_can_place = "Nie możesz tu umieÅ›cić Biurka Recepcji.", staff_cannot_place = "Przykro mi, ale nie możesz tu umieÅ›cić tego pracownika.", staff_can_place = "Możesz umieÅ›cić tego pracownika tutaj. ", object_cannot_place = "Hej, nie możesz tu umieÅ›cić tego przedmiotu.", room_cannot_place = "Nie możesz tu zbudować pomieszczenia.", room_cannot_place_2 = "Nie możesz tu zbudować pomieszczenia.", window_cannot_place = "Ach, prawdÄ™ mówiÄ…c nie możesz tu wstawić okna.", reception_cannot_place = "Nie możesz tu umieÅ›cić Biurka Recepcji.", }, praise = { many_benches = "Teraz pacjenci majÄ… wystarczajÄ…cÄ… liczbÄ™ Å‚awek. Åšwietnie.", many_plants = "Wspaniale. W twoim szpitalu jest mnóstwo roÅ›lin. Pacjenci to doceniÄ….", plants_are_well = "Jak miÅ‚o. WidzÄ™, że dbasz o swoje roÅ›liny. To wspaniale.", few_have_to_stand = "Nikt nie musi stać w twoim szpitalu. Pacjenci bÄ™dÄ… zadowoleni.", plenty_of_benches = "Jest dużo miejsc do siedzenia, wiÄ™c nie ma problemu.", plants_thriving = "Bardzo dobrze. Twoje roÅ›liny dosÅ‚ownie rozkwitajÄ…. WyglÄ…dajÄ… cudownie. Tak trzymaj, a może wygrasz za nie trofeum.", patients_cured = "Wyleczono %d pacjentów.", }, information = { larger_rooms = "WiÄ™ksze pomieszczenia zwiÄ™kszajÄ… zadowolenie i wydajność twojego personelu.", extra_items = "Dodatkowe przedmioty w pokojach zapewniajÄ… pracownikom wiÄ™kszy komfort i zwiÄ™kszajÄ… ich wydajność.", epidemic = "W twoim szpitalu rozpleniÅ‚a siÄ™ zaraźliwa choroba. Musisz natychmiast rozwiÄ…zać ten problem!", promotion_to_doctor = "Jeden z twoich ASYSTENTÓW awansowaÅ‚ na DOKTORA.", emergency = "Mamy nagÅ‚y wypadek! Ruchy! Ruchy! RUCHY!", patient_abducted = "Jednego z twoich pacjentów próbujÄ… uprowadzić kosmici.", first_cure = "Dobra robota! WÅ‚aÅ›nie wyleczyÅ‚eÅ› swojego pierwszego pacjenta.", promotion_to_consultant = "Jeden z twoich LEKARZY awansowaÅ‚ na KONSULTANTA.", handyman_adjust = "Możesz zmusić Dozorców do efektywniejszego sprzÄ…tania poprzez zmianÄ™ ich priorytetów.", promotion_to_specialist = "Jeden z twoich Lekarzy awansowaÅ‚ do stopnia: %s.", initial_general_advice = { rats_have_arrived = "Szczury nawiedziÅ‚y twój szpital. Spróbuj wystrzelać je za pomocÄ… myszy.", autopsy_available = "Wynaleziono urzÄ…dzenie do Auto Autopsji. DziÄ™ki temu możesz pozbyć siÄ™ kÅ‚opotliwych lub niepożądanych pacjentów i prowadzić badania na ich zwÅ‚okach. Uważaj jednak - używanie tej maszyny jest bardzo kontrowersyjne.", first_patients_thirsty = "Ludzie w twoim szpitalu sÄ… spragnieni. Postaw wiÄ™cej Automatów do napoi.", research_now_available = "ZbudowaÅ‚eÅ› swój pierwszy DziaÅ‚ Badawczy. Teraz masz dostÄ™p do ekranu BadaÅ„.", psychiatric_symbol = "Lekarze wyszkoleni w psychiatrii posiadajÄ… symbol: |", decrease_heating = "Ludziom w twoim szpitalu jest za gorÄ…co. Zmniejsz poziom ogrzewania. Możesz tego dokonać w ekranie Mapy Miasta.", surgeon_symbol = "Lekarze mogÄ…cy przeprowadzać operacje posiadajÄ… symbol: {", first_emergency = "Pacjenci z nagÅ‚ych wypadków maja nad gÅ‚owami niebieskie lampki. Wylecz ich zanim umrÄ… lub upÅ‚ynie limit czasu.", first_epidemic = "W twoim szpitalu wybuchÅ‚a epidemia! Zdecyduj czy chcesz zakamuflować czy ujawnić ten problem.", taking_your_staff = "KtoÅ› podkupuje twoich pracowników. BÄ™dziesz musiaÅ‚ walczyć, aby ich zatrzymać.", place_radiators = "Ludzie w twoim szpitalu marznÄ… - możesz zamontować wiÄ™cej kaloryferów kupujÄ…c je w menu Wyposażenie Korytarza.", epidemic_spreading = "W twoim szpitalu wykryto zakażenie. Spróbuj wyleczyć wszystkich zakażonych pacjentów, nim opuszczÄ… szpital.", research_symbol = "Lekarze mogÄ…cy prowadzić badania posiadajÄ… symbol: }", machine_needs_repair = "Jedno z twoich urzÄ…dzeÅ„ wymaga naprawy. Zlokalizuj je - bÄ™dzie dymiÅ‚o - i kliknij na nie. NastÄ™pnie kliknij na przycisk Dozorcy.", increase_heating = "Ludziom jest zimno. Podkręć ogrzewanie na ekranie Mapy Miasta.", first_VIP = "Twój szpital czeka pierwsza wizytacja VIPa. Upewnij siÄ™, że nie zobaczy on niczego niehigienicznego ani nie spotka niezadowolonych pacjentów.", }, patient_leaving_too_expensive = "Pacjent wychodzi bez pÅ‚acenia za %s. To zbyt kosztowna usÅ‚uga.", vip_arrived = "Uwaga! Przed chwilÄ… przyjechaÅ‚ %s w celu wizytacji twojego szpitala! Miej wszystko pod kontrolÄ…, aby byÅ‚ zadowolony.", epidemic_health_inspector = "WieÅ›ci o epidemii z twojego szpitala dotarÅ‚y do Ministerstwa Zdrowia. Przygotuj siÄ™ na wizytÄ™ Inspektora Zdrowia.", first_death = "WÅ‚aÅ›nie zabiÅ‚eÅ› swojego pierwszego pacjenta. Jakie to uczucie?", pay_rise = "CzÅ‚onek personelu grozi odejÅ›ciem. Zdecyduj czy zgadzasz siÄ™ na jego żądania czy też zwolnisz go z pracy. Kliknij na ikonie po lewej stronie, aby zobaczyć kto grozi odejÅ›ciem.", place_windows = "DziÄ™ki oknom pomieszczenia sÄ… nasÅ‚onecznione, a twoi pracownicy majÄ… lepszy nastrój.", fax_received = "Ikona, która wÅ‚aÅ›nie pojawiÅ‚a siÄ™ w lewej, dolnej części ekranu, alarmuje ciÄ™ o ważnych informacjach lub decyzjach, które musisz podjąć.", }, build_advice = { placing_object_blocks_door = "Umieszczenie tego obiektu tutaj uniemożliwi dostanie siÄ™ do drzwi.", blueprint_would_block = "Projekt blokuje inne pomieszczenia. Spróbuj zmienić rozmiar pomieszczenia lub przesunąć je gdzie indziej!", door_not_reachable = "Ludzie nie bÄ™dÄ… mogli dostać siÄ™ do tych drzwi. Zastanów siÄ™.", blueprint_invalid = "Projekt pomieszczenia jest niewÅ‚aÅ›ciwy.", }, } calls_dispatcher = { repair = "Naprawa %s", summary = "%d wezwaÅ„; %d przydzielono", close = "Zamknij", watering = "Podlewanie @ %d,%d", staff = "%s - %s", } information = { cheat_not_possible = "Nie można używać oszustwa na tym poziomie. Nie potrafisz nawet oszukiwać, niezbyt to Å›mieszne co?", very_old_save = "ZaszÅ‚o sporo zmian w grze od czasu, gdy rozpoczÄ™ty zostaÅ‚ ten poziom. Aby mieć pewność, że wszystko dziaÅ‚a jak należy, zaleca siÄ™ rozpoczÄ™cie poziomu od nowa.", no_custom_game_in_demo = "Przepraszamy ale w wersji demonstracyjnej nie można grać na niestandardowych mapach.", cannot_restart = "Niestety ta dodatkowa mapa byÅ‚a zapisana zanim wprowadzona zostaÅ‚a możliwość ponownego rozpoczynania gry.", custom_game = "Witaj w CorsixTH. Å»yczymy dużo zabawy z dodatkowymi mapami!", level_lost = { [1] = "Pech! Nie udaÅ‚o Ci siÄ™ ukoÅ„czyć poziomu. Powodzenia nastÄ™pnym razem!", [2] = "Powód dla którego przegraÅ‚eÅ›:", reputation = "Twoja reputacja spadÅ‚a poniżej %d.", balance = "Twój stan konta byÅ‚ mniejszy niż %d.", percentage_killed = "ZabiÅ‚eÅ› wiÄ™cej niż %d procent pacientów.", cheat = "To byÅ‚ twój wybór czy wcisnÄ…Å‚eÅ› zÅ‚y przycisk? WiÄ™c nawet nie wiesz jak oszukiwać, nie jest ci teraz do Å›miechu co?", }, } casebook = { sent_home = "odprawionych", deaths = "zgony", treatment_charge = "koszt leczenia", reputation = "reputacja", research = "skoncentruj badania", cure = "leczenie", cured = "wyleczonych", earned_money = "zarobiono", cure_desc = { hire_psychiatrists = "Musisz zatrudnić Psychiatrów.", improve_cure = "Ulepsz Leczenie.", hire_nurses = "PowinieneÅ› zatrudnić PielÄ™gniarki.", build_ward = "Musisz jeszcze zbudować OddziaÅ‚.", no_cure_known = "Nieznane Leczenie.", cure_known = "Leczenie.", build_room = "Zalecam, abyÅ› zbudowaÅ‚ %s", hire_doctors = "Musisz zatrudnić Lekarzy.", hire_surgeons = "Musisz zatrudnić Chirurgów.", }, } new_game_window = { caption = "Kampania", player_name = "ImiÄ™ gracza", option_on = "Włączone", option_off = "Wyłączone", difficulty = "Poziom trudnoÅ›ci", easy = "Asystent (Åatwy)", medium = "Doktor (Åšredni)", hard = "Konsultan (Trudny)", tutorial = "Samouczek", start = "Rozpocznij", cancel = "Anuluj", } diseases = { diag_ward = { name = "Diag. OddziaÅ‚", }, diag_ultrascan = { name = "Diag. Ultraskan", }, autopsy = { name = "Sekcja zwÅ‚ok", }, third_degree_sideburns = { cause = "Przyczyna - tÄ™sknota za latami 70-tymi.", cure = "Leczenie - używajÄ…c najnowszych metod Psychiatra musi przekonać pacjenta, że brokat i buty na koturnach to obciach.", name = "Bokobrody", symptoms = "Objawy - fryzura afro, spodnie dzwony i brokatowy makijaż.", }, discrete_itching = { cause = "Przyczyna - maÅ‚e insekty z ostrymi zÄ™bami.", cure = "Leczenie - Pacjent pije apteczny kleisty syrop zapobiegajÄ…cy swÄ™dzeniu.", name = "Intymny ÅšwiÄ…d", symptoms = "Objawy - drapanie, prowadzÄ…ce do częściowego zapalenia ciaÅ‚a.", }, the_squits = { cause = "Przyczyna - jedzenie pizzy znalezionej pod kuchenkÄ….", cure = "Leczenie - kleista mieszanina włóknistych chemikaliów zespala wnÄ™trznoÅ›ci pacjenta.", name = "Rozwolnienie", symptoms = "Objawy - fuj, pewnie siÄ™ domyÅ›lasz.", }, spare_ribs = { cause = "Przyczyna - siadanie na zimnej podÅ‚odze.", cure = "Leczenie - to coÅ› musi być usuniÄ™te przez dwóch Chirurgów i oddane pacjentowi w papierowej torbie.", name = "Å»eberka", symptoms = "Objawy - nieprzyjemne uczucie w klatce piersiowej.", }, diag_blood_machine = { name = "Diag. Morfologia", }, king_complex = { cause = "WywoÅ‚ane przez ducha Króla, przejmujÄ…cego kontrolÄ™ nad umysÅ‚em pacjenta.", cure = "Leczenie - Psychiatra mówi pacjentowi jak idiotycznie wyglÄ…da.", name = "Kompleks Króla", symptoms = "Objawy - przywdziewanie kolorowego, zamszowego obuwia i jedzenie cheeseburgerów.", }, diag_x_ray = { name = "Diag. Rentgen", }, pregnancy = { cause = "Przyczyna - braki prÄ…du w obszarach miejskich.", cure = "Leczenie - owoc obżarstwa jest usuwany operacyjnie, myty i pokazywany pacjentowi.", name = "Ciąża", symptoms = "Objawy - miÄ™sieÅ„ piwny jako nastÄ™pstwo objadania siÄ™.", }, fake_blood = { cause = "Przyczyna - osoba bÄ™dÄ…ca zwykle ofiarÄ… psikusów.", cure = "Leczenie - psychiatryczne uspokajanie jest jedynym rozwiÄ…zaniem tego problemu.", name = "Sztuczna Krwistość", symptoms = "Objawy - czerwony pÅ‚yn w żyÅ‚ach, który wyparowuje przy kontakcie z odzieżą.", }, diag_psych = { name = "Diag. Psychiatra", }, invisibility = { cause = "Przyczyna - ugryzienie przez radioaktywnÄ… (i niewidzialnÄ…) mrówkÄ™.", cure = "Leczenie - kolorowy pÅ‚yn wypity w Aptece szybko przywróci pacjenta do peÅ‚nej widzialnoÅ›ci.", name = "Niewidzialność", symptoms = "Objawy - żaden dyskomfort dla pacjenta; wielu wrÄ™cz używa tej przypadÅ‚oÅ›ci, by robić kawaÅ‚y swym rodzinom.", }, golf_stones = { cause = "Przyczyna - wdychanie gazu z wnÄ™trza piÅ‚ek golfowych.", cure = "Leczenie - objawy usuwane operacyjnie przez dwóch Chirurgów.", name = "Kamienie Golfowe", symptoms = "Objawy - delirium i wielki wstyd.", }, diag_general_diag = { name = "Podst. Badania", }, infectious_laughter = { cause = "Przyczyna - typowy serial komediowy.", cure = "Leczenie - Psychiatra uÅ›wiadamia pacjentowi, że w tej dolegliwoÅ›ci nie ma nic zabawnego.", name = "Zaraźliwy Åšmiech", symptoms = "Objawy - ciÄ…gÅ‚y chichot i powtarzanie nieÅ›miesznych dowcipów.", }, general_practice = { name = "Wizyta u Lekarza", }, baldness = { cause = "Przyczyna - mówienie kÅ‚amstw i niestworzonych historii, aby być popularnym.", cure = "Leczenie - wÅ‚osy sÄ… gÅ‚adko nakÅ‚adane na gÅ‚owÄ™ pacjenta przy użyciu bolesnej maszynerii.", name = "Åysienie", symptoms = "Objawy - lÅ›niÄ…ca glaca i zakÅ‚opotanie.", }, heaped_piles = { cause = "Przyczyna - przebywanie w pobliżu automatów z zimnymi napojami.", cure = "Leczenie - smaczny, choć mocno kwaÅ›ny napój rozpuszcza hemoroidy od wewnÄ…trz.", name = "Hemoroidy", symptoms = "Objawy - Pacjent czuje siÄ™ jakby siedziaÅ‚ na torbie z kulkami.", }, unexpected_swelling = { cause = "Przyczyna - coÅ› niespodziewanego.", cure = "Leczenie - opuchlizna może być zmniejszona tylko przez chirurgiczne naciÄ™cie.", name = "NagÅ‚e WzdÄ™cia", symptoms = "Objawy - opuchlizna.", }, jellyitis = { cause = "Przyczyna - dieta bogata w żelatynÄ™ i nadmiar ćwiczeÅ„.", cure = "Leczenie - Pacjent jest zanurzany na chwilÄ™ w Galaretownicy.", name = "Galaretowatość", symptoms = "Objawy - drżenie i czÄ™ste upadki.", }, hairyitis = { cause = "Przyczyna - nadmiar naÅ›wietlenia księżycowego.", cure = "Leczenie - maszyna do elektrolizy usuwa wÅ‚osy i uszczelnia pory.", name = "WÅ‚ochacizna", symptoms = "Objawy - poszkodowani posiadajÄ… wyostrzony zmysÅ‚ wÄ™chu.", }, alien_dna = { cause = "Przyczyna - twarzoÅ‚apy z inteligentnÄ… krwiÄ… obcych.", cure = "Leczenie - DNA jest mechanicznie usuwane, czyszczone z obcych elementów i szybko wymieniane.", name = "DNA Obcego", symptoms = "Objawy - stopniowa metamorfoza w obcego i chęć niszczenia miasta.", }, bloaty_head = { cause = "Przyczyna - wÄ…chanie sera i picie nieoczyszczonej deszczówki.", cure = "Leczenie - opuchniÄ™ta gÅ‚owa jest przebijana, nastÄ™pnie nadmuchiwana do odpowiedniej wielkoÅ›ci.", name = "GÅ‚owowzdÄ™cie", symptoms = "Objawy - bardzo przykre dla ofiary.", }, gastric_ejections = { cause = "Przyczyna - pikantne meksykaÅ„skie lub hinduskie jedzenie.", cure = "Leczenie - wypicie specjalnego roztworu zapobiega wypuszczaniu czegokolwiek.", name = "U-Pierdliwość", symptoms = "Objawy - wpół strawione jedzenie uchodzi z pacjenta w maÅ‚ych iloÅ›ciach.", }, uncommon_cold = { cause = "Przyczyna - maÅ‚e czÄ…steczki smarków w powietrzu.", cure = "Leczenie - duży Å‚yk niezwykÅ‚ej medycznej mikstury ze specjalnych skÅ‚adników zrobionych w Aptece.", name = "Nietypowa Grypa", symptoms = "Objawy - zasmarkany nos, kichanie i przebarwione pÅ‚uca.", }, corrugated_ankles = { cause = "Przyczyna - rozjeżdżanie autem znaków ostrzegawczych.", cure = "Leczenie - lekko toksyczna mieszanka ziół i przypraw pita w celu naprostowania kostek.", name = "SfaÅ‚dowane Kostki", symptoms = "Objawy - problemy z wkÅ‚adaniem butów.", }, sleeping_illness = { cause = "Przyczyna - nadaktywny gruczoÅ‚ snu w podniebieniu.", cure = "Leczenie - stężona dawka silnego stymulanta podawana przez PielÄ™gniarkÄ™.", name = "Narkolepsja", symptoms = "Objawy - przeszywajÄ…ca chęć spania gdzie popadnie.", }, sweaty_palms = { cause = "Przyczyna - strach przed rozmowami kwalifikacyjnymi.", cure = "Leczenie - Psychiatra musi wybić pacjentowi z gÅ‚owy tÄ™ urojonÄ… chorobÄ™.", name = "Spocone DÅ‚onie", symptoms = "Objawy - uÅ›cisk dÅ‚oni pacjenta to jak Å›ciskanie nasiÄ…kniÄ™tej gÄ…bki.", }, serious_radiation = { cause = "Przyczyna - pomylenie izotopów plutonu z gumÄ… do żucia.", cure = "Leczenie - Pacjent musi być umieszczony w Prysznicu OdkażajÄ…cym i porzÄ…dnie umyty.", name = "Napromieniowanie", symptoms = "Objawy - pacjenci z tÄ… przypadÅ‚oÅ›ciÄ… czujÄ… siÄ™ bardzo, bardzo źle.", }, diag_cardiogram = { name = "Diag. Kardiograf", }, diag_scanner = { name = "Diag. Skaner", }, gut_rot = { cause = "Przyczyna - picie domowej roboty syropów na kaszel.", cure = "Leczenie - specjalna mikstura na odbudowanie warstwy ochronnej brzuszka.", name = "GnijÄ…ce Jelita", symptoms = "Objawy - brak kaszlu - oraz brak żołądka.", }, iron_lungs = { cause = "Przyczyna - smog miejski zmieszany z pozostaÅ‚oÅ›ciami kebabu.", cure = "Leczenie - dwaj Chirurdzy usuwajÄ… dużą bryłę z pÅ‚uc pacjenta.", name = "Å»elazne PÅ‚uca", symptoms = "Objawy - umiejÄ™tnosć ziania ogniem i krzyczenia pod wodÄ….", }, broken_wind = { cause = "Przyczyna - korzystanie z bieżni gimnastycznej po posiÅ‚ku.", cure = "Leczenie - sążnista wodna mikstura wypijana szybko w Aptece.", name = "TrujÄ…ce Wiatry", symptoms = "Objawy - pacjent niepokoi ludzi znajdujÄ…cych siÄ™ tuż za nim.", }, kidney_beans = { cause = "Przyczyna - miażdżenie kostek lodu w drinkach.", cure = "Leczenie - dwóch Chirurgów usuwa kamienie bez naruszania nerek.", name = "Kamionka Nerkowa", symptoms = "Objawy - ból i czÄ™ste wizyty w toalecie.", }, transparency = { cause = "Przyczyna - oblizywanie sreberka z jogurtu po otwarciu pojemniczka.", cure = "Leczenie - specjalnie barwiona i chÅ‚odzona woda apteczna leczy tÄ™ chorobÄ™.", name = "Przezroczystość", symptoms = "Objawy - ciaÅ‚o staje siÄ™ obrzydliwie przezroczyste.", }, broken_heart = { cause = "Przyczyna - ktoÅ› bogatszy, mÅ‚odszy i szczuplejszy od pacjenta.", cure = "Leczenie - Chirurdzy otwierajÄ… klatkÄ™ piersiowÄ… i, wstrzymujÄ…c oddech, zszywajÄ… serce.", name = "ZÅ‚amane serce", symptoms = "Objawy - pÅ‚acz i ból mięśni spowodowane godzinami darcia zdjęć z wakacji.", }, slack_tongue = { cause = "Przyczyna - naÅ‚ogowe dyskusje o telenowelach.", cure = "Leczenie - jÄ™zyk umieszczany jest w Krajalnicy i usuwany szybko, skutecznie i boleÅ›nie.", name = "ObwisÅ‚y JÄ™zyk", symptoms = "Objawy - piÄ™ciokrotnie powiÄ™kszony, obwisÅ‚y jÄ™zyk.", }, tv_personalities = { cause = "Przyczyna - telewizja Å›niadaniowa.", cure = "Leczenie - doÅ›wiadczony Psychiatra musi przekonać pacjenta do sprzedaży TV i zakupu radia.", name = "Osobowość Medialna", symptoms = "Objawy - zÅ‚udzenie, że można poprowadzić program o gotowaniu.", }, ruptured_nodules = { cause = "Przyczyna - skoki na bungie podczas mrozu.", cure = "Leczenie - dwóch wykwalifikowanych Chirurgów usuwa bÄ…ble swymi opanowanymi dÅ‚oÅ„mi.", name = "Przepuklina", symptoms = "Objawy - niemożność komfortowego siedzenia.", }, fractured_bones = { cause = "Przyczyna - spadanie z dużych wysokoÅ›ci na beton.", cure = "Leczenie - gips jest zakÅ‚adany, po czym zdejmowany przez maszynÄ™ sterowanÄ… laserowo.", name = "PoÅ‚amane KoÅ›ci", symptoms = "Objawy - gÅ‚oÅ›ne pÄ™kniÄ™cie i niemożność używania chorych koÅ„czyn.", }, chronic_nosehair = { cause = "Przyczyna - Wtykanie nosa w nie swoje sprawy.", cure = "Leczenie - obrzydliwy, usuwajÄ…cy wÅ‚osy napój, zażywany doustnie, robiony przez PielÄ™gniarkÄ™ w Aptece.", name = "WÅ‚osy w Nosie", symptoms = "Objawy - wÅ‚osów w nosie starczyÅ‚oby na gniazdo dla borsuka.", }, } policy = { header = "STRATEGIA SZPITALA", diag_termination = "zatrzymanie diagnozowania", sliders = { guess = "POSTAW DIAGNOZĘ", send_home = "WYPISZ DO DOMU", stop = "ZATRZYMAJ", staff_room = "IDŹ ODPOCZĄĆ", }, diag_procedure = "procedura diagnozowania", staff_rest = "wyÅ›lij personel na odpoczynek", staff_leave_rooms = "personel opuszcza gabinet", } competitor_names = { [1] = "ORAC", [2] = "COLOSSUS", [3] = "HAL", [4] = "MULTIVAC", [5] = "HOLLY", [6] = "DEEP THOUGHT", [7] = "ZEN", [8] = "LEON", [9] = "MARVIN", [10] = "AKIRA", [11] = "MOTHER", [12] = "JAYNE", [13] = "CORSIX", [14] = "ROUJIN", [15] = "EDVIN", [16] = "EMIL", [17] = "CHARLIE", [18] = "ARTUR", [19] = "MAGNUS", [20] = "SAL", [21] = "JOSHUA", [22] = "DANEEL", [23] = "OLIVAW", [24] = "NIC", } options_window = { caption = "Opcje", option_on = "Włączone", option_off = "Wyłączone", fullscreen = "PeÅ‚ny ekran", resolution = "Rozdzielczość", custom_resolution = "Niestandardowa...", browse = "PrzeglÄ…daj...", width = "Szerokość", height = "Wysokość", new_th_directory = "Tutaj możesz okreÅ›lić nowy katalog z zainstalowanÄ… grÄ… Theme Hospital. Jak tylko dokonasz wyboru gra bÄ™dzie uruchomiona ponownie.", apply = "Zatwierdź", cancel = "Anuluj", data_location = "Lokalizacja danych", font_location = "Lokalizacja czcionki", language = "JÄ™zyk gry", cancel = "Anuluj", back = "Wróć", audio = "DźwiÄ™k", customise = "Modyfikuj", folder = "Foldery", } folders_window = { caption = "Åšcieżki folderów", data_label = "Dane TH", font_label = "Czcionka", music_label = "MP3", savegames_label = "Zapisane stany gry", screenshots_label = "Zrzuty ekranu", new_th_location = "Tutaj możesz na nowo wybrać folder, w którym zainstalowana jest gra Theme Hospital. Po wybraniu folderu gra zostanie uruchomiona ponownie.", savegames_location = "Wybierz folder, w którym chcesz zapisywać stany gry", music_location = "Wybierz folder z muzykÄ…, której chcesz użyć", screenshots_location = "Wybierz folder, w którym chcesz zapisywać zrzuty ekranu", back = "Wstecz", } tooltip.folders_window = { browse = "PrzeglÄ…daj foldery", data_location = "Folder z orginalnÄ… grÄ… Theme Hospital, wymagany do uruchomienia CorsixTH", font_location = "Åšcieżka do pliku czcionki bÄ™dÄ…cej w stanie wyÅ›wietlić znaki Unicode wymagane przez twój jÄ™zyk. Bez podania czcionki nie bÄ™dzie możliwe wybrania jÄ™zyka, który używa znaki niewspierane przez orginalnÄ… grÄ™. PrzykÅ‚ad: Rosujski, Chinski, Polski.", savegames_location = "DomyÅ›lnie folder 'Saves', w którym umieszczane sÄ… stany gry, leży obok pliku konfiguracyjnego. JeÅ›li to Ci nie odpowiada możesz wybrać swój wÅ‚asny folder.", screenshots_location = "DomyÅ›lnie folder 'Screenshots', w którym umieszczane sÄ… zrzuty ekranu, leży obok pliku konfiguracyjnego. JeÅ›li to Ci nie odpowiada możesz wybrać swój wÅ‚asny folder.", music_location = "Wybierz folder z plikami MP3. Folder musi już być stworzony.", browse_data = "Wskaż innÄ… Å›cieżkÄ™ instalacji Theme Hospital (aktualnie: %1%)", browse_font = "Wskaż inny plik czcionki ( aktualnie: %1% )", browse_saves = "Wskaż innÄ… Å›cieżkÄ™ folderu ze stanami gry ( aktualnie: %1% ) ", browse_screenshots = "Wskaż innÄ… Å›cieżkÄ™ folderu ze zrzutami ekranu ( aktualnie: %1% ) ", browse_music = "Wskaż innÄ… Å›cieżkÄ™ folderu z twojÄ… muzykÄ… ( aktualnie: %1% ) ", no_font_specified = "Nie podano jeszcze pliku czcionki!", not_specified = "Nie podano jeszcze Å›cieżki folderu!", default = "DomyÅ›lna Å›cieżka", reset_to_default = "Przywróć domyÅ›lnÄ… Å›cieżkÄ™ dla folderu", back = "Zamknij to menu i wróć do ustawieÅ„", } customise_window = { caption = "WÅ‚asne ustawienia", option_on = "WÅ‚", option_off = "WyÅ‚", back = "Wróć", movies = "ZarzÄ…dzanie filmami", intro = "Odtwórz intro", paused = "Budoowanie w czasie pauzy", volume = "Skrót Å›ciszania", aliens = "Pacjenci Obcy", fractured_bones = "Pogruchotane koÅ›ci", average_contents = "Standardowe wyposarzenie", } tooltip.customise_window = { movies = "Globalne zarzÄ…dzanie filmami pozwoli Tobie na wyłączenie wszystkich filmików", intro = "Włącz lub wyłącz intro. Filmiki muszÄ… być globalnie włączone jeÅ›li chcesz oglÄ…dać intro przy każdym uruchomieniu CorsixTH", paused = "W grze Theme Hospital gracz mógÅ‚ jedynie używać górnego menu podczas pauzy. Jest to również domyÅ›lne ustawianie CorsixTH, ale przez włączenie tej opcji wszystko jest dozwolone podczas pauzy", volume = "JeÅ›li przycisk Å›ciszania otwiera również 'TeczkÄ™ z lekami' , włącz tę opcjÄ™ aby zmienić skrót do 'Teczki...' na Shift + C", aliens = "Z powodu braku dobrych animacji dokonaliÅ›my zmian aby pacjÄ™ci z DNA Obcego domyÅ›lnie przybywali tylko z nagÅ‚ych wypadków. JeÅ›li chcesz aby pacjensi z DNA Obcego mogli odwiedzać twój szpital nie tylko po nagÅ‚ym wypadku wyłącz tÄ™ opcjÄ™", fractured_bones = "Z powodu kiepskich animacji domyÅ›lnie wyłączyliÅ›my damskie modele pacjÄ™tów ze Zgruchotanymi KoÅ›cmi. Aby zezwolić, żeby pacjentki ze Zgruchotanymi koÅ›cmi odwiedzaÅ‚y twój szpital, wyłącz tÄ™ opcjÄ™", average_contents = "JeÅ›li chcesz, żeby gra zapamiÄ™taÅ‚a jakie dodatkowe wyposarzenie używasz zazwyczaj budujÄ…c dany typ pomieszczenia, włącz tÄ™ opcjÄ™", back = "Zamknij to menu i wróć do ustawieÅ„", } buy_objects_window = { price = "Cena: ", choose_items = "Wybierz Przedmioty", total = "Suma: ", } trophy_room = { wait_times = { award = { [1] = "Gratulacje. Kolejki w twoim szpitalu sÄ… zawsze wyjÄ…tkowo krótkie. To bardzo ważne wyróżnienie.", }, penalty = { [1] = "Ludzie w twoim szpitalu muszÄ… zbyt dÅ‚ugo czekać. Kolejki sÄ… za dÅ‚ugie. GdybyÅ› tylko chciaÅ‚, mógÅ‚byÅ› bardziej efektywnie obsÅ‚ugiwać pacjentów.", }, }, happy_vips = { trophies = { [1] = "Agencja Znani&Bogaci chciaÅ‚aby ciÄ™ nagrodzić Trofeum SÅ‚awy za uszczęśliwienie każdego VIPa, jaki odwiedziÅ‚ twój szpital. Możesz uznać siÄ™ za dość sÅ‚awnego i prawie jednego z nas.", [2] = "Agencja Znani&Bogaci chciaÅ‚aby ciÄ™ nagrodzić Trofeum SÅ‚awy za uszczęśliwienie każdego VIPa, jaki odwiedziÅ‚ twój szpital. Możesz uznać siÄ™ za dość sÅ‚awnego i prawie jednego z nas.", [3] = "Gratulacje z okazji nagrody JAZDA VIPa, za pokazanie odwiedzajÄ…cym jakÄ… to ciężko pracujÄ…cÄ… placówkÄ… jest twój szpital. WyÅ›mienicie.", }, awards = { [1] = "ZdobyÅ‚eÅ› NagrodÄ™ Nobla za zaimponowanie VIPom. Wszyscy odwiedzajÄ…cy twój szpital w ostatnim roku byli z niego bardzo zadowoleni.", [2] = "Gratulacje z okazji nagrody JAZDA VIPa, za pokazanie odwiedzajÄ…cym jakÄ… to ciężko pracujÄ…cÄ… placówkÄ… jest twój szpital. WyÅ›mienicie.", }, }, hosp_value = { penalty = { [1] = "Twój szpital nie osiÄ…gnÄ…Å‚ przyzwoitej wartoÅ›ci. Podejmujesz decyzje błędne pod wzglÄ™dem finansowym. PamiÄ™taj, dobry szpital to także drogi szpital.", }, awards = { [1] = "Ministerstwo Zdrowia chciaÅ‚oby ci pogratulować imponujÄ…cej wartoÅ›ci, jakÄ… osiÄ…gnÄ…Å‚ twój szpital.", }, regional = { [1] = "JesteÅ› geniuszem finansów. Twój szpital jest wart wiÄ™cej niż wszystkie inne razem wziÄ™te.", }, }, rats_accuracy = { trophies = { [1] = "OtrzymaÅ‚eÅ› Trofeum Najcelniejszego Strzelca im. gry Syndicate Wars za %d%% precyzjÄ™ w strzelaniu do szczurów.", [2] = "Tym trofeum pragniemy uczcić niezwykłą precyzjÄ™ z jakÄ… wymordowaÅ‚eÅ› %d%% szczurów, strzelajÄ…c do nich w zeszÅ‚ym roku.", [3] = "Aby upamiÄ™tnić wybicie %d%% wszystkich szczurów w twoim szpitalu, przyznano ci Trofeum Lochy Bez Gryzoni im. Dungeon Keepera. Gratulacje!", }, awards = { }, }, all_cured = { awards = { [1] = "Gratulacje z okazji zdobycia nagrody im. Marii Curie, za udane wyleczenie wszystkich pacjentów w ostatnim roku.", }, trophies = { [1] = "MiÄ™dzynarodowa Fundacja Zdrowia, za fakt wyleczenia wszystkich pacjentów twojego szpitala w ostatnim roku, honoruje ciÄ™ Trofeum WyleczÄ™ Wszystko.", [2] = "ZostaÅ‚eÅ› obdarowany Trofeum Nie-Chorobom, za wyleczenie wszystkich pacjentów szpitala w zeszÅ‚ym roku.", }, }, best_value_hosp = { trophies = { [1] = "Gratulacje z okazji otrzymania Trofeum, za szpital z najlepszÄ… reputacjÄ… w ciÄ…gu ostatniego roku. Cóż, zasÅ‚użyÅ‚eÅ› na to.", }, penalty = { [1] = "Każdy szpital w okolicy jest wart wiÄ™cej niż twój. Zrób coÅ› z tym, bo jest to żenujÄ…ce. Dokup jakieÅ› droższe urzÄ…dzenia!", }, regional = { [1] = "Gratulacje, twój szpital jest najbardziej wartoÅ›ciowy w caÅ‚ej grze. Dobra robota i oby tak dalej.", }, }, high_rep = { trophies = { [1] = "Gratulacje z okazji otrzymania Trofeum, za szpital z najlepszÄ… reputacjÄ… w ciÄ…gu ostatniego roku. Cóż, zasÅ‚użyÅ‚eÅ› na to.", }, penalty = { [1] = "Zostajesz ukarany za utrzymywanie bardzo niskiej reputacji w przeciÄ…gu ostatniego roku. Postaraj siÄ™, by w przyszÅ‚oÅ›ci byÅ‚o lepiej.", [2] = "Reputacja twojego szpitala jest najgorsza w okolicy. To haÅ„ba. Jak tak dalej pójdzie, możesz szukać nowej pracy.", }, awards = { [1] = "Niniejszym zostajesz nominowany do Nagrody RzÄ…dowej, za nieskazitelne standardy i najwyższÄ… możliwÄ… reputacjÄ™ w tym roku. PiÄ™knie.", [2] = "Przyjmij, proszÄ™, NagrodÄ™ Bullfroga, za najwyższÄ… reputacjÄ™ wÅ›ród szpitali w ciÄ…gu ostatniego roku. Masz powody do zadowolenia, zapracowaÅ‚eÅ› na to.", [3] = "Dobra robota. Zdobywasz niewielkÄ… nagrodÄ™ za osiÄ…gniecie caÅ‚kiem niezÅ‚ej reputacji w ostatnim roku.", [4] = "Cudownie! Twój szpital wygrywa nagrodÄ™ za osiÄ…gniecie najlepszej reputacji w zeszÅ‚ym roku.", [5] = "W tym roku reputacja twojego szpitala przekroczyÅ‚a reputacjÄ™ wszystkich szpitali razem wziÄ™tych. ZnaczÄ…ce osiÄ…gniÄ™cie.", }, regional = { [1] = "Przyjmij, proszÄ™, NagrodÄ™ Bullfroga, za najwyższÄ… reputacjÄ™ wÅ›ród szpitali w ciÄ…gu ostatniego roku. Masz powody do zadowolenia, zapracowaÅ‚eÅ› na to.", [2] = "W tym roku reputacja twojego szpitala przekroczyÅ‚a reputacjÄ™ wszystkich szpitali razem wziÄ™tych. ZnaczÄ…ce osiÄ…gniÄ™cie.", }, }, consistant_rep = { trophies = { [1] = "Niniejszym zostajesz nominowany do Nagrody RzÄ…dowej, za nieskazitelne standardy i najwyższÄ… możliwÄ… reputacjÄ™ w tym roku. PiÄ™knie.", [2] = "Gratulacje z okazji otrzymania Trofeum, za szpital z najlepszÄ… reputacjÄ… w ciÄ…gu ostatniego roku. Cóż, zasÅ‚użyÅ‚eÅ› na to.", }, }, curesvdeaths = { awards = { [1] = "Szczere gratulacje za osiÄ…gniÄ™cie imponujÄ…cej proporcji wyleczeÅ„-zgonów w twoim szpitalu w zeszÅ‚ym roku.", }, penalty = { [1] = "Twój współczynnik wyleczeÅ„ w stosunku do zgonów jest bardzo maÅ‚y. PowinieneÅ› siÄ™ upewnić, że leczysz wiÄ™cej ludzi niż zabijasz. Nie zawiedź nas.", }, }, cleanliness = { regional_good = { [1] = "Twój szpital jest znany jako jeden z najmniej czystych w okolicy. Brudny szpital jest Å›mierdzÄ…cy i niebezpieczny. PowinieneÅ› zwracać wiÄ™kszÄ… uwagÄ™ na baÅ‚agan.", }, award = { [1] = "Inspekcja odnotowaÅ‚a, że twój szpital jest bardzo czysty. Czysty szpital to bezpieczny szpital. Tak trzymać.", }, regional_bad = { [1] = "Twój szpital jest najbrudniejszy w okolicy. Inni administratorzy zdoÅ‚ali utrzymać korytarze w czystoÅ›ci. Przynosisz wstyd Å›rodowisku medycznemu.", }, }, happy_patients = { awards = { [1] = "Możesz być zadowolony z faktu, że ludzie w twoim szpitalu byli bardzo zadowoleni podczas ostatniego roku.", [2] = "Ludzie odwiedzajÄ…cy twój szpital byli bardziej zadowoleni z kuracji niż gdziekolwiek indziej.", }, penalty = { [1] = "Ludzie uważajÄ… wizyty w twoim szpitalu za niemiÅ‚e doÅ›wiadczenie. Musisz coÅ› z tym zrobić, jeżeli chcesz zdobyć poważanie Ministerstwa.", [2] = "Ludzie leczÄ…cy siÄ™ w twoim szpitalu byli bardzo niezadowoleni ze stanu tego miejsca. PamiÄ™taj, najważniejsze jest dobro pacjenta.", }, }, emergencies = { regional_good = { [1] = "Ministerstwo zauważyÅ‚o, że twój szpital radziÅ‚ sobie lepiej z nagÅ‚ymi wypadkami niż inne szpitale w zeszÅ‚ym roku i przyznaÅ‚o ci nagrodÄ™.", }, penalty = { [1] = "Nie radzisz sobie z nagÅ‚ymi wypadkami. Pacjenci z nagÅ‚ych wypadków potrzebujÄ… natychmiastowej i wÅ‚aÅ›ciwej opieki, której ty nie zapewniasz.", }, regional_bad = { [1] = "Twój szpital najgorzej w regionie w radzi sobie z nagÅ‚ymi wypadkami. To twoja wina, że wylÄ…dowaÅ‚eÅ› na szarym koÅ„cu lokalnej opieki zdrowotnej.", }, award = { [1] = "Gratulacje: skuteczne leczenie nagÅ‚ych wypadków pozwoliÅ‚o nam przyznać ci to specjalne wyróżnienie. Dobra robota. ", [2] = "Twoja zaradność w nagÅ‚ych wypadkach jest wyjÄ…tkowa. Ta nagroda jest dla najlepszych za radzenie sobie z dużym napÅ‚ywem chorych i cierpiÄ…cych.", }, }, gen_repairs = { awards = { [1] = "ZostaÅ‚eÅ› nominowany do specjalnej nagrody za bÅ‚yskotliwość twoich Dozorców w naprawianiu sprzÄ™tu szpitalnego. Dobra robota. Weź urlop.", [2] = "Twoi Dozorcy sÄ… lepsi niż w innych szpitalach. To znaczÄ…ce osiÄ…gniÄ™cie, za które ci gratulujemy.", [3] = "Twój sprzÄ™t jest w Å›wietnym stanie. PoÅ›wiÄ™cenie twoich Dozorców jest niezwykÅ‚e. Wszyscy zasÅ‚ugujecie na tÄ™ prestiżowÄ… nagrodÄ™. Åšwietna robota.", }, penalty = { [1] = "Dozorcy nie dbajÄ… za bardzo o twoje urzÄ…dzenia. PowinieneÅ› ich lepiej nadzorować lub zatrudnić nowych, aby poradzić sobie z natÅ‚okiem pracy.", [2] = "Masz baÅ‚agan w konserwacji urzÄ…dzeÅ„. Twoi pracownicy powinni szybko i starannie opiekować siÄ™ wyposażeniem.", }, }, no_deaths = { trophies = { [1] = "Towarzystwo Å»ycie PÅ‚ynie Dalej przyznaÅ‚o ci to trofeum za absolutny brak zgonów w zeszÅ‚ym roku.", [2] = "ZostaÅ‚eÅ› nominowany do Trofeum PozostaÅ„ Å»ywy za unikniÄ™cie jakichkolwiek zgonów w twoim Å›wietnym szpitalu w tym roku. Super.", [3] = "ZostaÅ‚eÅ› nominowany do Trofeum PozostaÅ„ Å»ywy za unikniÄ™cie jakichkolwiek zgonów w twoim Å›wietnym szpitalu w tym roku. Super.", }, penalty = { [1] = "Liczba zgonów w twoim szpitalu przez ostatni rok jest nie do przyjÄ™cia. Zwróć wiÄ™kszÄ… uwagÄ™ na to, co robisz. Spraw, aby w przyszÅ‚oÅ›ci wyleczyć wiÄ™cej osób.", [2] = "Twój szpital niesie ryzyko dla zdrowia pacjentów. Oczekujemy od ciebie leczenia ludzi a nie ich zabijania.", }, awards = { [1] = "ZdobyÅ‚eÅ› NagrodÄ™ Nie-Odwal-Kity za utrzymanie przy życiu 100 procent pacjentów w ostatnim roku.", [2] = "Otrzymujesz tÄ™ nagrodÄ™, aby uczcić niskÄ… liczbÄ™ zgonów w twoim szpitalu w tym roku. Åšwietna robota.", [3] = "Åšmiertelność w twoim szpitalu w ubiegÅ‚ym roku byÅ‚a niższa niż w innych szpitalach. ProszÄ™, przyjmij tÄ™ nagrodÄ™.", [4] = "DziÄ™ki twojemu talentowi poziom zgonów nie przekroczyÅ‚ minimum. Możesz być z siebie dumny.", }, regional = { [1] = "Åšmiertelność w twoim szpitalu w ubiegÅ‚ym roku byÅ‚a niższa niż w innych szpitalach. ProszÄ™, przyjmij tÄ™ nagrodÄ™.", }, }, rats_killed = { trophies = { [1] = "Przyznano ci Trofeum Anty-Szkodnik za zeszÅ‚oroczny odstrzaÅ‚ %d szczurów w twoim szpitalu.", [2] = "Zakwalifikowano ciÄ™ do trofeum z Federacji Przeciw Szczurom i Myszom, dziÄ™ki twym wyjÄ…tkowym umiejÄ™tnoÅ›ciom w wystrzeleniu %d tych stworzeÅ„.", [3] = "ZakwalifikowaÅ‚eÅ› siÄ™ do otrzymania Trofeum Wysadzić-Szczura za niebywałą umiejÄ™tność likwidacji %d szczurów w szpitalu w zeszÅ‚ym roku.", }, awards = { }, }, happy_staff = { trophies = { [1] = "ZostaÅ‚eÅ› nagrodzony Radosnym Trofeum za utrzymanie szczęśliwym ciężko pracujÄ…cego personelu.", [2] = "Instytut Szczęścia nagrodziÅ‚ ciÄ™, za brak niezadowolonego personelu w twoim szpitalu w ciÄ…gu ostatniego roku.", [3] = "To trofeum, WiÄ™cej RadoÅ›ci jest niniejszym wrÄ™czone tobie, za utrzymanie zadowolonego personelu podczas ostatniego roku. UÅ›miechajcie siÄ™ wszyscy!", }, awards = { [1] = "Twoi pracownicy fundujÄ… ci tÄ™ nagrodÄ™. MówiÄ…, że można wprowadzić jeszcze kilka usprawnieÅ„, ale ogólnie jest dobrze.", [2] = "Twój pracownicy sÄ… tak zadowoleni, że uÅ›miech nie schodzi im z ust. JesteÅ› wyÅ›mienitym menadżerem.", }, penalty = { [1] = "Twój personel nie kryje faktu, że jest bardzo niezadowolony. Dobrzy pracownicy to skarb. Uszczęśliw ich albo dużo na tym stracisz.", }, regional_good = { [1] = "Twój personel jest szczęśliwszy niż w innych szpitalach. Zadowolona zaÅ‚oga oznacza wiÄ™ksze profity i mniej zgonów.", }, regional_bad = { [1] = "Twoi pracownicy podczas ostatniego roku byli bardzo przygnÄ™bieni. PowinieneÅ› byÅ‚ to zauważyć. Każdy inny szpital ma szczęśliwszych pracowników niż twój.", }, }, healthy_plants = { awards = { [1] = "Gratulacje z okazji wygrania nagrody Jak Na Drożdżach za utrzymywanie roÅ›lin w dobrym stanie przez ostatni rok.", }, trophies = { [1] = "Przyjaciele RoÅ›lin Doniczkowych fundujÄ… ci Zielone Trofeum Zdrowia za utrzymanie roÅ›lin w dobrym stanie przez ostatni rok.", [2] = "Od SÅ‚odkich Rosiczek otrzymujesz Trofeum Wielkiego Ogrodnika za utrzymanie szpitalnych roÅ›lin w rewelacyjnej kondycji przez ostatni rok.", }, }, sold_drinks = { trophies = { [1] = "Åšwiatowe Stowarzyszenie Dentystów ma zaszczyt przyznać ci trofeum i odznakÄ™ za wysokÄ… sprzedaż napojów w puszkach w twoim szpitalu.", [2] = "Twój szpital otrzymaÅ‚ nagrodÄ™ Gazowanego Zeusa Handlu Detalicznego za sprzedaż dużej liczby napojów w ostatnim roku.", [3] = "W imieniu kompanii Plomba Bomba Inc, otrzymujesz to pokryte czekoladÄ… trofeum, aby uczcić niezwykle wysokÄ… tegorocznÄ… sprzedaż napojów w twoim szpitalu.", }, awards = { }, }, many_cured = { trophies = { [1] = "Za wyleczenie ogromnej liczby ludzi w ciÄ…gu ostatniego roku, MiÄ™dzynarodowa Fundacja Zdrowia chce uhonorować ciÄ™ Trofeum WieloLecz.", [2] = "Za wyleczenie znacznego odsetka pacjentów odwiedzajÄ…cych twój szpital w ciÄ…gu ostatniego roku, przyznano ci PÅ‚ukankowe Trofeum Nie Chorobom!", [3] = "Za wyleczenie znacznego odsetka pacjentów odwiedzajÄ…cych twój szpital w ciÄ…gu ostatniego roku, przyznano ci PÅ‚ukankowe Trofeum Nie Chorobom!", }, penalty = { [1] = "Twój szpital zawodzi w skutecznym niesieniu pomocy potrzebujÄ…cym. Skoncentruj siÄ™ na wiÄ™kszej wydajnoÅ›ci w leczeniu ludzi.", [2] = "Twój szpital jest mniej efektywny w leczeniu niż jakikolwiek inny. ZawiodÅ‚eÅ› Ministerstwo i zawiodÅ‚eÅ› samego siebie. Nic wiÄ™cej nie mamy do powiedzenia.", }, awards = { [1] = "Gratulacje! Zdobywasz NagrodÄ™ Marii Curie za wyleczenie prawie wszystkich pacjentów twojego szpitala w ciÄ…gu ostatniego roku.", [2] = "Gratulacje za wyleczenie masy ludzi podczas ostatniego roku. Dużo pacjentów czuje siÄ™ znacznie lepiej dziÄ™ki twojej pracy.", [3] = "Przyjmij tÄ™ nagrodÄ™, za wyleczenie wiÄ™kszej liczby pacjentów niż inne szpitale. Niebagatelny uczynek.", [4] = "Z zaszczytem wrÄ™czamy ci nagrodÄ™ za wyleczenie wiÄ™kszej iloÅ›ci pacjentów, niż wszystkie szpitale razem wziÄ™te.", }, regional = { [1] = "Z zaszczytem wrÄ™czamy ci nagrodÄ™ za wyleczenie wiÄ™kszej iloÅ›ci pacjentów, niż wszystkie szpitale razem wziÄ™te.", }, }, pop_percentage = { awards = { [1] = "Wiedz, że twój szpital w zeszÅ‚ym roku odwiedziÅ‚o bardzo dużo ludzi. Dobra robota.", [2] = "Gratulacje. Liczba miejscowej ludnoÅ›ci odwiedzajÄ…cej twój szpital w zeszÅ‚ym roku byÅ‚a dużo wyższa niż gdzie indziej.", [3] = "Wspaniale. ZwabiÅ‚eÅ› wiÄ™cej populacji do swojego szpitala, niż byÅ‚o odwiedzajÄ…cych we wszystkich innych szpitalach razem.", }, penalty = { [1] = "Bardzo maÅ‚o ludzi odwiedziÅ‚o twój szpital w tym roku. Aby zarabiać pieniÄ…dze, ta instytucja potrzebuje pacjentów.", [2] = "Każdy szpital w tej okolicy zdoÅ‚aÅ‚ przyjąć wiÄ™kszÄ… liczbÄ™ pacjentów, niż twój. PowinieneÅ› siÄ™ wstydzić.", }, }, research = { regional_good = { [1] = "DziÄ™ki badaniom naukowym twój szpital przoduje w nowoczesnoÅ›ci. Twój sztab naukowy zasÅ‚użyÅ‚ na tÄ™ nagrodÄ™. Åšwietnie.", }, penalty = { [1] = "Nie radziÅ‚eÅ› sobie z wynajdowaniem nowych kuracji, urzÄ…dzeÅ„ i leków. To niedobrze, gdyż postÄ™p technologiczny jest niezwykle ważny.", }, regional_bad = { [1] = "JesteÅ› najsÅ‚abszy w okolicy pod wzglÄ™dem badaÅ„ naukowych. Ministerstwo jest wÅ›ciekÅ‚e, ponieważ powinno ci na tym szczególnie zależeć.", }, awards = { [1] = "DziÄ™ki badaniom naukowym twój szpital przoduje w nowoczesnoÅ›ci. Twój sztab naukowy zasÅ‚użyÅ‚ na tÄ™ nagrodÄ™. Åšwietnie.", [2] = "Podczas ostatniego roku wynalazÅ‚eÅ› wiÄ™cej leków i sprzÄ™tu, niż ktokolwiek mógÅ‚ przypuszczać. ProszÄ™, przyjmij tÄ™ nagrodÄ™ od caÅ‚ego Ministerstwa.", }, }, reputation = "REPUTACJA", cash = "GOTÓWKA", } menu_list_window = { save_date = "Utworzony", name = "Nazwa", back = "Wróć", } menu_options_volume = { [50] = " 50% ", [100] = " 100% ", [30] = " 30% ", [60] = " 60% ", [90] = " 90% ", [10] = " 10% ", [20] = " 20% ", [40] = " 40% ", [80] = " 80% ", [70] = " 70% ", } menu_file_load = { [1] = " GRA 1 ", [2] = " GRA 2 ", [3] = " GRA 3 ", [4] = " GRA 4 ", [5] = " GRA 5 ", [6] = " GRA 6 ", [7] = " GRA 7 ", [8] = " GRA 8 ", } menu_file = { quit = " (SHIFT+Q) WYJDŹ ", save = " (SHIFT+S) ZAPISZ ", load = " (SHIFT+L) WCZYTAJ ", restart = " (SHIFT+R) ZACZNIJ OD NOWA ", } rooms_long = { ultrascan = "Ultraskaner", research_room = "DziaÅ‚ Badawczy", general = "Ogólne", gps_office = "Gabinet Lekarski", inflation = "Napowietrzalnia", staffroom = "Pokój Socjalny", jelly_vat = "Galaretownica", scanner = "Skaner", emergency = "NagÅ‚y Wypadek", decontamination = "Gabinet Odkażania", corridors = "Korytarz", cardiogram = "Kardiograf", ward = "OddziaÅ‚", training_room = "Sala Szkoleniowa", psychiatric = "Psychiatra", operating_theatre = "Sala Operacyjna", dna_fixer = "Re-GEN-erator", tongue_clinic = "Przych. Obrzynania", hair_restoration = "Przeszczepiacz WÅ‚osów", general_diag = "Podst. Badania", pharmacy = "Apteka", fracture_clinic = "Gab. Ortopedyczny", toilets = "Toalety", electrolysis = "Gabinet Elektrolizy", x_ray = "Rentgen", blood_machine = "Analizator Krwi", } save_game_window = { caption = "Zapisz GrÄ™ (%1%)", new_save_game = "Nowy Zapis", } fax = { epidemic_result = { fine_amount = "RzÄ…d ogÅ‚osiÅ‚ stan zagrożenia i naÅ‚ożyÅ‚ na ciebie grzywnÄ™ %d.", close_text = "Hura!", hospital_evacuated = "Komisja Zdrowia nie miaÅ‚a wyboru i postanowiÅ‚a ewakuować twój szpital.", succeeded = { part_1_name = "Inspektor Zdrowia usÅ‚yszaÅ‚ plotki, że twoja instytucja miaÅ‚a do czynienie ze złą sytuacjÄ… z %s.", part_2 = "Jednakże nie daÅ‚ rady znaleźć dowodów potwierdzajÄ…cych te plotki.", }, compensation_amount = "RzÄ…d postanowiÅ‚ wypÅ‚acić ci odszkodowanie %d za oszczerstwa, które naruszyÅ‚y dobre imiÄ™ twojego szpitala.", failed = { part_1_name = "UsiÅ‚ujesz ukryć fakt zetkniÄ™cia siÄ™ z zaraźliwym wybuchem %s", part_2 = "Twój personel spowodowaÅ‚, że choroba przeszÅ‚a na ludność żyjÄ…cÄ… w pobliżu szpitala.", }, rep_loss_fine_amount = "Prasa bÄ™dzie miaÅ‚a używanie w zwiÄ…zku z tÄ… sprawÄ…, która poważnie zszarga twojÄ… reputacjÄ™. Poza tym dostaniesz grzywnÄ™ %d.", }, vip_visit_query = { choices = { invite = "WyÅ›lij VIPowi Oficjalne Zaproszenie .", refuse = "Spróbuj zbyć VIPa jakÄ…Å› wymówkÄ….", }, vip_name = "%s wyraziÅ‚ chęć odwiedzenia twojego szpitala", }, vip_visit_result = { telegram = "Telegram!", remarks = { good = { [1] = "Doskonale zarzÄ…dzany szpital. DziÄ™kujÄ™, że mnie tu zaprosiÅ‚eÅ›.", [2] = "Hmm. CaÅ‚kiem niezÅ‚a placówka sÅ‚użby zdrowia.", [3] = "PodobaÅ‚ mi siÄ™ twój czarujÄ…cy szpital. No dobrze, idzie ktoÅ› na tajskie curry?", }, super = { [1] = "Cóż za fantastyczny szpital. JeÅ›li poważnie zachorujÄ™, przywieźcie mnie tutaj.", [2] = "To jest dopiero szpital!", [3] = "Super szpital. A wiem co mówiÄ™, bo już ich trochÄ™ widziaÅ‚em.", }, bad = { [1] = "Po co sobie zawracaÅ‚em gÅ‚owÄ™? To byÅ‚o gorsze, niż oglÄ…danie czterogodzinnej opery!", [2] = "OdrażajÄ…cy widok. To ma być szpital?! Chyba raczej chlew!", [3] = "Jako osoba publiczna mam już dosyć odwiedzania takich nor jak ta! RezygnujÄ™.", }, free_build = { [1] = "Masz tu bardzo Å‚adny szpital! Nie trudno siÄ™ go prowadzi bez ograniczeÅ„ finansowych czyż nie?", [2] = "Nie jestem ekonomistÄ… ale wydaje mi siÄ™, że też mógÅ‚bym poprowadzić ten szpital, jeżeli wiesz o czym mówiÄ™...", [3] = "Bardzo dobrze prowadzony szpital. PamiÄ™taj jednak o recesji! Racja... nie musisz siÄ™ o to martwić.", }, mediocre = { [1] = "No cóż, widywaÅ‚em gorsze, ale powinieneÅ› siÄ™ bardziej postarać.", [2] = "Ojej. JeÅ›li kiepsko siÄ™ czujesz, to nie jest miejsce dla ciebie.", [3] = "Szczerze mówiÄ…c, to zwyczajny szpital. OczekiwaÅ‚em czegoÅ› wiÄ™cej.", }, very_bad = { [1] = "Co za melina. ZrobiÄ™ co w mojej mocy, żeby jÄ… zamknÄ™li.", [2] = "Skandal! W życiu nie widziaÅ‚em tak koszmarnego szpitala. ", [3] = "Jestem w szoku. Tego nie da siÄ™ nazwać szpitalem! IdÄ™ na piwo.", }, }, rep_boost = "Twoja reputacja w Å›rodowisku umocniÅ‚a siÄ™.", vip_remarked_name = "Po wizycie w twoim szpitalu %s zdecydowaÅ‚:", cash_grant = "Otrzymasz dotacjÄ™ w wysokoÅ›ci %d.", rep_loss = "Dlatego też twoja reputacja ucierpiaÅ‚a.", close_text = "DziÄ™kujÄ™ za odwiedzenie szpitala.", }, disease_discovered_patient_choice = { need_to_build = "Musisz zbudować %s, aby sobie z tym poradzić.", need_to_employ = "Zatrudnij %s żeby poradzić sobie z tÄ… sytuacjÄ….", what_to_do_question = "Co chcesz zrobić z pacjentem?", guessed_percentage_name = "Twoja ekipa musiaÅ‚a domyÅ›lać siÄ™ przypadÅ‚oÅ›ci pacjenta. Jest %d procent szans, że to jest %s", choices = { send_home = "Wypisz Pacjenta do domu.", research = "WyÅ›lij pacjenta do DziaÅ‚u Badawczego.", wait = "Każ Pacjentowi zaczekać chwilÄ™ w szpitalu.", }, disease_name = "Twoja ekipa odkryÅ‚a nowÄ… dolegliwość: %s", need_to_build_and_employ = "Jeżeli zbudujesz %s i zatrudnisz %s możesz osiÄ…gnąć cel.", can_not_cure = "Nie możesz wyleczyć tej choroby.", }, emergency_result = { earned_money = "MogÅ‚eÅ› otrzymać maksymalnie %d, zarobiÅ‚eÅ› %d.", close_text = "Kliknij, aby wyjść.", saved_people = "UratowaÅ‚eÅ› %d ludzi z %d poszkodowanych.", }, disease_discovered = { discovered_name = "Twoja ekipa odkryÅ‚a nowÄ… dolegliwość: %s", need_to_employ = "Zatrudnij %s, aby poradzić sobie z tym kryzysem.", need_to_build_and_employ = "Jeżeli zbudujesz %s i zatrudnisz %s możesz osiÄ…gnąć cel.", need_to_build = "Musisz zbudować %s, aby sobie z tym poradzić.", close_text = "Dokonano odkrycia.", can_cure = "Możesz wyleczyć tÄ™ chorobÄ™.", }, emergency = { locations = { [1] = "Palmiarni RoÅ›liny Chemiczne Rosiczka", [2] = "Lipnym Uniwersytecie", [3] = "Centrum Ogrodniczym Parakwiat", [4] = "Instytucie Naukowym Niebezpieczne Substancje", [5] = "Zajeździe Od Zmierzchu do Åšwitu", [6] = "Knajpie pod Å»abÄ… i Bykiem", [7] = "Salonie Pogrzebowym i Sklepie Monopolowym Radość", [8] = "Tajskim Sklepie z Curry", [9] = "Imperium Używana Petrochemia", }, num_disease = "Jest %d ludzi z %s wymagajÄ…cych natychmiastowej pomocy.", cure_possible_drug_name_efficiency = "Już masz niezbÄ™dny sprzÄ™t i umiejÄ™tnoÅ›ci. Masz lek, którego potrzebujÄ…. To %s, a lek jest skuteczny w %d procentach.", cure_not_possible_employ = "Musisz zatrudnić %s", free_build = "Jeżeli ci siÄ™ powiedzie, twoja reputacja wzroÅ›nie, jeżeli jednak zawiedziesz, twoja reputacja poważnie ucierpi.", cure_not_possible = "W tej chwili nie możesz wyleczyć tej choroby.", num_disease_singular = "Jest 1 osoba z %s i wymaga natychmiastowej pomocy..", cure_possible = "Masz odpowiedni sprzÄ™t i umiejÄ™tnoÅ›ci, wiÄ™c powinieneÅ› poradzić sobie z tym nagÅ‚ym wypadkiem.", choices = { accept = "Tak, jestem gotowy przyjąć nagÅ‚y wypadek. ", refuse = "Nie, odmawiam przyjÄ™cia nagÅ‚ego wypadku.", }, location = "W %s miaÅ‚ miejsce wypadek", cure_not_possible_build = "Musisz zbudować %s", cure_not_possible_build_and_employ = "Musisz zbudować %s i zatrudnić %s", bonus = "Za przyjÄ™cie tego wypadku dostaniesz maksymalnÄ… premiÄ™ w wysokoÅ›ci %d. Jeżeli zawiedziesz, twoja reputacja poważnie ucierpi.", }, choices = { decline_new_level = "Kontynuuj grÄ™ jeszcze chwilÄ™", accept_new_level = "Przejdź do nastÄ™pnego poziomu", return_to_main_menu = "Wróc do głównego menu", }, debug_fax = { text4 = "PARAMETRY : LEKARZE %d PIELĘGNIARKI %d OBSZAR %d POKOJE %d CENNIK %d", text5 = "WKÅAD : LEKARZE %d PIELĘGNIARKI %d OBSZAR %d POKOJE %d CENNIK %d PROCENT", text3 = "LICZBY : LEKARZE %d PIELĘGNIARKI %d OBSZAR %d POKOJE %d CENNIK %d", text9 = "KATASTROFY %d DOZWOLONE (MIES) %d (%d)REDUKCJA %d", close_text = "Tak, tak, tak!", text1 = "NAJLEPSZY WYNIK %d", text6 = "NASTĘPUJÄ„CE PARAMETRY RÓWNIEÅ» SÄ„ LICZONE", text8 = "UÅATWIENIA %d PORADY %d REDUKCJA %d", text2 = "SUMA LUDZI W SZPITALU %d PORÓWNUJÄ„C DO %d", text10 = "ZGONY %d DOZWOLONE (MIES) %d (%d) REDUKCJA %d", text11 = "LUDZI W TYM MIES %d", text7 = "REPUTACJA: %d OCZEKIWANA %d REDUKCJA %d", }, epidemic = { cover_up_explanation_1 = "JeÅ›li jednak spróbujesz to zataić, dostaniesz limit czasu na wyleczenie wszystkich pacjentów, nim o sprawie dowiedzÄ… siÄ™ wÅ‚adze.", cover_up_explanation_2 = "Jeżeli Inspektor Zdrowia przeprowadzi wizytacjÄ™ i odkryje epidemiÄ™, może powziąć zdecydowane kroki przeciwko tobie.", choices = { cover_up = "Wylecz wszystkich zainfekowanych pacjentów w wyznaczonym czasie, nim ktokolwiek opuÅ›ci szpital.", declare = "OgÅ‚oÅ› EpidemiÄ™. ZapÅ‚ać karÄ™ i przyjmij cios w reputacjÄ™.", }, disease_name = "Twoi Lekarze odkryli zaraźliwy szczep wirusa: %s.", declare_explanation_fine = "Jeżeli ogÅ‚osisz epidemiÄ™, zapÅ‚acisz karÄ™ %d, ucierpi twoja reputacja i wszyscy pacjenci zostanÄ… zaszczepieni automatycznie.", }, diagnosis_failed = { choices = { send_home = "Wypisz Pacjenta do domu.", take_chance = "Podejmij ryzyko leczenia.", wait = "Zatrzymaj pacjenta, aż wybudujesz wiÄ™cej gabinetów diagnostycznych.", }, situation = "PróbowaliÅ›my wszystkich urzÄ…dzeÅ„ na tym pacjencie i nadal nie jesteÅ›my pewni co mu dolega.", what_to_do_question = "Co powinniÅ›my zrobić z pacjentem?", partial_diagnosis_percentage_name = "Jest %d procent szans, że zidentyfikowaliÅ›my jaki typ %s dolega pacjentowi.", }, } drug_companies = { [1] = "U Goździkowej", [2] = "Proszki i Groszki", [3] = "Harda PiguÅ‚ka i Spółka", [4] = "RopiejÄ…cy Czopek S.A.", [5] = "MegaProch Corp.", } humanoid_name_ends = { [1] = "SMITH", [2] = "WICK", [3] = "CLIFFE", [4] = "SON", [5] = "INGTON", [6] = "BURY", [7] = "TON", [8] = "SON", [9] = "LEY", [10] = "BERRY", [11] = "BAUM", [12] = "LAN", [13] = "HAM", [14] = "SILL", [15] = "WIN", [16] = "LET", [17] = "ERS", [18] = "TON", [19] = "MOND", [20] = "MAN", [21] = "ELTON", [22] = "E", [23] = "MORE", [24] = "MOOR", [25] = "LET", [26] = "LIN", } menu_debug_overlay = { heat = " TEMPERATURA ", byte_0_1 = " BYTE 0 & 1 ", byte_6 = " BYTE 6 ", flags = " FLAGS ", byte_7 = " BYTE 7 ", byte_5 = " BYTE 5 ", byte_floor = " BYTE FLOOR ", positions = " POSITIONS ", byte_w_wall = " BYTE W WALL ", parcel = " PARCEL ", byte_n_wall = " BYTE N WALL ", none = " NONE ", } confirmation = { abort_edit_room = "W chwili obecnej budujesz lub edytujesz gabinet. Jeżeli wszystkie wymagane obiekty sÄ… w nim umieszczone, bÄ™dzie on ukoÅ„czony, w przeciwnym razie zostanie on usuniÄ™ty. Czy na pewno chcesz kontynuować?", return_to_blueprint = "Czy na pewno chcesz powrócić do trybu Projektowania?", restart_level = "Czy na pewno chcesz rozpocząć poziom od poczÄ…tku?", delete_room = "Czy na pewno chcesz usunąć ten gabinet?", quit = "WybraÅ‚eÅ› wyjÅ›cie z gry. Czy na pewno chcesz zakoÅ„czyć grÄ™?", needs_restart = "Zmiana tego ustawienia wymaga ponownego uruchomienia CorsixTH. Wszystkie niezapisane postÄ™py zostanÄ… utracone. Czy na pewno chcesz kontynuować?", overwrite_save = "Masz tu już zapisanÄ… grÄ™. Czy na pewno chcesz jÄ… nadpisać?", sack_staff = "Czy na pewno chcesz zwolnić tÄ™ osobÄ™?", replace_machine = "Czy na pewno chcesz wymienić %s za %d PLN?", } months = { [1] = "sty", [2] = "lut", [3] = "mar", [4] = "kwi", [5] = "maj", [6] = "cze", [7] = "lip", [8] = "sie", [9] = "wrz", [10] = "paź", [11] = "lis", [12] = "gru", } dynamic_info = { patient = { emergency = "NagÅ‚y wypadek: %s", guessed_diagnosis = "OdgadniÄ™ta diagnoza: %s ", diagnosis_progress = "PostÄ™p diagnozy", actions = { sent_to_other_hospital = "OdesÅ‚any gdzie indziej", prices_too_high = "Twoje ceny sÄ… za wysokie - idÄ™ do domu", no_gp_available = "Czekam, aż zbudujesz Gabinet Lekarski", waiting_for_treatment_rooms = "Czekam, aż zbudujesz gabinet, w którym mnie wyleczysz", dying = "Umiera!", no_diagnoses_available = "Brak możliwoÅ›ci dalszej diagnozy - idÄ™ do domu", epidemic_sent_home = "OdesÅ‚any do domu przez Inspektora", cured = "Wyleczony!", waiting_for_diagnosis_rooms = "Czekam, aż zbudujesz wiÄ™cej gabinetów diagnostycznych", epidemic_contagious = "Jestem zakażony", awaiting_decision = "Czeka na twojÄ… decyzjÄ™", sent_home = "Wypisany do domu", fed_up = "Ma dosyć i wychodzi", no_treatment_available = "Brak możliwoÅ›ci leczenia - idÄ™ do domu", on_my_way_to = "W drodze do %s", queueing_for = "W kolejce do %s", }, diagnosed = "Zdiagnozowano: %s ", }, health_inspector = "Inspektor Zdrowia", vip = "Wizytator - VIP", object = { times_used = "Liczba użyć %d", queue_size = "DÅ‚ugość kolejki %d", strength = "WytrzymaÅ‚ość %d", queue_expected = "Spodziewana kolejka %d", }, staff = { ability = "UmiejÄ™tnoÅ›ci", psychiatrist_abbrev = "Psych.", actions = { going_to_repair = "Idzie naprawić %s", fired = "Fired", waiting_for_patient = "Czeka na pacjenta", wandering = "Chodzi w kółko bez celu", heading_for = "Zmierza do %s", }, tiredness = "ZmÄ™czenie", }, } introduction_texts = { level17 = "Ostatnia rada - dbaj o ReputacjÄ™ - to ona przyciÄ…ga lub zniechÄ™ca do twojej placówki pacjentów z caÅ‚ej okolicy. " .. "JeÅ›li tylko uda ci siÄ™ nie zabić zbyt wielu ludzi i bÄ™dÄ… oni w miarÄ™ zadowoleni, nie powinieneÅ› mieć problemów z tym poziomem!//" .. "Teraz już musisz radzić sobie sam. Å»yczÄ™ powodzenia.", level1 = "Witaj w swoim pierwszym szpitalu!//" .. "Aby rozpocząć dziaÅ‚alność, postaw Biurko Recepcji, zbuduj Gabinet Lekarski i zatrudnij RecepcjonistkÄ™ oraz Lekarza. " .. "NastÄ™pnie zaczekaj, aż pojawiÄ… siÄ™ kolejne zadania." .. "Dobrym pomysÅ‚em jest budowa Gabinetu Psychiatrycznego oraz zatrudnienie Lekarza Psychiatry. " .. "Apteka i PielÄ™gniarka sÄ… także niezbÄ™dne w leczeniu pacjentów. " .. "Zwróć uwagÄ™ na ciężkie przypadki GÅ‚owowzdÄ™cia - Napowietrzalnia rozwiąże ten problem. " .. "BÄ™dziesz musiaÅ‚ wyleczyć 10 ludzi i upewnić siÄ™, że twoja reputacja nie spadnie poniżej 200.", level9 = "Skoro już wzbogaciÅ‚eÅ› konto Ministerstwa oraz ufundowaÅ‚eÅ› nowÄ… limuzynÄ™ samemu Ministrowi, możesz wracać do szpitala i nieść pomoc chorym i potrzebujÄ…cym. " .. "Tutaj napotkasz wiele różnych trudnoÅ›ci." .. "Z dobrze wyszkolonym personelem i gabinetami, nie powinieneÅ› siÄ™ niczego obawiać. " .. "Twój szpital musi być wart 200,000 PLN, a na konto ma trafić 400,000 PLN. " .. "Ani grosza mniej, bo nie ukoÅ„czysz poziomu.", level2 = "Na tym obszarze jest dużo wiÄ™cej rodzajów schorzeÅ„. " .. "UrzÄ…dź swój szpital tak, aby przyjÄ…Å‚ wiÄ™cej pacjentów oraz zaplanuj budowÄ™ DziaÅ‚u Badawczego. " .. "PamiÄ™taj o utrzymywaniu czystoÅ›ci i postaraj siÄ™ o możliwie najwyższÄ… reputacjÄ™ - bÄ™dziesz miaÅ‚ do czynienia z chorobami takimi jak ObwisÅ‚y JÄ™zyk, wiÄ™c potrzebujesz Przychodni Obrzynania. " .. "Możesz także zbudować Kardiograf, aby lepiej diagnozować nowe choroby. " .. "Oba te gabinety muszÄ… zostać wynalezione zanim bÄ™dziesz mógÅ‚ je zbudować. Teraz możesz także kupić dodatkowy grunt, aby rozwinąć swój szpital - w tym celu użyj Mapy Miasta. " .. "Twój cel to reputacja na poziomie 300, stan konta 10000 PLN, i 40 wyleczonych osób.", level7 = "BÄ™dziesz tu pod Å›cisÅ‚ym nadzorem Ministerstwa Zdrowia, dopilnuj wiÄ™c by twoje konto wykazywaÅ‚o duże zyski, a reputacja szybowaÅ‚a w górÄ™. " .. "Nie stać nas na niepotrzebne zgony - nie sÅ‚uży to biznesowi. " .. "Upewnij siÄ™, że personel jest w dobrej formie i że masz wszystkie wymagane urzÄ…dzenia. " .. "Wypracuj reputacjÄ™ 600 oraz 200,000 PLN na koncie.", level5 = "To bÄ™dzie szpital peÅ‚en życia, leczÄ…cy wiele różnych dolegliwoÅ›ci. " .. "Twoi Lekarze dopiero skoÅ„czyli studia, wiÄ™c trzeba bÄ™dzie wybudować salÄ™ szkoleniowÄ…, aby zdobyli niezbÄ™dne kwalifikacje. " .. "Masz tylko trzech Konsultantów szkolÄ…cych twój personel. Dbaj wiÄ™c o to, by byli zadowoleni. " .. "Zauważ także, że fundamenty szpitala znajdujÄ… siÄ™ na uskoku tektonicznym San Android. " .. "WystÄ™puje tu duże ryzyko trzÄ™sieÅ„ ziemi. " .. "TrzÄ™sienia mogÄ… w znacznym stopniu uszkodzić urzÄ…dzenia i zakłócić pracÄ™ szpitala. " .. "Aby odnieść sukces, dociÄ…gnij reputacjÄ™ do 400, zgromadź w banku okrÄ…gÅ‚e 50,000 PLN i wylecz 200 pacjentów.", level4 = "Staraj siÄ™ zadowolić swych pacjentów, obÅ‚suguj ich najlepiej jak potrafisz, utrzymaj również liczbÄ™ zgonów na absolutnym minimum." .. "StawkÄ… jest twoja reputacja, wiÄ™c dopilnuj żeby osiÄ…gnęła wysoki poziom. " .. "Nie martw siÄ™ za bardzo o pieniÄ…dze - uzyskasz je wraz z rosnÄ…cÄ… reputacjÄ…. " .. "BÄ™dziesz też mógÅ‚ szkolić swoich Lekarzy, aby zwiÄ™kszać ich umiejÄ™tnoÅ›ci. " .. "Wyszkolony personel bÄ™dzie lepiej zajmować siÄ™ pacjentami, którzy wyglÄ…dajÄ… na ciężej chorych niż pozostali. " .. "OsiÄ…gnij reputacjÄ™ na poziomie ponad 500.", level14 = "Jest jeszcze jedno wyzwanie - totalnie niespodziewany szpital niespodzianka. " .. "Jeżeli tutaj odniesiesz sukces, bÄ™dziesz zwyciÄ™zcÄ… wszech czasów. " .. "Tylko nie myÅ›l, że to bÄ™dzie buÅ‚ka z masÅ‚em, ponieważ jest to najtrudniejsze zadanie jakiemu stawisz czoÅ‚a. " .. "Powodzenia!", level15 = "Tak wyglÄ…dajÄ… podstawowe mechanizmy dziaÅ‚alnoÅ›ci szpitala.//" .. "Twoi Lekarze bÄ™dÄ… potrzebować wszelkiej możliwej pomocy do diagnozowania niektórych pacjentów. Możesz im pomóc budujÄ…c " .. "kolejne obiekty, takie jak Gabinet BadaÅ„ Podstawowych.", level8 = "Do ciebie należy zadanie urzÄ…dzenia wydajnego i opÅ‚acalnego szpitala. " .. "Ludzie tutaj sÄ… dość zamożni, wiÄ™c oskub ich z forsy jak tylko siÄ™ da. " .. "MiÅ‚o jest leczyć ludzi, ale pamiÄ™taj, że tak naprawdÄ™ liczÄ… siÄ™ PIENIÄ„DZE. " .. "Wyczyść tych chorych ludzi z pieniÄ™dzy. " .. "Aby ukoÅ„czyć ten poziom, zgromadź sumÄ™ 300,000 PLN.", level13 = "Twoje niewiarygodne umiejÄ™tnoÅ›ci w administrowaniu szpitala zwróciÅ‚y uwagÄ™ Trzeciego WydziaÅ‚u Tajnych SÅ‚użb Specjalnych. " .. "MajÄ… dla ciebie ekstra zadanie: w szpitalu zaatakowanym przez szczury potrzeba Terminatora. " .. "Musisz ustrzelić tyle szczurów, ile zdoÅ‚asz, zanim Dozorcy uprzÄ…tnÄ… baÅ‚agan. " .. "MyÅ›lisz, że poradzisz sobie z zadaniem?", demo = "Witaj w szpitalu demonstracyjnym!" .. "Niestety wersja demo zawiera tylko ten poziom. Jednakże, jest to wiÄ™cej niż wystarczajÄ…co, aby zajÄ…c ci trochÄ™ czasu!" .. "Napotkasz tutaj rozmaite choroby, które bÄ™dÄ… wymagaÅ‚y różnych gabinetów do ich wyleczenia. Od czasu do czasu moga tu również wystÄ…pić nagÅ‚e wypadki. BÄ™dziesz musiaÅ‚ równiez wynaleźć nowe pomieszczenia przy użyciu gabinetu badawczego." .. "Twoim celem jest zarobienie 100,000 PLN, mieć szpital warty 70,000 PLN i reputacjÄ™ 700, przy czym musisz wyleczyć co najmniej 75% swoich pacjentów." .. "Upewnij siÄ™, że Twoja reputacja nie spadnie poniżej 300 oraz, że nie zabijesz wiÄ™cej niż 40% pacjentów, albo przegrasz." .. "Powodzenia!", level16 = "Kiedy już przebadasz część pacjentów, bÄ™dziesz musiaÅ‚ zbudować pomieszczenia lecznicze oraz przychodnie, aby ich leczyć - " .. "dobrze jest zacząć od budowy Apteki. Do wydawania leków w Aptece bÄ™dzie potrzebna PielÄ™gniarka .", level6 = "Użyj caÅ‚ej swojej wiedzy, aby gÅ‚adko poprowadzić szpital, który przyniesie dobry zysk i poradzi sobie ze wszystkim, co przyniesie mu chore spoÅ‚eczeÅ„stwo. " .. "PowinieneÅ› uważać na panujÄ…cy tu klimat, gdyż sprzyja on rozwojowi bakterii i infekcji. " .. "JeÅ›li nie utrzymasz tego miejsca we wzorowej czystoÅ›ci, musisz siÄ™ liczyć z wybuchem epidemii wÅ›ród pacjentów. " .. "PowinieneÅ› zarobić 150,000 PLN a twój szpital osiÄ…gnąć wartość co najmniej 140,000 PLN.", level12 = "Masz teraz do czynienia z matkÄ… wszystkich wyzwaÅ„. " .. "Zachwycone twoimi sukcesami Ministerstwo ma dla ciebie zadanie specjalne. Masz zbudować kolejny wspaniaÅ‚y szpital, zarobić bajecznÄ… ilość kasy i zyskać gigantycznÄ… reputacjÄ™. " .. "Musisz także wykupić wszystkie możliwe grunty, wyleczyć wszystko (tak - wszystko) oraz zgarnąć wszystkie nagrody. " .. "I jak? Dasz radÄ™?" .. "Zarób 650,000 PLN, wylecz 750 ludzi oraz osiÄ…gnij reputacjÄ™ 800, aby wygrać.", level3 = "Tym razem urzÄ…dzisz swój szpital w zamożej okolicy. " .. "Ministerstwo Zdrowia ma nadziejÄ™, że osiÄ…gniesz tu znaczne zyski. " .. "Musisz wypracować dobrÄ… reputacjÄ™, jednak gdy szpital bÄ™dzie już dziaÅ‚aÅ‚, skoncentruj siÄ™ na zarabianiu tak dużo, jak tylko możliwe. " .. "Prawdopodobnie wystÄ…piÄ… tu też NagÅ‚e Wypadki. " .. "MajÄ… miejsce, gdy do szpitala przybywa duża grupa ludzi z tÄ… samÄ… dolegliwoÅ›ciÄ…. " .. "Wyleczenie ich wszystkich przed upÅ‚ywem czasu podnosi twojÄ… reputacjÄ™ i zapewnia premiÄ™. " .. "MogÄ… wystÄ…pić choroby takie jak Syndrom Króla. Przeznacz wiÄ™c pieniÄ…dze na budowÄ™ Sali Operacyjnej z OddziaÅ‚em tuż obok. " .. "Aby stanąć na wysokoÅ›ci zadania, zarób 20,000 PLN.", level10 = "Ministerstwo prosi, abyÅ› poza leczeniem chorób typowych dla tych stron, poÅ›wiÄ™ciÅ‚ nieco czasu na poprawÄ™ skutecznoÅ›ci leków. " .. "Zrzeszenie Pacjentów Bolibrzuch zgÅ‚osiÅ‚o kilka krytycznych uwag. Nie daj im powodów do skarg i dopilnuj, by leki byÅ‚y jak najskuteczniejsze. " .. "Nikt nie powinien też czynić zarzutów samemu szpitalowi. Zmniejsz poziom umieralnoÅ›ci. " .. "Dobrze bÄ™dzie, jeÅ›li zarezerwujesz trochÄ™ miejsca na GalaretownicÄ™. " .. "Aby wygrać, udoskonal wszystkie leki do 80% skutecznoÅ›ci, zdobÄ…dź reputacjÄ™ 650 i zbierz w banku 500,000 PLN. ", level11 = "DostaÅ‚eÅ› szansÄ™ budowy szpitala najdoskonalszego ze wszystkich. " .. "W tej niezwykle renomowanej okolicy Ministerstwo chciaÅ‚oby mieć szpital najlepszy z możliwych. " .. "Oczekujemy, że zarobisz mnóstwo pieniÄ™dzy, zyskasz znakomitÄ… reputacjÄ™ i poradzisz sobie ze wszelkimi ewentualnoÅ›ciami. " .. "To jest bardzo ważna robota. " .. "BÄ™dziesz musiaÅ‚ naprawdÄ™ siÄ™ czymÅ› wyróżnić. " .. "Trzeba ci wiedzieć, że w tych okolicach widywane jest UFO. Twój personel powinien być przygotowany na niespodziewanych goÅ›ci. " .. "Warunki wygranej to: wartość szpitala 240,000 PLN, 500,000 PLN na koncie i reputacja na poziomie co najmniej 700.", level18 = "", } humanoid_name_starts = { [1] = "GOLD", [2] = "HIGH", [3] = "AND", [4] = "BEN", [5] = "BAN", [6] = "BILL", [7] = "WY", [8] = "WAT", [9] = "POD", [10] = "KING", [11] = "BAR", [12] = "PET", [13] = "MAN", [14] = "BOY", [15] = "WAR", [16] = "JACK", [17] = "CRAB", [18] = "FISH", [19] = "WATER", [20] = "MIL", [21] = "BY", [22] = "FEN", [23] = "RICH", [24] = "SCOT", [25] = "BUR", [26] = "PIKE", [27] = "CUR", [28] = "WHIT", [29] = "BINN", [30] = "BONN", [31] = "POG", [32] = "WRIGHT", [33] = "KER", } transactions = { severance = "Odprawa", research = "Koszty BadaÅ„", eoy_trophy_bonus = "Trofeum za CaÅ‚y Rok", buy_object = "Zakup Przedmiotu", cure_colon = "Wyleczony:", epidemy_coverup_fine = "Kara za Tuszowanie Epidemii", final_treat_colon = "KoÅ„cowe Leczenie:", jukebox = "Dochody: Szafa GrajÄ…ca", loan_interest = "Koszty Pożyczki", overdraft = "Koszty Debetu", wages = "WypÅ‚aty", loan_repayment = "SpÅ‚ata Pożyczki", personal_bonus = "Premia Indywidualna", drug_cost = "Koszty Leków", cure = "Leczenie", heating = "Koszty Ogrzewania", treat_colon = "Leczenie:", compensation = "Odszkodowanie RzÄ…dowe", epidemy_fine = "Kara za EpidemiÄ™", buy_land = "Kupno Terenu", research_bonus = "Premia za Badania", general_bonus = "Premia Ogólna", deposit = "Depozyt Leczenia", eoy_bonus_penalty = "Premia/Kara za CaÅ‚y Rok", cheat = "Kasa za PrzekrÄ™ty", drinks = "Dochody: Automaty do Napoi", vaccination = "Szczepienie", advance_colon = "Awans:", vip_award = "Nagroda Pieniężna od VIPa", hire_staff = "Zatrudnienie Personelu", bank_loan = "Pożyczka Bankowa", machine_replacement = "Koszt Wymiany UrzÄ…dzeÅ„", emergency_bonus = "Premia za NagÅ‚e Wypadki", build_room = "Budowa Pomieszczenia", insurance_colon = "Ubezp. :", sell_object = "Sprzedaż Obiektu", } object = { chair = "KrzesÅ‚o", litter = "Åšmieci", sofa = "Sofa", operating_table = "Stół Operacyjny", bed2 = "Åóżko", bench = "Åawka", scanner = "Skaner", couch = "Kozetka", blood_machine = "Analizator Krwi", table1 = "Stół", video_game = "Gra Wideo", lamp = "Lampa", op_sink2 = "Zlew", door = "Drzwi", auto_autopsy = "Auto Autopsja", reception_desk = "Biurko Recepcji", hair_restorer = "Przeszczepiacz", projector = "Projektor", crash_trolley = "Wózek Lekarski", tv = "Telewizor", ultrascanner = "Ultraskaner", surgeon_screen = "Parawan", litter_bomb = "Bomba Åšmieciowa", inflator = "Napowietrzacz", table2 = "Stół", desk = "Biurko", pool_table = "Bilard", x_ray_viewer = "Monitor", radiation_shield = "Komputer SterujÄ…cy", bed = "Åóżko", swing_door2 = "Drzwi obrotowe", console = "Konsola", op_sink1 = "Zlew", bookcase = "Biblioteczka", drinks_machine = "Automat do napoi", comfortable_chair = "Fotel", skeleton = "Szkielet", computer = "Komputer", bin = "Åšmietnik", pharmacy_cabinet = "Szafka z Lekami", radiator = "Kaloryfer", cast_remover = "Usuwacz Gipsu", atom_analyser = "Analizator Atomów", plant = "RoÅ›liny", jelly_moulder = "Galaretownica", cardio = "Kardiograf", toilet = "Toalety", electrolyser = "Elektrolizer", fire_extinguisher = "GaÅ›nica", bed3 = "Åóżko", swing_door1 = "Drzwi obrotowe", lecture_chair = "KrzesÅ‚o ucznia", screen = "Parawan", toilet_sink = "Zlew", shower = "Prysznic", gates_of_hell = "Bramy PiekieÅ‚", entrance_right = "Prawe drzwi wejÅ›ciowe", entrance_left = "Lewe drzwi wejÅ›ciowe", slicer = "Krajalnica", dna_fixer = "Re-GEN-erator", x_ray = "Rentgen", cabinet = "Szafka z aktami", } letter = { [1] = { [1] = "Drogi %s//", [2] = "Cudownie! PoradziÅ‚eÅ› sobie wspaniale z prowadzeniem tego szpitala. My, grube ryby z Ministerstwa Zdrowia, chcemy wiedzieć czy byÅ‚byÅ› zainteresowany wiÄ™kszym projektem. Mamy pracÄ™, do której wydajesz siÄ™ być wrÄ™cz stworzony. Wynagrodzenie bÄ™dzie wynosiÅ‚o %d PLN. BÄ…dź Å‚askaw rozważyć naszÄ… propozycjÄ™.//", [3] = "Czy jesteÅ› zainteresowany pracÄ… w Szpitalu %s?", }, [2] = { [1] = "Drogi %s//", [2] = "WyÅ›mienicie! DokonaÅ‚eÅ› wielkiego postÄ™pu w swoim szpitalu. ChcielibyÅ›my przenieść ciÄ™ w inne miejsce, o ile masz ochotÄ™ na zmianÄ™ scenerii oraz nowe wyzwania. Nie musisz siÄ™ zgadzać, jednak to może być w sam raz coÅ› dla ciebie. Oferujemy pensjÄ™ w wysokoÅ›ci %d PLN//", [3] = "Czy chcesz pracÄ™ w Szpitalu %s?", }, [3] = { [1] = "Drogi %s//", [2] = "Przez ostatni czas bardzo pomyÅ›lnie zarzÄ…dzaÅ‚eÅ› tÄ… placówkÄ…. Uważamy, że możesz dokonać wielkich rzeczy i chcemy zaoferować ci pozycjÄ™ w innym szpitalu. Twoja pensja wyniesie %d PLN. JesteÅ›my przekonani, że pokochasz tamtejsze nowe wyzwania.//", [3] = "Czy chcesz przyjąć posadÄ™ w Szpitalu %s?", }, [4] = { [1] = "Drogi %s//", [2] = "Gratulacje! My w Ministerstwie, jesteÅ›my zachwyceni twoimi umiejÄ™tnoÅ›ciami. PrawdÄ™ mówiÄ…c, caÅ‚y Departament Zdrowia uważa ciÄ™ za zÅ‚otego chÅ‚opaka. Wydaje nam siÄ™ jednak, że wolaÅ‚byÅ› nieco wiÄ™ksze wyzwanie. Oferujemy ci pensjÄ™ w wysokoÅ›ci %d PLN, ale decyzja należy do ciebie.//", [3] = "Czy jesteÅ› zainteresowany pracÄ… dla Szpitala %s?", }, [5] = { [1] = "Drogi %s//", [2] = "Witamy ponownie. Respektujemy twoje życzenie, aby pozostać w tym uroczym szpitalu, jednak zachÄ™camy ciÄ™ do zmiany decyzji. Zaoferujemy ci pensjÄ™ w wysokoÅ›ci %dPLN, jeżeli odejdziesz do innego szpitala i dobrze go poprowadzisz.//", [3] = "Czy zechcesz siÄ™ teraz przenieść do Szpitala %s?", }, [6] = { [1] = "Drogi %s//", [2] = "Witamy. Wiemy jak szczęśliwy jesteÅ› w tej uroczej i Å›wietnie prowadzonej instytucji, jednak powinieneÅ› posunąć swÄ… karierÄ™ do przodu. Za przeniesienie bÄ™dziesz miaÅ‚ prawo żądać %d PLN wynagrodzenia. Co ty na to?//", [3] = "Czy zechcesz poprowadzić Szpital %s?", }, [7] = { [1] = "Drogi %s//", [2] = "DzieÅ„ dobry! Ministerstwo Zdrowia chce wiedzieć, czy zdecydowaÅ‚byÅ› siÄ™ opuÅ›cić obecny szpital. Zdajemy sobie sprawÄ™, że jest on uroczy i wspaniale prowadzony. Wiemy jednak, że sprostaÅ‚byÅ› wiÄ™kszym wyzwaniom, za które dostaÅ‚byÅ› pensjÄ™ w wysokoÅ›ci %d PLN.//", [3] = "Czy akceptujesz stanowisko w Szpitalu %s?", }, [8] = { [1] = "Drogi %s//", [2] = "Witamy ponownie. OdpowiedziaÅ‚eÅ› negatywnie na list, w którym oferowaliÅ›my ci czoÅ‚owe stanowisko w nowym Szpitalu, z wynagrodzeniem %d PLN. Wydaje nam siÄ™ jednak, że powinieneÅ› przemyÅ›leć tÄ™ decyzjÄ™. Tak siÄ™ skÅ‚ada, że mamy dla ciebie idealnÄ… pracÄ™.//", [3] = "Czy przyjmiesz stanowisko w Szpitalu %s?", }, [9] = { [1] = "Drogi %s//", [2] = "UdowodniÅ‚eÅ›, że jesteÅ› najlepszym administratorem szpitala w caÅ‚ej historii medycyny. Tak wspaniaÅ‚e osiÄ…gniÄ™cie nie mogÅ‚o zostać niezauważone, chcielibyÅ›my wiÄ™c powierzyć ci stanowisko Naczelnego Szefa Wszystkich Szpitali. Z tÄ… prestiżowÄ… posadÄ… wiąże siÄ™ pensja w wysokoÅ›ci %d PLN. Od teraz ludzie bÄ™dÄ… witali ciÄ™ brawami i okazywali uznanie, gdziekolwiek byÅ› siÄ™ nie znalazÅ‚.//", [3] = "DziÄ™kujemy za wszystko co zrobiÅ‚eÅ›. Niech ci sÅ‚uży ta ciepÅ‚a posadka.//", [4] = "", }, [10] = { [1] = "Drogi %s//", [2] = "Gratulujemy udanego kierowania wszystkimi placówkami jakie ci powierzyliÅ›my. DziÄ™ki tak wspaniaÅ‚ym wynikom caÅ‚y Å›wiat stoi przed tobÄ… otworem. Oferujemy ci pensjÄ™ w wysokoÅ›ci %d PLN oraz limuzynÄ™. W zamian prosimy tylko, byÅ› podróżowaÅ‚ z miasta do miasta, spotykaÅ‚ siÄ™ z wielbiÄ…cym ciÄ™ spoÅ‚eczeÅ„stwem i promowaÅ‚ ideÄ™ pÅ‚atnego szpitalnictwa.//", [3] = "JesteÅ›my z ciebie dumni. Nie ma wÅ›ród nas nikogo, kto nie doceniaÅ‚by twej ciężkiej pracy na rzecz ratowania życia.//", [4] = "", }, [11] = { [1] = "Drogi %s//", [2] = "Twoja wzorowa kariera stanowi inspiracjÄ™ dla każdego z nas. DziÄ™kujemy za prowadzenie tak wielu szpitali i Å›wietne radzenie sobie z każdym problemem. Pragniemy uhonorować ciÄ™ dożywotnim wynagrodzeniem w wysokoÅ›ci %d PLN. Czy zechciaÅ‚byÅ› podróżować odkrytÄ… limuzynÄ… od miasta do miasta i prowadzić wykÅ‚ady o tym, jak osiÄ…gnÄ…Å‚eÅ› tak wiele w tak krótkim czasie?//", [3] = "JesteÅ› przykÅ‚adem dla wszystkich myÅ›lÄ…cych istot i każdy bez wyjÄ…tku uważa ciÄ™ za bezcenny skarb.//", [4] = "", }, [12] = { [1] = "Drogi %s//", [2] = "Twoja kariera najlepszego zarzÄ…dcy szpitala od czasów Mojżesza dobiega koÅ„ca. MajÄ…c jednak na uwadze wpÅ‚yw jaki wywarÅ‚eÅ› na kameralny Å›wiat medycyny, Minister oferuje ci honorarium w wysokoÅ›ci %d PLN. Twoim jednym zadaniem byÅ‚oby otwierać festiwale w naszym imieniu, wodować statki i uczestniczyć w różnych pokazach. CaÅ‚y Å›wiat pada przed tobÄ… na kolana, a my skorzystalibyÅ›my na twojej popularnoÅ›ci!//", [3] = "Usilnie prosimy, przyjmij tÄ™ propozycjÄ™. To nie bÄ™dzie ciężka praca, a dostaniesz samochód i eskortÄ™ policji, gdziekolwiek siÄ™ wybierzesz.//", [4] = "", }, custom_level_completed = "Dobra robota! UkoÅ„czyÅ‚eÅ› wszystkie zadania w tym niestandardowym poziomie!", dear_player = "Drogi %s", return_to_main_menu = "Czy chcesz wrócić do głównego menu czy kontynuować grÄ™?", } high_score = { categories = { deaths = "LICZBA ZGONÓW", total_value = "CAÅKOWITA WARTOŚĆ", money = "NAJBOGATSZY", cures = "LICZBA WYLECZEŃ", visitors = "NAJWIĘCEJ ODWIEDZAJÄ„CYCH", staff_number = "NAJWIĘCEJ PERSONELU", cure_death_ratio = "STOSUNEK WYLECZENI/ZGONY", patient_happiness = "ZADOWOLENIE KLIENTÓW", staff_happiness = "ZADOWOLENIE PERSONELU", salary = "NAJLEPSZE ZAROBKI", clean = "NAJCZYSTSZY", }, player = "GRACZ", score = "WYNIK", pos = "POZ", best_scores = "SALA SÅAWY", worst_scores = "SALA WSTYDU", killed = "Zabici", } menu_file_save = { [1] = " GRA 1 ", [2] = " GRA 2 ", [3] = " GRA 3 ", [4] = " GRA 4 ", [5] = " GRA 5 ", [6] = " GRA 6 ", [7] = " GRA 7 ", [8] = " GRA 8 ", } build_room_window = { pick_room_type = "Wybierz Gabinet", pick_department = "Wybierz DziaÅ‚", cost = "Koszt: ", } menu = { debug = " BÅÄ„D ", display = " WYÅšWIETLANIE", file = " PLIK ", options = " OPCJE ", charts = " STATYSTYKI ", } map_editor_window = { pages = { inside = "WnÄ™trze", outside = "Na zewnÄ…trz", foliage = "Ulistowienie", hedgerow = "Å»ywopÅ‚ot", pond = "Sadzawka", road = "Droga", north_wall = "Åšciana północna", west_wall = "Åšciana zachodnia", helipad = "LÄ…dowisko", delete_wall = "UsuÅ„ Å›ciany", parcel_0 = "Parcela 0", parcel_1 = "Parcela 1", parcel_2 = "Parcela 2", parcel_3 = "Parcela 3", parcel_4 = "Parcela 4", parcel_5 = "Parcela 5", parcel_6 = "Parcela 6", parcel_7 = "Parcela 7", parcel_8 = "Parcela 8", parcel_9 = "Parcela 9", camera_1 = "Kamera 1", camera_2 = "Kamera 2", camera_3 = "Kamera 3", camera_4 = "Kamera 4", heliport_1 = "LÄ…dowisko 1", heliport_2 = "LÄ…dowisko 2", heliport_3 = "LÄ…dowisko 3", heliport_4 = "LÄ…dowisko 4", paste = "Wklej obszar", } } menu["player_count"] = "LICZBA GRACZY" menu_player_count = { players_1 = " 1 GRACZ ", players_2 = " 2 GRACZY ", players_3 = " 3 GRACZY ", players_4 = " 4 GRACZY ", } -------------------------------- UNUSED ----------------------------------- ------------------- (kept for backwards compatibility) ---------------------- options_window.change_resolution = "ZmieÅ„ rozdzielczość" tooltip.options_window.change_resolution = "ZmieÅ„ rozdzielczość okna do rozmiarów wpisanych po lewo" CorsixTH-0.61/CorsixTH/Lua/languages/russian.lua000066400000000000000000007540661321660673500215570ustar00rootroot00000000000000 --[[ Copyright (c) 2011 Sergei Larionov, Alexey Pinyagin Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Font("unicode") Language("РуÑÑкий", "Russian", "ru", "rus") Inherit("English") Encoding(utf8) --[[ Оглавление 1. Главное меню 2. Игровое меню и панель инÑтрументов 3. Отчеты 4. Окна интерфейÑа 5. Болезни 6. ФакÑÑ‹ 7. Советчик 8. ПиÑьма из миниÑтерÑтва (WIP) --]] -- 1. Главное меню main_menu = { new_game = "ÐÐ¾Ð²Ð°Ñ Ð¸Ð³Ñ€Ð°", continue = "продолжить игру", custom_level = "Дополнительные уровни", load_game = "Загрузить игру", options = "ÐаÑтройки", exit = "Выход", savegame_version = "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñохранений: ", version = "ВерÑиÑ: ", } new_game_window = { tutorial = "Обучение", easy = "Студент (Легкий)", medium = "Доктор (Средний)", hard = "КонÑультант (Трудный)", cancel = "Отмена", difficulty = "СложноÑть", option_on = "Вкл.", option_off = "Выкл.", caption = "КампаниÑ", player_name = "Ð˜Ð¼Ñ Ð˜Ð³Ñ€Ð¾ÐºÐ°", start = "Старт", } menu_options_warmth_colors = { choice_2 = " СИÐИЙ ЗЕЛЕÐЫЙ КРÐСÐЫЙ ", choice_1 = " КРÐСÐЫЙ ", choice_3 = " ЖЕЛТЫЙ ОРÐÐЖЕВЫЙ КРÐСÐЫЙ ", } date_format = { daymonth = "%1% %2:months%", } custom_game_window = { caption = "Дополнительные уровни", } load_game_window = { caption = "Загрузить игру", } save_game_window = { caption = "Сохранить игру", new_save_game = "Ðовое Ñохранение", } folders_window = { data_label = "Данные TH", music_location = "Выберите папку, которую хотите иÑпользовать под вашу Музыку", music_label = "MP3", new_th_location = "ЗдеÑÑŒ вы можете указать новую папку Ñ ÑƒÑтановкой оригинальной Theme Hospital. Как только вы выберете новую папку, игра будет перезапущена.", caption = "РаÑположение папок", screenshots_label = "Скриншоты", font_label = "Шрифт", savegames_label = "СохранениÑ", back = "Ðазад", savegames_location = "Выберите папку Ð´Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñохраненных игр.", screenshots_location = "Выберите папку Ð´Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñкриншотов.", } customise_window = { average_contents = "Дополнительные объекты", option_on = "Вкл.", paused = "СтроительÑтво на Паузе", option_off = "Выкл.", intro = "Проигрывать вÑтупительный ролик", caption = "ПользовательÑкие наÑтройки", back = "Ðазад", movies = "Общий контроль за видео", volume = "Кнопка ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти", aliens = "Пациенты - пришельцы", fractured_bones = "Сломаные коÑти", } options_window = { fullscreen = "Во веÑÑŒ Ñкран", height = "Ð’Ñ‹Ñота", width = "Ширина", change_resolution = "Сменить разрешение", back = "Ðазад", original_path = "Папка Ñ ÑƒÑтановленной оригинальной игрой Theme Hospital", browse = "Выбрать папку", folder = "ПÐПКИ", option_off = "Выкл.", apply = "Применить", option_on = "Вкл.", custom_resolution = "Выбрать...", caption = "ÐаÑтройки", cancel = "Отмена", customise = "ÐаÑтроить", audio = "Общие звуки", resolution = "Разрешение", language = "Язык в игре", } menu_list_window = { back = "Ðазад", } update_window = { caption = "ДоÑтупно обновление!", new_version = "ÐÐ¾Ð²Ð°Ñ Ð’ÐµÑ€ÑиÑ:", current_version = "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð’ÐµÑ€ÑиÑ: ", download = "Перейти на Ñтраницу загрузки", ignore = "ПропуÑтить и перейти в Главное меню", } tooltip = { main_menu = { exit = "Стой! ПожалуйÑта, не уходи!", custom_level = "Играть отдельный уровень", options = "Изменить вÑÑкие параметры", new_game = "Ðачать Ñовершенно новую игру Ñ Ñамого начала", continue = "продолжить поÑледнюю Ñохраненную игру", load_game = "Загрузить Ñохраненную ранее игру", }, new_game_window = { tutorial = "ПоÑтавьте галочку здеÑÑŒ, чтобы пройти режим обучениÑ", easy = "Ðажимайте Ñюда, еÑли вы новичок в подобных играх", medium = "Самый обычный Ñредний уровень ÑложноÑти", hard = "Выберите Ñтот вариант, еÑли хотите уÑложнить Ñебе игру", cancel = "Отмена", }, totd_window = { previous = "Показать предыдущий Ñовет", next = "Показать Ñледующий Ñовет", }, options_window = { fullscreen_button = "Включить/отключить полноÑкранный режим", change_resolution = "Сменить разрешение Ñкрана на указанное Ñлева", height = "Введите разрешение Ñкрана по вертикали", width = "Введите разрешение Ñкрана по горизонтали", language = "Выбрать %s Ñзык", back = "Закрыть окно наÑтроек", }, save_game_window = { new_save_game = "Введите Ð¸Ð¼Ñ Ð´Ð»Ñ Ñохраненной игры", save_game = "ПерезапиÑать игру «%s»", }, load_game_window = { load_game = "Загрузить игру «%s»", load_autosave = "Загрузить автоÑохранение", }, } -- 2. Игровое меню и панель инÑтрументов menu = { file = " Файл", options = " Опции", charts = " Отчеты", display = " ОТОБРÐЖЕÐИЕ ", debug = " ОТЛÐДКР", } menu_file = { save = " Сохранить", load = " Загрузить", restart = " Ðачать заново", quit = " Выйти в главное меню", } menu_options = { game_speed = " СкороÑть игры", sound_vol = " ГромкоÑть звука", music_vol = " ГромкоÑть музыки", edge_scrolling = " Прокрутка мышью", announcements = " СообщениÑ", lock_windows = " Ðе двигать окна", settings = " ÐаÑтройки", sound = " Звуки", announcements_vol = " ГромкоÑть Ñообщений", music = " Музыка", autosave = " ÐвтоÑохранение", jukebox = " Музыкальный автомат", twentyfour_hour_clock = " 24-Ñ… чаÑовой формат времени ", wage_increase = " ЗÐПРОСЫ О ЗÐРПЛÐТЕ ", warmth_colors = " ЦВЕТРОТОПЛЕÐИЯ ", adviser_disabled = " (SHIFT+A) ПОМОЩÐИК ", } menu_options_game_speed = { pause = " (P) Пауза", slowest = " (1) ЧерепашьÑ", slower = " (2) МедленнаÑ", normal = " (3) ОбычнаÑ", max_speed = " (4) БыÑтраÑ", and_then_some_more = " (5) Еще быÑтрее", } menu_options_wage_increase = { deny = " ЗÐПРЕТИТЬ ", grant = " РÐЗРЕШИТЬ ", } menu_charts = { statement = " Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ð°Ð½ÐºÐ°", casebook = " Лабораторный журнал", policy = " Политика", research = " ИÑÑледованиÑ", graphs = " Графики", staff_listing = " СпиÑок Ñотрудников", bank_manager = " УправлÑющий банка", status = " СоÑтоÑние", briefing = " ИнÑтруктаж", town_map = " (F4) карта города ", } menu_file_load = { [1] = " ИГРР1 ", [2] = " ИГРР2 ", [3] = " ИГРР3 ", [4] = " ИГРР4 ", [5] = " ИГРР5 ", [6] = " ИГРР6 ", [7] = " ИГРР7 ", [8] = " ИГРР8 ", } menu_debug_overlay = { heat = " TEMPERATURE ", byte_0_1 = " BYTE 0 & 1 ", byte_6 = " BYTE 6 ", flags = " FLAGS ", byte_7 = " BYTE 7 ", byte_5 = " BYTE 5 ", byte_floor = " BYTE FLOOR ", positions = " POSITIONS ", byte_w_wall = " BYTE W WALL ", parcel = " PARCEL ", byte_n_wall = " BYTE N WALL ", none = " NONE ", } menu_file_save = { [1] = " ИГРР1 ", [2] = " ИГРР2 ", [3] = " ИГРР3 ", [4] = " ИГРР4 ", [5] = " ИГРР5 ", [6] = " ИГРР6 ", [7] = " ИГРР7 ", [8] = " ИГРР8 ", } menu_display = { shadows = " ТЕÐИ ", mcga_lo_res = " MCGA ÐИЗ.РÐЗРЕШЕÐИЕ ", high_res = " ВЫСОКОЕ РÐЗРЕШЕÐИЕ ", } install = { title = "--------------------------------- УÑтановка CorsixTH ---------------------------------", th_directory = "CorsixTH Ð´Ð»Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ работы требуетÑÑ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ð°Ñ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð¸Ð³Ñ€Ð° Theme Hospital. Ðажмите кнопку и выберите папку, в которую уÑтановлена Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸Ð³Ñ€Ð°.", exit = "Выход", ok = "OK", cancel = "Отмена", } dynamic_info = { patient = { emergency = "Ð§Ñ€ÐµÐ·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð°Ñ ÑитуациÑ: %s", guessed_diagnosis = "Диагноз навÑкидку: %s ", diagnosis_progress = "ПроцеÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики", actions = { sent_to_other_hospital = "Отправлен в другую больницу", prices_too_high = "У Ð²Ð°Ñ Ñлишком дорого, - Ñ Ð¸Ð´Ñƒ домой", no_gp_available = "Ждет поÑтройки кабинета терапевта", waiting_for_treatment_rooms = "Ждет поÑтройки кабинета Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ", dying = "Умирает!", no_diagnoses_available = "Раз не знаете что Ñо мной, - Ñ Ð¸Ð´Ñƒ домой", epidemic_sent_home = "Отправлен домой инÑпектором", cured = "Здоров!", waiting_for_diagnosis_rooms = "Ждет поÑтройки диагноÑтичеÑкого кабинета", epidemic_contagious = "Заразный", awaiting_decision = "Ждет вашего решениÑ", sent_home = "Отправлен домой", fed_up = "Сыт по горло и уходит", no_treatment_available = "Раз не можете вылечить, - Ñ Ð¸Ð´Ñƒ домой", on_my_way_to = "Идет в %s", queueing_for = "Стоит в очереди в %s", }, diagnosed = "ПоÑтавлен диагноз: %s ", }, health_inspector = "ИнÑпектор", vip = "Шишка", object = { times_used = "ИÑпользовано раз: %d", queue_size = "Длина очереди: %d", strength = "ПрочноÑть: %d", queue_expected = "ОжидаетÑÑ Ð¾Ñ‡ÐµÑ€ÐµÐ´ÑŒ: %d", }, staff = { actions = { going_to_repair = "Идет чинить %s", fired = "Уволен", waiting_for_patient = "Ждет пациента", wandering = "СлонÑетÑÑ Ð±ÐµÐ· дела", heading_for = "Идет в %s", }, tiredness = "УÑталоÑть", psychiatrist_abbrev = "ПÑих.", ability = "СпоÑобноÑть", }, } handyman_window = { all_parcels = "Ð’Ñе корпуÑа", parcel = "КорпуÑ", } font_location_window = { caption = "Выберите шрифт (%1%)", } staff_title = { junior = "Студент", psychiatrist = "ПÑихиатр", consultant = "КонÑультант", surgeon = "Хирург", doctor = "Доктор", researcher = "ИÑÑледователь", nurse = "МедÑеÑтра", receptionist = "РегиÑтратор", general = "Общий", } tooltip = { toolbar = { bank_button = "Ð›ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° - управлÑющий банка, Ð¿Ñ€Ð°Ð²Ð°Ñ - Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ð°Ð½ÐºÐ°", balance = "Ваш баланÑ", reputation = "Ваша репутациÑ", date = "Дата", rooms = "Строить кабинеты", objects = "ОбÑтавлÑть коридор", edit = "Редактировать кабинеты/мебель", hire = "ÐанÑть перÑонал", staff_list = "Управление перÑоналом", town_map = "Карта", casebook = "Лабораторный журнал", research = "ИÑÑледованиÑ", status = "СоÑтоÑние", charts = "Графики", policy = "Политика", }, options_window = { select_language = "Выбрать Ñзык игры", select_resolution = "Выбрать новое разрешение", language_dropdown_item = "Выбрать %s Ñзык", audio_button = "Включить или выключить веÑÑŒ игровой звук", resolution = "Разрешение в котором игра должна работать", audio_toggle = "Переключатель вкл. или выкл.", fullscreen = "Игра должна работать в полноÑкранном или оконном режиме", apply = "ИÑпользовать введенное разрешение", cancel = "ВернутьÑÑ Ð±ÐµÐ· Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ", folder_button = "СвойÑтва Папки", customise_button = "Выможете изменить больше наÑтроек Ð´Ð»Ñ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ игрового опыта", }, menu_list_window = { save_date = "Ðажмите тут Ð´Ð»Ñ Ñортировки ÑпиÑка по дате поÑледнего изменениÑ", name = "Ðажмите тут Ð´Ð»Ñ Ñортировки ÑпиÑка по имени", }, cheats_window = { cheats = { earthquake = "Вызвать землетрÑÑение.", vip = "ПриглаÑить ВИП.", }, }, custom_game_window = { free_build = "Отметьте тут еÑли вы хотите играть без денег и уÑловий Ð´Ð»Ñ Ð¿Ð¾Ð±ÐµÐ´Ñ‹ и поражениÑ", }, new_game_window = { difficulty = "Выберите уровень ÑложноÑти игры", player_name = "Введите имÑ, которым вы хотите предÑтавлÑтьÑÑ Ð² игре", start = "Ðачать игры Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼Ð¸ наÑтройками", }, casebook = { cure_type = { drug = "Это лечение будет иÑпользовать лекарÑтво", unknown = "Ð’Ñ‹ вÑе ещё не знаете как лечить Ñто заболевание", }, cure_requirement = { hire_surgeon = "Ð’Ñ‹ должны нанÑть второго Хирурка Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸", not_possible = "Ð’Ñ‹ вÑе ещё не можете ÑправитьÑÑ Ñ Ñтим лечением", hire_staff_old = "Вам нужно нанÑть %s Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñтого лечениÑ", hire_surgeons = "Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ вам нужно нанÑть двух Хирургов", build_ward = "Вам необходимо поÑтроить Палату Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñтого лечениÑ", ward_hire_nurse = "Вам нужна МедÑеÑтра Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ в Палате Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñтого лечениÑ", }, }, main_menu = { load_menu = { load_slot = "ЗÐГРУЗИТЬ ИГРУ", empty_slot = "ПУСТО", }, continue = "Продолжить предыдущую игру", network = "Ðачать Ñетевую игру", quit = "Ð’Ñ‹ ÑобираетеÑÑŒ выйти из CorsixTH. Ð’Ñ‹ уверены в том что хотите именно Ñтого?", }, load_game_window = { load_game_number = "Загрузить игру %d", }, update_window = { download = "Перейти на Ñтраницу загрузки Ñамой поÑледней верÑии CorsixTH", ignore = "Игнорировать Ñто обновление. Ð’Ñ‹ будете Ñнова оповещены когда Ñнова запуÑтите CorsixTH", }, folders_window = { browse_font = "ПроÑмотреть другой файл шрифтаBrowse ( текущее меÑтоположение: %1% )", screenshots_location = "По умолчанию Скриншоты ÑохранÑÑŽÑ‚ÑÑ Ð² папке вмеÑте Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¼ файлом. ЕÑли Ñто не подходит, то вы можете выбрать его ÑамоÑтоÑтельно, проÑто перейдите в каталог, который вы хотите Ð´Ð»Ñ Ñтого иÑпользовать.", reset_to_default = "УÑтановить папку по умолчанию", back = "Закрть Ñто меню и вернутьÑÑ Ð² Меню ÐаÑтроек", music_location = "Выберете папку, где хранÑÑ‚ÑÑ Ñ„Ð°Ð¹Ð»Ñ‹ Ñ mp3 музыкой. ЕÑли вы ее только что Ñоздали, тогда перейдите в нее.", font_location = "МеÑтонахождение файла шрифта, ÑпоÑобного отображать Unicode кодировку, необходимую Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ñзыка. ЕÑли он не указан, то вы не можете выбрать Ñзыки, требующие Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ Ñимволов, чем были в оригинальной игре. Ðапример: РуÑÑкий и КитайÑкий ", savegames_location = "По умолчанию, папка Ð´Ð»Ñ Ñохраненных игр находитÑÑ Ð²Ð¼ÐµÑте Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¼ файлом. ЕÑли Ñто не удобно, тогда вы можете выбрать любую другую проÑто Ð¿ÐµÑ€ÐµÐ¹Ð´Ñ Ð² нее. ", browse_data = "Указать другое меÑто Ð½Ð°Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² Theme Hospital (текущее меÑтоположение: %1%)", browse = "ПроÑмотр папок", browse_screenshots = "Указать на другое меÑтоположение папки Ñо Ñкиншотами ( текущее меÑтоположение: %1% ) ", browse_music = "Укажите друго раÑположение папки Ñ ÐœÑƒÐ·Ñ‹ÐºÐ¾Ð¹ ( текущее меÑтоположение: %1% ) ", no_font_specified = "РаÑположение файла Ñо шрифтом ещё не указано!", not_specified = "МеÑтонахождение папки не определено!", browse_saves = "Укажите другое меÑтонахождение папки Ñ Ñохраненными играми ( текущее меÑтоположение: %1% ) ", default = "МеÑтоположение по-умолчанию", data_location = "Папка, куда уÑтановлена Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Theme Hospital, она необходима Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка CorsixTH", }, customise_window = { aliens = "К Ñожалению, пациенты Ñ Ð¸Ð½Ð¾Ð¿Ð»Ð°Ð½ÐµÑ‚Ð½Ð¾Ð¹ ДÐК плохо анимированы поÑтому в больницу они приходÑÑ‚ только по ÑкÑтренным ÑлучаÑм. ЕÑли вы хотите, чтобы они приходили так же как и обычные пациенты, выключите Ñту опцию.", average_contents = "ЕÑли вы хотите, чтобы игра запоминала какие дополнительные объекты вы уÑтанавливаете в том или ином кабинете, когда его Ñтроите, включите Ñту опцию.", back = "Закрыть Ñто меню и вернутьÑÑ Ð² Главное меню", movies = "Общий контроль за видеороликами. Это позволит вам отключить вÑе видеоролики.", fractured_bones = "Из-за плохой анимации, по-умолчанию мы отключили вÑех пациентов женщин Ñо Сломанными коÑÑ‚Ñми. Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы женщины Ñо Ñломанными коÑÑ‚Ñми приходили в вашу больницу, выключите Ñту опцию.", volume = "ЕÑли кнопка Ð¿Ð¾Ð½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти открывает журнал, включите Ñту опцию, чтобы изменить горÑчую клавишу журнала на Shift+C", intro = "Включить или выключить показ вÑтупительного ролика. Общий контроль за видеороликами должен быть включен, еÑли вы хотить видеть вÑтупление каждый раз, когда запуÑкаете CorsixTH", paused = "Ð’ оригинальном Theme Hospital иÑпользовать меню Ñверху Ñкрана можно было только еÑли поÑтавить игру на паузу. Мы оÑтавили Ñто по-умолчанию и в CorsixTH. ЕÑли вы включите Ñту опцию, то на паузе можно будет делать вÑе что угодно.", }, handyman_window = { happiness = "СчаÑтье", salary = "Зарплата", parcel_select = "КорпуÑ, в котором рабочий выполнÑет Ñвои функции, нажмите, чтобы изменить", tiredness = "УÑталоÑть", sack = "Уволить", close = "Закрыть", face = "Изображение рабочего", pick_up = "ПоднÑть", center_view = "Центрировать Ñкран на рабочем", name = "Ð˜Ð¼Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾", ability = "СпоÑобноÑти", }, research_policy = { research_progress = "ПрогреÑÑ, необходимый до Ñледующего Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð² Ñтой категории: %1%/%2%", no_research = "Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¸ÑÑледований в Ñтой категории не производитÑÑ", }, objects = { lamp = "Лампа: излучает Ñвет и позволÑет перÑоналу видеть.", op_sink1 = "33 РÐКОВИÐÐ", litter_bomb = "Заминированное пиÑьмо: Ñоботирует работу в больнице конкурента", x_ray = "27 РЕÐТГЕÐ-ÐППÐРÐТ", projector = "37 ПРОЭКТОР", radiation_shield = "28 РÐДИÐЦИОÐÐЫЙ ЩИТ", entrance_left = "58 ЛЕВÐЯ ВХОДÐÐЯ ДВЕРЬ", table2 = "12 СТОЛ", bed2 = "неиÑпользовалаÑÑŒ", console = "15 КОÐСОЛЬ УПРÐВЛЕÐИЯ", operating_table = "30 СТОЛ ДЛЯ ОПЕРÐЦИЙ", x_ray_viewer = "29 РЕÐТГЕРЭКРÐÐ", crash_trolley = "20 КРЭШ-ТЕЛЕЖКИ", shower = "54 ОБЕЗЗÐРÐЖИВÐЮЩИЙ ДУШ", electrolyser = "46 ЭЛЕКТРОЛИЗЕР", hair_restorer = "25 ВОССТÐÐОВИТЕЛЬ ВОЛОС", jelly_moulder = "47 РÐЗЖЕЛЕИВÐТЕЛЬ", couch = "18 КУШЕТКÐ", surgeon_screen = "35 ШИРМРДЛЯ ОПЕРÐЦИЙ", bed3 = "неиÑпользовалаÑÑŒ", dna_fixer = "23 ВОССТÐÐОВИТЕЛЬ ДÐК", chair = "Стул: пациенты ÑидÑÑ‚ на нем и обÑуждают Ñвое заболевание.", cast_remover = "24 УДÐЛИТЕРЬ ГИПСÐ", entrance_right = "59 ПРÐÐ’ÐЯ ВХОДÐÐЯ ДВЕРЬ", cardio = "13 КÐРДИО ÐППÐРÐТ", slicer = "26 ЯЗЫКОРЕЗКÐ", table1 = "Стол (УДÐЛЕÐ): Ñодержит коллекцию журналов, чтобы занÑть ожидающих пациентов.", ultrascanner = "22 ÐППÐРÐТ УЗИ", scanner = "14 СКÐÐЕР", op_sink2 = "34 РÐКОВИÐÐ", door = "Дверь: люди могут открывать и закрывать ее много раз.", swing_door2 = "53 РÐСПÐШÐÐЯ ДВУСТВОРЧÐТÐЯ ДВЕРЬ", screen = "16 ШИРМÐ", gates_of_hell = "48 ВОРОТРВ ÐД", blood_machine = "42 МÐШИÐРДЛЯ ЗÐБОРРКРОВИ", comfortable_chair = "61 КОМФОРТÐЫЙ СТУЛ", swing_door1 = "52 РÐСПÐШÐÐЯ ДВУСТВОРЧÐТÐЯ ДВЕРЬ", }, } misc = { hospital_open = "Открыть больницу", save_success = "Игра уÑпешно Ñохранена", save_failed = "Ошибка: не удалоÑÑŒ Ñохранить игру", low_res = "Ðизкое разрешение", no_heliport = "Либо Ð·Ð°Ð±Ð¾Ð»ÐµÐ²Ð°Ð½Ð¸Ñ Ð½Ðµ обнаружены, либо на Ñтой карте нет вертолетной площадки.", grade_adverb = { extremely = "ÑкÑтремально", mildly = "Ñредне", moderately = "умеренно", }, not_yet_implemented = "(еще не реализовано)", send_message = "Отправить Ñообщение игроку %d", out_of_sync = "РаÑÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð³Ñ€Ñ‹", balance = "Файл баланÑа:", load_failed = "Сохранение не загружено", mouse = "Мышь", done = "Готово", force = "УÑкорение", pause = "Пауза", send_message_all = "Отправить Ñообщение вÑем игрокам", } errors = { unavailable_screen_size = "УÑтановленный размер Ñкрана не поддерживаетÑÑ Ð² полноÑкранном режиме.", dialog_missing_graphics = "Сожалеем, но файлы демо верÑии не Ñодержат Ñтот диалог.", maximum_screen_size = "МакÑимальный размер Ñкрана не должен превышать 3000x2000.", load_prefix = "Ошибка загрузки игры: ", no_games_to_contine = "Ðет Ñохраненных игр", save_prefix = "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð³Ñ€Ñ‹: ", map_file_missing = "Ðе найден файл карты %s Ð´Ð»Ñ Ñтого уровнÑ!", minimum_screen_size = "Размер Ñкрана не должен быть менее, чем 640x480.", alien_dna = "ПоÑÑнение: не ÑущеÑтвует анимации как инопланетные пациенты ÑидÑÑ‚, открывают или ÑтучатÑÑ Ð² дверь и Ñ‚.п. Ð’ оригинальной Theme Hospital они при Ñтом превращалиÑÑŒ в обычного пациента и потом обратно. пациенты Ñ Ð¸Ð½Ð¾Ð¿Ð»Ð°Ð½ÐµÑ‚Ð½Ð¾Ð¹ ДÐК будут доÑтупны только еÑли они разрешены в файле Ñ ÑƒÑ€Ð¾Ð²Ð½ÐµÐ¼.", fractured_bones = "ПоÑÑнение: Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð² Ñо Ñломанными коÑÑ‚Ñми женÑкого пола плохаÑ", } -- 3. Отчеты staff_list = { morale = "Мораль", tiredness = "БодроÑть", skill = "КомпетентноÑть", total_wages = "ВСЕГО ЗÐРПЛÐТЫ", } bank_manager = { current_loan = "Текущий заем", balance = "БаланÑ", interest_payment = "Выплачиваемый процент", hospital_value = "СтоимоÑть гоÑпиталÑ", interest_rate = "ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ñтавка", inflation_rate = "Уровень инфлÑции", insurance_owed = "Выплаты Ñтраховщиков", statistics_page = { balance = "БаланÑ", details = "Причина", date = "Дата", current_balance = "Текущий баланÑ", money_in = "Приход", money_out = "РаÑход", }, } transactions = { severance = "Выходное поÑобие", research = "ФинанÑирование иÑÑледований", eoy_trophy_bonus = "Приз по итогам года", buy_object = "Покупка", cure_colon = "Лечение:", wages = "Выплата зарплат", personal_bonus = "Выплата премии", drug_cost = "Покупка лекарÑтв", heating = "Счет за отопление", treat_colon = "ОбÑледование:", hire_staff = "Прием на работу", bank_loan = "Заем у банка", insurance_colon = "Страховка:", sell_object = "Продажа", loan_interest = "Выплата процента по займу", loan_repayment = "Возврат по займу", buy_land = "Покупка учаÑтка", machine_replacement = "Замена машины", build_room = "ПоÑтройка", drinks = "Продажа напитков", cure = "Вылечено", eoy_bonus_penalty = "Призы/ÐÐ°ÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð² конце года", cheat = "Чит Ñ Ð´ÐµÐ½ÑŒÐ³Ð°Ð¼Ð¸", general_bonus = "Оплата Главной премии", emergency_bonus = "Оплата премии за ЭкÑтренные Ñлучаи", epidemy_coverup_fine = "Штраф за Ñокрытие Ñпидемий", research_bonus = "ÐŸÑ€ÐµÐ¼Ð¸Ñ Ð¸ÑÑледований", final_treat_colon = "Окончательное лечение: ", jukebox = "ВходÑщее: музыкальный автомат", vaccination = "ВакцинациÑ", vip_award = "Ð”ÐµÐ½ÐµÐ¶Ð½Ð°Ñ Ð¿Ñ€ÐµÐ¼Ð¸Ñ Ð¾Ñ‚ ВИП", epidemy_fine = "Штраф за Ñпидемию", compensation = "КомпенÑÐ°Ñ†Ð¸Ñ Ð¾Ñ‚ ПравительÑтва", deposit = "Депозит на лечение", advance_colon = "Дополнительно: ", overdraft = "Проценты по кредиту", } town_map = { number = "Ðомер учаÑтка", not_for_sale = "Ðе продаетÑÑ", price = "Цена учаÑтка", for_sale = "ПродаетÑÑ", owner = "Владелец уч-ка", area = "Площадь уч-ка", chat = "Окно детализации города", } high_score = { categories = { deaths = "Пациентов угроблено", total_value = "ÐžÐ±Ñ‰Ð°Ñ ÑтоимоÑть", money = "Самый богатый", cures = "Пациентов вылечено", visitors = "КоличеÑтво поÑетителей", salary = "Размер зарплаты", clean = "ЧиÑтота", patient_happiness = "УдовлетворенноÑть пациентов", cure_death_ratio = "Соотношение убитых и вылеченных", staff_happiness = "УдовлетворенноÑть перÑонала", staff_number = "Самое большое количеÑтво перÑонала", }, player = "ИГРОК", pos = "ПОЗ", best_scores = "ЗÐЛ СЛÐВЫ", killed = "Убито", worst_scores = "ЗÐЛ ПОЗОРÐ", score = "ОЧКИ", } research = { allocated_amount = "РаÑпределенное количеÑтво", funds_allocation = "РаÑпределение финаÑированиÑ", categories = { improvements = "УлучшениÑ", drugs = "ИÑÑледование лекарÑтв", diagnosis = "ДиагноÑтичеÑкое оборудование", cure = "Оборудование Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ", specialisation = "СпециализациÑ", }, } policy = { header = "Политика больницы", diag_termination = "ДлительноÑть обÑледованиÑ", sliders = { guess = "Диагноз наугад", send_home = "Отправить домой", stop = "Прекратить", staff_room = "Идти отдыхать", }, diag_procedure = "Процедура обÑледованиÑ", staff_rest = "ОтправлÑть перÑонал отдыхать", staff_leave_rooms = "Покидать кабинеты", } casebook = { sent_home = "Отправлено домой", deaths = "Жертвы", treatment_charge = "Ð’Ð·Ð¸Ð¼Ð°ÐµÐ¼Ð°Ñ Ð¿Ð»Ð°Ñ‚Ð°", reputation = "РепутациÑ", research = "СоÑредоточить иÑÑледованиÑ", cure = "ЛекарÑтво", cured = "Вылечено", earned_money = "Денег получено", cure_desc = { hire_surgeons = "Вам необходимо нанÑть хирургов.", improve_cure = "Улучшить лечение.", no_cure_known = "Ðет извеÑтного лечениÑ.", build_room = "Я рекомендую вам поÑтроить %s", hire_psychiatrists = "Ð’Ñ‹ должны нанÑть пÑихиатра.", build_ward = "Вам по прежнему нужно поÑтроить Палату.", hire_nurses = "Вам нужно нанÑть медÑеÑтер.", cure_known = "Вылечен.", hire_doctors = "Вам нужно нанÑть докторов.", }, } progress_report = { quite_unhappy = "Люди вами недовольны", header = "Отчет об уÑпехах", very_unhappy = "Люди Ð²Ð°Ñ Ð½Ðµ любÑÑ‚. УделÑйте им больше вниманиÑ", more_drinks_machines = "Пациенты умирают от жажды. ПоÑтавьте автоматы Ñ Ð½Ð°Ð¿Ð¸Ñ‚ÐºÐ°Ð¼Ð¸", too_cold = "У Ð²Ð°Ñ Ñлишком холодно, поÑтавьте еще батарей", too_hot = "ÐаÑтройте ÑиÑтему отоплениÑ, у Ð²Ð°Ñ Ñлишком жарко", percentage_pop = "Ð”Ð¾Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð²", win_criteria = "УÑÐ»Ð¾Ð²Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð±ÐµÐ´Ñ‹", free_build = "Свободное ÑтроительÑтво", } tooltip = { staff_list = { prev_person = "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтраница", next_person = "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница", detail = "Внимание к деталÑм", happiness = "ÐаÑколько ваши Ñотрудники довольны Ñвоей работой в целом", tiredness = "Показывает Ñколько ваши Ñотрудники еще Ñмогут поработать без отдыха", ability = "ÐšÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ð°ÑˆÐ¸Ñ… Ñотрудников в Ñреднем по больнице", happiness_2 = "Моральное ÑоÑтоÑние", ability_2 = "ПрофеÑÑиональные навыки", tiredness_2 = "Ð—Ð°Ð¿Ð°Ñ Ñил", researcher_train = "Ðа %d%% готов к получению диплома иÑÑледователÑ", surgeon_train = "Ðа %d%% готов к получению диплома хирурга", psychiatrist_train = "Ðа %d%% готов к получению диплома пÑихиатра", researcher = "Дипломированый иÑÑледователь", psychiatrist = "Дипломированый пÑихиатр", surgeon = "Дипломированый хирург", handymen = "Показать ÑпиÑок вÑех рабочих вашей больницы", nurses = "Показать ÑпиÑок вÑех медÑеÑтер вашей больницы", doctors = "Показать ÑпиÑок вÑех докторов вашей больницы", receptionists = "Показать ÑпиÑок вÑех региÑтраторов вашей больницы", pay_rise = "ПоднÑть оклад на 10%", bonus = "Выплатить премию в размере 10% от оклада", salary = "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Ð°", close = "Ðазад к игре", sack = "Вышвырнуть на улицу", doctor_seniority = "Ðвторитет доктора", view_staff = "Ðаблюдать за работой", skills = "Дополнительные умениÑ", total_wages = "ÐžÐ±Ñ‰Ð°Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Ð°", }, town_map = { close = "Закрыть", plants = "Показывать раÑтениÑ", fire_extinguishers = "Показывать огнетушители", people = "Показывать людей", balance = "БаланÑ", heat_dec = "Уменьшить температуру", heating_bill = "Счет за отопление", radiators = "Показывать батареи", objects = "Показывать мебель", heat_level = "Температура", heat_inc = "Увеличить температуру", }, policy = { diag_termination = "ОбÑледование пациента будет продолжатьÑÑ, пока доктора не будут на Ñтолько процентов уверены в диагнозе или пока у них не закончатÑÑ ÑредÑтва диагноÑтики", close = "Закрыть окно политики", staff_leave = "Ðажмите здеÑÑŒ чтобы разрешить Ñотрудникам покидать кабинеты и идти туда где нужна их помощь", diag_procedure = "ЕÑли доктор уверен в Ñвоем диагнозе менее, чем значение «Отправить домой», пациент будет отправлен домой. ЕÑли же шанÑÑ‹ выше чем «Диагноз наугад», он будет отправлен на лечение. Ð’ оÑтальных ÑлучаÑÑ… потребуетÑÑ Ð²Ð°ÑˆÐµ решение", staff_rest = "ÐаÑколько уÑталым должен быть Ñотрудник, чтобы получить право на отдых", staff_stay = "Ðажмите здеÑÑŒ чтобы Ñотрудники оÑтавалиÑÑŒ в тех кабинетах, где вы их поÑтавили", }, bank_manager = { graph = "График ожидаемых выплат от %s", close = "Закрыть окно", hospital_value = "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ ÑтоимоÑть гоÑÐ¿Ð¸Ñ‚Ð°Ð»Ñ Ð²Ð¼ÐµÑте Ñо вÑем оборудованием", graph_return = "ВернутьÑÑ Ð½Ð°Ð·Ð°Ð´", current_loan = "Размер текущего займа", borrow_5000 = "ЗанÑть у банка 5000$", balance = "Ваш баланÑ", interest_payment = "ЕжемеÑÑчные выплаты по займу", inflation_rate = "Размер инфлÑции за год", interest_rate = "Годовой процент по займу", repay_5000 = "Отдать банку 5000$", show_graph = "Показать график ожидаемых выплат от %s", insurance_owed = "Сколько денег вам должны %s", }, casebook = { sent_home = "КоличеÑтво пациентов, которым было отказано в лечении", increase = "ПоднÑть ÑтоимоÑть", decrease = "Снизить ÑтоимоÑть", up = "Вверх", down = "Вниз", reputation = "ÐžÐ±Ñ‰Ð°Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ñтой практики", research = "Ðажмите чтобы ÑоÑредоточить бюджет Ñпециальных иÑÑледований на Ñтой проблеме", close = "Закрыть", earned_money = "Ð’Ñего заработано на Ñтом", deaths = "КоличеÑтво летальных иÑходов", cured = "КоличеÑтво вылеченных", treatment_charge = " СтоимоÑть Ð´Ð»Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð²", cure_type = { psychiatrist = "Это лечит пÑихиатр", drug_percentage = "От Ñтого еÑть лекарÑтво. Ваше Ñффективно на %d%", machine = "Ð”Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ Ñпециальное оборудование", surgery = "Лечение требует операции", }, cure_requirement = { possible = "Ð’Ñ‹ можете Ñто вылечить", build_room = "Вам нужно поÑтроить Ñпециальный кабинет Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ", research_machine = "Ð”Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ изобреÑти машину", hire_staff = "Вам нужно нанÑть ÑпециалиÑта Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ", }, }, status = { population_chart = "Показывает Ñоотношение чиÑла поÑетителей в разных больницах", percentage_cured = "Вам нужно вылечить %d% вÑех поÑетителей. Ðа данный момент вам удалоÑÑŒ вылечить %d%", num_cured = "Вам нужно вылечить %d людей. Пока вам удалоÑÑŒ иÑцелить %d", thirst = "Средний уровень жажды людей в больнице", close = "Закрыть окно", win_progress_own = "Показать уÑпехи вашей больницы", reputation = "Ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° доÑтигать %d. Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¾Ð½Ð° ÑоÑтавлÑет %d", population = "ДобейтеÑÑŒ чтобы к вам приходили лечитьÑÑ %d%% вÑех пациентов", warmth = "СреднÑÑ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð° по больнице", percentage_killed = "ПоÑтарайтеÑÑŒ не убивать более чем %d%% поÑетителей. Ðа данный момент вы угробили %d%%", balance = "Ðа вашем Ñчету должно быть не менее %d$. Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ñƒ Ð²Ð°Ñ %d$", value = "Ваша больница должна Ñтоить %d$. Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¾Ð½Ð° Ñтоит %d$", win_progress_other = "Показать как идут дела у %s", happiness = "Общее ÑоÑтоÑние пациентов в вашей больнице", }, } -- 4. Другие окна -- 4.1 СтроительÑтво и обÑтановка build_room_window = { pick_room_type = "Выберите тип кабинета", pick_department = "Выберите кабинет", cost = "СтоимоÑть: ", } room_classes = { diagnosis = "ДиагноÑтика", treatment = "Процедуры", clinics = "Лечение", facilities = "Служебные комнаты", } rooms_short = { gps_office = "Кабинет терапевта", general_diag = "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтика", ultrascan = "УльтраÑканер", research_room = "ИÑÑледовательÑкий отдел", fracture_clinic = "Лечение переломов", destroyed = "Разрушено", staffroom = "Комната отдыха", jelly_vat = "Лечение ожелениÑ", scanner = "Сканер", decontamination = "Обеззараживание", pharmacy = "Ðптека", cardiogram = "КардиографиÑ", reception = "РегиÑтратура", training_room = "ЛекционнаÑ", corridor_objects = "ОбÑтановка коридоров", operating_theatre = "ОперационнаÑ", dna_fixer = "ИÑправление ДÐК", ward = "Палата", psychiatric = "ПÑихиатриÑ", hair_restoration = "ВоÑÑтановление волоÑ", inflation = "Ðадувание", tongue_clinic = "Языкорезка", toilets = "Туалет", electrolysis = "ЭлектротерапиÑ", x_ray = "Рентген", blood_machine = "Ðнализатор крови", } rooms_long = { ultrascan = "Кабинет ультраÑканированиÑ", research_room = "ИÑÑледовательÑкий отдел", general = "Общий", gps_office = "Кабинет терапевта", inflation = "Кабинет надуваниÑ", staffroom = "Комната отдыха", jelly_vat = "Кабинет Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð¶ÐµÐ»ÐµÐ½Ð¸Ñ", scanner = "Кабинет ÑканированиÑ", emergency = "РеанимациÑ", decontamination = "Кабинет обеззараживаниÑ", corridors = "Коридоры", cardiogram = "Кабинет кардиографии", ward = "Палата", training_room = "Ð›ÐµÐºÑ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð°", psychiatric = "Кабинет пÑихиатра", operating_theatre = "ОперационнаÑ", dna_fixer = "Кабинет иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð”ÐК", tongue_clinic = "Кабинет Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð¸Ñ Ñзыка", hair_restoration = "Кабинет воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð»Ð¾Ñ", general_diag = "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтика", pharmacy = "Ðптека", fracture_clinic = "Кабинет Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ»Ð¾Ð¼Ð¾Ð²", toilets = "Туалет", electrolysis = "Кабинет Ñлектротерапии", x_ray = "Рентген-кабинет", blood_machine = "Кабинет анализа крови", } buy_objects_window = { price = "СтоимоÑть: ", choose_items = "Выберите предметы", total = "Итого: ", } object = { chair = "Стул", litter = "МуÑор", sofa = "Диван", operating_table = "Операционный Ñтол", bench = "СкамьÑ", scanner = "Сканер", couch = "Кушетка", blood_machine = "Ðнализатор крови", video_game = "Видеоигра", op_sink2 = "Раковина", door = "Дверь", auto_autopsy = "ÐвтовÑкрывалка", reception_desk = "РегиÑтратура", hair_restorer = "ОволоÑитель", projector = "Проектор", crash_trolley = "Ð¡ÐºÐ¾Ñ€Ð°Ñ Ñ‚ÐµÐ»ÐµÐ¶ÐºÐ°", tv = "Ящик", ultrascanner = "УльтраÑканер", surgeon_screen = "ХирургичеÑÐºÐ°Ñ ÑˆÐ¸Ñ€Ð¼Ð°", litter_bomb = "МуÑÐ¾Ñ€Ð½Ð°Ñ Ð±Ð¾Ð¼Ð±Ð°", inflator = "Ðадуватель", desk = "ПиÑьменный Ñтол", pool_table = "БильÑрд", x_ray_viewer = "ÐеготоÑкоп", radiation_shield = "Защита от излучениÑ", bed = "Койка", swing_door2 = "ДвуÑÑ‚Ð²Ð¾Ñ€Ñ‡Ð°Ñ‚Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ", console = "КонÑоль", op_sink1 = "Раковина", bookcase = "Книжный шкаф", drinks_machine = "Ðвтомат Ñ Ð³Ð°Ð·Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹", comfortable_chair = "Удобное креÑло", skeleton = "Скелет", computer = "Компьютер", bin = "Козина Ð´Ð»Ñ Ð¼ÑƒÑора", pharmacy_cabinet = "Ðптечный шкаф", radiator = "БатареÑ", cast_remover = "РазгипÑователь", atom_analyser = "Ðтомный анализатор", plant = "РаÑтение", jelly_moulder = "Форма Ð´Ð»Ñ Ð¶ÐµÐ»Ðµ", cardio = "Ð‘ÐµÐ³Ð¾Ð²Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°", toilet = "Туалет", electrolyser = "Электролизатор", fire_extinguisher = "Огнетушитель", swing_door1 = "ДвуÑÑ‚Ð²Ð¾Ñ€Ñ‡Ð°Ñ‚Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ", lecture_chair = "Лекционный Ñтул", screen = "Ширма", toilet_sink = "Раковина", shower = "Душ", gates_of_hell = "Врата в ад", slicer = "Языкорезка", dna_fixer = "ИÑправитель ДÐК", x_ray = "Рентген", cabinet = "Картотека", lamp = "Лампа", entrance_left = "Ð›ÐµÐ²Ð°Ñ Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ", table2 = "Стол", bed2 = "Кровать", bed3 = "Кровать", entrance_right = "ÐŸÑ€Ð°Ð²Ð°Ñ Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ", table1 = "Стол", } room_descriptions = { gp = { [1] = "Кабинет терапевта//", [2] = "Это оÑновной диагноÑтичеÑкий кабинет в вашей больнице. Ð’Ñе новые пациенты приходÑÑ‚ Ñюда чтобы узнать, что Ñ Ð½Ð¸Ð¼Ð¸ не так. ОтÑюда они отправлÑÑŽÑ‚ÑÑ Ð½Ð° дальнейшую диагноÑтику или Ñразу на лечение. Вам может понадобитьÑÑ Ð½ÐµÑколько таких кабинетов, еÑли пациентов будет Ñлишком много. Чем проÑторнее помещение, и чем больше в нем предметов, тем выше преÑтиж работающего здеÑÑŒ доктора. Впрочем, Ñто отноÑитÑÑ ÐºÐ¾ вÑем кабинетам.//", [3] = "Ð’ кабинете терапевта может работать любой доктор.", }, general_diag = { [1] = "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтика//", [2] = "Сюда направлÑÑŽÑ‚ÑÑ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ñ‹, которым требуетÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтика. ЗдеÑÑŒ у врача значительно больше инÑтрументов Ð´Ð»Ñ Ð¾Ð±ÑледованиÑ, чем у терапевта. Пациент вернетÑÑ Ðº терапевту Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð°Ð¼Ð¸ обÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ñтановки диагноза.//", [3] = "Ð’ кабинете общей диагноÑтики может работать любой доктор.", }, ultrascan = { [1] = "УльтраÑканер//", [2] = "УльтраÑканер - Ñто практичеÑки вершина прогреÑÑа диагноÑтичеÑкого оборудованиÑ. Он очень дорогой, но он того Ñтоит.//", [3] = "УльтраÑканеру Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñ†ÐµÐ½Ð½Ð¾Ð¹ работы требуетÑÑ Ð´Ð¾ÐºÑ‚Ð¾Ñ€. Также, ему требуетÑÑ Ð¾Ð±Ñлуживание.", }, fracture_clinic = { [1] = "Лечение переломов.//", [2] = "Сюда приходÑÑ‚ пациенты Ñ Ð¿Ð¾Ð»Ð¾Ð¼Ð°Ð½Ð½Ñ‹Ð¼Ð¸ коÑÑ‚Ñми. ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¼Ð¾Ñ‰Ð½Ñ‹Ð¹ промышленный лазер, разгипÑÐ¾Ð²Ð¾Ñ‡Ð½Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð° Ñрезает заÑтывший гипÑ, что может вызывать незначительную агонию у пациента.//", [3] = "Ð’ Ñтом кабинете работает медÑеÑтра. Машине также требуетÑÑ Ñ‡Ð°Ñтый ремонт.", }, inflation = { [1] = "Кабинет надуваниÑ//", [2] = "Ð’ кабинет Ð½Ð°Ð´ÑƒÐ²Ð°Ð½Ð¸Ñ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‚ пациентов Ñ Ð²Ñ‹Ð²Ð¾Ð´Ñщим из ÑÑ‚Ñ€Ð¾Ñ Ð¸ очень болезненным недугом раздутой головы. ЗдеÑÑŒ их безразмерные черепа хлопнут и немедленно Ñнова надуют до точно раÑÑчитанного нормального давлениÑ.//", [3] = "Ð’ кабинете Ð½Ð°Ð´ÑƒÐ²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ работать любой доктор. Ðппарату требуетÑÑ Ñ€ÐµÐ³ÑƒÐ»Ñрный ремонт.", }, jelly_vat = { [1] = "Лечение ожелениÑ//", [2] = "Пациенты, Ñтрадающие забавной болезнью ожелениÑ, должны дотрÑÑтиÑÑŒ до Ñтого кабинета, где их помеÑÑ‚ÑÑ‚ в Ñпециальный бак. МедицинÑÐºÐ°Ñ Ð½Ð°ÑƒÐºÐ° не знает, что там проиÑходит, но поÑле процедуры им ÑтановитÑÑ Ð»ÑƒÑ‡ÑˆÐµ.//", [3] = "Ð’ Ñтом кабинете может работать любой доктор. Вам также понадобитÑÑ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¹ Ð´Ð»Ñ Ð¾Ð±ÑÐ»ÑƒÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹.", }, scanner = { [1] = "Сканер//", [2] = "При помощи Ñтого Ñложного Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ поÑтавить очень точный диагноз.//", [3] = "Со Ñканером может работать любой доктор. Это уÑтройÑтво требует регулÑрного обÑлуживаниÑ.", }, blood_machine = { [1] = "Ðнализатор крови//", [2] = "Эта машина разделÑет кровь пациента на клетки и выÑÑнÑет что Ñ Ð½Ð¸Ð¼Ð¸ не в порÑдке.//", [3] = "С анализатором крови может работать любой доктор. Это уÑтройÑтво требует регулÑрного обÑлуживаниÑ.", }, pharmacy = { [1] = "Ðптека//", [2] = "Пациенты, которым поÑтавлен диагноз и пропиÑано лекарÑтво, получают его в аптеке. ПоÑкольку многие болезни излечиваютÑÑ Ð¼ÐµÐ´Ð¸ÐºÐ°Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸, Ñо временем тут может Ñтать теÑновато, и вам понадобитÑÑ ÐµÑ‰Ðµ одна аптека.//", [3] = "Ð’ аптеке работает медÑеÑтра.", }, cardiogram = { [1] = "КардиографиÑ//", [2] = "ЗдеÑÑŒ пациентов проверÑÑŽÑ‚ на наличие болезней Ñердца и проводÑÑ‚ ÑтреÑÑ-теÑÑ‚ на беговой дорожке. Затем Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ‹Ð¼Ð¸ результатами возвращают к терапевту.//", [3] = "Ð’ кардиографии может работать любой доктор. Беговой дорожке требуетÑÑ Ñ€ÐµÐ³ÑƒÐ»Ñрное обÑлуживание.", }, ward = { [1] = "Палата//", [2] = "Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ñ‹ ÑодержатÑÑ Ð·Ð´ÐµÑÑŒ под наблюдением медÑеÑтры. Также, тут они готовÑÑ‚ÑÑ Ðº операции.//", [3] = "Ð’ палате работает медÑеÑтра.", }, psych = { [1] = "ПÑихиатриÑ//", [2] = "Пациенты, Ñтрадающие от душевных недугов, должны поÑетить кабинет пÑихиатра. Доктор обÑледует пациентов, и, еÑли у них не вÑе в порÑдке Ñ Ð³Ð¾Ð»Ð¾Ð²Ð¾Ð¹, предложит прилечь на кушетку и побеÑедовать.//", [3] = "Ð’ Ñтом кабинете может работать только Ñпециально обученный пÑихиатр.", }, staff_room = { [1] = "Комната перÑонала//", [2] = "ПоÑле Ñ‚Ñжелого рабочего днÑ, ваши Ñотрудники могут поÑетить Ñту комнату, чтобы отдохнуть и раÑÑлабитьÑÑ. УÑталые медики тормозÑÑ‚, хотÑÑ‚ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Ñ‹ и могут даже уволитьÑÑ. Также, они начинают чаще ошибатьÑÑ. УбедитеÑÑŒ, что в вашей комнате доÑтаточно меÑта и развлечений Ð´Ð»Ñ Ð½ÐµÑкольких человек Ñразу.", }, operating_theatre = { [1] = "ОперационнаÑ//", [2] = "Ð’ Ñтом важном помещении излечивают целый Ñ€Ñд заболеваний. ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть проÑторной и хорошо оÑнащенной. Это очень Ð²Ð°Ð¶Ð½Ð°Ñ Ñ‡Ð°Ñть любой больницы.//", [3] = "Ð’ операционной должны работать два квалифицированных хирурга.", }, training = { [1] = "ЛекционнаÑ//", [2] = "Ваши доктора могут повышать Ñвою квалификацию в Ñтой комнате. Лектор Ñ Ð´Ð¸Ð¿Ð»Ð¾Ð¼Ð¾Ð¼ хирурга, пÑихиатра или иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ‚ научить Ñвоих коллег вÑему, что знает. Те же, кто уже имеет диплом, здеÑÑŒ могут научитьÑÑ Ð»ÑƒÑ‡ÑˆÐµ применÑть Ð·Ð½Ð°Ð½Ð¸Ñ Ð½Ð° практике.//", [3] = "Читать лекции здеÑÑŒ может только конÑультант.", }, dna_fixer = { [1] = "ВоÑÑтановление ДÐК//", [2] = "Пациенты, имевшие неÑчаÑтье войти в контакт Ñ Ð¿Ñ€Ð¸ÑˆÐµÐ»ÑŒÑ†Ð°Ð¼Ð¸ из других миров, должны пройти процедуру починки ДÐК. ПоÑкольку воÑÑтановитель ДÐК – машина ÑÐ»Ð¾Ð¶Ð½Ð°Ñ Ð¸ выÑокотехнологичнаÑ, наÑтоÑтельно рекомендуем размеÑтить в кабинете огнетушитель, на вÑÑкий пожарный.//", [3] = "ВоÑÑтановитель требует регулÑрного обÑлуживаниÑ. И работать Ñ Ð½Ð¸Ð¼ могут только доктора Ñ Ð´Ð¸Ð¿Ð»Ð¾Ð¼Ð¾Ð¼ иÑÑледователÑ.", }, research = { [1] = "ИÑÑледовательÑкий отдел//", [2] = "ЗдеÑÑŒ ÑовершаютÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¸ улучшаютÑÑ ÑущеÑтвующие лекарÑтва и методы лечениÑ. Это очень полезный отдел, его работа творит чудеÑа в деле ÑƒÐ»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ ÑтатиÑтики.//", [3] = "Ð’ иÑÑледовательÑком отделе могут работать только доктора Ñ Ð´Ð¸Ð¿Ð»Ð¾Ð¼Ð¾Ð¼ иÑÑледователÑ.", }, hair_restoration = { [1] = "ВоÑÑтановление волоÑ//", [2] = "Машина воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÐµÐ»Ñ Ð²Ð¾Ð»Ð¾Ñ â€“ поÑледнÑÑ Ð½Ð°Ð´ÐµÐ¶Ð´Ð° Ð´Ð»Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð², Ñтрадающих плешивоÑтью в терминальной Ñтадии. При помощи Ñтой машины доктор может быÑтро наÑадить Ñовершенно новый волоÑÑной покров.//", [3] = "Ð’ кабинете оволоÑÐ¸Ñ‚ÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ‚ работать любой доктор. Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚ времени машине требуетÑÑ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚.", }, electrolysis = { [1] = "Комната Ñлектролиза//", [2] = "Больные оволоÑением направлÑÑŽÑ‚ÑÑ Ð² Ñту комнату, где ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°, Ð½Ð°Ð·Ñ‹Ð²Ð°ÐµÐ¼Ð°Ñ Ñлектролизатором, уничтожает излишние волоÑÑ‹ и ÑлектричеÑки запаивает поры при помощи ÑоÑтава, Ñильно напоминающего цемент.//", [3] = "Ð’ кабинете Ñлектролиза может работать любой доктор. Машина также требует обÑлуживаниÑ.", }, slack_tongue = { [1] = "Лечение длинного Ñзыка//", [2] = "Пациенты Ñ Ñтим неутешительным диагнозом направлÑÑŽÑ‚ÑÑ Ð² Ñту комнату Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ. При помощи выÑокоточного оборудованиÑ, квалифицированный ÑпециалиÑÑ‚ возвращает Ñзыку нормальные размер и форму, а пациенту – хорошее ÑамочувÑтвие.//", [3] = "ЗдеÑÑŒ может работать любой доктор. Машину также надо иногда чинить.", }, toilets = { [1] = "Туалет//", [2] = "Ð¡Ð»ÐµÐ´ÑƒÑ Ð·Ð¾Ð²Ñƒ природы, пациентам надо иногда облегчитьÑÑ Ð² комфортной обÑтановке ваших Ñанитарных помещений. Ð’Ñ‹ можете уÑтановить дополнительные раковины и кабинки, еÑли ожидаете наплыва поÑетителей. Иногда бывает полезно размеÑтить дополнительные Ð¿Ð¾Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² разных чаÑÑ‚ÑÑ… больницы.", }, no_room = { [1] = "", }, x_ray = { [1] = "Рентген//", [2] = "Сделанные при помощи Ñпециального Ð¸Ð·Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñнимки внутренноÑтей пациентов помогают врачам уÑтановить, что там не в порÑдке.//", [3] = "Ð’ кабинете рентгена может работать любой доктор. Также, машине требуетÑÑ Ð¾Ð±Ñлуживание.", }, decontamination = { [1] = "Комната обеззараживаниÑ//", [2] = "Пациенты, подвергшиеÑÑ Ð²Ð¾Ð·Ð´ÐµÐ¹Ñтвию радиации, незамедлительно направлÑÑŽÑ‚ÑÑ Ð² комнату обеззараживаниÑ. ПриÑтный душ Ñмоет Ñ Ð½Ð¸Ñ… вÑÑŽ ужаÑную радиацию и опаÑные отходы.//", [3] = "Оперировать душем может любой доктор. Также, машине требуетÑÑ Ð¾Ð±Ñлуживание.", }, tv_room = { [1] = "Ð¢ÐµÐ»ÐµÐ²Ð¸Ð·Ð¸Ð¾Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð° не иÑпользовалаÑÑŒ", }, } place_objects_window = { place_objects_in_corridor = "РазмеÑтите Ñти предметы в коридорах.", place_windows = "Добавьте окон, еÑли хотите, и нажмите «Подтвердить».", confirm_or_buy_objects = "Ð’Ñ‹ можете добавить, убрать или передвинуть объекты.", drag_blueprint = "РаÑÑ‚Ñните комнату до желаемого размера.", place_door = "РазмеÑтите дверь", place_objects = "Выберите объект и перемеÑтите его на нужное меÑто, потом подтвердите", pick_up_object = "Ðажмите на объект, чтобы его поднÑть или выберете другую опцию из ÑпиÑка", } staff_class = { doctor = "Доктор", handyman = "Рабочий", receptionist = "РегиÑтратор", nurse = "МедÑеÑтра", surgeon = "Хирург", } staff_descriptions = { good = { [1] = "Работает быÑтро и уÑердно. ", [2] = "Работает на ÑовеÑть. ", [3] = "МаÑтер на вÑе руки. ", [4] = "Легко заводит друзей и любит поÑмеÑтьÑÑ. ", [5] = "Ðикогда не уÑтает. Работает без оÑтановки. ", [6] = "Имеет хорошее воÑпитание и утонченные манеры. ", [7] = "ПроÑвлÑет талант и ÑпоÑобноÑти. ", [8] = "Очень оÑновательно подходит к делу. ", [9] = "Ðикогда не ÑдаетÑÑ Ð¸ вÑегда ÑтремитÑÑ Ðº ÑовершенÑтву. ", [10] = "Помогает людÑм Ñ ÑƒÐ»Ñ‹Ð±ÐºÐ¾Ð¹. ", [11] = "Ð’Ñегда подбодрит и поможет. ", [12] = "Работает, как правило, хорошо и уÑердно. ", [13] = "Прилежно работает и ведет ÑебÑ. ", [14] = "Ðикогда не подведет и не обидит. ", [15] = "Ðе оÑтавит в беде. ", }, misc = { [1] = "Играет в гольф. ", [2] = "ÐырÑет Ñ Ð°ÐºÐ²Ð°Ð»Ð°Ð½Ð³Ð¾Ð¼. ", [3] = "Делает Ñкульптуры из льда. ", [4] = "Любит выпить. ", [5] = "УчаÑтвует в ралли. ", [6] = "Прыгает Ñ Ñ‚Ð°Ñ€Ð·Ð°Ð½ÐºÐ¾Ð¹. ", [7] = "Собирает подÑтавки под пиво. ", [8] = "Любит прыгать в толпу Ñо Ñцены. ", [9] = "Оглушительно пердит. ", [10] = "Любит раÑширÑть реки. ", [11] = "Варит Ñамогон. ", [12] = "Собирает мебель Ñвоими руками. ", [13] = "Смотрит французÑкое ÑкÑпериментальное кино. ", [14] = "Играет на компьютере. ", [15] = "Водит грузовик. ", [16] = "УчаÑтвует в мотогонках. ", [17] = "Играет на Ñкрипке и виолончели. ", [18] = "Обожает железнодорожные аварии. ", [19] = "Любит Ñобак. ", [20] = "Слушает радио. ", [21] = "ЧаÑто принимает ванны. ", [22] = "Обучает резьбе по пальмам. ", [23] = "Делает мыльницы из овощей. ", [24] = "ОÑобый конÑтебль на полÑтавки. ", [25] = "Бывший ведущий телевикторины. ", [26] = "Коллекционирует оÑколки времен ВМВ. ", [27] = "ПереÑтавлÑет мебель. ", [28] = "Слушает рейв и трип-хоп. ", [29] = "Любит злить наÑекомых при помощи дезодоранта. ", [30] = "Перебивает плохих комедиантов. ", [31] = "Шпионит на правительÑтво. ", [32] = "Втайне Ñадовник. ", [33] = "Провозит поддельные чаÑÑ‹. ", [34] = "Поет рок'н'ролл. ", [35] = "Обожает дневные передачи. ", [36] = "Щекочет форель. ", [37] = "Завлекает туриÑтов в музеи. ", }, bad = { [1] = "ЧаÑто тормозит и дергаетÑÑ. ", [2] = "Ðевозможно заÑтавить работать. ", [3] = "Ðичего не умеет и не приноÑит пользы. ", [4] = "Хамит и ерничает. Ðе прощает и не забывает. ", [5] = "БыÑтро уÑтает и на вÑе жалуетÑÑ. ", [6] = "Ðичего не Ñлышит. Пахнет капуÑтой. ", [7] = "Плюет на работу. ПредаÑÑ‚ при первой возможноÑти. ", [8] = "Ðи о чем не думает и легко отвлекаетÑÑ. ", [9] = "Ðервничает и чаÑто ошибаетÑÑ. ", [10] = "ОбижаетÑÑ Ð¸ мÑтит за вÑе. Ðенавидит вÑех и вÑÑ. ", [11] = "Ðе Ñоблюдает технику безопаÑноÑти. ", [12] = "Видит работу в гробу. ÐаÑтоÑщий лентÑй. ", [13] = "РиÑкует Ð·Ñ€Ñ Ð¸ плюет на поÑледÑтвиÑ. ", [14] = "Ðагло врет и Ñтроит козни. ", [15] = "Дерзит и Ñмотрит на вÑех ÑвыÑока. ", }, } tooltip = { build_room_window = { cost = "Цена выбранного кабинета", room_classes = { treatment = "Проказать процедурные кабинеты", diagnosis = "Показать комнаты Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики", facilities = "Показать Ñлужебные помещениÑ", clinic = "Показать Ñпециализированные кабинеты Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ", }, close = "Ðичего не Ñтроить и вернутьÑÑ Ðº игре", }, hire_staff_window = { prev_person = "Предыдущий кандидат", cancel = "Отмена", psychiatrist = "ПÑихиатр", surgeon = "Хирург", researcher = "ИÑÑледователь", salary = "Зарплата", next_person = "Следующий кандидат", nurses = "ПоÑмотреть медÑеÑтер", handymen = "ПоÑмотреть рабочих", doctors = "ПоÑмотреть докторов", receptionists = "ПоÑмотреть региÑтраторов", doctor_seniority = "Ðвторитет (Студент, Доктор, КонÑультант)", hire = "ÐанÑть", qualifications = "Дополнительные дипломы доктора", staff_ability = "КомпетентноÑть", }, place_objects_window = { confirm = "Подтвердить", cancel = "Отмена", pick_up = "ПоднÑть объект", buy_sell = "Купить/продать", }, rooms = { ultrascan = "Доктор обÑледует пациентов при помощи ультраÑканера", research_room = "ИÑÑледователи придумывают новые лекарÑтва и машины в иÑÑледовательÑком отделе", fracture_clinic = "ЗдеÑÑŒ медÑеÑтра Ñнимает Ð³Ð¸Ð¿Ñ Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð² Ñо Ñломанными коÑÑ‚Ñми", gps_office = "У терапевта пациенты начинают диагноÑтику, и здеÑÑŒ же им Ñообщают неутешительные результаты", inflation = "При помощи Ð½Ð°Ð´ÑƒÐ²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾ÐºÑ‚Ð¾Ñ€ лечит пациентов Ñ Ñ€Ð°Ð·Ð´ÑƒÑ‚Ð¾Ð¹ головой", staffroom = "Ð’ комнате перÑонала доктора и медÑеÑтры отдыхают и набираютÑÑ Ñил", jelly_vat = "При помощи Ñпециальной машины доктор лечит ожеление", scanner = "Доктор иÑпользует Ñканер Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики пациентов", decontamination = "При помощи обеззараживающего душа доктор лечит облученных пациентов", pharmacy = "Ð’ аптеке медÑеÑтра раздает больным медикаменты", cardiogram = "Доктор Ñнимает кардиограмму Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики пациентов", ward = "Палата иÑпользуетÑÑ ÐºÐ°Ðº Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики, так и Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ. ЗдеÑÑŒ пациенты готовÑÑ‚ÑÑ Ðº операции под наблюдением медÑеÑтры", training_room = "Ð’ лекционной конÑультант может обучать других докторов", operating_theatre = "Ð’ операционной работают Ñразу два хирурга", psychiatry = "ЗдеÑÑŒ квалифицированный пÑихиатр обÑледует пациентов и вправлÑет мозги Ñамым ÑумаÑшедшим", hair_restoration = "При помощи оволоÑÐ¸Ñ‚ÐµÐ»Ñ Ð´Ð¾ÐºÑ‚Ð¾Ñ€ лечит плешивоÑть", tongue_clinic = "При помощи Ñзыкорезки доктор подрезает длинные Ñзыки", dna_fixer = "ЗдеÑÑŒ доктор лечит пациентов Ñ Ð¸Ð½Ð¾Ð¿Ð»Ð°Ð½ÐµÑ‚Ð½Ð¾Ð¹ ДÐК", general_diag = "ЗдеÑÑŒ доктор проводит общий оÑмотр пациентов. Дешево и Ñердито", toilets = "ПоÑтройте туалеты, еÑли не хотите чтобы пациенты загадили вам вÑÑŽ больницу", electrolysis = "При помощи Ñлектролизатора доктор лечит волоÑение", x_ray = "Доктор иÑпользует рентген Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики пациентов", blood_machine = "Доктор иÑпользует анализатор крови Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики пациентов", }, objects = { litter = "МуÑор: какому-то пациенту не удалоÑÑŒ найти в вашей больнице муÑорной корзины, и он броÑил Ñто прÑмо здеÑÑŒ", sofa = "Диван: еÑли у Ð²Ð°Ñ Ð² комнате отдыха нет ничего интереÑнее, то Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ можно поÑидеть на диване", bench = "СкамьÑ: предоÑтавлÑет одно ÑидÑчее меÑто, ÑÐºÑ€Ð°ÑˆÐ¸Ð²Ð°Ñ Ñ‡Ð°ÑÑ‹, проведенные в очередÑÑ…", video_game = "Игральный автомат: предоÑтавлÑет вашим Ñотрудникам возможноÑть порубитьÑÑ Ð² Hi-Octane", auto_autopsy = "ÐвтовÑкрывалка: очень помогает в иÑÑледовании заболеваний", reception_desk = "РегиÑтратура: отÑюда региÑтраторша направит пациента к врачу", tv = "Тель-а-визор: вы же не хотите, чтобы ваши Ñотрудники пропуÑтили Ñвои любимые передачи", inflator = "Ðадуватель: излечивает раздутие головы", desk = "Стол: надо ведь доктору куда-то поÑтавить Ñвой компьютер", pool_table = "БильÑрдный Ñтол: помогает вашим работникам раÑÑлабитьÑÑ", bed = "Койка: на ней Ñмогут прилечь те, кто уже не в Ñилах ÑтоÑть", bookcase = "Книжный шкаф: полон Ñправочных материалов на медицинÑкие темы", drinks_machine = "Торговый автомат: не дает пациентам умереть от жажды и приноÑит прибыль", skeleton = "Скелет: иÑпользуетÑÑ ÐºÐ°Ðº учебное поÑобие и на Ð¥Ñллоуин", computer = "Компьютер: незаменимый инÑтрумент иÑÑледователÑ", bin = "Корзина: чтобы пациентам было куда деть Ñвой муÑор", pharmacy_cabinet = "Ðптечный шкаф: тут хранÑÑ‚ÑÑ Ð²Ñе лекарÑтва", radiator = "БатареÑ: поддерживает тепло в вашей больнице", atom_analyser = "Ðтомный анализатор: Ñта машина уÑкорÑет вÑе иÑÑледовательÑкие процеÑÑÑ‹", plant = "РаÑтение: нравитÑÑ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð°Ð¼ и очищает воздух", toilet = "Стульчак: пациенты... мм... пользуютÑÑ Ð¸Ð¼", fire_extinguisher = "Огнетушитель: неÑколько уменьшает опаÑноÑть поломки машин", lecture_chair = "Лекционный Ñтул: ваши доктора на нем ÑидÑÑ‚, запиÑывают лекции, Ñкучают и риÑуют каракули. Чем больше Ñтульев вы поÑтавите, тем больше докторов Ñможет обучатьÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾", toilet_sink = "Раковина: наиболее чиÑтоплотные пациенты моют здеÑÑŒ Ñвои грÑзные руки. Они будут очень недовольны, еÑли не найдут Ñвободной раковины", cabinet = "Картотека: Ñодержит карточки пациентов, запиÑи и научные документы", }, } -- 4.2 Ð¡Ñ‚Ð°Ñ‚ÑƒÑ queue_window = { num_in_queue = "Длина очереди", num_entered = "Ð’Ñего поÑещений", max_queue_size = "МакÑ. длина", num_expected = "ОжидаетÑÑ", } tooltip = { handyman_window = { prio_machines = "Увеличить приоритет ремонта", prio_litter = "Увеличить приоритет уборки", prio_plants = "Увеличить приоритет поливки", }, machine_window = { repair = "Вызвать рабочего Ð´Ð»Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð°", name = "Ðазвание", close = "Закрыть", times_used = "КоличеÑтво иÑпользований", status = "СоÑтоÑние", replace = "Заменить машину", }, patient_window = { graph = "Щелкните чтобы увидеть иÑторию Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ график график ÑамочувÑтвиÑ", casebook = "ПоÑмотреть ÑтатиÑтику по болезни", close = "Закрыть", queue = "ПоÑмотреть очередь", happiness = "СамочувÑтвие пациента", warmth = "СогретоÑть пациента", center_view = "Центрировать Ñкран на пациенте", thirst = "Уровень жажды пациента", send_home = "Ð’Ñ‹Ñтавить из больницы", abort_diagnosis = "Отправить на лечение немедленно, не дожидаÑÑÑŒ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики", }, staff_window = { doctor_seniority = "Ðвторитет (Студент, Доктор, КонÑультант)", psychiatrist = "ПÑихиатр", close = "Закрыть окно", ability = "КомпетентноÑть", pick_up = "ВзÑть", sack = "Уволить", surgeon = "Хирург", happiness = "ÐаÑтроение", salary = "ЕжемеÑÑÑ‡Ð½Ð°Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Ð°", name = "ИмÑ", tiredness = "Ð—Ð°Ð¿Ð°Ñ Ñил", center_view = "Ð›ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° - центрировать Ñкран, Ð¿Ñ€Ð°Ð²Ð°Ñ - выбрать Ñледующего Ñотрудника", skills = "ОÑобые умениÑ", researcher = "ИÑÑледователь", face = "Портрет - нажмите, чтобы перейти к Ñкрану ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ñоналом", }, } -- 4.3 ЗапроÑÑ‹ confirmation = { abort_edit_room = "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñтроите или редактируете кабинет. ЕÑли вÑе необходимое уже на меÑте, он будет поÑтроен, иначе же он будет удален. Продолжить?", return_to_blueprint = "Точно вернутьÑÑ Ðº режиму разметки?", delete_room = "Ð’Ñ‹ точно хотите удалить Ñту комнату?", quit = "Ð’Ñ‹ выбрали выход. Рвы в Ñтом уверены?", needs_restart = "Изменение Ñтого параметра ребует перезапуÑка CorsixTH. Ð’Ñе неÑохраненные данные при Ñтом будут потерÑны. Продолжить?", overwrite_save = "Ð’ Ñтом файле уже еÑть ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð½Ð°Ñ Ð¸Ð³Ñ€Ð°. ПерезапиÑать ее?", sack_staff = "Ð’Ñ‹ правда хотите уволить Ñтого Ñотрудника?", replace_machine = "Ð’Ñ‹ правда хотите заменить %s за %d$?", restart_level = "Ð’Ñ‹ Ñерьёзно хотите начать уровень заново?", maximum_screen_size = "Разрешение Ñкрана, которое вы ввели, больше 3000 x 2000. Большее разрешение возможно, но оно может потребовать более производительного оборудованиÑ, чтобы поддерживать играбельную чаÑтоту кадров. Ð’Ñ‹ уверены, что хотите продолжить?", music_warning = "Перед тем, как выбрать mp3 в качеÑтве игровой музыки, вам потребуетÑÑ smpeg.dll или аналог Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ операционной ÑиÑтемы, иначе музыка не Ñможет быть проиграна. Ð’Ñ‹ уверены, что хотите продолжить?", } pay_rise = { definite_quit = "Я увольнÑÑŽÑÑŒ, и точка. Я Ñыт по горло Ñтим меÑтом.", regular = { [1] = "Я крайне уÑтаю. Мне нужен хороший отдых Ð¿Ð»ÑŽÑ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ðµ зарплаты на %d$, еÑли хотите Ð¼ÐµÐ½Ñ Ð²Ð¸Ð´ÐµÑ‚ÑŒ на Ñтой никчемной работе.", [2] = "Я очень уÑтаю. Мне надо отдохнуть и не помешает получить надбавку в %d$ до %d$. ПошевеливайÑÑ, деÑпот.", [3] = "Ðу вÑе. Я тут тружуÑÑŒ как лошадь. Прибавьте мне %d$, а то уволюÑÑŒ.", [4] = "Я в негодовании. Требую добавить к зарплате %d$, чтобы Ñтало %d$, или Ñ ÑƒÑ…Ð¾Ð¶Ñƒ.", [5] = "Родители вÑегда говорили мне что в Ñтом деле хорошо платÑÑ‚. Так что повыÑьте мне зарплату на %d$, или Ñ Ð¿Ð¾Ð¹Ð´Ñƒ издавать компьютерные игры.", [6] = "С Ð¼ÐµÐ½Ñ Ñ…Ð²Ð°Ñ‚Ð¸Ñ‚. Платите мне как Ñледует. Я хочу, чтобы мне повыÑили зарплату на %d$.", }, poached = "Мне предлагают %d$ у %s. Платите мне не меньше, или Ñ ÑƒÑ…Ð¾Ð¶Ñƒ.", } -- 5. Болезни diseases = { general_practice = { name = "ОбÑледование: терапевт", }, diag_ward = { name = "ОбÑледование: палата", }, diag_ultrascan = { name = "ОбÑледование: ультраÑканер", }, diag_blood_machine = { name = "ОбÑледование: анализатор крови", }, diag_x_ray = { name = "ОбÑледование: рентген", }, diag_psych = { name = "ОбÑледование: пÑихиатр", }, diag_general_diag = { name = "ОбÑледование: Ð¾Ð±Ñ‰Ð°Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтика", }, diag_cardiogram = { name = "ОбÑледование: кардиограмма", }, diag_scanner = { name = "ОбÑледование: Ñканер", }, autopsy = { name = "Ð’Ñкрытие", }, third_degree_sideburns = { cause = "Причина - Ð½ÐµÐ¿Ñ€ÐµÐ¾Ð´Ð¾Ð»Ð¸Ð¼Ð°Ñ Ñ‚Ð¾Ñка по ÑемидеÑÑтым.", cure = "Лечение - пÑихиатр должен, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñамые Ñовременные методы, убедить пациента, что Ñ‡Ñ€ÐµÐ·Ð¼ÐµÑ€Ð½Ð°Ñ Ð²Ð¾Ð»Ð¾ÑатоÑть уже не в моде.", name = "Бакенбарды третьей Ñтепени", symptoms = "Симптомы - длинные волоÑÑ‹, Ñмешные штаны, обувь на платформе и Ñверкающий макиÑж.", }, discrete_itching = { cause = "Причина - крошечные наÑекомые Ñ Ð¾Ñ‡ÐµÐ½ÑŒ оÑтрыми зубами.", cure = "Лечение - пациент выпивает липкий фармацевтичеÑкий Ñироп, который защищает кожу.", name = "Спонтанное зудение", symptoms = "Симптомы - интенÑивное чеÑание вплоть до воÑпламенениÑ.", }, the_squits = { cause = "Причина - поедание куÑочков пиццы, упавших под плиту.", cure = "Лечение - ÐºÐ»ÐµÐ¹ÐºÐ°Ñ ÑмеÑÑŒ вÑзких фармацевтичеÑких реактивов Ñгущает вÑе внутри у пациента.", name = "МетаниÑ", symptoms = "Симптомы - фу, ÐºÐ°ÐºÐ°Ñ Ð³Ð°Ð´Ð¾Ñть. Ðе будем об Ñтом.", }, spare_ribs = { cause = "Причина - Ñидение на холодном каменном полу.", cure = "Лечение - два хирурга должны удалить лишние ребра и завернуть их пациенту Ñ Ñобой.", name = "Лишние ребра", symptoms = "Симптомы - неприÑтные Ð¾Ñ‰ÑƒÑ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ маÑÑивной груди.", }, king_complex = { cause = "Причина - дух КоролÑ, который захватил контроль над разумом пациента.", cure = "Лечение - пÑихиатр раÑÑказывает пациенту как нелепо тот выглÑдит.", name = "ÐšÐ¾Ð¼Ð¿Ð»ÐµÐºÑ ÐšÐ¾Ñ€Ð¾Ð»Ñ", symptoms = "Симптомы - ÑлабоÑть к цветаÑтой замшевой обуви и чизбургерам.", }, fake_blood = { cause = "Причина - Ñкорее вÑего, пациент Ñтал жертвой розыгрыша.", cure = "Лечение - пÑихиатр должен помочь пациенту уÑпокоитьÑÑ.", name = "Ð¤Ð°Ð»ÑŒÑˆÐ¸Ð²Ð°Ñ ÐºÑ€Ð¾Ð²ÑŒ", symptoms = "Симптомы - краÑÐ½Ð°Ñ Ð¶Ð¸Ð´ÐºÐ¾Ñть в венах, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸ÑпарÑетÑÑ Ð¿Ñ€Ð¸ контакте Ñ Ð¾Ð´ÐµÐ¶Ð´Ð¾Ð¹.", }, invisibility = { cause = "Причина - ÑƒÐºÑƒÑ Ñ€Ð°Ð´Ð¸Ð¾Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ (и, Ñамо Ñобой, невидимого) муравьÑ.", cure = "Лечение - напиток наÑыщенного цвета, приготовленный в аптеке, воÑÑтанавливает видимоÑть пациента.", name = "ÐевидимоÑть", symptoms = "Симптомы - пациент чувÑтвует ÑÐµÐ±Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ и даже может иÑпользовать болезнь чтобы разыгрывать близких.", }, golf_stones = { cause = "Причина - вдыхание Ñдовитого газа, ÑодержащегоÑÑ Ð² мÑчиках Ð´Ð»Ñ Ð³Ð¾Ð»ÑŒÑ„Ð°.", cure = "Лечение - Ð¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐ´Ð°Ð»ÑÑŽÑ‚ÑÑ Ñ…Ð¸Ñ€ÑƒÑ€Ð³Ð°Ð¼Ð¸ в операционной.", name = "МÑчики в почках", symptoms = "Симптомы - бред и чувÑтво Ñтыда.", }, infectious_laughter = { cause = "Причина - проÑмотр клаÑÑичеÑких комедий.", cure = "Лечение - квалифицированный пÑихиатр должен напомнить пациенту, что не вÑе в Ñтой жизни Ñмешно.", name = "Заразный Ñмех", symptoms = "Симптомы - непроизвольное фырканье и повторение неÑмешных шуток.", }, baldness = { cause = "Причина - вранье и придумавание небылиц Ñ Ñ†ÐµÐ»ÑŒÑŽ Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ.", cure = "Лечение - в ходе болезненной процедуры ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð° плавно воÑÑтанавливает волоÑÑной покров.", name = "ПлешивоÑть", symptoms = "Симптомы - блеÑÑ‚ÑщеÑть и Ñмущение.", }, heaped_piles = { cause = "Причина - привычка торчать возле питьевых фонтанчиков.", cure = "Лечение - приÑÑ‚Ð½Ð°Ñ Ð½Ð° Ð²ÐºÑƒÑ ÑмеÑÑŒ Ñильных киÑлот раÑтворÑет кучи изнутри.", name = "Скученные кучи", symptoms = "Симптомы - у пациента такое чувÑтво, будто он/она Ñидит на мешке Ñ Ñ‚Ð²ÐµÑ€Ð´Ñ‹Ð¼Ð¸ шариками.", }, unexpected_swelling = { cause = "Причина - вÑе внезапное.", cure = "Лечение - возбухание может быть уменьшено хирургами при помощи автогена.", name = "Внезапное возбухание", symptoms = "Симптом - возбухание.", }, jellyitis = { cause = "Причина - пища, Ð±Ð¾Ð³Ð°Ñ‚Ð°Ñ Ð¶ÐµÐ»Ð°Ñ‚Ð¸Ð½Ð¾Ð¼ и избыток физичеÑкой активноÑти.", cure = "Лечение - пациента помещают в разжелетиватель в Ñпециальном кабинете.", name = "Ожеление", symptoms = "Симптомы - пациент чрезмерно трÑÑетÑÑ Ð¸ чаÑто падает.", }, hairyitis = { cause = "Причина - длительные прогулки в Ñвете луны.", cure = "Лечение - Ñлектролизатор удалÑет волоÑÑ‹ и запаивает поры.", name = "ОволоÑение", symptoms = "Симптомы - обоÑтренное обонÑние.", }, alien_dna = { cause = "Причина - прыгающие личинки разумных видов пришельцев.", cure = "Лечение - в Ñпециальной машине ДÐК извлекаетÑÑ, очищаетÑÑ Ð¾Ñ‚ фрагментов пришельцев и быÑтро вÑтавлÑетÑÑ Ð½Ð° меÑто.", name = "ДÐК пришельцев", symptoms = "Симптомы - поÑтепенное превращение в пришельца и Ñтремление уничтожить человечеÑтво.", }, bloaty_head = { cause = "Причина - нюхание Ñыра и питье неочищенной дождевой воды.", cure = "Лечение - Ñ€Ð°Ð·Ð´ÑƒÑ‚Ð°Ñ Ð³Ð¾Ð»Ð¾Ð²Ð° лопаетÑÑ Ð¸ затем надуваетÑÑ Ð´Ð¾ нормального Ð´Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ помощи хитроумной машины.", name = "Раздутие головы", symptoms = "Симптомы - очень неприÑтны Ð´Ð»Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð°.", }, gastric_ejections = { cause = "Причина - оÑÑ‚Ñ€Ð°Ñ Ð¼ÐµÐºÑиканÑÐºÐ°Ñ Ð¸ индийÑÐºÐ°Ñ Ð¿Ð¸Ñ‰Ð°.", cure = "Лечение - выпивание Ñпециального ÑвÑзующего ÑоÑтава предотвращает какие бы то ни было извержениÑ.", name = "ГаÑтральные извержениÑ", symptoms = "Симптомы - Ð¿Ð¾Ð»ÑƒÐ¿ÐµÑ€ÐµÐ²Ð°Ñ€ÐµÐ½Ð½Ð°Ñ Ð¿Ð¸Ñ‰Ð° извергаетÑÑ Ð¸Ð· пациента в Ñлучайных меÑтах.", }, uncommon_cold = { cause = "Причина - крошечные капли Ñоплей в воздухе.", cure = "Лечение - большой глоток необычной микÑтуры от кашлÑ, Ñваренной из Ñекретных ингредиентов в аптеке.", name = "ÐÐµÐ¾Ð±Ñ‹Ñ‡Ð½Ð°Ñ Ð¿Ñ€Ð¾Ñтуда", symptoms = "Симптомы - Ñопли, чихание и обеÑцвечивание легких.", }, corrugated_ankles = { cause = "Причина - езда через аÑфальтовые гребни на дорогах.", cure = "Лечение - Ñлегка токÑÐ¸Ñ‡Ð½Ð°Ñ ÑмеÑÑŒ трав и Ñпеций позволÑет пациенту выпрÑмить лодыжки.", name = "ВолниÑтые лодыжки", symptoms = "Симптомы - Ð¿Ñ€Ð¸Ð²Ñ‹Ñ‡Ð½Ð°Ñ Ð¾Ð±ÑƒÐ²ÑŒ больше не подходит пациенту.", }, sleeping_illness = { cause = "Причина - Ñ‡Ñ€ÐµÐ·Ð¼ÐµÑ€Ð½Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ñть Ñонной железы в глотке пациента.", cure = "Лечение - медÑеÑтра должна дать пациенту большую дозу Ñильных ÑтимулÑторов.", name = "Ð¡Ð¾Ð½Ð½Ð°Ñ Ð±Ð¾Ð»ÐµÐ·Ð½ÑŒ", symptoms = "Симптомы - непреодолимое желание поÑпать преÑледует пациента.", }, sweaty_palms = { cause = "Причина - боÑзнь ÑобеÑедований.", cure = "Лечение - пÑихиатр должен уговорить пациента избавитьÑÑ Ð¾Ñ‚ Ñтой выдуманной болезни.", name = "Потные ладони", symptoms = "Симптомы - рукопожатие пациента напоминает Ñжимание мокрой губки.", }, serious_radiation = { cause = "Причина - жевание изотопов плутониÑ.", cure = "Лечение - пациента нужно как Ñледует промыть под обеззараживающим душем.", name = "Сильное облучение", symptoms = "Симптомы - пациент ÑÐµÐ±Ñ Ð¾Ñ‡ÐµÐ½ÑŒ, очень плохо чувÑтвует.", }, gut_rot = { cause = "Причина - Ð¡Ñ‚Ð°Ñ€Ð°Ñ Ð´Ð¾Ð±Ñ€Ð°Ñ ÐºÑ€ÐµÐ¿ÐºÐ°Ñ Ð¼Ð¸ÐºÑтура от ÐºÐ°ÑˆÐ»Ñ Ñ‚ÐµÑ‚ÑƒÑˆÐºÐ¸ О'МÑлли.", cure = "Лечение - медÑеÑтра приготовит Ñпециальную ÑмеÑÑŒ химикатов Ð´Ð»Ñ Ð¿Ð¾ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¾Ñтей пациента.", name = "Гнилые кишки", symptoms = "Симптомы - никакого кашлÑ, но и никаких Ñтенок желудка.", }, iron_lungs = { cause = "Причина - городÑкой Ñмог и дым от шашлыков.", cure = "Лечение - два хирурга проводÑÑ‚ операцию чтобы удалить затвердевшие легкие.", name = "Железные легкие", symptoms = "Симптомы - ÑпоÑобноÑть выдыхать огонь и громко кричать под водой.", }, broken_wind = { cause = "Причина - ÑƒÐ¿Ñ€Ð°Ð¶Ð½ÐµÐ½Ð¸Ñ Ð½Ð° беговой дорожке поÑле еды.", cure = "Лечение - наÑÑ‹Ñ‰ÐµÐ½Ð½Ð°Ñ Ð¾Ñобыми водÑниÑтыми атомами микÑтура выпиваетÑÑ Ð·Ð°Ð»Ð¿Ð¾Ð¼.", name = "Бурные ветра", symptoms = "Симптомы - предÑтавлÑÑŽÑ‚ опаÑноÑть Ð´Ð»Ñ Ð½Ð°Ñ…Ð¾Ð´Ñщих позади пациента.", }, kidney_beans = { cause = "Причина - разгрызание ледÑных кубиков в напитках.", cure = "Лечение - два хирурга должны удалить бобы, не прикаÑаÑÑÑŒ к почкам.", name = "Бобы в почках", symptoms = "Симптомы - боль и чаÑтые визиты в туалет.", }, transparency = { cause = "Причина - Ñлизывание йогурта Ñ ÐºÑ€Ñ‹ÑˆÐµÑ‡ÐµÐº упаковок.", cure = "Лечение - Ñпециально Ð¾Ñ…Ð»Ð°Ð¶Ð´ÐµÐ½Ð½Ð°Ñ Ð¸ Ð¿Ð¾Ð´ÐºÑ€Ð°ÑˆÐµÐ½Ð½Ð°Ñ Ð² аптеке вода вылечит Ñту болезнь.", name = "ПрозрачноÑть", symptoms = "Симптомы - плоть ÑтановитÑÑ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾Ð¹ и ужаÑно выглÑдит.", }, broken_heart = { cause = "Причина - кто-нибудь более молодой, богатый и Ñтройный чем пациент.", cure = "Лечение - два хирурга вÑкрывают грудную клетку и, затаив дыхание, аккуратно Ñобирают Ñердце.", name = "Разбитое Ñердце", symptoms = "Симптомы - плач и боли в мышцах от Ñ€Ð°Ð·Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð°Ð·Ð´Ð½Ð¸Ñ‡Ð½Ñ‹Ñ… фотографий.", }, slack_tongue = { cause = "Причина - хроничеÑкое обÑуждение мыльных опер.", cure = "Лечение - Ñзык помещаетÑÑ Ð² Ñзыкорезку и укорачиваетÑÑ Ð±Ñ‹Ñтро, точно, безжалоÑтно.", name = "Длинный Ñзык", symptoms = "Симптомы - Ñзык примерно в пÑть раз увеличен в размерах.", }, tv_personalities = { cause = "Причина - проÑмотр телепередач в дневное времÑ.", cure = "Лечение - квалифицированный пÑихиатр должен убедить пациента выкинуть телевизор и купить радио.", name = "Звезда Ñкрана", symptoms = "Симптомы - пациент думает, что может веÑти ÑобÑтвенное кулинарное шоу.", }, ruptured_nodules = { cause = "Причина - прыжки Ñ Ñ‚Ð°Ñ€Ð·Ð°Ð½ÐºÐ¾Ð¹ в холодную погоду.", cure = "Лечение - хирург удалÑет грыжу твердой, уверенной рукой.", name = "Грыжа", symptoms = "Симптомы - невозможноÑть Ñидеть Ñ ÐºÐ¾Ð¼Ñ„Ð¾Ñ€Ñ‚Ð¾Ð¼.", }, fractured_bones = { cause = "Причина - падение Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ выÑоты на бетонные поверхноÑти.", cure = "Лечение - Ñперва накладываетÑÑ Ð³Ð¸Ð¿Ñ, затем он удалÑетÑÑ Ð¿Ñ€Ð¸ помощи уÑтройÑтва Ñ Ð»Ð°Ð·ÐµÑ€Ð¾Ð¼.", name = "Сломанные коÑти", symptoms = "Симптомы - громкий треÑк и неÑпоÑобноÑть иÑпользовать поврежденные конечноÑти.", }, chronic_nosehair = { cause = "Причина - выÑокомерное фыркание в приÑутÑтвии менее уÑпешных людей.", cure = "Лечение - отвратительное противоволоÑÑное зелье приготавливаетÑÑ Ð² аптеке.", name = "ХроничеÑкое ноÑоволоÑение", symptoms = "Симптомы - ноÑоборода, в которой можно Ñвить гнездо.", }, pregnancy = { cure = "Вылечено - ребенка доÑтали в Операционной, отмыли и познакомили Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð¼.", cause = "Причина - отключение ÑлектричеÑтва в жилых районах.", name = "БеременноÑть", symptoms = "Симптомы - Ñтранное питание Ñ Ð¿Ð¾Ñледующей непроходимоÑтью кишечника.", }, } -- 6. ФакÑÑ‹ fax = { -- Ð­Ð¿Ð¸Ð´ÐµÐ¼Ð¸Ñ epidemic = { cover_up_explanation_1 = "Или вы можете попытатьÑÑ Ð²Ñ‹Ð»ÐµÑ‡Ð¸Ñ‚ÑŒ вÑех зараженных, пока про Ñто не узнали в миниÑтерÑтве здравоохранениÑ.", cover_up_explanation_2 = "ЕÑли к приезду инÑпектора ÑÐ¿Ð¸Ð´ÐµÐ¼Ð¸Ñ Ð²Ñе еще будет бушевать, приготовьтеÑÑŒ к неприÑтноÑÑ‚Ñм.", choices = { cover_up = "ПопытатьÑÑ Ð²Ñ‹Ð»ÐµÑ‡Ð¸Ñ‚ÑŒ вÑех зараженных пациентов пока еÑть Ð²Ñ€ÐµÐ¼Ñ Ð¸ пока он еще в больнице.", declare = "ОбъÑвить об Ñпидемии. Признать Ñвою вину и заплатить штраф.", }, disease_name = "Ваши доктора обнаружили оÑобо заразный подвид %s.", declare_explanation_fine = "Ð’Ñ‹ можете объÑвить об Ñпидемии, заплатить штраф в %d$, тогда вам немедленно окажут помощь в вакцинации. Ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð½ÐµÑколько поÑтрадает.", }, epidemic_result = { fine_amount = "ПравительÑтво объÑвило чрезвычайное положение, а Ð²Ð°Ñ Ð¾ÑˆÑ‚Ñ€Ð°Ñ„Ð¾Ð²Ð°Ð»Ð¸ на %d$.", close_text = "Ура!", hospital_evacuated = "У комиÑÑии не оÑталоÑÑŒ другого выбора, кроме как объÑвить Ñвакуацию.", succeeded = { part_1_name = "До департамента Ð·Ð´Ð¾Ñ€Ð¾Ð²ÑŒÑ Ð´Ð¾ÑˆÐ»Ð¸ Ñлухи, что в вашей больнице бушует ÑÐ¿Ð¸Ð´ÐµÐ¼Ð¸Ñ %s.", part_2 = "Однако, инÑпектору не удалоÑÑŒ найти им подтверждение.", }, compensation_amount = "ПравительÑтво решило компенÑировать ущерб, который Ñти враки нанеÑли репутации вашей больницы, в Ñумме %d$.", failed = { part_1_name = "Ð’ попытке Ñкрыть наличие заразной инфекции %s,", part_2 = "ваши Ñотрудники вызвали раÑпроÑтранение болезни по округе.", }, rep_loss_fine_amount = "ЖурналиÑты уже заточили карандаши. Ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ñерьезно поÑтрадает. К тому же, Ð²Ð°Ñ Ð¾ÑˆÑ‚Ñ€Ð°Ñ„Ð¾Ð²Ð°Ð»Ð¸ на %d$.", }, -- Визит шишки vip_visit_query = { choices = { invite = "Отправить шишке официальное приглашение", refuse = "Ðаврать что-нибудь, чтобы не приходил", }, vip_name = "%s выразил желание поÑетить вашу больницу", }, vip_visit_result = { telegram = "Телеграмма!", remarks = { good = { [1] = "ÐšÐ°ÐºÐ°Ñ Ñ…Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°! СпаÑибо за приглашение.", [2] = "Хмм... Определенно, неплохое медицинÑкое учреждение.", [3] = "Мне очень понравилаÑÑŒ ваша Ð¼Ð¸Ð»Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ‡ÐºÐ°. Ðу, кто Ñо мной в реÑторан?", }, super = { [1] = "Что за невероÑÑ‚Ð½Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°! ЕÑли Ñ Ð²Ð´Ñ€ÑƒÐ³ заболею, отвезите Ð¼ÐµÐ½Ñ Ñ‚ÑƒÐ´Ð°.", [2] = "Вот Ñто Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÑŽ - больница!", [3] = "Это Ñупербольница. Уж Ñ-то в них разбираюÑÑŒ.", }, bad = { [1] = "Ðе надо было мне приходить. Лучше бы Ñ Ð¿Ñ€Ð¾Ñидел четырехчаÑовую оперу!", [2] = "Мне до Ñих пор не по Ñебе. Они правда называют Ñвое заведение больницей? Больше похоже на Ñвинарник!", [3] = "Я Ñыт по горло визитами в подобные выгребные Ñмы и поÑтоÑнным вниманием преÑÑÑ‹! Я подаю в отÑтавку.", }, mediocre = { [1] = "Что ж, Ñ Ð²Ð¸Ð´Ð°Ð» и похуже. Им еÑть куда раÑти.", [2] = "Ðе знаю, Ñтоит ли туда обращатьÑÑ, еÑли почувÑтвуете ÑÐµÐ±Ñ Ð½ÐµÐ²Ð°Ð¶Ð½Ð¾.", [3] = "Что Ñ Ð¼Ð¾Ð³Ñƒ Ñказать, больница как больница. Я ожидал большего.", }, very_bad = { [1] = "Ðу и Ñвалка! Я приложу вÑе уÑÐ¸Ð»Ð¸Ñ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ее закрыли.", [2] = "Ðикогда не видел больницы хуже. Какой позор!", [3] = "Я потрÑÑен. Это Ð½ÐµÐ»ÑŒÐ·Ñ Ð½Ð°Ð·Ð²Ð°Ñ‚ÑŒ больницей! Мне надо выпить.", }, free_build = { [1] = "У Ð²Ð°Ñ Ð¾Ñ‡ÐµÐ½ÑŒ Ð¼Ð¸Ð»Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°. Ðе Ñложно будет заÑтавить ее работать без ограничений по деньгам, правда?", [2] = "Я не ÑкономиÑÑ‚, но Ñ Ð´ÑƒÐ¼Ð°ÑŽ что Ñ Ñ‚Ð¾Ð¶Ðµ Ñмогу управлÑть Ñтой больницей. ЕÑли понимаете о чем Ñто Ñ...", [3] = "Отлично Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‰Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°. БерегитеÑÑŒ кризиÑов! ХотÑ... вам тут не о чем беÑпокоитьÑÑ.", }, }, rep_boost = "Ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ ÑƒÐ»ÑƒÑ‡ÑˆÐ¸Ð»Ð°ÑÑŒ.", vip_remarked_name = "ПоÑле поÑÐµÑ‰ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ больницы, %s заметил:", cash_grant = "Вам выдали грант в размере %d$.", rep_loss = "Ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ñтрадала.", close_text = "СпаÑибо за приглашение.", }, -- Болезни disease_discovered = { discovered_name = "Ваша команда обнаружила новое заболевание. Это %s", can_cure = "Ð’Ñ‹ можете вылечить Ñту болезнь.", close_text = "Ðовое ÑоÑтоÑние было обнаружено.", need_to_build = "Ð’Ñ‹ должны поÑтроить %s чтобы вылечить Ñто.", need_to_build_and_employ = "ЕÑли вы поÑтроите %s и наймете %s то Ñможете преуÑпеть.", need_to_employ = "Ðаймите %s Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы ÑправитьÑÑ Ñ Ñтим кризиÑом.", }, disease_discovered_patient_choice = { need_to_build = "Ð”Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð½Ð°Ð¼ потребуетÑÑ %s.", need_to_employ = "Ðаймите %s чтобы вылечить Ñто.", what_to_do_question = "Что нам делать Ñ Ñтим пациентом?", guessed_percentage_name = "Мы не ÑовÑем уверены, что Ñ Ñтим пациентом. СущеÑтвует вероÑтноÑть в %d% что Ñто %s", choices = { send_home = "Отправить пациента домой.", research = "Отправить пациента в иÑÑледовательÑкий отдел.", wait = "Задержать пациента в больнице на какое-то времÑ.", }, disease_name = "Ваша команда обнаружила новое заболевание. Это %s", need_to_build_and_employ = "Можно будет попробовать, еÑли вы поÑтроите %s и наймете %s .", can_not_cure = "Мы не можем Ñто вылечить.", }, diagnosis_failed = { choices = { send_home = "Отправить пациента домой.", take_chance = "РиÑкнуть и попытатьÑÑ Ð²Ñ‹Ð»ÐµÑ‡Ð¸Ñ‚ÑŒ.", wait = "Задержать пациента, пока вы не поÑтроите еще кабинетов диагноÑтики.", }, situation = "Мы проверили Ñтого пациента на вÑех наших машинах, но так и не понÑли, что Ñ Ð½Ð¸Ð¼ ÑлучилоÑÑŒ.", what_to_do_question = "Что нам Ñ Ð½Ð¸Ð¼ делать?", partial_diagnosis_percentage_name = "ЕÑть ÑˆÐ°Ð½Ñ Ð² %d%, что мы правильно угадаем какой вид %s у Ñтого пациента.", }, -- Ð§Ñ€ÐµÐ·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð°Ñ ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ emergency = { locations = { [1] = "ÐовоуренгойÑкий химзавод", [2] = "Фальшивый УниверÑитет", [3] = "Центр Принудительного ОзеленениÑ", [4] = "ИнÑтитут Разработки ОпаÑных Штук", [5] = "Клуб Хороших Танцоров", [6] = "ИздательÑтво «МакулатураПреÑÑ»", [7] = "Похоронное бюро «Безенчук и нимфы»", [8] = "КитайÑкий реÑторанчик дÑди Вонга", [9] = "ГлавХимСбытСтыдЗагранПоÑтавка", }, num_disease = "У Ð½Ð°Ñ Ñ‚ÑƒÑ‚ %d человек Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ð·Ð¾Ð¼ %s и им требуетÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾Ðµ лечение.", cure_possible_drug_name_efficiency = "У Ð²Ð°Ñ ÐµÑть вÑе необходимое оборудование и ÑпециалиÑты. У Ð²Ð°Ñ ÐµÑть нужное лекарÑтво. Это %s и оно Ñффективно на %d%", cure_not_possible_employ = "Вам потребуетÑÑ Ð½Ð°Ð½Ñть %s", cure_not_possible = "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð²Ñ‹ не можете Ñто вылечить.", cure_possible = "У Ð²Ð°Ñ ÐµÑть вÑе необходимое оборудование и ÑпециалиÑты, так что вы, наверное, ÑправитеÑÑŒ.", choices = { accept = "Да. Я разберуÑÑŒ Ñ Ñтой Ñитуацией.", refuse = "Ðет. Я отказываюÑÑŒ в Ñтом учаÑтвовать.", }, location = "Ðа предприÑтии %s Ñ‡Ñ€ÐµÐ·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð°Ñ ÑитуациÑ.", cure_not_possible_build = "Вам надо будет поÑтроить %s", cure_not_possible_build_and_employ = "Вам надо будет поÑтроить %s и нанÑть %s", bonus = "Вознаграждение за помощь ÑоÑтавит %d. ЕÑли вы не ÑправитеÑÑŒ, ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ñерьезно поÑтрадает.", free_build = "ЕÑли вы преуÑпеете, то ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð²Ñ‹ÑитÑÑ, еÑли облажаетеÑÑŒ, то она будет Ñерьезно подпорчена.", num_disease_singular = "Тут 1 пациент Ñ %s и они требуют немедленого вниманиÑ.", }, emergency_result = { earned_money = "Из вÑей Ñуммы %d$ вы заработали %d$.", close_text = "Ðажмите чтобы закрыть.", saved_people = "Ð’Ñ‹ ÑпаÑли %d из %d человек.", }, choices = { return_to_main_menu = "ВернутьÑÑ Ð² главное меню", accept_new_level = "Перейти к Ñледующему уровню", decline_new_level = "Продолжить играть ещё некоторое времÑ", }, debug_fax = { text2 = "ВСЕГО ЛЮДЕЙ Ð’ БОЛЬÐИЦЕ %d ПРОВЕРЕÐО %d", text7 = "РЕПУТÐЦИЯ: %d ОЖИДÐЕТСЯ %d СÐИЖЕÐИЕ %d", text9 = "КÐТÐСТРОФЫ %d РÐЗРЕШЕÐЫ (MTHS) %d (%d)СÐИЖЕÐИЕ %d", text4 = "ФÐКТОРЫ : ДОКТОРР%d МЕДСЕСТРЫ %d ТЕРРИТОРИЯ %d КÐБИÐЕТ %d СТОИМОСТЬ %d", text1 = "ЛУЧШИЙ СЧЕТ %d", text6 = "СЛЕДУЮЩИЕ ФÐКТОРЫ ТÐК ЖЕ ПРИМЕÐЕÐЫ", close_text = "Да, Да, Да!", text3 = "КОЛИЧЕСТВР: ДОКТОРР%d МЕДСЕСТРЫ %d ТЕРРИТОРИЯ %d КÐБИÐЕТЫ %d СТОИМОСТЬ %d", text5 = "CONTRIBN : ДОКТОРР%d МЕДСЕСТРЫ %d ТЕРРИТОРИЯ %d КÐБИÐЕТЫ %d СТОИМОСТЬ %d ПРОЦЕÐТ(ОВ)", text8 = "AMENITIES %d PEEPS HANDLED %d REDUCTION %d", text10 = "УБИЙСТВР%d ДОПУЩЕÐО (MTHS) %d (%d) СÐИЖЕÐИЕ %d", text11 = "пациентОВ Ð’ ЭТОМ МЕСЯЦЕ %d", }, } -- 7. Советчик adviser = { tutorial = { build_reception = "Привет. Прежде вÑего, вашей новой больнице понадобитÑÑ Ñ€ÐµÐ³Ð¸Ñтратура. Выберите ее в меню обÑтановки коридоров.", order_one_reception = "Щелкните один раз на мигающей Ñтроке, чтобы заказать Ñтойку региÑтратуры.", accept_purchase = "Щелкните на мигающей кнопке, чтобы подтвердить заказ.", reception_invalid_position = "Стойка ÑÐµÐ¹Ñ‡Ð°Ñ Ñерого цвета, потому что ее Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ð·Ð¼ÐµÑтить здеÑÑŒ. Попробуйте передвинуть или развернуть ее.", rotate_and_place_reception = "Пощелкайте правой кнопкой, чтобы развернуть Ñтойку и уÑтановите ее левой кнопкой.", hire_receptionist = "Реще вам понадобитÑÑ Ñ€ÐµÐ³Ð¸Ñтратор, чтобы принимать новых поÑетителей.", select_receptionists = "Ðажмите мигающую кнопку, чтобы проÑмотреть региÑтраторов, которые ищут работу. ЧиÑло на кнопке показывает, Ñколько кандидатур доÑтупно.", next_receptionist = "Это резюме первой региÑтраторши в нашем ÑпиÑке. Ðажмите мигающую кнопку, чтобы поÑмотреть Ñледующее.", prev_receptionist = "Ðажмите мигающую кнопку, чтобы вернутьÑÑ Ðº предыдущему резюме.", choose_receptionist = "Выберите региÑтратора, чьи профеÑÑиональные ÑпоÑобноÑти и зарплата Ð²Ð°Ñ ÑƒÑтраивают и нажмите мигающую кнопку чтобы нанÑть ее.", receptionist_invalid_position = "ЗдеÑÑŒ ее поÑтавить нельзÑ.", place_receptionist = "ПоÑтавьте вашу новую региÑтраторшу, где хотите. Она доÑтаточно умна, чтобы добратьÑÑ Ð´Ð¾ Ñвоего Ñтола.", build_gps_office = "Чтобы начать прием пациентов, первым делом поÑтройте кабинет терапевта.", select_diagnosis_rooms = "Ðажмите мигающую кнопку, чтобы увидеть ÑпиÑок комнат диагноÑтики.", click_gps_office = "Ðажмите мигающую кнопку, чтобы выбрать кабинет терапевта.", click_and_drag_to_build = "Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° решите, какого размера будет новый кабинет. Удерживайте левую кнопку мыши и раÑÑ‚Ñните чертеж до нужного размера.", room_too_small = "Чертеж ÑÐµÐ¹Ñ‡Ð°Ñ ÐºÑ€Ð°Ñного цвета потому, что он Ñлишком мал. РаÑтащите его побольше.", room_in_invalid_position = "Ой! Такой чертеж не пойдет, краÑÐ½Ð°Ñ Ð¾Ð±Ð»Ð°Ñть перекрывает другие кабинеты или находитÑÑ Ð·Ð° Ñтенами больницы.", room_big_enough = "Такого размера доÑтаточно. Ð’Ñ‹ можете передвинуть кабинет или изменить размер еще раз, еÑли хотите.", place_door = "Двигайте мышью вдоль Ñтен кабинета, чтобы выбрать меÑто Ð´Ð»Ñ Ð´Ð²ÐµÑ€Ð¸.", door_in_invalid_position = "Ðет! ЗдеÑÑŒ Ð½ÐµÐ»ÑŒÐ·Ñ Ñделать вход в кабинет. Щелкните где-нибудь на Ñтене чертежа.", place_windows = "Проделайте неÑколько окон точно так же, как вы Ñделали дверь. Это ÑовÑем не обÑзательно, но так у ваших работников будет, куда глазеть в Ñвободное времÑ.", window_in_invalid_position = "Тут Ð½ÐµÐ»ÑŒÐ·Ñ Ñделать окно. Будьте добры указать другое меÑто на Ñтене кабинета.", place_objects = "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° вращает мебель, а Ð»ÐµÐ²Ð°Ñ ÑƒÑтанавливает ее.", object_in_invalid_position = "Это предмет Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ñтавить здеÑÑŒ. ПожалуйÑта, перемеÑтите его или попробуйте повращать, возможно он Ñтанет Ñюда боком.", confirm_room = "Ðажмите мигающую кнопку, чтобы завершить ÑтроительÑтво, или нажмите на креÑтик, чтобы вернутьÑÑ Ðº предыдущему шагу.", information_window = "Справочное Ñообщение раÑÑказывает вам о кабинете терапевта, который вы только что поÑтроили.", hire_doctor = "Чтобы обÑледовать и лечить пациентов, вам понадобитÑÑ Ð´Ð¾ÐºÑ‚Ð¾Ñ€.", select_doctors = "Ðажмите мигающую кнопку, чтобы проÑмотреть докторов, которые ищут работу.", choose_doctor = "Как Ñледует изучите резюме и рекомендации кандидатов прежде чем Ñделаете выбор.", place_doctor = "ПоÑтавьте доктора где-нибудь в пределах больницы. Он направитÑÑ Ð² кабинет терапевта, когда к вам придет первый пациент.", doctor_in_invalid_position = "Эй! Тут его поÑтавить нельзÑ.", start_tutorial = "Прочитайте ваше задание а потом нажмите левую кнопку мыши, чтобы начать обучение.", room_too_small_and_invalid = "Кабинет Ñлишком маленький, да еще размещен в недопуÑтимом меÑте.", build_pharmacy = "ПоздравлÑем! Теперь поÑтройте Ðптеку и наймите МедÑеÑтру, чтобы у Ð²Ð°Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ð»Ð°ÑÑŒ Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‰Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°.", }, epidemic = { hurry_up = "ЕÑли что-то не Ñделать Ñ Ñтой Ñпидемией, мы окажемÑÑ Ð² беде по Ñамые ноздри. ШевелитеÑÑŒ!", serious_warning = "Эта Ð·Ð°Ñ€Ð°Ð·Ð½Ð°Ñ Ð±Ð¾Ð»ÐµÐ·Ð½ÑŒ раÑпроÑтранÑетÑÑ Ñ Ð½ÐµÐ²Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑкороÑтью. Сделайте же что-нибудь!", multiple_epidemies = "Похоже, у Ð½Ð°Ñ Ñ‚ÑƒÑ‚ неÑколько Ñпидемий Ñразу. Какой кошмар.", }, staff_advice = { need_handyman_machines = "Вам понадобитÑÑ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¹, чтобы ремонтировать машины в больнице.", need_doctors = "У Ð²Ð°Ñ Ð½Ðµ хватает врачей. Можно попробовать отправить Ñамых лучших докторов в кабинеты Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼Ð¸ очередÑми, вдруг поможет.", need_handyman_plants = "Вам понадобитÑÑ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¹, чтобы поливать раÑтениÑ.", need_handyman_litter = "ПоÑетители ÑовÑем загадили нашу больницу. Ðаймите рабочего, чтобы подметать за ними.", need_nurses = "Вам нужно нанÑть медÑеÑтру. Ðптека и палата не могут работать Ñами по Ñебе.", too_many_doctors = "У Ð²Ð°Ñ Ñлишком много докторов. Ðекоторые из них болтаютÑÑ Ð±ÐµÐ· дела.", too_many_nurses = "Я думаю что у Ð²Ð°Ñ Ñлишком много медÑеÑтер... Они вам так нравÑÑ‚ÑÑ?", }, earthquake = { damage = "От землетрÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ñтрадали %d машин и %d человек.", alert = "ПриближаетÑÑ Ð·ÐµÐ¼Ð»ÐµÑ‚Ñ€ÑÑение. Ваши машины могут поÑтрадать от него, а еÑли они в плохом ÑоÑтоÑнии, то и вовÑе развалитьÑÑ.", ended = "Фух. Это было довольно Ñильным, примерно %d по шкале Рихтера.", }, surgery_requirements = { need_surgeons_ward_op = "Чтобы выполнÑть операции, вам надо нанÑть двух хирургов, а также поÑтроить палату и операционную.", need_surgeon_ward = "Чтобы начать оперировать, вам нужен еще один хирург и палата.", }, vomit_wave = { started = "Похоже, в нашей больнице завелÑÑ Ñ€Ð²Ð¾Ñ‚Ð½Ñ‹Ð¹ вируÑ. ЕÑли бы вы поддерживали чиÑтоту, Ñтого бы не ÑлучилоÑÑŒ. Ðаймите больше рабочих.", ended = "Уф! Похоже, волна тошноты отÑтупила. Ðа будущее, поÑтарайтеÑÑŒ Ñодержать больницу в чиÑтоте.", }, level_progress = { halfway_lost = "Ð’Ñ‹ на полпути к поражению.", dont_kill_more_patients = "Ð’Ñ‹ больше не можете Ñебе позволить убивать пациентов.", another_patient_killed = "Ðу вот! Еще один Ñклеил лаÑты. И таких уже %d по больнице.", halfway_won = "Ð’Ñ‹ на полпути к победе.", close_to_win_increase_value = "Ð’Ñ‹ почти выиграли. Увеличьте ÑтоимоÑть больницы на %d.", financial_criteria_met = "Ð’Ñ‹ уже заработали доÑтаточно денег. Ðе давайте баланÑу опуÑтитьÑÑ Ð½Ð¸Ð¶Ðµ %d и продолжайте Ñффективно управлÑть больницей.", nearly_won = "Ð’Ñ‹ уже почти выграли Ñтот уровень.", hospital_value_enough = "Ðе давайте ÑтоимоÑти больницы упаÑть ниже %d и разберитеÑÑŒ Ñ Ð¾Ñтальными проблемами, чтобы победить.", another_patient_cured = "Отлично, еще один пациент покинул больницу живым и здоровым. Мы вылечили уже %d.", three_quarters_lost = "Ð’Ñ‹ на три четверти проиграли Ñтот уровень.", reputation_good_enough = "Хорошо, ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð´Ð¾Ñтаточно выÑока. Ðе опуÑкайте ее ниже %d и разберитеÑÑŒ Ñ Ð¸Ð¼ÐµÑŽÑ‰Ð¸Ð¼Ð¸ÑÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°Ð¼Ð¸, чтобы победить.", cured_enough_patients = "Ð’Ñ‹ вылечили доÑтаточно пациентов, но ваша больница еще недоÑтаточно хороша.", nearly_lost = "Еще чуть-чуть - и вы проиграете.", improve_reputation = "Вам надо поднÑть репутацию еще на %d, чтобы выиграть Ñтот уровень.", three_quarters_won = "Ð’Ñ‹ прошли три четверти пути к победе.", }, staff_place_advice = { receptionists_only_at_desk = "РегиÑтраторы могут работать только в региÑтратуре.", only_psychiatrists = "Ð’ пÑихиатрии могут работать только доктора Ñ Ð´Ð¸Ð¿Ð»Ð¾Ð¼Ð¾Ð¼ пÑихиатра.", only_surgeons = "Только хирурги могут работать в операционной.", only_doctors_in_room = "Только Доктора могут работать в %s", only_nurses_in_room = "Только МедÑеÑтры могут работать в %s", nurses_cannot_work_in_room = "МедÑеÑтры не могут работать в %s", only_researchers = "Доктора могут работать в кабинете иÑÑледователей, только еÑли у них еÑть ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¸ÑÑледователÑ.", doctors_cannot_work_in_room = "Доктора не могут работать в %s", }, room_forbidden_non_reachable_parts = "Так вы заблокируете доÑтуп к другим чаÑÑ‚Ñм больницы.", research = { machine_improved = "%s улучшен вашим иÑÑледовательÑким отделом.", drug_fully_researched = "Ð’Ñ‹ иÑÑледовали %s на 100%.", new_machine_researched = "Изобретена Ð½Ð¾Ð²Ð°Ñ %s.", drug_improved = "ИÑÑледовательÑкий отдел улучшил ваше лекарÑтво от %s.", drug_improved_1 = "%s лекарÑтво было улучшенно в вашем Департаменте ИÑÑледований.", new_available = "Ðовый %s Ñтал доÑтупен.", new_drug_researched = "Было иÑÑледовано новое лекарÑтво Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ %s ", autopsy_discovered_rep_loss = "О вашей машине ÐвтоматичеÑкого Ð’ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñтало извеÑтно. Ждите негативную реакцию общеÑтвенноÑти.", }, boiler_issue = { minimum_heat = "Я Ð²Ð°Ñ Ð²ÐµÐ·Ð´Ðµ ищу! Паровой котел в подвале развалилÑÑ. Скоро у Ð½Ð°Ñ Ð² больнице Ñтанет веÑьма прохладно.", maximum_heat = "Паровой котел в подвале заклинило! РегулÑтор температуры вышел из ÑÑ‚Ñ€Ð¾Ñ Ð¸ мы тут вÑе Ñкоро помрем от жары! Можно попробовать поÑтавить еще автоматов Ñ Ð³Ð°Ð·Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹.", resolved = "Ðу Ñлава Богу! СиÑтема Ð¾Ñ‚Ð¾Ð¿Ð»ÐµÐ½Ð¸Ñ Ñнова работает как надо. Теперь температура в больнице Ñтанет нормальной.", }, room_requirements = { research_room_need_researcher = "Ð’ иÑÑледовательÑком отделе должен работать доктор-иÑÑледователь.", op_need_another_surgeon = "Вам нужен еще один хирург, чтобы Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð½Ð°ÐºÐ¾Ð½ÐµÑ† заработала.", op_need_ward = "Вам нужна палата, чтобы готовить пациентов к операции.", reception_need_receptionist = "Прием пацентов ведет региÑтратор.", psychiatry_need_psychiatrist = "Раз уж у Ð²Ð°Ñ ÐµÑть кабинет пÑихиатра, наймите и Ñамого пÑихиатра.", pharmacy_need_nurse = "Ðаймите медÑеÑтру, чтобы работать в аптеке.", ward_need_nurse = "Вам нужно нанÑть медÑеÑтру на работу в Ñтой палате.", op_need_two_surgeons = "Ðаймите двух хирургов, чтобы начать выполнÑть операции.", training_room_need_consultant = "Вам нужен конÑультант, чтобы читать лекции.", gps_office_need_doctor = "Вам нужно нанÑть доктора, который будет веÑти прием в Ñтом кабинете.", }, goals = { win = { money = "Заработайте еще %d$, чтобы ÑоответÑтвовать финанÑовым требованиÑм Ñтого уровнÑ.", cure = "Вылечите еще %d пациентов, чтобы выиграть Ñтот уровень.", reputation = "Поднимите Ñвою репутацию до %d, чтобы удолетворить Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÑ€Ð¾Ð²Ð½Ñ.", value = "Вам нужно поднÑть ÑтоимоÑть больницы до %d$", }, lose = { kill = "Убейте еще %d пациентов и вы проиграете!", }, }, warnings = { charges_too_low = "Ð’Ñ‹ мало проÑите за Ñвои уÑлуги. Хоть Ñто и привлекает новых клиентов, вы Ñ Ð½Ð¸Ñ… много не получите.", charges_too_high = "У Ð²Ð°Ñ Ð¾Ñ‡ÐµÐ½ÑŒ выÑокие цены. Это может временно поднÑть доходы, но так вы отпугиваете потенциальных клиентов.", staff_overworked = "Ваши люди Ñильно уÑтают. От Ñтого они работают кое-как и могут Ñоверщать катаÑтрофичеÑкие ошибки.", doctors_tired = "Ваши доктора Ñильно уÑтали. Скорее разрешите им отдохнуть.", people_did_it_on_the_floor = "У одного из пациентов иÑÑÑкло терпение. Теперь кому-то придетÑÑ Ð²Ñе Ñто отмывать.", queues_too_long = "У Ð²Ð°Ñ Ð² больнице длинные очереди.", money_very_low_take_loan = "Ваш банковÑкий Ð±Ð°Ð»Ð°Ð½Ñ Ð½Ð¸Ð¶Ðµ плинтуÑа. Я Ñлышала, у них там займы выдают.", patients_very_thirsty = "Ваши пациенты Ñтрадают от жажды. ЕÑли вы не поÑтавите торговые автоматы, они пойдут пить домой, а лечитьÑÑ - в другую больницу!", machinery_very_damaged = "Срочно найдите ремонтника, чтобы чинить ваши машины, а то кто-нибудь Ñерьезно поÑтрадает!", handymen_tired2 = "Ваши рабочие ÑпÑÑ‚ на ходу. Ðемедленно отправьте их в комнату отдыха.", desperate_need_for_watering = "Ваши раÑÑ‚ÐµÐ½Ð¸Ñ ÑƒÐ¼Ð¸Ñ€Ð°ÑŽÑ‚ от жажды. Ðаймите рабочего, чтобы поливать их.", nurses_tired = "Ваши медÑеÑтры валÑÑ‚ÑÑ Ñ Ð½Ð¾Ð³ от уÑталоÑти. Им очень нужен отдых.", too_much_litter = "У Ð²Ð°Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° Ñ Ð¼ÑƒÑором. Ее можно решить, нанÑв еще рабочих.", reception_bottleneck = "РегиÑтратура не ÑправлÑетÑÑ Ñ Ð½Ð°Ð¿Ð»Ñ‹Ð²Ð¾Ð¼ поÑетителей. Вам нужно раÑширить ее и нанÑть еще региÑтратора.", place_plants4 = "ПоÑтавьте еще горшков Ñ Ñ€Ð°ÑтениÑми, чтобы облегчить ÑÑ‚Ñ€Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð².", change_priorities_to_plants = "Прикажите вашим рабочим чаще поливать раÑтениÑ.", staff_too_hot = "Вашим Ñотрудникам жарко. Уберите лишние батареи из кабинетов или уменьшите нагрев.", finanical_trouble2 = "Ðачинайте зарабатывать деньги или окажетеÑÑŒ за воротами. ПотерÑйте еще %d$ и вы проиграете.", plants_thirsty = "ПриÑматривайте за раÑтениÑми, их не помешает поливать почаще.", litter_everywhere = "У Ð²Ð°Ñ Ñвалка, а не больница. Ðаправьте еще рабочих на уборку.", nurses_tired2 = "Ваши медÑеÑтры заÑыпают на работе. Отправьте их отдыхать.", plants_dying = "Ваши раÑÑ‚ÐµÐ½Ð¸Ñ Ð·Ð°Ñыхают на глазах, они в жизни не видели лейки. Мертвые раÑÑ‚ÐµÐ½Ð¸Ñ Ð½Ð°Ð³Ð¾Ð½ÑÑŽÑ‚ тоÑку на пациентов.", reduce_staff_rest_threshold = "Я тут подумала, может Ñтоит уменьшить порог уÑталоÑти Ð´Ð»Ñ Ð¿ÐµÑ€Ñонала в наÑтройках политики больницы? Я не то, что бы наÑтаиваю.", more_toilets = "Больнице нужны туалеты. Ваши клиенты Ñ Ñ‚Ñ€ÑƒÐ´Ð¾Ð¼ Ñдерживают ÑебÑ.", hospital_is_rubbish = "Везде говорÑÑ‚, что ваша больница ни к черту. Это ничем не помогает нам привлекать новых клиентов.", pay_back_loan = "У Ð²Ð°Ñ Ð¿Ð¾Ð»Ð½Ð¾ денег. Как наÑчет возврата долгов?", financial_trouble3 = "СоÑтоÑние вашего банковÑкого Ñчета внушает опаÑениÑ. Вам очень нужны деньги. Ð’Ñ‹ вÑего в %d$ от банкротÑтва.", bankruptcy_imminent = "Эй! Еще немного и вы обанкротитеÑÑŒ. Тратьте оÑторожнее!", build_toilet_now = "Терпение ваших клиентов подходит к концу. Ðемедленно поÑтройте туалет, или поÑледÑÑ‚Ð²Ð¸Ñ Ð½Ðµ заÑтавÑÑ‚ ÑÐµÐ±Ñ Ð¶Ð´Ð°Ñ‚ÑŒ. И переÑтаньте ухмылÑтьÑÑ, Ñто Ñерьезно!", patient_stuck = "Кто-то заблудилÑÑ Ð² ваших коридорах. У Ð²Ð°Ñ Ñ‚ÑƒÑ‚ больница или парк развлечений?", no_patients_last_month = "Ð’ Ñтом меÑÑце у Ð½Ð°Ñ Ð½Ðµ было ни одного клиента. Вот так Ñюрприз.", more_benches = "Ðе помешает поÑтавить Ñкамеек. Ðе заÑтавлÑйте больных ÑтоÑть.", many_epidemics = "Похоже, у Ð½Ð°Ñ Ñ‚ÑƒÑ‚ неÑколько Ñпидемий Ñразу. Это может обернутьÑÑ Ñерьезными проблемами.", place_plants_to_keep_people = "Люди злÑÑ‚ÑÑ Ð¸ уходÑÑ‚. Может горшков Ñ Ñ†Ð²ÐµÑ‚Ð°Ð¼Ð¸ поÑтавить?", patients_thirsty2 = "Пациенты хотÑÑ‚ пить. Купите еще торговых автоматов или переÑтавьте те, что еÑть, поудобнее.", money_low = "У Ð²Ð°Ñ Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÑŽÑ‚ÑÑ Ð´ÐµÐ½ÑŒÐ³Ð¸!", staff_unhappy = "Ваши Ñотрудники недовольны работой. Попробуйте подбодрить их премиÑми, а лучше поÑтройте комнату перÑонала. Еще можно изменить политику больницы.", people_freezing = "ÐевероÑтно, в наш век центрального Ð¾Ñ‚Ð¾Ð¿Ð»ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐ¸ пациенты дрожат от холода. ПоÑтавьте батареи Ð¾Ñ‚Ð¾Ð¿Ð»ÐµÐ½Ð¸Ñ Ð¸ увеличьте нагрев.", need_toilets = "Пациентам нужны туалеты. И, желательно, поÑкорее.", nobody_cured_last_month = "Ð’ прошедшем меÑÑце вы никого не вылечили.", patients_very_cold = "Пациенты замерзают. Увеличьте нагрев и поÑтавьте побольше батарей в больнице.", build_toilets = "Ðемедленно поÑтройте туалет или ÑтолкнетеÑÑŒ Ñ Ð°Ð½Ñ‚Ð¸Ñанитарными поÑледÑтвиÑми. Рзапах...", many_killed = "Ð’Ñ‹ уже убили %d человек. Ð’Ñ‹ же их вроде лечить должны.", place_plants2 = "Люди уходÑÑ‚. Может, им не хватает зеленых раÑтений?", staff_tired = "Ваши Ñотрудники невероÑтно уÑтали. ЕÑли вы не дадите им отдохнуть в комнате перÑонала, они могут Ñлететь Ñ ÐºÐ°Ñ‚ÑƒÑˆÐµÐº.", machines_falling_apart = "Ваши машины разваливаютÑÑ. Ðаймите ремонтника немедленно!", patients_unhappy = "ЛюдÑм не нравитÑÑ Ð²Ð°ÑˆÐ° больница. Предпримите что-нибудь по Ñтому поводу.", place_plants3 = "Пациенты пребывают в печали. ПоÑтавьте горшков Ñ Ñ†Ð²ÐµÑ‚Ð°Ð¼Ð¸, чтобы подбодрить их.", staff_unhappy2 = "Ваши Ñотрудники недовольно ворчат. Скоро они захотÑÑ‚ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Ñ‹.", cash_low_consider_loan = "У Ð²Ð°Ñ Ð½Ð° Ñчету негуÑто. Как наÑчет кредита?", queue_too_long_at_reception = "У Ð²Ð°Ñ Ð² региÑтратуре Ð¾Ð³Ñ€Ð¾Ð¼Ð½Ð°Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´ÑŒ. ПоÑтавьте еще одну Ñтойку и наймите региÑтратора.", queue_too_long_send_doctor = "Ð’ больнице Ð¾Ð³Ñ€Ð¾Ð¼Ð½Ð°Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´ÑŒ в %s. УбедитеÑÑŒ, что там ведетÑÑ Ð¿Ñ€Ð¸ÐµÐ¼.", financial_trouble = "Ваше финанÑовое положение удручает. Сделайте же что-нибудь! Потратьте еще %d$ и вы проиграете!", doctors_tired2 = "Ваши доктора невероÑтно уÑтали. Им нужен отдых.", handymen_tired = "Ваши рабочие невероÑтно уÑтали. Им нужен отдых.", patient_leaving = "Вот уходит пациент. Причина? У Ð²Ð°Ñ Ð½Ð¸ÐºÑ‡ÐµÐ¼Ð½Ð°Ñ Ð¸ беÑÐ¿Ð¾Ð»ÐµÐ·Ð½Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°.", machinery_damaged2 = "Вашим машинам требуетÑÑ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚, наймите рабочего.", patients_leaving = "Клиенты уходÑÑ‚. Сделайте вашу больницу более терпимой, поÑтавив Ñкамейки, раÑтениÑ, автоматы Ñ Ð³Ð°Ð·Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹ и прочее.", epidemic_getting_serious = "Эта Ð·Ð°Ñ€Ð°Ð·Ð½Ð°Ñ Ð±Ð¾Ð»ÐµÐ·Ð½ÑŒ быÑтро раÑпроÑтранÑетÑÑ. Сделайте же что-нибудь!", machinery_damaged = "БыÑтрее почините Ñвои машины. Скоро они начнут ломатьÑÑ.", people_have_to_stand = "ÐеÑчаÑтные больные вынуждены ÑтоÑть. ПоÑтавьте еще Ñкамеек.", build_staffroom = "Ðемедленно поÑтройте комнату перÑонала. Ваши люди Ñкоро начнут падать в обморок от уÑталоÑти. Ðеужели Ð´Ð»Ñ Ð²Ð°Ñ Ð½ÐµÑ‚ ничего ÑвÑтого!", machinery_slightly_damaged = "Оборудование вашего гоÑÐ¿Ð¸Ñ‚Ð°Ð»Ñ Ð¿Ð¾Ð½ÐµÐ¼Ð½Ð¾Ð³Ñƒ изнашиваетÑÑ. Ðе забывайте чинить его Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚ времени.", need_staffroom = "Вашим Ñотрудникам нужна комната Ð´Ð»Ñ Ð¾Ñ‚Ð´Ñ‹Ñ…Ð°.", patients_getting_hot = "Ð’ вашей больнице Ñлишком жарко. ПожалуйÑта, Ñнизьте нагрев или уберите чаÑть батарей.", machinery_deteriorating = "Ваши машины начали изнашиватьÑÑ Ð¾Ñ‚ чаÑтого иÑпользованиÑ. ПриÑматривайте за ними.", patients_too_hot = "Пациенты жалуютÑÑ Ð½Ð° жару. Уберите лишние батареи, Ñнизьте температуру или поÑтавьте еще автоматов Ñ Ð³Ð°Ð·Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹.", patients_thirsty = "Пациенты хотÑÑ‚ пить. Может быть, Ñтоит поÑтавить торговые автоматы?", machine_severely_damaged = "%s Ñкоро ÑовÑем развалитÑÑ.", litter_catastrophy = "МуÑор в вашей больнице выходит из под контролÑ. Скорее направьте еще рабочих на уборку!", staff_very_cold = "Сотрудники жалуютÑÑ Ð½Ð° холод. Увеличьте температуру или поÑтавьте еще батарей.", deal_with_epidemic_now = "ЕÑли что-то не Ñделать Ñ Ñтой Ñпидемией, мы окажемÑÑ Ð² беде по Ñамые ноздри. ШевелитеÑÑŒ!", too_many_plants = "Я вижу, вы любите цветы. У Ð²Ð°Ñ Ñ‚ÑƒÑ‚ наÑтоÑщие джунгли.", patients_really_thirsty = "Пациенты очень хотÑÑ‚ пить. ПоÑтавьте ваши торговые автоматы туда, где Ñамые длинные очереди.", some_litter = "Дайте рабочим указание прибратьÑÑ Ð² больнице, пока проблема Ñ Ð¼ÑƒÑором не разроÑлаÑÑŒ.", patients_annoyed = "Люди терпеть не могут вашу больницу, и Ñ Ð½Ðµ могу их винить за Ñто. РазберитеÑÑŒ Ñ Ð²Ð°ÑˆÐ¸Ð¼Ð¸ проблемами, или будет хуже!", doctor_crazy_overwork = "О Ðет! Один из ваших докторов Ñтал безумным из-за переработки! Он может вернутьÑÑ Ð² норму, еÑли вы немедленно отправите его отдыхать.", no_desk_7 = "Ð’Ñ‹ поÑтроили региÑтратуру, как наÑчет нанÑть региÑтратора? Запомните, у Ð²Ð°Ñ Ð½Ðµ будет никаких пациентов, пока вы Ñ Ñтим не разберетеÑÑŒ!", researcher_needs_desk_1 = "ИÑÑледователю нужен Ñтол, чтобы на нем работать.", no_desk_3 = "Это проÑто необыкновенно, прошел почти года, а вы так и не нанÑли региÑтратора! Как вы раÑчитываете получить пациентов? Теперь разберитеÑÑŒ Ñ Ñтим и прекратите заниматьÑÑ ÐµÑ€ÑƒÐ½Ð´Ð¾Ð¹.", no_desk_6 = "У Ð²Ð°Ñ Ð½Ð°Ð½ÑÑ‚ региÑтратор, теперь как наÑчет поÑтроить Ð´Ð»Ñ Ð½ÐµÐµ РегиÑтратуру?", no_desk_1 = "ЕÑли вы хотите, чтобы пациенты приходили в вашу больницу, вам Ñледует поÑтроить РегиÑтратуру и нанÑть региÑтратора, чтобы в ней работать.", falling_5 = "Это не меÑто, чтобы выпинывать из него людей! Они больны, знаете ли!", no_desk = "Вам Ñледует поÑтроить РегиÑтратуру и нанÑть региÑтратора, наконец!", no_desk_2 = "КлаÑÑно Ñработано! Это должно быть мировой рекорд: почти год и ни одного пациента! ЕÑли вы и дальше хотите управлÑть Ñтой больницей вам нужно поÑтроить РегиÑтратуру и нанÑть региÑтратора Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ в ней.", cannot_afford = "У Ð²Ð°Ñ Ð½ÐµÐ´Ð¾Ñтаточно денег, чтобы нанÑть Ñтого человека!", research_screen_open_1 = "Ð”Ð»Ñ Ð´Ð¾Ñтупа к разделу иÑÑледований, Ñначала нужно поÑтроить ИÑÑледовательÑкий кабинет.", nurse_needs_desk_1 = "Каждой медÑеÑтре нужен ÑобÑтвенный Ñтол Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹.", researcher_needs_desk_2 = "Ваш иÑÑледователь благодарее вам, что вы разрешили Ñделать ему перерыв. ЕÑли вы намереваетеÑÑŒ иметь больше Ñотрудников Ð´Ð»Ñ Ð¸ÑÑледований, то каждому из них нужно купить перÑональный Ñтол Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹.", research_screen_open_2 = "ИÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹ на Ñтом уровне.", falling_1 = "ЭÑÑй! Ñто не Ñмешно! Смотри куда кликаешь мышью, кое-кто может и поÑтрадать!", receptionists_tired2 = "Ваши региÑтраторы очень уÑтали. Дайти ем отдохнуть немедленно!", falling_3 = "Ðуч, Ñто было больно, кто-нибудь вызовите доктора!", no_desk_5 = "Что ж, Ñто Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸, Ñледует подождать и пациенты Ñкоро начнуть приходить!", no_desk_4 = "РегиÑтратору нужен ÑобÑтвенных Ñтол, чтобы приветÑтвовать пациентов, когда они заходÑÑ‚", falling_2 = "Хватит заниматьÑÑ ÐµÑ€ÑƒÐ½Ð´Ð¾Ð¹! Как вам Ñто нравитÑÑ?", researcher_needs_desk_3 = "Каждому иÑÑледователю нужен ÑобÑтвенный Ñтол Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹.", cannot_afford_2 = "У Ð²Ð°Ñ Ð½ÐµÐ´Ð¾Ñтаточно денег в банке, чтобы Ñделать Ñту покупку!", falling_6 = "Это не боулинг, Ñ Ð±Ð¾Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ людьми Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ñ‰Ð°Ñ‚ÑŒÑÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ‹Ð¼ образом!", nurse_needs_desk_2 = "Ваша МедÑеÑтра очень благодарна, что вы разрешили ей отдохнуть. ЕÑли вам нужно чтобы в Палате работало больше 1 медÑеÑтры купите каждой отдельный Ñтол.", receptionists_tired = "Ваши региÑтраторы очень уÑтали. Ðемедленно отправте их отдыхать.", falling_4 = "Это больница, а не Парк Развлечений!", }, placement_info = { door_cannot_place = "Извините, тут дверь проделать нельзÑ.", staff_cannot_place = "К Ñожалению, Ñтого человека Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð´ÐµÑÑŒ поÑтавить.", object_cannot_place = "Сюда не помеÑтитÑÑ.", room_cannot_place = "ЗдеÑÑŒ Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÑтроить кабинет.", room_cannot_place_2 = "Тут кабинет не помеÑтитÑÑ.", window_cannot_place = "ЗдеÑÑŒ Ð½ÐµÐ»ÑŒÐ·Ñ Ñделать окно.", reception_cannot_place = "РегиÑтратура Ñюда не вÑтанет.", reception_can_place = "Ð’Ñ‹ можете уÑтановить региÑтратуру здеÑÑŒ.", window_can_place = "Ð’Ñ‹ можете раÑположить окно тут. Оно прекраÑно.", door_can_place = "Ð’Ñ‹ можете раÑположить дверь тут, еÑли хотите.", object_can_place = "Ð’Ñ‹ можете поÑтавить Ñтот объект здеÑÑŒ.", staff_can_place = "Ð’Ñ‹ можете размеÑтить Ñтого Ñотрудника тут. ", }, information = { larger_rooms = "Большие кабинеты повышают Ñамооценку и производительноÑть людей, которые в них работают.", extra_items = "Дополнительные предметы в кабинетах нравÑÑ‚ÑÑ Ð²Ð°ÑˆÐ¸Ð¼ Ñотрудникам и повышают производительноÑть.", epidemic = "У Ð²Ð°Ñ Ð² больнице раÑпроÑтранÑетÑÑ Ð·Ð°Ñ€Ð°Ð·Ð½Ð°Ñ Ð±Ð¾Ð»ÐµÐ·Ð½ÑŒ. Это нужно немедленно преÑечь!", promotion_to_doctor = "Один из ваших Ñтудентов Ñтал доктором.", emergency = "Ð§Ñ€ÐµÐ·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð°Ñ ÑитуациÑ! Караул! СпаÑайÑÑ ÐºÑ‚Ð¾ может!", patient_abducted = "Вашего клиента похищают пришельцы!", first_cure = "ÐžÑ‚Ð»Ð¸Ñ‡Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°! Ð’Ñ‹ только что вылечили Ñвоего первого пациента.", promotion_to_consultant = "Один из ваших докторов Ñтал конÑультантом.", handyman_adjust = "Ð’Ñ‹ можете повыÑить ÑффективноÑть рабочих, перераÑпределив их приоритеты.", promotion_to_specialist = "Один из ваших докторов Ñтал %s.", initial_general_advice = { rats_have_arrived = "Ð’ вашей больнице завелиÑÑŒ крыÑÑ‹. Попробуйте поÑтрелÑть их Ñвоей мышью.", first_patients_thirsty = "ПоÑетители в вашей больнице хотÑÑ‚ пить. ПоÑтавьте Ð´Ð»Ñ Ð½Ð¸Ñ… автоматы Ñ Ð³Ð°Ð·Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹.", research_now_available = "Ð’Ñ‹ поÑтроили иÑÑледовательÑкий отдел. Теперь вы можете открыть окно иÑÑледований.", decrease_heating = "ПоÑетители жалуютÑÑ Ð½Ð° жару. Понизьте уровень нагрева. Это можно Ñделать в окне карты.", first_emergency = "Ðад головой чрезвычайных пациентов крутитÑÑ Ð¼Ð¸Ð³Ð°Ð»ÐºÐ°. Вылечите их до того, как закончитÑÑ Ð²Ñ€ÐµÐ¼Ñ.", first_epidemic = "У Ð²Ð°Ñ Ð² больнице ÑпидемиÑ! Примите решение, объÑвите ли вы о ней или попытаетеÑÑŒ Ñкрыть.", taking_your_staff = "У Ð²Ð°Ñ Ð¿Ñ‹Ñ‚Ð°ÑŽÑ‚ÑÑ Ð¿ÐµÑ€ÐµÐ¼Ð°Ð½Ð¸Ñ‚ÑŒ Ñотрудника. Вам придетÑÑ Ð¿Ð¾Ð±Ð¾Ñ€Ð¾Ñ‚ÑŒÑÑ, еÑли хотите удержать его.", place_radiators = "ПоÑетители жалуютÑÑ Ð½Ð° холод. Ð’Ñ‹ можете заказать дополнительные батареи из меню обÑтановки коридоров.", epidemic_spreading = "Ð—Ð°Ñ€Ð°Ð·Ð½Ð°Ñ Ð±Ð¾Ð»ÐµÐ·Ð½ÑŒ раÑпроÑтранÑетÑÑ Ð¿Ð¾ больнице. ПоÑтарайтеÑÑŒ вылечить зараженных до того, как они уйдут домой.", machine_needs_repair = "Одна из ваших машин требует ремонта. Ðайдите дымÑщуюÑÑ Ð¼Ð°ÑˆÐ¸Ð½Ñƒ и щелкните на ней. Затем нажмите кнопку вызова рабочего.", increase_heating = "Пациенты замерзают. Увеличьте нагрев в окне карты.", first_VIP = "Скоро Ð²Ð°Ñ Ð¿Ð¾Ñетит Ñ ÑкÑкурÑией какаÑ-то Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ ÑˆÐ¸ÑˆÐºÐ°. ПоÑтарайтеÑÑŒ, чтобы он не заметил антиÑанитарии и недовольных пациентов.", psychiatric_symbol = "Доктора, разбирающиеÑÑ Ð² вопроÑах пÑихиатрии, оборзначены Ñимволом: |", research_symbol = "Доктора, умеющие проводить иÑÑледованиÑ, обозначены Ñимволом: }", surgeon_symbol = "Доктора, кто может проводить операции, обозначены Ñимвовом: {", autopsy_available = "ИÑÑледована машина Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого вÑкрытиÑ. С ее помощью вы можете избавлÑтьÑÑ Ð¾Ñ‚ проблемных или нежелательных пациентов и проводить иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°Ð´ их оÑтанками. Ðо предупреждаем, что иÑпользование Ñтой машины - Ñто крайне ÑÐ¿Ð¾Ñ€Ð½Ð°Ñ Ð¿Ñ€Ð°ÐºÑ‚Ð¸ÐºÐ°.", }, patient_leaving_too_expensive = "Пациент ушел, не заплатив за %s. Ð”Ð»Ñ Ð½ÐµÐ³Ð¾ Ñто Ñлишком дорого.", vip_arrived = "Внимание! %s прибыл в вашу больницу Ñ Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¼ визитом! ПроÑледите, чтобы вÑе прошло как по маÑлу.", epidemic_health_inspector = "Слухи об Ñпидемии в вашей больнице доÑтигли миниÑтерÑтва здравоохранениÑ. ПриготовьтеÑÑŒ в приезду инÑпектора.", first_death = "Ð’Ñ‹ только что угробили Ñвоего первого пациента. ÐадеюÑÑŒ, вы Ñобой довольны?", pay_rise = "Кто-то из ваших Ñотрудников угрожает уволитьÑÑ. Ð’Ñ‹ можете ÑоглаÑитьÑÑ Ð½Ð° повышение зарплаты или отказать. Ðажмите на значок Ñлева внизу чтобы увидеть заÑвление.", place_windows = "Дополнительные окна делают комнаты Ñветлее, а перÑонал - ÑчаÑтливее.", fax_received = "Значок, который ÑÐµÐ¹Ñ‡Ð°Ñ Ð²Ñ‹Ð»ÐµÐ· Ñлева внизу Ñкрана Ñообщает вам что-то важное или требует ваше решение по какому-либо вопроÑу.", }, competitors = { staff_poached = "Один из Ñотрудников вашей больницы перешел на работу в другой гоÑпиталь.", land_purchased = "%s купил учаÑток земли.", hospital_opened = "%s открыл конкурирующую больницу.", }, praise = { many_benches = "пациентам доÑтаточно меÑÑ‚ Ð´Ð»Ñ ÑедениÑ. ПрекраÑно.", few_have_to_stand = "Очень немногим приходитÑÑ ÑтоÑть в вашей больнице. пациенты благодарны вам за Ñто.", plenty_of_benches = "Тут еÑть много Ñкамеек, так что Ñто не проблема.", plants_thriving = "Очень хорошо. Ваши раÑÑ‚ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñто процветают. Они выглÑдÑÑ‚ чудеÑно. Поддерживайте их и вы можете выйграть за них приз.", plants_are_well = "Мило. Ð’Ñ‹ хорошо заботитеÑÑŒ о Ñвоих раÑтениÑÑ….", many_plants = "ПрекраÑно. У Ð²Ð°Ñ ÐµÑть много раÑтений. пациенты будут благодарны за Ñто.", patients_cured = "%d пациентов вылечено." }, build_advice = { placing_object_blocks_door = "РаÑположение Ñтого объета здеÑÑŒ не позволит людÑм входить в дверь.", door_not_reachable = "Люди не Ñлогут входить в Ñту дверь. Подумайте об Ñтом.", blueprint_would_block = "Ð¢Ð°ÐºÐ°Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²ÐºÐ° будет блокировать другие комнаты. Попробуйте изменить размер комнаты или перемеÑтить ее в другое меÑто!", blueprint_invalid = "Это не допуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²ÐºÐ°.", }, multiplayer = { poaching = { not_interested = " Ха! Им не интереÑно работать на Ð²Ð°Ñ - они ÑчаÑтливы на Ñвоем меÑте.", already_poached_by_someone = "Ðевозможно! Кто-то уже пытаетÑÑ Ð¿ÐµÑ€ÐµÐ¼Ð°Ð½Ð¸Ñ‚ÑŒ Ñтого человека.", in_progress = "Я дам вам знать когда Ñтот человек захочет перейти работать на ваÑ.", }, players_failed = "ÐижеÑледующим игрокам не удалоÑÑŒ доÑтичь поÑледней цели : ", everyone_failed = "Ð’Ñем не удалоÑÑŒ доÑтичь поÑледней цели. ПоÑтому каждый может поиграть на !", }, cheats = { bloaty_cheat = "Обман Ðадутой головы активирован!", th_cheat = "ПоздравлÑем, вы разблокировали обманки!", hairyitis_cheat = "Обман ОволоÑÐ¸Ñ‚ÐµÐ»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½!", crazy_on_cheat = "О нет! Ð’Ñе доктора Ñошли Ñ ÑƒÐ¼Ð°!", roujin_off_cheat = "СоÑÑ‚Ñзание Roujin'а деактивировано.", crazy_off_cheat = "Уффф... врачи воÑÑтановили Ñвое здравомыÑлие.", hairyitis_off_cheat = "Обман ОволоÑÐ¸Ñ‚ÐµÐ»Ñ Ð´ÐµÐ°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½.", roujin_on_cheat = "СоÑÑ‚Ñзание Roujin'а активировано! Удачи...", bloaty_off_cheat = "Обман Ðадутой головы деактивирован.", }, } -- 8. ПиÑьма из миниÑтерÑтва introduction_texts = { demo = "Добро пожаловать в демонÑтрационную больницу!" .. "К Ñожалению демонÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñодержит только Ñтот уровень. Ðо Ñтого более чем доÑтаточно, чтобы занÑть Ð²Ð°Ñ Ð½Ð° некоторое времÑ!" .. "Ð’Ñ‹ будете ÑталкиватьÑÑ Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ заболеваниÑми, которые будет требовать разных кабинетов Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ. Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚ времени, будут поÑтупать пациенты, требующие немедленного лечениÑ. Так же вам необходимо разрабатывать новые кабинеты иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¸ÑÑледовательÑкий кабинет." .. "Ваша цель заработать $100 000, ÑтоимоÑть больницы должна быть $70 000, а Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ 700. Кроме того, вы должны вылечивать не менее 75% Ñвоих пациентов." .. "УдоÑтоверьтеÑÑŒ, что ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð½Ðµ упадет ниже 300 и вы не убиваете более 40% ваших пациентов. Иначе вы проиграете." .. "Удачи!", level1 = "Добро пожаловать в вашу первую больницу!//" .. "Чтобы начать принимать пациентов, поÑтройте региÑтратуру и кабинет терапевта, наймите региÑтраторшу и доктора. " .. "Потом проÑто ждите когда придут первые пациенты." .. "Также, вам не помешает поÑтроить кабинет пÑихиатра и нанÑть доктора Ñ ÑоответÑтвующим дипломом. " .. "Чтобы лечить больных, вам потребуетÑÑ Ð°Ð¿Ñ‚ÐµÐºÐ° и медÑеÑтра. " .. "ПриготовьтеÑÑŒ принимать пациентов Ñ Ñ€Ð°Ð·Ð´ÑƒÑ‚Ð¾Ð¹ головой. Ð”Ð»Ñ Ð½Ð¸Ñ… надо будет поÑтроить кабинет Ñо Ñпециальной машиной. " .. "Попробуйте вылечить 10 человек и Ñмотрите, чтобы ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð½Ðµ упала ниже 200.", level2 = "Ð’ Ñтой меÑтноÑти вÑтречаетÑÑ Ð±Ð¾Ð»ÑŒÑˆÐµ разных заболеваний. " .. "Подготовьте больницу к наплыву пациентов и не забудьте поÑтроить иÑÑледовательÑкий отдел. " .. "Очень важно поддерживать ваше заведение в чиÑтоте и ÑтаратьÑÑ Ð¿Ð¾Ð²Ñ‹Ñить Ñвою репутацию. Ожидайте Ð¿Ñ€Ð¸Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð² Ñ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ð¼Ð¸ Ñзыками - поÑтройте Ð´Ð»Ñ Ð½Ð¸Ñ… Ñпециальный кабинет. " .. "Комната кардиографии поможет вам точнее Ñтавить диагнозы. " .. "Оба Ñтих кабинета должны быть иÑÑледованы прежде, чем вы Ñможете их поÑтроить. Ð’ окне карты вы теперь можете приобретать дополнительные корпуÑа Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ больницы. " .. "Ваша цель - заработать 10 000$, вылечить 40 человек и не уронить репутацию ниже 300.", level3 = "Ðа Ñтот раз ваша больница будет раÑположена в богатом районе. " .. "МиниÑтерÑтво Ð·Ð´Ñ€Ð°Ð²Ð¾Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚ получить здеÑÑŒ нехилую прибыль. " .. "Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°, вам предÑтоит заработать хорошую репутацию, затем ÑоÑредоточтеÑÑŒ на превращении ее в деньги. " .. "Знайте, что вы можете ÑтолкнутьÑÑ Ñ Ñ‡Ñ€ÐµÐ·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ñ‹Ð¼Ð¸ ÑитуациÑми. " .. "Это означает, что к вам в больницу прибудет группа людей Ñ Ñерьезным заболеванием. " .. "ЕÑли вы уÑпеете их вылечить за ограниченное времÑ, то заработаете Ñолидный Ð±Ð¾Ð½ÑƒÑ Ð¸ хорошую репутацию. " .. "Вам придетÑÑ ÑтолкнутьÑÑ Ñ Ñиндромом КоролÑ, а также выделить деньги на поÑтройку палаты и операционной. " .. "Заработайте 20 000$ чтобы добитьÑÑ ÑƒÑпеха.", level4 = "ПроÑледите, чтобы пациенты были довольны, хорошо обÑлужены и не умирали." .. "Ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð¸Ð¼ÐµÐµÑ‚ большое значение, так что поÑтарайтеÑÑŒ поднÑть ее как можно выше." .. "Ðе беÑпокойтеÑÑŒ о деньгах - они придут вмеÑте Ñ Ð²Ñ‹Ñокой репутацией." .. "Теперь вы также можете обучать ваших докторов, чтобы повыÑить их навыки." .. "Так они Ñмогут ÑправлÑтьÑÑ Ð´Ð°Ð¶Ðµ Ñ Ñамыми необчными болезнÑми." .. "Поднимите вашу репутацию до 500.", level5 = "С таким разнообразием заболеваний, как в Ñтой больнице, вам не придетÑÑ Ñидеть без дела." .. "Ваши доктора - вчерашние Ñтуденты, так что им необходимо будет подучитьÑÑ." .. "У Ð²Ð°Ñ ÐµÑть три конÑультанта, которые помогут обучить новичков, поÑтарайтеÑÑŒ их не разозлить." .. "Реще наша больница Ñтоит прÑмо над разломом Сан Ðндроид." .. "Ожидайте землетрÑÑений." .. "Они могут повредить ваши машины и нарушить работу больницы." .. "Поддерживайте репутацию не ниже 400 и заработайте 50 000$. Также, вылечите 200 пациентов.", level6 = "ОпираÑÑÑŒ на веÑÑŒ Ñвой опыт, поÑтройте хорошо организованную больницу, приноÑÑщую Ñтабильный доход и ÑпоÑобную вылечить вÑе, что угодно." .. "Знайте, что в Ñтой меÑтноÑти оÑобенно быÑтро раÑпроÑтранÑÑŽÑ‚ÑÑ Ð²ÑÑкие инфекции." .. "ЕÑли в вашей больнице не будет идеально чиÑто, ждите вÑпышек Ñпидемий Ñреди пациентов." .. "Заработайте 150 000$ и доведите ÑтоимоÑть больницы до 140 000$.", level7 = "ЗдеÑÑŒ вы будете под неуÑыпным наблюдением миниÑтерÑтва здравоохранениÑ, так что поÑтарайтеÑÑŒ, чтобы деньги текли рекой, а Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ ÑтремилаÑÑŒ ввыÑÑŒ. " .. "Мы не можем вам позволить убивать пациентов - Ñто плохо Ð´Ð»Ñ Ð±Ð¸Ð·Ð½ÐµÑа. " .. "ПроÑледите, чтобы у Ð²Ð°Ñ Ð±Ñ‹Ð»Ð¾ вÑе необходимое оборудование и выÑококлаÑÑные ÑпециалиÑты. " .. "Заработайте 600 репутации Ð¿Ð»ÑŽÑ 200 000$ на банковÑкий Ñчет.", level8 = "Ваша задача - поÑтроить как можно более Ñффективную и рентабельную больницу. " .. "Ðарод здеÑÑŒ живет на широкую ногу, так что не ÑтеÑнÑйтеÑÑŒ Ñтричь капуÑту изо вÑех Ñил. " .. "Ðет, конечно, лечить людей - хорошо, и вÑе такое, но вам ОЧЕÐЬ нужны их деньги. " .. "ПроÑледите, чтобы ваши пациенты были в ÑоÑтоÑнии дойти до каÑÑÑ‹. " .. "Ðакопите на Ñчету, ни много ни мало, 300 000$ чтобы завершить Ñтот уровень.", level9 = "Теперь, когда на Ñчету миниÑтерÑтва полно денег, и Ñам миниÑтр разъезжает на новеньком лимузине, вы вновь можете занÑтьÑÑ Ð¿Ð¾Ñтройкой приличной, хорошо организованной больницы Ð´Ð»Ñ Ñамых нуждающихÑÑ. " .. "Будьте готовы к любым неприÑтноÑÑ‚Ñм." .. "ЕÑли вы озаботитеÑÑŒ приобретением вÑего необходимого Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ кадров, ничто не Ñможет причинить вам проблем. " .. "Ваша больница должна Ñтоить 200 000$, а на вашем Ñчету должно быть 400 000$. " .. "Мы не примем меньшего.", level10 = "Помимо Ð¸Ð·Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð²Ñех болезней, которые бывают в Ñтом захолуÑтье, миниÑтерÑтво проÑит Ð²Ð°Ñ ÑƒÐ´ÐµÐ»Ð¸Ñ‚ÑŒ внимание иÑÑледованию лекарÑтв." .. "К нам поÑтупают жалобы от некоего ОвÑика, меÑтного активиÑта, так что улучшайте Ñвои лекарÑтва, чттобы не ударить в грÑзь лицом." .. "Также, не давайте поводов Ð´Ð»Ñ ÑƒÐ¿Ñ€ÐµÐºÐ¾Ð². Сведите чиÑло трупов к минимуму." .. "КÑтати, отведите меÑто Ð´Ð»Ñ ÐºÐ°Ð±Ð¸Ð½ÐµÑ‚Ð° Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð¶ÐµÐ»ÐµÐ½Ð¸Ñ." .. "Улучшите вÑе лекарÑтва до 80% ÑффективноÑти, повыÑьте репутацию до 650 и Ñоберите 500 000$.", level11 = "Вам предоÑтавлÑетÑÑ ÑˆÐ°Ð½Ñ Ð¿Ð¾Ñтроить идеальную больницу. " .. "Это невероÑтно преÑтижное меÑто, и миниÑтерÑтво хотело бы видеть здеÑÑŒ ÑоответÑтвующее лечебное учреждение. " .. "Мы ожидаем от Ð²Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ прибыли, выÑокой репутации и иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñех возможных ÑредÑтв Ð´Ð»Ñ Ð´Ð¾ÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ Ñ†ÐµÐ»Ð¸. " .. "Это очень Ð²Ð°Ð¶Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°. " .. "Чтобы ее выполнить, вам придетÑÑ Ð»ÐµÐ·Ñ‚ÑŒ из кожи вон. " .. "КÑтати, в Ñтой меÑтноÑти замечены ÐЛО. ИнтереÑно, ваш перÑонал готов к подобным Ñюрпризам? " .. "Доведите ÑтоимоÑть больницы до $240,000, Ñоберите $500,000 и поднимите репутацию до 700.", level12 = "Эта задача - вершина вÑех задач. " .. "ВоÑхищенное вашим уÑпехом, миниÑтерÑтво предлагает вам Ñложную работу: им нужен кто-то, кто поÑтроит еще одну идеальную больницу, принеÑет огромное количеÑтво денег и заработает невероÑтную репутацию. " .. "От Ð²Ð°Ñ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚ÑÑ, что вы Ñкупите вÑÑŽ землю в округе, вылечите вÑех (да-да, именно вÑех) и получите вÑе награды. " .. "ВозьметеÑÑŒ за дело?" .. "Заработайте $650,000, вылечите 750 человек и ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð½Ðµ должна быть ниже 800, чтобы выиграть.", level13 = "Ваше невероÑтное маÑтерÑтво Ð²Ð»Ð°Ð´ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†ÐµÐ¹ заинтереÑовало ÑверхÑекретный отдел ÑверхÑекÑретной Ñлужбы. " .. "У них еÑть Ð´Ð»Ñ Ð²Ð°Ñ Ñюрприз: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð°Ñ ÐºÑ€Ñ‹Ñами больница требует Ñффективного вмешательÑтва. " .. "Уничтожьте как можно больше крыÑ, пока рабочие не убрали веÑÑŒ муÑор. " .. "СправитеÑÑŒ?", level14 = "Перед вами очередное задание: Ñта больница богата разного рода неожиданноÑÑ‚Ñми. " .. "Приведите ее к уÑпеху и Ñтаньте победителем из победителей. " .. "Ðе думайте, что вÑе будет очень легко. Перед вашим лицом предÑтанут веÑьма жеÑткие уÑÐ»Ð¾Ð²Ð¸Ñ " .. "Удачи!", level15 = "Итак, оÑвоим важные моменты Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ…Ð¾Ñ€Ð¾ÑˆÐµÐ¹ больницы.//" .. "Иногда вашим врачам требуетÑÑ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒ в поÑтановке правильного диагноза. Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… обÑледований " .. "необходимо поÑтроить Ñпециальные кабинеты, например, кабинет общей диагноÑтики.", level16 = "Ð’Ñ‹ уже поÑтавили диагнозы неÑкольким пациентам, и пора приниматьÑÑ Ð·Ð° их лечение. Ð”Ð»Ñ Ñтого необходимо поÑтроить различные кабинеты. " .. "Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° поÑтройте аптеку и наймите медÑеÑтру, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ выдавать пациентам ÑпаÑительные лекарÑтва.", level17 = "ПоÑледнее предупреждение: зорко Ñледите за репутацией, ведь именно она привлекает к вам пациентов из Ñамых дальних уголков Ñтраны, а ÑоответÑтвенно и их деньги. " .. "ЕÑли вы не будете убивать много людей и они будут довольны вашей больницей, оÑобых проблем у Ð²Ð°Ñ Ð½Ðµ возникнет.//" .. "Теперь вы Ñами Ñебе хозÑин. Удачи! Ðа Ñтом вÑе.", level18 = "", } letter = { [1] = { [1] = "Уважаемый %s,//", [2] = "Великолепно! Ð’Ñ‹ превоÑходно ÑправлÑетеÑÑŒ Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñтой больницей. Мы, большие шишки из миниÑтерÑтва здравоохранениÑ, хотим предложить вам занÑтьÑÑ Ð±Ð¾Ð»ÐµÐµ крупным проектом. Ð’Ñ‹ идеально подходите нам Ð´Ð»Ñ Ñтой работы. Мы готовы платить вам %d$. Подумайте над нашим предложением.//", [3] = "Ð’Ð°Ñ Ð¸Ð½Ñ‚ÐµÑ€ÐµÑует работа в больнице «%s»?", }, [2] = { [1] = "Уважаемый %s,//", [2] = "Очень хорошо! Ð’Ñ‹ добилиÑÑŒ больших уÑпехов в вашей больнице. ЕÑли вы не прочь Ñменить обÑтановку и не боитеÑÑŒ трудноÑтей, мы можем предложить вам работу в другом меÑте. СоглашайтеÑÑŒ, и вы не пожалеете. Ваша зарплата ÑоÑтавит %d$//", [3] = "Ð’Ñ‹ хотите работать в больнице «%s»?", }, [3] = { [1] = "Уважаемый %s,//", [2] = "Ð’Ñ‹ добилиÑÑŒ огромных уÑпехов, управлÑÑ Ñтой больницей. ПоÑему, мы предÑказываем вам большое будущее и хотим предложить новый поÑÑ‚. Мы готовы платить вам %d$ и думаем, вы не прочь принÑть Ñтот вызов.//", [3] = "Ð’Ñ‹ хотите управлÑть больницей «%s»?", }, [4] = { [1] = "Уважаемый %s,//", [2] = "ПоздравлÑем! У Ð½Ð°Ñ Ñ‚ÑƒÑ‚ в миниÑтерÑтве вÑе под впечатлением от ваши управленчеÑких ÑпоÑобноÑтей. Мы возлагаем на Ð²Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ðµ надежды! ПоÑтому, мы хотим предложить вам работу поÑложнее. Ваша зарплата ÑоÑтавит %d$, решение за вами.//", [3] = "Ð’Ð°Ñ Ð¸Ð½Ñ‚ÐµÑ€ÐµÑует работа в больнице «%s»?", }, [5] = { [1] = "Уважаемый %s,//", [2] = "Снова здравÑтвуйте. Мы понимаем, как вам неохота покидать Ñту уютную больничку, но вÑе же убедительно проÑим Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÑмотреть Ñвое мнение. Мы будем платить вам %d$, еÑли вы отправитеÑÑŒ в другую больницу и организуете ее работу так же хорошо.//", [3] = "Ð’Ñ‹ ÑоглаÑны отправитьÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ в больницу «%s»?", }, [6] = { [1] = "Уважаемый %s,//", [2] = "ПоздравлÑем. ПредÑтавлÑем, как вы ÑчаÑтливы владеть Ñтой прекраÑной больницей, но ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтупенька карьерной леÑтницы уже ждет ваÑ. Ð’Ñ‹ будете получать $%d, еÑли ÑоглаÑитеÑÑŒ. ÐадеемÑÑ, вы Ñделаете правильный выбор.//", [3] = "СоглаÑны ли вы занÑть Ñвое меÑто в больнице «%s»?", }, [7] = { [1] = "Уважаемый %s,//", [2] = "Добрый день! Ð’ миниÑтерÑтве Ð·Ð´Ñ€Ð°Ð²Ð¾Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ñем очень интереÑно, что держит Ð²Ð°Ñ Ð² вашей больнице. Может быть, ваше заведение и превоÑходно, но, вÑе же, хотим предложить вам перевод в новую больницу, где Ð²Ð°Ñ Ð¾Ð¶Ð¸Ð´Ð°ÑŽÑ‚ новые пеÑпективы и зарплата в $%d.//", [3] = "Ð’Ñ‹ ÑоглаÑны перейти работать в больницу «%s»?", }, [8] = { [1] = "Уважаемый %s//,", [2] = "И еще раз, здравÑтвуйте. Ð’Ñ‹ отклонили наше предыдущее предложение новой работы Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Ð¾Ð¹ в %d$. Однако, мы наÑтаиваем на переÑмотре вами Ñвоего решениÑ. Вот увидите, новое меÑто работы намного лучше!//", [3] = "ПожалуйÑта, ÑоглаÑитеÑÑŒ занÑть поÑÑ‚ Ñ€ÑƒÐºÐ¾Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð² больнице «%s».", }, [9] = { [1] = "Уважаемый %s//,", [2] = "Ðа протÑжении длительного времени вы зарекомендовали ÑÐµÐ±Ñ ÐºÐ°Ðº отличный руководитель. Ð¢Ð°ÐºÐ°Ñ Ð·Ð°Ñлуга не может оÑтатьÑÑ Ð±ÐµÐ· награды, и мы рады предложить вам поÑÑ‚ главного управлÑющего больницами. Это Ð²Ð°Ð¶Ð½Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾Ñть, и размер зарплаты ÑоÑтавит $%d. Ð’Ñ‹ взойдете на поÑÑ‚ по ковровой дорожке, и люди вÑтретÑÑ‚ Ð²Ð°Ñ Ñ Ð¿Ð¾Ñ‡ÐµÑ‚Ð¾Ð¼.//", [3] = "Вами пройден большой путь. СпаÑибо за вÑе, что вы делаете.//", [4] = "", }, [10] = { [1] = "Уважаемый %s//,", [2] = "Примите наши поздравлениÑ: вы изумительно ÑправлÑетеÑÑŒ Ñо вÑеми поÑтавленными задачами. Ваш профеÑÑионализм открывает Ð´Ð»Ñ Ð²Ð°Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтво путей. Ð’Ñ‹ будете получать пенÑию в размере $%d и иметь личный лимузин, еÑли ÑоглаÑитеÑÑŒ на наше предложение разъезжать по городам, Ð¿Ñ€Ð¾Ð²Ð¾Ð´Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ð¾Ð½Ð½ÑƒÑŽ работу в больницах.//", [3] = "Мы гордимÑÑ Ð²Ð°Ð¼Ð¸. Еще никто не отдавал Ñтолько Ñил на ÑпаÑение человечеÑких жизней.//", [4] = "", }, [11] = { [1] = "Уважаемый %s//,", [2] = "Ваша карьера была образцовой, вы вдохновлÑли наÑ. СпаÑибо за поÑещение такого количеÑтва больниц и огромную проделанную работу. Предлагаем вам пожизненные выплаты в размере $%d, а вы будете разъезжать в роÑкошном кабриолете по больницам городов и проводить маÑтер-клаÑÑÑ‹ по доÑтижению уÑпеха в карьере.//", [3] = "Ð’Ñ‹ ÑвлÑетеÑÑŒ примером Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ здравомыÑлÑщего человека, и вÑе, без иÑключениÑ, хотели бы Ñтать такими же уÑпешными, как вы.//", [4] = "", }, [12] = { [1] = "Уважаемый %s//,", [2] = "Ваша уÑÐ¿ÐµÑˆÐ½Ð°Ñ ÐºÐ°Ñ€ÑŒÐµÑ€Ð° лучшего Ñо времен МоиÑÐµÑ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñющего больницей близитÑÑ Ðº завершению. Однако, ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ñ Ð²Ð°ÑˆÐ¸ заÑлуги в медицине, миниÑтерÑтво Ð·Ð´Ñ€Ð°Ð²Ð¾Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð³Ð¾Ñ‚Ð¾Ð²Ð¾ предложить вам $%d проÑто за то, что вы будете поÑвлÑтьÑÑ Ð½Ð° презентациÑÑ…, открытиÑÑ…, запуÑках кораблей и иногда на ток-шоу. ВеÑÑŒ мир жаждет видеть ваÑ, и ваше Ð¸Ð¼Ñ Ð±ÑƒÐ´ÐµÑ‚ отличной рекламой Ð´Ð»Ñ Ð½Ð°Ñ!//", [3] = "ПожалуйÑта, примите наше предложение. Работа неÑложнаÑ, и вам будет предоÑтавлена машина и полицейÑкий ÑÑкорт, куда бы вы ни отправилиÑÑŒ.//", [4] = "", }, custom_level_completed = "ÐžÑ‚Ð»Ð¸Ñ‡Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°! Ð’Ñ‹ выполнили вÑе задачи на Ñтой карте!", dear_player = "Уважаемый %s", return_to_main_menu = "ВернетеÑÑŒ в главное меню или продолжите игру?", } -- 9. Имена и Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ months = { [1] = "Ñнв", [2] = "фев", [3] = "мар", [4] = "апр", [5] = "маÑ", [6] = "июн", [7] = "июл", [8] = "авг", [9] = "Ñен", [10] = "окт", [11] = "ноÑ", [12] = "дек", } humanoid_name_starts = { [1] = "Клизм", [2] = "Орех", [3] = "Стол", [4] = "Бочк", [5] = "ÐоÑ", [6] = "Ерш", [7] = "Штан", [8] = "Болт", [9] = "Дуб", [10] = "Брод", [11] = "Чурб", [12] = "Крив", [13] = "Торт", [14] = "КоÑ", [15] = "Гор", [16] = "Долг", [17] = "Шар", [18] = "Рыж", [19] = "ПоÑÑ‚", [20] = "Разд", [21] = "Жир", [22] = "Фаф", [23] = "Темн", [24] = "ПуÑÑ‚", [25] = "Морд", [26] = "Кот", [27] = "Срам", [28] = "Винт", [29] = "Мал", [30] = "Треп", [31] = "ОÑтр", [32] = "Плот", [33] = "Хрен", } humanoid_name_ends = { [1] = "енко", [2] = "ович", [3] = "ай-оглы", [4] = "ицки", [5] = "атюк", [6] = "инÑки", [7] = "ецман", [8] = "идзе", [9] = "инÑн", [10] = "амÑн", [11] = "овÑки", [12] = "евич", [13] = "Ñон", [14] = "Ñки", [15] = "берг", [16] = "енюк", [17] = "ишко", [18] = "атко", [19] = "ейко", [20] = "акец", [21] = "елло", [22] = "ецки", [23] = "орец", [24] = "ацки", [25] = "анÑн", [26] = "атич", } vip_names = { [1] = "МÑÑ€ Большого Трумптона", [2] = "Ð›Ð¾ÑƒÑ€ÐµÐ½Ñ Ðайтингейл", [3] = "Бернард, король Ðидерландов", [4] = "Онг СÑн Су Куй, предводитель бирманÑкой демократичеÑкой оппозиции", [5] = "СÑÑ€ Риджинальд Крамбли", [6] = "СÑÑ€ Вилли СÑвил", [7] = "Советник Кроуфорд ПервÑ", [8] = "«Ракета» Ронни ДжепÑон", [9] = "ФутболиÑÑ‚ премьер-лиги", [10] = "Л. Ф. ПробÑÑ‚ III", health_minister = "МиниÑтр здравоохранениÑ", } -- 10 WIP -- 10.2 Ðе Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð° menu_options_volume = { [50] = " 50% ", [100] = " 100% ", [30] = " 30% ", [60] = " 60% ", [90] = " 90% ", [10] = " 10% ", [20] = " 20% ", [40] = " 40% ", [80] = " 80% ", [70] = " 70% ", } cheats_window = { cheats = { end_month = "Закончить МеÑÑц", emergency = "Создать КритичеÑкое положение", win_level = "Выиграть Уровень", create_patient = "Создать Пациента", money = "Чит на Деньги", lose_level = "Проиграть Уровень", all_research = "Чит на Ð’Ñе ИÑÑледованиÑ", end_year = "Закончить Год", earthquake = "Вызвать землетрÑÑение", vip = "Вызвать ВИП", }, close = "Закрыть", caption = "Читы", cheated = { no = "ИÑпользование читов: Ðет", yes = "ИÑпользование читов: Да", }, warning = "Внимание: Ð’Ñ‹ не получите бонуÑные очки в конце уровнÑ, еÑли Ð’Ñ‹ будете иÑпользовать читы!", } original_credits = { [1] = " ", [2] = " ", [3] = " ", [4] = " ", [5] = " ", [6] = " ", [7] = " ", [8] = " ", [9] = " ", [10] = " ", [11] = " ", [12] = ":Designed and Created by", [13] = ":Bullfrog Productions", [14] = " ", [15] = ":Pluto Development Team", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = " ", [29] = " ", [30] = " ", [31] = ":Programming", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = " ", [38] = " ", [39] = " ", [40] = ":Art", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = " ", [47] = " ", [48] = " ", [49] = ":Additional Programming", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = " ", [55] = " ", [56] = " ", [57] = ":Additional Art", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = " ", [66] = " ", [67] = " ", [68] = ":Intro Sequence", [69] = ",", [70] = "Stuart Black", [71] = " ", [72] = " ", [73] = " ", [74] = ":Music and Sound Effects", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = " ", [79] = " ", [80] = " ", [81] = ":Additional Music", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = " ", [86] = " ", [87] = " ", [88] = ":Announcer Voiceover", [89] = ",", [90] = "Rebecca Green", [91] = " ", [92] = " ", [93] = " ", [94] = ":Level Design", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = " ", [101] = " ", [102] = " ", [103] = ":Scripting", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = " ", [109] = " ", [110] = " ", [111] = ":R&D", [112] = " ", [113] = ":Graphics Engine", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = " ", [118] = " ", [119] = " ", [120] = ":R&D Support", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = " ", [127] = " ", [128] = " ", [129] = ":Library and Tools", [130] = " ", [131] = "Dos and Win 95 Library", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = " ", [137] = " ", [138] = " ", [139] = ":Network Library", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = " ", [144] = " ", [145] = " ", [146] = ":Sound Library", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = " ", [151] = " ", [152] = " ", [153] = ":Installer Programming", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = " ", [159] = " ", [160] = " ", [161] = ":Moral Support", [162] = ",", [163] = "Peter Molyneux", [164] = " ", [165] = " ", [166] = " ", [167] = ":Testing Manager", [168] = ",", [169] = "Andy Robson", [170] = " ", [171] = " ", [172] = " ", [173] = ":Lead Testers", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = " ", [178] = " ", [179] = " ", [180] = ":Play Testers", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = " ", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = " ", [203] = "And all our other Work Experience Play Testers", [204] = " ", [205] = " ", [206] = " ", [207] = ":Technical Support", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = " ", [213] = " ", [214] = " ", [215] = ":Marketing", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = " ", [220] = " ", [221] = " ", [222] = ":With thanks to:", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = " ", [229] = " ", [230] = " ", [231] = ":PR", [232] = ",", [233] = "Cathy Campos", [234] = " ", [235] = " ", [236] = " ", [237] = ":Documentation", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = " ", [244] = " ", [245] = " ", [246] = ":Documentation & Packaging Design", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = " ", [251] = " ", [252] = " ", [253] = ":Localisation Project Manager", [254] = ",", [255] = "Carol Aggett", [256] = " ", [257] = " ", [258] = " ", [259] = ":Localisation", [260] = ",", [261] = "Sandra Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = " ", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = " ", [268] = "C.T.O. S.p.A. Zola Predosa (BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = " ", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Mart®ez", [276] = " ", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = " ", [281] = " ", [282] = " ", [283] = ":Production", [284] = ",", [285] = "Rachel Holman", [286] = " ", [287] = " ", [288] = " ", [289] = ":Producer", [290] = ",", [291] = "Mark Webley", [292] = " ", [293] = " ", [294] = " ", [295] = ":Associate Producer", [296] = ",", [297] = "Andy Nuttall", [298] = " ", [299] = " ", [300] = " ", [301] = ":Operations", [302] = ",", [303] = "Steve Fitton", [304] = " ", [305] = " ", [306] = " ", [307] = ":Company Administration", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":Company Management", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":All at Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":Special Thanks to", [332] = ",", [333] = "Everyone at Frimley Park Hospital", [334] = " ", [335] = ":Especially", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = " ", [340] = " ", [341] = " ", [342] = ":Keep On Thinking", [343] = " ", [344] = " ", [345] = " ", [346] = " ", [347] = " ", [348] = " ", [349] = " ", [350] = " ", [351] = " ", [352] = " ", [353] = " ", [354] = " ", [355] = " ", [356] = " ", [357] = " ", [358] = " ", [359] = " ", [360] = " ", [361] = ".", } -- 10.3 Ðепереведенные tooltip = { queue_window = { end_of_queue = "Перетащите пациента на Ñтот значок, чтобы перемеÑтить его в конец очереди", num_entered = "КоличеÑтво пациентов, поÑетивших кабинет", close = "Закрыть запроÑ", num_in_queue = "КоличеÑтво пациентов в очереди", num_expected = "КоличеÑтво пациентов, направленных Ñюда из региÑтратуры", front_of_queue = "Перетащите пациента на Ñтот значок, чтобы перемеÑтить его в начало очереди", dec_queue_size = "Уменьшить макÑимальный размер очереди", max_queue_size = "Макимальный размер очереди в региÑтратуру", inc_queue_size = "Увеличить макÑимальный размер очереди", patient = "Перетащите пациента в нужное меÑто очереди. Щелкните на пациенте правой кнопкой, чтобы отправить его домой или в другую больницу", patient_dropdown = { send_home = "Выгнать пациента из больницы", hospital_2 = "Ðаправить пациента в другую больницу", reception = "Отправить в региÑтратуру", hospital_1 = "Ðаправить пациента в другую больницу", hospital_3 = "Ðаправить пациента в другую больницу", }, }, jukebox = { rewind = "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°", loop = "ПовторÑть текущую дорожку", stop = "ОÑтановить", close = "Закрыть", current_title = "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°", play = "ВоÑпроизвеÑти", fast_forward = "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°", }, graphs = { deaths = "Показать/Ñкрыть умерших", close = "Закрыть окно", scale = "МаÑштаб графика", money_out = "Показать/Ñкрыть раÑходы", visitors = "Показать/Ñкрыть поÑетителей", wages = "Показать/Ñкрыть зарплаты", balance = "Показать/Ñкрыть баланÑ", money_in = "Показать/Ñкрыть доход", cures = "Показать/Ñкрыть вылеченных", reputation = "Показать/Ñкрыть репутацию", }, message = { button = "Щелкните, чтобы открыть Ñообщение", button_dismiss = "Щелкните левой кнопкой, чтобы проÑмотреть Ñообщение, правой - чтобы отклонить его", }, pay_rise_window = { accept = "ПовыÑить зарплату", decline = "Отказать в повышении зарплаты", }, custom_game_window = { start_game_with_name = "Загрузить уровень %s", free_build = "Свободное ÑтроительÑтво", }, cheats_window = { close = "Закрыть окно Ñ Ñ‡Ð¸Ñ‚Ð°Ð¼Ð¸", cheats = { end_month = "Перепрыгивает в конец меÑÑца.", emergency = "Создает критичеÑкое положение.", win_level = "Выиграть уровень.", create_patient = "Создает Пациента в конце карты.", money = "ДобавлÑет 10.000 к Вашему баланÑу.", lose_level = "Проиграть уровень.", all_research = "Завершает вÑе иÑÑледованиÑ.", end_year = "Перепрыгивает в конец года.", }, }, menu_list_window = { back = "Закрыть окно", save_date = "ИзмененÑлоÑÑŒ", name = "ИмÑ", }, watch = { emergency = "Чрезвычайное проиÑшеÑтвие: времÑ, оÑтавшееÑÑ Ð½Ð° лечение Ñрочных пациентов.", hospital_opening = "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° поÑтройку: по иÑтечении Ñтого времени больница будет открыта. ЕÑли вы хотите открыть больницу уже ÑейчаÑ, нажмите зеленую кнопку.", epidemic = "ЭпидемиÑ: Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° оÑтановку Ñпидемии. Когда Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ñ‚ÑÑ Ð¸Ð»Ð¸ зараженный пациент покинет больницу, приедет инÑпектор. Кнопка включает/отключает режим вакцинации. Щелкните на пациенте, и медÑеÑтра введет ему вакцину.", }, calls_dispatcher = { assigned = "Это поле отмечено, еÑли кому-то приÑвоено ÑоответÑтвующее задание.", task = "СпиÑок заданий - нажмите на задание, чтобы открыть окно назначенного перÑонала и прокрутить до раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸", close = "Закрыть окно диÑпетчера", }, information = { close = "Закрыть окно информации", }, lua_console = { textbox = "ВВедите здеÑÑŒ Lua код Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка", execute_code = "ЗапуÑтить введенный Вами код", close = "Закрыть конÑоль", }, staff_window = { doctor_seniority = "Ðвторитет (Студент, Доктор, КонÑультант)", psychiatrist = "ПÑихиатр", close = "Закрыть окно", ability = "КомпетентноÑть", pick_up = "ВзÑть", sack = "Уволить", surgeon = "Хирург", happiness = "ÐаÑтроение", salary = "ЕжемеÑÑÑ‡Ð½Ð°Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Ð°", name = "ИмÑ", tiredness = "Ð—Ð°Ð¿Ð°Ñ Ñил", center_view = "Ð›ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° - центрировать Ñкран, Ð¿Ñ€Ð°Ð²Ð°Ñ - выбрать Ñледующего Ñотрудника", skills = "ОÑобые умениÑ", researcher = "ИÑÑледователь", face = "Портрет - нажмите, чтобы перейти к Ñкрану ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ñоналом", }, research = { cure_inc = "ПовыÑить приоритет иÑÑледований", close = "Закрыть Ñкран иÑÑледований", specialisation_dec = "Понизить приоритет иÑÑледований", diagnosis_dec = "Понизить приоритет иÑÑледований", allocated_amount = "Выделенные реÑурÑÑ‹", improvements_inc = "ПовыÑить приоритет иÑÑледований", drugs_dec = "Понизить приоритет иÑÑледований", drugs_inc = "ПовыÑить приоритет иÑÑледований", cure_dec = "Понизить приоритет иÑÑледований", specialisation_inc = "ПовыÑить приоритет иÑÑледований", improvements_dec = "Понизить приоритет иÑÑледований", diagnosis_inc = "ПовыÑить приоритет иÑÑледований", }, statement = { close = "Закрыть Ñкран баланÑа", }, buy_objects_window = { confirm = "Купить предмет(Ñ‹)", cancel = "Отмена", increase = "Купить на один предмет больше", total_value = "ÐžÐ±Ñ‰Ð°Ñ Ñумма покупки", price = "СтоимоÑть предмета", decrease = "Купить на один предмет меньше", }, fax = { close = "Закрыть окно, не удалÑÑ Ñообщение", }, window_general = { confirm = "Подтвердить", cancel = "Отмена", }, } totd_window = { previous = "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð¾Ð´Ñказка", tips = { [1] = "Ð›ÑŽÐ±Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð° нуждаетÑÑ Ð² региÑтратуре и кабинете терапевта. Именно в них решаетÑÑ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐ°Ñ Ñудьба пациента и он направлÑетÑÑ Ð½Ð° дальнейшее лечение. КÑтати, аптека тоже не помешает.", [2] = "Машины, например, аппарат надуваниÑ, требуют регулÑрного ухода. Ð”Ð»Ñ Ñтого нужно нанÑть одного-двух работников. ИÑпорченные машины могут доÑтавить много неприÑтноÑтей как перÑоналу, так и пациентам.", [3] = "ПерÑоналу ÑвойÑтвенно уÑтавать. Ðе забывайте Ñтроить комнаты отдыха Ð´Ð»Ñ Ð½Ð¸Ñ….", [4] = "УÑтанавливайте доÑтаточно батарей Ð¾Ñ‚Ð¾Ð¿Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ¿Ð»Ð° в больнице, иначе перÑонал и пациенты будут недовольны. РаÑпределение тепла по помещению можно поÑмотреть на карте города.", [5] = "ПрофеÑÑионализм доктора Ñильно влиÑет на ÑкороÑть поÑтановки диагноза и качеÑтво лечениÑ. Один профеÑÑиональный терапевт ÑпоÑобен заменить двух неопытных.", [6] = "Студенты и доктора могут повышать Ñвой профеÑÑиональный уровень на лекциÑÑ… конÑультанта. ЕÑли конÑультант обладает Ñпециальными навыками (пÑихиатра, хирурга или иÑÑледователÑ), он Ñможет передать их ученикам.", [7] = "Рвы пробовали набирать европейÑкий номер Ñлужбы ÑпаÑÐµÐ½Ð¸Ñ (112) на факÑе? Перед тем, как пробовать, включите звук!", [8] = "Ð’Ñ‹ можете изменить некоторые наÑтройки, например разрешение Ñкрана или Ñзык игры, Ð¿ÐµÑ€ÐµÐ¹Ð´Ñ Ð² меню наÑтроек из главного меню или непоÑредÑтвенно из игры.", [9] = "Везде английÑкие Ñлова, Ñ…Ð¾Ñ‚Ñ Ð²Ñ‹ выбрали в наÑтройках ÑовÑем не английÑкий Ñзык? Помогите закончить перевод игры!", [10] = "Команда CorsixTH нуждаетÑÑ Ð² вашей помощи! ЕÑли вы хотите помочь в напиÑании кода, Ñоздании графики или перевода игры, ÑвÑжитеÑÑŒ Ñ Ð½Ð°Ð¼Ð¸ на форуме, по Ñлектронной почте или на IRC-канале (corsix-th at freenode).", [11] = "ЕÑли вы нашли ошибки, пишите на наш багтрекер: th-issues.corsix.org", [12] = "Каждый уровень игры требует Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ñ‹Ñ… уÑловий Ð´Ð»Ñ ÐµÐ³Ð¾ завершениÑ. ПериодичеÑки заглÑдывайте в окно ÑтатуÑа, чтобы знать, какие уÑÐ»Ð¾Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ñ‹, а какие - еще нет.", [13] = "Ð”Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð±Ð¸Ð½ÐµÑ‚Ð° еÑть ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° на панели внизу Ñкрана.", [14] = "Чтобы разобратьÑÑ Ð² толпе пациентов, наведите курÑор на кабинет, и ожидающие Ñвоей очереди поÑетители будут выделены.", [15] = "Щелкните на двери кабинета Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра очереди. Пациентов, ÑтоÑщих в очереди можно перемещать, направлÑть в другие кабинеты и даже выгонÑть.", [16] = "Ðедовольный перÑонал требует Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚. УбедитеÑÑŒ в том, что ваши работники пребывают в кофортабельных уÑловиÑÑ… труда.", [17] = "ЕÑли в помещении больницы ÑтановитÑÑ Ñлишком жарко, пациентов начинает мучать жажда! Во избежание Ñтого уÑтановите доÑтаточное количеÑтво автоматов Ñ Ð²Ð¾Ð´Ð¾Ð¹ в коридорах.", [18] = "Ð’Ñ‹ можете прервать диагноÑтику пациента, будучи уверенным в поÑтановке диагноза. Ðо будьте оÑторожны: ваша ошибка может повлечь за Ñобой Ñмерть пациента.", [19] = "Чрезвычайные Ñитуации могут принеÑти вам неплохой доход, конечно, при уÑловии, что у Ð²Ð°Ñ ÐµÑть возможноÑть и Ð²Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ‚Ð°ÐºÐ¸Ñ… пациентов.", }, next = "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð´Ñказка", } trophy_room = { reputation = "РЕПУТÐЦИЯ", gen_repairs = { penalty = { [1] = "Ваши рабочие не обÑлуживают оборудование должным образом. Вам Ñледует управлÑть ими рабочими лучше, возможно потребуетÑÑ Ð½Ð°Ð½Ñть больше рабочих, чтобы ÑправитьÑÑ Ñ Ð½Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¾Ð¹.", [2] = "У Ð²Ð°Ñ ÑƒÐ¶Ð°Ñное обÑлуживание аппаратов. Ваши Ñотрудники должны ухаживать за оборудованием клиники быÑтро и Ñ Ð·Ð°Ð±Ð¾Ñ‚Ð¾Ð¹.", }, awards = { [1] = "Ð’Ñ‹ удоÑтоены Ñпециальной награды Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ñ… за поддержание Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð¸Ð½Ð¸ÐºÐ¸ в хорошем ÑоÑтоÑнии. Отлично Ñработано! УÑтройте Ñебе выходной.", [2] = "Ваши рабочие ÑправлÑÑŽÑ‚ÑÑ Ð»ÑƒÑ‡ÑˆÐµ Ñвоих коллег в других больницах. Это главное доÑтижение, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ Ð²Ð°Ñ Ñтоит поздравить.", [3] = "Оборудование больницы поддерживаетÑÑ Ð² великолепном ÑоÑтоÑнии. УÑÐ¸Ð»Ð¸Ñ Ð²Ð°ÑˆÐ¸Ñ… рабочих невероÑтны. Ð’Ñ‹ вÑе заÑлуживаете Ñтой преÑтижной награды. Ð£Ð´Ð¸Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°.", }, }, pop_percentage = { awards = { [1] = "Заметим, что вы привлекли большую чаÑть наÑÐµÐ»ÐµÐ½Ð¸Ñ Ð³Ð¾Ñ€Ð¾Ð´Ð° в прошлом году. Отлично Ñработано.", [2] = "ПоздравлÑем. Более выÑÐ¾ÐºÐ°Ñ Ð´Ð¾Ð»Ñ Ð¼ÐµÑтного наÑÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñещает вашу больницу, нежели любую другую.", [3] = "ПревоÑходно. Ð’Ñ‹ привлекли в Ñвою больницу больше наÑелениÑ, чем поÑетило вÑе оÑтальные больницы вмеÑте взÑтые.", }, penalty = { [1] = "Очень немногие пришли лечитьÑÑ Ð² вашу больницу в прошлом году. Чтобы заработать денег вам нужны платежеÑпоÑобные Ñтрадальцы.", [2] = "Через двери любой больницы в Ñтой меÑтноÑти проходит Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ Ð´Ð¾Ð»Ñ Ð½Ð°ÑелениÑ, чем через ваши. Вам должно быть очень Ñтыдно.", }, }, happy_vips = { awards = { [1] = "Ð’Ñ‹ получили ÐобелевÑкую премию за впечатлениÑ, произведенное на выÑокопоÑтавленных оÑоб. Ð’Ñе большие шишки, поÑещавшие вашу больницу за прошедший год, оценили ее выше вÑÑких похвал.", [2] = "ПоздравлÑем! Ð’Ñ‹ награждены орденом Подлизы за потакание вÑем большим шишкам, поÑещавшим вашу больницу в прошедшем году. Шикарно.", }, trophies = { [1] = "Клуб Важных ПерÑон вручает вам кубок ПопулÑрноÑти за оказанное внимание вÑем VIP-перÑонам, поÑетившим ваше заведение в прошедшем году. Теперь вы можете Ñчитать ÑÐµÐ±Ñ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ извеÑтнее.", [2] = "ÐгентÑтво ИзвеÑтных Людей вручает вам Знаменитую Ðаграду за удовлетворение каждого ВИП, кто поÑетил ваше предприÑтие. Считайте ÑÐµÐ±Ñ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ извеÑтным, почти одним из наÑ.", [3] = "ПоздравлÑем Ñ Ð²Ñ‹Ð¸Ð³Ñ€Ñ‹ÑˆÐµÐ¼ ВИП ПутешеÑÑ‚Ð²Ð¸Ñ Ð² награду за то что Ñделали жизнь трудолюбивых людей в глазах общеÑтвенноÑти лучше, ÑƒÐ³Ð¾Ð¶Ð´Ð°Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñƒ из них, кто поÑетил вашу больницу. ПроÑто чудеÑно.", }, }, happy_patients = { awards = { [1] = "Ð’Ñ‹ может быть Ñамодовольны по поводу того, что в прошлом году пациенты были очень довольны находитьÑÑ Ð² вашей больнице.", [2] = "Люди, поÑетившие вашу больницу, в Ñреднем были более довольны Ñвоим лечением, нежели в любой другой больнице в игре.", }, penalty = { [1] = "Люди, приходÑщие в вашу больницу, находÑÑ‚ ее ужаÑной. Вам нужно лучше работать, чтобы заÑлужить уважение МиниÑтерÑтва.", [2] = "Люди, лечащиеÑÑ Ð² вашей больнице, очень недовольны ее ÑоÑтоÑнием. Ð’Ñ‹ должны тщательнее Ñледить за ÑоÑтоÑнием пациента.", }, }, rats_killed = { awards = { }, trophies = { [1] = "Ð’Ñ‹ награждены кубком ИÑÑ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð·Ð° уничтожение %d ÐºÑ€Ñ‹Ñ Ð² вашей больнице за прошедший год.", [2] = "Ð’Ñ‹ номинированы на награду от ÐниткрыÑной Коалиции за выдающиеÑÑ ÑƒÑпехи в иÑтреблении %d Ñтих мерзких тварей за прошедший год.", [3] = "Ð’Ñ‹ награждены орденом КрыÑÐ¾Ð±Ð¾Ñ Ð·Ð° отвагу и доблеÑть в уничтожении Ñтих гадких Ñозданий. Было убито %d ÐºÑ€Ñ‹Ñ Ð·Ð° прошедший год.", }, }, happy_staff = { awards = { [1] = "Ваши Ñотрудники номинировали Ð²Ð°Ñ Ð½Ð° Ñту награду. Они Ñказали, что Ñ…Ð¾Ñ‚Ñ Ð¸ еÑть что улучшать, ваша забота о них оÑтавалаÑÑŒ, в целом, хорошей.", [2] = "Ваши Ñотрудники ÑчаÑтливы работать на ваÑ, у них не Ñходит улыбка Ñ Ð»Ð¸Ñ†Ð°. Ð’Ñ‹ потрÑÑающий управлÑющий.", }, trophies = { [1] = "Ð’Ñ‹ награждены кубком Улыбки за поддержание хорошего наÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐ¸Ñ… тружеников в течении прошедшего года.", [2] = "ИнÑтитут Ð’ÑеленÑкого СчаÑÑ‚ÑŒÑ Ð²Ñ€ÑƒÑ‡Ð°ÐµÑ‚ вам приз за отÑутвие в вашем прекраÑном заведении неÑчаÑтных работников в прошедшем году.", [3] = "Эта награда, СиÑющий Позолоченный кубок, вручаетÑÑ Ð²Ð°Ð¼ за поддержание в прошедшем году хорошего наÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸ÐºÐ¾Ð² в любой Ñитуации!", }, regional_bad = { [1] = "Ваши Ñотрудники были очень неÑчаÑтны в течение прошлого года. Ð’Ñ‹ должны знать об Ñтом. Ðа Ñамом деле, в любой другой больнице перÑонал чувÑтвует ÑÐµÐ±Ñ Ð»ÑƒÑ‡ÑˆÐµ, чем в вашей.", }, regional_good = { [1] = "Ваш перÑонал ÑчаÑтливее коллег в любой другой больнице. Довольный перÑонал значит больше прибыль и меньше ÑмертноÑть. МиниÑтерÑтво Ñтим довольно.", }, penalty = { [1] = "Ваши Ñотрудники хотÑÑ‚ чтобы было извеÑтно о том, что они неÑчаÑтны. Хороший перÑонал - Ñто преимущеÑтво. Сделайте ваших людей ÑчаÑтливее или однажды вы многое потерÑете.", }, }, rats_accuracy = { awards = { }, trophies = { [1] = "Ð’Ñ‹ неÑомненно заÑлужили уважение ОбщеÑтва Ñнайперов за %d%% точноÑть при отÑтреле крыÑ.", [2] = "Эта награда торжеÑтенно вручаетÑÑ Ð²Ð°Ð¼ за %d%% Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾ крыÑам вашей больницы в прошедшем году.", [3] = "Чтобы отметить иÑтребление %d%% ÐºÑ€Ñ‹Ñ Ð² вашей больнице, вам вручаетÑÑ Ð¿Ñ€ÐµÐ¼Ð¸Ñ ÐŸÐ¾Ñ‡Ñ‘Ñ‚Ð½Ð¾Ð³Ð¾ крыÑолова!", }, }, all_cured = { awards = { [1] = "ПоздравлÑем Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ ордена Марии Кюри за уÑпешное излечение вÑех пациентов, поÑетивших вашу больницу в прошедшем году!", }, trophies = { [1] = "ÐœÐµÐ¶Ð´ÑƒÐ½Ð°Ñ€Ð¾Ð´Ð½Ð°Ñ ÐÑÑÐ¾Ñ†Ð¸Ð°Ñ†Ð¸Ñ Ð˜Ð·Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ Ð³Ð¾Ñ€Ð´Ð¾Ñтью вручает вам кубок Ð’ÑÐµÐ·Ð´Ñ€Ð°Ð²Ð¸Ñ Ð·Ð° Ñтопроцентное излечение пациентов в прошедшем году.", [2] = "Ð’Ñ‹ получаете Здоровенную премию за заботу о выздоровлении каждого пациента больницы!", }, }, no_deaths = { awards = { [1] = "ПоздравлÑем! Ð’Ñ‹ получаете орден имени Ð’. Безтрупова за Ñтопроцентное выживание ваших пациентов.", [2] = "Ваш гейний Ñвел количеÑтво Ñмертей в гоÑпитале к минимуму. Ð’Ñ‹ можете быть очень довольны Ñтим результатом.", }, trophies = { [1] = "ОбщеÑтво ÐŸÑ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð–Ð¸Ð·Ð½Ð¸ вручает вам награду за отÑутÑтвие Ñмертей Ñреди пациентов в прошедшем году.", [2] = "Ð’Ñ‹ награждены кубком Ð’Ñ‹Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð·Ð° то, что в прошедшем году Ñохранили жизни вÑех Ñвоих пациентов. Поразительно!", [3] = "Ð’Ñ‹ были награждены Кубком ОСТÐТЬСЯ Ð’ ЖИВЫХ за то что в Ñтом году избежали Ñмертей Ñреди пациентов в вашей милой больнице. Отлично.", }, penalty = { [1] = "КоличеÑтво Ñмертей в вашей больнице в прошлом году было непреемлемо выÑокое. УделÑйте больше времени Ñвоей работе. УбедитеÑÑŒ, что в будущем выживет больше людей.", [2] = "Ваша больница опаÑна Ð´Ð»Ñ Ð·Ð´Ð¾Ñ€Ð¾Ð²ÑŒÑ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð². От Ð²Ð°Ñ Ð¶Ð´Ð°Ð»Ð¸, что вы будете лечить Ñвоих пациентов, а не убивать их.", }, regional = { [1] = "ЧиÑло погибших в вашей больнице в прошлом году было ниже, чем в любой другой в округе. ПожалуйÑта, примите Ñту награду.", }, }, many_cured = { awards = { [1] = "Примите наши Ð¿Ð¾Ð·Ð´Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ ордена Матери Терезы за большинÑтво вылеченных пациентов в прошедшем году.", [2] = "ПожалуйÑта примите Ñту награду за то что вылечили пациентов больше, чем Ð»ÑŽÐ±Ð°Ñ Ð´Ñ€ÑƒÐ³Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°.", }, trophies = { [1] = "ÐœÐµÐ¶Ð´ÑƒÐ½Ð°Ñ€Ð¾Ð´Ð½Ð°Ñ ÐÑÑÐ¾Ñ†Ð¸Ð°Ñ†Ð¸Ñ Ð˜Ð·Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ñ€Ð¶ÐµÑтвенно вручает вам награду за излечение почти вÑех пациентов, обратившимÑÑ Ð² больницу в прошедшем году.", [2] = "Ð’Ñ‹ получаете такую ценную награду, как кубок Ð’Ñ‹Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð·Ð° невероÑтно выÑокий процент вылеченных пациентов вашего Ð·Ð°Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð° прошедший год.", [3] = "Ð’Ñ‹ были предÑтавлены к вручению Кубка Gargler за поддержание выÑокого процента вылеченных людей в прошлом году.", }, penalty = { [1] = "Ваша больница не Ñмогла предоÑтавить Ñффективное лечение, нуждающимÑÑ Ð² нем, пациентам. СконцентрируйтеÑÑŒ на том, чтобы Ñделать лечение более Ñффективным.", [2] = "Ваша больница наименее ÑÑ„Ñ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð¸Ð· вÑех, что каÑаетÑÑ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð². Ð’Ñ‹ тащите МиниÑтерÑтво на дно и Ñами опуÑкаетеÑÑŒ туда же. Мне больше нечего Ñказать.", }, regional = { [1] = "Ð’Ñ‹ предÑтавлены к награде за беÑпрецедентное иÑцеление. Это за то, что вы вылечили больше пациентов, чем вÑе оÑтальные больницы вмеÑте взÑтые.", }, }, curesvdeaths = { awards = { [1] = "Сердечно поздравлÑем Ñ Ð´Ð¾Ñтижением впечатлÑющего ÑÐ¾Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð²Ñ‹Ð»ÐµÑ‡ÐµÐ½Ð½Ñ‹Ñ… к убитым в вашей больнице в прошлом году.", }, penalty = { [1] = "Ваше Ñоотношение вылеченных к убитым крайне плохое. Ð’Ñ‹ должны быть уверены в том, что вылечите больше людей, чем убьете. Помните - не наоборот.", }, }, emergencies = { award = { [1] = "ПоздравлÑем: ваша ÑффективноÑть и Ñффективное решение ÑкÑтренных Ñлучаев приноÑит вам Ñту оÑобенную награду. ÐžÑ‚Ð»Ð¸Ñ‡Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°!", [2] = "Ð’Ñ‹ иÑключительно хорошо ÑправлÑетеÑÑŒ Ñ ÑкÑтренными ÑлучаÑми. Эта награда за то что вы лучше вÑех ÑправлÑетеÑÑŒ Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ потоком больных и Ñтраждущих.", }, regional_good = { [1] = "МиниÑтерÑтво выÑÑнило, что ваша больница в прошлом году ÑправлÑлаÑÑŒ Ñ ÑкÑтренными ÑлучаÑми лучше чем Ð»ÑŽÐ±Ð°Ñ Ð´Ñ€ÑƒÐ³Ð°Ñ. ПоÑтому оно вручает вам Ñту награду.", }, penalty = { [1] = "Ð’Ñ‹ ужаÑно ÑправлÑетеÑÑŒ Ñ ÑкÑтренными пациентами. Прилетающие пациенты Ð´Ð»Ñ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÑŽÑ‚ точного и Ñвоевременного вниманиÑ, чего вы не Ñмогли им дать.", }, regional_bad = { [1] = "Что каÑаетÑÑ ÑкÑтренных Ñлучаев Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð°Ð¼Ð¸, ваша больница была Ñамой ужаÑной в регионе. Это ваша вина в том, что вы томитеÑÑŒ в нижней чаÑти меÑтной лиги ÑкÑтренного лечениÑ.", }, }, high_rep = { awards = { [1] = "Вам торжеÑтвенно вручаетÑÑ Ð½Ð°Ð³Ñ€Ð°Ð´Ð° Кабинета МиниÑтров за поддержание Ñтабильно выÑокой репутации больницы в прошедшем году. Отлично!", [2] = "ПожалуйÑта, примите награду команды CorsixTH за выÑочайшую репутацию вашего заведениÑ. Ð’Ñ‹ Ñто заÑлужили.", }, trophies = { [1] = "ПоздравлÑем Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ кубка МегапафоÑа за доÑтижение такой репутации в прошедшем году. Так держать!", }, penalty = { [1] = "Ð’Ñ‹ были диÑциплинированы в поддержании очень плохой репутации на протÑжение прошлого года. УбедитеÑÑŒ в том, что она подниметÑÑ Ð² будущем.", [2] = "Ð ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ больницы ÑÐ°Ð¼Ð°Ñ ÑƒÐ¶Ð°ÑÐ½Ð°Ñ Ð² городе. Ð’Ñ‹ опозорены. Улучшите ее или найдите другую работу.", }, regional = { [1] = "ПожалуйÑта примите нагдару от Bullfrog за Ñамую выÑокую репутацию из вÑех больниц. ÐаÑлаждайтеÑÑŒ - вы Ñто заработали.", [2] = "Ð’ Ñтом году, Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ больницы превыÑила вÑе оÑтальные вмеÑте взÑтые. Это крупное доÑтижение.", } }, consistant_rep = { trophies = { [1] = "ÐаÑтоÑщим, вы получаете награду от Кабинета МиниÑтров за Ñамые безупречные Ñтандарты и наивыÑшую репутацию ÐºÐ°ÐºÐ°Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ может быть. Хорошо Ñработано.", [2] = "ПоздравлÑем Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ Кубка СкуаÑкиКлин за лучшую репутацию больницы в прошлом году. Ð’Ñ‹ Ñто заÑлужили.", }, }, sold_drinks = { awards = { }, trophies = { [1] = "ÐœÐµÐ¶Ð´ÑƒÐ½Ð°Ñ€Ð¾Ð´Ð½Ð°Ñ ÐÑÑÐ¾Ñ†Ð¸Ð°Ñ†Ð¸Ñ Ð¡Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¾Ð»Ð¾Ð³Ð¾Ð² вручает вам награду и медальку за огромное количеÑтво проданных газированных напитков за прошедший год.", [2] = "Ваша больница награждаетÑÑ ÐºÑƒÐ±ÐºÐ¾Ð¼ Пыщь-пыщь в чеÑть продажи невероÑтного количеÑтва прохладительных напитков в прошедшем году.", [3] = "Позвольте нам, при поддержке кондитерÑкой фабрики «Синий Пролетарий», вручить вам покрытый шоколадом кубок за выÑокий уровень продаж газированных напитков в прошедшем году.", }, }, wait_times = { award = { [1] = "ПоздравлÑем. Ð’ вашей больнице пациенты почти не проводÑÑ‚ Ð²Ñ€ÐµÐ¼Ñ Ð² очередÑÑ…. Это Ð²Ð°Ð¶Ð½Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°.", }, penalty = { [1] = "ЛюдÑм в вашей больнице приходитÑÑ Ð¶Ð´Ð°Ñ‚ÑŒ Ñлишком долго. ЗдеÑÑŒ вÑегда непреемлемые очереди. Ð’Ñ‹ должны управлÑтьÑÑ Ñ Ð²Ð°ÑˆÐ¸Ð¼Ð¸ пациентами более Ñффективно, раз уж за Ñто взÑлиÑÑŒ.", }, }, healthy_plants = { awards = { [1] = "ПоздравлÑем! Ð’Ñ‹ награждены орденом Лопаты и ТÑпки за поддержание раÑтений в добром здравии круглый год.", }, trophies = { [1] = "Ð’ чеÑть того, что вы поддерживали раÑÑ‚ÐµÐ½Ð¸Ñ Ð² отличном ÑоÑтоÑнии веÑÑŒ прошедший год, Ðациональный БотаничеÑкий Сад вручает вам премию ЛиÑтоворотки ДикопроизраÑтающей.", [2] = "ÐšÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ Â«Ð¡ÐµÐ¼ÐµÐа, получи» награждает Ð²Ð°Ñ Ð¿Ñ€ÐµÐ¼Ð¸ÐµÐ¹ имени Мичурина в чеÑть Ñвоевременного ухода за раÑтениÑми в прошедшем году.", }, }, cleanliness = { regional_good = { [1] = "Ваша больница была отмечена как одна из Ñамых не прибранных в округе. Ð’ грÑзной больнице опаÑно и вонÑет. Ð’Ñ‹ лучше должны за Ñтим Ñледить.", }, award = { [1] = "ИнÑпекторы отметили, что ваша больница очень чиÑтаÑ. ЧиÑÑ‚Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð° - Ñто безопаÑÐ½Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°. Поддерживайте ее в том же виде.", }, regional_bad = { [1] = "Ваша больница ÑÐ°Ð¼Ð°Ñ Ð³Ñ€ÑÐ·Ð½Ð°Ñ Ð² округе. Любой другой управлÑющий поддерживает Ñвои коридоры более чиÑтыми. Ð’Ñ‹ - позор медицины!", }, }, hosp_value = { awards = { [1] = " МиниÑтерÑтво Ð—Ð´Ñ€Ð°Ð²Ð¾Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ…Ð¾Ñ‡ÐµÑ‚ иÑпользовать предÑтавившуюÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñть, чтобы поздравить Ð²Ð°Ñ Ñ Ð²Ð¿ÐµÑ‡Ð°Ñ‚Ð»Ñющей общей ÑтоимоÑтью вашей больницы.", }, penalty = { [1] = "Вашей больнице не удалоÑÑŒ доÑтичь доÑтойной ÑтоимоÑти. Ð’Ñ‹ принÑли плохие Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ управлению капиталом. Помните, Ñ…Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð° - Ñто так же Ð´Ð¾Ñ€Ð¾Ð³Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð°.", }, regional = { [1] = "Ð’Ñ‹ финанÑовый волшебник. Ваша больница Ñтоить больше чем вÑе оÑтальные вмеÑте взÑтые.", }, }, best_value_hosp = { regional = { [1] = "ПоздравлÑем Ñ Ð²Ð»Ð°Ð´ÐµÐ½Ð¸ÐµÐ¼ Ñамой дорогой больницей в игре. Ð¥Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°. ПоÑтарайтеÑÑŒ Ñохранить Ñто вдальнейшем.", }, penalty = { [1] = "Ð›ÑŽÐ±Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð° в округе Ñтоит дороже вашей. Сделайте что-нибудь Ñ Ñтой позорной чаÑтью дел. ПоÑтавте больше дорогого оборудованиÑ!", }, trophies = { [1] = "ПоÑздравлÑем Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ Кубка SqueakiKlean за больницу Ñ Ð»ÑƒÑ‡ÑˆÐµÐ¹ репутацией в прошлом году. Ð’Ñ‹ Ñто заÑлужили.", }, }, research = { regional_good = { [1] = "Ваши иÑÑледователи поддерживали вашу больницу в курÑе поÑледних разработок. Ваши иÑÑледователи заÑлужили Ñту награду. Продолжайте в том же духе!", }, regional_bad = { [1] = "Ð›ÑŽÐ±Ð°Ñ Ð±Ð¾Ð»ÑŒÐ½Ð¸Ñ†Ð° в округе продвинулаÑÑŒ в иÑÑледованиÑÑ… лучше вашей. Так как иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡ÐµÑки важны Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ больницы, то МиниÑтерÑтво пребывает в ÑроÑти.", }, penalty = { [1] = "Ð’Ñ‹ били плохи в иÑÑледовании новых лекарÑтв Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ методов лечениÑ. Это очень плохо. ТехнологичеÑкое превоÑходÑтво жизненно необходимо.", }, awards = { [1] = "Ваши иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ñохранили вашу больницу в курÑе поÑледних Ñобытий. Ваш иÑÑледовательÑкий перÑонал заÑлужил Ñту награду. Хорошо Ñработано.", [2] = "Ð’ течение прошлого года вы иÑÑледовали больше лекарÑтв и оборудованиÑ, чем можно было бы даже надеÑтьÑÑ. ПожалуйÑта примите Ñту награду от вÑех Ð½Ð°Ñ Ð¸Ð· МиниÑтерÑтва.", }, }, cash = "ДЕÐЬГИ", } drug_companies = { [1] = "ГоÑФармХимПром", [2] = "ИП Лечилкин", [3] = "ОÐО Шприцеватор", [4] = "КолеÑоПлюÑ", [5] = "ИП Бергман и Ко", } insurance_companies = { [1] = "ООО Вектор", [2] = "ЧП Луковые Кольца", [3] = "ООО БратÑтво Стали", [4] = "ЧП Дедушка Вареник", [5] = "ОДО Ð›ÐµÐ±ÐµÐ´Ð¸Ð½Ð°Ñ ÐŸÐµÑнÑ", [6] = "ГоÑБытСнабСтрах", [7] = "ООО ÐедоÑтрах", [8] = "ЧП Залкинд и ÑыновьÑ", [9] = "Ð‘Ð¸Ð²Ð¸Ñ Ð¸ Батт-хед Ко", [10] = "ООО ЗаÑтрахуй-ка", [11] = "ООО Страховой Синдикат", out_of_business = "ВЫШЕЛ ИЗ БИЗÐЕСÐ", } competitor_names = { [1] = "ПРОФИТ", [2] = "МÐРВИÐ", [3] = "МЕДИВÐÐ", [4] = "ГИППОМЕД", [5] = "ТОÐУС", [6] = "ЛОЩИÐÐ", [7] = "ДЗЕÐ", [8] = "СÐЛВИÐ", [9] = "ÐКИРÐ", [10] = "ПУЛЬМÐÐ", [11] = "ЧÐРЛИ", [12] = "КРИОÐИКÐ", [13] = "ГОРГОÐÐ", [14] = "ОЛИФÐÐТ", [15] = "КÐЛИÐÐ", [16] = "ÐОРМÐЛ", [17] = "ВИÐСЕÐТ", [18] = "МОЗЕС", [19] = "ÐМБУЛÐÐТÐ", [20] = "ÐХМЕД", [21] = "МÐКСВЕЛ", [22] = "ДÐÐИЭЛ", [23] = "ОЛИВÐ", [24] = "ÐИК", } level_names = { [1] = "ОтравинÑк", [2] = "Ð¡Ð¾Ð½Ð½Ð°Ñ Ð»Ð¾Ñ‰Ð¸Ð½Ð°", [3] = "ПолÑнÑк", [4] = "Правобережино", [5] = "ПроÑтецк", [6] = "Холмопупинка", [7] = "Зеленоград", [8] = "Белочкино", [9] = "ПограничинÑк", [10] = "Яичкино", [11] = "Квакушкино", [12] = "Избиваловка", [13] = "Большие Чумли", [14] = "Мелкопоповецк", [15] = "КлептоманÑк", } graphs = { deaths = "Умерло", money_in = "Доход", money_out = "РаÑход", visitors = "ПоÑетители", wages = "Зарплата", balance = "БаланÑ", time_spans = { [1] = "1 год", [2] = "12 лет", [3] = "48 лет", }, cures = "Вылечено", reputation = "РепутациÑ", } newspaper = { [1] = { [1] = "УЖÐСЫ ÐÐШЕГО КÐБИÐЕТÐ", [2] = "ТЕРÐПЕВТ ВОЗОМÐИЛ СЕБЯ БОГОМ", [3] = "КРУЧЕ ФРÐÐКЕÐШТЕЙÐÐ", [4] = "ЧТО У ÐÐС ÐРСТОЛЕ?", [5] = "ОБЛÐÐ’Ð ÐРСУМÐСШЕДШИХ ВРÐЧЕЙ", }, [2] = { [1] = "ВРÐЧ УПОРОЛСЯ Ð’ ХЛÐМ", [2] = "ОТЪЯВЛЕÐÐЫЙ ХИРУРГ", [3] = "КОÐСУЛЬТÐÐТ-ДЕБОШИР", [4] = "ÐЛКО-ХИРУРГИЯ", [5] = "ХИРУРГ ПОД ÐÐРКОЗОМ", [6] = "ВРÐЧ ДЫШÐЛ ПЕРЕГÐРОМ", }, [3] = { [1] = "ÐЕУДÐЧÐÐЯ ХИРУРГИЯ", [2] = "ВРÐЧРЗÐСТÐЛИ ВРÐСПЛОХ", [3] = "ПРОВÐЛ ВРÐЧÐ", [4] = "ÐЕÐÐСЫТÐЫЙ ХИРУРГ", }, [4] = { [1] = "ПОДПОЛЬÐЫЕ ОПЕРÐЦИИ", [2] = "ОРГÐÐ-ИЗОВÐÐÐОЕ ПРЕСТУПЛЕÐИЕ", [3] = "ОПЕРÐЦИИ...С ДЕÐЬГÐМИ", [4] = "ВРÐЧ ГРЕБ ДЕÐЬГИ ЛОПÐТКОЙ", }, [5] = { [1] = "МЕДИЦИÐСКРÐЕКРОФИЛИЯ", [2] = "ВРÐЧ РÐСКÐПЫВÐЛ МОГИЛЫ", [3] = "ЗÐСТУКÐЛИ С ТРУПОМ", [4] = "СУДÐЫЙ ДЕÐЬ ДЛЯ ДОКТОРÐ", [5] = "ТЕРМИÐÐЛЬÐÐЯ СТÐДИЯ ПРÐКТИКИ", [6] = "ДОКÐЗÐТЕЛЬСТВРВЫКОПÐÐЫ!", }, [6] = { [1] = "ВРÐЧРПОВЯЗÐЛИ!", [2] = "РРÐЗ! И ВСЕ!", [3] = "ДИÐГÐОСТИКРÐРКОФЕЙÐОЙ ГУЩЕ", [4] = "КОÐСУЛЬТÐÐТ-ÐЕВЕЖДÐ", }, [7] = { [1] = "ДОКТОР ЗÐÐЛ, ЧЕМ ВСЕ КОÐЧИТСЯ", [2] = "ХИРУРГ ВСКРЫЛ СÐМ СЕБЯ", [3] = "Ð’ ПУЧИÐЕ КОРРУПЦИИ", [4] = "ВРÐЧ Ð’ ЦЕÐТРЕ СКÐÐДÐЛÐ", [5] = "ДОКТОР ЗÐПУТÐЛСЯ Ð’ СЛОВÐÐ¥", }, } -- 10.4 ÐеиÑпользуемые/ÑиÑтемные/diff/хз что debug_patient_window = { caption = "Debug Patient", } menu_debug = { lua_console = " (F12) LUA CONSOLE ", porter_pagers = " PORTER PAGERS ", object_cells = " OBJECT CELLS ", display_pager = " DISPLAY PAGER ", disable_salary_raise = " DISABLE SALARY RAISE ", make_debug_fax = " MAKE DEBUG FAX ", display_big_cells = " DISPLAY BIG CELLS ", make_debug_patient = " MAKE DEBUG PATIENT ", mapwho_checking = " MAPWHO CHECKING ", sprite_viewer = " SPRITE VIEWER ", keep_clear_cells = " KEEP CLEAR CELLS ", dump_strings = " DUMP STRINGS ", machine_pagers = " MACHINE PAGERS ", remove_walls = " REMOVE WALLS ", enter_nav_debug = " ENTER NAV DEBUG ", lose_game_anim = { [1] = " LOSE GAME 1 ANIM ", [2] = " LOSE GAME 2 ANIM ", [3] = " LOSE GAME 3 ANIM ", [4] = " LOSE GAME 4 ANIM ", [5] = " LOSE GAME 5 ANIM ", [6] = " LOSE GAME 6 ANIM ", [7] = " LOSE GAME 7 ANIM ", }, map_overlay = " MAP OVERLAY ", calls_dispatcher = " CALLS DISPATCHER ", show_nav_cells = " SHOW NAV CELLS ", win_game_anim = " WIN GAME ANIM ", display_room_status = " DISPLAY ROOM STATUS ", cheats = " (F11) CHEATS ", remove_objects = " REMOVE OBJECTS ", nav_bits = " NAV BITS ", win_level_anim = " WIN LEVEL ANIM ", dump_gamelog = " (CTRL+D) DUMP GAME LOG ", limit_camera = " LIMIT CAMERA ", pixbuf_cells = " PIXBUF CELLS ", transparent_walls = " (X) TRANSPARENT WALLS ", show_help_hotspot = " SHOW HELP HOTSPOTS ", jump_to_level = " JUMP TO LEVEL ", entry_cells = " ENTRY CELLS ", plant_pagers = " PLANT PAGERS ", } lua_console = { execute_code = "Выполнить", close = "Закрыть", } calls_dispatcher = { repair = "Починить %s", summary = "%d вызовов; %d назначено", close = "Закрыть", watering = "Полить @ %d,%d", staff = "%s - %s", } information = { level_lost = { [1] = "Бум! Ð’Ñ‹ проиграли Ñтот уровень! Может быть, повезет в Ñледующий раз.", [2] = "Причина проигрыша:", reputation = "Ваша Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ ÑƒÐ¿Ð°Ð»Ð° ниже %d.", balance = "Ваш банковÑкий Ð±Ð°Ð»Ð°Ð½Ñ Ð¾Ð¿ÑƒÑтилÑÑ Ð½Ð¸Ð¶Ðµ %d.", percentage_killed = "Более %d ваших пациентов отошли в мир иной.", }, cannot_restart = "К Ñожалению, Ñта пользовательÑÐºÐ°Ñ Ð¸Ð³Ñ€Ð° была Ñохранена до реализации функции перезапуÑка.", custom_game = "Добро пожаловать в CorsixTH. РазвлекайтеÑÑŒ по полной на пользовательÑкой карте!", very_old_save = "Произошло много улучшений Ñ Ñ‚Ð¾Ð³Ð¾ момента, как вы в поÑледний раз запуÑкали Ñтот уровень. Чтобы быть уверенным, что вÑе функции работают как положено, пожалуйÑта перезапуÑтите его.", cheat_not_possible = "Ðе могу так жульничать на Ñтом уровне. Ð’Ñ‹ даже обмануть не можете, не Ñмешно, да?", no_custom_game_in_demo = "Извините, но в демонÑтрационной верÑии вы не можете играть в дополнительные карты.", } confirmation.maximum_screen_size = "Размер Ñкрана, введённый Вами, превышает 3000 x 2000. Большие Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚ÑÑ, но требуют хорошее аппаратное обеÑпечение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ чаÑтоты кадров. Ð’Ñ‹ уверены, что хотите продолжить?" confirmation.music_warning = "ЕÑли Ð’Ñ‹ хотите иÑпользовать mp3 файлы в качеÑтве вашей музыки в игре, Ваша Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÑиÑтема должна иметь smpeg.dll или его Ñквивалент, иначе музыка не будет проигрыватьÑÑ. Продолжить?" menu_options_wage_increase.deny = " ОТКÐЗÐТЬ " menu_options_wage_increase.grant = " РÐЗРЕШИТЬ " tooltip.options_window.audio_button = "Включить/Выключить вÑÑ‘ аудио в игре" tooltip.options_window.audio_toggle = "Включить/Выключить" tooltip.options_window.folder_button = "СвойÑтва папки" tooltip.options_window.customise_button = "Больше наÑтроек Ð´Ð»Ñ ÑƒÐ»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ð¸Ð³Ñ€Ð¾Ð²Ð¾Ð³Ð¾ опыта" tooltip.update_window.download = "Перейти к Ñтранице загрузки новейшей верÑии CorsixTH" tooltip.update_window.ignore = "Игнорировать Ñто обновление ÑейчаÑ. Ð’Ñ‹ Ñнова будете уведомлены при Ñледующем запуÑке CorsixTH" tooltip.folders_window.browse_font = "ПоиÑк другого файла Ñо шрифтом ( текущее раÑположение: %1% )" tooltip.folders_window.screenshots_location = "По умолчанию Ñкриншоты ÑохранÑÑŽÑ‚ÑÑ Ð² папке Ñ€Ñдом Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ конфигурации. По желанию Ð’Ñ‹ можете выбрать Ñвою папку, проÑто укажите нужный путь к ней." tooltip.folders_window.reset_to_default = "Вернуть папку в её изначальное раÑположение" tooltip.folders_window.back = "Закрыть Ñто меню и вернутьÑÑ Ðº наÑтройкам" tooltip.folders_window.music_location = "Выберите раÑположение ваших mp3 аудиофайлов. Ð’Ñ‹ должны были уже Ñоздать Ð´Ð»Ñ Ð½Ð¸Ñ… папку, теперь же укажите путь к ней." tooltip.folders_window.font_location = "РаÑположение файла Ñо шрифтом, который может отображать Ñимволы Юникода, необходимые вашему Ñзыку. ЕÑли Ñто не будет указано, вы не Ñможете выбрать Ñзыки, которым нужно больше Ñимволов, чем игра может предложить. Ðапример, китайÑкий и руÑÑкий." tooltip.folders_window.savegames_location = "По умолчанию папка, куда помещаютÑÑ ÑохранениÑ, находитÑÑ Ð² папке Ñ€Ñдом Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ конфигурации. По желанию Ð’Ñ‹ можете выбрать Ñвою папку, проÑто укажите нужный путь к ней." tooltip.folders_window.browse_data = "Обзор раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑƒÑтановленной верÑии Theme Hospital (текущее раÑположение: %1%)" tooltip.folders_window.browse = "Обзор раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿ÐºÐ¸" tooltip.folders_window.browse_screenshots = "Обзор раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿ÐºÐ¸ Ñкриншотов ( Текущее раÑположение: %1% ) " tooltip.folders_window.browse_music = "Обзор раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿ÐºÐ¸ музыки ( Текущее раÑположение: %1% ) " tooltip.folders_window.no_font_specified = "РаÑположение шрифта ещё не указано!" tooltip.folders_window.not_specified = "РаÑположение папки ещё не указано!" tooltip.folders_window.browse_saves = "Обзор раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿ÐºÐ¸ Ñохранений ( Текущее раÑположение: %1% ) " tooltip.folders_window.default = "РаÑположение по умолчанию" tooltip.folders_window.data_location = "Папка Ñ ÑƒÑтановленной верÑией Theme Hospital, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½ÑƒÐ¶Ð½Ð° CorsixTH Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка" tooltip.customise_window.aliens = "Из-за отÑутÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщих анимаций, по умолчанию пациенты-инопланетÑне могут приходить только в крайних ÑлучаÑÑ…. Чтобы разрешить пациентам Ñ Ð¸Ð½Ð¾Ð¿Ð»Ð°Ð½ÐµÑ‚Ð½Ð¾Ð¹ ДÐК приходить в любое времÑ, выключите Ñту опцию" tooltip.customise_window.average_contents = "ЕÑли Ð’Ñ‹ хотите, чтобы игра запоминала, какие объекты Ð’Ñ‹ обычно добавлÑете при Ñоздании комнат, включите Ñту опцию" tooltip.customise_window.back = "Закрыть Ñто меню и вернутьÑÑ Ðº наÑтройкам" tooltip.customise_window.movies = "Глобальное управление роликами поможет вам выключить вÑе ролики" tooltip.customise_window.fractured_bones = "Из-за плохо Ñделанной анимации женÑкие пациенты Ñо Ñломанными коÑÑ‚Ñми изначально выключены. Чтобы разрешить женщинам Ñо Ñломанными коÑÑ‚Ñми поÑещать вашу больницу, выключите Ñто" tooltip.customise_window.volume = "ЕÑли кнопка ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти также открывает больничный журнал, включите Ñту опцию, чтобы поменÑть горÑчую клавишу Ð´Ð»Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° на Shift+C" tooltip.customise_window.intro = "Выключить/Включить заÑтавку; ролики должны быть включены, еÑли Ð’Ñ‹ хотите, чтобы заÑтавка проигрывалаÑÑŒ при запуÑке CorsixTH" tooltip.customise_window.paused = "Во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°ÑƒÐ·Ñ‹ игрок в Theme Hospital может иÑпользовать только верхнее меню. По умолчанию Ñто верно и Ð´Ð»Ñ CorsixTH, но, включив Ñту опцию, вы можете получит доÑтуп ко вÑему даже во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°ÑƒÐ·Ñ‹" update_window.caption = "ДоÑтупно новое обновление!" update_window.new_version = "ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑ€ÑиÑ:" update_window.current_version = "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:" update_window.download = "Перейти к Ñтранице загрузки" update_window.ignore = "ПропуÑтить и перейти к главному меню" errors.fractured_bones = "ПРИМЕЧÐÐИЕ: ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¶ÐµÐ½Ñких перÑонажей Ñ Ñ€Ð°Ð·Ñ€ÑƒÑˆÐµÐ½Ð½Ñ‹Ð¼Ð¸ коÑÑ‚Ñми не идеальна" errors.alien_dna = "ПРИМЕЧÐÐИЕ: Ð”Ð»Ñ Ð¿Ð°Ñ†Ð¸ÐµÐ½Ñ‚Ð¾Ð²-инопланетÑн нет анимации ÑидениÑ, Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¸ ÑÑ‚ÑƒÑ‡Ð°Ð½Ð¸Ñ Ð² двери и Ñ‚.д. ПоÑтому, как и в Theme Hospital, они будут на Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€ÐµÐ²Ñ€Ð°Ñ‰Ð°Ñ‚ÑŒÑÑ Ð² обычных пациентов и обратно. Пациенты Ñ Ð¸Ð½Ð¾Ð¿Ð»Ð°Ð½ÐµÑ‚Ð½Ð¾Ð¹ ДÐК будут поÑвлÑтьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ еÑли Ñто указано уровнем." errors.load_quick_save = "Ошибка, не удалоÑÑŒ загрузить быÑтрое Ñохранение, так как оно не ÑущеÑтвовало, но мы Ñоздали Ð´Ð»Ñ Ð’Ð°Ñ Ð½Ð¾Ð²Ð¾Ðµ!" folders_window.data_label = "Данные TH" folders_window.music_location = "Выберите папку, которую Ð’Ñ‹ хотите иÑпользовать Ð´Ð»Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ¸" folders_window.music_label = "MP3 файлы" folders_window.new_th_location = "ЗдеÑÑŒ вы можете указать папку Ñ ÑƒÑтановленной Theme Hospital. Как только вы выберете новую папку, игра будет перезапущена." folders_window.caption = "РаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿Ð¾Ðº" folders_window.screenshots_label = "Скриншоты" folders_window.font_label = "Шрифт" folders_window.savegames_label = "СохранениÑ" folders_window.back = "Ðазад" folders_window.savegames_location = "Выберите папку, которую Ð’Ñ‹ хотите иÑпользовать Ð´Ð»Ñ Ñохранений" folders_window.screenshots_location = "Выберите папку, которую Ð’Ñ‹ хотите иÑпользовать Ð´Ð»Ñ Ñкриншотов" customise_window.average_contents = "Среднее Ñодержимое" customise_window.option_on = "Вкл" customise_window.paused = "Строить во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°ÑƒÐ·Ñ‹" customise_window.option_off = "Выкл" customise_window.intro = "Проигрывать заÑтавку" customise_window.caption = "ПользовательÑкие наÑтройки" customise_window.back = "Ðазад" customise_window.movies = "Управление роликами" customise_window.volume = "ГорÑÑ‡Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° ÑƒÐ±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти" customise_window.aliens = "Инопланетные пациенты" customise_window.fractured_bones = "Сломанные коÑти" options_window.folder = "Папки" options_window.customise = "ÐаÑтроить" options_window.audio = "Глобальное аудио" menu_options.twentyfour_hour_clock = " 24-ЧÐСОВОЕ ВРЕМЯ " menu_options.wage_increase = " ЗÐПРОСЫ ЗÐРПЛÐТЫ" install.ok = "ОК" install.cancel = "Отмена" adviser.research.drug_improved_1 = "ЛекарÑтво %s было улучшено Вашим департаментом иÑÑледований." adviser.warnings.no_desk_7 = "Ð’Ñ‹ поÑтроили приёмную Ñтойку, как наÑчёт нанÑÑ‚Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтратора? У Ð’Ð°Ñ Ð½Ðµ будет пациентов, пока Ð’Ñ‹ Ñ Ñтим не разберётеÑÑŒ!" adviser.warnings.researcher_needs_desk_1 = "ИÑÑледователю нужно рабочее меÑто" adviser.warnings.no_desk_6 = "Ð’Ñ‹ нанÑли региÑтратора, как наÑчёт приёмной Ñтойки Ð´Ð»Ñ Ð½ÐµÐ³Ð¾?" adviser.warnings.nurse_needs_desk_1 = "ÐšÐ°Ð¶Ð´Ð°Ñ Ð¼ÐµÐ´ÑеÑтра нуждаетÑÑ Ð² ÑобÑтвенном рабочем меÑте." adviser.warnings.researcher_needs_desk_2 = "Ваш иÑÑледователь рад, что Ð’Ñ‹ разрешили ему отдохнуть. ЕÑли Ð’Ñ‹ хотели, чтобы у Ð’Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð»Ð¸ неÑколько иÑÑледователей, Ð’Ñ‹ должны предоÑтавить каждому из них ÑобÑтвенное рабочее меÑто." adviser.warnings.no_desk_5 = "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸ÑˆÐ»Ð¾, Ñкоро к Вам начнут приходить пациенты!" adviser.warnings.no_desk_4 = "РегиÑтратору нужна Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð°Ñ Ñтойка, чтобы он мог приветÑтвовать новых пациентов" adviser.warnings.researcher_needs_desk_3 = "Каждый иÑÑледователь нуждаетÑÑ Ð² ÑобÑтвенном рабочем меÑте." adviser.warnings.cannot_afford_2 = "У Ð²Ð°Ñ Ð½ÐµÐ´Ð¾Ñтаточно денег в банке, чтобы Ñделать Ñту покупку!" adviser.warnings.nurse_needs_desk_2 = "Ваша медÑеÑтра рада, что Ð’Ñ‹ разрешили ей отдохнуть. ЕÑли Ð’Ñ‹ хотели, чтобы у Ð’Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð»Ð¸ неÑколько медÑеÑтёр, Ð’Ñ‹ должны предоÑтавить каждой из них ÑобÑтвенное рабочее меÑто." custom_game_window.free_build = "Свободное ÑтроительÑтво" menu_list_window.save_date = "Изменено" menu_list_window.name = "ИмÑ" information.level_lost.cheat = "Ð’Ñ‹ Ñто выбрали или проÑто нажали не ту кнопку? Ð’Ñ‹ даже нормально обмануть не можете, не Ñмешно, да?" CorsixTH-0.61/CorsixTH/Lua/languages/simplified_chinese.lua000066400000000000000000004177751321660673500237210ustar00rootroot00000000000000--[[ Copyright (c) 2012 lwglwsss Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- Note: This file contains UTF-8 text. Make sure your editor is set to UTF-8. Font("unicode") Language("简体中文", "Chinese (simplified)", "zh(s)", "chi(s)", "zho(s)") Inherit("english") Encoding(utf8) ------------------------------------ --NEW STRINGS IN LANGUAGE "简体中文": ------------------------------------ date_format = { daymonth = "%2%月 %1%æ—¥", } misc = { no_heliport = "还没有疾病被å‘现或者地图上需è¦ä¸€ä¸ªç›´å‡æœºåœº", not_yet_implemented = "(尚未实现)", } debug_patient_window = { caption = "病人除错", } totd_window = { tips = { "医院想开张就需è¦ä¸€ä¸ªå‰å°æ¡Œå­å’Œä¸€ä¸ªé—®è¯Šå®¤.这之åŽè¿˜éœ€è¦æ ¹æ®ä¸åŒç—…人建立å„ç§æˆ¿é—´.ä½†æœ‰ä¸ªè¯æˆ¿æ€»æ˜¯å¯¹çš„.", "有一些机器需è¦ç»´æŠ¤,比如说充气机.所以雇一两个修ç†äººå‘˜è¿˜æ˜¯å¿…è¦çš„, ä¸ç„¶é‚£å°±æ˜¯ä¸ªå®šæ—¶ç‚¸å¼¹.", "ä½ çš„å‘˜å·¥ä¼šä¸æ—¶æ„Ÿåˆ°ç–²å€¦. 所以建一间休闲室也很必è¦.", "多放点几个暖气,让你的员工和病人感到春天般温暖.ç”¨å…¨æ™¯åœ°å›¾æ¥æŸ¥çœ‹å®ƒä»¬çš„覆盖é¢ç§¯ä»¥å†³å®šæ˜¯å¦è¿˜éœ€è¦å¤šæ”¾äº›.", "一个医生的医疗水平很大程度影å“他的诊断速度.把最牛逼的医生放在问诊室,这样你会çœä¸‹å…¶ä»–的问诊室.", "实习生和医生们å¯ä»¥é€šè¿‡åœ¨å­¦ä¹ å®¤å‘ä¸“å®¶å­¦ä¹ æ¥æé«˜æ°´å¹³.如果请æ¥çš„专家拥有æŸä¸€é¡¹ä¸“é•¿,他也会教给他的学生们.", "有没有试过在传真机上拨112?这是欧洲的急救电è¯.别忘了把你的音箱开到最大!", "在主èœå•和游æˆèœå•里é¢,找到选项窗å£,在那里å¯ä»¥è°ƒæ•´åˆ†è¾¨çŽ‡å’Œè¯­è¨€.", "你选择了中文,但是你还是å¯èƒ½ä¼šåœ¨æ¸¸æˆä¸­ä¸åœåœ°çœ‹åˆ°è‹±æ–‡.把他们翻译了å§,我们需è¦ä½ çš„帮助!", "CorsixTHå°ç»„正在壮大!如果你对编程,翻译,创åšä¸»é¢˜åŒ»é™¢éœ€è¦çš„å›¾ç‰‡ç­‰ç­‰ä»»ä½•æ–¹é¢æ„Ÿå…´è¶£,请通过我们的论å›,邮件列表或者IRC频é“(corsix-th at freenode)è”系我们.", "如果你碰到了bug,请æäº¤ç»™æˆ‘们: th-issues.corsix.org", "æ¯ä¸€å…³éƒ½éœ€è¦æ»¡è¶³ç‰¹å®šçš„æ¡ä»¶æ‰èƒ½è¿‡å…³.ä½ å¯ä»¥é€šè¿‡çжæ€çª—å£çœ‹åˆ°ä½ çš„进度.", "如果你需è¦ç¼–辑或者删除一间房间,å±å¹•下方找到工具æ ,ç„¶åŽç‚¹ç¼–辑房间按钮.", "在æˆç¾¤ç»“队等待就诊的病人中, ä½ å¯ä»¥é€šè¿‡æŒ‡å‘æˆ¿é—´çš„é—¨æ¥æ‰¾åˆ°å“ªäº›ç—…人在等.", "点击房间门å¯ä»¥çœ‹åˆ°ç­‰å¾…队列.ä½ å¯ä»¥åšäº›è°ƒæ•´è®©æŸäº›äººèµ°ä¸ªåŽé—¨,或者é€åˆ°å¦ä¸€ä¸ªæˆ¿é—´åŽ».", "ä¸å¼€å¿ƒçš„å‘˜å·¥åªæœ‰é€šè¿‡æ¶¨è–ªæ¥å¹³è¡¡è‡ªå·±äº†.ä½ è¦ä¿è¯ä½ çš„员工的工作环境åƒå®¶ä¸€æ ·,æ‰èƒ½è®©ä»–们甘心给你å–命.", "病人等的时间长了,ä¼šå£æ¸´,如果开了暖气,壿¸´å¾—会更快!æ”¾äº›è‡ªåŠ¨è´©å–æœºå§,还能多些零花钱.", "如果你è§è¿‡æŸç§ç—…,ä½ å¯ä»¥ä¸­æ–­è¯Šç–—过程直接去治,治死了ä¸è¦æ‰¾æˆ‘.", "从紧急事件总能赚一大笔,ä½†æ˜¯ä½ è¦æŒ‰æ—¶å¤„ç†å¥½æ‰è¡Œ.", }, previous = "å‰ä¸€é¡¹æç¤º", next = "下一项æç¤º", } tooltip = { totd_window = { previous = "显示上一个æç¤º", next = "显示下一个æç¤º", }, message = { button = "点击打开消æ¯", button_dismiss = "点击打开消æ¯ï¼Œå³é”®ç‚¹å‡»å¿½ç•¥", }, custom_game_window = { start_game_with_name = "%s", }, cheats_window = { close = "关闭作弊窗å£", cheats = { end_month = "跳到月末.", emergency = "建一个急诊室.", win_level = "赢得当å‰å…³å¡.", create_patient = "在地图的边缘生æˆä¸€ä¸ªç—…人.", money = "往银行里存 10.000.", lose_level = "在当å‰å…³å¡è´¥åŒ—.", all_research = "å®Œæˆæ‰€æœ‰çš„研究.", end_year = "跳到年末.", }, }, casebook = { cure_requirement = { hire_staff = "您需è¦é›‡ä½£äººå‘˜æ¥æ²»ç–—该疾病", }, cure_type = { unknown = "您还ä¸çŸ¥é“如何治疗该疾病", }, }, main_menu = { exit = "退出", custom_level = "自定义游æˆ", options = "选项", }, menu_list_window = { back = "返回", }, new_game_window = { hard = "游æˆéš¾åº¦ï¼šå›°éš¾", cancel = "返回", tutorial = "游æˆä¸Šæ‰‹æ•™ç¨‹", easy = "游æˆéš¾åº¦ï¼šç®€å•", medium = "游æˆéš¾åº¦ï¼šä¸­ç­‰", }, save_game_window = { new_save_game = "", save_game = "%s", }, calls_dispatcher = { assigned = "è¿™ä¸ªæ¡†ä»£è¡¨æ˜¯å¦æœ‰äººè¢«åˆ†é…给此任务.", task = "任务列表 - 点击任务打开人员分é…窗å£ç„¶åŽæ»šåŠ¨åˆ°ä»»åŠ¡çš„ä½ç½®", close = "关闭接线员窗å£", }, research_policy = { research_progress = "此类研究下次å‘现的进度: %1%/%2%", no_research = "当剿²¡æœ‰ä»»ä½•此类研究在进行中", }, information = { close = "关闭", }, lua_console = { textbox = "输入Lua代ç å¯ç›´æŽ¥è¿è¡Œ", execute_code = "è¿è¡Œè¾“入的代ç ", close = "关闭控制å°", }, load_game_window = { load_game = "%s", load_autosave = "载入自动ä¿å­˜çš„æ¸¸æˆ", load_game_number = "è½½å…¥æ¸¸æˆ %d", }, fax = { close = "关闭此窗å£ï¼Œä½†ä¸åˆ é™¤æ¶ˆæ¯", }, objects = { litter = "废弃物: 病人找ä¸åˆ°åžƒåœ¾æ¡¶,æ‰€ä»¥éšæ„丢在了地上.", }, options_window = { fullscreen_button = "å…¨å±å¹•", change_resolution = "更改分辨率", height = "垂直åƒç´ ", width = "æ°´å¹³åƒç´ ", language = "转æ¢è¯­è¨€ä¸º%s", back = "返回", }, } custom_game_window = { caption = "自定义游æˆ", } cheats_window = { cheats = { end_month = "月末", emergency = "修建急诊室", win_level = "获胜", create_patient = "生æˆç—…人", money = "给我钱!!", lose_level = "失败", all_research = "所有研究", end_year = "年末", }, close = "关闭", caption = "作弊", cheated = { no = "作弊了å—: å¦", yes = "作弊了å—: 是", }, warning = "警告: 如果作弊关å¡ç»“æŸæ—¶ä½ å°†å¾—ä¸åˆ°ä»»ä½•奖励!", } errors = { unavailable_screen_size = "你设置的å±å¹•大尿— æ³•åº”ç”¨äºŽå…¨å±æ¨¡å¼ã€‚", dialog_missing_graphics = "哎呀, Demo æ•°æ®æ–‡ä»¶ä¸åŒ…å«è¿™ä¸ªå¯¹è¯æ¡†.", load_prefix = "载入游æˆå¤±è´¥ï¼š", save_prefix = "ä¿å­˜æ¸¸æˆå¤±è´¥ï¼š", map_file_missing = "找ä¸åˆ°è¯¥å…³å¡çš„地图文件 %sï¼", minimum_screen_size = "最å°å±å¹•大å°ä¸º 640x480。", } main_menu = { new_game = "开始游æˆ", custom_level = "自定义游æˆ", continue = "继续游æˆ", load_game = "载入游æˆ", options = "选项", version = "版本: ", exit = "退出" } menu_debug = { lua_console = " (F12) LUA æŽ§åˆ¶å° ", disable_salary_raise = " 关闭涨工资 ", make_debug_fax = " 建一个传真DEBUG ", make_debug_patient = " 建一个病人DEBUG ", sprite_viewer = " å›¾åƒæµè§ˆå™¨ ", dump_strings = " 输出字符串 ", map_overlay = " 地图层次 ", calls_dispatcher = " æŽ¥çº¿å‘˜çª—å£ ", cheats = " (F11) 作弊 ", dump_gamelog = " (CTRL+D) 输出游æˆè®°å½•文本 ", limit_camera = " é™åˆ¶é•œå¤´ ", transparent_walls = " (X) 把墙å˜é€æ˜Ž ", jump_to_level = " 跳关 ", } menu_options = { edge_scrolling = " 边缘滚动", lock_windows = " é”定窗å£", sound = " (ALT+S) 音效 ", announcements = " (ALT+A) 公告 ", music = " (ALT+M) éŸ³ä¹ ", jukebox = " (J) 音ä¹ç›’ ", adviser_disabled = " (SHIFT+A) 建议 ", warmth_colors = " 暖气区域显示 ", wage_increase = " æ¶¨å·¥èµ„è¦æ±‚", twentyfour_hour_clock = " 24å°æ—¶æ—¶é’Ÿ " } menu_options_game_speed = { pause = " æš‚åœ", } lua_console = { execute_code = "è¿è¡Œ", close = "关闭", } install = { title = "-------------------------------- CorsixTH 游æˆè®¾ç½® -------------------------------", th_directory = "è¿è¡Œæ¸¸æˆéœ€è¦åŽŸç‰ˆä¸»é¢˜åŒ»é™¢ã€‚è¯·æŒ‡å®šåŽŸç‰ˆä¸»é¢˜åŒ»é™¢æ¸¸æˆå®‰è£…文件夹。", ok = "确定", exit = "退出", cancel = "å–æ¶ˆ" } load_game_window = { caption = "载入游æˆ", } adviser = { cheats = { th_cheat = "æ­å–œ, ä½ è§£é”了作弊选项!", hairyitis_cheat = "Hairyitis 作弊模å¼å·²ç»å¼€å¯!", roujin_on_cheat = "Roujin's challengeå·²ç»å¼€å¯!ç¥ä½ å¥½è¿...", crazy_on_cheat = "ä¸ä¼šå§!所有的医生都疯了!", bloaty_off_cheat = "大头病作弊被关闭.", bloaty_cheat = "大头病作弊开å¯!", crazy_off_cheat = "还好... 所有的一生都æ¢å¤ç†æ™ºäº†.", roujin_off_cheat = "Roujin's challenge关闭.", hairyitis_off_cheat = "Hairyitis 作弊模å¼å…³é—­.", }, warnings = { no_desk = "你总得有个å‰å°å§!", no_desk_1 = "你得有个å‰å°,这样æ‰ä¼šæœ‰ç—…人æ¥!", no_desk_2 = "干的ä¸é”™, 基本上也是个世界纪录了å§:快一年了,一个病人都没有! 如果你想继续当这个ç»ç†çš„è¯,你需è¦åŽ»é›‡ä¸€ä¸ªå‰å°,ç„¶åŽç»™å¥¹ä¸€å¼ æ¡Œå­å·¥ä½œ!", no_desk_3 = "你真是个天æ‰,一年了连个å‰å°éƒ½æ²¡æœ‰! 你怎么å¯èƒ½æœ‰ä»»ä½•的病人æ¥? 赶紧给我æžå®š,别在那里ä¸åŠ¡æ­£ä¸šäº†!", no_desk_4 = "å‰å°éœ€è¦ä¸€ä¸ªæ¡Œå­æ¥æŽ¥å¾…æ¥è®¿çš„病人", no_desk_5 = "Well it's about time, you should start to see some patients arriving soon!", no_desk_6 = "You have a receptionist, so how about building a reception desk for her to work from?", no_desk_7 = "You've built the reception desk, so how about hiring a receptionist? You won't see any patients until you get this sorted out you know!", falling_1 = "嘿!别开玩笑了, 看看你都是怎么点鼠标的, ä½ å¯èƒ½ä¼šä¼¤åˆ°äºº!", falling_2 = "ä¸è¦å†èƒ¡æžäº†, 跟有病似的?", falling_3 = "啊~有人å—伤了,èµ¶ç´§å«åŒ»ç”Ÿ!", falling_4 = "这里是医院,䏿˜¯ä¸»é¢˜å…¬å›­!", falling_5 = "这里ä¸é€‚åˆé€—人玩,他们是病人好å—?", falling_6 = "è¿™é‡Œä¸æ˜¯ä¿é¾„çƒé¦†, 应该对待病人如春天般温暖!", cannot_afford = "ä½ å·²ç»æ²¡æœ‰è¶³å¤Ÿçš„é’±æ¥é›‡è¿™ä¸ªäºº!",-- I can't see anything like this in the original strings cannot_afford_2 = "你没有足够的存款æ¥åšè¿™ä»¶äº‹!", research_screen_open_1 = "你需è¦å»ºè®¾ä¸€ä¸ªç ”究科室æ‰èƒ½è®¿é—®ç ”究页é¢.", research_screen_open_2 = "这一关ä¸èƒ½å¼€å±•研究.", researcher_needs_desk_1 = "研究员需è¦ä¸€å¼ æ¡Œå­å±•开工作.", researcher_needs_desk_2 = "你的研究员对你å…许他休æ¯ç‰‡åˆ»è¡¨ç¤ºæ„Ÿè°¢,但如果你想让æ¯ä¸ªäººéƒ½å·¥ä½œ,你需è¦ç»™æ¯ä¸ªäººä¸€å¼ æ¡Œå­.", researcher_needs_desk_3 = "æ¯ä¸ªç ”究院需è¦è‡ªå·±çš„æ¡Œå­.", nurse_needs_desk_1 = "æ¯ä¸ªæŠ¤å£«éƒ½éœ€è¦è‡ªå·±çš„æ¡Œå­.", nurse_needs_desk_2 = "你的护士对你å…许他休æ¯ç‰‡åˆ»è¡¨ç¤ºæ„Ÿè°¢,但如果你想让æ¯ä¸ªäººéƒ½å·¥ä½œ,你需è¦ç»™æ¯ä¸ªäººä¸€å¼ æ¡Œå­.", }, room_forbidden_non_reachable_parts = "在这个地方放置房间会导致医院的部分空间无法到达.", } calls_dispatcher = { repair = "ä¿®ç† %s", summary = "%d 次电è¯; %d 被分é…", close = "关闭", watering = "浇水 @ %d,%d", staff = "%s - %s", } information = { level_lost = { [1] = "æ‚¨å¤±è´¥äº†ï¼æ¸¸æˆç»“æŸã€‚", [2] = "由于:", reputation = "声望低于%d。", balance = "银行账户资金低于%d。", percentage_killed = "æ€æ­»äº†%d的病人。", }, cannot_restart = "ä¸å¹¸çš„æ˜¯è¿™ä¸ªè‡ªå®šä¹‰åœ°å›¾æ˜¯åœ¨ 釿–°å¼€å§‹ 功能开å‘之å‰åˆ›å»ºçš„.", custom_game = "欢迎æ¥åˆ° CorsixTH。尽情享å—自定义地图å§ï¼", } new_game_window = { caption = "竞争上岗", player_name = "玩家åç§°", option_on = "å¼€", option_off = "å…³", difficulty = "难度", easy = "实习医生(容易)", medium = "医生(一般)", hard = "专家(难)", tutorial = "æ¸¸æˆæ•™ç¨‹", start = "开始", cancel = "返回", } options_window = { caption = "设置", option_on = "å¼€", option_off = "å…³", fullscreen = "å…¨å±å¹•", resolution = "分辨率", custom_resolution = "自定义...", width = "宽度", height = "高度", audio = "全局音效", customise = "自定义", folder = "文件夹", language = "语言", apply = "应用", cancel = "å–æ¶ˆ", back = "返回", } menu_list_window = { name = "åç§°", save_date = "已修改", back = "返回", } save_game_window = { caption = "ä¿å­˜æ¸¸æˆ", new_save_game = "给新游æˆå­˜æ¡£èµ·ä¸ªå", } fax = { choices = { decline_new_level = "ç»§ç»­ç»è¥è¿™ä¸ªåŒ»é™¢", accept_new_level = "接手下一个医院", return_to_main_menu = "返回到主èœå•", }, } menu_debug_overlay = { heat = " 温度 ", byte_0_1 = " BYTE 0 & 1 ", byte_6 = " BYTE 6 ", flags = " FLAGS ", byte_7 = " BYTE 7 ", byte_5 = " BYTE 5 ", byte_floor = " BYTE FLOOR ", positions = " POSITIONS ", byte_w_wall = " BYTE W WALL ", parcel = " PARCEL ", byte_n_wall = " BYTE N WALL ", none = " NONE ", } confirmation = { abort_edit_room = "你正在修建或者就该一个房间.如果所有必需的物å“都被放置了就没有问题,å¦åˆ™æ‰€åšçš„修改将被删除. ç»§ç»­å—?", needs_restart = "这项设置的改动需è¦é‡æ–°å¯åЍ CorsixTH. 尚未ä¿å­˜çš„进度将会丢失. 确定è¦è¿™ä¹ˆåšå—?", } dynamic_info = { patient = { actions = { no_gp_available = "您需è¦å»ºé€ ä¸€èˆ¬è¯Šæ–­å®¤", }, }, staff = { actions = { fired = "已解雇", heading_for = "å‰å¾€%s", }, }, } introduction_texts = { demo = "欢迎æ¥åˆ°æ¼”示版医院!" .. "æ¼”ç¤ºç‰ˆæœ¬åªæœ‰å½“å‰è¿™ä¸€ä¸ªå…³å¡. 但有一堆事情足够你忙一阵了!" .. "你将会é‡åˆ°å„ç§ç–¾ç—…需è¦å„ç§åŒ»ç–—å®¤æ¥æ•‘æ²». 紧急情况也会ç»å¸¸æ€§åœ°å‘生. 你需è¦é€šè¿‡ç ”究室æ¥ç ”呿›´å¤šçš„医疗室." .. "你的目标是挣够 $100,000, 使医院的价值达到 $70,000 以åŠå¾—到 700 声望值, åŒæ—¶ä½ è¿˜éœ€è¦æ•‘治超过 75% 的病人." .. "ç¡®ä¿ä½ çš„声望值ä¸ä¼šæŽ‰åˆ° 300 以下, 你的病人死亡率ä¸è¶…过 40% , å¦åˆ™ä½ å°±å®Œäº†." .. "ç¥ä½ å¥½è¿!", } object = { litter = "废弃物", } letter = { custom_level_completed = "åšçš„好ï¼ä½ å·²å®Œæˆè‡ªå®šä¹‰æ¸¸æˆçš„æ‰€æœ‰ç›®æ ‡ï¼", dear_player = "亲爱的 %s", return_to_main_menu = "你想è¦å›žåˆ°ä¸»èœå•还是继续游æˆ?", } update_window = { caption = "å¯å‡çº§æ–°ç‰ˆæœ¬ï¼", new_version = "新版本:", current_version = "当å‰ç‰ˆæœ¬ï¼š", download = "打开下载页é¢", ignore = "回到主èœå•" } tooltip.custom_game_window.free_build = "勾选此框你将ä¸éœ€è¦ä¸ºé’±ä»¥åŠèƒœåˆ©å¤±è´¥è€Œæ“心" tooltip.cheats_window.cheats.vip = "创建一个 VIP." tooltip.menu_list_window.save_date = "点击整ç†ä¸€ä¸ªæŒ‰ç…§æœ€åŽä¿®æ”¹æ—¥æœŸæŽ’åºçš„列表" tooltip.menu_list_window.name = "点击按照åå­—æ•´ç†" custom_game_window.free_build = "自由模å¼" cheats_window.cheats.vip = "创建 VIP" main_menu.version = "版本: " main_menu.savegame_version = "存档版本: " progress_report.free_build = "自由模å¼" menu_options.adviser_disabled = " 显示建议" install.exit = "退出" information.very_old_save = "你上次存档之åŽ,è¿™ä¸ªæ¸¸æˆæœ‰å¾ˆå¤šæ›´æ–°. 为了ä¿è¯ä½ èƒ½çŽ©åˆ°æœ€æ–°æœ€é…·çš„æ¸¸æˆ,è¯·è€ƒè™‘é‡æ–°æ¥è¿‡" options_window.cancel = "å–æ¶ˆ" menu_list_window.save_date = "修改日期" menu_list_window.name = "åç§°" fax.vip_visit_result.remarks.free_build[1] = "你的医院相当ä¸é”™! 没有预算的é™åˆ¶,æžå®šå¾ˆå®¹æ˜“å§?" fax.vip_visit_result.remarks.free_build[2] = "æˆ‘ä¸æ˜¯ä¸€ä¸ªç»æµŽå­¦å®¶, ä½†æˆ‘è¦æ˜¯ä½ æˆ‘也行. ä½ æ‡‚æˆ‘å•¥æ„æ€..." fax.vip_visit_result.remarks.free_build[3] = "医院ç»è¥çš„ä¸é”™. 但è¦å°å¿ƒç»æµŽä¸æ™¯æ°”. 哦对了,ä½ æ‰ä¸æ“那个心." fax.emergency.free_build = "æˆåŠŸçš„è¯,你的声望就会上å‡,ä½†ä½ è¦æ˜¯å¤±è´¥äº†, 就会一è½åƒä¸ˆ." fax.emergency.num_disease_singular = "那里有一个人患了 %s ,他们需è¦é©¬ä¸Šæ•‘æ²»." ------------------------------------ --OLD STRINGS IN LANGUAGE "简体中文": ------------------------------------ misc = { hospital_open = "医院开门", save_success = "游æˆå­˜æ¡£æˆåŠŸ", save_failed = "错误:无法存档", low_res = "低清晰度", grade_adverb = { extremely = "æžç«¯çš„", mildly = "柔和的", moderately = "适当的", }, send_message = "å‘玩家%då‘é€ä¿¡æ¯", out_of_sync = "游æˆå¤±åŽ»åŒæ­¥", balance = "难度选择:", load_failed = "å­˜æ¡£æ¸¸æˆæ²¡æœ‰è¢«è¯»å–", mouse = "è€é¼ ", done = "完æˆ", force = "力é‡", pause = "æš‚åœ", send_message_all = "呿‰€æœ‰çީ家å‘é€ä¿¡æ¯", } staff_list = { morale = "士气", tiredness = "疲劳程度", skill = "技能", total_wages = "工资总é¢", } research = { allocated_amount = "已分é…é‡", funds_allocation = "资金é…ç½®", categories = { improvements = "改良", drugs = "è¯å“研究", diagnosis = "诊断仪器", cure = "治疗仪器", specialisation = "专项", }, } queue_window = { num_in_queue = "队ä¼é•¿åº¦", num_entered = "访问者人数", max_queue_size = "最大长度", num_expected = "预期", } staff_class = { doctor = "医生", handyman = "清æ´å·¥", receptionist = "接待员", nurse = "护士", surgeon = "外科医生", } tooltip = { hire_staff_window = { prev_person = "查看å‰ä¸€ä¸ªäºº", cancel = "å–æ¶ˆ", psychiatrist = "精神病医生", salary = "月薪", next_person = "查看åŽä¸€ä¸ªäºº", nurses = "查看å¯é›‡ä½£çš„æŠ¤å£«", surgeon = "外科医生", handymen = "查看å¯é›‡ä½£çš„æ¸…æ´å·¥äºº", doctors = "查看å¯é›‡ä½£çš„医生", doctor_seniority = "医生资历(实习医生,医生,专家)", hire = "雇佣", researcher = "科研人员", qualifications = "医生的特殊技能", receptionists = "查看å¯é›‡ä½£çš„æŽ¥å¾…员", staff_ability = "员工能力", }, handyman_window = { close = "å–æ¶ˆè¯·æ±‚", ability = "能力", face = "清æ´å·¥çš„é¢å­”", prio_machines = "æé«˜æ¸…æ´å·¥ç»´ä¿®æœºå™¨çš„优先级", prio_litter = "æé«˜æ¸…æ´å·¥æ¸…除垃圾的优先级", happiness = "å¿«ä¹ç¨‹åº¦", prio_plants = "æé«˜æ¸…æ´å·¥ç»™æ¤ç‰©æµ‡æ°´çš„优先级", name = "清æ´å·¥çš„åå­—", tiredness = "疲劳程度", center_view = "切æ¢åˆ°å½“å‰äººç‰©", salary = "工资", sack = "解雇", pick_up = "拾起", }, staff_list = { ability_2 = "员工的能力水平", next_person = "下一页", detail = "细心程度", happiness = "显示员工满æ„程度", researcher_train = "å·²ç»æŽ¥å—了%d%%的研究技能培训", handymen = "查看医院中被雇佣清æ´å·¥äººåå•", tiredness = "显示员工疲劳程度", researcher = "åˆæ ¼ç ”究人员", happiness_2 = "员工士气", pay_rise = "æé«˜å‘˜å·¥å·¥èµ„10%", bonus = "付给该员工10%奖金", prev_person = "上一页", nurses = "查看医院中被雇佣护士åå•", psychiatrist = "åˆæ ¼ç²¾ç¥žç—…医生", salary = "该员工当å‰å·¥èµ„", ability = "显示员工能力水平", close = "退出并返回游æˆ", sack = "解雇员工", surgeon = "åˆæ ¼å¤–科医生", tiredness_2 = "员工的疲劳程度", doctors = "查看医院中被雇佣医生åå•", doctor_seniority = "医生资历", view_staff = "查看员工工作情况", surgeon_train = "å·²ç»æŽ¥å—了%d%%的外科培训", skills = "特殊技能", receptionists = "查看医院中被雇佣接待员åå•", psychiatrist_train = "å·²ç»æŽ¥å—了%d%%的精神病治疗培训", }, research = { cure_inc = "æé«˜ç§‘研百分比", close = "关闭研究画é¢", specialisation_dec = "é™ä½Žä¸“门研究百分比", diagnosis_dec = "é™ä½Žç§‘研百分比", allocated_amount = "已分é…预算", improvements_inc = "æé«˜æ”¹è‰¯ç ”究百分比", drugs_dec = "é™ä½Žè¯å“研究百分比", drugs_inc = "æé«˜è¯å“研究百分比", cure_dec = "é™ä½Žç–—效研究百分比", specialisation_inc = "æé«˜ä¸“门研究百分比", improvements_dec = "é™ä½Žæ”¹è‰¯ç ”究百分比", diagnosis_inc = "æé«˜ä»ªå™¨ç ”究百分比", }, machine_window = { repair = "呼嫿¸…æ´å·¥ç»´ä¿®æœºå™¨", name = "åå­—", close = "关闭", times_used = "机器被使用次数", status = "机器状况", replace = "改良机器", }, place_objects_window = { confirm = "确认", cancel = "å–æ¶ˆ", pick_up = "拾起物å“", buy_sell = "ä¹°/å–物å“", }, status = { percentage_cured = "æ‚¨éœ€è¦æ²»ç–—%d%%剿¥å°±è¯Šçš„ç—…äººã€‚å½“å‰æ‚¨å·²ç»æ²»ç–—了%d%%", thirst = "医院中所有人的总体干渴程度", close = "关闭总览画é¢", population_chart = "图表显示æ¯ä¸ªåŒ»é™¢å¯¹å½“地居民的å¸å¼•程度", win_progress_own = "显示当å‰è¿›å±•情况", reputation = "您的声望必须至少有%d。当å‰å€¼ä¸º%d", population = "æ‚¨è‡³å°‘éœ€è¦æ€»äººå£çš„%d%%æ¥è®¿é—®æ‚¨çš„医院", warmth = "医院中所有人的总体温暖程度", percentage_killed = "ä»»åŠ¡è¦æ±‚最多åªèƒ½æ€æ­»%d%%的就诊病人。到目å‰ä¸ºæ­¢ï¼Œæ‚¨å·²ç»æ€æ­»äº†%d%%的病人。", balance = "您的现金必须至少有$%d。当å‰å€¼ä¸º$%d", value = "您的医院价值必须至少有$%d。当å‰å€¼ä¸º$%d", win_progress_other = "显示当å‰%sæ–¹é¢çš„进展情况", num_cured = "您的目标是治愈%dä¸ªç—…äººã€‚çŽ°åœ¨æ‚¨å·²ç»æ²»æ„ˆ%d个", happiness = "医院中所有人的总体快ä¹ç¨‹åº¦", }, queue_window = { end_of_queue = "拖动一ä½ç—…人到该按钮处,将使其移动到队尾", num_entered = "到目å‰ä¸ºæ­¢è¯¥æˆ¿é—´å·²å¤„ç†ç—…人数目", close = "关闭颿¿", num_in_queue = "排队等候的病人数目", num_expected = "å³å°†åŠ å…¥é˜Ÿä¼çš„病人数目", front_of_queue = "拖动一ä½ç—…人到该按钮处,将使其移动到队首", dec_queue_size = "å‡å°‘队ä¼çš„æœ€å¤§é•¿åº¦", max_queue_size = "接待员å…许的最大排队人数", inc_queue_size = "增加队ä¼çš„æœ€å¤§é•¿åº¦", patient = "拖动病人将改å˜å…¶æŽ’队ä½ç½®ã€‚å³å‡»æŸä¸ªç—…人å¯ä»¥é€‰æ‹©å°†å…¶é£é€å›žå®¶æˆ–é£é€åˆ°ç«žäº‰å¯¹æ‰‹çš„医院。", patient_dropdown = { send_home = "让病人离开医院", hospital_2 = "将病人é€åˆ°å…¶å®ƒåŒ»é™¢", reception = "将病人é€åˆ°æŽ¥å¾…员处", hospital_1 = "将病人é€åˆ°å…¶å®ƒåŒ»é™¢", hospital_3 = "将病人é€åˆ°å…¶å®ƒåŒ»é™¢", }, }, jukebox = { rewind = "å‘åŽ", loop = "循环播放", stop = "åœæ­¢æ’­æ”¾", close = "关闭音ä¹ç›’", current_title = "音ä¹ç›’", play = "播放", fast_forward = "å‘å‰", }, graphs = { deaths = "åˆ‡æ¢æ­»äº¡äººæ•°", close = "关闭图表画é¢", scale = "比例尺", money_out = "åˆ‡æ¢æ”¯å‡º", visitors = "切æ¢è®¿é—®äººæ•°", wages = "切æ¢å·¥èµ„", balance = "切æ¢çް金", money_in = "åˆ‡æ¢æ”¶å…¥", cures = "åˆ‡æ¢æ²»æ„ˆäººæ•°", reputation = "切æ¢åŒ»é™¢ä»·å€¼", }, toolbar = { reputation = "声望", casebook = "治疗手册", edit = "编辑房间/物å“", staff_list = "员工管ç†", policy = "制度", date = "日期", charts = "图表", objects = "设置走廊", balance = "现金", research = "研究", hire = "雇佣员工", status = "状æ€", town_map = "城市地图", rooms = "建造房屋", bank_button = "左击进入银行ç»ç†ç”»é¢ï¼Œå³å‡»è¿›å…¥é“¶è¡Œå¸æˆ·", }, pay_rise_window = { accept = "æ»¡è¶³è¦æ±‚", decline = "æ‹’ç»ï¼å°†å…¶è§£é›‡", }, town_map = { close = "退出城镇地图画é¢", plants = "åˆ‡æ¢æ¤ç‰©", fire_extinguishers = "切æ¢ç­ç«å™¨", people = "切æ¢äººå‘˜", balance = "现金", heat_dec = "å‡å°‘供热", heating_bill = "供暖费", radiators = "åˆ‡æ¢æš–æ°”", objects = "切æ¢ç‰©å“", heat_level = "供热强度", heat_inc = "增加供热", }, casebook = { sent_home = "转走人数", cure_requirement = { hire_staff_old = "您需è¦é›‡ä½£ä¸€å%sæ¥æ²»ç–—该疾病", possible = "您有能力治疗这ç§ç–¾ç—…", not_possible = "您还没有能力治疗该ç§ç–¾ç—…", ward_hire_nurse = "您需è¦ä¸€ä½æŠ¤å£«åœ¨ç—…房中照料病人", hire_surgeon = "您需è¦é›‡ä½£ç¬¬äºŒä½å¤–科医生æ¥å®Œæˆæ‰‹æœ¯", research_machine = "您需è¦ç ”ç©¶ä¸€äº›ä»ªå™¨æ¥æ²»ç–—è¿™ç§ç–¾ç—…", build_room = "您需è¦ä¿®å»ºä¸€ä¸ªæˆ¿é—´æ¥æ²»ç–—è¿™ç§ç–¾ç—…", build_ward = "您需è¦å»ºé€ ä¸€ä¸ªç—…æˆ¿æ¥æ²»ç–—该疾病", hire_surgeons = "您需è¦é›‡ä½£ä¸¤åå¤–ç§‘åŒ»ç”Ÿå®Œæˆæ‰‹æœ¯", }, increase = "增加", up = "å‘上滚动", reputation = "治疗或诊断声望", research = "点击这里å¯ä»¥ä¸ºæ²»ç–—使用专门研究预算", close = "关闭治疗手册", earned_money = "总收入", cure_type = { psychiatrist = "ç”±ç²¾ç¥žç—…åŒ»ç”Ÿå®Œæˆæ²»ç–—工作", drug_percentage = "治疗使用è¯å“ï¼å…¶ç–—效为%d%%", drug = "治疗时将使用è¯å“", machine = "该疾病需è¦ä»ªå™¨è¾…助治疗", surgery = "è¯¥ç–¾ç—…éœ€è¦æ‰‹æœ¯", }, decrease = "å‡å°‘", deaths = "死亡人数", cured = "治愈人数", down = "å‘下滚动", treatment_charge = "花费", }, policy = { diag_termination = "对于一个病人的诊断将一直æŒç»­åˆ°è®¾å®šçš„æ²»ç–—结æŸç™¾åˆ†æ¯”,或所有的诊断机器都已ç»å°è¯•一é", close = "关闭制度画é¢", staff_leave = "点击这里å¯ä»¥è®©å¤„于空闲状æ€çš„员工帮助其他员工", diag_procedure = "如果医生的诊断结果为,治愈概率å°äºŽè®¾å®šçš„é£é€å›žå®¶ç™¾åˆ†æ¯”,则该病人将被自动é£é€å›žå®¶ã€‚如果治愈概率大于设定的å°è¯•治疗百分比,则该病人将被自动é€åŽ»è¿›è¡Œæ²»ç–—", staff_rest = "å‘˜å·¥ä¼‘æ¯æ—¶çš„æœ€ä½Žç–²åŠ³ç¨‹åº¦", staff_stay = "点击这里å¯ä»¥ä½¿æ‰€æœ‰å‘˜å·¥åœç•™åœ¨è®¾å®šçš„æˆ¿é—´å†…", }, bank_manager = { graph = "显示%s支付曲线", close = "关闭银行ç»ç†ç”»é¢", hospital_value = "医院当å‰ä»·å€¼", graph_return = "返回上个画é¢", current_loan = "当剿œªå¿è¿˜è´·æ¬¾", borrow_5000 = "å‘银行借款$5000", balance = "银行现金", interest_payment = "æ¯æœˆåˆ©æ¯æ”¯ä»˜", inflation_rate = "年通货膨胀率", interest_rate = "年利率", repay_5000 = "å‘银行å¿è¿˜$5000", show_graph = "显示%s支付曲线", insurance_owed = "%s欠款的金é¢", }, main_menu = { new_game = "开始新游æˆ", load_game = "载入进度", network = "开始网络游æˆ", exit = "ä¸è¦ï¼Œä¸è¦ï¼Œè¯·ä¸è¦é€€å‡ºæ¸¸æˆï¼", quit = "确定è¦é€€å‡ºæ¸¸æˆå—?", continue = "ç»§ç»­æ¸¸æˆæœ€è¿‘的游æˆ", load_menu = { load_slot = "读å–进度", empty_slot = "空" } }, patient_window = { graph = "通过点击å¯ä»¥åœ¨å¥åº·æƒ…况和病å²ä¹‹é—´åˆ‡æ¢", casebook = "查看有关疾病的详细情况", close = "关闭", queue = "查看队ä¼è¯¦ç»†èµ„æ–™", happiness = "å¿«ä¹ç¨‹åº¦", warmth = "温暖程度", center_view = "切æ¢åˆ°å½“å‰äººç‰©", thirst = "干渴程度", send_home = "把病人赶出医院", abort_diagnosis = "无需诊断直接去治疗", }, watch = { emergency = "紧急情况:剩余时间内尽快治愈所有急救病人。", hospital_opening = "建造计时器:它主è¦ç”¨æ¥æŒ‡ç¤ºè·ç¦»åŒ»é™¢å¼€é—¨çš„æ—¶é—´å¤šå°‘。直接点击开门按钮就å¯ä»¥ç«‹å³å¼€é—¨è¿ŽæŽ¥å®¢äººã€‚", epidemic = "传染病:剩余时间内尽快阻止传染病蔓延。当时间耗尽或一个被传染病人离开医院,则å«ç”Ÿå·¡æŸ¥å‘˜å°†å‡ºçŽ°ã€‚é€šè¿‡æŒ‰é’®å¯ä»¥åˆ‡æ¢é¢„é˜²æŽ¥ç§æ¨¡å¼å¼€æˆ–者关。点击病人就å¯ä»¥è®©æŠ¤å£«ä¸ºå…¶æŽ¥ç§ã€‚", }, staff_window = { doctor_seniority = "èµ„åŽ†ï¼æ˜¯å®žä¹ åŒ»ç”Ÿï¼ŒåŒ»ç”Ÿè¿˜æ˜¯ä¸“å®¶", psychiatrist = "精神病", close = "关闭", ability = "能力", pick_up = "拾起", sack = "解雇", surgeon = "外科", happiness = "å¿«ä¹ç¨‹åº¦", salary = "月薪", name = "员工åå­—", tiredness = "疲劳程度", center_view = "点击鼠标å³é”®åˆ‡æ¢äººç‰©", skills = "特殊技术", researcher = "研究", face = "é¢å­”ï¼ç‚¹å‡»è¿›å…¥ç®¡ç†", }, rooms = { ultrascan = "医生使用超级扫æä»ªæˆ¿é—´è¯Šæ–­ç—…人", research_room = "拥有研究技能的医生å¯ä»¥åœ¨ç ”ç©¶éƒ¨é—¨å¼€å‘æ–°çš„è¯å“和机器。", fracture_clinic = "护士使用骨折诊所治疗骨折病人", gps_office = "病人在一般诊断室内接å—åˆå§‹è¯Šæ–­", inflation = "医生使用充气机房间治疗头部肿胀病人", staffroom = "医生和护士在员工休æ¯å®¤å†…å¯ä»¥æ¢å¤ç–²åг", jelly_vat = "医生使用胶桶诊所治疗失衡患者", scanner = "医生使用扫æä»ªæˆ¿é—´è¯Šæ–­ç—…人", decontamination = "医生使用净化淋浴装置å¯ä»¥æ²»ç–—放射病", pharmacy = "æŠ¤å£«åœ¨è¯æˆ¿ä¸ºç—…人é…è¯æ²»ç–—", cardiogram = "医生使用心电图室诊断病人", ward = "病房对于诊断和治疗都是éžå¸¸æœ‰ç”¨çš„。病人手术å‰è¦åœ¨ç—…æˆ¿ä¸­è§‚å¯Ÿä¸€æ®µæ—¶é—´ã€‚ç—…æˆ¿éœ€è¦æŠ¤å£«", training_room = "专家使用培训室对其他医生进行培训", operating_theatre = "手术中心需è¦ä¸¤å具备外科技能的医生", psychiatry = "精神病诊断治疗室å¯ä»¥æ²»ç–—ç²¾ç¥žç—…æ‚£è€…åŒæ—¶ä¹Ÿèƒ½å¸®åŠ©è¯Šæ–­å…¶ä»–ç—…äººï¼Œä½†æ˜¯éœ€è¦ä¸€ä½æ‹¥æœ‰ç²¾ç¥žç—…治疗技能的医生", hair_restoration = "åŒ»ç”Ÿä½¿ç”¨æ¯›å‘æ¢å¤æˆ¿é—´æ²»ç–—秃顶病人", tongue_clinic = "医生使用舌头æ¾å¼›è¯Šæ–­å®¤æ²»ç–—舌头æ¾å¼›ç—‡ç—…人", dna_fixer = "医生使用DNAæ¢å¤è£…置房间治疗外星人DNA病人", general_diag = "医生使用高级诊断室为患者进行基本诊断。花费很少但效率很高", toilets = "建造洗手间å¯ä»¥é˜²æ­¢ç—…人把医院弄得一团糟ï¼", electrolysis = "医生使用电分解房间治疗多毛症病人", x_ray = "医生使用X光房间诊断病人", blood_machine = "医生使用血液机器房间诊断病人", }, statement = { close = "å…³é—­é“¶è¡Œå¸æˆ·ç”»é¢", }, buy_objects_window = { confirm = "购买物å“", cancel = "å–æ¶ˆ", increase = "多买一个", total_value = "å®šè´­ç‰©å“æ€»å€¼", price = "物å“ä»·æ ¼", decrease = "少买一个", }, window_general = { confirm = "确定", cancel = "å–æ¶ˆ", }, objects = { chair = "椅å­ï¼šä¾›ç—…人使用,以讨论病情。", sofa = "æ²™å‘:摆放在员工休æ¯å®¤ä¸­ï¼Œå‘˜å·¥å¦‚æžœæ²¡æœ‰æ›´å¥½çš„æ”¾æ¾æ–¹å¼ï¼Œåˆ™å¯ä»¥ååœ¨ä¸Šé¢æ¢å¤ç–²åŠ³ã€‚", operating_table = "30 OB_OP_TABLE", bed2 = "未使用", bench = "长椅:为病人æä¾›ä¸€ä¸ªåº§ä½ï¼Œä½¿å…¶å¯ä»¥æ¯”较舒适地等待。", scanner = "14 OB_SCANNER", couch = "18 OB_COUCH", blood_machine = "42 OB_BLOOD_MC", table1 = "桌å­ï¼ˆå·²åˆ é™¤ï¼‰ï¼šæ‘†æ”¾å¤§é‡æ‚志,使等待的病人感到快ä¹ã€‚", video_game = "视频游æˆï¼šè®©æ‚¨çš„员工在游æˆä¸­å½»åº•放æ¾ã€‚", lamp = "ç¯ï¼šç…§æ˜Žç”¨ã€‚", op_sink2 = "34 OB_OP_SINK_2", door = "房门:人们出入房间时必需。", auto_autopsy = "验尸机:对研究新的治疗方法有很大帮助。", reception_desk = "接待å°ï¼šéœ€è¦ä¸€å接待员为病人æœåŠ¡ã€‚", hair_restorer = "25 OB_HAIR_RESTORER", projector = "37 OB_PROJECTOR", crash_trolley = "20 OB_CRASH", tv = "电视:使员工ä¸ä¼šé”™è¿‡å–œçˆ±çš„节目。", ultrascanner = "22 OB_ULTRASCAN", surgeon_screen = "35 OB_SURGEON_SCREEN", litter_bomb = "垃圾炸弹:æ¥è‡ªå¯¹æ‰‹åŒ»é™¢çš„ç ´åæ´»åЍ", inflator = "充气机:治疗头部肿胀病患者。", table2 = "12 OB_BTABLE", desk = "办公桌:医生å¯ä»¥åœ¨ä¸Šé¢æ”¾ç½®ç”µè„‘。", pool_table = "å°çƒæ¡Œï¼šå¸®åŠ©å‘˜å·¥æ”¾æ¾ã€‚", x_ray_viewer = "29 OB_XRAY_VIEWER", radiation_shield = "28 OB_RAD_SHIELD", bed = "床:病情严é‡çš„病人需è¦å§åºŠã€‚", swing_door2 = "53 OB_DOUBLE_DOOR2", console = "15 OB_SCANNER_CONSOLE", op_sink1 = "33 OB_OP_SINK_1", bookcase = "书柜:放置医生的å‚考资料。", drinks_machine = "é¥®æ–™æœºï¼šä¸ºç—…äººæ­¢æ¸´ï¼Œä¹Ÿæ˜¯æ”¶å…¥æ¥æºä¹‹ä¸€ã€‚", comfortable_chair = "61 OB_COMFY_CHAIR", skeleton = "骨骼模型:主è¦ç”¨äºŽåŸ¹è®­ã€‚", computer = "计算机:关键的研究部件。", bin = "垃圾桶:放置垃圾。", pharmacy_cabinet = "è¯æˆ¿ï¼šç”¨æ¥ä¿å­˜è¯å“", radiator = "æš–æ°”ï¼šä¿æŒåŒ»é™¢å†…的温度。", cast_remover = "24 OB_CAST_REMOVE", atom_analyser = "化学混åˆå™¨ï¼šæ‘†æ”¾åœ¨ç ”究部门中,该机器å¯ä»¥åŠ é€Ÿå…¨éƒ¨ç ”ç©¶è¿›ç¨‹ã€‚", plant = "æ¤ç‰©ï¼šä½¿ç—…人快ä¹å¹¶å‡€åŒ–空气。", jelly_moulder = "47 OB_JELLY_VAT", cardio = "13 OB_CARDIO", toilet = "洗手间:æä¾›ç»™ç—…人使用。", electrolyser = "46 OB_ELECTRO", fire_extinguisher = "ç­ç«å™¨ï¼šé™ä½Žæ²»ç–—仪器爆炸所产生的å±é™©ã€‚", bed3 = "未使用", swing_door1 = "52 OB_DOUBLE_DOOR1", lecture_chair = "演讲座ä½ï¼šæŽ¥å—培训的医生å在上é¢ï¼Œæ”¶å¬æ— èŠçš„æ¼”è®²ã€‚åº§ä½æ‘†æ”¾å¾—越多,则教室越大。", screen = "16 OB_SCREEN", toilet_sink = "洗手池:讲å«ç”Ÿçš„病人å¯ä»¥åœ¨æ´—æ‰‹æ± ä¸­æ´—å‡€è„æ‰‹ã€‚如果没有足够的洗手池,病人将感到ä¸é«˜å…´ã€‚", shower = "54 OB_DECON_SHOWER", gates_of_hell = "48 OB_HELL", entrance_right = "59 OB_ENT_RDOOR", entrance_left = "58 OB_ENT_LDOOR", slicer = "26 OB_SLICER", dna_fixer = "23 OB_DNA_FIXER", x_ray = "27 OB_XRAY", cabinet = "文件柜:包å«äº†ç—…人文件,备忘录以åŠç ”究档案。", }, build_room_window = { cost = "当å‰è¢«é€‰æ‹©æˆ¿é—´ä»·æ ¼", room_classes = { treatment = "选择处ç†ç±»æˆ¿é—´", diagnosis = "选择诊断类房间", facilities = "选择附属类房间", clinic = "选择治疗类房间", }, close = "å–æ¶ˆå¹¶è¿”回游æˆ", }, } menu_charts = { briefing = " 任务简报", casebook = " (F5) 治疗手册", graphs = " (F8) 图表", policy = " (F9) 制度", bank_manager = " (F1) 银行ç»ç†", statement = " (F2) 银行账户", town_map = " (F4) 城市地图 ", staff_listing= " (F3) 员工列表", research = " (F6) 研究", status = " (F7) 状æ€", } town_map = { number = "地区编å·", not_for_sale = "éžæ‹¥æœ‰çš„", chat = "城镇细节", price = "地区售价", for_sale = "出售", owner = "地区所有", area = "地区é¢ç§¯", } vip_names = { [1] = "伟大的查普顿市长", [2] = "å—䏿 ¼å°”", [3] = "æ¥è‡ªè·å…°çš„伯那德国王", [4] = "缅甸民主党领袖:昂山素季", [5] = "克朗伯先生", [6] = "比利先生", [7] = "克劳ç¦è®®å‘˜", [8] = "ç½—å°¼", [9] = "一个超级è”èµ›çƒæ˜Ÿ", [10] = "拉里普罗斯特", health_minister = "å«ç”Ÿéƒ¨éƒ¨é•¿", } room_descriptions = { ultrascan = { [1] = "超级扫æä»ª//", [2] = "超级扫æä»ªæ˜¯è¯Šæ–­ç±»ä»ªå™¨ä¸­æœ€é‡è¦çš„。它虽然花费惊人,但效果å“著,å¯ä»¥ä½¿åŒ»é™¢å¯¹ç—…人的诊断达到完美。//", [3] = "超级扫æä»ªéœ€è¦åŒ»ç”Ÿã€‚它也需è¦ç»´æŠ¤ã€‚", }, gp = { [1] = "一般诊断室//", [2] = "è¿™æ˜¯æ‚¨çš„åŒ»é™¢ä¸­ä¸€ä¸ªåŸºæœ¬è¯Šæ–­æˆ¿é—´ã€‚å°±è¯Šç—…äººå°†åˆ°è¿™é‡Œæ¥æ£€æŸ¥ç—…因。éšåŽå†å†³å®šæ˜¯åšè¿›ä¸€æ­¥çš„è¯Šæ–­è¿˜æ˜¯ç«‹å³æ²»ç–—。如果一间普通诊断室ä¸å¤Ÿç”¨ï¼Œåˆ™æ‚¨å¯ä»¥å†å»ºé€ å¦ä¸€é—´ã€‚房间越大,则å¯ä»¥åœ¨é‡Œé¢æ‘†æ”¾æ›´å¤šçš„特殊物å“,从而使医生的å¨ä¿¡è¶Šé«˜ã€‚这对于其它房间也是一样的。//", [3] = "一般诊断室需è¦ä¸€å医生。", }, fracture_clinic = { [1] = "骨折诊所//", [2] = "éª¨æŠ˜æ‚£è€…å°†åˆ°è¿™é‡Œæ¥æŽ¥å—æ²»ç–—。石è†å‰¥ç¦»è£…置将使用高能激光将åšç¡¬çš„石è†åˆ‡å¼€ï¼Œè€Œç—…人åªéœ€å¿å—很å°çš„痛苦。//", [3] = "骨折诊所需è¦ä¸€åæŠ¤å£«ã€‚å®ƒä¹Ÿéœ€è¦æ—¥å¸¸ç»´æŠ¤ã€‚", }, tv_room = { [1] = "电视房间没有使用", }, inflation = { [1] = "充气机诊所//", [2] = "患有头部肿胀症的病人需è¦åœ¨å……æ°”æœºè¯Šæ‰€æŽ¥å—æ²»ç–—ï¼Œç—…äººè†¨èƒ€çš„å¤´ç›–éª¨å°†è¢«åŽ»æŽ‰ï¼Œå¹¶å¯¹è„‘è¢‹é‡æ–°å……气到正常大å°ã€‚//", [3] = "充气机诊所需è¦åŒ»ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…æ´å·¥äººçš„维护。", }, jelly_vat = { [1] = "胶桶诊所//", [2] = "对于患有失衡症的患者需è¦åˆ°èƒ¶æ¡¶è¯Šæ‰€æŽ¥å—治疗,在这里将被放入胶桶中。该治疗方法的原ç†åŒ»å­¦ç•Œç›®å‰è¿˜æ— æ³•完全ç†è§£ã€‚//", [3] = "胶桶诊所需è¦åŒ»ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…æ´å·¥ç»´æŠ¤æœºå™¨ã€‚", }, scanner = { [1] = "扫æä»ª//", [2] = "通过扫æä»ªç—…人得到确诊。éšåŽä»–们就å¯ä»¥åˆ°ä¸€èˆ¬è¯Šæ–­å®¤æŽ¥å—进一步的治疗指示。//", [3] = "扫æä»ªéœ€è¦åŒ»ç”Ÿã€‚å®ƒä¹ŸåŒæ ·éœ€è¦ç»´æŠ¤ã€‚", }, blood_machine = { [1] = "血液机器//", [2] = "血液机器也是一ç§è¯Šæ–­ç”¨ä»ªå™¨ï¼Œé€šè¿‡å®ƒå¯ä»¥æ£€æŸ¥ç—…人的血液细胞,从而找出病人的病因。//", [3] = "血液机器需è¦åŒ»ç”Ÿã€‚它也需è¦ç»´æŠ¤ã€‚", }, pharmacy = { [1] = "è¯æˆ¿//", [2] = "è¢«è¯Šæ–­ä¸”éœ€è¦æŽ¥å—è¯ç‰©æ²»ç–—的病人一定è¦åˆ°è¯æˆ¿åŽ»æŠ“è¯ã€‚当越æ¥è¶Šå¤šçš„è¯å“被研制出æ¥ã€‚该房间也将å˜å¾—è¶Šæ¥è¶Šç¹å¿™ã€‚这时就需è¦å†å»ºé€ ä¸€é—´è¯æˆ¿ã€‚//", [3] = "è¯æˆ¿éœ€è¦ä¸€å护士。", }, cardiogram = { [1] = "心电图仪//", [2] = "病人在这里被诊断检查,éšåŽå†åˆ°ä¸€èˆ¬è¯Šæ–­å®¤æŽ¥å—治疗æç¤ºã€‚//", [3] = "心电图仪需è¦åŒ»ç”Ÿã€‚当然它也需è¦ç»´æŠ¤ã€‚", }, ward = { [1] = "病房//", [2] = "病人在病房中åœç•™ä¸€æ®µæ—¶é—´ï¼Œä»¥ä¾¿æŠ¤å£«è¿›è¡Œè§‚察。éšåŽå†åšæ‰‹æœ¯ã€‚//", [3] = "病房需è¦ä¸€å护士。", }, psych = { [1] = "精神病诊断治疗室//", [2] = "è¢«è¯Šæ–­ä¸ºç²¾ç¥žæœ‰é—®é¢˜çš„ç—…äººå¿…é¡»åˆ°ç²¾ç¥žç—…è¯Šæ–­æ²»ç–—å®¤ä¸­æŽ¥å—æ²»ç–—。精神病医生å¯ä»¥å¯¹ç—…人进行诊断,å‘现其病因,且如果确实是心ç†é—®é¢˜ï¼Œå°†ä½¿ç”¨é•¿æ²™å‘椅对其进行治疗。//", [3] = "精神病诊断治疗室需è¦ä¸€å具有精神病治疗技能的医生。", }, staff_room = { [1] = "员工休æ¯å®¤//", [2] = "æ‚¨çš„å‘˜å·¥æ„Ÿè§‰ç–²åŠ³æ—¶ï¼Œéœ€è¦æˆ¿é—´æ¥æ”¾æ¾ç´§å¼ çš„神ç»ï¼Œä»Žè€Œæ¢å¤ç–²åŠ³ã€‚å¤„äºŽæžåº¦ç–²åŠ³çš„å‘˜å·¥æ•ˆçŽ‡å¾ˆä½Žï¼Œå¹¶ä¸æ—¶è¦æ±‚加薪,甚至ä¸è¾žè€Œåˆ«ã€‚他们还会常常犯错误。建造一个员工休æ¯å®¤ï¼Œå¹¶åœ¨é‡Œé¢æ‘†æ”¾å°½å¯èƒ½å¤šçš„物å“,这是å分值得的。请确认该房间å¯ä»¥åŒæ—¶ä½¿å¤šå员工得到休æ¯ã€‚", }, operating_theatre = { [1] = "手术中心//", [2] = "它å¯ä»¥æä¾›éžå¸¸é‡è¦çš„æ²»ç–—æ‰‹æ®µã€‚æ‰‹æœ¯ä¸­å¿ƒå¿…é¡»è¦æœ‰è¶³å¤Ÿçš„尺寸,必须é…置适当的仪器设备。它将是医院中最é‡è¦çš„部门。//", [3] = "手术中心需è¦ä¸¤å拥有外科技能的医生。", }, training = { [1] = "培训室//", [2] = "您的实习医生和医生在该房间内å¯ä»¥å¾—到特殊技能的培训。拥有外科,研究或精神病技能的专家将把自己的ç»éªŒä¼ æŽˆç»™æŽ¥å—培训的医生。对于已拥有这些技能的医生,他们的能力将大幅æé«˜ã€‚//", [3] = "培训室需è¦ä¸€å专家。", }, dna_fixer = { [1] = "DNA诊所//", [2] = "这些有外星人DNA的病人必须在这里æ¢å¤å…¶åŽŸæœ‰çš„DNA。DNAä¿®å¤è£…ç½®æ˜¯æœ€å¤æ‚的仪器,因此一定è¦åœ¨å…¶æˆ¿é—´å†…摆放一个ç­ç«å™¨ï¼Œä»¥é˜²ä¸‡ä¸€ã€‚//", [3] = "è¿™å°DNAä¿®å¤è£…ç½®éœ€è¦æ¸…æ´å·¥ä¸æ—¶ç»´æŠ¤ã€‚它也需è¦ä¸€å具有研究能力的医生æ‰èƒ½å¤Ÿæ­£å¸¸å·¥ä½œã€‚", }, research = { [1] = "研究室//", [2] = "在研究室å¯ä»¥ç ”制新的è¯å“和治疗方法,并对å„ç§ä»ªå™¨è¿›è¡Œæ”¹è¿›æé«˜ã€‚这是医院中的一个é‡è¦éƒ¨é—¨ï¼Œå¹¶å¯¹æé«˜åŒ»é™¢çš„æ²»æ„ˆçŽ‡äº§ç”Ÿç»å¯¹å½±å“。//", [3] = "研究室需è¦ä¸€å拥有研究技能的医生。", }, hair_restoration = { [1] = "æ¯›å‘æ¢å¤è¯Šæ‰€//", [2] = "对于身患秃顶的病人将被é€åˆ°è¯¥æ¯›å‘æ¢å¤è¯Šæ‰€ï¼Œä½¿ç”¨å…¶ä¸­çš„æ¯›å‘æ¢å¤è£…置进行治疗。需è¦ä¸€å医生æ“作机器,且该机器将很快地使病人的脑袋长满头å‘。//", [3] = "æ¯›å‘æ¢å¤è¯Šæ‰€éœ€è¦åŒ»ç”Ÿã€‚它也需è¦ç»´æŠ¤ã€‚", }, general_diag = { [1] = "高级诊断室//", [2] = "需è¦è¿›ä¸€æ­¥è¯Šæ–­çš„病人将被é€åˆ°è¿™é‡Œã€‚如果一般诊断室无法å‘现病人的病因,高级诊断室将有å¯èƒ½æ‰¾å‡ºã€‚诊断结æŸåŽï¼Œä»–们将返回一般诊断室分æžç»“果。//", [3] = "高级诊断室需è¦åŒ»ç”Ÿã€‚", }, electrolysis = { [1] = "电分解房间//", [2] = "多毛症患者将到该房间接å—电分解机器的治疗,该机器将猛拉毛å‘å¹¶ä½¿ç”¨ä¸€ç§æ··åˆç‰©å¡«å……毛孔。//", [3] = "电分解房间需è¦åŒ»ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…æ´å·¥è¿›è¡Œç»´æŠ¤ã€‚", }, slack_tongue = { [1] = "舌头æ¾å¼›æ²»ç–—诊所//", [2] = "在普通诊断室中被诊断为舌头æ¾å¼›çš„病人将被é€åˆ°è¯¥è¯Šæ‰€æŽ¥å—治疗。医生将使用一ç§é«˜ç§‘技的仪器使舌头伸直并切掉多余部分,从而使病人æ¢å¤æ­£å¸¸ã€‚//", [3] = "舌头æ¾å¼›è¯Šæ‰€éœ€è¦åŒ»ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ—¥å¸¸ç»´æŠ¤ã€‚", }, toilets = { [1] = "洗手间//", [2] = "当病人感到需è¦ä¸ŠåŽ•æ‰€æ—¶å°±éœ€è¦æ´—手间这类设施。如果您希望洗手间多一些访问者,å¯ä»¥åœ¨å…¶ä¸­å¤šæ‘†æ”¾æ´—手池和马桶请考虑在医院的其它ä½ç½®ä¹Ÿå»ºé€ ä¸€äº›é™„属设施。", }, no_room = { [1] = "", }, x_ray = { [1] = "X光机//", [2] = "X光机å¯ä»¥ä½¿ç”¨ç‰¹æ®Šè¾å°„为病人照内部é€è§†ç…§ç‰‡ã€‚它对于医生诊断病因有很大帮助。//", [3] = "X光机需è¦åŒ»ç”Ÿã€‚它也需è¦ç»´æŠ¤ã€‚", }, decontamination = { [1] = "净化诊所//", [2] = "对于被暴露在强放射性的病人需è¦å¿«é€Ÿé€åˆ°å‡€åŒ–诊所。该房间包å«äº†ä¸€ä¸ªæ·‹æµ´å™¨ï¼Œå¯ä»¥å°†ç—…人身上的放射能清除干净。//", [3] = "净化淋浴器需è¦åŒ»ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…æ´å·¥äººç»´æŠ¤ã€‚", }, } bank_manager = { current_loan = "当å‰è´·æ¬¾", balance = "现金", interest_payment = "应付利æ¯", hospital_value = "医院价值", interest_rate = "利率", insurance_owed = "ä¿é™©å…¬å¸æ¬ æ¬¾", statistics_page = { balance = "现金", details = "细节", date = "日期", current_balance = "当å‰çް金", money_in = "æ”¶å…¥", money_out = "支出", }, inflation_rate = "通货膨胀率", } menu_display = { high_res = " 阴影 ", } original_credits = { [1] = "", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "", [9] = "", [10] = "", [11] = "", [12] = ":设计制作", [13] = ":牛蛙制造", [14] = "", [15] = ":冥王星开å‘组", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = "", [29] = "", [30] = "", [31] = ":编程", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = "", [38] = "", [39] = "", [40] = ":美工", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = "", [47] = "", [48] = "", [49] = ":助ç†ç¼–程", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = "", [55] = "", [56] = "", [57] = ":助ç†ç¾Žå·¥", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = "", [66] = "", [67] = "", [68] = ":游æˆä»‹ç»", [69] = ",", [70] = "Stuart Black", [71] = "", [72] = "", [73] = "", [74] = ":音ä¹éŸ³æ•ˆ", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = "", [79] = "", [80] = "", [81] = ":助ç†éŸ³ä¹", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = "", [86] = "", [87] = "", [88] = ":é…音", [89] = ",", [90] = "Rebecca Green", [91] = "", [92] = "", [93] = "", [94] = ":任务设计", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = "", [101] = "", [102] = "", [103] = ":剧本", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = "", [109] = "", [110] = "", [111] = ":R&D", [112] = "", [113] = ":图形引擎", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = "", [118] = "", [119] = "", [120] = ":R&D支æŒ", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = "", [127] = "", [128] = "", [129] = ":库和工具", [130] = "", [131] = "Doså’ŒWin95库", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = "", [137] = "", [138] = "", [139] = ":网络库", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = "", [144] = "", [145] = "", [146] = ":声音库", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = "", [151] = "", [152] = "", [153] = ":安装程åº", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = "", [159] = "", [160] = "", [161] = ":支æŒ", [162] = ",", [163] = "Peter Molyneux", [164] = "", [165] = "", [166] = "", [167] = ":测试ç»ç†", [168] = ",", [169] = "Andy Robson", [170] = "", [171] = "", [172] = "", [173] = ":测试主管", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = "", [178] = "", [179] = "", [180] = ":测试", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = "", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = "", [203] = "And all our other Work Experience Play Testers", [204] = "", [205] = "", [206] = "", [207] = ":技术支æŒ", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = "", [213] = "", [214] = "", [215] = ":市场", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = "", [220] = "", [221] = "", [222] = ":特别感谢", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = "", [229] = "", [230] = "", [231] = ":公关", [232] = ",", [233] = "Cathy Campos", [234] = "", [235] = "", [236] = "", [237] = ":文档", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = "", [244] = "", [245] = "", [246] = ":文档åŠåŒ…装盒设计", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = "", [251] = "", [252] = "", [253] = ":本地化项目ç»ç†", [254] = ",", [255] = "Carol Aggett", [256] = "", [257] = "", [258] = "", [259] = ":本地化工作", [260] = ",", [261] = "Sandra Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = "", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = "", [268] = "C。T。O。S。p。A。ZolaPredosa(BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = "", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Mart*nez", [276] = "", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = "", [281] = "", [282] = "", [283] = ":生产", [284] = ",", [285] = "Rachel Holman", [286] = "", [287] = "", [288] = "", [289] = ":制片人", [290] = ",", [291] = "Mark Webley", [292] = "", [293] = "", [294] = "", [295] = ":è”åˆåˆ¶ç‰‡äºº", [296] = ",", [297] = "Andy Nuttall", [298] = "", [299] = "", [300] = "", [301] = ":è¿ä½œ", [302] = ",", [303] = "Steve Fitton", [304] = "", [305] = "", [306] = "", [307] = ":行政", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":å…¬å¸ç®¡ç†", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":All at Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":特别感谢", [332] = ",", [333] = "弗莱利公园医院中æ¯ä¸ªäºº", [334] = "", [335] = ":特别是", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = "", [340] = "", [341] = "", [342] = ":中文版制作", [343] = ",", [344] = "飞龙工作室", [345] = "", [346] = "", [347] = "", [348] = ":监制/项目主管", [349] = ",", [350] = "曲洋", [351] = "", [352] = "", [353] = ":翻译:刘波", [354] = "", [355] = ":录音师:è“信刚", [356] = "", [357] = "", [358] = ":é…音:å¤èŽ‰èŽ‰", [359] = "", [360] = "", [361] = "", [362] = ":中文版包装/手册设计", [363] = ",", [364] = "骆智中 王越é¹", [365] = "", [366] = "", [367] = ":生产", [368] = ",", [369] = "æ¨å¹³ å¼ å¨", [370] = "", [371] = "", [372] = "", [373] = ":测试", [374] = ",", [375] = "罗耀 陈雷 赫闻 汤宇力", [376] = "", [377] = "", [378] = ":特别感谢", [379] = ",", [380] = "Les Edgar", [381] = "Rajan Tande", [382] = "Steve Fitton", [383] = "", [384] = "", [385] = "", [386] = "", [387] = "", [388] = "", [389] = "", [390] = "", [391] = "", [392] = "", [393] = "", [394] = "", [395] = "", [396] = "", [397] = ".", } pay_rise = { definite_quit = "ä¸è®ºæ‚¨åšä»€ä¹ˆéƒ½æ— æ³•ç•™ä½æˆ‘了。", regular = { [1] = "我真的太累了。如果您ä¸å¸Œæœ›æˆ‘辞èŒçš„è¯ï¼Œè¯·è®©æˆ‘好好休æ¯ï¼Œå¹¶å¢žåŠ å·¥èµ„$%d。", [2] = "我真的太累了。我需è¦ä¼‘æ¯ï¼Œä»¥åŠå¢žåŠ å·¥èµ„$%d。立å³ç­”应,你这个暴å›ã€‚", [3] = "好å§ã€‚我在这里工作就象一åªç‹—一样。给我奖金$%d我就还留在这个医院里。", [4] = "我很ä¸å¿«ä¹ã€‚æˆ‘è¦æ±‚增加工资$%d,使我的工资达到$%d,å¦åˆ™æˆ‘å°±ä¸å¹²äº†ã€‚", [5] = "我的父æ¯å‘Šè¯‰æˆ‘åŒ»å­¦ä¸“å®¶çš„å¾…é‡æ˜¯å¾ˆé«˜çš„。因此,请给我加薪$%d,å¦åˆ™æˆ‘将辞èŒåŽ»åšç”µè„‘游æˆã€‚", [6] = "我已ç»å—够了。请调整我的工资到åˆç†ç¨‹åº¦ã€‚我希望加薪$%d。", }, poached = "%s答应给我工资%d。如果您无法达到这个数目,那么我就è¦è·³æ§½äº†ã€‚", } menu_debug = { porter_pagers = " PORTER PAGERS ", object_cells = " OBJECT CELLS ", display_pager = " DISPLAY PAGER ", display_big_cells = " DISPLAY BIG CELLS ", mapwho_checking = " MAPWHO CHECKING ", keep_clear_cells = " KEEP CLEAR CELLS ", machine_pagers = " MACHINE PAGERS ", remove_walls = " REMOVE WALLS ", enter_nav_debug = " ENTER NAV DEBUG ", lose_game_anim = { [1] = " LOSE GAME 1 ANIM ", [2] = " LOSE GAME 2 ANIM ", [3] = " LOSE GAME 3 ANIM ", [4] = " LOSE GAME 4 ANIM ", [5] = " LOSE GAME 5 ANIM ", [6] = " LOSE GAME 6 ANIM ", [7] = " LOSE GAME 7 ANIM ", }, show_nav_cells = " SHOW NAV CELLS ", win_game_anim = " WIN GAME ANIM ", display_room_status = " DISPLAY ROOM STATUS ", remove_objects = " REMOVE OBJECTS ", nav_bits = " NAV BITS ", win_level_anim = " WIN LEVEL ANIM ", pixbuf_cells = " PIXBUF CELLS ", show_help_hotspot = " SHOW HELP HOTSPOTS ", entry_cells = " ENTRY CELLS ", plant_pagers = " PLANT PAGERS ", } progress_report = { quite_unhappy = "人们有点ä¸é«˜å…´ã€‚", header = "进展报告", very_unhappy = "人们感到éžå¸¸ä¸é«˜å…´ã€‚", more_drinks_machines = "多摆放一些饮料机。", too_cold = "太冷了。多摆放一些暖气。", too_hot = "调节供热系统。太热了。", percentage_pop = "% 人å£", win_criteria = "视窗标准", } menu_options = { game_speed = " 游æˆé€Ÿåº¦", sound_vol = " 音效音é‡", music_vol = " 音ä¹éŸ³é‡", announcements = " 语音", sound = " 音效", announcements_vol = " 语音音é‡", music = " 音ä¹", autosave = " 自动存盘", jukebox = " 音ä¹ç›’", } menu_options_game_speed = { normal = " 正常", slower = " 较慢", max_speed = " 快速", slowest = " éžå¸¸æ…¢", and_then_some_more = " æžå¿«", } rooms_short = { ultrascan = "超级扫æä»ª", research_room = "研究部门", fracture_clinic = "骨折诊所", gps_office = "一般诊断室", destroyed = "å·²æ¯å", staffroom = "员工休æ¯å®¤", jelly_vat = "胶桶诊所", scanner = "扫æä»ª", decontamination = "净化设备", pharmacy = "è¯æˆ¿", cardiogram = "心电图仪", reception = "接待å°", training_room = "培训室", corridor_objects = "走廊物å“", operating_theatre = "手术中心", dna_fixer = "DNAä¿®å¤è£…ç½®", ward = "病房", psychiatric = "精神病诊疗室", hair_restoration = "æ¯›å‘æ¢å¤æœºå™¨", general_diag = "高级诊断室", inflation = "充气机", tongue_clinic = "舌头治疗机", toilets = "洗手间", electrolysis = "电分解诊所", x_ray = "X光仪器", blood_machine = "血液机器", } level_names = { [1] = "毒气城", [2] = "æ˜ç¡åŸŽ", [3] = "大柴斯特城", [4] = "ç¦æ¥æ˜Žé¡¿åŸŽ", [5] = "新普顿城", [6] = "世界之疮", [7] = "绿池城", [8] = "曼葵城", [9] = "便–¯ç‰¹å¨å°”", [10] = "爱格森海姆城", [11] = "蛙鸣城", [12] = "巴登堡", [13] = "查姆雷城", [14] = "å°çˆªæ§ŸåŸŽ", [15] = "葬礼城", } insurance_companies = { [1] = "天鹅绒有é™å…¬å¸", [2] = "诺ç¦å…‹æ´‹è‘±å…¬å¸", [3] = "åŒå³°å…¬å¸", [4] = "刀疤有é™å…¬å¸", [5] = "潜水艇有é™å…¬å¸", [6] = "诚实的泰瑞公å¸", [7] = "矮胖先生股份有é™å…¬å¸", [8] = "里昂猫公å¸", [9] = "普里邦有é™å…¬å¸", [10] = "å¿«ä¹ä¿é™©å…¬å¸", [11] = "辛迪加ä¿é™©å…¬å¸", out_of_business = "æ— ", } staff_descriptions = { good = { [1] = "手脚勤快并努力的员工。", [2] = "很有责任心。éžå¸¸ç»†å¿ƒã€‚", [3] = "掌æ¡äº†å¾ˆå¤šæŠ€æœ¯ã€‚", [4] = "很å‹å–„并爱笑。", [5] = "富有活力。", [6] = "很有礼貌并和蔼å¯äº²ã€‚", [7] = "富有æ‰å¹²å’Œèƒ½åŠ›ã€‚", [8] = "工作能力æžå¼ºã€‚", [9] = "æ„å¿—åšå¼ºã€‚", [10] = "微笑ç€ä¸ºç—…人æœåŠ¡ã€‚", [11] = "迷人的,有礼貌的并爱帮助别人。", [12] = "专注于工作。", [13] = "本性善良,工作努力。", [14] = "忠实且待人å‹å–„。", [15] = "细心并能够独立处ç†ç´§æ€¥äº‹ä»¶ã€‚", }, misc = { [1] = "打高尔夫çƒã€‚", [2] = "潜水è¿åŠ¨ã€‚", [3] = "冰雕。", [4] = "å–è‘¡è„酒。", [5] = "拉力车赛。", [6] = "蹦跳。", [7] = "收集啤酒盖å­ã€‚", [8] = "喜欢跳水。", [9] = "喜欢冲浪è¿åŠ¨ã€‚", [10] = "喜欢游泳。", [11] = "è’¸é¦å¨å£«å¿Œé…’。", [12] = "DIY专家。", [13] = "å–œæ¬¢æ¬£èµæ³•国电影。", [14] = "玩地下城守护者游æˆã€‚", [15] = "拥有HGV执照。", [16] = "摩托车比赛。", [17] = "å¼¹å¥å¤å…¸æç´ã€‚", [18] = "è®­ç»ƒè¥æ•‘员。", [19] = "喜欢养狗。", [20] = "嬿”¶éŸ³æœºã€‚", [21] = "ç»å¸¸æ´—澡。", [22] = "工作指导。", [23] = "ç§æ¤è”¬èœã€‚", [24] = "义务巡警。", [25] = "展览。", [26] = "收集二战武器。", [27] = "釿–°æ‘†æ”¾å®¶å…·ã€‚", [28] = "å¬åˆºæ¿€éŸ³ä¹ã€‚", [29] = "æ€è™«ã€‚", [30] = "喜剧演员。", [31] = "议会调查人员。", [32] = "园艺家。", [33] = "èµ°ç§å‡æ‰‹è¡¨ã€‚", [34] = "唱歌。", [35] = "喜欢日间电视。", [36] = "喜欢鲑鱼。", [37] = "å‘观光者介ç»åšç‰©é¦†ã€‚", }, bad = { [1] = "动作缓慢,且爱烦æ¼ã€‚", [2] = "懒惰。", [3] = "培训很少且没有精神。", [4] = "待人粗é²ã€‚", [5] = "æ€åº¦æ¶åŠ£ã€‚", [6] = "耳è‹ã€‚且身上有一股å·å¿ƒèœçš„味é“。", [7] = "ä¸ç”¨å¿ƒå·¥ä½œã€‚", [8] = "é²èŽ½è€Œä¸”å®¹æ˜“çŠ¯é”™è¯¯ã€‚", [9] = "容易犯错误。", [10] = "心ç†å˜æ€ã€‚", [11] = "粗心大æ„。", [12] = "懒散。", [13] = "愚蠢。", [14] = "ç‹¡çŒ¾ä¸”æœ‰ç ´åæ¬²ã€‚", [15] = "傲慢自大。", }, } room_classes = { diagnosis = "诊断室", clinics = "诊所", facilities = "附属设施", treatment = "治疗室", } place_objects_window = { pick_up_object = "点击物å“å¯ä»¥å°†å…¶æ‹¾èµ·ï¼Œä¹Ÿå¯ä»¥é€‰æ‹©ä¸åŒçš„选项", place_objects_in_corridor = "å°†ç‰©å“æ”¾åœ¨èµ°å»Šä¸Š", place_windows = "请设置一些窗户,点击鼠标表示确定", confirm_or_buy_objects = "您å¯ä»¥ç¡®è®¤è¯¥æˆ¿é—´ï¼Œæˆ–买入或移动其中的一些物å“", drag_blueprint = "拉伸è“图直到您满æ„的尺寸", place_door = "设置房门", place_objects = "å¯ä»¥è®¾ç½®å¹¶ç§»åŠ¨è¿™äº›ç‰©å“直到满æ„为止,éšåŽå†ç¡®å®š", } newspaper = { [1] = { [1] = "医生震惊四座", [2] = "这医生扮演玩弄上å¸", [3] = "科学狂人的震撼", [4] = "实验室地æ¿ä¸Šæ‘†æ”¾ç€ä»€ä¹ˆï¼Ÿ", [5] = "查获一项å±é™©çš„研究", }, [2] = { [1] = "é…—é…’", [2] = "外科医生醉酒", [3] = "挑剔的顾问", [4] = "外科医生的酒é‡", [5] = "外科医生痛饮失æ€", [6] = "外科医生的çµé­‚", }, [3] = { [1] = "ç²—é²çš„医生", [2] = "医生臭å远扬", [3] = "医生完了", [4] = "贪得无厌的医生", }, [4] = { [1] = "篡改数æ®", [2] = "器官买å–犯罪", [3] = "é“¶è¡Œå±æœº", [4] = "调查基金数æ®", }, [5] = { [1] = "医学工作者盗墓", [2] = "医生盗墓", [3] = "医生盗墓,人赃并获", [4] = "医生死期ä¸è¿œäº†", [5] = "超级渎èŒ", [6] = "医生盗墓", }, [6] = { [1] = "医生?庸医ï¼", [2] = "庸医露馅了", [3] = "令人诅咒的诊断", [4] = "笨蛋专家", }, [7] = { [1] = "医生真情放纵", [2] = "医生自我“手术â€", [3] = "医生完了", [4] = "医生大丑闻", [5] = "医生æžå¾—一团糟", }, } staff_title = { junior = "实习医生", psychiatrist = "精神病医生", consultant = "专家", surgeon = "外科医生", doctor = "医生", researcher = "研究员", nurse = "护士", receptionist = "接待员", general = "普通人", } graphs = { deaths = "死亡", money_in = "æ”¶å…¥", money_out = "支出", visitors = "访问者", wages = "工资", balance = "现金", time_spans = { [1] = "1 å¹´", [2] = "12 å¹´", [3] = "48 å¹´", }, cures = "治愈", reputation = "声望", } adviser = { tutorial = { hire_receptionist = "您也需è¦ä¸€ä½æŽ¥å¾…å‘˜æ¥æŽ¥å¾…ç—…äººã€‚", build_pharmacy = "æ­å–œï¼çŽ°åœ¨åº”å»ºé€ ä¸€ä¸ªè¯æˆ¿å¹¶é›‡ä½£ä¸€ä½æŠ¤å£«ï¼Œä½¿åŒ»é™¢æ­£å¸¸è¿è½¬ã€‚", hire_doctor = "您需è¦ä¸€ä¸ªåŒ»ç”Ÿæ¥è¯Šæ–­å’Œæ²»ç–—病人。", place_receptionist = "移动接待员并将她放到任æ„ä½ç½®ã€‚å¥¹å°†å¾ˆèªæ˜Žåœ°è‡ªå·±èµ°åˆ°æŽ¥å¾…å°ã€‚", place_windows = "设置窗户的方法与设置房门的方法相åŒã€‚您å¯ä»¥ä¸éœ€è¦çª—户,但是当您的员工å¯ä»¥ä»Žçª—户å‘外张望时,他们将感到快ä¹ã€‚", confirm_room = "左键å•击闪动光标就å¯ä»¥å¼€ä¸šäº†ï¼Œä¹Ÿå¯ä»¥é€šè¿‡ç‚¹å‡»äº¤å‰æŒ‰é’®è¿”回上一步。", rotate_and_place_reception = "点击鼠标å³é”®å¯ä»¥æ—‹è½¬æ¡Œå­ï¼Œå¹¶ç”¨é¼ æ ‡å·¦é”®å°†å…¶æ”¾åœ¨åŒ»é™¢ä¸­åˆé€‚ä½ç½®ã€‚", build_reception = "你好。首先,您的医院需è¦ä¸€ä¸ªæŽ¥å¾…å°ï¼Œæ‚¨å¯ä»¥ä»Žå¸ƒç½®èµ°å»Šèœå•中选å–。", doctor_in_invalid_position = "å—¨ï¼æ‚¨ä¸èƒ½å°†åŒ»ç”Ÿæ”¾åœ¨é‚£é‡Œã€‚", start_tutorial = "阅读任务简报,éšåŽç‚¹å‡»é¼ æ ‡å·¦é”®å°±å¯ä»¥å¯åŠ¨æ•™ç¨‹ã€‚", receptionist_invalid_position = "您ä¸èƒ½å°†æŽ¥å¾…员放在那里。", room_too_small_and_invalid = "è“图尺寸太å°äº†ä¸”å¤„äºŽéžæ³•ä½ç½®ã€‚", window_in_invalid_position = "该窗å£å¤„äºŽéžæ³•ä½ç½®ã€‚请å°è¯•è“图墙å£ä¸Šçš„其它ä½ç½®ã€‚", choose_doctor = "在选择医生之å‰ï¼Œåº”é‡ç‚¹è€ƒè™‘其能力。", information_window = "帮助æ¡å°†å‘Šè¯‰æ‚¨åˆšåˆšå»ºé€ çš„一般诊断室信æ¯ã€‚", build_gps_office = "您必须建造一般诊断室æ‰å¯ä»¥è¯Šæ–­ç—…人。", select_doctors = "点击闪动的光标挑选å¯è¢«é›‡ä½£çš„医生。", select_diagnosis_rooms = "点击闪动的光标将弹出诊断类房间列表。", select_receptionists = "使用鼠标左键å•å‡»é—ªåŠ¨çš„å…‰æ ‡æ¥æŸ¥çœ‹å½“å‰å¯é€‰æ‹©çš„æŽ¥å¾…员。光标下方的数字表示共有多少个接待员å¯ä¾›é€‰æ‹©ã€‚", order_one_reception = "使用鼠标左键å•击闪动的光标,å¯ä»¥å®šè´­ä¸€ä¸ªæŽ¥å¾…å°ã€‚", choose_receptionist = "判断哪一个接待员拥有好的能力与åˆé€‚的工资,å†å·¦é”®å•击闪动的光标æ¥é›‡ä½£å¥¹ã€‚", prev_receptionist = "左键å•击闪动的光标将å¯ä»¥æµè§ˆåˆ°å‰ä¸€ä¸ªå¯ä¾›é€‰æ‹©çš„æŽ¥å¾…员。", accept_purchase = "点击闪动的光标表示购买。", place_door = "沿ç€è“图墙å£ç§»åŠ¨é¼ æ ‡ï¼Œå¯»æ‰¾æ”¾ç½®æˆ¿é—¨çš„åˆé€‚ä½ç½®ã€‚", click_and_drag_to_build = "建造一般诊断室时应先决定具体的尺寸。点击并按ä½é¼ æ ‡å·¦é”®å¯ä»¥è®¾ç½®æˆ¿é—´å°ºå¯¸ã€‚", room_in_invalid_position = "该è“å›¾æ˜¯éžæ³•的,红色区域表示è“图与其它房间或墙å£é‡å ã€‚", place_objects = "å³å‡»å¯ä»¥æ—‹è½¬æˆ¿å±‹ä¸­çš„å„ç§ç‰©å“,å†å·¦å‡»è¡¨ç¤ºç¡®è®¤ã€‚", room_too_small = "该房间的è“图为红色是因为其尺寸太å°äº†ã€‚通过拖动使其尺寸增大。", click_gps_office = "点击闪动光标表示选择一般诊断室。", reception_invalid_position = "å¦‚æžœæŽ¥å¾…å°æ˜¯ç°è‰²çš„,则表示当å‰ä½ç½®æ˜¯éžæ³•的。应å°è¯•移动或旋转它。", next_receptionist = "这是接待员列表中的第一个。左键å•击闪动的光标å¯ä»¥æµè§ˆä¸‹ä¸€ä¸ªå¯ä¾›é€‰ç”¨çš„æŽ¥å¾…员。", room_big_enough = "è“图尺寸已ç»è¶³å¤Ÿå¤§äº†ã€‚当您æ¾å¼€é¼ æ ‡æŒ‰é”®è¡¨ç¤ºç¡®è®¤ã€‚如果需è¦çš„è¯ï¼Œä»¥åŽè¿˜å¯ä»¥æ ¹æ®éœ€è¦ç§»åŠ¨æˆ–æ”¹å˜å…¶å°ºå¯¸ã€‚", object_in_invalid_position = "该物å“当å‰ä½ç½®éžæ³•。请è¦ä¹ˆå°†å…¶æ”¾åˆ°å…¶å®ƒä½ç½®ï¼Œè¦ä¹ˆå¯¹å…¶è¿›è¡Œæ—‹è½¬ã€‚", door_in_invalid_position = "房门设置ä½ç½®éžæ³•。请å°è¯•è“图墙å£ä¸Šçš„其它ä½ç½®ã€‚", place_doctor = "将医生放在医院中的任æ„ä½ç½®ã€‚他将直奔一般诊断室,为病人诊断。", }, epidemic = { hurry_up = "å¦‚æžœæ— æ³•ç«‹å³æŽ§åˆ¶ä¼ æŸ“ç—…é‚£ä¹ˆæ‚¨çš„åŒ»é™¢å°†å‡ºå¤§ä¹±å­ã€‚加油ï¼", serious_warning = "传染病疫情越æ¥è¶Šä¸¥é‡ã€‚您必须立å³è¡ŒåЍï¼", multiple_epidemies = "看æ¥åŒ»é™¢é‡ŒåŒæ—¶æœ‰ä¸åªä¸€ç§ä¼ æŸ“病。这将是一场空å‰ç¾éš¾ï¼ŒåŠ æ²¹ï¼", }, staff_advice = { need_handyman_machines = "如果希望维护医院内的å„ç§åŒ»ç–—机器,则需è¦é›‡ä½£æ¸…æ´å·¥äººã€‚", need_doctors = "æ‚¨éœ€è¦æ›´å¤šçš„医生。请将最得力的医生放在排队等候人数最多的房间内。", need_handyman_plants = "您需è¦é›‡ä½£ä¸€ä½æ¸…æ´å·¥äººæ¥ä¸ºæ¤ç‰©æµ‡æ°´ã€‚", need_handyman_litter = "医院中出现了垃圾。请雇佣一个清æ´å·¥äººæ‰“扫垃圾。", need_nurses = "您需è¦é›‡ä½£æ›´å¤šçš„æŠ¤å£«ã€‚ç—…æˆ¿å’Œè¯æˆ¿éƒ½éœ€è¦æŠ¤å£«ã€‚", too_many_doctors = "æ‚¨é›‡ä½£çš„åŒ»ç”Ÿå¤ªå¤šäº†ã€‚å…¶ä¸­æœ‰ä¸€äº›äººå½“å‰æ­£é—²ç€ã€‚", too_many_nurses = "我认为您现在雇佣了太多的护士。", }, earthquake = { damage = "地震æŸå了医院中%då°æœºå™¨ï¼Œå¹¶ä½¿%d个人å—伤。", alert = "åœ°éœ‡è­¦æŠ¥ã€‚åœ¨åœ°éœ‡è¿‡ç¨‹ä¸­ï¼ŒåŒ»é™¢ä¸­çš„æœºå™¨å°†å—æŸã€‚å¦‚æžœå®ƒä»¬æ²¡æœ‰å¾—åˆ°åŠæ—¶ç»´æŠ¤å°†å½»åº•æ¯å。", ended = "æˆ‘è®¤ä¸ºè¿™æ˜¯ä¸€ä¸ªå¤§å®¶ä¼™ï¼æŒ‰ç…§é‡Œæ°æ ‡å‡†ä¸º%d。", }, multiplayer = { objective_completed = "您已ç»å®Œæˆä»»åŠ¡äº†ã€‚æ­å–œï¼", everyone_failed = "æ¯ä¸ªäººéƒ½æ²¡æœ‰å®Œæˆæœ€ç»ˆç›®æ ‡ã€‚å› æ­¤æ¯ä¸ªäººéƒ½è¦ç»§ç»­åŠªåŠ›ï¼", players_failed = "下é¢çš„çŽ©å®¶æ²¡æœ‰å®Œæˆæœ€ç»ˆç›®æ ‡ï¼š", poaching = { in_progress = "æˆ‘å°†è®©æ‚¨äº†è§£è¿™ä¸ªäººæ˜¯å¦æ„¿æ„为您工作。", not_interested = "哈哈ï¼ä»–ä»¬å¯¹ä¸ºæ‚¨å·¥ä½œä¸æ„Ÿå…´è¶£ï¼ä»–们希望找寻自我价值。", already_poached_by_someone = "æ²¡é—¨ï¼æœ‰äººæƒ³è¦æŒ–走这个人。", }, objective_failed = "任务失败。", }, surgery_requirements = { need_surgeons_ward_op = "您需è¦é›‡ä½£ä¸¤ä½å¤–科医生,并修建一个病房和手术中心,这样æ‰å¯ä»¥å®Œæˆå¤–科手术。", need_surgeon_ward = "为了完æˆå¤–科手术,您还需è¦é›‡ä½£ä¸€å外科医生,以åŠä¿®å»ºä¸€ä¸ªç—…房。", }, vomit_wave = { started = "请赶快处ç†åŒ»é™¢ä¸­çš„å‘•å物,å¦åˆ™å‘•å现象会四处传播。也许您需è¦å¤šé›‡ä½£å‡ ä¸ªæ¸…æ´å·¥äººã€‚", ended = "å—¨ï¼å‘•å现象已被控制。今åŽä¸€å®šè¦ä¿æŒåŒ»é™¢çš„æ¸…æ´ã€‚", }, level_progress = { halfway_lost = "您è·ç¦»å¤±è´¥è¿˜å·®ä¸€åŠã€‚", dont_kill_more_patients = "您实际上无力支付太多的医疗事故赔款ï¼", another_patient_killed = "哦,ä¸ï¼æ‚¨å·²ç»æ€æ­»äº†ä¸€ä¸ªç—…äººã€‚è¿™å·²ç»æ˜¯ç¬¬%d个了。", halfway_won = "您è·ç¦»èƒœåˆ©è¿˜å·®ä¸€åŠã€‚", close_to_win_increase_value = "您è·ç¦»èƒœåˆ©åªæœ‰ä¸€æ­¥ä¹‹é¥äº†ã€‚å†å¢žåŠ åŒ»é™¢ä»·å€¼%d。", financial_criteria_met = "您已ç»å®Œæˆäº†æœ¬ä»»åŠ¡è¦æ±‚è¾¾åˆ°çš„è´¢æ”¿ç›®æ ‡ã€‚çŽ°åœ¨è¯·ä¿æŒçŽ°é‡‘åœ¨%d以上,使我们确信您的医院è¿è¡Œè‰¯å¥½ã€‚", nearly_won = "您已ç»è·ç¦»èƒœåˆ©éžå¸¸æŽ¥è¿‘了。", hospital_value_enough = "ä¿æŒåŒ»é™¢ä»·å€¼åœ¨%d以上,并解决好其它问题,就能胜利完æˆä»»åŠ¡äº†ã€‚", another_patient_cured = "å¹²å¾—å¥½ï¼æ²»æ„ˆäº†ä¸€ä¸ªç—…人。收入$%d。", three_quarters_lost = "您è·ç¦»å¤±è´¥è¿˜å·®å››åˆ†ä¹‹ä¸‰ã€‚", reputation_good_enough = "好的,您的声望已ç»è¾¾åˆ°ä»»åŠ¡è¦æ±‚äº†ã€‚ä¿æŒåœ¨%d以上,并解决好其它方é¢çš„问题。", cured_enough_patients = "æ‚¨å·²ç»æ²»æ„ˆäº†è¶³å¤Ÿå¤šçš„ç—…äººï¼Œä½†æ˜¯æ‚¨åªæœ‰è¾¾åˆ°æ›´é«˜çš„æ ‡å‡†æ‰èƒ½èƒœåˆ©å®Œæˆä»»åŠ¡ã€‚", nearly_lost = "您è·ç¦»å¤±è´¥åªæœ‰ä¸€æ­¥ä¹‹é¥äº†ã€‚", improve_reputation = "æ‚¨éœ€è¦æé«˜å£°æœ›%d,这样æ‰èƒ½æœ‰æœºä¼šå®Œæˆä»»åŠ¡ã€‚", three_quarters_won = "您è·ç¦»èƒœåˆ©è¿˜å·®å››åˆ†ä¹‹ä¸‰ã€‚", }, staff_place_advice = { receptionists_only_at_desk = "接待员åªèƒ½åœ¨æŽ¥å¾…å°å·¥ä½œã€‚", only_psychiatrists = "åªæœ‰å…·æœ‰ç²¾ç¥žç—…治疗技能的医生æ‰å¯ä»¥åœ¨ç²¾ç¥žç—…诊断治疗室中工作。", only_surgeons = "åªæœ‰æ‹¥æœ‰å¤–科技能的医生æ‰å¯ä»¥åœ¨æ‰‹æœ¯ä¸­å¿ƒå·¥ä½œã€‚", only_nurses_in_room = "åªæœ‰æŠ¤å£«å¯ä»¥åœ¨%s中工作", only_doctors_in_room = "åªæœ‰åŒ»ç”Ÿå¯ä»¥åœ¨%s中工作", only_researchers = "åªæœ‰æ‹¥æœ‰ç ”究技能的医生æ‰å¯ä»¥åœ¨ç ”究部门工作。", nurses_cannot_work_in_room = "护士无法在%s中工作", doctors_cannot_work_in_room = "医生无法在%s中工作", }, research = { machine_improved = "%s的疗效被您的研究部门增强了。", autopsy_discovered_rep_loss = "您的自动验尸机已ç»ç ”制æˆåŠŸã€‚å¯¹å…¬ä¼—å°†äº§ç”Ÿå‰¯ä½œç”¨ã€‚", drug_fully_researched = "您已ç»ç ”ç©¶%s到达100%%了。", new_machine_researched = "一个新的%s刚刚被æˆåŠŸç ”ç©¶å‡ºæ¥ã€‚", drug_improved = "治疗%sçš„è¯å“被您的研究部门改良了。", new_available = "ä¸€ç§æ–°çš„%så¯ä»¥ä½¿ç”¨äº†ã€‚", new_drug_researched = "治疗%sçš„ä¸€ç§æ–°è¯è¢«ç ”ç©¶æˆåŠŸã€‚", }, boiler_issue = { minimum_heat = "噢,终于找到您了。锅炉å了。也就是说医院里的人将感到有点冷。", maximum_heat = "锅炉快失控了。暖气的供暖能力已ç»è¾¾åˆ°æžé™äº†ã€‚医院里的人都快被熔化了ï¼å¤šè®¾ç½®ä¸€äº›é¥®æ–™æœºã€‚", resolved = "好消æ¯ã€‚锅炉和暖气现在工作正常。气温很快就å¯ä»¥æ¢å¤åˆ°æ­£å¸¸æ°´å¹³ã€‚", }, competitors = { staff_poached = "您的一ä½å‘˜å·¥è¢«å…¶å®ƒåŒ»é™¢æŒ–走了。", hospital_opened = "竞争对手%s的医院在本区域内已ç»å¼€å¼ äº†ã€‚", land_purchased = "%så·²ç»è´­ä¹°äº†ä¸€äº›åœŸåœ°ã€‚", }, room_requirements = { research_room_need_researcher = "您需è¦ä¸ºç ”究室雇佣一个拥有研究技巧的医生。", op_need_another_surgeon = "您至少还需è¦ä¸ºæ‰‹æœ¯ä¸­å¿ƒé›‡ä½£ä¸€å外科医生。", op_need_ward = "您必须为外科手术å‰çš„æ‚£è€…建造病房。", reception_need_receptionist = "æ‚¨å¿…é¡»ä¸ºç—…äººé›‡ä½£ä¸€ä½æŽ¥å¾…å‘˜ã€‚", psychiatry_need_psychiatrist = "您需è¦é›‡ä½£ä¸€ä½ç²¾ç¥žç—…医生,现在您已ç»å»ºæˆäº†ä¸€ä¸ªç²¾ç¥žç—…诊断治疗室。", pharmacy_need_nurse = "æ‚¨åº”è¯¥ä¸ºè¯æˆ¿é›‡ä½£ä¸€ä½æŠ¤å£«ã€‚", ward_need_nurse = "您需è¦ä¸ºç—…æˆ¿é›‡ä½£ä¸€åæŠ¤å£«ã€‚", op_need_two_surgeons = "请为手术中心雇佣两åå¤–ç§‘åŒ»ç”Ÿå®Œæˆæ‰‹æœ¯ã€‚", training_room_need_consultant = "您应该为培训室雇佣一ä½ä¸“家,负责讲演。", gps_office_need_doctor = "您需è¦ä¸ºä¸€èˆ¬è¯Šæ–­å®¤é›‡ä½£ä¸€å医生。", }, goals = { win = { money = "您还需è¦%dæ‰èƒ½å®Œæˆæœ¬å…³ä¸­çš„财政指标。", cure = "冿²»æ„ˆ%d个病人您就å¯ä»¥æ»¡è¶³æœ¬å…³ä»»åŠ¡çš„è¦æ±‚了。", reputation = "æé«˜å£°æœ›%då°†è¾¾åˆ°èƒœåˆ©å®Œæˆæœ¬ä»»åŠ¡çš„è¦æ±‚", value = "您需è¦å¢žåŠ åŒ»é™¢æ”¶å…¥åˆ°$%d", }, lose = { kill = "冿€æ­»%d个病人将导致本任务失败ï¼", }, }, warnings = { charges_too_low = "治疗费用太低了。它将使更多的病人到医院就诊,但您无法从æ¯ä¸ªç—…人身上获å–太多的利润。", charges_too_high = "治疗费用太高了。短期内它将产生很好的效益,但最终会把病人å“跑的。", staff_overworked = "您的员工已ç»åŠ³ç´¯è¿‡åº¦ã€‚ä»–ä»¬çš„åŠžäº‹æ•ˆçŽ‡æ­£åœ¨ä¸‹é™ï¼Œå¹¶å°†æœ‰å¯èƒ½å‘生医疗事故。", doctor_crazy_overwork = "喔,ä¸ï¼æ‚¨çš„一ä½åŒ»ç”Ÿå·²ç»ç”±äºŽåŠ³ç´¯è¿‡åº¦å¿«è¦å‘狂了。如果能够立å³è®©ä»–休æ¯ï¼Œä»–将得到æ¢å¤ã€‚", doctors_tired = "您的医生太累了。立å³è®©ä»–们休æ¯ã€‚", people_did_it_on_the_floor = "æ‚¨çš„ä¸€äº›ç—…äººåšæŒä¸ä½äº†ã€‚赶快打扫干净。", queues_too_long = "队ä¼å¤ªé•¿äº†ã€‚", money_very_low_take_loan = "您的现金é‡å¤ªå°‘了。您å¯ä»¥å°è¯•贷款。", patients_very_thirsty = "äººä»¬æ„Ÿåˆ°å¤ªå£æ¸´äº†ã€‚如果您ä¸ç«‹å³è®¾ç½®ä¸€äº›é¥®æ–™æœºï¼Œåˆ™å°†çœ‹åˆ°å¤§å¤šæ•°äººå›žå®¶åŽ»å–å¯ä¹ã€‚", machinery_very_damaged = "紧急ï¼ç«‹å³æ´¾æ¸…æ´å·¥åŽ»ä¿®ç†æœºå™¨ï¼å®ƒä»¬è¦çˆ†ç‚¸äº†ï¼", handymen_tired2 = "您的清æ´å·¥å¤ªç–²å€¦äº†ã€‚ç«‹å³è®©ä»–们休æ¯ã€‚", desperate_need_for_watering = "您需è¦é›‡ä½£ä¸€å清æ´å·¥ç…§æ–™åŒ»é™¢ä¸­çš„æ¤ç‰©ã€‚", nurses_tired = "您的护士感到疲倦了。立å³è®©å¥¹ä»¬ä¼‘æ¯ã€‚", too_much_litter = "åŒ»é™¢ä¸­çš„åºŸå¼ƒç‰©ä¸æ–­å¢žå¤šã€‚派几个清æ´å·¥äººå°±å¯ä»¥è§£å†³ã€‚", reception_bottleneck = "接待å°å·²æ— æ³•满足需è¦ã€‚å†é›‡ä½£ä¸€å接待员。", place_plants4 = "在医院中多摆放一些æ¤ç‰©ä½¿æ‰€æœ‰ç—…人感到快ä¹ã€‚", change_priorities_to_plants = "æ‚¨å¿…é¡»æ”¹å˜æ¸…æ´å·¥çš„工作优先级,使他们更多地为æ¤ç‰©æµ‡æ°´ã€‚", staff_too_hot = "您的工作人员感到太热了。请调低供热标准或拆除房间内的暖气。", finanical_trouble2 = "多增加一些收入。如果å†äºæŸ$%d任务就会失败。", plants_thirsty = "您需è¦å¯¹æ¤ç‰©è¿›è¡Œç…§æ–™ã€‚它们正感到干渴。", litter_everywhere = "医院中的废弃物到处都是。多派几个清æ´å·¥äººå°±å¯ä»¥è§£å†³ã€‚", nurses_tired2 = "您的护士太疲倦了。立å³è®©å¥¹ä»¬ä¼‘æ¯ã€‚", plants_dying = "您的æ¤ç‰©å¿«å¹²æ­»äº†ã€‚å®ƒä»¬éœ€è¦æ°´ã€‚多为æ¤ç‰©æ´¾äº›æ¸…æ´å·¥ã€‚病人å¯ä¸æ„¿æ„看到枯死的æ¤ç‰©ã€‚", reduce_staff_rest_threshold = "å°è¯•在医院制度画é¢ä¸­å‡å°‘å‘˜å·¥ä¼‘æ¯æ—¶çš„疲劳程度,这样员工将ç»å¸¸ä¼‘æ¯ã€‚è¿™åªæ˜¯ä¸€ä¸ªä¸»æ„。", more_toilets = "æ‚¨éœ€è¦æ›´å¤šçš„马桶。人们都已急ä¸å¯å¾…了。", hospital_is_rubbish = "人们在到处宣扬您的医院是垃圾。è¦çŸ¥é“您的医院很快就会臭å远扬。", pay_back_loan = "æ‚¨å·²ç»æŒ£åˆ°äº†å¾ˆå¤šé’±ã€‚为什么ä¸è€ƒè™‘å¿è¿˜è´·æ¬¾ï¼Ÿ", financial_trouble3 = "您的现金状况ä¸å¤ªå¦™ã€‚想办法增加一些收入。您è·ç¦»å¤±è´¥è¿˜å·®$%d。", bankruptcy_imminent = "å—¨ï¼æ‚¨å¿«ç ´äº§äº†ã€‚å°å¿ƒå•Šï¼", build_toilet_now = "ç«‹å³å»ºé€ æ´—手间。人们已ç»å¿æ— å¯å¿äº†ã€‚åˆ«å‚»ç¬‘ï¼Œè¿™å¯æ˜¯ä¸€ä¸ªä¸¥é‡é—®é¢˜ã€‚", patient_stuck = "有人被å¡ä½äº†ï¼Œæ›´å¥½åœ°è§„划您的医院。", no_patients_last_month = "ä¸Šä¸ªæœˆï¼Œæ²¡æœ‰æ–°çš„ç—…äººå‰æ¥æ‚¨çš„åŒ»é™¢ã€‚å¤ªå¯æ€•了ï¼", more_benches = "是å¦è€ƒè™‘多摆放一些长椅。一些病情严é‡çš„病人现在正被迫站ç€ç­‰å¾…治疗。", many_epidemics = "看æ¥åŒ»é™¢é‡ŒåŒæ—¶æœ‰ä¸åªä¸€ç§ä¼ æŸ“病。这将是一场空å‰ç¾éš¾ï¼ŒåŠ æ²¹ï¼", place_plants_to_keep_people = "人们正在离开。多摆放一些æ¤ç‰©å¯ä»¥æŒ½ç•™ä»–们。", patients_thirsty2 = "äººä»¬æŠ±æ€¨å£æ¸´ã€‚您应该在医院中多设置一些饮料机,或将已有的饮料机移动到他们身边。", money_low = "", staff_unhappy = "æ‚¨çš„å·¥ä½œäººå‘˜ä¸æ˜¯å¾ˆå¿«ä¹ã€‚å¯ä»¥å°è¯•给他们一些奖金,或为他们建造一个员工休æ¯å®¤ã€‚您也å¯ä»¥åœ¨åŒ»é™¢åˆ¶åº¦ç”»é¢ä¸­è°ƒæ•´å‘˜å·¥éœ€è¦ä¼‘æ¯æ—¶çš„疲劳程度。", people_freezing = "无法相信,在这个拥有中央空调的时代,您的一些病人竟然快被冻僵了。赶快摆放一些暖气并打开供暖开关使他们感到温暖。", need_toilets = "ç—…äººéœ€è¦æ´—手间。请在一些易找的地方建造洗手间。", nobody_cured_last_month = "上个月几乎没有治愈一个病人。", patients_very_cold = "病人们感到太冷了。请增加医院的供热,或在医院中多摆放一些暖气。", build_toilets = "ç«‹å³å»ºé€ ä¸€ä¸ªæ´—手间,å¦åˆ™æ‚¨å°†çœ‹åˆ°éžå¸¸ä¸é›…的事情å‘生。想象一下医院中将会出现的味é“。", many_killed = "æ‚¨å·²ç»æ€æ­»äº†%d个病人。您本应该治愈他们的病。", place_plants2 = "人们正在离开。多摆放一些æ¤ç‰©å¯ä»¥ä½¿ä»–们多åœç•™ä¸€ä¼šå„¿ã€‚", staff_tired = "您的员工感到太疲倦了。如果您å†ä¸è®©ä»–们到员工休æ¯å®¤ä¼‘æ¯ä¸€ä¼šå„¿ï¼Œåˆ™æŸäº›äººä¼šç”±äºŽé•¿æ—¶é—´çš„紧张疲劳导致崩溃。", machines_falling_apart = "您的机器快爆炸了。请立å³è®©æ¸…æ´å·¥è¿›è¡Œç»´ä¿®ï¼", patients_unhappy = "病人ä¸å–œæ¬¢æ‚¨çš„医院。您必须为æé«˜çŽ¯å¢ƒè´¨é‡åšä¸€äº›äº‹æƒ…。", place_plants3 = "人们的情绪很糟。多摆放一些æ¤ç‰©ä½¿ä»–们快ä¹ã€‚", staff_unhappy2 = "æ‚¨çš„å‘˜å·¥éƒ½ä¸æ˜¯å¾ˆå¿«ä¹ã€‚å¾ˆå¿«ä»–ä»¬å°±ä¼šè¦æ±‚å‘奖金。", cash_low_consider_loan = "您的æµåŠ¨èµ„é‡‘çŠ¶å†µå分ä¸å¦™ã€‚是å¦è€ƒè™‘贷款?", queue_too_long_at_reception = "在接待å°å‰æŽ’队等待的病人太多了。请å†å»ºä¸€ä¸ªæŽ¥å¾…å°å¹¶é›‡ä½£ä¸€å接待员。", queue_too_long_send_doctor = "您的%s队ä¼å¤ªé•¿äº†ã€‚è¯·ç¡®è®¤æˆ¿é—´ä¸­æ˜¯å¦æœ‰åŒ»ç”Ÿã€‚", financial_trouble = "您正é¢ä¸´ç€ä¸¥é‡çš„è´¢æ”¿å±æœºã€‚ç«‹å³æ•´ç†å¸æˆ·ï¼å¦‚果您å†äºæŸ$%d,本关任务将失败。", doctors_tired2 = "您的医生太疲倦了。立å³è®©ä»–们休æ¯ã€‚", handymen_tired = "您的清æ´å·¥äººå¤ªåŠ³ç´¯äº†ã€‚ç«‹å³è®©ä»–们休æ¯ã€‚", patient_leaving = "一个病人离开了。原因?医院管ç†ä¸å–„,员工工作ä¸åŠ›ï¼Œå†åŠ ä¸Šè®¾æ–½ä¸å…¨ã€‚", machinery_damaged2 = "您必须立å³é›‡ä½£ä¸€å清æ´å·¥åŽ»è´Ÿè´£ä¿®ç†ç»´æŠ¤æœºå™¨ã€‚", patients_leaving = "病人们正在离去。在医院中多摆放一些æ¤ç‰©ï¼Œé•¿æ¤…,饮料机等物å“将有助于挽留他们。", epidemic_getting_serious = "传染病疫情越æ¥è¶Šä¸¥é‡ã€‚您必须立å³è¡ŒåЍï¼", machinery_damaged = "ç«‹å³ä¿®ç†æ‚¨çš„æœºå™¨ã€‚它们无法支撑太久。", people_have_to_stand = "病人ä¸å¾—ä¸ç«™ç«‹ç­‰å¾…。立å³å¤šæ‘†æ”¾ä¸€äº›é•¿æ¤…。", receptionists_tired = "您的接待员太疲劳了。立å³è®©å¥¹ä»¬ä¼‘æ¯ã€‚", build_staffroom = "ç«‹å³å»ºé€ ä¸€ä¸ªå‘˜å·¥ä¼‘æ¯å®¤ã€‚您的员工工作太辛苦了,而且将è¦ç²¾ç¥žå´©æºƒäº†ã€‚快点ï¼", machinery_slightly_damaged = "您的医疗仪器有轻微æŸä¼¤ã€‚别忘了维护。", need_staffroom = "建造一个员工休æ¯å®¤ä½¿æ‚¨çš„员工得以休æ¯ã€‚", patients_getting_hot = "病人们感到太热了。请é™ä½ŽåŒ»é™¢çš„供热,或移走一些暖气。", machinery_deteriorating = "您的机器由于过度使用已ç»å‡ºçްè€åŒ–现象。å°å¿ƒã€‚", patients_too_hot = "病人们感到太热了。è¦ä¹ˆæ‹†é™¤ä¸€äº›æš–气,调低供热标准,è¦ä¹ˆä¸ºä»–们多设置一些饮料机。", patients_thirsty = "äººä»¬æ„Ÿåˆ°å£æ¸´ã€‚也许您应该å‘他们æä¾›é¥®æ–™æœºã€‚", machine_severely_damaged = "%så·²ç»å¿«å½»åº•æ¯å了。", litter_catastrophy = "åŒ»é™¢ä¸­çš„åºŸå¼ƒç‰©å¤ªå¤šäº†ã€‚ç«‹å³æ´¾ä¸€é˜Ÿæ¸…æ´å·¥äººè§£å†³è¿™ä¸ªé—®é¢˜ã€‚", staff_very_cold = "员工们感觉太冷了。请增加医院的供热,或在医院中多摆放一些暖气。", deal_with_epidemic_now = "å¦‚æžœæ— æ³•ç«‹å³æŽ§åˆ¶ä¼ æŸ“ç—…é‚£ä¹ˆæ‚¨çš„åŒ»é™¢å°†å‡ºå¤§ä¹±å­ã€‚加油ï¼", too_many_plants = "您已ç»å¸ƒç½®äº†è¶³å¤Ÿå¤šçš„æ¤ç‰©äº†ã€‚åŒ»é™¢éƒ½å¿«å˜æˆä¸›æž—了。", patients_really_thirsty = "ç—…äººä»¬æ„Ÿåˆ°å£æ¸´ã€‚å¤šæ”¾ç½®ä¸€äº›é¥®æ–™æœºï¼Œæˆ–å°†å·²æœ‰çš„é¥®æ–™æœºç§»åŠ¨åˆ°æœ€é•¿çš„é˜Ÿä¼æ—边。", some_litter = "清æ´å·¥äººå¯ä»¥åœ¨åžƒåœ¾æˆå †ä¹‹å‰æ¸…除所有垃圾。", patients_annoyed = "äººä»¬å¯¹åŒ»é™¢çš„ç®¡ç†æ„Ÿåˆ°æžç«¯æ„¤æ€’。我ä¸èƒ½è´£å¤‡ä»–们,抓紧时间解决问题å§ï¼", receptionists_tired2 = "您的接待员太疲倦了。立å³è®©å¥¹ä»¬ä¼‘æ¯ã€‚", }, placement_info = { door_can_place = "如果您愿æ„çš„è¯å¯ä»¥åœ¨è¿™é‡Œè®¾ç½®æˆ¿é—¨ã€‚", window_can_place = "ä½ å¯ä»¥åœ¨è¿™é‡Œè®¾ç½®çª—户,这样很好。", door_cannot_place = "抱歉,您无法在这里设置房门。", object_can_place = "您å¯ä»¥åœ¨è¿™é‡Œæ‘†æ”¾ç‰©å“。", reception_can_place = "您å¯ä»¥åœ¨è¿™é‡Œæ”¾ç½®æŽ¥å¾…å°ã€‚", staff_cannot_place = "您无法在这里安置员工。对ä¸èµ·ã€‚", staff_can_place = "您å¯ä»¥åœ¨è¿™é‡Œå®‰ç½®å‘˜å·¥ã€‚", object_cannot_place = "嗨,您无法在这里摆放物å“。", room_cannot_place = "您无法在这里建房。", room_cannot_place_2 = "您无法在这里建房。", window_cannot_place = "您实际上无法在这里设置窗户。", reception_cannot_place = "您无法在这里放置接待å°ã€‚", }, praise = { many_benches = "病人拥有足够的座ä½ã€‚太棒了。", many_plants = "太å¯çˆ±äº†ã€‚您已ç»å¸ƒç½®äº†è¶³å¤Ÿçš„æ¤ç‰©ã€‚ç—…äººå°†æ„Ÿåˆ°æ»¡æ„。", plants_are_well = "太棒了。æ¤ç‰©è¢«ç…§æ–™å¾—很好。", few_have_to_stand = "在您的医院中几乎æ¯ä¸ªäººéƒ½æœ‰åº§ä½ã€‚所有的病人都感到快ä¹ã€‚", plenty_of_benches = "座椅已ç»è¶³å¤Ÿäº†ã€‚", plants_thriving = "太棒了。医院中的æ¤ç‰©ç”Ÿé•¿å¾—很茂盛。它们看起æ¥ä»¤äººæ„Ÿåˆ°æƒŠå¥‡ã€‚åšæŒä½ï¼Œæ‚¨å°†æœ‰å¯èƒ½èµ¢å¾—一个大奖。", patients_cured = "å·²ç»æ²»æ„ˆäº†%d个病人。", }, information = { larger_rooms = "大的房间将使员工感觉到自己的é‡è¦ï¼Œå¹¶æé«˜ä»–们的表现。", extra_items = "房间中摆放物å“将使员工感到舒æœå¹¶æé«˜ä»–们的表现。", epidemic = "在您的医院中å‘现了一ç§ä¼ æŸ“病。您必须立å³å¤„ç†ï¼", promotion_to_doctor = "您的一个实习医生æå‡ä¸ºåŒ»ç”Ÿäº†ã€‚", emergency = "紧急情况ï¼å¿«ï¼å¿«ï¼å¿«ï¼", patient_abducted = "您的一ä½ç—…人被外星人诱æ‹äº†ã€‚", first_cure = "å¹²å¾—å¥½ï¼æ‚¨å·²ç»æ²»æ„ˆäº†ç¬¬ä¸€ä¸ªç—…人。", promotion_to_consultant = "您的一ååŒ»ç”Ÿå·²ç»æå‡ä¸ºä¸“家了。", handyman_adjust = "您å¯ä»¥é€šè¿‡è°ƒæ•´æ¸…æ´å·¥äººå·¥ä½œçš„优先级使其打扫得更干净。", promotion_to_specialist = "您的一个医生被æå‡ä¸º%s。", initial_general_advice = { rats_have_arrived = "è€é¼ åœ¨æ‚¨çš„医院中到处乱跑。使用鼠标打死它们。", autopsy_available = "自动验尸机被研制出æ¥äº†ã€‚通过它,您å¯ä»¥å¤„ç½®æƒ¹éº»çƒ¦æˆ–ä¸æ¬¢è¿Žçš„病人,还å¯ä»¥å¯¹ä»–ä»¬è¿›è¡Œç ”ç©¶ã€‚è¦æ³¨æ„ï¼èƒ½å¦ä½¿ç”¨è¯¥æœºå™¨è¿˜æœ‰å¾ˆå¤§çš„争议。", first_patients_thirsty = "åŒ»é™¢ä¸­çš„äººä»¬æ„Ÿåˆ°å£æ¸´ã€‚为他们多摆放一些饮料机。", research_now_available = "您已ç»å»ºé€ äº†ç¬¬ä¸€ä¸ªç ”究房间。现在您å¯ä»¥è¿›å…¥ç ”ç©¶ç”»é¢ã€‚", psychiatric_symbol = "拥有精神病技能的医生åŽè·Ÿç¬¦å·ï¼š|", decrease_heating = "医院中的人们感到太热了。在城镇地图画é¢ä¸­ï¼Œé™ä½Žä¾›çƒ­é‡ã€‚", surgeon_symbol = "拥有外科手术技能的医生åŽè·Ÿç¬¦å·ï¼š{", first_emergency = "急救病人的头顶有一个闪亮的è“色急救ç¯ã€‚åœ¨æ­»äº¡ä¹‹å‰æˆ–时间倒数结æŸä¹‹å‰æ²»æ„ˆä»–们。", first_epidemic = "在医院中爆å‘了传染病请决定是掩盖病情还是将其清除出去。", taking_your_staff = "æœ‰äººæƒ³è¦æŒ–èµ°æ‚¨çš„å‘˜å·¥ã€‚æ‚¨è¦æŠ“ç´§ä¸Žä»–ä»¬è¿›è¡Œæ–—äº‰ã€‚", place_radiators = "åŒ»é™¢ä¸­çš„äººä»¬æ„Ÿåˆ°å¯’å†·ï¼æ‚¨å¯ä»¥å¤šæ‘†æ”¾ä¸€äº›æš–气。", epidemic_spreading = "您的医院中å‘现传染病。在病人离开医院之å‰ä¸€å®šè¦æ²»æ„ˆä»–们。", research_symbol = "拥有研究技能的医生åŽè·Ÿç¬¦å·ï¼š}", machine_needs_repair = "æ‚¨æœ‰ä¸€å°æœºå™¨éœ€è¦ç»´ä¿®ã€‚确定机器ä½ç½®ï¼å®ƒå¯èƒ½æ­£åœ¨å†’烟ï¼åœ¨æœºå™¨ä¸Šç‚¹å‡»ä¸€ä¸‹ï¼Œå†ç‚¹å‡»æ¸…æ´å·¥äººæŒ‰é’®ã€‚", increase_heating = "人们感到寒冷。打开城镇地图画é¢ä¸­çš„供暖设施。", first_VIP = "æ‚¨è¦æŽ¥å¾…æ¥è®¿çš„第一ä½è´µå®¾ã€‚一定è¦ç¡®ä¿è´µå®¾æ²¡æœ‰çœ‹åˆ°ä»»ä½•ä¸è‰¯äº‹ä»¶ï¼Œæˆ–å…¶ä»–ä¸é«˜å…´çš„病人。", }, patient_leaving_too_expensive = "一ä½ç—…人没有为%s付款就离开了。这æŸå¤±å¤ªå¤§äº†ã€‚", vip_arrived = "å°å¿ƒï¼%s正准备访问您的医院ï¼ä¿æŒåŒ»é™¢è¿è½¬æ­£å¸¸ï¼Œè¿™æ ·æ‰èƒ½ä½¿ä»–感到愉快。", epidemic_health_inspector = "您的医院中出现传染病的消æ¯å·²ç»åˆ°è¾¾äº†å«ç”Ÿéƒ¨ã€‚å«ç”Ÿå·¡æŸ¥å‘˜å¾ˆå¿«å°±è¦åˆ°è¾¾ï¼Œå¿«åšå‡†å¤‡ã€‚", first_death = "è¿™æ˜¯æ‚¨ç¬¬ä¸€æ¬¡æ€æ­»ç—…人。感觉如何?", pay_rise = "您的一个员工å¨èƒè¦è¾žèŒã€‚选择是å¦åŒæ„其请求,或将其解雇。点击å±å¹•左下方的标志å¯ä»¥æŸ¥çœ‹å¨èƒè¦è¾žèŒçš„员工信æ¯ã€‚", place_windows = "设置窗户将使房间更加明亮,并振奋员工的精神。", fax_received = "在å±å¹•左下角刚刚弹出的标志表示一些é‡è¦äº‹ä»¶çš„相关信æ¯ï¼Œæˆ–æŸäº›éœ€è¦æ‚¨å†³å®šçš„事情。", }, build_advice = { placing_object_blocks_door = "设置该物å“å¯ä»¥é˜»æ­¢å…¶ä»–人接近。", blueprint_would_block = "è“图与其它房间é‡å äº†ã€‚请å°è¯•釿–°è®¾ç½®è“图尺寸,或移动è“图ä½ç½®ã€‚", door_not_reachable = "病人无法进入那扇门。仔细想一想。", blueprint_invalid = "è“图ä½ç½®éžæ³•。", }, } casebook = { sent_home = "转走", deaths = "死亡", treatment_charge = "治疗花费", reputation = "声望", research = "集中研究", cure = "治疗", cured = "治愈", earned_money = "æ”¶å…¥", cure_desc = { hire_psychiatrists = "您需è¦é›‡ä½£ä¸€äº›ç²¾ç¥žç—…医生。", improve_cure = "æé«˜ç–—效。", hire_nurses = "您需è¦é›‡ä½£ä¸€äº›æŠ¤å£«ã€‚", build_ward = "您ä»éœ€è¦å»ºé€ ä¸€ä¸ªç—…房。", no_cure_known = "未治愈。", cure_known = "治愈。", build_room = "我建议您修建%s", hire_doctors = "您需è¦é›‡ä½£ä¸€äº›åŒ»ç”Ÿã€‚", hire_surgeons = "您需è¦é›‡ä½£ä¸€äº›å¤–科医生。", }, } diseases = { diag_ward = { name = "病房诊断", }, diag_ultrascan = { name = "超级扫æä»ªè¯Šæ–­", }, autopsy = { name = "验尸", }, third_degree_sideburns = { cause = "ç—…å› ï¼å‘å¾€20世纪70年代。", cure = "治疗ï¼ç²¾ç¥žç—…医生必须使用最新科技,使病人认识到这些奇装异æœéƒ½æ˜¯åžƒåœ¾ã€‚", name = "络腮胡å­", symptoms = "症状ï¼é•¿å¤´å‘,全身闪闪å‘光。", }, discrete_itching = { cause = "ç—…å› ï¼æ˜†è™«å®å’¬ã€‚", cure = "治疗ï¼ç—…人å–下胶状糖浆阻止皮肤å‘痒。", name = "æ”ç—’ç—‡", symptoms = "症状ï¼åˆ°å¤„乱抓,引起全身å‘炎。", }, the_squits = { cause = "ç—…å› ï¼åƒäº†å˜è´¨çš„æ¯”è¨é¥¼ã€‚", cure = "æ²»ç–—ï¼æœç”¨ç²˜æ€§è¯å‰‚修补病人的内è„。", name = "å‘•å", symptoms = "症状ï¼å™¢ã€‚想必您也å¯ä»¥çŒœå¾—到。", }, spare_ribs = { cause = "ç—…å› ï¼å在冰冷的石地æ¿ä¸Šã€‚", cure = "治疗ï¼ç”±ä¸¤å外科医生执行手术。", name = "瘦骨", symptoms = "症状ï¼èƒ¸éƒ¨æ„Ÿè§‰ä¸é€‚。", }, diag_blood_machine = { name = "血液机器诊断", }, king_complex = { cause = "ç—…å› ï¼çŒ«çŽ‹çš„æ€æƒ³è¿›å…¥ç—…人大脑并å–而代之。", cure = "治疗ï¼ç”±ç²¾ç¥žç—…医生告诉病人其è’谬的举止。", name = "猫王综åˆç—‡", symptoms = "症状ï¼ç©¿ç€ä¸¾æ­¢æ€ªå¼‚。", }, diag_x_ray = { name = "X光诊断", }, pregnancy = { cause = "ç—…å› ï¼æ€€å­•。", cure = "治疗ï¼åœ¨æ‰‹æœ¯ä¸­å¿ƒä¸­å°†å©´å„¿å–出,洗净é€åˆ°ç—…人é¢å‰ã€‚", name = "产妇", symptoms = "症状ï¼ä¸æ–­å¢žå¤§çš„啤酒肚。", }, fake_blood = { cause = "ç—…å› ï¼ç—…人常常开玩笑。", cure = "治疗ï¼åªæœ‰ç²¾ç¥žç—…医生æ‰èƒ½ä½¿ç—…人安é™ä¸‹æ¥ã€‚", name = "å‡è¡€", symptoms = "ç—‡çŠ¶ï¼æµå‡ºçº¢è‰²æ¶²ä½“。", }, diag_psych = { name = "精神病诊断", }, invisibility = { cause = "ç—…å› ï¼è¢«æœ‰æ”¾å°„性的蚂èšå®å’¬ã€‚", cure = "治疗ï¼åœ¨è¯æˆ¿å–下彩色液体,将很快使病人æ¢å¤æ­£å¸¸ã€‚", name = "éšèº«", symptoms = "症状ï¼ç—…人本身感觉ä¸åˆ°ä»»ä½•ä¸é€‚,并常常和家里人开玩笑。", }, golf_stones = { cause = "ç—…å› ï¼å¸å…¥äº†é«˜å°”夫çƒå†…部的有毒气体。", cure = "治疗ï¼ç”±ä¸¤å外科医生执行手术。", name = "高尔夫症", symptoms = "症状ï¼ç¥žç»é”™ä¹±ä¸”胡言乱语。", }, diag_general_diag = { name = "一般诊断", }, infectious_laughter = { cause = "ç—…å› ï¼è§‚看å¤å…¸å–œå‰§ã€‚", cure = "治疗ï¼ç²¾ç¥žç—…医生必须让病人了解其当å‰ä¸¥é‡çš„病情。", name = "狂笑症", symptoms = "症状ï¼ä¸ä½ç‹‚笑。", }, general_practice = { name = "一般诊断", }, baldness = { cause = "ç—…å› ï¼å‘公众说谎è¯ã€‚", cure = "治疗ï¼ä½¿ç”¨ä»ªå™¨å°†å¤´å‘ç¼åˆåˆ°ç—…人的头上。", name = "秃顶", symptoms = "症状ï¼è„‘é—¨å‘亮,å分困窘。", }, heaped_piles = { cause = "ç—…å› ï¼ç«™ç«‹åœ¨æ°´å†·å´å™¨æ—边。", cure = "æ²»ç–—ï¼æœç”¨è¯å‰‚。", name = "痔疮", symptoms = "症状ï¼ç—…人感觉就象å在大ç†çŸ³ä¸Šã€‚", }, unexpected_swelling = { cause = "ç—…å› ï¼æ„外事件。", cure = "治疗ï¼ç”±ä¸¤å外科医生实行手术。", name = "肿胀", symptoms = "症状ï¼è‚¿èƒ€ã€‚", }, jellyitis = { cause = "ç—…å› ï¼æ—¥å¸¸é¥®é£Ÿå«æœ‰è¿‡å¤šçš„胶状物并完æˆå¤ªå¤šçš„练习。", cure = "治疗ï¼å°†ç—…人浸入到胶桶中。", name = "失衡症", symptoms = "症状ï¼èµ°è·¯æ‘‡æ‘‡æ™ƒæ™ƒå¹¶ä¸æ—¶æ‘”倒。", }, hairyitis = { cause = "ç—…å› ï¼åœ¨æœˆå…‰ä¸‹åœç•™è¿‡é•¿æ—¶é—´ã€‚", cure = "治疗ï¼ä½¿ç”¨ç”µåˆ†è§£æœºå™¨åŽ»æŽ‰æ¯›å‘å¹¶å¡«è¡¥é—留的毛孔。", name = "多毛症", symptoms = "症状ï¼å—…è§‰ç‰¹åˆ«çµæ•。", }, alien_dna = { cause = "ç—…å› ï¼æ‹¥æœ‰äº†å¤–星人的DNA。", cure = "治疗ï¼åˆ©ç”¨ä»ªå™¨å¿«é€Ÿæ¸…除病人体内的DNA。", name = "外星人DNA", symptoms = "症状ï¼é€æ¸èœ•å˜æˆå¤–æ˜Ÿäººå¹¶é˜´è°‹æ‘§æ¯æˆ‘们的城市。", }, bloaty_head = { cause = "ç—…å› ï¼é—»åˆ°äº†å乳酪并å–了ä¸å¹²å‡€çš„雨水。", cure = "æ²»ç–—ï¼æ‰“破肿胀脑袋,并使用充气机使脑袋æ¢å¤æ­£å¸¸ã€‚", name = "头部肿胀", symptoms = "症状ï¼éžå¸¸ä¸èˆ’æœã€‚", }, gastric_ejections = { cause = "ç—…å› ï¼åƒäº†è¿‡è¾£çš„å››å·èœã€‚", cure = "æ²»ç–—ï¼æœç”¨ç‰¹æ®Šå‡å›ºå‰‚从而阻止呕å。", name = "å胃症", symptoms = "症状ï¼åŠæ¶ˆåŒ–çš„é£Ÿç‰©è¢«ç—…äººä¸æ—¶å出。", }, uncommon_cold = { cause = "ç—…å› ï¼å¸è¿›äº†ç©ºæ°”中的ç°å°˜ã€‚", cure = "æ²»ç–—ï¼æœç”¨è¯æˆ¿é…制的特效è¯ã€‚", name = "感冒", symptoms = "ç—‡çŠ¶ï¼æµé¼»æ¶•,打喷åšã€‚", }, corrugated_ankles = { cause = "ç—…å› ï¼é©¾é©¶æ—¶é—´è¿‡é•¿ã€‚", cure = "æ²»ç–—ï¼æœç”¨å°‘釿¯’è‰å’Œé¦™æ–™åˆ¶æˆçš„è¯å‰‚,从而打通关节。", name = "脚è¸å¼¯æ›²", symptoms = "症状ï¼è„šè¸æ„Ÿè§‰ä¸èˆ’æœã€‚", }, sleeping_illness = { cause = "ç—…å› ï¼å†…分泌失调。", cure = "治疗ï¼ç”±æŠ¤å£«é…制一剂å¨åŠ›å¼ºå¤§çš„å…´å¥‹å‰‚ç»™ç—…äººæœç”¨ã€‚", name = "å—œç¡ç—‡", symptoms = "ç—‡çŠ¶ï¼æ— è®ºèµ°åˆ°é‚£é‡Œéƒ½æƒ³ç¡è§‰ã€‚", }, sweaty_palms = { cause = "ç—…å› ï¼å®³æ€•找工作时的é¢è¯•。", cure = "治疗ï¼ç²¾ç¥žç—…医生使病人走出心ç†è¯¯åŒºã€‚", name = "手心出汗症", symptoms = "症状ï¼å½“ä¸Žç—…äººæ¡æ‰‹æ—¶ï¼Œæ„Ÿè§‰å°±è±¡æ”¥ç€ä¸€å—叿»¡äº†æ°´çš„æµ·ç»µã€‚", }, serious_radiation = { cause = "ç—…å› ï¼ä¸å°å¿ƒé”™è¯¯åžåƒäº†å«æœ‰é’šå…ƒç´ çš„å£é¦™ç³–。", cure = "治疗ï¼ç—…人必须被放置在净化淋浴器内彻底清洗。", name = "放射病", symptoms = "症状ï¼ç—…人感到éžå¸¸éžå¸¸çš„ä¸èˆ’æœã€‚", }, diag_cardiogram = { name = "心电图仪诊断", }, diag_scanner = { name = "扫æä»ªè¯Šæ–­", }, gut_rot = { cause = "ç—…å› ï¼å–了太多的å¨å£«å¿Œé…’。", cure = "治疗ï¼ç”±æŠ¤å£«é…制è¯å‰‚,交给病人æœä¸‹ã€‚", name = "内è„è…烂", symptoms = "症状ï¼ä¸å’³å—½ï¼Œä½†èƒƒå£ä¹Ÿæ²¡æœ‰äº†ã€‚", }, iron_lungs = { cause = "ç—…å› ï¼åŸŽå¸‚中浑浊的空气。", cure = "治疗ï¼ä¸¤å外科医生在手术中心执行手术。", name = "é“肺", symptoms = "ç—‡çŠ¶ï¼æµ‘身难å—。", }, broken_wind = { cause = "ç—…å› ï¼é¥­åŽä½¿ç”¨å¥èº«æˆ¿çš„脚è¸è½¦è¿›è¡Œè¿åŠ¨ã€‚", cure = "æ²»ç–—ï¼æœç”¨è¯æˆ¿é…制的特效è¯ã€‚", name = "臭å±ç—‡", symptoms = "症状ï¼ä½¿èº«åŽçš„人感到æžåº¦çš„ä¸èˆ’æœã€‚", }, kidney_beans = { cause = "ç—…å› ï¼é¥®æ–™ä¸­åŠ å…¥äº†å¤§é‡å†°å—。", cure = "治疗ï¼ç”±ä¸¤å外科医生执行手术。", name = "肾豆", symptoms = "症状ï¼ç–¼ç—›ä¸”ç»å¸¸åŽ»åŽ•æ‰€ã€‚", }, transparency = { cause = "ç—…å› ï¼èˆ”了打开的容器的铅箔上的酸乳酪。", cure = "æ²»ç–—ï¼æœç”¨è¯æˆ¿é…制的特殊清凉彩色冲剂就å¯ä»¥æ²»æ„ˆç–¾ç—…。", name = "逿˜Žç—‡", symptoms = "症状ï¼è‚Œè‚‰å˜å¾—逿˜Žï¼Œå¯¹å…‰æ•感。", }, broken_heart = { cause = "ç—…å› ï¼ä¸€äº›äººæ¯”病人富有,年轻,瘦。", cure = "治疗ï¼ç”±ä¸¤å外科医生打开病人的胸腔,轻轻地修补其心è„缺陷。", name = "破碎的心", symptoms = "症状ï¼ç—›å“­æµæ¶•。", }, slack_tongue = { cause = "ç—…å› ï¼è¿‡å¤šåœ°è®¨è®ºè‚¥çš‚剧。", cure = "治疗ï¼å°†èˆŒå¤´æ”¾å…¥èˆŒå¤´åˆ‡ç‰‡æœºä¸­ï¼Œå°†å¿«é€Ÿæœ‰æ•ˆåœ°å¾—到治疗。", name = "舌头æ¾å¼›ç—‡", symptoms = "症状ï¼èˆŒå¤´å¢žé•¿åˆ°æ­£å¸¸çš„5å€ã€‚", }, tv_personalities = { cause = "ç—…å› ï¼æ—¥é—´ç”µè§†èŠ‚ç›®ã€‚", cure = "治疗ï¼ç²¾ç¥žç—…åŒ»ç”Ÿå¿…é¡»ä½¿ç—…äººæœ‰ä¿¡å¿ƒå–æŽ‰ç”µè§†æœºï¼Œè€Œè´­ä¹°æ”¶éŸ³æœºã€‚", name = "电视病", symptoms = "症状ï¼äº§ç”Ÿé”™è§‰ï¼Œä»¥ä¸ºè‡ªå·±æ­£åœ¨è¡¨æ¼”。", }, ruptured_nodules = { cause = "ç—…å› ï¼åœ¨å¯’冷的季节中跳跃。", cure = "治疗ï¼ä¸¤åç§°èŒçš„å¤–ç§‘åŒ»ç”Ÿå¿…é¡»ä½¿ç”¨ç¨³å®šçš„åŒæ‰‹åˆ‡é™¤è‚¿ç˜¤ã€‚", name = "肿瘤", symptoms = "ç—‡çŠ¶ï¼æ— æ³•舒适地å下。", }, fractured_bones = { cause = "ç—…å› ï¼ä»Žé«˜å¤„摔到混å‡åœŸåœ°é¢ä¸Šã€‚", cure = "治疗ï¼å°†å·²æ‰“好的石è†ä½¿ç”¨ä»ªå™¨åŽ»é™¤ã€‚", name = "骨折", symptoms = "症状ï¼å‰§ç—›ä¸”无法使用四肢。", }, chronic_nosehair = { cause = "ç—…å› ï¼ç»å¸¸å¯¹ä¸å¦‚自己的人嗤之以鼻。", cure = "治疗ï¼å£æœä»¤äººåŽŒæ¶çš„æ¯›å‘去除剂,该è¯å‰‚ç”±æŠ¤å£«åœ¨è¯æˆ¿é…制。", name = "鼻毛过多症", symptoms = "症状ï¼é¼»æ¯›è¿‡é•¿è¿‡å¤šï¼Œå¿«æˆé¸Ÿå·¢äº†ã€‚", }, } policy = { header = "医院制度", diag_termination = "诊断结æŸ", sliders = { guess = "å°è¯•治疗", send_home = "é£é€å›žå®¶", stop = "åœæ­¢æ²»ç–—", staff_room = "去员工休æ¯å®¤", }, diag_procedure = "诊断程åº", staff_rest = "员工休æ¯", staff_leave_rooms = "员工离开房间", } competitor_names = { [1] = "神谕", [2] = "巨人", [3] = "黑尔", [4] = "马笛维克", [5] = "冬钿 ‘", [6] = "沉æ€", [7] = "禅", [8] = "里昂", [9] = "玛文", [10] = "晶体", [11] = "æ¯äº²", [12] = "æ´å°¼", [13] = "CORSIX", [14] = "ROUJIN", [15] = "EDVIN", [16] = "è¨å§†", [17] = "查ç†", [18] = "亚瑟", [19] = "马格尼斯", [20] = "赛尔", [21] = "约书亚", [22] = "丹尼尔", [23] = "奥利文", [24] = "尼克", } buy_objects_window = { price = "价格:", choose_items = "选择物å“", total = "总共:", } trophy_room = { wait_times = { award = { [1] = "æ­å–œã€‚您的医院的排队等待时间éžå¸¸çŸ­ã€‚这是给您的奖励。", }, penalty = { [1] = "病人在您的医院中排队等待时间太长了。您应该好好地管ç†å‰æ¥å°±è¯Šçš„病人。", }, }, happy_vips = { trophies = { [1] = "由于您的医院在过去一年中给æ¥è®¿çš„è´µå®¾ä»¬ç•™ä¸‹äº†æ·±æ·±åœ°å¥½æ„Ÿï¼Œç‰¹æ­¤å‘æ‚¨é¢å‘诺è´å°”奖。", [2] = "由于您的医院使æ¯ä½é€ è®¿è´µå®¾éƒ½æ„Ÿåˆ°å¿«ä¹ï¼Œç‰¹æ­¤ç”±å人机构é¢å‘è‘—åäººå£«å¥–ã€‚æ‚¨å·²ç»æˆä¸ºæˆ‘们å人行列中的一员。", [3] = "由于您的医院在过去一年中使æ¯ä¸€ä½æ¥è®¿è´µå®¾éƒ½æ„Ÿåˆ°äº†å‘˜å·¥çš„工作热情,特此é¢å‘贵宾满æ„奖。", }, }, hosp_value = { penalty = { [1] = "您的医院价值太低了。您的ç†è´¢èƒ½åŠ›å¤ªæ¬¡äº†ã€‚è®°ä½ä¸€ä¸ªå¥½çš„医院通常也是价值最高的医院。", }, awards = { [1] = "由于您的医院价值ä¸è²ï¼Œå› æ­¤å«ç”Ÿéƒ¨å‘您表示æ­å–œã€‚", }, regional = { [1] = "您真是一个ç†è´¢é«˜æ‰‹ã€‚您的医院的价值比其它医院的总和还è¦å¤šã€‚", }, }, rats_accuracy = { trophies = { [1] = "由于您击打è€é¼ çš„命中率为%d%%,特此é¢å‘æžé“枭雄2 射击准确奖。", [2] = "由于您的医院在过去一年中以难以置信的命中率%d%%击毙è€é¼ ï¼Œç‰¹æ­¤é¢å¥–。", [3] = "由于您的医院在过去一年中击毙了%d%%çš„è€é¼ ï¼Œç‰¹æ­¤é¢å‘地下城守护者除害奖。æ­å–œï¼", }, }, all_cured = { awards = { [1] = "由于您的医院在过去一年中æˆåŠŸåœ°æ²»ç–—äº†æ‰€æœ‰ç—…äººï¼Œç‰¹æ­¤é¢å‘玛丽治疗奖。", }, trophies = { [1] = "由于您的医院在过去一年中æˆåŠŸåœ°æ²»ç–—äº†å°±è¯Šçš„æ¯ä¸ªç—…äººï¼Œå›½é™…æ²»ç–—åŸºé‡‘ä¼šç‰¹æ­¤å‘æ‚¨é¢å‘全部治愈奖。", [2] = "ç”±äºŽæ‚¨çš„åŒ»é™¢åœ¨è¿‡åŽ»ä¸€å¹´ä¸­æ²»æ„ˆäº†å¤§é‡æ‚£è€…,特此é¢å‘急病克星奖。", }, }, best_value_hosp = { trophies = { [1] = "由于您的医院在过去一年中赢得了最高的声望,特此é¢å‘白衣天使奖。这是您应得的。", }, penalty = { [1] = "周围æ¯ä¸ªåŒ»é™¢éƒ½æ¯”您的医院富有。您è¦åŠ æ²¹å•Šã€‚å¤šè´­ä¹°ä¸€äº›æ˜‚è´µçš„ä¸œè¥¿ã€‚", }, regional = { [1] = "æ­å–œæ‚¨ç®¡ç†çš„医院æˆä¸ºæœ€æœ‰ä»·å€¼çš„åŒ»é™¢ã€‚å¹²å¾—å¥½ã€‚ä¿æŒä¸‹åŽ»ã€‚", }, }, high_rep = { penalty = { [1] = "在过去一年中,您赢得了很低的声望。以åŽä¸€å®šè¦åŠ æ²¹å•Šã€‚", [2] = "您的声望是本区域最低的。真丢人。加油干。", }, awards = { [1] = "干得好。在上一个年度,由于您获得了很高的声望,特此é¢å‘一个å°å°çš„奖励。", [2] = "太棒了! 由于您在过去一年中å–得了很高的声望,特此é¢å‘奖励。", }, regional = { [1] = "由于您的医院在过去一年中赢得了最高的声望,特此é¢å‘牛蛙奖。这是您应得的。", [2] = "在这一年中,您的医院的声望超过了其它所有医院的总和。真是一项伟大的æˆå°±ã€‚", }, }, consistant_rep = { trophies = { [1] = "由于您的医院在过去一年中无懈å¯å‡»çš„è¿è¥ä»¥åŠæœ€é«˜çš„声望,您被授予内é˜å¤§è‡£å¥–。干得好。", [2] = "由于您的医院在过去一年中赢得了最高的声望,特此é¢å‘白衣天使奖。这是您应得的。", }, }, curesvdeaths = { awards = { [1] = "æ­å–œæ‚¨åœ¨è¿‡åŽ»ä¸€å¹´ä¸­ä½¿åŒ»é™¢ä¿æŒäº†å¾ˆé«˜çš„æ²»æ„ˆçŽ‡å’Œå¾ˆä½Žçš„æ­»äº¡çŽ‡ã€‚", }, penalty = { [1] = "您的治愈率实在是太低了。您应该使治愈的病人多于死亡的病人。ä¸è¦é¢ å€’了。", }, }, cleanliness = { regional_good = { [1] = "您的医院是最è„乱的医院之一。一个è„乱的医院ä¸ä»…味é“难闻,而且是å分å±é™©çš„。请密切留æ„。", }, award = { [1] = "å«ç”Ÿå·¡æŸ¥å‘˜æ³¨æ„到您的医院éžå¸¸å¹²å‡€ã€‚干净的医院æ„味ç€å®‰å…¨çš„åŒ»é™¢ã€‚åšæŒä¸‹åŽ»ã€‚", }, regional_bad = { [1] = "您的医院是本区域中最è„ä¹±çš„ã€‚å…¶å®ƒåŒ»é™¢éƒ½ä½¿èµ°å»Šä¿æŒæ•´æ´ã€‚您使医学界蒙羞。", }, }, happy_patients = { awards = { [1] = "在过去一年中,您的医院使所有访问的病人都感到快ä¹ï¼Œæ‚¨å°†ä¸ºæ­¤æ„Ÿåˆ°éª„傲。", [2] = "访问您的医院的病人比其它医院内的病人è¦å¿«ä¹å¾—多。", }, penalty = { [1] = "å‰åŽ»æ‚¨çš„åŒ»é™¢å°±è¯Šçš„ç—…äººæ„Ÿåˆ°éžå¸¸ä¸æ»¡ã€‚您必须改进æé«˜æ‰å¯ä»¥èŽ·å¾—å«ç”Ÿéƒ¨çš„å°Šé‡ã€‚", [2] = "åœ¨æ‚¨çš„åŒ»é™¢ä¸­æŽ¥å—æ²»ç–—的病人感到éžå¸¸ä¸é«˜å…´ã€‚您应多为病人的ç¦åˆ©ç€æƒ³ã€‚", }, }, emergencies = { regional_good = { [1] = "å«ç”Ÿéƒ¨è®¤è¯†åˆ°æ‚¨çš„医院在处ç†ç´§æ€¥äº‹ä»¶æ—¶æ¯”其它医院都è¦å¥½ï¼Œç‰¹æ­¤é¢å‘奖励。", }, penalty = { [1] = "您处ç†ç´§æ€¥äº‹ä»¶çš„èƒ½åŠ›å®žåœ¨å¤ªå·®äº†ã€‚å‰æ¥å°±è¯Šçš„æ€¥æ•‘病人并没有得到正确的治疗。", }, regional_bad = { [1] = "您的医院是本区域中处ç†ç´§æ€¥äº‹ä»¶æœ€å·®çš„。这都是您的过错。", }, award = { [1] = "æ­å–œï¼šç”±äºŽæ‚¨çš„åŠªåŠ›å’Œå“æœ‰æˆæ•ˆçš„紧急事件处ç†èƒ½åŠ›ï¼Œä½¿æ‚¨è£èŽ·è¯¥ç‰¹åˆ«å¤§å¥–ã€‚å¹²å¾—å¥½ã€‚", [2] = "您处ç†ç´§æ€¥äº‹ä»¶çš„能力éžå¸¸çªå‡ºã€‚由于您最佳的处ç†èƒ½åŠ›ï¼Œç‰¹æ­¤é¢å‘奖励。", }, }, gen_repairs = { awards = { [1] = "由于您的清æ´å·¥äººä½¿åŒ»é™¢å†…的仪器设备è¿è¡Œè‰¯å¥½ï¼Œç‰¹æ­¤é¢å‘ç‰¹åˆ«å¥–é‡‘ã€‚å¹²å¾—å¥½ã€‚å‡æœŸæ„‰å¿«ã€‚", [2] = "您的清æ´å·¥äººæ¯”其它医院的都è¦å¥½ã€‚这真是一件值得庆ç¥çš„事情。", [3] = "您的仪器维护得很好。这一切都离ä¸å¼€æ¸…æ´å·¥äººçš„努力。干得好。", }, penalty = { [1] = "您的清æ´å·¥äººåœ¨ç»´æŠ¤æœºå™¨æ–¹é¢è¡¨çް䏿˜¯å¾ˆå¥½ã€‚您应该让他们更多地关心维护ä¿å…»å·¥ä½œï¼Œæˆ–者å†å¤šé›‡ä½£å‡ å清æ´å·¥äººã€‚", [2] = "维修工作一团糟。您的清æ´å·¥äººæ— æ³•很好的照料å„ç§åŒ»ç–—仪器。", }, }, no_deaths = { trophies = { [1] = "由于您的医院在过去一年中没有å‘生任何病人死亡事件,特此é¢å‘安全奖。", [2] = "由于您的医院在过去一年中没有å‘生病人死亡事件,特此由生命å‘å±•ç»„ç»‡å‘æ‚¨é¢å¥–。", [3] = "由于您的医院在过去一年中é¿å…å‘生病人死亡事件,特此é¢å‘挽留妙手回春奖。", }, penalty = { [1] = "在过去一年中,您的医院的死亡人数始终很高。一定è¦å¤šåŠ æ³¨æ„。以åŽä¸€å®šè¦ç¡®ä¿ç—…人的存活。", [2] = "您的医院对于病人的å¥åº·ç®€ç›´å°±æ˜¯åœ¨å†’险。您应该治愈大é‡çš„ç—…äººï¼Œè€Œä¸æ˜¯è®©ä»–们加速死亡。", }, awards = { [1] = "ç”±äºŽæ‚¨çš„åŒ»é™¢åœ¨æœ¬å¹´åº¦ä¿æŒäº†å¾ˆä½Žçš„æ­»äº¡äººæ•°ï¼Œç‰¹æ­¤é¢å‘奖励。太棒了。", [2] = "由于您的天æ‰ç®¡ç†ä½¿åŒ»é™¢çš„æ­»äº¡äººæ•°è¾¾åˆ°æœ€ä½Žç‚¹ã€‚这真是令人高兴的事情。", }, regional = { [1] = "您的医院的死亡人数比其它医院都低。请接å—这个奖励。", }, }, rats_killed = { trophies = { [1] = "由于您的医院在过去一年中共击毙了%dåªè€é¼ ï¼Œç‰¹æ­¤é¢å‘除害奖。", [2] = "由于您高超的击鼠技巧共击毙è€é¼ %dåªï¼Œç‰¹æ­¤é¢å‘è”邦ç­é¼ å¥–。", [3] = "由于您的医院在过去一年中共击毙了%dåªè€é¼ ï¼Œç‰¹æ­¤é¢å‘è€é¼ å…‹æ˜Ÿå¥–。", }, }, happy_staff = { trophies = { [1] = "ç”±äºŽæ‚¨çš„åŒ»é™¢åœ¨è¿‡åŽ»ä¸€å¹´ä¸­ä½¿åŠªåŠ›å·¥ä½œçš„å‘˜å·¥ä¿æŒå¿«ä¹ï¼Œç‰¹æ­¤é¢å‘微笑奖。", [2] = "由于您的医院在过去一年中没有ä¸å¿«ä¹çš„员工,特此é¢å‘阿达尼学院奖。", [3] = "ç”±äºŽæ‚¨çš„åŒ»é™¢åœ¨è¿‡åŽ»ä¸€å¹´ä¸­ä½¿åŠªåŠ›å·¥ä½œçš„å‘˜å·¥ä¿æŒå¿«ä¹ï¼Œç‰¹æ­¤é¢å‘笑星奖æ¯ã€‚å¿«ä¹åœ°ç¬‘å§ï¼", }, awards = { [1] = "您的员工表示è¦å‘您é¢å¥–ã€‚ä»–ä»¬è¯´è™½ç„¶è¿˜æœ‰å¾ˆå¤šéœ€è¦æ”¹è¿›çš„地方,但您对待他们的æ€åº¦ä½¿ä»–们感到很快ä¹ã€‚", [2] = "您的员工感到能够为您工作是一件éžå¸¸å¿«ä¹çš„事情,他们的笑容挂在脸上。您真是一个超级管ç†äººæ‰ã€‚", }, penalty = { [1] = "您的员工希望您知é“他们éžå¸¸ä¸é«˜å…´ã€‚好的员工就是最有价值的资产。使他们快ä¹ï¼Œå¦åˆ™æ‚¨å°†åœ¨ä¸€å¤©ä¹‹å†…失去全部。", }, regional_good = { [1] = "您的员工比其它医院的员工都è¦å¿«ä¹ã€‚å¿«ä¹çš„员工æ„å‘³ç€æ›´é«˜çš„利润和更低的死亡率。å«ç”Ÿéƒ¨æ„Ÿåˆ°éžå¸¸é«˜å…´ã€‚", }, regional_bad = { [1] = "您的员工在上一年度中éžå¸¸ä¸å¹¸ã€‚您一定è¦åŠ ä»¥ç•™æ„。其它医院的员工都比您的员工快ä¹ã€‚", }, }, healthy_plants = { awards = { [1] = "由于您的医院在过去一年中是æ¤ç‰©ä¿æŒå¥åº·æˆé•¿ï¼Œç‰¹æ­¤é¢å‘èŒå£®æˆé•¿å¥–。", }, trophies = { [1] = "由于您的医院在过去å二个月中使所有æ¤ç‰©é•¿åŠ¿è‰¯å¥½ï¼Œç‰¹æ­¤ç›†æ ½æ¤ç‰©åä¼šå‘æ‚¨é¢å‘绿色å¥åº·å¥–。", [2] = "由于您的医院在过去一年中使所有æ¤ç‰©é•¿åŠ¿è‰¯å¥½ï¼Œç‰¹æ­¤é¢å‘绿色å人奖。", }, }, sold_drinks = { trophies = { [1] = "由于您的医院在过去一年中售出了大é‡çš„ç½è£…饮料,特此由全çƒç‰™åŒ»è”åˆä¼šå‘您é¢å¥–。", [2] = "由于您的医院在过去一年中å–出大é‡é¥®æ–™ï¼Œç‰¹æ­¤è½¯é¥®æ–™é›¶å”®ç»„ç»‡å‘æ‚¨é¢å‘清凉饮料奖。", [3] = "由于您的医院在过去一年中å–出大é‡è½¯é¥®æ–™ï¼Œç‰¹æ­¤ç”±DK饮料公å¸å‘您é¢å‘巧克力奖æ¯ã€‚", }, }, many_cured = { trophies = { [1] = "由于您的医院在过去一年中æˆåŠŸåœ°æ²»ç–—äº†å‡ ä¹Žæ‰€æœ‰ç—…äººï¼Œç‰¹æ­¤æ­å–œæ‚¨è£èŽ·çŽ›ä¸½æ²»ç–—å¥–ã€‚", [2] = "ç”±äºŽæ‚¨çš„åŒ»é™¢åœ¨è¿‡åŽ»ä¸€å¹´ä¸­æ²»æ„ˆäº†å¤§é‡æ‚£è€…ï¼Œå›½é™…æ²»ç–—åŸºé‡‘ä¼šç‰¹æ­¤å‘æ‚¨é¢å‘悬壶济世奖。", [3] = "ç”±äºŽæ‚¨çš„åŒ»é™¢åœ¨è¿‡åŽ»ä¸€å¹´ä¸­æ²»æ„ˆäº†å¤§é‡æ‚£è€…,特此é¢å‘疾病克星奖。", }, penalty = { [1] = "您的医院无法使病人得到很好的治疗。请关注并加以改进。", [2] = "您的医院对病人的治疗效果ä¸å¦‚其它医院。您使å«ç”Ÿéƒ¨å’Œæ‚¨è‡ªå·±éƒ½å声扫地。下ä¸ä¸ºä¾‹ã€‚", }, awards = { [1] = "æ­å–œæ‚¨åœ¨è¿‡åŽ»ä¸€å¹´ä¸­æ²»æ„ˆäº†è¿™ä¹ˆå¤šçš„ç—…äººã€‚å¾ˆå¤šäººéƒ½æ„Ÿè§‰ä¸é”™ï¼Œæ„Ÿè°¢æ‚¨çš„工作。", [2] = "由于您的医院治愈了比其它医院更多的病人,所以请接å—这个奖励。您的表现太棒了。", }, regional = { [1] = "由于您的医院治愈的病人数目比其它医院的总和还多,特此é¢å‘奖励。", }, }, pop_percentage = { awards = { [1] = "在过去一年中,您的医院在城镇人å£ä¸­èŽ·å¾—äº†å¾ˆé«˜çš„ä»½é¢ã€‚干得好。", [2] = "æ­å–œã€‚访问您的医院的居民人数超过了其它任何一个医院。", [3] = "干得好。访问您的医院的居民人数超过了其它医院的总和。", }, penalty = { [1] = "在过去一年中,您的医院在城镇人å£ä¸­èŽ·å¾—äº†å¾ˆé«˜çš„ä»½é¢ã€‚干得好。", [2] = "æ­å–œã€‚访问您的医院的居民人数超过了其它任何一个医院。", }, }, research = { regional_good = { [1] = "您的研究使您的医院始终紧跟最新å‘展。这是您的科研人员应得的奖励。", }, penalty = { [1] = "æ‚¨ç ”ç©¶å¼€å‘æ–°æ²»ç–—方案,仪器和è¯å“的速度太慢了。这将无法赶上时代的步ä¼ã€‚", }, regional_bad = { [1] = "本区域中的æ¯ä¸ªåŒ»é™¢åœ¨ç ”ç©¶æ–¹é¢éƒ½å¼ºäºŽæ‚¨çš„医院。这一点使å«ç”Ÿéƒ¨æ„Ÿåˆ°éœ‡æ€’。", }, awards = { [1] = "您的研究使您的医院始终紧跟最新å‘展。这是您的科研人员应得的奖励。", [2] = "在过去一年中,您比其它医院研究出更多的è¯å“和仪器设备。请接å—å«ç”Ÿéƒ¨é¢å‘的这个奖励。", }, }, reputation = "声望", cash = "现金", } menu_options_volume = { [50] = " 50%", [100] = " 100%", [30] = " 30%", [60] = " 60%", [90] = " 90%", [10] = " 10%", [20] = " 20%", [40] = " 40%", [80] = " 80%", [70] = " 70%", } menu_file_load = { [1] = " 存档一 ", [2] = " 存档二 ", [3] = " 存档三 ", [4] = " 存档四 ", [5] = " 存档五 ", [6] = " 存档六 ", [7] = " 存档七 ", [8] = " 存档八 ", } menu_file = { quit = " 退出", save = " 存储", load = " 读å–", restart = " 釿–°å¼€å§‹", } rooms_long = { ultrascan = "超级扫æä»ªæˆ¿é—´", research_room = "研究部门", general = "一般", gps_office = "一般诊断室", inflation = "充气房间", staffroom = "员工休æ¯å®¤", jelly_vat = "胶桶", scanner = "扫æä»ªæˆ¿é—´", emergency = "紧急事件", decontamination = "净化", corridors = "走廊", cardiogram = "心电图仪房间", ward = "病房", training_room = "培训室", psychiatric = "精神病诊断治疗室", operating_theatre = "手术中心", dna_fixer = "DNAä¿®å¤è£…ç½®", tongue_clinic = "舌头æ¾å¼›è¯Šæ²»æ‰€", hair_restoration = "æ¯›å‘æ¢å¤è£…ç½®", general_diag = "高级诊断室", pharmacy = "è¯æˆ¿", fracture_clinic = "骨折诊所", toilets = "洗手间", electrolysis = "电分解诊所", x_ray = "X光房间", blood_machine = "血液机器房间", } fax = { epidemic_result = { fine_amount = "政府宣布全国紧急状æ€ï¼Œå¹¶å¯¹æ‚¨ç½šæ¬¾%d。", close_text = "哈ï¼", hospital_evacuated = "会议决定åªèƒ½ç–散您的医院。", succeeded = { part_1_name = "å«ç”Ÿå·¡æŸ¥å‘˜å¬åˆ°äº†ä¼ é—»ï¼Œæ‚¨çš„医院正在处ç†ä¸¥é‡ç–¾ç—…%s。", part_2 = "然而他还没有能够找到è¯å®žä¼ é—»çš„è¯æ®ã€‚", }, compensation_amount = "政府决定奖励您%d作为补å¿è°£è¨€å¯¹æ‚¨åŒ»é™¢å£°èª‰æ‰€é€ æˆçš„æŸå¤±ã€‚", failed = { part_1_name = "å°è¯•掩盖病情,他们正é¢ä¸´ç€ä¼ æŸ“ç—…%s爆å‘。", part_2 = "医院中的员工已ç»åˆ¶æ­¢äº†ä¼ æŸ“ç—…å‘医院附近居民传播。", }, rep_loss_fine_amount = "æŠ¥çº¸å°†æ•´ç‰ˆæŠ¥é“æ­¤äº‹ã€‚æ‚¨çš„å£°æœ›å°†å¤§å¹…å—æŸã€‚å¦å¤–,还è¦ç¼´çº³ç½šæ¬¾%d。", }, vip_visit_query = { choices = { invite = "å‘贵宾å‘出邀请。", refuse = "找借å£é˜»æ­¢è´µå®¾è®¿é—®ã€‚", }, vip_name = "%s希望能够访问您的医院ï¼", }, vip_visit_result = { telegram = "电报ï¼", remarks = { good = { [1] = "医院ç»è¥å¾—太棒了。感谢您能够邀请我æ¥è®¿é—®ã€‚", [2] = "嗯。医院ç»è¥å¾—还å¯ä»¥ã€‚", [3] = "æˆ‘å¾ˆæ¬£èµæ‚¨çš„医院。", }, super = { [1] = "医院太棒了。下次我生病一定è¦åˆ°é‚£é‡ŒåŽ»å°±è¯Šã€‚", [2] = "那就是我访问的医院。", [3] = "é‚£æ˜¯ä¸€ä¸ªè¶…çº§åŒ»é™¢ã€‚å¹¶ä¸”æˆ‘æƒ³çŸ¥é“æ›´å¤šä¸€ç‚¹ã€‚", }, bad = { [1] = "我为什么烦æ¼ï¼Ÿè¿™æ¯”看一场æŒç»­4ä¸ªå°æ—¶çš„æ­Œå‰§å¥½å¤šäº†ï¼", [2] = "我为我所看到的感到æ¶å¿ƒã€‚这也是医院?胡说八é“ï¼", [3] = "我已ç»å—够了ï¼", }, mediocre = { [1] = "喔,有点差劲。您应多åšä¸€äº›æ”¹è¿›ã€‚", [2] = "喔,亲爱的。这个地方å¯ä¸æ€Žä¹ˆæ ·ã€‚", [3] = "这是一个比较一般的医院。但å¦ç™½åœ°è®²ï¼Œæˆ‘希望能够åšå¾—更好。", }, very_bad = { [1] = "真是一个垃圾。我è¦äº‰å–关闭它。", [2] = "我从没有è§è¿‡è¿™æ ·å¯æ€•的医院。真是丢人ï¼", [3] = "我被震惊了。这也能称为医院ï¼ç»™æˆ‘一点酒。", }, }, rep_boost = "您的声望在公众中是很好的。", vip_remarked_name = "%s访问医院结æŸåŽå‘表评论:", cash_grant = "您将得到奖金%d。", rep_loss = "您的声望因此å—到æŸå®³ã€‚", close_text = "感谢您访问医院。", }, disease_discovered_patient_choice = { need_to_build = "您必需建造一个%sæ‰èƒ½å¤„ç†è¯¥ç–¾ç—…。", need_to_employ = "雇佣一å%så°±å¯ä»¥å¤„ç†è¯¥æƒ…况。", what_to_do_question = "您打算怎样处ç†è¿™ä¸ªç—…人?", guessed_percentage_name = "您的员工正在å°è¯•治疗该病人。我们有%d%%的几率治愈该病:%s", choices = { send_home = "é€ç—…人回家。", research = "将病人é€åˆ°ç ”究部门。", wait = "让病人在医院中等一会儿。", }, disease_name = "å‘现了新情况。该疾病为%s", need_to_build_and_employ = "如果您建造了一个%s并雇佣了一å%s,您就能æˆåŠŸã€‚", can_not_cure = "您无法治疗该疾病。", }, emergency_result = { earned_money = "最大奖金é¢ä¸º$%d,您得到了$%d。", close_text = "点击这里退出。", saved_people = "您挽救了%dä¸ªç—…äººï¼Œæ€»å…±éœ€è¦æ²»æ„ˆ%d个。", }, disease_discovered = { discovered_name = "您的员工å‘çŽ°äº†ä¸€ç§æ–°çš„疾病。它是%s", need_to_employ = "雇佣一å%så°±å¯ä»¥å¤„ç†è¿™ç§å±æœºã€‚", need_to_build_and_employ = "如果您建造了一个%s并雇佣了一å%s,您就能æˆåŠŸã€‚", need_to_build = "您必需建造一个%sæ‰èƒ½å¤„ç†è¯¥ç–¾ç—…。", close_text = "æ–°å‘现了一ç§ç–¾ç—…。", can_cure = "您å¯ä»¥å¤„ç†è¿™ç§ç–¾ç—…。", }, emergency = { locations = { [1] = "赛澈化学è¯å“工厂。", [2] = "斯尼得大学。", [3] = "派拉奎特园艺中心。", [4] = "å±é™©ç‰©è´¨ç ”究机构。", [5] = "èŽ«ç†æ–¯èˆžè¹ˆå®¶å会。", [6] = "é’蛙与公牛酒店。", [7] = "大戴维殡葬馆。", [8] = "太å­åˆ¶é©åº—。", [9] = "伯特二手石化产å“商场。", }, num_disease = "%d个病人患有%s,他们需è¦ç´§æ€¥æ²»ç–—。", cure_possible_drug_name_efficiency = "æ‚¨å·²ç»æ‹¥æœ‰äº†è¦æ±‚的设备和技能。您拥有他们所需è¦çš„è¯å“。è¯å“%s的疗效为%d%%。", cure_not_possible_employ = "您将需è¦é›‡ä½£ä¸€å%s", cure_not_possible = "现在您还ä¸èƒ½æ²»ç–—è¿™ç§ç–¾ç—…。", cure_possible = "由于您拥有准备和技能,所以您应该å¯ä»¥å¤„ç†è¿™ä¸ªç´§æ€¥äº‹ä»¶ã€‚", choices = { accept = "好的。我已åšå¥½å‡†å¤‡å¤„ç†ç´§æ€¥äº‹ä»¶ã€‚", refuse = "ä¸ã€‚我拒ç»å¤„ç†è¿™ä¸ªç´§æ€¥äº‹ä»¶ã€‚", }, location = "在%så‘生了事故", cure_not_possible_build = "您将需è¦å»ºé€ ä¸€é—´%s", cure_not_possible_build_and_employ = "您将需è¦å»ºé€ ä¸€é—´%s并雇佣一å%s", bonus = "处ç†è¿™ä¸ªç´§æ€¥äº‹ä»¶çš„æœ€å¤§å¥–金é¢ä¸º%d。如果您失败了,则您的声望将大幅下é™ã€‚", }, debug_fax = { text4 = "FACTORS : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", text5 = "CONTRIBN : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d PERCENT", text3 = "FIGURES : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", text9 = "DISASTERS %d ALLOWED (MTHS) %d (%d)REDUCTION %d", close_text = "嗨,哈,哈ï¼", text1 = "BEST COUNT %d", text6 = "THE FOLLOWING FACTORS ARE ALSO APPLIED", text8 = "AMENITIES %d PEEPS HANDLED %d REDUCTION %d", text2 = "TOTAL PEOPLE IN HOSPITAL %d CHECKING AGAINST %d", text10 = "KILLS %d ALLOWED (MTHS) %d (%d) REDUCTION %d", text11 = "PEOPLE THIS MONTH %d", text7 = "REPUTATION: %d EXPECTED %d REDUCTION %d", }, epidemic = { cover_up_explanation_1 = "å¦‚æžœæ‚¨æƒ³è¦æŽ©ç›–ä¼ æŸ“ç—…ï¼Œæ‚¨å°†å¿…é¡»åœ¨æœ‰é™æ—¶é—´å†…,å³å«ç”Ÿå·¡æŸ¥å‘˜åˆ°æ¥ä¹‹å‰ï¼Œæ²»æ„ˆæ‰€æœ‰è¢«ä¼ æŸ“的病人。", cover_up_explanation_2 = "如果å«ç”Ÿå·¡æŸ¥å‘˜åˆ°è¾¾ï¼Œå¹¶å‘现了您正在试图掩盖传染病,则他将对您采å–严厉的惩罚。", choices = { cover_up = "在指定时间内且病人离开医院之å‰ï¼Œå°½é‡æ²»æ„ˆæ‰€æœ‰è¢«æ„ŸæŸ“的病人。", declare = "宣布一ç§ä¼ æŸ“病。支付罚款且åèª‰å—æŸã€‚", }, disease_name = "医生å‘现了传染病%s。", declare_explanation_fine = "如果您宣布出现传染病,则您将支付罚款%d,且åèª‰å—æŸã€‚所有病人将自动被接ç§ç–«è‹—。", }, diagnosis_failed = { choices = { send_home = "é€ç—…人回家。", take_chance = "å°è¯•治疗病人。", wait = "让病人多等待一会儿,您需è¦å¤šå»ºé€ ä¸€äº›è¯Šæ–­å®¤ã€‚", }, situation = "我们已ç»å¯¹è¯¥ç—…人å°è¯•了所有å¯ä¾›ä½¿ç”¨çš„æœºå™¨ï¼Œä½†æ˜¯ä»ç„¶æ²¡æœ‰å‘现病因。", what_to_do_question = "我们将怎样处置这个病人?", partial_diagnosis_percentage_name = "我们有%d%%的概率确定该病人所患疾病类型。", }, } drug_companies = { [1] = "良è¯å…¬å¸", [2] = "å医公å¸", [3] = "å°è¯ç‰‡å…¬å¸", [4] = "普芬公å¸", [5] = "欧米尼公å¸", } humanoid_name_ends = { [1] = "斯密斯", [2] = "å¨å…‹", [3] = "克利夫", [4] = "æ¡‘", [5] = "因格顿", [6] = "è´é‡Œ", [7] = "é¡¿", [8] = "æ¡‘", [9] = "æŽ", [10] = "伯利", [11] = "波姆", [12] = "å…°", [13] = "汉默", [14] = "希尔", [15] = "温", [16] = "莱特", [17] = "艾尔斯", [18] = "é¡¿", [19] = "蒙德", [20] = "曼", [21] = "爱尔顿", [22] = "ä¾", [23] = "æ‘©", [24] = "æ‘©å°”", [25] = "莱特", [26] = "æž—", } confirmation = { return_to_blueprint = "您定è¦è¿”回è“图模å¼å—?", restart_level = "确定è¦é‡æ–°å¼€å§‹è¿™ä¸ªä»»åŠ¡å—?", delete_room = "ç¡®å®šè¦æ‹†é™¤è¿™ä¸ªæˆ¿é—´å—?", quit = "确定è¦é€€å‡ºæ¸¸æˆå—?", overwrite_save = "该ä½ç½®å·²æœ‰æ¸¸æˆè¿›åº¦ã€‚是å¦è¦†ç›–?", sack_staff = "确定è¦è§£é›‡è¯¥å‘˜å·¥å—?", replace_machine = "ç¡®å®šè¦æ›´æ–°%s,并花费$%d?", } months = { [1] = "1 月", [2] = "2 月", [3] = "3 月", [4] = "4 月", [5] = "5 月", [6] = "6 月", [7] = "7 月", [8] = "8 月", [9] = "9 月", [10] = "10 月", [11] = "11 月", [12] = "12 月", } dynamic_info = { patient = { emergency = "紧急情况:%s", guessed_diagnosis = "å°è¯•诊断:%s", diagnosis_progress = "诊断过程", actions = { sent_to_other_hospital = "指派到其它医院", prices_too_high = "è´¹ç”¨å¤ªé«˜äº†ï¼æˆ‘è¦å›žå®¶äº†", waiting_for_treatment_rooms = "等待为我建造一间治疗室", dying = "快死了ï¼", no_diagnoses_available = "æ— æ³•è¯Šæ–­ï¼æˆ‘è¦å›žå®¶äº†", epidemic_sent_home = "被巡查员赶回家", cured = "治愈ï¼", waiting_for_diagnosis_rooms = "等待建造更多的诊断室", epidemic_contagious = "我有传染病", awaiting_decision = "等待您的决定", sent_home = "é£é€å›žå®¶", fed_up = "å—够了,è¦ç¦»å¼€", no_treatment_available = "æ— æ³•æ²»ç–—ï¼æˆ‘è¦å›žå®¶äº†", on_my_way_to = "在去%s的路上", queueing_for = "排队等待%s", }, diagnosed = "诊断:%s", }, health_inspector = "å«ç”Ÿå·¡æŸ¥å‘˜", vip = "æ¥è®¿è´µå®¾", object = { times_used = "使用次数%d", queue_size = "排队人数%d", strength = "力é‡%d", queue_expected = "å³å°†åŠ å…¥é˜Ÿä¼äººæ•°%d", }, staff = { ability = "能力", psychiatrist_abbrev = "精神分æž", actions = { going_to_repair = "å‰å¾€ç»´ä¿®%s", waiting_for_patient = "等待病人", wandering = "正在到处走动", }, tiredness = "疲劳", }, } introduction_texts = { level17 = "最åŽçš„è­¦å‘Šï¼æ—¶åˆ»å…³æ³¨æ‚¨çš„声望ï¼è¿™æ˜¯çœŸæ­£å¸å¼•ç—…äººå‰æ¥å°±è¯Šçš„关键。" .. "å¦‚æžœæ‚¨æ²¡æœ‰æ€æ­»å¤ªå¤šçš„ç—…äººï¼Œä¸”ä½¿å°±è¯Šç—…äººä¿æŒå¿«ä¹ï¼Œåˆ™ä¸å¿…太担心声望ï¼" .. "决定æƒå°±åœ¨æ‚¨çš„æ‰‹ä¸­ã€‚ç¥æ‚¨å¥½è¿ã€‚", level1 = "欢迎æ¥åˆ°æ‚¨çš„第一座医院ï¼//" .. "é¦–å…ˆè¦æ‘†æ”¾æŽ¥å¾…å°ï¼Œå»ºé€ ä¸€èˆ¬è¯Šæ–­å®¤ï¼Œå¹¶é›‡ä½£ä¸€å接待员和一å医生。" .. "éšåŽå°±å¯ä»¥ç­‰å¾…开张了。" .. "建造精神病诊断治疗室并雇佣一å精神病医生是一个好主æ„。" .. "è¯æˆ¿å’ŒæŠ¤å£«ä¹Ÿæ˜¯æ²»ç–—病人所必需的。" .. "建造一个充气机房间就å¯ä»¥æ²»ç–—头部肿胀患者。" .. "æ‚¨éœ€è¦æ²»æ„ˆ10ä¸ªç—…äººï¼Œå¹¶ä½¿å£°æœ›ä¿æŒåœ¨200以上。", level9 = "当填满了å«ç”Ÿéƒ¨çš„é“¶è¡Œå¸æˆ·å¹¶ä¸ºéƒ¨é•¿å¤§äººè´­ä¹°äº†ä¸€è¾†è½¿è½¦åŽï¼Œæ‚¨çŽ°åœ¨åˆè¦å¼€å§‹æ–°çš„工作了。" .. "在这里您è¦é¢å¯¹å¾ˆå¤šé—®é¢˜ã€‚" .. "åªæœ‰æ‹¥æœ‰è¶³å¤Ÿç»éªŒå……分的员工和房间,您æ‰èƒ½å¤Ÿé¡ºåˆ©è¿‡å…³ã€‚" .. "医院价值需è¦è¾¾åˆ°$200,000ï¼Œä¸”é“¶è¡Œå¸æˆ·ä¸Šè¦æœ‰$400,000。" .. "å¦‚æžœæ— æ³•è¾¾åˆ°ä¸Šè¿°è¦æ±‚,则无法胜利完æˆä»»åŠ¡ã€‚", level2 = "在该区域内还有一些其它的疾病。" .. "建造医院从而å¯ä»¥æ²»ç–—更多的病人,并应该考虑建造研究部门。" .. "è®°ä½ä¿æŒå†…部的清æ´ï¼Œä»Žè€Œä½¿å£°æœ›å°½å¯èƒ½åœ°é«˜ï¼æ‚¨å°†é‡åˆ°æ‚£æœ‰èˆŒå¤´æ¾å¼›ç—‡çš„病人,因此需è¦å»ºé€ èˆŒå¤´è¯Šæ²»æˆ¿é—´ã€‚" .. "您也å¯ä»¥å»ºé€ å¿ƒç”µå›¾æˆ¿é—´æ¥å¸®åŠ©è¯Šæ–­ç–¾ç—…ã€‚" .. "这些房间都需è¦ç»è¿‡ç ”ç©¶æ‰èƒ½å¤Ÿè¢«å»ºé€ ã€‚现在你å¯ä»¥è´­ä¹°å…¶å®ƒåœŸåœ°æ‰©å±•医院ï¼ä½¿ç”¨åŸŽé•‡åœ°å›¾å°±å¯ä»¥è´­ä¹°åœŸåœ°ã€‚" .. "目标是声望300,银行现金为10000,且治愈40个病人。", level7 = "在这里您将å—到å«ç”Ÿéƒ¨çš„密切监察,因此è¦åœ¨èµšé’±çš„åŒæ—¶ï¼ŒåŠªåŠ›æé«˜è‡ªå·±çš„声望。" .. "我们无法处ç†å¤ªå¤šçš„医疗事故ï¼è¿™å¯¹äºŽåŒ»é™¢çš„è¿è¥æ˜¯å分ä¸åˆ©çš„。" .. "确认所有员工都很快ä¹ï¼Œå¹¶ç¡®è®¤å·²ç»è´­ä¹°äº†æ‰€æœ‰éœ€è¦çš„仪器装备。" .. "声望需è¦è¾¾åˆ°600ï¼Œä¸”é“¶è¡Œé‡Œéœ€è¦æœ‰$200,000。", level5 = "医院将éžå¸¸ç¹å¿™ï¼Œå¤„ç†å„ç§å„样的病人。" .. "医生都是刚刚毕业的实习医生,因此需è¦å»ºé€ ä¸€é—´åŸ¹è®­å®¤å¯¹ä»–们进行培训,æé«˜èƒ½åŠ›ã€‚" .. "æ‚¨åªæœ‰3å专家å¯ä»¥å¸®åŠ©åŸ¹è®­è¿™äº›å‘˜å·¥ï¼Œå› æ­¤ä¸€å®šè¦è®©ä¸“å®¶å¿«ä¹ã€‚" .. "å¦å¤–è¦æ³¨æ„的是,医院的ä½ç½®ä¸æ˜¯å¾ˆå¥½ã€‚" .. "ç»å¸¸ä¼šå‘生地震。" .. "地震将对医院中的机器产生æŸå,从而影å“医院的è¿è¥ã€‚" .. "使您声望达到400以上,现金达到$50,000。å¦å¤–éœ€è¦æ²»æ„ˆ200个病人。", level4 = "使所有的病人快ä¹ï¼Œä¿æŒæ²»ç–—的高效率并尽é‡é™ä½Žæ­»äº¡äººæ•°ã€‚" .. "声望是å分é‡è¦çš„,因此尽é‡èµ¢å¾—更高的声望。" .. "ä¸è¦å¤ªå¤šæ‹…心收入情况ï¼å½“声望æé«˜äº†ï¼Œæ”¶å…¥ä¹Ÿè‡ªç„¶ä¼šæé«˜ã€‚" .. "您需è¦åŸ¹è®­æ‚¨çš„医生,拓宽他们的能力。" .. "这样他们就å¯ä»¥æ›´å¥½çš„为病人æœåŠ¡ã€‚" .. "胜利æ¡ä»¶æ˜¯å£°æœ›è¾¾åˆ°500以上。", level14 = "这里还有一个挑战ï¼ä¸€ä¸ªå……满惊奇的医院。" .. "如果您能够æˆåŠŸå®Œæˆè¿™ä¸ªä»»åŠ¡ï¼Œåˆ™æ‚¨å°†æˆä¸ºæ‰€æœ‰èƒœåˆ©è€…中的佼佼者。" .. "ä¸è¦è®¤ä¸ºå®Œæˆè¿™ä¸ªä»»åŠ¡å°±è±¡åƒè›‹ç³•一样,这将是您所é‡åˆ°çš„æœ€è‰°è‹¦çš„工作。" .. "ç¥æ‚¨å¥½è¿ï¼", level15 = "å¥½çš„ï¼Œä¸‹é¢æ˜¯ç®¡ç†åŒ»é™¢çš„一些技巧。//" .. "医生需è¦å„ç§å¸®åŠ©æ¥è¯Šæ–­ç—…人。您å¯ä»¥" .. "建造å¦ä¸€ä¸ªè¯Šæ–­ç±»æˆ¿é—´ï¼Œä¾‹å¦‚高级诊断室。", level8 = "éœ€è¦æ‚¨æ¥å»ºé€ ä¸€åº§é«˜æ•ˆçš„医院。" .. "很多人都无事å¯åšï¼Œå› æ­¤éœ€è¦é€‚é‡çš„è£å‘˜ä»¥ä¿æŒé«˜æ•ˆã€‚" .. "è®°ä½æ²»æ„ˆç—…人是很é‡è¦çš„一件事情,但是您更è¦ä»Žä¸­èµšé’±ã€‚" .. "让æ¶å¿ƒå‘•å的病人é è¿‘清æ´å·¥äººã€‚" .. "需è¦èµšå–$300,000å°±å¯ä»¥è¿‡å…³ã€‚", level13 = "æ‚¨çš„é«˜è¶…ç®¡ç†æŠ€èƒ½è¢«ç‰¹æ®Šæœºå¯†éƒ¨é—¨èŽ·çŸ¥ã€‚" .. "他们将呿‚¨æé«˜ç‰¹åˆ«å¥–金,因为他们有一座被è€é¼ å›°æ‰°çš„åŒ»é™¢éœ€è¦æœ‰æ•ˆç®¡ç†ã€‚" .. "æ‚¨å¿…é¡»æ€æ­»å°½å¯èƒ½å¤šçš„è€é¼ ï¼Œå¹¶è®©æ¸…æ´å·¥äººæ‰“扫干净。" .. "接å—这个任务?", level16 = "当对病人完æˆè¯Šæ–­åŽï¼Œéœ€è¦å»ºé€ å¤„ç†å’Œæ²»ç–—类房间完æˆå¯¹ç—…人的治疗工作。å¯ä»¥ä»Ž" .. "å»ºé€ è¯æˆ¿å¼€å§‹ã€‚åœ¨è¯æˆ¿ä¸­éœ€è¦ä¸€å护士分é…å„ç§è¯å“。", level6 = "使用您的所有知识æ¥å»ºé€ ä¸€ä¸ªè¿è¡Œå¹³ç¨³çš„医院,从而å¯ä»¥èµšå–利润并处ç†ä»»ä½•问题。" .. "æ‚¨éœ€è¦æ³¨æ„一点,医院周围的空气对细èŒç¹æ®–,传染病æµè¡Œéžå¸¸é€‚宜。" .. "å¦‚æžœæ‚¨æ²¡æœ‰ä¿æŒåŒ»é™¢çš„æ¸…æ´ï¼Œåˆ™å°†é¢å¯¹ä¼ æŸ“ç—…çš„æµè¡Œã€‚" .. "赚å–$150,000,并使医院价值超过$140,000。", level12 = "您现在é‡åˆ°äº†æœ€å¤§çš„æŒ‘战。" .. "我们为您的æˆåŠŸæ„Ÿåˆ°ç”±è¡·åœ°é«˜å…´ï¼Œå«ç”Ÿéƒ¨ä¸ºæ‚¨å‡†å¤‡äº†ä¸€é¡¹é¡¶çº§å·¥ä½œï¼›ä»–ä»¬éœ€è¦æœ‰äººå»ºé€ å¦ä¸€ä¸ªè¶…çº§åŒ»é™¢ï¼Œèµšé’±çš„åŒæ—¶èŽ·å–较高的声望。" .. "您å¯ä»¥è´­ä¹°ä»»ä½•需è¦çš„土地,治疗å„ç§ç–¾ç—…赢得å„ç§å¥–励。" .. "动心了å—?" .. "赚å–$650,000,治愈750个病人,使声望达到800å°±å¯ä»¥èƒœåˆ©è¿‡å…³ã€‚", level3 = "这次您将在一个富裕地区建造医院。" .. "å«ç”Ÿéƒ¨å¸Œæœ›æ‚¨èƒ½å¤Ÿåœ¨è¿™é‡Œèµšå–更多的利润。" .. "å¼€å§‹æ—¶æ‚¨è¢«è¦æ±‚获å–好的声望,但是一旦医院步入正轨,就å¯ä»¥é›†ä¸­ç²¾åŠ›èµšå–æ›´å¤šçš„钱。" .. "有å¯èƒ½ä¼šå‘生紧急事件。" .. "也就是说一次会有大é‡ç—…人就诊,且他们的病情都一样。" .. "在时间é™åˆ¶å†…如果能够治愈他们,则ä¸ä»…å¯ä»¥æ‹¿åˆ°å¥–金,声望也会æé«˜ã€‚" .. "一些疾病如猫王综åˆç—‡ç­‰æœ‰å¯èƒ½å‘生,因此最好建造一间手术中心和附属病房。" .. "胜利æ¡ä»¶æ˜¯èµšå–$20,000。", level10 = "éšç€æ‚¨çš„ç»éªŒä¸æ–­å¢žé•¿ï¼Œå«ç”Ÿéƒ¨è¦æ±‚您集中精力æé«˜è¯å“的治疗效果。" .. "有人对您颇有微辞,为此您必须使所有的è¯ç‰©éƒ½éžå¸¸æœ‰æ•ˆã€‚" .. "å¦å¤–,一定è¦é™ä½ŽåŒ»ç–—事故的å‘生次数,å‡å°‘死亡人数。" .. "作为æç¤ºï¼Œæ‚¨éœ€è¦ä¸ºå»ºé€ èƒ¶æ¡¶ç•™ä¸€äº›ç©ºåœ°ã€‚" .. "使所有è¯ç‰©çš„疗效都达到80%%,声望达到650ä¸”åœ¨é“¶è¡Œå¸æˆ·ä¸Šæœ‰$500,000,这样就å¯ä»¥èƒœåˆ©è¿‡å…³ã€‚", level11 = "现在您有机会建造一座终æžåŒ»é™¢ã€‚" .. "该地区享有æžé«˜çš„声望,因此å«ç”Ÿéƒ¨å¸Œæœ›èƒ½å¤Ÿçœ‹åˆ°æœ€å¥½çš„医院建造在这里。" .. "我们希望您能够赚å–大é‡çš„金钱,获得很高的声望,并能够æˆåŠŸåœ°å¤„ç†ä»»ä½•事件。" .. "这是一项éžå¸¸é‡è¦çš„工作。" .. "è¿™éœ€è¦æ‚¨çš„努力工作。" .. "注æ„ä¸€ç‚¹ï¼Œè¯¥åŒºåŸŸå¸¸å¸¸ä¼šçœ‹åˆ°ä¸æ˜Žé£žè¡Œç‰©ã€‚因此请让您的员工åšå¥½å‡†å¤‡è¿ŽæŽ¥ä¸é€Ÿä¹‹å®¢ã€‚" .. "您的医院价值需è¦è¾¾åˆ°$240,000ï¼Œåœ¨é“¶è¡Œå¸æˆ·å†…需è¦$500,000,且声望需è¦è¾¾åˆ°700。", level18 = "", } humanoid_name_starts = { [1] = "欧得", [2] = "黑尔", [3] = "安德", [4] = "本", [5] = "ç­", [6] = "比尔", [7] = "ç»´", [8] = "瓦特", [9] = "å®å¾—", [10] = "金", [11] = "å·´", [12] = "派特", [13] = "曼", [14] = "å®è‰¾", [15] = "沃", [16] = "æ°å…‹", [17] = "å…‹æ¥ä¼¯", [18] = "费什", [19] = "瓦特", [20] = "米尔", [21] = "白", [22] = "芬", [23] = "里奇", [24] = "斯科特", [25] = "伯尔", [26] = "派克", [27] = "ç§‘", [28] = "维特", [29] = "比æ©", [30] = "宿©", [31] = "伯格", [32] = "怀特", [33] = "ç§‘å°”", } transactions = { severance = "隔离花费", research = "研究花费", eoy_trophy_bonus = "年度物å“奖励", buy_object = "购买物å“", cure_colon = "治疗:", epidemy_coverup_fine = "éšçž’传染病罚款", final_treat_colon = "最终治疗:", jukebox = "收入:音ä¹ç›’", loan_interest = "贷款利率", overdraft = "逿”¯åˆ©çއ", wages = "工资", loan_repayment = "贷款å¿è¿˜", personal_bonus = "支付个人奖金", drug_cost = "è¯å“花费", cure = "治愈", heating = "供暖费", treat_colon = "治疗:", compensation = "政府赔å¿é‡‘", epidemy_fine = "传染病罚款", buy_land = "购买土地", research_bonus = "研究奖金", general_bonus = "支付一般奖金", deposit = "治疗收入", eoy_bonus_penalty = "年度奖金/罚款", cheat = "骗钱", drinks = "收入:饮料机", vaccination = "接ç§ç–«è‹—", advance_colon = "进阶:", vip_award = "贵宾现金奖励", hire_staff = "雇佣员工", bank_loan = "银行贷款", machine_replacement = "æ›´æ¢æœºå™¨èŠ±è´¹", emergency_bonus = "支付紧急事件奖金", build_room = "建造房屋", insurance_colon = "ä¿é™©è´¹ï¼š", sell_object = "å–出物å“", } object = { chair = "椅å­", sofa = "æ²™å‘", operating_table = "手术å°", bed2 = "床", bench = "长椅", scanner = "扫æä»ª", couch = "é•¿æ²™å‘æ¤…", blood_machine = "血液机器", table1 = "桌å­", video_game = "电视游æˆ", lamp = "ç¯", op_sink2 = "洗手池", door = "房门", auto_autopsy = "自动验尸仪", reception_desk = "接待å°", hair_restorer = "æ¯›å‘æ¢å¤æœº", projector = "放映机", crash_trolley = "è¯Šæ–­ä»ªå™¨å°æŽ¨è½¦", tv = "电视机", ultrascanner = "超级扫æä»ª", surgeon_screen = "外科å±é£Ž", litter_bomb = "垃圾炸弹", inflator = "充气机", table2 = "桌å­", desk = "办公桌", pool_table = "å°çƒæ¡Œ", x_ray_viewer = "Xå…‰é€è§†ä»ª", radiation_shield = "射线防护", bed = "床", swing_door2 = "转门", console = "控制å°", op_sink1 = "洗手池", bookcase = "书柜", drinks_machine = "饮料机", comfortable_chair = "舒适座椅", skeleton = "骨骼模型", computer = "计算机", bin = "垃圾桶", pharmacy_cabinet = "åŒ»è¯æŸœ", radiator = "æš–æ°”", cast_remover = "石è†å‰¥ç¦»è£…ç½®", atom_analyser = "原å­åˆ†æžä»ª", plant = "æ¤ç‰©", jelly_moulder = "胶桶", cardio = "心电图仪", toilet = "厕所", electrolyser = "电分解机器", fire_extinguisher = "ç­ç«å™¨", bed3 = "床", swing_door1 = "转门", lecture_chair = "演讲座ä½", screen = "å±é£Ž", toilet_sink = "洗手池", shower = "æ·‹æµ´", gates_of_hell = "地狱之门", entrance_right = "左入å£", entrance_left = "å³å…¥å£", slicer = "舌头治疗机", dna_fixer = "DNAä¿®å¤è£…ç½®", x_ray = "X光机", cabinet = "文件柜", } letter = { [1] = { [1] = "亲爱的%s//", [2] = "å¤ªä»¤äººæƒŠå¥‡äº†ï¼æ‚¨å·²ç»æˆåŠŸåœ°ç»è¥äº†è¿™ä¸ªåŒ»é™¢ã€‚å«ç”Ÿéƒ¨çš„官员想è¦çŸ¥é“æ‚¨æ˜¯å¦æœ‰å…´è¶£æŽ¥æ‰‹ä¸€ä¸ªå¤§é¡¹ç›®ã€‚我们认为有一个工作对您很适åˆã€‚薪水将达到$%d。怎么样。//", [3] = "您是å¦å¯¹%s医院的工作感兴趣?", }, [2] = { [1] = "亲爱的%s//", [2] = "å¤ªæ£’äº†ï¼æ‚¨çš„医院ç»è¥å¾—å¾ˆå¥½ã€‚æˆ‘ä»¬åˆæœ‰äº†ä¸€äº›æ–°çš„任务如果您喜欢新的挑战,å¯ä»¥æŽ¥å—这项任务。您ä¸è¦å‹‰å¼ºï¼Œä½†è¿™é¡¹å·¥ä½œç¡®å®žå¾ˆé€‚åˆæ‚¨ã€‚薪水是$%d//", [3] = "您希望接管%s医院å—?", }, [3] = { [1] = "亲爱的%s//", [2] = "在您接管这座医院期间,管ç†éžå¸¸æˆåŠŸã€‚å› æ­¤ï¼Œæˆ‘ä»¬å¯¹æ‚¨å¯„äºˆåŽšæœ›ï¼Œå¹¶ä¸ºæ‚¨æ‰¾åˆ°äº†ä¸€ä¸ªæ–°çš„å·¥ä½œã€‚è–ªæ°´å°†è¾¾åˆ°$%dï¼ŒåŒæ—¶æˆ‘们也希望您喜欢新的挑战。//", [3] = "您希望接手%s医院å—?", }, [4] = { [1] = "亲爱的%s//", [2] = "æ­å–œï¼éƒ¨é—¨å®˜å‘˜å¯¹æ‚¨çš„能力赞ä¸ç»å£ã€‚您是å«ç”Ÿéƒ¨çš„第一高手。我们觉得您一定喜欢更困难的工作。您的薪水将达到$%d,但决定æƒåœ¨æ‚¨æ‰‹ä¸­ã€‚//", [3] = "æ‚¨æ˜¯å¦æ„¿æ„在%s医院工作?", }, [5] = { [1] = "亲爱的%s//", [2] = "æ‚¨å¥½ã€‚æˆ‘ä»¬å°Šé‡æ‚¨ä¸å¸Œæœ›ç¦»å¼€è¿™ä¸ªè¿·äººçš„医院,但是æé†’您è¦ä»”细考虑。您的薪水将达到$%d,如果您愿æ„到其它医院工作并将其è¿è¡Œå¾—很好。//", [3] = "æ‚¨çŽ°åœ¨æ˜¯å¦æ„¿æ„移动到%s医院?", }, [6] = { [1] = "亲爱的%s//", [2] = "æ­å–œã€‚我们ç†è§£æ‚¨åœ¨è¿™ä¸ªå¯çˆ±çš„è¿è¡Œè‰¯å¥½åŒ»é™¢ä¸­å·¥ä½œçš„å¿«ä¹å¿ƒæƒ…,但是我们认为您现在应该为未æ¥è€ƒè™‘。您的薪水将达到$%d,如果您决定调任。这是很值得考虑的。//", [3] = "æ‚¨æ˜¯å¦æ„¿æ„接手%s医院?", }, [7] = { [1] = "亲爱的%s//", [2] = "您好ï¼å«ç”Ÿéƒ¨æƒ³è¦çŸ¥é“您ç»è¿‡é‡æ–°è€ƒè™‘是å¦å†³å®šä»ç„¶ç•™åœ¨å½“å‰çš„åŒ»é™¢ä¸­ã€‚æˆ‘ä»¬å¾ˆæ¬£èµæ‚¨çŽ°åœ¨é‚£ä¸ªå¯çˆ±çš„åŒ»é™¢ï¼Œä½†æˆ‘ä»¬è§‰å¾—æ‚¨å¦‚æžœæ„¿æ„æŽ¥å—这个æžå¯ŒæŒ‘战性的工作,也一定能干得很好,并且您的薪水将达到$%d。//", [3] = "æ‚¨æ˜¯å¦æ„¿æ„接手%s医院?", }, [8] = { [1] = "亲爱的%s//", [2] = "您好。您å¦å®šäº†æˆ‘们上一å°ä¿¡ä¸­æä¾›çš„æ–°åŒ»é™¢ï¼Œä»¥åŠè–ªæ°´$%d。我们觉得ä¸è®ºæ€Žæ ·ï¼Œæ‚¨å¿…须釿–°è€ƒè™‘这个决定。我们已ç»ä¸ºæ‚¨å‡†å¤‡äº†ä¸€ä¸ªå¾ˆå¥½çš„工作。//", [3] = "æ‚¨æ˜¯å¦æ„¿æ„接手%s医院?怎么样?", }, [9] = { [1] = "亲爱的%s//", [2] = "æ‚¨å·²ç»æˆåŠŸåœ°è¯æ˜Žäº†è‡ªå·±æ˜¯åŒ»å­¦ç•Œæœ‰å²ä»¥æ¥æœ€æ£’的管ç†è€…。这样的æˆå°±ä¸€å®šè¦ç»™äºˆå¥–励,因此我们决定任命您为所有医院的至尊主席。这是一项光è£çš„工作,且薪水å¯ä»¥è¾¾åˆ°$%d。ä¸è®ºæ‚¨èµ°åˆ°é‚£é‡Œï¼Œéƒ½å°†å—到人们的热烈欢迎。//", [3] = "æ„Ÿè°¢æ‚¨çš„åŠªåŠ›å·¥ä½œã€‚å¸Œæœ›æ‚¨å¥½å¥½äº«å—æœªæ¥çš„åŠé€€ä¼‘生活。//", [4] = "", }, [10] = { [1] = "亲爱的%s//", [2] = "æ­å–œæ‚¨åœ¨æˆ‘们指派的æ¯ä¸ªåŒ»é™¢ä¸­çš„æˆåŠŸç®¡ç†ã€‚您的æˆåŠŸè¡¨çŽ°ä½¿æ‚¨å¯ä»¥è‡ªç”±å‡ºå…¥ä¸–界å„大城市。您将获得退休金$%d,å†åŠ ä¸Šä¸€è¾†è½¿è½¦ï¼Œæˆ‘ä»¬å¸Œæœ›æ‚¨åœ¨æ—…é€”ä¸­èƒ½å¤Ÿä¿ƒè¿›å„ä¸ªåŒ»é™¢ç®¡ç†æ°´å¹³çš„æé«˜ã€‚//", [3] = "我们都为您感到骄傲。我们中间æ¯ä¸ªäººéƒ½ä¸ºæ‚¨æŒ½æ•‘生命感到由衷的感谢。//", [4] = "", }, [11] = { [1] = "亲爱的%s//", [2] = "您的工作å分æˆåŠŸï¼Œæˆ‘ä»¬ä»Žæ‚¨èº«ä¸ŠèŽ·å¾—äº†çµæ„Ÿã€‚谢谢您管ç†äº†è¿™ä¹ˆå¤šä¸ªåŒ»é™¢ï¼Œå¹¶ä½¿å®ƒä»¬éƒ½è¿è¡Œå¾—很出色。我们将给予您终身工资$%d,并æä¾›æ”¿åºœæ•žè“¬è½¿è½¦ä½¿æ‚¨å¯ä»¥ä»Žä¸€ä¸ªåŸŽå¸‚到å¦ä¸€ä¸ªåŸŽå¸‚,å‘表演讲告诉公众您是怎样在这么短的时间内达到如此æˆå°±ã€‚//", [3] = "您是所有人的榜样,毫无例外,世界上æ¯ä¸ªäººéƒ½ä»¥æ‚¨ä¸ºè£ã€‚//", [4] = "", }, [12] = { [1] = "亲爱的%s//", [2] = "您的æˆå°±ä½¿æ‚¨æˆä¸ºæœ€å¥½çš„医院管ç†è€…。å«ç”Ÿéƒ¨å°†å‘您æä¾›$%d作为奖励,并å¬å¼€åº†ç¥ä¼šã€‚整个世界都在为您沸腾,太棒了ï¼//", [3] = "è¯·æŽ¥å—æˆ‘们的安排。如果您ä¸å†å¸Œæœ›è¾›è‹¦å·¥ä½œï¼Œæˆ‘们将呿‚¨æä¾›ä¸€è¾†è½¿è½¦ï¼Œä¸”无论走到那里,都有警察为您开路。//", [4] = "", }, } high_score = { categories = { deaths = "死亡人数", total_value = "总价值", money = "最富有", cures = "治愈人数", visitors = "访问者最多", staff_number = "员工数目最多", cure_death_ratio = "医治无效死亡率", patient_happiness = "顾客满æ„", staff_happiness = "员工满æ„", salary = "工资最高", clean = "最干净", }, player = "玩家", score = "分数", pos = "忬¡", best_scores = "è£èª‰å ‚", worst_scores = "耻辱堂", killed = "æ€æ­»ç—…人数目", } menu_file_save = { [1] = " 存档一 ", [2] = " 存档二 ", [3] = " 存档三 ", [4] = " 存档四 ", [5] = " 存档五 ", [6] = " 存档六 ", [7] = " 存档七 ", [8] = " 存档八 ", } build_room_window = { pick_room_type = "选择房间类型", pick_department = "选择部门", cost = "花费:", } menu = { debug = "除错", display = "显示", file = "文件", options = "选项", charts = "图表", } menu_display.shadows = " å½±å­ " menu_display.mcga_lo_res = " MCGA低分辨率 " cheats_window.cheats.earthquake = "制造地震" confirmation.maximum_screen_size = "你使用的分辨率比 3000 x 2000 大。大的分辨率是å¯è¡Œçš„,但是è¦ç»´æŒä¸€ä¸ªå¯ä»¥æŽ¥å—的帧率你需è¦å¥½ç‚¹çš„硬件。是å¦ç»§ç»­ï¼Ÿ" confirmation.music_warning = "鏿“‡MP3檔為你的音樂之å‰ï¼Œä½ éœ€è¦æœ‰ smpeg.dll 或者你的作業系統的版本,å¦å‰‡ä½ åœ¨éŠæˆ²è£¡ä¸æœƒæœ‰ä»»ä½•音樂。是å¦ç¹¼çºŒ?" menu_options_wage_increase.deny = " æ‹’ç» " menu_options_wage_increase.grant = " å…许 " tooltip.options_window.select_language = "选择语言" tooltip.options_window.select_resolution = "选择分辨率" tooltip.options_window.language_dropdown_item = "选择 %s 为语言" tooltip.options_window.audio_button = "开关所有的声音" tooltip.options_window.resolution = "在此分辨率下è¿è¡Œæ¸¸æˆ" tooltip.options_window.audio_toggle = "开关" tooltip.options_window.fullscreen = "應該在全å±é‚„æ˜¯çª—å£æ¨¡å¼é‹è¡Œ" tooltip.options_window.apply = "应用此分辨率" tooltip.options_window.cancel = "å–æ¶ˆ" tooltip.options_window.folder_button = "文件夹选项" tooltip.options_window.customise_button = "更多å¯ä»¥æ”¹å˜æ¸¸æˆä½“验的选项" tooltip.cheats_window.cheats.earthquake = "制造地震" tooltip.new_game_window.difficulty = "选择游æˆéš¾åº¦" tooltip.new_game_window.player_name = "输入你游æˆä¸­çš„åå­—" tooltip.new_game_window.start = "使用当å‰è®¾ç½®å¼€å§‹æ¸¸æˆ" tooltip.update_window.download = "å‰å¾€ä¸‹è½½é¡µé¢ä¸‹è½½CorsixTH" tooltip.update_window.ignore = "忽略这次更新。你将在下次å¯åЍCorsixTHæ—¶å†æ¬¡è¢«é€šçŸ¥" tooltip.folders_window.browse_font = "寻找å¦ä¸€ä¸ªå­—体 ( 现在的ä½ç½®: %1% )" tooltip.folders_window.screenshots_location = "å±å¹•æˆªå›¾é»˜è®¤å’Œè®¾ç½®æ–‡ä»¶åœ¨ä¸€èµ·ã€‚å¦‚æžœä¸æƒ³è¿™æ ·ï¼Œé€‰æ‹©ä½ æƒ³å­˜å‚¨å±å¹•截图的ä½ç½®ã€‚" tooltip.folders_window.reset_to_default = "é‡ç½®åˆ°é»˜è®¤é€‰é¡¹" tooltip.folders_window.back = "关闭åŠè¿”回选项èœå•" tooltip.folders_window.music_location = "选择存储MP3文件的ä½ç½®. 此目录必须已ç»å­˜åœ¨." tooltip.folders_window.font_location = "选择å¯ä»¥æ˜¾ç¤ºä½ çš„语言所需Unicode字体的ä½ç½®,如果没有指定,你将ä¸èƒ½ä½¿ç”¨åŽŸæ¸¸æˆæä¾›å­—ä½“ä¹‹å¤–çš„è¯­è¨€,例如中文和俄语.(你一定已ç»é€‰äº†,è¦ä¸æ€Žä¹ˆå¯ä»¥çœ‹åˆ°è¿™å¥è¯å‘¢?)" tooltip.folders_window.savegames_location = "游æˆå­˜æ¡£é»˜è®¤å’Œè®¾ç½®æ–‡ä»¶åœ¨ä¸€èµ·ã€‚å¦‚æžœä¸æƒ³è¿™æ ·ï¼Œé€‰æ‹©ä½ æƒ³å­˜å‚¨æ¸¸æˆå­˜æ¡£çš„ä½ç½®ã€‚" tooltip.folders_window.browse_data = "寻找主题医院安装ä½ç½® ( ç¾åœ¨çš„ä½ç½®: %1% )" tooltip.folders_window.browse = "寻找文件夹的ä½ç½®" tooltip.folders_window.browse_screenshots = "寻找å¦ä¸€ä¸ªå‚¨å­˜å±å¹•截图的ä½ç½® ( 现在的ä½ç½®: %1% )" tooltip.folders_window.browse_music = "寻找å¦ä¸€ä¸ªå­˜å‚¨éŸ³ä¹çš„ä½ç½® ( 现在的ä½ç½®: %1% )" tooltip.folders_window.no_font_specified = "没有指定字体的ä½ç½®ï¼" tooltip.folders_window.not_specified = "没有指定文件夹ä½ç½®ï¼" tooltip.folders_window.browse_saves = "寻找å¦ä¸€ä¸ªå‚¨å­˜æ¸¸æˆå­˜æ¡£çš„ä½ç½® ( 现在的ä½ç½®: %1% ) " tooltip.folders_window.default = "默认ä½ç½®" tooltip.folders_window.data_location = "需è¦ç”¨æ¥è¿è¡ŒCorsixTH的主题医院的ä½ç½®" tooltip.customise_window.aliens = "因为缺少动画,默认设置下外星人DNA病人åªä¼šä»Žç´§æ€¥äº‹ä»¶ä¸­æ¥. è¦åœ¨ç´§æ€¥äº‹ä»¶ä»¥å¤–å…许有外星人DNA的病人æ¥ä½ çš„æ„æ„¿,请关闭此选项。" CorsixTH-0.61/CorsixTH/Lua/languages/spanish.lua000066400000000000000000002124661321660673500215310ustar00rootroot00000000000000--[[ Copyright (c) 2016 Víctor González a.k.a. "mccunyao" Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Language("Castellano", "Spanish", "es", "spa", "esp", "sp") Inherit("english") Inherit("original_strings", 4) ------------------------------- OVERRIDE ---------------------------------- adviser.warnings.money_low = "Te estás quedando sin dinero." tooltip.graphs.reputation = "Cambiar reputación" tooltip.status.close = "Cerrar pantalla de estado" -- tooltip.staff_list.next_person, prev_person is rather next/prev page (also in german, maybe more languages?) tooltip.staff_list.next_person = "Mostrar la página siguiente" tooltip.staff_list.prev_person = "Mostrar la página anterior" tooltip.status.reputation = "Tu reputación no debe estar por debajo de %d. Actualmente tienes %d" tooltip.status.balance = "No debes tener menos de %d $ en el banco. Actualmente tienes %d" -- Improve tooltips in staff window to mention hidden features tooltip.staff_window.face = "Rostro de la persona - pulsa para abrir pantalla de recursos." tooltip.staff_window.center_view = "Botón izquierdo para fijarse en la persona, botón derecho para rotar entre los miembros del personal." -- These strings are missing in some versions of TH (unpatched?) confirmation.restart_level = "¿Seguro que quieres reiniciar el nivel?" -- TODO adviser.multiplayer.objective_completed -- TODO adviser.multiplayer.objective_failed fax.emergency.num_disease = "Hay %d personas con %s y necesitan ser atendidas inmediatamente." tooltip.handyman_window.close = "Cerrar ventana" tooltip.machine_window.close = "Cerrar ventana" tooltip.queue_window.close = "Cerrar ventana" tooltip.jukebox.rewind = "Rebobinar reproductor de música" tooltip.jukebox.loop = "El reproductor de música funciona continuamente" tooltip.jukebox.stop = "Parar reproductor de música" tooltip.jukebox.close = "Cerrar reproductor de música" tooltip.jukebox.current_title = "Reproductor de música" tooltip.jukebox.play = "Encender reproductor de música" tooltip.jukebox.fast_forward = "Avance rápido del reproductor de música" tooltip.patient_window.close = "Cerrar ventana" tooltip.staff_window.close = "Cerrar ventana" tooltip.build_room_window.close = "Salir de esta ventana y volver al juego" misc.hospital_open = "Hospital abierto" misc.save_success = "Partida guardada correctamente" misc.save_failed = "ERROR: No se ha podido guardar la partida" misc.out_of_sync = "Partida desincronizada" -- Some overrides as original texts were too long see issue 1355 MarkL high_score = { categories = { deaths = "FALLECIMIENTOS", total_value = "VALOR TOTAL", money = "RIQUEZA", cures = "CURACIONES", visitors = "VISITANTES", staff_number = "PLANTILLA", cure_death_ratio = "PROPORCION", patient_happiness = "CLIENTES CONTENTOS", staff_happiness = "PERSONAL CONTENTO", salary = "SUELDO MAS ALTO", clean = "LIMPIEZA", }, player = "JUGADOR", score = "PUNTOS", pos = "POS", best_scores = "TABLA DEL HONOR", worst_scores = "TABLA DE LA VERGUENZA", killed = "Muerto" } --String text gets outside of window confirmation.quit = "¿Seguro que quieres salir del juego? " --Typos found on the official Spanish translation tooltip.rooms.dna_fixer = "El médico usa el Reparador de ADN para curar a los pacientes con ADN alienígena" diseases.broken_heart.cause = "Causa - alguien más rico, más joven y más delgado que el paciente." fax.emergency.locations[1] = "Planta química González" fax.emergency.locations[3] = "Centro de plantas acuáticas" fax.emergency.locations[5] = "Congreso de bailarines rusos" fax.emergency.locations[8] = "La casa del curry" fax.emergency.locations[9] = "Emporio petroquímico usado Díaz y Díaz" fax.epidemic.cover_up_explanation_2 = "Si un inspector sanitario te visita y encuentra una epidemia encubierta tomará medidas drásticas en tu contra." fax.epidemic.disease_name = "Tus médicos han descubierto una variedad contagiosa de %s." tooltip.main_menu.continue = "Continuar la última partida guardada." tooltip.watch.epidemic = "Epidemia: tiempo que queda para encubrir la epidemia. Cuando este tiempo expire O un paciente contagioso abandone tu hospital, un Inspector de Sanidad puede visitarte. El botón activa o desactiva el modo vacuna. Pulsa en un paciente para que lo vacune una Enfermera." tooltip.watch.hospital_opening = "Tiempo de construcción: es el tiempo que queda para que tu hospital sea declarado abierto. Si pulsas el botón verde abrirás el hospital inmediatamente." rooms_short.decontamination = "Descontaminación" adviser.room_requirements.op_need_another_surgeon = "Tienes que contratar a otro cirujano para poder usar el quirófano." adviser.information.patient_abducted = "Los alienígenas han raptado a uno de tus pacientes." adviser.praise.plants_thriving = "Muy bien. Tus plantas están muy lozanas. Tienen un aspecto maravilloso. Si las mantienes así podrás ganar un premio." adviser.level_progress.reputation_good_enough = "De acuerdo, tu reputación lo es bastante buena para ganar este nivel, manténla por encima de %d y soluciona otros problemas para terminar." adviser.staff_place_advice.only_nurses_in_room = "Sólo pueden trabajar las Enfermeras en el(la) %s" adviser.tutorial.select_receptionists = "Haz click en el icono que parpadea para ver qué recepcionistas están disponibles." rooms_long.decontamination = "Consulta de Descontaminación" dynamic_info.staff.ability = "Habilidad" dynamic_info.staff.actions.going_to_repair = "Yendo a reparar %s" dynamic_info.object.queue_expected = "Fila esperada: %d" fax.vip_visit_result.remarks.super[1] = "¡Qué hospital tan eficaz! La próxima vez que esté gravemente enfermo, llevadme allí." research.categories.drugs = "Investigación farmacéutica" transactions = { machine_replacement = "Coste de máquina de reemplazo", eoy_trophy_bonus = "Primas por trofeo Fin de Año", drinks = "Ingreso: Máquinas de bebidas", jukebox = "Ingreso: Gramolas", cheat = "Dinero de trampas", eoy_bonus_penalty = "Primas/Multas en fin de año", } confirmation.return_to_blueprint = "¿Seguro que quieres sustituir el(la) %s por $%d?" staff_descriptions = { misc = { [9] = "Le gusta hacer surf. ", [10] = "Le gusta el piragüismo. ", [11] = "Destila whisky. ", [12] = "Es un experto en formación. ", [13] = "Le gusta el cine francés. ", [15] = "Conduce coches de carreras. ", [25] = "Participó en un concurso. ", [26] = "Colecciona metralla de la segunda guerra mundial. ", [29] = "Pone furiosos a los insectos rociándolos con desodorante. ", }, good = { [3] = "Sabe de todo.", }, } progress_report.percentage_pop = "% población" letter = { [1] = { [1] = "¡Hola, %s!//", [2] = "¡Estupendo! Diriges este hospital de una manera excelente. Los peces gordos del Ministerio de Sanidad queremos saber si estarías interesado en hacerte cargo de un gran proyecto. Hay un trabajo para el que creemos eres la persona perfecta. El sueldo sería de %d. Piénsalo.//", }, [2] = { [1] = "¡Hola, %s!//", [2] = "¡Felicidades! Has realizado notables mejoras en tu hospital. Tenemos otra cosa de la que podrías encargarte, si te apetece un cambio y afrontar nuevos retos. No tienes que aceptar, pero estaría bien que lo hicieras. El sueldo es de %d//", }, [3] = { [1] = "¡Hola, %s!//", [2] = "Has dirigido con notable acierto este hospital. Creemos que tienes un brillante futuro y nos gustaría ofrecerte un puesto en otra parte. El sueldo sería de %d y creemos que te encantaría el reto que ello supondría.//", }, [4] = { [1] = "¡Hola, %s!//", [2] = "¡Felicidades! En el Ministerio estamos muy impresionados por tu capacidad como director de hospital. Eres sin duda una persona valiosa para el Departamento de Sanidad, pero creemos que preferirías un trabajo más cualificado. Recibirías un sueldo de %d, si bien la decisión es tuya.//", }, [5] = { [1] = "¡Hola, %s!//", [2] = "Saludos de nuevo. Respetamos tus deseos de no trasladarte de tu estupendo hospital, pero te pedimos que lo reconsideres. Te ofreceremos un mejor sueldo de %d si decides marcharte a otro hospital y te encargas de la dirección del mismo.//", }, [6] = { [1] = "¡Hola, %s!//", [2] = "Recibe nuestros saludos. Sabemos lo mucho que has disfrutado de tu estancia en esta institución, tan agradable y bien dirigida, pero creemos que ahora deberías pensar en tu futuro. Naturalmente, tendrías un sueldo de %d si decidieras trasladarte. Merece la pena que lo pienses.//", }, [7] = { [1] = "¡Hola, %s!//", [2] = "¡Buenos días! El Ministerio de Sanidad quisiera saber si vas a reconsiderar tu decisión de quedarte en tu hospital. Comprendemos que tienes un estupendo hospital, pero creemos que harías muy bien en aceptar un trabajo más estimulante, con un sueldo de %d.//", }, [8] = { [1] = "¡Hola, %s!//", [2] = "Buenas de nuevo. Recibimos tu negativa a nuestra última carta, en la que te ofrecíamos un puesto de dirección en otro hospital y un alto sueldo de %d. No obstante, creemos que deberías reconsiderar esta decisión. Como verás, tenemos el trabajo perfecto para ti.//", }, [9] = { [1] = "¡Hola, %s!//", [2] = "Has demostrado ser el mejor director de hospital en la larga y azarosa historia de la medicina. Este importantísimo logro no puede quedar sin recompensa, por lo que nos gustaría ofrecerte el puesto de Director Jefe de Todos los Hospitales. Es un puesto honorífico, con un sueldo de %d. Tendrás una presentación con todos los honores y la gente te demostrará su reconocimiento vayas donde vayas.//", }, [10] = { [1] = "¡Hola, %s!//", [2] = "Felicidades por dirigir con éxito todos los hospitales que te hemos asignado. Esta soberbia actuación te capacita para viajar libremente por todo el mundo. Recibirás una pensión de %d y una limusina, a cambio de que viajes de ciudad en ciudad, saludando a tu incondicional público y fomentando la labor que se realiza en todos los hospitales.//", }, [11] = { [1] = "¡Hola, %s!//", [3] = "Eres un ejemplo para todos los hombres de bien y todo el mundo, sin excepción, te considera una persona de enorme valía.//", }, [12] = { [1] = "¡Hola, %s!//", [2] = "Tu exitosa carrera como el mejor director de hospital desde Moisés está llegando a su fin. No obstante, has provocado tal efecto en los círculos médicos, que el Ministerio quiere ofrecerte un sueldo de %s sólo por actuar en nuestro nombre inaugurando festejos, botando barcos y organizando coloquios. ¡El mundo entero te aclamaría y serías un excelente relaciones públicas!//", }, } tooltip.staff_window.ability = "Nivel de cualificación" tooltip.policy.diag_termination = "Se mantendrá el diagnóstico de un paciente hasta que los médicos estén seguros del porcentaje de DETENER, o hasta que se hayan usado todos los diagnosticadores" tooltip.staff_list.ability = "Muestra el nivel de habilidad de estos empleados" introduction_texts = { level1 = "¡Bienvenido a tu primer hospital! " .. "Para hacer que empiece a funcionar, coloca una recepción, construye una consulta y contrata a una recepcionista y a un médico. " .. "Luego espera a que lleguen los pacientes. " .. "Sería una buena idea que construyeras una consulta de psiquiatría y contrataras a un psiquiatra. " .. "Una farmacia y una enfermera son fundamentales para curar a tus pacientes. " .. "Cuidado con los casos malignos de pacientes cabezudos; se solucionan pronto en la consulta de inflatoterapia. " .. "Tendrás que curar a 10 personas y asegurarte de que tu reputación no sea inferior a 200.", level2 = "Hay una gran variedad de indisposiciones en esta zona.//" .. "Prepara tu hospital para tratar a más pacientes y proyecta la construcción de un Departamento de Investigación. " .. "Recuerda que debes mantener limpio el hospital y procura conseguir que tu reputación sea lo más alta posible. Tratarás enfermedades como la Lengua Larga, así que necesitarás una consulta de laringología. " .. "También puedes construir un cardiómetro para diagnosticar nuevas enfermedades. " .. "Estas dos consultas deberán ser investigadas antes de construirlas. También puedes comprar más terreno para ampliar tu hospital. Para ello, utiliza un mapa de la ciudad. ", "Intenta alcanzar una reputación de 300, un saldo bancario de 10.000 dólares y cura a 40 personas.", level3 = "Esta vez colocarás tu hospital en una zona acaudalada.//" .. "El Ministerio de Sanidad espera que consigas curar a muchos pacientes. " .. "Tendrás que ganarte una buena reputación para empezar, pero una vez que el hospital empiece a funcionar, concéntrate en ganar todo el dinero que puedas. " .. "También puede haber urgencias. " .. "Se producen cuando llega mucha gente que padece la misma enfermedad. " .. "Si los curas dentro de un plazo determinado, conseguirás aumentar tu reputación y ganar una prima extra. " .. "Habrá enfermedades, como el síndrome de rey, y deberás tener presupuesto para construir un quirófano y una enfermería adyacente. " .. "Tienes que ganar 20.000 dólares para superar este nivel.", level4 = "Haz que todos tus pacientes estén contentos, atiéndelos con la mayor eficacia e intenta que mueran los menos posibles.//" .. "Tu reputación está en juego, así que procura aumentarla todo lo que puedas. " .. "No te preocupes demasiado por el dinero; Lo irás ganando a medida que crezca tu reputación. " .. "También podrás formar a tus médicos para ampliar sus conocimientos: " .. "ellos podrán curar a los pacientes más difíciles. " .. "Alcanza una reputación por encima de 500.", level5 = "Este será un hospital concurrido, que tratará casos muy variados.//" .. "Tus médicos acaban de salir de la facultad, por lo que es fundamental que construyas una sala de formación para que alcancen el nivel de formación necesario. " .. "Sólo tienes tres especialistas para enseñar a tu personal inexperto, así que procura que estén contentos. " .. "Tienes que tener en cuenta que el hospital está ubicado encima de la falla geológica de San Androide. " .. "Siempre hay riesgo de terremoto. " .. "Los terremotos provocarán daños importantes en tus máquinas y alterarán el buen funcionamiento de tu hospital. " .. "Aumenta tu reputación hasta 400 y consigue unos ingresos de 50.000 dólares para triunfar. También debes curar a 200 pacientes. ", level6 = "Utiliza toda tu capacidad para conseguir un hospital que funcione bien y consiga curar a muchos pacientes y que pueda tratar cualquier caso que presenten los enfermos.//" .. "Estás avisado de que el ambiente, aquí, es especialmente propenso a gérmenes e infecciones. " .. "A menos que mantengas una escrupulosa limpieza en tu institución, tendrás que hacer frente a una serie de epidemias entre los pacientes. " .. "Procura obtener unos ingresos de 20.000 dólares y que el valor de tu hospital supere los 140.000 dólares. ", level7 = "Aquí estarás bajo la estricta vigilancia del Ministerio de Sanidad, así que procura que tus cuentas tengan unos ingresos excelentes y que aumente tu reputación.//" .. "No podemos permitirnos que haya muertes innecesarias; no son nada buenas para el negocio. " .. "Asegúrate de que tu personal está en plena forma y de que tienes todos los equipos necesarios. " .. "Consigue una reputación de 600, y un saldo bancario de 200.000 dólares.", level8 = "De ti depende que puedas construir el hospital más eficiente y rentable posible.//" .. "La gente de por aquí es bastante adinerada, así que sabléalos todo lo que puedas. " .. "Recuerda, curar a la gente está muy bien, pero lo que de verdad NECESITAS es su dinero. " .. "Despluma vivos a estos pacientes. " .. "Acumula 300.000 dólares para completar este nivel. ", level9 = "Después de ingresar dinero en la cuenta bancaria del Ministerio y pagar una nueva limusina para el Ministro, ahora puedes dedicarte a crear un buen hospital para cuidar a los enfermos y necesitados. " .. "Aquí tendrás un montón de problemas diferentes. " .. "Si tu personal tiene una buena formación y cuentas con suficientes consultas, podrás resolver cualquier situación. " .. "Tu hospital tendrá que valer 200.000 dólares y necesitarás tener 400.000 dólares en el banco. " .. "Si no lo consigues no podrás terminar el nivel.", level10 = "Además de ocuparte de curar todas las enfermedades que pueda haber, el Ministerio te pide que emplees algo de tiempo en aumentar la eficacia de tus medicinas.//" .. "Ha habido algunas quejas por parte de D. Salutísimo, el Perro Guardián de la Salud, así que debes procurar que todas tus medicinas sean sumamente eficaces para quedar bien. " .. "También debes asegurarte de que tu hospital tenga una reputación intachable. Procura que mueran pocos pacientes. " .. "Como sugerencia, deberías dejar espacio para un baño gelatinoso. " .. "Para ganar, tus medicinas deberán tener una eficacia de, al menos, un 80%, tienes que conseguir una reputación de 650 y guardar 500.000 dólares en el banco.", level11 = "Tienes la oportunidad de construir el no va más en hospitales. " .. "Esta es una zona de enorme prestigio y al Ministerio le gustaría que éste fuera el mejor hospital. " .. "Esperamos que ganes mucho dinero, alcances una excelente reputación y te ocupes de todos los casos que se presenten. " .. "Este es un trabajo importante. " .. "Tendrás que ser muy hábil para llevarlo a cabo. " .. "También debes tener en cuenta que se han visto ovnis en la zona. Asegúrate de que tu personal esté preparado para recibir alguna visita inesperada. " .. "Tu hospital tendrá que alcanzar un valor de 240.000 dólares, necesitarás tener 500.000 dólares en el banco y una reputación de 700.", level12 = "Ahora te enfrentas al mayor de los retos. " .. "El Ministerio ha quedado impresionado con tus logros y tiene una tarea difícil para ti, quieren que se construya otro magnífico hospital, que tenga unos excelentes ingresos y una reputación increíble. " .. "También se espera que compres todo el terreno que puedas, cures todo (y queremos decir todas las enfermedades) y ganes todos los premios. " .. "¿Crees que podrás conseguirlo? " .. "Gana 650.000 dólares, cura a 750 personas y consigue una reputación de 800 para ganar este nivel. ", level13 = "Tu increíble habilidad como director de hospital ha atraído la atención de la División Secreta Especial del Servicio Secreto Especial. " .. "Tienen un trabajo especial para ti. Hay un hospital infestado de ratas que necesita un exterminador eficiente. " .. "Tienes que matar todas las ratas que puedas antes de que el personal de Mantenimiento limpie toda la suciedad. " .. "¿Crees que eres apto para la misión?", level14 = "Aún tienes un reto más: el hospital sorpresa totalmente imprevisible. " .. "Si consigues tener éxito, serás el ganador de todos los ganadores. " .. "Y no esperes que sea pan comido, porque es la tarea más difícil que jamás afrontarás. " .. "¡Buena suerte!", level15 = "Bien, estos son los mecanismos básicos para poner en marcha un hospital.//" .. "Tus Médicos van a necesitar toda la ayuda que puedan obtener para diagnosticar a algunos de los pacientes. " .. "Puedes ayudarles construyendo otros equipos de diagnóstico como la Sala de Diagnóstico General.", level16 = "Una vez que hayas diagnosticado a alguno de los pacientes necesitarás construir salas de tratamiento y clínicas para curarles: " .. "puedes comenzar con una Farmacia, y necesitarás una Enfermera que dispense las medicinas en la Farmacia.", level17 = "Un último aviso: estate atento a tu Reputación, es lo que atraerá pacientes a tu establecimiento. " .. "¡Si no matas a mucha gente y los mantienes razonablemente felices no deberías tener muchos problemas en este nivel!//" .. "Ahora es cosa tuya, buena suerte y todo eso.", demo = "¡Bienvenido al hospital de demostración!" .. "Por desgracia, la versión de demostración solo contiene este nivel. Sin embargo, tienes más que suficiente para estar entretenido por un rato." .. "Te enfrentarás a varias enfermedades que necesitan de ciertas habitaciones para su cura. De vez en cuando pueden surgir emergencias. Y necesitarás " .. "investigar sobre las enfermedades construyendo un Departamento de investigación." .. "Tu objetivo es ganar 100.000 dólares, que el valor de tu hospital llegue hasta 70.000 dólares y tengas una reputación de 700, con un porcentaje de pacientes curados del 75%." .. "Procura que tu reputación no caiga por debajo de 300 y que no mates a más del 40% de tus pacientes, o fracasarás." .. "¡Buena suerte!", } town_map.area = "Zona" trophy_room = { rats_killed = { trophies = { [2] = "Mereces este premio de la Federación Matarratas por tu excepcional habilidad para eliminar ratas, demostrándolo al acabar con %s ejemplares.", [3] = "Se te concede el Trofeo Exterminador de Ratas por tu gran habilidad para eliminar %d ratas en tu hospital el año pasado.", }, }, hosp_value = { penalty = { [1] = "Tu hospital no ha alcanzado un valor razonable. Has administrado mal el dinero. Recuerda, un buen hospital también es un hospital caro.", }, regional = { [1] = "Eres una promesa de los negocios. Tu hospital es el más valioso de toda la zona.", }, }, happy_patients = { awards = { [2] = "Los pacientes que visitaron tu hospital se sintieron más contentos con su tratamiento que en el resto de los hospitales.", }, penalty = { [1] = "La gente que acude al hospital tiene una experiencia terrible. Tendrás que esforzarte más si quieres ganarte el respeto del Ministerio.", [2] = "La gente que fue atendida en tu hospital se quejó del estado del mismo. Deberías tener más en cuenta el bienestar de los pacientes.", }, }, research = { penalty = { [1] = "Has sido poco eficiente investigando curaciones, máquinas y medicinas nuevas. Esto no es bueno, ya que el avance tecnológico es algo fundamental.", }, regional_bad = { [1] = "Los demás hospitales son mejores que el tuyo en investigación. En el Ministerio están furiosos, tu hospital debería concederle más importancia.", }, }, many_cured = { regional = { [1] = "Se te concede el premio a la curación total por haber curado a más gente que todos los demás hospitales juntos.", }, awards = { [1] = "Felicidades por curar a un montón de gente el año pasado. Un gran número de personas se sienten mucho mejor gracias a tu trabajo.", }, }, best_value_hosp = { penalty = { [1] = "Todos los hospitales de la zona valen más que el tuyo. Haz algo respecto a esta vergonzosa situación. ¡Consigue cosas más caras!", }, }, healthy_plants = { trophies = { [2] = "Salvar a las Plantas quiere concederte el Premio del Ecologista Mayor por mantener bien sanas las plantas de tu hospital durante el pasado año.", }, }, high_rep = { regional = { [1] = "Por favor, acepta el Premio Bullfrog por dirigir el mejor hospital del año. ¡Disfrútalo, te lo has ganado!", }, }, consistant_rep = { trophies = { [2] = "Felicidades por ganar el Premio Sábanas Limpias por ser el hospital con la mejor reputación del año. Te lo has merecido.", }, }, wait_times = { penalty = { [1] = "En tu hospital, los pacientes esperan demasiado tiempo. Siempre hay colas inaceptables. Podrías tratar a tus pacientes con más eficacia si quisieras.", }, }, happy_staff = { awards = { [2] = "Tu personal está tan contento de trabajar para ti que no pueden dejar de sonreír. Eres un director excelente.", }, trophies = { [1] = "Has ganado el Premio Médico Sonriente por mantener lo más contento posible a tu personal.", [3] = "Te concedemos el premio Copa de la Sonrisa Radiante por mantener contento a todo tu personal por encima de todo durante el año pasado.", }, }, emergencies = { award = { [1] = "¡Felicidades! Has ganado este premio por la eficacia con la que has solucionado las urgencias. Buen trabajo.", }, }, } diseases = { corrugated_ankles = { cause = "Causa: Atropellar señales de tráfico en la carretera.", symptoms = "Síntomas: Los pies no entran en los zapatos.", cure = "Cura: Los tobillos se enderezan bebiendo una infusión ligeramente tóxica de hierbas y plantas.", }, jellyitis = { cause = "Causa: Una dieta rica en gelatina y demasiado ejercicio.", symptoms = "Síntomas: Un temblor excesivo y caerse al suelo muchas veces.", cure = "Cura: Se sumerge al paciente durante un rato en el baño gelatinoso en una consulta especial.", }, kidney_beans = { cause = "Causa: Masticar los cubitos de hielo de las bebidas.", symptoms = "Síntomas: Dolor e ir con frecuencia al baño.", cure = "Cura: Dos cirujanos extraen los cálculos sin rozar los bordes del riñón.", }, fractured_bones = { cause = "Causa: Caída de cosas voluminosas sobre el cemento.", symptoms = "Síntomas: Un gran crujido y la imposibilidad de usar los miembros afectados.", cure = "Cura: Se pone una escayola, que después se quita con un láser quitaescayolas.", }, spare_ribs = { cause = "Causa: Sentarse sobre suelos muy fríos.", symptoms = "Síntomas: Malestar en el pecho.", cure = "Cura: Dos cirujanos extraen las costillas y se las dan al paciente en una bolsita.", }, alien_dna = { cause = "Causa: Enfrentarse a gigantes que tienen sangre alienígena inteligente.", symptoms = "Síntomas: Metamorfosis gradual en alienígena y deseos de destruir nuestras ciudades.", cure = "Cura: Se extrae el ADN con una máquina, se purifica de elementos alienígenas y se vuelve a inyectar rápidamente.", }, invisibility = { cause = "Causa: El picotazo de una hormiga radiactiva (e invisible).", symptoms = "Síntomas: Los pacientes no sufren. Muchos aprovechan su enfermedad para gastar bromas a sus familiares.", cure = "Cura: Beber un líquido coloreado en la farmacia que hará completamente visible al paciente.", }, infectious_laughter = { cause = "Causa: Una comedia clásica de situación", symptoms = "Síntomas: No poder parar de reír y repetir frases hechas nada divertidas.", cure = "Cura: Un psiquiatra cualificado debe recordar al paciente que su enfermedad es grave.", }, broken_wind = { cause = "Causa: Usar un aparato gimnástico después de las comidas.", symptoms = "Síntomas: Molestar a la gente que está justo detrás del paciente.", cure = "Cura: En la farmacia se bebe rápidamente una fuerte mezcla de átomos acuosos.", }, chronic_nosehair = { cause = "Causa: Oler con desprecio a aquellos que están peor que el paciente.", symptoms = "Síntomas: Tener tanto pelo en la nariz como para hacer una peluca.", cure = "Cura: Se toma por vía oral un jarabe quitapelo preparado en la farmacia.", }, bloaty_head = { name = "Paciente cabezudo", cause = "Causa: Oler queso y beber agua de lluvia no purificada.", symptoms = "Síntomas: Muy incómodos para el paciente.", cure = "Cura: Se pincha la cabeza hinchada y luego se vuelve a inflar hasta el tamaño correcto con una máquina inteligente.", }, serious_radiation = { name = "Radiación grave", cause = "Causa: Confundir isótopos de plutonio con chicle.", symptoms = "Síntomas: Los pacientes que padecen esta enfermedad se sienten muy, pero que muy mal.", cure = "Cura: Se debe dar al paciente una buena ducha descontaminadora.", }, ruptured_nodules = { cause = "Causa: Tirarse de cabeza al agua fría.", symptoms = "Síntomas: Imposibilidad de sentarse cómodamente.", cure = "Cura: Dos cirujanos cualificados colocan ciertas partes con manos firmes.", }, gastric_ejections = { cause = "Causa: Comida mejicana o india muy condimentada.", symptoms = "Síntomas: El paciente vomita la comida a medio digerir en cualquier momento.", cure = "Cura: Beber un preparado astringente especial para detener los vómitos.", }, hairyitis = { cause = "Causa: Exposición prolongada a la luna.", symptoms = "Síntomas: Los pacientes experimentan un aumento del olfato.", cure = "Cura: Una máquina de electrólisis elimina el vello y cierra los poros.", }, sweaty_palms = { cause = "Causa: Temer las entrevistas de trabajo.", symptoms = "Síntomas: Dar la mano al paciente es como coger una esponja empapada.", cure = "Cura: Un psiquiatra debe discutir a fondo con el paciente sobre esta enfermedad inventada.", }, diag_x_ray = { name = "Diag. de rayos X", }, the_squits = { cause = "Causa: Comer pizza que se ha encontrado debajo de la cocina.", symptoms = "Síntomas: ¡Agh! Seguro que te los puedes imaginar.", cure = "Cura: Una mezcla de sustancias viscosas preparada en la farmacia solidifica las tripas del paciente.", }, slack_tongue = { name = "Lengua caída", cause = "Causa: Hablar sin parar sobre culebrones.", symptoms = "Síntomas: La lengua crece hasta cinco veces su tamaño original.", cure = "Cura: Se coloca la lengua en el acortalenguas y se elimina de forma rápida, eficaz y dolorosa.", }, pregnancy = { cause = "Causa: Cortes de electricidad en zonas urbanas.", symptoms = "Síntomas: Comer por antojo con el consecuente malestar de estómago.", cure = "Cura: Se extrae al bebé en el quirófano, se limpia y se entrega al paciente.", }, sleeping_illness = { cause = "Causa: Una glándula del sueño hiperactiva en el paladar.", symptoms = "Síntomas: Deseo imperioso de echarse una cabezadita en cualquier parte.", cure = "Cura: Una enfermera administra una elevada dosis de un poderoso estimulante.", }, transparency = { cause = "Causa: Lamer el yogur que queda en las tapas de los envases.", symptoms = "Síntomas: La carne se transparenta y se ve horrible.", cure = "Cura: Tomar un preparado de agua enfriada y coloreada en la farmacia.", }, broken_heart = { cause = "Causa: Alguien más rico, más joven y más delgado que el paciente.", symptoms = "Síntomas: Llorar y reír después de pasarse horas rompiendo fotos de las vacaciones", cure = "Cura: Dos cirujanos abren el pecho y miman con delicadeza el corazón mientras contienen la respiración.", }, unexpected_swelling = { cause = "Causa: Cualquier cosa imprevista.", symptoms = "Síntomas: Inflamación.", cure = "Cura: Sólo puede reducirse la inflamación con una lanceta durante una operación que requiere dos cirujanos.", }, discrete_itching = { cause = "Causa: Insectos diminutos con los dientes afilados.", symptoms = "Síntomas: Rascarse, lo que conduce a una inflamación de la parte afectada.", cure = "Cura: El paciente bebe un jarabe pegajoso que evita que la piel pique.", }, third_degree_sideburns = { cause = "Causa: Anhelar con ansia los años 70.", symptoms = "Síntomas: Pelo largo, ropa ancha, zapatos con plataformas y mucho maquillaje.", cure = "Cura: El personal psiquiátrico debe, empleando técnicas actualizadas, convencer al paciente de que esta moda es horrible.", }, uncommon_cold = { cause = "Causa: Pequeñas partículas de moco en el aire.", symptoms = "Síntomas: Mucosidad, estornudos y pulmones descoloridos.", cure = "Cura: Beber un gran trago de una medicina para la tos anormal que se fabrica en la farmacia con ingredientes especiales.", }, heaped_piles = { cause = "Causa: Permanecer de pie junto a refrigeradores de agua.", symptoms = "Síntomas: El paciente se siente como si se sentara sobre una bolsa de canicas.", cure = "Cura: Una bebida agradable, aunque muy ácida, disuelve las hemorroides internas.", }, golf_stones = { cause = "Causa: Inhalar el gas venenoso que contienen las pelotas de golf.", symptoms = "Síntomas: Delirar y sentir mucha vergüenza.", cure = "Cura: Dos cirujanos operan para extraer los cálculos.", }, baldness = { cause = "Causa: Contar mentiras e inventar historias para ser famoso.", symptoms = "Síntomas: Tener la cabeza brillante y pasar vergüenza.", cure = "Cura: El pelo se cose a la cabeza del paciente con una dolorosa máquina.", }, fake_blood = { cause = "Causa: El paciente suele ser la víctima de todas las bromas.", symptoms = "Síntomas: Fluido rojo en las venas que se evapora al contacto con la ropa.", cure = "Cura: Este problema sólo se resuelve con tratamiento psiquiátrico.", }, gut_rot = { cause = "Causa: El jarabe para la tos, a base de whisky, de la Sra. McGuiver.", symptoms = "Síntomas: El paciente no tose, pero tampoco tiene paredes en el estómago.", cure = "Cura: Una enfermera administra una variada disolución de sustancias químicas para revestir el estómago.", }, iron_lungs = { cause = "Causa: Contaminación urbana mezclada con restos de kebab.", symptoms = "Síntomas: Capacidad para aspirar fuego y gritar debajo del agua.", cure = "Cura: Dos cirujanos realizan una operación para eliminar las partes duras del pulmón en el quirófano.", }, king_complex = { cause = "Causa: El espíritu del rey se introduce en la mente del paciente y se apodera de ella.", symptoms = "Síntomas: Calzar unos zapatos de ante teñidos y comer hamburguesas.", cure = "Cura: Un psiquiatra le dice al paciente lo ridículo o ridícula que está.", }, tv_personalities = { cause = "Causa: Ver la televisión durante el día.", symptoms = "Síntomas: Tener la ilusión de presentar en la tele un programa de cocina.", cure = "Cura: Un psiquiatra experto debe convencer al paciente de que venda su televisor y se compre una radio.", }, } room_descriptions = { staff_room = { [1] = "Sala de personal//", [2] = "Tu personal se cansa cuando realiza su trabajo. Necesitan esta sala para descansar y reponer energías. El personal cansado es más lento, pide más dinero, comete más errores y al final dimite. Merece la pena construir una sala para el personal que tenga muchos pasatiempos. Asegúrate de que hay sitio para varios miembros del personal al mismo tiempo. ", }, gp = { [2] = "Esta es la consulta más importante de tu hospital. Los nuevos pacientes son enviados aquí para averiguar qué es lo que les pasa. Entonces, o se les hace otro diagnóstico o se les manda a una consulta donde puedan ser curados. Quizá quieras construir otra consulta si la primera tiene mucho trabajo. Cuanto más grande sea la consulta y cuantos más objetos pongas en ella, mayor prestigio tendrá el médico. Lo mismo sucede con todas las consultas abiertas.//", }, blood_machine = { [3] = "El transfusiómetro requiere un médico. También necesita mantenimiento. ", }, x_ray = { [2] = "Los rayos X fotografían el interior del paciente empleando una radiación especial para ayudar al personal a descubrir lo que le pasa.//", [3] = "La consulta de rayos X requiere un médico. También necesita mantenimiento. ", }, ultrascan = { [1] = "Ultra escáner//", }, training = { [1] = "Sala de formación//", }, fracture_clinic = { [2] = "Los pacientes que tienen la desgracia de tener fracturas vienen aquí. El quitaescayolas emplea un potente láser industrial para cortar las escayolas más duras, causando al paciente sólo una pequeña molestia.//", }, slack_tongue = { [2] = "Los pacientes a los que se les diagnostica lengua caída en la consulta serán enviados aquí para recibir tratamiento. El médico utilizará una máquina de alta tecnología para estirar la lengua y acortarla, con lo que el paciente volverá a estar sano.//", }, jelly_vat = { [1] = "Baño gelatinoso//", }, general_diag = { [1] = "Diagnosis general//", }, } -- An override for the squits becoming the the squits see issue 1646 adviser.research.drug_improved_1 = "Tu departamento de investigación ha mejorado el medicamento para la %s." ------------------------------- NEW STRINGS ------------------------------- date_format = { daymonth = "%1% %2:months%", } object.litter = "Basura" tooltip.objects.litter = "Basura: Un paciente la ha tirado porque no ha encontrado una papelera." object.rathole = "Ratonera" tooltip.objects.rathole = "El hogar de una familia de ratas a la que le ha gustado la suciedad de tu hospital." tooltip.fax.close = "Cierra esta ventana sin borrar el mensaje." tooltip.message.button = "Haz clic izquierdo para abrir el mensaje." tooltip.message.button_dismiss = "Haz clic izquierdo para abrir el mensaje, clic derecho para rechazarlo." tooltip.casebook.cure_requirement.hire_staff = "Necesitas contratar empleados para realizar este tratamiento." tooltip.casebook.cure_type.unknown = "Todavía no sabes cómo curar esta enfermedad." tooltip.research_policy.no_research = "En este momento no se está investigando ningún apartado de esta categoría." tooltip.research_policy.research_progress = "Progreso del siguiente descubrimiento de esta categoría: %1%/%2%" menu["player_count"] = "CANTIDAD DE JUGADORES" menu_file = { load = " (MAYUS+L) CARGAR ", save = " (MAYUS+S) GUARDAR ", restart = " (MAYUS+R) REINICIAR ", quit = " (MAYUS+Q) SALIR " } --These menus lack uppercase accented characters, so lowercase are a must. menu_options = { sound = " (ALT+S) SONIDO ", announcements = " (ALT+A) ANUNCIOS ", music = " (ALT+M) MúSICA ", jukebox = " (J) REPRODUCTOR DE MúSICA ", lock_windows = " BLOQUEAR VENTANAS ", edge_scrolling = " DESPLAZAR POR BORDES ", adviser_disabled = " (MAYUS+A) CONSEJERO ", warmth_colors = " COLORES DE TEMPERATURA ", wage_increase = " PETICIONES DE SUELDO ", twentyfour_hour_clock = " RELOJ DE 24 HORAS " } menu_options_game_speed = { pause = " (P) PAUSA ", slowest = " (1) MUY LENTA ", slower = " (2) LENTA ", normal = " (3) NORMAL ", max_speed = " (4) VELOCIDAD MáXIMA ", and_then_some_more = " (5) VELOCIDAD ABSURDA ", } menu_options_warmth_colors = { choice_1 = " ROJO ", choice_2 = " AZUL, VERDE, ROJO ", choice_3 = " AMARILLO, NARANJA, ROJO ", } menu_options_wage_increase = { grant = " CONCEDER ", deny = " RECHAZAR ", } -- Add F-keys to entries in charts menu (except briefing), also town_map was added. menu_charts = { bank_manager = " (F1) DIRECTOR DEL BANCO ", statement = " (F2) ESTADO DE CUENTAS ", staff_listing = " (F3) LISTA DE PERSONAL ", town_map = " (F4) MAPA DE LA CIUDAD ", casebook = " (F5) HISTORIAL ", research = " (F6) INVESTIGACIóN ", status = " (F7) ESTADO ", graphs = " (F8) GRáFICAS ", policy = " (F9) NORMAS ", } menu_debug = { jump_to_level = " CAMBIAR DE NIVEL ", connect_debugger = " (CTRL + C) CONECTAR A SERVIDOR DBGp LUA ", transparent_walls = " (X) PAREDES TRANSPARENTES ", limit_camera = " LIMITAR CáMARA ", disable_salary_raise = " DESACTIVAR SUBIDA DE SUELDO ", make_debug_fax = " CREAR FAX DE DEPURACIóN ", make_debug_patient = " CREAR PACIENTE DE DEPURACIóN ", cheats = " (F11) TRUCOS ", lua_console = " (F12) CONSOLA LUA ", debug_script = " (MAYúS + D) EJECUTAR SCRIPT DE DEPURACIóN ", calls_dispatcher = " LLAMAR A CONTROLADOR ", dump_strings = " VOLCAR TEXTOS DEL JUEGO ", dump_gamelog = " (CTRL+D) VOLCAR REGISTRO DEL JUEGO ", map_overlay = " SOBREPONER MAPA ", sprite_viewer = " VISUALIZADOR DE ANIMACIONES ", } menu_debug_overlay = { none = " NADA ", flags = " MARCAS ", positions = " POSICIONES ", heat = " TEMPERATURA ", byte_0_1 = " BYTE 0 Y 1 ", byte_floor = " BYTE SUELO ", byte_n_wall = " BYTE PARED NORTE ", byte_w_wall = " BYTE PARED OESTE ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " PARCELA ", } menu_player_count = { players_1 = " 1 JUGADOR ", players_2 = " 2 JUGADORES ", players_3 = " 3 JUGADORES ", players_4 = " 4 JUGADORES ", } adviser = { room_forbidden_non_reachable_parts = "Si colocas la habitación ahí bloquearás el acceso a ciertas partes del hospital.", warnings = { no_desk = "¡Deberías construir una mesa de recepción y contratar a una recepcionista en algún momento!", no_desk_1 = "¡Si quieres que los pacientes vayan a tu hospital, necesitas contratar a una recepcionista y construir una mesa donde pueda trabajar!", no_desk_2 = "¡Enhorabuena, has batido un récord mundial: ha pasado un año y no ha aparecido ni un paciente! ¡Si quieres seguir mandando en este hospital, tendrás que contratar a una recepcionista y construir una mesa donde pueda trabajar!", no_desk_3 = "¡Fabuloso, casi ha pasado un año y no tienes recepcionistas! ¿Cómo quieres que vengan los pacientes? ¡Arréglalo y deja de perder el tiempo!", no_desk_4 = "Una recepcionista necesita una mesa para atender a los pacientes que vengan.", no_desk_5 = "¡Ya era hora! Los pacientes empezarán a llegar pronto.", no_desk_6 = "Tienes una recepcionista, ¿qué tal si construyes una mesa de recepción para que pueda trabajar?", no_desk_7 = "Has construido una mesa de recepción, ¿y si contratas a una recepcionista? No verás a ningún paciente hasta que lo arregles, ¿lo sabes, no?", cannot_afford = "¡No tienes dinero para contratar a esa persona!", -- I can't see anything like this in the original strings cannot_afford_2 = "¡No tienes dinero para comprar eso!", falling_1 = "¡Eh! No tiene gracia. Mira dónde haces clic con ese ratón, ¡vas a hacer daño a alguien!", falling_2 = "¿Te importaría dejar de perder el tiempo?", falling_3 = "¡Ay! Eso ha tenido que doler. ¡Llamen a un médico!", falling_4 = "¡Esto es un hospital, no un parque de atracciones!", falling_5 = "¡Este no es lugar para tirar personas al suelo, que están enfermas!", falling_6 = "¡Esto no es una bolera, no trates así a los enfermos!", research_screen_open_1 = "Para acceder a la pantalla de investigación, tienes que construir un departamento de investigación.", research_screen_open_2 = "No se pueden realizar investigaciones en este nivel.", researcher_needs_desk_1 = "Un investigador necesita una mesa en la que trabajar.", researcher_needs_desk_2 = "Tu investigador agradece que le hayas dado un descanso. Si pretendías tener a más personas investigando, tienes que dar a cada uno una mesa para que trabajen.", researcher_needs_desk_3 = "Cada investigador necesita una mesa para trabajar.", nurse_needs_desk_1 = "Cada enfermera necesita una mesa para trabajar.", nurse_needs_desk_2 = "Tu enfermera agradece que le hayas dado un descanso. Si pretendías tener a más personas trabajando en la enfermería, tienes que dar a cada una una mesa para que trabajen.", low_prices = "Estás cobrando muy poco por el uso de %s. Así atraerás a más personas a tu hospital, pero no te darán muchos beneficios.", high_prices = "Estás cobrando mucho por el uso de %s. Así tendrás muchos beneficios a corto plazo, pero harás que los pacientes dejen de venir.", fair_prices = "El precio de %s parece justo.", patient_not_paying = "¡Un paciente se ha ido sin pagar por %s porque es demasiado caro!", }, cheats = { th_cheat = "¡Felicidades, has desbloqueado los trucos!", roujin_on_cheat = "¡Desafío de Roujin activado! Buena suerte...", roujin_off_cheat = "Desafío de Roujin desactivado.", }, } dynamic_info.patient.actions.no_gp_available = "Esperando a que construyas una consulta" dynamic_info.staff.actions.heading_for = "Dirigiéndose a %s" dynamic_info.staff.actions.fired = "Despedido" dynamic_info.patient.actions.epidemic_vaccinated = "Ya no soy contagioso" progress_report.free_build = "CONSTRUCCIÓN LIBRE" fax = { choices = { return_to_main_menu = "Volver al menú principal", accept_new_level = "Continuar al siguiente nivel", decline_new_level = "Seguir jugando un poco más", }, emergency = { num_disease_singular = "Hay 1 persona con %s y necesita ser atendida inmediatamente.", free_build = "Si tienes éxito, mejorarás tu reputación, pero si fracasas tu reputación caerá en picado.", }, vip_visit_result = { remarks = { free_build = { "¡Su hospital es muy bueno! No es difícil mantenerlo sin limitaciones económicas, ¿eh?", "No soy economista, pero hasta yo podría dirigir este hospital, si usted me entiende...", "Un hospital muy bien cuidado. ¡Pero ojo con la crisis financiera! Ah... que a usted no le afecta.", }, mediocre = { [1] = "Bueno, los he visto peores. Pero debería hacer algunas mejoras.", [2] = "¡Oh, cielos! No es un lugar agradable para ir si estás pachucho.", [3] = "Si le soy sincero, es un hospital normalucho. Francamente, yo esperaba más.", }, very_bad = { [1] = "¡Vaya tugurio! Voy a intentar clausurarlo.", [2] = "Nunca he visto un hospital tan espantoso. ¡Qué vergüenza!", [3] = "Estoy horrorizado. ¡Y a esto lo llama un hospital! Me voy de cañas...", }, } } } letter = { dear_player = "Estimado %s,", custom_level_completed = "¡Bien hecho! ¡Has completado todos los objetivos de este nivel personalizado!", return_to_main_menu = "¿Quieres volver al menú principal o seguir jugando?", campaign_level_completed = "¡Buen trabajo! Has superado este nivel, ¡pero aún no has acabado!\n ¿Te interesaría aceptar un puesto en el hospital %s?", campaign_completed = "¡Increíble! Has conseguido superar todos los niveles. Ya puedes relajarte y disfrutar mientras hablas de tus logros en los foros de Internet. ¡Buena suerte!", campaign_level_missing = "Parece que el siguiente nivel de esta campaña está desaparecido. (Nombre: %s)", } install = { title = "--------------------------------- Configuración de CorsixTH ---------------------------------", th_directory = "CorsixTH necesita una copia de los archivos de datos del Theme Hospital original (o de la demo) para poder funcionar. Utiliza el selector de debajo para localizar la carpeta de instalación de Theme Hospital.", ok = "Aceptar", exit = "Salir", cancel = "Cancelar", } misc.not_yet_implemented = "(aún no implementado)" misc.no_heliport = "O no se han descubierto enfermedades, o no hay un helipuerto en este nivel. Quizás te haga falta comprar una mesa de recepción y contratar a una recepcionista." main_menu = { new_game = "Campaña", custom_campaign = "Campaña personalizada", custom_level = "Misión individual", continue = "Continuar partida", load_game = "Cargar partida", options = "Opciones", map_edit = "Editor de mapas", savegame_version = "Versión del guardado: ", version = "Versión: ", exit = "Salir", } tooltip.main_menu = { new_game = "Empezar el primer nivel de la campaña.", custom_campaign = "Juega una campaña creada por la comunidad.", custom_level = "Construir tu hospital en un nivel concreto.", continue = "Reanuda tu última partida guardada.", load_game = "Cargar una partida guardada.", options = "Ajustar la configuración.", map_edit = "Crear un mapa personalizado.", exit = "¡No, no, por favor, no te vayas!", quit = "Estás a punto de salir de CorsixTH. ¿Seguro que quieres continuar?", } load_game_window = { caption = "Cargar partida (%1%)", } tooltip.load_game_window = { load_game = "Cargar partida %s", load_game_number = "Cargar partida %d", load_autosave = "Cargar autoguardado", } custom_game_window = { caption = "Partida personalizada", free_build = "Construcción libre", load_selected_level = "Comenzar", } tooltip.custom_game_window = { choose_game = "Haz clic en un nivel para ver más información sobre el mismo.", free_build = "Marca esta casilla si quieres jugar sin dinero ni condiciones para ganar o perder.", load_selected_level = "Cargar e iniciar el nivel seleccionado.", } custom_campaign_window = { caption = "Campaña personalizada", start_selected_campaign = "Comenzar campaña", } tooltip.custom_campaign_window = { choose_campaign = "Selecciona una campaña para ver más información sobre la misma.", start_selected_campaign = "Cargar el primer nivel de esta campaña.", } save_game_window = { caption = "Guardar partida (%1%)", new_save_game = "Nueva partida guardada", } tooltip.save_game_window = { save_game = "Sobrescribir guardado %s", new_save_game = "Introduce el nombre de la partida guardada.", } save_map_window = { caption = "Guardar mapa (%1%)", new_map = "Nuevo mapa", } tooltip.save_map_window = { map = "Sobrescribir el mapa %s.", new_map = "Introduce el nombre del mapa guardado.", } menu_list_window = { name = "Nombre", save_date = "Modificado", back = "Volver", } tooltip.menu_list_window = { name = "Pulsa aquí para ordenar la lista por nombres.", save_date = "Pulsa aquí para ordenar la lista por la última fecha de modificación.", back = "Cerrar esta ventana.", } options_window = { caption = "Opciones", option_on = "Sí", option_off = "No", fullscreen = "Pantalla completa", resolution = "Resolución", custom_resolution = "Personalizar...", width = "Ancho", height = "Alto", audio = "Sonido", customise = "Personalizar", folder = "Carpetas", language = "Idioma del juego", apply = "Aplicar", cancel = "Cancelar", back = "Volver", } tooltip.options_window = { fullscreen = "Ejecuta el juego en pantalla completa o en una ventana.", fullscreen_button = "Pulsa aquí para activar el modo de pantalla completa.", resolution = "Cambia la resolución en la que funcionará el juego.", select_resolution = "Selecciona una nueva resolución.", width = "Introduce el ancho de la pantalla.", height = "Introduce la altura de la pantalla.", apply = "Aplica la resolución seleccionada.", cancel = "Vuelve sin cambiar la resolución.", audio_button = "Activa o desactiva todos los sonidos del juego.", audio_toggle = "Activa o desactiva el sonido.", customise_button = "Más opciones para personalizar tu experiencia de juego.", folder_button = "Opciones de carpetas.", language = "Selecciona el idioma de los textos.", select_language = "Selecciona el idioma del juego.", language_dropdown_item = "Seleccionar el idioma %s.", back = "Cierra la ventana de opciones.", } customise_window = { caption = "Opciones personalizadas", option_on = "Activado", option_off = "Desactivado", back = "Volver", movies = "Control de vídeos", intro = "Mostrar introducción", paused = "Construir en pausa", volume = "Tecla de volumen", aliens = "Pacientes alienígenas", fractured_bones = "Fracturas óseas", average_contents = "Contenidos habituales", } tooltip.customise_window = { movies = "Control global de vídeos, permite desactivar todos los vídeos.", intro = "Activa o desactiva el vídeo de introducción. Necesitas activar el control global de vídeos si quieres ver la introducción cada vez que arranques CorsixTH.", paused = "En Theme Hospital el jugador solo podía utilizar el menú superior si la partida estaba en pausa. CorsixTH funciona así de forma predeterminada, pero al activar esta opción se puede acceder a todo mientras el juego esté en pausa.", volume = "Si la tecla de bajar volumen abre también el botiquín, utiliza esta opción para cambiar el acceso directo a Mayúsculas + C.", aliens = "Debido a la falta de animaciones decentes disponibles, hemos hecho que los pacientes con ADN alienígena solo aparezcan en una emergencia. Para permitir que los pacientes con ADN alienígena puedan visitar tu hospital, desactiva esta opción.", fractured_bones = "Debido a una animación deficiente, hemos hecho que no existan pacientes con Fracturas óseas femeninas. Para permitir que las pacientes con Fracturas óseas visiten tu hospital, desactiva esta opción.", average_contents = "Activa esta opción si quieres que el juego recuerde los objetos adicionales que sueles añadir cuando construyes habitaciones.", back = "Cerrar este menú y volver al menú de opciones.", } folders_window = { caption = "Ubicación de carpetas", data_label = "Datos de TH", font_label = "Fuente", music_label = "MP3", savegames_label = "Part. guardadas", screenshots_label = "Capt. de pantalla", -- next four are the captions for the browser window, which are called from the folder setting menu new_th_location = "Aquí puedes especificar una nueva carpeta de instalación de Theme Hospital. El juego se reiniciará en cuanto selecciones la nueva carpeta.", savegames_location = "Selecciona la carpeta que quieres utilizar para tus partidas guardadas.", music_location = "Selecciona la carpeta que quieres utilizar para tu música.", screenshots_location = "Selecciona la carpeta que quieres utilizar para tus capturas de pantalla.", back = "Volver", } tooltip.folders_window = { browse = "Buscar la ubicación de la carpeta", data_location = "La carpeta con la instalación del Theme Hospital original, necesario para ejecutar CorsixTH.", font_location = "La ubicación de una fuente de letra capaz de mostrar caracteres Unicode necesarios para tu idioma. Si no se indica, no podrás seleccionar idiomas que tengan más caracteres de los que puede dar el juego original, por ejemplo, ruso y chino.", savegames_location = "La carpeta de partidas guardadas se ubica de forma predeterminada junto al archivo de configuración y se utilizará para almacenar las partidas guardadas. Si no te gusta, puedes seleccionar otra buscando la carpeta que quieres usar.", screenshots_location = "Las capturas de pantalla se guardan de forma predeterminada en una carpeta junto al archivo de configuración. Si no te gusta, puedes seleccionar otra buscando la carpeta que quieres usar.", music_location = "Selecciona una carpeta con tus archivos de música en formato MP3. Necesitas una carpeta ya existente, entonces podrás buscarla.", browse_data = "Buscar otra ubicación con una instalación de Theme Hospital. (Ubicación actual: %1%)", browse_font = "Buscar otro archivo de fuente de letra. (Ubicación actual: %1%)", browse_saves = "Buscar otra ubicación para tu carpeta de partidas guardadas. (Ubicación actual: %1%)", browse_screenshots = "Buscar otra ubicación para tu carpeta de capturas de pantalla. (Ubicación actual: %1%)", browse_music = "Buscar otra ubicación para tu carpeta de música. (Ubicación actual: %1%)", no_font_specified = "¡No se ha especificado una carpeta de fuentes!", not_specified = "¡No se ha especificado una carpeta!", default = "Ubicación predeterminada", reset_to_default = "Vuelve a asignar la carpeta a su ubicación predeterminada.", -- original_path = "Carpeta actual con la instalación del Theme Hospital original", -- where is this used, I have left if for the time being? back = "Cerrar este menú y volver al menú de Opciones.", } font_location_window = { caption = "Seleccionar fuente (%1%)", } handyman_window = { all_parcels = "Todas las parcelas", parcel = "Parcela" } tooltip.handyman_window = { parcel_select = "Parcela donde el bedel acepta encargos, haz clic para cambiar el ajuste" } new_game_window = { caption = "Campaña", player_name = "Nombre", option_on = "Activado", option_off = "Desactivado", difficulty = "Dificultad", easy = "Novato (Fácil)", medium = "Médico (Normal)", hard = "Especialista (Difícil)", tutorial = "Tutorial", start = "Comenzar", cancel = "Cancelar", } tooltip.new_game_window = { player_name = "Introduce el nombre que usará el juego para dirigirse a ti.", difficulty = "Selecciona el nivel de dificultad con el que quieres jugar.", easy = "Si acabas de conocer los juegos de simulación, esta dificultad es para ti.", medium = "Esta es la dificultad intermedia, si no estás seguro de a dónde quieres ir.", hard = "Si ya estás acostumbrado a este tipo de juegos y quieres un buen desafío, aquí lo tendrás.", tutorial = "Selecciona esta casilla si necesitas ayuda para empezar a jugar.", start = "Empezar la partida con la configuración seleccionada.", cancel = "¡Perdón, yo no quería empezar una nueva partida!", } lua_console = { execute_code = "Ejecutar", close = "Cerrar", } tooltip.lua_console = { textbox = "Introduce aquí el código Lua que quieres ejecutar", execute_code = "Ejecutar el código Lua que has introducido", close = "Cerrar la consola", } errors = { dialog_missing_graphics = "Los archivos de datos de la demo no contienen esta ventana.", save_prefix = "Error al guardar la partida: ", load_prefix = "Error al cargar la partida: ", no_games_to_contine = "No hay partidas guardadas.", load_quick_save = "Error, no existe el guardado rápido y por tanto no se puede cargar, pero tranquilo, que acabamos de generar uno para ti.", map_file_missing = "¡No se ha podido encontrar el archivo de mapa %s de este nivel!", minimum_screen_size = "Introduce un tamaño de pantalla como mínimo de 640x480.", unavailable_screen_size = "El tamaño de pantalla que has seleccionado no está disponible en el modo de pantalla completa.", alien_dna = "NOTA: Los pacientes alienígenas no tienen animaciones para sentarse, abrir puertas, llamar a puertas, etc. Por lo tanto, al igual que en Theme Hospital, para hacer estas cosas aparentarán cambiar a una imagen normal y luego volverán a su estado. Los pacientes con ADN alienígena solo aparecerán si el archivo del nivel lo indica.", fractured_bones = "NOTA: La animación de las pacientes femeninas con Fracturas óseas no es perfecta.", could_not_load_campaign = "Error al cargar la campaña %s.", could_not_find_first_campaign_level = "No se ha encontrado el primer nivel de la campaña %s.", } warnings = { levelfile_variable_is_deprecated = "Aviso: El nivel %s contiene una definición de variable obsoleta en el archivo del nivel." .. "'%LevelFile' ha sido renombrado como '%MapFile'. Avisa al creador del mapa para que actualice el nivel.", } confirmation = { needs_restart = "Para cambiar este ajuste debes reiniciar CorsixTH. Se perderá todo el progreso que no hayas guardado. ¿Seguro que quieres continuar?", abort_edit_room = "Ahora mismo estás construyendo o editando una habitación. Si has colocado todos los objetos necesarios será terminada, de lo contrario se borrará. ¿Quieres continuar?", maximum_screen_size = "El tamaño de pantalla que has introducido es mayor que 3000x2000. Es posible utilizar una resolución más grande, pero necesitarás un ordenador potente para que la velocidad de fotogramas sea aceptable. ¿Seguro que quieres continuar?", music_warning = "Nota: Necesitas el archivo smpeg.dll o el equivalente para tu sistema operativo, de lo contrario no tendrás música en el juego. ¿Quieres continuar?", } information = { custom_game = "Bienvenido a CorsixTH. ¡Diviértete con este mapa personalizado!", no_custom_game_in_demo = "La versión demo no permite jugar a mapas personalizados.", cannot_restart = "Esta partida personalizada se guardó antes de que se implementara la característica de reiniciar.", very_old_save = "Desde que empezaste a jugar en este nivel, el juego ha recibido muchas actualizaciones. Para asegurarte de que todas las características funcionen como es debido, deberías pensar en volver a empezar.", level_lost = { "¡Qué pena! Has fracasado en este nivel. ¡Ya tendrás más suerte la próxima vez!", "La razón por la que has perdido es:", reputation = "Tu reputación ha caído por debajo de %d.", balance = "Tu cuenta bancaria ha llegado a tener menos de %d.", percentage_killed = "Has matado a más de un %d por ciento de los pacientes.", cheat = "¿Lo has elegido tú o te has equivocado de botón? No sabes ni hacer trampas como es debido... ¿a que no tiene gracia?", }, cheat_not_possible = "No puedes usar ese truco en este nivel. No sabes ni hacer trampas, ¿a que no tiene gracia?", } tooltip.information = { close = "Cerrar la ventana de información", } totd_window = { tips = { "Todo hospital necesita una mesa de recepción y una consulta para empezar a funcionar. A partir de ahí depende del tipo de pacientes que visite tu hospital. Eso sí, una farmacia siempre es una buena opción.", "Las máquinas como el inflador necesitan mantenimiento. Contrata a un par de bedeles para que reparen tus máquinas o podrías herir a tus pacientes y a tu personal.", "Tu personal se cansará pasado un tiempo. Procura construir una sala de personal para que puedan relajarse.", "Coloca varios radiadores para mantener calentitos a tu personal y empleados o se enfadarán. Usa el mapa de la ciudad para buscar las zonas que no tienen calefacción en tu hospital.", "El nivel de cualificación de un médico influye en la calidad y la velocidad de sus diagnósticos. Si asignas un médico cualificado a tu consulta no necesitarás tantas consultas de diagnosis.", "Los principiantes y los médicos pueden mejorar su cualificación si un especialista les enseña en la sala de formación. Si el especialista tiene una cualificación especial (cirujano, psiquiatra o investigador), también enseñará sus conocimientos a sus alumnos.", "¿Has probado a meter el número de emergencias (112) en el fax? ¡Asegúrate de tener el sonido activado!", "Puedes ajustar algunos parámetros como la resolución y el idioma del juego en la ventana de opciones, que se encuentra tanto en el menú principal como dentro del juego.", "¿Has seleccionado el castellano, pero sigues viendo textos en inglés en algún lugar? ¡Avísanos de qué líneas de texto están en inglés para que podamos traducirlas!", "¡El equipo de CorsixTH busca refuerzos! ¿Te interesa programar, traducir o crear gráficos para CorsixTH? Contáctanos en nuestro foro, lista de correo o canal IRC (corsix-th en freenode).", "Si encuentras un fallo, puedes enviarnos un informe en nuestro registro de fallos: th-issues.corsix.org", "Cada nivel tiene unos requisitos concretos que debes conseguir antes de poder avanzar al siguiente nivel. Mira en la ventana de estado para ver como llevas los objetivos del nivel.", "Si quieres editar o quitar una habitación ya existente, puedes hacerlo con el botón Editar habitación, en la barra de herramientas inferior.", "Cuando tengas muchos pacientes esperando, puedes averiguar quienes están esperando para una habitación en concreto pasando el cursor por encima de la habitación.", "Pulsa en la puerta de una habitación para ver su cola. Aquí puedes afinar ciertas cosas, como el orden la cola o mandar a un paciente hacia otra habitación.", "El personal que no esté contento pedirá aumentos de sueldo con frecuencia. Asegúrate de que tu personal trabaja en un entorno cómodo para evitar que esto ocurra.", "Los pacientes tendrán sed mientras esperan en tu hospital, ¡y más si subes la calefacción! Coloca máquinas de bebidas en lugares estratégicos para ganar un dinerillo extra.", "Puedes cancelar el progreso del diagnóstico de un paciente y adivinar la cura si ya has descubierto la enfermedad. Ten en cuenta que esto aumentará el riesgo de darle el tratamiento equivocado, lo que matará al paciente.", "Las emergencias pueden ser una buena forma de ganar un dinerillo extra, siempre y cuando tengas la capacidad suficiente para ocuparte de los pacientes de la emergencia a tiempo.", }, previous = "Siguiente consejo", next = "Consejo anterior", } tooltip.totd_window = { previous = "Mostrar el consejo anterior", next = "Mostrar el consejo siguiente", } debug_patient_window = { caption = "Paciente de depuración", } cheats_window = { caption = "Trucos", warning = "Advertencia: ¡No conseguirás bonificaciones al acabar este nivel si haces trampas!", cheated = { no = "Se han usado trucos: No", yes = "Se han usado trucos: Sí", }, cheats = { money = "Truco de dinero", all_research = "Truco de todo investigado", emergency = "Crear una emergencia", vip = "Crear un VIP", earthquake = "Crear terremoto", epidemic = "Generar un paciente contagioso", toggle_infected = "Mostrar/ocultar iconos de infección", create_patient = "Crear un paciente", end_month = "Fin de mes", end_year = "Fin del año", lose_level = "Perder el nivel", win_level = "Ganar el nivel", increase_prices = "Subir precios", decrease_prices = "Bajar precios", }, close = "Cerrar", } tooltip.cheats_window = { close = "Cerrar la ventana de trucos", cheats = { money = "Añade 10.000 dólares a tu cuenta bancaria.", all_research = "Completa todas las investigaciones.", emergency = "Crea una emergencia.", vip = "Crea un VIP.", earthquake = "Crea un terremoto.", epidemic = "Crea un paciente contagioso que podría provocar una epidemia.", toggle_infected = "Muestra u oculta los iconos de infección para la epidemia activa.", create_patient = "Crea un paciente en el borde del mapa.", end_month = "Avanza hasta el fin del mes actual.", end_year = "Avanza hasta el final del año actual.", lose_level = "Hace que pierdas el nivel actual.", win_level = "Hace que ganes el nivel actual.", increase_prices = "Aumenta los precios en un 50% (200% máximo).", decrease_prices = "Reduce los precios en un 50% (50% mínimo).", } } introduction_texts = { demo = "¡Bienvenido al hospital de demostración!" .. "Por desgracia, la demo sólo contiene este nivel. ¡Pero tiene más que suficiente para distraerte un buen rato!" .. "Te enfrentarás a varias enfermedades que deberás curar construyendo varias salas. De vez en cuando pueden aparecer emergencias. Necesitarás investigar varios tipos de consultas utilizando una consulta de investigación." .. "Tu objetivo es ganar 100.000 dólares, una reputación de 700, que tu hospital tenga un valor de 70.000 dólares y que hayas curado al menos al 75% de tus pacientes." .. "Procura que tu reputación no caiga por debajo de 300 y no mates a más del 40% de tus pacientes o perderás el nivel." .. "¡Suerte!", } calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d llamadas, %d asignadas", staff = "%s - %s", watering = "Regando @ %d,%d", repair = "Reparar %s", close = "Cerrar", } tooltip.calls_dispatcher = { task = "Lista de tareas: Pulsa en una tarea para abrir la ventana del personal asignado y desplázate hasta la posición de la tarea.", assigned = "Esta opción está activada si alguien ha sido asignado a la tarea correspondiente.", close = "Cerrar la ventana de llamadas de control.", } update_window = { caption = "¡Actualización disponible!", new_version = "Versión nueva:", current_version = "Versión actual:", download = "Ir a la página de descargas", ignore = "Saltar e ir al menú principal", } tooltip.update_window = { download = "Ir a la página de descargas para obtener la última versión de CorsixTH.", ignore = "Ignorar esta actualización por el momento. Volverás a ser notificado la próxima vez que ejecutes CorsixTH.", } map_editor_window = { pages = { inside = "Interior", outside = "Exterior", foliage = "Vegetación", hedgerow = "Setos", pond = "Estaque", road = "Camino", north_wall = "Muro norte", west_wall = "Muro oeste", helipad = "Helipuerto", delete_wall = "Borrar muros", parcel_0 = "Parcela 0", parcel_1 = "Parcela 1", parcel_2 = "Parcela 2", parcel_3 = "Parcela 3", parcel_4 = "Parcela 4", parcel_5 = "Parcela 5", parcel_6 = "Parcela 6", parcel_7 = "Parcela 7", parcel_8 = "Parcela 8", parcel_9 = "Parcela 9", camera_1 = "Cámara 1", camera_2 = "Cámara 2", camera_3 = "Cámara 3", camera_4 = "Cámara 4", heliport_1 = "Helipuerto 1", heliport_2 = "Helipuerto 2", heliport_3 = "Helipuerto 3", heliport_4 = "Helipuerto 4", paste = "Pegar zona", } } -------------------------------- UNUSED ----------------------------------- ------------------- (kept for backwards compatibility) ---------------------- options_window.change_resolution = "Cambiar resolución" tooltip.options_window.change_resolution = "Cambia la resolución de la ventana utilizando la dimensión indicada a la izquierda." CorsixTH-0.61/CorsixTH/Lua/languages/swedish.lua000066400000000000000000001056421321660673500215270ustar00rootroot00000000000000--[[ Copyright (c) 2010-2016 Manuel "Roujin" Wolf, Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] Language("Svenska", "Swedish", "sv", "swe") Inherit("english") Inherit("original_strings", 5) Encoding(utf8) ------------------------------- OVERRIDE ---------------------------------- object.reception_desk = "Reception" -- "Psyket" means something entirely different than "Psykiatrin" rooms_long.psychiatric = "Den psykiatriska avdelningen" rooms_short.psychiatric = "Psykiatri" tooltip.rooms.psychiatry = "I den psykiatriska avdelningen kureras galningar och man hjälper ocksÃ¥ till med diagnoser av andra patienter. Här behövs en läkare med psykiatrisk kompetens" adviser.staff_place_advice.only_psychiatrists = "Läkare utan psykiatrisk examen kan inte arbeta inom psykiatrin." adviser.room_requirements.psychiatry_need_psychiatrist = "Nu när du byggt en psykiatrisk avdelning mÃ¥ste du ocksÃ¥ anställa en psykiater." room_descriptions.psych = { "Den psykiatriska avdelningen//", "Patienter som fÃ¥r diagnosen psykisk sjukdom mÃ¥ste uppsöka den psykiatriska avdelningen för att fÃ¥ behandling. Psykiatriker kan ocksÃ¥ ställa diagnoser, ta reda pÃ¥ vilken typ av sjukdom patienterna har och, i det fall det är mentalt behandla dem pÃ¥ den pÃ¥litliga gamla britsen.//", "Här behövs en läkare utbildad i psykiatri. " } introduction_texts.level1 = "Välkommen till ditt första sjukhus!//Sätt igÃ¥ng genom att placera ut en reception och bygga en allmänpraktik, anställ en receptionist och en läkare. " .. "Vänta därefter pÃ¥ att jobben ska trilla in. En bra idé vore att bygga en psykmottagning och anställa en läkare med psykiatrisk kompetens. " .. "Ett apotek och en syster behövs ocksÃ¥ för att du ska kunna bota dina patienter. Se upp för svÃ¥ra fall av pöshuvud - ett pumprum behövs för att greja dessa. " .. "Försök bota 10 personer och se till att ditt anseende inte sjunker under 200." tooltip.staff_list.next_person = "Visa nästa sida" tooltip.staff_list.prev_person = "Visa föregÃ¥ende sida" -- Improve tooltips in staff window to mention hidden features tooltip.staff_window.face = "Vederbörandes ansikte - klicka för att öppna personalhanteraren" tooltip.staff_window.center_view = "Vänsterklicka för att komma till personen, högerklicka för att gÃ¥ igenom personalen en och en" confirmation.restart_level = "Är du säker pÃ¥ att du vill starta om nivÃ¥n?" -- In English the squits becomes the the squits, see issue 1646. In Swedish it stays the same, but it -- still needs to be defined. adviser.research.drug_improved_1 = "Medicinen mot %s har förbättrats av din forskaravdelning." ------------------------------- NEW STRINGS ------------------------------- object.litter = "Skräp" tooltip.objects.litter = "Skräp: Lämnat Ã¥t sitt öde eftersom patienten inte kunde hitta nÃ¥gon papperskorg." tooltip.fax.close = "Stäng fönstret utan att ta bort meddelandet" tooltip.message.button = "Vänsterklicka för att öppna meddelandet" tooltip.message.button_dismiss = "Vänsterklicka för att öppna meddelandet, högerklicka för att ta bort det" tooltip.casebook.cure_requirement.hire_staff = "Du behöver anställa personal att hantera behandlingen" tooltip.casebook.cure_type.unknown = "Du vet ännu inte hur denna sjukdom botas" tooltip.research_policy.no_research = "Det pÃ¥gÃ¥r ingen forskning i den här kategorin just nu" tooltip.research_policy.research_progress = "Framsteg inför nästa upptäckt i denna kategori: %1%/%2%" handyman_window.all_parcels = "Alla tomter" handyman_window.parcel = "Tomt" tooltip.handyman_window.parcel_select = "Tomten där vaktmästaren accepterar uppdrag. Klicka för att ändra" tooltip.new_game_window.player_name = "Skriv in det namn du vill kallas i spelet" new_game_window.player_name = "Namn" menu.player_count = "ANTAL SPELARE" menu_options = { lock_windows = " LÃ…S FÖNSTER ", edge_scrolling = " KANTRULLNING ", adviser_disabled = " MEDHJÄLPARE ", warmth_colors = " VÄRMEFÄRGER ", wage_increase = " LÖNFÖRFRÃ…GNINGAR ", twentyfour_hour_clock = " 24-TIMMARSKLOCKA " } menu_options_game_speed = { pause = " (P) PAUSA ", slowest = " (1) LÃ…NGSAMMAST ", slower = " (2) LÃ…NGSAMMARE ", normal = " (3) NORMAL ", max_speed = " (4) MAXHASTIGHET ", and_then_some_more = " (5) OCH SÃ… LITE TILL ", } menu_options_warmth_colors = { choice_1 = " RÖD ", choice_2 = " BLÃ… GRÖN RÖD ", choice_3 = " GUL ORANGE RÖD ", } menu_options_wage_increase = { grant = " BEVIJLA ", deny = " NEKA ", } -- Add F-keys to entries in charts menu (except briefing), also town_map was added. menu_charts = { bank_manager = " (F1) BANKKAMRER ", statement = " (F2) KONTOUTDRAG ", staff_listing = " (F3) PERSONALLEDNING ", town_map = " (F4) STADSKARTA ", casebook = " (F5) MEDICINJOURNAL ", research = " (F6) FORSKNING ", status = " (F7) STATUS ", graphs = " (F8) GRAFER ", policy = " (F9) POLICY ", } menu_file.restart = " STARTA OM " menu_debug = { jump_to_level = " HOPPA TILL NIVÃ… ", connect_debugger = " (CTRL + C) KOPPLA LUA DBGp SERVER ", transparent_walls = " (X) TRANSPARENTA VÄGGAR ", limit_camera = " BEGRÄNSA KAMERAN ", disable_salary_raise = " STÄNG AV LÖNEÖKNINGAR ", make_debug_fax = " SKAPA DEBUGFAX ", make_debug_patient = " SKAPA DEBUGPATIENT ", cheats = " (F11) FUSK ", lua_console = " (F12) LUATERMINAL ", debug_script = " (SHIFT + D) KÖR DEBUGSKRIPT ", calls_dispatcher = " ANROPSKLARERARE ", dump_strings = " SKAPA TEXTFILER ", dump_gamelog = " (CTRL+D) DUMPA SPELLOGG ", map_overlay = " KARTÖVERSIKT ", sprite_viewer = " GRAFIKVISARE ", } menu_debug_overlay = { none = " INGET ", flags = " FLAGGOR ", positions = " KOORDINATER ", heat = " TEMPERATUR ", byte_0_1 = " BYTE 0 & 1 ", byte_floor = " BYTE GOLV ", byte_n_wall = " BYTE N VÄGG ", byte_w_wall = " BYTE W VÄGG ", byte_5 = " BYTE 5 ", byte_6 = " BYTE 6 ", byte_7 = " BYTE 7 ", parcel = " TOMT ", } menu_player_count = { players_1 = " 1 SPELARE ", players_2 = " 2 SPELARE ", players_3 = " 3 SPELARE ", players_4 = " 4 SPELARE ", } adviser = { room_forbidden_non_reachable_parts = "Rummet kan inte placeras här eftersom delar av sjukhuset dÃ¥ blir oÃ¥tkomliga.", warnings = { no_desk = "Det kanske börjar bli dags att bygga en reception och anställa en receptionist?", no_desk_1 = "Om du vill att det ska komma patienter till sjukhuset sÃ¥ behövs en receptionist och en reception där hon kan jobba!", no_desk_2 = "Snyggt jobbat, det mÃ¥ste vara ett världsrekord: nästan ett Ã¥r och inte en enda patient! Om du vill fortsätta som chef pÃ¥ det här sjukhuset sÃ¥ mÃ¥ste du anställa en receptionist och bygga en reception som hon kan jobba i!", no_desk_3 = "Helt otroligt, nästan ett Ã¥r och du har fortfarande ingen bemannad reception! Tror du det kommer nÃ¥gra patienter dÃ¥? Sluta leka omkring och fixa till det här nu!", no_desk_4 = "En receptionist behöver ha en egen disk som hon kan hälsa patienterna välkomna vid", no_desk_5 = "Det var pÃ¥ tiden, nu borde det snart börja dyka upp patienter!", no_desk_6 = "Du har en receptionist, det kanske är dags att bygga en reception som hon kan arbeta vid?", no_desk_7 = "Nu har du en reception, vad sägs om att anlita en receptionist ocksÃ¥? Det lär inte komma nÃ¥gra patienter förrän du gjort det!", cannot_afford = "Du har inte tillräckligt med pengar pÃ¥ banken för att anställa den personen!", cannot_afford_2 = "du har inte tillräckligt med pengar pÃ¥ banken för att genomföra det köpet!", falling_1 = "Nämen! Det där inte kul, om du inte ser dig för var du klickar sÃ¥ kan nÃ¥gon skada sig!", falling_2 = "Sluta strula omkring, hur tror du det känns?", falling_3 = "Ajaj, det mÃ¥ste ha gjort ont. Ring en läkare!", falling_4 = "Det här är ett sjukhus, inte ett nöjesfält!", falling_5 = "Jag tror inte det här är rätt arena att knuffa omkull folk pÃ¥, det är sjuka vet du!", falling_6 = "Det här är inte en bowlinghall, sjuka människor ska inte behandlas sÃ¥!", research_screen_open_1 = "Du behöver bygga en forskningsavdelning innan du fÃ¥r tillgÃ¥ng till forskningsskärmen.", research_screen_open_2 = "PÃ¥ den här nivÃ¥n finns det ingen möjlighet till forskning.", researcher_needs_desk_1 = "Varje forskare behöver ett skrivbord att jobba vid.", researcher_needs_desk_2 = "Din forskare är nöjd över att fÃ¥ en välbehövlig paus. Om du ville ha flera forskare aktiva samtidigt sÃ¥ behöver de fÃ¥ var sitt skrivbord.", researcher_needs_desk_3 = "En forskare behöver alltid ett skrivbord.", nurse_needs_desk_1 = "Varje sköterska behöver ett eget skrivbord.", nurse_needs_desk_2 = "Din sköterska är glad att fÃ¥ en paus. Du kanske ville ha flera personer att jobba pÃ¥ avdelningen? DÃ¥ behöver de var sitt skrivbord.", low_prices = "Du tar för lite betalt för %s. Det lockar visserligen fler patienter, men du kommer inte att tjäna sÃ¥ mycket pÃ¥ var och en.", high_prices = "Avgiften pÃ¥ %s är hög. Du tjänar mycket kortsiktigt, men till slut kommer du att driva iväg folk.", fair_prices = "Avgiften pÃ¥ %s verkar rimlig och balanserad.", patient_not_paying = "En patient lämnade just sjukhuset utan att betala för %s eftersom det är alldeles för dyrt!", }, cheats = { th_cheat = "Ojoj, nÃ¥n vill fuska sig till segern!", roujin_on_cheat = "Roujin's utmaning aktiverad! Lycka till...", roujin_off_cheat = "Roujin's utmaning avaktiverad.", }, } dynamic_info.patient.actions.no_gp_available = "Väntar pÃ¥ att du ska bygga en allmänpraktik" dynamic_info.staff.actions.heading_for = "PÃ¥ väg till %s" dynamic_info.staff.actions.fired = "Sparkad" dynamic_info.patient.actions.epidemic_vaccinated = "Jag smittar inte längre" progress_report.free_build = "FRITT BYGGANDE" fax = { choices = { return_to_main_menu = "GÃ¥ till huvudmenyn", accept_new_level = "GÃ¥ vidare till nästa nivÃ¥", decline_new_level = "Fortsätt spela ett tag till", }, emergency = { num_disease_singular = "Vi har 1 person som kräver omedelbar vÃ¥rd med %s.", free_build = "Om du lyckas ökar ditt anseende, men om du misslyckas kommer ditt anseende att fÃ¥ en rejäl känga." }, vip_visit_result = { remarks = { free_build = { "Det var ju ett trevligt sjukhus du har! Inte sÃ¥ svÃ¥rt att fÃ¥ det sÃ¥ bra utan begränsande budget dock, eller hur?", "Jag är ingen ekonom, men jag tror att jag ocksÃ¥ hade kunnat driva det här sjukhuset, om du förstÃ¥r vad jag menar...", "Ett mycket väld fungerande sjukhus mÃ¥ jag säga. Akta lÃ¥gkonjunkturen bara! Just det... du behöver inte oroa dig över pengar nä.", } } } } letter = { dear_player = "Käre %s", custom_level_completed = "Bra gjort! Du klarade alla mÃ¥l pÃ¥ den här specialnivÃ¥n!", return_to_main_menu = "Vill du gÃ¥ tillbaka till huvudmenyn eller fortsätta spela?", campaign_level_completed = "Bra jobbat! Du klarade nivÃ¥n, men det är inte över än!\n Vill du ha jobbet som chef vid %s?", campaign_completed = "Otroligt! Du lyckades med alla nivÃ¥er. Nu är det bara att mysa och njuta av att fylla forum överallt pÃ¥ nätet om dina bedrifter. Lycka till!", campaign_level_missing = "Ledsen, men det verkar som att nästa nivÃ¥ pÃ¥ den här kampanjen saknas. (Namn: %s)", } install = { title = "--------------------------------- CorsixTH Setup ---------------------------------", th_directory = "CorsixTH behöver en kopia av filerna frÃ¥n det ursprungliga spelet (eller dess demo) för att kunna köras. Använd väljaren nedan för att lokalisera mappen där Theme Hospital installerats.", ok = "OK", exit = "Avsluta", cancel = "Avbryt", } misc.not_yet_implemented = "(ej tillgänglig ännu)" misc.no_heliport = "Antingen har inga sjukdomar upptäckts ännu, eller sÃ¥ finns det ingen helikopterplatta pÃ¥ den här nivÃ¥n." main_menu = { new_game = "Originalkampanjen", custom_campaign = "Nya kampanjer", custom_level = "Enskild nivÃ¥", continue = "Fortsätt spel", load_game = "Ladda spel", options = "Alternativ", map_edit = "Kartredigerare", savegame_version = "Sparningsversion: ", version = "Version: ", exit = "Avsluta", } tooltip.main_menu = { new_game = "Starta nivÃ¥ ett i originalkampanjen frÃ¥n Theme Hospital", custom_campaign = "Spela en kampanj som är skapad av andra spelare", custom_level = "Bygg ditt sjukhus pÃ¥ en valfri nivÃ¥", load_game = "Ladda ett sparat spel", options = "Fixa till dina inställningar", map_edit = "Starta kartredigeraren för att skapa din egen karta", exit = "Nej! Du vill väl inte sluta redan?", quit = "Du hÃ¥ller pÃ¥ att avsluta CorsixTH. Är du säker pÃ¥ att du vill det?" } load_game_window = { caption = "Ladda spel", } tooltip.load_game_window = { load_game = "Ladda %s", load_game_number = "Ladda spel %d", load_autosave = "Ladda autosparningen", } custom_game_window = { caption = "Enskilda nivÃ¥er", free_build = "Bygg fritt", load_selected_level = "Starta", } tooltip.custom_game_window = { choose_game = "Välj en nivÃ¥ för att läsa mer om den", free_build = "Bocka för den här rutan om du vill spela utan pengar och vinst- och förlustkriterier", load_selected_level = "Ladda och spela den valda nivÃ¥n", } custom_campaign_window = { caption = "Nya kampanjer", start_selected_campaign = "Starta kampanj", } tooltip.custom_campaign_window = { choose_campaign = "Välj en kampanj för att läsa mer om den", start_selected_campaign = "Ladda den första nivÃ¥n pÃ¥ den valda kampanjen", } save_game_window = { caption = "Spara spel", new_save_game = "Ny sparfil", } tooltip.save_game_window = { save_game = "Skriv över %s", new_save_game = "Skriv namnet pÃ¥ den nya filen", } save_map_window = { caption = "Spara karta (%1%)", new_map = "Ny karta", } tooltip.save_map_window = { map = "Skriv över kartan %s", new_map = "Skriv ett kartnamn", } menu_list_window = { name = "Namn", save_date = "Senast ändrad", back = "Tillbaka", } tooltip.menu_list_window = { name = "Klicka här för att sortera listan efter namn", save_date = "Klicka här för att sortera listan efter daturm dÃ¥ spelen sparades", back = "Stäng detta fönster", } options_window = { caption = "Alternativ", option_on = "PÃ¥", option_off = "Av", fullscreen = "Helskärm", resolution = "Upplösning", custom_resolution = "Anpassad...", width = "Bredd", height = "Höjd", audio = "Globalt ljud", customise = "Anpassa", folder = "Mappar", language = "SpelsprÃ¥k", apply = "Tillämpa", cancel = "Avbryt", back = "Tillbaka", } tooltip.options_window = { fullscreen = "Om spelet ska köras i fullskärmsläge eller fönsterläge", fullscreen_button = "Klicka för att gÃ¥ mellan fönster och helskärm", resolution = "Upplösning spelet ska köras i", select_resolution = "Välj en ny upplösning", width = "Fyll i önskad skärmbredd", height = "Fyll i önskad skärmhöjd", apply = "Tillämpa den valda upplösningen", cancel = "Ã…tervänd utan att ändra upplösning", audio_button = "Stäng av eller sätt pÃ¥ allt ljud i spelet", audio_toggle = "SlÃ¥ av eller pÃ¥", customise_button = "Fler inställningar som kan ändras för att anpassa din spelupplevelse", folder_button = "Mappinställningar", language = "Text i spelet kommer att visas pÃ¥ det här sprÃ¥ket", select_language = "Väljs spelsprÃ¥k", language_dropdown_item = "Ändra till %s som sprÃ¥k", back = "Stäng alternativmenyn", } customise_window = { caption = "Extra inställningar", option_on = "PÃ¥", option_off = "Av", back = "Tillbaka", movies = "Global filmkontroll", intro = "Spela introfilmen", paused = "Bygg i pausläge", volume = "Tangent: volym ner", aliens = "Utomjordingar", fractured_bones = "Krossad patient", average_contents = "GenomsnittsinnehÃ¥ll", } tooltip.customise_window = { movies = "Välj om filmer ska spelas överhuvudtaget", intro = "Skippa introfilmen när du startar spelet. Global filmkontroll mÃ¥ste vara pÃ¥slagen om du spela introfilmen varje gÃ¥ng du laddar CorsixTH", paused = "I Theme Hospital fick spelaren bara använda verktygsfältet längst upp när spelet var pausat. SÃ¥ är det i CorsixTH ocksÃ¥ sÃ¥vida du inte aktiverar funktionen att bygga även när spelet är pausat här", volume = "Om du rÃ¥kat ut för att tangenten som sänker volymen även öppnar medicinjournalen, slÃ¥ pÃ¥ det här alternativet för att ändra snabbkommando till medicinjournalen till Shift + C", aliens = "Eftersom det inte finns ordentliga animeringar har vi gjort sÃ¥ att patienter med utomjordiskt DNA endast dyker upp som akutfall. Stäng av det här för att kunna fÃ¥ utomjordiskt DNA-fall även som vanliga besök", fractured_bones = "PÃ¥ grund av en dÃ¥lig animering har vi stängt av kvinnliga patienter med frakturer (Krossad patient). Stäng av det här, sÃ¥ kommer det att dyka upp även kvinnor med den Ã¥komman", average_contents = "Om du vill att spelet ska komma ihÃ¥g vilka extra föremÃ¥l du normalt sett brukar handla till nya rum, slÃ¥ pÃ¥ detta alternativ", back = "Stäng den här menyn och gÃ¥ tillbaka till Alternativmenyn", } folders_window = { caption = "Mappinställningar", data_label = "TH Data", font_label = "Typsnitt", music_label = "MP3", savegames_label = "Sparningar", screenshots_label = "Skärmbilder", -- next four are the captions for the browser window, which are called from the folder setting menu new_th_location = "Här kan du välja en ny sökväg där Theme Hospital ligger. SÃ¥ fort du väljer en ny mapp kommer spelet att startas om!", savegames_location = "Välj var sparade spel ska läggas.", music_location = "Välj en mapp med musik i för att spela den i spelet.", screenshots_location = "Välj vilken mapp du vill spara skärmbilder till.", back = "Tillbaka", } tooltip.folders_window = { browse = "Bläddra efter mappsökväg", data_location = "Mapp där originalspelet Theme Hospital finns. Krävs för att spela CorsixTH", font_location = "Sökväg till en typsnittsfil som kan visa Unicode-tecken som krävs för ditt sprÃ¥k. Om detta inte är specificerat kommer du inte att kunna välja sÃ¥dana sprÃ¥k, till exempel ryska och kinesiska", savegames_location = "Som standard läggs sparade spel i en mapp som ligger bredvid konfigurationsfilen. Om det inte fungerar kan du välja en egen här", screenshots_location = "Skärmbilder sparas som standard i en mapp bredvid konfigurationsfilen. Här kan du välja en annan mapp istället", music_location = "Välj en sökväg där du har mp3-filer. Mappen mÃ¥ste redan finnas", browse_data = "Bläddra efter en ny sökväg till Theme Hospital ( nuvarande sökväg: %1% )", browse_font = "Bläddra efter en annan typsnittsfil ( nuvarande sökväg:: %1% )", browse_saves = "Bläddra efter en annan mapp att lägga sparade spel i ( nuvarande sökväg:: %1% ) ", browse_screenshots = "Bläddra efter en annan mapp för skärmbilder ( nuvarande sökväg:: %1% ) ", browse_music = "Bläddra efter en annan mapp med musik ( nuvarande sökväg:: %1% ) ", no_font_specified = "Ingen typsnittsfil vald än!", not_specified = "Ingen sökväg vald än!", default = "Standardsökväg", reset_to_default = "Ã…terställ mappen till standardsökvägen", back = "Stäng den här dialogen och Ã¥tergÃ¥ till alternativmenyn", } font_location_window = { caption = "Välj typsnitt (%1%)", } new_game_window = { caption = "Kampanj", option_on = "PÃ¥", option_off = "Av", difficulty = "SvÃ¥righetsgrad", easy = "Junior (Lätt)", medium = "Läkare (Medel)", hard = "Konsult (SvÃ¥r)", tutorial = "Starthjälp", start = "Börja", cancel = "Avbryt", } tooltip.new_game_window = { easy = "Om du känner dig ny pÃ¥ denna typ av spel är detta läget för dig", medium = "Detta är den gyllene medelvägen om du är osäker pÃ¥ vad du ska välja", hard = "Känner du för en utmaning och är van vid den här typen av spel är det här rätt val", difficulty = "Välj vilken svÃ¥righetsgrad spelet ska ha", start = "Börja spela med dessa inställningar", tutorial = "Vill du ha lite hjälp pÃ¥ traven i början, tryck ner den här rutan", cancel = "Oj, det var ju egentligen inte meningen att starta ett nytt spel!", } lua_console = { execute_code = "Exekvera", close = "Stäng", } tooltip.lua_console = { textbox = "Skriv in Luakod att köra här", execute_code = "Kör koden du skrivit", close = "Stäng terminalen", } errors = { dialog_missing_graphics = "Tyvärr innehÃ¥ller demon inte den här dialogrutan.", save_prefix = "Fel när spelet skulle sparas: ", load_prefix = "Fel när spelet skulle laddas: ", no_games_to_contine = "Det finns inga sparade spel.", load_quick_save = "Fel, kan inte ladda en snabbsparning eftersom det inte finns nÃ¥gon. Men oroa dig inte, nu har vi skapat en Ã¥t dig!", map_file_missing = "Kunde inte hitta kartfilen %s till den här nivÃ¥n!", minimum_screen_size = "Skärmupplösningen mÃ¥ste vara Ã¥tminstone 640x480.", unavailable_screen_size = "Skärmupplösningen du valde finns inte i fullskärmsläge.", alien_dna = "NOTERA: Det finns inga animeringar för patienter med utomjordiskt DNA när de sitter ner, öppnar dörrar osv. Precis som i Theme Hospital gör de därför det i mänsklig skepnad. Dessa patienter anländer som vanligt endast om nivÃ¥n du spelar definierat att sjukdomen ska finnas", fractured_bones = "NOTERA: Animeringen för kvinnliga Krossade patienter är inte perfekt", could_not_load_campaign = "Kunde inte ladda kampanjen %s", could_not_find_first_campaign_level = "Kunde inte hitta den första nivÃ¥n pÃ¥ den här kampanjen: %s", } warnings = { levelfile_variable_is_deprecated = "Notera: NivÃ¥n '%s' innehÃ¥ller en förÃ¥ldrad variabeldefinition i nivÃ¥filen." .. "'%LevelFile' har bytt namn till '%MapFile'. Meddela nivÃ¥skaparen att uppdatera nivÃ¥n.", } confirmation = { needs_restart = "Att ändra denna inställning kräver en omstart av spelet. Osparad data kommer att gÃ¥ förlorad. Är du säker pÃ¥ att du vill göra detta?", abort_edit_room = "Du hÃ¥ller pÃ¥ att bygga eller ändra ett rum. Om alla obligatoriska föremÃ¥l är placerade kommer rummet att färdigställas som det är, annars tas det bort. Fortsätta?", maximum_screen_size = "Upplösningen du valt är större än 3000 x 2000. Större upplösningar är möjliga, men kräver bättre hÃ¥rdvara. Är du säker pÃ¥ att du vill fortsätta?", music_warning = "Notera: När du väljer att använda mp3-filer som spelmusik behövs smpeg.dll eller motsvarande för ditt operativsystem, annars blir det ingen musik i spelet. Vill du fortsätta?", } information = { custom_game = "Välkommen till CorsixTH. Ha nu riktigt kul med den här specialnivÃ¥n!", no_custom_game_in_demo = "Ledsen, men det gÃ¥r inte att spela enskilda nivÃ¥er med demofilerna.", cannot_restart = "Tyvärr sparades detta spel innan funktionen att starta om hade implementerats.", very_old_save = "Det har hänt en hel del med spelet sedan du startade den här nivÃ¥n. För att vara säker pÃ¥ att allt fungerar som det är tänkt kan det vara bra att överväga att starta om nivÃ¥n.", level_lost = { "Attans! Du förlorade. Bättre lycka nästa gÃ¥ng!", "Anledning till att du förlorade:", reputation = "Ditt anseende föll under %d.", balance = "Din bankbalans sjönk till under %d.", percentage_killed = "Du dödade mer än %d procent av dina patienter.", cheat = "Var det verkligen ditt val eller tryckte du bara pÃ¥ fel knapp? SÃ¥ du kan inte ens fuska ordentligt, trÃ¥kigt för dig...", }, cheat_not_possible = "Det gÃ¥r inte att använda det fusket pÃ¥ den här nivÃ¥n. Du misslyckas till och med att fuska, det kan inte vara roligt!", } tooltip.information = { close = "Stäng informationsrutan", } totd_window = { tips = { "Alla sjukhus behöver en reception och en allmänpraktik för att fungera. Sedan beror allt pÃ¥ vad det är för patienter som besöker sjukhuset. Ett hett tips är att börja med ett apotek.", "Maskiner som till exempel pumpen behöver underhÃ¥ll dÃ¥ och dÃ¥. Anställ en vaktmästare eller tvÃ¥ för att reparera dem, annars riskeras personalens och patienternas hälsa.", "Efter ett tag kommer din personal att bli trött. Se till att göra ett personalrum sÃ¥ att de kan slappna av lite.", "För att inte dina anställda och alla patienter ska bli arga gäller det att ha tillräckligt med element utplacerade lite här och där. Använd stadskartan för att hitta ställen som behöver mer värme.", "En läkares kompetensnivÃ¥ pÃ¥verkar kvaliteten och hastigheten pÃ¥ hans diagnoser ganska mycket. Sätt en riktigt kompetent läkare i allmänpraktiken sÃ¥ behövs det inte sÃ¥ mÃ¥nga andra diagnosrum.", "Juniorer och läkare kan höja sin kompetensnivÃ¥ genom att gÃ¥ i träning hos en konsult i utbildningsrummet. Om konsulten har nÃ¥gon färdighet (kirurg, psykiater eller forskare) kommer han ocksÃ¥ att lära ut detta till sina elever.", "Har du testat att slÃ¥ numret till SOS Alarm pÃ¥ faxen? Se till att ljudet är pÃ¥slaget...", "Det gÃ¥r att göra vissa inställningar som till exempel upplösning och sprÃ¥k i alternativmenyn som finns bÃ¥de i huvudmenyn och inuti spelet.", "Hittar du en massa text pÃ¥ engelska i spelet? Hjälp oss översätta färdigt till Svenska!", "Teamet bakom CorsixTH söker förstärkning! Vill du koda, översätta eller skapa grafik till spelet? Kontakta oss i forumet, pÃ¥ mejllistan eller i IRC-kanalen (corsix-th at freenode).", "Om du hittar en bugg, rapportera den gärna i vÃ¥r bugghanterare pÃ¥ adressen th-issues.corsix.org.", "Varje nivÃ¥ har vissa krav som ska uppfyllas innan du kan gÃ¥ vidare till nästa. Kolla statusfönstret för att se hur nära mÃ¥len du är.", "Om du vill ändra eller ta bort ett existerande rum kan du göra det med hjälp av ändra rum-knappen i panelen längst ner (saxen).", "Om du ur högen av patienter vill ta reda pÃ¥ vilka som köar till ett visst rum är det bara att föra muspekaren över rummet.", "Klicka pÃ¥ dörren till ett rum för att se kön till det. Sedan gÃ¥r det att genomföra finlir som att ändra ordning eller skicka en patient till ett annat likadant rum.", "Olycklig personal frÃ¥gar efter löneökning ofta. Se till att de jobbar i en behaglig miljö sÃ¥ händer det inte.", "Patienter blir törstiga när de väntar pÃ¥ sin tur, ännu mer om du sätter upp värmen! Sätt ut läskautomater pÃ¥ strategiska platser för lite extra inkomst.", "Det gÃ¥r att avbryta diagnosprocessen för en patient i förtid och gissa behandling om sjukdomen är känd. Notera att detta ökar risken för felbehandling - och dödsfall.", "Akutfall kan vara ett smidigt sätt att fÃ¥ in lite extra stÃ¥lar, sÃ¥vida du har kapacitet att hantera alla patienter i tid vill säga.", }, previous = "FöregÃ¥ende tips", next = "Nästa tips", } tooltip.totd_window = { previous = "Visa föregÃ¥ende tips", next = "Visa nästa tips", } debug_patient_window = { caption = "Debug Patient", } cheats_window = { caption = "Fusk", warning = "Varning: Du kommer inte att fÃ¥ bonuspoäng pÃ¥ slutet av nivÃ¥n om du fuskar!", cheated = { no = "Har fuskat: Nej", yes = "Har fuskat: Ja", }, cheats = { money = "Pengar", all_research = "All forskning", emergency = "Skapa akutfall", vip = "Skapa VIP", earthquake = "Skapa jordbävning", epidemic = "Skapa en smittande patient", toggle_infected = "Visa infekterad-ikonen", create_patient = "Skapa patient", end_month = "MÃ¥nadsslut", end_year = "Hoppa till nyÃ¥r", lose_level = "Förlora nivÃ¥", win_level = "Vinn nivÃ¥", increase_prices = "Öka priser", decrease_prices = "Minska priser", }, close = "Stäng", } tooltip.cheats_window = { close = "Stäng fuskfönstret", cheats = { money = "Ökar din balans med 10 000.", all_research = "Färdigställer all forskning.", emergency = "Skapar ett akutfall.", vip = "Skapar en Mycket Viktig Person (VIP)", earthquake = "Skapar en jordbävning med slumpad styrka", epidemic = "Skapar en person som smittar sÃ¥ att en epidemi kan starta", toggle_infected = "Växlar mellan att visa ikoner vid en upptäckt, aktiv epidemi", create_patient = "Skapar en patient vid kanten av kartan.", end_month = "Hoppar till slutet av mÃ¥naden.", end_year = "Hoppar till slutet av Ã¥ret.", lose_level = "Förlora nuvarande nivÃ¥.", win_level = "Vinn nuvarande nivÃ¥.", increase_prices = "Öka alla priser med 50% (max. 200%)", decrease_prices = "Minska alla priser med 50% (min. 50%)", } } introduction_texts = { demo = "Välkommen till demosjukhuset!" .. "Tyvärr innehÃ¥ller demon bara denna nivÃ¥. ÄndÃ¥ finns det garanterat tillräckligt att göra ett tag framöver!" .. "Du kommer att rÃ¥ka ut för diverse sjukdomar som kräver olika rum för att botas. " .. "Ibland kan olyckor hända, sÃ¥ att det kommer akutfall till sjukhuset. Dessutom behöver du forska för att upptäcka fler rum." .. "MÃ¥let är att tjäna $100,000, ha ett sjukhusvärde av $70,000 och 700 i anseende, samtidigt som du botar minst 75% av patienterna." .. "Se till att ditt anseende inte sjunker under 300 och att du inte dödar mer än 40% av dina patienter, annars förlorar du." .. "Lycka till!", } calls_dispatcher = { -- Dispatcher description message. Visible in Calls Dispatcher dialog summary = "%d anrop; %d tilldelade", staff = "%s - %s", watering = "Vattnar @ %d,%d", repair = "Reparera %s", close = "Stäng", } tooltip.calls_dispatcher = { task = "Lista över uppgifter - klicka pÃ¥ en uppgift för att öppna tilldelad personals fönster och flytta vyn till det ställe där uppgiften finns.", assigned = "Denna ruta är markerad om nÃ¥gon har fÃ¥tt uppgiften tilldelad till sig.", close = "Stäng anropsklarerardialogen", } update_window = { caption = "Updatering tillgänglig!", new_version = "Ny version:", current_version = "Din version:", download = "GÃ¥ till nedladdningssidan", ignore = "Skippa och gÃ¥ till huvudmenyn", } tooltip.update_window = { download = "gÃ¥ till nedladdningssidan där du hittar den absolut senaste versionen av CorsixTH", ignore = "Skippa updateringen just nu. Du kommer att fÃ¥ en ny notis nästa gÃ¥ng du öppnar CorsixTH", } map_editor_window = { pages = { inside = "Inomhus", outside = "Utomhus", foliage = "Grönska", hedgerow = "Häck", pond = "Damm", road = "Väg", north_wall = "Nordlig vägg", west_wall = "Västlig vägg", helipad = "Helikopterplatta", delete_wall = "Ta bort väggar", parcel_0 = "Tomt 0", parcel_1 = "Tomt 1", parcel_2 = "Tomt 2", parcel_3 = "Tomt 3", parcel_4 = "Tomt 4", parcel_5 = "Tomt 5", parcel_6 = "Tomt 6", parcel_7 = "Tomt 7", parcel_8 = "Tomt 8", parcel_9 = "Tomt 9", camera_1 = "Kamera 1", camera_2 = "Kamera 2", camera_3 = "Kamera 3", camera_4 = "Kamera 4", heliport_1 = "Heliport 1", heliport_2 = "Heliport 2", heliport_3 = "Heliport 3", heliport_4 = "Heliport 4", paste = "Klistra in", } } date_format.daymonth = "%1% %2:months%" original_credits[301] = ":Operations" original_credits[302] = "," original_credits[303] = "Steve Fitton" original_credits[304] = " " original_credits[305] = " " original_credits[306] = " " original_credits[307] = ":Company Administration" original_credits[308] = "," original_credits[309] = "Audrey Adams" original_credits[310] = "Annette Dabb" original_credits[311] = "Emma Gibbs" original_credits[312] = "Lucia Gobbo" original_credits[313] = "Jo Goodwin" original_credits[314] = "Sian Jones" original_credits[315] = "Kathy McEntee" original_credits[316] = "Louise Ratcliffe" original_credits[317] = " " original_credits[318] = " " original_credits[319] = " " original_credits[320] = ":Company Management" original_credits[321] = "," original_credits[322] = "Les Edgar" original_credits[323] = "Peter Molyneux" original_credits[324] = "David Byrne" original_credits[325] = " " original_credits[326] = " " original_credits[327] = ":All at Bullfrog Productions" original_credits[328] = " " original_credits[329] = " " original_credits[330] = " " original_credits[331] = ":Special Thanks to" original_credits[332] = "," original_credits[333] = "Everyone at Frimley Park Hospital" original_credits[334] = " " original_credits[335] = ":Especially" original_credits[336] = "," original_credits[337] = "Beverley Cannell" original_credits[338] = "Doug Carlisle" original_credits[339] = " " original_credits[340] = " " original_credits[341] = " " original_credits[342] = ":Keep On Thinking" original_credits[343] = " " original_credits[344] = " " original_credits[345] = " " original_credits[346] = " " original_credits[347] = " " original_credits[348] = " " original_credits[349] = " " original_credits[350] = " " original_credits[351] = " " original_credits[352] = " " original_credits[353] = " " original_credits[354] = " " original_credits[355] = " " original_credits[356] = " " original_credits[357] = " " original_credits[358] = " " original_credits[359] = " " original_credits[360] = " " original_credits[361] = "." -------------------------------- UNUSED ----------------------------------- ------------------- (kept for backwards compatibility) ---------------------- options_window.change_resolution = "Ändra upplösning" tooltip.options_window.change_resolution = "Ändra upplösning till de dimensioner ifyllda till vänster" CorsixTH-0.61/CorsixTH/Lua/languages/traditional_chinese.lua000066400000000000000000004112001321660673500240570ustar00rootroot00000000000000--[[ Copyright (c) 2012 lwglwsss Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- Note: This file contains UTF-8 text. Make sure your editor is set to UTF-8. Font("unicode") Language("ç¹é«”中文", "Chinese (traditional)", "zh(t)", "chi(t)", "zho(t)") Inherit("english") Encoding(utf8) ------------------------------------ --NEW STRINGS IN LANGUAGE "ç¹é«”中文": ------------------------------------ date_format = { daymonth = "%2%月 %1%æ—¥", } misc = { no_heliport = "Either no diseases have been discovered yet, or there is no heliport on this map.", not_yet_implemented = "(尚未實ç¾)", } debug_patient_window = { caption = "Debug Patient", } totd_window = { previous = "上一個æç¤º", tips = { [1] = "Every hospital needs a reception desk and a GP's office to get going. After that, it depends on what kind of patients are visiting your hospital. A pharmacy is always a good choice, though.", [2] = "Machines such as the Inflation need maintenance. Employ a handyman or two to repair your machines, or you'll risk your staff and patients getting hurt.", [3] = "After a while, your staff will get tired. Be sure to build a staff room, so they can relax.", [4] = "Place enough radiators to keep your staff and patients warm, or they will become unhappy. Use the town map to locate any spots in your hospital that need more heating.", [5] = "A doctor's skill level greatly influences the quality and speed of his diagnoses. Place a skilled doctor in your GP's office, and you won't need as many additional diagnosis rooms.", [6] = "Juniors and doctors can improve their skills by learning from a consultant in the training room. If the consultant has a special qualification (surgeon, psychiatrist or researcher), he will also pass on this knowledge to his pupil(s).", [7] = "Did you try to enter the European emergency number (112) into the fax machine? Make sure your sound is on!", [8] = "You can adjust some settings such as the resolution and language in the options window found both in the main menu and ingame.", [9] = "You selected a language other than English, but there's English text all over the place? Help us by translating missing texts into your language!", [10] = "The CorsixTH team is looking for reinforcements! Are you interested in coding, translating or creating graphics for CorsixTH? Contact us at our Forum, Mailing List or IRC Channel (corsix-th at freenode).", [11] = "If you find a bug, please report it at our bugtracker: th-issues.corsix.org", [12] = "Each level has certain requirements to fulfill before you can move on to the next one. Check the status window to see your progression towards the level goals.", [13] = "If you want to edit or remove an existing room, you can do so with the edit room button found in the bottom toolbar.", [14] = "In a horde of waiting patients, you can quickly find out which ones are waiting for a particular room by hovering over that room with your mouse cursor.", [15] = "Click on the door of a room to see its queue. You can do useful fine tuning here, such as reordering the queue or sending a patient to another room.", [16] = "Unhappy staff will ask for salary rises frequently. Make sure your staff is working in a comfortable environment to keep that from happening.", [17] = "Patients will get thirsty while waiting in your hospital, even more so if you turn up the heating! Place vending machines in strategic positions for some extra income.", [18] = "You can abort the diagnosis progress for a patient prematurely and guess the cure, if you already encountered the disease. Beware that this may increase the risk of a wrong cure, resulting in death for the patient.", [19] = "Emergencies can be a good source for some extra cash, provided that you have enough capacities to handle the emergency patients in time.", }, next = "下一個æç¤º", } tooltip = { totd_window = { previous = "顯示上一個æç¤º", next = "顯示下一個æç¤º", }, message = { button = "Left click to open message", button_dismiss = "Left click to open message, right click to dismiss it", }, custom_game_window = { start_game_with_name = "%s", }, cheats_window = { close = "Close the cheats dialog", cheats = { end_month = "Jumps to the end of the month.", emergency = "Creates an emergency.", win_level = "Win the current level.", create_patient = "Creates a Patient at the map border.", money = "Adds 10.000 to your bank balance.", lose_level = "Lose the current level.", all_research = "Completes all research.", end_year = "Jumps to the end of the year.", }, }, casebook = { cure_requirement = { hire_staff = "您需è¦é›‡å‚­äººå“¡ä¾†æ²»ç™‚該疾病", }, cure_type = { unknown = "您還ä¸çŸ¥é“如何治療該疾病", }, }, main_menu = { exit = "退出", custom_level = "è‡ªè¨‚éŠæˆ²", options = "é¸é …", }, menu_list_window = { back = "返回", }, new_game_window = { hard = "éŠæˆ²é›£åº¦ï¼šå›°é›£", cancel = "返回", tutorial = "éŠæˆ²ä¸Šæ‰‹æ•™ç¨‹", easy = "éŠæˆ²é›£åº¦ï¼šç°¡å–®", medium = "éŠæˆ²é›£åº¦ï¼šä¸­ç­‰", }, save_game_window = { new_save_game = "", save_game = "%s", }, calls_dispatcher = { assigned = "This box is marked if someone is assigned to the corresponding task.", task = "List of tasks - click task to open assigned staff's window and scroll to location of task", close = "Close the calls dispatcher dialog", }, research_policy = { research_progress = "Progress towards the next discovery in this category: %1%/%2%", no_research = "No research is being carried out in this category at the moment", }, information = { close = "關閉", }, lua_console = { textbox = "Enter Lua code to run here", execute_code = "Run the code you have entered", close = "Close the console", }, load_game_window = { load_game = "%s", load_autosave = "Load autosave", load_game_number = "Load game %d", }, fax = { close = "關閉此視窗,但ä¸åˆªé™¤æ¶ˆæ¯", }, objects = { litter = "Litter: Left on the floor by a patient because he did not find a bin to throw it in.", }, options_window = { fullscreen_button = "全螢幕", change_resolution = "更改解æžåº¦", height = "垂直åƒç´ ", width = "æ°´å¹³åƒç´ ", language = "轉æ›èªžè¨€ç‚º%s", back = "返回", }, } custom_game_window = { caption = "è‡ªè¨‚éŠæˆ²", } cheats_window = { cheats = { end_month = "End of Month", emergency = "Create Emergency", win_level = "Win Level", create_patient = "Create Patient", money = "Money Cheat", lose_level = "Lose Level", all_research = "All Research Cheat", end_year = "End of Year", }, close = "Close", caption = "Cheats", cheated = { no = "Cheats used: No", yes = "Cheats used: Yes", }, warning = "Warning: You will not get any bonus points at the end of the level if you cheat!", } errors = { unavailable_screen_size = "The screen size you requested is not available in fullscreen mode.", dialog_missing_graphics = "Sorry, the demo data files don't contain this dialog.", maximum_screen_size = "Please enter a screen size of at most 3000x2000.", load_prefix = "Error while loading game: ", save_prefix = "Error while saving game: ", map_file_missing = "Could not find the map file %s for this level!", minimum_screen_size = "Please enter a screen size of at least 640x480.", } main_menu = { exit = "退出", custom_level = "è‡ªè¨‚éŠæˆ²", new_game = "é–‹å§‹éŠæˆ²", load_game = "è£è¼‰éŠæˆ²", options = "é¸é …", } menu_debug = { lua_console = " (F12) LUA CONSOLE ", disable_salary_raise = " DISABLE SALARY RAISE ", make_debug_fax = " MAKE DEBUG FAX ", make_debug_patient = " MAKE DEBUG PATIENT ", sprite_viewer = " SPRITE VIEWER ", dump_strings = " DUMP STRINGS ", map_overlay = " MAP OVERLAY ", calls_dispatcher = " CALLS DISPATCHER ", cheats = " (F11) CHEATS ", dump_gamelog = " (CTRL+D) DUMP GAME LOG ", limit_camera = " LIMIT CAMERA ", transparent_walls = " (X) TRANSPARENT WALLS ", jump_to_level = " JUMP TO LEVEL ", } menu_options = { edge_scrolling = " 開啟滑鼠æ²å‹•", lock_windows = " 鎖定視窗", settings = " é¸é …", } menu_options_game_speed = { pause = " æš«åœ", } lua_console = { execute_code = "Execute", close = "Close", } install = { title = "--------------------------------- CorsixTH éŠæˆ²è¨­å®š ---------------------------------", th_directory = "é‹è¡Œæ¸¸æˆ²éœ€è¦åŽŸç‰ˆææž—ä¹Ÿç˜‹ç‹‚ã€‚è«‹æŒ‡å®šåŽŸç‰ˆææž—也瘋狂游戲安è£è³‡æ–™å¤¾ã€‚", } load_game_window = { caption = "è£è¼‰éŠæˆ²", } adviser = { cheats = { th_cheat = "Congratulations, you have unlocked cheats!", hairyitis_cheat = "Hairyitis cheat activated!", roujin_on_cheat = "Roujin's challenge activated! Good luck...", crazy_on_cheat = "Oh no! All doctors have gone crazy!", bloaty_off_cheat = "Bloaty Head cheat deactivated.", bloaty_cheat = "Bloaty Head cheat activated!", crazy_off_cheat = "Phew... the doctors regained their sanity.", roujin_off_cheat = "Roujin's challenge deactivated.", hairyitis_off_cheat = "Hairyitis cheat deactivated.", }, room_forbidden_non_reachable_parts = "Placing the room in this location would result in parts of the hospital not being reachable.", } calls_dispatcher = { repair = "Repair %s", summary = "%d calls; %d assigned", close = "Close", watering = "Watering @ %d,%d", staff = "%s - %s", } information = { level_lost = { [1] = "您失敗了ï¼éŠæˆ²çµæŸã€‚", [2] = "由於:", reputation = "è²æœ›ä½Žæ–¼%d。", balance = "銀行帳戶資金低於%d。", percentage_killed = "殺死了%d的病人。", }, cannot_restart = "Unfortunately this custom game was saved before the restart feature was implemented.", custom_game = "Welcome to CorsixTH. Have fun with this custom map!", } new_game_window = { hard = "專家(難)", cancel = "返回", tutorial = "ç¬¬ä¸€æ¬¡éŠæˆ²", easy = "實習醫生(容易)", medium = "醫生(一般)", } options_window = { fullscreen = "全螢幕", height = "", width = "", change_resolution = "更改解æžåº¦", back = "返回", } menu_list_window = { back = "返回", } save_game_window = { caption = "ä¿å­˜éŠæˆ²", new_save_game = "", } fax = { choices = { decline_new_level = "繼續經營這個醫院", accept_new_level = "接手下一個醫院", return_to_main_menu = "返回到主é¸å–®", }, } menu_debug_overlay = { heat = " TEMPERATURE ", byte_0_1 = " BYTE 0 & 1 ", byte_6 = " BYTE 6 ", flags = " FLAGS ", byte_7 = " BYTE 7 ", byte_5 = " BYTE 5 ", byte_floor = " BYTE FLOOR ", positions = " POSITIONS ", byte_w_wall = " BYTE W WALL ", parcel = " PARCEL ", byte_n_wall = " BYTE N WALL ", none = " NONE ", } confirmation = { abort_edit_room = "You are currently building or editing a room. If all required objects are placed it will be finished, but otherwise it will be deleted. Continue?", needs_restart = "Changing this setting requires CorsixTH to restart. Any unsaved progress will be lost. Are you sure you want to do this?", } dynamic_info = { patient = { actions = { no_gp_available = "您需è¦å»ºé€ ä¸€èˆ¬è¨ºæ–·å®¤", }, }, staff = { actions = { fired = "已解雇", heading_for = "å‰å¾€%s", }, }, } introduction_texts = { demo = "Welcome to the demo hospital!" .. "Unfortunately the demo version only contains this level. However, there is more than enough to do here to keep you busy for a while!" .. "You will encounter various diseases that require different rooms to cure. From time to time, emergencies may occur. And you will need to research additional rooms using a research room." .. "Your goal is to earn $100,000, have a hospital value of $70,000 and a reputation of 700, while having cured at least 75% of your patients." .. "Make sure your reputation does not fall below 300 and that you don't kill off more than 40% of your patients, or you will lose." .. "Good luck!", } object = { litter = "Litter", } letter = { custom_level_completed = "Well done! You've completed all goals on this custom level!", dear_player = "Dear %s", return_to_main_menu = "Would you like to return to the main menu or continue playing?", } tooltip.custom_game_window.free_build = "Tick this box if you want to play without money or winning and losing conditions" tooltip.cheats_window.cheats.vip = "Creates a VIP." tooltip.menu_list_window.save_date = "Click here to sort the list by last modification date" tooltip.menu_list_window.name = "Click here to sort the list by name" tooltip.options_window.original_path = "The currently chosen directory of the original Theme Hospital installation" tooltip.options_window.browse = "Browse for another location of a Theme Hospital installation. %1%" custom_game_window.free_build = "Free Build" cheats_window.cheats.vip = "Create VIP" main_menu.version = "Version: " main_menu.savegame_version = "Savegame version: " progress_report.free_build = "FREE BUILD" menu_options.adviser_disabled = " 顯示助手" install.exit = "Exit" adviser.warnings.falling_2 = "Stop messing about, how would you like it?" adviser.warnings.no_desk_2 = "Well done, that must be a world record: nearly a year and no patients! If you want to continue as Manager of this hospital, you will need to hire a receptionist and build a reception desk for her to work from!" adviser.warnings.falling_5 = "This is not the place for knocking people over, they're ill you know!" adviser.warnings.falling_4 = "This is an Hospital, not a Theme Park!" adviser.warnings.falling_6 = "This is not a bowling alley, sick people should not be treated like that!" adviser.warnings.falling_3 = "Ouch, that had to hurt, someone call a Doctor!" adviser.warnings.no_desk_3 = "That's just brilliant, nearly a year and you don't have a staffed reception! How do you expect to get any patients, now get it sorted out and stop messing around!" adviser.warnings.cannot_afford = "You don't have enough money in the bank to hire that person!" adviser.warnings.no_desk = "You should build a reception desk and hire a receptionist at some point!" adviser.warnings.no_desk_1 = "If you want patients to come to your hospital, you will need to hire a receptionist and build her a desk to work at!" adviser.warnings.falling_1 = "Hey! that is not funny, watch where you click that mouse; someone could get hurt!" information.very_old_save = "There have been a lot of updates to the game since you started this level. To be sure that all features work as intended please consider restarting it." options_window.cancel = "å–æ¶ˆ" options_window.browse = "ç€è¦½..." options_window.new_th_directory = "Here you can specify a new Theme Hospital installation directory. As soon as you choose the new directory the game will be restarted." menu_list_window.save_date = "修改日期" menu_list_window.name = "å稱" fax.vip_visit_result.remarks.free_build[1] = "It is a very nice hospital you have there! Not very hard to get it working without money limitations though, eh?" fax.vip_visit_result.remarks.free_build[2] = "I'm no economist, but I think I could run this hospital too if you know what I mean..." fax.vip_visit_result.remarks.free_build[3] = "A very well run hospital. Watch out for the recession though! Right... you didn't have to worry about that." fax.emergency.free_build = "If you are successful your reputation will increase but if you fail your reputation will be seriously dented." fax.emergency.num_disease_singular = "There is 1 person with %s and they require immediate attention." ------------------------------------ --OLD STRINGS IN LANGUAGE "ç¹é«”中文": ------------------------------------ misc = { hospital_open = "醫院開門", save_success = "éŠæˆ²å­˜æª”æˆåŠŸ", save_failed = "錯誤:無法存檔", low_res = "低解æžåº¦", grade_adverb = { extremely = "極端的", mildly = "柔和的", moderately = "é©ç•¶çš„", }, send_message = "å‘玩家%d發é€ä¿¡æ¯", out_of_sync = "éŠæˆ²å¤±åŽ»åŒæ­¥", balance = "é›£åº¦é¸æ“‡ï¼š", load_failed = "å­˜æª”éŠæˆ²æ²’有被讀å–", mouse = "è€é¼ ", done = "完æˆ", force = "力é‡", pause = "æš«åœ", send_message_all = "呿‰€æœ‰çŽ©å®¶ç™¼é€ä¿¡æ¯", } staff_list = { morale = "士氣", tiredness = "疲勞程度", skill = "技能", total_wages = "工資總é¡", } research = { allocated_amount = "已分é…é‡", funds_allocation = "資金é…ç½®", categories = { improvements = "改良", drugs = "è—¥å“研究", diagnosis = "診斷儀器", cure = "治療儀器", specialisation = "專項", }, } queue_window = { num_in_queue = "隊ä¼é•·åº¦", num_entered = "造訪者人數", max_queue_size = "最大長度", num_expected = "é æœŸ", } staff_class = { doctor = "醫生", handyman = "清潔工人", receptionist = "接待員", nurse = "護士", surgeon = "外科醫生", } tooltip = { hire_staff_window = { prev_person = "查看å‰ä¸€å€‹äºº", cancel = "å–æ¶ˆ", psychiatrist = "精神病醫生", salary = "月薪", next_person = "查看後一個人", nurses = "查看å¯é›‡ç”¨çš„護士", surgeon = "外科醫生", handymen = "查看å¯é›‡ç”¨çš„æ¸…潔工人", doctors = "查看å¯é›‡ç”¨çš„醫生", doctor_seniority = "醫生資歷(實習醫生,醫生,專家)", hire = "雇用", researcher = "科研人員", qualifications = "醫生的特殊技能", receptionists = "查看å¯é›‡ç”¨çš„æŽ¥å¾…å“¡", staff_ability = "員工能力", }, handyman_window = { close = "å–æ¶ˆè«‹æ±‚", ability = "能力", face = "清潔工的é¢å­”", prio_machines = "æé«˜æ¸…潔工維修機器的優先級", prio_litter = "æé«˜æ¸…潔工清除垃圾的優先級", happiness = "快樂程度", prio_plants = "æé«˜æ¸…潔工給盆栽澆水的優先級", name = "清潔工的åå­—", tiredness = "疲勞程度", center_view = "切æ›åˆ°ç•¶å‰äººç‰©", salary = "工資", sack = "解雇", pick_up = "拾起", }, staff_list = { ability_2 = "員工的能力水準", next_person = "下一é ", detail = "細心程度", happiness = "顯示員工滿æ„程度", researcher_train = "已經接å—了%d%%的研究技能培訓", handymen = "查看醫院中被雇用清潔工人åå–®", tiredness = "顯示員工疲勞程度", researcher = "åˆæ ¼ç ”究人員", happiness_2 = "員工士氣", pay_rise = "æé«˜å“¡å·¥å·¥è³‡10%", bonus = "付給該員工10%çŽé‡‘", prev_person = "上一é ", nurses = "查看醫院中被雇用護士åå–®", psychiatrist = "åˆæ ¼ç²¾ç¥žç—…醫生", salary = "該員工當å‰å·¥è³‡", ability = "顯示員工能力水準", close = "é€€å‡ºä¸¦è¿”å›žéŠæˆ²", sack = "解雇員工", surgeon = "åˆæ ¼å¤–科醫生", tiredness_2 = "員工的疲勞程度", doctors = "查看醫院中被雇用醫生åå–®", doctor_seniority = "醫生資歷", view_staff = "查看員工工作情æ³", surgeon_train = "已經接å—了%d%%的外科培訓", skills = "特殊技能", receptionists = "查看醫院中被雇用接待員åå–®", psychiatrist_train = "已經接å—了%d%%的精神病治療培訓", }, research = { cure_inc = "æé«˜ç§‘研百分比", close = "關閉研究畫é¢", specialisation_dec = "é™ä½Žå°ˆé–€ç ”究百分比", diagnosis_dec = "é™ä½Žç§‘研百分比", allocated_amount = "已分é…é ç®—", improvements_inc = "æé«˜æ”¹è‰¯ç ”究百分比", drugs_dec = "é™ä½Žè—¥å“研究百分比", drugs_inc = "æé«˜è—¥å“研究百分比", cure_dec = "é™ä½Žç™‚效研究百分比", specialisation_inc = "æé«˜å°ˆé–€ç ”究百分比", improvements_dec = "é™ä½Žæ”¹è‰¯ç ”究百分比", diagnosis_inc = "æé«˜å„€å™¨ç ”究百分比", }, machine_window = { repair = "呼嫿¸…潔工維修機器", name = "åå­—", close = "關閉", times_used = "機器被使用次數", status = "機器狀æ³", replace = "改良機器", }, place_objects_window = { confirm = "確èª", cancel = "å–æ¶ˆ", pick_up = "拾起物å“", buy_sell = "è²·/賣物å“", }, status = { percentage_cured = "æ‚¨éœ€è¦æ²»ç™‚%d%%å‰ä¾†å°±è¨ºçš„ç—…äººã€‚ç•¶å‰æ‚¨å·²ç¶“治療了%d%%", thirst = "é†«é™¢ä¸­æ‰€æœ‰äººçš„ç¸½é«”å£æ¸´ç¨‹åº¦", close = "關閉總覽畫é¢", population_chart = "圖表顯示æ¯å€‹é†«é™¢å°ç•¶åœ°å±…æ°‘çš„å¸å¼•程度", win_progress_own = "顯示當å‰é€²å±•情æ³", reputation = "æ‚¨çš„è²æœ›å¿…須至少有%d。當å‰å€¼ç‚º%d", population = "您至少需è¦ç¸½äººå£çš„%d%%ä¾†è¨ªå•æ‚¨çš„醫院", warmth = "醫院中所有人的總體溫暖程度", percentage_killed = "ä»»å‹™è¦æ±‚最多åªèƒ½æ®ºæ­»%d%%的就診病人。到目å‰ç‚ºæ­¢ï¼Œæ‚¨å·²ç¶“殺死了%d%%的病人。", balance = "您的ç¾é‡‘必須至少有$%d。當å‰å€¼ç‚º$%d", value = "您的醫院價值必須至少有$%d。當å‰å€¼ç‚º$%d", win_progress_other = "顯示當å‰%sæ–¹é¢çš„進展情æ³", num_cured = "您的目標是治癒%d個病人。ç¾åœ¨æ‚¨å·²ç¶“治癒%d個", happiness = "醫院中所有人的總體快樂程度", }, queue_window = { end_of_queue = "拖動一ä½ç—…人到該按鈕處,將使其移動到隊尾", num_entered = "到目å‰ç‚ºæ­¢è©²æˆ¿é–“已處ç†ç—…人數目", close = "é—œé–‰é¢æ¿", num_in_queue = "排隊等候的病人數目", num_expected = "å³å°‡åŠ å…¥éšŠä¼çš„病人數目", front_of_queue = "拖動一ä½ç—…人到該按鈕處,將使其移動到隊首", dec_queue_size = "減少隊ä¼çš„æœ€å¤§é•·åº¦", max_queue_size = "接待員å…許的最大排隊人數", inc_queue_size = "增加隊ä¼çš„æœ€å¤§é•·åº¦", patient = "拖動病人將改變其排隊ä½ç½®ã€‚峿“ŠæŸå€‹ç—…人å¯ä»¥é¸æ“‡å°‡å…¶é£é€å›žå®¶æˆ–é£é€åˆ°ç«¶çˆ­å°æ‰‹çš„醫院。", patient_dropdown = { send_home = "讓病人離開醫院", hospital_2 = "將病人é€åˆ°å…¶å®ƒé†«é™¢", reception = "將病人é€åˆ°æŽ¥å¾…員處", hospital_1 = "將病人é€åˆ°å…¶å®ƒé†«é™¢", hospital_3 = "將病人é€åˆ°å…¶å®ƒé†«é™¢", }, }, jukebox = { rewind = "å‘後", loop = "循環播放", stop = "åœæ­¢æ’­æ”¾", close = "關閉音樂盒", current_title = "音樂盒", play = "播放", fast_forward = "å‘å‰", }, graphs = { deaths = "åˆ‡æ›æ­»äº¡äººæ•¸", close = "關閉圖表畫é¢", scale = "比例尺", money_out = "åˆ‡æ›æ”¯å‡º", visitors = "切æ›è¨ªå•人數", wages = "切æ›å·¥è³‡", balance = "切æ›ç¾é‡‘", money_in = "åˆ‡æ›æ”¶å…¥", cures = "åˆ‡æ›æ²»ç™’人數", reputation = "切æ›é†«é™¢åƒ¹å€¼", }, toolbar = { reputation = "è²æœ›", casebook = "治療手冊", edit = "編輯房間/物å“", staff_list = "員工管ç†", policy = "制度", date = "日期", charts = "圖表", objects = "設置走廊", balance = "ç¾é‡‘", research = "研究", hire = "雇用員工", status = "狀態", town_map = "城鎮地圖", rooms = "建造房屋", bank_button = "左擊進入銀行經ç†ç•«é¢ï¼Œå³æ“Šé€²å…¥éŠ€è¡Œå¸³æˆ¶", }, pay_rise_window = { accept = "æ»¿è¶³è¦æ±‚", decline = "拒絕ï¼å°‡å…¶è§£é›‡", }, town_map = { close = "退出城鎮地圖畫é¢", plants = "切æ›ç›†æ ½", fire_extinguishers = "åˆ‡æ›æ»…ç«å™¨", people = "切æ›äººå“¡", balance = "ç¾é‡‘", heat_dec = "減少供熱", heating_bill = "供暖費", radiators = "åˆ‡æ›æš–æ°£", objects = "切æ›ç‰©å“", heat_level = "供熱強度", heat_inc = "增加供熱", }, casebook = { sent_home = "轉走人數", cure_requirement = { hire_staff_old = "您需è¦é›‡ç”¨ä¸€å%s來治療該疾病", possible = "您有能力治療這種疾病", not_possible = "您還沒有能力治療該種疾病", ward_hire_nurse = "您需è¦ä¸€ä½è­·å£«åœ¨ç—…房中照料病人", hire_surgeon = "您需è¦é›‡ç”¨ç¬¬äºŒä½å¤–ç§‘é†«ç”Ÿä¾†å®Œæˆæ‰‹è¡“", research_machine = "您需è¦ç ”究一些儀器來治療這種疾病", build_room = "您需è¦ä¿®å»ºä¸€å€‹æˆ¿é–“來治療這種疾病", build_ward = "您需è¦å»ºé€ ä¸€å€‹ç—…房來治療該疾病", hire_surgeons = "您需è¦é›‡ç”¨å…©åå¤–ç§‘é†«ç”Ÿå®Œæˆæ‰‹è¡“", }, increase = "增加", up = "å‘上滾動", reputation = "æ²»ç™‚æˆ–è¨ºæ–·è²æœ›", research = "點擊這裡å¯ä»¥ç‚ºæ²»ç™‚使用專門研究é ç®—", close = "關閉治療手冊", earned_money = "總收入", cure_type = { psychiatrist = "ç”±ç²¾ç¥žç—…é†«ç”Ÿå®Œæˆæ²»ç™‚工作", drug_percentage = "治療使用藥å“ï¼å…¶ç™‚效為%d%%", drug = "治療時將使用藥å“", machine = "該疾病需è¦å„€å™¨è¼”助治療", surgery = "è©²ç–¾ç—…éœ€è¦æ‰‹è¡“", }, decrease = "減少", deaths = "死亡人數", cured = "治癒人數", down = "å‘下滾動", treatment_charge = "花費", }, policy = { diag_termination = "å°æ–¼ä¸€å€‹ç—…人的診斷將一直æŒçºŒåˆ°è¨­å®šçš„æ²»ç™‚çµæŸç™¾åˆ†æ¯”,或所有的診斷機器都已經嘗試一é", close = "關閉制度畫é¢", staff_leave = "點擊這裡å¯ä»¥è®“處於空閒狀態的員工幫助其他員工", diag_procedure = "å¦‚æžœé†«ç”Ÿçš„è¨ºæ–·çµæžœç‚ºï¼Œæ²»ç™’æ©ŸçŽ‡å°æ–¼è¨­å®šçš„é£é€å›žå®¶ç™¾åˆ†æ¯”,則該病人將被自動é£é€å›žå®¶ã€‚如果治癒機率大於設定的嘗試治療百分比,則該病人將被自動é€åŽ»é€²è¡Œæ²»ç™‚", staff_rest = "å“¡å·¥ä¼‘æ¯æ™‚的最低疲勞程度", staff_stay = "點擊這裡å¯ä»¥ä½¿æ‰€æœ‰å“¡å·¥åœç•™åœ¨è¨­å®šçš„æˆ¿é–“å…§", }, bank_manager = { graph = "顯示%s支付曲線", close = "關閉銀行經ç†ç•«é¢", hospital_value = "醫院當å‰åƒ¹å€¼", graph_return = "返回上個畫é¢", current_loan = "ç•¶å‰æœªå„Ÿé‚„貸款", borrow_5000 = "å‘銀行借款$5000", balance = "銀行ç¾é‡‘", interest_payment = "æ¯æœˆåˆ©æ¯æ”¯ä»˜", inflation_rate = "年通貨膨脹率", interest_rate = "年利率", repay_5000 = "å‘銀行償還$5000", show_graph = "顯示%s支付曲線", insurance_owed = "%s欠款的金é¡", }, main_menu = { network = "é–‹å§‹ç¶²è·¯éŠæˆ²", quit = "退出", continue = "ç¹¼çºŒéŠæˆ²", load_menu = { load_slot = "讀å–進度", empty_slot = "空", }, new_game = "é–‹å§‹æ–°éŠæˆ²", load_game = "讀入進度", }, patient_window = { graph = "通éŽé»žæ“Šå¯ä»¥åœ¨å¥åº·æƒ…æ³å’Œç—…歷之間切æ›", casebook = "查看有關疾病的詳細情æ³", close = "關閉", queue = "查看隊ä¼è©³ç´°è³‡æ–™", happiness = "快樂程度", warmth = "溫暖程度", center_view = "切æ›åˆ°ç•¶å‰äººç‰©", thirst = "壿¸´ç¨‹åº¦", send_home = "把病人趕出醫院", abort_diagnosis = "無需診斷直接去治療", }, watch = { emergency = "緊急情æ³ï¼šå‰©é¤˜æ™‚間內儘快治癒所有急救病人。", hospital_opening = "建造計時器:它主è¦ç”¨ä¾†æŒ‡ç¤ºè·é›¢é†«é™¢é–‹é–€çš„æ™‚間多少。直接點擊開門按鈕就å¯ä»¥ç«‹å³é–‹é–€è¿ŽæŽ¥å®¢äººã€‚", epidemic = "傳染病:剩餘時間內儘快阻止傳染病蔓延。當時間耗盡或一個被傳染病人離開醫院,則衛生巡查員將出ç¾ã€‚é€šéŽæŒ‰éˆ•å¯ä»¥åˆ‡æ›é é˜²æŽ¥ç¨®æ¨¡å¼é–‹æˆ–者關。點擊病人就å¯ä»¥è®“護士為其接種。", }, staff_window = { doctor_seniority = "è³‡æ­·ï¼æ˜¯å¯¦ç¿’醫生,醫生還是專家", psychiatrist = "精神病", close = "關閉", ability = "能力", pick_up = "拾起", sack = "解雇", surgeon = "外科", happiness = "快樂程度", salary = "月薪", name = "å“¡å·¥åå­—", tiredness = "疲勞程度", center_view = "點擊滑鼠å³éµåˆ‡æ›äººç‰©", skills = "特殊技術", researcher = "研究", face = "é¢å­”ï¼é»žæ“Šé€²å…¥ç®¡ç†", }, rooms = { ultrascan = "醫生使用超級掃瞄儀房間診斷病人", research_room = "æ“æœ‰ç ”究技能的醫生å¯ä»¥åœ¨ç ”究部門開發新的藥å“和機器。", fracture_clinic = "護士使用骨折診所治療骨折病人", gps_office = "病人在一般診斷室內接å—åˆå§‹è¨ºæ–·", inflation = "醫生使用充氣機房間治療頭部腫脹病人", staffroom = "醫生和護士在員工休æ¯å®¤å…§å¯ä»¥æ¢å¾©ç–²å‹ž", jelly_vat = "醫生使用膠桶診所治療失衡患者", scanner = "醫生使用掃æå„€æˆ¿é–“診斷病人", decontamination = "醫生使用淨化淋浴è£ç½®å¯ä»¥æ²»ç™‚放射病", pharmacy = "護士在藥房為病人é…藥治療", cardiogram = "醫生使用心電圖室診斷病人", ward = "ç—…æˆ¿å°æ–¼è¨ºæ–·å’Œæ²»ç™‚都是éžå¸¸æœ‰ç”¨çš„。病人手術å‰è¦åœ¨ç—…房中觀察一段時間。病房需è¦è­·å£«", training_room = "專家使用培訓室å°å…¶ä»–醫生進行培訓", operating_theatre = "手術中心需è¦å…©å具備外科技能的醫生", psychiatry = "精神病診斷治療室å¯ä»¥æ²»ç™‚ç²¾ç¥žç—…æ‚£è€…åŒæ™‚也能幫助診斷其他病人,但是需è¦ä¸€ä½æ“有精神病治療技能的醫生", hair_restoration = "醫生使用毛髮æ¢å¾©æˆ¿é–“治療禿頂病人", tongue_clinic = "醫生使用舌頭鬆弛診斷室治療舌頭鬆弛症病人", dna_fixer = "醫生使用DNAæ¢å¾©è£ç½®æˆ¿é–“治療外星人DNA病人", general_diag = "醫生使用高級診斷室為患者進行基本診斷。花費很少但效率很高", toilets = "建造洗手間å¯ä»¥é˜²æ­¢ç—…人把醫院弄得一團糟ï¼", electrolysis = "醫生使用電分解房間治療多毛症病人", x_ray = "醫生使用X光房間診斷病人", blood_machine = "醫生使用血液機器房間診斷病人", }, statement = { close = "關閉銀行帳戶畫é¢", }, buy_objects_window = { confirm = "購買物å“", cancel = "å–æ¶ˆ", increase = "多買一個", total_value = "訂購物å“總值", price = "物å“價格", decrease = "少買一個", }, window_general = { confirm = "確定", cancel = "å–æ¶ˆ", }, objects = { chair = "椅å­ï¼šä¾›ç—…人使用,以討論病情。", sofa = "沙發:擺放在員工休æ¯å®¤ä¸­ï¼Œå“¡å·¥å¦‚果沒有更好的放鬆方å¼ï¼Œå‰‡å¯ä»¥ååœ¨ä¸Šé¢æ¢å¾©ç–²å‹žã€‚", operating_table = "30 OB_OP_TABLE", bed2 = "未使用", bench = "長椅:為病人æä¾›ä¸€å€‹åº§ä½ï¼Œä½¿å…¶å¯ä»¥æ¯”較舒é©åœ°ç­‰å¾…。", scanner = "14 OB_SCANNER", couch = "18 OB_COUCH", blood_machine = "42 OB_BLOOD_MC", table1 = "桌å­ï¼ˆå·²åˆªé™¤ï¼‰ï¼šæ“ºæ”¾å¤§é‡é›œèªŒï¼Œä½¿ç­‰å¾…的病人感到快樂。", video_game = "é›»è¦–éŠæˆ²ï¼šè®“æ‚¨çš„å“¡å·¥åœ¨éŠæˆ²ä¸­å¾¹åº•放鬆。", lamp = "燈:照明用。", op_sink2 = "34 OB_OP_SINK_2", door = "房門:人們出入房間時必需。", auto_autopsy = "驗屿©Ÿï¼šå°ç ”究新的治療方法有很大幫助。", reception_desk = "æœå‹™å°ï¼šéœ€è¦ä¸€å接待員為病人æœå‹™ã€‚", hair_restorer = "25 OB_HAIR_RESTORER", projector = "37 OB_PROJECTOR", crash_trolley = "20 OB_CRASH", tv = "é›»è¦–ï¼šä½¿å“¡å·¥ä¸æœƒéŒ¯éŽå–œæ„›çš„節目。", ultrascanner = "22 OB_ULTRASCAN", surgeon_screen = "35 OB_SURGEON_SCREEN", litter_bomb = "åžƒåœ¾ç‚¸å½ˆï¼šä¾†è‡ªå°æ‰‹é†«é™¢çš„破壞活動", inflator = "充氣機:治療頭部腫脹病患者。", table2 = "12 OB_BTABLE", desk = "辦公桌:醫生å¯ä»¥åœ¨ä¸Šé¢æ”¾ç½®é›»è…¦ã€‚", pool_table = "æ’žçƒæ¡Œï¼šå¹«åŠ©å“¡å·¥æ”¾é¬†ã€‚", x_ray_viewer = "29 OB_XRAY_VIEWER", radiation_shield = "28 OB_RAD_SHIELD", bed = "床:病情嚴é‡çš„病人需è¦è‡¥åºŠã€‚", swing_door2 = "53 OB_DOUBLE_DOOR2", console = "15 OB_SCANNER_CONSOLE", op_sink1 = "33 OB_OP_SINK_1", bookcase = "書櫃:放置醫生的åƒè€ƒè³‡æ–™ã€‚", drinks_machine = "飲料販賣機:為病人止渴,也是收入來æºä¹‹ä¸€ã€‚", comfortable_chair = "61 OB_COMFY_CHAIR", skeleton = "骨骼模型:主è¦ç”¨æ–¼åŸ¹è¨“。", computer = "電腦:關éµçš„研究部件。", bin = "垃圾桶:放置垃圾。", pharmacy_cabinet = "藥房:用來ä¿å­˜è—¥å“", radiator = "æš–æ°£ï¼šä¿æŒé†«é™¢å…§çš„æº«åº¦ã€‚", cast_remover = "24 OB_CAST_REMOVE", atom_analyser = "化學混åˆå™¨ï¼šæ“ºæ”¾åœ¨ç ”究部門中,該機器å¯ä»¥åŠ é€Ÿå…¨éƒ¨ç ”ç©¶é€²ç¨‹ã€‚", plant = "盆栽:使病人快樂並淨化空氣。", jelly_moulder = "47 OB_JELLY_VAT", cardio = "13 OB_CARDIO", toilet = "洗手間:æä¾›çµ¦ç—…人使用。", electrolyser = "46 OB_ELECTRO", fire_extinguisher = "æ»…ç«å™¨ï¼šé™ä½Žæ²»ç™‚儀器爆炸所產生的å±éšªã€‚", bed3 = "未使用", swing_door1 = "52 OB_DOUBLE_DOOR1", lecture_chair = "演講座ä½ï¼šæŽ¥å—培訓的醫生å在上é¢ï¼Œæ”¶è½ç„¡èŠçš„æ¼”è¬›ã€‚åº§ä½æ“ºæ”¾å¾—越多,則教室越大。", screen = "16 OB_SCREEN", toilet_sink = "洗手å°ï¼šè¬›è¡›ç”Ÿçš„病人å¯ä»¥åœ¨æ´—手å°ä¸­æ´—淨髒手。如果沒有足夠的洗手å°ï¼Œç—…人將感到ä¸é«˜èˆˆã€‚", shower = "54 OB_DECON_SHOWER", gates_of_hell = "48 OB_HELL", entrance_right = "59 OB_ENT_RDOOR", entrance_left = "58 OB_ENT_LDOOR", slicer = "26 OB_SLICER", dna_fixer = "23 OB_DNA_FIXER", x_ray = "27 OB_XRAY", cabinet = "文件櫃:包å«äº†ç—…人文件,備忘錄以åŠç ”究檔案。", }, build_room_window = { cost = "ç•¶å‰è¢«é¸æ“‡æˆ¿é–“價格", room_classes = { treatment = "鏿“‡è™•ç†é¡žæˆ¿é–“", diagnosis = "鏿“‡è¨ºæ–·é¡žæˆ¿é–“", facilities = "鏿“‡é™„屬類房間", clinic = "鏿“‡æ²»ç™‚類房間", }, close = "å–æ¶ˆä¸¦è¿”å›žéŠæˆ²", }, } menu_charts = { briefing = " 任務簡報", casebook = " 治療手冊", graphs = " 圖表", policy = " 制度", bank_manager = " 銀行經ç†", statement = " 銀行帳戶", staff_listing = " 員工列表", research = " 研究", status = " 狀態", } town_map = { number = "地å€ç·¨è™Ÿ", not_for_sale = "éžæ“有的", chat = "城鎮細節", price = "地å€å”®åƒ¹", for_sale = "出售", owner = "åœ°å€æ‰€æœ‰", area = "地å€é¢ç©", } vip_names = { [1] = "å‰å¤§çš„æŸ¥æ™®é “市長", [2] = "å—䏿 ¼çˆ¾", [3] = "來自è·è˜­çš„伯那德國王", [4] = "緬甸民主黨領袖:ç¿å±±è˜‡å§¬", [5] = "克朗伯先生", [6] = "比利先生", [7] = "克勞ç¦è­°å“¡", [8] = "ç¾…å°¼", [9] = "一個超級è¯è³½çƒæ˜Ÿ", [10] = "拉裡普羅斯特", health_minister = "衛生署部長", } room_descriptions = { ultrascan = { [1] = "超級掃瞄儀//", [2] = "超級掃瞄儀是診斷類儀器中最é‡è¦çš„。它雖然花費驚人,但效果å“著,å¯ä»¥ä½¿é†«é™¢å°ç—…人的診斷é”到完美。//", [3] = "超級掃瞄儀需è¦é†«ç”Ÿã€‚它也需è¦ç¶­è­·ã€‚", }, gp = { [1] = "一般診斷室//", [2] = "é€™æ˜¯æ‚¨çš„é†«é™¢ä¸­ä¸€å€‹åŸºæœ¬è¨ºæ–·æˆ¿é–“ã€‚å°±è¨ºç—…äººå°‡åˆ°é€™è£¡ä¾†æª¢æŸ¥ç—…å› ã€‚éš¨å¾Œå†æ±ºå®šæ˜¯åšé€²ä¸€æ­¥çš„è¨ºæ–·é‚„æ˜¯ç«‹å³æ²»ç™‚。如果一間普通診斷室ä¸å¤ ç”¨ï¼Œå‰‡æ‚¨å¯ä»¥å†å»ºé€ å¦ä¸€é–“。房間越大,則å¯ä»¥åœ¨è£¡é¢æ“ºæ”¾æ›´å¤šçš„特殊物å“,從而使醫生的å¨ä¿¡è¶Šé«˜ã€‚這尿–¼å…¶å®ƒæˆ¿é–“也是一樣的。//", [3] = "一般診斷室需è¦ä¸€å醫生。", }, fracture_clinic = { [1] = "骨折診所//", [2] = "éª¨æŠ˜æ‚£è€…å°‡åˆ°é€™è£¡ä¾†æŽ¥å—æ²»ç™‚。石è†å‰é›¢è£ç½®å°‡ä½¿ç”¨é«˜èƒ½é›·å°„將堅硬的石è†åˆ‡é–‹ï¼Œè€Œç—…人åªéœ€å¿å—很å°çš„痛苦。//", [3] = "骨折診所需è¦ä¸€åè­·å£«ã€‚å®ƒä¹Ÿéœ€è¦æ—¥å¸¸ç¶­è­·ã€‚", }, tv_room = { [1] = "電視房間沒有使用", }, inflation = { [1] = "充氣機診所//", [2] = "患有頭部腫脹症的病人需è¦åœ¨å……æ°£æ©Ÿè¨ºæ‰€æŽ¥å—æ²»ç™‚,病人膨脹的頭蓋骨將被去掉,並å°è…¦è¢‹é‡æ–°å……氣到正常大å°ã€‚//", [3] = "充氣機診所需è¦é†«ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…潔工人的維護。", }, jelly_vat = { [1] = "膠桶診所//", [2] = "å°æ–¼æ‚£æœ‰å¤±è¡¡ç—‡çš„æ‚£è€…需è¦åˆ°è† æ¡¶è¨ºæ‰€æŽ¥å—治療,在這裡將被放入膠桶中。該治療方法的原ç†é†«å­¸ç•Œç›®å‰é‚„無法完全ç†è§£ã€‚//", [3] = "膠桶診所需è¦é†«ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…潔工維護機器。", }, scanner = { [1] = "掃æå„€//", [2] = "é€šéŽæŽƒæå„€ç—…人得到確診。隨後他們就å¯ä»¥åˆ°ä¸€èˆ¬è¨ºæ–·å®¤æŽ¥å—進一步的治療指示。//", [3] = "掃æå„€éœ€è¦é†«ç”Ÿã€‚å®ƒä¹ŸåŒæ¨£éœ€è¦ç¶­è­·ã€‚", }, blood_machine = { [1] = "血液機器//", [2] = "血液機器也是一種診斷用儀器,通éŽå®ƒå¯ä»¥æª¢æŸ¥ç—…人的血液細胞,從而找出病人的病因。//", [3] = "血液機器需è¦é†«ç”Ÿã€‚它也需è¦ç¶­è­·ã€‚", }, pharmacy = { [1] = "藥房//", [2] = "è¢«è¨ºæ–·ä¸”éœ€è¦æŽ¥å—藥物治療的病人一定è¦åˆ°è—¥æˆ¿åŽ»æŠ“è—¥ã€‚ç•¶è¶Šä¾†è¶Šå¤šçš„è—¥å“被研製出來。該房間也將變得越來越ç¹å¿™ã€‚這時就需è¦å†å»ºé€ ä¸€é–“藥房。//", [3] = "藥房需è¦ä¸€å護士。", }, cardiogram = { [1] = "心電圖儀//", [2] = "病人在這裡被診斷檢查,隨後å†åˆ°ä¸€èˆ¬è¨ºæ–·å®¤æŽ¥å—治療æç¤ºã€‚//", [3] = "心電圖儀需è¦é†«ç”Ÿã€‚當然它也需è¦ç¶­è­·ã€‚", }, ward = { [1] = "病房//", [2] = "病人在病房中åœç•™ä¸€æ®µæ™‚間,以便護士進行觀察。隨後å†åšæ‰‹è¡“ã€‚//", [3] = "病房需è¦ä¸€å護士。", }, psych = { [1] = "精神病診斷治療室//", [2] = "被診斷為精神有å•é¡Œçš„ç—…äººå¿…é ˆåˆ°ç²¾ç¥žç—…è¨ºæ–·æ²»ç™‚å®¤ä¸­æŽ¥å—æ²»ç™‚。精神病醫生å¯ä»¥å°ç—…人進行診斷,發ç¾å…¶ç—…因,且如果確實是心ç†å•題,將使用長沙發椅å°å…¶é€²è¡Œæ²»ç™‚。//", [3] = "精神病診斷治療室需è¦ä¸€å具有精神病治療技能的醫生。", }, staff_room = { [1] = "員工休æ¯å®¤//", [2] = "æ‚¨çš„å“¡å·¥æ„Ÿè¦ºç–²å‹žæ™‚ï¼Œéœ€è¦æˆ¿é–“來放鬆緊張的神經,從而æ¢å¾©ç–²å‹žã€‚è™•æ–¼æ¥µåº¦ç–²å‹žçš„å“¡å·¥æ•ˆçŽ‡å¾ˆä½Žï¼Œä¸¦ä¸æ™‚è¦æ±‚加薪,甚至ä¸è¾­è€Œåˆ¥ã€‚他們還會常常犯錯誤。建造一個員工休æ¯å®¤ï¼Œä¸¦åœ¨è£¡é¢ç›¡å¯èƒ½æ“ºæ”¾å¤šä¸€é»žç‰©å“,這是å分值得的。請確èªè©²æˆ¿é–“å¯ä»¥åŒæ™‚使多å員工得到休æ¯ã€‚", }, operating_theatre = { [1] = "手術中心//", [2] = "它å¯ä»¥æä¾›éžå¸¸é‡è¦çš„æ²»ç™‚æ‰‹æ®µã€‚æ‰‹è¡“ä¸­å¿ƒå¿…é ˆè¦æœ‰è¶³å¤ çš„尺寸,必須é…ç½®é©ç•¶çš„儀器設備。它將是醫院中最é‡è¦çš„部門。//", [3] = "手術中心需è¦å…©åæ“æœ‰å¤–科技能的醫生。", }, training = { [1] = "培訓室//", [2] = "您的實習醫生和醫生在該房間內å¯ä»¥å¾—åˆ°ç‰¹æ®ŠæŠ€èƒ½çš„åŸ¹è¨“ã€‚æ“æœ‰å¤–科,研究或精神病技能的專家將把自己的經驗傳授給接å—åŸ¹è¨“çš„é†«ç”Ÿã€‚å°æ–¼å·²æ“有這些技能的醫生,他們的能力將大幅æé«˜ã€‚//", [3] = "培訓室需è¦ä¸€å專家。", }, dna_fixer = { [1] = "DNA診所//", [2] = "這些有外星人DNA的病人必須在這裡æ¢å¾©å…¶åŽŸæœ‰çš„DNA。DNA修復è£ç½®æ˜¯æœ€è¤‡é›œçš„儀器,因此一定è¦åœ¨å…¶æˆ¿é–“內擺放一個滅ç«å™¨ï¼Œä»¥é˜²è¬ä¸€ã€‚//", [3] = "這å°DNA修復è£ç½®éœ€è¦æ¸…æ½”å·¥ä¸æ™‚維護。它也需è¦ä¸€å具有研究能力的醫生æ‰èƒ½å¤ æ­£å¸¸å·¥ä½œã€‚", }, research = { [1] = "研究室//", [2] = "在研究室å¯ä»¥ç ”製新的藥å“和治療方法,並å°å„種儀器進行改進æé«˜ã€‚這是醫院中的一個é‡è¦éƒ¨é–€ï¼Œä¸¦å°æé«˜é†«é™¢çš„æ²»ç™’率產生絕å°å½±éŸ¿ã€‚//", [3] = "研究室需è¦ä¸€åæ“æœ‰ç ”究技能的醫生。", }, hair_restoration = { [1] = "毛髮æ¢å¾©è¨ºæ‰€//", [2] = "å°æ–¼èº«æ‚£ç¦¿é ‚的病人將被é€åˆ°è©²æ¯›é«®æ¢å¾©è¨ºæ‰€ï¼Œä½¿ç”¨å…¶ä¸­çš„æ¯›é«®æ¢å¾©è£ç½®é€²è¡Œæ²»ç™‚。需è¦ä¸€å醫生æ“作機器,且該機器將很快地使病人的腦袋長滿頭髮。//", [3] = "毛髮æ¢å¾©è¨ºæ‰€éœ€è¦é†«ç”Ÿã€‚它也需è¦ç¶­è­·ã€‚", }, general_diag = { [1] = "高級診斷室//", [2] = "需è¦é€²ä¸€æ­¥è¨ºæ–·çš„病人將被é€åˆ°é€™è£¡ã€‚如果一般診斷室無法發ç¾ç—…人的病因,高級診斷室將有å¯èƒ½æ‰¾å‡ºã€‚è¨ºæ–·çµæŸå¾Œï¼Œä»–們將返回一般診斷室分æžçµæžœã€‚//", [3] = "高級診斷室需è¦é†«ç”Ÿã€‚", }, electrolysis = { [1] = "電分解房間//", [2] = "多毛症患者將到該房間接å—電分解機器的治療,該機器將猛拉毛髮並使用一種混åˆç‰©å¡«å……毛孔。//", [3] = "電分解房間需è¦é†«ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…潔工進行維護。", }, slack_tongue = { [1] = "舌頭鬆弛治療診所//", [2] = "在普通診斷室中被診斷為舌頭鬆弛的病人將被é€åˆ°è©²è¨ºæ‰€æŽ¥å—治療。醫生將使用一種高科技的儀器使舌頭伸直並切掉多餘部分,從而使病人æ¢å¾©æ­£å¸¸ã€‚//", [3] = "舌頭鬆弛診所需è¦é†«ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ—¥å¸¸ç¶­è­·ã€‚", }, toilets = { [1] = "洗手間//", [2] = "當病人感到需è¦ä¸Šå»æ‰€æ™‚å°±éœ€è¦æ´—手間這類設施。如果您希望洗手間多一些造訪者,å¯ä»¥åœ¨å…¶ä¸­å¤šæ“ºæ”¾æ´—手å°å’Œé¦¬æ¡¶è«‹è€ƒæ…®åœ¨é†«é™¢çš„其它ä½ç½®ä¹Ÿå»ºé€ ä¸€äº›é™„屬設施。", }, no_room = { [1] = "", }, x_ray = { [1] = "X光機//", [2] = "X光機å¯ä»¥ä½¿ç”¨ç‰¹æ®Šè¼»å°„為病人照內部é€è¦–ç…§ç‰‡ã€‚å®ƒå°æ–¼é†«ç”Ÿè¨ºæ–·ç—…因有很大幫助。//", [3] = "X光機需è¦é†«ç”Ÿã€‚它也需è¦ç¶­è­·ã€‚", }, decontamination = { [1] = "淨化診所//", [2] = "å°æ–¼è¢«æš´éœ²åœ¨å¼·æ”¾å°„性的病人需è¦å¿«é€Ÿé€åˆ°æ·¨åŒ–診所。該房間包å«äº†ä¸€å€‹æ·‹æµ´å™¨ï¼Œå¯ä»¥å°‡ç—…人身上的放射能清除乾淨。//", [3] = "淨化淋浴器需è¦é†«ç”Ÿã€‚å®ƒä¹Ÿéœ€è¦æ¸…潔工人維護。", }, } bank_manager = { current_loan = "ç•¶å‰è²¸æ¬¾", balance = "ç¾é‡‘", interest_payment = "應付利æ¯", hospital_value = "醫院價值", interest_rate = "利率", insurance_owed = "ä¿éšªå…¬å¸æ¬ æ¬¾", statistics_page = { balance = "ç¾é‡‘", details = "細節", date = "日期", current_balance = "ç•¶å‰ç¾é‡‘", money_in = "æ”¶å…¥", money_out = "支出", }, inflation_rate = "通貨膨脹率", } menu_display = { high_res = " é™°å½± ", } original_credits = { [1] = "", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "", [9] = "", [10] = "", [11] = "", [12] = ":設計製作", [13] = ":牛蛙製造", [14] = "", [15] = ":冥王星開發å°çµ„", [16] = ",", [17] = "Mark Webley", [18] = "Gary Carr", [19] = "Matt Chilton", [20] = "Matt Sullivan", [21] = "Jo Rider", [22] = "Rajan Tande", [23] = "Wayne Imlach", [24] = "Andy Bass", [25] = "Jon Rennie", [26] = "Adam Coglan", [27] = "Natalie White", [28] = "", [29] = "", [30] = "", [31] = ":編程", [32] = ",", [33] = "Mark Webley", [34] = "Matt Chilton", [35] = "Matt Sullivan", [36] = "Rajan Tande", [37] = "", [38] = "", [39] = "", [40] = ":美工", [41] = ",", [42] = "Gary Carr", [43] = "Jo Rider", [44] = "Andy Bass", [45] = "Adam Coglan", [46] = "", [47] = "", [48] = "", [49] = ":助ç†ç·¨ç¨‹", [50] = ",", [51] = "Ben Deane", [52] = "Gary Morgan", [53] = "Jonty Barnes", [54] = "", [55] = "", [56] = "", [57] = ":助ç†ç¾Žå·¥", [58] = ",", [59] = "Eoin Rogan", [60] = "George Svarovsky", [61] = "Saurev Sarkar", [62] = "Jason Brown", [63] = "John Kershaw", [64] = "Dee Lee", [65] = "", [66] = "", [67] = "", [68] = ":éŠæˆ²ä»‹ç´¹", [69] = ",", [70] = "Stuart Black", [71] = "", [72] = "", [73] = "", [74] = ":音樂音效", [75] = ",", [76] = "Russell Shaw", [77] = "Adrian Moore", [78] = "", [79] = "", [80] = "", [81] = ":助ç†éŸ³æ¨‚", [82] = ",", [83] = "Jeremy Longley", [84] = "Andy Wood", [85] = "", [86] = "", [87] = "", [88] = ":é…音", [89] = ",", [90] = "Rebecca Green", [91] = "", [92] = "", [93] = "", [94] = ":任務設計", [95] = ",", [96] = "Wayne Imlach", [97] = "Natalie White", [98] = "Steven Jarrett", [99] = "Shin Kanaoya", [100] = "", [101] = "", [102] = "", [103] = ":劇本", [104] = ",", [105] = "James Leach", [106] = "Sean Masterson", [107] = "Neil Cook", [108] = "", [109] = "", [110] = "", [111] = ":R&D", [112] = "", [113] = ":圖形引擎", [114] = ",", [115] = "Andy Cakebread", [116] = "Richard Reed", [117] = "", [118] = "", [119] = "", [120] = ":R&D 支æŒ", [121] = ",", [122] = "Glenn Corpes", [123] = "Martin Bell", [124] = "Ian Shaw", [125] = "Jan Svarovsky", [126] = "", [127] = "", [128] = "", [129] = ":函å¼åº«å’Œå·¥å…·", [130] = "", [131] = "Dos å’ŒWin 95 函å¼åº«", [132] = ",", [133] = "Mark Huntley", [134] = "Alex Peters", [135] = "Rik Heywood", [136] = "", [137] = "", [138] = "", [139] = ":網路函å¼åº«", [140] = ",", [141] = "Ian Shippen", [142] = "Mark Lamport", [143] = "", [144] = "", [145] = "", [146] = ":è²éŸ³å‡½å¼åº«", [147] = ",", [148] = "Russell Shaw", [149] = "Tony Cox", [150] = "", [151] = "", [152] = "", [153] = ":安è£ç¨‹åº", [154] = ",", [155] = "Andy Nuttall", [156] = "Tony Cox", [157] = "Andy Cakebread", [158] = "", [159] = "", [160] = "", [161] = ":支æŒ", [162] = ",", [163] = "Peter Molyneux", [164] = "", [165] = "", [166] = "", [167] = ":測試經ç†", [168] = ",", [169] = "Andy Robson", [170] = "", [171] = "", [172] = "", [173] = ":測試主管", [174] = ",", [175] = "Wayne Imlach", [176] = "Jon Rennie", [177] = "", [178] = "", [179] = "", [180] = ":測試", [181] = ",", [182] = "Jeff Brutus", [183] = "Wayne Frost", [184] = "Steven Lawrie", [185] = "Tristan Paramor", [186] = "Nathan Smethurst", [187] = "", [188] = "Ryan Corkery", [189] = "Simon Doherty", [190] = "James Dormer", [191] = "Martin Gregory", [192] = "Ben Lawley", [193] = "Joel Lewis", [194] = "David Lowe", [195] = "Robert Monczak", [196] = "Dominic Mortoza", [197] = "Karl O'Keeffe", [198] = "Michael Singletary", [199] = "Andrew Skipper", [200] = "Stuart Stephen", [201] = "David Wallington", [202] = "", [203] = "And all our other Work Experience Play Testers", [204] = "", [205] = "", [206] = "", [207] = ":技術支æŒ", [208] = ",", [209] = "Kevin Donkin", [210] = "Mike Burnham", [211] = "Simon Handby", [212] = "", [213] = "", [214] = "", [215] = ":市場", [216] = ",", [217] = "Pete Murphy", [218] = "Sean Ratcliffe", [219] = "", [220] = "", [221] = "", [222] = ":特別感è¬", [223] = ",", [224] = "Tamara Burke", [225] = "Annabel Roose", [226] = "Chris Morgan", [227] = "Pete Larsen", [228] = "駱婷婷", [229] = "餘家愷", [230] = "", [231] = ":公關", [232] = ",", [233] = "Cathy Campos", [234] = "", [235] = "", [236] = "", [237] = ":文檔", [238] = ",", [239] = "Mark Casey", [240] = "Richard Johnston", [241] = "James Lenoel", [242] = "Jon Rennie", [243] = "", [244] = "", [245] = "", [246] = ":文檔åŠåŒ…è£ç›’設計", [247] = ",", [248] = "Caroline Arthur", [249] = "James Nolan", [250] = "餘家愷", [251] = "", [252] = "", [253] = ":中文化產å“ç¶“ç†", [254] = ",", [255] = "Carol Aggett", [256] = "餘家愷", [257] = "", [258] = "", [259] = ":本地化工作", [260] = ",", [261] = "Picaper", [262] = "Sonia 'Sam' Yazmadjian", [263] = "駱婷婷", [264] = "Bettina Klos", [265] = "Alexa Kortsch", [266] = "Bianca Normann", [267] = "餘家愷", [268] = "C 。T 。O 。S 。p 。A 。Zola Predosa (BO)", [269] = "Gian Maria Battistini", [270] = "Maria Ziino", [271] = "Gabriele Vegetti", [272] = "", [273] = "Elena Ruiz de Velasco", [274] = "Julio Valladares", [275] = "Ricardo Mart*nez", [276] = "", [277] = "Kia Collin", [278] = "CBG Consult", [279] = "Ulf Thor", [280] = "", [281] = "", [282] = "", [283] = ":生產", [284] = ",", [285] = "Rachel Holman", [286] = "", [287] = "", [288] = "", [289] = ":製片", [290] = ",", [291] = "Mark Webley", [292] = "", [293] = "", [294] = "", [295] = ":è¯åˆåˆ¶ç‰‡", [296] = ",", [297] = "Andy Nuttall", [298] = "", [299] = "", [300] = "", [301] = ":é‹ä½œ", [302] = ",", [303] = "Steve Fitton", [304] = "", [305] = "", [306] = "", [307] = ":行政", [308] = ",", [309] = "Audrey Adams", [310] = "Annette Dabb", [311] = "Emma Gibbs", [312] = "Lucia Gobbo", [313] = "Jo Goodwin", [314] = "Sian Jones", [315] = "Kathy McEntee", [316] = "Louise Ratcliffe", [317] = " ", [318] = " ", [319] = " ", [320] = ":å…¬å¸ç®¡ç†", [321] = ",", [322] = "Les Edgar", [323] = "Peter Molyneux", [324] = "David Byrne", [325] = " ", [326] = " ", [327] = ":All at Bullfrog Productions", [328] = " ", [329] = " ", [330] = " ", [331] = ":特別感è¬", [332] = ",", [333] = "å¼—èŠåˆ©å…¬åœ’醫院中æ¯å€‹äºº", [334] = "", [335] = ": 特別是", [336] = ",", [337] = "Beverley Cannell", [338] = "Doug Carlisle", [339] = "", [340] = "", [341] = "", [342] = ":中文版製作", [343] = ",", [344] = "北京飛é¾å·¥ä½œå®¤", [345] = "", [346] = "", [347] = "", [348] = ":監製/項目主管", [349] = ",", [350] = "陳國忠/餘家愷", [351] = "", [352] = "", [353] = ":翻譯:駱婷婷 餘家愷", [354] = "", [355] = ":錄音師:è—信剛", [356] = "", [357] = "", [358] = ":é…音:å¤èŽ‰èŽ‰", [359] = "", [360] = "", [361] = "", [362] = ":中文版包è£/手冊設計", [363] = ",", [364] = "白季å·/餘家愷", [365] = "", [366] = "", [367] = ":生產", [368] = ",", [369] = "餘家愷", [370] = "", [371] = "", [372] = "", [373] = ":測試", [374] = ",", [375] = "駱婷婷", [376] = "", [377] = "", [378] = ":特別感è¬", [379] = ",", [380] = "Les Edgar", [381] = "Rajan Tande", [382] = "Steve Fitton", [383] = "Lennox Ong", [384] = "駱婷婷", [385] = "", [386] = "", [387] = "", [388] = "", [389] = "", [390] = "", [391] = "", [392] = "", [393] = "", [394] = "", [395] = "", [396] = "", [397] = ".", } pay_rise = { definite_quit = "ä¸è«–您åšä»€éº¼éƒ½ç„¡æ³•ç•™ä½æˆ‘了。", regular = { [1] = "我真的太累了。如果您ä¸å¸Œæœ›æˆ‘è¾­è·çš„話,請讓我好好休æ¯ï¼Œä¸¦å¢žåŠ å·¥è³‡$%d。", [2] = "我真的太累了。我需è¦ä¼‘æ¯ï¼Œä»¥åŠå¢žåŠ å·¥è³‡$%d。立å³ç­”應,你這個暴å›ã€‚", [3] = "好å§ã€‚我在這裡工作就åƒä¸€éš»ç‹—一樣。給我çŽé‡‘$%d我就還留在這個醫院裡。", [4] = "我很ä¸å¿«æ¨‚ã€‚æˆ‘è¦æ±‚增加工資$%d,使我的工資é”到$%d,å¦å‰‡æˆ‘å°±ä¸å¹¹äº†ã€‚", [5] = "我的父æ¯å‘Šè¨´æˆ‘é†«å­¸å°ˆå®¶çš„å¾…é‡æ˜¯å¾ˆé«˜çš„。因此,請給我加薪$%d,å¦å‰‡æˆ‘將辭è·åŽ»åšé›»è…¦éŠæˆ²ã€‚", [6] = "我已經å—夠了。請調整我的工資到åˆç†ç¨‹åº¦ã€‚我希望加薪$%d。", }, poached = "%s答應給我工資%d。如果您無法é”到這個數目,那麼我就è¦è·³æ§½äº†ã€‚", } menu_debug = { porter_pagers = " PORTER PAGERS ", object_cells = " OBJECT CELLS ", display_pager = " DISPLAY PAGER ", display_big_cells = " DISPLAY BIG CELLS ", mapwho_checking = " MAPWHO CHECKING ", keep_clear_cells = " KEEP CLEAR CELLS ", machine_pagers = " MACHINE PAGERS ", remove_walls = " REMOVE WALLS ", enter_nav_debug = " ENTER NAV DEBUG ", lose_game_anim = { [1] = " LOSE GAME 1 ANIM ", [2] = " LOSE GAME 2 ANIM ", [3] = " LOSE GAME 3 ANIM ", [4] = " LOSE GAME 4 ANIM ", [5] = " LOSE GAME 5 ANIM ", [6] = " LOSE GAME 6 ANIM ", [7] = " LOSE GAME 7 ANIM ", }, show_nav_cells = " SHOW NAV CELLS ", win_game_anim = " WIN GAME ANIM ", display_room_status = " DISPLAY ROOM STATUS ", remove_objects = " REMOVE OBJECTS ", nav_bits = " NAV BITS ", win_level_anim = " WIN LEVEL ANIM ", pixbuf_cells = " PIXBUF CELLS ", show_help_hotspot = " SHOW HELP HOTSPOTS ", entry_cells = " ENTRY CELLS ", plant_pagers = " PLANT PAGERS ", } progress_report = { quite_unhappy = "人們有點ä¸é«˜èˆˆã€‚", header = "進展報告", very_unhappy = "人們感到éžå¸¸ä¸é«˜èˆˆã€‚", more_drinks_machines = "多擺放一些飲料販賣機。", too_cold = "太冷了。多擺放一些暖氣。", too_hot = "調節供熱系統。太熱了。", percentage_pop = "% 人å£", win_criteria = "視窗標準", } menu_options = { game_speed = " éŠæˆ²é€Ÿåº¦", sound_vol = " 音效音é‡", music_vol = " 音樂音é‡", announcements = " 語音", sound = " 音效", announcements_vol = " 語音音é‡", music = " 音樂", autosave = " 自動儲存", jukebox = " 音樂盒", } menu_options_game_speed = { normal = " 正常", slower = " 較慢", max_speed = " 快速", slowest = " éžå¸¸æ…¢", and_then_some_more = " 極快", } rooms_short = { ultrascan = "超級掃瞄儀", research_room = "研究部門", fracture_clinic = "骨折診所", gps_office = "一般診斷室", destroyed = "已毀壞", staffroom = "員工休æ¯å®¤", jelly_vat = "膠桶診所", scanner = "掃æå„€", decontamination = "淨化設備", pharmacy = "藥房", cardiogram = "心電圖儀", reception = "æœå‹™å°", training_room = "培訓室", corridor_objects = "走廊物å“", operating_theatre = "手術中心", dna_fixer = "DNA修復è£ç½®", ward = "病房", psychiatric = "精神病診療室", hair_restoration = "毛髮æ¢å¾©æ©Ÿå™¨", general_diag = "高級診斷室", inflation = "充氣機", tongue_clinic = "舌頭治療機", toilets = "洗手間", electrolysis = "電分解診所", x_ray = "X光儀器", blood_machine = "血液機器", } level_names = { [1] = "毒氣城", [2] = "æ˜ç¡åŸŽ", [3] = "大柴斯特城", [4] = "ç¦ä¾†æ˜Žé “城", [5] = "新普頓城", [6] = "世界之窗", [7] = "綠池城", [8] = "曼葵城", [9] = "便–¯ç‰¹å¨çˆ¾", [10] = "愛格森海姆城", [11] = "蛙鳴城", [12] = "巴登堡", [13] = "查姆雷城", [14] = "å°çˆªæª³åŸŽ", [15] = "葬禮城", } insurance_companies = { [1] = "天éµçµ¨æœ‰é™å…¬å¸", [2] = "諾ç¦å…‹æ´‹è”¥å…¬å¸", [3] = "雙峰公å¸", [4] = "刀疤有é™å…¬å¸", [5] = "潛水艇有é™å…¬å¸", [6] = "誠實的泰瑞公å¸", [7] = "矮胖先生股份有é™å…¬å¸", [8] = "裡昂貓公å¸", [9] = "普裡邦有é™å…¬å¸", [10] = "快樂ä¿éšªå…¬å¸", [11] = "辛迪加ä¿éšªå…¬å¸", out_of_business = "ç„¡", } staff_descriptions = { good = { [1] = "手腳勤快並努力的員工。", [2] = "很有責任心。éžå¸¸ç´°å¿ƒã€‚", [3] = "掌æ¡äº†å¾ˆå¤šæŠ€è¡“。", [4] = "很å‹å–„並愛笑。", [5] = "富有活力。", [6] = "很有禮貌並和藹å¯è¦ªã€‚", [7] = "富有æ‰å¹¹å’Œèƒ½åŠ›ã€‚", [8] = "工作能力極強。", [9] = "æ„志堅強。", [10] = "微笑著為病人æœå‹™ã€‚", [11] = "迷人的,有禮貌的並愛幫助別人。", [12] = "專注於工作。", [13] = "本性善良,工作努力。", [14] = "忠實且待人å‹å–„。", [15] = "細心並能夠ç¨ç«‹è™•ç†ç·Šæ€¥äº‹ä»¶ã€‚", }, misc = { [1] = "打高爾夫çƒã€‚", [2] = "潛水é‹å‹•。", [3] = "冰雕。", [4] = "å–è‘¡è„酒。", [5] = "拉力車賽。", [6] = "蹦跳。", [7] = "收集啤酒蓋å­ã€‚", [8] = "喜歡跳水。", [9] = "å–œæ­¡è¡æµªé‹å‹•。", [10] = "喜歡游泳。", [11] = "蒸餾å¨å£«å¿Œé…’。", [12] = "DIY專家。", [13] = "喜歡欣賞法國電影。", [14] = "çŽ©åœ°ä¸‹åŸŽå®ˆè­·è€…éŠæˆ²ã€‚", [15] = "æ“æœ‰HGV執照。", [16] = "摩托車比賽。", [17] = "彈å¥å¤å…¸æç´ã€‚", [18] = "訓練營救員。", [19] = "喜歡養狗。", [20] = "è½æ”¶éŸ³æ©Ÿã€‚", [21] = "經常洗澡。", [22] = "工作指導。", [23] = "種æ¤è”¬èœã€‚", [24] = "義務巡警。", [25] = "展覽。", [26] = "收集二次大戰武器。", [27] = "釿–°æ“ºè¨­å®¶å…·ã€‚", [28] = "è½åˆºæ¿€éŸ³æ¨‚。", [29] = "殺蟲。", [30] = "喜劇演員。", [31] = "議會調查人員。", [32] = "園è—家。", [33] = "èµ°ç§å‡æ‰‹éŒ¶ã€‚", [34] = "唱歌。", [35] = "喜歡日間電視。", [36] = "喜歡魚。", [37] = "å‘觀光者介紹åšç‰©é¤¨ã€‚", }, bad = { [1] = "動作緩慢,且愛煩惱。", [2] = "懶惰。", [3] = "培訓很少且沒有精神。", [4] = "待人粗魯。", [5] = "態度惡劣。", [6] = "耳è¾ã€‚且身上有一股æ²å¿ƒèœçš„味é“。", [7] = "ä¸ç”¨å¿ƒå·¥ä½œã€‚", [8] = "魯莽而且容易犯錯誤。", [9] = "容易犯錯誤。", [10] = "心ç†è®Šæ…‹ã€‚", [11] = "粗心大æ„。", [12] = "懶散。", [13] = "愚蠢。", [14] = "狡猾且有破壞欲。", [15] = "傲慢自大。", }, } room_classes = { diagnosis = "診斷室", clinics = "診所", facilities = "附屬設施", treatment = "治療室", } place_objects_window = { pick_up_object = "點擊物å“å¯ä»¥å°‡å…¶æ‹¾èµ·ï¼Œä¹Ÿå¯ä»¥é¸æ“‡ä¸åŒçš„é¸é …", place_objects_in_corridor = "å°‡ç‰©å“æ”¾åœ¨èµ°å»Šä¸Š", place_windows = "請設置一些窗戶,點擊滑鼠表示確定", confirm_or_buy_objects = "您å¯ä»¥ç¢ºèªè©²æˆ¿é–“,或買入或移動其中的一些物å“", drag_blueprint = "拉伸è—圖直到您滿æ„的尺寸", place_door = "設置房門", place_objects = "å¯ä»¥è¨­ç½®ä¸¦ç§»å‹•這些物å“直到滿æ„為止,隨後å†ç¢ºå®š", } newspaper = { [1] = { [1] = "醫生震驚四座", [2] = "這醫生扮演玩弄上å¸", [3] = "科學狂人的震撼", [4] = "實驗室地æ¿ä¸Šæ“ºæ”¾è‘—什麼?", [5] = "查ç²ä¸€é …å±éšªçš„研究", }, [2] = { [1] = "é…—é…’", [2] = "外科醫生酒醉", [3] = "挑剔的顧å•", [4] = "外科醫生的酒é‡", [5] = "外科醫生狂飲失態", [6] = "外科醫生的éˆé­‚", }, [3] = { [1] = "粗魯的醫生", [2] = "醫生臭åé æš", [3] = "醫生完了", [4] = "貪得無厭的醫生", }, [4] = { [1] = "篡改數據", [2] = "器官買賣犯罪", [3] = "éŠ€è¡Œå±æ©Ÿ", [4] = "調查基金數據", }, [5] = { [1] = "醫學工作者盜墓", [2] = "醫生盜墓", [3] = "醫生盜墓,人贓並ç²", [4] = "醫生死期ä¸é äº†", [5] = "超級瀆è·", [6] = "醫生盜墓", }, [6] = { [1] = "醫生?庸醫ï¼", [2] = "庸醫露出馬腳了", [3] = "令人詛咒的診斷", [4] = "笨蛋專家", }, [7] = { [1] = "醫生真情放縱", [2] = "醫生自我“手術â€", [3] = "醫生完了", [4] = "醫生大醜èž", [5] = "醫生æžå¾—一團糟", }, } staff_title = { junior = "實習醫生", psychiatrist = "精神病醫生", consultant = "專家", surgeon = "外科醫生", doctor = "醫生", researcher = "研究員", nurse = "護士", receptionist = "接待員", general = "普通人", } graphs = { deaths = "死亡", money_in = "æ”¶å…¥", money_out = "支出", visitors = "造訪者", wages = "工資", balance = "ç¾é‡‘", time_spans = { [1] = "1 å¹´", [2] = "12 å¹´", [3] = "48 å¹´", }, cures = "治癒", reputation = "è²æœ›", } adviser = { tutorial = { hire_receptionist = "您也需è¦ä¸€ä½æŽ¥å¾…員來接待病人。", build_pharmacy = "æ­å–œï¼ç¾åœ¨æ‡‰å»ºé€ ä¸€å€‹è—¥æˆ¿ä¸¦é›‡ç”¨ä¸€ä½è­·å£«ï¼Œä½¿é†«é™¢æ­£å¸¸é‹è½‰ã€‚", hire_doctor = "您需è¦ä¸€å€‹é†«ç”Ÿä¾†è¨ºæ–·å’Œæ²»ç™‚病人。", place_receptionist = "移動接待員並將她放到任æ„ä½ç½®ã€‚å¥¹å°‡å¾ˆè°æ˜Žåœ°è‡ªå·±èµ°åˆ°æœå‹™å°ã€‚", place_windows = "設置窗戶的方法與設置房門的方法相åŒã€‚您å¯ä»¥ä¸éœ€è¦çª—戶,但是當您的員工å¯ä»¥å¾žçª—戶å‘外張望時,他們將感到快樂。", confirm_room = "å·¦éµå–®æ“Šé–ƒå‹•￿標就å¯ä»¥é–‹æ¥­äº†ï¼Œä¹Ÿå¯ä»¥é€šéŽé»žæ“Šäº¤å‰æŒ‰éˆ•返回上一步。", rotate_and_place_reception = "點擊滑鼠å³éµå¯ä»¥æ—‹è½‰æ¡Œå­ï¼Œä¸¦ç”¨æ»‘é¼ å·¦éµå°‡å…¶æ”¾åœ¨é†«é™¢ä¸­åˆé©ä½ç½®ã€‚", build_reception = "你好。首先,您的醫院需è¦ä¸€å€‹æœå‹™å°ï¼Œæ‚¨å¯ä»¥å¾žä½ˆç½®èµ°å»Šé¸å–®ä¸­é¸å–。", doctor_in_invalid_position = "å˜¿ï¼æ‚¨ä¸èƒ½å°‡é†«ç”Ÿæ”¾åœ¨é‚£è£¡ã€‚", start_tutorial = "閱讀任務簡報,隨後點擊滑鼠左éµå°±å¯ä»¥å•Ÿå‹•教程。", receptionist_invalid_position = "您ä¸èƒ½å°‡æŽ¥å¾…員放在那裡。", room_too_small_and_invalid = "è—圖尺寸太å°äº†ä¸”è™•æ–¼éžæ³•ä½ç½®ã€‚", window_in_invalid_position = "該窗å£è™•æ–¼éžæ³•ä½ç½®ã€‚請嘗試è—圖牆å£ä¸Šçš„其它ä½ç½®ã€‚", choose_doctor = "åœ¨é¸æ“‡é†«ç”Ÿä¹‹å‰ï¼Œæ‡‰é‡é»žè€ƒæ…®å…¶èƒ½åŠ›ã€‚", information_window = "å”助視窗將告訴您剛剛建造的一般診斷室信æ¯ã€‚", build_gps_office = "您必須建造一般診斷室æ‰å¯ä»¥è¨ºæ–·ç—…人。", select_doctors = "點擊閃動的￿標挑é¸å¯è¢«é›‡ç”¨çš„醫生。", select_diagnosis_rooms = "點擊閃動的￿標將彈出診斷類房間列表。", select_receptionists = "使用滑鼠左éµå–®æ“Šé–ƒå‹•的￿標來查看當å‰å¯é¸æ“‡çš„æŽ¥å¾…員。￿標下方的數字表示共有多少個接待員å¯ä¾›é¸æ“‡ã€‚", order_one_reception = "使用滑鼠左éµå–®æ“Šé–ƒå‹•的光æ¢ï¼Œå¯ä»¥è¨‚購一個æœå‹™å°ã€‚", choose_receptionist = "åˆ¤æ–·å“ªä¸€å€‹æŽ¥å¾…å“¡æ“æœ‰å¥½çš„能力與åˆé©çš„å·¥è³‡ï¼Œå†æŒ‰å·¦éµå–®æ“Šé–ƒå‹•的￿標來雇用她。", prev_receptionist = "å·¦éµå–®æ“Šé–ƒå‹•的￿標將å¯ä»¥ç€è¦½åˆ°å‰ä¸€å€‹å¯ä¾›é¸æ“‡çš„æŽ¥å¾…員。", accept_purchase = "點擊閃動的￿標表示購買。", place_door = "沿è—圖牆å£ç§»å‹•滑鼠,尋找放置房門的åˆé©ä½ç½®ã€‚", click_and_drag_to_build = "å»ºé€ ä¸€èˆ¬è¨ºæ–·å®¤æ™‚æ‡‰å…ˆæ±ºå®šå…·é«”çš„å°ºå¯¸ã€‚é»žæ“Šä¸¦æŒ‰ä½æ»‘é¼ å·¦éµå¯ä»¥è¨­ç½®æˆ¿é–“尺寸。", room_in_invalid_position = "該è—åœ–æ˜¯éžæ³•的,紅色å€åŸŸè¡¨ç¤ºè—圖與其它房間或牆å£é‡ç–Šã€‚", place_objects = "峿“Šå¯ä»¥æ—‹è½‰æˆ¿å±‹ä¸­çš„å„種物å“,å†å·¦æ“Šè¡¨ç¤ºç¢ºèªã€‚", room_too_small = "該房間的è—圖為紅色是因為其尺寸太å°äº†ã€‚é€šéŽæ‹–動使其尺寸增大。", click_gps_office = "é»žæ“Šé–ƒå‹•ï¿¿æ¨™è¡¨ç¤ºé¸æ“‡ä¸€èˆ¬è¨ºæ–·å®¤ã€‚", reception_invalid_position = "如果æœå‹™å°æ˜¯ç°è‰²çš„,則表示當å‰ä½ç½®æ˜¯éžæ³•的。應嘗試移動或旋轉它。", next_receptionist = "這是接待員列表中的第一個。左éµå–®æ“Šé–ƒå‹•的￿標å¯ä»¥ç€è¦½ä¸‹ä¸€å€‹å¯ä¾›é¸ç”¨çš„æŽ¥å¾…員。", room_big_enough = "è—圖尺寸已經足夠大了。當您鬆開滑鼠按éµè¡¨ç¤ºç¢ºèªã€‚如果需è¦çš„話,以後還å¯ä»¥æ ¹æ“šéœ€è¦ç§»å‹•或改變其尺寸。", object_in_invalid_position = "該物å“ç•¶å‰ä½ç½®éžæ³•。請è¦éº¼å°‡å…¶æ”¾åˆ°å…¶å®ƒä½ç½®ï¼Œè¦éº¼å°å…¶é€²è¡Œæ—‹è½‰ã€‚", door_in_invalid_position = "房門設置ä½ç½®éžæ³•。請嘗試è—圖牆å£ä¸Šçš„其它ä½ç½®ã€‚", place_doctor = "將醫生放在醫院中的任æ„ä½ç½®ã€‚他將直奔一般診斷室,為病人診斷。", }, epidemic = { hurry_up = "å¦‚æžœç„¡æ³•ç«‹å³æŽ§åˆ¶å‚³æŸ“ç—…é‚£éº¼æ‚¨çš„é†«é™¢å°‡å‡ºå¤§äº‚å­ã€‚加油ï¼", serious_warning = "傳染病疫情越來越嚴é‡ã€‚您必須立å³è¡Œå‹•ï¼", multiple_epidemies = "çœ‹ä¾†é†«é™¢è£¡åŒæ™‚有ä¸åªä¸€ç¨®å‚³æŸ“病。這將是一場空å‰ç½é›£ï¼ŒåŠ æ²¹ï¼", }, staff_advice = { need_handyman_machines = "如果希望維護醫院內的å„種醫療機器,則需è¦é›‡ç”¨æ¸…潔工人。", need_doctors = "æ‚¨éœ€è¦æ›´å¤šçš„醫生。請將最得力的醫生放在排隊等候人數最多的房間內。", need_handyman_plants = "您需è¦é›‡ç”¨ä¸€ä½æ¸…潔工人來為盆栽澆水。", need_handyman_litter = "醫院中出ç¾äº†åžƒåœ¾ã€‚請雇用一個清潔工人打掃垃圾。", need_nurses = "您需è¦é›‡ç”¨æ›´å¤šçš„護士。病房和藥房都需è¦è­·å£«ã€‚", too_many_doctors = "您雇用的醫生太多了。其中有一些人ç¾åœ¨æ­£é–‘。", too_many_nurses = "我èªç‚ºæ‚¨ç¾åœ¨é›‡ç”¨äº†å¤ªå¤šçš„護士。", }, earthquake = { damage = "地震æå£žäº†é†«é™¢ä¸­%då°æ©Ÿå™¨ï¼Œä¸¦ä½¿%d個人å—傷。", alert = "地震警報。在地震éŽç¨‹ä¸­ï¼Œé†«é™¢ä¸­çš„æ©Ÿå™¨å°‡å—æã€‚å¦‚æžœå®ƒå€‘æ²’æœ‰å¾—åˆ°åŠæ™‚維護將徹底毀壞。", ended = "我èªç‚ºé€™æ˜¯ä¸€å€‹å¤§å‚¢ä¼™ï¼æŒ‰ç…§èŠ®æ°æ¨™æº–為%d。", }, multiplayer = { objective_completed = "您已經完æˆä»»å‹™äº†ã€‚æ­å–œï¼", everyone_failed = "æ¯å€‹äººéƒ½æ²’æœ‰å®Œæˆæœ€çµ‚目標。因此æ¯å€‹äººéƒ½è¦ç¹¼çºŒåŠªåŠ›ï¼", players_failed = "下é¢çš„çŽ©å®¶æ²’æœ‰å®Œæˆæœ€çµ‚目標:", poaching = { in_progress = "我將讓您瞭解這個人是å¦é¡˜æ„為您工作。", not_interested = "哈哈ï¼ä»–們å°ç‚ºæ‚¨å·¥ä½œä¸æ„Ÿèˆˆè¶£ï¼ä»–們希望找尋自我價值。", already_poached_by_someone = "åˆ¥æƒ³ï¼æœ‰äººæƒ³è¦æŒ–走這個人。", }, objective_failed = "任務失敗。", }, surgery_requirements = { need_surgeons_ward_op = "您需è¦é›‡ç”¨å…©ä½å¤–科醫生,並修建一個病房和手術中心,這樣æ‰å¯ä»¥å®Œæˆå¤–科手術。", need_surgeon_ward = "為了完æˆå¤–科手術,您還需è¦é›‡ç”¨ä¸€å外科醫生,以åŠä¿®å»ºä¸€å€‹ç—…房。", }, vomit_wave = { started = "請趕快處ç†é†«é™¢ä¸­çš„嘔å物,å¦å‰‡å˜”åç¾è±¡æœƒå››è™•傳播。也許您需è¦å¤šé›‡ç”¨å¹¾å€‹æ¸…潔工人。", ended = "å—¨ï¼å˜”åç¾è±¡å·²è¢«æŽ§åˆ¶ã€‚今後一定è¦ä¿æŒé†«é™¢çš„æ¸…潔。", }, level_progress = { halfway_lost = "您è·é›¢å¤±æ•—還差一åŠã€‚", dont_kill_more_patients = "您實際上無力支付太多的醫療事故賠款ï¼", another_patient_killed = "哦,ä¸ï¼æ‚¨å·²ç¶“殺死了一個病人。這已經是第%d個了。", halfway_won = "您è·é›¢å‹åˆ©é‚„差一åŠã€‚", close_to_win_increase_value = "您è·é›¢å‹åˆ©åªæœ‰ä¸€æ­¥ä¹‹é™äº†ã€‚å†å¢žåŠ é†«é™¢åƒ¹å€¼%d。", financial_criteria_met = "您已經完æˆäº†æœ¬ä»»å‹™è¦æ±‚é”到的財政目標。ç¾åœ¨è«‹ä¿æŒç¾é‡‘在%d以上,使我們確信您的醫院é‹è¡Œè‰¯å¥½ã€‚", nearly_won = "您已經è·é›¢å‹åˆ©éžå¸¸æŽ¥è¿‘了。", hospital_value_enough = "ä¿æŒé†«é™¢åƒ¹å€¼åœ¨%d以上,並解決好其它å•題,就能å‹åˆ©å®Œæˆä»»å‹™äº†ã€‚", another_patient_cured = "å¹¹å¾—å¥½ï¼æ²»ç™’了一個病人。收入$%d。", three_quarters_lost = "您è·é›¢å¤±æ•—還差四分之三。", reputation_good_enough = "å¥½çš„ï¼Œæ‚¨çš„è²æœ›å·²ç¶“é”åˆ°ä»»å‹™è¦æ±‚äº†ã€‚ä¿æŒåœ¨%d以上,並解決好其它方é¢çš„å•題。", cured_enough_patients = "æ‚¨å·²ç¶“æ²»ç™’äº†è¶³å¤ å¤šçš„ç—…äººï¼Œä½†æ˜¯æ‚¨åªæœ‰é”到更高的標準æ‰èƒ½å‹åˆ©å®Œæˆä»»å‹™ã€‚", nearly_lost = "您è·é›¢å¤±æ•—åªæœ‰ä¸€æ­¥ä¹‹é™äº†ã€‚", improve_reputation = "æ‚¨éœ€è¦æé«˜è²æœ›%d,這樣æ‰èƒ½æœ‰æ©Ÿæœƒå®Œæˆä»»å‹™ã€‚", three_quarters_won = "您è·é›¢å‹åˆ©é‚„差四分之三。", }, staff_place_advice = { receptionists_only_at_desk = "接待員åªèƒ½åœ¨æœå‹™å°å·¥ä½œã€‚", only_psychiatrists = "åªæœ‰å…·æœ‰ç²¾ç¥žç—…治療技能的醫生æ‰å¯ä»¥åœ¨ç²¾ç¥žç—…診斷治療室中工作。", only_surgeons = "åªæœ‰æ“有外科技能的醫生æ‰å¯ä»¥åœ¨æ‰‹è¡“中心工作。", only_nurses_in_room = "åªæœ‰è­·å£«å¯ä»¥åœ¨%s中工作", only_doctors_in_room = "åªæœ‰é†«ç”Ÿå¯ä»¥åœ¨%s中工作", only_researchers = "åªæœ‰æ“有研究技能的醫生æ‰å¯ä»¥åœ¨ç ”究部門工作。", nurses_cannot_work_in_room = "護士無法在%s中工作", doctors_cannot_work_in_room = "醫生無法在%s中工作", }, research = { machine_improved = "%s的療效被您的研究部門增強了。", autopsy_discovered_rep_loss = "æ‚¨çš„è‡ªå‹•é©—å±æ©Ÿå·²ç¶“研製æˆåŠŸã€‚å°å…¬çœ¾å°‡ç”¢ç”Ÿå‰¯ä½œç”¨ã€‚", drug_fully_researched = "您已經研究%s到é”100%%了。", new_machine_researched = "一個新的%s剛剛被æˆåŠŸç ”ç©¶å‡ºä¾†ã€‚", drug_improved = "治療%s的藥å“被您的研究部門改良了。", new_available = "一種新的%så¯ä»¥ä½¿ç”¨äº†ã€‚", new_drug_researched = "治療%s的一種新藥被研究æˆåŠŸã€‚", }, boiler_issue = { minimum_heat = "噢,終於找到您了。é‹çˆå£žäº†ã€‚也就是說醫院裡的人將感到有點冷。", maximum_heat = "é‹çˆå¿«å¤±æŽ§äº†ã€‚暖氣的供暖能力已經é”到極é™äº†ã€‚醫院裡的人都快被熔化了ï¼å¤šè¨­ç½®ä¸€äº›é£²æ–™è²©è³£æ©Ÿã€‚", resolved = "好消æ¯ã€‚é‹çˆå’Œæš–æ°£ç¾åœ¨å·¥ä½œæ­£å¸¸ã€‚氣溫很快就å¯ä»¥æ¢å¾©åˆ°æ­£å¸¸æ°´æº–。", }, competitors = { staff_poached = "您的一ä½å“¡å·¥è¢«å…¶å®ƒé†«é™¢æŒ–走了。", hospital_opened = "ç«¶çˆ­å°æ‰‹%s的醫院在本å€åŸŸå…§å·²ç¶“開張了。", land_purchased = "%s已經購買了一些土地。", }, room_requirements = { research_room_need_researcher = "您需è¦ç‚ºç ”ç©¶å®¤é›‡ç”¨ä¸€å€‹æ“æœ‰ç ”究技巧的醫生。", op_need_another_surgeon = "您至少還需è¦ç‚ºæ‰‹è¡“中心雇用一å外科醫生。", op_need_ward = "您必須為外科手術å‰çš„æ‚£è€…建造病房。", reception_need_receptionist = "æ‚¨å¿…é ˆç‚ºç—…äººé›‡ç”¨ä¸€ä½æŽ¥å¾…å“¡ã€‚", psychiatry_need_psychiatrist = "您需è¦é›‡ç”¨ä¸€ä½ç²¾ç¥žç—…醫生,ç¾åœ¨æ‚¨å·²ç¶“建æˆäº†ä¸€å€‹ç²¾ç¥žç—…診斷治療室。", pharmacy_need_nurse = "您應該為藥房雇用一ä½è­·å£«ã€‚", ward_need_nurse = "您需è¦ç‚ºç—…房雇用一å護士。", op_need_two_surgeons = "請為手術中心雇用兩åå¤–ç§‘é†«ç”Ÿå®Œæˆæ‰‹è¡“。", training_room_need_consultant = "您應該為培訓室雇用一ä½å°ˆå®¶ï¼Œè² è²¬æ¼”講。", gps_office_need_doctor = "您需è¦ç‚ºä¸€èˆ¬è¨ºæ–·å®¤é›‡ç”¨ä¸€å醫生。", }, goals = { win = { money = "您還需è¦%dæ‰èƒ½å®Œæˆæœ¬é—œä¸­çš„財政指標。", cure = "冿²»ç™’%d個病人您就å¯ä»¥æ»¿è¶³æœ¬é—œä»»å‹™çš„è¦æ±‚了。", reputation = "æé«˜è²æœ›%då°‡é”到å‹åˆ©å®Œæˆæœ¬ä»»å‹™çš„è¦æ±‚", value = "您需è¦å¢žåŠ é†«é™¢æ”¶å…¥åˆ°$%d", }, lose = { kill = "冿®ºæ­»%d個病人將導致本任務失敗ï¼", }, }, warnings = { charges_too_low = "治療費用太低了。它將使更多的病人到醫院就診,但您無法從æ¯å€‹ç—…人身上ç²å–太多的利潤。", charges_too_high = "治療費用太高了。短期內它將產生很好的效益,但最終會把病人嚇跑的。", staff_overworked = "您的員工已經勞累éŽåº¦ã€‚他們的辦事效率正在下é™ï¼Œä¸¦å°‡æœ‰å¯èƒ½ç™¼ç”Ÿé†«ç™‚事故。", doctor_crazy_overwork = "喔,ä¸ï¼æ‚¨çš„一ä½é†«ç”Ÿå·²ç¶“由於勞累éŽåº¦å¿«è¦ç™¼ç‹‚了。如果能夠立å³è®“他休æ¯ï¼Œä»–將得到æ¢å¾©ã€‚", doctors_tired = "您的醫生太累了。立å³è®“他們休æ¯ã€‚", people_did_it_on_the_floor = "您的一些病人堅æŒä¸ä½äº†ã€‚趕快打掃乾淨。", queues_too_long = "隊ä¼å¤ªé•·äº†ã€‚", money_very_low_take_loan = "您的ç¾é‡‘é‡å¤ªå°‘了。您å¯ä»¥å˜—試貸款。", patients_very_thirsty = "äººå€‘æ„Ÿåˆ°å¤ªå£æ¸´äº†ã€‚如果您ä¸ç«‹å³è¨­ç½®ä¸€äº›é£²æ–™è²©è³£æ©Ÿï¼Œå‰‡å°‡çœ‹åˆ°å¤§å¤šæ•¸äººå›žå®¶åŽ»å–坿¨‚。", machinery_very_damaged = "緊急ï¼ç«‹å³æ´¾æ¸…æ½”å·¥åŽ»ä¿®ç†æ©Ÿå™¨ï¼å®ƒå€‘è¦çˆ†ç‚¸äº†ï¼", handymen_tired2 = "您的清潔工太疲倦了。立å³è®“他們休æ¯ã€‚", desperate_need_for_watering = "您需è¦é›‡ç”¨ä¸€å清潔工照料醫院中的盆栽。", nurses_tired = "您的護士感到疲倦了。立å³è®“她們休æ¯ã€‚", too_much_litter = "é†«é™¢ä¸­çš„å»¢æ£„ç‰©ä¸æ–·å¢žå¤šã€‚派幾個清潔工人就å¯ä»¥è§£æ±ºã€‚", reception_bottleneck = "æœå‹™å°å·²ç„¡æ³•滿足需è¦ã€‚å†é›‡ç”¨ä¸€å接待員。", place_plants4 = "在醫院中多擺放一些盆栽使所有病人感到快樂。", change_priorities_to_plants = "您必須改變清潔工的工作優先級,使他們更多地為盆栽澆水。", staff_too_hot = "您的工作人員感到太熱了。請調低供熱標準或拆除房間內的暖氣。", finanical_trouble2 = "多增加一些收入。如果å†è™§æ$%d任務就會失敗。", plants_thirsty = "您需è¦å°ç›†æ ½é€²è¡Œç…§æ–™ã€‚å®ƒå€‘æ­£æ„Ÿåˆ°å£æ¸´ã€‚", litter_everywhere = "醫院中的廢棄物到處都是。多派幾個清潔工人就å¯ä»¥è§£æ±ºã€‚", nurses_tired2 = "您的護士太疲倦了。立å³è®“她們休æ¯ã€‚", plants_dying = "æ‚¨çš„ç›†æ ½å¿«å¹¹æ­»äº†ã€‚å®ƒå€‘éœ€è¦æ°´ã€‚多為盆栽派些清潔工。病人å¯ä¸é¡˜æ„看到枯死的盆栽。", reduce_staff_rest_threshold = "嘗試在醫院制度畫é¢ä¸­æ¸›å°‘å“¡å·¥ä¼‘æ¯æ™‚的疲勞程度,這樣員工將經常休æ¯ã€‚é€™åªæ˜¯ä¸€å€‹ä¸»æ„。", more_toilets = "æ‚¨éœ€è¦æ›´å¤šçš„馬桶。人們都已急ä¸å¯å¾…了。", hospital_is_rubbish = "äººå€‘åœ¨åˆ°è™•å®£æšæ‚¨çš„醫院是垃圾。è¦çŸ¥é“您的醫院很快就會臭åé æšã€‚", pay_back_loan = "您已經掙到了很多錢。為什麼ä¸è€ƒæ…®å„Ÿé‚„貸款?", financial_trouble3 = "您的ç¾é‡‘ç‹€æ³ä¸å¤ªå¦™ã€‚想辦法增加一些收入。您è·é›¢å¤±æ•—é‚„å·®$%d。", bankruptcy_imminent = "å—¨ï¼æ‚¨å¿«ç ´ç”¢äº†ã€‚å°å¿ƒå•Šï¼", build_toilet_now = "ç«‹å³å»ºé€ æ´—手間。人們已經å¿ç„¡å¯å¿äº†ã€‚åˆ¥å‚»ç¬‘ï¼Œé€™å¯æ˜¯ä¸€å€‹åš´é‡å•題。", patient_stuck = "有人被å¡ä½äº†ï¼Œæ›´å¥½åœ°è¦åŠƒæ‚¨çš„é†«é™¢ã€‚", no_patients_last_month = "上個月,沒有新的病人å‰ä¾†æ‚¨çš„é†«é™¢ã€‚å¤ªå¯æ€•了ï¼", more_benches = "是å¦è€ƒæ…®å¤šæ“ºæ”¾ä¸€äº›é•·æ¤…。一些病情嚴é‡çš„病人ç¾åœ¨æ­£è¢«è¿«ç«™è‘—等待治療。", many_epidemics = "çœ‹ä¾†é†«é™¢è£¡åŒæ™‚有ä¸åªä¸€ç¨®å‚³æŸ“病。這將是一場空å‰ç½é›£ï¼ŒåŠ æ²¹ï¼", place_plants_to_keep_people = "人們正在離開。多擺放一些盆栽å¯ä»¥æŒ½ç•™ä»–們。", patients_thirsty2 = "äººå€‘æŠ±æ€¨å£æ¸´ã€‚您應該在醫院中多設置一些飲料販賣機,或將已有的飲料販賣機移動到他們身邊。", money_low = "", staff_unhappy = "æ‚¨çš„å·¥ä½œäººå“¡ä¸æ˜¯å¾ˆå¿«æ¨‚。å¯ä»¥å˜—試給他們一些çŽé‡‘,或為他們建造一個員工休æ¯å®¤ã€‚您也å¯ä»¥åœ¨é†«é™¢åˆ¶åº¦ç•«é¢ä¸­èª¿æ•´å“¡å·¥éœ€è¦ä¼‘æ¯æ™‚的疲勞程度。", people_freezing = "ç„¡æ³•ç›¸ä¿¡ï¼Œåœ¨é€™å€‹æ“æœ‰ä¸­å¤®ç©ºèª¿çš„æ™‚代,您的一些病人竟然快被å‡åƒµäº†ã€‚趕快擺放一些暖氣並打開供暖開關使他們感到溫暖。", need_toilets = "ç—…äººéœ€è¦æ´—手間。請在一些易找的地方建造洗手間。", nobody_cured_last_month = "上個月幾乎沒有治癒一個病人。", patients_very_cold = "病人們感到太冷了。請增加醫院的供熱,或在醫院中多擺放一些暖氣。", build_toilets = "ç«‹å³å»ºé€ ä¸€å€‹æ´—手間,å¦å‰‡æ‚¨å°‡çœ‹åˆ°éžå¸¸ä¸é›…的事情發生。想åƒä¸€ä¸‹é†«é™¢ä¸­å°‡æœƒå‡ºç¾çš„味é“。", many_killed = "您已經殺死了%d個病人。您本來應該治癒他們的病。", place_plants2 = "人們正在離開。多擺放一些盆栽å¯ä»¥ä½¿ä»–們多åœç•™ä¸€æœƒå…’。", staff_tired = "您的員工感到太疲倦了。如果您å†ä¸è®“他們到員工休æ¯å®¤ä¼‘æ¯ä¸€æœƒå…’,則æŸäº›äººæœƒç”±æ–¼é•·æ™‚間的緊張疲勞導致崩潰。", machines_falling_apart = "您的機器快爆炸了。請立å³è®“清潔工進行維修ï¼", patients_unhappy = "病人ä¸å–œæ­¡æ‚¨çš„醫院。您必須為æé«˜ç’°å¢ƒè³ªé‡åšä¸€äº›äº‹æƒ…。", place_plants3 = "人們的情緒很糟。多擺放一些盆栽使他們快樂。", staff_unhappy2 = "æ‚¨çš„å“¡å·¥éƒ½ä¸æ˜¯å¾ˆå¿«æ¨‚ã€‚å¾ˆå¿«ä»–å€‘å°±æœƒè¦æ±‚發çŽé‡‘。", cash_low_consider_loan = "您的æµå‹•資金狀æ³å分ä¸å¦™ã€‚是å¦è€ƒæ…®è²¸æ¬¾ï¼Ÿ", queue_too_long_at_reception = "在æœå‹™å°å‰æŽ’隊等待的病人太多了。請å†å»ºä¸€å€‹æœå‹™å°ä¸¦é›‡ç”¨ä¸€å接待員。", queue_too_long_send_doctor = "您的%s隊ä¼å¤ªé•·äº†ã€‚è«‹ç¢ºèªæˆ¿é–“ä¸­æ˜¯å¦æœ‰é†«ç”Ÿã€‚", financial_trouble = "您正é¢è‡¨è‘—åš´é‡çš„è²¡æ”¿å±æ©Ÿã€‚ç«‹å³æ•´ç†å¸³æˆ¶ï¼å¦‚果您å†è™§æ$%d,本關任務將失敗。", doctors_tired2 = "您的醫生太疲倦了。立å³è®“他們休æ¯ã€‚", handymen_tired = "您的清潔工人太勞累了。立å³è®“他們休æ¯ã€‚", patient_leaving = "一個病人離開了。原因?醫院管ç†ä¸å–„,員工工作ä¸åŠ›ï¼Œå†åŠ ä¸Šè¨­æ–½ä¸å…¨ã€‚", machinery_damaged2 = "您必須立å³é›‡ç”¨ä¸€å清潔工去負責修ç†ç¶­è­·æ©Ÿå™¨ã€‚", patients_leaving = "病人們正在離去。在醫院中多擺放一些盆栽,長椅,飲料販賣機等物å“將有助於挽留他們。", epidemic_getting_serious = "傳染病疫情越來越嚴é‡ã€‚您必須立å³è¡Œå‹•ï¼", machinery_damaged = "ç«‹å³ä¿®ç†æ‚¨çš„æ©Ÿå™¨ã€‚它們無法支æ’太久。", people_have_to_stand = "病人ä¸å¾—ä¸ç«™ç«‹ç­‰å¾…。立å³å¤šæ“ºæ”¾ä¸€äº›é•·æ¤…。", receptionists_tired = "您的接待員太疲勞了。立å³è®“她們休æ¯ã€‚", build_staffroom = "ç«‹å³å»ºé€ ä¸€å€‹å“¡å·¥ä¼‘æ¯å®¤ã€‚您的員工工作太辛苦了,而且將è¦ç²¾ç¥žå´©æ½°äº†ã€‚快點ï¼", machinery_slightly_damaged = "您的醫療儀器有輕微æå‚·ã€‚別忘了維護。", need_staffroom = "建造一個員工休æ¯å®¤ä½¿æ‚¨çš„員工得以休æ¯ã€‚", patients_getting_hot = "病人們感到太熱了。請é™ä½Žé†«é™¢çš„供熱,或移走一些暖氣。", machinery_deteriorating = "您的機器由於éŽåº¦ä½¿ç”¨å·²ç¶“出ç¾è€åŒ–ç¾è±¡ã€‚å°å¿ƒã€‚", patients_too_hot = "病人們感到太熱了。è¦éº¼æ‹†é™¤ä¸€äº›æš–氣,調低供熱標準,è¦éº¼ç‚ºä»–們多設置一些飲料販賣機。", patients_thirsty = "äººå€‘æ„Ÿåˆ°å£æ¸´ã€‚也許您應該å‘他們æä¾›é£²æ–™è²©è³£æ©Ÿã€‚", machine_severely_damaged = "%s已經快徹底毀壞了。", litter_catastrophy = "é†«é™¢ä¸­çš„å»¢æ£„ç‰©å¤ªå¤šäº†ã€‚ç«‹å³æ´¾ä¸€éšŠæ¸…潔工人解決這個å•題。", staff_very_cold = "員工們感覺太冷了。請增加醫院的供熱,或在醫院中多擺放一些暖氣。", deal_with_epidemic_now = "å¦‚æžœç„¡æ³•ç«‹å³æŽ§åˆ¶å‚³æŸ“ç—…é‚£éº¼æ‚¨çš„é†«é™¢å°‡å‡ºå¤§äº‚å­ã€‚加油ï¼", too_many_plants = "您已經佈置了足夠多的盆栽了。醫院都快變æˆå¢æž—了。", patients_really_thirsty = "ç—…äººå€‘æ„Ÿåˆ°å£æ¸´ã€‚å¤šæ”¾ç½®ä¸€äº›é£²æ–™è²©è³£æ©Ÿï¼Œæˆ–å°‡å·²æœ‰çš„é£²æ–™è²©è³£æ©Ÿç§»å‹•åˆ°æœ€é•·çš„éšŠä¼æ—邊。", some_litter = "清潔工人å¯ä»¥åœ¨åžƒåœ¾æˆå †ä¹‹å‰æ¸…除所有垃圾。", patients_annoyed = "人們å°é†«é™¢çš„ç®¡ç†æ„Ÿåˆ°æ¥µç«¯æ†¤æ€’。我ä¸èƒ½è²¬å‚™ä»–們,抓緊時間解決å•題å§ï¼", receptionists_tired2 = "您的接待員太疲倦了。立å³è®“她們休æ¯ã€‚", }, placement_info = { door_can_place = "如果您願æ„的話å¯ä»¥åœ¨é€™è£¡è¨­ç½®æˆ¿é–€ã€‚", window_can_place = "ä½ å¯ä»¥åœ¨é€™è£¡è¨­ç½®çª—戶,這樣很好。", door_cannot_place = "抱歉,您無法在這裡設置房門。", object_can_place = "您å¯ä»¥åœ¨é€™è£¡æ“ºæ”¾ç‰©å“。", reception_can_place = "您å¯ä»¥åœ¨é€™è£¡æ”¾ç½®æœå‹™å°ã€‚", staff_cannot_place = "您無法在這裡安置員工。å°ä¸èµ·ã€‚", staff_can_place = "您å¯ä»¥åœ¨é€™è£¡å®‰ç½®å“¡å·¥ã€‚", object_cannot_place = "嗨,您無法在這裡擺放物å“。", room_cannot_place = "您無法在這裡建房。", room_cannot_place_2 = "您無法在這裡建房。", window_cannot_place = "您實際上無法在這裡設置窗戶。", reception_cannot_place = "您無法在這裡放置æœå‹™å°", }, praise = { many_benches = "ç—…äººæ“æœ‰è¶³å¤ çš„座ä½ã€‚太棒了。", many_plants = "å¤ªå¯æ„›äº†ã€‚您已經佈置了足夠的盆栽。病人將感到滿æ„。", plants_are_well = "太棒了。盆栽被照料得很好。", few_have_to_stand = "在您的醫院中幾乎æ¯å€‹äººéƒ½æœ‰åº§ä½ã€‚所有的病人都感到快樂。", plenty_of_benches = "座椅已經足夠了。", plants_thriving = "太棒了。醫院中的盆栽生長得很茂盛。它們看起來令人感到驚奇。堅æŒä½ï¼Œæ‚¨å°‡æœ‰å¯èƒ½è´å¾—一個大çŽã€‚", patients_cured = "已經治癒了%d個病人。", }, information = { larger_rooms = "大的房間將使員工感覺到自己的é‡è¦ï¼Œä¸¦æé«˜ä»–們的表ç¾ã€‚", extra_items = "房間中擺放物å“將使員工感到舒æœä¸¦æé«˜ä»–們的表ç¾ã€‚", epidemic = "在您的醫院中發ç¾äº†ä¸€ç¨®å‚³æŸ“病。您必須立å³è™•ç†ï¼", promotion_to_doctor = "您的一個實習醫生æå‡ç‚ºé†«ç”Ÿäº†ã€‚", emergency = "緊急情æ³ï¼å¿«ï¼å¿«ï¼å¿«ï¼", patient_abducted = "您的一ä½ç—…人被外星人誘æ‹äº†ã€‚", first_cure = "å¹¹å¾—å¥½ï¼æ‚¨å·²ç¶“治癒了第一個病人。", promotion_to_consultant = "您的一å醫生已經æå‡ç‚ºå°ˆå®¶äº†ã€‚", handyman_adjust = "您å¯ä»¥é€šéŽèª¿æ•´æ¸…潔工人工作的優先級使其打掃得更乾淨。", promotion_to_specialist = "您的一個醫生被æå‡ç‚º%s。", initial_general_advice = { rats_have_arrived = "è€é¼ åœ¨æ‚¨çš„醫院中到處亂跑。使用滑鼠打死它們。", autopsy_available = "è‡ªå‹•é©—å±æ©Ÿè¢«ç ”製出來了。藉著它,您å¯ä»¥è™•ç½®æƒ¹éº»ç…©æˆ–ä¸æ­¡è¿Žçš„病人,還å¯ä»¥å°ä»–å€‘é€²è¡Œç ”ç©¶ã€‚è¦æ³¨æ„ï¼èƒ½å¦ä½¿ç”¨è©²æ©Ÿå™¨é‚„有很大的爭議。", first_patients_thirsty = "é†«é™¢ä¸­çš„äººå€‘æ„Ÿåˆ°å£æ¸´ã€‚為他們多擺放一些飲料販賣機。", research_now_available = "您已經建造了第一個研究房間。ç¾åœ¨æ‚¨å¯ä»¥é€²å…¥ç ”ç©¶ç•«é¢ã€‚", psychiatric_symbol = "æ“æœ‰ç²¾ç¥žç—…技能的醫生後跟符號:|", decrease_heating = "醫院中的人們感到太熱了。在城鎮地圖畫é¢ä¸­ï¼Œé™ä½Žä¾›ç†±é‡ã€‚", surgeon_symbol = "æ“æœ‰å¤–科手術技能的醫生後跟符號:{", first_emergency = "急救病人的頭頂有一個閃亮的è—è‰²æ€¥æ•‘ç‡ˆã€‚åœ¨æ­»äº¡ä¹‹å‰æˆ–æ™‚é–“å€’æ•¸çµæŸä¹‹å‰æ²»ç™’他們。", first_epidemic = "在醫院中爆發了傳染病請決定是掩蓋病情還是將其清除出去。", taking_your_staff = "æœ‰äººæƒ³è¦æŒ–èµ°æ‚¨çš„å“¡å·¥ã€‚æ‚¨è¦æŠ“ç·Šèˆ‡ä»–å€‘é€²è¡Œé¬¥çˆ­ã€‚", place_radiators = "é†«é™¢ä¸­çš„äººå€‘æ„Ÿåˆ°å¯’å†·ï¼æ‚¨å¯ä»¥å¤šæ“ºæ”¾ä¸€äº›æš–氣。", epidemic_spreading = "您的醫院中發ç¾å‚³æŸ“病。在病人離開醫院之å‰ä¸€å®šè¦æ²»ç™’他們。", research_symbol = "æ“æœ‰ç ”究技能的醫生後跟符號:}", machine_needs_repair = "æ‚¨æœ‰ä¸€å°æ©Ÿå™¨éœ€è¦ç¶­ä¿®ã€‚確定機器ä½ç½®ï¼å®ƒå¯èƒ½æ­£åœ¨å†’ç…™ï¼åœ¨æ©Ÿå™¨ä¸Šé»žæ“Šä¸€ä¸‹ï¼Œå†é»žæ“Šæ¸…潔工人按鈕。", increase_heating = "人們感到寒冷。打開城鎮地圖畫é¢ä¸­çš„供暖設施。", first_VIP = "æ‚¨è¦æŽ¥å¾…ä¾†è¨ªçš„ç¬¬ä¸€ä½è²´è³“。一定è¦ç¢ºä¿è²´è³“沒有看到任何ä¸è‰¯äº‹ä»¶ï¼Œæˆ–å…¶ä»–ä¸é«˜èˆˆçš„病人。", }, patient_leaving_too_expensive = "一ä½ç—…人沒有為%s付款就離開了。這æå¤±å¤ªå¤§äº†ã€‚", vip_arrived = "å°å¿ƒï¼%sæ­£æº–å‚™è¨ªå•æ‚¨çš„醫院ï¼ä¿æŒé†«é™¢é‹è½‰æ­£å¸¸ï¼Œé€™æ¨£æ‰èƒ½ä½¿ä»–感到愉快。", epidemic_health_inspector = "您的醫院中出ç¾å‚³æŸ“病的消æ¯å·²ç¶“到é”了衛生署。衛生巡查員很快就è¦åˆ°é”ï¼Œå¿«åšæº–備。", first_death = "這是您第一次殺死病人。感覺如何?", pay_rise = "您的一個員工å¨è„…è¦è¾­è·ã€‚鏿“‡æ˜¯å¦åŒæ„其請求,或將其解雇。點擊å±å¹•左下方的￿標å¯ä»¥æŸ¥çœ‹å¨è„…è¦è¾­è·çš„員工信æ¯ã€‚", place_windows = "設置窗戶將使房間更加明亮,並振奮員工的精神。", fax_received = "在å±å¹•左下角剛剛彈出的￿標表示一些é‡è¦äº‹ä»¶çš„相關信æ¯ï¼Œæˆ–æŸäº›éœ€è¦æ‚¨æ±ºå®šçš„事情。", }, build_advice = { placing_object_blocks_door = "設置該物å“å¯ä»¥é˜»æ­¢å…¶ä»–人接近。", blueprint_would_block = "è—圖與其它房間é‡ç–Šäº†ã€‚è«‹å˜—è©¦é‡æ–°è¨­ç½®è—圖尺寸,或移動è—圖ä½ç½®ã€‚", door_not_reachable = "病人無法進入那扇門。仔細想一想。", blueprint_invalid = "è—圖ä½ç½®ä¸å°ã€‚", }, } casebook = { sent_home = "轉走", deaths = "死亡", treatment_charge = "治療花費", reputation = "è²æœ›", research = "集中研究", cure = "治療", cured = "治癒", earned_money = "æ”¶å…¥", cure_desc = { hire_psychiatrists = "您需è¦é›‡ç”¨ä¸€äº›ç²¾ç¥žç—…醫生。", improve_cure = "æé«˜ç™‚效。", hire_nurses = "您需è¦é›‡ç”¨ä¸€äº›è­·å£«ã€‚", build_ward = "您ä»éœ€è¦å»ºé€ ä¸€å€‹ç—…房。", no_cure_known = "未治癒。", cure_known = "治癒。", build_room = "我建議您修建%s", hire_doctors = "您需è¦é›‡ç”¨ä¸€äº›é†«ç”Ÿã€‚", hire_surgeons = "您需è¦é›‡ç”¨ä¸€äº›å¤–科醫生。", }, } diseases = { diag_ward = { name = "病房診斷", }, diag_ultrascan = { name = "超級掃瞄儀診斷", }, autopsy = { name = "é©—å±", }, third_degree_sideburns = { cause = "ç—…å› ï¼åš®å¾€20世紀70年代。", cure = "治療ï¼ç²¾ç¥žç—…醫生必須使用最新科技,使病人èªè­˜åˆ°é€™äº›å¥‡è£ç•°æœéƒ½æ˜¯åžƒåœ¾ã€‚", name = "絡腮é¬å­", symptoms = "症狀ï¼é•·é ­é«®ï¼Œå…¨èº«é–ƒé–ƒç™¼å…‰ã€‚", }, discrete_itching = { cause = "ç—…å› ï¼æ˜†èŸ²å®å’¬ã€‚", cure = "治療ï¼ç—…人å–下膠狀糖漿阻止皮膚發癢。", name = "æ”癢症", symptoms = "症狀ï¼åˆ°è™•亂抓,引起全身發炎。", }, the_squits = { cause = "ç—…å› ï¼åƒäº†è®Šè³ªçš„æ¯”薩餅。", cure = "æ²»ç™‚ï¼æœç”¨ç²˜æ€§è—¥åŠ‘ä¿®è£œç—…äººçš„å…§è‡Ÿã€‚", name = "嘔å", symptoms = "症狀ï¼å™¢ã€‚想必您也å¯ä»¥çŒœå¾—到。", }, spare_ribs = { cause = "ç—…å› ï¼å在冰冷的石地æ¿ä¸Šã€‚", cure = "治療ï¼ç”±å…©å外科醫生執行手術。", name = "瘦骨", symptoms = "症狀ï¼èƒ¸éƒ¨æ„Ÿè¦ºä¸é©ã€‚", }, diag_blood_machine = { name = "血液機器診斷", }, king_complex = { cause = "ç—…å› ï¼è²“çŽ‹çš„æ€æƒ³é€²å…¥ç—…人大腦並å–而代之。", cure = "治療ï¼ç”±ç²¾ç¥žç—…醫生告訴病人其è’謬的舉止。", name = "貓王症侯群", symptoms = "症狀ï¼ç©¿è‘—舉止怪異。", }, diag_x_ray = { name = "X光診斷", }, pregnancy = { cause = "ç—…å› ï¼æ‡·å­•。", cure = "治療ï¼åœ¨æ‰‹è¡“中心中將嬰兒å–出,洗淨é€åˆ°ç—…人é¢å‰ã€‚", name = "產婦", symptoms = "症狀ï¼ä¸æ–·å¢žå¤§çš„啤酒肚。", }, fake_blood = { cause = "ç—…å› ï¼ç—…人常常開玩笑。", cure = "治療ï¼åªæœ‰ç²¾ç¥žç—…醫生æ‰èƒ½ä½¿ç—…人安éœä¸‹ä¾†ã€‚", name = "å‡è¡€", symptoms = "ç—‡ç‹€ï¼æµå‡ºç´…色液體。", }, diag_psych = { name = "精神病診斷", }, invisibility = { cause = "ç—…å› ï¼è¢«æœ‰æ”¾å°„性的螞蟻å®å’¬ã€‚", cure = "治療ï¼åœ¨è—¥æˆ¿å–下彩色液體,將很快使病人æ¢å¾©æ­£å¸¸ã€‚", name = "隱身", symptoms = "症狀ï¼ç—…人本身感覺ä¸åˆ°ä»»ä½•ä¸é©ï¼Œä¸¦å¸¸å¸¸å’Œå®¶è£¡äººé–‹çŽ©ç¬‘ã€‚", }, golf_stones = { cause = "ç—…å› ï¼å¸å…¥äº†é«˜çˆ¾å¤«çƒå…§éƒ¨çš„æœ‰æ¯’氣體。", cure = "治療ï¼ç”±å…©å外科醫生執行手術。", name = "高爾夫症", symptoms = "症狀ï¼ç¥žç¶“錯亂且胡言亂語。", }, diag_general_diag = { name = "一般診斷", }, infectious_laughter = { cause = "ç—…å› ï¼è§€çœ‹å¤å…¸å–œåŠ‡ã€‚", cure = "治療ï¼ç²¾ç¥žç—…醫生必須讓病人瞭解其當å‰åš´é‡çš„病情。", name = "狂笑症", symptoms = "症狀ï¼ä¸ä½ç‹‚笑。", }, general_practice = { name = "一般診斷", }, baldness = { cause = "ç—…å› ï¼å‘公眾說謊話。", cure = "治療ï¼ä½¿ç”¨å„€å™¨å°‡é ­é«®ç¸«åˆåˆ°ç—…人的頭上。", name = "禿頂", symptoms = "症狀ï¼è…¦é–€ç™¼äº®ï¼Œå分困窘。", }, heaped_piles = { cause = "ç—…å› ï¼ç«™ç«‹åœ¨æ°´å†·å»å™¨æ—邊。", cure = "æ²»ç™‚ï¼æœç”¨è—¥åŠ‘ã€‚", name = "痔瘡", symptoms = "症狀ï¼ç—…人感覺就åƒå在大ç†çŸ³ä¸Šã€‚", }, unexpected_swelling = { cause = "ç—…å› ï¼æ„外事件。", cure = "治療ï¼ç”±å…©å外科醫生實行手術。", name = "腫脹", symptoms = "症狀ï¼è…«è„¹ã€‚", }, jellyitis = { cause = "ç—…å› ï¼æ—¥å¸¸é£²é£Ÿå«æœ‰éŽå¤šçš„膠狀物並完æˆå¤ªå¤šçš„練習。", cure = "治療ï¼å°‡ç—…人浸入到膠桶中。", name = "失衡症", symptoms = "症狀ï¼èµ°è·¯æ–æ–æ™ƒæ™ƒä¸¦ä¸æ™‚摔倒。", }, hairyitis = { cause = "ç—…å› ï¼åœ¨æœˆå…‰ä¸‹åœç•™éŽé•·æ™‚間。", cure = "治療ï¼ä½¿ç”¨é›»åˆ†è§£æ©Ÿå™¨åŽ»æŽ‰æ¯›é«®ä¸¦å¡«è£œéºç•™çš„æ¯›å­”。", name = "多毛症", symptoms = "症狀ï¼å—…è¦ºç‰¹åˆ¥éˆæ•。", }, alien_dna = { cause = "ç—…å› ï¼æ“有了外星人的DNA。", cure = "治療ï¼åˆ©ç”¨å„€å™¨å¿«é€Ÿæ¸…除病人體內的DNA。", name = "外星人DNA", symptoms = "症狀ï¼é€æ¼¸è›»è®Šæˆå¤–星人並陰謀摧毀我們的城市。", }, bloaty_head = { cause = "ç—…å› ï¼èžåˆ°äº†å£žä¹³é…ªä¸¦å–了ä¸ä¹¾æ·¨çš„雨水。", cure = "æ²»ç™‚ï¼æ‰“破腫脹腦袋,並使用充氣機使腦袋æ¢å¾©æ­£å¸¸ã€‚", name = "頭部腫脹", symptoms = "症狀ï¼éžå¸¸ä¸èˆ’æœã€‚", }, gastric_ejections = { cause = "ç—…å› ï¼åƒäº†éŽè¾£çš„å››å·èœã€‚", cure = "æ²»ç™‚ï¼æœç”¨ç‰¹æ®Šå‡å›ºåŠ‘å¾žè€Œé˜»æ­¢å˜”å。", name = "å胃症", symptoms = "症狀ï¼åŠæ¶ˆåŒ–çš„é£Ÿç‰©è¢«ç—…äººä¸æ™‚å出。", }, uncommon_cold = { cause = "ç—…å› ï¼å¸é€²äº†ç©ºæ°£ä¸­çš„ç°å¡µã€‚", cure = "æ²»ç™‚ï¼æœç”¨è—¥æˆ¿é…製的特效藥。", name = "感冒", symptoms = "ç—‡ç‹€ï¼æµé¼»æ¶•,打噴åšã€‚", }, corrugated_ankles = { cause = "ç—…å› ï¼é§•駛時間éŽé•·ã€‚", cure = "æ²»ç™‚ï¼æœç”¨å°‘釿¯’è‰å’Œé¦™æ–™è£½æˆçš„藥劑,從而打通關節。", name = "è…³è¸å½Žæ›²", symptoms = "症狀ï¼è…³è¸æ„Ÿè¦ºä¸èˆ’æœã€‚", }, sleeping_illness = { cause = "ç—…å› ï¼å…§åˆ†æ³Œå¤±èª¿ã€‚", cure = "治療ï¼ç”±è­·å£«é…置一劑å¨åŠ›å¼·å¤§çš„èˆˆå¥®åŠ‘çµ¦ç—…äººæœç”¨ã€‚", name = "å—œç¡ç—‡", symptoms = "症狀ï¼ç„¡è«–走到那裡都想ç¡è¦ºã€‚", }, sweaty_palms = { cause = "ç—…å› ï¼å®³æ€•找工作時的é¢è©¦ã€‚", cure = "治療ï¼ç²¾ç¥žç—…醫生使病人走出心ç†èª¤å€ã€‚", name = "手心出汗症", symptoms = "症狀ï¼ç•¶èˆ‡ç—…äººæ¡æ‰‹æ™‚ï¼Œæ„Ÿè¦ºå°±åƒæ”¥è‘—ä¸€å¡Šå¸æ»¿äº†æ°´çš„æµ·ç¶¿ã€‚", }, serious_radiation = { cause = "ç—…å› ï¼ä¸å°å¿ƒéŒ¯èª¤åžåƒäº†å«æœ‰éˆ½å…ƒç´ çš„å£é¦™ç³–。", cure = "治療ï¼ç—…人必須被放置在淨化淋浴器內徹底清洗。", name = "放射病", symptoms = "症狀ï¼ç—…人感到éžå¸¸éžå¸¸çš„ä¸èˆ’æœã€‚", }, diag_cardiogram = { name = "心電圖儀診斷", }, diag_scanner = { name = "掃æå„€è¨ºæ–·", }, gut_rot = { cause = "ç—…å› ï¼å–了太多的å¨å£«å¿Œé…’。", cure = "治療ï¼ç”±è­·å£«é…置藥劑,交給病人æœä¸‹ã€‚", name = "內臟è…爛", symptoms = "症狀ï¼ä¸å’³å—½ï¼Œä½†èƒƒå£ä¹Ÿæ²’有了。", }, iron_lungs = { cause = "ç—…å› ï¼åŸŽå¸‚中渾æ¿çš„空氣。", cure = "治療ï¼å…©å外科醫生在手術中心執行手術。", name = "éµè‚º", symptoms = "ç—‡ç‹€ï¼æ¸¾èº«é›£å—。", }, broken_wind = { cause = "ç—…å› ï¼é£¯å¾Œä½¿ç”¨å¥èº«æˆ¿çš„è…³è¸è»Šé€²è¡Œé‹å‹•。", cure = "æ²»ç™‚ï¼æœç”¨è—¥æˆ¿é…製的特效藥。", name = "臭å±ç—‡", symptoms = "症狀ï¼ä½¿èº«å¾Œçš„人感到極度的ä¸èˆ’æœã€‚", }, kidney_beans = { cause = "ç—…å› ï¼é£²æ–™ä¸­åŠ å…¥äº†å¤§é‡å†°å¡Šã€‚", cure = "治療ï¼ç”±å…©å外科醫生執行手術。", name = "腎豆", symptoms = "症狀ï¼ç–¼ç—›ä¸”ç¶“å¸¸åŽ»å»æ‰€ã€‚", }, transparency = { cause = "ç—…å› ï¼èˆ”了打開的容器的鉛箔上的酸乳酪。", cure = "æ²»ç™‚ï¼æœç”¨è—¥æˆ¿é…製的特殊清涼彩色沖劑就å¯ä»¥æ²»ç™’疾病。", name = "逿˜Žç—‡", symptoms = "症狀ï¼è‚Œè‚‰è®Šå¾—逿˜Žï¼Œå°å…‰æ•感。", }, broken_heart = { cause = "ç—…å› ï¼ä¸€äº›äººæ¯”病人富有,年輕,瘦。", cure = "治療ï¼ç”±å…©å外科醫生打開病人的胸腔,輕輕地修補其心臟缺陷。", name = "破碎的心", symptoms = "症狀ï¼ç—›å“­æµæ¶•。", }, slack_tongue = { cause = "ç—…å› ï¼éŽå¤šåœ°è¨Žè«–肥皂劇。", cure = "治療ï¼å°‡èˆŒé ­æ”¾å…¥èˆŒé ­åˆ‡ç‰‡æ©Ÿä¸­ï¼Œå°‡å¿«é€Ÿæœ‰æ•ˆåœ°å¾—到治療。", name = "舌頭鬆弛症", symptoms = "症狀ï¼èˆŒé ­å¢žé•·åˆ°æ­£å¸¸çš„5å€ã€‚", }, tv_personalities = { cause = "ç—…å› ï¼æ—¥é–“電視節目。", cure = "治療ï¼ç²¾ç¥žç—…醫生必須使病人有信心賣掉電視機,而購買收音機。", name = "電視病", symptoms = "症狀ï¼ç”¢ç”ŸéŒ¯è¦ºï¼Œä»¥ç‚ºè‡ªå·±æ­£åœ¨è¡¨æ¼”。", }, ruptured_nodules = { cause = "ç—…å› ï¼åœ¨å¯’冷的季節中跳èºã€‚", cure = "治療ï¼å…©å稱è·çš„外科醫生必須使用穩定的雙手切除腫瘤。", name = "腫瘤", symptoms = "症狀ï¼ç„¡æ³•舒é©åœ°å下。", }, fractured_bones = { cause = "ç—…å› ï¼å¾žé«˜è™•摔到混å‡åœŸåœ°é¢ä¸Šã€‚", cure = "治療ï¼å°‡å·²æ‰“好的石è†ä½¿ç”¨å„€å™¨åŽ»é™¤ã€‚", name = "骨折", symptoms = "症狀ï¼åŠ‡ç—›ä¸”ç„¡æ³•ä½¿ç”¨å››è‚¢ã€‚", }, chronic_nosehair = { cause = "ç—…å› ï¼ç¶“常å°ä¸å¦‚自己的人嗤之以鼻。", cure = "治療ï¼å£æœä»¤äººåŽ­æƒ¡çš„æ¯›é«®åŽ»é™¤åŠ‘ï¼Œè©²è—¥åŠ‘ç”±è­·å£«åœ¨è—¥æˆ¿é…製。", name = "鼻毛éŽå¤šç—‡", symptoms = "症狀ï¼é¼»æ¯›éŽé•·éŽå¤šï¼Œå¿«æˆé³¥å·¢äº†ã€‚", }, } policy = { header = "醫院制度", diag_termination = "è¨ºæ–·çµæŸ", sliders = { guess = "嘗試治療", send_home = "é£é€å›žå®¶", stop = "åœæ­¢æ²»ç™‚", staff_room = "進入休æ¯å®¤", }, diag_procedure = "診斷程åº", staff_rest = "員工休æ¯", staff_leave_rooms = "員工離開房間", } competitor_names = { [1] = "神諭", [2] = "巨人", [3] = "黑爾", [4] = "馬笛維克", [5] = "冬钿¨¹", [6] = "沉æ€", [7] = "禪", [8] = "里昂", [9] = "瑪文", [10] = "æ™¶é«”", [11] = "æ¯è¦ª", [12] = "潔尼", [13] = "CORSIX", [14] = "ROUJIN", [15] = "EDVIN", [16] = "薩姆", [17] = "查ç†", [18] = "亞瑟", [19] = "馬格尼斯", [20] = "賽爾", [21] = "約書亞", [22] = "丹尼爾", [23] = "奧利文", [24] = "尼克", } buy_objects_window = { price = "價格:", choose_items = "鏿“‡ç‰©å“", total = "總共:", } trophy_room = { wait_times = { award = { [1] = "æ­å–œã€‚您的醫院的排隊等待時間éžå¸¸çŸ­ã€‚這是給您的çŽå‹µã€‚", }, penalty = { [1] = "病人在您的醫院中排隊等待時間太長了。您應該好好地管ç†å‰ä¾†å°±è¨ºçš„病人。", }, }, happy_vips = { trophies = { [1] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­çµ¦ä¾†è¨ªçš„è²´è³“å€‘ç•™ä¸‹äº†æ·±æ·±åœ°å¥½æ„Ÿï¼Œç‰¹æ­¤å‘æ‚¨é ’發諾è²çˆ¾çŽã€‚", [2] = "由於您的醫院使æ¯ä½é€ è¨ªè²´è³“都感到愉快,特此由å人機構頒發著å人士çŽã€‚您已經æˆç‚ºæˆ‘們å人行列中的一員。", [3] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­ä½¿æ¯ä¸€ä½ä¾†è¨ªè²´è³“都感到了員工的工作熱情,特此頒發貴賓滿æ„çŽã€‚", }, }, hosp_value = { penalty = { [1] = "您的醫院價值太低了。您的ç†è²¡èƒ½åŠ›å¤ªçˆ›äº†ã€‚è¨˜ä½ä¸€å€‹å¥½çš„醫院通常也是價值最高的醫院。", }, awards = { [1] = "由於您的醫院價值ä¸è²ï¼Œå› æ­¤è¡›ç”Ÿç½²å‘您表示æ­å–œã€‚", }, regional = { [1] = "您真是一個ç†è²¡é«˜æ‰‹ã€‚您的醫院的價值比其它醫院的總和還è¦å¤šã€‚", }, }, rats_accuracy = { trophies = { [1] = "由於您擊打è€é¼ çš„命中率為%d%%ï¼Œç‰¹æ­¤é ’ç™¼æ¥µé“æ¢Ÿé›„射擊準確çŽã€‚", [2] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­ä»¥é›£ä»¥ç½®ä¿¡çš„å‘½ä¸­çŽ‡%d%%擊斃è€é¼ ï¼Œç‰¹æ­¤é ’çŽã€‚", [3] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ“Šæ–ƒäº†%d%%çš„è€é¼ ï¼Œç‰¹æ­¤é ’發地城守護者除害çŽã€‚æ­å–œï¼", }, }, all_cured = { awards = { [1] = "由於您的醫院在éŽå޻䏀年䏭æˆåŠŸåœ°æ²»ç™‚äº†æ‰€æœ‰ç—…äººï¼Œç‰¹æ­¤é ’ç™¼ç‘ªéº—æ²»ç™‚çŽã€‚", }, trophies = { [1] = "由於您的醫院在éŽå޻䏀年䏭æˆåŠŸåœ°æ²»ç™‚äº†å°±è¨ºçš„æ¯å€‹ç—…äººï¼Œåœ‹éš›æ²»ç™‚åŸºé‡‘æœƒç‰¹æ­¤å‘æ‚¨é ’發全部治癒çŽã€‚", [2] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ²»ç™’äº†å¤§é‡æ‚£è€…,特此頒發疾病剋星çŽã€‚", }, }, best_value_hosp = { trophies = { [1] = "由於您的醫院在éŽå޻䏀年䏭è´å¾—äº†æœ€é«˜çš„è²æœ›ï¼Œç‰¹æ­¤é ’發白衣天使çŽã€‚這是您應得的。", }, penalty = { [1] = "å‘¨åœæ¯å€‹é†«é™¢éƒ½æ¯”您的醫院富有。您è¦åŠ æ²¹å•Šã€‚å¤šè³¼è²·ä¸€äº›æ˜‚è²´çš„æ±è¥¿ã€‚", }, regional = { [1] = "æ­å–œæ‚¨ç®¡ç†çš„醫院æˆç‚ºæœ€æœ‰åƒ¹å€¼çš„é†«é™¢ã€‚å¹¹å¾—å¥½ã€‚ä¿æŒä¸‹åŽ»ã€‚", }, }, high_rep = { penalty = { [1] = "在éŽåŽ»ä¸€å¹´ä¸­ï¼Œæ‚¨è´å¾—äº†å¾ˆä½Žçš„è²æœ›ã€‚以後一定è¦åŠ æ²¹å•Šã€‚", [2] = "æ‚¨çš„è²æœ›æ˜¯æœ¬å€åŸŸæœ€ä½Žçš„。真丟人。加油。", }, awards = { [1] = "幹得好。在上一個年度,由於您ç²å¾—äº†å¾ˆé«˜çš„è²æœ›ï¼Œç‰¹æ­¤é ’發一個å°å°çš„çŽå‹µã€‚", [2] = "太棒了! 由於您在éŽå޻䏀年䏭å–å¾—äº†å¾ˆé«˜çš„è²æœ›ï¼Œç‰¹æ­¤é ’發çŽå‹µã€‚", }, regional = { [1] = "由於您的醫院在éŽå޻䏀年䏭è´å¾—äº†æœ€é«˜çš„è²æœ›ï¼Œç‰¹æ­¤é ’發牛蛙çŽã€‚這是您應得的。", [2] = "åœ¨é€™ä¸€å¹´ä¸­ï¼Œæ‚¨çš„é†«é™¢çš„è²æœ›è¶…éŽäº†å…¶å®ƒæ‰€æœ‰é†«é™¢çš„總和。真是一項å‰å¤§çš„æˆå°±ã€‚", }, }, consistant_rep = { trophies = { [1] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­ç„¡æ‡ˆå¯æ“Šçš„營é‹ä»¥åŠæœ€é«˜çš„è²æœ›ï¼Œæ‚¨è¢«æŽˆäºˆå…§é–£å¤§è‡£çŽã€‚幹得好。", [2] = "由於您的醫院在éŽå޻䏀年䏭è´å¾—äº†æœ€é«˜çš„è²æœ›ï¼Œç‰¹æ­¤é ’發白衣天使çŽã€‚這是您應得的。", }, }, curesvdeaths = { awards = { [1] = "æ­å–œæ‚¨åœ¨éŽåŽ»ä¸€å¹´ä¸­ä½¿é†«é™¢ä¿æŒäº†å¾ˆé«˜çš„æ²»ç™’率和很低的死亡率。", }, penalty = { [1] = "您的治癒率實在是太低了。您應該使治癒的病人多於死亡的病人。ä¸è¦é¡›å€’了。", }, }, cleanliness = { regional_good = { [1] = "æ‚¨çš„é†«é™¢æ˜¯æœ€ä¸æ¸…æ½”çš„é†«é™¢ä¹‹ä¸€ã€‚ä¸€å€‹ä¸æ¸…潔的醫院ä¸åƒ…味é“難èžï¼Œè€Œä¸”是å分å±éšªçš„。請密切留æ„。", }, award = { [1] = "衛生巡查員注æ„到您的醫院éžå¸¸ä¹¾æ·¨ã€‚乾淨的醫院æ„味安全的醫院。堅æŒä¸‹åŽ»ã€‚", }, regional_bad = { [1] = "您的醫院是本å€åŸŸä¸­æœ€ä¸æ¸…æ½”çš„ã€‚å…¶å®ƒé†«é™¢éƒ½ä½¿èµ°å»Šä¿æŒæ•´æ½”。您使醫學界蒙羞。", }, }, happy_patients = { awards = { [1] = "在éŽåŽ»ä¸€å¹´ä¸­ï¼Œæ‚¨çš„é†«é™¢ä½¿æ‰€æœ‰è¨ªå•的病人都感到快樂,您將為此感到驕傲。", [2] = "è¨ªå•æ‚¨çš„醫院的病人比其它醫院內的病人è¦å¿«æ¨‚得多。", }, penalty = { [1] = "å‰åŽ»æ‚¨çš„é†«é™¢å°±è¨ºçš„ç—…äººæ„Ÿåˆ°éžå¸¸ä¸æ»¿ã€‚您必須改進æé«˜æ‰å¯ä»¥ç²å¾—衛生署的尊é‡ã€‚", [2] = "åœ¨æ‚¨çš„é†«é™¢ä¸­æŽ¥å—æ²»ç™‚的病人感到éžå¸¸ä¸é«˜èˆˆã€‚您應多為病人的ç¦åˆ©è‘—想。", }, }, emergencies = { regional_good = { [1] = "衛生署èªè­˜åˆ°æ‚¨çš„醫院在處ç†ç·Šæ€¥äº‹ä»¶æ™‚比其它醫院都è¦å¥½ï¼Œç‰¹æ­¤é ’發çŽå‹µã€‚", }, penalty = { [1] = "您處ç†ç·Šæ€¥äº‹ä»¶çš„能力實在太差了。å‰ä¾†å°±è¨ºçš„æ€¥æ•‘病人並沒有得到正確的治療。", }, regional_bad = { [1] = "您的醫院是本å€åŸŸä¸­è™•ç†ç·Šæ€¥äº‹ä»¶æœ€å·®çš„。這都是您的éŽéŒ¯ã€‚", }, award = { [1] = "æ­å–œï¼šç”±æ–¼æ‚¨çš„åŠªåŠ›å’Œå“æœ‰æˆæ•ˆçš„緊急事件處ç†èƒ½åŠ›ï¼Œä½¿æ‚¨æ¦®ç²è©²ç‰¹åˆ¥å¤§çŽã€‚幹得好。", [2] = "您處ç†ç·Šæ€¥äº‹ä»¶çš„能力éžå¸¸çªå‡ºã€‚由於您最佳的處ç†èƒ½åŠ›ï¼Œç‰¹æ­¤é ’ç™¼çŽå‹µã€‚", }, }, gen_repairs = { awards = { [1] = "由於您的清潔工人使醫院內的儀器設備é‹è¡Œè‰¯å¥½ï¼Œç‰¹æ­¤é ’發特別çŽé‡‘ã€‚å¹¹å¾—å¥½ã€‚å‡æœŸæ„‰å¿«ã€‚", [2] = "您的清潔工人比其它醫院的都è¦å¥½ã€‚這真是一件值得慶ç¥çš„事情。", [3] = "您的儀器維護得很好。這一切都離ä¸é–‹æ¸…潔工人的努力。幹得好。", }, penalty = { [1] = "您的清潔工人在維護機器方é¢è¡¨ç¾ä¸æ˜¯å¾ˆå¥½ã€‚您應該讓他們更多地關心維護ä¿é¤Šå·¥ä½œï¼Œæˆ–者å†å¤šé›‡ç”¨å¹¾å清潔工人。", [2] = "維修工作一團糟。您的清潔工人無法很好的照料å„種醫療儀器。", }, }, no_deaths = { trophies = { [1] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ²’æœ‰ç™¼ç”Ÿä»»ä½•ç—…äººæ­»äº¡äº‹ä»¶ï¼Œç‰¹æ­¤é ’ç™¼å®‰å…¨çŽã€‚", [2] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ²’æœ‰ç™¼ç”Ÿç—…äººæ­»äº¡äº‹ä»¶ï¼Œç‰¹æ­¤ç”±ç”Ÿå‘½ç™¼å±•çµ„ç¹”å‘æ‚¨é ’çŽã€‚", [3] = "由於您的醫院在éŽå޻䏀年䏭é¿å…發生病人死亡事件,特此頒發挽留妙手回春çŽã€‚", }, penalty = { [1] = "在éŽåŽ»ä¸€å¹´ä¸­ï¼Œæ‚¨çš„é†«é™¢çš„æ­»äº¡äººæ•¸å§‹çµ‚å¾ˆé«˜ã€‚ä¸€å®šè¦å¤šåŠ æ³¨æ„。以後一定è¦ç¢ºä¿ç—…人的存活。", [2] = "æ‚¨çš„é†«é™¢å°æ–¼ç—…人的å¥åº·ç°¡ç›´å°±æ˜¯åœ¨å†’險。您應該治癒大é‡çš„ç—…äººï¼Œè€Œä¸æ˜¯è®“他們加速死亡。", }, awards = { [1] = "ç”±æ–¼æ‚¨çš„é†«é™¢åœ¨æœ¬å¹´åº¦ä¿æŒäº†å¾ˆä½Žçš„æ­»äº¡äººæ•¸ï¼Œç‰¹æ­¤é ’發çŽå‹µã€‚太棒了。", [2] = "由於您的天æ‰ç®¡ç†ä½¿é†«é™¢çš„æ­»äº¡äººæ•¸é”到最低點。這真是令人高興的事情。", }, regional = { [1] = "您的醫院的死亡人數比其它醫院都低。請接å—這個çŽå‹µã€‚", }, }, rats_killed = { trophies = { [1] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­å…±æ“Šæ–ƒäº†%dåªè€é¼ ï¼Œç‰¹æ­¤é ’發除害çŽã€‚", [2] = "由於您高超的擊鼠技巧共擊斃è€é¼ %dåªï¼Œç‰¹æ­¤é ’發è¯é‚¦æ»…é¼ çŽã€‚", [3] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­å…±æ“Šæ–ƒäº†%dåªè€é¼ ï¼Œç‰¹æ­¤é ’發è€é¼ å‰‹æ˜ŸçŽã€‚", }, }, happy_staff = { trophies = { [1] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­ä½¿åŠªåŠ›å·¥ä½œçš„å“¡å·¥ä¿æŒå¿«æ¨‚,特此頒發微笑çŽã€‚", [2] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ²’æœ‰ä¸å¿«æ¨‚的員工,特此頒發阿é”尼學院çŽã€‚", [3] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­ä½¿åŠªåŠ›å·¥ä½œçš„å“¡å·¥ä¿æŒå¿«æ¨‚,特此頒發笑星çŽç›ƒã€‚快樂地笑å§ï¼", }, awards = { [1] = "您的員工表示è¦å‘您頒çŽã€‚ä»–å€‘èªªé›–ç„¶é‚„æœ‰å¾ˆå¤šéœ€è¦æ”¹é€²çš„地方,但您å°å¾…他們的態度使他們感到很快樂。", [2] = "您的員工感到能夠為您工作是一件éžå¸¸å¿«æ¨‚的事情,他們的笑容掛在臉上。您真是一個超級管ç†äººæ‰ã€‚", }, penalty = { [1] = "您的員工希望您知é“他們éžå¸¸ä¸é«˜èˆˆã€‚好的員工就是最有價值的資產。使他們快樂,å¦å‰‡æ‚¨å°‡åœ¨ä¸€å¤©ä¹‹å…§å¤±åŽ»å…¨éƒ¨ã€‚", }, regional_good = { [1] = "您的員工比其它醫院的員工都è¦å¿«æ¨‚。快樂的員工æ„味。更高的利潤和更低的死亡率。衛生署感到éžå¸¸é«˜èˆˆã€‚", }, regional_bad = { [1] = "您的員工在上一年度中éžå¸¸ä¸å¹¸ã€‚您一定è¦åŠ ä»¥ç•™æ„。其它醫院的員工都比您的員工快樂。", }, }, healthy_plants = { awards = { [1] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ˜¯ç›†æ ½ä¿æŒå¥åº·æˆé•·ï¼Œç‰¹æ­¤é ’發èŒå£¯æˆé•·çŽã€‚", }, trophies = { [1] = "由於您的醫院在éŽåŽ»åäºŒå€‹æœˆä¸­ä½¿æ‰€æœ‰ç›†æ ½é•·å‹¢è‰¯å¥½ï¼Œç‰¹æ­¤ç›†æ ½ç›†æ ½å”æœƒå‘您頒發綠色å¥åº·çŽã€‚", [2] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­ä½¿æ‰€æœ‰ç›†æ ½é•·å‹¢è‰¯å¥½ï¼Œç‰¹æ­¤é ’ç™¼ç¶ è‰²å人çŽã€‚", }, }, sold_drinks = { trophies = { [1] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­å”®å‡ºäº†å¤§é‡çš„ç½è£é£²æ–™ï¼Œç‰¹æ­¤ç”±å…¨çƒç‰™é†«è¯åˆæœƒå‘您頒çŽã€‚", [2] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­è³£å‡ºå¤§é‡é£²æ–™ï¼Œç‰¹æ­¤é£²æ–™é›¶å”®çµ„ç¹”å‘æ‚¨é ’發清涼飲料çŽã€‚", [3] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­è³£å‡ºå¤§é‡é£²æ–™ï¼Œç‰¹æ­¤ç”±é£²æ–™å…¬å¸å‘您頒發巧克力çŽç›ƒã€‚", }, }, many_cured = { trophies = { [1] = "由於您的醫院在éŽå޻䏀年䏭æˆåŠŸåœ°æ²»ç™‚äº†å¹¾ä¹Žæ‰€æœ‰ç—…äººï¼Œç‰¹æ­¤æ­å–œæ‚¨æ¦®ç²ç‘ªéº—治療çŽã€‚", [2] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ²»ç™’äº†å¤§é‡æ‚£è€…ï¼Œåœ‹éš›æ²»ç™‚åŸºé‡‘æœƒç‰¹æ­¤å‘æ‚¨é ’發懸壺濟世çŽã€‚", [3] = "由於您的醫院在éŽåŽ»ä¸€å¹´ä¸­æ²»ç™’äº†å¤§é‡æ‚£è€…,特此頒發疾病剋星çŽã€‚", }, penalty = { [1] = "您的醫院無法使病人得到很好的治療。請關注並加以改進。", [2] = "您的醫院å°ç—…人的治療效果ä¸å¦‚其它醫院。您使衛生署和您自己都åè²æŽƒåœ°ã€‚ä¸‹ä¸ç‚ºä¾‹ã€‚", }, awards = { [1] = "æ­å–œæ‚¨åœ¨éŽåŽ»ä¸€å¹´ä¸­æ²»ç™’äº†é€™éº½å¤šçš„ç—…äººã€‚å¾ˆå¤šäººéƒ½æ„Ÿè¦ºä¸éŒ¯ï¼Œæ„Ÿè¬æ‚¨çš„工作。", [2] = "由於您的醫院治癒了比其它醫院更多的病人,所以請接å—這個çŽå‹µã€‚您的表ç¾å¤ªæ£’了。", }, regional = { [1] = "由於您的醫院治癒的病人數目比其它醫院的總和還多,特此頒發çŽå‹µã€‚", }, }, pop_percentage = { awards = { [1] = "在éŽåŽ»ä¸€å¹´ä¸­ï¼Œæ‚¨çš„é†«é™¢åœ¨åŸŽéŽ®äººå£ä¸­ç²å¾—了很高的份é¡ã€‚幹得好。", [2] = "æ­å–œã€‚è¨ªå•æ‚¨çš„醫院的居民人數超éŽäº†å…¶å®ƒä»»ä½•一個醫院。", [3] = "å¹¹å¾—å¥½ã€‚è¨ªå•æ‚¨çš„醫院的居民人數超éŽäº†å…¶å®ƒé†«é™¢çš„總和。", }, penalty = { [1] = "在éŽåŽ»ä¸€å¹´ä¸­ï¼Œæ‚¨çš„é†«é™¢åœ¨åŸŽéŽ®äººå£ä¸­ç²å¾—了很高的份é¡ã€‚幹得好。", [2] = "æ­å–œã€‚è¨ªå•æ‚¨çš„醫院的居民人數超éŽäº†å…¶å®ƒä»»ä½•一個醫院。", }, }, research = { regional_good = { [1] = "您的研究使您的醫院始終緊跟最新發展。這是您的科研人員應得的çŽå‹µã€‚", }, penalty = { [1] = "您研究開發新治療方案,儀器和藥å“的速度太慢了。這將無法趕上時代的步ä¼ã€‚", }, regional_bad = { [1] = "本å€åŸŸä¸­çš„æ¯å€‹é†«é™¢åœ¨ç ”ç©¶æ–¹é¢éƒ½å¼·æ–¼æ‚¨çš„醫院。這一點使衛生署感到震怒。", }, awards = { [1] = "您的研究使您的醫院始終緊跟最新發展。這是您的科研人員應得的çŽå‹µã€‚", [2] = "在éŽåŽ»ä¸€å¹´ä¸­ï¼Œæ‚¨æ¯”å…¶å®ƒé†«é™¢ç ”ç©¶å‡ºæ›´å¤šçš„è—¥å“和儀器設備。請接å—衛生署頒發的這個çŽå‹µã€‚", }, }, reputation = "è²æœ›", cash = "ç¾é‡‘", } menu_options_volume = { [50] = " 50%", [100] = " 100%", [30] = " 30%", [60] = " 60%", [90] = " 90%", [10] = " 10%", [20] = " 20%", [40] = " 40%", [80] = " 80%", [70] = " 70%", } menu_file_load = { [1] = " 存檔一 ", [2] = " 存檔二 ", [3] = " 存檔三 ", [4] = " 存檔四 ", [5] = " 存檔五 ", [6] = " 存檔六 ", [7] = " 存檔七 ", [8] = " 存檔八 ", } menu_file = { quit = " 退出", save = " 儲存", load = " 讀å–", restart = " 釿–°é–‹å§‹", } rooms_long = { ultrascan = "超級掃æå„€æˆ¿é–“", research_room = "研究部門", general = "一般", gps_office = "一般診斷室", inflation = "充氣房間", staffroom = "員工休æ¯å®¤", jelly_vat = "膠桶", scanner = "掃æå„€æˆ¿é–“", emergency = "緊急事件", decontamination = "淨化", corridors = "走廊", cardiogram = "心電圖儀房間", ward = "病房", training_room = "培訓室", psychiatric = "精神病診斷治療室", operating_theatre = "手術中心", dna_fixer = "DNA修復è£ç½®", tongue_clinic = "舌頭鬆弛診治所", hair_restoration = "毛髮æ¢å¾©è£ç½®", general_diag = "高級診斷室", pharmacy = "藥房", fracture_clinic = "骨折診所", toilets = "洗手間", electrolysis = "電分解診所", x_ray = "X光房間", blood_machine = "血液機器房間", } fax = { epidemic_result = { fine_amount = "æ”¿åºœå®£ä½ˆå…¨åœ‹ç·Šæ€¥ç‹€æ…‹ï¼Œä¸¦å°æ‚¨ç½°æ¬¾%d。", close_text = "哈ï¼", hospital_evacuated = "會議決定åªèƒ½ç–散您的醫院。", succeeded = { part_1_name = "衛生巡查員è½åˆ°äº†å‚³èžï¼Œæ‚¨çš„醫院正在處ç†åš´é‡ç–¾ç—…%s。", part_2 = "然而他還沒有能夠找到證實傳èžçš„證據。", }, compensation_amount = "政府決定çŽå‹µæ‚¨%dä½œç‚ºè£œå„Ÿè¬ è¨€å°æ‚¨é†«é™¢è²è­½æ‰€é€ æˆçš„æå¤±ã€‚", failed = { part_1_name = "嘗試掩蓋病情,他們正é¢è‡¨è‘—傳染病%s爆發。", part_2 = "醫院中的員工已經制止了傳染病å‘醫院附近居民傳播。", }, rep_loss_fine_amount = "å ±ç´™å°‡æ•´ç‰ˆå ±é“æ­¤äº‹ã€‚æ‚¨çš„è²æœ›å°‡å¤§å¹…å—æã€‚å¦å¤–,還è¦ç¹³ç´ç½°æ¬¾%d。", }, vip_visit_query = { choices = { invite = "å‘貴賓發出邀請。", refuse = "找藉å£é˜»æ­¢è²´è³“訪å•。", }, vip_name = "%så¸Œæœ›èƒ½å¤ è¨ªå•æ‚¨çš„醫院ï¼", }, vip_visit_result = { telegram = "電報ï¼", remarks = { good = { [1] = "é†«é™¢ç¶“ç‡Ÿå¾—å¤ªæ£’äº†ã€‚æ„Ÿè¬æ‚¨èƒ½å¤ é‚€è«‹æˆ‘來訪å•。", [2] = "嗯。醫院經營得還å¯ä»¥ã€‚", [3] = "我很欣賞您的醫院。", }, super = { [1] = "醫院太棒了。下次我生病一定è¦åˆ°é‚£è£¡åŽ»å°±è¨ºã€‚", [2] = "那就是我訪å•的醫院。", [3] = "é‚£æ˜¯ä¸€å€‹è¶…ç´šé†«é™¢ã€‚ä¸¦ä¸”æˆ‘æƒ³çŸ¥é“æ›´å¤šä¸€é»žã€‚", }, bad = { [1] = "我為什麼煩惱?這比看一場æŒçºŒ4個尿™‚的歌劇好多了ï¼", [2] = "我為我所看到的感到å™å¿ƒã€‚這也是醫院?胡說八é“ï¼", [3] = "我已經å—夠了ï¼", }, mediocre = { [1] = "喔,有點差å‹ã€‚您應多åšä¸€äº›æ”¹é€²ã€‚", [2] = "喔,親愛的。這個地方å¯ä¸æ€Žéº¼æ¨£ã€‚", [3] = "這是一個比較一般的醫院。但å¦ç™½åœ°è¬›ï¼Œæˆ‘希望能夠åšå¾—更好。", }, very_bad = { [1] = "真是一個垃圾。我è¦çˆ­å–關閉它。", [2] = "我從沒有見éŽé€™æ¨£å¯æ€•的醫院。真是丟人ï¼", [3] = "我被震驚了。這也能稱為醫院ï¼çµ¦æˆ‘一點酒。", }, }, rep_boost = "æ‚¨çš„è²æœ›åœ¨å…¬çœ¾ä¸­æ˜¯å¾ˆå¥½çš„。", vip_remarked_name = "%s訪å•é†«é™¢çµæŸå¾Œç™¼è¡¨è©•論:", cash_grant = "您將得到çŽé‡‘%d。", rep_loss = "æ‚¨çš„è²æœ›å› æ­¤å—到æå®³ã€‚", close_text = "æ„Ÿè¬æ‚¨è¨ªå•醫院。", }, disease_discovered_patient_choice = { need_to_build = "您必須建造一個%sæ‰èƒ½è™•ç†è©²ç–¾ç—…。", need_to_employ = "雇用一å%så°±å¯ä»¥è™•ç†è©²æƒ…æ³ã€‚", what_to_do_question = "您打算怎樣處ç†é€™å€‹ç—…人?", guessed_percentage_name = "您的員工正在嘗試治療該病人。我們有%d%%的幾率治癒該病:%s", choices = { send_home = "é€ç—…人回家。", research = "將病人é€åˆ°ç ”究部門。", wait = "讓病人在醫院中等一會兒。", }, disease_name = "發ç¾äº†æ–°æƒ…æ³ã€‚該疾病為%s", need_to_build_and_employ = "如果您建造了一個%s並雇用了一å%s,您就能æˆåŠŸã€‚", can_not_cure = "您無法治療該疾病。", }, emergency_result = { earned_money = "最大çŽé‡‘é¡ç‚º$%d,您得到了$%d。", close_text = "點擊這裡退出。", saved_people = "您挽救了%då€‹ç—…äººï¼Œç¸½å…±éœ€è¦æ²»ç™’%d個。", }, disease_discovered = { discovered_name = "您的員工發ç¾äº†ä¸€ç¨®æ–°çš„疾病。它是%s", need_to_employ = "雇用一å%så°±å¯ä»¥è™•ç†é€™ç¨®å±æ©Ÿã€‚", need_to_build_and_employ = "如果您建造了一個%s並雇用了一å%s,您就能æˆåŠŸã€‚", need_to_build = "您必須建造一個%sæ‰èƒ½è™•ç†è©²ç–¾ç—…。", close_text = "新發ç¾äº†ä¸€ç¨®ç–¾ç—…。", can_cure = "您å¯ä»¥è™•ç†é€™ç¨®ç–¾ç—…。", }, emergency = { locations = { [1] = "賽澈化學藥å“工廠。", [2] = "斯尼得大學。", [3] = "派拉奎特園è—中心。", [4] = "å±éšªç‰©è³ªç ”究機構。", [5] = "èŽ«ç†æ–¯èˆžè¹ˆå®¶å”會。", [6] = "é’蛙與公牛酒店。", [7] = "大戴維殯葬館。", [8] = "太å­è£½é©åº—。", [9] = "伯特二手石化產å“商場。", }, num_disease = "%d個病人患有%s,他們需è¦ç·Šæ€¥æ²»ç™‚。", cure_possible_drug_name_efficiency = "æ‚¨å·²ç¶“æ“æœ‰äº†è¦æ±‚çš„è¨­å‚™å’ŒæŠ€èƒ½ã€‚æ‚¨æ“æœ‰ä»–們所需è¦çš„è—¥å“。藥å“%s的療效為%d%%。", cure_not_possible_employ = "您將需è¦é›‡ç”¨ä¸€å%s", cure_not_possible = "ç¾åœ¨æ‚¨é‚„ä¸èƒ½æ²»ç™‚這種疾病。", cure_possible = "ç”±æ–¼æ‚¨æ“æœ‰æº–備和技能,所以您應該å¯ä»¥è™•ç†é€™å€‹ç·Šæ€¥äº‹ä»¶ã€‚", choices = { accept = "好的。我已åšå¥½æº–備處ç†ç·Šæ€¥äº‹ä»¶ã€‚", refuse = "ä¸ã€‚我拒絕處ç†é€™å€‹ç·Šæ€¥äº‹ä»¶ã€‚", }, location = "在%s發生了事故", cure_not_possible_build = "您將需è¦å»ºé€ ä¸€é–“%s", cure_not_possible_build_and_employ = "您將需è¦å»ºé€ ä¸€é–“%s並雇用一å%s", bonus = "處ç†é€™å€‹ç·Šæ€¥äº‹ä»¶çš„æœ€å¤§çŽé‡‘é¡ç‚º%dã€‚å¦‚æžœæ‚¨å¤±æ•—äº†ï¼Œå‰‡æ‚¨çš„è²æœ›å°‡å¤§å¹…下é™ã€‚", }, debug_fax = { text4 = "FACTORS : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", text5 = "CONTRIBN : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d PERCENT", text3 = "FIGURES : DOCS %d NURSES %d AREA %d ROOMS %d PRICING %d", text9 = "DISASTERS %d ALLOWED (MTHS) %d (%d)REDUCTION %d", close_text = "嗨,哈,哈ï¼", text1 = "BEST COUNT %d", text6 = "THE FOLLOWING FACTORS ARE ALSO APPLIED", text8 = "AMENITIES %d PEEPS HANDLED %d REDUCTION %d", text2 = "TOTAL PEOPLE IN HOSPITAL %d CHECKING AGAINST %d", text10 = "KILLS %d ALLOWED (MTHS) %d (%d) REDUCTION %d", text11 = "PEOPLE THIS MONTH %d", text7 = "REPUTATION: %d EXPECTED %d REDUCTION %d", }, epidemic = { cover_up_explanation_1 = "å¦‚æžœæ‚¨æƒ³è¦æŽ©è“‹å‚³æŸ“ç—…ï¼Œæ‚¨å°‡å¿…é ˆåœ¨æœ‰é™æ™‚間內,å³è¡›ç”Ÿå·¡æŸ¥å“¡åˆ°ä¾†ä¹‹å‰ï¼Œæ²»ç™’所有被傳染的病人。", cover_up_explanation_2 = "如果衛生巡查員到é”,並發ç¾äº†æ‚¨æ­£åœ¨è©¦åœ–æŽ©è“‹å‚³æŸ“ç—…ï¼Œå‰‡ä»–å°‡å°æ‚¨æŽ¡å–嚴厲的懲罰。", choices = { cover_up = "在指定時間內且病人離開醫院之å‰ï¼Œå„˜é‡æ²»ç™’所有被感染的病人。", declare = "宣佈一種傳染病。支付罰款且åè­½å—æã€‚", }, disease_name = "醫生發ç¾äº†å‚³æŸ“ç—…%s。", declare_explanation_fine = "如果您宣佈出ç¾å‚³æŸ“病,則您將支付罰款%d,且åè­½å—æã€‚æ‰€æœ‰ç—…äººå°‡è‡ªå‹•è¢«æŽ¥ç¨®ç–«è‹—ã€‚", }, diagnosis_failed = { choices = { send_home = "é€ç—…人回家。", take_chance = "嘗試治療病人。", wait = "讓病人多等待一會兒,您需è¦å¤šå»ºé€ ä¸€äº›è¨ºæ–·å®¤ã€‚", }, situation = "我們已經å°è©²ç—…人嘗試了所有å¯ä¾›ä½¿ç”¨çš„æ©Ÿå™¨ï¼Œä½†æ˜¯ä»ç„¶æ²’有發ç¾ç—…因。", what_to_do_question = "我們將怎樣處置這個病人?", partial_diagnosis_percentage_name = "我們有%d%%的機率確定該病人所患疾病類型。", }, } drug_companies = { [1] = "良藥公å¸", [2] = "å醫公å¸", [3] = "å°è—¥ç‰‡å…¬å¸", [4] = "普芬公å¸", [5] = "æ­ç±³å°¼å…¬å¸", } humanoid_name_ends = { [1] = "斯密斯", [2] = "å¨å…‹", [3] = "克利夫", [4] = "æ¡‘", [5] = "因格頓", [6] = "è²è£¡", [7] = "é “", [8] = "æ¡‘", [9] = "æŽ", [10] = "伯利", [11] = "波姆", [12] = "蘭", [13] = "漢默", [14] = "希爾", [15] = "溫", [16] = "èŠç‰¹", [17] = "艾爾斯", [18] = "é “", [19] = "蒙德", [20] = "曼", [21] = "愛爾頓", [22] = "ä¾", [23] = "æ‘©", [24] = "摩爾", [25] = "èŠç‰¹", [26] = "æž—", } confirmation = { return_to_blueprint = "您是å¦ç¢ºå®šè¿”回è—圖模å¼ï¼Ÿ", restart_level = "您是å¦å¸Œæœ›é‡æ–°é–‹å§‹é€™å€‹ä»»å‹™ï¼Ÿ", delete_room = "您是å¦å¸Œæœ›æ‹†é™¤é€™å€‹æˆ¿é–“?", quit = "æ‚¨å·²ç¶“é¸æ“‡äº†é€€å‡ºã€‚您是å¦ç¢ºå®šçœŸçš„è¦é€€å‡ºéŠæˆ²ï¼Ÿ", overwrite_save = "該ä½ç½®å·²å„²å­˜éŠæˆ²é€²åº¦ã€‚您是å¦ç¢ºå®šè¦å°‡å…¶è¦†è“‹ï¼Ÿ", sack_staff = "您是å¦ç¢ºå®šè¦è§£é›‡è©²å“¡å·¥ï¼Ÿ", replace_machine = "您是å¦ç¢ºå®šå°‡%s更新,需花費$%d?", } months = { [1] = "1 月", [2] = "2 月", [3] = "3 月", [4] = "4 月", [5] = "5 月", [6] = "6 月", [7] = "7 月", [8] = "8 月", [9] = "9 月", [10] = "10 月", [11] = "11 月", [12] = "12 月", } dynamic_info = { patient = { emergency = "緊急情æ³ï¼š%s", guessed_diagnosis = "嘗試診斷:%s", diagnosis_progress = "診斷éŽç¨‹", actions = { sent_to_other_hospital = "指派到其它醫院", prices_too_high = "è²»ç”¨å¤ªé«˜äº†ï¼æˆ‘è¦å›žå®¶äº†", waiting_for_treatment_rooms = "等待為我建造一間治療室", dying = "快死了ï¼", no_diagnoses_available = "ç„¡æ³•è¨ºæ–·ï¼æˆ‘è¦å›žå®¶äº†", epidemic_sent_home = "被巡查員趕回家", cured = "治癒ï¼", waiting_for_diagnosis_rooms = "等待建造更多的診斷室", epidemic_contagious = "我有傳染病", awaiting_decision = "等待您的決定", sent_home = "é£é€å›žå®¶", fed_up = "å—夠了,è¦é›¢é–‹", no_treatment_available = "ç„¡æ³•æ²»ç™‚ï¼æˆ‘è¦å›žå®¶äº†", on_my_way_to = "在去%s的路上", queueing_for = "排隊等待%s", }, diagnosed = "診斷:%s", }, health_inspector = "衛生巡查員", vip = "來訪貴賓", object = { times_used = "使用次數%d", queue_size = "排隊人數%d", strength = "力é‡%d", queue_expected = "å³å°‡åŠ å…¥éšŠä¼äººæ•¸%d", }, staff = { ability = "能力", psychiatrist_abbrev = "精神分æž", actions = { going_to_repair = "å‰å¾€ç¶­ä¿®%s", waiting_for_patient = "等待病人", wandering = "正在到處走動", }, tiredness = "疲勞", }, } introduction_texts = { level17 = "最後的警告ï¼éš¨æ™‚é—œæ³¨æ‚¨çš„è²æœ›ï¼é€™æ˜¯çœŸæ­£å¸å¼•病人å‰ä¾†å°±è¨ºçš„é—œéµã€‚" .. "å¦‚æžœæ‚¨æ²’æœ‰é†«æ­»å¤ªå¤šçš„ç—…äººï¼Œä¸”ä½¿å°±è¨ºç—…äººä¿æŒå¿«æ¨‚,則ä¸å¿…å¤ªæ“”å¿ƒè²æœ›ï¼" .. "æ±ºå®šæ¬Šå°±åœ¨æ‚¨çš„æ‰‹ä¸­ã€‚ç¥æ‚¨å¥½é‹ã€‚", level1 = "歡迎來到您的第一座醫院ï¼//" .. "é¦–å…ˆè¦æ“ºæ”¾æœå‹™å°ï¼Œå»ºé€ ä¸€èˆ¬è¨ºæ–·å®¤ï¼Œä¸¦é›‡ç”¨ä¸€å接待員和一å醫生。" .. "隨後就å¯ä»¥ç­‰å¾…開張了。" .. "建造精神病診斷治療室並雇用一å精神病醫生是一個好主æ„。" .. "藥房和護士也是治療病人所必需的。" .. "建造一個充氣機房間就å¯ä»¥æ²»ç™‚頭部腫脹患者。" .. "æ‚¨éœ€è¦æ²»ç™’10å€‹ç—…äººï¼Œä¸¦ä½¿è²æœ›ä¿æŒåœ¨200以上。", level9 = "當填滿了衛生署的銀行帳戶並為部長大人購買了一輛轎車後,您ç¾åœ¨åˆè¦é–‹å§‹æ–°çš„工作了。" .. "在這裡您è¦é¢å°å¾ˆå¤šå•題。" .. "åªæœ‰æ“有足夠經驗充分的員工和房間,您æ‰èƒ½å¤ é †åˆ©éŽé—œã€‚" .. "醫院價值需è¦é”到$200,000ï¼Œä¸”éŠ€è¡Œå¸³æˆ¶ä¸Šè¦æœ‰$400,000。" .. "如果無法é”åˆ°ä¸Šè¿°è¦æ±‚,則無法å‹åˆ©å®Œæˆä»»å‹™ã€‚", level2 = "在該å€åŸŸå…§é‚„有一些其它的疾病。" .. "建造醫院從而å¯ä»¥æ²»ç™‚更多的病人,並應該考慮建造研究部門。" .. "記ä½ä¿æŒå…§éƒ¨çš„æ¸…æ½”ï¼Œå¾žè€Œä½¿è²æœ›ç›¡å¯èƒ½åœ°é«˜ï¼æ‚¨å°‡é‡åˆ°æ‚£æœ‰èˆŒé ­é¬†å¼›ç—‡çš„病人,因此需è¦å»ºé€ èˆŒé ­è¨ºæ²»æˆ¿é–“。" .. "您也å¯ä»¥å»ºé€ å¿ƒé›»åœ–房間來幫助診斷疾病。" .. "這些房間都需è¦ç¶“éŽç ”ç©¶æ‰èƒ½å¤ è¢«å»ºé€ ã€‚ç¾åœ¨ä½ å¯ä»¥è³¼è²·å…¶å®ƒåœŸåœ°æ“´å±•醫院ï¼ä½¿ç”¨åŸŽéŽ®åœ°åœ–å°±å¯ä»¥è³¼è²·åœŸåœ°ã€‚" .. "ç›®æ¨™æ˜¯è²æœ›300,銀行ç¾é‡‘為10000,且治癒40個病人。", level7 = "在這裡您將å—到衛生署的密切監察,因此è¦åœ¨è³ºéŒ¢çš„åŒæ™‚,努力æé«˜è‡ªå·±çš„è²æœ›ã€‚" .. "我們無法處ç†å¤ªå¤šçš„醫療事故ï¼é€™å°æ–¼é†«é™¢çš„é‹ç‡Ÿæ˜¯å分ä¸åˆ©çš„。" .. "ç¢ºèªæ‰€æœ‰å“¡å·¥éƒ½å¾ˆå¿«æ¨‚,並確èªå·²ç¶“購買了所有需è¦çš„儀器è£å‚™ã€‚" .. "è²æœ›éœ€è¦é”到600ï¼Œä¸”éŠ€è¡Œè£¡éœ€è¦æœ‰$200,000。", level5 = "醫院將éžå¸¸ç¹å¿™ï¼Œè™•ç†å„ç¨®å„æ¨£çš„病人。" .. "醫生都是剛剛畢業的實習醫生,因此需è¦å»ºé€ ä¸€é–“培訓室å°ä»–們進行培訓,æé«˜èƒ½åŠ›ã€‚" .. "æ‚¨åªæœ‰3å專家å¯ä»¥å¹«åŠ©åŸ¹è¨“é€™äº›å“¡å·¥ï¼Œå› æ­¤ä¸€å®šè¦è®“專家快樂。" .. "å¦å¤–è¦æ³¨æ„的是,醫院的ä½ç½®ä¸æ˜¯å¾ˆå¥½ã€‚" .. "經常會發生地震。" .. "地震將å°é†«é™¢ä¸­çš„æ©Ÿå™¨ç”¢ç”Ÿæå£žï¼Œå¾žè€Œå½±éŸ¿é†«é™¢çš„é‹ç‡Ÿã€‚" .. "ä½¿æ‚¨è²æœ›é”到400以上,ç¾é‡‘é”到$50,000。å¦å¤–éœ€è¦æ²»ç™’200個病人。", level4 = "ä½¿æ‰€æœ‰çš„ç—…äººå¿«æ¨‚ï¼Œä¿æŒæ²»ç™‚的高效率並儘é‡é™ä½Žæ­»äº¡äººæ•¸ã€‚" .. "è²æœ›æ˜¯å分é‡è¦çš„,因此儘é‡è´å¾—æ›´é«˜çš„è²æœ›ã€‚" .. "ä¸è¦å¤ªå¤šæ“”心收入情æ³ï¼ç•¶è²æœ›æé«˜äº†ï¼Œæ”¶å…¥ä¹Ÿè‡ªç„¶æœƒæé«˜ã€‚" .. "您需è¦åŸ¹è¨“您的醫生,拓寬他們的能力。" .. "這樣他們就å¯ä»¥æ›´å¥½çš„為病人æœå‹™ã€‚" .. "å‹åˆ©æ¢ä»¶æ˜¯è²æœ›é”到500以上。", level14 = "這裡還有一個挑戰ï¼ä¸€å€‹å……滿驚奇的醫院。" .. "如果您能夠æˆåŠŸå®Œæˆé€™å€‹ä»»å‹™ï¼Œå‰‡æ‚¨å°‡æˆç‚ºæ‰€æœ‰å‹åˆ©è€…中的佼佼者。" .. "ä¸è¦èªç‚ºå®Œæˆé€™å€‹ä»»å‹™å°±åƒåƒè›‹ç³•一樣,這將是您所é‡åˆ°çš„æœ€è‰±è‹¦çš„工作。" .. "ç¥æ‚¨å¥½é‹ï¼", level15 = "å¥½çš„ï¼Œä¸‹é¢æ˜¯ç®¡ç†é†«é™¢çš„一些技巧。//" .. "醫生需è¦å„種幫助來診斷病人。您å¯ä»¥" .. "建造å¦ä¸€å€‹è¨ºæ–·é¡žæˆ¿é–“,例如高級診斷室。", level8 = "éœ€è¦æ‚¨ä¾†å»ºé€ ä¸€åº§é«˜æ•ˆçš„醫院。" .. "很多人都無事å¯åšï¼Œå› æ­¤éœ€è¦é©é‡çš„è£å“¡ä»¥ä¿æŒé«˜æ•ˆã€‚" .. "è¨˜ä½æ²»ç™’病人是很é‡è¦çš„一件事情,但是您更è¦å¾žä¸­è³ºéŒ¢ã€‚" .. "讓å™å¿ƒå˜”å的病人é è¿‘清潔工人。" .. "需è¦è³ºå–$300,000å°±å¯ä»¥éŽé—œã€‚", level13 = "æ‚¨çš„é«˜è¶…ç®¡ç†æŠ€èƒ½è¢«ç‰¹æ®Šæ©Ÿå¯†éƒ¨é–€ç²çŸ¥ã€‚" .. "他們將呿‚¨æé«˜ç‰¹åˆ¥çŽé‡‘,因為他們有一座被è€é¼ å›°æ“¾çš„é†«é™¢éœ€è¦æœ‰æ•ˆç®¡ç†ã€‚" .. "您必須殺死盡å¯èƒ½å¤šçš„è€é¼ ï¼Œä¸¦è®“清潔工人打掃乾淨。" .. "接å—這個任務?", level16 = "ç•¶å°ç—…人完æˆè¨ºæ–·å¾Œï¼Œéœ€è¦å»ºé€ è™•ç†å’Œæ²»ç™‚類房間完æˆå°ç—…人的治療工作。å¯ä»¥å¾ž" .. "建造藥房開始。在藥房中需è¦ä¸€å護士分é…å„種藥å“。", level6 = "使用您的所有知識來建造一個é‹è¡Œå¹³ç©©çš„醫院,從而å¯ä»¥è³ºå–利潤並處ç†ä»»ä½•å•題。" .. "æ‚¨éœ€è¦æ³¨æ„一點,醫院周åœçš„空氣å°ç´°èŒç¹æ®–,傳染病æµè¡Œéžå¸¸é©å®œã€‚" .. "å¦‚æžœæ‚¨æ²’æœ‰ä¿æŒé†«é™¢çš„æ¸…潔,則將é¢å°å‚³æŸ“ç—…çš„æµè¡Œã€‚" .. "賺å–$150,000,並使醫院價值超éŽ$140,000。", level12 = "您ç¾åœ¨é‡åˆ°äº†æœ€å¤§çš„æŒ‘戰。" .. "我們為您的æˆåŠŸæ„Ÿåˆ°ç”±è¡·åœ°é«˜èˆˆï¼Œè¡›ç”Ÿç½²ç‚ºæ‚¨æº–å‚™äº†ä¸€é …é ‚ç´šå·¥ä½œï¼›ä»–å€‘éœ€è¦æœ‰äººå»ºé€ å¦ä¸€å€‹è¶…ç´šé†«é™¢ï¼Œè³ºéŒ¢çš„åŒæ™‚ç²å–è¼ƒé«˜çš„è²æœ›ã€‚" .. "您å¯ä»¥è³¼è²·ä»»ä½•需è¦çš„土地,治療å„種疾病è´å¾—å„種çŽå‹µã€‚" .. "動心了嗎?" .. "賺å–$650,000,治癒750å€‹ç—…äººï¼Œä½¿è²æœ›é”到800å°±å¯ä»¥å‹åˆ©éŽé—œã€‚", level3 = "這次您將在一個富裕地å€å»ºé€ é†«é™¢ã€‚" .. "è¡›ç”Ÿç½²å¸Œæœ›æ‚¨èƒ½å¤ åœ¨é€™è£¡è³ºå–æ›´å¤šçš„利潤。" .. "é–‹å§‹æ™‚æ‚¨è¢«è¦æ±‚ç²å–å¥½çš„è²æœ›ï¼Œä½†æ˜¯ä¸€æ—¦é†«é™¢æ­¥å…¥æ­£è»Œï¼Œå°±å¯ä»¥é›†ä¸­ç²¾åŠ›è³ºå–æ›´å¤šçš„錢。" .. "有å¯èƒ½æœƒç™¼ç”Ÿç·Šæ€¥äº‹ä»¶ã€‚" .. "也就是說一次會有大é‡ç—…人就診,且他們的病情都一樣。" .. "在時間é™åˆ¶å…§å¦‚果能夠治癒他們,則ä¸åƒ…å¯ä»¥æ‹¿åˆ°çŽé‡‘ï¼Œè²æœ›ä¹Ÿæœƒæé«˜ã€‚" .. "一些疾病如貓王症侯群等有å¯èƒ½ç™¼ç”Ÿï¼Œå› æ­¤æœ€å¥½å»ºé€ ä¸€é–“手術中心和附屬病房。" .. "å‹åˆ©æ¢ä»¶æ˜¯è³ºå–$20,000。", level10 = "éš¨è‘—æ‚¨çš„ç¶“é©—ä¸æ–·å¢žé•·ï¼Œè¡›ç”Ÿç½²è¦æ±‚您集中精力æé«˜è—¥å“的治療效果。" .. "æœ‰äººå°æ‚¨é —有微辭,為此您必須使所有的藥物都éžå¸¸æœ‰æ•ˆã€‚" .. "å¦å¤–,一定è¦é™ä½Žé†«ç™‚事故的發生次數,減少死亡人數。" .. "作為æç¤ºï¼Œæ‚¨éœ€è¦ç‚ºå»ºé€ è† æ¡¶ç•™ä¸€äº›ç©ºåœ°ã€‚" .. "使所有藥物的療效都é”到80%%ï¼Œè²æœ›é”到650且在銀行帳戶上有$500,000,這樣就å¯ä»¥å‹åˆ©éŽé—œã€‚", level11 = "ç¾åœ¨æ‚¨æœ‰æ©Ÿæœƒå»ºé€ ä¸€åº§çµ‚極醫院。" .. "該地å€äº«æœ‰æ¥µé«˜çš„è²æœ›ï¼Œå› æ­¤è¡›ç”Ÿç½²å¸Œæœ›èƒ½å¤ çœ‹åˆ°æœ€å¥½çš„醫院建造在這裡。" .. "我們希望您能夠賺å–大é‡çš„金錢,ç²å¾—å¾ˆé«˜çš„è²æœ›ï¼Œä¸¦èƒ½å¤ æˆåŠŸåœ°è™•ç†ä»»ä½•事件。" .. "這是一項éžå¸¸é‡è¦çš„工作。" .. "é€™éœ€è¦æ‚¨çš„努力工作。" .. "注æ„一點,該å€åŸŸå¸¸å¸¸æœƒçœ‹åˆ°ä¸æ˜Žé£›è¡Œç‰©ã€‚因此請讓您的員工åšå¥½æº–備迎接ä¸é€Ÿä¹‹å®¢ã€‚" .. "您的醫院價值需è¦é”到$240,000,在銀行帳戶內需è¦$500,000ï¼Œä¸”è²æœ›éœ€è¦é”到700。", level18 = "", } humanoid_name_starts = { [1] = "æ­å¾—", [2] = "黑爾", [3] = "安德", [4] = "本", [5] = "ç­", [6] = "比爾", [7] = "ç¶­", [8] = "瓦特", [9] = "寶得", [10] = "金", [11] = "å·´", [12] = "派特", [13] = "曼", [14] = "寶艾", [15] = "沃", [16] = "å‚‘å…‹", [17] = "克來伯", [18] = "費什", [19] = "瓦特", [20] = "米爾", [21] = "白", [22] = "芬", [23] = "裡奇", [24] = "斯科特", [25] = "伯爾", [26] = "派克", [27] = "ç§‘", [28] = "維特", [29] = "比æ©", [30] = "寶æ©", [31] = "伯格", [32] = "懷特", [33] = "科爾", } transactions = { severance = "隔離花費", research = "研究花費", eoy_trophy_bonus = "年度物å“çŽå‹µ", buy_object = "購買物å“", cure_colon = "治療:", epidemy_coverup_fine = "隱瞞傳染病罰款", final_treat_colon = "最終治療:", jukebox = "收入:音樂盒", loan_interest = "貸款利率", overdraft = "逿”¯åˆ©çއ", wages = "工資", loan_repayment = "貸款償還", personal_bonus = "支付個人çŽé‡‘", drug_cost = "è—¥å“花費", cure = "治癒", heating = "供暖費", treat_colon = "治療:", compensation = "政府賠償金", epidemy_fine = "傳染病罰款", buy_land = "購買土地", research_bonus = "研究çŽé‡‘", general_bonus = "支付一般çŽé‡‘", deposit = "治療收入", eoy_bonus_penalty = "年度çŽé‡‘/罰款", cheat = "騙錢", drinks = "收入:飲料販賣機", vaccination = "接種疫苗", advance_colon = "進階:", vip_award = "貴賓ç¾é‡‘çŽå‹µ", hire_staff = "雇用員工", bank_loan = "銀行貸款", machine_replacement = "æ›´æ›æ©Ÿå™¨èŠ±è²»", emergency_bonus = "支付緊急事件çŽé‡‘", build_room = "建造房屋", insurance_colon = "ä¿éšªè²»ï¼š", sell_object = "賣出物å“", } object = { chair = "椅å­", sofa = "沙發", operating_table = "手術臺", bed2 = "床", bench = "長椅", scanner = "掃æå„€", couch = "長沙發椅", blood_machine = "血液機器", table1 = "桌å­", video_game = "é›»è¦–éŠæˆ²", lamp = "燈", op_sink2 = "洗手å°", door = "房門", auto_autopsy = "自動驗å±å„€", reception_desk = "æœå‹™å°", hair_restorer = "毛髮æ¢å¾©æ©Ÿ", projector = "放映機", crash_trolley = "è¨ºæ–·å„€å™¨å°æŽ¨è»Š", tv = "電視機", ultrascanner = "超級掃瞄儀", surgeon_screen = "外科å±é¢¨", litter_bomb = "垃圾炸彈", inflator = "充氣機", table2 = "桌å­", desk = "辦公桌", pool_table = "æ’žçƒæ¡Œ", x_ray_viewer = "Xå…‰é€è¦–å„€", radiation_shield = "射線防護", bed = "床", swing_door2 = "轉門", console = "控制å°", op_sink1 = "洗手å°", bookcase = "書櫃", drinks_machine = "自動販賣機", comfortable_chair = "舒é©åº§æ¤…", skeleton = "骨骼模型", computer = "計算機", bin = "垃圾桶", pharmacy_cabinet = "醫藥櫃", radiator = "æš–æ°£", cast_remover = "石è†å‰é›¢è£ç½®", atom_analyser = "原å­åˆ†æžå„€", plant = "盆栽", jelly_moulder = "膠桶", cardio = "心電圖儀", toilet = "廿‰€", electrolyser = "電分解機器", fire_extinguisher = "æ»…ç«å™¨", bed3 = "床", swing_door1 = "轉門", lecture_chair = "演講座ä½", screen = "å±é¢¨", toilet_sink = "洗手å°", shower = "æ·‹æµ´", gates_of_hell = "地ç„之門", entrance_right = "左入å£", entrance_left = "å³å…¥å£", slicer = "舌頭治療機", dna_fixer = "DNA修復è£ç½®", x_ray = "X光機", cabinet = "文件櫃", } letter = { [1] = { [1] = "親愛的%s//", [2] = "å¤ªä»¤äººé©šå¥‡äº†ï¼æ‚¨å·²ç¶“æˆåŠŸåœ°ç¶“ç‡Ÿäº†é€™å€‹é†«é™¢ã€‚è¡›ç”Ÿç½²çš„å®˜å“¡æƒ³è¦çŸ¥é“æ‚¨æ˜¯å¦æœ‰èˆˆè¶£æŽ¥æ‰‹ä¸€å€‹å¤§é …目。我們èªç‚ºæœ‰ä¸€å€‹å·¥ä½œå°æ‚¨å¾ˆé©åˆã€‚薪水將é”到$%d。怎麼樣。//", [3] = "您是å¦å°%s醫院的工作感興趣?", }, [2] = { [1] = "親愛的%s//", [2] = "å¤ªæ£’äº†ï¼æ‚¨çš„é†«é™¢ç¶“ç‡Ÿå¾—å¾ˆå¥½ã€‚æˆ‘å€‘åˆæœ‰äº†ä¸€äº›æ–°çš„任務如果您喜歡新的挑戰,å¯ä»¥æŽ¥å—這項任務。您ä¸è¦å‹‰å¼·ï¼Œä½†é€™é …工作確實很é©åˆæ‚¨ã€‚薪水是$%d//", [3] = "您希望接管%s醫院嗎?", }, [3] = { [1] = "親愛的%s//", [2] = "在您接管這座醫院期間,管ç†éžå¸¸æˆåŠŸã€‚å› æ­¤ï¼Œæˆ‘å€‘å°æ‚¨å¯„予厚望,並為您找到了一個新的工作。薪水將é”到$%dï¼ŒåŒæ™‚我們也希望您喜歡新的挑戰。//", [3] = "您希望接手%s醫院嗎?", }, [4] = { [1] = "親愛的%s//", [2] = "æ­å–œï¼éƒ¨é–€å®˜å“¡å°æ‚¨çš„能力讚ä¸çµ•å£ã€‚您是衛生署的第一高手。我們覺得您一定喜歡更困難的工作。您的薪水將é”到$%d,但決定權在您手中。//", [3] = "您是å¦é¡˜æ„在%s醫院工作?", }, [5] = { [1] = "親愛的%s//", [2] = "æ‚¨å¥½ã€‚æˆ‘å€‘å°Šé‡æ‚¨ä¸å¸Œæœ›é›¢é–‹é€™å€‹è¿·äººçš„醫院,但是æé†’您è¦ä»”細考慮。您的薪水將é”到$%d,如果您願æ„到其它醫院工作並將其é‹è¡Œå¾—很好。//", [3] = "您ç¾åœ¨æ˜¯å¦é¡˜æ„移動到%s醫院?", }, [6] = { [1] = "親愛的%s//", [2] = "æ­å–œã€‚我們ç†è§£æ‚¨åœ¨é€™å€‹å¯æ„›çš„é‹è¡Œè‰¯å¥½é†«é™¢ä¸­å·¥ä½œçš„快樂心情,但是我們èªç‚ºæ‚¨ç¾åœ¨æ‡‰è©²ç‚ºæœªä¾†è€ƒæ…®ã€‚您的薪水將é”到$%d,如果您決定調任。這是很值得考慮的。//", [3] = "您是å¦é¡˜æ„接手%s醫院?", }, [7] = { [1] = "親愛的%s//", [2] = "您好ï¼è¡›ç”Ÿç½²æƒ³è¦çŸ¥é“您經éŽé‡æ–°è€ƒæ…®æ˜¯å¦æ±ºå®šä»ç„¶ç•™åœ¨ç•¶å‰çš„醫院中。我們很欣賞您ç¾åœ¨é‚£å€‹å¯æ„›çš„é†«é™¢ï¼Œä½†æˆ‘å€‘è¦ºå¾—æ‚¨å¦‚æžœé¡˜æ„æŽ¥å—這個極富挑戰性的工作,也一定能幹得很好,並且您的薪水將é”到$%d。//", [3] = "您是å¦é¡˜æ„接手%s醫院?", }, [8] = { [1] = "親愛的%s//", [2] = "您好。您å¦å®šäº†æˆ‘們上一å°ä¿¡ä¸­æä¾›çš„æ–°é†«é™¢ï¼Œä»¥åŠè–ªæ°´$%d。我們覺得ä¸è«–æ€Žæ¨£ï¼Œæ‚¨å¿…é ˆé‡æ–°è€ƒæ…®é€™å€‹æ±ºå®šã€‚我們已經為您準備了一個很好的工作。//", [3] = "您是å¦é¡˜æ„接手%s醫院?怎麼樣?", }, [9] = { [1] = "親愛的%s//", [2] = "您已經æˆåŠŸåœ°è­‰æ˜Žäº†è‡ªå·±æ˜¯é†«å­¸ç•Œæœ‰å²ä»¥ä¾†æœ€æ£’的管ç†è€…。這樣的æˆå°±ä¸€å®šè¦çµ¦äºˆçŽå‹µï¼Œå› æ­¤æˆ‘們決定任命您為所有醫院的至尊主席。這是一項光榮的工作,且薪水å¯ä»¥é”到$%d。ä¸è«–您走到那裡,都將å—到人們的熱烈歡迎。//", [3] = "æ„Ÿè¬æ‚¨çš„åŠªåŠ›å·¥ä½œã€‚å¸Œæœ›æ‚¨å¥½å¥½äº«å—æœªä¾†çš„åŠé€€ä¼‘生活。//", [4] = "", }, [10] = { [1] = "親愛的%s//", [2] = "æ­å–œæ‚¨åœ¨æˆ‘們指派的æ¯å€‹é†«é™¢ä¸­çš„æˆåŠŸç®¡ç†ã€‚您的æˆåŠŸè¡¨ç¾ä½¿æ‚¨å¯ä»¥è‡ªç”±å‡ºå…¥ä¸–界å„大城市。您將ç²å¾—退休金$%d,å†åŠ ä¸Šä¸€è¼›è½Žè»Šï¼Œæˆ‘å€‘å¸Œæœ›æ‚¨åœ¨æ—…é€”ä¸­èƒ½å¤ ä¿ƒé€²å„å€‹é†«é™¢ç®¡ç†æ°´æº–çš„æé«˜ã€‚//", [3] = "我們都為您感到驕傲。我們中間æ¯å€‹äººéƒ½ç‚ºæ‚¨æŒ½æ•‘生命感到由衷的感è¬ã€‚//", [4] = "", }, [11] = { [1] = "親愛的%s//", [2] = "您的工作å分æˆåŠŸï¼Œæˆ‘å€‘å¾žæ‚¨èº«ä¸Šç²å¾—äº†éˆæ„Ÿã€‚è¬è¬æ‚¨ç®¡ç†äº†é€™éº¼å¤šå€‹é†«é™¢ï¼Œä¸¦ä½¿å®ƒå€‘都é‹è¡Œå¾—很出色。我們將給予您終身工資$%d,並æä¾›æ”¿åºœæ•žè“¬è½Žè»Šä½¿æ‚¨å¯ä»¥å¾žä¸€å€‹åŸŽå¸‚到å¦ä¸€å€‹åŸŽå¸‚,發表演講告訴公眾您是怎樣在這麼短的時間內é”到如此æˆå°±ã€‚//", [3] = "您是所有人的榜樣,毫無例外,世界上æ¯å€‹äººéƒ½ä»¥æ‚¨ç‚ºæ¦®ã€‚//", [4] = "", }, [12] = { [1] = "親愛的%s//", [2] = "您的æˆå°±ä½¿æ‚¨æˆç‚ºæœ€å¥½çš„醫院管ç†è€…ã€‚è¡›ç”Ÿç½²å°‡å‘æ‚¨æä¾›$%d作為çŽå‹µï¼Œä¸¦å¬é–‹æ…¶ç¥æœƒã€‚整個世界都在為您沸騰,太棒了ï¼//", [3] = "è«‹æŽ¥å—æˆ‘們的安排。如果您ä¸å†å¸Œæœ›è¾›è‹¦å·¥ä½œï¼Œæˆ‘們將呿‚¨æä¾›ä¸€è¼›è½Žè»Šï¼Œä¸”無論走到那裡,都有警察為您開路。//", [4] = "", }, } high_score = { categories = { deaths = "死亡人數", total_value = "總價值", money = "最富有", cures = "治癒人數", visitors = "造訪者最多", staff_number = "員工數目最多", cure_death_ratio = "醫治無效死亡率", patient_happiness = "顧客滿æ„", staff_happiness = "員工滿æ„", salary = "工資最高", clean = "最乾淨", }, player = "玩家", score = "分數", pos = "忬¡", best_scores = "榮譽堂", worst_scores = "æ¥è¾±å ‚", killed = "殺死病人數目", } menu_file_save = { [1] = " 存檔一 ", [2] = " 存檔二 ", [3] = " 存檔三 ", [4] = " 存檔四 ", [5] = " 存檔五 ", [6] = " 存檔六 ", [7] = " 存檔七 ", [8] = " 存檔八 ", } build_room_window = { pick_room_type = "鏿“‡æˆ¿é–“類型", pick_department = "鏿“‡éƒ¨é–€", cost = "花費:", } menu = { debug = " DEBUG", display = " 顯示", file = " 文件", options = " é¸é …", charts = " 圖表", } CorsixTH-0.61/CorsixTH/Lua/map.lua000066400000000000000000000632131321660673500166650ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Lua extensions to the C++ THMap class class "Map" ---@type Map local Map = _G["Map"] local pathsep = package.config:sub(1, 1) local math_floor, tostring, table_concat = math.floor, tostring, table.concat local thMap = require"TH".map function Map:Map(app) self.width = false self.height = false self.th = thMap() self.app = app self.debug_text = false self.debug_flags = false self.debug_font = false self.debug_tick_timer = 1 self:setTemperatureDisplayMethod(app.config.warmth_colors_display_default) end local flag_cache = {} --! Get the value of the given flag from the tile at x, y in the map. --!param x (int) Horizontal position of the tile to query in the map. --!param x (int) Vertical position of the tile to query in the map. --!param flag (string) Name of the queried flag. --!return (?) value of the queried flag. function Map:getCellFlag(x, y, flag) return self.th:getCellFlags(math.floor(x), math.floor(y), flag_cache)[flag] end --! Get the ID of the room of the tile at x, y in the map. --!param x (int) Horizontal position of the tile to query in the map. --!param x (int) Vertical position of the tile to query in the map. --!return ID of the room at the queried tile. function Map:getRoomId(x, y) return self.th:getCellFlags(math.floor(x), math.floor(y)).roomId end function Map:setPlayerCount(count) self.th:setPlayerCount(count) end function Map:getPlayerCount(count) self.th:getPlayerCount(count) end --! Set the camera tile for the given player on the map --!param x (int) Horizontal position of tile to set camera on --!param y (int) Vertical position of the tile to set the camera on --!param player (int) Player number (1-4) function Map:setCameraTile(x, y, player) self.th:setCameraTile(x, y, player) end --! Set the heliport tile for the given player on the map --!param x (int) Horizontal position of tile to set heliport on --!param y (int) Vertical position of the tile to set the heliport on --!param player (int) Player number (1-4) function Map:setHeliportTile(x, y, player) self.th:setHeliportTile(x, y, player) end --! Set how to display the room temperature in the hospital map. --!param method (int) Way of displaying the temperature. See also THMapTemperatureDisplay enum. --! 1=red gradients, 2=blue/green/red colour shifts, 3=yellow/orange/red colour shifts function Map:setTemperatureDisplayMethod(method) if method ~= 1 and method ~= 2 and method ~= 3 then method = 1 end self.temperature_display_method = method self.app.config.warmth_colors_display_default = method self.th:setTemperatureDisplay(method) end --! Copy the temperature display method from the Lua data, if available, else use the default. function Map:registerTemperatureDisplayMethod() if not self.temperature_display_method then self:setTemperatureDisplayMethod(self.app.config.warmth_colors_display_default) end self.th:setTemperatureDisplay(self.temperature_display_method) end -- Convert between world co-ordinates and screen co-ordinates -- World co-ordinates are (at least for standard maps) in the range [1, 128) -- for both x and y, with the floor of the values giving the cell index. -- Screen co-ordinates are pixels relative to the map origin - NOT relative to -- the top-left corner of the screen (use UI:WorldToScreen and UI:ScreenToWorld -- for this). function Map:WorldToScreen(x, y) if x == nil then x = 0 end if y == nil then y = 0 end -- Adjust origin from (1, 1) to (0, 0) and then linear transform by matrix: -- 32 -32 -- 16 16 return 32 * (x - y), 16 * (x + y - 2) end function Map:ScreenToWorld(x, y) -- Transform by matrix: (inverse of the WorldToScreen matrix) -- 1/64 1/32 -- -1/64 1/32 -- And then adjust origin from (0, 0) to (1, 1) y = y / 32 + 1 x = x / 64 local tile_x, tile_y = y + x, y - x if self.width ~= nil and self.height ~= nil then if tile_x < 1 then tile_x = 1 end if tile_x > self.width then tile_x = self.width end if tile_y < 1 then tile_y = 1 end if tile_y > self.height then tile_y = self.height end end return tile_x, tile_y end local function bits(n) local vals = {} local m = 256 while m >= 1 do if n >= m then vals[#vals + 1] = m n = n - m end m = m / 2 end if vals[1] then return unpack(vals) else return 0 end end --[[! Loads the specified level. If a string is passed it looks for the file with the same name in the "Levels" and/or "Campaigns" folder of CorsixTH, if it is a number it tries to load that level from the original game. !param level (string or int) The name (or number) of the level to load. If this is a number the game assumes the original game levels are considered. !param level_name (string) The name of the actual map/area/hospital as written in the config file. !param map_file (string) The path to the map file as supplied by the config file. !param level_intro (string) If loading a custom level this message will be shown as soon as the level has been loaded. ]] function Map:load(level, difficulty, level_name, map_file, level_intro, map_editor) local objects if not difficulty then difficulty = "full" end -- Load CorsixTH base configuration for all levels. -- We want to load the file again each time. local function file (filename) local f = assert(loadfile(filename)) return f() end local path = debug.getinfo(1, "S").source:sub(2, -12) local result = file(path .. "Lua" .. pathsep .. "base_config.lua") local base_config = result local _ if type(level) == "number" then local errors, data -- Playing the original campaign. -- Add TH's base config if possible, otherwise our own config -- roughly corresponds to "full". errors, base_config = self:loadMapConfig(difficulty .. "00.SAM", base_config) -- If it couldn't be loaded the new difficulty level is full no matter what. if errors then difficulty = "full" end self.difficulty = difficulty self.level_number = level data, errors = self:getRawData(map_file) if data then _, objects = self.th:load(data) else return nil, errors end self.level_name = _S.level_names[level]:upper() -- Check if we're using the demo files. If we are, that special config should be loaded. if self.app.using_demo_files then -- Try to load our own configuration file for the demo. local p = debug.getinfo(1, "S").source:sub(2, -12) .. "Levels" .. pathsep .. "demo.level" errors, result = self:loadMapConfig(p, base_config, true) if errors then print("Warning: Could not find the demo configuration, try reinstalling the game") end self.level_config = result else local level_no = level if level_no < 10 then level_no = "0" .. level end -- Override with the specific configuration for this level _, result = self:loadMapConfig(difficulty .. level_no .. ".SAM", base_config) -- Finally load additional CorsixTH config per level local p = debug.getinfo(1, "S").source:sub(2, -12) .. "Levels" .. pathsep .. "original" .. level_no .. ".level" _, result = self:loadMapConfig(p, result, true) self.level_config = result end elseif map_editor then -- We're being fed data by the map editor. self.level_name = "MAP EDITOR" self.level_number = "MAP EDITOR" if level == "" then _, objects = self.th:loadBlank() else local data, errors = self:getRawData(level) if data then _, objects = self.th:load(data) else return nil, errors end end assert(base_config, "No base config has been loaded!") self.level_config = base_config else -- We're loading a custom level. self.level_name = level_name self.level_intro = level_intro self.level_number = level self.map_file = map_file local data, errors = self:getRawData(map_file) if data then _, objects = self.th:load(data) else return nil, errors end assert(base_config, "No base config has been loaded!") errors, result = self:loadMapConfig(self.app:getAbsolutePathToLevelFile(level), base_config, true) if errors then print(errors) end self.level_config = result end self.width, self.height = self.th:size() self.parcelTileCounts = {} for plot = 1, self.th:getPlotCount() do self.parcelTileCounts[plot] = self.th:getParcelTileCount(plot) if not map_editor then self:setPlotOwner(plot, plot <= self.th:getPlayerCount() and plot or 0) end end return objects end --[[! Sets the plot owner of the given plot number to the given new owner. Makes sure that any room adjacent to the new plot have walls in all directions after the purchase. !param plot_number (int) Number of the plot to change owner of. Plot 0 is the outside and should never change owner. !param new_owner (int) The player number that should own plot_number. 0 means no owner. ]] function Map:setPlotOwner(plot_number, new_owner) local split_tiles = self.th:setPlotOwner(plot_number, new_owner) for _, coordinates in ipairs(split_tiles) do local x = coordinates[1] local y = coordinates[2] local _, north_wall, west_wall = self.th:getCell(x, y) local cell_flags = self.th:getCellFlags(x, y) local north_cell_flags = self.th:getCellFlags(x, y - 1) local west_cell_flags = self.th:getCellFlags(x - 1, y) local wall_dirs = { south = { layer = north_wall, block_id = 2, room_cell_flags = cell_flags, adj_cell_flags = north_cell_flags, tile_cat = 'inside_tiles', wall_dir = 'north' }, north = { layer = north_wall, block_id = 2, room_cell_flags = north_cell_flags, adj_cell_flags = cell_flags, tile_cat = 'outside_tiles', wall_dir = 'north' }, east = { layer = west_wall, block_id = 3, room_cell_flags = cell_flags, adj_cell_flags = west_cell_flags, tile_cat = 'inside_tiles', wall_dir = 'west' }, west = { layer = west_wall, block_id = 3, room_cell_flags = west_cell_flags, adj_cell_flags = cell_flags, tile_cat = 'outside_tiles', wall_dir = 'west' }, } for _, dir in pairs(wall_dirs) do if dir.layer == 0 and dir.room_cell_flags.roomId ~= 0 and dir.room_cell_flags.parcelId ~= dir.adj_cell_flags.parcelId then local room = self.app.world.rooms[dir.room_cell_flags.roomId] local wall_type = self.app.walls[room.room_info.wall_type][dir.tile_cat][dir.wall_dir] self.th:setCell(x, y, dir.block_id, wall_type) end end end self.th:updatePathfinding() end --[[! Saves the map to a .map file !param filename (string) Name of the file to save the map in ]] function Map:save(filename) self.th:save(filename) end --[[! Loads map configurations from files. Returns nil as first result if no configuration could be loaded and config as second result no matter what. !param filename (string) The absolute path to the config file to load !param config (string) If a base config already exists and only some values should be overridden this is the base config !param custom If true The configuration file is searched for where filename points, otherwise it is assumed that we're looking in the theme_hospital_install path. ]] function Map:loadMapConfig(filename, config, custom) local function iterator() if custom then return io.lines(filename) else return self.app.fs:readContents("Levels", filename):gmatch"[^\r\n]+" end end if self.app.fs:readContents("Levels", filename) or io.open(filename) then for line in iterator() do if line:sub(1, 1) == "#" then local parts = {} local nkeys = 0 for part in line:gmatch"%.?[-?a-zA-Z0-9%[_%]]+" do if part:sub(1, 1) == "." and #parts == nkeys + 1 then nkeys = nkeys + 1 end parts[#parts + 1] = part end if nkeys == 0 then parts[3] = parts[2] parts[2] = ".Value" nkeys = 1 end for i = 2, nkeys + 1 do local key = parts[1] .. parts[i] local t, n for name in key:gmatch"[^.%[%]]+" do name = tonumber(name) or name if t then if not t[n] then t[n] = {} end t = t[n] else t = config end n = name end t[n] = tonumber(parts[nkeys + i]) or parts[nkeys + i] end end end return nil, config else return "Error: Could not find the configuration file, only 'Base Config' will be loaded for this level.", config end end local temp_debug_text local temp_debug_flags local temp_updateDebugOverlay local temp_thData -- Keep debug information in temporary local vars, do not save them function Map:prepareForSave() temp_debug_text = self.debug_text self.debug_text = false temp_debug_flags = self.debug_flags self.debug_flags = false temp_updateDebugOverlay = self.updateDebugOverlay self.updateDebugOverlay = nil temp_thData = self.thData self.thData = nil end -- Restore the temporarily stored debug information after saving function Map:afterSave() self.debug_text = temp_debug_text temp_debug_text = nil self.debug_flags = temp_debug_flags temp_debug_flags = nil self.updateDebugOverlay = temp_updateDebugOverlay temp_updateDebugOverlay = nil self.thData = temp_thData temp_thData = nil end function Map:clearDebugText() self.debug_text = false self.debug_flags = false self.updateDebugOverlay = nil end function Map:getRawData(map_file) if not self.thData then local data, errors if not map_file then data, errors = self.app:readDataFile("Levels", "Level.L".. self.level_number) else data, errors = self.app:readDataFile("Levels", map_file) end if data then self.thData = data else return nil, errors end end return self.thData end function Map:updateDebugOverlayFlags() for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 self.th:getCellFlags(x, y, self.debug_flags[xy]) end end end function Map:updateDebugOverlayHeat() for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 self.debug_text[xy] = ("%02.1f"):format(self.th:getCellTemperature(x, y) * 50) end end end function Map:updateDebugOverlayParcels() for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 self.debug_text[xy] = self.th:getCellFlags(x, y).parcelId if self.debug_text[xy] == 0 then self.debug_text[xy] = '' end end end end function Map:updateDebugOverlayCamera() for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 self.debug_text[xy] = '' end end for p = 1, self.th:getPlayerCount() do local x, y = self.th:getCameraTile(p) if x and y then local xy = (y - 1) * self.width + x - 1 self.debug_text[xy] = 'C'..p end end end function Map:updateDebugOverlayHeliport() for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 self.debug_text[xy] = '' end end for p = 1, self.th:getPlayerCount() do local x, y = self.th:getHeliportTile(p) if x and y then local xy = (y - 1) * self.width + x - 1 self.debug_text[xy] = 'H'..p end end end function Map:loadDebugText(base_offset, xy_offset, first, last, bits_) self.debug_text = false self.debug_flags = false self.updateDebugOverlay = nil if base_offset == "flags" then self.debug_flags = {} for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 self.debug_flags[xy] = {} end end self.updateDebugOverlay = self.updateDebugOverlayFlags self:updateDebugOverlay() elseif base_offset == "positions" then self.debug_text = {} for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 self.debug_text[xy] = x .. "," .. y end end elseif base_offset == "heat" then self.debug_text = {} self.updateDebugOverlay = self.updateDebugOverlayHeat self:updateDebugOverlay() elseif base_offset == "parcel" then self.debug_text = {} self.updateDebugOverlay = self.updateDebugOverlayParcels self:updateDebugOverlay() elseif base_offset == "camera" then self.debug_text = {} self.updateDebugOverlay = self.updateDebugOverlayCamera self:updateDebugOverlay() elseif base_offset == "heliport" then self.debug_text = {} self.updateDebugOverlay = self.updateDebugOverlayHeliport self:updateDebugOverlay() else local thData = self:getRawData() for x = 1, self.width do for y = 1, self.height do local xy = (y - 1) * self.width + x - 1 local offset = base_offset + xy * xy_offset if bits_ then self:setDebugText(x, y, bits(thData:byte(offset + first, offset + last))) else self:setDebugText(x, y, thData:byte(offset + first, offset + last)) end end end end end function Map:onTick() if self.debug_tick_timer == 1 then if self.updateDebugOverlay then self:updateDebugOverlay() end self.debug_tick_timer = 10 else self.debug_tick_timer = self.debug_tick_timer - 1 end end --! Set the sprites to be used by the map. --!param blocks (object) Sprite sheet for the map. function Map:setBlocks(blocks) self.blocks = blocks self.th:setSheet(blocks) end function Map:setCellFlags(...) self.th:setCellFlags(...) end function Map:setDebugFont(font) self.debug_font = font self.cell_outline = TheApp.gfx:loadSpriteTable("Bitmap", "aux_ui", true) end function Map:setDebugText(x, y, msg, ...) if not self.debug_text then self.debug_text = {} end local text if ... then text = {msg, ...} for i, v in ipairs(text) do text[i] = tostring(v) end text = table_concat(text, ",") else text = msg ~= 0 and msg or nil end self.debug_text[(y - 1) * self.width + x - 1] = text end --! Draws the rectangle of the map given by (sx, sy, sw, sh) at position (dx, dy) on the canvas --!param canvas --!param sx Horizontal start position at the screen. --!param sy Vertical start position at the screen. --!param sw (int) Width of the screen. --!param sh (int) Height of the screen. --!param dx (jnt) Horizontal destination at the canvas. --!param dy (int) Vertical destination at the canvas. --]] function Map:draw(canvas, sx, sy, sw, sh, dx, dy) -- All the heavy work is done by C code: self.th:draw(canvas, sx, sy, sw, sh, dx, dy) -- Draw any debug overlays if self.debug_font and (self.debug_text or self.debug_flags) then local startX = 0 local startY = math_floor((sy - 32) / 16) if startY < 0 then startY = 0 elseif startY >= self.height then startX = startY - self.height + 1 startY = self.height - 1 if startX >= self.width then startX = self.width - 1 end end local baseX = startX local baseY = startY while true do local x = baseX local y = baseY local screenX = 32 * (x - y) - sx local screenY = 16 * (x + y) - sy if screenY >= sh + 70 then break elseif screenY > -32 then repeat if screenX < -32 then elseif screenX < sw + 32 then local xy = y * self.width + x local xpos = dx + screenX - 32 local ypos = dy + screenY if self.debug_flags then local flags = self.debug_flags[xy] if flags.passable then self.cell_outline:draw(canvas, 3, xpos, ypos) end if flags.hospital then self.cell_outline:draw(canvas, 8, xpos, ypos) end if flags.buildable then self.cell_outline:draw(canvas, 9, xpos, ypos) end if flags.travelNorth and self.debug_flags[xy - self.width].passable then self.cell_outline:draw(canvas, 4, xpos, ypos) end if flags.travelEast and self.debug_flags[xy + 1].passable then self.cell_outline:draw(canvas, 5, xpos, ypos) end if flags.travelSouth and self.debug_flags[xy + self.width].passable then self.cell_outline:draw(canvas, 6, xpos, ypos) end if flags.travelWest and self.debug_flags[xy - 1].passable then self.cell_outline:draw(canvas, 7, xpos, ypos) end if flags.thob ~= 0 then self.debug_font:draw(canvas, "T"..flags.thob, xpos, ypos, 64, 16) end if flags.roomId ~= 0 then self.debug_font:draw(canvas, "R"..flags.roomId, xpos, ypos + 16, 64, 16) end else local msg = self.debug_text[xy] if msg and msg ~= "" then self.cell_outline:draw(canvas, 2, xpos, ypos) self.debug_font:draw(canvas, msg, xpos, ypos, 64, 32) end end else break end x = x + 1 y = y - 1 screenX = screenX + 64 until y < 0 or x >= self.width end if baseY == self.height - 1 then baseX = baseX + 1 if baseX == self.width then break end else baseY = baseY + 1 end end end end --! Get the price of a parcel --!param parcel (int) Parcel number being queried. --!return Price of the queried parcel. function Map:getParcelPrice(parcel) local conf = self.level_config conf = conf and conf.gbv conf = conf and conf.LandCostPerTile return self:getParcelTileCount(parcel) * (conf or 25) end --! Get the number of tiles in a parcel. --!param parcel (int) Parcel number being queried. --!return Number of tiles in the queried parcel. function Map:getParcelTileCount(parcel) return self.parcelTileCounts[parcel] or 0 end function Map:afterLoad(old, new) if old < 6 then self.parcelTileCounts = {} for plot = 1,self.th:getPlotCount() do self.parcelTileCounts[plot] = self.th:getParcelTileCount(plot) end end if old < 18 then self.difficulty = "full" end if old < 44 then self.level_config.expertise[2].MaxDiagDiff = 700 self.level_config.expertise[3].MaxDiagDiff = 250 self.level_config.expertise[4].MaxDiagDiff = 250 self.level_config.expertise[5].MaxDiagDiff = 250 self.level_config.expertise[6].MaxDiagDiff = 250 self.level_config.expertise[7].MaxDiagDiff = 250 self.level_config.expertise[8].MaxDiagDiff = 350 self.level_config.expertise[9].MaxDiagDiff = 250 self.level_config.expertise[10].MaxDiagDiff = 250 self.level_config.expertise[11].MaxDiagDiff = 700 self.level_config.expertise[12].MaxDiagDiff = 1000 self.level_config.expertise[13].MaxDiagDiff = 700 self.level_config.expertise[14].MaxDiagDiff = 400 self.level_config.expertise[15].MaxDiagDiff = 350 self.level_config.expertise[16].MaxDiagDiff = 350 self.level_config.expertise[17].MaxDiagDiff = 1000 self.level_config.expertise[18].MaxDiagDiff = 350 self.level_config.expertise[19].MaxDiagDiff = 700 self.level_config.expertise[20].MaxDiagDiff = 700 self.level_config.expertise[21].MaxDiagDiff = 700 self.level_config.expertise[22].MaxDiagDiff = 350 self.level_config.expertise[23].MaxDiagDiff = 350 self.level_config.expertise[24].MaxDiagDiff = 700 self.level_config.expertise[25].MaxDiagDiff = 700 self.level_config.expertise[26].MaxDiagDiff = 700 self.level_config.expertise[27].MaxDiagDiff = 350 self.level_config.expertise[28].MaxDiagDiff = 700 self.level_config.expertise[29].MaxDiagDiff = 1000 self.level_config.expertise[30].MaxDiagDiff = 700 self.level_config.expertise[31].MaxDiagDiff = 1000 self.level_config.expertise[32].MaxDiagDiff = 700 self.level_config.expertise[33].MaxDiagDiff = 1000 self.level_config.expertise[34].MaxDiagDiff = 700 self.level_config.expertise[35].MaxDiagDiff = 700 end if old < 57 then local flags_to_set = {buildableNorth = true, buildableSouth = true, buildableWest = true, buildableEast = true} for x = 1, self.width do for y = 1, self.height do self:setCellFlags(x, y, flags_to_set) end end end if old < 120 then -- Issue #1105 update pathfinding (rebuild walls) potentially broken by side object placement self.th:updatePathfinding() end end CorsixTH-0.61/CorsixTH/Lua/movie_player.lua000066400000000000000000000177401321660673500206070ustar00rootroot00000000000000--[[ Copyright (c) 2012 Stephen Baker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Layer which handles the Lua-facing side of loading and playing video. local TH = require "TH" local pathsep = package.config:sub(1, 1) class "MoviePlayer" ---@type MoviePlayer local MoviePlayer = _G["MoviePlayer"] --! Calculate the position and size for a movie --! --! Returns x and y position and width and height for the movie to be displayed --! based on the native size of the movie and the current screen dimensions local calculateSize = function(me) -- calculate target dimensions local x, y, w, h local screen_w, screen_h = me.app.config.width, me.app.config.height local native_w = me.moviePlayer:getNativeWidth() local native_h = me.moviePlayer:getNativeHeight() if native_w ~= 0 and native_h ~= 0 then local ar = native_w / native_h if math.abs((screen_w / screen_h) - ar) < 0.001 then x, y = 0, 0 w, h = screen_w, screen_h else if screen_w > screen_h / native_h * native_w then w = math.floor(screen_h / native_h * native_w) h = screen_h x = math.floor((screen_w - w) / 2) y = 0 else w = screen_w h = math.floor(screen_w / native_w * native_h) x = 0 y = math.floor((screen_h - h) / 2) end end else x, y = 0, 0 w, h = screen_w, screen_h end return x, y, w, h end local destroyMovie = function(me) me.moviePlayer:unload() if me.opengl_mode_index then me.app.modes[me.opengl_mode_index] = "opengl" end if me.channel >= 0 then me.audio:releaseChannel(me.channel) me.channel = -1 end if me.holding_bg_music then -- If possible we want to continue playing music where we were me.audio:pauseBackgroundTrack() else me.audio:playRandomBackgroundTrack() end me.playing = false if me.callback_on_destroy_movie then me.callback_on_destroy_movie() me.callback_on_destroy_movie = nil end end function MoviePlayer:MoviePlayer(app, audio, video) self.app = app self.audio = audio self.video = video self.playing = false self.holding_bg_music = false self.channel = -1 self.lose_movies = {} self.advance_movies = {} self.intro_movie = nil self.win_movie = nil self.can_skip = true self.wait_for_stop = false self.wait_for_over = false end function MoviePlayer:init() self.moviePlayer = TH.moviePlayer() self.moviePlayer:setRenderer(self.video) --find movies in Anims folder local movies = self.app.fs:listFiles("Anims") if movies then for _, movie in pairs(movies) do --lose level movies if movie:upper():match(pathsep .. "LOSE%d+%.[^" .. pathsep .. "]+$") then table.insert(self.lose_movies, movie) end --advance level movies local num = movie:upper():match(pathsep .. "AREA(%d+)V%.[^" .. pathsep .. "]+$") if num ~= nil and tonumber(num, 10) ~= nil then self.advance_movies[tonumber(num, 10)] = movie end --win game movie if movie:upper():match(pathsep .. "WINGAME%.[^" .. pathsep .. "]+$") then self.win_movie = movie end end end --find intro movies = self.app.fs:listFiles("Intro") if movies then for _, movie in pairs(movies) do if movie:upper():match(pathsep .. "INTRO%.SM4$") then self.intro_movie = movie end end end end function MoviePlayer:playIntro(callback_after_movie) self:playMovie(self.intro_movie, false, true, callback_after_movie) end function MoviePlayer:playWinMovie() self:playMovie(self.win_movie, true, true) end function MoviePlayer:playAdvanceMovie(level) local filename = self.advance_movies[level] if self.moviePlayer == nil or not self.moviePlayer:getEnabled() or not self.app.config.movies or filename == nil then return end if self.audio.background_music then self.holding_bg_music = self.audio:pauseBackgroundTrack() else end if level == 12 then self.audio:playSound("DICE122M.WAV") else self.audio:playSound("DICEYFIN.WAV") end self:playMovie(filename, true, false) end function MoviePlayer:playLoseMovie() if #self.lose_movies > 0 then local filename = self.lose_movies[math.random(#self.lose_movies)] self:playMovie(filename, true, true) end end function MoviePlayer:playMovie(filename, wait_for_stop, can_skip, callback) local success, warning if self.moviePlayer == nil or not self.moviePlayer:getEnabled() or not self.app.config.movies or filename == nil then if callback then callback() end return end success, warning = self.moviePlayer:load(filename) if warning ~= nil and warning ~= "" then local message = "MoviePlayer:playMovie - Warning: " .. warning if self.app.world then self.app.world:gameLog(message) elseif self.app.config.debug then print(message) end end if not success then -- Indicates failure to load movie if callback then callback() end return end -- Abort any loading of music self.audio.load_music = false if self.moviePlayer:hasAudioTrack() then self.channel = self.audio:reserveChannel() if self.audio.background_music then self.holding_bg_music = self.audio:pauseBackgroundTrack() end end self.video:startFrame() self.video:fillBlack() self.video:endFrame() self.can_skip = can_skip self.wait_for_stop = wait_for_stop self.wait_for_over = true self.callback_on_destroy_movie = callback self.opengl_mode_index = nil for i=1, #self.app.modes do if self.app.modes[i] == "opengl" then self.opengl_mode_index = i end end if self.opengl_mode_index then self.app.modes[self.opengl_mode_index] = "" end --TODO: Add text e.g. for newspaper headlines warning = self.moviePlayer:play(self.channel) if warning ~= nil and warning ~= "" then local message = "MoviePlayer:playMovie - Warning: " .. warning if self.app.world then self.app.world:gameLog(message) elseif self.app.config.debug then print(message) end end self.playing = true end --NB: Call after any changes to TH.surface function MoviePlayer:allocatePictureBuffer() if self.moviePlayer == nil then return end self.moviePlayer:allocatePictureBuffer() end --NB: Call before any changes to TH.surface function MoviePlayer:deallocatePictureBuffer() if self.moviePlayer == nil then return end self.moviePlayer:deallocatePictureBuffer() end function MoviePlayer:onMovieOver() if self.moviePlayer == nil then return end self.wait_for_over = false if not self.wait_for_stop then destroyMovie(self) end end function MoviePlayer:stop() if self.moviePlayer == nil then return end if self.can_skip then self.moviePlayer:stop() end self.wait_for_stop = false if not self.wait_for_over then destroyMovie(self) end end function MoviePlayer:refresh() if self.moviePlayer == nil then return end local x, y, w, h = calculateSize(self) self.moviePlayer:refresh(x, y, w, h) end function MoviePlayer:updateRenderer() if self.moviePlayer == nil then return end self.moviePlayer:setRenderer(self.video) end CorsixTH-0.61/CorsixTH/Lua/objects/000077500000000000000000000000001321660673500170315ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/objects/analyser.lua000066400000000000000000000042271321660673500213570ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "analyser" object.thob = 41 object.research_category = "cure" object.research_fallback = 45 object.name = _S.object.atom_analyser object.tooltip = _S.tooltip.objects.atom_analyser object.ticks = true object.class = "AtomAnalyser" object.build_preview_animation = 5092 object.show_in_town_map = true object.idle_animations = { north = 2134, south = 2134, } local function copy_north_to_south(t) t.south = t.north return t end object.usage_animations = copy_north_to_south { north = { in_use = { Doctor = {4878, object_visible = true} }, }, } object.orientations = { north = { footprint = { {-1, -1}, {0, -1}, {1, -1}, {-1, 0}, {0, 0, only_passable = true}, {1, 0} }, use_position = {0, 0}, }, east = { footprint = { {-1, -1}, {0, -1}, {-1, 0}, {0, 0, only_passable = true}, {-1, 1}, {0, 1} }, use_position = {0, 0}, }, } class "AtomAnalyser" (Object) ---@type AtomAnalyser local AtomAnalyser = _G["AtomAnalyser"] function AtomAnalyser:AtomAnalyser(...) self:Object(...) end function AtomAnalyser:getDrawingLayer() return 3 end return object CorsixTH-0.61/CorsixTH/Lua/objects/autopsy.lua000066400000000000000000000105371321660673500212460ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "autopsy" object.thob = 55 object.research_category = "cure" object.name = _S.object.auto_autopsy object.tooltip = _S.tooltip.objects.auto_autopsy object.ticks = true object.build_preview_animation = 5102 object.crashed_animation = 3304 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2146, } object.usage_animations = copy_north_to_south { north = { in_use = { Handyman = 3566, }, }, } object.multi_usage_animations = {} local function anim_set(patient_type, invite_in, configure, taken_in, closing) local anims = { -- Machine door opens and bed comes out begin_use = 2154, secondary = { begin_use = Humanoid.getIdleAnimation(patient_type), }, -- Patient gets onto the bed begin_use_2 = invite_in, -- Doctor presses some buttons with patient on bed begin_use_3 = configure, -- Bed withdraws back into machine in_use = taken_in, -- Machine door closes finish_use = closing, -- Doctor stands by machine while it flashes finish_use_2 = 4010, } object.multi_usage_animations["Doctor - ".. patient_type] = { north = anims, south = anims, } end anim_set("Standard Male Patient" , 2166, 3334, 4548, 4552) anim_set("Standard Female Patient" , 3196, 3200, 3188, 3192) anim_set("Alien Male Patient" , 2166, 3334, 4548, 4552) anim_set("Alien Female Patient" , 3196, 3200, 3188, 3192) anim_set("Alternate Male Patient" , 4544, 3334, 4548, 4552) -- Incomplete anim_set("Chewbacca Patient" , 4118, 4126, 4130, 4134) anim_set("Elvis Patient" , 4086, 4090, 4094, 4098) anim_set("Slack Male Patient" , 4332, 4336, 4340, 4552) anim_set("Slack Female Patient" , 3196, 3200, 3188, 3192) -- Incomplete anim_set("Transparent Male Patient" , 4460, 4856, 4456, 4626) anim_set("Transparent Female Patient", 4860, 4804, 4796, 4800) anim_set("Invisible Patient" , 4212, 4224, 4216, 4220) object.orientations = { north = { use_position_secondary = {-2, 1}, use_position = {0, 1}, handyman_position = {0, 1}, footprint = { {-2, -1, complete_cell = true}, {-2, 0, complete_cell = true}, {-2, 1, only_passable = true}, {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {-1, 1, only_passable = true}, {0, -1, complete_cell = true}, {0, 0, complete_cell = true}, {0, 1, only_passable = true}, }, early_list = true, }, east = { render_attach_position = {-1, 0}, use_position_secondary = {1, -2}, use_position = {1, 0}, handyman_position = {1, 0}, footprint = { {-1, -2, complete_cell = true}, {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, -2, complete_cell = true}, {0, -1, complete_cell = true}, {0, 0, complete_cell = true}, {1, -2, only_passable = true}, {1, -1, only_passable = true}, {1, -0, only_passable = true}, }, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {0.0 , 0.0}) -- In (some versions of?) the original animations, 4086 has a builtin repeat, -- which looks very wrong, hence trim it to the length of a similar animation. anim_mgr:setAnimLength(4086, anim_mgr:getAnimLength(2166)) return object CorsixTH-0.61/CorsixTH/Lua/objects/bed.lua000066400000000000000000000072621321660673500202750ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "bed" object.thob = 8 object.research_category = "diagnosis" object.name = _S.object.bed object.tooltip = _S.tooltip.objects.bed object.ticks = false object.build_preview_animation = 910 object.show_in_town_map = true object.idle_animations = { north = 2644, east = 2646, } object.usage_animations = { north = { begin_use = { -- Patient lies down ["Standard Male Patient"] = 4686, ["Standard Female Patient"] = 4710, }, in_use = { -- Use "animation" ["Standard Male Patient"] = 4694, ["Standard Female Patient"] = 4718, }, finish_use = { -- Patient stands up again ["Standard Male Patient"] = 4702, ["Standard Female Patient"] = 4726, }, }, east = { begin_use = { -- Patient lies down ["Standard Male Patient"] = 4688, ["Standard Female Patient"] = 4712, }, in_use = { -- Use "animation" ["Standard Male Patient"] = 4696, ["Standard Female Patient"] = 4720, }, finish_use = { -- Patient stands up again ["Standard Male Patient"] = 4704, ["Standard Female Patient"] = 4728, }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2, kf3 = {1, -1}, {0.4, -1}, {-0.3, -1} anim_mgr:setMarker(object.usage_animations.north.begin_use, 0, kf1, 4, kf2, 12, kf2, 18, kf3) anim_mgr:setMarker(object.usage_animations.north.in_use, kf3) anim_mgr:setMarker(object.usage_animations.north.finish_use, 0, kf3, 6, kf3, 12, kf2, 14, kf1) -- TODO: The other direction object.orientations = { north = { footprint = { {1, -1, only_passable = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, 0, complete_cell = true} }, use_position = {1, -1}, early_list = true, }, east = { footprint = { {0, 1, only_passable = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, 0, complete_cell = true} }, use_position = {0, 1}, early_list = true, }, south = { footprint = { {1, 0, only_passable = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, 0, complete_cell = true} }, use_position = {1, 0}, render_attach_position = {{-2,0},{-1,0},{0,0},{0,-1,}}, }, west = { footprint = { {-1, 1, only_passable = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, 0, complete_cell = true} }, use_position = {-1, 1}, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/bench.lua000066400000000000000000000160651321660673500206230ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "bench" object.class = "Bench" object.thob = 4 object.name = _S.object.bench object.tooltip = _S.tooltip.objects.bench object.ticks = false object.corridor_object = 2 object.build_preview_animation = 902 object.dynamic_info = true object.idle_animations = { north = 112, east = 114, } object.walk_in_to_use = true object.usage_animations = { north = { begin_use = { ["Standard Male Patient" ] = 96, ["Standard Female Patient" ] = 232, ["Slack Female Patient" ] = 232, ["Transparent Male Patient" ] = 1080, ["Slack Male Patient" ] = 1500, ["Invisible Patient" ] = 1812, ["Alternate Male Patient" ] = 2732, ["Transparent Female Patient"] = 3028, ["Elvis Patient" ] = 3642, ["Chewbacca Patient" ] = 3744, ["Alien Male Patient" ] = 96, -- TEMP ["Alien Female Patient" ] = 232, -- TEMP }, in_use = { ["Standard Male Patient" ] = 146, ["Standard Female Patient" ] = 224, ["Slack Female Patient" ] = 224, ["Transparent Male Patient" ] = 1088, ["Slack Male Patient" ] = 1508, ["Invisible Patient" ] = 1820, ["Alternate Male Patient" ] = 2724, ["Transparent Female Patient"] = 3036, ["Chewbacca Patient" ] = 3760, ["Elvis Patient" ] = 4110, ["Alien Male Patient" ] = 146, -- TEMP ["Alien Female Patient" ] = 224, -- TEMP }, finish_use = { ["Standard Male Patient" ] = 216, ["Standard Female Patient" ] = 240, ["Slack Female Patient" ] = 240, ["Transparent Male Patient" ] = 1096, ["Slack Male Patient" ] = 1516, ["Invisible Patient" ] = 1828, ["Alternate Male Patient" ] = 2740, ["Transparent Female Patient"] = 3044, ["Chewbacca Patient" ] = 3752, ["Elvis Patient" ] = 4102, ["Alien Male Patient" ] = 216, -- TEMP ["Alien Female Patient" ] = 240, -- TEMP }, }, east = { begin_use = { ["Standard Male Patient" ] = 98, ["Standard Female Patient" ] = 234, ["Transparent Male Patient" ] = 1082, ["Slack Female Patient" ] = 234, ["Slack Male Patient" ] = 1502, ["Invisible Patient" ] = 1814, ["Alternate Male Patient" ] = 2734, ["Transparent Female Patient"] = 3030, ["Elvis Patient" ] = 3644, ["Chewbacca Patient" ] = 3746, ["Alien Male Patient" ] = 98, -- TEMP ["Alien Female Patient" ] = 234, -- TEMP }, in_use = { ["Standard Male Patient" ] = 148, ["Standard Female Patient" ] = 226, ["Slack Female Patient" ] = 226, ["Transparent Male Patient" ] = 1090, ["Slack Male Patient" ] = 1510, ["Invisible Patient" ] = 1822, ["Alternate Male Patient" ] = 2726, ["Transparent Female Patient"] = 3038, ["Chewbacca Patient" ] = 3762, ["Elvis Patient" ] = 4112, ["Alien Male Patient" ] = 148, -- TEMP ["Alien Female Patient" ] = 226, -- TEMP }, finish_use = { ["Standard Male Patient" ] = 218, ["Standard Female Patient" ] = 242, ["Slack Female Patient" ] = 242, ["Transparent Male Patient" ] = 1098, ["Slack Male Patient" ] = 1518, ["Invisible Patient" ] = 1830, ["Alternate Male Patient" ] = 2742, ["Transparent Female Patient"] = 3046, ["Chewbacca Patient" ] = 3754, ["Elvis Patient" ] = 4104, ["Alien Male Patient" ] = 218, -- TEMP ["Alien Female Patient" ] = 242, -- TEMP }, }, } object.orientations = { north = { render_attach_position = { {0, 0}, {-1, 0}, {0, -1} }, footprint = { {0, 0, complete_cell = true}, {0, -1, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, south = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, west = { footprint = { {0, 0, complete_cell = true}, {-1, 0, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, } class "Bench" (Object) ---@type Bench local Bench = _G["Bench"] function Bench:Bench(...) self:Object(...) end --Called when the patient sits up from a bench for whatever reason --Maybe related to Humanoid:removedObject(object) function Bench:removeUser(user) if user then local has_idle = false for _, action in pairs(user.action_queue) do if action.name == "idle" then has_idle = true end end -- patient must idle && action:isStanding() == true at this point if has_idle == true then user:notifyNewObject("bench") end end return Object.removeUser(self, user) end --Called when the player picks up a bench function Bench:onDestroy() -- make sure that action:isStanding() will be true, see issue 404 if self.user then for i, action in pairs(self.user.action_queue) do if action.name == "queue" then self.user.action_queue[i].current_bench_distance = nil end end end -- if patient is heading for the destroyed bench then do the same -- things as if they were sitting on it if self.reserved_for ~= nil then self.reserved_for:handleRemovedObject(self) self:removeUser(self.reserved_for) end Object.onDestroy(self) end --! This function is automatically called after loading a game and serves for compatibility. function Bench:afterLoad(old, new) if old < 119 then self.footprint = object.orientations[self.direction].footprint end Object.afterLoad(self, old, new) end return object CorsixTH-0.61/CorsixTH/Lua/objects/bin.lua000066400000000000000000000043761321660673500203160ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "bin" object.thob = 50 object.name = _S.object.bin object.tooltip = _S.tooltip.objects.bin object.ticks = false object.corridor_object = 6 object.class = "SideObject" object.build_preview_animation = 5096 object.idle_animations = { north = 1752, south = 1752, } object.orientations = { north = { footprint = { {0, 0, only_side = true} } }, east = { footprint = { {0, 0, only_side = true} } }, } class "SideObject" (Object) ---@type SideObject local SideObject = _G["SideObject"] function SideObject:SideObject(...) self:Object(...) end function SideObject:getDrawingLayer() if self.direction == "north" then return 1 elseif self.direction == "west" then return 2 else if self.direction == "east" then if self.object_type.thob == 50 then --[[ bins have two orientations north and east by they are displayed in the north and west part of the tile respectively which could lead to a graphical glitch in which a bin in the west part of the tile is displayed over a doctor in the middle of the tile ]] return 2 else return 8 end else --south return 9 end end end return object CorsixTH-0.61/CorsixTH/Lua/objects/bookcase.lua000066400000000000000000000035751321660673500213340ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "bookcase" object.thob = 56 object.name = _S.object.bookcase object.tooltip = _S.tooltip.objects.bookcase object.ticks = false object.build_preview_animation = 5104 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2406, } object.usage_animations = copy_north_to_south { north = { in_use = {Doctor = 2414}, }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, east = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/cabinet.lua000066400000000000000000000043471321660673500211510ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "cabinet" object.thob = 2 object.name = _S.object.cabinet object.tooltip = _S.tooltip.objects.cabinet object.ticks = false object.build_preview_animation = 5054 object.idle_animations = { north = 80, east = 82, } object.usage_animations = { north = { in_use = { Doctor = 88, }, }, east = { in_use = { Doctor = 90, }, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.usage_animations.east.in_use, {-1, 0}) anim_mgr:setMarker(object.usage_animations.north.in_use, {-1, 0}) object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, east = { footprint = { {0, 0, complete_cell = true}, {-1, 0, only_passable = true} }, use_position = "passable", }, south = { footprint = { {0, 0, complete_cell = true}, {0, -1, only_passable = true} }, use_position = "passable", }, west = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/chair.lua000066400000000000000000000151631321660673500206300ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "chair" object.thob = 6 object.name = _S.object.chair object.tooltip = _S.tooltip.objects.chair object.ticks = false object.build_preview_animation = 5056 object.idle_animations = { north = 686, east = 688, } object.walk_in_to_use = true local function make_list(not_talking, nodding, talking) local list = {} for _ = 1, 16 do list[#list+1] = not_talking end if nodding then for _ = 1, 3 do list[#list+1] = nodding end end if talking then for _ = 1, 1 do list[#list+1] = talking end end return list end object.usage_animations = { north = { begin_use = { ["Standard Male Patient" ] = 678, ["Slack Male Patient" ] = 4580, ["Elvis Patient" ] = 1054, ["Standard Female Patient" ] = 2824, ["Slack Female Patient" ] = 2824, ["Chewbacca Patient" ] = 3792, ["Invisible Patient" ] = 4228, ["Transparent Male Patient" ] = 4360, ["Alternate Male Patient" ] = 4480, ["Transparent Female Patient"] = 4816, ["Alien Male Patient" ] = 678, -- TEMP ["Alien Female Patient" ] = 2824, -- TEMP }, in_use = { -- Note that patient mouth not visible in this orientation, so we only -- need one animation, and not the collection of animations. ["Standard Male Patient" ] = 702, ["Slack Male Patient" ] = 4588, ["Elvis Patient" ] = 1038, ["Standard Female Patient" ] = 2814, ["Slack Female Patient" ] = 2814, ["Chewbacca Patient" ] = 3784, ["Invisible Patient" ] = 4236, ["Transparent Male Patient" ] = 4344, ["Alternate Male Patient" ] = 4488, ["Transparent Female Patient"] = 4808, ["Alien Male Patient" ] = 702, -- TEMP ["Alien Female Patient" ] = 2814, -- TEMP }, finish_use = { ["Standard Male Patient" ] = 694, ["Slack Male Patient" ] = 4596, ["Standard Female Patient" ] = 2832, ["Slack Female Patient" ] = 2832, ["Chewbacca Patient" ] = 3776, ["Elvis Patient" ] = 4070, ["Invisible Patient" ] = 4244, ["Transparent Male Patient" ] = 4368, ["Alternate Male Patient" ] = 4504, ["Transparent Female Patient"] = 4824, ["Alien Male Patient" ] = 694, -- TEMP ["Alien Female Patient" ] = 2832, -- TEMP } }, east = { begin_use = { ["Standard Male Patient" ] = 680, ["Elvis Patient" ] = 1056, ["Slack Male Patient" ] = 1540, ["Standard Female Patient" ] = 2826, ["Slack Female Patient" ] = 2826, ["Chewbacca Patient" ] = 3794, ["Invisible Patient" ] = 4230, ["Transparent Male Patient" ] = 4362, ["Alternate Male Patient" ] = 4482, ["Transparent Female Patient"] = 4818, ["Alien Male Patient" ] = 680, -- TEMP ["Alien Female Patient" ] = 2826, -- TEMP }, in_use = { -- Not talking, head nodding, talking ["Standard Male Patient" ] = make_list( 704, 736, 744), ["Elvis Patient" ] = make_list(1040, nil, 4080), ["Slack Male Patient" ] = make_list(1544, nil, 4606), ["Standard Female Patient" ] = make_list(2818, 3002, 2994), ["Slack Female Patient" ] = make_list(2818, 3002, 2994), ["Chewbacca Patient" ] = make_list(3786, nil, 4144), ["Invisible Patient" ] = make_list(4238, nil, 4250), ["Transparent Male Patient" ] = make_list(4378, 4346, 4354), ["Alternate Male Patient" ] = make_list(4490, nil, 4498), -- NB: 4498 also seems to include big-head patients ["Transparent Female Patient"] = make_list(4810, 4842, 4834), ["Alien Male Patient" ] = make_list( 704, 736, 744), -- TEMP ["Alien Female Patient" ] = make_list(2818, 3002, 2994), -- TEMP }, finish_use = { ["Standard Male Patient" ] = 696, ["Slack Male Patient" ] = 1552, ["Standard Female Patient" ] = 2834, ["Slack Female Patient" ] = 2834, ["Chewbacca Patient" ] = 3778, ["Elvis Patient" ] = 4072, ["Invisible Patient" ] = 4246, ["Transparent Male Patient" ] = 4370, ["Alternate Male Patient" ] = 4506, ["Transparent Female Patient"] = 4826, ["Alien Male Patient" ] = 696, -- TEMP ["Alien Female Patient" ] = 2834, -- TEMP } }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, -1, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, south = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, west = { footprint = { {0, 0, complete_cell = true}, {-1, 0, only_passable = true, invisible = true, shareable = true} }, use_position = "passable", }, } class "Chair" (Object) ---@type Chair local Chair = _G["Chair"] function Chair:Chair(...) self:Object(...) end --! This function is automatically called after loading a game and serves for compatibility. function Chair:afterLoad(old, new) if old < 119 then self.footprint = object.orientations[self.direction].footprint end Object.afterLoad(self, old, new) end return object CorsixTH-0.61/CorsixTH/Lua/objects/comfortable_chair.lua000066400000000000000000000040061321660673500231770ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "comfortable_chair" object.thob = 61 object.name = _S.object.comfortable_chair object.tooltip = _S.tooltip.objects.comfortable_chair object.ticks = false object.build_preview_animation = 5110 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2524, } object.usage_animations = copy_north_to_south { north = { begin_use = {Doctor = 2516}, begin_use_2 = {Doctor = 2512}, in_use = {Doctor = 2544}, finish_use = {Doctor = 2520}, }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/computer.lua000066400000000000000000000037041321660673500213760ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "computer" object.thob = 40 object.research_category = "cure" object.research_fallback = 46 object.name = _S.object.computer object.tooltip = _S.tooltip.objects.computer object.ticks = false object.build_preview_animation = 5090 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2094, } object.usage_animations = copy_north_to_south { north = { in_use = { Doctor = 2098, }, }, } object.orientations = { north = { use_position = "passable", use_animate_from_use_position = true, footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, }, east = { use_position = "passable", use_animate_from_use_position = true, footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/console.lua000066400000000000000000000044421321660673500212020ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "console" object.thob = 15 object.name = _S.object.console object.tooltip = _S.tooltip.objects.console object.ticks = true object.build_preview_animation = 922 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 794, } object.usage_animations = copy_north_to_south { north = { begin_use = {Doctor = 798}, -- Doctor sits down begin_use_2 = {Doctor = 806}, -- Pulls the handle in_use = {Doctor = { 810, -- Sits idle 814, -- Pushing buttons }}, finish_use = {Doctor = 802}, -- Doctor stands up }, } object.orientations = { north = { footprint = { {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, -1, complete_cell = true}, {0, 0, complete_cell = true, only_passable = true} }, render_attach_position = {0, -1}, use_position = "passable" }, east = { footprint = { {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, -1, complete_cell = true}, {0, 0, complete_cell = true, only_passable = true} }, render_attach_position = {-1, 0}, use_position = "passable" }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/couch.lua000066400000000000000000000044101321660673500206340ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "couch" object.thob = 18 object.research_category = "diagnosis" object.name = _S.object.couch object.tooltip = _S.tooltip.objects.couch object.ticks = false object.build_preview_animation = 5064 local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2540, } object.usage_animations = copy_north_to_south { north = { begin_use = { ["Elvis Patient" ] = 1014, ["Standard Male Patient" ] = 2528, ["Standard Female Patient"] = 3180, }, in_use = { ["Elvis Patient" ] = 942, ["Standard Male Patient" ] = 2536, ["Standard Female Patient"] = 3330, }, finish_use = { ["Elvis Patient" ] = 938, ["Standard Male Patient" ] = 2532, ["Standard Female Patient"] = 3326, }, }, } object.orientations = { north = { footprint = { {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, -1}, {0, 0, only_passable = true} }, render_attach_position = {-1, 0}, }, east = { footprint = { {-1, -1, complete_cell = true}, {-1, 0}, {0, -1, complete_cell = true}, {0, 0, only_passable = true} } }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/crash_trolley.lua000066400000000000000000000072051321660673500224120ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "crash_trolley" object.thob = 20 object.research_category = "diagnosis" object.name = _S.object.crash_trolley object.tooltip = _S.tooltip.objects.crash_trolley object.ticks = false object.build_preview_animation = 916 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 3838 --1134, there's also a back view (1132), but animation is missing for that } object.multi_usage_animations = { ["Stripped Male Patient - Doctor"] = copy_north_to_south { north = { begin_use = {3740, 3736, 3818}, -- Also possibly 548, 556 and 560 for a more smooth animation? in_use = {540, 544, 552}, finish_use = {3802, 3806, 3826}, }, }, ["Stripped Female Patient - Doctor"] = copy_north_to_south { north = { begin_use = {3732, 3728, 3822}, -- 532 in_use = {524, 528, 536}, finish_use = {3810, 3814, 3830}, }, }, ["Stripped Male Patient 2 - Doctor"] = copy_north_to_south { north = { begin_use = {3740, 3736, 3818}, -- Also possibly 548, 556 and 560 for a more smooth animation? in_use = {540, 544, 552}, finish_use = {3802, 3806, 3826}, }, }, ["Stripped Female Patient 2 - Doctor"] = copy_north_to_south { north = { begin_use = {3732, 3728, 3822}, -- 532 in_use = {524, 528, 536}, finish_use = {3810, 3814, 3830}, }, }, ["Stripped Male Patient 3 - Doctor"] = copy_north_to_south { north = { begin_use = {3740, 3736, 3818}, -- Also possibly 548, 556 and 560 for a more smooth animation? in_use = {540, 544, 552}, finish_use = {3802, 3806, 3826}, }, }, ["Stripped Female Patient 3 - Doctor"] = copy_north_to_south { north = { begin_use = {3732, 3728, 3822}, -- 532 in_use = {524, 528, 536}, finish_use = {3810, 3814, 3830}, }, }, } object.orientations = { north = { render_attach_position = { {0, 0}, {-1, 1} }, footprint = { {-1, 0, complete_cell = true}, {-1, 1, only_passable = true}, {0, 0, only_passable = true}, {0, 1, only_passable = true} }, use_position = {-1, 1}, use_position_secondary = {0, 0}, list_bottom = true, }, east = { render_attach_position = { {0, 0}, {1, -1} }, footprint = { {0, -1, complete_cell = true}, {0, 0, only_passable = true}, {1, -1, only_passable = true}, {1, 0, only_passable = true} }, use_position = {1, -1}, use_position_secondary = {0, 0}, list_bottom = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/desk.lua000066400000000000000000000100401321660673500204550ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "desk" object.thob = 1 object.name = _S.object.desk object.tooltip = _S.tooltip.objects.desk object.ticks = false object.build_preview_animation = 900 object.show_in_town_map = true object.idle_animations = { north = 48, east = 50, } object.usage_animations = { north = { begin_use = { Doctor = 56, Nurse = 3240, }, in_use = { -- Note: 72 (normal usage) should happen a lot more often than 718 (head -- scratching), hence it appears in the list many times. Doctor = {72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 718}, Nurse = 3256, }, finish_use = { Doctor = 64, Nurse = 3248, }, }, east = { begin_use = { Doctor = 58, Nurse = 3242, }, in_use = { Doctor = 74, -- No analogue to 718 :( Nurse = 3258, }, finish_use = { Doctor = 66, Nurse = 3250, }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2, kf3 = {0, 0}, {-1, -0.3}, {-0.9, -0.1} anim_mgr:setMarker( 56, 0, kf1, 10, kf2, 13, kf3) anim_mgr:setMarker(3240, 0, kf1, 10, kf2, 13, kf3) anim_mgr:setMarker( 72, kf3) anim_mgr:setMarker( 718, kf3) anim_mgr:setMarker(3256, kf3) anim_mgr:setMarker( 64, 0, kf3, 3, kf2, 12, kf1) anim_mgr:setMarker(3248, 0, kf3, 3, kf2, 12, kf1) kf1, kf2, kf3 = {-1, 0}, {-1, -1.1}, {-0.8, -0.9} anim_mgr:setMarker( 58, 0, kf1, 9, kf2, 11, kf3) anim_mgr:setMarker(3242, 0, kf1, 9, kf2, 11, kf3) kf1 = {-0.7, -1} anim_mgr:setMarker( 74, kf1) anim_mgr:setMarker(3258, kf1) kf2, kf1 = {-0.8, -1}, {-1, -2} anim_mgr:setMarker( 66, 0, kf3, 3, kf2, 8, kf1) anim_mgr:setMarker(3250, 0, kf3, 3, kf2, 8, kf1) object.orientations = { north = { footprint = { {-2, -1, complete_cell = true}, {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, -1, need_north_side = true}, {0, 0, only_passable = true} }, render_attach_position = {0, -1}, use_position = "passable", }, east = { footprint = { {0, -2, need_east_side = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-1, 0, only_passable = true}, {0, 0, complete_cell = true}, {-1, -2, only_passable = true}}, render_attach_position = {0, -1}, use_position = {-1, 0}, finish_use_position = {-1, -2}, }, south = { footprint = { {0, -1, only_passable = true}, {-2, 0, need_south_side = true}, {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {0, 0, complete_cell = true}, {-2, -1, only_passable = true} }, render_attach_position = {-2, 0}, use_position = {0, -1}, finish_use_position = {-2, -1}, }, west = { footprint = { {-1, -2, complete_cell = true}, {0, 0, only_passable = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-1, 0, need_west_side = true} }, render_attach_position = {-1, 0}, use_position = "passable", }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/door.lua000066400000000000000000000137241321660673500205060ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "door" object.thob = 3 object.name = _S.object.door object.tooltip = _S.tooltip.objects.door object.class = "Door" object.ticks = false object.idle_animations = { north = 104, west = 106, } dofile "queue" class "Door" (Object) ---@type Door local Door = _G["Door"] function Door:Door(...) self:Object(...) self.queue = Queue() -- Priority should be given to humanoids already inside the door's room, as -- otherwise we could end up in a situation where a patient trying to leave -- a room is in the queue behind a patient trying to enter, and the entering -- one cannot enter until the leaving one has left, etc. self.queue:setPriorityForSameRoom(self) self.hover_cursor = TheApp.gfx:loadMainCursor("queue") -- self.user = "locked" -- prevents doors from being used (debug aid) end function Door:getRoom() return self.room end function Door:updateDynamicInfo() if self.room and self.queue then if not self.room:hasQueueDialog() then self:setDynamicInfo('text', { self.room.room_info.name }) else self:setDynamicInfo('text', { self.room.room_info.name, _S.dynamic_info.object.queue_size:format(self.queue:reportedSize()), _S.dynamic_info.object.queue_expected:format(self.queue:expectedSize()) }) end end end function Door:onClick(ui, button) local room = self:getRoom() if button == "left" and room:hasQueueDialog() and self.queue then local queue_window = UIQueue(ui, self.queue) ui:addWindow(queue_window) end end local door_flag_name = { north = {"doorNorth", "tallNorth"}, west = {"doorWest", "tallWest"}, } function Door:setTile(x, y) local map = self.world.map local flag_names = door_flag_name[self.direction] local todo_cleanup if self.tile_x then -- NB: unsetting buildable flag has to be done AFTER removing the object -- from its former tile in Object.setTile todo_cleanup = self:getWalkableTiles() map:setCellFlags(self.tile_x, self.tile_y, { [flag_names[1]] = false, [flag_names[2]] = false, }) for _, xy in ipairs(self:getWalkableTiles()) do map:setCellFlags(xy[1], xy[2], {doNotIdle = false}) end end Object.setTile(self, x, y) if todo_cleanup then -- passable tiles can "belong" to multiple objects, so we have to check that -- assumption: no object defines a passable tile further than 10 tiles away from its origin for _, xy in ipairs(todo_cleanup) do if not self.world:isTilePartOfNearbyObject(xy[1], xy[2], 10) then map:setCellFlags(xy[1], xy[2], {buildable = true}) end end end if x then map:setCellFlags(x, y, { [flag_names[1]] = true, [flag_names[2]] = true, }) for _, xy in ipairs(self:getWalkableTiles()) do map:setCellFlags(xy[1], xy[2], {buildable = false, doNotIdle = true}) end end map.th:updateShadows() return self end function Door:getWalkableTiles() local x, y = self.tile_x, self.tile_y if self.direction == "west" then x = x - 1 else y = y - 1 end return { {self.tile_x, self.tile_y}, {x, y} } end local flag_early_list = 1024 local flag_list_bottom = 2048 function Door:setAnimation(animation, flags) flags = (flags or 0) + flag_list_bottom if self.direction == "north" then flags = flags + flag_early_list end return Object.setAnimation(self, animation, flags) end function Door:closeDoor() if self.queue then self.queue:rerouteAllPatients(SeekRoomAction(self:getRoom().room_info.id)) self.queue = nil end self:clearDynamicInfo(nil) self.hover_cursor = nil end function Door:getDrawingLayer() return 0 end function Door:checkForDeadlock() -- In an ideal world, deadlocks should not occur, as they indicate errors in -- some logic elsewhere. From a practical point of view, we should check for -- deadlocks from time to time and attempt to fix them. if self.queue and self.reserved_for then -- If the door is reserved for someone, then that person should either be -- at the front of the queue, or not in any queues at all. for _, action in ipairs(self.reserved_for.action_queue) do if action.name == "queue" then if action.queue ~= self.queue or self.queue[1] ~= self.reserved_for then self.reserved_for = nil self:getRoom():tryAdvanceQueue() end break end end end end function Door:afterLoad(old, new) if old < 57 then local flags_to_set local map = self.world.map if self.direction == "west" then flags_to_set = {buildableNorth = false, buildableSouth = false} map:setCellFlags(self.tile_x, self.tile_y, flags_to_set) map:setCellFlags(self.tile_x - 1, self.tile_y, flags_to_set) else flags_to_set = {buildableEast = false, buildableWest = false} map:setCellFlags(self.tile_x, self.tile_y, flags_to_set) map:setCellFlags(self.tile_x, self.tile_y - 1, flags_to_set) end end end return object CorsixTH-0.61/CorsixTH/Lua/objects/doors/000077500000000000000000000000001321660673500201575ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/objects/doors/entrance_left_door.lua000066400000000000000000000025641321660673500245250ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "entrance_left_door" object.thob = 58 object.name = _S.object.entrance_left object.tooltip = _S.tooltip.objects.entrance_left object.class = "EntranceDoor" object.ticks = false object.idle_animations = { north = 316, west = 318, } object.supports_creation_for_map = true return object CorsixTH-0.61/CorsixTH/Lua/objects/doors/entrance_right_door.lua000066400000000000000000000130511321660673500247010ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "entrance_right_door" object.thob = 59 object.name = _S.object.entrance_right object.tooltip = _S.tooltip.objects.entrance_right object.class = "EntranceDoor" object.ticks = false object.idle_animations = { north = 308, west = 312, } object.supports_creation_for_map = true class "EntranceDoor" (Object) ---@type EntranceDoor local EntranceDoor = _G["EntranceDoor"] function EntranceDoor:EntranceDoor(world, object_type, x, y, direction, etc) self.is_master = object_type == object self:Object(world, object_type, x, y, direction, etc) self.occupant_count = 0 self.is_open = false -- We need to link the master to the slave but we don't know in which order they will be initialized if self.is_master then -- The master will check for an adjacent slave local slave_type = "entrance_left_door" self.slave = world:getObject(x - 1, y, slave_type) or world:getObject(x, y - 1, slave_type) or nil if self.slave then self.slave.master = self end else -- The slave will check for an adjacent master local master_type = "entrance_right_door" self.master = world:getObject(x + 1, y, master_type) or world:getObject(x, y + 1, master_type) or nil if self.master then self.master.slave = self end end local anim = self.object_type.idle_animations[self.direction] local anims = self.world.anims self.anim_frames = {anims:getFirstFrame(anim)} while true do local nxt = anims:getNextFrame(self.anim_frames[#self.anim_frames]) if nxt == self.anim_frames[1] then break end self.anim_frames[#self.anim_frames + 1] = nxt end self.frame_index = 1 end function EntranceDoor:onOccupantChange(count_delta) self.occupant_count = self.occupant_count + count_delta local is_open = self.occupant_count > 0 if is_open ~= self.is_open then self:playSound("eledoor2.wav") self.is_open = is_open self.ticks = true end if self.slave then self.slave:onOccupantChange(count_delta) end end local additional_walkable_tiles = { north = { {0, -1}, }, west = { {-1, 0}, }, } local additional_walkable_tiles_master = { north = { {0, -1}, {1, 0}, {1, -1}, }, west = { {-1, 0}, {0, 1}, {-1, 1}, }, } function EntranceDoor:setTile(x, y) local offsets = self.is_master and additional_walkable_tiles_master or additional_walkable_tiles offsets = offsets[self.direction] local flag_name = self.direction == "north" and "tallNorth" or "tallWest" if self.tile_x then if self.is_master then -- NB: only the tile of the door itself and the one additional tile from additional_walkable_tiles notify the door self.world:notifyObjectOfOccupants(self.tile_x, self.tile_y, nil) for _, offset in ipairs(additional_walkable_tiles[self.direction]) do self.world:notifyObjectOfOccupants(self.tile_x + offset[1], self.tile_y + offset[2], nil) end end self.world.map:setCellFlags(self.tile_x, self.tile_y, {[flag_name] = false, buildable = true, doNotIdle = false}) for _, offset in ipairs(offsets) do self.world.map:setCellFlags(self.tile_x + offset[1], self.tile_y + offset[2], {buildable = true, doNotIdle = false}) end end Object.setTile(self, x, y) if x then if self.is_master then self.world:notifyObjectOfOccupants(x, y, self) for _, offset in ipairs(additional_walkable_tiles[self.direction]) do self.world:notifyObjectOfOccupants(x + offset[1], y + offset[2], self) end end self.world.map:setCellFlags(x, y, {[flag_name] = true, buildable = false, doNotIdle = true}) for _, offset in ipairs(offsets) do self.world.map:setCellFlags(x + offset[1], y + offset[2], {buildable = false, doNotIdle = true}) end end self.world.map.th:updateShadows() end function EntranceDoor:getWalkableTiles() local result = {} local offsets = self.is_master and additional_walkable_tiles_master or additional_walkable_tiles result[1] = {self.tile_x, self.tile_y} for _, offset in ipairs(offsets[self.direction]) do result[#result + 1] = {self.tile_x + offset[1], self.tile_y + offset[2]} end return result end function EntranceDoor:tick() local target_index = self.is_open and #self.anim_frames or 1 if self.frame_index == target_index then self.ticks = false elseif self.frame_index < target_index then self.frame_index = self.frame_index + 1 elseif self.frame_index > target_index then self.frame_index = self.frame_index - 1 end self.th:setFrame(self.anim_frames[self.frame_index]) end return object CorsixTH-0.61/CorsixTH/Lua/objects/doors/swing_door_left.lua000066400000000000000000000025021321660673500240450ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "swing_door_left" object.thob = 52 object.name = _S.object.swing_door1 object.tooltip = _S.tooltip.objects.swing_door1 object.class = "SwingDoor" object.ticks = false object.idle_animations = { north = 1996, west = 1998, } return object CorsixTH-0.61/CorsixTH/Lua/objects/doors/swing_door_right.lua000066400000000000000000000121661321660673500242370ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "swing_door_right" object.thob = 53 object.name = _S.object.swing_door2 object.tooltip = _S.tooltip.objects.swing_door2 object.class = "SwingDoor" object.ticks = false object.idle_animations = { north = 2006, --west = 2050,--1998 } class "SwingDoor" (Door) ---@type SwingDoor local SwingDoor = _G["SwingDoor"] function SwingDoor:SwingDoor(world, object_type, x, y, direction, etc) self.is_master = object_type == object self:Door(world, object_type, x, y, direction, etc) if self.is_master then -- Wait one tick before finding the slave so that we're sure it has been created. local --[[persistable:swing_door_creation]] function callback() local slave_type = "swing_door_left" self.slave = world:getObject(x - 1, y, slave_type) or world:getObject(x, y - 1, slave_type) or nil self.slave:setAsSlave(self) self.ticks = false end self:setTimer(1, callback) self.ticks = true end self.old_anim = self.th:getAnimation() self.old_flags = self.th:getFlag() end --[[ Makes the door mimic its master when it comes to hover cursor and what happens when the player clicks on it. !param swing_door (Door) The master door to mimic. ]] function SwingDoor:setAsSlave(swing_door) self.master = swing_door end -- Depending on if this is a master or slave different onClick functions are called. function SwingDoor:onClick(ui, button) if self.is_master then Door.onClick(self, ui, button) elseif self.master then Door.onClick(self.master, ui, button) end end -- Depending on if this is a master or slave update the correct information. function SwingDoor:updateDynamicInfo() if self.is_master then Door.updateDynamicInfo(self) elseif self.master then Door.updateDynamicInfo(self.master) end end -- Depending on if this is a master or slave show the correct information. function SwingDoor:getDynamicInfo() return self.master and self.master.dynamic_info or self.dynamic_info end --[[ Tell the associated slave door to start swinging. !param direction (string) The direction in which to swing. Allowed values are "in" and "out". ]] function SwingDoor:swingSlave(direction) local flags = (self.direction == "east" or self.direction == "west") and 1 or 0 local anim = 2034 if direction == "in" then anim = 2032 end self:swing(anim, flags) end --[[ Makes the pair of swing doors start swinging in the correct fashion. !param direction (string) The direction in which to swing. Allowed values are "in" and "out". !param length (integer) How long the swing animation is for the entering/leaving entity. ]] function SwingDoor:swingDoors(direction, length) -- First tell the slave door to start swinging self.slave:swingSlave(direction) -- Then wait for a while before flapping back this door local --[[persistable:swing_door_waiting]] function callback() local flags = (self.direction == "east" or self.direction == "west") and 1 or 0 local anim = 2052 if direction == "in" then anim = 2048 end self:swing(anim, flags) end self:setTimer(length, callback) self.ticks = true end --[[ The actual swinging is done in this class. !param anim (integer) The animation to use. !param flags (integer) Flags, if any, associated with the animation. ]] function SwingDoor:swing(anim, flags) self:setAnimation(anim, flags) self.ticks = true local --[[persistable:swing_door_opening]] function callback() self:setAnimation(self.old_anim, self.old_flags) self.ticks = false if self.is_master then -- We're now ready to let another humanoid walk through self:removeUser() self:getRoom():tryAdvanceQueue() end end self:setTimer(self.world:getAnimLength(anim), callback) end function SwingDoor:getWalkableTiles() if not self.is_master then return {} end local x, y = self.tile_x, self.tile_y if self.direction == "west" then return { {x-1, y-1}, {x, y-1}, {x-1, y }, {x, y }, {x-1, y+1}, {x, y+1}, } else return { {x-1, y-1}, {x, y-1}, {x+1, y-1}, {x-1, y }, {x, y }, {x+1, y }, } end end return object CorsixTH-0.61/CorsixTH/Lua/objects/drinks_machine.lua000066400000000000000000000075541321660673500225250ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "drinks_machine" object.thob = 7 object.name = _S.object.drinks_machine object.tooltip = _S.tooltip.objects.drinks_machine object.ticks = false object.corridor_object = 3 object.build_preview_animation = 906 object.multiple_users_allowed = true object.dynamic_info = true object.idle_animations = { south = 170, west = 172, north = 174, east = 176, } object.usage_animations = { south = { in_use = { ["Standard Male Patient" ] = 190, ["Standard Female Patient" ] = 250, ["Slack Female Patient" ] = 250, ["Transparent Male Patient" ] = 1112, ["Slack Male Patient" ] = 1532, ["Invisible Patient" ] = 1804, ["Alternate Male Patient" ] = 2756, ["Transparent Female Patient"] = 3060, -- is 426 an initial try at this? ["Chewbacca Patient" ] = 3768, ["Elvis Patient" ] = 198, ["Alien Male Patient" ] = 190, ["Alien Female Patient" ] = 250, }, }, east = { in_use = { ["Standard Male Patient" ] = 196, ["Standard Female Patient" ] = 256, ["Slack Female Patient" ] = 256, ["Transparent Male Patient" ] = 1118, ["Slack Male Patient" ] = 1538, ["Invisible Patient" ] = 1810, ["Alternate Male Patient" ] = 2762, ["Transparent Female Patient"] = 3066, ["Chewbacca Patient" ] = 3774, ["Elvis Patient" ] = 204, ["Alien Male Patient" ] = 196, ["Alien Female Patient" ] = 256, }, }, west = { in_use = { ["Standard Male Patient" ] = 192, ["Standard Female Patient" ] = 252, ["Slack Female Patient" ] = 252, ["Transparent Male Patient" ] = 1114, ["Slack Male Patient" ] = 1534, ["Invisible Patient" ] = 1806, ["Alternate Male Patient" ] = 2758, ["Transparent Female Patient"] = 3062, ["Chewbacca Patient" ] = 3770, ["Elvis Patient" ] = 200, ["Alien Male Patient" ] = 192, ["Alien Female Patient" ] = 252, }, }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, -1, only_passable = true} }, use_position = "passable", added_animation_offset_while_in_use = {-1, 0}, }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, south = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, west = { footprint = { {0, 0, complete_cell = true}, {-1, 0, only_passable = true} }, use_position = "passable", }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/fire_extinguisher.lua000066400000000000000000000032531321660673500232620ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "extinguisher" object.thob = 43 object.name = _S.object.fire_extinguisher object.tooltip = _S.tooltip.objects.fire_extinguisher object.ticks = false object.corridor_object = 4 object.class = "SideObject" object.build_preview_animation = 912 object.idle_animations = { north = 178, east = 468, south = 470, } object.orientations = { north = { footprint = { {0, 0, only_side = true} } }, east = { footprint = { {0, 0, only_side = true} } }, south = { footprint = { {0, 0, only_side = true} } }, west = { footprint = { {0, 0, only_side = true} } }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/gates_to_hell.lua000066400000000000000000000042111321660673500223430ustar00rootroot00000000000000--[[ Copyright (c) 2013 Luís "Driver" Duarte Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "gates_to_hell" object.name = "Gates to Hell" object.thob = 48 object.ticks = true object.walk_in_to_use = true object.idle_animations = { south = 1602, east = 1602 } object.usage_animations = { south = { in_use = { ["Standard Male Patient"] = 4560, }, }, east = { in_use = { ["Standard Male Patient"] = 4560, }, } } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.usage_animations.south.in_use, 0, {0,0}) anim_mgr:setMarker(object.usage_animations.east.in_use, 0, {0,0}) -- Orientation directions are relative to the patient's death location: object.orientations = { south = { use_position = {0, 0}, footprint = { {1, 0, only_passable = true}, {0, 0, complete_cell = true}, {-1, 0, only_passable = true} }, use_animate_from_use_position = false }, east = { use_position = {0, 0}, footprint = { {0, -1, only_passable = true}, {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_animate_from_use_position = false } } return object CorsixTH-0.61/CorsixTH/Lua/objects/helicopter.lua000066400000000000000000000066651321660673500217070ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "helicopter" object.thob = 63 object.name = "helicopter" -- Not seen anywhere object.class = "Helicopter" object.ticks = true object.idle_animations = { north = 2456, } object.orientations = { north = { -- Helicopter is outside the hospital, so does not need a footprint footprint = {} }, } --! An `Object` which drops of emergency patients. class "Helicopter" (Object) ---@type Helicopter local Helicopter = _G["Helicopter"] function Helicopter:Helicopter(world, object_type, hospital, direction, etc) local x, y = hospital:getHeliportPosition() -- Helicoptor needs to land below tile to be positioned correctly y = y + 1 self:Object(world, object_type, x, y, direction, etc) self.th:makeInvisible() self:setPosition(0, -600) self.phase = -60 self.hospital = hospital -- TODO: Shadow: 3918 hospital.emergency_patients = {} end function Helicopter:tick() local phase = self.phase if phase == 0 then self.th:makeVisible() self:setSpeed(0, 10) elseif phase == 60 then self:setSpeed(0, 0) self.spawned_patients = 0 elseif phase == 80 then if self.spawned_patients < self.hospital.emergency.victims then self:spawnPatient() phase = 60 end elseif phase == 87 then self:setSpeed(0, -10) elseif phase == 147 then self.world:destroyEntity(self) end self.phase = phase + 1 Object.tick(self) end --! When the helicopter has landed this method is called each time a patient should spawn from it. function Helicopter:spawnPatient() local hospital = self.hospital self.spawned_patients = self.spawned_patients + 1 local patient = self.world:newEntity("Patient", 2) patient:setDisease(hospital.emergency.disease) patient.diagnosis_progress = 1 patient:setDiagnosed() patient:setMood("emergency", "activate") patient.is_emergency = self.spawned_patients hospital.emergency_patients[#hospital.emergency_patients + 1] = patient local x, y = hospital:getHeliportSpawnPosition() patient:setNextAction(SpawnAction("spawn", {x = x, y = y}):setOffset({y = 1})) patient:setHospital(hospital) -- TODO: If new combined diseases are added this will not work correctly anymore. patient.cure_rooms_visited = #patient.disease.treatment_rooms - 1 local no_of_rooms = #patient.disease.treatment_rooms patient:queueAction(SeekRoomAction(patient.disease.treatment_rooms[no_of_rooms])) end return object CorsixTH-0.61/CorsixTH/Lua/objects/lecture_chair.lua000066400000000000000000000044311321660673500223470ustar00rootroot00000000000000--[[ Copyright (c) 2010 Justin Pasher Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "lecture_chair" object.thob = 36 object.name = _S.object.lecture_chair object.tooltip = _S.tooltip.objects.lecture_chair object.ticks = false object.build_preview_animation = 5084 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = { north = 2626, south = 2626, } object.usage_animations = copy_north_to_south { north = { begin_use = { Doctor = 2632 }, in_use = { Doctor = 2622 }, finish_use = { Doctor = 2636 }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2 = {0, 0}, {-1, -0.1} anim_mgr:setMarker(object.usage_animations.north.begin_use, 0, kf1, 10, kf2) anim_mgr:setMarker(object.usage_animations.north.in_use, kf2) anim_mgr:setMarker(object.usage_animations.north.finish_use, 0, kf2, 11, kf2, 18, kf1) object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, early_list = true, }, east = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/litter.lua000066400000000000000000000112211321660673500210340ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" local object = {} object.id = "litter" object.thob = 62 -- previously unused object.name = _S.object.litter -- currently not shown anywhere object.tooltip = _S.tooltip.objects.litter -- currently not shown anywhere object.ticks = false object.class = "Litter" local litter_types = {} -- All types of "litter", i.e. small objects on the ground or walls. litter_types["pee"] = 2248 litter_types["dead_rat"] = 2242 litter_types["puke"] = 2060 litter_types["soda_can"] = 1894 litter_types["banana"] = 1896 litter_types["paper"] = 1898 litter_types["bottle"] = 1900 litter_types["soot_floor"] = 3416 litter_types["soot_wall"] = 3408 litter_types["soot_window"] = 3412 -- When randomising litter, only these should come up. litter_types[1] = 1894 litter_types[2] = 1896 litter_types[3] = 1898 litter_types[4] = 1900 class "Litter" (Entity) ---@type Litter local Litter = _G["Litter"] function Litter:Litter(world, object_type, x, y, direction, etc) local th = TH.animation() self:Entity(th) self.ticks = object_type.ticks self.object_type = object_type self.world = world self:setTile(x, y) end function Litter:setTile(x, y) Entity.setTile(self, x, y) if x then self.world:addObjectToTile(self, x, y) end end -- Litter is an Entity and not an Object so it does not inherit this method -- This is an (effective) hack, see issue 918 --cgj function Litter:getWalkableTiles() --emulate Object:getWalkableTiles() and return the tile (x,y) local tiles = {} tiles[0] = { self.tile_x, self.tile_y } return tiles end function Litter:setLitterType(anim_type, mirrorFlag) if anim_type then local anim = litter_types[anim_type] if anim then self:setAnimation(anim, mirrorFlag) else error("Unknown litter type") end if self:isCleanable() then local hospital = self.world:getHospital(self.tile_x, self.tile_y) hospital:addHandymanTask(self, "cleaning", 1, self.tile_x, self.tile_y) end end end --! Remove the litter from the world. function Litter:remove() assert(self:isCleanable()) self.world:removeObjectFromTile(self, self.tile_x, self.tile_y) local hospital = self.world:getHospital(self.tile_x, self.tile_y) local taskIndex = hospital:getIndexOfTask(self.tile_x, self.tile_y, "cleaning", self) hospital:removeHandymanTask(taskIndex, "cleaning") self.world:destroyEntity(self) end function Litter:getDrawingLayer() return 0 end function Litter:vomitInducing() local anim = self.animation_idx if anim == litter_types["puke"] or anim == litter_types["pee"] or anim == litter_types["dead_rat"] then return true end return false end function Litter:isCleanable() return self:vomitInducing() or self:anyLitter() end function Litter:anyLitter() local anim = self.animation_idx if anim == litter_types["soda_can"] or anim == litter_types["banana"] or anim == litter_types["paper"] or anim == litter_types["bottle"] then return true end return false end function Litter:afterLoad(old, new) if old < 52 then if self.tile_x then self.world.hospitals[1]:addHandymanTask(self, "cleaning", 1, self.tile_x, self.tile_y) else -- This object was not properly removed from the world. self.world:destroyEntity(self) end end if old < 54 then if not self:isCleanable() then local hospital = self.world:getHospital(self.tile_x, self.tile_y) local taskIndex = hospital:getIndexOfTask(self.tile_x, self.tile_y, "cleaning", self) hospital:removeHandymanTask(taskIndex, "cleaning") end end if old < 121 then self.ticks = object.ticks end end return object CorsixTH-0.61/CorsixTH/Lua/objects/loo.lua000066400000000000000000000121711321660673500203270ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "loo" object.thob = 51 object.name = _S.object.toilet object.tooltip = _S.tooltip.objects.toilet object.ticks = false object.build_preview_animation = 5098 object.dynamic_info = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1760, } object.usage_animations = copy_north_to_south { north = { begin_use = { ["Standard Male Patient" ] = 1712, ["Standard Female Patient" ] = 3132, ["Slack Female Patient" ] = 3132, ["Transparent Male Patient" ] = 4388, ["Slack Male Patient" ] = 4292, ["Invisible Patient" ] = 4256, ["Alternate Male Patient" ] = 4520, ["Transparent Female Patient"] = 4432, ["Chewbacca Patient" ] = 4158, ["Elvis Patient" ] = 950, ["Alien Male Patient" ] = 1712, ["Alien Female Patient" ] = 3132, }, begin_use_2 = { ["Standard Male Patient" ] = 1716, ["Standard Female Patient" ] = 3136, ["Slack Female Patient" ] = 3136, ["Transparent Male Patient" ] = 4392, ["Slack Male Patient" ] = 4296, ["Invisible Patient" ] = 4260, ["Alternate Male Patient" ] = 4524, ["Transparent Female Patient"] = 4436, ["Chewbacca Patient" ] = 4162, ["Elvis Patient" ] = 954, ["Alien Male Patient" ] = 1716, ["Alien Female Patient" ] = 3132, }, in_use = { ["Standard Male Patient" ] = {1728, 1732}, ["Standard Female Patient" ] = 3144, ["Slack Female Patient" ] = 3144, ["Transparent Male Patient" ] = 4400, ["Slack Male Patient" ] = 4308, -- 4304 is bugged for layer 0, 6 ["Invisible Patient" ] = 4272, ["Alternate Male Patient" ] = 4528, ["Transparent Female Patient"] = 4440, ["Chewbacca Patient" ] = 4170, ["Elvis Patient" ] = 962, ["Alien Male Patient" ] = {1728, 1732}, ["Alien Female Patient" ] = 3144, }, finish_use = { ["Standard Male Patient" ] = 1740, ["Standard Female Patient" ] = 3152, ["Slack Female Patient" ] = 3152, ["Transparent Male Patient" ] = 4404, ["Slack Male Patient" ] = 4316, ["Invisible Patient" ] = 4280, ["Alternate Male Patient" ] = 4536, ["Transparent Female Patient"] = 4444, ["Chewbacca Patient" ] = 4174, ["Elvis Patient" ] = 966, ["Alien Male Patient" ] = 1740, ["Alien Female Patient" ] = 3152, }, finish_use_2 = { ["Standard Male Patient" ] = 1744, ["Standard Female Patient" ] = 3156, ["Slack Female Patient" ] = 3156, ["Transparent Male Patient" ] = 4408, ["Slack Male Patient" ] = 4320, ["Invisible Patient" ] = 4284, ["Alternate Male Patient" ] = 4540, ["Transparent Female Patient"] = 4448, ["Chewbacca Patient" ] = 4740, ["Elvis Patient" ] = 1158, ["Alien Male Patient" ] = 1744, ["Alien Female Patient" ] = 3156, }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2 = {0, 0}, {-0.1, -0.9} anim_mgr:setMarker(object.usage_animations.north.begin_use, 1, kf1, 6, kf2) kf1 = {-0.1, -0.9} anim_mgr:setMarker(object.usage_animations.north.begin_use_2, kf1) anim_mgr:setMarker(object.usage_animations.north.in_use, kf1) anim_mgr:setMarker(object.usage_animations.north.finish_use, kf1) kf1, kf2 = {-0.1, -0.9}, {0, 0} anim_mgr:setMarker(object.usage_animations.north.finish_use_2, 0, kf1, 1, kf1, 6, kf2) object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/000077500000000000000000000000001321660673500206205ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/objects/machines/blood_machine.lua000066400000000000000000000116401321660673500241100ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "blood_machine" object.thob = 42 object.research_fallback = 37 object.research_category = "diagnosis" object.name = _S.object.blood_machine object.tooltip = _S.tooltip.objects.blood_machine object.ticks = false object.build_preview_animation = 5094 object.default_strength = 12 object.crashed_animation = 3372 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2228, } -- Note that for this particular machine the staff is the primary user, not the patient -- This was done in order to be able to let the patient be visible a while longer. object.multi_usage_animations = { ["Doctor - Standard Male Patient"] = copy_north_to_south { north = { begin_use = 2232, -- empty door opened begin_use_2 = 2236, -- empty chair goes out begin_use_3 = 2554, -- Patient invited onto machine begin_use_4 = 2220, -- The chair goes in begin_use_5 = 2224, -- door closes in_use = 2566, -- The machine does its work TODO: 2562, 2574 finish_use = 2252, -- The door is opened finish_use_2 = 2256, -- Patient comes out again finish_use_3 = 2558, -- Stands up finish_use_4 = 2204, -- empty chair in finish_use_5 = 2274, -- empty door closed }, }, ["Doctor - Standard Female Patient"] = copy_north_to_south { north = { begin_use = 2232, -- empty door opened begin_use_2 = 2236, -- empty chair goes out begin_use_3 = 4614, -- Patient invited onto machine 3224 begin_use_4 = 3232, -- The chair goes in begin_use_5 = 3236, -- door closes in_use = 2566, -- The machine does its work TODO: 2562, 2574 finish_use = 1172, -- The door is opened finish_use_2 = 4738, -- Patient comes out again, 4734 with shadow finish_use_3 = 4618, -- Stands up 3228 finish_use_4 = 2204, -- empty chair in finish_use_5 = 2274, -- empty door closed }, }, ["Doctor - Slack Male Patient"] = copy_north_to_south { -- Only for baldness north = { begin_use = 2232, -- empty door opened begin_use_2 = 2236, -- empty chair goes out begin_use_3 = 5146, -- Patient invited onto machine begin_use_4 = 5150, -- The chair goes in begin_use_5 = 2224, -- door closes in_use = 2566, -- The machine does its work TODO: 2562, 2574 finish_use = 2252, -- The door is opened finish_use_2 = 5154, -- Patient comes out again finish_use_3 = 622, -- Stands up finish_use_4 = 2204, -- empty chair in finish_use_5 = 2274, -- empty door closed }, }, } object.usage_animations = copy_north_to_south { north = {in_use = {["Handyman"] = {3498, 3484}}} } object.orientations = { north = { handyman_position = {0, -1}, use_position_secondary = {1, 0}, use_position = {0, -1}, footprint = { {-1, -1, only_passable = true, need_east_side = true, need_west_side = true}, {0, -1, only_passable = true, need_north_side = true}, {-2, 0, need_south_side = true, need_north_side = true}, {-1, 0}, {0, 0, complete_cell = true}, {1, 0, only_passable = true}, {-1, 1, need_east_side = true, need_west_side = true} } }, east = { handyman_position = {-1, 0}, use_position_secondary = {0, 1}, use_position = {-1, 0}, footprint = { {0, -2, need_east_side = true, need_west_side = true}, {-1, -1, only_passable = true, complete_cell = true}, {0, -1}, {1, -1, need_south_side = true, need_north_side = true}, {-1, 0, only_passable = true, need_west_side = true}, {0, 0, complete_cell = true}, {0, 1, only_passable = true} } }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-1.5, -0.8}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/cardio.lua000066400000000000000000000102761321660673500225720ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "cardio" object.thob = 13 object.research_fallback = 38 object.research_category = "diagnosis" object.name = _S.object.cardio object.tooltip = _S.tooltip.objects.cardio object.ticks = false object.build_preview_animation = 918 object.default_strength = 12 object.crashed_animation = 3308 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 648, } object.usage_animations = copy_north_to_south { north = { in_use = { ["Handyman"] = 890 }, finish_use = { ["Handyman"] = 894 }, }, } object.multi_usage_animations = { ["Stripped Male Patient - Doctor"] = copy_north_to_south { north = { begin_use = 1018, in_use = 652, finish_use = 3282, secondary = { begin_use = 1030, in_use = 656, finish_use = 1030, }, }, }, ["Stripped Female Patient - Doctor"] = copy_north_to_south { north = { begin_use = 3008, in_use = 2840, finish_use = 4556, secondary = { begin_use = 1030, in_use = 656, finish_use = 1030, }, }, }, ["Stripped Male Patient 2 - Doctor"] = copy_north_to_south { north = { begin_use = 1018, in_use = 652, finish_use = 3282, secondary = { begin_use = 1030, in_use = 656, finish_use = 1030, }, }, }, ["Stripped Female Patient 2 - Doctor"] = copy_north_to_south { north = { begin_use = 3008, in_use = 2840, finish_use = 4556, secondary = { begin_use = 1030, in_use = 656, finish_use = 1030, }, }, }, ["Stripped Male Patient 3 - Doctor"] = copy_north_to_south { north = { begin_use = 1018, in_use = 652, finish_use = 3282, secondary = { begin_use = 1030, in_use = 656, finish_use = 1030, }, }, }, ["Stripped Female Patient 3 - Doctor"] = copy_north_to_south { north = { begin_use = 3008, in_use = 2840, finish_use = 4556, secondary = { begin_use = 1030, in_use = 656, finish_use = 1030, }, }, }, } object.orientations = { north = { footprint = { {-1, -1, complete_cell = true}, {-1, 0, complete_cell = true}, {1, -1, only_passable = true}, {0, -1, need_north_side = true}, {0, 0, only_passable = true} }, render_attach_position = {-1, 0}, use_position = {1, -1}, use_position_secondary = {0, 0}, added_handyman_animate_offset_while_in_use = {1, -1}, }, east = { footprint = { {-1, -1, complete_cell = true}, {-1, 0}, {0, -1, complete_cell = true}, {0, 0, only_passable = true}, {-1, 1, only_passable = true} }, render_attach_position = {0, -1}, use_position = {-1, 1}, use_position_secondary = {0, 0}, added_handyman_animate_offset_while_in_use = {-1, 1}, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-0.9, -0.9}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/cast_remover.lua000066400000000000000000000103161321660673500240150ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "cast_remover" object.thob = 24 object.research_category = "cure" object.research_fallback = 9 object.name = _S.object.cast_remover object.tooltip = _S.tooltip.objects.cast_remover object.ticks = false object.build_preview_animation = 5072 object.default_strength = 10 object.crashed_animation = 3388 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2492, } object.walk_in_to_use = true -- This is only considered by use_object, not multi_use_object. object.usage_animations = copy_north_to_south { north = { in_use = {["Handyman"] = 3514}, }, } object.multi_usage_animations = { ["Alternate Male Patient - Nurse"] = copy_north_to_south { north = { begin_use = 2720, -- Patient invited onto machine begin_use_2 = 2696, -- Machine closes begin_use_3 = 2692, -- Nurse introduces the almighty black bucket in_use = 2688, -- The machine spits in the bucket finish_use = 3662, -- Nurse takes the bucket again (different tile than 3658!) finish_use_2 = 3658, -- The machine opens and the patient stands up }, }, ["Standard Female Patient - Nurse"] = copy_north_to_south { north = { begin_use = 4658, -- Patient invited onto machine begin_use_2 = 4666, -- Machine closes begin_use_3 = 4670, -- Nurse introduces the almighty black bucket in_use = 4674, -- The machine spits in the bucket finish_use = 5112, -- Nurse takes the bucket again finish_use_2 = 4682, -- The machine opens up and patient leaves }, }, } object.orientations = { north = { use_position = {0, 0}, handyman_position = {{0, -2}, {-1, -1}}, walk_in_tile = {0, -1}, use_position_secondary = {0, -1}, finish_use_position_secondary = {1, -1}, footprint = { {-1, -1, complete_cell = true}, {0, -1, only_passable = true}, {1, -1, only_passable = true}, {-1, 0, complete_cell = true}, {0, 0, only_passable = true, complete_cell = true}, {-1, 1, only_passable = true, need_west_side = true}, {-1, -2, only_passable = true, invisible = true, optional = true}, {-2, -1, only_passable = true, invisible = true, optional = true} }, list_bottom = true, render_attach_position = {-1, 1}, }, east = { use_position = {0, 0}, handyman_position = {{-1, -1}, {-2, 0}}, walk_in_tile = {-1, 0}, use_position_secondary = {-1, 0}, finish_use_position_secondary = {-1, 1}, footprint = { {-1, -1}, {0, -1, complete_cell = true}, {1, -1, only_passable = true, need_north_side = true}, {-1, 0, only_passable = true}, {0, 0, only_passable = true, complete_cell = true}, {-1, 1, only_passable = true}, {-2, -1, only_passable = true, invisible = true, optional = true}, {-1, -2, only_passable = true, invisible = true, optional = true} }, early_list = true, list_bottom = true, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-1.6, -0.8}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/dna_fixer.lua000066400000000000000000000064401321660673500232660ustar00rootroot00000000000000--[[ Copyright (c) 2011 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "dna_fixer" object.thob = 23 object.research_fallback = 8 object.research_category = "cure" object.name = _S.object.dna_fixer object.tooltip = _S.tooltip.objects.dna_fixer object.ticks = false object.build_preview_animation = 5070 object.default_strength = 7 object.crashed_animation = 3376 -- TODO correct? object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end -- 2350 another idle? -- 3848, 3850, 3852 sparks during transformation? -- TODO: No repair animation?? object.idle_animations = copy_north_to_south { north = 3840, } object.usage_animations = copy_north_to_south { north = { -- NB: SOME (not all) of the animations are provided for east rather than north. There the mirror / mirror_morph flag is used. begin_use = { ["Standard Female Patient"] = 3614, ["Standard Male Patient" ] = 3614, }, in_use = { -- TODO fix the object being displayed in front of the other anim ["Standard Female Patient"] = {"morph", 3594, 1150, mirror_morph = true, object_visible = true, length = 10}, -- 3594 (normal) morph to 1150 (mirrored) ["Standard Male Patient" ] = {"morph", 3594, 3618, mirror_morph = true, object_visible = true, length = 10}, -- 3594 (normal) morph to 3618 (mirrored) }, finish_use = { -- Patient leaves machine, mirrored ["Standard Female Patient"] = {1154, mirror = true}, ["Standard Male Patient" ] = {3622, mirror = true}, }, }, } object.orientations = { north = { footprint = { {-2, -1, complete_cell = true}, {-1, -1, complete_cell = true}, {0, -1}, {-2, 0, complete_cell = true}, {-1, 0}, {0, 0, need_south_side = true}, {-1, 1, only_passable = true} }, use_position = "passable", early_list = true, }, east = { footprint = { {-1, -2, complete_cell = true}, {0, -2, complete_cell = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-1, 0}, {0, 0}, {1, -1, only_passable = true} }, use_position = "passable", }, } -- TODO --local anim_mgr = TheApp.animation_manager --anim_mgr:setMarker(object.idle_animations.north, {-1.3, -1.2}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/electrolyser.lua000066400000000000000000000065661321660673500240540ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "electrolyser" object.thob = 46 object.research_category = "cure" object.research_fallback = 3 object.name = _S.object.electrolyser object.tooltip = _S.tooltip.objects.electrolyser object.ticks = false object.build_preview_animation = 930 object.default_strength = 10 object.crashed_animation = 3300 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1262, } object.usage_animations = copy_north_to_south { north = { begin_use = { -- Patient invited onto machine ["Standard Female Patient"] = 1266, ["Standard Male Patient" ] = 1266, ["Handyman" ] = 3546, }, in_use = { -- Patient gets electrocuted ["Standard Female Patient"] = 1274, ["Standard Male Patient" ] = 1274, ["Handyman" ] = 3550, }, finish_use = { -- Patient sparks ["Standard Female Patient"] = 1278, ["Standard Male Patient" ] = 1278, ["Handyman" ] = 3554, }, finish_use_2 = { -- Hair falls off ["Standard Female Patient"] = 2940, ["Standard Male Patient" ] = 1286, }, finish_use_3 = { -- Patient leaves machine ["Standard Female Patient"] = 2944, ["Standard Male Patient" ] = 1294, }, }, } object.orientations = { north = { render_attach_position = {-1, -1}, footprint = { {-2, -2, need_west_side = true}, {-1, -2}, {0, -2, need_east_side = true}, {-2, -1, complete_cell = true}, {-1, -1}, {0, -1, complete_cell = true}, {-2, 0, complete_cell = true}, {-1, 0}, {0, 0, complete_cell = true}, {-1, 1, only_passable = true, need_south_side = true} }, use_position = "passable" }, east = { render_attach_position = {-1, -1}, footprint = { {-2, -2, need_north_side = true}, {-1, -2}, {0, -2, complete_cell = true}, {-2, -1}, {-1, -1}, {0, -1, complete_cell = true}, {-2, 0, need_south_side = true}, {-1, 0}, {0, 0, complete_cell = true}, {1, -1, only_passable = true, need_east_side = true} }, use_position = "passable" }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-1.3, -1.2}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/hair_restorer.lua000066400000000000000000000054041321660673500241760ustar00rootroot00000000000000--[[ Copyright (c) 2010 Miika-Petteri Matikainen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "hair_restorer" object.thob = 25 object.research_category = "cure" object.research_fallback = 10 object.name = _S.object.hair_restorer object.tooltip = _S.tooltip.objects.hair_restorer object.ticks = false object.build_preview_animation = 5074 object.default_strength = 8 object.crashed_animation = 5116 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2070, } object.usage_animations = copy_north_to_south { north = { begin_use = { -- Patient sits down ["Slack Male Patient"] = 2074 }, begin_use_2 = { -- Hair cap goes down ["Slack Male Patient"] = 2078 }, in_use = { -- Use animation ["Slack Male Patient"] = 2082, ["Handyman"] = 568 }, finish_use = { -- Hair cap goes up and patient stands up ["Slack Male Patient"] = 2086 }, }, } object.orientations = { north = { use_position = {0, 1}, handyman_position = {0, -1}, added_handyman_animate_offset_while_in_use = {0, 2}, finish_use_position = {0, 1}, footprint = { {0, -1, only_passable = true}, {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_animate_from_use_position = true, }, east = { use_position = {1, 0}, handyman_position = {-1, 0}, added_handyman_animate_offset_while_in_use = {2, 0}, finish_use_position = {1, 0}, footprint = { {-1, 0, only_passable = true}, {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_animate_from_use_position = true, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-1.0, -1.1}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/inflator.lua000066400000000000000000000065551321660673500231540ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "inflator" object.thob = 9 object.research_category = "cure" object.research_fallback = 2 object.name = _S.object.inflator object.tooltip = _S.tooltip.objects.inflator object.ticks = false object.build_preview_animation = 908 object.default_strength = 10 object.crashed_animation = 3362 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 572, } object.multi_usage_animations = { ["Standard Male Patient - Doctor"] = copy_north_to_south { north = { begin_use = 464, -- Patient invited onto machine begin_use_2 = 478, -- Doctor pops patient's head begin_use_3 = 482, -- Doctor moves to other side of machine in_use = 496, -- Doctor re-inflates head (do not loop) finish_use = 576, -- Patients walks off machine }, }, } object.usage_animations = copy_north_to_south { north = {in_use = {["Handyman"] = 3480}} } object.orientations = { north = { handyman_position = {1, -1}, use_position = {0, 1}, use_position_secondary = {-1, 1}, finish_use_position = {1, 0}, finish_use_position_secondary = {1, -1}, footprint = { {-1, -1}, {0, -1, need_north_side = true}, {1, -1, only_passable = true}, {-1, 0}, {0, 0}, {1, 0, only_passable = true}, {-1, 1, only_passable = true}, {0, 1, only_passable = true}, {1, 1, only_passable = true} }, }, east = { handyman_position = {-1, 1}, use_position = {1, 0}, use_position_secondary = {1, -1}, finish_use_position = {0, 1}, finish_use_position_secondary = {-1, 1}, footprint = { {-1, -1}, {0, -1}, {1, -1, only_passable = true}, {-1, 0, need_west_side = true}, {0, 0}, {1, 0, only_passable = true}, {-1, 1, only_passable = true}, {0, 1, only_passable = true}, {1, 1, only_passable = true} }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2 = {0, 1}, {0, 0} anim_mgr:setMarker(object.multi_usage_animations["Standard Male Patient - Doctor"].north.begin_use, 0, kf1, 5, kf2) kf1, kf2 = {0, 0}, {1, 0} anim_mgr:setMarker(object.multi_usage_animations["Standard Male Patient - Doctor"].north.finish_use, 1, kf1, 11, kf2) anim_mgr:setMarker(object.idle_animations.north, {-0.9, -1.0}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/jelly_moulder.lua000066400000000000000000000112521321660673500241720ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "jelly_moulder" object.thob = 47 object.research_category = "cure" object.research_fallback = 12 object.name = _S.object.jelly_moulder object.tooltip = _S.tooltip.objects.jelly_moulder object.ticks = false object.build_preview_animation = 928 object.default_strength = 7 object.crashed_animation = 3312 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1302, } -- Animations in order: -- male female -- idle 1302 -- patient enters room .. -- doctor goes to button, presses 1382 -- door opens 1310 -- patient climbs stairs 1334 3958 -- patient stands on top 1338 3962 (repeatable) NYI -- gets sucked in 1342 3966 -- floor opens 1314 -- floor stays open 1318 (repeatable) NYI -- skeleton rises 1322 -- door closes 1326 -- door stays closed 1330 (repeatable) NYI -- patient on skeleton 1346 3970 -- patient stands inside 1350 3974 (repeatable) NYI -- door opens 1354 3978 -- patient steps out 1358 3982 -- door closes 1306 object.walk_in_to_use = true -- This is only considered by use_object, not multi_use_object. object.usage_animations = copy_north_to_south { north = { in_use = {["Handyman"] = 3502}, -- (3508: duplicate with error?) }, } -- Note that for this particular machine the staff is the primary user, not the patient -- This was done in order to be able to let the patient be visible a while longer. object.multi_usage_animations = { ["Doctor - Standard Male Patient"] = copy_north_to_south { north = { begin_use = 1382, begin_use_2 = 1310, begin_use_3 = 1334, begin_use_4 = 1342, begin_use_5 = 1314, in_use = 1322, finish_use = 1326, finish_use_2 = 1346, finish_use_3 = 1354, finish_use_4 = 1358, finish_use_5 = 1306, }, }, ["Doctor - Standard Female Patient"] = copy_north_to_south { north = { begin_use = 1382, begin_use_2 = 1310, begin_use_3 = 3958, begin_use_4 = 3966, begin_use_5 = 1314, in_use = 1322, finish_use = 1326, finish_use_2 = 3970, finish_use_3 = 3978, finish_use_4 = 3982, finish_use_5 = 1306, }, }, } object.orientations = { north = { handyman_position = {2, -1}, walk_in_tile = {1, -1}, use_position = {-1, 1}, use_position_secondary = {1, -1}, finish_use_position = {-1, 1}, finish_use_position_secondary = {1, 0}, finish_use_orientation_secondary = "east", footprint = { {-1, -1}, {0, -1}, {1, -1, only_passable = true}, {-1, 0}, {0, 0, complete_cell = true}, {1, 0, only_passable = true}, {-1, 1, only_passable = true, need_east_side = true}, }, render_attach_position = {0, -1}, }, east = { handyman_position = {-1, 2}, walk_in_tile = {-1, 1}, use_position = {1, -1}, use_position_secondary = {-1, 1}, finish_use_position = {1, -1}, finish_use_position_secondary = {0, 1}, finish_use_orientation_secondary = "south", footprint = { {-1, -1}, {0, -1}, {1, -1, only_passable = true, need_south_side = true}, {-1, 0}, {0, 0, complete_cell = true}, {-1, 1, only_passable = true}, {0, 1, only_passable = true}, }, render_attach_position = {-1, 0}, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/operating_table.lua000066400000000000000000000077641321660673500245000ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "operating_table" object.slave_id = "operating_table_b" object.class = "OperatingTable" object.thob = 30 object.research_category = "cure" object.research_fallback = 19 -- Kidney beans object.name = _S.object.operating_table object.tooltip = _S.tooltip.objects.operating_table object.ticks = false object.build_preview_animation = 5080 object.default_strength = 8 object.crashed_animation = 3392 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2314, } object.usage_animations = copy_north_to_south { north = { in_use = { Handyman = 660, }, }, } object.multi_usage_animations = { ["Surgeon - Gowned Male Patient"] = copy_north_to_south { north = { begin_use = 2318, begin_use_2 = 2322, in_use = 2348, finish_use = 2346, finish_use_2 = 2338, secondary = { begin_use = 416, finish_use_2 = 416, }, }, }, ["Surgeon - Gowned Female Patient"] = copy_north_to_south { north = { begin_use = 2318, begin_use_2 = 2932, in_use = 2938, finish_use = 2936, finish_use_2 = 2338, secondary = { begin_use = 2886, finish_use_2 = 2886, }, }, }, } local anim_mgr = TheApp.animation_manager -- Slight hack: there seems to be no animation for a patient just lying on the -- table, so we take a duplicate of the animation for the patient leaving the -- table, and force its length to be 1, hence causing just the first frame to -- be used. anim_mgr:setAnimLength(2348, 1) anim_mgr:setAnimLength(2938, 1) -- Mood icon positions anim_mgr:setMarker(object.idle_animations.north, {-1.59, -2.41}) object.orientations = { north = { use_position = {-1, -2}, use_position_secondary = {-2, -1}, footprint = { {-2, -1, only_passable = true}, {-1, -1, complete_cell = true}, {-1, -2, only_passable = true}, {0, -1, complete_cell = true}, {0, -2, complete_cell = true}, {1, 0, complete_cell = true}, {1, -2, complete_cell = true}, {1, -1, only_passable = true}, }, render_attach_position = {0, -1}, slave_position = {1, -1}, }, east = { use_position = {-2, -1}, use_position_secondary = {-1, -2}, footprint = { {-1, -2, only_passable = true}, {-1, -1, complete_cell = true}, {-2, -1, only_passable = true}, {-1, 0, complete_cell = true}, {-2, 0, complete_cell = true}, {0, 1, complete_cell = true}, {-2, 1, complete_cell = true}, {-1, 1, only_passable = true}, }, slave_position = {-1, 1}, render_attach_position = {-1, 0}, }, } class "OperatingTable" (Machine) ---@type OperatingTable local OperatingTable = _G["OperatingTable"] OperatingTable:slaveMixinClass() function OperatingTable:machineUsed(...) if self.master then -- Is slave. Do nothing. else return Machine.machineUsed(self, ...) end end return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/operating_table_b.lua000066400000000000000000000035701321660673500247700ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "operating_table_b" object.class = "OperatingTable" object.thob = 12 object.name = _S.object.operating_table object.tooltip = _S.tooltip.objects.operating_table object.ticks = false object.crashed_animation = 0 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2310, } object.usage_animations = copy_north_to_south { north = { begin_use = { Surgeon = 2306 }, begin_use_2 = { Surgeon = 2330 }, in_use = { Surgeon = {4890, 2326} }, finish_use = { Surgeon = 2334 }, finish_use_2 = { Surgeon = 2342 }, } } object.orientations = { north = { use_position = {0, 0}, footprint = {}, }, east = { use_position = {0, 0}, footprint = {}, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/scanner.lua000066400000000000000000000205351321660673500227610ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "scanner" object.thob = 14 object.research_category = "diagnosis" object.research_fallback = 36 object.name = _S.object.scanner object.tooltip = _S.tooltip.objects.scanner object.ticks = false object.build_preview_animation = 920 object.default_strength = 12 object.crashed_animation = 3316 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1398, } --[[This is incomplete as the scanner and console should be in sync with each other i.e. Dr sits down and pushes some buttons and the scanner scans, the he pushes the lever and it will tip back etc.]] object.usage_animations = copy_north_to_south { north = { begin_use = { -- goes down ["Transparent Male Patient"] = 874, ["Chewbacca Patient"] = 1176, ["Stripped Male Patient"] = 1402, ["Stripped Female Patient"] = 1442, ["Stripped Male Patient 2"] = 1406, ["Stripped Female Patient 2"] = 1446, ["Stripped Male Patient 3"] = 1402, ["Stripped Female Patient 3"] = 1442, ["Elvis Patient"] = 4914, ["Transparent Female Patient"] = 4926, ["Invisible Patient"] = 4942, ["Alternate Male Patient"] = 4958, ["Slack Male Patient"] = 4974, ["Slack Female Patient"] = 5158, }, begin_use_2 = { -- stays down ["Transparent Male Patient"] = 874, ["Chewbacca Patient"] = 1176, ["Stripped Male Patient"] = 1402, ["Stripped Female Patient"] = 1442, ["Stripped Male Patient 2"] = 1410, ["Stripped Female Patient 2"] = 1450, ["Stripped Male Patient 3"] = 1402, ["Stripped Female Patient 3"] = 1442, ["Elvis Patient"] = 4914, ["Transparent Female Patient"] = 4926, ["Invisible Patient"] = 4942, ["Alternate Male Patient"] = 4958, ["Slack Male Patient"] = 4974, ["Slack Female Patient"] = 5158, ["Handyman"] = 564, }, begin_use_3 = { -- goes up ["Transparent Male Patient"] = 878, ["Chewbacca Patient"] = 1180, ["Stripped Male Patient"] = 1406, ["Stripped Female Patient"] = 1446, ["Stripped Male Patient 2"] = 1414, ["Stripped Female Patient 2"] = 1454, ["Stripped Male Patient 3"] = 1418, ["Stripped Female Patient 3"] = 1458, ["Elvis Patient"] = 4916, ["Transparent Female Patient"] = 4930, ["Invisible Patient"] = 4946, ["Alternate Male Patient"] = 4962, ["Slack Male Patient"] = 4978, ["Slack Female Patient"] = 5162, }, begin_use_4 = { -- stays up ["Transparent Male Patient"] = 886, ["Chewbacca Patient"] = 1188, ["Stripped Male Patient"] = 1410, ["Stripped Female Patient"] = 1450, ["Stripped Male Patient 2"] = 1402, ["Stripped Female Patient 2"] = 1442, ["Stripped Male Patient 3"] = 1422, ["Stripped Female Patient 3"] = 1462, ["Elvis Patient"] = 4922, ["Transparent Female Patient"] = 4938, ["Invisible Patient"] = 4954, ["Alternate Male Patient"] = 4970, ["Slack Male Patient"] = 4986, ["Slack Female Patient"] = 5166, }, begin_use_5 = { -- goes down/go back ["Transparent Male Patient"] = 882, ["Chewbacca Patient"] = 1184, ["Stripped Male Patient"] = 1414, ["Stripped Female Patient"] = 1454, ["Stripped Male Patient 2"] = 1418, ["Stripped Female Patient 2"] = 1458, ["Stripped Male Patient 3"] = 1426, ["Stripped Female Patient 3"] = 1466, ["Elvis Patient"] = 4918, ["Transparent Female Patient"] = 4934, ["Invisible Patient"] = 4950, ["Alternate Male Patient"] = 4966, ["Slack Male Patient"] = 4982, ["Slack Female Patient"] = 5170, }, finish_use = { -- stays down/stay back ["Transparent Male Patient"] = 874, ["Chewbacca Patient"] = 1176, ["Stripped Male Patient"] = 1402, ["Stripped Female Patient"] = 1442, ["Stripped Male Patient 2"] = 1422, ["Stripped Female Patient 2"] = 1462, ["Stripped Male Patient 3"] = 1430, ["Stripped Female Patient 3"] = 1470, ["Elvis Patient"] = 4914, ["Transparent Female Patient"] = 4926, ["Invisible Patient"] = 4942, ["Alternate Male Patient"] = 4958, ["Slack Male Patient"] = 4974, ["Slack Female Patient"] = 5158, }, finish_use_2 = { -- goes up/forwards scan ["Transparent Male Patient"] = 878, ["Chewbacca Patient"] = 1180, ["Stripped Male Patient"] = 1406, ["Stripped Female Patient"] = 1446, ["Stripped Male Patient 2"] = 1426, ["Stripped Female Patient 2"] = 1466, ["Stripped Male Patient 3"] = 1434, ["Stripped Female Patient 3"] = 1474, ["Elvis Patient"] = 4916, ["Transparent Female Patient"] = 4930, ["Invisible Patient"] = 4946, ["Alternate Male Patient"] = 4962, ["Slack Male Patient"] = 4978, ["Slack Female Patient"] = 5162, }, finish_use_3 = { -- goes down/stay forwards ["Transparent Male Patient"] = 886, ["Chewbacca Patient"] = 1188, ["Stripped Male Patient"] = 1410, ["Stripped Female Patient"] = 1450, ["Stripped Male Patient 2"] = 1430, ["Stripped Female Patient 2"] = 1470, ["Stripped Male Patient 3"] = 1422, ["Stripped Female Patient 3"] = 1462, ["Elvis Patient"] = 4922, ["Transparent Female Patient"] = 4938, ["Invisible Patient"] = 4954, ["Alternate Male Patient"] = 4970, ["Slack Male Patient"] = 4986, ["Slack Female Patient"] = 5166, }, finish_use_4 = { -- stays down/reverse scan ["Transparent Male Patient"] = 882, ["Chewbacca Patient"] = 1184, ["Stripped Male Patient"] = 1414, ["Stripped Female Patient"] = 1454, ["Stripped Male Patient 2"] = 1434, ["Stripped Female Patient 2"] = 1474, ["Stripped Male Patient 3"] = 1422, ["Stripped Female Patient 3"] = 1462, ["Elvis Patient"] = 4918, ["Transparent Female Patient"] = 4934, ["Invisible Patient"] = 4950, ["Alternate Male Patient"] = 4966, ["Slack Male Patient"] = 4982, ["Slack Female Patient"] = 5170, }, finish_use_5 = { -- goes up/tips forward ["Transparent Male Patient"] = 874, ["Chewbacca Patient"] = 1176, ["Stripped Male Patient"] = 1402, ["Stripped Female Patient"] = 1442, ["Stripped Male Patient 2"] = 1438, ["Stripped Female Patient 2"] = 1478, ["Stripped Male Patient 3"] = 1438, ["Stripped Female Patient 3"] = 1478, ["Elvis Patient"] = 4914, ["Transparent Female Patient"] = 4926, ["Invisible Patient"] = 4942, ["Alternate Male Patient"] = 4958, ["Slack Male Patient"] = 4974, ["Slack Female Patient"] = 5158, }, }, } object.orientations = { north = { use_position = {0, 0}, footprint = { {-2, -1}, {-1, -1}, {0, -1}, {-2, 0}, {-1, 0, need_south_side = true}, {0, 0, complete_cell = true, only_passable = true} }, render_attach_position = {0, -1}, }, east = { use_position = {0, 0}, footprint = { {-1, -2} , {0, -2}, {-1, -1}, {0, -1, need_east_side = true}, {-1, 0}, {0, 0, complete_cell = true, only_passable = true} }, render_attach_position = {-1, 0}, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-1.1, -1.1}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/shower.lua000066400000000000000000000056371321660673500226450ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "shower" object.thob = 54 object.research_category = "cure" object.research_fallback = 6 object.name = _S.object.shower object.tooltip = _S.tooltip.objects.shower object.ticks = false object.build_preview_animation = 5100 object.default_strength = 10 object.crashed_animation = 3380 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2014, } object.usage_animations = copy_north_to_south { north = { begin_use = { ["Standard Male Patient"] = 2018, ["Standard Female Patient"] = 2852, ["Handyman"] = 3534, }, in_use = { ["Standard Male Patient"] = 2150, ["Standard Female Patient"] = 2856, ["Handyman"] = 3538, }, finish_use = { ["Standard Male Patient"] = 2026, ["Standard Female Patient"] = 2860, ["Handyman"] = 3542, }, }, } object.orientations = { north = { use_position = {-1, 1}, footprint = { {-2, -2, complete_cell = true}, {-1, -2, complete_cell = true}, {0, -2}, {-2, -1, complete_cell = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {-2, 0, complete_cell = true}, {-1, 0, complete_cell = true}, {0, 0, complete_cell = true}, {-1, 1, only_passable = true}, }, render_attach_position = {-1, 0}, }, east = { use_position = {1, -1}, footprint = { {-2, -2, complete_cell = true}, {-1, -2, complete_cell = true}, {0, -2, complete_cell = true}, {-2, -1, complete_cell = true}, {-1, -1, complete_cell = true}, {0, -1, complete_cell = true}, {1, -1, only_passable = true}, {-2, 0}, {-1, 0, complete_cell = true}, {0, 0, complete_cell = true}, }, render_attach_position = {-1, 0}, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/slicer.lua000066400000000000000000000054201321660673500226050ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "slicer" object.thob = 26 object.research_category = "cure" object.research_fallback = 7 object.name = _S.object.slicer object.tooltip = _S.tooltip.objects.slicer object.ticks = false object.build_preview_animation = 932 object.default_strength = 8 object.crashed_animation = 3400 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1386, } object.usage_animations = copy_north_to_south { north = { in_use = {["Handyman"] = 3490}, }, } object.multi_usage_animations = { ["Slack Male Patient - Doctor"] = copy_north_to_south { north = { in_use = 1390, -- Patient gets the tongue drawn out }, }, ["Slack Female Patient - Doctor"] = copy_north_to_south { north = { in_use = 1394, -- Patient gets the tongue drawn out }, }, } object.orientations = { north = { footprint = { {-1, -1, only_passable = true}, {-1, 0}, {-1, 1}, {0, -1, only_passable = true}, {0, 0, only_passable = true, need_east_side = true}, {0, 1, only_passable = true}, }, use_position = {0, 0}, handyman_position = {1, -1}, use_position_secondary = {-1, -1}, list_bottom = true, }, east = { footprint = { {-1, -1, only_passable = true}, {0, -1}, {1, -1}, {-1, 0, only_passable = true}, {0, 0, only_passable = true, need_south_side = true}, {1, 0, only_passable = true}, }, use_position = {0, 0}, handyman_position = {-1, 1}, use_position_secondary = {-1, -1}, early_list = true, list_bottom = true, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-1.2, -0.8}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/ultrascanner.lua000066400000000000000000000072021321660673500240250ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "ultrascanner" object.thob = 22 object.research_category = "diagnosis" object.research_fallback = 40 object.name = _S.object.ultrascanner object.tooltip = _S.tooltip.objects.ultrascanner object.ticks = false object.build_preview_animation = 5068 object.default_strength = 12 object.crashed_animation = 3396 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1556, --1556 or 3844? } object.usage_animations = copy_north_to_south { north = { in_use = { ["Handyman"] = 664, }, }, } object.multi_usage_animations = { ["Standard Male Patient - Doctor"] = copy_north_to_south { north = { begin_use = 1560, -- Patient climbs to the bed begin_use_2 = 1568, -- Doctor takes the instrument in_use = 1614, -- Doctor examines the patient finish_use = 1574, -- Doctor puts away the instrument finish_use_2 = 1610, -- Patient climbs out of the bed }, }, ["Standard Female Patient - Doctor"] = copy_north_to_south { north = { begin_use = 3084, -- Patient climbs to the bed begin_use_2 = 3092, -- Doctor takes the instrument in_use = 3096, -- Doctor examines the patient finish_use = 3100, -- Doctor puts away the instrument finish_use_2 = 1618, -- Patient climbs out of the bed }, }, } object.orientations = { north = { footprint = { {-1, -1, need_west_side = true}, {0, -1, complete_cell = true}, {1, -1, only_passable = true, complete_cell = true}, {-1, 0, only_passable =true, need_west_side = true}, {0, 0}, {1, 0, only_passable = true}, {-1, 1, only_passable = true, need_west_side = true}, {0, 1, only_passable = true} }, use_position = {-1, 0, need_west_side = true}, use_position_secondary = {1, -1}, handyman_position = {2, 0}, }, east = { render_attach_position = { {0, 0}, {1, 0}, {-1, 1} }, footprint = { {-1, -1, complete_cell = true}, {0, -1, only_passable = true, need_north_side = true}, {1, -1, only_passable = true, need_north_side = true}, {-1, 0, complete_cell = true}, {0, 0}, {1, 0, only_passable = true}, {-1, 1, only_passable = true, complete_cell = true}, {0, 1, only_passable = true} }, use_position = {0, -1}, use_position_secondary = {-1, 1}, handyman_position = {0, 2}, list_bottom = true, }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-0.9, -0.9}) return object CorsixTH-0.61/CorsixTH/Lua/objects/machines/x_ray.lua000066400000000000000000000064251321660673500224540ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "x_ray" object.thob = 27 object.research_category = "diagnosis" object.research_fallback = 39 object.name = _S.object.x_ray object.tooltip = _S.tooltip.objects.x_ray object.ticks = false object.build_preview_animation = 5076 object.default_strength = 12 object.crashed_animation = 3384 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1988, } object.usage_animations = copy_north_to_south { north = { begin_use = { -- Patient walks into X-ray ["Standard Male Patient"] = 1964, ["Standard Female Patient"] = 2948, ["Slack Female Patient"] = 2948, ["Slack Male Patient"] = 5178, ["Elvis Patient"] = 5120, ["Chewbacca Patient"] = 5132, ["Invisible Patient"] = 614, ["Handyman"] = 3558, }, in_use = { -- Radiation ["Standard Male Patient"] = 1960, ["Standard Female Patient"] = 2952, ["Slack Female Patient"] = 2952, ["Slack Male Patient"] = 5174, ["Elvis Patient"] = 5128, ["Chewbacca Patient"] = 610, ["Invisible Patient"] = 5140, ["Handyman"] = 3562, }, finish_use = { -- Patient walks away ["Standard Male Patient"] = 1992, ["Standard Female Patient"] = 2956, ["Slack Female Patient"] = 2956, ["Slack Male Patient"] = 5182, ["Elvis Patient"] = 5124, ["Chewbacca Patient"] = 5136, -- or 5138? ["Invisible Patient"] = 618, ["Handyman"] = 3562, -- TODO: Another glitch in the original. This sprite is missing. }, }, } object.orientations = { north = { use_position = {1, -1}, render_attach_position = {-1, -1}, footprint = { {-2, -2}, {-1, -2}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1, only_passable = true}, {-2, 0}, {-1, 0}, {0, 0} } }, east = { use_position = {-1, 1}, render_attach_position = {-1, -1}, footprint = { {-2, -2}, {-1, -2}, {0, -2}, {-2, -1}, {-1, -1}, {0, -1}, {-1, 0}, {0, 0}, {-1, 1, only_passable = true} } }, } local anim_mgr = TheApp.animation_manager anim_mgr:setMarker(object.idle_animations.north, {-2, -2}) return object CorsixTH-0.61/CorsixTH/Lua/objects/op_sink1.lua000066400000000000000000000043711321660673500212640ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "op_sink1" object.slave_id = "op_sink2" object.class = "OperatingSink" object.thob = 33 object.name = _S.object.op_sink1 object.tooltip = _S.tooltip.objects.op_sink1 object.ticks = false object.walk_in_to_use = true object.show_in_town_map = true object.locked_to_wall = { -- permittable wall -> orientation north = "east", west = "north", } local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2354, } object.usage_animations = copy_north_to_south { north = { in_use = { Surgeon = 2362 } }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, -1, complete_cell = true}, {1, 0, only_passable = true, invisible = true}, }, use_position = {1, 0}, slave_position = {0, -1}, }, east = { footprint = { {0, 0, complete_cell = true}, {-1, 0, complete_cell = true}, {0, 1, only_passable = true, invisible = true}, }, use_position = {0, 1}, slave_position = {-1, 0}, }, } class "OperatingSink" (Object) ---@type OperatingSink local OperatingSink = _G["OperatingSink"] OperatingSink:slaveMixinClass() return object CorsixTH-0.61/CorsixTH/Lua/objects/op_sink2.lua000066400000000000000000000030141321660673500212560ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "op_sink2" object.class = "OperatingSink" object.thob = 34 object.name = _S.object.op_sink2 object.tooltip = _S.tooltip.objects.op_sink2 object.ticks = false object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2358, } object.orientations = { north = { footprint = {}, }, east = { footprint = {}, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/pharmacy_cabinet.lua000066400000000000000000000062331321660673500230310ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "pharmacy_cabinet" object.thob = 39 object.research_category = "cure" object.research_fallback = 13 -- Sleeping illness object.name = _S.object.pharmacy_cabinet object.tooltip = _S.tooltip.objects.pharmacy_cabinet object.ticks = false object.build_preview_animation = 5088 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1578, } local function anim_set(begin,finish,idle,in_use,idle2) return { begin_use = 1590, -- Nurse-only begin_use_2 = 1594, -- Nurse-only begin_use_3 = begin, in_use = 1666, -- Nurse-only finish_use = finish, finish_use_2 = 1598, -- Nurse-only secondary = { begin_use = idle, begin_use_2 = idle, in_use = in_use, finish_use_2 = idle2 or idle, }, } end object.multi_usage_animations = { ["Nurse - Standard Male Patient"] = copy_north_to_south { north = anim_set(1630, 1638, 26, 1662), }, ["Nurse - Standard Female Patient"] = copy_north_to_south { north = anim_set(3104, 3112, 10, 3108), }, ["Nurse - Invisible Patient"] = copy_north_to_south { north = anim_set(1704, 1638, 1842, {"morph", 1700, 1662, layers = "cured_layers"}, 26), }, ["Nurse - Transparent Male Patient"] = copy_north_to_south { north = anim_set(1686, 1638, 1074, {"morph", 1694, 1662}, 26), }, ["Nurse - Transparent Female Patient"] = copy_north_to_south { north = anim_set(3120, 3112, 3022, {"morph", 3124, 3108}, 10), }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true}, {0, 2, only_passable = true}, {-1, 1, only_passable = true} }, use_position = {0, 1}, use_position_secondary = {-1, 1}, use_animate_from_use_position = true, }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true}, {2, 0, only_passable = true}, {1, -1, only_passable = true} }, use_position = {1, 0}, use_position_secondary = {1, -1}, use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/plant.lua000066400000000000000000000244431321660673500206610ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "plant" object.thob = 45 object.name = _S.object.plant object.class = "Plant" object.tooltip = _S.tooltip.objects.plant object.ticks = false object.corridor_object = 7 object.build_preview_animation = 934 object.idle_animations = { north = 1950, south = 1950, east = 1950, west = 1950, } object.usage_animations = { north = { begin_use = { ["Handyman"] = {1972, object_visible = true} }, in_use = { ["Handyman"] = {1980, object_visible = true} }, }, east = { begin_use = { ["Handyman"] = {1974, object_visible = true} }, in_use = { ["Handyman"] = {1982, object_visible = true} }, }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true} }, use_position = {0, -1}, use_animate_from_use_position = true }, east = { footprint = { {0, 0, complete_cell = true} }, use_position = {-1, 0}, use_animate_from_use_position = true }, south = { footprint = { {0, 0, complete_cell = true} }, use_position = {0, -1}, use_animate_from_use_position = true }, west = { footprint = { {0, 0, complete_cell = true} }, use_position = {-1, 0}, use_animate_from_use_position = true }, } -- For litter: put broom back 356 -- take broom out: 1874 -- swoop: 1878 -- Frames for plant states are -- * healthy: 1950 -- * drooping1: 1951 -- * drooping2: 1952 -- * dying: 1953 -- * dead: 1954 local days_between_states = 75 -- days before we reannouncing our watering status if we were unreachable local days_unreachable = 10 --! An `Object` which needs watering now and then. class "Plant" (Object) ---@type Plant local Plant = _G["Plant"] function Plant:Plant(world, object_type, x, y, direction, etc) -- It doesn't matter which direction the plant is facing. It will be rotated so that an approaching -- handyman uses the correct usage animation when appropriate. self:Object(world, object_type, x, y, direction, etc) self.current_state = 0 self.base_frame = self.th:getFrame() self.days_left = days_between_states self.unreachable = false self.unreachable_counter = days_unreachable end --! Goes one step forward (or backward) in the states of the plant. --!param restoring (boolean) If true the plant improves its health instead of drooping. function Plant:setNextState(restoring) if restoring then if self.current_state > 0 then self.current_state = self.current_state - 1 end elseif self.current_state < 5 then self.current_state = self.current_state + 1 end self.th:setFrame(self.base_frame + self.current_state) end local plant_restoring; plant_restoring = permanent"plant_restoring"( function(plant) local phase = plant.phase plant:setNextState(true) if phase > 0 then plant.phase = phase - 1 plant:setTimer(math.floor(14 / plant.cycles), plant_restoring) else plant.ticks = false end end) --! Restores the plant to its initial state. (i.e. healthy) function Plant:restoreToFullHealth() self.ticks = true self.phase = self.current_state self.cycles = self.current_state self:setTimer((self.direction == "south" or self.direction == "east") and 35 or 20, plant_restoring) self.days_left = days_between_states local taskIndex = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "watering") if taskIndex ~= -1 then self.hospital:removeHandymanTask(taskIndex, "watering") end end --! Overridden since the plant animates slowly over time function Plant:tick() local timer = self.timer_time if timer then timer = timer - 1 if timer == 0 then self.timer_time = nil local timer_function = self.timer_function self.timer_function = nil timer_function(self) else self.timer_time = timer end end end --! Returns whether the plant is in need of watering right now. function Plant:needsWatering() if self.current_state == 0 then if self.days_left < 10 then return true end else return true end end --! When the plant needs water it periodically calls for a nearby handyman. function Plant:callForWatering() -- If self.ticks is true it means that a handyman is currently watering the plant. -- If there are no tiles to water from, just die. if not self.ticks then if not self.unreachable then local index = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "watering") if index == -1 then local call = self.world.dispatcher:callForWatering(self) self.hospital:addHandymanTask(self, "watering", self.current_state + 1, self.tile_x, self.tile_y, call) else self.hospital:modifyHandymanTaskPriority(index, self.current_state + 1, "watering") end end -- If very thirsty, make user aware of it. if self.current_state > 1 and not self.plant_announced then self.world.ui.adviser:say(_A.warnings.plants_thirsty) self.plant_announced = true end end end --! When a handyman is about to be summoned this function queues the complete set of actions necessary, -- including entering and leaving any room involved. It also queues a meander action at the end. -- Note that if there are more plants that need watering inside the room he will continue to water -- those too before leaving. --!param handyman (Staff) The handyman that is about to get the actions. function Plant:createHandymanActions(handyman) local this_room = self:getRoom() local handyman_room = handyman:getRoom() local ux, uy = self:getBestUsageTileXY(handyman.tile_x, handyman.tile_y) if not ux or not uy then -- The plant cannot be reached. self.unreachable = true self.unreachable_counter = days_unreachable local index = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "watering") if index ~= -1 then self.hospital:removeHandymanTask(index, "watering") end -- Release Handyman handyman:setCallCompleted() if handyman_room then handyman:setNextAction(handyman_room:createLeaveAction()) handyman:queueAction(MeanderAction()) else handyman:setNextAction(MeanderAction()) end return end self.reserved_for = handyman local walk_action = WalkAction(ux, uy):setIsEntering(this_room and true or false) if handyman_room and handyman_room ~= this_room then handyman:setNextAction(handyman_room:createLeaveAction()) handyman:queueAction(walk_action) else handyman:setNextAction(walk_action) end handyman:queueAction(UseObjectAction(self):enableWateringPlant()) CallsDispatcher.queueCallCheckpointAction(handyman) handyman:queueAction(AnswerCallAction()) end --! When a handyman should go to the plant he should approach it from the closest reachable tile. --!param from_x (integer) The x coordinate of tile to calculate from. --!param from_y (integer) The y coordinate of tile to calculate from. function Plant:getBestUsageTileXY(from_x, from_y) local access_points = {{dx = 0, dy = 1, direction = "north"}, {dx = 0, dy = -1, direction = "south"}, {dx = -1, dy = 0, direction = "east"}, {dx = 1, dy = 0, direction = "west"}} local shortest local best_point = nil local room_here = self:getRoom() for _, point in ipairs(access_points) do local dest_x, dest_y = self.tile_x + point.dx, self.tile_y + point.dy local room_there = self.world:getRoom(dest_x, dest_y) if room_here == room_there then local distance = self.world:getPathDistance(from_x, from_y, self.tile_x + point.dx, self.tile_y + point.dy) if distance and (not best_point or shortest > distance) then best_point = point shortest = distance end end end if best_point then self.direction = best_point.direction return self.tile_x + best_point.dx, self.tile_y + best_point.dy else self.direction = "north" return end end --! Counts down to eventually let the plant droop. function Plant:tickDay() if not self.picked_up then -- The plant will need water a little more often if it is hot where it is. local temp = self.world.map.th:getCellTemperature(self.tile_x, self.tile_y) self.days_left = self.days_left - (1 + temp) if self.days_left < 1 then self.days_left = days_between_states self:setNextState() elseif not self.reserved_for and self:needsWatering() and not self.unreachable then self:callForWatering() end if self.unreachable then self.unreachable_counter = self.unreachable_counter - 1 if self.unreachable_counter == 0 then self.unreachable = false end end end end --! The plant needs to retain its animation and reset its unreachable flag when being moved function Plant:onClick(ui, button) if button == "right" then self.unreachable = false self.picked_up = true self.current_frame = self.base_frame + self.current_state end Object.onClick(self, ui, button) end function Plant:isPleasing() if not self.ticks then return true else return false end end function Plant:onDestroy() local index = self.hospital:getIndexOfTask(self.tile_x, self.tile_y, "watering") if index ~= -1 then self.hospital:removeHandymanTask(index, "watering") end Object.onDestroy(self) end function Plant:afterLoad(old, new) if old < 52 then self.hospital = self.world:getLocalPlayerHospital() end Object.afterLoad(self, old, new) end return object CorsixTH-0.61/CorsixTH/Lua/objects/pool_table.lua000066400000000000000000000066431321660673500216650ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "pool_table" object.thob = 10 object.name = _S.object.pool_table object.tooltip = _S.tooltip.objects.pool_table object.ticks = false object.build_preview_animation = 5058 object.idle_animations = { north = 2130, south = 2130, } -- There are five animations, for each the doctor and the handyman. -- The nurses don't like pool, appearently. -- -- anim | doctor | handyman -- ----------------------------- -- aim | 1230 | 3924 -- shoot | 1234 | 3928 -- chalk | 1238 | 3932 -- take cue | 1244 | 3936 -- leave cue | 1248 | 3940 -- -- the playing procedure is: take cue, chalk, aim, shoot, leave cue object.usage_animations = { north = { begin_use = { Doctor = 1244, Handyman = 3936, }, begin_use_2 = { Doctor = 1238, Handyman = 3932, }, begin_use_3 = { Doctor = 1230, Handyman = 3924, }, in_use = { Doctor = 1234, Handyman = 3928, }, finish_use = { Doctor = 1248, Handyman = 3940, }, }, south = { -- duplicate of north begin_use = { Doctor = 1244, Handyman = 3936, }, begin_use_2 = { Doctor = 1238, Handyman = 3932, }, begin_use_3 = { Doctor = 1230, Handyman = 3924, }, in_use = { Doctor = 1234, Handyman = 3928, }, finish_use = { Doctor = 1248, Handyman = 3940, }, }, } object.orientations = { north = { footprint = { {-1, -2, only_passable = true}, {0, -2, need_north_side = true},{1, -2, only_passable = true}, {-1, -1, only_passable = true}, {0, -1}, {1, -1, only_passable = true}, {-1, 0, only_passable = true}, {0, 0, only_passable = true, complete_cell = true}, {1, 0, only_passable = true} }, render_attach_position = {-1, 0}, use_position = {0, 0}, }, east = { footprint = {{-2, -1, only_passable = true}, {-1, -1, only_passable = true}, {0, -1, only_passable = true}, {-2, 0, complete_cell = true}, {-1, 0}, {0, 0, only_passable = true, complete_cell = true}, {-2, 1, only_passable = true}, {-1, 1, only_passable = true}, {0, 1, only_passable = true} }, render_attach_position = {0, -1}, use_position = {0, 0}, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/projector.lua000066400000000000000000000047551321660673500215560ustar00rootroot00000000000000--[[ Copyright (c) 2010 Justin Pasher Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "projector" object.thob = 37 object.name = _S.object.projector object.tooltip = _S.tooltip.objects.projector object.ticks = false object.build_preview_animation = 5086 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = { north = 2586, south = 2586, } object.usage_animations = copy_north_to_south { north = { begin_use = { Doctor = 2594 }, begin_use_2 = { Doctor = 2590 }, -- 2802 is probably better, but it's anchored differently begin_use_3 = { Doctor = 2598 }, in_use = { Doctor = 2602 }, finish_use = { Doctor = 2606 }, finish_use_2 = { Doctor = 2610 }, finish_use_3 = { Doctor = 2684 }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2 = {0, 0}, {-0.4, 0.5} anim_mgr:setMarker(object.usage_animations.north.begin_use_2, kf2) anim_mgr:setMarker(object.usage_animations.north.begin_use_3, kf2) anim_mgr:setMarker(object.usage_animations.north.in_use, kf2) anim_mgr:setMarker(object.usage_animations.north.finish_use, kf2) anim_mgr:setMarker(object.usage_animations.north.finish_use_2, 0, kf2, 11, kf2, 16, kf1) object.orientations = { north = { footprint = { {0, 0, only_passable = true}, {0, 1}, {-1, 0}, {-1, 1} }, use_position = "passable" }, east = { footprint = { {0, 0, only_passable = true}, {0, -1}, {1, 0}, {1, -1} }, use_position = "passable" }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/radiation_shield.lua000066400000000000000000000050141321660673500230360ustar00rootroot00000000000000--[[ Copyright (c) 2010 Wendell Misiedjan Edited by: Wendell Misiedjan Based on: Manuel König files. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "radiation_shield" object.slave_id = "radiation_shield_b" object.class = "RadiationShield" object.thob = 28 object.name = _S.object.radiation_shield object.tooltip = _S.tooltip.objects.radiation_shield object.ticks = true object.build_preview_animation = 922 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 794, } object.usage_animations = copy_north_to_south { north = { begin_use = {Doctor = 798}, -- Doctor sits down begin_use_2 = {Doctor = 806}, -- Pulls the handle in_use = {Doctor = { 810, -- Sits idle 814, -- Pushing buttons }}, finish_use = {Doctor = 802}, -- Doctor stands up }, } object.orientations = { north = { render_attach_position = {0, -1}, footprint = { {-2, -1}, {-1, -1}, {0, -1}, {-2, 0}, {-1, 0}, {0, 0, only_passable = true}, {-2, 1}, {-1, 1}, {0, 1}}, use_position = {0, 0} }, east = { render_attach_position = {0, -1}, footprint = { {-1, -2}, {0, -2},{1, -2}, {-1, -1}, {0, -1},{1, -1}, {-1, 0}, {0, 0, only_passable = true},{1, 0} }, use_position = {0, 0} }, } class "RadiationShield" (Object) ---@type RadiationShield local RadiationShield = _G["RadiationShield"] RadiationShield:slaveMixinClass() return object CorsixTH-0.61/CorsixTH/Lua/objects/radiation_shield_b.lua000066400000000000000000000033001321660673500233330ustar00rootroot00000000000000--[[ Copyright (c) 2010 Wendell Misiedjan Edited with some help of Corsix. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "radiation_shield_b" object.class = "RadiationShield" object.thob = 28 object.name = _S.object.radiation_shield object.tooltip = _S.tooltip.objects.radiation_shield object.show_in_town_map = true object.ticks = false local function copy_east_to_west(t) t.west = t.east return t end object.idle_animations = copy_east_to_west { east = 1968, } object.orientations = { north = { render_attach_position = {0, 2}, use_position = {0, 0}, footprint = {}, }, east = { render_attach_position = {1, 1}, use_position = {0, 0}, footprint = {}, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/radiator.lua000066400000000000000000000032061321660673500213420ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "radiator" object.thob = 44 object.name = _S.object.radiator object.tooltip = _S.tooltip.objects.radiator object.ticks = false object.class = "SideObject" object.corridor_object = 5 object.build_preview_animation = 914 object.idle_animations = { north = 750, east = 752, } object.orientations = { north = { footprint = { {0, 0, only_side = true} } }, east = { footprint = { {0, 0, only_side = true} } }, south = { footprint = { {0, 0, only_side = true} } }, west = { footprint = { {0, 0, only_side = true} } }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/rathole.lua000066400000000000000000000041061321660673500211730ustar00rootroot00000000000000--[[ Copyright (c) 2016 Albert "Alberth" Hofkamp Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "rathole" object.thob = 64 object.name = _S.object.rathole object.class = "Rathole" object.tooltip = _S.tooltip.objects.rathole object.ticks = false object.idle_animations = { north = 1904, } object.orientations = { -- Empty footprint, so you can build any other object on top of it. north = { footprint = {} }, south = { footprint = {} }, west = { footprint = {} }, east = { footprint = {} }, } -- For ratholes: -- 1904: hole in north wall -- 1908: rat moving north -- 1910: rat moving north-east -- 1912: rat moving east -- 1914: rat moving south-east -- 1916: rat moving south -- 1918: rat moving south-west -- 1920: rat moving west -- 1922: rat moving north-west -- 1924: rat entering hole north wall -- 1926: rat entering hole west wall -- 1928: rat leaving hole north wall class "Rathole" (Object) ---@type Rathole local Rathole = _G["Rathole"] function Rathole:Rathole(world, oject_type, x, y, direction, etc) self:Object(world, oject_type, x, y, direction, etc) end return object CorsixTH-0.61/CorsixTH/Lua/objects/reception_desk.lua000066400000000000000000000201431321660673500225320ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "reception_desk" object.thob = 11 object.class = "ReceptionDesk" object.name = _S.object.reception_desk object.tooltip = _S.tooltip.objects.reception_desk object.ticks = true object.corridor_object = 1 object.build_preview_animation = 5060 object.idle_animations = { north = 2062, east = 2064, } object.orientations = { north = { footprint = { {0, 0}, {0, -1, only_passable = true}, {0, 1, only_passable = true}, {1, 0, need_north_side = true, need_south_side = true}, {-1, 0, need_north_side = true, need_south_side = true} }, use_position = {0, -1}, use_position_secondary = {0, 1}, }, east = { footprint = { {0, 0}, {0, -1, need_west_side = true, need_east_side = true}, {0, 1, need_west_side = true, need_east_side = true}, {1, 0, only_passable = true}, {-1, 0, only_passable = true} }, use_position = {1, 0}, use_position_secondary = {-1, 0}, }, south = { footprint = { {0, 0}, {0, -1, only_passable = true}, {0, 1, only_passable = true}, {1, 0, need_north_side = true, need_south_side = true}, {-1, 0, need_north_side = true, need_south_side = true} }, use_position = {0, 1}, use_position_secondary = {0, -1}, }, west = { footprint = { {0, 0}, {0, -1, need_west_side = true, need_east_side = true}, {0, 1, need_west_side = true, need_east_side = true}, {1, 0, only_passable = true}, {-1, 0, only_passable = true} }, use_position = {-1, 0}, use_position_secondary = {1, 0}, }, } dofile "queue" class "ReceptionDesk" (Object) ---@type ReceptionDesk local ReceptionDesk = _G["ReceptionDesk"] function ReceptionDesk:ReceptionDesk(...) self:Object(...) self.queue = Queue() self.queue:setBenchThreshold(3) -- Keep 3 people standing in the queue even if there are benches self.queue:setMaxQueue(20) -- larger queues for reception desk self.hover_cursor = TheApp.gfx:loadMainCursor("queue") self.queue_advance_timer = 0 end function ReceptionDesk:onClick(ui, button) if button == "left" then local queue_window = UIQueue(ui, self.queue) ui:addWindow(queue_window) else return Object.onClick(self, ui, button) end end function ReceptionDesk:tick() local queue_front = self.queue:front() local reset_timer = true if self.receptionist and queue_front then if queue_front.action_queue[1].name == "idle" then self.queue_advance_timer = self.queue_advance_timer + 1 reset_timer = false if self.queue_advance_timer >= 4 + self.world.hours_per_day * (1.0 - self.receptionist.profile.skill) then reset_timer = true if queue_front.next_room_to_visit then queue_front:queueAction(SeekRoomAction(queue_front.next_room_to_visit.room_info.id)) else if class.is(queue_front, Inspector) then local inspector = queue_front if not inspector.going_home then local epidemic = self.world:getLocalPlayerHospital().epidemic if epidemic then -- The result of the epidemic may already by determined -- i.e if an infected patient has left the hospital if not epidemic.result_determined then epidemic:finishCoverUp() end epidemic:applyOutcome() inspector:goHome() end end -- VIP has his own list, don't add the gp office twice elseif queue_front.humanoid_class ~= "VIP" then if queue_front:agreesToPay("diag_gp") then queue_front:queueAction(SeekRoomAction("gp")) else queue_front:goHome("over_priced", "diag_gp") end else -- the VIP will realise that he is idle, and start going round rooms queue_front:queueAction(IdleAction()) queue_front.waiting = 1 end end self.queue:pop() self.queue.visitor_count = self.queue.visitor_count + 1 queue_front.has_passed_reception = true end end end if reset_timer then self.queue_advance_timer = 0 end return Object.tick(self) end --! Reception desk looks for a receptionist. --!return (boolean) Desk has a receptionist attached to it (may still be on her way to the desk). function ReceptionDesk:checkForNearbyStaff() if self.receptionist or self.reserved_for then -- Already got staff, or a staff member is on the way return true end local nearest_staff, nearest_d local world = self.world local use_x, use_y = self:getSecondaryUsageTile() for _, entity in ipairs(self.world.entities) do if entity.humanoid_class == "Receptionist" and not entity.associated_desk and not entity.fired then local distance = world.pathfinder:findDistance(entity.tile_x, entity.tile_y, use_x, use_y) if not nearest_d or distance < nearest_d then nearest_staff = entity nearest_d = distance end end end if not nearest_staff then return false end self:occupy(nearest_staff) return true end -- how many tiles further are we willing to walk for 1 person fewer in the queue local tile_factor = 10 function ReceptionDesk:getUsageScore() local score = self.queue:patientSize() * tile_factor -- Add constant penalty if queue is full if self.queue:isFull() then score = score + 1000 end return score end function ReceptionDesk:setTile(x, y) Object.setTile(self, x, y) if x and y then self:checkForNearbyStaff() end return self end function ReceptionDesk:onDestroy() self.being_destroyed = true -- temporary flag for receptionist (re-)routing logic local receptionist = self.receptionist or self.reserved_for if receptionist then receptionist:handleRemovedObject(self) self.receptionist = nil self.reserved_for = nil -- Find a new reception desk for the receptionist local world = receptionist.world world:findObjectNear(receptionist, "reception_desk", nil, function(x, y) local obj = world:getObject(x, y, "reception_desk") -- Make sure we are not selecting the same desk again if obj and obj ~= self then return obj:occupy(receptionist) end end) end self.queue:rerouteAllPatients(SeekReceptionAction()) self.being_destroyed = nil return Object.onDestroy(self) end --[[ Create orders for the specified receptionist to walk to and then staff the reception desk, if not already staffed or someone is on the way !param receptionist (Staff) the receptionist to occupy this desk !return true iff the receptionist was ordered to the desk ]] function ReceptionDesk:occupy(receptionist) if not self.receptionist and not self.reserved_for then self.reserved_for = receptionist receptionist.associated_desk = self local use_x, use_y = self:getSecondaryUsageTile() receptionist:setNextAction(WalkAction(use_x, use_y):setMustHappen(true)) receptionist:queueAction(StaffReceptionAction(self)) return true end end return object CorsixTH-0.61/CorsixTH/Lua/objects/screen.lua000066400000000000000000000030111321660673500210060ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "screen" object.thob = 16 object.name = _S.object.screen object.tooltip = _S.tooltip.objects.screen object.ticks = false object.build_preview_animation = 926 object.show_in_town_map = true object.idle_animations = { north = 1022, } object.orientations = { north = { footprint = { {-1, -1, only_passable = true}, {-1, 0}, {0, -1}, {0, 0} }, render_attach_position = {-1, 0}, use_position = "passable", }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/sink.lua000066400000000000000000000045411321660673500205040ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "sink" object.thob = 32 object.name = _S.object.toilet_sink object.tooltip = _S.tooltip.objects.toilet_sink object.ticks = false object.build_preview_animation = 5082 local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 1748, } object.usage_animations = copy_north_to_south { north = { begin_use = { ["Standard Male Patient"] = 1776, ["Standard Female Patient"] = 3160, }, in_use = { ["Standard Male Patient"] = 1780, ["Standard Female Patient"] = 3164, }, finish_use = { ["Standard Male Patient"] = 1784, ["Standard Female Patient"] = 3168, }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2 = {0, 0}, {0, -0.7} anim_mgr:setMarker({1776, 3160}, 0, kf1, 4, kf2) anim_mgr:setMarker({1780, 3164}, kf2) anim_mgr:setMarker({1784, 3168}, 0, kf2, 34, kf2, 39, kf1) object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/skeleton.lua000066400000000000000000000035711321660673500213660ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "skeleton" object.thob = 60 object.name = _S.object.skeleton object.tooltip = _S.tooltip.objects.skeleton object.ticks = false object.build_preview_animation = 5108 object.show_in_town_map = true local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = { north = 2402, south = 2402, } object.usage_animations = copy_north_to_south { north = { in_use = { Doctor = 2614 }, }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true }, east = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/sofa.lua000066400000000000000000000073661321660673500205000ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "sofa" object.thob = 19 object.name = _S.object.sofa object.tooltip = _S.tooltip.objects.sofa object.ticks = false object.build_preview_animation = 5066 object.show_in_town_map = true object.idle_animations = { north = 2122, east = 2124, } object.usage_animations = { north = { begin_use = { Doctor = 2178, Nurse = 3878, Handyman = 3570, }, begin_use_2 = { Doctor = 2186, Nurse = 3886, Handyman = 3578, }, in_use = { Doctor = 2208, Nurse = 4780, -- also 4786, duplicate? Handyman = 4772, }, finish_use = { Doctor = 2194, Nurse = 3894, Handyman = 3586, }, }, east = { begin_use = { Doctor = 2180, Nurse = 3880, Handyman = 3572, }, begin_use_2 = { Doctor = 2188, Nurse = 3888, Handyman = 3580, }, in_use = { Doctor = 2210, Nurse = 4782, -- also 4784, duplicate? Handyman = 4774, -- also 4776, duplicate? }, finish_use = { Doctor = 2196, Nurse = 3896, Handyman = 3588, }, }, } local anim_mgr = TheApp.animation_manager local kf1, kf2 = {-1, -1}, {-1, -0.6} anim_mgr:setMarker(object.usage_animations.north.begin_use, 0, kf1, 2, kf2) kf1 = {-0.6, 0.3} anim_mgr:setMarker(object.usage_animations.north.begin_use_2, 0, kf2, 2, kf1) anim_mgr:setMarker(object.usage_animations.north.in_use, kf1) kf2 = {-1, -0.6} local kf3 = {-1, -1} anim_mgr:setMarker(object.usage_animations.north.finish_use, 0, kf1, 2, kf2, 5, kf3) kf1, kf2 = {1, -1}, {0.6, -1} anim_mgr:setMarker(object.usage_animations.east.begin_use, 0, kf1, 2, kf2) kf1 = {0.3, -0.6} anim_mgr:setMarker(object.usage_animations.east.begin_use_2, 0, kf2, 3, kf1) anim_mgr:setMarker(object.usage_animations.east.in_use, kf1) kf2 = {0.6, -1} kf3 = {1, -1} anim_mgr:setMarker(object.usage_animations.east.finish_use, 0, kf1, 1, kf1, 3, kf2, 5, kf3) object.orientations = { north = { footprint = { {-1, 0, complete_cell = true}, {0, 0, complete_cell = true}, {-1, -1, only_passable = true} }, render_attach_position = {-1, 0}, use_position = "passable", }, east = { footprint = { {0, -1, complete_cell = true}, {0, 0, complete_cell = true}, {1, -1, only_passable = true} }, use_position = "passable", }, south = { render_attach_position = { {0, 0}, {-1, 1} }, footprint = { {-1, 0, complete_cell = true}, {0, 0, complete_cell = true}, {-1, 1, only_passable = true} }, use_position = "passable", }, west = { footprint = { {0, -1, complete_cell = true}, {0, 0, complete_cell = true}, {-1, -1, only_passable = true} }, use_position = "passable", }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/surgeon_screen.lua000066400000000000000000000034361321660673500225630ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "surgeon_screen" object.class = "SurgeonScreen" object.thob = 35 object.name = _S.object.surgeon_screen object.tooltip = _S.tooltip.objects.surgeon_screen object.ticks = false object.build_preview_animation = 926 object.show_in_town_map = true object.idle_animations = { north = 2772, } object.orientations = { north = { footprint = { {-1, -1, only_passable = true}, {-1, 0}, {0, -1}, {0, 0} }, render_attach_position = {-1, 0}, use_position = "passable", }, } class "SurgeonScreen" (Object) ---@type SurgeonScreen local SurgeonScreen = _G["SurgeonScreen"] function SurgeonScreen:SurgeonScreen(...) self:Object(...) self.num_green_outfits = 2 self.num_white_outfits = 0 end return object CorsixTH-0.61/CorsixTH/Lua/objects/tv.lua000066400000000000000000000033101321660673500201620ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "tv" object.thob = 21 object.name = _S.object.tv object.tooltip = _S.tooltip.objects.tv object.ticks = false object.build_preview_animation = 5052 object.idle_animations = { north = 396, east = 398, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, -1, only_passable = true} } }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} } }, south = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} } }, west = { footprint = { {0, 0, complete_cell = true}, {-1, 0, only_passable = true} } }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/video_game.lua000066400000000000000000000042411321660673500216340ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "video_game" object.thob = 57 object.name = _S.object.video_game object.tooltip = _S.tooltip.objects.video_game object.ticks = false object.build_preview_animation = 5106 object.idle_animations = { north = 3696, south = 3696, } -- There are only animations for the doctor and the nurse. -- It seems the handyman doesn't play video games. -- -- For the Doctor, there's an additional animation standing still. -- Don't know how to use that one... object.usage_animations = { north = { in_use = { Doctor = 3700, -- also 3692, standing still in front of the game Nurse = 4764, }, }, south = { -- duplicate of north in_use = { Doctor = 3700, Nurse = 4764, }, }, } object.orientations = { north = { footprint = { {0, 0, complete_cell = true}, {0, 1, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, east = { footprint = { {0, 0, complete_cell = true}, {1, 0, only_passable = true} }, use_position = "passable", use_animate_from_use_position = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/objects/x_ray_viewer.lua000066400000000000000000000034411321660673500222410ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local object = {} object.id = "x_ray_viewer" object.thob = 29 object.name = _S.object.x_ray_viewer object.tooltip = _S.tooltip.objects.x_ray_viewer object.ticks = false object.build_preview_animation = 5078 object.show_in_town_map = true object.locked_to_wall = { -- permittable wall -> orientation north = "east", west = "north", } local function copy_north_to_south(t) t.south = t.north return t end object.idle_animations = copy_north_to_south { north = 2390, } object.orientations = { north = { footprint = { {0, 0, need_west_side = true }, }, list_bottom = true, }, east = { footprint = { {0, 0, need_north_side = true}, }, list_bottom = true, early_list = true, }, } return object CorsixTH-0.61/CorsixTH/Lua/persistance.lua000066400000000000000000000211501321660673500204220ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local persist = require "persist" local saved_permanents = {} strict_declare_global "permanent" strict_declare_global "unpermanent" local th_getfenv local th_getupvalue if _G._VERSION == "Lua 5.2" or _G._VERSION == "Lua 5.3" then th_getfenv = function(f) local _, val = nil, nil if type(f) == "function" then _, val = debug.getupvalue(f, 1) elseif type(f) == "userdata" then val = debug.getuservalue(f) else print('Unhandled argument to th_getfenv') end return val end th_getupvalue = function(f, n) return debug.getupvalue(f, n + 1) end else th_getfenv = debug.getfenv th_getupvalue = debug.getupvalue end function permanent(name, ...) if select('#', ...) == 0 then return function (...) return permanent(name, ...) end end local value = ... assert(value ~= nil) assert(saved_permanents[name] == nil) saved_permanents[name] = value return value end function unpermanent(name) assert(saved_permanents[name] ~= nil) saved_permanents[name] = nil end local --[[persistable:persistance_global_fetch]] function global_fetch(...) local val = _G for _, k in ipairs({...}) do val = val[k] end return val end local function MakePermanentObjectsTable(inverted) local return_val = setmetatable({}, {}) local permanent = return_val if inverted then getmetatable(permanent).__newindex = function(t, k, v) rawset(t, v, k) end end -- Global functions for k, v in pairs(_G) do if type(v) == "function" then permanent[v] = k end end -- Lua class methods for name, class in pairs(_G) do repeat if type(class) ~= "table" then break -- continue end local class_mt = getmetatable(class) if not class_mt or class_mt.__class_name ~= name then break -- continue end permanent[class] = name .. ".1" permanent[class_mt] = name .. ".2" for k, v in pairs(class) do if type(v) == "function" then permanent[v] = name .. "." .. k end end until true end -- C/class/library methods for name, lib in pairs(package.loaded) do if not name:find(".", 1, true) then permanent[lib] = name end if type(lib) == "table" then for k, v in pairs(lib) do local type_of_lib = type(v) if type_of_lib == "function" or type_of_lib == "table" or type_of_lib == "userdata" then permanent[v] = name .. "." .. k if name == "TH" and type_of_lib == "table" then -- C class metatables local callenv = th_getfenv(getmetatable(v).__call) permanent[callenv] = name .. "." .. k .. "." end end end else print("Warning: Expected table but got " .. type(lib) .. ". A library probably failed to load.") end end -- Bits of the app permanent[TheApp] = "TheApp" for _, key in ipairs({"config", "modes", "video", "strings", "audio", "gfx", "fs"}) do permanent[TheApp[key]] = inverted and "TheApp." .. key or {global_fetch, "TheApp", key} end for _, collection in ipairs({"walls", "objects", "rooms", "humanoid_actions", "diseases"}) do for k, v in pairs(TheApp[collection]) do if type(k) == "string" then permanent[v] = inverted and "TheApp." .. collection .. "." .. k or {global_fetch, "TheApp", collection, k} end end end -- If loading a game from the main menu, there will be no menu bar, so make one local menu_bar = TheApp.ui and TheApp.ui.menu_bar if not menu_bar then -- The menu bar wants a UI, but it is happy with just something naming an App menu_bar = UIMenuBar({app = TheApp}) end permanent[menu_bar] = "TheApp.ui.menu_bar" -- Graphics bits are persisted as instructions to reload them or re-use if already loaded if inverted then -- as the object was persisted as a table, we need to add some magic to -- the __index metamethod to interpret this table as a function call getmetatable(return_val).__index = function(_, k) if type(k) == "table" then return k[1](unpack(k, 2)) end end else -- load_info is a table containing a method and parameters to load obj for obj, load_info in pairs(TheApp.gfx.load_info) do permanent[obj] = load_info end end -- Things requested to be permanent by other bits of code for name, value in pairs(saved_permanents) do permanent[value] = name end return return_val end local function NameOf(obj) -- Debug aid local explored = {[_G] = true} local to_explore = {[_G] = "_G"} while true do local exploring, name = next(to_explore) if exploring == nil then break end to_explore[exploring] = nil if exploring == obj then return name end if type(exploring) == "table" then for key, val in pairs(exploring) do if not explored[val] then to_explore[val] = name .. "." ..tostring(key) explored[val] = true end end elseif type(exploring) == "function" then local i = 0 while true do i = i + 1 local dbg_name, val = debug.getupvalue(exploring, i) if not dbg_name then break end if val ~= nil and not explored[val] then to_explore[val] = name .. "." explored[val] = true end end end local mt = debug.getmetatable(exploring) if mt and not explored[mt] then to_explore[mt] = name .. "." explored[mt] = true end mt = th_getfenv(exploring) if mt and not explored[mt] then to_explore[mt] = name .. "." explored[mt] = true end end return "" end strict_declare_global "SaveGame" strict_declare_global "SaveGameFile" strict_declare_global "LoadGame" strict_declare_global "LoadGameFile" function SaveGame() local state = { ui = TheApp.ui, world = TheApp.world, map = TheApp.map, random = math.randomdump(), } state.map:prepareForSave() --local status, res = xpcall(function() local result, err, obj = persist.dump(state, MakePermanentObjectsTable(false)) state.map:afterSave() if not result then print(obj, NameOf(obj)) -- for debugging error(err) else return result end --end, persist.errcatch) end --! Save a game to disk. --!param filename (string) Path of the file to write. function SaveGameFile(filename) local data = SaveGame() local f = assert(io.open(filename, "wb")) f:write(data) f:close() end function LoadGame(data) --local status, res = xpcall(function() local objtable = MakePermanentObjectsTable(true) local state = assert(persist.load(data, objtable)) state.ui:resync(TheApp.ui) TheApp.ui = state.ui TheApp.world = state.world TheApp.map = state.map math.randomseed(state.random) local cursor = TheApp.ui.cursor TheApp.ui.cursor = nil TheApp.ui:setCursor(cursor) -- The menu bar is a permanent object, so its ui field needs updating to -- the depersisted ui value. TheApp.ui.menu_bar.ui = TheApp.ui TheApp.ui.menu_bar:onChangeLanguage() --end, persist.errcatch) TheApp.world.map:registerTemperatureDisplayMethod() -- TODO: sound effects on/off are saved too, but should be a global value? TheApp.audio:playSoundEffects(TheApp.config.play_sounds) TheApp:afterLoad() TheApp.world:resetAnimations() TheApp.ui:onChangeResolution() -- Possibly add the blueish tone if the game is currently paused. if not TheApp.world.user_actions_allowed then TheApp.video:setBlueFilterActive(true) end end function LoadGameFile(filename) local f = assert(io.open(filename, "rb")) local data = f:read("*a") f:close() LoadGame(data) end CorsixTH-0.61/CorsixTH/Lua/queue.lua000066400000000000000000000240041321660673500172270ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --! Manages a list of `Humanoid`s which are waiting to use an `Object`. --! A queue stores a list of humanoids waiting to use an object. -- For a reception desk, this is as expected. -- For a room, the queue is for the door, not the room. Hence the queue stores -- the list of patients waiting to enter (the traditional queue for the room), -- the list of staff waiting to enter (because of the door being in use for -- example), the list of staff and patients waiting to leave (again due to door -- being in use). -- Queues are currently implemented as normal Lua arrays, but you should access -- a queue via its methods rather than directly. class "Queue" ---@type Queue local Queue = _G["Queue"] --! Constructor of a queue. function Queue:Queue() self.reported_size = 0 -- Number of real patients self.expected = {} -- Expected patients self.callbacks = {} self.expected_count = 0 -- Number of expected patients self.visitor_count = 0 self.max_size = 6 -- Maximum queue length (default value) self.bench_threshold = 0 end --! A humanoid is expected in a queue. --!param humanoid New patient that is expected. function Queue:expect(humanoid) if not self.expected[humanoid] and not class.is(humanoid, Vip) then self.expected[humanoid] = true self.expected_count = self.expected_count + 1 end end --! A humanoid is canceled as expected in a queue. --!param humanoid Patient that is not coming to this queue. function Queue:unexpect(humanoid) if self.expected[humanoid] then self.expected[humanoid] = nil self.expected_count = self.expected_count - 1 end end --! Lower the max queue length. --!param amount (int) Decrement length value of the queue. function Queue:decreaseMaxSize(amount) self.max_size = math.max(0, self.max_size - amount) end --! Increase max queue length. --!param amount (int) Increment length value of the queue. function Queue:increaseMaxSize(amount) self.max_size = math.min(30, self.max_size + amount) end function Queue:setBenchThreshold(standing_count) self.bench_threshold = standing_count end --! Set max queue length. --!param queue_count (int) New max queue length to set. function Queue:setMaxQueue(queue_count) self.max_size = queue_count end --! Total size of the queue, which are various people wanting in or out of the room. --! For a true patient queue count, use Queue:reportedSize. --!return (int) Number of various people in the queue. function Queue:size() -- Rememeber, the size includes people waiting to leave and staff waiting to enter -- For just the patients waiting to enter, use Queue:reportedSize() -- Most of the time, size() == reportedSize(), so it won't be immediately obvious -- if you're using the wrong method, but from time to time, staff or exiting -- patients will be in the queue, at which point the sizes will differ. return #self end --! Retrieve whether the queue is full. --!return (boolean) Whether the queue is full. function Queue:isFull() return #self >= self.max_size end --! Get the number of real patients in the queue. --!return (int) Number of real patients in the queue. function Queue:reportedSize() return self.reported_size end --! Get the number of expected patients. --!return (int) Number of expected patients (in the near future). function Queue:expectedSize() return self.expected_count end --! Check if the queue has an emergency patient. --!return (boolean) Whether an emergency patient was found in the queue. function Queue:hasEmergencyPatient() for _, humanoid in ipairs(self) do if humanoid.is_emergency then return true end end return false end --! Retrieve the total number of queued and expected patients. --return (int) Number of patients. function Queue:patientSize() return self.reported_size + self.expected_count end --! Get the 'index' real patient. --!param index (int) Index of the patient to retrieve (runs up to Queue:reportedSize). --!return Patient at the queried point in the queue. function Queue:reportedHumanoid(index) return self[#self - self.reported_size + index] end function Queue:setPriorityForSameRoom(entity) self.same_room_priority = entity end function Queue:push(humanoid, callbacks_on) local index = #self + 1 local increment_reported_size = true if self.same_room_priority then -- If humanoid in the priority room, then position them in the queue before -- humanoids not in the room (because if they are in the room and in the -- queue, then they are trying to leave the room). local room = self.same_room_priority:getRoom() if humanoid:getRoom() == room then while index > 1 do local before = self[index - 1] if before:getRoom() == room then break end index = index - 1 end increment_reported_size = false end end if class.is(humanoid, Staff) then -- Give staff priority over patients while index > 1 do local before = self[index - 1] if class.is(before, Staff) then break end index = index - 1 end increment_reported_size = false end -- Emergencies and any VIP's get put before all the other patients, but AFTER currently queued emergencies. if humanoid.is_emergency or class.is(humanoid, Vip) or class.is(humanoid, Inspector) then while index > 1 do local before = self[index - 1] if before.is_emergency then break end index = index - 1 end end if increment_reported_size then self.reported_size = self.reported_size + 1 end self.callbacks[humanoid] = callbacks_on table.insert(self, index, humanoid) for i = index + 1, #self do local queued_humanoid = self[i] local callbacks = self.callbacks[queued_humanoid] if callbacks then callbacks:onChangeQueuePosition(queued_humanoid) end end end --! Get the first person in the queue (queue is not changed). --! Note that first person may not be a patient, use Queue:reportedHumanoid to get patients --!return First person in the queue. function Queue:front() return self[1] end --! Get the last person in the queue (queue is not changed). --!return Last person in the queue. function Queue:back() return self[#self] end --! Pop first person from the queue. --! Note that first person may not be a patient, use Queue:reportedHumanoid to get patients --!return First person in the queue. function Queue:pop() if self.reported_size == #self then self.reported_size = self.reported_size - 1 end local oldfront = self[1] table.remove(self, 1) oldfront:setMood("queue", "deactivate") local callbacks = self.callbacks[oldfront] if callbacks then callbacks:onLeaveQueue(oldfront) end self.callbacks[oldfront] = nil for _, humanoid in ipairs(self) do callbacks = self.callbacks[humanoid] if callbacks then callbacks:onChangeQueuePosition(humanoid) end end return oldfront end --! Remove person from the queue by index number. --! Note that the person may not be a patient. --!param index (jnt) Index in the queue of the person to remove. --!return The removed person. function Queue:remove(index) if self[index] == nil then return end local value = self[index] if index > #self - self.reported_size then self.reported_size = self.reported_size - 1 end value:setMood("queue", "deactivate") table.remove(self, index) self.callbacks[value] = nil for i = #self, index, -1 do local humanoid = self[i] if humanoid.onAdvanceQueue then humanoid:onAdvanceQueue(self, i - 1) end end return value end --! Remove a person by value from the queue. --!param value Person to remove. --!return Whether the person could be found (and was removed). function Queue:removeValue(value) for i = 1, #self do if self[i] == value then self:remove(i) return true end end return false end --! Move the person at position 'index' to position 'new_index'. --! Persons between 'index' and 'new_index' move one place to 'index'. --!param index (int) Index number of the person to move. --!param new_index (int) Destination of the person being moved. function Queue:move(index, new_index) if self[index] == nil or self[new_index] == nil or index == new_index then return end local i if new_index < index then i = -1 else i = 1 end while new_index ~= index do local temp = self[index + i] self[index + i] = self[index] self[index] = temp index = index + i end end --! Called when reception desk is destroyed, or when a room is destroyed from a crashed machine. function Queue:rerouteAllPatients(action) for _, humanoid in ipairs(self) do -- slight delay so the desk is really destroyed before rerouting humanoid:setNextAction(IdleAction():setCount(1)) -- Don't queue the same action table, but clone it for each patient. local clone = {} for k, v in pairs(action) do clone[k] = v end humanoid:queueAction(clone) end for humanoid in pairs(self.expected) do humanoid:setNextAction(IdleAction():setCount(1)) humanoid:queueAction(action) self:unexpect(humanoid) end end CorsixTH-0.61/CorsixTH/Lua/research_department.lua000066400000000000000000000645351321660673500221370ustar00rootroot00000000000000--[[ Copyright (c) 2011 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --[[ Notes about research speed. Original game times at 20 % in all categories with a medium doctor at level 3: Slicer discovered in about 120 days. (10000 points) Pump improved in about 60 days. (30000 points * 20 % as first improvement) Invisibility improved in about 90 days. (10000 points) Note that the original requires a nurse and a pharmacy before drugs get improved. On the other hand it appears that the research is stored for future use anyway. --]] --! Manages all things related to research for one hospital. class "ResearchDepartment" ---@type ResearchDepartment local ResearchDepartment = _G["ResearchDepartment"] function ResearchDepartment:ResearchDepartment(hospital) self.hospital = hospital self.world = hospital.world -- This list contains a lot of information. -- Progress of object discovery, object improvement, drug improvement -- dito costs and room build costs. self.research_progress = {} self:initResearch() end -- Initialize research for the level. function ResearchDepartment:initResearch() local hospital = self.hospital local cfg_objects = self.world.map.level_config.objects local cure, diagnosis, improve, drug -- Initialize object research for _, object in ipairs(TheApp.objects) do if cfg_objects[object.thob] and cfg_objects[object.thob].AvailableForLevel == 1 and object.research_category then self.research_progress[object] = { points = 0, start_strength = cfg_objects[object.thob].StartStrength, cost = not self.world.free_build_mode and cfg_objects[object.thob].StartCost or 0, discovered = cfg_objects[object.thob].StartAvail == 1, strength_imp = 0, cost_imp = 0, } if cfg_objects[object.thob].StartAvail == 0 then if object.research_category == "cure" then cure = object elseif object.research_category == "diagnosis" then diagnosis = object end end -- TODO: Do we want some kind of specific order here, e.g. -- the same as in the original? if object.default_strength and cfg_objects[object.thob].StartAvail == 1 then improve = object end end end -- Now add drug research for _, disease in pairs(hospital.disease_casebook) do if disease.drug then self.research_progress[disease] = { points = 0, effect_imp = 1, cost_imp = 1, } if disease.discovered then drug = disease end end end -- Add a dummy to specialisation. The difference is that while it still says -- 20 % in that area it doesn't cost anything to the player local drain = {dummy = true} self.research_progress[drain] = {points = 0} self.drain = drain local policy = { cure = {frac = cure and 20 or 0, current = cure}, diagnosis = {frac = diagnosis and 20 or 0, current = diagnosis}, drugs = {frac = 20, points = 0, current = drug and drug or drain}, improvements = {frac = improve and 20 or 0, points = 0, current = improve}, specialisation = {frac = 20, points = 0, current = drain}, } local sum = 0 for _, cat in pairs(policy) do sum = sum + cat.frac end if sum == 20 then -- No research to be done policy.specialisation.frac = 0 policy.global = 0 else -- If some category is already done, put the free points in another one. if sum < 100 then for _, tab in pairs(policy) do if tab.frac > 0 then tab.frac = tab.frac + 100 - sum sum = 100 break end end end policy.global = sum end self.research_policy = policy if not hospital.research_dep_built then hospital.research_dep_built = false end end function ResearchDepartment:checkAutomaticDiscovery(month) for object, progress in pairs(self.research_progress) do -- Only check objects if object.default_strength then local avail_at = self.world.map.level_config.objects[object.thob].WhenAvail if not progress.discovered and avail_at ~= 0 and month >= avail_at then self:discoverObject(object, true) end end end end --! Find a disease (if it exists) on which research can be concentrated and concentrate on it. function ResearchDepartment:setResearchConcentration() local casebook = self.hospital.disease_casebook if self.research_policy.specialisation.current ~= self.drain then return end for _, disease in pairs(casebook) do if disease.discovered and self.hospital:canConcentrateResearch(disease.disease.id) then self:concentrateResearch(disease.disease.id) return end end end --! Function that redistributes research points from a finished category to --! all the other categories. function ResearchDepartment:redistributeResearchPoints() local sum, all_finished = 0, true local policy = {"cure", "diagnosis", "drugs", "improvements", "specialisation"} for _, research_category in ipairs(policy) do sum = sum + self.research_policy[research_category].frac if self.research_policy[research_category].current and self.research_policy[research_category].current ~= self.drain then all_finished = false end end if not all_finished then if sum == 0 then local num_cat = 0 for _, categ in ipairs(policy) do if self.research_policy[categ].current then num_cat = num_cat + 1 end end for _, categ in ipairs(policy) do if self.research_policy[categ].current then self.research_policy[categ].frac = math.floor(self.research_policy.global / num_cat) end end sum = math.floor(self.research_policy.global / num_cat) * num_cat for _, categ in ipairs(policy) do if self.research_policy[categ].current then if sum == self.research_policy.global then break end self.research_policy[categ].frac = self.research_policy[categ].frac + 1 sum = sum + 1 end end else local new_sum, max_value, max_category = 0, 0, "" for _, categ in ipairs(policy) do local research_cat = self.research_policy[categ] if research_cat.frac > max_value then max_value = research_cat.frac max_category = categ end research_cat.frac = math.floor(self.research_policy.global * research_cat.frac / sum) new_sum = new_sum + research_cat.frac end --if there are still some points left redistribute them to the research category with the maximum points if new_sum < self.research_policy.global then local frac = self.research_policy[max_category].frac + self.research_policy.global - new_sum self.research_policy[max_category].frac = frac end end else self.research_policy.global = 0 self.research_policy.specialisation.current = nil end end --[[! Finds out what to research next in the given research area. !param category The research area. One of cure, diagnosis, drugs, improvements and specialisation --]] function ResearchDepartment:nextResearch(category) local current = self.research_policy[category].current -- First make sure that the current research target actually has been discovered. -- Otherwise don't do anything. if not (current.drug or self.research_progress[current].discovered) then return end local hospital = self.hospital self.research_policy[category].current = nil local found_one = false if category == "drugs" then local worst_effect = 100 for _, disease in pairs(hospital.disease_casebook) do if disease.cure_effectiveness < worst_effect then found_one = true if disease.discovered then self.research_policy[category].current = disease worst_effect = disease.cure_effectiveness end end end elseif category == "improvements" then -- Find the object which needs improvements the most. local max_strength = self.world.map.level_config.gbv.MaxObjectStrength local min_strength = max_strength for object, progress in pairs(self.research_progress) do if object.default_strength then -- Don't improve those that already have the max strength if progress.start_strength < max_strength then if progress.discovered and progress.start_strength < min_strength then self.research_policy[category].current = object min_strength = progress.start_strength else found_one = true end end end end else for object, progress in pairs(self.research_progress) do if object.research_category == category and not progress.discovered then self.research_policy[category].current = object end end end if found_one and not self.research_policy[category].current then -- There is a drug or machine which needs improving, but it -- has not been discovered yet. self.research_policy[category].current = self.drain self.research_progress[self.drain] = {points = 0} end if not self.research_policy[category].current then local cat = self.research_policy[category] -- Nothing more to research cat.current = nil cat.frac = 0 self:redistributeResearchPoints() if self.hospital == self.world.ui.hospital then self.world.ui.adviser:say(_A.research.drug_fully_researched :format(_S.research.categories[category])) end -- Notify any research window local window = self.world.ui:getWindow(UIResearch) if window then window:updateCategories() end end end --[[ Returns how many points are required to discover something about the given thing. It may be an object or a drug, being improved or researched. If this thing cannot be processed nil is returned. !param thing The thing to check, either a drug or an object. --]] function ResearchDepartment:getResearchRequired(thing) local required local level_config = self.world.map.level_config local expert = level_config.expertise if thing.thob then -- An object required = level_config.objects[thing.thob].RschReqd if not required then -- It didn't know, so use the fallback instead. if not thing.research_fallback then -- This object is not researchable! print(("Warning: %s has been defined as "):format(thing.id) .. "researchable, but no requirements to fulfil could be found.") else required = expert[thing.research_fallback].RschReqd end end -- Actually want to know how much to improve? local research_info = self.research_progress[thing] if research_info.discovered then local improve_percent = level_config.gbv.RschImproveCostPercent local increment = level_config.gbv.RschImproveIncrementPercent improve_percent = improve_percent + increment * research_info.cost_imp required = required * improve_percent / 100 end elseif thing.drug then -- A drug required = expert[thing.disease.expertise_id].RschReqd end return required end --[[ Add some more research points to research progress. If autopsy_room is specified points are not used. Instead research progresses according to the level config for autopsies. Otherwise they will be divided according to the research policy into the different research areas. !param points (integer) The total amount of points (before applying any level specific divisors to add to research. !param autopsy_room (string) If a specific room should get points following an autopsy, then this is the id of that room. ]] function ResearchDepartment:addResearchPoints(points, autopsy_room) local level_config = self.world.map.level_config ---------------------- An autopsy has been done --------------------------- if autopsy_room then -- Do something only if the room is among those not yet discovered. for room, _ in pairs(self.hospital.undiscovered_rooms) do if room.id == autopsy_room then -- Find an object within this room that needs research points. for object, _ in pairs(room.objects_needed) do local research = self.research_progress[TheApp.objects[object]] if research and not research.discovered then local required = self:getResearchRequired(TheApp.objects[object]) local advance = required * level_config.gbv.AutopsyRschPercent / 100 research.points = research.points + advance -- Maybe we now have enough to discover the object? if research.points > required then self:discoverObject(TheApp.objects[object]) end break end end end end else --------------------------- General research ------------------------------ -- Divide the points into the different areas. If global is not at 100 % -- the total amount is lowered, but then cost is also reduced. -- Fetch the level research divisor. local divisor = level_config.gbv.ResearchPointsDivisor or 5 points = math.ceil(points * self.research_policy.global / (100 * divisor)) -- Divide the points into the different categories and check if -- it is time to discover something local areas = self.research_policy for _, info in pairs(areas) do -- Don't touch the value "global". if type(info) == "table" then -- Some categories may be finished if info.current then -- Add new points to this category's current focus. local research_info = self.research_progress[info.current] local stored = research_info.points -- Add just a little randomness research_info.points = stored + math.n_random(1, 0.2) * points * info.frac / 100 local required = self:getResearchRequired(info.current) if required and required < research_info.points then research_info.points = 0 -- On the specialisation pass any of these categories are eligible. ---------------- Discovering objects ---------------------- if info.current.thob and not research_info.discovered then self:discoverObject(info.current) ----------------- Improving drugs ------------------------- elseif info.current.drug then self:improveDrug(info.current) --------------- Improving machines ------------------------ elseif info.current.thob then self:improveMachine(info.current) end end end end end end end --[[ Called when it is time to improve a drug's strength or cost. !param drug The drug to improve, table taken from world.available_diseases --]] function ResearchDepartment:improveDrug(drug) local research_info = self.research_progress[drug] local disease = self.hospital.disease_casebook[drug.disease.id] -- Improving effectiveness and cost should alternate if research_info.effect_imp > research_info.cost_imp then -- Time to improve cost disease.drug_cost = disease.drug_cost - 10 research_info.cost_imp = research_info.cost_imp + 1 if disease.cure_effectiveness == 100 then -- Did the researchers concentrate on this drug? if self.research_policy.specialisation.current == drug then self.research_policy.specialisation.current = self.drain self:setResearchConcentration() end end if self.research_policy.drugs.current == drug then self:nextResearch("drugs") end else -- Time to improve effectiveness local improve_rate = self.world.map.level_config.gbv.DrugImproveRate disease.cure_effectiveness = math.min(100, disease.cure_effectiveness + improve_rate) research_info.effect_imp = research_info.effect_imp + 1 end if self.hospital == self.world.ui.hospital then if drug.disease.id == "the_squits" then self.world.ui.adviser:say(_A.research.drug_improved_1 :format(drug.disease.name)) else self.world.ui.adviser:say(_A.research.drug_improved :format(drug.disease.name)) end end end --[[ Called when it is time to improve a machine's strength or cost. !param machine The machine to improve, table taken from TheApp.objects --]] function ResearchDepartment:improveMachine(machine) local research_info = self.research_progress[machine] -- Improving strength and cost should alternate if research_info.strength_imp > research_info.cost_imp then -- Time to improve cost -- TODO: This is now 12.5%, based on observations by -- Mark L. Maybe add a new config option for this? local decrease = math.round(research_info.cost*0.125/10)*10 research_info.cost = research_info.cost - decrease -- Now find rooms where this object is used and lower the build_cost for them. for _, room in ipairs(self.world.available_rooms) do for obj, no in pairs(room.objects_needed) do if TheApp.objects[obj] == machine then local progress = self.research_progress[room] progress.build_cost = progress.build_cost - decrease * no -- Each room only defines the same object once, so break -- from the inner loop. break end end end research_info.cost_imp = research_info.cost_imp + 1 local max = self.world.map.level_config.gbv.MaxObjectStrength if research_info.start_strength >= max then if self.research_policy.specialisation.current == machine then self.research_policy.specialisation.current = self.drain self:setResearchConcentration() end end -- No matter what, check if another machine needs improvements more urgently. if self.research_policy.improvements.current == machine then self:nextResearch("improvements") end else -- Time to improve strength local improve_rate = self.world.map.level_config.gbv.ResearchIncrement research_info.start_strength = research_info.start_strength + improve_rate research_info.strength_imp = research_info.strength_imp + 1 end -- Tell the player that something has been improved if self.hospital == self.world.ui.hospital then self.world.ui.adviser:say(_A.research.machine_improved :format(machine.name)) end end --[[ Called when it is time to discoer an object. This may currently only happen from research. !param object The object to discover, a table from TheApp.objects !param automatic If true the discovery was not made by the player's research department. --]] function ResearchDepartment:discoverObject(object, automatic) self.research_progress[object].discovered = true -- Go through all rooms to see if another one can be made available. for room, _ in pairs(self.hospital.undiscovered_rooms) do local discovery = true for needed, _ in pairs(room.objects_needed) do local obj = self.research_progress[TheApp.objects[needed]] if obj and not obj.discovered then discovery = false break end end if discovery then self.hospital.discovered_rooms[room] = true self.hospital.undiscovered_rooms[room] = nil if self.hospital == self.world.ui.hospital then if automatic then self.world.ui.adviser:say(_A.research.new_available:format(object.name)) else self.world.ui.adviser:say(_A.research.new_machine_researched:format(object.name)) end end -- It may now be possible to continue researching machine improvements local current_improvement_research = self.research_policy.improvements.current local max_strength = self.world.map.level_config.gbv.MaxObjectStrength local min_strength = max_strength -- If we're not researching any improvement right now, and the newest discovery was -- a machine that requires an improvement, switch the current policy. if (not current_improvement_research or current_improvement_research.dummy) then for research_object, progress in pairs(self.research_progress) do if research_object.default_strength then -- Don't improve those that already have the max strength if progress.start_strength < max_strength then if progress.discovered and progress.start_strength < min_strength then self.research_policy["improvements"].current = research_object min_strength = progress.start_strength end end end end end end end -- Now find out what to do next. self:nextResearch(object.research_category) end --[[ Called when it is time to discover a disease (i.e. after diagnosis in the GP) !param disease The disease to discover, a table from world.available_diseases --]] function ResearchDepartment:discoverDisease(disease) -- Generate a message about the discovery local message = { {text = _S.fax.disease_discovered.discovered_name:format(disease.name)}, {text = disease.cause, offset = 12}, {text = disease.symptoms, offset = 12}, {text = disease.cure, offset = 12}, choices = { {text = _S.fax.disease_discovered.close_text, choice = "close"}, }, } self.world.ui.bottom_panel:queueMessage("disease", message, nil, 25*24, 1) self.hospital.disease_casebook[disease.id].discovered = true local index = #self.hospital.discovered_diseases + 1 self.hospital.discovered_diseases[index] = disease.id -- If the drug casebook is open, update it. local window = self.world.ui:getWindow(UICasebook) if window then window:updateDiseaseList() end -- It may now be possible to continue researching drug improvements local casebook_disease = self.hospital.disease_casebook[disease.id] local current_drug_research = self.research_policy.drugs.current -- If we're not researching any drug right now, and the newest discovery was -- a disease that requires a drug, switch the current policy. if (not current_drug_research or current_drug_research.dummy) and casebook_disease.drug then self.research_policy.drugs.current = casebook_disease end self:setResearchConcentration() end --[[! It also costs to research. TODO: This is now just $3 per day and doctor (if at 100%), what should it be? --]] function ResearchDepartment:researchCost() local acc_cost = self.hospital.acc_research_cost local fraction = 0 for _, tab in pairs(self.research_policy) do -- Don't pay for categories where nothing is really researched at the moment. if type(tab) == "table" then if tab.current and not tab.current.dummy then fraction = fraction + tab.frac end end end -- Find out how many doctors are currently doing research local doctors = 0 for _, room in pairs(self.world.rooms) do if room.room_info.id == "research" then for _, _ in pairs(room.staff_member_set) do doctors = doctors + 1 end end end acc_cost = acc_cost + math.ceil(3 * doctors * fraction/100) self.hospital.acc_research_cost = acc_cost end --[[ Concentrates research on a given disease. Concentrating on a machine will improve it if it's been discovered and help researching it otherwise. Concentrating on a drug will improve the drug provided the pharmacy is discovered. Otherwise it will research the cabinet. TODO: Make it possible to concentrate on psychological diseases if the psychiatry hasn't been discovered. !param disease_id The id of the disease to focus on. --]] function ResearchDepartment:concentrateResearch(disease_id) local book_entry = self.hospital.disease_casebook[disease_id] -- First set flags so that the casebook shows the right thing. if book_entry.concentrate_research then -- Already concentrated, we actually just want to cancel that. book_entry.concentrate_research = nil -- Make specialisation a dummy again self.research_policy.specialisation.current = self.drain else for key, disease in pairs(self.hospital.disease_casebook) do -- Set flag on previously concentrated disease if disease.concentrate_research then self.hospital.disease_casebook[key].concentrate_research = nil end end -- Concentrate on the new one book_entry.concentrate_research = true -- Now, find the object related to the disease. -- TODO: This assumes it is the last room in the treatment_rooms list -- which is the one to concentrate on. local room if book_entry.disease.treatment_rooms then local index = #book_entry.disease.treatment_rooms room = book_entry.disease.treatment_rooms[index] else -- This is a pseudo-disease, it should represent a piece of diagnosis -- machinery that we can improve via research. assert(book_entry.disease.id:sub(1, 5) == "diag_", "Trying to " .. "concentrate research on disease without treatment rooms that " .. "isn't a diagnosis machine pseudodisease") room = book_entry.disease.id:sub(6) end local object -- TODO: Can these loops be improved upon? for obj, _ in pairs(self.world.available_rooms[room].objects_needed) do for research, _ in pairs(self.research_progress) do if research.id == obj and research.thob then object = research break end end end assert(object, "An object that was about to be improved or discovered".. "could not be found") if book_entry.drug and self.research_progress[object].discovered then -- A drug should be improved self.research_policy.specialisation.current = book_entry else -- No matter if it's a drug or some machine - -- we want to discover (including the cabinet) or improve it. self.research_policy.specialisation.current = object end end end function ResearchDepartment:afterLoad(old, new) if old < 106 then self.level_config = nil end end CorsixTH-0.61/CorsixTH/Lua/room.lua000066400000000000000000001053221321660673500170620ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "Room" ---@type Room local Room = _G["Room"] function Room:Room(x, y, w, h, id, room_info, world, hospital, door, door2) self.id = id self.world = world self.hospital = hospital self.room_info = room_info self:initRoom(x, y, w, h, door, door2) end function Room:initRoom(x, y, w, h, door, door2) self.x = x self.y = y self.width = w self.height = h self.maximum_patients = 1 -- A good default for most rooms door.room = self self.door = door -- If it's a swing door we have two doors self.door2 = door2 if not self:hasQueueDialog() then door:setDynamicInfo('text', { self.room_info.name }) else door:setDynamicInfo('text', { self.room_info.name, _S.dynamic_info.object.queue_size:format(0), _S.dynamic_info.object.queue_expected:format(0) }) end self.built = false self.crashed = false self.world.map.th:markRoom(x, y, w, h, self.room_info.floor_tile, self.id) self.humanoids = {--[[a set rather than a list]]} self.objects = {--[[a set rather than a list]]} -- the set of humanoids walking to this room self.humanoids_enroute = {--[[a set rather than a list]]} self.world:prepareRectangleTilesForBuild(self.x, self.y, self.width, self.height) end --! Get the tile next to the door. --!param inside (bool) If set, get the tile inside the room, else get the tile outside. --!return x,y (tile coordinates) of the tile next to the door. function Room:getEntranceXY(inside) local door = self.door local x, y = door.tile_x, door.tile_y if (inside and self.world:getRoom(x, y) ~= self) or (not inside and self.world:getRoom(x, y) == self) then if door.direction == "north" then y = y - 1 elseif door.direction == "west" then x = x - 1 end end return x, y end --! Construct an 'walk' action to the tile next to the door, just outside the room. --!return Action to move to the tile just outside the room. function Room:createLeaveAction() local x, y = self:getEntranceXY(false) return WalkAction(x, y):setIsLeaving(true):truncateOnHighPriority() end function Room:createEnterAction(humanoid_entering, callback) local x, y = self:getEntranceXY(true) if not callback then if class.is(humanoid_entering, Patient) then callback = --[[persistable:room_patient_enroute_cancel]] function() humanoid_entering:setNextAction(SeekRoomAction(self.room_info.id)) end elseif class.is(humanoid_entering, Vip) then callback = --[[persistable:room_vip_enroute_cancel]] function() humanoid_entering:setNextAction(IdleAction()) humanoid_entering.waiting = 1 end else callback = --[[persistable:room_humanoid_enroute_cancel]] function() humanoid_entering:setNextAction(MeanderAction()) end end end if self.is_active then self.humanoids_enroute[humanoid_entering] = {callback = callback} end return WalkAction(x, y):setIsEntering(true) end --! Get a patient in the room. --!return A patient (humanoid) if there is a patient, nil otherwise. function Room:getPatient() for humanoid in pairs(self.humanoids) do if class.is(humanoid, Patient) then return humanoid end end end --! Count the number of patients in the room. --!return Number of patients in the room. function Room:getPatientCount() local count = 0 for humanoid in pairs(self.humanoids) do if class.is(humanoid, Patient) then count = count + 1 end end return count end -- function that sets a given attribute to a given value for all staff members. -- Should be overriden for rooms that have more than one staff member. function Room:setStaffMembersAttribute(attribute, value) if self.staff_member then self.staff_member[attribute] = value end end function Room:dealtWithPatient(patient) patient = patient or self:getPatient() -- If the patient was sent home while in the room, don't -- do anything apart from removing any leading idle action. if not patient.hospital then if patient.action_queue[1].name == "idle" then patient:finishAction() end return end patient:setNextAction(self:createLeaveAction()) patient:addToTreatmentHistory(self.room_info) if self.staff_member then self:setStaffMembersAttribute("dealing_with_patient", false) end if patient.disease then if not patient.diagnosed then -- Patient not yet diagnosed, hence just been in a diagnosis room. -- Increment diagnosis_progress, and send patient back to GP. patient:completeDiagnosticStep(self) self.hospital:receiveMoneyForTreatment(patient) if patient:agreesToPay("diag_gp") then patient:queueAction(SeekRoomAction("gp")) else patient:goHome("over_priced", "diag_gp") end else -- Patient just been in a cure room, so either patient now cured, or needs -- to move onto next cure room. patient.cure_rooms_visited = patient.cure_rooms_visited + 1 local next_room = patient.disease.treatment_rooms[patient.cure_rooms_visited + 1] if next_room then -- Do not say that it is a treatment room here, since that check should already have been made. patient:queueAction(SeekRoomAction(next_room)) else -- Patient is "done" at the hospital patient:treatDisease() end end else patient:queueAction(MeanderAction():setCount(2)) patient:queueAction(IdleAction()) end if self.dealt_patient_callback then self.dealt_patient_callback(self.waiting_staff_member) end -- The staff member(s) might be needed somewhere else. self:findWorkForStaff() end --! Checks if the room still needs the staff in it and otherwise -- sends them away if they're needed somewhere else. function Room:findWorkForStaff() -- If the staff member is idle we can send him/her somewhere else for humanoid in pairs(self.humanoids) do -- Don't check handymen if class.is(humanoid, Staff) and humanoid.humanoid_class ~= "Handyman" and humanoid:isIdle() then self.world.dispatcher:answerCall(humanoid) end end end local profile_attributes = { Psychiatrist = "is_psychiatrist", Surgeon = "is_surgeon", Researcher = "is_researcher", } -- Given any type of staff criteria (required/maximum), subtract the staff in the room and return the result function Room:getMissingStaff(criteria) local result = {} for attribute, count in pairs(criteria) do for humanoid in pairs(self.humanoids) do if class.is(humanoid, Staff) and humanoid:fulfillsCriterion(attribute) and not humanoid:isLeaving() and not humanoid.fired then count = count - 1 end end if count <= 0 then count = nil end result[attribute] = count end return result end function Room:testStaffCriteria(criteria, extra_humanoid) -- criteria should be required_staff or maximum_staff table. -- if extra_humanoid is nil, then returns true if the humanoids in the room -- meet the given criteria, and false otherwise. -- if extra_humanoid is not nil, then returns true if the given humanoid -- would assist in satisfying the given criteria, and false if they would not. local missing = self:getMissingStaff(criteria) if extra_humanoid then local class = extra_humanoid.humanoid_class if class == "Surgeon" then class = "Doctor" end if missing[class] then return true end if class == "Doctor" then -- check for special proficiencies for attribute, profile_attribute in pairs(profile_attributes) do if extra_humanoid.profile and extra_humanoid.profile[profile_attribute] == 1.0 and missing[attribute] then return true end end end return false else for _, _ in pairs(missing) do return false end return true end end local no_staff = {} -- Constant denoting 'no staff at all' in a room. --! Get the type and number of maximum staff for the room. --!return (table) Type and number of maximum staff. function Room:getMaximumStaffCriteria() -- Some rooms have dynamic criteria (i.e. dependent upon the number of items -- in the room), so this method is provided for such rooms to override it. return self.room_info.maximum_staff or self.room_info.required_staff or no_staff end --! Get the type and number of required staff for the room. --!return (table) Type and number of required staff. function Room:getRequiredStaffCriteria() return self.room_info.required_staff or no_staff end function Room:onHumanoidEnter(humanoid) assert(not self.humanoids[humanoid], "Humanoid entering a room that they are already in") humanoid.in_room = self humanoid.last_room = self -- Remember where the staff was for them to come back after staffroom rest -- Do not set humanoids[humanoid] here, because it affect staffFitsInRoom test --entering humanoids are no longer enroute if self.humanoids_enroute[humanoid] then self.humanoids_enroute[humanoid] = nil -- humanoid is no longer walking to this room end -- If this humanoid for some strange reason happens to enter a non-active room, -- just leave. if not self.is_active then print('Warning: humanoid entering non-active room') self.humanoids[humanoid] = true if class.is(humanoid, Patient) then self:makeHumanoidLeave(humanoid) humanoid:queueAction(SeekRoomAction(self.room_info.id)) else humanoid:setNextAction(self:createLeaveAction()) humanoid:queueAction(MeanderAction()) end return end if humanoid.humanoid_class == "Handyman" then -- Handymen can always enter a room (to repair stuff, water plants, etc.) self.humanoids[humanoid] = true -- Check for machines which need repair or plants which need watering if -- the handyman didn't arrive as a part of a job if humanoid.on_call then assert(humanoid.on_call.object:getRoom() == self, "Handyman arrived is on call but not arriving to the designated room") else -- If the handyman was not assigned for the job (e.g. drop by manual pickup), do answer a call humanoid:setNextAction(AnswerCallAction()) end return end local msg = { (_A.warnings.researcher_needs_desk_1), (_A.warnings.researcher_needs_desk_2), (_A.warnings.researcher_needs_desk_3), } local msg_nurse = { (_A.warnings.nurse_needs_desk_1), (_A.warnings.nurse_needs_desk_2), } if class.is(humanoid, Staff) then -- If the room is already full of staff, or the staff member isn't relevant -- to the room, then make them leave. Otherwise, take control of them. if not self:staffFitsInRoom(humanoid) then if self:getStaffMember() and self:staffMeetsRoomRequirements(humanoid) then local staff_member = self:getStaffMember() self.humanoids[humanoid] = true if staff_member.profile.is_researcher and self.room_info.id == "research" then self.world.ui.adviser:say(msg[math.random(1, #msg)]) end if staff_member.humanoid_class == "Nurse" and self.room_info.id == "ward" then self.world.ui.adviser:say(msg_nurse[math.random(1, #msg_nurse)]) end if not staff_member.dealing_with_patient then staff_member:setNextAction(self:createLeaveAction()) staff_member:queueAction(MeanderAction()) self.staff_member = humanoid humanoid:setCallCompleted() self:commandEnteringStaff(humanoid) else if self.waiting_staff_member then self.waiting_staff_member.waiting_on_other_staff = nil self.waiting_staff_member:setNextAction(self:createLeaveAction()) self.waiting_staff_member:queueAction(MeanderAction()) end self:createDealtWithPatientCallback(humanoid) humanoid.waiting_on_other_staff = true humanoid:setNextAction(MeanderAction()) end else self.humanoids[humanoid] = true humanoid:setNextAction(self:createLeaveAction()) humanoid:queueAction(MeanderAction()) humanoid:adviseWrongPersonForThisRoom() end else self.humanoids[humanoid] = true humanoid:setCallCompleted() self:commandEnteringStaff(humanoid) end self:tryAdvanceQueue() return end self.humanoids[humanoid] = true self:tryAdvanceQueue() if class.is(humanoid, Patient) then -- An infect patient's disease may have changed so they might have -- been sent to an incorrect diagnosis room, they should leave and go -- back to the gp for redirection if (humanoid.infected) and not humanoid.diagnosed and not self:isDiagnosisRoomForPatient(humanoid) then humanoid:queueAction(self:createLeaveAction()) humanoid.needs_redirecting = true humanoid:queueAction(SeekRoomAction("gp")) return end -- Check if the staff requirements are still fulfilled (the staff might have left / been picked up meanwhile) if self:testStaffCriteria(self:getRequiredStaffCriteria()) then if self.staff_member then self:setStaffMembersAttribute("dealing_with_patient", true) end self:commandEnteringPatient(humanoid) else humanoid:setNextAction(self:createLeaveAction()) humanoid:queueAction(self:createEnterAction(humanoid)) end end end function Room:createDealtWithPatientCallback(humanoid) self.dealt_patient_callback = --[[persistable:room_dealt_with_patient_callback]] function (staff_humanoid) if not staff_humanoid.waiting_on_other_staff then return end local staff_member = self:getStaffMember() if staff_member then staff_member:setNextAction(self:createLeaveAction()) staff_member:queueAction(MeanderAction()) staff_member:setMood("staff_wait", "deactivate") staff_member:setDynamicInfoText("") end staff_humanoid:setCallCompleted() staff_humanoid.waiting_on_other_staff = nil self:commandEnteringStaff(staff_humanoid) self:setStaffMember(staff_humanoid) self.waiting_staff_member = nil self.dealt_patient_callback = nil end self.waiting_staff_member = humanoid end --! Get the current staff member. -- Can be overridden in rooms with multiple staff members to return the desired one. --!return (staff) The current staff member. function Room:getStaffMember() return self.staff_member end --! Set the current staff member. --!param staff (staff) Staff member to denote as current staff. function Room:setStaffMember(staff) self.staff_member = staff end --! Does the given staff member fit in the room? -- Returns false if the room is already full of staff or if the given member of staff cannot help out. -- Otherwise returns true. --!return (bool) True if the staff member can work in the room, else False. function Room:staffFitsInRoom(staff) local criteria = self:getMaximumStaffCriteria() if self:testStaffCriteria(criteria) or not self:testStaffCriteria(criteria, staff) then return false end return true end --! Returns true if the humanoid meets (one of) the required staff criteria of the room function Room:staffMeetsRoomRequirements(humanoid) local criteria = self:getRequiredStaffCriteria() for attribute, _ in pairs(criteria) do if humanoid:fulfillsCriterion(attribute) then return true end end return false end --! When a valid member of staff enters the room this function is called. -- Can be extended in derived classes. --!param humanoid The staff in question --!param already_initialized If true, this means that the staff has already got order -- what to do. function Room:commandEnteringStaff(humanoid, already_initialized) if not already_initialized then self.staff_member = humanoid humanoid:setNextAction(MeanderAction()) end self:tryToFindNearbyPatients() humanoid:setDynamicInfoText("") -- This variable is used to avoid multiple calls for staff (sound played only) self.sound_played = nil if self:testStaffCriteria(self:getRequiredStaffCriteria()) then self.world.dispatcher:dropFromQueue(self) end end function Room:commandEnteringPatient(humanoid) -- To be extended in derived classes self.door.queue.visitor_count = self.door.queue.visitor_count + 1 humanoid:updateDynamicInfo("") for room_humanoid in pairs(self.humanoids) do -- Staff is no longer waiting if class.is(room_humanoid, Staff) then if room_humanoid.humanoid_class ~= "Handyman" then room_humanoid:setMood("staff_wait", "deactivate") room_humanoid:setDynamicInfoText("") end end end end function Room:tryAdvanceQueue() if self.door.queue:size() > 0 and not self.door.user and not self.door.reserved_for then local front = self.door.queue:front() -- These two conditions differ by the waiting symbol if self:canHumanoidEnter(front) then self.door.queue:pop() self.door:updateDynamicInfo() -- Do nothing if it is the staff room or training room. if self:hasQueueDialog() then for room_humanoid in pairs(self.humanoids) do -- Staff is now waiting if class.is(room_humanoid, Staff) then if room_humanoid.humanoid_class ~= "Handyman" then room_humanoid:setMood("staff_wait", "activate") room_humanoid:setDynamicInfoText(_S.dynamic_info.staff.actions.waiting_for_patient) end end end end elseif self.humanoids[front] then self.door.queue:pop() self.door:updateDynamicInfo() end end end function Room:onHumanoidLeave(humanoid) if self.staff_member == humanoid then self.staff_member = nil end humanoid.in_room = nil if not self.humanoids[humanoid] then print("Warning: Humanoid leaving a room that they are not in") return end self.humanoids[humanoid] = nil local staff_leaving = false if class.is(humanoid, Patient) then -- Some staff member in the room might be waiting to get to the staffroom. for room_humanoid in pairs(self.humanoids) do -- A patient leaving allows doctors/nurses inside to go to staffroom, if needed -- In a rare case a handyman that just decided he wants to go to the staffroom -- could be in the room at the same time as a patient leaves. if class.is(room_humanoid, Staff) and room_humanoid.humanoid_class ~= "Handyman" then if room_humanoid.staffroom_needed then room_humanoid.staffroom_needed = nil room_humanoid:goToStaffRoom() staff_leaving = true end end end -- There might be other similar rooms with patients queueing if self.door.queue and self.door.queue:reportedSize() == 0 then self:tryToFindNearbyPatients() end end if not staff_leaving then self:tryAdvanceQueue() else -- Staff is leaving. If there is still a need for this room (people are in the queue) then call -- someone new. if self.active and self.door.queue:patientSize() > 0 then -- This call might not be effective, if the doctor last action is -- walking/must_happen but is_leaving not set (psych likes to walk around in the room) -- hence testStaffCriteria still pass. -- This is guarded by onHumanoidLeave(Staff) self.world.dispatcher:callForStaff(self) end end if class.is(humanoid, Staff) then if humanoid.waiting_on_other_staff then humanoid.waiting_on_other_staff = nil self.dealt_patient_callback = nil end -- Make patients leave the room if there are no longer enough staff if not self:testStaffCriteria(self:getRequiredStaffCriteria()) then local patient_needs_to_reenter = false for room_humanoid in pairs(self.humanoids) do if class.is(room_humanoid, Patient) and self:shouldHavePatientReenter(room_humanoid) then self:makeHumanoidLeave(room_humanoid) room_humanoid:queueAction(self:createEnterAction(room_humanoid)) patient_needs_to_reenter = true end end -- Call for staff if needed if self.is_active and (patient_needs_to_reenter or self.door.queue:patientSize() > 0) then self.world.dispatcher:callForStaff(self) end end -- Remove any unwanted moods the staff member might have humanoid:setMood("staff_wait", "deactivate") end -- The player might be waiting to edit this room if not self.is_active then local i = 0 for _ in pairs(self.humanoids) do i = i + 1 end if i == 0 then local ui = self.world.ui ui:addWindow(UIEditRoom(ui, self)) ui:setCursor(ui.default_cursor) end end end function Room:shouldHavePatientReenter(patient) return not patient:hasLeavingAction() end local tile_factor = 10 -- how many tiles further are we willing to walk for 1 person fewer in the queue local readiness_bonus = 50 -- how many tiles further are we willing to walk if the room has all the required staff --! Score function to decide how desirable a room is for a patient. --!return (int) The score, lower is better. function Room:getUsageScore() local queue = self.door.queue local score = queue:patientSize() + self:getPatientCount() - self.maximum_patients score = score * tile_factor if self:testStaffCriteria(self:getRequiredStaffCriteria()) then score = score - readiness_bonus end -- Add constant penalty if queue is full if queue:isFull() then score = score + 1000 end return score end function Room:canHumanoidEnter(humanoid) -- If the room is not active nobody can enter if not self.is_active then return false end -- By default, staff can always enter if class.is(humanoid, Staff) then return true end -- By default, patients can only enter if there are sufficient staff and not -- too many patients. if class.is(humanoid, Patient) and not self.needs_repair then return self:testStaffCriteria(self:getRequiredStaffCriteria()) and self:getPatientCount() < self.maximum_patients end -- By default, other classes of humanoids cannot enter return false end -- Function stub for rooms to implement. Called when the final confirm -- button has been pressed when building/editing a room. function Room:roomFinished() -- True once the room has been finished after initial construction, and then -- as long as the user doesn't edit it and go back beyond the first phase (place objects) self.built = true -- Only true when not editing the room at all. self.is_active = true -- Some rooms should not have the door cursor for the queue dialog if not self:hasQueueDialog() then self.door.hover_cursor = TheApp.gfx:loadMainCursor("default") end -- Show information about the room if not already shown. -- Also only show them if the player is playing the original campaign. if tonumber(self.world.map.level_number) and not self.world.room_information_dialogs_off then if not self.world.room_built[self.room_info.id] then self.world.ui:addWindow(UIInformation(self.world.ui, _S.room_descriptions[self.room_info.id])) self.world.room_built[self.room_info.id] = true end end self:tryToFindNearbyPatients() -- It may also happen that there are patients queueing for this room already (e.g after editing) if self.door.queue:patientSize() > 0 then self.world.dispatcher:callForStaff(self) end self:tryAdvanceQueue() end --! Try to move a patient from the old room to the new room. --!param old_room (Room) Room that currently has the patient in the queue. --!param new_room (Room) Room that wants the patient in the queue. --!param patient (Humanoid) Patient to move. --!return (boolean) Whether we are done with the old room (no more patients will come from it). local function tryMovePatient(old_room, new_room, patient) local world = new_room.world local px, py = patient.tile_x, patient.tile_y -- Don't reroute the patient if he just decided to go to the toilet if patient.going_to_toilet ~= "no" then return false end local new_x, new_y = new_room:getEntranceXY(true) local old_x, old_y = old_room:getEntranceXY(true) local new_distance = world:getPathDistance(px, py, new_x, new_y) if not new_distance then return true end -- Patient cannot reach us, quit trying local new_score = new_room:getUsageScore() + new_distance local old_score local old_distance = world:getPathDistance(px, py, old_x, old_y) if old_distance then old_score = old_room:getUsageScore() + old_distance else old_score = new_score + 1 -- Make condition below fail. end if new_score >= old_score then return true end -- Update the queues local old_queue = old_room.door.queue old_queue:removeValue(patient) patient.next_room_to_visit = new_room new_room.door.queue:expect(patient) new_room.door:updateDynamicInfo() -- Rewrite the action queue for i, action in ipairs(patient.action_queue) do if i ~= 1 then action.todo_interrupt = true end -- The patient will most likely have a queue action for the other -- room that must be cancelled. To prevent the after_use callback -- of the drinks machine to enqueue the patient in the other queue -- again, is_in_queue is set to false so the callback won't run if action.name == 'queue' then action.is_in_queue = false elseif action.name == "walk" and action.x == old_x and action.y == old_y then patient:queueAction(new_room:createEnterAction(patient), i) break end end local interrupted = patient.action_queue[1] local on_interrupt = interrupted.on_interrupt if on_interrupt then interrupted.on_interrupt = nil on_interrupt(interrupted, patient, false) end return false end --! Try to find new patients for this room by 'stealing' them from other rooms nearby. function Room:tryToFindNearbyPatients() if not self.door.queue then return end for _, old_room in pairs(self.world.rooms) do if old_room.hospital == self.hospital and old_room ~= self and old_room.room_info == self.room_info and old_room.door.queue and old_room.door.queue:reportedSize() >= 2 then local old_queue = old_room.door.queue local pat_number = old_queue:reportedSize() while pat_number > 1 do local patient = old_queue:reportedHumanoid(pat_number) if tryMovePatient(old_room, self, patient) then break end -- tryMovePatient may have just removed patient 'pat_number', but it does -- not change the queue in front of it. 'pat_number - 1' thus still exists. pat_number = pat_number - 1 end end end end --! Explode the room. function Room:crashRoom() self.door:closeDoor() if self.door2 then self.door2.hover_cursor = nil end -- A patient might be about to use the door (staff are dealt with elsewhere): if self.door.reserved_for then local person = self.door.reserved_for if not person:isLeaving() then if class.is(person, Patient) then --Delay so that room is destroyed before the SeekRoom search. person:queueAction(IdleAction():setCount(1)) person:queueAction(SeekRoomAction(self.room_info.id)) end end person:finishAction() self.door.reserved_for = nil end local remove_humanoid = function(humanoid) humanoid:queueAction(IdleAction(), 1) humanoid.user_of = nil -- Make sure any emergency list is not messed up. -- Note that these humanoids might just have been kicked. (No hospital set) if humanoid.is_emergency then table.remove(self.world:getLocalPlayerHospital().emergency_patients, humanoid.is_emergency) end humanoid:die() self.world:destroyEntity(humanoid) end -- Remove all humanoids in the room for humanoid, _ in pairs(self.humanoids) do remove_humanoid(humanoid) end -- There might also be someone using the door, even if that person is just about to exit -- he/she is killed too. local walker = self.door.user if walker then self.door:removeUser(walker) remove_humanoid(walker) end -- Remove all objects in the room local fx, fy = self:getEntranceXY(true) for object, _ in pairs(self.world:findAllObjectsNear(fx, fy)) do -- Machines (i.e. objects with strength) are already done. if object.object_type.class == "Plant" then local index = self.hospital:getIndexOfTask(object.tile_x, object.tile_y, "watering") if index ~= -1 then self.hospital:removeHandymanTask(index, "watering") end object.unreachable = true end if object.object_type.id ~= "door" and not object.strength and object.object_type.class ~= "SwingDoor" then object.user = nil object.user_list = nil object.reserved_for = nil object.reserved_for_list = nil self.world:destroyEntity(object) end end local map = self.world.map.th -- TODO: Explosion, animations: 4612, 3280 -- Make every floor tile have soot on them for x = self.x, self.x + self.width - 1 do for y = self.y, self.y + self.height - 1 do local soot = self.world:newObject("litter", x, y) soot:setLitterType("soot_floor", 0) end end -- Make walls have soot on them too local ty = self.y local soot_type, soot, block for x = self.x, self.x + self.width - 1 do block = map:getCell(x, ty, 2) soot_type = "soot_wall" if self.world:getWallSetFromBlockId(block) == "window_tiles" then soot_type = "soot_window" end soot = self.world:newObject("litter", x, ty) soot:setLitterType(soot_type, 1) end local x = self.x for y = self.y, self.y + self.height - 1 do block = map:getCell(x, y, 3) soot_type = "soot_wall" if self.world:getWallSetFromBlockId(block) == "window_tiles" then soot_type = "soot_window" end soot = self.world:newObject("litter", x, y) soot:setLitterType(soot_type, 0) end self.hospital.num_explosions = self.hospital.num_explosions + 1 self.crashed = true self:deactivate() end -- Tells a humanoid in the room to leave it. This can be overridden for special -- handling, e.g. if the humanoid needs to change before leaving the room. function Room:makeHumanoidLeave(patient) local leave = self:createLeaveAction():setMustHappen(true) patient:setNextAction(leave) end function Room:makeHumanoidDressIfNecessaryAndThenLeave(humanoid) if not humanoid:isLeaving() then local leave = self:createLeaveAction():setMustHappen(true) if not string.find(humanoid.humanoid_class, "Stripped") then humanoid:setNextAction(leave) return end local screen, sx, sy = self.world:findObjectNear(humanoid, "screen") local use_screen = UseScreenAction(screen):setMustHappen(true):setIsLeaving(true) --Make old saved game action queues compatible with the changes made by the #293 fix commit: for actions_index, action in ipairs(humanoid.action_queue) do if action.name == "use screen" or (action.name == "walk" and action.x == sx and action.y == sy) then if not action.is_leaving then humanoid.humanoid_actions[actions_index].is_leaving = true end if action.name == "walk" and action.must_happen then action.must_happen = false end end end if humanoid.action_queue[1].name == "use_screen" then --The humanoid must be using the screen to undress because this isn't a leaving action: humanoid.action_queue[1].after_use = nil humanoid:setNextAction(use_screen) else humanoid:setNextAction(WalkAction(sx, sy):setMustHappen(true):disableTruncate():setIsLeaving(true)) humanoid:queueAction(use_screen) end humanoid:queueAction(leave) end end --! Deactivate the room from the world. function Room:deactivate() self.is_active = false -- So that no more patients go to it. self.world:notifyRoomRemoved(self) for _, callback in pairs(self.humanoids_enroute) do callback.callback() end -- Now empty the humanoids_enroute list since they are not enroute anymore. self.humanoids_enroute = {} self.hospital:removeRatholesAroundRoom(self) end function Room:tryToEdit() self:deactivate() local i = 0 -- Tell all humanoids that they should leave -- If someone is entering the room right now they are also counted. if self.door.user and self.door.user.action_queue[1].is_entering then i = 1 end for humanoid, _ in pairs(self.humanoids) do if not humanoid:isLeaving() then if class.is(humanoid, Patient) then self:makeHumanoidLeave(humanoid) humanoid:queueAction(SeekRoomAction(self.room_info.id)) else humanoid:setNextAction(self:createLeaveAction()) humanoid:queueAction(MeanderAction()) end end i = i + 1 end -- If there were no people inside we're ready to edit the room if i == 0 then local ui = self.world.ui ui:addWindow(UIEditRoom(ui, self)) ui:setCursor(ui.default_cursor) end end function Room:hasQueueDialog() return not self.room_info.has_no_queue_dialog end --! Stub to be extended in subclasses, if needed. function Room:afterLoad(old, new) if old and old < 46 then self.humanoids_enroute = {--[[a set rather than a list]]} end end --[[ Is the room one of the diagnosis rooms for the patient? -- This used for epidemics when the disease and therefore the diagnosis -- rooms of a patient may change. -- @param patient (Patient) patient to verify if treatment room ]] -- @return result (boolean) true if is suitable diagnosis room, false otherwise function Room:isDiagnosisRoomForPatient(patient) if self.room_info.id ~= "gp" then for _, room_name in ipairs(patient.disease.diagnosis_rooms) do if self.room_info.id == room_name then return true end end return false else return true end end --! Get the average service quality of the staff members in the room. --!return (float) [0-1] Average staff service quality. function Room:getStaffServiceQuality() local quality = 0.5 if self.staff_member_set then -- For rooms with multiple staff member (like operating theatre) quality = 0 local count = 0 for member, _ in pairs(self.staff_member_set) do quality = quality + member:getServiceQuality() count = count + 1 end quality = quality / count elseif self.staff_member then -- For rooms with one staff member quality = self.staff_member:getServiceQuality() end return quality end CorsixTH-0.61/CorsixTH/Lua/rooms/000077500000000000000000000000001321660673500165375ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/rooms/blood_machine_room.lua000066400000000000000000000056071321660673500230710ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "blood_machine" room.level_config_id = 15 room.class = "BloodMachineRoom" room.name = _S.rooms_short.blood_machine room.long_name = _S.rooms_long.blood_machine room.tooltip = _S.tooltip.rooms.blood_machine room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { blood_machine = 1 } room.build_preview_animation = 5094 room.categories = { diagnosis = 6, } room.minimum_size = 4 room.wall_type = "yellow" room.floor_tile = 19 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd006.wav" room.handyman_call_sound = "maint015.wav" class "BloodMachineRoom" (Room) ---@type BloodMachineRoom local BloodMachineRoom = _G["BloodMachineRoom"] function BloodMachineRoom:BloodMachineRoom(...) self:Room(...) end function BloodMachineRoom:commandEnteringPatient(patient) local staff = self.staff_member local machine, stf_x, stf_y = self.world:findObjectNear(patient, "blood_machine") local pat_x, pat_y = machine:getSecondaryUsageTile() staff:setNextAction(WalkAction(stf_x, stf_y)) patient:setNextAction(WalkAction(pat_x, pat_y)) patient:queueAction(IdleAction():setDirection(machine.direction == "north" and "west" or "north")) local length = math.random(2, 4) local loop_callback = --[[persistable:blood_machine_loop_callback]] function(action) if length <= 0 then action.prolonged_usage = false end length = length - 1 end local after_use = --[[persistable:blood_machine_after_use]] function() staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end staff:queueAction(MultiUseObjectAction(machine, patient):setProlongedUsage(true) :setInvisiblePhaseSpan({-3, 3}):setLoopCallback(loop_callback):setAfterUse(after_use)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/cardiogram.lua000066400000000000000000000103431321660673500213530ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "cardiogram" room.level_config_id = 12 room.class = "CardiogramRoom" room.name = _S.rooms_short.cardiogram room.long_name = _S.rooms_long.cardiogram room.tooltip = _S.tooltip.rooms.cardiogram room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { cardio = 1, screen = 1 } room.build_preview_animation = 918 room.categories = { diagnosis = 3, } room.minimum_size = 4 room.wall_type = "yellow" room.floor_tile = 19 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd001.wav" room.handyman_call_sound = "maint010.wav" class "CardiogramRoom" (Room) ---@type CardiogramRoom local CardiogramRoom = _G["CardiogramRoom"] function CardiogramRoom:CardiogramRoom(...) self:Room(...) end function CardiogramRoom:commandEnteringPatient(patient) local screen, sx, sy = self.world:findObjectNear(patient, "screen") patient:walkTo(sx, sy) local screen_after_use = --[[persistable:cardiogram_screen_after_use1]] function() local staff = self.staff_member local cardio, cx, cy = self.world:findObjectNear(patient, "cardio") staff:walkTo(cardio:getSecondaryUsageTile()) local staff_idle = IdleAction() staff:queueAction(staff_idle) patient:walkTo(cx, cy) local timer = 6 local phase = -2 local cardio_loop_callback = --[[persistable:cardiogram_cardio_loop_callback]] function(action) if not action.on_interrupt then action.prolonged_usage = false patient.num_animation_ticks = 1 return end timer = timer - 1 if timer == 0 then phase = phase + 1 if phase == 3 then action.prolonged_usage = false else patient.num_animation_ticks = 3 - math.abs(phase) end timer = 6 else action.secondary_anim = 1030 end end local cardio_after_use = --[[persistable:cardiogram_cardio_after_use]] function() if #staff.action_queue == 1 then staff:setNextAction(MeanderAction()) else staff:finishAction(staff_idle) end end patient:queueAction(MultiUseObjectAction(cardio, staff):setMustHappen(false) :setProlongedUsage(true):setLoopCallback(cardio_loop_callback):setAfterUse(cardio_after_use)) patient:queueAction(WalkAction(sx, sy):setIsLeaving(true):setMustHappen(false):disableTruncate()) local leaving_after_use = --[[persistable:cardiogram_screen_after_use2]] function() if #patient.action_queue == 1 then self:dealtWithPatient(patient) end end patient:queueAction(UseScreenAction(screen):setIsLeaving(true):setMustHappen(true):setAfterUse(leaving_after_use)) end patient:queueAction(UseScreenAction(screen):setAfterUse(screen_after_use)) return Room.commandEnteringPatient(self, patient) end function CardiogramRoom:makeHumanoidLeave(humanoid) self:makeHumanoidDressIfNecessaryAndThenLeave(humanoid) end function CardiogramRoom:onHumanoidLeave(humanoid) if self.staff_member == humanoid then self.staff_member = nil end Room.onHumanoidLeave(self, humanoid) end function CardiogramRoom:shouldHavePatientReenter(patient) return not patient:isLeaving() end return room CorsixTH-0.61/CorsixTH/Lua/rooms/decontamination.lua000066400000000000000000000100721321660673500224160ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "decontamination" room.level_config_id = 30 room.class = "DecontaminationRoom" room.name = _S.rooms_short.decontamination room.long_name = _S.rooms_long.decontamination room.tooltip = _S.tooltip.rooms.decontamination room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { shower = 1, console = 1 } room.build_preview_animation = 5100 room.categories = { clinics = 8, } room.minimum_size = 5 room.wall_type = "blue" room.floor_tile = 19 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd024.wav" room.handyman_call_sound = "maint012.wav" class "DecontaminationRoom" (Room) ---@type DecontaminationRoom local DecontaminationRoom = _G["DecontaminationRoom"] function DecontaminationRoom:DecontaminationRoom(...) self:Room(...) end function DecontaminationRoom:commandEnteringStaff(staff) self.staff_member = staff staff:setNextAction(MeanderAction()) return Room.commandEnteringStaff(self, staff) end function DecontaminationRoom:commandEnteringPatient(patient) local staff = self.staff_member local shower, pat_x, pat_y = self.world:findObjectNear(patient, "shower") local console, stf_x, stf_y = self.world:findObjectNear(staff, "console") local --[[persistable:decontamination_shared_loop_callback]] function loop_callback() if staff.action_queue[1].shower_ready and patient.action_queue[1].shower_ready then staff:finishAction() patient:finishAction() end end staff:walkTo(stf_x, stf_y) local idle_action = IdleAction():setDirection(console.direction == "north" and "west" or "north") :setLoopCallback(loop_callback) idle_action.shower_ready = true staff:queueAction(idle_action) staff:queueAction(UseObjectAction(console)) patient:walkTo(pat_x, pat_y) idle_action = IdleAction():setDirection(shower.direction == "north" and "north" or "west") :setLoopCallback(loop_callback) idle_action.shower_ready = true patient:queueAction(idle_action) local prolonged = true local length = math.random() * 3 - staff.profile.skill if length < 1 then prolonged = false -- Really short usage else length = length - 1 end local shower_loop_callback = --[[persistable:shower_loop_callback]] function(action) length = length - 1 if length <= 0 then action.prolonged_usage = false end end local shower_after_use = --[[persistable:shower_after_use]] function() if not self.staff_member then return end self.staff_member:setNextAction(MeanderAction()) if not patient.going_home then self:dealtWithPatient(patient) end end patient:queueAction(UseObjectAction(shower):setProlongedUsage(prolonged) :setLoopCallback(shower_loop_callback):setAfterUse(shower_after_use)) return Room.commandEnteringPatient(self, patient) end function DecontaminationRoom:onHumanoidLeave(humanoid) if self.staff_member == humanoid then self.staff_member = nil end Room.onHumanoidLeave(self, humanoid) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/dna_fixer.lua000066400000000000000000000065411321660673500212070ustar00rootroot00000000000000--[[ Copyright (c) 2011 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "dna_fixer" room.level_config_id = 23 room.class = "DNAFixerRoom" room.name = _S.rooms_short.dna_fixer room.long_name = _S.rooms_long.dna_fixer room.tooltip = _S.tooltip.rooms.dna_fixer room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { dna_fixer = 1, console = 1 } room.build_preview_animation = 5070 room.categories = { clinics = 6, } room.minimum_size = 5 room.wall_type = "blue" room.floor_tile = 17 room.swing_doors = true room.required_staff = { Researcher = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd015.wav" room.handyman_call_sound = "maint006.wav" class "DNAFixerRoom" (Room) ---@type DNAFixerRoom local DNAFixerRoom = _G["DNAFixerRoom"] function DNAFixerRoom:DNAFixerRoom(...) self:Room(...) end function DNAFixerRoom:commandEnteringPatient(patient) local staff = self.staff_member local dna_fixer, pat_x, pat_y = self.world:findObjectNear(patient, "dna_fixer") local console, stf_x, stf_y = self.world:findObjectNear(staff, "console") local --[[persistable:dna_fixer_shared_loop_callback]] function loop_callback() -- If the other humanoid has already started to idle we move on if staff.action_queue[1].name == "idle" and patient.action_queue[1].name == "idle" then -- We need to change to another type before starting, to be able -- to have different animations depending on gender. patient:setType(patient.change_into) local fixer_after_use = --[[persistable:dna_fixer_after_use]] function() self:dealtWithPatient(patient) staff:setNextAction(MeanderAction()) end patient:setNextAction(UseObjectAction(dna_fixer):setProlongedUsage(false) :setAfterUse(fixer_after_use)) staff:setNextAction(UseObjectAction(console)) end end -- As soon as one starts to idle the callback is called to see if the other one is already idling. patient:walkTo(pat_x, pat_y) patient:queueAction(IdleAction():setDirection(dna_fixer.direction == "north" and "north" or "west") :setLoopCallback(loop_callback)) staff:walkTo(stf_x, stf_y) staff:queueAction(IdleAction():setDirection(console.direction == "north" and "north" or "west") :setLoopCallback(loop_callback)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/electrolysis.lua000066400000000000000000000107231321660673500217660ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "electrolysis" room.level_config_id = 23 room.class = "ElectrolysisRoom" room.name = _S.rooms_short.electrolysis room.long_name = _S.rooms_long.electrolysis room.tooltip = _S.tooltip.rooms.electrolysis room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { electrolyser = 1, console = 1 } room.build_preview_animation = 930 room.categories = { clinics = 5, } room.minimum_size = 5 room.wall_type = "blue" room.floor_tile = 17 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd019.wav" room.handyman_call_sound = "maint008.wav" class "ElectrolysisRoom" (Room) ---@type ElectrolysisRoom local ElectrolysisRoom = _G["ElectrolysisRoom"] function ElectrolysisRoom:ElectrolysisRoom(...) self:Room(...) end function ElectrolysisRoom:commandEnteringPatient(patient) local staff = self.staff_member local electrolyser, pat_x, pat_y = self.world:findObjectNear(patient, "electrolyser") local console, stf_x, stf_y = self.world:findObjectNear(staff, "console") local --[[persistable:electrolysis_shared_loop_callback]] function loop_callback() -- If the other humanoid has already started to idle we move on if staff.action_queue[1].name == "idle" and patient.action_queue[1].name == "idle" then -- Skilled doctors require less electrocutions local num_electrocutions = math.random(1, 5) * (2 - staff.profile.skill) -- We need to change to another type before starting, to be able -- to have different animations depending on gender. if math.random(0, 1) == 1 then patient:setType("Standard Male Patient") -- Other attributes already set else patient:setType("Standard Female Patient") patient:setLayer(0, math.random(1, 4) * 2) patient:setLayer(1, math.random(0, 3) * 2) patient:setLayer(2, 0) end local loop_callback_electrolysis = --[[persistable:electrolysis_loop_callback]] function(action) num_electrocutions = num_electrocutions - 1 if num_electrocutions <= 0 then -- Tired doctors can continue electrocuting for a bit too long... -- Fatigue 0.00 - normal number of electrocutions -- Fatigue 0.45 - normal number of electrocutions -- Fatigue 0.80 - expect 1 extra electrocution -- Fatigue 1.00 - expect 9 extra electrocutions if math.random() <= 0.1 + 2 * (1 - staff.attributes["fatigue"]) then action.prolonged_usage = false end end end local after_electrolysis = --[[persistable:electrolysis_after_use]] function() self:dealtWithPatient(patient) staff:setNextAction(MeanderAction()) end patient:setNextAction(UseObjectAction(electrolyser):setLoopCallback(loop_callback_electrolysis) :setAfterUse(after_electrolysis)) staff:setNextAction(UseObjectAction(console)) end end -- As soon as one starts to idle the callback is called to see if the other one is already idling. patient:walkTo(pat_x, pat_y) patient:queueAction(IdleAction():setDirection(electrolyser.direction == "north" and "east" or "south") :setLoopCallback(loop_callback)) staff:walkTo(stf_x, stf_y) staff:queueAction(IdleAction():setDirection(console.direction == "north" and "east" or "south") :setLoopCallback(loop_callback)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/fracture_clinic.lua000066400000000000000000000051561321660673500224050ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "fracture_clinic" room.level_config_id = 21 room.class = "FractureRoom" room.name = _S.rooms_short.fracture_clinic room.long_name = _S.rooms_long.fracture_clinic room.tooltip = _S.tooltip.rooms.fracture_clinic room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { cast_remover = 1 } room.build_preview_animation = 5072 room.categories = { clinics = 3, } room.minimum_size = 4 room.wall_type = "blue" room.floor_tile = 17 room.required_staff = { Nurse = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd004.wav" room.handyman_call_sound = "maint014.wav" class "FractureRoom" (Room) ---@type FractureRoom local FractureRoom = _G["FractureRoom"] function FractureRoom:FractureRoom(...) self:Room(...) end function FractureRoom:commandEnteringPatient(patient) local staff = self.staff_member local cast, pat_x, pat_y = self.world:findObjectNear(patient, "cast_remover") local stf_x, stf_y = cast:getSecondaryUsageTile() staff:walkTo(stf_x, stf_y) staff:queueAction(IdleAction():setDirection(cast.direction == "north" and "west" or "north")) patient:walkTo(pat_x, pat_y) local after_fracture = --[[persistable:fracture_clinic_after_use]] function() patient:setLayer(2, 0) -- Remove casts patient:setLayer(3, 0) patient:setLayer(4, 0) staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end patient:queueAction(MultiUseObjectAction(cast, staff):setAfterUse(after_fracture)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/general_diag.lua000066400000000000000000000072061321660673500216500ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "general_diag" room.level_config_id = 27 room.class = "GeneralDiagRoom" room.name = _S.rooms_short.general_diag room.long_name = _S.rooms_long.general_diag room.tooltip = _S.tooltip.rooms.general_diag room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { screen = 1, crash_trolley = 1 } room.build_preview_animation = 916 room.categories = { diagnosis = 2, } room.minimum_size = 5 room.wall_type = "green" room.floor_tile = 21 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd021.wav" class "GeneralDiagRoom" (Room) ---@type GeneralDiagRoom local GeneralDiagRoom = _G["GeneralDiagRoom"] function GeneralDiagRoom:GeneralDiagRoom(...) self:Room(...) end function GeneralDiagRoom:commandEnteringPatient(patient) local screen, sx, sy = self.world:findObjectNear(patient, "screen") patient:walkTo(sx, sy) local after_use_screen1 = --[[persistable:general_diag_screen_after_use1]] function() local staff = self.staff_member local trolley, cx, cy = self.world:findObjectNear(patient, "crash_trolley") staff:walkTo(trolley:getSecondaryUsageTile()) local staff_idle = IdleAction() staff:queueAction(staff_idle) patient:walkTo(cx, cy, true) local after_use_trolley = --[[persistable:general_diag_trolley_after_use]] function() if #staff.action_queue == 1 then staff:setNextAction(MeanderAction()) else staff:finishAction(staff_idle) end end patient:queueAction(MultiUseObjectAction(trolley, staff):setMustHappen(false) :setProlongedUsage(false):setAfterUse(after_use_trolley)) patient:queueAction(WalkAction(sx, sy):setIsLeaving(true):setMustHappen(false):disableTruncate()) local after_use_screen2 = --[[persistable:general_diag_screen_after_use2]] function() if #patient.action_queue == 1 then self:dealtWithPatient(patient) end end patient:queueAction(UseScreenAction(screen):setIsLeaving(true):setMustHappen(true) :setAfterUse(after_use_screen2)) end patient:queueAction(UseScreenAction(screen):setAfterUse(after_use_screen1)) return Room.commandEnteringPatient(self, patient) end function GeneralDiagRoom:onHumanoidLeave(humanoid) if self.staff_member == humanoid then self.staff_member = nil end Room.onHumanoidLeave(self, humanoid) end function GeneralDiagRoom:makeHumanoidLeave(humanoid) self:makeHumanoidDressIfNecessaryAndThenLeave(humanoid) end function GeneralDiagRoom:shouldHavePatientReenter(patient) return not patient:isLeaving() end return room CorsixTH-0.61/CorsixTH/Lua/rooms/gp.lua000066400000000000000000000170211321660673500176510ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "gp" room.level_config_id = 7 room.class = "GPRoom" room.name = _S.rooms_short.gps_office room.long_name = _S.rooms_long.gps_office room.tooltip = _S.tooltip.rooms.gps_office room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { desk = 1, cabinet = 1, chair = 1 } room.build_preview_animation = 900 room.categories = { diagnosis = 1, } room.minimum_size = 4 room.wall_type = "white" room.floor_tile = 18 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd008.wav" class "GPRoom" (Room) ---@type GPRoom local GPRoom = _G["GPRoom"] function GPRoom:GPRoom(...) self:Room(...) end function GPRoom:doStaffUseCycle(humanoid) local obj, ox, oy = self.world:findObjectNear(humanoid, "cabinet") humanoid:walkTo(ox, oy) humanoid:queueAction(UseObjectAction(obj)) obj, ox, oy = self.world:findObjectNear(humanoid, "desk") humanoid:queueAction(WalkAction(ox, oy)) -- A skilled doctor requires less time at the desk to diagnose the patient local inv_skill = 1 - humanoid.profile.skill local desk_use_time = math.random(math.floor(3 + 5 * inv_skill), math.ceil (8 + 10 * inv_skill)) local gp_loop_callback = --[[persistable:gp_loop_callback]] function() desk_use_time = desk_use_time - 1 if desk_use_time == 0 then -- Consultants who aren't tired might not need to stretch their legs -- to remain alert, so might just remain at the desk and deal with the -- next patient quicker. if humanoid.profile.is_consultant and math.random() >= humanoid.attributes.fatigue then desk_use_time = math.random(7, 14) else self:doStaffUseCycle(humanoid) end local patient = self:getPatient() if patient then if math.random() <= (0.7 + 0.3 * humanoid.profile.skill) or self.max_times <= 0 then if patient.user_of and not class.is(patient.user_of, Door) then self:dealtWithPatient(patient) end else self.max_times = self.max_times - 1 end end end end humanoid:queueAction(UseObjectAction(obj):setLoopCallback(gp_loop_callback)) end function GPRoom:commandEnteringStaff(humanoid) self.staff_member = humanoid self:doStaffUseCycle(humanoid) return Room.commandEnteringStaff(self, humanoid, true) end function GPRoom:commandEnteringPatient(humanoid) local obj, ox, oy = self.world:findObjectNear(humanoid, "chair") humanoid:walkTo(ox, oy) humanoid:queueAction(UseObjectAction(obj)) self.max_times = 3 return Room.commandEnteringPatient(self, humanoid) end function GPRoom:shouldHavePatientReenter(patient) return not patient.diagnosed and Room.shouldHavePatientReenter(self, patient) end function GPRoom:dealtWithPatient(patient) patient = patient or self:getPatient() -- If patients are slow to leave the chair, and staff are quick in their -- usage cycle, then dealtWithPatient() might get called twice for the -- same patient, in which case the second call must be ignored (otherwise -- if the first call resulted in the patient being diagnosed, the following -- logic would cause the patient to leave the room and stand indefinitely). if patient == self.just_dealt_with then return else self.just_dealt_with = patient end patient:setNextAction(self:createLeaveAction()) patient:addToTreatmentHistory(self.room_info) -- If the patient got sent to the wrong room and needs telling where -- to go next - this happens when a disease changes for an epidemic if patient.needs_redirecting then self:sendPatientToNextDiagnosisRoom(patient) patient.needs_redirecting = false elseif patient.disease and not patient.diagnosed then self.hospital:receiveMoneyForTreatment(patient) patient:completeDiagnosticStep(self) if patient.diagnosis_progress >= self.hospital.policies["stop_procedure"] then patient:setDiagnosed() if patient:agreesToPay(patient.disease.id) then patient:queueAction(SeekRoomAction(patient.disease.treatment_rooms[1]):enableTreatmentRoom()) else patient:goHome("over_priced", patient.disease.id) end self.staff_member:setMood("idea3", "activate") -- Show the light bulb over the doctor -- Check if this disease has just been discovered if not self.hospital.disease_casebook[patient.disease.id].discovered then self.hospital.research:discoverDisease(patient.disease) end else self:sendPatientToNextDiagnosisRoom(patient) end else patient:queueAction(MeanderAction():setCount(2)) patient:queueAction(IdleAction()) end if self.dealt_patient_callback then self.dealt_patient_callback(self.waiting_staff_member) end if self.staff_member then self:setStaffMembersAttribute("dealing_with_patient", false) end -- Maybe the staff member can go somewhere else self:findWorkForStaff() end function GPRoom:sendPatientToNextDiagnosisRoom(patient) if #patient.available_diagnosis_rooms == 0 then -- The very rare case where the patient has visited all his/her possible diagnosis rooms -- There's not much to do then... Send home patient:goHome("kicked") patient:updateDynamicInfo(_S.dynamic_info.patient.actions.no_diagnoses_available) else self.staff_member:setMood("reflexion", "activate") -- Show the uncertainty mood over the doctor local next_room_id = math.random(1, #patient.available_diagnosis_rooms) local next_room = patient.available_diagnosis_rooms[next_room_id] if patient:agreesToPay("diag_" .. next_room) then patient:queueAction(SeekRoomAction(next_room):setDiagnosisRoom(next_room_id)) else patient:goHome("over_priced", "diag_" .. next_room) end end end function GPRoom:onHumanoidLeave(humanoid) -- Reset moods when either the patient or the doctor leaves the room. if humanoid.humanoid_class ~= "Handyman" then for staff, _ in pairs(self.humanoids) do staff:setMood("idea3", "deactivate") staff:setMood("reflexion", "deactivate") end end if self.staff_member == humanoid then self.staff_member = nil end if self.just_dealt_with == humanoid then self.just_dealt_with = nil end Room.onHumanoidLeave(self, humanoid) end function GPRoom:roomFinished() if not self.hospital:hasStaffOfCategory("Doctor") and not self.world.ui.start_tutorial then self.world.ui.adviser:say(_A.room_requirements.gps_office_need_doctor) end return Room.roomFinished(self) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/hair_restoration.lua000066400000000000000000000065401321660673500226230ustar00rootroot00000000000000--[[ Copyright (c) 2010 Miika-Petteri Matikainen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "hair_restoration" room.level_config_id = 19 room.class = "HairRestorationRoom" room.name = _S.rooms_short.hair_restoration room.long_name = _S.rooms_long.hair_restoration room.tooltip = _S.tooltip.rooms.hair_restoration room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { hair_restorer = 1, console = 1 } room.build_preview_animation = 5074 room.categories = { clinics = 4, } room.minimum_size = 4 room.wall_type = "blue" room.floor_tile = 17 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd016.wav" room.handyman_call_sound = "maint007.wav" class "HairRestorationRoom" (Room) ---@type HairRestorationRoom local HairRestorationRoom = _G["HairRestorationRoom"] function HairRestorationRoom:HairRestorationRoom(...) self:Room(...) end function HairRestorationRoom:commandEnteringPatient(patient) local staff = self.staff_member local hair_restorer, pat_x, pat_y = self.world:findObjectNear(patient, "hair_restorer") local console, stf_x, stf_y = self.world:findObjectNear(staff, "console") local --[[persistable:hair_restoration_shared_loop_callback]] function loop_callback() if staff.action_queue[1].name == "idle" and patient.action_queue[1].name == "idle" then local loop_callback_restore = --[[persistable:hair_restoration_loop_callback]] function(action) action.prolonged_usage = false end local after_use_restore = --[[persistable:hair_restoration_after_use]] function() patient:setLayer(0, patient.layers[0] + 2) -- Change to normal hair staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end patient:setNextAction(UseObjectAction(hair_restorer) :setLoopCallback(loop_callback_restore):setAfterUse(after_use_restore)) staff:setNextAction(UseObjectAction(console)) end end patient:walkTo(pat_x, pat_y) patient:queueAction(IdleAction():setDirection(hair_restorer.direction == "north" and "east" or "south") :setLoopCallback(loop_callback)) staff:walkTo(stf_x, stf_y) staff:queueAction(IdleAction():setDirection(console.direction == "north" and "east" or "south") :setLoopCallback(loop_callback)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/inflation.lua000066400000000000000000000051711321660673500212310ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "inflation" room.level_config_id = 17 room.class = "InflationRoom" room.name = _S.rooms_short.inflation room.long_name = _S.rooms_long.inflation room.tooltip = _S.tooltip.rooms.inflation room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { inflator = 1 } room.build_preview_animation = 908 room.categories = { clinics = 1, } room.minimum_size = 4 room.wall_type = "blue" room.floor_tile = 17 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd014.wav" room.handyman_call_sound = "maint013.wav" class "InflationRoom" (Room) ---@type InflationRoom local InflationRoom = _G["InflationRoom"] function InflationRoom:InflationRoom(...) self:Room(...) end function InflationRoom:commandEnteringPatient(patient) local staff = self.staff_member local inflator, pat_x, pat_y = self.world:findObjectNear(patient, "inflator") local stf_x, stf_y = inflator:getSecondaryUsageTile() staff:setNextAction(WalkAction(stf_x, stf_y)) staff:queueAction(IdleAction():setDirection(inflator.direction == "north" and "east" or "south")) patient:setNextAction(WalkAction(pat_x, pat_y)) local inflation_after_use = --[[persistable:inflation_after_use]] function() patient:setLayer(0, patient.layers[0] - 10) -- Change to normal head staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end patient:queueAction(MultiUseObjectAction(inflator, staff):setAfterUse(inflation_after_use)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/jelly_vat.lua000066400000000000000000000051231321660673500212340ustar00rootroot00000000000000--[[ Copyright (c) 2010 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "jelly_vat" room.level_config_id = 24 room.class = "JellyVatRoom" room.name = _S.rooms_short.jelly_vat room.long_name = _S.rooms_long.jelly_vat room.tooltip = _S.tooltip.rooms.jelly_vat room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { jelly_moulder = 1 } room.build_preview_animation = 928 room.categories = { clinics = 7, } room.minimum_size = 4 room.wall_type = "blue" room.floor_tile = 17 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd020.wav" room.handyman_call_sound = "maint009.wav" class "JellyVatRoom" (Room) ---@type JellyVatRoom local JellyVatRoom = _G["JellyVatRoom"] function JellyVatRoom:JellyVatRoom(...) self:Room(...) end function JellyVatRoom:commandEnteringPatient(patient) local staff = self.staff_member local moulder, stf_x, stf_y = self.world:findObjectNear(patient, "jelly_moulder") local pat_x, pat_y = moulder:getSecondaryUsageTile() staff:setNextAction(WalkAction(stf_x, stf_y)) local jellyvat_after_use = --[[persistable:jelly_vat_after_use]] function() staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end staff:queueAction(MultiUseObjectAction(moulder, patient):setInvisiblePhaseSpan({-3, 4}) :setAfterUse(jellyvat_after_use)) patient:setNextAction(WalkAction(pat_x, pat_y)) patient:queueAction(IdleAction():setDirection(moulder.direction == "north" and "west" or "north")) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/operating_theatre.lua000066400000000000000000000330401321660673500227460ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "operating_theatre" room.level_config_id = 10 room.class = "OperatingTheatreRoom" room.name = _S.rooms_short.operating_theatre room.long_name = _S.rooms_long.operating_theatre room.tooltip = _S.tooltip.rooms.operating_theatre room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { operating_table = 1, surgeon_screen = 1, op_sink1 = 1, x_ray_viewer = 1 } room.build_preview_animation = 5080 room.categories = { treatment = 3, } room.minimum_size = 6 room.wall_type = "white" room.floor_tile = 21 room.swing_doors = true room.required_staff = { Surgeon = 2, } room.call_sound = "reqd010.wav" -- TODO: There is also an unused sound -- "Another surgeon needed [...]", reqd011.wav -- room.handyman_call_sound = "maint007.wav" TODO: No sound for this room? class "OperatingTheatreRoom" (Room) ---@type OperatingTheatreRoom local OperatingTheatreRoom = _G["OperatingTheatreRoom"] function OperatingTheatreRoom:OperatingTheatreRoom(...) self:Room(...) self.staff_member_set = {} end function OperatingTheatreRoom:roomFinished() -- Find the X-ray viewer local fx, fy = self:getEntranceXY(true) local objects = self.world:findAllObjectsNear(fx, fy) for object in pairs(objects) do local id = object.object_type.id if id == "x_ray_viewer" then self[id] = object end end -- Tell the player what is missing, if anything. if not self.hospital:hasRoomOfType("ward") then self.world.ui.adviser:say(_A.room_requirements.op_need_ward) end if not self.hospital:hasStaffOfCategory("Surgeon") then self.world.ui.adviser:say(_A.room_requirements.op_need_two_surgeons) elseif self.hospital:hasStaffOfCategory("Surgeon") == 1 then self.world.ui.adviser:say(_A.room_requirements.op_need_another_surgeon) end return Room.roomFinished(self) end local function wait_for_object(humanoid, obj, must_happen) assert(type(must_happen) == "boolean", "must happen must be true or false") local loop_callback_wait = --[[persistable:operatring_theatre_wait]] function(action) if action.todo_interrupt or not obj.user then humanoid:finishAction(action) else humanoid:queueAction(IdleAction():setCount(5):setMustHappen(true), 0) end end return IdleAction():setMustHappen(must_happen):setLoopCallback(loop_callback_wait) end --! Returns true if an operation is ongoing function OperatingTheatreRoom:isOperating() for k, _ in pairs(self.staff_member_set) do if k.action_queue[1].name == "multi_use_object" then return true end end return false end --! Builds the second operation action (i.e. with the surgeon whose we --! see the back). Called either when the operation starts or when the --! operation is resumed after interruption caused by the picking up of --! the second surgeon. --! Note: Must be part of OperatingTheatreRoom and not a local function --! because of the use in the persisted callback function operation_standby. --!param multi_use (action): the first operation action (built with via buildTableAction1()). --!param operation_table_b (OperatingTable): slave object representing the operation table. function OperatingTheatreRoom._buildTableAction2(multi_use, operation_table_b) local num_loops = math.random(2, 5) local loop_callback_use_object = --[[persistable:operatring_theatre_use_callback]] function(action) num_loops = num_loops - 1 if num_loops <= 0 then action.prolonged_usage = false end end local after_use_use_object = --[[persistable:operatring_theatre_after_use]] function() multi_use.prolonged_usage = false end return UseObjectAction(operation_table_b):setLoopCallback(loop_callback_use_object) :setAfterUse(after_use_use_object):setMustHappen(true):disableTruncate() end function OperatingTheatreRoom:commandEnteringStaff(staff) -- Put surgeon outfit on local screen, screen_x, screen_y = self.world:findObjectNear(staff, "surgeon_screen") staff:walkTo(screen_x, screen_y) staff:queueAction(wait_for_object(staff, screen, false)) staff:queueAction(UseScreenAction(screen)) -- Resume operation if already ongoing if self:isOperating() then local surgeon1 = next(self.staff_member_set) local ongoing_action = surgeon1.action_queue[1] assert(ongoing_action.name == "multi_use_object") local table, table_x, table_y = self.world:findObjectNear(staff, "operating_table_b") self:queueWashHands(staff) staff:queueAction(WalkAction(table_x, table_y)) staff:queueAction(self._buildTableAction2(ongoing_action, table)) end self.staff_member_set[staff] = true -- Wait around for patients local loop_callback_more_patients = --[[persistable:operatring_theatre_after_surgeon_clothes_on]] function() self.staff_member_set[staff] = "ready" self:tryAdvanceQueue() end staff:queueAction(MeanderAction():setMustHappen(true):setLoopCallback(loop_callback_more_patients)) -- Ensure that surgeons turn back into doctors when they leave staff:queueAction(WalkAction(screen_x, screen_y):setMustHappen(true):setIsLeaving(true) :truncateOnHighPriority()) staff:queueAction(UseScreenAction(screen):setMustHappen(true):setIsLeaving(true)) return Room.commandEnteringStaff(self, staff, true) end function OperatingTheatreRoom:setStaffMembersAttribute(attribute, value) for staff_member, _ in pairs(self.staff_member_set) do staff_member[attribute] = value end end -- Returns the current staff member. if there are currently two surgeons it returns -- the one with higher tiredness. function OperatingTheatreRoom:getStaffMember() local staff for staff_member, _ in pairs(self.staff_member_set) do if staff and not staff.fired then if staff.attributes["fatigue"] < staff_member.attributes["fatigue"] then staff = staff_member end else staff = staff_member end end return staff end --! Builds the first operation action (i.e. with the surgeon whose we see the front). --!param surgeon1 (Staff): the surgeon who does this operation action. He must --! be the same as the surgeon who gets the action on his queue. --!param patient (Patient): the patient to be operated. --!param operation_table (OperatingTable): master object representing --! the operation table. function OperatingTheatreRoom:buildTableAction1(surgeon1, patient, operation_table) local loop_callback_multi_use = --[[persistable:operatring_theatre_multi_use_callback]] function(_) -- dirty hack to make the truncated animation work surgeon1.animation_idx = nil end local after_use_table = --[[persistable:operatring_theatre_table_after_use]] function() self:dealtWithPatient(patient) -- Tell the patient that it's time to leave, but only if the first action -- is really an idle action. if patient.action_queue[1].name == "idle" then patient:finishAction() end end return MultiUseObjectAction(operation_table, patient):setProlongedUsage(true) :setLoopCallback(loop_callback_multi_use):setAfterUse(after_use_table) :setMustHappen(true):disableTruncate() end --! Sends the surgeon to the nearest operation sink ("op_sink1") --! and makes him wash his hands --!param at_front (boolean): If true, add the actions at the front the action queue. --! Add the actions at the end of the queue otherwise. --! Default value is true. function OperatingTheatreRoom:queueWashHands(surgeon, at_front) local sink, sink_x, sink_y = self.world:findObjectNear(surgeon, "op_sink1") local walk = WalkAction(sink_x, sink_y):setMustHappen(true):disableTruncate() local wait = wait_for_object(surgeon, sink, true) local wash = UseObjectAction(sink):setMustHappen(true) for pos, action in pairs({walk, wait, wash}) do if (at_front) then surgeon:queueAction(action, pos) else surgeon:queueAction(action) end end end --! Turn on/off x-ray viewer - if it's been found --!param turn_on (boolean): true to switch on and false to switch off function OperatingTheatreRoom:setXRayOn(turn_on) if self.x_ray_viewer then self.x_ray_viewer:setLayer(11, (turn_on and 2 or 0)) end end function OperatingTheatreRoom:commandEnteringPatient(patient) -- Turn on x-ray viewer self:setXRayOn(true) -- Identify the staff local surgeon1 = next(self.staff_member_set) local surgeon2 = next(self.staff_member_set, surgeon1) assert(surgeon1 and surgeon2, "Not enough staff in operating theatre") -- Patient changes into surgical gown local screen, sx, sy = self.world:findObjectNear(patient, "surgeon_screen") patient:walkTo(sx, sy) patient:queueAction(UseScreenAction(screen)) -- Meanwhile, surgeons wash their hands -- TODO: They sometimes overlap each other when doing that. Can we avoid that? self:queueWashHands(surgeon1, true) self:queueWashHands(surgeon2, true) local num_ready = {0} ----- BEGIN Save game compatibility ----- -- These function are merely for save game compatibility. -- And they does not participate in the current game logic. -- Do not move or edit local --[[persistable:operatring_theatre_wait_for_ready]] function wait_for_ready(action) action.on_interrupt = nil if not action.done_ready then num_ready[1] = num_ready[1] + 1 action.done_ready = true end if num_ready[1] == 3 then surgeon1:finishAction() surgeon2:finishAction() end end local after_use = --[[persistable:operatring_theatre_after_multi_use]] function() self:dealtWithPatient(patient) patient:finishAction() end ----- END Save game compatibility ----- local --[[persistable:operatring_theatre_operation_standby]] function operation_standby(action, humanoid) action.on_interrupt = nil if not action.done_ready then num_ready[1] = num_ready[1] + 1 action.done_ready = true end if self.staff_member_set[humanoid] and self.staff_member_set[humanoid] == "abort" then humanoid:finishAction() elseif num_ready[1] == 3 then -- Only if everyone (2 Surgeons and Patient) ready, we schedule the operation action local obj, _, _ = self.world:findObjectNear(surgeon1, "operating_table") local table_action1 = self:buildTableAction1(surgeon1, patient, obj) surgeon1:queueAction(table_action1, 1) obj, _, _ = self.world:findObjectNear(surgeon2, "operating_table_b") surgeon2:queueAction(self._buildTableAction2(table_action1, obj), 1) -- Kick off surgeon1:finishAction() surgeon2:finishAction() end end ---- Everyone standby...and sync start the operation -- -- first surgeon walk over to the operating table local obj, ox, oy = self.world:findObjectNear(surgeon1, "operating_table") surgeon1:queueAction(WalkAction(ox, oy):setMustHappen(true):disableTruncate(), 4) surgeon1:queueAction(IdleAction():setLoopCallback(operation_standby):setMustHappen(true), 5) -- Patient walk to the side of the operating table ox, oy = obj:getSecondaryUsageTile() patient:queueAction(WalkAction(ox, oy):setMustHappen(true):disableTruncate()) patient:queueAction(IdleAction():setLoopCallback(operation_standby):setMustHappen(true)) -- Patient changes out of the gown afterwards patient:queueAction(WalkAction(sx, sy):setMustHappen(true):disableTruncate()) patient:queueAction(UseScreenAction(screen):setMustHappen(true)) -- Meanwhile, second surgeon walks over to other side of operating table local _ _, ox, oy = self.world:findObjectNear(surgeon1, "operating_table_b") surgeon2:queueAction(WalkAction(ox, oy):setMustHappen(true):disableTruncate(), 4) surgeon2:queueAction(IdleAction():setLoopCallback(operation_standby):setMustHappen(true), 5) return Room.commandEnteringPatient(self, patient) end function OperatingTheatreRoom:onHumanoidLeave(humanoid) self.staff_member_set[humanoid] = nil if class.is(humanoid, Patient) then -- Turn off x-ray viewer -- (FIXME: would be better when patient dress back?) self:setXRayOn(false) local surgeon1 = next(self.staff_member_set) local surgeon2 = next(self.staff_member_set, surgeon1) if surgeon1 then self.staff_member_set[surgeon1] = "abort" end if surgeon2 then self.staff_member_set[surgeon2] = "abort" end end return Room.onHumanoidLeave(self, humanoid) end function OperatingTheatreRoom:canHumanoidEnter(humanoid) local can = Room.canHumanoidEnter(self, humanoid) if can and class.is(humanoid, Patient) then -- Patients can only enter once all doctors are in surgeon clothes for staff, is_ready in pairs(self.staff_member_set) do if staff.humanoid_class == "Doctor" or is_ready ~= "ready" then return false end end end return can end return room CorsixTH-0.61/CorsixTH/Lua/rooms/pharmacy.lua000066400000000000000000000072551321660673500210570ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "pharmacy" room.level_config_id = 11 room.class = "PharmacyRoom" room.name = _S.rooms_short.pharmacy room.long_name = _S.rooms_long.pharmacy room.tooltip = _S.tooltip.rooms.pharmacy room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { pharmacy_cabinet = 1 } room.build_preview_animation = 5088 room.categories = { treatment = 4, } room.minimum_size = 4 room.wall_type = "white" room.floor_tile = 19 room.required_staff = { Nurse = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd012.wav" class "PharmacyRoom" (Room) ---@type PharmacyRoom local PharmacyRoom = _G["PharmacyRoom"] function PharmacyRoom:PharmacyRoom(...) self:Room(...) end function PharmacyRoom:roomFinished() if not self.hospital:hasStaffOfCategory("Nurse") then self.world.ui.adviser:say(_A.room_requirements.pharmacy_need_nurse) end return Room.roomFinished(self) end function PharmacyRoom:commandEnteringPatient(patient) local staff = self.staff_member local cabinet, stf_x, stf_y = self.world:findObjectNear(patient, "pharmacy_cabinet") local pat_x, pat_y local orientation = cabinet.object_type.orientations[cabinet.direction] pat_x = stf_x - orientation.use_position[1] + orientation.use_position_secondary[1] pat_y = stf_y - orientation.use_position[2] + orientation.use_position_secondary[2] local layer3 local patient_class = patient.humanoid_class if patient_class == "Standard Female Patient" or patient_class == "Transparent Female Patient" then -- Female patients cannot use flask colour 2, as in their idle animation, -- layer 3 item 2 is a bandage. layer3 = math.random(0, 1) * 4 else layer3 = math.random(0, 2) * 2 end patient:setNextAction(WalkAction(pat_x, pat_y)) patient:queueAction(IdleAction():setDirection(cabinet.direction == "north" and "east" or "south")) staff:setNextAction(WalkAction(stf_x, stf_y)) local after_use_pharmacy = --[[persistable:pharmacy_after_use]] function() --if we haven't tried to edit the room while she's animating, meander if #staff.action_queue == 1 then staff:setNextAction(MeanderAction()) end if patient_class == "Invisible Patient" or patient_class == "Transparent Male Patient" then patient:setType "Standard Male Patient" elseif patient_class == "Transparent Female Patient" then patient:setType "Standard Female Patient" end self:dealtWithPatient(patient) end staff:queueAction(MultiUseObjectAction(cabinet, patient):setAfterUse(after_use_pharmacy) :setLayer3(layer3)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/psych.lua000066400000000000000000000111351321660673500203710ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "psych" room.level_config_id = 8 room.class = "PsychRoom" room.name = _S.rooms_short.psychiatric room.long_name = _S.rooms_long.psychiatric room.tooltip = _S.tooltip.rooms.psychiatry room.objects_additional = { "extinguisher", "radiator", "plant", "bin", "bookcase", "skeleton" } room.objects_needed = { screen = 1, couch = 1, comfortable_chair = 1 } room.build_preview_animation = 924 room.categories = { treatment = 1, diagnosis = 8, } room.minimum_size = 5 room.wall_type = "white" room.floor_tile = 18 room.required_staff = { Psychiatrist = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd003.wav" class "PsychRoom" (Room) ---@type PsychRoom local PsychRoom = _G["PsychRoom"] function PsychRoom:PsychRoom(...) self:Room(...) end function PsychRoom:roomFinished() if not self.hospital:hasStaffOfCategory("Psychiatrist") then self.world.ui.adviser :say(_A.room_requirements.psychiatry_need_psychiatrist) end return Room.roomFinished(self) end function PsychRoom:commandEnteringStaff(staff) self.staff_member = staff local obj, ox, oy = self.world:findFreeObjectNearToUse(staff, "bookcase", "near") if not obj then staff:setNextAction(MeanderAction()) else staff:walkTo(ox, oy) staff:queueAction(UseObjectAction(obj)) local num_meanders = math.random(2, 8) local loop_callback_meanders = --[[persistable:psych_meander_loop_callback]] function(action) num_meanders = num_meanders - 1 if num_meanders == 0 then self:commandEnteringStaff(staff) end end staff:queueAction(MeanderAction():setLoopCallback(loop_callback_meanders)) end return Room.commandEnteringStaff(self, staff, true) end function PsychRoom:commandEnteringPatient(patient) local staff = self.staff_member local obj, ox, oy = self.world:findObjectNear(patient, "couch") patient:walkTo(ox, oy) patient:queueAction(UseObjectAction(obj)) local duration = math.random(16, 72) local bookcase, bx, by local --[[persistable:psych_loop_callback]] function loop_callback() if bookcase == nil then bookcase, bx, by = self.world:findObjectNear(staff, "bookcase") end if patient and patient.user_of then duration = duration - 1 end if duration <= 0 then if patient.diagnosed and patient.disease.id == "king_complex" then -- Diagnosed patients (Elvis) need to change clothes local after_use_screen = --[[persistable:psych_screen_after_use]] function() if self:getStaffMember() then self:getStaffMember():setNextAction(MeanderAction()) end self:dealtWithPatient(patient) end obj, ox, oy = self.world:findObjectNear(patient, "screen") patient:walkTo(ox, oy) patient:queueAction(UseScreenAction(obj):setAfterUse(after_use_screen)) else if self:getStaffMember() then self:getStaffMember():setNextAction(MeanderAction()) end self:dealtWithPatient(patient) end return end if bookcase and (duration % 10) == 0 and math.random(1, 2) == 1 then staff:walkTo(bx, by) staff:queueAction(UseObjectAction(bookcase)) staff:queueAction(WalkAction(ox, oy)) staff:queueAction(UseObjectAction(obj):setLoopCallback(loop_callback)) duration = math.max(8, duration - 72) end end obj, ox, oy = self.world:findObjectNear(staff, "comfortable_chair") staff:walkTo(ox, oy) staff:queueAction(UseObjectAction(obj):setLoopCallback(loop_callback)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/research.lua000066400000000000000000000163551321660673500210500ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "research" room.level_config_id = 28 room.class = "ResearchRoom" room.name = _S.rooms_short.research_room room.long_name = _S.rooms_long.research_room room.tooltip = _S.tooltip.rooms.research_room room.objects_additional = { "extinguisher", "radiator", "plant", "bin", "computer", "desk", "cabinet", "analyser" } room.objects_needed = { desk = 1, cabinet = 1, autopsy = 1 } room.build_preview_animation = 5102 room.categories = { facilities = 2, } room.minimum_size = 5 room.wall_type = "green" room.floor_tile = 21 room.required_staff = { Researcher = 1, } room.call_sound = "reqd023.wav" class "ResearchRoom" (Room) ---@type ResearchRoom local ResearchRoom = _G["ResearchRoom"] function ResearchRoom:ResearchRoom(...) self:Room(...) self.staff_member_set = {} end local staff_usage_objects = { desk = true, cabinet = true, computer = true, analyser = true, -- Not autopsy: it should be free for when a patient arrives } function ResearchRoom:doStaffUseCycle(staff, previous_object) local obj, ox, oy = self.world:findFreeObjectNearToUse(staff, staff_usage_objects, "near", previous_object) if obj then obj.reserved_for = staff staff:walkTo(ox, oy) if obj.object_type.id == "desk" then local desk_use_time = math.random(7, 14) local loop_callback_desk = --[[persistable:research_desk_loop_callback]] function(action) desk_use_time = desk_use_time - 1 if action.todo_interrupt or desk_use_time == 0 then action.prolonged_usage = false end end local after_use_desk = --[[persistable:research_desk_after_use]] function() -- TODO: Should interactions give points? self.hospital.research:addResearchPoints(100) end staff:queueAction(UseObjectAction(obj):setLoopCallback(loop_callback_desk) :setAfterUse(after_use_desk)) else local after_use_obj = --[[persistable:research_obj_after_use]] function() if obj.object_type.id == "computer" then self.hospital.research:addResearchPoints(500) elseif obj.object_type.id == "analyser" then self.hospital.research:addResearchPoints(800) -- TODO: Balance value, find it in level config? end end staff:queueAction(UseObjectAction(obj):setAfterUse(after_use_obj)) end end local num_meanders = math.random(2, 4) local loop_callback_meander = --[[persistable:research_meander_loop_callback]] function(action) num_meanders = num_meanders - 1 if num_meanders == 0 then self:doStaffUseCycle(staff) end end staff:queueAction(MeanderAction():setLoopCallback(loop_callback_meander)) end function ResearchRoom:roomFinished() local fx, fy = self:getEntranceXY(true) local objects = self.world:findAllObjectsNear(fx, fy) local number = 0 for object, _ in pairs(objects) do -- The number of desks in the room determines how many researchers -- can work there at once. if object.object_type.id == "desk" then number = number + 1 end end self.maximum_staff = { Researcher = number, } -- Is this the first research department built? if not self.hospital.research_dep_built and not TheApp.using_demo_files then self.hospital.research_dep_built = true self.world.ui.adviser:say(_A.information.initial_general_advice .research_now_available) end -- Also check if it would be good to hire a researcher. if not self.hospital:hasStaffOfCategory("Researcher") then self.world.ui.adviser:say(_A.room_requirements.research_room_need_researcher) end return Room.roomFinished(self) end function ResearchRoom:getMaximumStaffCriteria() return self.maximum_staff end function ResearchRoom:commandEnteringStaff(staff) self.staff_member_set[staff] = true self:doStaffUseCycle(staff) return Room.commandEnteringStaff(self, staff, true) end function ResearchRoom:commandEnteringPatient(patient) local staff = next(self.staff_member_set) local autopsy, stf_x, stf_y = self.world:findObjectNear(patient, "autopsy") local pat_x, pat_y = autopsy:getSecondaryUsageTile() patient:walkTo(pat_x, pat_y) patient:queueAction(IdleAction():setDirection("east")) staff:walkTo(stf_x, stf_y) local after_use_autopsy = --[[persistable:autopsy_after_use]] function() self:commandEnteringStaff(staff) -- Patient dies :( self:onHumanoidLeave(patient) -- Some research is done. :) Might trigger a loss of reputation though. local hosp = self.hospital local patient_room = patient.disease.treatment_rooms[#patient.disease.treatment_rooms] hosp.research:addResearchPoints("dummy", patient_room) if not hosp.autopsy_discovered and hosp.discover_autopsy_risk > math.random(1, 100) then -- Can only be discovered once. hosp.autopsy_discovered = true hosp:changeReputation("autopsy_discovered") hosp.world.ui.adviser:say(_A.research.autopsy_discovered_rep_loss) else -- The risk increases after each use. -- TODO: Should it ever become 100%? self.hospital.discover_autopsy_risk = self.hospital.discover_autopsy_risk + 10 end if patient.hospital then hosp:removePatient(patient) end patient.world:destroyEntity(patient) end staff:queueAction(MultiUseObjectAction(autopsy, patient):setAfterUse(after_use_autopsy)) return Room.commandEnteringPatient(self, patient) end -- Returns the staff member with the minimum amount of skill. function ResearchRoom:getStaffMember() local staff for staff_member, _ in pairs(self.staff_member_set) do if staff and not staff.fired then if staff.profile.skill > staff_member.profile.skill then staff = staff_member end else staff = staff_member end end return staff end function ResearchRoom:setStaffMember(staff) self.staff_member_set[staff] = true end function ResearchRoom:setStaffMembersAttribute(attribute, value) for staff_member, _ in pairs(self.staff_member_set) do staff_member[attribute] = value end end function ResearchRoom:onHumanoidLeave(humanoid) self.staff_member_set[humanoid] = nil Room.onHumanoidLeave(self, humanoid) end function ResearchRoom:afterLoad(old, new) if old < 56 then self.hospital.research_dep_built = true end end return room CorsixTH-0.61/CorsixTH/Lua/rooms/scanner_room.lua000066400000000000000000000125451321660673500217360ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "scanner" room.level_config_id = 13 room.class = "ScannerRoom" room.name = _S.rooms_short.scanner room.long_name = _S.rooms_long.scanner room.tooltip = _S.tooltip.rooms.scanner room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { scanner = 1, console = 1, screen = 1 } room.build_preview_animation = 920 room.categories = { diagnosis = 4, } room.minimum_size = 5 room.wall_type = "yellow" room.floor_tile = 19 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd002.wav" -- Handyman is called to "diagnosis machine", all other diagnosis rooms have -- their own, more specific handyman call though --room.handyman_call_sound = "maint011.wav" class "ScannerRoom" (Room) ---@type ScannerRoom local ScannerRoom = _G["ScannerRoom"] function ScannerRoom:ScannerRoom(...) self:Room(...) end function ScannerRoom:commandEnteringPatient(patient) local staff = self.staff_member local console, stf_x, stf_y = self.world:findObjectNear(staff, "console") local scanner, pat_x, pat_y = self.world:findObjectNear(patient, "scanner") local screen, sx, sy = self.world:findObjectNear(patient, "screen") local do_change = (patient.humanoid_class == "Standard Male Patient") or (patient.humanoid_class == "Standard Female Patient") local --[[persistable:scanner_shared_loop_callback]] function loop_callback() if staff.action_queue[1].scanner_ready and patient.action_queue[1].scanner_ready then staff:finishAction() patient:finishAction() end end staff:walkTo(stf_x, stf_y) local idle_action = IdleAction():setDirection(console.direction == "north" and "west" or "north") :setLoopCallback(loop_callback) idle_action.scanner_ready = true staff:queueAction(idle_action) staff:queueAction(UseObjectAction(console)) if do_change then patient:walkTo(sx, sy) patient:queueAction(UseScreenAction(screen)) patient:queueAction(WalkAction(pat_x, pat_y)) else patient:walkTo(pat_x, pat_y) end idle_action = IdleAction():setDirection(scanner.direction == "north" and "east" or "south") :setLoopCallback(loop_callback) idle_action.scanner_ready = true patient:queueAction(idle_action) local length = math.random(10, 20) * (2 - staff.profile.skill) local loop_callback_scan = --[[persistable:scanner_loop_callback]] function(action) if length <= 0 then action.prolonged_usage = false end length = length - 1 end local after_use_scan = --[[persistable:scanner_after_use]] function() if not self.staff_member or patient.going_home then -- If we aborted somehow, don't do anything here. -- The patient already has orders to change back if necessary and leave. -- makeHumanoidLeave() will make this function nil when it aborts the scanner's use. return end self.staff_member:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end patient:queueAction(UseObjectAction(scanner):setLoopCallback(loop_callback_scan) :setAfterUse(after_use_scan)) return Room.commandEnteringPatient(self, patient) end function ScannerRoom:onHumanoidLeave(humanoid) if self.staff_member == humanoid then self.staff_member = nil end Room.onHumanoidLeave(self, humanoid) end function ScannerRoom:makeHumanoidLeave(humanoid) if humanoid.action_queue[1].name == "use_object" and humanoid.action_queue[1].object == self.world:findObjectNear(humanoid, "scanner") then humanoid.action_queue[1].after_use = nil end self:makeHumanoidDressIfNecessaryAndThenLeave(humanoid) end function ScannerRoom:dealtWithPatient(patient) if string.find(patient.humanoid_class, "Stripped") then local screen, sx, sy = self.world:findObjectNear(patient, "screen") patient:setNextAction(WalkAction(sx, sy):setMustHappen(true):setIsLeaving(true) :disableTruncate()) local after_use_patient = --[[persistable:scanner_exit]] function() Room.dealtWithPatient(self, patient) end patient:queueAction(UseScreenAction(screen):setMustHappen(true):setIsLeaving(true) :setAfterUse(after_use_patient)) patient:queueAction(self:createLeaveAction()) else Room.dealtWithPatient(self, patient) end end function ScannerRoom:shouldHavePatientReenter(patient) return not patient:isLeaving() end return room CorsixTH-0.61/CorsixTH/Lua/rooms/slack_tongue.lua000066400000000000000000000054461321660673500217310ustar00rootroot00000000000000--[[ Copyright (c) 2009 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "slack_tongue" room.level_config_id = 20 room.class = "SlackTongueRoom" room.name = _S.rooms_short.tongue_clinic room.long_name = _S.rooms_long.tongue_clinic room.tooltip = _S.tooltip.rooms.tongue_clinic room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { slicer = 1 } room.build_preview_animation = 932 room.categories = { clinics = 2, } room.minimum_size = 4 room.wall_type = "blue" room.floor_tile = 17 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd005.wav" room.handyman_call_sound = "maint004.wav" class "SlackTongueRoom" (Room) ---@type SlackTongueRoom local SlackTongueRoom = _G["SlackTongueRoom"] function SlackTongueRoom:SlackTongueRoom(...) self:Room(...) end function SlackTongueRoom:commandEnteringPatient(patient) local staff = self.staff_member local slicer, pat_x, pat_y = self.world:findObjectNear(patient, "slicer") local stf_x, stf_y = slicer:getSecondaryUsageTile() staff:setNextAction(WalkAction(stf_x, stf_y)) staff:queueAction(IdleAction():setDirection(slicer.direction == "north" and "east" or "south")) patient:setNextAction(WalkAction(pat_x, pat_y)) local after_use_slack_tongue = --[[persistable:slack_tongue_after_use]] function() if patient.humanoid_class == "Slack Male Patient" then patient:setType "Standard Male Patient" -- Change to normal head else patient:setLayer(0, patient.layers[0] - 8) -- Change to normal head end staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end patient:queueAction(MultiUseObjectAction(slicer, staff):setAfterUse(after_use_slack_tongue)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/staff_room.lua000066400000000000000000000047321321660673500214070ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "staff_room" room.level_config_id = 25 room.class = "StaffRoom" room.name = _S.rooms_short.staffroom room.long_name = _S.rooms_long.staffroom room.tooltip = _S.tooltip.rooms.staffroom room.objects_additional = { "extinguisher", "radiator", "plant", "sofa", "pool_table", "tv", "video_game" } room.objects_needed = { sofa = 1 } room.build_preview_animation = 5066 room.categories = { facilities = 1, } room.minimum_size = 4 room.wall_type = "green" room.floor_tile = 17 room.has_no_queue_dialog = true class "StaffRoom" (Room) ---@type StaffRoom local StaffRoom = _G["StaffRoom"] function StaffRoom:StaffRoom(...) self:Room(...) end function StaffRoom:onHumanoidEnter(humanoid) self.humanoids[humanoid] = true self:tryAdvanceQueue() humanoid:setDynamicInfoText("") if class.is(humanoid, Staff) then -- Receptionists cannot enter, so we do not have to worry about them -- If it is a handyman and he is here to do a job, let him pass if not humanoid.on_call then humanoid:setNextAction(UseStaffRoomAction()) self.door.queue.visitor_count = self.door.queue.visitor_count + 1 end else -- Other humanoids shouldn't be entering, so don't worry about them end end function StaffRoom:testStaffCriteria(criteria, extra_humanoid) -- The staff room always accept more tired staff members. if extra_humanoid then return true else return false end end return room CorsixTH-0.61/CorsixTH/Lua/rooms/toilets.lua000066400000000000000000000151711321660673500207320ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "toilets" room.level_config_id = 29 room.class = "ToiletRoom" room.name = _S.rooms_short.toilets room.long_name = _S.rooms_long.toilets room.tooltip = _S.tooltip.rooms.toilets room.objects_additional = { "extinguisher", "radiator", "plant", "bin", "loo", "sink" } room.objects_needed = { loo = 1, sink = 1 } room.build_preview_animation = 5098 room.categories = { facilities = 3, } room.minimum_size = 4 room.wall_type = "green" room.floor_tile = 21 class "ToiletRoom" (Room) ---@type ToiletRoom local ToiletRoom = _G["ToiletRoom"] function ToiletRoom:ToiletRoom(...) self:Room(...) self.door.queue:setBenchThreshold(3) end function ToiletRoom:roomFinished() local fx, fy = self:getEntranceXY(true) local objects = self.world:findAllObjectsNear(fx, fy) local number = 0 for object, _ in pairs(objects) do if object.object_type.id == "loo" then number = number + 1 end end self.maximum_patients = number Room.roomFinished(self) end function ToiletRoom:dealtWithPatient(patient) -- Continue going to the room before going to the toilets. patient:setNextAction(self:createLeaveAction()) if patient.next_room_to_visit then patient:queueAction(SeekRoomAction(patient.next_room_to_visit.room_info.id)) else patient:queueAction(SeekReceptionAction()) end end function ToiletRoom:onHumanoidEnter(humanoid) if class.is(humanoid, Patient) then local loo, lx, ly = self.world:findFreeObjectNearToUse(humanoid, "loo") if loo and lx and ly then humanoid:walkTo(lx, ly) loo.reserved_for = humanoid local use_time = math.random(0, 2) -- One class only have a 1 tick long usage animation if humanoid.humanoid_class == "Transparent Female Patient" then use_time = math.random(15, 40) end local loop_callback_toilets = --[[persistable:toilets_loop_callback]] function() use_time = use_time - 1 if use_time <= 0 then humanoid:setMood("poo", "deactivate") humanoid:changeAttribute("toilet_need", -(0.85 + math.random() * 0.15)) humanoid.going_to_toilet = "no" -- There are only animations for standard patients to use the sinks. if humanoid.humanoid_class == "Standard Female Patient" or humanoid.humanoid_class == "Standard Male Patient" then local --[[persistable:toilets_find_sink]] function after_use() local sink, sx, sy = self.world:findFreeObjectNearToUse(humanoid, "sink") if sink then humanoid:walkTo(sx, sy) local after_use_sink = --[[persistable:toilets_after_use_sink]] function() self:dealtWithPatient(humanoid) end humanoid:queueAction(UseObjectAction(sink):setProlongedUsage(false) :setAfterUse(after_use_sink)) sink.reserved_for = humanoid -- Make sure that the mood waiting is no longer active. humanoid:setMood("patient_wait", "deactivate") else -- if there is a queue to wash hands there is a chance we might not bother -- but the patient won't be happy about this. if math.random(1, 4) > 2 then -- Wait for a while before trying again. humanoid:setNextAction(IdleAction():setCount(5):setAfterUse(after_use) :setDirection(loo.direction == "north" and "south" or "east")) else self:dealtWithPatient(humanoid) humanoid:changeAttribute("happiness", -0.08) humanoid:setMood("patient_wait", "deactivate") end -- For now, activate the wait icon to show the player that the patient hasn't -- got stuck. TODO: Make a custom mood? Let many people use the sinks? humanoid:setMood("patient_wait", "activate") end end after_use() else self:dealtWithPatient(humanoid) end end end humanoid:queueAction(UseObjectAction(loo):setLoopCallback(loop_callback_toilets)) else --[[ If no loo is found, perhaps the patient followed another one in and they were heading for the same one. Now there is no free loo, so wait for a bit and then leave the room to wait outside. No need for a warning as this is what happens in busy toilets]] humanoid:setNextAction(MeanderAction():setCount(1)) humanoid:queueAction(self:createLeaveAction()) humanoid:queueAction(self:createEnterAction(humanoid)) end end return Room.onHumanoidEnter(self, humanoid) end -- Override the standard way to count the number of patients to take into account -- that some of them may not be using the loo, allowing others to enter the room earlier than normal; -- but not if there is only one loo in the room, then it becomes a private toilet with only one person at a time. function ToiletRoom:getPatientCount() local number_users = 0 local not_using_loo = 0 for humanoid in pairs(self.humanoids) do if class.is(humanoid, Patient) then number_users = number_users + 1 if humanoid.action_queue[1].name == "use_object" and humanoid.action_queue[1].object.object_type.id ~= "loo" then not_using_loo = not_using_loo + 1 end end end if self.maximum_patients == 1 then return number_users else return number_users - not_using_loo end end function ToiletRoom:afterLoad(old, new) if old < 110 then room.free_loos = nil end Room.afterLoad(self, old, new) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/training.lua000066400000000000000000000216521321660673500210630ustar00rootroot00000000000000--[[ Copyright (c) 2010 Justin Pasher Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "training" room.level_config_id = 22 room.class = "TrainingRoom" room.long_name = _S.rooms_long.training_room room.name = _S.rooms_short.training_room room.tooltip = _S.tooltip.rooms.training_room room.objects_additional = { "extinguisher", "radiator", "plant", "bin", "lecture_chair", "bookcase", "skeleton" } room.objects_needed = { lecture_chair = 1, projector = 1 } room.build_preview_animation = 5086 room.categories = { facilities = 4, } room.minimum_size = 4 room.wall_type = "green" room.floor_tile = 17 room.has_no_queue_dialog = true class "TrainingRoom" (Room) ---@type TrainingRoom local TrainingRoom = _G["TrainingRoom"] function TrainingRoom:TrainingRoom(...) self:Room(...) end function TrainingRoom:roomFinished() -- Training rate and max occupancy based on objects in the room local fx, fy = self:getEntranceXY(true) local objects = self.world:findAllObjectsNear(fx, fy) local chairs = 0 local skeletons = 0 local bookcases = 0 for object, _ in pairs(objects) do if object.object_type.id == "lecture_chair" then chairs = chairs + 1 elseif object.object_type.id == "skeleton" then skeletons = skeletons + 1 elseif object.object_type.id == "bookcase" then bookcases = bookcases + 1 end end -- Total staff occupancy: number of lecture chairs plus projector self.maximum_staff = { Doctor = chairs + 1 } -- factor is divided by ten so the result from new algroithm will be similar to the old algorithm self.training_factor = self:calculateTrainingFactor(skeletons, bookcases) / 10.0 -- Also tell the player if he/she doesn't have a consultant yet. if not self.hospital:hasStaffOfCategory("Consultant") then local text = _A.room_requirements.training_room_need_consultant self.world.ui.adviser:say(text) end Room.roomFinished(self) end function TrainingRoom:calculateTrainingFactor(skeletons, bookcases) -- TODO: tweak/change this function, used in Staff:trainSkill(...) -- Object values and training rate set in level config local level_config = self.world.map.level_config local proj_val = 10 local book_val = 15 local skel_val = 20 local training_rate = 40 if level_config and level_config.gbv.TrainingRate then book_val = level_config.gbv.TrainingValue[1] skel_val = level_config.gbv.TrainingValue[2] training_rate = level_config.gbv.TrainingRate end -- Training factor is just everything added together return proj_val + skeletons*skel_val + bookcases*book_val + training_rate end function TrainingRoom:getStaffCount() local count = 0 for humanoid in pairs(self.humanoids) do if class.is(humanoid, Staff) then count = count + 1 end end return count end function TrainingRoom:testStaffCriteria(criteria, extra_humanoid) if extra_humanoid and extra_humanoid.profile and extra_humanoid.profile.is_consultant and self.staff_member then -- Training room can only have on consultant return false end return Room.testStaffCriteria(self, criteria, extra_humanoid) end function TrainingRoom:getTrainingFactor() return self.training_factor end function TrainingRoom:getMaximumStaffCriteria() return self.maximum_staff end function TrainingRoom:doStaffUseCycle(humanoid) local projector, ox, oy = self.world:findObjectNear(humanoid, "projector") humanoid:queueAction(WalkAction(ox, oy)) local projector_use_time = math.random(6,20) local loop_callback_training = --[[persistable:training_loop_callback]] function() projector_use_time = projector_use_time - 1 if projector_use_time == 0 then local skeleton, sox, soy = self.world:findFreeObjectNearToUse(humanoid, "skeleton", "near") local bookcase, box, boy = self.world:findFreeObjectNearToUse(humanoid, "bookcase", "near") if math.random(0, 1) == 0 and bookcase then skeleton = nil end -- choose one if skeleton then humanoid:walkTo(sox, soy) for _ = 1, math.random(3, 10) do humanoid:queueAction(UseObjectAction(skeleton)) end elseif bookcase then humanoid:walkTo(box, boy) for _ = 1, math.random(3, 10) do humanoid:queueAction(UseObjectAction(bookcase)) end end -- go back to the projector self:doStaffUseCycle(humanoid) elseif projector_use_time < 0 then -- reset variable to avoid potential overflow (over a VERY long -- period of time) projector_use_time = 0 end end humanoid:queueAction(UseObjectAction(projector):setLoopCallback(loop_callback_training)) end function TrainingRoom:onHumanoidEnter(humanoid) if humanoid.humanoid_class ~= "Doctor" then -- use default behavior for staff other than doctors return Room.onHumanoidEnter(self, humanoid) end assert(not self.humanoids[humanoid], "Humanoid entering a room that they are already in") humanoid.in_room = self humanoid.last_room = self -- Remember where the staff was for them to come back after staffroom rest --entering humanoids are no longer enroute if self.humanoids_enroute[humanoid] then self.humanoids_enroute[humanoid] = nil -- humanoid is no longer walking to this room end humanoid:setCallCompleted() self:commandEnteringStaff(humanoid) self.humanoids[humanoid] = true self:tryAdvanceQueue() end function TrainingRoom:commandEnteringStaff(humanoid) local obj, ox, oy local profile = humanoid.profile if profile.humanoid_class == "Doctor" then -- Consultants try to use the projector and/or skeleton if profile.is_consultant then obj, ox, oy = self.world:findFreeObjectNearToUse(humanoid, "projector") if self.staff_member then if self.waiting_staff_member then local staff = self.waiting_staff_member staff.waiting_on_other_staff = nil staff:setNextAction(self:createLeaveAction()) staff:queueAction(MeanderAction()) end humanoid.waiting_on_other_staff = true humanoid:setNextAction(MeanderAction()) self.waiting_staff_member = humanoid self.staff_member:setNextAction(self:createLeaveAction()) self.staff_member:queueAction(MeanderAction()) else if obj then obj.reserved_for = humanoid humanoid:walkTo(ox, oy) self:doStaffUseCycle(humanoid) self:setStaffMember(humanoid) else humanoid:setNextAction(self:createLeaveAction()) humanoid:queueAction(MeanderAction()) end end else obj, ox, oy = self.world:findFreeObjectNearToUse(humanoid, "lecture_chair") if obj then obj.reserved_for = humanoid humanoid:walkTo(ox, oy) humanoid:queueAction(UseObjectAction(obj)) humanoid:queueAction(MeanderAction()) else humanoid:setNextAction(self:createLeaveAction()) humanoid:queueAction(MeanderAction()) humanoid.last_room = nil end end elseif humanoid.humanoid_class ~= "Handyman" then self.world.ui.adviser:say(_A.staff_place_advice.only_doctors_in_room :format(_S.rooms_long.training_room)) humanoid:setNextAction(self:createLeaveAction()) humanoid:queueAction(MeanderAction()) return end return Room.commandEnteringStaff(self, humanoid, true) end function TrainingRoom:onHumanoidLeave(humanoid) if humanoid.humanoid_class == "Doctor" then -- unreserve whatever it was they we using local fx, fy = self:getEntranceXY(true) local objects = self.world:findAllObjectsNear(fx,fy) for object, _ in pairs(objects) do if object.reserved_for == humanoid then object:removeReservedUser() end end if humanoid.profile.is_consultant and humanoid == self.staff_member then local staff = self.waiting_staff_member self:setStaffMember(nil) if staff then staff.waiting_on_other_staff = nil self.waiting_staff_member = nil self:commandEnteringStaff(staff) end end end Room.onHumanoidLeave(self, humanoid) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/ultrascan.lua000066400000000000000000000050561321660673500212440ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "ultrascan" room.level_config_id = 14 room.class = "UltrascanRoom" room.name = _S.rooms_short.ultrascan room.long_name = _S.rooms_long.ultrascan room.tooltip = _S.tooltip.rooms.ultrascan room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { ultrascanner = 1 } room.build_preview_animation = 5068 room.categories = { diagnosis = 5, } room.minimum_size = 4 room.wall_type = "yellow" room.floor_tile = 19 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd007.wav" room.handyman_call_sound = "maint016.wav" class "UltrascanRoom" (Room) ---@type UltrascanRoom local UltrascanRoom = _G["UltrascanRoom"] function UltrascanRoom:UltrascanRoom(...) self:Room(...) end function UltrascanRoom:commandEnteringPatient(patient) local staff = self.staff_member local ultrascan, pat_x, pat_y = self.world:findObjectNear(patient, "ultrascanner") local stf_x, stf_y = ultrascan:getSecondaryUsageTile() staff:setNextAction(WalkAction(stf_x, stf_y)) staff:queueAction(IdleAction():setDirection(ultrascan.direction == "north" and "west" or "north")) patient:setNextAction(WalkAction(pat_x, pat_y)) local after_use_scan = --[[persistable:ultrascan_after_use]] function() staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end patient:queueAction(MultiUseObjectAction(ultrascan, staff):setAfterUse(after_use_scan)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/ward.lua000066400000000000000000000201231321660673500201750ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "ward" room.level_config_id = 9 room.class = "WardRoom" room.name = _S.rooms_short.ward room.tooltip = _S.tooltip.rooms.ward room.long_name = _S.rooms_long.ward room.objects_additional = { "extinguisher", "radiator", "plant", "desk", "bin", "bed" } room.objects_needed = { desk = 1, bed = 1 } room.build_preview_animation = 910 room.categories = { treatment = 2, diagnosis = 9, } room.minimum_size = 6 room.wall_type = "white" room.floor_tile = 21 room.swing_doors = true room.required_staff = { Nurse = 1, } room.call_sound = "reqd009.wav" class "WardRoom" (Room) ---@type WardRoom local WardRoom = _G["WardRoom"] function WardRoom:WardRoom(...) self:Room(...) self.staff_member_set = {} end function WardRoom:roomFinished() local fx, fy = self:getEntranceXY(true) local objects = self.world:findAllObjectsNear(fx, fy) local beds = 0 local desks = 0 for object, _ in pairs(objects) do if object.object_type.id == "bed" then beds = beds + 1 end if object.object_type.id == "desk" then desks = desks + 1 end end self.maximum_staff = { Nurse = desks, } self.maximum_patients = beds if not self.hospital:hasStaffOfCategory("Nurse") then self.world.ui.adviser :say(_A.room_requirements.ward_need_nurse) end Room.roomFinished(self) end function WardRoom:getMaximumStaffCriteria() return self.maximum_staff end function WardRoom:commandEnteringStaff(humanoid) self.staff_member_set[humanoid] = true self:doStaffUseCycle(humanoid) return Room.commandEnteringStaff(self, humanoid, true) end function WardRoom:doStaffUseCycle(humanoid) local meander_time = math.random(4, 10) humanoid:setNextAction(MeanderAction():setCount(meander_time)) local obj, ox, oy = self.world:findFreeObjectNearToUse(humanoid, "desk") if obj then obj.reserved_for = humanoid humanoid:walkTo(ox, oy) if obj.object_type.id == "desk" then local desk_use_time = math.random(7, 14) local desk_loop = --[[persistable:ward_desk_loop_callback]] function() desk_use_time = desk_use_time - 1 if desk_use_time == 0 then self:doStaffUseCycle(humanoid) end end humanoid:queueAction(UseObjectAction(obj):setLoopCallback(desk_loop)) end end local num_meanders = math.random(2, 4) local meanders_loop = --[[persistable:ward_meander_loop_callback]] function(action) num_meanders = num_meanders - 1 if num_meanders == 0 then self:doStaffUseCycle(humanoid) end end humanoid:queueAction(MeanderAction():setLoopCallback(meanders_loop)) end -- TODO the nurse should not leave the ward if there are beds in use, therefore prevent her from being picked up -- and have a system that stops patients entering the ward if she is in need of taking a break or being called elsewhere. function WardRoom:commandEnteringPatient(patient) local staff = next(self.staff_member_set) or self.staff_member local bed, pat_x, pat_y = self.world:findFreeObjectNearToUse(patient, "bed") self:setStaffMembersAttribute("dealing_with_patient", nil) if not bed then patient:setNextAction(self:createLeaveAction()) patient:queueAction(self:createEnterAction(patient)) print("Warning: A patient was called into the ward even though there are no free beds.") else bed.reserved_for = patient self:countWorkingNurses() local length = (math.random(200, 800) * (1.5 - staff.profile.skill)) / self.nursecount -- reduce time in ward if there is more than one nurse on duty local --[[persistable:ward_loop_callback]] function loop_callback(action) -- TODO Perhaps it should take longer if there are more used beds! if length <= 0 then action.prolonged_usage = false end length = length - 1 end local after_use = --[[persistable:ward_after_use]] function() self:dealtWithPatient(patient) end patient:walkTo(pat_x, pat_y) patient:queueAction(UseObjectAction(bed):setProlongedUsage(true):setLoopCallback(loop_callback) :setAfterUse(after_use)) end return Room.commandEnteringPatient(self, patient) end -- Returns the staff member with the minimum amount of skill. Perhaps we should consider tiredness too function WardRoom:getStaffMember() local staff for staff_member, _ in pairs(self.staff_member_set) do if staff and not staff.fired then if staff.profile.skill > staff_member.profile.skill then staff = staff_member end else staff = staff_member end end return staff end function WardRoom:setStaffMember(staff) self.staff_member_set[staff] = true end function WardRoom:countWorkingNurses() local staff = next(self.staff_member_set) self.nursecount = 0 for staff_member, _ in pairs(self.staff_member_set) do if staff then staff = staff_member self.nursecount = self.nursecount + 1 end end end function WardRoom:setStaffMembersAttribute(attribute, value) for staff_member, _ in pairs(self.staff_member_set) do staff_member[attribute] = value end end function WardRoom:onHumanoidLeave(humanoid) self.staff_member_set[humanoid] = nil Room.onHumanoidLeave(self, humanoid) end function WardRoom:afterLoad(old, new) if old < 11 then -- Make sure all three tiles outside of the door are unbuildable. local door = self.door local x = door.tile_x local y = door.tile_y local dir = door.direction local map = self.world.map.th local flags = {} local function checkLocation(xpos, ypos) if self.world:getRoom(xpos, ypos) or not map:getCellFlags(xpos, ypos, flags).passable then local message = "Warning: An update has resolved a problem concerning " .. "swing doors, but not all tiles adjacent to them could be fixed." self.world.ui:addWindow(UIInformation(self.world.ui, {message})) return false end return true end if dir == "west" then -- In west or east wall if self.world:getRoom(x, y) == self then -- In west wall if checkLocation(x - 1, y + 1) then map:setCellFlags(x - 1, y + 1, {buildable = false}) end else -- East wall if checkLocation(x, y + 1) then map:setCellFlags(x, y + 1, {buildable = false}) end end else -- if dir == "north", North or south wall if self.world:getRoom(x, y) == self then -- In north wall if checkLocation(x + 1, y - 1) then map:setCellFlags(x + 1, y - 1, {buildable = false}) end else -- South wall if checkLocation(x + 1, y) then map:setCellFlags(x + 1, y, {buildable = false}) end end end end if old < 74 then -- add some new variables self.staff_member_set = {} self.nursecount = 0 -- reset any wards that already exist self:roomFinished() -- if there is already a nurse in the ward -- make her leave so she gets counted properly local nurse = self.staff_member if nurse then nurse:setNextAction(self:createLeaveAction()) nurse:queueAction(MeanderAction()) end end Room.afterLoad(self, old, new) end return room CorsixTH-0.61/CorsixTH/Lua/rooms/x_ray_room.lua000066400000000000000000000063171321660673500214270ustar00rootroot00000000000000--[[ Copyright (c) 2009 Manuel König Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local room = {} room.id = "x_ray" room.level_config_id = 16 room.class = "XRayRoom" room.name = _S.rooms_short.x_ray room.long_name = _S.rooms_long.x_ray room.tooltip = _S.tooltip.rooms.x_ray room.objects_additional = { "extinguisher", "radiator", "plant", "bin" } room.objects_needed = { x_ray = 1, radiation_shield = 1 } room.build_preview_animation = 5076 room.categories = { diagnosis = 7, } room.minimum_size = 6 room.wall_type = "yellow" room.floor_tile = 19 room.required_staff = { Doctor = 1, } room.maximum_staff = room.required_staff room.call_sound = "reqd013.wav" room.handyman_call_sound = "maint005.wav" class "XRayRoom" (Room) ---@type XRayRoom local XRayRoom = _G["XRayRoom"] function XRayRoom:XRayRoom(...) self:Room(...) end function XRayRoom:commandEnteringPatient(patient) local staff = self.staff_member local x_ray, pat_x, pat_y = self.world:findObjectNear(patient, "x_ray") local console, stf_x, stf_y = self.world:findObjectNear(staff, "radiation_shield") local --[[persistable:x_ray_shared_loop_callback]] function loop_callback() if staff.action_queue[1].name == "idle" and patient.action_queue[1].name == "idle" then local length = math.random(2, 4) * (2 - staff.profile.skill) local loop_callback_xray = --[[persistable:x_ray_loop_callback]] function(action) if length <= 0 then action.prolonged_usage = false end length = length - 1 end local after_use_xray = --[[persistable:x_ray_after_use]] function() staff:setNextAction(MeanderAction()) self:dealtWithPatient(patient) end patient:setNextAction(UseObjectAction(x_ray):setLoopCallback(loop_callback_xray) :setAfterUse(after_use_xray)) staff:setNextAction(UseObjectAction(console)) end end patient:walkTo(pat_x, pat_y) patient:queueAction(IdleAction():setDirection(x_ray.direction == "north" and "east" or "south") :setLoopCallback(loop_callback)) staff:walkTo(stf_x, stf_y) staff:queueAction(IdleAction():setDirection(console.direction == "north" and "east" or "south") :setLoopCallback(loop_callback)) return Room.commandEnteringPatient(self, patient) end return room CorsixTH-0.61/CorsixTH/Lua/run_debugger.lua000066400000000000000000000024001321660673500205470ustar00rootroot00000000000000--- -- This script is responsible for starting a DBGp client for CorsixTH's -- Lua scripts and then connecting this to a running DBGp server. -- -- It does this in the function it returns. --- local function run() print("NOTE: While CorsixTH is connected to an IDE's debugger server,") print("text will be printed in its output console instead of here.") if not pcall(require, "socket") then print("Can't connect debugger: LuaSocket is not available.") return "Can't connect debugger: LuaSocket is not available." end local _, config = dofile("config_finder") local connect = dofile("debugger") local successful, error_message = pcall(connect, config.DBGp_client_idehost, config.DBGp_client_ideport, config.DBGp_client_idekey, config.DBGp_client_transport, config.DBGp_client_platform, config.DBGp_client_workingdir) if not successful then print("\nCan't connect DBGp client:\n" .. error_message .. "\n") return "Failed to connect debugger, error printed in console." end end return run CorsixTH-0.61/CorsixTH/Lua/sprite_viewer.lua000066400000000000000000000112221321660673500207700ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- This is a poor replacement for the sprite viewing facility of AnimView, but -- when you don't have a copy of AnimView, or the means to compile it, then a -- crude sprite viewer is better than no sprite viewer. local gfx = TheApp.gfx gfx.cache.tabled = {} local font = gfx:loadFont("QData", "Font00V") local need_draw = true local sprite_table_paths = {} local sprite_table_index local sprite_table local is_complex = false local wdown = false local sdown = false local y_off local old_event_handlers for _, dir in ipairs({"Data", "QData", "DataM", "QDataM"}) do for item in pairs(TheApp.fs:listFiles(dir) or {}) do if item:match"%.TAB$" then sprite_table_paths[#sprite_table_paths + 1] = {dir, item:sub(1, -5)} end end end table.sort(sprite_table_paths, function(lhs, rhs) return lhs[1] < rhs[1] or (lhs[1] == rhs[1] and lhs[2] < rhs[2]) end) local function LoadTable(n, complex) sprite_table_index = n is_complex = complex local path = sprite_table_paths[n] local pal if TheApp.fs:readContents(path[1], path[2] .. ".PAL") then pal = gfx:loadPalette(path[1], path[2] .. ".PAL") end sprite_table = gfx:loadSpriteTable(path[1], path[2], complex, pal) need_draw = true y_off = 0 end LoadTable(1, false) local function DoKey(self, rawchar, modifiers, is_repeat) local key = rawchar:lower() if key == "c" then gfx.cache.tabled = {} LoadTable(sprite_table_index, not is_complex) elseif key == "a" then if sprite_table_index > 1 then LoadTable(sprite_table_index - 1, is_complex) end elseif key == "d" then if sprite_table_index < #sprite_table_paths then LoadTable(sprite_table_index + 1, is_complex) end elseif key == "w" then wdown = true need_draw = true elseif key == "s" then sdown = true need_draw = true elseif key == "q" then TheApp.eventHandlers = old_event_handlers need_draw = false end return need_draw end local function DoKeyUp(self, rawchar) local key = rawchar:lower() if key == "w" then wdown = false end if key == "s" then sdown = false end end local function Render(canvas) local encoding = is_complex and " (Complex)" or " (Simple)" local msg = table.concat(sprite_table_paths[sprite_table_index], package.config:sub(1, 1)) .. encoding local _, fonth = font:sizeOf(msg) local sep = 2 local y = y_off font:draw(canvas, "CorsixTH Debug Sprite Viewer - W/A/S/D to navigate, C to change mode, Q to quit", 0, y) y = y + fonth + sep font:draw(canvas, msg, 0, y) y = y + fonth + sep local x = 0 local sw, sh = TheApp.config.width, TheApp.config.height local tallest = 0 for i = 0, #sprite_table - 1 do local w, h = sprite_table:size(i) local lbl = "#" .. i .. " (" .. w .. "x" .. h .. ")" local lw = font:sizeOf(lbl) if lw > w then w = lw end h = h + fonth + sep if x + w > sw then x = 0 y = y + tallest if y > sh then break end end if h > tallest then tallest = h end font:draw(canvas, lbl, x, y) sprite_table:draw(canvas, i, x, y + fonth) x = x + w + sep end end local function DoFrame(app) local canvas = app.video canvas:startFrame() if need_draw then need_draw = app.config.track_fps canvas:fillBlack() Render(canvas) end canvas:endFrame() end local function DoTimer(app) if wdown then y_off = y_off + 32 need_draw = true end if sdown then y_off = y_off - 32 need_draw = true end return need_draw end old_event_handlers = TheApp.eventHandlers TheApp.eventHandlers = { frame = DoFrame, keydown = DoKey, keyup = DoKeyUp, timer = DoTimer, } CorsixTH-0.61/CorsixTH/Lua/staff_profile.lua000066400000000000000000000177361321660673500207440ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] class "StaffProfile" ---@type StaffProfile local StaffProfile = _G["StaffProfile"] function StaffProfile:StaffProfile(world, humanoid_class, local_string) self.world = world self.humanoid_class = humanoid_class self.name = "U. N. Initialised" self.wage = 0 self.skill = 0 -- [0.0, 1.0] self.layer5 = 2 self.attention_to_detail = math.random() self.profession = local_string end function StaffProfile:setDoctorAbilities(psychiatrist, surgeon, researcher, junior, consultant) self.is_psychiatrist = psychiatrist self.is_surgeon = surgeon self.is_researcher = researcher self.is_junior = junior self.is_consultant = consultant end function StaffProfile:initDoctor(psychiatrist, surgeon, researcher, junior, consultant, skill) self:setDoctorAbilities(psychiatrist, surgeon, researcher, junior, consultant) self:init(skill) end function StaffProfile:init(skill) self:setSkill(skill) self.wage = self:getFairWage() self:randomiseOrganical() end function StaffProfile:setSkill(skill) self.skill = skill self:parseSkillLevel() end local name_parts = {_S.humanoid_name_starts, _S.humanoid_name_ends} local function shuffle(t) local r = {} local i = {} for k in ipairs(t) do r[k] = math.random() i[k] = k end table.sort(i, function(x, y) return r[x] < r[y] end) for k in ipairs(t) do r[k] = t[i[k]] end return r end local function our_concat(t) -- The standard table.concat function doesn't like our userdata strings :( local result = "" for _, s in ipairs(t) do result = result .. s end return result end function StaffProfile:randomise(month) local level_config = self.world.map.level_config -- decide general skill for all staff self.skill = math.random() --self.skill_level_modifier = math.random(-50, 50) / 1000 -- [-0.05, +0.05] if self.humanoid_class == "Doctor" then -- find the correct config line (based on month) for generation of the doctor local i = 0 while i < #level_config.staff_levels and level_config.staff_levels[i+1].Month <= month do i = i+1 end -- list of level_config values and the corresponding staff modifiers, plus the value set for "no" local mods = { {"ShrkRate", "is_psychiatrist", 0}, {"SurgRate", "is_surgeon", 0}, {"RschRate", "is_researcher", 0}, {"JrRate", "is_junior", nil}, {"ConsRate", "is_consultant", nil}, } -- The following assumes ascending month order of the staff_levels table. -- TODO don't assume this but sort when loading map config for _, m in ipairs(mods) do local rate local ind = i while not rate do assert(ind >= 0, "Staff modifier " .. m[1] .. " not existent (should at least be given by base_config).") rate = level_config.staff_levels[ind][m[1]] ind = ind - 1 end -- 0 means none. Other values x mean "one in x"; thus 1 means "one in one" aka "all" rate = (rate == 0) and 0 or 1 / rate self[m[2]] = math.random() < rate and 1.0 or m[3] end -- is_consultant is forced to nil if is_junior is already 1 self.is_consultant = not self.is_junior and self.is_consultant or nil local jr_limit = level_config.gbv.DoctorThreshold / 1000 local cons_limit = level_config.gbv.ConsultantThreshold / 1000 -- put the doctor in the right skill level box if self.is_junior then self.skill = jr_limit * self.skill elseif self.is_consultant then self.skill = cons_limit + ((1 - cons_limit) * self.skill) else self.skill = jr_limit + ((cons_limit - jr_limit) * self.skill) end end self.wage = self:getFairWage() self:parseSkillLevel() self:randomiseOrganical() end function StaffProfile:randomiseOrganical() -- TODO: Randomise a letter from the current language's alphabet. self.name = "" -- string.char(string.byte"A" + math.random(0, 25)) .. ". " for _, part_table in ipairs(name_parts) do self.name = self.name .. part_table.__random end local desc_table1, desc_table2 if self.skill < 0.55 then desc_table1 = _S.staff_descriptions.bad desc_table2 = _S.staff_descriptions.misc else desc_table1 = _S.staff_descriptions.good desc_table2 = _S.staff_descriptions.misc end local descs = {desc_table1.__random, desc_table2.__random} while #our_concat(descs) > 96 do descs[#descs] = nil end self.desc = our_concat(shuffle(descs)) if self.humanoid_class == "Doctor" then self.is_black = math.random(0, 1) == 0 if self.is_black then self.hair_index = math.random(5, 9) self.face_index = math.random(5, 9) self.chin_index = math.random(5, 9) self.layer5 = 4 else self.hair_index = math.random(0, 4) self.face_index = math.random(0, 4) self.chin_index = math.random(0, 4) self.layer5 = 2 end elseif self.humanoid_class == "Nurse" then self.hair_index = math.random(10, 12) self.face_index = math.random(10, 12) self.chin_index = math.random(10, 12) elseif self.humanoid_class == "Receptionist" then self.hair_index = math.random(13, 14) self.face_index = math.random(13, 14) self.chin_index = math.random(13, 14) elseif self.humanoid_class == "Handyman" then self.hair_index = math.random(15, 17) self.face_index = math.random(15, 17) self.chin_index = math.random(15, 17) end end function StaffProfile:drawFace(canvas, x, y, parts_bitmap) parts_bitmap:draw(canvas, x, y , 0, self.hair_index * 29, 65, 29) parts_bitmap:draw(canvas, x, y + 29, 0, 522 + self.face_index * 24, 65, 24) parts_bitmap:draw(canvas, x, y + 53, 0, 954 + self.chin_index * 22, 65, 22) end -- Update junior and consultant status function StaffProfile:parseSkillLevel() local level_config = self.world.map.level_config local junior_skill = level_config.gbv.DoctorThreshold / 1000 self.is_junior = self.skill <= junior_skill and 1 or nil local consultant_skill = level_config.gbv.ConsultantThreshold / 1000 self.is_consultant = self.skill >= consultant_skill and 1 or nil end local conf_id = { Nurse = 0, Doctor = 1, Handyman = 2, Receptionist = 3, } local ability_conf_id = { is_junior = 3, is_doctor = 4, is_surgeon = 5, is_psychiatrist = 6, is_consultant = 7, is_researcher = 8, } function StaffProfile:getFairWage() if self.world.free_build_mode then return 0 end local level_config = self.world.map.level_config local wage = level_config.staff[conf_id[self.humanoid_class]].MinSalary wage = wage + self.skill * 1000 / level_config.gbv.SalaryAbilityDivisor if self.humanoid_class == "Doctor" then for name, id in pairs(ability_conf_id) do if self[name] == 1 then wage = wage + level_config.gbv.SalaryAdd[id] end end if not self.is_junior and not self.is_consultant then wage = wage + level_config.gbv.SalaryAdd[ability_conf_id.is_doctor] end end return math.max(math.floor(wage), level_config.staff[conf_id[self.humanoid_class]].MinSalary) end CorsixTH-0.61/CorsixTH/Lua/strict.lua000066400000000000000000000055021321660673500174150ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- Force local variables to be used for everything (except for explicity -- declared variables and any code running in derestriced mode). This helps to -- catch typos in variable names, and promotes usage of locals over globals -- (which improves speed). local rawset, error, tostring = rawset, error, tostring local strict_mt = {} local allowed_globals = setmetatable({}, {__mode = "k"}) local function newindex(t, k, v) if allowed_globals[k] then rawset(t, k, v) else error("assign to undeclared variable \'" .. tostring(k) .. "\'", 2) end end local function index(t, k) if allowed_globals[k] then return nil else error("use of undeclared variable \'" .. tostring(k) .. "\'", 2) end end local function restrict(ni, i, ...) strict_mt.__newindex = ni strict_mt.__index = i return ... end restrict(newindex, index) --!! Wrap a function so that it is freely able to set global variables --[[ Some existing functions (for example, `require`) should be allowed to read and write global variables without having to worry about declaring them with `strict_declare_global`. !param fn The function which should be able to freely set globals !return A new function which acts just as `fn` and is free to set globals !example require = destrict(require) ]] function destrict(fn) return function(...) local ni, i = strict_mt.__newindex, strict_mt.__index strict_mt.__newindex, strict_mt.__index = nil, nil return restrict(ni, i, fn(...)) end end --!! Declare a global variable so that it can later be used --[[!param name The name of the global to declare !example strict_declare_global "some_var" some_var = 42 ]] function strict_declare_global(name) allowed_globals[name] = true end setmetatable(_G, strict_mt) CorsixTH-0.61/CorsixTH/Lua/string_extensions.lua000066400000000000000000000133101321660673500216660ustar00rootroot00000000000000--[[ Copyright (c) 2011 Manuel "Roujin" Wolf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require "TH" local lpeg = require "lpeg" local _unwrap = TH.stringProxy._unwrap function TH.stringProxy.gsub(str, patt, repl) local str_was_proxy, patt_was_proxy, repl_was_proxy str, str_was_proxy = _unwrap(str) patt, patt_was_proxy = _unwrap(patt) local result local t = type(repl) if t == "table" then result = str:gsub(patt, function(cap) local res, was_proxy = _unwrap(repl[cap]) if was_proxy then repl_was_proxy = true end return res end) elseif t == "function" then result = str:gsub(patt, function(...) local res, was_proxy = _unwrap(repl(...)) if was_proxy then repl_was_proxy = true end return res end) else repl, repl_was_proxy = _unwrap(repl) result = str:gsub(patt, repl) end if str_was_proxy or patt_was_proxy or repl_was_proxy then result = TH.stringProxy(result, TH.stringProxy.gsub, str, patt, repl) end return result end local format_pattern = lpeg.Cs( ( ( -- %% to % lpeg.P"%%" / "%%" + -- Old-style (%s) and (%d) lpeg.C("%" * lpeg.S"sd" * lpeg.Carg(1)) / function(key, args) local idx = args.idx + 1 args.idx = idx local arg, proxy_found = _unwrap(args[idx]) local t = type(arg) if (key == "%d" and t == "number") or -- NB: Numbers are allowed for %s as well to allow concatenation with number. -- TODO the third check should really be class.is(arg, TH.stringProxy), but -- it doesn't currently work due to TH.stringProxy overriding __index (key == "%s" and (t == "string" or t == "number" or t == "userdata")) then if proxy_found then args.proxy_found = true end return arg end return key end + -- New-style %([1-9])% and %([1-9]):([a-zA-Z0-9_.]-)% lpeg.C("%" * lpeg.C(lpeg.R"19") * (":" * lpeg.C(lpeg.R("az","AZ","09","__","..")^1) + lpeg.Cc(nil)) * "%" * lpeg.Carg(1)) / function(str, key, tab, args) local val, proxy_found = _unwrap(args[tonumber(key)]) if val == nil then return str end -- abort if tab then local string_table = _S for part in tab:gmatch"[^.]+" do string_table = string_table[part] if not string_table then return str end -- abort end if not string_table[val] then return str end -- abort val = _unwrap(string_table[val]) proxy_found = true end if proxy_found then args.proxy_found = true end return val end ) + 1 ) ^ 0 ) --! Custom format function for our proxy strings. --! Keywords for replacing are: %s, %d, %%, %[num]% and %[num]:[tab]% --! NB: %s and %d are only replaced if none of the new keywords (%[num]% and %[num]:[tab]%) are present. --! NB: Always escape percent sign (i.e. use %% instead of %) in strings with formatting keywords! Failure --! to do so can cause unwanted behavior. --! --! Keywords: --! %s, %d : replaced with the n-th parameter, if the type matches (%s = string, %d = number). --! %% : replaced by single percent sign "%". Needed for escaping. --! %[num]% : ([num] between 1-9) replaced by [num]-th parameter. --! %[num]:[tab]% : replaced by string obtained by indexing string table _S.[tab] with [num]-th parameter. --!param str (string, stringProxy) the string that contains keywords to be replaced --!param ... (string, stringProxy, number) parameters to be inserted in the string (or used for lookup) --!return formatted stringProxy, if any of the result's components was a stringProxy, else formatted string function TH.stringProxy.format(str, ...) local args = {idx = 0, ...} local str_was_proxy str, str_was_proxy = _unwrap(str) local result = format_pattern:match(str, 1, args) if str_was_proxy or args.proxy_found then result = TH.stringProxy(result, TH.stringProxy.format, str, ...) end return result end --! Wrapper for the lua string.find function. Make sure to call mystring:find(...) instead of string.find(mystring, ...). function TH.stringProxy.find(str, ...) str = _unwrap(str) return str:find(...) end --! Wrapper for the lua string.sub function. Make sure to call mystring:sub(...) instead of string.sub(mystring, ...). function TH.stringProxy.sub(str, ...) local str_was_proxy str, str_was_proxy = _unwrap(str) local result = str:sub(...) if str_was_proxy then result = TH.stringProxy(result, TH.stringProxy.sub, str, ...) end return result end for _, method_name in ipairs({"gsub", "format", "find", "sub"}) do permanent("TH.stringProxy." .. method_name, TH.stringProxy[method_name]) end CorsixTH-0.61/CorsixTH/Lua/strings.lua000066400000000000000000000530561321660673500176050ustar00rootroot00000000000000--[[ Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local lfs = require "lfs" local TH = require "TH" --! Layer which handles the loading of localised text. class "Strings" ---@type Strings local Strings = _G["Strings"] function Strings:Strings(app) self.app = app end local utf8conv local cp437conv local function id(...) return ... end function Strings:init() -- Load (but do not execute) everything from the language directory -- Note that files are loaded with loadfile_envcall self.language_chunks = {} local ourpath = debug.getinfo(1, "S").source:sub(2, -12) local pathsep = package.config:sub(1,1) local path = ourpath .. "languages" .. pathsep for file in lfs.dir(path) do if file:match"%.lua$" then local result, err = loadfile_envcall(path .. file) if not result then print("Error loading languages" .. pathsep .. file .. ":\n" .. tostring(err)) else self.language_chunks[result] = "languages" .. pathsep .. file end end end -- Build the language table from Language() calls -- Every file in the languages folder should have a call to Language() near -- the start of the file which gives the names for the language. These names -- are used to link the user's choice of language to a file, and to link the -- names given to Inherit() to a file. The first name is used as the official -- name for this language, the others may be abbreviations or such. self.languages = {} self.languages_english = {} self.language_to_chunk = {} self.chunk_to_font = {} self.chunk_to_names = {} for chunk, filename in pairs(self.language_chunks) do -- To allow the file to set global variables without causing an error, it -- is given an infinite table as an environment. Reading a non-existant -- key from an infinite table returns another infinite table, rather than -- the default value of nil. local infinite_table_mt infinite_table_mt = { __index = function(_, _) return setmetatable({}, infinite_table_mt) end } -- To abort evaluation of the chunk after Language() is called, a unique -- marker is used as an error message. The other alternative would be to -- do complex co-routine calls. A freshly made empty table is a suitable -- unique marker. local good_error_marker = {} local env = setmetatable({ utf8 = id, cp437 = cp437conv, pairs = pairs, Language = function(...) local names = {...} -- Use the first name for display purposes (case-dependent!). if names[1] ~= "original_strings" then self.languages[#self.languages + 1] = names[1] -- Also save the second name for internal purposes. self.languages_english[#self.languages_english + 1] = names[2] end -- Associate every passed name with this file, case-independently for _, name in pairs(names) do self.language_to_chunk[name:lower()] = chunk end self.chunk_to_names[chunk] = names error(good_error_marker) end, Font = function(...) self.chunk_to_font[chunk] = ... end, -- Set Inherit and SetSpeechFile to do nothing Inherit = function() end, SetSpeechFile = function() end, Encoding = function() end, -- Set LoadStrings to return an infinite table LoadStrings = infinite_table_mt.__index, }, infinite_table_mt) -- Actually run the language file local status, err = pcall(chunk, env) if not status and err ~= good_error_marker and TheApp.good_install_folder then print("Error evaluating " .. filename .. ":\n" .. tostring(err)) end end table.sort(self.languages) end -- String tables are shadowed so that all access to a string table goes -- through a metamethod (which is desirable to catch invalid reads, provide -- "__random", and prevent writes). This means that every string table is in -- fact empty, and has it's keys and values stored in a separate table, called -- the shadow table. The shadows table is used to associate a shadow table -- with a string table. local shadows = setmetatable({}, {__mode = "k"}) -- Metatable which is used for all tables returned by Strings:load() -- The end effect is to raise errors on accesses to non-existant strings -- (unless no_restriction is set to true), to add a special string called -- "__random" to each table (which always resolves to a random string from -- the table), and to prevent editing or adding to a string table. local strings_metatable = function(no_restriction) return { __index = function(t, key) t = shadows[t] local val = t[key] if val ~= nil then return val end if key ~= "__random" then if no_restriction then return nil end error("Non-existant string: " .. tostring(key), 2) end local candidates = {} for _, v in pairs(t) do candidates[#candidates + 1] = v end return candidates[math.random(1, #candidates)] end, __newindex = function(_, _, _) error("String tables are read-only", 2) end, __pairs = function(t) return pairs(shadows[t]) end, __ipairs = function(t) return ipairs(shadows[t]) end, } end -- no_restriction disables errors on access to non-existant strings (for debug purposes) -- no_inheritance disables inheritance except original_strings (for debug purposes) function Strings:load(language, no_restriction, no_inheritance) assert(language ~= "original_strings", "Original strings can not be loaded directly. Please select a proper language.") -- env is the table of globals to execute to the language file in, and hence -- it also stores the resulting strings. local env = {} shadows[env] = {} -- speech_file holds the result of any call to SetSpeechFile() local speech_file local default_encoding = id local encoding = default_encoding local language_called = false local functions; functions = { -- Convert UTF-8 to the file's default encoding utf8 = function(s) if encoding == cp437conv then return utf8conv(s) else return s end end, -- Convert CP437 to the file's default encoding cp437 = function(s) if encoding == cp437conv then return s else return cp437conv(s) end end, ipairs = ipairs, pairs = pairs, -- Calling the Langauage() function should have no effect any more Language = function() language_called = true end, Font = function() if language_called then error("Font declaration must occur before Language declaration") end end, -- Inherit() should evaluate the named language in the current environment -- NB: Inheritance of any but original_strings disabled when no_inheritance set Inherit = function(lang, ...) if no_inheritance and lang ~= "original_strings" then return end local old_encoding = encoding encoding = default_encoding local old_language_called = language_called language_called = false self:_loadPrivate(lang, env, ...) encoding = old_encoding language_called = old_language_called end, -- Encoding() should set the default encoding for the remainder of the file Encoding = function(new_encoding) if new_encoding == functions.utf8 then encoding = id elseif new_encoding == functions.cp437 then encoding = cp437conv else error("Invalid encoding; expected utf8 or cp437") end end, -- LoadStrings() should return the original game string table LoadStrings = function(filename) return assert(TH.LoadStrings(self.app:readDataFile(filename)), "Cannot load original string file '" .. filename .. "'") end, -- SetSpeechFile() should remember the named file to return to our caller SetSpeechFile = function(...) speech_file = ... end, _G = env, type = type, } -- The metatable on the environment is set so that the above functions look -- like top-level level globals, so that the environment behaves like an -- infinite table, and so that assignments are merged into the string table. local metatable metatable = { __index = function(t, k) -- Make the functions look like top-level globals local shadow = shadows[t] local value = ((t == env) and functions[k]) or shadow[k] if value == nil then value = setmetatable({}, metatable) shadow[k] = value shadows[value] = {} end return value end, __newindex = function(t, k, v) local ty = type(v) if ty ~= "table" then -- non-table values cannot be merged if ty == "string" then -- convert from file's default encoding to UTF-8 v = encoding(v) end shadows[t][k] = v else -- v should be merged into t[k] -- Perform t[k][k2] = v2 for each (k2, v2) in v to recursively merge t = t[k] for k2, v2 in pairs(v) do t[k2] = v2 end end end, } metatable.__pairs = strings_metatable(no_restriction).__pairs -- Evaluate the language file setmetatable(env, metatable) self:_loadPrivate(language, env) -- Change the metamethods on every string table to match strings_metatable for k, v in pairs(strings_metatable(no_restriction)) do metatable[k] = v end return env, speech_file end --! Get the Font() declaration of a language, if there was one. function Strings:getFont(language) local chunk = self.language_to_chunk[language:lower()] return chunk and self.chunk_to_font[chunk] end function Strings:getLanguageNames(language) local chunk = self.language_to_chunk[language:lower()] return chunk and self.chunk_to_names[chunk] end function Strings:_loadPrivate(language, env, ...) local chunk = self.language_to_chunk[language:lower()] if not chunk then -- If selected language could not be found, try to revert to English print_table(self.language_to_chunk) print("Language '" .. language .. "' could not be found. Reverting to English.") chunk = self.language_to_chunk["english"] if not chunk then -- If english could not be found, raise an error error("Language 'English' could not be found. Please verify your installation.") end end local status, err = pcall(chunk, env, ...) if not status and self.app.good_install_folder then print("Error evaluating " .. self.language_chunks[chunk] .. ":\n" .. tostring(err)) end end function Strings:setupAdviserMessage(messages) local prioTable prioTable = { _priority = 5, -- Default priority tutorial = { _priority = 11}, epidemic = { _priority = 6 }, --staff_advice --earthquake --multiplayer --surgery_requirements --vomit_wave --level_progress --staff_place_advice --room_forbidden_non_reachable_parts --research --boiler_issue --room_requirements --goals warnings = { _priority = 10 }, --placement_info praise = { _priority = 1 }, --information --build_advice --cheats } local formatFunc formatFunc = function(format_self, arg) -- After 'format', it is not useful to have indexing magic anymore. return { text = format_self.text:format(arg), priority = format_self.priority } end local indexFunc indexFunc = function(index_self, field) -- Since prioTable is a partial table, index_self.table may disappear, prevent infinite recursion. if field == "table" then return nil end local val = {} val.text = index_self.text[field] val.format = formatFunc val.table = index_self.table val.priority = index_self.priority if val.table ~= nil then val.table = val.table[field] if val.table ~= nil and val.table._priority ~= nil then val.priority = val.table._priority end end setmetatable(val, {__index = indexFunc}) return val end -- Initial value local adviserMessage = { text = messages, table = prioTable, priority = prioTable._priority, format = formatFunc } setmetatable(adviserMessage, {__index = indexFunc}) return adviserMessage end -- Primitive system to map UTF-8 characters onto Code Page 437. -- Provided so that language scripts can encode text in a modern and well -- supported manner, and have the text automatically transcoded into the -- encoding which the Theme Hospital fonts use. local codepoints_to_cp437 = { -- Below 0x80 need no translation [0xC7] = 0x80, -- majuscule c-cedilla [0xFC] = 0x81, -- minuscule u-umlaut [0xE9] = 0x82, -- minuscule e-acute [0xE2] = 0x83, -- minuscule a-circumflex [0xE4] = 0x84, -- minuscule a-umlaut [0xE0] = 0x85, -- minuscule a-grave [0xE5] = 0x86, -- minuscule a-ring [0xE7] = 0x87, -- minuscule c-cedilla [0xEA] = 0x88, -- minuscule e-circumflex [0xEB] = 0x89, -- minuscule e-umlaut [0xE8] = 0x8A, -- minuscule e-grave [0xEF] = 0x8B, -- minuscule i-umlaut [0xEE] = 0x8C, -- minuscule i-circumflex [0xEC] = 0x8D, -- minuscule i-grave [0xC4] = 0x8E, -- majuscule a-umlaut [0xC5] = 0x8F, -- majuscule a-ring [0xC9] = 0x90, -- majuscule e-acute [0xE6] = 0x91, -- minuscule ae [0xC6] = 0x91, -- majuscule ae (not in TH fonts - mapped to minuscule ae) [0xF4] = 0x93, -- minuscule o-circumflex [0xF6] = 0x94, -- minuscule o-umlaut [0xF2] = 0x95, -- minuscule o-grave [0xFB] = 0x96, -- minuscule u-circumflex [0xF9] = 0x97, -- minuscule u-grave [0xFF] = 0x98, -- minuscule y-umlaut [0xD6] = 0x99, -- majuscule o-umlaut [0xDC] = 0x9A, -- majuscule u-umlaut -- 0x9B through 0x9F are currency symbols and not present in TH fonts [0xE1] = 0xA0, -- minuscule a-acute [0xED] = 0xA1, -- minuscule i-acute [0xF3] = 0xA2, -- minuscule o-acute [0xFA] = 0xA3, -- minuscule u-acute [0xF1] = 0xA4, -- minuscule n-tilde [0xD1] = 0xA5, -- majuscule n-tilde -- 0xA6 and 0xA7 are ordinal indicators and not present in TH fonts [0xBF] = 0xA8, -- inverted question mark -- 0xA9 through 0xAC are not present in TH fonts [0xA1] = 0xAD, -- inverted exclaimation mark -- 0xAE through 0xE0 are not present in TH fonts [0xDF] = 0xE1, -- eszett / sharp-S / lowercase-beta -- 0xE2 through 0xFF are not present in TH fonts } local cp437_to_codepoints = { [0x91] = 0xE6, -- minuscule ae [0x9B] = 0xA2, -- cent sign [0x9C] = 0xA3, -- pound sign [0x9D] = 0xA5, -- yen sign [0x9E] = 0x20A7, -- peseta sign [0x9F] = 0x192, -- florin sign [0xA6] = 0xAA, -- a ordinal indicator [0xA7] = 0xBA, -- o ordinal indicator [0xA9] = 0x2310, -- negation [0xAA] = 0xAC, -- negation [0xAB] = 0xBD, -- 1/2 [0xAC] = 0xBC, -- 1/4 [0xAE] = 0xAB, -- << guillemets [0xAF] = 0xBB, -- >> guillemets -- 0xB0 through 0xDF omitted [0xE0] = 0x3B1, -- alpha [0xE2] = 0x393, -- gamma [0xE3] = 0x3C0, -- pi [0xE4] = 0x3A3, -- majuscule sigma [0xE5] = 0x3C3, -- minuscule sigma [0xE6] = 0x3BC, -- minuscule mu [0xE7] = 0x3C4, -- tau [0xE8] = 0x3A6, -- majuscule phi [0xE9] = 0x398, -- theta [0xEA] = 0x3A9, -- omega [0xEB] = 0x3B4, -- delta [0xEC] = 0x221E, -- infinity [0xED] = 0x3C6, -- minuscule phi [0xEE] = 0x3B5, -- epsilon [0xEF] = 0x2229, -- set intersection [0xF0] = 0x2261, -- modular congruence / triple equals [0xF1] = 0xB1, -- plus / minus [0xF2] = 0x2265, -- >= [0xF3] = 0x2264, -- <= [0xF4] = 0x2320, -- upper integral sign [0xF5] = 0x2321, -- lower integral sign [0xF6] = 0xF7, -- obelus [0xF7] = 0x2248, -- approximate equality [0xF8] = 0xB0, -- degree symbol [0xF9] = 0x2219, -- bullet [0xFA] = 0xB7, -- interpunct [0xFB] = 0x221A, -- square root [0xFC] = 0x207F, -- exponentiation [0xFD] = 0xB2, -- superscript 2 [0xFE] = 0x25A0, -- filled square [0xFF] = 0xA0, -- non-breaking space } local function utf8encode(codepoint) if codepoint <= 0x7F then return string.char(codepoint) elseif codepoint <= 0x7FF then local sextet = codepoint % 64 codepoint = math.floor((codepoint - sextet) / 64) return string.char(0xC0 + codepoint, 0x80 + sextet) elseif codepoint <= 0xFFFF then local sextet2 = codepoint % 64 codepoint = math.floor((codepoint - sextet2) / 64) local sextet1 = codepoint % 64 codepoint = math.floor((codepoint - sextet2) / 64) return string.char(0xE0 + codepoint, 0x80 + sextet1, 0x80 + sextet2) else local sextet3 = codepoint % 64 codepoint = math.floor((codepoint - sextet3) / 64) local sextet2 = codepoint % 64 codepoint = math.floor((codepoint - sextet2) / 64) local sextet1 = codepoint % 64 codepoint = math.floor((codepoint - sextet2) / 64) return string.char(0xF0 + codepoint, 0x80 + sextet1, 0x80 + sextet2, 0x80 + sextet3) end end local cp437_to_utf8_pattern = {"["} local cp437_to_utf8_replacement = {} for codepoint, cp437 in pairs(codepoints_to_cp437) do if not cp437_to_codepoints[cp437] then cp437_to_utf8_pattern[#cp437_to_utf8_pattern + 1] = string.char(cp437) cp437_to_utf8_replacement[string.char(cp437)] = utf8encode(codepoint) end end for cp437, codepoint in pairs(cp437_to_codepoints) do cp437_to_utf8_pattern[#cp437_to_utf8_pattern + 1] = string.char(cp437) cp437_to_utf8_replacement[string.char(cp437)] = utf8encode(codepoint) end cp437_to_utf8_pattern[#cp437_to_utf8_pattern + 1] = "]" cp437_to_utf8_pattern = table.concat(cp437_to_utf8_pattern) cp437conv = function(s) return (s:gsub(cp437_to_utf8_pattern, cp437_to_utf8_replacement)) end -- Table which maps a single character and a single unicode combining -- diacritical mark to a single unicode codepoint local circumflex = 0x302 local cedilla = 0x327 local umlaut = 0x308 local acute = 0x301 local grave = 0x300 local ring = 0x30A local tilde = 0x303 local combine_diacritical_marks = { a = { [grave] = 0xE0, [acute] = 0xE1, [circumflex] = 0xE2, [umlaut] = 0xE4, [ring] = 0xE5, }, e = { [grave] = 0xE8, [acute] = 0xE9, [circumflex] = 0xEA, [umlaut] = 0xEB, }, i = { [grave] = 0xEC, [acute] = 0xED, [circumflex] = 0xEE, [umlaut] = 0xEF, }, o = { [grave] = 0xF2, [acute] = 0xF3, }, u = { [grave] = 0xF9, [acute] = 0xFA, [circumflex] = 0xFB, [umlaut] = 0xFC, }, c = { [cedilla] = 0xE7, }, n = { [tilde] = 0xF1, }, y = { [umlaut] = 0xFF, }, A = { [umlaut] = 0xC4, [ring] = 0xC5, }, E = { [acute] = 0xC9, }, O = { [umlaut] = 0xD6, }, U = { [umlaut] = 0xDC, }, C = { [cedilla] = 0xC7, }, N = { [tilde] = 0xD1, }, } local function utf8char(c) -- Test for presence of a normal character prior to the utf-8 character local prechar if c:byte() < 128 then prechar = c:sub(1, 1) c = c:sub(2, -1) end -- Extract the codepoint of the utf-8 character local codepoint = 0 local multiplier = 1 for i = #c, 2, -1 do codepoint = codepoint + (c:byte(i) - 128) * multiplier multiplier = multiplier * 2^6 end codepoint = codepoint + (c:byte(1) % 2^(7 - #c)) * multiplier -- If the utf-8 character is a combining diacritical mark, merge it with the -- preceding normal character if prechar and (0x300 <= codepoint and codepoint < 0x370) then if combine_diacritical_marks[prechar] then if combine_diacritical_marks[prechar][codepoint] then codepoint = combine_diacritical_marks[prechar][codepoint] prechar = nil else return prechar end else return prechar end end -- Convert to Code Page 437 return (prechar or "") .. string.char(codepoints_to_cp437[codepoint] or 0x3F) end utf8conv = function(s) -- Pull out each individual utf-8 character and pass it through utf8char -- [\1-\127] picks up a preceding ASCII character to combine diacritics -- [\192-\253] picks up the first byte of a utf-8 character (technically -- only 194 through 244 should be used) -- [\128-\191] picks up the remaining bytes of a utf-8 character return (s:gsub("[\1-\127]?[\192-\253][\128-\191]*", utf8char)) end -- Fix string.upper and string.lower to work with CP437 rather than current locale local lower_to_upper, upper_to_lower = {}, {} local function case(lower, upper) lower = cp437conv(string.char(lower)) upper = cp437conv(string.char(upper)) lower_to_upper[lower] = upper lower_to_upper[upper] = upper upper_to_lower[lower] = lower upper_to_lower[upper] = lower end case(0x87, 0x80) -- c-cedilla case(0x81, 0x9A) -- u-umlaut case(0x82, 0x90) -- e-acute case(0x84, 0x8E) -- a-umlaut case(0x86, 0x8F) -- a-ring case(0x94, 0x99) -- o-umlaut case(0xA4, 0xA5) -- n-tilde local case_pattern = "\195[\128-\191]" -- Unicode range [0xC0, 0xFF] as UTF-8 local orig_upper = string.upper function string.upper(s) return orig_upper(s:gsub(case_pattern, lower_to_upper)) end local orig_lower = string.lower function string.lower(s) return orig_lower(s:gsub(case_pattern, upper_to_lower)) end CorsixTH-0.61/CorsixTH/Lua/ui.lua000066400000000000000000000711131321660673500165230ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] dofile "window" --! Top-level container for all other user-interface components. class "UI" (Window) ---@type UI local UI = _G["UI"] local TH = require "TH" local SDL = require "sdl" local WM = SDL.wm local lfs = require "lfs" local function invert(t) local r = {} for k, v in pairs(t) do if type(v) == "table" then for _, val in ipairs(v) do r[val] = k end else r[v] = k end end return r end function UI:initKeyAndButtonCodes() local key_remaps = {} local button_remaps = {} local key_to_button_remaps = {} local key_norms = setmetatable({ [" "] = "space", esc = "escape", }, {__index = function(t, k) k = tostring(k):lower() return rawget(t, k) or k end}) do local ourpath = debug.getinfo(1, "S").source:sub(2, -7) local result, err = loadfile_envcall(ourpath .. "key_mapping.txt") if not result then print("Cannot load key mapping:" .. err) else local env = { key_remaps = function(t) for k, v in pairs(t) do key_remaps[key_norms[k]] = key_norms[v] end end, button_remaps = function(t) for k, v in pairs(t) do k = key_norms[k] if k == "left" or k == "middle" or k == "right" then button_remaps[k] = key_norms[v] else key_to_button_remaps[k] = key_norms[v] end end end, } setmetatable(env, {__index = function(_, k) return k end}) result(env) end end local keypad = { ["Keypad 0"] = "insert", ["Keypad 1"] = "end", ["Keypad 2"] = "down", ["Keypad 3"] = "pagedown", ["Keypad 4"] = "left", ["Keypad 6"] = "right", ["Keypad 7"] = "home", ["Keypad 8"] = "up", ["Keypad 9"] = "pageup", ["Keypad ."] = "delete", } -- Apply keypad remapping for k, v in pairs(keypad) do key_remaps[key_norms[k]] = key_norms[v] end self.key_remaps = key_remaps self.key_to_button_remaps = key_to_button_remaps self.button_codes = { left = 1, middle = 2, right = 3, } -- Apply button remaps directly to codes, as mouse button codes are reliable -- (keyboard key codes are not). local original_button_codes = {} for input, behave_as in pairs(button_remaps) do local code = original_button_codes[input] or self.button_codes[input] or {} if not original_button_codes[input] then original_button_codes[input] = code self.button_codes[input] = nil end if not original_button_codes[behave_as] then original_button_codes[behave_as] = self.button_codes[behave_as] end self.button_codes[behave_as] = code end self.button_codes = invert(self.button_codes) end local LOADED_DIALOGS = false function UI:UI(app, minimal) self:Window() self:initKeyAndButtonCodes() self.app = app self.screen_offset_x = 0 self.screen_offset_y = 0 self.cursor = nil self.cursor_entity = nil self.debug_cursor_entity = nil -- through trial and error, this palette seems to give the desired result (white background, black text) -- NB: Need a palette present in both the full game and in the demo data if minimal then self.tooltip_font = app.gfx:loadBuiltinFont() else local palette = app.gfx:loadPalette("QData", "PREF01V.PAL") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent self.tooltip_font = app.gfx:loadFont("QData", "Font00V", false, palette) end self.tooltip = nil self.tooltip_counter = 0 self.background = false -- tick_scroll_amount will either hold a table containing x and y values, at -- at least one of which being non-zero. If both x and y are zero, then the -- value false should be used instead, so that tests to see if there is any -- scrolling to be done are quick and simple. self.tick_scroll_amount = false self.tick_scroll_amount_mouse = false self.tick_scroll_mult = 1 self.modal_windows = { -- [class_name] -> window, } -- Windows can tell UI to pass specific codes forward to them. See addKeyHandler and removeKeyHandler self.key_handlers = {} self.down_count = 0 if not minimal then self.default_cursor = app.gfx:loadMainCursor("default") self.down_cursor = app.gfx:loadMainCursor("clicked") self.grab_cursor = app.gfx:loadMainCursor("grab") self.edit_room_cursor = app.gfx:loadMainCursor("edit_room") self.waiting_cursor = app.gfx:loadMainCursor("sleep") end self.editing_allowed = true if not LOADED_DIALOGS then app:loadLuaFolder("dialogs", true) app:loadLuaFolder("dialogs/fullscreen", true) app:loadLuaFolder("dialogs/resizables", true) app:loadLuaFolder("dialogs/resizables/menu_list_dialogs", true) app:loadLuaFolder("dialogs/resizables/file_browsers", true) LOADED_DIALOGS = true end self:setCursor(self.default_cursor) -- to avoid a bug which causes open fullscreen windows to display incorrectly, load -- the sprite sheet associated with all fullscreen windows so they are correctly cached. -- Darrell: Only do this if we have a valid data directory otherwise we won't be able to -- display the directory browser to even find the data directory. -- Edvin: Also, the demo does not contain any of the dialogs. if self.app.good_install_folder and not self.app.using_demo_files then local gfx = self.app.gfx local palette -- load drug casebook sprite table palette = gfx:loadPalette("QData", "DrugN01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "DrugN02V", true, palette) -- load fax sprite table palette = gfx:loadPalette("QData", "Fax01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "Fax02V", true, palette) -- load town map sprite table palette = gfx:loadPalette("QData", "Town01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "Town02V", true, palette) -- load hospital policy sprite table palette = gfx:loadPalette("QData", "Pol01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "Pol02V", true, palette) -- load bank manager sprite table palette = gfx:loadPalette("QData", "Bank01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "Bank02V", true, palette) -- load research screen sprite table palette = gfx:loadPalette("QData", "Res01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "Res02V", true, palette) -- load progress report sprite table palette = gfx:loadPalette("QData", "Rep01V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "Rep02V", true, palette) -- load annual report sprite table palette = gfx:loadPalette("QData", "Award02V.pal") palette:setEntry(255, 0xFF, 0x00, 0xFF) -- Make index 255 transparent gfx:loadSpriteTable("QData", "Award03V", true, palette) end self:setupGlobalKeyHandlers() end function UI:runDebugScript() print("Executing Debug Script...") local path_sep = package.config:sub(1, 1) local lua_dir = debug.getinfo(1, "S").source:sub(2, -8) _ = TheApp.ui and TheApp.ui.debug_cursor_entity local script = assert(loadfile(lua_dir .. path_sep .. "debug_script.lua")) script() end function UI:setupGlobalKeyHandlers() -- Add some global keyhandlers self:addKeyHandler("escape", self, self.closeWindow) self:addKeyHandler("escape", self, self.stopMovie) self:addKeyHandler("space", self, self.stopMovie) self:addKeyHandler({"ctrl", "s"}, self, self.makeScreenshot) self:addKeyHandler({"alt", "return"}, self, self.toggleFullscreen) self:addKeyHandler({"alt", "keypad enter"}, self, self.toggleFullscreen) self:addKeyHandler({"alt", "f4"}, self, self.exitApplication) self:addKeyHandler({"shift", "f10"}, self, self.resetApp) self:addKeyHandler({"ctrl", "f10"}, self, self.toggleCaptureMouse) self:addOrRemoveDebugModeKeyHandlers() end function UI:connectDebugger() local error_message = TheApp:connectDebugger() if error_message then self:addWindow(UIInformation(self, {error_message})) end end -- Used for everything except music and announcements function UI:playSound(name, played_callback, played_callback_delay) if self.app.config.play_sounds then self.app.audio:playSound(name, nil, false, played_callback, played_callback_delay) end end -- Used for announcements only function UI:playAnnouncement(name, played_callback, played_callback_delay) if self.app.config.play_announcements then self.app.audio:playSound(name, nil, true, played_callback, played_callback_delay) end end function UI:setDefaultCursor(cursor) if cursor == nil then cursor = "default" end if type(cursor) == "string" then cursor = self.app.gfx:loadMainCursor(cursor) end if self.cursor == self.default_cursor then self:setCursor(cursor) end self.default_cursor = cursor end function UI:setCursor(cursor) if cursor ~= self.cursor then self.cursor = cursor if cursor.use then -- Cursor is a true C cursor, perhaps even a hardware cursor. -- Make the real cursor visible, and use this as it. self.simulated_cursor = nil WM.showCursor(true) cursor:use(self.app.video) else -- Cursor is a Lua simulated cursor. -- Make the real cursor invisible, and simulate it with this. WM.showCursor(false) self.simulated_cursor = cursor end end end function UI:drawTooltip(canvas) if not self.tooltip or not self.tooltip_counter or self.tooltip_counter > 0 then return end local x, y = self.tooltip.x, self.tooltip.y if not self.tooltip.x then -- default to cursor position for (lower left corner of) tooltip x, y = self:getCursorPosition() end if self.tooltip_font then self.tooltip_font:drawTooltip(canvas, self.tooltip.text, x, y) end end function UI:draw(canvas) local app = self.app if self.background then local bg_w, bg_h = self.background_width, self.background_height local screen_w, screen_h = app.config.width, app.config.height local factor = math.max(screen_w / bg_w, screen_h / bg_h) if canvas:scale(factor, "bitmap") or canvas:scale(factor) then self.background:draw(canvas, math.floor((screen_w - bg_w * factor) / 2), math.floor((screen_h - bg_h * factor) / 2)) canvas:scale(1) else canvas:fillBlack() self.background:draw(canvas, math.floor((screen_w - bg_w) / 2), math.floor((screen_h - bg_h) / 2)) end end Window.draw(self, canvas, 0, 0) self:drawTooltip(canvas) if self.simulated_cursor then self.simulated_cursor.draw(canvas, self.cursor_x, self.cursor_y) end end --! Register a key handler / hotkey for a window. --!param keys (string or table) The keyboard key which should trigger the callback (for -- example, "left" or "z" or "F9"), or a list with modifier(s) and the key (e.g. {"ctrl", "s"}). --!param window (Window) The UI window which should receive the callback. --!param callback (function) The method to be called on `window` when `key` is -- pressed. --!param ... Additional arguments to `callback`. function UI:addKeyHandler(keys, window, callback, ...) keys = (type(keys) == "table") and keys or {keys} local key = table.remove(keys, #keys):lower() local modifiers = list_to_set(keys) -- SET of modifiers if not self.key_handlers[key] then -- No handlers for this key? Create a new table. self.key_handlers[key] = {} end table.insert(self.key_handlers[key], { modifiers = modifiers, window = window, callback = callback, ... }) end --! Unregister a key handler previously registered by `addKeyHandler`. --!param keys (string or table) The key or list of modifiers+key of a key / window -- pair previously passed to `addKeyHandler`. --!param window (Window) The window of a key / window pair previously passed -- to `addKeyHandler`. function UI:removeKeyHandler(keys, window) keys = (type(keys) == "table") and keys or {keys} local key = table.remove(keys, #keys):lower() local modifiers = list_to_set(keys) -- SET of modifiers if self.key_handlers[key] then for index, info in ipairs(self.key_handlers[key]) do if info.window == window and compare_tables(info.modifiers, modifiers) then table.remove(self.key_handlers[key], index) end end -- If last key handler was removed, delete the (now empty) list. if #self.key_handlers[key] == 0 then self.key_handlers[key] = nil end end end local menu_bg_sizes = { -- Available menu background sizes {1920, 1080}, } function UI:setMenuBackground() local bg_size = menu_bg_sizes[1] self.background = self.app.gfx:loadRaw("mainmenu" .. bg_size[2], bg_size[1], bg_size[2], "Bitmap") self.background_width = bg_size[1] self.background_height = bg_size[2] end function UI:onChangeResolution() -- If we are in the main menu (== no world), reselect the background if not self.app.world then self:setMenuBackground() end -- Inform windows of resolution change if not self.windows then return end for _, window in ipairs(self.windows) do window:onChangeResolution() end end function UI:registerTextBox(box) self.textboxes[#self.textboxes + 1] = box end function UI:unregisterTextBox(box) for num, b in ipairs(self.textboxes) do if b == box then table.remove(self.textboxes, num) break end end end function UI:changeResolution(width, height) self.app:prepareVideoUpdate() local error_message = self.app.video:update(width, height, unpack(self.app.modes)) self.app:finishVideoUpdate() if error_message then print("Warning: Could not change resolution to " .. width .. "x" .. height .. ".") print("The error was: ") print(error_message) return false end self.app.config.width = width self.app.config.height = height -- Redraw cursor local cursor = self.cursor self.cursor = nil self:setCursor(cursor) -- Save new setting in config self.app:saveConfig() self:onChangeResolution() return true end function UI:toggleCaptureMouse() self.app.capturemouse = not self.app.capturemouse self.app.video:setCaptureMouse(self.app.capturemouse) end function UI:toggleFullscreen() local modes = self.app.modes local function toggleMode(index) self.app.fullscreen = not self.app.fullscreen if self.app.fullscreen then modes[index] = "fullscreen" else modes[index] = "" end end -- Search in modes table if it contains a fullscreen value and keep the index -- If not found, we will add an index at end of table local index = #modes + 1 for i=1, #modes do if modes[i] == "fullscreen" then index = i break end end -- Toggle Fullscreen mode toggleMode(index) local success = true self.app:prepareVideoUpdate() local error_message = self.app.video:update(self.app.config.width, self.app.config.height, unpack(modes)) self.app:finishVideoUpdate() if error_message then success = false local mode_string = modes[index] or "windowed" print("Warning: Could not toggle to " .. mode_string .. " mode with resolution of " .. self.app.config.width .. "x" .. self.app.config.height .. ".") -- Revert fullscreen mode modifications toggleMode(index) end -- Redraw cursor local cursor = self.cursor self.cursor = nil self:setCursor(cursor) if success then -- Save new setting in config self.app.config.fullscreen = self.app.fullscreen self.app:saveConfig() end return success end --! Called when the user presses a key on the keyboard --!param rawchar (string) The name of the key the user pressed. --!param is_repeat (boolean) True if this is a key repeat event function UI:onKeyDown(rawchar, modifiers, is_repeat) local handled = false -- Apply key-remapping and normalisation rawchar = string.sub(rawchar,1,6) == "Keypad" and modifiers["numlockactive"] and string.sub(rawchar,8) or rawchar local key = rawchar:lower() do local mapped_button = self.key_to_button_remaps[key] if mapped_button then self:onMouseDown(mapped_button, self.cursor_x, self.cursor_y) return true end key = self.key_remaps[key] or key end -- Remove numlock modifier modifiers["numlockactive"] = nil -- If there is one, the current textbox gets the key. -- It will not process any text at this point though. for _, box in ipairs(self.textboxes) do if box.enabled and box.active and not handled then handled = box:keyInput(key, rawchar) end end -- Otherwise, if there is a key handler bound to the given key, then it gets -- the key. if not handled then local keyHandlers = self.key_handlers[key] if keyHandlers then -- Iterate over key handlers and call each one whose modifier(s) are pressed -- NB: Only if the exact correct modifiers are pressed will the shortcut get processed. for _, handler in ipairs(keyHandlers) do if compare_tables(handler.modifiers, modifiers) then handler.callback(handler.window, unpack(handler)) handled = true end end end end self.buttons_down[key] = true self.modifiers_down = modifiers self.key_press_handled = handled return handled end --! Called when the user releases a key on the keyboard --!param rawchar (string) The name of the key the user pressed. function UI:onKeyUp(rawchar) rawchar = SDL.getKeyModifiers().numlockactive and string.sub(rawchar,1,6) == "Keypad" and string.sub(rawchar,8) or rawchar local key = rawchar:lower() do local mapped_button = self.key_to_button_remaps[key] if mapped_button then self:onMouseUp(mapped_button, self.cursor_x, self.cursor_y) return true end key = self.key_remaps[key] or key end self.buttons_down[key] = nil end function UI:onEditingText(text, start, length) -- Does nothing at the moment. We are handling text input ourselves. end --! Called in-between onKeyDown and onKeyUp. The argument 'text' is a --! string containing the input localized according to the keyboard layout --! the user uses. function UI:onTextInput(text) -- It's time for any active textbox to get input. for _, box in ipairs(self.textboxes) do if box.enabled and box.active then box:textInput(text) end end -- Finally it might happen that a hotkey was not recognized because of -- differing local keyboard layout. Give it another shot. if not self.key_press_handled then local keyHandlers = self.key_handlers[text] if keyHandlers then -- Iterate over key handlers and call each one whose modifier(s) are pressed -- NB: Only if the exact correct modifiers are pressed will the shortcut get processed. for _, handler in ipairs(keyHandlers) do if compare_tables(handler.modifiers, self.modifiers_down) then handler.callback(handler.window, unpack(handler)) end end end end end function UI:onMouseDown(code, x, y) local repaint = false local button = self.button_codes[code] or code if self.app.moviePlayer.playing then if button == "left" then self.app.moviePlayer:stop() end return true end if self.cursor_entity == nil and self.down_count == 0 and self.cursor == self.default_cursor then self:setCursor(self.down_cursor) repaint = true end self.down_count = self.down_count + 1 if x >= 3 and y >= 3 and x < self.app.config.width - 3 and y < self.app.config.height - 3 then self.buttons_down["mouse_"..button] = true end self:updateTooltip() return Window.onMouseDown(self, button, x, y) or repaint end function UI:onMouseUp(code, x, y) local repaint = false local button = self.button_codes[code] or code self.down_count = self.down_count - 1 if self.down_count <= 0 then if self.cursor_entity == nil and self.cursor == self.down_cursor then self:setCursor(self.default_cursor) repaint = true end self.down_count = 0 end self.buttons_down["mouse_"..button] = nil if Window.onMouseUp(self, button, x, y) then repaint = true else if self:ableToClickEntity(self.cursor_entity) then self.cursor_entity:onClick(self, button) repaint = true end end self:updateTooltip() return repaint end function UI:onMouseWheel(x, y) Window.onMouseWheel(self, x, y) end --[[ Determines if a cursor entity can be clicked @param entity (Entity,nil) cursor entity clicked on if any @return true if can be clicked on, false otherwise (boolean) ]] function UI:ableToClickEntity(entity) if self.cursor_entity and self.cursor_entity.onClick then local hospital = entity.hospital local epidemic = hospital and hospital.epidemic return self.app.world.user_actions_allowed and not epidemic or (epidemic and not epidemic.vaccination_mode_active) else return false end end function UI:getScreenOffset() return self.screen_offset_x, self.screen_offset_y end local tooltip_ticks = 30 -- Amount of ticks until a tooltip is displayed function UI:updateTooltip() if self.buttons_down.mouse_left then -- Disable tooltips altogether while left button is pressed. self.tooltip = nil self.tooltip_counter = nil return elseif self.tooltip_counter == nil then self.tooltip_counter = tooltip_ticks end local tooltip = self:getTooltipAt(self.cursor_x, self.cursor_y) if tooltip then -- NB: Do not set counter if tooltip changes here. This allows quick tooltip reading of adjacent buttons. self.tooltip = tooltip else -- Not hovering over any button with tooltip -> reset self.tooltip = nil self.tooltip_counter = tooltip_ticks end end local UpdateCursorPosition = TH.cursor.setPosition --! Called when the mouse enters or leaves the game window. function UI:onWindowActive(gain) end --! Window has been resized by the user --!param width (integer) New window width --!param height (integer) New window height function UI:onWindowResize(width, height) if not self.app.config.fullscreen then self:changeResolution(width, height) end end function UI:onMouseMove(x, y, dx, dy) local repaint = UpdateCursorPosition(self.app.video, x, y) self.cursor_x = x self.cursor_y = y if self.drag_mouse_move then self.drag_mouse_move(x, y) return true end if Window.onMouseMove(self, x, y, dx, dy) then repaint = true end self:updateTooltip() return repaint end function UI:onTick() Window.onTick(self) local repaint = false if self.tooltip_counter and self.tooltip_counter > 0 then self.tooltip_counter = self.tooltip_counter - 1 repaint = (self.tooltip_counter == 0) end -- If a tooltip is currently shown, update each tick (may be dynamic) if self.tooltip then self:updateTooltip() end return repaint end function UI:addWindow(window) if window.closed then return end if window.modal_class then -- NB: while instead of if in case of another window being created during the close function while self.modal_windows[window.modal_class] do self.modal_windows[window.modal_class]:close() end self.modal_windows[window.modal_class] = window end if window.modal_class == "main" or window.modal_class == "fullscreen" then self.editing_allowed = false -- do not allow editing rooms if main windows (build, furnish, hire) are open end Window.addWindow(self, window) end function UI:removeWindow(window) if Window.removeWindow(self, window) then local class = window.modal_class if class and self.modal_windows[class] == window then self.modal_windows[class] = nil end if window.modal_class == "main" or window.modal_class == "fullscreen" then self.editing_allowed = true -- allow editing rooms again when main window is closed end return true else return false end end function UI:getCursorPosition(window) -- Given no argument, returns the cursor position in screen space -- Otherwise, returns the cursor position in the space of the given window local x, y = self.cursor_x, self.cursor_y while window ~= nil and window ~= self do x = x - window.x y = y - window.y window = window.parent end return x, y end function UI:addOrRemoveDebugModeKeyHandlers() self:removeKeyHandler({"ctrl", "c"}, self) self:removeKeyHandler("f12", self) self:removeKeyHandler({"shift", "d"}, self) if self.app.config.debug then self:addKeyHandler({"ctrl", "c"}, self, self.connectDebugger) self:addKeyHandler("f12", self, self.showLuaConsole) self:addKeyHandler({"shift", "d"}, self, self.runDebugScript) end end function UI:afterLoad(old, new) if old < 5 then self.editing_allowed = true end if old < 63 then -- modifiers have been added to key handlers for _, handlers in pairs(self.key_handlers) do for _, handler in ipairs(handlers) do handler.modifiers = {} end end -- some global key shortcuts were converted to use keyHandlers self:removeKeyHandler("f12", self) self:removeKeyHandler({"shift", "d"}, self) self:setupGlobalKeyHandlers() end if old < 70 then self:removeKeyHandler("f10", self) self:addKeyHandler({"shift", "f10"}, self, self.resetApp) self:removeKeyHandler("a", self) end -- changing this so that it is quit application and Shift + Q is quit to main menu if old < 71 then self:removeKeyHandler({"alt", "f4"}, self, self.quit) self:addKeyHandler({"alt", "f4"}, self, self.exitApplication) end if old < 100 then self:removeKeyHandler({"alt", "enter"}, self) self:addKeyHandler({"alt", "return"}, self, self.toggleFullscreen) end if old < 104 then self:addKeyHandler({"alt", "keypad enter"}, self, self.toggleFullscreen) end if old < 118 then self:addKeyHandler({"ctrl", "f10"}, self, self.toggleCaptureMouse) end Window.afterLoad(self, old, new) end -- Stub to allow the function to be called in e.g. the information -- dialog without having to worry about a GameUI being present function UI:tutorialStep(...) end function UI:makeScreenshot() -- Find an index for screenshot which is not already used local i = 0 local filename repeat filename = TheApp.screenshot_dir .. ("screenshot%i.bmp"):format(i) i = i + 1 until lfs.attributes(filename, "size") == nil print("Taking screenshot: " .. filename) local res, err = self.app.video:takeScreenshot(filename) -- Take screenshot if not res then print("Screenshot failed: " .. err) else self.app.audio:playSound("SNAPSHOT.WAV") end end --! Closes one window (the topmost / active window, if possible) --!return true iff a window was closed function UI:closeWindow() if not self.windows then return false end -- Close the topmost window first local first = self.windows[1] if first.on_top and first.esc_closes then first:close() return true end for i = #self.windows, 1, -1 do local window = self.windows[i] if window.esc_closes then window:close() return true end end end --! Shows the Lua console function UI:showLuaConsole() self:addWindow(UILuaConsole(self)) end --! Triggers reset of the application (reloads .lua files) function UI:resetApp() debug.getregistry()._RESTART = true TheApp.running = false end -- Added this function as quit does not exit the application, it only exits the game to the menu screen function UI:exitApplication() self.app:abandon() end --! Triggers quitting the application function UI:quit() self.app:exit() end --! Tries to stop a video, if one is currently playing function UI:stopMovie() if self.app.moviePlayer.playing then self.app.moviePlayer:stop() end end -- Stub for compatibility with savegames r1896-1921 function UI:stopVideo() end CorsixTH-0.61/CorsixTH/Lua/utility.lua000066400000000000000000000231231321660673500176070ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] --[[ Iterator factory for iterating over the deep children of a table. For example: for fn in values(_G, "*.remove") do fn() end Will call os.remove() and table.remove() There can be multiple wildcards (asterisks). --]] function values(root_table, wildcard) local wildcard_parts = {} for part in wildcard:gmatch("[^.]+") do wildcard_parts[#wildcard_parts + 1] = part end local keys = {} local function f() local value = root_table local nkey = 1 for _, part in ipairs(wildcard_parts) do if part == "*" then local key = keys[nkey] if nkey >= #keys then key = next(value, key) keys[nkey] = key if key == nil then if nkey == 1 then return nil else return f() end end end value = value[key] nkey = nkey + 1 else if type(value) ~= "table" then local mt = getmetatable(value) if not mt or not mt.__index then return f() end end value = value[part] if value == nil then return f() end end end return value end return f end -- Used to prevent infinite loops local pt_reflist = {} -- Helper function to print the contents of a table. Child tables are printed recursively. -- Call without specifying level, only obj and (if wished) max_level. function print_table(obj, max_level, level) assert(type(obj) == "table", "Tried to print " .. tostring(obj) .. " with print_table.") pt_reflist[#pt_reflist + 1] = obj level = level or 0 local spacer = "" for _ = 1, level do spacer = spacer .. " " end for k, v in pairs(obj) do print(spacer .. tostring(k), v) if type(k) == "table" then -- a set, recurse further into k, instead of v v = k end if type(v) == "table" and (not max_level or max_level > level) then -- check for reference loops local found_ref = false for _, ref in ipairs(pt_reflist) do if ref == v then found_ref = true end end if found_ref then print(spacer .. " " .. "") else print_table(v, max_level, level + 1) end end end pt_reflist[#pt_reflist] = nil end -- Can return the length of any table, where as #table_name is only suitable for use with arrays of one contiguous part without nil values. function table_length(table) local count = 0 for _,_ in pairs(table) do count = count + 1 end return count end -- Variation on loadfile() which allows for the loaded file to have global -- references resolved in supplied tables. On failure, returns nil and an -- error. On success, returns the file as a function just like loadfile() does -- with the difference that the first argument to this function should be a -- table in which globals are looked up and written to. -- Note: Unlike normal loadfile, this version also accepts files which start -- with the UTF-8 byte order marker function loadfile_envcall(filename) -- Read file contents local f, err = io.open(filename) if not f then return nil, err end local result = f:read(4) if result == "\239\187\191#" then -- UTF-8 BOM plus Unix Shebang result = f:read("*a"):gsub("^[^\r\n]*", "", 1) elseif result:sub(1, 3) == "\239\187\191" then -- UTF-8 BOM result = result:sub(4,4) .. f:read("*a") elseif result:sub(1, 1) == "#" then -- Unix Shebang result = (result .. f:read("*a")):gsub("^[^\r\n]*", "", 1) else -- Normal result = result .. f:read("*a") end f:close() return loadstring_envcall(result, "@" .. filename) end if _G._VERSION == "Lua 5.2" or _G._VERSION == "Lua 5.3" then function loadstring_envcall(contents, chunkname) -- Lua 5.2+ lacks setfenv() -- load() still only allows a chunk to have an environment set once, so -- we give it an empty environment and use __[new]index metamethods on it -- to allow the same effect as changing the actual environment. local env_mt = {} local result, err = load(contents, chunkname, "bt", setmetatable({}, env_mt)) if result then return function(env, ...) env_mt.__index = env env_mt.__newindex = env return result(...) end else return result, err end end else function loadstring_envcall(contents, chunkname) -- Lua 5.1 has setfenv(), which allows environments to be set at runtime local result, err = loadstring(contents, chunkname) if result then return function(env, ...) setfenv(result, env) return result(...) end else return result, err end end end -- Make pairs() and ipairs() respect metamethods (they already do in Lua 5.2) do local metamethod_called = false pairs(setmetatable({}, {__pairs = function() metamethod_called = true end})) if not metamethod_called then local next = next local getmetatable = getmetatable pairs = function(t) local mt = getmetatable(t) if mt then local __pairs = mt.__pairs if __pairs then return __pairs(t) end end return next, t end end metamethod_called = false ipairs(setmetatable({}, {__ipairs = function() metamethod_called = true end})) if not metamethod_called then local ipairs_orig = ipairs ipairs = function(t) local mt = getmetatable(t) if mt then local __ipairs = mt.__ipairs if __ipairs then return __ipairs(t) end end return ipairs_orig(t) end end end -- Helper functions for flags -- NB: flag must be a SINGLE flag, i.e. a power of two: 1, 2, 4, 8, ... -- Check if flag is set in flags function flag_isset(flags, flag) flags = flags % (2*flag) return flags >= flag end -- Set flag in flags and return new flags (unchanged if flag was already set). function flag_set(flags, flag) if not flag_isset(flags, flag) then flags = flags + flag end return flags end -- Clear flag in flags and return new flags (unchanged if flag was already cleared). function flag_clear(flags, flag) if flag_isset(flags, flag) then flags = flags - flag end return flags end -- Toggle flag in flags, i.e. set if currently cleared, clear if currently set. function flag_toggle(flags, flag) return flag_isset(flags, flag) and flag_clear(flags, flag) or flag_set(flags, flag) end -- Various constants DrawFlags = {} DrawFlags.FlipHorizontal = 2^0 DrawFlags.FlipVertical = 2^1 DrawFlags.Alpha50 = 2^2 DrawFlags.Alpha75 = 2^3 DrawFlags.AltPalette = 2^4 DrawFlags.EarlyList = 2^10 DrawFlags.ListBottom = 2^11 DrawFlags.BoundBoxHitTest = 2^12 DrawFlags.Crop = 2^13 -- Compare values of two simple (non-nested) tables function compare_tables(t1, t2) local count1 = 0 for k, v in pairs(t1) do count1 = count1 + 1 if t2[k] ~= v then return false end end local count2 = 0 for _, _ in pairs(t2) do count2 = count2 + 1 end if count1 ~= count2 then return false end return true end -- Convert a list to a set function list_to_set(list) local set = {} for _, v in ipairs(list) do set[v] = true end return set end --! Find the smallest bucket with its upper value less or equal to a given number, --! and return the value of the bucket, or its index. --!param number (number) Value to accept by the bucket. --!param buckets (list) Available buckets, pairs of {upper=x, value=y} tables, -- in increasing x value, where nil is taken as infinite. The y value is -- returned for the first bucket in the list where number <= x. If y is nil, -- the index of the bucket in the list is returned. --!return (number) Value or index of the matching bucket. function rangeMapLookup(number, buckets) for index, bucket in ipairs(buckets) do if not bucket.upper or bucket.upper >= number then return bucket.value or index end end assert(false) -- Should never get here. end -- this is a pseudo bitwise OR operation -- assumes value2 is always a power of 2 (limits carry errors in the addition) -- mimics the logic of hasBit with the addition if bit not set --!param value1 (int) value to check set bit of --!param value2 (int) power of 2 value - bit enumeration --!return (int) value1 and value2 'bitwise' or. function bitOr(value1, value2) return value1 % (value2 + value2) >= value2 and value1 or value1 + value2 end --! Check bit is set --!param value (int) value to check set bit of --!param bit (int) 0-base index of bit to check --!return (boolean) true if bit is set. function hasBit(value, bit) local p = 2 ^ bit return value % (p + p) >= p end CorsixTH-0.61/CorsixTH/Lua/walls/000077500000000000000000000000001321660673500165225ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Lua/walls/blue.lua000066400000000000000000000027321321660673500201600ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local wall = {} wall.id = "blue" wall.inside_tiles = { north = 86, west = 87, } wall.outside_tiles = { north = 94, west = 95, } wall.window_tiles = { north = 136, west = 137, } wall.swing_inside_tiles = { north_left = 102, west_left = 103, north_right = 138, west_right = 139, } wall.swing_outside_tiles = { north_left = 110, west_left = 111, north_right = 152, west_right = 153, } return wall CorsixTH-0.61/CorsixTH/Lua/walls/external.lua000066400000000000000000000030061321660673500210460ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local wall = {} wall.id = "external" wall.inside_tiles = { north = 122, north_window_1 = 124, north_window_2 = 126, north_expansion = 144, west = 123, west_window_1 = 127, west_window_2 = 125, west_expansion = 145, } wall.outside_tiles = { north = 114, north_window_1 = 116, north_window_2 = 118, north_expansion = 142, west = 115, west_window_1 = 119, west_window_2 = 117, west_expansion = 143, } wall.window_tiles = { } return wall CorsixTH-0.61/CorsixTH/Lua/walls/green.lua000066400000000000000000000027331321660673500203320ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local wall = {} wall.id = "green" wall.inside_tiles = { north = 88, west = 89, } wall.outside_tiles = { north = 96, west = 97, } wall.window_tiles = { north = 140, west = 141, } wall.swing_inside_tiles = { north_left = 104, west_left = 105, north_right = 146, west_right = 147, } wall.swing_outside_tiles = { north_left = 112, west_left = 113, north_right = 154, west_right = 155, } return wall CorsixTH-0.61/CorsixTH/Lua/walls/white.lua000066400000000000000000000027311321660673500203500ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local wall = {} wall.id = "white" wall.inside_tiles = { north = 82, west = 83, } wall.outside_tiles = { north = 90, west = 91, } wall.window_tiles = { north = 128, west = 129, } wall.swing_inside_tiles = { north_left = 98, west_left = 99, north_right = 130, west_right = 131, } wall.swing_outside_tiles = { north_left = 106, west_left = 107, north_right = 148, west_right = 149, } return wall CorsixTH-0.61/CorsixTH/Lua/walls/yellow.lua000066400000000000000000000027341321660673500205460ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local wall = {} wall.id = "yellow" wall.inside_tiles = { north = 84, west = 85, } wall.outside_tiles = { north = 92, west = 93, } wall.window_tiles = { north = 132, west = 133, } wall.swing_inside_tiles = { north_left = 100, west_left = 101, north_right = 134, west_right = 135, } wall.swing_outside_tiles = { north_left = 108, west_left = 109, north_right = 150, west_right = 151, } return wall CorsixTH-0.61/CorsixTH/Lua/window.lua000066400000000000000000001663321321660673500174250ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] dofile "persistance" --! Base class for user-interface dialogs. class "Window" ---@type Window local Window = _G["Window"] -- NB: pressed mouse buttons are denoted with a "mouse_" prefix in buttons_down, -- i.e. mouse_left, mouse_middle, mouse_right Window.buttons_down = permanent"Window.buttons_down" {} function Window:Window() self.x = 0 self.y = 0 self.cursor_x = 0 self.cursor_y = 0 self.panels = { } self.buttons = { } self.tooltip_regions = { } self.scrollbars = { } self.textboxes = { -- list of textboxes in that window. NB: (Game)UI also uses this. } -- Take care not to handle things twice as UI is subclass of window! self.key_handlers = {--[[a set]]} self.windows = false -- => {} when first window added self.active_button = false self.blinking_button = false self.blink_counter = 0 self.panel_sprites = false self.visible = true self.draggable = true end -- Sets the window's onscreen position. Each of x and y can be: -- Integers >= 0 - Absolute pixel positions of top/left edge of window relative -- to top/left edge of screen -- Integers < 0 - Absolute pixel positions of right/bottom edge of window -- relative to right/bottom edge of screen. Use -0.1 to mean -0. -- Reals in [0, 1) - function Window:setPosition(x, y) -- Save values to recalculate x and y on screen resolution change self.x_original = x self.y_original = y -- Convert x and y to absolute pixel positions with regard to top/left local w, h = TheApp.config.width, TheApp.config.height if x < 0 then x = math.ceil(w - self.width + x) elseif x < 1 then x = math.floor((w - self.width) * x + 0.5) end if y < 0 then y = math.ceil(h - self.height + y) elseif y < 1 then y = math.floor((h - self.height) * y + 0.5) end self.x = x self.y = y end -- Sets the window's default onscreen position and onscreen position. -- The given x and y are interpreted as for setPosition(x, y), and are the -- default position for the window. If the user has previously repositioned a -- window of the same type, then setDefaultPosition() will set the window to -- that previous position, otherwise it sets it to the default position. function Window:setDefaultPosition(x, y) if self.ui then local config = self.ui.app.runtime_config.window_position if config then config = config[self:getSavedWindowPositionName()] if config then return self:setPosition(config.x, config.y) end end end return self:setPosition(x, y) end -- Called after the resolution of the game window changes function Window:onChangeResolution() if self.x_original and self.y_original then self:setPosition(self.x_original, self.y_original) end end -- Called before the window is closed function Window:close() if self.dragging then self.dragging = false self.ui.drag_mouse_move = nil end if self.parent then self.parent:removeWindow(self) end for key in pairs(self.key_handlers) do self.ui:removeKeyHandler(key, self) end for _, box in pairs(self.textboxes) do self.ui:unregisterTextBox(box) end self.closed = true end function Window:addKeyHandler(key, handler, ...) self.ui:addKeyHandler(key, self, handler, ...) self.key_handlers[key] = true end --!param keys (string or table) The key or a list containing the key & its modifiers, -- previously passed to Window:addKeyHandler(keys). function Window:removeKeyHandler(keys) self.ui:removeKeyHandler(keys, self) end --! The basic component which makes up most `Window`s. --! The visual parts of most ingame dialogs are sprites from a sprite sheet. -- A `Panel` is an instance of a particular sprite, consisting of a sprite -- index and a position. It is advantageous to construct dialogs out of panels -- (using `Window:addPanel`) as the common operations on panels (like drawing -- them and hit-testing against them) are implemented in the `Window` class, -- thus reducing the amount of work that each individual dialog has to do. class "Panel" ---@type Panel local Panel = _G["Panel"] -- !dummy function Panel:Panel() self.window = nil self.x = nil self.y = nil self.w = nil self.h = nil self.colour = nil self.custom_draw = nil self.visible = nil end local panel_mt = permanent("Window.", getmetatable(Panel())) function Panel:makeButton(...) return self.window:makeButtonOnPanel(self, ...) end function Panel:makeToggleButton(...) return self.window:makeButtonOnPanel(self, ...):makeToggle() end function Panel:makeRepeatButton(...) return self.window:makeButtonOnPanel(self, ...):makeRepeat() end function Panel:makeScrollbar(...) return self.window:makeScrollbarOnPanel(self, ...) end function Panel:makeTextbox(...) return self.window:makeTextboxOnPanel(self, ...) end local function sanitize(colour) if colour > 255 then colour = 255 elseif colour < 0 then colour = 0 end return colour end --[[ Set the colour of a panel ! Note: This works only with ColourPanel and BevelPanel, not normal (sprite) panels. !param col (table) Colour given as a table with three fields red, green and blue, each an integer value in [0, 255]. ]] function Panel:setColour(col) self.colour = self.colour and TheApp.video:mapRGB(col.red, col.green, col.blue) self.highlight_colour = self.highlight_colour and TheApp.video:mapRGB( sanitize(col.red + 40), sanitize(col.green + 40), sanitize(col.blue + 40)) self.shadow_colour = self.shadow_colour and TheApp.video:mapRGB( sanitize(col.red - 40), sanitize(col.green - 40), sanitize(col.blue - 40)) self.disabled_colour = self.disabled_colour and TheApp.video:mapRGB( sanitize(math.floor((col.red + 100) / 2)), sanitize(math.floor((col.green + 100) / 2)), sanitize(math.floor((col.blue + 100) / 2))) return self end -- Specify a tooltip to be displayed when hovering this panel. -- x and y are optional position of bottom left of the tooltip. -- If not specified, will default to mouse position. function Panel:setTooltip(tooltip, x, y) self.tooltip = { text = tooltip, tooltip_x = x, tooltip_y = y, } return self end function Panel:setDynamicTooltip(callback, x, y) self.tooltip = { callback = callback, tooltip_x = x, tooltip_y = y, } return self end --! Specify a label to be drawn on top of the panel. -- Note: This works only with ColourPanel and BevelPanel, not normal (sprite) panels. --!param label (string) The text to be drawn on top of the label. --!param font (font) [optional] The font to use. Default is Font01V in QData. --!param align (string) [optional] Alignment for non-multiline labels (multiline is always left) --! can be either of "left", "center", "right" function Panel:setLabel(label, font, align) self.label = label or "" self.label_font = font or self.label_font or TheApp.gfx:loadFont("QData", "Font01V") self.align = align or self.align return self end --! Specifies whether auto clip (clipping text at the end so it fits) is enabled for this panel --!param mode (boolean) true to activate, false to deactivate. function Panel:setAutoClip(mode) self.auto_clip = mode return self end --! Checks if a given line drawn with the panel's label font would be longer than the given limit --! and if so, shortens it enough to fit including "..." at the end --!param line (string) the line to modify --!param limit (int) the maximum length in pixels the line should have --!return the possibly modified line function Panel:clipLine(line, limit) local _, last_x = self.label_font:draw(nil, line, 0, 0) if last_x > limit then limit = limit - self.label_font:sizeOf("..._") while last_x > limit do line = line:sub(1, -2) _, last_x = self.label_font:draw(nil, line, 0, 0) end line = line .. "..." end return line end --! Draw function for the label on a panel --!param canvas The canvas to draw on (can be nil for test) --!param x x position to start drawing on --!param y y position to start drawing on --!param limit (nil or {int, int}) limit after which line and with character on that line to stop drawing --!return y and x end positions after drawing function Panel:drawLabel(canvas, x, y, limit) local text = self.label local multi_line = type(text) == "table" local wrapped = not self.auto_clip local center_y = false if not multi_line then text = {text} wrapped = false center_y = true end local next_y = y + self.y + 1 local last_x = x + self.x + 2 for i, line in ipairs(text) do local old_y = next_y if limit and limit[1] == i then line = line:sub(1, limit[2]) end if self.auto_clip then line = self:clipLine(line, self.w - 4) end if wrapped then next_y, last_x = self.label_font:drawWrapped(canvas, line, x + self.x + 2, old_y, self.w - 4, self.align) else next_y, last_x = self.label_font:draw(canvas, line, x + self.x + 2, old_y, self.w - 4, center_y and self.h or 0, self.align) end if not line:find("%S") then -- Special handling for empty lines or lines with only space next_y = self.label_font:draw(nil, "A", x + self.x + 2, old_y, self.w - 4, center_y and self.h or 0, self.align) end if limit and limit[1] == i then break end end return next_y, last_x end --! Set the position of a panel. --!param x (int) New horizontal position of the panel. --!param y (int) New vertical position of the panel. function Panel:setPosition(x, y) self.x = x self.y = y end --! Set the size of a panel. --!param width (int) New width of the panel. --!param height (int) New height of the panel. function Panel:setSize(width, height) self.w = width self.h = height end --! Set the visibility of the panel. --!param visibility (bool) New visibility of the panel. function Panel:setVisible(visibility) self.visible = visibility end --[[ Add a `Panel` to the window. ! Panels form the basic building blocks of most windows. A panel is a small bitmap coupled with a position, and by combining several panels, a window can be made. By using panels to construct windows, all of the common tasks like drawing and hit-testing are provided for you by the base class methods, thus reducing the amount of code required elsewhere. !param sprite_index (integer) Index into the window's sprite table of the bitmap to be displayed. !param x (integer) The X pixel position to display the bitmap at. !param y (integer) The Y pixel position to display the bitmap at. !param w (integer, nil) If the panel is totally opaque, and the width of the panel (in pixels) is known, it should be specified here to speed up hit-tests. !param h (integer, nil) If the panel is totally opaque, and the height of the panel (in pixels) is known, it should be specified here to speed up hit-tests. ]] function Window:addPanel(sprite_index, x, y, w, h) local panel = setmetatable({ window = self, x = x, y = y, w = w, h = h, sprite_index = sprite_index, visible = true, }, panel_mt) self.panels[#self.panels + 1] = panel return panel end function Window:removeAllPanels() self.panels = {} self.buttons = {} -- Buttons cannot live without a panel end local --[[persistable: window_panel_colour_draw]] function panel_colour_draw(panel, canvas, x, y) canvas:drawRect(panel.colour, x + panel.x, y + panel.y, panel.w, panel.h) if panel.label then panel:drawLabel(canvas, x, y) end end --[[ Add a solid-colour `Panel` to the window. ! A solid-colour panel is like a normal panel, expect it displays a solid colour rather than a bitmap. !param x (integer) The X pixel position to start the panel at. !param y (integer) The Y pixel position to start the panel at. !param w (integer) The width of the panel, in pixels. !param h (integer) The height of the panel, in pixels. !param r (integer) Value in [0, 255] giving the red component of the colour. !param g (integer) Value in [0, 255] giving the green component of the colour. !param b (integer) Value in [0, 255] giving the blue component of the colour. ]] function Window:addColourPanel(x, y, w, h, r, g, b) local panel = setmetatable({ window = self, x = x, y = y, w = w, h = h, colour = TheApp.video:mapRGB(r, g, b), custom_draw = panel_colour_draw, visible = true, }, panel_mt) self.panels[#self.panels + 1] = panel return panel end local --[[persistable: window_panel_bevel_draw]] function panel_bevel_draw(panel, canvas, x, y) if panel.lowered then canvas:drawRect(panel.highlight_colour, x + panel.x, y + panel.y, panel.w, panel.h) canvas:drawRect(panel.shadow_colour, x + panel.x, y + panel.y, panel.w - 1, panel.h - 1) canvas:drawRect(panel.colour, x + panel.x + 1, y + panel.y + 1, panel.w - 2, panel.h - 2) else canvas:drawRect(panel.shadow_colour, x + panel.x + 1, y + panel.y + 1, panel.w - 1, panel.h - 1) canvas:drawRect(panel.highlight_colour, x + panel.x, y + panel.y, panel.w - 1, panel.h - 1) canvas:drawRect(panel.colour, x + panel.x + 1, y + panel.y + 1, panel.w - 2, panel.h - 2) end if panel.label then panel:drawLabel(canvas, x, y) end end --[[ Add a beveled `Panel` to the window. ! A bevel panel is similar to a solid colour panel, except that it features a highlight and a shadow that makes it appear either lowered or raised. !param x (integer) The X pixel position to start the panel at. !param y (integer) The Y pixel position to start the panel at. !param w (integer) The width of the panel, in pixels. !param h (integer) The height of the panel, in pixels. !param colour (colour in form .red, .green and .blue) The colour for the panel. !param highlight_colour (colour in form .red, .green and .blue or nil) [optional] The colour for the highlight. !param shadow_colour (colour in form .red, .green and .blue or nil) [optional] The colour for the shadow. !param disabled_colour (colour in form .red, .green and .blue or nil) [optional] The colour for the disabled panel. ]] function Window:addBevelPanel(x, y, w, h, colour, highlight_colour, shadow_colour, disabled_colour) highlight_colour = highlight_colour or { red = sanitize(colour.red + 40), green = sanitize(colour.green + 40), blue = sanitize(colour.blue + 40), } shadow_colour = shadow_colour or { red = sanitize(colour.red - 40), green = sanitize(colour.green - 40), blue = sanitize(colour.blue - 40), } disabled_colour = disabled_colour or { red = sanitize(math.floor((colour.red + 100) / 2)), green = sanitize(math.floor((colour.green + 100) / 2)), blue = sanitize(math.floor((colour.blue + 100) / 2)), } local panel = setmetatable({ window = self, x = x, y = y, w = w, h = h, colour = TheApp.video:mapRGB(colour.red, colour.green, colour.blue), highlight_colour = TheApp.video:mapRGB(highlight_colour.red, highlight_colour.green, highlight_colour.blue), shadow_colour = TheApp.video:mapRGB(shadow_colour.red, shadow_colour.green, shadow_colour.blue), disabled_colour = TheApp.video:mapRGB(disabled_colour.red, disabled_colour.green, disabled_colour.blue), custom_draw = panel_bevel_draw, visible = true, lowered = false, }, panel_mt) self.panels[#self.panels + 1] = panel return panel end function Window:addWindow(window) if window.closed then return end if not self.windows then self.windows = {} end window.parent = self if window.on_top then -- As self.windows array is ordered from top to bottom and drawn by the end, a "On Top" window has be added at start table.insert(self.windows, 1, window) else -- Normal windows, are added in the first position after on_top windows local pos = false for i = 1, #self.windows do if not self.windows[i].on_top then pos = i break end end pos = pos or #self.windows + 1 table.insert(self.windows, pos, window) end end function Window:removeWindow(window) if self.windows then for n = 1, #self.windows do if self.windows[n] == window then if #self.windows == 1 then self.windows = false else table.remove(self.windows, n) end return true end end end return false end -- Searches (direct) child windows for window of the given class, and returns -- one (or nil if there weren't any at all). -- !param window_class (class) The class of window to search for. function Window:getWindow(window_class) if self.windows then for _, window in ipairs(self.windows) do if class.is(window, window_class) then return window end end end end -- Searches (direct) child windows for window of the given class, and returns -- a (potentially empty) list of matching windows. -- !param window_class (class) The class of window to search for. function Window:getWindows(window_class) local matching_windows = {} if self.windows then for _, window in ipairs(self.windows) do if class.is(window, window_class) then matching_windows[#matching_windows+1] = window end end end return matching_windows end --! A region of a `Panel` which causes some action when clicked. class "Button" ---@type Button local Button = _G["Button"] --!dummy function Button:Button() self.ui = nil self.is_toggle = nil self.is_repeat = nil self.x = nil self.y = nil self.r = nil self.b = nil self.panel_for_sprite = nil self.sprite_index_normal = nil self.sprite_index_disabled = nil self.sprite_index_active = nil self.panel_lowered_normal = nil self.panel_lowered_active = nil self.on_click = nil self.on_click_self = nil self.on_rightclick = nil self.enabled = nil end local button_mt = permanent("Window.", getmetatable(Button())) function Button:setDisabledSprite(index) self.sprite_index_disabled = index return self end --! Enable or disable a button. --!param enable (boolean) Whether to enable (true) or disable (false) the button. function Button:enable(enable) if enable and not self.enabled then self.enabled = true self.panel_for_sprite.sprite_index = self.sprite_index_normal if self.panel_for_sprite.colour_backup then self.panel_for_sprite.colour = self.panel_for_sprite.colour_backup end end if not enable and self.enabled then self.enabled = false self.panel_for_sprite.sprite_index = self.sprite_index_disabled if self.panel_for_sprite.disabled_colour then self.panel_for_sprite.colour_backup = self.panel_for_sprite.colour self.panel_for_sprite.colour = self.panel_for_sprite.disabled_colour end end return self end function Button:makeToggle() self.is_toggle = true self.is_repeat = false self.toggled = false return self end function Button:makeRepeat() self.is_repeat = true self.is_toggle = false self.toggled = false return self end --! Flip the toggle state of the button (on -> off, or off -> on). function Button:toggle() self.sprite_index_normal, self.sprite_index_active = self.sprite_index_active, self.sprite_index_normal self.panel_lowered_active, self.panel_lowered_normal = self.panel_lowered_normal, self.panel_lowered_active self.panel_for_sprite.sprite_index = self.sprite_index_normal self.panel_for_sprite.lowered = self.panel_lowered_normal self.toggled = not self.toggled return self.toggled end --! Set the toggle state of the button to the provided state. --!param state (boolean) Desired state of the toggle button. function Button:setToggleState(state) if self.toggled ~= state then self:toggle() end return self end function Button:preservePanel() local window = self.panel_for_sprite.window self.panel_for_sprite = window:addPanel(0, self.x, self.y) self.sprite_index_normal = 0 return self end function Button:setSound(name) self.sound = name return self end local --[[persistable:window_drag_round]] function round(value, amount) return amount * math.floor(value / amount + 0.5) end -- Specify a tooltip to be displayed when hovering this button. -- x and y are optional position of bottom left of the tooltip. -- If not specified, will default to top center of button. function Button:setTooltip(tooltip, x, y) self.tooltip = { text = tooltip, tooltip_x = x or round((self.x + self.r) / 2, 1), tooltip_y = y or self.y, } return self end function Button:setDynamicTooltip(callback, x, y) self.tooltip = { callback = callback, tooltip_x = x or round((self.x + self.r) / 2, 1), tooltip_y = y or self.y, } return self end --! Called whenever a click on the button should be handled. This depends on the type of button. --! Normally this is called when a MouseUp occurs over the button (if the MouseDown occurred over --! this or another button). However for repeat buttons, it is called once on MouseDown and, after --! a short delay, repeatedly. --!param mouse_button (string) either "left" or "right" function Button:handleClick(mouse_button) local arg = nil if self.is_toggle then arg = self:toggle() end if self.sound then self.ui:playSound(self.sound) end local callback = mouse_button == "left" and self.on_click or self.on_rightclick if callback then callback(self.on_click_self, arg, self) else if mouse_button == "left" then print("Warning: No handler for button click") self.on_click = --[[persistable:button_on_click_handler_stub]] function() end end end end --! Set the position of a button. --!param x (int) New horizontal position of the button. --!param y (int) New vertical position of the button. function Button:setPosition(x, y) self.panel_for_sprite:setPosition(x, y) self.r = self.r - self.x + x self.b = self.b - self.y + y self.x = x self.y = y if self.tooltip then self.tooltip.tooltip_x = math.round((self.x + self.r) / 2, 1) self.tooltip.tooltip_y = self.y end end --! Set the size of a button. --!param width (int) New width of the button. --!param height (int) New height of the button. function Button:setSize(width, height) self.panel_for_sprite:setSize(width, height) self.r = self.x + width self.b = self.y + height if self.tooltip then self.tooltip.tooltip_x = math.round((self.x + self.r) / 2, 1) self.tooltip.tooltip_y = self.y end end --! Set the visibility of the button. --!param visibility (bool) New visibility of the button. function Button:setVisible(visibility) self.panel_for_sprite:setVisible(visibility) end --! Convenience function to allow setLabel to be called on a button, not only its panel. --! see Panel:setLabel function Button:setLabel(label, font, align) self.panel_for_sprite:setLabel(label, font, align) return self end --[[ Convert a static panel into a clickable button. !param panel (Panel) The panel to convert into a button. !param x (integer) The X co-ordinate of the clickable rectangle on the panel. !param y (integer) The Y co-ordinate of the clickable rectangle on the panel. !param w (integer) The width of the clickable rectangle on the panel. !param h (integer) The height of the clickable rectangle on the panel. !param sprite (integer) An index into the window's sprite sheet. The panel will display this sprite when the button is being pressed. !param on_click (function) The function to be run when the user left-clicks the button. Takes three arguments: `on_click_self`, the toggle state (nil for normal buttons, true/false for toggle buttons), the button itself. !param on_click_self (function, nil) The first value to pass to `on_click`. If nil or not given, then the window is passed as the first argument. !param on_rightclick (function, nil) The function to be called when the user right-clicks the button. ]] function Window:makeButtonOnPanel(panel, x, y, w, h, sprite, on_click, on_click_self, on_rightclick) x = x + panel.x y = y + panel.y local button = setmetatable({ ui = self.ui, is_toggle = false, is_repeat = false, x = x, y = y, r = x + w, b = y + h, panel_for_sprite = panel, sprite_index_normal = panel.sprite_index, sprite_index_disabled = panel.sprite_index, sprite_index_active = sprite, on_click = on_click, on_click_self = on_click_self or self, on_rightclick = on_rightclick, enabled = true, panel_lowered_normal = false, panel_lowered_active = true, }, button_mt) if self.ui and on_click == self.close then button.sound = "no4.wav" elseif self.default_button_sound then button.sound = self.default_button_sound end self.buttons[#self.buttons + 1] = button return button end --! A window element used to scroll in lists class "Scrollbar" ---@type Scrollbar local Scrollbar = _G["Scrollbar"] --!dummy function Scrollbar:Scrollbar() self.base = nil self.slider = nil self.min_value = nil self.max_value = nil self.value = nil self.page_size = nil self.direction = nil self.visible = nil end function Scrollbar:setRange(min_value, max_value, page_size, value) page_size = math.min(page_size, max_value - min_value + 1) -- page size must be number of elements at most value = math.min(value or min_value, math.max(min_value, max_value - page_size + 1)) self.min_value = min_value self.max_value = max_value self.page_size = page_size self.value = value local slider = self.slider slider.w = slider.max_w slider.h = slider.max_h slider.max_x = slider.min_x + slider.max_w - slider.w slider.max_y = slider.min_y + slider.max_h - slider.h if self.direction == "y" then slider.h = math.ceil((page_size / (max_value - min_value + 1)) * slider.max_h) slider.max_y = slider.min_y + slider.max_h - slider.h slider.y = math.floor((value - min_value) / (max_value - min_value - page_size + 2) * (slider.max_y - slider.min_y) + slider.min_y) else slider.w = math.ceil((page_size / (max_value - min_value + 1)) * slider.max_w) slider.max_x = slider.min_x + slider.max_w - slider.w slider.x = math.floor((value - min_value) / (max_value - min_value - page_size + 2) * (slider.max_x - slider.min_x) + slider.min_x) end return self end --! Get the pixel position of the slider in the axis which the slider can move function Scrollbar:getXorY() return self.slider[self.direction] end --! Set the pixel position of the slider in the axis which the slider can move function Scrollbar:setXorY(xy) local dir = self.direction local min, max if dir == "x" then min = self.slider.min_x max = self.slider.max_x else min = self.slider.min_y max = self.slider.max_y end if xy < min then xy = min end if xy > max then xy = max end self.slider[dir] = xy local old_value = self.value self.value = math.floor(((xy - min) / (max - min + 1)) * (self.max_value - self.min_value - self.page_size + 2)) + 1 if old_value ~= self.value then self.callback() end end local scrollbar_mt = permanent("Window.", getmetatable(Scrollbar())) --[[ Convert a static panel into a scrollbar. ! Scrollbars consist of a base panel (the panel given as a parameter) and an additional slider panel (automatically created BevelPanel). !param panel (panel) The panel that will serve as the scrollbar base. !param slider_colour (colour in form .red, .green and .blue) The colour for the slider. !param callback (function) Function that is called whenever the slider position changes. !param min_value (integer) The minimum value the scrollbar can represent. !param max_value (integer) The maximum value the scrollbar can represent. !param page_size (integer) The amount of objects represented on one page. !param value (integer, nil) The current value, or min_value if not specified. ]] function Window:makeScrollbarOnPanel(panel, slider_colour, callback, min_value, max_value, page_size, value) local slider = self:addBevelPanel(panel.x + 1, panel.y + 1, panel.w - 2, panel.h - 2, slider_colour) local scrollbar = setmetatable({ base = panel, slider = slider, direction = "y", callback = callback, visible = true, enabled = true, }, scrollbar_mt) slider.min_x = slider.x slider.min_y = slider.y slider.max_w = slider.w slider.max_h = slider.h scrollbar:setRange(min_value, max_value, page_size, value) self.scrollbars[#self.scrollbars + 1] = scrollbar return scrollbar end --! A window element used to enter text class "Textbox" ---@type Textbox local Textbox = _G["Textbox"] --!dummy function Textbox:Textbox() self.panel = nil self.confirm_callback = nil self.abort_callback = nil self.button = nil self.text = nil self.allowed_input = nil self.char_limit = nil self.visible = nil self.enabled = nil self.active = nil self.cursor_counter = nil self.cursor_state = nil self.cursor_pos = nil end local textbox_mt = permanent("Window.", getmetatable(Textbox())) function Textbox:onTick() if self.active then self.cursor_counter = self.cursor_counter + 1 if self.cursor_counter >= 40 then self.cursor_state = true self.cursor_counter = self.cursor_counter - 40 elseif self.cursor_counter >= 20 then self.cursor_state = false end end end function Textbox:drawCursor(canvas, x, y) if self.cursor_state then local col = TheApp.video:mapRGB(255, 255, 255) local cursor_y, cursor_x = self.panel:drawLabel(nil, x, y, self.cursor_pos) local w, _ = self.panel.label_font:sizeOf("0") if self.panel.align == nil or self.panel.align == "center" then local _, text_x = self.panel:drawLabel(nil, x, y, {self.cursor_pos[1], #self.text}) cursor_x = text_x - (text_x - cursor_x) * 2 end cursor_y = cursor_y - 3 -- Add x separation, but only if there was actually some text in this line. if self.text[self.cursor_pos[1]] ~= "" then cursor_x = cursor_x + 1 -- TODO font:getSeparation? end canvas:drawRect(col, cursor_x, cursor_y, w, 1) end end --! Set the box to not active and run confirm callback, if any function Textbox:confirm() self:setActive(false) if self.confirm_callback then self.confirm_callback() end end --! Set the box to not active and run abort callback, if any function Textbox:abort() self:setActive(false) if self.abort_callback then self.abort_callback() end end --! Set the textbox active status to true or false, taking care of any -- additional things that need to be done: deactivate any other textboxes, -- handle blinking cursor, keyboard repeat on/off, set button state accordingly --!param active (boolean) whether to activate (true) or deactivate (false) the box function Textbox:setActive(active) local ui = self.panel.window.ui if active then -- Unselect any other textbox for _, textbox in ipairs(ui.textboxes) do if textbox ~= self and textbox.active then textbox:abort() end end self.cursor_counter = 0 self.cursor_state = true self.cursor_pos[1] = type(self.text) == "table" and #self.text or 1 self.cursor_pos[2] = type(self.text) == "table" and string.len(self.text[#self.text]) or string.len(self.text) -- Update text self.panel:setLabel(self.text) else self.cursor_state = false end self.active = active -- Update button if necessary if self.button.toggled ~= active then self.button:toggle() end end function Textbox:clicked() local active = self.button.toggled if active then self:setActive(true) else if self.text == "" then self:abort() else self:confirm() end end end --! Handles special characters such as Enter. Normal text input is processed in the textInput function. --! Note though that this function still returns true if it appears to be a characters being entered. function Textbox:keyInput(char, rawchar) if not self.active then return false end local ui = self.panel.window.ui local line = type(self.text) == "table" and self.text[self.cursor_pos[1]] or self.text local pat = "%a%d_" -- which characters form "words" for ctrl+[left/right/backspace/delete] local new_line local handled = false if not self.char_limit or string.len(line) < self.char_limit then -- Upper- and lowercase letters if self.allowed_input.alpha then if #char == 1 and string.match(char, '%a') then handled = true end end -- Numbers if not handled and self.allowed_input.numbers then if #char == 1 and string.match(char, '%d') then handled = true end end -- Space, hyphen and plus sign if not handled and self.allowed_input.misc then if char == "space" or char == "-" or char == "+" then handled = true end end end -- Backspace (delete last char, or last word if ctrl is pressed) if not handled and char == "backspace" then if self.cursor_pos[2] == 0 then if type(self.text) == "table" and self.cursor_pos[1] > 1 then table.remove(self.text, self.cursor_pos[1]) self.cursor_pos[1] = self.cursor_pos[1] - 1 self.cursor_pos[2] = string.len(self.text[self.cursor_pos[1]]) new_line = self.text[self.cursor_pos[1]] .. line end else local pos = self.cursor_pos[2] - 1 if ui.app.key_modifiers.ctrl then pos = string.find(string.sub(line, 1, self.cursor_pos[2]), "[^" .. pat .. "][" .. pat .. "]+[^" .. pat .. "]*$") or 0 end new_line = line:sub(1, pos) .. line:sub(self.cursor_pos[2] + 1, -1) self.cursor_pos[2] = pos end handled = true end -- Delete (delete next char, or next word if ctrl is pressed) if not handled and char == "delete" then if self.cursor_pos[2] == string.len(line) then if type(self.text) == "table" and self.cursor_pos[1] < #self.text then new_line = line .. self.text[self.cursor_pos[1] + 1] table.remove(self.text, self.cursor_pos[1] + 1) end else local pos = self.cursor_pos[2] + 2 if ui.app.key_modifiers.ctrl then pos = (string.find(line, "[^" .. pat .. "][" .. pat .. "]", self.cursor_pos[2] + 1) or string.len(line)) + 1 end new_line = line:sub(1, self.cursor_pos[2]) .. line:sub(pos, -1) end handled = true end -- Enter (newline or confirm) if not handled and (char == "return" or char == "enter") then if type(self.text) == "table" then local remainder = line:sub(self.cursor_pos[2] + 1, -1) self.text[self.cursor_pos[1]] = line:sub(1, self.cursor_pos[2]) table.insert(self.text, self.cursor_pos[1] + 1, remainder) self.cursor_pos[1] = self.cursor_pos[1] + 1 self.cursor_pos[2] = 0 handled = true else self:confirm() return true end end -- Escape (abort) if not handled and char == "escape" then self:abort() return true end -- Arrow keys if not handled then if char == "up" then -- up if type(self.text) ~= "table" or self.cursor_pos[1] == 1 then -- to beginning of line self.cursor_pos[2] = 0 else -- one line up self.cursor_pos[1] = self.cursor_pos[1] - 1 self.cursor_pos[2] = math.min(self.cursor_pos[2], string.len(self.text[self.cursor_pos[1]])) end handled = true elseif char == "down" then -- down if type(self.text) ~= "table" or self.cursor_pos[1] == #self.text then -- to end of line self.cursor_pos[2] = string.len(line) else -- one line down self.cursor_pos[1] = self.cursor_pos[1] + 1 self.cursor_pos[2] = math.min(self.cursor_pos[2], string.len(self.text[self.cursor_pos[1]])) end handled = true elseif char == "right" then -- right if self.cursor_pos[2] == string.len(line) then -- next line if type(self.text) == "table" and self.cursor_pos[1] < #self.text then self.cursor_pos[1] = self.cursor_pos[1] + 1 self.cursor_pos[2] = 0 end else if ui.app.key_modifiers.ctrl then -- to the right until next word or end of line self.cursor_pos[2] = string.find(line, "[^" .. pat .. "][" .. pat .. "]", self.cursor_pos[2] + 1) or string.len(line) else -- one to the right self.cursor_pos[2] = self.cursor_pos[2] + 1 end end handled = true elseif char == "left" then -- left if self.cursor_pos[2] == 0 then -- previous line if type(self.text) == "table" and self.cursor_pos[1] > 1 then self.cursor_pos[1] = self.cursor_pos[1] - 1 self.cursor_pos[2] = string.len(self.text[self.cursor_pos[1]]) end else if ui.app.key_modifiers.ctrl then -- to the left until beginning of word or beginning of line self.cursor_pos[2] = string.find(string.sub(line, 1, self.cursor_pos[2]), "[^" .. pat .. "][" .. pat .. "]+[^" .. pat .. "]*$") or 0 else -- one to the left self.cursor_pos[2] = self.cursor_pos[2] - 1 end end handled = true end end -- Tab (reserved) if not handled and char == "tab" then handled = true end -- Home (beginning of line) if not handled and char == "home" then self.cursor_pos[2] = 0 handled = true end -- End (end of line) if not handled and char == "end" then self.cursor_pos[2] = string.len(line) handled = true end if not self.char_limit or string.len(self.text) < self.char_limit then -- Experimental "all" category if not handled and self.allowed_input.all and not (char == "shift" or char == "ctrl" or char == "alt") then -- F-Keys handled = true end end if new_line then if type(self.text) == "table" then self.text[self.cursor_pos[1]] = new_line else self.text = new_line end -- update label self.panel:setLabel(self.text) end -- make cursor visible self.cursor_counter = 0 self.cursor_state = true return handled end --! Handles actual text input. function Textbox:textInput(text) if not self.active then return false end local line = type(self.text) == "table" and self.text[self.cursor_pos[1]] or self.text local new_line = line:sub(1, self.cursor_pos[2]) .. text .. line:sub(self.cursor_pos[2] + 1, -1) self.cursor_pos[2] = self.cursor_pos[2] + #text if type(self.text) == "table" then self.text[self.cursor_pos[1]] = new_line else self.text = new_line end -- update label self.panel:setLabel(self.text) end --[[ Limit input handled by textbox to specific classes of characters !param types (string or table) One of, or an table of any number of input types ! valid input types are: ! "alpha": Letters (lower and uppercase) ! "numbers": 0-9 ! "misc": other characters, currently space and hyphen ! "all": experimental category that allows, theoretically, all input ]] function Textbox:allowedInput(types) if type(types) ~= "table" then types = {types} end self.allowed_input = {} for _, t in ipairs(types) do self.allowed_input[t] = true end return self end --[[ Limit input to a maximum of [limit] characters. !param limit (integer or nil) Number of characters until the textbox will stop accepting input, or nil to deactivate limit. ]] function Textbox:characterLimit(limit) self.char_limit = limit return self end --[[ Set the text of the textbox to a given string or list of strings. ! Use empty string to make textbox a single line textbox (default). ! Use table with empty string {""} to make it a multiline textbox. !param text (string or table) The string or list of strings the textbox should contain. ]] function Textbox:setText(text) self.text = text self.panel:setLabel(self.text) return self end function Textbox:setPosition(x, y) self.button:setPosition(x, y) end function Textbox:setSize(width, height) self.button:setSize(width, height) end --[[ Convert a static panel into a textbox. ! Textboxes consist of the panel given as a parameter, which is made into a ToggleButton automatically, and handle keyboard input while active. !param panel (panel) The panel that will serve as the textbox base. !param confirm_callback (function) The function to call when text is confirmed. !param abort_callback (function) The function to call when entering is aborted. ]] function Window:makeTextboxOnPanel(panel, confirm_callback, abort_callback) local textbox = setmetatable({ panel = panel, confirm_callback = confirm_callback, abort_callback = abort_callback, button = nil, -- placeholder text = "", allowed_input = { alpha = true, numbers = true, misc = true, }, char_limit = nil, visible = true, enabled = true, active = false, cursor_counter = 0, cursor_state = false, cursor_pos = {1, 1}, }, textbox_mt) local button = panel:makeToggleButton(0, 0, panel.w, panel.h, nil, textbox.clicked, textbox) textbox.button = button self.textboxes[#self.textboxes + 1] = textbox self.ui:registerTextBox(textbox) return textbox end function Window:draw(canvas, x, y) x, y = x + self.x, y + self.y if self.panels[1] then local panel_sprites = self.panel_sprites local panel_sprites_draw = panel_sprites and panel_sprites.draw for _, panel in ipairs(self.panels) do if panel.visible then if panel.custom_draw then panel:custom_draw(canvas, x, y) else panel_sprites_draw(panel_sprites, canvas, panel.sprite_index, x + panel.x, y + panel.y) end end end end if not class.is(self, UI) then -- prevent UI (sub)class from handling the textboxes too for _, box in ipairs(self.textboxes) do box:drawCursor(canvas, x, y) end end if self.windows then local windows = self.windows for i = #windows, 1, -1 do if windows[i].visible then windows[i]:draw(canvas, x, y) end end end end function Window:onChangeLanguage() if self.windows then for _, window in ipairs(self.windows) do window:onChangeLanguage() end end end function Window:onCursorWorldPositionChange(x, y) local repaint = false if self.windows then for _, window in ipairs(self.windows) do if window:onCursorWorldPositionChange(x - window.x, y - window.y) then repaint = true end end end return repaint end function Window:hitTestPanel(x, y, panel) local xpos, ypos = x - panel.x, y - panel.y if panel.visible and xpos >= 0 and ypos >= 0 then if panel.w and panel.h then if xpos <= panel.w and ypos <= panel.h then return true end else if self.panel_sprites:hitTest(panel.sprite_index, xpos, ypos) then return true end end end return false end --[[ Used to test if the window has a (non-transparent) pixel at the given position. !param x (integer) The X co-ordinate of the pixel to test, relative to the top-left corner of the window. !param y (integer) The Y co-ordinate of the pixel to test, relative to the top-left corner of the window. ]] function Window:hitTest(x, y) if x < 0 or y < 0 or (self.width and x >= self.width) or (self.height and y >= self.height) then -- return false end if self.panels[1] then for _, panel in ipairs(self.panels) do if self:hitTestPanel(x, y, panel) then return true end end end if self.windows then for _, child in ipairs(self.windows) do if child:hitTest(x - child.x, y - child.y) then return true end end end return false end function Window:onMouseDown(button, x, y) local repaint = false if self.windows then for _, window in ipairs(self.windows) do if window:onMouseDown(button, x - window.x, y - window.y) then repaint = true break end end end if not repaint and (button == "left" or button == "right") then for _, btn in ipairs(self.buttons) do if btn.enabled and btn.x <= x and x < btn.r and btn.y <= y and y < btn.b and (button == "left" or btn.on_rightclick ~= nil) then btn.panel_for_sprite.sprite_index = btn.sprite_index_active self.active_button = btn btn.active = true btn.panel_for_sprite.lowered = btn.panel_lowered_active if btn.is_repeat then -- execute callback once, then wait some ticks before repeatedly executing btn:handleClick(button) end self.btn_repeat_delay = 10 repaint = true break end end for _, bar in ipairs(self.scrollbars) do if bar.enabled and self:hitTestPanel(x, y, bar.slider) then self.active_scrollbar = bar bar.active = true bar.down_x = x - bar.slider.x bar.down_y = y - bar.slider.y repaint = true break end end end if self:hitTest(x, y) then if button == "left" and not repaint then self:beginDrag(x, y) end repaint = true end if repaint then self:bringToTop() end return repaint end --[[ Get the name of the saved window position group. ! When the user drags a window, the new position of the window is saved, and then when any windows in the same group are opened in the future, the position of the new window is set to the saved position. By default, each window class is its own group, but by overriding this method, that can be changed. ]] function Window:getSavedWindowPositionName() return class.type(self) end function Window:onMouseUp(button, x, y) local repaint = false if self.dragging then self.ui.drag_mouse_move = nil self.dragging = false local config = self.ui.app.runtime_config if not config.window_position then config.window_position = {} end config = config.window_position local name = self:getSavedWindowPositionName() if not config[name] then config[name] = {} end config = config[name] config.x = self.x_original config.y = self.y_original return false end if self.windows then for _, window in ipairs(self.windows) do if window:onMouseUp(button, x - window.x, y - window.y) then repaint = true break -- Click has been handled. No need to look any further. end end end if button == "left" or button == "right" then local btn = self.active_button if btn then btn.panel_for_sprite.sprite_index = btn.sprite_index_normal btn.active = false btn.panel_for_sprite.lowered = btn.panel_lowered_normal self.active_button = false self.btn_repeat_delay = nil if btn.enabled and not btn.is_repeat and btn.x <= x and x < btn.r and btn.y <= y and y < btn.b then btn:handleClick(button) end repaint = true end local bar = self.active_scrollbar if bar then self.active_scrollbar = nil bar.active = false bar.down_x = nil bar.down_y = nil end end return repaint end function Window:onMouseWheel(x, y) local repaint = false if self.windows then for _, window in ipairs(self.windows) do if window:onMouseWheel(x, y) then repaint = true break -- Scroll has been handled. No need to look any further. end end end return repaint end local --[[persistable:window_drag_position_representation]] function getNicestPositionRepresentation(pos, size, dim_size) if size == dim_size then return 0.5 end local left_rel = pos local right_rel = pos + size - dim_size local rel = pos / (dim_size - size) if 0.15 < rel and rel < 0.85 then return rel end if left_rel <= 0 then return 0 end if right_rel >= 0 then return -0.1 end if left_rel <= -right_rel then return left_rel else return right_rel end end --[[ Initiate dragging of the window. !param x The X position of the cursor in window co-ordinatees. !param y The Y position of the cursor in window co-ordinatees. ]] function Window:beginDrag(x, y) if not self.width or not self.height or not self.ui or self.ui.app.runtime_config.lock_windows or not self.draggable then -- Need width, height and UI to do a drag return false end self.dragging = true self.ui.drag_mouse_move = --[[persistable:window_drag_mouse_move]] function (sx, sy) -- sx and sy are cursor screen co-ords. Convert to window's new abs co-ords sx = sx - x sy = sy - y -- Calculate best positioning local w, h = TheApp.config.width, TheApp.config.height if TheApp.key_modifiers.ctrl then local px = round(sx / (w - self.width), 0.1) local py = round(sy / (h - self.height), 0.1) if px >= 1 then px = -0.1 elseif px < 0 then px = 0 end if py >= 1 then py = -0.1 elseif py < 0 then py = 0 end self:setPosition(px, py) else local px = getNicestPositionRepresentation(sx, self.width , w) local py = getNicestPositionRepresentation(sy, self.height, h) self:setPosition(px, py) end end return true end --[[ Called when the user moves the mouse. !param x (integer) The new X co-ordinate of the cursor, relative to the top-left corner of the window. !param y (integer) The new Y co-ordinate of the cursor, relative to the top-left corner of the window. !param dx (integer) The number of pixels which the cursor moved horizontally. !param dy (integer) The number of pixels which the cursor moved vertically. ]] function Window:onMouseMove(x, y, dx, dy) local repaint = false self.cursor_x = x self.cursor_y = y if self.windows then for _, window in ipairs(self.windows) do if window:onMouseMove(x - window.x, y - window.y, dx, dy) then repaint = true end end end if self.active_button then local btn = self.active_button local index = btn.sprite_index_blink or btn.sprite_index_normal if btn.x <= x and x < btn.r and btn.y <= y and y < btn.b then index = btn.sprite_index_active self.active_button.active = true btn.panel_for_sprite.lowered = btn.panel_lowered_active else self.active_button.active = false btn.panel_for_sprite.lowered = btn.panel_lowered_normal for _, button in ipairs(self.buttons) do if button.enabled and button.x <= x and x < button.r and button.y <= y and y < button.b then button.panel_for_sprite.sprite_index = button.sprite_index_active button.active = true button.panel_for_sprite.lowered = button.panel_lowered_active self.active_button = button repaint = true break end end end if btn.panel_for_sprite.sprite_index ~= index then btn.panel_for_sprite.sprite_index = index repaint = true end end if self.active_scrollbar then local bar = self.active_scrollbar if bar.direction == "x" then bar:setXorY(x - bar.down_x) elseif bar.direction == "y" then bar:setXorY(y - bar.down_y) end end return repaint end -- Called regularly at a rate independent of the game speed. function Window:onTick() if self.active_button then local btn = self.active_button local mouse_btn = self.buttons_down.mouse_left and "left" or self.buttons_down.mouse_right and "right" or nil if mouse_btn then if self.btn_repeat_delay > 0 then self.btn_repeat_delay = self.btn_repeat_delay - 1 else if btn.active and btn.is_repeat then self.btn_repeat_delay = 2 btn:handleClick(mouse_btn) end end end end if self.blinking_button then self.blink_counter = self.blink_counter + 1 if self.blink_counter == 20 then self.blink_counter = 0 local btn = self.buttons[self.blinking_button] btn.sprite_index_blink = btn.sprite_index_blink == btn.sprite_index_active and btn.sprite_index_normal or btn.sprite_index_active if btn.enabled and not btn.active then btn.panel_for_sprite.sprite_index = btn.sprite_index_blink end end end if not class.is(self, UI) then -- prevent UI (sub)class from handling the textboxes too for _, box in ipairs(self.textboxes) do box:onTick() end end if self.windows then for _, window in ipairs(self.windows) do window:onTick() end end end -- Called regularly at the same rate that entities are ticked. function Window:onWorldTick() if self.windows then for _, window in ipairs(self.windows) do window:onWorldTick() end end end -- Bring the window to the top of its parent function Window:bringToTop() if self.parent then self.parent:sendToTop(self) end end -- Tell the window to bring the specified sub-window to its top function Window:sendToTop(window) local window_index if self.windows then for i = 1, #self.windows do -- Search specified window in windows list if self.windows[i] == window then window_index = i -- Keep window index break end end end if window_index ~= nil then local insert_pos if window.on_top then insert_pos = 1 else -- First position after any on_top windows for i = 1, #self.windows do if not self.windows[i].on_top then insert_pos = i break end end insert_pos = insert_pos or #self.windows + 1 end table.remove(self.windows, window_index) -- Remove the window from the list table.insert(self.windows, insert_pos, window) -- And reinsert it at the before computed position end end -- Tell the window to bring the specified sub-window to its bottom function Window:sendToBottom(window) if self.windows then for i = 1, #self.windows do -- Search specified window in windows list if self.windows[i] == window then table.remove(self.windows, i) -- Remove the window from the list table.insert(self.windows, #self.windows + 1, window) -- And reinsert it at the end break end end end end function Window:startButtonBlinking(button_index) self.blinking_button = button_index self.blink_counter = 0 local btn = self.buttons[button_index] btn.sprite_index_blink = btn.sprite_index_normal end function Window:stopButtonBlinking() -- Does any button actually blink? if self.blinking_button then local btn = self.buttons[self.blinking_button] btn.panel_for_sprite.sprite_index = btn.sprite_index_normal btn.sprite_index_blink = nil self.blinking_button = false self.blink_counter = 0 end end --! Create a static (non-changeable) tooltip to be displayed in a certain region. --! tooltip_x and tooltip_y are optional; if not specified, it will default to top center of region. --!param text (string) The string to display. --!param x (integer) The X co-ordinate relative to the top-left corner. --!param y (integer) The Y co-ordinate relative to the top-left corner. --!param r (integer) The right (X + width) co-ordinate relative to the top-left corner. --!param b (integer) The bottom (Y + height) co-ordinate relative to the top-left corner. --!param tooltip_x (integer) [optional] The X co-ordinate to display the tooltip at. --!param tooltip_y (integer) [optional] The Y co-ordinate to display the tooltip at. function Window:makeTooltip(text, x, y, r, b, tooltip_x, tooltip_y) local region = { text = text, x = x, y = y, r = r, b = b, tooltip_x = tooltip_x or round((x + r) / 2, 1), -- optional tooltip_y = tooltip_y or y, -- optional } self.tooltip_regions[#self.tooltip_regions + 1] = region return region end --! Create a dynamic tooltip to be displayed in a certain region. --! tooltip_x and tooltip_y are optional; if not specified, it will default to top center of region. --!param callback (function) A function that returns the string to display or nil for no tooltip. --!param x (integer) The X co-ordinate relative to the top-left corner. --!param y (integer) The Y co-ordinate relative to the top-left corner. --!param r (integer) The right (X + width) co-ordinate relative to the top-left corner. --!param b (integer) The bottom (Y + height) co-ordinate relative to the top-left corner. --!param tooltip_x (integer) [optional] The X co-ordinate to display the tooltip at. --!param tooltip_y (integer) [optional] The Y co-ordinate to display the tooltip at. function Window:makeDynamicTooltip(callback, x, y, r, b, tooltip_x, tooltip_y) local region = { callback = callback, x = x, y = y, r = r, b = b, tooltip_x = tooltip_x or round((x + r) / 2, 1), -- optional tooltip_y = tooltip_y or y, -- optional } self.tooltip_regions[#self.tooltip_regions + 1] = region return region end -- An 'element' can either be a panel, a button, or a tooltip region. function Window:getTooltipForElement(elem, x, y) local text if elem.callback then text = elem.callback(x, y) else text = elem.text end local xpos, ypos = elem.tooltip_x, elem.tooltip_y if xpos then xpos = xpos + self.x end -- NB: can be nil, then it means position at mouse cursor if ypos then ypos = ypos + self.y end if text then return { text = text, x = xpos, y = ypos } end end --! Query the window for tooltip text to display for a particular position. --! Tooltips are either associated with buttons, panels, or a region. -- (see Button:setTooltip, Panel:setTooltip, Window:make[Dynamic]Tooltip) --! Button tooltips take precedence over region tooltips, which again take precedence over panels. -- Returns tooltip in form of { text = .. , x = .. , y = .. } or nil for no tooltip. --!param x (integer) The X co-ordinate relative to the top-left corner. --!param y (integer) The Y co-ordinate relative to the top-left corner. function Window:getTooltipAt(x, y) if x < 0 or y < 0 or (self.width and x >= self.width) or (self.height and y >= self.height) then return end if self.windows then for _, window in ipairs(self.windows) do if window:hitTest(x - window.x, y - window.y) then return window:getTooltipAt(x - window.x, y - window.y) end end end for _, btn in ipairs(self.buttons) do if btn.visible ~= false and btn.tooltip and btn.x <= x and x < btn.r and btn.y <= y and y < btn.b then return self:getTooltipForElement(btn.tooltip, x, y) end end if not self.tooltip_regions then self.tooltip_regions = {} end -- TEMPORARY for compatibility of pre-r649 savegames. Remove when compatibility is broken anyway. for _, region in ipairs(self.tooltip_regions) do if region.enabled ~= false and region.x <= x and x < region.r and region.y <= y and y < region.b then return self:getTooltipForElement(region, x, y) end end for _, pnl in ipairs(self.panels) do if pnl.tooltip and self:hitTestPanel(x, y, pnl) then return self:getTooltipForElement(pnl.tooltip, x, y) end end end --! Stub to be extended in subclasses, if needed. function Window:afterLoad(old, new) if old < 2 then -- Scrollbars were added self.scrollbars = {} end if old < 3 then -- Textboxes were added self.textboxes = {} end if old < 22 then self.draggable = true end if old < 32 then -- ui added to buttons for _, btn in ipairs(self.buttons) do btn.ui = self.ui end end if self.windows then for _, w in pairs(self.windows) do w:afterLoad(old, new) end end end CorsixTH-0.61/CorsixTH/Lua/world.lua000066400000000000000000002774371321660673500172560ustar00rootroot00000000000000--[[ Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] local TH = require"TH" local ipairs, _G, table_remove = ipairs, _G, table.remove dofile "entities/patient" dofile "entities/staff" dofile "entities/vip" dofile "entities/grim_reaper" dofile "entities/inspector" dofile "staff_profile" dofile "hospital" dofile "epidemic" dofile "calls_dispatcher" dofile "research_department" dofile "entity_map" --! Manages entities, rooms, and the date. class "World" ---@type World local World = _G["World"] local local_criteria_variable = { {name = "reputation", icon = 10, formats = 2}, {name = "balance", icon = 11, formats = 2}, {name = "percentage_cured", icon = 12, formats = 2}, {name = "num_cured" , icon = 13, formats = 2}, {name = "percentage_killed",icon = 14, formats = 2}, {name = "value", icon = 15, formats = 2}, {name = "population", icon = 11, formats = 1}, } -- time between each damage caused by an earthquake local earthquake_damage_time = 16 -- hours local earthquake_warning_period = 600 -- hours between warning and real thing local earthquake_warning_length = 25 -- length of early warning quake function World:World(app) self.map = app.map self.wall_types = app.walls self.object_types = app.objects self.anims = app.anims self.animation_manager = app.animation_manager self.pathfinder = TH.pathfinder() self.pathfinder:setMap(app.map.th) self.entities = {} -- List of entities in the world. self.dispatcher = CallsDispatcher(self) self.objects = {} self.object_counts = { extinguisher = 0, radiator = 0, plant = 0, reception_desk = 0, bench = 0, general = 0, } self.objects_notify_occupants = {} self.rooms = {} -- List that can have gaps when a room is deleted, so use pairs to iterate. self.entity_map = EntityMap(self.map) -- All information relating to the next or current earthquake, nil if -- there is no scheduled earthquake. -- Contains the following fields: -- active (boolean) Whether we are currently running the warning or damage timers (after start_day of start_month is passed). -- start_month (integer) The month the earthquake warning is triggered. -- start_day (integer) The day of the month the earthquake warning is triggered. -- size (integer) The amount of damage the earthquake causes (1-9). -- remaining_damage (integer) The amount of damage this earthquake has yet to inflict. -- damage_timer (integer) The number of hours until the earthquake next inflicts damage if active. -- warning_timer (integer) The number of hours left until the real damaging earthquake begins. self.next_earthquake = { active = false } -- Time self.hours_per_day = 50 self.hours_per_tick = 1 self.tick_rate = 3 self.tick_timer = 0 self.year = 1 self.month = 1 -- January self.day = 1 self.hour = 0 self.room_information_dialogs_off = app.config.debug -- This is false when the game is paused. self.user_actions_allowed = true -- In Free Build mode? if tonumber(self.map.level_number) then self.free_build_mode = false else self.free_build_mode = app.config.free_build_mode self.debug_disable_salary_raise = self.free_build_mode end self.debug_disable_salary_raise = false self.idle_cache = {} -- List of which goal criterion means what, and what number the corresponding icon has. self.level_criteria = local_criteria_variable self.room_remove_callbacks = {--[[a set rather than a list]]} self.room_built = {} -- List of room types that have been built self.hospitals = {} self.floating_dollars = {} self.game_log = {} -- saves list of useful debugging information self.savegame_version = app.savegame_version -- Also preserve this throughout future updates. self.original_savegame_version = app.savegame_version -- Initialize available rooms. local avail_rooms = self:getAvailableRooms() self.available_rooms = {} -- Both a list and a set, use ipairs to iterate through the available rooms. for _, avail_room in ipairs(avail_rooms) do local room = avail_room.room self.available_rooms[#self.available_rooms + 1] = room self.available_rooms[room.id] = room end -- Initialize available diseases and winning conditions. self:initLevel(app, avail_rooms) self.hospitals[1] = Hospital(self, avail_rooms, app.config.player_name) -- Player's hospital self:initCompetitors(avail_rooms) for _, hospital in ipairs(self.hospitals) do hospital.research:setResearchConcentration() end -- TODO: Add (working) AI and/or multiplayer hospitals -- TODO: Needs to be changed for multiplayer support self.hospitals[1]:initStaff() self.wall_id_by_block_id = {} for _, wall_type in ipairs(self.wall_types) do for _, set in ipairs({"inside_tiles", "outside_tiles", "window_tiles"}) do for _, id in pairs(wall_type[set]) do self.wall_id_by_block_id[id] = wall_type.id end end end self.wall_set_by_block_id = {} for _, wall_type in ipairs(self.wall_types) do for _, set in ipairs({"inside_tiles", "outside_tiles", "window_tiles"}) do for _, id in pairs(wall_type[set]) do self.wall_set_by_block_id[id] = set end end end self.wall_dir_by_block_id = {} for _, wall_type in ipairs(self.wall_types) do for _, set in ipairs({"inside_tiles", "outside_tiles", "window_tiles"}) do for name, id in pairs(wall_type[set]) do self.wall_dir_by_block_id[id] = name end end end self.object_id_by_thob = {} for _, object_type in ipairs(self.object_types) do self.object_id_by_thob[object_type.thob] = object_type.id end self:makeAvailableStaff(0) self:calculateSpawnTiles() self:nextEmergency() self:nextVip() -- earthquakes -- current_map_earthquakes is a counter that tracks which number of earthquake -- we are currently on in maps which have information for earthquakes in them self.current_map_earthquake = 0 self:nextEarthquake() -- Set initial spawn rate in people per month. -- Assumes that the first entry is always the first month. self.spawn_rate = self.map.level_config.popn[0].Change self.monthly_spawn_increase = self.spawn_rate self.spawn_hours = {} self.spawn_dates = {} self:updateSpawnDates() self.cheat_announcements = { "cheat001.wav", "cheat002.wav", "cheat003.wav", } self:gameLog("Created game with savegame version " .. self.savegame_version .. ".") end --! Register key shortcuts for controlling the world (game speed, etc.) function World:setUI(ui) self.ui = ui self.ui:addKeyHandler("P", self, self.pauseOrUnpause, "Pause") self.ui:addKeyHandler("1", self, self.setSpeed, "Slowest") self.ui:addKeyHandler("2", self, self.setSpeed, "Slower") self.ui:addKeyHandler("3", self, self.setSpeed, "Normal") self.ui:addKeyHandler("4", self, self.setSpeed, "Max speed") self.ui:addKeyHandler("5", self, self.setSpeed, "And then some more") self.ui:addKeyHandler("=", self, self.adjustZoom, 1) self.ui:addKeyHandler({"shift", "="}, self, self.adjustZoom, 5) self.ui:addKeyHandler("+", self, self.adjustZoom, 1) self.ui:addKeyHandler({"shift", "+"}, self, self.adjustZoom, 5) self.ui:addKeyHandler("-", self, self.adjustZoom, -1) self.ui:addKeyHandler({"shift", "-"}, self, self.adjustZoom, -5) end function World:adjustZoom(delta) local scr_w = self.ui.app.config.width local factor = self.ui.app.config.zoom_speed local virtual_width = scr_w / (self.ui.zoom_factor or 1) -- The modifier is a normal distribution to make it more difficult to zoom at the extremes local modifier = math.exp(-((self.ui.zoom_factor - 1) ^ 2) / 2) / math.sqrt(2 * math.pi) if modifier < 0.05 or modifier > 1 then modifier = 0.05 end virtual_width = virtual_width - delta * factor * modifier if virtual_width < 200 then return false end return self.ui:setZoom(scr_w / virtual_width) end --! Initialize the game level (available diseases, winning conditions). --!param app Game application. --!param avail_rooms (list) Available rooms in the level. function World:initLevel(app, avail_rooms) local existing_rooms = {} for _, avail_room in ipairs(avail_rooms) do existing_rooms[avail_room.room.id] = true end -- Determine available diseases self.available_diseases = {} local level_config = self.map.level_config local visual = level_config.visuals local non_visual = level_config.non_visuals for _, disease in ipairs(app.diseases) do if not disease.pseudo then local vis_id = disease.visuals_id local nonvis_id = disease.non_visuals_id local vis = 1 if visual and (visual[vis_id] or non_visual[nonvis_id]) then vis = vis_id and visual[vis_id].Value or non_visual[nonvis_id].Value end if vis ~= 0 then for _, room_id in ipairs(disease.treatment_rooms) do if existing_rooms[room_id] == nil then print("Warning: Removing disease \"" .. disease.id .. "\" due to missing treatment room \"" .. room_id .. "\".") vis = 0 -- Missing treatment room, disease cannot be treated. Remove it. break end end end -- TODO: Where the value is greater that 0 should determine the frequency of the patients if vis ~= 0 then self.available_diseases[#self.available_diseases + 1] = disease self.available_diseases[disease.id] = disease end end end if #self.available_diseases == 0 and not self.map.level_number == "MAP EDITOR" then -- No diseases are needed if we're actually in the map editor! print("Warning: This level does not contain any diseases") end self:determineWinningConditions() end function World:toggleInformation() self.room_information_dialogs_off = not self.room_information_dialogs_off end --! Load goals to win and lose from the map, and store them in 'self.goals'. --! Also set 'self.winning_goal_count'. function World:determineWinningConditions() local winning_goal_count = 0 -- No conditions if in free build mode! if self.free_build_mode then self.goals = {} self.winning_goal_count = winning_goal_count return end -- Determine winning and losing conditions local world_goals = {} -- There might be no winning criteria (i.e. the demo), then -- we don't have to worry about the progress report dialog -- since it doesn't exist anyway. local win = self.map.level_config.win_criteria if win then for _, values in pairs(win) do if values.Criteria ~= 0 then winning_goal_count = winning_goal_count + 1 local crit_name = self.level_criteria[values.Criteria].name world_goals[crit_name] = { name = crit_name, win_value = values.Value, boundary = values.Bound, criterion = values.Criteria, max_min_win = values.MaxMin, group = values.Group, number = winning_goal_count, } world_goals[#world_goals + 1] = world_goals[crit_name] end end end -- Likewise there might be no losing criteria (i.e. the demo) local lose = self.map.level_config.lose_criteria if lose then for _, values in pairs(lose) do if values.Criteria ~= 0 then local crit_name = self.level_criteria[values.Criteria].name if not world_goals[crit_name] then world_goals[crit_name] = {number = #world_goals + 1, name = crit_name} world_goals[#world_goals + 1] = world_goals[crit_name] end world_goals[crit_name].lose_value = values.Value world_goals[crit_name].boundary = values.Bound world_goals[crit_name].criterion = values.Criteria world_goals[crit_name].max_min_lose = values.MaxMin world_goals[crit_name].group = values.Group world_goals[world_goals[crit_name].number].lose_value = values.Value world_goals[world_goals[crit_name].number].boundary = values.Bound world_goals[world_goals[crit_name].number].criterion = values.Criteria world_goals[world_goals[crit_name].number].max_min_lose = values.MaxMin world_goals[world_goals[crit_name].number].group = values.Group end end end -- Order the criteria (some icons in the progress report shouldn't be next to each other) table.sort(world_goals, function(a,b) return a.criterion < b.criterion end) self.goals = world_goals self.winning_goal_count = winning_goal_count end --! Find the rooms available at the level. --!return (list) Available rooms, with discovery state at start, and build_cost. function World:getAvailableRooms() local avail_rooms = {} local cfg_objects = self.map.level_config.objects local cfg_rooms = self.map.level_config.rooms for _, room in ipairs(TheApp.rooms) do -- Add build cost based on level files for all rooms. -- For now, sum it up so that the result is the same as before. -- TODO: Change the whole build process so that this value is -- the room cost only? (without objects) local build_cost = cfg_rooms[room.level_config_id].Cost local available = true local is_discovered = true -- Make sure that all objects needed for this room are available for name, no in pairs(room.objects_needed) do local spec = cfg_objects[TheApp.objects[name].thob] if spec.AvailableForLevel == 0 then -- It won't be possible to build this room at all on the level. available = false elseif spec.StartAvail == 0 then -- Ok, it will be available at some point just not from the beginning. is_discovered = false end -- Add cost for this object. build_cost = build_cost + cfg_objects[TheApp.objects[name].thob].StartCost * no end if available then avail_rooms[#avail_rooms + 1] = {room = room, is_discovered = is_discovered, build_cost = build_cost} end end return avail_rooms end --! Initialize competing hospitals --!param avail_rooms (list) Available rooms in the level. function World:initCompetitors(avail_rooms) -- Add computer players -- TODO: Right now they're only names local level_config = self.map.level_config for key, value in pairs(level_config.computer) do if value.Playing == 1 then self.hospitals[#self.hospitals + 1] = AIHospital(tonumber(key) + 1, self, avail_rooms) end end end --! Initializes variables carried from previous levels function World:initFromPreviousLevel(carry) for object, tab in pairs(carry) do if object == "world" then for key, value in pairs(tab) do self[key] = value end elseif object == "hospital" then for key, value in pairs(tab) do self.hospitals[1][key] = value end end end end --! Get the hospital controlled by the (single) player. --!return (Hospital) The hospital controlled by the (single) player. function World:getLocalPlayerHospital() -- NB: UI code can get the hospital to use via ui.hospital -- TODO: Make this work in multiplayer? return self.hospitals[1] end --! Identify the tiles on the map suitable for spawning `Humanoid`s from. function World:calculateSpawnTiles() self.spawn_points = {} local w, h = self.map.width, self.map.height local directions = { {direction = "north", origin = {1, 1}, step = { 1, 0}}, {direction = "east" , origin = {w, 1}, step = { 0, 1}}, {direction = "south", origin = {w, h}, step = {-1, 0}}, {direction = "west" , origin = {1, h}, step = { 0, -1}}, } for _, edge in ipairs(directions) do -- Find all possible spawn points on the edge local xs = {} local ys = {} local x, y = edge.origin[1], edge.origin[2] repeat if self.pathfinder:isReachableFromHospital(x, y) then xs[#xs + 1] = x ys[#ys + 1] = y end x = x + edge.step[1] y = y + edge.step[2] until x < 1 or x > w or y < 1 or y > h -- Choose at most 8 points for the edge local num = math.min(8, #xs) for i = 1, num do local index = math.floor((i - 0.5) / num * #xs + 1) self.spawn_points[#self.spawn_points + 1] = {x = xs[index], y = ys[index], direction = edge.direction} end end end --! Function to determine whether a given disease is available for new patients. --!param self (World) World object. --!param disease (disease) Disease to test. --!param hospital (Hospital) Hospital that needs a new patient. --!return (boolean) Whether the disease is usable for new spawned patients. local function isDiseaseUsableForNewPatient(self, disease, hospital) if disease.only_emergency then return false end if not disease.visuals_id then return true end local current_month = (self.year - 1) * 12 + self.month -- level files can delay visuals to a given month -- and / or until a given number of patients have arrived local level_config = self.map.level_config local hold_visual_months = level_config.gbv.HoldVisualMonths local hold_visual_peep_count = level_config.gbv.HoldVisualPeepCount -- if the month is greater than either of these values then visuals will not appear in the game if (hold_visual_months and hold_visual_months > current_month) or (hold_visual_peep_count and hold_visual_peep_count > hospital.num_visitors) then return false end -- The value against #visuals_available determines from which month a disease can appear. -- 0 means it can show up anytime. return level_config.visuals_available[disease.visuals_id].Value < current_month end --! Spawn a patient from a spawn point for the given hospital. --!param hospital (Hospital) Hospital that the new patient should visit. --!return (Patient entity) The spawned patient, or 'nil' if no patient spawned. function World:spawnPatient(hospital) if not hospital then hospital = self:getLocalPlayerHospital() end -- The level might not contain any diseases if #self.available_diseases < 1 then self.ui:addWindow(UIInformation(self.ui, {"There are no diseases on this level! Please add some to your level."})) return end if #self.spawn_points == 0 then self.ui:addWindow(UIInformation(self.ui, {"Could not spawn patient because no spawn points are available. Please place walkable tiles on the edge of your level."})) return end if not hospital:hasStaffedDesk() then return nil end -- Construct disease, take a random guess first, as a quick clear-sky attempt. local disease = self.available_diseases[math.random(1, #self.available_diseases)] if not isDiseaseUsableForNewPatient(self, disease, hospital) then -- Lucky shot failed, do a proper calculation. local usable_diseases = {} for _, d in ipairs(self.available_diseases) do if isDiseaseUsableForNewPatient(self, d, hospital) then usable_diseases[#usable_diseases + 1] = d end end if #usable_diseases == 0 then return nil end disease = usable_diseases[math.random(1, #usable_diseases)] end -- Construct patient. local spawn_point = self.spawn_points[math.random(1, #self.spawn_points)] local patient = self:newEntity("Patient", 2) patient:setDisease(disease) patient:setNextAction(SpawnAction("spawn", spawn_point)) patient:setHospital(hospital) return patient end --A VIP is invited (or he invited himself) to the player hospital. --!param name Name of the VIP function World:spawnVIP(name) local hospital = self:getLocalPlayerHospital() local vip = self:newEntity("Vip", 2) vip:setType("VIP") vip.name = name vip.enter_deaths = hospital.num_deaths vip.enter_visitors = hospital.num_visitors vip.enter_cures = hospital.num_cured vip.enter_explosions = hospital.num_explosions local spawn_point = self.spawn_points[math.random(1, #self.spawn_points)] vip:setNextAction(SpawnAction("spawn", spawn_point)) vip:setHospital(hospital) vip:updateDynamicInfo() hospital.announce_vip = hospital.announce_vip + 1 vip:queueAction(SeekReceptionAction()) end --! Perform actions to simulate an active earthquake. function World:tickEarthquake() if self:isCurrentSpeed("Pause") then return end -- check if this is the day that the earthquake is supposed to stop if self.next_earthquake.remaining_damage == 0 then self.next_earthquake.active = false self.ui:endShakeScreen() -- if the earthquake measured more than 7 on the richter scale, tell the user about it if self.next_earthquake.size > 7 then self.ui.adviser:say(_A.earthquake.ended:format(math.floor(self.next_earthquake.size))) end -- set up the next earthquake date self:nextEarthquake() else local announcements = { "quake001.wav", "quake002.wav", "quake003.wav", "quake004.wav", } -- start of warning quake if self.next_earthquake.warning_timer == earthquake_warning_period then self.ui:beginShakeScreen(0.2) self.ui:playAnnouncement(announcements[math.random(1, #announcements)]) end -- end of warning quake if self.next_earthquake.warning_timer >= earthquake_warning_period - earthquake_warning_length and self.next_earthquake.warning_timer - self.hours_per_tick < earthquake_warning_period - earthquake_warning_length then self.ui:endShakeScreen() end if self.next_earthquake.warning_timer > 0 then self.next_earthquake.warning_timer = self.next_earthquake.warning_timer - self.hours_per_tick -- nothing more to do during inactive warning period if self.next_earthquake.warning_timer < earthquake_warning_period - earthquake_warning_length then return end -- start of real earthquake if self.next_earthquake.warning_timer <= 0 then self.ui:playAnnouncement(announcements[math.random(1, #announcements)]) end end -- All earthquakes start and end small (small earthquakes never become -- larger), so when there has been less than 2 damage applied or only -- 2 damage remaining to be applied, move the screen with less -- intensity than otherwise. if self.next_earthquake.remaining_damage <= 2 or self.next_earthquake.size - self.next_earthquake.remaining_damage <= 2 then self.ui:beginShakeScreen(0.5) else self.ui:beginShakeScreen(1) end -- Play the earthquake sound. It has different names depending on language used though. if TheApp.audio:soundExists("quake2.wav") then self.ui:playSound("quake2.wav") else self.ui:playSound("quake.wav") end -- do not continue to damage phase while in a warning quake if self.next_earthquake.warning_timer > 0 then return end self.next_earthquake.damage_timer = self.next_earthquake.damage_timer - self.hours_per_tick if self.next_earthquake.damage_timer <= 0 then for _, room in pairs(self.rooms) do for object, _ in pairs(room.objects) do if object.strength then object:machineUsed(room) end end end self.next_earthquake.remaining_damage = self.next_earthquake.remaining_damage - 1 self.next_earthquake.damage_timer = self.next_earthquake.damage_timer + earthquake_damage_time end local hospital = self:getLocalPlayerHospital() -- loop through the patients and allow the possibility for them to fall over for _, patient in ipairs(hospital.patients) do if not patient.in_room and patient.falling_anim then -- make the patients fall -- jpirie: this is currently disabled. Calling this function -- really screws up the action queue, sometimes the patients -- end up with nil action queues, and sometimes the resumed -- actions throw exceptions. Also, patients in the hospital -- who have not yet found reception throw exceptions after -- they visit reception. Some debugging needed here to get -- this working. -- patient:falling() end end end end function World:debugDisableSalaryRaise(mode) self.debug_disable_salary_raise = mode end local staff_to_make = { {class = "Doctor", name = "doctor", conf = "Doctors" }, {class = "Nurse", name = "nurse", conf = "Nurses" }, {class = "Handyman", name = "handyman", conf = "Handymen" }, {class = "Receptionist", name = "receptionist", conf = "Receptionists"}, } function World:makeAvailableStaff(month) local conf_entry = 0 local cfg_staff_levels = self.map.level_config.staff_levels while cfg_staff_levels[conf_entry + 1] and cfg_staff_levels[conf_entry + 1].Month <= month do conf_entry = conf_entry + 1 end self.available_staff = {} for _, info in ipairs(staff_to_make) do local num local ind = conf_entry while not num do assert(ind >= 0, "Staff amount " .. info.conf .. " not existent (should at least be given by base_config).") num = cfg_staff_levels[ind][info.conf] ind = ind - 1 end local group = {} for i = 1, num do group[i] = StaffProfile(self, info.class, _S.staff_class[info.name]) group[i]:randomise(month) end self.available_staff[info.class] = group end end --[[ Register a callback for when `Humanoid`s enter or leave a given tile. ! Note that only one callback may be registered to each tile. !param x (integer) The 1-based X co-ordinate of the tile to monitor. !param y (integer) The 1-based Y co-ordinate of the tile to monitor. !param object (Object) Something with an `onOccupantChange` method, which will be called whenever a `Humanoid` enters or leaves the given tile. The method will receive one argument (after `self`), which will be `1` for an enter event and `-1` for a leave event. ]] function World:notifyObjectOfOccupants(x, y, object) local idx = (y - 1) * self.map.width + x self.objects_notify_occupants[idx] = object or nil end function World:getObjectToNotifyOfOccupants(x, y) local idx = (y - 1) * self.map.width + x return self.objects_notify_occupants[idx] end local flag_cache = {} function World:createMapObjects(objects) self.delayed_map_objects = {} local map = self.map.th for _, object in ipairs(objects) do repeat local x, y, thob, flags = unpack(object) local object_id = self.object_id_by_thob[thob] if not object_id then print("Warning: Map contained object with unrecognised THOB (" .. thob .. ") at " .. x .. "," .. y) break -- continue end local object_type = self.object_types[object_id] if not object_type or not object_type.supports_creation_for_map then print("Warning: Unable to create map object " .. object_id .. " at " .. x .. "," .. y) break -- continue end -- Delay making objects which are on plots which haven't been purchased yet local parcel = map:getCellFlags(x, y, flag_cache).parcelId if parcel ~= 0 and map:getPlotOwner(parcel) == 0 then self.delayed_map_objects[{object_id, x, y, flags, "map object"}] = parcel else self:newObject(object_id, x, y, flags, "map object") end until true end end --! Change owner of a plot. --!param parcel (int) Plot to change. --!param owner (int) New owner (may be 0). function World:setPlotOwner(parcel, owner) self.map:setPlotOwner(parcel, owner) if owner ~= 0 and self.delayed_map_objects then for info, p in pairs(self.delayed_map_objects) do if p == parcel then self:newObject(unpack(info)) self.delayed_map_objects[info] = nil end end end self.map.th:updateShadows() end function World:getAnimLength(anim) return self.animation_manager:getAnimLength(anim) end -- Register a function to be called whenever a room has been deactivated (crashed or edited). --!param callback (function) A function taking one argument: a `Room`. function World:registerRoomRemoveCallback(callback) self.room_remove_callbacks[callback] = true end -- Unregister a function from being called whenever a room has been deactivated (crashed or edited). --!param callback (function) A function previously passed to -- `registerRoomRemoveCallback`. function World:unregisterRoomRemoveCallback(callback) self.room_remove_callbacks[callback] = nil end function World:newRoom(x, y, w, h, room_info, ...) local id = #self.rooms + 1 -- Note: Room IDs will be unique, but they may not form continuous values -- from 1, as IDs of deleted rooms may not be re-issued for a while local class = room_info.class and _G[room_info.class] or Room local hospital = self:getHospital(x, y) local room = class(x, y, w, h, id, room_info, self, hospital, ...) self.rooms[id] = room self:clearCaches() return room end --! Called when a room has been completely built and is ready to use. --!param room (Room) The new room. function World:markRoomAsBuilt(room) room:roomFinished() local diag_disease = self.hospitals[1].disease_casebook["diag_" .. room.room_info.id] if diag_disease and not diag_disease.discovered then self.hospitals[1].disease_casebook["diag_" .. room.room_info.id].discovered = true end for _, entity in ipairs(self.entities) do if entity.notifyNewRoom then entity:notifyNewRoom(room) end end end --! Called when a room has been deactivated (crashed or edited) function World:notifyRoomRemoved(room) self.dispatcher:dropFromQueue(room) for callback in pairs(self.room_remove_callbacks) do callback(room) end end --! Clear all internal caches which are dependant upon map state / object position function World:clearCaches() self.idle_cache = {} end function World:getWallIdFromBlockId(block_id) -- Remove the transparency flag if present. if self.ui.transparent_walls then block_id = block_id - 1024 end return self.wall_id_by_block_id[block_id] end function World:getWallSetFromBlockId(block_id) -- Remove the transparency flag if present. if self.ui.transparent_walls then block_id = block_id - 1024 end return self.wall_set_by_block_id[block_id] end function World:getWallDirFromBlockId(block_id) -- Remove the transparency flag if present. if self.ui.transparent_walls then block_id = block_id - 1024 end return self.wall_dir_by_block_id[block_id] end local month_length = { 31, -- Jan 28, -- Feb (29 in leap years, but TH doesn't have leap years) 31, -- Mar 30, -- Apr 31, -- May 30, -- Jun 31, -- Jul 31, -- Aug 30, -- Sep 31, -- Oct 30, -- Nov 31, -- Dec } function World:getDate() return self.month, self.day end -- Game speeds. The second value is the number of world clicks that pass for each -- in-game tick and the first is the number of hours to progress when this -- happens. local tick_rates = { ["Pause"] = {0, 1}, ["Slowest"] = {1, 9}, ["Slower"] = {1, 5}, ["Normal"] = {1, 3}, ["Max speed"] = {1, 1}, ["And then some more"] = {3, 1}, ["Speed Up"] = {4, 1}, } -- Return the length of the current month function World:getCurrentMonthLength() return month_length[self.month] end function World:speedUp() self:setSpeed("Speed Up") end function World:previousSpeed() if self:isCurrentSpeed("Speed Up") then self:setSpeed(self.prev_speed) end end -- Return if the selected speed the same as the current speed. function World:isCurrentSpeed(speed) local numerator, denominator = unpack(tick_rates[speed]) return self.hours_per_tick == numerator and self.tick_rate == denominator end -- Return the name of the current speed, relating to a key in tick_rates. function World:getCurrentSpeed() for name, rate in pairs(tick_rates) do if rate[1] == self.hours_per_tick and rate[2] == self.tick_rate then return name end end end -- Set the (approximate) number of seconds per tick. --!param speed (string) One of: "Pause", "Slowest", "Slower", "Normal", -- "Max speed", or "And then some more". function World:setSpeed(speed) if self:isCurrentSpeed(speed) then return end if speed == "Pause" then -- stop screen shaking if there was an earthquake in progress if self.next_earthquake.active then self.ui:endShakeScreen() end -- By default actions are not allowed when the game is paused. self.user_actions_allowed = TheApp.config.allow_user_actions_while_paused elseif self:getCurrentSpeed() == "Pause" then self.user_actions_allowed = true end local currentSpeed = self:getCurrentSpeed() if currentSpeed ~= "Pause" and currentSpeed ~= "Speed Up" then self.prev_speed = self:getCurrentSpeed() end local was_paused = currentSpeed == "Pause" local numerator, denominator = unpack(tick_rates[speed]) self.hours_per_tick = numerator self.tick_rate = denominator if was_paused then TheApp.audio:onEndPause() end -- Set the blue filter according to whether the user can build or not. TheApp.video:setBlueFilterActive(not self.user_actions_allowed) return false end function World:isPaused() return self:isCurrentSpeed("Pause") end --! Dedicated function to allow unpausing by pressing 'p' again function World:pauseOrUnpause() if not self:isCurrentSpeed("Pause") then self:setSpeed("Pause") elseif self.prev_speed then self:setSpeed(self.prev_speed) end end -- Outside (air) temperatures based on climate data for Oxford, taken from -- Wikipedia. For scaling, 0 degrees C becomes 0 and 50 degrees C becomes 1 local outside_temperatures = { 4.1 / 50, -- January 4.4 / 50, -- February 6.3 / 50, -- March 8.65 / 50, -- April 11.95 / 50, -- May 15 / 50, -- June 16.95 / 50, -- July 16.55 / 50, -- August 14.15 / 50, -- September 10.5 / 50, -- October 6.8 / 50, -- November 4.75 / 50, -- December } --! World ticks are translated to game ticks (or hours) depending on the -- current speed of the game. There are 50 hours in a TH day. function World:onTick() if self.map.level_number == "MAP EDITOR" then return end if self.tick_timer == 0 then if self.autosave_next_tick then self.autosave_next_tick = nil local pathsep = package.config:sub(1, 1) local dir = TheApp.savegame_dir if not dir:sub(-1, -1) == pathsep then dir = dir .. pathsep end if not lfs.attributes(dir .. "Autosaves", "modification") then lfs.mkdir(dir .. "Autosaves") end local status, err = pcall(TheApp.save, TheApp, dir .. "Autosaves" .. pathsep .. "Autosave" .. self.month .. ".sav") if not status then print("Error while autosaving game: " .. err) end end if self.year == 1 and self.month == 1 and self.day == 1 and self.hour == 0 then if not self.ui.start_tutorial then self.ui:addWindow(UIWatch(self.ui, "initial_opening")) self.ui:showBriefing() end end self.tick_timer = self.tick_rate self.hour = self.hour + self.hours_per_tick -- if an earthquake is supposed to be going on, call the earthquake function if self.next_earthquake.active then self:tickEarthquake() end -- End of day/month/year if self.hour >= self.hours_per_day then for _, hospital in ipairs(self.hospitals) do hospital:onEndDay() end self:onEndDay() self.hour = self.hour - self.hours_per_day self.day = self.day + 1 if self.day > month_length[self.month] then self.day = month_length[self.month] for _, hospital in ipairs(self.hospitals) do hospital:onEndMonth() end -- Let the hospitals do what they need to do at end of month first. if self:onEndMonth() then -- Bail out as the game has already been ended. return end self.day = 1 self.month = self.month + 1 if self.month > 12 then self.month = 12 -- It is crucial that the annual report gets to initialize before onEndYear is called. -- Yearly statistics are reset there. self.ui:addWindow(UIAnnualReport(self.ui, self)) self:onEndYear() self.year = self.year + 1 self.month = 1 end end end for i = 1, self.hours_per_tick do for _, hospital in ipairs(self.hospitals) do hospital:tick() end -- A patient might arrive to the player hospital. -- TODO: Multiplayer support. if self.spawn_hours[self.hour + i - 1] and self.hospitals[1].opened then for _ = 1, self.spawn_hours[self.hour + i - 1] do self:spawnPatient() end end for _, entity in ipairs(self.entities) do if entity.ticks then self.current_tick_entity = entity entity:tick() end end self.current_tick_entity = nil self.map:onTick() self.map.th:updateTemperatures(outside_temperatures[self.month], 0.25 + self.hospitals[1].radiator_heat * 0.3) if self.ui then self.ui:onWorldTick() end self.dispatcher:onTick() end end if self.hours_per_tick > 0 and self.floating_dollars then for obj in pairs(self.floating_dollars) do obj:tick() if obj:isDead() then obj:setTile(nil) self.floating_dollars[obj] = nil end end end self.tick_timer = self.tick_timer - 1 end function World:setEndMonth() self.day = month_length[self.month] self.hour = self.hours_per_day - 1 end function World:setEndYear() self.month = 12 self:setEndMonth() end -- Called immediately prior to the ingame day changing. function World:onEndDay() for _, entity in ipairs(self.entities) do if entity.ticks and class.is(entity, Humanoid) then self.current_tick_entity = entity entity:tickDay() elseif class.is(entity, Plant) then entity:tickDay() end end self.current_tick_entity = nil --check if it's time for a VIP visit if (self.year - 1) * 12 + self.month == self.next_vip_month and self.day == self.next_vip_day then if #self.rooms > 0 and self.ui.hospital:hasStaffedDesk() then self.hospitals[1]:createVip() else self:nextVip() end end -- check if it's time for an earthquake, and the user is at least on level 5 if (self.year - 1) * 12 + self.month == self.next_earthquake.start_month and self.day == self.next_earthquake.start_day then -- warn the user that an earthquake is on the way self.next_earthquake.active = true end -- Maybe it's time for an emergency? if (self.year - 1) * 12 + self.month == self.next_emergency_month and self.day == self.next_emergency_day then -- Postpone it if anything clock related is already underway. if self.ui:getWindow(UIWatch) then self.next_emergency_month = self.next_emergency_month + 1 local month_of_year = 1 + ((self.next_emergency_month - 1) % 12) self.next_emergency_day = math.random(1, month_length[month_of_year]) else -- Do it only for the player hospital for now. TODO: Multiplayer local control = self.map.level_config.emergency_control if control[0].Mean or control[0].Random then -- The level uses random emergencies, so just create one. self.hospitals[1]:createEmergency() else control = control[self.next_emergency_no] -- Find out which disease the emergency patients have. local disease for _, dis in ipairs(self.available_diseases) do if dis.expertise_id == control.Illness then disease = dis break end end if not disease then -- Unknown disease! Create a random one instead. self.hospitals[1]:createEmergency() else local emergency = { disease = disease, victims = math.random(control.Min, control.Max), bonus = control.Bonus, percentage = control.PercWin/100, killed_emergency_patients = 0, cured_emergency_patients = 0, } self.hospitals[1]:createEmergency(emergency) end end end end -- Any patients tomorrow? self.spawn_hours = {} if self.spawn_dates[self.day] then for _ = 1, self.spawn_dates[self.day] do local hour = math.random(1, self.hours_per_day) self.spawn_hours[hour] = self.spawn_hours[hour] and self.spawn_hours[hour] + 1 or 1 end end -- TODO: Do other regular things? Such as checking if any room needs -- staff at the moment and making plants need water. end function World:checkIfGameWon() for i, _ in ipairs(self.hospitals) do local res = self:checkWinningConditions(i) if res.state == "win" then self:winGame(i) end end end -- Called immediately prior to the ingame month changing. -- returns true if the game was killed due to the player losing function World:onEndMonth() -- Check if a player has won the level if the year hasn't ended, if it has the -- annual report window will perform this check when it has been closed. -- TODO.... this is a step closer to the way TH would check. -- What is missing is that if offer is declined then the next check should be -- either 6 months later or at the end of month 12 and then every 6 months if self.month % 3 == 0 and self.month < 12 then self:checkIfGameWon() end local local_hospital = self:getLocalPlayerHospital() local_hospital.population = 0.25 if self.month >= self.map.level_config.gbv.AllocDelay then local_hospital.population = local_hospital.population * self:getReputationImpact(local_hospital) end -- Also possibly change world spawn rate according to the level configuration. local index = 0 local popn = self.map.level_config.popn while popn[index] do if popn[index].Month == self.month + (self.year - 1)*12 then self.monthly_spawn_increase = popn[index].Change break end index = index + 1 end -- Now set the new spawn rate self.spawn_rate = self.spawn_rate + self.monthly_spawn_increase self:updateSpawnDates() self:makeAvailableStaff((self.year - 1) * 12 + self.month) self.autosave_next_tick = true for _, entity in ipairs(self.entities) do if entity.checkForDeadlock then self.current_tick_entity = entity entity:checkForDeadlock() end end self.current_tick_entity = nil end -- Called when a month ends. Decides on which dates patients arrive -- during the coming month. function World:updateSpawnDates() -- Set dates when people arrive local no_of_spawns = math.n_random(self.spawn_rate, 2) -- Use ceil so that at least one patient arrives (unless population = 0) no_of_spawns = math.ceil(no_of_spawns*self:getLocalPlayerHospital().population) self.spawn_dates = {} for _ = 1, no_of_spawns do -- We are interested in the next month, pick days from it at random. local day = math.random(1, month_length[self.month % 12 + 1]) self.spawn_dates[day] = self.spawn_dates[day] and self.spawn_dates[day] + 1 or 1 end end --! Computes the impact of hospital reputation on the spawn rate. --! The relation between reputation and its impact is linear. --! Returns a percentage (as a float): --! 1% if reputation < 253 --! 60% if reputation == 400 --! 100% if reputation == 500 --! 140% if reputation == 600 --! 180% if reputation == 700 --! 300% if reputation == 1000 --!param hospital (hospital): the hospital used to compute the --! reputation impact function World:getReputationImpact(hospital) local result = 1 + ((hospital.reputation - 500) / 250) -- The result must be positive if result <= 0 then return 0.01 else return result end end -- Called when it is time to determine what the -- next emergency should look like. function World:nextEmergency() local control = self.map.level_config.emergency_control local current_month = (self.year - 1) * 12 + self.month -- Does this level use random emergencies? if control and (control[0].Random or control[0].Mean) then -- Support standard values for mean and variance local mean = control[0].Mean or 180 local variance = control[0].Variance or 30 -- How many days until next emergency? local days = math.round(math.n_random(mean, variance)) local next_month = self.month -- Walk forward to get the resulting month and day. if days > month_length[next_month] - self.day then days = days - (month_length[next_month] - self.day) next_month = next_month + 1 end while days > month_length[(next_month - 1) % 12 + 1] do days = days - month_length[(next_month - 1) % 12 + 1] next_month = next_month + 1 end -- Make it the same format as for "controlled" emergencies self.next_emergency_month = next_month + (self.year - 1) * 12 self.next_emergency_day = days else if not self.next_emergency_no then self.next_emergency_no = 0 else repeat self.next_emergency_no = self.next_emergency_no + 1 -- Level three is missing [5]. if not control[self.next_emergency_no] and control[self.next_emergency_no + 1] then self.next_emergency_no = self.next_emergency_no + 1 end until not control[self.next_emergency_no] or control[self.next_emergency_no].EndMonth >= current_month end local emergency = control[self.next_emergency_no] -- No more emergencies? if not emergency or emergency.EndMonth == 0 then self.next_emergency_month = 0 else -- Generate the next month and day the emergency should occur at. -- Make sure it doesn't happen in the past. local start = math.max(emergency.StartMonth, self.month + (self.year - 1) * 12) local next_month = math.random(start, emergency.EndMonth) self.next_emergency_month = next_month local day_start = 1 if start == emergency.EndMonth then day_start = self.day end local day_end = month_length[(next_month - 1) % 12 + 1] self.next_emergency_day = math.random(day_start, day_end) end end end -- Called when it is time to have another VIP function World:nextVip() -- Support standard values for mean and variance local mean = 180 local variance = 30 -- How many days until next vip? local days = math.round(math.n_random(mean, variance)) local next_month = self.month -- Walk forward to get the resulting month and day. if days > month_length[next_month] - self.day then days = days - (month_length[next_month] - self.day) next_month = next_month + 1 end while days > month_length[(next_month - 1) % 12 + 1] do days = days - month_length[(next_month - 1) % 12 + 1] next_month = next_month + 1 end self.next_vip_month = next_month + (self.year - 1) * 12 self.next_vip_day = days end -- Called when it is time to have another earthquake function World:nextEarthquake() self.next_earthquake = {} self.next_earthquake.active = false local level_config = self.map.level_config -- check carefully that no value that we are going to use is going to be nil if level_config.quake_control and level_config.quake_control[self.current_map_earthquake] and level_config.quake_control[self.current_map_earthquake].Severity ~= 0 then -- this map has rules to follow when making earthquakes, let's follow them local control = level_config.quake_control[self.current_map_earthquake] self.next_earthquake.start_month = math.random(control.StartMonth, control.EndMonth) -- Month length of the start of the earthquake. From start to finish -- earthquakes do not persist for >= a month so we can wrap all days -- after the start around the month length unambiguously. local eqml = month_length[(self.next_earthquake.start_month % 12) + 1] self.next_earthquake.start_day = math.random(1, eqml) self.next_earthquake.size = control.Severity self.next_earthquake.remaining_damage = self.next_earthquake.size self.next_earthquake.damage_timer = earthquake_damage_time self.next_earthquake.warning_timer = earthquake_warning_period self.current_map_earthquake = self.current_map_earthquake + 1 end end --! Checks if all goals have been achieved or if the player has lost. --! Returns a table that always contains a state string ("win", "lose" or "nothing"). --! If the state is "lose", the table also contains a reason string, --! which corresponds to the criterion name the player lost to --! (reputation, balance, percentage_killed) and a number limit which --! corresponds to the limit the player passed. --!param player_no The index of the player to check in the world's list of hospitals function World:checkWinningConditions(player_no) -- If there are no goals at all, do nothing. if #self.goals == 0 then return {state = "nothing"} end -- Default is to win. -- As soon as a goal that doesn't support this is found it is changed. local result = {state = "win"} local hospital = self.hospitals[player_no] -- Go through the goals for _, goal in ipairs(self.goals) do local current_value = hospital[goal.name] -- If max_min is 1 the value must be > than the goal condition. -- If 0 it must be < than the goal condition. if goal.lose_value then local max_min = goal.max_min_lose == 1 and 1 or -1 -- Is this a minimum/maximum that has been passed? -- This is actually not entirely correct. A lose condition -- for balance at -1000 will make you lose if you have exactly -- -1000 too, but how often does that happen? Probably not more often -- than having exactly e.g. 200 in reputation, -- which is handled correctly. if (current_value - goal.lose_value) * max_min > 0 then result.state = "lose" result.reason = goal.name result.limit = goal.lose_value break end end if goal.win_value then local max_min = goal.max_min_win == 1 and 1 or -1 -- Special case for balance, subtract any loans! if goal.name == "balance" then current_value = current_value - hospital.loan end -- Is this goal not fulfilled yet? if (current_value - goal.win_value) * max_min <= 0 then result.state = "nothing" end end end return result end --! Process that the given player number won the game. --!param player_no (integer) Number of the player who just won. function World:winGame(player_no) if player_no == 1 then -- Player won. TODO: Needs to be changed for multiplayer local text = {} local choice_text, choice local bonus_rate = math.random(4,9) local with_bonus = self.ui.hospital.cheated and 0 or (self.ui.hospital.player_salary * bonus_rate) / 100 self.ui.hospital.salary_offer = math.floor(self.ui.hospital.player_salary + with_bonus) if type(self.map.level_number) == "number" or self.campaign_info then text, choice_text, choice = self:getCampaignWinningText(player_no) else local level_info = TheApp:readLevelFile(self.map.level_number) text[1] = _S.letter.dear_player:format(self.hospitals[player_no].name) text[2] = level_info.end_praise and level_info.end_praise or _S.letter.custom_level_completed text[3] = _S.letter.return_to_main_menu choice_text = _S.fax.choices.return_to_main_menu choice = "return_to_main_menu" end local message = { {text = text[1]}, {text = text[2]}, {text = text[3]}, choices = { {text = choice_text, choice = choice}, {text = _S.fax.choices.decline_new_level, choice = "stay_on_level"}, }, } local --[[persistable:world_win_game_message_close_callback]] function callback () local world = self.ui.app.world if world then world.hospitals[player_no].game_won = false if world:isCurrentSpeed("Pause") then world:setSpeed(world.prev_speed) end end end self.hospitals[player_no].game_won = true if self:isCurrentSpeed("Speed Up") then self:previousSpeed() end self:setSpeed("Pause") self.ui.app.video:setBlueFilterActive(false) self.ui.bottom_panel:queueMessage("information", message, nil, 0, 2, callback) self.ui.bottom_panel:openLastMessage() end end --! Finds what text the winning fax should contain, and which choices the player has. --!param player_no (integer) Which player that will see the message. --!return (string, string, string) Text to show in the fax, text that accompanies --! the "continue"-choice the player has, and whether it is the "return_to_main_menu" --! choice or the "accept_new_level" choice. function World:getCampaignWinningText(player_no) local text = {} local choice_text, choice local repeated_offer = false -- TODO whether player was asked previously to advance and declined local has_next = false if type(self.map.level_number) == "number" then local no = tonumber(self.map.level_number) has_next = no < 12 and not TheApp.using_demo_files -- Standard letters 1-4: normal -- Standard letters 5-8: repeated offer -- Standard letters 9-12: last level local letter_idx = math.random(1, 4) + (not has_next and 8 or repeated_offer and 4 or 0) for key, value in ipairs(_S.letter[letter_idx]) do text[key] = value end text[1] = text[1]:format(self.hospitals[player_no].name) text[2] = text[2]:format(self.hospitals[player_no].salary_offer) text[3] = text[3]:format(_S.level_names[self.map.level_number + 1]) else local campaign_info = self.campaign_info local next_level_name if campaign_info then for i, level in ipairs(campaign_info.levels) do if self.map.level_number == level then has_next = i < #campaign_info.levels if has_next then local next_level_info = TheApp:readLevelFile(campaign_info.levels[i + 1]) if not next_level_info then return {_S.letter.campaign_level_missing:format(campaign_info.levels[i + 1]), "", ""}, _S.fax.choices.return_to_main_menu, "return_to_main_menu" end next_level_name = next_level_info.name end break end end end local level_info = TheApp:readLevelFile(self.map.level_number) text[1] = _S.letter.dear_player:format(self.hospitals[player_no].name) if has_next then text[2] = level_info.end_praise and level_info.end_praise:format(next_level_name) or _S.letter.campaign_level_completed:format(next_level_name) text[3] = "" else text[2] = campaign_info.winning_text and campaign_info.winning_text or _S.letter.campaign_completed text[3] = "" end end if has_next then choice_text = _S.fax.choices.accept_new_level choice = "accept_new_level" else choice_text = _S.fax.choices.return_to_main_menu choice = "return_to_main_menu" end return text, choice_text, choice end --! Cause the player with the player number player_no to lose. --!param player_no (number) The number of the player which should lose. --!param reason (string) [optional] The name of the criterion the player lost to. --!param limit (number) [optional] The number the player went over/under which caused him to lose. function World:loseGame(player_no, reason, limit) if player_no == 1 then -- TODO: Multiplayer self.ui.app.moviePlayer:playLoseMovie() local message = {_S.information.level_lost[1]} if reason then message[2] = _S.information.level_lost[2] message[3] = _S.information.level_lost[reason]:format(limit) else message[2] = _S.information.level_lost["cheat"] end self.ui.app:loadMainMenu(message) end end -- Called immediately prior to the ingame year changing. function World:onEndYear() for _, hospital in ipairs(self.hospitals) do hospital:onEndYear() end -- This is done here instead of in onEndMonth so that the player gets -- the chance to receive money or reputation from trophies and awards first. for i, _ in ipairs(self.hospitals) do local res = self:checkWinningConditions(i) if res.state == "lose" then self:loseGame(i, res.reason, res.limit) if i == 1 then return true end end end end -- Calculate the distance of the shortest path (along passable tiles) between -- the two given map tiles. This operation is commutative (swapping (x1, y1) -- with (x2, y2) has no effect on the result) if both tiles are passable. --!param x1 (integer) X-cordinate of first tile's Lua tile co-ordinates. --!param y1 (integer) Y-cordinate of first tile's Lua tile co-ordinates. --!param x2 (integer) X-cordinate of second tile's Lua tile co-ordinates. --!param y2 (integer) Y-cordinate of second tile's Lua tile co-ordinates. --!return (integer, boolean) The distance of the shortest path, or false if -- there is no path. function World:getPathDistance(x1, y1, x2, y2) return self.pathfinder:findDistance(x1, y1, x2, y2) end function World:getPath(x, y, dest_x, dest_y) return self.pathfinder:findPath(x, y, dest_x, dest_y) end function World:getIdleTile(x, y, idx) local cache_idx = (y - 1) * self.map.width + x local cache = self.idle_cache[cache_idx] if not cache then cache = { x = {}, y = {}, } self.idle_cache[cache_idx] = cache end if not cache.x[idx] then local ix, iy = self.pathfinder:findIdleTile(x, y, idx) if not ix then return ix, iy end cache.x[idx] = ix cache.y[idx] = iy end return cache.x[idx], cache.y[idx] end --[[ This function checks if a tile has no entity on it and (optionally) if it is not in a room. !param x (integer) the queried tile's x coordinate. !param y (integer) the queried tile's y coordinate. !param not_in_room (boolean) If set, also check the tile is not in a room. !return (boolean) whether all checks hold. --]] function World:isTileEmpty(x, y, not_in_room) if #self.entity_map:getHumanoidsAtCoordinate(x, y) ~= 0 or #self.entity_map:getObjectsAtCoordinate(x, y) ~= 0 then return false end if not_in_room then return self:getRoom(x, y) == nil end return true end function World:getFreeBench(x, y, distance) local bench, rx, ry, bench_distance local object_type = self.object_types.bench x, y, distance = math.floor(x), math.floor(y), math.ceil(distance) self.pathfinder:findObject(x, y, object_type.thob, distance, function(xpos, ypos, d, dist) local b = self:getObject(xpos, ypos, "bench") if b and not b.user and not b.reserved_for then local orientation = object_type.orientations[b.direction] if orientation.pathfind_allowed_dirs[d] then rx = xpos + orientation.use_position[1] ry = ypos + orientation.use_position[2] bench = b bench_distance = dist return true end end end) return bench, rx, ry, bench_distance end --! Checks whether the given tile is part of a nearby object (walkable tiles -- count as part of the object) --!param x X position of the given tile. --!param y Y position of the given tile. --!param distance The number of tiles away from the tile to search. --!return (boolean) Whether the tile is part of a nearby object. function World:isTilePartOfNearbyObject(x, y, distance) for o in pairs(self:findAllObjectsNear(x, y, distance)) do for _, xy in ipairs(o:getWalkableTiles()) do if xy[1] == x and xy[2] == y then return true end end end return false end -- Returns a set of all objects near the given position but if supplied only of the given object type. --!param x The x-coordinate at which to originate the search --!param y The y-coordinate --!param distance The number of tiles away from the origin to search --!param object_type_name The name of the objects that are being searched for function World:findAllObjectsNear(x, y, distance, object_type_name) if not distance then -- Note that regardless of distance, only the room which the humanoid is in -- is searched (or the corridor if the humanoid is not in a room). distance = 2^30 end local objects = {} local thob = 0 if object_type_name then local obj_type = self.object_types[object_type_name] if not obj_type then error("Invalid object type name: " .. object_type_name) end thob = obj_type.thob end local callback = function(xpos, ypos, d) local obj = self:getObject(xpos, ypos, object_type_name) if obj then objects[obj] = true end end self.pathfinder:findObject(x, y, thob, distance, callback) return objects end --[[ Find all objects of the given type near the humanoid. Note that regardless of distance, only the room which the humanoid is in is searched (or the corridor if the humanoid is not in a room). When no callback is specified then the first object found is returned, along with its usage tile position. This may return an object already being used - if you want to find an object not in use (in order to use it), then call findFreeObjectNearToUse instead. !param humanoid The humanoid to search around !param object_type_name The objects to search for !param distance Maximum L1 distance to search from humanoid. If nil then everywhere in range will be searched. !param callback Function to call for each result. If it returns true then the search will be ended. --]] function World:findObjectNear(humanoid, object_type_name, distance, callback) if not distance then distance = 2^30 end local obj, ox, oy if not callback then -- The default callback returns the first object found callback = function(x, y, d) obj = self:getObject(x, y, object_type_name) local orientation = obj.object_type.orientations if orientation then orientation = orientation[obj.direction] if not orientation.pathfind_allowed_dirs[d] then return end x = x + orientation.use_position[1] y = y + orientation.use_position[2] end ox = x oy = y return true end end local thob = 0 if type(object_type_name) == "table" then local original_callback = callback callback = function(x, y, ...) local cb_obj = self:getObject(x, y, object_type_name) if cb_obj then return original_callback(x, y, ...) end end elseif object_type_name ~= nil then local obj_type = self.object_types[object_type_name] if not obj_type then error("Invalid object type name: " .. object_type_name) end thob = obj_type.thob end self.pathfinder:findObject(humanoid.tile_x, humanoid.tile_y, thob, distance, callback) -- These return values are only relevant for the default callback - are nil -- for custom callbacks return obj, ox, oy end function World:findFreeObjectNearToUse(humanoid, object_type_name, which, current_object) -- If which == nil or false, then the nearest object is taken. -- If which == "far", then the furthest object is taken. -- If which == "near", then the nearest object is taken with 50% probability, the second nearest with 25%, and so on -- Other values for which may be added in the future. -- Specify current_object if you want to exclude the currently used object from the search local object, ox, oy self:findObjectNear(humanoid, object_type_name, nil, function(x, y, d) local obj = self:getObject(x, y, object_type_name) if obj.user or (obj.reserved_for and obj.reserved_for ~= humanoid) or (current_object and obj == current_object) then return end local orientation = obj.object_type.orientations if orientation then orientation = orientation[obj.direction] if not orientation.pathfind_allowed_dirs[d] then return end x = x + orientation.use_position[1] y = y + orientation.use_position[2] end object = obj ox = x oy = y if which == "far" then -- just take the last found object, so don't ever abort elseif which == "near" then -- abort at each item with 50% probability local chance = math.random(1, 2) if chance == 1 then return true end else -- default: return at the first found item return true end end) return object, ox, oy end function World:findRoomNear(humanoid, room_type_id, distance, mode) -- If mode == "nearest" (or nil), the nearest room is taken -- If mode == "advanced", prefer a near room, but also few patients and fulfilled staff criteria local room local score if not mode then mode = "nearest" -- default mode end if not distance then distance = 2^30 end for _, r in pairs(self.rooms) do repeat if r.built and (not room_type_id or r.room_info.id == room_type_id) and r.is_active then local x, y = r:getEntranceXY(false) local d = self:getPathDistance(humanoid.tile_x, humanoid.tile_y, x, y) if not d or d > distance then break -- continue end local this_score = d if mode == "advanced" then this_score = this_score + r:getUsageScore() end if not score or this_score < score then score = this_score room = r end end until true end return room end --! Setup an animated floating money amount above a patient. --!param patient Patient to float above. --!param amount Amount of money to display. function World:newFloatingDollarSign(patient, amount) if not self.floating_dollars then self.floating_dollars = {} end if self.free_build_mode then return end local spritelist = TH.spriteList() spritelist:setPosition(-17, -60) spritelist:setSpeed(0, -1):setLifetime(100) spritelist:setSheet(TheApp.gfx:loadSpriteTable("Data", "Money01V")) spritelist:append(1, 0, 0) local len = #("%i"):format(amount) local xbase = math.floor(10.5 + (20 - 5 * len) / 2) for i = 1, len do local digit = amount % 10 amount = (amount - digit) / 10 spritelist:append(2 + digit, xbase + 5 * (len - i), 5) end spritelist:setTile(self.map.th, patient.tile_x, patient.tile_y) self.floating_dollars[spritelist] = true end function World:newEntity(class, animation) local th = TH.animation() th:setAnimation(self.anims, animation) local entity = _G[class](th) self.entities[#self.entities + 1] = entity entity.world = self return entity end function World:destroyEntity(entity) for i, e in ipairs(self.entities) do if e == entity then table.remove(self.entities, i) break end end entity:onDestroy() end function World:newObjectType(new_object) self.object_types[new_object.id] = new_object end --! Creates a new object by finding the object_type from the "id" variable and -- calls its class constructor. --!param id (string) The unique id of the object to be created. --!return The created object. function World:newObject(id, ...) local object_type = self.object_types[id] local entity if object_type.class then entity = _G[object_type.class](self, object_type, ...) elseif object_type.default_strength then entity = Machine(self, object_type, ...) -- Tell the player if there is no handyman to take care of the new machinery. if not self.hospitals[1]:hasStaffOfCategory("Handyman") then self.ui.adviser:say(_A.staff_advice.need_handyman_machines) end else entity = Object(self, object_type, ...) end self:objectPlaced(entity, id) return entity end function World:canNonSideObjectBeSpawnedAt(x, y, objects_id, orientation, spawn_rooms_id, player_id) local object = self.object_types[objects_id] local objects_footprint = object.orientations[orientation].footprint for _, tile in ipairs(objects_footprint) do local tiles_world_x = x + tile[1] local tiles_world_y = y + tile[2] if not self:isOnMap(tiles_world_x, tiles_world_y) then return false end if not self:willObjectsFootprintTileBeWithinItsAllowedRoomIfLocatedAt(x, y, object, spawn_rooms_id).within_room then return false end if not self:isFootprintTileBuildableOrPassable(x, y, tile, objects_footprint, "buildable", player_id) then return false end end return not self:wouldNonSideObjectBreakPathfindingIfSpawnedAt(x, y, object, orientation, spawn_rooms_id) end --! Test whether the given coordinate is on the map. --!param x (int) X position of the coordinate to test. --!param y (int) Y position of the coordinate to test. --!return (boolean) Whether the provided position is on the map. function World:isOnMap(x, y) return x >= 1 and x <= self.map.width and y >= 1 and y <= self.map.height end --- -- @param allowed_rooms_id_parameter Should be nil when the object is allowed to be placed in any room. -- @return {within_room, roomId} --- function World:willObjectsFootprintTileBeWithinItsAllowedRoomIfLocatedAt(x, y, object, allowed_rooms_id_parameter) local xy_rooms_id = self.map.th:getCellFlags(x, y, {}).roomId if allowed_rooms_id_parameter then return {within_room = allowed_rooms_id_parameter == xy_rooms_id, roomId = allowed_rooms_id_parameter} elseif xy_rooms_id == 0 then return {within_room = object.corridor_object ~= nil, roomId = xy_rooms_id} else for _, additional_objects_name in pairs(self.rooms[xy_rooms_id].room_info.objects_additional) do if TheApp.objects[additional_objects_name].thob == object.thob then return {within_room = true, roomId = xy_rooms_id} end end for needed_objects_name, _ in pairs(self.rooms[xy_rooms_id].room_info.objects_needed) do if TheApp.objects[needed_objects_name].thob == object.thob then return {within_room = true, roomId = xy_rooms_id} end end return {within_room = false, roomId = xy_rooms_id} end end --- -- A footprint tile will either need to be buildable or passable so this function -- checks if its buildable/passable using the tile's appropriate flag and then returns this -- flag's boolean value or false if the tile isn't valid. --- function World:isFootprintTileBuildableOrPassable(x, y, tile, footprint, requirement_flag, player_id) local function isTileValid(xpos, ypos, complete_cell, flags, flag_name, need_side) if complete_cell or need_side then return flags[flag_name] end for _, fp_tile in ipairs(footprint) do if fp_tile[1] == xpos and fp_tile[2] == ypos then return flags[flag_name] end end return true end local direction_parameters = { north = { x = 0, y = -1, buildable_flag = "buildableNorth", passable_flag = "travelNorth", needed_side = "need_north_side"}, east = { x = 1, y = 0, buildable_flag = "buildableEast", passable_flag = "travelEast", needed_side = "need_east_side"}, south = { x = 0, y = 1, buildable_flag = "buildableSouth", passable_flag = "travelSouth", needed_side = "need_south_side"}, west = { x = -1, y = 0, buildable_flag = "buildableWest", passable_flag = "travelWest", needed_side = "need_west_side"} } local flags = {} local requirement_met = self.map.th:getCellFlags(x, y, flags)[requirement_flag] and (player_id == 0 or player_id == flags.owner) if requirement_met then -- For each direction check that the tile is valid: for _, direction in pairs(direction_parameters) do local x1, y1 = tile[1] + direction["x"], tile[2] + direction["y"] if not isTileValid(x1, y1, tile.complete_cell, flags, direction["buildable_flag"], tile[direction["needed_side"]]) then return false end end return true else return false end end --- -- Check that pathfinding still works, i.e. that placing the object -- wouldn't disconnect one part of the hospital from another. To do -- this, we provisionally mark the footprint as unpassable (as it will -- become when the object is placed), and then check that the cells -- surrounding the footprint have not had their connectedness changed. --- function World:wouldNonSideObjectBreakPathfindingIfSpawnedAt(x, y, object, objects_orientation, spawn_rooms_id) local objects_footprint = object.orientations[objects_orientation].footprint local map = self.map.th local function setFootprintTilesPassable(passable) for _, tile in ipairs(objects_footprint) do if not tile.only_passable then map:setCellFlags(x + tile[1], y + tile[2], {passable = passable}) end end end local function isIsolated(xpos, ypos) setFootprintTilesPassable(false) local result = not self.pathfinder:isReachableFromHospital(xpos, ypos) setFootprintTilesPassable(true) return result end local all_good = true --1. Find out which footprint tiles are passable now before this function makes some unpassable --during its test: local tiles_passable_flags = {} for _, tile in ipairs(objects_footprint) do table.insert(tiles_passable_flags, map:getCellFlags(x + tile[1], y + tile[2], {}).passable) end --2. Find out which tiles adjacent to the footprint would become isolated: setFootprintTilesPassable(false) local prev_x, prev_y for _, tile in ipairs(object.orientations[objects_orientation].adjacent_to_solid_footprint) do local xpos = x + tile[1] local ypos = y + tile[2] local flags = {} if map:getCellFlags(xpos, ypos, flags).roomId == spawn_rooms_id and flags.passable then if prev_x then if not self.pathfinder:findDistance(xpos, ypos, prev_x, prev_y) then -- There is no route between the two map nodes. In most cases, -- this means that connectedness has changed, though there is -- one rare situation where the above test is insufficient. If -- (xpos, ypos) is a passable but isolated node outside the hospital -- and (prev_x, prev_y) is in the corridor, then the two will -- not be connected now, but critically, neither were they -- connected before. if not isIsolated(xpos, ypos) then if not isIsolated(prev_x, prev_y) then all_good = false break end else xpos = prev_x ypos = prev_y end end end prev_x = xpos prev_y = ypos end end -- 3. For each footprint tile passable flag set to false by step 2 undo this change: for tiles_index, tile in ipairs(objects_footprint) do map:setCellFlags(x + tile[1], y + tile[2], {passable = tiles_passable_flags[tiles_index]}) end return not all_good end --! Notifies the world that an object has been placed, notifying -- interested entities in the vicinity of the new arrival. --!param entity (Entity) The entity that was just placed. --!param id (string) That entity's id. function World:objectPlaced(entity, id) -- If id is not supplied, we can use the entities internal id if it exists -- This is so the bench check below works -- see place_object.lua:UIPlaceObjects:placeObject for call w/o id --cgj if not id and entity.object_type.id then id = entity.object_type.id end self.entities[#self.entities + 1] = entity -- If it is a bench we're placing, notify queueing patients in the vicinity if id == "bench" and entity.tile_x and entity.tile_y then local notify_distance = 6 local w, h = self.map.th:size() for tx = math.max(1, entity.tile_x - notify_distance), math.min(w, entity.tile_x + notify_distance) do for ty = math.max(1, entity.tile_y - notify_distance), math.min(h, entity.tile_y + notify_distance) do for _, patient in ipairs(self.entity_map:getHumanoidsAtCoordinate(tx, ty)) do if class.is(patient, Patient) then patient:notifyNewObject(id) end end end end end if id == "reception_desk" then if not self.ui.start_tutorial and not self.hospitals[1]:hasStaffOfCategory("Receptionist") then -- TODO: Will not work correctly for multiplayer self.ui.adviser:say(_A.room_requirements.reception_need_receptionist) elseif self.hospitals[1]:hasStaffOfCategory("Receptionist") and self.object_counts["reception_desk"] == 1 and not self.hospitals[1].receptionist_msg and self.month > 3 then self.ui.adviser:say(_A.warnings.no_desk_5) self.hospitals[1].receptionist_msg = true end end -- If it is a plant it might be advisable to hire a handyman if id == "plant" and not self.hospitals[1]:hasStaffOfCategory("Handyman") then self.ui.adviser:say(_A.staff_advice.need_handyman_plants) end if id == "gates_to_hell" then entity:playEntitySounds("LAVA00*.WAV", {0,1350,1150,950,750,350}, {0,1450,1250,1050,850,450}, 40) entity:setTimer(entity.world:getAnimLength(2550), --[[persistable:lava_hole_spawn_animation_end]] function(anim_entity) anim_entity:setAnimation(1602) end) entity:setAnimation(2550) end end --! Notify the world of an object being removed from a tile --! See also `World:addObjectToTile` --!param object (Object) The object being removed. --!param x (integer) The X-coordinate of the tile which the object was on --!param y (integer) The Y-coordinate of the tile which the object was on function World:removeObjectFromTile(object, x, y) local index = (y - 1) * self.map.width + x local objects = self.objects[index] local thob = object.object_type.thob if objects then for k, v in ipairs(objects) do if v == object then table_remove(objects, k) self.map.th:removeObjectType(x, y, thob) local count_cat = object.object_type.count_category if count_cat then self.object_counts[count_cat] = self.object_counts[count_cat] - 1 end return true end end end return false end --! Notify the world of a new object being placed somewhere in the world --! See also `World:removeObjectFromTile` --!param object (Object) The object being placed --!param x (integer) The X-coordinate of the tile being placed upon --!param y (integer) The Y-coordinate of the tile being placed upon function World:addObjectToTile(object, x, y) local index = (y - 1) * self.map.width + x local objects = self.objects[index] if objects then self.map.th:setCellFlags(x, y, {thob = object.object_type.thob}) objects[#objects + 1] = object else objects = {object} self.objects[index] = objects self.map.th:setCellFlags(x, y, {thob = object.object_type.thob}) end local count_cat = object.object_type.count_category if count_cat then self.object_counts[count_cat] = self.object_counts[count_cat] + 1 end return true end --! Retrieve all objects from a given position. --!param x (int) X position of the object to retrieve. --!param y (int) Y position of the object to retrieve. function World:getObjects(x, y) local index = (y - 1) * self.map.width + x return self.objects[index] end --! Retrieve one object from a given position. --!param x (int) X position of the object to retrieve. --!param y (int) Y position of the object to retrieve. --!param id Id to search, nil gets first object, string gets first object with --! that id, set of strings gets first object that matches an entry in the set. --!return (Object or nil) The found object, or nil if the object is not found. function World:getObject(x, y, id) local objects = self:getObjects(x, y) if objects then if not id then return objects[1] elseif type(id) == "table" then for _, obj in ipairs(objects) do if id[obj.object_type.id] then return obj end end else for _, obj in ipairs(objects) do if obj.object_type.id == id then return obj end end end end return -- nil end --! Remove all cleanable litter from a given tile. --!param x (int) X position of the tile to clean. --!param y (int) Y position of the tile to clean. function World:removeAllLitter(x, y) local litters = {} local objects = self:getObjects(x, y) if not objects then return end for _, obj in ipairs(objects) do if obj.object_type.id == "litter" and obj:isCleanable() then litters[#litters + 1] = obj end end for _, litter in ipairs(litters) do litter:remove() end end --! Prepare all tiles of the footprint for build of an object. --!param object_footprint Footprint of the object being build. --!param x (int) X position of the object --!param y (int) Y position of the object function World:prepareFootprintTilesForBuild(object_footprint, x, y) local hospital = self:getLocalPlayerHospital() for _, tile in ipairs(object_footprint) do if tile.complete_cell or not (tile.passable or tile.only_passable) then self:removeAllLitter(x + tile[1], y + tile[2]) hospital:removeRatholeXY(x + tile[1], y + tile[2]) end end end --! Prepare all tiles in the given rectangle for building a room. --!param x (int) Start x position of the area. --!param y (int) Start y position of the area. --!param w (int) Number of tiles in x direction. --!param h (int) Number of tiles in y direction. function World:prepareRectangleTilesForBuild(x, y, w, h) local hospital = self:getLocalPlayerHospital() x = x - 1 y = y - 1 for dx = 1, w do for dy = 1, h do self:removeAllLitter(x + dx, y + dy) if dx == 1 or dx == w or dy == 1 or dy == h then hospital:removeRatholeXY(x + dx, y + dy) end end end end --! Get the room at a given tile location. --!param x (int) X position of the queried tile. --!param y (int) Y position of the queried tile. --!return (Room) Room of the tile, or 'nil'. function World:getRoom(x, y) return self.rooms[self.map:getRoomId(x, y)] end --! Get the hospital at a given tile location. --!param x (int) X position of the queried tile. --!param y (int) Y position of the queried tile. --!return (Hospital) Hospital at the given location or 'nil'. function World:getHospital(x, y) local th = self.map.th local flags = th:getCellFlags(x, y) if not flags.hospital then return nil end return self.hospitals[flags.owner] end --! Returns localized name of the room, internal required staff name -- and localized name of staff required. function World:getRoomNameAndRequiredStaffName(room_id) local room_name, required_staff, staff_name for _, room in ipairs(TheApp.rooms) do if room.id == room_id then room_name = room.name required_staff = room.required_staff end end for key, _ in pairs(required_staff) do staff_name = key end required_staff = staff_name -- This is the "programmatic" name of the staff. if staff_name == "Nurse" then staff_name = _S.staff_title.nurse elseif staff_name == "Psychiatrist" then staff_name = _S.staff_title.psychiatrist elseif staff_name == "Researcher" then staff_name = _S.staff_title.researcher elseif staff_name == "Surgeon" then staff_name = _S.staff_title.surgeon elseif staff_name == "Doctor" then staff_name = _S.staff_title.doctor end return room_name, required_staff, staff_name end --! Append a message to the game log. --!param message (string) The message to add. function World:gameLog(message) self.game_log[#self.game_log + 1] = message -- If in debug mode also show it in the command prompt if TheApp.config.debug then print(message) end end --! Dump the contents of the game log into a file. -- This is automatically done on each error. function World:dumpGameLog() local config_path = TheApp.command_line["config-file"] or "" local pathsep = package.config:sub(1, 1) config_path = config_path:match("^(.-)[^" .. pathsep .. "]*$") local gamelog_path = config_path .. "gamelog.txt" local fi, err = io.open(gamelog_path, "w") if fi then for _, str in ipairs(self.game_log) do fi:write(str .. "\n") end fi:close() else print("Warning: Cannot dump game log: " .. tostring(err)) end end --! Because the save file only saves one thob per tile if they are more that information -- will be lost. To solve this after a load we need to set again all the thobs on each tile. function World:resetAnimations() -- Erase entities from the map if they want. for _, entity in ipairs(self.entities) do entity:eraseObject() end -- Add them again. for _, entity in ipairs(self.entities) do entity:resetAnimation() end end --! Let the world react to and old save game. First it gets the chance to -- do things for itself, and then it calls corresponding functions for -- the hospitals, entities and rooms in that order. --!param old The old version of the save game. --!param new The current version of the save game format. function World:afterLoad(old, new) if not self.original_savegame_version then self.original_savegame_version = old end -- If the original save game version is considerably lower than the current, warn the player. if new - 20 > self.original_savegame_version then self.ui:addWindow(UIInformation(self.ui, {_S.information.very_old_save})) end -- insert global compatibility code here if old < 4 then self.room_built = {} end if old < 6 then -- Calculate hospital value -- Initial value local value = self.map.parcelTileCounts[self.hospitals[1]:getPlayerIndex()] * 25 + 20000 -- Add room values for _, room in pairs(self.rooms) do local valueChange = room.room_info.build_cost -- Subtract values of objects in rooms to avoid calculating those object values twice for obj, num in pairs(room.room_info.objects_needed) do valueChange = valueChange - num * TheApp.objects[obj].build_cost end value = value + valueChange end -- Add up all object values for _, object in ipairs(self.entities) do if class.is(object, Object) and object.object_type.build_cost then value = value + object.object_type.build_cost end end self.hospitals[1].value = value end if old < 7 then self.level_criteria = local_criteria_variable self:determineWinningConditions() end if old < 10 then self.object_counts = { extinguisher = 0, radiator = 0, plant = 0, general = 0, } for _, obj_list in pairs(self.objects) do for _, obj in ipairs(obj_list) do local count_cat = obj.object_type.count_category if count_cat then self.object_counts[count_cat] = self.object_counts[count_cat] + 1 end end end end if old < 43 then self.object_counts.reception_desk = 0 for _, obj_list in pairs(self.objects) do for _, obj in ipairs(obj_list) do local count_cat = obj.object_type.count_category if count_cat and count_cat == "reception_desk" then self.object_counts[count_cat] = self.object_counts[count_cat] + 1 end end end end if old < 47 then self.object_counts.bench = 0 for _, obj_list in pairs(self.objects) do for _, obj in ipairs(obj_list) do local count_cat = obj.object_type.count_category if count_cat and count_cat == "bench" then self.object_counts[count_cat] = self.object_counts[count_cat] + 1 end end end end if old < 12 then self.animation_manager = TheApp.animation_manager self.anim_length_cache = nil end if old < 16 then self.ui:addKeyHandler("+", self, self.adjustZoom, 1) self.ui:addKeyHandler("-", self, self.adjustZoom, -1) end if old < 17 then -- Added another object local pathsep = package.config:sub(1, 1) local _, shield = pcall(dofile, "objects" .. pathsep .. "radiation_shield") local _, shield_b = pcall(dofile, "objects" .. pathsep .. "radiation_shield_b") shield.slave_type = shield_b shield.slave_type.master_type = shield Object.processTypeDefinition(shield) Object.processTypeDefinition(shield_b) self.object_id_by_thob[shield.thob] = shield.id self.object_id_by_thob[shield_b.thob] = shield_b.id self.object_types[shield.id] = shield self.object_types[shield_b.id] = shield_b self.ui.app.objects[shield.id] = shield self.ui.app.objects[shield_b.id] = shield_b self.ui.app.objects[#self.ui.app.objects + 1] = shield self.ui.app.objects[#self.ui.app.objects + 1] = shield_b end if old < 27 then -- Add callsDispatcher self.dispatcher = CallsDispatcher(self) end if old < 30 then self:nextEmergency() end if old < 31 then self.hours_per_day = 50 self:setSpeed("Normal") end if old < 36 then self:determineWinningConditions() end if old < 37 then -- Spawn rate is taken from level files now. -- Make sure that all config values are present. if not self.map.level_config.popn then self.map.level_config.popn = { [0] = {Change = 3, Month = 0}, [1] = {Change = 1, Month = 1}, } end if not self.map.level_config.gbv.AllocDelay then self.map.level_config.gbv.AllocDelay = 3 end local index = 0 local popn = self.map.level_config.popn self.spawn_rate = popn[index].Change self.monthly_spawn_increase = self.spawn_rate -- Bring the spawn rate "up to speed". for month = 1, self.month + (self.year-1)*12 do -- Check if the next entry should be used. while popn[index + 1] and month >= popn[index + 1].Month do index = index + 1 end self.monthly_spawn_increase = popn[index].Change self.spawn_rate = self.spawn_rate + self.monthly_spawn_increase end self.spawn_hours = {} self.spawn_dates = {} self:updateSpawnDates() end if old < 45 then self:nextVip() end if old < 52 then -- Litter was not properly removed from the world. for i = #self.entities, 1, -1 do if class.is(self.entities[i], Litter) then if not self.entities[i].tile_x then self:destroyEntity(self.entities[i]) end end end end if old < 53 then self.current_map_earthquake = 0 -- It may happen that the current game has gone on for a while if self.map.level_config.quake_control then while true do if self.map.level_config.quake_control[self.current_map_earthquake] and self.map.level_config.quake_control[self.current_map_earthquake] ~= 0 then -- Check to see if the start month has passed local control = self.map.level_config.quake_control[self.current_map_earthquake] if control.StartMonth <= self.month + 12 * (self.year - 1) then -- Then check the next one self.current_map_earthquake = self.current_map_earthquake + 1 else -- We found an earthquake coming in the future! break end else -- No more earthquakes in the config file. break end end end -- Now set up the next earthquake. self:nextEarthquake() end if old < 57 then self.user_actions_allowed = true end if old < 61 then -- room remove callbacks added self.room_remove_callbacks = {} end if old < 64 then -- added reference to world for staff profiles for _, group in pairs(self.available_staff) do for _, profile in ipairs(group) do profile.world = self end end end if old < 66 then -- Unreserve objects which are not actually reserved for real in the staff room. -- This is a special case where reserved_for could be set just as a staff member was leaving for _, room in pairs(self.rooms) do if room.room_info.id == "staff_room" then -- Find all objects in the room local fx, fy = room:getEntranceXY(true) for obj, _ in pairs(self:findAllObjectsNear(fx, fy)) do if obj.reserved_for then local found = false for _, action in ipairs(obj.reserved_for.action_queue) do if action.name == "use_object" then if action.object == obj then found = true break end end end if not found then self:gameLog("Unreserved an object: " .. obj.object_type.id .. " at " .. obj.tile_x .. ":" .. obj.tile_y) obj.reserved_for = nil end end end end end end if old < 77 then self.ui:addKeyHandler({"shift", "+"}, self, self.adjustZoom, 5) self.ui:addKeyHandler({"shift", "-"}, self, self.adjustZoom, -5) end if old < 103 then -- If a room has patients who no longer exist in its -- humanoids_enroute table because of #133 remove them: for _, room in pairs(self.rooms) do for patient, _ in pairs(room.humanoids_enroute) do if patient.tile_x == nil then room.humanoids_enroute[patient] = nil end end end end -- Now let things inside the world react. for _, cat in pairs({self.hospitals, self.entities, self.rooms}) do for _, obj in pairs(cat) do obj:afterLoad(old, new) end end if old < 80 then self:determineWinningConditions() end if old >= 87 then self:playLoadedEntitySounds() end if old < 88 then --Populate the entity map self.entity_map = EntityMap(self.map) for _, e in ipairs(self.entities) do local x, y = e.tile_x, e.tile_y if x and y then self.entity_map:addEntity(x,y,e) end end end if old < 108 then self.room_build_callbacks = nil end if old < 113 then -- Make cleanable littered tiles buildable. for x = 1, self.map.width do for y = 1, self.map.height do local litter = self:getObject(x, y, "litter") if litter and litter:isCleanable() then self.map:setCellFlags(x, y, {buildable=true}) end end end end if old < 115 then self.next_earthquake = { start_month = self.next_earthquake_month, start_day = self.next_earthquake_day, size = self.earthquake_size, active = self.earthquake_active or false } self.next_earthquake_month = nil self.next_earthquake_day = nil self.earthquake_stop_day = nil self.earthquake_size = nil self.earthquake_active = nil self.randomX = nil self.randomY = nil self.currentX = nil self.currentY = nil if self.next_earthquake.active then local rd = 0 for _, room in pairs(self.rooms) do for object, _ in pairs(room.objects) do if object.quake_points then rd = math.max(rd, object.quake_points) object.quake_points = nil end end end self.next_earthquake.remaining_damage = rd self.next_earthquake.damage_timer = earthquake_damage_time self.next_earthquake.warning_timer = 0 else self.next_earthquake.remaining_damage = self.next_earthquake.size self.next_earthquake.damage_timer = earthquake_damage_time self.next_earthquake.warning_timer = earthquake_warning_period end end if old < 120 then -- Issue #1105 updates to fix any broken saves with travel flags for side objects self:resetSideObjects() end self.savegame_version = new end function World:playLoadedEntitySounds() for _, entity in pairs(self.entities) do entity:playAfterLoadSound() end end --[[ There is a problem with room editing in that it resets all the partial passable flags (travelNorth, travelSouth etc.) in the corridor, a workaround is calling this function after the room was edited so that all edge only objects, that set partial passable flags set those flags again]] function World:resetSideObjects() for _, objects in pairs(self.objects) do for _, obj in ipairs(objects) do if obj.object_type.class == "SideObject" then obj:setTile(obj.tile_x, obj.tile_y) end end end end --[[ When placing doors and objects the passable tiles need to be checked for overlapping passable tiles. This presents problems with objects like Bench where the passable tile is not for exclusive use of the Bench (another object can share that same tile) the footprint.shareable differentiates shareable passable tiles, and exclusive use passable tiles (the norm for most objects)]] --!param x (int) x map tile position --!param y (int) y map tile position --!param distance (int) searchable distance for nearby objects --!return (boolean) indicating if exclusively passable or not function World:isTileExclusivelyPassable(x, y, distance) for o in pairs(self:findAllObjectsNear(x, y, distance)) do if o and o.footprint then for _, footprint in pairs(o.footprint) do if footprint[1] + o.tile_x == x and footprint[2] + o.tile_y == y and footprint.only_passable and not footprint.shareable then return false end end else -- doors don't have a footprint but objects can't be built blocking them either for _, footprint in pairs(o:getWalkableTiles()) do if o.object_type and o.object_type.thob ~= 62 and footprint[1] == x and footprint[2] == y then return false end end end end return true end CorsixTH-0.61/CorsixTH/Luatest/000077500000000000000000000000001321660673500163005ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Luatest/.busted000066400000000000000000000000721321660673500175660ustar00rootroot00000000000000return { default = { lpath = "../Lua/?.lua", }, } CorsixTH-0.61/CorsixTH/Luatest/README.txt000066400000000000000000000015501321660673500177770ustar00rootroot00000000000000UNIT TESTING In order to run the unit test suite you need a unit test framework called Busted. The easiest way to get it is through Luarocks. All information can be found at http://olivinelabs.com/busted/ The framework uses its own syntax, which is also described at the above location. RUNNING UNIT TESTS When you have Busted on your system, run the following command from the CorsixTH/Luatest folder to run all tests: (Windows) busted --lpath=../Lua/\?.lua (Linux) busted --lpath=../Lua/?.lua CREATING UNIT TESTS If you have added functionality to an existing file you will need to extend the unit test suite for that file. It is found in the Luatest/spec folder using the same hierarchy as in the normal Lua folder. All test files are called _spec.lua. If you have created a new lua file, then you also create a new *_spec.lua test file. CorsixTH-0.61/CorsixTH/Luatest/TH.lua000066400000000000000000000025551321660673500173250ustar00rootroot00000000000000--[[ Copyright (c) 2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- A stub implementation of the TH C++ object, to be able to run -- unit tests without any backend. return { animation = function() return { setHitTestResult = function() end, setAnimation = function() end, setDrawingLayer = function() end, setTile = function() end, } end, } CorsixTH-0.61/CorsixTH/Luatest/class_test_base.lua000066400000000000000000000023011321660673500221350ustar00rootroot00000000000000--[[ Copyright (c) 2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- Use this file to easily get started creating unit tests for CorsixTH -- classes. require("busted") require("non_strict") require("class") CorsixTH-0.61/CorsixTH/Luatest/non_strict.lua000066400000000000000000000050201321660673500211620ustar00rootroot00000000000000--[[ Copyright (c) 2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -- When running unittests we cannot restrict global variables as is usually -- done, since the busted library relies on being able to do so. -- We still need to mimic the possibility to call the functions available -- in strict.lua though. local strict_mt = {} local allowed_globals = setmetatable({}, {__mode = "k"}) local function newindex(t, k, v) rawset(t, k, v) end local function index(t, k) return nil end local function restrict(ni, i, ...) strict_mt.__newindex = ni strict_mt.__index = i return ... end restrict(newindex, index) --!! Wrap a function so that it is freely able to set global variables --[[ Some existing functions (for example, `require`) should be allowed to read and write global variables without having to worry about declaring them with `strict_declare_global`. !param fn The function which should be able to freely set globals !return A new function which acts just as `fn` and is free to set globals !example require = destrict(require) ]] function destrict(fn) return function(...) local ni, i = strict_mt.__newindex, strict_mt.__index strict_mt.__newindex, strict_mt.__index = nil, nil return restrict(ni, i, fn(...)) end end --!! Declare a global variable so that it can later be used --[[!param name The name of the global to declare !example strict_declare_global "some_var" some_var = 42 ]] function strict_declare_global(name) allowed_globals[name] = true end setmetatable(_G, strict_mt) CorsixTH-0.61/CorsixTH/Luatest/spec/000077500000000000000000000000001321660673500172325ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Luatest/spec/class_spec.lua000066400000000000000000000050451321660673500220600ustar00rootroot00000000000000--[[ Copyright (c) 2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] require("class_test_base") class "ParentClass" function ParentClass:ParentClass(name) self.class_name = name end class "ChildClass" (ParentClass) function ChildClass:ChildClass(name) self:ParentClass(name) end describe("A class in CorsixTH ", function() local child_class, parent_class setup(function() child_class = ChildClass("TheChild") parent_class = ParentClass("TheParent") end) it("should be instansiatable", function() assert.are.equal("TheChild", child_class.class_name) assert.are.equal("TheParent", parent_class.class_name) end) it("should be the same for many instances of the same type, including inheritance", function() assert.truthy(class.is(child_class, ChildClass)) assert.falsy(class.is(parent_class, ChildClass)) assert.truthy(class.is(child_class, ParentClass)) assert.truthy(class.is(parent_class, ParentClass)) end) it("should have a name", function() assert.are.equal("ChildClass", class.name(ChildClass)) assert.are.equal("ParentClass", class.name(ParentClass)) assert.are.equal(nil, class.name(NoRealClass)) end) it("should know if it has a superclass", function() assert.are.equal(ParentClass, class.superclass(ChildClass)) assert.are.equal(nil, class.superclass(ParentClass)) assert.has_error(class.superclass, NoRealClass) end) it("should have a type", function() assert.are.equal("ChildClass", class.type(child_class)) assert.are.equal("ParentClass", class.type(parent_class)) end) end) CorsixTH-0.61/CorsixTH/Luatest/spec/entities/000077500000000000000000000000001321660673500210565ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Luatest/spec/entities/object_spec.lua000066400000000000000000000034251321660673500240450ustar00rootroot00000000000000--[[ Copyright (c) 2014 Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] require("class_test_base") require("entity") require("entities/object") describe("object.lua: ", function() local stub_world = {map = {}} local fake_object_type = {ticks = false, idle_animations = {west = true}} local tile_x, tile_y, direction = 10, 10, "west" local function createObjectWithFakeInput() stub(stub_world, "getLocalPlayerHospital") stub(stub_world, "addObjectToTile") stub(stub_world, "clearCaches") return Object(stub_world, fake_object_type, tile_x, tile_y, direction) end it("can create Object objects", function() local object = createObjectWithFakeInput() assert.are.equal(fake_object_type, object.object_type) assert.are.equal(stub_world.map, object.world.map) end) end) CorsixTH-0.61/CorsixTH/Original_Logo.svg000066400000000000000000002117341321660673500201340ustar00rootroot00000000000000 image/svg+xml CorsixTH-0.61/CorsixTH/Original_Logo_Text.svg000066400000000000000000001671041321660673500211410ustar00rootroot00000000000000 image/svg+xml CorsixTH-0.61/CorsixTH/RequiredResources.txt000066400000000000000000000005671321660673500211030ustar00rootroot00000000000000# rsync compatible filter file which is used post-build # to help with copying the required resources into the # bundles for the Mac build. - .git/ - .DS_Store + CorsixTH.lua + Lua/ + Lua/** + Levels/ + Levels/** + Bitmap/ + Bitmap/aux_ui.* + Bitmap/tree_ctrl.* + Bitmap/mainmenu1080.dat + Bitmap/mainmenu1080.pal + Campaigns/ + Campaigns/** + Graphics/ + Graphics/** - * CorsixTH-0.61/CorsixTH/SDLMain/000077500000000000000000000000001321660673500161065ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/SDLMain/CMakeLists.txt000066400000000000000000000002601321660673500206440ustar00rootroot00000000000000IF(APPLE) find_package(SDL2 REQUIRED) set(CMAKE_OSX_ARCHITECTURES "x86_64") include_directories(${SDL_INCLUDE_DIR}) add_library (SDL2main STATIC SDLMain.m) endif(APPLE) CorsixTH-0.61/CorsixTH/SDLMain/SDLMain.h000066400000000000000000000005661321660673500175150ustar00rootroot00000000000000/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs */ #ifndef _SDLMain_h_ #define _SDLMain_h_ #import @interface SDLMain : NSObject @end #endif /* _SDLMain_h_ */ CorsixTH-0.61/CorsixTH/SDLMain/SDLMain.m000066400000000000000000000260001321660673500175110ustar00rootroot00000000000000/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs */ #include "SDL.h" #include "SDLMain.h" #include /* for MAXPATHLEN */ #include /* For some reaon, Apple removed setAppleMenu from the headers in 10.4, but the method still is there and works. To avoid warnings, we declare it ourselves here. */ @interface NSApplication(SDL_Missing_Methods) - (void)setAppleMenu:(NSMenu *)menu; @end /* Use this flag to determine whether we use SDLMain.nib or not */ #define SDL_USE_NIB_FILE 0 /* Use this flag to determine whether we use CPS (docking) or not */ #define SDL_USE_CPS 1 #ifdef SDL_USE_CPS /* Portions of CPS.h */ typedef struct CPSProcessSerNum { UInt32 lo; UInt32 hi; } CPSProcessSerNum; extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn); extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn); #endif /* SDL_USE_CPS */ static int gArgc; static char **gArgv; static BOOL gFinderLaunch; static BOOL gCalledAppMainline = FALSE; static NSString *getApplicationName(void) { const NSDictionary *dict; NSString *appName = 0; /* Determine the application name */ dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); if (dict) appName = [dict objectForKey: @"CFBundleName"]; if (![appName length]) appName = [[NSProcessInfo processInfo] processName]; return appName; } #if SDL_USE_NIB_FILE /* A helper category for NSString */ @interface NSString (ReplaceSubString) - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; @end #endif @interface SDLApplication : NSApplication @end @implementation SDLApplication /* Invoked from the Quit menu item */ - (void)terminate:(id)sender { /* Post a SDL_QUIT event */ SDL_Event event; event.type = SDL_QUIT; SDL_PushEvent(&event); } @end /* The main class of the application, the application's delegate */ @implementation SDLMain /* Set the working directory to the .app's parent directory */ - (void) setupWorkingDirectory:(BOOL)shouldChdir { if (shouldChdir) { char parentdir[MAXPATHLEN]; CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) { chdir(parentdir); /* chdir to the binary app's parent */ } CFRelease(url); CFRelease(url2); } } #if SDL_USE_NIB_FILE /* Fix menu to contain the real app name instead of "SDL App" */ - (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName { NSRange aRange; NSEnumerator *enumerator; NSMenuItem *menuItem; aRange = [[aMenu title] rangeOfString:@"SDL App"]; if (aRange.length != 0) [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; enumerator = [[aMenu itemArray] objectEnumerator]; while ((menuItem = [enumerator nextObject])) { aRange = [[menuItem title] rangeOfString:@"SDL App"]; if (aRange.length != 0) [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; if ([menuItem hasSubmenu]) [self fixMenu:[menuItem submenu] withAppName:appName]; } [ aMenu sizeToFit ]; } #else static void setApplicationMenu(void) { /* warning: this code is very odd */ NSMenu *appleMenu; NSMenuItem *menuItem; NSString *title; NSString *appName; appName = getApplicationName(); appleMenu = [[NSMenu alloc] initWithTitle:@""]; /* Add menu items */ title = [@"About " stringByAppendingString:appName]; [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; [appleMenu addItem:[NSMenuItem separatorItem]]; title = [@"Hide " stringByAppendingString:appName]; [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; [appleMenu addItem:[NSMenuItem separatorItem]]; title = [@"Quit " stringByAppendingString:appName]; [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; /* Put menu into the menubar */ menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; [menuItem setSubmenu:appleMenu]; [[NSApp mainMenu] addItem:menuItem]; /* Tell the application object that this is now the application menu */ [NSApp setAppleMenu:appleMenu]; /* Finally give up our references to the objects */ [appleMenu release]; [menuItem release]; } /* Create a window menu */ static void setupWindowMenu(void) { NSMenu *windowMenu; NSMenuItem *windowMenuItem; NSMenuItem *menuItem; windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; /* "Minimize" item */ menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [windowMenu addItem:menuItem]; [menuItem release]; /* Put menu into the menubar */ windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; [windowMenuItem setSubmenu:windowMenu]; [[NSApp mainMenu] addItem:windowMenuItem]; /* Tell the application object that this is now the window menu */ [NSApp setWindowsMenu:windowMenu]; /* Finally give up our references to the objects */ [windowMenu release]; [windowMenuItem release]; } /* Replacement for NSApplicationMain */ static void CustomApplicationMain (int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDLMain *sdlMain; /* Ensure the application object is initialised */ [SDLApplication sharedApplication]; #ifdef SDL_USE_CPS { CPSProcessSerNum PSN; /* Tell the dock about us */ if (!CPSGetCurrentProcess(&PSN)) if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) if (!CPSSetFrontProcess(&PSN)) [SDLApplication sharedApplication]; } #endif /* SDL_USE_CPS */ /* Set up the menubar */ [NSApp setMainMenu:[[NSMenu alloc] init]]; setApplicationMenu(); setupWindowMenu(); /* Create SDLMain and make it the app delegate */ sdlMain = [[SDLMain alloc] init]; [NSApp setDelegate:sdlMain]; /* Start the main event loop */ [NSApp run]; [sdlMain release]; [pool release]; } #endif /* * Catch document open requests...this lets us notice files when the app * was launched by double-clicking a document, or when a document was * dragged/dropped on the app's icon. You need to have a * CFBundleDocumentsType section in your Info.plist to get this message, * apparently. * * Files are added to gArgv, so to the app, they'll look like command line * arguments. Previously, apps launched from the finder had nothing but * an argv[0]. * * This message may be received multiple times to open several docs on launch. * * This message is ignored once the app's mainline has been called. */ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename { const char *temparg; size_t arglen; char *arg; char **newargv; if (!gFinderLaunch) /* MacOS is passing command line args. */ return FALSE; if (gCalledAppMainline) /* app has started, ignore this document. */ return FALSE; temparg = [filename UTF8String]; arglen = SDL_strlen(temparg) + 1; arg = (char *) SDL_malloc(arglen); if (arg == NULL) return FALSE; newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2)); if (newargv == NULL) { SDL_free(arg); return FALSE; } gArgv = newargv; SDL_strlcpy(arg, temparg, arglen); gArgv[gArgc++] = arg; gArgv[gArgc] = NULL; return TRUE; } /* Called when the internal event loop has just started running */ - (void) applicationDidFinishLaunching: (NSNotification *) note { int status; /* Set the working directory to the .app's parent directory */ [self setupWorkingDirectory:gFinderLaunch]; #if SDL_USE_NIB_FILE /* Set the main menu to contain the real app name instead of "SDL App" */ [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()]; #endif /* Hand off to main application code */ gCalledAppMainline = TRUE; status = SDL_main (gArgc, gArgv); /* We're done, thank you for playing */ exit(status); } @end @implementation NSString (ReplaceSubString) - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString { unsigned int bufferSize; unsigned int selfLen = [self length]; unsigned int aStringLen = [aString length]; unichar *buffer; NSRange localRange; NSString *result; bufferSize = selfLen + aStringLen - aRange.length; buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar)); /* Get first part into buffer */ localRange.location = 0; localRange.length = aRange.location; [self getCharacters:buffer range:localRange]; /* Get middle part into buffer */ localRange.location = 0; localRange.length = aStringLen; [aString getCharacters:(buffer+aRange.location) range:localRange]; /* Get last part into buffer */ localRange.location = aRange.location + aRange.length; localRange.length = selfLen - localRange.location; [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; /* Build output string */ result = [NSString stringWithCharacters:buffer length:bufferSize]; NSDeallocateMemoryPages(buffer, bufferSize); return result; } @end #ifdef main # undef main #endif /* Main entry point to executable - should *not* be SDL_main! */ int main (int argc, char **argv) { /* Copy the arguments into a global variable */ /* This is passed if we are launched by double-clicking */ if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { gArgv = (char **) SDL_malloc(sizeof (char *) * 2); gArgv[0] = argv[0]; gArgv[1] = NULL; gArgc = 1; gFinderLaunch = YES; } else { int i; gArgc = argc; gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); for (i = 0; i <= argc; i++) gArgv[i] = argv[i]; gFinderLaunch = NO; } #if SDL_USE_NIB_FILE [SDLApplication poseAsClass:[NSApplication class]]; NSApplicationMain (argc, argv); #else CustomApplicationMain (argc, argv); #endif return 0; } CorsixTH-0.61/CorsixTH/Src/000077500000000000000000000000001321660673500154065ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/Src/bootstrap.cpp000066400000000000000000000434351321660673500201400ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "lua.hpp" #include "th_lua.h" #include "config.h" #include #include /* Often, an error occurs during the CorsixTH startup process. Examples of such errors include: 1) Unable to find CorsixTH.lua 2) Incorrect theme_hospital_install setting 3) Lua syntax error in modified file When such errors occur, we want to report them to the user. The simple way of doing this is printing the error details to stdout. Unfortunately, Windows users tend to disregard stdout, and OS X users never see it unless launching CorsixTH from a terminal. Hence the approach taken is to print the error details to our game window. Doing so is not trivial though, as we cannot rely on having any external Lua scripts or external graphical resources. Thus the font data and Lua script are hardcoded into this file (the font itself is a homemade bitmap font, as we cannot rely on TH fonts being present). */ static const int g_iBootstrapCodeLineNumStart = __LINE__ + 2; static const char* g_sBootstrapCode[] = { "local lines, dat, tab, pal, err = {}, ...", "local function t(s) return s:gsub('\\t', ' ') end", "for s in tostring(err):gmatch'[^\\r\\n]+' do lines[#lines+1] = t(s) end", "local TH, SDL, rnc = require'TH', require'sdl', require'rnc'.decompress", "if not SDL.init('video') then error'Unable to initialise video' end", "local w, h = 640, 480", "local function dernc(x) return x:match'^RNC' and assert(rnc(x)) or x end", "local video = TheApp and TheApp.video or TH.surface(w, h)", "video:setCaption('CorsixTH - Error during startup')", "local palette, sheet, font = TH.palette(), TH.sheet(), TH.bitmap_font()", "if not palette:load(dernc(pal)) then error'Unable to load palette' end", "sheet:setPalette(palette)", "if not sheet:load(dernc(tab), dernc(dat), true, video) then error'Unable to load sheet' end", "font:setSheet(sheet):setSeparation(1, 0)", "local bx, by, bw, bh = 20, 0, 100, 16", // Print message and draw button: "local function draw()", " video:startFrame()", " video:fillBlack()", " local y = 20", " for _, s in ipairs(lines) do", " y = font:drawWrapped(video, s, 20, y, w - 40)", " end", " by = y + 20", " video:drawRect(video:mapRGB(151, 23, 23), bx, by, bw, bh)", " video:drawRect(video:mapRGB(171, 53, 53), bx + 1, by + 1, bw - 2, bh - 2)", " font:draw(video, 'Exit', bx, by + 1, bw, bh)", " video:endFrame()", "end", "SDL.wm.showCursor(true)", "draw()", "local running = true", // Minimal event handler: "repeat", " local e, where = SDL.mainloop(coroutine.create(function()", " while running do", " local e, _, x, y = coroutine.yield(true)", " if e == 'frame' then draw()", " elseif e == 'buttonup' then", " x, y = x - bx, y - by", " running = x < 0 or bw <= x or y < 0 or bh <= y", " end", " end", " end))", " if running then print(e) end", "until where ~= 'callback'", nullptr }; /* Start autogenerated content */ /* Data from bootstrap_font.tab inserted by mkbootstrap.lua: */ static const std::vector g_aBootstrapFontTab = { 0x52, 0x4E, 0x43, 0x01, 0x00, 0x00, 0x05, 0x46, 0x00, 0x00, 0x01, 0xE1, 0xFB, 0xF2, 0x66, 0x51, 0xBE, 0xEF, 0x0C, 0x09, 0x59, 0x60, 0x10, 0x34, 0x43, 0x54, 0xA6, 0x46, 0xA2, 0x08, 0x00, 0xA0, 0xC4, 0x01, 0xF6, 0x3D, 0x00, 0x00, 0xAF, 0xAE, 0x05, 0x01, 0x03, 0x01, 0x0C, 0x0B, 0xAE, 0x9E, 0x03, 0x0C, 0x16, 0x08, 0x0C, 0x47, 0x63, 0xEA, 0x0C, 0x74, 0x07, 0x0C, 0x9A, 0xEA, 0xEA, 0x06, 0x0C, 0xC8, 0x02, 0x0C, 0xD1, 0x1D, 0x92, 0xEE, 0x4B, 0x43, 0x09, 0x01, 0x3B, 0xD5, 0x34, 0x4F, 0xAA, 0xF4, 0xCC, 0xA4, 0x56, 0x60, 0xDA, 0x66, 0x54, 0x1D, 0x66, 0xA3, 0x3E, 0x7C, 0x04, 0x0C, 0x9B, 0xD3, 0x4C, 0xB5, 0xD5, 0x52, 0x93, 0xF2, 0x13, 0x24, 0x12, 0x02, 0x31, 0x52, 0x49, 0x92, 0x71, 0x97, 0x54, 0x7B, 0xB9, 0x8C, 0x6A, 0xC3, 0xB3, 0x51, 0xCD, 0xB5, 0x4E, 0xE5, 0x4E, 0x33, 0xF6, 0x1D, 0xAD, 0x0F, 0x34, 0xAA, 0x29, 0xDB, 0x8C, 0x4E, 0xAA, 0xBB, 0x12, 0x9A, 0x91, 0x49, 0x4A, 0xB1, 0xD7, 0x48, 0x2E, 0xF5, 0x10, 0x04, 0x01, 0x49, 0x34, 0x58, 0x92, 0x54, 0x76, 0x97, 0xE9, 0x91, 0xB9, 0x12, 0x4E, 0xDB, 0x03, 0x05, 0x50, 0x6D, 0x2B, 0x36, 0xAA, 0x50, 0xDC, 0xA8, 0x6E, 0x2E, 0x3D, 0x9C, 0x33, 0xA5, 0xBD, 0x25, 0xC9, 0xDD, 0xF8, 0x09, 0x92, 0x1F, 0x06, 0x45, 0x6D, 0xAA, 0x69, 0x66, 0x92, 0x97, 0xB7, 0x54, 0xB7, 0xDB, 0x1F, 0x39, 0xF8, 0x12, 0x07, 0x41, 0x95, 0x2F, 0x1B, 0x49, 0x41, 0x4B, 0x75, 0xDD, 0x99, 0x49, 0x55, 0x70, 0x75, 0xBF, 0x92, 0x24, 0xA7, 0xC4, 0x49, 0x92, 0xD9, 0xF5, 0x6B, 0x82, 0x14, 0x08, 0x38, 0xEA, 0x65, 0x8C, 0x6A, 0x43, 0x9B, 0x51, 0x5D, 0xE5, 0x46, 0x7F, 0xB5, 0xC7, 0xA4, 0x95, 0x91, 0xAE, 0xD0, 0x4C, 0xC6, 0xE2, 0x33, 0xC9, 0xFF, 0x09, 0x92, 0x1F, 0x09, 0x34, 0x47, 0x24, 0xA9, 0x65, 0x7D, 0x9A, 0x46, 0x99, 0x92, 0x72, 0xB6, 0xD4, 0x9A, 0xB9, 0xF4, 0x10, 0x0A, 0x19, 0x54, 0x32, 0x1B, 0xCF, 0x3E, 0x4C, 0xAA, 0x5E, 0x97, 0x31, 0x6D, 0xAA, 0xF4, 0x48, 0x39, 0x87, 0xB0, 0x49, 0x09, 0xCF, 0xE9, 0xFB, 0x99, 0x90, 0x46, 0x2C, 0x92, 0x54, 0x4B, 0x6D, 0xE9, 0x91, 0x8A, 0x24, 0x49, 0xA6, 0xC0, 0xD9, 0x75, 0xC5, 0x91, 0xBD, 0xF0, 0x9C, 0x75, 0x45, 0xA8, 0x19, 0xFA, 0x46, 0x3A, 0x52, 0x75, 0x5A, 0x8C, 0x2A, 0x75, 0x3B, 0xAA, 0x95, 0xBD, 0x27, 0xBF, 0x27, 0x39, 0xE3, 0x04, 0x0D, 0x41, 0xD5, 0x24, 0x31, 0x92, 0x42, 0x5E, 0xA4, 0x6A, 0x85, 0x9A, 0xB4, 0xAA, 0x12, 0x9A, 0xD0, 0xF3, 0x39, 0x41, 0x15, 0x0E, 0x37, 0x92, 0x24, 0x5F, 0x84, 0xA5, 0xD5, 0xDE, 0x33, 0x93, 0xB6, 0xD9, 0xAA, 0x6F, 0xE4, 0x2E, 0xF6, 0x14, 0x0F, 0x61, 0x92, 0x52, 0xA4, 0xCA, 0x6C, 0xCD, 0x4C, 0x86, 0x94, 0x92, 0xEA, 0xA5, 0x7F, 0x39, 0xD9, 0x72, 0xAF, 0x11, 0x10, 0x04, 0xAA, 0x1C, 0xED, 0x47, 0x3D, 0xF6, 0x97, 0x3D, 0xF4, 0x7D, 0x0A, 0x5E, 0xAF, 0x44, 0x80, 0xAA, 0x57, 0x35, 0xAA, 0xA1, 0xF7, 0x34, 0xBA, 0x92, 0xA4, 0xD6, 0xF7, 0x7A, 0xF7, 0x5B, 0x1A, 0x18, 0x11, 0x35, 0xAA, 0xC4, 0x48, 0xAA, 0x4C, 0x6E, 0xD6, 0x91, 0x93, 0x12, 0x52, 0xBA, 0xE0, 0x35, 0x8D, 0xFF, 0x5C, 0x1F, 0x27, 0x12, 0x54, 0xE9, 0x44, 0x51, 0xA5, 0x67, 0x47, 0x92, 0x7F, 0x99, 0x64, 0x37, 0xBA, 0x38, 0x49, 0xE2, 0xA8, 0xCF, 0xF2, 0x75, 0x53, 0x0D, 0x13, 0xFA, 0x24, 0x1E, 0x51, 0xB9, 0xC9, 0x29, 0x40, 0x52, 0x7D, 0x0F }; /* Data from bootstrap_font.dat inserted by mkbootstrap.lua: */ static const std::vector g_aBootstrapFontDat = { 0x52, 0x4E, 0x43, 0x01, 0x00, 0x00, 0x13, 0x68, 0x00, 0x00, 0x05, 0xEC, 0xD3, 0x6C, 0x7E, 0xAB, 0xBE, 0xEF, 0x94, 0x90, 0x81, 0x61, 0x50, 0x34, 0x44, 0x33, 0x33, 0x53, 0x66, 0x64, 0x64, 0x26, 0x20, 0x60, 0x47, 0x1E, 0x01, 0xFF, 0x84, 0x41, 0x01, 0x02, 0xFF, 0x01, 0x84, 0x09, 0xFF, 0xFF, 0x14, 0x2F, 0x06, 0xCD, 0x9B, 0xCC, 0x8C, 0x89, 0x04, 0x1B, 0x42, 0x06, 0x65, 0x64, 0x71, 0x3B, 0x44, 0x01, 0x06, 0x78, 0xE0, 0xE9, 0xD9, 0x9A, 0x2B, 0x36, 0x72, 0xB0, 0x43, 0x84, 0x59, 0x1B, 0x4D, 0x0A, 0xB6, 0x75, 0x87, 0x91, 0x32, 0xAB, 0x86, 0x02, 0xCC, 0xDE, 0x84, 0x07, 0x82, 0x31, 0x85, 0xCC, 0x45, 0x90, 0x4A, 0x84, 0xE7, 0xC4, 0x9C, 0x42, 0xFC, 0x29, 0x66, 0x0C, 0xA4, 0x94, 0x9D, 0xD9, 0x38, 0x75, 0x35, 0x42, 0x98, 0x07, 0x6D, 0x70, 0x91, 0x1B, 0x03, 0x8E, 0x54, 0x40, 0x9B, 0xED, 0x89, 0x19, 0x44, 0x87, 0x02, 0x9D, 0x8B, 0x5C, 0x3A, 0x15, 0x19, 0xF8, 0xB7, 0xAC, 0x43, 0x01, 0x15, 0x93, 0x0B, 0x5D, 0x03, 0x83, 0x40, 0x1A, 0x56, 0xA5, 0x1D, 0x03, 0xF2, 0x93, 0xA2, 0x50, 0x03, 0xB6, 0x11, 0x1C, 0xF2, 0x8E, 0x8E, 0x60, 0x87, 0x42, 0x89, 0x93, 0x40, 0x93, 0x64, 0xA2, 0x81, 0x04, 0x29, 0x23, 0x11, 0x4F, 0x36, 0xA0, 0xBA, 0x8E, 0xA2, 0xA4, 0x1A, 0x08, 0x75, 0x65, 0x6E, 0x9C, 0xAC, 0x14, 0xC3, 0x18, 0x67, 0x33, 0x16, 0x4E, 0x10, 0x31, 0x8C, 0x11, 0x9B, 0x17, 0x7C, 0xCC, 0x44, 0x57, 0x8F, 0xF7, 0x74, 0x0E, 0x3F, 0x71, 0x80, 0x64, 0x08, 0x39, 0x90, 0xBC, 0x28, 0x87, 0x3A, 0x15, 0x8B, 0x70, 0x30, 0x9D, 0x04, 0x14, 0x0B, 0x89, 0x1C, 0x95, 0x21, 0x8F, 0x50, 0xB5, 0x2D, 0xD9, 0x85, 0x1B, 0x80, 0x72, 0xEC, 0x0A, 0xCE, 0x6B, 0xA8, 0xDB, 0x86, 0x05, 0x35, 0x93, 0x84, 0x12, 0x8B, 0xE6, 0xEC, 0x84, 0xBF, 0x79, 0x5F, 0xDA, 0xA4, 0xC8, 0x97, 0xF8, 0x84, 0x42, 0x9B, 0x19, 0xB4, 0x96, 0xCB, 0xD4, 0x85, 0x21, 0x84, 0x08, 0xB3, 0x5B, 0x1F, 0x88, 0x60, 0xCE, 0x85, 0x0F, 0x56, 0x92, 0x92, 0xA4, 0x05, 0xA6, 0x43, 0x46, 0x9E, 0x94, 0x08, 0x8B, 0x58, 0x17, 0x3B, 0x87, 0xC9, 0xAA, 0x86, 0x48, 0x83, 0x23, 0x12, 0x83, 0x52, 0x90, 0x89, 0x38, 0x4A, 0x50, 0x89, 0x52, 0x32, 0x98, 0x45, 0xB9, 0x84, 0x48, 0x6D, 0x98, 0x17, 0x9E, 0xA2, 0x37, 0x66, 0xC2, 0xA2, 0xB4, 0x5A, 0x2C, 0x54, 0xE5, 0xC5, 0x15, 0x74, 0x44, 0x67, 0x06, 0x50, 0x6E, 0xE1, 0x06, 0x2F, 0x2D, 0xC8, 0x99, 0x0D, 0xB6, 0x4D, 0x79, 0x24, 0x0E, 0x07, 0x1D, 0xE8, 0x91, 0x94, 0x0F, 0xDE, 0x62, 0x3F, 0x60, 0x0F, 0x27, 0x63, 0xE5, 0x40, 0x78, 0x85, 0xB8, 0x15, 0x09, 0xCA, 0x22, 0x2B, 0x19, 0x09, 0x53, 0xF9, 0x84, 0x69, 0x6D, 0x32, 0x6B, 0xAE, 0x45, 0xCA, 0x90, 0xE6, 0x12, 0x6A, 0xB4, 0xA2, 0xD8, 0x4C, 0xFA, 0xA1, 0x5D, 0xEF, 0xC2, 0xE4, 0x02, 0x00, 0xF9, 0x5B, 0x05, 0x13, 0x6B, 0xC2, 0xB9, 0xAA, 0x17, 0xD8, 0xBA, 0xB1, 0xF9, 0xA0, 0x05, 0x4C, 0x2F, 0x9A, 0x61, 0xBA, 0x52, 0x94, 0x63, 0xB9, 0x16, 0x9D, 0xA3, 0x65, 0x84, 0x3D, 0x4A, 0x64, 0x9C, 0x96, 0x20, 0xF6, 0x30, 0x85, 0x68, 0x5A, 0x50, 0x95, 0xE5, 0x30, 0xFD, 0x90, 0x1C, 0xE2, 0xE6, 0x43, 0x0B, 0x6A, 0x9F, 0x23, 0x12, 0x27, 0xC2, 0x81, 0x9D, 0x55, 0x85, 0xC7, 0x01, 0xA5, 0x58, 0x01, 0xC7, 0xD3, 0xF3, 0xFD, 0x87, 0x0B, 0x58, 0x7C, 0x52, 0xCA, 0x6C, 0x47, 0xF1, 0x39, 0x19, 0x8A, 0x9A, 0xF7, 0x21, 0x0A, 0x67, 0x06, 0xBE, 0xD3, 0x88, 0xCF, 0x47, 0x34, 0x94, 0x09, 0x04, 0x40, 0x64, 0x09, 0xE6, 0x4F, 0xEA, 0xA5, 0x55, 0x4E, 0xA5, 0x95, 0xE5, 0x50, 0x0D, 0x06, 0x46, 0x61, 0x85, 0x23, 0x08, 0xAB, 0xF9, 0x48, 0x09, 0x33, 0x44, 0x50, 0x07, 0x21, 0x3C, 0xA8, 0x61, 0x9D, 0x34, 0x84, 0x22, 0x5C, 0x44, 0xFD, 0xA0, 0x6D, 0xE2, 0x6E, 0x56, 0x3A, 0xA3, 0x19, 0x62, 0x4A, 0x82, 0x0C, 0x98, 0x25, 0xCF, 0x24, 0xC8, 0x35, 0x35, 0x1A, 0x12, 0x59, 0x5D, 0x98, 0xD6, 0x2E, 0x76, 0x7F, 0x2B, 0xF4, 0x30, 0x24, 0xAF, 0x4C, 0x5C, 0x28, 0x2E, 0x28, 0xAA, 0x24, 0xE5, 0x17, 0xFF, 0x55, 0x42, 0xC9, 0x54, 0x1B, 0x75, 0xDD, 0xBE, 0x47, 0x9B, 0x11, 0x22, 0x0E, 0xCC, 0xAA, 0x88, 0x88, 0x66, 0x64, 0xCA, 0xD0, 0x88, 0x08, 0x41, 0x06, 0xF0, 0x17, 0x45, 0x82, 0x07, 0xAE, 0x80, 0x9F, 0xB2, 0x23, 0x23, 0xAB, 0x8C, 0xE9, 0xFA, 0xC3, 0x53, 0xD0, 0x06, 0x88, 0x67, 0x59, 0xB3, 0x92, 0xD2, 0xE9, 0xA8, 0x82, 0x0A, 0xA7, 0xC9, 0x44, 0x8E, 0x47, 0x15, 0x82, 0x37, 0x80, 0x9B, 0x88, 0xF9, 0x08, 0x27, 0xDC, 0x05, 0xC2, 0xD3, 0x94, 0x59, 0x55, 0x41, 0x7F, 0x91, 0xFF, 0xDB, 0x16, 0x8C, 0x0C, 0x27, 0x76, 0x6E, 0x26, 0x81, 0xAA, 0xA1, 0x8F, 0xC1, 0x20, 0x63, 0x0B, 0xC3, 0x89, 0x49, 0x31, 0x42, 0x93, 0x8C, 0x69, 0x07, 0x7B, 0x3F, 0x9E, 0x0E, 0x45, 0x56, 0x85, 0x91, 0xE9, 0x78, 0xCC, 0xF9, 0x08, 0xA4, 0xD5, 0x92, 0x70, 0x89, 0x16, 0xC3, 0x0C, 0x92, 0x18, 0xA7, 0x59, 0xF2, 0x08, 0xCD, 0xE0, 0xF2, 0xA8, 0x97, 0x4C, 0xF3, 0x83, 0xA7, 0x1C, 0x68, 0x54, 0x17, 0x03, 0x8A, 0x20, 0x57, 0x50, 0x58, 0x31, 0x11, 0x72, 0x87, 0x71, 0x25, 0x2E, 0xE7, 0xE4, 0x79, 0x90, 0x10, 0x50, 0x1D, 0x54, 0x88, 0xE1, 0xB7, 0x8F, 0x18, 0x02, 0x77, 0xA8, 0x0C, 0x64, 0x11, 0x8C, 0xC9, 0x21, 0xE6, 0x07, 0xCB, 0x5E, 0x8F, 0xB2, 0x25, 0x0B, 0x7B, 0x0A, 0x25, 0x8B, 0x95, 0xD0, 0x82, 0xF4, 0xE2, 0x34, 0x20, 0xEA, 0x5F, 0x36, 0x8C, 0xA1, 0x94, 0x50, 0xFD, 0x69, 0x1B, 0xCB, 0xB0, 0x8B, 0x4F, 0xBF, 0xB5, 0xC7, 0x0B, 0xC2, 0xC5, 0x17, 0xEE, 0x8C, 0x91, 0xFB, 0xD3, 0x0D, 0xD1, 0xE1, 0x98, 0x3A, 0xC9, 0x4D, 0x08, 0xF4, 0xB8, 0x59, 0x11, 0x78, 0x48, 0x20, 0x8B, 0x25, 0x08, 0xBF, 0xF2, 0x89, 0x59, 0xDB, 0x31, 0xD6, 0x17, 0x9E, 0xCA, 0x74, 0x20, 0x8E, 0x0E, 0xD5, 0x07, 0x3B, 0x5D, 0x51, 0x8E, 0x86, 0x71, 0xCE, 0xE6, 0x2C, 0x54, 0xB2, 0xC6, 0x8B, 0x02, 0x7D, 0x7F, 0xC2, 0x61, 0xC2, 0x0B, 0xF0, 0x85, 0x84, 0xCC, 0x98, 0x11, 0x4A, 0x8D, 0x66, 0x03, 0xF8, 0x54, 0x57, 0xB0, 0xF0, 0x45, 0x8C, 0xFF, 0xD3, 0x61, 0xA8, 0x82, 0x09, 0xFF, 0x00, 0xCA, 0x0B, 0x8C, 0x9B, 0x75, 0x24, 0x09, 0x07, 0x00, 0xF9, 0xAC, 0xC1, 0xBB, 0xB7, 0x9E, 0xE8, 0x41, 0xE4, 0x2B, 0xCE, 0xAB, 0x2D, 0x9D, 0xEA, 0xFD, 0x41, 0x00, 0x42, 0x8F, 0xC9, 0xF4, 0x87, 0x54, 0x61, 0x2D, 0x42, 0x51, 0x3F, 0x52, 0x29, 0xCB, 0x87, 0x0F, 0x1F, 0xE4, 0x11, 0x33, 0x8E, 0xE5, 0xCD, 0x86, 0x6F, 0x96, 0x30, 0x40, 0x06, 0xF5, 0x7F, 0x42, 0xB2, 0x61, 0x93, 0x55, 0x87, 0xFE, 0x86, 0xE3, 0x67, 0x49, 0xA2, 0xC3, 0x1F, 0x6F, 0xEF, 0x76, 0x4E, 0xE5, 0x12, 0x89, 0x3E, 0x10, 0xFF, 0x90, 0x99, 0xBF, 0x40, 0x45, 0xAA, 0xFC, 0x10, 0xDC, 0xC1, 0xF1, 0x44, 0x13, 0x50, 0x58, 0x29, 0x61, 0x28, 0x95, 0x70, 0x05, 0x7E, 0x21, 0x8D, 0xE3, 0x83, 0xB2, 0x8F, 0xB2, 0xA2, 0x10, 0xE0, 0x93, 0xAC, 0xFD, 0x88, 0x38, 0x38, 0xC4, 0x46, 0x23, 0x4A, 0x41, 0xF8, 0x0F, 0xA8, 0x12, 0xD5, 0x88, 0x7F, 0x92, 0xA2, 0x21, 0xBE, 0xF1, 0x0A, 0x11, 0x92, 0x11, 0x99, 0xAB, 0xEA, 0xC3, 0x85, 0x22, 0x1B, 0xA2, 0xDF, 0xE9, 0x7E, 0x18, 0x95, 0xB6, 0x48, 0xD1, 0x9F, 0x50, 0xCF, 0x11, 0xBE, 0xF9, 0xB9, 0x1E, 0xC7, 0x9B, 0x00, 0xE3, 0x62, 0xAA, 0x98, 0x0E, 0x01, 0x87, 0xC0, 0x27, 0x59, 0x53, 0x83, 0x47, 0xBA, 0x96, 0xEA, 0xFF, 0x88, 0x68, 0xEA, 0x08, 0xD3, 0x58, 0xCE, 0x0F, 0x05, 0x8A, 0xDA, 0x27, 0x6E, 0x15, 0x18, 0xF2, 0xAF, 0x38, 0xEA, 0x54, 0xA0, 0x89, 0x74, 0xA1, 0x4B, 0x16, 0x9A, 0x14, 0x4D, 0x06, 0x85, 0x1D, 0xEC, 0xEF, 0x52, 0x54, 0x93, 0x2C, 0x09, 0xA3, 0xE9, 0xC6, 0x1C, 0x75, 0xAD, 0xD8, 0x14, 0x2E, 0x31, 0x58, 0x15, 0xCF, 0xB8, 0x44, 0x04, 0xAC, 0x1C, 0xF0, 0x22, 0xA9, 0x3B, 0x99, 0xD9, 0x44, 0x9D, 0x8E, 0xF8, 0x05, 0xE1, 0x04, 0x7B, 0x0B, 0x32, 0x13, 0x85, 0x22, 0xDE, 0x87, 0xAC, 0x27, 0xAB, 0x2A, 0x66, 0x75, 0xA1, 0x9B, 0xC0, 0x51, 0xE1, 0x59, 0x43, 0x5B, 0xC2, 0x37, 0xDF, 0x00, 0xD5, 0x98, 0x53, 0xE3, 0x95, 0xD0, 0xD2, 0x88, 0xF6, 0x8F, 0xFD, 0x28, 0x5D, 0xFE, 0x50, 0x34, 0xF4, 0x85, 0xEA, 0xA1, 0xC9, 0x0F, 0xA6, 0x72, 0xA8, 0x57, 0xF8, 0xEA, 0x50, 0x96, 0xC8, 0x84, 0x1E, 0xF8, 0x1F, 0x2C, 0xEB, 0xA9, 0xA3, 0x64, 0xE1, 0xAC, 0xE4, 0x2B, 0x50, 0xA4, 0x66, 0x54, 0x87, 0x63, 0xA2, 0x87, 0x00, 0x04, 0x29, 0x2F, 0x1E, 0x89, 0x51, 0xC1, 0xC0, 0xD0, 0xA4, 0xC7, 0x14, 0x52, 0xBA, 0x58, 0xF1, 0xC4, 0x41, 0x40, 0x57, 0xD5, 0xF2, 0xA6, 0x80, 0xEC, 0xB0, 0x30, 0xB1, 0x71, 0xDB, 0x45, 0xA4, 0x86, 0xAC, 0xA7, 0x98, 0xD4, 0xB3, 0x26, 0x42, 0xF1, 0x24, 0x31, 0x0C, 0x54, 0x4F, 0x68, 0x03, 0xB3, 0x0E, 0xD8, 0xB7, 0xE5, 0x8D, 0x1C, 0x8B, 0xD5, 0x08, 0x2D, 0x9E, 0xD0, 0x9C, 0x06, 0x62, 0xA1, 0xD5, 0x41, 0x3B, 0xA0, 0x5C, 0x7E, 0x92, 0x75, 0x84, 0x57, 0x38, 0x41, 0xA0, 0x25, 0xB3, 0xA6, 0xA3, 0x89, 0x33, 0xC2, 0xD1, 0x60, 0x72, 0x57, 0xB1, 0xC2, 0xC0, 0x2A, 0x79, 0xB0, 0xC2, 0x6C, 0x13, 0x01, 0x51, 0x21, 0xCB, 0x13, 0xA3, 0x32, 0x3E, 0x16, 0x49, 0xEF, 0x6C, 0xF1, 0x30, 0x90, 0x05, 0x5D, 0x85, 0x27, 0x1B, 0xAA, 0xC0, 0x74, 0x7A, 0x5C, 0x37, 0x01, 0x27, 0x05, 0xEA, 0x3C, 0x4A, 0x4B, 0x9F, 0x0D, 0xC8, 0x18, 0xA2, 0xD4, 0x20, 0x59, 0xCB, 0x19, 0x7D, 0x9C, 0x5F, 0x6C, 0x04, 0xCA, 0x28, 0x6E, 0x6B, 0xAC, 0x7B, 0x0C, 0xCE, 0xE5, 0x9E, 0x49, 0x84, 0x18, 0xDD, 0x1D, 0xAA, 0x39, 0x29, 0x9F, 0x30, 0xFA, 0x22, 0x67, 0x7C, 0x93, 0x92, 0x09, 0x13, 0x52, 0x2F, 0x1E, 0x4E, 0x6E, 0x61, 0x05, 0x18, 0x85, 0x07, 0xA9, 0x33, 0x1E, 0x68, 0xBD, 0x95, 0x31, 0x20, 0x8B, 0x2A, 0xA6, 0x70, 0x96, 0xC4, 0x5E, 0x3D, 0x95, 0x50, 0x79, 0x67, 0x46, 0xCA, 0x50, 0x20, 0xDF, 0x10, 0x2F, 0x08, 0xA0, 0x03, 0xBD, 0x2D, 0x50, 0xEE, 0x55, 0x2C, 0xEC, 0xC9, 0x5F, 0xB9, 0x11, 0x44, 0xEF, 0x4A, 0x21, 0x74, 0x74, 0x75, 0xF3, 0x86, 0xA2, 0x8A, 0x88, 0xA3, 0x77, 0x21, 0xC6, 0xC3, 0x21, 0x27, 0x8A, 0x42, 0x2C, 0x16, 0x3A, 0x88, 0x8A, 0x7F, 0x73, 0xEA, 0xD8, 0x79, 0x46, 0x1C, 0x67, 0x9B, 0x79, 0x61, 0x95, 0xF3, 0x44, 0x63, 0x65, 0x12, 0x8C, 0xA5, 0xBB, 0x88, 0x12, 0x67, 0x9F, 0x90, 0x5D, 0x95, 0x66, 0xA1, 0x9C, 0x57, 0x2A, 0x09, 0x34, 0x07, 0x7B, 0xD6, 0x02, 0xAC, 0x9A, 0x43, 0x10, 0xB5, 0x0A, 0xA0, 0x17, 0x1C, 0xA6, 0x00, 0x9B }; /* Data from bootstrap_font.pal inserted by mkbootstrap.lua: */ static const std::vector g_aBootstrapFontPal = { 0x52, 0x4E, 0x43, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB7, 0xFF, 0x76, 0x79, 0xBE, 0xEF, 0x90, 0x10, 0x90, 0x05, 0x01, 0x02, 0x00, 0x00, 0x20, 0x2B, 0x04, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x62, 0x79, 0xBE, 0x27, 0x3F }; /* End autogenerated content */ // Lua reader function for loading g_sBootstrapCode static const char* read_bootstrap_line(lua_State *L, void *data, size_t *size) { int& iLine = *reinterpret_cast(data); ++iLine; if(iLine < 0 || (iLine & 1)) { *size = 1; return "\n"; } else { const char *s = g_sBootstrapCode[iLine / 2]; if(s == nullptr) { *size = 0; return nullptr; } else { *size = std::strlen(s); return s; } } } static inline void push(lua_State *L, std::vector data) { lua_pushlstring(L, reinterpret_cast(data.data()), data.size()); } int Bootstrap_lua_resources(lua_State *L) { push(L, g_aBootstrapFontDat); push(L, g_aBootstrapFontTab); push(L, g_aBootstrapFontPal); return 3; } int Bootstrap_lua_error_report(lua_State *L) { int iLine = -g_iBootstrapCodeLineNumStart; if(luaT_load(L, read_bootstrap_line, &iLine, "@bootstrap.cpp", "t") == 0) { Bootstrap_lua_resources(L); lua_pushvalue(L, 1); lua_call(L, 4, 0); return 0; } else return lua_error(L); } CorsixTH-0.61/CorsixTH/Src/bootstrap.h000066400000000000000000000026311321660673500175760ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_BOOTSTRAP_H_ #define CORSIX_TH_BOOTSTRAP_H_ #include "lua.hpp" //! Push onto the stack the bootstrap font data file, table file and palette. int Bootstrap_lua_resources(lua_State *L); //! Provide an onscreen report of the error message on the top of the stack. int Bootstrap_lua_error_report(lua_State *L); #endif // CORSIX_TH_BOOTSTRAP_H_ CorsixTH-0.61/CorsixTH/Src/config.h.in000066400000000000000000000063061321660673500174360ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_CONFIG_H_ #define CORSIX_TH_CONFIG_H_ /** Windows Platform SDK usage **/ // When compiling on Windows, the platform SDK should be used. However, when // using the SDL rendering engine, the platform SDK is not used for anything // critical, and so its use can be avoided if necessary. #ifdef _WIN32 #define CORSIX_TH_USE_WIN32_SDK #endif /** Audio options **/ // SDL_mixer is used for ingame audio. If this library is not present on your // system, then you can comment out the next line and the game will not have // any music. #cmakedefine CORSIX_TH_USE_SDL_MIXER /** Movie options **/ // FFMPEG or LibAV are used for in game movies. // If this library is not present on your system, then you can comment out the // next line and the game will not have movies. #cmakedefine CORSIX_TH_USE_FFMPEG #ifndef CORSIX_TH_USE_FFMPEG #cmakedefine CORSIX_TH_USE_LIBAV #endif /** Font options **/ // FreeType2 can be used for font support beyond the CP437 bitmap fonts which // come with Theme Hospital. It must be used if translations like Russian or // Chinese are desired. #cmakedefine CORSIX_TH_USE_FREETYPE2 /** Environment detection **/ #if defined(__amd64__) || defined(__IA64__) || defined(__x86_64__) || \ defined(__x86_64) || defined(_M_IA64) || defined(_IA64) || \ defined(_M_X64) || defined(_WIN64) || defined(__ia64__) || \ defined(__amd64) || defined (_LP64) || defined(__ia64) #define CORSIX_TH_64BIT #endif #ifdef _MSC_VER #define CORSIX_TH_USE_PACK_PRAGMAS 1 #define CORSIX_TH_PACKED_FLAGS #else #define CORSIX_TH_USE_PACK_PRAGMAS 0 #define CORSIX_TH_PACKED_FLAGS __attribute__((__packed__)) #endif /** Standard includes **/ #ifndef __STDC_CONSTANT_MACROS # define __STDC_CONSTANT_MACROS #endif #include #include // We bring in the most common stddef and stdint types to avoid typing using std::size_t; using std::uint8_t; using std::uint16_t; using std::uint32_t; using std::uint64_t; using std::int8_t; using std::int16_t; using std::int32_t; using std::int64_t; /** Visual Leak Detector **/ // In Visual Studio, Visual Leak Detector can be used to find memory leaks. #cmakedefine CORSIX_TH_USE_VLD #endif // CORSIX_TH_CONFIG_H_ CorsixTH-0.61/CorsixTH/Src/cp437_table.h000066400000000000000000000022441321660673500175700ustar00rootroot00000000000000static const uint16_t g_aCP437toUnicode[0x80] = { /* 0x00 through 0x7F need no translation */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, 0x00C9, 0x00E6, 0x003F, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 }; CorsixTH-0.61/CorsixTH/Src/cp936_table.h000066400000000000000000006530011321660673500175770ustar00rootroot00000000000000// Generated from the following document: // http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT // Maps double-byte characters where: // 1st byte is between 0x81 and 0xFE (subtract 0x81 for table lookup) // 2nd byte is between 0x40 and 0xFE (subtract 0x40 for table lookup) // Unspecified codes are mapped to 0x003F static const uint16_t g_aCP936toUnicode[126][191] = { { 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, 0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, 0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, 0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C, 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, 0x4E74, 0x4E75, 0x4E76, 0x4E77, 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, 0x4E7F, 0x4E80, 0x4E81, 0x4E82, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A, 0x003F, 0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3, 0x4EAA, 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9, 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, 0x4F04, 0x4F05, 0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14, 0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, 0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0x4F47, 0x4F48, 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56, 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E, 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A, 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98, 0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2 }, { 0x4FA4, 0x4FAB, 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0x4FB6, 0x4FB7, 0x4FB8, 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB, 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, 0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB, 0x4FFC, 0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500A, 0x003F, 0x500B, 0x500E, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501B, 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502B, 0x502F, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038, 0x5039, 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504A, 0x504B, 0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A, 0x506B, 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5078, 0x5079, 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508A, 0x508B, 0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509A, 0x509B, 0x509C, 0x509D, 0x509E, 0x509F, 0x50A0, 0x50A1, 0x50A2, 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AD, 0x50AE, 0x50AF, 0x50B0, 0x50B1, 0x50B3, 0x50B4, 0x50B5, 0x50B6, 0x50B7, 0x50B8, 0x50B9, 0x50BC }, { 0x50BD, 0x50BE, 0x50BF, 0x50C0, 0x50C1, 0x50C2, 0x50C3, 0x50C4, 0x50C5, 0x50C6, 0x50C7, 0x50C8, 0x50C9, 0x50CA, 0x50CB, 0x50CC, 0x50CD, 0x50CE, 0x50D0, 0x50D1, 0x50D2, 0x50D3, 0x50D4, 0x50D5, 0x50D7, 0x50D8, 0x50D9, 0x50DB, 0x50DC, 0x50DD, 0x50DE, 0x50DF, 0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4, 0x50E5, 0x50E8, 0x50E9, 0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6, 0x50F7, 0x50F8, 0x50F9, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF, 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0x003F, 0x5109, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5110, 0x5111, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511A, 0x511B, 0x511C, 0x511D, 0x511E, 0x511F, 0x5120, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512A, 0x512B, 0x512C, 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513A, 0x513B, 0x513C, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E, 0x514F, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, 0x515D, 0x515E, 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x5169, 0x516A, 0x516F, 0x5172, 0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, 0x5187, 0x518A, 0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A, 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9, 0x51AA, 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF, 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CD, 0x51CE, 0x51D0, 0x51D2, 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7 }, { 0x51D8, 0x51D9, 0x51DA, 0x51DC, 0x51DE, 0x51DF, 0x51E2, 0x51E3, 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, 0x51EA, 0x51EC, 0x51EE, 0x51F1, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, 0x5209, 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C, 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522A, 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, 0x523E, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524B, 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0x003F, 0x5259, 0x525A, 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, 0x5264, 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, 0x5270, 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, 0x5289, 0x528A, 0x528B, 0x528C, 0x528D, 0x528E, 0x528F, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AE, 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9, 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C1, 0x52C2, 0x52C4, 0x52C5, 0x52C6, 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, 0x52D1, 0x52D3, 0x52D4, 0x52D5, 0x52D7, 0x52D9, 0x52DA, 0x52DB, 0x52DC, 0x52DD, 0x52DE, 0x52E0, 0x52E1, 0x52E2, 0x52E3, 0x52E5, 0x52E6, 0x52E7, 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED, 0x52EE, 0x52EF, 0x52F1, 0x52F2, 0x52F3, 0x52F4, 0x52F5, 0x52F6, 0x52F7, 0x52F8, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, 0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E }, { 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E, 0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, 0x532C, 0x532D, 0x532F, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5340, 0x5342, 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5354, 0x5358, 0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D, 0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, 0x537E, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, 0x538F, 0x003F, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539B, 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, 0x53A7, 0x53AA, 0x53AB, 0x53AC, 0x53AD, 0x53AF, 0x53B0, 0x53B1, 0x53B2, 0x53B3, 0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53B9, 0x53BA, 0x53BC, 0x53BD, 0x53BE, 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, 0x53C7, 0x53CE, 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD, 0x53DE, 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, 0x5400, 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, 0x541A, 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, 0x5436, 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, 0x544F, 0x5451, 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, 0x546F, 0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483, 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, 0x5497, 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1 }, { 0x54A2, 0x54A5, 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, 0x54B9, 0x54BA, 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, 0x54CB, 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, 0x54E4, 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6, 0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, 0x5504, 0x5505, 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, 0x551C, 0x551D, 0x551E, 0x551F, 0x5521, 0x5525, 0x5526, 0x003F, 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, 0x5545, 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x554F, 0x5551, 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B, 0x555D, 0x555E, 0x555F, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556B, 0x556F, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, 0x558D, 0x558E, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, 0x559B, 0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6, 0x55A8, 0x55A9, 0x55AA, 0x55AB, 0x55AC, 0x55AD, 0x55AE, 0x55AF, 0x55B0, 0x55B2, 0x55B4, 0x55B6, 0x55B8, 0x55BA, 0x55BC, 0x55BF, 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C6, 0x55C7, 0x55C8, 0x55CA, 0x55CB, 0x55CE, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, 0x55DA, 0x55DB, 0x55DE, 0x55E0, 0x55E2, 0x55E7, 0x55E9, 0x55ED, 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F6, 0x55F8, 0x55F9, 0x55FA, 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605 }, { 0x5606, 0x5607, 0x560A, 0x560B, 0x560D, 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561A, 0x561C, 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629, 0x562A, 0x562B, 0x562E, 0x562F, 0x5630, 0x5633, 0x5635, 0x5637, 0x5638, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A, 0x564B, 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B, 0x565D, 0x565E, 0x565F, 0x5660, 0x5661, 0x003F, 0x5663, 0x5665, 0x5666, 0x5667, 0x566D, 0x566E, 0x566F, 0x5670, 0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567A, 0x567D, 0x567E, 0x567F, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5687, 0x5688, 0x5689, 0x568A, 0x568B, 0x568C, 0x568D, 0x5690, 0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 0x569A, 0x569B, 0x569C, 0x569D, 0x569E, 0x569F, 0x56A0, 0x56A1, 0x56A2, 0x56A4, 0x56A5, 0x56A6, 0x56A7, 0x56A8, 0x56A9, 0x56AA, 0x56AB, 0x56AC, 0x56AD, 0x56AE, 0x56B0, 0x56B1, 0x56B2, 0x56B3, 0x56B4, 0x56B5, 0x56B6, 0x56B8, 0x56B9, 0x56BA, 0x56BB, 0x56BD, 0x56BE, 0x56BF, 0x56C0, 0x56C1, 0x56C2, 0x56C3, 0x56C4, 0x56C5, 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56CB, 0x56CC, 0x56CD, 0x56CE, 0x56CF, 0x56D0, 0x56D1, 0x56D2, 0x56D3, 0x56D5, 0x56D6, 0x56D8, 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9, 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, 0x56F8, 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x570B, 0x570C, 0x570D, 0x570E, 0x570F, 0x5710, 0x5711 }, { 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719, 0x571A, 0x571B, 0x571D, 0x571E, 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B, 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, 0x573F, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775, 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780, 0x003F, 0x5781, 0x5787, 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F, 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A5, 0x57A8, 0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, 0x57B5, 0x57B6, 0x57B7, 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, 0x57BF, 0x57C0, 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, 0x57CA, 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB, 0x57DC, 0x57DE, 0x57E1, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7, 0x57E8, 0x57E9, 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1, 0x57F2, 0x57F3, 0x57F5, 0x57F6, 0x57F7, 0x57FB, 0x57FC, 0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580A, 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 0x5817, 0x5818, 0x581A, 0x581B, 0x581C, 0x581D, 0x581F, 0x5822, 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582B, 0x582C, 0x582D, 0x582E, 0x582F, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D }, { 0x583E, 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, 0x5847, 0x5848, 0x5849, 0x584A, 0x584B, 0x584E, 0x584F, 0x5850, 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B, 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5866, 0x5867, 0x5868, 0x5869, 0x586A, 0x586D, 0x586E, 0x586F, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, 0x5878, 0x5879, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, 0x5882, 0x5884, 0x5886, 0x5887, 0x5888, 0x588A, 0x588B, 0x588C, 0x003F, 0x588D, 0x588E, 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589B, 0x589C, 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58AA, 0x58AB, 0x58AC, 0x58AD, 0x58AE, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B3, 0x58B4, 0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BB, 0x58BD, 0x58BE, 0x58BF, 0x58C0, 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C7, 0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC, 0x58CD, 0x58CE, 0x58CF, 0x58D0, 0x58D2, 0x58D3, 0x58D4, 0x58D6, 0x58D7, 0x58D8, 0x58D9, 0x58DA, 0x58DB, 0x58DC, 0x58DD, 0x58DE, 0x58DF, 0x58E0, 0x58E1, 0x58E2, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58E9, 0x58EA, 0x58ED, 0x58EF, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0x58FA, 0x58FB, 0x58FC, 0x58FD, 0x58FE, 0x58FF, 0x5900, 0x5901, 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590A, 0x590B, 0x590C, 0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591B, 0x591D, 0x591E, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B }, { 0x593D, 0x593E, 0x593F, 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, 0x594C, 0x594D, 0x5950, 0x5952, 0x5953, 0x5959, 0x595B, 0x595C, 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967, 0x5968, 0x5969, 0x596A, 0x596B, 0x596C, 0x596D, 0x596E, 0x596F, 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F, 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599D, 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6, 0x003F, 0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5, 0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, 0x59C1, 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD, 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, 0x59E0, 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, 0x59EB, 0x59ED, 0x59EE, 0x59EF, 0x59F0, 0x59F1, 0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6, 0x59F7, 0x59F8, 0x59FA, 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16, 0x5A17, 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24, 0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, 0x5A2F, 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D, 0x5A3E, 0x5A3F, 0x5A41, 0x5A42, 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0x5A4B, 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, 0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54, 0x5A56, 0x5A57, 0x5A58, 0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F, 0x5A60 }, { 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A66, 0x5A68, 0x5A69, 0x5A6B, 0x5A6C, 0x5A6D, 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73, 0x5A78, 0x5A79, 0x5A7B, 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81, 0x5A82, 0x5A83, 0x5A84, 0x5A85, 0x5A86, 0x5A87, 0x5A88, 0x5A89, 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E, 0x5A8F, 0x5A90, 0x5A91, 0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98, 0x5A99, 0x5A9C, 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3, 0x5AA4, 0x5AA5, 0x5AA6, 0x5AA7, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC, 0x003F, 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, 0x5ABD, 0x5ABF, 0x5AC0, 0x5AC3, 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, 0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5, 0x5AD7, 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5, 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, 0x5AF2, 0x5AF3, 0x5AF4, 0x5AF5, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9, 0x5AFA, 0x5AFB, 0x5AFC, 0x5AFD, 0x5AFE, 0x5AFF, 0x5B00, 0x5B01, 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07, 0x5B08, 0x5B0A, 0x5B0B, 0x5B0C, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12, 0x5B13, 0x5B14, 0x5B15, 0x5B18, 0x5B19, 0x5B1A, 0x5B1B, 0x5B1C, 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, 0x5B21, 0x5B22, 0x5B23, 0x5B24, 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2A, 0x5B2B, 0x5B2C, 0x5B2D, 0x5B2E, 0x5B2F, 0x5B30, 0x5B31, 0x5B33, 0x5B35, 0x5B36, 0x5B38, 0x5B39, 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F, 0x5B41, 0x5B42, 0x5B43, 0x5B44, 0x5B45, 0x5B46, 0x5B47 }, { 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4C, 0x5B4D, 0x5B4E, 0x5B4F, 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, 0x5B6B, 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B78, 0x5B79, 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, 0x5B86, 0x5B8A, 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, 0x5B96, 0x5B9F, 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, 0x5BAF, 0x5BB1, 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BC3, 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF, 0x003F, 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, 0x5BDB, 0x5BDC, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, 0x5BE9, 0x5BEA, 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3, 0x5BF4, 0x5BF5, 0x5BF6, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, 0x5C03, 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, 0x5C0E, 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, 0x5C20, 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, 0x5C2D, 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, 0x5C37, 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, 0x5C5C, 0x5C5D, 0x5C5F, 0x5C62, 0x5C64, 0x5C67, 0x5C68, 0x5C69, 0x5C6A, 0x5C6B, 0x5C6C, 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75, 0x5C76, 0x5C77, 0x5C78, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, 0x5C83, 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, 0x5C9F, 0x5CA0, 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8 }, { 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, 0x5CBA, 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5, 0x5CC6, 0x5CC7, 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE, 0x5CCF, 0x5CD0, 0x5CD1, 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7, 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0, 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF, 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF4, 0x5CF5, 0x5CF6, 0x5CF7, 0x5CF8, 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00, 0x003F, 0x5D01, 0x5D04, 0x5D05, 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, 0x5D0D, 0x5D0F, 0x5D10, 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17, 0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21, 0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F, 0x5D30, 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 0x5D39, 0x5D3A, 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, 0x5D43, 0x5D44, 0x5D45, 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, 0x5D4F, 0x5D50, 0x5D51, 0x5D52, 0x5D53, 0x5D54, 0x5D55, 0x5D56, 0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, 0x5D60, 0x5D61, 0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, 0x5D6A, 0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76, 0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, 0x5D7F, 0x5D80, 0x5D81, 0x5D83, 0x5D84, 0x5D85, 0x5D86, 0x5D87, 0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, 0x5D8D, 0x5D8E, 0x5D8F, 0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D96, 0x5D97, 0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA0 }, { 0x5DA1, 0x5DA2, 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA7, 0x5DA8, 0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC, 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, 0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5, 0x5DB6, 0x5DB8, 0x5DB9, 0x5DBA, 0x5DBB, 0x5DBC, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, 0x5DC2, 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, 0x5DCB, 0x5DCC, 0x5DCE, 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD2, 0x5DD3, 0x5DD4, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, 0x5DDA, 0x5DDC, 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED, 0x003F, 0x5DF0, 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00, 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13, 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, 0x5E22, 0x5E23, 0x5E24, 0x5E25, 0x5E28, 0x5E29, 0x5E2A, 0x5E2B, 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E33, 0x5E34, 0x5E35, 0x5E36, 0x5E39, 0x5E3A, 0x5E3E, 0x5E3F, 0x5E40, 0x5E41, 0x5E43, 0x5E46, 0x5E47, 0x5E48, 0x5E49, 0x5E4A, 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, 0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56, 0x5E57, 0x5E58, 0x5E59, 0x5E5A, 0x5E5C, 0x5E5D, 0x5E5F, 0x5E60, 0x5E63, 0x5E64, 0x5E65, 0x5E66, 0x5E67, 0x5E68, 0x5E69, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D, 0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75, 0x5E77, 0x5E79, 0x5E7E, 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, 0x5EA4, 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF, 0x5EB0, 0x5EB1, 0x5EB2, 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, 0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2, 0x5EC3, 0x5EC4, 0x5EC5 }, { 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD, 0x5ECE, 0x5ECF, 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, 0x5EDC, 0x5EDD, 0x5EDE, 0x5EDF, 0x5EE0, 0x5EE1, 0x5EE2, 0x5EE3, 0x5EE4, 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB, 0x5EEC, 0x5EED, 0x5EEE, 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF3, 0x5EF5, 0x5EF8, 0x5EF9, 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D, 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24, 0x003F, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F32, 0x5F33, 0x5F34, 0x5F35, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E, 0x5F3F, 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F46, 0x5F47, 0x5F48, 0x5F49, 0x5F4A, 0x5F4B, 0x5F4C, 0x5F4D, 0x5F4E, 0x5F4F, 0x5F51, 0x5F54, 0x5F59, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E, 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F, 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F91, 0x5F93, 0x5F94, 0x5F96, 0x5F9A, 0x5F9B, 0x5F9D, 0x5F9E, 0x5F9F, 0x5FA0, 0x5FA2, 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, 0x5FA9, 0x5FAB, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6, 0x5FB8, 0x5FB9, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7, 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB, 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9, 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, 0x5FFA, 0x5FFC, 0x6007 }, { 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, 0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024, 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036, 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E, 0x604F, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B, 0x605C, 0x605E, 0x605F, 0x6060, 0x6061, 0x6065, 0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607E, 0x6080, 0x003F, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608A, 0x608B, 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7, 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B5, 0x60B6, 0x60B7, 0x60B9, 0x60BA, 0x60BD, 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2, 0x60C3, 0x60C4, 0x60C7, 0x60C8, 0x60C9, 0x60CC, 0x60CD, 0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, 0x60D6, 0x60D7, 0x60D9, 0x60DB, 0x60DE, 0x60E1, 0x60E2, 0x60E3, 0x60E4, 0x60E5, 0x60EA, 0x60F1, 0x60F2, 0x60F5, 0x60F7, 0x60F8, 0x60FB, 0x60FC, 0x60FD, 0x60FE, 0x60FF, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610A, 0x610B, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611B, 0x611C, 0x611D, 0x611E, 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E, 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137, 0x6138, 0x6139, 0x613A, 0x613B, 0x613C, 0x613D, 0x613E, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146 }, { 0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153, 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615A, 0x615B, 0x615C, 0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166, 0x6169, 0x616A, 0x616B, 0x616C, 0x616D, 0x616E, 0x616F, 0x6171, 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617A, 0x617B, 0x617C, 0x617D, 0x617E, 0x617F, 0x6180, 0x6181, 0x6182, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618A, 0x618C, 0x618D, 0x618F, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x003F, 0x6196, 0x6197, 0x6198, 0x6199, 0x619A, 0x619B, 0x619C, 0x619E, 0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A4, 0x61A5, 0x61A6, 0x61AA, 0x61AB, 0x61AD, 0x61AE, 0x61AF, 0x61B0, 0x61B1, 0x61B2, 0x61B3, 0x61B4, 0x61B5, 0x61B6, 0x61B8, 0x61B9, 0x61BA, 0x61BB, 0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5, 0x61C6, 0x61C7, 0x61C9, 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3, 0x61D5, 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, 0x61DC, 0x61DD, 0x61DE, 0x61DF, 0x61E0, 0x61E1, 0x61E2, 0x61E3, 0x61E4, 0x61E5, 0x61E7, 0x61E8, 0x61E9, 0x61EA, 0x61EB, 0x61EC, 0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F2, 0x61F3, 0x61F4, 0x61F6, 0x61F7, 0x61F8, 0x61F9, 0x61FA, 0x61FB, 0x61FC, 0x61FD, 0x61FE, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209, 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220, 0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F, 0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B, 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A }, { 0x624F, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, 0x625D, 0x625E, 0x625F, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A, 0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, 0x6294, 0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, 0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6, 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0x003F, 0x62C3, 0x62CB, 0x62CF, 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, 0x62EA, 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310, 0x6312, 0x6313, 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, 0x6327, 0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633E, 0x633F, 0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635A, 0x635B, 0x635C, 0x635D, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636A, 0x636B, 0x636C, 0x636F, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6383, 0x6384, 0x6385, 0x6386, 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399, 0x639A, 0x639B, 0x639C, 0x639D, 0x639E, 0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF, 0x63C0 }, { 0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC, 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9, 0x63DA, 0x63DB, 0x63DC, 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, 0x63EB, 0x63EC, 0x63EE, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA, 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640A, 0x640D, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418, 0x6419, 0x641A, 0x641D, 0x641F, 0x6422, 0x6423, 0x6424, 0x003F, 0x6425, 0x6427, 0x6428, 0x6429, 0x642B, 0x642E, 0x642F, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449, 0x644B, 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6451, 0x6453, 0x6455, 0x6456, 0x6457, 0x6459, 0x645A, 0x645B, 0x645C, 0x645D, 0x645F, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 0x646A, 0x646B, 0x646C, 0x646E, 0x646F, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647B, 0x647C, 0x647D, 0x647E, 0x647F, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 0x648A, 0x648B, 0x648C, 0x648D, 0x648E, 0x648F, 0x6490, 0x6493, 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C, 0x649D, 0x649F, 0x64A0, 0x64A1, 0x64A2, 0x64A3, 0x64A5, 0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AB, 0x64AF, 0x64B1, 0x64B2, 0x64B3, 0x64B4, 0x64B6, 0x64B9, 0x64BB, 0x64BD, 0x64BE, 0x64BF, 0x64C1, 0x64C3, 0x64C4, 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CF, 0x64D1, 0x64D3, 0x64D4, 0x64D5, 0x64D6, 0x64D9, 0x64DA }, { 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, 0x64E1, 0x64E3, 0x64E5, 0x64E7, 0x64E8, 0x64E9, 0x64EA, 0x64EB, 0x64EC, 0x64ED, 0x64EE, 0x64EF, 0x64F0, 0x64F1, 0x64F2, 0x64F3, 0x64F4, 0x64F5, 0x64F6, 0x64F7, 0x64F8, 0x64F9, 0x64FA, 0x64FB, 0x64FC, 0x64FD, 0x64FE, 0x64FF, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, 0x6508, 0x650A, 0x650B, 0x650C, 0x650D, 0x650E, 0x650F, 0x6510, 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651A, 0x651B, 0x651C, 0x651D, 0x651E, 0x651F, 0x6520, 0x6521, 0x003F, 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652A, 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A, 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, 0x6552, 0x6553, 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, 0x656D, 0x656E, 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657A, 0x657B, 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658A, 0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, 0x65AA, 0x65AC, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6, 0x65B7, 0x65B8, 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2, 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3, 0x65D4, 0x65D5, 0x65D8, 0x65D9, 0x65DA, 0x65DB, 0x65DC, 0x65DD, 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, 0x65EA, 0x65EB }, { 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, 0x65FC, 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, 0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, 0x663B, 0x663D, 0x663F, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, 0x6658, 0x003F, 0x6659, 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, 0x6662, 0x6663, 0x6665, 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, 0x667F, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, 0x669E, 0x669F, 0x66A0, 0x66A1, 0x66A2, 0x66A3, 0x66A4, 0x66A5, 0x66A6, 0x66A9, 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, 0x66B2, 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, 0x66BC, 0x66BD, 0x66BF, 0x66C0, 0x66C1, 0x66C2, 0x66C3, 0x66C4, 0x66C5, 0x66C6, 0x66C7, 0x66C8, 0x66C9, 0x66CA, 0x66CB, 0x66CC, 0x66CD, 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, 0x66D5, 0x66D6, 0x66D7, 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E0, 0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5, 0x66E7, 0x66E8, 0x66EA, 0x66EB, 0x66EC, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, 0x66F6, 0x66F8, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703 }, { 0x6704, 0x6705, 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E, 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729, 0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, 0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676B, 0x676C, 0x676E, 0x6771, 0x6774, 0x6776, 0x003F, 0x6778, 0x6779, 0x677A, 0x677B, 0x677D, 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, 0x678E, 0x678F, 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, 0x679F, 0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, 0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, 0x67BF, 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, 0x67CA, 0x67CB, 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, 0x67DB, 0x67DF, 0x67E1, 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, 0x67EB, 0x67ED, 0x67EE, 0x67F2, 0x67F5, 0x67F6, 0x67F7, 0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC, 0x67FE, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, 0x6820, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B, 0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836, 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F, 0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685A, 0x685B }, { 0x685C, 0x685D, 0x685E, 0x685F, 0x686A, 0x686C, 0x686D, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879, 0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F, 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C, 0x688D, 0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898, 0x6899, 0x689A, 0x689B, 0x689C, 0x689D, 0x689E, 0x689F, 0x68A0, 0x68A1, 0x68A3, 0x68A4, 0x68A5, 0x68A9, 0x68AA, 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, 0x68B7, 0x68B8, 0x003F, 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF, 0x68C1, 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC, 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D6, 0x68D7, 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, 0x68DF, 0x68E1, 0x68E2, 0x68E4, 0x68E5, 0x68E6, 0x68E7, 0x68E8, 0x68E9, 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6, 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903, 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x690F, 0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691A, 0x691B, 0x691C, 0x691D, 0x691E, 0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692A, 0x692B, 0x692C, 0x692E, 0x692F, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940, 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694A, 0x694B, 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6953, 0x6955, 0x6956, 0x6958, 0x6959, 0x695B, 0x695C, 0x695F }, { 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696A, 0x696C, 0x696D, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983, 0x6985, 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991, 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E, 0x699F, 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6, 0x69A9, 0x69AA, 0x69AC, 0x69AE, 0x69AF, 0x69B0, 0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD, 0x003F, 0x69BE, 0x69BF, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6, 0x69C7, 0x69C8, 0x69C9, 0x69CB, 0x69CD, 0x69CF, 0x69D1, 0x69D2, 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, 0x69D9, 0x69DA, 0x69DC, 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, 0x69E5, 0x69E6, 0x69E7, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF, 0x69F0, 0x69F1, 0x69F3, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8, 0x69F9, 0x69FA, 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A01, 0x6A02, 0x6A03, 0x6A04, 0x6A05, 0x6A06, 0x6A07, 0x6A08, 0x6A09, 0x6A0B, 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, 0x6A13, 0x6A14, 0x6A15, 0x6A16, 0x6A19, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D, 0x6A1E, 0x6A20, 0x6A22, 0x6A23, 0x6A24, 0x6A25, 0x6A26, 0x6A27, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, 0x6A30, 0x6A32, 0x6A33, 0x6A34, 0x6A36, 0x6A37, 0x6A38, 0x6A39, 0x6A3A, 0x6A3B, 0x6A3C, 0x6A3F, 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A48, 0x6A49, 0x6A4A, 0x6A4B, 0x6A4C, 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51, 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, 0x6A57, 0x6A5A }, { 0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, 0x6A62, 0x6A63, 0x6A64, 0x6A66, 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D, 0x6A6E, 0x6A6F, 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76, 0x6A77, 0x6A78, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81, 0x6A82, 0x6A83, 0x6A85, 0x6A86, 0x6A87, 0x6A88, 0x6A89, 0x6A8A, 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, 0x6A95, 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9C, 0x6A9D, 0x6A9E, 0x6A9F, 0x6AA1, 0x6AA2, 0x6AA3, 0x6AA4, 0x6AA5, 0x6AA6, 0x003F, 0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, 0x6AAF, 0x6AB0, 0x6AB1, 0x6AB2, 0x6AB3, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB8, 0x6AB9, 0x6ABA, 0x6ABB, 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, 0x6AC2, 0x6AC3, 0x6AC4, 0x6AC5, 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, 0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, 0x6ACF, 0x6AD0, 0x6AD1, 0x6AD2, 0x6AD3, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, 0x6AD9, 0x6ADA, 0x6ADB, 0x6ADC, 0x6ADD, 0x6ADE, 0x6ADF, 0x6AE0, 0x6AE1, 0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, 0x6AE7, 0x6AE8, 0x6AE9, 0x6AEA, 0x6AEB, 0x6AEC, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, 0x6AF2, 0x6AF3, 0x6AF4, 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF8, 0x6AF9, 0x6AFA, 0x6AFB, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, 0x6B00, 0x6B01, 0x6B02, 0x6B03, 0x6B04, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09, 0x6B0A, 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B0F, 0x6B10, 0x6B11, 0x6B12, 0x6B13, 0x6B14, 0x6B15, 0x6B16, 0x6B17, 0x6B18, 0x6B19, 0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1E, 0x6B1F, 0x6B25, 0x6B26, 0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E }, { 0x6B2F, 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, 0x6B3C, 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, 0x6B48, 0x6B4A, 0x6B4B, 0x6B4D, 0x6B4E, 0x6B4F, 0x6B50, 0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56, 0x6B57, 0x6B58, 0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B5F, 0x6B60, 0x6B61, 0x6B68, 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, 0x6B71, 0x6B72, 0x6B73, 0x6B74, 0x6B75, 0x6B76, 0x6B77, 0x6B78, 0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, 0x6B88, 0x003F, 0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, 0x6B98, 0x6B99, 0x6B9C, 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3, 0x6BA4, 0x6BA5, 0x6BA6, 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAB, 0x6BAC, 0x6BAD, 0x6BAE, 0x6BAF, 0x6BB0, 0x6BB1, 0x6BB2, 0x6BB6, 0x6BB8, 0x6BB9, 0x6BBA, 0x6BBB, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC6, 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, 0x6BE7, 0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, 0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, 0x6BFF, 0x6C00, 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C08, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0C, 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C23, 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31, 0x6C33, 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43, 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51, 0x6C52, 0x6C53, 0x6C56, 0x6C58 }, { 0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65, 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73, 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84, 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96, 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8, 0x003F, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, 0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9, 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A, 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18, 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24, 0x6D26, 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37, 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50, 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, 0x6D64, 0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, 0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F, 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D87, 0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F, 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7, 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD, 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, 0x6DC8, 0x6DC9, 0x6DCA }, { 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, 0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3, 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2, 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, 0x6DFD, 0x6DFE, 0x6DFF, 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, 0x6E06, 0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, 0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E26, 0x6E27, 0x6E28, 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35, 0x003F, 0x6E36, 0x6E37, 0x6E39, 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3E, 0x6E3F, 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, 0x6E47, 0x6E48, 0x6E49, 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, 0x6E52, 0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E5E, 0x6E60, 0x6E61, 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69, 0x6E6A, 0x6E6C, 0x6E6D, 0x6E6F, 0x6E70, 0x6E71, 0x6E72, 0x6E73, 0x6E74, 0x6E75, 0x6E76, 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B, 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, 0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0x6E91, 0x6E92, 0x6E93, 0x6E94, 0x6E95, 0x6E96, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, 0x6E9D, 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9, 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8, 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, 0x6EC5, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, 0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3, 0x6EE7, 0x6EEA, 0x6EEB, 0x6EEC, 0x6EED, 0x6EEE, 0x6EEF }, { 0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, 0x6EF7, 0x6EF8, 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6EFF, 0x6F00, 0x6F01, 0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C, 0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18, 0x6F19, 0x6F1A, 0x6F1B, 0x6F1C, 0x6F1D, 0x6F1E, 0x6F1F, 0x6F21, 0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2C, 0x6F2E, 0x6F30, 0x6F32, 0x6F34, 0x6F35, 0x6F37, 0x6F38, 0x6F39, 0x6F3A, 0x6F3B, 0x6F3C, 0x6F3D, 0x6F3F, 0x6F40, 0x6F41, 0x6F42, 0x003F, 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E, 0x6F4F, 0x6F50, 0x6F51, 0x6F52, 0x6F53, 0x6F54, 0x6F55, 0x6F56, 0x6F57, 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, 0x6F63, 0x6F64, 0x6F65, 0x6F67, 0x6F68, 0x6F69, 0x6F6A, 0x6F6B, 0x6F6C, 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F77, 0x6F79, 0x6F7B, 0x6F7D, 0x6F7E, 0x6F7F, 0x6F80, 0x6F81, 0x6F82, 0x6F83, 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, 0x6F8F, 0x6F90, 0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F97, 0x6F98, 0x6F99, 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2, 0x6FA3, 0x6FA4, 0x6FA5, 0x6FA6, 0x6FA8, 0x6FA9, 0x6FAA, 0x6FAB, 0x6FAC, 0x6FAD, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB1, 0x6FB2, 0x6FB4, 0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, 0x6FBF, 0x6FC1, 0x6FC3, 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, 0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD, 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, 0x6FD4, 0x6FD5, 0x6FD6, 0x6FD7, 0x6FD8, 0x6FD9, 0x6FDA, 0x6FDB, 0x6FDC, 0x6FDD, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, 0x6FE5 }, { 0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9, 0x6FEA, 0x6FEB, 0x6FEC, 0x6FED, 0x6FF0, 0x6FF1, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7, 0x6FF8, 0x6FF9, 0x6FFA, 0x6FFB, 0x6FFC, 0x6FFD, 0x6FFE, 0x6FFF, 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009, 0x700A, 0x700B, 0x700C, 0x700D, 0x700E, 0x700F, 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018, 0x7019, 0x701C, 0x701D, 0x701E, 0x701F, 0x7020, 0x7021, 0x7022, 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702A, 0x003F, 0x702B, 0x702C, 0x702D, 0x702E, 0x702F, 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B, 0x703C, 0x703D, 0x703E, 0x703F, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704A, 0x704B, 0x704D, 0x704E, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057, 0x7058, 0x7059, 0x705A, 0x705B, 0x705C, 0x705D, 0x705F, 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x706A, 0x706E, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081, 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D, 0x708F, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E, 0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, 0x70A7, 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA, 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70CB, 0x70CC, 0x70CD, 0x70CE, 0x70CF, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D7, 0x70DA }, { 0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, 0x70E5, 0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F4, 0x70F5, 0x70F6, 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, 0x710B, 0x710C, 0x710D, 0x710E, 0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x711B, 0x711C, 0x711D, 0x711E, 0x711F, 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712A, 0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134, 0x003F, 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D, 0x713E, 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147, 0x7148, 0x7149, 0x714B, 0x714D, 0x714F, 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165, 0x7169, 0x716A, 0x716B, 0x716C, 0x716D, 0x716F, 0x7170, 0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, 0x717E, 0x717F, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718B, 0x718C, 0x718D, 0x718E, 0x7190, 0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719A, 0x719B, 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5, 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF, 0x71B0, 0x71B1, 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA, 0x71BB, 0x71BC, 0x71BD, 0x71BE, 0x71BF, 0x71C0, 0x71C1, 0x71C2, 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C8, 0x71C9, 0x71CA, 0x71CB, 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D2, 0x71D3 }, { 0x71D6, 0x71D7, 0x71D8, 0x71D9, 0x71DA, 0x71DB, 0x71DC, 0x71DD, 0x71DE, 0x71DF, 0x71E1, 0x71E2, 0x71E3, 0x71E4, 0x71E6, 0x71E8, 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71ED, 0x71EF, 0x71F0, 0x71F1, 0x71F2, 0x71F3, 0x71F4, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA, 0x71FB, 0x71FC, 0x71FD, 0x71FE, 0x71FF, 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720A, 0x720B, 0x720C, 0x720D, 0x720E, 0x720F, 0x7210, 0x7211, 0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A, 0x003F, 0x721B, 0x721C, 0x721E, 0x721F, 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722B, 0x722D, 0x722E, 0x722F, 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, 0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A, 0x724B, 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7264, 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, 0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, 0x727D, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C, 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 0x7298, 0x7299, 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0, 0x72A1, 0x72A2, 0x72A3, 0x72A4, 0x72A5, 0x72A6, 0x72A7, 0x72A8, 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, 0x72B3, 0x72B5, 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C0, 0x72C5, 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, 0x72D3, 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB }, { 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013 }, { 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x003F, 0x003F, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x003F, 0x003F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x003F, 0x003F }, { 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3 }, { 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0x003F, 0x003F, 0xFE3B, 0xFE3C, 0xFE37, 0xFE38, 0xFE31, 0x003F, 0xFE33, 0xFE34, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x02CA, 0x02CB, 0x02D9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, 0x2252, 0x2266, 0x2267, 0x22BF, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x003F, 0x2588, 0x2589, 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F, 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, 0x003F, 0x0144, 0x0148, 0x003F, 0x0261, 0x003F, 0x003F, 0x003F, 0x003F, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, 0x003F, 0x2121, 0x3231, 0x003F, 0x2010, 0x003F, 0x003F, 0x003F, 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E, 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50, 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A, 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0x003F, 0xFE62, 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x3007, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x72DC, 0x72DD, 0x72DF, 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, 0x72E7, 0x72EA, 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE, 0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308, 0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, 0x7326, 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, 0x7335, 0x7336, 0x733A, 0x733B, 0x733C, 0x733D, 0x7340, 0x7341, 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x003F, 0x7349, 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, 0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C, 0x735D, 0x735E, 0x735F, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x7369, 0x736A, 0x736B, 0x736E, 0x7370, 0x7371, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379, 0x737A, 0x737B, 0x737C, 0x737D, 0x737F, 0x7380, 0x7381, 0x7382, 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F, 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, 0x739A, 0x739C, 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4, 0x73A5, 0x73A6, 0x73A7, 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8, 0x73B9, 0x73BC, 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, 0x73C6, 0x73C7, 0x003F, 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5, 0x73D6, 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1, 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC, 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6, 0x73F7, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x73F8, 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FE, 0x73FF, 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, 0x740D, 0x740E, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, 0x741E, 0x741F, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, 0x742D, 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, 0x743D, 0x743E, 0x743F, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, 0x7448, 0x7449, 0x744A, 0x744B, 0x744C, 0x744D, 0x003F, 0x744E, 0x744F, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466, 0x7467, 0x7468, 0x7469, 0x746A, 0x746B, 0x746C, 0x746E, 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747A, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486, 0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749A, 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, 0x74A2, 0x74A3, 0x74A4, 0x74A5, 0x74A6, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF, 0x74B0, 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7, 0x74B8, 0x74B9, 0x74BB, 0x74BC, 0x74BD, 0x74BE, 0x74BF, 0x74C0, 0x74C1, 0x74C2, 0x74C3, 0x74C4, 0x74C5, 0x74C6, 0x74C7, 0x003F, 0x74C8, 0x74C9, 0x74CA, 0x74CB, 0x74CC, 0x74CD, 0x74CE, 0x74CF, 0x74D0, 0x74D1, 0x74D3, 0x74D4, 0x74D5, 0x74D6, 0x74D7, 0x74D8, 0x74D9, 0x74DA, 0x74DB, 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, 0x74E8, 0x74E9, 0x74EA, 0x74EB, 0x74EC, 0x74ED, 0x74F0, 0x74F1, 0x74F2, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x74F3, 0x74F5, 0x74F8, 0x74F9, 0x74FA, 0x74FB, 0x74FC, 0x74FD, 0x74FE, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507, 0x7508, 0x7509, 0x750A, 0x750B, 0x750C, 0x750E, 0x7510, 0x7512, 0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536, 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x003F, 0x755D, 0x755E, 0x755F, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567, 0x7568, 0x7569, 0x756B, 0x756C, 0x756D, 0x756E, 0x756F, 0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x7588, 0x7589, 0x758A, 0x758C, 0x758D, 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2, 0x75A6, 0x75A7, 0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, 0x75BB, 0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF, 0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75D9, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0, 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, 0x75F3, 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, 0x75FE, 0x7602, 0x7604, 0x7606, 0x7607, 0x003F, 0x7608, 0x7609, 0x760B, 0x760D, 0x760E, 0x760F, 0x7611, 0x7612, 0x7613, 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x761E, 0x7621, 0x7623, 0x7627, 0x7628, 0x762C, 0x762E, 0x762F, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763A, 0x763B, 0x763D, 0x7641, 0x7642, 0x7644, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764A, 0x764B, 0x764E, 0x764F, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658, 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, 0x7661, 0x7662, 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766A, 0x766C, 0x766D, 0x766E, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677, 0x7679, 0x767A, 0x767C, 0x767F, 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, 0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, 0x769B, 0x003F, 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3, 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC, 0x76AD, 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B8, 0x76B9, 0x76BA, 0x76BB, 0x76BC, 0x76BD, 0x76BE, 0x76C0, 0x76C1, 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265 }, { 0x76C4, 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9, 0x76DA, 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3, 0x76E4, 0x76E6, 0x76E7, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC, 0x76ED, 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, 0x76FD, 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A, 0x770C, 0x770E, 0x770F, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, 0x771D, 0x771E, 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B, 0x003F, 0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773B, 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748, 0x7749, 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x774F, 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775C, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3 }, { 0x775D, 0x775E, 0x775F, 0x7760, 0x7764, 0x7767, 0x7769, 0x776A, 0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, 0x7781, 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B, 0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798, 0x7799, 0x779A, 0x779B, 0x779C, 0x779D, 0x779E, 0x77A1, 0x77A3, 0x77A4, 0x77A6, 0x77A8, 0x77AB, 0x77AD, 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9, 0x77BA, 0x003F, 0x77BC, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, 0x77C6, 0x77C7, 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, 0x77CF, 0x77D0, 0x77D1, 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, 0x77D8, 0x77D9, 0x77DA, 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316 }, { 0x77E6, 0x77E8, 0x77EA, 0x77EF, 0x77F0, 0x77F1, 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F, 0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821, 0x7822, 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833, 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842, 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785A, 0x003F, 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786F, 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787A, 0x787B, 0x787D, 0x787E, 0x787F, 0x7880, 0x7881, 0x7882, 0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A }, { 0x7884, 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, 0x788F, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, 0x789E, 0x78A0, 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78A9, 0x78AA, 0x78AB, 0x78AC, 0x78AD, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78B8, 0x78BA, 0x78BB, 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, 0x78C3, 0x78C4, 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, 0x78CF, 0x78D1, 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DA, 0x78DB, 0x78DC, 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E3, 0x003F, 0x78E4, 0x78E5, 0x78E6, 0x78E7, 0x78E9, 0x78EA, 0x78EB, 0x78ED, 0x78EE, 0x78EF, 0x78F0, 0x78F1, 0x78F3, 0x78F5, 0x78F6, 0x78F8, 0x78F9, 0x78FB, 0x78FC, 0x78FD, 0x78FE, 0x78FF, 0x7900, 0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B, 0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E }, { 0x790D, 0x790E, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, 0x7916, 0x7917, 0x7918, 0x7919, 0x791A, 0x791B, 0x791C, 0x791D, 0x791F, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927, 0x7928, 0x7929, 0x792A, 0x792B, 0x792C, 0x792D, 0x792E, 0x792F, 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793D, 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, 0x794A, 0x794B, 0x794C, 0x794D, 0x794E, 0x794F, 0x7950, 0x7951, 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x003F, 0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, 0x796E, 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797B, 0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988, 0x7989, 0x798B, 0x798C, 0x798D, 0x798E, 0x7990, 0x7991, 0x7992, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0 }, { 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, 0x799C, 0x799D, 0x799E, 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, 0x79A4, 0x79A5, 0x79A6, 0x79A8, 0x79A9, 0x79AA, 0x79AB, 0x79AC, 0x79AD, 0x79AE, 0x79AF, 0x79B0, 0x79B1, 0x79B2, 0x79B4, 0x79B5, 0x79B6, 0x79B7, 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8, 0x79CA, 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6, 0x79D7, 0x79D9, 0x79DA, 0x79DB, 0x79DC, 0x79DD, 0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5, 0x79E8, 0x79EA, 0x003F, 0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6, 0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, 0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11, 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C }, { 0x7A1D, 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27, 0x7A28, 0x7A29, 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2E, 0x7A2F, 0x7A30, 0x7A31, 0x7A32, 0x7A34, 0x7A35, 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A40, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45, 0x7A47, 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4C, 0x7A4D, 0x7A4E, 0x7A4F, 0x7A50, 0x7A52, 0x7A53, 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59, 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, 0x7A5E, 0x7A5F, 0x7A60, 0x7A61, 0x7A62, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68, 0x003F, 0x7A69, 0x7A6A, 0x7A6B, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71, 0x7A72, 0x7A73, 0x7A75, 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A, 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, 0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D }, { 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, 0x7AAB, 0x7AAE, 0x7AAF, 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB6, 0x7AB7, 0x7AB8, 0x7AB9, 0x7ABA, 0x7ABB, 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1, 0x7AC2, 0x7AC3, 0x7AC4, 0x7AC5, 0x7AC6, 0x7AC7, 0x7AC8, 0x7AC9, 0x7ACA, 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2, 0x7AD3, 0x7AD4, 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEA, 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, 0x7AF2, 0x7AF3, 0x003F, 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE, 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D, 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A, 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29, 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9 }, { 0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39, 0x7B3B, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44, 0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, 0x7B55, 0x7B57, 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, 0x7B64, 0x7B65, 0x7B66, 0x7B67, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D, 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, 0x7B7D, 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87, 0x7B88, 0x7B89, 0x7B8A, 0x7B8B, 0x7B8C, 0x7B8E, 0x7B8F, 0x003F, 0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF, 0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, 0x7BBA, 0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC0, 0x7BC2, 0x7BC3, 0x7BC4, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8 }, { 0x7BC5, 0x7BC8, 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7, 0x7BE8, 0x7BE9, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, 0x7BF3, 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0x7BFF, 0x7C00, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, 0x7C06, 0x7C08, 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0x7C10, 0x7C11, 0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18, 0x7C19, 0x003F, 0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C1E, 0x7C20, 0x7C21, 0x7C22, 0x7C23, 0x7C24, 0x7C25, 0x7C28, 0x7C29, 0x7C2B, 0x7C2C, 0x7C2D, 0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32, 0x7C33, 0x7C34, 0x7C35, 0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C, 0x7C3D, 0x7C3E, 0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56 }, { 0x7C43, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A, 0x7C4B, 0x7C4C, 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53, 0x7C54, 0x7C55, 0x7C56, 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B, 0x7C5C, 0x7C5D, 0x7C5E, 0x7C5F, 0x7C60, 0x7C61, 0x7C62, 0x7C63, 0x7C64, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C69, 0x7C6A, 0x7C6B, 0x7C6C, 0x7C6D, 0x7C6E, 0x7C6F, 0x7C70, 0x7C71, 0x7C72, 0x7C75, 0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F, 0x7C80, 0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87, 0x003F, 0x7C88, 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90, 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA, 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95 }, { 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB, 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, 0x7CD3, 0x7CD4, 0x7CD8, 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4, 0x7CE5, 0x7CE6, 0x7CE7, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED, 0x7CEE, 0x7CF0, 0x7CF1, 0x7CF2, 0x7CF3, 0x7CF4, 0x7CF5, 0x7CF6, 0x7CF7, 0x7CF9, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFE, 0x7CFF, 0x7D00, 0x7D01, 0x7D02, 0x7D03, 0x7D04, 0x7D05, 0x7D06, 0x7D07, 0x7D08, 0x7D09, 0x7D0B, 0x7D0C, 0x7D0D, 0x7D0E, 0x7D0F, 0x7D10, 0x003F, 0x7D11, 0x7D12, 0x7D13, 0x7D14, 0x7D15, 0x7D16, 0x7D17, 0x7D18, 0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D1D, 0x7D1E, 0x7D1F, 0x7D21, 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C, 0x7D2D, 0x7D2E, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D34, 0x7D35, 0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6 }, { 0x7D37, 0x7D38, 0x7D39, 0x7D3A, 0x7D3B, 0x7D3C, 0x7D3D, 0x7D3E, 0x7D3F, 0x7D40, 0x7D41, 0x7D42, 0x7D43, 0x7D44, 0x7D45, 0x7D46, 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, 0x7D4C, 0x7D4D, 0x7D4E, 0x7D4F, 0x7D50, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56, 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5D, 0x7D5E, 0x7D5F, 0x7D60, 0x7D61, 0x7D62, 0x7D63, 0x7D64, 0x7D65, 0x7D66, 0x7D67, 0x7D68, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F, 0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D74, 0x7D75, 0x7D76, 0x003F, 0x7D78, 0x7D79, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, 0x7D7F, 0x7D80, 0x7D81, 0x7D82, 0x7D83, 0x7D84, 0x7D85, 0x7D86, 0x7D87, 0x7D88, 0x7D89, 0x7D8A, 0x7D8B, 0x7D8C, 0x7D8D, 0x7D8E, 0x7D8F, 0x7D90, 0x7D91, 0x7D92, 0x7D93, 0x7D94, 0x7D95, 0x7D96, 0x7D97, 0x7D98, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78 }, { 0x7D99, 0x7D9A, 0x7D9B, 0x7D9C, 0x7D9D, 0x7D9E, 0x7D9F, 0x7DA0, 0x7DA1, 0x7DA2, 0x7DA3, 0x7DA4, 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, 0x7DAA, 0x7DAB, 0x7DAC, 0x7DAD, 0x7DAF, 0x7DB0, 0x7DB1, 0x7DB2, 0x7DB3, 0x7DB4, 0x7DB5, 0x7DB6, 0x7DB7, 0x7DB8, 0x7DB9, 0x7DBA, 0x7DBB, 0x7DBC, 0x7DBD, 0x7DBE, 0x7DBF, 0x7DC0, 0x7DC1, 0x7DC2, 0x7DC3, 0x7DC4, 0x7DC5, 0x7DC6, 0x7DC7, 0x7DC8, 0x7DC9, 0x7DCA, 0x7DCB, 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD1, 0x7DD2, 0x7DD3, 0x7DD4, 0x7DD5, 0x7DD6, 0x7DD7, 0x7DD8, 0x7DD9, 0x003F, 0x7DDA, 0x7DDB, 0x7DDC, 0x7DDD, 0x7DDE, 0x7DDF, 0x7DE0, 0x7DE1, 0x7DE2, 0x7DE3, 0x7DE4, 0x7DE5, 0x7DE6, 0x7DE7, 0x7DE8, 0x7DE9, 0x7DEA, 0x7DEB, 0x7DEC, 0x7DED, 0x7DEE, 0x7DEF, 0x7DF0, 0x7DF1, 0x7DF2, 0x7DF3, 0x7DF4, 0x7DF5, 0x7DF6, 0x7DF7, 0x7DF8, 0x7DF9, 0x7DFA, 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB }, { 0x7DFB, 0x7DFC, 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02, 0x7E03, 0x7E04, 0x7E05, 0x7E06, 0x7E07, 0x7E08, 0x7E09, 0x7E0A, 0x7E0B, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E10, 0x7E11, 0x7E12, 0x7E13, 0x7E14, 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A, 0x7E1B, 0x7E1C, 0x7E1D, 0x7E1E, 0x7E1F, 0x7E20, 0x7E21, 0x7E22, 0x7E23, 0x7E24, 0x7E25, 0x7E26, 0x7E27, 0x7E28, 0x7E29, 0x7E2A, 0x7E2B, 0x7E2C, 0x7E2D, 0x7E2E, 0x7E2F, 0x7E30, 0x7E31, 0x7E32, 0x7E33, 0x7E34, 0x7E35, 0x7E36, 0x7E37, 0x7E38, 0x7E39, 0x003F, 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, 0x7E40, 0x7E42, 0x7E43, 0x7E44, 0x7E45, 0x7E46, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C, 0x7E4D, 0x7E4E, 0x7E4F, 0x7E50, 0x7E51, 0x7E52, 0x7E53, 0x7E54, 0x7E55, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5A, 0x7E5B, 0x7E5C, 0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080 }, { 0x7E5E, 0x7E5F, 0x7E60, 0x7E61, 0x7E62, 0x7E63, 0x7E64, 0x7E65, 0x7E66, 0x7E67, 0x7E68, 0x7E69, 0x7E6A, 0x7E6B, 0x7E6C, 0x7E6D, 0x7E6E, 0x7E6F, 0x7E70, 0x7E71, 0x7E72, 0x7E73, 0x7E74, 0x7E75, 0x7E76, 0x7E77, 0x7E78, 0x7E79, 0x7E7A, 0x7E7B, 0x7E7C, 0x7E7D, 0x7E7E, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86, 0x7E87, 0x7E88, 0x7E89, 0x7E8A, 0x7E8B, 0x7E8C, 0x7E8D, 0x7E8E, 0x7E8F, 0x7E90, 0x7E91, 0x7E92, 0x7E93, 0x7E94, 0x7E95, 0x7E96, 0x7E97, 0x7E98, 0x7E99, 0x7E9A, 0x7E9C, 0x7E9D, 0x7E9E, 0x003F, 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, 0x7EF9, 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, 0x7F3C, 0x7F3D, 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, 0x7F48, 0x7F49, 0x7F4A, 0x7F4B, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F4F, 0x7F52, 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0 }, { 0x7F56, 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, 0x7F64, 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, 0x7F70, 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B, 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, 0x7F84, 0x7F85, 0x7F86, 0x7F87, 0x7F88, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 0x7F91, 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, 0x7F9B, 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0x7FA8, 0x7FA9, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, 0x7FB1, 0x003F, 0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, 0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB, 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6, 0x7FD7, 0x7FD9, 0x7FDA, 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, 0x7FE3, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF }, { 0x7FE4, 0x7FE7, 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A, 0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E, 0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x003F, 0x8059, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B, 0x806C, 0x806D, 0x806E, 0x806F, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807A, 0x807B, 0x807C, 0x807D, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B }, { 0x807E, 0x8081, 0x8082, 0x8085, 0x8088, 0x808A, 0x808D, 0x808E, 0x808F, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC, 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7, 0x80C8, 0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3, 0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE, 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810B, 0x003F, 0x810C, 0x8115, 0x8117, 0x8119, 0x811B, 0x811C, 0x811D, 0x811F, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133, 0x8134, 0x8135, 0x8137, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D, 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478 }, { 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, 0x8158, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, 0x8163, 0x8164, 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, 0x8172, 0x8173, 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, 0x818E, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819A, 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, 0x81A5, 0x003F, 0x81A7, 0x81A9, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, 0x81B1, 0x81B2, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, 0x81C5, 0x81C7, 0x81C8, 0x81C9, 0x81CB, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, 0x81D2, 0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81 }, { 0x81D4, 0x81D5, 0x81D6, 0x81D7, 0x81D8, 0x81D9, 0x81DA, 0x81DB, 0x81DC, 0x81DD, 0x81DE, 0x81DF, 0x81E0, 0x81E1, 0x81E2, 0x81E4, 0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0, 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA, 0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B, 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218, 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F, 0x003F, 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, 0x824C, 0x824D, 0x824E, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8259, 0x825B, 0x825C, 0x825D, 0x825E, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7 }, { 0x826A, 0x826B, 0x826C, 0x826D, 0x8271, 0x8275, 0x8276, 0x8277, 0x8278, 0x827B, 0x827C, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289, 0x828C, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296, 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, 0x82A3, 0x82A7, 0x82B2, 0x82B5, 0x82B6, 0x82BA, 0x82BB, 0x82BC, 0x82BF, 0x82C0, 0x82C2, 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA, 0x82DD, 0x82E2, 0x82E7, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, 0x82EE, 0x82F0, 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8, 0x003F, 0x82FA, 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, 0x830A, 0x830B, 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831D, 0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337, 0x833B, 0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390 }, { 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834A, 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838A, 0x838B, 0x838C, 0x838D, 0x838F, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396, 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1, 0x83A2, 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83AC, 0x83AD, 0x83AE, 0x003F, 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4, 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, 0x83DA, 0x83DB, 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, 0x83E8, 0x83EB, 0x83EC, 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20 }, { 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, 0x83F7, 0x83FA, 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, 0x8407, 0x8408, 0x8409, 0x840A, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417, 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420, 0x8421, 0x8422, 0x8423, 0x8429, 0x842A, 0x842B, 0x842C, 0x842D, 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0x003F, 0x844A, 0x844B, 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845D, 0x845E, 0x845F, 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846A, 0x846E, 0x846F, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847B, 0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1 }, { 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, 0x8486, 0x848A, 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, 0x8496, 0x8498, 0x849A, 0x849B, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7, 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84B0, 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE, 0x84C0, 0x84C2, 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB, 0x84CC, 0x84CE, 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7, 0x003F, 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2, 0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE, 0x84EF, 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0x84F9, 0x84FA, 0x84FB, 0x84FD, 0x84FE, 0x8500, 0x8501, 0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3 }, { 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, 0x850B, 0x850D, 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, 0x8515, 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, 0x8520, 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529, 0x852A, 0x852D, 0x852E, 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542, 0x8544, 0x8545, 0x8546, 0x8547, 0x854B, 0x854C, 0x854D, 0x854E, 0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x003F, 0x8557, 0x8558, 0x855A, 0x855B, 0x855C, 0x855D, 0x855F, 0x8560, 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856A, 0x856B, 0x856C, 0x856D, 0x856E, 0x856F, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8577, 0x8578, 0x857C, 0x857D, 0x857F, 0x8580, 0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31 }, { 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858A, 0x858B, 0x858C, 0x858D, 0x858E, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0x859A, 0x859D, 0x859E, 0x859F, 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5, 0x85A6, 0x85A7, 0x85A9, 0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5, 0x85B6, 0x85B8, 0x85BA, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C2, 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85CA, 0x85CB, 0x85CC, 0x85CD, 0x85CE, 0x85D1, 0x85D2, 0x003F, 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, 0x85DD, 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E5, 0x85E6, 0x85E7, 0x85E8, 0x85EA, 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, 0x85F0, 0x85F1, 0x85F2, 0x85F3, 0x85F4, 0x85F5, 0x85F6, 0x85F7, 0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854 }, { 0x85F9, 0x85FA, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860A, 0x860B, 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8612, 0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, 0x861C, 0x861D, 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, 0x8628, 0x862A, 0x862B, 0x862C, 0x862D, 0x862E, 0x862F, 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, 0x863F, 0x8640, 0x003F, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, 0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3 }, { 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, 0x8697, 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0, 0x86A1, 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, 0x86B3, 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD, 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC, 0x003F, 0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7, 0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, 0x86FA, 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x8706, 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01 }, { 0x8719, 0x871B, 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A, 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874A, 0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D, 0x876F, 0x8771, 0x8772, 0x8773, 0x8775, 0x003F, 0x8777, 0x8778, 0x8779, 0x877A, 0x877F, 0x8780, 0x8781, 0x8784, 0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A, 0x879B, 0x879C, 0x879D, 0x879E, 0x87A0, 0x87A1, 0x87A2, 0x87A3, 0x87A4, 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A }, { 0x87A5, 0x87A6, 0x87A7, 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, 0x87B7, 0x87B8, 0x87B9, 0x87BB, 0x87BC, 0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C4, 0x87C5, 0x87C7, 0x87C8, 0x87C9, 0x87CC, 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0x87D4, 0x87D5, 0x87D6, 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1, 0x87E2, 0x87E3, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, 0x87EC, 0x87ED, 0x87EF, 0x87F0, 0x87F1, 0x87F2, 0x87F3, 0x87F4, 0x87F5, 0x87F6, 0x87F7, 0x87F8, 0x003F, 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, 0x8800, 0x8801, 0x8802, 0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880B, 0x880C, 0x880D, 0x880E, 0x880F, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 0x8818, 0x8819, 0x881A, 0x881C, 0x881D, 0x881E, 0x881F, 0x8820, 0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653 }, { 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882A, 0x882B, 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, 0x8831, 0x8833, 0x8834, 0x8835, 0x8836, 0x8837, 0x8838, 0x883A, 0x883B, 0x883D, 0x883E, 0x883F, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849, 0x884A, 0x884B, 0x884E, 0x884F, 0x8850, 0x8851, 0x8852, 0x8853, 0x8855, 0x8856, 0x8858, 0x885A, 0x885B, 0x885C, 0x885D, 0x885E, 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887A, 0x003F, 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, 0x889E, 0x889F, 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, 0x88A9, 0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384 }, { 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, 0x88B5, 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF, 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, 0x88CB, 0x88CC, 0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA, 0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, 0x88E6, 0x88E7, 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, 0x88F2, 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, 0x88FF, 0x8900, 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x003F, 0x8909, 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, 0x891E, 0x891F, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476 }, { 0x8938, 0x8939, 0x893A, 0x893B, 0x893C, 0x893D, 0x893E, 0x893F, 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894A, 0x894B, 0x894C, 0x894D, 0x894E, 0x894F, 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895A, 0x895B, 0x895C, 0x895D, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896A, 0x896B, 0x896C, 0x896D, 0x896E, 0x896F, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C, 0x003F, 0x897D, 0x897E, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898A, 0x898B, 0x898C, 0x898D, 0x898E, 0x898F, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A1, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690 }, { 0x89A2, 0x89A3, 0x89A4, 0x89A5, 0x89A6, 0x89A7, 0x89A8, 0x89A9, 0x89AA, 0x89AB, 0x89AC, 0x89AD, 0x89AE, 0x89AF, 0x89B0, 0x89B1, 0x89B2, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B7, 0x89B8, 0x89B9, 0x89BA, 0x89BB, 0x89BC, 0x89BD, 0x89BE, 0x89BF, 0x89C0, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9, 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8, 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2, 0x89F4, 0x89F5, 0x89F6, 0x89F7, 0x89F8, 0x89F9, 0x89FA, 0x003F, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A01, 0x8A02, 0x8A03, 0x8A04, 0x8A05, 0x8A06, 0x8A08, 0x8A09, 0x8A0A, 0x8A0B, 0x8A0C, 0x8A0D, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11, 0x8A12, 0x8A13, 0x8A14, 0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A19, 0x8A1A, 0x8A1B, 0x8A1C, 0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89 }, { 0x8A1E, 0x8A1F, 0x8A20, 0x8A21, 0x8A22, 0x8A23, 0x8A24, 0x8A25, 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2A, 0x8A2B, 0x8A2C, 0x8A2D, 0x8A2E, 0x8A2F, 0x8A30, 0x8A31, 0x8A32, 0x8A33, 0x8A34, 0x8A35, 0x8A36, 0x8A37, 0x8A38, 0x8A39, 0x8A3A, 0x8A3B, 0x8A3C, 0x8A3D, 0x8A3F, 0x8A40, 0x8A41, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A46, 0x8A47, 0x8A49, 0x8A4A, 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4E, 0x8A4F, 0x8A50, 0x8A51, 0x8A52, 0x8A53, 0x8A54, 0x8A55, 0x8A56, 0x8A57, 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, 0x8A5E, 0x003F, 0x8A5F, 0x8A60, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65, 0x8A66, 0x8A67, 0x8A68, 0x8A69, 0x8A6A, 0x8A6B, 0x8A6C, 0x8A6D, 0x8A6E, 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0x8A73, 0x8A74, 0x8A75, 0x8A76, 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0x8A7E, 0x8A7F, 0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67 }, { 0x8A81, 0x8A82, 0x8A83, 0x8A84, 0x8A85, 0x8A86, 0x8A87, 0x8A88, 0x8A8B, 0x8A8C, 0x8A8D, 0x8A8E, 0x8A8F, 0x8A90, 0x8A91, 0x8A92, 0x8A94, 0x8A95, 0x8A96, 0x8A97, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B, 0x8A9C, 0x8A9D, 0x8A9E, 0x8A9F, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3, 0x8AA4, 0x8AA5, 0x8AA6, 0x8AA7, 0x8AA8, 0x8AA9, 0x8AAA, 0x8AAB, 0x8AAC, 0x8AAD, 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3, 0x8AB4, 0x8AB5, 0x8AB6, 0x8AB7, 0x8AB8, 0x8AB9, 0x8ABA, 0x8ABB, 0x8ABC, 0x8ABD, 0x8ABE, 0x8ABF, 0x8AC0, 0x8AC1, 0x8AC2, 0x003F, 0x8AC3, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, 0x8AC8, 0x8AC9, 0x8ACA, 0x8ACB, 0x8ACC, 0x8ACD, 0x8ACE, 0x8ACF, 0x8AD0, 0x8AD1, 0x8AD2, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8, 0x8AD9, 0x8ADA, 0x8ADB, 0x8ADC, 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE2, 0x8AE3, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F }, { 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEB, 0x8AEC, 0x8AED, 0x8AEE, 0x8AEF, 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3, 0x8AF4, 0x8AF5, 0x8AF6, 0x8AF7, 0x8AF8, 0x8AF9, 0x8AFA, 0x8AFB, 0x8AFC, 0x8AFD, 0x8AFE, 0x8AFF, 0x8B00, 0x8B01, 0x8B02, 0x8B03, 0x8B04, 0x8B05, 0x8B06, 0x8B08, 0x8B09, 0x8B0A, 0x8B0B, 0x8B0C, 0x8B0D, 0x8B0E, 0x8B0F, 0x8B10, 0x8B11, 0x8B12, 0x8B13, 0x8B14, 0x8B15, 0x8B16, 0x8B17, 0x8B18, 0x8B19, 0x8B1A, 0x8B1B, 0x8B1C, 0x8B1D, 0x8B1E, 0x8B1F, 0x8B20, 0x8B21, 0x8B22, 0x8B23, 0x003F, 0x8B24, 0x8B25, 0x8B27, 0x8B28, 0x8B29, 0x8B2A, 0x8B2B, 0x8B2C, 0x8B2D, 0x8B2E, 0x8B2F, 0x8B30, 0x8B31, 0x8B32, 0x8B33, 0x8B34, 0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B39, 0x8B3A, 0x8B3B, 0x8B3C, 0x8B3D, 0x8B3E, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0x8B45, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51 }, { 0x8B46, 0x8B47, 0x8B48, 0x8B49, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, 0x8B4E, 0x8B4F, 0x8B50, 0x8B51, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B56, 0x8B57, 0x8B58, 0x8B59, 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D, 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65, 0x8B67, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8B6D, 0x8B6E, 0x8B6F, 0x8B70, 0x8B71, 0x8B72, 0x8B73, 0x8B74, 0x8B75, 0x8B76, 0x8B77, 0x8B78, 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7D, 0x8B7E, 0x8B7F, 0x8B80, 0x8B81, 0x8B82, 0x8B83, 0x8B84, 0x8B85, 0x8B86, 0x003F, 0x8B87, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0x8B8D, 0x8B8E, 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93, 0x8B94, 0x8B95, 0x8B96, 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, 0x8B9C, 0x8B9D, 0x8B9E, 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09, 0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F, 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C48, 0x8C4A, 0x8C4B, 0x8C4D, 0x8C4E, 0x8C4F, 0x8C50, 0x8C51, 0x8C52, 0x8C53, 0x8C54, 0x8C56, 0x8C57, 0x8C58, 0x8C59, 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E, 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, 0x8C66, 0x8C67, 0x8C68, 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, 0x8C71, 0x8C72, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D, 0x8C7E, 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87, 0x003F, 0x8C88, 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, 0x8C93, 0x8C95, 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C, 0x8C9D, 0x8C9E, 0x8C9F, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA3, 0x8CA4, 0x8CA5, 0x8CA6, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB, 0x8CAC, 0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D }, { 0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB5, 0x8CB6, 0x8CB7, 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0x8CBC, 0x8CBD, 0x8CBE, 0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5, 0x8CC6, 0x8CC7, 0x8CC8, 0x8CC9, 0x8CCA, 0x8CCB, 0x8CCC, 0x8CCD, 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD1, 0x8CD2, 0x8CD3, 0x8CD4, 0x8CD5, 0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0x8CDB, 0x8CDC, 0x8CDD, 0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE5, 0x8CE6, 0x8CE7, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC, 0x003F, 0x8CED, 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF4, 0x8CF5, 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x8CFB, 0x8CFC, 0x8CFD, 0x8CFE, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D04, 0x8D05, 0x8D06, 0x8D07, 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x8D0C, 0x8D0D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC }, { 0x8D0E, 0x8D0F, 0x8D10, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, 0x8D16, 0x8D17, 0x8D18, 0x8D19, 0x8D1A, 0x8D1B, 0x8D1C, 0x8D20, 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78, 0x8D79, 0x8D7A, 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, 0x8D83, 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F, 0x8D90, 0x8D92, 0x8D93, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99, 0x8D9A, 0x8D9B, 0x8D9C, 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1, 0x003F, 0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA, 0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB2, 0x8DB6, 0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7, 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA }, { 0x8DD5, 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7, 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC, 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02, 0x8E03, 0x8E04, 0x8E06, 0x8E07, 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E10, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16, 0x8E17, 0x8E18, 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24, 0x8E25, 0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33, 0x8E34, 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E, 0x003F, 0x8E3F, 0x8E43, 0x8E45, 0x8E46, 0x8E4C, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E53, 0x8E54, 0x8E55, 0x8E56, 0x8E57, 0x8E58, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, 0x8E62, 0x8E63, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E, 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD }, { 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, 0x8E7B, 0x8E7D, 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E89, 0x8E8A, 0x8E8B, 0x8E8C, 0x8E8D, 0x8E8E, 0x8E91, 0x8E92, 0x8E93, 0x8E95, 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, 0x8E9B, 0x8E9D, 0x8E9F, 0x8EA0, 0x8EA1, 0x8EA2, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6, 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAA, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, 0x8EB3, 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB, 0x8EBC, 0x8EBD, 0x8EBE, 0x8EBF, 0x8EC0, 0x8EC1, 0x8EC2, 0x003F, 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9, 0x8ECA, 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED2, 0x8ED3, 0x8ED4, 0x8ED5, 0x8ED6, 0x8ED7, 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDB, 0x8EDC, 0x8EDD, 0x8EDE, 0x8EDF, 0x8EE0, 0x8EE1, 0x8EE2, 0x8EE3, 0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365 }, { 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, 0x8EED, 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0x8EF3, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7, 0x8EF8, 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC, 0x8EFD, 0x8EFE, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F03, 0x8F04, 0x8F05, 0x8F06, 0x8F07, 0x8F08, 0x8F09, 0x8F0A, 0x8F0B, 0x8F0C, 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F12, 0x8F13, 0x8F14, 0x8F15, 0x8F16, 0x8F17, 0x8F18, 0x8F19, 0x8F1A, 0x8F1B, 0x8F1C, 0x8F1D, 0x8F1E, 0x8F1F, 0x8F20, 0x8F21, 0x8F22, 0x8F23, 0x003F, 0x8F24, 0x8F25, 0x8F26, 0x8F27, 0x8F28, 0x8F29, 0x8F2A, 0x8F2B, 0x8F2C, 0x8F2D, 0x8F2E, 0x8F2F, 0x8F30, 0x8F31, 0x8F32, 0x8F33, 0x8F34, 0x8F35, 0x8F36, 0x8F37, 0x8F38, 0x8F39, 0x8F3A, 0x8F3B, 0x8F3C, 0x8F3D, 0x8F3E, 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43, 0x8F44, 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A }, { 0x8F45, 0x8F46, 0x8F47, 0x8F48, 0x8F49, 0x8F4A, 0x8F4B, 0x8F4C, 0x8F4D, 0x8F4E, 0x8F4F, 0x8F50, 0x8F51, 0x8F52, 0x8F53, 0x8F54, 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, 0x8F5C, 0x8F5D, 0x8F5E, 0x8F5F, 0x8F60, 0x8F61, 0x8F62, 0x8F63, 0x8F64, 0x8F65, 0x8F6A, 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, 0x8FAD, 0x8FAE, 0x8FAF, 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, 0x8FBA, 0x8FBB, 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, 0x003F, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF4, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC, 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9015, 0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496 }, { 0x9019, 0x901C, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, 0x902A, 0x902B, 0x902C, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904A, 0x904B, 0x904C, 0x904E, 0x9054, 0x9055, 0x9056, 0x9059, 0x905A, 0x905C, 0x905D, 0x905E, 0x905F, 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906A, 0x906B, 0x906C, 0x906F, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077, 0x9078, 0x9079, 0x907A, 0x907B, 0x907C, 0x907E, 0x9081, 0x003F, 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908A, 0x908C, 0x908D, 0x908E, 0x908F, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909A, 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, 0x90A8, 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF, 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C }, { 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD, 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, 0x90DF, 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, 0x90EE, 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, 0x90F6, 0x90F7, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, 0x9101, 0x9103, 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910A, 0x910B, 0x910C, 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, 0x9115, 0x9116, 0x9117, 0x9118, 0x911A, 0x911B, 0x911C, 0x003F, 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912D, 0x912E, 0x9130, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913A, 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, 0x9142, 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C }, { 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, 0x9168, 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, 0x918F, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0x91A4, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91AB, 0x91AC, 0x91B0, 0x91B1, 0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB, 0x003F, 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3, 0x91C4, 0x91C5, 0x91C6, 0x91C8, 0x91CB, 0x91D0, 0x91D2, 0x91D3, 0x91D4, 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB, 0x91DD, 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4, 0x91E5, 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA }, { 0x91E6, 0x91E7, 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5, 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0x91FA, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, 0x9208, 0x9209, 0x920A, 0x920B, 0x920C, 0x920D, 0x920E, 0x920F, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, 0x921E, 0x921F, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x003F, 0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922A, 0x922B, 0x922C, 0x922D, 0x922E, 0x922F, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923A, 0x923B, 0x923C, 0x923D, 0x923E, 0x923F, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974, 0x9977, 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, 0x6042 }, { 0x9246, 0x9247, 0x9248, 0x9249, 0x924A, 0x924B, 0x924C, 0x924D, 0x924E, 0x924F, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, 0x9258, 0x9259, 0x925A, 0x925B, 0x925C, 0x925D, 0x925E, 0x925F, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, 0x926A, 0x926B, 0x926C, 0x926D, 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927A, 0x927B, 0x927C, 0x927D, 0x927E, 0x927F, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x003F, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C, 0x928D, 0x928F, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929A, 0x929B, 0x929C, 0x929D, 0x929E, 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, 0x92A4, 0x92A5, 0x92A6, 0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE }, { 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, 0x92AF, 0x92B0, 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B7, 0x92B8, 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, 0x92BF, 0x92C0, 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C9, 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, 0x92D0, 0x92D1, 0x92D2, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0x92D8, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, 0x92E0, 0x92E1, 0x92E2, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, 0x92E8, 0x003F, 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0, 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, 0x92F8, 0x92F9, 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, 0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1 }, { 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, 0x931A, 0x931B, 0x931C, 0x931D, 0x931E, 0x931F, 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329, 0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339, 0x933A, 0x933B, 0x933C, 0x933D, 0x933F, 0x9340, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x003F, 0x934A, 0x934B, 0x934C, 0x934D, 0x934E, 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935A, 0x935B, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936B, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3 }, { 0x936C, 0x936D, 0x936E, 0x936F, 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937A, 0x937B, 0x937C, 0x937D, 0x937E, 0x937F, 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938A, 0x938B, 0x938C, 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939A, 0x939B, 0x939C, 0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1, 0x93A2, 0x93A3, 0x93A4, 0x93A5, 0x93A6, 0x93A7, 0x93A8, 0x93A9, 0x93AA, 0x93AB, 0x003F, 0x93AC, 0x93AD, 0x93AE, 0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3, 0x93B4, 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB, 0x93BC, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3, 0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CB, 0x93CC, 0x93CD, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9 }, { 0x93CE, 0x93CF, 0x93D0, 0x93D1, 0x93D2, 0x93D3, 0x93D4, 0x93D5, 0x93D7, 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0x93DC, 0x93DD, 0x93DE, 0x93DF, 0x93E0, 0x93E1, 0x93E2, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0x93E7, 0x93E8, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, 0x93EE, 0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6, 0x93F7, 0x93F8, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A, 0x940B, 0x940C, 0x940D, 0x003F, 0x940E, 0x940F, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416, 0x9417, 0x9418, 0x9419, 0x941A, 0x941B, 0x941C, 0x941D, 0x941E, 0x941F, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426, 0x9427, 0x9428, 0x9429, 0x942A, 0x942B, 0x942C, 0x942D, 0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C }, { 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, 0x943D, 0x943F, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946A, 0x946C, 0x946D, 0x946E, 0x946F, 0x003F, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, 0x947E, 0x947F, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, 0x94FB, 0x951C, 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9 }, { 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, 0x955A, 0x9560, 0x956E, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957A, 0x957B, 0x957C, 0x957D, 0x957E, 0x9580, 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958A, 0x958B, 0x958C, 0x958D, 0x958E, 0x958F, 0x9590, 0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959A, 0x959B, 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A1, 0x95A2, 0x95A3, 0x95A4, 0x95A5, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0x95AA, 0x003F, 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B2, 0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0x95B8, 0x95B9, 0x95BA, 0x95BB, 0x95BC, 0x95BD, 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0x95C2, 0x95C3, 0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0x95CA, 0x95CB, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B }, { 0x95CC, 0x95CD, 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2, 0x95D3, 0x95D4, 0x95D5, 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA, 0x95DB, 0x95DC, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2, 0x95E3, 0x95E4, 0x95E5, 0x95E6, 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, 0x961B, 0x961E, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628, 0x9629, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630, 0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A, 0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x003F, 0x9658, 0x9659, 0x965A, 0x965C, 0x965D, 0x965E, 0x9660, 0x9663, 0x9665, 0x9666, 0x966B, 0x966D, 0x966E, 0x966F, 0x9670, 0x9671, 0x9673, 0x9678, 0x9679, 0x967A, 0x967B, 0x967C, 0x967D, 0x967E, 0x967F, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, 0x63B0 }, { 0x968C, 0x968E, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969A, 0x969B, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1, 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A8, 0x96A9, 0x96AA, 0x96AB, 0x96AC, 0x96AD, 0x96AE, 0x96AF, 0x96B1, 0x96B2, 0x96B4, 0x96B5, 0x96B7, 0x96B8, 0x96BA, 0x96BB, 0x96BF, 0x96C2, 0x96C3, 0x96C8, 0x96CA, 0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D6, 0x96D7, 0x96D8, 0x96D9, 0x96DA, 0x96DB, 0x96DC, 0x96DD, 0x96DE, 0x96DF, 0x96E1, 0x96E2, 0x96E3, 0x96E4, 0x96E5, 0x96E6, 0x96E7, 0x96EB, 0x003F, 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F2, 0x96F4, 0x96F5, 0x96F8, 0x96FA, 0x96FB, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, 0x970B, 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719, 0x971A, 0x971B, 0x971D, 0x971F, 0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB }, { 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728, 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973D, 0x973F, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 0x9748, 0x9749, 0x974A, 0x974B, 0x974C, 0x974D, 0x974E, 0x974F, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975A, 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976A, 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771, 0x003F, 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D, 0x977E, 0x977F, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, 0x979C, 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0 }, { 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, 0x97A6, 0x97A7, 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC, 0x97BD, 0x97BE, 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C3, 0x97C4, 0x97C5, 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC, 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D3, 0x97D4, 0x97D5, 0x97D6, 0x97D7, 0x97D8, 0x97D9, 0x97DA, 0x97DB, 0x97DC, 0x97DD, 0x97DE, 0x97DF, 0x97E0, 0x97E1, 0x97E2, 0x97E3, 0x003F, 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, 0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, 0x97FE, 0x97FF, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809, 0x980A, 0x980B, 0x980C, 0x980D, 0x980E, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768 }, { 0x980F, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817, 0x9818, 0x9819, 0x981A, 0x981B, 0x981C, 0x981D, 0x981E, 0x981F, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982D, 0x982E, 0x982F, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837, 0x9838, 0x9839, 0x983A, 0x983B, 0x983C, 0x983D, 0x983E, 0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848, 0x9849, 0x984A, 0x984B, 0x984C, 0x984D, 0x003F, 0x984E, 0x984F, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858, 0x9859, 0x985A, 0x985B, 0x985C, 0x985D, 0x985E, 0x985F, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, 0x9869, 0x986A, 0x986B, 0x986C, 0x986D, 0x986E, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA }, { 0x986F, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988B, 0x988E, 0x9892, 0x9895, 0x9899, 0x98A3, 0x98A8, 0x98A9, 0x98AA, 0x98AB, 0x98AC, 0x98AD, 0x98AE, 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0x98B3, 0x98B4, 0x98B5, 0x98B6, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB, 0x98BC, 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3, 0x98C4, 0x98C5, 0x98C6, 0x98C7, 0x98C8, 0x98C9, 0x98CA, 0x98CB, 0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6, 0x98D7, 0x98DB, 0x98DC, 0x98DD, 0x98E0, 0x98E1, 0x98E2, 0x98E3, 0x98E4, 0x003F, 0x98E5, 0x98E6, 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0x98ED, 0x98EE, 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, 0x98F4, 0x98F5, 0x98F6, 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, 0x98FC, 0x98FD, 0x98FE, 0x98FF, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14 }, { 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, 0x990F, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919, 0x991A, 0x991B, 0x991C, 0x991D, 0x991E, 0x991F, 0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929, 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993A, 0x993B, 0x993C, 0x993D, 0x993E, 0x993F, 0x9940, 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x003F, 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, 0x9951, 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995A, 0x995B, 0x995C, 0x995D, 0x995E, 0x995F, 0x9960, 0x9961, 0x9962, 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, 0x9983, 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619 }, { 0x998C, 0x998E, 0x999A, 0x999B, 0x999C, 0x999D, 0x999E, 0x999F, 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, 0x99A7, 0x99A9, 0x99AA, 0x99AB, 0x99AC, 0x99AD, 0x99AE, 0x99AF, 0x99B0, 0x99B1, 0x99B2, 0x99B3, 0x99B4, 0x99B5, 0x99B6, 0x99B7, 0x99B8, 0x99B9, 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, 0x99C0, 0x99C1, 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9, 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D0, 0x99D1, 0x99D2, 0x99D3, 0x99D4, 0x99D5, 0x99D6, 0x99D7, 0x99D8, 0x003F, 0x99D9, 0x99DA, 0x99DB, 0x99DC, 0x99DD, 0x99DE, 0x99DF, 0x99E0, 0x99E1, 0x99E2, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, 0x99E8, 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99ED, 0x99EE, 0x99EF, 0x99F0, 0x99F1, 0x99F2, 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, 0x99F9, 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883 }, { 0x99FA, 0x99FB, 0x99FC, 0x99FD, 0x99FE, 0x99FF, 0x9A00, 0x9A01, 0x9A02, 0x9A03, 0x9A04, 0x9A05, 0x9A06, 0x9A07, 0x9A08, 0x9A09, 0x9A0A, 0x9A0B, 0x9A0C, 0x9A0D, 0x9A0E, 0x9A0F, 0x9A10, 0x9A11, 0x9A12, 0x9A13, 0x9A14, 0x9A15, 0x9A16, 0x9A17, 0x9A18, 0x9A19, 0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E, 0x9A1F, 0x9A20, 0x9A21, 0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27, 0x9A28, 0x9A29, 0x9A2A, 0x9A2B, 0x9A2C, 0x9A2D, 0x9A2E, 0x9A2F, 0x9A30, 0x9A31, 0x9A32, 0x9A33, 0x9A34, 0x9A35, 0x9A36, 0x9A37, 0x9A38, 0x003F, 0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3E, 0x9A3F, 0x9A40, 0x9A41, 0x9A42, 0x9A43, 0x9A44, 0x9A45, 0x9A46, 0x9A47, 0x9A48, 0x9A49, 0x9A4A, 0x9A4B, 0x9A4C, 0x9A4D, 0x9A4E, 0x9A4F, 0x9A50, 0x9A51, 0x9A52, 0x9A53, 0x9A54, 0x9A55, 0x9A56, 0x9A57, 0x9A58, 0x9A59, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2 }, { 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A5F, 0x9A60, 0x9A61, 0x9A62, 0x9A63, 0x9A64, 0x9A65, 0x9A66, 0x9A67, 0x9A68, 0x9A69, 0x9A6A, 0x9A6B, 0x9A72, 0x9A83, 0x9A89, 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB, 0x9AAC, 0x9AAD, 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9, 0x9ACA, 0x9ACD, 0x9ACE, 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4, 0x9AD5, 0x9AD6, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC, 0x003F, 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8, 0x9AE9, 0x9AEA, 0x9AEC, 0x9AEE, 0x9AF0, 0x9AF1, 0x9AF2, 0x9AF3, 0x9AF4, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC, 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, 0x9B01, 0x9B02, 0x9B04, 0x9B05, 0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B }, { 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, 0x9B0D, 0x9B0E, 0x9B10, 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18, 0x9B19, 0x9B1A, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B22, 0x9B24, 0x9B25, 0x9B26, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2B, 0x9B2C, 0x9B2D, 0x9B2E, 0x9B30, 0x9B31, 0x9B33, 0x9B34, 0x9B35, 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F, 0x9B40, 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, 0x9B50, 0x9B52, 0x9B53, 0x9B55, 0x9B56, 0x9B57, 0x9B58, 0x9B59, 0x9B5A, 0x003F, 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, 0x9B62, 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A, 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F, 0x9B70, 0x9B71, 0x9B72, 0x9B73, 0x9B74, 0x9B75, 0x9B76, 0x9B77, 0x9B78, 0x9B79, 0x9B7A, 0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164 }, { 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, 0x9B80, 0x9B81, 0x9B82, 0x9B83, 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, 0x9B8B, 0x9B8C, 0x9B8D, 0x9B8E, 0x9B8F, 0x9B90, 0x9B91, 0x9B92, 0x9B93, 0x9B94, 0x9B95, 0x9B96, 0x9B97, 0x9B98, 0x9B99, 0x9B9A, 0x9B9B, 0x9B9C, 0x9B9D, 0x9B9E, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3, 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAA, 0x9BAB, 0x9BAC, 0x9BAD, 0x9BAE, 0x9BAF, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB3, 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, 0x9BBA, 0x003F, 0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC0, 0x9BC1, 0x9BC2, 0x9BC3, 0x9BC4, 0x9BC5, 0x9BC6, 0x9BC7, 0x9BC8, 0x9BC9, 0x9BCA, 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, 0x9BD1, 0x9BD2, 0x9BD3, 0x9BD4, 0x9BD5, 0x9BD6, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, 0x9BDB, 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC }, { 0x9BDC, 0x9BDD, 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE1, 0x9BE2, 0x9BE3, 0x9BE4, 0x9BE5, 0x9BE6, 0x9BE7, 0x9BE8, 0x9BE9, 0x9BEA, 0x9BEB, 0x9BEC, 0x9BED, 0x9BEE, 0x9BEF, 0x9BF0, 0x9BF1, 0x9BF2, 0x9BF3, 0x9BF4, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, 0x9BF9, 0x9BFA, 0x9BFB, 0x9BFC, 0x9BFD, 0x9BFE, 0x9BFF, 0x9C00, 0x9C01, 0x9C02, 0x9C03, 0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C08, 0x9C09, 0x9C0A, 0x9C0B, 0x9C0C, 0x9C0D, 0x9C0E, 0x9C0F, 0x9C10, 0x9C11, 0x9C12, 0x9C13, 0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A, 0x003F, 0x9C1B, 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C20, 0x9C21, 0x9C22, 0x9C23, 0x9C24, 0x9C25, 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A, 0x9C2B, 0x9C2C, 0x9C2D, 0x9C2E, 0x9C2F, 0x9C30, 0x9C31, 0x9C32, 0x9C33, 0x9C34, 0x9C35, 0x9C36, 0x9C37, 0x9C38, 0x9C39, 0x9C3A, 0x9C3B, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB }, { 0x9C3C, 0x9C3D, 0x9C3E, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43, 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0x9C48, 0x9C49, 0x9C4A, 0x9C4B, 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50, 0x9C51, 0x9C52, 0x9C53, 0x9C54, 0x9C55, 0x9C56, 0x9C57, 0x9C58, 0x9C59, 0x9C5A, 0x9C5B, 0x9C5C, 0x9C5D, 0x9C5E, 0x9C5F, 0x9C60, 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0x9C65, 0x9C66, 0x9C67, 0x9C68, 0x9C69, 0x9C6A, 0x9C6B, 0x9C6C, 0x9C6D, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73, 0x9C74, 0x9C75, 0x9C76, 0x9C77, 0x9C78, 0x9C79, 0x9C7A, 0x003F, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, 0x9C84, 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0, 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44 }, { 0x9CE3, 0x9CE4, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CE9, 0x9CEA, 0x9CEB, 0x9CEC, 0x9CED, 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2, 0x9CF3, 0x9CF4, 0x9CF5, 0x9CF6, 0x9CF7, 0x9CF8, 0x9CF9, 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02, 0x9D03, 0x9D04, 0x9D05, 0x9D06, 0x9D07, 0x9D08, 0x9D09, 0x9D0A, 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, 0x9D0F, 0x9D10, 0x9D11, 0x9D12, 0x9D13, 0x9D14, 0x9D15, 0x9D16, 0x9D17, 0x9D18, 0x9D19, 0x9D1A, 0x9D1B, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D1F, 0x9D20, 0x9D21, 0x003F, 0x9D22, 0x9D23, 0x9D24, 0x9D25, 0x9D26, 0x9D27, 0x9D28, 0x9D29, 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D2F, 0x9D30, 0x9D31, 0x9D32, 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39, 0x9D3A, 0x9D3B, 0x9D3C, 0x9D3D, 0x9D3E, 0x9D3F, 0x9D40, 0x9D41, 0x9D42, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, 0x9D48, 0x9D49, 0x9D4A, 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, 0x9D51, 0x9D52, 0x9D53, 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A, 0x9D5B, 0x9D5C, 0x9D5D, 0x9D5E, 0x9D5F, 0x9D60, 0x9D61, 0x9D62, 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, 0x9D6A, 0x9D6B, 0x9D6C, 0x9D6D, 0x9D6E, 0x9D6F, 0x9D70, 0x9D71, 0x9D72, 0x9D73, 0x9D74, 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A, 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, 0x9D80, 0x9D81, 0x003F, 0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D87, 0x9D88, 0x9D89, 0x9D8A, 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, 0x9D92, 0x9D93, 0x9D94, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9D99, 0x9D9A, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0x9DA1, 0x9DA2, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x9DA3, 0x9DA4, 0x9DA5, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DA9, 0x9DAA, 0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0x9DB1, 0x9DB2, 0x9DB3, 0x9DB4, 0x9DB5, 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBB, 0x9DBC, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2, 0x9DC3, 0x9DC4, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0x9DCC, 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD3, 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7, 0x9DD8, 0x9DD9, 0x9DDA, 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1, 0x003F, 0x9DE2, 0x9DE3, 0x9DE4, 0x9DE5, 0x9DE6, 0x9DE7, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED, 0x9DEE, 0x9DEF, 0x9DF0, 0x9DF1, 0x9DF2, 0x9DF3, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 0x9DFA, 0x9DFB, 0x9DFC, 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, 0x9E02, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x9E03, 0x9E04, 0x9E05, 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A, 0x9E0B, 0x9E0C, 0x9E0D, 0x9E0E, 0x9E0F, 0x9E10, 0x9E11, 0x9E12, 0x9E13, 0x9E14, 0x9E15, 0x9E16, 0x9E17, 0x9E18, 0x9E19, 0x9E1A, 0x9E1B, 0x9E1C, 0x9E1D, 0x9E1E, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, 0x9E40, 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F, 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E75, 0x9E76, 0x9E77, 0x9E78, 0x9E79, 0x9E7A, 0x9E7B, 0x9E7C, 0x9E7D, 0x9E80, 0x003F, 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, 0x9E89, 0x9E8A, 0x9E8C, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94, 0x9E95, 0x9E96, 0x9E97, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0, 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, 0x9EA7, 0x9EA8, 0x9EA9, 0x9EAA, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0x9EAF, 0x9EB0, 0x9EB1, 0x9EB2, 0x9EB3, 0x9EB5, 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, 0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6, 0x9ED7, 0x9ED9, 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, 0x9EE8, 0x9EEB, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF2, 0x9EF3, 0x9EF4, 0x9EF5, 0x9EF6, 0x9EF7, 0x9EF8, 0x9EFA, 0x9EFD, 0x9EFF, 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05, 0x003F, 0x9F06, 0x9F07, 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, 0x9F12, 0x9F14, 0x9F15, 0x9F16, 0x9F18, 0x9F1A, 0x9F1B, 0x9F1C, 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, 0x9F26, 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30, 0x9F31, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47, 0x9F48, 0x9F49, 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F, 0x9F52, 0x9F53, 0x9F54, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F59, 0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E, 0x9F5F, 0x9F60, 0x9F61, 0x9F62, 0x9F63, 0x9F64, 0x9F65, 0x9F66, 0x9F67, 0x9F68, 0x9F69, 0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F72, 0x9F73, 0x9F74, 0x9F75, 0x9F76, 0x9F77, 0x9F78, 0x003F, 0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F81, 0x9F82, 0x9F8D, 0x9F8E, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F93, 0x9F94, 0x9F95, 0x9F96, 0x9F97, 0x9F98, 0x9F9C, 0x9F9D, 0x9F9E, 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, 0xF995, 0xF9E7, 0xF9F1, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F }, { 0xFA0C, 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20, 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F } }; CorsixTH-0.61/CorsixTH/Src/iso_fs.cpp000066400000000000000000000407471321660673500174100ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "iso_fs.h" #include #include #include #include #include IsoFilesystem::IsoFilesystem() { m_fRawFile = nullptr; m_sError = nullptr; m_pFiles = nullptr; m_iNumFiles = 0; m_iFileTableSize = 0; m_cPathSeparator = '\\'; } IsoFilesystem::~IsoFilesystem() { _clear(); } void IsoFilesystem::_clear() { delete[] m_sError; m_sError = nullptr; if(m_pFiles) { for(size_t i = 0; i < m_iNumFiles; ++i) delete[] m_pFiles[i].sPath; delete[] m_pFiles; m_pFiles = nullptr; m_iNumFiles = 0; m_iFileTableSize = 0; } } void IsoFilesystem::setPathSeparator(char cSeparator) { m_cPathSeparator = cSeparator; } enum IsoVolumeDescriptorType { VDT_PRIVARY_VOLUME = 0x01, // Other type numbers are either reserved for future use, or are not // interesting to us. VDT_TERMINATOR = 0xFF, }; enum IsoDirEntFlag { DEF_HIDDEN = 0x01, DEF_DIRECTORY = 0x02, DEF_MULTI_EXTENT = 0x80, }; template static inline T ReadNativeInt(const uint8_t *p) { // ISO 9660 commonly encodes multi-byte integers as little endian followed // by big endian. Note that the first byte of iEndianness will be a zero on // little endian systems, and a one on big endian. static const uint16_t iEndianness = 0x0100; return reinterpret_cast(p)[*reinterpret_cast(&iEndianness)]; } bool IsoFilesystem::initialise(FILE* fRawFile) { m_fRawFile = fRawFile; _clear(); // Until we know better, assume that sectors are 2048 bytes. m_iSectorSize = 2048; // The first 16 sectors are reserved for bootable media. // Volume descriptor records follow this, with one record per sector. for(uint32_t iSector = 16; _seekToSector(iSector); ++iSector) { uint8_t aBuffer[190]; if(!_readData(sizeof(aBuffer), aBuffer)) break; // CD001 is a standard identifier, \x01 is a version number if(std::memcmp(aBuffer + 1, "CD001\x01", 6) == 0) { if(aBuffer[0] == VDT_PRIVARY_VOLUME) { m_iSectorSize = ReadNativeInt(aBuffer + 128); _findHospDirectory(aBuffer + 156, 34, 0); if(m_iNumFiles == 0) { _setError("Could not find Theme Hospital data directory."); return false; } else { return true; } } else if(aBuffer[0] == VDT_TERMINATOR) break; } } _setError("Could not find primary volume descriptor."); return false; } int IsoFilesystem::_fileNameComp(const void* lhs, const void* rhs) { return std::strcmp( reinterpret_cast(lhs)->sPath, reinterpret_cast(rhs)->sPath); } char IsoFilesystem::_normalise(char c) { if(c == '_') // underscore to hyphen return '-'; else if('a' <= c && c <= 'z') // ASCII lowercase to ASCII uppercase return static_cast(c - 'a' + 'A'); else return c; } void IsoFilesystem::_trimIdentifierVersion(const uint8_t* sIdent, uint8_t& iLength) { for(uint8_t i = 0; i < iLength; ++i) { if(sIdent[i] == ';') { iLength = i; return; } } } int IsoFilesystem::_findHospDirectory(const uint8_t *pDirEnt, int iDirEntsSize, int iLevel) { // Sanity check // Apart from at the root level, directory record arrays must take up whole // sectors, whose sizes are powers of two and at least 2048. // The formal limit on directory depth is 8, so hitting 16 is insane. if((iLevel != 0 && (iDirEntsSize & 0x7FF)) || iLevel > 16) return 0; uint8_t *pBuffer = nullptr; uint32_t iBufferSize = 0; for(; iDirEntsSize > 0; iDirEntsSize -= *pDirEnt, pDirEnt += *pDirEnt) { // There is zero padding so that no record spans multiple sectors. if(*pDirEnt == 0) { --iDirEntsSize, ++pDirEnt; continue; } uint32_t iDataSector = ReadNativeInt(pDirEnt + 2); uint32_t iDataLength = ReadNativeInt(pDirEnt + 10); uint8_t iFlags = pDirEnt[25]; uint8_t iIdentLength = pDirEnt[32]; _trimIdentifierVersion(pDirEnt + 33, iIdentLength); if(iFlags & DEF_DIRECTORY) { // The names "\x00" and "\x01" are used for the current directory // the parent directory respectively. We only want to visit these // when at the root level. if(iLevel == 0 || iIdentLength != 1 || pDirEnt[33] > 1) { if(iDataLength > iBufferSize) { delete[] pBuffer; iBufferSize = iDataLength; pBuffer = new uint8_t[iBufferSize]; } if(_seekToSector(iDataSector) && _readData(iDataLength, pBuffer)) { int iFoundLevel = _findHospDirectory(pBuffer, iDataLength, iLevel + 1); if(iFoundLevel != 0) { if(iFoundLevel == 2) _buildFileLookupTable(iDataSector, iDataLength, ""); delete[] pBuffer; return iFoundLevel + 1; } } } } else { // Look for VBLK-0.TAB to serve as indication that we've found the // Theme Hospital data. if(iIdentLength == 10) { const char sName[10] = {'V','B','L','K','-','0','.','T','A','B'}; int i = 0; for(; i < 10; ++i) { if(_normalise(pDirEnt[33 + i]) != sName[i]) break; } if(i == 10) { return 1; } } } } delete[] pBuffer; return 0; } void IsoFilesystem::_buildFileLookupTable(uint32_t iSector, int iDirEntsSize, const char* sPrefix) { // Sanity check // Apart from at the root level, directory record arrays must take up whole // sectors, whose sizes are powers of two and at least 2048. // Path lengths shouldn't exceed 256 either (or at least not for the files // which we're interested in). size_t iLen = std::strlen(sPrefix); if((iLen != 0 && (iDirEntsSize & 0x7FF)) || (iLen > 256)) return; uint8_t *pBuffer = new uint8_t[iDirEntsSize]; if(!_seekToSector(iSector) || !_readData(iDirEntsSize, pBuffer)) { delete[] pBuffer; return; } uint8_t *pDirEnt = pBuffer; for(; iDirEntsSize > 0; iDirEntsSize -= *pDirEnt, pDirEnt += *pDirEnt) { // There is zero padding so that no record spans multiple sectors. if(*pDirEnt == 0) { --iDirEntsSize, ++pDirEnt; continue; } uint32_t iDataSector = ReadNativeInt(pDirEnt + 2); uint32_t iDataLength = ReadNativeInt(pDirEnt + 10); uint8_t iFlags = pDirEnt[25]; uint8_t iIdentLength = pDirEnt[32]; _trimIdentifierVersion(pDirEnt + 33, iIdentLength); // Build new path char *sPath = new char[iLen + iIdentLength + 2]; std::memcpy(sPath, sPrefix, iLen); #ifdef _MSC_VER #pragma warning(disable: 4996) #endif std::transform(pDirEnt + 33, pDirEnt + 33 + iIdentLength, sPath + iLen, _normalise); #ifdef _MSC_VER #pragma warning(default: 4996) #endif sPath[iLen + iIdentLength] = 0; if(iFlags & DEF_DIRECTORY) { // None of the directories which we're interested in have length 1. // This also avoids the dummy "current" and "parent" directories. if(iIdentLength > 1) { sPath[iLen + iIdentLength] = m_cPathSeparator; sPath[iLen + iIdentLength + 1] = 0; _buildFileLookupTable(iDataSector, iDataLength, sPath); } } else { _file_t *pFile = _allocFileRecord(); pFile->sPath = sPath; pFile->iSector = iDataSector; pFile->iSize = iDataLength; sPath = nullptr; } delete[] sPath; } delete[] pBuffer; if(iLen == 0) { // The lookup table will be ordered by the underlying ordering of the // disk, which isn't quite the ordering we want. qsort(m_pFiles, m_iNumFiles, sizeof(_file_t), _fileNameComp); } } IsoFilesystem::_file_t* IsoFilesystem::_allocFileRecord() { if(m_iNumFiles == m_iFileTableSize) { size_t iNewTableSize = m_iFileTableSize * 2 + 1; _file_t* pNewFiles = new _file_t[iNewTableSize]; std::memcpy(pNewFiles, m_pFiles, sizeof(_file_t) * m_iNumFiles); delete[] m_pFiles; m_pFiles = pNewFiles; m_iFileTableSize = iNewTableSize; } return m_pFiles + m_iNumFiles++; } void IsoFilesystem::visitDirectoryFiles(const char* sPath, void (*fnCallback)(void*, const char*), void* pCallbackData) const { size_t iLen = std::strlen(sPath) + 1; std::vector sNormedPath(iLen); for(size_t i = 0; i < iLen; ++i) sNormedPath[i] = _normalise(sPath[i]); // Inefficient (better would be to binary search for first and last files // which begin with sPath), but who cares - this isn't called often for(size_t i = 0; i < m_iNumFiles; ++i) { const char *sName = m_pFiles[i].sPath; if(std::strlen(sName) >= iLen && std::memcmp(sNormedPath.data(), sName, iLen - 1) == 0) { sName += iLen - 1; if(*sName == m_cPathSeparator) ++sName; if(std::strchr(sName, m_cPathSeparator) == nullptr) fnCallback(pCallbackData, sName); } } } IsoFilesystem::file_handle_t IsoFilesystem::findFile(const char* sPath) const { size_t iLen = std::strlen(sPath) + 1; std::vector sNormedPath(iLen); for(size_t i = 0; i < iLen; ++i) sNormedPath[i] = _normalise(sPath[i]); // Standard binary search over sorted list of files int iLower = 0, iUpper = static_cast(m_iNumFiles); while(iLower != iUpper) { int iMid = (iLower + iUpper) / 2; int iComp = std::strcmp(sNormedPath.data(), m_pFiles[iMid].sPath); if(iComp == 0) return iMid + 1; else if(iComp < 0) iUpper = iMid; else iLower = iMid + 1; } return 0; } uint32_t IsoFilesystem::getFileSize(file_handle_t iFile) const { if(iFile <= 0 || static_cast(iFile) > m_iNumFiles) return 0; else return m_pFiles[iFile - 1].iSize; } bool IsoFilesystem::getFileData(file_handle_t iFile, uint8_t *pBuffer) { if(iFile <= 0 || static_cast(iFile) > m_iNumFiles) { _setError("Invalid file handle."); return false; } else { return _seekToSector(m_pFiles[iFile - 1].iSector) && _readData(m_pFiles[iFile - 1].iSize, pBuffer); } } const char* IsoFilesystem::getError() const { return m_sError; } bool IsoFilesystem::_seekToSector(uint32_t iSector) { if(!m_fRawFile) { _setError("No raw file."); return false; } if(std::fseek(m_fRawFile, m_iSectorSize * static_cast(iSector), SEEK_SET) == 0) return true; else { _setError("Unable to seek to sector %i.", static_cast(iSector)); return false; } } bool IsoFilesystem::_readData(uint32_t iByteCount, uint8_t *pBuffer) { if(!m_fRawFile) { _setError("No raw file."); return false; } if(std::fread(pBuffer, 1, iByteCount, m_fRawFile) == iByteCount) return true; else { _setError("Unable to read %i bytes.", static_cast(iByteCount)); return false; } } void IsoFilesystem::_setError(const char* sFormat, ...) { if(m_sError == nullptr) { // None of the errors which we generate will be longer than 1024. m_sError = new char[1024]; } va_list a; va_start(a, sFormat); #ifdef _MSC_VER #pragma warning(disable: 4996) #endif std::vsprintf(m_sError, sFormat, a); #ifdef _MSC_VER #pragma warning(default: 4996) #endif va_end(a); } static int l_isofs_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_isofs_set_path_separator(lua_State *L) { IsoFilesystem *pSelf = luaT_testuserdata(L); pSelf->setPathSeparator(luaL_checkstring(L, 2)[0]); lua_settop(L, 1); return 1; } static int l_isofs_set_root(lua_State *L) { IsoFilesystem *pSelf = luaT_testuserdata(L); FILE *fIso = *luaT_testuserdata(L, 2); if(pSelf->initialise(fIso)) { lua_pushvalue(L, 2); luaT_setenvfield(L, 1, "file"); lua_settop(L, 1); return 1; } else { lua_pushnil(L); lua_pushstring(L, pSelf->getError()); return 2; } } static int l_isofs_read_contents(lua_State *L) { IsoFilesystem *pSelf = luaT_testuserdata(L); const char* sFilename = luaL_checkstring(L, 2); IsoFilesystem::file_handle_t iFile = pSelf->findFile(sFilename); if(!IsoFilesystem::isHandleGood(iFile)) { lua_pushnil(L); lua_pushfstring(L, "Could not find \'%s\' in .iso image", sFilename); return 2; } void* pBuffer = lua_newuserdata(L, pSelf->getFileSize(iFile)); if(!pSelf->getFileData(iFile, reinterpret_cast(pBuffer))) { lua_pushnil(L); lua_pushstring(L, pSelf->getError()); return 2; } lua_pushlstring(L, reinterpret_cast(pBuffer), pSelf->getFileSize(iFile)); return 1; } static void l_isofs_list_files_callback(void *p, const char* s) { lua_State *L = reinterpret_cast(p); lua_pushstring(L, s); lua_pushboolean(L, 1); lua_settable(L, 3); } static int l_isofs_list_files(lua_State *L) { IsoFilesystem *pSelf = luaT_testuserdata(L); const char* sPath = luaL_checkstring(L, 2); lua_settop(L, 2); lua_newtable(L); pSelf->visitDirectoryFiles(sPath, l_isofs_list_files_callback, L); return 1; } int luaopen_iso_fs(lua_State *L) { lua_settop(L, 1); if(!lua_tostring(L, 1)) { lua_pushliteral(L, "ISO_FS"); lua_replace(L, 1); } // Metatable lua_createtable(L, 0, 2); lua_pushvalue(L, -1); lua_replace(L, luaT_environindex); luaT_pushcclosure(L, luaT_stdgc, 0); lua_setfield(L, -2, "__gc"); // Methods table luaT_pushcclosuretable(L, l_isofs_new, 0); lua_pushvalue(L, -1); lua_setfield(L, -3, "__index"); lua_pushcfunction(L, l_isofs_set_path_separator); lua_setfield(L, -2, "setPathSeparator"); lua_getfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE); luaT_pushcclosure(L, l_isofs_set_root, 1); lua_setfield(L, -2, "setRoot"); lua_pushcfunction(L, l_isofs_read_contents); lua_setfield(L, -2, "readContents"); lua_pushcfunction(L, l_isofs_list_files); lua_setfield(L, -2, "listFiles"); lua_pushvalue(L, 1); lua_pushvalue(L, 2); #ifndef LUA_GLOBALSINDEX lua_pushglobaltable(L); lua_insert(L, -3); lua_settable(L, -3); lua_pop(L, 1); #else lua_settable(L, LUA_GLOBALSINDEX); #endif return 1; } CorsixTH-0.61/CorsixTH/Src/iso_fs.h000066400000000000000000000135341321660673500170470ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_lua.h" #include //! Layer for reading Theme Hospital files out of an .iso disk image /*! An instance of this class can read files which contain an ISO 9660 file system (as described at http://alumnus.caltech.edu/~pje/iso9660.html and http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf) which are typically called iso disk images. Once given a disk image, it searches for the Theme Hospital data files, and can then be used to read these data files. */ class IsoFilesystem { public: IsoFilesystem(); ~IsoFilesystem(); //! Set the character to be used between components in file paths void setPathSeparator(char cSeparator); //! Load an .iso disk image and search for Theme Hospital data files /*! \param fRawFile A file handle of an .iso disk image. This handle must remain valid for as long as the IsoFilesystem instance exists, and is not automatically closed by the IsoFilesystem instance. \return true on success, false on failure - call getError() for reason */ bool initialise(FILE* fRawFile); //! Get the reason for the most recent failure /*! Can be called after initialise() or getFileData() return false. */ const char* getError() const; typedef int file_handle_t; //! Find a file in the loaded .iso disk image /*! If (and only if) the given file could not be found, then isHandleGood() will return false on the returned handle. */ file_handle_t findFile(const char* sPath) const; //! Iterate all files of the .iso disk image within a given directory /*! \param sPath The directory to iterate \param fnCallback The function to be called for each file. The first parameter to this function is pCallbackData. The second is the name of a file which is in sPath. \param pCallbackData Opaque value to be called to fnCallback. */ void visitDirectoryFiles(const char* sPath, void (*fnCallback)(void*, const char*), void* pCallbackData) const; //! Test if a file handle from findFile() is good or is invalid static inline bool isHandleGood(file_handle_t x) {return x != 0;} //! Get the size (in bytes) of a file in the loaded .iso disk image /*! \param iFile A file handle returned by findFile() */ uint32_t getFileSize(file_handle_t iFile) const; //! Get the contents of a file in the loaded .iso disk image /*! \param iFile A file handle returned by findFile() \param pBuffer The buffer to place the resulting data in \return true on success, false on failure - call getError() for reason */ bool getFileData(file_handle_t iFile, uint8_t *pBuffer); private: struct _file_t { char *sPath; uint32_t iSector; uint32_t iSize; }; FILE* m_fRawFile; char* m_sError; _file_t* m_pFiles; size_t m_iNumFiles; size_t m_iFileTableSize; long m_iSectorSize; char m_cPathSeparator; //! Free any memory in use void _clear(); //! Set the last error, printf-style void _setError(const char* sFormat, ...); //! Seek to a logical sector of the disk image bool _seekToSector(uint32_t iSector); //! Read data from the disk image bool _readData(uint32_t iByteCount, uint8_t *pBuffer); //! Scan the given array of directory entries for a Theme Hospital file /*! \param pDirEnt Pointer to a padded array of ISO 9660 directory entries. \param iDirEntsSize The number of bytes in the directory entry array. \param iLevel The recursion level (used to prevent infinite loops upon maliciously-formed .iso disk images). \return 0 if no Theme Hospital files were found. 1 if the given array contains a Theme Hospital data file. 2 if the given array is the top-level Theme Hospital data directory. Other values otherwise. */ int _findHospDirectory(const uint8_t *pDirEnt, int iDirEntsSize, int iLevel); //! Build the list of Theme Hospital data files /*! \param iSector The ordinal of a logical sector containing a padded arrary of ISO 9660 directory entries. \param iDirEntsSize The number of bytes in the directory entry array. \param sPrefix The path name to prepend to filenames in the directory. */ void _buildFileLookupTable(uint32_t iSector, int iDirEntsSize, const char* sPrefix); //! Return the next free entry in m_pFiles _file_t* _allocFileRecord(); static char _normalise(char c); static int _fileNameComp(const void* lhs, const void* rhs); static void _trimIdentifierVersion(const uint8_t* sIdent, uint8_t& iLength); }; int luaopen_iso_fs(lua_State *L); CorsixTH-0.61/CorsixTH/Src/jit_opt.h000066400000000000000000002770061321660673500172430ustar00rootroot00000000000000/* ** Copyright (C) 2005-2008 Mike Pall. All rights reserved. ** ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the ** "Software"), to deal in the Software without restriction, including ** without limitation the rights to use, copy, modify, merge, publish, ** distribute, sublicense, and/or sell copies of the Software, and to ** permit persons to whom the Software is furnished to do so, subject to ** the following conditions: ** ** The above copyright notice and this permission notice shall be ** included in all copies or substantial portions of the Software. ** ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ** */ /* ** LuaJIT's opt.lua compiled to Lua bytecode */ static const uint8_t jit_opt_lua[] = { 0x1B, 'L' , 'u' , 'a' , 0x51, 0x00, 0x01, 0x04, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0xC3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x8A, 0x40, 0x01, 0x00, 0x89, 0xC0, 0x40, 0x81, 0x89, 0x40, 0x41, 0x82, 0x89, 0xC0, 0x41, 0x83, 0x89, 0x40, 0x42, 0x84, 0x89, 0xC0, 0x42, 0x85, 0xC5, 0x00, 0x03, 0x00, 0x01, 0x41, 0x03, 0x00, 0xDC, 0x80, 0x00, 0x01, 0x05, 0x81, 0x03, 0x00, 0x46, 0xC1, 0xC3, 0x01, 0x57, 0x00, 0xC4, 0x02, 0x16, 0x00, 0x00, 0x80, 0x42, 0x41, 0x00, 0x00, 0x42, 0x01, 0x80, 0x00, 0x81, 0x41, 0x04, 0x00, 0x1C, 0x41, 0x80, 0x01, 0x05, 0x01, 0x03, 0x00, 0x41, 0x81, 0x04, 0x00, 0x1C, 0x81, 0x00, 0x01, 0x45, 0xC1, 0x04, 0x00, 0x85, 0x01, 0x05, 0x00, 0xC5, 0x41, 0x05, 0x00, 0x05, 0x82, 0x05, 0x00, 0x46, 0xC2, 0x45, 0x02, 0x86, 0x02, 0x46, 0x02, 0xC6, 0x42, 0x46, 0x02, 0x06, 0x83, 0x46, 0x02, 0x45, 0xC3, 0x06, 0x00, 0x86, 0x03, 0xC7, 0x01, 0xC2, 0x03, 0x80, 0x00, 0x02, 0x04, 0x80, 0x00, 0x9C, 0x43, 0x80, 0x01, 0x81, 0x43, 0x07, 0x00, 0xE4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x02, 0x24, 0x44, 0x00, 0x00, 0x64, 0x84, 0x00, 0x00, 0x00, 0x00, 0x80, 0x05, 0xA4, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0xE4, 0x04, 0x01, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x24, 0x45, 0x01, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x80, 0x03, 0x64, 0x85, 0x01, 0x00, 0x00, 0x00, 0x80, 0x04, 0xA4, 0xC5, 0x01, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0xE4, 0x05, 0x02, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x80, 0x05, 0x0A, 0x86, 0x06, 0x00, 0x64, 0x46, 0x02, 0x00, 0x09, 0x46, 0x06, 0x8F, 0x64, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x46, 0x86, 0x8F, 0x64, 0xC6, 0x02, 0x00, 0x09, 0x46, 0x06, 0x90, 0x64, 0x06, 0x03, 0x00, 0x09, 0x46, 0x86, 0x90, 0x64, 0x46, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x46, 0x06, 0x91, 0x64, 0x86, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x05, 0x09, 0x46, 0x86, 0x91, 0x64, 0xC6, 0x03, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x09, 0x46, 0x06, 0x92, 0x09, 0x06, 0x84, 0x92, 0x09, 0x06, 0x04, 0x93, 0x64, 0x06, 0x04, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x80, 0x02, 0x09, 0x46, 0x86, 0x93, 0x64, 0x46, 0x04, 0x00, 0x09, 0x46, 0x06, 0x94, 0x64, 0x86, 0x04, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x09, 0x46, 0x86, 0x94, 0x09, 0x86, 0x05, 0x95, 0x09, 0x86, 0x85, 0x95, 0x09, 0x86, 0x05, 0x96, 0x09, 0x86, 0x85, 0x96, 0x09, 0x86, 0x05, 0x97, 0x09, 0x86, 0x85, 0x97, 0x09, 0x86, 0x05, 0x98, 0x09, 0x86, 0x85, 0x98, 0x64, 0xC6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x09, 0x46, 0x06, 0x99, 0x64, 0x06, 0x05, 0x00, 0x09, 0x46, 0x86, 0x99, 0x64, 0x46, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x46, 0x06, 0x9A, 0x64, 0x86, 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x09, 0x46, 0x86, 0x9A, 0x64, 0xC6, 0x05, 0x00, 0x00, 0x00, 0x80, 0x05, 0x09, 0x46, 0x06, 0x9B, 0x64, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x46, 0x86, 0x9B, 0x64, 0x46, 0x06, 0x00, 0x00, 0x00, 0x80, 0x0B, 0x09, 0x46, 0x06, 0x9C, 0x09, 0xC6, 0x85, 0x9C, 0x64, 0x86, 0x06, 0x00, 0x00, 0x00, 0x80, 0x08, 0x09, 0x46, 0x06, 0x9D, 0x64, 0xC6, 0x06, 0x00, 0x00, 0x00, 0x80, 0x08, 0x09, 0x46, 0x86, 0x9D, 0x64, 0x06, 0x07, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x80, 0x05, 0x09, 0x46, 0x06, 0x9E, 0x09, 0x06, 0x84, 0x9E, 0x64, 0x46, 0x07, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x09, 0x46, 0x06, 0x9F, 0x64, 0x86, 0x07, 0x00, 0x00, 0x00, 0x80, 0x05, 0x09, 0x46, 0x86, 0x9F, 0x64, 0xC6, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x09, 0x46, 0x06, 0xA0, 0x09, 0x06, 0x84, 0xA0, 0x64, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x04, 0x09, 0x46, 0x06, 0xA1, 0x64, 0x46, 0x08, 0x00, 0x09, 0x46, 0x86, 0xA1, 0x64, 0x86, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x06, 0x83, 0x06, 0x80, 0x0D, 0x24, 0xC7, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x0C, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x64, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA4, 0x47, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0E, 0x00, 0x00, 0x80, 0x0D, 0xC5, 0x07, 0x11, 0x00, 0x25, 0x08, 0x00, 0x00, 0xDC, 0x47, 0x00, 0x00, 0xE4, 0x87, 0x09, 0x00, 0x00, 0x00, 0x80, 0x08, 0xC7, 0x47, 0x11, 0x00, 0xE4, 0xC7, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC7, 0x87, 0x11, 0x00, 0x87, 0xC7, 0x11, 0x00, 0x87, 0x07, 0x12, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xAF, 0x40, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x62, 0x40, 0x04, 0x07, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x04, 0x07, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x40, 0x04, 0x05, 0x00, 0x00, 0x00, 0x73, 0x75, 0x62, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x40, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6A, 0x69, 0x74, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x00, 0x04, 0x0C, 0x00, 0x00, 0x00, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x6E, 0x75, 0x6D, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBC, 0xC3, 0x40, 0x04, 0x25, 0x00, 0x00, 0x00, 0x4C, 0x75, 0x61, 0x4A, 0x49, 0x54, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6D, 0x69, 0x73, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x6A, 0x69, 0x74, 0x2E, 0x75, 0x74, 0x69, 0x6C, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x78, 0x74, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x70, 0x63, 0x61, 0x6C, 0x6C, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x68, 0x69, 0x6E, 0x74, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x66, 0x68, 0x69, 0x6E, 0x74, 0x73, 0x00, 0x04, 0x0D, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x6D, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6F, 0x66, 0x66, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x04, 0x05, 0x00, 0x00, 0x00, 0x4D, 0x4F, 0x56, 0x45, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x4C, 0x4F, 0x41, 0x44, 0x4B, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x4C, 0x4F, 0x41, 0x44, 0x42, 0x4F, 0x4F, 0x4C, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x4C, 0x4F, 0x41, 0x44, 0x4E, 0x49, 0x4C, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x47, 0x45, 0x54, 0x55, 0x50, 0x56, 0x41, 0x4C, 0x00, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x47, 0x45, 0x54, 0x47, 0x4C, 0x4F, 0x42, 0x41, 0x4C, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x47, 0x45, 0x54, 0x54, 0x41, 0x42, 0x4C, 0x45, 0x00, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x53, 0x45, 0x54, 0x47, 0x4C, 0x4F, 0x42, 0x41, 0x4C, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x53, 0x45, 0x54, 0x55, 0x50, 0x56, 0x41, 0x4C, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x53, 0x45, 0x54, 0x54, 0x41, 0x42, 0x4C, 0x45, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x4E, 0x45, 0x57, 0x54, 0x41, 0x42, 0x4C, 0x45, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x53, 0x45, 0x4C, 0x46, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x41, 0x44, 0x44, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x53, 0x55, 0x42, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4D, 0x55, 0x4C, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x44, 0x49, 0x56, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4D, 0x4F, 0x44, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x50, 0x4F, 0x57, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x4C, 0x54, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x4C, 0x45, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x55, 0x4E, 0x4D, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4E, 0x4F, 0x54, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4C, 0x45, 0x4E, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4E, 0x43, 0x41, 0x54, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4A, 0x4D, 0x50, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x45, 0x51, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x45, 0x53, 0x54, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x54, 0x45, 0x53, 0x54, 0x53, 0x45, 0x54, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x43, 0x41, 0x4C, 0x4C, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x54, 0x41, 0x49, 0x4C, 0x43, 0x41, 0x4C, 0x4C, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4E, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x46, 0x4F, 0x52, 0x4C, 0x4F, 0x4F, 0x50, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x46, 0x4F, 0x52, 0x50, 0x52, 0x45, 0x50, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4F, 0x52, 0x4C, 0x4F, 0x4F, 0x50, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x53, 0x45, 0x54, 0x4C, 0x49, 0x53, 0x54, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x43, 0x4C, 0x4F, 0x53, 0x55, 0x52, 0x45, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x56, 0x41, 0x52, 0x41, 0x52, 0x47, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5F, 0x63, 0x61, 0x6C, 0x6C, 0x68, 0x69, 0x6E, 0x74, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0D, 0x44, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x41, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x5C, 0x81, 0x81, 0x01, 0x49, 0x80, 0x40, 0x02, 0x0C, 0x41, 0x40, 0x02, 0x17, 0xC0, 0xC0, 0x02, 0x16, 0xC0, 0x00, 0x80, 0x0C, 0xC1, 0x01, 0x02, 0x92, 0x02, 0x00, 0x02, 0x49, 0x80, 0x40, 0x05, 0x16, 0x40, 0x0A, 0x80, 0x17, 0x00, 0xC1, 0x02, 0x16, 0x00, 0x01, 0x80, 0x92, 0x02, 0x00, 0x02, 0xCD, 0xC2, 0x01, 0x05, 0x49, 0x80, 0xC0, 0x05, 0x49, 0x80, 0x40, 0x05, 0x16, 0x80, 0x08, 0x80, 0x17, 0x40, 0xC1, 0x02, 0x16, 0x40, 0x00, 0x80, 0x16, 0x80, 0x08, 0x80, 0x16, 0x80, 0x07, 0x80, 0x5A, 0x02, 0x00, 0x00, 0x16, 0x80, 0x01, 0x80, 0x8C, 0x42, 0x40, 0x02, 0xC6, 0x82, 0x82, 0x00, 0xDA, 0x42, 0x00, 0x00, 0x16, 0x00, 0x06, 0x80, 0xCC, 0x40, 0xC0, 0x01, 0x89, 0x80, 0x82, 0x01, 0x16, 0x40, 0x05, 0x80, 0x17, 0x80, 0xC1, 0x02, 0x16, 0x80, 0x01, 0x80, 0x84, 0x02, 0x80, 0x00, 0x86, 0xC2, 0x41, 0x05, 0xC0, 0x02, 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0x9C, 0x82, 0x80, 0x01, 0x0C, 0x81, 0x02, 0x02, 0x16, 0x00, 0x03, 0x80, 0x17, 0x00, 0xC2, 0x02, 0x16, 0x40, 0x01, 0x80, 0x57, 0x00, 0x40, 0x04, 0x16, 0xC0, 0x00, 0x80, 0x0C, 0x41, 0x40, 0x02, 0x92, 0x02, 0x00, 0x02, 0x49, 0x80, 0x40, 0x05, 0x16, 0x00, 0x01, 0x80, 0x17, 0x40, 0xC2, 0x02, 0x16, 0x80, 0x00, 0x80, 0x17, 0x00, 0x40, 0x04, 0x16, 0x00, 0x00, 0x80, 0x0C, 0x41, 0x40, 0x02, 0x86, 0x02, 0x81, 0x00, 0x9A, 0x02, 0x00, 0x00, 0x16, 0x80, 0xF1, 0x7F, 0x17, 0x00, 0xC0, 0x01, 0x16, 0x00, 0x00, 0x80, 0x5E, 0x00, 0x00, 0x01, 0x06, 0xC1, 0x00, 0x01, 0xCD, 0x40, 0xC0, 0x01, 0x16, 0x00, 0xF0, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x01, 0x01, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4A, 0x4D, 0x50, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x46, 0x4F, 0x52, 0x4C, 0x4F, 0x4F, 0x50, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4E, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x43, 0x4C, 0x4F, 0x53, 0x55, 0x52, 0x45, 0x00, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x63, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65, 0x6E, 0x75, 0x70, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x4C, 0x4F, 0x41, 0x44, 0x42, 0x4F, 0x4F, 0x4C, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x53, 0x45, 0x54, 0x4C, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0A, 0x0D, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x86, 0x01, 0x40, 0x03, 0x8C, 0x81, 0x01, 0x01, 0xC6, 0xC1, 0x80, 0x00, 0x09, 0xC0, 0x01, 0x03, 0x80, 0x01, 0x80, 0x01, 0xCC, 0x41, 0x81, 0x01, 0xCD, 0x41, 0xC0, 0x03, 0x01, 0x42, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x80, 0x49, 0x80, 0xC0, 0x04, 0x9F, 0x41, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x05, 0x0E, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xDC, 0x80, 0x00, 0x01, 0x57, 0x00, 0xC0, 0x01, 0x16, 0xC0, 0x00, 0x80, 0x57, 0x40, 0xC0, 0x01, 0x16, 0x40, 0x00, 0x80, 0x17, 0x80, 0xC0, 0x01, 0x16, 0xC0, 0x00, 0x80, 0x04, 0x01, 0x80, 0x00, 0x06, 0xC1, 0x40, 0x02, 0x0C, 0x01, 0x81, 0x00, 0x09, 0x80, 0x00, 0x02, 0x1E, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x09, 0x1A, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x5C, 0x81, 0x00, 0x01, 0x57, 0x00, 0xC0, 0x02, 0x16, 0x40, 0x00, 0x80, 0x17, 0x40, 0xC0, 0x02, 0x16, 0xC0, 0x00, 0x80, 0x84, 0x01, 0x80, 0x00, 0x86, 0x81, 0x40, 0x03, 0x8C, 0x81, 0x01, 0x01, 0x09, 0xC0, 0x00, 0x03, 0x19, 0x00, 0x81, 0x81, 0x16, 0xC0, 0x02, 0x80, 0x86, 0x01, 0x81, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xDC, 0x81, 0x00, 0x01, 0x57, 0x00, 0xC1, 0x03, 0x16, 0x40, 0x00, 0x80, 0x17, 0x40, 0xC1, 0x03, 0x16, 0xC0, 0x00, 0x80, 0x04, 0x02, 0x80, 0x00, 0x06, 0x82, 0x41, 0x04, 0x0C, 0x02, 0x02, 0x01, 0x09, 0x80, 0x01, 0x04, 0x1E, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x4B, 0x45, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x08, 0x37, 0x00, 0x00, 0x00, 0x17, 0x00, 0x40, 0x01, 0x16, 0x40, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x01, 0xDE, 0x00, 0x00, 0x01, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0xDC, 0x80, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x01, 0x16, 0x80, 0x01, 0x80, 0xC4, 0x00, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x40, 0x01, 0x00, 0x01, 0xDC, 0x80, 0x80, 0x01, 0x57, 0x00, 0xC0, 0x01, 0x16, 0x00, 0x00, 0x80, 0xDE, 0x00, 0x00, 0x01, 0xC4, 0x00, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0xDC, 0x80, 0x00, 0x01, 0x04, 0x01, 0x00, 0x00, 0x40, 0x01, 0x80, 0x01, 0x1C, 0x81, 0x00, 0x01, 0x17, 0x40, 0x40, 0x02, 0x16, 0xC0, 0x03, 0x80, 0x04, 0x01, 0x80, 0x00, 0x40, 0x01, 0x80, 0x01, 0x81, 0x81, 0x00, 0x00, 0x1C, 0x81, 0x80, 0x01, 0x44, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x02, 0x5C, 0x81, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x02, 0x16, 0x80, 0x01, 0x80, 0x44, 0x01, 0x80, 0x00, 0x80, 0x01, 0x00, 0x02, 0xC0, 0x01, 0x00, 0x01, 0x5C, 0x81, 0x80, 0x01, 0x57, 0x00, 0xC0, 0x02, 0x16, 0x00, 0x00, 0x80, 0x5E, 0x01, 0x00, 0x01, 0x06, 0xC1, 0x40, 0x00, 0x06, 0x41, 0x00, 0x02, 0x17, 0x00, 0x40, 0x02, 0x16, 0x00, 0x02, 0x80, 0x44, 0x01, 0x00, 0x00, 0x80, 0x01, 0x80, 0x00, 0x5C, 0x81, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x02, 0x16, 0xC0, 0x00, 0x80, 0x44, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x5C, 0x81, 0x00, 0x01, 0x00, 0x01, 0x80, 0x02, 0x1E, 0x01, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x5F, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x09, 0x17, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, 0x00, 0x52, 0x01, 0x00, 0x01, 0x06, 0x41, 0x01, 0x02, 0x17, 0x40, 0x40, 0x02, 0x16, 0x00, 0x04, 0x80, 0x04, 0x01, 0x00, 0x00, 0x46, 0x81, 0x40, 0x00, 0x8D, 0xC1, 0x40, 0x01, 0x1C, 0x01, 0x81, 0x01, 0x17, 0xC0, 0x80, 0x02, 0x16, 0x80, 0x02, 0x80, 0x57, 0x00, 0x41, 0x02, 0x16, 0x40, 0x01, 0x80, 0x57, 0x40, 0x41, 0x02, 0x16, 0xC0, 0x00, 0x80, 0x17, 0x80, 0x41, 0x02, 0x16, 0x00, 0x01, 0x80, 0x17, 0xC0, 0x00, 0x03, 0x16, 0x80, 0x00, 0x80, 0xC2, 0x01, 0x80, 0x00, 0x06, 0xC2, 0x80, 0x00, 0xDE, 0x01, 0x80, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x76, 0x65, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x06, 0x00, 0x00, 0x00, 0x4C, 0x4F, 0x41, 0x44, 0x4B, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x4C, 0x4F, 0x41, 0x44, 0x42, 0x4F, 0x4F, 0x4C, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x4C, 0x4F, 0x41, 0x44, 0x4E, 0x49, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x0C, 0x2F, 0x00, 0x00, 0x00, 0xC6, 0x01, 0x81, 0x00, 0x06, 0x42, 0x81, 0x00, 0x17, 0x00, 0xC0, 0x03, 0x16, 0x40, 0x00, 0x80, 0xC0, 0x01, 0x00, 0x04, 0x16, 0x80, 0x00, 0x80, 0x17, 0x00, 0x40, 0x04, 0x16, 0x00, 0x00, 0x80, 0x00, 0x02, 0x80, 0x03, 0x44, 0x02, 0x00, 0x00, 0x80, 0x02, 0x80, 0x03, 0x5C, 0x82, 0x00, 0x01, 0x84, 0x02, 0x00, 0x00, 0xC0, 0x02, 0x00, 0x04, 0x9C, 0x82, 0x00, 0x01, 0x17, 0x80, 0x82, 0x04, 0x16, 0xC0, 0x04, 0x80, 0x17, 0x40, 0xC0, 0x04, 0x16, 0x80, 0x02, 0x80, 0x57, 0x80, 0x40, 0x03, 0x16, 0x40, 0x01, 0x80, 0xD0, 0xC2, 0xC0, 0x03, 0x17, 0x00, 0xC1, 0x05, 0x16, 0x80, 0x00, 0x80, 0xD0, 0xC2, 0x40, 0x04, 0x57, 0x00, 0xC1, 0x05, 0x16, 0x40, 0x00, 0x80, 0xC1, 0x41, 0x01, 0x00, 0x16, 0x00, 0x00, 0x80, 0xC1, 0xC1, 0x00, 0x00, 0x57, 0x00, 0xC0, 0x03, 0x16, 0x00, 0x02, 0x80, 0xC4, 0x02, 0x80, 0x00, 0xC6, 0x82, 0xC1, 0x05, 0xCC, 0xC2, 0x02, 0x01, 0x09, 0xC0, 0x81, 0x05, 0x16, 0xC0, 0x00, 0x80, 0xC4, 0x02, 0x80, 0x00, 0xC6, 0x82, 0xC1, 0x05, 0xCC, 0xC2, 0x02, 0x01, 0x09, 0xC0, 0xC1, 0x05, 0x57, 0x00, 0x42, 0x03, 0x16, 0x80, 0x00, 0x80, 0x57, 0x40, 0x42, 0x03, 0x16, 0x00, 0x00, 0x80, 0x49, 0xC0, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x44, 0x49, 0x56, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x3F, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x01, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x4C, 0x54, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0B, 0x16, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x00, 0x01, 0x80, 0x02, 0x00, 0x02, 0x9C, 0xC1, 0x80, 0x02, 0xDA, 0x01, 0x00, 0x00, 0x16, 0x80, 0x02, 0x80, 0x17, 0x00, 0x81, 0x01, 0x16, 0x00, 0x02, 0x80, 0x04, 0x02, 0x80, 0x00, 0x06, 0x02, 0x40, 0x04, 0x0C, 0x02, 0x02, 0x01, 0x09, 0x40, 0x40, 0x04, 0x17, 0x80, 0xC0, 0x02, 0x16, 0x80, 0x00, 0x80, 0x06, 0xC2, 0x40, 0x00, 0x4C, 0x02, 0x41, 0x01, 0x09, 0x42, 0xC1, 0x04, 0x06, 0x02, 0x81, 0x00, 0x49, 0x00, 0x82, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4D, 0x42, 0x49, 0x4E, 0x45, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x76, 0x65, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x86, 0x01, 0x81, 0x00, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC6, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x02, 0x9C, 0x81, 0x80, 0x01, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x40, 0x02, 0x16, 0x00, 0x00, 0x80, 0x82, 0x41, 0x00, 0x00, 0x82, 0x01, 0x80, 0x00, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0A, 0x07, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0xC0, 0x01, 0x00, 0x02, 0x01, 0x02, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x80, 0x49, 0x40, 0xC0, 0x04, 0x9F, 0x41, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x09, 0x07, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x86, 0x01, 0x40, 0x03, 0xC6, 0x41, 0x40, 0x00, 0x00, 0x02, 0x00, 0x02, 0x9C, 0x81, 0x80, 0x01, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x75, 0x70, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0C, 0x0B, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x06, 0x02, 0x40, 0x00, 0x06, 0x42, 0x40, 0x04, 0x44, 0x02, 0x80, 0x00, 0x86, 0x82, 0x40, 0x00, 0xC0, 0x02, 0x00, 0x02, 0x5C, 0x02, 0x80, 0x01, 0x9C, 0x81, 0x00, 0x00, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x73, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x65, 0x6E, 0x76, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0D, 0x0F, 0x00, 0x00, 0x00, 0x86, 0x01, 0x81, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x00, 0x80, 0x02, 0x00, 0x01, 0xC0, 0x02, 0x00, 0x03, 0x00, 0x03, 0x80, 0x02, 0xDC, 0x41, 0x00, 0x03, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x03, 0x86, 0x42, 0x81, 0x00, 0xDC, 0x81, 0x00, 0x02, 0x49, 0xC0, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0D, 0x18, 0x00, 0x00, 0x00, 0x86, 0xC1, 0x80, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x00, 0x80, 0x02, 0x00, 0x01, 0xC0, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0xDC, 0x41, 0x00, 0x03, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0xDC, 0x81, 0x00, 0x01, 0x57, 0x00, 0xC0, 0x03, 0x16, 0x00, 0x01, 0x80, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0xDC, 0x81, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x03, 0x16, 0x00, 0x01, 0x80, 0xC6, 0x41, 0x81, 0x00, 0x57, 0x80, 0xC0, 0x03, 0x16, 0x40, 0x00, 0x80, 0x06, 0xC2, 0x40, 0x00, 0x09, 0xC2, 0x01, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0D, 0x11, 0x00, 0x00, 0x00, 0x86, 0x01, 0x81, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x00, 0x80, 0x02, 0x00, 0x01, 0xC0, 0x02, 0x00, 0x03, 0x00, 0x03, 0x80, 0x02, 0xDC, 0x41, 0x00, 0x03, 0xCC, 0x01, 0xC0, 0x01, 0x49, 0x80, 0x81, 0x03, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x03, 0x86, 0x42, 0x81, 0x00, 0xDC, 0x81, 0x00, 0x02, 0x49, 0xC0, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0E, 0x0B, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x00, 0x01, 0x80, 0x02, 0x80, 0x01, 0xC0, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x41, 0x03, 0x00, 0x00, 0x9D, 0x01, 0x00, 0x04, 0x9E, 0x01, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x55, 0x4E, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x49, 0x00, 0xC0, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0A, 0x07, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x46, 0x02, 0x81, 0x00, 0x9C, 0x41, 0x00, 0x02, 0x49, 0x00, 0xC0, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x02, 0x06, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x00, 0xC6, 0x01, 0x81, 0x00, 0x0C, 0x02, 0x40, 0x02, 0x40, 0x02, 0x80, 0x02, 0x81, 0x02, 0x00, 0x00, 0x20, 0x02, 0x04, 0x80, 0x06, 0xC3, 0x82, 0x00, 0x17, 0x40, 0xC0, 0x03, 0x16, 0x40, 0x00, 0x80, 0xC0, 0x01, 0x00, 0x06, 0x16, 0xC0, 0x02, 0x80, 0x57, 0x40, 0x40, 0x06, 0x16, 0x40, 0x02, 0x80, 0x44, 0x03, 0x00, 0x00, 0x80, 0x03, 0x80, 0x03, 0x5C, 0x83, 0x00, 0x01, 0x84, 0x03, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x9C, 0x83, 0x00, 0x01, 0x57, 0x80, 0x83, 0x06, 0x16, 0x40, 0x00, 0x80, 0x82, 0x01, 0x80, 0x00, 0x16, 0x00, 0x00, 0x80, 0x1F, 0x42, 0xFB, 0x7F, 0x17, 0x40, 0xC0, 0x03, 0x16, 0x40, 0x00, 0x80, 0xC1, 0x81, 0x00, 0x00, 0x16, 0x80, 0x03, 0x80, 0x04, 0x02, 0x80, 0x00, 0x06, 0xC2, 0x40, 0x04, 0x0C, 0x02, 0x02, 0x01, 0x9A, 0x41, 0x00, 0x00, 0x16, 0x40, 0x00, 0x80, 0x5B, 0x42, 0x80, 0x03, 0x16, 0x00, 0x00, 0x80, 0x42, 0x02, 0x00, 0x00, 0x09, 0x40, 0x02, 0x04, 0x04, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x03, 0x1C, 0x82, 0x00, 0x01, 0x17, 0x00, 0x41, 0x04, 0x16, 0x00, 0x00, 0x80, 0xC1, 0x81, 0x00, 0x00, 0x49, 0xC0, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x19, 0x00, 0x01, 0x80, 0x16, 0x00, 0x03, 0x80, 0x8C, 0x01, 0x01, 0x01, 0xC6, 0x41, 0x40, 0x00, 0xC6, 0x81, 0x81, 0x03, 0xDA, 0x41, 0x00, 0x00, 0x16, 0x40, 0x00, 0x80, 0x8D, 0x81, 0x40, 0x03, 0x16, 0x40, 0xFE, 0x7F, 0x17, 0x80, 0x00, 0x03, 0x16, 0xC0, 0x00, 0x80, 0xC4, 0x01, 0x00, 0x00, 0xC6, 0xC1, 0xC0, 0x03, 0xCC, 0xC1, 0x01, 0x01, 0x09, 0x00, 0xC1, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x76, 0x65, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x08, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4D, 0x42, 0x49, 0x4E, 0x45, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0A, 0x0D, 0x00, 0x00, 0x00, 0x19, 0x00, 0x01, 0x80, 0x16, 0x40, 0x02, 0x80, 0x19, 0x40, 0x01, 0x80, 0x16, 0xC0, 0x01, 0x80, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x46, 0x02, 0x81, 0x00, 0x5A, 0x42, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0x46, 0x42, 0x81, 0x00, 0x9C, 0x41, 0x00, 0x02, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x00, 0x01, 0x80, 0x02, 0x80, 0x01, 0xC0, 0x02, 0x80, 0x01, 0x00, 0x03, 0x80, 0x02, 0x9D, 0x01, 0x80, 0x03, 0x9E, 0x01, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0D, 0x09, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x00, 0x01, 0x80, 0x02, 0x80, 0x01, 0xCD, 0x02, 0x40, 0x02, 0x0D, 0x03, 0xC0, 0x02, 0x9C, 0x41, 0x80, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0D, 0x09, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x00, 0x01, 0x80, 0x02, 0x80, 0x01, 0xCD, 0x02, 0x40, 0x02, 0x01, 0x43, 0x00, 0x00, 0x9C, 0x41, 0x80, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x01, 0x00, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0B, 0x10, 0x00, 0x00, 0x00, 0x17, 0x00, 0x40, 0x02, 0x16, 0x00, 0x03, 0x80, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x00, 0x01, 0x80, 0x02, 0x80, 0x01, 0x9C, 0x81, 0x80, 0x02, 0x9A, 0x01, 0x00, 0x00, 0x16, 0x00, 0x01, 0x80, 0x8D, 0x41, 0x40, 0x01, 0xC4, 0x01, 0x80, 0x00, 0xC6, 0x81, 0xC0, 0x03, 0x8C, 0xC1, 0x01, 0x03, 0x09, 0xC0, 0x40, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x08, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4D, 0x42, 0x49, 0x4E, 0x45, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x03, 0x06, 0x00, 0x0F, 0x37, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x00, 0x01, 0x8C, 0x02, 0xC0, 0x01, 0x9C, 0xC1, 0x80, 0x02, 0x04, 0x02, 0x80, 0x00, 0x40, 0x02, 0x80, 0x03, 0x1C, 0x82, 0x00, 0x01, 0x17, 0x40, 0x40, 0x04, 0x16, 0xC0, 0x00, 0x80, 0x04, 0x02, 0x00, 0x01, 0x06, 0x82, 0x40, 0x04, 0x0C, 0x02, 0x02, 0x01, 0x09, 0xC0, 0x01, 0x04, 0x06, 0xC2, 0x80, 0x00, 0x4C, 0x02, 0xC0, 0x01, 0x46, 0x42, 0x82, 0x00, 0x84, 0x02, 0x80, 0x00, 0xC0, 0x02, 0x00, 0x04, 0x9C, 0x82, 0x00, 0x01, 0xC4, 0x02, 0x80, 0x00, 0x00, 0x03, 0x80, 0x04, 0xDC, 0x82, 0x00, 0x01, 0x17, 0x40, 0x40, 0x05, 0x16, 0x80, 0x00, 0x80, 0x10, 0xC3, 0x40, 0x04, 0x17, 0x00, 0x41, 0x06, 0x16, 0x00, 0x01, 0x80, 0x17, 0x40, 0xC0, 0x05, 0x16, 0x40, 0x01, 0x80, 0x10, 0xC3, 0xC0, 0x04, 0x57, 0x00, 0x41, 0x06, 0x16, 0x80, 0x00, 0x80, 0x01, 0x43, 0x01, 0x00, 0x1A, 0x43, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0x01, 0xC3, 0x00, 0x00, 0x4C, 0x83, 0xC1, 0x01, 0x49, 0x00, 0x83, 0x06, 0x17, 0x40, 0x40, 0x05, 0x16, 0xC0, 0x02, 0x80, 0x17, 0x40, 0xC0, 0x05, 0x16, 0x40, 0x02, 0x80, 0x44, 0x03, 0x80, 0x00, 0x8C, 0xC3, 0xC0, 0x01, 0x86, 0x83, 0x83, 0x00, 0x5C, 0x83, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x06, 0x16, 0xC0, 0x00, 0x80, 0x44, 0x03, 0x00, 0x01, 0x46, 0xC3, 0xC1, 0x06, 0x4C, 0x43, 0x03, 0x01, 0x09, 0x00, 0x83, 0x06, 0x1E, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x46, 0x4F, 0x52, 0x5F, 0x53, 0x54, 0x45, 0x50, 0x5F, 0x4B, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x86, 0x01, 0x40, 0x03, 0x8C, 0x81, 0x01, 0x01, 0xC6, 0xC1, 0x80, 0x00, 0x09, 0xC0, 0x01, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x09, 0x0B, 0x00, 0x00, 0x00, 0x86, 0xC1, 0x80, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xDC, 0x81, 0x00, 0x01, 0x17, 0x00, 0xC0, 0x03, 0x16, 0xC0, 0x00, 0x80, 0xC6, 0x41, 0x40, 0x00, 0x0C, 0x82, 0xC0, 0x01, 0x06, 0x02, 0x82, 0x00, 0xC9, 0x01, 0x02, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00, 0x03, 0x06, 0x00, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x49, 0x80, 0x81, 0x01, 0x86, 0x01, 0x40, 0x00, 0x9A, 0x01, 0x00, 0x00, 0x16, 0x40, 0x04, 0x80, 0x84, 0x01, 0x80, 0x00, 0x86, 0x41, 0x40, 0x03, 0xC6, 0x81, 0x40, 0x00, 0x00, 0x02, 0x00, 0x02, 0x9C, 0x81, 0x80, 0x01, 0xCC, 0xC1, 0x40, 0x01, 0x0C, 0x82, 0x01, 0x01, 0x41, 0xC2, 0x00, 0x00, 0xE0, 0xC1, 0x01, 0x80, 0xC4, 0x02, 0x00, 0x01, 0x06, 0x83, 0x40, 0x00, 0x40, 0x03, 0x00, 0x05, 0xDC, 0x82, 0x80, 0x01, 0x17, 0x00, 0xC1, 0x05, 0x16, 0x40, 0x00, 0x80, 0x09, 0x40, 0x41, 0x80, 0x1E, 0x00, 0x80, 0x00, 0xDF, 0x81, 0xFD, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x6E, 0x6F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x63, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65, 0x6E, 0x75, 0x70, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x05, 0x00, 0x00, 0x00, 0x4D, 0x4F, 0x56, 0x45, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x86, 0x01, 0x40, 0x00, 0x86, 0x41, 0x40, 0x03, 0xC1, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x41, 0x82, 0x00, 0x00, 0xE0, 0x01, 0x01, 0x80, 0xCC, 0x82, 0x82, 0x01, 0xCD, 0x82, 0xC0, 0x05, 0x0C, 0x83, 0x02, 0x03, 0x06, 0x03, 0x03, 0x00, 0x49, 0x00, 0x83, 0x05, 0xDF, 0x41, 0xFE, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xAC, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x16, 0x73, 0x00, 0x00, 0x00, 0x46, 0x00, 0x40, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0x1E, 0x00, 0x80, 0x00, 0x46, 0x40, 0x40, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x80, 0x40, 0x01, 0xC0, 0x00, 0x80, 0x00, 0x9C, 0x80, 0x00, 0x01, 0x9A, 0x40, 0x00, 0x00, 0x16, 0xC0, 0x00, 0x80, 0xC4, 0x00, 0x00, 0x00, 0xC6, 0xC0, 0xC0, 0x01, 0xC6, 0x00, 0xC1, 0x01, 0xDE, 0x00, 0x00, 0x01, 0xC6, 0x40, 0x41, 0x01, 0x04, 0x01, 0x80, 0x00, 0x06, 0x41, 0x41, 0x02, 0x58, 0xC0, 0x00, 0x02, 0x16, 0xC0, 0x04, 0x80, 0xC6, 0x80, 0x41, 0x01, 0x04, 0x01, 0x80, 0x00, 0x06, 0x81, 0x41, 0x02, 0x58, 0xC0, 0x00, 0x02, 0x16, 0x80, 0x03, 0x80, 0xC6, 0xC0, 0x41, 0x01, 0x04, 0x01, 0x80, 0x00, 0x06, 0xC1, 0x41, 0x02, 0x58, 0xC0, 0x00, 0x02, 0x16, 0x40, 0x02, 0x80, 0xC6, 0x00, 0x42, 0x01, 0x04, 0x01, 0x80, 0x00, 0x06, 0x01, 0x42, 0x02, 0x58, 0xC0, 0x00, 0x02, 0x16, 0x00, 0x01, 0x80, 0xC6, 0x40, 0x42, 0x01, 0x04, 0x01, 0x80, 0x00, 0x06, 0x41, 0x42, 0x02, 0x18, 0xC0, 0x00, 0x02, 0x16, 0xC0, 0x00, 0x80, 0xC4, 0x00, 0x00, 0x00, 0xC6, 0xC0, 0xC0, 0x01, 0xC6, 0x80, 0xC2, 0x01, 0xDE, 0x00, 0x00, 0x01, 0xC4, 0x00, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0xDC, 0x80, 0x00, 0x01, 0x09, 0x00, 0xC3, 0x85, 0x09, 0x80, 0x00, 0x81, 0x09, 0xC0, 0x80, 0x86, 0x0A, 0x41, 0x00, 0x00, 0x46, 0xC1, 0x43, 0x01, 0x84, 0x01, 0x80, 0x01, 0x09, 0x81, 0x81, 0x02, 0x09, 0x00, 0x01, 0x87, 0x0A, 0x01, 0x00, 0x00, 0x41, 0x01, 0x04, 0x00, 0x86, 0xC1, 0x41, 0x01, 0xC1, 0x01, 0x04, 0x00, 0x60, 0x81, 0x00, 0x80, 0x4D, 0x02, 0x44, 0x04, 0x86, 0x02, 0x02, 0x00, 0x09, 0x81, 0x82, 0x04, 0x5F, 0xC1, 0xFE, 0x7F, 0x41, 0x41, 0x04, 0x00, 0x81, 0x81, 0x04, 0x00, 0xC1, 0x41, 0x04, 0x00, 0x60, 0xC1, 0x01, 0x80, 0x44, 0x02, 0x00, 0x02, 0x80, 0x02, 0x80, 0x00, 0xC0, 0x02, 0x00, 0x04, 0x5C, 0xC2, 0x80, 0x01, 0x9A, 0x42, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0x16, 0x40, 0x00, 0x80, 0x09, 0x41, 0x02, 0x04, 0x5F, 0x81, 0xFD, 0x7F, 0x41, 0x01, 0x04, 0x00, 0x86, 0x41, 0x41, 0x01, 0xC1, 0x01, 0x04, 0x00, 0x60, 0x41, 0x05, 0x80, 0x46, 0x02, 0x82, 0x01, 0x5A, 0x02, 0x00, 0x00, 0x16, 0x80, 0x03, 0x80, 0x44, 0x02, 0x80, 0x02, 0x80, 0x02, 0x80, 0x00, 0xC0, 0x02, 0x00, 0x04, 0x5C, 0x82, 0x81, 0x01, 0x84, 0x03, 0x00, 0x03, 0x86, 0x43, 0x02, 0x07, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x40, 0x04, 0x00, 0x04, 0x80, 0x04, 0x00, 0x05, 0xC0, 0x04, 0x80, 0x05, 0x00, 0x05, 0x00, 0x06, 0x40, 0x05, 0x80, 0x04, 0x9C, 0x43, 0x00, 0x04, 0x16, 0xC0, 0x00, 0x80, 0x44, 0x02, 0x80, 0x03, 0x46, 0xC2, 0xC4, 0x04, 0x4C, 0x42, 0x02, 0x04, 0x09, 0x00, 0xC5, 0x04, 0x5F, 0x01, 0xFA, 0x7F, 0x46, 0xC1, 0x42, 0x00, 0x5A, 0x01, 0x00, 0x00, 0x16, 0x80, 0x00, 0x80, 0x44, 0x01, 0x00, 0x04, 0x46, 0x41, 0xC5, 0x02, 0x09, 0x00, 0xC3, 0x02, 0x09, 0x80, 0xC5, 0x85, 0x09, 0x80, 0x45, 0x81, 0x09, 0x80, 0xC5, 0x86, 0x09, 0x80, 0x45, 0x87, 0x1E, 0x00, 0x80, 0x00, 0x17, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6F, 0x70, 0x74, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x00, 0x04, 0x0F, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4D, 0x50, 0x49, 0x4C, 0x45, 0x52, 0x5F, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x00, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x73, 0x00, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x73, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x73, 0x75, 0x62, 0x73, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x54, 0x4F, 0x4F, 0x4C, 0x41, 0x52, 0x47, 0x45, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x6E, 0x6F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x01, 0x01, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x76, 0x65, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x65, 0x6E, 0x76, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC0, 0x04, 0x08, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4D, 0x42, 0x49, 0x4E, 0x45, 0x00, 0x01, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x4E, 0x4F, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x01, 0x00, 0x00, 0xBD, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x19, 0x00, 0xC0, 0x00, 0x16, 0x00, 0x00, 0x80, 0x1E, 0x00, 0x80, 0x00, 0x44, 0x00, 0x80, 0x00, 0x84, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x5C, 0xC0, 0x80, 0x01, 0x5A, 0x40, 0x00, 0x00, 0x16, 0x40, 0x03, 0x80, 0xC5, 0x40, 0x00, 0x00, 0xC6, 0x80, 0xC0, 0x01, 0xCB, 0xC0, 0xC0, 0x01, 0x41, 0x01, 0x01, 0x00, 0x80, 0x01, 0x00, 0x01, 0xC1, 0x41, 0x01, 0x00, 0xDC, 0x40, 0x80, 0x02, 0xC4, 0x00, 0x80, 0x01, 0xC6, 0x80, 0xC1, 0x01, 0x04, 0x01, 0x00, 0x02, 0xDC, 0x40, 0x00, 0x01, 0xC3, 0x00, 0x80, 0x01, 0xC8, 0x00, 0x80, 0x02, 0x16, 0x80, 0x00, 0x80, 0x9A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0x9E, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x69, 0x6F, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x00, 0x04, 0x1B, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x3A, 0x20, 0x6A, 0x69, 0x74, 0x2E, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x3A, 0x20, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xCB, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x09, 0x26, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x40, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x5C, 0xC0, 0x80, 0x01, 0x5A, 0x40, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x55, 0x00, 0x81, 0x01, 0xC4, 0x00, 0x00, 0x00, 0x05, 0x01, 0x01, 0x00, 0x40, 0x01, 0x80, 0x00, 0xDC, 0xC0, 0x80, 0x01, 0xDA, 0x40, 0x00, 0x00, 0x16, 0x00, 0x04, 0x80, 0x45, 0x01, 0x00, 0x00, 0x46, 0x41, 0xC1, 0x02, 0x80, 0x01, 0x00, 0x02, 0xC1, 0x81, 0x01, 0x00, 0x01, 0xC2, 0x01, 0x00, 0x5C, 0x81, 0x00, 0x02, 0x57, 0x00, 0xC2, 0x02, 0x16, 0xC0, 0x00, 0x80, 0x45, 0x41, 0x02, 0x00, 0x80, 0x01, 0x00, 0x02, 0xC1, 0x81, 0x02, 0x00, 0x5C, 0x41, 0x80, 0x01, 0x41, 0xC1, 0x02, 0x00, 0x80, 0x01, 0x80, 0x00, 0xC1, 0x01, 0x03, 0x00, 0x55, 0xC1, 0x81, 0x02, 0x5E, 0x01, 0x00, 0x01, 0x46, 0x41, 0x43, 0x02, 0x80, 0x01, 0x00, 0x01, 0x5C, 0x41, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x00, 0x04, 0x0C, 0x00, 0x00, 0x00, 0x5E, 0x28, 0x2E, 0x2D, 0x29, 0x3D, 0x28, 0x2E, 0x2A, 0x29, 0x24, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x6A, 0x69, 0x74, 0x2E, 0x6F, 0x70, 0x74, 0x5F, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x73, 0x75, 0x62, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x40, 0x04, 0x08, 0x00, 0x00, 0x00, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x19, 0x00, 0x00, 0x00, 0x6F, 0x70, 0x74, 0x69, 0x6D, 0x69, 0x7A, 0x65, 0x72, 0x20, 0x61, 0x64, 0x64, 0x2D, 0x6F, 0x6E, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x00, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x01, 0x00, 0x00, 0xEB, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, 0x06, 0x3B, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x5A, 0x40, 0x00, 0x00, 0x16, 0x80, 0x01, 0x80, 0x44, 0x00, 0x80, 0x00, 0x46, 0x00, 0xC0, 0x00, 0x84, 0x00, 0x00, 0x01, 0xC4, 0x00, 0x80, 0x01, 0x5C, 0x40, 0x80, 0x01, 0x42, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x00, 0x57, 0x40, 0x40, 0x00, 0x16, 0x40, 0x00, 0x80, 0x17, 0x80, 0x40, 0x00, 0x16, 0x80, 0x00, 0x80, 0x44, 0x00, 0x80, 0x02, 0x48, 0x00, 0x00, 0x02, 0x16, 0x40, 0x07, 0x80, 0x45, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x5C, 0x80, 0x00, 0x01, 0x5A, 0x00, 0x00, 0x00, 0x16, 0x80, 0x02, 0x80, 0x58, 0x00, 0xC1, 0x00, 0x16, 0x80, 0x00, 0x80, 0x90, 0x40, 0xC1, 0x00, 0x57, 0x00, 0x41, 0x01, 0x16, 0xC0, 0x00, 0x80, 0x85, 0x80, 0x01, 0x00, 0xC1, 0xC0, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x9C, 0x40, 0x80, 0x01, 0x48, 0x00, 0x00, 0x02, 0x16, 0x40, 0x03, 0x80, 0x84, 0x00, 0x00, 0x02, 0x17, 0x00, 0x42, 0x01, 0x16, 0x40, 0x00, 0x80, 0x84, 0x00, 0x80, 0x02, 0x88, 0x00, 0x00, 0x02, 0x84, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x9C, 0x80, 0x00, 0x01, 0x9A, 0x00, 0x00, 0x00, 0x16, 0xC0, 0x00, 0x80, 0xC5, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x41, 0x01, 0x01, 0x00, 0xDC, 0x40, 0x80, 0x01, 0x44, 0x00, 0x80, 0x03, 0x5A, 0x40, 0x00, 0x00, 0x16, 0xC0, 0x01, 0x80, 0x44, 0x00, 0x00, 0x02, 0x19, 0x40, 0x80, 0x84, 0x16, 0x00, 0x01, 0x80, 0x44, 0x00, 0x00, 0x03, 0x81, 0x80, 0x02, 0x00, 0x5C, 0x40, 0x00, 0x01, 0x42, 0x00, 0x80, 0x00, 0x48, 0x00, 0x80, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x6F, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x06, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x62, 0x61, 0x64, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6D, 0x69, 0x7A, 0x65, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x07, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x01, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x01, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /* ** LuaJIT's opt_inline.lua compiled to Lua bytecode */ static const uint8_t jit_opt_inline_lua[] = { 0x1B, 'L' , 'u' , 'a' , 0x51, 0x00, 0x01, 0x04, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1F, 0xF0, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x1C, 0x80, 0x00, 0x01, 0x45, 0x80, 0x00, 0x00, 0x86, 0xC0, 0x40, 0x00, 0x57, 0x00, 0x41, 0x01, 0x16, 0x00, 0x00, 0x80, 0x82, 0x40, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0xC1, 0x40, 0x01, 0x00, 0x5C, 0x40, 0x80, 0x01, 0x45, 0x00, 0x00, 0x00, 0x81, 0x80, 0x01, 0x00, 0x5C, 0x80, 0x00, 0x01, 0x85, 0xC0, 0x01, 0x00, 0xC5, 0x00, 0x02, 0x00, 0x05, 0x41, 0x02, 0x00, 0x46, 0x81, 0xC2, 0x00, 0x86, 0xC1, 0xC2, 0x00, 0xC5, 0x01, 0x03, 0x00, 0xC6, 0x41, 0xC3, 0x03, 0x05, 0x02, 0x03, 0x00, 0x06, 0x82, 0x43, 0x04, 0x45, 0x02, 0x03, 0x00, 0x46, 0xC2, 0xC3, 0x04, 0x86, 0x02, 0x44, 0x00, 0xC2, 0x02, 0x80, 0x00, 0x02, 0x03, 0x80, 0x00, 0x9C, 0x42, 0x80, 0x01, 0x8A, 0x02, 0x00, 0x00, 0xC5, 0x42, 0x04, 0x00, 0x0A, 0x03, 0x00, 0x00, 0x64, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x83, 0x03, 0x00, 0x08, 0x64, 0x44, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0xA4, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0xE4, 0xC4, 0x00, 0x00, 0x24, 0x05, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x64, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x83, 0x05, 0x00, 0x0B, 0xC5, 0x85, 0x04, 0x00, 0x01, 0xC4, 0x04, 0x00, 0xC0, 0x03, 0x80, 0x0B, 0x80, 0x03, 0x00, 0x0B, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x05, 0x00, 0x01, 0x46, 0x05, 0x00, 0x41, 0x86, 0x05, 0x00, 0xA4, 0x86, 0x01, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x05, 0x00, 0x01, 0x06, 0x06, 0x00, 0x41, 0x86, 0x05, 0x00, 0xA4, 0xC6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x45, 0x80, 0x02, 0x03, 0x04, 0x00, 0x08, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x02, 0x00, 0x01, 0x46, 0x06, 0x00, 0x41, 0x86, 0x06, 0x00, 0xA4, 0x06, 0x02, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x01, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0x06, 0x07, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x07, 0x00, 0x01, 0x86, 0x05, 0x00, 0x41, 0x06, 0x07, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x07, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0xC6, 0x07, 0x00, 0x80, 0x06, 0x80, 0x09, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x08, 0x00, 0x01, 0x46, 0x08, 0x00, 0x41, 0x46, 0x06, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x02, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0x86, 0x08, 0x00, 0xA4, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x01, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x08, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0x06, 0x09, 0x00, 0x80, 0x06, 0x80, 0x09, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x00, 0x00, 0x01, 0x46, 0x09, 0x00, 0x41, 0x86, 0x09, 0x00, 0xA4, 0x86, 0x02, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x09, 0x00, 0x01, 0x06, 0x0A, 0x00, 0x41, 0x46, 0x0A, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x0A, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0x06, 0x07, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x00, 0x00, 0x01, 0x86, 0x05, 0x00, 0x41, 0xC6, 0x06, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x81, 0xC5, 0x0A, 0x00, 0xC5, 0xC5, 0x0A, 0x00, 0x01, 0x04, 0x0B, 0x00, 0xC0, 0x03, 0x80, 0x0B, 0x80, 0x03, 0x00, 0x0B, 0xDA, 0x03, 0x00, 0x00, 0x16, 0x00, 0x04, 0x80, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x0B, 0x00, 0x01, 0x46, 0x09, 0x00, 0x41, 0x86, 0x0B, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x0B, 0x00, 0x01, 0x46, 0x09, 0x00, 0x41, 0x06, 0x0C, 0x00, 0xA4, 0xC6, 0x02, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x03, 0x04, 0x00, 0x08, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x0C, 0x00, 0x01, 0x86, 0x0C, 0x00, 0x41, 0xC6, 0x0C, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x81, 0x05, 0x03, 0x00, 0xC5, 0x05, 0x03, 0x00, 0x01, 0x04, 0x0D, 0x00, 0xC0, 0x03, 0x80, 0x0B, 0x80, 0x03, 0x00, 0x0B, 0xDA, 0x03, 0x00, 0x00, 0x16, 0x40, 0x11, 0x80, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x0D, 0x00, 0x01, 0x06, 0x0A, 0x00, 0x41, 0xC6, 0x06, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x03, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0x86, 0x0D, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x0D, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0x06, 0x0E, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x03, 0x04, 0x00, 0x08, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x0E, 0x00, 0x01, 0x06, 0x0A, 0x00, 0x41, 0xC6, 0x06, 0x00, 0xA4, 0x06, 0x03, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x0E, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0xC6, 0x0E, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x0F, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0xC6, 0x06, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x0F, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0xC6, 0x06, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x0F, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0xC6, 0x06, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x0F, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0x06, 0x10, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x10, 0x00, 0x01, 0x46, 0x09, 0x00, 0x41, 0x86, 0x10, 0x00, 0xA4, 0x46, 0x03, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x03, 0x00, 0x01, 0x46, 0x09, 0x00, 0x41, 0xC6, 0x10, 0x00, 0xA4, 0x86, 0x03, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x03, 0x00, 0x01, 0xC6, 0x0E, 0x00, 0x41, 0x06, 0x11, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x11, 0x00, 0x01, 0x86, 0x11, 0x00, 0x41, 0xC6, 0x11, 0x00, 0xA4, 0xC6, 0x03, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x81, 0x05, 0x12, 0x00, 0xC5, 0x05, 0x12, 0x00, 0x01, 0x44, 0x12, 0x00, 0xC0, 0x03, 0x80, 0x0B, 0x80, 0x03, 0x00, 0x0B, 0xDA, 0x03, 0x00, 0x00, 0x16, 0xC0, 0x05, 0x80, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x12, 0x00, 0x01, 0xC6, 0x12, 0x00, 0x41, 0x06, 0x13, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x13, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0x86, 0x05, 0x00, 0xA4, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x01, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x13, 0x00, 0x01, 0x06, 0x0A, 0x00, 0x41, 0x86, 0x05, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x03, 0x04, 0x00, 0x08, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x13, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0x06, 0x14, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x81, 0x45, 0x14, 0x00, 0xC5, 0x45, 0x14, 0x00, 0x01, 0x84, 0x14, 0x00, 0xC0, 0x03, 0x80, 0x0B, 0x80, 0x03, 0x00, 0x0B, 0xDA, 0x03, 0x00, 0x00, 0x16, 0x80, 0x24, 0x80, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x14, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x15, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x15, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x15, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x16, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x16, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x16, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x16, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x17, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x17, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x17, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x17, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x18, 0x00, 0x01, 0x06, 0x0A, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x18, 0x00, 0x01, 0x06, 0x0A, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x18, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0x06, 0x15, 0x00, 0x80, 0x06, 0x80, 0x09, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x18, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x19, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0x46, 0x19, 0x00, 0xA4, 0x46, 0x04, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x19, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x46, 0x19, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x03, 0x04, 0x00, 0x08, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x19, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0x06, 0x1A, 0x00, 0x80, 0x06, 0x80, 0x09, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x1A, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0x06, 0x1A, 0x00, 0x80, 0x06, 0x80, 0x09, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x1A, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x1A, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x1B, 0x00, 0x01, 0x46, 0x1B, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x1B, 0x00, 0x01, 0xC6, 0x1B, 0x00, 0x41, 0x06, 0x15, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x05, 0x1C, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x46, 0x19, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x1C, 0x00, 0x01, 0x06, 0x07, 0x00, 0x41, 0xC6, 0x1B, 0x00, 0x80, 0x06, 0x80, 0x09, 0x9C, 0x45, 0x80, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x1C, 0x00, 0x01, 0xC6, 0x12, 0x00, 0x41, 0x06, 0x0A, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0xC5, 0x1C, 0x00, 0x01, 0x06, 0x15, 0x00, 0x41, 0x06, 0x1D, 0x00, 0xA4, 0x86, 0x04, 0x00, 0x9C, 0x45, 0x80, 0x02, 0x81, 0x45, 0x1D, 0x00, 0xC5, 0x45, 0x1D, 0x00, 0x03, 0x04, 0x00, 0x08, 0xC0, 0x03, 0x80, 0x0B, 0x80, 0x03, 0x00, 0x0B, 0xDA, 0x03, 0x00, 0x00, 0x16, 0x40, 0x02, 0x80, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x85, 0x1D, 0x00, 0x01, 0xC6, 0x1D, 0x00, 0x41, 0x06, 0x1E, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x80, 0x05, 0x80, 0x08, 0xC1, 0x45, 0x1E, 0x00, 0x01, 0xC6, 0x06, 0x00, 0x41, 0xC6, 0x12, 0x00, 0x9C, 0x45, 0x00, 0x02, 0x8A, 0x05, 0x02, 0x00, 0x89, 0xC5, 0x5E, 0xBD, 0x89, 0x45, 0x5F, 0xBE, 0x89, 0xC5, 0x5F, 0xBF, 0x89, 0x05, 0x60, 0x86, 0x89, 0x45, 0x60, 0xA4, 0x89, 0xC5, 0x60, 0xC1, 0x89, 0x45, 0x61, 0xC2, 0x89, 0xC5, 0x61, 0xC3, 0xCA, 0x45, 0x02, 0x00, 0xC9, 0x05, 0xE2, 0x90, 0xC9, 0x45, 0xE2, 0x8D, 0xC9, 0x85, 0x62, 0x8B, 0xC9, 0xC5, 0xE2, 0x99, 0xC9, 0x45, 0x63, 0xC6, 0xC9, 0xC5, 0x63, 0xC7, 0xC9, 0x05, 0x64, 0xAA, 0xC9, 0x05, 0x64, 0x94, 0xC9, 0x85, 0xE4, 0xC8, 0x0A, 0xC6, 0x01, 0x00, 0x09, 0xC6, 0xE4, 0x90, 0x09, 0xC6, 0xD2, 0x8D, 0x4A, 0x06, 0x00, 0x00, 0x09, 0x46, 0x06, 0x8B, 0x09, 0x06, 0x65, 0xAA, 0x09, 0x46, 0x65, 0x94, 0x64, 0xC6, 0x04, 0x00, 0x09, 0x46, 0x06, 0xCB, 0x45, 0x46, 0x04, 0x00, 0x09, 0x46, 0x06, 0x99, 0x64, 0x06, 0x05, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x80, 0x0B, 0xA4, 0x46, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x0C, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x80, 0x02, 0xE4, 0x86, 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0D, 0x24, 0xC7, 0x05, 0x00, 0x00, 0x00, 0x80, 0x0D, 0x45, 0xC7, 0x25, 0x00, 0xA5, 0x07, 0x00, 0x00, 0x5C, 0x47, 0x00, 0x00, 0x47, 0x03, 0x26, 0x00, 0x07, 0x47, 0x26, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6A, 0x69, 0x74, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x00, 0x04, 0x0C, 0x00, 0x00, 0x00, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x6E, 0x75, 0x6D, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBC, 0xC3, 0x40, 0x04, 0x25, 0x00, 0x00, 0x00, 0x4C, 0x75, 0x61, 0x4A, 0x49, 0x54, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6D, 0x69, 0x73, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x6A, 0x69, 0x74, 0x2E, 0x75, 0x74, 0x69, 0x6C, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x78, 0x74, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x68, 0x69, 0x6E, 0x74, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x66, 0x68, 0x69, 0x6E, 0x74, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x73, 0x75, 0x62, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x67, 0x73, 0x75, 0x62, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6F, 0x66, 0x66, 0x00, 0x04, 0x0F, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x5F, 0x47, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x40, 0x04, 0x06, 0x00, 0x00, 0x00, 0x70, 0x61, 0x69, 0x72, 0x73, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x30, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x54, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x49, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x54, 0x2E, 0x3F, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x53, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x04, 0x0D, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x6D, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x0D, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x6D, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x54, 0x54, 0x3F, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x72, 0x61, 0x77, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x42, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x54, 0x2E, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x72, 0x61, 0x77, 0x73, 0x65, 0x74, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x54, 0x2E, 0x2E, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x2A, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x6F, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x49, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x2E, 0x49, 0x3F, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x6F, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x72, 0x6F, 0x75, 0x74, 0x69, 0x6E, 0x65, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x06, 0x00, 0x00, 0x00, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x2E, 0x2A, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x52, 0x2E, 0x2A, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x77, 0x72, 0x61, 0x70, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x41, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6C, 0x65, 0x6E, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x53, 0x49, 0x49, 0x3F, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x72, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x49, 0x2A, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x62, 0x79, 0x74, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x72, 0x65, 0x70, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x53, 0x49, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x75, 0x70, 0x70, 0x65, 0x72, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x53, 0x2E, 0x2A, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x69, 0x6E, 0x64, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x53, 0x53, 0x49, 0x3F, 0x2E, 0x3F, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x53, 0x53, 0x49, 0x3F, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x53, 0x53, 0x47, 0x49, 0x3F, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x67, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x43, 0x30, 0x30, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x53, 0x53, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x41, 0x04, 0x07, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x49, 0x3F, 0x2E, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x6E, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x54, 0x53, 0x3F, 0x49, 0x3F, 0x49, 0x3F, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x74, 0x68, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x41, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6C, 0x6F, 0x67, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x65, 0x78, 0x70, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x73, 0x69, 0x6E, 0x68, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x73, 0x68, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x74, 0x61, 0x6E, 0x68, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x61, 0x73, 0x69, 0x6E, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x61, 0x63, 0x6F, 0x73, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x61, 0x74, 0x61, 0x6E, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x73, 0x69, 0x6E, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x73, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x74, 0x61, 0x6E, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x63, 0x65, 0x69, 0x6C, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x61, 0x62, 0x73, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x73, 0x71, 0x72, 0x74, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x6D, 0x6F, 0x64, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x4E, 0x4E, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x61, 0x74, 0x61, 0x6E, 0x32, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x69, 0x6E, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4E, 0x4E, 0x2A, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x78, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x64, 0x65, 0x67, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x72, 0x61, 0x64, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6D, 0x6F, 0x64, 0x66, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x66, 0x72, 0x65, 0x78, 0x70, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x4E, 0x49, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x70, 0x6F, 0x77, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x65, 0x78, 0x70, 0x00, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x73, 0x65, 0x65, 0x64, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x49, 0x3F, 0x49, 0x3F, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x69, 0x6F, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x43, 0x30, 0x30, 0x53, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x53, 0x3F, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x72, 0x65, 0x61, 0x64, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x6E, 0x69, 0x6C, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x62, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x73, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x74, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x75, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x72, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x5B, 0x62, 0x30, 0x5D, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x5B, 0x73, 0x30, 0x5D, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x5B, 0x74, 0x30, 0x5D, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x5B, 0x66, 0x30, 0x5D, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x55, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x5B, 0x75, 0x30, 0x5D, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x52, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x5B, 0x72, 0x30, 0x5D, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x5B, 0x6E, 0x30, 0x5D, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x5B, 0x73, 0x74, 0x66, 0x30, 0x5D, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x02, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x01, 0x9A, 0x00, 0x00, 0x00, 0x16, 0xC0, 0x02, 0x80, 0xC6, 0x00, 0x40, 0x01, 0x06, 0x41, 0x40, 0x01, 0xDA, 0x00, 0x00, 0x00, 0x16, 0x40, 0x01, 0x80, 0x40, 0x01, 0x80, 0x01, 0x81, 0x81, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x55, 0xC1, 0x81, 0x02, 0x5E, 0x01, 0x00, 0x01, 0x16, 0x00, 0x02, 0x80, 0x1E, 0x01, 0x00, 0x01, 0x16, 0x80, 0x01, 0x80, 0x17, 0xC0, 0xC0, 0x00, 0x16, 0x80, 0x00, 0x80, 0xC1, 0x00, 0x01, 0x00, 0xDE, 0x00, 0x00, 0x01, 0x16, 0x40, 0x00, 0x80, 0xC1, 0x40, 0x01, 0x00, 0xDE, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x62, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x44, 0x01, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x1C, 0x81, 0x80, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x16, 0x80, 0x02, 0x80, 0x44, 0x01, 0x00, 0x01, 0x8A, 0x81, 0x01, 0x00, 0xC4, 0x01, 0x80, 0x01, 0x89, 0xC1, 0x01, 0x80, 0x89, 0x01, 0x80, 0x80, 0xC4, 0x01, 0x00, 0x02, 0x89, 0xC1, 0x01, 0x81, 0x89, 0x41, 0x80, 0x81, 0x89, 0x81, 0x00, 0x82, 0x89, 0xC1, 0x80, 0x82, 0x49, 0x81, 0x01, 0x02, 0x44, 0x01, 0x00, 0x02, 0x5A, 0x01, 0x00, 0x00, 0x16, 0x80, 0x00, 0x80, 0x44, 0x01, 0x00, 0x02, 0x4C, 0x81, 0xC1, 0x02, 0x48, 0x01, 0x00, 0x02, 0x1E, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x62, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x69, 0x64, 0x78, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x61, 0x72, 0x67, 0x73, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x03, 0x05, 0x00, 0x08, 0x12, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x8A, 0x81, 0x01, 0x00, 0xC4, 0x01, 0x80, 0x00, 0x89, 0xC1, 0x01, 0x80, 0x89, 0x01, 0x80, 0x80, 0xC4, 0x01, 0x00, 0x01, 0x89, 0xC1, 0x01, 0x81, 0x89, 0x81, 0x80, 0x81, 0x89, 0xC1, 0x00, 0x82, 0x89, 0x01, 0x81, 0x82, 0x49, 0x81, 0x81, 0x00, 0x44, 0x01, 0x00, 0x01, 0x5A, 0x01, 0x00, 0x00, 0x16, 0x80, 0x00, 0x80, 0x44, 0x01, 0x00, 0x01, 0x4C, 0x81, 0xC1, 0x02, 0x48, 0x01, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x62, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x69, 0x64, 0x78, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x61, 0x72, 0x67, 0x73, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x8C, 0x01, 0xC0, 0x01, 0x86, 0x81, 0x81, 0x00, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x03, 0x05, 0x00, 0x13, 0x2A, 0x00, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x16, 0x80, 0x08, 0x80, 0x44, 0x01, 0x00, 0x00, 0x46, 0x01, 0xC0, 0x02, 0x86, 0x41, 0x40, 0x00, 0xC0, 0x01, 0x80, 0x02, 0x00, 0x02, 0x00, 0x03, 0x4C, 0x82, 0x40, 0x01, 0xDC, 0x01, 0x81, 0x01, 0x17, 0xC0, 0xC0, 0x03, 0x16, 0x40, 0x06, 0x80, 0x8C, 0x02, 0x41, 0x01, 0x8C, 0x42, 0x02, 0x05, 0xC0, 0x02, 0x80, 0x02, 0x00, 0x03, 0x00, 0x03, 0x40, 0x03, 0x00, 0x05, 0xDC, 0x42, 0x81, 0x01, 0x17, 0x40, 0xC1, 0x05, 0x16, 0x40, 0x04, 0x80, 0x17, 0xC0, 0x00, 0x06, 0x16, 0xC0, 0x03, 0x80, 0x19, 0x00, 0x41, 0x07, 0x16, 0x40, 0x03, 0x80, 0xC0, 0x03, 0x80, 0x02, 0x00, 0x04, 0x00, 0x03, 0x4C, 0x84, 0x40, 0x05, 0xDC, 0x03, 0x81, 0x01, 0x17, 0xC0, 0xC0, 0x07, 0x16, 0xC0, 0x01, 0x80, 0x8C, 0x44, 0x84, 0x04, 0x17, 0x80, 0x41, 0x09, 0x16, 0x00, 0x01, 0x80, 0x84, 0x04, 0x80, 0x00, 0x86, 0xC4, 0x41, 0x09, 0x8C, 0x84, 0x04, 0x05, 0x09, 0x00, 0x01, 0x09, 0x1E, 0x00, 0x80, 0x00, 0x44, 0x01, 0x00, 0x01, 0x49, 0x40, 0x81, 0x01, 0x42, 0x01, 0x80, 0x00, 0x5E, 0x01, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x04, 0x00, 0x00, 0x00, 0x4A, 0x4D, 0x50, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x09, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4F, 0x52, 0x4C, 0x4F, 0x4F, 0x50, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x04, 0x07, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x4C, 0x49, 0x4E, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x40, 0x01, 0x06, 0x01, 0x81, 0x00, 0x43, 0x01, 0x00, 0x03, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0xDC, 0x81, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x03, 0x16, 0x00, 0x02, 0x80, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x02, 0xDC, 0xC1, 0x00, 0x01, 0x80, 0x01, 0x00, 0x04, 0x40, 0x01, 0x80, 0x03, 0x17, 0x80, 0x40, 0x03, 0x16, 0x40, 0x00, 0x80, 0xC6, 0xC1, 0x40, 0x00, 0x86, 0x01, 0x81, 0x03, 0xDB, 0x41, 0x80, 0x02, 0x16, 0x00, 0x00, 0x80, 0xC1, 0x01, 0x01, 0x00, 0x49, 0xC0, 0x81, 0x01, 0xCC, 0x01, 0xC0, 0x01, 0x49, 0x80, 0x81, 0x03, 0x1E, 0x00, 0x80, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x0D, 0x0F, 0x00, 0x00, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x00, 0x80, 0x02, 0x80, 0x01, 0xCC, 0x02, 0xC0, 0x01, 0xDC, 0x41, 0x80, 0x02, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x00, 0x80, 0x02, 0x00, 0x01, 0xC0, 0x02, 0x80, 0x01, 0x00, 0x03, 0x00, 0x03, 0xDD, 0x01, 0x00, 0x03, 0xDE, 0x01, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x00, 0xCC, 0x01, 0xC0, 0x01, 0xC6, 0xC1, 0x81, 0x00, 0x0C, 0x42, 0xC0, 0x01, 0x49, 0x00, 0x40, 0x04, 0x03, 0x02, 0x00, 0x04, 0x44, 0x02, 0x00, 0x00, 0x80, 0x02, 0x80, 0x03, 0x5C, 0x82, 0x00, 0x01, 0x17, 0x80, 0xC0, 0x04, 0x16, 0x00, 0x02, 0x80, 0x44, 0x02, 0x80, 0x00, 0x80, 0x02, 0x80, 0x03, 0xC1, 0x02, 0x00, 0x00, 0x5C, 0x82, 0x80, 0x01, 0x00, 0x02, 0x80, 0x04, 0x17, 0xC0, 0x40, 0x04, 0x16, 0x40, 0x00, 0x80, 0x46, 0x02, 0x41, 0x00, 0x06, 0xC2, 0x81, 0x04, 0x4C, 0x42, 0xC1, 0x01, 0x49, 0x00, 0x82, 0x04, 0x44, 0x02, 0x00, 0x01, 0x80, 0x02, 0x00, 0x00, 0xC0, 0x02, 0x80, 0x00, 0x00, 0x03, 0x00, 0x01, 0x40, 0x03, 0x80, 0x01, 0x80, 0x03, 0x00, 0x03, 0x5D, 0x02, 0x00, 0x03, 0x5E, 0x02, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40, 0x02, 0x80, 0x01, 0x80, 0x02, 0x80, 0x01, 0x9C, 0x41, 0x80, 0x02, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0A, 0x11, 0x00, 0x00, 0x00, 0x8C, 0x01, 0xC0, 0x01, 0x86, 0x81, 0x81, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xDC, 0x81, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x03, 0x16, 0x80, 0x01, 0x80, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x4C, 0x82, 0xC0, 0x01, 0x46, 0x42, 0x82, 0x00, 0xDC, 0x81, 0x80, 0x01, 0xDA, 0x41, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0xC1, 0xC1, 0x00, 0x00, 0x49, 0xC0, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x80, 0x02, 0x01, 0x02, 0x00, 0x00, 0xA0, 0x41, 0x02, 0x80, 0x8C, 0x42, 0x82, 0x01, 0x8D, 0x02, 0x40, 0x05, 0x19, 0x00, 0x81, 0x04, 0x16, 0xC0, 0x00, 0x80, 0xCC, 0x42, 0x82, 0x01, 0xC6, 0xC2, 0x82, 0x00, 0xDA, 0x42, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0xC3, 0x02, 0x80, 0x05, 0x49, 0xC0, 0x02, 0x05, 0x9F, 0x01, 0xFD, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x49, 0x00, 0xC0, 0x01, 0x81, 0x41, 0x00, 0x00, 0xCD, 0x41, 0xC0, 0x02, 0x01, 0x42, 0x00, 0x00, 0xA0, 0x41, 0x00, 0x80, 0x8C, 0x42, 0x82, 0x01, 0x49, 0x80, 0x40, 0x05, 0x9F, 0x01, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0B, 0x08, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0xCD, 0x41, 0xC0, 0x02, 0x01, 0x42, 0x00, 0x00, 0xA0, 0x41, 0x00, 0x80, 0x8C, 0x42, 0x82, 0x01, 0x49, 0x40, 0x40, 0x05, 0x9F, 0x01, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0B, 0x0B, 0x00, 0x00, 0x00, 0x49, 0x00, 0xC0, 0x01, 0x8C, 0x01, 0xC0, 0x01, 0x49, 0x00, 0x40, 0x03, 0x81, 0x41, 0x00, 0x00, 0xCD, 0x01, 0xC0, 0x02, 0x01, 0x02, 0x00, 0x00, 0xA0, 0x41, 0x00, 0x80, 0x8C, 0x42, 0x82, 0x01, 0x49, 0x80, 0x40, 0x05, 0x9F, 0x01, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0B, 0x08, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0xCD, 0x41, 0xC0, 0x02, 0x01, 0x42, 0x00, 0x00, 0xA0, 0x41, 0x00, 0x80, 0x8C, 0x42, 0x82, 0x01, 0x49, 0x80, 0x40, 0x05, 0x9F, 0x01, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0A, 0x09, 0x00, 0x00, 0x00, 0x8C, 0x01, 0xC0, 0x01, 0xC6, 0x41, 0x40, 0x00, 0xC6, 0x81, 0xC0, 0x03, 0xCD, 0xC1, 0xC0, 0x03, 0x01, 0xC2, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x80, 0x49, 0x00, 0xC1, 0x04, 0x9F, 0x41, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x73, 0x00, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0A, 0x12, 0x00, 0x00, 0x00, 0x19, 0x40, 0x01, 0x80, 0x16, 0x80, 0x03, 0x80, 0x8C, 0x01, 0xC0, 0x01, 0x86, 0x81, 0x81, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xDC, 0x81, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x03, 0x16, 0x40, 0x01, 0x80, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x41, 0x02, 0x00, 0x00, 0xDC, 0x81, 0x80, 0x01, 0xDA, 0x41, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0xC1, 0x81, 0x00, 0x00, 0x49, 0xC0, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x06, 0x00, 0x00, 0x00, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x8C, 0x01, 0xC0, 0x01, 0x86, 0x81, 0x81, 0x00, 0x9A, 0x41, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0x81, 0x41, 0x00, 0x00, 0x49, 0x80, 0x81, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x01, 0x80, 0x16, 0x00, 0x00, 0x80, 0x49, 0x40, 0xC0, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x4D, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x06, 0x0B, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xC6, 0x40, 0x40, 0x00, 0x01, 0x81, 0x00, 0x00, 0x44, 0x01, 0x80, 0x00, 0x9C, 0x80, 0x00, 0x02, 0xC1, 0xC0, 0x00, 0x00, 0x55, 0xC0, 0x80, 0x00, 0x09, 0x40, 0x00, 0x82, 0x5E, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x61, 0x72, 0x67, 0x73, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x30, 0x2A, 0x24, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x61, 0x72, 0x67, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x07, 0x07, 0x00, 0x12, 0x4F, 0x00, 0x00, 0x00, 0xC6, 0x01, 0x40, 0x00, 0xDA, 0x01, 0x00, 0x00, 0x16, 0xC0, 0x06, 0x80, 0x57, 0x40, 0xC0, 0x02, 0x16, 0x40, 0x06, 0x80, 0x01, 0x82, 0x00, 0x00, 0x41, 0xC2, 0x00, 0x00, 0x80, 0x02, 0x80, 0x02, 0xC1, 0xC2, 0x00, 0x00, 0x60, 0xC2, 0x01, 0x80, 0x40, 0x03, 0x00, 0x04, 0x84, 0x03, 0x00, 0x00, 0xC4, 0x03, 0x80, 0x00, 0x0C, 0x04, 0x03, 0x02, 0x06, 0x04, 0x04, 0x01, 0xDC, 0x83, 0x00, 0x01, 0x86, 0xC3, 0x03, 0x07, 0x15, 0x82, 0x83, 0x06, 0x5F, 0x82, 0xFD, 0x7F, 0x44, 0x02, 0x00, 0x01, 0x80, 0x02, 0x00, 0x04, 0xC6, 0x02, 0x41, 0x00, 0xDA, 0x42, 0x00, 0x00, 0x16, 0x80, 0x00, 0x80, 0xC4, 0x02, 0x80, 0x01, 0x00, 0x03, 0x00, 0x00, 0xDC, 0x82, 0x00, 0x01, 0x5C, 0x82, 0x80, 0x01, 0x5A, 0x42, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0xC3, 0x01, 0x80, 0x03, 0x06, 0x42, 0x41, 0x00, 0x57, 0x80, 0x41, 0x04, 0x16, 0x80, 0x05, 0x80, 0x57, 0x40, 0x40, 0x03, 0x16, 0x00, 0x05, 0x80, 0x54, 0x02, 0x00, 0x04, 0x18, 0x80, 0x81, 0x04, 0x16, 0x00, 0x00, 0x80, 0xC3, 0x01, 0x80, 0x03, 0x41, 0xC2, 0x00, 0x00, 0x94, 0x02, 0x00, 0x04, 0xC1, 0xC2, 0x00, 0x00, 0x60, 0xC2, 0x02, 0x80, 0x44, 0x03, 0x00, 0x02, 0x80, 0x03, 0x00, 0x04, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x5C, 0x83, 0x00, 0x02, 0x57, 0xC0, 0xC1, 0x06, 0x16, 0x00, 0x01, 0x80, 0x8C, 0x03, 0x03, 0x02, 0x8D, 0xC3, 0x40, 0x07, 0xC4, 0x03, 0x80, 0x02, 0xC6, 0x43, 0x83, 0x07, 0x89, 0xC0, 0x03, 0x07, 0x5F, 0x82, 0xFC, 0x7F, 0x46, 0x02, 0x42, 0x00, 0x5A, 0x02, 0x00, 0x00, 0x16, 0xC0, 0x02, 0x80, 0x80, 0x02, 0x80, 0x04, 0xC0, 0x02, 0x80, 0x00, 0x00, 0x03, 0x00, 0x01, 0x40, 0x03, 0x80, 0x01, 0x80, 0x03, 0x00, 0x02, 0xC0, 0x03, 0x80, 0x02, 0x00, 0x04, 0x00, 0x03, 0x40, 0x04, 0x80, 0x03, 0x9C, 0x82, 0x00, 0x04, 0x9A, 0x02, 0x00, 0x00, 0x16, 0x00, 0x00, 0x80, 0xC3, 0x01, 0x80, 0x03, 0xDA, 0x01, 0x00, 0x00, 0x16, 0xC0, 0x00, 0x80, 0x84, 0x02, 0x00, 0x03, 0x86, 0x42, 0x42, 0x05, 0x8C, 0x82, 0x82, 0x01, 0x49, 0xC0, 0x01, 0x05, 0x1E, 0x00, 0x80, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x69, 0x64, 0x78, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x04, 0x09, 0x00, 0x00, 0x00, 0x61, 0x72, 0x67, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x4C, 0x49, 0x4E, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x04, 0x06, 0x00, 0x10, 0x31, 0x00, 0x00, 0x00, 0x86, 0xC1, 0x80, 0x00, 0xC4, 0x01, 0x00, 0x00, 0xC6, 0x01, 0xC0, 0x03, 0xCC, 0xC1, 0x01, 0x01, 0x09, 0x80, 0x81, 0x03, 0xC4, 0x01, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0xDC, 0x81, 0x00, 0x01, 0x17, 0x40, 0xC0, 0x03, 0x16, 0x80, 0x07, 0x80, 0xC4, 0x01, 0x00, 0x01, 0xC6, 0x81, 0x81, 0x03, 0xDA, 0x01, 0x00, 0x00, 0x16, 0x40, 0x02, 0x80, 0x04, 0x02, 0x80, 0x01, 0x40, 0x02, 0x80, 0x03, 0x80, 0x02, 0x00, 0x00, 0xC0, 0x02, 0x80, 0x00, 0x00, 0x03, 0x00, 0x01, 0x40, 0x03, 0x80, 0x01, 0x80, 0x03, 0x00, 0x02, 0xC0, 0x03, 0x80, 0x02, 0x1C, 0x42, 0x00, 0x04, 0x1E, 0x00, 0x80, 0x00, 0x06, 0x82, 0x40, 0x00, 0x17, 0x00, 0x02, 0x03, 0x16, 0x40, 0x03, 0x80, 0x06, 0xC2, 0x40, 0x00, 0x06, 0x02, 0x41, 0x04, 0x1A, 0x42, 0x00, 0x00, 0x16, 0x40, 0x02, 0x80, 0x57, 0x40, 0x41, 0x02, 0x16, 0xC0, 0x00, 0x80, 0x06, 0xC2, 0x40, 0x00, 0x06, 0x82, 0x41, 0x04, 0x17, 0x00, 0x02, 0x02, 0x16, 0xC0, 0x00, 0x80, 0x04, 0x02, 0x00, 0x00, 0x06, 0xC2, 0x41, 0x04, 0x0C, 0x02, 0x02, 0x01, 0x09, 0x00, 0x42, 0x04, 0xC0, 0x01, 0x80, 0x01, 0x0C, 0x42, 0x81, 0x01, 0x0D, 0x42, 0x42, 0x04, 0x41, 0x42, 0x02, 0x00, 0xE0, 0x01, 0x00, 0x80, 0x49, 0x80, 0x42, 0x05, 0xDF, 0x41, 0xFF, 0x7F, 0x1E, 0x00, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x54, 0x59, 0x50, 0x45, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x73, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x69, 0x73, 0x76, 0x61, 0x72, 0x61, 0x72, 0x67, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x04, 0x07, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x4C, 0x49, 0x4E, 0x45, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x1C, 0x80, 0x00, 0x01, 0x46, 0x80, 0x40, 0x00, 0x84, 0x00, 0x00, 0x00, 0x5C, 0x40, 0x00, 0x01, 0x1E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x6A, 0x69, 0x74, 0x2E, 0x6F, 0x70, 0x74, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5F, 0x63, 0x61, 0x6C, 0x6C, 0x68, 0x69, 0x6E, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; CorsixTH-0.61/CorsixTH/Src/lua.hpp000066400000000000000000000042471321660673500167070ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_LUA_HPP_ #define CORSIX_TH_LUA_HPP_ extern "C" { #include #include #include } #if LUA_VERSION_NUM >= 502 // Quick preprocessor fixes to improve compatibility with Lua 5.2 // These definitions will already have been made if Lua 5.2 was compiled // with LUA_COMPAT_ALL defined, but we have no control over this. #ifndef lua_objlen inline size_t lua_objlen(lua_State *L, int idx) { return lua_rawlen(L, idx); } #endif #ifndef lua_equal inline int lua_equal(lua_State *L, int idx1, int idx2) { return lua_compare(L, idx1, idx2, LUA_OPEQ); } #endif #ifndef lua_lessthan inline int lua_lessthan(lua_State *L, int idx1, int idx2) { return lua_compare(L, idx1, idx2, LUA_OPLT); } #endif // Use our own replacements for lua_[sg]etfenv #ifndef lua_setfenv int luaT_setfenv52(lua_State*, int); inline int lua_setfenv(lua_State *L, int n) { return luaT_setfenv52(L, n); } #endif #ifndef lua_getfenv void luaT_getfenv52(lua_State*, int); inline void lua_getfenv(lua_State *L, int n) { luaT_getfenv52(L, n); } #endif #endif // LUA_VERSION_NUM >= 502 #endif // CORSIX_TH_LUA_HPP_ CorsixTH-0.61/CorsixTH/Src/lua_sdl.h000066400000000000000000000036701321660673500172100ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_LUA_SDL_H_ #define CORSIX_TH_LUA_SDL_H_ #include "lua.hpp" #include // SDL event codes used for delivering custom events to l_mainloop in // sdl_core.cpp // SDL_USEREVENT_TICK - informs script of a timer tick #define SDL_USEREVENT_TICK (SDL_USEREVENT + 0) // SDL_USEREVENT_MUSIC_OVER - informs script of SDL_Mixer music finishing #define SDL_USEREVENT_MUSIC_OVER (SDL_USEREVENT + 1) // SDL_USEREVENT_MUSIC_LOADED - informs script that async music is loaded #define SDL_USEREVENT_MUSIC_LOADED (SDL_USEREVENT + 2) // SDL USEREVENT_MOVIE_OVER - informs script of THMovie movie finishing #define SDL_USEREVENT_MOVIE_OVER (SDL_USEREVENT + 3) // SDL_USEREVENT_SOUND_OVER - informs script of a played sound finishing. #define SDL_USEREVENT_SOUND_OVER (SDL_USEREVENT + 4) int luaopen_sdl(lua_State *L); int l_load_music_async_callback(lua_State *L); #endif // CORSIX_TH_LUA_SDL_H_ CorsixTH-0.61/CorsixTH/Src/main.cpp000066400000000000000000000156651321660673500170530ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "lua.hpp" extern "C" { int luaopen_random(lua_State *L); } #include "rnc.h" #include "th_lua.h" #include "lua_sdl.h" #include "jit_opt.h" #include "persist_lua.h" #include "iso_fs.h" #include #include // Config file checking #ifndef CORSIX_TH_USE_PACK_PRAGMAS #error "config.h is out of date - please rerun CMake" #endif // End of config file checking int CorsixTH_lua_main_no_eval(lua_State *L) { // assert(_VERSION == LUA_VERSION) size_t iLength; lua_getglobal(L, "_VERSION"); const char* sVersion = lua_tolstring(L, -1, &iLength); if(iLength != std::strlen(LUA_VERSION) || std::strcmp(sVersion, LUA_VERSION) != 0) { lua_pushliteral(L, "Linked against a version of Lua different to the " "one used when compiling.\nPlease recompile CorsixTH against the " "same Lua version it is linked against."); return lua_error(L); } lua_pop(L, 1); // math.random* = Mersenne twister variant luaT_cpcall(L, luaopen_random, nullptr); // package.preload["jit.opt"] = load(jit_opt_lua) // package.preload["jit.opt_inline"] = load(jit_opt_inline_lua) lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); luaL_loadbuffer(L, (const char*)jit_opt_lua, sizeof(jit_opt_lua), "jit/opt.luac"); lua_setfield(L, -2, "jit.opt"); luaL_loadbuffer(L, (const char*)jit_opt_inline_lua, sizeof(jit_opt_inline_lua), "jit/opt_inline.luac"); lua_setfield(L, -2, "jit.opt_inline"); lua_pop(L, 2); // if registry._LOADED.jit then // require"jit.opt".start() // else // print "Notice: ..." // end // (this could be done in Lua rather than here, but ideally the optimiser // should be turned on before any Lua code is loaded) lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"); lua_getfield(L, -1, "jit"); if(lua_type(L, -1) == LUA_TNIL) { lua_pop(L, 2); } else { lua_pop(L, 2); lua_getglobal(L, "require"); lua_pushliteral(L, "jit.opt"); lua_call(L, 1, 1); lua_getfield(L, -1, "start"); lua_call(L, 0, 0); lua_pop(L, 1); } // Fill in package.preload table so that calls to require("X") from Lua // will call the appropriate luaopen_X function in C. #define PRELOAD(name, fn) \ luaT_execute(L, "package.preload." name " = ...", fn) PRELOAD("rnc", luaopen_rnc); PRELOAD("TH", luaopen_th); PRELOAD("ISO_FS", luaopen_iso_fs); PRELOAD("persist", luaopen_persist); PRELOAD("sdl", luaopen_sdl); #undef PRELOAD // require "debug" (Harmless in Lua 5.1, useful in 5.2 for compatbility) luaT_execute(L, "require \"debug\""); // Check for --interpreter and run that instead of CorsixTH.lua bool bGotScriptFile = false; int iNArgs = lua_gettop(L); for(int i = 1; i <= iNArgs; ++i) { if(lua_type(L, i) == LUA_TSTRING) { size_t iLen; const char* sCmd = lua_tolstring(L, i, &iLen); if(iLen > 14 && std::memcmp(sCmd, "--interpreter=", 14) == 0) { lua_getglobal(L, "assert"); lua_getglobal(L, "loadfile"); lua_pushlstring(L, sCmd + 14, iLen - 14); bGotScriptFile = true; break; } } } // Code to try several variations on finding CorsixTH.lua: // CorsixTH.lua // CorsixTH/CorsixTH.lua // ../CorsixTH.lua // ../CorsixTH/CorsixTH.lua // ../../CorsixTH.lua // ../../CorsixTH/CorsixTH.lua // ../../../CorsixTH.lua // ../../../CorsixTH/CorsixTH.lua // It is simpler to write this in Lua than in C. const char sLuaCorsixTHLua[] = "local name, sep, code = \"CorsixTH.lua\", package.config:sub(1, 1)\n" "local root = (... or \"\"):match(\"^(.*[\"..sep..\"])\") or \"\"\n" #ifdef __APPLE__ // Darrell: Search inside the bundle first. // There's probably a better way of doing this. #if defined(IS_CORSIXTH_APP) "code = loadfile(\"CorsixTH.app/Contents/Resources/\"..name)\n" "if code then return code end\n" #endif #endif "for num_dotdot = 0, 3 do\n" " for num_dir = 0, 1 do\n" " code = loadfile(root..(\"..\"..sep):rep(num_dotdot)..\n" " (\"CorsixTH\"..sep):rep(num_dir)..name)\n" " if code then return code end \n" " end \n" "end \n" "return loadfile(name)"; // return assert(loadfile"CorsixTH.lua")(...) if(!bGotScriptFile) { lua_getglobal(L, "assert"); luaL_loadbuffer(L, sLuaCorsixTHLua, std::strlen(sLuaCorsixTHLua), "@main.cpp (l_main bootstrap)"); if(lua_gettop(L) == 2) lua_pushnil(L); else lua_pushvalue(L, 1); } lua_call(L, 1, 2); lua_call(L, 2, 1); lua_insert(L, 1); return lua_gettop(L); } int CorsixTH_lua_main(lua_State *L) { lua_call(L, CorsixTH_lua_main_no_eval(L) - 1, LUA_MULTRET); return lua_gettop(L); } int CorsixTH_lua_stacktrace(lua_State *L) { // err = tostring(err) lua_settop(L, 1); lua_getglobal(L, "tostring"); lua_insert(L, 1); lua_call(L, 1, 1); // err = .. err lua_pushliteral(L, "An error has occurred in CorsixTH:\n"); lua_insert(L, 1); lua_concat(L, 2); // return debug.traceback(err, 2) lua_getglobal(L, "debug"); lua_getfield(L, -1, "traceback"); lua_pushvalue(L, 1); lua_pushinteger(L, 2); lua_call(L, 2, 1); return 1; } int CorsixTH_lua_panic(lua_State *L) { std::fprintf(stderr, "A Lua error has occurred in CorsixTH outside of protected " "mode!!\n"); std::fflush(stderr); if(lua_type(L, -1) == LUA_TSTRING) std::fprintf(stderr, "%s\n", lua_tostring(L, -1)); else std::fprintf(stderr, "%p\n", lua_topointer(L, -1)); std::fflush(stderr); // A stack trace would be nice, but they cannot be done in a panic. return 0; } CorsixTH-0.61/CorsixTH/Src/main.h000066400000000000000000000045651321660673500165150ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_MAIN_H_ #define CORSIX_TH_MAIN_H_ #include "lua.hpp" #ifdef CORSIX_TH_USE_VLD #include #endif //! Lua mode entry point /*! Performs the Lua initialisation tasks which have to be done in C, and then transfers control to CorsixTH.lua as soon as possible (so that as little as possible behaviour is hardcoded into C rather than Lua). */ int CorsixTH_lua_main(lua_State *L); //! Alternative lua mode entry point /*! Behaves like CorsixTH_lua_main, except that it doesn't transfer control over to Lua scripts - it just prepares everything for them and loads them. */ int CorsixTH_lua_main_no_eval(lua_State *L); //! Process a caught error before returning it to the caller /*! Processing of the error message is done here so that a stack trace can be added before the stack is unwound, and so that if an error occurs while processing the error, the caller receives LUA_ERRERR rather than panicking while processing it itself. */ int CorsixTH_lua_stacktrace(lua_State *L); //! Process an uncaught Lua error before aborting /*! Lua errors shouldn't occur outside of protected mode, and there isn't much which can be done when they do, but at least the user should be informed, and the error message printed. */ int CorsixTH_lua_panic(lua_State *L); #endif // CORSIX_TH_MAIN_H_ CorsixTH-0.61/CorsixTH/Src/persist_lua.cpp000066400000000000000000001404211321660673500204460ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "persist_lua.h" #include #include #include #include #include #include #include #ifdef _MSC_VER #pragma warning(disable: 4996) // Disable "std::strcpy unsafe" warnings under MSVC #endif enum PersistTypes { // LUA_TNIL = 0, // LUA_TBOOLEAN, // Used for false // LUA_TLIGHTUSERDATA, // Not currently persisted // LUA_TNUMBER, // LUA_TSTRING, // LUA_TTABLE, // Used for tables without metatables // LUA_TFUNCTION, // Used for Lua closures // LUA_TUSERDATA, // LUA_TTHREAD, // Not currently persisted PERSIST_TPERMANENT = LUA_TTHREAD + 1, PERSIST_TTRUE, PERSIST_TTABLE_WITH_META, PERSIST_TINTEGER, PERSIST_TPROTOTYPE, PERSIST_TRESERVED1, // Not currently used PERSIST_TRESERVED2, // Not currently used PERSIST_TCOUNT, // must equal 16 (for compatibility) }; static int l_writer_mt_index(lua_State *L); template static int l_crude_gc(lua_State *L) { // This __gc metamethod does not verify that the given value is the correct // type of userdata, or that the value is userdata at all. reinterpret_cast(lua_touserdata(L, 1))->~T(); return 0; }; //! Structure for loading multiple strings as a Lua chunk, avoiding concatenation /*! luaL_loadbuffer() is a good way to load a string as a Lua chunk. If there are several strings which need to be concatenated before being loaded, then it can be more efficient to use this structure, which can load them without concatenating them. Sample usage is: LoadMultiBuffer_t ls; ls.s[0] = lua_tolstring(L, -2, &ls.i[0]); ls.s[1] = lua_tolstring(L, -1, &ls.i[1]); lua_load(L, LoadMultiBuffer_t::load_fn, &ls, "chunk name"); */ struct LoadMultiBuffer_t { const char *s[3]; size_t i[3]; int n; LoadMultiBuffer_t() { s[0] = s[1] = s[2] = nullptr; i[0] = i[1] = i[2] = 0; n = 0; } static const char* load_fn(lua_State *L, void *ud, size_t *size) { LoadMultiBuffer_t *pThis = reinterpret_cast(ud); for( ; pThis->n < 3; ++pThis->n) { if(pThis->i[pThis->n] != 0) { *size = pThis->i[pThis->n]; return pThis->s[pThis->n++]; } } *size = 0; return nullptr; } }; //! Basic implementation of persistance interface /*! self - Instance of LuaPersistBasicWriter allocated as a Lua userdata self metatable: __gc - ~LuaPersistBasicWriter (via l_crude_gc) ":" - [1] - pre-populated prototype persistance names ":" - "" err - an object which could not be persisted self environment: - [1] - permanents table self environment metatable: __index - writeObjectRaw (via l_writer_mt_index) upvalue 1 - permanents table upvalue 2 - self */ class LuaPersistBasicWriter : public LuaPersistWriter { public: LuaPersistBasicWriter(lua_State *L) : m_L(L), m_data() { } ~LuaPersistBasicWriter() { } lua_State* getStack() override { return m_L; } void init() { lua_State *L = m_L; lua_createtable(L, 1, 8); // Environment lua_pushvalue(L, 2); // Permanent objects lua_rawseti(L, -2, 1); lua_createtable(L, 1, 0); // Environment metatable lua_pushvalue(L, 2); // Permanent objects lua_pushvalue(L, 1); // self luaT_pushcclosure(L, l_writer_mt_index, 2); lua_setfield(L, -2, "__index"); lua_setmetatable(L, -2); lua_setfenv(L, 1); lua_createtable(L, 1, 4); // Metatable luaT_pushcclosure(L, l_crude_gc, 0); lua_setfield(L, -2, "__gc"); lua_pushvalue(L, luaT_upvalueindex(1)); // Prototype persistance names lua_rawseti(L, -2, 1); lua_setmetatable(L, 1); m_iNextIndex = 1; m_iDataLength = 0; m_bHadError = false; } int finish() { if(getError() != nullptr) { lua_pushnil(m_L); lua_pushstring(m_L, getError()); lua_getmetatable(m_L, 1); lua_getfield(m_L, -1, "err"); lua_replace(m_L, -2); return 3; } else { lua_pushlstring(m_L, m_data.c_str(), m_data.length()); return 1; } } void fastWriteStackObject(int iIndex) override { lua_State *L = m_L; if(lua_type(L, iIndex) != LUA_TUSERDATA) { writeStackObject(iIndex); return; } // Convert index from relative to absolute if(iIndex < 0 && iIndex > LUA_REGISTRYINDEX) iIndex = lua_gettop(L) + 1 + iIndex; // Check for no cycle lua_getfenv(L, 1); lua_pushvalue(L, iIndex); lua_rawget(L, -2); lua_rawgeti(L, -2, 1); lua_pushvalue(L, iIndex); lua_gettable(L, -2); lua_replace(L, -2); if(!lua_isnil(L, -1) || !lua_isnil(L, -2)) { lua_pop(L, 3); writeStackObject(iIndex); return; } lua_pop(L, 2); // Save the index to the cache lua_pushvalue(L, iIndex); lua_pushnumber(L, (lua_Number)(m_iNextIndex++)); lua_settable(L, -3); if(!_checkThatUserdataCanBeDepersisted(iIndex)) return; // Write type, metatable, and then environment uint8_t iType = LUA_TUSERDATA; writeByteStream(&iType, 1); writeStackObject(-1); lua_getfenv(L, iIndex); writeStackObject(-1); lua_pop(L, 1); // Write the raw data if(lua_type(L, -1) == LUA_TTABLE) { lua_getfield(L, -1, "__persist"); if(lua_isnil(L, -1)) lua_pop(L, 1); else { lua_pushvalue(L, iIndex); lua_checkstack(L, 20); lua_CFunction fn = lua_tocfunction(L, -2); fn(L); lua_pop(L, 2); } } writeVUInt((uint64_t)0x42); // sync marker lua_pop(L, 1); } void writeStackObject(int iIndex) override { lua_State *L = m_L; // Convert index from relative to absolute if(iIndex < 0 && iIndex > LUA_REGISTRYINDEX) iIndex = lua_gettop(L) + 1 + iIndex; // Basic types always have their value written int iType = lua_type(L, iIndex); if(iType == LUA_TNIL || iType == LUA_TNONE) { uint8_t iByte = LUA_TNIL; writeByteStream(&iByte, 1); } else if(iType == LUA_TBOOLEAN) { uint8_t iByte; if(lua_toboolean(L, iIndex)) iByte = PERSIST_TTRUE; else iByte = LUA_TBOOLEAN; writeByteStream(&iByte, 1); } else if(iType == LUA_TNUMBER) { double fValue = lua_tonumber(L, iIndex); if(floor(fValue) == fValue && 0.0 <= fValue && fValue <= 16383.0) { // Small integers are written as just a few bytes // NB: 16383 = 2^14-1, which is the maximum value which // can fit into two bytes of VUInt. uint8_t iByte = PERSIST_TINTEGER; writeByteStream(&iByte, 1); uint16_t iValue = (uint16_t)fValue; writeVUInt(iValue); } else { // Other numbers are written as an 8 byte double uint8_t iByte = LUA_TNUMBER; writeByteStream(&iByte, 1); writeByteStream(reinterpret_cast(&fValue), sizeof(double)); } } else { // Complex values are cached, and are only written once (if this weren't // done, then cycles in the object graph would break things). lua_getfenv(L, 1); lua_pushvalue(L, iIndex); lua_gettable(L, -2); // Might (indirectly) call writeObjectRaw uint64_t iValue = (uint64_t)lua_tonumber(L, -1); lua_pop(L, 2); if(iValue != 0) { // If the value has not previously been written, then writeObjectRaw // would have been called, and the appropriate data written, and 0 // would be returned. Otherwise, the index would be returned, which // we offset by the number of types, and then write. writeVUInt(iValue + PERSIST_TCOUNT - 1); } } } int writeObjectRaw() { lua_State *L = m_L; uint8_t iType; // Save the index to the cache lua_pushvalue(L, 2); lua_pushnumber(L, (lua_Number)(m_iNextIndex++)); lua_settable(L, 1); // Lookup the object in the permanents table lua_pushvalue(L, 2); lua_gettable(L, luaT_upvalueindex(1)); if(lua_type(L, -1) != LUA_TNIL) { // Object is in the permanents table. uint8_t iType = PERSIST_TPERMANENT; writeByteStream(&iType, 1); // Replace self's environment with self (for call to writeStackObject) lua_pushvalue(L, luaT_upvalueindex(2)); lua_replace(L, 1); // Write the key corresponding to the permanent object writeStackObject(-1); } else { // Object is not in the permanents table. lua_pop(L, 1); switch(lua_type(L, 2)) { // LUA_TNIL handled in writeStackObject // LUA_TBOOLEAN handled in writeStackObject // LUA_TNUMBER handled in writeStackObject case LUA_TSTRING: { iType = LUA_TSTRING; writeByteStream(&iType, 1); // Strings are simple: length and then bytes (not null terminated) size_t iLength; const char *sString = lua_tolstring(L, 2, &iLength); writeVUInt(iLength); writeByteStream(reinterpret_cast(sString), iLength); break; } case LUA_TTABLE: { // Replace self's environment with self (for calls to writeStackObject) lua_pushvalue(L, luaT_upvalueindex(2)); lua_replace(L, 1); // Save env and insert prior to table lua_getfenv(L, 1); lua_insert(L, 2); int iTable = 3; table_reentry: // Handle the metatable if(lua_getmetatable(L, iTable)) { iType = PERSIST_TTABLE_WITH_META; writeByteStream(&iType, 1); writeStackObject(-1); lua_pop(L, 1); } else { iType = LUA_TTABLE; writeByteStream(&iType, 1); } // Write the children as key, value pairs lua_pushnil(L); while(lua_next(L, iTable)) { writeStackObject(-2); // The naive thing to do now would be writeStackObject(-1) // but this can easily lead to Lua's C call stack limit // being hit. To reduce the likelihood of this happening, // we check to see if about to write another table. if(lua_type(L, -1) == LUA_TTABLE) { lua_pushvalue(L, -1); lua_rawget(L, 2); lua_pushvalue(L, -2); lua_gettable(L, luaT_upvalueindex(1)); if(lua_isnil(L, -1) && lua_isnil(L, -2)) { lua_pop(L, 2); lua_checkstack(L, 10); iTable += 2; lua_pushvalue(L, iTable); lua_pushnumber(L, (lua_Number)(m_iNextIndex++)); lua_settable(L, 2); goto table_reentry; table_resume: iTable -= 2; } else { lua_pop(L, 2); writeStackObject(-1); } } else writeStackObject(-1); lua_pop(L, 1); } // Write a nil to mark the end of the children (as nil is the // only value which cannot be used as a key in a table). iType = LUA_TNIL; writeByteStream(&iType, 1); if(iTable != 3) goto table_resume; break; } case LUA_TFUNCTION: if(lua_iscfunction(L, 2)) { setErrorObject(2); setError("Cannot persist C functions"); } else { iType = LUA_TFUNCTION; writeByteStream(&iType, 1); // Replace self's environment with self (for calls to writeStackObject) lua_pushvalue(L, luaT_upvalueindex(2)); lua_replace(L, 1); // Write the prototype (the part of a function which is common across // multiple closures - see LClosure / Proto in Lua's lobject.h). lua_Debug proto_info; lua_pushvalue(L, 2); lua_getinfo(L, ">Su", &proto_info); writePrototype(&proto_info, 2); // Write the values of the upvalues // If available, also write the upvalue IDs (so that in // the future, we could hypothetically rejoin shared // upvalues). An ID is just an opaque sequence of bytes. writeVUInt(proto_info.nups); #if LUA_VERSION_NUM >= 502 writeVUInt(sizeof(void*)); #else writeVUInt(0); #endif for(int i = 1; i <= proto_info.nups; ++i) { lua_getupvalue(L, 2, i); writeStackObject(-1); #if LUA_VERSION_NUM >= 502 void *pUpvalueID = lua_upvalueid(L, 2, i); writeByteStream((uint8_t*)&pUpvalueID, sizeof(void*)); #endif } // Write the environment table lua_getfenv(L, 2); writeStackObject(-1); lua_pop(L, 1); } break; case LUA_TUSERDATA: if(!_checkThatUserdataCanBeDepersisted(2)) break; // Replace self's environment with self (for calls to writeStackObject) lua_pushvalue(L, luaT_upvalueindex(2)); lua_replace(L, 1); // Write type, metatable, and then environment iType = LUA_TUSERDATA; writeByteStream(&iType, 1); writeStackObject(-1); lua_getfenv(L, 2); writeStackObject(-1); lua_pop(L, 1); // Write the raw data if(lua_type(L, -1) == LUA_TTABLE) { lua_getfield(L, -1, "__persist"); if(lua_isnil(L, -1)) lua_pop(L, 1); else { lua_pushvalue(L, 2); lua_pushvalue(L, luaT_upvalueindex(2)); lua_call(L, 2, 0); } } writeVUInt((uint64_t)0x42); // sync marker break; default: setError(lua_pushfstring(L, "Cannot persist %s values", luaL_typename(L, 2))); break; } } lua_pushnumber(L, 0); return 1; } bool _checkThatUserdataCanBeDepersisted(int iIndex) { lua_State *L = m_L; if(lua_getmetatable(L, iIndex)) { lua_getfield(L, -1, "__depersist_size"); if(lua_isnumber(L, -1)) { if(static_cast(lua_tointeger(L, -1)) != static_cast(lua_objlen(L, iIndex))) { setError(lua_pushfstring(L, "__depersist_size is " "incorrect (%d vs. %d)", (int)lua_objlen(L, iIndex), (int)lua_tointeger(L, -1))); return false; } if(lua_objlen(L, iIndex) != 0) { lua_getfield(L, -2, "__persist"); lua_getfield(L, -3, "__depersist"); if(lua_isnil(L, -1) || lua_isnil(L, -2)) { setError("Can only persist non-empty userdata" " if they have __persist and __depersist " "metamethods"); return false; } lua_pop(L, 2); } } else { if(lua_objlen(L, iIndex) != 0) { setError("Can only persist non-empty userdata if " "they have a __depersist_size metafield"); return false; } } lua_pop(L, 1); } else { if(lua_objlen(L, iIndex) != 0) { setError("Can only persist userdata without a metatable" " if their size is zero"); return false; } lua_pushnil(L); } return true; } void writePrototype(lua_Debug *pProtoInfo, int iInstanceIndex) { lua_State *L = m_L; // Sanity checks if(pProtoInfo->source[0] != '@') { // @ denotes that the source was a file // (http://www.lua.org/manual/5.1/manual.html#lua_Debug) setError("Can only persist Lua functions defined in source files"); return; } if(std::strcmp(pProtoInfo->what, "Lua") != 0) { // what == "C" should have been caught by writeObjectRaw(). // what == "tail" should be impossible. // Hence "Lua" and "main" should be the only values seen. // NB: Chunks are not functions defined *in* source files, because // chunks *are* source files. setError(lua_pushfstring(L, "Cannot persist entire Lua chunks (%s)", pProtoInfo->source + 1)); lua_pop(L, 1); return; } // Attempt cached lookup (prototypes are not publicly visible Lua objects, // and hence cannot be cached in the normal way of self's environment). lua_getmetatable(L, 1); lua_pushfstring(L, "%s:%d", pProtoInfo->source + 1, pProtoInfo->linedefined); lua_pushvalue(L, -1); lua_rawget(L, -3); if(!lua_isnil(L, -1)) { uint64_t iValue = (uint64_t)lua_tonumber(L, -1); lua_pop(L, 3); writeVUInt(iValue + PERSIST_TCOUNT - 1); return; } lua_pop(L, 1); lua_pushvalue(L, -1); lua_pushnumber(L, (lua_Number)m_iNextIndex++); lua_rawset(L, -4); uint8_t iType = PERSIST_TPROTOTYPE; writeByteStream(&iType, 1); // Write upvalue names writeVUInt(pProtoInfo->nups); for(int i = 1; i <= pProtoInfo->nups; ++i) { lua_pushstring(L, lua_getupvalue(L, iInstanceIndex, i)); writeStackObject(-1); lua_pop(L, 2); } // Write the function's persist name lua_rawgeti(L, -2, 1); lua_replace(L, -3); lua_rawget(L, -2); if(lua_isnil(L, -1)) { setError(lua_pushfstring(L, "Lua functions must be given a unique " "persistable name in order to be persisted (attempt to persist" " %s:%d)", pProtoInfo->source + 1, pProtoInfo->linedefined)); lua_pop(L, 2); return; } writeStackObject(-1); lua_pop(L, 2); } void writeByteStream(const uint8_t *pBytes, size_t iCount) override { if(m_bHadError) { // If an error occurred, then silently fail to write any // data. return; } m_data.append(reinterpret_cast(pBytes), iCount); } void setError(const char *sError) override { // If multiple errors occur, only record the first. if (m_bHadError) { return; } m_bHadError = true; // Use the written data buffer to store the error message m_data.assign(sError); } void setErrorObject(int iStackObject) { if(m_bHadError) return; lua_State *L = m_L; lua_pushvalue(L, iStackObject); lua_getmetatable(L, luaT_upvalueindex(2)); lua_insert(L, -2); lua_setfield(L, -2, "err"); lua_pop(L, 1); } const char* getError() { if(m_bHadError) return m_data.c_str(); else return nullptr; } private: lua_State *m_L; uint64_t m_iNextIndex; std::string m_data; size_t m_iDataLength; bool m_bHadError; }; static int l_writer_mt_index(lua_State *L) { return reinterpret_cast( lua_touserdata(L, luaT_upvalueindex(2)))->writeObjectRaw(); } //! Basic implementation of depersistance interface /*! self - Instance of LuaPersistBasicReader allocated as a Lua userdata self environment: [-3] - self [-2] - pre-populated prototype persistance code "" - "" [-1] - pre-populated prototype persistance filenames "" - "" [ 0] - permanents table - self metatable: __gc - ~LuaPersistBasicReader (via l_crude_gc) - */ class LuaPersistBasicReader : public LuaPersistReader { public: LuaPersistBasicReader(lua_State *L) : m_L(L), m_stringBuffer() { } ~LuaPersistBasicReader() { } lua_State* getStack() override { return m_L; } void setError(const char *sError) override { m_bHadError = true; m_stringBuffer.assign(sError); } void init(const uint8_t *pData, size_t iLength) { lua_State *L = m_L; m_pData = pData; m_iDataBufferLength = iLength; m_iNextIndex = 1; m_bHadError = false; lua_createtable(L, 32, 0); // Environment lua_pushvalue(L, 2); lua_rawseti(L, -2, 0); lua_pushvalue(L, luaT_upvalueindex(1)); lua_rawseti(L, -2, -1); lua_pushvalue(L, luaT_upvalueindex(2)); lua_rawseti(L, -2, -2); lua_pushvalue(L, 1); lua_rawseti(L, -2, -3); lua_setfenv(L, 1); lua_createtable(L, 0, 1); // Metatable luaT_pushcclosure(L, l_crude_gc, 0); lua_setfield(L, -2, "__gc"); lua_setmetatable(L, 1); } bool readStackObject() override { uint64_t iIndex; if(!readVUInt(iIndex)) { setError("Expected stack object"); return false; } lua_State *L = m_L; if(lua_type(L, 1) != LUA_TTABLE) { // Ensure that index #1 is self environment lua_getfenv(L, 1); lua_replace(L, 1); } if(iIndex >= PERSIST_TCOUNT) { iIndex += 1 - PERSIST_TCOUNT; if(iIndex < (uint64_t)INT_MAX) lua_rawgeti(L, 1, (int)iIndex); else { lua_pushnumber(L, (lua_Number)iIndex); lua_rawget(L, 1); } if(lua_isnil(L, -1)) { setError("Cycle while depersisting permanent object key or userdata metatable"); return false; } } else { uint8_t iType = (uint8_t)iIndex; switch(iType) { case LUA_TNIL: lua_pushnil(L); break; case PERSIST_TPERMANENT: { uint64_t iOldIndex = m_iNextIndex; ++m_iNextIndex; // Temporary marker lua_rawgeti(L, 1, 0); // Permanents table if(!readStackObject()) return false; lua_gettable(L, -2); lua_replace(L, -2); // Replace marker with actual object uint64_t iNewIndex = m_iNextIndex; m_iNextIndex = iOldIndex; saveStackObject(); m_iNextIndex = iNewIndex; break; } case LUA_TBOOLEAN: lua_pushboolean(L, 0); break; case PERSIST_TTRUE: lua_pushboolean(L, 1); break; case LUA_TSTRING: { size_t iLength; if(!readVUInt(iLength)) return false; if(!readByteStream(m_stringBuffer, iLength)) return false; lua_pushlstring(L, m_stringBuffer.c_str(), m_stringBuffer.length()); saveStackObject(); break; } case LUA_TTABLE: lua_newtable(L); saveStackObject(); if(!lua_checkstack(L, 8)) return false; if(!readTableContents()) return false; break; case PERSIST_TTABLE_WITH_META: lua_newtable(L); saveStackObject(); if(!lua_checkstack(L, 8)) return false; if(!readStackObject()) return false; lua_setmetatable(L, -2); if(!readTableContents()) return false; break; case LUA_TNUMBER: { double fValue; if(!readByteStream(reinterpret_cast(&fValue), sizeof(double))) return false; lua_pushnumber(L, fValue); break; } case LUA_TFUNCTION: { if(!lua_checkstack(L, 8)) return false; uint64_t iOldIndex = m_iNextIndex; ++m_iNextIndex; // Temporary marker if(!readStackObject()) return false; lua_call(L, 0, 2); // Replace marker with closure uint64_t iNewIndex = m_iNextIndex; m_iNextIndex = iOldIndex; saveStackObject(); m_iNextIndex = iNewIndex; // Set upvalues lua_insert(L, -2); int iNups, i; if(!readVUInt(iNups)) return false; size_t iIDSize; if(!readVUInt(iIDSize)) return false; for(i = 0; i < iNups; ++i) { if(!readStackObject()) return false; // For now, just skip over the upvalue IDs. In the future, // the ID may be used to rejoin shared upvalues. if(!readByteStream(nullptr, iIDSize)) return false; } lua_call(L, iNups, 0); // Read environment if(!readStackObject()) return false; lua_setfenv(L, -2); break; } case PERSIST_TPROTOTYPE: { if(!lua_checkstack(L, 8)) return false; uint64_t iOldIndex = m_iNextIndex; ++m_iNextIndex; // Temporary marker int iNups; if(!readVUInt(iNups)) return false; if(iNups == 0) lua_pushliteral(L, "return function() end,"); else { lua_pushliteral(L, "local "); lua_checkstack(L, (iNups + 1) * 2); for(int i = 0; i < iNups; ++i) { if(i != 0) lua_pushliteral(L, ","); if(!readStackObject()) return false; if(lua_type(L, -1) != LUA_TSTRING) { setError("Upvalue name not a string"); return false; } } lua_concat(L, iNups * 2 - 1); lua_pushliteral(L, ";return function(...)"); lua_pushvalue(L, -2); lua_pushliteral(L, "=...end,"); lua_concat(L, 5); } // Fetch name and then lookup filename and code if(!readStackObject()) return false; lua_pushliteral(L, "@"); lua_rawgeti(L, 1, -1); lua_pushvalue(L, -3); lua_gettable(L, -2); lua_replace(L, -2); if(lua_isnil(L, -1)) { setError(lua_pushfstring(L, "Unable to depersist prototype" " \'%s\'", lua_tostring(L, -3))); return false; } lua_concat(L, 2); // Prepend the @ to the filename lua_rawgeti(L, 1, -2); lua_pushvalue(L, -3); lua_gettable(L, -2); lua_replace(L, -2); lua_remove(L, -3); // Construct the closure factory LoadMultiBuffer_t ls; ls.s[0] = lua_tolstring(L, -3, &ls.i[0]); ls.s[1] = lua_tolstring(L, -1, &ls.i[1]); if(luaT_load(L, LoadMultiBuffer_t::load_fn, &ls, lua_tostring(L, -2), "bt") != 0) { // Should never happen lua_error(L); return false; } lua_replace(L, -4); lua_pop(L, 2); // Replace marker with closure factory uint64_t iNewIndex = m_iNextIndex; m_iNextIndex = iOldIndex; saveStackObject(); m_iNextIndex = iNewIndex; break; } case LUA_TUSERDATA: { bool bHasSetMetatable = false; uint64_t iOldIndex = m_iNextIndex; ++m_iNextIndex; // Temporary marker // Read metatable if(!readStackObject()) return false; lua_getfield(L, -1, "__depersist_size"); if(!lua_isnumber(L, -1)) { setError("Userdata missing __depersist_size metafield"); return false; } lua_newuserdata(L, (size_t)lua_tonumber(L, -1)); lua_replace(L, -2); // Replace marker with userdata uint64_t iNewIndex = m_iNextIndex; m_iNextIndex = iOldIndex; saveStackObject(); m_iNextIndex = iNewIndex; // Perform immediate initialisation lua_getfield(L, -2, "__pre_depersist"); if(lua_isnil(L, -1)) lua_pop(L, 1); else { // Set metatable now, as pre-depersister may expect it // NB: Setting metatable if there isn't a pre-depersister // is not a good idea, as if there is an error while the // environment table is being de-persisted, then the __gc // handler of the userdata will eventually be called with // the userdata's contents still being uninitialised. lua_pushvalue(L, -3); lua_setmetatable(L, -3); bHasSetMetatable = true; lua_pushvalue(L, -2); lua_call(L, 1, 0); } // Read environment if(!readStackObject()) return false; lua_setfenv(L, -2); // Set metatable and read the raw data if(!bHasSetMetatable) { lua_pushvalue(L, -2); lua_setmetatable(L, -2); } lua_getfield(L, -2, "__depersist"); if(lua_isnil(L, -1)) lua_pop(L, 1); else { lua_pushvalue(L, -2); lua_rawgeti(L, 1, -3); lua_call(L, 2, 1); if(lua_toboolean(L, -1) != 0) { lua_pop(L, 1); lua_rawgeti(L, 1, -3); lua_getmetatable(L, -1); lua_replace(L, -2); lua_pushvalue(L, -2); lua_rawseti(L, -2, (int)lua_objlen(L, -2) + 1); } lua_pop(L, 1); } lua_replace(L, -2); uint64_t iSyncMarker; if(!readVUInt(iSyncMarker)) return false; if(iSyncMarker != 0x42) { setError("sync fail"); return false; } break; } case PERSIST_TINTEGER: { uint16_t iValue; if(!readVUInt(iValue)) return false; lua_pushinteger(L, iValue); break; } default: lua_pushliteral(L, "Unable to depersist values of type \'"); if(iType <= LUA_TTHREAD) lua_pushstring(L, lua_typename(L, iType)); else { switch(iType) { case PERSIST_TPERMANENT: lua_pushliteral(L, "permanent"); break; case PERSIST_TTRUE: lua_pushliteral(L, "boolean-true"); break; case PERSIST_TTABLE_WITH_META: lua_pushliteral(L, "table-with-metatable"); break; case PERSIST_TINTEGER: lua_pushliteral(L, "integer"); break; case PERSIST_TPROTOTYPE: lua_pushliteral(L, "prototype"); break; case PERSIST_TRESERVED1: lua_pushliteral(L, "reserved1"); break; case PERSIST_TRESERVED2: lua_pushliteral(L, "reserved2"); break; } } lua_pushliteral(L, "\'"); lua_concat(L, 3); setError(lua_tostring(L, -1)); lua_pop(L, 1); return false; } } return true; } void saveStackObject() { lua_State *L = m_L; if(m_iNextIndex < (uint64_t)INT_MAX) { lua_pushvalue(L, -1); lua_rawseti(L, 1, (int)m_iNextIndex); } else { lua_pushnumber(L, (lua_Number)m_iNextIndex); lua_pushvalue(L, -2); lua_rawset(L, 1); } ++m_iNextIndex; } bool readTableContents() { lua_State *L = m_L; while(true) { if(!readStackObject()) return false; if(lua_type(L, -1) == LUA_TNIL) { lua_pop(L, 1); return true; } if(!readStackObject()) return false; // NB: lua_rawset used rather than lua_settable to avoid invoking // any metamethods, as they may not have been designed to be called // during depersistance. lua_rawset(L, -3); } } bool finish() { lua_State *L = m_L; // Ensure that all data has been read if(m_iDataBufferLength != 0) { setError(lua_pushfstring(L, "%d bytes of data remain unpersisted", (int)m_iDataBufferLength)); return false; } // Ensure that index #1 is self environment if(lua_type(L, 1) != LUA_TTABLE) { lua_getfenv(L, 1); lua_replace(L, 1); } // Ensure that index #1 is self metatable lua_rawgeti(L, 1, -3); lua_getmetatable(L, -1); lua_replace(L, 1); lua_pop(L, 1); // Call all the __depersist functions which need a 2nd call int iNumCalls = (int)lua_objlen(L, 1); for(int i = 1; i <= iNumCalls; ++i) { lua_rawgeti(L, 1, i); luaL_getmetafield(L, -1, "__depersist"); lua_insert(L, -2); lua_call(L, 1, 0); } return true; } bool readByteStream(uint8_t *pBytes, size_t iCount) override { if(iCount > m_iDataBufferLength) { setError(lua_pushfstring(m_L, "End of input reached while attempting to read %d byte%s", (int)iCount, iCount == 1 ? "" : "s")); lua_pop(m_L, 1); return false; } if(pBytes != nullptr) std::memcpy(pBytes, m_pData, iCount); m_pData += iCount; m_iDataBufferLength -= iCount; return true; } bool readByteStream(std::string& bytes, size_t iCount) { if(iCount > m_iDataBufferLength) { setError(lua_pushfstring(m_L, "End of input reached while attempting to read %d byte%s", (int)iCount, iCount == 1 ? "" : "s")); lua_pop(m_L, 1); return false; } bytes.assign(reinterpret_cast(m_pData), iCount); m_pData += iCount; m_iDataBufferLength -= iCount; return true; } const uint8_t* getPointer() {return m_pData;} uint64_t getObjectCount() {return m_iNextIndex;} const char* getError() { if(m_bHadError) return m_stringBuffer.c_str(); else return nullptr; } private: lua_State *m_L; uint64_t m_iNextIndex; const uint8_t* m_pData; size_t m_iDataBufferLength; std::string m_stringBuffer; bool m_bHadError; }; static int l_dump_toplevel(lua_State *L) { luaL_checktype(L, 2, LUA_TTABLE); lua_settop(L, 2); lua_pushvalue(L, 1); LuaPersistBasicWriter *pWriter = new (lua_newuserdata(L, sizeof(LuaPersistBasicWriter))) LuaPersistBasicWriter(L); lua_replace(L, 1); pWriter->init(); pWriter->writeStackObject(3); return pWriter->finish(); } static int l_load_toplevel(lua_State *L) { size_t iDataLength; const uint8_t *pData = luaT_checkfile(L, 1, &iDataLength); luaL_checktype(L, 2, LUA_TTABLE); lua_settop(L, 2); lua_pushvalue(L, 1); LuaPersistBasicReader *pReader = new (lua_newuserdata(L, sizeof(LuaPersistBasicReader))) LuaPersistBasicReader(L); lua_replace(L, 1); pReader->init(pData, iDataLength); if(!pReader->readStackObject() || !pReader->finish()) { int iNumObjects = (int)pReader->getObjectCount(); int iNumBytes = (int)(pReader->getPointer() - pData); lua_pushnil(L); lua_pushfstring(L, "%s after %d objects (%d bytes)", pReader->getError() ? pReader->getError() : "Error while depersisting", iNumObjects, iNumBytes); return 2; } else { return 1; } } static int CalculateLineNumber(const char *sStart, const char *sPosition) { int iLine = 1; for(; sStart != sPosition; ++sStart) { switch(sStart[0]) { case '\0': return -1; // error return value case '\n': ++iLine; if(sStart[1] == '\r') ++sStart; break; case '\r': ++iLine; if(sStart[1] == '\n') ++sStart; break; } } return iLine; } static const char* FindFunctionEnd(lua_State *L, const char* sStart) { const char* sEnd = sStart; while(sEnd) { sEnd = std::strstr(sEnd, "end"); if(sEnd) { sEnd += 3; LoadMultiBuffer_t ls; ls.s[0] = "return function"; ls.i[0] = sizeof("return function") - 1; ls.s[1] = sStart; ls.i[1] = sEnd - sStart; if(luaT_load(L, LoadMultiBuffer_t::load_fn, &ls, "", "bt") == 0) { lua_pop(L, 1); return sEnd; } lua_pop(L, 1); } } return nullptr; } static int l_persist_dofile(lua_State *L) { const char *sFilename = luaL_checkstring(L, 1); lua_settop(L, 1); // Read entire file into memory FILE *fFile = std::fopen(sFilename, "r"); if(fFile == nullptr) { const char *sError =std::strerror(errno); return luaL_error(L, "cannot open %s: %s", sFilename, sError); } size_t iBufferSize = lua_objlen(L, luaT_upvalueindex(1)); size_t iBufferUsed = 0; while(!std::feof(fFile)) { iBufferUsed += std::fread(reinterpret_cast(lua_touserdata(L, luaT_upvalueindex(1))) + iBufferUsed, 1, iBufferSize - iBufferUsed, fFile); if(iBufferUsed == iBufferSize) { iBufferSize *= 2; std::memcpy(lua_newuserdata(L, iBufferSize), lua_touserdata(L, luaT_upvalueindex(1)), iBufferUsed); lua_replace(L, luaT_upvalueindex(1)); } else break; } int iStatus = std::ferror(fFile); std::fclose(fFile); if(iStatus) { const char *sError =std::strerror(errno); return luaL_error(L, "cannot read %s: %s", sFilename, sError); } // Check file char *sFile = reinterpret_cast(lua_touserdata(L, luaT_upvalueindex(1))); sFile[iBufferUsed] = 0; if(sFile[0] == '#') { do { ++sFile; --iBufferUsed; } while(sFile[0] != 0 && sFile[0] != '\r' && sFile[0] != '\n'); } if(sFile[0] == LUA_SIGNATURE[0]) { return luaL_error(L, "cannot load %s: compiled files not permitted", sFilename); } // Load and do file lua_pushliteral(L, "@"); lua_pushvalue(L, 1); lua_concat(L, 2); if(luaL_loadbuffer(L, sFile, iBufferUsed, lua_tostring(L, -1)) != 0) return lua_error(L); lua_remove(L, -2); int iBufferCopyIndex = lua_gettop(L); std::memcpy(lua_newuserdata(L, iBufferUsed + 1), sFile, iBufferUsed + 1); lua_insert(L, -2); lua_call(L, 0, LUA_MULTRET); sFile = reinterpret_cast(lua_touserdata(L, luaT_upvalueindex(1))); std::memcpy(sFile, lua_touserdata(L, iBufferCopyIndex), iBufferUsed + 1); lua_remove(L, iBufferCopyIndex); // Extract persistable functions const char *sPosition = sFile; while(true) { sPosition = std::strstr(sPosition, "--[[persistable:"); if(!sPosition) break; sPosition += 16; const char *sNameEnd = std::strstr(sPosition, "]]"); if(sNameEnd) { int iLineNumber = CalculateLineNumber(sFile, sNameEnd); const char *sFunctionArgs = std::strchr(sNameEnd + 2, '('); const char *sFunctionEnd = FindFunctionEnd(L, sFunctionArgs); if((sNameEnd - sPosition) == 1 && *sPosition == ':') { // --[[persistable::]] means take the existing name of the function sPosition = std::strstr(sNameEnd, "function") + 8; sPosition += std::strspn(sPosition, " \t"); sNameEnd = sFunctionArgs; while(sNameEnd[-1] == ' ') --sNameEnd; } if(iLineNumber != -1 && sFunctionArgs && sFunctionEnd) { // Save : => lua_pushfstring(L, "%s:%d", sFilename, iLineNumber); lua_pushvalue(L, -1); lua_gettable(L, luaT_upvalueindex(2)); if(lua_isnil(L, -1)) { lua_pop(L, 1); lua_pushlstring(L, sPosition, sNameEnd - sPosition); lua_settable(L, luaT_upvalueindex(2)); } else { return luaL_error(L, "Multiple persistable functions defin" "ed on the same line (%s:%d)", sFilename, iLineNumber); } // Save => lua_pushlstring(L, sPosition, sNameEnd - sPosition); lua_pushvalue(L, -1); lua_gettable(L, luaT_upvalueindex(3)); if(lua_isnil(L, -1)) { lua_pop(L, 1); lua_pushvalue(L, 1); lua_settable(L, luaT_upvalueindex(3)); } else { return luaL_error(L, "Persistable function name \'%s\' is" " not unique (defined in both %s and %s)", lua_tostring(L, -2), lua_tostring(L, -1), sFilename); } // Save => lua_pushlstring(L, sPosition, sNameEnd - sPosition); lua_pushliteral(L, "\n"); lua_getfield(L, -1, "rep"); lua_insert(L, -2); lua_pushinteger(L, iLineNumber - 1); lua_call(L, 2, 1); lua_pushliteral(L, "function"); lua_pushlstring(L, sFunctionArgs, sFunctionEnd - sFunctionArgs); lua_concat(L, 3); lua_settable(L, luaT_upvalueindex(4)); } } } // Finish return lua_gettop(L) - 1; } static int l_errcatch(lua_State *L) { // Dummy function for debugging - place a breakpoint on the following // return statement to inspect the full C call stack when a Lua error // occurs (assuming that l_errcatch is used as the error catch handler). return 1; } static const std::vector persist_lib = { // Due to the various required upvalues, functions are registered // manually, but we still need a dummy to pass to luaL_register. {"errcatch", l_errcatch}, {nullptr, nullptr} }; int luaopen_persist(lua_State *L) { luaT_register(L, "persist", persist_lib); lua_newuserdata(L, 512); // buffer for dofile lua_newtable(L); lua_newtable(L); lua_newtable(L); lua_pushvalue(L, -3); luaT_pushcclosure(L, l_dump_toplevel, 1); lua_setfield(L, -6, "dump"); lua_pushvalue(L, -2); lua_pushvalue(L, -2); luaT_pushcclosure(L, l_load_toplevel, 2); lua_setfield(L, -6, "load"); luaT_pushcclosure(L, l_persist_dofile, 4); lua_setfield(L, -2, "dofile"); return 1; } CorsixTH-0.61/CorsixTH/Src/persist_lua.h000066400000000000000000000122531321660673500201140ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_PERSIST_LUA_H_ #define CORSIX_TH_PERSIST_LUA_H_ #include "config.h" #include "th_lua.h" #include #include template struct LuaPersistVInt {}; template <> struct LuaPersistVInt {typedef unsigned int T;}; //! Interface used for persisting Lua objects /*! When userdata are persisted, they get an instance of this interface for writing binary data and other Lua objects. */ class LuaPersistWriter { public: virtual ~LuaPersistWriter() = default; virtual lua_State* getStack() = 0; virtual void writeStackObject(int iIndex) = 0; virtual void writeByteStream(const uint8_t *pBytes, size_t iCount) = 0; virtual void setError(const char *sError) = 0; // writeStackObject for userdata without growing the Lua call stack // The given index should be a userdata whose __persist metamethod supports // fast persistance (being called with extra arguments and the wrong // environment / upvalues). virtual void fastWriteStackObject(int iIndex) = 0; // Writes an unsigned integer as a variable number of bytes // Endian independant and underlying type size independant template void writeVUInt(T tValue) { T tTemp(tValue); int iNumBytes; for(iNumBytes = 1; tTemp >= (T)0x80; tTemp /= (T)0x80) ++iNumBytes; if(iNumBytes == 1) { uint8_t iByte = (uint8_t)tValue; writeByteStream(&iByte, 1); } else { std::vector bytes(iNumBytes); bytes[iNumBytes - 1] = 0x7F & (uint8_t)(tValue); for(int i = 1; i < iNumBytes; ++i) { tValue /= (T)0x80; bytes[iNumBytes - 1 - i] = 0x80 | (0x7F & (uint8_t)tValue); } writeByteStream(bytes.data(), iNumBytes); } } template void writeVInt(T tValue) { typename LuaPersistVInt::T tValueToWrite; if(tValue >= 0) { tValueToWrite = (typename LuaPersistVInt::T)tValue; tValueToWrite <<= 1; } else { tValueToWrite = (typename LuaPersistVInt::T)(-(tValue + 1)); tValueToWrite <<= 1; tValueToWrite |= 1; } writeVUInt(tValueToWrite); } template void writeVFloat(T fValue) { writeByteStream(reinterpret_cast(&fValue), sizeof(T)); } }; //! Interface used for depersisting Lua objects /*! When userdata are depersisted, they get an instance of this interface for reading binary data and other Lua objects. */ class LuaPersistReader { public: virtual ~LuaPersistReader() = default; virtual lua_State* getStack() = 0; virtual bool readStackObject() = 0; virtual bool readByteStream(uint8_t *pBytes, size_t iCount) = 0; virtual void setError(const char *sError) = 0; // Reads an integer previously written by LuaPersistWriter::writeVUInt() template bool readVUInt(T& tValue) { T tTemp(0); uint8_t iByte; while(true) { if(!readByteStream(&iByte, 1)) return false; if(iByte & 0x80) { tTemp = static_cast(tTemp | (iByte & 0x7F)); tTemp = static_cast(tTemp << 7); } else { tTemp = static_cast(tTemp | iByte); break; } } tValue = tTemp; return true; } template bool readVInt(T& tValue) { typename LuaPersistVInt::T tWrittenValue; if(!readVUInt(tWrittenValue)) return false; if(tWrittenValue & 1) tValue = (-(T)(tWrittenValue >> 1)) - 1; else tValue = static_cast(tWrittenValue >> 1); return true; } template bool readVFloat(T& fValue) { if(!readByteStream(reinterpret_cast(&fValue), sizeof(T))) return false; return true; } }; int luaopen_persist(lua_State *L); #endif // CORSIX_TH_PERSIST_LUA_H_ CorsixTH-0.61/CorsixTH/Src/random.c000066400000000000000000000152331321660673500170360ustar00rootroot00000000000000/* A C-program for MT19937, with initialization improved 2002/1/26. Coded by Takuji Nishimura and Makoto Matsumoto. Lua interface by Peter Cawley. Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved. Copyright (C) 2005, Mutsuo Saito, All rights reserved. Copyright (C) 2009, Peter Cawley, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Any feedback is very welcome. http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) */ #include #include #ifdef _MSC_VER typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; #else #include #endif /* _MSC_VER */ /* Period parameters */ #define N 624 #define M 397 #define MATRIX_A 0x9908b0dfUL /* constant vector a */ #define UPPER_MASK 0x80000000UL /* most significant w-r bits */ #define LOWER_MASK 0x7fffffffUL /* least significant r bits */ uint32_t mt[N]; /* the array for the state vector */ uint16_t mti=N+1; /* mti==N+1 means mt[N] is not initialized */ /* initializes mt[N] with a seed */ static void init_genrand(uint32_t s) { mt[0]= s; for (mti=1; mti> 30)) + mti); /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ /* In the previous versions, MSBs of the seed affect */ /* only MSBs of the array mt[]. */ } } /* generates a random number on [0,0xffffffff]-interval */ static uint32_t genrand_int32(void) { uint32_t y; static uint32_t mag01[2]={0x0UL, MATRIX_A}; /* mag01[x] = x * MATRIX_A for x=0,1 */ if (mti >= N) { /* generate N words at one time */ int kk; if (mti == N+1) /* if init_genrand() has not been called, */ init_genrand(5489UL); /* a default initial seed is used */ for (kk=0;kk> 1) ^ mag01[y & 0x1UL]; } for (;kk> 1) ^ mag01[y & 0x1UL]; } y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK); mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL]; mti = 0; } y = mt[mti++]; /* Tempering */ y ^= (y >> 11); y ^= (y << 7) & 0x9d2c5680UL; y ^= (y << 15) & 0xefc60000UL; y ^= (y >> 18); return y; } /* generates a random number on [0,1) with 53-bit resolution*/ static double genrand_res53(void) { uint32_t a=genrand_int32()>>5, b=genrand_int32()>>6; return(a*67108864.0+b)*(1.0/9007199254740992.0); } /* These real versions are due to Isaku Wada, 2002/01/09 added */ /** @function math.random @arguments [[range_start, ] range_end] @return number If called with no arguments, returns a random number in the range [0, 1). If called with one argument, returns a random integer in the range [1, range_end]. If called with two or more arguments, returns a random integer in the range [range_start, range_end]. */ static int l_random(lua_State *L) { lua_Integer min; uint32_t max; switch(lua_gettop(L)) { default: case 2: min = luaL_checkinteger(L, 1); max = (uint32_t)(luaL_checkinteger(L, 2) - min + 1); luaL_argcheck(L, max > 0, 2, "interval is empty"); lua_pushinteger(L, min + (lua_Integer)(genrand_int32() % max)); break; case 1: max = (uint32_t)luaL_checkinteger(L, 1); luaL_argcheck(L, 1 <= max, 1, "interval is empty"); lua_pushinteger(L, (lua_Integer)(genrand_int32() % max)); break; case 0: lua_pushnumber(L, (lua_Number)genrand_res53()); break; } return 1; } /** @function math.randomdump @arguments @return string Returns a string which can later be passed to math.randomseed() to restore the random number generator to its current state. */ static int l_randomdump(lua_State *L) { lua_pushlstring(L, (const char*)mt, N * 4); lua_pushlstring(L, (const char*)&mti, 2); lua_concat(L, 2); return 1; } /** @function math.randomseed @arguments number @arguments string @return Seeds the random number generator using the given seed number, or restores the random number generator state from a string previously generated from math.randomdump(). */ static int l_randomseed(lua_State *L) { if(lua_type(L, 1) == LUA_TSTRING) { int i; size_t len; const char *data = lua_tolstring(L, 1, &len); if(len != N * 4 + 2) luaL_argerror(L, 1, "Seed string wrong length"); for(i = 0; i < N; ++i) mt[i] = ((uint32_t*)data)[i]; mti = *(uint16_t*)(data + len - 2); } else { init_genrand((uint32_t)luaL_checkinteger(L, 1)); } return 0; } int luaopen_random(lua_State *L) { lua_getglobal(L, "math"); lua_pushliteral(L, "random"); lua_pushcfunction(L, l_random); lua_settable(L, -3); lua_pushliteral(L, "randomseed"); lua_pushcfunction(L, l_randomseed); lua_settable(L, -3); lua_pushliteral(L, "randomdump"); lua_pushcfunction(L, l_randomdump); lua_settable(L, -3); return 0; } CorsixTH-0.61/CorsixTH/Src/rnc.cpp000066400000000000000000000377221321660673500167070ustar00rootroot00000000000000/* Copyright (c) 1997 Simon Tatham Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Original code was from http://www.yoda.arachsys.com/dk/utils.html. While that site and the original code do not state copyright or license, email communication releaved the original author, and they agreed to releasing it under the MIT license (above). Modifications made to the original code include: * Const correctness * Prebuilt CRC table * Lua interface * Indentation and code style * Bit stream pointers to data * Fix bit operations near end of stream * Style changes to conform to CorsixTH */ #include "config.h" #include "rnc.h" #include "th_lua.h" #include /*! Result status values from #rnc_inpack. */ enum class rnc_status { ok, ///< Everything is fine file_is_not_rnc, ///< The file does not begin with an RNC signature huf_decode_error, ///< Error decoding the file file_size_mismatch, ///< The file size does not match the header packed_crc_error, ///< The compressed file does not match its checksum unpacked_crc_error ///< The uncompressed file does not match its checksum }; static const uint32_t rnc_signature = 0x524E4301; /*!< "RNC\001" */ static const uint16_t rnc_crc_table[256] = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040, }; struct bit_stream { uint32_t bitbuf; ///< holds between 16 and 32 bits. int bitcount; ///< how many bits does bitbuf hold? const uint8_t* endpos; ///< final position that can be read. const uint8_t* p; ///< pointer in data that stream is reading. }; struct huf_table { int num; ///< number of nodes in the tree. struct { uint32_t code; int codelen; int value; } table[32]; }; //! Calculate a CRC, the RNC way. /*! @param data data for which to calculate the CRC @param len length of the data in bytes */ static uint16_t rnc_crc(const uint8_t* data, size_t len) { uint16_t val = 0; while(len--) { val = static_cast(val ^ *data++); val = static_cast((val >> 8) ^ rnc_crc_table[val & 0xFF]); } return val; } //! Return the big-endian 32 bit word at p. /*! @param p Pointer to data containing the word */ static uint32_t blong (const uint8_t *p) { uint32_t n; n = p[0]; n = (n << 8) + p[1]; n = (n << 8) + p[2]; n = (n << 8) + p[3]; return n; } //! Return the big-endian 16 bit word at p. /*! @param p Pointer to data containing the word */ static uint32_t bword (const uint8_t *p) { uint32_t n; n = p[0]; n = (n << 8) + p[1]; return n; } //! Return the little-endian 16 bit word at p. /*! @param p Pointer to data containing the word */ static uint32_t lword (const uint8_t *p) { uint32_t n; n = p[1]; n = (n << 8) + p[0]; return n; } //! Mirror the bottom n bits of x. /*! @param x @param n */ static uint32_t mirror (uint32_t x, int n) { uint32_t top = 1 << (n-1), bottom = 1; while (top > bottom) { uint32_t mask = top | bottom; uint32_t masked = x & mask; if (masked != 0 && masked != mask) { x ^= mask; } top >>= 1; bottom <<= 1; } return x; } //! Initialises a bit stream with the first two bytes of the packed //! data. /*! @param bs Bit stream to be initialized @param p Pointer to start of memory block the bitstream is to traverse @param endpos Pointer to end of memory block the bitstream is to traverse */ static void bitread_init (bit_stream *bs, const uint8_t *p, const uint8_t* endpos) { bs->bitbuf = lword (p); bs->bitcount = 16; bs->p = p; bs->endpos = endpos; } //! Fixes up a bit stream after literals have been read out of the //! data stream and the pointer has been moved. /*! @param bs Bit stream to correct */ static void bitread_fix (bit_stream *bs) { // Remove the top 16 bits bs->bitcount -= 16; bs->bitbuf &= (1<bitcount)-1; // Replace with what is in the new current location // in the bit stream if(bs->p < bs->endpos) { bs->bitbuf |= (lword(bs->p)<bitcount); bs->bitcount += 16; } else if(bs->p == bs->endpos) { bs->bitbuf |= (*(bs->p)<bitcount); bs->bitcount += 8; } } //! Return a word consisting of the specified bits without advancing //! the bit stream. /*! @param bs Bit stream from which to peek @param mask A 32 bit bit mask specifying which bits to peek */ static uint32_t bit_peek (bit_stream *bs, const uint32_t mask) { return bs->bitbuf & mask; } //! Advances the bit stream. /*! @param bs Bit stream to advance @param n Number of bits to advance the stream. Must be between 0 and 16 */ static void bit_advance (bit_stream *bs, int n) { bs->bitbuf >>= n; bs->bitcount -= n; if (bs->bitcount < 16) { // At this point it is possible for bs->p to advance past // the end of the data. In that case we simply do not read // anything more into the buffer. If we are on the last // byte the lword matches what is in that byte. bs->p += 2; if(bs->p < bs->endpos) { bs->bitbuf |= (lword(bs->p)<bitcount); bs->bitcount += 16; } else if (bs->p == bs->endpos) { bs->bitbuf |= (*(bs->p)<bitcount); bs->bitcount += 8; } } } //! Returns bits from the bit stream matching the mask and advances it //! n places. /*! @param bs Bit stream to read @param mask A 32 bit bit mask specifying which bits to read @param n Number of bits to advance the stream. Must be between 0 and 16 */ static uint32_t bit_read (bit_stream *bs, uint32_t mask, int n) { uint32_t result = bit_peek(bs, mask); bit_advance(bs, n); return result; } //! Read a Huffman table out of the bit stream given. /*! @param h huf_table structure to populate @param bs Bit stream pointing to the start of the Huffman table description */ static void read_huftable(huf_table *h, bit_stream *bs) { int i, j, k, num; int leaflen[32]; int leafmax; uint32_t codeb; /* big-endian form of code. */ num = bit_read(bs, 0x1F, 5); if(num == 0) { return; } leafmax = 1; for(i = 0; i < num; i++) { leaflen[i] = bit_read(bs, 0x0F, 4); if (leafmax < leaflen[i]) { leafmax = leaflen[i]; } } codeb = 0L; k = 0; for(i = 1; i <= leafmax; i++) { for(j = 0; j < num; j++) { if(leaflen[j] == i) { h->table[k].code = mirror(codeb, i); h->table[k].codelen = i; h->table[k].value = j; codeb++; k++; } } codeb <<= 1; } h->num = k; } //! Read a value out of the bit stream using the given Huffman table. /*! @param h Huffman table to transcribe from @param bs bit stream @param p input data @return The value from the table with the matching bits, or -1 if none found. */ static uint32_t huf_read(huf_table *h, bit_stream *bs, const uint8_t **p) { int i; uint32_t val; uint32_t mask; // Find the current bits in the table for (i = 0; i < h->num; i++) { mask = (1 << h->table[i].codelen) - 1; if(bit_peek(bs, mask) == h->table[i].code) { break; } } // No match found in table (error) if(i == h->num) { return -1; } bit_advance(bs, h->table[i].codelen); val = h->table[i].value; if (val >= 2) { val = 1 << (val-1); val |= bit_read(bs, val-1, h->table[i].value - 1); } return val; } //! Decompresses RNC data /*! @param input Pointer to compressed RNC data @param output Pointer to allocated memory region to hold uncompressed data. The size of output must match the value specified in the 4 byte segment of the input header starting at the 4th byte in Big-endian. */ static rnc_status rnc_unpack(const uint8_t* input, uint8_t* output) { const uint8_t *inputend; uint8_t *outputend; bit_stream input_bs; huf_table raw = {0}, dist = {0}, len = {0}; uint32_t ch_count; uint32_t ret_len; uint32_t out_crc; if(blong(input) != rnc_signature) { return rnc_status::file_is_not_rnc; } ret_len = blong(input + 4); outputend = output + ret_len; inputend = input + 18 + blong(input + 8); //skip header input += 18; // Check the packed-data CRC. Also save the unpacked-data CRC // for later. if(rnc_crc(input, inputend-input) != bword(input - 4)) { return rnc_status::packed_crc_error; } out_crc = bword(input - 6); //initialize the bitstream to the input and advance past the //first two bytes as they don't have any understood use. bitread_init(&input_bs, input, inputend); bit_advance(&input_bs, 2); //process chunks while (output < outputend) { read_huftable(&raw, &input_bs); //raw byte length table read_huftable(&dist, &input_bs); //distance prior to copy table read_huftable(&len, &input_bs); //length bytes to copy table ch_count = bit_read(&input_bs, 0xFFFF, 16); while(true) { long length, posn; // Copy bit pattern to output based on lookup // of bytes from input. length = huf_read(&raw, &input_bs, &input); if(length == -1) { return rnc_status::huf_decode_error; } if(length) { while(length--) { *output++ = *(input_bs.p++); } bitread_fix(&input_bs); } if(--ch_count <= 0) { break; } // Read position to copy output to posn = huf_read(&dist, &input_bs, &input); if(posn == -1) { return rnc_status::huf_decode_error; } posn += 1; // Read length of output to copy back length = huf_read(&len, &input_bs, &input); if(length == -1) { return rnc_status::huf_decode_error; } length += 2; // Copy length bytes from output back posn while(length--) { *output = output[-posn]; output++; } } } if(outputend != output) { return rnc_status::file_size_mismatch; } // Check the unpacked-data CRC. if(rnc_crc(outputend - ret_len, ret_len) != out_crc) { return rnc_status::unpacked_crc_error; } return rnc_status::ok; } //! Provides lua function to decompress RNC data /*! @param L Lua state where the function is called from. In lua a call to this function has one parameter which is the RNC compressed data. The return value is the decompressed data. */ static int l_decompress(lua_State *L) { size_t inlen; const uint8_t* in = reinterpret_cast(luaL_checklstring(L, 1, &inlen)); // Verify that the data contains an RNC signature, and that the input // size matches the size specified in the data header. if(inlen < 18 || blong(in) != rnc_signature || blong(in + 8) != (inlen - 18)) { lua_pushnil(L); lua_pushliteral(L, "Input is not RNC compressed data"); return 2; } uint32_t outlen = blong(in + 4); // Allocate scratch area as Lua userdata so that if something horrible // happens, it'll be cleaned up by Lua's GC. Remember that most Lua API // calls can throw errors, so they all have to be wrapped with code to // detect errors and free the buffer if said buffer was not managed by Lua. void* outbuf = lua_newuserdata(L, outlen); lua_pushnil(L); switch(rnc_unpack(in, (uint8_t*)outbuf)) { case rnc_status::ok: lua_pushlstring(L, (const char*)outbuf, outlen); return 1; case rnc_status::file_is_not_rnc: lua_pushliteral(L, "Input is not RNC compressed data"); break; case rnc_status::huf_decode_error: lua_pushliteral(L, "Invalid Huffman coding"); break; case rnc_status::file_size_mismatch: lua_pushliteral(L, "Size mismatch"); break; case rnc_status::packed_crc_error: lua_pushliteral(L, "Incorrect packed CRC"); break; case rnc_status::unpacked_crc_error: lua_pushliteral(L, "Incorrect unpacked CRC"); break; default: lua_pushliteral(L, "Unknown error decompressing RNC data"); break; } return 2; } static const std::vector rnclib = { {"decompress", l_decompress}, {nullptr, nullptr} }; int luaopen_rnc(lua_State *L) { luaT_register(L, "rnc", rnclib); return 1; } CorsixTH-0.61/CorsixTH/Src/rnc.h000066400000000000000000000022611321660673500163420ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_RNC_H_ #define CORSIX_TH_RNC_H_ #include "lua.hpp" int luaopen_rnc(lua_State *L); #endif // CORSIX_TH_RNC_H_ CorsixTH-0.61/CorsixTH/Src/run_length_encoder.cpp000066400000000000000000000233161321660673500217630ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "run_length_encoder.h" #include "persist_lua.h" #include #include IntegerRunLengthEncoder::IntegerRunLengthEncoder() { m_pBuffer = nullptr; m_pOutput = nullptr; _clean(); } IntegerRunLengthEncoder::~IntegerRunLengthEncoder() { _clean(); } void IntegerRunLengthEncoder::_clean() { delete[] m_pBuffer; delete[] m_pOutput; m_pBuffer = nullptr; m_pOutput = nullptr; m_iRecordSize = 0; m_iBufferSize = 0; m_iBufferSizeUsed = 0; m_iBufferOffset = 0; m_iOutputSize = 0; m_iOutputSizeUsed = 0; m_iObjectSize = 0; m_iObjectCount = 0; } bool IntegerRunLengthEncoder::initialise(size_t iRecordSize) { _clean(); m_iRecordSize = iRecordSize; // Buffer must hold at least 7 + 2 * 8 records, as the maximum object size // is 8 records, 2 of which are needed to detect a repeat, and 7 for the // offset at which the objects are found. m_iBufferSize = iRecordSize * 8 * 4; m_iBufferSizeUsed = 0; m_iBufferOffset = 0; m_pBuffer = new (std::nothrow) uint32_t[m_iBufferSize]; if(!m_pBuffer) return false; m_iOutputSize = iRecordSize * 32; m_iOutputSizeUsed = 0; m_pOutput = new (std::nothrow) uint32_t[m_iOutputSize]; if(!m_pOutput) return false; m_iObjectSize = 0; m_iObjectCount = 0; return true; } void IntegerRunLengthEncoder::write(uint32_t iValue) { m_pBuffer[(m_iBufferOffset + m_iBufferSizeUsed) % m_iBufferSize] = iValue; if(++m_iBufferSizeUsed == m_iBufferSize) _flush(false); } void IntegerRunLengthEncoder::finish() { if(m_iBufferSizeUsed != 0) _flush(true); } void IntegerRunLengthEncoder::_flush(bool bAll) { do { if(m_iObjectSize == 0) { // Decide on the size of the next object // Want the object size which gives most object repeats, then for // two sizes with the same repeat count, the smaller size. size_t iBestRepeats = 0; size_t iBestSize = 0; size_t iBestOffset = 0; for(size_t iNumRecords = 1; iNumRecords <= 8; ++iNumRecords) { for(size_t iOffset = 0; iOffset < iNumRecords; ++iOffset) { size_t iNumRepeats = 0; size_t iObjSize = iNumRecords * m_iRecordSize; while(iObjSize * (iOffset + iNumRepeats + 1) <= m_iBufferSizeUsed && _areRangesEqual(0, iNumRepeats, iOffset, iObjSize)) { ++iNumRepeats; } if(iNumRepeats > iBestRepeats ||(iNumRepeats == iBestRepeats && iObjSize < iBestSize)) { iBestRepeats = iNumRepeats; iBestSize = iObjSize; iBestOffset = iOffset; } } } if(iBestRepeats == 1) { // No repeats were found, so the best we can do is output // a large non-repeating blob. _output(std::min(m_iBufferSizeUsed, 8 * m_iRecordSize), 1); } else { if(iBestOffset != 0) _output(iBestOffset * m_iRecordSize, 1); // Mark the object as the current one, and remove all but the // last instance of it from the buffer. On the next flush, the // new data might continue the same object, hence why the // object isn't output just yet. m_iObjectSize = iBestSize; m_iObjectCount = iBestRepeats - 1; m_iBufferOffset = (m_iBufferOffset + m_iObjectSize * m_iObjectCount) % m_iBufferSize; m_iBufferSizeUsed -= m_iObjectSize * m_iObjectCount; } } else { // Try to match more of the current object while(m_iObjectSize * 2 <= m_iBufferSizeUsed && _areRangesEqual(0, 1, 0, m_iObjectSize)) { ++m_iObjectCount; m_iBufferOffset = (m_iBufferOffset + m_iObjectSize) % m_iBufferSize; m_iBufferSizeUsed -= m_iObjectSize; } // Write data if(m_iObjectSize * 2 <= m_iBufferSizeUsed || bAll) { _output(m_iObjectSize, m_iObjectCount + 1); m_iObjectSize = 0; m_iObjectCount = 0; } } } while(bAll && m_iBufferSizeUsed != 0); } bool IntegerRunLengthEncoder::_areRangesEqual(size_t iObjIdx1, size_t iObjIdx2, size_t iOffset, size_t iObjSize) const { iObjIdx1 = m_iBufferOffset + iOffset * m_iRecordSize + iObjIdx1 * iObjSize; iObjIdx2 = m_iBufferOffset + iOffset * m_iRecordSize + iObjIdx2 * iObjSize; for(size_t i = 0; i < iObjSize; ++i) { if(m_pBuffer[(iObjIdx1 + i) % m_iBufferSize] != m_pBuffer[(iObjIdx2 + i) % m_iBufferSize]) { return false; } } return true; } bool IntegerRunLengthEncoder::_output(size_t iObjSize, size_t iObjCount) { // Grow the output array if needed if(m_iOutputSize - m_iOutputSizeUsed <= iObjSize) { size_t iNewSize = (m_iOutputSize + iObjSize) * 2; uint32_t *pNewOutput = new (std::nothrow) uint32_t[iNewSize]; if(!pNewOutput) return false; #ifdef _MSC_VER #pragma warning(disable: 4996) #endif std::copy(m_pOutput, m_pOutput + m_iOutputSizeUsed, pNewOutput); #ifdef _MSC_VER #pragma warning(default: 4996) #endif delete[] m_pOutput; m_pOutput = pNewOutput; m_iOutputSize = iNewSize; } size_t iHeader = (iObjSize / m_iRecordSize - 1) + 8 * (iObjCount - 1); m_pOutput[m_iOutputSizeUsed++] = static_cast(iHeader); // Move the object from the buffer to the output for(size_t i = 0; i < iObjSize; ++i) { m_pOutput[m_iOutputSizeUsed++] = m_pBuffer[m_iBufferOffset]; m_iBufferOffset = (m_iBufferOffset + 1) % m_iBufferSize; } m_iBufferSizeUsed -= iObjSize; return true; } uint32_t* IntegerRunLengthEncoder::getOutput(size_t *pCount) const { if(pCount) *pCount = m_iOutputSizeUsed; return m_pOutput; } void IntegerRunLengthEncoder::pumpOutput(LuaPersistWriter *pWriter) const { pWriter->writeVUInt(m_iOutputSizeUsed); for(size_t i = 0; i < m_iOutputSizeUsed; ++i) { pWriter->writeVUInt(m_pOutput[i]); } } IntegerRunLengthDecoder::IntegerRunLengthDecoder() { m_pBuffer = nullptr; _clean(); } IntegerRunLengthDecoder::~IntegerRunLengthDecoder() { _clean(); } void IntegerRunLengthDecoder::_clean() { delete[] m_pBuffer; m_pBuffer = nullptr; m_pReader = nullptr; m_pInput = nullptr; m_pInputEnd = nullptr; m_iNumReadsRemaining = 0; m_iRepeatCount = 0; m_iRecordSize = 0; m_iObjectIndex = 0; m_iObjectSize = 0; } bool IntegerRunLengthDecoder::initialise(size_t iRecordSize, LuaPersistReader *pReader) { _clean(); m_pBuffer = new (std::nothrow) uint32_t[9 * iRecordSize]; if(!m_pBuffer) return false; m_pReader = pReader; m_iRecordSize = iRecordSize; return pReader->readVUInt(m_iNumReadsRemaining); } bool IntegerRunLengthDecoder::initialise(size_t iRecordSize, const uint32_t *pInput, size_t iCount) { _clean(); m_pBuffer = new (std::nothrow) uint32_t[9 * iRecordSize]; if(!m_pBuffer) return false; m_pInput = pInput; m_pInputEnd = pInput + iCount; m_iRecordSize = iRecordSize; return true; } uint32_t IntegerRunLengthDecoder::read() { if(m_iRepeatCount == 0) { uint32_t iHeader = 0; if(m_pReader) { m_pReader->readVUInt(iHeader); --m_iNumReadsRemaining; } else iHeader = *(m_pInput++); m_iObjectSize = m_iRecordSize * (1 + (iHeader & 7)); m_iRepeatCount = (iHeader / 8) + 1; if(m_pReader) { for(size_t i = 0; i < m_iObjectSize; ++i) { m_pReader->readVUInt(m_pBuffer[i]); --m_iNumReadsRemaining; } } else { for(size_t i = 0; i < m_iObjectSize; ++i) m_pBuffer[i] = *(m_pInput++); } } uint32_t iValue = m_pBuffer[m_iObjectIndex]; if(++m_iObjectIndex == m_iObjectSize) { m_iObjectIndex = 0; --m_iRepeatCount; } return iValue; } bool IntegerRunLengthDecoder::isFinished() const { if(m_pReader) return m_iNumReadsRemaining == 0 && m_iRepeatCount == 0; else return m_pInput == m_pInputEnd && m_iRepeatCount == 0; } CorsixTH-0.61/CorsixTH/Src/run_length_encoder.h000066400000000000000000000110511321660673500214210ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_RLE_H_ #define CORSIX_TH_RLE_H_ #include "config.h" class LuaPersistReader; class LuaPersistWriter; //! Encoder for reducing the amount of space to store a sequence of integers /*! Designed primarily for reducing the amount of space taken up by persisting a THMap, this encoder transforms a sequence of integer records into a sequence of pairs, each pair having an integer object, and a repeat count. Terminology: * Integer - An unsigned integer (up to) 32 bits wide. * Record - One or more integers (for example, when encoding map nodes, each record would be 6 integers if a map node had 6 fields). * Object - One or more records. Each object has an associated repeat count. */ class IntegerRunLengthEncoder { public: IntegerRunLengthEncoder(); ~IntegerRunLengthEncoder(); //! (Re-)initialise the encoder /*! Prepares the encoder for accepting a sequence of records. \param iRecordSize The number of integers in a record. */ bool initialise(size_t iRecordSize); //! Supply the next integer in the input sequence to the encoder void write(uint32_t iValue); //! Inform the encoder that the input sequence has finished /*! finish() must be called prior to getOutput() or pumpOutput(). write() must not be called after finish() has been called. */ void finish(); uint32_t* getOutput(size_t *pCount) const; void pumpOutput(LuaPersistWriter *pWriter) const; private: void _clean(); //! Reduce the amount of data in the buffer /*! \param bAll If true, will reduce m_iBufferSizeUsed to zero. If false, will reduce m_iBufferSizeUsed by some amount. */ void _flush(bool bAll); bool _areRangesEqual(size_t iObjIdx1, size_t iObjIdx2, size_t iOffset, size_t iObjSize) const; bool _output(size_t iObjSize, size_t iObjCount); //! A circular fixed-size buffer holding the most recent input uint32_t* m_pBuffer; //! A variable-length array holding the output sequence uint32_t* m_pOutput; //! The number of integers in a record size_t m_iRecordSize; //! The maximum number of integers stored in the buffer size_t m_iBufferSize; //! The current number of integers stored in the buffer size_t m_iBufferSizeUsed; //! The index into m_pBuffer of the 1st integer size_t m_iBufferOffset; //! The maximum number of integers storable in the output (before the //! output array has to be resized). size_t m_iOutputSize; //! The current number of integers stored in the output size_t m_iOutputSizeUsed; //! The number of integers in the current object (multiple of record size) size_t m_iObjectSize; //! The number of copies of the current object already seen and removed //! from the buffer. size_t m_iObjectCount; }; class IntegerRunLengthDecoder { public: IntegerRunLengthDecoder(); ~IntegerRunLengthDecoder(); bool initialise(size_t iRecordSize, LuaPersistReader *pReader); bool initialise(size_t iRecordSize, const uint32_t *pInput, size_t iCount); uint32_t read(); bool isFinished() const; private: void _clean(); uint32_t* m_pBuffer; LuaPersistReader* m_pReader; const uint32_t* m_pInput; union { const uint32_t* m_pInputEnd; size_t m_iNumReadsRemaining; }; size_t m_iRepeatCount; size_t m_iRecordSize; size_t m_iObjectIndex; size_t m_iObjectSize; }; #endif // CORSIX_TH_RLE_H_ CorsixTH-0.61/CorsixTH/Src/sdl_audio.cpp000066400000000000000000000203131321660673500200540ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "lua_sdl.h" #ifdef CORSIX_TH_USE_SDL_MIXER #include "th_lua.h" #include "xmi2mid.h" #include #ifdef _MSC_VER #pragma comment(lib, "SDL2_mixer") #endif #include struct music_t { Mix_Music* pMusic; music_t() { pMusic = nullptr; } ~music_t() { if(pMusic) { Mix_FreeMusic(pMusic); pMusic = nullptr; } } }; static void audio_music_over_callback() { SDL_Event e; e.type = SDL_USEREVENT_MUSIC_OVER; SDL_PushEvent(&e); } static int l_init(lua_State *L) { if(Mix_OpenAudio(static_cast(luaL_optinteger(L, 1, MIX_DEFAULT_FREQUENCY)), MIX_DEFAULT_FORMAT, static_cast(luaL_optinteger(L, 2, MIX_DEFAULT_CHANNELS)), static_cast(luaL_optinteger(L, 3, 2048)) /* chunk size */) != 0) { lua_pushboolean(L, 0); lua_pushstring(L, Mix_GetError()); return 2; } else { lua_pushboolean(L, 1); Mix_HookMusicFinished(audio_music_over_callback); return 1; } } struct load_music_async_t { lua_State* L; Mix_Music* music; SDL_RWops* rwop; char* err; }; int l_load_music_async_callback(lua_State *L) { load_music_async_t *async = (load_music_async_t*)lua_touserdata(L, 1); // Replace light UD with full UD lua_pushvalue(L, 1); lua_gettable(L, LUA_REGISTRYINDEX); lua_insert(L, 1); lua_pushnil(L); lua_settable(L, LUA_REGISTRYINDEX); // Get CB function lua_pushvalue(L, 1); lua_gettable(L, LUA_REGISTRYINDEX); lua_rawgeti(L, -1, 1); // Push CB arguments int nargs = 1; if(async->music == nullptr) { lua_pushnil(L); if(async->err) { if(*async->err) { lua_pushstring(L, async->err); nargs = 2; } free(async->err); } } else { lua_rawgeti(L, 2, 2); music_t* pLMusic = (music_t*)lua_touserdata(L, -1); pLMusic->pMusic = async->music; async->music = nullptr; } // Finish cleanup lua_pushvalue(L, 1); lua_pushnil(L); lua_settable(L, LUA_REGISTRYINDEX); // Callback lua_call(L, nargs, 0); return 0; } static int load_music_async_thread(void* arg) { load_music_async_t *async = (load_music_async_t*)arg; async->music = Mix_LoadMUS_RW(async->rwop, 1); async->rwop = nullptr; if(async->music == nullptr) { size_t iLen = std::strlen(Mix_GetError()) + 1; async->err = (char*)malloc(iLen); std::memcpy(async->err, Mix_GetError(), iLen); } SDL_Event e; e.type = SDL_USEREVENT_MUSIC_LOADED; e.user.data1 = arg; SDL_PushEvent(&e); return 0; } static int l_load_music_async(lua_State *L) { size_t iLength; const uint8_t *pData = luaT_checkfile(L, 1, &iLength); luaL_checktype(L, 2, LUA_TFUNCTION); SDL_RWops* rwop = SDL_RWFromConstMem(pData, (int)iLength); lua_settop(L, 2); load_music_async_t *async = luaT_new(L, load_music_async_t); lua_pushlightuserdata(L, async); lua_pushvalue(L, -2); lua_settable(L, LUA_REGISTRYINDEX); async->L = L; async->music = nullptr; async->rwop = rwop; async->err = nullptr; lua_createtable(L, 2, 0); lua_pushvalue(L, 2); lua_rawseti(L, -2, 1); luaT_stdnew(L, luaT_environindex, true); lua_pushvalue(L, 1); luaT_setenvfield(L, -2, "data"); lua_rawseti(L, -2, 2); lua_settable(L, LUA_REGISTRYINDEX); /* In registry: [light userdata async] -> [full userdata async] [full userdata async] -> { [1] = callback_function, [2] = empty music_t userdata, } New thread will load music, and inform the main loop, which will then call the callback and remove the new entries from the registry. */ SDL_CreateThread(load_music_async_thread, "music_thread", async); return 0; } static int l_load_music(lua_State *L) { size_t iLength; const uint8_t *pData = luaT_checkfile(L, 1, &iLength); SDL_RWops* rwop = SDL_RWFromConstMem(pData, (int)iLength); Mix_Music* pMusic = Mix_LoadMUS_RW(rwop, 1); if(pMusic == nullptr) { lua_pushnil(L); lua_pushstring(L, Mix_GetError()); return 2; } music_t* pLMusic = luaT_stdnew(L, luaT_environindex, true); pLMusic->pMusic = pMusic; lua_pushvalue(L, 1); luaT_setenvfield(L, -2, "data"); return 1; } static int l_music_volume(lua_State *L) { lua_Number fValue = luaL_checknumber(L, 1); fValue = fValue * (lua_Number)MIX_MAX_VOLUME; int iVolume = (int)(fValue + 0.5); if(iVolume < 0) iVolume = 0; else if(iVolume > MIX_MAX_VOLUME) iVolume = MIX_MAX_VOLUME; Mix_VolumeMusic(iVolume); return 0; } static int l_play_music(lua_State *L) { music_t* pLMusic = luaT_testuserdata(L, -1); if(Mix_PlayMusic(pLMusic->pMusic, static_cast(luaL_optinteger(L, 2, 1))) != 0) { lua_pushnil(L); lua_pushstring(L, Mix_GetError()); return 2; } lua_pushboolean(L, 1); return 1; } static int l_pause_music(lua_State *L) { Mix_PauseMusic(); lua_pushboolean(L, Mix_PausedMusic() != 0 ? 1 : 0); return 1; } static int l_resume_music(lua_State *L) { Mix_ResumeMusic(); lua_pushboolean(L, Mix_PausedMusic() == 0 ? 1 : 0); return 1; } static int l_stop_music(lua_State *L) { Mix_HaltMusic(); return 0; } static int l_transcode_xmi(lua_State *L) { size_t iLength, iMidLength; const uint8_t *pData = luaT_checkfile(L, 1, &iLength); uint8_t *pMidData = TranscodeXmiToMid(pData, iLength, &iMidLength); if(pMidData == nullptr) { lua_pushnil(L); lua_pushliteral(L, "Unable to transcode XMI to MIDI"); return 2; } lua_pushlstring(L, (const char*)pMidData, iMidLength); delete[] pMidData; return 1; } static const struct luaL_Reg sdl_audiolib[] = { {"init", l_init}, {"transcodeXmiToMid", l_transcode_xmi}, {nullptr, nullptr} }; static const struct luaL_Reg sdl_musiclib[] = { {"loadMusic", l_load_music}, {"loadMusicAsync", l_load_music_async}, {"playMusic", l_play_music}, {"stopMusic", l_stop_music}, {"pauseMusic", l_pause_music}, {"resumeMusic", l_resume_music}, {"setMusicVolume", l_music_volume}, {nullptr, nullptr} }; int luaopen_sdl_audio(lua_State *L) { lua_newtable(L); luaT_setfuncs(L, sdl_audiolib); lua_pushboolean(L, 1); lua_setfield(L, -2, "loaded"); lua_createtable(L, 0, 2); lua_pushvalue(L, -1); lua_replace(L, luaT_environindex); lua_pushvalue(L, luaT_environindex); luaT_pushcclosure(L, luaT_stdgc, 1); lua_setfield(L, -2, "__gc"); lua_pushvalue(L, 1); lua_setfield(L, -2, "__index"); lua_pop(L, 1); luaT_setfuncs(L, sdl_musiclib); return 1; } #else // CORSIX_TH_USE_SDL_MIXER int luaopen_sdl_audio(lua_State *L) { lua_newtable(L); lua_pushboolean(L, 0); lua_setfield(L, -2, "loaded"); return 1; } int l_load_music_async_callback(lua_State *L) { return 0; } #endif // CORSIX_TH_USE_SDL_MIXER CorsixTH-0.61/CorsixTH/Src/sdl_core.cpp000066400000000000000000000304751321660673500177150ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "lua_sdl.h" #include "th_lua.h" #include #include #include static int l_init(lua_State *L) { Uint32 flags = 0; int i; int argc = lua_gettop(L); for(i = 1; i <= argc; ++i) { const char* s = luaL_checkstring(L, i); if(std::strcmp(s, "video") == 0) flags |= SDL_INIT_VIDEO; else if(std::strcmp(s, "audio") == 0) flags |= SDL_INIT_AUDIO; else if(std::strcmp(s, "timer") == 0) flags |= SDL_INIT_TIMER; else if(std::strcmp(s, "*") == 0) flags |= SDL_INIT_EVERYTHING; else luaL_argerror(L, i, "Expected SDL part name"); } if(SDL_Init(flags) != 0) { std::fprintf(stderr, "SDL_Init failed: %s\n", SDL_GetError()); lua_pushboolean(L, 0); return 1; } lua_pushboolean(L, 1); return 1; } static Uint32 timer_frame_callback(Uint32 interval, void *param) { SDL_Event e; e.type = SDL_USEREVENT_TICK; SDL_PushEvent(&e); return interval; } struct fps_ctrl { bool limit_fps; bool track_fps; int q_front; int q_back; int frame_count; Uint32 frame_time[4096]; void init() { limit_fps = true; track_fps = true; q_front = 0; q_back = 0; frame_count = 0; } void count_frame() { Uint32 now = SDL_GetTicks(); frame_time[q_front] = now; q_front = (q_front + 1) % static_cast((sizeof(frame_time) / sizeof(*frame_time))); if(q_front == q_back) q_back = (q_back + 1) % static_cast((sizeof(frame_time) / sizeof(*frame_time))); else ++frame_count; if(now < 1000) now = 0; else now -= 1000; while(frame_time[q_back] < now) { --frame_count; q_back = (q_back + 1) % static_cast((sizeof(frame_time) / sizeof(*frame_time))); } } }; static void l_push_modifiers_table(lua_State *L, Uint16 mod) { lua_newtable(L); if ((mod & KMOD_SHIFT) != 0) { luaT_pushtablebool(L, "shift", true); } if ((mod & KMOD_ALT) != 0) { luaT_pushtablebool(L, "alt", true); } if ((mod & KMOD_CTRL) != 0) { luaT_pushtablebool(L, "ctrl", true); } if ((mod & KMOD_GUI) != 0) { luaT_pushtablebool(L, "gui", true); } if ((mod & KMOD_NUM) != 0) { luaT_pushtablebool(L, "numlockactive", true); } } static int l_get_key_modifiers(lua_State *L) { l_push_modifiers_table(L, SDL_GetModState()); return 1; } static int l_mainloop(lua_State *L) { luaL_checktype(L, 1, LUA_TTHREAD); lua_State *dispatcher = lua_tothread(L, 1); fps_ctrl *fps_control = (fps_ctrl*)lua_touserdata(L, luaT_upvalueindex(1)); SDL_TimerID timer = SDL_AddTimer(30, timer_frame_callback, nullptr); SDL_Event e; while(SDL_WaitEvent(&e) != 0) { bool do_frame = false; bool do_timer = false; do { int nargs; switch(e.type) { case SDL_QUIT: goto leave_loop; case SDL_KEYDOWN: lua_pushliteral(dispatcher, "keydown"); lua_pushstring(dispatcher, SDL_GetKeyName(e.key.keysym.sym)); l_push_modifiers_table(dispatcher, e.key.keysym.mod); lua_pushboolean(dispatcher, e.key.repeat != 0); nargs = 4; break; case SDL_KEYUP: lua_pushliteral(dispatcher, "keyup"); lua_pushstring(dispatcher, SDL_GetKeyName(e.key.keysym.sym)); nargs = 2; break; case SDL_TEXTINPUT: lua_pushliteral(dispatcher, "textinput"); lua_pushstring(dispatcher, e.text.text); nargs = 2; break; case SDL_TEXTEDITING: lua_pushliteral(dispatcher, "textediting"); lua_pushstring(dispatcher, e.edit.text); lua_pushinteger(dispatcher, e.edit.start); lua_pushinteger(dispatcher, e.edit.length); nargs = 4; break; case SDL_MOUSEBUTTONDOWN: lua_pushliteral(dispatcher, "buttondown"); lua_pushinteger(dispatcher, e.button.button); lua_pushinteger(dispatcher, e.button.x); lua_pushinteger(dispatcher, e.button.y); nargs = 4; break; case SDL_MOUSEBUTTONUP: lua_pushliteral(dispatcher, "buttonup"); lua_pushinteger(dispatcher, e.button.button); lua_pushinteger(dispatcher, e.button.x); lua_pushinteger(dispatcher, e.button.y); nargs = 4; break; case SDL_MOUSEWHEEL: lua_pushliteral(dispatcher, "mousewheel"); lua_pushinteger(dispatcher, e.wheel.x); lua_pushinteger(dispatcher, e.wheel.y); nargs = 3; break; case SDL_MOUSEMOTION: lua_pushliteral(dispatcher, "motion"); lua_pushinteger(dispatcher, e.motion.x); lua_pushinteger(dispatcher, e.motion.y); lua_pushinteger(dispatcher, e.motion.xrel); lua_pushinteger(dispatcher, e.motion.yrel); nargs = 5; break; case SDL_MULTIGESTURE: lua_pushliteral(dispatcher, "multigesture"); lua_pushinteger(dispatcher, e.mgesture.numFingers); lua_pushnumber(dispatcher, e.mgesture.dTheta); lua_pushnumber(dispatcher, e.mgesture.dDist); lua_pushnumber(dispatcher, e.mgesture.x); lua_pushnumber(dispatcher, e.mgesture.y); nargs = 6; break; case SDL_WINDOWEVENT: switch (e.window.event) { case SDL_WINDOWEVENT_FOCUS_GAINED: lua_pushliteral(dispatcher, "active"); lua_pushinteger(dispatcher, 1); nargs = 2; break; case SDL_WINDOWEVENT_FOCUS_LOST: lua_pushliteral(dispatcher, "active"); lua_pushinteger(dispatcher, 0); nargs = 2; break; case SDL_WINDOWEVENT_SIZE_CHANGED: lua_pushliteral(dispatcher, "window_resize"); lua_pushinteger(dispatcher, e.window.data1); lua_pushinteger(dispatcher, e.window.data2); nargs = 3; break; default: nargs = 0; break; } break; case SDL_USEREVENT_MUSIC_OVER: lua_pushliteral(dispatcher, "music_over"); nargs = 1; break; case SDL_USEREVENT_MUSIC_LOADED: if(luaT_cpcall(L, (lua_CFunction)l_load_music_async_callback, e.user.data1)) { SDL_RemoveTimer(timer); lua_pushliteral(L, "callback"); return 2; } nargs = 0; break; case SDL_USEREVENT_TICK: do_timer = true; nargs = 0; break; case SDL_USEREVENT_MOVIE_OVER: lua_pushliteral(dispatcher, "movie_over"); nargs = 1; break; case SDL_USEREVENT_SOUND_OVER: lua_pushliteral(dispatcher, "sound_over"); lua_pushinteger(dispatcher, *(static_cast(e.user.data1))); nargs = 2; break; default: nargs = 0; break; } if(nargs != 0) { if(luaT_resume(dispatcher, dispatcher, nargs) != LUA_YIELD) { goto leave_loop; } do_frame = do_frame || (lua_toboolean(dispatcher, 1) != 0); lua_settop(dispatcher, 0); } } while(SDL_PollEvent(&e) != 0); if(do_timer) { lua_pushliteral(dispatcher, "timer"); if(luaT_resume(dispatcher, dispatcher, 1) != LUA_YIELD) { break; } do_frame = do_frame || (lua_toboolean(dispatcher, 1) != 0); lua_settop(dispatcher, 0); } if(do_frame || !fps_control->limit_fps) { do { if(fps_control->track_fps) { fps_control->count_frame(); } lua_pushliteral(dispatcher, "frame"); if(luaT_resume(dispatcher, dispatcher, 1) != LUA_YIELD) { goto leave_loop; } lua_settop(dispatcher, 0); } while(fps_control->limit_fps == false && SDL_PollEvent(nullptr) == 0); } // No events pending - a good time to do a bit of garbage collection lua_gc(L, LUA_GCSTEP, 2); } leave_loop: SDL_RemoveTimer(timer); int n = lua_gettop(dispatcher); if(lua_status(dispatcher) >= LUA_ERRRUN) { n = 1; } lua_checkstack(L, n); lua_xmove(dispatcher, L, n); return n; } static int l_track_fps(lua_State *L) { fps_ctrl *ctrl = (fps_ctrl*)lua_touserdata(L, luaT_upvalueindex(1)); ctrl->track_fps = lua_isnone(L, 1) ? true : (lua_toboolean(L, 1) != 0); return 0; } static int l_limit_fps(lua_State *L) { fps_ctrl *ctrl = (fps_ctrl*)lua_touserdata(L, luaT_upvalueindex(1)); ctrl->limit_fps = lua_isnone(L, 1) ? true : (lua_toboolean(L, 1) != 0); return 0; } static int l_get_fps(lua_State *L) { fps_ctrl *ctrl = (fps_ctrl*)lua_touserdata(L, luaT_upvalueindex(1)); if(ctrl->track_fps) { lua_pushinteger(L, ctrl->frame_count); } else { lua_pushnil(L); } return 1; } static int l_get_ticks(lua_State *L) { lua_pushinteger(L, (lua_Integer)SDL_GetTicks()); return 1; } static const std::vector sdllib = { {"init", l_init}, {"getTicks", l_get_ticks}, {"getKeyModifiers", l_get_key_modifiers}, {nullptr, nullptr} }; static const std::vector sdllib_with_upvalue = { {"mainloop", l_mainloop}, {"getFPS", l_get_fps}, {"trackFPS", l_track_fps}, {"limitFPS", l_limit_fps}, {nullptr, nullptr} }; inline void load_extra(lua_State *L, const char *name, lua_CFunction fn) { luaT_pushcfunction(L, fn); lua_call(L, 0, 1); lua_setfield(L, -2, name); } int luaopen_sdl_audio(lua_State *L); int luaopen_sdl_wm(lua_State *L); int luaopen_sdl(lua_State *L) { fps_ctrl* ctrl = (fps_ctrl*)lua_newuserdata(L, sizeof(fps_ctrl)); ctrl->init(); luaT_register(L, "sdl", sdllib); for (auto reg = sdllib_with_upvalue.begin(); reg->name; ++reg) { lua_pushvalue(L, -2); luaT_pushcclosure(L, reg->func, 1); lua_setfield(L, -2, reg->name); } load_extra(L, "audio", luaopen_sdl_audio); load_extra(L, "wm", luaopen_sdl_wm); return 1; } CorsixTH-0.61/CorsixTH/Src/sdl_wm.cpp000066400000000000000000000046371321660673500174110ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_lua.h" #include "lua_sdl.h" #ifdef CORSIX_TH_USE_WIN32_SDK #include #include #include "../resource.h" #endif static int l_set_icon_win32(lua_State *L) { // Hack to set the window icon from the EXE resource under Windows. // Does nothing (and returns false) on other platforms. lua_pushboolean(L, 0); #if 0 // XXX: Doesn't work any more, since window is inside renderer. Move to renderer. SDL_SysWMinfo oWindowInfo; oWindowInfo.version.major = SDL_MAJOR_VERSION; oWindowInfo.version.minor = SDL_MINOR_VERSION; oWindowInfo.version.patch = SDL_PATCHLEVEL; if(SDL_GetWindowWMInfo(window,&oWindowInfo) == 1) { HWND hWindow = oWindowInfo.info.win.window; HICON hIcon = LoadIcon((HINSTANCE)GetModuleHandle(nullptr), (LPCTSTR)IDI_CORSIXTH); SetClassLongPtr(hWindow, GCLP_HICON, (LONG_PTR)hIcon); SetClassLongPtr(hWindow, GCLP_HICONSM, (LONG_PTR)hIcon); lua_pushboolean(L, 1); } #endif return 1; } static int l_show_cursor(lua_State *L) { SDL_ShowCursor(lua_toboolean(L, 1)); return 0; } static const struct luaL_Reg sdl_wmlib[] = { {"setIconWin32", l_set_icon_win32}, {"showCursor", l_show_cursor}, {nullptr, nullptr} }; int luaopen_sdl_wm(lua_State *L) { lua_newtable(L); luaT_setfuncs(L, sdl_wmlib); return 1; } CorsixTH-0.61/CorsixTH/Src/th.cpp000066400000000000000000000146471321660673500165410ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th.h" #include #include THLinkList::THLinkList() { m_drawingLayer = 0; m_pPrev = nullptr; m_pNext = nullptr; } THLinkList::~THLinkList() { removeFromList(); } void THLinkList::removeFromList() { if(m_pPrev != nullptr) { m_pPrev->m_pNext = m_pNext; } if(m_pNext != nullptr) { m_pNext->m_pPrev = m_pPrev; m_pNext = nullptr; } m_pPrev = nullptr; } #include "cp437_table.h" #include "cp936_table.h" static void utf8encode(uint8_t*& sOut, uint32_t iCodepoint) { if(iCodepoint <= 0x7F) { *sOut = static_cast(iCodepoint); ++sOut; } else if(iCodepoint <= 0x7FF) { uint8_t cSextet = iCodepoint & 0x3F; iCodepoint >>= 6; sOut[0] = static_cast(0xC0 + iCodepoint); sOut[1] = static_cast(0x80 + cSextet); sOut += 2; } else if(iCodepoint <= 0xFFFF) { uint8_t cSextet2 = iCodepoint & 0x3F; iCodepoint >>= 6; uint8_t cSextet1 = iCodepoint & 0x3F; iCodepoint >>= 6; sOut[0] = static_cast(0xE0 + iCodepoint); sOut[1] = static_cast(0x80 + cSextet1); sOut[2] = static_cast(0x80 + cSextet2); sOut += 3; } else { uint8_t cSextet3 = iCodepoint & 0x3F; iCodepoint >>= 6; uint8_t cSextet2 = iCodepoint & 0x3F; iCodepoint >>= 6; uint8_t cSextet1 = iCodepoint & 0x3F; iCodepoint >>= 6; sOut[0] = static_cast(0xF0 + iCodepoint); sOut[1] = static_cast(0x80 + cSextet1); sOut[2] = static_cast(0x80 + cSextet2); sOut[3] = static_cast(0x80 + cSextet3); sOut += 4; } } static void CopyStringCP437(const uint8_t*& sIn, uint8_t*& sOut) { uint8_t cChar; do { cChar = *sIn; ++sIn; if(cChar < 0x80) { *sOut = cChar; ++sOut; } else { utf8encode(sOut, g_aCP437toUnicode[cChar - 0x80]); } } while(cChar != 0); } static void CopyStringCP936(const uint8_t*& sIn, uint8_t*& sOut) { uint8_t cChar1, cChar2; do { cChar1 = *sIn; ++sIn; if(cChar1 < 0x81 || cChar1 == 0xFF) { *sOut = cChar1; ++sOut; } else { cChar2 = *sIn; ++sIn; if(0x40 <= cChar2 && cChar2 <= 0xFE) { utf8encode(sOut, g_aCP936toUnicode[cChar1-0x81][cChar2-0x40]); // The Theme Hospital string tables seem to like following a // multibyte character with a superfluous space. cChar2 = *sIn; if(cChar2 == ' ') ++sIn; } else { *sOut = cChar1; ++sOut; *sOut = cChar2; ++sOut; } } } while(cChar1 != 0); } THStringList::THStringList(const uint8_t* data, size_t length) { if(length < 2) throw std::invalid_argument("length must be 2 or larger"); size_t iSectionCount = *reinterpret_cast(data); size_t iHeaderLength = (iSectionCount + 1) * 2; if(length < iHeaderLength) throw std::invalid_argument("iDataLength must be larger than the header"); size_t iStringDataLength = length - iHeaderLength; const uint8_t *sStringData = data + iHeaderLength; const uint8_t *sDataEnd = sStringData + iStringDataLength; // Determine whether the encoding is CP437 or GB2312 (CP936). // The range of bytes 0xB0 through 0xDF are box drawing characters in CP437 // which shouldn't occur much (if ever) in TH strings, whereas they are // commonly used in GB2312 encoding. We use 10% as a threshold. size_t iBCDCount = 0; for(size_t i = 0; i < iStringDataLength; ++i) { if(0xB0 <= sStringData[i] && sStringData[i] <= 0xDF) ++iBCDCount; } void (*fnCopyString)(const uint8_t*&, uint8_t*&); if(iBCDCount * 10 >= iStringDataLength) fnCopyString = CopyStringCP936; else fnCopyString = CopyStringCP437; // String buffer sized to accept the largest possible reencoding of the // characters interpreted as CP936 or CP437 (2 bytes per character). string_buffer.resize(iStringDataLength * 2 + 2); uint8_t *sDataOut = string_buffer.data(); sections.resize(iSectionCount); for(size_t i = 0; i < iSectionCount; ++i) { size_t section_size = reinterpret_cast(data)[i + 1]; sections[i].reserve(section_size); for(size_t j = 0; j < section_size; ++j) { sections[i].push_back(reinterpret_cast(sDataOut)); if(sStringData != sDataEnd) { fnCopyString(sStringData, sDataOut); } } } // Terminate final string with nil character *sDataOut = 0; } THStringList::~THStringList() {} size_t THStringList::getSectionCount() { return sections.size(); } size_t THStringList::getSectionSize(size_t section) { return section < sections.size() ? sections[section].size() : 0; } const char* THStringList::getString(size_t section, size_t index) { if(index < getSectionSize(section)) { return sections[section][index]; } return nullptr; } CorsixTH-0.61/CorsixTH/Src/th.h000066400000000000000000000063121321660673500161740ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_H_ #define CORSIX_TH_TH_H_ #include "config.h" #include //! Generic linked list class (for inheriting from) struct THLinkList { THLinkList() ; ~THLinkList(); THLinkList* m_pPrev; THLinkList* m_pNext; void removeFromList(); int getDrawingLayer() {return m_drawingLayer;} void setDrawingLayer(int layer) {m_drawingLayer = layer;} int m_drawingLayer; }; //! \brief Theme Hospital localised string list //! //! Presents Theme Hospital strings by section and index. class THStringList { public: //! Construct an instance of THStringList from the given data //! from a Theme Hosptial string file. The format of the data is //! described at: //! https://github.com/alexandergitter/theme-hospital-spec/blob/master/format-specification.md#strings //! //! \param data A pointer to the raw data //! \param length The size of the data THStringList(const uint8_t* data, size_t length); // Delete default constructors and assignment operators. They // can be implemented properly later if they are needed but // for now they are unneeded so it is safer to remove them. THStringList() = delete; THStringList(const THStringList &) = delete; THStringList(THStringList &&) = delete; THStringList& operator= (const THStringList &) = delete; THStringList&& operator= (THStringList &&) = delete; ~THStringList(); //! Get the number of sections in the string list size_t getSectionCount(); //! Get the number of strings in a section of the string list size_t getSectionSize(size_t section); //! Get a string from the string list /*! @param section Section index in range [0, getSectionCount() - 1] @param index String index in range [0, getSectionSize(iSection) - 1] @return nullptr if the index is invalid, otherwise a UTF-8 encoded string. */ const char* getString(size_t section, size_t index); private: //! Section information std::vector> sections; //! Memory block containing all the actual strings utf-8 encoded std::vector string_buffer; }; #endif // CORSIX_TH_TH_H_ CorsixTH-0.61/CorsixTH/Src/th_gfx.cpp000066400000000000000000001601361321660673500174000ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_gfx.h" #include "persist_lua.h" #include "th_map.h" #include "th_sound.h" #include #include #include #include #include /** Data retrieval class, simulating sequential access to the data, keeping track of available length. */ class Input { public: Input(const uint8_t *pData, size_t iLength) { m_pData = pData; m_iLength = iLength; } const uint8_t *m_pData; ///< Pointer to the remaining data. size_t m_iLength; ///< Remaining number of bytes. //! Can \a iSize bytes be read from the file? /*! @param iSize Number of bytes that are queried. @return Whether the requested number of bytes is still available. */ inline bool Available(size_t iSize) { return iSize <= m_iLength; } //! Is EOF reached? /*! @return Whether EOF has been reached. */ inline bool AtEOF() { return m_iLength == 0; } //! Get an 8 bit value from the file. /*! @return Read 8 bit value. @pre There should be at least a byte available for reading. */ inline uint8_t Uint8() { assert(m_iLength > 0); uint8_t iVal = *m_pData; m_pData++; m_iLength--; return iVal; } //! Get a 16 bit value from the file. /*! @return Read 16 bit value. @pre There should be at least 2 bytes available for reading. */ inline uint16_t Uint16() { uint16_t iVal = Uint8(); uint16_t iVal2 = Uint8(); return static_cast(iVal | (iVal2 << 8)); } //! Get a signed 16 bit value from the file. /*! @return The read signed 16 bit value. @pre There should be at least 2 bytes available for reading. */ inline int Int16() { int val = Uint16(); if (val < 0x7FFF) return val; int ret = -1; return (ret & ~0xFFFF) | val; } //! Get a 32 bit value from the file. /*! @return Read 32 bit value. @pre There should be at least 4 bytes available for reading. */ inline uint32_t Uint32() { uint32_t iVal = Uint16(); uint32_t iVal2 = Uint16(); return iVal | (iVal2 << 16); } //! Load string from the input. /*! @param [out] pStr String to load. @return Whether the string could be loaded. */ inline bool String(std::string *pStr) { char buff[256]; if (AtEOF()) return false; size_t iLength = Uint8(); if (!Available(iLength)) return false; size_t idx; for (idx = 0; idx < iLength; idx++) buff[idx] = Uint8(); buff[idx] = '\0'; *pStr = std::string(buff); return true; } }; THAnimationManager::THAnimationManager() { m_vFirstFrames.clear(); m_vFrames.clear(); m_vElementList.clear(); m_vElements.clear(); m_vCustomSheets.clear(); m_pSpriteSheet = nullptr; m_iAnimationCount = 0; m_iFrameCount = 0; m_iElementListCount = 0; m_iElementCount = 0; } THAnimationManager::~THAnimationManager() { for (size_t i = 0; i < m_vCustomSheets.size(); i++) delete m_vCustomSheets[i]; } void THAnimationManager::setSpriteSheet(THSpriteSheet* pSpriteSheet) { m_pSpriteSheet = pSpriteSheet; } bool THAnimationManager::loadFromTHFile( const uint8_t* pStartData, size_t iStartDataLength, const uint8_t* pFrameData, size_t iFrameDataLength, const uint8_t* pListData, size_t iListDataLength, const uint8_t* pElementData, size_t iElementDataLength) { size_t iAnimationCount = iStartDataLength / sizeof(th_anim_t); size_t iFrameCount = iFrameDataLength / sizeof(th_frame_t); size_t iListCount = iListDataLength / 2; size_t iElementCount = iElementDataLength / sizeof(th_element_t); if(iAnimationCount == 0 || iFrameCount == 0 || iListCount == 0 || iElementCount == 0) return false; // Start offset of the file data into the vectors. size_t iAnimationStart = m_iAnimationCount; size_t iFrameStart = m_iFrameCount; size_t iListStart = m_iElementListCount; size_t iElementStart = m_iElementCount; // Original data file cannot must start at offset 0 due to the hard-coded animation numbers in the Lua code. if (iAnimationStart > 0 || iFrameStart > 0 || iListStart > 0 || iElementStart > 0) return false; if (iElementStart + iElementCount >= 0xFFFF) // Overflow of list elements. return false; // Create new space for the data. m_vFirstFrames.reserve(iAnimationStart + iAnimationCount); m_vFrames.reserve(iFrameStart + iFrameCount); m_vElementList.reserve(iListStart + iListCount + 1); m_vElements.reserve(iElementStart + iElementCount); // Read animations. for(size_t i = 0; i < iAnimationCount; ++i) { size_t iFirstFrame = reinterpret_cast(pStartData)[i].frame; if(iFirstFrame > iFrameCount) iFirstFrame = 0; iFirstFrame += iFrameStart; m_vFirstFrames.push_back(iFirstFrame); } // Read frames. for(size_t i = 0; i < iFrameCount; ++i) { const th_frame_t* pFrame = reinterpret_cast(pFrameData) + i; frame_t oFrame; oFrame.iListIndex = iListStart + (pFrame->list_index < iListCount ? pFrame->list_index : 0); oFrame.iNextFrame = iFrameStart + (pFrame->next < iFrameCount ? pFrame->next : 0); oFrame.iSound = pFrame->sound; oFrame.iFlags = pFrame->flags; // Bounding box fields initialised later oFrame.iMarkerX = 0; oFrame.iMarkerY = 0; oFrame.iSecondaryMarkerX = 0; oFrame.iSecondaryMarkerY = 0; m_vFrames.push_back(oFrame); } // Read element list. for(size_t i = 0; i < iListCount; ++i) { uint16_t iElmNumber = *(reinterpret_cast(pListData) + i); if (iElmNumber >= iElementCount) { iElmNumber = 0xFFFF; } else { iElmNumber = static_cast(iElmNumber + iElementStart); } m_vElementList.push_back(iElmNumber); } m_vElementList.push_back(0xFFFF); // Read elements. size_t iSpriteCount = m_pSpriteSheet->getSpriteCount(); for(size_t i = 0; i < iElementCount; ++i) { const th_element_t* pTHElement = reinterpret_cast(pElementData) + i; element_t oElement; oElement.iSprite = pTHElement->table_position / 6; oElement.iFlags = pTHElement->flags & 0xF; oElement.iX = static_cast(pTHElement->offx) - 141; oElement.iY = static_cast(pTHElement->offy) - 186; oElement.iLayer = static_cast(pTHElement->flags >> 4); // High nibble, layer of the element. if(oElement.iLayer > 12) oElement.iLayer = 6; // Nothing lives on layer 6 oElement.iLayerId = pTHElement->layerid; if (oElement.iSprite < iSpriteCount) { oElement.pSpriteSheet = m_pSpriteSheet; } else { oElement.pSpriteSheet = nullptr; } m_vElements.push_back(oElement); } // Compute bounding box of the animations using the sprite sheet. for(size_t i = 0; i < iFrameCount; ++i) { setBoundingBox(m_vFrames[iFrameStart + i]); } m_iAnimationCount += iAnimationCount; m_iFrameCount += iFrameCount; m_iElementListCount += iListCount + 1; m_iElementCount += iElementCount; assert(m_vFirstFrames.size() == m_iAnimationCount); assert(m_vFrames.size() == m_iFrameCount); assert(m_vElementList.size() == m_iElementListCount); assert(m_vElements.size() == m_iElementCount); return true; } //! Update \a iLeft with the smallest of both values. /*! @param [inout] iLeft Left value to check and update. @param iRight Second value to check. */ inline static void _setmin(int& iLeft, int iRight) { if(iRight < iLeft) iLeft = iRight; } //! Update \a iLeft with the biggest of both values. /*! @param [inout] iLeft Left value to check and update. @param iRight Second value to check. */ inline static void _setmax(int& iLeft, int iRight) { if(iRight > iLeft) iLeft = iRight; } void THAnimationManager::setBoundingBox(frame_t &oFrame) { oFrame.iBoundingLeft = INT_MAX; oFrame.iBoundingRight = INT_MIN; oFrame.iBoundingTop = INT_MAX; oFrame.iBoundingBottom = INT_MIN; size_t iListIndex = oFrame.iListIndex; for(; ; ++iListIndex) { uint16_t iElement = m_vElementList[iListIndex]; if(iElement >= m_vElements.size()) break; element_t& oElement = m_vElements[iElement]; if(oElement.pSpriteSheet == nullptr) continue; unsigned int iWidth, iHeight; oElement.pSpriteSheet->getSpriteSizeUnchecked(oElement.iSprite, &iWidth, &iHeight); _setmin(oFrame.iBoundingLeft , oElement.iX); _setmin(oFrame.iBoundingTop , oElement.iY); _setmax(oFrame.iBoundingRight , oElement.iX - 1 + (int)iWidth); _setmax(oFrame.iBoundingBottom, oElement.iY - 1 + (int)iHeight); } } void THAnimationManager::setCanvas(THRenderTarget *pCanvas) { m_pCanvas = pCanvas; } //! Load the header. /*! @param [inout] input Data to read. @return Number of consumed bytes, a negative number indicates an error. */ static int loadHeader(Input &input) { static const uint8_t aHdr[] = {'C', 'T', 'H', 'G', 1, 2}; if (!input.Available(6)) return false; for (int i = 0; i < 6; i++) { if (input.Uint8() != aHdr[i]) return false; } return true; } size_t THAnimationManager::loadElements(Input &input, THSpriteSheet *pSpriteSheet, size_t iNumElements, size_t &iLoadedElements, size_t iElementStart, size_t iElementCount) { size_t iFirst = iLoadedElements + iElementStart; size_t iSpriteCount = pSpriteSheet->getSpriteCount(); while (iNumElements > 0) { if (iLoadedElements >= iElementCount || !input.Available(12)) return SIZE_MAX; size_t iSprite = input.Uint32(); int iX = input.Int16(); int iY = input.Int16(); uint8_t iLayerClass = input.Uint8(); uint8_t iLayerId = input.Uint8(); uint32_t iFlags = input.Uint16(); if (iLayerClass > 12) iLayerClass = 6; // Nothing lives on layer 6 element_t oElement; oElement.iSprite = iSprite; oElement.iFlags = iFlags; oElement.iX = iX; oElement.iY = iY; oElement.iLayer = iLayerClass; oElement.iLayerId = iLayerId; if (oElement.iSprite >= iSpriteCount) oElement.pSpriteSheet = nullptr; else oElement.pSpriteSheet = pSpriteSheet; m_vElements.push_back(oElement); iLoadedElements++; iNumElements--; } return iFirst; } size_t THAnimationManager::makeListElements(size_t iFirstElement, size_t iNumElements, size_t &iLoadedListElements, size_t iListStart, size_t iListCount) { size_t iFirst = iLoadedListElements + iListStart; // Verify there is enough room for all list elements + 0xFFFF if (iLoadedListElements + iNumElements + 1 > iListCount) return SIZE_MAX; assert(iFirstElement + iNumElements < 0xFFFF); // Overflow for list elements. while (iNumElements > 0) { m_vElementList.push_back(static_cast(iFirstElement)); iLoadedListElements++; iFirstElement++; iNumElements--; } // Add 0xFFFF. m_vElementList.push_back(0xFFFF); iLoadedListElements++; return iFirst; } //! Shift the first frame if all frames are available. /*! @param iFirst First frame number, or 0xFFFFFFFFu if no animation. @param iLength Number of frames in the animation. @param iStart Start of the frames for this file. @param iLoaded Number of loaded frames. @return The shifted first frame, or 0xFFFFFFFFu. */ static uint32_t shiftFirst(uint32_t iFirst, size_t iLength, size_t iStart, size_t iLoaded) { if (iFirst == 0xFFFFFFFFu || iFirst + iLength > iLoaded) return 0xFFFFFFFFu; return iFirst + static_cast(iStart); } void THAnimationManager::fixNextFrame(uint32_t iFirst, size_t iLength) { if (iFirst == 0xFFFFFFFFu) return; frame_t &oFirst = m_vFrames[iFirst]; oFirst.iFlags |= 0x1; // Start of animation flag. frame_t &oLast = m_vFrames[iFirst + iLength - 1]; oLast.iNextFrame = iFirst; // Loop last frame back to the first. } bool THAnimationManager::loadCustomAnimations(const uint8_t* pData, size_t iDataLength) { Input input(pData, iDataLength); if (!loadHeader(input)) return false; if (!input.Available(5*4)) return false; size_t iAnimationCount = input.Uint32(); size_t iFrameCount = input.Uint32(); size_t iElementCount = input.Uint32(); size_t iSpriteCount = input.Uint32(); input.Uint32(); // Total number of bytes sprite data is not used. // Every element is referenced once, and one 0xFFFF for every frame. size_t iListCount = iElementCount + iFrameCount; size_t iFrameStart = m_iFrameCount; size_t iListStart = m_iElementListCount; size_t iElementStart = m_iElementCount; if (iAnimationCount == 0 || iFrameCount == 0 || iElementCount == 0 || iSpriteCount == 0) return false; if (iElementStart + iElementCount >= 0xFFFF) // Overflow of list elements. return false; // Create new space for the elements. m_vFirstFrames.reserve(m_vFirstFrames.size() + iAnimationCount * 4); // Be optimistic in reservation. m_vFrames.reserve(iFrameStart + iFrameCount); m_vElementList.reserve(iListStart + iListCount); m_vElements.reserve(iElementStart + iElementCount); // Construct a sprite sheet for the sprites to be loaded. THSpriteSheet *pSheet = new THSpriteSheet; pSheet->setSpriteCount(iSpriteCount, m_pCanvas); m_vCustomSheets.push_back(pSheet); size_t iLoadedFrames = 0; size_t iLoadedListElements = 0; size_t iLoadedElements = 0; size_t iLoadedSprites = 0; // Read the blocks of the file, until hitting EOF. for (;;) { if (input.AtEOF()) break; // Read identification bytes at the start of each block, and dispatch loading. if (!input.Available(2)) return false; int first = input.Uint8(); int second = input.Uint8(); // Recognized a grouped animation block, load it. if (first == 'C' && second == 'A') { AnimationKey oKey; if (!input.Available(2+4)) return false; oKey.iTilesize = input.Uint16(); size_t iNumFrames = input.Uint32(); if (iNumFrames == 0) return false; if (!input.String(&oKey.sName)) return false; if (!input.Available(4*4)) return false; uint32_t iNorthFirst = input.Uint32(); uint32_t iEastFirst = input.Uint32(); uint32_t iSouthFirst = input.Uint32(); uint32_t iWestFirst = input.Uint32(); iNorthFirst = shiftFirst(iNorthFirst, iNumFrames, iFrameStart, iLoadedFrames); iEastFirst = shiftFirst(iEastFirst, iNumFrames, iFrameStart, iLoadedFrames); iSouthFirst = shiftFirst(iSouthFirst, iNumFrames, iFrameStart, iLoadedFrames); iWestFirst = shiftFirst(iWestFirst, iNumFrames, iFrameStart, iLoadedFrames); AnimationStartFrames oFrames; oFrames.iNorth = -1; oFrames.iEast = -1; oFrames.iSouth = -1; oFrames.iWest = -1; if (iNorthFirst != 0xFFFFFFFFu) { fixNextFrame(iNorthFirst, iNumFrames); oFrames.iNorth = static_cast(m_vFirstFrames.size()); m_vFirstFrames.push_back(iNorthFirst); } if (iEastFirst != 0xFFFFFFFFu) { fixNextFrame(iEastFirst, iNumFrames); oFrames.iEast = static_cast(m_vFirstFrames.size()); m_vFirstFrames.push_back(iEastFirst); } if (iSouthFirst != 0xFFFFFFFFu) { fixNextFrame(iSouthFirst, iNumFrames); oFrames.iSouth = static_cast(m_vFirstFrames.size()); m_vFirstFrames.push_back(iSouthFirst); } if (iWestFirst != 0xFFFFFFFFu) { fixNextFrame(iWestFirst, iNumFrames); oFrames.iWest = static_cast(m_vFirstFrames.size()); m_vFirstFrames.push_back(iWestFirst); } NamedAnimationPair p(oKey, oFrames); m_oNamedAnimations.insert(p); continue; } // Recognized a frame block, load it. else if (first == 'F' && second == 'R') { if (iLoadedFrames >= iFrameCount) return false; if (!input.Available(2+2)) return false; int iSound = input.Uint16(); size_t iNumElements = input.Uint16(); size_t iElm = loadElements(input, pSheet, iNumElements, iLoadedElements, iElementStart, iElementCount); if (iElm == SIZE_MAX) return false; size_t iListElm = makeListElements(iElm, iNumElements, iLoadedListElements, iListStart, iListCount); if (iListElm == SIZE_MAX) return false; frame_t oFrame; oFrame.iListIndex = iListElm; oFrame.iNextFrame = iFrameStart + iLoadedFrames + 1; // Point to next frame (changed later). oFrame.iSound = iSound; oFrame.iFlags = 0; // Set later. oFrame.iMarkerX = 0; oFrame.iMarkerY = 0; oFrame.iSecondaryMarkerX = 0; oFrame.iSecondaryMarkerY = 0; setBoundingBox(oFrame); m_vFrames.push_back(oFrame); iLoadedFrames++; continue; } // Recognized a Sprite block, load it. else if (first == 'S' && second == 'P') { if (iLoadedSprites >= iSpriteCount) return false; if (!input.Available(2+2+4)) return false; int iWidth = input.Uint16(); int iHeight = input.Uint16(); uint32_t iSize = input.Uint32(); if (iSize > INT_MAX) // Check it is safe to use as 'int' return false; // Load data. uint8_t *pData = new (std::nothrow) uint8_t[iSize]; if (pData == nullptr) { return false; } if (!input.Available(iSize)) { delete[] pData; return false; } for (uint32_t i = 0; i < iSize; i++) pData[i] = input.Uint8(); if (!pSheet->setSpriteData(iLoadedSprites, pData, true, iSize, iWidth, iHeight)) return false; iLoadedSprites++; continue; } // Unrecognized block, fail. else { return false; } } assert(iLoadedFrames == iFrameCount); assert(iLoadedListElements == iListCount); assert(iLoadedElements == iElementCount); assert(iLoadedSprites == iSpriteCount); // Fix the next pointer of the last frame in case it points to non-existing frames. frame_t &oFrame = m_vFrames[iFrameStart + iFrameCount - 1]; if (iFrameCount > 0 && oFrame.iNextFrame >= iFrameStart + iFrameCount) oFrame.iNextFrame = iFrameStart; // Useless, but maybe less crashy. m_iAnimationCount = m_vFirstFrames.size(); m_iFrameCount += iFrameCount; m_iElementListCount += iListCount; m_iElementCount += iElementCount; assert(m_vFrames.size() == m_iFrameCount); assert(m_vElementList.size() == m_iElementListCount); assert(m_vElements.size() == m_iElementCount); return true; } const AnimationStartFrames &THAnimationManager::getNamedAnimations(const std::string &sName, int iTilesize) const { static const AnimationStartFrames oNoneAnimations = {-1, -1, -1, -1}; AnimationKey oKey; oKey.sName = sName; oKey.iTilesize = iTilesize; NamedAnimationsMap::const_iterator iter = m_oNamedAnimations.find(oKey); if (iter == m_oNamedAnimations.end()) return oNoneAnimations; return (*iter).second; } size_t THAnimationManager::getAnimationCount() const { return m_iAnimationCount; } size_t THAnimationManager::getFrameCount() const { return m_iFrameCount; } size_t THAnimationManager::getFirstFrame(size_t iAnimation) const { if(iAnimation < m_iAnimationCount) return m_vFirstFrames[iAnimation]; else return 0; } size_t THAnimationManager::getNextFrame(size_t iFrame) const { if(iFrame < m_iFrameCount) return m_vFrames[iFrame].iNextFrame; else return iFrame; } void THAnimationManager::setAnimationAltPaletteMap(size_t iAnimation, const uint8_t* pMap, uint32_t iAlt32) { if(iAnimation >= m_iAnimationCount) return; size_t iFrame = m_vFirstFrames[iAnimation]; size_t iFirstFrame = iFrame; do { size_t iListIndex = m_vFrames[iFrame].iListIndex; for(; ; ++iListIndex) { uint16_t iElement = m_vElementList[iListIndex]; if(iElement >= m_iElementCount) break; element_t& oElement = m_vElements[iElement]; if (oElement.pSpriteSheet != nullptr) oElement.pSpriteSheet->setSpriteAltPaletteMap(oElement.iSprite, pMap, iAlt32); } iFrame = m_vFrames[iFrame].iNextFrame; } while(iFrame != iFirstFrame); } bool THAnimationManager::setFrameMarker(size_t iFrame, int iX, int iY) { if(iFrame >= m_iFrameCount) return false; m_vFrames[iFrame].iMarkerX = iX; m_vFrames[iFrame].iMarkerY = iY; return true; } bool THAnimationManager::setFrameSecondaryMarker(size_t iFrame, int iX, int iY) { if(iFrame >= m_iFrameCount) return false; m_vFrames[iFrame].iSecondaryMarkerX = iX; m_vFrames[iFrame].iSecondaryMarkerY = iY; return true; } bool THAnimationManager::getFrameMarker(size_t iFrame, int* pX, int* pY) { if(iFrame >= m_iFrameCount) return false; *pX = m_vFrames[iFrame].iMarkerX; *pY = m_vFrames[iFrame].iMarkerY; return true; } bool THAnimationManager::getFrameSecondaryMarker(size_t iFrame, int* pX, int* pY) { if(iFrame >= m_iFrameCount) return false; *pX = m_vFrames[iFrame].iSecondaryMarkerX; *pY = m_vFrames[iFrame].iSecondaryMarkerY; return true; } bool THAnimationManager::hitTest(size_t iFrame, const THLayers_t& oLayers, int iX, int iY, uint32_t iFlags, int iTestX, int iTestY) const { if(iFrame >= m_iFrameCount) return false; const frame_t& oFrame = m_vFrames[iFrame]; iTestX -= iX; iTestY -= iY; if(iFlags & THDF_FlipHorizontal) iTestX = -iTestX; if(iTestX < oFrame.iBoundingLeft || iTestX > oFrame.iBoundingRight) return false; if(iFlags & THDF_FlipVertical) { if(-iTestY < oFrame.iBoundingTop || -iTestY > oFrame.iBoundingBottom) return false; } else { if(iTestY < oFrame.iBoundingTop || iTestY > oFrame.iBoundingBottom) return false; } if(iFlags & THDF_BoundBoxHitTest) return true; size_t iListIndex = oFrame.iListIndex; for(; ; ++iListIndex) { uint16_t iElement = m_vElementList[iListIndex]; if(iElement >= m_iElementCount) break; const element_t &oElement = m_vElements[iElement]; if((oElement.iLayerId != 0 && oLayers.iLayerContents[oElement.iLayer] != oElement.iLayerId) || oElement.pSpriteSheet == nullptr) { continue; } if(iFlags & THDF_FlipHorizontal) { unsigned int iWidth, iHeight; oElement.pSpriteSheet->getSpriteSizeUnchecked(oElement.iSprite, &iWidth, &iHeight); if(oElement.pSpriteSheet->hitTestSprite(oElement.iSprite, oElement.iX + iWidth - iTestX, iTestY - oElement.iY, oElement.iFlags ^ THDF_FlipHorizontal)) { return true; } } else { if(oElement.pSpriteSheet->hitTestSprite(oElement.iSprite, iTestX - oElement.iX, iTestY - oElement.iY, oElement.iFlags)) { return true; } } } return false; } void THAnimationManager::drawFrame(THRenderTarget* pCanvas, size_t iFrame, const THLayers_t& oLayers, int iX, int iY, uint32_t iFlags) const { if(iFrame >= m_iFrameCount) return; uint32_t iPassOnFlags = iFlags & THDF_AltPalette; size_t iListIndex = m_vFrames[iFrame].iListIndex; for(; ; ++iListIndex) { uint16_t iElement = m_vElementList[iListIndex]; if(iElement >= m_iElementCount) break; const element_t &oElement = m_vElements[iElement]; if (oElement.pSpriteSheet == nullptr) continue; if(oElement.iLayerId != 0 && oLayers.iLayerContents[oElement.iLayer] != oElement.iLayerId) { // Some animations involving doctors (i.e. #72, #74, maybe others) // only provide versions for heads W1 and B1, not W2 and B2. The // quickest way to fix this is this dirty hack here, which draws // the W1 layer as well as W2 if W2 is being used, and similarly // for B1 / B2. A better fix would be to go into each animation // which needs it, and duplicate the W1 / B1 layers to W2 / B2. if(oElement.iLayer == 5 && oLayers.iLayerContents[5] - 4 == oElement.iLayerId) /* don't skip */; else continue; } if(iFlags & THDF_FlipHorizontal) { unsigned int iWidth, iHeight; oElement.pSpriteSheet->getSpriteSizeUnchecked(oElement.iSprite, &iWidth, &iHeight); oElement.pSpriteSheet->drawSprite(pCanvas, oElement.iSprite, iX - oElement.iX - iWidth, iY + oElement.iY, iPassOnFlags | (oElement.iFlags ^ THDF_FlipHorizontal)); } else { oElement.pSpriteSheet->drawSprite(pCanvas, oElement.iSprite, iX + oElement.iX, iY + oElement.iY, iPassOnFlags | oElement.iFlags); } } } size_t THAnimationManager::getFrameSound(size_t iFrame) { if(iFrame < m_iFrameCount) return m_vFrames[iFrame].iSound; else return 0; } void THAnimationManager::getFrameExtent(size_t iFrame, const THLayers_t& oLayers, int* pMinX, int* pMaxX, int* pMinY, int* pMaxY, uint32_t iFlags) const { int iMinX = INT_MAX; int iMaxX = INT_MIN; int iMinY = INT_MAX; int iMaxY = INT_MIN; if(iFrame < m_iFrameCount) { size_t iListIndex = m_vFrames[iFrame].iListIndex; for(; ; ++iListIndex) { uint16_t iElement = m_vElementList[iListIndex]; if(iElement >= m_iElementCount) break; const element_t &oElement = m_vElements[iElement]; if((oElement.iLayerId != 0 && oLayers.iLayerContents[oElement.iLayer] != oElement.iLayerId) || oElement.pSpriteSheet == nullptr) { continue; } int iX = oElement.iX; int iY = oElement.iY; unsigned int iWidth_, iHeight_; oElement.pSpriteSheet->getSpriteSizeUnchecked(oElement.iSprite, &iWidth_, &iHeight_); int iWidth = static_cast(iWidth_); int iHeight = static_cast(iHeight_); if(iFlags & THDF_FlipHorizontal) iX = -(iX + iWidth); if(iX < iMinX) iMinX = iX; if(iY < iMinY) iMinY = iY; if(iX + iWidth + 1 > iMaxX) iMaxX = iX + iWidth + 1; if(iY + iHeight + 1 > iMaxY) iMaxY = iY + iHeight + 1; } } if(pMinX) *pMinX = iMinX; if(pMaxX) *pMaxX = iMaxX; if(pMinY) *pMinY = iMinY; if(pMaxY) *pMaxY = iMaxY; } THChunkRenderer::THChunkRenderer(int width, int height, uint8_t *buffer) { m_data = buffer ? buffer : new uint8_t[width * height]; m_ptr = m_data; m_end = m_data + width * height; m_x = 0; m_y = 0; m_width = width; m_height = height; m_skip_eol = false; } THChunkRenderer::~THChunkRenderer() { delete[] m_data; } uint8_t* THChunkRenderer::takeData() { uint8_t *buffer = m_data; m_data = 0; return buffer; } void THChunkRenderer::chunkFillToEndOfLine(uint8_t value) { if(m_x != 0 || !m_skip_eol) { chunkFill(m_width - m_x, value); } m_skip_eol = false; } void THChunkRenderer::chunkFinish(uint8_t value) { chunkFill(static_cast(m_end - m_ptr), value); } void THChunkRenderer::chunkFill(int npixels, uint8_t value) { _fixNpixels(npixels); if(npixels > 0) { std::memset(m_ptr, value, npixels); _incrementPosition(npixels); } } void THChunkRenderer::chunkCopy(int npixels, const uint8_t* data) { _fixNpixels(npixels); if(npixels > 0) { std::memcpy(m_ptr, data, npixels); _incrementPosition(npixels); } } inline void THChunkRenderer::_fixNpixels(int& npixels) const { if(m_ptr + npixels > m_end) { npixels = static_cast(m_end - m_ptr); } } inline void THChunkRenderer::_incrementPosition(int npixels) { m_ptr += npixels; m_x += npixels; m_y += m_x / m_width; m_x = m_x % m_width; m_skip_eol = true; } void THChunkRenderer::decodeChunks(const uint8_t* data, int datalen, bool complex) { if(complex) { while(!_isDone() && datalen > 0) { uint8_t b = *data; --datalen; ++data; if(b == 0) { chunkFillToEndOfLine(0xFF); } else if(b < 0x40) { int amt = b; if(datalen < amt) amt = datalen; chunkCopy(amt, data); data += amt; datalen -= amt; } else if((b & 0xC0) == 0x80) { chunkFill(b - 0x80, 0xFF); } else { int amt; uint8_t colour = 0; if(b == 0xFF) { if(datalen < 2) { break; } amt = (int)data[0]; colour = data[1]; data += 2; datalen -= 2; } else { amt = b - 60 - (b & 0x80) / 2; if(datalen > 0) { colour = *data; ++data; --datalen; } } chunkFill(amt, colour); } } } else { while(!_isDone() && datalen > 0) { uint8_t b = *data; --datalen; ++data; if(b == 0) { chunkFillToEndOfLine(0xFF); } else if(b < 0x80) { int amt = b; if(datalen < amt) amt = datalen; chunkCopy(amt, data); data += amt; datalen -= amt; } else { chunkFill(0x100 - b, 0xFF); } } } chunkFinish(0xFF); } #define AreFlagsSet(val, flags) (((val) & (flags)) == (flags)) void THAnimation::draw(THRenderTarget* pCanvas, int iDestX, int iDestY) { if(AreFlagsSet(m_iFlags, THDF_Alpha50 | THDF_Alpha75)) return; iDestX += m_iX; iDestY += m_iY; if(m_iSoundToPlay) { THSoundEffects *pSounds = THSoundEffects::getSingleton(); if(pSounds) pSounds->playSoundAt(m_iSoundToPlay, iDestX, iDestY); m_iSoundToPlay = 0; } if(m_pManager) { if(m_iFlags & THDF_Crop) { THClipRect rcOld, rcNew; pCanvas->getClipRect(&rcOld); rcNew.y = rcOld.y; rcNew.h = rcOld.h; rcNew.x = iDestX + (m_iCropColumn - 1) * 32; rcNew.w = 64; IntersectTHClipRect(rcNew, rcOld); pCanvas->setClipRect(&rcNew); m_pManager->drawFrame(pCanvas, m_iFrame, m_oLayers, iDestX, iDestY, m_iFlags); pCanvas->setClipRect(&rcOld); } else m_pManager->drawFrame(pCanvas, m_iFrame, m_oLayers, iDestX, iDestY, m_iFlags); } } void THAnimation::drawChild(THRenderTarget* pCanvas, int iDestX, int iDestY) { if(AreFlagsSet(m_iFlags, THDF_Alpha50 | THDF_Alpha75)) return; if(AreFlagsSet(m_pParent->m_iFlags, THDF_Alpha50 | THDF_Alpha75)) return; int iX = 0, iY = 0; m_pParent->getMarker(&iX, &iY); iX += m_iX + iDestX; iY += m_iY + iDestY; if(m_iSoundToPlay) { THSoundEffects *pSounds = THSoundEffects::getSingleton(); if(pSounds) pSounds->playSoundAt(m_iSoundToPlay, iX, iY); m_iSoundToPlay = 0; } if(m_pManager) m_pManager->drawFrame(pCanvas, m_iFrame, m_oLayers, iX, iY, m_iFlags); } bool THAnimation::hitTestChild(int iDestX, int iDestY, int iTestX, int iTestY) { // TODO return false; } static void CalculateMorphRect(const THClipRect& rcOriginal, THClipRect& rcMorph, int iYLow, int iYHigh) { rcMorph = rcOriginal; if(rcMorph.y < iYLow) { rcMorph.h += rcMorph.y - iYLow; rcMorph.y = iYLow; } if(rcMorph.y + rcMorph.h >= iYHigh) { rcMorph.h = iYHigh - rcMorph.y - 1; } } void THAnimation::drawMorph(THRenderTarget* pCanvas, int iDestX, int iDestY) { if(AreFlagsSet(m_iFlags, THDF_Alpha50 | THDF_Alpha75)) return; if(!m_pManager) return; iDestX += m_iX; iDestY += m_iY; if(m_iSoundToPlay) { THSoundEffects *pSounds = THSoundEffects::getSingleton(); if(pSounds) pSounds->playSoundAt(m_iSoundToPlay, iDestX, iDestY); m_iSoundToPlay = 0; } THClipRect oClipRect; pCanvas->getClipRect(&oClipRect); THClipRect oMorphRect; CalculateMorphRect(oClipRect, oMorphRect, iDestY + m_pMorphTarget->m_iX, iDestY + m_pMorphTarget->m_iY + 1); pCanvas->setClipRect(&oMorphRect); m_pManager->drawFrame(pCanvas, m_iFrame, m_oLayers, iDestX, iDestY, m_iFlags); CalculateMorphRect(oClipRect, oMorphRect, iDestY + m_pMorphTarget->m_iY, iDestY + m_pMorphTarget->speed.x); pCanvas->setClipRect(&oMorphRect); m_pManager->drawFrame(pCanvas, m_pMorphTarget->m_iFrame, m_pMorphTarget->m_oLayers, iDestX, iDestY, m_pMorphTarget->m_iFlags); pCanvas->setClipRect(&oClipRect); } bool THAnimation::hitTest(int iDestX, int iDestY, int iTestX, int iTestY) { if(AreFlagsSet(m_iFlags, THDF_Alpha50 | THDF_Alpha75)) return false; if(m_pManager == nullptr) return false; return m_pManager->hitTest(m_iFrame, m_oLayers, m_iX + iDestX, m_iY + iDestY, m_iFlags, iTestX, iTestY); } bool THAnimation::hitTestMorph(int iDestX, int iDestY, int iTestX, int iTestY) { if(AreFlagsSet(m_iFlags, THDF_Alpha50 | THDF_Alpha75)) return false; if(m_pManager == nullptr) return false; return m_pManager->hitTest(m_iFrame, m_oLayers, m_iX + iDestX, m_iY + iDestY, m_iFlags, iTestX, iTestY) || m_pMorphTarget->hitTest( iDestX, iDestY, iTestX, iTestY); } #undef AreFlagsSet static bool THAnimation_HitTestChild(THDrawable* pSelf, int iDestX, int iDestY, int iTestX, int iTestY) { return reinterpret_cast(pSelf)->hitTestChild(iDestX, iDestY, iTestX, iTestY); } static void THAnimation_DrawChild(THDrawable* pSelf, THRenderTarget* pCanvas, int iDestX, int iDestY) { reinterpret_cast(pSelf)->drawChild(pCanvas, iDestX, iDestY); } static bool THAnimation_HitTestMorph(THDrawable* pSelf, int iDestX, int iDestY, int iTestX, int iTestY) { return reinterpret_cast(pSelf)->hitTestMorph(iDestX, iDestY, iTestX, iTestY); } static void THAnimation_DrawMorph(THDrawable* pSelf, THRenderTarget* pCanvas, int iDestX, int iDestY) { reinterpret_cast(pSelf)->drawMorph(pCanvas, iDestX, iDestY); } static bool THAnimation_HitTest(THDrawable* pSelf, int iDestX, int iDestY, int iTestX, int iTestY) { return reinterpret_cast(pSelf)->hitTest(iDestX, iDestY, iTestX, iTestY); } static void THAnimation_Draw(THDrawable* pSelf, THRenderTarget* pCanvas, int iDestX, int iDestY) { reinterpret_cast(pSelf)->draw(pCanvas, iDestX, iDestY); } static bool THAnimation_isMultipleFrameAnimation(THDrawable* pSelf) { THAnimation *pAnimation = reinterpret_cast(pSelf); if(pAnimation) { size_t firstFrame = pAnimation->getAnimationManager()->getFirstFrame(pAnimation->getAnimation()); size_t nextFrame = pAnimation->getAnimationManager()->getNextFrame(firstFrame); return nextFrame != firstFrame; } else return false; } THAnimationBase::THAnimationBase() { m_iX = 0; m_iY = 0; for(int i = 0; i < 13; ++i) m_oLayers.iLayerContents[i] = 0; m_iFlags = 0; } THAnimation::THAnimation(): m_pManager(nullptr), m_pMorphTarget(nullptr), m_iAnimation(0), m_iFrame(0), speed({0,0}), m_iSoundToPlay(0), m_iCropColumn(0) { m_fnDraw = THAnimation_Draw; m_fnHitTest = THAnimation_HitTest; m_fnIsMultipleFrameAnimation = THAnimation_isMultipleFrameAnimation; } void THAnimation::persist(LuaPersistWriter *pWriter) const { lua_State *L = pWriter->getStack(); // Write the next chained thing lua_rawgeti(L, luaT_environindex, 2); lua_pushlightuserdata(L, m_pNext); lua_rawget(L, -2); pWriter->fastWriteStackObject(-1); lua_pop(L, 2); // Write the THDrawable fields pWriter->writeVUInt(m_iFlags); #define IsUsingFunctionSet(d, ht) m_fnDraw == (THAnimation_ ## d) \ && m_fnHitTest == (THAnimation_ ## ht) if(IsUsingFunctionSet(Draw, HitTest)) pWriter->writeVUInt(1); else if(IsUsingFunctionSet(DrawChild, HitTestChild)) pWriter->writeVUInt(2); else if(IsUsingFunctionSet(DrawMorph, HitTestMorph)) { // NB: Prior version of code used the number 3 here, and forgot // to persist the morph target. pWriter->writeVUInt(4); lua_rawgeti(L, luaT_environindex, 2); lua_pushlightuserdata(L, m_pMorphTarget); lua_rawget(L, -2); pWriter->writeStackObject(-1); lua_pop(L, 2); } else pWriter->writeVUInt(0); #undef IsUsingFunctionSet // Write the simple fields pWriter->writeVUInt(m_iAnimation); pWriter->writeVUInt(m_iFrame); pWriter->writeVInt(m_iX); pWriter->writeVInt(m_iY); pWriter->writeVInt((int)m_iSoundToPlay); // Not a VUInt, for compatibility pWriter->writeVInt(0); // For compatibility if(m_iFlags & THDF_Crop) pWriter->writeVInt(m_iCropColumn); // Write the unioned fields if(m_fnDraw != THAnimation_DrawChild) { pWriter->writeVInt(speed.x); pWriter->writeVInt(speed.y); } else { lua_rawgeti(L, luaT_environindex, 2); lua_pushlightuserdata(L, m_pParent); lua_rawget(L, -2); pWriter->writeStackObject(-1); lua_pop(L, 2); } // Write the layers int iNumLayers = 13; for( ; iNumLayers >= 1; --iNumLayers) { if(m_oLayers.iLayerContents[iNumLayers - 1] != 0) break; } pWriter->writeVUInt(iNumLayers); pWriter->writeByteStream(m_oLayers.iLayerContents, iNumLayers); } void THAnimation::depersist(LuaPersistReader *pReader) { lua_State *L = pReader->getStack(); do { // Read the chain if(!pReader->readStackObject()) break; m_pNext = reinterpret_cast(lua_touserdata(L, -1)); if(m_pNext) m_pNext->m_pPrev = this; lua_pop(L, 1); // Read THDrawable fields if(!pReader->readVUInt(m_iFlags)) break; int iFunctionSet; if(!pReader->readVUInt(iFunctionSet)) break; switch(iFunctionSet) { case 3: // 3 should be the morph set, but the actual morph target is // missing, so settle for a graphical bug rather than a segfault // by reverting to the normal function set. case 1: m_fnDraw = THAnimation_Draw; m_fnHitTest = THAnimation_HitTest; break; case 2: m_fnDraw = THAnimation_DrawChild; m_fnHitTest = THAnimation_HitTestChild; break; case 4: m_fnDraw = THAnimation_DrawMorph; m_fnHitTest = THAnimation_HitTestMorph; pReader->readStackObject(); m_pMorphTarget = reinterpret_cast(lua_touserdata(L, -1)); lua_pop(L, 1); break; default: pReader->setError(lua_pushfstring(L, "Unknown animation function set #%i", iFunctionSet)); return; } // Read the simple fields if(!pReader->readVUInt(m_iAnimation)) break; if(!pReader->readVUInt(m_iFrame)) break; if(!pReader->readVInt(m_iX)) break; if(!pReader->readVInt(m_iY)) break; int iDummy; if(!pReader->readVInt(iDummy)) break; if(iDummy >= 0) m_iSoundToPlay = (unsigned int)iDummy; if(!pReader->readVInt(iDummy)) break; if(m_iFlags & THDF_Crop) { if(!pReader->readVInt(m_iCropColumn)) break; } else m_iCropColumn = 0; // Read the unioned fields if(m_fnDraw != THAnimation_DrawChild) { if(!pReader->readVInt(speed.x)) break; if(!pReader->readVInt(speed.y)) break; } else { if(!pReader->readStackObject()) break; m_pParent = (THAnimation*)lua_touserdata(L, -1); lua_pop(L, 1); } // Read the layers std::memset(m_oLayers.iLayerContents, 0, sizeof(m_oLayers.iLayerContents)); int iNumLayers; if(!pReader->readVUInt(iNumLayers)) break; if(iNumLayers > 13) { if(!pReader->readByteStream(m_oLayers.iLayerContents, 13)) break; if(!pReader->readByteStream(nullptr, iNumLayers - 13)) break; } else { if(!pReader->readByteStream(m_oLayers.iLayerContents, iNumLayers)) break; } // Fix the m_pAnimator field luaT_getenvfield(L, 2, "animator"); m_pManager = (THAnimationManager*)lua_touserdata(L, -1); lua_pop(L, 1); return; } while(false); pReader->setError("Cannot depersist THAnimation instance"); } void THAnimation::tick() { m_iFrame = m_pManager->getNextFrame(m_iFrame); if(m_fnDraw != THAnimation_DrawChild) { m_iX += speed.x; m_iY += speed.y; } if(m_pMorphTarget) { m_pMorphTarget->m_iY += m_pMorphTarget->speed.y; if(m_pMorphTarget->m_iY < m_pMorphTarget->m_iX) m_pMorphTarget->m_iY = m_pMorphTarget->m_iX; } //Female flying to heaven sound fix: if(m_iFrame == 6987) m_iSoundToPlay = 123; else m_iSoundToPlay = m_pManager->getFrameSound(m_iFrame); } void THAnimationBase::removeFromTile() { THLinkList::removeFromList(); } void THAnimationBase::attachToTile(THMapNode *pMapNode, int layer) { removeFromTile(); THLinkList *pList; if(m_iFlags & THDF_EarlyList) pList = &pMapNode->oEarlyEntities; else pList = pMapNode; this->setDrawingLayer(layer); #define GetFlags(x) (reinterpret_cast(x)->m_iFlags) while(pList->m_pNext && pList->m_pNext->getDrawingLayer() < layer) { pList = pList->m_pNext; } #undef GetFlags m_pPrev = pList; if(pList->m_pNext != nullptr) { pList->m_pNext->m_pPrev = this; this->m_pNext = pList->m_pNext; } else { m_pNext = nullptr; } pList->m_pNext = this; } void THAnimation::setParent(THAnimation *pParent) { removeFromTile(); if(pParent == nullptr) { m_fnDraw = THAnimation_Draw; m_fnHitTest = THAnimation_HitTest; speed = { 0, 0 }; } else { m_fnDraw = THAnimation_DrawChild; m_fnHitTest = THAnimation_HitTestChild; m_pParent = pParent; m_pNext = m_pParent->m_pNext; if(m_pNext) m_pNext->m_pPrev = this; m_pPrev = m_pParent; m_pParent->m_pNext = this; } } void THAnimation::setAnimation(THAnimationManager* pManager, size_t iAnimation) { m_pManager = pManager; m_iAnimation = iAnimation; m_iFrame = pManager->getFirstFrame(iAnimation); if(m_pMorphTarget) { m_pMorphTarget = nullptr; m_fnDraw = THAnimation_Draw; m_fnHitTest = THAnimation_HitTest; } } bool THAnimation::getMarker(int* pX, int* pY) { if(!m_pManager || !m_pManager->getFrameMarker(m_iFrame, pX, pY)) return false; if(m_iFlags & THDF_FlipHorizontal) *pX = -*pX; *pX += m_iX; *pY += m_iY + 16; return true; } bool THAnimation::getSecondaryMarker(int* pX, int* pY) { if(!m_pManager || !m_pManager->getFrameSecondaryMarker(m_iFrame, pX, pY)) return false; if(m_iFlags & THDF_FlipHorizontal) *pX = -*pX; *pX += m_iX; *pY += m_iY + 16; return true; } static int GetAnimationDurationAndExtent(THAnimationManager *pManager, size_t iFrame, const THLayers_t& oLayers, int* pMinY, int* pMaxY, uint32_t iFlags) { int iMinY = INT_MAX; int iMaxY = INT_MIN; int iDuration = 0; size_t iCurFrame = iFrame; do { int iFrameMinY; int iFrameMaxY; pManager->getFrameExtent(iCurFrame, oLayers, nullptr, nullptr, &iFrameMinY, &iFrameMaxY, iFlags); if(iFrameMinY < iMinY) iMinY = iFrameMinY; if(iFrameMaxY > iMaxY) iMaxY = iFrameMaxY; iCurFrame = pManager->getNextFrame(iCurFrame); ++iDuration; } while(iCurFrame != iFrame); if(pMinY) *pMinY = iMinY; if(pMaxY) *pMaxY = iMaxY; return iDuration; } void THAnimation::setMorphTarget(THAnimation *pMorphTarget, unsigned int iDurationFactor) { m_pMorphTarget = pMorphTarget; m_fnDraw = THAnimation_DrawMorph; m_fnHitTest = THAnimation_HitTestMorph; /* Morphing is the process by which two animations are combined to give a single animation of one animation turning into another. At the moment, morphing is done by having a y value, above which the original animation is rendered, and below which the new animation is rendered, and having the y value move upward a bit each frame. One example of where this is used is when transparent or invisible patients are cured at the pharmacy cabinet. The process of morphing requires four state variables, which are stored in the morph target animation: * The y value top limit - m_pMorphTarget->m_iX * The y value threshold - m_pMorphTarget->m_iY * The y value bottom limit - m_pMorphTarget->m_iSpeedX * The y value increment per frame - m_pMorphTarget->m_iSpeedY This obviously means that the morph target should not be ticked or rendered as it's position and speed contain other values. */ int iOrigMinY, iOrigMaxY; int iMorphMinY, iMorphMaxY; #define GADEA GetAnimationDurationAndExtent int iOriginalDuration = GADEA(m_pManager, m_iFrame, m_oLayers, &iOrigMinY, &iOrigMaxY, m_iFlags); int iMorphDuration = GADEA(m_pMorphTarget->m_pManager, m_pMorphTarget->m_iFrame, m_pMorphTarget->m_oLayers, &iMorphMinY, &iMorphMaxY, m_pMorphTarget->m_iFlags); if(iMorphDuration > iOriginalDuration) iMorphDuration = iOriginalDuration; #undef GADEA iMorphDuration *= iDurationFactor; if(iOrigMinY < iMorphMinY) m_pMorphTarget->m_iX = iOrigMinY; else m_pMorphTarget->m_iX = iMorphMinY; if(iOrigMaxY > iMorphMaxY) m_pMorphTarget->speed.x = iOrigMaxY; else m_pMorphTarget->speed.x = iMorphMaxY; int iDist = m_pMorphTarget->m_iX - m_pMorphTarget->speed.x; m_pMorphTarget->speed.y = (iDist - iMorphDuration + 1) / iMorphDuration; m_pMorphTarget->m_iY = m_pMorphTarget->speed.x; } void THAnimation::setFrame(size_t iFrame) { m_iFrame = iFrame; } void THAnimationBase::setLayer(int iLayer, int iId) { if(0 <= iLayer && iLayer <= 12) { m_oLayers.iLayerContents[iLayer] = static_cast(iId); } } static bool THSpriteRenderList_HitTest(THDrawable* pSelf, int iDestX, int iDestY, int iTestX, int iTestY) { return reinterpret_cast(pSelf)-> hitTest(iDestX, iDestY, iTestX, iTestY); } static void THSpriteRenderList_Draw(THDrawable* pSelf, THRenderTarget* pCanvas, int iDestX, int iDestY) { reinterpret_cast(pSelf)-> draw(pCanvas, iDestX, iDestY); } static bool THSpriteRenderList_isMultipleFrameAnimation(THDrawable* pSelf) { return false; } THSpriteRenderList::THSpriteRenderList() { m_fnDraw = THSpriteRenderList_Draw; m_fnHitTest = THSpriteRenderList_HitTest; m_fnIsMultipleFrameAnimation = THSpriteRenderList_isMultipleFrameAnimation; m_iBufferSize = 0; m_iNumSprites = 0; m_pSpriteSheet = nullptr; m_pSprites = nullptr; m_iSpeedX = 0; m_iSpeedY = 0; m_iLifetime = -1; } THSpriteRenderList::~THSpriteRenderList() { delete[] m_pSprites; } void THSpriteRenderList::tick() { m_iX += m_iSpeedX; m_iY += m_iSpeedY; if(m_iLifetime > 0) --m_iLifetime; } void THSpriteRenderList::draw(THRenderTarget* pCanvas, int iDestX, int iDestY) { if(!m_pSpriteSheet) return; iDestX += m_iX; iDestY += m_iY; for(_sprite_t *pSprite = m_pSprites, *pLast = m_pSprites + m_iNumSprites; pSprite != pLast; ++pSprite) { m_pSpriteSheet->drawSprite(pCanvas, pSprite->iSprite, iDestX + pSprite->iX, iDestY + pSprite->iY, m_iFlags); } } bool THSpriteRenderList::hitTest(int iDestX, int iDestY, int iTestX, int iTestY) { // TODO return false; } void THSpriteRenderList::setLifetime(int iLifetime) { if(iLifetime < 0) iLifetime = -1; m_iLifetime = iLifetime; } void THSpriteRenderList::appendSprite(size_t iSprite, int iX, int iY) { if(m_iBufferSize == m_iNumSprites) { int iNewSize = m_iBufferSize * 2; if(iNewSize == 0) iNewSize = 4; _sprite_t* pNewSprites = new _sprite_t[iNewSize]; #ifdef _MSC_VER #pragma warning(disable: 4996) #endif std::copy(m_pSprites, m_pSprites + m_iNumSprites, pNewSprites); #ifdef _MSC_VER #pragma warning(default: 4996) #endif delete[] m_pSprites; m_pSprites = pNewSprites; m_iBufferSize = iNewSize; } m_pSprites[m_iNumSprites].iSprite = iSprite; m_pSprites[m_iNumSprites].iX = iX; m_pSprites[m_iNumSprites].iY = iY; ++m_iNumSprites; } void THSpriteRenderList::persist(LuaPersistWriter *pWriter) const { lua_State *L = pWriter->getStack(); pWriter->writeVUInt(m_iNumSprites); pWriter->writeVUInt(m_iFlags); pWriter->writeVInt(m_iX); pWriter->writeVInt(m_iY); pWriter->writeVInt(m_iSpeedX); pWriter->writeVInt(m_iSpeedY); pWriter->writeVInt(m_iLifetime); for(_sprite_t *pSprite = m_pSprites, *pLast = m_pSprites + m_iNumSprites; pSprite != pLast; ++pSprite) { pWriter->writeVUInt(pSprite->iSprite); pWriter->writeVInt(pSprite->iX); pWriter->writeVInt(pSprite->iY); } // Write the layers int iNumLayers = 13; for( ; iNumLayers >= 1; --iNumLayers) { if(m_oLayers.iLayerContents[iNumLayers - 1] != 0) break; } pWriter->writeVUInt(iNumLayers); pWriter->writeByteStream(m_oLayers.iLayerContents, iNumLayers); // Write the next chained thing lua_rawgeti(L, luaT_environindex, 2); lua_pushlightuserdata(L, m_pNext); lua_rawget(L, -2); pWriter->fastWriteStackObject(-1); lua_pop(L, 2); } void THSpriteRenderList::depersist(LuaPersistReader *pReader) { lua_State *L = pReader->getStack(); if(!pReader->readVUInt(m_iNumSprites)) return; m_iBufferSize = m_iNumSprites; delete[] m_pSprites; m_pSprites = new _sprite_t[m_iBufferSize]; if(!pReader->readVUInt(m_iFlags)) return; if(!pReader->readVInt(m_iX)) return; if(!pReader->readVInt(m_iY)) return; if(!pReader->readVInt(m_iSpeedX)) return; if(!pReader->readVInt(m_iSpeedY)) return; if(!pReader->readVInt(m_iLifetime)) return; for(_sprite_t *pSprite = m_pSprites, *pLast = m_pSprites + m_iNumSprites; pSprite != pLast; ++pSprite) { if(!pReader->readVUInt(pSprite->iSprite)) return; if(!pReader->readVInt(pSprite->iX)) return; if(!pReader->readVInt(pSprite->iY)) return; } // Read the layers std::memset(m_oLayers.iLayerContents, 0, sizeof(m_oLayers.iLayerContents)); int iNumLayers; if(!pReader->readVUInt(iNumLayers)) return; if(iNumLayers > 13) { if(!pReader->readByteStream(m_oLayers.iLayerContents, 13)) return; if(!pReader->readByteStream(nullptr, iNumLayers - 13)) return; } else { if(!pReader->readByteStream(m_oLayers.iLayerContents, iNumLayers)) return; } // Read the chain if(!pReader->readStackObject()) return; m_pNext = reinterpret_cast(lua_touserdata(L, -1)); if(m_pNext) m_pNext->m_pPrev = this; lua_pop(L, 1); // Fix the m_pSpriteSheet field luaT_getenvfield(L, 2, "sheet"); m_pSpriteSheet = (THSpriteSheet*)lua_touserdata(L, -1); lua_pop(L, 1); } CorsixTH-0.61/CorsixTH/Src/th_gfx.h000066400000000000000000000553671321660673500170560ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_GFX_H_ #define CORSIX_TH_TH_GFX_H_ #include "th.h" class LuaPersistReader; class LuaPersistWriter; enum THScaledItems { THSI_None = 0, THSI_SpriteSheets = 1 << 0, THSI_Bitmaps = 1 << 1, THSI_All = 3, }; #include "th_gfx_sdl.h" #include "th_gfx_font.h" #include #include #include void IntersectTHClipRect(THClipRect& rcClip,const THClipRect& rcIntersect); //! Bitflags for drawing operations enum THDrawFlags { /** Sprite drawing flags **/ /* Where possible, designed to be the same values used by TH data files */ //! Draw with the left becoming the right and vice versa THDF_FlipHorizontal = 1 << 0, //! Draw with the top becoming the bottom and vice versa THDF_FlipVertical = 1 << 1, //! Draw with 50% transparency THDF_Alpha50 = 1 << 2, //! Draw with 75% transparency THDF_Alpha75 = 1 << 3, //! Draw using a remapped palette THDF_AltPalette = 1 << 4, /** How to draw alternative palette in 32bpp. */ /* A 3 bit field (bits 5,6,7), currently 2 bits used. */ //! Lowest bit of the field. THDF_Alt32_Start = 5, //! Mask for the 32bpp alternative drawing values. THDF_Alt32_Mask = 0x7 << THDF_Alt32_Start, //! Draw the sprite with the normal palette (fallback option). THDF_Alt32_Plain = 0 << THDF_Alt32_Start, //! Draw the sprite in grey scale. THDF_Alt32_GreyScale = 1 << THDF_Alt32_Start, //! Draw the sprite with red and blue colours swapped. THDF_Alt32_BlueRedSwap = 2 << THDF_Alt32_Start, /** Object attached to tile flags **/ /* (should be set prior to attaching to a tile) */ //! Attach to the early sprite list (right-to-left pass) THDF_EarlyList = 1 << 10, //! Keep this sprite at the bottom of the attached list THDF_ListBottom = 1 << 11, //! Hit-test using bounding-box precision rather than pixel-perfect THDF_BoundBoxHitTest= 1 << 12, //! Apply a cropping operation prior to drawing THDF_Crop = 1 << 13, }; //! Bitflags for animation frames enum THFrameFlags { //! First frame of an animation THFF_AnimationStart = 1 << 0, }; /** Helper structure with parameters to create a #THRenderTarget. */ struct THRenderTargetCreationParams { int iWidth; ///< Expected width of the render target. int iHeight; ///< Expected height of the render target. int iBPP; ///< Expected colour depth of the render target. bool bFullscreen; ///< Run full-screen. bool bPresentImmediate; ///< Whether to present immediately to the user (else wait for Vsync). }; /*! Base class for a linked list of drawable objects. Note that "object" is used as a generic term, not in specific reference to game objects (though they are the most common thing in drawing lists). */ struct THDrawable : public THLinkList { //! Draw the object at a specific point on a render target /*! Can also "draw" the object to the speakers, i.e. play sounds. */ void (*m_fnDraw)(THDrawable* pSelf, THRenderTarget* pCanvas, int iDestX, int iDestY); //! Perform a hit test against the object /*! Should return true if when the object is drawn at (iDestX, iDestY) on a canvas, the point (iTestX, iTestY) is within / on the object. */ bool (*m_fnHitTest)(THDrawable* pSelf, int iDestX, int iDestY, int iTestX, int iTestY); //! Drawing flags (zero or more list flags from #THDrawFlags). uint32_t m_iFlags; /** Returns true if instance is a multiple frame animation. Should be overloaded in derived class. */ bool (*m_fnIsMultipleFrameAnimation)(THDrawable *pSelf); }; /*! Utility class for decoding Theme Hospital "chunked" graphics files. Generally used internally by THSpriteSheet. */ class THChunkRenderer { public: //! Initialise a renderer for a specific size result /*! @param width Pixel width of the resulting image @param height Pixel height of the resulting image @param buffer If nullptr, then a new buffer is created to render the image onto. Otherwise, should be an array at least width*height in size. Ownership of this pointer is assumed by the class - call takeData() to take ownership back again. */ THChunkRenderer(int width, int height, uint8_t *buffer = nullptr); ~THChunkRenderer(); //! Convert a stream of chunks into a raw bitmap /*! @param pData Stream data. @param iDataLen Length of \a pData. @param bComplex true if pData is a stream of "complex" chunks, false if pData is a stream of "simple" chunks. Passing the wrong value will usually result in a very visible wrong result. Use getData() or takeData() to obtain the resulting bitmap. */ void decodeChunks(const uint8_t* pData, int iDataLen, bool bComplex); //! Get the result buffer, and take ownership of it /*! This transfers ownership of the buffer to the caller. After calling, the class will not have any buffer, and thus cannot be used for anything. */ uint8_t* takeData(); //! Get the result buffer inline const uint8_t* getData() const {return m_data;} //! Perform a "copy" chunk (normally called by decodeChunks) void chunkCopy(int npixels, const uint8_t* data); //! Perform a "fill" chunk (normally called by decodeChunks) void chunkFill(int npixels, uint8_t value); //! Perform a "fill to end of line" chunk (normally called by decodeChunks) void chunkFillToEndOfLine(uint8_t value); //! Perform a "fill to end of file" chunk (normally called by decodeChunks) void chunkFinish(uint8_t value); private: inline bool _isDone() {return m_ptr == m_end;} inline void _fixNpixels(int& npixels) const; inline void _incrementPosition(int npixels); uint8_t *m_data, *m_ptr, *m_end; int m_x, m_y, m_width, m_height; bool m_skip_eol; }; //! Layer information (see THAnimationManager::drawFrame) struct THLayers_t { uint8_t iLayerContents[13]; }; class Input; /** Key value for finding an animation. */ struct AnimationKey { std::string sName; ///< Name of the animations. int iTilesize; ///< Size of a tile. }; //! Less-than operator for map-sorting. /*! @param oK First key value. @param oL Second key value. @return Whether \a oK should be before \a oL. */ inline bool operator<(const AnimationKey &oK, const AnimationKey &oL) { if (oK.iTilesize != oL.iTilesize) return oK.iTilesize < oL.iTilesize; return oK.sName < oL.sName; } /** * Start frames of an animation, in each view direction. * A negative number indicates there is no animation in that direction. */ struct AnimationStartFrames { long iNorth; ///< Animation start frame for the 'north' view. long iEast; ///< Animation start frame for the 'east' view. long iSouth; ///< Animation start frame for the 'south' view. long iWest; ///< Animation start frame for the 'west' view. }; /** Map holding the custom animations. */ typedef std::map NamedAnimationsMap; /** Insertion data structure. */ typedef std::pair NamedAnimationPair; //! Theme Hospital sprite animation manager /*! An animation manager takes a sprite sheet and four animation information files, and uses them to draw animation frames and provide information about the animations. */ class THAnimationManager { public: THAnimationManager(); ~THAnimationManager(); void setSpriteSheet(THSpriteSheet* pSpriteSheet); //! Load original animations. /*! setSpriteSheet() must be called before calling this. @param pStartData Animation first frame indices (e.g. VSTART-1.ANI) @param iStartDataLength Length of \a pStartData. @param pFrameData Frame details (e.g. VFRA-1.ANI) @param iFrameDataLength Length of \a pFrameData @param pListData Element indices list (e.g. VLIST-1.ANI) @param iListDataLength Length of \a pListData @param pElementData Element details (e.g. VELE-1.ANI) @param iElementDataLength Length of \a pElementData @return Loading was successful. */ bool loadFromTHFile(const uint8_t* pStartData, size_t iStartDataLength, const uint8_t* pFrameData, size_t iFrameDataLength, const uint8_t* pListData, size_t iListDataLength, const uint8_t* pElementData, size_t iElementDataLength); //! Set the video target. /*! @param pCanvas Video surface to use. */ void setCanvas(THRenderTarget *pCanvas); //! Load free animations. /*! @param pData Start of the loaded data. @param iDataLength Length of the loaded data. @return Loading was successful. */ bool loadCustomAnimations(const uint8_t* pData, size_t iDataLength); //! Get the total numer of animations size_t getAnimationCount() const; //! Get the total number of animation frames size_t getFrameCount() const; //! Get the index of the first frame of an animation size_t getFirstFrame(size_t iAnimation) const; //! Get the index of the frame after a given frame /*! To draw an animation frame by frame, call getFirstFrame() to get the index of the first frame, and then keep on calling getNextFrame() using the most recent return value from getNextFrame() or getFirstFrame(). */ size_t getNextFrame(size_t iFrame) const; //! Set the palette remap data for an animation /*! This sets the palette remap data for every single sprite used by the given animation. If the animation (or any of its sprites) are drawn using the THDF_AltPalette flag, then palette indices will be mapped to new palette indices by the 256 byte array pMap. This is typically used to draw things in different colours or in greyscale. */ void setAnimationAltPaletteMap(size_t iAnimation, const uint8_t* pMap, uint32_t iAlt32); //! Draw an animation frame /*! @param pCanvas The render target to draw onto. @param iFrame The frame index to draw (should be in range [0, getFrameCount() - 1]) @param oLayers Information to decide what to draw on each layer. An animation is comprised of up to thirteen layers, numbered 0 through 12. Some animations will have different options for what to render on each layer. For example, patient animations generally have the different options on layer 1 as different clothes, so if layer 1 is set to the value 0, they may have their default clothes, and if set to the value 2 or 4 or 6, they may have other clothes. Play with the AnimView tool for a better understanding of layers, though note that while it can draw more than one option on each layer, this class can only draw a single option for each layer. @param iX The screen position to use as the animation X origin. @param iY The screen position to use as the animation Y origin. @param iFlags Zero or more THDrawFlags flags. */ void drawFrame(THRenderTarget* pCanvas, size_t iFrame, const THLayers_t& oLayers, int iX, int iY, uint32_t iFlags) const; void getFrameExtent(size_t iFrame, const THLayers_t& oLayers, int* pMinX, int* pMaxX, int* pMinY, int* pMaxY, uint32_t iFlags) const; size_t getFrameSound(size_t iFrame); bool hitTest(size_t iFrame, const THLayers_t& oLayers, int iX, int iY, uint32_t iFlags, int iTestX, int iTestY) const; bool setFrameMarker(size_t iFrame, int iX, int iY); bool setFrameSecondaryMarker(size_t iFrame, int iX, int iY); bool getFrameMarker(size_t iFrame, int* pX, int* pY); bool getFrameSecondaryMarker(size_t iFrame, int* pX, int* pY); //! Retrieve a custom animation by name and tile size. /*! @param sName Name of the animation. @param iTilesize Tile size of the animation. @return A set starting frames for the queried animation. */ const AnimationStartFrames &getNamedAnimations(const std::string &sName, int iTilesize) const; private: #if CORSIX_TH_USE_PACK_PRAGMAS #pragma pack(push) #pragma pack(1) #endif struct th_anim_t { uint16_t frame; // It could be that frame is a uint32_t rather than a uint16_t, which // would resolve the following unknown (which seems to always be zero). uint16_t unknown; } CORSIX_TH_PACKED_FLAGS; struct th_frame_t { uint32_t list_index; // These fields have something to do with width and height, but it's // not clear quite exactly how. uint8_t width; uint8_t height; // If non-zero, index into sound.dat filetable. uint8_t sound; // Combination of zero or more THFrameFlags values uint8_t flags; uint16_t next; } CORSIX_TH_PACKED_FLAGS; struct th_element_t { uint16_t table_position; uint8_t offx; uint8_t offy; // High nibble: The layer which the element belongs to [0, 12] // Low nibble: Zero or more THDrawFlags flags uint8_t flags; // The layer option / layer id uint8_t layerid; } CORSIX_TH_PACKED_FLAGS; #if CORSIX_TH_USE_PACK_PRAGMAS #pragma pack(pop) #endif struct frame_t { size_t iListIndex; ///< First entry in #m_vElementList (pointing to an element) for this frame. size_t iNextFrame; ///< Number of the next frame. unsigned int iSound; ///< Sound to play, if non-zero. unsigned int iFlags; ///< Flags of the frame. Bit 0=start of animation. // Bounding rectangle is with all layers / options enabled - used as a // quick test prior to a full pixel perfect test. int iBoundingLeft; ///< Left edge of the bounding rectangle of this frame. int iBoundingRight; ///< Right edge of the bounding rectangle of this frame. int iBoundingTop; ///< Top edge of the bounding rectangle of this frame. int iBoundingBottom; ///< Bottom edge of the bounding rectangle of this frame. // Markers are used to know where humanoids are on an frame. The // positions are pixels offsets from the centre of the frame's base // tile to the centre of the humanoid's feet. int iMarkerX; ///< X position of the first center of a humanoids feet. int iMarkerY; ///< Y position of the first center of a humanoids feet. int iSecondaryMarkerX; ///< X position of the second center of a humanoids feet. int iSecondaryMarkerY; ///< Y position of the second center of a humanoids feet. }; struct element_t { size_t iSprite; ///< Sprite number of the sprite sheet to display. uint32_t iFlags; ///< Flags of the sprite. ///< bit 0=flip vertically, bit 1=flip horizontally, ///< bit 2=draw 50% alpha, bit 3=draw 75% alpha. int iX; ///< X offset of the sprite. int iY; ///< Y offset of the sprite. uint8_t iLayer; ///< Layer class (0..12). uint8_t iLayerId; ///< Value of the layer class to match. THSpriteSheet *pSpriteSheet; ///< Sprite sheet to use for this element. }; std::vector m_vFirstFrames; ///< First frame number of an animation. std::vector m_vFrames; ///< The loaded frames. std::vector m_vElementList; ///< List of elements for a frame. std::vector m_vElements; ///< Sprite Elements. std::vector m_vCustomSheets; ///< Sprite sheets with custom graphics. NamedAnimationsMap m_oNamedAnimations; ///< Collected named animations. THSpriteSheet* m_pSpriteSheet; ///< Sprite sheet to use. THRenderTarget *m_pCanvas; ///< Video surface to use. size_t m_iAnimationCount; ///< Number of animations. size_t m_iFrameCount; ///< Number of frames. size_t m_iElementListCount; ///< Number of list elements. size_t m_iElementCount; ///< Number of sprite elements. //! Compute the bounding box of the frame. /*! @param oFrame Frame to inspect/set. */ void setBoundingBox(frame_t &oFrame); //! Load sprite elements from the input. /*! @param [inout] input Data to read. @param pSpriteSheet Sprite sheet to use. @param iNumElements Number of elements to read. @param [inout] iLoadedElements Number of loaded elements so far. @param iElementStart Offset of the first element. @param iElementCount Number of elements to load. @return Index of the first loaded element in #m_vElements. Negative value means failure. */ size_t loadElements(Input &input, THSpriteSheet *pSpriteSheet, size_t iNumElements, size_t &iLoadedElements, size_t iElementStart, size_t iElementCount); //! Construct a list element for every element, and a 0xFFFF at the end. /*! @param iFirstElement Index of the first element in #m_vElements. @param iNumElements Number of elements to add. @param [inout] iLoadedListElements Number of created list elements so far. @param iListStart Offset of the first created list element. @param iListCount Expected number of list elements to create. @return Index of the list elements, or a negative value to indicate failure. */ size_t makeListElements(size_t iFirstElement, size_t iNumElements, size_t &iLoadedListElements, size_t iListStart, size_t iListCount); //! Fix the flags of the first frame, and set the next frame of the last frame back to the first frame. /*! @param iFirst First frame of the animation, or 0xFFFFFFFFu. @param iLength Number of frames in the animation. */ void fixNextFrame(uint32_t iFirst, size_t iLength); }; struct THMapNode; class THAnimationBase : public THDrawable { public: THAnimationBase(); void removeFromTile(); void attachToTile(THMapNode *pMapNode, int layer); uint32_t getFlags() const {return m_iFlags;} int getX() const {return m_iX;} int getY() const {return m_iY;} void setFlags(uint32_t iFlags) {m_iFlags = iFlags;} void setPosition(int iX, int iY) {m_iX = iX, m_iY = iY;} void setLayer(int iLayer, int iId); void setLayersFrom(const THAnimationBase *pSrc) {m_oLayers = pSrc->m_oLayers;} // bool isMultipleFrameAnimation() { return false;} protected: //! X position on tile (not tile x-index) int m_iX; //! Y position on tile (not tile y-index) int m_iY; THLayers_t m_oLayers; }; class THAnimation : public THAnimationBase { public: THAnimation(); void setParent(THAnimation *pParent); void tick(); void draw(THRenderTarget* pCanvas, int iDestX, int iDestY); bool hitTest(int iDestX, int iDestY, int iTestX, int iTestY); void drawMorph(THRenderTarget* pCanvas, int iDestX, int iDestY); bool hitTestMorph(int iDestX, int iDestY, int iTestX, int iTestY); void drawChild(THRenderTarget* pCanvas, int iDestX, int iDestY); bool hitTestChild(int iDestX, int iDestY, int iTestX, int iTestY); THLinkList* getPrevious() {return m_pPrev;} size_t getAnimation() const {return m_iAnimation;} bool getMarker(int* pX, int* pY); bool getSecondaryMarker(int* pX, int* pY); size_t getFrame() const {return m_iFrame;} int getCropColumn() const {return m_iCropColumn;} void setAnimation(THAnimationManager* pManager, size_t iAnimation); void setMorphTarget(THAnimation *pMorphTarget, unsigned int iDurationFactor = 1); void setFrame(size_t iFrame); void setSpeed(int iX, int iY) {speed.x = iX, speed.y = iY;} void setCropColumn(int iColumn) {m_iCropColumn = iColumn;} void persist(LuaPersistWriter *pWriter) const; void depersist(LuaPersistReader *pReader); THAnimationManager* getAnimationManager(){ return m_pManager;} private: THAnimationManager *m_pManager; THAnimation* m_pMorphTarget; size_t m_iAnimation; ///< Animation number. size_t m_iFrame; ///< Frame number. union { struct { //! Amount to change m_iX per tick int x; //! Amount to change m_iY per tick int y; } speed; //! Some animations are tied to the marker of another animation and //! hence have a parent rather than a speed. THAnimation* m_pParent; }; size_t m_iSoundToPlay; int m_iCropColumn; }; class THSpriteRenderList : public THAnimationBase { public: THSpriteRenderList(); ~THSpriteRenderList(); void tick(); void draw(THRenderTarget* pCanvas, int iDestX, int iDestY); bool hitTest(int iDestX, int iDestY, int iTestX, int iTestY); void setSheet(THSpriteSheet* pSheet) {m_pSpriteSheet = pSheet;} void setSpeed(int iX, int iY) {m_iSpeedX = iX, m_iSpeedY = iY;} void setLifetime(int iLifetime); void appendSprite(size_t iSprite, int iX, int iY); bool isDead() const {return m_iLifetime == 0;} void persist(LuaPersistWriter *pWriter) const; void depersist(LuaPersistReader *pReader); private: struct _sprite_t { size_t iSprite; int iX; int iY; }; THSpriteSheet* m_pSpriteSheet; _sprite_t* m_pSprites; int m_iNumSprites; int m_iBufferSize; //! Amount to change m_iX per tick int m_iSpeedX; //! Amount to change m_iY per tick int m_iSpeedY; //! Number of ticks until reports as dead (-1 = never dies) int m_iLifetime; }; #endif // CORSIX_TH_TH_GFX_H_ CorsixTH-0.61/CorsixTH/Src/th_gfx_font.cpp000066400000000000000000000754701321660673500204340ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_gfx_font.h" #ifdef CORSIX_TH_USE_FREETYPE2 #include FT_GLYPH_H #include #include #endif #include #include #include static unsigned int utf8next(const char*& sString) { unsigned int iCode = *reinterpret_cast(sString++); unsigned int iContinuation; if(iCode & 0x80) { if((iCode & 0x40) == 0) { // Invalid encoding: character should not start with a continuation // byte. Hence return the Unicode replacement character. return 0xFFFD; } else { #define CONTINUATION_CHAR \ iContinuation = *reinterpret_cast(sString); \ if((iContinuation & 0xC0) != 0x80) \ /* Invalid encoding: not enough continuation characters. */ \ return 0xFFFD; \ iCode = (iCode << 6) | (iContinuation & 0x3F); \ ++sString iCode &= 0x3F; if(iCode & 0x20) { iCode &= 0x1F; if(iCode & 0x10) { iCode &= 0x0F; if(iCode & 0x08) { // Invalid encoding: too-long byte sequence. Hence // return the Unicode replacement character. return 0xFFFD; } CONTINUATION_CHAR; } CONTINUATION_CHAR; } CONTINUATION_CHAR; } #undef CONTINUATION_CHAR } return iCode; } #ifdef CORSIX_TH_USE_FREETYPE2 // Since these functions are only used when we use freetype2, this silences // warnings about defined and not used. static unsigned int utf8decode(const char* sString) { return utf8next(sString); } static const char* utf8prev(const char* sString) { do { --sString; } while(((*sString) & 0xC0) == 0x80); return sString; } #endif THBitmapFont::THBitmapFont() { m_pSpriteSheet = nullptr; m_iCharSep = 0; m_iLineSep = 0; } void THBitmapFont::setSpriteSheet(THSpriteSheet* pSpriteSheet) { m_pSpriteSheet = pSpriteSheet; } void THBitmapFont::setSeparation(int iCharSep, int iLineSep) { m_iCharSep = iCharSep; m_iLineSep = iLineSep; } static const uint16_t g_aUnicodeToCP437[0x60] = { 0xFF, 0xAD, 0x9B, 0x9C, 0x3F, 0x9D, 0x3F, 0x3F, 0x3F, 0x3F, 0xA6, 0xAE, 0xAA, 0x3F, 0x3F, 0x3F, 0xF8, 0xF1, 0xFD, 0x3F, 0x3F, 0x3F, 0x3F, 0xFA, 0x3F, 0x3F, 0xA7, 0xAF, 0xAC, 0xAB, 0x3F, 0xA8, 0x3F, 0x3F, 0x3F, 0x3F, 0x8E, 0x8F, 0x3F, 0x80, 0x3F, 0x90, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0xA5, 0x3F, 0x3F, 0x3F, 0x3F, 0x99, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x9A, 0x3F, 0x3F, 0xE1, 0x85, 0xA0, 0x83, 0x3F, 0x84, 0x86, 0x91, 0x87, 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, 0x3F, 0xA4, 0x95, 0xA2, 0x93, 0x3F, 0x94, 0xF6, 0x3F, 0x97, 0xA3, 0x96, 0x81, 0x3F, 0x3F, 0x98 }; static unsigned int unicodeToCodepage437(unsigned int iCodePoint) { if(iCodePoint < 0x80) return iCodePoint; if(iCodePoint < 0xA0) return '?'; if(iCodePoint < 0x100) return g_aUnicodeToCP437[iCodePoint - 0xA0]; switch(iCodePoint) { case 0x0192: return 0x9F; case 0x0393: return 0xE2; case 0x0398: return 0xE9; case 0x03A3: return 0xE4; case 0x03A6: return 0xE8; case 0x03A9: return 0xEA; case 0x03B1: return 0xE0; case 0x03B4: return 0xEB; case 0x03B5: return 0xEE; case 0x03BC: return 0xE6; case 0x03C0: return 0xE3; case 0x03C3: return 0xE5; case 0x03C4: return 0xE7; case 0x03C6: return 0xED; case 0x207F: return 0xFC; case 0x20A7: return 0x9E; case 0x2219: return 0xF9; case 0x221A: return 0xFB; case 0x221E: return 0xEC; case 0x2229: return 0xEF; case 0x2248: return 0xF7; case 0x2261: return 0xF0; case 0x2264: return 0xF3; case 0x2265: return 0xF2; case 0x2310: return 0xA9; case 0x2320: return 0xF4; case 0x2321: return 0xF5; case 0x25A0: return 0xFE; } return 0x3F; } THFontDrawArea THBitmapFont::getTextSize(const char* sMessage, size_t iMessageLength, int iMaxWidth) const { return drawTextWrapped(nullptr, sMessage, iMessageLength, 0, 0, iMaxWidth, INT_MAX, 0); } void THBitmapFont::drawText(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY) const { pCanvas->startNonOverlapping(); if(iMessageLength != 0 && m_pSpriteSheet != nullptr) { const unsigned int iFirstASCII = 31; unsigned int iLastASCII = static_cast(m_pSpriteSheet->getSpriteCount()) + iFirstASCII; const char* sMessageEnd = sMessage + iMessageLength; while(sMessage != sMessageEnd) { unsigned int iChar = unicodeToCodepage437(utf8next(sMessage)); if(iFirstASCII <= iChar && iChar <= iLastASCII) { iChar -= iFirstASCII; unsigned int iWidth, iHeight; m_pSpriteSheet->drawSprite(pCanvas, iChar, iX, iY, 0); m_pSpriteSheet->getSpriteSizeUnchecked(iChar, &iWidth, &iHeight); iX += iWidth + m_iCharSep; } } } pCanvas->finishNonOverlapping(); } THFontDrawArea THBitmapFont::drawTextWrapped(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY, int iWidth, int iMaxRows, int iSkipRows, eTHAlign eAlign) const { THFontDrawArea oDrawArea = {}; int iSkippedRows = 0; if(iMessageLength != 0 && m_pSpriteSheet != nullptr) { const unsigned int iFirstASCII = 31; unsigned int iLastASCII = static_cast(m_pSpriteSheet->getSpriteCount()) + iFirstASCII; const char* sMessageEnd = sMessage + iMessageLength; while(sMessage != sMessageEnd && oDrawArea.iNumRows < iMaxRows) { const char* sBreakPosition = sMessageEnd; const char* sLastGoodBreakPosition = sBreakPosition; int iMsgWidth = -m_iCharSep; int iMsgBreakWidth = iMsgWidth; unsigned int iTallest = 0; const char* s; bool foundNewLine = false; unsigned int iNextChar = 0; for(s = sMessage; s != sMessageEnd; ) { const char* sOld = s; unsigned int iChar = unicodeToCodepage437(utf8next(s)); iNextChar = unicodeToCodepage437(static_cast(*s)); if((iChar == '\n' && iNextChar == '\n') || (iChar == '/' && iNextChar == '/')) { foundNewLine = true; iMsgBreakWidth = iMsgWidth; sBreakPosition = sOld; break; } unsigned int iCharWidth = 0, iCharHeight = 0; if(iFirstASCII <= iChar && iChar <= iLastASCII) { m_pSpriteSheet->getSpriteSizeUnchecked(iChar - iFirstASCII, &iCharWidth, &iCharHeight); } iMsgWidth += m_iCharSep + iCharWidth; if(iChar == ' ') { sLastGoodBreakPosition = sOld; iMsgBreakWidth = iMsgWidth - iCharWidth; } if(iMsgWidth > iWidth) { sBreakPosition = sLastGoodBreakPosition; break; } if(iCharHeight > iTallest) iTallest = iCharHeight; } if(s == sMessageEnd) iMsgBreakWidth = iMsgWidth; if(iMsgBreakWidth > oDrawArea.iWidth) oDrawArea.iWidth = iMsgBreakWidth; if(iSkippedRows >= iSkipRows) { if(pCanvas) { int iXOffset = 0; if(iMsgBreakWidth < iWidth) iXOffset = (iWidth - iMsgBreakWidth) * static_cast(eAlign) / 2; drawText(pCanvas, sMessage, sBreakPosition - sMessage, iX + iXOffset, iY); } iY += static_cast(iTallest) + m_iLineSep; oDrawArea.iEndX = iMsgWidth; oDrawArea.iNumRows++; if (foundNewLine) { iY += static_cast(iTallest) + m_iLineSep; oDrawArea.iNumRows++; } } else { iSkippedRows++; if(foundNewLine) { if(iSkippedRows == iSkipRows) { iY += static_cast(iTallest) + m_iLineSep; oDrawArea.iNumRows++; } iSkippedRows++; } } sMessage = sBreakPosition; if(sMessage != sMessageEnd) { utf8next(sMessage); if(foundNewLine) { utf8next(sMessage); } } foundNewLine = 0; } } oDrawArea.iEndX = iX + oDrawArea.iEndX; oDrawArea.iEndY = iY; return oDrawArea; } #ifdef CORSIX_TH_USE_FREETYPE2 FT_Library THFreeTypeFont::ms_pFreeType = nullptr; int THFreeTypeFont::ms_iFreeTypeInitCount = 0; THFreeTypeFont::THFreeTypeFont() { m_pFace = nullptr; m_bDoneFreeTypeInit = false; for(cached_text_t* pEntry = m_aCache; pEntry != m_aCache + (1 << ms_CacheSizeLog2); ++pEntry) { pEntry->sMessage = nullptr; pEntry->iMessageLength = 0; pEntry->iMessageBufferLength = 0; pEntry->eAlign = Align_Left; pEntry->iWidth = 0; pEntry->iHeight = 0; pEntry->iWidestLine = 0; pEntry->iLastX = 0; pEntry->pData = nullptr; pEntry->bIsValid = false; pEntry->pTexture = nullptr; } } THFreeTypeFont::~THFreeTypeFont() { for(cached_text_t* pEntry = m_aCache; pEntry != m_aCache + (1 << ms_CacheSizeLog2); ++pEntry) { _freeTexture(pEntry); } if(m_pFace != nullptr) FT_Done_Face(m_pFace); if(m_bDoneFreeTypeInit) { if(--ms_iFreeTypeInitCount == 0) { FT_Done_FreeType(ms_pFreeType); ms_pFreeType = nullptr; } } } const char* THFreeTypeFont::getCopyrightNotice() { return "Portions of this software are copyright \xC2\xA9 2010 " \ "The FreeType Project (www.freetype.org). All rights reserved."; } FT_Error THFreeTypeFont::initialise() { if(m_bDoneFreeTypeInit) return FT_Err_Ok; if(ms_iFreeTypeInitCount == 0) { int iError = FT_Init_FreeType(&ms_pFreeType); if(iError != FT_Err_Ok) return iError; } ++ms_iFreeTypeInitCount; m_bDoneFreeTypeInit = true; return FT_Err_Ok; } void THFreeTypeFont::clearCache() { for(cached_text_t* pEntry = m_aCache; pEntry != m_aCache + (1 << ms_CacheSizeLog2); ++pEntry) { pEntry->bIsValid = false; _freeTexture(pEntry); } } FT_Error THFreeTypeFont::setFace(const uint8_t* pData, size_t iLength) { int iError; if(ms_pFreeType == nullptr) { iError = initialise(); if(iError != FT_Err_Ok) return iError; } if(m_pFace) { iError = FT_Done_Face(m_pFace); if(iError != FT_Err_Ok) return iError; m_pFace = nullptr; } iError = FT_New_Memory_Face(ms_pFreeType, pData, static_cast(iLength), 0, &m_pFace); return iError; } FT_Error THFreeTypeFont::matchBitmapFont(THSpriteSheet* pBitmapFontSpriteSheet) { if(pBitmapFontSpriteSheet == nullptr) return FT_Err_Invalid_Argument; // Try to take the size and colour of a standard character (em is generally // the standard font character, but for fonts which only have numbers, zero // seems like the next best choice). for(const char* sCharToTry = "M0"; *sCharToTry; ++sCharToTry) { unsigned int iWidth, iHeight; unsigned int iSprite = *sCharToTry - 31; if(pBitmapFontSpriteSheet->getSpriteSize(iSprite, &iWidth, &iHeight) && pBitmapFontSpriteSheet->getSpriteAverageColour(iSprite, &m_oColour) && iWidth > 1 && iHeight > 1) { return setPixelSize(iWidth, iHeight); } } // Take the average size of all characters, and the colour of one of them. unsigned int iWidthSum = 0, iHeightSum = 0, iAverageNum = 0; for(unsigned int i = 0; i < pBitmapFontSpriteSheet->getSpriteCount(); ++i) { unsigned int iWidth, iHeight; pBitmapFontSpriteSheet->getSpriteSizeUnchecked(i, &iWidth, &iHeight); if(iWidth <= 1 || iHeight <= 1) continue; if(!pBitmapFontSpriteSheet->getSpriteAverageColour(i, &m_oColour)) continue; iWidthSum += iWidth; iHeightSum += iHeight; ++iAverageNum; } if(iAverageNum == 0) return FT_Err_Divide_By_Zero; return setPixelSize((iWidthSum + iAverageNum / 2) / iAverageNum, (iHeightSum + iAverageNum / 2) / iAverageNum); } FT_Error THFreeTypeFont::setPixelSize(int iWidth, int iHeight) { if(m_pFace == nullptr) return FT_Err_Invalid_Face_Handle; if(_isMonochrome() || iHeight <= 14 || iWidth <= 9) { // Look for a bitmap strike of a similar size int iBestBitmapScore = 50; FT_Int iBestBitmapIndex = -1; for(FT_Int i = 0; i < m_pFace->num_fixed_sizes; ++i) { if(m_pFace->available_sizes[i].height > iHeight) continue; int iDeltaH = iHeight - m_pFace->available_sizes[i].height; int iDeltaW = m_pFace->available_sizes[i].width - iWidth; int iScore = iDeltaH * iDeltaH * 3 + iDeltaW * iDeltaW; if(iScore < iBestBitmapScore) { iBestBitmapScore = iScore; iBestBitmapIndex = i; } } // Select the bitmap strike, if there was one if(iBestBitmapIndex != -1) return FT_Select_Size(m_pFace, iBestBitmapIndex); } // Go with the original size request if there was no bitmap strike, unless // the size was very small, in which case scale things up, as vector fonts // look rather poor at small sizes. if(iHeight < 14) { iWidth = iWidth * 14 / iHeight; iHeight = 14; } if(iWidth < 9) { iHeight = iHeight * 9 / iWidth; iWidth = 9; } return FT_Set_Pixel_Sizes(m_pFace, iWidth, iHeight); } THFontDrawArea THFreeTypeFont::getTextSize(const char* sMessage, size_t iMessageLength, int iMaxWidth) const { return drawTextWrapped(nullptr, sMessage, iMessageLength, 0, 0, iMaxWidth, INT_MAX, 0); } void THFreeTypeFont::drawText(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY) const { drawTextWrapped(pCanvas, sMessage, iMessageLength, iX, iY, INT_MAX); } struct codepoint_glyph_t { FT_Glyph_Metrics oMetrics; FT_Glyph pGlyph; FT_UInt iGlyphIndex; }; THFontDrawArea THFreeTypeFont::drawTextWrapped(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY, int iWidth, int iMaxRows, int iSkipRows, eTHAlign eAlign) const { THFontDrawArea oDrawArea = {}; int iNumRows = 0; int iHandledRows = 0; // Calculate an index into the cache to use for this piece of text. size_t iHash = iMessageLength + (static_cast(iMaxRows) << (ms_CacheSizeLog2 / 8)) + (static_cast(iSkipRows) << (ms_CacheSizeLog2 / 4)) + (static_cast(iWidth) << (ms_CacheSizeLog2 / 2)) + (static_cast(eAlign) << ms_CacheSizeLog2); for(size_t i = 0; i < iMessageLength; ++i) iHash ^= (iHash << 5) + (iHash >> 2) + static_cast(sMessage[i]); iHash &= (1 << ms_CacheSizeLog2) - 1; cached_text_t* pEntry = m_aCache + iHash; if(pEntry->iMessageLength != iMessageLength || pEntry->iWidth > iWidth || (iWidth != INT_MAX && pEntry->iWidth < iWidth) || pEntry->eAlign != eAlign || !pEntry->bIsValid || std::memcmp(pEntry->sMessage, sMessage, iMessageLength) != 0) { // Cache entry does not match the message being drawn, so discard the // cache entry. _freeTexture(pEntry); delete[] pEntry->pData; pEntry->pData = nullptr; pEntry->bIsValid = false; // Set the entry metadata to that of the new message. if(iMessageLength > pEntry->iMessageBufferLength) { delete[] pEntry->sMessage; pEntry->sMessage = new char[iMessageLength]; pEntry->iMessageBufferLength = iMessageLength; } std::memcpy(pEntry->sMessage, sMessage, iMessageLength); pEntry->iMessageLength = iMessageLength; pEntry->iWidth = iWidth; pEntry->eAlign = eAlign; // Split the message into lines, and determine the position within the // line for each character. std::vector > vLines; std::vector vCharPositions(iMessageLength); std::map mapGlyphs; vLines.reserve(2); FT_Vector ftvPen = {0, 0}; FT_Bool bUseKerning = FT_HAS_KERNING(m_pFace); FT_UInt iPreviousGlyphIndex = 0; const char* sMessageStart = sMessage; const char* sMessageEnd = sMessage + iMessageLength; const char* sLineStart = sMessageStart; const char* sLineBreakPosition = sLineStart; while(sMessage != sMessageEnd) { const char* sOldMessage = sMessage; unsigned int iCode = utf8next(sMessage); unsigned int iNextCode = *reinterpret_cast(sMessage); bool bIsNewLine = (iCode == '\n' && iNextCode == '\n') || (iCode == '/' && iNextCode == '/'); // Just replace single line breaks with space. if(!bIsNewLine && iCode == '\n') { iCode = ' '; } codepoint_glyph_t& oGlyph = mapGlyphs[iCode]; if(oGlyph.pGlyph == nullptr) { oGlyph.iGlyphIndex = FT_Get_Char_Index(m_pFace, iCode); /* FT_Error iError = */ FT_Load_Glyph(m_pFace, oGlyph.iGlyphIndex, FT_LOAD_DEFAULT); // TODO: iError != FT_Err_Ok /* iError = */ FT_Get_Glyph(m_pFace->glyph, &oGlyph.pGlyph); // TODO: iError != FT_Err_Ok oGlyph.oMetrics = m_pFace->glyph->metrics; } // Apply kerning if(bUseKerning && iPreviousGlyphIndex && oGlyph.iGlyphIndex) { FT_Vector ftvKerning; FT_Get_Kerning(m_pFace, iPreviousGlyphIndex, oGlyph.iGlyphIndex, FT_KERNING_DEFAULT, &ftvKerning); ftvPen.x += ftvKerning.x; ftvPen.y += ftvKerning.y; } // Make an automatic line break if one is needed. if((ftvPen.x + oGlyph.oMetrics.horiBearingX + oGlyph.oMetrics.width + 63) / 64 >= iWidth || bIsNewLine) { if(bIsNewLine) { sLineBreakPosition = sOldMessage; } ftvPen.x = ftvPen.y = 0; iPreviousGlyphIndex = 0; if(sLineStart != sLineBreakPosition) { // Only really save if we have skipped enough lines if(iHandledRows >= iSkipRows) { vLines.push_back(std::make_pair(sLineStart, sLineBreakPosition)); } if(bIsNewLine) { if(iHandledRows + 1 >= iSkipRows) { vLines.push_back(std::make_pair(sLineBreakPosition, sLineBreakPosition)); } utf8next(sLineBreakPosition); iHandledRows++; } sMessage = sLineBreakPosition; utf8next(sMessage); sLineStart = sMessage; } else { if(iHandledRows >= iSkipRows) { vLines.push_back(std::make_pair(sLineStart, sOldMessage)); } if(bIsNewLine) { utf8next(sMessage); sLineStart = sLineBreakPosition = sMessage; } else { sMessage = sLineStart = sLineBreakPosition = sOldMessage; } } iHandledRows++; continue; } // Determine if a line can be broken at the current position. if(iCode == ' ') sLineBreakPosition = sOldMessage; // Save (unless we are skipping lines) and advance the pen. if(iHandledRows >= iSkipRows) { vCharPositions[sOldMessage - sMessageStart] = ftvPen; } iPreviousGlyphIndex = oGlyph.iGlyphIndex; ftvPen.x += oGlyph.oMetrics.horiAdvance; } if(sLineStart != sMessageEnd) vLines.push_back(std::make_pair(sLineStart, sMessageEnd)); sMessage = sMessageStart; // Finalise the position of each character (alignment might change X, // and baseline / lines will change Y), and calculate overall height // and widest line. FT_Pos iPriorLinesHeight = 0; FT_Pos iLineWidth = 0, iAlignDelta = 0, iWidestLine = 0; const FT_Pos iLineSpacing = 2 << 6; codepoint_glyph_t& oGlyph = mapGlyphs['l']; FT_Pos iBearingY = oGlyph.oMetrics.horiBearingY; FT_Pos iNormalLineHeight = oGlyph.oMetrics.height - iBearingY; iBearingY = ((iBearingY + 63) >> 6) << 6; // Pixel-align iNormalLineHeight += iBearingY; iNormalLineHeight += iLineSpacing; iNormalLineHeight = ((iNormalLineHeight + 63) >> 6) << 6; // Pixel-align for(std::vector >::const_iterator itr = vLines.begin(), itrEnd = vLines.end(); itr != itrEnd && iNumRows < iMaxRows; ++itr) { // Calculate the X change resulting from alignment. const char* sLastChar = utf8prev(itr->second); codepoint_glyph_t& oLastGlyph = mapGlyphs[utf8decode(sLastChar)]; iLineWidth = vCharPositions[sLastChar - sMessage].x + oLastGlyph.oMetrics.horiBearingX + oLastGlyph.oMetrics.width; if((iLineWidth >> 6) < iWidth) { iAlignDelta = ((iWidth * 64 - iLineWidth) * static_cast(eAlign)) / 2; } if(iLineWidth > iWidestLine) iWidestLine = iLineWidth; // Calculate the line height and baseline position. FT_Pos iLineHeight = 0; FT_Pos iBaselinePos = 0; for(const char* s = itr->first; s != itr->second; ) { codepoint_glyph_t& oGlyph = mapGlyphs[utf8next(s)]; FT_Pos iBearingY = oGlyph.oMetrics.horiBearingY; FT_Pos iCoBearingY = oGlyph.oMetrics.height - iBearingY; if(iBearingY > iBaselinePos) iBaselinePos = iBearingY; if(iCoBearingY > iLineHeight) iLineHeight = iCoBearingY; } iBaselinePos = ((iBaselinePos + 63) >> 6) << 6; // Pixel-align iLineHeight += iBaselinePos; iLineHeight += iLineSpacing; iLineHeight = ((iLineHeight + 63) >> 6) << 6; // Pixel-align iNormalLineHeight = std::max(iNormalLineHeight, iLineHeight); // Apply the character position changes. for(const char* s = itr->first; s != itr->second; utf8next(s)) { FT_Vector& ftvPos = vCharPositions[s - sMessage]; ftvPos.x += iAlignDelta; ftvPos.y += iBaselinePos + iPriorLinesHeight; } // Empty lines is a special case if(itr->first == itr->second) { iPriorLinesHeight += iNormalLineHeight; } else { iPriorLinesHeight += iLineHeight; } iNumRows++; } if(iPriorLinesHeight > 0) iPriorLinesHeight -= iLineSpacing; pEntry->iHeight = static_cast(1 + (iPriorLinesHeight >> 6)); pEntry->iWidestLine = static_cast(1 + (iWidestLine >> 6)); pEntry->iNumRows = iNumRows; if(iWidth == INT_MAX) pEntry->iWidth = pEntry->iWidestLine; pEntry->iLastX = 1 + (static_cast(iLineWidth + iAlignDelta) >> 6); // Get a bitmap for each glyph. bool bIsMonochrome = _isMonochrome(); FT_Render_Mode eRenderMode = bIsMonochrome ? FT_RENDER_MODE_MONO : FT_RENDER_MODE_NORMAL; for(std::map::iterator itr = mapGlyphs.begin(), itrEnd = mapGlyphs.end(); itr != itrEnd; ++itr) { FT_Glyph_To_Bitmap(&itr->second.pGlyph, eRenderMode, nullptr, 1); } // Prepare a canvas for rendering. pEntry->pData = new uint8_t[pEntry->iWidth * pEntry->iHeight]; std::memset(pEntry->pData, 0, pEntry->iWidth * pEntry->iHeight); int iDrawnLines = 0; // Render each character to the canvas. for(std::vector >::const_iterator itr = vLines.begin(), itrEnd = vLines.end(); itr != itrEnd && iDrawnLines < iMaxRows + iSkipRows; ++itr) { iDrawnLines++; for(const char* s = itr->first; s != itr->second; ) { FT_Vector& ftvPos = vCharPositions[s - sMessage]; unsigned int iCode = utf8next(s); if(iCode == '\n') { iCode = ' '; } FT_BitmapGlyph pGlyph = reinterpret_cast( mapGlyphs[iCode].pGlyph); FT_Pos x = pGlyph->left + (ftvPos.x >> 6); FT_Pos y = (ftvPos.y >> 6) - pGlyph->top; // We may have asked for grayscale but been given monochrome, // hence use the bitmap's pixel_mode rather than bIsMonochrome. switch(pGlyph->bitmap.pixel_mode) { case FT_PIXEL_MODE_GRAY: _renderGray(pEntry, &pGlyph->bitmap, x, y); break; case FT_PIXEL_MODE_MONO: _renderMono(pEntry, &pGlyph->bitmap, x, y); break; } } } // Free all glyphs. for(std::map::const_iterator itr = mapGlyphs.begin(), itrEnd = mapGlyphs.end(); itr != itrEnd; ++itr) { FT_Done_Glyph(itr->second.pGlyph); } pEntry->bIsValid = true; } if (pCanvas != nullptr) { if (pEntry->pTexture == nullptr) _makeTexture(pCanvas, pEntry); _drawTexture(pCanvas, pEntry, iX, iY); } oDrawArea.iWidth = pEntry->iWidestLine; oDrawArea.iEndX = iX + pEntry->iLastX; oDrawArea.iEndY = iY + pEntry->iHeight; oDrawArea.iNumRows = pEntry->iNumRows; return oDrawArea; } // In theory, the renderers should only be invoked with coordinates which end // up within the canvas being rendered to. In practice, this might not happen, // at which point the following line can be removed. // #define TRUST_RENDER_COORDS void THFreeTypeFont::_renderMono(cached_text_t *pCacheEntry, FT_Bitmap* pBitmap, FT_Pos x, FT_Pos y) const { uint8_t* pOutRow = pCacheEntry->pData + y * pCacheEntry->iWidth + x; uint8_t* pInRow = pBitmap->buffer; for(int iY = 0; iY < pBitmap->rows; ++iY, pOutRow += pCacheEntry->iWidth, pInRow += pBitmap->pitch) { #ifndef TRUST_RENDER_COORDS if(y + iY < 0) continue; if(y + iY >= pCacheEntry->iHeight) break; #endif uint8_t *pIn = pInRow, *pOut = pOutRow; uint8_t iMask = 0x80; for(int iX = 0; iX < pBitmap->width; ++iX, ++pOut) { #ifndef TRUST_RENDER_COORDS if(x + iX < 0) continue; if(x + iX >= pCacheEntry->iWidth) break; #endif if(*pIn & iMask) *pOut = 0xFF; iMask = static_cast(iMask / 2); if(iMask == 0) { iMask = 0x80; ++pIn; } } } } void THFreeTypeFont::_renderGray(cached_text_t *pCacheEntry, FT_Bitmap* pBitmap, FT_Pos x, FT_Pos y) const { uint8_t* pOutRow = pCacheEntry->pData + y * pCacheEntry->iWidth + x; uint8_t* pInRow = pBitmap->buffer; for(int iY = 0; iY < pBitmap->rows; ++iY, pOutRow += pCacheEntry->iWidth, pInRow += pBitmap->pitch) { #ifndef TRUST_RENDER_COORDS if(y + iY < 0) continue; if(y + iY >= pCacheEntry->iHeight) break; #endif uint8_t *pIn = pInRow, *pOut = pOutRow; for(int iX = 0; iX < pBitmap->width; ++iX, ++pIn, ++pOut) { #ifndef TRUST_RENDER_COORDS if(x + iX < 0) continue; if(x + iX >= pCacheEntry->iWidth) break; #endif unsigned int iIn = *pIn; unsigned int iOut = *pOut; uint8_t cMerged = static_cast(iIn + iOut - (iIn * iOut) / 255); *pOut = cMerged; } } } #endif // CORSIX_TH_USE_FREETYPE2 CorsixTH-0.61/CorsixTH/Src/th_gfx_font.h000066400000000000000000000312401321660673500200640ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_GFX_FONT_H_ #define CORSIX_TH_TH_GFX_FONT_H_ #include "th_gfx.h" #ifdef CORSIX_TH_USE_FREETYPE2 #include #include FT_FREETYPE_H #endif enum eTHAlign { Align_Left = 0, Align_Center = 1, Align_Right = 2, }; /** Structure for the bounds of a text string that is rendered to the screen. */ struct THFontDrawArea { //! Number of rows the rendered text spans int iNumRows; //! Left X-coordinate for the start of the text int iStartX; //! Right X-coordinate for the right part of the last letter rendered int iEndX; //! Top Y-coordinate for the start of the text int iStartY; //! Bottom Y-coordinate for the end of the text int iEndY; //! Width of the widest line in the text int iWidth; }; class THFont { public: virtual ~THFont() = default; //! Get the size of drawn text. /*! If iMaxWidth is specified the text will wrap, so that the height can span multiple rows. Otherwise gets the size of a single line of text. @param sMessage A UTF-8 encoded string containing a single line of text to measure the width and height of. @param iMessageLength The length, in bytes (not characters), of the string at sMessage. @param iMaxWidth The maximum length, in pixels, that the text may occupy. Default is INT_MAX. */ virtual THFontDrawArea getTextSize(const char* sMessage, size_t iMessageLength, int iMaxWidth = INT_MAX) const = 0; //! Draw a single line of text /*! @param pCanvas The render target to draw onto. @param sMessage A UTF-8 encoded string containing a single line of text to draw. @param iMessageLength The length, in bytes (not characters), of the string at sMessage. @param iX The X coordinate of the top-left corner of the bounding rectangle for the drawn text. @param iY The Y coordinate of the top-left corner of the bounding rectangle for the drawn text. */ virtual void drawText(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY) const = 0; //! Draw a single line of text, splitting it at word boundaries /*! This function still only draws a single line of text (i.e. any line breaks like \r and \n in sMessage are ignored), but inserts line breaks between words so that no single line is wider than iWidth pixels. If iMaxRows is specified it will simply cut after that many rows. @param pCanvas The canvas on which to draw. Can be nullptr, in which case nothing is drawn, but other calculations are still made. @param sMessage The line of text to draw, encoded in CP437. @param iMessageLength The length (in bytes) of sMessage. @param iX The X position to start drawing on the canvas. @param iY The Y position to start drawing on the canvas. @param iWidth The maximum width of each line of text. @param iMaxRows The maximum number of rows to draw. Default is INT_MAX. @param iSkipRows Start rendering text after skipping this many rows. @param eAlign How to align each line of text if the width of the line of text is smaller than iWidth. */ virtual THFontDrawArea drawTextWrapped(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY, int iWidth, int iMaxRows = INT_MAX, int iSkipRows = 0, eTHAlign eAlign = Align_Left) const = 0; }; class THBitmapFont final : public THFont { public: THBitmapFont(); //! Set the character glyph sprite sheet /*! The sprite sheet should have the space character (ASCII 0x20) at sprite index 1, and other ASCII characters following on in simple order (i.e. '!' (ASCII 0x21) at index 2, 'A' (ASCII 0x41) at index 34, etc.) */ void setSpriteSheet(THSpriteSheet* pSpriteSheet); THSpriteSheet* getSpriteSheet() {return m_pSpriteSheet;} //! Set the separation between characters and between lines /*! Generally, the sprite sheet glyphs will already include separation, and thus no extra separation is required (set iCharSep and iLineSep to 0). */ void setSeparation(int iCharSep, int iLineSep); THFontDrawArea getTextSize(const char* sMessage, size_t iMessageLength, int iMaxWidth = INT_MAX) const override; void drawText(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY) const override; THFontDrawArea drawTextWrapped(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY, int iWidth, int iMaxRows = INT_MAX, int iSkipRows = 0, eTHAlign eAlign = Align_Left) const override; private: THSpriteSheet* m_pSpriteSheet; int m_iCharSep; int m_iLineSep; }; #ifdef CORSIX_TH_USE_FREETYPE2 //! Adaptor around the FreeType2 library to a THFont. /*! Due to the relatively high cost of rendering a message with FreeType, this class implements internal caching of messages, so rendering a message once will be quite expensive, but subsequently rendering the same message again will be quite cheap (provided that it hasn't fallen out of the cache). Unlike THBitmapFont which sits entirely on top of existing interfaces, some of the internal methods of this class are implemented by each individual rendering engine (said methods are roughly for the equivalent of the THRawBitmap class, but with an alpha channel, and a single colour rather than a palette). */ class THFreeTypeFont final : public THFont { public: THFreeTypeFont(); ~THFreeTypeFont(); //! Get the copyright notice which should be displayed for FreeType2. /*! To comply with the FreeType2 license, the string returned by this function needs to be displayed at some point. @return A null-terminated UTF-8 encoded string. */ static const char* getCopyrightNotice(); //! Initialise the FreeType2 library. /*! This will be called automatically by setFace() as required. */ FT_Error initialise(); //! Remove all cached strings, as our graphics context has changed void clearCache(); //! Set the font face to be used. /*! @param pData Pointer to the start of a font file loaded into memory. This block of memory must remain valid for at least the lifetime of the THFreeTypeFont objcect. @param iLength The size, in bytes, of the font file at pData. */ FT_Error setFace(const uint8_t* pData, size_t iLength); //! Set the font size and colour to match that of a bitmap font. /*! Note that the matching is done on a best-effort basis, and will likely not be perfect. This must be called after setFace(). @param pBitmapFontSpriteSheet The sprite sheet of the bitmap font. */ FT_Error matchBitmapFont(THSpriteSheet* pBitmapFontSpriteSheet); //! Set the ideal character size using pixel values. /*! Note that the given size might be changed a small amount if doing so would result in a much nicer rendered font. This must be called after setFace(). */ FT_Error setPixelSize(int iWidth, int iHeight); THFontDrawArea getTextSize(const char* sMessage, size_t iMessageLength, int iMaxWidth = INT_MAX) const override; void drawText(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY) const override; THFontDrawArea drawTextWrapped(THRenderTarget* pCanvas, const char* sMessage, size_t iMessageLength, int iX, int iY, int iWidth, int iMaxRows = INT_MAX, int iSkipRows = 0, eTHAlign eAlign = Align_Left) const override; private: struct cached_text_t { //! The text being converted to pixels char* sMessage; //! Raw pixel data in row major 8-bit greyscale uint8_t* pData; //! Generated texture ready to be rendered SDL_Texture* pTexture; //! The length of sMessage size_t iMessageLength; //! The size of the buffer allocated to store sMessage size_t iMessageBufferLength; //! Width of the image to draw int iWidth; //! Height of the image to draw int iHeight; //! The width of the longest line of text in in the textbox in pixels int iWidestLine; //! X Coordinate trailing the last character in canvas coordinates int iLastX; //! Number of rows required int iNumRows; //! Alignment of the message in the box eTHAlign eAlign; //! True when the pData reflects the sMessage given the size constraints bool bIsValid; }; //! Render a FreeType2 monochrome bitmap to a cache canvas. void _renderMono(cached_text_t *pCacheEntry, FT_Bitmap* pBitmap, FT_Pos x, FT_Pos y) const; //! Render a FreeType2 grayscale bitmap to a cache canvas. void _renderGray(cached_text_t *pCacheEntry, FT_Bitmap* pBitmap, FT_Pos x, FT_Pos y) const; static FT_Library ms_pFreeType; static int ms_iFreeTypeInitCount; static const int ms_CacheSizeLog2 = 7; FT_Face m_pFace; THColour m_oColour; bool m_bDoneFreeTypeInit; mutable cached_text_t m_aCache[1 << ms_CacheSizeLog2]; // The following five methods are implemented by the rendering engine. //! Query if 1-bit monochrome or 8-bit grayscale rendering should be used. /*! @return true if 1-bit monochrome rendering should be used, false if 8-bit grayscale rendering should be used (though in the latter case, 1-bit rendering might still get used). */ bool _isMonochrome() const; //! Convert a cache canvas containing rendered text into a texture. /*! @param pEventualCanvas A pointer to the rendertarget we'll be using to draw this. @param pCacheEntry A cache entry whose pData field points to a pixmap of size iWidth by iHeight. This method will convert said pixmap to an object which can be used by the rendering engine, and store the result in the pTexture or iTexture field. */ void _makeTexture(THRenderTarget *pEventualCanvas, cached_text_t* pCacheEntry) const; //! Free a previously-made texture of a cache entry. /*! This call should free all the resources previously allocated by a call to _makeTexture() and set the texture field to indicate no texture. @param pCacheEntry A cache entry previously passed to _makeTexture(). */ void _freeTexture(cached_text_t* pCacheEntry) const; //! Render a previously-made texture of a cache entry. /*! @param pCanvas The canvas on which to draw. @param pCacheEntry A cache entry containing the texture to draw, which will have been stored in the pTexture or iTexture field by a prior call to _makeTexture(). @param iX The X position at which to draw the texture on the canvas. @param iY The Y position at which to draw the texture on the canvas. */ void _drawTexture(THRenderTarget* pCanvas, cached_text_t* pCacheEntry, int iX, int iY) const; }; #endif // CORSIX_TH_USE_FREETYPE2 #endif // CORSIX_TH_TH_GFX_FONT_H_ CorsixTH-0.61/CorsixTH/Src/th_gfx_sdl.cpp000066400000000000000000001333341321660673500202420ustar00rootroot00000000000000/* Copyright (c) 2009-2013 Peter "Corsix" Cawley and Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_gfx.h" #ifdef CORSIX_TH_USE_FREETYPE2 #include "th_gfx_font.h" #endif #include "th_map.h" #include #include #include #include #include FullColourRenderer::FullColourRenderer(int iWidth, int iHeight) : m_iWidth(iWidth), m_iHeight(iHeight) { m_iX = 0; m_iY = 0; } //! Convert a colour to an equivalent grey scale level. /*! @param iOpacity Opacity of the pixel. @param iR Red colour intensity. @param iG Green colour intensity. @param iB Blue colour intensity. @return 32bpp colour pixel in grey scale. */ static inline uint32_t makeGreyScale(uint8_t iOpacity, uint8_t iR, uint8_t iG, uint8_t iB) { // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale // 0.2126*R + 0.7152*G + 0.0722*B // 0.2126 * 65536 = 13932.9536 -> 1393 // 0.7152 * 65536 = 46871.3472 // 0.0722 * 65536 = 4731.6992 -> 4732 // 13933 + 46871 + 4732 = 65536 = 2**16 uint8_t iGrey = static_cast((13933 * iR + 46871 * iG + 4732 * iB) >> 16); return THPalette::packARGB(iOpacity, iGrey, iGrey, iGrey); } //! Convert a colour by swapping red and blue channel. /*! @param iOpacity Opacity of the pixel. @param iR Red colour intensity. @param iG Green colour intensity. @param iB Blue colour intensity. @return 32bpp colour pixel with red and blue swapped. */ static inline uint32_t makeSwapRedBlue(uint8_t iOpacity, uint8_t iR, uint8_t iG, uint8_t iB) { // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale // The Y factor for red is 0.2126, and for blue 0.0722. This means red is about 3 times stronger than blue. // Simple swapping channels will thus distort the balance. This code compensates for that by computing // red = blue * 0.0722 / 0.2126 = blue * 1083 / 3189 // blue = red * 0.2126 / 0.0722 = red * 1063 / 361 (clipped at max blue, 255) uint8_t iNewRed = static_cast(iB * 1083 / 3189); int iNewBlue = iR * 1063 / 361; if (iNewBlue > 255) iNewBlue = 255; return THPalette::packARGB(iOpacity, iNewRed, iG, static_cast(iNewBlue)); } bool FullColourRenderer::decodeImage(const uint8_t* pImg, const THPalette *pPalette, uint32_t iSpriteFlags) { if (m_iWidth <= 0 || m_iHeight <= 0) return false; iSpriteFlags &= THDF_Alt32_Mask; const uint32_t* pColours = pPalette->getARGBData(); for (;;) { uint8_t iType = *pImg++; size_t iLength = iType & 63; switch (iType >> 6) { case 0: // Fixed fully opaque 32bpp pixels while (iLength > 0) { uint32_t iColour; if (iSpriteFlags == THDF_Alt32_BlueRedSwap) iColour = makeSwapRedBlue(0xFF, pImg[0], pImg[1], pImg[2]); else if (iSpriteFlags == THDF_Alt32_GreyScale) iColour = makeGreyScale(0xFF, pImg[0], pImg[1], pImg[2]); else iColour = THPalette::packARGB(0xFF, pImg[0], pImg[1], pImg[2]); _pushPixel(iColour); pImg += 3; iLength--; } break; case 1: // Fixed partially transparent 32bpp pixels { uint8_t iOpacity = *pImg++; while (iLength > 0) { uint32_t iColour; if (iSpriteFlags == THDF_Alt32_BlueRedSwap) iColour = makeSwapRedBlue(0xFF, pImg[0], pImg[1], pImg[2]); else if (iSpriteFlags == THDF_Alt32_GreyScale) iColour = makeGreyScale(iOpacity, pImg[0], pImg[1], pImg[2]); else iColour = THPalette::packARGB(iOpacity, pImg[0], pImg[1], pImg[2]); _pushPixel(iColour); pImg += 3; iLength--; } break; } case 2: // Fixed fully transparent pixels { static const uint32_t iTransparent = THPalette::packARGB(0, 0, 0, 0); while (iLength > 0) { _pushPixel(iTransparent); iLength--; } break; } case 3: // Recolour layer { uint8_t iTable = *pImg++; pImg++; // Skip reading the opacity for now. if (iTable == 0xFF) { // Legacy sprite data. Use the palette to recolour the layer. // Note that the iOpacity is ignored here. while (iLength > 0) { _pushPixel(pColours[*pImg++]); iLength--; } } else { // TODO: Add proper recolour layers, where RGB comes from // table 'iTable' at index *pImg (iLength times), and // opacity comes from the byte after the iTable byte. // // For now just draw black pixels, so it won't go unnoticed. while (iLength > 0) { uint32_t iColour = THPalette::packARGB(0xFF, 0, 0, 0); _pushPixel(iColour); iLength--; } } break; } } if (m_iY >= m_iHeight) break; } return m_iX == 0; } FullColourStoring::FullColourStoring(uint32_t *pDest, int iWidth, int iHeight) : FullColourRenderer(iWidth, iHeight) { m_pDest = pDest; } void FullColourStoring::storeARGB(uint32_t pixel) { *m_pDest++ = pixel; } WxStoring::WxStoring(uint8_t* pRGBData, uint8_t* pAData, int iWidth, int iHeight) : FullColourRenderer(iWidth, iHeight) { m_pRGBData = pRGBData; m_pAData = pAData; } void WxStoring::storeARGB(uint32_t pixel) { m_pRGBData[0] = THPalette::getR(pixel); m_pRGBData[1] = THPalette::getG(pixel); m_pRGBData[2] = THPalette::getB(pixel); m_pRGBData += 3; *m_pAData++ = THPalette::getA(pixel); } THRenderTarget::THRenderTarget() { m_pWindow = nullptr; m_pRenderer = nullptr; m_pFormat = nullptr; m_pCursor = nullptr; m_pZoomTexture = nullptr; m_bShouldScaleBitmaps = false; m_bBlueFilterActive = false; m_bApplyOpenGlClipFix = false; m_iWidth = -1; m_iHeight = -1; } THRenderTarget::~THRenderTarget() { destroy(); } bool THRenderTarget::create(const THRenderTargetCreationParams* pParams) { if (m_pRenderer != nullptr) return false; SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); m_pFormat = SDL_AllocFormat(SDL_PIXELFORMAT_ABGR8888); m_pWindow = SDL_CreateWindow("CorsixTH", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, pParams->iWidth, pParams->iHeight, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE); if (!m_pWindow) { return false; } Uint32 iRendererFlags = (pParams->bPresentImmediate ? 0 : SDL_RENDERER_PRESENTVSYNC); m_pRenderer = SDL_CreateRenderer(m_pWindow, -1, iRendererFlags); SDL_RendererInfo info; SDL_GetRendererInfo(m_pRenderer, &info); m_bSupportsTargetTextures = (info.flags & SDL_RENDERER_TARGETTEXTURE) != 0; SDL_version sdlVersion; SDL_GetVersion(&sdlVersion); m_bApplyOpenGlClipFix = std::strncmp(info.name, "opengl", 6) == 0 && sdlVersion.major == 2 && sdlVersion.minor == 0 && sdlVersion.patch < 4; return update(pParams); } bool THRenderTarget::update(const THRenderTargetCreationParams* pParams) { if (m_pWindow == nullptr) { return false; } bool bUpdateSize = (m_iWidth != pParams->iWidth) || (m_iHeight != pParams->iHeight); m_iWidth = pParams->iWidth; m_iHeight = pParams->iHeight; bool bIsFullscreen = ((SDL_GetWindowFlags(m_pWindow) & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP); if (bIsFullscreen != pParams->bFullscreen) { SDL_SetWindowFullscreen(m_pWindow, (pParams->bFullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0)); } if (bUpdateSize || bIsFullscreen != pParams->bFullscreen) { SDL_SetWindowSize(m_pWindow, m_iWidth, m_iHeight); } if (bUpdateSize) { SDL_RenderSetLogicalSize(m_pRenderer, m_iWidth, m_iHeight); } return true; } void THRenderTarget::destroy() { if (m_pFormat) { SDL_FreeFormat(m_pFormat); m_pFormat = nullptr; } if (m_pZoomTexture) { SDL_DestroyTexture(m_pZoomTexture); m_pZoomTexture = nullptr; } if (m_pRenderer) { SDL_DestroyRenderer(m_pRenderer); m_pRenderer = nullptr; } if (m_pWindow) { SDL_DestroyWindow(m_pWindow); m_pWindow = nullptr; } } bool THRenderTarget::setScaleFactor(double fScale, THScaledItems eWhatToScale) { _flushZoomBuffer(); m_bShouldScaleBitmaps = false; if(fScale <= 0.000) { return false; } else if(eWhatToScale == THSI_All && m_bSupportsTargetTextures) { //Draw everything from now until the next scale to m_pZoomTexture //with the appropriate virtual size, which will be copied scaled to //fit the window. int virtWidth = static_cast(m_iWidth / fScale); int virtHeight = static_cast(m_iHeight / fScale); m_pZoomTexture = SDL_CreateTexture(m_pRenderer, SDL_PIXELFORMAT_ABGR8888, SDL_TEXTUREACCESS_TARGET, virtWidth, virtHeight ); SDL_RenderSetLogicalSize(m_pRenderer, virtWidth, virtHeight); if(SDL_SetRenderTarget(m_pRenderer, m_pZoomTexture) != 0) { std::cout << "Warning: Could not render to zoom texture - " << SDL_GetError() << std::endl; SDL_RenderSetLogicalSize(m_pRenderer, m_iWidth, m_iHeight); SDL_DestroyTexture(m_pZoomTexture); m_pZoomTexture = nullptr; return false; } // Clear the new texture to transparent/black. SDL_SetRenderDrawColor(m_pRenderer, 0, 0, 0, SDL_ALPHA_TRANSPARENT); SDL_RenderClear(m_pRenderer); return true; } else if(0.999 <= fScale && fScale <= 1.001) { return true; } else if(eWhatToScale == THSI_Bitmaps) { m_bShouldScaleBitmaps = true; m_fBitmapScaleFactor = fScale; return true; } else { return false; } } void THRenderTarget::setCaption(const char* sCaption) { SDL_SetWindowTitle(m_pWindow, sCaption); } const char *THRenderTarget::getRendererDetails() const { SDL_RendererInfo info = {}; SDL_GetRendererInfo(m_pRenderer, &info); return info.name; } const char* THRenderTarget::getLastError() { return SDL_GetError(); } bool THRenderTarget::startFrame() { fillBlack(); return true; } bool THRenderTarget::endFrame() { _flushZoomBuffer(); // End the frame by adding the cursor and possibly a filter. if(m_pCursor) { m_pCursor->draw(this, m_iCursorX, m_iCursorY); } if(m_bBlueFilterActive) { SDL_SetRenderDrawBlendMode(m_pRenderer, SDL_BLENDMODE_BLEND); SDL_SetRenderDrawColor(m_pRenderer, 51, 51, 255, 128); // r=0.2, g=0.2, b=1, a=0.5 . SDL_RenderFillRect(m_pRenderer, nullptr); } SDL_RenderPresent(m_pRenderer); return true; } bool THRenderTarget::fillBlack() { SDL_SetRenderDrawColor(m_pRenderer, 0, 0, 0, SDL_ALPHA_OPAQUE); SDL_RenderClear(m_pRenderer); return true; } void THRenderTarget::setBlueFilterActive(bool bActivate) { m_bBlueFilterActive = bActivate; } // Actiate and Deactivate SDL function to capture mouse to window void THRenderTarget::setWindowGrab(bool bActivate) { SDL_SetWindowGrab(m_pWindow, bActivate ? SDL_TRUE : SDL_FALSE); } uint32_t THRenderTarget::mapColour(uint8_t iR, uint8_t iG, uint8_t iB) { return THPalette::packARGB(0xFF, iR, iG, iB); } bool THRenderTarget::fillRect(uint32_t iColour, int iX, int iY, int iW, int iH) { SDL_Rect rcDest = { iX, iY, iW, iH }; Uint8 r, g, b, a; SDL_GetRGBA(iColour, m_pFormat, &r, &g, &b, &a); SDL_SetRenderDrawBlendMode(m_pRenderer, SDL_BLENDMODE_BLEND); SDL_SetRenderDrawColor(m_pRenderer, r, g, b, a); SDL_RenderFillRect(m_pRenderer, &rcDest); return true; } void THRenderTarget::getClipRect(THClipRect* pRect) const { SDL_RenderGetClipRect(m_pRenderer, reinterpret_cast(pRect)); // SDL returns empty rect when clipping is disabled -> return full rect for CTH if (SDL_RectEmpty(pRect)) { pRect->x = pRect->y = 0; pRect->w = m_iWidth; pRect->h = m_iHeight; } if(m_bApplyOpenGlClipFix) { int renderWidth, renderHeight; SDL_RenderGetLogicalSize(m_pRenderer, &renderWidth, &renderHeight); pRect->y = renderHeight - pRect->y - pRect->h; } } void THRenderTarget::setClipRect(const THClipRect* pRect) { // Full clip rect for CTH means clipping disabled if (pRect == nullptr || (pRect->w == m_iWidth && pRect->h == m_iHeight)) { SDL_RenderSetClipRect(m_pRenderer, nullptr); return; } SDL_Rect SDLRect = { pRect->x, pRect->y, pRect->w, pRect->h }; // For some reason, SDL treats an empty rect (h or w <= 0) as if you turned // off clipping, so we replace it with a rect that's outside our viewport. const SDL_Rect rcBogus = { -2, -2, 1, 1 }; if (SDL_RectEmpty(&SDLRect)) { SDLRect = rcBogus; } if(m_bApplyOpenGlClipFix) { int renderWidth, renderHeight; SDL_RenderGetLogicalSize(m_pRenderer, &renderWidth, &renderHeight); SDLRect.y = renderHeight - SDLRect.y - SDLRect.h; } SDL_RenderSetClipRect(m_pRenderer, &SDLRect); } int THRenderTarget::getWidth() const { int w; SDL_RenderGetLogicalSize(m_pRenderer, &w, nullptr); return w; } int THRenderTarget::getHeight() const { int h; SDL_RenderGetLogicalSize(m_pRenderer, nullptr, &h); return h; } void THRenderTarget::startNonOverlapping() { // SDL has no optimisations for drawing lots of non-overlapping sprites } void THRenderTarget::finishNonOverlapping() { // SDL has no optimisations for drawing lots of non-overlapping sprites } void THRenderTarget::setCursor(THCursor* pCursor) { m_pCursor = pCursor; } void THRenderTarget::setCursorPosition(int iX, int iY) { m_iCursorX = iX; m_iCursorY = iY; } bool THRenderTarget::takeScreenshot(const char* sFile) { int width = 0, height = 0; if (SDL_GetRendererOutputSize(m_pRenderer, &width, &height) == -1) return false; // Create a window-sized surface, RGB format (0 Rmask means RGB.) SDL_Surface* pRgbSurface = SDL_CreateRGBSurface(0, width, height, 24, 0, 0, 0, 0); if (pRgbSurface == nullptr) return false; int readStatus = -1; if (SDL_LockSurface(pRgbSurface) != -1) { // Ask the renderer to (slowly) fill the surface with renderer // output data. readStatus = SDL_RenderReadPixels(m_pRenderer, nullptr, pRgbSurface->format->format, pRgbSurface->pixels, pRgbSurface->pitch); SDL_UnlockSurface(pRgbSurface); if (readStatus != -1) SDL_SaveBMP(pRgbSurface, sFile); } SDL_FreeSurface(pRgbSurface); return (readStatus != -1); } bool THRenderTarget::shouldScaleBitmaps(double* pFactor) { if(!m_bShouldScaleBitmaps) return false; if(pFactor) *pFactor = m_fBitmapScaleFactor; return true; } void THRenderTarget::_flushZoomBuffer() { if(m_pZoomTexture == nullptr) { return; } SDL_SetRenderTarget(m_pRenderer, nullptr); SDL_RenderSetLogicalSize(m_pRenderer, m_iWidth, m_iHeight); SDL_SetTextureBlendMode(m_pZoomTexture, SDL_BLENDMODE_BLEND); SDL_RenderCopy(m_pRenderer, m_pZoomTexture, nullptr, nullptr); SDL_DestroyTexture(m_pZoomTexture); m_pZoomTexture = nullptr; } //! Convert legacy 8bpp sprite data to recoloured 32bpp data, using special recolour table 0xFF. /*! @param pPixelData Legacy 8bpp pixels. @param iPixelDataLength Number of pixels in the \a pPixelData. @return Converted 32bpp pixel data, if succeeded else nullptr is returned. Caller should free the returned memory. */ static uint8_t *convertLegacySprite(const uint8_t* pPixelData, size_t iPixelDataLength) { // Recolour blocks are 63 pixels long. // XXX To reduce the size of the 32bpp data, transparent pixels can be stored more compactly. size_t iNumFilled = iPixelDataLength / 63; size_t iRemaining = iPixelDataLength - iNumFilled * 63; size_t iNewSize = iNumFilled * (3 + 63) + ((iRemaining > 0) ? 3 + iRemaining : 0); uint8_t *pData = new (std::nothrow) uint8_t[iNewSize]; if (pData == nullptr) return nullptr; uint8_t *pDest = pData; while (iPixelDataLength > 0) { size_t iLength = (iPixelDataLength >= 63) ? 63 : iPixelDataLength; *pDest++ = static_cast(iLength + 0xC0); // Recolour layer type of block. *pDest++ = 0xFF; // Use special table 0xFF (which uses the palette as table). *pDest++ = 0xFF; // Non-transparent. std::memcpy(pDest, pPixelData, iLength); pDest += iLength; pPixelData += iLength; iPixelDataLength -= iLength; } return pData; } SDL_Texture* THRenderTarget::createPalettizedTexture( int iWidth, int iHeight, const uint8_t* pPixels, const THPalette* pPalette, uint32_t iSpriteFlags) const { uint32_t *pARGBPixels = new (std::nothrow) uint32_t[iWidth * iHeight]; if(pARGBPixels == nullptr) return 0; FullColourStoring oRenderer(pARGBPixels, iWidth, iHeight); bool bOk = oRenderer.decodeImage(pPixels, pPalette, iSpriteFlags); if (!bOk) return 0; SDL_Texture *pTexture = createTexture(iWidth, iHeight, pARGBPixels); delete [] pARGBPixels; return pTexture; } SDL_Texture* THRenderTarget::createTexture(int iWidth, int iHeight, const uint32_t* pPixels) const { SDL_Texture *pTexture = SDL_CreateTexture(m_pRenderer, m_pFormat->format, SDL_TEXTUREACCESS_STATIC, iWidth, iHeight); SDL_UpdateTexture(pTexture, nullptr, pPixels, static_cast(sizeof(*pPixels) * iWidth)); SDL_SetTextureBlendMode(pTexture, SDL_BLENDMODE_BLEND); SDL_SetTextureColorMod(pTexture, 0xFF, 0xFF, 0xFF); SDL_SetTextureAlphaMod(pTexture, 0xFF); return pTexture; } void THRenderTarget::draw(SDL_Texture *pTexture, const SDL_Rect *prcSrcRect, const SDL_Rect *prcDstRect, int iFlags) { SDL_SetTextureAlphaMod(pTexture, 0xFF); if (iFlags & THDF_Alpha50) { SDL_SetTextureAlphaMod(pTexture, 0x80); } else if (iFlags & THDF_Alpha75) { SDL_SetTextureAlphaMod(pTexture, 0x40); } int iSDLFlip = SDL_FLIP_NONE; if(iFlags & THDF_FlipHorizontal) iSDLFlip |= SDL_FLIP_HORIZONTAL; if (iFlags & THDF_FlipVertical) iSDLFlip |= SDL_FLIP_VERTICAL; if (iSDLFlip != 0) { SDL_RenderCopyEx(m_pRenderer, pTexture, prcSrcRect, prcDstRect, 0, nullptr, (SDL_RendererFlip)iSDLFlip); } else { SDL_RenderCopy(m_pRenderer, pTexture, prcSrcRect, prcDstRect); } } void THRenderTarget::drawLine(THLine *pLine, int iX, int iY) { SDL_SetRenderDrawColor(m_pRenderer, pLine->m_iR, pLine->m_iG, pLine->m_iB, pLine->m_iA); double lastX, lastY; lastX = pLine->m_pFirstOp->m_fX; lastY = pLine->m_pFirstOp->m_fY; THLine::THLineOperation* op = (THLine::THLineOperation*)(pLine->m_pFirstOp->m_pNext); while (op) { if (op->type == THLine::THLOP_LINE) { SDL_RenderDrawLine(m_pRenderer, static_cast(lastX + iX), static_cast(lastY + iY), static_cast(op->m_fX + iX), static_cast(op->m_fY + iY)); } lastX = op->m_fX; lastY = op->m_fY; op = (THLine::THLineOperation*)(op->m_pNext); } } THPalette::THPalette() { m_iNumColours = 0; } static const uint8_t gs_iTHColourLUT[0x40] = { // Maps 0-63 to 0-255 0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, 0x1C, 0x20, 0x24, 0x28, 0x2D, 0x31, 0x35, 0x39, 0x3D, 0x41, 0x45, 0x49, 0x4D, 0x51, 0x55, 0x59, 0x5D, 0x61, 0x65, 0x69, 0x6D, 0x71, 0x75, 0x79, 0x7D, 0x82, 0x86, 0x8A, 0x8E, 0x92, 0x96, 0x9A, 0x9E, 0xA2, 0xA6, 0xAA, 0xAE, 0xB2, 0xB6, 0xBA, 0xBE, 0xC2, 0xC6, 0xCA, 0xCE, 0xD2, 0xD7, 0xDB, 0xDF, 0xE3, 0xE7, 0xEB, 0xEF, 0xF3, 0xF7, 0xFB, 0xFF, }; bool THPalette::loadFromTHFile(const uint8_t* pData, size_t iDataLength) { if(iDataLength != 256 * 3) return false; m_iNumColours = static_cast(iDataLength / 3); for(int i = 0; i < m_iNumColours; ++i, pData += 3) { uint8_t iR = gs_iTHColourLUT[pData[0] & 0x3F]; uint8_t iG = gs_iTHColourLUT[pData[1] & 0x3F]; uint8_t iB = gs_iTHColourLUT[pData[2] & 0x3F]; uint32_t iColour = packARGB(0xFF, iR, iG, iB); // Remap magenta to transparent if(iColour == packARGB(0xFF, 0xFF, 0x00, 0xFF)) iColour = packARGB(0x00, 0x00, 0x00, 0x00); m_aColoursARGB[i] = iColour; } return true; } bool THPalette::setEntry(int iEntry, uint8_t iR, uint8_t iG, uint8_t iB) { if(iEntry < 0 || iEntry >= m_iNumColours) return false; uint32_t iColour = packARGB(0xFF, iR, iG, iB); // Remap magenta to transparent if(iColour == packARGB(0xFF, 0xFF, 0x00, 0xFF)) iColour = packARGB(0x00, 0x00, 0x00, 0x00); m_aColoursARGB[iEntry] = iColour; return true; } int THPalette::getColourCount() const { return m_iNumColours; } const uint32_t* THPalette::getARGBData() const { return m_aColoursARGB; } THRawBitmap::THRawBitmap() { m_pTexture = nullptr; m_pPalette = nullptr; m_pTarget = nullptr; m_iWidth = 0; m_iHeight = 0; } THRawBitmap::~THRawBitmap() { if (m_pTexture) { SDL_DestroyTexture(m_pTexture); } } void THRawBitmap::setPalette(const THPalette* pPalette) { m_pPalette = pPalette; } bool THRawBitmap::loadFromTHFile(const uint8_t* pPixelData, size_t iPixelDataLength, int iWidth, THRenderTarget *pEventualCanvas) { if(pEventualCanvas == nullptr) return false; pPixelData = convertLegacySprite(pPixelData, iPixelDataLength); if (pPixelData == nullptr) return false; int iHeight = static_cast(iPixelDataLength) / iWidth; m_pTexture = pEventualCanvas->createPalettizedTexture(iWidth, iHeight, pPixelData, m_pPalette, THDF_Alt32_Plain); if(!m_pTexture) return false; m_iWidth = iWidth; m_iHeight = iHeight; m_pTarget = pEventualCanvas; return true; } /** * Test whether the loaded full colour sprite loads correctly. * @param pData Data of the sprite. * @param iDataLength Length of the sprite data. * @param iWidth Width of the sprite. * @param iHeight Height of the sprite. * @return Whether the sprite loads correctly (at the end of the sprite, all data is used). */ static bool testSprite(const uint8_t* pData, size_t iDataLength, int iWidth, int iHeight) { if (iWidth <= 0 || iHeight <= 0) return true; size_t iCount = iWidth * iHeight; while (iCount > 0) { if (iDataLength < 1) return false; iDataLength--; uint8_t iType = *pData++; size_t iLength = iType & 63; switch (iType >> 6) { case 0: // Fixed fully opaque 32bpp pixels if (iCount < iLength || iDataLength < iLength * 3) return false; iCount -= iLength; iDataLength -= iLength * 3; pData += iLength * 3; break; case 1: // Fixed partially transparent 32bpp pixels if (iDataLength < 1) return false; iDataLength--; pData++; // Opacity byte. if (iCount < iLength || iDataLength < iLength * 3) return false; iCount -= iLength; iDataLength -= iLength * 3; pData += iLength * 3; break; case 2: // Fixed fully transparent pixels if (iCount < iLength) return false; iCount -= iLength; break; case 3: // Recolour layer if (iDataLength < 2) return false; iDataLength -= 2; pData += 2; // Table number, opacity byte. if (iCount < iLength || iDataLength < iLength) return false; iCount -= iLength; iDataLength -= iLength; pData += iLength; break; } } return iDataLength == 0; } void THRawBitmap::draw(THRenderTarget* pCanvas, int iX, int iY) { draw(pCanvas, iX, iY, 0, 0, m_iWidth, m_iHeight); } void THRawBitmap::draw(THRenderTarget* pCanvas, int iX, int iY, int iSrcX, int iSrcY, int iWidth, int iHeight) { double fScaleFactor; if (m_pTexture == nullptr) return; if(!pCanvas->shouldScaleBitmaps(&fScaleFactor)) { fScaleFactor = 1; } const SDL_Rect rcSrc = { iSrcX, iSrcY, iWidth, iHeight }; const SDL_Rect rcDest = { iX, iY, static_cast(iWidth * fScaleFactor), static_cast(iHeight * fScaleFactor) }; pCanvas->draw(m_pTexture, &rcSrc, &rcDest, 0); } THSpriteSheet::THSpriteSheet() { m_pSprites = nullptr; m_pPalette = nullptr; m_pTarget = nullptr; m_iSpriteCount = 0; } THSpriteSheet::~THSpriteSheet() { _freeSprites(); } void THSpriteSheet::_freeSingleSprite(size_t iNumber) { if (iNumber >= m_iSpriteCount) return; if (m_pSprites[iNumber].pTexture != nullptr) { SDL_DestroyTexture(m_pSprites[iNumber].pTexture); m_pSprites[iNumber].pTexture = nullptr; } if (m_pSprites[iNumber].pAltTexture != nullptr) { SDL_DestroyTexture(m_pSprites[iNumber].pAltTexture); m_pSprites[iNumber].pAltTexture = nullptr; } if(m_pSprites[iNumber].pData != nullptr) { delete[] m_pSprites[iNumber].pData; m_pSprites[iNumber].pData = nullptr; } } void THSpriteSheet::_freeSprites() { for(size_t i = 0; i < m_iSpriteCount; ++i) _freeSingleSprite(i); delete[] m_pSprites; m_pSprites = nullptr; m_iSpriteCount = 0; } void THSpriteSheet::setPalette(const THPalette* pPalette) { m_pPalette = pPalette; } bool THSpriteSheet::setSpriteCount(size_t iCount, THRenderTarget* pCanvas) { _freeSprites(); if(pCanvas == nullptr) return false; m_pTarget = pCanvas; m_iSpriteCount = iCount; m_pSprites = new (std::nothrow) sprite_t[m_iSpriteCount]; if(m_pSprites == nullptr) { m_iSpriteCount = 0; return false; } for (size_t i = 0; i < m_iSpriteCount; i++) { sprite_t &spr = m_pSprites[i]; spr.pTexture = nullptr; spr.pAltTexture = nullptr; spr.pData = nullptr; spr.pAltPaletteMap = nullptr; spr.iSpriteFlags = THDF_Alt32_Plain; spr.iWidth = 0; spr.iHeight = 0; } return true; } bool THSpriteSheet::loadFromTHFile(const uint8_t* pTableData, size_t iTableDataLength, const uint8_t* pChunkData, size_t iChunkDataLength, bool bComplexChunks, THRenderTarget* pCanvas) { _freeSprites(); if(pCanvas == nullptr) return false; size_t iCount = iTableDataLength / sizeof(th_sprite_t); if (!setSpriteCount(iCount, pCanvas)) return false; for(size_t i = 0; i < m_iSpriteCount; ++i) { sprite_t *pSprite = m_pSprites + i; const th_sprite_t *pTHSprite = reinterpret_cast(pTableData) + i; pSprite->pTexture = nullptr; pSprite->pAltTexture = nullptr; pSprite->pData = nullptr; pSprite->pAltPaletteMap = nullptr; pSprite->iWidth = pTHSprite->width; pSprite->iHeight = pTHSprite->height; if(pSprite->iWidth == 0 || pSprite->iHeight == 0) continue; { uint8_t *pData = new uint8_t[pSprite->iWidth * pSprite->iHeight]; THChunkRenderer oRenderer(pSprite->iWidth, pSprite->iHeight, pData); int iDataLen = static_cast(iChunkDataLength) - static_cast(pTHSprite->position); if(iDataLen < 0) iDataLen = 0; oRenderer.decodeChunks(pChunkData + pTHSprite->position, iDataLen, bComplexChunks); pData = oRenderer.takeData(); pSprite->pData = convertLegacySprite(pData, pSprite->iWidth * pSprite->iHeight); delete[] pData; } } return true; } bool THSpriteSheet::setSpriteData(size_t iSprite, const uint8_t *pData, bool bTakeData, size_t iDataLength, int iWidth, int iHeight) { if (iSprite >= m_iSpriteCount) return false; if (!testSprite(pData, iDataLength, iWidth, iHeight)) { std::printf("Sprite number %zu has a bad encoding, skipping", iSprite); return false; } _freeSingleSprite(iSprite); sprite_t *pSprite = m_pSprites + iSprite; if (bTakeData) { pSprite->pData = pData; } else { uint8_t *pNewData = new (std::nothrow) uint8_t[iDataLength]; if (pNewData == nullptr) return false; std::memcpy(pNewData, pData, iDataLength); pSprite->pData = pNewData; } pSprite->iWidth = iWidth; pSprite->iHeight = iHeight; return true; } void THSpriteSheet::setSpriteAltPaletteMap(size_t iSprite, const uint8_t* pMap, uint32_t iAlt32) { if(iSprite >= m_iSpriteCount) return; sprite_t *pSprite = m_pSprites + iSprite; if(pSprite->pAltPaletteMap != pMap) { pSprite->pAltPaletteMap = pMap; pSprite->iSpriteFlags = iAlt32; if(pSprite->pAltTexture) { SDL_DestroyTexture(pSprite->pAltTexture); pSprite->pAltTexture = nullptr; } } } size_t THSpriteSheet::getSpriteCount() const { return m_iSpriteCount; } bool THSpriteSheet::getSpriteSize(size_t iSprite, unsigned int* pWidth, unsigned int* pHeight) const { if(iSprite >= m_iSpriteCount) return false; if(pWidth != nullptr) *pWidth = m_pSprites[iSprite].iWidth; if(pHeight != nullptr) *pHeight = m_pSprites[iSprite].iHeight; return true; } void THSpriteSheet::getSpriteSizeUnchecked(size_t iSprite, unsigned int* pWidth, unsigned int* pHeight) const { *pWidth = m_pSprites[iSprite].iWidth; *pHeight = m_pSprites[iSprite].iHeight; } bool THSpriteSheet::getSpriteAverageColour(size_t iSprite, THColour* pColour) const { if(iSprite >= m_iSpriteCount) return false; const sprite_t *pSprite = m_pSprites + iSprite; int iCountTotal = 0; int iUsageCounts[256] = {0}; for(long i = 0; i < pSprite->iWidth * pSprite->iHeight; ++i) { uint8_t cPalIndex = pSprite->pData[i]; uint32_t iColour = m_pPalette->getARGBData()[cPalIndex]; if((iColour >> 24) == 0) continue; // Grant higher score to pixels with high or low intensity (helps avoid grey fonts) int iR = THPalette::getR(iColour); int iG = THPalette::getG(iColour); int iB = THPalette::getB(iColour); uint8_t cIntensity = static_cast((iR + iG + iB) / 3); int iScore = 1 + std::max(0, 3 - ((255 - cIntensity) / 32)) + std::max(0, 3 - (cIntensity / 32)); iUsageCounts[cPalIndex] += iScore; iCountTotal += iScore; } if(iCountTotal == 0) return false; int iHighestCountIndex = 0; for(int i = 0; i < 256; ++i) { if(iUsageCounts[i] > iUsageCounts[iHighestCountIndex]) iHighestCountIndex = i; } *pColour = m_pPalette->getARGBData()[iHighestCountIndex]; return true; } void THSpriteSheet::drawSprite(THRenderTarget* pCanvas, size_t iSprite, int iX, int iY, uint32_t iFlags) { if(iSprite >= m_iSpriteCount || pCanvas == nullptr || pCanvas != m_pTarget) return; sprite_t &sprite = m_pSprites[iSprite]; // Find or create the texture SDL_Texture *pTexture = sprite.pTexture; if(!pTexture) { if(sprite.pData == nullptr) return; uint32_t iSprFlags = (sprite.iSpriteFlags & ~THDF_Alt32_Mask) | THDF_Alt32_Plain; pTexture = m_pTarget->createPalettizedTexture(sprite.iWidth, sprite.iHeight, sprite.pData, m_pPalette, iSprFlags); sprite.pTexture = pTexture; } if(iFlags & THDF_AltPalette) { pTexture = sprite.pAltTexture; if(!pTexture) { pTexture = _makeAltBitmap(&sprite); if(!pTexture) return; } } SDL_Rect rcSrc = { 0, 0, sprite.iWidth, sprite.iHeight }; SDL_Rect rcDest = { iX, iY, sprite.iWidth, sprite.iHeight }; pCanvas->draw(pTexture, &rcSrc, &rcDest, iFlags); } void THSpriteSheet::wxDrawSprite(size_t iSprite, uint8_t* pRGBData, uint8_t* pAData) { if(iSprite >= m_iSpriteCount || pRGBData == nullptr || pAData == nullptr) return; sprite_t *pSprite = m_pSprites + iSprite; WxStoring oRenderer(pRGBData, pAData, pSprite->iWidth, pSprite->iHeight); oRenderer.decodeImage(pSprite->pData, m_pPalette, pSprite->iSpriteFlags); } SDL_Texture* THSpriteSheet::_makeAltBitmap(sprite_t *pSprite) { const uint32_t *pPalette = m_pPalette->getARGBData(); if (!pSprite->pAltPaletteMap) // Use normal palette. { uint32_t iSprFlags = (pSprite->iSpriteFlags & ~THDF_Alt32_Mask) | THDF_Alt32_Plain; pSprite->pAltTexture = m_pTarget->createPalettizedTexture(pSprite->iWidth, pSprite->iHeight, pSprite->pData, m_pPalette, iSprFlags); } else if (!pPalette) // Draw alternative palette, but no palette set (ie 32bpp image). { pSprite->pAltTexture = m_pTarget->createPalettizedTexture(pSprite->iWidth, pSprite->iHeight, pSprite->pData, m_pPalette, pSprite->iSpriteFlags); } else // Paletted image, build recolour palette. { THPalette oPalette; for (int iColour = 0; iColour < 255; iColour++) { oPalette.setARGB(iColour, pPalette[pSprite->pAltPaletteMap[iColour]]); } oPalette.setARGB(255, pPalette[255]); // Colour 0xFF doesn't get remapped. pSprite->pAltTexture = m_pTarget->createPalettizedTexture(pSprite->iWidth, pSprite->iHeight, pSprite->pData, &oPalette, pSprite->iSpriteFlags); } return pSprite->pAltTexture; } /** * Get the colour data of pixel \a iPixelNumber (\a iWidth * y + x) * @param pImg 32bpp image data. * @param iWidth Width of the image. * @param iHeight Height of the image. * @param pPalette Palette of the image, or \c nullptr. * @param iPixelNumber Number of the pixel to retrieve. */ static uint32_t get32BppPixel(const uint8_t* pImg, int iWidth, int iHeight, const THPalette *pPalette, size_t iPixelNumber) { if (iWidth <= 0 || iHeight <= 0 || iPixelNumber < 0 || iPixelNumber >= static_cast(iWidth) * iHeight) { return THPalette::packARGB(0, 0, 0,0); } for (;;) { uint8_t iType = *pImg++; size_t iLength = iType & 63; switch (iType >> 6) { case 0: // Fixed fully opaque 32bpp pixels if (iPixelNumber >= iLength) { pImg += 3 * iLength; iPixelNumber -= iLength; break; } while (iLength > 0) { if (iPixelNumber == 0) return THPalette::packARGB(0xFF, pImg[0], pImg[1], pImg[2]); iPixelNumber--; pImg += 3; iLength--; } break; case 1: // Fixed partially transparent 32bpp pixels { uint8_t iOpacity = *pImg++; if (iPixelNumber >= iLength) { pImg += 3 * iLength; iPixelNumber -= iLength; break; } while (iLength > 0) { if (iPixelNumber == 0) return THPalette::packARGB(iOpacity, pImg[0], pImg[1], pImg[2]); iPixelNumber--; pImg += 3; iLength--; } break; } case 2: // Fixed fully transparent pixels { if (iPixelNumber >= iLength) { iPixelNumber -= iLength; break; } return THPalette::packARGB(0, 0, 0, 0); } case 3: // Recolour layer { uint8_t iTable = *pImg++; pImg++; // Skip reading the opacity for now. if (iPixelNumber >= iLength) { pImg += iLength; iPixelNumber -= iLength; break; } if (iTable == 0xFF && pPalette != nullptr) { // Legacy sprite data. Use the palette to recolour the layer. // Note that the iOpacity is ignored here. const uint32_t* pColours = pPalette->getARGBData(); return pColours[pImg[iPixelNumber]]; } else { // TODO: Add proper recolour layers, where RGB comes from // table 'iTable' at index *pImg (iLength times), and // opacity comes from the byte after the iTable byte. // // For now just draw black pixels, so it won't go unnoticed. return THPalette::packARGB(0xFF, 0, 0, 0); } } } } } bool THSpriteSheet::hitTestSprite(size_t iSprite, int iX, int iY, uint32_t iFlags) const { if(iX < 0 || iY < 0 || iSprite >= m_iSpriteCount) return false; sprite_t &sprite = m_pSprites[iSprite]; int iWidth = sprite.iWidth; int iHeight = sprite.iHeight; if(iX >= iWidth || iY >= iHeight) return false; if(iFlags & THDF_FlipHorizontal) iX = iWidth - iX - 1; if(iFlags & THDF_FlipVertical) iY = iHeight - iY - 1; uint32_t iCol = get32BppPixel(sprite.pData, iWidth, iHeight, m_pPalette, iY * iWidth + iX); return THPalette::getA(iCol) != 0; } THCursor::THCursor() { m_pBitmap = nullptr; m_iHotspotX = 0; m_iHotspotY = 0; m_pCursorHidden = nullptr; } THCursor::~THCursor() { SDL_FreeSurface(m_pBitmap); SDL_FreeCursor(m_pCursorHidden); } bool THCursor::createFromSprite(THSpriteSheet* pSheet, size_t iSprite, int iHotspotX, int iHotspotY) { #if 0 SDL_FreeSurface(m_pBitmap); m_pBitmap = nullptr; if(pSheet == nullptr || iSprite >= pSheet->getSpriteCount()) return false; SDL_Surface *pSprite = pSheet->_getSpriteBitmap(iSprite, 0); if(pSprite == nullptr || (m_pBitmap = SDL_DisplayFormat(pSprite)) == nullptr) return false; m_iHotspotX = iHotspotX; m_iHotspotY = iHotspotY; return true; #else return false; #endif } void THCursor::use(THRenderTarget* pTarget) { #if 0 //SDL_ShowCursor(0) is buggy in fullscreen until 1.3 (they say) // use transparent cursor for same effect uint8_t uData = 0; m_pCursorHidden = SDL_CreateCursor(&uData, &uData, 8, 1, 0, 0); SDL_SetCursor(m_pCursorHidden); pTarget->setCursor(this); #endif } bool THCursor::setPosition(THRenderTarget* pTarget, int iX, int iY) { #if 0 pTarget->setCursorPosition(iX, iY); return true; #else return false; #endif } void THCursor::draw(THRenderTarget* pCanvas, int iX, int iY) { #if 0 SDL_Rect rcDest; rcDest.x = (Sint16)(iX - m_iHotspotX); rcDest.y = (Sint16)(iY - m_iHotspotY); SDL_BlitSurface(m_pBitmap, nullptr, pCanvas->getRawSurface(), &rcDest); #endif } THLine::THLine() { initialize(); } THLine::~THLine() { THLineOperation* op = m_pFirstOp; while (op) { THLineOperation* next = (THLineOperation*)(op->m_pNext); delete(op); op = next; } } void THLine::initialize() { m_fWidth = 1; m_iR = 0; m_iG = 0; m_iB = 0; m_iA = 255; // We start at 0,0 m_pFirstOp = new THLineOperation(THLOP_MOVE, 0, 0); m_pCurrentOp = m_pFirstOp; } void THLine::moveTo(double fX, double fY) { THLineOperation* previous = m_pCurrentOp; m_pCurrentOp = new THLineOperation(THLOP_MOVE, fX, fY); previous->m_pNext = m_pCurrentOp; } void THLine::lineTo(double fX, double fY) { THLineOperation* previous = m_pCurrentOp; m_pCurrentOp = new THLineOperation(THLOP_LINE, fX, fY); previous->m_pNext = m_pCurrentOp; } void THLine::setWidth(double pLineWidth) { m_fWidth = pLineWidth; } void THLine::setColour(uint8_t iR, uint8_t iG, uint8_t iB, uint8_t iA) { m_iR = iR; m_iG = iG; m_iB = iB; m_iA = iA; } void THLine::draw(THRenderTarget* pCanvas, int iX, int iY) { pCanvas->drawLine(this, iX, iY); } void THLine::persist(LuaPersistWriter *pWriter) const { pWriter->writeVUInt((uint32_t)m_iR); pWriter->writeVUInt((uint32_t)m_iG); pWriter->writeVUInt((uint32_t)m_iB); pWriter->writeVUInt((uint32_t)m_iA); pWriter->writeVFloat(m_fWidth); THLineOperation* op = (THLineOperation*)(m_pFirstOp->m_pNext); uint32_t numOps = 0; for (; op; numOps++) { op = (THLineOperation*)(op->m_pNext); } pWriter->writeVUInt(numOps); op = (THLineOperation*)(m_pFirstOp->m_pNext); while (op) { pWriter->writeVUInt((uint32_t)op->type); pWriter->writeVFloat(op->m_fX); pWriter->writeVFloat(op->m_fY); op = (THLineOperation*)(op->m_pNext); } } void THLine::depersist(LuaPersistReader *pReader) { initialize(); pReader->readVUInt(m_iR); pReader->readVUInt(m_iG); pReader->readVUInt(m_iB); pReader->readVUInt(m_iA); pReader->readVFloat(m_fWidth); uint32_t numOps = 0; pReader->readVUInt(numOps); for (uint32_t i = 0; i < numOps; i++) { THLineOpType type; double fX, fY; pReader->readVUInt((uint32_t&)type); pReader->readVFloat(fX); pReader->readVFloat(fY); if (type == THLOP_MOVE) { moveTo(fX, fY); } else if (type == THLOP_LINE) { lineTo(fX, fY); } } } #ifdef CORSIX_TH_USE_FREETYPE2 bool THFreeTypeFont::_isMonochrome() const { return true; } void THFreeTypeFont::_freeTexture(cached_text_t* pCacheEntry) const { if(pCacheEntry->pTexture != nullptr) { SDL_DestroyTexture(pCacheEntry->pTexture); pCacheEntry->pTexture = nullptr; } } void THFreeTypeFont::_makeTexture(THRenderTarget *pEventualCanvas, cached_text_t* pCacheEntry) const { uint32_t* pPixels = new uint32_t[pCacheEntry->iWidth * pCacheEntry->iHeight]; std::memset(pPixels, 0, pCacheEntry->iWidth * pCacheEntry->iHeight * sizeof(uint32_t)); uint8_t* pInRow = pCacheEntry->pData; uint32_t* pOutRow = pPixels; uint32_t iColBase = m_oColour & 0xFFFFFF; for(int iY = 0; iY < pCacheEntry->iHeight; ++iY, pOutRow += pCacheEntry->iWidth, pInRow += pCacheEntry->iWidth) { for(int iX = 0; iX < pCacheEntry->iWidth; ++iX) { pOutRow[iX] = (static_cast(pInRow[iX]) << 24) | iColBase; } } pCacheEntry->pTexture = pEventualCanvas->createTexture(pCacheEntry->iWidth, pCacheEntry->iHeight, pPixels); delete[] pPixels; } void THFreeTypeFont::_drawTexture(THRenderTarget* pCanvas, cached_text_t* pCacheEntry, int iX, int iY) const { if(pCacheEntry->pTexture == nullptr) return; SDL_Rect rcDest = { iX, iY, pCacheEntry->iWidth, pCacheEntry->iHeight }; pCanvas->draw(pCacheEntry->pTexture, nullptr, &rcDest, 0); } #endif // CORSIX_TH_USE_FREETYPE2 CorsixTH-0.61/CorsixTH/Src/th_gfx_sdl.h000066400000000000000000000507601321660673500177100ustar00rootroot00000000000000/* Copyright (c) 2009-2013 Peter "Corsix" Cawley and Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_GFX_SDL_H_ #define CORSIX_TH_TH_GFX_SDL_H_ #include "config.h" #include #include "persist_lua.h" class THCursor; struct THClipRect : public SDL_Rect { typedef Sint16 xy_t; typedef Uint16 wh_t; }; struct THRenderTargetCreationParams; /*! Utility class for decoding 32bpp images. */ class FullColourRenderer { public: //! Initialize the renderer for a specific render. /*! @param iWidth Pixel width of the resulting image @param iHeight Pixel height of the resulting image */ FullColourRenderer(int iWidth, int iHeight); virtual ~FullColourRenderer() = default; //! Decode a 32bpp image, and push it to the storage backend. /*! @param pImg Encoded 32bpp image. @param pPalette Palette of a legacy sprite. @param iSpriteFlags Flags how to render the sprite. @return Decoding was successful. */ bool decodeImage(const uint8_t* pImg, const THPalette *pPalette, uint32_t iSpriteFlags); private: //! Store a decoded pixel. Use m_iX and m_iY if necessary. /*! @param pixel Pixel to store. */ virtual void storeARGB(uint32_t pixel) = 0; const int m_iWidth; const int m_iHeight; int m_iX; int m_iY; //! Push a pixel to the storage. /*! @param iValue Pixel value to store. */ inline void _pushPixel(uint32_t iValue) { if (m_iY < m_iHeight) { storeARGB(iValue); m_iX++; if (m_iX >= m_iWidth) { m_iX = 0; m_iY++; } } else { m_iX = 1; // Will return 'failed'. } } }; class FullColourStoring : public FullColourRenderer { public: FullColourStoring(uint32_t *pDest, int iWidth, int iHeight); private: void storeARGB(uint32_t pixel) override; //! Pointer to the storage (not owned by this class). uint32_t *m_pDest; }; class WxStoring : public FullColourRenderer { public: WxStoring(uint8_t* pRGBData, uint8_t* pAData, int iWidth, int iHeight); private: void storeARGB(uint32_t pixel) override; //! Pointer to the RGB storage (not owned by this class). uint8_t *m_pRGBData; //! Pointer to the Alpha channel storage (not owned by this class). uint8_t *m_pAData; }; class THRenderTarget { public: // External API THRenderTarget(); ~THRenderTarget(); //! Initialise the render target bool create(const THRenderTargetCreationParams* pParams); //! Update the parameters for the render target bool update(const THRenderTargetCreationParams* pParams); //! Shut down the render target void destroy(); //! Get the reason for the last operation failing const char* getLastError(); //! Begin rendering a new frame bool startFrame(); //! Finish rendering the current frame and present it bool endFrame(); //! Paint the entire render target black bool fillBlack(); //! Sets a blue filter on the current surface. // Used to add the blue effect when the game is paused. void setBlueFilterActive(bool bActivate); //! Encode an RGB triplet for fillRect() uint32_t mapColour(uint8_t iR, uint8_t iG, uint8_t iB); //! Fill a rectangle of the render target with a solid colour bool fillRect(uint32_t iColour, int iX, int iY, int iW, int iH); //! Get the current clip rectangle void getClipRect(THClipRect* pRect) const; //! Get the width of the render target (in pixels) int getWidth() const; //! Get the height of the render target (in pixels) int getHeight() const; //! Set the new clip rectangle void setClipRect(const THClipRect* pRect); //! Enable optimisations for non-overlapping draws void startNonOverlapping(); //! Disable optimisations for non-overlapping draws void finishNonOverlapping(); //! Set the cursor to be used void setCursor(THCursor* pCursor); //! Update the cursor position (if the cursor is being simulated) void setCursorPosition(int iX, int iY); //! Take a screenshot and save it as a bitmap bool takeScreenshot(const char* sFile); //! Set the amount by which future draw operations are scaled. /*! @param fScale New scale to use. @param eWhatToScale Th kind of items to scale. @return Whether the scale could be set. */ bool setScaleFactor(double fScale, THScaledItems eWhatToScale); //! Set the window caption void setCaption(const char* sCaption); //! Toggle mouse capture on the window. void setWindowGrab(bool bActivate); //! Get any user-displayable information to describe the renderer path used const char *getRendererDetails() const; // If you add any extra methods here which are called from outside the // rendering engine, then be sure to at least add dummy implementations // to the other rendering engines. public: // Internal (this rendering engine only) API SDL_Renderer *getRenderer() const { return m_pRenderer; } //! Should bitmaps be scaled? /*! @param [out] pFactor If the function returns \c true, the factor to use for scaling (can be \c nullptr if not interested in the value). @return Whether bitmaps should be scaled. */ bool shouldScaleBitmaps(double* pFactor); SDL_Texture* createPalettizedTexture(int iWidth, int iHeight, const uint8_t* pPixels, const THPalette* pPalette, uint32_t iSpriteFlags) const; SDL_Texture* createTexture(int iWidth, int iHeight, const uint32_t* pPixels) const; void draw(SDL_Texture *pTexture, const SDL_Rect *prcSrcRect, const SDL_Rect *prcDstRect, int iFlags); void drawLine(THLine *pLine, int iX, int iY); private: SDL_Window *m_pWindow; SDL_Renderer *m_pRenderer; SDL_Texture *m_pZoomTexture; SDL_PixelFormat *m_pFormat; bool m_bBlueFilterActive; THCursor* m_pCursor; double m_fBitmapScaleFactor; ///< Bitmap scale factor. int m_iWidth; int m_iHeight; int m_iCursorX; int m_iCursorY; bool m_bShouldScaleBitmaps; ///< Whether bitmaps should be scaled. bool m_bSupportsTargetTextures; // In SDL2 < 2.0.4 there is an issue with the y coordinates used for // ClipRects in opengl and opengles. // see: https://bugzilla.libsdl.org/show_bug.cgi?id=2700 bool m_bApplyOpenGlClipFix; void _flushZoomBuffer(); }; //! 32bpp ARGB colour. See #THPalette::packARGB typedef uint32_t THColour; //! 8bpp palette class. class THPalette { public: // External API THPalette(); //! Load palette from the supplied data. /*! Note that the data uses palette entries of 6 bit colours. @param pData Data loaded from the file. @param iDataLength Size of the data. @return Whether loading of the palette succeeded. */ bool loadFromTHFile(const uint8_t* pData, size_t iDataLength); //! Set an entry of the palette. /*! The RGB colour (255, 0, 255) is used as the transparent colour. @param iEntry Entry number to change. @param iR Amount of red in the new entry. @param iG Amount of green in the new entry. @param iB Amount of blue in the new entry. @return Setting the entry succeeded. */ bool setEntry(int iEntry, uint8_t iR, uint8_t iG, uint8_t iB); public: // Internal (this rendering engine only) API //! Convert A, R, G, B values to a 32bpp colour. /*! @param iA Amount of opacity (0-255). @param iR Amount of red (0-255). @param iG Amount of green (0-255). @param iB Amount of blue (0-255). @return 32bpp value representing the provided colour values. */ inline static THColour packARGB(uint8_t iA, uint8_t iR, uint8_t iG, uint8_t iB) { return (static_cast(iR) << 0) | (static_cast(iG) << 8) | (static_cast(iB) << 16) | (static_cast(iA) << 24) ; } //! Get the red component of a colour. /*! @param iColour Colour to examine. @return The red component intensity of the colour. */ inline static uint8_t getR(THColour iColour) { return static_cast((iColour >> 0) & 0xFF); } //! Get the green component of a colour. /*! @param iColour Colour to examine. @return The green component intensity of the colour. */ inline static uint8_t getG(THColour iColour) { return static_cast((iColour >> 8) & 0xFF); } //! Get the blue component of a colour. /*! @param iColour Colour to examine. @return The blue component intensity of the colour. */ inline static uint8_t getB(THColour iColour) { return static_cast((iColour >> 16) & 0xFF); } //! Get the opacity component of a colour. /*! @param iColour Colour to examine. @return The opacity of the colour. */ inline static uint8_t getA(THColour iColour) { return static_cast((iColour >> 24) & 0xFF); } //! Get the number of colours in the palette. /*! @return The number of colours in the palette. */ int getColourCount() const; //! Get the internal palette data for fast (read-only) access. /*! @return Table with all 256 colours of the palette. */ const THColour* getARGBData() const; //! Set an entry of the palette. /*! @param iEntry Entry to modify. @param iVal Palette value to set. */ inline void setARGB(int iEntry, uint32_t iVal) { m_aColoursARGB[iEntry] = iVal; } private: //! 32bpp palette colours associated with the 8bpp colour index. uint32_t m_aColoursARGB[256]; //! Number of colours in the palette. int m_iNumColours; }; //! Stored image. class THRawBitmap { public: THRawBitmap(); ~THRawBitmap(); //! Set the palette of the image. /*! @param pPalette Palette to set for this image. */ void setPalette(const THPalette* pPalette); //! Load the image from the supplied pixel data. /*! Loader uses the palette supplied before. @param pPixelData Image data loaded from a TH file. @param iPixelDataLength Size of the loaded image data. @param iWidth Width of the image. @param pEventualCanvas Canvas to render the image to (eventually). @return Loading was a success. */ bool loadFromTHFile(const uint8_t* pPixelData, size_t iPixelDataLength, int iWidth, THRenderTarget *pEventualCanvas); //! Draw the image at a given position at the given canvas. /*! @param pCanvas Canvas to draw at. @param iX Destination x position. @param iY Destination y position. */ void draw(THRenderTarget* pCanvas, int iX, int iY); //! Draw part of the image at a given position at the given canvas. /*! @param pCanvas Canvas to draw at. @param iX Destination x position. @param iY Destination y position. @param iSrcX X position of the part to display. @param iSrcY Y position of the part to display. @param iWidth Width of the part to display. @param iHeight Height of the part to display. */ void draw(THRenderTarget* pCanvas, int iX, int iY, int iSrcX, int iSrcY, int iWidth, int iHeight); private: //! Image stored in SDL format for quick rendering. SDL_Texture *m_pTexture; //! Palette of the image. const THPalette* m_pPalette; //! Target canvas. THRenderTarget* m_pTarget; //! Width of the stored image. int m_iWidth; //! Height of the stored image. int m_iHeight; }; //! Sheet of sprites. class THSpriteSheet { public: // External API THSpriteSheet(); ~THSpriteSheet(); //! Set the palette to use for the sprites in the sheet. /*! @param pPalette Palette to use for the sprites at the sheet. */ void setPalette(const THPalette* pPalette); //! Load the sprites from the supplied data (using the palette supplied earlier). /*! @param pTableData Start of table data with TH sprite information (see th_sprite_t). @param iTableDataLength Length of the table data. @param pChunkData Start of image data (chunks). @param iChunkDataLength Length of the chunk data. @param bComplexChunks Whether the supplied chunks are 'complex'. @param pEventualCanvas Canvas to draw at. @return Loading succeeded. */ bool loadFromTHFile(const uint8_t* pTableData, size_t iTableDataLength, const uint8_t* pChunkData, size_t iChunkDataLength, bool bComplexChunks, THRenderTarget* pEventualCanvas); //! Set the data of a sprite. /*! @param iSprite Number of the sprite to set. @param pData Data of the sprite. @param bTakeData Whether the data block may be taken (must be new[] then). @param iDataLength Length of the data. @param iWidth Width of the sprite. @param iHeight Height of the sprite. @return Setting the sprite succeeded. */ bool setSpriteData(size_t iSprite, const uint8_t *pData, bool bTakeData, size_t iDataLength, int iWidth, int iHeight); //! Supply a new mapped palette to a sprite. /*! @param iSprite Sprite getting the mapped palette. @param pMap The palette map to apply. @param iAlt32 What to do for a 32bpp sprite (#THDF_Alt32_Mask bits). */ void setSpriteAltPaletteMap(size_t iSprite, const uint8_t* pMap, uint32_t iAlt32); //! Get the number of sprites at the sheet. /*! @return The number of sprites available at the sheet. */ size_t getSpriteCount() const; //! Set the number of sprites in the sheet. /*! @param iCount The desired number of sprites. @param pCanvas Canvas to draw at. @return Whether the number of sprites could be allocated. */ bool setSpriteCount(size_t iCount, THRenderTarget* pCanvas); //! Get size of a sprite. /*! @param iSprite Sprite to get info from. @param pWidth [out] If not nullptr, the sprite width is stored in the destination. @param pHeight [out] If not nullptr, the sprite height is stored in the destination. @return Size could be provided for the sprite. */ bool getSpriteSize(size_t iSprite, unsigned int* pWidth, unsigned int* pHeight) const; //! Get size of a sprite, assuming all input is correctly supplied. /*! @param iSprite Sprite to get info from. @param pWidth [out] The sprite width is stored in the destination. @param pHeight [out] The sprite height is stored in the destination. */ void getSpriteSizeUnchecked(size_t iSprite, unsigned int* pWidth, unsigned int* pHeight) const; //! Get the best colour to represent the sprite. /*! @param iSprite Sprite number to analyze. @param pColour [out] Resulting colour. @return Best colour could be established. */ bool getSpriteAverageColour(size_t iSprite, THColour* pColour) const; //! Draw a sprite onto the canvas. /*! @param pCanvas Canvas to draw on. @param iSprite Sprite to draw. @param iX X position to draw the sprite. @param iY Y position to draw the sprite. @param iFlags Flags to apply for drawing. */ void drawSprite(THRenderTarget* pCanvas, size_t iSprite, int iX, int iY, uint32_t iFlags); //! Test whether a sprite was hit. /*! @param iSprite Sprite being tested. @param iX X position of the point to test relative to the origin of the sprite. @param iY Y position of the point to test relative to the origin of the sprite. @param iFlags Draw flags to apply to the sprite before testing. @return Whether the sprite covers the give point. */ bool hitTestSprite(size_t iSprite, int iX, int iY, uint32_t iFlags) const; public: // Internal (this rendering engine only) API //! Draw a sprite into wxImage data arrays (for the Map Editor) /*! @param iSprite Sprite number to draw. @param pRGBData Output RGB data array. @param pAData Output Alpha channel array. */ void wxDrawSprite(size_t iSprite, uint8_t* pRGBData, uint8_t* pAData); private: friend class THCursor; #if CORSIX_TH_USE_PACK_PRAGMAS #pragma pack(push) #pragma pack(1) #endif //! Sprite structure in the table file. struct th_sprite_t { //! Position of the sprite in the chunk data file. uint32_t position; //! Width of the sprite. uint8_t width; //! Height of the sprite. uint8_t height; } CORSIX_TH_PACKED_FLAGS; #if CORSIX_TH_USE_PACK_PRAGMAS #pragma pack(pop) #endif //! Sprites of the sheet. struct sprite_t { //! SDL structure containing the sprite with original palette. SDL_Texture *pTexture; //! SDL structure containing the sprite with alternative palette. SDL_Texture *pAltTexture; //! Data of the sprite. const uint8_t *pData; //! Alternative palette (if available). const uint8_t *pAltPaletteMap; //! Flags how to render the sprite, contains #THDF_Alt32_Mask bits. uint32_t iSpriteFlags; //! Width of the sprite. int iWidth; //! Height of the sprite. int iHeight; } *m_pSprites; //! Original palette. const THPalette* m_pPalette; //! Target to render to. THRenderTarget* m_pTarget; //! Number of sprites in the sprite sheet. size_t m_iSpriteCount; //! Free memory of a single sprite. /*! @param iNumber Number of the sprite to clear. */ void _freeSingleSprite(size_t iNumber); //! Free the memory used by the sprites. Also releases the SDL bitmaps. void _freeSprites(); //! Construct an alternative version (with its alternative palette map) of the sprite. /*! @param pSprite Sprite to change. @return SDL texture containing the sprite. */ SDL_Texture *_makeAltBitmap(sprite_t *pSprite); }; class THCursor { public: THCursor(); ~THCursor(); bool createFromSprite(THSpriteSheet* pSheet, size_t iSprite, int iHotspotX = 0, int iHotspotY = 0); void use(THRenderTarget* pTarget); static bool setPosition(THRenderTarget* pTarget, int iX, int iY); void draw(THRenderTarget* pCanvas, int iX, int iY); private: SDL_Surface* m_pBitmap; SDL_Cursor* m_pCursorHidden; int m_iHotspotX; int m_iHotspotY; }; class THLine { public: THLine(); ~THLine(); void moveTo(double fX, double fY); void lineTo(double fX, double fY); void setWidth(double lineWidth); void draw(THRenderTarget* pCanvas, int iX, int iY); void setColour(uint8_t iR, uint8_t iG, uint8_t iB, uint8_t iA = 255); void persist(LuaPersistWriter *pWriter) const; void depersist(LuaPersistReader *pReader); private: friend class THRenderTarget; void initialize(); enum THLineOpType { THLOP_MOVE, THLOP_LINE }; struct THLineOperation : public THLinkList { THLineOpType type; double m_fX, m_fY; THLineOperation(THLineOpType type, double m_fX, double m_fY) : type(type), m_fX(m_fX), m_fY(m_fY) { m_pNext = nullptr; } }; THLineOperation* m_pFirstOp; THLineOperation* m_pCurrentOp; double m_fWidth; uint8_t m_iR, m_iG, m_iB, m_iA; }; #endif // CORSIX_TH_TH_GFX_SDL_H_ CorsixTH-0.61/CorsixTH/Src/th_lua.cpp000066400000000000000000000305351321660673500173740ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th.h" #include "th_lua_internal.h" #include "bootstrap.h" #include #include #include void THLuaRegisterAnims(const THLuaRegisterState_t *pState); void THLuaRegisterGfx(const THLuaRegisterState_t *pState); void THLuaRegisterMap(const THLuaRegisterState_t *pState); void THLuaRegisterSound(const THLuaRegisterState_t *pState); void THLuaRegisterMovie(const THLuaRegisterState_t *pState); void THLuaRegisterStrings(const THLuaRegisterState_t *pState); void THLuaRegisterUI(const THLuaRegisterState_t *pState); void THLuaRegisterLfsExt(const THLuaRegisterState_t *pState); //! Set a field on the environment table of an object void luaT_setenvfield(lua_State *L, int index, const char *k) { lua_getfenv(L, index); lua_pushstring(L, k); lua_pushvalue(L, -3); lua_settable(L, -3); lua_pop(L, 2); } //! Get a field from the environment table of an object void luaT_getenvfield(lua_State *L, int index, const char *k) { lua_getfenv(L, index); lua_getfield(L, -1, k); lua_replace(L, -2); } #if LUA_VERSION_NUM >= 502 void luaT_getfenv52(lua_State *L, int iIndex) { int iType = lua_type(L, iIndex); switch(iType) { case LUA_TUSERDATA: lua_getuservalue(L, iIndex); break; case LUA_TFUNCTION: if(lua_iscfunction(L, iIndex)) { // Our convention: upvalue at #1 is environment if(lua_getupvalue(L, iIndex, 1) == nullptr) lua_pushglobaltable(L); } else { // Language convention: upvalue called _ENV is environment const char* sUpName = nullptr; for(int i = 1; (sUpName = lua_getupvalue(L, iIndex, i)) ; ++i) { if(std::strcmp(sUpName, "_ENV") == 0) return; else lua_pop(L, 1); } lua_pushglobaltable(L); } break; default: luaL_error(L, "Unable to get environment of a %s in 5.2", lua_typename(L, iType)); break; } } int luaT_setfenv52(lua_State *L, int iIndex) { int iType = lua_type(L, iIndex); switch(iType) { case LUA_TUSERDATA: lua_setuservalue(L, iIndex); return 1; case LUA_TFUNCTION: if(lua_iscfunction(L, iIndex)) { // Our convention: upvalue at #1 is environment if(lua_setupvalue(L, iIndex, 1) == nullptr) { lua_pop(L, 1); return 0; } return 1; } else { // Language convention: upvalue called _ENV is environment, which // might be shared with other functions. const char* sUpName = nullptr; for(int i = 1; (sUpName = lua_getupvalue(L, iIndex, i)) ; ++i) { lua_pop(L, 1); // lua_getupvalue puts the value on the stack, but we just want to replace it if(std::strcmp(sUpName, "_ENV") == 0) { luaL_loadstring(L, "local upv = ... return function() return upv end"); lua_insert(L, -2); lua_call(L, 1, 1); lua_upvaluejoin(L, iIndex, i, -1, 1); lua_pop(L, 1); return 1; } } lua_pop(L, 1); return 0; } default: return 0; } } #endif //! Push a C closure as a callable table void luaT_pushcclosuretable(lua_State *L, lua_CFunction fn, int n) { luaT_pushcclosure(L, fn, n); // .. fn (lua_touserdata(L, idx)); iLength = lua_objlen(L, idx); } else { pData = reinterpret_cast(luaL_checklstring(L, idx, &iLength)); } if(pDataLen != 0) *pDataLen = iLength; return pData; } static int l_load_strings(lua_State *L) { size_t iDataLength; const uint8_t* pData = luaT_checkfile(L, 1, &iDataLength); try { THStringList oStrings(pData, iDataLength); lua_settop(L, 0); lua_createtable(L, static_cast(oStrings.getSectionCount()), 0); for(size_t iSec = 0; iSec < oStrings.getSectionCount(); ++iSec) { size_t iCount = oStrings.getSectionSize(iSec); lua_createtable(L, static_cast(iCount), 0); for(size_t iStr = 0; iStr < iCount; ++iStr) { lua_pushstring(L, oStrings.getString(iSec, iStr)); lua_rawseti(L, 2, static_cast(iStr + 1)); } lua_rawseti(L, 1, static_cast(iSec + 1)); } } catch(std::invalid_argument) { lua_pushboolean(L, 0); } return 1; } static int get_api_version() { #include "../Lua/api_version.lua" } static int l_get_compile_options(lua_State *L) { lua_settop(L, 0); lua_newtable(L); #ifdef CORSIX_TH_64BIT lua_pushboolean(L, 1); #else lua_pushboolean(L, 0); #endif lua_setfield(L, -2, "arch_64"); lua_pushliteral(L, "SDL"); lua_setfield(L, -2, "renderer"); #ifdef CORSIX_TH_USE_SDL_MIXER lua_pushboolean(L, 1); #else lua_pushboolean(L, 0); #endif lua_setfield(L, -2, "audio"); lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"); lua_getfield(L, -1, "jit"); if(lua_type(L, -1) == LUA_TNIL) { lua_replace(L, -2); } else { lua_getfield(L, -1, "version"); lua_replace(L, -3); lua_pop(L, 1); } lua_setfield(L, -2, "jit"); lua_pushinteger(L, get_api_version()); lua_setfield(L, -2, "api_version"); return 1; } void luaT_setclosure(const THLuaRegisterState_t *pState, lua_CFunction fn, eTHLuaMetatable eMetatable1, ...) { int iUpCount = 0; va_list args; for(va_start(args, eMetatable1); eMetatable1 != MT_Count; eMetatable1 = static_cast(va_arg(args, int))) { if(eMetatable1 == MT_DummyString) lua_pushstring(pState->L, va_arg(args, char*)); else lua_pushvalue(pState->L, pState->aiMetatables[eMetatable1]); ++iUpCount; } va_end(args); luaT_pushcclosure(pState->L, fn, iUpCount); } int luaopen_th(lua_State *L) { lua_settop(L, 0); lua_checkstack(L, 16 + static_cast(MT_Count)); THLuaRegisterState_t oState; const THLuaRegisterState_t *pState = &oState; oState.L = L; for(int i = 0; i < static_cast(MT_Count); ++i) { lua_createtable(L, 0, 5); oState.aiMetatables[i] = lua_gettop(L); } lua_createtable(L, 0, lua_gettop(L)); oState.iMainTable = lua_gettop(L); oState.iTop = lua_gettop(L); // Misc. functions lua_settop(L, oState.iTop); luaT_setfunction(l_load_strings, "LoadStrings"); luaT_setfunction(l_get_compile_options, "GetCompileOptions"); luaT_setfunction(Bootstrap_lua_resources, "GetBuiltinFont"); // Classes THLuaRegisterMap(pState); THLuaRegisterGfx(pState); THLuaRegisterAnims(pState); THLuaRegisterSound(pState); THLuaRegisterMovie(pState); THLuaRegisterStrings(pState); THLuaRegisterUI(pState); THLuaRegisterLfsExt(pState); lua_settop(L, oState.iMainTable); return 1; } void luaT_execute_loadstring(lua_State *L, const char* sLuaString) { static const int iRegistryCacheIndex = 7; lua_rawgeti(L, LUA_REGISTRYINDEX, iRegistryCacheIndex); if(lua_isnil(L, -1)) { // Cache not yet created - create it. lua_pop(L, 1); lua_getglobal(L, "setmetatable"); if(lua_isnil(L, -1)) { // Base library not yet loaded - fallback to simple // uncached loadstring lua_pop(L, 1); if(luaL_loadstring(L, sLuaString)) lua_error(L); } lua_pop(L, 1); #if LUA_VERSION_NUM >= 502 luaL_loadstring(L, "local assert, load = assert, load\n" "return setmetatable({}, {__mode = [[v]], \n" "__index = function(t, k)\n" "local v = assert(load(k))\n" "t[k] = v\n" "return v\n" "end})"); #else luaL_loadstring(L, "local assert, loadstring = assert, loadstring\n" "return setmetatable({}, {__mode = [[v]], \n" "__index = function(t, k)\n" "local v = assert(loadstring(k))\n" "t[k] = v\n" "return v\n" "end})"); #endif lua_call(L, 0, 1); lua_pushvalue(L, -1); lua_rawseti(L, LUA_REGISTRYINDEX, iRegistryCacheIndex); } lua_getfield(L, -1, sLuaString); lua_replace(L, -2); } void luaT_execute(lua_State *L, const char* sLuaString) { luaT_execute_loadstring(L, sLuaString); lua_call(L, 0, LUA_MULTRET); } void luaT_push(lua_State *L, lua_CFunction f) { luaT_pushcfunction(L, f); } void luaT_push(lua_State *L, int i) { lua_pushinteger(L, (lua_Integer)i); } void luaT_push(lua_State *L, const char* s) { lua_pushstring(L, s); } void luaT_pushtablebool(lua_State *L, const char *k, bool v) { lua_pushstring(L, k); lua_pushboolean(L, v); lua_settable(L, -3); } void luaT_printstack(lua_State* L) { int i; int top = lua_gettop(L); std::printf("total items in stack %d\n", top); for (i = 1; i <= top; i++) { /* repeat for each level */ int t = lua_type(L, i); switch (t) { case LUA_TSTRING: /* strings */ std::printf("string: '%s'\n", lua_tostring(L, i)); break; case LUA_TBOOLEAN: /* booleans */ std::printf("boolean %s\n", lua_toboolean(L, i) ? "true" : "false"); break; case LUA_TNUMBER: /* numbers */ std::printf("number: %g\n", lua_tonumber(L, i)); break; default: /* other values */ std::printf("%s\n", lua_typename(L, t)); break; } std::printf(" "); /* put a separator */ } std::printf("\n"); /* end the listing */ } void luaT_printrawtable(lua_State* L, int idx) { int i; int len = static_cast(lua_objlen(L, idx)); std::printf("total items in table %d\n", len); for (i = 1; i <= len; i++) { lua_rawgeti(L, idx, i); int t = lua_type(L, -1); switch (t) { case LUA_TSTRING: /* strings */ std::printf("string: '%s'\n", lua_tostring(L, -1)); break; case LUA_TBOOLEAN: /* booleans */ std::printf("boolean %s\n", lua_toboolean(L, -1) ? "true" : "false"); break; case LUA_TNUMBER: /* numbers */ std::printf("number: %g\n", lua_tonumber(L, -1)); break; default: /* other values */ std::printf("%s\n", lua_typename(L, t)); break; } std::printf(" "); /* put a separator */ lua_pop(L, 1); } std::printf("\n"); /* end the listing */ } CorsixTH-0.61/CorsixTH/Src/th_lua.h000066400000000000000000000254621321660673500170440ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_LUA_H_ #define CORSIX_TH_TH_LUA_H_ #include "config.h" #include "lua.hpp" #include #include int luaopen_th(lua_State *L); // Compatibility layer for removal of environments in 5.2 #if LUA_VERSION_NUM >= 502 const int luaT_environindex = lua_upvalueindex(1); #else const int luaT_environindex = LUA_ENVIRONINDEX; #endif inline int luaT_upvalueindex(int i) { #if LUA_VERSION_NUM >= 502 return lua_upvalueindex(i + 1); #else return lua_upvalueindex(i); #endif } inline void luaT_register(lua_State *L, const char *n, const std::vector &l) { #if LUA_VERSION_NUM >= 502 lua_createtable(L, 0, static_cast(l.size())); lua_pushvalue(L, luaT_environindex); luaL_setfuncs(L, l.data(), 1); lua_pushvalue(L, -1); lua_setglobal(L, n); #else luaL_register(L, n, l.data()); #endif } inline void luaT_setfuncs(lua_State *L, const luaL_Reg *R) { #if LUA_VERSION_NUM >= 502 lua_pushvalue(L, luaT_environindex); luaL_setfuncs(L, R, 1); #else luaL_register(L, nullptr, R); #endif } inline void luaT_pushcclosure(lua_State* L, lua_CFunction f, int nups) { #if LUA_VERSION_NUM >= 502 ++nups; lua_pushvalue(L, luaT_environindex); lua_insert(L, -nups); lua_pushcclosure(L, f, nups); #else lua_pushcclosure(L, f, nups); #endif } inline void luaT_pushcfunction(lua_State *L, lua_CFunction f) { luaT_pushcclosure(L, f, 0); } inline int luaT_cpcall(lua_State *L, lua_CFunction f, void *u) { #if LUA_VERSION_NUM >= 502 lua_checkstack(L, 2); lua_pushcfunction(L, f); lua_pushlightuserdata(L, u); return lua_pcall(L, 1, 0, 0); #else return lua_cpcall(L, f, u); #endif } // Compatibility for missing mode argument on lua_load in 5.1 inline int luaT_load(lua_State *L, lua_Reader r, void *d, const char *s, const char *m) { #if LUA_VERSION_NUM >= 502 return lua_load(L, r, d, s, m); #else return lua_load(L, r, d, s); #endif } // Compatibility for missing from argument on lua_resume in 5.1 inline int luaT_resume(lua_State *L, lua_State *f, int n) { #if LUA_VERSION_NUM >= 502 return lua_resume(L, f, n); #else return lua_resume(L, n); #endif } //! Version of operator new which allocates into a Lua userdata /*! If a specific constructor of T is required, then call like: T* variable = luaT_new(L, T)(constructor arguments); If the default constructor is wanted, it can be called like: T* variable = luaT_new(L, T); See also luaT_stdnew() which allocates, and also sets up the environment table and metatable for the userdata. */ #define luaT_new(L, T) new ((T*)lua_newuserdata(L, sizeof(T))) T //! Check that a Lua argument is a binary data blob /*! If the given argument is a string or (full) userdata, then returns a pointer to the start of it, and the length of it. Otherwise, throws a Lua error. */ const uint8_t* luaT_checkfile(lua_State *L, int idx, size_t* pDataLen); //! Check that a Lua argument is a string or a proxied string const char* luaT_checkstring(lua_State *L, int idx, size_t* pLength); //! Push a C closure as a callable table void luaT_pushcclosuretable(lua_State *L, lua_CFunction fn, int n); //! Set a field on the environment table of a value /*! Performs: env(stack[index])[k] = top; pop() */ void luaT_setenvfield(lua_State *L, int index, const char *k); //! Get a field from the environment table of a value /*! Performs: push(env(stack[index])[k]) */ void luaT_getenvfield(lua_State *L, int index, const char *k); template inline T* luaT_stdnew(lua_State *L, int mt_idx = luaT_environindex, bool env = false) { T* p = luaT_new(L, T); lua_pushvalue(L, mt_idx); lua_setmetatable(L, -2); if(env) { lua_newtable(L); lua_setfenv(L, -2); } return p; } template struct luaT_classinfo {}; class THRenderTarget; template <> struct luaT_classinfo { static inline const char* name() {return "Surface";} }; class THMap; template <> struct luaT_classinfo { static inline const char* name() {return "Map";} }; class THSpriteSheet; template <> struct luaT_classinfo { static inline const char* name() {return "SpriteSheet";} }; class THAnimation; template <> struct luaT_classinfo { static inline const char* name() {return "Animation";} }; class THAnimationManager; template <> struct luaT_classinfo { static inline const char* name() {return "Animator";} }; class THPalette; template <> struct luaT_classinfo { static inline const char* name() {return "Palette";} }; class THRawBitmap; template <> struct luaT_classinfo { static inline const char* name() {return "RawBitmap";} }; class THFont; template <> struct luaT_classinfo { static inline const char* name() {return "Font";} }; class THBitmapFont; template <> struct luaT_classinfo { static inline const char* name() {return "BitmapFont";} }; #ifdef CORSIX_TH_USE_FREETYPE2 class THFreeTypeFont; template <> struct luaT_classinfo { static inline const char* name() {return "FreeTypeFont";} }; #endif struct THLayers_t; template <> struct luaT_classinfo { static inline const char* name() {return "Layers";} }; class THPathfinder; template <> struct luaT_classinfo { static inline const char* name() {return "Pathfinder";} }; class THCursor; template <> struct luaT_classinfo { static inline const char* name() {return "Cursor";} }; class THLine; template <> struct luaT_classinfo { static inline const char* name() {return "Line";} }; struct music_t; template <> struct luaT_classinfo { static inline const char* name() {return "Music";} }; class THSoundArchive; template <> struct luaT_classinfo { static inline const char* name() {return "SoundArchive";} }; class THSoundEffects; template <> struct luaT_classinfo { static inline const char* name() {return "SoundEffects";} }; class THMovie; template <> struct luaT_classinfo { static inline const char* name() {return "Movie";} }; struct THWindowBase_t; template <> struct luaT_classinfo { static inline const char* name() {return "WindowBase";} }; class THSpriteRenderList; template <> struct luaT_classinfo { static inline const char* name() {return "SpriteRenderList";} }; struct THStringProxy_t; template <> struct luaT_classinfo { static inline const char* name() {return "StringProxy";} }; struct THLfsExt; template <> struct luaT_classinfo { static inline const char* name() {return "LfsExt";} }; class IsoFilesystem; template <> struct luaT_classinfo { static inline const char* name() {return "ISO Filesystem";} }; template <> struct luaT_classinfo { static inline const char* name() {return "file";} }; template static T* luaT_testuserdata(lua_State *L, int idx, int mt_idx, bool required = true) { // Turn mt_idx into an absolute index, as the stack size changes. if(mt_idx > LUA_REGISTRYINDEX && mt_idx < 0) mt_idx = lua_gettop(L) + mt_idx + 1; void *ud = lua_touserdata(L, idx); if(ud != nullptr && lua_getmetatable(L, idx) != 0) { while(true) { if(lua_equal(L, mt_idx, -1) != 0) { lua_pop(L, 1); return (T*)ud; } // Go up one inheritance level, if there is one. if(lua_type(L, -1) != LUA_TTABLE) break; lua_rawgeti(L, -1, 1); lua_replace(L, -2); } lua_pop(L, 1); } if (required) { const char *msg = lua_pushfstring(L, "%s expected, got %s", luaT_classinfo::name(), luaL_typename(L, idx)); luaL_argerror(L, idx, msg); } return nullptr; } template static T* luaT_testuserdata(lua_State *L, int idx = 1) { int iMetaIndex = luaT_environindex; if(idx > 1) iMetaIndex = luaT_upvalueindex(idx - 1); return luaT_testuserdata(L, idx, iMetaIndex); } template static int luaT_stdgc(lua_State *L) { T* p = luaT_testuserdata(L, 1, mt, false); if(p != nullptr) { p->~T(); } return 0; } void luaT_execute(lua_State *L, const char* sLuaString); void luaT_execute_loadstring(lua_State *L, const char* sLuaString); void luaT_push(lua_State *L, lua_CFunction f); void luaT_push(lua_State *L, int i); void luaT_push(lua_State *L, const char* s); template static void luaT_execute(lua_State *L, const char* sLuaString, T arg) { luaT_execute_loadstring(L, sLuaString); luaT_push(L, arg); lua_call(L, 1, LUA_MULTRET); } template static void luaT_execute(lua_State *L, const char* sLuaString, T1 arg1, T2 arg2) { luaT_execute_loadstring(L, sLuaString); luaT_push(L, arg1); luaT_push(L, arg2); lua_call(L, 2, LUA_MULTRET); } template static void luaT_execute(lua_State *L, const char* sLuaString, T1 arg1, T2 arg2, T3 arg3) { luaT_execute_loadstring(L, sLuaString); luaT_push(L, arg1); luaT_push(L, arg2); luaT_push(L, arg3); lua_call(L, 3, LUA_MULTRET); } template static void luaT_execute(lua_State *L, const char* sLuaString, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { luaT_execute_loadstring(L, sLuaString); luaT_push(L, arg1); luaT_push(L, arg2); luaT_push(L, arg3); luaT_push(L, arg4); lua_call(L, 4, LUA_MULTRET); } void luaT_pushtablebool(lua_State *L, const char *k, bool v); void luaT_printstack(lua_State *L); void luaT_printrawtable(lua_State *L, int idx); #endif // CORSIX_TH_TH_LUA_H_ CorsixTH-0.61/CorsixTH/Src/th_lua_anims.cpp000066400000000000000000000600241321660673500205570ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "th_gfx.h" #include "th_map.h" /* this variable is used to determine the layer of the animation, it should be rewriten at some point so that the it is passed as an argument in the function l_anim_set_tile */ static int lastLayer = 2; static int l_anims_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_anims_set_spritesheet(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); THSpriteSheet* pSheet = luaT_testuserdata(L, 2); lua_settop(L, 2); pAnims->setSpriteSheet(pSheet); luaT_setenvfield(L, 1, "sprites"); return 1; } //! Set the video target for the sprites. /*! setCanvas() */ static int l_anims_set_canvas(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); lua_settop(L, 2); pAnims->setCanvas(pCanvas); luaT_setenvfield(L, 1, "target"); return 1; } static int l_anims_load(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); size_t iStartDataLength, iFrameDataLength, iListDataLength, iElementDataLength; const uint8_t* pStartData = luaT_checkfile(L, 2, &iStartDataLength); const uint8_t* pFrameData = luaT_checkfile(L, 3, &iFrameDataLength); const uint8_t* pListData = luaT_checkfile(L, 4, &iListDataLength); const uint8_t* pElementData = luaT_checkfile(L, 5, &iElementDataLength); if(pAnims->loadFromTHFile(pStartData, iStartDataLength, pFrameData, iFrameDataLength, pListData, iListDataLength, pElementData, iElementDataLength)) { lua_pushboolean(L, 1); } else { lua_pushboolean(L, 0); } return 1; } //! Load custom animations. /*! loadCustom() -> true/false */ static int l_anims_loadcustom(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); size_t iDataLength; const uint8_t* pData = luaT_checkfile(L, 2, &iDataLength); if (pAnims->loadCustomAnimations(pData, iDataLength)) { lua_pushboolean(L, 1); } else { lua_pushboolean(L, 0); } return 1; } //! Lua interface for getting a set of animations by name and tile size (one for //! each view direction, 'nil' if no animation is available for a direction). /*! getAnimations(, ) -> (, , , ) */ static int l_anims_getanims(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); int iTileSize = static_cast(luaL_checkinteger(L, 2)); const char *pName = luaL_checkstring(L, 3); const AnimationStartFrames &oFrames = pAnims->getNamedAnimations(pName, iTileSize); if (oFrames.iNorth < 0) { lua_pushnil(L); } else { lua_pushnumber(L, static_cast(oFrames.iNorth)); } if (oFrames.iEast < 0) { lua_pushnil(L); } else { lua_pushnumber(L, static_cast(oFrames.iEast)); } if (oFrames.iSouth < 0) { lua_pushnil(L); } else { lua_pushnumber(L, static_cast(oFrames.iSouth)); } if (oFrames.iWest < 0) { lua_pushnil(L); } else { lua_pushnumber(L, static_cast(oFrames.iWest)); } return 4; } static int l_anims_getfirst(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); int iAnim = static_cast(luaL_checkinteger(L, 2)); lua_pushinteger(L, pAnims->getFirstFrame(iAnim)); return 1; } static int l_anims_getnext(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); int iFrame = static_cast(luaL_checkinteger(L, 2)); lua_pushinteger(L, pAnims->getNextFrame(iFrame)); return 1; } static int l_anims_set_alt_pal(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); size_t iAnimation = luaL_checkinteger(L, 2); size_t iPalLen; const uint8_t *pPal = luaT_checkfile(L, 3, &iPalLen); if(iPalLen != 256) { return luaL_argerror(L, 3, "GhostPalette string is not a valid palette"); } uint32_t iAlt32 = static_cast(luaL_checkinteger(L, 4)); pAnims->setAnimationAltPaletteMap(iAnimation, pPal, iAlt32); lua_getfenv(L, 1); lua_insert(L, 2); lua_settop(L, 4); lua_settable(L, 2); lua_settop(L, 1); return 1; } static int l_anims_set_marker(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); lua_pushboolean(L, pAnims->setFrameMarker(luaL_checkinteger(L, 2), static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4))) ? 1 : 0); return 1; } static int l_anims_set_secondary_marker(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); lua_pushboolean(L, pAnims->setFrameSecondaryMarker(luaL_checkinteger(L, 2), static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4))) ? 1 : 0); return 1; } static int l_anims_draw(lua_State *L) { THAnimationManager* pAnims = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); size_t iFrame = luaL_checkinteger(L, 3); THLayers_t* pLayers = luaT_testuserdata(L, 4, luaT_upvalueindex(2)); int iX = static_cast(luaL_checkinteger(L, 5)); int iY = static_cast(luaL_checkinteger(L, 6)); int iFlags = static_cast(luaL_optinteger(L, 7, 0)); pAnims->drawFrame(pCanvas, iFrame, *pLayers, iX, iY, iFlags); lua_settop(L, 1); return 1; } template static int l_anim_new(lua_State *L) { T* pAnimation = luaT_stdnew(L, luaT_environindex, true); lua_rawgeti(L, luaT_environindex, 2); lua_pushlightuserdata(L, pAnimation); lua_pushvalue(L, -3); lua_rawset(L, -3); lua_pop(L, 1); return 1; } template static int l_anim_persist(lua_State *L) { T* pAnimation; if(lua_gettop(L) == 2) { pAnimation = luaT_testuserdata(L, 1, luaT_environindex, false); lua_insert(L, 1); } else { // Fast __persist call pAnimation = (T*)lua_touserdata(L, -1); } LuaPersistWriter* pWriter = (LuaPersistWriter*)lua_touserdata(L, 1); pAnimation->persist(pWriter); lua_rawgeti(L, luaT_environindex, 1); lua_pushlightuserdata(L, pAnimation); lua_gettable(L, -2); pWriter->writeStackObject(-1); lua_pop(L, 2); return 0; } template static int l_anim_pre_depersist(lua_State *L) { // Note that anims and the map have nice reference cycles between them // and hence we cannot be sure which is depersisted first. To ensure that // things work nicely, we initialise all the fields of a THAnimation as // soon as possible, thus preventing issues like an anim -> map -> anim // reference chain whereby l_anim_depersist is called after l_map_depersist // (as anim references map in its environment table) causing the pPrev // field to be set during map depersistence, then cleared to nullptr by the // constructor during l_anim_depersist. T* pAnimation = luaT_testuserdata(L); new (pAnimation) T; // Call constructor return 0; } template static int l_anim_depersist(lua_State *L) { T* pAnimation = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); LuaPersistReader* pReader = (LuaPersistReader*)lua_touserdata(L, 1); lua_rawgeti(L, luaT_environindex, 2); lua_pushlightuserdata(L, pAnimation); lua_pushvalue(L, 2); lua_settable(L, -3); lua_pop(L, 1); pAnimation->depersist(pReader); lua_rawgeti(L, luaT_environindex, 1); lua_pushlightuserdata(L, pAnimation); if(!pReader->readStackObject()) return 0; lua_settable(L, -3); lua_pop(L, 1); return 0; } static int l_anim_set_hitresult(lua_State *L) { luaL_checktype(L, 1, LUA_TUSERDATA); lua_settop(L, 2); lua_rawgeti(L, luaT_environindex, 1); lua_pushlightuserdata(L, lua_touserdata(L, 1)); lua_pushvalue(L, 2); lua_settable(L, 3); lua_settop(L, 1); return 1; } static int l_anim_set_frame(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); pAnimation->setFrame(luaL_checkinteger(L, 2)); lua_settop(L, 1); return 1; } static int l_anim_get_frame(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); lua_pushinteger(L, pAnimation->getFrame()); return 1; } static int l_anim_set_crop(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); pAnimation->setCropColumn(static_cast(luaL_checkinteger(L, 2))); lua_settop(L, 1); return 1; } static int l_anim_get_crop(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); lua_pushinteger(L, pAnimation->getCropColumn()); return 1; } static int l_anim_set_anim(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); THAnimationManager* pManager = luaT_testuserdata(L, 2); size_t iAnim = luaL_checkinteger(L, 3); if(iAnim < 0 || iAnim >= pManager->getAnimationCount()) luaL_argerror(L, 3, "Animation index out of bounds"); if(lua_isnoneornil(L, 4)) pAnimation->setFlags(0); else pAnimation->setFlags(static_cast(luaL_checkinteger(L, 4))); pAnimation->setAnimation(pManager, iAnim); lua_settop(L, 2); luaT_setenvfield(L, 1, "animator"); lua_pushnil(L); luaT_setenvfield(L, 1, "morph_target"); return 1; } static int l_anim_set_morph(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); THAnimation* pMorphTarget = luaT_testuserdata(L, 2, luaT_environindex); unsigned int iDurationFactor = 1; if(!lua_isnoneornil(L, 3) && luaL_checkinteger(L, 3) > 0) iDurationFactor = static_cast(luaL_checkinteger(L, 3)); pAnimation->setMorphTarget(pMorphTarget, iDurationFactor); lua_settop(L, 2); luaT_setenvfield(L, 1, "morph_target"); return 1; } static int l_anim_set_drawable_layer(lua_State *L) { lastLayer = static_cast(luaL_checkinteger(L, 2)); return 1; } static int l_anim_get_anim(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); lua_pushinteger(L, pAnimation->getAnimation()); return 1; } template static int l_anim_set_tile(lua_State *L) { T* pAnimation = luaT_testuserdata(L); if(lua_isnoneornil(L, 2)) { pAnimation->removeFromTile(); lua_pushnil(L); luaT_setenvfield(L, 1, "map"); lua_settop(L, 1); } else { THMap* pMap = luaT_testuserdata(L, 2); THMapNode* pNode = pMap->getNode(static_cast(luaL_checkinteger(L, 3) - 1), static_cast(luaL_checkinteger(L, 4) - 1)); if(pNode) pAnimation->attachToTile(pNode, lastLayer); else { luaL_argerror(L, 3, lua_pushfstring(L, "Map index out of bounds (" LUA_NUMBER_FMT "," LUA_NUMBER_FMT ")", lua_tonumber(L, 3), lua_tonumber(L, 4))); } lua_settop(L, 2); luaT_setenvfield(L, 1, "map"); } return 1; } static int l_anim_get_tile(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); lua_settop(L, 1); lua_getfenv(L, 1); lua_getfield(L, 2, "map"); lua_replace(L, 2); if(lua_isnil(L, 2)) { return 0; } THMap* pMap = (THMap*)lua_touserdata(L, 2); const THLinkList* pListNode = pAnimation->getPrevious(); while(pListNode->m_pPrev) { pListNode = pListNode->m_pPrev; } // Casting pListNode to a THMapNode* is slightly dubious, but it should // work. If on the normal list, then pListNode will be a THMapNode*, and // all is fine. However, if on the early list, pListNode will be pointing // to a member of a THMapNode, so we're relying on pointer arithmetic // being a subtract and integer divide by sizeof(THMapNode) to yield the // correct map node. const THMapNode *pRootNode = pMap->getNodeUnchecked(0, 0); uintptr_t iDiff = reinterpret_cast(pListNode) - reinterpret_cast(pRootNode); int iIndex = (int)(iDiff / sizeof(THMapNode)); int iY = iIndex / pMap->getWidth(); int iX = iIndex - (iY * pMap->getWidth()); lua_pushinteger(L, iX + 1); lua_pushinteger(L, iY + 1); return 3; // map, x, y } static int l_anim_set_parent(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); THAnimation* pParent = luaT_testuserdata(L, 2, luaT_environindex, false); pAnimation->setParent(pParent); lua_settop(L, 1); return 1; } template static int l_anim_set_flag(lua_State *L) { T* pAnimation = luaT_testuserdata(L); pAnimation->setFlags(static_cast(luaL_checkinteger(L, 2))); lua_settop(L, 1); return 1; } template static int l_anim_set_flag_partial(lua_State *L) { T* pAnimation = luaT_testuserdata(L); uint32_t iFlags = static_cast(luaL_checkinteger(L, 2)); if(lua_isnone(L, 3) || lua_toboolean(L, 3)) { pAnimation->setFlags(pAnimation->getFlags() | iFlags); } else { pAnimation->setFlags(pAnimation->getFlags() & ~iFlags); } lua_settop(L, 1); return 1; } template static int l_anim_make_visible(lua_State *L) { T* pAnimation = luaT_testuserdata(L); pAnimation->setFlags(pAnimation->getFlags() & ~static_cast(THDF_Alpha50 | THDF_Alpha75)); lua_settop(L, 1); return 1; } template static int l_anim_make_invisible(lua_State *L) { T* pAnimation = luaT_testuserdata(L); pAnimation->setFlags(pAnimation->getFlags() | static_cast(THDF_Alpha50 | THDF_Alpha75)); lua_settop(L, 1); return 1; } template static int l_anim_get_flag(lua_State *L) { T* pAnimation = luaT_testuserdata(L); lua_pushinteger(L, pAnimation->getFlags()); return 1; } template static int l_anim_set_position(lua_State *L) { T* pAnimation = luaT_testuserdata(L); pAnimation->setPosition(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3))); lua_settop(L, 1); return 1; } static int l_anim_get_position(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); lua_pushinteger(L, pAnimation->getX()); lua_pushinteger(L, pAnimation->getY()); return 2; } template static int l_anim_set_speed(lua_State *L) { T* pAnimation = luaT_testuserdata(L); pAnimation->setSpeed(static_cast(luaL_optinteger(L, 2, 0)), static_cast(luaL_optinteger(L, 3, 0))); lua_settop(L, 1); return 1; } template static int l_anim_set_layer(lua_State *L) { T* pAnimation = luaT_testuserdata(L); pAnimation->setLayer(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_optinteger(L, 3, 0))); lua_settop(L, 1); return 1; } static int l_anim_set_layers_from(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); const THAnimation* pAnimationSrc = luaT_testuserdata(L, 2, luaT_environindex); pAnimation->setLayersFrom(pAnimationSrc); lua_settop(L, 1); return 1; } static int l_anim_set_tag(lua_State *L) { luaT_testuserdata(L); lua_settop(L, 2); luaT_setenvfield(L, 1, "tag"); return 1; } static int l_anim_get_tag(lua_State *L) { luaT_testuserdata(L); lua_settop(L, 1); lua_getfenv(L, 1); lua_getfield(L, 2, "tag"); return 1; } static int l_anim_get_marker(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); int iX = 0; int iY = 0; pAnimation->getMarker(&iX, &iY); lua_pushinteger(L, iX); lua_pushinteger(L, iY); return 2; } static int l_anim_get_secondary_marker(lua_State *L) { THAnimation* pAnimation = luaT_testuserdata(L); int iX = 0; int iY = 0; pAnimation->getSecondaryMarker(&iX, &iY); lua_pushinteger(L, iX); lua_pushinteger(L, iY); return 2; } template static int l_anim_tick(lua_State *L) { T* pAnimation = luaT_testuserdata(L); pAnimation->tick(); lua_settop(L, 1); return 1; } template static int l_anim_draw(lua_State *L) { T* pAnimation = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); pAnimation->draw(pCanvas, static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4))); lua_settop(L, 1); return 1; } static int l_srl_set_sheet(lua_State *L) { THSpriteRenderList *pSrl = luaT_testuserdata(L); THSpriteSheet *pSheet = luaT_testuserdata(L, 2); pSrl->setSheet(pSheet); lua_settop(L, 2); luaT_setenvfield(L, 1, "sheet"); return 1; } static int l_srl_append(lua_State *L) { THSpriteRenderList *pSrl = luaT_testuserdata(L); pSrl->appendSprite(luaL_checkinteger(L, 2), static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4))); lua_settop(L, 1); return 1; } static int l_srl_set_lifetime(lua_State *L) { THSpriteRenderList *pSrl = luaT_testuserdata(L); pSrl->setLifetime(static_cast(luaL_checkinteger(L, 2))); lua_settop(L, 1); return 1; } static int l_srl_is_dead(lua_State *L) { THSpriteRenderList *pSrl = luaT_testuserdata(L); lua_pushboolean(L, pSrl->isDead() ? 1 : 0); return 1; } void THLuaRegisterAnims(const THLuaRegisterState_t *pState) { // Anims luaT_class(THAnimationManager, l_anims_new, "anims", MT_Anims); luaT_setfunction(l_anims_load, "load"); luaT_setfunction(l_anims_loadcustom, "loadCustom"); luaT_setfunction(l_anims_set_spritesheet, "setSheet", MT_Sheet); luaT_setfunction(l_anims_set_canvas, "setCanvas", MT_Surface); luaT_setfunction(l_anims_getanims, "getAnimations"); luaT_setfunction(l_anims_getfirst, "getFirstFrame"); luaT_setfunction(l_anims_getnext, "getNextFrame"); luaT_setfunction(l_anims_set_alt_pal, "setAnimationGhostPalette"); luaT_setfunction(l_anims_set_marker, "setFrameMarker"); luaT_setfunction(l_anims_set_secondary_marker, "setFrameSecondaryMarker"); luaT_setfunction(l_anims_draw, "draw", MT_Surface, MT_Layers); luaT_setconstant("Alt32_GreyScale", THDF_Alt32_GreyScale); luaT_setconstant("Alt32_BlueRedSwap", THDF_Alt32_BlueRedSwap); luaT_endclass(); // Weak table at AnimMetatable[1] for light UD -> object lookup // For hitTest / setHitTestResult lua_newtable(pState->L); lua_createtable(pState->L, 0, 1); lua_pushliteral(pState->L, "v"); lua_setfield(pState->L, -2, "__mode"); lua_setmetatable(pState->L, -2); lua_rawseti(pState->L, pState->aiMetatables[MT_Anim], 1); // Weak table at AnimMetatable[2] for light UD -> full UD lookup // For persisting Map lua_newtable(pState->L); lua_createtable(pState->L, 0, 1); lua_pushliteral(pState->L, "v"); lua_setfield(pState->L, -2, "__mode"); lua_setmetatable(pState->L, -2); lua_rawseti(pState->L, pState->aiMetatables[MT_Anim], 2); // Anim luaT_class(THAnimation, l_anim_new, "animation", MT_Anim); luaT_setmetamethod(l_anim_persist, "persist"); luaT_setmetamethod(l_anim_pre_depersist, "pre_depersist"); luaT_setmetamethod(l_anim_depersist, "depersist"); luaT_setfunction(l_anim_set_anim, "setAnimation", MT_Anims); luaT_setfunction(l_anim_set_crop, "setCrop"); luaT_setfunction(l_anim_get_crop, "getCrop"); luaT_setfunction(l_anim_set_morph, "setMorph"); luaT_setfunction(l_anim_set_frame, "setFrame"); luaT_setfunction(l_anim_get_frame, "getFrame"); luaT_setfunction(l_anim_get_anim, "getAnimation"); luaT_setfunction(l_anim_set_tile, "setTile", MT_Map); luaT_setfunction(l_anim_get_tile, "getTile"); luaT_setfunction(l_anim_set_parent, "setParent"); luaT_setfunction(l_anim_set_flag, "setFlag"); luaT_setfunction(l_anim_set_flag_partial, "setPartialFlag"); luaT_setfunction(l_anim_get_flag, "getFlag"); luaT_setfunction(l_anim_make_visible, "makeVisible"); luaT_setfunction(l_anim_make_invisible, "makeInvisible"); luaT_setfunction(l_anim_set_tag, "setTag"); luaT_setfunction(l_anim_get_tag, "getTag"); luaT_setfunction(l_anim_set_position, "setPosition"); luaT_setfunction(l_anim_get_position, "getPosition"); luaT_setfunction(l_anim_set_speed, "setSpeed"); luaT_setfunction(l_anim_set_layer, "setLayer"); luaT_setfunction(l_anim_set_layers_from, "setLayersFrom"); luaT_setfunction(l_anim_set_hitresult, "setHitTestResult"); luaT_setfunction(l_anim_get_marker, "getMarker"); luaT_setfunction(l_anim_get_secondary_marker, "getSecondaryMarker"); luaT_setfunction(l_anim_tick, "tick"); luaT_setfunction(l_anim_draw, "draw", MT_Surface); luaT_setfunction(l_anim_set_drawable_layer, "setDrawingLayer"); luaT_endclass(); // Duplicate AnimMetatable[1,2] to SpriteListMetatable[1,2] lua_rawgeti(pState->L, pState->aiMetatables[MT_Anim], 1); lua_rawseti(pState->L, pState->aiMetatables[MT_SpriteList], 1); lua_rawgeti(pState->L, pState->aiMetatables[MT_Anim], 2); lua_rawseti(pState->L, pState->aiMetatables[MT_SpriteList], 2); // SpriteList luaT_class(THSpriteRenderList, l_anim_new, "spriteList", MT_SpriteList); luaT_setmetamethod(l_anim_persist, "persist"); luaT_setmetamethod(l_anim_pre_depersist, "pre_depersist"); luaT_setmetamethod(l_anim_depersist, "depersist"); luaT_setfunction(l_srl_set_sheet, "setSheet", MT_Sheet); luaT_setfunction(l_srl_append, "append"); luaT_setfunction(l_srl_set_lifetime, "setLifetime"); luaT_setfunction(l_srl_is_dead, "isDead"); luaT_setfunction(l_anim_set_tile, "setTile", MT_Map); luaT_setfunction(l_anim_set_flag, "setFlag"); luaT_setfunction(l_anim_set_flag_partial, "setPartialFlag"); luaT_setfunction(l_anim_get_flag, "getFlag"); luaT_setfunction(l_anim_make_visible, "makeVisible"); luaT_setfunction(l_anim_make_invisible, "makeInvisible"); luaT_setfunction(l_anim_set_position, "setPosition"); luaT_setfunction(l_anim_set_speed, "setSpeed"); luaT_setfunction(l_anim_set_layer, "setLayer"); luaT_setfunction(l_anim_tick, "tick"); luaT_setfunction(l_anim_draw, "draw", MT_Surface); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_lua_gfx.cpp000066400000000000000000000730631321660673500202430ustar00rootroot00000000000000/* Copyright (c) 2010-2013 Peter "Corsix" Cawley and Edvin "Lego3" Linge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "th_gfx.h" #include #include static int l_palette_new(lua_State *L) { luaT_stdnew(L); return 1; } static int l_palette_load(lua_State *L) { THPalette* pPalette = luaT_testuserdata(L); size_t iDataLen; const uint8_t* pData = luaT_checkfile(L, 2, &iDataLen); if(pPalette->loadFromTHFile(pData, iDataLen)) lua_pushboolean(L, 1); else lua_pushboolean(L, 0); return 1; } static int l_palette_set_entry(lua_State *L) { THPalette* pPalette = luaT_testuserdata(L); lua_pushboolean(L, pPalette->setEntry(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4)), static_cast(luaL_checkinteger(L, 5))) ? 1 : 0); return 1; } static int l_rawbitmap_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_rawbitmap_set_pal(lua_State *L) { THRawBitmap* pBitmap = luaT_testuserdata(L); THPalette* pPalette = luaT_testuserdata(L, 2); lua_settop(L, 2); pBitmap->setPalette(pPalette); luaT_setenvfield(L, 1, "palette"); return 1; } static int l_rawbitmap_load(lua_State *L) { THRawBitmap* pBitmap = luaT_testuserdata(L); size_t iDataLen; const uint8_t* pData = luaT_checkfile(L, 2, &iDataLen); int iWidth = static_cast(luaL_checkinteger(L, 3)); THRenderTarget* pSurface = luaT_testuserdata(L, 4, luaT_upvalueindex(1), false); if(pBitmap->loadFromTHFile(pData, iDataLen, iWidth, pSurface)) lua_pushboolean(L, 1); else lua_pushboolean(L, 0); return 1; } static int l_rawbitmap_draw(lua_State *L) { THRawBitmap* pBitmap = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); if(lua_gettop(L) >= 8) { pBitmap->draw(pCanvas, static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4)), static_cast(luaL_checkinteger(L, 5)), static_cast(luaL_checkinteger(L, 6)), static_cast(luaL_checkinteger(L, 7)), static_cast(luaL_checkinteger(L, 8))); } else pBitmap->draw(pCanvas, static_cast(luaL_optinteger(L, 3, 0)), static_cast(luaL_optinteger(L, 4, 0))); lua_settop(L, 1); return 1; } static int l_spritesheet_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_spritesheet_set_pal(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata(L); THPalette* pPalette = luaT_testuserdata(L, 2); lua_settop(L, 2); pSheet->setPalette(pPalette); luaT_setenvfield(L, 1, "palette"); return 1; } static int l_spritesheet_load(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata(L); size_t iDataLenTable, iDataLenChunk; const uint8_t* pDataTable = luaT_checkfile(L, 2, &iDataLenTable); const uint8_t* pDataChunk = luaT_checkfile(L, 3, &iDataLenChunk); bool bComplex = lua_toboolean(L, 4) != 0; THRenderTarget* pSurface = luaT_testuserdata(L, 5, luaT_upvalueindex(1), false); if(pSheet->loadFromTHFile(pDataTable, iDataLenTable, pDataChunk, iDataLenChunk, bComplex, pSurface)) lua_pushboolean(L, 1); else lua_pushboolean(L, 0); return 1; } static int l_spritesheet_count(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata(L); lua_pushinteger(L, pSheet->getSpriteCount()); return 1; } static int l_spritesheet_size(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata(L); size_t iSprite = luaL_checkinteger(L, 2); // No array adjustment if(iSprite < 0 || iSprite >= pSheet->getSpriteCount()) return luaL_argerror(L, 2, "Sprite index out of bounds"); unsigned int iWidth, iHeight; pSheet->getSpriteSizeUnchecked(iSprite, &iWidth, &iHeight); lua_pushinteger(L, iWidth); lua_pushinteger(L, iHeight); return 2; } static int l_spritesheet_draw(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); int iSprite = static_cast(luaL_checkinteger(L, 3)); // No array adjustment pSheet->drawSprite(pCanvas, iSprite, static_cast(luaL_optinteger(L, 4, 0)), static_cast(luaL_optinteger(L, 5, 0)), static_cast(luaL_optinteger(L, 6, 0))); lua_settop(L, 1); return 1; } static int l_spritesheet_hittest(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata(L); size_t iSprite = luaL_checkinteger(L, 2); int iX = static_cast(luaL_checkinteger(L, 3)); int iY = static_cast(luaL_checkinteger(L, 4)); uint32_t iFlags = static_cast(luaL_optinteger(L, 5, 0)); return pSheet->hitTestSprite(iSprite, iX, iY, iFlags); } static int l_spritesheet_isvisible(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata(L); size_t iSprite = luaL_checkinteger(L, 2); THColour oDummy; lua_pushboolean(L, pSheet->getSpriteAverageColour(iSprite, &oDummy) ? 1:0); return 1; } static int l_font_new(lua_State *L) { return luaL_error(L, "Cannot instantiate an interface"); } static int l_bitmap_font_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_bitmap_font_set_spritesheet(lua_State *L) { THBitmapFont* pFont = luaT_testuserdata(L); THSpriteSheet* pSheet = luaT_testuserdata(L, 2); lua_settop(L, 2); pFont->setSpriteSheet(pSheet); luaT_setenvfield(L, 1, "sprites"); return 1; } static int l_bitmap_font_get_spritesheet(lua_State *L) { luaT_testuserdata(L); luaT_getenvfield(L, 1, "sprites"); return 1; } static int l_bitmap_font_set_sep(lua_State *L) { THBitmapFont* pFont = luaT_testuserdata(L); pFont->setSeparation(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_optinteger(L, 3, 0))); lua_settop(L, 1); return 1; } #ifdef CORSIX_TH_USE_FREETYPE2 static void l_freetype_throw_error_code(lua_State *L, FT_Error e) { if(e != FT_Err_Ok) { switch(e) { #undef __FTERRORS_H__ #define FT_ERRORDEF(e, v, s) case e: lua_pushliteral(L, s); break; #define FT_ERROR_START_LIST #define FT_ERROR_END_LIST #include FT_ERRORS_H default: lua_pushliteral(L, "Unrecognised FreeType2 error"); break; }; lua_error(L); } } static int l_freetype_font_new(lua_State *L) { THFreeTypeFont *pFont = luaT_stdnew(L, luaT_environindex, true); l_freetype_throw_error_code(L, pFont->initialise()); return 1; } static int l_freetype_font_set_spritesheet(lua_State *L) { THFreeTypeFont* pFont = luaT_testuserdata(L); THSpriteSheet* pSheet = luaT_testuserdata(L, 2); lua_settop(L, 2); l_freetype_throw_error_code(L, pFont->matchBitmapFont(pSheet)); lua_settop(L, 1); return 1; } static int l_freetype_font_get_copyright(lua_State *L) { lua_pushstring(L, THFreeTypeFont::getCopyrightNotice()); return 1; } static int l_freetype_font_set_face(lua_State *L) { THFreeTypeFont* pFont = luaT_testuserdata(L); size_t iLength; const uint8_t* pData = luaT_checkfile(L, 2, &iLength); lua_settop(L, 2); l_freetype_throw_error_code(L, pFont->setFace(pData, iLength)); luaT_setenvfield(L, 1, "face"); return 1; } static int l_freetype_font_clear_cache(lua_State *L) { THFreeTypeFont* pFont = luaT_testuserdata(L); pFont->clearCache(); return 0; } #endif static int l_font_get_size(lua_State *L) { THFont* pFont = luaT_testuserdata(L); size_t iMsgLen; const char* sMsg = luaT_checkstring(L, 2, &iMsgLen); int iMaxWidth = INT_MAX; if(!lua_isnoneornil(L, 3)) iMaxWidth = static_cast(luaL_checkinteger(L, 3)); THFontDrawArea oDrawArea = pFont->getTextSize(sMsg, iMsgLen, iMaxWidth); lua_pushinteger(L, oDrawArea.iEndX); lua_pushinteger(L, oDrawArea.iEndY); lua_pushinteger(L, oDrawArea.iNumRows); return 3; } static int l_font_draw(lua_State *L) { THFont* pFont = luaT_testuserdata(L); THRenderTarget* pCanvas = nullptr; if(!lua_isnoneornil(L, 2)) { pCanvas = luaT_testuserdata(L, 2); } size_t iMsgLen; const char* sMsg = luaT_checkstring(L, 3, &iMsgLen); int iX = static_cast(luaL_checkinteger(L, 4)); int iY = static_cast(luaL_checkinteger(L, 5)); eTHAlign eAlign = Align_Center; if(!lua_isnoneornil(L, 8)) { const char* sAlign = luaL_checkstring(L, 8); if(std::strcmp(sAlign, "right") == 0) eAlign = Align_Right; else if(std::strcmp(sAlign, "left") == 0) eAlign = Align_Left; else if(std::strcmp(sAlign, "center") == 0 || std::strcmp(sAlign, "centre") == 0 || std::strcmp(sAlign, "middle") == 0) { eAlign = Align_Center; } else return luaL_error(L, "Invalid alignment: \"%s\"", sAlign); } THFontDrawArea oDrawArea = pFont->getTextSize(sMsg, iMsgLen); if(!lua_isnoneornil(L, 7)) { int iW = static_cast(luaL_checkinteger(L, 6)); int iH = static_cast(luaL_checkinteger(L, 7)); if(iW > oDrawArea.iEndX && eAlign != Align_Left) iX += (iW - oDrawArea.iEndX) / ((eAlign == Align_Center) ? 2 : 1); if(iH > oDrawArea.iEndY) iY += (iH - oDrawArea.iEndY) / 2; } if(pCanvas != nullptr) { pFont->drawText(pCanvas, sMsg, iMsgLen, iX, iY); } lua_pushinteger(L, iY + oDrawArea.iEndY); lua_pushinteger(L, iX + oDrawArea.iEndX); return 2; } static int l_font_draw_wrapped(lua_State *L) { THFont* pFont = luaT_testuserdata(L); THRenderTarget* pCanvas = nullptr; if(!lua_isnoneornil(L, 2)) { pCanvas = luaT_testuserdata(L, 2); } size_t iMsgLen; const char* sMsg = luaT_checkstring(L, 3, &iMsgLen); int iX = static_cast(luaL_checkinteger(L, 4)); int iY = static_cast(luaL_checkinteger(L, 5)); int iW = static_cast(luaL_checkinteger(L, 6)); eTHAlign eAlign = Align_Left; if(!lua_isnoneornil(L, 7)) { const char* sAlign = luaL_checkstring(L, 7); if(std::strcmp(sAlign, "right") == 0) eAlign = Align_Right; else if(std::strcmp(sAlign, "left") == 0) eAlign = Align_Left; else if(std::strcmp(sAlign, "center") == 0 || std::strcmp(sAlign, "centre") == 0 || std::strcmp(sAlign, "middle") == 0) { eAlign = Align_Center; } else return luaL_error(L, "Invalid alignment: \"%s\"", sAlign); } int iMaxRows = INT_MAX; if(!lua_isnoneornil(L, 8)) { iMaxRows = static_cast(luaL_checkinteger(L, 8)); } int iSkipRows = 0; if(!lua_isnoneornil(L, 9)) { iSkipRows = static_cast(luaL_checkinteger(L, 9)); } THFontDrawArea oDrawArea = pFont->drawTextWrapped(pCanvas, sMsg, iMsgLen, iX, iY, iW, iMaxRows, iSkipRows, eAlign); lua_pushinteger(L, oDrawArea.iEndY); lua_pushinteger(L, oDrawArea.iEndX); lua_pushinteger(L, oDrawArea.iNumRows); return 3; } static int l_font_draw_tooltip(lua_State *L) { THFont* pFont = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); size_t iMsgLen; const char* sMsg = luaT_checkstring(L, 3, &iMsgLen); int iX = static_cast(luaL_checkinteger(L, 4)); int iY = static_cast(luaL_checkinteger(L, 5)); int iScreenWidth = pCanvas->getWidth(); int iW = 200; // (for now) hardcoded width of tooltips uint32_t iBlack = pCanvas->mapColour(0x00, 0x00, 0x00); uint32_t iWhite = pCanvas->mapColour(0xFF, 0xFF, 0xFF); THFontDrawArea oArea = pFont->drawTextWrapped(nullptr, sMsg, iMsgLen, iX + 2, iY + 1, iW - 4, INT_MAX, 0); int iLastX = iX + oArea.iWidth + 3; int iFirstY = iY - (oArea.iEndY - iY) - 1; int iXOffset = iLastX > iScreenWidth ? iScreenWidth - iLastX : 0; int iYOffset = iFirstY < 0 ? -iFirstY : 0; pCanvas->fillRect(iBlack, iX + iXOffset, iFirstY + iYOffset, oArea.iWidth + 3, oArea.iEndY - iY + 2); pCanvas->fillRect(iWhite, iX + iXOffset + 1, iFirstY + 1 + iYOffset, oArea.iWidth + 1, oArea.iEndY - iY); pFont->drawTextWrapped(pCanvas, sMsg, iMsgLen, iX + 2 + iXOffset, iFirstY + 1 + iYOffset, iW - 4); lua_pushinteger(L, oArea.iEndY); return 1; } static int l_layers_new(lua_State *L) { THLayers_t* pLayers = luaT_stdnew(L, luaT_environindex, false); for(int i = 0; i < 13; ++i) pLayers->iLayerContents[i] = 0; return 1; } static int l_layers_get(lua_State *L) { THLayers_t* pLayers = luaT_testuserdata(L); lua_Integer iLayer = luaL_checkinteger(L, 2); if(0 <= iLayer && iLayer < 13) lua_pushinteger(L, pLayers->iLayerContents[iLayer]); else lua_pushnil(L); return 1; } static int l_layers_set(lua_State *L) { THLayers_t* pLayers = luaT_testuserdata(L); lua_Integer iLayer = luaL_checkinteger(L, 2); uint8_t iValue = static_cast(luaL_checkinteger(L, 3)); if(0 <= iLayer && iLayer < 13) pLayers->iLayerContents[iLayer] = iValue; return 0; } static int l_layers_persist(lua_State *L) { THLayers_t* pLayers = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); LuaPersistWriter* pWriter = (LuaPersistWriter*)lua_touserdata(L, 1); int iNumLayers = 13; for( ; iNumLayers >= 1; --iNumLayers) { if(pLayers->iLayerContents[iNumLayers - 1] != 0) break; } pWriter->writeVUInt(iNumLayers); pWriter->writeByteStream(pLayers->iLayerContents, iNumLayers); return 0; } static int l_layers_depersist(lua_State *L) { THLayers_t* pLayers = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); LuaPersistReader* pReader = (LuaPersistReader*)lua_touserdata(L, 1); std::memset(pLayers->iLayerContents, 0, sizeof(pLayers->iLayerContents)); int iNumLayers; if(!pReader->readVUInt(iNumLayers)) return 0; if(iNumLayers > 13) { if(!pReader->readByteStream(pLayers->iLayerContents, 13)) return 0; if(!pReader->readByteStream(nullptr, iNumLayers - 13)) return 0; } else { if(!pReader->readByteStream(pLayers->iLayerContents, iNumLayers)) return 0; } return 0; } static int l_cursor_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, false); return 1; } static int l_cursor_load(lua_State *L) { THCursor* pCursor = luaT_testuserdata(L); THSpriteSheet* pSheet = luaT_testuserdata(L, 2); if(pCursor->createFromSprite(pSheet, static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_optinteger(L, 4, 0)), static_cast(luaL_optinteger(L, 5, 0)))) { lua_settop(L, 1); return 1; } else { lua_pushboolean(L, 0); return 1; } } static int l_cursor_use(lua_State *L) { THCursor* pCursor = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); pCursor->use(pCanvas); return 0; } static int l_cursor_position(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L, 1, luaT_upvalueindex(1)); lua_pushboolean(L, THCursor::setPosition(pCanvas, static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3))) ? 1 : 0); return 1; } /** Construct the helper structure for making a #THRenderTarget. */ static THRenderTargetCreationParams l_surface_creation_params(lua_State *L, int iArgStart) { THRenderTargetCreationParams oParams; oParams.iWidth = static_cast(luaL_checkinteger(L, iArgStart)); oParams.iHeight = static_cast(luaL_checkinteger(L, iArgStart + 1)); oParams.bFullscreen = false; oParams.bPresentImmediate = false; // Parse string arguments, looking for matching parameter names. for(int iArg = iArgStart + 2, iArgCount = lua_gettop(L); iArg <= iArgCount; ++iArg) { const char* sOption = luaL_checkstring(L, iArg); if(sOption[0] == 0) continue; if (std::strcmp(sOption, "fullscreen") == 0) oParams.bFullscreen = true; if (std::strcmp(sOption, "present immediate") == 0) oParams.bPresentImmediate = true; } return oParams; } static int l_surface_new(lua_State *L) { lua_remove(L, 1); // Value inserted by __call THRenderTargetCreationParams oParams = l_surface_creation_params(L, 1); THRenderTarget* pCanvas = luaT_stdnew(L); if(pCanvas->create(&oParams)) return 1; lua_pushnil(L); lua_pushstring(L, pCanvas->getLastError()); return 2; } static int l_surface_update(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); THRenderTargetCreationParams oParams = l_surface_creation_params(L, 2); if(pCanvas->update(&oParams)) { lua_pushnil(L); return 1; } lua_pushstring(L, pCanvas->getLastError()); return 1; } static int l_surface_destroy(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); pCanvas->endFrame(); pCanvas->destroy(); return 1; } static int l_surface_fill_black(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); lua_settop(L, 1); if(pCanvas->fillBlack()) return 1; lua_pushnil(L); lua_pushstring(L, pCanvas->getLastError()); return 2; } static int l_surface_start_frame(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); lua_settop(L, 1); if(pCanvas->startFrame()) return 1; lua_pushnil(L); lua_pushstring(L, pCanvas->getLastError()); return 2; } static int l_surface_end_frame(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); lua_settop(L, 1); if(pCanvas->endFrame()) return 1; lua_pushnil(L); lua_pushstring(L, pCanvas->getLastError()); return 2; } static int l_surface_nonoverlapping(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); if(lua_isnone(L, 2) || lua_toboolean(L, 2) != 0) pCanvas->startNonOverlapping(); else pCanvas->finishNonOverlapping(); lua_settop(L, 1); return 1; } static int l_surface_set_blue_filter_active(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); pCanvas->setBlueFilterActive((lua_isnoneornil(L, 2) != 0) ? false : (lua_toboolean(L, 2) != 0)); return 1; } static int l_surface_map(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); lua_pushnumber(L, (lua_Number)pCanvas->mapColour( (Uint8)luaL_checkinteger(L, 2), (Uint8)luaL_checkinteger(L, 3), (Uint8)luaL_checkinteger(L, 4))); return 1; } static int l_surface_rect(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); if(pCanvas->fillRect(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4)), static_cast(luaL_checkinteger(L, 5)), static_cast(luaL_checkinteger(L, 6)))) { lua_settop(L, 1); return 1; } lua_pushnil(L); lua_pushstring(L, pCanvas->getLastError()); return 2; } static int l_surface_screenshot(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); const char *sFile = luaL_checkstring(L, 2); if(pCanvas->takeScreenshot(sFile)) { lua_settop(L, 1); return 1; } lua_pushnil(L); lua_pushstring(L, pCanvas->getLastError()); return 2; } static int l_surface_get_clip(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); THClipRect rcClip; pCanvas->getClipRect(&rcClip); lua_pushinteger(L, rcClip.x); lua_pushinteger(L, rcClip.y); lua_pushinteger(L, rcClip.w); lua_pushinteger(L, rcClip.h); return 4; } static int l_surface_set_clip(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); THClipRect rcClip; rcClip.x = static_cast(luaL_checkinteger(L, 2)); rcClip.y = static_cast(luaL_checkinteger(L, 3)); rcClip.w = static_cast(luaL_checkinteger(L, 4)); rcClip.h = static_cast(luaL_checkinteger(L, 5)); if(lua_toboolean(L, 6) != 0) { THClipRect rcExistingClip; pCanvas->getClipRect(&rcExistingClip); IntersectTHClipRect(rcClip, rcExistingClip); } pCanvas->setClipRect(&rcClip); lua_settop(L, 1); return 1; } static int l_surface_scale(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); THScaledItems eToScale = THSI_None; if(lua_isnoneornil(L, 3)) { eToScale = THSI_All; } else { size_t iLength; const char* sOption = lua_tolstring(L, 3, &iLength); if(sOption && iLength >= 6 && std::memcmp(sOption, "bitmap", 6) == 0) { eToScale = THSI_Bitmaps; } else luaL_error(L, "Expected \"bitmap\" as 2nd argument"); } lua_pushboolean(L, pCanvas->setScaleFactor(static_cast( luaL_checknumber(L, 2)), eToScale) ? 1 : 0); return 1; } static int l_surface_set_caption(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); pCanvas->setCaption(luaL_checkstring(L, 2)); lua_settop(L, 1); return 1; } static int l_surface_get_renderer_details(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); lua_pushstring(L, pCanvas->getRendererDetails()); return 1; } // Lua to THRenderTarget->setWindowGrab static int l_surface_set_capture_mouse(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata(L); pCanvas->setWindowGrab((lua_isnoneornil(L, 2) != 0) ? false : (lua_toboolean(L, 2) != 0)); return 0; } static int l_line_new(lua_State *L) { luaT_stdnew(L); return 1; } static int l_move_to(lua_State *L) { THLine* pLine = luaT_testuserdata(L); pLine->moveTo(luaL_optnumber(L, 2, 0), luaL_optnumber(L, 3, 0)); lua_settop(L, 1); return 1; } static int l_line_to(lua_State *L) { THLine* pLine = luaT_testuserdata(L); pLine->lineTo(luaL_optnumber(L, 2, 0), luaL_optnumber(L, 3, 0)); lua_settop(L, 1); return 1; } static int l_set_width(lua_State *L) { THLine* pLine = luaT_testuserdata(L); pLine->setWidth(luaL_optnumber(L, 2, 1)); lua_settop(L, 1); return 1; } static int l_set_colour(lua_State *L) { THLine* pLine = luaT_testuserdata(L); pLine->setColour(static_cast(luaL_optinteger(L, 2, 0)), static_cast(luaL_optinteger(L, 3, 0)), static_cast(luaL_optinteger(L, 4, 0)), static_cast(luaL_optinteger(L, 5, 255))); lua_settop(L, 1); return 1; } static int l_line_draw(lua_State *L) { THLine* pLine = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); pLine->draw(pCanvas, static_cast(luaL_optinteger(L, 3, 0)), static_cast(luaL_optinteger(L, 4, 0))); lua_settop(L, 1); return 1; } static int l_line_persist(lua_State *L) { THLine* pLine = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); LuaPersistWriter* pWriter = (LuaPersistWriter*)lua_touserdata(L, 1); pLine->persist(pWriter); return 0; } static int l_line_depersist(lua_State *L) { THLine* pLine = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); LuaPersistReader* pReader = (LuaPersistReader*)lua_touserdata(L, 1); pLine->depersist(pReader); return 0; } void THLuaRegisterGfx(const THLuaRegisterState_t *pState) { // Palette luaT_class(THPalette, l_palette_new, "palette", MT_Palette); luaT_setfunction(l_palette_load, "load"); luaT_setfunction(l_palette_set_entry, "setEntry"); luaT_endclass(); // Raw bitmap luaT_class(THRawBitmap, l_rawbitmap_new, "bitmap", MT_Bitmap); luaT_setfunction(l_rawbitmap_load, "load", MT_Surface); luaT_setfunction(l_rawbitmap_set_pal, "setPalette", MT_Palette); luaT_setfunction(l_rawbitmap_draw, "draw", MT_Surface); luaT_endclass(); // Sprite sheet luaT_class(THSpriteSheet, l_spritesheet_new, "sheet", MT_Sheet); luaT_setmetamethod(l_spritesheet_count, "len"); luaT_setfunction(l_spritesheet_load, "load", MT_Surface); luaT_setfunction(l_spritesheet_set_pal, "setPalette", MT_Palette); luaT_setfunction(l_spritesheet_size, "size"); luaT_setfunction(l_spritesheet_draw, "draw", MT_Surface); luaT_setfunction(l_spritesheet_hittest, "hitTest"); luaT_setfunction(l_spritesheet_isvisible, "isVisible"); luaT_endclass(); // Font // Also adapt the font proxy meta table (font_proxy_mt) in graphics.lua. luaT_class(THFont, l_font_new, "font", MT_Font); luaT_setfunction(l_font_get_size, "sizeOf"); luaT_setfunction(l_font_draw, "draw", MT_Surface); luaT_setfunction(l_font_draw_wrapped, "drawWrapped", MT_Surface); luaT_setfunction(l_font_draw_tooltip, "drawTooltip", MT_Surface); luaT_endclass(); // BitmapFont luaT_class(THBitmapFont, l_bitmap_font_new, "bitmap_font", MT_BitmapFont); luaT_superclass(MT_Font); luaT_setfunction(l_bitmap_font_set_spritesheet, "setSheet", MT_Sheet); luaT_setfunction(l_bitmap_font_get_spritesheet, "getSheet", MT_Sheet); luaT_setfunction(l_bitmap_font_set_sep, "setSeparation"); luaT_endclass(); #ifdef CORSIX_TH_USE_FREETYPE2 // FreeTypeFont luaT_class(THFreeTypeFont, l_freetype_font_new, "freetype_font", MT_FreeTypeFont); luaT_superclass(MT_Font); luaT_setfunction(l_freetype_font_set_spritesheet, "setSheet", MT_Sheet); luaT_setfunction(l_freetype_font_set_face, "setFace"); luaT_setfunction(l_freetype_font_get_copyright, "getCopyrightNotice"); luaT_setfunction(l_freetype_font_clear_cache, "clearCache"); luaT_endclass(); #endif // Layers luaT_class(THLayers_t, l_layers_new, "layers", MT_Layers); luaT_setmetamethod(l_layers_get, "index"); luaT_setmetamethod(l_layers_set, "newindex"); luaT_setmetamethod(l_layers_persist, "persist"); luaT_setmetamethod(l_layers_depersist, "depersist"); luaT_endclass(); // Cursor luaT_class(THCursor, l_cursor_new, "cursor", MT_Cursor); luaT_setfunction(l_cursor_load, "load", MT_Sheet); luaT_setfunction(l_cursor_use, "use", MT_Surface); luaT_setfunction(l_cursor_position, "setPosition", MT_Surface); luaT_endclass(); // Surface luaT_class(THRenderTarget, l_surface_new, "surface", MT_Surface); luaT_setfunction(l_surface_update, "update"); luaT_setfunction(l_surface_destroy, "destroy"); luaT_setfunction(l_surface_fill_black, "fillBlack"); luaT_setfunction(l_surface_start_frame, "startFrame"); luaT_setfunction(l_surface_end_frame, "endFrame"); luaT_setfunction(l_surface_nonoverlapping, "nonOverlapping"); luaT_setfunction(l_surface_map, "mapRGB"); luaT_setfunction(l_surface_set_blue_filter_active, "setBlueFilterActive"); luaT_setfunction(l_surface_rect, "drawRect"); luaT_setfunction(l_surface_get_clip, "getClip"); luaT_setfunction(l_surface_set_clip, "setClip"); luaT_setfunction(l_surface_screenshot, "takeScreenshot"); luaT_setfunction(l_surface_scale, "scale"); luaT_setfunction(l_surface_set_caption, "setCaption"); luaT_setfunction(l_surface_get_renderer_details, "getRendererDetails"); luaT_setfunction(l_surface_set_capture_mouse, "setCaptureMouse"); luaT_endclass(); // Line luaT_class(THLine, l_line_new, "line", MT_Line); luaT_setfunction(l_move_to, "moveTo"); luaT_setfunction(l_line_to, "lineTo"); luaT_setfunction(l_set_width, "setWidth"); luaT_setfunction(l_set_colour, "setColour"); luaT_setfunction(l_line_draw, "draw", MT_Surface); luaT_setmetamethod(l_line_persist, "persist"); luaT_setmetamethod(l_line_depersist, "depersist"); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_lua_internal.h000066400000000000000000000101441321660673500207270ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_LUA_INTERNAL_H_ #define CORSIX_TH_TH_LUA_INTERNAL_H_ #include "config.h" #include "th_lua.h" enum eTHLuaMetatable { MT_Map, MT_Palette, MT_Sheet, MT_Font, MT_BitmapFont, #ifdef CORSIX_TH_USE_FREETYPE2 MT_FreeTypeFont, #endif MT_Layers, MT_Anims, MT_Anim, MT_Path, MT_Surface, MT_Bitmap, MT_Cursor, MT_LfsExt, MT_SoundArc, MT_SoundFx, MT_Movie, MT_String, MT_WindowBase, MT_SpriteList, MT_StringProxy, MT_Line, MT_Count, MT_DummyString, }; struct THLuaRegisterState_t { lua_State *L; int aiMetatables[MT_Count]; int iMainTable; int iTop; }; void luaT_setclosure(const THLuaRegisterState_t *pState, lua_CFunction fn, eTHLuaMetatable eMetatable1, ...); #define luaT_class(typnam, new_fn, name, mt) { \ const char * sCurrentClassName = name; \ int iCurrentClassMT = pState->aiMetatables[mt]; \ lua_settop(pState->L, pState->iTop); \ /* Make metatable the environment for registered functions */ \ lua_pushvalue(pState->L, iCurrentClassMT); \ lua_replace(pState->L, luaT_environindex); \ /* Set the __gc metamethod to C++ destructor */ \ luaT_pushcclosure(pState->L, luaT_stdgc, 0); \ lua_setfield(pState->L, iCurrentClassMT, "__gc"); \ /* Set the depersist size */ \ lua_pushinteger(pState->L, sizeof(typnam)); \ lua_setfield(pState->L, iCurrentClassMT, "__depersist_size"); \ /* Create the methods table; call it -> new instance */ \ luaT_pushcclosuretable(pState->L, new_fn, 0); \ /* Set __class_name on the methods metatable */ \ lua_getmetatable(pState->L, -1); \ lua_pushstring(pState->L, sCurrentClassName); \ lua_setfield(pState->L, -2, "__class_name"); \ lua_pop(pState->L, 1); \ /* Set __index to the methods table */ \ lua_pushvalue(pState->L, -1); \ lua_setfield(pState->L, iCurrentClassMT, "__index") #define luaT_superclass(super_mt) \ /* Set __index on the methods metatable to the superclass methods */ \ lua_getmetatable(pState->L, -1); \ lua_getfield(pState->L, pState->aiMetatables[super_mt], "__index"); \ lua_setfield(pState->L, -2, "__index"); \ lua_pop(pState->L, 1); \ /* Set metatable[1] to super_mt */ \ lua_pushvalue(pState->L, pState->aiMetatables[super_mt]); \ lua_rawseti(pState->L, iCurrentClassMT, 1) #define luaT_endclass() \ lua_setfield(pState->L, pState->iMainTable, sCurrentClassName); } #define luaT_setmetamethod(fn, name, ...) \ luaT_setclosure(pState, fn, ## __VA_ARGS__, MT_Count); \ lua_setfield(pState->L, iCurrentClassMT, "__" name) #define luaT_setfunction(fn, name, ...) \ luaT_setclosure(pState, fn, ## __VA_ARGS__, MT_Count); \ lua_setfield(pState->L, -2, name) /** * Add a named constant to the lua interface. * @param name (string literal) Name of the constant. * @param value (tested with int) Value of the constant. */ #define luaT_setconstant(name, value) \ luaT_push(pState->L, value); \ lua_setfield(pState->L, -2, name) #endif CorsixTH-0.61/CorsixTH/Src/th_lua_lfs_ext.cpp000066400000000000000000000057371321660673500211260ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Copyright (c) 2014 Stephen E. Baker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "config.h" #ifdef CORSIX_TH_USE_WIN32_SDK #include #endif struct THLfsExt {}; static int l_lfs_ext_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } #ifdef _WIN32 #ifdef CORSIX_TH_USE_WIN32_SDK static int l_volume_list(lua_State *L) { /* Windows, using the Win32 API. */ DWORD iDriveMask = GetLogicalDrives(); int iNDrives = 0; char cDrive; lua_settop(L, 0); lua_newtable(L); for (cDrive = 'A'; cDrive <= 'Z'; ++cDrive) { if (iDriveMask & (1 << (cDrive - 'A'))) { char sName[4] = { cDrive, ':', '\\', 0 }; if (GetDriveTypeA(sName) > DRIVE_NO_ROOT_DIR) { lua_pushlstring(L, sName, 2); lua_rawseti(L, 1, ++iNDrives); } } } return 1; } #else static int l_volume_list(lua_State *L) { /* Windows, without the Win32 API. */ int iNDrives = 0; char cDrive; lua_settop(L, 0); lua_newtable(L); lua_getfield(L, luaT_upvalueindex(1), "attributes"); for (cDrive = 'A'; cDrive <= 'Z'; ++cDrive) { lua_pushvalue(L, 2); lua_pushfstring(L, "%c:\\", cDrive); lua_pushliteral(L, "mode"); lua_call(L, 2, 1); if (lua_toboolean(L, 3) != 0) { lua_pushfstring(L, "%c:", cDrive); lua_rawseti(L, 1, ++iNDrives); } lua_pop(L, 1); } return 1; } #endif #else static int l_volume_list(lua_State *L) { /* Non-Windows systems. Assume that / is the root of the filesystem. */ lua_settop(L, 0); lua_newtable(L); lua_pushliteral(L, "/"); lua_rawseti(L, 1, 1); return 1; } #endif void THLuaRegisterLfsExt(const THLuaRegisterState_t *pState) { luaT_class(THLfsExt, l_lfs_ext_new, "lfsExt", MT_LfsExt); luaT_setfunction(l_volume_list, "volumes"); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_lua_map.cpp000066400000000000000000001062121321660673500202250ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "th_map.h" #include "th_pathfind.h" #include #include #include static const int player_max = 4; static int l_map_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_map_set_sheet(lua_State *L) { THMap* pMap = luaT_testuserdata(L); THSpriteSheet* pSheet = luaT_testuserdata(L, 2); lua_settop(L, 2); pMap->setBlockSheet(pSheet); luaT_setenvfield(L, 1, "sprites"); return 1; } static int l_map_persist(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); pMap->persist((LuaPersistWriter*)lua_touserdata(L, 1)); return 0; } static int l_map_depersist(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); LuaPersistReader* pReader = (LuaPersistReader*)lua_touserdata(L, 1); pMap->depersist(pReader); luaT_getenvfield(L, 2, "sprites"); pMap->setBlockSheet((THSpriteSheet*)lua_touserdata(L, -1)); lua_pop(L, 1); return 0; } static void l_map_load_obj_cb(void *pL, int iX, int iY, THObjectType eTHOB, uint8_t iFlags) { lua_State *L = reinterpret_cast(pL); lua_createtable(L, 4, 0); lua_pushinteger(L, 1 + (lua_Integer)iX); lua_rawseti(L, -2, 1); lua_pushinteger(L, 1 + (lua_Integer)iY); lua_rawseti(L, -2, 2); lua_pushinteger(L, (lua_Integer)eTHOB); lua_rawseti(L, -2, 3); lua_pushinteger(L, (lua_Integer)iFlags); lua_rawseti(L, -2, 4); lua_rawseti(L, 3, static_cast(lua_objlen(L, 3)) + 1); } static int l_map_load(lua_State *L) { THMap* pMap = luaT_testuserdata(L); size_t iDataLen; const uint8_t* pData = luaT_checkfile(L, 2, &iDataLen); lua_settop(L, 2); lua_newtable(L); if(pMap->loadFromTHFile(pData, iDataLen, l_map_load_obj_cb, (void*)L)) lua_pushboolean(L, 1); else lua_pushboolean(L, 0); lua_insert(L, -2); return 2; } static int l_map_loadblank(lua_State *L) { THMap* pMap = luaT_testuserdata(L); if(pMap->loadBlank()) lua_pushboolean(L, 1); else lua_pushboolean(L, 0); lua_newtable(L); return 2; } static int l_map_save(lua_State *L) { THMap *pMap = luaT_testuserdata(L); std::string filename(luaL_checkstring(L, 2)); pMap->save(filename); return 0; } static THAnimation* l_map_updateblueprint_getnextanim(lua_State *L, int& iIndex) { THAnimation *pAnim; lua_rawgeti(L, 11, iIndex); if(lua_type(L, -1) == LUA_TNIL) { lua_pop(L, 1); pAnim = luaT_new(L, THAnimation); lua_pushvalue(L, luaT_upvalueindex(2)); lua_setmetatable(L, -2); lua_createtable(L, 0, 2); lua_pushvalue(L, 1); lua_setfield(L, -2, "map"); lua_pushvalue(L, 12); lua_setfield(L, -2, "animator"); lua_setfenv(L, -2); lua_rawseti(L, 11, iIndex); } else { pAnim = luaT_testuserdata(L, -1, luaT_upvalueindex(2)); lua_pop(L, 1); } ++iIndex; return pAnim; } static uint16_t l_check_temp(lua_State *L, int iArg) { lua_Number n = luaL_checknumber(L, iArg); if(n < static_cast(0) || static_cast(1) < n) luaL_argerror(L, iArg, "temperature (number in [0,1])"); return static_cast(n * static_cast(65535)); } static int l_map_settemperaturedisplay(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_Integer iTD = luaL_checkinteger(L, 2) - 1; if (iTD >= THMT_Count) iTD = THMT_Red; pMap->setTemperatureDisplay(static_cast(iTD)); return 1; } static int l_map_updatetemperature(lua_State *L) { THMap* pMap = luaT_testuserdata(L); uint16_t iAir = l_check_temp(L, 2); uint16_t iRadiator = l_check_temp(L, 3); pMap->updateTemperatures(iAir, iRadiator); lua_settop(L, 1); return 1; } static int l_map_gettemperature(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2)) - 1; int iY = static_cast(luaL_checkinteger(L, 3)) - 1; const THMapNode* pNode = pMap->getNode(iX, iY); uint16_t iTemp = pMap->getNodeTemperature(pNode); lua_pushnumber(L, static_cast(iTemp) / static_cast(65535)); return 1; } /** * Is the node position valid for a new room? * @param entire_invalid Entire blueprint is invalid (eg wrong position or too small). * @param pNode Node to examine. * @param pMap The world map. * @param player_id The player to check for. * @return Whether the node position is valid for a new room. */ static inline bool is_valid( bool entire_invalid, const THMapNode *pNode, const THMap *pMap, int player_id) { return !entire_invalid && !pNode->flags.room && pNode->flags.buildable && (player_id == 0 || pMap->getNodeOwner(pNode) == player_id); } static int l_map_updateblueprint(lua_State *L) { // NB: This function can be implemented in Lua, but is implemented in C for // efficiency. const unsigned short iFloorTileGood = 24 + (THDF_Alpha50 << 8); const unsigned short iFloorTileGoodCenter = 37 + (THDF_Alpha50 << 8); const unsigned short iFloorTileBad = 67 + (THDF_Alpha50 << 8); const unsigned int iWallAnimTopCorner = 124; const unsigned int iWallAnim = 120; THMap* pMap = luaT_testuserdata(L); int iOldX = static_cast(luaL_checkinteger(L, 2)) - 1; int iOldY = static_cast(luaL_checkinteger(L, 3)) - 1; int iOldW = static_cast(luaL_checkinteger(L, 4)); int iOldH = static_cast(luaL_checkinteger(L, 5)); int iNewX = static_cast(luaL_checkinteger(L, 6)) - 1; int iNewY = static_cast(luaL_checkinteger(L, 7)) - 1; int iNewW = static_cast(luaL_checkinteger(L, 8)); int iNewH = static_cast(luaL_checkinteger(L, 9)); int player_id = static_cast(luaL_checkinteger(L, 10)); luaL_checktype(L, 11, LUA_TTABLE); // Animation list THAnimationManager* pAnims = luaT_testuserdata(L, 12, luaT_upvalueindex(1)); bool entire_invalid = lua_toboolean(L, 13) != 0; bool valid = !entire_invalid; if(iOldX < 0 || iOldY < 0 || (iOldX + iOldW) > pMap->getWidth() || (iOldY + iOldH) > pMap->getHeight()) luaL_argerror(L, 2, "Old rectangle is out of bounds"); if(iNewX < 0 || iNewY < 0 || (iNewX + iNewW) >= pMap->getWidth() || (iNewY + iNewH) >= pMap->getHeight()) luaL_argerror(L, 6, "New rectangle is out of bounds"); // Clear blueprint flag from previous selected floor tiles (copying it to the passable flag). for(int iY = iOldY; iY < iOldY + iOldH; ++iY) { for(int iX = iOldX; iX < iOldX + iOldW; ++iX) { THMapNode *pNode = pMap->getNodeUnchecked(iX, iY); pNode->iBlock[3] = 0; pNode->flags.passable |= pNode->flags.passable_if_not_for_blueprint; pNode->flags.passable_if_not_for_blueprint = false; } } // Add blueprint flag to new floor tiles. for(int iY = iNewY; iY < iNewY + iNewH; ++iY) { for(int iX = iNewX; iX < iNewX + iNewW; ++iX) { THMapNode *pNode = pMap->getNodeUnchecked(iX, iY); if(is_valid(entire_invalid, pNode, pMap, player_id)) pNode->iBlock[3] = iFloorTileGood; else { pNode->iBlock[3] = iFloorTileBad; valid = false; } pNode->flags.passable_if_not_for_blueprint = pNode->flags.passable; } } // Set center floor tiles if(iNewW >= 2 && iNewH >= 2) { int iCenterX = iNewX + (iNewW - 2) / 2; int iCenterY = iNewY + (iNewH - 2) / 2; THMapNode *pNode = pMap->getNodeUnchecked(iCenterX, iCenterY); if(pNode->iBlock[3] == iFloorTileGood) pNode->iBlock[3] = iFloorTileGoodCenter + 2; pNode = pMap->getNodeUnchecked(iCenterX + 1, iCenterY); if(pNode->iBlock[3] == iFloorTileGood) pNode->iBlock[3] = iFloorTileGoodCenter + 1; pNode = pMap->getNodeUnchecked(iCenterX, iCenterY + 1); if(pNode->iBlock[3] == iFloorTileGood) pNode->iBlock[3] = iFloorTileGoodCenter + 0; pNode = pMap->getNodeUnchecked(iCenterX + 1, iCenterY + 1); if(pNode->iBlock[3] == iFloorTileGood) pNode->iBlock[3] = iFloorTileGoodCenter + 3; } // Set wall animations int iNextAnim = 1; THAnimation *pAnim = l_map_updateblueprint_getnextanim(L, iNextAnim); THMapNode *pNode = pMap->getNodeUnchecked(iNewX, iNewY); pAnim->setAnimation(pAnims, iWallAnimTopCorner); pAnim->setFlags(THDF_ListBottom | (is_valid(entire_invalid, pNode, pMap, player_id) ? 0 : THDF_AltPalette)); pAnim->attachToTile(pNode, 0); for(int iX = iNewX; iX < iNewX + iNewW; ++iX) { if(iX != iNewX) { pAnim = l_map_updateblueprint_getnextanim(L, iNextAnim); pNode = pMap->getNodeUnchecked(iX, iNewY); pAnim->setAnimation(pAnims, iWallAnim); pAnim->setFlags(THDF_ListBottom | (is_valid(entire_invalid, pNode, pMap, player_id) ? 0 : THDF_AltPalette)); pAnim->attachToTile(pNode, 0); pAnim->setPosition(0, 0); } pAnim = l_map_updateblueprint_getnextanim(L, iNextAnim); pNode = pMap->getNodeUnchecked(iX, iNewY + iNewH - 1); pAnim->setAnimation(pAnims, iWallAnim); pAnim->setFlags(THDF_ListBottom | (is_valid(entire_invalid, pNode, pMap, player_id) ? 0 : THDF_AltPalette)); pNode = pMap->getNodeUnchecked(iX, iNewY + iNewH); pAnim->attachToTile(pNode, 0); pAnim->setPosition(0, -1); } for(int iY = iNewY; iY < iNewY + iNewH; ++iY) { if(iY != iNewY) { pAnim = l_map_updateblueprint_getnextanim(L, iNextAnim); pNode = pMap->getNodeUnchecked(iNewX, iY); pAnim->setAnimation(pAnims, iWallAnim); pAnim->setFlags(THDF_ListBottom | THDF_FlipHorizontal | (is_valid(entire_invalid, pNode, pMap, player_id) ? 0 : THDF_AltPalette)); pAnim->attachToTile(pNode, 0); pAnim->setPosition(2, 0); } pAnim = l_map_updateblueprint_getnextanim(L, iNextAnim); pNode = pMap->getNodeUnchecked(iNewX + iNewW - 1, iY); pAnim->setAnimation(pAnims, iWallAnim); pAnim->setFlags(THDF_ListBottom | THDF_FlipHorizontal | (is_valid(entire_invalid, pNode, pMap, player_id) ? 0 : THDF_AltPalette)); pNode = pMap->getNodeUnchecked(iNewX + iNewW, iY); pAnim->attachToTile(pNode, 0); pAnim->setPosition(2, -1); } // Clear away extra animations int iAnimCount = (int)lua_objlen(L, 11); if(iAnimCount >= iNextAnim) { for(int i = iNextAnim; i <= iAnimCount; ++i) { pAnim = l_map_updateblueprint_getnextanim(L, iNextAnim); pAnim->removeFromTile(); lua_pushnil(L); lua_rawseti(L, 11, i); } } lua_pushboolean(L, valid ? 1 : 0); return 1; } static int l_map_getsize(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_pushinteger(L, pMap->getWidth()); lua_pushinteger(L, pMap->getHeight()); return 2; } static int l_map_get_player_count(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_pushinteger(L, pMap->getPlayerCount()); return 1; } static int l_map_set_player_count(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int count = static_cast(luaL_checkinteger(L, 2)); try { pMap->setPlayerCount(count); } catch (std::out_of_range) { return luaL_error(L, "Player count out of range %d", count); } return 0; } static int l_map_get_player_camera(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX, iY; int iPlayer = static_cast(luaL_optinteger(L, 2, 1)); bool bGood = pMap->getPlayerCameraTile(iPlayer - 1, &iX, &iY); if(!bGood) return luaL_error(L, "Player index out of range: %d", iPlayer); lua_pushinteger(L, iX + 1); lua_pushinteger(L, iY + 1); return 2; } static int l_map_set_player_camera(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); int iY = static_cast(luaL_checkinteger(L, 3) - 1); int iPlayer = static_cast(luaL_optinteger(L, 4, 1)); if (iPlayer < 1 || iPlayer > player_max) return luaL_error(L, "Player index out of range: %i", iPlayer); pMap->setPlayerCameraTile(iPlayer - 1, iX, iY); return 0; } static int l_map_get_player_heliport(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX, iY; int iPlayer = static_cast(luaL_optinteger(L, 2, 1)); bool bGood = pMap->getPlayerHeliportTile(iPlayer - 1, &iX, &iY); if(!bGood) return luaL_error(L, "Player index out of range: %d", iPlayer); lua_pushinteger(L, iX + 1); lua_pushinteger(L, iY + 1); return 2; } static int l_map_set_player_heliport(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); int iY = static_cast(luaL_checkinteger(L, 3) - 1); int iPlayer = static_cast(luaL_optinteger(L, 4, 1)); if (iPlayer < 1 || iPlayer > player_max) return luaL_error(L, "Player index out of range: %i", iPlayer); pMap->setPlayerHeliportTile(iPlayer - 1, iX, iY); return 0; } static int l_map_getcell(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); // Lua arrays start at 1 - pretend int iY = static_cast(luaL_checkinteger(L, 3) - 1); // the map does too. THMapNode* pNode = pMap->getNode(iX, iY); if(pNode == nullptr) { return luaL_argerror(L, 2, lua_pushfstring(L, "Map co-ordinates out " "of bounds (%d, %d)", iX + 1, iY + 1)); } if(lua_isnoneornil(L, 4)) { lua_pushinteger(L, pNode->iBlock[0]); lua_pushinteger(L, pNode->iBlock[1]); lua_pushinteger(L, pNode->iBlock[2]); lua_pushinteger(L, pNode->iBlock[3]); return 4; } else { lua_Integer iLayer = luaL_checkinteger(L, 4) - 1; if(iLayer < 0 || iLayer >= 4) return luaL_argerror(L, 4, "Layer index is out of bounds (1-4)"); lua_pushinteger(L, pNode->iBlock[iLayer]); return 1; } } /** Recognized node flags by Lua. */ static const std::map lua_node_flag_map = { {"passable", th_map_node_flags::key::passable_mask}, {"hospital", th_map_node_flags::key::hospital_mask}, {"buildable", th_map_node_flags::key::buildable_mask}, {"room", th_map_node_flags::key::room_mask}, {"doorWest", th_map_node_flags::key::door_west_mask}, {"doorNorth", th_map_node_flags::key::door_north_mask}, {"tallWest", th_map_node_flags::key::tall_west_mask}, {"tallNorth", th_map_node_flags::key::tall_north_mask}, {"travelNorth", th_map_node_flags::key::can_travel_n_mask}, {"travelEast", th_map_node_flags::key::can_travel_e_mask}, {"travelSouth", th_map_node_flags::key::can_travel_s_mask}, {"travelWest", th_map_node_flags::key::can_travel_w_mask}, {"doNotIdle", th_map_node_flags::key::do_not_idle_mask}, {"buildableNorth", th_map_node_flags::key::buildable_n_mask}, {"buildableEast", th_map_node_flags::key::buildable_e_mask}, {"buildableSouth", th_map_node_flags::key::buildable_s_mask}, {"buildableWest", th_map_node_flags::key::buildable_w_mask}, }; /** * Add the current value of the \a flag in the \a node to the output. * @param L Lua context. * @param node Node to inspect. * @param flag Flag of the node to check (and report). * @param name Name of the flag in Lua code. */ static inline void add_cellflag(lua_State *L, const THMapNode *node, th_map_node_flags::key flag, const std::string &name) { lua_pushlstring(L, name.c_str(), name.size()); lua_pushboolean(L, node->flags[flag] ? 1 : 0); lua_settable(L, 4); } /** * Add the current value of a node field to the output. * @param L Lua context. * @param value Value of the node field to add. * @param name Name of the field in Lua code. */ static inline void add_cellint(lua_State *L, int value, const std::string &name) { lua_pushlstring(L, name.c_str(), name.size()); lua_pushinteger(L, value); lua_settable(L, 4); } /** * Get the value of all cell flags at a position. * @param L Lua context. * @return Number of results of the call. */ static int l_map_getcellflags(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); // Lua arrays start at 1 - pretend int iY = static_cast(luaL_checkinteger(L, 3) - 1); // the map does too. THMapNode* pNode = pMap->getNode(iX, iY); if(pNode == nullptr) return luaL_argerror(L, 2, "Map co-ordinates out of bounds"); if(lua_type(L, 4) != LUA_TTABLE) { lua_settop(L, 3); lua_createtable(L, 0, 1); } else { lua_settop(L, 4); } // Fill Lua table with the flags and numbers of the node. for (auto val : lua_node_flag_map) { add_cellflag(L, pNode, val.second, val.first); } add_cellint(L, pNode->iRoomId, "roomId"); add_cellint(L, pNode->iParcelId, "parcelId"); add_cellint(L, pMap->getNodeOwner(pNode), "owner"); add_cellint(L, static_cast(pNode->objects.empty() ? THObjectType::no_object : pNode->objects.front()), "thob"); return 1; } /* because all the thobs are not retrieved when the map is loaded in c lua objects use the afterLoad function to be registered after a load, if the object list would not be cleared it would result in duplication of thobs in the object list. */ static int l_map_erase_thobs(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); // Lua arrays start at 1 - pretend int iY = static_cast(luaL_checkinteger(L, 3) - 1); // the map does too. THMapNode* pNode = pMap->getNode(iX, iY); if(pNode == nullptr) return luaL_argerror(L, 2, "Map co-ordinates out of bounds"); pNode->objects.clear(); return 1; } static int l_map_remove_cell_thob(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); // Lua arrays start at 1 - pretend int iY = static_cast(luaL_checkinteger(L, 3) - 1); // the map does too. THMapNode* pNode = pMap->getNode(iX, iY); if(pNode == nullptr) return luaL_argerror(L, 2, "Map co-ordinates out of bounds"); auto thob = static_cast(luaL_checkinteger(L, 4)); for(auto iter = pNode->objects.begin(); iter != pNode->objects.end(); iter++) { if(*iter == thob) { pNode->objects.erase(iter); break; } } return 1; } static int l_map_setcellflags(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); // Lua arrays start at 1 - pretend int iY = static_cast(luaL_checkinteger(L, 3) - 1); // the map does too. THMapNode* pNode = pMap->getNode(iX, iY); if(pNode == nullptr) return luaL_argerror(L, 2, "Map co-ordinates out of bounds"); luaL_checktype(L, 4, LUA_TTABLE); lua_settop(L, 4); lua_pushnil(L); while(lua_next(L, 4)) { if(lua_type(L, 5) == LUA_TSTRING) { const char *field = lua_tostring(L, 5); auto iter = lua_node_flag_map.find(field); if(iter != lua_node_flag_map.end()) { if (lua_toboolean(L, 6) == 0) pNode->flags[(*iter).second] = false; else pNode->flags[(*iter).second] = true; } else if (std::strcmp(field, "thob") == 0) { auto thob = static_cast(lua_tointeger(L, 6)); pNode->objects.push_back(thob); } else if(std::strcmp(field, "parcelId") == 0) { pNode->iParcelId = static_cast(lua_tointeger(L, 6)); } else if(std::strcmp(field, "roomId") == 0) { pNode->iRoomId = static_cast(lua_tointeger(L,6)); } else { luaL_error(L, "Invalid flag \'%s\'", field); } } lua_settop(L, 5); } return 0; } static int l_map_setwallflags(lua_State *L) { THMap* pMap = luaT_testuserdata(L); pMap->setAllWallDrawFlags((uint8_t)luaL_checkinteger(L, 2)); lua_settop(L, 1); return 1; } static int l_map_setcell(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX = static_cast(luaL_checkinteger(L, 2) - 1); // Lua arrays start at 1 - pretend int iY = static_cast(luaL_checkinteger(L, 3) - 1); // the map does too. THMapNode* pNode = pMap->getNode(iX, iY); if(pNode == nullptr) return luaL_argerror(L, 2, "Map co-ordinates out of bounds"); if(lua_gettop(L) >= 7) { pNode->iBlock[0] = (uint16_t)luaL_checkinteger(L, 4); pNode->iBlock[1] = (uint16_t)luaL_checkinteger(L, 5); pNode->iBlock[2] = (uint16_t)luaL_checkinteger(L, 6); pNode->iBlock[3] = (uint16_t)luaL_checkinteger(L, 7); } else { lua_Integer iLayer = luaL_checkinteger(L, 4) - 1; if(iLayer < 0 || iLayer >= 4) return luaL_argerror(L, 4, "Layer index is out of bounds (1-4)"); uint16_t iBlock = static_cast(luaL_checkinteger(L, 5)); pNode->iBlock[iLayer] = iBlock; } lua_settop(L, 1); return 1; } static int l_map_updateshadows(lua_State *L) { THMap* pMap = luaT_testuserdata(L); pMap->updateShadows(); lua_settop(L, 1); return 1; } static int l_map_updatepathfinding(lua_State *L) { THMap* pMap = luaT_testuserdata(L); pMap->updatePathfinding(); lua_settop(L, 1); return 1; } static int l_map_mark_room(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX_ = static_cast(luaL_checkinteger(L, 2) - 1); int iY_ = static_cast(luaL_checkinteger(L, 3) - 1); int iW = static_cast(luaL_checkinteger(L, 4)); int iH = static_cast(luaL_checkinteger(L, 5)); uint16_t iTile = static_cast(luaL_checkinteger(L, 6)); uint16_t iRoomId = static_cast(luaL_optinteger(L, 7, 0)); if(iX_ < 0 || iY_ < 0 || (iX_ + iW) > pMap->getWidth() || (iY_ + iH) > pMap->getHeight()) luaL_argerror(L, 2, "Rectangle is out of bounds"); for(int iY = iY_; iY < iY_ + iH; ++iY) { for(int iX = iX_; iX < iX_ + iW; ++iX) { THMapNode *pNode = pMap->getNodeUnchecked(iX, iY); pNode->iBlock[0] = iTile; pNode->iBlock[3] = 0; pNode->flags.room = true; pNode->flags.passable |= pNode->flags.passable_if_not_for_blueprint; pNode->flags.passable_if_not_for_blueprint = false; pNode->iRoomId = iRoomId; } } pMap->updatePathfinding(); pMap->updateShadows(); lua_settop(L, 1); return 1; } static int l_map_unmark_room(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iX_ = static_cast(luaL_checkinteger(L, 2) - 1); int iY_ = static_cast(luaL_checkinteger(L, 3) - 1); int iW = static_cast(luaL_checkinteger(L, 4)); int iH = static_cast(luaL_checkinteger(L, 5)); if(iX_ < 0 || iY_ < 0 || (iX_ + iW) > pMap->getWidth() || (iY_ + iH) > pMap->getHeight()) luaL_argerror(L, 2, "Rectangle is out of bounds"); for(int iY = iY_; iY < iY_ + iH; ++iY) { for(int iX = iX_; iX < iX_ + iW; ++iX) { THMapNode *pNode = pMap->getNodeUnchecked(iX, iY); pNode->iBlock[0] = pMap->getOriginalNodeUnchecked(iX, iY)->iBlock[0]; pNode->flags.room = false; pNode->iRoomId = 0; } } pMap->updatePathfinding(); pMap->updateShadows(); lua_settop(L, 1); return 1; } static int l_map_draw(lua_State *L) { THMap* pMap = luaT_testuserdata(L); THRenderTarget* pCanvas = luaT_testuserdata(L, 2); pMap->draw(pCanvas, static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4)), static_cast(luaL_checkinteger(L, 5)), static_cast(luaL_checkinteger(L, 6)), static_cast(luaL_optinteger(L, 7, 0)), static_cast(luaL_optinteger(L, 8, 0))); lua_settop(L, 1); return 1; } static int l_map_hittest(lua_State *L) { THMap* pMap = luaT_testuserdata(L); THDrawable* pObject = pMap->hitTest(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3))); if(pObject == nullptr) return 0; lua_rawgeti(L, luaT_upvalueindex(1), 1); lua_pushlightuserdata(L, pObject); lua_gettable(L, -2); return 1; } static int l_map_get_parcel_tilecount(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int iParcel = static_cast(luaL_checkinteger(L, 2)); lua_Integer iCount = pMap->getParcelTileCount(iParcel); lua_pushinteger(L, iCount); return 1; } static int l_map_get_parcel_count(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_pushinteger(L, pMap->getParcelCount()); return 1; } static int l_map_set_parcel_owner(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int parcelId = static_cast(luaL_checkinteger(L, 2)); int player = static_cast(luaL_checkinteger(L, 3)); if(lua_type(L, 4) != LUA_TTABLE) { lua_settop(L, 3); lua_newtable(L); } else { lua_settop(L, 4); } std::vector> vSplitTiles = pMap->setParcelOwner(parcelId, player); for (std::vector>::size_type i = 0; i != vSplitTiles.size(); i++) { lua_pushinteger(L, i + 1); lua_createtable(L, 0, 2); lua_pushinteger(L, 1); lua_pushinteger(L, vSplitTiles[i].first + 1); lua_settable(L, 6); lua_pushinteger(L, 2); lua_pushinteger(L, vSplitTiles[i].second + 1); lua_settable(L, 6); lua_settable(L, 4); } return 1; } static int l_map_get_parcel_owner(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_pushinteger(L, pMap->getParcelOwner(static_cast(luaL_checkinteger(L, 2)))); return 1; } static int l_map_is_parcel_purchasable(lua_State *L) { THMap* pMap = luaT_testuserdata(L); lua_pushboolean(L, pMap->isParcelPurchasable(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3))) ? 1 : 0); return 1; } /* Compute the fraction of corridor tiles with litter, of the parcels owned by the given player. */ static int l_map_get_litter_fraction(lua_State *L) { THMap* pMap = luaT_testuserdata(L); int owner = static_cast(luaL_checkinteger(L, 2)); if (owner == 0) { lua_pushnumber(L, 0.0); // Outside has no litter. return 1; } double tile_count = 0; double litter_count = 0; for (int x = 0; x < pMap->getWidth(); x++) { for (int y = 0; y < pMap->getHeight(); y++) { const THMapNode* pNode = pMap->getNodeUnchecked(x, y); if (pNode->iParcelId == 0 || owner != pMap->getParcelOwner(pNode->iParcelId) || pNode->iRoomId != 0) { continue; } tile_count++; for(auto iter = pNode->objects.begin(); iter != pNode->objects.end(); iter++) { if(*iter == THObjectType::litter) { litter_count++; break; } } } } double fraction = (tile_count == 0) ? 0.0 : litter_count / tile_count; lua_pushnumber(L, fraction); return 1; } static int l_path_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_path_set_map(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); THMap* pMap = luaT_testuserdata(L, 2); lua_settop(L, 2); pPathfinder->setDefaultMap(pMap); luaT_setenvfield(L, 1, "map"); return 1; } static int l_path_persist(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); pPathfinder->persist((LuaPersistWriter*)lua_touserdata(L, 1)); return 0; } static int l_path_depersist(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); lua_settop(L, 2); lua_insert(L, 1); LuaPersistReader* pReader = (LuaPersistReader*)lua_touserdata(L, 1); pPathfinder->depersist(pReader); luaT_getenvfield(L, 2, "map"); pPathfinder->setDefaultMap(reinterpret_cast(lua_touserdata(L, -1))); return 0; } static int l_path_is_reachable_from_hospital(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); if(pPathfinder->findPathToHospital(nullptr, static_cast(luaL_checkinteger(L, 2) - 1), static_cast(luaL_checkinteger(L, 3) - 1))) { lua_pushboolean(L, 1); int iX, iY; pPathfinder->getPathEnd(&iX, &iY); lua_pushinteger(L, iX + 1); lua_pushinteger(L, iY + 1); return 3; } else { lua_pushboolean(L, 0); return 1; } } static int l_path_distance(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); if(pPathfinder->findPath(nullptr, static_cast(luaL_checkinteger(L, 2)) - 1, static_cast(luaL_checkinteger(L, 3)) - 1, static_cast(luaL_checkinteger(L, 4)) - 1, static_cast(luaL_checkinteger(L, 5)) - 1)) { lua_pushinteger(L, pPathfinder->getPathLength()); } else { lua_pushboolean(L, 0); } return 1; } static int l_path_path(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); pPathfinder->findPath(nullptr, static_cast(luaL_checkinteger(L, 2)) - 1, static_cast(luaL_checkinteger(L, 3)) - 1, static_cast(luaL_checkinteger(L, 4)) - 1, static_cast(luaL_checkinteger(L, 5)) - 1); pPathfinder->pushResult(L); return 2; } static int l_path_idle(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); if(!pPathfinder->findIdleTile(nullptr, static_cast(luaL_checkinteger(L, 2)) - 1, static_cast(luaL_checkinteger(L, 3)) - 1, static_cast(luaL_optinteger(L, 4, 0)))) { return 0; } int iX, iY; pPathfinder->getPathEnd(&iX, &iY); lua_pushinteger(L, iX + 1); lua_pushinteger(L, iY + 1); return 2; } static int l_path_visit(lua_State *L) { THPathfinder* pPathfinder = luaT_testuserdata(L); luaL_checktype(L, 6, LUA_TFUNCTION); lua_pushboolean(L, pPathfinder->visitObjects(nullptr, static_cast(luaL_checkinteger(L, 2)) - 1, static_cast(luaL_checkinteger(L, 3)) - 1, static_cast(luaL_checkinteger(L, 4)), static_cast(luaL_checkinteger(L, 5)), L, 6, luaL_checkinteger(L, 4) == 0 ? true : false) ? 1 : 0); return 1; } void THLuaRegisterMap(const THLuaRegisterState_t *pState) { // Map luaT_class(THMap, l_map_new, "map", MT_Map); luaT_setmetamethod(l_map_persist, "persist", MT_Anim); luaT_setmetamethod(l_map_depersist, "depersist", MT_Anim); luaT_setfunction(l_map_load, "load"); luaT_setfunction(l_map_loadblank, "loadBlank"); luaT_setfunction(l_map_save, "save"); luaT_setfunction(l_map_getsize, "size"); luaT_setfunction(l_map_get_player_count, "getPlayerCount"); luaT_setfunction(l_map_set_player_count, "setPlayerCount"); luaT_setfunction(l_map_get_player_camera, "getCameraTile"); luaT_setfunction(l_map_set_player_camera, "setCameraTile"); luaT_setfunction(l_map_get_player_heliport, "getHeliportTile"); luaT_setfunction(l_map_set_player_heliport, "setHeliportTile"); luaT_setfunction(l_map_getcell, "getCell"); luaT_setfunction(l_map_gettemperature, "getCellTemperature"); luaT_setfunction(l_map_getcellflags, "getCellFlags"); luaT_setfunction(l_map_setcellflags, "setCellFlags"); luaT_setfunction(l_map_setcell, "setCell"); luaT_setfunction(l_map_setwallflags, "setWallDrawFlags"); luaT_setfunction(l_map_settemperaturedisplay, "setTemperatureDisplay"); luaT_setfunction(l_map_updatetemperature, "updateTemperatures"); luaT_setfunction(l_map_updateblueprint, "updateRoomBlueprint", MT_Anims, MT_Anim); luaT_setfunction(l_map_updateshadows, "updateShadows"); luaT_setfunction(l_map_updatepathfinding, "updatePathfinding"); luaT_setfunction(l_map_mark_room, "markRoom"); luaT_setfunction(l_map_unmark_room, "unmarkRoom"); luaT_setfunction(l_map_set_sheet, "setSheet", MT_Sheet); luaT_setfunction(l_map_draw, "draw", MT_Surface); luaT_setfunction(l_map_hittest, "hitTestObjects", MT_Anim); luaT_setfunction(l_map_get_parcel_tilecount, "getParcelTileCount"); luaT_setfunction(l_map_get_parcel_count, "getPlotCount"); luaT_setfunction(l_map_set_parcel_owner, "setPlotOwner"); luaT_setfunction(l_map_get_parcel_owner, "getPlotOwner"); luaT_setfunction(l_map_is_parcel_purchasable, "isParcelPurchasable"); luaT_setfunction(l_map_erase_thobs, "eraseObjectTypes"); luaT_setfunction(l_map_remove_cell_thob, "removeObjectType"); luaT_setfunction(l_map_get_litter_fraction, "getLitterFraction"); luaT_endclass(); // Pathfinder luaT_class(THPathfinder, l_path_new, "pathfinder", MT_Path); luaT_setmetamethod(l_path_persist, "persist"); luaT_setmetamethod(l_path_depersist, "depersist"); luaT_setfunction(l_path_distance, "findDistance"); luaT_setfunction(l_path_is_reachable_from_hospital, "isReachableFromHospital"); luaT_setfunction(l_path_path, "findPath"); luaT_setfunction(l_path_idle, "findIdleTile"); luaT_setfunction(l_path_visit, "findObject"); luaT_setfunction(l_path_set_map, "setMap", MT_Map); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_lua_movie.cpp000066400000000000000000000111171321660673500205660ustar00rootroot00000000000000/* Copyright (c) 2012 Stephen Baker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "th_movie.h" #include "th_gfx.h" static int l_movie_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_movie_set_renderer(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); THRenderTarget *pRenderTarget = luaT_testuserdata(L, 2); pMovie->setRenderer(pRenderTarget->getRenderer()); return 0; } static int l_movie_enabled(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); lua_pushboolean(L, pMovie->moviesEnabled()); return 1; } static int l_movie_load(lua_State *L) { bool loaded; const char* warning; THMovie *pMovie = luaT_testuserdata(L); const char* filepath = lua_tolstring(L, 2, nullptr); pMovie->clearLastError(); loaded = pMovie->load(filepath); warning = pMovie->getLastError(); lua_pushboolean(L, loaded); lua_pushstring(L, warning); return 2; } static int l_movie_unload(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); pMovie->unload(); return 0; } static int l_movie_play(lua_State *L) { const char* warning; THMovie *pMovie = luaT_testuserdata(L); pMovie->clearLastError(); pMovie->play( static_cast(luaL_checkinteger(L, 2))); warning = pMovie->getLastError(); lua_pushstring(L, warning); return 1; } static int l_movie_stop(lua_State *L) { THMovie *pVideo = luaT_testuserdata(L); pVideo->stop(); return 0; } static int l_movie_get_native_height(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); lua_pushinteger(L, pMovie->getNativeHeight()); return 1; } static int l_movie_get_native_width(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); lua_pushinteger(L, pMovie->getNativeWidth()); return 1; } static int l_movie_has_audio_track(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); lua_pushboolean(L, pMovie->hasAudioTrack()); return 1; } static int l_movie_refresh(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); pMovie->refresh(SDL_Rect{ static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4)), static_cast(luaL_checkinteger(L, 5)) }); return 0; } static int l_movie_allocate_picture_buffer(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); pMovie->allocatePictureBuffer(); return 0; } static int l_movie_deallocate_picture_buffer(lua_State *L) { THMovie *pMovie = luaT_testuserdata(L); pMovie->deallocatePictureBuffer(); return 0; } void THLuaRegisterMovie(const THLuaRegisterState_t *pState) { luaT_class(THMovie, l_movie_new, "moviePlayer", MT_Movie); luaT_setfunction(l_movie_set_renderer, "setRenderer", MT_Surface); luaT_setfunction(l_movie_enabled, "getEnabled"); luaT_setfunction(l_movie_load, "load"); luaT_setfunction(l_movie_unload, "unload"); luaT_setfunction(l_movie_play, "play"); luaT_setfunction(l_movie_stop, "stop"); luaT_setfunction(l_movie_get_native_height, "getNativeHeight"); luaT_setfunction(l_movie_get_native_width, "getNativeWidth"); luaT_setfunction(l_movie_has_audio_track, "hasAudioTrack"); luaT_setfunction(l_movie_refresh, "refresh"); luaT_setfunction(l_movie_allocate_picture_buffer, "allocatePictureBuffer"); luaT_setfunction(l_movie_deallocate_picture_buffer, "deallocatePictureBuffer"); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_lua_sound.cpp000066400000000000000000000246231321660673500206050ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "th_sound.h" #include "th_lua.h" #include "lua_sdl.h" #include #include #include static int m_a_iPlayedSoundCallbackIDs[1000]; static int m_iPlayedSoundCallbackIDsPointer = 0; static std::map m_mapSoundTimers; static int l_soundarc_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_soundarc_load(lua_State *L) { THSoundArchive* pArchive = luaT_testuserdata(L); size_t iDataLen; const uint8_t* pData = luaT_checkfile(L, 2, &iDataLen); if(pArchive->loadFromTHFile(pData, iDataLen)) lua_pushboolean(L, 1); else lua_pushboolean(L, 0); return 1; } static int l_soundarc_count(lua_State *L) { THSoundArchive* pArchive = luaT_testuserdata(L); lua_pushnumber(L, (lua_Number)pArchive->getSoundCount()); return 1; } /** * Perform case-insensitive string compare. * @param s1 First string to compare. * @param s2 Second string to compare. * @return Negative number when \a s1 should be before \a s2, zero if both * string are equal, else a positive number. */ static int ignorecase_cmp(const char *s1, const char *s2) { while(*s1 && *s2) { if (std::tolower(*s1) != std::tolower(*s2)) break; s1++; s2++; } return std::tolower(*s1) - std::tolower(*s2); } static size_t l_soundarc_checkidx(lua_State *L, int iArg, THSoundArchive* pArchive) { if(lua_isnumber(L, iArg)) { size_t iIndex = (size_t)lua_tonumber(L, iArg); if(iIndex >= pArchive->getSoundCount()) { lua_pushnil(L); lua_pushfstring(L, "Sound index out of " "bounds (%f is not in range [0, %d])", lua_tonumber(L, iArg), static_cast(pArchive->getSoundCount()) - 1); return pArchive->getSoundCount(); } return iIndex; } const char* sName = luaL_checkstring(L, iArg); lua_getfenv(L, 1); lua_pushvalue(L, iArg); lua_rawget(L, -2); if(lua_type(L, -1) == LUA_TLIGHTUSERDATA) { size_t iIndex = (size_t)lua_topointer(L, -1); lua_pop(L, 2); return iIndex; } lua_pop(L, 2); size_t iCount = pArchive->getSoundCount(); for(size_t i = 0; i < iCount; ++i) { if(ignorecase_cmp(sName, pArchive->getSoundFilename(i)) == 0) { lua_getfenv(L, 1); lua_pushvalue(L, iArg); lua_pushlightuserdata(L, (void*)i); lua_settable(L, -3); lua_pop(L, 1); return i; } } lua_pushnil(L); lua_pushliteral(L, "File not found in sound archive: "); lua_pushvalue(L, iArg); lua_concat(L, 2); return pArchive->getSoundCount(); } static int l_soundarc_filename(lua_State *L) { THSoundArchive* pArchive = luaT_testuserdata(L); size_t iIndex = l_soundarc_checkidx(L, 2, pArchive); if(iIndex == pArchive->getSoundCount()) return 2; lua_pushstring(L, pArchive->getSoundFilename(iIndex)); return 1; } static int l_soundarc_duration(lua_State *L) { THSoundArchive* pArchive = luaT_testuserdata(L); size_t iIndex = l_soundarc_checkidx(L, 2, pArchive); if(iIndex == pArchive->getSoundCount()) return 2; size_t iDuration = pArchive->getSoundDuration(iIndex); lua_pushnumber(L, static_cast(iDuration) / static_cast(1000)); return 1; } static int l_soundarc_filedata(lua_State *L) { THSoundArchive* pArchive = luaT_testuserdata(L); size_t iIndex = l_soundarc_checkidx(L, 2, pArchive); if(iIndex == pArchive->getSoundCount()) return 2; SDL_RWops *pRWops = pArchive->loadSound(iIndex); if(!pRWops) return 0; size_t iLength = SDL_RWseek(pRWops, 0, SEEK_END); SDL_RWseek(pRWops, 0, SEEK_SET); // There is a potential leak of pRWops if either of these Lua calls cause // a memory error, but it isn't very likely, and this a debugging function // anyway, so it isn't very important. void *pBuffer = lua_newuserdata(L, iLength); lua_pushlstring(L, (const char*)pBuffer, SDL_RWread(pRWops, pBuffer, 1, iLength)); SDL_RWclose(pRWops); return 1; } static int l_soundarc_sound_exists(lua_State *L) { THSoundArchive* pArchive = luaT_testuserdata(L); size_t iIndex = l_soundarc_checkidx(L, 2, pArchive); if(iIndex == pArchive->getSoundCount()) lua_pushboolean(L, 0); else lua_pushboolean(L, 1); return 1; } static int l_soundfx_new(lua_State *L) { luaT_stdnew(L, luaT_environindex, true); return 1; } static int l_soundfx_set_archive(lua_State *L) { THSoundEffects *pEffects = luaT_testuserdata(L); THSoundArchive *pArchive = luaT_testuserdata(L, 2); pEffects->setSoundArchive(pArchive); lua_settop(L, 2); luaT_setenvfield(L, 1, "archive"); return 1; } static int l_soundfx_set_sound_volume(lua_State *L) { THSoundEffects *pEffects = luaT_testuserdata(L); pEffects->setSoundEffectsVolume(luaL_checknumber(L, 2)); return 1; } static int l_soundfx_set_sound_effects_on(lua_State *L) { THSoundEffects *pEffects = luaT_testuserdata(L); pEffects->setSoundEffectsOn(lua_toboolean(L, 2) != 0); return 1; } static Uint32 played_sound_callback(Uint32 interval, void* param) { SDL_Event e; e.type = SDL_USEREVENT_SOUND_OVER; e.user.data1 = param; int iSoundID = *(static_cast(param)); SDL_RemoveTimer(m_mapSoundTimers[iSoundID]); m_mapSoundTimers.erase(iSoundID); SDL_PushEvent(&e); return interval; } static int l_soundfx_play(lua_State *L) { THSoundEffects *pEffects = luaT_testuserdata(L); lua_settop(L, 7); lua_getfenv(L, 1); lua_pushliteral(L, "archive"); lua_rawget(L,8); THSoundArchive *pArchive = (THSoundArchive*)lua_touserdata(L, 9); if(pArchive == nullptr) { return 0; } // l_soundarc_checkidx requires the archive at the bottom of the stack lua_replace(L, 1); size_t iIndex = l_soundarc_checkidx(L, 2, pArchive); if(iIndex == pArchive->getSoundCount()) return 2; if(lua_isnil(L, 4)) { pEffects->playSound(iIndex, luaL_checknumber(L, 3)); } else { pEffects->playSoundAt(iIndex, luaL_checknumber(L, 3), static_cast(luaL_checkinteger(L, 4)), static_cast(luaL_checkinteger(L, 5))); } //SDL SOUND_OVER Callback Timer: //6: unusedPlayedCallbackID if(!lua_isnil(L, 6)) { //7: Callback delay int iPlayedCallbackDelay = 0; //ms if(!lua_isnil(L, 7)) iPlayedCallbackDelay = static_cast(luaL_checknumber(L, 7)); if(m_iPlayedSoundCallbackIDsPointer == sizeof(m_a_iPlayedSoundCallbackIDs)) m_iPlayedSoundCallbackIDsPointer = 0; m_a_iPlayedSoundCallbackIDs[m_iPlayedSoundCallbackIDsPointer] = static_cast(luaL_checkinteger(L, 6)); size_t interval = pArchive->getSoundDuration(iIndex) + iPlayedCallbackDelay; SDL_TimerID timersID = SDL_AddTimer(static_cast(interval), played_sound_callback, &(m_a_iPlayedSoundCallbackIDs[m_iPlayedSoundCallbackIDsPointer])); m_mapSoundTimers.insert(std::pair(m_a_iPlayedSoundCallbackIDs[m_iPlayedSoundCallbackIDsPointer], timersID)); m_iPlayedSoundCallbackIDsPointer++; } lua_pushboolean(L, 1); return 1; } static int l_soundfx_set_camera(lua_State *L) { THSoundEffects *pEffects = luaT_testuserdata(L); pEffects->setCamera(static_cast(luaL_checkinteger(L, 2)), static_cast(luaL_checkinteger(L, 3)), static_cast(luaL_checkinteger(L, 4))); return 0; } static int l_soundfx_reserve_channel(lua_State *L) { int iChannel; THSoundEffects *pEffects = luaT_testuserdata(L); iChannel = pEffects->reserveChannel(); lua_pushinteger(L, iChannel); return 1; } static int l_soundfx_release_channel(lua_State *L) { THSoundEffects *pEffects = luaT_testuserdata(L); pEffects->releaseChannel(static_cast(luaL_checkinteger(L, 2))); return 1; } void THLuaRegisterSound(const THLuaRegisterState_t *pState) { // Sound Archive luaT_class(THSoundArchive, l_soundarc_new, "soundArchive", MT_SoundArc); luaT_setmetamethod(l_soundarc_count, "len"); luaT_setfunction(l_soundarc_load, "load"); luaT_setfunction(l_soundarc_filename, "getFilename"); luaT_setfunction(l_soundarc_duration, "getDuration"); luaT_setfunction(l_soundarc_filedata, "getFileData"); luaT_setfunction(l_soundarc_sound_exists, "soundExists"); luaT_endclass(); // Sound Effects luaT_class(THSoundEffects, l_soundfx_new, "soundEffects", MT_SoundFx); luaT_setfunction(l_soundfx_set_archive, "setSoundArchive", MT_SoundArc); luaT_setfunction(l_soundfx_play, "play"); luaT_setfunction(l_soundfx_set_sound_volume, "setSoundVolume"); luaT_setfunction(l_soundfx_set_sound_effects_on, "setSoundEffectsOn"); luaT_setfunction(l_soundfx_set_camera, "setCamera"); luaT_setfunction(l_soundfx_reserve_channel, "reserveChannel"); luaT_setfunction(l_soundfx_release_channel, "releaseChannel"); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_lua_strings.cpp000066400000000000000000000532501321660673500211440ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "persist_lua.h" #include /* This file implements a string proxy system. A string proxy is a userdata which behaves like a string or a table, but records how it was made, and is serialised as this list of instructions, rather than as the resulting value. The application for this lies in persisting localised strings, as the language in use at depersist-time may be different to the one in use at persist-time. First note that such a proxy must be a userdata (in order to have custom persistance behaviour and a full complement of metamethods). At the same time, there is no C data which the userdata needs to hold, so the C part of the userdata can be empty. The Lua part of the userdata needs to hold the current proxied value and the instructions for recreating the value. When the proxied value is a table, then in addition, the Lua part of the userdata needs to store a cache of proxies for its children to avoid the situation of regularly creating new proxies for children. Due to how the persistance library deals with userdata, the Lua parts of these userdata cannot be held in the userdata's environment table, so instead the idiom of inside-out objects needs to be used. The principle idea of inside-out objects is that environment(obj).field becomes metatable(obj).field[obj] with the field table having weak values. Unfortunately, this causes weak table cycles, which are not handled well in Lua 5.1 (L5.2 uses ephemeron tables which fix this). Hence the Value and Cache weak tables are stored in the registry table, and the ReconstructInfo is stored as the userdata environment. */ struct THStringProxy_t {}; // We need 2 lightuserdata keys for naming the weak tables in the registry, // which we get by having 2 bytes of dummy global variables. static uint8_t g_aStringDummyGlobals[2] = {0}; static inline void aux_push_weak_table(lua_State *L, int iIndex) { lua_pushlightuserdata(L, &g_aStringDummyGlobals[iIndex]); lua_rawget(L, LUA_REGISTRYINDEX); } // Replace the value at the top of the stack with a userdata proxy static int l_str_new_aux(lua_State *L) { luaT_stdnew(L); aux_push_weak_table(L, 0); lua_pushvalue(L, -2); lua_pushvalue(L, -4); lua_rawset(L, -3); lua_pop(L, 1); lua_replace(L, -2); return 1; } // Create a new root-level userdata proxy static int l_str_new(lua_State *L) { // Pack extra arguments into a table int iNArgs = lua_gettop(L); lua_createtable(L, iNArgs - 2, 0); lua_replace(L, 1); // Value inserted by __call for(int i = iNArgs; i >= 3; --i) lua_rawseti(L, 1, i - 2); // Make proxy luaL_checkany(L, 2); l_str_new_aux(L); // Save extra arguments as reconstruction information lua_insert(L, 1); lua_setfenv(L, 1); return 1; } // Helper function to make an array in Lua static void aux_mk_table(lua_State *L, int nliterals, int nvalues, ...) { lua_createtable(L, nliterals + nvalues, 0); va_list args; va_start(args, nvalues); for(int i = 1; i <= nliterals; ++i) { const char *sStr = va_arg(args, const char*); lua_pushstring(L, sStr); lua_rawseti(L, -2, i); } for(int i = nliterals + 1; i <= nliterals + nvalues; ++i) { int iValue = va_arg(args, int); if(0 > iValue && iValue > LUA_REGISTRYINDEX) --iValue; lua_pushvalue(L, iValue); lua_rawseti(L, -2, i); } va_end(args); } // Helper function which pushes onto the stack a random key from the table // (previously) on the top of the stack. static void aux_push_random_key(lua_State *L) { int iNKeys = 0; lua_newtable(L); lua_getglobal(L, "pairs"); lua_pushvalue(L, -3); lua_call(L, 1, 3); while(true) { lua_pushvalue(L, -3); lua_pushvalue(L, -3); lua_pushvalue(L, -3); lua_remove(L, -4); lua_call(L, 2, 1); if(lua_isnil(L, -1)) break; ++iNKeys; lua_pushvalue(L, -1); lua_rawseti(L, -5, iNKeys); } lua_pop(L, 3); lua_getglobal(L, "math"); lua_getfield(L, -1, "random"); lua_pushinteger(L, 1); lua_pushinteger(L, iNKeys); lua_call(L, 2, 1); lua_gettable(L, -3); lua_replace(L, -3); lua_pop(L, 1); } // __index metamethod handler. // For proxied tables, return proxies of children, preferably cached // For proxied strings, return methods static int l_str_index(lua_State *L) { // Look up cached value, and return it if present aux_push_weak_table(L, 1); lua_pushvalue(L, 1); lua_gettable(L, 3); lua_replace(L, 3); lua_pushvalue(L, 2); lua_rawget(L, 3); if(!lua_isnil(L, 4)) return 1; lua_pop(L, 1); // Fetch the proxied value aux_push_weak_table(L, 0); lua_pushvalue(L, 1); lua_rawget(L, 4); lua_replace(L, 4); // Handle string methods if(lua_type(L, 4) == LUA_TSTRING) { lua_rawgeti(L, luaT_environindex, 4); lua_pushvalue(L, 2); lua_gettable(L, 5); return 1; } // Handle __random, as it shouldn't be cached if(lua_type(L, 2) == LUA_TSTRING) { size_t iLen; const char* sKey = lua_tolstring(L, 2, &iLen); if(iLen == 8 && std::strcmp(sKey, "__random") == 0) { aux_push_random_key(L); lua_replace(L, 2); lua_settop(L, 2); return l_str_index(L); } } // Fetch desired value lua_pushvalue(L, 2); lua_gettable(L, 4); lua_replace(L, 4); // Create new userdata proxy l_str_new_aux(L); aux_mk_table(L, 0, 2, 1, 2); lua_setfenv(L, 4); // Save to cache and return lua_pushvalue(L, 2); lua_pushvalue(L, 4); lua_rawset(L, 3); return 1; } // __newindex metamethod handler static int l_str_newindex(lua_State *L) { return luaL_error(L, "String tables are read-only"); } // Generic string method handler // The name of the method is stored at upvalue 1 static int l_str_func(lua_State *L) { int iArgCount = lua_gettop(L); lua_checkstack(L, iArgCount + 10); int iUserdataCount = 0; // Construct the resulting value aux_push_weak_table(L, 0); for(int i = 1; i <= iArgCount; ++i) { lua_pushvalue(L, i); if(lua_type(L, i) == LUA_TUSERDATA) { lua_rawget(L, iArgCount + 1); ++iUserdataCount; } } lua_pushvalue(L, luaT_upvalueindex(1)); lua_gettable(L, iArgCount + 2); lua_replace(L, iArgCount + 1); lua_call(L, iArgCount, 1); // Trivial case of result not depending upon any proxies if(iUserdataCount == 0) return 1; // Wrap result in a proxy l_str_new_aux(L); // Create and save reconstruction information lua_createtable(L, iArgCount + 1, 0); lua_pushvalue(L, luaT_upvalueindex(1)); lua_rawseti(L, -2, 1); for(int i = 1; i <= iArgCount; ++i) { lua_pushvalue(L, i); lua_rawseti(L, -2, i + 1); } lua_setfenv(L, -2); return 1; } // __concat metamethod handler // Simple (but inefficient) handling by converting concat into format static int l_str_concat(lua_State *L) { int iParent = (lua_type(L, 1) == LUA_TUSERDATA) ? 1 : 2; lua_getfield(L, iParent, "format"); lua_insert(L, 1); lua_pushliteral(L, "%s%s"); lua_insert(L, 2); lua_call(L, 3, 1); return 1; } // pairs() metamethod handler static int l_str_pairs(lua_State *L) { lua_settop(L, 1); lua_getfield(L, luaT_environindex, "__next"); lua_pushvalue(L, 1); lua_pushnil(L); return 3; } // ipairs() metamethod handler static int l_str_ipairs(lua_State *L) { lua_settop(L, 1); lua_getfield(L, luaT_environindex, "__inext"); lua_pushvalue(L, 1); lua_pushinteger(L, 0); return 3; } // pairs() iterator function static int l_str_next(lua_State *L) { luaL_checktype(L, 1, LUA_TUSERDATA); lua_settop(L, 2); // Fetch proxied value aux_push_weak_table(L, 0); lua_pushvalue(L, 1); lua_rawget(L, 3); // Remove layer of proxying done in Lua // NB: Assumes that pairs(t) returns 3 values: next, t, nil // In our case, the returned t should be the raw (unproxied) one lua_getglobal(L, "pairs"); lua_replace(L, 3); lua_call(L, 1, 2); // Get the next key lua_pushvalue(L, 2); lua_call(L, 2, 1); if(lua_isnil(L, -1)) return 0; // Get the (proxied) value which goes with the key lua_pushvalue(L, -1); lua_gettable(L, 1); return 2; } // __len metamethod handler static int l_str_len(lua_State *L) { luaL_checktype(L, 1, LUA_TUSERDATA); // Fetch proxied value aux_push_weak_table(L, 0); lua_pushvalue(L, 1); lua_gettable(L, -2); // String tables are proxied in Lua, and Lua tables do not honour __len // so use ipairs to get the unproxied table to call __len on. if(lua_type(L, -1) == LUA_TTABLE) { lua_getglobal(L, "ipairs"); lua_insert(L, -2); lua_call(L, 1, 2); lua_replace(L, -2); } lua_pushinteger(L, (lua_Integer)lua_objlen(L, -1)); return 1; } // ipairs() iterator function static int l_str_inext(lua_State *L) { lua_Integer n = luaL_checkinteger(L, 2) + 1; lua_settop(L, 1); l_str_len(L); lua_Integer len = lua_tointeger(L, -1); if(n > len) return 0; // Fetch proxied value lua_settop(L, 2); lua_pushvalue(L, 1); lua_gettable(L, 2); // Return new N and the proxied value which goes it lua_pushinteger(L, n); lua_pushinteger(L, n); lua_gettable(L, 1); return 2; } // tostring() metamethod handler for debugging / diagnostics static int l_str_tostring(lua_State *L) { // Convert the proxy to a string, recursively calling tostring() lua_settop(L, 1); aux_push_weak_table(L, 0); lua_pushvalue(L, 1); lua_rawget(L, 2); if(lua_isnil(L, 3)) lua_pop(L, 2); else { lua_replace(L, 1); lua_pop(L, 1); } lua_getglobal(L, "tostring"); lua_insert(L, 1); lua_call(L, 1, 1); // Prepend a nice message indicating that proxying is being done lua_pushliteral(L, " Current value:"); lua_insert(L, 1); lua_concat(L, 2); return 1; } // __call metamethod handler // Required to support the compatibility hack for calling _S static int l_str_call(lua_State *L) { luaL_checkany(L, 1); // Fetch the proxied value aux_push_weak_table(L, 0); lua_pushvalue(L, 1); lua_rawget(L, -2); // Forward the call onto the proxied value lua_replace(L, 1); lua_pop(L, 1); lua_call(L, lua_gettop(L) - 1, LUA_MULTRET); return lua_gettop(L); } // __lt (less-than) metamethod handler // Provided so that a list of localised strings can be sorted, which is used // to create nice user-interface listing of strings. Note that this will mean // that persist->change language->depersist will result in a "random" ordering // of the resulting list, but this is generally acceptable. static int l_str_lt(lua_State *L) { luaL_checkany(L, 1); luaL_checkany(L, 2); lua_settop(L, 2); aux_push_weak_table(L, 0); lua_pushvalue(L, 1); lua_rawget(L, 3); lua_pushvalue(L, 2); lua_rawget(L, 3); lua_pushboolean(L, lua_lessthan(L, 4, 5)); return 1; } // __persist metamethod handler static int l_str_persist(lua_State *L) { lua_settop(L, 2); lua_insert(L, 1); LuaPersistWriter *pWriter = (LuaPersistWriter*)lua_touserdata(L, 1); // Recreation instructions are stored in the environment, which is written // automatically. For compatibility, we write a simple boolean. lua_pushboolean(L, 1); pWriter->writeStackObject(3); lua_getfenv(L, 2); // If there were no instructions (i.e. for the root object) then write the // value as well. if(lua_objlen(L, -1) == 0) { lua_pop(L, 2); aux_push_weak_table(L, 0); lua_pushvalue(L, 2); lua_rawget(L, 3); pWriter->writeStackObject(4); } return 0; } // __depersist metamethod handler static int l_str_depersist(lua_State *L) { lua_settop(L, 2); lua_insert(L, 1); LuaPersistReader *pReader = (LuaPersistReader*)lua_touserdata(L, 1); // Read the instructions for re-creating the value if(!pReader->readStackObject()) return 0; if(lua_type(L, 3) == LUA_TBOOLEAN && lua_toboolean(L, 3) == 1) { // The current code uses a boolean marker to indicate that the // instructions were stored in the environment. Replace the marker // with them. lua_getfenv(L, 2); lua_replace(L, 3); } else { // Older versions of the code wrote the instructions here, or nil for // no instructions. Convert nil to the empty table, and store the // instructions as the userdata's environment. if(lua_type(L, 3) == LUA_TNIL) { lua_newtable(L); lua_replace(L, 3); } lua_pushvalue(L, 3); lua_setfenv(L, 2); } // Prepare t, k for saving the value aux_push_weak_table(L, 0); lua_pushvalue(L, 2); if(lua_objlen(L, 3) == 0) { // No instructions provided, so read the value itself if(!pReader->readStackObject()) return 0; } else { // The instructions are a table of values; unpack them and replace // proxies with their values. bool bIsIndexOperation = false; int iCount = (int)lua_objlen(L, 3); lua_checkstack(L, iCount + 1); for(int i = 1; i <= iCount; ++i) { lua_rawgeti(L, 3, i); if(lua_type(L, -1) == LUA_TUSERDATA) { if(i == 1) bIsIndexOperation = true; lua_rawget(L, 4); } } if(iCount == 2 && bIsIndexOperation) { // If there were two values, and the first was a proxy, then the // instruction is to perform a table lookup. lua_gettable(L, -2); lua_replace(L, -2); } else { // Otherwise, the first value was a method or method name. if(lua_type(L, 6) != LUA_TFUNCTION) { lua_pushvalue(L, 6); lua_gettable(L, 7); lua_replace(L, 6); } lua_call(L, iCount - 1, 1); } } // Save the value lua_rawset(L, 4); return 0; } const char* luaT_checkstring(lua_State *L, int idx, size_t* pLength) { if(lua_isuserdata(L, idx)) { aux_push_weak_table(L, 0); bool bRel = (0 > idx && idx > LUA_REGISTRYINDEX); lua_pushvalue(L, bRel ? (idx - 1) : idx); lua_rawget(L, -2); lua_replace(L, bRel ? (idx - 2) : idx); lua_pop(L, 1); } return luaL_checklstring(L, idx, pLength); } static int l_str_reload_actual(lua_State *L) { // Reload a single string proxy // Stack: reload_cache proxy_to_reload L; // Create Value, and Cache weak tables for inside-out objects. for(int i = 0; i <= 1; ++i) { lua_pushlightuserdata(L, &g_aStringDummyGlobals[i]); lua_newtable(L); lua_createtable(L, 0, 1); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "k"); lua_rawset(L, -3); if(i == 1) { // Have the cache weak table automatically create caches on demand lua_pushliteral(L, "__index"); lua_createtable(L, 0, 1); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "kv"); lua_rawset(L, -3); luaT_pushcclosure(L, l_mk_cache, 1); lua_rawset(L, -3); } lua_setmetatable(L, -2); lua_rawset(L, LUA_REGISTRYINDEX); } // Give the Value weak table a friendly name for Lua code to use lua_pushliteral(L, "StringProxyValues"); lua_pushlightuserdata(L, &g_aStringDummyGlobals[0]); lua_rawget(L, LUA_REGISTRYINDEX); lua_rawset(L, LUA_REGISTRYINDEX); luaT_class(THStringProxy_t, l_str_new, "stringProxy", MT_StringProxy); // As we overwrite __index, move methods to MT_StringProxy[4] lua_getfield(L, pState->aiMetatables[MT_StringProxy], "__index"); lua_rawseti(L, pState->aiMetatables[MT_StringProxy], 4); luaT_setmetamethod(l_str_index, "index"); luaT_setmetamethod(l_str_newindex, "newindex"); luaT_setmetamethod(l_str_concat, "concat"); luaT_setmetamethod(l_str_len, "len"); luaT_setmetamethod(l_str_tostring, "tostring"); luaT_setmetamethod(l_str_persist, "persist"); luaT_setmetamethod(l_str_depersist, "depersist"); luaT_setmetamethod(l_str_call, "call"); luaT_setmetamethod(l_str_lt, "lt"); luaT_setmetamethod(l_str_pairs, "pairs"); luaT_setmetamethod(l_str_ipairs, "ipairs"); luaT_setmetamethod(l_str_next, "next"); luaT_setmetamethod(l_str_inext, "inext"); luaT_setfunction(l_str_func, "format" , MT_DummyString, "format"); luaT_setfunction(l_str_func, "lower" , MT_DummyString, "lower"); luaT_setfunction(l_str_func, "rep" , MT_DummyString, "rep"); luaT_setfunction(l_str_func, "reverse", MT_DummyString, "reverse"); luaT_setfunction(l_str_func, "upper" , MT_DummyString, "upper"); luaT_setfunction(l_str_unwrap, "_unwrap"); luaT_setfunction(l_str_reload, "reload"); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_lua_ui.cpp000066400000000000000000000161141321660673500200660ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_lua_internal.h" #include "th_gfx.h" #include "th_map.h" #include struct THWindowBase_t {}; static int l_window_base_new(lua_State *L) { return luaL_error(L, "windowBase can only be used a base class - " " do not create a windowBase directly."); } static uint8_t range_scale(uint16_t low, uint16_t high, uint16_t val, uint16_t start, uint16_t end) { return static_cast(std::max(start + (end - start) * (val - low) / (high - low), 0xFF)); } static int l_town_map_draw(lua_State *L) { luaL_checktype(L, 1, LUA_TTABLE); THMap *pMap = luaT_testuserdata(L, 2); THRenderTarget *pCanvas = luaT_testuserdata(L, 3); int iCanvasXBase = static_cast(luaL_checkinteger(L, 4)); int iCanvasYBase = static_cast(luaL_checkinteger(L, 5)); bool bShowHeat = lua_toboolean(L, 6) != 0; uint32_t iColourMyHosp = pCanvas->mapColour(0, 0, 70); uint32_t iColourWall = pCanvas->mapColour(255, 255, 255); uint32_t iColourDoor = pCanvas->mapColour(200, 200, 200); uint32_t iColourPurchasable = pCanvas->mapColour(255, 0, 0); const THMapNode *pNode = pMap->getNodeUnchecked(0, 0); const THMapNode *pOriginalNode = pMap->getOriginalNodeUnchecked(0, 0); int iCanvasY = iCanvasYBase + 3; int iMapWidth = pMap->getWidth(); for(int iY = 0; iY < pMap->getHeight(); ++iY, iCanvasY += 3) { int iCanvasX = iCanvasXBase; for(int iX = 0; iX < iMapWidth; ++iX, ++pNode, ++pOriginalNode, iCanvasX += 3) { if(pOriginalNode->flags.hospital) { uint32_t iColour = iColourMyHosp; if(!(pNode->flags.hospital)) { // TODO: Replace 1 with player number if(pMap->isParcelPurchasable(pNode->iParcelId, 1)) iColour = iColourPurchasable; else goto dont_paint_tile; } else if(bShowHeat) { uint16_t iTemp = pMap->getNodeTemperature(pNode); if(iTemp < 5200) // Less than 4 degrees iTemp = 0; else if(iTemp > 32767) // More than 25 degrees iTemp = 255; else // NB: 108 == (32767 - 5200) / 255 iTemp = static_cast((iTemp - 5200) / 108); const uint16_t minOkTemp = 140; const uint16_t maxOkTemp = 180; switch(pMap->getTemperatureDisplay()) { case THMT_MultiColour: { uint8_t iR = 0; uint8_t iG = 0; uint8_t iB = 70; if(iTemp < minOkTemp) iB = range_scale(0, minOkTemp - 1, iTemp, 200, 60); else if(iTemp < maxOkTemp) iG = range_scale(minOkTemp, maxOkTemp - 1, iTemp, 140, 224); else iR = range_scale(maxOkTemp, 255, iTemp, 224, 255); iColour = pCanvas->mapColour(iR, iG, iB); break; } case THMT_YellowRed: if(iTemp < minOkTemp) // Below 11 degrees { uint8_t iR = range_scale(0, minOkTemp - 1, iTemp, 100, 213); uint8_t iG = range_scale(0, minOkTemp - 1, iTemp, 80, 180); iColour = pCanvas->mapColour(iR, iG, 0); } else { uint8_t iR = range_scale(minOkTemp, 255, iTemp, 223, 235); uint8_t iG = range_scale(minOkTemp, 255, iTemp, 184, 104); uint8_t iB = range_scale(minOkTemp, 255, iTemp, 0, 53); iColour = pCanvas->mapColour(iR, iG, iB); } break; default: case THMT_Red: iColour = pCanvas->mapColour(static_cast(iTemp), 0, 70); break; } } pCanvas->fillRect(iColour, iCanvasX, iCanvasY, 3, 3); } dont_paint_tile: #define IsWall(blk) ((82 <= ((blk) & 0xFF)) && (((blk) & 0xFF) <= 164)) #define IsWallDrawn(n) pMap->getNodeOwner(pNode) != 0 ? \ IsWall(pNode->iBlock[n]) : IsWall(pOriginalNode->iBlock[n]) if(IsWallDrawn(1)) { pCanvas->fillRect(iColourWall, iCanvasX, iCanvasY, 3, 1); // Draw entrance door auto l = (pNode - 1)->objects; if(!l.empty() && l.front() == THObjectType::entrance_right_door) { if (pNode->flags.hospital) { pCanvas->fillRect(iColourDoor, iCanvasX-6, iCanvasY-2, 9, 3); } else { pCanvas->fillRect(iColourDoor, iCanvasX-6, iCanvasY, 9, 3); } } } if(IsWallDrawn(2)) { pCanvas->fillRect(iColourWall, iCanvasX, iCanvasY, 1, 3); // Draw entrance door auto l = (pNode - iMapWidth)->objects; if(!l.empty() && l.front() == THObjectType::entrance_right_door) { if (pNode->flags.hospital) { pCanvas->fillRect(iColourDoor, iCanvasX-2, iCanvasY-6, 3, 9); } else { pCanvas->fillRect(iColourDoor, iCanvasX, iCanvasY-6, 3, 9); } } } #undef IsWallDrawn #undef IsWall } } return 0; } void THLuaRegisterUI(const THLuaRegisterState_t *pState) { // WindowBase luaT_class(THWindowBase_t, l_window_base_new, "windowHelpers", MT_WindowBase); luaT_setfunction(l_town_map_draw, "townMapDraw", MT_Map, MT_Surface); luaT_endclass(); } CorsixTH-0.61/CorsixTH/Src/th_map.cpp000066400000000000000000001732101321660673500173660ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_map.h" #include "th_map_overlays.h" #include "th_gfx.h" #include "run_length_encoder.h" #include #include #include #include #include #include #include #include th_map_node_flags& th_map_node_flags::operator=(uint32_t raw) { passable = (raw & static_cast(th_map_node_flags::key::passable_mask)) != 0; can_travel_n = (raw & static_cast(th_map_node_flags::key::can_travel_n_mask)) != 0; can_travel_e = (raw & static_cast(th_map_node_flags::key::can_travel_e_mask)) != 0; can_travel_s = (raw & static_cast(th_map_node_flags::key::can_travel_s_mask)) != 0; can_travel_w = (raw & static_cast(th_map_node_flags::key::can_travel_w_mask)) != 0; hospital = (raw & static_cast(th_map_node_flags::key::hospital_mask)) != 0; buildable = (raw & static_cast(th_map_node_flags::key::buildable_mask)) != 0; passable_if_not_for_blueprint = (raw & static_cast(th_map_node_flags::key::passable_if_not_for_blueprint_mask)) != 0; room = (raw & static_cast(th_map_node_flags::key::room_mask)) != 0; shadow_half = (raw & static_cast(th_map_node_flags::key::shadow_half_mask)) != 0; shadow_full = (raw & static_cast(th_map_node_flags::key::shadow_full_mask)) != 0; shadow_wall = (raw & static_cast(th_map_node_flags::key::shadow_wall_mask)) != 0; door_north = (raw & static_cast(th_map_node_flags::key::door_north_mask)) != 0; door_west = (raw & static_cast(th_map_node_flags::key::door_west_mask)) != 0; do_not_idle = (raw & static_cast(th_map_node_flags::key::do_not_idle_mask)) != 0; tall_north = (raw & static_cast(th_map_node_flags::key::tall_north_mask)) != 0; tall_west = (raw & static_cast(th_map_node_flags::key::tall_west_mask)) != 0; buildable_n = (raw & static_cast(th_map_node_flags::key::buildable_n_mask)) != 0; buildable_e = (raw & static_cast(th_map_node_flags::key::buildable_e_mask)) != 0; buildable_s = (raw & static_cast(th_map_node_flags::key::buildable_s_mask)) != 0; buildable_w = (raw & static_cast(th_map_node_flags::key::buildable_w_mask)) != 0; return *this; } bool& th_map_node_flags::operator[](th_map_node_flags::key key) { switch(key) { case th_map_node_flags::key::passable_mask: return passable; case th_map_node_flags::key::can_travel_n_mask: return can_travel_n; case th_map_node_flags::key::can_travel_e_mask: return can_travel_e; case th_map_node_flags::key::can_travel_s_mask: return can_travel_s; case th_map_node_flags::key::can_travel_w_mask: return can_travel_w; case th_map_node_flags::key::hospital_mask: return hospital; case th_map_node_flags::key::buildable_mask: return buildable; case th_map_node_flags::key::passable_if_not_for_blueprint_mask: return passable_if_not_for_blueprint; case th_map_node_flags::key::room_mask: return room; case th_map_node_flags::key::shadow_half_mask: return shadow_half; case th_map_node_flags::key::shadow_full_mask: return shadow_full; case th_map_node_flags::key::shadow_wall_mask: return shadow_wall; case th_map_node_flags::key::door_north_mask: return door_north; case th_map_node_flags::key::door_west_mask: return door_west; case th_map_node_flags::key::do_not_idle_mask: return do_not_idle; case th_map_node_flags::key::tall_north_mask: return tall_north; case th_map_node_flags::key::tall_west_mask: return tall_west; case th_map_node_flags::key::buildable_n_mask: return buildable_n; case th_map_node_flags::key::buildable_e_mask: return buildable_e; case th_map_node_flags::key::buildable_s_mask: return buildable_s; case th_map_node_flags::key::buildable_w_mask: return buildable_w; default: throw std::out_of_range("map node flag is invalid"); } } const bool& th_map_node_flags::operator[](th_map_node_flags::key key) const { switch(key) { case th_map_node_flags::key::passable_mask: return passable; case th_map_node_flags::key::can_travel_n_mask: return can_travel_n; case th_map_node_flags::key::can_travel_e_mask: return can_travel_e; case th_map_node_flags::key::can_travel_s_mask: return can_travel_s; case th_map_node_flags::key::can_travel_w_mask: return can_travel_w; case th_map_node_flags::key::hospital_mask: return hospital; case th_map_node_flags::key::buildable_mask: return buildable; case th_map_node_flags::key::passable_if_not_for_blueprint_mask: return passable_if_not_for_blueprint; case th_map_node_flags::key::room_mask: return room; case th_map_node_flags::key::shadow_half_mask: return shadow_half; case th_map_node_flags::key::shadow_full_mask: return shadow_full; case th_map_node_flags::key::shadow_wall_mask: return shadow_wall; case th_map_node_flags::key::door_north_mask: return door_north; case th_map_node_flags::key::door_west_mask: return door_west; case th_map_node_flags::key::do_not_idle_mask: return do_not_idle; case th_map_node_flags::key::tall_north_mask: return tall_north; case th_map_node_flags::key::tall_west_mask: return tall_west; case th_map_node_flags::key::buildable_n_mask: return buildable_n; case th_map_node_flags::key::buildable_e_mask: return buildable_e; case th_map_node_flags::key::buildable_s_mask: return buildable_s; case th_map_node_flags::key::buildable_w_mask: return buildable_w; default: throw std::out_of_range("map node flag is invalid"); } } th_map_node_flags::operator uint32_t() const { uint32_t raw = 0; if(passable) { raw |= static_cast(th_map_node_flags::key::passable_mask); } if(can_travel_n) { raw |= static_cast(th_map_node_flags::key::can_travel_n_mask); } if(can_travel_e) { raw |= static_cast(th_map_node_flags::key::can_travel_e_mask); } if(can_travel_s) { raw |= static_cast(th_map_node_flags::key::can_travel_s_mask); } if(can_travel_w) { raw |= static_cast(th_map_node_flags::key::can_travel_w_mask); } if(hospital) { raw |= static_cast(th_map_node_flags::key::hospital_mask); } if(buildable) { raw |= static_cast(th_map_node_flags::key::buildable_mask); } if(passable_if_not_for_blueprint) { raw |= static_cast(th_map_node_flags::key::passable_if_not_for_blueprint_mask); } if(room) { raw |= static_cast(th_map_node_flags::key::room_mask); } if(shadow_half) { raw |= static_cast(th_map_node_flags::key::shadow_half_mask); } if(shadow_full) { raw |= static_cast(th_map_node_flags::key::shadow_full_mask); } if(shadow_wall) { raw |= static_cast(th_map_node_flags::key::shadow_wall_mask); } if(door_north) { raw |= static_cast(th_map_node_flags::key::door_north_mask); } if(door_west) { raw |= static_cast(th_map_node_flags::key::door_west_mask); } if(do_not_idle) { raw |= static_cast(th_map_node_flags::key::do_not_idle_mask); } if(tall_north) { raw |= static_cast(th_map_node_flags::key::tall_north_mask); } if(tall_west) { raw |= static_cast(th_map_node_flags::key::tall_west_mask); } if(buildable_n) { raw |= static_cast(th_map_node_flags::key::buildable_n_mask); } if(buildable_e) { raw |= static_cast(th_map_node_flags::key::buildable_e_mask); } if(buildable_s) { raw |= static_cast(th_map_node_flags::key::buildable_s_mask); } if(buildable_w) { raw |= static_cast(th_map_node_flags::key::buildable_w_mask); } return raw; } THMapNode::THMapNode() : iParcelId(0), iRoomId(0), objects() { iBlock[0] = 0; iBlock[1] = 0; iBlock[2] = 0; iBlock[3] = 0; aiTemperature[0] = aiTemperature[1] = 8192; flags = {}; } THMapNode::~THMapNode() { } THMap::THMap() { m_iWidth = 0; m_iHeight = 0; m_iPlayerCount = 0; m_iCurrentTemperatureIndex = 0; m_eTempDisplay = THMT_Red; m_iParcelCount = 0; m_pCells = nullptr; m_pOriginalCells = nullptr; m_pBlocks = nullptr; m_pOverlay = nullptr; m_bOwnOverlay = false; m_pPlotOwner = nullptr; m_pParcelTileCounts = nullptr; m_pParcelAdjacencyMatrix = nullptr; m_pPurchasableMatrix = nullptr; } THMap::~THMap() { setOverlay(nullptr, false); delete[] m_pCells; delete[] m_pOriginalCells; delete[] m_pPlotOwner; delete[] m_pParcelTileCounts; delete[] m_pParcelAdjacencyMatrix; delete[] m_pPurchasableMatrix; } void THMap::setOverlay(THMapOverlay *pOverlay, bool bTakeOwnership) { if(m_pOverlay && m_bOwnOverlay) delete m_pOverlay; m_pOverlay = pOverlay; m_bOwnOverlay = bTakeOwnership; } bool THMap::setSize(int iWidth, int iHeight) { if(iWidth <= 0 || iHeight <= 0) return false; delete[] m_pCells; delete[] m_pOriginalCells; delete[] m_pParcelAdjacencyMatrix; delete[] m_pPurchasableMatrix; m_iWidth = iWidth; m_iHeight = iHeight; m_pCells = nullptr; m_pCells = new (std::nothrow) THMapNode[iWidth * iHeight]; m_pOriginalCells = nullptr; m_pOriginalCells = new (std::nothrow) THMapNode[iWidth * iHeight]; m_pParcelAdjacencyMatrix = nullptr; m_pPurchasableMatrix = nullptr; if(m_pCells == nullptr || m_pOriginalCells == nullptr) { delete[] m_pCells; delete[] m_pOriginalCells; m_pOriginalCells = nullptr; m_pCells = nullptr; m_iWidth = 0; m_iHeight = 0; return false; } return true; } // NB: http://connection-endpoint.de/th-format-specification/ // gives a (slightly) incorrect array, which is why it differs from this one. static const uint8_t gs_iTHMapBlockLUT[256] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x84, 0x85, 0x88, 0x89, 0x8C, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x8F, 0xD5, 0xD6, 0x9C, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xB3, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xB3, 0xB3, 0xB4, 0xB4, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0x00, 0x82, 0x83, 0x86, 0x87, 0x8A, 0x8B, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x00, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; void THMap::_readTileIndex(const uint8_t* pData, int& iX, int &iY) const { unsigned int iIndex = static_cast(pData[1]); iIndex = iIndex * 0x100 + static_cast(pData[0]); iX = iIndex % m_iWidth; iY = iIndex / m_iWidth; } void THMap::_writeTileIndex(uint8_t* pData, int iX, int iY) const { uint16_t iIndex = static_cast(iY * m_iWidth + iX); pData[0] = static_cast(iIndex & 0xFF); pData[1] = static_cast(iIndex >> 8); } bool THMap::loadBlank() { if(!setSize(128, 128)) return false; m_iPlayerCount = 1; m_aiInitialCameraX[0] = m_aiInitialCameraY[0] = 63; m_aiHeliportX[0] = m_aiHeliportY[0] = 0; m_iParcelCount = 1; delete[] m_pPlotOwner; delete[] m_pParcelTileCounts; m_pPlotOwner = nullptr; m_pParcelTileCounts = nullptr; THMapNode *pNode = m_pCells; THMapNode *pOriginalNode = m_pOriginalCells; for(int iY = 0; iY < 128; ++iY) { for(int iX = 0; iX < 128; ++iX, ++pNode, ++pOriginalNode) { pNode->iBlock[0] = static_cast(2 + (iX % 2)); } } m_pPlotOwner = new int[1]; m_pPlotOwner[0] = 0; m_pParcelTileCounts = new int[1]; m_pParcelTileCounts[0] = 128 * 128; return true; } bool THMap::loadFromTHFile(const uint8_t* pData, size_t iDataLength, THMapLoadObjectCallback_t fnObjectCallback, void* pCallbackToken) { if(iDataLength < 163948 || !setSize(128, 128)) return false; m_iPlayerCount = pData[0]; for(int i = 0; i < m_iPlayerCount; ++i) { _readTileIndex(pData + 163876 + (i % 4) * 2, m_aiInitialCameraX[i], m_aiInitialCameraY[i]); _readTileIndex(pData + 163884 + (i % 4) * 2, m_aiHeliportX[i], m_aiHeliportY[i]); } m_iParcelCount = 0; delete[] m_pPlotOwner; delete[] m_pParcelTileCounts; m_pPlotOwner = nullptr; m_pParcelTileCounts = nullptr; THMapNode *pNode = m_pCells; THMapNode *pOriginalNode = m_pOriginalCells; const uint16_t *pParcel = reinterpret_cast(pData + 131106); pData += 34; pNode->objects.clear(); for(int iY = 0; iY < 128; ++iY) { for(int iX = 0; iX < 128; ++iX, ++pNode, ++pOriginalNode, pData += 8, ++pParcel) { uint8_t iBaseTile = gs_iTHMapBlockLUT[pData[2]]; pNode->flags.can_travel_n = true; pNode->flags.can_travel_e = true; pNode->flags.can_travel_s = true; pNode->flags.can_travel_w = true; if(iX == 0) pNode->flags.can_travel_w = false; else if(iX == 127) pNode->flags.can_travel_e = false; if(iY == 0) pNode->flags.can_travel_n = false; else if(iY == 127) pNode->flags.can_travel_s = false; pNode->iBlock[0] = iBaseTile; #define IsDividerWall(x) (((x) >> 1) == 70) if(pData[3] == 0 || IsDividerWall(pData[3])) { // Tiles 71, 72 and 73 (pond foliage) are used as floor tiles, // but are too tall to be floor tiles, so move them to a wall, // and replace the floor with something similar (pond base). if(71 <= iBaseTile && iBaseTile <= 73) { pNode->iBlock[1] = iBaseTile; pNode->iBlock[0] = iBaseTile = 69; } else pNode->iBlock[1] = 0; } else { pNode->iBlock[1] = gs_iTHMapBlockLUT[pData[3]]; pNode->flags.can_travel_n = false; if(iY != 0) { pNode[-128].flags.can_travel_s = false; } } if(pData[4] == 0 || IsDividerWall(pData[4])) pNode->iBlock[2] = 0; else { pNode->iBlock[2] = gs_iTHMapBlockLUT[pData[4]]; pNode->flags.can_travel_w = false; if(iX != 0) { pNode[-1].flags.can_travel_e = false; } } pNode->iRoomId = 0; pNode->iParcelId = *pParcel; if(*pParcel >= m_iParcelCount) m_iParcelCount = *pParcel + 1; if(!(pData[5] & 1)) { pNode->flags.passable = true; if(!(pData[7] & 16)) { pNode->flags.hospital = true; if(!(pData[5] & 2)) { pNode->flags.buildable = true; } if(!(pData[5] & 4) || pData[1] == 0) { pNode->flags.buildable_n = true; } if(!(pData[5] & 8) || pData[1] == 0) { pNode->flags.buildable_e = true; } if(!(pData[5] & 16) || pData[1] == 0) { pNode->flags.buildable_s = true; } if(!(pData[5] & 32) || pData[1] == 0) { pNode->flags.buildable_w = true; } } } *pOriginalNode = *pNode; if(IsDividerWall(pData[3])) pOriginalNode->iBlock[1] = gs_iTHMapBlockLUT[pData[3]]; if(IsDividerWall(pData[4])) pOriginalNode->iBlock[2] = gs_iTHMapBlockLUT[pData[4]]; #undef IsDividerWall if(pData[1] != 0 && fnObjectCallback != nullptr) { fnObjectCallback(pCallbackToken, iX, iY, (THObjectType)pData[1], pData[0]); } } } m_pPlotOwner = new int[m_iParcelCount]; m_pPlotOwner[0] = 0; for(int i = 1; i < m_iParcelCount; ++i) m_pPlotOwner[i] = 1; updateShadows(); m_pParcelTileCounts = new int[m_iParcelCount]; m_pParcelTileCounts[0] = 0; for(int i = 1; i < m_iParcelCount; ++i) m_pParcelTileCounts[i] = _getParcelTileCount(i); return true; } void THMap::save(std::string filename) { uint8_t aBuffer[256] = {0}; int iBufferNext = 0; std::ofstream os(filename, std::ios_base::trunc | std::ios_base::binary); // Header aBuffer[0] = static_cast(m_iPlayerCount); // TODO: Determine correct contents for the next 33 bytes os.write(reinterpret_cast(aBuffer), 34); uint8_t aReverseBlockLUT[256] = {0}; for(int i = 0; i < 256; ++i) { aReverseBlockLUT[gs_iTHMapBlockLUT[i]] = static_cast(i); } aReverseBlockLUT[0] = 0; for(THMapNode *pNode = m_pCells, *pLimitNode = pNode + m_iWidth * m_iHeight; pNode != pLimitNode; ++pNode) { // TODO: Nicer system for saving object data aBuffer[iBufferNext++] = pNode->flags.tall_west ? 1 : 0; aBuffer[iBufferNext++] = static_cast(pNode->objects.empty() ? THObjectType::no_object : pNode->objects.front()); // Blocks aBuffer[iBufferNext++] = aReverseBlockLUT[pNode->iBlock[0] & 0xFF]; aBuffer[iBufferNext++] = aReverseBlockLUT[pNode->iBlock[1] & 0xFF]; aBuffer[iBufferNext++] = aReverseBlockLUT[pNode->iBlock[2] & 0xFF]; // Flags (TODO: Set a few more flag bits?) uint8_t iFlags = 63; if(pNode->flags.passable) iFlags ^= 1; if(pNode->flags.buildable) iFlags ^= 2; if(pNode->flags.buildable_n) iFlags ^= 4; if(pNode->flags.buildable_e) iFlags ^= 8; if(pNode->flags.buildable_s) iFlags ^= 16; if(pNode->flags.buildable_w) iFlags ^= 32; aBuffer[iBufferNext++] = iFlags; aBuffer[iBufferNext++] = 0; iFlags = 16; if(pNode->flags.hospital) iFlags ^= 16; aBuffer[iBufferNext++] = iFlags; if(iBufferNext == sizeof(aBuffer)) { os.write(reinterpret_cast(aBuffer), sizeof(aBuffer)); iBufferNext = 0; } } for(THMapNode *pNode = m_pCells, *pLimitNode = pNode + m_iWidth * m_iHeight; pNode != pLimitNode; ++pNode) { aBuffer[iBufferNext++] = static_cast(pNode->iParcelId & 0xFF); aBuffer[iBufferNext++] = static_cast(pNode->iParcelId >> 8); if(iBufferNext == sizeof(aBuffer)) { os.write(reinterpret_cast(aBuffer), sizeof(aBuffer)); iBufferNext = 0; } } // TODO: What are these two bytes? aBuffer[iBufferNext++] = 3; aBuffer[iBufferNext++] = 0; os.write(reinterpret_cast(aBuffer), iBufferNext); iBufferNext = 0; std::memset(aBuffer, 0, 56); for(int i = 0; i < m_iPlayerCount; ++i) { _writeTileIndex(aBuffer + iBufferNext, m_aiInitialCameraX[i], m_aiInitialCameraY[i]); _writeTileIndex(aBuffer + iBufferNext + 8, m_aiHeliportX[i], m_aiHeliportY[i]); iBufferNext += 2; } os.write(reinterpret_cast(aBuffer), 16); std::memset(aBuffer, 0, 16); // TODO: What are these 56 bytes? os.write(reinterpret_cast(aBuffer), 56); os.close(); } //! Add or remove divider wall for the given node /*! If the given 'pNode' has an indoor border to another parcel in the 'delta' direction: * A divider wall is added in the layer specified by 'block' if the owners of the two parcels are not the same, or * A divider wall is removed if the owners are the same and 'iParcelId' is involved. \return True if a border was removed, false otherwise */ static bool addRemoveDividerWalls(THMap* pMap, THMapNode* pNode, const THMapNode* pOriginalNode, int iXY, int delta, int block, int iParcelId) { if (iXY > 0 && pOriginalNode->flags.hospital && pOriginalNode[-delta].flags.hospital && pNode->iParcelId != pNode[-delta].iParcelId) { int iOwner = pMap->getParcelOwner(pNode->iParcelId); int iOtherOwner = pMap->getParcelOwner(pNode[-delta].iParcelId); if (iOwner != iOtherOwner) { pNode->iBlock[block] = block + (iOwner ? 143 : 141); } else if (pNode->iParcelId == iParcelId || pNode[-delta].iParcelId == iParcelId) { pNode->iBlock[block] = 0; return true; } } return false; } std::vector> THMap::setParcelOwner(int iParcelId, int iOwner) { std::vector> vSplitTiles; if(iParcelId <= 0 || m_iParcelCount <= iParcelId || iOwner < 0) return vSplitTiles; m_pPlotOwner[iParcelId] = iOwner; THMapNode *pNode = m_pCells; const THMapNode *pOriginalNode = m_pOriginalCells; for(int iY = 0; iY < 128; ++iY) { for(int iX = 0; iX < 128; ++iX, ++pNode, ++pOriginalNode) { if(pNode->iParcelId == iParcelId) { if(iOwner != 0) { pNode->iBlock[0] = pOriginalNode->iBlock[0]; pNode->iBlock[1] = pOriginalNode->iBlock[1]; pNode->iBlock[2] = pOriginalNode->iBlock[2]; pNode->flags = pOriginalNode->flags; } else { // Nicely mown grass pattern pNode->iBlock[0] = static_cast(((iX & 1) << 1) + 1); pNode->iBlock[1] = 0; pNode->iBlock[2] = 0; pNode->flags = {}; // Random decoration if(((iX | iY) & 0x7) == 0) { int iWhich = (iX ^ iY) % 9; pNode->iBlock[1] = static_cast(192 + iWhich); } } } if (addRemoveDividerWalls(this, pNode, pOriginalNode, iX, 1, 2, iParcelId)) { vSplitTiles.push_back(std::make_pair(iX, iY)); } if (addRemoveDividerWalls(this, pNode, pOriginalNode, iY, 128, 1, iParcelId)) { vSplitTiles.push_back(std::make_pair(iX, iY)); } } } updatePathfinding(); updateShadows(); _updatePurchaseMatrix(); return vSplitTiles; } void THMap::_makeAdjacencyMatrix() { if(m_pParcelAdjacencyMatrix != nullptr) return; m_pParcelAdjacencyMatrix = new bool[m_iParcelCount * m_iParcelCount]; for(int i = 0; i < m_iParcelCount; ++i) { for(int j = 0; j < m_iParcelCount; ++j) { m_pParcelAdjacencyMatrix[i * m_iParcelCount + j] = (i == j); } } const THMapNode *pOriginalNode = m_pOriginalCells; for(int iY = 0; iY < 128; ++iY) { for(int iX = 0; iX < 128; ++iX, ++pOriginalNode) { #define TestAdj(xy, delta) if(xy > 0 && \ pOriginalNode->iParcelId != pOriginalNode[-delta].iParcelId && \ pOriginalNode->flags.passable && pOriginalNode[-delta].flags.passable)\ m_pParcelAdjacencyMatrix[pOriginalNode->iParcelId * m_iParcelCount\ + pOriginalNode[-delta].iParcelId] = true, \ m_pParcelAdjacencyMatrix[pOriginalNode->iParcelId + \ pOriginalNode[-delta].iParcelId * m_iParcelCount] = true TestAdj(iX, 1); TestAdj(iY, 128); #undef TestAdj } } } void THMap::_makePurchaseMatrix() { if(m_pPurchasableMatrix != nullptr) return; // Already made m_pPurchasableMatrix = new bool[4 * m_iParcelCount]; _updatePurchaseMatrix(); } void THMap::_updatePurchaseMatrix() { if(m_pPurchasableMatrix == nullptr) return; // Nothing to update for(int iPlayer = 1; iPlayer <= 4; ++iPlayer) { for(int iParcel = 0; iParcel < m_iParcelCount; ++iParcel) { bool bPurchasable = false; if(iParcel != 0 && m_pPlotOwner[iParcel] == 0) { for(int iParcel2 = 0; iParcel2 < m_iParcelCount; ++iParcel2) { if((m_pPlotOwner[iParcel2] == iPlayer) || (iParcel2 == 0)) { if(areParcelsAdjacent(iParcel, iParcel2)) { bPurchasable = true; break; } } } } m_pPurchasableMatrix[iParcel * 4 + iPlayer - 1] = bPurchasable; } } } bool THMap::areParcelsAdjacent(int iParcel1, int iParcel2) { if(0 <= iParcel1 && iParcel1 < m_iParcelCount && 0 <= iParcel2 && iParcel2 < m_iParcelCount) { _makeAdjacencyMatrix(); return m_pParcelAdjacencyMatrix[iParcel1 * m_iParcelCount + iParcel2]; } return false; } bool THMap::isParcelPurchasable(int iParcelId, int iPlayer) { if(0 <= iParcelId && iParcelId < m_iParcelCount && 1 <= iPlayer && iPlayer <= 4) { _makePurchaseMatrix(); return m_pPurchasableMatrix[iParcelId * 4 + iPlayer - 1]; } return false; } void THMap::setPlayerCount(int count) { if (count < 1 || count > 4) throw std::out_of_range("Player count must be between 1 and 4"); m_iPlayerCount = count; } bool THMap::getPlayerCameraTile(int iPlayer, int* pX, int* pY) const { if(iPlayer < 0 || iPlayer >= getPlayerCount()) { if(pX) *pX = 0; if(pY) *pY = 0; return false; } if(pX) *pX = m_aiInitialCameraX[iPlayer]; if(pY) *pY = m_aiInitialCameraY[iPlayer]; return true; } bool THMap::getPlayerHeliportTile(int iPlayer, int* pX, int* pY) const { if(iPlayer < 0 || iPlayer >= getPlayerCount()) { if(pX) *pX = 0; if(pY) *pY = 0; return false; } if(pX) *pX = m_aiHeliportX[iPlayer]; if(pY) *pY = m_aiHeliportY[iPlayer]; return true; } void THMap::setPlayerCameraTile(int iPlayer, int iX, int iY) { if(0 <= iPlayer && iPlayer < getPlayerCount()) { m_aiInitialCameraX[iPlayer] = iX; m_aiInitialCameraY[iPlayer] = iY; } } void THMap::setPlayerHeliportTile(int iPlayer, int iX, int iY) { if(0 <= iPlayer && iPlayer < getPlayerCount()) { m_aiHeliportX[iPlayer] = iX; m_aiHeliportY[iPlayer] = iY; } } int THMap::getParcelTileCount(int iParcelId) const { if(iParcelId < 1 || iParcelId >= m_iParcelCount) { return 0; } return m_pParcelTileCounts[iParcelId]; } int THMap::_getParcelTileCount(int iParcelId) const { int iTiles = 0; for(int iY = 0; iY < m_iHeight; ++iY) { for(int iX = 0; iX < m_iWidth; ++iX) { const THMapNode* pNode = getNodeUnchecked(iX, iY); if(pNode->iParcelId == iParcelId) iTiles++; } } return iTiles; } THMapNode* THMap::getNode(int iX, int iY) { if(0 <= iX && iX < m_iWidth && 0 <= iY && iY < m_iHeight) return getNodeUnchecked(iX, iY); else return nullptr; } const THMapNode* THMap::getNode(int iX, int iY) const { if(0 <= iX && iX < m_iWidth && 0 <= iY && iY < m_iHeight) return getNodeUnchecked(iX, iY); else return nullptr; } const THMapNode* THMap::getOriginalNode(int iX, int iY) const { if(0 <= iX && iX < m_iWidth && 0 <= iY && iY < m_iHeight) return getOriginalNodeUnchecked(iX, iY); else return nullptr; } THMapNode* THMap::getNodeUnchecked(int iX, int iY) { return m_pCells + iY * m_iWidth + iX; } const THMapNode* THMap::getNodeUnchecked(int iX, int iY) const { return m_pCells + iY * m_iWidth + iX; } const THMapNode* THMap::getOriginalNodeUnchecked(int iX, int iY) const { return m_pOriginalCells + iY * m_iWidth + iX; } void THMap::setBlockSheet(THSpriteSheet* pSheet) { m_pBlocks = pSheet; } void THMap::setAllWallDrawFlags(uint8_t iFlags) { uint16_t iBlockOr = static_cast(iFlags << 8); THMapNode *pNode = m_pCells; for(int i = 0; i < m_iWidth * m_iHeight; ++i, ++pNode) { pNode->iBlock[1] = static_cast((pNode->iBlock[1] & 0xFF) | iBlockOr); pNode->iBlock[2] = static_cast((pNode->iBlock[2] & 0xFF) | iBlockOr); } } void IntersectTHClipRect(THClipRect& rcClip,const THClipRect& rcIntersect) { // The intersection of the rectangles is the higher of the lower bounds and the lower of the higher bounds, clamped to a zero size. THClipRect::xy_t maxX = static_cast(std::min(rcClip.x + rcClip.w, rcIntersect.x + rcIntersect.w)); THClipRect::xy_t maxY = static_cast(std::min(rcClip.y + rcClip.h, rcIntersect.y + rcIntersect.h)); rcClip.x = std::max(rcClip.x, rcIntersect.x); rcClip.y = std::max(rcClip.y, rcIntersect.y); rcClip.w = maxX - rcClip.x; rcClip.h = maxY - rcClip.y; // Make sure that we clamp the values to 0. if (rcClip.w <= 0) { rcClip.w = rcClip.h = 0; } else if (rcClip.h <= 0) { rcClip.w = rcClip.h = 0; } } void THMap::draw(THRenderTarget* pCanvas, int iScreenX, int iScreenY, int iWidth, int iHeight, int iCanvasX, int iCanvasY) const { /* The map is drawn in two passes, with each pass done one scanline at a time (a scanline is a list of nodes with the same screen Y co-ordinate). The first pass does floor tiles, as the entire floor needs to be painted below anything else (for example, see the walking north through a door animation, which needs to paint over the floor of the scanline below the animation). On the second pass, walls and entities are drawn, with the order controlled such that entites appear in the right order relative to the walls around them. For each scanline, the following is done: 1st pass: 1) For each node, left to right, the floor tile (layer 0) 2nd pass: 1) For each node, right to left, the north wall, then the early entities 2) For each node, left to right, the west wall, then the late entities */ if(m_pBlocks == nullptr || m_pCells == nullptr) return; THClipRect rcClip; rcClip.x = static_cast(iCanvasX); rcClip.y = static_cast(iCanvasY); rcClip.w = static_cast(iWidth); rcClip.h = static_cast(iHeight); pCanvas->setClipRect(&rcClip); // 1st pass pCanvas->startNonOverlapping(); for(THMapNodeIterator itrNode1(this, iScreenX, iScreenY, iWidth, iHeight); itrNode1; ++itrNode1) { unsigned int iH = 32; unsigned int iBlock = itrNode1->iBlock[0]; m_pBlocks->getSpriteSize(iBlock & 0xFF, nullptr, &iH); m_pBlocks->drawSprite(pCanvas, iBlock & 0xFF, itrNode1.x() + iCanvasX - 32, itrNode1.y() + iCanvasY - iH + 32, iBlock >> 8); } pCanvas->finishNonOverlapping(); bool bFirst = true; THMapScanlineIterator formerIterator; // 2nd pass for(THMapNodeIterator itrNode2(this, iScreenX, iScreenY, iWidth, iHeight); itrNode2; ++itrNode2) { if(itrNode2->flags.shadow_full) { m_pBlocks->drawSprite(pCanvas, 74, itrNode2.x() + iCanvasX - 32, itrNode2.y() + iCanvasY, THDF_Alpha75); } else if(itrNode2->flags.shadow_half) { m_pBlocks->drawSprite(pCanvas, 75, itrNode2.x() + iCanvasX - 32, itrNode2.y() + iCanvasY, THDF_Alpha75); } if(!itrNode2.isLastOnScanline()) continue; for(THMapScanlineIterator itrNode(itrNode2, ScanlineBackward, iCanvasX, iCanvasY); itrNode; ++itrNode) { unsigned int iH; unsigned int iBlock = itrNode->iBlock[1]; if(iBlock != 0 && m_pBlocks->getSpriteSize(iBlock & 0xFF, nullptr, &iH) && iH > 0) { m_pBlocks->drawSprite(pCanvas, iBlock & 0xFF, itrNode.x() - 32, itrNode.y() - iH + 32, iBlock >> 8); if(itrNode->flags.shadow_wall) { THClipRect rcOldClip, rcNewClip; pCanvas->getClipRect(&rcOldClip); rcNewClip.x = static_cast(itrNode.x() - 32); rcNewClip.y = static_cast(itrNode.y() - iH + 32 + 4); rcNewClip.w = static_cast(64); rcNewClip.h = static_cast(86 - 4); IntersectTHClipRect(rcNewClip, rcOldClip); pCanvas->setClipRect(&rcNewClip); m_pBlocks->drawSprite(pCanvas, 156, itrNode.x() - 32, itrNode.y() - 56, THDF_Alpha75); pCanvas->setClipRect(&rcOldClip); } } THDrawable *pItem = (THDrawable*)(itrNode->oEarlyEntities.m_pNext); while(pItem) { pItem->m_fnDraw(pItem, pCanvas, itrNode.x(), itrNode.y()); pItem = (THDrawable*)(pItem->m_pNext); } } THMapScanlineIterator itrNode(itrNode2, ScanlineForward, iCanvasX, iCanvasY); if(!bFirst) { //since the scanline count from one THMapScanlineIterator to another can differ //synchronization between the current iterator and the former one is neeeded if(itrNode.x() < -64) ++itrNode; while(formerIterator.x() < itrNode.x()) ++formerIterator; } bool bPreviousTileNeedsRedraw = false; for(; itrNode; ++itrNode) { bool bNeedsRedraw = false; unsigned int iH; unsigned int iBlock = itrNode->iBlock[2]; if(iBlock != 0 && m_pBlocks->getSpriteSize(iBlock & 0xFF, nullptr, &iH) && iH > 0) { m_pBlocks->drawSprite(pCanvas, iBlock & 0xFF, itrNode.x() - 32, itrNode.y() - iH + 32, iBlock >> 8); } iBlock = itrNode->iBlock[3]; if(iBlock != 0 && m_pBlocks->getSpriteSize(iBlock & 0xFF, nullptr, &iH) && iH > 0) { m_pBlocks->drawSprite(pCanvas, iBlock & 0xFF, itrNode.x() - 32, itrNode.y() - iH + 32, iBlock >> 8); } iBlock = itrNode->iBlock[1]; if(iBlock != 0 && m_pBlocks->getSpriteSize(iBlock & 0xFF, nullptr, &iH) && iH > 0) bNeedsRedraw = true; if(itrNode->oEarlyEntities.m_pNext) bNeedsRedraw = true; bool bRedrawAnimations = false; THDrawable *pItem = (THDrawable*)(itrNode->m_pNext); while(pItem) { pItem->m_fnDraw(pItem, pCanvas, itrNode.x(), itrNode.y()); if(pItem->m_fnIsMultipleFrameAnimation(pItem)) bRedrawAnimations = true; if(pItem->getDrawingLayer() == 1) bNeedsRedraw = true; pItem = (THDrawable*)(pItem->m_pNext); } //if the current tile contained a multiple frame animation (e.g. a doctor walking) //check to see if in the tile to its left and above it there are items that need to //be redrawn (i.e. in the tile to its left side objects to the south of the tile and //in the tile above it side objects to the east of the tile). if(bRedrawAnimations && !bFirst) { bool bTileNeedsRedraw = bPreviousTileNeedsRedraw; //check if an object in the adjacent tile to the left of the current tile needs to be redrawn //and if necessary draw it pItem = (THDrawable*)(formerIterator.getPreviousNode()->m_pNext); while(pItem) { if (pItem->getDrawingLayer() == 9) { pItem->m_fnDraw(pItem, pCanvas, formerIterator.x() - 64, formerIterator.y()); bTileNeedsRedraw = true; } pItem = (THDrawable*)(pItem->m_pNext); } //check if an object in the adjacent tile above the current tile needs to be redrawn //and if necessary draw it pItem = formerIterator ? (THDrawable*)(formerIterator->m_pNext) : nullptr; while(pItem) { if(pItem->getDrawingLayer() == 8) pItem->m_fnDraw(pItem, pCanvas, formerIterator.x(), formerIterator.y()); pItem = (THDrawable*)(pItem->m_pNext); } //if an object was redrawn in the tile to the left of the current tile //or if the tile below it had an object in the north side or a wall to the north //redraw that tile if(bTileNeedsRedraw) { //redraw the north wall unsigned int iBlock = itrNode.getPreviousNode()->iBlock[1]; if(iBlock != 0 && m_pBlocks->getSpriteSize(iBlock & 0xFF, nullptr, &iH) && iH > 0) { m_pBlocks->drawSprite(pCanvas, iBlock & 0xFF, itrNode.x() - 96, itrNode.y() - iH + 32, iBlock >> 8); if(itrNode.getPreviousNode()->flags.shadow_wall) { THClipRect rcOldClip, rcNewClip; pCanvas->getClipRect(&rcOldClip); rcNewClip.x = static_cast(itrNode.x() - 96); rcNewClip.y = static_cast(itrNode.y() - iH + 32 + 4); rcNewClip.w = static_cast(64); rcNewClip.h = static_cast(86 - 4); IntersectTHClipRect(rcNewClip, rcOldClip); pCanvas->setClipRect(&rcNewClip); m_pBlocks->drawSprite(pCanvas, 156, itrNode.x() - 96, itrNode.y() - 56, THDF_Alpha75); pCanvas->setClipRect(&rcOldClip); } } pItem = (THDrawable*)(itrNode.getPreviousNode()->oEarlyEntities.m_pNext); while(pItem) { pItem->m_fnDraw(pItem, pCanvas, itrNode.x() - 64, itrNode.y()); pItem = (THDrawable*)(pItem->m_pNext); } pItem = (THDrawable*)(itrNode.getPreviousNode())->m_pNext; for(; pItem; pItem = (THDrawable*)(pItem->m_pNext)) pItem->m_fnDraw(pItem, pCanvas, itrNode.x() - 64, itrNode.y()); } } bPreviousTileNeedsRedraw = bNeedsRedraw; if (!bFirst) ++formerIterator; } formerIterator = itrNode; bFirst = false; } if(m_pOverlay) { for(THMapNodeIterator itrNode(this, iScreenX, iScreenY, iWidth, iHeight); itrNode; ++itrNode) { m_pOverlay->drawCell(pCanvas, itrNode.x() + iCanvasX - 32, itrNode.y() + iCanvasY, this, itrNode.nodeX(), itrNode.nodeY()); } } pCanvas->setClipRect(nullptr); } THDrawable* THMap::hitTest(int iTestX, int iTestY) const { // This function needs to hitTest each drawable object, in the reverse // order to that in which they would be drawn. if(m_pBlocks == nullptr || m_pCells == nullptr) return nullptr; for(THMapNodeIterator itrNode2(this, iTestX, iTestY, 1, 1, ScanlineBackward); itrNode2; ++itrNode2) { if(!itrNode2.isLastOnScanline()) continue; for(THMapScanlineIterator itrNode(itrNode2, ScanlineBackward); itrNode; ++itrNode) { if(itrNode->m_pNext != nullptr) { THDrawable* pResult = _hitTestDrawables(itrNode->m_pNext, itrNode.x(), itrNode.y(), 0, 0); if(pResult) return pResult; } } for(THMapScanlineIterator itrNode(itrNode2, ScanlineForward); itrNode; ++itrNode) { if(itrNode->oEarlyEntities.m_pNext != nullptr) { THDrawable* pResult = _hitTestDrawables(itrNode->oEarlyEntities.m_pNext, itrNode.x(), itrNode.y(), 0, 0); if(pResult) return pResult; } } } return nullptr; } THDrawable* THMap::_hitTestDrawables(THLinkList* pListStart, int iXs, int iYs, int iTestX, int iTestY) const { THLinkList* pListEnd = pListStart; while(pListEnd->m_pNext) pListEnd = pListEnd->m_pNext; THDrawable* pList = (THDrawable*)pListEnd; while(true) { if(pList->m_fnHitTest(pList, iXs, iYs, iTestX, iTestY)) return pList; if(pList == pListStart) return nullptr; else pList = (THDrawable*)pList->m_pPrev; } } int THMap::getNodeOwner(const THMapNode* pNode) const { return m_pPlotOwner[pNode->iParcelId]; } int THMap::getParcelOwner(int iParcel) const { if(0 <= iParcel && iParcel < m_iParcelCount) return m_pPlotOwner[iParcel]; else return 0; } uint16_t THMap::getNodeTemperature(const THMapNode* pNode) const { return pNode->aiTemperature[m_iCurrentTemperatureIndex]; } void THMap::setTemperatureDisplay(THMapTemperatureDisplay eTempDisplay) { if (eTempDisplay < THMT_Count) m_eTempDisplay = eTempDisplay; } uint32_t THMap::thermalNeighbour(uint32_t &iNeighbourSum, bool canTravel, uint32_t relative_idx, THMapNode* pNode, int prevTemp) const { int iNeighbourCount = 0; THMapNode* pNeighbour = pNode + relative_idx; // Ensure the neighbour is within the map bounds THMapNode* pLimitNode = m_pCells + m_iWidth * m_iHeight; if (pNeighbour < m_pCells || pNeighbour >= pLimitNode) { return 0; } if (canTravel) { iNeighbourCount += 4; iNeighbourSum += pNeighbour->aiTemperature[prevTemp] * 4; } else { bool bObjectPresent = false; int iHospital1 = pNeighbour->flags.hospital; int iHospital2 = pNode->flags.hospital; if (iHospital1 == iHospital2) { if (pNeighbour->flags.room == pNode->flags.room) { bObjectPresent = true; } } if (bObjectPresent) { iNeighbourCount += 4; iNeighbourSum += pNeighbour->aiTemperature[prevTemp] * 4; } else { iNeighbourCount += 1; iNeighbourSum += pNeighbour->aiTemperature[prevTemp]; } } return iNeighbourCount; } void THMap::updateTemperatures(uint16_t iAirTemperature, uint16_t iRadiatorTemperature) { if(iRadiatorTemperature < iAirTemperature) iRadiatorTemperature = iAirTemperature; const int iPrevTemp = m_iCurrentTemperatureIndex; m_iCurrentTemperatureIndex ^= 1; const int iNewTemp = m_iCurrentTemperatureIndex; THMapNode* pLimitNode = m_pCells + m_iWidth * m_iHeight; for(THMapNode *pNode = m_pCells; pNode != pLimitNode; ++pNode) { // Get average temperature of neighbour cells uint32_t iNeighbourSum = 0; uint32_t iNeighbourCount = 0; iNeighbourCount += thermalNeighbour(iNeighbourSum, pNode->flags.can_travel_n, -m_iWidth, pNode, iPrevTemp); iNeighbourCount += thermalNeighbour(iNeighbourSum, pNode->flags.can_travel_s, m_iWidth, pNode, iPrevTemp); iNeighbourCount += thermalNeighbour(iNeighbourSum, pNode->flags.can_travel_e, 1, pNode, iPrevTemp); iNeighbourCount += thermalNeighbour(iNeighbourSum, pNode->flags.can_travel_w, -1, pNode, iPrevTemp); #define MERGE2(src, other, ratio) (src) = static_cast( \ (static_cast(src) * ((ratio) - 1) + (other)) / (ratio)) #define MERGE(other, ratio) \ MERGE2(pNode->aiTemperature[iNewTemp], other, ratio) uint32_t iRadiatorNumber = 0; // Merge 1% against air temperature // or 50% against radiator temperature // or generally dissipate 0.1% of temperature. uint32_t iMergeTemp = 0; double iMergeRatio = 100; if(pNode->flags.hospital) { for(auto thob : pNode->objects) { if(thob == THObjectType::radiator) iRadiatorNumber++; } if(iRadiatorNumber > 0) { iMergeTemp = iRadiatorTemperature; iMergeRatio = 2 - (iRadiatorNumber - 1) * 0.5; } else iMergeRatio = 1000; } else iMergeTemp = iAirTemperature; // Diffuse 25% with neighbours pNode->aiTemperature[iNewTemp] = pNode->aiTemperature[iPrevTemp]; if(iNeighbourCount != 0) MERGE(iNeighbourSum / iNeighbourCount, 4 - (iRadiatorNumber > 0 ? (iRadiatorNumber - 1) * 1.5 : 0)); MERGE(iMergeTemp, iMergeRatio); #undef MERGE #undef MERGE2 } } void THMap::updatePathfinding() { THMapNode *pNode = m_pCells; for(int iY = 0; iY < 128; ++iY) { for(int iX = 0; iX < 128; ++iX, ++pNode) { pNode->flags.can_travel_n = true; pNode->flags.can_travel_e = true; pNode->flags.can_travel_s = true; pNode->flags.can_travel_w = true; if(iX == 0) pNode->flags.can_travel_w = false; else if(iX == 127) pNode->flags.can_travel_e = false; if(iY == 0) pNode->flags.can_travel_n = false; else if(iY == 127) pNode->flags.can_travel_s = false; if(pNode->iBlock[1] & 0xFF) { pNode->flags.can_travel_n = false; if(iY != 0) { pNode[-128].flags.can_travel_s = false; } } if(pNode->iBlock[2] & 0xFF) { pNode->flags.can_travel_w = false; if(iX != 0) { pNode[-1].flags.can_travel_e = false; } } } } } //! For shadow casting, a tile is considered to have a wall on a direction //! if it has a door in that direction, or the block is from the hardcoded //! range of wall-like blocks. static inline bool is_wall(THMapNode *node, size_t block, bool flag) { return flag || (82 <= (node->iBlock[block] & 0xFF) && (node->iBlock[block] & 0xFF) <= 164); } void THMap::updateShadows() { THMapNode *pNode = m_pCells; for(int iY = 0; iY < 128; ++iY) { for(int iX = 0; iX < 128; ++iX, ++pNode) { pNode->flags.shadow_full = false; pNode->flags.shadow_half = false; pNode->flags.shadow_wall = false; if(is_wall(pNode, 2, pNode->flags.tall_west)) { pNode->flags.shadow_half = true; if(is_wall(pNode, 1, pNode->flags.tall_north)) { pNode->flags.shadow_wall = true; } else if(iY != 0) { THMapNode *pNeighbour = pNode - 128; pNeighbour->flags.shadow_full = true; if(iX != 0 && !is_wall(pNeighbour, 2, pNode->flags.tall_west)) { // Wrap the shadow around a corner (no need to continue // all the way along the wall, as the shadow would be // occluded by the wall. If Debug->Transparent Walls is // toggled on, then this optimisation becomes very // visible, but it's a debug option, so it doesn't // matter). pNeighbour[-1].flags.shadow_full = true; } } } } } #undef IsWall } void THMap::persist(LuaPersistWriter *pWriter) const { lua_State *L = pWriter->getStack(); IntegerRunLengthEncoder oEncoder; uint32_t iVersion = 4; pWriter->writeVUInt(iVersion); pWriter->writeVUInt(m_iPlayerCount); for(int i = 0; i < m_iPlayerCount; ++i) { pWriter->writeVUInt(m_aiInitialCameraX[i]); pWriter->writeVUInt(m_aiInitialCameraY[i]); pWriter->writeVUInt(m_aiHeliportX[i]); pWriter->writeVUInt(m_aiHeliportY[i]); } pWriter->writeVUInt(m_iParcelCount); for(int i = 0; i < m_iParcelCount; ++i) { pWriter->writeVUInt(m_pPlotOwner[i]); } for(int i = 0; i < m_iParcelCount; ++i) { pWriter->writeVUInt(m_pParcelTileCounts[i]); } pWriter->writeVUInt(m_iWidth); pWriter->writeVUInt(m_iHeight); pWriter->writeVUInt(m_iCurrentTemperatureIndex); oEncoder.initialise(6); for(THMapNode *pNode = m_pCells, *pLimitNode = m_pCells + m_iWidth * m_iHeight; pNode != pLimitNode; ++pNode) { oEncoder.write(pNode->iBlock[0]); oEncoder.write(pNode->iBlock[1]); oEncoder.write(pNode->iBlock[2]); oEncoder.write(pNode->iBlock[3]); oEncoder.write(pNode->iParcelId); oEncoder.write(pNode->iRoomId); // Flags include THOB values, and other things which do not work // well with run-length encoding. pWriter->writeVUInt(static_cast(pNode->flags)); pWriter->writeVUInt(pNode->aiTemperature[0]); pWriter->writeVUInt(pNode->aiTemperature[1]); lua_rawgeti(L, luaT_upvalueindex(1), 2); lua_pushlightuserdata(L, pNode->m_pNext); lua_rawget(L, -2); pWriter->writeStackObject(-1); lua_pop(L, 1); lua_pushlightuserdata(L, pNode->oEarlyEntities.m_pNext); lua_rawget(L, -2); pWriter->writeStackObject(-1); lua_pop(L, 2); } oEncoder.finish(); oEncoder.pumpOutput(pWriter); oEncoder.initialise(5); for(THMapNode *pNode = m_pOriginalCells, *pLimitNode = m_pOriginalCells + m_iWidth * m_iHeight; pNode != pLimitNode; ++pNode) { oEncoder.write(pNode->iBlock[0]); oEncoder.write(pNode->iBlock[1]); oEncoder.write(pNode->iBlock[2]); oEncoder.write(pNode->iParcelId); oEncoder.write(static_cast(pNode->flags)); } oEncoder.finish(); oEncoder.pumpOutput(pWriter); } void THMap::depersist(LuaPersistReader *pReader) { new (this) THMap; // Call constructor lua_State *L = pReader->getStack(); int iWidth, iHeight; IntegerRunLengthDecoder oDecoder; uint32_t iVersion; if(!pReader->readVUInt(iVersion)) return; if(iVersion != 4) { if(iVersion < 2 || iVersion == 128) { luaL_error(L, "TODO: Write code to load map data from earlier " "savegame versions (if really necessary)."); } else if(iVersion > 4) { luaL_error(L, "Cannot load savegame from a newer version."); } } if(!pReader->readVUInt(m_iPlayerCount)) return; for(int i = 0; i < m_iPlayerCount; ++i) { if(!pReader->readVUInt(m_aiInitialCameraX[i])) return; if(!pReader->readVUInt(m_aiInitialCameraY[i])) return; if(!pReader->readVUInt(m_aiHeliportX[i])) return; if(!pReader->readVUInt(m_aiHeliportY[i])) return; } if(!pReader->readVUInt(m_iParcelCount)) return; delete[] m_pPlotOwner; m_pPlotOwner = new int[m_iParcelCount]; for(int i = 0; i < m_iParcelCount; ++i) { if(!pReader->readVUInt(m_pPlotOwner[i])) return; } delete[] m_pParcelTileCounts; m_pParcelTileCounts = new int[m_iParcelCount]; m_pParcelTileCounts[0] = 0; if(iVersion >= 3) { for(int i = 0; i < m_iParcelCount; ++i) { if(!pReader->readVUInt(m_pParcelTileCounts[i])) return; } } if(!pReader->readVUInt(iWidth) || !pReader->readVUInt(iHeight)) return; if(!setSize(iWidth, iHeight)) { pReader->setError("Unable to set size while depersisting map"); return; } if(iVersion >= 4) { if(!pReader->readVUInt(m_iCurrentTemperatureIndex)) return; } for(THMapNode *pNode = m_pCells, *pLimitNode = m_pCells + m_iWidth * m_iHeight; pNode != pLimitNode; ++pNode) { uint32_t f; if(!pReader->readVUInt(f)) return; pNode->flags = f; if(iVersion >= 4) { if(!pReader->readVUInt(pNode->aiTemperature[0]) || !pReader->readVUInt(pNode->aiTemperature[1])) return; } if(!pReader->readStackObject()) return; pNode->m_pNext = (THLinkList*)lua_touserdata(L, -1); if(pNode->m_pNext) { if(pNode->m_pNext->m_pPrev != nullptr) std::fprintf(stderr, "Warning: THMap linked-lists are corrupted.\n"); pNode->m_pNext->m_pPrev = pNode; } lua_pop(L, 1); if(!pReader->readStackObject()) return; pNode->oEarlyEntities.m_pNext = (THLinkList*)lua_touserdata(L, -1); if(pNode->oEarlyEntities.m_pNext) { if(pNode->oEarlyEntities.m_pNext->m_pPrev != nullptr) std::fprintf(stderr, "Warning: THMap linked-lists are corrupted.\n"); pNode->oEarlyEntities.m_pNext->m_pPrev = &pNode->oEarlyEntities; } lua_pop(L, 1); } oDecoder.initialise(6, pReader); for(THMapNode *pNode = m_pCells, *pLimitNode = m_pCells + m_iWidth * m_iHeight; pNode != pLimitNode; ++pNode) { pNode->iBlock[0] = static_cast(oDecoder.read()); pNode->iBlock[1] = static_cast(oDecoder.read()); pNode->iBlock[2] = static_cast(oDecoder.read()); pNode->iBlock[3] = static_cast(oDecoder.read()); pNode->iParcelId = static_cast(oDecoder.read()); pNode->iRoomId = static_cast(oDecoder.read()); } oDecoder.initialise(5, pReader); for(THMapNode *pNode = m_pOriginalCells, *pLimitNode = m_pOriginalCells + m_iWidth * m_iHeight; pNode != pLimitNode; ++pNode) { pNode->iBlock[0] = static_cast(oDecoder.read()); pNode->iBlock[1] = static_cast(oDecoder.read()); pNode->iBlock[2] = static_cast(oDecoder.read()); pNode->iParcelId = static_cast(oDecoder.read()); pNode->flags = oDecoder.read(); } if(iVersion < 3) { for(int i = 1; i < m_iParcelCount; ++i) m_pParcelTileCounts[i] = _getParcelTileCount(i); } } THMapNodeIterator::THMapNodeIterator() : m_pNode(nullptr) , m_pMap(nullptr) , m_iScreenX(0) , m_iScreenY(0) , m_iScreenWidth(0) , m_iScreenHeight(0) { } THMapNodeIterator::THMapNodeIterator(const THMap *pMap, int iScreenX, int iScreenY, int iWidth, int iHeight, eTHMapScanlineIteratorDirection eScanlineDirection) : m_pMap(pMap) , m_iScreenX(iScreenX) , m_iScreenY(iScreenY) , m_iScreenWidth(iWidth) , m_iScreenHeight(iHeight) , m_iScanlineCount(0) , m_eDirection(eScanlineDirection) { if(m_eDirection == ScanlineForward) { m_iBaseX = 0; m_iBaseY = (iScreenY - 32) / 16; if(m_iBaseY < 0) m_iBaseY = 0; else if(m_iBaseY >= m_pMap->getHeight()) { m_iBaseX = m_iBaseY - m_pMap->getHeight() + 1; m_iBaseY = m_pMap->getHeight() - 1; if(m_iBaseX >= m_pMap->getWidth()) m_iBaseX = m_pMap->getWidth() - 1; } } else { m_iBaseX = m_pMap->getWidth() - 1; m_iBaseY = m_pMap->getHeight() - 1; } m_iX = m_iBaseX; m_iY = m_iBaseY; _advanceUntilVisible(); } THMapNodeIterator& THMapNodeIterator::operator ++ () { --m_iY; ++m_iX; _advanceUntilVisible(); return *this; } void THMapNodeIterator::_advanceUntilVisible() { m_pNode = nullptr; while(true) { m_iXs = m_iX; m_iYs = m_iY; m_pMap->worldToScreen(m_iXs, m_iYs); m_iXs -= m_iScreenX; m_iYs -= m_iScreenY; if(m_eDirection == ScanlineForward ? m_iYs >= m_iScreenHeight + ms_iMarginBottom : m_iYs < -ms_iMarginTop) { return; } if(m_eDirection == ScanlineForward ? (m_iYs > -ms_iMarginTop) : (m_iYs < m_iScreenHeight + ms_iMarginBottom)) { while(m_iY >= 0 && m_iX < m_pMap->getWidth()) { if(m_iXs < -ms_iMarginLeft) { // Nothing to do } else if(m_iXs < m_iScreenWidth + ms_iMarginRight) { ++m_iScanlineCount; m_pNode = m_pMap->getNodeUnchecked(m_iX, m_iY); return; } else break; --m_iY; ++m_iX; m_iXs += 64; } } m_iScanlineCount = 0; if(m_eDirection == ScanlineForward) { if(m_iBaseY == m_pMap->getHeight() - 1) { if(++m_iBaseX == m_pMap->getWidth()) break; } else ++m_iBaseY; } else { if(m_iBaseX == 0) { if(m_iBaseY == 0) break; else --m_iBaseY; } else --m_iBaseX; } m_iX = m_iBaseX; m_iY = m_iBaseY; } } bool THMapNodeIterator::isLastOnScanline() const { return m_iY <= 0 || m_iX + 1 >= m_pMap->getWidth() || m_iXs + 64 >= m_iScreenWidth + ms_iMarginRight; } THMapScanlineIterator::THMapScanlineIterator() : m_iNodeStep(0) , m_iXStep(0) , m_takenSteps(0) { } THMapScanlineIterator::THMapScanlineIterator(const THMapNodeIterator& itrNodes, eTHMapScanlineIteratorDirection eDirection, int iXOffset, int iYOffset) : m_iNodeStep((static_cast(eDirection) - 1) * (1 - itrNodes.m_pMap->getWidth())) , m_iXStep((static_cast(eDirection) - 1) * 64) , m_takenSteps(0) { if(eDirection == ScanlineBackward) { m_pNode = itrNodes.m_pNode; m_iXs = itrNodes.x(); } else { m_pNode = itrNodes.m_pNode - m_iNodeStep * (itrNodes.m_iScanlineCount - 1); m_iXs = itrNodes.x() - m_iXStep * (itrNodes.m_iScanlineCount - 1); } m_iXs += iXOffset; m_iYs = itrNodes.y() + iYOffset; m_pNodeEnd = m_pNode + m_iNodeStep * itrNodes.m_iScanlineCount; m_pNodeFirst = m_pNode; } THMapScanlineIterator& THMapScanlineIterator::operator ++ () { m_pNode += m_iNodeStep; m_iXs += m_iXStep; m_takenSteps++; return *this; } //copies the members of the given THMapScanlineIterator and resets the node member to the //first element. THMapScanlineIterator THMapScanlineIterator::operator= (const THMapScanlineIterator &iterator) { m_pNode = iterator.m_pNodeFirst; m_pNodeEnd = iterator.m_pNodeEnd; m_iXs = iterator.m_iXs - iterator.m_takenSteps * iterator.m_iXStep; m_iYs = iterator.m_iYs; m_iXStep = iterator.m_iXStep; m_iNodeStep = iterator.m_iNodeStep; return *this; } CorsixTH-0.61/CorsixTH/Src/th_map.h000066400000000000000000000516411321660673500170360ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_MAP_H_ #define CORSIX_TH_TH_MAP_H_ #include "th_gfx.h" #include #include /* Object type enumeration uses same values as original TH does. See game string table section 39 for proof. Section 1 also has names in this order. */ enum class THObjectType : uint8_t { no_object = 0, desk = 1, cabinet = 2, door = 3, bench = 4, table = 5, // Not in game chair = 6, drinks_machine = 7, bed = 8, inflator = 9, pool_table = 10, reception_desk = 11, b_table = 12, // Not in game? cardio = 13, scanner = 14, scanner_console = 15, screen = 16, litter_bomb = 17, couch = 18, sofa = 19, crash = 20, // The trolley in general diagnosis tv = 21, ultrascan = 22, dna_fixer = 23, cast_remover = 24, hair_restorer = 25, slicer = 26, xray = 27, radiation_shield = 28, xray_viewer = 29, op_table = 30, lamp = 31, // Not in game? sink = 32, op_sink1 = 33, op_sink2 = 34, surgeon_screen = 35, lecture_chair = 36, projector = 37, // 38 is unused pharmacy = 39, computer = 40, chemical_mixer = 41, blood_machine = 42, extinguisher = 43, radiator = 44, plant = 45, electro = 46, jelly_vat = 47, hell = 48, // 49 is unused bin = 50, loo = 51, double_door1 = 52, double_door2 = 53, decon_shower = 54, autopsy = 55, bookcase = 56, video_game = 57, entrance_left_door = 58, entrance_right_door = 59, skeleton = 60, comfy_chair = 61, litter = 62, helicopter = 63, rathole = 64, // 65 through 255 are unused }; //! Map flags and object type //! The point of storing the object type here is to allow pathfinding code //! to use object types as pathfinding goals. struct th_map_node_flags { enum class key : uint32_t { passable_mask = 1 << 0, can_travel_n_mask = 1 << 1, can_travel_e_mask = 1 << 2, can_travel_s_mask = 1 << 3, can_travel_w_mask = 1 << 4, hospital_mask = 1 << 5, buildable_mask = 1 << 6, passable_if_not_for_blueprint_mask = 1 << 7, room_mask = 1 << 8, shadow_half_mask = 1 << 9, shadow_full_mask = 1 << 10, shadow_wall_mask = 1 << 11, door_north_mask = 1 << 12, door_west_mask = 1 << 13, do_not_idle_mask = 1 << 14, tall_north_mask = 1 << 15, tall_west_mask = 1 << 16, buildable_n_mask = 1 << 17, buildable_e_mask = 1 << 18, buildable_s_mask = 1 << 19, buildable_w_mask = 1 << 20, }; bool passable; //!< Pathfinding: Can walk on this tile bool can_travel_n; //!< Pathfinding: Can walk to the north bool can_travel_e; //!< Pathfinding: Can walk to the east bool can_travel_s; //!< Pathfinding: Can walk to the south bool can_travel_w; //!< Pathfinding: Can walk to the west bool hospital; //!< World: Tile is inside a hospital building bool buildable; //!< Player: Can build on this tile bool passable_if_not_for_blueprint; bool room; //!< World: Tile is inside a room bool shadow_half; //!< Rendering: Put block 75 over floor bool shadow_full; //!< Rendering: Put block 74 over floor bool shadow_wall; //!< Rendering: Put block 156 over east wall bool door_north; //!< World: Door on north wall of tile bool door_west; //!< World: Door on west wall of tile bool do_not_idle; //!< World: Humanoids should not idle on tile bool tall_north; //!< Shadows: Wall-like object on north wall bool tall_west; //!< Shadows: Wall-like object on west wall bool buildable_n; //!< Can build on the north side of the tile bool buildable_e; //!< Can build on the east side of the tile bool buildable_s; //!< Can build on the south side of the tile bool buildable_w; //!< Can build on the west side of the tile //! Convert the given uint32_t reprentation of the map node flags //! to a th_map_node_flags instance. th_map_node_flags& operator =(uint32_t raw); //! Get/set the flag with the given key bool& operator[] (th_map_node_flags::key key); //! Get the flag with the given key const bool& operator[](th_map_node_flags::key key) const; //! Convert th_map_node_flags into it's uint32_t representation operator uint32_t() const; }; enum THMapTemperatureDisplay { THMT_Red, //!< Default warmth colouring (red gradients) THMT_MultiColour, //!< Different colours (blue, green, red) THMT_YellowRed, //!< Gradients of yellow, orange, and red THMT_Count, //!< Number of temperature display values. }; struct THMapNode : public THLinkList { THMapNode(); ~THMapNode(); // Linked list for entities rendered at this node // THLinkList::pPrev (will always be nullptr) // THLinkList::pNext //! Linked list for entities rendered in an early (right-to-left) pass THLinkList oEarlyEntities; //! Block tiles for rendering //! For each tile, the lower byte is the index in the sprite sheet, and the //! upper byte is for the drawing flags. //! Layer 0 is for the floor //! Layer 1 is for the north wall //! Layer 2 is for the west wall //! Layer 3 is for the UI //! NB: In Lua, layers are numbered 1 - 4 rather than 0 - 3 uint16_t iBlock[4]; //! Parcels (plots) of land have an ID, with each tile in the plot having //! that ID. Parcel 0 is the outside. uint16_t iParcelId; //! Rooms have an ID, with room #0 being the corridor (and the outside). uint16_t iRoomId; //! A value between 0 (extreme cold) and 65535 (extreme heat) representing //! the temperature of the tile. To allow efficient calculation of a tile's //! heat based on the previous tick's heat of the surrounding tiles, the //! previous temperature is also stored, with the array indices switching //! every tick. uint16_t aiTemperature[2]; //! Flags for information and object type th_map_node_flags flags; //! objects in this node std::list objects; }; class THSpriteSheet; //! Prototype for object callbacks from THMap::loadFromTHFile /*! The callback function will receive 5 arguments: * The opaque pointer passed to THMap::loadFromTHFile (pCallbackToken). * The tile X/Y position of the object. * The object type. * The object flags present in the map data. The meaning of this value is left unspecified. */ typedef void (*THMapLoadObjectCallback_t)(void*, int, int, THObjectType, uint8_t); class THMapOverlay; class THMap { public: THMap(); ~THMap(); bool setSize(int iWidth, int iHeight); bool loadBlank(); bool loadFromTHFile(const uint8_t* pData, size_t iDataLength, THMapLoadObjectCallback_t fnObjectCallback, void* pCallbackToken); void save(std::string filename); //! Set the sprite sheet to be used for drawing the map /*! The sprites for map floor tiles, wall tiles, and map decorators all come from the given sheet. */ void setBlockSheet(THSpriteSheet* pSheet); //! Set the draw flags on all wall blocks /*! This is typically called with THDF_Alpha50 to draw walls transparently, or with 0 to draw them opaque again. */ void setAllWallDrawFlags(uint8_t iFlags); void updatePathfinding(); void updateShadows(); void setTemperatureDisplay(THMapTemperatureDisplay eTempDisplay); inline THMapTemperatureDisplay getTemperatureDisplay() const {return m_eTempDisplay;} void updateTemperatures(uint16_t iAirTemperature, uint16_t iRadiatorTemperature); //! Get the map width (in tiles) inline int getWidth() const {return m_iWidth;} //! Get the map height (in tiles) inline int getHeight() const {return m_iHeight;} //! Get the number of plots of land in this map inline int getParcelCount() const {return m_iParcelCount - 1;} inline int getPlayerCount() const {return m_iPlayerCount;} void setPlayerCount(int count); bool getPlayerCameraTile(int iPlayer, int* pX, int* pY) const; bool getPlayerHeliportTile(int iPlayer, int* pX, int* pY) const; void setPlayerCameraTile(int iPlayer, int iX, int iY); void setPlayerHeliportTile(int iPlayer, int iX, int iY); //! Get the number of tiles inside a given parcel int getParcelTileCount(int iParcelId) const; //! Change the owner of a particular parcel /*! \param iParcelId The parcel of land to change ownership of. Should be an integer between 1 and getParcelCount() inclusive (parcel 0 is the outside, and should never have its ownership changed). \param iOwner The number of the player who should own the parcel, or zero if no player should own the parcel. \return vSplitTiles A vector that contains tile coordinates where iParcelId is adjacent to another part of the hospital. */ std::vector> setParcelOwner(int iParcelId, int iOwner); //! Get the owner of a particular parcel of land /*! \param iParcelId An integer between 0 and getParcelCount() inclusive. \return 0 if the parcel is unowned, otherwise the number of the owning player. */ int getParcelOwner(int iParcelId) const; //! Query if two parcels are directly connected /*! \param iParcel1 An integer between 0 and getParcelCount() inclusive. \param iParcel2 An integer between 0 and getParcelCount() inclusive. \return true if there is a path between the two parcels which does not go into any other parcels. false otherwise. */ bool areParcelsAdjacent(int iParcel1, int iParcel2); //! Query if a given player is in a position to purchase a given parcel /*! \param iParcelId The parcel of land to query. Should be an integer between 1 and getParcelCount() inclusive. \param iPlayer The number of the player to perform the query on behalf of. Should be a strictly positive integer. \return true if the parcel has a door to the outside, or is directly connected to a parcel already owned by the given player. false otherwise. */ bool isParcelPurchasable(int iParcelId, int iPlayer); //! Draw the map (and any attached animations) /*! Draws the world pixel rectangle (iScreenX, iScreenY, iWidth, iHeight) to the rectangle (iCanvasX, iCanvasY, iWidth, iHeight) on pCanvas. Note that world pixel co-ordinates are also known as absolute screen co-ordinates - they are not world (tile) co-ordinates, nor (relative) screen co-ordinates. */ void draw(THRenderTarget* pCanvas, int iScreenX, int iScreenY, int iWidth, int iHeight, int iCanvasX, int iCanvasY) const; //! Perform a hit-test against the animations attached to the map /*! If there is an animation at world pixel co-ordinates (iTestX, iTestY), then it is returned. Otherwise nullptr is returned. To perform a hit-test using world (tile) co-ordinates, get the node itself and query the top 8 bits of THMapNode::iFlags, or traverse the node's animation lists. */ THDrawable* hitTest(int iTestX, int iTestY) const; // When using the unchecked versions, the map co-ordinates MUST be valid. // When using the normal versions, nullptr is returned for invalid co-ords. THMapNode* getNode(int iX, int iY); const THMapNode* getNode(int iX, int iY) const; const THMapNode* getOriginalNode(int iX, int iY) const; THMapNode* getNodeUnchecked(int iX, int iY); const THMapNode* getNodeUnchecked(int iX, int iY) const; const THMapNode* getOriginalNodeUnchecked(int iX, int iY) const; uint16_t getNodeTemperature(const THMapNode* pNode) const; int getNodeOwner(const THMapNode* pNode) const; //! Convert world (tile) co-ordinates to absolute screen co-ordinates template static inline void worldToScreen(T& x, T& y) { T x_(x); x = (T)32 * (x_ - y); y = (T)16 * (x_ + y); } //! Convert absolute screen co-ordinates to world (tile) co-ordinates template static inline void screenToWorld(T& x, T& y) { T x_(x); x = y / (T)32 + x_ / (T)64; y = y / (T)32 - x_ / (T)64; } void persist(LuaPersistWriter *pWriter) const; void depersist(LuaPersistReader *pReader); void setOverlay(THMapOverlay *pOverlay, bool bTakeOwnership); private: THDrawable* _hitTestDrawables(THLinkList* pListStart, int iXs, int iYs, int iTestX, int iTestY) const; void _readTileIndex(const uint8_t* pData, int& iX, int &iY) const; void _writeTileIndex(uint8_t* pData, int iX, int iY) const; int _getParcelTileCount(int iParcelId) const; //! Calculate a weighted impact of a neighbour node on the temperature of the current node. //! \param iNeighbourSum Incremented by the temperature of the node multiplied by the weight of the connection. //! \param canTravel A node flag indicating whether travel between this node and it's neighbour is allowed. //! \param relative_idx The index of the neighbour node, relative to this node into m_pCells. //! \param pNode A pointer to the current node being tested. //! \param prevTemp The array index into THMapNode::aiTemperature that currently stores the temperature of the node (prior to this calculation). //! \return The weight of the connection, 0 if there is no neighbour, 1 through walls, and 4 through air. uint32_t thermalNeighbour(uint32_t &iNeighbourSum, bool canTravel, uint32_t relative_idx, THMapNode* pNode, int prevTemp) const; //! Create the adjacency matrix if it doesn't already exist void _makeAdjacencyMatrix(); //! Create the purchasability matrix if it doesn't already exist void _makePurchaseMatrix(); //! If it exists, update the purchasability matrix. void _updatePurchaseMatrix(); THMapNode* m_pCells; THMapNode* m_pOriginalCells; // Cells at map load time, before any changes THSpriteSheet* m_pBlocks; THMapOverlay* m_pOverlay; bool m_bOwnOverlay; int* m_pPlotOwner; // 0 for unowned, 1 for player 1, etc. int m_iWidth; int m_iHeight; int m_iPlayerCount; int m_aiInitialCameraX[4]; int m_aiInitialCameraY[4]; int m_aiHeliportX[4]; int m_aiHeliportY[4]; int m_iParcelCount; int m_iCurrentTemperatureIndex; THMapTemperatureDisplay m_eTempDisplay; int* m_pParcelTileCounts; // 2D symmetric array giving true if there is a path between two parcels // which doesn't go into any other parcels. bool* m_pParcelAdjacencyMatrix; // 4 by N matrix giving true if player can purchase parcel. bool* m_pPurchasableMatrix; }; enum eTHMapScanlineIteratorDirection { ScanlineForward = 2, ScanlineBackward = 0, }; //! Utility class for iterating over map nodes within a screen rectangle /*! To easily iterate over the map nodes which might draw something within a certain rectangle of screen space, an instance of this class can be used. By default, it iterates by scanline, top-to-bottom, and then left-to-right within each scanline. Alternatively, by passing ScanlineBackward to the constructor, it will iterate bottom-to-top. Within a scanline, to visit nodes right-to-left, wait until isLastOnScanline() returns true, then use an instance of THMapScanlineIterator. */ class THMapNodeIterator { public: THMapNodeIterator(); /*! @arg pMap The map whose nodes should be iterated @arg iScreenX The X co-ordinate of the top-left corner of the screen-space rectangle to iterate. @arg iScreenY The Y co-ordinate of the top-left corner of the screen-space rectangle to iterate. @arg iWidth The width of the screen-space rectangle to iterate. @arg iHeight The width of the screen-space rectangle to iterate. @arg eScanlineDirection The direction in which to iterate scanlines; ScanlineForward for top-to-bottom, ScanlineBackward for bottom-to-top. */ THMapNodeIterator(const THMap *pMap, int iScreenX, int iScreenY, int iWidth, int iHeight, eTHMapScanlineIteratorDirection eScanlineDirection = ScanlineForward); //! Returns false iff the iterator has exhausted its nodes inline operator bool () const {return m_pNode != nullptr;} //! Advances the iterator to the next node inline THMapNodeIterator& operator ++ (); //! Accessor for the current node inline const THMapNode* operator -> () const {return m_pNode;} //! Get the X position of the node relative to the top-left corner of the screen-space rectangle inline int x() const {return m_iXs;} //! Get the Y position of the node relative to the top-left corner of the screen-space rectangle inline int y() const {return m_iYs;} inline int nodeX() const {return m_iX;} inline int nodeY() const {return m_iY;} inline const THMap *getMap() {return m_pMap;} inline const THMapNode *getMapNode() {return m_pNode;} inline int getScanlineCount() { return m_iScanlineCount;} inline int getNodeStep() {return (static_cast(m_eDirection) - 1) * (1 - m_pMap->getWidth());} //! Returns true iff the next node will be on a different scanline /*! To visit a scanline in right-to-left order, or to revisit a scanline, wait until this method returns true, then use a THMapScanlineIterator. */ inline bool isLastOnScanline() const; private: // Maximum extents of the visible parts of a node (pixel distances relative // to the top-most corner of an isometric cell) // If set too low, things will disappear when near the screen edge // If set too high, rendering will slow down static const int ms_iMarginTop = 150; static const int ms_iMarginLeft = 110; static const int ms_iMarginRight = 110; static const int ms_iMarginBottom = 150; friend class THMapScanlineIterator; const THMapNode* m_pNode; const THMap* m_pMap; int m_iXs; int m_iYs; const int m_iScreenX; const int m_iScreenY; const int m_iScreenWidth; const int m_iScreenHeight; int m_iBaseX; int m_iBaseY; int m_iX; int m_iY; int m_iScanlineCount; eTHMapScanlineIteratorDirection m_eDirection; void _advanceUntilVisible(); }; //! Utility class for re-iterating a scanline visited by a THMapNodeIterator class THMapScanlineIterator { public: THMapScanlineIterator(); /*! @arg itrNodes A node iterator which has reached the end of a scanline @arg eDirection The direction in which to iterate the scanline; ScanlineForward for left-to-right, ScanlineBackward for right-to-left. @arg iXOffset If given, values returned by x() will be offset by this. @arg iYOffset If given, values returned by y() will be offset by this. */ THMapScanlineIterator(const THMapNodeIterator& itrNodes, eTHMapScanlineIteratorDirection eDirection, int iXOffset = 0, int iYOffset = 0); inline operator bool () const {return m_pNode != m_pNodeEnd;} inline THMapScanlineIterator& operator ++ (); inline const THMapNode* operator -> () const {return m_pNode;} inline int x() const {return m_iXs;} inline int y() const {return m_iYs;} inline const THMapNode* getNextNode() {return m_pNode + m_iNodeStep;} inline const THMapNode* getPreviousNode() { return m_pNode - m_iNodeStep;} THMapScanlineIterator operator= (const THMapScanlineIterator &iterator); inline const THMapNode* getNode() {return m_pNode;} private: const THMapNode* m_pNode; const THMapNode* m_pNodeFirst; const THMapNode* m_pNodeEnd; int m_iNodeStep; int m_iXStep; int m_iXs; int m_iYs; int m_takenSteps; }; #endif // CORSIX_TH_TH_MAP_H_ CorsixTH-0.61/CorsixTH/Src/th_map_overlays.cpp000066400000000000000000000147271321660673500213210ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_map_overlays.h" #include "th_gfx.h" #include "th_map.h" #include THMapOverlayPair::THMapOverlayPair() { m_pFirst = nullptr; m_pSecond = nullptr; m_bOwnFirst = false; m_bOwnSecond = false; } THMapOverlayPair::~THMapOverlayPair() { setFirst(nullptr, false); setSecond(nullptr, false); } void THMapOverlayPair::setFirst(THMapOverlay* pOverlay, bool bTakeOwnership) { if(m_pFirst && m_bOwnFirst) delete m_pFirst; m_pFirst = pOverlay; m_bOwnFirst = bTakeOwnership; } void THMapOverlayPair::setSecond(THMapOverlay* pOverlay, bool bTakeOwnership) { if(m_pSecond && m_bOwnSecond) delete m_pSecond; m_pSecond = pOverlay; m_bOwnSecond = bTakeOwnership; } void THMapOverlayPair::drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) { if(m_pFirst) m_pFirst->drawCell(pCanvas, iCanvasX, iCanvasY, pMap, iNodeX, iNodeY); if(m_pSecond) m_pSecond->drawCell(pCanvas, iCanvasX, iCanvasY, pMap, iNodeX, iNodeY); } THMapTextOverlay::THMapTextOverlay() { m_iBackgroundSprite = 0; } void THMapTextOverlay::setBackgroundSprite(size_t iSprite) { m_iBackgroundSprite = iSprite; } void THMapTextOverlay::drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) { if(m_pSprites && m_iBackgroundSprite) { m_pSprites->drawSprite(pCanvas, m_iBackgroundSprite, iCanvasX, iCanvasY, 0); } if(m_pFont) { _drawText(pCanvas, iCanvasX, iCanvasY, getText(pMap, iNodeX, iNodeY)); } } const std::string THMapPositionsOverlay::getText(const THMap* pMap, int iNodeX, int iNodeY) { std::ostringstream str; str << iNodeX + 1 << ',' << iNodeY + 1; return str.str(); } THMapTypicalOverlay::THMapTypicalOverlay() { m_pSprites = nullptr; m_pFont = nullptr; m_bOwnsSprites = false; m_bOwnsFont = false; } THMapTypicalOverlay::~THMapTypicalOverlay() { setSprites(nullptr, false); setFont(nullptr, false); } void THMapFlagsOverlay::drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) { const THMapNode *pNode = pMap->getNode(iNodeX, iNodeY); if(!pNode) return; if(m_pSprites) { if(pNode->flags.passable) m_pSprites->drawSprite(pCanvas, 3, iCanvasX, iCanvasY, 0); if(pNode->flags.hospital) m_pSprites->drawSprite(pCanvas, 8, iCanvasX, iCanvasY, 0); if(pNode->flags.buildable) m_pSprites->drawSprite(pCanvas, 9, iCanvasX, iCanvasY, 0); if(pNode->flags.can_travel_n && pMap->getNode(iNodeX, iNodeY - 1)->flags.passable) { m_pSprites->drawSprite(pCanvas, 4, iCanvasX, iCanvasY, 0); } if(pNode->flags.can_travel_e && pMap->getNode(iNodeX + 1, iNodeY)->flags.passable) { m_pSprites->drawSprite(pCanvas, 5, iCanvasX, iCanvasY, 0); } if(pNode->flags.can_travel_s && pMap->getNode(iNodeX, iNodeY + 1)->flags.passable) { m_pSprites->drawSprite(pCanvas, 6, iCanvasX, iCanvasY, 0); } if(pNode->flags.can_travel_w && pMap->getNode(iNodeX - 1, iNodeY)->flags.passable) { m_pSprites->drawSprite(pCanvas, 7, iCanvasX, iCanvasY, 0); } } if(m_pFont) { if(!pNode->objects.empty()) { std::ostringstream str; str << 'T' << static_cast(pNode->objects.front()); _drawText(pCanvas, iCanvasX, iCanvasY - 8, str.str()); } if(pNode->iRoomId) { std::ostringstream str; str << 'R' << static_cast(pNode->iRoomId); _drawText(pCanvas, iCanvasX, iCanvasY + 8, str.str()); } } } void THMapParcelsOverlay::drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) { const THMapNode *pNode = pMap->getNode(iNodeX, iNodeY); if(!pNode) return; if(m_pFont) _drawText(pCanvas, iCanvasX, iCanvasY, std::to_string((int)pNode->iParcelId)); if(m_pSprites) { uint16_t iParcel = pNode->iParcelId; #define DIR(dx, dy, sprite) \ pNode = pMap->getNode(iNodeX + dx, iNodeY + dy); \ if(!pNode || pNode->iParcelId != iParcel) \ m_pSprites->drawSprite(pCanvas, sprite, iCanvasX, iCanvasY, 0) DIR( 0, -1, 18); DIR( 1, 0, 19); DIR( 0, 1, 20); DIR(-1, 0, 21); #undef DIR } } void THMapTypicalOverlay::_drawText(THRenderTarget* pCanvas, int iX, int iY, std::string str) { THFontDrawArea oArea = m_pFont->getTextSize(str.c_str(), str.length()); m_pFont->drawText(pCanvas, str.c_str(), str.length(), iX + (64 - oArea.iEndX) / 2, iY + (32 - oArea.iEndY) / 2); } void THMapTypicalOverlay::setSprites(THSpriteSheet* pSheet, bool bTakeOwnership) { if(m_pSprites && m_bOwnsSprites) delete m_pSprites; m_pSprites = pSheet; m_bOwnsSprites = bTakeOwnership; } void THMapTypicalOverlay::setFont(THFont* pFont, bool bTakeOwnership) { if(m_pFont && m_bOwnsFont) delete m_pFont; m_pFont = pFont; m_bOwnsFont = bTakeOwnership; } CorsixTH-0.61/CorsixTH/Src/th_map_overlays.h000066400000000000000000000065561321660673500207670ustar00rootroot00000000000000/* Copyright (c) 2010 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_MAP_OVERLAYS_H_ #define CORSIX_TH_TH_MAP_OVERLAYS_H_ #include #include class THFont; class THMap; class THRenderTarget; class THSpriteSheet; class THMapOverlay { public: virtual ~THMapOverlay() = default; virtual void drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) = 0; }; class THMapOverlayPair : public THMapOverlay { public: THMapOverlayPair(); virtual ~THMapOverlayPair(); void setFirst(THMapOverlay* pOverlay, bool bTakeOwnership); void setSecond(THMapOverlay* pOverlay, bool bTakeOwnership); void drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) override; private: THMapOverlay *m_pFirst, *m_pSecond; bool m_bOwnFirst, m_bOwnSecond; }; class THMapTypicalOverlay : public THMapOverlay { public: THMapTypicalOverlay(); virtual ~THMapTypicalOverlay(); void setSprites(THSpriteSheet* pSheet, bool bTakeOwnership); void setFont(THFont* pFont, bool bTakeOwnership); protected: void _drawText(THRenderTarget* pCanvas, int iX, int iY, std::string str); THSpriteSheet* m_pSprites; THFont* m_pFont; private: bool m_bOwnsSprites; bool m_bOwnsFont; }; class THMapTextOverlay : public THMapTypicalOverlay { public: THMapTextOverlay(); virtual ~THMapTextOverlay() = default; virtual void drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY); void setBackgroundSprite(size_t iSprite); virtual const std::string getText(const THMap* pMap, int iNodeX, int iNodeY) = 0; private: size_t m_iBackgroundSprite; }; class THMapPositionsOverlay final : public THMapTextOverlay { public: const std::string getText(const THMap* pMap, int iNodeX, int iNodeY) override; }; class THMapFlagsOverlay final : public THMapTypicalOverlay { public: void drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) override; }; class THMapParcelsOverlay final : public THMapTypicalOverlay { public: void drawCell(THRenderTarget* pCanvas, int iCanvasX, int iCanvasY, const THMap* pMap, int iNodeX, int iNodeY) override; }; #endif CorsixTH-0.61/CorsixTH/Src/th_movie.cpp000066400000000000000000000731411321660673500177320ustar00rootroot00000000000000/* Copyright (c) 2012 Stephen Baker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "th_movie.h" #include "config.h" #include "lua_sdl.h" #if (defined(CORSIX_TH_USE_FFMPEG) || defined(CORSIX_TH_USE_LIBAV)) && defined(CORSIX_TH_USE_SDL_MIXER) #include "th_gfx.h" extern "C" { #include #include #include #include #include #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(54, 6, 0)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 63, 100)) #include #endif } #include #include #include #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 7, 0)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 12, 100)) #define av_packet_unref av_free_packet #endif #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 45, 101)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 28, 1)) #define av_frame_alloc avcodec_alloc_frame #define av_frame_unref avcodec_get_frame_defaults #define av_frame_free avcodec_free_frame #endif static void th_movie_audio_callback(int iChannel, void *pStream, int iStreamSize, void *pUserData) { THMovie *pMovie = (THMovie *)pUserData; pMovie->copyAudioToStream((uint8_t*)pStream, iStreamSize); } THMoviePicture::THMoviePicture(): m_pBuffer(nullptr), m_pixelFormat(AV_PIX_FMT_RGB24), m_mutex{} {} THMoviePicture::~THMoviePicture() { av_freep(&m_pBuffer); } void THMoviePicture::allocate(int iWidth, int iHeight) { m_iWidth = iWidth; m_iHeight = iHeight; av_freep(&m_pBuffer); #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(54, 6, 0)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 63, 100)) int numBytes = av_image_get_buffer_size(m_pixelFormat, m_iWidth, m_iHeight, 1); #else int numBytes = avpicture_get_size(m_pixelFormat, m_iWidth, m_iHeight); #endif m_pBuffer = static_cast(av_mallocz(numBytes)); } void THMoviePicture::deallocate() { av_freep(&m_pBuffer); } THMoviePictureBuffer::THMoviePictureBuffer(): m_aborting(false), m_fAllocated(false), m_iCount(0), m_iReadIndex(0), m_iWriteIndex(0), m_pSwsContext(nullptr), m_pTexture(nullptr), m_mutex{}, m_cond{} { } THMoviePictureBuffer::~THMoviePictureBuffer() { sws_freeContext(m_pSwsContext); if (m_pTexture) { SDL_DestroyTexture(m_pTexture); m_pTexture = nullptr; } } void THMoviePictureBuffer::abort() { m_aborting = true; std::lock_guard lock(m_mutex); m_cond.notify_all(); } void THMoviePictureBuffer::reset() { m_aborting = false; } void THMoviePictureBuffer::allocate(SDL_Renderer *pRenderer, int iWidth, int iHeight) { if (m_pTexture) { SDL_DestroyTexture(m_pTexture); std::cerr << "THMovie overlay should be deallocated before being allocated!\n"; } m_pTexture = SDL_CreateTexture(pRenderer, SDL_PIXELFORMAT_RGB24, SDL_TEXTUREACCESS_STREAMING, iWidth, iHeight); if (m_pTexture == nullptr) { std::cerr << "Problem creating overlay: " << SDL_GetError() << "\n"; return; } for(int i = 0; i < ms_pictureBufferSize; i++) { m_aPictureQueue[i].allocate(iWidth, iHeight); } //Do not change m_iWriteIndex, it's used by the other thread. //m_iReadIndex is only used in this thread. m_iReadIndex = m_iWriteIndex; std::lock_guard lock(m_mutex); m_iCount = 0; m_fAllocated = true; m_cond.notify_one(); } void THMoviePictureBuffer::deallocate() { { std::lock_guard lock(m_mutex); m_fAllocated = false; } for(int i = 0; i < ms_pictureBufferSize; i++) { std::lock_guard pictureLock(m_aPictureQueue[i].m_mutex); m_aPictureQueue[i].deallocate(); } if (m_pTexture) { SDL_DestroyTexture(m_pTexture); m_pTexture = nullptr; } } bool THMoviePictureBuffer::advance() { if(empty()) { return false; } m_iReadIndex++; if(m_iReadIndex == ms_pictureBufferSize) { m_iReadIndex = 0; } std::lock_guard lock(m_mutex); m_iCount--; m_cond.notify_one(); return true; } void THMoviePictureBuffer::draw(SDL_Renderer *pRenderer, const SDL_Rect &dstrect) { if(!empty()) { auto cur_pic = &(m_aPictureQueue[m_iReadIndex]); std::lock_guard pictureLock(cur_pic->m_mutex); if (cur_pic->m_pBuffer) { SDL_UpdateTexture(m_pTexture, nullptr, cur_pic->m_pBuffer, cur_pic->m_iWidth * 3); int iError = SDL_RenderCopy(pRenderer, m_pTexture, nullptr, &dstrect); if (iError < 0) { std::cerr << "Error displaying movie frame: " << SDL_GetError() << "\n"; } } } } double THMoviePictureBuffer::getNextPts() { double nextPts; std::lock_guard lock(m_mutex); if(!m_fAllocated || m_iCount < 2) { nextPts = 0; } else { nextPts = m_aPictureQueue[(m_iReadIndex + 1) % ms_pictureBufferSize].m_dPts; } return nextPts; } bool THMoviePictureBuffer::empty() { std::lock_guard lock(m_mutex); return (!m_fAllocated || m_iCount == 0); } bool THMoviePictureBuffer::full() { std::lock_guard lock(m_mutex); return unsafeFull(); } bool THMoviePictureBuffer::unsafeFull() { return (!m_fAllocated || m_iCount == ms_pictureBufferSize); } int THMoviePictureBuffer::write(AVFrame* pFrame, double dPts) { THMoviePicture* pMoviePicture = nullptr; std::unique_lock picBufLock(m_mutex); while(unsafeFull() && !m_aborting) { m_cond.wait(picBufLock); } picBufLock.unlock(); if(m_aborting) { return -1; } pMoviePicture = &m_aPictureQueue[m_iWriteIndex]; std::unique_lock pictureLock(pMoviePicture->m_mutex); if(pMoviePicture->m_pBuffer) { m_pSwsContext = sws_getCachedContext(m_pSwsContext, pFrame->width, pFrame->height, (AVPixelFormat)pFrame->format, pMoviePicture->m_iWidth, pMoviePicture->m_iHeight, pMoviePicture->m_pixelFormat, SWS_BICUBIC, nullptr, nullptr, nullptr); if(m_pSwsContext == nullptr) { std::cerr << "Failed to initialize SwsContext\n"; return 1; } /* Allocate a new frame and buffer for the destination RGB24 data. */ AVFrame *pFrameRGB = av_frame_alloc(); #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(54, 6, 0)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 63, 100)) av_image_fill_arrays(pFrameRGB->data, pFrameRGB->linesize, pMoviePicture->m_pBuffer, pMoviePicture->m_pixelFormat, pMoviePicture->m_iWidth, pMoviePicture->m_iHeight, 1); #else avpicture_fill((AVPicture *)pFrameRGB, pMoviePicture->m_pBuffer, pMoviePicture->m_pixelFormat, pMoviePicture->m_iWidth, pMoviePicture->m_iHeight); #endif /* Rescale the frame data and convert it to RGB24. */ sws_scale(m_pSwsContext, pFrame->data, pFrame->linesize, 0, pFrame->height, pFrameRGB->data, pFrameRGB->linesize); av_frame_free(&pFrameRGB); pMoviePicture->m_dPts = dPts; pictureLock.unlock(); m_iWriteIndex++; if(m_iWriteIndex == ms_pictureBufferSize) { m_iWriteIndex = 0; } picBufLock.lock(); m_iCount++; picBufLock.unlock(); } return 0; } THAVPacketQueue::THAVPacketQueue(): m_pFirstPacket(nullptr), m_pLastPacket(nullptr), iCount(0), m_mutex{}, m_cond{} { } THAVPacketQueue::~THAVPacketQueue() { } int THAVPacketQueue::getCount() const { return iCount; } void THAVPacketQueue::push(AVPacket *pPacket) { #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 12, 100)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 8, 0)) if(av_dup_packet(pPacket) < 0) { throw -1; } #endif AVPacketList* pNode = (AVPacketList*)av_malloc(sizeof(AVPacketList)); pNode->pkt = *pPacket; pNode->next = nullptr; std::lock_guard lock(m_mutex); if(m_pLastPacket == nullptr) { m_pFirstPacket = pNode; } else { m_pLastPacket->next = pNode; } m_pLastPacket = pNode; iCount++; m_cond.notify_one(); } AVPacket* THAVPacketQueue::pull(bool fBlock) { std::unique_lock lock(m_mutex); AVPacketList* pNode = m_pFirstPacket; if(pNode == nullptr && fBlock) { m_cond.wait(lock); pNode = m_pFirstPacket; } AVPacket *pPacket; if(pNode == nullptr) { pPacket = nullptr; } else { m_pFirstPacket = pNode->next; if(m_pFirstPacket == nullptr) { m_pLastPacket = nullptr; } iCount--; pPacket = (AVPacket*)av_malloc(sizeof(AVPacket)); *pPacket = pNode->pkt; av_free(pNode); } return pPacket; } void THAVPacketQueue::release() { std::lock_guard lock(m_mutex); m_cond.notify_all(); } THMovie::THMovie(): m_pRenderer(nullptr), m_sLastError(), m_pFormatContext(nullptr), m_pVideoCodecContext(nullptr), m_pAudioCodecContext(nullptr), m_pVideoQueue(nullptr), m_pAudioQueue(nullptr), m_pMoviePictureBuffer(new THMoviePictureBuffer()), m_pAudioResampleContext(nullptr), m_iAudioBufferSize(0), m_iAudioBufferMaxSize(0), m_pAudioPacket(nullptr), m_audio_frame(nullptr), m_pChunk(nullptr), m_iChannel(-1), m_streamThread{}, m_videoThread{}, m_decodingAudioMutex{} { av_register_all(); m_flushPacket = (AVPacket*)av_malloc(sizeof(AVPacket)); av_init_packet(m_flushPacket); m_flushPacket->data = (uint8_t *)"FLUSH"; m_flushPacket->size = 5; m_pbChunkBuffer = (uint8_t*)std::calloc(ms_audioBufferSize, sizeof(uint8_t)); } THMovie::~THMovie() { unload(); av_packet_unref(m_flushPacket); av_free(m_flushPacket); free(m_pbChunkBuffer); } void THMovie::setRenderer(SDL_Renderer *pRenderer) { m_pRenderer = pRenderer; } bool THMovie::moviesEnabled() const { return true; } bool THMovie::load(const char* szFilepath) { int iError = 0; AVCodec* m_pVideoCodec; AVCodec* m_pAudioCodec; unload(); //Unload any currently loaded video to free memory m_fAborting = false; iError = avformat_open_input(&m_pFormatContext, szFilepath, nullptr, nullptr); if(iError < 0) { av_strerror(iError, m_szErrorBuffer, ms_movieErrorBufferSize); m_sLastError = std::string(m_szErrorBuffer); return false; } iError = avformat_find_stream_info(m_pFormatContext, nullptr); if(iError < 0) { av_strerror(iError, m_szErrorBuffer, ms_movieErrorBufferSize); m_sLastError = std::string(m_szErrorBuffer); return false; } m_iVideoStream = av_find_best_stream(m_pFormatContext, AVMEDIA_TYPE_VIDEO, -1, -1, &m_pVideoCodec, 0); m_pVideoCodecContext = getCodecContextForStream(m_pVideoCodec, m_pFormatContext->streams[m_iVideoStream]); avcodec_open2(m_pVideoCodecContext, m_pVideoCodec, nullptr); m_iAudioStream = av_find_best_stream(m_pFormatContext, AVMEDIA_TYPE_AUDIO, -1, -1, &m_pAudioCodec, 0); if(m_iAudioStream >= 0) { m_pAudioCodecContext = getCodecContextForStream(m_pAudioCodec, m_pFormatContext->streams[m_iAudioStream]); avcodec_open2(m_pAudioCodecContext, m_pAudioCodec, nullptr); } return true; } AVCodecContext* THMovie::getCodecContextForStream(AVCodec* codec, AVStream* stream) const { #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 14, 0)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 33, 100)) AVCodecContext* ctx = avcodec_alloc_context3(codec); avcodec_parameters_to_context(ctx, stream->codecpar); return ctx; #else return stream->codec; #endif } void THMovie::unload() { m_fAborting = true; if(m_pAudioQueue) { m_pAudioQueue->release(); } if(m_pVideoQueue) { m_pVideoQueue->release(); } m_pMoviePictureBuffer->abort(); if(m_streamThread.joinable()) { m_streamThread.join(); } if(m_videoThread.joinable()) { m_videoThread.join(); } //wait until after other threads are closed to clear the packet queues //so we don't free something being used. if(m_pAudioQueue) { while(m_pAudioQueue->getCount() > 0) { AVPacket* p = m_pAudioQueue->pull(false); av_packet_unref(p); } delete m_pAudioQueue; m_pAudioQueue = nullptr; } if(m_pVideoQueue) { while(m_pVideoQueue->getCount() > 0) { AVPacket* p = m_pVideoQueue->pull(false); av_packet_unref(p); } delete m_pVideoQueue; m_pVideoQueue = nullptr; } m_pMoviePictureBuffer->deallocate(); if(m_pVideoCodecContext) { avcodec_close(m_pVideoCodecContext); m_pVideoCodecContext = nullptr; } if(m_iChannel >= 0) { Mix_UnregisterAllEffects(m_iChannel); Mix_HaltChannel(m_iChannel); Mix_FreeChunk(m_pChunk); m_iChannel = -1; } std::lock_guard audioLock(m_decodingAudioMutex); if(m_iAudioBufferMaxSize > 0) { av_free(m_pbAudioBuffer); m_iAudioBufferMaxSize = 0; } if(m_pAudioCodecContext) { avcodec_close(m_pAudioCodecContext); m_pAudioCodecContext = nullptr; } av_frame_free(&m_audio_frame); #ifdef CORSIX_TH_USE_FFMPEG swr_free(&m_pAudioResampleContext); #elif defined(CORSIX_TH_USE_LIBAV) // avresample_free doesn't skip nullptr on it's own. if (m_pAudioResampleContext != nullptr) { avresample_free(&m_pAudioResampleContext); m_pAudioResampleContext = nullptr; } #endif if(m_pAudioPacket) { m_pAudioPacket->data = m_pbAudioPacketData; m_pAudioPacket->size = m_iAudioPacketSize; av_packet_unref(m_pAudioPacket); av_free(m_pAudioPacket); m_pAudioPacket = nullptr; m_pbAudioPacketData = nullptr; m_iAudioPacketSize = 0; } if(m_pFormatContext) { avformat_close_input(&m_pFormatContext); } } void THMovie::play(int iChannel) { if(!m_pRenderer) { m_sLastError = std::string("Cannot play before setting the renderer"); return; } m_pVideoQueue = new THAVPacketQueue(); m_pMoviePictureBuffer->reset(); m_pMoviePictureBuffer->allocate(m_pRenderer, m_pVideoCodecContext->width, m_pVideoCodecContext->height); m_pAudioPacket = nullptr; m_iAudioPacketSize = 0; m_pbAudioPacketData = nullptr; m_iAudioBufferSize = 0; m_iAudioBufferIndex = 0; m_iAudioBufferMaxSize = 0; m_pAudioQueue = new THAVPacketQueue(); m_iCurSyncPts = 0; m_iCurSyncPtsSystemTime = SDL_GetTicks(); if(m_iAudioStream >= 0) { Mix_QuerySpec(&m_iMixerFrequency, nullptr, &m_iMixerChannels); #ifdef CORSIX_TH_USE_FFMPEG m_pAudioResampleContext = swr_alloc_set_opts( m_pAudioResampleContext, m_iMixerChannels==1?AV_CH_LAYOUT_MONO:AV_CH_LAYOUT_STEREO, AV_SAMPLE_FMT_S16, m_iMixerFrequency, m_pAudioCodecContext->channel_layout, m_pAudioCodecContext->sample_fmt, m_pAudioCodecContext->sample_rate, 0, nullptr); swr_init(m_pAudioResampleContext); #elif defined(CORSIX_TH_USE_LIBAV) m_pAudioResampleContext = avresample_alloc_context(); av_opt_set_int(m_pAudioResampleContext, "in_channel_layout", m_pAudioCodecContext->channel_layout, 0); av_opt_set_int(m_pAudioResampleContext, "out_channel_layout", m_iMixerChannels == 1 ? AV_CH_LAYOUT_MONO : AV_CH_LAYOUT_STEREO, 0); av_opt_set_int(m_pAudioResampleContext, "in_sample_rate", m_pAudioCodecContext->sample_rate, 0); av_opt_set_int(m_pAudioResampleContext, "out_sample_rate", m_iMixerFrequency, 0); av_opt_set_int(m_pAudioResampleContext, "in_sample_fmt", m_pAudioCodecContext->sample_fmt, 0); av_opt_set_int(m_pAudioResampleContext, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); avresample_open(m_pAudioResampleContext); #endif m_pChunk = Mix_QuickLoad_RAW(m_pbChunkBuffer, ms_audioBufferSize); m_iChannel = Mix_PlayChannel(iChannel, m_pChunk, -1); if(m_iChannel < 0) { m_iChannel = -1; m_sLastError = std::string(Mix_GetError()); } else { Mix_RegisterEffect(m_iChannel, th_movie_audio_callback, nullptr, this); } } m_streamThread = std::thread(&THMovie::readStreams, this); m_videoThread = std::thread(&THMovie::runVideo, this); } void THMovie::stop() { m_fAborting = true; } int THMovie::getNativeHeight() const { int iHeight = 0; if(m_pVideoCodecContext) { iHeight = m_pVideoCodecContext->height; } return iHeight; } int THMovie::getNativeWidth() const { int iWidth = 0; if(m_pVideoCodecContext) { iWidth = m_pVideoCodecContext->width; } return iWidth; } bool THMovie::hasAudioTrack() const { return (m_iAudioStream >= 0); } const char* THMovie::getLastError() const { return m_sLastError.c_str(); } void THMovie::clearLastError() { m_sLastError.clear(); } void THMovie::refresh(const SDL_Rect &destination_rect) { SDL_Rect dest_rect; dest_rect = SDL_Rect{ destination_rect.x, destination_rect.y, destination_rect.w, destination_rect.h }; if(!m_pMoviePictureBuffer->empty()) { double dCurTime = SDL_GetTicks() - m_iCurSyncPtsSystemTime + m_iCurSyncPts * 1000.0; double dNextPts = m_pMoviePictureBuffer->getNextPts(); if(dNextPts > 0 && dNextPts * 1000.0 <= dCurTime) { m_pMoviePictureBuffer->advance(); } m_pMoviePictureBuffer->draw(m_pRenderer, dest_rect); } } void THMovie::allocatePictureBuffer() { if(!m_pVideoCodecContext) { return; } m_pMoviePictureBuffer->allocate(m_pRenderer, getNativeWidth(), getNativeHeight()); } void THMovie::deallocatePictureBuffer() { m_pMoviePictureBuffer->deallocate(); } void THMovie::readStreams() { AVPacket packet; int iError; while(!m_fAborting) { iError = av_read_frame(m_pFormatContext, &packet); if(iError < 0) { if(iError == AVERROR_EOF || m_pFormatContext->pb->error || m_pFormatContext->pb->eof_reached) { break; } } else { if(packet.stream_index == m_iVideoStream) { m_pVideoQueue->push(&packet); } else if (packet.stream_index == m_iAudioStream) { m_pAudioQueue->push(&packet); } else { av_packet_unref(&packet); } } } while(!m_fAborting) { if(m_pVideoQueue->getCount() == 0 && m_pAudioQueue->getCount() == 0 && m_pMoviePictureBuffer->getNextPts() == 0) { break; } SDL_Delay(10); } SDL_Event endEvent; endEvent.type = SDL_USEREVENT_MOVIE_OVER; SDL_PushEvent(&endEvent); m_fAborting = true; } void THMovie::runVideo() { AVFrame *pFrame = av_frame_alloc(); double dClockPts; int iError; while(!m_fAborting) { av_frame_unref(pFrame); #ifdef CORSIX_TH_MOVIE_USE_SEND_PACKET_API iError = getFrame(m_iVideoStream, pFrame); if (iError == AVERROR_EOF) { break; } else if (iError < 0) { std::cerr << "Unexpected error " << iError << " while decoding video packet" << std::endl; break; } #else iError = getVideoFrame(pFrame); if(iError < 0) { break; } else if(iError == 0) { continue; } #endif dClockPts = getPresentationTimeForFrame(pFrame, m_iVideoStream); iError = m_pMoviePictureBuffer->write(pFrame, dClockPts); if(iError < 0) { break; } } avcodec_flush_buffers(m_pVideoCodecContext); av_frame_free(&pFrame); } double THMovie::getPresentationTimeForFrame(AVFrame* frame, int streamIndex) const { int64_t pts; #ifdef CORSIX_TH_USE_LIBAV pts = frame->pts; if (pts == AV_NOPTS_VALUE) { pts = frame->pkt_dts; } #else #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 18, 100) pts = *(int64_t*)av_opt_ptr(avcodec_get_frame_class(), frame, "best_effort_timestamp"); #else pts = av_frame_get_best_effort_timestamp(frame); #endif //LIBAVCODEC_VERSION_INT #endif //CORSIX_T_USE_LIBAV if (pts == AV_NOPTS_VALUE) { pts = 0; } return pts * av_q2d(m_pFormatContext->streams[streamIndex]->time_base); } #ifdef CORSIX_TH_MOVIE_USE_SEND_PACKET_API int THMovie::getFrame(int stream, AVFrame* pFrame) { int iError = AVERROR(EAGAIN); AVCodecContext* ctx; THAVPacketQueue* pq; if (stream == m_iVideoStream) { ctx = m_pVideoCodecContext; pq = m_pVideoQueue; } else if (stream == m_iAudioStream) { ctx = m_pAudioCodecContext; pq = m_pAudioQueue; } else { throw std::invalid_argument("Invalid value provided for stream"); } while (iError == AVERROR(EAGAIN)) { iError = avcodec_receive_frame(ctx, pFrame); if (iError == AVERROR(EAGAIN)) { AVPacket* pkt = pq->pull(true); int res = avcodec_send_packet(ctx, pkt); if (res == AVERROR(EAGAIN)) { throw std::runtime_error("avcodec_receive_frame and avcodec_send_packet should not return EAGAIN at the same time"); } } } return iError; } #else int THMovie::getVideoFrame(AVFrame *pFrame) { int iGotPicture = 0; int iError; AVPacket *pPacket = m_pVideoQueue->pull(true); if(pPacket == nullptr) { return -1; } if(pPacket->data == m_flushPacket->data) { //TODO: Flush return 0; } iError = avcodec_decode_video2(m_pVideoCodecContext, pFrame, &iGotPicture, pPacket); av_packet_unref(pPacket); av_free(pPacket); if(iError < 0) { return 0; } if(iGotPicture) { iError = 1; return iError; } return 0; } #endif void THMovie::copyAudioToStream(uint8_t *pbStream, int iStreamSize) { std::lock_guard audioLock(m_decodingAudioMutex); bool fFirst = true; while(iStreamSize > 0 && !m_fAborting) { if(m_iAudioBufferIndex >= m_iAudioBufferSize) { int iAudioSize = decodeAudioFrame(fFirst); fFirst = false; if(iAudioSize <= 0) { std::memset(m_pbAudioBuffer, 0, m_iAudioBufferSize); } else { m_iAudioBufferSize = iAudioSize; } m_iAudioBufferIndex = 0; } int iCopyLength = m_iAudioBufferSize - m_iAudioBufferIndex; if(iCopyLength > iStreamSize) { iCopyLength = iStreamSize; } std::memcpy(pbStream, (uint8_t *)m_pbAudioBuffer + m_iAudioBufferIndex, iCopyLength); iStreamSize -= iCopyLength; pbStream += iCopyLength; m_iAudioBufferIndex += iCopyLength; } } int THMovie::decodeAudioFrame(bool fFirst) { #ifdef CORSIX_TH_MOVIE_USE_SEND_PACKET_API if (!m_audio_frame) { m_audio_frame = av_frame_alloc(); } else { av_frame_unref(m_audio_frame); } int iError = getFrame(m_iAudioStream, m_audio_frame); if (iError == AVERROR_EOF) { return 0; } else if (iError < 0) { std::cerr << "Unexpected error " << iError << " while decoding audio packet" << std::endl; return 0; } double dClockPts = getPresentationTimeForFrame(m_audio_frame, m_iAudioStream); m_iCurSyncPts = dClockPts; m_iCurSyncPtsSystemTime = SDL_GetTicks(); #else int iGotFrame = 0; bool fNewPacket = false; bool fFlushComplete = false; while(!iGotFrame && !m_fAborting) { if(!m_pAudioPacket || m_pAudioPacket->size == 0) { if(m_pAudioPacket) { m_pAudioPacket->data = m_pbAudioPacketData; m_pAudioPacket->size = m_iAudioPacketSize; av_packet_unref(m_pAudioPacket); av_free(m_pAudioPacket); m_pAudioPacket = nullptr; } m_pAudioPacket = m_pAudioQueue->pull(true); if(m_fAborting) { break; } m_pbAudioPacketData = m_pAudioPacket->data; m_iAudioPacketSize = m_pAudioPacket->size; if(m_pAudioPacket == nullptr) { fNewPacket = false; return -1; } fNewPacket = true; if(m_pAudioPacket->data == m_flushPacket->data) { avcodec_flush_buffers(m_pAudioCodecContext); fFlushComplete = false; } } if(fFirst) { int64_t iStreamPts = m_pAudioPacket->pts; if(iStreamPts != AV_NOPTS_VALUE) { //There is a time_base in m_pAudioCodecContext too, but that one is wrong. double dClockPts = iStreamPts * av_q2d(m_pFormatContext->streams[m_iAudioStream]->time_base); m_iCurSyncPts = dClockPts; m_iCurSyncPtsSystemTime = SDL_GetTicks(); } fFirst = false; } while(m_pAudioPacket->size > 0 || (!m_pAudioPacket->data && fNewPacket)) { if(!m_audio_frame) { m_audio_frame = av_frame_alloc(); } else { av_frame_unref(m_audio_frame); } if(fFlushComplete) { break; } fNewPacket = false; int iBytesConsumed = avcodec_decode_audio4(m_pAudioCodecContext, m_audio_frame, &iGotFrame, m_pAudioPacket); if(iBytesConsumed < 0) { m_pAudioPacket->size = 0; break; } m_pAudioPacket->data += iBytesConsumed; m_pAudioPacket->size -= iBytesConsumed; if(!iGotFrame) { if(m_pAudioPacket->data && (m_pAudioCodecContext->codec->capabilities & CODEC_CAP_DELAY)) { fFlushComplete = true; } } } } #endif //over-estimate output samples int iOutSamples = (int)av_rescale_rnd(m_audio_frame->nb_samples, m_iMixerFrequency, m_pAudioCodecContext->sample_rate, AV_ROUND_UP); int iSampleSize = av_get_bytes_per_sample(AV_SAMPLE_FMT_S16) * iOutSamples * m_iMixerChannels; if(iSampleSize > m_iAudioBufferMaxSize) { if(m_iAudioBufferMaxSize > 0) { av_free(m_pbAudioBuffer); } m_pbAudioBuffer = (uint8_t*)av_malloc(iSampleSize); m_iAudioBufferMaxSize = iSampleSize; } #ifdef CORSIX_TH_USE_FFMPEG swr_convert(m_pAudioResampleContext, &m_pbAudioBuffer, iOutSamples, (const uint8_t**)&m_audio_frame->data[0], m_audio_frame->nb_samples); #elif defined(CORSIX_TH_USE_LIBAV) avresample_convert(m_pAudioResampleContext, &m_pbAudioBuffer, 0, iOutSamples, (uint8_t**)&m_audio_frame->data[0], 0, m_audio_frame->nb_samples); #endif return iSampleSize; } #else //CORSIX_TH_USE_FFMPEG || CORSIX_TH_USE_LIBAV THMovie::THMovie() {} THMovie::~THMovie() {} void THMovie::setRenderer(SDL_Renderer *pRenderer) {} bool THMovie::moviesEnabled() const { return false; } bool THMovie::load(const char* filepath) { return true; } void THMovie::unload() {} void THMovie::play(int iChannel) { SDL_Event endEvent; endEvent.type = SDL_USEREVENT_MOVIE_OVER; SDL_PushEvent(&endEvent); } void THMovie::stop() {} int THMovie::getNativeHeight() const { return 0; } int THMovie::getNativeWidth() const { return 0; } bool THMovie::hasAudioTrack() const { return false; } const char* THMovie::getLastError() const { return nullptr; } void THMovie::clearLastError() {} void THMovie::refresh(const SDL_Rect &destination_rect) {} void THMovie::allocatePictureBuffer() {} void THMovie::deallocatePictureBuffer() {} void THMovie::readStreams() {} void THMovie::runVideo() {} void THMovie::copyAudioToStream(uint8_t *stream, int length) {} #endif //CORSIX_TH_USE_FFMPEG CorsixTH-0.61/CorsixTH/Src/th_movie.h000066400000000000000000000362031321660673500173750ustar00rootroot00000000000000/* Copyright (c) 2012 Stephen Baker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef TH_VIDEO_H #define TH_VIDEO_H #include #include #include #include #include #include #include "SDL.h" #include "config.h" #if (defined(CORSIX_TH_USE_FFMPEG) || defined(CORSIX_TH_USE_LIBAV)) && defined(CORSIX_TH_USE_SDL_MIXER) #include "SDL_mixer.h" extern "C" { #ifndef INT64_C #define INT64_C(c) (c ## LL) #define UINT64_C(c) (c ## ULL) #endif #include #include #include #ifdef CORSIX_TH_USE_FFMPEG #include #elif defined(CORSIX_TH_USE_LIBAV) #include #endif } #if (defined(CORSIX_TH_USE_FFMEPG) && LIBAVUTIL_VERSION_INT < AV_VERSION_INT(51, 74, 100)) || \ (defined(CORSIX_TH_USE_LIBAV) && LIBAVUTIL_VERSION_INT < AV_VERSION_INT(51, 42, 0)) #define AVPixelFormat PixelFormat #define AV_PIX_FMT_RBG24 PIX_FMT_RGB24 #endif #if (defined(CORSIX_TH_USE_LIBAV) && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 16, 0)) || \ (defined(CORSIX_TH_USE_FFMPEG) && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 37, 100)) #define CORSIX_TH_MOVIE_USE_SEND_PACKET_API #endif //! \brief A picture in THMoviePictureBuffer //! //! Stores the picture from a frame in the movie from the time that it is //! processed until it should be drawn. class THMoviePicture { public: THMoviePicture(); ~THMoviePicture(); //! Allocate the buffer to hold a picture of the given size void allocate(int iWidth, int iHeight); //! Delete the buffer void deallocate(); uint8_t* m_pBuffer; ///< Pixel data in #m_pixelFormat const AVPixelFormat m_pixelFormat; ///< The format of pixels to output int m_iWidth; ///< Picture width int m_iHeight; ///< Picture height double m_dPts; ///< Presentation time stamp std::mutex m_mutex; ///< Mutex protecting this picture }; //! A buffer for holding movie pictures and drawing them to the renderer class THMoviePictureBuffer { public: THMoviePictureBuffer(); ~THMoviePictureBuffer(); //NB: The following functions are called by the main program thread //! Indicate that processing should stop and the movie aborted void abort(); //! Resume after having aborted void reset(); //! Ready the picture buffer for a new renderer or new picture dimensions //! by allocating each THMoviePicture in the queue, resetting the read //! index and allocating a new texture. //! //! \remark Must be run on the program's graphics thread void allocate(SDL_Renderer *pRenderer, int iWidth, int iHeight); //! Destroy the associated texture and deallocate each of the //! THMoviePictures in the queue so that the program can release //! the renderer //! //! \remark Must be run on the program's graphics thread void deallocate(); //! Advance the read index bool advance(); //! Draw the THMoviePicture at the current read index //! //! \param pRenderer The renderer to draw the picture to //! \param dstrect The rectangle on the renderer to draw to //! //! \remark Must be run on the program's graphics thread void draw(SDL_Renderer *pRenderer, const SDL_Rect &dstrect); //! Get the next presentation time stamp double getNextPts(); //! Return whether there are any pictures left to draw in the picture queue //! //! \remark If the THPictureBuffer is not allocated it cannot be read from //! or written to. Consequently it is both full and empty. bool empty(); //NB: These functions are called by a second thread //! Return whether there is space to add any more frame data to the queue //! //! \remark If the THPictureBuffer is not allocated it cannot be read from //! or written to. Consequently it is both full and empty. bool full(); //! Write the given frame (and presentation time stamp) to the picture //! queue //! //! \retval 0 Success //! \retval -1 Abort is in progress //! \retval 1 An error writing the frame int write(AVFrame* pFrame, double dPts); private: //! Return whether there is space to add any more frame data to the queue //! //! \remark Requires external locking bool unsafeFull(); static const size_t ms_pictureBufferSize = 4; ///< The number of elements to allocate in the picture queue std::atomic m_aborting; ///< Whether we are in the process of aborting bool m_fAllocated; ///< Whether the picture buffer has been allocated (and hasn't since been deallocated) int m_iCount; ///< The number of elements currently written to the picture queue int m_iReadIndex; ///< The position in the picture queue to be read next int m_iWriteIndex; ///< The position in the picture queue to be written to next SwsContext* m_pSwsContext; ///< The context for software scaling and pixel conversion when writing to the picture queue SDL_Texture *m_pTexture; ///< The (potentially hardware) texture to draw the picture to. In OpenGL this should only be accessed on the main thread std::mutex m_mutex; ///< A mutex for restricting access to the picture buffer to a single thread std::condition_variable m_cond; ///< A condition for indicating access to the picture buffer THMoviePicture m_aPictureQueue[ms_pictureBufferSize]; ///< The picture queue, a looping FIFO queue of THMoviePictures }; //! The AVPacketQueue is a thread safe queue of movie packets class THAVPacketQueue { public: //! Construct a new empty packet queue THAVPacketQueue(); //! Destroy the packet queue. //! //! \remarks Does not free the included packets. The packet queue should be //! flushed before it is destroyed. ~THAVPacketQueue(); //! Push a new packet on the back of the queue void push(AVPacket *packet); //! Pull the packet from the front of the queue //! //! \param block Whether to block if the queue is empty or immediately //! return a nullptr AVPacket* pull(bool block); //! Return the number of packets in the queue int getCount() const; //! Release a blocking pull without writing a new packet to the queue. void release(); private: AVPacketList *m_pFirstPacket; ///< The packet at the front of the queue AVPacketList *m_pLastPacket; ///< The packet at the end of the queue int iCount; ///< The number of packets in the queue std::mutex m_mutex; ///< A mutex restricting access to the packet queue to a single thread std::condition_variable m_cond; ///< A condition to wait on for signaling the packet queue }; #endif //CORSIX_TH_USE_FFMPEG || CORSIX_TH_USE_LIBAV //! Movie player for CorsixTH //! //! The movie player is designed to be preinitialized and used for multiple //! movies. After initializing the movie player, call THMovie::setRenderer //! to assign the current SDL renderer to the movie player. Then THMovie::load //! the desired movie and finally THMovie::play it. class THMovie { public: //! Construct a new THMovie THMovie(); //! Destroy the THMovie ~THMovie(); //! Assign the renderer on which to draw the movie void setRenderer(SDL_Renderer *pRenderer); //! Return whether movies were compiled into CorsixTH bool moviesEnabled() const; //! Load the movie with the given file name bool load(const char* szFilepath); //! Unload and free the currently loaded movie. //! //! \remark This is called by load before loading a new movie so it is //! unnecessary to explicitly call this method. There is no harm either. void unload(); //! Play the currently loaded movie //! //! \param iChannel The audio channel to use void play(int iChannel); //! Stop the currently playing movie void stop(); //! Return the original height of the movie int getNativeHeight() const; //! Return the original width of the movie int getNativeWidth() const; //! Return whether the movie has an audio stream bool hasAudioTrack() const; //! Return a text description of the last error encountered const char* getLastError() const; //! Clear the last error so that if there is no more errors before the next //! call to THMovie::getLastError() it will return an empty string. void clearLastError(); //! Draw the next frame if it is time to do so //! //! \param destination_rect The location and dimensions in the renderer on //! which to draw the movie void refresh(const SDL_Rect &destination_rect); //! Deallocate the picture buffer and free any resources associated with it. //! //! \remark This destroys the textures and other resources that may lock //! the renderer from being deleted. If the target changes you would call //! this, then free and switch renderers in the outside program, then call //! THMovie::setRenderer and finally THMovie::allocatePictureBuffer. //! \remark Up to the size of the picture buffer frames may be lost during //! this process. void deallocatePictureBuffer(); //! Allocate the picture buffer for the current renderer void allocatePictureBuffer(); //! Read packets from the movie and allocate them to the appropriate stream //! packet queues. Signal if we have reached the end of the movie. //! //! \remark This should not be called externally. It is public as it is the //! entry point of a thread. void readStreams(); //! Read video frames from the video packet queue and write them to the //! picture queue. //! //! \remark This should not be called externally. It is public as it is the //! entry point of a thread. void runVideo(); //! Read audio from the audio packet queue, and copy it into the audio //! buffer for playback void copyAudioToStream(uint8_t *pbStream, int iStreamSize); private: #if (defined(CORSIX_TH_USE_FFMPEG) || defined(CORSIX_TH_USE_LIBAV)) && defined(CORSIX_TH_USE_SDL_MIXER) static const size_t ms_movieErrorBufferSize = 128; ///< Buffer to hold last error description static const size_t ms_audioBufferSize = 1024; ///< Buffer for audio playback //! Get the AVCodecContext associated with a given stream AVCodecContext* getCodecContextForStream(AVCodec* codec, AVStream* stream) const; //! Get the time the given frame should be played (from the start of the stream) //! //! \param frame The video or audio frame //! \param streamIndex The position of the stream in m_pFormatContexts streams array double getPresentationTimeForFrame(AVFrame* frame, int streamIndex) const; //! Decode audio from the movie into a format suitable for playback int decodeAudioFrame(bool fFirst); #ifdef CORSIX_TH_MOVIE_USE_SEND_PACKET_API //! Convert packet data into frames //! //! \param stream The index of the stream to get the frame for //! \param pFrame An empty frame which gets populated by the data in the //! packet queue. //! \returns FFMPEG result of avcodec_recieve_frame int getFrame(int stream, AVFrame* pFrame); #else //! Convert video packet data into a frame. //! //! \param pFrame An empty frame which gets populated by the data in the //! video packet queue. //! \returns 1 if the frame was received, 0 if it was not, and < 0 on error int getVideoFrame(AVFrame *pFrame); #endif SDL_Renderer *m_pRenderer; ///< The renderer to draw to //! A description of the last error std::string m_sLastError; //! A buffer for passing to ffmpeg to get error details char m_szErrorBuffer[ms_movieErrorBufferSize]; bool m_fAborting; ///< Indicate that we are in process of aborting playback std::mutex m_decodingAudioMutex; ///< Synchronize access to #m_pAudioBuffer AVFormatContext* m_pFormatContext; ///< Information related to the loaded movie and all of its streams int m_iVideoStream; ///< The index of the video stream int m_iAudioStream; ///< The index of the audio stream AVCodecContext* m_pVideoCodecContext; ///< The video codec and information related to video AVCodecContext* m_pAudioCodecContext; ///< The audio codec and information related to audio //queues for transferring data between threads THAVPacketQueue *m_pVideoQueue; ///< Packets from the video stream THAVPacketQueue *m_pAudioQueue; ///< Packets from the audio stream THMoviePictureBuffer *m_pMoviePictureBuffer; ///< Buffer of processed video //clock sync parameters int m_iCurSyncPtsSystemTime; ///< System time matching #m_iCurSyncPts double m_iCurSyncPts; ///< The current presentation time stamp (from the audio stream) #ifdef CORSIX_TH_USE_FFMPEG SwrContext* m_pAudioResampleContext; ///< Context for resampling audio for playback with ffmpeg #elif defined(CORSIX_TH_USE_LIBAV) AVAudioResampleContext* m_pAudioResampleContext; ///< Context for resampling audio for playback with libav #endif int m_iAudioBufferSize; ///< The current size of audio data in #m_pbAudioBuffer int m_iAudioBufferIndex; ///< The current position for writing in #m_pbAudioBuffer int m_iAudioBufferMaxSize; ///< The capacity of #m_pbAudioBuffer (allocated size) uint8_t* m_pbAudioBuffer; ///< An audio buffer for playback AVPacket* m_pAudioPacket; ///< The current audio packet being decoded (audio frames don't necessarily line up with packets) int m_iAudioPacketSize; ///< The size of #m_pbAudioPacketData uint8_t *m_pbAudioPacketData; ///< Original data for #m_pAudioPacket, kept so that it can be freed after the packet is processed AVFrame* m_audio_frame; ///< The frame we are decoding audio into Mix_Chunk* m_pChunk; ///< Empty chunk needed for SDL_mixer uint8_t* m_pbChunkBuffer; ///< 0'd out buffer for the SDL_Mixer chunk int m_iChannel; ///< The channel to play audio on, -1 for none int m_iMixerChannels; ///< How many channels to play on (1 - mono, 2 - stereo) int m_iMixerFrequency; ///< The frequency of audio expected by SDL_Mixer AVPacket* m_flushPacket; ///< A representative packet indicating a flush is required. std::thread m_streamThread; ///< The thread responsible for reading the movie streams std::thread m_videoThread; ///< The thread responsible for decoding the video stream #endif //CORSIX_TH_USE_FFMPEG || CORSIX_TH_USE_LIBAV }; #endif // TH_VIDEO_H CorsixTH-0.61/CorsixTH/Src/th_pathfind.cpp000066400000000000000000000437231321660673500204130ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_pathfind.h" #include "persist_lua.h" #include "lua.hpp" #include #include #include #include BasePathing::BasePathing(THPathfinder *pf) : m_pPf(pf) { } node_t *BasePathing::pathingInit(const THMap *pMap, int iStartX, int iStartY) { int iWidth = pMap->getWidth(); m_pPf->m_pDestination = nullptr; m_pPf->_allocNodeCache(iWidth, pMap->getHeight()); node_t *pNode = m_pPf->m_pNodes + iStartY * iWidth + iStartX; pNode->prev = nullptr; pNode->distance = 0; pNode->guess = makeGuess(pNode); m_pPf->m_ppDirtyList[0] = pNode; m_pPf->m_iDirtyCount = 1; m_pPf->m_openHeap.clear(); return pNode; } /*! No need to check for the node being on the map edge, as the N/E/S/W flags are set as to prevent travelling off the map (as well as to prevent walking through walls). */ bool BasePathing::pathingNeighbours(node_t *pNode, th_map_node_flags flags, int iWidth) { if(flags.can_travel_w) if(tryNode(pNode, flags, pNode - 1, THTD_West)) return true; if(flags.can_travel_e) if (tryNode(pNode, flags, pNode + 1, THTD_East)) return true; if(flags.can_travel_n) if (tryNode(pNode, flags, pNode - iWidth, THTD_North)) return true; if(flags.can_travel_s) if (tryNode(pNode, flags, pNode + iWidth, THTD_South)) return true; return false; } void BasePathing::pathingTryNode(node_t *pNode, th_map_node_flags neighbour_flags, bool passable, node_t *pNeighbour) { if(neighbour_flags.passable || !passable) { if(pNeighbour->prev == pNeighbour) { pNeighbour->prev = pNode; pNeighbour->distance = pNode->distance + 1; pNeighbour->guess = makeGuess(pNeighbour); m_pPf->m_ppDirtyList[m_pPf->m_iDirtyCount++] = pNeighbour; m_pPf->_openHeapPush(pNeighbour); } else if(pNode->distance + 1 < pNeighbour->distance) { pNeighbour->prev = pNode; pNeighbour->distance = pNode->distance + 1; /* guess doesn't change, and already in the dirty list */ m_pPf->_openHeapPromote(pNeighbour); } } } int PathFinder::makeGuess(node_t *pNode) { // As diagonal movement is not allowed, the minimum distance between two // points is the sum of the distance in X and the distance in Y. return abs(pNode->x - m_iEndX) + abs(pNode->y - m_iEndY); } bool PathFinder::tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) { th_map_node_flags neighbour_flags = m_pMap->getNodeUnchecked(pNeighbour->x, pNeighbour->y)->flags; pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); return false; } bool PathFinder::findPath(const THMap *pMap, int iStartX, int iStartY, int iEndX, int iEndY) { if(pMap == nullptr) pMap = m_pPf->m_pDefaultMap; if(pMap == nullptr || pMap->getNode(iEndX, iEndY) == nullptr || !pMap->getNodeUnchecked(iEndX, iEndY)->flags.passable) { m_pPf->m_pDestination = nullptr; return false; } m_pMap = pMap; m_iEndX = iEndX; m_iEndY = iEndY; node_t *pNode = pathingInit(pMap, iStartX, iStartY); int iWidth = pMap->getWidth(); node_t *pTarget = m_pPf->m_pNodes + iEndY * iWidth + iEndX; while(true) { if(pNode == pTarget) { m_pPf->m_pDestination = pTarget; return true; } th_map_node_flags flags = pMap->getNodeUnchecked(pNode->x, pNode->y)->flags; if (pathingNeighbours(pNode, flags, iWidth)) return true; if (m_pPf->m_openHeap.empty()) { m_pPf->m_pDestination = nullptr; break; } else { pNode = m_pPf->_openHeapPop(); } } return false; } int HospitalFinder::makeGuess(node_t *pNode) { return 0; } bool HospitalFinder::tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) { th_map_node_flags neighbour_flags = m_pMap->getNodeUnchecked(pNeighbour->x, pNeighbour->y)->flags; pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); return false; } bool HospitalFinder::findPathToHospital(const THMap *pMap, int iStartX, int iStartY) { if(pMap == nullptr) pMap = m_pPf->m_pDefaultMap; if(pMap == nullptr || pMap->getNode(iStartX, iStartY) == nullptr || !pMap->getNodeUnchecked(iStartX, iStartY)->flags.passable) { m_pPf->m_pDestination = nullptr; return false; } m_pMap = pMap; node_t *pNode = pathingInit(pMap, iStartX, iStartY); int iWidth = pMap->getWidth(); while(true) { th_map_node_flags flags = pMap->getNodeUnchecked(pNode->x, pNode->y)->flags; if(flags.hospital) { m_pPf->m_pDestination = pNode; return true; } if (pathingNeighbours(pNode, flags, iWidth)) return true; if (m_pPf->m_openHeap.empty()) { m_pPf->m_pDestination = nullptr; break; } else { pNode = m_pPf->_openHeapPop(); } } return false; } int IdleTileFinder::makeGuess(node_t *pNode) { return 0; } bool IdleTileFinder::tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) { th_map_node_flags neighbour_flags = m_pMap->getNodeUnchecked(pNeighbour->x, pNeighbour->y)->flags; /* When finding an idle tile, do not navigate through doors */ switch(direction) { case THTD_North: if(!flags.door_north) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; case THTD_East: if(!neighbour_flags.door_west) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; case THTD_South: if(!neighbour_flags.door_north) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; case THTD_West: if(!flags.door_west) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; } /* Identify the neighbour in the open list nearest to the start */ if(pNeighbour->prev != pNeighbour && pNeighbour->open_idx != -1) { int iDX = pNeighbour->x - m_iStartX; int iDY = pNeighbour->y - m_iStartY; double fDistance = sqrt((double)(iDX * iDX + iDY * iDY)); if(m_pBestNext == nullptr || fDistance < m_fBestDistance) { m_pBestNext = pNeighbour; m_fBestDistance = fDistance; } } return false; } bool IdleTileFinder::findIdleTile(const THMap *pMap, int iStartX, int iStartY, int iN) { if(pMap == nullptr) pMap = m_pPf->m_pDefaultMap; if(pMap == nullptr) { m_pPf->m_pDestination = nullptr; return false; } m_iStartX = iStartX; m_iStartY = iStartY; m_pMap = pMap; node_t *pNode = pathingInit(pMap, iStartX, iStartY); int iWidth = pMap->getWidth(); node_t *pPossibleResult = nullptr; while(true) { pNode->open_idx = -1; th_map_node_flags flags = pMap->getNodeUnchecked(pNode->x, pNode->y)->flags; if(!flags.do_not_idle && flags.passable && flags.hospital) { if(iN == 0) { m_pPf->m_pDestination = pNode; return true; } else { pPossibleResult = pNode; --iN; } } m_pBestNext = nullptr; m_fBestDistance = 0.0; if (pathingNeighbours(pNode, flags, iWidth)) return true; if (m_pPf->m_openHeap.empty()) { m_pPf->m_pDestination = nullptr; break; } if(m_pBestNext) { // Promote the best neighbour to the front of the open list // This causes sequential iN to give neighbouring results for most iN m_pBestNext->guess = -m_pBestNext->distance; m_pPf->_openHeapPromote(m_pBestNext); } pNode = m_pPf->_openHeapPop(); } if(pPossibleResult) { m_pPf->m_pDestination = pPossibleResult; return true; } return false; } int Objectsvisitor::makeGuess(node_t *pNode) { return 0; } bool Objectsvisitor::tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) { int iObjectNumber = 0; const THMapNode *pMapNode = m_pMap->getNodeUnchecked(pNeighbour->x, pNeighbour->y); th_map_node_flags neighbour_flags = m_pMap->getNodeUnchecked(pNeighbour->x, pNeighbour->y)->flags; for(auto thob : pMapNode->objects) { if(thob == m_eTHOB) iObjectNumber++; } if(m_bAnyObjectType) iObjectNumber = 1; bool bSucces = false; for(int i = 0; i < iObjectNumber; i++) { /* call the given Lua function, passing four arguments: */ /* The x and y position of the object (Lua tile co-ords) */ /* The direction which was last travelled in to reach (x,y); */ /* 0 (north), 1 (east), 2 (south), 3 (west) */ /* The distance to the object from the search starting point */ lua_pushvalue(m_pL, m_iVisitFunction); lua_pushinteger(m_pL, pNeighbour->x + 1); lua_pushinteger(m_pL, pNeighbour->y + 1); lua_pushinteger(m_pL, direction); lua_pushinteger(m_pL, pNode->distance); lua_call(m_pL, 4, 1); if(lua_toboolean(m_pL, -1) != 0) { bSucces = true; } lua_pop(m_pL, 1); } if(bSucces) return true; if(pNode->distance < m_iMaxDistance) { switch(direction) { case THTD_North: if(!flags.door_north) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; case THTD_East: if(!neighbour_flags.door_west) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; case THTD_South: if(!neighbour_flags.door_north) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; case THTD_West: if(!flags.door_west) pathingTryNode(pNode, neighbour_flags, flags.passable, pNeighbour); break; } } return false; } bool Objectsvisitor::visitObjects(const THMap *pMap, int iStartX, int iStartY, THObjectType eTHOB, int iMaxDistance, lua_State *L, int iVisitFunction, bool anyObjectType) { if(pMap == nullptr) pMap = m_pPf->m_pDefaultMap; if(pMap == nullptr) { m_pPf->m_pDestination = nullptr; return false; } m_pL = L; m_iVisitFunction = iVisitFunction; m_iMaxDistance = iMaxDistance; m_bAnyObjectType = anyObjectType; m_eTHOB = eTHOB; m_pMap = pMap; node_t *pNode = pathingInit(pMap, iStartX, iStartY); int iWidth = pMap->getWidth(); while(true) { th_map_node_flags flags = pMap->getNodeUnchecked(pNode->x, pNode->y)->flags; if (pathingNeighbours(pNode, flags, iWidth)) return true; if (m_pPf->m_openHeap.empty()) { m_pPf->m_pDestination = nullptr; break; } else { pNode = m_pPf->_openHeapPop(); } } return false; } THPathfinder::THPathfinder() : m_oPathFinder(this), m_oHospitalFinder(this), m_oIdleTileFinder(this), m_oObjectsvisitor(this), m_openHeap() { m_pNodes = nullptr; m_ppDirtyList = nullptr; m_pDestination = nullptr; m_pDefaultMap = nullptr; m_iNodeCacheWidth = 0; m_iNodeCacheHeight = 0; m_iDirtyCount = 0; } THPathfinder::~THPathfinder() { delete[] m_pNodes; delete[] m_ppDirtyList; } void THPathfinder::setDefaultMap(const THMap *pMap) { m_pDefaultMap = pMap; } void THPathfinder::_allocNodeCache(int iWidth, int iHeight) { if(m_iNodeCacheWidth != iWidth || m_iNodeCacheHeight != iHeight) { delete[] m_pNodes; m_pNodes = new node_t[iWidth * iHeight]; node_t *pNode = m_pNodes; for(int iY = 0; iY < iHeight; ++iY) { for(int iX = 0; iX < iWidth; ++iX, ++pNode) { pNode->prev = pNode; pNode->x = iX; pNode->y = iY; // Other fields are undefined as the node is not part of a // path, and thus can be left uninitialised. } } delete[] m_ppDirtyList; m_ppDirtyList = new node_t*[iWidth * iHeight]; m_iNodeCacheWidth = iWidth; m_iNodeCacheHeight = iHeight; } else { for(int i = 0; i < m_iDirtyCount; ++i) { m_ppDirtyList[i]->prev = m_ppDirtyList[i]; // Other fields are undefined as the node is not part of a path, // and thus can keep their old values. } } m_iDirtyCount = 0; } int THPathfinder::getPathLength() const { if(m_pDestination != nullptr) return m_pDestination->distance; else return -1; } bool THPathfinder::getPathEnd(int* pX, int* pY) const { if(m_pDestination == nullptr) { if(pX) *pX = -1; if(pY) *pY = -1; return false; } if(pX) *pX = m_pDestination->x; if(pY) *pY = m_pDestination->y; return true; } void THPathfinder::pushResult(lua_State *L) const { lua_checkstack(L, 3); if(m_pDestination == nullptr) { lua_pushnil(L); lua_pushliteral(L, "no path"); return; } int iLength = m_pDestination->distance; lua_createtable(L, iLength + 1, 0); lua_createtable(L, iLength + 1, 0); for(const node_t* pNode = m_pDestination; pNode; pNode = pNode->prev) { lua_pushinteger(L, pNode->x + 1); lua_rawseti(L, -3, pNode->distance + 1); lua_pushinteger(L, pNode->y + 1); lua_rawseti(L, -2, pNode->distance + 1); } } void THPathfinder::_openHeapPush(node_t* pNode) { pNode->open_idx = m_openHeap.size(); m_openHeap.push_back(pNode); _openHeapPromote(pNode); } void THPathfinder::_openHeapPromote(node_t* pNode) { int i = pNode->open_idx; while(i > 0) { int parent = (i - 1) / 2; node_t *pParent = m_openHeap[parent]; if(pParent->value() <= pNode->value()) break; pParent->open_idx = i; m_openHeap[i] = pParent; m_openHeap[parent] = pNode; i = parent; } pNode->open_idx = i; } node_t* THPathfinder::_openHeapPop() { node_t *pResult = m_openHeap[0]; node_t *pNode = m_openHeap.back(); m_openHeap.pop_back(); if (m_openHeap.empty()) { return pResult; } m_openHeap[0] = pNode; int i = 0; int min = 0; int left = i * 2 + 1; const int value = pNode->value(); while(left < m_openHeap.size()) { min = i; const int right = (i + 1) * 2; int minvalue = value; node_t *pSwap = nullptr; node_t *pTest = m_openHeap[left]; if(pTest->value() < minvalue) min = left, minvalue = pTest->value(), pSwap = pTest; if(right < m_openHeap.size()) { pTest = m_openHeap[right]; if(pTest->value() < minvalue) min = right, pSwap = pTest; } if(min == i) break; pSwap->open_idx = i; m_openHeap[i] = pSwap; m_openHeap[min] = pNode; i = min; left = i * 2 + 1; } pNode->open_idx = min; return pResult; } void THPathfinder::persist(LuaPersistWriter *pWriter) const { if(m_pDestination == nullptr) { pWriter->writeVUInt(0); return; } pWriter->writeVUInt(getPathLength() + 1); pWriter->writeVUInt(m_iNodeCacheWidth); pWriter->writeVUInt(m_iNodeCacheHeight); for(const node_t* pNode = m_pDestination; pNode; pNode = pNode->prev) { pWriter->writeVUInt(pNode->x); pWriter->writeVUInt(pNode->y); } } void THPathfinder::depersist(LuaPersistReader *pReader) { new (this) THPathfinder; // Call constructor int iLength; if(!pReader->readVUInt(iLength)) return; if(iLength == 0) return; int iWidth, iHeight; if(!pReader->readVUInt(iWidth) || !pReader->readVUInt(iHeight)) return; _allocNodeCache(iWidth, iHeight); int iX, iY; if(!pReader->readVUInt(iX) || !pReader->readVUInt(iY)) return; node_t *pNode = m_pNodes + iY * iWidth + iX; m_pDestination = pNode; for(int i = 0; i <= iLength - 2; ++i) { if(!pReader->readVUInt(iX) || !pReader->readVUInt(iY)) return; node_t *pPrevNode = m_pNodes + iY * iWidth + iX; pNode->distance = iLength - 1 - i; pNode->prev = pPrevNode; m_ppDirtyList[m_iDirtyCount++] = pNode; pNode = pPrevNode; } pNode->distance = 0; pNode->prev = nullptr; m_ppDirtyList[m_iDirtyCount++] = pNode; } CorsixTH-0.61/CorsixTH/Src/th_pathfind.h000066400000000000000000000225701321660673500200550ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_PATHFIND_H_ #define CORSIX_TH_TH_PATHFIND_H_ #include "th_map.h" class LuaPersistReader; class LuaPersistWriter; class THPathfinder; /** Directions of movement. */ enum TravelDirections { THTD_North = 0, ///< Move to the north. THTD_East = 1, ///< Move to the east. THTD_South = 2, ///< Move to the south. THTD_West = 3, ///< Move to the west. }; /** Node in the path finder routines. */ struct node_t { //! Pointer to the previous node in the path to this cell. /*! Points to nullptr if this is the first cell in the path, or points to itself if it is not part of a path. */ const node_t* prev; //! X-position of this cell (constant) int x; //! Y-position of this cell (constant) int y; //! Current shortest distance to this cell /*! Defined as prev->distance + 1 (or 0 if prev == nullptr). Value is undefined if not part of a path. */ int distance; //! Minimum distance from this cell to the goal /*! Value is only dependant upon the cell position and the goal position, and is undefined if not part of a path. */ int guess; //! Index of this cell in the open heap /*! If the cell is not in the open heap, then this value is undefined. */ int open_idx; //! Total cost of this node. /*! @return Total cost of the node, traveled distance and guess to the destination. */ inline int value() const { return distance + guess; } }; /** Base class of the path finders. */ class BasePathing { public: BasePathing(THPathfinder *pf); virtual ~BasePathing() = default; //! Initialize the path finder. /*! @param pMap Map to search on. @param iStartX X coordinate of the start position. @param iStarty Y coordinate of the start position. @return The initial node to expand. */ node_t *pathingInit(const THMap *pMap, int iStartX, int iStarty); //! Expand the \a pNode to its neighbours. /*! @param pNode Node to expand. @param iFlags Flags of the node. @param iWidth Width of the map. @return Whether the search is done. */ bool pathingNeighbours(node_t *pNode, th_map_node_flags flags, int iWidth); void pathingTryNode(node_t *pNode, th_map_node_flags neighbour_flags, bool passable, node_t *pNeighbour); //! Guess distance to the destination for \a pNode. /*! @param pNode Node to fill. */ virtual int makeGuess(node_t *pNode) = 0; //! Try the \a pNeighbour node. /*! @param pNode Source node. @param flags Flags of the node. @param pNeighbour Neighbour of \a pNode to try. @param direction Direction of travel. @return Whether the search is done. */ virtual bool tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) = 0; protected: THPathfinder *m_pPf; ///< Path finder parent object, containing shared data. const THMap *m_pMap; ///< Map being searched. }; class PathFinder : public BasePathing { public: PathFinder(THPathfinder *pf) : BasePathing(pf) { } int makeGuess(node_t *pNode) override; bool tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) override; bool findPath(const THMap *pMap, int iStartX, int iStartY, int iEndX, int iEndY); int m_iEndX; ///< X coordinate of the destination of the path. int m_iEndY; ///< Y coordinate of the destination of the path. }; class HospitalFinder : public BasePathing { public: HospitalFinder(THPathfinder *pf) : BasePathing(pf) { } int makeGuess(node_t *pNode) override; bool tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) override; bool findPathToHospital(const THMap *pMap, int iStartX, int iStartY); }; class IdleTileFinder : public BasePathing { public: IdleTileFinder(THPathfinder *pf) : BasePathing(pf) { } int makeGuess(node_t *pNode) override; bool tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) override; bool findIdleTile(const THMap *pMap, int iStartX, int iStartY, int iN); node_t *m_pBestNext; double m_fBestDistance; int m_iStartX; ///< X coordinate of the start position. int m_iStartY; ///< Y coordinate of the start position. }; class Objectsvisitor : public BasePathing { public: Objectsvisitor(THPathfinder *pf) : BasePathing(pf) { } int makeGuess(node_t *pNode) override; bool tryNode(node_t *pNode, th_map_node_flags flags, node_t *pNeighbour, int direction) override; bool visitObjects(const THMap *pMap, int iStartX, int iStartY, THObjectType eTHOB, int iMaxDistance, lua_State *L, int iVisitFunction, bool anyObjectType); lua_State *m_pL; int m_iVisitFunction; int m_iMaxDistance; bool m_bAnyObjectType; THObjectType m_eTHOB; }; //! Finds paths through maps /*! A pathfinder is used for finding a path through a map. A single pathfinder instance is not reentrant, but separate instances are. Users of the class should call findPath() to test if there is a path between two points on a map, and then use getPathLength() and/or pushResult() to get the actual path. Internally, the A* search algorithm is used. The open set is implemented as a heap in m_openHeap, and there is no explicit closed set. For each cell of the map, a node_t structure is created (and cached between searches if the map size is constant), which holds information about said map cell in the current search. The algorithm is implemented in such a way that most path find operations do not need to allocate (or free) any memory. */ class THPathfinder { public: THPathfinder(); ~THPathfinder(); void setDefaultMap(const THMap *pMap); inline bool findPath(const THMap *pMap, int iStartX, int iStartY, int iEndX, int iEndY) { return m_oPathFinder.findPath(pMap, iStartX, iStartY, iEndX, iEndY); } inline bool findIdleTile(const THMap *pMap, int iStartX, int iStartY, int iN) { return m_oIdleTileFinder.findIdleTile(pMap, iStartX, iStartY, iN); } inline bool findPathToHospital(const THMap *pMap, int iStartX, int iStartY) { return m_oHospitalFinder.findPathToHospital(pMap, iStartX, iStartY); } inline bool visitObjects(const THMap *pMap, int iStartX, int iStartY, THObjectType eTHOB, int iMaxDistance, lua_State *L, int iVisitFunction, bool anyObjectType) { return m_oObjectsvisitor.visitObjects( pMap, iStartX, iStartY, eTHOB, iMaxDistance, L, iVisitFunction, anyObjectType); } int getPathLength() const; bool getPathEnd(int* pX, int* pY) const; void pushResult(lua_State *L) const; void persist(LuaPersistWriter *pWriter) const; void depersist(LuaPersistReader *pReader); //! Allocate node cache for all tiles of the map. /*! @param iWidth Width of the map. @param iHeight Height of the map. */ void _allocNodeCache(int iWidth, int iHeight); node_t* _openHeapPop(); void _openHeapPush(node_t* pNode); void _openHeapPromote(node_t* pNode); const THMap *m_pDefaultMap; //! 2D array of nodes, one for each map cell node_t *m_pNodes; //! Array of "dirty" nodes which need to be reset before the next path find /*! This array is always large enough to hold every single node, and #m_iDirtyCount holds the number of items currently in the array. */ node_t **m_ppDirtyList; //! Heap of not yet evaluated nodes as a 0-based array /*! This array conforms to the conditions: value(i) <= value(i * 2 + 1) value(i) <= value(i * 2 + 2) This causes the array to be a minimum binary heap. */ std::vector m_openHeap; node_t *m_pDestination; int m_iNodeCacheWidth; int m_iNodeCacheHeight; int m_iDirtyCount; private: PathFinder m_oPathFinder; HospitalFinder m_oHospitalFinder; IdleTileFinder m_oIdleTileFinder; Objectsvisitor m_oObjectsvisitor; }; #endif // CORSIX_TH_TH_PATHFIND_H_ CorsixTH-0.61/CorsixTH/Src/th_sound.cpp000066400000000000000000000226241321660673500177430ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "th_sound.h" #include #include #include THSoundArchive::THSoundArchive() { m_pFiles = nullptr; m_pData = nullptr; } THSoundArchive::~THSoundArchive() { delete[] m_pData; } bool THSoundArchive::loadFromTHFile(const uint8_t* pData, size_t iDataLength) { if(iDataLength < sizeof(uint32_t) + sizeof(th_header_t)) return false; uint32_t iHeaderPosition = reinterpret_cast(pData + iDataLength)[-1]; if(static_cast(iHeaderPosition) >= iDataLength - sizeof(th_header_t)) return false; m_oHeader = *reinterpret_cast(pData + iHeaderPosition); delete[] m_pData; m_pData = new (std::nothrow) uint8_t[iDataLength]; if(m_pData == nullptr) return false; std::memcpy(m_pData, pData, iDataLength); m_pFiles = reinterpret_cast(m_pData + m_oHeader.table_position); m_iFileCount = m_oHeader.table_length / sizeof(th_fileinfo_t); return true; } size_t THSoundArchive::getSoundCount() const { return m_iFileCount; } const char* THSoundArchive::getSoundFilename(size_t iIndex) const { if(iIndex >= m_iFileCount) return nullptr; return m_pFiles[iIndex].filename; } #define FOURCC(c1, c2, c3, c4) \ ( static_cast(static_cast(c1) << 0) \ | static_cast(static_cast(c2) << 8) \ | static_cast(static_cast(c3) << 16) \ | static_cast(static_cast(c4) << 24) ) size_t THSoundArchive::getSoundDuration(size_t iIndex) { SDL_RWops *pFile = loadSound(iIndex); if(!pFile) return 0; uint16_t iWaveAudioFormat = 0; uint16_t iWaveChannelCount = 0; uint32_t iWaveSampleRate = 0; uint32_t iWaveByteRate = 0; uint16_t iWaveBlockAlign = 0; uint16_t iWaveBitsPerSample = 0; uint32_t iWaveDataLength = 0; // This is a very crude RIFF parser, but it does the job. uint32_t iFourCC; uint32_t iChunkLength; for(;;) { if(SDL_RWread(pFile, &iFourCC, 4, 1) != 1) break; if(SDL_RWread(pFile, &iChunkLength, 4, 1) != 1) break; if(iFourCC == FOURCC('R','I','F','F') || iFourCC == FOURCC('L','I','S','T')) { if(iChunkLength >= 4) { if(SDL_RWread(pFile, &iFourCC, 4, 1) != 1) break; else continue; } } if(iFourCC == FOURCC('f','m','t',' ') && iChunkLength >= 16) { if(SDL_RWread(pFile, &iWaveAudioFormat, 2, 1) != 1) break; if(SDL_RWread(pFile, &iWaveChannelCount, 2, 1) != 1) break; if(SDL_RWread(pFile, &iWaveSampleRate, 4, 1) != 1) break; if(SDL_RWread(pFile, &iWaveByteRate, 4, 1) != 1) break; if(SDL_RWread(pFile, &iWaveBlockAlign, 2, 1) != 1) break; if(SDL_RWread(pFile, &iWaveBitsPerSample, 2, 1) != 1) break; iChunkLength -= 16; } //Finally: if(iFourCC == FOURCC('d','a','t','a')) { iWaveDataLength = iChunkLength; break; } if(SDL_RWseek(pFile, iChunkLength + (iChunkLength & 1), RW_SEEK_CUR) == -1) { break; } } SDL_RWclose(pFile); if(iWaveAudioFormat != 1 || iWaveChannelCount == 0 || iWaveSampleRate == 0 || iWaveDataLength == 0 || iWaveBitsPerSample == 0) { return 0; } #define mul64(a, b) (static_cast(a) * static_cast(b)) return static_cast(mul64(iWaveDataLength, 8000) / mul64(mul64(iWaveBitsPerSample, iWaveChannelCount), iWaveSampleRate)); #undef mul64 } #undef FOURCC SDL_RWops* THSoundArchive::loadSound(size_t iIndex) { if(iIndex >= m_iFileCount) return nullptr; th_fileinfo_t *pFile = m_pFiles + iIndex; return SDL_RWFromConstMem(m_pData + pFile->position, pFile->length); } #ifdef CORSIX_TH_USE_SDL_MIXER THSoundEffects* THSoundEffects::ms_pSingleton = nullptr; THSoundEffects::THSoundEffects() { m_ppSounds = nullptr; m_iSoundCount = 0; ms_pSingleton = this; m_iCameraX = 0; m_iCameraY = 0; m_fCameraRadius = 1.0; m_fMasterVolume = 1.0; m_fSoundEffectsVolume = 0.5; m_iPostionlessVolume = MIX_MAX_VOLUME; m_bSoundEffectsOn = true; #define NUM_CHANNELS 32 #if NUM_CHANNELS >= 32 m_iChannelStatus = ~0; Mix_AllocateChannels(32); #else m_iChannelStatus = (1 << NUM_CHANNELS) - 1; Mix_AllocateChannels(NUM_CHANNELS); #endif #undef NUM_CHANNELS Mix_ChannelFinished(_onChannelFinish); } THSoundEffects::~THSoundEffects() { setSoundArchive(nullptr); if(ms_pSingleton == this) ms_pSingleton = nullptr; } void THSoundEffects::_onChannelFinish(int iChannel) { THSoundEffects *pThis = getSingleton(); if(pThis == nullptr) return; pThis->releaseChannel(iChannel); } THSoundEffects* THSoundEffects::getSingleton() { return ms_pSingleton; } void THSoundEffects::setSoundArchive(THSoundArchive *pArchive) { for(size_t i = 0; i < m_iSoundCount; ++i) { Mix_FreeChunk(m_ppSounds[i]); } delete[] m_ppSounds; m_ppSounds = nullptr; m_iSoundCount = 0; if(pArchive == nullptr) return; m_ppSounds = new Mix_Chunk*[pArchive->getSoundCount()]; for(; m_iSoundCount < pArchive->getSoundCount(); ++m_iSoundCount) { m_ppSounds[m_iSoundCount] = nullptr; SDL_RWops *pRwop = pArchive->loadSound(m_iSoundCount); if(pRwop) { m_ppSounds[m_iSoundCount] = Mix_LoadWAV_RW(pRwop, 1); if(m_ppSounds[m_iSoundCount]) Mix_VolumeChunk(m_ppSounds[m_iSoundCount], MIX_MAX_VOLUME); } } } void THSoundEffects::playSound(size_t iIndex, double dVolume) { if(m_iChannelStatus == 0 || iIndex >= m_iSoundCount || !m_ppSounds[iIndex]) return; _playRaw(iIndex, (int)(m_iPostionlessVolume*dVolume)); } void THSoundEffects::playSoundAt(size_t iIndex, int iX, int iY) { if(m_bSoundEffectsOn) playSoundAt(iIndex, m_fSoundEffectsVolume, iX, iY); } void THSoundEffects::playSoundAt(size_t iIndex, double dVolume, int iX, int iY) { if(m_iChannelStatus == 0 || iIndex >= m_iSoundCount || !m_ppSounds[iIndex]) return; double fDX = (double)(iX - m_iCameraX); double fDY = (double)(iY - m_iCameraY); double fDistance = sqrt(fDX * fDX + fDY * fDY); if(fDistance > m_fCameraRadius) return; fDistance = fDistance / m_fCameraRadius; double fVolume = m_fMasterVolume * (1.0 - fDistance * 0.8) * (double)MIX_MAX_VOLUME * dVolume; _playRaw(iIndex, (int)(fVolume + 0.5)); } void THSoundEffects::setSoundEffectsVolume(double dVolume) { m_fSoundEffectsVolume = dVolume; } void THSoundEffects::setSoundEffectsOn(bool bOn) { m_bSoundEffectsOn = bOn; } int THSoundEffects::reserveChannel() { // NB: Callers ensure that m_iChannelStatus != 0 int iChannel = 0; for(; (m_iChannelStatus & (1 << iChannel)) == 0; ++iChannel) {} m_iChannelStatus &=~ (1 << iChannel); return iChannel; } void THSoundEffects::releaseChannel(int iChannel) { m_iChannelStatus |= (1 << iChannel); } void THSoundEffects::_playRaw(size_t iIndex, int iVolume) { int iChannel = reserveChannel(); Mix_Volume(iChannel, iVolume); Mix_PlayChannelTimed(iChannel, m_ppSounds[iIndex], 0, -1); } void THSoundEffects::setCamera(int iX, int iY, int iRadius) { m_iCameraX = iX; m_iCameraY = iY; m_fCameraRadius = (double)iRadius; if(m_fCameraRadius < 0.001) m_fCameraRadius = 0.001; } #else // CORSIX_TH_USE_SDL_MIXER THSoundEffects::THSoundEffects() {} THSoundEffects::~THSoundEffects() {} THSoundEffects* THSoundEffects::getSingleton() {return nullptr;} void THSoundEffects::setSoundArchive(THSoundArchive *pArchive) {} void THSoundEffects::playSound(size_t iIndex, double dVolume) {} void THSoundEffects::playSoundAt(size_t iIndex, int iX, int iY) {} void THSoundEffects::playSoundAt(size_t iIndex, double dVolume, int iX, int iY) {} int THSoundEffects::reserveChannel() { return 0; } void THSoundEffects::releaseChannel(int iChannel) {} void THSoundEffects::setCamera(int iX, int iY, int iRadius) {} void THSoundEffects::setSoundEffectsVolume(double dVolume) {} void THSoundEffects::setSoundEffectsOn(bool iOn) {} #endif // CORSIX_TH_USE_SDL_MIXER CorsixTH-0.61/CorsixTH/Src/th_sound.h000066400000000000000000000073241321660673500174100ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_TH_SOUND_H_ #define CORSIX_TH_TH_SOUND_H_ #include #ifdef CORSIX_TH_USE_SDL_MIXER #include #endif //! Utility class for accessing Theme Hospital's SOUND-0.DAT class THSoundArchive { public: THSoundArchive(); ~THSoundArchive(); bool loadFromTHFile(const uint8_t* pData, size_t iDataLength); //! Returns the number of sounds present in the archive size_t getSoundCount() const; //! Gets the name of the sound at a given index const char* getSoundFilename(size_t iIndex) const; //! Gets the duration (in miliseconds) of the sound at a given index size_t getSoundDuration(size_t iIndex); //! Opens the sound at a given index into an SDL_RWops structure /*! The caller is responsible for closing/freeing the result. */ SDL_RWops* loadSound(size_t iIndex); private: #if CORSIX_TH_USE_PACK_PRAGMAS #pragma pack(push) #pragma pack(1) #endif struct th_header_t { uint8_t unknown1[50]; uint32_t table_position; uint32_t unknown2; uint32_t table_length; uint32_t table_position2; uint8_t unknown3[112]; uint32_t table_position3; uint32_t table_length2; uint8_t unknown4[48]; } CORSIX_TH_PACKED_FLAGS; struct th_fileinfo_t { char filename[18]; uint32_t position; uint32_t unknown1; uint32_t length; uint16_t unknown2; } CORSIX_TH_PACKED_FLAGS; #if CORSIX_TH_USE_PACK_PRAGMAS #pragma pack(pop) #endif th_header_t m_oHeader; th_fileinfo_t* m_pFiles; uint8_t* m_pData; size_t m_iFileCount; }; class THSoundEffects { public: THSoundEffects(); ~THSoundEffects(); static THSoundEffects* getSingleton(); void setSoundArchive(THSoundArchive *pArchive); void playSound(size_t iIndex, double dVolume); void playSoundAt(size_t iIndex, int iX, int iY); void playSoundAt(size_t iIndex, double dVolume, int iX, int iY); void setSoundEffectsVolume(double dVolume); void setSoundEffectsOn(bool bOn); void setCamera(int iX, int iY, int iRadius); int reserveChannel(); void releaseChannel(int iChannel); private: #ifdef CORSIX_TH_USE_SDL_MIXER static THSoundEffects* ms_pSingleton; static void _onChannelFinish(int iChannel); inline void _playRaw(size_t iIndex, int iVolume); Mix_Chunk **m_ppSounds; size_t m_iSoundCount; uint32_t m_iChannelStatus; int m_iCameraX; int m_iCameraY; double m_fCameraRadius; double m_fMasterVolume; double m_fSoundEffectsVolume; int m_iPostionlessVolume; bool m_bSoundEffectsOn; #endif // CORSIX_TH_USE_SDL_MIXER }; #endif // CORSIX_TH_TH_SOUND_H_ CorsixTH-0.61/CorsixTH/Src/xmi2mid.cpp000066400000000000000000000260461321660673500174730ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #ifdef CORSIX_TH_USE_SDL_MIXER #include #include #include #include #include /*! Utility class for reading or writing to memory as if it were a file. */ class MemoryBuffer { public: MemoryBuffer() : m_pData(nullptr), m_pPointer(nullptr), m_pEnd(nullptr), m_pBufferEnd(nullptr) { } MemoryBuffer(const uint8_t* pData, size_t iLength) { m_pData = m_pPointer = (char*)pData; m_pEnd = m_pData + iLength; m_pBufferEnd = nullptr; } ~MemoryBuffer() { if(m_pBufferEnd != nullptr) delete[] m_pData; } uint8_t* takeData(size_t *pLength) { if(pLength) *pLength = m_pEnd - m_pData; uint8_t* pResult = (unsigned char*)m_pData; m_pData = m_pPointer = m_pEnd = m_pBufferEnd = nullptr; return pResult; } size_t tell() const { return m_pPointer - m_pData; } bool seek(size_t position) { if(m_pData + position > m_pEnd) { if(!_realloc(position)) return false; } m_pPointer = m_pData + position; return true; } bool skip(int distance) { if(distance < 0) { if(m_pPointer + distance < m_pData) return false; } return seek(m_pPointer - m_pData + distance); } bool scanTo(const void* pData, size_t iLength) { for(; m_pPointer + iLength <= m_pEnd; ++m_pPointer) { if(std::memcmp(m_pPointer, pData, iLength) == 0) return true; } return false; } const char* getPointer() const { return m_pPointer; } template bool read(T& value) { return read(&value, 1); } template bool read(T* values, size_t count) { if(m_pPointer + sizeof(T) * count > m_pEnd) return false; std::memcpy(values, m_pPointer, sizeof(T) * count); m_pPointer += sizeof(T) * count; return true; } unsigned int readBigEndianUInt24() { uint8_t iByte0, iByte1, iByte2; if(read(iByte0) && read(iByte1) && read(iByte2)) return (((iByte0 << 8) | iByte1) << 8) | iByte2; else return 0; } unsigned int readUIntVar() { unsigned int iValue = 0; uint8_t iByte; for(int i = 0; i < 4; ++i) { if(!read(iByte)) return false; iValue = (iValue << 7) | static_cast(iByte & 0x7F); if((iByte & 0x80) == 0) break; } return iValue; } template bool write(const T& value) { return write(&value, 1); } template bool write(const T* values, size_t count) { if(!skip(static_cast(sizeof(T) * count))) return false; std::memcpy(m_pPointer - sizeof(T) * count, values, sizeof(T) * count); return true; } bool writeBigEndianUInt16(uint16_t iValue) { return write(_byteSwap(iValue)); } bool writeBigEndianUInt32(uint32_t iValue) { return write(_byteSwap(iValue)); } bool writeUIntVar(unsigned int iValue) { int iByteCount = 1; unsigned int iBuffer = iValue & 0x7F; for(; iValue >>= 7; ++iByteCount) { iBuffer = (iBuffer << 8) | 0x80 | (iValue & 0x7F); } for(int i = 0; i < iByteCount; ++i) { uint8_t iByte = iBuffer & 0xFF; if(!write(iByte)) return false; iBuffer >>= 8; } return true; } bool isEOF() const { return m_pPointer == m_pEnd; } private: template static T _byteSwap(T value) { T swapped = 0; for(int i = 0; i < static_cast(sizeof(T)) * 8; i += 8) { swapped = static_cast(swapped | ((value >> i) & 0xFF) << (sizeof(T) * 8 - 8 - i)); } return swapped; } bool _realloc(size_t size) { if(m_pData + size <= m_pBufferEnd) { m_pEnd = m_pData + size; return true; } char *pNewData = new (std::nothrow) char[size * 2]; if(pNewData == nullptr) return false; size_t iOldLength = m_pEnd - m_pData; std::memcpy(pNewData, m_pData, size > iOldLength ? iOldLength : size); m_pPointer = m_pPointer - m_pData + pNewData; if(m_pBufferEnd != nullptr) delete[] m_pData; m_pData = pNewData; m_pEnd = pNewData + size; m_pBufferEnd = pNewData + size * 2; return true; } char *m_pData, *m_pPointer, *m_pEnd, *m_pBufferEnd; }; struct midi_token_t { int iTime; unsigned int iBufferLength; const char *pBuffer; uint8_t iType; uint8_t iData; }; static bool operator < (const midi_token_t& oLeft, const midi_token_t& oRight) { return oLeft.iTime < oRight.iTime; } struct midi_token_list_t : std::vector { midi_token_t* append(int iTime, uint8_t iType) { push_back(midi_token_t()); midi_token_t* pToken = &back(); pToken->iTime = iTime; pToken->iType = iType; return pToken; } }; uint8_t* TranscodeXmiToMid(const unsigned char* pXmiData, size_t iXmiLength, size_t* pMidLength) { MemoryBuffer bufInput(pXmiData, iXmiLength); MemoryBuffer bufOutput; if(!bufInput.scanTo("EVNT", 4) || !bufInput.skip(8)) return nullptr; midi_token_list_t lstTokens; midi_token_t* pToken; int iTokenTime = 0; int iTempo = 500000; bool bTempoSet = false; bool bEnd = false; uint8_t iTokenType, iExtendedType; while(!bufInput.isEOF() && !bEnd) { while(true) { if(!bufInput.read(iTokenType)) return nullptr; if(iTokenType & 0x80) break; else iTokenTime += static_cast(iTokenType) * 3; } pToken = lstTokens.append(iTokenTime, iTokenType); pToken->pBuffer = bufInput.getPointer() + 1; switch(iTokenType & 0xF0) { case 0xC0: case 0xD0: if(!bufInput.read(pToken->iData)) return nullptr; pToken->pBuffer = nullptr; break; case 0x80: case 0xA0: case 0xB0: case 0xE0: if(!bufInput.read(pToken->iData)) return nullptr; if(!bufInput.skip(1)) return nullptr; break; case 0x90: if(!bufInput.read(iExtendedType)) return nullptr; pToken->iData = iExtendedType; if(!bufInput.skip(1)) return nullptr; pToken = lstTokens.append(iTokenTime + bufInput.readUIntVar() * 3, iTokenType); pToken->iData = iExtendedType; pToken->pBuffer = "\0"; break; case 0xF0: iExtendedType = 0; if(iTokenType == 0xFF) { if(!bufInput.read(iExtendedType)) return nullptr; if(iExtendedType == 0x2F) bEnd = true; else if(iExtendedType == 0x51) { if(!bTempoSet) { bufInput.skip(1); iTempo = bufInput.readBigEndianUInt24() * 3; bTempoSet = true; bufInput.skip(-4); } else { lstTokens.pop_back(); if(!bufInput.skip(bufInput.readUIntVar())) return nullptr; break; } } } pToken->iData = iExtendedType; pToken->iBufferLength = bufInput.readUIntVar(); pToken->pBuffer = bufInput.getPointer(); if(!bufInput.skip(pToken->iBufferLength)) return nullptr; break; } } if(lstTokens.empty()) return nullptr; if(!bufOutput.write("MThd\0\0\0\x06\0\0\0\x01", 12)) return nullptr; if(!bufOutput.writeBigEndianUInt16(static_cast((iTempo * 3) / 25000))) return nullptr; if(!bufOutput.write("MTrk\xBA\xAD\xF0\x0D", 8)) return nullptr; std::sort(lstTokens.begin(), lstTokens.end()); iTokenTime = 0; iTokenType = 0; bEnd = false; for(midi_token_list_t::iterator itr = lstTokens.begin(), itrEnd = lstTokens.end(); itr != itrEnd && !bEnd; ++itr) { if(!bufOutput.writeUIntVar(itr->iTime - iTokenTime)) return nullptr; iTokenTime = itr->iTime; if(itr->iType >= 0xF0) { if(!bufOutput.write(iTokenType = itr->iType)) return nullptr; if(iTokenType == 0xFF) { if(!bufOutput.write(itr->iData)) return nullptr; if(itr->iData == 0x2F) bEnd = true; } if(!bufOutput.writeUIntVar(itr->iBufferLength)) return nullptr; if(!bufOutput.write(itr->pBuffer, itr->iBufferLength)) return nullptr; } else { if(itr->iType != iTokenType) { if(!bufOutput.write(iTokenType = itr->iType)) return nullptr; } if(!bufOutput.write(itr->iData)) return nullptr; if(itr->pBuffer) { if(!bufOutput.write(itr->pBuffer, 1)) return nullptr; } } } uint32_t iLength = static_cast(bufOutput.tell() - 22); bufOutput.seek(18); bufOutput.writeBigEndianUInt32(iLength); return bufOutput.takeData(pMidLength); } #endif CorsixTH-0.61/CorsixTH/Src/xmi2mid.h000066400000000000000000000032371321660673500171350ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef CORSIX_TH_XMI2MID_H_ #define CORSIX_TH_XMI2MID_H_ #include "config.h" #ifdef CORSIX_TH_USE_SDL_MIXER uint8_t* TranscodeXmiToMid(const unsigned char* pXmiData, size_t iXmiLength, size_t* pMidLength); #else // CORSIX_TH_USE_SDL_MIXER inline uint8_t* TranscodeXmiToMid(const unsigned char* pXmiData, size_t iXmiLength, size_t* pMidLength) { // When SDL_mixer isn't being used, there is no need to transocde XMI to // MIDI, so the function always fails. return nullptr; } #endif // CORSIX_TH_USE_SDL_MIXER #endif // CORSIX_TH_XMI2MID_H_ CorsixTH-0.61/CorsixTH/SrcUnshared/000077500000000000000000000000001321660673500171005ustar00rootroot00000000000000CorsixTH-0.61/CorsixTH/SrcUnshared/main.cpp000066400000000000000000000073361321660673500205410ustar00rootroot00000000000000/* Copyright (c) 2009 Peter "Corsix" Cawley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "config.h" #include "../Src/main.h" #include "../Src/bootstrap.h" #include #include #ifdef CORSIX_TH_USE_SDL_MIXER #include #endif // Template magic for checking type equality template struct types_equal{ enum{ result = -1, }; }; template struct types_equal{ enum{ result = 1, }; }; static void cleanup() { #ifdef CORSIX_TH_USE_SDL_MIXER while(Mix_QuerySpec(nullptr, nullptr, nullptr)) { Mix_CloseAudio(); } #endif SDL_Quit(); } //! Program entry point /*! Prepares a Lua state for, and catches errors from, CorsixTH_lua_main(). By executing in Lua mode as soon as possible, errors can be nicely caught sooner, hence this function does as little as possible and leaves the rest for CorsixTH_lua_main(). */ int main(int argc, char** argv) { struct compile_time_lua_check { // Lua 5.1, not 5.0, is required int lua_5_point_1_required[LUA_VERSION_NUM >= 501 ? 1 : -1]; // Lua numbers must be doubles so that the mantissa has at least // 32 bits (floats only have 24 bits) int number_is_double[types_equal::result]; }; bool bRun = true; while(bRun) { lua_State *L = NULL; L = luaL_newstate(); if(L == NULL) { fprintf(stderr, "Fatal error starting CorsixTH: " "Cannot open Lua state.\n"); return 0; } lua_atpanic(L, CorsixTH_lua_panic); luaL_openlibs(L); lua_settop(L, 0); lua_pushcfunction(L, CorsixTH_lua_stacktrace); lua_pushcfunction(L, CorsixTH_lua_main); // Move command line parameters onto the Lua stack lua_checkstack(L, argc); for(int i = 0; i < argc; ++i) { lua_pushstring(L, argv[i]); } if(lua_pcall(L, argc, 0, 1) != 0) { const char* err = lua_tostring(L, -1); if(err != NULL) { fprintf(stderr, "%s\n", err); } else { fprintf(stderr, "An error has occurred in CorsixTH:\n" "Uncaught non-string Lua error\n"); } lua_pushcfunction(L, Bootstrap_lua_error_report); lua_insert(L, -2); if(lua_pcall(L, 1, 0, 0) != 0) { fprintf(stderr, "%s\n", lua_tostring(L, -1)); } } lua_getfield(L, LUA_REGISTRYINDEX, "_RESTART"); bRun = lua_toboolean(L, -1) != 0; cleanup(); if(bRun) { printf("\n\nRestarting...\n\n\n"); } } return 0; } CorsixTH-0.61/CorsixTH/changelog.txt000066400000000000000000001262141321660673500173550ustar00rootroot00000000000000------------------------------------------------------------------------------- Version 0.60 - released May 2016 ------------------------------------------------------------------------------- --- Highlights from this release --- * User campaigns - It is now possible to create a series of levels that play together just like the original game. * In game map editor - A new map editor is available directly from the game menu. * Drug price impact - Patients will now react to the price you set for treatments. If treatments cost too much patients will opt to go home instead and this can affect your reputation. * Variable spawn rate - The spawn rate will now take into account your hospital's reputation (after a date set in the level file.) * Machine smoke is now visible when machines are close to worn out. * Right clicking the timer is now supported like in the original game for moving to affected patients - See issue #882 for details. * Numpad support - The number pad can now be used to move around the map when numlock is off, or to type numbers when numlock is on, without side effects. * The MP3 folder can now be unset from within the game. Previously after setting an mp3 folder it could only be removed by editing the config file by hand. * Uses the proper cursor for resizing rooms. * Bins can now be placed in the hallways. * Temperature impact has been tweaked. The initial grace period has been removed and the overall impact has been softened. * Custom maps can now be stored in a user directory separate from levels shipped with the game. --- Notable bug fixes --- * Free build mode is now truly free - rooms used to cost money in this mode. * In game movies will now work correctly on more hardware. * Sound effects are no longer played when sound is disabled. * VIP rewards have been tweaked to closer match expectations when the impression is mediocre. * Crash when a patient is selected while they walk off the map is fixed. * A room built next to an unowned parcel no longer loses its wall when the parcel is bought. * Beta 1 regression that caused fired staff to continue to be paid has been patched. * Beta 1 regression that caused the last cured emergency patient not to count has been patched. * King complex patients only pay for their cure once. * Patients will notice when a room they are waiting for becomes available. * Properly load saves with more than one object on a tile. * Do not get stuck in an infinite loop when no disease is available to spawn. ------------------------------------------------------------------------------- Version 0.50 - released July 2015 ------------------------------------------------------------------------------- The majority of changes in this update have been done under the hood. Most of our third-party libraries have been updated, and especially Windows users will notice that there is now only one executable after installation. No more "which one should I use if I want zoom?"! --- Gameplay --- * Fix: Crash when trying to play certain sounds from e.g. the French version. * Fix: Potential crash from Esc-press before main menu. * Fix: Patients could in some circumstances get really confused and try to exit a room without putting any clothes on. * Added: Configuration of scroll speed. * Change: Midi tracks will be played in the order they appear in MIDI.txt * Most languages have been updated. --- Movies --- * Fix: Audio stutter in certain movies. * Fix: The game could sometimes crash when a movie had finished. * Support for LibAV as an alternative to FFMpeg. --- Animation Viewer --- * Added: A vertical scroll bar to the sprite display. --- CorsixTH development --- * We have moved to newer versions of a lot of libraries, most notably SDL 1.2 -> SDL 2 and added support for Lua 5.2 and Lua 5.3. * New ready-to-use Eclipse Workspace. * Debugging Lua code using DBGp has been added. See the Wiki for more information. * The Windows Installer now uses NSIS 3.0 and only produces one executable since SDL 2 handles renderer itself. * Framework for Busted Unit Tests in Lua. * Support for custom graphics has been improved. ------------------------------------------------------------------------------- Version 0.40 - released December 2014 ------------------------------------------------------------------------------- It has been a while since our last release, but good things come to those who wait! Or... in this case it's contagious diseases. Watch out for epidemics on the later levels in the campaign! Your patients are not as good as they used to be either, so those who are not lucky enough to get vaccinated and cured might get a visit from the Grim Reaper. Also, don't forget to try out the new map St. Peter's near Cawley! Happy gaming! --- Gameplay --- * Added: Epidemics. You can either choose to pay a fine to the authorities or try to cover up the epidemic by vaccinating and curing the contagious patients. Patients going between buildings will NOT trigger the alarm to the authorities. * Added: The Grim Reaper. Previously patients have always gone to heaven when they die. No more! Sometimes they will instead fall down to the middle of the earth in a Lava Hole. * Added: People with visual diseases will no longer arrive at the beginning of the level if that has been specified in the level file. Instead they arrive once a certain amount of months have passed. * Added: If you refuse VIP visits a few times he can sometimes show up anyway. * Change: Machine usage and explosions are now based on absolute number of uses. A machine that goes down to 0 will explode. Previously they were percentage based. * Fix: The game would crash if you sacked a doctor in a room while a patient was using some equipment in that room. * Fix: Sometimes the emergency bonus was not correctly calculated. * Fix: Patients could die inside a room. They will now die outside the room unless they are just being cured. * Fix: If winning the level at end of year the annual report would hide the winning fax. * Fix: If there was no queue to a room a leaving staff member would not trigger a call for staff for the patient who had to abort their procedure in that room. * Fix: If a handyman had pending tasks when he died in an exploding room the game could crash. * Fix: A surgeon that is removed in mid-operation will now get properly replaced by a new one. * Fix: If the GP room was built too early in the tutorial the game would crash when building a GP room later on if debug mode was turned off. * Fix: Patients would try to enter an exploding room. As you can imagine, this was bad. * Fix: Psychiatrists would become shut-ins and just wander about their office forever. * Fix: Patients leaving the queue to get a drink could be left to sit on a bench forever. --- User Interface --- * Added: Tooltips for the increase and decrease buttons in the research screen. * Added: A sound that indicates if a screenshot was taken successfully. * Added: Any dialog that pops up, such as the award screen, pauses the game. * Added: 'Continue Game' in the main menu. * Fix: Sometimes the game would not pause on year end. * Fix: Staff raise description was hard to read in some languages * Fix: The current language setting is translated and consistent with the options in the list. --- Graphics --- * Fix: Instead of turning into a Bloaty Head, Baldness patients will die with gracious hair. * Fix: Patients will no longer fall through walls when dying. * Fix: Dying Hairyitis patients should not lose their head when on the floor. --- Hotkeys --- * Added: 'Z' temporarily moves the game at maximum speed. Release to go back to the previous speed. * Added: 'X' makes walls transparent until released. * Added: Use the Numpad to change game speed. * Added: Arrow key hotkeys in the staff management screen. * Added: Press and hold on '+' and '-' when buying furniture to repeat the action. * Change: Quick Save is now Shift+Alt+S, Quick Load is Shift+Alt+L. --- Languages --- * Change: "Plot" is used instead of "Parcel" to indicate where a handyman has been zoned to work in the Handyman staff dialog. Most languages have been updated since our last release, but if you find that your language has not, please help us to finish it! --- CorsixTH Development --- * Added: New flag for CMAKE: 'WITH_LUAJIT'. This way you can choose to use either LuaJIT or Lua5.1. * Added: CMake toolchain for building with MinGW. * Added: New debug menu option 'Run debug Script' that executes /Lua/debug_script.lua ------------------------------------------------------------------------------- Version 0.30 - released November 2013 ------------------------------------------------------------------------------- This release contains a whole new Level Editor, which means that in combination with the already existing Map Editor whole levels can now be created a lot easier. Give it a try! We have also added many new options previously only available by manually editing the config file to the options dialog. Players will also notice that we have added an automatic update check on game launch once we release the version after this one. As usual there are of course also numerous minor tweaks here and there. --- Gameplay --- * Change: You can now build more than one desk in the ward. More nurses means a slightly faster throughput. * Change: Patients would previously queue outside toilets even though there were free loos since it was dependent on number of people in the room. Now, as soon as a loo becomes free another patient enters the room to use it, even if there is a long queue for the sink). If there is a queue for the sinks there is a chance the patient will leave without washing their hands - but will not be happy about doing this. * Added: The ability to control alien behaviour - sitting, knocking doors, only to be available through emergency or arrive like all other patients. * Added: Winning fax opens automatically and pauses the game. * Added: Option to automatically accept wage increase requests when they "time out". * Added: A new option allows for your average build content for each type of room to be remembered, so will be added for each new room built later. * Fix: Doctors should get stuck less often, and handymen should not crash the game as frequently. * Fix: It was not possible to replace a surgeon when a patient was in the room. * Fix: Patients would sometimes get stuck inside a room when they should have died. --- User Interface --- * Added: A new customization menu in the Options dialog. Most options from the configuration file are now available for change in-game. * Added: A new directory menu in the Options dialog. * Added: The game does now check for a more recent version of itself when launching. * Added: A helpful message when the player puts more Researchers in the research department than there are desks. * Added: The game now does a small integrity check on the Theme Hospital files to make sure that the most common corruptions are not present. * Added: Confirm dialog to the quit/exit button on the main menu. * Fix: The tooltip for the tutorial button was incorrect since the dialog has been visually changed. * Fix: The announcer has had a few corrections made to his manuscripts. He is very happy about this! * Removed: The settings menu is no longer available from within the game. --- Hotkeys --- Some hotkeys have been changed and/or added: * Alt + A = Toggle Announcements * Alt + M = Toggle Music * Alt + S = Toggle Sound Effects * Shift and + to zoom in five steps and Shift and - to zoom out five steps at a time. --- Campaign levels --- * Fix: An error in level 8 made it possible to win without meeting the reputation criterion. --- Custom levels --- * Change: For random emergencies each illness now has its own average number of patients to spawn. Previously they were all the same. * Fix: Researching improvements was not really possible on some custom levels, i.e. if the map creator had made it so there were no machines at the start. --- Demo files --- * Fix: When winning the demo level CorsixTH looked for another level to load, showing the wrong fax options and eventually crashing. --- Languages --- * Added: Korean language. * Fix: It was not possible to dump strings for a language with unicode characters in the name. --- Compiling --- * Fix: You could not compile the game with WITH_AUDIO=0 if SDL_mixer was not present at all. * Fix: WITH_AUDIO=OFF is now illegal in combination with WITH_MOVIES=ON. ------------------------------------------------------------------------------- Version 0.21 - released 2013-05-04 ------------------------------------------------------------------------------- This is mainly a bugfix release, but a few minor features are still also introduced, see the changelog below. --- Gameplay --- * Fix: Staff would sometimes not go for a break. * Fix: A few crashes related to Handymen. * Fix: An error could occur if a fax message was removed just as it was animating into view. * Fix: Patients could sometimes be told to go home multiple times, resulting in a crash. * Fix: If a queueing patient was heading for a drinks machine just as the player moved that machine the game would crash. --- User Interface --- * Added: Scrolling momentum when using the middle button. * Added: There is now a clock in the right corner of the menu bar that shows the real world time. It can be toggled between AM/PM and 24h in the configuration file. --- Hotkeys --- * Added: Hotkeys for the Jukebox (J), Save game menu (Shift + S), Load game menu (Shift + L), to restart the level (Shift + R) and finally quit the current game and take you back to the opening screen (Shift + Q). * Change: Restart is now Shift + F10 instead of only F10. * Change: Toggle adviser is now Shift + A instead of only A. * Change: Key combinations will only trigger if that exact combination is pressed. E.g. Ctrl + R will not trigger R too. * Change: Alt + F4 is now the hotkey to quit CorsixTH. * Fix: Added a configuration option to have the possibility to use Shift + C as hotkey to open the Drug casebook instead of C. This is to workaround a bug that when you press on the volume down key on your keyboard the Drug casebook would open. --- Map Editor --- * Added: Undo/Redo functionality. * Added: Street lamps and the dead looking tree. ------------------------------------------------------------------------------- Version 0.20 - released 2013-03-24 ------------------------------------------------------------------------------- In this version major new features include in-game movies, objects that occupy only the edge of a tile and the graph window. --- Main features not yet implemented --- * Epidemics. * Rats (and the rat level). * Insurance company graphs, illness graphs. * Visual effects on patients with serious radiation and jellyitis. * Some fullscreen animations such as the winning letter. * Multiplayer support. For a (nearly) complete list, visit our Programming Ideas wiki page: http://code.google.com/p/corsix-th/wiki/ProgrammingIdeas --- Known Issues --- * Emotion icons don't appear just above a humanoid's head at all times. * Main menu/in-game may glitch when using the OpenGL version. For a complete list, visit the issue tracker: http://code.google.com/p/corsix-th/issues/list --- Gameplay --- * Added: Radiators and other "edge tile" objects now occupy just one edge of the tile, inline with the original game. As a result one tile corridors can now be heated properly. An addition is that you can place many such objects on a single tile as long as they face different directions. * Added: Possibility to play movies in-game. At the moment the intro movie, advancement between levels and the win/lose movies has been added. * Added: The atom analyzer can now be built in the research department if it is available on the map. * Added: User actions are no longer allowed by default (for new games) when the game is paused. When trying this it might seem like it doesn't work correctly, but we try to mimic the original as much as possible. This for example means that a staff member being placed as you pause will disappear from the cursor. We might change this behaviour in the future though. * Added: Some background sounds, coughs, phones ringing etc. * Change: Placing a member of staff inside a room that is already occupied will now replace that person. * Fix: Earthquakes could be four times as severe as intended. Still todo: A tremor before a coming big earthquake. * Fix: Crashes in certain situations involving receptionists and reception desks. * Fix: Patients being handled at a reception desk even if no receptionist is present. * Fix: Allow patients to be sent to the research room only if the corresponding room is not yet researched (so not if it is researched but not built). * Fix: Don't cancel a place staff action just because the player happens to click on a door. * Fix: The VIP would try to sit down if there was a queue for the reception desk. The VIP will no longer ever try to sit down, and he will have priority in the queue anyway. * Fix: If a member of staff was done resting at the same time as he/she was also finished using the pool table or the video game another object in the room could get reserved indefinitely. --- User Interface --- * Added: You can now see in the bank statement which drug company a certain drug was bought from. It has no effect on gameplay though. * Added: The adviser now tells you why the research screen can't be opened before you have built a research department. * Added: The Town Map functionality has been extended inline with Theme Hospital. For example, if you right-click somewhere in your hospital the view will be moved there. * Added: Available options on open faxes now gets updated if for example a room explodes or the player builds a research department. * Added: Keyboard shortcuts F1 - F9 for the fullscreen windows. They are NOT the same as in original TH but instead correspond to the order on the bottom panel. * Added: Possibility to choose font file in the options dialog. * Added: Player name is now customizable in the new game dialog. * Removed: Keyboard shortcuts F8 and F9 for debug fax and debug patients. * Change: Don't require debug mode to be able to dump the gamelog. * Change: The shortcut for dumping strings is now Ctrl+T instead of Ctrl+Shift+D. * Change: Restructured options window to make it more consistent, less clutter-y and smaller. * Change: It is now possible to concentrate research on operating theatre diseases and redistribution of research is automatically done when a category has been completely researched. * Change: Add disease name to patients' treatment history when they are diagnosed. * Change: Buttons on the bottom panel for fullscreen windows are now toggle buttons. * Change: Reordered entries of graphs menu to correspond with order in bottom panel. * Fix: Colour selection algorithm for freetype fonts resulted in unreadable text on faxes for some languages. * Fix: When an unanswered fax became meaningless (e.g. if you built the required room), it was only removed if its message button was visible at the bottom panel (not if it was queued because of 5 buttons being there already). * Fix: Update the drug casebook if the last room of one kind explodes. * Fix: The directory browser was not always shown if the chosen Theme Hospital install directory was illegal. * Fix: Settings changed in the game will be saved immediately so that they persist to the next session regardless of how the game is shut down. * Fix: The bottom panel is no longer always on top, making fullscreen dialogs truly fullscreen on 640x480. * Fix: Don't play any announcements if there is no receptionist to do it. * Fix: The adviser would not idle again if a new message arrived as he was idling from a previous message. * Fix: While a player viewed the confirm dialog to delete a room he/she could continue to edit the room and complete it again resulting in an inconsistent game state. --- Graphics --- * Added: The graph dialog now actually displays graphs and statistics information. * Added: It is now possible to choose among three colour scales for warmth level. Look in the top menu for this choice. * Added: Print some info in the command prompt when the user wants to take a screenshot, so he can see if and why it failed. * Added: Screenshot functionality for OpenGL version. * Change: Screenshots get saved to a dedicated screenshot folder now, which can be changed in the config. * Fix: Loading a game on startup where a fullscreen window was open would open with the font messed up. * Fix: Taking a screenshot (Ctrl+S) is now possible under windows without fiddling in a lua file. --- Translations --- * Added: The beginning of Brazilian Portuguese and Hungarian. * Change: The "utf8" prefix has been obsolete for some time and has been removed from all language files. --- When using Demo files --- * Fix: The game would crash if the player tried to open the staff management dialog by clicking on a staff portrait in the staff dialog. ------------------------------------------------------------------------------- Version 0.11 - released 2012-11-17 ------------------------------------------------------------------------------- This is a bugfix release. For known issues etcetera, check out the changelog for version 0.10 below. -- Gameplay -- * Fix: Patients were not fully diagnosed according to settings in the policy screen. * Fix: The game now handles a player trying to cheat into an earthquake on levels 1-4. * Fix: It was not possible to sell equipment in rooms if you had a negative balance. * Fix: Handymen could not be placed inside rooms. * Fix: Handymen would get called to clean soot in blown up rooms. * Fix: Machines that need to be repaired will now cancel that request if they are blown up. * Fix: If a cured patient was leaving a room just as it crashed because of an earthquake the game would throw an error. * Fix: Alien DNA could under some circumstances not have the "concentrate research" button clicked without triggering a crash. * Fix: A crash occurring under some circumstances if the player picked up a staff member. -- User Interface -- * Enhancement: Since consultants are unable to learn new skills icons for not yet fully learned skills are now removed when a doctor is promoted. * Fix: Disabling background music no longer disables sound effects on Windows. * Fix: Checking if a sound exists crashed the game if there was no sound archive at all. * Fix: If the player paused the game from the top menu bar while an earthquake was active it would be impossible to scroll. -- Graphics -- * Fix: On a few levels some sliding doors would not animate correctly. * Fix: Vomiting standard males had the wrong animation. ------------------------------------------------------------------------------- Version 0.10 - released 2012-09-24 ------------------------------------------------------------------------------- -- How versions work -- If you have been wondering how the new version system works: When major new features are added the second digit is increased. When there are only fixes or smaller new features the third digit is increased. In this version, for example, earthquakes have been added. -- Not Yet Implemented -- * Epidemics * Rats * Graphs * Visual effects on patients with serious radiation and jellyitis. * Fullscreen animations such as the level screen and winning letter. -- Known Issues -- * If the X-Ray Viewer is inaccessible in the Operating Theatre no image will be shown on it. * If the user exits the game via "the cross" when in windowed mode settings are not saved. * Radiators and other "edge tile" objects occupy a whole tile instead of just one edge of the tile. -- Gameplay -- * Added: Earthquakes have recently been reported! * Added: Handyman priorities have been added. They can also be told to stay and respond to calls in one building (parcel) only. * Added: Staff's happiness will change due to more environmental factors. * Change: The files containing dumped strings are now created alongside the config file instead of in the installation directory. * Fix: Handymen will now meander inside a room until the machine which needs repair is free for use. * Fix: The URL in the config file pointing to better quality music was outdated. Note that this only affects new installations. * Fix: Two identical entries were shown in the drug casebook if a new disease was discovered when it was open. * Fix: Don't crash when a saved game with the town map open is loaded. * Fix: Too large rooms could make them unusable. * Some graphical glitches have been fixed. -- User Interface -- * Added: The Map Editor and Animation Viewer have new icons. * Change: In debug mode all gamelog output is now also displayed in the command prompt. * Fix: Don't initiate a window move if it happens to be below a top menu selection. * Fix: Don't show the main menu under any circumstances when closing the options menu in-game. -- Map Editor -- * Fix: The "Save" and "Save As" buttons now do what they should do. * Fix: There were some strange log messages on opening the editor. * Added: The arrow keys can now be used to scroll the map. * Change: Removed a lot of tiles from the palette, since maps may not work as intended if they would be used. ------------------------------------------------------------------------------- Version 0.01 - released 2012-03-24 ------------------------------------------------------------------------------- -- Not Yet Implemented -- * Earthquakes * Epidemics * Handyman priorities * Rats * Graphs * Visual effects on patients with serious radiation and jellyitis. * Fullscreen animations such as the level screen and winning letter. -- Known Issues -- * If the X-Ray Viewer is inaccessible in the Operating Theatre no image will be shown on it. * If the user exits the game via "the cross" when in windowed mode settings are not saved. * Radiators and other "edge tile" objects occupy a whole tile instead of just one edge of the tile. -- Gameplay -- * Added: A host of awards given at year end. * Added: A new mode: Free Build Mode. In this mode you don't have to worry about money. All custom maps can be played in this mode. * Added: Patient animations such as yawning and checking watch when waiting. * Change: The queue size for a room can be set to 0 to prevent patients from going there. * Change: Patients now spend some more time in the ward. * Fix: Crash when removing a room that has humanoids on their way to it. * Fix: Patients sitting down, but about to get a soda got ordered to sit down again. * Fix: A crash could occur if a new room was accepted when there were multiple types of objects left to place. * Fix: Emergencies with diseases not available on a level no longer happen. * Fix: The VIP no longer makes staff be called to the rooms he visits. * Fix: With multiple reception desks new patients now find their way to the reception with the least queue size. * Fix: The wrong amount of money was returned when selling a room. * Fix: Aliens could not be cured on the last two levels. * Fix: The transparent walls setting made new rooms remove outer walls. * Fix: Sometimes patients who had left the hospital could still wait for a new room, making said room impossible to build. * Fix: A crash when the staff member left a room before the patient. * Fix: Build cost of objects were not always correct. -- User Interface -- * Added: The save and load dialogs can now sort both ascending and descending and are a little more spacy. * Added: More messages in the progress report dialog. * Added: More advice in different situations from the adviser. * Added: Adviser messages now has priorities, making more important messages appear faster. * Change: When the mouse cursor leaves the game window it will stop scrolling the in-game world. * Change: The message when a crash occurs is now a little more informative, and humanoids no longer get stuck as easily. * Fix: The staff management window is now updated when staff is hired or fired from outside the window itself. * Fix: If the desired language cannot be loaded on startup the game now reverts to English instead of crashing. * Fix: The game could not autosave if the save or load dialog was open. * The auto-scroll setting is now saved between sessions. * The adviser can now be turned off from the top menu. * The game uses a new icon. -- Map Editor -- * Fix: The game no longer crash just because the map builder has not added any access roads from the edge of the map. ------------------------------------------------------------------------------- Version Beta 8 - released 2011-09-24 ------------------------------------------------------------------------------- -- Gameplay -- * Fix: Patients should manage to use benches more often now. * Fix: Staff will never have the "waiting for patient" mood when in a training room or a staff room anymore. * Change: Which diagnosis rooms different patients go to have been changed to be more like the original game. * Change: No patients will arrive until you have both a receptionist and a reception desk. There will be no emergencies or VIP visits either until this criterion is met. * Added: People may now puke or pee on the floor. * Added: Various things such as litter and plants affect patient happiness. * Added: A doctor may now get crazy if he is waaay too tired. * Added: VIP visits. Watch out for those picky black suit visitors! * Added: The "guess cure" fax message will now properly pop up. -- User Interface -- * Change: The save and load dialogs now look a little different. Autosaves are stored in a separate folder and there can be up to 12 autosaves at the same time. One for each month. The dialogs now show when a save was made, and the list can also be sorted by this criterion. * Added: It is now possible to cycle through owned machines by right-clicking the machine name in the machine dialog. * Added: Sound, announcement and music volumes and on/off settings are now saved between sessions.s -- Graphics -- * Added: Waiting patients may sometimes check their watch or start to tap their foot. * Added: Soda machines now sell more than soda cans. This can be seen through the litter people throw on the floor after using said machines. * Added: (Animation Viewer) A new export function has been added. Note that there is currently no import equivalent, so it is mostly for people to try out and see what graphics there are in the game. In the future we hope to make it possible to import these graphics after changing them in your favourite graphics program. -- Translations -- New language: Polish ------------------------------------------------------------------------------- Version Beta 7 - released 2011-06-24 ------------------------------------------------------------------------------- -- Known Issues -- * If the X-Ray Viewer is inaccessible in the Operating Theatre the whole room will be unusable. * There are still many features which are not yet implemented including trash, earthquakes, epidemics and awards. * The graph window doesn't show any graphs. * Handyman priorities are not yet fully implemented. -- Gameplay -- * Added: Staff severance pay. * Added: Patients may die if they don't get treated in time. * Added: Doctors slowly gain skill when working. * Added: Extra objects and the number of trainees influence speed of training in the training room. * Added: Even with no research new machines will eventually become available. * Added: Some patients have started littering your hospital with soda cans! Make sure you have enough handymen to keep your hospital clean. * Added: Modern heating systems aren't as reliable as they used to be. Prepare for breakdowns now and then. * New disease: Alien DNA! Note that there are still a few glitches to fix concerning this new disease. * Change: Vending maintenance costs have increased throughout the world and as a result Sodas now cost $20, up from $15. * Change: Heating costs are calculated on a per day basis, rather than per month. * Change: Machine and drug improvements are now made evenly across all eligible objects rather than maxing one at a time. * Change: Humanoids never meander outside anymore. * Fix: Handymen no longer crash the game when trying to water an unreachable plant. * Fix: Staff resting in the staff room should keep their sofa until fully rested if there's nothing else to do. * Fix: The player can't hire new staff or pay bonuses without a positive balance. -- User Interface -- * Added: The graph window, no graphs yet though. * Added: Right click menu in the queue dialog. * Added: Confirmation dialog when about to fire a member of staff. * Fix: If there is only one person who is in an emergency, use the singular form in the sentence. * Fix: The pickup item button in the edit room dialog is now fully functional. * Fix: The pointer should no longer jump around in Linux when using SDL. -- Graphics -- * Added: The scanner uses more than one animation. * Fix: Some objects were cut in half after a relocation. -- Translations -- * Change: If the specified language is not found, try to revert to English. * Fix: Competitor names are now translatable. ------------------------------------------------------------------------------- Version Beta 6 - released 2011-03-24 ------------------------------------------------------------------------------- -- Gameplay -- * Feature: Staff speed! * Added: All parts of research have been implemented, including machine strength improvements, drug improvements and the "concentrate research" button in the drug casebook. * Added: Overdraft charges for having a negative balance. * Fix: The length of a day was about half as long as it should be. * Fix: A few occurrences of bone-idle patients have been resolved. * Fix: Juniors were not correctly labeled as Doctors after promotion. * Fix: Some crashes regarding receptionists. * Fix: Never charge less than initial cost when reputation is below 500. * Fix: Some repair animations were too short. * Fix: Don't check winning and losing conditions so often. * Fix: Taking loans can now make the player avoid losing. * Fix: Level 7 had an emergency with an unavailable disease. * Fix: Doctors on their way back to the research room or training room will no longer answer to any calls. * Fix: Don't crash if a patient in a machine is sent home. * Fix: Various tweaks to the operating theatre logic. * Fix: Don't crash if the staff window of a leaving staff member is open when he/she leaves the world. * Fix: Persistent data (salary, built rooms etc) are no longer lost after restarting a level. -- User Interface -- * Feature: The drug casebook now shows if you can treat a disease or not, and in the latter case the tooltip tells you what is missing. Actual price is shown after some time, instead of charge %. * Feature: Press and hold on value buttons will now make the value continue to increase until the button is released again. * Feature: The Theme Hospital installation path can be changed from the options menu. * Added: The adviser will help out in a few more situations. * Fix: Mouse position events such as moving staff around didn't work when scrolling using the arrow keys. * Fix: Tooltips are now updated more frequently, most evidently in the research pane. -- Translations -- * Feature: CorsixTH now supports TrueType fonts via FreeType2! * Feature: To assist translators a new diff file is now created when you choose the debug option "dump strings" (with languages other than English). It contains those strings which are either found in English but not in the given language, or found in the given language but not in English. * New languages: Traditional Chinese, Simplified Chinese, Russian. ------------------------------------------------------------------------------- Version Beta 5 - released 2010-12-24 ------------------------------------------------------------------------------- -- Gameplay -- * Feature: (Some) Cheats added. Type 24328 into the fax machine to get access to them. * Feature: Custom map "Avatar" added. * Feature: Player's "salary" (read: score) now increases over your level progress. * Feature: Level based interest rate. * Feature: Level based "starting staff" (e.g. original level 5). * Feature: "No deaths" trophy added. * Fix: Error could occur when losing a game. * Fix: Multiple handymen watering the same plant at the same time. * Fix: Some placements of opposite doors/objects were wrongly forbidden. * Fix: Error could occur when building a surgery. * Fix: Autopsy now has an appropriate impact on research. * Fix: Salaries for doctors were too high. * Fix: In some cases lose conditions were not triggered. * Fix: Research room door could disappear after autopsy. ... and various other bugs fixed. -- User Interface -- * Feature: The player is now told the reason why he lost, when he loses, instead of being left in the dark. * Fix: Wrong winning faxes shown for levels 5-11. * Fix: Weird scrolling behavior could occur after loading a game. * Fix: No tutorial when playing with demo files. * Fix: Adviser disappeared too quickly during tutorial. * Some improvements to textboxes. * Some improvements to windows. ... and various other small improvements and fixes. -- Translations -- * Fix: Error caused by some winning faxes in Norwegian. ------------------------------------------------------------------------------- Version Beta 4 - released 2010-11-12 ------------------------------------------------------------------------------- -- Gameplay -- * Feature: The Research Department and research policy dialog. * Feature: The Operating Theatre. * Feature: Not all parcels are owned by the player from the beginning, but can now be bought from the Town Map dialog. * Feature: Calculate staff wages and properties for those for hire based on the level files. * Added 7 new diseases related to the operating theatre. * Added treatment room: Operating Theatre. * Fix: The adviser no longer complains about watering of plants all the time. * Fix: Some crashes related to crashed rooms has been fixed. -- User Interface -- * Feature: Possibility to choose difficulty level when starting a new game. * Feature: Zooming (only when using DirectX or OpenGL). * Feature: The Annual Report Dialog. * Graphics: Improved the main menu background. * Fix: Solved issues with non-English keyboard layouts. -- Translations -- * New languages: Finnish and Danish * Fix: When playing the game in French it no longer crashes upon completion of a level. ------------------------------------------------------------------------------- Version Beta 3 - released 2010-06-24 ------------------------------------------------------------------------------- -- Gameplay -- * Feature: Swing doors (used by new diagnosis room ward). * Feature: Plants will now droop unless they are watered by a handyman. * Feature: Adjustable handyman priorities. * Feature: Existing rooms can now be edited and deleted. * Feature: Watch for initial opening of hospital at start of each level. * Feature: Each level has its own goals, shown at the beginning of the level and in the new status dialog. When the goals have been achieved the player may go on to the next one. * Feature: Not all implemented rooms and diseases appear anymore in each level, but only those defined by the level script. * Feature: Support for custom levels with their own maps and level scripts. * Feature: A heating system that depends on outside temperature, adjacent tiles and radiators among other things. * Added 6 new diseases * Added treatment rooms: Jelly Vat, Decontamination * Added diagnosis rooms: Blood Machine, Ward, Scanner * Fix: Staff needed in rooms is handled much better. * Fix: Objects retain their statistics when moved. * Fix: A horde of other bugs have also been fixed. -- User Interface -- * Feature: Savegames are no longer limited to 8 slots + autosave. * Feature: Fullscreen mode, screen resolution and interface language can be changed ingame. The changes are saved in the config file and preserved. * Feature: Hovering the mouse over a room will mark all patients in queue for this room. * Feature: Patients can be moved to the head/tail of queues in the corresponding dialog. They can also be placed between other patients. * New dialogs: Load Game, Save Game, Custom Level to cope with arbitrary number of savegames/levels. * New dialog: Options * New dialog: Progress Report (Status) showing status of the current level's goals. * Added all tooltips that were still missing. -- Misc -- * Translations: Italian, Spanish and French: added new strings not available in vanilla TH, Portuguese (WIP) and Dutch (WIP) * The configuration file and saved games can now, if desired, also be stored in the user's home directory or equivalent. ------------------------------------------------------------------------------- Version Beta 2 - released 2010-03-24 ------------------------------------------------------------------------------- * Feature: Save / Load functionality. * Feature: Patients and staff now have a need for heat (from radiators) in order to stay happy. Patients will also get thirsty (build drinks machines) and will need a bathroom sooner or later, and staff will ask for a salary raise when unhappy. * Feature: Machines will need repair now and then. A dialog that shows necessarry information is displayed when the machine is clicked. * Feature: Dynamic Information Bar in the bottom right corner of the UI added. It shows information about entities beneath the mouse cursor. * Feature: The training room can now be built, where doctors can increase their skill and get additional traits if a consultant is present. * Feature: When a patient cannot be cured or a room is missing a fax will arrive and ask the player what to do. * Feature: A new string system that allows us to add new (translatable) text to the game, correct mistakes in existing languages and add new languages. * Feature: A tutorial is offered to the player at the start of the game. * Feature: Tooltips are displayed when hovering over buttons for some time. * Feature: Emergencies may happen every now and then. * Feature: Hospital reputation system. * Feature: Humorous disease description faxes are now shown when a disease is first diagnosed. * Feature: Room blueprints can be resized during the build process. * New Dialogs: Hospital Policy, Drug Casebook, Bank Manager, Staff Management, Town Map (work in progress), Main Menu * Many new key shortcuts (see Hotkeys wiki page for full list). * Dialogs can now be re-positioned by dragging them to where they are wanted. * Added floating money signs to better indicate where money is coming from. * Added comments from the advisor in more situations. * 10 new diseases. * New treatment room: Hair Restorer * Additional functional diagnosis rooms: General Diagnosis, Ultrascan, X-Ray * Room queues should now re-balance themselves when new rooms are built. * Translation: Norwegian (bokmål). A lot of other small improvements. Also, a great number of bugs have been squashed. Most remaining bugs are no longer fatal, and can be continued from. ------------------------------------------------------------------------------- Version Beta 1 - released 2009-12-24 ------------------------------------------------------------------------------- Initial release CorsixTH-0.61/CorsixTH/resource.h000066400000000000000000000006621321660673500166630ustar00rootroot00000000000000//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by CorsixTH.rc // #define IDI_CORSIXTH 103 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 104 #define _APS_NEXT_COMMAND_VALUE 40002 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif CorsixTH-0.61/DoxyGen/000077500000000000000000000000001321660673500145315ustar00rootroot00000000000000CorsixTH-0.61/DoxyGen/animview.doxygen000066400000000000000000003027451321660673500177620ustar00rootroot00000000000000# Doxyfile 1.8.6 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = "Anim View" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = "TH Animation Viewer" # With the PROJECT_LOGO tag one can specify an logo or icon that is included in # the documentation. The maximum height of the logo should not exceed 55 pixels # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo # to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = animview # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a # new page for each member. If set to NO, the documentation of a member will be # part of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C # (default is Fortran), use: inc=Fortran f=C. # # Note For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by by putting a % sign in front of the word # or globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined # locally in source files will be included in the documentation. If set to NO # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO these classes will be included in the various overviews. This option has # no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # (class|struct|union) declarations. If set to NO these declarations will be # included in the documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the # todo list. This list is created by putting \todo commands in the # documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the # test list. This list is created by putting \test commands in the # documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES the list # will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. Do not use file names with spaces, bibtex cannot handle them. See # also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO doxygen will only warn about wrong or incomplete parameter # documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. # Note: If this tag is empty the current directory is searched. INPUT = ../AnimView/ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank the # following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, # *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, # *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.qsf, *.as and *.js. FILE_PATTERNS = # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER ) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES, then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see http://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = YES # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- # defined cascading style sheet that is included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefor more robust against future updates. # Doxygen will copy the style sheet file to the output directory. For an example # see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the stylesheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to NO can help when comparing the output of multiple runs. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler ( hhc.exe). If non-empty # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated ( # YES) or that it should be included in the master .chm file ( NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated ( # YES) or a normal table of contents ( NO) in the .chm file. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using prerendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /